MARBL_column

MARBL stands for the Marine Biogeochemistry Library; it’s a modular biogeochemical modeling suite for next-generatioon models. It simulates marine ecosystem dynamics and the coupled cycles of carbon, nitrogen, phosphorus, iron, silicon, and oxygen. It is a component of the Community Earth System Model (CESM) and is often coupled to other physical ocean models such as the Modular Ocean Model (MOM6).

For a detailed description of the model, the reader is refered to Long et al., 2021 [1].

The MARBL source code can be downloaded from https://github.com/marbl-ecosys/MARBL. You may also want to read MARBL’s documentation here.

This MARBL-DART interface was developed by Robin Armstrong. Thanks Robin!

Overview

MARBL_column provides an interface between DART and a 1D (column) configuration of MARBL. It’s designed to be used at locations where in-situ data is abundant such as Bermuda Atlantic Time-series Study (BATS) station, Weather Station Mike, Hawaii Ocean Time-series (HOT) … to name a few.

The code is designed to perform 3 kinds of data assimilation (DA) experiments:

  1. State Estimation: where the prognostic state variables of MARBL such as nitrate concerntration are updated. To achive this, you’ll need to set

    estimate_params = .false. within &model_nml in the namelist file input.nml

  2. State and Parameters Estimation: where both the state and a set of model parameters are updated. MARBL has a long list of uncertain model parameters that can be constrained alongside the state. This usually improves the prediction skill of the model and alleviates some of its biases. To achieve this DA exercise, you’ll need to set

    estimate_params = .true.

    The combined DART state will be of the form \(Z_k = \left[ \mathbf{x}_k, \boldsymbol{\theta} \right]^T\) where \(Z_k\) is the joint state, \(\mathbf{x}\) and parameters, \(\boldsymbol{\theta}\) vector at time \(t_k\)

  3. Parameters Estimation only: where only the parameters are constrained using the data. DART will still need to read in the state to construct ensemble covariances and compute innovations. The only difference is that the ensemble increments are only regressed onto the unknown parameters. To achive this goal, you’ll need to set estimate_params = .true. and turn the update status for all state variable to NO_COPY_BACK

    This ensures that the updated state will not be written back to the restart file. The NO_COPY_BACK option is added as the 5th entry in the state table (after the variable name, its associated quantity and its physical bounds) within &model_nml.

Namelist

The &model_nml variables and their default values are listed here:

&model_nml
   state_template_file   = 'MOM.res.nc',
   param_template_file   = 'marbl_params.nc',
   ocean_geometry        = 'ocean_geometry.nc',
   station_location      = -64, 31
   time_step_days        = 1,
   time_step_seconds     = 0,
   model_state_variables = 'NO3      ', 'QTY_NITRATE_CONCENTRATION     ', '0.0', 'NA', 'UPDATE      ',
                           'SiO3     ', 'QTY_DISSOLVED_INORGANIC_SIO3  ', '0.0', 'NA', 'UPDATE      ',
                           'PO4      ', 'QTY_PHOSPHATE_CONCENTRATION   ', '0.0', 'NA', 'UPDATE      ',
                           'Fe       ', 'QTY_DISSOLVED_INORGANIC_IRON  ', '0.0', 'NA', 'UPDATE      ',
                           'DIC      ', 'QTY_DISSOLVED_INORGANIC_CARBON', '0.0', 'NA', 'UPDATE      ',
                           'O2       ', 'QTY_DISSOLVED_OXYGEN          ', '0.0', 'NA', 'UPDATE      ',
                           'DOC      ', 'QTY_DISSOLVED_ORGANIC_CARBON  ', '0.0', 'NA', 'UPDATE      ',
                           'DON      ', 'QTY_DISSOLVED_ORGANIC_NITROGEN', '0.0', 'NA', 'UPDATE      ',
                           'DOP      ', 'QTY_DISSOLVED_ORGANIC_P       ', '0.0', 'NA', 'UPDATE      ',
                           'ALK      ', 'QTY_ALKALINITY                ', '0.0', 'NA', 'UPDATE      ',
                           'microzooC', 'QTY_MICROZOOPLANKTON_CARBON   ', '0.0', 'NA', 'UPDATE      ',
                           'mesozooC ', 'QTY_MESOZOOPLANKTON_CARBON    ', '0.0', 'NA', 'UPDATE      ',
                           'h        ', 'QTY_LAYER_THICKNESS           ', '0.0', 'NA', 'NO_COPY_BACK'
   estimate_params       = .true.
   model_parameters      = 'autotroph_settings(1)%kDOP ', 'QTY_BGC_PARAM', '0.0', 'NA', 'UPDATE'
   /

This namelist provides control over the kind of DA experiment as described abvove.

Item

Type

Description

state_template_file

character(len=256)

MARBL restart file including MARBL’s prognostic variables and other grid information such as the ocean layers. The state variables read from this file are listed in in the model_state_variables

param_template_file

character(len=256)

Template file corresponding to the BGC parameters that we intend to estimate. The parameters read from this file are listed in the model_parameters.

ocean_geometry

character(len=256)

The ocean geometry file is used to read basin_depth

station_location

real(2)

Longitude and latitude of the ocean column location.

time_step_days

integer

The number of days to advance the model for each assimilation.

time_step_seconds

integer

In addition to time_step_days, the number of seconds to advance the model for each assimilation.

model_state_variables

character(:,5)

Strings that associate MARBL variables with a DART quantity. They also describe their physical bounds and whether or not to write the updated values to the restart files. These variables will be read from the MARBL restart file and modified by the assimilation. Some (perhaps all) will be used by the forward observation operators. If the 5th column is UPDATE, the output files will have the modified (assimilated,posterior) values. If the 5th column is NO_COPY_BACK, that variable will not be written to the restart files. The DART diagnostic files will always have the (modified) posterior values. Diagnostic variables that are useful for the calculation of the forward observation operator but have no impact on the forecast trajectory of the model could have a value of NO_COPY_BACK. The 3rd and 4th column list the minimum and maximum allowed values for the updated variables.

estimate_params

logical

A switch to turn on/off parameter estimation.

model_parameters

character(:,5)

Similar to model_state_variables, this is a list of parameters that will take part in the DART state and would possibly get updated.

References