mom_eos_roquet_rho module reference

The equation of state using the expressions of Roquet et al. (2015) that are used in NEMO.

More…

Data Types

roquet_rho_eos

The EOS_base implementation of the Roquet et al., 2015, equation of state.

Functions/Subroutines

density_elem_roquet_rho()

In situ density of sea water from Roquet et al., 2015 [kg m-3].

density_anomaly_elem_roquet_rho()

In situ density anomaly of sea water from Roquet et al., 2015 [kg m-3].

spec_vol_elem_roquet_rho()

In situ specific volume of sea water from Roquet et al., 2015 [kg m-3].

spec_vol_anomaly_elem_roquet_rho()

In situ specific volume anomaly of sea water from Roquet et al., 2015 [kg m-3].

calculate_density_derivs_elem_roquet_rho()

For a given thermodynamic state, calculate the derivatives of density with conservative temperature and absolute salinity, using the density polynomial fit EOS from Roquet et al.

calculate_density_second_derivs_elem_roquet_rho()

Second derivatives of density with respect to temperature, salinity, and pressure.

calculate_specvol_derivs_elem_roquet_rho()

Calculate the partial derivatives of specific volume with temperature and salinity using the density polynomial fit EOS from Roquet et al.

calculate_compress_elem_roquet_rho()

Compute the in situ density of sea water (rho in [kg m-3]) and the compressibility (drho/dp = C_sound^-2, stored as drho_dp [s2 m-2]) from absolute salinity (sal [g kg-1]), conservative temperature (T [degC]), and pressure [Pa], using the density polynomial fit EOS from Roquet et al.

eos_fit_range_roquet_rho()

Return the range of temperatures, salinities and pressures for which the Roquet et al.

calculate_density_array_roquet_rho()

Calculate the in-situ density for 1D arraya inputs and outputs.

calculate_spec_vol_array_roquet_rho()

Calculate the in-situ specific volume for 1D array inputs and outputs.

Detailed Description

The equation of state using the expressions of Roquet et al. (2015) that are used in NEMO.

Type Documentation

type mom_eos_roquet_rho/roquet_rho_eos

The EOS_base implementation of the Roquet et al., 2015, equation of state.

Type fields:
  • % density_elem [procedure,private] :: Implementation of the in-situ density as an elemental function [kg m-3].

  • % density_anomaly_elem [procedure,private] :: Implementation of the in-situ density anomaly as an elemental function [kg m-3].

  • % spec_vol_elem [procedure,private] :: Implementation of the in-situ specific volume as an elemental function [m3 kg-1].

  • % spec_vol_anomaly_elem [procedure,private] :: Implementation of the in-situ specific volume anomaly as an elemental function [m3 kg-1].

  • % calculate_density_derivs_elem [procedure,private] :: Implementation of the calculation of derivatives of density.

  • % calculate_density_second_derivs_elem [procedure,private] :: Implementation of the calculation of second derivatives of density.

  • % calculate_specvol_derivs_elem [procedure,private] :: Implementation of the calculation of derivatives of specific volume.

  • % calculate_compress_elem [procedure,private] :: Implementation of the calculation of compressibility.

  • % eos_fit_range [procedure,private] :: Implementation of the range query function.

  • % calculate_density_array [procedure,private] :: Local implementation of generic calculate_density_array for efficiency.

  • % calculate_spec_vol_array [procedure,private] :: Local implementation of generic calculate_spec_vol_array for efficiency.

Function/Subroutine Documentation

function mom_eos_roquet_rho/density_elem_roquet_rho(this, T, S, pressure) [elemental]

In situ density of sea water from Roquet et al., 2015 [kg m-3].

This is an elemental function that can be applied to any combination of scalar and array inputs.

Parameters:
  • this :: [in] This EOS

  • t :: [in] Conservative temperature [degC]

  • s :: [in] Absolute salinity [g kg-1]

  • pressure :: [in] Pressure [Pa]

Call to:

eos000 eos001 eos002 eos003 eos010 eos011 eos012 eos013 eos020 eos021 eos022 eos030 eos031 eos040 eos041 eos050 eos060 eos100 eos101 eos102 eos103 eos110 eos111 eos112 eos120 eos121 eos130 eos131 eos140 eos150 eos200 eos201 eos202 eos210 eos211 eos220 eos221 eos230 eos240 eos300 eos301 eos310 eos311 eos320 eos330 eos400 eos401 eos410 eos420 eos500 eos510 eos600 r00 r01 r02 r03 r04 r05 r1_s0 rdeltas

Called from:

calculate_density_array_roquet_rho spec_vol_anomaly_elem_roquet_rho spec_vol_elem_roquet_rho

function mom_eos_roquet_rho/density_anomaly_elem_roquet_rho(this, T, S, pressure, rho_ref) [elemental]

In situ density anomaly of sea water from Roquet et al., 2015 [kg m-3].

This is an elemental function that can be applied to any combination of scalar and array inputs.

Parameters:
  • this :: [in] This EOS

  • t :: [in] Conservative temperature [degC]

  • s :: [in] Absolute salinity [g kg-1]

  • pressure :: [in] Pressure [Pa]

  • rho_ref :: [in] A reference density [kg m-3]

Call to:

eos000 eos001 eos002 eos003 eos010 eos011 eos012 eos013 eos020 eos021 eos022 eos030 eos031 eos040 eos041 eos050 eos060 eos100 eos101 eos102 eos103 eos110 eos111 eos112 eos120 eos121 eos130 eos131 eos140 eos150 eos200 eos201 eos202 eos210 eos211 eos220 eos221 eos230 eos240 eos300 eos301 eos310 eos311 eos320 eos330 eos400 eos401 eos410 eos420 eos500 eos510 eos600 r00 r01 r02 r03 r04 r05 r1_s0 rdeltas

Called from:

calculate_density_array_roquet_rho

function mom_eos_roquet_rho/spec_vol_elem_roquet_rho(this, T, S, pressure) [elemental]

In situ specific volume of sea water from Roquet et al., 2015 [kg m-3].

This is an elemental function that can be applied to any combination of scalar and array inputs.

Parameters:
  • this :: [in] This EOS

  • t :: [in] Conservative temperature [degC]

  • s :: [in] Absolute salinity [g kg-1]

  • pressure :: [in] Pressure [Pa]

Call to:

density_elem_roquet_rho

Called from:

calculate_spec_vol_array_roquet_rho

function mom_eos_roquet_rho/spec_vol_anomaly_elem_roquet_rho(this, T, S, pressure, spv_ref) [elemental]

In situ specific volume anomaly of sea water from Roquet et al., 2015 [kg m-3].

This is an elemental function that can be applied to any combination of scalar and array inputs.

Parameters:
  • this :: [in] This EOS

  • t :: [in] Conservative temperature [degC]

  • s :: [in] Absolute salinity [g kg-1]

  • pressure :: [in] Pressure [Pa]

  • spv_ref :: [in] A reference specific volume [m3 kg-1]

Call to:

density_elem_roquet_rho

Called from:

calculate_spec_vol_array_roquet_rho

subroutine mom_eos_roquet_rho/calculate_density_derivs_elem_roquet_rho(this, T, S, pressure, drho_dT, drho_dS)

For a given thermodynamic state, calculate the derivatives of density with conservative temperature and absolute salinity, using the density polynomial fit EOS from Roquet et al. (2015).

Parameters:
  • this :: [in] This EOS

  • t :: [in] Conservative temperature [degC]

  • s :: [in] Absolute salinity [g kg-1]

  • pressure :: [in] Pressure [Pa]

  • drho_dt :: [out] The partial derivative of density with potential temperature [kg m-3 degC-1]

  • drho_ds :: [out] The partial derivative of density with salinity, in [kg m-3 ppt-1]

Call to:

alp000 alp001 alp002 alp003 alp010 alp011 alp012 alp020 alp021 alp030 alp031 alp040 alp050 alp100 alp101 alp102 alp110 alp111 alp120 alp121 alp130 alp140 alp200 alp201 alp210 alp211 alp220 alp230 alp300 alp301 alp310 alp320 alp400 alp410 alp500 bet000 bet001 bet002 bet003 bet010 bet011 bet012 bet020 bet021 bet030 bet031 bet040 bet050 bet100 bet101 bet102 bet110 bet111 bet120 bet121 bet130 bet140 bet200 bet201 bet210 bet211 bet220 bet230 bet300 bet301 bet310 bet320 bet400 bet410 bet500 r1_s0 rdeltas

subroutine mom_eos_roquet_rho/calculate_density_second_derivs_elem_roquet_rho(this, T, S, pressure, drho_ds_ds, drho_ds_dt, drho_dt_dt, drho_ds_dp, drho_dt_dp)

Second derivatives of density with respect to temperature, salinity, and pressure.

Parameters:
  • this :: [in] This EOS

  • t :: [in] Conservative temperature [degC]

  • s :: [in] Absolute salinity [g kg-1]

  • pressure :: [in] Pressure [Pa]

  • drho_ds_ds :: [inout] Partial derivative of beta with respect to S [kg m-3 ppt-2]

  • drho_ds_dt :: [inout] Partial derivative of beta with respect to T [kg m-3 ppt-1 degC-1]

  • drho_dt_dt :: [inout] Partial derivative of alpha with respect to T [kg m-3 degC-2]

  • drho_ds_dp :: [inout] Partial derivative of beta with respect to pressure [kg m-3 ppt-1 Pa-1] = [s2 m-2 ppt-1]

  • drho_dt_dp :: [inout] Partial derivative of alpha with respect to pressure [kg m-3 degC-1 Pa-1] = [s2 m-2 degC-1]

Call to:

eos011 eos012 eos013 eos020 eos021 eos022 eos030 eos031 eos040 eos041 eos050 eos060 eos100 eos101 eos102 eos103 eos110 eos111 eos112 eos120 eos121 eos130 eos131 eos140 eos150 eos201 eos202 eos210 eos211 eos220 eos221 eos230 eos240 eos300 eos301 eos310 eos311 eos320 eos330 eos400 eos401 eos410 eos420 eos500 eos510 eos600 r1_s0 rdeltas

subroutine mom_eos_roquet_rho/calculate_specvol_derivs_elem_roquet_rho(this, T, S, pressure, dSV_dT, dSV_dS)

Calculate the partial derivatives of specific volume with temperature and salinity using the density polynomial fit EOS from Roquet et al. (2015).

Parameters:
  • this :: [in] This EOS

  • t :: [in] Conservative temperature [degC]

  • s :: [in] Absolute salinity [g kg-1]

  • pressure :: [in] Pressure [Pa]

  • dsv_dt :: [inout] The partial derivative of specific volume with potential temperature [m3 kg-1 degC-1]

  • dsv_ds :: [inout] The partial derivative of specific volume with salinity [m3 kg-1 ppt-1]

subroutine mom_eos_roquet_rho/calculate_compress_elem_roquet_rho(this, T, S, pressure, rho, drho_dp)

Compute the in situ density of sea water (rho in [kg m-3]) and the compressibility (drho/dp = C_sound^-2, stored as drho_dp [s2 m-2]) from absolute salinity (sal [g kg-1]), conservative temperature (T [degC]), and pressure [Pa], using the density polynomial fit EOS from Roquet et al. (2015).

Parameters:
  • this :: [in] This EOS

  • t :: [in] Conservative temperature [degC]

  • s :: [in] Absolute salinity [g kg-1]

  • pressure :: [in] Pressure [Pa]

  • rho :: [out] In situ density [kg m-3]

  • drho_dp :: [out] The partial derivative of density with pressure (also the inverse of the square of sound speed) [s2 m-2]

Call to:

eos000 eos001 eos002 eos003 eos010 eos011 eos012 eos013 eos020 eos021 eos022 eos030 eos031 eos040 eos041 eos050 eos060 eos100 eos101 eos102 eos103 eos110 eos111 eos112 eos120 eos121 eos130 eos131 eos140 eos150 eos200 eos201 eos202 eos210 eos211 eos220 eos221 eos230 eos240 eos300 eos301 eos310 eos311 eos320 eos330 eos400 eos401 eos410 eos420 eos500 eos510 eos600 r00 r01 r02 r03 r04 r05 r1_s0 rdeltas

subroutine mom_eos_roquet_rho/eos_fit_range_roquet_rho(this, T_min, T_max, S_min, S_max, p_min, p_max)

Return the range of temperatures, salinities and pressures for which the Roquet et al. (2015) expression for in situ density has been fitted to observations. Care should be taken when applying this equation of state outside of its fit range.

Parameters:
  • this :: [in] This EOS

  • t_min :: [out] The minimum conservative temperature over which this EoS is fitted [degC]

  • t_max :: [out] The maximum conservative temperature over which this EoS is fitted [degC]

  • s_min :: [out] The minimum absolute salinity over which this EoS is fitted [g kg-1]

  • s_max :: [out] The maximum absolute salinity over which this EoS is fitted [g kg-1]

  • p_min :: [out] The minimum pressure over which this EoS is fitted [Pa]

  • p_max :: [out] The maximum pressure over which this EoS is fitted [Pa]

subroutine mom_eos_roquet_rho/calculate_density_array_roquet_rho(this, T, S, pressure, rho, start, npts, rho_ref)

Calculate the in-situ density for 1D arraya inputs and outputs.

Parameters:
  • this :: [in] This EOS

  • t :: [in] Potential temperature relative to the surface [degC]

  • s :: [in] Salinity [PSU]

  • pressure :: [in] Pressure [Pa]

  • rho :: [out] In situ density [kg m-3]

  • start :: [in] The starting index for calculations

  • npts :: [in] The number of values to calculate

  • rho_ref :: [in] A reference density [kg m-3]

Call to:

density_anomaly_elem_roquet_rho density_elem_roquet_rho

subroutine mom_eos_roquet_rho/calculate_spec_vol_array_roquet_rho(this, T, S, pressure, specvol, start, npts, spv_ref)

Calculate the in-situ specific volume for 1D array inputs and outputs.

Parameters:
  • this :: [in] This EOS

  • t :: [in] Potential temperature relative to the surface [degC]

  • s :: [in] Salinity [PSU]

  • pressure :: [in] Pressure [Pa]

  • specvol :: [out] In situ specific volume [m3 kg-1]

  • start :: [in] The starting index for calculations

  • npts :: [in] The number of values to calculate

  • spv_ref :: [in] A reference specific volume [m3 kg-1]

Call to:

spec_vol_anomaly_elem_roquet_rho spec_vol_elem_roquet_rho