Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix NUOPC cap for GNU compilers #550

Draft
wants to merge 2 commits into
base: main
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
100 changes: 68 additions & 32 deletions trunk/NDHMS/CPL/NUOPC_cpl/WRFHydro_NUOPC_Cap.F90
Original file line number Diff line number Diff line change
Expand Up @@ -372,15 +372,15 @@ subroutine InitializeP0(gcomp, importState, exportState, clock, rc)
defaultValue="0", convention="NUOPC", purpose="Instance", rc=rc)
if (ESMF_STDERRORCHECK(rc)) return ! bail out
diagnostic = ESMF_UtilString2Int(value, &
specialStringList=(/"min","max","bit16","maxplus"/), &
specialValueList=(/0,65535,65536,131071/), rc=rc)
specialStringList=(/"max ","high","low ","off "/), &
specialValueList= (/ 65535, 65535, 65535, 0/), rc=rc)
if (ESMF_STDERRORCHECK(rc)) return ! bail out
call ESMF_AttributeGet(gcomp, name="Verbosity", value=value, &
defaultValue="0", convention="NUOPC", purpose="Instance", rc=rc)
if (ESMF_STDERRORCHECK(rc)) return ! bail out
verbosity = ESMF_UtilString2Int(value, &
specialStringList=(/"min","max","bit16","maxplus"/), &
specialValueList=(/0,65535,65536,131071/), rc=rc)
specialStringList=(/"max ","high","low ","off "/), &
specialValueList= (/ 65535, 65281, 8193, 0/), rc=rc)
if (ESMF_STDERRORCHECK(rc)) return ! bail out

! query Component for its internal State
Expand Down Expand Up @@ -454,6 +454,8 @@ subroutine WRFHydro_AttributeGet(rc)
atVal = ESMF_UtilStringUpperCase(atVal, rc=rc)
if (ESMF_STDERRORCHECK(rc)) return ! bail out
is%wrap%realizeAllImport = (trim(atVal)=="TRUE")
else
is%wrap%realizeAllImport = .false.
endif

! Realize all export fields
Expand All @@ -466,6 +468,8 @@ subroutine WRFHydro_AttributeGet(rc)
atVal = ESMF_UtilStringUpperCase(atVal, rc=rc)
if (ESMF_STDERRORCHECK(rc)) return ! bail out
is%wrap%realizeAllExport = (trim(atVal)=="TRUE")
else
is%wrap%realizeAllExport = .false.
endif

! Determine hydro configuration filename
Expand All @@ -476,6 +480,8 @@ subroutine WRFHydro_AttributeGet(rc)
call NUOPC_CompAttributeGet(gcomp, name=atName, value=atVal, rc=rc)
if (ESMF_STDERRORCHECK(rc)) return ! bail out
is%wrap%configFile = atVal
else
is%wrap%configFile = "hydro.namelist"
endif

! Determine DAS configuration filename
Expand All @@ -486,6 +492,8 @@ subroutine WRFHydro_AttributeGet(rc)
call NUOPC_CompAttributeGet(gcomp, name=atName, value=atVal, rc=rc)
if (ESMF_STDERRORCHECK(rc)) return ! bail out
is%wrap%dasConfigFile = atVal
else
is%wrap%configFile = "namelist.hrldas"
endif

! Time Step
Expand All @@ -502,6 +510,8 @@ subroutine WRFHydro_AttributeGet(rc)
line=__LINE__,file=__FILE__,rcToReturn=rc)
return ! bail out
endif
else
is%wrap%timeStepInt = 0
endif

! Forcing Directory
Expand All @@ -512,6 +522,8 @@ subroutine WRFHydro_AttributeGet(rc)
call NUOPC_CompAttributeGet(gcomp, name=atName, value=atVal, rc=rc)
if (ESMF_STDERRORCHECK(rc)) return ! bail out
is%wrap%forcingDir = trim(atVal)
else
is%wrap%forcingDir = "WRFHYDRO_FORCING"
endif

! Determine Domain ID
Expand All @@ -523,6 +535,8 @@ subroutine WRFHydro_AttributeGet(rc)
if (ESMF_STDERRORCHECK(rc)) return ! bail out
is%wrap%did = ESMF_UtilString2Int(atVal, rc=rc)
if (ESMF_STDERRORCHECK(rc)) return ! bail out
else
is%wrap%did = 1
endif

! Connect Nest to Nest
Expand All @@ -535,6 +549,8 @@ subroutine WRFHydro_AttributeGet(rc)
atVal = ESMF_UtilStringUpperCase(atVal, rc=rc)
if (ESMF_STDERRORCHECK(rc)) return ! bail out
is%wrap%nestToNest = (trim(atVal)=="TRUE")
else
is%wrap%nestToNest = .false.
endif

! import data memory type
Expand All @@ -545,6 +561,8 @@ subroutine WRFHydro_AttributeGet(rc)
call NUOPC_CompAttributeGet(gcomp, name=atName, value=atVal, rc=rc)
if (ESMF_STDERRORCHECK(rc)) return ! bail out
is%wrap%memr_import = atVal
else
is%wrap%memr_import = MEMORY_POINTER
endif

! export data memory type
Expand All @@ -555,6 +573,8 @@ subroutine WRFHydro_AttributeGet(rc)
call NUOPC_CompAttributeGet(gcomp, name=atName, value=atVal, rc=rc)
if (ESMF_STDERRORCHECK(rc)) return ! bail out
is%wrap%memr_export = atVal
else
is%wrap%memr_export = MEMORY_POINTER
endif

! import data initialization type
Expand All @@ -565,6 +585,8 @@ subroutine WRFHydro_AttributeGet(rc)
call NUOPC_CompAttributeGet(gcomp, name=atName, value=atVal, rc=rc)
if (ESMF_STDERRORCHECK(rc)) return ! bail out
is%wrap%init_import = atVal
else
is%wrap%init_import = FILLV_MODEL
endif

! backwards compatible setting (overrides initialize_import)
Expand All @@ -587,6 +609,8 @@ subroutine WRFHydro_AttributeGet(rc)
call NUOPC_CompAttributeGet(gcomp, name=atName, value=atVal, rc=rc)
if (ESMF_STDERRORCHECK(rc)) return ! bail out
is%wrap%init_export = atVal
else
is%wrap%init_export = FILLV_MODEL
endif

! backwards compatible setting (overrides initialize_export)
Expand All @@ -609,6 +633,8 @@ subroutine WRFHydro_AttributeGet(rc)
call NUOPC_CompAttributeGet(gcomp, name=atName, value=atVal, rc=rc)
if (ESMF_STDERRORCHECK(rc)) return ! bail out
is%wrap%chck_import = atVal
else
is%wrap%chck_import = CHECKCLOCK_CURRT
endif

! Get missing import handler
Expand All @@ -619,6 +645,8 @@ subroutine WRFHydro_AttributeGet(rc)
call NUOPC_CompAttributeGet(gcomp, name=atName, value=atVal, rc=rc)
if (ESMF_STDERRORCHECK(rc)) return ! bail out
is%wrap%misg_import = atVal
else
is%wrap%misg_import = MISSINGVAL_FAIL
endif

! Get reset import handler
Expand All @@ -631,6 +659,8 @@ subroutine WRFHydro_AttributeGet(rc)
atVal = ESMF_UtilStringUpperCase(atVal, rc=rc)
if (ESMF_STDERRORCHECK(rc)) return ! bail out
is%wrap%reset_import = (trim(atVal)=="TRUE")
else
is%wrap%reset_import = .false.
endif

! Get component output directory
Expand All @@ -641,6 +671,8 @@ subroutine WRFHydro_AttributeGet(rc)
call NUOPC_CompAttributeGet(gcomp, name=atName, value=atVal, rc=rc)
if (ESMF_STDERRORCHECK(rc)) return ! bail out
is%wrap%dirOutput = trim(atVal)
else
is%wrap%dirOutput = "./HYD_OUTPUT"
endif

! Get component input directory
Expand All @@ -651,6 +683,8 @@ subroutine WRFHydro_AttributeGet(rc)
call NUOPC_CompAttributeGet(gcomp, name=atName, value=atVal, rc=rc)
if (ESMF_STDERRORCHECK(rc)) return ! bail out
is%wrap%dirInput = trim(atVal)
else
is%wrap%dirInput = "./HYD_INPUT"
endif

! Write cap restart state
Expand All @@ -675,6 +709,8 @@ subroutine WRFHydro_AttributeGet(rc)
atVal = ESMF_UtilStringUpperCase(atVal, rc=rc)
if (ESMF_STDERRORCHECK(rc)) return ! bail out
is%wrap%multiInstance = (trim(atVal)=="TRUE")
else
is%wrap%multiInstance = .false.
endif

if (btest(verbosity,16)) then
Expand Down Expand Up @@ -783,15 +819,15 @@ subroutine InitializeP1(gcomp, importState, exportState, clock, rc)
defaultValue="0", convention="NUOPC", purpose="Instance", rc=rc)
if (ESMF_STDERRORCHECK(rc)) return ! bail out
diagnostic = ESMF_UtilString2Int(value, &
specialStringList=(/"min","max","bit16","maxplus"/), &
specialValueList=(/0,65535,65536,131071/), rc=rc)
specialStringList=(/"max ","high","low ","off "/), &
specialValueList= (/ 65535, 65535, 65535, 0/), rc=rc)
if (ESMF_STDERRORCHECK(rc)) return ! bail out
call ESMF_AttributeGet(gcomp, name="Verbosity", value=value, &
defaultValue="0", convention="NUOPC", purpose="Instance", rc=rc)
if (ESMF_STDERRORCHECK(rc)) return ! bail out
verbosity = ESMF_UtilString2Int(value, &
specialStringList=(/"min","max","bit16","maxplus"/), &
specialValueList=(/0,65535,65536,131071/), rc=rc)
specialStringList=(/"max ","high","low ","off "/), &
specialValueList= (/ 65535, 65281, 8193, 0/), rc=rc)
if (ESMF_STDERRORCHECK(rc)) return ! bail out

! query Component for its internal State
Expand Down Expand Up @@ -875,15 +911,15 @@ subroutine InitializeP3(gcomp, importState, exportState, clock, rc)
defaultValue="0", convention="NUOPC", purpose="Instance", rc=rc)
if (ESMF_STDERRORCHECK(rc)) return ! bail out
diagnostic = ESMF_UtilString2Int(value, &
specialStringList=(/"min","max","bit16","maxplus"/), &
specialValueList=(/0,65535,65536,131071/), rc=rc)
specialStringList=(/"max ","high","low ","off "/), &
specialValueList= (/ 65535, 65535, 65535, 0/), rc=rc)
if (ESMF_STDERRORCHECK(rc)) return ! bail out
call ESMF_AttributeGet(gcomp, name="Verbosity", value=value, &
defaultValue="0", convention="NUOPC", purpose="Instance", rc=rc)
if (ESMF_STDERRORCHECK(rc)) return ! bail out
verbosity = ESMF_UtilString2Int(value, &
specialStringList=(/"min","max","bit16","maxplus"/), &
specialValueList=(/0,65535,65536,131071/), rc=rc)
specialStringList=(/"max ","high","low ","off "/), &
specialValueList= (/ 65535, 65281, 8193, 0/), rc=rc)
if (ESMF_STDERRORCHECK(rc)) return ! bail out

! query Component for its internal State
Expand Down Expand Up @@ -985,15 +1021,15 @@ subroutine DataInitialize(gcomp, rc)
defaultValue="0", convention="NUOPC", purpose="Instance", rc=rc)
if (ESMF_STDERRORCHECK(rc)) return ! bail out
diagnostic = ESMF_UtilString2Int(value, &
specialStringList=(/"min","max","bit16","maxplus"/), &
specialValueList=(/0,65535,65536,131071/), rc=rc)
specialStringList=(/"max ","high","low ","off "/), &
specialValueList= (/ 65535, 65535, 65535, 0/), rc=rc)
if (ESMF_STDERRORCHECK(rc)) return ! bail out
call ESMF_AttributeGet(gcomp, name="Verbosity", value=value, &
defaultValue="0", convention="NUOPC", purpose="Instance", rc=rc)
if (ESMF_STDERRORCHECK(rc)) return ! bail out
verbosity = ESMF_UtilString2Int(value, &
specialStringList=(/"min","max","bit16","maxplus"/), &
specialValueList=(/0,65535,65536,131071/), rc=rc)
specialStringList=(/"max ","high","low ","off "/), &
specialValueList= (/ 65535, 65281, 8193, 0/), rc=rc)
if (ESMF_STDERRORCHECK(rc)) return ! bail out

! query Component for its internal State
Expand Down Expand Up @@ -1186,15 +1222,15 @@ subroutine SetClock(gcomp, rc)
defaultValue="0", convention="NUOPC", purpose="Instance", rc=rc)
if (ESMF_STDERRORCHECK(rc)) return ! bail out
diagnostic = ESMF_UtilString2Int(value, &
specialStringList=(/"min","max","bit16","maxplus"/), &
specialValueList=(/0,65535,65536,131071/), rc=rc)
specialStringList=(/"max ","high","low ","off "/), &
specialValueList= (/ 65535, 65535, 65535, 0/), rc=rc)
if (ESMF_STDERRORCHECK(rc)) return ! bail out
call ESMF_AttributeGet(gcomp, name="Verbosity", value=value, &
defaultValue="0", convention="NUOPC", purpose="Instance", rc=rc)
if (ESMF_STDERRORCHECK(rc)) return ! bail out
verbosity = ESMF_UtilString2Int(value, &
specialStringList=(/"min","max","bit16","maxplus"/), &
specialValueList=(/0,65535,65536,131071/), rc=rc)
specialStringList=(/"max ","high","low ","off "/), &
specialValueList= (/ 65535, 65281, 8193, 0/), rc=rc)
if (ESMF_STDERRORCHECK(rc)) return ! bail out

! query Component for its internal State
Expand Down Expand Up @@ -1305,15 +1341,15 @@ subroutine CheckImport(gcomp, rc)
defaultValue="0", convention="NUOPC", purpose="Instance", rc=rc)
if (ESMF_STDERRORCHECK(rc)) return ! bail out
diagnostic = ESMF_UtilString2Int(value, &
specialStringList=(/"min","max","bit16","maxplus"/), &
specialValueList=(/0,65535,65536,131071/), rc=rc)
specialStringList=(/"max ","high","low ","off "/), &
specialValueList= (/ 65535, 65535, 65535, 0/), rc=rc)
if (ESMF_STDERRORCHECK(rc)) return ! bail out
call ESMF_AttributeGet(gcomp, name="Verbosity", value=value, &
defaultValue="0", convention="NUOPC", purpose="Instance", rc=rc)
if (ESMF_STDERRORCHECK(rc)) return ! bail out
verbosity = ESMF_UtilString2Int(value, &
specialStringList=(/"min","max","bit16","maxplus"/), &
specialValueList=(/0,65535,65536,131071/), rc=rc)
specialStringList=(/"max ","high","low ","off "/), &
specialValueList= (/ 65535, 65281, 8193, 0/), rc=rc)
if (ESMF_STDERRORCHECK(rc)) return ! bail out

! query Component for its internal State
Expand Down Expand Up @@ -1373,15 +1409,15 @@ subroutine ModelAdvance(gcomp, rc)
defaultValue="0", convention="NUOPC", purpose="Instance", rc=rc)
if (ESMF_STDERRORCHECK(rc)) return ! bail out
diagnostic = ESMF_UtilString2Int(value, &
specialStringList=(/"min","max","bit16","maxplus"/), &
specialValueList=(/0,65535,65536,131071/), rc=rc)
specialStringList=(/"max ","high","low ","off "/), &
specialValueList= (/ 65535, 65535, 65535, 0/), rc=rc)
if (ESMF_STDERRORCHECK(rc)) return ! bail out
call ESMF_AttributeGet(gcomp, name="Verbosity", value=value, &
defaultValue="0", convention="NUOPC", purpose="Instance", rc=rc)
if (ESMF_STDERRORCHECK(rc)) return ! bail out
verbosity = ESMF_UtilString2Int(value, &
specialStringList=(/"min","max","bit16","maxplus"/), &
specialValueList=(/0,65535,65536,131071/), rc=rc)
specialStringList=(/"max ","high","low ","off "/), &
specialValueList= (/ 65535, 65281, 8193, 0/), rc=rc)
if (ESMF_STDERRORCHECK(rc)) return ! bail out

! query component for its internal State
Expand Down Expand Up @@ -1578,15 +1614,15 @@ subroutine ModelFinalize(gcomp,rc)
defaultValue="0", convention="NUOPC", purpose="Instance", rc=rc)
if (ESMF_STDERRORCHECK(rc)) return ! bail out
diagnostic = ESMF_UtilString2Int(value, &
specialStringList=(/"min","max","bit16","maxplus"/), &
specialValueList=(/0,65535,65536,131071/), rc=rc)
specialStringList=(/"max ","high","low ","off "/), &
specialValueList= (/ 65535, 65535, 65535, 0/), rc=rc)
if (ESMF_STDERRORCHECK(rc)) return ! bail out
call ESMF_AttributeGet(gcomp, name="Verbosity", value=value, &
defaultValue="0", convention="NUOPC", purpose="Instance", rc=rc)
if (ESMF_STDERRORCHECK(rc)) return ! bail out
verbosity = ESMF_UtilString2Int(value, &
specialStringList=(/"min","max","bit16","maxplus"/), &
specialValueList=(/0,65535,65536,131071/), rc=rc)
specialStringList=(/"max ","high","low ","off "/), &
specialValueList= (/ 65535, 65281, 8193, 0/), rc=rc)
if (ESMF_STDERRORCHECK(rc)) return ! bail out

! query Component for its internal State
Expand Down
20 changes: 10 additions & 10 deletions trunk/NDHMS/CPL/NUOPC_cpl/WRFHydro_NUOPC_Gluecode.F90
Original file line number Diff line number Diff line change
Expand Up @@ -147,11 +147,11 @@ subroutine wrfhydro_nuopc_ini(did,vm,clock,forcingDir,rc)
call orchestrator%init()

! Set default namelist values
read (startTimeStr(1:4),"(I)") nlst(did)%START_YEAR
read (startTimeStr(6:7),"(I)") nlst(did)%START_MONTH
read (startTimeStr(9:10),"(I)") nlst(did)%START_DAY
read (startTimeStr(12:13),"(I)") nlst(did)%START_HOUR
read (startTimeStr(15:16),"(I)") nlst(did)%START_MIN
read (startTimeStr(1:4),"(I4)") nlst(did)%START_YEAR
read (startTimeStr(6:7),"(I2)") nlst(did)%START_MONTH
read (startTimeStr(9:10),"(I2)") nlst(did)%START_DAY
read (startTimeStr(12:13),"(I2)") nlst(did)%START_HOUR
read (startTimeStr(15:16),"(I2)") nlst(did)%START_MIN
nlst(did)%startdate(1:19) = startTimeStr(1:19)
nlst(did)%olddate(1:19) = startTimeStr(1:19)
nlst(did)%dt = dt
Expand Down Expand Up @@ -293,11 +293,11 @@ subroutine wrfhydro_nuopc_ini(did,vm,clock,forcingDir,rc)
#endif

! Override the clock configuration in hyro.namelist
read (startTimeStr(1:4),"(I)") nlst(did)%START_YEAR
read (startTimeStr(6:7),"(I)") nlst(did)%START_MONTH
read (startTimeStr(9:10),"(I)") nlst(did)%START_DAY
read (startTimeStr(12:13),"(I)") nlst(did)%START_HOUR
read (startTimeStr(15:16),"(I)") nlst(did)%START_MIN
read (startTimeStr(1:4),"(I4)") nlst(did)%START_YEAR
read (startTimeStr(6:7),"(I2)") nlst(did)%START_MONTH
read (startTimeStr(9:10),"(I2)") nlst(did)%START_DAY
read (startTimeStr(12:13),"(I2)") nlst(did)%START_HOUR
read (startTimeStr(15:16),"(I2)") nlst(did)%START_MIN
nlst(did)%startdate(1:19) = startTimeStr(1:19)
nlst(did)%olddate(1:19) = startTimeStr(1:19)
nlst(did)%dt = dt
Expand Down