Skip to content

Commit cc2d877

Browse files
committed
addressed issues raised by @billsacks in PR review
1 parent 6381d84 commit cc2d877

File tree

4 files changed

+29
-21
lines changed

4 files changed

+29
-21
lines changed

dlnd/dlnd_datamode_rof_forcing_mod.F90

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ module dlnd_datamode_rof_forcing_mod
1111
use dshr_strdata_mod , only : shr_strdata_type, shr_strdata_get_stream_pointer
1212
use dshr_fldlist_mod , only : fldlist_type, dshr_fldlist_add
1313
use shr_lnd2rof_tracers_mod , only : shr_lnd2rof_tracers_readnl
14+
use shr_strconvert_mod , only : toString
1415

1516
implicit none
1617
private ! except
@@ -43,6 +44,7 @@ module dlnd_datamode_rof_forcing_mod
4344
real(r8), pointer :: strm_Flrl_irrig(:) => null()
4445

4546
integer :: ntracers_nonh2o
47+
integer, parameter :: ntracers_nonh2o_max = 99
4648

4749
character(*), parameter :: nullstr = 'null'
4850
character(*), parameter :: u_FILE_u = &
@@ -81,9 +83,10 @@ subroutine dlnd_datamode_rof_forcing_advertise(exportState, fldsExport, flds_sca
8183
call shr_lnd2rof_tracers_readnl('drv_flds_in', lnd2rof_tracers)
8284
if (lnd2rof_tracers /= ' ') then
8385
ntracers_nonh2o = shr_string_listGetNum(lnd2rof_tracers)
84-
if (ntracers_nonh2o > 99) then
86+
if (ntracers_nonh2o > ntracers_nonh2o_max) then
8587
rc = ESMF_FAILURE
86-
call shr_log_error(subName//': ERROR: number of tracers must be less than 99', rc=rc)
88+
call shr_log_error(subName//': ERROR: number of tracers must be less than '//&
89+
trim(toString(ntracers_nonh2o_max)), rc=rc)
8790
return
8891
end if
8992
else
@@ -146,12 +149,14 @@ subroutine dlnd_datamode_rof_forcing_init_pointers(exportState, sdat, model_frac
146149
call dshr_state_getfldptr(exportState, fldname='Sl_lfrin', fldptr1=lfrac, rc=rc)
147150
if (chkerr(rc,__LINE__,u_FILE_u)) return
148151
lfrac(:) = model_frac(:) ! Set fractional land pointer in export state
149-
if (ntracers_nonh2o > 1) then
150-
call dshr_state_getfldptr(exportState, fldname='Flrl_rofsur_nonh2o', fldptr2=Flrl_rofsur_nonh2o_2d, rc=rc)
151-
if (chkerr(rc,__LINE__,u_FILE_u)) return
152-
else
153-
call dshr_state_getfldptr(exportState, fldname='Flrl_rofsur_nonh2o', fldptr1=Flrl_rofsur_nonh2o_1d, rc=rc)
154-
if (chkerr(rc,__LINE__,u_FILE_u)) return
152+
if (ntracers_nonh2o > 0) then
153+
if (ntracers_nonh2o > 1) then
154+
call dshr_state_getfldptr(exportState, fldname='Flrl_rofsur_nonh2o', fldptr2=Flrl_rofsur_nonh2o_2d, rc=rc)
155+
if (chkerr(rc,__LINE__,u_FILE_u)) return
156+
else
157+
call dshr_state_getfldptr(exportState, fldname='Flrl_rofsur_nonh2o', fldptr1=Flrl_rofsur_nonh2o_1d, rc=rc)
158+
if (chkerr(rc,__LINE__,u_FILE_u)) return
159+
end if
155160
end if
156161
call dshr_state_getfldptr(exportState, fldname='Flrl_rofsur', fldptr1=Flrl_rofsur, rc=rc)
157162
if (chkerr(rc,__LINE__,u_FILE_u)) return
@@ -253,7 +258,7 @@ subroutine dlnd_datamode_rof_forcing_advance()
253258
end do
254259

255260
if (associated(strm_Flrl_irrig)) then
256-
do ni = 1,size(Flrl_rofsur)
261+
do ni = 1,size(Flrl_irrig)
257262
if (lfrac(ni) == 0._r8) then
258263
Flrl_irrig(ni) = SHR_CONST_SPVAL
259264
else

dlnd/lnd_comp_nuopc.F90

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -460,6 +460,9 @@ subroutine dlnd_comp_run(importState, exportState, target_ymd, target_tod, rc)
460460
case('rof_forcing')
461461
call dlnd_datamode_rof_forcing_init_pointers(exportState, sdat, model_frac, rc)
462462
if (ChkErr(rc,__LINE__,u_FILE_u)) return
463+
case default
464+
call shr_log_error(' ERROR illegal dlnd datamode = '//trim(datamode), rc=rc)
465+
return
463466
end select
464467

465468
first_time = .false.
@@ -481,6 +484,9 @@ subroutine dlnd_comp_run(importState, exportState, target_ymd, target_tod, rc)
481484
call dlnd_datamode_glc_forcing_advance()
482485
case('rof_forcing')
483486
call dlnd_datamode_rof_forcing_advance()
487+
case default
488+
call shr_log_error(' ERROR illegal dlnd datamode = '//trim(datamode), rc=rc)
489+
return
484490
end select
485491

486492
call ESMF_TraceRegionExit('DLND_RUN')

streams/dshr_strdata_mod.F90

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -412,7 +412,7 @@ subroutine shr_strdata_init_model_domain( sdat, rc)
412412
call ESMF_MeshGet(sdat%model_mesh, spatialDim=spatialDim, &
413413
numOwnedElements=numOwnedElements, elementdistGrid=distGrid, rc=rc)
414414
if (ChkErr(rc,__LINE__,u_FILE_u)) return
415-
allocate(ownedElemCoords(spatialDim*numOwnedElements))
415+
allocate(ownedElemCoords(spatialDim*numOwnedElements), stat=istat)
416416
if ( istat /= 0 ) then
417417
call shr_log_error(subName//&
418418
': allocation error for mesh ownedElemCoords with size '//toString(spatialDim*numOwnedElements), rc=rc)
@@ -426,13 +426,13 @@ subroutine shr_strdata_init_model_domain( sdat, rc)
426426
end if
427427
call ESMF_MeshGet(sdat%model_mesh, ownedElemCoords=ownedElemCoords)
428428
if (ChkErr(rc,__LINE__,u_FILE_u)) return
429-
allocate(sdat%model_lon(numOwnedElements))
429+
allocate(sdat%model_lon(numOwnedElements), stat=istat)
430430
if ( istat /= 0 ) then
431431
call shr_log_error(subName//&
432432
': allocation error for sdat%model_lon with size '//toString(numOwnedElements), rc=rc)
433433
return
434434
end if
435-
allocate(sdat%model_lat(numOwnedElements))
435+
allocate(sdat%model_lat(numOwnedElements), stat=istat)
436436
if ( istat /= 0 ) then
437437
call shr_log_error(subName//&
438438
': allocation error for sdat%model_lat with size '//toString(numOwnedElements), rc=rc)
@@ -1747,7 +1747,7 @@ subroutine shr_strdata_readstrm(sdat, per_stream, stream, fldbun_data, &
17471747
allocate(data_short2d(lsize, stream_nlev), stat=istat)
17481748
if ( istat /= 0 ) then
17491749
call shr_log_error(subName//'allocation error of data_short2d with size '// &
1750-
toString(lsize*stream_nlev), rc=istat)
1750+
toString(lsize*stream_nlev), rc=rc)
17511751
return
17521752
end if
17531753
endif
@@ -1757,21 +1757,21 @@ subroutine shr_strdata_readstrm(sdat, per_stream, stream, fldbun_data, &
17571757
allocate(data_real1d(lsize), stat=istat)
17581758
if ( istat /= 0 ) then
17591759
call shr_log_error(subName//'allocation error of data_real1d with size '// &
1760-
toString(lsize), rc=istat)
1760+
toString(lsize), rc=rc)
17611761
return
17621762
end if
17631763
else if (pio_iovartype == PIO_DOUBLE .and. .not. allocated(data_dbl1d)) then
17641764
allocate(data_dbl1d(lsize), stat=istat)
17651765
if ( istat /= 0 ) then
17661766
call shr_log_error(subName//'allocation error of data_dbl1d with size '// &
1767-
toString(lsize), rc=istat)
1767+
toString(lsize), rc=rc)
17681768
return
17691769
end if
17701770
else if(pio_iovartype == PIO_SHORT .and. .not. allocated(data_short1d)) then
17711771
allocate(data_short1d(lsize), stat=istat)
17721772
if ( istat /= 0 ) then
17731773
call shr_log_error(subName//'allocation error of data_short1d with size '// &
1774-
toString(lsize), rc=istat)
1774+
toString(lsize), rc=rc)
17751775
return
17761776
end if
17771777
endif
@@ -2192,9 +2192,6 @@ subroutine shr_strdata_set_stream_iodesc(sdat, per_stream, fldname, pioid, rc)
21922192
rcode = pio_inq_dimlen(pioid, dimids(n), dimlens(n))
21932193
end do
21942194

2195-
! Determine if there is a time dimension
2196-
rcode = pio_inq_dimname(pioid, dimids(ndims), dimname)
2197-
21982195
! determine compdof for stream
21992196
call ESMF_MeshGet(per_stream%stream_mesh, elementdistGrid=distGrid, rc=rc)
22002197
if (ChkErr(rc,__LINE__,u_FILE_u)) return

streams/dshr_stream_mod.F90

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -290,7 +290,7 @@ subroutine shr_stream_init_from_xml(streamfilename, streamdat, isroot_task, logu
290290
if(associated(p)) then
291291
call extractDataContent(p, streamdat(i)%yearAlign)
292292
else
293-
call shr_sys_abort(subname//" yearAlign must be provided", rc=rc)
293+
call shr_sys_abort(subname//" yearAlign must be provided")
294294
return
295295
endif
296296

@@ -760,7 +760,7 @@ subroutine shr_stream_init_from_esmfconfig(streamfilename, streamdat, logunit,
760760
' with size '//toString(streamdat(i)%nfiles), rc=rc)
761761
return
762762
end if
763-
allocate(strm_tmpstrings(streamdat(i)%nfiles), stat=istat)
763+
allocate(strm_tmpstrings(streamdat(i)%nfiles))
764764
call ESMF_ConfigGetAttribute(CF,valueList=strm_tmpstrings, label="stream_data_files"//mystrm//':', rc=rc)
765765
if (ChkErr(rc,__LINE__,u_FILE_u)) return
766766
do n=1,streamdat(i)%nfiles

0 commit comments

Comments
 (0)