mom_zanna_bolton module reference

<undocumented>

More…

Data Types

zb2020_cs

Control structure for Zanna-Bolton-2020 parameterization.

Functions/Subroutines

zb_2020_init()

Read parameters and register output fields used in Zanna_Bolton_2020().

zanna_bolton_2020()

Baroclinic Zanna-Bolton-2020 parameterization, see eq.

filter()

Filter which is used to smooth velocity gradient tensor or the stress tensor.

smooth_tq()

One iteration of 3x3 filter [1 2 1; 2 4 2; 1 2 1]/16 removing chess-harmonic.

min_max()

Returns min and max values of array across all PEs.

compute_masks()

Computes mask of wet points in T (CENTER) and q (CORNER) points.

compute_energy_source()

Computes the 3D energy source term for the ZB2020 scheme similarly to MOM_diagnostics.F90, specifically 1125 line.

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:

mom_diag_mediator::register_diag_field

Called from:

mom_hor_visc::hor_visc_init

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:

compute_energy_source compute_masks filter

Called from:

mom_hor_visc::horizontal_viscosity

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:

min_max mom_error_handler::mom_error smooth_tq

Called from:

zanna_bolton_2020

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:

filter

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:

filter

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:

zanna_bolton_2020

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:

zanna_bolton_2020