Parent moduleΒΆ
The parent module is called either by the main function, and it controls the child modules. The pseudo code of the parent module is:
module mod_esmf_esm
# set ESM services
subroutine ESM_SetServices
call NUOPC_CompDerive(NUOPC_SetServices)
call NUOPC_CompSpecialize(NUOPC_SetModelServices, ESM_SetModelServices)
call NUOPC_CompSpecialize(NUOPC_SetRunSequence, ESM_SetRunSequence)
end subroutine ESM_SetServices
# set Model services
subroutine ESM_SetModelServices
# set the model components
call NUOPC_DriverAddComp("ATM", ATM_SetServices)
call NUOPC_DriverAddComp("OCN", OCN_SetServices)
# set the coupler components
call NUOPC_DriverAddComp("ATM-TO-OCN", CPL_SetServices)
call NUOPC_DriverAddComp("OCN-TO-ATM", CPL_SetServices)
call ESMF_GridCompSet(clock=esmClock)
end subroutine ESM_SetModelServices
# set Run sequences
subroutine ESM_SetRunSequence
# set the coupler components
call NUOPC_DriverAddRunElement("ATM-TO-OCN")
call NUOPC_DriverAddRunElement("OCN-TO-ATM")
# set the model components
call NUOPC_DriverAddRunElement("ATM")
call NUOPC_DriverAddRunElement("OCN")
end subroutine ESM_SetModelServices
end module