From b58e384b308702409f77bd1cc524b0605c406a7d Mon Sep 17 00:00:00 2001 From: dqwu Date: Mon, 9 Sep 2019 15:49:49 -0500 Subject: [PATCH] Refixing starts/counts for pio puts The starts/counts for puts where the vars (1d/2d/3d) had no time dimensions were wrong, i.e., always had an extra start/count corresponding to the time dimension. Now we have the starts/counts for time dimension only when the var is supposed to have multiple timesteps. This fix (part of PR #2772) was accidentally reverted by PR #3012. --- components/mosart/src/riverroute/RtmIO.F90 | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/components/mosart/src/riverroute/RtmIO.F90 b/components/mosart/src/riverroute/RtmIO.F90 index af6360f543c2..cd9268ca0407 100644 --- a/components/mosart/src/riverroute/RtmIO.F90 +++ b/components/mosart/src/riverroute/RtmIO.F90 @@ -1092,6 +1092,8 @@ subroutine ncd_io_int_var1_nf(varname, data, flag, ncid, readvar, nt) elseif (flag == 'write') then + start = 0 + count = 0 if (present(nt)) then start(1) = 1 count(1) = size(data) @@ -1100,8 +1102,6 @@ subroutine ncd_io_int_var1_nf(varname, data, flag, ncid, readvar, nt) else start(1) = 1 count(1) = size(data) - start(2) = 1 - count(2) = 1 end if call ncd_inqvid (ncid, varname, varid, vardesc) status = pio_put_var(ncid, varid, start, count, data) @@ -1153,6 +1153,8 @@ subroutine ncd_io_log_var1_nf(varname, data, flag, ncid, readvar, nt) elseif (flag == 'write') then + start = 0 + count = 0 if (present(nt)) then start(1) = 1 count(1) = size(data) @@ -1161,8 +1163,6 @@ subroutine ncd_io_log_var1_nf(varname, data, flag, ncid, readvar, nt) else start(1) = 1 count(1) = size(data) - start(2) = 1 - count(2) = 1 end if call ncd_inqvid (ncid, varname, varid, vardesc) allocate( idata(size(data)) ) @@ -1214,6 +1214,8 @@ subroutine ncd_io_real_var1_nf(varname, data, flag, ncid, readvar, nt) elseif (flag == 'write') then + start = 0 + count = 0 if (present(nt)) then start(1) = 1 start(2) = nt @@ -1221,9 +1223,7 @@ subroutine ncd_io_real_var1_nf(varname, data, flag, ncid, readvar, nt) count(2) = 1 else start(1) = 1 - start(2) = 1 count(1) = size(data) - count(2) = 1 end if call ncd_inqvid (ncid, varname, varid, vardesc) status = pio_put_var(ncid, varid, start, count, data) @@ -1330,6 +1330,8 @@ subroutine ncd_io_int_var2_nf(varname, data, flag, ncid, readvar, nt) elseif (flag == 'write') then + start = 0 + count = 0 if (present(nt)) then start(1) = 1 start(2) = 1 @@ -1340,10 +1342,8 @@ subroutine ncd_io_int_var2_nf(varname, data, flag, ncid, readvar, nt) else start(1) = 1 start(2) = 1 - start(3) = 1 count(1) = size(data, dim=1) count(2) = size(data, dim=2) - count(3) = 1 end if call ncd_inqvid(ncid, varname, varid, vardesc) status = pio_put_var(ncid, varid, start, count, data) @@ -1389,6 +1389,8 @@ subroutine ncd_io_real_var2_nf(varname, data, flag, ncid, readvar, nt) elseif (flag == 'write') then + start = 0 + count = 0 if (present(nt)) then start(1) = 1 start(2) = 1 @@ -1399,10 +1401,8 @@ subroutine ncd_io_real_var2_nf(varname, data, flag, ncid, readvar, nt) else start(1) = 1 start(2) = 1 - start(3) = 1 count(1) = size(data, dim=1) count(2) = size(data, dim=2) - count(3) = 1 end if call ncd_inqvid (ncid, varname, varid, vardesc) status = pio_put_var(ncid, varid, start, count, data)