-
Notifications
You must be signed in to change notification settings - Fork 25
iHAMOCC
The origin of iHAMOCC is the Hamburg ocean carbon cycle model (HAMOCC), originally developed at MPI in Hamburg. This model has been adapted for an isopycnic ("constant density") vertical coordinate framework by researchers in Bergen, who have created the now independent iHAMOCC model. Although different versions of HAMOCC share the same origin (e.g. iHAMOCC used for NorESM2, HAMOCC6 used for MPI-ESM1.2), they are developed independently and are not interchangable at current time (June 2021).
Although iHAMOCC is developed as a BGC component in the BLOM/iHAMOCC system, we still try to maintain a separation between BLOM and iHAMOCC source code, and a clean interface between the two. Hence, the core iHAMOCC code should not reference BLOM variables or parameters directly, but only those that have been defined for the BLOM/iHAMOCC interface. There are some exceptions to this general rule, mainly for the mod_xc module that defines parameters for the model dimensions.
iHAMOCC extends the number of ocean tracers that is defined in BLOM, and use the BLOM routines for calculation of tracer advection and diffusion.
NOTE: Tracer fields in BLOM are defined with units [mol / kg] whereas tracer fields in iHAMOCC are defined with units [kmol / m^3]. It is therefore necessary to do a unit conversion when passing tracers between BLOM and iHAMOCC.
-
mo_intfcblom.F90 :: Declaration and memory allocation related to the BLOM-iHAMOCC interface. This includes 2-time-level copies of sediment and atmospheric fields.
- mo_intfcblom (module)
- alloc_mem_intfcblom (public subroutine)
-
mo_vgrid.F90 :: Declaration, memory allocation, and routines related to the vertical grid structure. These have to be recalculated every time step when iHAMOCC is coupled to BLOM.
- mo_vgrid (module)
- set_vgrid (public subroutine)
- alloc_mem_vgrid (public subroutine)
- blom2hamocc.F :: unit conversion, pass sediment and atmospheric fields from BLOM to iHAMOCC
- hamocc2blom.F :: unit conversion, pass sediment and atmospheric dields from iHAMOCC to BLOM
- hamocc_init.F :: HAMOCC intialization when coupled to BLOM.
- hamocc_step.F :: HAMOCC time step when coupled to BLOM.
The ability to write and read restart files also depend partly on the BLOM structure, hence the support for iHAMOCC restart files also reference some BLOM modules directly.
- aufr_bgc.F90 :: Read restart data to continue an interrupted integration.
- aufw_bgc.F90 :: Write restart data for continuation of interrupted integration.
- restart_hamoccwt.F :: Wrapper for aufw_bgc subroutine, called from external tracer routine restart_trcwt.
- hamocc4bcm.F90 :: Main routine for iHAMOCC
The subroutine hamocc4bcm is called from hamocc_step, once per time step, and runs through the following steps:
- Increment BGC time step counter for run (ldtrunbgc) and for experiment (ldtbgc).
- call set_vgrid :: Calculate variables with respect to current vertical grid
- strahl :: Update net solar radiation
- atm :: Update atmospheric CO2 [optional: PROGCO2, DIAGCO2]
- call get_cfc :: Update atmospheric CFC [optional: CFC]
- call ocprod :: Update biological production, remineralisation and particle sinking.
- Set minimum ocetra values to zero.
- call cyano :: Nitrogen fixation by cyano bacteria, followed by remineralisation and nitrification.
- call carcham :: Inorganic carbon cycle.
- call n_deposition :: Apply nitrogen deposition to the top-most model layer
- call riverinpt :: Apply riverine input to oceanic tracer fields
- call update_boxatm :: Update atmospheric pCO2 [optional: BOXATM]
- call preftrc :: Update preformed tracers
- call powach :: Update sediment deposition [optional: SEDBYPASS]
- call sedshi :: Once per day, shift sediments [optional: SEDBYPASS]
- pflxco2 :: Pass CO2 flux, convert from [kmol / m^2] to [kg / m^2 / s].
- pflxdms :: Pass DMS flux, convert from [kmol / m^2] to [kg / m^2 / s].
NOTE: Steps marked by [optional: {LABEL}] are turned on/off depending on value of preprocessor flag {LABEL}.
-
mo_control_bgc.F90 :: Declaration of variables
- mo_control_bgc (module)
- beleg_parm.F90 :: Set BGC parameter values
- beleg_vars.F90 :: Set initial values for BGC variables
-
mo_param1_bgc.F90 :: Define indices for tracer arrays
- mo_param1_bgc (module)
BLOM wiki, © Copyright 2023, BLOM development team. This documentation is licensed under a ShareAlike 4.0 International License. To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/4.0/.