MOM6
|
Build mixed layer parameterization.
By Robert Hallberg, 1997 - 2005.
This file contains the subroutine (bulkmixedlayer) that implements a Kraus-Turner-like bulk mixed layer, based on the work of various people, as described in the review paper by Niiler and Kraus (1979), with particular attention to the form proposed by Oberhuber (JPO, 1993, 808-829), with an extension to a refied bulk mixed layer as described in Hallberg (Aha Huliko'a, 2003). The physical processes portrayed in this subroutine include convective adjustment and mixed layer entrainment and detrainment. Penetrating shortwave radiation and an exponential decay of TKE fluxes are also supported by this subroutine. Several constants can alternately be set to give a traditional Kraus-Turner mixed layer scheme, although that is not the preferred option. The physical processes and arguments are described in detail below.
Data Types | |
type | bulkmixedlayer_cs |
The control structure with parameters for the MOM_bulk_mixed_layer module. More... | |
integer | id_clock_detrain =0 |
CPU clock IDs. More... | |
integer | id_clock_mech =0 |
CPU clock IDs. More... | |
integer | id_clock_conv =0 |
CPU clock IDs. More... | |
integer | id_clock_adjustment =0 |
CPU clock IDs. More... | |
integer | id_clock_eos =0 |
CPU clock IDs. More... | |
integer | id_clock_resort =0 |
CPU clock IDs. More... | |
integer | id_clock_pass =0 |
CPU clock IDs. More... | |
subroutine, public | bulkmixedlayer (h_3d, u_3d, v_3d, tv, fluxes, dt, ea, eb, G, GV, US, CS, optics, Hml, aggregate_FW_forcing, dt_diag, last_call) |
This subroutine partially steps the bulk mixed layer model. The following processes are executed, in the order listed. More... | |
subroutine | convective_adjustment (h, u, v, R0, Rcv, T, S, eps, d_eb, dKE_CA, cTKE, j, G, GV, US, CS, nz_conv) |
This subroutine does instantaneous convective entrainment into the buffer layers and mixed layers to remove hydrostatic instabilities. Any water that is lighter than currently in the mixed- or buffer- layer is entrained. More... | |
subroutine | mixedlayer_convection (h, d_eb, htot, Ttot, Stot, uhtot, vhtot, R0_tot, Rcv_tot, u, v, T, S, R0, Rcv, eps, dR0_dT, dRcv_dT, dR0_dS, dRcv_dS, netMassInOut, netMassOut, Net_heat, Net_salt, nsw, Pen_SW_bnd, opacity_band, Conv_En, dKE_FC, j, ksort, G, GV, US, CS, tv, fluxes, dt, aggregate_FW_forcing) |
This subroutine causes the mixed layer to entrain to the depth of free convection. The depth of free convection is the shallowest depth at which the fluid is denser than the average of the fluid above. More... | |
subroutine | find_starting_tke (htot, h_CA, fluxes, Conv_En, cTKE, dKE_FC, dKE_CA, TKE, TKE_river, Idecay_len_TKE, cMKE, dt, Idt_diag, j, ksort, G, GV, US, CS) |
This subroutine determines the TKE available at the depth of free convection to drive mechanical entrainment. More... | |
subroutine | mechanical_entrainment (h, d_eb, htot, Ttot, Stot, uhtot, vhtot, R0_tot, Rcv_tot, u, v, T, S, R0, Rcv, eps, dR0_dT, dRcv_dT, cMKE, Idt_diag, nsw, Pen_SW_bnd, opacity_band, TKE, Idecay_len_TKE, j, ksort, G, GV, US, CS) |
This subroutine calculates mechanically driven entrainment. More... | |
subroutine | sort_ml (h, R0, eps, G, GV, CS, ksort) |
This subroutine generates an array of indices that are sorted by layer density. More... | |
subroutine | resort_ml (h, T, S, R0, Rcv, RcvTgt, eps, d_ea, d_eb, ksort, G, GV, CS, dR0_dT, dR0_dS, dRcv_dT, dRcv_dS) |
This subroutine actually moves properties between layers to achieve a resorted state, with all of the resorted water either moved into the correct interior layers or in the top nkmb layers. More... | |
subroutine | mixedlayer_detrain_2 (h, T, S, R0, Rcv, RcvTgt, dt, dt_diag, d_ea, j, G, GV, US, CS, dR0_dT, dR0_dS, dRcv_dT, dRcv_dS, max_BL_det) |
This subroutine moves any water left in the former mixed layers into the two buffer layers and may also move buffer layer water into the interior isopycnal layers. More... | |
subroutine | mixedlayer_detrain_1 (h, T, S, R0, Rcv, RcvTgt, dt, dt_diag, d_ea, d_eb, j, G, GV, US, CS, dRcv_dT, dRcv_dS, max_BL_det) |
This subroutine moves any water left in the former mixed layers into the single buffer layers and may also move buffer layer water into the interior isopycnal layers. More... | |
subroutine, public | bulkmixedlayer_init (Time, G, GV, US, param_file, diag, CS) |
This subroutine initializes the MOM bulk mixed layer module. More... | |
real function | ef4 (Ht, En, I_L, dR_de) |
This subroutine returns an approximation to the integral R = exp(-L*(H+E)) integral(LH to L(H+E)) L/(1-(1+x)exp(-x)) dx. The approximation to the integrand is good to within -2% at x~.3 and +25% at x~3.5, but the exponential deemphasizes the importance of large x. When L=0, EF4 returns E/((Ht+E)*Ht). More... | |
subroutine, public mom_bulk_mixed_layer::bulkmixedlayer | ( | real, dimension( g %isd: g %ied, g %jsd: g %jed, gv %ke), intent(inout) | h_3d, |
real, dimension( g %isd: g %ied, g %jsd: g %jed, gv %ke), intent(in) | u_3d, | ||
real, dimension( g %isd: g %ied, g %jsd: g %jed, gv %ke), intent(in) | v_3d, | ||
type(thermo_var_ptrs), intent(inout) | tv, | ||
type(forcing), intent(inout) | fluxes, | ||
real, intent(in) | dt, | ||
real, dimension( g %isd: g %ied, g %jsd: g %jed, gv %ke), intent(inout) | ea, | ||
real, dimension( g %isd: g %ied, g %jsd: g %jed, gv %ke), intent(inout) | eb, | ||
type(ocean_grid_type), intent(inout) | G, | ||
type(verticalgrid_type), intent(in) | GV, | ||
type(unit_scale_type), intent(in) | US, | ||
type(bulkmixedlayer_cs), pointer | CS, | ||
type(optics_type), pointer | optics, | ||
real, dimension(:,:), pointer | Hml, | ||
logical, intent(in) | aggregate_FW_forcing, | ||
real, intent(in), optional | dt_diag, | ||
logical, intent(in), optional | last_call | ||
) |
This subroutine partially steps the bulk mixed layer model. The following processes are executed, in the order listed.
The key parameters for the mixed layer are found in the control structure. These include mstar, nstar, nstar2, pen_SW_frac, pen_SW_scale, and TKE_decay. For the Oberhuber (1993) mixed layer, the values of these are: pen_SW_frac = 0.42, pen_SW_scale = 15.0 m, mstar = 1.25, nstar = 1, TKE_decay = 2.5, conv_decay = 0.5 TKE_decay is 1/kappa in eq. 28 of Oberhuber (1993), while conv_decay is 1/mu. Conv_decay has been eliminated in favor of the well-calibrated form for the efficiency of penetrating convection from Wang (2003). For a traditional Kraus-Turner mixed layer, the values are: pen_SW_frac = 0.0, pen_SW_scale = 0.0 m, mstar = 1.25, nstar = 0.4, TKE_decay = 0.0, conv_decay = 0.0
[in,out] | g | The ocean's grid structure. |
[in] | gv | The ocean's vertical grid structure. |
[in] | us | A dimensional unit scaling type |
[in,out] | h_3d | Layer thickness [H ~> m or kg m-2]. |
[in] | u_3d | Zonal velocities interpolated to h points |
[in] | v_3d | Zonal velocities interpolated to h points |
[in,out] | tv | A structure containing pointers to any available thermodynamic fields. Absent fields have NULL ptrs. |
[in,out] | fluxes | A structure containing pointers to any possible forcing fields. Unused fields have NULL ptrs. |
[in] | dt | Time increment [T ~> s]. |
[in,out] | ea | The amount of fluid moved downward into a |
[in,out] | eb | The amount of fluid moved upward into a |
cs | The control structure returned by a previous call to mixedlayer_init. | |
optics | The structure containing the inverse of the vertical absorption decay scale for penetrating shortwave radiation [m-1]. | |
hml | Active mixed layer depth [m]. | |
[in] | aggregate_fw_forcing | If true, the net incoming and outgoing surface freshwater fluxes are combined before being applied, instead of being applied separately. |
[in] | dt_diag | The diagnostic time step, which may be less than dt if there are two callse to mixedlayer [T ~> s]. |
[in] | last_call | if true, this is the last call to mixedlayer in the current time step, so diagnostics will be written. The default is .true. |
Definition at line 189 of file MOM_bulk_mixed_layer.F90.
References mom_opacity::absorbremainingsw(), convective_adjustment(), mom_diag_mediator::diag_update_remap_grids(), mom_domains::do_group_pass(), mom_opacity::extract_optics_slice(), mom_forcing_type::extractfluxes1d(), find_starting_tke(), id_clock_adjustment, id_clock_conv, id_clock_detrain, id_clock_eos, id_clock_mech, id_clock_pass, id_clock_resort, mechanical_entrainment(), mixedlayer_convection(), mixedlayer_detrain_1(), mixedlayer_detrain_2(), mom_error_handler::mom_error(), resort_ml(), and sort_ml().
Referenced by mom_diabatic_driver::layered_diabatic().
subroutine, public mom_bulk_mixed_layer::bulkmixedlayer_init | ( | type(time_type), intent(in), target | Time, |
type(ocean_grid_type), intent(in) | G, | ||
type(verticalgrid_type), intent(in) | GV, | ||
type(unit_scale_type), intent(in) | US, | ||
type(param_file_type), intent(in) | param_file, | ||
type(diag_ctrl), intent(inout), target | diag, | ||
type(bulkmixedlayer_cs), pointer | CS | ||
) |
This subroutine initializes the MOM bulk mixed layer module.
[in] | time | The model's clock with the current time. |
[in] | g | The ocean's grid structure. |
[in] | gv | The ocean's vertical grid structure. |
[in] | us | A dimensional unit scaling type |
[in] | param_file | A structure to parse for run-time parameters. |
[in,out] | diag | A structure that is used to regulate diagnostic output. |
cs | A pointer that is set to point to the control structure for this module. |
Definition at line 3382 of file MOM_bulk_mixed_layer.F90.
References id_clock_adjustment, id_clock_conv, id_clock_detrain, id_clock_eos, id_clock_mech, id_clock_pass, id_clock_resort, and mom_error_handler::mom_error().
Referenced by mom_diabatic_driver::diabatic_driver_init().
|
private |
This subroutine does instantaneous convective entrainment into the buffer layers and mixed layers to remove hydrostatic instabilities. Any water that is lighter than currently in the mixed- or buffer- layer is entrained.
[in] | g | The ocean's grid structure. |
[in] | gv | The ocean's vertical grid structure. |
[in,out] | h | Layer thickness [H ~> m or kg m-2]. The units of h are referred to as H below. |
[in,out] | u | Zonal velocities interpolated to h points [L T-1 ~> m s-1]. |
[in,out] | v | Zonal velocities interpolated to h points [L T-1 ~> m s-1]. |
[in,out] | t | Layer temperatures [degC]. |
[in,out] | s | Layer salinities [ppt]. |
[in,out] | r0 | Potential density referenced to surface pressure [R ~> kg m-3]. |
[in,out] | rcv | The coordinate defining potential density [R ~> kg m-3]. |
[in,out] | d_eb | The downward increase across a layer in the entrainment from below [H ~> m or kg m-2]. Positive values go with mass gain by a layer. |
[in] | eps | The negligibly small amount of water that will be left in each layer [H ~> m or kg m-2]. |
[out] | dke_ca | The vertically integrated change in kinetic energy due to convective adjustment [Z L2 T-2 ~> m3 s-2]. |
[out] | ctke | The buoyant turbulent kinetic energy source due to convective adjustment [Z L2 T-2 ~> m3 s-2]. |
[in] | j | The j-index to work on. |
[in] | us | A dimensional unit scaling type |
cs | The control structure for this module. | |
[in] | nz_conv | If present, the number of layers over which to do convective adjustment (perhaps CSnkml). |
Definition at line 803 of file MOM_bulk_mixed_layer.F90.
Referenced by bulkmixedlayer().
|
private |
This subroutine returns an approximation to the integral R = exp(-L*(H+E)) integral(LH to L(H+E)) L/(1-(1+x)exp(-x)) dx. The approximation to the integrand is good to within -2% at x~.3 and +25% at x~3.5, but the exponential deemphasizes the importance of large x. When L=0, EF4 returns E/((Ht+E)*Ht).
[in] | ht | Total thickness [H ~> m or kg m-2]. |
[in] | en | Entrainment [H ~> m or kg m-2]. |
[in] | i_l | The e-folding scale [H-1 ~> m-1 or m2 kg-1] |
[in,out] | dr_de | The partial derivative of the result R with E [H-2 ~> m-2 or m4 kg-2]. |
Definition at line 3683 of file MOM_bulk_mixed_layer.F90.
Referenced by mechanical_entrainment().
|
private |
This subroutine determines the TKE available at the depth of free convection to drive mechanical entrainment.
[in] | g | The ocean's grid structure. |
[in] | gv | The ocean's vertical grid structure. |
[in] | us | A dimensional unit scaling type |
[in] | htot | The accumulated mixed layer thickness [H ~> m or kg m-2] |
[in] | h_ca | The mixed layer depth after convective adjustment [H ~> m or kg m-2]. |
[in] | fluxes | A structure containing pointers to any possible forcing fields. Unused fields have NULL ptrs. |
[in,out] | conv_en | The buoyant turbulent kinetic energy source due to free convection [Z L2 T-2 ~> m3 s-2]. |
[in] | dke_fc | The vertically integrated change in kinetic energy due to free convection [Z L2 T-2 ~> m3 s-2]. |
[in] | ctke | The buoyant turbulent kinetic energy |
[in] | dke_ca | The vertically integrated change in |
[out] | tke | The turbulent kinetic energy available for mixing over a time step [Z m2 T-2 ~> m3 s-2]. |
[out] | idecay_len_tke | The inverse of the vertical decay scale for TKE [H-1 ~> m-1 or m2 kg-1]. |
[in] | tke_river | The source of turbulent kinetic energy available for driving mixing at river mouths [Z L2 T-3 ~> m3 s-3]. |
[out] | cmke | Coefficients of HpE and HpE^2 in calculating the denominator of MKE_rate, [H-1 ~> m-1 or m2 kg-1] and [H-2 ~> m-2 or m4 kg-2]. |
[in] | dt | The time step [T ~> s]. |
[in] | idt_diag | The inverse of the accumulated diagnostic time interval [T-1 ~> s-1]. |
[in] | j | The j-index to work on. |
[in] | ksort | The density-sorted k-indicies. |
cs | The control structure for this module. |
Definition at line 1308 of file MOM_bulk_mixed_layer.F90.
Referenced by bulkmixedlayer().
|
private |
This subroutine calculates mechanically driven entrainment.
[in] | g | The ocean's grid structure. |
[in] | gv | The ocean's vertical grid structure. |
[in] | us | A dimensional unit scaling type |
[in,out] | h | Layer thickness [H ~> m or kg m-2]. |
[in,out] | d_eb | The downward increase across a layer in the |
[in,out] | htot | The accumlated mixed layer thickness [H ~> m or kg m-2]. |
[in,out] | ttot | The depth integrated mixed layer temperature [degC H ~> degC m or degC kg m-2]. |
[in,out] | stot | The depth integrated mixed layer salinity [ppt H ~> ppt m or ppt kg m-2]. |
[in,out] | uhtot | The depth integrated mixed layer zonal velocity [H L T-1 ~> m2 s-1 or kg m-1 s-1]. |
[in,out] | vhtot | The integrated mixed layer meridional velocity [H L T-1 ~> m2 s-1 or kg m-1 s-1]. |
[in,out] | r0_tot | The integrated mixed layer potential density referenced to 0 pressure [H R ~> kg m-2 or kg2 m-5]. |
[in,out] | rcv_tot | The integrated mixed layer coordinate variable potential density [H R ~> kg m-2 or kg2 m-5]. |
[in] | u | Zonal velocities interpolated to h points [L T-1 ~> m s-1]. |
[in] | v | Zonal velocities interpolated to h points [L T-1 ~> m s-1]. |
[in] | t | Layer temperatures [degC]. |
[in] | s | Layer salinities [ppt]. |
[in] | r0 | Potential density referenced to |
[in] | rcv | The coordinate defining potential |
[in] | eps | The negligibly small amount of water |
[in] | dr0_dt | The partial derivative of R0 with respect to temperature [R degC-1 ~> kg m-3 degC-1]. |
[in] | drcv_dt | The partial derivative of Rcv with respect to temperature [R degC-1 ~> kg m-3 degC-1]. |
[in] | cmke | Coefficients of HpE and HpE^2 used in calculating the denominator of MKE_rate; the two elements have differing units of [H-1 ~> m-1 or m2 kg-1] and [H-2 ~> m-2 or m4 kg-2]. |
[in] | idt_diag | The inverse of the accumulated diagnostic time interval [T-1 ~> s-1]. |
[in] | nsw | The number of bands of penetrating shortwave radiation. |
[in,out] | pen_sw_bnd | The penetrating shortwave heating at the sea surface in each penetrating band [degC H ~> degC m or degC kg m-2]. |
[in] | opacity_band | The opacity in each band of penetrating shortwave radiation [H-1 ~> m-1 or m2 kg-1]. |
[in,out] | tke | The turbulent kinetic energy available for mixing over a time step [Z m2 T-2 ~> m3 s-2]. |
[in,out] | idecay_len_tke | The vertical TKE decay rate [H-1 ~> m-1 or m2 kg-1]. |
[in] | j | The j-index to work on. |
[in] | ksort | The density-sorted k-indicies. |
cs | The control structure for this module. |
Definition at line 1495 of file MOM_bulk_mixed_layer.F90.
References ef4().
Referenced by bulkmixedlayer().
|
private |
This subroutine causes the mixed layer to entrain to the depth of free convection. The depth of free convection is the shallowest depth at which the fluid is denser than the average of the fluid above.
[in] | g | The ocean's grid structure. |
[in] | gv | The ocean's vertical grid structure. |
[in,out] | h | Layer thickness [H ~> m or kg m-2]. |
[in,out] | d_eb | The downward increase across a layer in the |
[out] | htot | The accumulated mixed layer thickness [H ~> m or kg m-2]. |
[out] | ttot | The depth integrated mixed layer temperature [degC H ~> degC m or degC kg m-2]. |
[out] | stot | The depth integrated mixed layer salinity [ppt H ~> ppt m or ppt kg m-2]. |
[out] | uhtot | The depth integrated mixed layer zonal velocity [H L T-1 ~> m2 s-1 or kg m-1 s-1]. |
[out] | vhtot | The integrated mixed layer meridional velocity [H L T-1 ~> m2 s-1 or kg m-1 s-1]. |
[out] | r0_tot | The integrated mixed layer potential density referenced to 0 pressure [H R ~> kg m-2 or kg2 m-5]. |
[out] | rcv_tot | The integrated mixed layer coordinate variable potential density [H R ~> kg m-2 or kg2 m-5]. |
[in] | u | Zonal velocities interpolated to h points [L T-1 ~> m s-1]. |
[in] | v | Zonal velocities interpolated to h points [L T-1 ~> m s-1]. |
[in] | t | Layer temperatures [degC]. |
[in] | s | Layer salinities [ppt]. |
[in] | r0 | Potential density referenced to |
[in] | rcv | The coordinate defining potential |
[in] | eps | The negligibly small amount of water |
[in] | dr0_dt | The partial derivative of R0 with respect to temperature [R degC-1 ~> kg m-3 degC-1]. |
[in] | drcv_dt | The partial derivative of Rcv with respect to temperature [R degC-1 ~> kg m-3 degC-1]. |
[in] | dr0_ds | The partial derivative of R0 with respect to salinity [R ppt-1 ~> kg m-3 ppt-1]. |
[in] | drcv_ds | The partial derivative of Rcv with respect to salinity [R ppt-1 ~> kg m-3 ppt-1]. |
[in] | netmassinout | The net mass flux (if non-Boussinesq) or volume flux (if Boussinesq) into the ocean within a time step [H ~> m or kg m-2]. (I.e. P+R-E.) |
[in] | netmassout | The mass or volume flux out of the ocean within a time step [H ~> m or kg m-2]. |
[in] | net_heat | The net heating at the surface over a time step [degC H ~> degC m or degC kg m-2]. Any penetrating shortwave radiation is not included in Net_heat. |
[in] | net_salt | The net surface salt flux into the ocean over a time step [ppt H ~> ppt m or ppt kg m-2]. |
[in] | nsw | The number of bands of penetrating shortwave radiation. |
[in,out] | pen_sw_bnd | The penetrating shortwave heating at the sea surface in each penetrating band [degC H ~> degC m or degC kg m-2]. |
[in] | opacity_band | The opacity in each band of penetrating shortwave radiation [H-1 ~> m-1 or m2 kg-1]. |
[out] | conv_en | The buoyant turbulent kinetic energy source due to free convection [Z L2 T-2 ~> m3 s-2]. |
[out] | dke_fc | The vertically integrated change in kinetic energy due to free convection [Z L2 T-2 ~> m3 s-2]. |
[in] | j | The j-index to work on. |
[in] | ksort | The density-sorted k-indices. |
[in] | us | A dimensional unit scaling type |
cs | The control structure for this module. | |
[in,out] | tv | A structure containing pointers to any available thermodynamic fields. Absent fields have NULL ptrs. |
[in,out] | fluxes | A structure containing pointers to any possible forcing fields. Unused fields have NULL ptrs. |
[in] | dt | Time increment [T ~> s]. |
[in] | aggregate_fw_forcing | If true, the net incoming and outgoing surface freshwater fluxes are combined before being applied, instead of being applied separately. |
Definition at line 940 of file MOM_bulk_mixed_layer.F90.
Referenced by bulkmixedlayer().
|
private |
This subroutine moves any water left in the former mixed layers into the single buffer layers and may also move buffer layer water into the interior isopycnal layers.
[in] | g | The ocean's grid structure. |
[in] | gv | The ocean's vertical grid structure. |
[in,out] | h | Layer thickness [H ~> m or kg m-2]. Layer 0 is the new mixed layer. |
[in,out] | t | Potential temperature [degC]. |
[in,out] | s | Salinity [ppt]. |
[in,out] | r0 | Potential density referenced to surface pressure [R ~> kg m-3]. |
[in,out] | rcv | The coordinate defining potential density [R ~> kg m-3]. |
[in] | rcvtgt | The target value of Rcv for each layer [R ~> kg m-3]. |
[in] | dt | Time increment [T ~> s]. |
[in] | dt_diag | The accumulated time interval for diagnostics [T ~> s]. |
[in,out] | d_ea | The upward increase across a layer in the entrainment from above [H ~> m or kg m-2]. Positive d_ea goes with layer thickness increases. |
[in,out] | d_eb | The downward increase across a layer in the entrainment from below [H ~> m or kg m-2]. Positive values go with mass gain by a layer. |
[in] | j | The meridional row to work on. |
[in] | us | A dimensional unit scaling type |
cs | The control structure returned by a previous call to mixedlayer_init. | |
[in] | drcv_dt | The partial derivative of coordinate defining potential density with potential temperature [R degC-1 ~> kg m-3 degC-1]. |
[in] | drcv_ds | The partial derivative of coordinate defining potential density with salinity [R ppt-1 ~> kg m-3 ppt-1]. |
[in] | max_bl_det | If non-negative, the maximum detrainment permitted from the buffer layers [H ~> m or kg m-2]. |
Definition at line 3097 of file MOM_bulk_mixed_layer.F90.
References mom_error_handler::mom_error().
Referenced by bulkmixedlayer().
|
private |
This subroutine moves any water left in the former mixed layers into the two buffer layers and may also move buffer layer water into the interior isopycnal layers.
[in] | g | The ocean's grid structure. |
[in] | gv | The ocean's vertical grid structure. |
[in,out] | h | Layer thickness [H ~> m or kg m-2]. Layer 0 is the new mixed layer. |
[in,out] | t | Potential temperature [degC]. |
[in,out] | s | Salinity [ppt]. |
[in,out] | r0 | Potential density referenced to surface pressure [R ~> kg m-3]. |
[in,out] | rcv | The coordinate defining potential density [R ~> kg m-3]. |
[in] | rcvtgt | The target value of Rcv for each layer [R ~> kg m-3]. |
[in] | dt | Time increment [T ~> s]. |
[in] | dt_diag | The diagnostic time step [T ~> s]. |
[in,out] | d_ea | The upward increase across a layer in the entrainment from above [H ~> m or kg m-2]. Positive d_ea goes with layer thickness increases. |
[in] | j | The meridional row to work on. |
[in] | us | A dimensional unit scaling type |
cs | The control structure returned by a previous call to mixedlayer_init. | |
[in] | dr0_dt | The partial derivative of potential density referenced to the surface with potential temperature, [R degC-1 ~> kg m-3 degC-1]. |
[in] | dr0_ds | The partial derivative of cpotential density referenced to the surface with salinity [R ppt-1 ~> kg m-3 ppt-1]. |
[in] | drcv_dt | The partial derivative of coordinate defining potential density with potential temperature, [R degC-1 ~> kg m-3 degC-1]. |
[in] | drcv_ds | The partial derivative of coordinate defining potential density with salinity [R ppt-1 ~> kg m-3 ppt-1]. |
[in] | max_bl_det | If non-negative, the maximum detrainment permitted from the buffer layers [H ~> m or kg m-2]. |
Definition at line 2206 of file MOM_bulk_mixed_layer.F90.
References mom_error_handler::mom_error().
Referenced by bulkmixedlayer().
|
private |
This subroutine actually moves properties between layers to achieve a resorted state, with all of the resorted water either moved into the correct interior layers or in the top nkmb layers.
[in] | g | The ocean's grid structure. |
[in] | gv | The ocean's vertical grid structure. |
[in,out] | h | Layer thickness [H ~> m or kg m-2]. Layer 0 is the new mixed layer. |
[in,out] | t | Layer temperatures [degC]. |
[in,out] | s | Layer salinities [ppt]. |
[in,out] | r0 | Potential density referenced to surface pressure [R ~> kg m-3]. |
[in,out] | rcv | The coordinate defining potential density [R ~> kg m-3]. |
[in] | rcvtgt | The target value of Rcv for each layer [R ~> kg m-3]. |
[in,out] | eps | The (small) thickness that must remain in each layer [H ~> m or kg m-2]. |
[in,out] | d_ea | The upward increase across a layer in the entrainment from above [H ~> m or kg m-2]. Positive d_ea goes with layer thickness increases. |
[in,out] | d_eb | The downward increase across a layer in the entrainment from below [H ~> m or kg m-2]. Positive values go with mass gain by a layer. |
[in] | ksort | The density-sorted k-indicies. |
cs | The control structure for this module. | |
[in] | dr0_dt | The partial derivative of potential density referenced to the surface with potential temperature [R degC-1 ~> kg m-3 degC-1]. |
[in] | dr0_ds | The partial derivative of cpotential density referenced to the surface with salinity, [R ppt-1 ~> kg m-3 ppt-1]. |
[in] | drcv_dt | The partial derivative of coordinate defining potential density with potential temperature [R degC-1 ~> kg m-3 degC-1]. |
[in] | drcv_ds | The partial derivative of coordinate defining potential density with salinity, [R ppt-1 ~> kg m-3 ppt-1]. |
Definition at line 1885 of file MOM_bulk_mixed_layer.F90.
Referenced by bulkmixedlayer().
|
private |
This subroutine generates an array of indices that are sorted by layer density.
[in] | g | The ocean's grid structure. |
[in] | gv | The ocean's vertical grid structure. |
[in] | h | Layer thickness [H ~> m or kg m-2]. |
[in] | r0 | The potential density used to sort the layers [R ~> kg m-3]. |
[in] | eps | The (small) thickness that must remain in each layer [H ~> m or kg m-2]. |
cs | The control structure returned by a previous call to mixedlayer_init. | |
[out] | ksort | The k-index to use in the sort. |
Definition at line 1833 of file MOM_bulk_mixed_layer.F90.
Referenced by bulkmixedlayer().
|
private |
CPU clock IDs.
Definition at line 151 of file MOM_bulk_mixed_layer.F90.
Referenced by bulkmixedlayer(), and bulkmixedlayer_init().
|
private |
CPU clock IDs.
Definition at line 151 of file MOM_bulk_mixed_layer.F90.
Referenced by bulkmixedlayer(), and bulkmixedlayer_init().
integer mom_bulk_mixed_layer::id_clock_detrain =0 |
CPU clock IDs.
Definition at line 151 of file MOM_bulk_mixed_layer.F90.
Referenced by bulkmixedlayer(), and bulkmixedlayer_init().
|
private |
CPU clock IDs.
Definition at line 152 of file MOM_bulk_mixed_layer.F90.
Referenced by bulkmixedlayer(), and bulkmixedlayer_init().
|
private |
CPU clock IDs.
Definition at line 151 of file MOM_bulk_mixed_layer.F90.
Referenced by bulkmixedlayer(), and bulkmixedlayer_init().
|
private |
CPU clock IDs.
Definition at line 152 of file MOM_bulk_mixed_layer.F90.
Referenced by bulkmixedlayer(), and bulkmixedlayer_init().
|
private |
CPU clock IDs.
Definition at line 152 of file MOM_bulk_mixed_layer.F90.
Referenced by bulkmixedlayer(), and bulkmixedlayer_init().