From c8bf996adebe9bffe1091ffa62b00b709d50bcbb Mon Sep 17 00:00:00 2001 From: David A Minton Date: Sat, 4 Sep 2021 16:39:57 -0400 Subject: [PATCH] Changed how string variables are saved in NetCDF format. Strings are no longer trimmed --- src/netcdf/netcdf.f90 | 54 ++++++++++++++++++------------------------- 1 file changed, 22 insertions(+), 32 deletions(-) diff --git a/src/netcdf/netcdf.f90 b/src/netcdf/netcdf.f90 index 64b30a44a..96101eb70 100644 --- a/src/netcdf/netcdf.f90 +++ b/src/netcdf/netcdf.f90 @@ -249,7 +249,7 @@ module subroutine netcdf_write_frame_base(self, iu, param) class(netcdf_parameters), intent(inout) :: iu !! Parameters used to identify a particular NetCDF dataset class(swiftest_parameters), intent(in) :: param !! Current run configuration parameters ! Internals - integer(I4B) :: i, j, tslot, strlen, idslot + integer(I4B) :: i, j, tslot, NAMELEN, idslot integer(I4B), dimension(:), allocatable :: ind character(len=:), allocatable :: charstring @@ -317,13 +317,11 @@ module subroutine netcdf_write_frame_base(self, iu, param) idslot = self%id + 1 call check( nf90_put_var(iu%ncid, iu%id_varid, self%id, start=[idslot]) ) - charstring = trim(adjustl(self%info%name)) - strlen = len(charstring) - call check( nf90_put_var(iu%ncid, iu%name_varid, charstring, start=[1, idslot], count=[strlen, 1]) ) + charstring = adjustl(self%info%name) + call check( nf90_put_var(iu%ncid, iu%name_varid, charstring, start=[1, idslot], count=[NAMELEN, 1]) ) - charstring = trim(adjustl(self%info%particle_type)) - strlen = len(charstring) - call check( nf90_put_var(iu%ncid, iu%ptype_varid, charstring, start=[1, idslot], count=[strlen, 1]) ) + charstring = adjustl(self%info%particle_type) + call check( nf90_put_var(iu%ncid, iu%ptype_varid, charstring, start=[1, idslot], count=[NAMELEN, 1]) ) call check( nf90_put_var(iu%ncid, iu%Gmass_varid, self%Gmass, start=[idslot, tslot]) ) call check( nf90_put_var(iu%ncid, iu%radius_varid, self%radius, start=[idslot, tslot]) ) @@ -355,7 +353,7 @@ module subroutine netcdf_write_particle_info_base(self, iu) class(swiftest_base), intent(in) :: self !! Swiftest particle object class(netcdf_parameters), intent(inout) :: iu !! Parameters used to identify a particular NetCDF dataset ! Internals - integer(I4B) :: i, j, tslot, strlen, idslot + integer(I4B) :: i, j, tslot, NAMELEN, idslot integer(I4B), dimension(:), allocatable :: ind character(len=:), allocatable :: charstring @@ -370,21 +368,17 @@ module subroutine netcdf_write_particle_info_base(self, iu) j = ind(i) idslot = self%id(j) + 1 call check( nf90_put_var(iu%ncid, iu%id_varid, self%id(j), start=[idslot]) ) - charstring = trim(adjustl(self%info(j)%name)) - strlen = len(charstring) - call check( nf90_put_var(iu%ncid, iu%name_varid, charstring, start=[1, idslot], count=[strlen, 1]) ) + charstring = adjustl(self%info(j)%name) + call check( nf90_put_var(iu%ncid, iu%name_varid, charstring, start=[1, idslot], count=[NAMELEN, 1]) ) - charstring = trim(adjustl(self%info(j)%particle_type)) - strlen = len(charstring) - call check( nf90_put_var(iu%ncid, iu%ptype_varid, charstring, start=[1, idslot], count=[strlen, 1]) ) + charstring = adjustl(self%info(j)%particle_type) + call check( nf90_put_var(iu%ncid, iu%ptype_varid, charstring, start=[1, idslot], count=[NAMELEN, 1]) ) - charstring = trim(adjustl(self%info(j)%status)) - strlen = len(charstring) - call check( nf90_put_var(iu%ncid, iu%status_varid, charstring, start=[1, idslot], count=[strlen, 1]) ) + charstring = adjustl(self%info(j)%status) + call check( nf90_put_var(iu%ncid, iu%status_varid, charstring, start=[1, idslot], count=[NAMELEN, 1]) ) - charstring = trim(adjustl(self%info(j)%origin_type)) - strlen = len(charstring) - call check( nf90_put_var(iu%ncid, iu%origin_type_varid, charstring, start=[1, idslot], count=[strlen, 1]) ) + charstring = adjustl(self%info(j)%origin_type) + call check( nf90_put_var(iu%ncid, iu%origin_type_varid, charstring, start=[1, idslot], count=[NAMELEN, 1]) ) call check( nf90_put_var(iu%ncid, iu%origin_time_varid, self%info(j)%origin_time, start=[idslot]) ) call check( nf90_put_var(iu%ncid, iu%origin_xhx_varid, self%info(j)%origin_xh(1), start=[idslot]) ) @@ -408,21 +402,17 @@ module subroutine netcdf_write_particle_info_base(self, iu) idslot = self%id + 1 call check( nf90_put_var(iu%ncid, iu%id_varid, self%id, start=[idslot]) ) - charstring = trim(adjustl(self%info%name)) - strlen = len(charstring) - call check( nf90_put_var(iu%ncid, iu%name_varid, charstring, start=[1, idslot], count=[strlen, 1]) ) + charstring = adjustl(self%info%name) + call check( nf90_put_var(iu%ncid, iu%name_varid, charstring, start=[1, idslot], count=[NAMELEN, 1]) ) - charstring = trim(adjustl(self%info%particle_type)) - strlen = len(charstring) - call check( nf90_put_var(iu%ncid, iu%ptype_varid, charstring, start=[1, idslot], count=[strlen, 1]) ) + charstring = adjustl(self%info%particle_type) + call check( nf90_put_var(iu%ncid, iu%ptype_varid, charstring, start=[1, idslot], count=[NAMELEN, 1]) ) - charstring = trim(adjustl(self%info%status)) - strlen = len(charstring) - call check( nf90_put_var(iu%ncid, iu%status_varid, charstring, start=[1, idslot], count=[strlen, 1]) ) + charstring = adjustl(self%info%status) + call check( nf90_put_var(iu%ncid, iu%status_varid, charstring, start=[1, idslot], count=[NAMELEN, 1]) ) - charstring = trim(adjustl(self%info%origin_type)) - strlen = len(charstring) - call check( nf90_put_var(iu%ncid, iu%origin_type_varid, charstring, start=[1, idslot], count=[strlen, 1]) ) + charstring = adjustl(self%info%origin_type) + call check( nf90_put_var(iu%ncid, iu%origin_type_varid, charstring, start=[1, idslot], count=[NAMELEN, 1]) ) call check( nf90_put_var(iu%ncid, iu%origin_time_varid, self%info%origin_time, start=[idslot]) ) call check( nf90_put_var(iu%ncid, iu%origin_xhx_varid, self%info%origin_xh(1), start=[idslot]) )