diff --git a/src/Superstructure/State/src/ESMF_State.F90 b/src/Superstructure/State/src/ESMF_State.F90 index 899acfb6f0..a1c5c159fc 100644 --- a/src/Superstructure/State/src/ESMF_State.F90 +++ b/src/Superstructure/State/src/ESMF_State.F90 @@ -63,6 +63,9 @@ module ESMF_StateMod public ESMF_StateAdd, ESMF_StateAddReplace public ESMF_StateGet public ESMF_StateIsReconcileNeeded + + public ESMF_StateLog + public ESMF_StateRemove public ESMF_StateReplace diff --git a/src/Superstructure/State/src/ESMF_StateAPI.cppF90 b/src/Superstructure/State/src/ESMF_StateAPI.cppF90 index 4839c2f30d..410d1be92a 100644 --- a/src/Superstructure/State/src/ESMF_StateAPI.cppF90 +++ b/src/Superstructure/State/src/ESMF_StateAPI.cppF90 @@ -85,6 +85,8 @@ module ESMF_StateAPIMod public ESMF_StateIsCreated public ESMF_StateIsReconcileNeeded + public ESMF_StateLog + public ESMF_StateWriteRestart public ESMF_StateReadRestart @@ -1821,6 +1823,266 @@ type(ESMF_KeywordEnforcer), optional:: keywordEnforcer ! must use keywords below end function ESMF_StateIsReconcileNeeded +! -------------------------- ESMF-public method ----------------------------- +^undef ESMF_METHOD +^define ESMF_METHOD "ESMF_StateLog()" +!BOP +! !IROUTINE: ESMF_StateLog - Log + +! !INTERFACE: + subroutine ESMF_StateLog(state, prefix, logMsgFlag, nestedFlag, deepFlag, rc) +! +! !ARGUMENTS: + type(ESMF_State), intent(in) :: state + character(len=*), intent(in), optional :: prefix + type(ESMF_LogMsg_Flag), intent(in), optional :: logMsgFlag + logical, intent(in), optional :: nestedFlag + logical, intent(in), optional :: deepFlag + integer, intent(out), optional :: rc +! +! !DESCRIPTION: +! Output information about {\tt state} to the ESMF default Log. +! +! The arguments are: +! \begin{description} +! \item[state] +! {\tt ESMF\_State} object logged. +! \item [{[prefix]}] +! String to prefix the log message. Default is no prefix. +! \item [{[logMsgFlag]}] +! Type of log message generated. See section \ref{const:logmsgflag} for +! a list of valid message types. Default is {\tt ESMF\_LOGMSG\_INFO}. +! \item[{[nestedFlag]}] +! When set to {\tt .false.} (default), only log information about the +! current State level. +! When set to {\tt .true.}, additionally log information for each nested +! State. +! \item[{[deepFlag]}] +! When set to {\tt .false.} (default), only log top level information for +! each item contained in the State. +! When set to {\tt .true.}, additionally log information for each item. +! \item[{[rc]}] +! Return code; equals {\tt ESMF\_SUCCESS} if there are no errors. +! \end{description} +! +!EOP +!------------------------------------------------------------------------------ + integer :: localrc ! local return code + type(ESMF_LogMsg_Flag) :: logMsg + character(len=:), allocatable :: prefixStr + logical :: nestedLog, deepLog + + ! initialize return code; assume routine not implemented + localrc = ESMF_RC_NOT_IMPL + if (present(rc)) rc = ESMF_RC_NOT_IMPL + + ! optional prefix + if (present(prefix)) then + prefixStr = trim(prefix) + else + prefixStr = "" + endif + + ! optional nestedFlag and deepFlag + nestedLog = .false. ! default + if (present(nestedFlag)) nestedLog = nestedFlag + deepLog = .false. ! default + if (present(deepFlag)) deepLog = deepFlag + + ! deal with optionl logMsgFlag + logMsg = ESMF_LOGMSG_INFO ! default + if (present(logMsgFlag)) logMsg = logMsgFlag + + call ESMF_LogWrite(ESMF_StringConcat(trim(prefixStr), & + "--- StateLog() start -----------------"), logMsg, rc=localrc) + if (ESMF_LogFoundError(localrc, & + ESMF_ERR_PASSTHRU, & + ESMF_CONTEXT, rcToReturn=rc)) return + + call StateLog(stateR=state, prefix=prefixStr, rc=localrc) + if (ESMF_LogFoundError(localrc, & + ESMF_ERR_PASSTHRU, & + ESMF_CONTEXT, rcToReturn=rc)) return + + call ESMF_LogWrite(ESMF_StringConcat(trim(prefixStr), & + "--- StateLog() end -------------------"), logMsg, rc=localrc) + if (ESMF_LogFoundError(localrc, & + ESMF_ERR_PASSTHRU, & + ESMF_CONTEXT, rcToReturn=rc)) return + + ! return successfully + if (present(rc)) rc = ESMF_SUCCESS + + contains + + recursive subroutine StateLog(stateR, prefix, rc) + type(ESMF_State), intent(in) :: stateR + character(len=*), intent(in) :: prefix + integer, intent(out) :: rc + ! - local variables + integer :: localrc + character(800) :: msgString + character(ESMF_MAXSTR) :: name, tempString + type(ESMF_StateIntent_Flag) :: stateIntent + integer :: itemCount, item + character(ESMF_MAXSTR), allocatable :: itemNameList(:) + type(ESMF_StateItem_Flag), allocatable :: itemTypeList(:) + type(ESMF_State) :: nestedState + type(ESMF_Field) :: field + type(ESMF_FieldBundle) :: fieldbundle + type(ESMF_Array) :: array + type(ESMF_ArrayBundle) :: arraybundle + type(ESMF_RouteHandle) :: routehandle + + localrc = ESMF_RC_NOT_IMPL + if (.not. ESMF_StateIsCreated(stateR)) then + call ESMF_LogWrite(ESMF_StringConcat(prefix, & + "State object is invalid! Not created or deleted"), & + logMsg, rc=localrc) + if (ESMF_LogFoundError(localrc, & + ESMF_ERR_PASSTHRU, & + ESMF_CONTEXT, rcToReturn=rc)) return + else + ! query + call ESMF_StateGet(stateR, name=name, stateIntent=stateIntent, & + itemCount=itemCount, rc=localrc) + if (ESMF_LogFoundError(localrc, & + ESMF_ERR_PASSTHRU, & + ESMF_CONTEXT, rcToReturn=rc)) return + ! + if (stateIntent==ESMF_STATEINTENT_IMPORT) then + tempString = "ESMF_STATEINTENT_IMPORT" + else if (stateIntent==ESMF_STATEINTENT_EXPORT) then + tempString = "ESMF_STATEINTENT_EXPORT" + else if (stateIntent==ESMF_STATEINTENT_INTERNAL) then + tempString = "ESMF_STATEINTENT_INTERNAL" + else if (stateIntent==ESMF_STATEINTENT_UNSPECIFIED) then + tempString = "ESMF_STATEINTENT_UNSPECIFIED" + else if (stateIntent==ESMF_STATEINTENT_INVALID) then + tempString = "ESMF_STATEINTENT_INVALID" + else + tempString = "Out or range STATEINTENT!!!" + endif + + write (msgString,'(A,A,A,A,A,A,A,A,I4,A)') & + prefix, "State object is valid!", & + " ", & + " " + call ESMF_LogWrite(trim(msgString), logMsg, rc=localrc) + if (ESMF_LogFoundError(localrc, & + ESMF_ERR_PASSTHRU, & + ESMF_CONTEXT, rcToReturn=rc)) return + + if (itemCount > 0) then + allocate(itemNameList(itemCount)) + allocate(itemTypeList(itemCount)) + call ESMF_StateGet(stateR, itemNameList=itemNameList, & + itemtypeList=itemtypeList, rc=localrc) + if (ESMF_LogFoundError(localrc, & + ESMF_ERR_PASSTHRU, & + ESMF_CONTEXT, rcToReturn=rc)) return + + do item=1, itemCount + ! basic item information + write (msgString,'(A,A,I4.4,A,A,A,A,A)') & + prefix, "+- " + call ESMF_LogWrite(trim(msgString), logMsg, rc=localrc) + if (ESMF_LogFoundError(localrc, & + ESMF_ERR_PASSTHRU, & + ESMF_CONTEXT, rcToReturn=rc)) return + ! deep item logging, possibly recursion + if ((itemtypeList(item) == ESMF_STATEITEM_STATE) .and. & + nestedLog) then + ! recursion into nested state + call ESMF_StateGet(stateR, itemName=itemNameList(item), & + nestedState=nestedState, rc=localrc) + if (ESMF_LogFoundError(localrc, & + ESMF_ERR_PASSTHRU, & + ESMF_CONTEXT, rcToReturn=rc)) return + call StateLog(stateR=nestedState, & + prefix=ESMF_StringConcat(prefix, "! "), rc=localrc) + if (ESMF_LogFoundError(localrc, & + ESMF_ERR_PASSTHRU, & + ESMF_CONTEXT, rcToReturn=rc)) return + else if (deepLog) then + ! deep logging of all other item types + ! TODO: activate the Log() method calls below when implemented! + if (itemtypeList(item) == ESMF_STATEITEM_FIELD) then + call ESMF_StateGet(stateR, itemName=itemNameList(item), & + field=field, rc=localrc) + if (ESMF_LogFoundError(localrc, & + ESMF_ERR_PASSTHRU, & + ESMF_CONTEXT, rcToReturn=rc)) return +! call ESMF_FieldLog(field, & +! prefix=ESMF_StringConcat(prefix, "! "), & +! logMsgFlag=logMsg, rc=localrc) + if (ESMF_LogFoundError(localrc, & + ESMF_ERR_PASSTHRU, & + ESMF_CONTEXT, rcToReturn=rc)) return + else if (itemtypeList(item) == ESMF_STATEITEM_FIELDBUNDLE) then + call ESMF_StateGet(stateR, itemName=itemNameList(item), & + fieldbundle=fieldbundle, rc=localrc) + if (ESMF_LogFoundError(localrc, & + ESMF_ERR_PASSTHRU, & + ESMF_CONTEXT, rcToReturn=rc)) return +! call ESMF_FieldBundleLog(fieldbundle, prefix=prefix//"! ", & +! logMsgFlag=logMsg, rc=localrc) + if (ESMF_LogFoundError(localrc, & + ESMF_ERR_PASSTHRU, & + ESMF_CONTEXT, rcToReturn=rc)) return + else if (itemtypeList(item) == ESMF_STATEITEM_ARRAY) then + call ESMF_StateGet(stateR, itemName=itemNameList(item), & + array=array, rc=localrc) + if (ESMF_LogFoundError(localrc, & + ESMF_ERR_PASSTHRU, & + ESMF_CONTEXT, rcToReturn=rc)) return +! call ESMF_ArrayLog(array, & +! prefix=ESMF_StringConcat(prefix, "! "), & +! logMsgFlag=logMsg, rc=localrc) + if (ESMF_LogFoundError(localrc, & + ESMF_ERR_PASSTHRU, & + ESMF_CONTEXT, rcToReturn=rc)) return + else if (itemtypeList(item) == ESMF_STATEITEM_ARRAYBUNDLE) then + call ESMF_StateGet(stateR, itemName=itemNameList(item), & + arraybundle=arraybundle, rc=localrc) + if (ESMF_LogFoundError(localrc, & + ESMF_ERR_PASSTHRU, & + ESMF_CONTEXT, rcToReturn=rc)) return +! call ESMF_ArrayBundleLog(arraybundle, & +! prefix=ESMF_StringConcat(prefix, "! "), & +! logMsgFlag=logMsg, rc=localrc) + if (ESMF_LogFoundError(localrc, & + ESMF_ERR_PASSTHRU, & + ESMF_CONTEXT, rcToReturn=rc)) return + else if (itemtypeList(item) == ESMF_STATEITEM_ROUTEHANDLE) then + call ESMF_StateGet(stateR, itemName=itemNameList(item), & + routehandle=routehandle, rc=localrc) + if (ESMF_LogFoundError(localrc, & + ESMF_ERR_PASSTHRU, & + ESMF_CONTEXT, rcToReturn=rc)) return +! call ESMF_RouteHandleLog(routehandle, & +! prefix=ESMF_StringConcat(prefix, "! "), & +! logMsgFlag=logMsg, rc=localrc) + if (ESMF_LogFoundError(localrc, & + ESMF_ERR_PASSTHRU, & + ESMF_CONTEXT, rcToReturn=rc)) return + endif + endif + enddo + + deallocate(itemNameList) + deallocate(itemTypeList) + endif + + endif + end subroutine + + end subroutine ESMF_StateLog +!------------------------------------------------------------------------------ + + !------------------------------------------------------------------------------ ^undef ESMF_METHOD ^define ESMF_METHOD "ESMF_StatePrint" diff --git a/src/Superstructure/State/src/ESMF_StateItem.F90 b/src/Superstructure/State/src/ESMF_StateItem.F90 index a3f52db6d0..fb6fedd6e4 100644 --- a/src/Superstructure/State/src/ESMF_StateItem.F90 +++ b/src/Superstructure/State/src/ESMF_StateItem.F90 @@ -275,7 +275,7 @@ module ESMF_StateItemMod ESMF_STATEITEM_NAME, & #endif ESMF_STATEITEM_NOTFOUND - public ESMF_StateItemConstruct + public ESMF_StateItemConstruct, ESMF_StateItemString public ESMF_StateIntent_Flag, ESMF_STATEINTENT_IMPORT, ESMF_STATEINTENT_EXPORT, & ESMF_STATEINTENT_INTERNAL, & ESMF_STATEINTENT_UNSPECIFIED @@ -378,6 +378,72 @@ function ESMF_StateItemConstruct (name, itemtype, keywordEnforcer, & if (present(rc)) rc = ESMF_SUCCESS end function ESMF_StateItemConstruct +!------------------------------------------------------------------------------ + + +! -------------------------- ESMF-internal method ----------------------------- +#undef ESMF_METHOD +#define ESMF_METHOD "ESMF_StateItemString()" +!BOPI +! !IROUTINE: ESMF_StateItemString - Return StateItem Flag as string + +! !INTERFACE: + function ESMF_StateItemString (itemtype, keywordEnforcer, rc) result (string) +! +! !RETURN VALUE: + character(len=:), allocatable :: string +! +! !ARGUMENTS: + type(ESMF_StateItem_Flag), intent(in) :: itemtype + type(ESMF_KeywordEnforcer), optional:: keywordEnforcer ! must use keywords below + integer, intent(out), optional :: rc +! +! !DESCRIPTION: +! String of StateItem Flag. +! \item[itemtype] +! State item type code +! \item[{[rc]}] +! Return code; equals {\tt ESMF\_SUCCESS} if there are no errors. +! \end{description} +! +!EOPI +!------------------------------------------------------------------------------ + integer :: localrc ! local return code + + ! Initialize return code; assume failure until success is certain + if (present(rc)) rc = ESMF_RC_NOT_IMPL + + select case (itemtype%ot) + case (ESMF_STATEITEM_FIELD%ot) + string = "Field" + case (ESMF_STATEITEM_FIELDBUNDLE%ot) + string = "FieldBundle" + case (ESMF_STATEITEM_ARRAY%ot) + string = "Array" + case (ESMF_STATEITEM_ARRAYBUNDLE%ot) + string = "ArrayBundle" + case (ESMF_STATEITEM_ROUTEHANDLE%ot) + string = "RouteHandle" + case (ESMF_STATEITEM_STATE%ot) + string = "State" + case (ESMF_STATEITEM_UNKNOWN%ot) + string = "Unknown" + case (ESMF_STATEITEM_NOTFOUND%ot) + string = "NotFound" + case default + string = "" + call ESMF_LogSetError(rcToCheck=ESMF_RC_INTNRL_BAD, & + msg="- unsupported StateItemType", & + ESMF_CONTEXT, rcToReturn=rc) + return ! bail out + end select + + ! Return successfully + if (present(rc)) rc = ESMF_SUCCESS + + end function ESMF_StateItemString +!------------------------------------------------------------------------------ + ! -------------------------- ESMF-internal method ----------------------------- #undef ESMF_METHOD @@ -541,7 +607,7 @@ subroutine ESMF_StateItemPrint (stateItem, header, prefixstr, & case (ESMF_STATEITEM_ARRAYBUNDLE%ot) outbuf = trim (outbuf) // " ArrayBundle" case (ESMF_STATEITEM_ROUTEHANDLE%ot) - outbuf = trim (outbuf) // " Route handle" + outbuf = trim (outbuf) // " RouteHandle" case (ESMF_STATEITEM_STATE%ot) outbuf = trim (outbuf) // " State" #if 0 diff --git a/src/Superstructure/State/src/ESMF_StateTypes.F90 b/src/Superstructure/State/src/ESMF_StateTypes.F90 index 6f573c986f..151dac5940 100644 --- a/src/Superstructure/State/src/ESMF_StateTypes.F90 +++ b/src/Superstructure/State/src/ESMF_StateTypes.F90 @@ -80,7 +80,7 @@ module ESMF_StateTypesMod #endif ESMF_STATEITEM_NOTFOUND public ESMF_StateItemWrap - public ESMF_StateItemConstruct + public ESMF_StateItemConstruct, ESMF_StateItemString public ESMF_StateIntent_Flag, ESMF_STATEINTENT_IMPORT, ESMF_STATEINTENT_EXPORT, & ESMF_STATEINTENT_INTERNAL, & ESMF_STATEINTENT_UNSPECIFIED diff --git a/src/Superstructure/State/tests/ESMF_StateCreateUTest.F90 b/src/Superstructure/State/tests/ESMF_StateCreateUTest.F90 index 10273e1c09..8ded04edd9 100644 --- a/src/Superstructure/State/tests/ESMF_StateCreateUTest.F90 +++ b/src/Superstructure/State/tests/ESMF_StateCreateUTest.F90 @@ -180,6 +180,16 @@ program ESMF_StateCreateUTest write(name, *) "Printing an empty State Test" call ESMF_Test((rc.eq.ESMF_SUCCESS), & name, failMsg, result, ESMF_SRCLINE) + + !------------------------------------------------------------------------ + !NEX_UTest + ! Test logging an Empty State + call ESMF_StateLog(state1, prefix="Log-Empty-State: ", rc=rc) + write(failMsg, *) "" + write(name, *) "Logging an empty State Test" + call ESMF_Test((rc.eq.ESMF_SUCCESS), & + name, failMsg, result, ESMF_SRCLINE) + !------------------------------------------------------------------------ !NEX_UTest ! Test getting name from an Empty State @@ -371,6 +381,14 @@ program ESMF_StateCreateUTest call ESMF_Test((rc.eq.ESMF_SUCCESS), & name, failMsg, result, ESMF_SRCLINE) !------------------------------------------------------------------------ + !EX_UTest + ! Test logging a State with 1 FieldBundle + call ESMF_StateLog(state2, prefix="Log-1FB-State: ", rc=rc) + write(failMsg, *) "" + write(name, *) "Logging a State with 1 FieldBundle Test" + call ESMF_Test((rc.eq.ESMF_SUCCESS), & + name, failMsg, result, ESMF_SRCLINE) + !------------------------------------------------------------------------ !EX_UTest ! Create a second bundle to use in the subsequent tests bname="Temperature" @@ -396,6 +414,14 @@ program ESMF_StateCreateUTest call ESMF_Test((rc.eq.ESMF_SUCCESS), & name, failMsg, result, ESMF_SRCLINE) !------------------------------------------------------------------------ + !EX_UTest + ! Test logging a State with 2 FieldBundles + call ESMF_StateLog(state2, prefix="Log-2FB-State: ", rc=rc) + write(failMsg, *) "" + write(name, *) "Logging a State with 2 FieldBundles Test" + call ESMF_Test((rc.eq.ESMF_SUCCESS), & + name, failMsg, result, ESMF_SRCLINE) + !------------------------------------------------------------------------ !EX_UTest ! Test getting a FieldBundle by name call ESMF_StateGet(state2, "Surface pressure", qbundle, rc=rc) @@ -591,6 +617,14 @@ program ESMF_StateCreateUTest call ESMF_Test((rc.eq.ESMF_SUCCESS), & name, failMsg, result, ESMF_SRCLINE) !------------------------------------------------------------------------ + !EX_UTest + ! Test logging a State with nested State + call ESMF_StateLog(state5, prefix="Log-flat-nestedState-State: ", rc=rc) + write(failMsg, *) "" + write(name, *) "Logging a State with with nested State - flat - Test" + call ESMF_Test((rc.eq.ESMF_SUCCESS), & + name, failMsg, result, ESMF_SRCLINE) + !------------------------------------------------------------------------ !EX_UTest ! Test getting a nested State object call ESMF_StateGet(state=state5, & @@ -643,6 +677,15 @@ program ESMF_StateCreateUTest call ESMF_Test((rc.eq.ESMF_SUCCESS), & name, failMsg, result, ESMF_SRCLINE) !------------------------------------------------------------------------ + !EX_UTest + ! Test logging a State with nested State + call ESMF_StateLog(state5, prefix="Log-nested-nestedState-State: ", & + nestedFlag=.true., rc=rc) + write(failMsg, *) "" + write(name, *) "Logging a State with with nested State - nested - Test" + call ESMF_Test((rc.eq.ESMF_SUCCESS), & + name, failMsg, result, ESMF_SRCLINE) + !------------------------------------------------------------------------ !EX_UTest ! Test getting a nested State object Info item count - including nested ! objects @@ -836,56 +879,3 @@ end program ESMF_StateCreateUTest !------------------------------------------------------------------------- !------------------------------------------------------------------------- - - -#if 0 -! older tests which have not yet been convereted to the normal template form. - sname = "Sea Ice Export" - state4 = ESMF_StateCreate(sname, ESMF_STATEINTENT_EXPORT, rc=rc) - - sname = "Surface pressure" - call ESMF_StateAdd(state4, sname, rc=rc) - - call ESMF_StateSetNeeded(state4, sname, ESMF_NEEDED, rc=rc) - - sname = "Energy Flux" - call ESMF_StateAdd(state4, sname, rc=rc) - - call ESMF_StateSetNeeded(state4, sname, ESMF_NEEDED, rc=rc) - - sname = "Humidity" - call ESMF_StateAdd(state4, sname, rc=rc) - - call ESMF_StateSetNeeded(state4, sname, ESMF_NEEDED, rc=rc) - - call ESMF_StatePrint(state4, rc=rc) - - bname = "Collected quantities" - bundle2 = ESMF_FieldBundleCreate(name=bname, rc=rc) - - fname = "Surface pressure" - field1 = ESMF_FieldCreateNoData(fname, rc=rc) - - call ESMF_FieldBundleAdd(bundle2, (/field1/), rc=rc) - - fname = "Energy Flux" - field2 = ESMF_FieldCreateNoData(fname, rc=rc) - - call ESMF_FieldBundleAdd(bundle2, (/field2/), rc=rc) - - call ESMF_FieldBundlePrint(bundle2, "", rc=rc) - - - call ESMF_StateAdd(state4, bundle2, rc=rc) - - call ESMF_StatePrint(state4, rc=rc) - - call ESMF_StateDestroy(state4, rc=rc) - - call ESMF_FieldBundleDestroy(bundle2, rc=rc) - - call ESMF_FieldDestroy(field1, rc=rc) - - call ESMF_FieldDestroy(field2, rc=rc) -#endif - diff --git a/src/addon/NUOPC/doc/NUOPC_ConnectorComponent_metadata.tex b/src/addon/NUOPC/doc/NUOPC_ConnectorComponent_metadata.tex index 7c771d4392..0257cb681c 100644 --- a/src/addon/NUOPC/doc/NUOPC_ConnectorComponent_metadata.tex +++ b/src/addon/NUOPC/doc/NUOPC_ConnectorComponent_metadata.tex @@ -13,6 +13,8 @@ {\bf bit 1}: Intro/Extro with memory info.\newline {\bf bit 2}: Intro/Extro with garbage collection info.\newline {\bf bit 3}: Intro/Extro with local VM info.\newline + {\bf bit 4}: Intro/Extro with ImportState info.\newline + {\bf bit 5}: Intro/Extro with ExportState info.\newline {\bf bit 8}: Log FieldTransferPolicy.\newline {\bf bit 9}: Log bond level info.\newline {\bf bit 10}: Log CplList construction.\newline @@ -23,9 +25,9 @@ {\bf bit 15}: Log info about RouteHandle release. & 0, 1, 2, ... \newline "off" = 0 (default), \newline - "low": Some verbosity. \newline - "high": More verbosity. \newline - "max": All lower 16 bits set.\\ \hline + "low": some verbosity, bits: 0, 13\newline + "high": more verbosity, bits: 0, 4, 5, 8, 9, 10, 11, 12, 13, 14, 15\newline + "max": all lower 16 bits\\ \hline {\tt Profiling} & String value, converted into an integer, and interpreted as a bit field. The lower 16 bits (0-15) are reserved to control profiling of the generic component implementation. Higher bits are available for user level profiling control. \newline {\bf bit 0}: Top level profiling of {\em Initialize} phases.\newline {\bf bit 1}: Specialization point profiling of {\em Initialize} phases.\newline diff --git a/src/addon/NUOPC/doc/NUOPC_DriverComponent_metadata.tex b/src/addon/NUOPC/doc/NUOPC_DriverComponent_metadata.tex index 622fbade89..dd1d4f8209 100644 --- a/src/addon/NUOPC/doc/NUOPC_DriverComponent_metadata.tex +++ b/src/addon/NUOPC/doc/NUOPC_DriverComponent_metadata.tex @@ -17,7 +17,9 @@ {\bf bit 1}: Intro/Extro with memory info.\newline {\bf bit 2}: Intro/Extro with garbage collection info.\newline {\bf bit 3}: Intro/Extro with local VM info.\newline - {\bf bit 4}: Log hierarchy protocol details.\newline + {\bf bit 4}: Intro/Extro with ImportState info.\newline + {\bf bit 5}: Intro/Extro with ExportState info.\newline + {\bf bit 6}: Log hierarchy protocol details.\newline {\bf bit 8}: Log Initialize phase with $>>>$, $<<<$, and currTime.\newline {\bf bit 9}: Log Run phase with $>>>$, $<<<$, and currTime.\newline {\bf bit 10}: Log Finalize phase with $>>>$, $<<<$, and currTime.\newline @@ -28,7 +30,7 @@ & 0, 1, 2, ... \newline "off" = 0 (default), \newline "low": some verbosity, bits: 0, 8, 9, 10, 13\newline - "high": more verbosity, bits: 0, 4, 8, 9, 10, 11, 12, 13, 14\newline + "high": more verbosity, bits: 0, 4, 5, 6, 8, 9, 10, 11, 12, 13, 14\newline "max": all lower 16 bits\\ \hline {\tt Profiling} & String value, converted into an integer, and interpreted as a bit field. The lower 16 bits (0-15) are reserved to control profiling of the generic component implementation. Higher bits are available for user level profiling control. \newline {\bf bit 0}: Top level profiling of {\em Initialize} phases.\newline diff --git a/src/addon/NUOPC/doc/NUOPC_MediatorComponent_metadata.tex b/src/addon/NUOPC/doc/NUOPC_MediatorComponent_metadata.tex index a1beebd414..b8fbc024b6 100644 --- a/src/addon/NUOPC/doc/NUOPC_MediatorComponent_metadata.tex +++ b/src/addon/NUOPC/doc/NUOPC_MediatorComponent_metadata.tex @@ -17,17 +17,17 @@ {\bf bit 1}: Intro/Extro with memory info.\newline {\bf bit 2}: Intro/Extro with garbage collection info.\newline {\bf bit 3}: Intro/Extro with local VM info.\newline + {\bf bit 4}: Intro/Extro with ImportState info.\newline + {\bf bit 5}: Intro/Extro with ExportState info.\newline {\bf bit 8}: Log Initialize phase with $>>>$, $<<<$, and currTime.\newline {\bf bit 9}: Log Run phase with $>>>$, $<<<$, and currTime.\newline {\bf bit 10}: Log Finalize phase with $>>>$, $<<<$, and currTime.\newline {\bf bit 11}: Log info about data dependency during initialize resolution.\newline - {\bf bit 12}: Log run sequence execution.\newline - {\bf bit 13}: Log Component creation.\newline - {\bf bit 14}: Log State creation. + {\bf bit 12}: Log run sequence execution. & 0, 1, 2, ... \newline "off" = 0 (default), \newline - "low": some verbosity, \newline - "high": more verbosity, \newline + "low": some verbosity, bits: 0, 8, 9, 10, 13\newline + "high": more verbosity, bits: 0, 4, 5, 8, 9, 10, 11, 12, 13, 14\newline "max": all lower 16 bits\\ \hline {\tt Profiling} & String value, converted into an integer, and interpreted as a bit field. The lower 16 bits (0-15) are reserved to control profiling of the generic component implementation. Higher bits are available for user level profiling control. \newline {\bf bit 0}: Top level profiling of {\em Initialize} phases.\newline diff --git a/src/addon/NUOPC/doc/NUOPC_ModelComponent_metadata.tex b/src/addon/NUOPC/doc/NUOPC_ModelComponent_metadata.tex index f5a087065d..50fd3d9629 100644 --- a/src/addon/NUOPC/doc/NUOPC_ModelComponent_metadata.tex +++ b/src/addon/NUOPC/doc/NUOPC_ModelComponent_metadata.tex @@ -17,17 +17,17 @@ {\bf bit 1}: Intro/Extro with memory info.\newline {\bf bit 2}: Intro/Extro with garbage collection info.\newline {\bf bit 3}: Intro/Extro with local VM info.\newline + {\bf bit 4}: Intro/Extro with ImportState info.\newline + {\bf bit 5}: Intro/Extro with ExportState info.\newline {\bf bit 8}: Log Initialize phase with $>>>$, $<<<$, and currTime.\newline {\bf bit 9}: Log Run phase with $>>>$, $<<<$, and currTime.\newline {\bf bit 10}: Log Finalize phase with $>>>$, $<<<$, and currTime.\newline {\bf bit 11}: Log info about data dependency during initialize resolution.\newline - {\bf bit 12}: Log run sequence execution.\newline - {\bf bit 13}: Log Component creation.\newline - {\bf bit 14}: Log State creation. + {\bf bit 12}: Log run sequence execution. & 0, 1, 2, ... \newline "off" = 0 (default), \newline - "low": some verbosity, \newline - "high": more verbosity, \newline + "low": some verbosity, bits: 0, 8, 9, 10, 13\newline + "high": more verbosity, bits: 0, 4, 5, 8, 9, 10, 11, 12, 13, 14\newline "max": all lower 16 bits\\ \hline {\tt Profiling} & String value, converted into an integer, and interpreted as a bit field. The lower 16 bits (0-15) are reserved to control profiling of the generic component implementation. Higher bits are available for user level profiling control. \newline {\bf bit 0}: Top level profiling of {\em Initialize} phases.\newline diff --git a/src/addon/NUOPC/src/NUOPC_Base.F90 b/src/addon/NUOPC/src/NUOPC_Base.F90 index 964cd2f2df..0104fc749c 100644 --- a/src/addon/NUOPC/src/NUOPC_Base.F90 +++ b/src/addon/NUOPC/src/NUOPC_Base.F90 @@ -3172,11 +3172,12 @@ function NUOPC_IsUpdatedState(state, fieldName, count, rc) !BOPI ! !IROUTINE: NUOPC_LogIntro - Log entering a method ! !INTERFACE: - subroutine NUOPC_LogIntro(name, rName, verbosity, rc) + subroutine NUOPC_LogIntro(name, rName, verbosity, importState, exportState, rc) ! !ARGUMENTS: character(len=*), intent(in) :: name character(len=*), intent(in) :: rName integer, intent(in) :: verbosity + type(ESMF_State), intent(in) :: importState, exportState integer, intent(out) :: rc ! !DESCRIPTION: ! Write information into Log on entering a method, according to the verbosity @@ -3190,6 +3191,10 @@ subroutine NUOPC_LogIntro(name, rName, verbosity, rc) ! Routine name. ! \item[verbosity] ! Bit field corresponding to verbosity aspects. +! \item[importState] +! The importState of the component using this method. +! \item[exportState] +! The exportState of the component using this method. ! \item[rc] ! Return code; equals {\tt ESMF\_SUCCESS} if there are no errors. ! \end{description} @@ -3251,6 +3256,18 @@ subroutine NUOPC_LogIntro(name, rName, verbosity, rc) if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & line=__LINE__, file=trim(name)//":"//FILENAME)) return ! bail out endif + if (btest(verbosity,4)) then + call ESMF_StateLog(importState, trim(name)//": "//rName//" intro:", & + nestedFlag=.true., deepFlag=.true., rc=rc) + if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & + line=__LINE__, file=trim(name)//":"//FILENAME)) return ! bail out + endif + if (btest(verbosity,5)) then + call ESMF_StateLog(exportState, trim(name)//": "//rName//" intro:", & + nestedFlag=.true., deepFlag=.true., rc=rc) + if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & + line=__LINE__, file=trim(name)//":"//FILENAME)) return ! bail out + endif ! return successfully rc = ESMF_SUCCESS end subroutine @@ -3260,12 +3277,13 @@ subroutine NUOPC_LogIntro(name, rName, verbosity, rc) !BOPI ! !IROUTINE: NUOPC_LogExtro - Log exiting a method ! !INTERFACE: - subroutine NUOPC_LogExtro(name, rName, verbosity, rc) + subroutine NUOPC_LogExtro(name, rName, verbosity, importState, exportState, rc) ! !ARGUMENTS: - character(len=*), intent(in) :: name - character(len=*), intent(in) :: rName - integer, intent(in) :: verbosity - integer, intent(out) :: rc + character(len=*), intent(in) :: name + character(len=*), intent(in) :: rName + integer, intent(in) :: verbosity + type(ESMF_State), optional, intent(in) :: importState, exportState + integer, intent(out) :: rc ! !DESCRIPTION: ! Write information into Log on exiting a method, according to the verbosity ! aspects. @@ -3278,6 +3296,10 @@ subroutine NUOPC_LogExtro(name, rName, verbosity, rc) ! Routine name. ! \item[verbosity] ! Bit field corresponding to verbosity aspects. +! \item[{[importState]}] +! The importState of the component using this method. +! \item[{[exportState]}] +! The exportState of the component using this method. ! \item[rc] ! Return code; equals {\tt ESMF\_SUCCESS} if there are no errors. ! \end{description} @@ -3286,6 +3308,22 @@ subroutine NUOPC_LogExtro(name, rName, verbosity, rc) !----------------------------------------------------------------------------- ! local variables integer :: indentCount + if (btest(verbosity,4)) then + if (present(importState)) then + call ESMF_StateLog(importState, trim(name)//": "//rName//" extro:", & + nestedFlag=.true., deepFlag=.true., rc=rc) + if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & + line=__LINE__, file=trim(name)//":"//FILENAME)) return ! bail out + endif + endif + if (btest(verbosity,5)) then + if (present(exportState)) then + call ESMF_StateLog(exportState, trim(name)//": "//rName//" extro:", & + nestedFlag=.true., deepFlag=.true., rc=rc) + if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & + line=__LINE__, file=trim(name)//":"//FILENAME)) return ! bail out + endif + endif if (btest(verbosity,2)) then call ESMF_VMLogGarbageInfo(trim(name)//": "//rName//" extro:", rc=rc) if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & diff --git a/src/addon/NUOPC/src/NUOPC_Comp.F90 b/src/addon/NUOPC/src/NUOPC_Comp.F90 index 9a5805a895..315bc24cee 100644 --- a/src/addon/NUOPC/src/NUOPC_Comp.F90 +++ b/src/addon/NUOPC/src/NUOPC_Comp.F90 @@ -2994,16 +2994,16 @@ subroutine NUOPC_GridCompGet(comp, name, verbosity, profiling, diagnostic, rc) ! set component kind specific verbosity levels if (trim(valueString)=="Driver") then max = 65535 ! all 16 lower bits set - high = 32529 ! bits 0, 4, 8, 9, 10, 11, 12, 13, 14 - low = 9985 ! bits 0, 8, 9, 10, 13 + high = 32625 ! bits 0, 4, 5, 6, 8, 9, 10, 11, 12, 13, 14 + low = 9985 ! bits 0, 8, 9, 10, 13 else if (trim(valueString)=="Model") then max = 65535 ! all 16 lower bits set - high = 32513 ! bits 0, 8, 9, 10, 11, 12, 13, 14 - low = 9985 ! bits 0, 8, 9, 10, 13 + high = 32561 ! bits 0, 4, 5, 8, 9, 10, 11, 12, 13, 14 + low = 9985 ! bits 0, 8, 9, 10, 13 else if (trim(valueString)=="Mediator") then max = 65535 ! all 16 lower bits set - high = 32513 ! bits 0, 8, 9, 10, 11, 12, 13, 14 - low = 9985 ! bits 0, 8, 9, 10, 13 + high = 32561 ! bits 0, 4, 5, 8, 9, 10, 11, 12, 13, 14 + low = 9985 ! bits 0, 8, 9, 10, 13 endif ! query the component for Verbosity call NUOPC_CompAttributeGet(comp, name="Verbosity", value=valueString, & @@ -3098,7 +3098,7 @@ subroutine NUOPC_CplCompGet(comp, name, verbosity, profiling, diagnostic, rc) verbosity = 0 ! set specific verbosity levels max = 65535 ! all 16 lower bits set - high = 65281 ! bits 0, 8, 9, 10, 11, 12, 13, 14, 15 + high = 65329 ! bits 0, 4, 5, 8, 9, 10, 11, 12, 13, 14, 15 low = 8193 ! bits 0, 13 ! query the component for Verbosity call NUOPC_CompAttributeGet(comp, name="Verbosity", value=valueString, & diff --git a/src/addon/NUOPC/src/NUOPC_Connector.F90 b/src/addon/NUOPC/src/NUOPC_Connector.F90 index 7c94f388c6..b11e6e92d4 100644 --- a/src/addon/NUOPC/src/NUOPC_Connector.F90 +++ b/src/addon/NUOPC/src/NUOPC_Connector.F90 @@ -315,7 +315,7 @@ subroutine InitializeP0(connector, importState, exportState, clock, rc) endif ! intro - call NUOPC_LogIntro(name, rName, verbosity, rc=rc) + call NUOPC_LogIntro(name, rName, verbosity, importState, exportState, rc=rc) if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & line=__LINE__, file=trim(name)//":"//FILENAME)) return ! bail out @@ -400,7 +400,7 @@ subroutine InitializeP0(connector, importState, exportState, clock, rc) endif ! extro - call NUOPC_LogExtro(name, rName, verbosity, rc=rc) + call NUOPC_LogExtro(name, rName, verbosity, importState, exportState, rc=rc) if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & line=__LINE__, file=trim(name)//":"//FILENAME)) return ! bail out @@ -472,7 +472,7 @@ subroutine InitializeIPDv05p1(connector, importState, exportState, clock, rc) endif ! intro - call NUOPC_LogIntro(name, rName, verbosity, rc=rc) + call NUOPC_LogIntro(name, rName, verbosity, importState, exportState, rc=rc) if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & line=__LINE__, file=trim(name)//":"//FILENAME)) return ! bail out @@ -779,7 +779,7 @@ subroutine InitializeIPDv05p1(connector, importState, exportState, clock, rc) endif ! extro - call NUOPC_LogExtro(name, rName, verbosity, rc=rc) + call NUOPC_LogExtro(name, rName, verbosity, importState, exportState, rc=rc) if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & line=__LINE__, file=trim(name)//":"//FILENAME)) return ! bail out @@ -1093,7 +1093,7 @@ subroutine InitializeIPDv05p2a(connector, importState, exportState, clock, rc) endif ! intro - call NUOPC_LogIntro(name, rName, verbosity, rc=rc) + call NUOPC_LogIntro(name, rName, verbosity, importState, exportState, rc=rc) if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & line=__LINE__, file=trim(name)//":"//FILENAME)) return ! bail out @@ -1318,7 +1318,7 @@ subroutine InitializeIPDv05p2a(connector, importState, exportState, clock, rc) endif ! extro - call NUOPC_LogExtro(name, rName, verbosity, rc=rc) + call NUOPC_LogExtro(name, rName, verbosity, importState, exportState, rc=rc) if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & line=__LINE__, file=trim(name)//":"//FILENAME)) return ! bail out @@ -1396,7 +1396,7 @@ subroutine InitializeIPDv05p2b(connector, importState, exportState, clock, rc) endif ! intro - call NUOPC_LogIntro(name, rName, verbosity, rc=rc) + call NUOPC_LogIntro(name, rName, verbosity, importState, exportState, rc=rc) if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & line=__LINE__, file=trim(name)//":"//FILENAME)) return ! bail out @@ -1692,7 +1692,7 @@ subroutine InitializeIPDv05p2b(connector, importState, exportState, clock, rc) endif ! extro - call NUOPC_LogExtro(name, rName, verbosity, rc=rc) + call NUOPC_LogExtro(name, rName, verbosity, importState, exportState, rc=rc) if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & line=__LINE__, file=trim(name)//":"//FILENAME)) return ! bail out @@ -1753,7 +1753,7 @@ subroutine InitializeIPDv03p1(connector, importState, exportState, clock, rc) endif ! intro - call NUOPC_LogIntro(name, rName, verbosity, rc=rc) + call NUOPC_LogIntro(name, rName, verbosity, importState, exportState, rc=rc) if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & line=__LINE__, file=trim(name)//":"//FILENAME)) return ! bail out @@ -1831,7 +1831,7 @@ subroutine InitializeIPDv03p1(connector, importState, exportState, clock, rc) endif ! extro - call NUOPC_LogExtro(name, rName, verbosity, rc=rc) + call NUOPC_LogExtro(name, rName, verbosity, importState, exportState, rc=rc) if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & line=__LINE__, file=trim(name)//":"//FILENAME)) return ! bail out @@ -1919,7 +1919,7 @@ subroutine InitializeIPDv05p3(connector, importState, exportState, clock, rc) endif ! intro - call NUOPC_LogIntro(name, rName, verbosity, rc=rc) + call NUOPC_LogIntro(name, rName, verbosity, importState, exportState, rc=rc) if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & line=__LINE__, file=trim(name)//":"//FILENAME)) return ! bail out @@ -2584,7 +2584,7 @@ subroutine InitializeIPDv05p3(connector, importState, exportState, clock, rc) endif ! extro - call NUOPC_LogExtro(name, rName, verbosity, rc=rc) + call NUOPC_LogExtro(name, rName, verbosity, importState, exportState, rc=rc) if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & line=__LINE__, file=trim(name)//":"//FILENAME)) return ! bail out @@ -2699,7 +2699,7 @@ subroutine InitializeIPDv05p4(connector, importState, exportState, clock, rc) endif ! intro - call NUOPC_LogIntro(name, rName, verbosity, rc=rc) + call NUOPC_LogIntro(name, rName, verbosity, importState, exportState, rc=rc) if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & line=__LINE__, file=trim(name)//":"//FILENAME)) return ! bail out @@ -3701,7 +3701,7 @@ subroutine InitializeIPDv05p4(connector, importState, exportState, clock, rc) endif ! extro - call NUOPC_LogExtro(name, rName, verbosity, rc=rc) + call NUOPC_LogExtro(name, rName, verbosity, importState, exportState, rc=rc) if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & line=__LINE__, file=trim(name)//":"//FILENAME)) return ! bail out @@ -3809,7 +3809,7 @@ subroutine InitializeIPDv05p5(connector, importState, exportState, clock, rc) endif ! intro - call NUOPC_LogIntro(name, rName, verbosity, rc=rc) + call NUOPC_LogIntro(name, rName, verbosity, importState, exportState, rc=rc) if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & line=__LINE__, file=trim(name)//":"//FILENAME)) return ! bail out @@ -4548,7 +4548,7 @@ subroutine InitializeIPDv05p5(connector, importState, exportState, clock, rc) endif ! extro - call NUOPC_LogExtro(name, rName, verbosity, rc=rc) + call NUOPC_LogExtro(name, rName, verbosity, importState, exportState, rc=rc) if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & line=__LINE__, file=trim(name)//":"//FILENAME)) return ! bail out @@ -4896,7 +4896,7 @@ subroutine InitializeIPDv05p6a(connector, importState, exportState, clock, rc) endif ! intro - call NUOPC_LogIntro(name, rName, verbosity, rc=rc) + call NUOPC_LogIntro(name, rName, verbosity, importState, exportState, rc=rc) if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & line=__LINE__, file=trim(name)//":"//FILENAME)) return ! bail out @@ -4985,7 +4985,7 @@ subroutine InitializeIPDv05p6a(connector, importState, exportState, clock, rc) endif ! extro - call NUOPC_LogExtro(name, rName, verbosity, rc=rc) + call NUOPC_LogExtro(name, rName, verbosity, importState, exportState, rc=rc) if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & line=__LINE__, file=trim(name)//":"//FILENAME)) return ! bail out @@ -5080,7 +5080,7 @@ subroutine InitializeIPDv05p6b(connector, importState, exportState, clock, rc) endif ! intro - call NUOPC_LogIntro(name, rName, verbosity, rc=rc) + call NUOPC_LogIntro(name, rName, verbosity, importState, exportState, rc=rc) if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & line=__LINE__, file=trim(name)//":"//FILENAME)) return ! bail out @@ -5537,7 +5537,7 @@ subroutine InitializeIPDv05p6b(connector, importState, exportState, clock, rc) endif ! extro - call NUOPC_LogExtro(name, rName, verbosity, rc=rc) + call NUOPC_LogExtro(name, rName, verbosity, importState, exportState, rc=rc) if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & line=__LINE__, file=trim(name)//":"//FILENAME)) return ! bail out @@ -6092,7 +6092,7 @@ subroutine InitializeIPDv00p2a(connector, importState, exportState, clock, rc) endif ! intro - call NUOPC_LogIntro(name, rName, verbosity, rc=rc) + call NUOPC_LogIntro(name, rName, verbosity, importState, exportState, rc=rc) if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & line=__LINE__, file=trim(name)//":"//FILENAME)) return ! bail out @@ -6105,7 +6105,7 @@ subroutine InitializeIPDv00p2a(connector, importState, exportState, clock, rc) line=__LINE__, file=trim(name)//":"//FILENAME)) return ! bail out ! extro - call NUOPC_LogExtro(name, rName, verbosity, rc=rc) + call NUOPC_LogExtro(name, rName, verbosity, importState, exportState, rc=rc) if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & line=__LINE__, file=trim(name)//":"//FILENAME)) return ! bail out @@ -6164,7 +6164,7 @@ subroutine InitializeIPDv00p2b(connector, importState, exportState, clock, rc) endif ! intro - call NUOPC_LogIntro(name, rName, verbosity, rc=rc) + call NUOPC_LogIntro(name, rName, verbosity, importState, exportState, rc=rc) if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & line=__LINE__, file=trim(name)//":"//FILENAME)) return ! bail out @@ -6174,7 +6174,7 @@ subroutine InitializeIPDv00p2b(connector, importState, exportState, clock, rc) line=__LINE__, file=trim(name)//":"//FILENAME)) return ! bail out ! extro - call NUOPC_LogExtro(name, rName, verbosity, rc=rc) + call NUOPC_LogExtro(name, rName, verbosity, importState, exportState, rc=rc) if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & line=__LINE__, file=trim(name)//":"//FILENAME)) return ! bail out @@ -6243,7 +6243,7 @@ subroutine Run(connector, importState, exportState, clock, rc) endif ! intro - call NUOPC_LogIntro(name, rName, verbosity, rc=rc) + call NUOPC_LogIntro(name, rName, verbosity, importState, exportState, rc=rc) if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & line=__LINE__, file=trim(name)//":"//FILENAME)) return ! bail out @@ -6464,7 +6464,7 @@ subroutine Run(connector, importState, exportState, clock, rc) endif ! extro - call NUOPC_LogExtro(name, rName, verbosity, rc=rc) + call NUOPC_LogExtro(name, rName, verbosity, importState, exportState, rc=rc) if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & line=__LINE__, file=trim(name)//":"//FILENAME)) return ! bail out @@ -6545,7 +6545,7 @@ subroutine Finalize(connector, importState, exportState, clock, rc) endif ! intro - call NUOPC_LogIntro(name, rName, verbosity, rc=rc) + call NUOPC_LogIntro(name, rName, verbosity, importState, exportState, rc=rc) if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & line=__LINE__, file=trim(name)//":"//FILENAME)) return ! bail out @@ -6780,7 +6780,7 @@ subroutine Finalize(connector, importState, exportState, clock, rc) endif ! extro - call NUOPC_LogExtro(name, rName, verbosity, rc=rc) + call NUOPC_LogExtro(name, rName, verbosity, importState, exportState, rc=rc) if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & line=__LINE__, file=trim(name)//":"//FILENAME)) return ! bail out diff --git a/src/addon/NUOPC/src/NUOPC_Driver.F90 b/src/addon/NUOPC/src/NUOPC_Driver.F90 index 1b46863df8..f04e0d4a7e 100644 --- a/src/addon/NUOPC/src/NUOPC_Driver.F90 +++ b/src/addon/NUOPC/src/NUOPC_Driver.F90 @@ -380,7 +380,7 @@ recursive subroutine InitializeP0(driver, importState, exportState, clock, rc) endif ! intro - call NUOPC_LogIntro(name, rName, verbosity, rc=rc) + call NUOPC_LogIntro(name, rName, verbosity, importState, exportState, rc=rc) if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & line=__LINE__, file=trim(name)//":"//FILENAME)) return ! bail out @@ -399,7 +399,7 @@ recursive subroutine InitializeP0(driver, importState, exportState, clock, rc) ! -> No explicit filtering of phaseLabels needed here. ! extro - call NUOPC_LogExtro(name, rName, verbosity, rc=rc) + call NUOPC_LogExtro(name, rName, verbosity, importState, exportState, rc=rc) if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & line=__LINE__, file=trim(name)//":"//FILENAME)) return ! bail out @@ -459,7 +459,7 @@ recursive subroutine InitializeGeneric(driver, importState, exportState, clock, endif ! intro - call NUOPC_LogIntro(name, rName, verbosity, rc=rc) + call NUOPC_LogIntro(name, rName, verbosity, importState, exportState, rc=rc) if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & line=__LINE__, file=trim(name)//":"//FILENAME)) return ! bail out @@ -513,7 +513,7 @@ recursive subroutine InitializeGeneric(driver, importState, exportState, clock, endif ! extro - call NUOPC_LogExtro(name, rName, verbosity, rc=rc) + call NUOPC_LogExtro(name, rName, verbosity, importState, exportState, rc=rc) if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & line=__LINE__, file=trim(name)//":"//FILENAME)) return ! bail out @@ -574,7 +574,7 @@ recursive subroutine InitializeExternalAdvertise(driver, importState, & endif ! intro - call NUOPC_LogIntro(name, rName, verbosity, rc=rc) + call NUOPC_LogIntro(name, rName, verbosity, importState, exportState, rc=rc) if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & line=__LINE__, file=trim(name)//":"//FILENAME)) return ! bail out @@ -601,7 +601,7 @@ recursive subroutine InitializeExternalAdvertise(driver, importState, & line=__LINE__, file=trim(name)//":"//FILENAME)) return ! bail out ! extro - call NUOPC_LogExtro(name, rName, verbosity, rc=rc) + call NUOPC_LogExtro(name, rName, verbosity, importState, exportState, rc=rc) if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & line=__LINE__, file=trim(name)//":"//FILENAME)) return ! bail out @@ -688,7 +688,7 @@ recursive subroutine InitializeIPDv02p1(driver, importState, exportState, & endif ! intro - call NUOPC_LogIntro(name, rName, verbosity, rc=rc) + call NUOPC_LogIntro(name, rName, verbosity, importState, exportState, rc=rc) if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & line=__LINE__, file=trim(name)//":"//FILENAME)) return ! bail out @@ -1578,7 +1578,7 @@ recursive subroutine InitializeIPDv02p1(driver, importState, exportState, & endif ! extro - call NUOPC_LogExtro(name, rName, verbosity, rc=rc) + call NUOPC_LogExtro(name, rName, verbosity, importState, exportState, rc=rc) if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & line=__LINE__, file=trim(name)//":"//FILENAME)) return ! bail out @@ -1892,7 +1892,7 @@ recursive subroutine InitializeIPDv02p3(driver, importState, exportState, & endif ! intro - call NUOPC_LogIntro(name, rName, verbosity, rc=rc) + call NUOPC_LogIntro(name, rName, verbosity, importState, exportState, rc=rc) if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & line=__LINE__, file=trim(name)//":"//FILENAME)) return ! bail out @@ -2261,7 +2261,7 @@ recursive subroutine InitializeIPDv02p3(driver, importState, exportState, & endif ! extro - call NUOPC_LogExtro(name, rName, verbosity, rc=rc) + call NUOPC_LogExtro(name, rName, verbosity, importState, exportState, rc=rc) if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & line=__LINE__, file=trim(name)//":"//FILENAME)) return ! bail out @@ -2332,7 +2332,7 @@ recursive subroutine InitializeIPDv02p5(driver, importState, exportState, & endif ! intro - call NUOPC_LogIntro(name, rName, verbosity, rc=rc) + call NUOPC_LogIntro(name, rName, verbosity, importState, exportState, rc=rc) if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & line=__LINE__, file=trim(name)//":"//FILENAME)) return ! bail out @@ -2579,7 +2579,7 @@ recursive subroutine InitializeIPDv02p5(driver, importState, exportState, & endif ! extro - call NUOPC_LogExtro(name, rName, verbosity, rc=rc) + call NUOPC_LogExtro(name, rName, verbosity, importState, exportState, rc=rc) if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & line=__LINE__, file=trim(name)//":"//FILENAME)) return ! bail out @@ -2644,7 +2644,7 @@ recursive subroutine InitializeIPDv02p5Data(driver, importState, exportState,& endif ! intro - call NUOPC_LogIntro(name, rName, verbosity, rc=rc) + call NUOPC_LogIntro(name, rName, verbosity, importState, exportState, rc=rc) if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & line=__LINE__, file=trim(name)//":"//FILENAME)) return ! bail out @@ -2768,7 +2768,8 @@ recursive subroutine InitializeIPDv02p5Data(driver, importState, exportState,& line=__LINE__, file=trim(name)//":"//FILENAME)) return ! bail out endif - call loopDataDependentInitialize(driver, is%wrap%dataDepAllComplete, rc=rc) + call loopDataDependentInitialize(driver, importState, exportState, & + dataDepAllComplete=is%wrap%dataDepAllComplete, rc=rc) if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & line=__LINE__, file=trim(name)//":"//FILENAME)) & return ! bail out @@ -2799,7 +2800,7 @@ recursive subroutine InitializeIPDv02p5Data(driver, importState, exportState,& return ! bail out ! extro - call NUOPC_LogExtro(name, rName, verbosity, rc=rc) + call NUOPC_LogExtro(name, rName, verbosity, importState, exportState, rc=rc) if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & line=__LINE__, file=trim(name)//":"//FILENAME)) return ! bail out @@ -3106,9 +3107,11 @@ recursive subroutine loopConnectorCompsS(driver, phaseString, execFlag, rc) !----------------------------------------------------------------------------- - recursive subroutine loopDataDependentInitialize(driver, dataDepAllComplete, rc) + recursive subroutine loopDataDependentInitialize(driver, & + importState, exportState, dataDepAllComplete, rc) ! resolve data dependencies type(ESMF_GridComp) :: driver + type(ESMF_State) :: importState, exportState logical, optional, intent(out) :: dataDepAllComplete integer, intent(out) :: rc @@ -3163,7 +3166,7 @@ recursive subroutine loopDataDependentInitialize(driver, dataDepAllComplete, rc) endif ! intro - call NUOPC_LogIntro(name, rName, verbosity, rc=rc) + call NUOPC_LogIntro(name, rName, verbosity, importState, exportState, rc=rc) if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & line=__LINE__, file=trim(name)//":"//FILENAME)) return ! bail out @@ -3432,7 +3435,7 @@ recursive subroutine loopDataDependentInitialize(driver, dataDepAllComplete, rc) enddo ! extro - call NUOPC_LogExtro(name, rName, verbosity, rc=rc) + call NUOPC_LogExtro(name, rName, verbosity, importState, exportState, rc=rc) if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & line=__LINE__, file=trim(name)//":"//FILENAME)) return ! bail out @@ -3500,7 +3503,7 @@ recursive subroutine routine_Run(driver, importState, exportState, clock, rc) endif ! intro - call NUOPC_LogIntro(name, rName, verbosity, rc=rc) + call NUOPC_LogIntro(name, rName, verbosity, importState, exportState, rc=rc) if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & line=__LINE__, file=trim(name)//":"//FILENAME)) return ! bail out @@ -3649,7 +3652,7 @@ recursive subroutine routine_Run(driver, importState, exportState, clock, rc) endif ! extro - call NUOPC_LogExtro(name, rName, verbosity, rc=rc) + call NUOPC_LogExtro(name, rName, verbosity, importState, exportState, rc=rc) if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & line=__LINE__, file=trim(name)//":"//FILENAME)) return ! bail out @@ -4036,7 +4039,7 @@ recursive subroutine Finalize(driver, importState, exportState, clock, rc) endif ! intro - call NUOPC_LogIntro(name, rName, verbosity, rc=rc) + call NUOPC_LogIntro(name, rName, verbosity, importState, exportState, rc=rc) if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & line=__LINE__, file=trim(name)//":"//FILENAME)) return ! bail out @@ -4396,7 +4399,7 @@ recursive subroutine FinalizeReset(driver, importState, exportState, clock, rc) endif ! intro - call NUOPC_LogIntro(name, rName, verbosity, rc=rc) + call NUOPC_LogIntro(name, rName, verbosity, importState, exportState, rc=rc) if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & line=__LINE__, file=trim(name)//":"//FILENAME)) return ! bail out @@ -4504,7 +4507,7 @@ recursive subroutine FinalizeReset(driver, importState, exportState, clock, rc) return ! bail out ! extro - call NUOPC_LogExtro(name, rName, verbosity, rc=rc) + call NUOPC_LogExtro(name, rName, verbosity, importState, exportState, rc=rc) if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & line=__LINE__, file=trim(name)//":"//FILENAME)) return ! bail out @@ -7508,7 +7511,7 @@ recursive subroutine IInitAdvertise(driver, importState, exportState, clock, & endif ! intro - call NUOPC_LogIntro(name, rName, verbosity, rc=rc) + call NUOPC_LogIntro(name, rName, verbosity, importState, exportState, rc=rc) if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & line=__LINE__, file=trim(name)//":"//FILENAME)) return ! bail out @@ -7555,7 +7558,7 @@ recursive subroutine IInitAdvertise(driver, importState, exportState, clock, & endif ! extro - call NUOPC_LogExtro(name, rName, verbosity, rc=rc) + call NUOPC_LogExtro(name, rName, verbosity, importState, exportState, rc=rc) if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & line=__LINE__, file=trim(name)//":"//FILENAME)) return ! bail out @@ -7617,7 +7620,7 @@ recursive subroutine IInitAdvertiseFinish(driver, importState, exportState, & endif ! intro - call NUOPC_LogIntro(name, rName, verbosity, rc=rc) + call NUOPC_LogIntro(name, rName, verbosity, importState, exportState, rc=rc) if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & line=__LINE__, file=trim(name)//":"//FILENAME)) return ! bail out @@ -7675,7 +7678,7 @@ recursive subroutine IInitAdvertiseFinish(driver, importState, exportState, & endif ! extro - call NUOPC_LogExtro(name, rName, verbosity, rc=rc) + call NUOPC_LogExtro(name, rName, verbosity, importState, exportState, rc=rc) if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & line=__LINE__, file=trim(name)//":"//FILENAME)) return ! bail out @@ -7785,7 +7788,7 @@ recursive subroutine IInitModifyCplLists(driver, importState, exportState, & endif ! intro - call NUOPC_LogIntro(name, rName, verbosity, rc=rc) + call NUOPC_LogIntro(name, rName, verbosity, importState, exportState, rc=rc) if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & line=__LINE__, file=trim(name)//":"//FILENAME)) return ! bail out @@ -7829,7 +7832,7 @@ recursive subroutine IInitModifyCplLists(driver, importState, exportState, & line=__LINE__, file=trim(name)//":"//FILENAME, rcToReturn=rc)) & return ! bail out if (areServicesSet) then - if (btest(verbosity,4)) then + if (btest(verbosity,6)) then call ESMF_CplCompGet(connector, name=connectorName, rc=rc) if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & line=__LINE__, file=trim(name)//":"//FILENAME, rcToReturn=rc)) & @@ -7857,7 +7860,7 @@ recursive subroutine IInitModifyCplLists(driver, importState, exportState, & line=__LINE__, file=trim(name)//":"//FILENAME, rcToReturn=rc)) & return ! bail out if (areServicesSet) then - if (btest(verbosity,4)) then + if (btest(verbosity,6)) then call ESMF_CplCompGet(connector, name=connectorName, rc=rc) if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & line=__LINE__, file=trim(name)//":"//FILENAME, rcToReturn=rc)) & @@ -7914,7 +7917,7 @@ recursive subroutine IInitModifyCplLists(driver, importState, exportState, & endif ! extro - call NUOPC_LogExtro(name, rName, verbosity, rc=rc) + call NUOPC_LogExtro(name, rName, verbosity, importState, exportState, rc=rc) if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & line=__LINE__, file=trim(name)//":"//FILENAME)) return ! bail out @@ -8031,7 +8034,7 @@ recursive subroutine modifyCplList(connector, state, appendString, & producerConnected, consumerConnected, rc=rc) if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & line=__LINE__, file=trim(name)//":"//FILENAME)) return ! bail out - if (btest(verbosity,4)) then + if (btest(verbosity,6)) then write(msgString,*) trim(cplName)//& " connected:", connected, & " producerConnected:", producerConnected, & @@ -8149,7 +8152,7 @@ recursive subroutine IInitCheck(driver, importState, exportState, clock, rc) endif ! intro - call NUOPC_LogIntro(name, rName, verbosity, rc=rc) + call NUOPC_LogIntro(name, rName, verbosity, importState, exportState, rc=rc) if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & line=__LINE__, file=trim(name)//":"//FILENAME)) return ! bail out @@ -8175,7 +8178,7 @@ recursive subroutine IInitCheck(driver, importState, exportState, clock, rc) line=__LINE__, file=trim(name)//":"//FILENAME, rcToReturn=rc)) & return ! bail out if (areServicesSet) then - if (btest(verbosity,4)) then + if (btest(verbosity,6)) then call ESMF_CplCompGet(connector, name=connectorName, rc=rc) if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & line=__LINE__, file=trim(name)//":"//FILENAME, rcToReturn=rc)) & @@ -8202,7 +8205,7 @@ recursive subroutine IInitCheck(driver, importState, exportState, clock, rc) line=__LINE__, file=trim(name)//":"//FILENAME, rcToReturn=rc)) & return ! bail out if (areServicesSet) then - if (btest(verbosity,4)) then + if (btest(verbosity,6)) then call ESMF_CplCompGet(connector, name=connectorName, rc=rc) if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & line=__LINE__, file=trim(name)//":"//FILENAME, rcToReturn=rc)) & @@ -8266,7 +8269,7 @@ recursive subroutine IInitCheck(driver, importState, exportState, clock, rc) endif ! extro - call NUOPC_LogExtro(name, rName, verbosity, rc=rc) + call NUOPC_LogExtro(name, rName, verbosity, importState, exportState, rc=rc) if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & line=__LINE__, file=trim(name)//":"//FILENAME)) return ! bail out @@ -8374,7 +8377,7 @@ recursive subroutine cleanupCplList(connector, state, rc) producerConnected, consumerConnected, rc=rc) if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & line=__LINE__, file=trim(name)//":"//FILENAME)) return ! bail out - if (btest(verbosity,4)) then + if (btest(verbosity,6)) then write(msgString,*) trim(cplName)// & " in CplSet: ", trim(cplSetList(j)), & " connected:", connected, & @@ -8391,7 +8394,7 @@ recursive subroutine cleanupCplList(connector, state, rc) if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & line=__LINE__, file=trim(name)//":"//FILENAME, rcToReturn=rc)) & return ! bail out - if (btest(verbosity,4)) then + if (btest(verbosity,6)) then write(msgString,*) "- removing field: ", trim(fieldName), & " in CplSet: ", trim(cplSetList(j)) call ESMF_LogWrite(msgString, ESMF_LOGMSG_INFO, rc=rc) @@ -8476,7 +8479,7 @@ recursive subroutine checkConnections(state, rc) consumerConnected, rc=rc) if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & line=__LINE__, file=trim(name)//":"//FILENAME)) return ! bail out - if (btest(verbosity,4)) then + if (btest(verbosity,6)) then write(msgString,*) trim(itemNameList(j))//& " connected:", connected, & " producerConnected:", producerConnected, & @@ -8636,7 +8639,7 @@ recursive subroutine IInitRealize(driver, importState, exportState, clock, rc) endif ! intro - call NUOPC_LogIntro(name, rName, verbosity, rc=rc) + call NUOPC_LogIntro(name, rName, verbosity, importState, exportState, rc=rc) if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & line=__LINE__, file=trim(name)//":"//FILENAME)) return ! bail out @@ -8646,7 +8649,7 @@ recursive subroutine IInitRealize(driver, importState, exportState, clock, rc) if (stateIsCreated) then ! - complete all the fields in the importState - if (btest(verbosity,4)) then + if (btest(verbosity,6)) then call ESMF_LogWrite("Calling into completeAllFields() for importState", & ESMF_LOGMSG_INFO, rc=rc) if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & @@ -8664,7 +8667,7 @@ recursive subroutine IInitRealize(driver, importState, exportState, clock, rc) if (stateIsCreated) then ! - complete all the fields in the exportState - if (btest(verbosity,4)) then + if (btest(verbosity,6)) then call ESMF_LogWrite("Calling into completeAllFields() for exportState", & ESMF_LOGMSG_INFO, rc=rc) if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & @@ -8677,7 +8680,7 @@ recursive subroutine IInitRealize(driver, importState, exportState, clock, rc) endif ! extro - call NUOPC_LogExtro(name, rName, verbosity, rc=rc) + call NUOPC_LogExtro(name, rName, verbosity, importState, exportState, rc=rc) if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & line=__LINE__, file=trim(name)//":"//FILENAME)) return ! bail out @@ -8734,7 +8737,7 @@ recursive subroutine completeAllFields(state, rc) if (trim(value)=="shared") then ! shared -> must complete the field here - if (btest(verbosity,4)) then + if (btest(verbosity,6)) then call ESMF_LogWrite("- "//trim(itemNameList(i))// & ": shared --> don't know what to do!!!!!.", ESMF_LOGMSG_INFO, rc=rc) if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & @@ -8743,7 +8746,7 @@ recursive subroutine completeAllFields(state, rc) endif else ! not shared -> must complete the field here - if (btest(verbosity,4)) then + if (btest(verbosity,6)) then call ESMF_LogWrite("- "//trim(itemNameList(i))// & ": not shared --> complete here.", ESMF_LOGMSG_INFO, rc=rc) if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & @@ -8819,7 +8822,7 @@ recursive subroutine InternalInitializeComplete(driver, importState, & endif ! intro - call NUOPC_LogIntro(name, rName, verbosity, rc=rc) + call NUOPC_LogIntro(name, rName, verbosity, importState, exportState, rc=rc) if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & line=__LINE__, file=trim(name)//":"//FILENAME)) return ! bail out @@ -8897,7 +8900,7 @@ recursive subroutine InternalInitializeComplete(driver, importState, & endif ! extro - call NUOPC_LogExtro(name, rName, verbosity, rc=rc) + call NUOPC_LogExtro(name, rName, verbosity, importState, exportState, rc=rc) if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & line=__LINE__, file=trim(name)//":"//FILENAME)) return ! bail out diff --git a/src/addon/NUOPC/src/NUOPC_ModelBase.F90 b/src/addon/NUOPC/src/NUOPC_ModelBase.F90 index 6b7fdce59b..8661651b08 100644 --- a/src/addon/NUOPC/src/NUOPC_ModelBase.F90 +++ b/src/addon/NUOPC/src/NUOPC_ModelBase.F90 @@ -388,7 +388,7 @@ subroutine InitializeP0(gcomp, importState, exportState, clock, rc) endif ! intro - call NUOPC_LogIntro(name, rName, verbosity, rc=rc) + call NUOPC_LogIntro(name, rName, verbosity, importState, exportState, rc=rc) if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & line=__LINE__, file=trim(name)//":"//FILENAME)) return ! bail out @@ -577,7 +577,7 @@ subroutine InitializeP0(gcomp, importState, exportState, clock, rc) line=__LINE__, file=trim(name)//":"//FILENAME)) return ! bail out ! extro - call NUOPC_LogExtro(name, rName, verbosity, rc=rc) + call NUOPC_LogExtro(name, rName, verbosity, importState, exportState, rc=rc) if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & line=__LINE__, file=trim(name)//":"//FILENAME)) return ! bail out @@ -640,7 +640,7 @@ subroutine InitializeIPDvXp01(gcomp, importState, exportState, clock, rc) endif ! intro - call NUOPC_LogIntro(name, rName, verbosity, rc=rc) + call NUOPC_LogIntro(name, rName, verbosity, importState, exportState, rc=rc) if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & line=__LINE__, file=trim(name)//":"//FILENAME)) return ! bail out @@ -720,7 +720,7 @@ subroutine InitializeIPDvXp01(gcomp, importState, exportState, clock, rc) line=__LINE__, file=trim(name)//":"//FILENAME)) return ! bail out ! extro - call NUOPC_LogExtro(name, rName, verbosity, rc=rc) + call NUOPC_LogExtro(name, rName, verbosity, importState, exportState, rc=rc) if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & line=__LINE__, file=trim(name)//":"//FILENAME)) return ! bail out @@ -783,7 +783,7 @@ subroutine InitializeIPDvXp02(gcomp, importState, exportState, clock, rc) endif ! intro - call NUOPC_LogIntro(name, rName, verbosity, rc=rc) + call NUOPC_LogIntro(name, rName, verbosity, importState, exportState, rc=rc) if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & line=__LINE__, file=trim(name)//":"//FILENAME)) return ! bail out @@ -863,7 +863,7 @@ subroutine InitializeIPDvXp02(gcomp, importState, exportState, clock, rc) line=__LINE__, file=trim(name)//":"//FILENAME)) return ! bail out ! extro - call NUOPC_LogExtro(name, rName, verbosity, rc=rc) + call NUOPC_LogExtro(name, rName, verbosity, importState, exportState, rc=rc) if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & line=__LINE__, file=trim(name)//":"//FILENAME)) return ! bail out @@ -926,7 +926,7 @@ subroutine InitializeIPDvXp04(gcomp, importState, exportState, clock, rc) endif ! intro - call NUOPC_LogIntro(name, rName, verbosity, rc=rc) + call NUOPC_LogIntro(name, rName, verbosity, importState, exportState, rc=rc) if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & line=__LINE__, file=trim(name)//":"//FILENAME)) return ! bail out @@ -1006,7 +1006,7 @@ subroutine InitializeIPDvXp04(gcomp, importState, exportState, clock, rc) line=__LINE__, file=trim(name)//":"//FILENAME)) return ! bail out ! extro - call NUOPC_LogExtro(name, rName, verbosity, rc=rc) + call NUOPC_LogExtro(name, rName, verbosity, importState, exportState, rc=rc) if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & line=__LINE__, file=trim(name)//":"//FILENAME)) return ! bail out @@ -1069,7 +1069,7 @@ subroutine InitializeIPDvXp05(gcomp, importState, exportState, clock, rc) endif ! intro - call NUOPC_LogIntro(name, rName, verbosity, rc=rc) + call NUOPC_LogIntro(name, rName, verbosity, importState, exportState, rc=rc) if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & line=__LINE__, file=trim(name)//":"//FILENAME)) return ! bail out @@ -1149,7 +1149,7 @@ subroutine InitializeIPDvXp05(gcomp, importState, exportState, clock, rc) line=__LINE__, file=trim(name)//":"//FILENAME)) return ! bail out ! extro - call NUOPC_LogExtro(name, rName, verbosity, rc=rc) + call NUOPC_LogExtro(name, rName, verbosity, importState, exportState, rc=rc) if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & line=__LINE__, file=trim(name)//":"//FILENAME)) return ! bail out @@ -1212,7 +1212,7 @@ subroutine InitializeIPDvXp06(gcomp, importState, exportState, clock, rc) endif ! intro - call NUOPC_LogIntro(name, rName, verbosity, rc=rc) + call NUOPC_LogIntro(name, rName, verbosity, importState, exportState, rc=rc) if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & line=__LINE__, file=trim(name)//":"//FILENAME)) return ! bail out @@ -1292,7 +1292,7 @@ subroutine InitializeIPDvXp06(gcomp, importState, exportState, clock, rc) line=__LINE__, file=trim(name)//":"//FILENAME)) return ! bail out ! extro - call NUOPC_LogExtro(name, rName, verbosity, rc=rc) + call NUOPC_LogExtro(name, rName, verbosity, importState, exportState, rc=rc) if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & line=__LINE__, file=trim(name)//":"//FILENAME)) return ! bail out @@ -1366,7 +1366,7 @@ subroutine InitializeIPDvXp07(gcomp, importState, exportState, clock, rc) endif ! intro - call NUOPC_LogIntro(name, rName, verbosity, rc=rc) + call NUOPC_LogIntro(name, rName, verbosity, importState, exportState, rc=rc) if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & line=__LINE__, file=trim(name)//":"//FILENAME)) return ! bail out @@ -1494,7 +1494,7 @@ subroutine InitializeIPDvXp07(gcomp, importState, exportState, clock, rc) line=__LINE__, file=trim(name)//":"//FILENAME)) return ! bail out ! extro - call NUOPC_LogExtro(name, rName, verbosity, rc=rc) + call NUOPC_LogExtro(name, rName, verbosity, importState, exportState, rc=rc) if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & line=__LINE__, file=trim(name)//":"//FILENAME)) return ! bail out @@ -1562,7 +1562,7 @@ subroutine InitializeIPDvXp08(gcomp, importState, exportState, clock, rc) endif ! intro - call NUOPC_LogIntro(name, rName, verbosity, rc=rc) + call NUOPC_LogIntro(name, rName, verbosity, importState, exportState, rc=rc) if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & line=__LINE__, file=trim(name)//":"//FILENAME)) return ! bail out @@ -1758,7 +1758,7 @@ subroutine InitializeIPDvXp08(gcomp, importState, exportState, clock, rc) line=__LINE__, file=trim(name)//":"//FILENAME)) return ! bail out ! extro - call NUOPC_LogExtro(name, rName, verbosity, rc=rc) + call NUOPC_LogExtro(name, rName, verbosity, importState, exportState, rc=rc) if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & line=__LINE__, file=trim(name)//":"//FILENAME)) return ! bail out @@ -1824,7 +1824,7 @@ subroutine InitializeIPDv01p5(gcomp, importState, exportState, clock, rc) endif ! intro - call NUOPC_LogIntro(name, rName, verbosity, rc=rc) + call NUOPC_LogIntro(name, rName, verbosity, importState, exportState, rc=rc) if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & line=__LINE__, file=trim(name)//":"//FILENAME)) return ! bail out @@ -1960,7 +1960,7 @@ subroutine InitializeIPDv01p5(gcomp, importState, exportState, clock, rc) line=__LINE__, file=trim(name)//":"//FILENAME)) return ! bail out ! extro - call NUOPC_LogExtro(name, rName, verbosity, rc=rc) + call NUOPC_LogExtro(name, rName, verbosity, importState, exportState, rc=rc) if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & line=__LINE__, file=trim(name)//":"//FILENAME)) return ! bail out @@ -2028,7 +2028,7 @@ subroutine routine_Run(gcomp, importState, exportState, clock, rc) endif ! intro - call NUOPC_LogIntro(name, rName, verbosity, rc=rc) + call NUOPC_LogIntro(name, rName, verbosity, importState, exportState, rc=rc) if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & line=__LINE__, file=trim(name)//":"//FILENAME)) return ! bail out @@ -2349,7 +2349,7 @@ subroutine routine_Run(gcomp, importState, exportState, clock, rc) endif ! extro - call NUOPC_LogExtro(name, rName, verbosity, rc=rc) + call NUOPC_LogExtro(name, rName, verbosity, importState, exportState, rc=rc) if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & line=__LINE__, file=trim(name)//":"//FILENAME)) return ! bail out @@ -2529,7 +2529,7 @@ recursive subroutine Finalize(gcomp, importState, exportState, clock, rc) endif ! intro - call NUOPC_LogIntro(name, rName, verbosity, rc=rc) + call NUOPC_LogIntro(name, rName, verbosity, importState, exportState, rc=rc) if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & line=__LINE__, file=trim(name)//":"//FILENAME)) return ! bail out