Contact: Bruce Wyman
Reviewers:
Tags/Status
A variety of damping processes are controlled by this module.
The following damping parameterizations are controlled
through this module:
1) Rayleigh damping of momentum fields
2) Namelist control for gravity wave drag.
Rayleigh damping uses the following formula:
d(S)/dt = -D*(S-So)
where S = momentum quantity to be damped (u,v)
D = user defined coefficient
for Rayleigh damping: So = 0.
The damping coefficient D is specified only for the top level.
The value of D decreases hyperbolicly with level.
The following formula is used to determine D at lower levels.
P2(1)-P2(k)
D(k) = D(1) * [ 1. + ----------- ]
P2(1)+P2(k)
P2 = P**2 (pressure squared)
..(1) = value at level 1 (top)
..(k) = value at level k
mg_drag_mod
utilities_mod
diag_manager_mod
time_manager_mod
constants_mod
use damping_driver_mod [, only: damping_driver,
damping_driver_init,
damping_driver_end ]
damping_driver - Called every time step to compute damping terms
and/or call gravity wave drag.
damping_driver_init - Must be called once before damping_driver to
initialize the module, read namelist input, and
to call initialization routines for other
modules used.
damping_driver_end - Called at the end of the model run to terminate
the damping_driver module and other modules used.
Notes:
1) A namelist interface controls runtime options and selects fields
for diagnostics output.
2) No other data files are needed.
call damping_driver ( is, js, Time, delt, pfull, phalf, zfull, zhalf,
u, v, t, q, r, udt, vdt, tdt, qdt, rdt,
[mask, kbot] )
Input
is, js starting i,j indices for the sub-window of the
global grid [integer]
Time current time [time_type]
delt time step in seconds [real]
pfull pressure (in pascals) at full model levels
[real, dimension(:,:,nlev)]
phalf pressure (in pascals) at half model levels
[real, dimension(:,:,nlev+1)]
zfull geopotential height (in meters) at full model levels
[real, dimension(:,:,nlev)]
zhalf geopotential height (in meters) at half model levels
[real, dimension(:,:,nlev+1)]
u, v zonal wind (u) and meridional wind (v) in m/s
[real, dimension(:,:,nlev)]
t, q temperature (t) in deg K, and specific humidity (q)
in kg vapor/kg air
[real, dimension(:,:,nlev)]
r multiple ntrace tracer fields at
full model levels
[real, dimension(:,:,nlev,ntrace)]
Input/Output
udt, vdt tendencies for zonal wind (udt) and meridional
wind (vdt) in m/s2
[real, dimension(:,:,nlev)]
tdt, qdt temperature tendency (tdt) in degK/scc, and specific
humidity tendency (qdt) in kg vapor/kg air/sec.
[real, dimension(:,:,nlev)]
rdt tendency for multiple ntrace tracer fields
[real, dimension(:,:,nlev,ntrace)]
Input (Optional)
mask mask (1. or 0.) for grid boxes above or below
the ground, usually only necessary for the step-mountain
(eta) vertical coordinate [real, dimension(:,:,nlev)]
kbot index of the lowest model level, usually only necessary
for the step-mountain (eta) vertical coordinate
[integer, dimension(:,:)]
----------------------------------------------------------------------
call damping_driver_init (lonb, latb, axes, Time)
input
lonb The longitude in radians of the grid box edges.
[real, dimension(:)]
latb The latitude in radians of the grid box edges.
[real, dimension(:)]
axes The axis indices that are returned by previous calls to
diag_axis_init. The values of this array corresponds to the
x, y, full (p)level, and half (p)level axes. These are the
axes that diagnostic fields are output on.
[integer, dimension(4)]
Time The current time. [time_type]
----------------------------------------------------------------------
call damping_driver_end
There are no arguments to this routine.
&damping_driver_nml
trayfric damping time in seconds for Rayleigh damping of
momentum fields in the top nlev_rayfric layers
(if Trayfric < 0 then time in days)
[real, default: Trayfric=0.]
nlev_rayfric number of levels at the top of the model where
Rayleigh friction of momentum is performed
(if trayfric=0. then nlev_rayfric has no effect)
[integer, default: nlev_rayfric=1]
do_mg_drag flag for mountain gravity wave drag
[logical, default: do_mg_drag=.false.]
do_conserve_energy If TRUE the heating due to the dissipation of kinetic energy
by Rayleigh damping will be computed.
[logical, default: do_conserve_energy=.false.]
Diagnostic fields may be output to a netcdf file by specifying the module name damping and the desired field names (given below) in file diag_table. See the documentation for diag_manager.
Diagnostic fields for module name: damping field name field description ---------- ----------------- udt_rdamp u wind tendency for Rayleigh damping (m/s2) vdt_rdamp u wind tendency for Rayleigh damping (m/s2) tdt_diss_rdamp Dissipative heating from Rayleigh damping (deg_k/s) diss_heat_rdamp Integrated dissipative heating from Rayleigh damping (W/m2) udt_gwd u wind tendency for gravity wave drag (m/s2) vdt_gwd v wind tendency for gravity wave drag (m/s2) tdt_diss_gwd Dissipative heating from gravity wave drag (deg_k/s) diss_heat_gwd Integrated dissipative heating from gravity wave drag (W/m2) taub base flux for gravity wave drag (kg/m/s2) sgsmtn sub-grid scale topography for gravity wave drag (m)
CVS Revision history
Changes prior to CVS version control
Changes (1/24/2000)
* Removed the sponge damping option. This option cannot be considered
column physics. Several namelist variables and diagnostic fields
were removed but the interface argument lists did not chnage.
This option may eventually be added to the dynamical core.
Changes (10/4/1999)
* MPP version created. Minor changes in open_file, error_mesg,
and Fortran write statements. Answers should reproduce the
previous version.
* Implementation of the new MPP diagnostics package.
This required major changes to the diagnostic interface and
the manner in which diagnostics quantities are selected.
There are additional arguments to several interfaces.
* There were no changes made that would cause answers to changes.
damping_driver
damping_driver_init must be called first
None.
There are no known bugs.
None.
Interface and diagnostics for topographic drag will be added.