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 Variables

integer, parameter sadourny75_energy = 1

Enumeration values for Coriolis_Scheme.

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