Previous Section Headers
4.3 Adding New Constituents
Adding tracers to the model is achieved by modifying the parameters PCNST
and/or PNATS. PCNST represents the number of advected
constituents transported in the atmosphere whereas PNATS determines
the number of non-advected constituents. CCM3.6 carries one advected constituent
(water vapor) by default, but has the capability of transporting up to
98 additional constituents depending upon available memory. It is important
to realize that any new constituents will act strictly as passive tracers
since there is no feedback mechanism to allow a constituent to affect the
predicted climate. However, certain physical processes within the atmosphere
do affect the transport of a constituent. Currently, no physical parameterizations
act upon non-advected constituents. For example, if the user desires the
added non-advected constituents to be vertically diffused, the appropriate
sections of the vertical diffusion code will have to be modified. Typical
examples of processes that a user may include to influence a new constituent
are:
-
Define surface fluxes and atmospheric source and sinks of the new constituent.
-
Add "adjustment" processes for the constituent.
-
Define a minimum value that the constituent at each grid point should always
be greater than (default is 1x10-12)
For each constituent added by the user, the model will:
-
Create array space and index variables for the new constituents and associated
diagnostics.
-
Advect all user-advected constituents using SLT.
-
Apply vertical diffusion, convective transport and time-filtering to the
user-advected constituents.
-
Write constituent forecasts and associated diagnostics to the primary history
file.
-
Check that the constituent values do not fall below an expected minimum
(e.g. 0.0).
Constituents are input and output as dry mass mixing ratio, whereas within
routines aphys, tphysbc, and tphysac the units
are converted to wet mass mixing ratio.
The model determines index variables for user-added constituents at
startup. In particular, user-advected constituents are given the
indices ixuadv to ixuadv+nusr_adv-1 is an input
namelist variable. Similarly, user non-advected tracers are referenced
by the indices ixunad to ixunad+nusr_nad-1. Both
nusr_adv and nusr_adv are input namelist
variables. All references to these constituents must be made via the
appropriate index into the array q3 in routines
inidat, linemsbc and linemsac or into the
array qm1 in routines below linemsbc and
linemsac. The common block for ixadv and
ixnad is contained in the header file comindx.h.
-
Increase the cpp token PCNST
and/or PNATS (in params.h) by the number of constituents
added.
-
Determine initial values for the new constituents (see below).
-
Modify the code to define surface fluxes and atmospheric sources and sinks
and/or "adjustment" processes for the new constituents (see below).
4.3.1 Initializing New Constituent Data Fields
If new constituents are added, the initial dataset (as indicated by namelist
variable NCDATA) must be altered to include initial constituent
data or routine inidat must be modified to initialize the constituents.
New constituent field data is output to the primary history file by default
(see Table 2.13).
If values for the new constituents are added to the initial dataset,
the field names of the new constituents must match the field names assigned
by the model and initial values must be supplied for every grid point at
the given resolution. Constituent field names are assigned in routine initcom
and saved in array tracnam(PCNST+PNATS). Constituent-related arrays
(tendencies, fluxes, etc.) are stored in common block /comtrcnm/
in header file comtrcnm.h. Since water vapor is a transported
constituent, its field name (Q) occupies the first element of
tracnam. Thus, the field name of the first new constituent will
occupy the second element of tracnam, and so on. A simple naming
convention is used for all new constituents. It consists of two letters
("TR" for advected tracers and "NA" for non-advected
tracers) followed by a two-digit number. Numbering of the tracers starts
at 02 and is incremented by one for each new constituent. For example,
if two advected and two non-advected constituents are added,
their assigned field names would be TR02, TR03, NA04,
and NA05. The field names on the initial dataset must match these
names. Once the initial condition dataset has been created, the model will
read the new constituent data into the proper array space (no new array
space needs to be defined by the user) if the namelist variable READTRACE
is set to TRUE.
Alternatively, the user may opt to initialize the new consituents by
adding new code to routine inidat and setting namelist variable
READTRACE to '.FALSE'. To modify inidat, the
user should locate the if-then-else block located just beyond the
line commented as "C Initialize tracers if not read in from input data."
and change the subsequent code accordingly.
4.3.2 Surface Fluxes, Sources, and Sinks
The user may wish to add surface fluxes
and atmospheric sources and sinks that influence constituent values. Such
code should be added to routine typhsac immediately prior to the
call to vdintr. Surface flux tendencies (Kg/m2/sec)
should be stored in array cflx beginning at cflx(1,ixadv)
for the first user-advected tracer, cflx(1,ixadv+1) for the second
user-advected tracer, cflx(1,ixnad) for the first user non-advected
tracer, cflx(1,ixnad+1) for the second user non-advected tracer,
and so on. The first column of this array, cflx(1,1), is reserved
for the surface flux of water vapor. Sources and sinks should be computed
as tendencies (Kg/Kgair/sec) and stored in array srcsnk,
beginning at srcsnk(1,1,ixadv) and/or srcsnk(1,1,ixnad).
The user should not add these surface fluxes, sources, and sinks to the
constituent fields since the model will do so. The surface flux and source/sink
tendency fields, SFxx and SSxx, are already in the the
Master Field List. The user, however, must insert calls to outfld
within the code (see "Adding New Variables"
) and use the namelist variables PRIMARY and/or AUXF
to obtain these fields on the history files.
4.3.3 Adjustment Processes
Code to perform adjustment physics (other than convective transport) to
the constituents should be inserted within routine aphys. There
is no pre-existing code to do the adjustment.
4.3.4 Global Minima
During a model run, constituent values
may fall below an "expected" minimum. Array qmin(PCNST), set in
initcom and stored in common block /comqmin/, contains
the minimum acceptable value for each advected constituent. The first element
of this array, qmin(1), holds the minimum value for water vapor.
Successive elements hold minimum values for new advected constituents.
qmin is set to 1x10-12 (Kg/Kgair) for water
vapor and to 0.0 for each non-H2O advected constituent (except for one
special case in routine vdiff where qmincg(1)=0.0 is
used as the water vapor minimum). The model compares the advected constituent
values with qmin values in routine qneg3. Any point whose
value falls below the given minimum is reset to the minimum value and a
warning message is printed.
NOTE: When this procedure is invoked, global mass is not
conserved. Also, the default minima may not be appropriate for the
advected constituents specified by the user. The qmin values may
be reset by the user in the routine initcom. In cases where the
model is carrying an advected constituent that is not positive definite
(e.g. potential vorticity), qmin may be set to a large negative
value.
Sub Sections
-
4.3.1 Initializing New Constituent Data Fields
-
-
4.3.2 Surface Fluxes, Sources, and Sinks
-
-
4.3.3 Adjustment Processes
-
-
4.3.4 Global Minima
-
Search page
Questions on these pages can be sent to...
erik@ucar.edu .
$Name: ccm3_6_6_latest3 $ $Revision: 1.40.2.1 $ $Date: 1999/03/25 21:37:29 $ $Author: erik $