mom_zanna_bolton module reference¶
<undocumented>
Data Types¶
Control structure for Zanna-Bolton-2020 parameterization. |
Functions/Subroutines¶
Read parameters and register output fields used in Zanna_Bolton_2020(). |
|
Baroclinic Zanna-Bolton-2020 parameterization, see eq. |
|
Filter which is used to smooth velocity gradient tensor or the stress tensor. |
|
One iteration of 3x3 filter [1 2 1; 2 4 2; 1 2 1]/16 removing chess-harmonic. |
|
Returns min and max values of array across all PEs. |
|
Computes mask of wet points in T (CENTER) and q (CORNER) points. |
|
Computes the 3D energy source term for the ZB2020 scheme similarly to |
Detailed Description¶
<undocumented>
Type Documentation¶
-
type
mom_zanna_bolton/
zb2020_cs
¶ Control structure for Zanna-Bolton-2020 parameterization.
- Type fields:
%
id_zb2020u
[integer] :: Diagnostic handles.%
id_zb2020v
[integer] :: Diagnostic handles.%
id_ke_zb2020
[integer] :: Diagnostic handles.%
id_maskt
[integer] :: Diagnostic handles.%
id_maskq
[integer] :: Diagnostic handles.%
id_s_11
[integer] :: Diagnostic handles.%
id_s_22
[integer] :: Diagnostic handles.%
id_s_12
[integer] :: Diagnostic handles.%
amplitude
[real] :: The nondimensional scaling factor in ZB model, typically 0.1 - 10 [nondim].%
zb_type
[integer] :: Select how to compute the trace part of ZB model: 0 - both deviatoric and trace components are computed 1 - only deviatoric component is computed 2 - only trace component is computed.%
zb_cons
[integer] :: Select a discretization scheme for ZB model 0 - non-conservative scheme 1 - conservative scheme for deviatoric component.%
lpf_iter
[integer] :: Number of smoothing passes for the Velocity Gradient (VG) components in ZB model.%
lpf_order
[integer] :: The scale selectivity of the smoothing filter 1 - Laplacian filter 2 - Bilaplacian filter.%
hpf_iter
[integer] :: Number of sharpening passes for the Velocity Gradient (VG) components in ZB model.%
hpf_order
[integer] :: The scale selectivity of the sharpening filter 1 - Laplacian filter 2 - Bilaplacian filter.%
stress_iter
[integer] :: Number of smoothing passes for the Stress tensor components in ZB model.%
stress_order
[integer] :: The scale selectivity of the smoothing filter 1 - Laplacian filter 2 - Bilaplacian filter.%
ssd_iter
[integer] :: Hyperviscosity parameter. Defines the number of sharpening passes in Laplacian viscosity model: -1: hyperviscosity is off 0: Laplacian viscosity 9: (Laplacian)^10 viscosity, …%
ssd_bound_coef
[real] :: The non-dimensional damping coefficient of the grid harmonic by hyperviscous dissipation: 0.0: no damping 1.0: grid harmonic is removed after a step in time.%
dt
[real] :: The (baroclinic) dynamics time step [T ~> s].%
diag
[type( diag_ctrl ),pointer] :: A type that regulates diagnostics output.
Function/Subroutine Documentation¶
-
subroutine
mom_zanna_bolton/
zb_2020_init
(Time, GV, US, param_file, diag, CS, use_ZB2020)¶ Read parameters and register output fields used in Zanna_Bolton_2020().
- Parameters:
time :: [in] The current model time.
gv :: [in] The ocean’s vertical grid structure
us :: [in] A dimensional unit scaling type
param_file :: [in] Parameter file parser structure.
diag :: [inout] Diagnostics structure.
cs :: [inout] ZB2020 control structure.
use_zb2020 :: [out] If true, turns on ZB scheme.
- Call to:
- Called from:
-
subroutine
mom_zanna_bolton/
zanna_bolton_2020
(u, v, h, fx, fy, G, GV, CS)¶ Baroclinic Zanna-Bolton-2020 parameterization, see eq. 6 in https://laurezanna.github.io/files/Zanna-Bolton-2020.pdf We collect all contributions to a tensor S, with components: (S_11, S_12; S_12, S_22) Which consists of the deviatoric and trace components, respectively: S = (-vort_xy * sh_xy, vort_xy * sh_xx; vort_xy * sh_xx, vort_xy * sh_xy) + 1/2 * (vort_xy^2 + sh_xy^2 + sh_xx^2, 0; 0, vort_xy^2 + sh_xy^2 + sh_xx^2) Where: vort_xy = dv/dx - du/dy - relative vorticity sh_xy = dv/dx + du/dy - shearing deformation (or horizontal shear strain) sh_xx = du/dx - dv/dy - stretching deformation (or horizontal tension) Update of the governing equations: (du/dt, dv/dt) = k_BC * div(S) Where: k_BC = - amplitude * grid_cell_area amplitude = 0.1..10 (approx)
- Parameters:
g :: [in] The ocean’s grid structure.
gv :: [in] The ocean’s vertical grid structure.
cs :: [in] ZB2020 control structure.
u :: [in] The zonal velocity [L T-1 ~> m s-1].
v :: [in] The meridional velocity [L T-1 ~> m s-1].
h :: [inout] Layer thicknesses [H ~> m or kg m-2].
fx :: [out] Zonal acceleration due to convergence of
fy :: [out] Meridional acceleration due to convergence
- Call to:
- Called from:
-
subroutine
mom_zanna_bolton/
filter
(G, mask_T, mask_q, n_lowpass, n_highpass, T, q)¶ Filter which is used to smooth velocity gradient tensor or the stress tensor. If n_lowpass and n_highpass are positive, the filter is given by: I - (I-G^n_lowpass)^n_highpass where I is the identity matrix and G is smooth_Tq(). It is filter of order 2*n_highpass, where n_lowpass is the number of iterations which defines the filter scale. If n_lowpass is negative, returns residual for the same filter: (I-G^|n_lowpass|)^n_highpass Input does not require halo. Output has full halo.
- Parameters:
g :: [in] Ocean grid
n_lowpass :: [in] number of low-pass iterations
n_highpass :: [in] number of high-pass iterations
mask_t :: [in] mask of wet points in T (CENTER) points [nondim]
mask_q :: [in] mask of wet points in q (CORNER) points [nondim]
t :: [inout] any field at T (CENTER) points [arbitrary]
q :: [inout] any field at q (CORNER) points [arbitrary]
- Call to:
- Called from:
-
subroutine
mom_zanna_bolton/
smooth_tq
(G, mask_T, mask_q, T, q)¶ One iteration of 3x3 filter [1 2 1; 2 4 2; 1 2 1]/16 removing chess-harmonic. It is used as a buiding block in
filter()
. Zero Dirichlet boundary conditions are applied with mask_T and mask_q. . Zero Dirichlet boundary conditions are applied with mask_T and mask_q.- Parameters:
g :: [in] Ocean grid
mask_t :: [in] mask of wet points in T (CENTER) points [nondim]
mask_q :: [in] mask of wet points in q (CORNER) points [nondim]
t :: [inout] any field at T (CENTER) points [arbitrary]
q :: [inout] any field at q (CORNER) points [arbitrary]
- Called from:
-
subroutine
mom_zanna_bolton/
min_max
(G, min_val, max_val, T, q)¶ Returns min and max values of array across all PEs. It is used in
filter()
to check its monotonicity. to check its monotonicity.- Parameters:
g :: [in] Ocean grid
t :: [inout] any field at T (CENTER) points [arbitrary]
q :: [inout] any field at q (CORNER) points [arbitrary]
max_val :: [out] min and max values of array accross PEs [arbitrary]
- Called from:
-
subroutine
mom_zanna_bolton/
compute_masks
(G, GV, h, mask_T, mask_q, k)¶ Computes mask of wet points in T (CENTER) and q (CORNER) points. Method: compare layer thicknesses with Angstrom_H. Mask is computed separately for every vertical layer and for every time step.
- Parameters:
g :: [in] Ocean grid
gv :: [in] The ocean’s vertical grid structure
h :: [in] Layer thicknesses [H ~> m or kg m-2]
mask_t :: [inout] mask of wet points in T (CENTER) points [nondim]
mask_q :: [inout] mask of wet points in q (CORNER) points [nondim]
k :: [in] index of vertical layer
- Called from:
-
subroutine
mom_zanna_bolton/
compute_energy_source
(u, v, h, fx, fy, G, GV, CS)¶ Computes the 3D energy source term for the ZB2020 scheme similarly to
MOM_diagnostics.F90
, specifically 1125 line.- Parameters:
g :: [in] The ocean’s grid structure.
gv :: [in] The ocean’s vertical grid structure.
cs :: [in] ZB2020 control structure.
u :: [in] The zonal velocity [L T-1 ~> m s-1].
v :: [in] The meridional velocity [L T-1 ~> m s-1].
h :: [inout] Layer thicknesses [H ~> m or kg m-2].
fx :: [in] Zonal acceleration due to convergence of
fy :: [in] Meridional acceleration due to convergence
- Called from: