mom_energetic_pbl module reference

Energetically consistent planetary boundary layer parameterization.

More…

Data Types

energetic_pbl_cs

This control structure holds parameters for the MOM_energetic_PBL() module.

epbl_column_diags

A type for conveniently passing around ePBL diagnostics for a column.

Functions/Subroutines

energetic_pbl()

This subroutine determines the diffusivities from the integrated energetics mixed layer model.

epbl_column()

This subroutine determines the diffusivities from the integrated energetics mixed layer model for a single column of water.

epbl_bbl_column()

This subroutine determines the diffusivities from a bottom boundary layer version of the integrated energetics mixed layer model for a single column of water.

kappa_eqdisc()

Gives shape function that sets the vertical structure of OSBL diffusivity as described in Sane et al.

get_eqdisc_v0()

Gives velocity scale (v_0) using equations that approximate neural network of Sane et al.

get_eqdisc_v0h()

Gives velocity scale (v_0^h) using equations that with using boundary layer depth as one of its inputs These equations are different than those set in get_eqdisc_v0 subroutine.

exp_decay_tke_adjust()

Determine a scaling factor that accounts for the exponential decay of turbulent kinetic energy from a boundary source and the assumption that an increase in the diffusivity at an interface causes a linearly increasing buoyancy flux going from 0 at the bottom to a peak at the interface, and then going back to 0 atop the layer above.

find_pe_chg()

This subroutine calculates the change in potential energy and or derivatives for several changes in an interface’s diapycnal diffusivity times a timestep.

find_kd_from_pe_chg()

This subroutine directly calculates the an increment in the diapycnal diffusivity based on the change in potential energy within a timestep, subject to bounds on the possible change in diffusivity, returning both the added diffusivity and the realized potential energy change, and optionally also the maximum change in potential energy that would be realized for an infinitely large diffusivity.

find_pe_chg_orig()

This subroutine calculates the change in potential energy and or derivatives for several changes in an interface’s diapycnal diffusivity times a timestep using the original form used in the first version of ePBL.

find_mstar()

This subroutine finds the mstar value for ePBL.

mstar_langmuir()

This subroutine modifies the mstar value if the Langmuir number is present.

energetic_pbl_get_mld()

Copies the ePBL active mixed layer depth into MLD, in units of [Z ~> m] unless other units are specified.

energetic_pbl_init()

This subroutine initializes the energetic_PBL module.

energetic_pbl_end()

Clean up and deallocate memory associated with the energetic_PBL module.

Detailed Description

Energetically consistent planetary boundary layer parameterization.

Type Documentation

type mom_energetic_pbl/energetic_pbl_cs

This control structure holds parameters for the MOM_energetic_PBL() module. module.

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

  • % id_hml_depth [integer] :: Diagnostic IDs.

  • % id_tke_wind [integer] :: Diagnostic IDs.

  • % id_tke_mixing [integer] :: Diagnostic IDs.

  • % id_ustar_epbl [integer] :: Diagnostic IDs.

  • % id_bflx_epbl [integer] :: Diagnostic IDs.

  • % id_tke_mke [integer] :: Diagnostic IDs.

  • % id_tke_conv [integer] :: Diagnostic IDs.

  • % id_tke_forcing [integer] :: Diagnostic IDs.

  • % id_tke_mech_decay [integer] :: Diagnostic IDs.

  • % id_tke_conv_decay [integer] :: Diagnostic IDs.

  • % id_mixing_length [integer] :: Diagnostic IDs.

  • % id_velocity_scale [integer] :: Diagnostic IDs.

  • % id_kd_bbl [integer] :: Diagnostic IDs.

  • % id_bbl_mix_length [integer] :: Diagnostic IDs.

  • % id_bbl_vel_scale [integer] :: Diagnostic IDs.

  • % id_tke_bbl [integer] :: Diagnostic IDs.

  • % id_tke_bbl_mixing [integer] :: Diagnostic IDs.

  • % id_tke_bbl_decay [integer] :: Diagnostic IDs.

  • % id_ustar_bbl [integer] :: Diagnostic IDs.

  • % id_bflx_bbl [integer] :: Diagnostic IDs.

  • % id_bbl_decay_scale [integer] :: Diagnostic IDs.

  • % id_bbl_depth [integer] :: Diagnostic IDs.

  • % id_mstar_sfc [integer] :: Diagnostic IDs.

  • % id_mstar_bbl [integer] :: Diagnostic IDs.

  • % id_la_mod [integer] :: Diagnostic IDs.

  • % id_la [integer] :: Diagnostic IDs.

  • % id_mstar_lt [integer] :: Diagnostic IDs.

  • % id_opt_diff_kd_epbl [integer] :: Diagnostic IDs.

  • % id_opt_maxdiff_kd_epbl [integer] :: Diagnostic IDs.

  • % id_opt_diff_hml_depth [integer] :: Diagnostic IDs.

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

  • % vonkar [real] :: The von Karman coefficient as used in the ePBL module [nondim].

  • % omega [real] :: The Earth’s rotation rate [T-1 ~> s-1].

  • % omega_frac [real] :: When setting the decay scale for turbulence, use this fraction of the absolute rotation rate blended with the local value of f, as sqrt((1-omega_frac)*f^2 + omega_frac*4*omega^2) [nondim].

  • % nstar [real] :: The fraction of the TKE input to the mixed layer available to drive entrainment [nondim]. This quantity is the vertically integrated buoyancy production minus the vertically integrated dissipation of TKE produced by buoyancy.

  • % use_mld_iteration [logical] :: If true, use the proximity to the bottom of the actively turbulent surface boundary layer to constrain the mixing lengths.

  • % mld_iteration_guess [logical] :: False to default to guessing half the ocean depth for the first iteration.

  • % mld_bisection [logical] :: If true, use bisection with the iterative determination of the self-consistent mixed layer depth. Otherwise use the false position after a maximum and minimum bound have been evaluated and the returned value from the previous guess or bisection before this.

  • % mld_iter_bug [logical] :: If true use buggy logic that gives the wrong bounds for the next iteration when successive guesses increase by exactly EPBL_MLD_TOLERANCE.

  • % max_mld_its [integer] :: The maximum number of iterations that can be used to find a self-consistent mixed layer depth with Use_MLD_iteration.

  • % mixlenexponent [real] :: Exponent in the mixing length shape-function [nondim]. 1 is law-of-the-wall at top and bottom, 2 is more KPP like.

  • % mke_to_tke_effic [real] :: The efficiency with which mean kinetic energy released by mechanically forced entrainment of the mixed layer is converted to TKE, times conversion factors between the natural units of mean kinetic energy and those used for TKE [Z2 L-2 ~> nondim].

  • % direct_calc [logical] :: If true and there is no conversion from mean kinetic energy to ePBL turbulent kinetic energy, use a direct calculation of the diffusivity that is supported by a given energy input instead of the more general but slower iterative solver.

  • % ustar_min [real] :: A minimum value of ustar to avoid numerical problems [Z T-1 ~> m s-1]. If the value is small enough, this should not affect the solution.

  • % ekman_scale_coef [real] :: A nondimensional scaling factor controlling the inhibition of the diffusive length scale by rotation [nondim]. Making this larger decreases the diffusivity in the planetary boundary layer.

  • % translay_scale [real] :: A scale for the mixing length in the transition layer at the edge of the boundary layer as a fraction of the boundary layer thickness [nondim]. The default is 0, but a value of 0.1 might be better justified by observations.

  • % mld_tol [real] :: A tolerance for determining the boundary layer thickness when Use_MLD_iteration is true [Z ~> m].

  • % min_mix_len [real] :: The minimum mixing length scale that will be used by ePBL [Z ~> m]. The default (0) does not set a minimum.

  • % wt_scheme [integer] :: An enumerated value indicating the method for finding the turbulent velocity scale. There are currently two options: wT_mwT_from_cRoot_TKE is the original (TKE_remaining)^1/3 wT_from_RH18 is the version described by Reichl and Hallberg, 2018.

  • % wstar_ustar_coef [real] :: A ratio relating the efficiency with which convectively released energy is converted to a turbulent velocity, relative to mechanically forced turbulent kinetic energy [nondim]. Making this larger increases the diffusivity.

  • % vstar_surf_fac [real] :: If (wT_scheme == wT_from_RH18) this is the proportionality coefficient between ustar and the surface mechanical contribution to vstar [nondim].

  • % vstar_scale_fac [real] :: An overall nondimensional scaling factor for vstar [nondim]. Making this larger increases the diffusivity.

  • % mstar_scheme [integer] :: An encoded integer to determine which formula is used to set mstar.

  • % bbl_mstar_scheme [integer] :: An encoded integer to determine which formula is used to set mstar.

  • % mstar_cap [real] :: Since mstar is restoring undissipated energy to mixing, there must be a cap on how large it can be [nondim]. This is definitely a function of latitude (Ekman limit), but will be taken as constant for now.

  • % tke_decay [real] :: The ratio of the natural Ekman depth to the TKE decay scale [nondim].

  • % fixed_mstar [real] :: mstar is the ratio of the friction velocity cubed to the TKE available to drive entrainment [nondim]. This quantity is the vertically integrated shear production minus the vertically integrated dissipation of TKE produced by shear. This value is used if the option for using a fixed mstar is used.

  • % bbl_fixed_mstar [real] :: Similar to fixed_mstar, but for the bottom boundary layer.

  • % c_ek [real] :: mstar Coefficient in rotation limit for EPBL_MSTAR_SCHEME=OM4 [nondim]

  • % mstar_coef [real] :: mstar coefficient in rotation/stabilizing balance for EPBL_MSTAR_SCHEME=OM4 [nondim]

  • % rh18_mstar_cn1 [real] :: mstar_N coefficient 1 (outer-most coefficient for fit) [nondim]. Value of 0.275 in RH18. Increasing this coefficient increases mechanical mixing for all values of Hf/ust, but is most effective at low values (weakly developed OSBLs).

  • % rh18_mstar_cn2 [real] :: mstar_N coefficient 2 (coefficient outside of exponential decay) [nondim]. Value of 8.0 in RH18. Increasing this coefficient increases mstar for all values of HF/ust, with a consistent affect across a wide range of Hf/ust.

  • % rh18_mstar_cn3 [real] :: mstar_N coefficient 3 (exponential decay coefficient) [nondim]. Value of -5.0 in RH18. Increasing this increases how quickly the value of mstar decreases as Hf/ust increases.

  • % rh18_mstar_cs1 [real] :: mstar_S coefficient for RH18 in stabilizing limit [nondim]. Value of 0.2 in RH18.

  • % rh18_mstar_cs2 [real] :: mstar_S exponent for RH18 in stabilizing limit [nondim]. Value of 0.4 in RH18.

  • % mstar_convect_coef [real] :: Factor to reduce mstar when statically unstable [nondim].

  • % use_lt [logical] :: Flag for using LT in Energy calculation.

  • % lt_enhance_form [integer] :: Integer for Enhancement functional form (various options)

  • % lt_enhance_coef [real] :: Coefficient in fit for Langmuir Enhancement [nondim].

  • % lt_enhance_exp [real] :: Exponent in fit for Langmuir Enhancement [nondim].

  • % lac_mld_ek [real] :: Coefficient for Langmuir number modification based on the ratio of the mixed layer depth over the Ekman depth [nondim].

  • % lac_mld_ob_stab [real] :: Coefficient for Langmuir number modification based on the ratio of the mixed layer depth over the Obukhov depth with stabilizing forcing [nondim].

  • % lac_ek_ob_stab [real] :: Coefficient for Langmuir number modification based on the ratio of the Ekman depth over the Obukhov depth with stabilizing forcing [nondim].

  • % lac_mld_ob_un [real] :: Coefficient for Langmuir number modification based on the ratio of the mixed layer depth over the Obukhov depth with destabilizing forcing [nondim].

  • % lac_ek_ob_un [real] :: Coefficient for Langmuir number modification based on the ratio of the Ekman depth over the Obukhov depth with destabilizing forcing [nondim].

  • % max_enhance_m [real] :: The maximum allowed LT enhancement to the mixing [nondim].

  • % eqdisc [logical] :: Uses machine learned shape function.

  • % eqdisc_v0 [logical] :: Uses machine learned velocity scale.

  • % eqdisc_v0h [logical] :: Uses machine learned velocity scale that uses boundary layer depth as input.

  • % v0_lower_cap [real] :: Lower cap to prevent v0 from attaining anomlously low values [Z T-1 ~> m s-1].

  • % v0_upper_cap [real] :: Upper cap to prevent v0 from attaining anomlously high values [Z T-1 ~> m s-1].

  • % f_lower [real] :: Lower cap of |f| i.e. absolute of Coriolis parameter [T-1 ~> s-1] Used only in get_eqdisc_v0 subroutine. Default is 0.1deg Lat.

  • % bflux_lower_cap [real] :: Lower cap for capping blfux [Z2 T-3 ~> m2 s-3].

  • % bflux_upper_cap [real] :: Upper cap for capping blfux [Z2 T-3 ~> m2 s-3].

  • % sigma_max_lower_cap [real] :: Lower cap to prevent sigma_max from attaining low values [nondim].

  • % sigma_max_upper_cap [real] :: Upper cap to prevent sigma_max from attaining high values [nondim].

  • % eh_upper_cap [real] :: Upper cap to prevent Eh = hf/(u__*) from attaining high values [nondim].

  • % lh_cap [real] :: Cap to prevent Lh = h/Monin_Obukhov_depth from attaining beyond extreme values [nondim].

  • % shape_function [real(:),allocatable] :: shape function used in machine learned diffusivity [nondim]

  • % ml_c [real(18)] :: Array of non-dimensional constants used in machine learned (ML) diffusivity [nondim].

  • % shape_function_epsilon [real] :: An small value of shape_function below the boundary layer depth [nondim].

  • % epbl_bbl_effic [real] :: The efficiency of bottom boundary layer mixing via ePBL driven by the bottom drag dissipation of mean kinetic energy, times conversion factors between the natural units of mean kinetic energy and those used for TKE [Z2 L-2 ~> nondim].

  • % epbl_tidal_effic [real] :: The efficiency of bottom boundary layer mixing via ePBL driven by the bottom drag dissipation of tides, times conversion factors between the natural units of mean kinetic energy and those used for TKE [Z2 L-2 ~> nondim].

  • % use_bbld_iteration [logical] :: If true, use the proximity to the top of the actively turbulent bottom boundary layer to constrain the mixing lengths.

  • % tke_decay_bbl [real] :: The ratio of the natural Ekman depth to the TKE decay scale for bottom boundary layer mixing [nondim].

  • % min_bbl_mix_len [real] :: The minimum mixing length scale that will be used by ePBL in the bottom boundary layer mixing [Z ~> m]. The default (0) does not set a minimum.

  • % mixlenexponent_bbl [real] :: Exponent in the bottom boundary layer mixing length shape-function [nondim]. 1 is law-of-the-wall at top and bottom, 2 is more KPP like.

  • % bbld_tol [real] :: The tolerance for the iteratively determined bottom boundary layer depth [Z ~> m]. This is only used with USE_MLD_ITERATION.

  • % max_bbld_its [integer] :: The maximum number of iterations that can be used to find a self-consistent bottom boundary layer depth.

  • % wt_scheme_bbl [integer] :: An enumerated value indicating the method for finding the bottom boundary layer turbulent velocity scale. There are currently two options: wT_mwT_from_cRoot_TKE is the original (TKE_remaining)^1/3 wT_from_RH18 is the version described by Reichl and Hallberg, 2018.

  • % vstar_scale_fac_bbl [real] :: An overall nondimensional scaling factor for wT in the bottom boundary layer [nondim]. Making this larger increases the bottom boundary layer diffusivity.”, &.

  • % vstar_surf_fac_bbl [real] :: If (wT_scheme_BBL == wT_from_RH18) this is the proportionality coefficient between ustar and the bottom boundayer layer mechanical contribution to vstar [nondim].

  • % ekman_scale_coef_bbl [real] :: A nondimensional scaling factor controlling the inhibition of the diffusive length scale by rotation in the bottom boundary layer [nondim]. Making this larger decreases the bottom boundary layer diffusivity.

  • % decay_adjusted_bbl_tke [logical] :: If true, include an adjustment factor in the bottom boundary layer energetics that accounts for an exponential decay of TKE from a near-bottom source and an assumed piecewise linear linear profile of the buoyancy flux response to a change in a diffusivity.

  • % bbl_effic_bug [logical] :: If true, overestimate the efficiency of the non-tidal ePBL bottom boundary layer diffusivity by a factor of 1/sqrt(CDRAG), which is often a factor of about 18.3.

  • % epbl_bbl_use_mstar [logical] :: If true, use an mstar*ustar^3 paramaterization to get the TKE available to drive mixing in the bottom boundary layer version of ePBL. Otherwise, use the meanflow energy loss to bottom drag scaled by a constant efficiency.

  • % options_diff [integer] :: If positive, this is a coded integer indicating a pair of settings whose differences are diagnosed in a passive diagnostic mode via extra calls to ePBL_column. If this is 0 or negative no extra calls occur.

  • % time [type(time_type),pointer] :: A pointer to the ocean model’s clock.

  • % tke_diagnostics [logical] :: If true, diagnostics of the TKE budget are being calculated.

  • % answer_date [integer] :: The vintage of the order of arithmetic and expressions in the ePBL calculations. Values below 20190101 recover the answers from the end of 2018, while higher values use updated and more robust forms of the same expressions. Values below 20240101 use A**(1./3.) to estimate the cube root of A in several expressions, while higher values use the integer root function cuberoot(A) and therefore can work with scaled variables.

  • % orig_pe_calc [logical] :: If true, the ePBL code uses the original form of the potential energy change code. Otherwise, it uses a newer version that can work with successive increments to the diffusivity in upward or downward passes.

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

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

  • % ml_depth [real(:,:),allocatable] :: The mixed layer depth determined by active mixing in ePBL, which may.

  • % bbl_depth [real(:,:),allocatable] :: The bottom boundary layer depth determined by active mixing in ePBL [H ~> m or kg m-2].

  • % sum_its [type( efp_type )(2)] :: The total number of iterations and columns worked on.

  • % sum_its_bbl [type( efp_type )(2)] :: The total number of iterations and columns worked on.

type mom_energetic_pbl/epbl_column_diags

A type for conveniently passing around ePBL diagnostics for a column.

Type fields:
  • % dtke_conv [real] :: Local column copies of energy change diagnostics, all in [R Z3 T-3 ~> W m-2].

  • % dtke_forcing [real] :: Local column copies of energy change diagnostics, all in [R Z3 T-3 ~> W m-2].

  • % dtke_wind [real] :: Local column copies of energy change diagnostics, all in [R Z3 T-3 ~> W m-2].

  • % dtke_mixing [real] :: Local column copies of energy change diagnostics, all in [R Z3 T-3 ~> W m-2].

  • % dtke_mke [real] :: Local column copies of energy change diagnostics, all in [R Z3 T-3 ~> W m-2].

  • % dtke_mech_decay [real] :: Local column copies of energy change diagnostics, all in [R Z3 T-3 ~> W m-2].

  • % dtke_conv_decay [real] :: Local column copies of energy change diagnostics, all in [R Z3 T-3 ~> W m-2].

  • % dtke_bbl [real] :: Local column copies of energy change diagnostics, all in [R Z3 T-3 ~> W m-2].

  • % dtke_bbl_decay [real] :: Local column copies of energy change diagnostics, all in [R Z3 T-3 ~> W m-2].

  • % dtke_bbl_mixing [real] :: Local column copies of energy change diagnostics, all in [R Z3 T-3 ~> W m-2].

  • % la [real] :: The value of the Langmuir number [nondim].

  • % lamod [real] :: The modified Langmuir number by convection [nondim].

  • % mstar [real] :: The value of mstar used in ePBL [nondim].

  • % mstar_bbl [real] :: The value of mstar used in ePBL BBL [nondim].

  • % mstar_lt [real] :: The portion of mstar due to Langmuir turbulence [nondim].

  • % obl_its [integer] :: The number of iterations used to find a self-consistent surface boundary layer depth.

  • % bbl_its [integer] :: The number of iterations used to find a self-consistent bottom boundary layer depth.

Function/Subroutine Documentation

subroutine mom_energetic_pbl/energetic_pbl(h_3d, u_3d, v_3d, tv, fluxes, visc, dt, Kd_int, G, GV, US, CS, stoch_CS, dSV_dT, dSV_dS, TKE_forced, buoy_flux, BBL_buoy_flux, Waves)

This subroutine determines the diffusivities from the integrated energetics mixed layer model. It assumes that heating, cooling and freshwater fluxes have already been applied. All calculations are done implicitly, and there is no stability limit on the time step.

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

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

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

  • h_3d :: [inout] Layer thicknesses [H ~> m or kg m-2].

  • u_3d :: [in] Zonal velocities interpolated to h points

  • v_3d :: [in] Zonal velocities interpolated to h points

  • dsv_dt :: [in] The partial derivative of in-situ specific

  • dsv_ds :: [in] The partial derivative of in-situ specific

  • tke_forced :: [in] The forcing requirements to homogenize the

  • tv :: [inout] A structure containing pointers to any available thermodynamic fields. Absent fields have NULL ptrs.

  • fluxes :: [inout] A structure containing pointers to any possible forcing fields. Unused fields have NULL ptrs.

  • visc :: [in] Structure with vertical viscosities, BBL properties and related fields

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

  • kd_int :: [out] The diagnosed diffusivities at interfaces

  • cs :: [inout] Energetic PBL control structure

  • buoy_flux :: [in] The surface buoyancy flux [Z2 T-3 ~> m2 s-3].

  • bbl_buoy_flux :: [in] The bottom buoyancy flux [Z2 T-3 ~> m2 s-3].

  • waves :: Waves control structure for Langmuir turbulence

  • stoch_cs :: The control structure returned by a previous

Call to:

epbl_bbl_column epbl_column mom_error_handler::mom_error mom_coms::real_to_efp report_avg_its

subroutine mom_energetic_pbl/epbl_column(h, dz, u, v, T0, S0, dSV_dT, dSV_dS, SpV_dt, TKE_forcing, B_flux, absf, u_star, u_star_mean, mech_TKE_in, dt, MLD_io, Kd, mixvel, mixlen, GV, US, CS, eCD, Waves, G, i, j, TKE_gen_stoch, TKE_diss_stoch)

This subroutine determines the diffusivities from the integrated energetics mixed layer model for a single column of water.

Parameters:
  • 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].

  • dz :: [in] The vertical distance across layers [Z ~> m].

  • u :: [in] Zonal velocities interpolated to h points [L T-1 ~> m s-1].

  • v :: [in] Zonal velocities interpolated to h points [L T-1 ~> m s-1].

  • t0 :: [in] The initial layer temperatures [C ~> degC].

  • s0 :: [in] The initial layer salinities [S ~> ppt].

  • dsv_dt :: [in] The partial derivative of in-situ specific volume with potential temperature [R-1 C-1 ~> m3 kg-1 degC-1].

  • dsv_ds :: [in] The partial derivative of in-situ specific volume with salinity [R-1 S-1 ~> m3 kg-1 ppt-1].

  • spv_dt :: [in] Specific volume interpolated to interfaces divided by dt or 1.0 / (dt * Rho0), times conversion factors for answer dates before 20240101 in [m3 Z-3 R-1 T2 s-3 ~> m3 kg-1 s-1] or without the conversion factors for answer dates of 20240101 and later in [R-1 T-1 ~> m3 kg-1 s-1], used to convert local TKE into a turbulence velocity cubed.

  • tke_forcing :: [in] The forcing requirements to homogenize the forcing that has been applied to each layer [R Z3 T-2 ~> J m-2].

  • b_flux :: [in] The surface buoyancy flux [Z2 T-3 ~> m2 s-3]

  • absf :: [in] The absolute value of the Coriolis parameter [T-1 ~> s-1].

  • u_star :: [in] The surface friction velocity [Z T-1 ~> m s-1].

  • u_star_mean :: [in] The surface friction velocity without any contribution from unresolved gustiness [Z T-1 ~> m s-1].

  • mech_tke_in :: [in] The mechanically generated turbulent kinetic energy available for mixing over a time step before the application of the efficiency in mstar. [R Z3 T-2 ~> J m-2].

  • mld_io :: [inout] A first guess at the mixed layer depth on input, and the calculated mixed layer depth on output [Z ~> m]

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

  • kd :: [out] The diagnosed diffusivities at interfaces

  • mixvel :: [out] The mixing velocity scale used in Kd

  • mixlen :: [out] The mixing length scale used in Kd [Z ~> m].

  • cs :: [in] Energetic PBL control structure

  • ecd :: [inout] A container for passing around diagnostics.

  • waves :: Waves control structure for Langmuir turbulence

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

  • i :: [in] The i-index to work on (used for Waves)

  • j :: [in] The j-index to work on (used for Waves)

  • tke_gen_stoch :: [in] random factor used to perturb TKE generation [nondim]

  • tke_diss_stoch :: [in] random factor used to perturb TKE dissipation [nondim]

Call to:

mom_intrinsic_functions::cuberoot find_kd_from_pe_chg find_mstar find_pe_chg find_pe_chg_orig get_eqdisc_v0 get_eqdisc_v0h mom_wave_interface::get_langmuir_number kappa_eqdisc use_fixed_mstar wt_from_croot_tke wt_from_rh18

Called from:

energetic_pbl

subroutine mom_energetic_pbl/epbl_bbl_column(h, dz, u, v, T0, S0, dSV_dT, dSV_dS, SpV_dt, absf, dt, Kd, BBL_TKE_in, u_star_BBL, u_star_BBL_z_t, b_flux_BBL, Kd_BBL, BBLD_io, mixvel_BBL, mixlen_BBL, GV, US, CS, eCD)

This subroutine determines the diffusivities from a bottom boundary layer version of the integrated energetics mixed layer model for a single column of water.

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

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

  • dz :: [in] The vertical distance across layers [Z ~> m].

  • u :: [in] Zonal velocities interpolated to h points [L T-1 ~> m s-1].

  • v :: [in] Zonal velocities interpolated to h points [L T-1 ~> m s-1].

  • t0 :: [in] The initial layer temperatures [C ~> degC].

  • s0 :: [in] The initial layer salinities [S ~> ppt].

  • dsv_dt :: [in] The partial derivative of in-situ specific volume with potential temperature [R-1 C-1 ~> m3 kg-1 degC-1].

  • dsv_ds :: [in] The partial derivative of in-situ specific volume with salinity [R-1 S-1 ~> m3 kg-1 ppt-1].

  • spv_dt :: [in] Specific volume interpolated to interfaces divided by dt (if non-Boussinesq) or 1.0 / (dt * Rho0), in [R-1 T-1 ~> m3 kg-1 s-1], used to convert local TKE into a turbulence velocity cubed.

  • absf :: [in] The absolute value of the Coriolis parameter [T-1 ~> s-1].

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

  • kd :: [in] The diffusivities at interfaces due to previously

  • bbl_tke_in :: [in] The mechanically generated turbulent kinetic energy available for bottom boundary layer mixing within a time step [R Z3 T-2 ~> J m-2].

  • u_star_bbl :: [in] The bottom boundary layer friction velocity in thickness flux units [H T-1 ~> m s-1 or kg m-2 s-1]

  • u_star_bbl_z_t :: [in] The bottom boundary layer friction velocity converted to length flux units [Z T-1 ~> m s-1]

  • b_flux_bbl :: [in] The bottom boundary layer buoyancy flux

  • kd_bbl :: [out] The bottom boundary layer contribution to diffusivities

  • bbld_io :: [inout] A first guess at the bottom boundary layer depth on input, and the calculated bottom boundary layer depth on output [Z ~> m]

  • mixvel_bbl :: [out] The profile of boundary layer turbulent mixing

  • mixlen_bbl :: [out] The profile of bottom boundary layer turbulent

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

  • cs :: [in] Energetic PBL control structure

  • ecd :: [inout] A container for passing around diagnostics.

Call to:

mom_intrinsic_functions::cuberoot exp_decay_tke_adjust find_kd_from_pe_chg find_mstar find_pe_chg wt_from_croot_tke wt_from_rh18

Called from:

energetic_pbl

subroutine mom_energetic_pbl/kappa_eqdisc(shape_func, CS, GV, dz, absf, B_flux, u_star, MLD_guess)

Gives shape function that sets the vertical structure of OSBL diffusivity as described in Sane et al. 2025.

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

  • cs :: [in] Energetic PBL control struct

  • shape_func :: [inout] shape function, [nondim]

  • absf :: [in] The absolute value of f [T-1 ~> s-1]

  • u_star :: [in] The surface friction velocity [Z T-1 ~> m s-1]

  • b_flux :: [in] The surface buoyancy flux [Z2 T-3 ~> m2 s-3]

  • dz :: [in] The vertical distance across layers [Z ~> m]

  • mld_guess :: [in] Mixing Layer depth guessed/found for iteration [Z ~> m].

Called from:

epbl_column

subroutine mom_energetic_pbl/get_eqdisc_v0(CS, absf, B_flux, u_star, v0_dummy)

Gives velocity scale (v_0) using equations that approximate neural network of Sane et al. 2023.

Parameters:
  • cs :: [in] Energetic PBL control struct

  • b_flux :: [in] The surface buoyancy flux [Z2 T-3 ~> m2 s-3]

  • u_star :: [in] The surface friction velocity [Z T-1 ~> m s-1]

  • absf :: [in] The absolute value of f [T-1 ~> s-1].

  • v0_dummy :: [inout] velocity scale v0, local variable [Z T-1 ~> m s-1]

Called from:

epbl_column

subroutine mom_energetic_pbl/get_eqdisc_v0h(CS, B_flux, u_star, MLD_guess, v0_dummy)

Gives velocity scale (v_0^h) using equations that with using boundary layer depth as one of its inputs These equations are different than those set in get_eqdisc_v0 subroutine.

Parameters:
  • cs :: [in] Energetic PBL control struct

  • b_flux :: [in] The surface buoyancy flux [Z2 T-3 ~> m2 s-3]

  • u_star :: [in] The surface friction velocity [Z T-1 ~> m s-1]

  • mld_guess :: [in] boundary layer depth guessed/found for iteration [Z ~> m]

  • v0_dummy :: [inout] velocity scale v0, local variable [Z T-1 ~> m s-1]

Call to:

mom_intrinsic_functions::cuberoot

Called from:

epbl_column

function mom_energetic_pbl/exp_decay_tke_adjust(hb, ha, Idecay) [real]

Determine a scaling factor that accounts for the exponential decay of turbulent kinetic energy from a boundary source and the assumption that an increase in the diffusivity at an interface causes a linearly increasing buoyancy flux going from 0 at the bottom to a peak at the interface, and then going back to 0 atop the layer above. Where this factor increases the available mixing TKE, it is only compensating for the fact that the TKE has already been reduced by the same exponential decay rate. ha and hb must be non-negative, and this function generally increases with hb and decreases with ha.

Exp_decay_TKE_adjust is coded to have a lower bound of 1e-30 on the return value. For large values of ha*Idecay, the return value is about 0.5*ka*(ha+hb)*Idecay**2 * exp(-ha*Idecay), but return values of less than 1e-30 are deliberately reset to 1e-30. For relatively large values of hb*Idecay, the return value increases linearly with hb. When Idecay ~= 0, the return value is close to 1.

Parameters:
  • hb :: [in] The thickness over which the buoyancy flux varies on the near-boundary side of an interface (e.g., a well-mixed bottom boundary layer thickness) [H ~> m or kg m-2]

  • ha :: [in] The thickness of the layer on the opposite side of an interface from the boundary [H ~> m or kg m-2]

  • idecay :: [in] The inverse of a turbulence decay length scale [H-1 ~> m-1 or m2 kg-1]

Return:

undefined :: The effective fractional change in energy available to drive mixing at this interface once the exponential decay of TKE is accounted for [nondim]. TKE_to_PE_scale is always positive.

Called from:

epbl_bbl_column

subroutine mom_energetic_pbl/find_pe_chg(Kddt_h0, dKddt_h, hp_a, hp_b, Th_a, Sh_a, Th_b, Sh_b, dT_to_dPE_a, dS_to_dPE_a, dT_to_dPE_b, dS_to_dPE_b, pres_Z, dT_to_dColHt_a, dS_to_dColHt_a, dT_to_dColHt_b, dS_to_dColHt_b, PE_chg, dPEc_dKd, dPE_max, dPEc_dKd_0, PE_ColHt_cor)

This subroutine calculates the change in potential energy and or derivatives for several changes in an interface’s diapycnal diffusivity times a timestep.

Parameters:
  • kddt_h0 :: [in] The previously used diffusivity at an interface times the time step and divided by the average of the thicknesses around the interface [H ~> m or kg m-2].

  • dkddt_h :: [in] The trial change in the diffusivity at an interface times the time step and divided by the average of the thicknesses around the interface [H ~> m or kg m-2].

  • hp_a :: [in] The effective pivot thickness of the layer above the interface, given by h_k plus a term that is a fraction (determined from the tridiagonal solver) of Kddt_h for the interface above [H ~> m or kg m-2].

  • hp_b :: [in] The effective pivot thickness of the layer below the interface, given by h_k plus a term that is a fraction (determined from the tridiagonal solver) of Kddt_h for the interface below [H ~> m or kg m-2].

  • th_a :: [in] An effective temperature times a thickness in the layer above, including implicit mixing effects with other yet higher layers [C H ~> degC m or degC kg m-2].

  • sh_a :: [in] An effective salinity times a thickness in the layer above, including implicit mixing effects with other yet higher layers [S H ~> ppt m or ppt kg m-2].

  • th_b :: [in] An effective temperature times a thickness in the layer below, including implicit mixing effects with other yet lower layers [C H ~> degC m or degC kg m-2].

  • sh_b :: [in] An effective salinity times a thickness in the layer below, including implicit mixing effects with other yet lower layers [S H ~> ppt m or ppt kg m-2].

  • dt_to_dpe_a :: [in] A factor (pres_lay*mass_lay*dSpec_vol/dT) relating a layer’s temperature change to the change in column potential energy, including all implicit diffusive changes in the temperatures of all the layers above [R Z3 T-2 C-1 ~> J m-2 degC-1].

  • ds_to_dpe_a :: [in] A factor (pres_lay*mass_lay*dSpec_vol/dS) relating a layer’s salinity change to the change in column potential energy, including all implicit diffusive changes in the salinities of all the layers above [R Z3 T-2 S-1 ~> J m-2 ppt-1].

  • dt_to_dpe_b :: [in] A factor (pres_lay*mass_lay*dSpec_vol/dT) relating a layer’s temperature change to the change in column potential energy, including all implicit diffusive changes in the temperatures of all the layers below [R Z3 T-2 C-1 ~> J m-2 degC-1].

  • ds_to_dpe_b :: [in] A factor (pres_lay*mass_lay*dSpec_vol/dS) relating a layer’s salinity change to the change in column potential energy, including all implicit diffusive changes in the salinities of all the layers below [R Z3 T-2 S-1 ~> J m-2 ppt-1].

  • pres_z :: [in] The rescaled hydrostatic interface pressure, which relates the changes in column thickness to the energy that is radiated as gravity waves and unavailable to drive mixing [R Z2 T-2 ~> J m-3].

  • dt_to_dcolht_a :: [in] A factor (mass_lay*dSColHtc_vol/dT) relating a layer’s temperature change to the change in column height, including all implicit diffusive changes in the temperatures of all the layers above [Z C-1 ~> m degC-1].

  • ds_to_dcolht_a :: [in] A factor (mass_lay*dSColHtc_vol/dS) relating a layer’s salinity change to the change in column height, including all implicit diffusive changes in the salinities of all the layers above [Z S-1 ~> m ppt-1].

  • dt_to_dcolht_b :: [in] A factor (mass_lay*dSColHtc_vol/dT) relating a layer’s temperature change to the change in column height, including all implicit diffusive changes in the temperatures of all the layers below [Z C-1 ~> m degC-1].

  • ds_to_dcolht_b :: [in] A factor (mass_lay*dSColHtc_vol/dS) relating a layer’s salinity change to the change in column height, including all implicit diffusive changes in the salinities of all the layers below [Z S-1 ~> m ppt-1].

  • pe_chg :: [out] The change in column potential energy from applying dKddt_h at the present interface [R Z3 T-2 ~> J m-2].

  • dpec_dkd :: [out] The partial derivative of PE_chg with dKddt_h [R Z3 T-2 H-1 ~> J m-3 or J kg-1].

  • dpe_max :: [out] The maximum change in column potential energy that could be realized by applying a huge value of dKddt_h at the present interface [R Z3 T-2 ~> J m-2].

  • dpec_dkd_0 :: [out] The partial derivative of PE_chg with dKddt_h in the limit where dKddt_h = 0 [R Z3 T-2 H-1 ~> J m-3 or J kg-1].

  • pe_colht_cor :: [out] The correction to PE_chg that is made due to a net change in the column height [R Z3 T-2 ~> J m-2].

Called from:

epbl_bbl_column epbl_column

subroutine mom_energetic_pbl/find_kd_from_pe_chg(Kd_prev, dKd_max, dt_h, max_PE_chg, hp_a, hp_b, Th_a, Sh_a, Th_b, Sh_b, dT_to_dPE_a, dS_to_dPE_a, dT_to_dPE_b, dS_to_dPE_b, pres_Z, dT_to_dColHt_a, dS_to_dColHt_a, dT_to_dColHt_b, dS_to_dColHt_b, Kd_add, PE_chg, dPE_max, frac_dKd_max_PE)

This subroutine directly calculates the an increment in the diapycnal diffusivity based on the change in potential energy within a timestep, subject to bounds on the possible change in diffusivity, returning both the added diffusivity and the realized potential energy change, and optionally also the maximum change in potential energy that would be realized for an infinitely large diffusivity.

Parameters:
  • kd_prev :: [in] The previously used diffusivity at an interface [H Z T-1 ~> m2 s-1 or kg m-1 s-1].

  • dkd_max :: [in] The maximum change in the diffusivity at an interface [H Z T-1 ~> m2 s-1 or kg m-1 s-1].

  • dt_h :: [in] The time step and divided by the average of the thicknesses around the interface [T Z-1 ~> s m-1].

  • max_pe_chg :: [in] The maximum change in the column potential energy due to additional mixing at an interface [R Z3 T-2 ~> J m-2].

  • hp_a :: [in] The effective pivot thickness of the layer above the interface, given by h_k plus a term that is a fraction (determined from the tridiagonal solver) of Kddt_h for the interface above [H ~> m or kg m-2].

  • hp_b :: [in] The effective pivot thickness of the layer below the interface, given by h_k plus a term that is a fraction (determined from the tridiagonal solver) of Kddt_h for the interface below [H ~> m or kg m-2].

  • th_a :: [in] An effective temperature times a thickness in the layer above, including implicit mixing effects with other yet higher layers [C H ~> degC m or degC kg m-2].

  • sh_a :: [in] An effective salinity times a thickness in the layer above, including implicit mixing effects with other yet higher layers [S H ~> ppt m or ppt kg m-2].

  • th_b :: [in] An effective temperature times a thickness in the layer below, including implicit mixing effects with other yet lower layers [C H ~> degC m or degC kg m-2].

  • sh_b :: [in] An effective salinity times a thickness in the layer below, including implicit mixing effects with other yet lower layers [S H ~> ppt m or ppt kg m-2].

  • dt_to_dpe_a :: [in] A factor (pres_lay*mass_lay*dSpec_vol/dT) relating a layer’s temperature change to the change in column potential energy, including all implicit diffusive changes in the temperatures of all the layers above [R Z3 T-2 C-1 ~> J m-2 degC-1].

  • ds_to_dpe_a :: [in] A factor (pres_lay*mass_lay*dSpec_vol/dS) relating a layer’s salinity change to the change in column potential energy, including all implicit diffusive changes in the salinities of all the layers above [R Z3 T-2 S-1 ~> J m-2 ppt-1].

  • dt_to_dpe_b :: [in] A factor (pres_lay*mass_lay*dSpec_vol/dT) relating a layer’s temperature change to the change in column potential energy, including all implicit diffusive changes in the temperatures of all the layers below [R Z3 T-2 C-1 ~> J m-2 degC-1].

  • ds_to_dpe_b :: [in] A factor (pres_lay*mass_lay*dSpec_vol/dS) relating a layer’s salinity change to the change in column potential energy, including all implicit diffusive changes in the salinities of all the layers below [R Z3 T-2 S-1 ~> J m-2 ppt-1].

  • pres_z :: [in] The rescaled hydrostatic interface pressure, which relates the changes in column thickness to the energy that is radiated as gravity waves and unavailable to drive mixing [R Z2 T-2 ~> J m-3].

  • dt_to_dcolht_a :: [in] A factor (mass_lay*dSColHtc_vol/dT) relating a layer’s temperature change to the change in column height, including all implicit diffusive changes in the temperatures of all the layers above [Z C-1 ~> m degC-1].

  • ds_to_dcolht_a :: [in] A factor (mass_lay*dSColHtc_vol/dS) relating a layer’s salinity change to the change in column height, including all implicit diffusive changes in the salinities of all the layers above [Z S-1 ~> m ppt-1].

  • dt_to_dcolht_b :: [in] A factor (mass_lay*dSColHtc_vol/dT) relating a layer’s temperature change to the change in column height, including all implicit diffusive changes in the temperatures of all the layers below [Z C-1 ~> m degC-1].

  • ds_to_dcolht_b :: [in] A factor (mass_lay*dSColHtc_vol/dS) relating a layer’s salinity change to the change in column height, including all implicit diffusive changes in the salinities of all the layers below [Z S-1 ~> m ppt-1].

  • kd_add :: [out] The additional diffusivity at an interface [H Z T-1 ~> m2 s-1 or kg m-1 s-1].

  • pe_chg :: [out] The realized change in the column potential energy due to additional mixing at an interface [R Z3 T-2 ~> J m-2].

  • dpe_max :: [out] The maximum change in column potential energy that could

  • frac_dkd_max_pe :: [out] The fraction of the energy required to support dKd_max

Called from:

epbl_bbl_column epbl_column

subroutine mom_energetic_pbl/find_pe_chg_orig(Kddt_h, h_k, b_den_1, dTe_term, dSe_term, dT_km1_t2, dS_km1_t2, dT_to_dPE_k, dS_to_dPE_k, dT_to_dPEa, dS_to_dPEa, pres_Z, dT_to_dColHt_k, dS_to_dColHt_k, dT_to_dColHta, dS_to_dColHta, PE_chg, dPEc_dKd, dPE_max, dPEc_dKd_0)

This subroutine calculates the change in potential energy and or derivatives for several changes in an interface’s diapycnal diffusivity times a timestep using the original form used in the first version of ePBL.

Parameters:
  • kddt_h :: [in] The diffusivity at an interface times the time step and divided by the average of the thicknesses around the interface [H ~> m or kg m-2].

  • h_k :: [in] The thickness of the layer below the interface [H ~> m or kg m-2].

  • b_den_1 :: [in] The first term in the denominator of the pivot for the tridiagonal solver, given by h_k plus a term that is a fraction (determined from the tridiagonal solver) of Kddt_h for the interface above [H ~> m or kg m-2].

  • dte_term :: [in] A diffusivity-independent term related to the temperature change in the layer below the interface [C H ~> degC m or degC kg m-2].

  • dse_term :: [in] A diffusivity-independent term related to the salinity change in the layer below the interface [S H ~> ppt m or ppt kg m-2].

  • dt_km1_t2 :: [in] A diffusivity-independent term related to the temperature change in the layer above the interface [C ~> degC].

  • ds_km1_t2 :: [in] A diffusivity-independent term related to the salinity change in the layer above the interface [S ~> ppt].

  • pres_z :: [in] The rescaled hydrostatic interface pressure, which relates the changes in column thickness to the energy that is radiated as gravity waves and unavailable to drive mixing [R Z2 T-2 ~> J m-3].

  • dt_to_dpe_k :: [in] A factor (pres_lay*mass_lay*dSpec_vol/dT) relating a layer’s temperature change to the change in column potential energy, including all implicit diffusive changes in the temperatures of all the layers below [R Z3 T-2 C-1 ~> J m-2 degC-1].

  • ds_to_dpe_k :: [in] A factor (pres_lay*mass_lay*dSpec_vol/dS) relating a layer’s salinity change to the change in column potential energy, including all implicit diffusive changes in the in the salinities of all the layers below [R Z3 T-2 S-1 ~> J m-2 ppt-1].

  • dt_to_dpea :: [in] A factor (pres_lay*mass_lay*dSpec_vol/dT) relating a layer’s temperature change to the change in column potential energy, including all implicit diffusive changes in the temperatures of all the layers above [R Z3 T-2 C-1 ~> J m-2 degC-1].

  • ds_to_dpea :: [in] A factor (pres_lay*mass_lay*dSpec_vol/dS) relating a layer’s salinity change to the change in column potential energy, including all implicit diffusive changes in the salinities of all the layers above [R Z3 T-2 S-1 ~> J m-2 ppt-1].

  • dt_to_dcolht_k :: [in] A factor (mass_lay*dSColHtc_vol/dT) relating a layer’s temperature change to the change in column height, including all implicit diffusive changes in the temperatures of all the layers below [Z C-1 ~> m degC-1].

  • ds_to_dcolht_k :: [in] A factor (mass_lay*dSColHtc_vol/dS) relating a layer’s salinity change to the change in column height, including all implicit diffusive changes in the salinities of all the layers below [Z S-1 ~> m ppt-1].

  • dt_to_dcolhta :: [in] A factor (mass_lay*dSColHtc_vol/dT) relating a layer’s temperature change to the change in column height, including all implicit diffusive changes in the temperatures of all the layers above [Z C-1 ~> m degC-1].

  • ds_to_dcolhta :: [in] A factor (mass_lay*dSColHtc_vol/dS) relating a layer’s salinity change to the change in column height, including all implicit diffusive changes in the salinities of all the layers above [Z S-1 ~> m ppt-1].

  • pe_chg :: [out] The change in column potential energy from applying Kddt_h at the present interface [R Z3 T-2 ~> J m-2].

  • dpec_dkd :: [out] The partial derivative of PE_chg with Kddt_h [R Z3 T-2 H-1 ~> J m-3 or J kg-1].

  • dpe_max :: [out] The maximum change in column potential energy that could be realized by applying a huge value of Kddt_h at the present interface [R Z3 T-2 ~> J m-2].

  • dpec_dkd_0 :: [out] The partial derivative of PE_chg with Kddt_h in the limit where Kddt_h = 0 [R Z3 T-2 H-1 ~> J m-3 or J kg-1].

Called from:

epbl_column

subroutine mom_energetic_pbl/find_mstar(CS, US, Buoyancy_Flux, UStar, BLD, Abs_Coriolis, Is_BBL, mstar, Langmuir_Number, mstar_LT, Convect_Langmuir_Number)

This subroutine finds the mstar value for ePBL.

Parameters:
  • cs :: [in] Energetic PBL control structure

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

  • ustar :: [in] ustar including gustiness [Z T-1 ~> m s-1]

  • abs_coriolis :: [in] absolute value of the Coriolis parameter [T-1 ~> s-1]

  • buoyancy_flux :: [in] Buoyancy flux [Z2 T-3 ~> m2 s-3]

  • bld :: [in] boundary layer depth [Z ~> m]

  • is_bbl :: [in] Logcal flag to indicate if bottom boundary layer mode

  • mstar :: [out] Output mstar (Mixing/ustar**3) [nondim]

  • langmuir_number :: [in] Langmuir number [nondim]

  • mstar_lt :: [out] mstar increase due to Langmuir turbulence [nondim]

  • convect_langmuir_number :: [out] Langmuir number including buoyancy flux [nondim]

Call to:

mstar_from_ekman mstar_from_rh18 mstar_langmuir use_fixed_mstar

Called from:

epbl_bbl_column epbl_column

subroutine mom_energetic_pbl/mstar_langmuir(CS, US, Abs_Coriolis, Buoyancy_Flux, UStar, BLD, Langmuir_Number, mstar, mstar_LT, Convect_Langmuir_Number)

This subroutine modifies the mstar value if the Langmuir number is present.

Parameters:
  • cs :: [in] Energetic PBL control structure

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

  • abs_coriolis :: [in] Absolute value of the Coriolis parameter [T-1 ~> s-1]

  • buoyancy_flux :: [in] Buoyancy flux [Z2 T-3 ~> m2 s-3]

  • ustar :: [in] Surface friction velocity with? gustiness [Z T-1 ~> m s-1]

  • bld :: [in] boundary layer depth [Z ~> m]

  • mstar :: [inout] Input/output mstar (Mixing/ustar**3) [nondim]

  • langmuir_number :: [in] Langmuir number [nondim]

  • mstar_lt :: [out] mstar increase due to Langmuir turbulence [nondim]

  • convect_langmuir_number :: [out] Langmuir number including buoyancy flux [nondim]

Call to:

langmuir_add langmuir_rescale no_langmuir

Called from:

find_mstar

subroutine mom_energetic_pbl/energetic_pbl_get_mld(CS, MLD, G, US, m_to_MLD_units)

Copies the ePBL active mixed layer depth into MLD, in units of [Z ~> m] unless other units are specified.

Parameters:
  • cs :: [in] Energetic PBL control structure

  • g :: [in] Grid structure

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

  • mld :: [out] Depth of ePBL active mixing layer [Z ~> m] or other units

  • m_to_mld_units :: [in] A conversion factor from meters to the desired units for MLD, sometimes [Z m-1 ~> 1]

Called from:

mom_diabatic_driver::diabatic_ale mom_diabatic_driver::diabatic_ale_legacy mom_dynamics_split_rk2::step_mom_dyn_split_rk2

subroutine mom_energetic_pbl/energetic_pbl_init(Time, G, GV, US, param_file, diag, CS)

This subroutine initializes the energetic_PBL module.

Parameters:
  • time :: [in] The current model time

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

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

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

  • param_file :: [in] A structure to parse for run-time parameters

  • diag :: [inout] A structure that is used to regulate diagnostic output

  • cs :: [inout] Energetic PBL control structure

Call to:

additive_string constant_string langmuir_add langmuir_rescale mom_error_handler::mom_error mom_error_handler::mom_mesg mstar_from_ekman mstar_from_rh18 no_langmuir none_string om4_string mom_coms::real_to_efp report_avg_its rescaled_string rh18_string root_tke_string mom_string_functions::uppercase use_fixed_mstar wt_from_croot_tke wt_from_rh18

subroutine mom_energetic_pbl/energetic_pbl_end(CS)

Clean up and deallocate memory associated with the energetic_PBL module.

Parameters:

cs :: [inout] Energetic_PBL control structure

Call to:

mom_coms::efp_to_real mom_error_handler::mom_mesg report_avg_its