mom_porous_barriers module reference

Module for calculating curve fit for porous topography.

More…

Data Types

porous_barrier_cs

The control structure for the MOM_porous_barriers module.

Functions/Subroutines

porous_widths_layer()

subroutine to assign porous barrier widths averaged over a layer

porous_widths_interface()

subroutine to assign porous barrier widths at the layer interfaces

calc_eta_at_uv()

calc_por_layer()

subroutine to calculate the profile fit (the three parameter fit from Adcroft 2013)

calc_por_interface()

subroutine to calculate the profile fit (the three parameter fit from Adcroft 2013)

porous_barriers_init()

Detailed Description

Module for calculating curve fit for porous topography.

Type Documentation

type mom_porous_barriers/porous_barrier_cs

The control structure for the MOM_porous_barriers module.

Type fields:
  • % id_por_layer_widthu [integer] :: Diagnostic IDs.

  • % id_por_layer_widthv [integer] :: Diagnostic IDs.

  • % id_por_face_areau [integer] :: Diagnostic IDs.

  • % id_por_face_areav [integer] :: Diagnostic IDs.

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

  • % diag [type( diag_ctrl ),pointer] :: A structure to regulate diagnostic output timing.

  • % debug [logical] :: If true, write verbose checksums for debugging purposes.

  • % mask_depth [real] :: The depth shallower than which porous barrier is not applied [Z ~> m].

  • % eta_interp [integer] :: An integer indicating how the interface heights at the velocity points are calculated. Valid values are given by the parameters defined below: MAX, MIN, ARITHMETIC and HARMONIC.

  • % answer_date [integer] :: The vintage of the porous barrier weight function calculations. Values below 20220806 recover the old answers in which the layer averaged weights are not strictly limited by an upper-bound of 1.0 .

Function/Subroutine Documentation

subroutine mom_porous_barriers/porous_widths_layer(h, tv, G, GV, US, pbv, CS, eta_bt)

subroutine to assign porous barrier widths averaged over a layer

Parameters:
  • g :: [in] The ocean’s grid structure.

  • gv :: [in] The ocean’s vertical grid structure.

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

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

  • tv :: [in] A structure pointing to various thermodynamic variables.

  • eta_bt :: [in] optional barotropic variable used to dilate the layer thicknesses [H ~> m or kg m-2].

  • pbv :: [inout] porous barrier fractional cell metrics

  • cs :: [in] Control structure for porous barrier

Call to:

calc_eta_at_uv calc_por_layer id_clock_porous_barrier mom_error_handler::mom_error

subroutine mom_porous_barriers/porous_widths_interface(h, tv, G, GV, US, pbv, CS, eta_bt)

subroutine to assign porous barrier widths at the layer interfaces

Parameters:
  • g :: [in] The ocean’s grid structure.

  • gv :: [in] The ocean’s vertical grid structure.

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

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

  • tv :: [in] A structure pointing to various thermodynamic variables.

  • eta_bt :: [in] optional barotropic variable used to dilate the layer thicknesses [H ~> m or kg m-2].

  • pbv :: [inout] porous barrier fractional cell metrics

  • cs :: [in] Control structure for porous barrier

Call to:

calc_eta_at_uv calc_por_interface id_clock_porous_barrier mom_error_handler::mom_error

subroutine mom_porous_barriers/calc_eta_at_uv(eta_u, eta_v, interp, dmask, h, tv, G, GV, US, eta_bt)
Parameters:
  • g :: [in] The ocean’s grid structure.

  • gv :: [in] The ocean’s vertical grid structure.

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

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

  • tv :: [in] A structure pointing to various thermodynamic variables.

  • eta_bt :: [in] optional barotropic variable used to dilate the layer thicknesses [H ~> m or kg m-2].

  • dmask :: [in] The depth shallower than which porous barrier is not applied [Z ~> m]

  • interp :: [in] eta interpolation method

  • eta_u :: [out] Layer interface heights at u points [Z ~> m]

  • eta_v :: [out] Layer interface heights at v points [Z ~> m]

Call to:

eta_interp_arith eta_interp_harm eta_interp_max eta_interp_min mom_error_handler::mom_error

Called from:

porous_widths_interface porous_widths_layer

subroutine mom_porous_barriers/calc_por_layer(D_min, D_max, D_avg, eta_layer, A_layer, do_next)

subroutine to calculate the profile fit (the three parameter fit from Adcroft 2013)

Parameters:
  • d_min :: [in] minimum topographic height (deepest) [Z ~> m]

  • d_max :: [in] maximum topographic height (shallowest) [Z ~> m]

  • d_avg :: [in] mean topographic height [Z ~> m]

  • eta_layer :: [in] height of interface [Z ~> m]

  • a_layer :: [out] frac. open face area of below eta_layer [Z ~> m]

  • do_next :: [out] False if eta_layer>D_max

Called from:

porous_widths_layer

subroutine mom_porous_barriers/calc_por_interface(D_min, D_max, D_avg, eta_layer, w_layer, do_next)

subroutine to calculate the profile fit (the three parameter fit from Adcroft 2013)

Parameters:
  • d_min :: [in] minimum topographic height (deepest) [Z ~> m]

  • d_max :: [in] maximum topographic height (shallowest) [Z ~> m]

  • d_avg :: [in] mean topographic height [Z ~> m]

  • eta_layer :: [in] height of interface [Z ~> m]

  • w_layer :: [out] frac. open interface width at eta_layer [nondim]

  • do_next :: [out] False if eta_layer>D_max

Called from:

porous_widths_interface

subroutine mom_porous_barriers/porous_barriers_init(Time, GV, US, param_file, diag, CS)
Parameters:
  • time :: [in] Current model time

  • gv :: [in] The ocean’s vertical grid structure.

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

  • param_file :: [in] structure indicating parameter file to parse

  • diag :: [inout] Diagnostics control structure

  • cs :: [inout] Module control structure

Call to:

eta_interp_arith eta_interp_arith_string eta_interp_harm eta_interp_harm_string eta_interp_max eta_interp_max_string eta_interp_min eta_interp_min_string id_clock_porous_barrier mom_error_handler::mom_error mom_diag_mediator::register_diag_field