| 1 |
\subsection {GCHEM Package} |
| 2 |
\label{sec:pkg:gchem} |
| 3 |
\begin{rawhtml} |
| 4 |
<!-- CMIREDIR:package_gchem: --> |
| 5 |
\end{rawhtml} |
| 6 |
|
| 7 |
\subsubsection {Introduction} |
| 8 |
This package has been developed as interface to the PTRACERS package. |
| 9 |
The purpose is to provide a structure where various (any) |
| 10 |
tracer experiments can be added to the code. |
| 11 |
For instance there are placeholders for routines |
| 12 |
to read in parameters needed for any tracer experiments, a routine |
| 13 |
to read in extra fields required for the tracer code, routines |
| 14 |
for either external forcing or internal interactions between tracers |
| 15 |
and routines for additional diagnostics relating to the tracers. |
| 16 |
Note that the gchem package itself is only a means to call |
| 17 |
the subroutines used by specific biogeochemical experiments, |
| 18 |
and does not "do" anything on its own. |
| 19 |
|
| 20 |
There are two examples: cfc which looks at 2 tracers with a |
| 21 |
simple external forcing and dic with 5 tracers whose tendency terms |
| 22 |
are related to one another. We will discuss these here only as |
| 23 |
how they provide examples to use this package. |
| 24 |
|
| 25 |
|
| 26 |
\subsubsection {Key subroutines and parameters} |
| 27 |
|
| 28 |
\noindent |
| 29 |
{{\bf FRAMEWORK}} \\ |
| 30 |
{\it GCHEM\_OPTIONS.h} includes the compiler options to be used |
| 31 |
in any experiment. For instance \#define ALLOW\_CFC allows |
| 32 |
the CFC code to be run. An important compiler option is |
| 33 |
\#define GCHEM\_SEPARATE\_FORCING which determined |
| 34 |
how and when the tracer forcing is applied (see discussion |
| 35 |
on Forcing below). |
| 36 |
There are further runtime parameters |
| 37 |
set in {\it data.gchem} and kept in common block {\it GCHEM.h}. |
| 38 |
These runtime options include:\\ |
| 39 |
$\bullet$ {\bf tIter0} which is the integer timestep when the tracer experiment |
| 40 |
is initialized. If {\bf nIter0} $=$ {\bf tIter0} then the tracers |
| 41 |
are initialized to zero or from initial files. If {\bf nIter0} $>$ |
| 42 |
{\bf tIter0} then tracers (and previous timestep tendency terms) |
| 43 |
are read in from a the ptracers pickup file. Note that tracers |
| 44 |
of zeros will be carried around if {\bf nIter0} $<$ {\bf tIter0}. |
| 45 |
\\ |
| 46 |
$\bullet$ {\bf nsubtime} is the integer number of extra timesteps |
| 47 |
required by the tracer experiment. This will give a timestep |
| 48 |
of {\bf deltaTtracer}$/${\bf nsubtime} for the dependencies |
| 49 |
between tracers. The default is one. |
| 50 |
\\ |
| 51 |
$\bullet$ File names - these are several filenames than can be read in |
| 52 |
for external fields needed in the tracer forcing - for instance |
| 53 |
wind speed is needed in both DIC and CFC packages to calculate |
| 54 |
the air-sea exchange of gases. Not all file names will be used |
| 55 |
for every tracer experiment. |
| 56 |
|
| 57 |
\vspace{.5cm} |
| 58 |
|
| 59 |
\noindent |
| 60 |
{{\bf INITIALIZATION}}\\ |
| 61 |
The values set at runtime in data.gchem are read in |
| 62 |
using {\it gchem\_readparms.F} which is called from |
| 63 |
packages\_readparms.F. This will include any external |
| 64 |
forcing files that will be needed by the tracer experiment. |
| 65 |
|
| 66 |
There are two routine used to initialize parameters and fields |
| 67 |
needed by the experiment packages. These are |
| 68 |
{\it gchem\_init\_fixed.F} which is called from \textit{packages\_init\_fixed.F}, and |
| 69 |
{\it gchem\_init\_vari.F} called from |
| 70 |
packages\_init\_variable.F. The first should |
| 71 |
be used to call a subroutine specific to the tracer experiment |
| 72 |
which sets fixed parameters, the second should call a subroutine |
| 73 |
specific to the tracer experiment |
| 74 |
which sets (or initializes) time fields that will vary with time. |
| 75 |
|
| 76 |
\vspace{.5cm} |
| 77 |
|
| 78 |
|
| 79 |
\noindent |
| 80 |
{{\bf LOADING FIELDS}}\\ |
| 81 |
External forcing fields used by the tracer experiment are read |
| 82 |
in by a subroutine (specific to the tracer experiment) called from |
| 83 |
{\it gchem\_fields\_load.F}. This latter is called from \textit{forward\_step.F}. |
| 84 |
|
| 85 |
\vspace{.5cm} |
| 86 |
|
| 87 |
|
| 88 |
\noindent |
| 89 |
{{\bf FORCING}}\\ |
| 90 |
Tracer fields are advected-and-diffused by the ptracer package. |
| 91 |
Additional changes (e.g. surface forcing or interactions |
| 92 |
between tracers) to these fields are taken care of by the gchem |
| 93 |
interface. For tracers that are essentially passive (e.g. CFC's) |
| 94 |
but may have some surface boundary conditions |
| 95 |
this can easily be done within the regular tracer timestep. In this case |
| 96 |
{\it gchem\_calc\_tendency.F} is called from {\it forward\_step.F}, where the |
| 97 |
reactive (as opposed to the advective diffusive) tendencies are computed. |
| 98 |
These tendencies, stored on the 3D field \textbf{gchemTendency}, are added to |
| 99 |
the passive tracer tendencies \textbf{gPtr} in {\it gchem\_add\_tendency.F}, |
| 100 |
which is called from {\it ptracers\_forcing.F}. |
| 101 |
For tracers with more complicated dependencies on each other, |
| 102 |
and especially tracers which require a smaller timestep than |
| 103 |
deltaTtracer, it will be easier to use {\it gchem\_forcing\_sep.F} |
| 104 |
which is called from forward\_step.F. There is a |
| 105 |
compiler option set in {\it GCHEM\_OPTIONS.h} that determines |
| 106 |
which method is used: \#define GCHEM\_SEPARATE\_FORCING |
| 107 |
does the latter where tracers are forced separately from the |
| 108 |
advection-diffusion code, and \#undef GCHEM\_SEPARATE\_FORCING |
| 109 |
includes the forcing in the regular timestepping. |
| 110 |
|
| 111 |
\vspace{.5cm} |
| 112 |
|
| 113 |
\noindent |
| 114 |
{{\bf DIAGNOSTICS}}\\ |
| 115 |
This package also also used the passive tracer routine {\it ptracers\_monitor.F} |
| 116 |
which prints out tracer statistics |
| 117 |
as often as the model dynamic statistic diagnostics (dynsys) are written (or |
| 118 |
as prescribed by the runtime flag \textbf{PTRACERS\_monitorFreq}, set in {\it data.ptracers}). |
| 119 |
There is also a placeholder for any tracer experiment |
| 120 |
specific diagnostics to be calculated and printed to files. |
| 121 |
This is done in {\it gchem\_diags.F}. For instance the time average CO2 |
| 122 |
air-sea fluxes, and sea surface pH (among others) are written |
| 123 |
out by {\it dic\_biotic\_diags.F} which is called from {\it gchem\_diags.F}. |
| 124 |
|
| 125 |
\subsubsection{GCHEM Diagnostics} |
| 126 |
\label{sec:pkg:gchem:diagnostics} |
| 127 |
|
| 128 |
{\footnotesize |
| 129 |
\begin{verbatim} |
| 130 |
|
| 131 |
------------------------------------------------------------------------ |
| 132 |
<-Name->|Levs|<-parsing code->|<-- Units -->|<- Tile (max=80c) |
| 133 |
------------------------------------------------------------------------ |
| 134 |
DICBIOA | 15 |SM P MR |mol/m3/sec |Biological Productivity (mol/m3/s) |
| 135 |
DICCARB | 15 |SM P MR |mol eq/m3/sec |Carbonate chg-biol prod and remin (mol eq/m3/s) |
| 136 |
DICTFLX | 1 |SM P L1 |mol/m3/sec |Tendency of DIC due to air-sea exch (mol/m3/s) |
| 137 |
DICOFLX | 1 |SM P L1 |mol/m3/sec |Tendency of O2 due to air-sea exch (mol/m3/s) |
| 138 |
DICCFLX | 1 |SM P L1 |mol/m2/sec |Flux of CO2 - air-sea exch (mol/m2/s) |
| 139 |
DICPCO2 | 1 |SM P M1 |atm |Partial Pressure of CO2 (atm) |
| 140 |
DICPHAV | 1 |SM P M1 |dimensionless |pH (dimensionless) |
| 141 |
\end{verbatim} |
| 142 |
} |
| 143 |
|
| 144 |
\subsubsection{Do's and Don'ts} |
| 145 |
|
| 146 |
The pkg ptracer is required with use with this pkg. Also, as usual, the |
| 147 |
runtime flag \textbf{useGCHEM} must be set to \textbf{.TRUE.} in \textbf{data.pkg}. |
| 148 |
By itself, gchem pkg will read in \textbf{data.gchem} and will |
| 149 |
write out gchem diagnostics. It requires tracer experiment |
| 150 |
specific calls to do anything else (for instance the calls |
| 151 |
to dic and cfc pkgs). |
| 152 |
|
| 153 |
\subsubsection{Reference Material} |
| 154 |
|
| 155 |
\subsubsection{Experiments and tutorials that use gchem} |
| 156 |
\label{sec:pkg:gchem:experiments} |
| 157 |
|
| 158 |
\begin{itemize} |
| 159 |
\item{Global Ocean tutorial, in tutorial\_global\_oce\_biogeo verification directory, |
| 160 |
described in section \ref{sect:eg-biogeochem_tutorial} } |
| 161 |
\end{itemize} |
| 162 |
|