namespace mom_kappa_shear

Overview

Shear-dependent mixing following Jackson et al. 2008. More…

namespace mom_kappa_shear {

// global functions

subroutine, public calculate_kappa_shear(
    u_in u_in,
    v_in v_in,
    h h,
    tv tv,
    p_surf p_surf,
    kappa_io kappa_io,
    tke_io tke_io,
    kv_io kv_io,
    dt dt,
    G G,
    GV GV,
    US US,
    CS CS,
    initialize_all initialize_all
    );

subroutine, public calc_kappa_shear_vertex(
    u_in u_in,
    v_in v_in,
    h h,
    T_in T_in,
    S_in S_in,
    tv tv,
    p_surf p_surf,
    kappa_io kappa_io,
    tke_io tke_io,
    kv_io kv_io,
    dt dt,
    G G,
    GV GV,
    US US,
    CS CS,
    initialize_all initialize_all
    );

logical function, public kappa_shear_init(
    Time Time,
    G G,
    GV GV,
    US US,
    param_file param_file,
    diag diag,
    CS CS
    );

logical function, public kappa_shear_is_used(param_file param_file);
logical function, public kappa_shear_at_vertex(param_file param_file);

} // namespace mom_kappa_shear

Detailed Documentation

Shear-dependent mixing following Jackson et al. 2008.

By Laura Jackson and Robert Hallberg, 2006-2008

This file contains the subroutines that determine the diapycnal diffusivity driven by resolved shears, as specified by the parameterizations described in Jackson and Hallberg (JPO, 2008).

The technique by which the 6 equations (for kappa, TKE, u, v, T, and S) are solved simultaneously has been dramatically revised from the previous version. The previous version was not converging in some cases, especially near the surface mixed layer, while the revised version does. The revised version solves for kappa and TKE with shear and stratification fixed, then marches the density and velocities forward with an adaptive (and aggressive) time step in a predictor-corrector-corrector emulation of a trapezoidal scheme. Run-time-settable parameters determine the tolerence to which the kappa and TKE equations are solved and the minimum time step that can be taken.

Global Functions

subroutine, public calculate_kappa_shear(
    u_in u_in,
    v_in v_in,
    h h,
    tv tv,
    p_surf p_surf,
    kappa_io kappa_io,
    tke_io tke_io,
    kv_io kv_io,
    dt dt,
    G G,
    GV GV,
    US US,
    CS CS,
    initialize_all initialize_all
    )

Subroutine for calculating shear-driven diffusivity and TKE in tracer columns.

Parameters:

g

The ocean’s grid structure.

gv

The ocean’s vertical grid structure.

us

A dimensional unit scaling type

u_in

Initial zonal velocity [L T-1 ~> m s-1].

v_in

Initial meridional velocity [L T-1 ~> m s-1].

h

Layer thicknesses [H ~> m or kg m-2].

tv

A structure containing pointers to any available thermodynamic fields. Absent fields have NULL ptrs.

p_surf

The pressure at the ocean surface [Pa] (or NULL).

kappa_io

The diapycnal diffusivity at each interface

tke_io

The turbulent kinetic energy per unit mass at

kv_io

The vertical viscosity at each interface

dt

Time increment [T ~> s].

cs

The control structure returned by a previous call to kappa_shear_init.

initialize_all

If present and false, the previous value of kappa is used to start the iterations

subroutine, public calc_kappa_shear_vertex(
    u_in u_in,
    v_in v_in,
    h h,
    T_in T_in,
    S_in S_in,
    tv tv,
    p_surf p_surf,
    kappa_io kappa_io,
    tke_io tke_io,
    kv_io kv_io,
    dt dt,
    G G,
    GV GV,
    US US,
    CS CS,
    initialize_all initialize_all
    )

Subroutine for calculating shear-driven diffusivity and TKE in corner columns.

Parameters:

g

The ocean’s grid structure.

gv

The ocean’s vertical grid structure.

us

A dimensional unit scaling type

u_in

Initial zonal velocity [L T-1 ~> m s-1].

v_in

Initial meridional velocity [L T-1 ~> m s-1].

h

Layer thicknesses [H ~> m or kg m-2].

t_in

Layer potential temperatures [degC]

s_in

Layer salinities in ppt.

tv

A structure containing pointers to any available thermodynamic fields. Absent fields have NULL ptrs.

p_surf

The pressure at the ocean surface [Pa] (or NULL).

kappa_io

The diapycnal diffusivity at each interface

tke_io

The turbulent kinetic energy per unit mass at

kv_io

The vertical viscosity at each interface [Z2 T-1 ~> m2 s-1].

dt

Time increment [T ~> s].

cs

The control structure returned by a previous call to kappa_shear_init.

initialize_all

If present and false, the previous value of kappa is used to start the iterations

logical function, public kappa_shear_init(
    Time Time,
    G G,
    GV GV,
    US US,
    param_file param_file,
    diag diag,
    CS CS
    )

This subroutineinitializesthe parameters that regulate shear-driven mixing.

Parameters:

time

The current model time.

g

The ocean’s grid structure.

gv

The ocean’s vertical grid structure.

us

A dimensional unit scaling type

param_file

A structure to parse for run-time parameters.

diag

A structure that is used to regulate diagnostic output.

cs

A pointer that is set to point to the control structure for this module

Returns:

True if module is to be used, False otherwise

logical function, public kappa_shear_is_used(param_file param_file)

This function indicates to other modules whether the Jackson et al shear mixing parameterization will be used without needing to duplicate the log entry.

Parameters:

param_file

A structure to parse for run-time parameters

logical function, public kappa_shear_at_vertex(param_file param_file)

This function indicates to other modules whether the Jackson et al shear mixing parameterization will be used without needing to duplicate the log entry.

Parameters:

param_file

A structure to parse for run-time parameters