MOM6
|
Provides subroutines for quantities specific to the equation of state.
The MOM_EOS module is a wrapper for various equations of state (e.g. Linear, Wright, UNESCO) and provides a uniform interface to the rest of the model independent of which equation of state is being used.
Data Types | |
interface | calculate_density |
Calculates density of sea water from T, S and P. More... | |
interface | calculate_tfreeze |
Calculates the freezing point of sea water from T, S and P. More... | |
type | eos_type |
A control structure for the equation of state. More... | |
Functions/Subroutines | |
subroutine | calculate_density_scalar (T, S, pressure, rho, EOS) |
Calls the appropriate subroutine to calculate density of sea water for scalar inputs. More... | |
subroutine | calculate_density_array (T, S, pressure, rho, start, npts, EOS) |
Calls the appropriate subroutine to calculate the density of sea water for 1-D array inputs. More... | |
subroutine | calculate_tfreeze_scalar (S, pressure, T_fr, EOS) |
Calls the appropriate subroutine to calculate the freezing point for scalar inputs. More... | |
subroutine | calculate_tfreeze_array (S, pressure, T_fr, start, npts, EOS) |
Calls the appropriate subroutine to calculate the freezing point for a 1-D array. More... | |
subroutine, public | calculate_density_derivs (T, S, pressure, drho_dT, drho_dS, start, npts, EOS) |
Calls the appropriate subroutine to calculate density derivatives for 1-D array inputs. More... | |
subroutine, public | calculate_specific_vol_derivs (T, S, pressure, dSV_dT, dSV_dS, start, npts, EOS) |
Calls the appropriate subroutine to calculate specific volume derivatives for an array. More... | |
subroutine, public | calculate_compress (T, S, pressure, rho, drho_dp, start, npts, EOS) |
Calls the appropriate subroutine to calculate the density and compressibility for 1-D array inputs. More... | |
subroutine, public | int_specific_vol_dp (T, S, p_t, p_b, alpha_ref, HI, EOS, dza, intp_dza, intx_dza, inty_dza, halo_size) |
Calls the appropriate subroutine to alculate analytical and nearly-analytical integrals in pressure across layers of geopotential anomalies, which are required for calculating the finite-volume form pressure accelerations in a non-Boussinesq model. There are essentially no free assumptions, apart from the use of Bode's rule to do the horizontal integrals, and from a truncation in the series for log(1-eps/1+eps) that assumes that |eps| < . More... | |
subroutine, public | int_density_dz (T, S, z_t, z_b, rho_ref, rho_0, G_e, HII, HIO, EOS, dpa, intz_dpa, intx_dpa, inty_dpa) |
This subroutine calculates analytical and nearly-analytical integrals of pressure anomalies across layers, which are required for calculating the finite-volume form pressure accelerations in a Boussinesq model. The one potentially dodgy assumtion here is that rho_0 is used both in the denominator of the accelerations, and in the pressure used to calculated density (the latter being -z*rho_0*G_e). These two uses could be separated if need be. More... | |
logical function, public | query_compressible (EOS) |
Returns true if the equation of state is compressible (i.e. has pressure dependence) More... | |
subroutine, public | eos_init (param_file, EOS) |
Initializes EOS_type by allocating and reading parameters. More... | |
subroutine, public | eos_allocate (EOS) |
Allocates EOS_type. More... | |
subroutine, public | eos_end (EOS) |
Deallocates EOS_type. More... | |
subroutine, public | eos_use_linear (Rho_T0_S0, dRho_dT, dRho_dS, EOS, use_quadrature) |
Set equation of state structure (EOS) to linear with given coefficients. More... | |
subroutine | int_density_dz_generic (T, S, z_t, z_b, rho_ref, rho_0, G_e, HII, HIO, EOS, dpa, intz_dpa, intx_dpa, inty_dpa) |
subroutine | int_density_dz_generic_cell (T_t_arg, T_b_arg, S_t_arg, S_b_arg, z_t_arg, z_b_arg, depth, rho_ref, rho_0, G_e, EOS, dpa, intz_dpa, intx_dpa, inty_dpa) |
subroutine, public | int_density_dz_generic_plm (T_t, T_b, S_t, S_b, z_t, z_b, rho_ref, rho_0, G_e, H_subroundoff, bathyT, HII, HIO, EOS, dpa, intz_dpa, intx_dpa, inty_dpa, useMassWghtInterp) |
subroutine, public | find_depth_of_pressure_in_cell (T_t, T_b, S_t, S_b, z_t, z_b, P_t, P_tgt, rho_ref, G_e, EOS, P_b, z_out) |
Find the depth at which the reconstructed pressure matches P_tgt. More... | |
real function | frac_dp_at_pos (T_t, T_b, S_t, S_b, z_t, z_b, rho_ref, G_e, pos, EOS) |
Returns change in anomalous pressure change from top to non-dimensional position pos between z_t and z_b. More... | |
subroutine, public | int_density_dz_generic_ppm (T, T_t, T_b, S, S_t, S_b, z_t, z_b, rho_ref, rho_0, G_e, HII, HIO, EOS, dpa, intz_dpa, intx_dpa, inty_dpa) |
subroutine, public | int_density_dz_generic_plm_analytic (T_t, T_b, S_t, S_b, z_t, z_b, rho_ref, rho_0, G_e, HI, EOS, dpa, intz_dpa, intx_dpa, inty_dpa) |
subroutine | compute_integral_bilinear (x, y, f, integral) |
subroutine | compute_integral_quadratic (x, y, f, integral) |
subroutine | evaluate_shape_bilinear (xi, eta, phi, dphidxi, dphideta) |
subroutine | evaluate_shape_quadratic (xi, eta, phi, dphidxi, dphideta) |
subroutine | int_spec_vol_dp_generic (T, S, p_t, p_b, alpha_ref, HI, EOS, dza, intp_dza, intx_dza, inty_dza, halo_size) |
subroutine, public | convert_temp_salt_for_teos10 (T, S, press, G, kd, mask_z, EOS) |
Convert T&S to Absolute Salinity and Conservative Temperature if using TEOS10. More... | |
Variables | |
integer, parameter | eos_linear = 1 |
integer, parameter | eos_unesco = 2 |
integer, parameter | eos_wright = 3 |
integer, parameter | eos_teos10 = 4 |
integer, parameter | eos_nemo = 5 |
character *(10), parameter | eos_linear_string = "LINEAR" |
character *(10), parameter | eos_unesco_string = "UNESCO" |
character *(10), parameter | eos_wright_string = "WRIGHT" |
character *(10), parameter | eos_teos10_string = "TEOS10" |
character *(10), parameter | eos_nemo_string = "NEMO" |
character *(10), parameter | eos_default = EOS_WRIGHT_STRING |
integer, parameter | tfreeze_linear = 1 |
integer, parameter | tfreeze_millero = 2 |
integer, parameter | tfreeze_teos10 = 3 |
character *(10), parameter | tfreeze_linear_string = "LINEAR" |
character *(10), parameter | tfreeze_millero_string = "MILLERO_78" |
character *(10), parameter | tfreeze_teos10_string = "TEOS10" |
character *(10), parameter | tfreeze_default = TFREEZE_LINEAR_STRING |
subroutine, public mom_eos::calculate_compress | ( | real, dimension(:), intent(in) | T, |
real, dimension(:), intent(in) | S, | ||
real, dimension(:), intent(in) | pressure, | ||
real, dimension(:), intent(out) | rho, | ||
real, dimension(:), intent(out) | drho_dp, | ||
integer, intent(in) | start, | ||
integer, intent(in) | npts, | ||
type(eos_type), pointer | EOS | ||
) |
Calls the appropriate subroutine to calculate the density and compressibility for 1-D array inputs.
[in] | t | Potential temperature referenced to the surface (degC) |
[in] | s | Salinity (PSU) |
[in] | pressure | Pressure (Pa) |
[out] | rho | In situ density in kg m-3. |
[out] | drho_dp | The partial derivative of density with pressure (also the inverse of the square of sound speed) in s2 m-2. |
[in] | start | Starting index within the array |
[in] | npts | The number of values to calculate |
eos | Equation of state structure |
Definition at line 293 of file MOM_EOS.F90.
References mom_eos_linear::calculate_compress_linear(), mom_eos_nemo::calculate_compress_nemo(), mom_eos_unesco::calculate_compress_unesco(), mom_eos_wright::calculate_compress_wright(), eos_linear, eos_nemo, eos_teos10, eos_unesco, eos_wright, and mom_error_handler::mom_error().
|
private |
Calls the appropriate subroutine to calculate the density of sea water for 1-D array inputs.
[in] | t | Potential temperature referenced to the surface (degC) |
[in] | s | Salinity (PSU) |
[in] | pressure | Pressure (Pa) |
[out] | rho | Density (in-situ if pressure is local) (kg m-3) |
[in] | start | Start index for computation |
[in] | npts | Number of point to compute |
eos | Equation of state structure |
Definition at line 130 of file MOM_EOS.F90.
References eos_linear, eos_nemo, eos_teos10, eos_unesco, eos_wright, and mom_error_handler::mom_error().
Referenced by frac_dp_at_pos(), and int_density_dz_generic_plm().
subroutine, public mom_eos::calculate_density_derivs | ( | real, dimension(:), intent(in) | T, |
real, dimension(:), intent(in) | S, | ||
real, dimension(:), intent(in) | pressure, | ||
real, dimension(:), intent(out) | drho_dT, | ||
real, dimension(:), intent(out) | drho_dS, | ||
integer, intent(in) | start, | ||
integer, intent(in) | npts, | ||
type(eos_type), pointer | EOS | ||
) |
Calls the appropriate subroutine to calculate density derivatives for 1-D array inputs.
[in] | t | Potential temperature referenced to the surface (degC) |
[in] | s | Salinity (PSU) |
[in] | pressure | Pressure (Pa) |
[out] | drho_dt | The partial derivative of density with potential tempetature, in kg m-3 K-1. |
[out] | drho_ds | The partial derivative of density with salinity, in kg m-3 psu-1. |
[in] | start | Starting index within the array |
[in] | npts | The number of values to calculate |
eos | Equation of state structure |
Definition at line 214 of file MOM_EOS.F90.
References eos_linear, eos_nemo, eos_teos10, eos_unesco, eos_wright, and mom_error_handler::mom_error().
Referenced by mom_diabatic_aux::applyboundaryfluxesinout(), benchmark_initialization::benchmark_init_temperature_salinity(), benchmark_initialization::benchmark_initialize_thickness(), coord_adapt::build_adapt_column(), coord_slight::build_slight_column(), mom_bulk_mixed_layer::bulkmixedlayer(), mom_isopycnal_slopes::calc_isoneutral_slopes(), mom_kappa_shear::calculate_kappa_shear(), mom_forcing_type::calculatebuoyancyflux1d(), midas_vertmap::determine_temperature(), dome_initialization::dome_set_obc_data(), mom_entrain_diffusive::entrainment_diffusive(), mom_int_tide_input::find_n2_bottom(), mom_geothermal::geothermal(), isomip_initialization::isomip_initialize_temperature_salinity(), mom_neutral_diffusion::neutral_diffusion_calc_coeffs(), mom_set_visc::set_viscous_bbl(), mom_set_visc::set_viscous_ml(), mom_thickness_diffuse::thickness_diffuse_full(), mom_wave_speed::wave_speed(), and mom_wave_structure::wave_structure().
|
private |
Calls the appropriate subroutine to calculate density of sea water for scalar inputs.
[in] | t | Potential temperature referenced to the surface (degC) |
[in] | s | Salinity (PSU) |
[in] | pressure | Pressure (Pa) |
[out] | rho | Density (in-situ if pressure is local) (kg m-3) |
eos | Equation of state structure |
Definition at line 100 of file MOM_EOS.F90.
References eos_linear, eos_nemo, eos_teos10, eos_unesco, eos_wright, and mom_error_handler::mom_error().
subroutine, public mom_eos::calculate_specific_vol_derivs | ( | real, dimension(:), intent(in) | T, |
real, dimension(:), intent(in) | S, | ||
real, dimension(:), intent(in) | pressure, | ||
real, dimension(:), intent(out) | dSV_dT, | ||
real, dimension(:), intent(out) | dSV_dS, | ||
integer, intent(in) | start, | ||
integer, intent(in) | npts, | ||
type(eos_type), pointer | EOS | ||
) |
Calls the appropriate subroutine to calculate specific volume derivatives for an array.
[in] | t | Potential temperature referenced to the surface (degC) |
[in] | s | Salinity (PSU) |
[in] | pressure | Pressure (Pa) |
[out] | dsv_dt | The partial derivative of specific volume with potential temperature, in m3 kg-1 K-1. |
[out] | dsv_ds | The partial derivative of specific volume with salinity, in m3 kg-1 / (g/kg). |
[in] | start | Starting index within the array |
[in] | npts | The number of values to calculate |
eos | Equation of state structure |
Definition at line 247 of file MOM_EOS.F90.
References eos_linear, eos_nemo, eos_teos10, eos_unesco, eos_wright, and mom_error_handler::mom_error().
Referenced by mom_diabatic_aux::applyboundaryfluxesinout(), and mom_diapyc_energy_req::diapyc_energy_req_calc().
|
private |
Calls the appropriate subroutine to calculate the freezing point for a 1-D array.
[in] | s | Salinity (PSU) |
[in] | pressure | Pressure (Pa) |
[out] | t_fr | Freezing point potential temperature referenced to the surface (degC) |
[in] | start | Starting index within the array |
[in] | npts | The number of values to calculate |
eos | Equation of state structure |
Definition at line 187 of file MOM_EOS.F90.
References mom_error_handler::mom_error(), tfreeze_linear, tfreeze_millero, and tfreeze_teos10.
|
private |
Calls the appropriate subroutine to calculate the freezing point for scalar inputs.
[in] | s | Salinity (PSU) |
[in] | pressure | Pressure (Pa) |
[out] | t_fr | Freezing point potential temperature referenced to the surface (degC) |
eos | Equation of state structure |
Definition at line 162 of file MOM_EOS.F90.
References mom_error_handler::mom_error(), tfreeze_linear, tfreeze_millero, and tfreeze_teos10.
|
private |
Definition at line 1756 of file MOM_EOS.F90.
References evaluate_shape_bilinear().
Referenced by int_density_dz_generic_plm_analytic().
|
private |
Definition at line 1822 of file MOM_EOS.F90.
References evaluate_shape_bilinear(), and evaluate_shape_quadratic().
Referenced by int_density_dz_generic_ppm().
subroutine, public mom_eos::convert_temp_salt_for_teos10 | ( | real, dimension( g %isd: g %ied, g %jsd: g %jed, g %ke), intent(inout) | T, |
real, dimension( g %isd: g %ied, g %jsd: g %jed, g %ke), intent(inout) | S, | ||
real, dimension(:), intent(in) | press, | ||
type(ocean_grid_type), intent(in) | G, | ||
integer, intent(in) | kd, | ||
real, dimension( g %isd: g %ied, g %jsd: g %jed, g %ke), intent(in) | mask_z, | ||
type(eos_type), pointer | EOS | ||
) |
Convert T&S to Absolute Salinity and Conservative Temperature if using TEOS10.
[in] | g | The horizontal index structure |
[in] | g | The ocean's grid structure |
[in,out] | t | Potential temperature referenced to the surface (degC) |
[in,out] | s | Salinity (PSU) |
[in] | press | Pressure at the top of the layer in Pa. |
eos | Equation of state structure | |
[in] | mask_z | 3d mask |
Definition at line 2129 of file MOM_EOS.F90.
References eos_nemo, eos_teos10, and mom_error_handler::mom_error().
Referenced by mom_state_initialization::mom_temp_salt_initialize_from_z().
subroutine, public mom_eos::eos_allocate | ( | type(eos_type), pointer | EOS | ) |
Allocates EOS_type.
eos | Equation of state structure |
Definition at line 558 of file MOM_EOS.F90.
Referenced by eos_init().
subroutine, public mom_eos::eos_end | ( | type(eos_type), pointer | EOS | ) |
Deallocates EOS_type.
eos | Equation of state structure |
Definition at line 565 of file MOM_EOS.F90.
subroutine, public mom_eos::eos_init | ( | type(param_file_type), intent(in) | param_file, |
type(eos_type), pointer | EOS | ||
) |
Initializes EOS_type by allocating and reading parameters.
[in] | param_file | Parameter file structure |
eos | Equation of state structure |
Definition at line 459 of file MOM_EOS.F90.
References eos_allocate(), eos_default, eos_linear, eos_linear_string, eos_nemo, eos_nemo_string, eos_teos10, eos_teos10_string, eos_unesco, eos_unesco_string, eos_wright, eos_wright_string, mom_error_handler::mom_error(), mom_error_handler::mom_mesg(), tfreeze_default, tfreeze_linear, tfreeze_linear_string, tfreeze_millero, tfreeze_millero_string, tfreeze_teos10, tfreeze_teos10_string, and mom_string_functions::uppercase().
subroutine, public mom_eos::eos_use_linear | ( | real, intent(in) | Rho_T0_S0, |
real, intent(in) | dRho_dT, | ||
real, intent(in) | dRho_dS, | ||
type(eos_type), pointer | EOS, | ||
logical, intent(in), optional | use_quadrature | ||
) |
Set equation of state structure (EOS) to linear with given coefficients.
[in] | rho_t0_s0 | Density at T=0 degC and S=0 ppt (kg m-3) |
[in] | drho_dt | Partial derivative of density with temperature (kg m-3 degC-1) |
[in] | drho_ds | Partial derivative of density with salinity (kg m-3 ppt-1) |
[in] | use_quadrature | Partial derivative of density with salinity (kg m-3 ppt-1) |
eos | Equation of state structure |
Definition at line 576 of file MOM_EOS.F90.
References eos_linear, and mom_error_handler::mom_error().
|
private |
Definition at line 1907 of file MOM_EOS.F90.
Referenced by compute_integral_bilinear(), and compute_integral_quadratic().
|
private |
Definition at line 1945 of file MOM_EOS.F90.
Referenced by compute_integral_quadratic().
subroutine, public mom_eos::find_depth_of_pressure_in_cell | ( | real, intent(in) | T_t, |
real, intent(in) | T_b, | ||
real, intent(in) | S_t, | ||
real, intent(in) | S_b, | ||
real, intent(in) | z_t, | ||
real, intent(in) | z_b, | ||
real, intent(in) | P_t, | ||
real, intent(in) | P_tgt, | ||
real, intent(in) | rho_ref, | ||
real, intent(in) | G_e, | ||
type(eos_type), pointer | EOS, | ||
real, intent(out) | P_b, | ||
real, intent(out) | z_out | ||
) |
Find the depth at which the reconstructed pressure matches P_tgt.
[in] | t_t | Potential temperatue at the cell top (degC) |
[in] | t_b | Potential temperatue at the cell bottom (degC) |
[in] | s_t | Salinity at the cell top (ppt) |
[in] | s_b | Salinity at the cell bottom (ppt) |
[in] | z_t | Absolute height of top of cell (m) (Boussinesq ????) |
[in] | z_b | Absolute height of bottom of cell (m) |
[in] | p_t | Anomalous pressure of top of cell, relative to g*rho_ref*z_t (Pa) |
[in] | p_tgt | Target pressure at height z_out, relative to g*rho_ref*z_out (Pa) |
[in] | rho_ref | Reference density with which calculation are anomalous to |
[in] | g_e | Gravitational acceleration (m/s2) |
eos | Equation of state structure | |
[out] | p_b | Pressure at the bottom of the cell (Pa) |
[out] | z_out | Absolute depth at which anomalous pressure = p_tgt (m) |
Definition at line 1235 of file MOM_EOS.F90.
References frac_dp_at_pos().
|
private |
Returns change in anomalous pressure change from top to non-dimensional position pos between z_t and z_b.
eos | Equation of state structure |
Definition at line 1304 of file MOM_EOS.F90.
References calculate_density_array().
Referenced by find_depth_of_pressure_in_cell().
subroutine, public mom_eos::int_density_dz | ( | real, dimension(hii%isd:hii%ied,hii%jsd:hii%jed), intent(in) | T, |
real, dimension(hii%isd:hii%ied,hii%jsd:hii%jed), intent(in) | S, | ||
real, dimension(hii%isd:hii%ied,hii%jsd:hii%jed), intent(in) | z_t, | ||
real, dimension(hii%isd:hii%ied,hii%jsd:hii%jed), intent(in) | z_b, | ||
real, intent(in) | rho_ref, | ||
real, intent(in) | rho_0, | ||
real, intent(in) | G_e, | ||
type(hor_index_type), intent(in) | HII, | ||
type(hor_index_type), intent(in) | HIO, | ||
type(eos_type), pointer | EOS, | ||
real, dimension(hio%isd:hio%ied,hio%jsd:hio%jed), intent(out) | dpa, | ||
real, dimension(hio%isd:hio%ied,hio%jsd:hio%jed), intent(out), optional | intz_dpa, | ||
real, dimension(hio%isdb:hio%iedb,hio%jsd:hio%jed), intent(out), optional | intx_dpa, | ||
real, dimension(hio%isd:hio%ied,hio%jsdb:hio%jedb), intent(out), optional | inty_dpa | ||
) |
This subroutine calculates analytical and nearly-analytical integrals of pressure anomalies across layers, which are required for calculating the finite-volume form pressure accelerations in a Boussinesq model. The one potentially dodgy assumtion here is that rho_0 is used both in the denominator of the accelerations, and in the pressure used to calculated density (the latter being -z*rho_0*G_e). These two uses could be separated if need be.
[in] | hii | Ocean horizontal index structures for the input arrays |
[in] | hio | Ocean horizontal index structures for the output arrays |
[in] | t | Potential temperature referenced to the surface (degC) |
[in] | s | Salinity (PSU) |
[in] | z_t | Height at the top of the layer in m. |
[in] | z_b | Height at the bottom of the layer in m. |
[in] | rho_ref | A mean density, in kg m-3, that is subtracted out to reduce the magnitude of each of the integrals. (The pressure is calculated as p~=-z*rho_0*G_e.) |
[in] | rho_0 | A density, in kg m-3, that is used to calculate the pressure (as p~=-z*rho_0*G_e) used in the equation of state. |
[in] | g_e | The Earth's gravitational acceleration, in m s-2. |
eos | Equation of state structure | |
[out] | dpa | The change in the pressure anomaly across the layer, in Pa. |
[out] | intz_dpa | The integral through the thickness of the layer of the pressure anomaly relative to the anomaly at the top of the layer, in Pa m. |
[out] | intx_dpa | The integral in x of the difference between the pressure anomaly at the top and bottom of the layer divided by the x grid spacing, in Pa. |
[out] | inty_dpa | The integral in y of the difference between the pressure anomaly at the top and bottom of the layer divided by the y grid spacing, in Pa. |
Definition at line 392 of file MOM_EOS.F90.
References eos_linear, eos_wright, int_density_dz_generic(), and mom_error_handler::mom_error().
Referenced by mom_diagnostics::calculate_vertical_integrals().
|
private |
eos | Equation of state structure |
Definition at line 597 of file MOM_EOS.F90.
Referenced by int_density_dz().
|
private |
subroutine, public mom_eos::int_density_dz_generic_plm | ( | real, dimension(hii%isd:hii%ied,hii%jsd:hii%jed), intent(in) | T_t, |
real, dimension(hii%isd:hii%ied,hii%jsd:hii%jed), intent(in) | T_b, | ||
real, dimension(hii%isd:hii%ied,hii%jsd:hii%jed), intent(in) | S_t, | ||
real, dimension(hii%isd:hii%ied,hii%jsd:hii%jed), intent(in) | S_b, | ||
real, dimension(hii%isd:hii%ied,hii%jsd:hii%jed), intent(in) | z_t, | ||
real, dimension(hii%isd:hii%ied,hii%jsd:hii%jed), intent(in) | z_b, | ||
real, intent(in) | rho_ref, | ||
real, intent(in) | rho_0, | ||
real, intent(in) | G_e, | ||
real, intent(in) | H_subroundoff, | ||
real, dimension(hii%isd:hii%ied,hii%jsd:hii%jed), intent(in) | bathyT, | ||
type(hor_index_type), intent(in) | HII, | ||
type(hor_index_type), intent(in) | HIO, | ||
type(eos_type), pointer | EOS, | ||
real, dimension(hio%isd:hio%ied,hio%jsd:hio%jed), intent(out) | dpa, | ||
real, dimension(hio%isd:hio%ied,hio%jsd:hio%jed), intent(out), optional | intz_dpa, | ||
real, dimension(hio%isdb:hio%iedb,hio%jsd:hio%jed), intent(out), optional | intx_dpa, | ||
real, dimension(hio%isd:hio%ied,hio%jsdb:hio%jedb), intent(out), optional | inty_dpa, | ||
logical, intent(in), optional | useMassWghtInterp | ||
) |
eos | Equation of state structure |
Definition at line 938 of file MOM_EOS.F90.
References calculate_density_array().
subroutine, public mom_eos::int_density_dz_generic_plm_analytic | ( | real, dimension(hi%isd:hi%ied,hi%jsd:hi%jed), intent(in) | T_t, |
real, dimension(hi%isd:hi%ied,hi%jsd:hi%jed), intent(in) | T_b, | ||
real, dimension(hi%isd:hi%ied,hi%jsd:hi%jed), intent(in) | S_t, | ||
real, dimension(hi%isd:hi%ied,hi%jsd:hi%jed), intent(in) | S_b, | ||
real, dimension(hi%isd:hi%ied,hi%jsd:hi%jed), intent(in) | z_t, | ||
real, dimension(hi%isd:hi%ied,hi%jsd:hi%jed), intent(in) | z_b, | ||
real, intent(in) | rho_ref, | ||
real, intent(in) | rho_0, | ||
real, intent(in) | G_e, | ||
type(hor_index_type), intent(in) | HI, | ||
type(eos_type), pointer | EOS, | ||
real, dimension(hi%isd:hi%ied,hi%jsd:hi%jed), intent(out) | dpa, | ||
real, dimension(hi%isd:hi%ied,hi%jsd:hi%jed), intent(out), optional | intz_dpa, | ||
real, dimension(hi%isdb:hi%iedb,hi%jsd:hi%jed), intent(out), optional | intx_dpa, | ||
real, dimension(hi%isd:hi%ied,hi%jsdb:hi%jedb), intent(out), optional | inty_dpa | ||
) |
eos | Equation of state structure |
Definition at line 1591 of file MOM_EOS.F90.
References compute_integral_bilinear().
subroutine, public mom_eos::int_density_dz_generic_ppm | ( | real, dimension(hii%isd:hii%ied,hii%jsd:hii%jed), intent(in) | T, |
real, dimension(hii%isd:hii%ied,hii%jsd:hii%jed), intent(in) | T_t, | ||
real, dimension(hii%isd:hii%ied,hii%jsd:hii%jed), intent(in) | T_b, | ||
real, dimension(hii%isd:hii%ied,hii%jsd:hii%jed), intent(in) | S, | ||
real, dimension(hii%isd:hii%ied,hii%jsd:hii%jed), intent(in) | S_t, | ||
real, dimension(hii%isd:hii%ied,hii%jsd:hii%jed), intent(in) | S_b, | ||
real, dimension(hii%isd:hii%ied,hii%jsd:hii%jed), intent(in) | z_t, | ||
real, dimension(hii%isd:hii%ied,hii%jsd:hii%jed), intent(in) | z_b, | ||
real, intent(in) | rho_ref, | ||
real, intent(in) | rho_0, | ||
real, intent(in) | G_e, | ||
type(hor_index_type), intent(in) | HII, | ||
type(hor_index_type), intent(in) | HIO, | ||
type(eos_type), pointer | EOS, | ||
real, dimension(hio%isd:hio%ied,hio%jsd:hio%jed), intent(out) | dpa, | ||
real, dimension(hio%isd:hio%ied,hio%jsd:hio%jed), intent(out), optional | intz_dpa, | ||
real, dimension(hio%isdb:hio%iedb,hio%jsdb:hio%jedb), intent(out), optional | intx_dpa, | ||
real, dimension(hio%isd:hio%ied,hio%jsdb:hio%jedb), intent(out), optional | inty_dpa | ||
) |
eos | Equation of state structure |
Definition at line 1339 of file MOM_EOS.F90.
References compute_integral_quadratic(), and mom_error_handler::mom_error().
|
private |
eos | Equation of state structure |
Definition at line 2003 of file MOM_EOS.F90.
Referenced by int_specific_vol_dp().
subroutine, public mom_eos::int_specific_vol_dp | ( | real, dimension(hi%isd:hi%ied,hi%jsd:hi%jed), intent(in) | T, |
real, dimension(hi%isd:hi%ied,hi%jsd:hi%jed), intent(in) | S, | ||
real, dimension(hi%isd:hi%ied,hi%jsd:hi%jed), intent(in) | p_t, | ||
real, dimension(hi%isd:hi%ied,hi%jsd:hi%jed), intent(in) | p_b, | ||
real, intent(in) | alpha_ref, | ||
type(hor_index_type), intent(in) | HI, | ||
type(eos_type), pointer | EOS, | ||
real, dimension(hi%isd:hi%ied,hi%jsd:hi%jed), intent(out) | dza, | ||
real, dimension(hi%isd:hi%ied,hi%jsd:hi%jed), intent(out), optional | intp_dza, | ||
real, dimension(hi%isdb:hi%iedb,hi%jsd:hi%jed), intent(out), optional | intx_dza, | ||
real, dimension(hi%isd:hi%ied,hi%jsdb:hi%jedb), intent(out), optional | inty_dza, | ||
integer, intent(in), optional | halo_size | ||
) |
Calls the appropriate subroutine to alculate analytical and nearly-analytical integrals in pressure across layers of geopotential anomalies, which are required for calculating the finite-volume form pressure accelerations in a non-Boussinesq model. There are essentially no free assumptions, apart from the use of Bode's rule to do the horizontal integrals, and from a truncation in the series for log(1-eps/1+eps) that assumes that |eps| < .
[in] | hi | The horizontal index structure |
[in] | t | Potential temperature referenced to the surface (degC) |
[in] | s | Salinity (PSU) |
[in] | p_t | Pressure at the top of the layer in Pa. |
[in] | p_b | Pressure at the bottom of the layer in Pa. |
[in] | alpha_ref | A mean specific volume that is subtracted out to reduce the magnitude of each of the integrals, m3 kg-1. The calculation is mathematically identical with different values of alpha_ref, but this reduces the effects of roundoff. |
eos | Equation of state structure | |
[out] | dza | The change in the geopotential anomaly across the layer, in m2 s-2. |
[out] | intp_dza | The integral in pressure through the layer of the geopotential anomaly relative to the anomaly at the bottom of the layer, in Pa m2 s-2. |
[out] | intx_dza | The integral in x of the difference between the geopotential anomaly at the top and bottom of the layer divided by the x grid spacing, in m2 s-2. |
[out] | inty_dza | The integral in y of the difference between the geopotential anomaly at the top and bottom of the layer divided by the y grid spacing, in m2 s-2. |
[in] | halo_size | The width of halo points on which to calculate dza. |
Definition at line 333 of file MOM_EOS.F90.
References eos_linear, eos_wright, int_spec_vol_dp_generic(), mom_eos_linear::int_spec_vol_dp_linear(), mom_eos_wright::int_spec_vol_dp_wright(), and mom_error_handler::mom_error().
Referenced by mom_state_initialization::convert_thickness(), mom_interface_heights::find_eta_2d(), mom_interface_heights::find_eta_3d(), and mom_pressureforce_mont::pressureforce_mont_nonbouss().
logical function, public mom_eos::query_compressible | ( | type(eos_type), pointer | EOS | ) |
Returns true if the equation of state is compressible (i.e. has pressure dependence)
eos | Equation of state structure |
Definition at line 449 of file MOM_EOS.F90.
References mom_error_handler::mom_error().
Referenced by mom_pressureforce_mont::pressureforce_mont_bouss(), and mom_pressureforce_mont::pressureforce_mont_nonbouss().
|
private |
Definition at line 86 of file MOM_EOS.F90.
Referenced by eos_init().
integer, parameter mom_eos::eos_linear = 1 |
Definition at line 75 of file MOM_EOS.F90.
Referenced by calculate_compress(), calculate_density_array(), calculate_density_derivs(), calculate_density_scalar(), calculate_specific_vol_derivs(), eos_init(), eos_use_linear(), int_density_dz(), and int_specific_vol_dp().
|
private |
Definition at line 81 of file MOM_EOS.F90.
Referenced by eos_init().
|
private |
Definition at line 79 of file MOM_EOS.F90.
Referenced by calculate_compress(), calculate_density_array(), calculate_density_derivs(), calculate_density_scalar(), calculate_specific_vol_derivs(), convert_temp_salt_for_teos10(), and eos_init().
|
private |
Definition at line 85 of file MOM_EOS.F90.
Referenced by eos_init().
|
private |
Definition at line 78 of file MOM_EOS.F90.
Referenced by calculate_compress(), calculate_density_array(), calculate_density_derivs(), calculate_density_scalar(), calculate_specific_vol_derivs(), convert_temp_salt_for_teos10(), and eos_init().
|
private |
Definition at line 84 of file MOM_EOS.F90.
Referenced by eos_init().
|
private |
Definition at line 76 of file MOM_EOS.F90.
Referenced by calculate_compress(), calculate_density_array(), calculate_density_derivs(), calculate_density_scalar(), calculate_specific_vol_derivs(), and eos_init().
|
private |
Definition at line 82 of file MOM_EOS.F90.
Referenced by eos_init().
|
private |
Definition at line 77 of file MOM_EOS.F90.
Referenced by calculate_compress(), calculate_density_array(), calculate_density_derivs(), calculate_density_scalar(), calculate_specific_vol_derivs(), eos_init(), int_density_dz(), and int_specific_vol_dp().
|
private |
Definition at line 83 of file MOM_EOS.F90.
Referenced by eos_init().
|
private |
Definition at line 94 of file MOM_EOS.F90.
Referenced by eos_init().
|
private |
Definition at line 88 of file MOM_EOS.F90.
Referenced by calculate_tfreeze_array(), calculate_tfreeze_scalar(), and eos_init().
|
private |
Definition at line 91 of file MOM_EOS.F90.
Referenced by eos_init().
|
private |
Definition at line 89 of file MOM_EOS.F90.
Referenced by calculate_tfreeze_array(), calculate_tfreeze_scalar(), and eos_init().
|
private |
Definition at line 92 of file MOM_EOS.F90.
Referenced by eos_init().
|
private |
Definition at line 90 of file MOM_EOS.F90.
Referenced by calculate_tfreeze_array(), calculate_tfreeze_scalar(), and eos_init().
|
private |
Definition at line 93 of file MOM_EOS.F90.
Referenced by eos_init().