PUBLIC ROUTINES
call vert_diff_driver_init ( Surf_diff, idim, jdim, kdim, axes, Time )
input
idim number of longitude grid boxes for a global field
[integer]
jdim number of latitude grid boxes for a global field
[integer]
kdim number of vertical levels [integer]
axes axes id numbers (used for diagnostic output)
[integer, dimension(4)]
Time Initial model time [type(time_type)]
output
Surf_diff Coefficients of the matrices of implicit vertical diffusion
of heat and moisture. [type(surf_diff_type)]
notes
A 3-dimensional global field would have dimension(idim,jdim,kdim).
--------------------------------------------------------------------
call vert_diff_driver_down ( is, js, Time, delt, p_half, p_full,
z_full, diff_mom, diff_heat,
u, v, t, q, trs,
dtau_dv, tau_x, tau_y,
dt_u, dt_v, dt_t, dt_q, dt_trs,
Surf_diff, mask, kbot )
input
is, js The starting horizonal indices of the rectangular sub-window
being processed by this call to vert_diff_down. The ending
indices are determined by the size of the array arguments.
[integer]
Time Current model time
[type(time_type)]
delt time step in seconds [real]
p_half Pressure at half model levels in pascals.
[real, dimension(:,:,nlev+1)]
p_full Pressure at full model levels in pascals.
[real, dimension(:,:,nlev)]
z_full Height at full levels in meters.
[real, dimension(:,:,nlev)]
diff_mom diffusion coefficients for momentum at half model levels
(excluding the surface) in m/sec2
[real, dimension(:,:,nlev)]
diff_heat diffusion coefficients for heat, moisture, and tracers
at half model levels in m/sec2
[real, dimension(:,:,nlev)]
u zonal wind
[real, dimension(:,:,nlev)]
v meridional wind
[real, dimension(:,:,nlev)]
t temperature
[real, dimension(:,:,nlev)]
q specific humidity
[real, dimension(:,:,nlev)]
trs arbitrary number of tracers at full levels
[real, dimension(:,:,nlev,:)]
dtau_dv derivative of wind stress w.r.t. wind speed at the lowest
model level [real, dimension(:,:)]
input/output
tau_x zonal wind stress in pascals
[real, dimension(:,:)]
tau_y meridional wind stress in pascals
[real, dimension(:,:)]
dt_u, dt_v tendencies for zonal and meridional momentum components at
full levels in m/s2 [real, dimension(:,:,nlev)]
dt_t, dt_q tendencies for temperature (deg k/s) and specific humidity
(kg/kg/s) at full levels, note that these tendencies have not
been fully updated for the vertical diffusion contribution,
that will be done in vert_diff_up
[real, dimension(:,:,nlev)]
dt_trs tendencies for arbitrary number of tracers at full levels
[real, dimension(:,:,nlev,:)]
output
Surf_diff Coefficients of the matrices of implicit vertical diffusion
of heat and moisture. [type(surf_diff_type)]
input (optional for the step-mountain/eta coordinate)
mask underground mask (0.=below ground, 1.=above ground)
[real, dimension(:,:,nlev)]
kbot the lowest model level above ground
[integer, dimension(:,:)]
Notes
The tendencies for momentum (dt_u, dt_v) and tracers (dt_trs) are
updated for the full vertical diffusion tendency.
The tendencies for temperature (dt_t) and specific humidity (dt_q)
have only been modified for the downward sweep of the tridiagonal
elimination solver. These tendencies will be fully updated after
the call to routine vert_diff_up.
--------------------------------------------------------------------
call vert_diff_driver_up ( is, js, Time, delt, p_half, Surf_diff,
dt_t, dt_q, mask, kbot )
input
is, js The starting horizonal indices of the rectangular sub-window
being processed by this call to vert_diff_up. The ending
indices are determined by the size of the array arguments.
[integer]
Time Current model time.
[type(time_type)]
delt time step in seconds [real]
p_half The pressure at half model levels in pascals.
[real, dimension(:,:,nlev+1)]
Surf_diff Coefficients of the matrices of implicit vertical diffusion
of heat and moisture. [type(surf_diff_type)]
input/output
dt_t, dt_q Tendencies for temperature (deg k/s) and specific humidity
(kg/kg/s) at full levels [real, dimension(:,:,nlev)]
input (optional for the step-mountain/eta coordinate)
mask underground mask (0.=below ground, 1.=above ground)
[real, dimension(:,:,nlev)]
kbot the lowest model level above ground
[integer, dimension(:,:)]
----------------------------------------------------------------------
call vert_diff_driver_end