c_sw
CGridShallowWaterDynamics
Fortran name is c_sw
delpc = quantity_factory.zeros([X_DIM, Y_DIM, Z_DIM], units='unknown', dtype=Float)
instance-attribute
pressure thickness on c-grid forward step
ptc = quantity_factory.zeros([X_DIM, Y_DIM, Z_DIM], units='unknown', dtype=Float)
instance-attribute
potential temperature on c-grid forward step
__call__(delp, pt, u, v, w, uc, vc, ua, va, ut, vt, divgd, omga, dt2)
C-grid shallow water routine. Advances C-grid winds by half a time step.
Also advances delp and pt half a timestep, get computed in order to compute the pressure gradient force, since we need that on the half-step for D_SW.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
delp
|
in
|
D-grid vertical delta in pressure |
required |
pt
|
inout
|
D-grid potential temperature (only halos get updated) |
required |
u
|
in
|
D-grid x-velocity |
required |
v
|
in
|
D-grid y-velocity |
required |
w
|
in
|
vertical velocity |
required |
uc
|
inout
|
C-grid x-velocity |
required |
vc
|
inout
|
C-grid y-velocity |
required |
ua
|
inout
|
A-grid x-velocity |
required |
va
|
inout
|
A-grid y-velocity |
required |
ut
|
out
|
u * dx |
required |
vt
|
out
|
v * dy |
required |
divgd
|
out
|
D-grid horizontal divergence Computed in order to damp the divergence, the damping is applied at the end of d_sw directly to the winds |
required |
omga
|
out
|
Vertical pressure velocity |
required |
dt2
|
in
|
Half a model timestep in seconds |
required |
absolute_vorticity(vort, fC, rarea_c)
Parameters:
Name | Type | Description | Default |
---|---|---|---|
vort
|
out
|
absolute vorticity |
required |
fC
|
in
|
|
required |
rarea_c
|
in
|
|
required |
circulation_cgrid(uc, vc, dxc, dyc, vort_c)
Diagnostically compute vort_c.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
uc
|
in
|
x-velocity on C-grid |
required |
vc
|
in
|
y-velocity on C-grid |
required |
dxc
|
in
|
grid spacing in x-dir |
required |
dyc
|
in
|
grid spacing in y-dir |
required |
vort_c
|
out
|
C-grid relative vorticity |
required |
compute_nonhydrostatic_fluxes_x(delp, pt, utc, w, fx, fx1, fx2)
Computes scalar fluxes Args: delp (in): pt (in): utc (in): metric and wind speed term of the first-order upwind flux w (in): fx (out): heat (entropy) flux, first-order upwind flux of delp in units per second fx1 (out): first-order upwind flux of delp in units per second fx2 (out): flux of vertical momentum, first-order upwind flux of w in units per second
divergence_corner(u, v, ua, va, dxc, dyc, sin_sg1, sin_sg2, sin_sg3, sin_sg4, cos_sg1, cos_sg2, cos_sg3, cos_sg4, rarea_c, divg_d)
Calculate divg on d-grid.
Computed in order to damp the divergence, the damping is applied at the end of d_sw directly to the winds.
Described in detail in Chapter 8.3 of the FV3 documentation.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
u
|
in
|
x-velocity on d-grid |
required |
v
|
in
|
y-velocity on d-grid |
required |
ua
|
in
|
x-velocity on a |
required |
va
|
in
|
y-velocity on a |
required |
dxc
|
in
|
grid spacing in x-direction |
required |
dyc
|
in
|
grid spacing in y-direction |
required |
sin_sg1
|
in
|
grid sin(sg1) |
required |
sin_sg2
|
in
|
grid sin(sg2) |
required |
sin_sg3
|
in
|
grid sin(sg3) |
required |
sin_sg4
|
in
|
grid sin(sg4) |
required |
cos_sg1
|
in
|
grid cos(sg1) |
required |
cos_sg2
|
in
|
grid cos(sg2) |
required |
cos_sg3
|
in
|
grid cos(sg3) |
required |
cos_sg4
|
in
|
grid cos(sg4) |
required |
rarea_c
|
in
|
inverse cell areas on c-grid |
required |
divg_d
|
out
|
divergence on d-grid (cell corners) |
required |
fill_corners_delp_pt_w(delp_in, pt_in, w_in, delp_out, pt_out, w_out)
Parameters:
Name | Type | Description | Default |
---|---|---|---|
delp_in
|
in
|
|
required |
pt_in
|
in
|
|
required |
w_in
|
in
|
|
required |
delp_out
|
out
|
|
required |
pt_out
|
out
|
|
required |
w_out
|
out
|
|
required |
geoadjust_ut(ut, dy, sin_sg3, sin_sg1, dt2)
take c-grid contravariant wind to compute the 1st order upwind flux Args: ut (out): c-grid contravariant u * dx as input, as output includes metric terms (dt2dysin_sg) needed to compute fluxes, "volume flux" (?) dy (in): sin_sg3 (in): sin_sg1 (in): dt2 (in):
geoadjust_vt(vt, dx, sin_sg4, sin_sg2, dt2)
Parameters:
Name | Type | Description | Default |
---|---|---|---|
vt
|
out
|
|
required |
dx
|
in
|
|
required |
sin_sg4
|
in
|
|
required |
sin_sg2
|
in
|
|
required |
dt2
|
in
|
|
required |
transportdelp_update_vorticity_and_kineticenergy(delp, pt, utc, vtc, w, rarea, delpc, ptc, wc, ke, vort, ua, va, uc, vc, u, v, fx, fx1, fx2, sin_sg1, cos_sg1, sin_sg2, cos_sg2, sin_sg3, cos_sg3, sin_sg4, cos_sg4, dt2)
Transport delp then update vorticity and kinetic energy
steps delpc, ptc, wc. Diagnostically computes ke, vorticity for the start of the timestep
Parameters:
Name | Type | Description | Default |
---|---|---|---|
delp
|
in
|
what is transported |
required |
pt
|
in
|
pressure |
required |
utc
|
???
|
x-velocity on C-grid |
required |
vtc
|
in
|
y-velocity on C-grid |
required |
w
|
in
|
z-velocity on C-grid |
required |
rarea
|
in
|
inverse gridcell area |
required |
delpc
|
out
|
updated delp |
required |
ptc
|
out
|
updated pt |
required |
wc
|
out
|
updated w |
required |
ke
|
out
|
kinetic energy, computed with an upstream bias to avoid an instability |
required |
vort
|
out
|
vorticity |
required |
ua
|
in
|
u wind on A-grid |
required |
va
|
in
|
v wind on A-grid |
required |
uc
|
in
|
u wind on C-grid |
required |
vc
|
in
|
v wind on C-grid |
required |
u
|
in
|
u wind on D-grid |
required |
v
|
in
|
v wind on D-grid |
required |
fx
|
in
|
|
required |
fx1
|
in
|
|
required |
fx2
|
in
|
|
required |
sin_sg1
|
in
|
|
required |
cos_sg1
|
in
|
|
required |
sin_sg2
|
in
|
|
required |
cos_sg2
|
in
|
|
required |
sin_sg3
|
in
|
|
required |
cos_sg3
|
in
|
|
required |
sin_sg4
|
in
|
|
required |
cos_sg4
|
in
|
|
required |
dt2
|
in
|
length of half a timestep |
required |
update_x_velocity(vorticity, ke, velocity, velocity_c, cosa, sina, rdxc, dt2)
Parameters:
Name | Type | Description | Default |
---|---|---|---|
vorticity
|
in
|
|
required |
ke
|
in
|
|
required |
velocity
|
in
|
|
required |
velocity_c
|
out
|
|
required |
cosa
|
in
|
|
required |
sina
|
in
|
|
required |
rdxc
|
in
|
|
required |
update_y_velocity(vorticity, ke, velocity, velocity_c, cosa, sina, rdyc, dt2)
Parameters:
Name | Type | Description | Default |
---|---|---|---|
vorticity
|
in
|
absolute vorticity |
required |
ke
|
in
|
|
required |
velocity
|
in
|
|
required |
velocity_c
|
out
|
velocity update in y-direction |
required |
cosa
|
in
|
|
required |
sina
|
in
|
|
required |
rdyc
|
in
|
|
required |
zero_delpc_ptc(delpc, ptc)
Parameters:
Name | Type | Description | Default |
---|---|---|---|
delpc
|
out
|
|
required |
ptc
|
out
|
|
required |