Provides an abstract derived type which can be subtyped in order to implement an equation of state.
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
real(kind=r8), | private, | parameter | :: | absolute_zero | = | -273.15_r8 |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=r8), | intent(in) | :: | ref_rho | The density for the temperature and salinity about which the equation of state was linearised, . |
||
real(kind=r8), | intent(in) | :: | ref_t | The temperature about which the equation of state was linearised, . |
||
real(kind=r8), | intent(in) | :: | ref_s | The salinity about which the equation of state was linearised, . |
||
real(kind=r8), | intent(in) | :: | beta_t | The thermal contraction coefficient, . |
||
real(kind=r8), | intent(in) | :: | beta_s | The haline contraction coefficient, . |
A linearised implementation of the equation of state, of the form
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
real(kind=r8), | private | :: | ref_rho | = | 1.0_r8 | The density for the temperature and salinity about which the equation of state was linearised, . |
|
real(kind=r8), | private | :: | ref_t | = | 0.0_r8 | The temperature about which the equation of state was linearised, . |
|
real(kind=r8), | private | :: | ref_s | = | 0.0_r8 | The salinity about which the equation of state was linearised, . |
|
real(kind=r8), | private | :: | beta_t | = | 0.0_r8 | The thermal contraction coefficient, . |
|
real(kind=r8), | private | :: | beta_s | = | 1.0_r8 | The haline contraction coefficient, . |
private pure function constructor(ref_rho, ref_t, ref_s, beta_t, beta_s) |
procedure, public :: water_density => linear_water_density | |
procedure, public :: water_density_derivative => linear_water_deriv | |
procedure, public :: haline_contraction => linear_haline_contraction | |
procedure, public :: thermal_contraction => linear_thermal_contraction |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=r8), | intent(in) | :: | ref_rho | The density for the temperature and salinity about which the equation of state was linearised, . |
||
real(kind=r8), | intent(in) | :: | ref_t | The temperature about which the equation of state was linearised, . |
||
real(kind=r8), | intent(in) | :: | ref_s | The salinity about which the equation of state was linearised, . |
||
real(kind=r8), | intent(in) | :: | beta_t | The thermal contraction coefficient, . |
||
real(kind=r8), | intent(in) | :: | beta_s | The haline contraction coefficient, . |
Calculates the density of the water from the temperature and salinity, using a linear equatino of state,
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(linear_eos), | intent(in) | :: | this | |||
class(scalar_field), | intent(in) | :: | temperature | A field containing the temperature of the water |
||
class(scalar_field), | intent(in) | :: | salinity | A field containing the salinity of the water |
A field containing the density of the water
Calculates the derivative of the water density from the temperature and salinity, using a linear equatino of state,
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(linear_eos), | intent(in) | :: | this | |||
class(scalar_field), | intent(in) | :: | temperature | A field containing the temperature of the water |
||
class(scalar_field), | intent(in) | :: | d_temperature | A field containing the derivative of the temperature of the
water, in teh same direction as |
||
class(scalar_field), | intent(in) | :: | salinity | A field containing the salinity of the water |
||
class(scalar_field), | intent(in) | :: | d_salinity | A field containing the derivative of the salinity of the
water, in the same direction as |
||
integer, | intent(in) | :: | dir | The direction in which to take the derivative |
A field containing the density of the water
Returns the haline contraction coefficient.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(linear_eos), | intent(in) | :: | this | |||
class(scalar_field), | intent(in) | :: | temperature | |||
class(scalar_field), | intent(in) | :: | salinity |
Returns the thermal contraction coefficient.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(linear_eos), | intent(in) | :: | this | |||
class(scalar_field), | intent(in) | :: | temperature | |||
class(scalar_field), | intent(in) | :: | salinity |