diff --git a/mediator/CMakeLists.txt b/mediator/CMakeLists.txt index 80be3d2e8..36d5db290 100644 --- a/mediator/CMakeLists.txt +++ b/mediator/CMakeLists.txt @@ -16,7 +16,8 @@ set(SRCFILES esmFldsExchange_cesm_mod.F90 med_fraction_mod.F90 med_phases_post_ocn_mod.F90 med_phases_ocnalb_mod.F90 med_phases_post_atm_mod.F90 med_phases_post_ice_mod.F90 med_phases_post_lnd_mod.F90 med_phases_post_glc_mod.F90 - med_phases_post_rof_mod.F90 med_phases_post_wav_mod.F90) + med_phases_post_rof_mod.F90 med_phases_post_wav_mod.F90 + med_ufs_trace_wrapper.F90) foreach(FILE ${SRCFILES}) if(EXISTS "${CASEROOT}/SourceMods/src.cmeps/${FILE}") diff --git a/mediator/med.F90 b/mediator/med.F90 index d7e0d20f5..2e59cf8a9 100644 --- a/mediator/med.F90 +++ b/mediator/med.F90 @@ -52,7 +52,7 @@ module MED use esmFldsExchange_hafs_mod , only : esmFldsExchange_hafs use med_phases_profile_mod , only : med_phases_profile_finalize use shr_log_mod , only : shr_log_error - + use med_ufs_trace_wrapper_mod, only : ufs_trace_init_wrapper, ufs_trace_wrapper, ufs_trace_finalize_wrapper implicit none private @@ -87,6 +87,7 @@ subroutine SetServices(gcomp, rc) use ESMF , only: ESMF_SUCCESS, ESMF_GridCompSetEntryPoint use ESMF , only: ESMF_METHOD_INITIALIZE, ESMF_METHOD_RUN use ESMF , only: ESMF_GridComp, ESMF_MethodRemove + use ESMF , only: ESMF_VM, ESMF_VMGet, ESMF_GridCompGet use NUOPC , only: NUOPC_CompDerive, NUOPC_CompSetEntryPoint, NUOPC_CompSpecialize, NUOPC_NoOP use NUOPC_Mediator , only: mediator_routine_SS => SetServices use NUOPC_Mediator , only: mediator_routine_Run => routine_Run @@ -133,6 +134,8 @@ subroutine SetServices(gcomp, rc) type(ESMF_GridComp) :: gcomp integer, intent(out) :: rc + type(ESMF_VM) :: vm + integer :: localPet ! local variables character(len=*), parameter :: subname = '('//__FILE__//':SetServices)' !----------------------------------------------------------- @@ -140,6 +143,15 @@ subroutine SetServices(gcomp, rc) rc = ESMF_SUCCESS if (profile_memory) call ESMF_VMLogMemInfo("Entering "//trim(subname)) + call ESMF_GridCompGet(gcomp, vm=vm, rc=rc) + if (ChkErr(rc,__LINE__,u_FILE_u)) return + call ESMF_VMGet(vm, localPet=localPet, rc=rc) + if (ChkErr(rc,__LINE__,u_FILE_u)) return + maintask = .false. + if (localPet == 0) maintask=.true. + if (maintask) call ufs_trace_init_wrapper() + if (maintask) call ufs_trace_wrapper("cmeps", "SetServices", "B") + !------------------ ! the NUOPC model component mediator_routine_SS will register the generic methods !------------------ @@ -555,6 +567,7 @@ subroutine SetServices(gcomp, rc) if (profile_memory) call ESMF_VMLogMemInfo("Leaving "//trim(subname)) + if (maintask) call ufs_trace_wrapper("cmeps", "SetServices", "E") end subroutine SetServices !----------------------------------------------------------------------------- @@ -592,6 +605,7 @@ subroutine InitializeP0(gcomp, importState, exportState, clock, rc) call ESMF_LogWrite(trim(subname)//": called", ESMF_LOGMSG_INFO) if (profile_memory) call ESMF_VMLogMemInfo("Entering "//trim(subname)) + if (maintask) call ufs_trace_wrapper("cmeps", "InitializeP0", "B") call ESMF_GridCompGet(gcomp, vm=vm, rc=rc) if (ChkErr(rc,__LINE__,u_FILE_u)) return call ESMF_VMGet(vm, localPet=localPet, rc=rc) @@ -662,6 +676,8 @@ subroutine InitializeP0(gcomp, importState, exportState, clock, rc) if (profile_memory) call ESMF_VMLogMemInfo("Leaving "//trim(subname)) call ESMF_LogWrite(trim(subname)//": done", ESMF_LOGMSG_INFO) + if (maintask) call ufs_trace_wrapper("cmeps", "InitializeP0", "E") + end subroutine InitializeP0 !----------------------------------------------------------------------- @@ -701,6 +717,7 @@ subroutine AdvertiseFields(gcomp, importState, exportState, clock, rc) character(len=*), parameter :: subname = '('//__FILE__//':AdvertiseFields)' !----------------------------------------------------------- + if (maintask) call ufs_trace_wrapper("cmeps", "AdvertiseFields", "B") call ESMF_LogWrite(trim(subname)//": called", ESMF_LOGMSG_INFO) rc = ESMF_SUCCESS if (profile_memory) call ESMF_VMLogMemInfo("Entering "//trim(subname)) @@ -980,6 +997,7 @@ subroutine AdvertiseFields(gcomp, importState, exportState, clock, rc) if (profile_memory) call ESMF_VMLogMemInfo("Leaving "//trim(subname)) call ESMF_LogWrite(trim(subname)//": done", ESMF_LOGMSG_INFO) + if (maintask) call ufs_trace_wrapper("cmeps", "AdvertiseFields", "E") end subroutine AdvertiseFields !----------------------------------------------------------------------------- @@ -1006,6 +1024,7 @@ subroutine RealizeFieldsWithTransferProvided(gcomp, importState, exportState, cl integer :: n character(len=*), parameter :: subname = '('//__FILE__//':RealizeFieldsWithTransferProvided)' !----------------------------------------------------------- + if (maintask) call ufs_trace_wrapper("cmeps", "RealizeFieldsWithTransferProvided", "B") call ESMF_LogWrite(trim(subname)//": called", ESMF_LOGMSG_INFO) rc = ESMF_SUCCESS @@ -1043,6 +1062,7 @@ subroutine RealizeFieldsWithTransferProvided(gcomp, importState, exportState, cl if (profile_memory) call ESMF_VMLogMemInfo("Leaving "//trim(subname)) call ESMF_LogWrite(trim(subname)//": done", ESMF_LOGMSG_INFO) + if (maintask) call ufs_trace_wrapper("cmeps", "RealizeFieldsWithTransferProvided", "E") end subroutine RealizeFieldsWithTransferProvided @@ -1067,6 +1087,7 @@ subroutine ModifyDecompofMesh(gcomp, importState, exportState, clock, rc) integer :: n1 character(len=*), parameter :: subname = '('//__FILE__//':ModifyDecompofMesh)' !----------------------------------------------------------- + if (maintask) call ufs_trace_wrapper("cmeps", "ModifyDecompofMesh", "B") call ESMF_LogWrite(trim(subname)//": called", ESMF_LOGMSG_INFO) rc = ESMF_SUCCESS @@ -1095,6 +1116,7 @@ subroutine ModifyDecompofMesh(gcomp, importState, exportState, clock, rc) enddo if (profile_memory) call ESMF_VMLogMemInfo("Leaving "//trim(subname)) call ESMF_LogWrite(trim(subname)//": done", ESMF_LOGMSG_INFO) + if (maintask) call ufs_trace_wrapper("cmeps", "ModifyDecompofMesh", "E") contains !- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -1392,6 +1414,7 @@ subroutine RealizeFieldsWithTransferAccept(gcomp, importState, exportState, cloc integer :: n1 character(len=*), parameter :: subname = '('//__FILE__//':RealizeFieldsWithTransferAccept)' !----------------------------------------------------------- + if (maintask) call ufs_trace_wrapper("cmeps", "RealizeFieldsWithTransferAccept", "B") call ESMF_LogWrite(trim(subname)//": called", ESMF_LOGMSG_INFO) @@ -1431,6 +1454,7 @@ subroutine RealizeFieldsWithTransferAccept(gcomp, importState, exportState, cloc if (profile_memory) call ESMF_VMLogMemInfo("Leaving "//trim(subname)) call ESMF_LogWrite(trim(subname)//": done", ESMF_LOGMSG_INFO) + if (maintask) call ufs_trace_wrapper("cmeps", "RealizeFieldsWithTransferAccept", "E") contains !- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -1655,6 +1679,7 @@ subroutine DataInitialize(gcomp, rc) character(len=CX) :: msgString character(len=*), parameter :: subname = '('//__FILE__//':DataInitialize)' !----------------------------------------------------------- + if (maintask) call ufs_trace_wrapper("cmeps", "DataInitialize", "B") call ESMF_LogWrite(trim(subname)//": called", ESMF_LOGMSG_INFO) rc = ESMF_SUCCESS @@ -1963,6 +1988,7 @@ subroutine DataInitialize(gcomp, rc) ! the correct timestamps, which also indicates that the actual ! data has been transferred reliably, and CMEPS can safely use it. + if (maintask) call ufs_trace_wrapper("cmeps", "DataInitialize", "E") RETURN endif ! end first_call if-block @@ -2254,6 +2280,7 @@ subroutine DataInitialize(gcomp, rc) call ESMF_LogWrite(trim(subname)//": done", ESMF_LOGMSG_INFO) endif + if (maintask) call ufs_trace_wrapper("cmeps", "DataInitialize", "E") end subroutine DataInitialize !----------------------------------------------------------------------------- diff --git a/mediator/med_phases_history_mod.F90 b/mediator/med_phases_history_mod.F90 index fd533d70c..2cb31f907 100644 --- a/mediator/med_phases_history_mod.F90 +++ b/mediator/med_phases_history_mod.F90 @@ -24,6 +24,8 @@ module med_phases_history_mod use perf_mod , only : t_startf, t_stopf use pio , only : file_desc_t use shr_log_mod , only : shr_log_error + use med_ufs_trace_wrapper_mod, only : ufs_trace_wrapper + implicit none private @@ -188,6 +190,7 @@ subroutine med_phases_history_write(gcomp, rc) !--------------------------------------- rc = ESMF_SUCCESS + if (maintask) call ufs_trace_wrapper("cmeps", "med_phases_history_write", "B") call t_startf('MED:'//subname) ! Get the internal state @@ -383,6 +386,7 @@ subroutine med_phases_history_write(gcomp, rc) call t_stopf('MED:'//subname) + if (maintask) call ufs_trace_wrapper("cmeps", "med_phases_history_write", "E") end subroutine med_phases_history_write !=============================================================================== @@ -420,6 +424,7 @@ subroutine med_phases_history_write_med(gcomp, rc) character(len=*), parameter :: subname='(med_phases_history_write_med)' !--------------------------------------- rc = ESMF_SUCCESS + if (maintask) call ufs_trace_wrapper("cmeps", "med_phases_history_write_med", "B") ! Get the internal state nullify(is_local%wrap) @@ -526,6 +531,7 @@ subroutine med_phases_history_write_med(gcomp, rc) end if ! end of if-write_now block end if ! end of if-active block + if (maintask) call ufs_trace_wrapper("cmeps", "med_phases_history_write_med", "E") end subroutine med_phases_history_write_med !=============================================================================== @@ -567,6 +573,7 @@ subroutine med_phases_history_write_lnd2glc(gcomp, fldbun_lnd, rc, fldbun_glc) !--------------------------------------- rc = ESMF_SUCCESS + if (maintask) call ufs_trace_wrapper("cmeps", "med_phases_history_write_lnd2glc", "B") ! Get the internal state nullify(is_local%wrap) @@ -655,6 +662,7 @@ subroutine med_phases_history_write_lnd2glc(gcomp, fldbun_lnd, rc, fldbun_glc) call med_io_close(io_file, rc=rc) if (ChkErr(rc,__LINE__,u_FILE_u)) return + if (maintask) call ufs_trace_wrapper("cmeps", "med_phases_history_write_lnd2glc", "E") end subroutine med_phases_history_write_lnd2glc !=============================================================================== @@ -668,6 +676,7 @@ subroutine med_phases_history_write_comp(gcomp, compid, rc) integer , intent(out) :: rc !--------------------------------------- rc = ESMF_SUCCESS + if (maintask) call ufs_trace_wrapper("cmeps", "med_phases_history_write_comp", "B") call med_phases_history_write_comp_inst(gcomp, compid, instfiles(compid), rc=rc) if (ChkErr(rc,__LINE__,u_FILE_u)) return @@ -676,6 +685,7 @@ subroutine med_phases_history_write_comp(gcomp, compid, rc) call med_phases_history_write_comp_aux(gcomp, compid, auxcomp(compid), rc=rc) if (ChkErr(rc,__LINE__,u_FILE_u)) return + if (maintask) call ufs_trace_wrapper("cmeps", "med_phases_history_write_comp", "E") end subroutine med_phases_history_write_comp !=============================================================================== diff --git a/mediator/med_phases_ocnalb_mod.F90 b/mediator/med_phases_ocnalb_mod.F90 index b7c95389a..5f247192d 100644 --- a/mediator/med_phases_ocnalb_mod.F90 +++ b/mediator/med_phases_ocnalb_mod.F90 @@ -11,6 +11,8 @@ module med_phases_ocnalb_mod use shr_orb_mod , only : shr_orb_cosz, shr_orb_decl use shr_orb_mod , only : shr_orb_params, SHR_ORB_UNDEF_INT, SHR_ORB_UNDEF_REAL use shr_log_mod , only : shr_log_unit, shr_log_error + use med_ufs_trace_wrapper_mod, only : ufs_trace_wrapper + implicit none private @@ -314,6 +316,7 @@ subroutine med_phases_ocnalb_run(gcomp, rc) !--------------------------------------- rc = ESMF_SUCCESS + if (maintask) call ufs_trace_wrapper("cmeps", "med_phases_ocnalb_run", "B") ! Determine main task call ESMF_GridCompGet(gcomp, vm=vm, rc=rc) @@ -507,6 +510,7 @@ subroutine med_phases_ocnalb_run(gcomp, rc) end if call t_stopf('MED:'//subname) + if (maintask) call ufs_trace_wrapper("cmeps", "med_phases_ocnalb_run", "E") end subroutine med_phases_ocnalb_run !=============================================================================== diff --git a/mediator/med_phases_post_atm_mod.F90 b/mediator/med_phases_post_atm_mod.F90 index 333497a69..52651951a 100644 --- a/mediator/med_phases_post_atm_mod.F90 +++ b/mediator/med_phases_post_atm_mod.F90 @@ -28,13 +28,14 @@ subroutine med_phases_post_atm(gcomp, rc) use ESMF , only : ESMF_GridComp, ESMF_GridCompGet, ESMF_FieldBundleGet use ESMF , only : ESMF_LogWrite, ESMF_LOGMSG_INFO, ESMF_SUCCESS use med_kind_mod , only : CX=>SHR_KIND_CX, CS=>SHR_KIND_CS, CL=>SHR_KIND_CL, R8=>SHR_KIND_R8 - use med_internalstate_mod , only : InternalState + use med_internalstate_mod , only : InternalState, maintask use med_phases_history_mod, only : med_phases_history_write_comp use med_map_mod , only : med_map_field_packed use med_constants_mod , only : dbug_flag => med_constants_dbug_flag use med_utils_mod , only : chkerr => med_utils_ChkErr use med_internalstate_mod , only : compocn, compatm, compice, complnd, compwav use perf_mod , only : t_startf, t_stopf + use med_ufs_trace_wrapper_mod, only : ufs_trace_wrapper ! input/output variables type(ESMF_GridComp) :: gcomp @@ -47,6 +48,7 @@ subroutine med_phases_post_atm(gcomp, rc) !------------------------------------------------------------------------------- rc = ESMF_SUCCESS + if (maintask) call ufs_trace_wrapper("cmeps", "med_phases_post_atm", "B") call t_startf('MED:'//subname) if (dbug_flag > 20) then @@ -126,6 +128,7 @@ subroutine med_phases_post_atm(gcomp, rc) end if call t_stopf('MED:'//subname) + if (maintask) call ufs_trace_wrapper("cmeps", "med_phases_post_atm", "E") end subroutine med_phases_post_atm end module med_phases_post_atm_mod diff --git a/mediator/med_phases_post_ice_mod.F90 b/mediator/med_phases_post_ice_mod.F90 index 739369525..ff2ca2dca 100644 --- a/mediator/med_phases_post_ice_mod.F90 +++ b/mediator/med_phases_post_ice_mod.F90 @@ -28,10 +28,11 @@ subroutine med_phases_post_ice(gcomp, rc) use med_methods_mod , only : FB_diagnose => med_methods_FB_diagnose use med_map_mod , only : med_map_field_packed use med_fraction_mod , only : med_fraction_set - use med_internalstate_mod , only : InternalState + use med_internalstate_mod , only : InternalState, maintask use med_phases_history_mod, only : med_phases_history_write_comp use med_internalstate_mod , only : compice, compocn, compwav use perf_mod , only : t_startf, t_stopf + use med_ufs_trace_wrapper_mod, only : ufs_trace_wrapper ! input/output variables type(ESMF_GridComp) :: gcomp @@ -43,6 +44,7 @@ subroutine med_phases_post_ice(gcomp, rc) character(len=*),parameter :: subname='(med_phases_post_ice)' !------------------------------------------------------------------------------- + if (maintask) call ufs_trace_wrapper("cmeps", "med_phases_post_ice", "B") call t_startf('MED:'//subname) rc = ESMF_SUCCESS @@ -99,6 +101,7 @@ subroutine med_phases_post_ice(gcomp, rc) call ESMF_LogWrite(subname//' done', ESMF_LOGMSG_INFO) end if + if (maintask) call ufs_trace_wrapper("cmeps", "med_phases_post_ice", "E") end subroutine med_phases_post_ice end module med_phases_post_ice_mod diff --git a/mediator/med_phases_post_ocn_mod.F90 b/mediator/med_phases_post_ocn_mod.F90 index b253de664..cba5ce7b2 100644 --- a/mediator/med_phases_post_ocn_mod.F90 +++ b/mediator/med_phases_post_ocn_mod.F90 @@ -26,11 +26,12 @@ subroutine med_phases_post_ocn(gcomp, rc) use med_utils_mod , only : chkerr => med_utils_ChkErr use med_constants_mod , only : dbug_flag => med_constants_dbug_flag use med_map_mod , only : med_map_field_packed - use med_internalstate_mod , only : InternalState + use med_internalstate_mod , only : InternalState, maintask use med_internalstate_mod , only : compice, compocn, compwav use med_phases_history_mod , only : med_phases_history_write_comp use med_phases_prep_glc_mod , only : med_phases_prep_glc_accum_ocn use perf_mod , only : t_startf, t_stopf + use med_ufs_trace_wrapper_mod, only : ufs_trace_wrapper ! input/output variables type(ESMF_GridComp) :: gcomp @@ -43,6 +44,7 @@ subroutine med_phases_post_ocn(gcomp, rc) !--------------------------------------- rc = ESMF_SUCCESS + if (maintask) call ufs_trace_wrapper("cmeps", "med_phases_post_ocn", "B") call t_startf('MED:'//subname) if (dbug_flag > 20) then @@ -101,6 +103,7 @@ subroutine med_phases_post_ocn(gcomp, rc) end if call t_stopf('MED:'//subname) + if (maintask) call ufs_trace_wrapper("cmeps", "med_phases_post_ocn", "E") end subroutine med_phases_post_ocn end module med_phases_post_ocn_mod diff --git a/mediator/med_phases_post_wav_mod.F90 b/mediator/med_phases_post_wav_mod.F90 index 50592012c..34b0d1677 100644 --- a/mediator/med_phases_post_wav_mod.F90 +++ b/mediator/med_phases_post_wav_mod.F90 @@ -23,10 +23,11 @@ subroutine med_phases_post_wav(gcomp, rc) use med_utils_mod , only : chkerr => med_utils_ChkErr use med_methods_mod , only : FB_diagnose => med_methods_FB_diagnose use med_map_mod , only : med_map_field_packed - use med_internalstate_mod , only : InternalState + use med_internalstate_mod , only : InternalState, maintask use med_internalstate_mod , only : compwav, compatm, compocn, compice use med_phases_history_mod, only : med_phases_history_write_comp use perf_mod , only : t_startf, t_stopf + use med_ufs_trace_wrapper_mod, only : ufs_trace_wrapper ! input/output variables type(ESMF_GridComp) :: gcomp @@ -38,6 +39,7 @@ subroutine med_phases_post_wav(gcomp, rc) character(len=*),parameter :: subname='(med_phases_post_wav)' !------------------------------------------------------------------------------- + if (maintask) call ufs_trace_wrapper("cmeps", "med_phases_post_wav", "B") call t_startf('MED:'//subname) rc = ESMF_SUCCESS @@ -97,6 +99,7 @@ subroutine med_phases_post_wav(gcomp, rc) call ESMF_LogWrite(subname//' done', ESMF_LOGMSG_INFO) end if + if (maintask) call ufs_trace_wrapper("cmeps", "med_phases_post_wav", "E") end subroutine med_phases_post_wav end module med_phases_post_wav_mod diff --git a/mediator/med_phases_prep_atm_mod.F90 b/mediator/med_phases_prep_atm_mod.F90 index bcdf2ea42..6fe283928 100644 --- a/mediator/med_phases_prep_atm_mod.F90 +++ b/mediator/med_phases_prep_atm_mod.F90 @@ -23,6 +23,7 @@ module med_phases_prep_atm_mod use perf_mod , only : t_startf, t_stopf use med_phases_aofluxes_mod, only : med_aofluxes_map_xgrid2agrid_output use med_phases_aofluxes_mod, only : med_aofluxes_map_ogrid2agrid_output + use med_ufs_trace_wrapper_mod, only : ufs_trace_wrapper implicit none private @@ -60,6 +61,7 @@ subroutine med_phases_prep_atm(gcomp, rc) character(len=*),parameter :: subname='(med_phases_prep_atm)' !------------------------------------------------------------------------------- + if (maintask) call ufs_trace_wrapper("cmeps", "med_phases_prep_atm", "B") call t_startf('MED:'//subname) rc = ESMF_SUCCESS @@ -248,6 +250,7 @@ subroutine med_phases_prep_atm(gcomp, rc) end if call t_stopf('MED:'//subname) + if (maintask) call ufs_trace_wrapper("cmeps", "med_phases_prep_atm", "E") end subroutine med_phases_prep_atm !----------------------------------------------------------------------------- diff --git a/mediator/med_phases_prep_ice_mod.F90 b/mediator/med_phases_prep_ice_mod.F90 index 4aaa8c264..baaed9ff1 100644 --- a/mediator/med_phases_prep_ice_mod.F90 +++ b/mediator/med_phases_prep_ice_mod.F90 @@ -41,6 +41,7 @@ subroutine med_phases_prep_ice(gcomp, rc) use med_internalstate_mod , only : coupling_mode use esmFlds , only : med_fldList_GetFldListTo use perf_mod , only : t_startf, t_stopf + use med_ufs_trace_wrapper_mod, only : ufs_trace_wrapper ! input/output variables type(ESMF_GridComp) :: gcomp @@ -59,6 +60,7 @@ subroutine med_phases_prep_ice(gcomp, rc) character(len=*),parameter :: subname='(med_phases_prep_ice)' !--------------------------------------- + if (maintask) call ufs_trace_wrapper("cmeps", "med_phases_prep_ice", "B") call t_startf('MED:'//subname) if (dbug_flag > 5) then @@ -158,6 +160,7 @@ subroutine med_phases_prep_ice(gcomp, rc) endif call t_stopf('MED:'//subname) + if (maintask) call ufs_trace_wrapper("cmeps", "med_phases_prep_ice", "E") end subroutine med_phases_prep_ice end module med_phases_prep_ice_mod diff --git a/mediator/med_phases_prep_ocn_mod.F90 b/mediator/med_phases_prep_ocn_mod.F90 index e30c4ada5..ebb6e99a9 100644 --- a/mediator/med_phases_prep_ocn_mod.F90 +++ b/mediator/med_phases_prep_ocn_mod.F90 @@ -23,6 +23,7 @@ module med_phases_prep_ocn_mod use esmFlds , only : med_fldList_GetfldListTo, med_fldlist_type use med_internalstate_mod , only : compocn, compatm, compice, coupling_mode use perf_mod , only : t_startf, t_stopf + use med_ufs_trace_wrapper_mod, only : ufs_trace_wrapper implicit none private @@ -104,6 +105,7 @@ subroutine med_phases_prep_ocn_accum(gcomp, rc) character(len=*), parameter :: subname='(med_phases_prep_ocn_accum)' !--------------------------------------- + if (maintask) call ufs_trace_wrapper("cmeps", "med_phases_prep_ocn_accum", "B") call t_startf('MED:'//subname) if (dbug_flag > 20) then call ESMF_LogWrite(subname//' called', ESMF_LOGMSG_INFO) @@ -266,6 +268,7 @@ subroutine med_phases_prep_ocn_accum(gcomp, rc) end if call t_stopf('MED:'//subname) + if (maintask) call ufs_trace_wrapper("cmeps", "med_phases_prep_ocn_accum", "E") end subroutine med_phases_prep_ocn_accum !----------------------------------------------------------------------------- @@ -288,6 +291,7 @@ subroutine med_phases_prep_ocn_avg(gcomp, rc) !--------------------------------------- rc = ESMF_SUCCESS + if (maintask) call ufs_trace_wrapper("cmeps", "med_phases_prep_ocn_avg", "B") call t_startf('MED:'//subname) if (dbug_flag > 20) then @@ -341,6 +345,7 @@ subroutine med_phases_prep_ocn_avg(gcomp, rc) call t_stopf('MED:'//subname) first_call = .false. + if (maintask) call ufs_trace_wrapper("cmeps", "med_phases_prep_ocn_avg", "E") end subroutine med_phases_prep_ocn_avg !----------------------------------------------------------------------------- diff --git a/mediator/med_phases_prep_wav_mod.F90 b/mediator/med_phases_prep_wav_mod.F90 index 1cfd158be..4f36c8df1 100644 --- a/mediator/med_phases_prep_wav_mod.F90 +++ b/mediator/med_phases_prep_wav_mod.F90 @@ -21,6 +21,7 @@ module med_phases_prep_wav_mod use esmFlds , only : med_fldList_GetfldListTo use med_internalstate_mod , only : compatm, compwav use perf_mod , only : t_startf, t_stopf + use med_ufs_trace_wrapper_mod, only : ufs_trace_wrapper implicit none private @@ -84,6 +85,7 @@ subroutine med_phases_prep_wav_accum(gcomp, rc) character(len=*), parameter :: subname='(med_phases_prep_wav_accum)' !--------------------------------------- + if (maintask) call ufs_trace_wrapper("cmeps", "med_phases_prep_wav_accum", "B") call t_startf('MED:'//subname) if (dbug_flag > 20) then call ESMF_LogWrite(subname//' called', ESMF_LOGMSG_INFO) @@ -147,6 +149,7 @@ subroutine med_phases_prep_wav_accum(gcomp, rc) end if call t_stopf('MED:'//subname) + if (maintask) call ufs_trace_wrapper("cmeps", "med_phases_prep_wav_accum", "E") end subroutine med_phases_prep_wav_accum !----------------------------------------------------------------------------- @@ -168,6 +171,7 @@ subroutine med_phases_prep_wav_avg(gcomp, rc) !--------------------------------------- rc = ESMF_SUCCESS + if (maintask) call ufs_trace_wrapper("cmeps", "med_phases_prep_wav_avg", "B") call t_startf('MED:'//subname) if (dbug_flag > 20) then @@ -219,5 +223,6 @@ subroutine med_phases_prep_wav_avg(gcomp, rc) end if call t_stopf('MED:'//subname) + if (maintask) call ufs_trace_wrapper("cmeps", "med_phases_prep_wav_avg", "E") end subroutine med_phases_prep_wav_avg end module med_phases_prep_wav_mod diff --git a/mediator/med_phases_restart_mod.F90 b/mediator/med_phases_restart_mod.F90 index 705bf7ac5..350fbe8ce 100644 --- a/mediator/med_phases_restart_mod.F90 +++ b/mediator/med_phases_restart_mod.F90 @@ -19,6 +19,7 @@ module med_phases_restart_mod use shr_is_restart_fh_mod , only : log_restart_fh #endif use shr_log_mod , only : shr_log_error + use med_ufs_trace_wrapper_mod, only : ufs_trace_wrapper implicit none private @@ -198,6 +199,7 @@ subroutine med_phases_restart_write(gcomp, rc) character(len=*), parameter :: subname='(med_phases_restart_write)' !--------------------------------------- + if (maintask) call ufs_trace_wrapper("cmeps", "med_phases_restart_write", "B") call t_startf('MED:'//subname) if (dbug_flag > 5) then call ESMF_LogWrite(trim(subname)//": called", ESMF_LOGMSG_INFO) @@ -508,6 +510,7 @@ subroutine med_phases_restart_write(gcomp, rc) endif call t_stopf('MED:'//subname) + if (maintask) call ufs_trace_wrapper("cmeps", "med_phases_restart_write", "E") end subroutine med_phases_restart_write !=============================================================================== @@ -543,6 +546,7 @@ subroutine med_phases_restart_read(gcomp, rc) character(ESMF_MAXSTR) :: restart_pfile ! Local path to restart pointer filename character(len=*), parameter :: subname='(med_phases_restart_read)' !--------------------------------------- + if (maintask) call ufs_trace_wrapper("cmeps", "med_phases_restart_read", "B") call t_startf('MED:'//subname) call ESMF_LogWrite(trim(subname)//": called", ESMF_LOGMSG_INFO) rc = ESMF_SUCCESS @@ -661,6 +665,7 @@ subroutine med_phases_restart_read(gcomp, rc) call ESMF_LogWrite(trim(subname)//": done", ESMF_LOGMSG_INFO) call t_stopf('MED:'//subname) + if (maintask) call ufs_trace_wrapper("cmeps", "med_phases_restart_read", "E") end subroutine med_phases_restart_read !=============================================================================== diff --git a/mediator/med_ufs_trace_wrapper.F90 b/mediator/med_ufs_trace_wrapper.F90 new file mode 100644 index 000000000..8a0415a95 --- /dev/null +++ b/mediator/med_ufs_trace_wrapper.F90 @@ -0,0 +1,38 @@ +module med_ufs_trace_wrapper_mod + +#ifdef UFS_TRACING + use ufs_trace_mod, only: ufs_trace_init, ufs_trace, ufs_trace_finalize +#endif + + implicit none + + private + + public ufs_trace_init_wrapper + public ufs_trace_wrapper + public ufs_trace_finalize_wrapper + +contains + + subroutine ufs_trace_init_wrapper() +#ifdef UFS_TRACING + call ufs_trace_init +#endif + return + end subroutine ufs_trace_init_wrapper + + subroutine ufs_trace_wrapper(component, routine, ph) + character(len=*), intent(in) :: component, routine, ph +#ifdef UFS_TRACING + call ufs_trace(component, routine, ph) +#endif + return + end subroutine ufs_trace_wrapper + + subroutine ufs_trace_finalize_wrapper() +#ifdef UFS_TRACING + call ufs_trace_finalize +#endif + end subroutine ufs_trace_finalize_wrapper + +end module med_ufs_trace_wrapper_mod