############# 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