mom_diapyc_energy_req module reference¶
Calculates the energy requirements of mixing.
Data Types¶
This control structure holds parameters for the MOM_diapyc_energy_req module. |
Functions/Subroutines¶
This subroutine helps test the accuracy of the diapycnal mixing energy requirement code by writing diagnostics, possibly using an intensely mixing test profile of diffusivity. |
|
This subroutine uses a substantially refactored tridiagonal equation for diapycnal mixing of temperature and salinity to estimate the potential energy change due to diapycnal mixing in a column of water. |
|
This subroutine calculates the change in potential energy and or derivatives for several changes in an interfaces’s diapycnal diffusivity times a timestep. |
|
This subroutine calculates the change in potential energy and or derivatives for several changes in an interfaces’s diapycnal diffusivity times a timestep using the original form used in the first version of ePBL. |
|
Initialize parameters and allocate memory associated with the diapycnal energy requirement module. |
|
Clean up and deallocate memory associated with the diapycnal energy requirement module. |
Detailed Description¶
Calculates the energy requirements of mixing.
Type Documentation¶
-
type
mom_diapyc_energy_req/
diapyc_energy_req_cs
¶ This control structure holds parameters for the MOM_diapyc_energy_req module.
- Type fields:
%
id_ert
[integer] :: Diagnostic IDs.%
id_erb
[integer] :: Diagnostic IDs.%
id_erc
[integer] :: Diagnostic IDs.%
id_erh
[integer] :: Diagnostic IDs.%
id_kddt
[integer] :: Diagnostic IDs.%
id_kd
[integer] :: Diagnostic IDs.%
id_chct
[integer] :: Diagnostic IDs.%
id_chcb
[integer] :: Diagnostic IDs.%
id_chcc
[integer] :: Diagnostic IDs.%
id_chch
[integer] :: Diagnostic IDs.%
id_t0
[integer] :: Diagnostic IDs.%
id_tf
[integer] :: Diagnostic IDs.%
id_s0
[integer] :: Diagnostic IDs.%
id_sf
[integer] :: Diagnostic IDs.%
id_n2_0
[integer] :: Diagnostic IDs.%
id_n2_f
[integer] :: Diagnostic IDs.%
id_h
[integer] :: Diagnostic IDs.%
id_zint
[integer] :: Diagnostic IDs.%
initialized
[logical] :: A variable that is here because empty structures are not permitted by some compilers.%
test_kh_scaling
[real] :: A scaling factor for the diapycnal diffusivity [nondim].%
colht_scaling
[real] :: A scaling factor for the column height change correction term [nondim].%
vonkar
[real] :: The von Karman coefficient as used in this module [nondim].%
use_test_kh_profile
[logical] :: If true, use the internal test diffusivity profile in place of any that might be passed in as an argument.%
diag
[type( diag_ctrl ),pointer] :: A structure that is used to regulate the timing of diagnostic output.
Function/Subroutine Documentation¶
-
subroutine
mom_diapyc_energy_req/
diapyc_energy_req_test
(h_3d, dt, tv, G, GV, US, CS, Kd_int)¶ This subroutine helps test the accuracy of the diapycnal mixing energy requirement code by writing diagnostics, possibly using an intensely mixing test profile of diffusivity.
- Parameters:
g :: [in] The ocean’s grid structure.
gv :: [in] The ocean’s vertical grid structure.
us :: [in] A dimensional unit scaling type
h_3d :: [in] Layer thickness before entrainment [H ~> m or kg m-2].
tv :: [inout] A structure containing pointers to any available thermodynamic fields. Absent fields have NULL ptrs.
dt :: [in] The amount of time covered by this call [T ~> s].
cs :: This module’s control structure.
kd_int :: [in] Interface diffusivities [Z2 T-1 ~> m2 s-1].
- Call to:
- Called from:
-
subroutine
mom_diapyc_energy_req/
diapyc_energy_req_calc
(h_in, T_in, S_in, Kd, energy_Kd, dt, tv, G, GV, US, may_print, CS)¶ This subroutine uses a substantially refactored tridiagonal equation for diapycnal mixing of temperature and salinity to estimate the potential energy change due to diapycnal mixing in a column of water. It does this estimate 4 different ways, all of which should be equivalent, but reports only one. The various estimates are taken because they will later be used as templates for other bits of code.
- 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 :: [in] Layer thickness before entrainment, [H ~> m or kg m-2].
t_in :: [in] The layer temperatures [C ~> degC].
s_in :: [in] The layer salinities [S ~> ppt].
kd :: [in] The interfaces diapycnal diffusivities [Z2 T-1 ~> m2 s-1].
dt :: [in] The amount of time covered by this call [T ~> s].
energy_kd :: [out] The column-integrated rate of energy consumption by diapycnal diffusion [R Z L2 T-3 ~> W m-2].
tv :: [inout] A structure containing pointers to any available thermodynamic fields. Absent fields have NULL ptrs.
may_print :: [in] If present and true, write out diagnostics of energy use.
cs :: This module’s control structure.
- Call to:
- Called from:
-
subroutine
mom_diapyc_energy_req/
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, ColHt_cor)¶ This subroutine calculates the change in potential energy and or derivatives for several changes in an interfaces’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 above [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 Z L2 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 Z L2 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 Z L2 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 Z L2 T-2 S-1 ~> J m-2 ppt-1].
pres_z :: [in] The hydrostatic interface pressure, which is used to relate the changes in column thickness to the energy that is radiated as gravity waves and unavailable to drive mixing [R L2 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 Kddt_h at the present interface [R Z L2 T-2 ~> J m-2].
dpec_dkd :: [out] The partial derivative of PE_chg with Kddt_h, [R Z L2 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 Z L2 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 Z L2 T-2 H-1 ~> J m-3 or J kg-1].
colht_cor :: [out] The correction to PE_chg that is made due to a net change in the column height [R Z L2 T-2 ~> J m-2].
- Called from:
-
subroutine
mom_diapyc_energy_req/
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 interfaces’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 hydrostatic interface pressure, which is used to relate the changes in column thickness to the energy that is radiated as gravity waves and unavailable to drive mixing [R L2 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 Z L2 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 salinities of all the layers below [R Z L2 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 Z L2 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 Z L2 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 Z L2 T-2 ~> J m-2].
dpec_dkd :: [out] The partial derivative of PE_chg with Kddt_h, [R Z L2 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 Z L2 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 Z L2 T-2 H-1 ~> J m-3 or J kg-1].
- Called from:
-
subroutine
mom_diapyc_energy_req/
diapyc_energy_req_init
(Time, G, GV, US, param_file, diag, CS)¶ Initialize parameters and allocate memory associated with the diapycnal energy requirement module.
- Parameters:
time :: [in] model time
g :: [in] model grid structure
gv :: [in] ocean vertical grid structure
us :: [in] A dimensional unit scaling type
param_file :: [in] file to parse for parameter values
diag :: [inout] structure to regulate diagnostic output
cs :: module control structure
- Call to:
-
subroutine
mom_diapyc_energy_req/
diapyc_energy_req_end
(CS)¶ Clean up and deallocate memory associated with the diapycnal energy requirement module.
- Parameters:
cs :: Diapycnal energy requirement control structure that will be deallocated in this subroutine.