Ocean moduleΒΆ
The ocean module is called by its parent module and runs the MITgcm. The pseudo code of the ocean module is:
module mod_esmf_ocn
# set ocean services
subroutine OCN_SetServices
call NUOPC_CompDerive(NUOPC_SetServices)
call NUOPC_CompSetEntryPoint(ESMF_METHOD_INITIALIZE, OCN_Init1)
call NUOPC_CompSetEntryPoint(ESMF_METHOD_INITIALIZE, OCN_Init2)
call NUOPC_CompSpecialize(NUOPC_SetClock, OCN_SetClock)
call NUOPC_CompSpecialize(NUOPC_Label_Advance, OCN_run)
call ESMF_GridCompSetEntryPoint(ESMF_METHOD_FINALIZE, OCN_final)
end subroutine OCN_SetServices
# set in/out fields
subroutine OCN_Init1
call NUOPC_Advertise(importState, "fields_in")
call NUOPC_Advertise(exportState, "fields_out")
end subroutine OCN_Init1
# set grid data and initialize the fields
subroutine OCN_Init2
# initial the ocean in MITgcm
call MIT_INIT();
# set the ocean grid in ESMF
call OCN_SetGridArrays();
# initialize the ocean variables in ESMF
call OCN_Initialize();
end subroutine OCN_Init2
# run ocean model
subroutine OCN_run
# send atmosphere surface fluxes to ocean model
call OCN_get();
# run ocean model
call MIT_run();
# send ocean variables to atmosphere model
call OCN_put();
end subroutine OCN_run
# finalize ocean model
subroutine OCN_final
call MIT_final();
end subroutine OCN_final
end module