namespace mom_coriolisadv¶
Overview¶
Accelerations due to the Coriolis force and momentum advection. More…
namespace mom_coriolisadv { // global variables integer, parameter sadourny75_energy = 1; // global functions subroutine, public coradcalc( u u, v v, h h, uh uh, vh vh, CAu CAu, CAv CAv, OBC OBC, AD AD, G G, GV GV, US US, CS CS ); subroutine, public coriolisadv_init( Time Time, G G, GV GV, US US, param_file param_file, diag diag, AD AD, CS CS ); subroutine, public coriolisadv_end(CS CS); } // namespace mom_coriolisadv
Detailed Documentation¶
Accelerations due to the Coriolis force and momentum advection.
This file contains the subroutine that calculates the time derivatives of the velocities due to Coriolis acceleration and momentum advection. This subroutine uses either a vorticity advection scheme from Arakawa and Hsu, Mon. Wea. Rev. 1990, or Sadourny’s (JAS 1975) energy conserving scheme. Both have been modified to use general orthogonal coordinates as described in Arakawa and Lamb, Mon. Wea. Rev. 1981. Both schemes are second order accurate, and allow for vanishingly small layer thicknesses. The Arakawa and Hsu scheme globally conserves both total energy and potential enstrophy in the limit of nondivergent flow. Sadourny’s energy conserving scheme conserves energy if the flow is nondivergent or centered difference thickness fluxes are used.
Two sets of boundary conditions have been coded in the definition of relative vorticity. These are written as: NOSLIP defined (in spherical coordinates): relvort = dv/dx (east & west), with v = 0. relvort = -sec(Q) * d(u cos(Q))/dy (north & south), with u = 0.
NOSLIP not defined (free slip): relvort = 0 (all boundaries)
with Q temporarily defined as latitude. The free slip boundary condition is much more natural on a C-grid.
- A small fragment of the grid is shown below: j+1 x ^ x ^ x At x: q, CoriolisBu
j+1 > o > o > At ^: v, CAv, vh j x ^ x ^ x At >: u, CAu, uh, a, b, c, d j > o > o > At o: h, KE j-1 x ^ x ^ x
- i-1 i i+1 At x & ^:
i i+1 At > & o:
The boundaries always run through q grid points (x).
Global Functions¶
subroutine, public coradcalc( u u, v v, h h, uh uh, vh vh, CAu CAu, CAv CAv, OBC OBC, AD AD, G G, GV GV, US US, CS CS )
Calculates the Coriolis and momentum advection contributions to the acceleration.
Parameters:
g |
Ocen grid structure |
gv |
Vertical grid structure |
u |
Zonal velocity [L T-1 ~> m s-1] |
v |
Meridional velocity [L T-1 ~> m s-1] |
h |
Layer thickness [H ~> m or kg m-2] |
uh |
Zonal transport u*h*dy [H L2 T-1 ~> m3 s-1 or kg s-1] |
vh |
Meridional transport v*h*dx [H L2 T-1 ~> m3 s-1 or kg s-1] |
cau |
Zonal acceleration due to Coriolis and momentum advection [L T-2 ~> m s-2]. |
cav |
Meridional acceleration due to Coriolis and momentum advection [L T-2 ~> m s-2]. |
obc |
Open boundary control structure |
ad |
Storage for acceleration diagnostics |
us |
A dimensional unit scaling type |
cs |
Control structure for MOM_CoriolisAdv |
subroutine, public coriolisadv_init( Time Time, G G, GV GV, US US, param_file param_file, diag diag, AD AD, CS CS )
Initializes the control structure for coriolisadv_cs.
Parameters:
time |
Current model time |
g |
Ocean grid structure |
gv |
Vertical grid structure |
us |
A dimensional unit scaling type |
param_file |
Runtime parameter handles |
diag |
Diagnostics control structure |
ad |
Strorage for acceleration diagnostics |
cs |
Control structure fro MOM_CoriolisAdv |
subroutine, public coriolisadv_end(CS CS)
Destructor for coriolisadv_cs.
Parameters:
cs |
Control structure fro MOM_CoriolisAdv |