mom_interface_filter module reference

Interface height filtering module.

More…

Data Types

interface_filter_cs

Control structure for interface height filtering.

Functions/Subroutines

interface_filter()

Apply a transport that leads to a smoothing of interface height, subject to limits that ensure stability and positive definiteness of layer thicknesses.

filter_interface()

Calculates parameterized layer transports for use in the continuity equation.

interface_filter_init()

Initialize the interface height filtering module/structure.

interface_filter_end()

Deallocate the interface height filtering control structure.

Detailed Description

Interface height filtering

Interface height filtering is implemented via along-layer mass fluxes

\[h^\dagger \leftarrow h^n - \Delta t \nabla \cdot ( \vec{uh}^* )\]

where the mass fluxes are cast as the difference in vector streamfunction

\[\vec{uh}^* = \delta_k \vec{\psi} .\]

The streamfunction is proportional to the slope in the difference between unsmoothed interface heights and those smoothed with one (or more) passes of a Laplacian filter, depending on the order of the filter, or to the slope for a Laplacian filter

\[\vec{\psi} = - \kappa_h {\nabla \eta - \eta_smooth}\]

The result of the above expression is subsequently bounded by minimum and maximum values, including a maximum smoothing rate for numerical stability ( \(\kappa_{h}\) is calculated internally).

Module mom_interface_filter parameters

Symbol

Module parameter

APPLY_INTERFACE_FILTER

INTERFACE_FILTER_TIME

INTERFACE_FILTER_MAX_CFL

INTERFACE_FILTER_ORDER

Type Documentation

type mom_interface_filter/interface_filter_cs

Control structure for interface height filtering.

Type fields:
  • % id_uh_sm [integer] :: Diagnostic identifier.

  • % id_vh_sm [integer] :: Diagnostic identifier.

  • % id_l2_u [integer] :: Diagnostic identifier.

  • % id_l2_v [integer] :: Diagnostic identifier.

  • % id_sfn_x [integer] :: Diagnostic identifier.

  • % id_sfn_y [integer] :: Diagnostic identifier.

  • % initialized [logical] :: True if this control structure has been initialized.

  • % max_smoothing_cfl [real] :: Maximum value of the smoothing CFL for interface height filtering [nondim].

  • % filter_rate [real] :: The rate at which grid-scale anomalies are damped away [T-1 ~> s-1].

  • % filter_order [integer] :: The even power of the interface height smoothing. At present valid values are 0, 2, or 4.

  • % interface_filter [logical] :: If true, interfaces heights are diffused.

  • % isotropic_filter [logical] :: If true, use the same filtering lengthscales in both directions, otherwise use filtering lengthscales in each direction that scale with the grid spacing in that direction.

  • % debug [logical] :: write verbose checksums for debugging purposes

  • % diag [type( diag_ctrl ),pointer] :: structure used to regulate timing of diagnostics

Function/Subroutine Documentation

subroutine mom_interface_filter/interface_filter(h, uhtr, vhtr, tv, dt, G, GV, US, CDp, CS)

Apply a transport that leads to a smoothing of interface height, subject to limits that ensure stability and positive definiteness of layer thicknesses. It also updates the along-layer mass fluxes used in the tracer transport equations.

Parameters:
  • g :: [in] Ocean grid structure

  • gv :: [in] Vertical grid structure

  • us :: [in] A dimensional unit scaling type

  • h :: [inout] Layer thickness [H ~> m or kg m-2]

  • uhtr :: [inout] Accumulated zonal mass flux [L2 H ~> m3 or kg]

  • vhtr :: [inout] Accumulated meridional mass flux [L2 H ~> m3 or kg]

  • tv :: [in] Thermodynamics structure

  • dt :: [in] Time increment [T ~> s]

  • cdp :: [inout] Diagnostics for the continuity equation

  • cs :: [inout] Control structure for interface height filtering

Call to:

filter_interface mom_error_handler::mom_error

subroutine mom_interface_filter/filter_interface(h, e, Lsm2_u, Lsm2_v, uhD, vhD, tv, G, GV, US, halo_size)

Calculates parameterized layer transports for use in the continuity equation. Fluxes are limited to give positive definite thicknesses. Called by interface_filter(). .

Parameters:
  • g :: [in] Ocean grid structure

  • gv :: [in] Vertical grid structure

  • us :: [in] A dimensional unit scaling type

  • h :: [in] Layer thickness [H ~> m or kg m-2]

  • e :: [in] Interface positions [Z ~> m]

  • lsm2_u :: [in] Interface smoothing lengths squared at u points [L2 ~> m2]

  • lsm2_v :: [in] Interface smoothing lengths squared at v points [L2 ~> m2]

  • uhd :: [out] Zonal mass fluxes [H L2 ~> m3 or kg]

  • vhd :: [out] Meridional mass fluxes [H L2 ~> m3 or kg]

  • tv :: [in] Thermodynamics structure

  • halo_size :: [in] The size of the halo to work on, 0 by default.

Called from:

interface_filter

subroutine mom_interface_filter/interface_filter_init(Time, G, GV, US, param_file, diag, CDp, CS)

Initialize the interface height filtering module/structure.

Parameters:
  • time :: [in] Current model time

  • g :: [in] Ocean grid structure

  • gv :: [in] Vertical grid structure

  • us :: [in] A dimensional unit scaling type

  • param_file :: [in] Parameter file handles

  • diag :: [inout] Diagnostics control structure

  • cdp :: [inout] Continuity equation diagnostics

  • cs :: [inout] Control structure for interface height filtering

Call to:

mom_error_handler::mom_error mom_diag_mediator::register_diag_field

subroutine mom_interface_filter/interface_filter_end(CS, CDp)

Deallocate the interface height filtering control structure.

Parameters:
  • cs :: [inout] Control structure for interface height filtering

  • cdp :: [inout] Continuity diagnostic control structure