Skip to content

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