MOM6
|
A simple linear equation of state for sea water with constant coefficients.
Data Types | |
interface | calculate_density_derivs_linear |
For a given thermodynamic state, return the derivatives of density with temperature and salinity using the simple linear equation of state. More... | |
interface | calculate_density_linear |
Compute the density of sea water (in kg/m^3), or its anomaly from a reference density, using a simple linear equation of state from salinity (in psu), potential temperature (in deg C) and pressure [Pa]. More... | |
interface | calculate_density_second_derivs_linear |
For a given thermodynamic state, return the second derivatives of density with various combinations of temperature, salinity, and pressure. Note that with a simple linear equation of state these second derivatives are all 0. More... | |
interface | calculate_spec_vol_linear |
Compute the specific volume of sea water (in m^3/kg), or its anomaly from a reference value, using a simple linear equation of state from salinity (in psu), potential temperature (in deg C) and pressure [Pa]. More... | |
Functions/Subroutines | |
subroutine, public | calculate_density_scalar_linear (T, S, pressure, rho, Rho_T0_S0, dRho_dT, dRho_dS, rho_ref) |
This subroutine computes the density of sea water with a trivial linear equation of state (in [kg m-3]) from salinity (sal [PSU]), potential temperature (T [degC]), and pressure [Pa]. More... | |
subroutine, public | calculate_density_array_linear (T, S, pressure, rho, start, npts, Rho_T0_S0, dRho_dT, dRho_dS, rho_ref) |
This subroutine computes the density of sea water with a trivial linear equation of state (in kg/m^3) from salinity (sal in psu), potential temperature (T [degC]), and pressure [Pa]. More... | |
subroutine | calculate_spec_vol_scalar_linear (T, S, pressure, specvol, Rho_T0_S0, dRho_dT, dRho_dS, spv_ref) |
This subroutine computes the in situ specific volume of sea water (specvol in [m3 kg-1]) from salinity (S [PSU]), potential temperature (T [degC]) and pressure [Pa], using a trivial linear equation of state for density. If spv_ref is present, specvol is an anomaly from spv_ref. More... | |
subroutine | calculate_spec_vol_array_linear (T, S, pressure, specvol, start, npts, Rho_T0_S0, dRho_dT, dRho_dS, spv_ref) |
This subroutine computes the in situ specific volume of sea water (specvol in [m3 kg-1]) from salinity (S [PSU]), potential temperature (T [degC]) and pressure [Pa], using a trivial linear equation of state for density. If spv_ref is present, specvol is an anomaly from spv_ref. More... | |
subroutine | calculate_density_derivs_array_linear (T, S, pressure, drho_dT_out, drho_dS_out, Rho_T0_S0, dRho_dT, dRho_dS, start, npts) |
This subroutine calculates the partial derivatives of density * with potential temperature and salinity. More... | |
subroutine, public | calculate_density_derivs_scalar_linear (T, S, pressure, drho_dT_out, drho_dS_out, Rho_T0_S0, dRho_dT, dRho_dS) |
This subroutine calculates the partial derivatives of density * with potential temperature and salinity for a single point. More... | |
subroutine | calculate_density_second_derivs_scalar_linear (T, S, pressure, drho_dS_dS, drho_dS_dT, drho_dT_dT, drho_dS_dP, drho_dT_dP) |
This subroutine calculates the five, partial second derivatives of density w.r.t. potential temperature and salinity and pressure which for a linear equation of state should all be 0. More... | |
subroutine | calculate_density_second_derivs_array_linear (T, S, pressure, drho_dS_dS, drho_dS_dT, drho_dT_dT, drho_dS_dP, drho_dT_dP, start, npts) |
This subroutine calculates the five, partial second derivatives of density w.r.t. potential temperature and salinity and pressure which for a linear equation of state should all be 0. More... | |
subroutine, public | calculate_specvol_derivs_linear (T, S, pressure, dSV_dT, dSV_dS, start, npts, Rho_T0_S0, dRho_dT, dRho_dS) |
Calculate the derivatives of specific volume with temperature and salinity. More... | |
subroutine, public | calculate_compress_linear (T, S, pressure, rho, drho_dp, start, npts, Rho_T0_S0, dRho_dT, dRho_dS) |
This subroutine computes the in situ density of sea water (rho) and the compressibility (drho/dp == C_sound^-2) at the given salinity, potential temperature, and pressure. More... | |
subroutine, public | int_density_dz_linear (T, S, z_t, z_b, rho_ref, rho_0_pres, G_e, HII, HIO, Rho_T0_S0, dRho_dT, dRho_dS, dpa, intz_dpa, intx_dpa, inty_dpa, bathyT, dz_neglect, useMassWghtInterp) |
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. More... | |
subroutine, public | int_spec_vol_dp_linear (T, S, p_t, p_b, alpha_ref, HI, Rho_T0_S0, dRho_dT, dRho_dS, dza, intp_dza, intx_dza, inty_dza, halo_size, bathyP, dP_neglect, useMassWghtInterp) |
Calculates 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. Specific volume is assumed to vary linearly between adjacent points. More... | |
subroutine, public mom_eos_linear::calculate_compress_linear | ( | 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, | ||
real, intent(in) | Rho_T0_S0, | ||
real, intent(in) | dRho_dT, | ||
real, intent(in) | dRho_dS | ||
) |
This subroutine computes the in situ density of sea water (rho) and the compressibility (drho/dp == C_sound^-2) at the given salinity, potential temperature, and pressure.
[in] | t | Potential temperature relative to the surface [degC]. |
[in] | s | Salinity [PSU]. |
[in] | pressure | pressure [Pa]. |
[out] | rho | In situ density [kg m-3]. |
[out] | drho_dp | The partial derivative of density with pressure (also the inverse of the square of sound speed) [s2 m-2]. |
[in] | start | The starting point in the arrays. |
[in] | npts | The number of values to calculate. |
[in] | rho_t0_s0 | The density at T=0, S=0 [kg m-3]. |
[in] | drho_dt | The derivative of density with temperature [kg m-3 degC-1]. |
[in] | drho_ds | The derivative of density with salinity [kg m-3 ppt-1]. |
Definition at line 301 of file MOM_EOS_linear.F90.
Referenced by mom_eos::calculate_compress_array().
subroutine, public mom_eos_linear::calculate_density_array_linear | ( | real, dimension(:), intent(in) | T, |
real, dimension(:), intent(in) | S, | ||
real, dimension(:), intent(in) | pressure, | ||
real, dimension(:), intent(out) | rho, | ||
integer, intent(in) | start, | ||
integer, intent(in) | npts, | ||
real, intent(in) | Rho_T0_S0, | ||
real, intent(in) | dRho_dT, | ||
real, intent(in) | dRho_dS, | ||
real, intent(in), optional | rho_ref | ||
) |
This subroutine computes the density of sea water with a trivial linear equation of state (in kg/m^3) from salinity (sal in psu), potential temperature (T [degC]), and pressure [Pa].
[in] | t | potential temperature relative to the surface [degC]. |
[in] | s | salinity [PSU]. |
[in] | pressure | pressure [Pa]. |
[out] | rho | in situ density [kg m-3]. |
[in] | start | the starting point in the arrays. |
[in] | npts | the number of values to calculate. |
[in] | rho_t0_s0 | The density at T=0, S=0 [kg m-3]. |
[in] | drho_dt | The derivatives of density with temperature [kg m-3 degC-1]. |
[in] | drho_ds | The derivatives of density with salinity in [kg m-3 ppt-1]. |
[in] | rho_ref | A reference density [kg m-3]. |
Definition at line 82 of file MOM_EOS_linear.F90.
|
private |
This subroutine calculates the partial derivatives of density * with potential temperature and salinity.
[in] | t | Potential temperature relative to the surface [degC]. |
[in] | s | Salinity [PSU]. |
[in] | pressure | Pressure [Pa]. |
[out] | drho_dt_out | The partial derivative of density with potential temperature [kg m-3 degC-1]. |
[out] | drho_ds_out | The partial derivative of density with salinity [kg m-3 ppt-1]. |
[in] | rho_t0_s0 | The density at T=0, S=0 [kg m-3]. |
[in] | drho_dt | The derivative of density with temperature [kg m-3 degC-1]. |
[in] | drho_ds | The derivative of density with salinity [kg m-3 ppt-1]. |
[in] | start | The starting point in the arrays. |
[in] | npts | The number of values to calculate. |
Definition at line 165 of file MOM_EOS_linear.F90.
subroutine, public mom_eos_linear::calculate_density_derivs_scalar_linear | ( | real, intent(in) | T, |
real, intent(in) | S, | ||
real, intent(in) | pressure, | ||
real, intent(out) | drho_dT_out, | ||
real, intent(out) | drho_dS_out, | ||
real, intent(in) | Rho_T0_S0, | ||
real, intent(in) | dRho_dT, | ||
real, intent(in) | dRho_dS | ||
) |
This subroutine calculates the partial derivatives of density * with potential temperature and salinity for a single point.
[in] | t | Potential temperature relative to the surface [degC]. |
[in] | s | Salinity [PSU]. |
[in] | pressure | pressure [Pa]. |
[out] | drho_dt_out | The partial derivative of density with potential temperature [kg m-3 degC-1]. |
[out] | drho_ds_out | The partial derivative of density with salinity [kg m-3 ppt-1]. |
[in] | rho_t0_s0 | The density at T=0, S=0 [kg m-3]. |
[in] | drho_dt | The derivatives of density with temperature [kg m-3 degC-1]. |
[in] | drho_ds | The derivatives of density with salinity [kg m-3 ppt-1]. |
Definition at line 192 of file MOM_EOS_linear.F90.
subroutine, public mom_eos_linear::calculate_density_scalar_linear | ( | real, intent(in) | T, |
real, intent(in) | S, | ||
real, intent(in) | pressure, | ||
real, intent(out) | rho, | ||
real, intent(in) | Rho_T0_S0, | ||
real, intent(in) | dRho_dT, | ||
real, intent(in) | dRho_dS, | ||
real, intent(in), optional | rho_ref | ||
) |
This subroutine computes the density of sea water with a trivial linear equation of state (in [kg m-3]) from salinity (sal [PSU]), potential temperature (T [degC]), and pressure [Pa].
[in] | t | Potential temperature relative to the surface [degC]. |
[in] | s | Salinity [PSU]. |
[in] | pressure | pressure [Pa]. |
[out] | rho | In situ density [kg m-3]. |
[in] | rho_t0_s0 | The density at T=0, S=0 [kg m-3]. |
[in] | drho_dt | The derivatives of density with temperature [kg m-3 degC-1]. |
[in] | drho_ds | The derivatives of density with salinity in [kg m-3 ppt-1]. |
[in] | rho_ref | A reference density [kg m-3]. |
Definition at line 58 of file MOM_EOS_linear.F90.
|
private |
This subroutine calculates the five, partial second derivatives of density w.r.t. potential temperature and salinity and pressure which for a linear equation of state should all be 0.
[in] | t | Potential temperature relative to the surface [degC]. |
[in] | s | Salinity [PSU]. |
[in] | pressure | pressure [Pa]. |
[out] | drho_ds_ds | The second derivative of density with salinity [kg m-3 PSU-2]. |
[out] | drho_ds_dt | The second derivative of density with temperature and salinity [kg m-3 ppt-1 degC-1]. |
[out] | drho_dt_dt | The second derivative of density with temperature [kg m-3 degC-2]. |
[out] | drho_ds_dp | The second derivative of density with salinity and pressure [kg m-3 PSU-1 Pa-1]. |
[out] | drho_dt_dp | The second derivative of density with temperature and pressure [kg m-3 degC-1 Pa-1]. |
[in] | start | The starting point in the arrays. |
[in] | npts | The number of values to calculate. |
Definition at line 238 of file MOM_EOS_linear.F90.
|
private |
This subroutine calculates the five, partial second derivatives of density w.r.t. potential temperature and salinity and pressure which for a linear equation of state should all be 0.
[in] | t | Potential temperature relative to the surface [degC]. |
[in] | s | Salinity [PSU]. |
[in] | pressure | pressure [Pa]. |
[out] | drho_ds_ds | The second derivative of density with salinity [kg m-3 PSU-2]. |
[out] | drho_ds_dt | The second derivative of density with temperature and salinity [kg m-3 ppt-1 degC-1]. |
[out] | drho_dt_dt | The second derivative of density with temperature [kg m-3 degC-2]. |
[out] | drho_ds_dp | The second derivative of density with salinity and pressure [kg m-3 PSU-1 Pa-1]. |
[out] | drho_dt_dp | The second derivative of density with temperature and pressure [kg m-3 degC-1 Pa-1]. |
Definition at line 212 of file MOM_EOS_linear.F90.
|
private |
This subroutine computes the in situ specific volume of sea water (specvol in [m3 kg-1]) from salinity (S [PSU]), potential temperature (T [degC]) and pressure [Pa], using a trivial linear equation of state for density. If spv_ref is present, specvol is an anomaly from spv_ref.
[in] | t | potential temperature relative to the surface [degC]. |
[in] | s | Salinity [PSU]. |
[in] | pressure | Pressure [Pa]. |
[out] | specvol | in situ specific volume [m3 kg-1]. |
[in] | start | the starting point in the arrays. |
[in] | npts | the number of values to calculate. |
[in] | rho_t0_s0 | The density at T=0, S=0 [kg m-3]. |
[in] | drho_dt | The derivatives of density with temperature [kg m-3 degC-1]. |
[in] | drho_ds | The derivatives of density with salinity [kg m-3 ppt-1]. |
[in] | spv_ref | A reference specific volume [m3 kg-1]. |
Definition at line 138 of file MOM_EOS_linear.F90.
|
private |
This subroutine computes the in situ specific volume of sea water (specvol in [m3 kg-1]) from salinity (S [PSU]), potential temperature (T [degC]) and pressure [Pa], using a trivial linear equation of state for density. If spv_ref is present, specvol is an anomaly from spv_ref.
[in] | t | potential temperature relative to the surface [degC]. |
[in] | s | Salinity [PSU]. |
[in] | pressure | Pressure [Pa]. |
[out] | specvol | In situ specific volume [m3 kg-1]. |
[in] | rho_t0_s0 | The density at T=0, S=0 [kg m-3]. |
[in] | drho_dt | The derivatives of density with temperature [kg m-3 degC-1]. |
[in] | drho_ds | The derivatives of density with salinity [kg m-3 ppt-1]. |
[in] | spv_ref | A reference specific volume [m3 kg-1]. |
Definition at line 111 of file MOM_EOS_linear.F90.
subroutine, public mom_eos_linear::calculate_specvol_derivs_linear | ( | 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, | ||
real, intent(in) | Rho_T0_S0, | ||
real, intent(in) | dRho_dT, | ||
real, intent(in) | dRho_dS | ||
) |
Calculate the derivatives of specific volume with temperature and salinity.
[in] | t | Potential temperature relative to the surface [degC]. |
[in] | s | Salinity [PSU]. |
[in] | pressure | pressure [Pa]. |
[out] | dsv_ds | The partial derivative of specific volume with salinity [m3 kg-1 PSU-1]. |
[out] | dsv_dt | The partial derivative of specific volume with potential temperature [m3 kg-1 degC-1]. |
[in] | start | The starting point in the arrays. |
[in] | npts | The number of values to calculate. |
[in] | rho_t0_s0 | The density at T=0, S=0 [kg m-3]. |
[in] | drho_dt | The derivative of density with temperature, [kg m-3 degC-1]. |
[in] | drho_ds | The derivative of density with salinity [kg m-3 ppt-1]. |
Definition at line 268 of file MOM_EOS_linear.F90.
subroutine, public mom_eos_linear::int_density_dz_linear | ( | 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_pres, | ||
real, intent(in) | G_e, | ||
type(hor_index_type), intent(in) | HII, | ||
type(hor_index_type), intent(in) | HIO, | ||
real, intent(in) | Rho_T0_S0, | ||
real, intent(in) | dRho_dT, | ||
real, intent(in) | dRho_dS, | ||
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, | ||
real, dimension(hii%isd:hii%ied,hii%jsd:hii%jed), intent(in), optional | bathyT, | ||
real, intent(in), optional | dz_neglect, | ||
logical, intent(in), optional | useMassWghtInterp | ||
) |
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.
[in] | hii | The horizontal index type for the input arrays. |
[in] | hio | The horizontal index type for the output arrays. |
[in] | t | Potential temperature relative to the surface |
[in] | s | Salinity [PSU]. |
[in] | z_t | Height at the top of the layer in depth units [Z ~> m]. |
[in] | z_b | Height at the top of the layer [Z ~> m]. |
[in] | rho_ref | A mean density [kg m-3], that is subtracted out to reduce the magnitude of each of the integrals. |
[in] | rho_0_pres | A density [kg m-3], that is used to calculate the pressure (as p~=-z*rho_0_pres*G_e) used in the equation of state. rho_0_pres is not used here. |
[in] | g_e | The Earth's gravitational acceleration [m2 Z-1 s-2 ~> m s-2]. |
[in] | rho_t0_s0 | The density at T=0, S=0 [kg m-3]. |
[in] | drho_dt | The derivative of density with temperature, [kg m-3 degC-1]. |
[in] | drho_ds | The derivative of density with salinity, in [kg m-3 ppt-1]. |
[out] | dpa | The change in the pressure anomaly across the |
[out] | intz_dpa | The integral through the thickness of the layer |
[out] | intx_dpa | The integral in x of the difference between the |
[out] | inty_dpa | The integral in y of the difference between the |
[in] | bathyt | The depth of the bathymetry [Z ~> m]. |
[in] | dz_neglect | A miniscule thickness change [Z ~> m]. |
[in] | usemasswghtinterp | If true, uses mass weighting to interpolate T/S for top and bottom integrals. |
Definition at line 331 of file MOM_EOS_linear.F90.
subroutine, public mom_eos_linear::int_spec_vol_dp_linear | ( | 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, | ||
real, intent(in) | Rho_T0_S0, | ||
real, intent(in) | dRho_dT, | ||
real, intent(in) | dRho_dS, | ||
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, | ||
real, dimension(hi%isd:hi%ied,hi%jsd:hi%jed), intent(in), optional | bathyP, | ||
real, intent(in), optional | dP_neglect, | ||
logical, intent(in), optional | useMassWghtInterp | ||
) |
Calculates 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. Specific volume is assumed to vary linearly between adjacent points.
[in] | hi | The ocean's horizontal index type. |
[in] | t | Potential temperature relative to the surface |
[in] | s | Salinity [PSU]. |
[in] | p_t | Pressure at the top of the layer [Pa]. |
[in] | p_b | Pressure at the top of the layer [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. |
[in] | rho_t0_s0 | The density at T=0, S=0 [kg m-3]. |
[in] | drho_dt | The derivative of density with temperature [kg m-3 degC-1]. |
[in] | drho_ds | The derivative of density with salinity, in [kg m-3 ppt-1]. |
[out] | dza | The change in the geopotential anomaly across |
[out] | intp_dza | The integral in pressure through the layer of |
[out] | intx_dza | The integral in x of the difference between the |
[out] | inty_dza | The integral in y of the difference between the |
[in] | halo_size | The width of halo points on which to calculate dza. |
[in] | bathyp | The pressure at the bathymetry [Pa] |
[in] | dp_neglect | A miniscule pressure change with the same units as p_t [Pa] |
[in] | usemasswghtinterp | If true, uses mass weighting to interpolate T/S for top and bottom integrals. |
Definition at line 505 of file MOM_EOS_linear.F90.
Referenced by mom_eos::int_specific_vol_dp().