DIC Package
-----------

Introduction
~~~~~~~~~~~~

This is one of the biogeochemical packages handled from the pkg gchem.
The main purpose of this package is to consider the cycling of carbon in
the ocean. It also looks at the cycling of phosphorous and potentially
oxygen and iron. There are four standard tracers :math:`DIC`,
:math:`ALK`, :math:`PO4`, :math:`DOP` and also possibly :math:`O2` and
:math:`Fe`. The air-sea exchange of CO\ :math:`_2` and O\ :math:`_2` are
handled as in the OCMIP experiments (reference). The export of
biological matter is computed as a function of available light and
PO\ :math:`_4` (and Fe). This export is remineralized at depth according
to a Martin curve (again, this is the same as in the OCMIP experiments).
There is also a representation of the carbonate flux handled as in the
OCMIP experiments. The air-sea exchange on CO\ :math:`_2` is affected by
temperature, salinity and the pH of the surface waters. The pH is
determined following the method of Follows et al. For more details of
the equations see section [sec:eg-biogeochem\_tutorial].

Key subroutines and parameters
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

| **INITIALIZATION**
| *DIC\_ABIOTIC.h* contains the common block for the parameters and
  fields needed to calculate the air-sea flux of :math:`CO_2` and
  :math:`O_2`. The fixed parameters are set in *dic\_abiotic\_param*
  which is called from *gchem\_init\_fixed.F*. The parameters needed for
  the biotic part of the calculations are initialized in
  *dic\_biotic\_param* and are stored in *DIC\_BIOTIC.h*. The first
  guess of pH is calculated in *dic\_surfforcing\_init.F*.
| 
| **LOADING FIELDS**
| The air-sea exchange of :math:`CO_2` and :math:`O_2` need wind,
  atmospheric pressure (although the current version has this hardwired
  to 1), and sea-ice coverage. The calculation of pH needs silica
  fields. These fields are read in in *dic\_fields\_load.F*. These
  fields are initialized to zero in *dic\_ini\_forcing.F*. The fields
  for interpolating are in common block in *DIC\_LOAD.h*.
| 
| **FORCING**
| The tracers are advected-diffused in *ptracers\_integrate.F*. The
  updated tracers are passed to *dic\_biotic\_forcing.F* where the
  effects of the air-sea exchange and biological activity and
  remineralization are calculated and the tracers are updated for a
  second time. Below we discuss the subroutines called from
  *dic\_biotic\_forcing.F*.

| Air-sea exchange of :math:`CO_2` is calculated in *dic\_surfforcing*.
  Air-Sea Exchange of :math:`CO_2` depends on T,S and pH. The
  determination of pH is done in *carbon\_chem.F*. There are three
  subroutines in this file: *carbon\_coeffs* which determines the
  coefficients for the carbon chemistry equations; *calc\_pco2* which
  calculates the pH using a Newton-Raphson method; and
  *calc\_pco2\_approx* which uses the much more efficient method of
  Follows et al. The latter is hard-wired into this package, the former is
  kept here for completeness.

| Biological productivity is determined following Dutkiewicz et al. (2005)
  and is calculated in *bio\_export.F* The light in each latitude band is
  calculate in *insol.F*, unless using one of the flags listed below. The
  formation of hard tissue (carbonate) is linked to the biological
  productivity and has an effect on the alkalinity - the flux of carbonate
  is calculated in *car\_flux.F*, unless using the flag listed below for
  the Friis et al (2006) scheme. The flux of phosphate to depth where it
  instantly remineralized is calculated in *phos\_flux.F*.

| The dilution or concentration of carbon and alkalinity by the addition
  or subtraction of freshwater is important to their surface patterns.
  These “virtual” fluxes can be calculated by the model in several ways.
  The older scheme is done following OCMIP protocols (see more in
  Dutkiewicz et al 2005), in the subroutines *dic\_surfforcing.F* and
  *alk\_surfforcing.F*. To use this you need to set in
  GCHEM\_OPTIONS.h: #define ALLOW\_OLD\_VIRTUALFLUX. But this can also 
  be done by the ptracers pkg if this is undefined.
  You will then need to set the concentration of the tracer in rainwater
  and potentially a reference tracer value in data.ptracer
  (PTRACERS_EvPrRn, and PTRACERS_ref respectively).

| Oxygen air-sea exchange is calculated in *o2\_surfforcing.F*.

| Iron chemistry (the amount of free iron) is taken care of in
  *fe\_chem.F*.
| 
| **DIAGNOSTICS**
| Averages of air-sea exchanges, biological productivity, carbonate
  activity and pH are calculated. These are initialized to zero in
  *dic\_biotic\_init* and are stored in common block in *DIC\_BIOTIC.h*.
| 
| **COMPILE TIME FLAGS**
| These are set in GCHEM\_OPTIONS.h:
| DIC\_BIOTIC: needs to be set for dic to work properly (should be fixed
  sometime).
| ALLOW\_O2: include the tracer oxygen.
| ALLOW\_FE: include the tracer iron. Note you will need an iron dust
  file set in data.gchem in this case.
| MINFE: limit the iron, assuming precpitation of any excess free iron.
| CAR\_DISS: use the calcium carbonate scheme of Friis et al 2006.
| ALLOW\_OLD\_VIRTUALFLUX: use the old OCMIP style virtual flux for
  alklinity adn carbon (rather than doing it through pkg/ptracers).
| READ\_PAR: read the light (photosynthetically available radiation)
  from a file set in data.gchem.
| USE\_QSW: use the numbers from QSW to be the PAR. Note that a file for
  Qsw must be supplied in data, or Qsw must be supplied by an
  atmospheric model.
| If the above two flags are not set, the model calculates PAR in
  insol.F as a function of latitude and year day.
| USE\_QSW\_UNDERICE: if using a sea ice model, or if the Qsw variable
  has the seaice fraction already taken into account, this flag must be
  set.
| AD\_SAFE: will use a tanh function instead of a max function - this is
  better if using the adjoint
| DIC\_NO\_NEG: will include some failsafes in case any of the variables
  become negative. (This is advicable). ALLOW\_DIC\_COST: was used for
  calculating cost function (but hasn’t been updated or maintained, so
  not sure if it works still)
| 

Do’s and Don’ts
~~~~~~~~~~~~~~~

This package must be run with both ptracers and gchem enabled. It is set
up for at least 4 tracers, but there is the provision for oxygen and
iron. Note the flags above.

Reference Material
~~~~~~~~~~~~~~~~~~

| Dutkiewicz. S., A. Sokolov, J. Scott and P. Stone, 2005: A
  Three-Dimensional Ocean-Seaice-Carbon Cycle Model and its Coupling to
  a Two-Dimensional Atmospheric Model: Uses in Climate Change Studies,
  Report 122, Joint Program of the Science and Policy of Global Change,
  M.I.T., Cambridge, MA.
| Follows, M., T. Ito and S. Dutkiewicz, 2006: A Compact and Accurate
  Carbonate Chemistry Solver for Ocean Biogeochemistry Models. *Ocean
  Modeling*, 12, 290-301.
| Friis, K., R. Najjar, M.J. Follows, and S. Dutkiewicz, 2006: Possible
  overestimation of shallow-depth calcium carbonate dissolution in the
  ocean, *Global Biogeochemical Cycles*, 20, GB4019,
  doi:10.1029/2006GB002727.

Experiments and tutorials that use dic
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

-  Global Ocean tutorial, in tutorial\_global\_oce\_biogeo verification
   directory, described in section [sec:eg-biogeochem\_tutorial]
