atmodeller.eos package
Subpackages
Submodules
atmodeller.eos._aggregators module
Classes that aggregate EOS
Units for temperature and pressure are K and bar, respectively.
- class atmodeller.eos._aggregators.CombinedRealGas(real_gases: tuple[RealGas, ...], calibrations: tuple[ExperimentalCalibration, ...])
Bases:
RealGasCombined real gas EOS with separate volume integrations for each EOS
This class computes the contribution to the volume integral separately for each EOS based on the range covered by its P-T calibration, and then combines them.
- Parameters:
real_gases – Real gases to combine
calibrations – Experimental calibrations that correspond to
real_gases
- calibrations: tuple[ExperimentalCalibration, ...]
Experimental calibrations
- upper_pressure_bounds: tuple[float, ...]
Upper pressure bounds
- classmethod create(real_gases: Sequence[RealGas], calibrations: Sequence[ExperimentalCalibration], extrapolate: bool = True) RealGas
Create an instance with the given real gases and calibrations
Reasonable extrapolation behaviour is required to ensure that the function is bounded to avoid throwing NaNs or infs which will crash the solver. Physically, it is reasonable to extend the lower bound using the ideal gas law and the upper bound assuming a linear pressure dependence of the compressibility factor.
There is no bounding for temperature; hence it is assumed that the extrapolation behaviour of temperature is reasonable. This is practically useful because the calibrations are often restricted to a lower temperature range than the high temperatures that are typically of interest for hot rocks and magma ocean planets.
- Parameters:
real_gases – Real gases to combine
calibrations – Experimental calibrations that correspond to
real_gasesextrapolate – Extrapolate the EOS to have reasonable behaviour below the minimum and above the maximum calibration pressure if required. Defaults to
True.
- Returns:
An instance
- static _append_lower_bound(real_gases: list[RealGas], calibrations: list[ExperimentalCalibration]) None
Appends the lower bound, which gives ideal gas behaviour
- Parameters:
real_gases – Real gases to combine
calibrations – Experimental calibrations that correspond to
real_gases
- static _append_upper_bound(real_gases: list[RealGas], calibrations: list[ExperimentalCalibration]) None
Appends the upper bound
- Parameters:
real_gases – Real gases to combine
calibrations – Experimental calibrations that correspond to real_gases
- static _get_upper_pressure_bounds(calibrations: tuple[ExperimentalCalibration, ...]) tuple[float, ...]
Gets the upper pressure bounds based on each experimental calibration.
- Returns:
Upper pressure bounds
- _get_index(pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Gets the index of the appropriate EOS model based on
pressure.- Parameters:
pressure – Pressure in bar
- Returns:
Index of the relevant EOS model
- volume(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray
Volume
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Volume in \(\mathrm{m}^3\ \mathrm{mol}^{-1}\)
- volume_integral(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Volume integral in units required for internal Atmodeller operations.
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Volume integral in \(\mathrm{m}^3\ \mathrm{bar}\ \mathrm{mol}^{-1}\)
- _abc_impl = <_abc._abc_data object>
- compressibility_factor(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray
Compressibility factor
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Compressibility factor, which is dimensionless
- dvdp(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Derivative of volume with respect to pressure
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Derivative of volume with respect to pressure
- dzdp(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Derivative of the compressibility factor with respect to pressure
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Derivative of the compressibility factor with respect to pressure
- fugacity(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Fugacity
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Fugacity in bar
- fugacity_coefficient(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Fugacity coefficient
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
fugacity coefficient, which is dimensionless
- log_activity(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Log activity
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Log activity, which is dimensionless
- log_fugacity(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Log fugacity
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Log fugacity in bar
- log_fugacity_coefficient(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Log fugacity coefficient
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Log fugacity coefficient, which is dimensionless
- pressure_from_fugacity(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, fugacity: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Calculate pressure from fugacity
- Parameters:
temperature – Temperature in K
fugacity – Fugacity in bar
- Returns:
Pressure in bar
- volume_integral_J(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Volume integral in J
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Volume integral in \(\mathrm{J}\ \mathrm{mol}^{-1}\)
- class atmodeller.eos._aggregators.UpperBoundRealGas(real_gas: RealGas, p_eval: Any = 1.0)
Bases:
RealGasAn upper bound for an EOS
This is used to extrapolate an EOS assuming that the compressibility factor is a linear function of pressure. Importantly, this class is not intended to be used directly, but rather as a component of
CombinedRealGas.p_evalis used to evaluate the compressibility factor and its gradient, and therefore to avoid recompilation of JAX functions it is converted to a JAX array of dtype float64 within the methods, which is the expected type for the pressure argument of the EOS functions.- Parameters:
real_gas – Real gas to evaluate the compressibility factor at
p_eval.p_eval – Evaluation pressure in bar. This is usually the maximum calibration pressure of
real_gas. Defaults to1bar.
- p_eval: float = 1.0
Evaluation pressure in bar. Defaults to
1bar.
- _z0(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray
Compressibility factor of the previous EOS to blend smoothly with.
Importantly, we don’t want to trigger a recompilation of the compressibility factor, so we pass
p_evalas an array.- Parameters:
temperature – Temperature in K
- _dzdp0(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray
Gradient of the compressibility factor of the previous EOS to blend smoothly with.
Importantly, we don’t want to trigger a recompilation of the compressibility factor, so we pass
p_evalas an array.- Parameters:
temperature – Temperature in K
- log_fugacity(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Log fugacity cannot be computed.
This method should not be used because the volume integral is only defined above p_eval, meaning that the log fugacity cannot be calculated.
- compressibility_factor(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray
Compressibility factor
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Compressibility factor, which is dimensionless
- volume(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray
Volume
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Volume in \(\mathrm{m}^3\ \mathrm{mol}^{-1}\)
- volume_integral(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Volume integral in units required for internal Atmodeller operations.
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Volume integral in \(\mathrm{m}^3\ \mathrm{bar}\ \mathrm{mol}^{-1}\)
- _abc_impl = <_abc._abc_data object>
- dvdp(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Derivative of volume with respect to pressure
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Derivative of volume with respect to pressure
- dzdp(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Derivative of the compressibility factor with respect to pressure
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Derivative of the compressibility factor with respect to pressure
- fugacity(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Fugacity
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Fugacity in bar
- fugacity_coefficient(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Fugacity coefficient
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
fugacity coefficient, which is dimensionless
- log_activity(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Log activity
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Log activity, which is dimensionless
- log_fugacity_coefficient(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Log fugacity coefficient
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Log fugacity coefficient, which is dimensionless
- pressure_from_fugacity(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, fugacity: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Calculate pressure from fugacity
- Parameters:
temperature – Temperature in K
fugacity – Fugacity in bar
- Returns:
Pressure in bar
- volume_integral_J(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Volume integral in J
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Volume integral in \(\mathrm{J}\ \mathrm{mol}^{-1}\)
- class atmodeller.eos._aggregators.CombinedRealGasFugacity(real_gases: tuple[RealGasBase, ...], calibrations: tuple[ExperimentalCalibration, ...], min_log_fugacity_coefficient: float = -15, max_log_fugacity_coefficient: float = 15)
Bases:
RealGasBaseCombined real gas EOS when only the functional form of the (log) fugacity is known.
This directly obtains the (log) fugacity at the relevant pressure by selecting the appropriate EOS model based on the pressure bounds of each calibration.
- Parameters:
real_gases – Real gases to use
calibrations – Experimental calibrations that correspond to
real_gasesmin_log_fugacity_coefficient – Minimum log fugacity coefficient to avoid numerical issues. Defaults to
-15.max_log_fugacity_coefficient – Maximum log fugacity coefficient to avoid numerical issues. Defaults to
15.
- _abc_impl = <_abc._abc_data object>
- fugacity(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Fugacity
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Fugacity in bar
- fugacity_coefficient(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Fugacity coefficient
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
fugacity coefficient, which is dimensionless
- log_activity(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Log activity
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Log activity, which is dimensionless
- log_fugacity_coefficient(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Log fugacity coefficient
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Log fugacity coefficient, which is dimensionless
- pressure_from_fugacity(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, fugacity: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Calculate pressure from fugacity
- Parameters:
temperature – Temperature in K
fugacity – Fugacity in bar
- Returns:
Pressure in bar
- real_gases: tuple[RealGasBase, ...]
Real gases to use
- calibrations: tuple[ExperimentalCalibration, ...]
Experimental calibrations
- upper_pressure_bounds: tuple[float, ...]
Upper pressure bounds
- min_log_fugacity_coefficient: float
Minimum log fugacity coefficient to avoid numerical issues
- max_log_fugacity_coefficient: float
Maximum log fugacity coefficient to avoid numerical issues
- static _get_upper_pressure_bounds(calibrations: tuple[ExperimentalCalibration, ...]) tuple[float, ...]
Gets the upper pressure bounds based on each experimental calibration.
- Returns:
Upper pressure bounds
- _get_index(pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Gets the index of the appropriate EOS model based on
pressure.- Parameters:
pressure – Pressure in bar
- Returns:
Index of the relevant EOS model
- log_fugacity(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Log fugacity
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Log fugacity in bar
atmodeller.eos._chabrier module
Real gas EOS from Chabrier and Debras [2021]
- class atmodeller.eos._chabrier.Chabrier(log10_density_func: Callable, He_fraction: Any, H2_molar_mass_g_mol: Any, He_molar_mass_g_mol: Any, integration_steps: int)
Bases:
RealGasChabrier EOS from Chabrier and Debras [2021]
This uses rho-T-P tables to lookup density (rho). Note that the numerical integration can be unstable at low pressures causing nans/zeros to propagate through calculations and crash simulations. Therefore, it is recommended to use the polynomial fit version if possible.
- Parameters:
log10_density_func – Spline lookup for density from Chabrier and Debras [2021] T-P-rho tables
He_fraction – He fraction
H2_molar_mass_g_mol – Molar mass of \(\mathrm{H}_2\)
He_molar_mass_g_mol – Molar mass of He
integration_steps – Number of integration steps
- CHABRIER_DIRECTORY: ClassVar[Path] = PosixPath('chabrier')
Directory of the Chabrier data within
data
- log10_density_func: Callable
Spline lookup for density from Chabrier and Debras [2021] T-P-rho tables
- He_fraction: float
He fraction
- H2_molar_mass_g_mol: float
Molar mass of \(\mathrm{H}_2\)
- He_molar_mass_g_mol: float
Molar mass of He
- integration_steps: int
Number of integration steps
- classmethod create(filename: Path, integration_steps: int = 100) RealGas
Creates a Chabrier instance.
- Parameters:
filename – Filename of the density-T-P data
integration_steps – Number of integration steps. Defaults to
100, which computes the fugacity of \(\mathrm{H}_2\) to within 4% (relative to 1000 steps, for T from 1000 to 5000 K and pressure to 10 GPa), and to within 10% (relative to 1000 steps, for T from 1000 to 5000 K and pressure to 100 GPa). Increasing the integration steps will increase the run time but provide better accuracy.
- Returns:
Instance
- classmethod _get_interpolator(filename: Path) Callable
Gets spline lookup for density from Chabrier and Debras [2021] T-P-rho tables.
The data tables have a slightly different organisation of the header line. But in all cases the first three columns contain the required data: log10 T [K], log10 P [GPa], and log10 rho [g/cc].
- Parameters:
filename – Filename of the density-T-P data
- Returns:
Interpolator
- _convert_to_molar_density(log10_density_gcc: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Converts density to molar density
- Parameters:
log10_density_gcc – Log10 density in g/cc
- Returns:
Molar density in \(\mathrm{mol}\mathrm{m}^{-3}\)
- static get_He_fraction_map() dict[str, float]
Mole fraction of He in the gas mixture, the other component being H2.
Dictionary keys should correspond to the name of the Chabrier file.
- log_fugacity(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Log fugacity
This performs a numerical integration to compute the fugacity, although an obvious speedup to implement is to precompute the fugacity (integral), either by calculating it during initialisation or by storing it in a lookup table that is read in.
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Log fugacity in bar
- volume(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Volume
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Volume in \(\mathrm{m}^3\ \mathrm{mol}^{-1}\)
- volume_integral(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Volume integral in units required for internal Atmodeller operations.
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Volume integral in \(\mathrm{m}^3\ \mathrm{bar}\ \mathrm{mol}^{-1}\)
- _abc_impl = <_abc._abc_data object>
- compressibility_factor(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray
Compressibility factor
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Compressibility factor, which is dimensionless
- dvdp(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Derivative of volume with respect to pressure
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Derivative of volume with respect to pressure
- dzdp(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Derivative of the compressibility factor with respect to pressure
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Derivative of the compressibility factor with respect to pressure
- fugacity(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Fugacity
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Fugacity in bar
- fugacity_coefficient(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Fugacity coefficient
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
fugacity coefficient, which is dimensionless
- log_activity(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Log activity
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Log activity, which is dimensionless
- log_fugacity_coefficient(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Log fugacity coefficient
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Log fugacity coefficient, which is dimensionless
- pressure_from_fugacity(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, fugacity: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Calculate pressure from fugacity
- Parameters:
temperature – Temperature in K
fugacity – Fugacity in bar
- Returns:
Pressure in bar
- volume_integral_J(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Volume integral in J
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Volume integral in \(\mathrm{J}\ \mathrm{mol}^{-1}\)
- class atmodeller.eos._chabrier.ChabrierFunction(coeffs: Any)
Bases:
RealGasBaseChabrier EOS from Chabrier and Debras [2021] using a function fit.
This provides a faster and more robust alternative to the full Chabrier EOS, which requires numerical integration and can be unstable at low pressures.
- Parameters:
coeffs – Coefficients for the log fugacity coefficient function
- coeffs: tuple[float, ...]
- log_fugacity(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Log fugacity
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Log fugacity in bar
- log_fugacity_coefficient(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Log fugacity coefficient
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Log fugacity coefficient, which is dimensionless
- _abc_impl = <_abc._abc_data object>
- fugacity(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Fugacity
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Fugacity in bar
- fugacity_coefficient(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Fugacity coefficient
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
fugacity coefficient, which is dimensionless
- log_activity(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Log activity
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Log activity, which is dimensionless
- pressure_from_fugacity(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, fugacity: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Calculate pressure from fugacity
- Parameters:
temperature – Temperature in K
fugacity – Fugacity in bar
- Returns:
Pressure in bar
- atmodeller.eos._chabrier._H2_3000K_chabrier21: RealGasBase = ChabrierFunction( coeffs=( 0.000791384922536, 0.538439447246127, 0.102092848927715, -0.015980196398366 ) )
Function-fit version at 3000 K for H2 Chabrier EOS between 1 bar and 1e6 bar [Chabrier and Debras, 2021]
- atmodeller.eos._chabrier.H2_3000K_chabrier21: RealGasBase = CombinedRealGasFugacity( real_gases=( IdealGas(), ChabrierFunction( coeffs=( 0.000791384922536, 0.538439447246127, 0.102092848927715, -0.015980196398366 ) ) ), calibrations=( ExperimentalCalibration(pressure_max=1.0), ExperimentalCalibration( temperature_min=3000.0, temperature_max=3000.0, pressure_min=1.0, pressure_max=1000000.0 ) ), upper_pressure_bounds=(1.0, 1000000.0), _log_fugacity_coefficient_functions=( <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>> ), min_log_fugacity_coefficient=-15, max_log_fugacity_coefficient=15 )
H2 Chabrier EOS at 3000 K between 1 bar and 1e6 bar [Chabrier and Debras, 2021]
- atmodeller.eos._chabrier._H2_4000K_chabrier21: RealGasBase = ChabrierFunction( coeffs=( 0.001804443584257, 0.46694548641623, 0.49686883364686, -0.048233745656908 ) )
Function-fit version at 4000 K for H2 Chabrier EOS between 1 bar and 1e6 bar [Chabrier and Debras, 2021]
- atmodeller.eos._chabrier.H2_4000K_chabrier21: RealGasBase = CombinedRealGasFugacity( real_gases=( IdealGas(), ChabrierFunction( coeffs=( 0.001804443584257, 0.46694548641623, 0.49686883364686, -0.048233745656908 ) ) ), calibrations=( ExperimentalCalibration(pressure_max=1.0), ExperimentalCalibration( temperature_min=4000.0, temperature_max=4000.0, pressure_min=1.0, pressure_max=1000000.0 ) ), upper_pressure_bounds=(1.0, 1000000.0), _log_fugacity_coefficient_functions=( <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>> ), min_log_fugacity_coefficient=-15, max_log_fugacity_coefficient=15 )
H2 Chabrier EOS at 4000 K between 1 bar and 1e6 bar [Chabrier and Debras, 2021]
- atmodeller.eos._chabrier.calibration_chabrier21: ExperimentalCalibration = ExperimentalCalibration( temperature_min=100.0, temperature_max=100000000.0, pressure_max=1e+17 )
Calibration for Chabrier and Debras [2021]
- atmodeller.eos._chabrier.H2_chabrier21: RealGas = Chabrier( log10_density_func=<function Chabrier._get_interpolator.<locals>.interpolator_hashable_function_wrapper>, He_fraction=0.0, H2_molar_mass_g_mol=2.015882, He_molar_mass_g_mol=4.002602, integration_steps=100 )
\(\mathrm{H}_2\) [Chabrier and Debras, 2021]
- atmodeller.eos._chabrier.H2_chabrier21_bounded: RealGas = CombinedRealGas( real_gases=( Chabrier( log10_density_func=<function Chabrier._get_interpolator.<locals>.interpolator_hashable_function_wrapper>, He_fraction=0.0, H2_molar_mass_g_mol=2.015882, He_molar_mass_g_mol=4.002602, integration_steps=100 ), UpperBoundRealGas( real_gas=Chabrier( log10_density_func=<function Chabrier._get_interpolator.<locals>.interpolator_hashable_function_wrapper>, He_fraction=0.0, H2_molar_mass_g_mol=2.015882, He_molar_mass_g_mol=4.002602, integration_steps=100 ), p_eval=1e+17 ) ), calibrations=( ExperimentalCalibration( temperature_min=100.0, temperature_max=100000000.0, pressure_max=1e+17 ), ExperimentalCalibration(pressure_min=1e+17) ), upper_pressure_bounds=(1e+17,), _volume_functions=( <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>> ), _volume_integral_functions=( <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>> ) )
\(\mathrm{H}_2\) bounded [Chabrier and Debras, 2021]
- atmodeller.eos._chabrier.He_chabrier21: RealGas = Chabrier( log10_density_func=<function Chabrier._get_interpolator.<locals>.interpolator_hashable_function_wrapper>, He_fraction=1.0, H2_molar_mass_g_mol=2.015882, He_molar_mass_g_mol=4.002602, integration_steps=100 )
- atmodeller.eos._chabrier.He_chabrier21_bounded: RealGas = CombinedRealGas( real_gases=( Chabrier( log10_density_func=<function Chabrier._get_interpolator.<locals>.interpolator_hashable_function_wrapper>, He_fraction=1.0, H2_molar_mass_g_mol=2.015882, He_molar_mass_g_mol=4.002602, integration_steps=100 ), UpperBoundRealGas( real_gas=Chabrier( log10_density_func=<function Chabrier._get_interpolator.<locals>.interpolator_hashable_function_wrapper>, He_fraction=1.0, H2_molar_mass_g_mol=2.015882, He_molar_mass_g_mol=4.002602, integration_steps=100 ), p_eval=1e+17 ) ), calibrations=( ExperimentalCalibration( temperature_min=100.0, temperature_max=100000000.0, pressure_max=1e+17 ), ExperimentalCalibration(pressure_min=1e+17) ), upper_pressure_bounds=(1e+17,), _volume_functions=( <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>> ), _volume_integral_functions=( <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>> ) )
He bounded [Chabrier and Debras, 2021]
- atmodeller.eos._chabrier.H2_He_Y0275_chabrier21: RealGas = Chabrier( log10_density_func=<function Chabrier._get_interpolator.<locals>.interpolator_hashable_function_wrapper>, He_fraction=0.275, H2_molar_mass_g_mol=2.015882, He_molar_mass_g_mol=4.002602, integration_steps=100 )
H2HeY0275 [Chabrier and Debras, 2021]
- atmodeller.eos._chabrier.H2_He_Y0275_chabrier21_bounded: RealGas = CombinedRealGas( real_gases=( Chabrier( log10_density_func=<function Chabrier._get_interpolator.<locals>.interpolator_hashable_function_wrapper>, He_fraction=0.275, H2_molar_mass_g_mol=2.015882, He_molar_mass_g_mol=4.002602, integration_steps=100 ), UpperBoundRealGas( real_gas=Chabrier( log10_density_func=<function Chabrier._get_interpolator.<locals>.interpolator_hashable_function_wrapper>, He_fraction=0.275, H2_molar_mass_g_mol=2.015882, He_molar_mass_g_mol=4.002602, integration_steps=100 ), p_eval=1e+17 ) ), calibrations=( ExperimentalCalibration( temperature_min=100.0, temperature_max=100000000.0, pressure_max=1e+17 ), ExperimentalCalibration(pressure_min=1e+17) ), upper_pressure_bounds=(1e+17,), _volume_functions=( <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>> ), _volume_integral_functions=( <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>> ) )
H2HeY0275 bounded [Chabrier and Debras, 2021]
- atmodeller.eos._chabrier.H2_He_Y0292_chabrier21: RealGas = Chabrier( log10_density_func=<function Chabrier._get_interpolator.<locals>.interpolator_hashable_function_wrapper>, He_fraction=0.292, H2_molar_mass_g_mol=2.015882, He_molar_mass_g_mol=4.002602, integration_steps=100 )
H2HeY0292 [Chabrier and Debras, 2021]
- atmodeller.eos._chabrier.H2_He_Y0292_chabrier21_bounded: RealGas = CombinedRealGas( real_gases=( Chabrier( log10_density_func=<function Chabrier._get_interpolator.<locals>.interpolator_hashable_function_wrapper>, He_fraction=0.292, H2_molar_mass_g_mol=2.015882, He_molar_mass_g_mol=4.002602, integration_steps=100 ), UpperBoundRealGas( real_gas=Chabrier( log10_density_func=<function Chabrier._get_interpolator.<locals>.interpolator_hashable_function_wrapper>, He_fraction=0.292, H2_molar_mass_g_mol=2.015882, He_molar_mass_g_mol=4.002602, integration_steps=100 ), p_eval=1e+17 ) ), calibrations=( ExperimentalCalibration( temperature_min=100.0, temperature_max=100000000.0, pressure_max=1e+17 ), ExperimentalCalibration(pressure_min=1e+17) ), upper_pressure_bounds=(1e+17,), _volume_functions=( <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>> ), _volume_integral_functions=( <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>> ) )
H2HeY0292 bounded [Chabrier and Debras, 2021]
- atmodeller.eos._chabrier.H2_He_Y0297_chabrier21: RealGas = Chabrier( log10_density_func=<function Chabrier._get_interpolator.<locals>.interpolator_hashable_function_wrapper>, He_fraction=0.297, H2_molar_mass_g_mol=2.015882, He_molar_mass_g_mol=4.002602, integration_steps=100 )
H2HeY0297 [Chabrier and Debras, 2021]
- atmodeller.eos._chabrier.H2_He_Y0297_chabrier21_bounded: RealGas = CombinedRealGas( real_gases=( Chabrier( log10_density_func=<function Chabrier._get_interpolator.<locals>.interpolator_hashable_function_wrapper>, He_fraction=0.297, H2_molar_mass_g_mol=2.015882, He_molar_mass_g_mol=4.002602, integration_steps=100 ), UpperBoundRealGas( real_gas=Chabrier( log10_density_func=<function Chabrier._get_interpolator.<locals>.interpolator_hashable_function_wrapper>, He_fraction=0.297, H2_molar_mass_g_mol=2.015882, He_molar_mass_g_mol=4.002602, integration_steps=100 ), p_eval=1e+17 ) ), calibrations=( ExperimentalCalibration( temperature_min=100.0, temperature_max=100000000.0, pressure_max=1e+17 ), ExperimentalCalibration(pressure_min=1e+17) ), upper_pressure_bounds=(1e+17,), _volume_functions=( <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>> ), _volume_integral_functions=( <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>> ) )
H2HeY0297 bounded [Chabrier and Debras, 2021]
- atmodeller.eos._chabrier.get_chabrier_eos_models() dict[str, RealGasBase]
Gets a dictionary of EOS models
- Returns:
Dictionary of EOS models
atmodeller.eos._holland_powell module
Real gas EOS from Holland and Powell [2011], Holland and Powell [1991], Holland and Powell [1998]
- class atmodeller.eos._holland_powell.CorrespondingStatesUnitConverter
Bases:
objectUnit converter for Holland and Powell CORK corresponding states model
This converts the coefficient units from Holland and Powell to the required units for Atmodeller. This accounts for kilo factors and converting the energy from J to SI volume and pressure in bar using:
\[1\ \mathrm{J} = 10^{-5}\ \mathrm{m}^3\ \mathrm{bar}\]- static convert_a_coefficients(a_coefficients: tuple[int | float, ...]) tuple[float, ...]
Converts the a coefficients for corresponding states.
The a coefficients (a0 and a1) have units [Holland and Powell, 1991, Equation 9]:
\[\left(\frac{\mathrm{kJ}}{\mathrm{mol}\ \mathrm{K}}\right)^2\]Converting kJ gives rise to a unit conversion factor of \(10^{-4}\).
- Parameters:
a_coefficients – a coefficients from Holland and Powell
- Returns:
a coefficients with units of
\[\left(\frac{\mathrm{m}^3\ \mathrm{bar}}{\mathrm{mol}\ \mathrm{K}}\right)^2\]
- static convert_b_coefficient(b_coefficient: int | float) float
Converts the b coefficient for corresponding states.
The b coefficient (b0) has units [Holland and Powell, 1991, Equation 9]:
\[\frac{\mathrm{kJ}}{\mathrm{mol}\ \mathrm{K}}\]Converting kJ gives rise to a unit conversion factor of \(10^{-2}\).
- Parameters:
b_coefficient – b coefficient from Holland and Powell
- Returns:
b coefficient with units of
\[\frac{\mathrm{m}^3\ \mathrm{bar}}{\mathrm{mol}\ \mathrm{K}}\]
- static convert_virial_coefficients(virial_coefficients: tuple[int | float, ...]) tuple[float, ...]
Converts the virial coefficients for corresponding states
The virial coefficients, for example associated with coefficients c and d in [Holland and Powell, 1991, Table 2], have units:
\[\frac{\mathrm{kJ}}{\mathrm{mol}\ \mathrm{K}}\]Converting kJ gives rise to a unit conversion factor of \(10^{-2}\).
- Parameters:
virial_coefficient – Virial coefficients from Holland and Powell
- Returns:
virial coefficients with units of
\[\frac{\mathrm{m}^3\ \mathrm{bar}}{\mathrm{mol}\ \mathrm{K}}\]
- class atmodeller.eos._holland_powell.FullUnitConverter
Bases:
objectUnit converter for Holland and Powell full CORK models for H2O and CO2
This converts the coefficient units from Holland and Powell to the required units for Atmodeller. This accounts for kilo factors and converting the energy from J to SI volume and pressure in bar using:
\[1\ \mathrm{J} = 10^{-5}\ \mathrm{m}^3\ \mathrm{bar}\]- static convert_a_coefficients(a_coefficients: tuple[int | float, ...]) tuple[float, ...]
Converts the a coefficients for the full CORK models
The a parameter has units [Holland and Powell, 1991, Table 1]
\[\frac{\mathrm{kJ}^2\ \mathrm{K}^{1/2}}{\mathrm{kbar}\ \mathrm{mol}^2}\]Each a coefficient has a different power of K, but this is dealt with during the multiplication with temperature. Here, we just need to deal with kJ and other kilo factors, which gives rise to a unit conversion factor of \(10^{-7}\).
- Parameters:
a_coefficients – a coefficients from Holland and Powell
- Returns:
a coefficients with units converted such that the a parameter has units of
\[\left(\frac{\mathrm{m}^3}{\mathrm{mol}}\right)^2\ \mathrm{bar}\ \mathrm{K}^{1/2}\]
- static convert_b_coefficient(b_coefficient: int | float) float
Converts the b coefficient for the full CORK models
The b parameter has units [Holland and Powell, 1991, Table 1]
\[\frac{\mathrm{kJ}}{\mathrm{kbar}\ \mathrm{mol}}\]Converting J gives rise to a unit conversion factor of \(10^{-5}\).
- Parameters:
b_coefficient – b coefficient from Holland and Powell
- Returns:
b coefficients with units converted such that the b parameter has units of
\[\frac{\mathrm{m}^3}{\mathrm{mol}}\]
- static convert_virial_coefficients(virial_coefficients: tuple[int | float, ...], pressure_exponent) tuple[float, ...]
Converts the virial coefficients for the full CORK models
The volume correction to the MRK volume, \(\Delta V\), based on the parameter that the coefficients determine is given by:
\[\Delta V = \mathrm{parameter(coefficients)} (P-P_0)^\gamma\]where \(\gamma\) is pressure_exponent and \(P_0\) is the pressure at which the MRK equation begins to overestimate the molar volume significantly.
- Parameters:
virial_coefficients – Virial coefficients from Holland and Powell
pressure_exponent – Pressure exponent \(\gamma\), also given by Holland and Powell
- Returns:
Virial coefficients with the appropriate units for Atmodeller
- class atmodeller.eos._holland_powell.MRKCorrespondingStatesHP91(critical_data: CriticalData)
Bases:
RedlichKwongABCMRK corresponding states [Holland and Powell, 1991]
Universal constants from Holland and Powell [1991, Table 2]
- Parameters:
critical_data – Critical data
- critical_data: CriticalData
- _a_coefficients: tuple[float, ...]
- _b: float
- property critical_pressure: float
Critical pressure in bar
- property critical_temperature: float
Critical temperature in K
- classmethod create(hill_formula: str, suffix: str = '') MRKCorrespondingStatesHP91
Gets an MRK corresponding states model for a given species.
- Parameters:
hill_formula – Hill formula
suffix – Suffix. Defaults to an empty string.
- Returns:
An MRK corresponding states model for the species
- a(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray
MRK a parameter [Holland and Powell, 1991, Equation 9]
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
MRK a parameter in \((\mathrm{m}^3\ \mathrm{mol}^{-1})^2\ \mathrm{K}^{1/2}\ \mathrm{bar}\)
- b() Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray
MRK b parameter computed from
b0[Holland and Powell, 1991, Equation 9].- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
MRK b parameter in \(\mathrm{m}^3\ \mathrm{mol}^{-1}\).
- _abc_impl = <_abc._abc_data object>
- compressibility_factor(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray
Compressibility factor
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Compressibility factor, which is dimensionless
- dvdp(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Derivative of volume with respect to pressure
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Derivative of volume with respect to pressure
- dzdp(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Derivative of the compressibility factor with respect to pressure
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Derivative of the compressibility factor with respect to pressure
- fugacity(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Fugacity
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Fugacity in bar
- fugacity_coefficient(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Fugacity coefficient
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
fugacity coefficient, which is dimensionless
- log_activity(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Log activity
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Log activity, which is dimensionless
- log_fugacity(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Log fugacity
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Log fugacity in bar
- log_fugacity_coefficient(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Log fugacity coefficient
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Log fugacity coefficient, which is dimensionless
- pressure_from_fugacity(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, fugacity: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Calculate pressure from fugacity
- Parameters:
temperature – Temperature in K
fugacity – Fugacity in bar
- Returns:
Pressure in bar
- volume(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Volume-explicit equation [Holland and Powell, 1991, Equation 7]
Without complications of critical phenomena the RK equation can be simplified using the approximation:
\[V \sim \frac{RT}{P} + b\]where \(V\) is volume, \(R\) is the gas constant, \(T\) is temperature, \(P\) is pressure, and \(b\) corrects for the volume.
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Volume in \(\mathrm{m}^3\ \mathrm{mol}^{-1}\)
- volume_integral(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Volume integral
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Volume integral in \(\mathrm{m}^3\ \mathrm{bar}\ \mathrm{mol}^{-1}\)
- volume_integral_J(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Volume integral in J
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Volume integral in \(\mathrm{J}\ \mathrm{mol}^{-1}\)
- class atmodeller.eos._holland_powell.MRKImplicitHP91ABCMixin(_a_coefficients: Any, _b: Any, _Ta: Any, _Tc: Any)
Bases:
ModuleMRK implicit [Holland and Powell, 1991]
Universal constants from Holland and Powell [1991, Table 1].
- Parameters:
a_coefficients – a coefficients
b – b coefficient
Ta – Temperature at which the a parameter is equal for the dense fluid and gas in K
Tc – Critical temperature in K
- _a_coefficients: tuple[float, ...]
- _b: float
- _Ta: float
- _Tc: float
- abstractmethod delta_temperature_for_a(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray
Temperature difference for the calculation of the a parameter
- Parameters:
temperature – Temperature in K
- Returns:
Temperature difference in K
- a(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray
MRK a parameter [Holland and Powell, 1991, Equation 6]
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
MRK a parameter
- _abc_impl = <_abc._abc_data object>
- class atmodeller.eos._holland_powell.MRKImplicitGasHP91(_a_coefficients: Any, _b: Any, _Ta: Any, _Tc: Any)
Bases:
MRKImplicitHP91ABCMixin,RedlichKwongImplicitGasABCMRK for gaseous phase [Holland and Powell, 1991, Equation 6a]
- delta_temperature_for_a(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray
Temperature difference for the calculation of the a parameter
- Parameters:
temperature – Temperature in K
- Returns:
Temperature difference in K
- A_factor(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray
A factor [Holland and Powell, 1991, Appendix A]
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
A factor, which is dimensionless
- B_factor(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray
B factor [Holland and Powell, 1991, Appendix A]
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
B factor, which is dimensionless
- _abc_impl = <_abc._abc_data object>
- _objective_function(volume: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, kwargs: dict[str, Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray]) Array
Objective function to solve for the volume
- Parameters:
volume – Volume in \(\mathrm{m}^3\ \mathrm{mol}^{-1}\)
kwargs – Dictionary with other required parameters
- Returns:
Residual of the objective function
- a(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray
MRK a parameter [Holland and Powell, 1991, Equation 6]
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
MRK a parameter
- b() Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray
Gets the b parameter
- Returns:
b parameter in \(\mathrm{m}^3\ \mathrm{mol}^{-1}\)
- compressibility_factor(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray
Compressibility factor
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Compressibility factor, which is dimensionless
- dvdp(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Derivative of volume with respect to pressure
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Derivative of volume with respect to pressure
- dzdp(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Derivative of the compressibility factor with respect to pressure
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Derivative of the compressibility factor with respect to pressure
- fugacity(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Fugacity
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Fugacity in bar
- fugacity_coefficient(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Fugacity coefficient
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
fugacity coefficient, which is dimensionless
- initial_volume(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray
Initial guess volume to ensure convergence to the correct root
For the gaseous phase a suitably high value must be chosen [Holland and Powell, 1991, Appendix].
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Initial volume in \(\mathrm{m}^3\ \mathrm{mol}^{-1}\)
- log_activity(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Log activity
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Log activity, which is dimensionless
- log_fugacity(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Log fugacity
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Log fugacity
- log_fugacity_coefficient(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Log fugacity coefficient
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Log fugacity coefficient, which is dimensionless
- pressure_from_fugacity(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, fugacity: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Calculate pressure from fugacity
- Parameters:
temperature – Temperature in K
fugacity – Fugacity in bar
- Returns:
Pressure in bar
- volume(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray
Solves the RK equation numerically to compute the volume.
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Volume in \(\mathrm{m}^3\ \mathrm{mol}^{-1}\)
- volume_integral(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Volume integral [Holland and Powell, 1991, Equation A.2]
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Volume integral in \(\mathrm{m}^3\ \mathrm{bar}\ \mathrm{mol}^{-1}\)
- volume_integral_J(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Volume integral in J
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Volume integral in \(\mathrm{J}\ \mathrm{mol}^{-1}\)
- _a_coefficients: tuple[float, ...]
- _b: float
- _Ta: float
- _Tc: float
- atmodeller.eos._holland_powell.Tc_H2O: int | float = 695
Critical temperature of H2O in K for the MRK/CORK model [Holland and Powell, 1991]
- atmodeller.eos._holland_powell.Ta_H2O: int | float = 673
Temperature at which \(a_{\mathrm gas} = a\) for H2O by fitting [Holland and Powell, 1991]
- atmodeller.eos._holland_powell.b0_H2O: float = 1.4650000000000002e-05
b parameter value which is the same across all H2O phases [Holland and Powell, 1991]
- atmodeller.eos._holland_powell.H2OMrkGasHolland91: MRKImplicitGasHP91 = MRKImplicitGasHP91( _a_coefficients=(0.00011134, 5.8487e-07, -2.137e-09, 6.8133000000000005e-12), _b=1.4650000000000002e-05, _Ta=673.0, _Tc=695.0 )
H2O MRK for gas phase [Holland and Powell, 1991]
- class atmodeller.eos._holland_powell.MRKImplicitLiquidHP91(_a_coefficients: Any, _b: Any, _Ta: Any, _Tc: Any)
Bases:
MRKImplicitHP91ABCMixin,RedlichKwongImplicitDenseFluidABCMRK for liquid phase :cite:p`HP91{Equation 6}`
- delta_temperature_for_a(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray
Temperature difference for the calculation of the a parameter
- Parameters:
temperature – Temperature in K
- Returns:
Temperature difference in K
- A_factor(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray
A factor [Holland and Powell, 1991, Appendix A]
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
A factor, which is dimensionless
- B_factor(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray
B factor [Holland and Powell, 1991, Appendix A]
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
B factor, which is dimensionless
- _abc_impl = <_abc._abc_data object>
- _objective_function(volume: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, kwargs: dict[str, Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray]) Array
Objective function to solve for the volume
- Parameters:
volume – Volume in \(\mathrm{m}^3\ \mathrm{mol}^{-1}\)
kwargs – Dictionary with other required parameters
- Returns:
Residual of the objective function
- a(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray
MRK a parameter [Holland and Powell, 1991, Equation 6]
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
MRK a parameter
- b() Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray
Gets the b parameter
- Returns:
b parameter in \(\mathrm{m}^3\ \mathrm{mol}^{-1}\)
- compressibility_factor(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray
Compressibility factor
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Compressibility factor, which is dimensionless
- dvdp(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Derivative of volume with respect to pressure
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Derivative of volume with respect to pressure
- dzdp(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Derivative of the compressibility factor with respect to pressure
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Derivative of the compressibility factor with respect to pressure
- fugacity(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Fugacity
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Fugacity in bar
- fugacity_coefficient(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Fugacity coefficient
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
fugacity coefficient, which is dimensionless
- initial_volume(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray
Initial guess volume to ensure convergence to the correct root
For the dense fluid phase a suitably low value must be chosen [Holland and Powell, 1991, Appendix].
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Initial volume in \(\mathrm{m}^3\ \mathrm{mol}^{-1}\)
- log_activity(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Log activity
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Log activity, which is dimensionless
- log_fugacity(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Log fugacity
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Log fugacity
- log_fugacity_coefficient(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Log fugacity coefficient
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Log fugacity coefficient, which is dimensionless
- pressure_from_fugacity(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, fugacity: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Calculate pressure from fugacity
- Parameters:
temperature – Temperature in K
fugacity – Fugacity in bar
- Returns:
Pressure in bar
- volume(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray
Solves the RK equation numerically to compute the volume.
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Volume in \(\mathrm{m}^3\ \mathrm{mol}^{-1}\)
- volume_integral(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Volume integral [Holland and Powell, 1991, Equation A.2]
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Volume integral in \(\mathrm{m}^3\ \mathrm{bar}\ \mathrm{mol}^{-1}\)
- volume_integral_J(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Volume integral in J
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Volume integral in \(\mathrm{J}\ \mathrm{mol}^{-1}\)
- _a_coefficients: tuple[float, ...]
- _b: float
- _Ta: float
- _Tc: float
- atmodeller.eos._holland_powell.H2OMrkLiquidHolland91: MRKImplicitLiquidHP91 = MRKImplicitLiquidHP91( _a_coefficients=(0.00011134, -8.8517e-08, 4.53e-10, -1.3183e-12), _b=1.4650000000000002e-05, _Ta=673.0, _Tc=695.0 )
cite:p`HP91`
- Type:
H2O MRK for liquid phase
- class atmodeller.eos._holland_powell.MRKImplicitFluidHP91(_a_coefficients: Any, _b: Any, _Ta: Any, _Tc: Any)
Bases:
MRKImplicitHP91ABCMixin,RedlichKwongImplicitDenseFluidABCMRK for supercritical fluid [Holland and Powell, 1991, Equation 6]
- delta_temperature_for_a(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray
Temperature difference for the calculation of the a parameter
- Parameters:
temperature – Temperature in K
- Returns:
Temperature difference in K
- initial_volume(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray
Initial guess volume to ensure convergence to the correct root
See Holland and Powell [1991, Appendix]. It appears that there is only ever a single root, even if Ta < temperature < Tc. Holland and Powell state that a single root exists if temperature > Tc, but this appears to be true if temperature > Ta. Nevertheless, the initial guess is changed accordingly.
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Initial volume in \(\mathrm{m}^3\ \mathrm{mol}^{-1}\)
- A_factor(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray
A factor [Holland and Powell, 1991, Appendix A]
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
A factor, which is dimensionless
- B_factor(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray
B factor [Holland and Powell, 1991, Appendix A]
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
B factor, which is dimensionless
- _abc_impl = <_abc._abc_data object>
- _objective_function(volume: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, kwargs: dict[str, Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray]) Array
Objective function to solve for the volume
- Parameters:
volume – Volume in \(\mathrm{m}^3\ \mathrm{mol}^{-1}\)
kwargs – Dictionary with other required parameters
- Returns:
Residual of the objective function
- a(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray
MRK a parameter [Holland and Powell, 1991, Equation 6]
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
MRK a parameter
- b() Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray
Gets the b parameter
- Returns:
b parameter in \(\mathrm{m}^3\ \mathrm{mol}^{-1}\)
- compressibility_factor(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray
Compressibility factor
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Compressibility factor, which is dimensionless
- dvdp(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Derivative of volume with respect to pressure
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Derivative of volume with respect to pressure
- dzdp(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Derivative of the compressibility factor with respect to pressure
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Derivative of the compressibility factor with respect to pressure
- fugacity(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Fugacity
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Fugacity in bar
- fugacity_coefficient(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Fugacity coefficient
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
fugacity coefficient, which is dimensionless
- log_activity(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Log activity
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Log activity, which is dimensionless
- log_fugacity(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Log fugacity
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Log fugacity
- log_fugacity_coefficient(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Log fugacity coefficient
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Log fugacity coefficient, which is dimensionless
- pressure_from_fugacity(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, fugacity: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Calculate pressure from fugacity
- Parameters:
temperature – Temperature in K
fugacity – Fugacity in bar
- Returns:
Pressure in bar
- volume(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray
Solves the RK equation numerically to compute the volume.
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Volume in \(\mathrm{m}^3\ \mathrm{mol}^{-1}\)
- volume_integral(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Volume integral [Holland and Powell, 1991, Equation A.2]
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Volume integral in \(\mathrm{m}^3\ \mathrm{bar}\ \mathrm{mol}^{-1}\)
- volume_integral_J(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Volume integral in J
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Volume integral in \(\mathrm{J}\ \mathrm{mol}^{-1}\)
- _a_coefficients: tuple[float, ...]
- _b: float
- _Ta: float
- _Tc: float
- atmodeller.eos._holland_powell.H2OMrkFluidHolland91: MRKImplicitFluidHP91 = MRKImplicitFluidHP91( _a_coefficients=(0.00011134, -2.2290999999999998e-08, -3.8022e-11, 1.7791e-14), _b=1.4650000000000002e-05, _Ta=673.0, _Tc=695.0 )
cite:p`HP91`
- Type:
H2O MRK for fluid phase
- atmodeller.eos._holland_powell.CO2_critical_data: CriticalData = CriticalData(temperature=304.15, pressure=73.8659)
Alternative values from Holland and Powell [1991] are 304.2 K and 73.8 bar
- atmodeller.eos._holland_powell.CO2MrkHolland91: MRKImplicitFluidHP91 = MRKImplicitFluidHP91( _a_coefficients=(7.412e-05, -1.0891e-08, -3.4203e-11, 0.0), _b=3.057e-05, _Ta=0.0, _Tc=304.15 )
CO2 MRK [Holland and Powell, 1991, Above Equation 7]
Critical behaviour is not considered for CO2 by Holland and Powell [1991], but for consistency with the formulation for H2O, the CO2 critical temperature is set.
- class atmodeller.eos._holland_powell.H2OMrkGasFluid91(mrk_fluid: MRKImplicitFluidHP91 = MRKImplicitFluidHP91(_a_coefficients=(0.00011134, -2.2290999999999998e-08, -3.8022e-11, 1.7791e-14), _b=1.4650000000000002e-05, _Ta=673.0, _Tc=695.0), mrk_gas: MRKImplicitGasHP91 = MRKImplicitGasHP91(_a_coefficients=(0.00011134, 5.8487e-07, -2.137e-09, 6.8133000000000005e-12), _b=1.4650000000000002e-05, _Ta=673.0, _Tc=695.0), Ta: Any = 673, Tc: Any = 695)
Bases:
RealGasA MRK model for H2O for the gas and supercritical fluid
- Parameters:
mrk_fluid – The MRK for the supercritical fluid
mrk_gas – The MRK for the subcritical gas
Ta – Temperature at which a_gas = a in the MRK formulation in K
Tc – Critical temperature in K
- mrk_fluid: MRKImplicitFluidHP91 = MRKImplicitFluidHP91( _a_coefficients=(0.00011134, -2.2290999999999998e-08, -3.8022e-11, 1.7791e-14), _b=1.4650000000000002e-05, _Ta=673.0, _Tc=695.0 )
The MRK for the supercritical fluid
- mrk_gas: MRKImplicitGasHP91 = MRKImplicitGasHP91( _a_coefficients=(0.00011134, 5.8487e-07, -2.137e-09, 6.8133000000000005e-12), _b=1.4650000000000002e-05, _Ta=673.0, _Tc=695.0 )
The MRK for the subcritical gas
- Ta: float = 673
Temperature at which a_gas = a in the MRK formulation in K
- Tc: float = 695
Critical temperature in K
- _select_condition(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Selects the condition
- Parameters:
temperature – Temperature in K
- Returns:
Integer denoting the condition, i.e. the region of phase space
- volume_integral(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Volume integral [Holland and Powell, 1991, Appendix A]
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Volume integral in \(\mathrm{m}^3\ \mathrm{bar}\ \mathrm{mol}^{-1}\)
- log_fugacity(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Log fugacity [Holland and Powell, 1991, Equation 8]
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Log fugacity
- volume(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Volume
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Volume in \(\mathrm{m}^3\ \mathrm{mol}^{-1}\)
- _abc_impl = <_abc._abc_data object>
- compressibility_factor(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray
Compressibility factor
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Compressibility factor, which is dimensionless
- dvdp(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Derivative of volume with respect to pressure
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Derivative of volume with respect to pressure
- dzdp(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Derivative of the compressibility factor with respect to pressure
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Derivative of the compressibility factor with respect to pressure
- fugacity(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Fugacity
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Fugacity in bar
- fugacity_coefficient(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Fugacity coefficient
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
fugacity coefficient, which is dimensionless
- log_activity(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Log activity
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Log activity, which is dimensionless
- log_fugacity_coefficient(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Log fugacity coefficient
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Log fugacity coefficient, which is dimensionless
- pressure_from_fugacity(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, fugacity: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Calculate pressure from fugacity
- Parameters:
temperature – Temperature in K
fugacity – Fugacity in bar
- Returns:
Pressure in bar
- volume_integral_J(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Volume integral in J
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Volume integral in \(\mathrm{J}\ \mathrm{mol}^{-1}\)
- class atmodeller.eos._holland_powell.H2OMrkHP91(mrk_fluid: MRKImplicitFluidHP91 = MRKImplicitFluidHP91(_a_coefficients=(0.00011134, -2.2290999999999998e-08, -3.8022e-11, 1.7791e-14), _b=1.4650000000000002e-05, _Ta=673.0, _Tc=695.0), mrk_gas: MRKImplicitGasHP91 = MRKImplicitGasHP91(_a_coefficients=(0.00011134, 5.8487e-07, -2.137e-09, 6.8133000000000005e-12), _b=1.4650000000000002e-05, _Ta=673.0, _Tc=695.0), mrk_liquid: MRKImplicitLiquidHP91 = MRKImplicitLiquidHP91(_a_coefficients=(0.00011134, -8.8517e-08, 4.53e-10, -1.3183e-12), _b=1.4650000000000002e-05, _Ta=673.0, _Tc=695.0), Ta: Any = 673, Tc: Any = 695)
Bases:
RealGasA MRK model for H2O that accommodates critical behaviour
- Parameters:
mrk_fluid – The MRK for the supercritical fluid
mrk_gas – The MRK for the subcritical gas
mrk_liquid – The MRK for the subcritical liquid
Ta – Temperature at which a_gas = a in the MRK formulation in K
Tc – Critical temperature in K
- mrk_fluid: MRKImplicitFluidHP91 = MRKImplicitFluidHP91( _a_coefficients=(0.00011134, -2.2290999999999998e-08, -3.8022e-11, 1.7791e-14), _b=1.4650000000000002e-05, _Ta=673.0, _Tc=695.0 )
The MRK for the supercritical fluid
- mrk_gas: MRKImplicitGasHP91 = MRKImplicitGasHP91( _a_coefficients=(0.00011134, 5.8487e-07, -2.137e-09, 6.8133000000000005e-12), _b=1.4650000000000002e-05, _Ta=673.0, _Tc=695.0 )
The MRK for the subcritical gas
- mrk_liquid: MRKImplicitLiquidHP91 = MRKImplicitLiquidHP91( _a_coefficients=(0.00011134, -8.8517e-08, 4.53e-10, -1.3183e-12), _b=1.4650000000000002e-05, _Ta=673.0, _Tc=695.0 )
The MRK for the subcritical liquid
- Ta: float = 673
Temperature at which a_gas = a in the MRK formulation in K
- Tc: float = 695
Critical temperature in K
- Psat(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Saturation curve
Compared to Holland and Powell [1991] the pressure is returned in bar, as required by Atmodeller.
- Parameters:
temperature – Temperature in K
- Returns:
Saturation curve pressure in bar
- _select_condition(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Selects the condition
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Integer denoting the condition, i.e. the region of phase space
- volume_integral(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Volume integral [Holland and Powell, 1991, Appendix A]
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Volume integral in \(\mathrm{m}^3\ \mathrm{bar}\ \mathrm{mol}^{-1}\)
- log_fugacity(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Log fugacity [Holland and Powell, 1991, Equation 8]
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Log fugacity
- volume(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray
Volume
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Volume in \(\mathrm{m}^3\ \mathrm{mol}^{-1}\)
- _abc_impl = <_abc._abc_data object>
- compressibility_factor(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray
Compressibility factor
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Compressibility factor, which is dimensionless
- dvdp(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Derivative of volume with respect to pressure
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Derivative of volume with respect to pressure
- dzdp(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Derivative of the compressibility factor with respect to pressure
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Derivative of the compressibility factor with respect to pressure
- fugacity(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Fugacity
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Fugacity in bar
- fugacity_coefficient(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Fugacity coefficient
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
fugacity coefficient, which is dimensionless
- log_activity(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Log activity
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Log activity, which is dimensionless
- log_fugacity_coefficient(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Log fugacity coefficient
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Log fugacity coefficient, which is dimensionless
- pressure_from_fugacity(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, fugacity: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Calculate pressure from fugacity
- Parameters:
temperature – Temperature in K
fugacity – Fugacity in bar
- Returns:
Pressure in bar
- volume_integral_J(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Volume integral in J
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Volume integral in \(\mathrm{J}\ \mathrm{mol}^{-1}\)
- atmodeller.eos._holland_powell.H2OMrkHolland91: RealGas = H2OMrkHP91(Ta=673.0, Tc=695.0)
H2O MRK that includes critical behaviour (also the liquid phase)
- atmodeller.eos._holland_powell.CO2_mrk_cs_holland91: RealGas = MRKCorrespondingStatesHP91( critical_data=CriticalData(temperature=304.15, pressure=73.8659), _a_coefficients=(5.45963e-09, -8.639200000000001e-10, 0.0), _b=9.183009999999999e-06 )
CO2 MRK corresponding states [Holland and Powell, 1991]
- atmodeller.eos._holland_powell.CH4_mrk_cs_holland91: RealGas = MRKCorrespondingStatesHP91( critical_data=CriticalData(temperature=191.05, pressure=46.4069), _a_coefficients=(5.45963e-09, -8.639200000000001e-10, 0.0), _b=9.183009999999999e-06 )
CH4 MRK corresponding states [Holland and Powell, 1991]
- atmodeller.eos._holland_powell.H2_mrk_cs_holland91: RealGas = MRKCorrespondingStatesHP91( critical_data=CriticalData(temperature=41.2, pressure=21.1), _a_coefficients=(5.45963e-09, -8.639200000000001e-10, 0.0), _b=9.183009999999999e-06 )
H2 MRK corresponding states [Holland and Powell, 1991]
- atmodeller.eos._holland_powell.CO_mrk_cs_holland91: RealGas = MRKCorrespondingStatesHP91( critical_data=CriticalData(temperature=133.15, pressure=34.9571), _a_coefficients=(5.45963e-09, -8.639200000000001e-10, 0.0), _b=9.183009999999999e-06 )
CO MRK corresponding states [Holland and Powell, 1991]
- atmodeller.eos._holland_powell.N2_mrk_cs_holland91: RealGas = MRKCorrespondingStatesHP91( critical_data=CriticalData(temperature=126.2, pressure=33.9), _a_coefficients=(5.45963e-09, -8.639200000000001e-10, 0.0), _b=9.183009999999999e-06 )
N2 MRK corresponding states [Holland and Powell, 1991]
- atmodeller.eos._holland_powell.S2_mrk_cs_holland11: RealGas = MRKCorrespondingStatesHP91( critical_data=CriticalData(temperature=208.15, pressure=72.954), _a_coefficients=(5.45963e-09, -8.639200000000001e-10, 0.0), _b=9.183009999999999e-06 )
S2 MRK corresponding states [Holland and Powell, 2011]
- atmodeller.eos._holland_powell.H2S_mrk_cs_holland11: RealGas = MRKCorrespondingStatesHP91( critical_data=CriticalData(temperature=373.55, pressure=90.0779), _a_coefficients=(5.45963e-09, -8.639200000000001e-10, 0.0), _b=9.183009999999999e-06 )
H2S MRK corresponding states [Holland and Powell, 2011]
- atmodeller.eos._holland_powell.H2O_mrk_fluid_holland91: RealGas = MRKImplicitFluidHP91( _a_coefficients=(0.00011134, -2.2290999999999998e-08, -3.8022e-11, 1.7791e-14), _b=1.4650000000000002e-05, _Ta=673.0, _Tc=695.0 )
H2O MRK supercritical fluid [Holland and Powell, 1991]
- atmodeller.eos._holland_powell.H2O_mrk_gas_holland91: RealGas = MRKImplicitGasHP91( _a_coefficients=(0.00011134, 5.8487e-07, -2.137e-09, 6.8133000000000005e-12), _b=1.4650000000000002e-05, _Ta=673.0, _Tc=695.0 )
H2O MRK gas [Holland and Powell, 1991]
- atmodeller.eos._holland_powell.H2O_mrk_liquid_holland91: RealGas = MRKImplicitLiquidHP91( _a_coefficients=(0.00011134, -8.8517e-08, 4.53e-10, -1.3183e-12), _b=1.4650000000000002e-05, _Ta=673.0, _Tc=695.0 )
H2O MRK liquid [Holland and Powell, 1991]
- atmodeller.eos._holland_powell.H2O_mrk_gas_fluid_holland91: RealGas = H2OMrkGasFluid91(Ta=673.0, Tc=695.0)
H2O MRK for the gas and supercritical fluid [Holland and Powell, 1991]
- atmodeller.eos._holland_powell.virial_compensation_corresponding_states: VirialCompensation = VirialCompensation( a_coefficients=(6.93054e-09, -8.38293e-10), b_coefficients=(-3.30558e-07, 2.30524e-08), c_coefficients=(0.0, 0.0), P0=0.0 )
Virial compensation for corresponding states [Holland and Powell, 1991, Table 2]
In this case it appears P0 is always zero, even though for the full CORK equations it determines whether or not the virial contribution is added. The unit conversions to SI and pressure in bar mean that every virial coefficient has been multiplied by 1e-2 compared to the values in Holland and Powell [1991, Table 2].
- atmodeller.eos._holland_powell.experimental_calibration_holland91: ExperimentalCalibration = ExperimentalCalibration( temperature_min=373.0, temperature_max=1873.0, pressure_min=1.0, pressure_max=50000.0 )
Experimental calibration for [Holland and Powell, 2011, Holland and Powell, 1991] models
- atmodeller.eos._holland_powell.experimental_calibration_holland98: ExperimentalCalibration = ExperimentalCalibration( temperature_min=373.0, temperature_max=1873.0, pressure_min=1.0, pressure_max=120000.0 )
Experimental calibration for [Holland and Powell, 1998] models
- atmodeller.eos._holland_powell.CH4_cork_cs_holland91: RealGas = CORK( mrk=MRKCorrespondingStatesHP91( critical_data=CriticalData(temperature=191.05, pressure=46.4069), _a_coefficients=(5.45963e-09, -8.639200000000001e-10, 0.0), _b=9.183009999999999e-06 ), virial=VirialCompensation( a_coefficients=(6.93054e-09, -8.38293e-10), b_coefficients=(-3.30558e-07, 2.30524e-08), c_coefficients=(0.0, 0.0), P0=0.0 ), critical_data=CriticalData(temperature=191.05, pressure=46.4069) )
CH4 CORK corresponding states [Holland and Powell, 1991]
- atmodeller.eos._holland_powell.CH4_cork_cs_holland91_bounded: RealGas = CombinedRealGas( real_gases=( IdealGas(), CORK( mrk=MRKCorrespondingStatesHP91( critical_data=CriticalData(temperature=191.05, pressure=46.4069), _a_coefficients=(5.45963e-09, -8.639200000000001e-10, 0.0), _b=9.183009999999999e-06 ), virial=VirialCompensation( a_coefficients=(6.93054e-09, -8.38293e-10), b_coefficients=(-3.30558e-07, 2.30524e-08), c_coefficients=(0.0, 0.0), P0=0.0 ), critical_data=CriticalData(temperature=191.05, pressure=46.4069) ), UpperBoundRealGas( real_gas=CORK( mrk=MRKCorrespondingStatesHP91( critical_data=CriticalData(temperature=191.05, pressure=46.4069), _a_coefficients=(5.45963e-09, -8.639200000000001e-10, 0.0), _b=9.183009999999999e-06 ), virial=VirialCompensation( a_coefficients=(6.93054e-09, -8.38293e-10), b_coefficients=(-3.30558e-07, 2.30524e-08), c_coefficients=(0.0, 0.0), P0=0.0 ), critical_data=CriticalData(temperature=191.05, pressure=46.4069) ), p_eval=50000.0 ) ), calibrations=( ExperimentalCalibration(pressure_max=1.0), ExperimentalCalibration( temperature_min=373.0, temperature_max=1873.0, pressure_min=1.0, pressure_max=50000.0 ), ExperimentalCalibration(pressure_min=50000.0) ), upper_pressure_bounds=(1.0, 50000.0), _volume_functions=( <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>> ), _volume_integral_functions=( <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>> ) )
CH4 CORK corresponding states bounded [Holland and Powell, 1991]
- atmodeller.eos._holland_powell.CO_cork_cs_holland91: RealGas = CORK( mrk=MRKCorrespondingStatesHP91( critical_data=CriticalData(temperature=133.15, pressure=34.9571), _a_coefficients=(5.45963e-09, -8.639200000000001e-10, 0.0), _b=9.183009999999999e-06 ), virial=VirialCompensation( a_coefficients=(6.93054e-09, -8.38293e-10), b_coefficients=(-3.30558e-07, 2.30524e-08), c_coefficients=(0.0, 0.0), P0=0.0 ), critical_data=CriticalData(temperature=133.15, pressure=34.9571) )
CO CORK corresponding states [Holland and Powell, 1991]
- atmodeller.eos._holland_powell.CO_cork_cs_holland91_bounded: RealGas = CombinedRealGas( real_gases=( IdealGas(), CORK( mrk=MRKCorrespondingStatesHP91( critical_data=CriticalData(temperature=133.15, pressure=34.9571), _a_coefficients=(5.45963e-09, -8.639200000000001e-10, 0.0), _b=9.183009999999999e-06 ), virial=VirialCompensation( a_coefficients=(6.93054e-09, -8.38293e-10), b_coefficients=(-3.30558e-07, 2.30524e-08), c_coefficients=(0.0, 0.0), P0=0.0 ), critical_data=CriticalData(temperature=133.15, pressure=34.9571) ), UpperBoundRealGas( real_gas=CORK( mrk=MRKCorrespondingStatesHP91( critical_data=CriticalData(temperature=133.15, pressure=34.9571), _a_coefficients=(5.45963e-09, -8.639200000000001e-10, 0.0), _b=9.183009999999999e-06 ), virial=VirialCompensation( a_coefficients=(6.93054e-09, -8.38293e-10), b_coefficients=(-3.30558e-07, 2.30524e-08), c_coefficients=(0.0, 0.0), P0=0.0 ), critical_data=CriticalData(temperature=133.15, pressure=34.9571) ), p_eval=50000.0 ) ), calibrations=( ExperimentalCalibration(pressure_max=1.0), ExperimentalCalibration( temperature_min=373.0, temperature_max=1873.0, pressure_min=1.0, pressure_max=50000.0 ), ExperimentalCalibration(pressure_min=50000.0) ), upper_pressure_bounds=(1.0, 50000.0), _volume_functions=( <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>> ), _volume_integral_functions=( <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>> ) )
CO CORK corresponding states bounded [Holland and Powell, 1991]
- atmodeller.eos._holland_powell.CO2_cork_cs_holland91: RealGas = CORK( mrk=MRKCorrespondingStatesHP91( critical_data=CriticalData(temperature=304.15, pressure=73.8659), _a_coefficients=(5.45963e-09, -8.639200000000001e-10, 0.0), _b=9.183009999999999e-06 ), virial=VirialCompensation( a_coefficients=(6.93054e-09, -8.38293e-10), b_coefficients=(-3.30558e-07, 2.30524e-08), c_coefficients=(0.0, 0.0), P0=0.0 ), critical_data=CriticalData(temperature=304.15, pressure=73.8659) )
CO2 CORK corresponding states [Holland and Powell, 1991]
- atmodeller.eos._holland_powell.CO2_cork_cs_holland91_bounded: RealGas = CombinedRealGas( real_gases=( IdealGas(), CORK( mrk=MRKCorrespondingStatesHP91( critical_data=CriticalData(temperature=304.15, pressure=73.8659), _a_coefficients=(5.45963e-09, -8.639200000000001e-10, 0.0), _b=9.183009999999999e-06 ), virial=VirialCompensation( a_coefficients=(6.93054e-09, -8.38293e-10), b_coefficients=(-3.30558e-07, 2.30524e-08), c_coefficients=(0.0, 0.0), P0=0.0 ), critical_data=CriticalData(temperature=304.15, pressure=73.8659) ), UpperBoundRealGas( real_gas=CORK( mrk=MRKCorrespondingStatesHP91( critical_data=CriticalData(temperature=304.15, pressure=73.8659), _a_coefficients=(5.45963e-09, -8.639200000000001e-10, 0.0), _b=9.183009999999999e-06 ), virial=VirialCompensation( a_coefficients=(6.93054e-09, -8.38293e-10), b_coefficients=(-3.30558e-07, 2.30524e-08), c_coefficients=(0.0, 0.0), P0=0.0 ), critical_data=CriticalData(temperature=304.15, pressure=73.8659) ), p_eval=50000.0 ) ), calibrations=( ExperimentalCalibration(pressure_max=1.0), ExperimentalCalibration( temperature_min=373.0, temperature_max=1873.0, pressure_min=1.0, pressure_max=50000.0 ), ExperimentalCalibration(pressure_min=50000.0) ), upper_pressure_bounds=(1.0, 50000.0), _volume_functions=( <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>> ), _volume_integral_functions=( <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>> ) )
CO2 CORK corresponding states bounded [Holland and Powell, 1991]
- atmodeller.eos._holland_powell.H2_cork_cs_holland91: RealGas = CORK( mrk=MRKCorrespondingStatesHP91( critical_data=CriticalData(temperature=41.2, pressure=21.1), _a_coefficients=(5.45963e-09, -8.639200000000001e-10, 0.0), _b=9.183009999999999e-06 ), virial=VirialCompensation( a_coefficients=(6.93054e-09, -8.38293e-10), b_coefficients=(-3.30558e-07, 2.30524e-08), c_coefficients=(0.0, 0.0), P0=0.0 ), critical_data=CriticalData(temperature=41.2, pressure=21.1) )
H2 CORK corresponding states [Holland and Powell, 1991]
- atmodeller.eos._holland_powell.H2_cork_cs_holland91_bounded: RealGas = CombinedRealGas( real_gases=( IdealGas(), CORK( mrk=MRKCorrespondingStatesHP91( critical_data=CriticalData(temperature=41.2, pressure=21.1), _a_coefficients=(5.45963e-09, -8.639200000000001e-10, 0.0), _b=9.183009999999999e-06 ), virial=VirialCompensation( a_coefficients=(6.93054e-09, -8.38293e-10), b_coefficients=(-3.30558e-07, 2.30524e-08), c_coefficients=(0.0, 0.0), P0=0.0 ), critical_data=CriticalData(temperature=41.2, pressure=21.1) ), UpperBoundRealGas( real_gas=CORK( mrk=MRKCorrespondingStatesHP91( critical_data=CriticalData(temperature=41.2, pressure=21.1), _a_coefficients=(5.45963e-09, -8.639200000000001e-10, 0.0), _b=9.183009999999999e-06 ), virial=VirialCompensation( a_coefficients=(6.93054e-09, -8.38293e-10), b_coefficients=(-3.30558e-07, 2.30524e-08), c_coefficients=(0.0, 0.0), P0=0.0 ), critical_data=CriticalData(temperature=41.2, pressure=21.1) ), p_eval=50000.0 ) ), calibrations=( ExperimentalCalibration(pressure_max=1.0), ExperimentalCalibration( temperature_min=373.0, temperature_max=1873.0, pressure_min=1.0, pressure_max=50000.0 ), ExperimentalCalibration(pressure_min=50000.0) ), upper_pressure_bounds=(1.0, 50000.0), _volume_functions=( <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>> ), _volume_integral_functions=( <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>> ) )
H2 CORK corresponding states bounded [Holland and Powell, 1991]
- atmodeller.eos._holland_powell.H2S_cork_cs_holland11: RealGas = CORK( mrk=MRKCorrespondingStatesHP91( critical_data=CriticalData(temperature=373.55, pressure=90.0779), _a_coefficients=(5.45963e-09, -8.639200000000001e-10, 0.0), _b=9.183009999999999e-06 ), virial=VirialCompensation( a_coefficients=(6.93054e-09, -8.38293e-10), b_coefficients=(-3.30558e-07, 2.30524e-08), c_coefficients=(0.0, 0.0), P0=0.0 ), critical_data=CriticalData(temperature=373.55, pressure=90.0779) )
H2S CORK corresponding states [Holland and Powell, 1991]
- atmodeller.eos._holland_powell.H2S_cork_cs_holland11_bounded: RealGas = CombinedRealGas( real_gases=( IdealGas(), CORK( mrk=MRKCorrespondingStatesHP91( critical_data=CriticalData(temperature=373.55, pressure=90.0779), _a_coefficients=(5.45963e-09, -8.639200000000001e-10, 0.0), _b=9.183009999999999e-06 ), virial=VirialCompensation( a_coefficients=(6.93054e-09, -8.38293e-10), b_coefficients=(-3.30558e-07, 2.30524e-08), c_coefficients=(0.0, 0.0), P0=0.0 ), critical_data=CriticalData(temperature=373.55, pressure=90.0779) ), UpperBoundRealGas( real_gas=CORK( mrk=MRKCorrespondingStatesHP91( critical_data=CriticalData(temperature=373.55, pressure=90.0779), _a_coefficients=(5.45963e-09, -8.639200000000001e-10, 0.0), _b=9.183009999999999e-06 ), virial=VirialCompensation( a_coefficients=(6.93054e-09, -8.38293e-10), b_coefficients=(-3.30558e-07, 2.30524e-08), c_coefficients=(0.0, 0.0), P0=0.0 ), critical_data=CriticalData(temperature=373.55, pressure=90.0779) ), p_eval=50000.0 ) ), calibrations=( ExperimentalCalibration(pressure_max=1.0), ExperimentalCalibration( temperature_min=373.0, temperature_max=1873.0, pressure_min=1.0, pressure_max=50000.0 ), ExperimentalCalibration(pressure_min=50000.0) ), upper_pressure_bounds=(1.0, 50000.0), _volume_functions=( <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>> ), _volume_integral_functions=( <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>> ) )
H2S CORK corresponding states bounded [Holland and Powell, 1991]
- atmodeller.eos._holland_powell.N2_cork_cs_holland91: RealGas = CORK( mrk=MRKCorrespondingStatesHP91( critical_data=CriticalData(temperature=126.2, pressure=33.9), _a_coefficients=(5.45963e-09, -8.639200000000001e-10, 0.0), _b=9.183009999999999e-06 ), virial=VirialCompensation( a_coefficients=(6.93054e-09, -8.38293e-10), b_coefficients=(-3.30558e-07, 2.30524e-08), c_coefficients=(0.0, 0.0), P0=0.0 ), critical_data=CriticalData(temperature=126.2, pressure=33.9) )
N2 CORK corresponding states [Holland and Powell, 1991]
- atmodeller.eos._holland_powell.N2_cork_cs_holland91_bounded: RealGas = CombinedRealGas( real_gases=( IdealGas(), CORK( mrk=MRKCorrespondingStatesHP91( critical_data=CriticalData(temperature=126.2, pressure=33.9), _a_coefficients=(5.45963e-09, -8.639200000000001e-10, 0.0), _b=9.183009999999999e-06 ), virial=VirialCompensation( a_coefficients=(6.93054e-09, -8.38293e-10), b_coefficients=(-3.30558e-07, 2.30524e-08), c_coefficients=(0.0, 0.0), P0=0.0 ), critical_data=CriticalData(temperature=126.2, pressure=33.9) ), UpperBoundRealGas( real_gas=CORK( mrk=MRKCorrespondingStatesHP91( critical_data=CriticalData(temperature=126.2, pressure=33.9), _a_coefficients=(5.45963e-09, -8.639200000000001e-10, 0.0), _b=9.183009999999999e-06 ), virial=VirialCompensation( a_coefficients=(6.93054e-09, -8.38293e-10), b_coefficients=(-3.30558e-07, 2.30524e-08), c_coefficients=(0.0, 0.0), P0=0.0 ), critical_data=CriticalData(temperature=126.2, pressure=33.9) ), p_eval=50000.0 ) ), calibrations=( ExperimentalCalibration(pressure_max=1.0), ExperimentalCalibration( temperature_min=373.0, temperature_max=1873.0, pressure_min=1.0, pressure_max=50000.0 ), ExperimentalCalibration(pressure_min=50000.0) ), upper_pressure_bounds=(1.0, 50000.0), _volume_functions=( <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>> ), _volume_integral_functions=( <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>> ) )
N2 CORK corresponding states bounded [Holland and Powell, 1991]
- atmodeller.eos._holland_powell.S2_cork_cs_holland11: RealGas = CORK( mrk=MRKCorrespondingStatesHP91( critical_data=CriticalData(temperature=208.15, pressure=72.954), _a_coefficients=(5.45963e-09, -8.639200000000001e-10, 0.0), _b=9.183009999999999e-06 ), virial=VirialCompensation( a_coefficients=(6.93054e-09, -8.38293e-10), b_coefficients=(-3.30558e-07, 2.30524e-08), c_coefficients=(0.0, 0.0), P0=0.0 ), critical_data=CriticalData(temperature=208.15, pressure=72.954) )
S2 CORK corresponding states [Holland and Powell, 1991]
- atmodeller.eos._holland_powell.S2_cork_cs_holland11_bounded: RealGas = CombinedRealGas( real_gases=( IdealGas(), CORK( mrk=MRKCorrespondingStatesHP91( critical_data=CriticalData(temperature=208.15, pressure=72.954), _a_coefficients=(5.45963e-09, -8.639200000000001e-10, 0.0), _b=9.183009999999999e-06 ), virial=VirialCompensation( a_coefficients=(6.93054e-09, -8.38293e-10), b_coefficients=(-3.30558e-07, 2.30524e-08), c_coefficients=(0.0, 0.0), P0=0.0 ), critical_data=CriticalData(temperature=208.15, pressure=72.954) ), UpperBoundRealGas( real_gas=CORK( mrk=MRKCorrespondingStatesHP91( critical_data=CriticalData(temperature=208.15, pressure=72.954), _a_coefficients=(5.45963e-09, -8.639200000000001e-10, 0.0), _b=9.183009999999999e-06 ), virial=VirialCompensation( a_coefficients=(6.93054e-09, -8.38293e-10), b_coefficients=(-3.30558e-07, 2.30524e-08), c_coefficients=(0.0, 0.0), P0=0.0 ), critical_data=CriticalData(temperature=208.15, pressure=72.954) ), p_eval=50000.0 ) ), calibrations=( ExperimentalCalibration(pressure_max=1.0), ExperimentalCalibration( temperature_min=373.0, temperature_max=1873.0, pressure_min=1.0, pressure_max=50000.0 ), ExperimentalCalibration(pressure_min=50000.0) ), upper_pressure_bounds=(1.0, 50000.0), _volume_functions=( <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>> ), _volume_integral_functions=( <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>> ) )
S2 CORK corresponding states bounded [Holland and Powell, 1991]
- atmodeller.eos._holland_powell.dummy_critical_data: CriticalData = CriticalData(temperature=1.0, pressure=1.0)
Dummy critical data
The full CO2 and H2O CORK models are not a corresponding states model, which can be reproduced by ignoring the scaling by the critical temperature and pressure, i.e. setting these quantities to unity.
- atmodeller.eos._holland_powell.CO2_virial_compensation_holland91: VirialCompensation = VirialCompensation( a_coefficients=(1.3379e-10, -1.0173999999999999e-13), b_coefficients=(-7.175966957560494e-08, 2.4469483174946712e-11), c_coefficients=(0.0, 0.0), P0=5000.0 )
CO2 virial compensation [Holland and Powell, 1991]
- atmodeller.eos._holland_powell.CO2_cork_holland91: RealGas = CORK( mrk=MRKImplicitFluidHP91( _a_coefficients=(7.412e-05, -1.0891e-08, -3.4203e-11, 0.0), _b=3.057e-05, _Ta=0.0, _Tc=304.15 ), virial=VirialCompensation( a_coefficients=(1.3379e-10, -1.0173999999999999e-13), b_coefficients=(-7.175966957560494e-08, 2.4469483174946712e-11), c_coefficients=(0.0, 0.0), P0=5000.0 ), critical_data=CriticalData(temperature=1.0, pressure=1.0) )
CO2 cork [Holland and Powell, 1991]
- atmodeller.eos._holland_powell.CO2_cork_holland91_bounded: RealGas = CombinedRealGas( real_gases=( IdealGas(), CORK( mrk=MRKImplicitFluidHP91( _a_coefficients=(7.412e-05, -1.0891e-08, -3.4203e-11, 0.0), _b=3.057e-05, _Ta=0.0, _Tc=304.15 ), virial=VirialCompensation( a_coefficients=(1.3379e-10, -1.0173999999999999e-13), b_coefficients=(-7.175966957560494e-08, 2.4469483174946712e-11), c_coefficients=(0.0, 0.0), P0=5000.0 ), critical_data=CriticalData(temperature=1.0, pressure=1.0) ), UpperBoundRealGas( real_gas=CORK( mrk=MRKImplicitFluidHP91( _a_coefficients=(7.412e-05, -1.0891e-08, -3.4203e-11, 0.0), _b=3.057e-05, _Ta=0.0, _Tc=304.15 ), virial=VirialCompensation( a_coefficients=(1.3379e-10, -1.0173999999999999e-13), b_coefficients=(-7.175966957560494e-08, 2.4469483174946712e-11), c_coefficients=(0.0, 0.0), P0=5000.0 ), critical_data=CriticalData(temperature=1.0, pressure=1.0) ), p_eval=50000.0 ) ), calibrations=( ExperimentalCalibration(pressure_max=1.0), ExperimentalCalibration( temperature_min=373.0, temperature_max=1873.0, pressure_min=1.0, pressure_max=50000.0 ), ExperimentalCalibration(pressure_min=50000.0) ), upper_pressure_bounds=(1.0, 50000.0), _volume_functions=( <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>> ), _volume_integral_functions=( <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>> ) )
CO2 cork bounded [Holland and Powell, 1991]
- atmodeller.eos._holland_powell.H2O_virial_compensation_holland91: VirialCompensation = VirialCompensation( a_coefficients=(-3.2297554000000004e-11, 2.2215221e-14), b_coefficients=(-9.567945402488458e-09, -1.6896504906262718e-12), c_coefficients=(0.0, 0.0), P0=2000.0 )
H2O virial compensation [Holland and Powell, 1991]
- atmodeller.eos._holland_powell.H2O_cork_holland91: RealGas = CORK( mrk=H2OMrkHP91(Ta=673.0, Tc=695.0), virial=VirialCompensation( a_coefficients=(-3.2297554000000004e-11, 2.2215221e-14), b_coefficients=(-9.567945402488458e-09, -1.6896504906262718e-12), c_coefficients=(0.0, 0.0), P0=2000.0 ), critical_data=CriticalData(temperature=1.0, pressure=1.0) )
H2O cork [Holland and Powell, 1991]
- atmodeller.eos._holland_powell.H2O_cork_holland91_bounded: RealGas = CombinedRealGas( real_gases=( IdealGas(), CORK( mrk=H2OMrkHP91(Ta=673.0, Tc=695.0), virial=VirialCompensation( a_coefficients=(-3.2297554000000004e-11, 2.2215221e-14), b_coefficients=(-9.567945402488458e-09, -1.6896504906262718e-12), c_coefficients=(0.0, 0.0), P0=2000.0 ), critical_data=CriticalData(temperature=1.0, pressure=1.0) ), UpperBoundRealGas( real_gas=CORK( mrk=H2OMrkHP91(Ta=673.0, Tc=695.0), virial=VirialCompensation( a_coefficients=(-3.2297554000000004e-11, 2.2215221e-14), b_coefficients=(-9.567945402488458e-09, -1.6896504906262718e-12), c_coefficients=(0.0, 0.0), P0=2000.0 ), critical_data=CriticalData(temperature=1.0, pressure=1.0) ), p_eval=50000.0 ) ), calibrations=( ExperimentalCalibration(pressure_max=1.0), ExperimentalCalibration( temperature_min=373.0, temperature_max=1873.0, pressure_min=1.0, pressure_max=50000.0 ), ExperimentalCalibration(pressure_min=50000.0) ), upper_pressure_bounds=(1.0, 50000.0), _volume_functions=( <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>> ), _volume_integral_functions=( <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>> ) )
H2O cork bounded [Holland and Powell, 1991]
- atmodeller.eos._holland_powell.H2O_cork_gas_fluid_holland91: RealGas = CORK( mrk=H2OMrkGasFluid91(Ta=673.0, Tc=695.0), virial=VirialCompensation( a_coefficients=(-3.2297554000000004e-11, 2.2215221e-14), b_coefficients=(-9.567945402488458e-09, -1.6896504906262718e-12), c_coefficients=(0.0, 0.0), P0=2000.0 ), critical_data=CriticalData(temperature=1.0, pressure=1.0) )
H2O cork for the gas and supercritical fluid [Holland and Powell, 1991]
- atmodeller.eos._holland_powell.H2O_cork_gas_fluid_holland91_bounded: RealGas = CombinedRealGas( real_gases=( IdealGas(), CORK( mrk=H2OMrkGasFluid91(Ta=673.0, Tc=695.0), virial=VirialCompensation( a_coefficients=(-3.2297554000000004e-11, 2.2215221e-14), b_coefficients=(-9.567945402488458e-09, -1.6896504906262718e-12), c_coefficients=(0.0, 0.0), P0=2000.0 ), critical_data=CriticalData(temperature=1.0, pressure=1.0) ), UpperBoundRealGas( real_gas=CORK( mrk=H2OMrkGasFluid91(Ta=673.0, Tc=695.0), virial=VirialCompensation( a_coefficients=(-3.2297554000000004e-11, 2.2215221e-14), b_coefficients=(-9.567945402488458e-09, -1.6896504906262718e-12), c_coefficients=(0.0, 0.0), P0=2000.0 ), critical_data=CriticalData(temperature=1.0, pressure=1.0) ), p_eval=50000.0 ) ), calibrations=( ExperimentalCalibration(pressure_max=1.0), ExperimentalCalibration( temperature_min=373.0, temperature_max=1873.0, pressure_min=1.0, pressure_max=50000.0 ), ExperimentalCalibration(pressure_min=50000.0) ), upper_pressure_bounds=(1.0, 50000.0), _volume_functions=( <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>> ), _volume_integral_functions=( <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>> ) )
H2O cork for the gas and supercritical fluid bounded [Holland and Powell, 1991]
- atmodeller.eos._holland_powell.CO2_virial_compensation_holland98: VirialCompensation = VirialCompensation( a_coefficients=(5.40776e-11, -1.59046e-14), b_coefficients=(-5.6351155448668494e-08, 7.757604687595265e-12), c_coefficients=(0.0, 0.0), P0=5000.0 )
CO2 virial compensation [Holland and Powell, 1998]
- atmodeller.eos._holland_powell.CO2_cork_holland98: RealGas = CORK( mrk=MRKImplicitFluidHP91( _a_coefficients=(7.412e-05, -1.0891e-08, -3.4203e-11, 0.0), _b=3.057e-05, _Ta=0.0, _Tc=304.15 ), virial=VirialCompensation( a_coefficients=(5.40776e-11, -1.59046e-14), b_coefficients=(-5.6351155448668494e-08, 7.757604687595265e-12), c_coefficients=(0.0, 0.0), P0=5000.0 ), critical_data=CriticalData(temperature=1.0, pressure=1.0) )
CO2 cork [Holland and Powell, 1998]
- atmodeller.eos._holland_powell.CO2_cork_holland98_bounded: RealGas = CombinedRealGas( real_gases=( IdealGas(), CORK( mrk=MRKImplicitFluidHP91( _a_coefficients=(7.412e-05, -1.0891e-08, -3.4203e-11, 0.0), _b=3.057e-05, _Ta=0.0, _Tc=304.15 ), virial=VirialCompensation( a_coefficients=(5.40776e-11, -1.59046e-14), b_coefficients=(-5.6351155448668494e-08, 7.757604687595265e-12), c_coefficients=(0.0, 0.0), P0=5000.0 ), critical_data=CriticalData(temperature=1.0, pressure=1.0) ), UpperBoundRealGas( real_gas=CORK( mrk=MRKImplicitFluidHP91( _a_coefficients=(7.412e-05, -1.0891e-08, -3.4203e-11, 0.0), _b=3.057e-05, _Ta=0.0, _Tc=304.15 ), virial=VirialCompensation( a_coefficients=(5.40776e-11, -1.59046e-14), b_coefficients=(-5.6351155448668494e-08, 7.757604687595265e-12), c_coefficients=(0.0, 0.0), P0=5000.0 ), critical_data=CriticalData(temperature=1.0, pressure=1.0) ), p_eval=120000.0 ) ), calibrations=( ExperimentalCalibration(pressure_max=1.0), ExperimentalCalibration( temperature_min=373.0, temperature_max=1873.0, pressure_min=1.0, pressure_max=120000.0 ), ExperimentalCalibration(pressure_min=120000.0) ), upper_pressure_bounds=(1.0, 120000.0), _volume_functions=( <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>> ), _volume_integral_functions=( <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>> ) )
CO2 cork bounded [Holland and Powell, 1998]
- atmodeller.eos._holland_powell.H2O_virial_compensation_holland98: VirialCompensation = VirialCompensation( a_coefficients=(1.9853e-11, 0.0), b_coefficients=(-2.8172731674440095e-08, 0.0), c_coefficients=(1.428509632878367e-07, 0.0), P0=2000.0 )
H2O virial compensation [Holland and Powell, 1998]
- atmodeller.eos._holland_powell.H2O_cork_holland98: RealGas = CORK( mrk=H2OMrkHP91(Ta=673.0, Tc=695.0), virial=VirialCompensation( a_coefficients=(1.9853e-11, 0.0), b_coefficients=(-2.8172731674440095e-08, 0.0), c_coefficients=(1.428509632878367e-07, 0.0), P0=2000.0 ), critical_data=CriticalData(temperature=1.0, pressure=1.0) )
H2O cork [Holland and Powell, 1998]
- atmodeller.eos._holland_powell.H2O_cork_holland98_bounded: RealGas = CombinedRealGas( real_gases=( IdealGas(), CORK( mrk=H2OMrkHP91(Ta=673.0, Tc=695.0), virial=VirialCompensation( a_coefficients=(1.9853e-11, 0.0), b_coefficients=(-2.8172731674440095e-08, 0.0), c_coefficients=(1.428509632878367e-07, 0.0), P0=2000.0 ), critical_data=CriticalData(temperature=1.0, pressure=1.0) ), UpperBoundRealGas( real_gas=CORK( mrk=H2OMrkHP91(Ta=673.0, Tc=695.0), virial=VirialCompensation( a_coefficients=(1.9853e-11, 0.0), b_coefficients=(-2.8172731674440095e-08, 0.0), c_coefficients=(1.428509632878367e-07, 0.0), P0=2000.0 ), critical_data=CriticalData(temperature=1.0, pressure=1.0) ), p_eval=120000.0 ) ), calibrations=( ExperimentalCalibration(pressure_max=1.0), ExperimentalCalibration( temperature_min=373.0, temperature_max=1873.0, pressure_min=1.0, pressure_max=120000.0 ), ExperimentalCalibration(pressure_min=120000.0) ), upper_pressure_bounds=(1.0, 120000.0), _volume_functions=( <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>> ), _volume_integral_functions=( <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>> ) )
H2O cork bounded [Holland and Powell, 1998]
- atmodeller.eos._holland_powell.H2O_cork_gas_fluid_holland98: RealGas = CORK( mrk=H2OMrkGasFluid91(Ta=673.0, Tc=695.0), virial=VirialCompensation( a_coefficients=(1.9853e-11, 0.0), b_coefficients=(-2.8172731674440095e-08, 0.0), c_coefficients=(1.428509632878367e-07, 0.0), P0=2000.0 ), critical_data=CriticalData(temperature=1.0, pressure=1.0) )
H2O cork for the gas and supercritical fluid [Holland and Powell, 1998]
- atmodeller.eos._holland_powell.H2O_cork_gas_fluid_holland98_bounded: RealGas = CombinedRealGas( real_gases=( IdealGas(), CORK( mrk=H2OMrkGasFluid91(Ta=673.0, Tc=695.0), virial=VirialCompensation( a_coefficients=(1.9853e-11, 0.0), b_coefficients=(-2.8172731674440095e-08, 0.0), c_coefficients=(1.428509632878367e-07, 0.0), P0=2000.0 ), critical_data=CriticalData(temperature=1.0, pressure=1.0) ), UpperBoundRealGas( real_gas=CORK( mrk=H2OMrkGasFluid91(Ta=673.0, Tc=695.0), virial=VirialCompensation( a_coefficients=(1.9853e-11, 0.0), b_coefficients=(-2.8172731674440095e-08, 0.0), c_coefficients=(1.428509632878367e-07, 0.0), P0=2000.0 ), critical_data=CriticalData(temperature=1.0, pressure=1.0) ), p_eval=120000.0 ) ), calibrations=( ExperimentalCalibration(pressure_max=1.0), ExperimentalCalibration( temperature_min=373.0, temperature_max=1873.0, pressure_min=1.0, pressure_max=120000.0 ), ExperimentalCalibration(pressure_min=120000.0) ), upper_pressure_bounds=(1.0, 120000.0), _volume_functions=( <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>> ), _volume_integral_functions=( <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>> ) )
H2O cork for the gas and supercritical fluid bounded [Holland and Powell, 1998]
atmodeller.eos._holley module
Real gas EOS from [Holley et al., 1958]
- atmodeller.eos._holley.volume_conversion(x: int | float) float
Volume conversion for Holley et al. [1958] units
- atmodeller.eos._holley.A0_conversion(x: int | float) float
\(PV^2\) conversion for Holley et al. [1958] units
- atmodeller.eos._holley.atm2bar(x: int | float) float
Atmosphere to bar conversion
- class atmodeller.eos._holley.BeattieBridgeman(A0: Any, a: Any, B0: Any, b: Any, c: Any)
Bases:
RealGasBeattie-Bridgeman equation [Holley et al., 1958, Equation 1]
\[PV^2 = RT\left(1-\frac{c}{VT^3}\right)\left(V+B_0-\frac{bB_0}{V}\right) - A_0\left(1-\frac{a}{V}\right)\]- Parameters:
A0 – A0 empirical constant
a – a empirical constant
B0 – B0 empirical constant
b – b empirical constant
c – c empirical constant
- A0: float
A0 empirical constant
- a: float
a empirical constant
- B0: float
B0 empirical constant
- b: float
b empirical constant
- c: float
c empirical constant
- _objective_function(volume: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, kwargs: dict[str, Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray]) Array
Objective function to solve for the volume [Holley et al., 1958, Equation 2]
\[PV^4 - RTV^3 - \left(RTB_0 - \frac{Rc}{T^2}-A_0\right)V^2 +\left(RTbB_0+\frac{RcB_0}{T^2}-aA_0\right)V - \frac{RcbB_0}{T^2}=0\]- Parameters:
volume – Volume in \(\mathrm{m}^3\ \mathrm{mol}^{-1}\)
kwargs – Dictionary with other required parameters
- Returns:
Residual of the objective function
- log_fugacity(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Log fugacity [Holley et al., 1958, Equation 11].
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Log fugacity
- volume(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray
Solves the BB equation numerically to compute the volume.
Holley et al. [1958] doesn’t say which root to take, but one real root is very small and the maximum real root gives a volume that agrees with the tabulated compressibility factor for all species.
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Volume in \(\mathrm{m}^3\ \mathrm{mol}^{-1}\)
- volume_integral(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Volume integral in units required for internal Atmodeller operations.
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Volume integral in \(\mathrm{m}^3\ \mathrm{bar}\ \mathrm{mol}^{-1}\)
- _abc_impl = <_abc._abc_data object>
- compressibility_factor(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray
Compressibility factor
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Compressibility factor, which is dimensionless
- dvdp(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Derivative of volume with respect to pressure
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Derivative of volume with respect to pressure
- dzdp(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Derivative of the compressibility factor with respect to pressure
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Derivative of the compressibility factor with respect to pressure
- fugacity(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Fugacity
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Fugacity in bar
- fugacity_coefficient(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Fugacity coefficient
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
fugacity coefficient, which is dimensionless
- log_activity(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Log activity
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Log activity, which is dimensionless
- log_fugacity_coefficient(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Log fugacity coefficient
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Log fugacity coefficient, which is dimensionless
- pressure_from_fugacity(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, fugacity: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Calculate pressure from fugacity
- Parameters:
temperature – Temperature in K
fugacity – Fugacity in bar
- Returns:
Pressure in bar
- volume_integral_J(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Volume integral in J
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Volume integral in \(\mathrm{J}\ \mathrm{mol}^{-1}\)
- atmodeller.eos._holley.H2_beattie_holley58: RealGas = BeattieBridgeman( A0=2.00116875e-07, a=-5.060000000000001e-06, B0=2.096e-05, b=-4.359e-05, c=0.504 )
H2 Beattie-Bridgeman [Holley et al., 1958]
- atmodeller.eos._holley.H2_beattie_holley58_bounded: RealGas = CombinedRealGas( real_gases=( IdealGas(), BeattieBridgeman( A0=2.00116875e-07, a=-5.060000000000001e-06, B0=2.096e-05, b=-4.359e-05, c=0.504 ), UpperBoundRealGas( real_gas=BeattieBridgeman( A0=2.00116875e-07, a=-5.060000000000001e-06, B0=2.096e-05, b=-4.359e-05, c=0.504 ), p_eval=1013.25 ) ), calibrations=( ExperimentalCalibration(pressure_max=0.101325), ExperimentalCalibration( temperature_min=30.0, temperature_max=1000.0, pressure_min=0.101325, pressure_max=1013.25 ), ExperimentalCalibration(pressure_min=1013.25) ), upper_pressure_bounds=(0.101325, 1013.25), _volume_functions=( <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>> ), _volume_integral_functions=( <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>> ) )
H2 Beattie-Bridgeman bounded [Holley et al., 1958]
- atmodeller.eos._holley.N2_beattie_holley58: RealGas = BeattieBridgeman( A0=1.3623146249999999e-06, a=2.617e-05, B0=5.046e-05, b=-6.910000000000001e-06, c=42.0 )
N2 Beattie-Bridgeman [Holley et al., 1958]
- atmodeller.eos._holley.N2_beattie_holley58_bounded: RealGas = CombinedRealGas( real_gases=( IdealGas(), BeattieBridgeman( A0=1.3623146249999999e-06, a=2.617e-05, B0=5.046e-05, b=-6.910000000000001e-06, c=42.0 ), UpperBoundRealGas( real_gas=BeattieBridgeman( A0=1.3623146249999999e-06, a=2.617e-05, B0=5.046e-05, b=-6.910000000000001e-06, c=42.0 ), p_eval=1013.25 ) ), calibrations=( ExperimentalCalibration(pressure_max=0.101325), ExperimentalCalibration( temperature_min=70.0, temperature_max=1000.0, pressure_min=0.101325, pressure_max=1013.25 ), ExperimentalCalibration(pressure_min=1013.25) ), upper_pressure_bounds=(0.101325, 1013.25), _volume_functions=( <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>> ), _volume_integral_functions=( <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>> ) )
N2 Beattie-Bridgeman bounded [Holley et al., 1958]
- atmodeller.eos._holley.O2_beattie_holley58: RealGas = BeattieBridgeman( A0=1.510857075e-06, a=2.5620000000000002e-05, B0=4.6240000000000005e-05, b=4.208e-06, c=48.0 )
O2 Beattie-Bridgeman [Holley et al., 1958]
- atmodeller.eos._holley.O2_beattie_holley58_bounded: RealGas = CombinedRealGas( real_gases=( IdealGas(), BeattieBridgeman( A0=1.510857075e-06, a=2.5620000000000002e-05, B0=4.6240000000000005e-05, b=4.208e-06, c=48.0 ), UpperBoundRealGas( real_gas=BeattieBridgeman( A0=1.510857075e-06, a=2.5620000000000002e-05, B0=4.6240000000000005e-05, b=4.208e-06, c=48.0 ), p_eval=1013.25 ) ), calibrations=( ExperimentalCalibration(pressure_max=0.101325), ExperimentalCalibration( temperature_min=100.0, temperature_max=1000.0, pressure_min=0.101325, pressure_max=1013.25 ), ExperimentalCalibration(pressure_min=1013.25) ), upper_pressure_bounds=(0.101325, 1013.25), _volume_functions=( <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>> ), _volume_integral_functions=( <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>> ) )
O2 Beattie-Bridgeman bounded [Holley et al., 1958]
- atmodeller.eos._holley.CO2_beattie_holley58: RealGas = BeattieBridgeman( A0=5.0728361250000004e-06, a=7.132e-05, B0=0.00010476, b=7.235e-05, c=660.0 )
CO2 Beattie-Bridgeman [Holley et al., 1958]
- atmodeller.eos._holley.CO2_beattie_holley58_bounded: RealGas = CombinedRealGas( real_gases=( IdealGas(), BeattieBridgeman( A0=5.0728361250000004e-06, a=7.132e-05, B0=0.00010476, b=7.235e-05, c=660.0 ), UpperBoundRealGas( real_gas=BeattieBridgeman( A0=5.0728361250000004e-06, a=7.132e-05, B0=0.00010476, b=7.235e-05, c=660.0 ), p_eval=1013.25 ) ), calibrations=( ExperimentalCalibration(pressure_max=0.101325), ExperimentalCalibration( temperature_min=200.0, temperature_max=1000.0, pressure_min=0.101325, pressure_max=1013.25 ), ExperimentalCalibration(pressure_min=1013.25) ), upper_pressure_bounds=(0.101325, 1013.25), _volume_functions=( <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>> ), _volume_integral_functions=( <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>> ) )
CO2 Beattie-Bridgeman bounded [Holley et al., 1958]
- atmodeller.eos._holley.NH3_beattie_holley58: RealGas = BeattieBridgeman( A0=2.4247072499999992e-06, a=0.00017031, B0=3.415e-05, b=0.00019112000000000003, c=4768.7 )
NH3 Beattie-Bridgeman [Holley et al., 1958]
- atmodeller.eos._holley.NH3_beattie_holley58_bounded: RealGas = CombinedRealGas( real_gases=( IdealGas(), BeattieBridgeman( A0=2.4247072499999992e-06, a=0.00017031, B0=3.415e-05, b=0.00019112000000000003, c=4768.7 ), UpperBoundRealGas( real_gas=BeattieBridgeman( A0=2.4247072499999992e-06, a=0.00017031, B0=3.415e-05, b=0.00019112000000000003, c=4768.7 ), p_eval=506.625 ) ), calibrations=( ExperimentalCalibration(pressure_max=0.101325), ExperimentalCalibration( temperature_min=300.0, temperature_max=1000.0, pressure_min=0.101325, pressure_max=506.625 ), ExperimentalCalibration(pressure_min=506.625) ), upper_pressure_bounds=(0.101325, 506.625), _volume_functions=( <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>> ), _volume_integral_functions=( <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>> ) )
NH3 Beattie-Bridgeman bounded [Holley et al., 1958]
- atmodeller.eos._holley.CH4_beattie_holley58: RealGas = BeattieBridgeman( A0=2.3070689249999997e-06, a=1.855e-05, B0=5.5870000000000005e-05, b=-1.587e-05, c=128.3 )
CH4 Beattie-Bridgeman [Holley et al., 1958]
- atmodeller.eos._holley.CH4_beattie_holley58_bounded: RealGas = CombinedRealGas( real_gases=( IdealGas(), BeattieBridgeman( A0=2.3070689249999997e-06, a=1.855e-05, B0=5.5870000000000005e-05, b=-1.587e-05, c=128.3 ), UpperBoundRealGas( real_gas=BeattieBridgeman( A0=2.3070689249999997e-06, a=1.855e-05, B0=5.5870000000000005e-05, b=-1.587e-05, c=128.3 ), p_eval=1013.25 ) ), calibrations=( ExperimentalCalibration(pressure_max=0.101325), ExperimentalCalibration( temperature_min=100.0, temperature_max=1000.0, pressure_min=0.101325, pressure_max=1013.25 ), ExperimentalCalibration(pressure_min=1013.25) ), upper_pressure_bounds=(0.101325, 1013.25), _volume_functions=( <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>> ), _volume_integral_functions=( <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>> ) )
CH4 Beattie-Bridgeman bounded [Holley et al., 1958]
- atmodeller.eos._holley.He_beattie_holley58: RealGas = BeattieBridgeman( A0=2.18862e-08, a=5.9839999999999996e-05, B0=1.4e-05, b=0.0, c=0.04 )
He Beattie-Bridgeman [Holley et al., 1958]
- atmodeller.eos._holley.He_beattie_holley58_bounded: RealGas = CombinedRealGas( real_gases=( IdealGas(), BeattieBridgeman( A0=2.18862e-08, a=5.9839999999999996e-05, B0=1.4e-05, b=0.0, c=0.04 ), UpperBoundRealGas( real_gas=BeattieBridgeman( A0=2.18862e-08, a=5.9839999999999996e-05, B0=1.4e-05, b=0.0, c=0.04 ), p_eval=1013.25 ) ), calibrations=( ExperimentalCalibration(pressure_max=0.101325), ExperimentalCalibration( temperature_min=10.0, temperature_max=1000.0, pressure_min=0.101325, pressure_max=1013.25 ), ExperimentalCalibration(pressure_min=1013.25) ), upper_pressure_bounds=(0.101325, 1013.25), _volume_functions=( <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>> ), _volume_integral_functions=( <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>> ) )
He Beattie-Bridgeman bounded [Holley et al., 1958]
atmodeller.eos._reid_connolly module
Real gas EOSs from Connolly [2016], Reid et al. [1977]
- class atmodeller.eos._reid_connolly.RedlichKwong49(critical_data: CriticalData)
Bases:
RedlichKwongABCRedlich-Kwong 1949 model
Repulsive pressure term from van der Waals [Connolly, 2016, Equation 1, Redlich and Kwong, 1949] Attractive pressure term from Redlich-Kwong [Connolly, 2016, Equation 4, Redlich and Kwong, 1949]
- Parameters:
critical_data – Critical data
- critical_data: CriticalData
- _a: float
- _b: float
- property critical_pressure: float
Critical pressure in bar
- property critical_temperature: float
Critical temperature in K
- classmethod create(hill_formula: str, suffix: str = '') RedlichKwong49
Gets the Redlich-Kwong 1949 (RK49) model for a given species.
- Parameters:
hill_formula – Hill formula
suffix – Suffix. Defaults to an empty string.
- Returns:
An RK49 model for the species
- a(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray
RK49 a parameter [Redlich and Kwong, 1949, Equation 4].
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
RK49 a parameter in \((\mathrm{m}^3\ \mathrm{mol}^{-1})^2\ \mathrm{K}^{1/2}\ \mathrm{bar}\)
- b() Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray
RK49 b parameter [Redlich and Kwong, 1949, Equation 5].
- Returns:
RK49 b parameter in \(\mathrm{m}^3\ \mathrm{mol}^{-1}\).
- _abc_impl = <_abc._abc_data object>
- compressibility_factor(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray
Compressibility factor
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Compressibility factor, which is dimensionless
- dvdp(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Derivative of volume with respect to pressure
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Derivative of volume with respect to pressure
- dzdp(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Derivative of the compressibility factor with respect to pressure
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Derivative of the compressibility factor with respect to pressure
- fugacity(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Fugacity
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Fugacity in bar
- fugacity_coefficient(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Fugacity coefficient
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
fugacity coefficient, which is dimensionless
- log_activity(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Log activity
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Log activity, which is dimensionless
- log_fugacity(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Log fugacity
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Log fugacity in bar
- log_fugacity_coefficient(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Log fugacity coefficient
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Log fugacity coefficient, which is dimensionless
- pressure_from_fugacity(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, fugacity: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Calculate pressure from fugacity
- Parameters:
temperature – Temperature in K
fugacity – Fugacity in bar
- Returns:
Pressure in bar
- volume(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Volume-explicit equation [Holland and Powell, 1991, Equation 7]
Without complications of critical phenomena the RK equation can be simplified using the approximation:
\[V \sim \frac{RT}{P} + b\]where \(V\) is volume, \(R\) is the gas constant, \(T\) is temperature, \(P\) is pressure, and \(b\) corrects for the volume.
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Volume in \(\mathrm{m}^3\ \mathrm{mol}^{-1}\)
- volume_integral(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Volume integral
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Volume integral in \(\mathrm{m}^3\ \mathrm{bar}\ \mathrm{mol}^{-1}\)
- volume_integral_J(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Volume integral in J
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Volume integral in \(\mathrm{J}\ \mathrm{mol}^{-1}\)
- atmodeller.eos._reid_connolly.experimental_calibration_connolly16: ExperimentalCalibration = ExperimentalCalibration( temperature_min=1000.0, temperature_max=10000.0, pressure_min=1.0, pressure_max=50000.0 )
Experimental calibration for [Connolly, 2016] models
- atmodeller.eos._reid_connolly.experimental_calibration_reid87: ExperimentalCalibration = ExperimentalCalibration( temperature_min=300.0, temperature_max=500.0, pressure_min=1.0, pressure_max=100.0 )
Experimental calibration for [Reid et al., 1977] models
- atmodeller.eos._reid_connolly.OSi_rk49_connolly16: RealGas = RedlichKwong49( critical_data=CriticalData(temperature=3431.0, pressure=4544.0), _a=0.000448433, _b=5.43922e-06 )
OSi Redlich-Kwong [Connolly, 2016]
- atmodeller.eos._reid_connolly.H4Si_rk49_reid87: RealGas = RedlichKwong49( critical_data=CriticalData(temperature=269.7, pressure=48.4), _a=0.000448433, _b=5.43922e-06 )
H4Si Redlich-Kwong [Reid et al., 1977]
- atmodeller.eos._reid_connolly.CHN_rk49_reid87: RealGas = RedlichKwong49( critical_data=CriticalData(temperature=456.7, pressure=53.9), _a=0.000448433, _b=5.43922e-06 )
CHN Redlich-Kwong [Reid et al., 1977]
- atmodeller.eos._reid_connolly.H3N_rk49_reid87: RealGas = RedlichKwong49( critical_data=CriticalData(temperature=405.5, pressure=113.5), _a=0.000448433, _b=5.43922e-06 )
H3N Redlich-Kwong [Reid et al., 1977]
- atmodeller.eos._reid_connolly.OSi_rk49_connolly16_bounded: RealGas = CombinedRealGas( real_gases=( IdealGas(), RedlichKwong49( critical_data=CriticalData(temperature=3431.0, pressure=4544.0), _a=0.000448433, _b=5.43922e-06 ), UpperBoundRealGas( real_gas=RedlichKwong49( critical_data=CriticalData(temperature=3431.0, pressure=4544.0), _a=0.000448433, _b=5.43922e-06 ), p_eval=50000.0 ) ), calibrations=( ExperimentalCalibration(pressure_max=1.0), ExperimentalCalibration( temperature_min=1000.0, temperature_max=10000.0, pressure_min=1.0, pressure_max=50000.0 ), ExperimentalCalibration(pressure_min=50000.0) ), upper_pressure_bounds=(1.0, 50000.0), _volume_functions=( <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>> ), _volume_integral_functions=( <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>> ) )
OSi Redlich-Kwong bounded [Connolly, 2016]
atmodeller.eos._saxena module
Real gas EOSs from Saxena and Fei [1987], Saxena and Fei [1987], Saxena and Fei [1988], Shi and Saxena [1992]
The papers state a volume integration from \(P_0\) to \(P\), where \(f(P_0=1)=1\). Hence for bounded EOS a minimum pressure of 1 bar is assumed.
- class atmodeller.eos._saxena.SaxenaABC(a_coefficients: Any, b_coefficients: Any, c_coefficients: Any, d_coefficients: Any, critical_data: CriticalData = CriticalData(temperature=1.0, pressure=1.0))
Bases:
RealGasA real gas EOS from Shi and Saxena [1992]
This form of the EOS can also be used for the models in Saxena and Fei [1987], Saxena and Fei [1987], Saxena and Fei [1988].
- Parameters:
a_coefficients – a coefficients
b_coefficients – b coefficients
c_coefficients – c coefficients
d_coefficients – d coefficients
critical_data – Critical data. Defaults to empty.
- a_coefficients: tuple[float, ...]
a coefficients
- b_coefficients: tuple[float, ...]
b coefficients
- c_coefficients: tuple[float, ...]
c coefficients
- d_coefficients: tuple[float, ...]
d coefficients
- critical_data: CriticalData = CriticalData(temperature=1.0, pressure=1.0)
Critical data
- abstractmethod _get_compressibility_coefficient(scaled_temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, coefficients: tuple[float, ...]) Array
General form of the coefficients for the compressibility calculation [Shi and Saxena, 1992, Equation 1]
- Parameters:
scaled_temperature – Scaled temperature, which is dimensionless
coefficients – Tuple of the coefficients a, b, c, or d.
- Returns
The relevant coefficient
- property critical_pressure: float
Critical pressure in bar
- property critical_temperature: float
Critical temperature in K
- a(scaled_temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
a parameter
- Parameters:
scaled_temperature – Scaled temperature, which is dimensionless
- Returns:
a parameter
- b(scaled_temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
b parameter
- Parameters:
scaled_temperature – Scaled temperature, which is dimensionless
- Returns:
b parameter
- c(scaled_temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
c parameter
- Parameters:
scaled_temperature – Scaled temperature, which is dimensionless
- Returns:
c parameter
- d(scaled_temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
d parameter
- Parameters:
scaled_temperature – Scaled temperature, which is dimensionless
- Returns:
d parameter
- scaled_pressure(pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray
Scaled (reduced) pressure
- Parameters:
pressure – Pressure in bar
- Returns:
The scaled (reduced) pressure, which is dimensionless
- scaled_temperature(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray
Scaled (reduced) temperature
- Parameters:
temperature – Temperature in K
- Returns:
The scaled (reduced) temperature, which is dimensionless
- compressibility_factor(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Compressibility factor [Shi and Saxena, 1992, Equation 2]
This overrides the base class because the compressibility factor is used to determine the volume, whereas in the base class the volume is used to determine the compressibility factor.
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
The compressibility factor, which is dimensionless
- log_fugacity(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Log fugacity
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Log fugacity in bar
- volume(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Volume [Shi and Saxena, 1992, Equation 1]
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Volume in \(\mathrm{m}^3\ \mathrm{mol}^{-1}\)
- volume_integral(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Volume integral [Shi and Saxena, 1992, Equation 11]
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Volume integral in \(\mathrm{m}^3\ \mathrm{bar}\ \mathrm{mol}^{-1}\)
- _abc_impl = <_abc._abc_data object>
- dvdp(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Derivative of volume with respect to pressure
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Derivative of volume with respect to pressure
- dzdp(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Derivative of the compressibility factor with respect to pressure
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Derivative of the compressibility factor with respect to pressure
- fugacity(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Fugacity
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Fugacity in bar
- fugacity_coefficient(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Fugacity coefficient
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
fugacity coefficient, which is dimensionless
- log_activity(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Log activity
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Log activity, which is dimensionless
- log_fugacity_coefficient(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Log fugacity coefficient
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Log fugacity coefficient, which is dimensionless
- pressure_from_fugacity(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, fugacity: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Calculate pressure from fugacity
- Parameters:
temperature – Temperature in K
fugacity – Fugacity in bar
- Returns:
Pressure in bar
- volume_integral_J(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Volume integral in J
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Volume integral in \(\mathrm{J}\ \mathrm{mol}^{-1}\)
- class atmodeller.eos._saxena.SaxenaFiveCoefficients(a_coefficients: Any, b_coefficients: Any, c_coefficients: Any, d_coefficients: Any, critical_data: CriticalData = CriticalData(temperature=1.0, pressure=1.0))
Bases:
SaxenaABCReal gas EOS with five coefficients, which is generally used for low pressures
- _get_compressibility_coefficient(scaled_temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, coefficients: tuple[float, ...]) Array
General form of the coefficients for the compressibility calculation [Shi and Saxena, 1992, Equation 3b]
- Parameters:
temperature – Scaled temperature, which is dimensionless
coefficients – Tuple of the coefficients a, b, c, or d.
- Returns
The relevant coefficient
- _abc_impl = <_abc._abc_data object>
- a(scaled_temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
a parameter
- Parameters:
scaled_temperature – Scaled temperature, which is dimensionless
- Returns:
a parameter
- b(scaled_temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
b parameter
- Parameters:
scaled_temperature – Scaled temperature, which is dimensionless
- Returns:
b parameter
- c(scaled_temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
c parameter
- Parameters:
scaled_temperature – Scaled temperature, which is dimensionless
- Returns:
c parameter
- compressibility_factor(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Compressibility factor [Shi and Saxena, 1992, Equation 2]
This overrides the base class because the compressibility factor is used to determine the volume, whereas in the base class the volume is used to determine the compressibility factor.
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
The compressibility factor, which is dimensionless
- critical_data: CriticalData = CriticalData(temperature=1.0, pressure=1.0)
Critical data
- property critical_pressure: float
Critical pressure in bar
- property critical_temperature: float
Critical temperature in K
- d(scaled_temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
d parameter
- Parameters:
scaled_temperature – Scaled temperature, which is dimensionless
- Returns:
d parameter
- dvdp(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Derivative of volume with respect to pressure
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Derivative of volume with respect to pressure
- dzdp(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Derivative of the compressibility factor with respect to pressure
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Derivative of the compressibility factor with respect to pressure
- fugacity(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Fugacity
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Fugacity in bar
- fugacity_coefficient(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Fugacity coefficient
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
fugacity coefficient, which is dimensionless
- log_activity(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Log activity
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Log activity, which is dimensionless
- log_fugacity(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Log fugacity
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Log fugacity in bar
- log_fugacity_coefficient(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Log fugacity coefficient
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Log fugacity coefficient, which is dimensionless
- pressure_from_fugacity(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, fugacity: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Calculate pressure from fugacity
- Parameters:
temperature – Temperature in K
fugacity – Fugacity in bar
- Returns:
Pressure in bar
- scaled_pressure(pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray
Scaled (reduced) pressure
- Parameters:
pressure – Pressure in bar
- Returns:
The scaled (reduced) pressure, which is dimensionless
- scaled_temperature(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray
Scaled (reduced) temperature
- Parameters:
temperature – Temperature in K
- Returns:
The scaled (reduced) temperature, which is dimensionless
- volume(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Volume [Shi and Saxena, 1992, Equation 1]
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Volume in \(\mathrm{m}^3\ \mathrm{mol}^{-1}\)
- volume_integral(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Volume integral [Shi and Saxena, 1992, Equation 11]
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Volume integral in \(\mathrm{m}^3\ \mathrm{bar}\ \mathrm{mol}^{-1}\)
- volume_integral_J(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Volume integral in J
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Volume integral in \(\mathrm{J}\ \mathrm{mol}^{-1}\)
- a_coefficients: tuple[float, ...]
a coefficients
- b_coefficients: tuple[float, ...]
b coefficients
- c_coefficients: tuple[float, ...]
c coefficients
- d_coefficients: tuple[float, ...]
d coefficients
- class atmodeller.eos._saxena.SaxenaEightCoefficients(a_coefficients: Any, b_coefficients: Any, c_coefficients: Any, d_coefficients: Any, critical_data: CriticalData = CriticalData(temperature=1.0, pressure=1.0))
Bases:
SaxenaABCReal gas EOS with eight coefficients, which is generally used for high pressures
- _get_compressibility_coefficient(scaled_temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, coefficients: tuple[float, ...]) Array
General form of the coefficients for the compressibility calculation [Shi and Saxena, 1992, Equation 3a]
- Parameters:
temperature – Scaled temperature, which is dimensionless
coefficients – Tuple of the coefficients a, b, c, or d.
- Returns
The relevant coefficient
- _abc_impl = <_abc._abc_data object>
- a(scaled_temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
a parameter
- Parameters:
scaled_temperature – Scaled temperature, which is dimensionless
- Returns:
a parameter
- b(scaled_temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
b parameter
- Parameters:
scaled_temperature – Scaled temperature, which is dimensionless
- Returns:
b parameter
- c(scaled_temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
c parameter
- Parameters:
scaled_temperature – Scaled temperature, which is dimensionless
- Returns:
c parameter
- compressibility_factor(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Compressibility factor [Shi and Saxena, 1992, Equation 2]
This overrides the base class because the compressibility factor is used to determine the volume, whereas in the base class the volume is used to determine the compressibility factor.
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
The compressibility factor, which is dimensionless
- critical_data: CriticalData = CriticalData(temperature=1.0, pressure=1.0)
Critical data
- property critical_pressure: float
Critical pressure in bar
- property critical_temperature: float
Critical temperature in K
- d(scaled_temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
d parameter
- Parameters:
scaled_temperature – Scaled temperature, which is dimensionless
- Returns:
d parameter
- dvdp(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Derivative of volume with respect to pressure
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Derivative of volume with respect to pressure
- dzdp(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Derivative of the compressibility factor with respect to pressure
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Derivative of the compressibility factor with respect to pressure
- fugacity(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Fugacity
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Fugacity in bar
- fugacity_coefficient(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Fugacity coefficient
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
fugacity coefficient, which is dimensionless
- log_activity(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Log activity
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Log activity, which is dimensionless
- log_fugacity(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Log fugacity
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Log fugacity in bar
- log_fugacity_coefficient(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Log fugacity coefficient
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Log fugacity coefficient, which is dimensionless
- pressure_from_fugacity(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, fugacity: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Calculate pressure from fugacity
- Parameters:
temperature – Temperature in K
fugacity – Fugacity in bar
- Returns:
Pressure in bar
- scaled_pressure(pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray
Scaled (reduced) pressure
- Parameters:
pressure – Pressure in bar
- Returns:
The scaled (reduced) pressure, which is dimensionless
- scaled_temperature(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray
Scaled (reduced) temperature
- Parameters:
temperature – Temperature in K
- Returns:
The scaled (reduced) temperature, which is dimensionless
- volume(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Volume [Shi and Saxena, 1992, Equation 1]
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Volume in \(\mathrm{m}^3\ \mathrm{mol}^{-1}\)
- volume_integral(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Volume integral [Shi and Saxena, 1992, Equation 11]
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Volume integral in \(\mathrm{m}^3\ \mathrm{bar}\ \mathrm{mol}^{-1}\)
- volume_integral_J(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Volume integral in J
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Volume integral in \(\mathrm{J}\ \mathrm{mol}^{-1}\)
- a_coefficients: tuple[float, ...]
a coefficients
- b_coefficients: tuple[float, ...]
b coefficients
- c_coefficients: tuple[float, ...]
c coefficients
- d_coefficients: tuple[float, ...]
d coefficients
- atmodeller.eos._saxena._H2_low_pressure_SS92: RealGas = SaxenaFiveCoefficients( a_coefficients=(1.0, 0.0, 0.0, 0.0, 0.0), b_coefficients=(0.0, 0.09827, 0.0, -0.2709, 0.0), c_coefficients=(0.0, 0.0, -0.00103, 0.0, 0.01472), d_coefficients=(0.0, 0.0, 0.0, 0.0, 0.0), critical_data=CriticalData(temperature=33.25, pressure=12.9696) )
H2 low pressure (<1000 bar) [Shi and Saxena, 1992, Table 1b]
The coefficients are the same as for the corresponding states model in Shi and Saxena [1992, Table 1a] because they originate from Saxena and Fei [1987, Equation 23].
In Saxena and Fei [1987, Equation 23] the final c coefficient is 0.1472e-1, not 0.1427e-1 as given in Shi and Saxena [1992, Table 1b]. The earlier work is assumed to be correct.
- atmodeller.eos._saxena._H2_high_pressure_SS92: RealGas = SaxenaEightCoefficients( a_coefficients=(2.2615, 0.0, -68.712, 0.0, -10573.0, 0.0, 0.0, -0.16936), b_coefficients=(-0.00026707, 0.0, 0.20173, 0.0, 4.5759, 0.0, 0.0, 3.1452e-05), c_coefficients=( -2.3376e-09, 0.0, 3.4091e-07, 0.0, -0.0014188, 0.0, 0.0, 3.0117e-10 ), d_coefficients=(-3.2606e-15, 0.0, 2.4402e-12, 0.0, -2.4027e-09, 0.0, 0.0, 0.0) )
H2 high pressure (>1000 bar) [Shi and Saxena, 1992, Table 1b]
This model cannot be a corresponding states model because the data do not appear correct when plotted, so presumably it requires the actual temperature and pressure (hence critical data are not provided as arguments). Visually, the fit compares well to
_H2_high_pressure_SS92_refit.
- atmodeller.eos._saxena._H2_high_pressure_SS92_refit: RealGas = SaxenaEightCoefficients( a_coefficients=( 1.00574428, 0.0, 0.00193022092, 0.0, -0.379261142, 0.0, 0.0, -0.00244217972 ), b_coefficients=( 0.00131517888, 0.0, 0.0722328441, 0.0, 0.0484354163, 0.0, 0.0, -0.000419624507 ), c_coefficients=( 2.64454401e-06, 0.0, -5.18445629e-05, 0.0, -0.000205045979, 0.0, 0.0, -3.64843213e-07 ), d_coefficients=( 2.28281107e-11, 0.0, -1.07138603e-08, 0.0, 3.67720815e-07, 0.0, 0.0, 0.0 ), critical_data=CriticalData(temperature=33.25, pressure=12.9696) )
H2 high pressure (>1000 bar)
This model has been refitted using a least square regression using the experimental volume, pressure, and temperature data from Presnall [1969], Ross et al. [1983] assuming the same functional form for pressures above 1 kbar as given by Shi and Saxena [1992, Equation 2 and 3a], including which coefficients are set to zero [Shi and Saxena, 1992, Table 1b]. The refitting is performed using reduced temperature and pressure.
- atmodeller.eos._saxena.H2_SS92: RealGas = CombinedRealGas( real_gases=( IdealGas(), SaxenaFiveCoefficients( a_coefficients=(1.0, 0.0, 0.0, 0.0, 0.0), b_coefficients=(0.0, 0.09827, 0.0, -0.2709, 0.0), c_coefficients=(0.0, 0.0, -0.00103, 0.0, 0.01472), d_coefficients=(0.0, 0.0, 0.0, 0.0, 0.0), critical_data=CriticalData(temperature=33.25, pressure=12.9696) ), SaxenaEightCoefficients( a_coefficients=(2.2615, 0.0, -68.712, 0.0, -10573.0, 0.0, 0.0, -0.16936), b_coefficients=( -0.00026707, 0.0, 0.20173, 0.0, 4.5759, 0.0, 0.0, 3.1452e-05 ), c_coefficients=( -2.3376e-09, 0.0, 3.4091e-07, 0.0, -0.0014188, 0.0, 0.0, 3.0117e-10 ), d_coefficients=( -3.2606e-15, 0.0, 2.4402e-12, 0.0, -2.4027e-09, 0.0, 0.0, 0.0 ) ), UpperBoundRealGas( real_gas=SaxenaEightCoefficients( a_coefficients=(2.2615, 0.0, -68.712, 0.0, -10573.0, 0.0, 0.0, -0.16936), b_coefficients=( -0.00026707, 0.0, 0.20173, 0.0, 4.5759, 0.0, 0.0, 3.1452e-05 ), c_coefficients=( -2.3376e-09, 0.0, 3.4091e-07, 0.0, -0.0014188, 0.0, 0.0, 3.0117e-10 ), d_coefficients=( -3.2606e-15, 0.0, 2.4402e-12, 0.0, -2.4027e-09, 0.0, 0.0, 0.0 ) ), p_eval=100000.0 ) ), calibrations=( ExperimentalCalibration(pressure_max=1.0), ExperimentalCalibration(pressure_min=1.0, pressure_max=1000.0), ExperimentalCalibration(pressure_min=1000.0, pressure_max=100000.0), ExperimentalCalibration(pressure_min=100000.0) ), upper_pressure_bounds=(1.0, 1000.0, 100000.0), _volume_functions=( <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>> ), _volume_integral_functions=( <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>> ) )
H2 EOS, which combines the low and high pressure EOS [Shi and Saxena, 1992, Table 1b]
Impose an upper bound on the high pressure fit to avoid unphysical extrapolation for pressures beyond around 100 kbar. This limit was determined by visual inspection of plots of the fugacity versus pressure at various temperatures, where beyond 100 kbar a sudden downturn in fugacity was observed due to the breakdown of the functional form (polynomial representation).
- atmodeller.eos._saxena._H2_high_pressure_SF88: RealGas = SaxenaEightCoefficients( a_coefficients=(1.6688, 0.0, -2.0759, 0.0, -9.6173, 0.0, 0.0, -0.1694), b_coefficients=(-0.002041, 0.0, 0.07923, 0.0, 0.054295, 0.0, 0.0, 0.00040887), c_coefficients=( -2.1693e-07, 0.0, 1.7406e-06, 0.0, -0.00021885, 0.0, 0.0, 5.0897e-05 ), d_coefficients=(-7.1635e-12, 0.0, 1.6197e-10, 0.0, -4.8181e-09, 0.0, 0.0, 0.0), critical_data=CriticalData(temperature=33.25, pressure=12.9696) )
H2 high pressure [Saxena and Fei, 1988, Table on page 1196]
This model does not at all agree with Shi and Saxena [1992] or data, regardless of whether the temperature and pressure inputs are the actual or reduced values.
Further investigations are warranted before this model should be used.
- atmodeller.eos._saxena.SO2_SS92: RealGas = SaxenaEightCoefficients( a_coefficients=( 0.92854, 0.043269, -0.24671, 0.0, 0.24999, 0.0, -0.53182, -0.016461 ), b_coefficients=( 0.00084866, -0.0018379, 0.066787, 0.0, -0.029427, 0.0, 0.029003, 0.0054808 ), c_coefficients=( -0.00035456, 2.3316e-05, 0.00094159, 0.0, -0.00081653, 0.0, 0.00023154, 5.5542e-05 ), d_coefficients=(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), critical_data=CriticalData(temperature=430.95, pressure=78.7295) )
SO2 EOS [Shi and Saxena, 1992, Table 1c] from 1 to 10e3 bar
- atmodeller.eos._saxena.SO2_SS92_bounded: RealGas = CombinedRealGas( real_gases=( IdealGas(), SaxenaEightCoefficients( a_coefficients=( 0.92854, 0.043269, -0.24671, 0.0, 0.24999, 0.0, -0.53182, -0.016461 ), b_coefficients=( 0.00084866, -0.0018379, 0.066787, 0.0, -0.029427, 0.0, 0.029003, 0.0054808 ), c_coefficients=( -0.00035456, 2.3316e-05, 0.00094159, 0.0, -0.00081653, 0.0, 0.00023154, 5.5542e-05 ), d_coefficients=(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), critical_data=CriticalData(temperature=430.95, pressure=78.7295) ), UpperBoundRealGas( real_gas=SaxenaEightCoefficients( a_coefficients=( 0.92854, 0.043269, -0.24671, 0.0, 0.24999, 0.0, -0.53182, -0.016461 ), b_coefficients=( 0.00084866, -0.0018379, 0.066787, 0.0, -0.029427, 0.0, 0.029003, 0.0054808 ), c_coefficients=( -0.00035456, 2.3316e-05, 0.00094159, 0.0, -0.00081653, 0.0, 0.00023154, 5.5542e-05 ), d_coefficients=(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), critical_data=CriticalData(temperature=430.95, pressure=78.7295) ), p_eval=10000.0 ) ), calibrations=( ExperimentalCalibration(pressure_max=1.0), ExperimentalCalibration(pressure_min=1.0, pressure_max=10000.0), ExperimentalCalibration(pressure_min=10000.0) ), upper_pressure_bounds=(1.0, 10000.0), _volume_functions=( <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>> ), _volume_integral_functions=( <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>> ) )
SO2 EOS [Shi and Saxena, 1992, Table 1c] from 1 to 10e3 bar
- atmodeller.eos._saxena._H2S_low_pressure_SS92: RealGas = SaxenaEightCoefficients( a_coefficients=(1.4721, 1.1177, 3.9657, 0.0, -10.028, 0.0, 4.5484, -3.82), b_coefficients=( 0.16066, 0.10887, 0.29014, 0.0, -0.99593, 0.0, -0.18627, -0.45515 ), c_coefficients=( -0.28933, -0.070522, 0.39828, 0.0, -0.050533, 0.0, 0.1176, 0.33972 ), d_coefficients=(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), critical_data=CriticalData(temperature=373.55, pressure=90.0779) )
H2S low pressure (1-500 bar) [Shi and Saxena, 1992, Table 1d]
- atmodeller.eos._saxena._H2S_high_pressure_SS92: RealGas = SaxenaEightCoefficients( a_coefficients=( 0.59941, -0.001557, 0.04525, 0.0, 0.36687, 0.0, -0.79248, 0.26058 ), b_coefficients=( 0.022545, 0.0017473, 0.048253, 0.0, -0.01989, 0.0, 0.032794, -0.010985 ), c_coefficients=( 0.00057375, -2.0944e-06, -0.0011894, 0.0, 0.0014661, 0.0, -0.00075605, -0.00027985 ), d_coefficients=(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), critical_data=CriticalData(temperature=373.55, pressure=90.0779) )
H2S high pressure (500-10000 bar) [Shi and Saxena, 1992, Table 1d]
- atmodeller.eos._saxena.H2S_SS92: RealGas = CombinedRealGas( real_gases=( IdealGas(), SaxenaEightCoefficients( a_coefficients=(1.4721, 1.1177, 3.9657, 0.0, -10.028, 0.0, 4.5484, -3.82), b_coefficients=( 0.16066, 0.10887, 0.29014, 0.0, -0.99593, 0.0, -0.18627, -0.45515 ), c_coefficients=( -0.28933, -0.070522, 0.39828, 0.0, -0.050533, 0.0, 0.1176, 0.33972 ), d_coefficients=(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), critical_data=CriticalData(temperature=373.55, pressure=90.0779) ), SaxenaEightCoefficients( a_coefficients=( 0.59941, -0.001557, 0.04525, 0.0, 0.36687, 0.0, -0.79248, 0.26058 ), b_coefficients=( 0.022545, 0.0017473, 0.048253, 0.0, -0.01989, 0.0, 0.032794, -0.010985 ), c_coefficients=( 0.00057375, -2.0944e-06, -0.0011894, 0.0, 0.0014661, 0.0, -0.00075605, -0.00027985 ), d_coefficients=(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), critical_data=CriticalData(temperature=373.55, pressure=90.0779) ), UpperBoundRealGas( real_gas=SaxenaEightCoefficients( a_coefficients=( 0.59941, -0.001557, 0.04525, 0.0, 0.36687, 0.0, -0.79248, 0.26058 ), b_coefficients=( 0.022545, 0.0017473, 0.048253, 0.0, -0.01989, 0.0, 0.032794, -0.010985 ), c_coefficients=( 0.00057375, -2.0944e-06, -0.0011894, 0.0, 0.0014661, 0.0, -0.00075605, -0.00027985 ), d_coefficients=(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), critical_data=CriticalData(temperature=373.55, pressure=90.0779) ), p_eval=10000.0 ) ), calibrations=( ExperimentalCalibration(pressure_max=1.0), ExperimentalCalibration(pressure_min=1.0, pressure_max=500.0), ExperimentalCalibration(pressure_min=500.0, pressure_max=10000.0), ExperimentalCalibration(pressure_min=10000.0) ), upper_pressure_bounds=(1.0, 500.0, 10000.0), _volume_functions=( <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>> ), _volume_integral_functions=( <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>> ) )
H2S EOS, which combines the low and high pressure EOS [Shi and Saxena, 1992, Table 1d]
- atmodeller.eos._saxena.get_corresponding_states_SS92(species: str) RealGas
Corresponding states [Shi and Saxena, 1992, Table 1a]
Coefficients for the low and medium pressure regimes are from Saxena and Fei [1987, Equation 23 and 21], respectively, although some values disagree either in value or sign with Shi and Saxena [1992, Table 1a]. Eventually it should be determined which is right, but for the time being it is assumed that the earlier work is correct. Coefficients for the high pressure regime are from Saxena and Fei [1987, Equation 11].
- Parameters:
species – A species
- Returns:
A corresponding states model for the species
- atmodeller.eos._saxena.CH4_SS92: RealGas = CombinedRealGas( real_gases=( IdealGas(), SaxenaFiveCoefficients( a_coefficients=(1.0, 0.0, 0.0, 0.0, 0.0), b_coefficients=(0.0, 0.09827, 0.0, -0.2709, 0.0), c_coefficients=(0.0, 0.0, -0.00103, 0.0, 0.01472), d_coefficients=(0.0, 0.0, 0.0, 0.0, 0.0), critical_data=CriticalData(temperature=191.05, pressure=46.4069) ), SaxenaEightCoefficients( a_coefficients=(1.0, 0.0, 0.0, 0.0, -0.5917, 0.0, 0.0, 0.0), b_coefficients=(0.0, 0.0, 0.09122, 0.0, 0.0, 0.0, 0.0, 0.0), c_coefficients=(0.0, 0.0, 0.0, 0.0, 0.00014164, 0.0, 0.0, -2.8349e-06), d_coefficients=(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), critical_data=CriticalData(temperature=191.05, pressure=46.4069) ), SaxenaEightCoefficients( a_coefficients=(2.0614, 0.0, 0.0, 0.0, -2.2351, 0.0, 0.0, -0.39411), b_coefficients=(0.0, 0.0, 0.055125, 0.0, 0.039344, 0.0, 0.0, 0.0), c_coefficients=( 0.0, 0.0, -1.8935e-06, 0.0, -1.1092e-05, 0.0, -2.1892e-05, 0.0 ), d_coefficients=(0.0, 0.0, 5.0527e-11, 0.0, 0.0, -6.3033e-21, 0.0, 0.0), critical_data=CriticalData(temperature=191.05, pressure=46.4069) ) ), calibrations=( ExperimentalCalibration(pressure_max=1.0), ExperimentalCalibration(pressure_min=1.0, pressure_max=1000.0), ExperimentalCalibration(pressure_min=1000.0, pressure_max=5000.0), ExperimentalCalibration(pressure_min=5000.0) ), upper_pressure_bounds=(1.0, 1000.0, 5000.0), _volume_functions=( <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>> ), _volume_integral_functions=( <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>> ) )
CH4 corresponding states [Shi and Saxena, 1992]
- atmodeller.eos._saxena.CO_SS92: RealGas = CombinedRealGas( real_gases=( IdealGas(), SaxenaFiveCoefficients( a_coefficients=(1.0, 0.0, 0.0, 0.0, 0.0), b_coefficients=(0.0, 0.09827, 0.0, -0.2709, 0.0), c_coefficients=(0.0, 0.0, -0.00103, 0.0, 0.01472), d_coefficients=(0.0, 0.0, 0.0, 0.0, 0.0), critical_data=CriticalData(temperature=133.15, pressure=34.9571) ), SaxenaEightCoefficients( a_coefficients=(1.0, 0.0, 0.0, 0.0, -0.5917, 0.0, 0.0, 0.0), b_coefficients=(0.0, 0.0, 0.09122, 0.0, 0.0, 0.0, 0.0, 0.0), c_coefficients=(0.0, 0.0, 0.0, 0.0, 0.00014164, 0.0, 0.0, -2.8349e-06), d_coefficients=(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), critical_data=CriticalData(temperature=133.15, pressure=34.9571) ), SaxenaEightCoefficients( a_coefficients=(2.0614, 0.0, 0.0, 0.0, -2.2351, 0.0, 0.0, -0.39411), b_coefficients=(0.0, 0.0, 0.055125, 0.0, 0.039344, 0.0, 0.0, 0.0), c_coefficients=( 0.0, 0.0, -1.8935e-06, 0.0, -1.1092e-05, 0.0, -2.1892e-05, 0.0 ), d_coefficients=(0.0, 0.0, 5.0527e-11, 0.0, 0.0, -6.3033e-21, 0.0, 0.0), critical_data=CriticalData(temperature=133.15, pressure=34.9571) ) ), calibrations=( ExperimentalCalibration(pressure_max=1.0), ExperimentalCalibration(pressure_min=1.0, pressure_max=1000.0), ExperimentalCalibration(pressure_min=1000.0, pressure_max=5000.0), ExperimentalCalibration(pressure_min=5000.0) ), upper_pressure_bounds=(1.0, 1000.0, 5000.0), _volume_functions=( <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>> ), _volume_integral_functions=( <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>> ) )
CO corresponding states [Shi and Saxena, 1992]
- atmodeller.eos._saxena.CO2_SS92: RealGas = CombinedRealGas( real_gases=( IdealGas(), SaxenaFiveCoefficients( a_coefficients=(1.0, 0.0, 0.0, 0.0, 0.0), b_coefficients=(0.0, 0.09827, 0.0, -0.2709, 0.0), c_coefficients=(0.0, 0.0, -0.00103, 0.0, 0.01472), d_coefficients=(0.0, 0.0, 0.0, 0.0, 0.0), critical_data=CriticalData(temperature=304.15, pressure=73.8659) ), SaxenaEightCoefficients( a_coefficients=(1.0, 0.0, 0.0, 0.0, -0.5917, 0.0, 0.0, 0.0), b_coefficients=(0.0, 0.0, 0.09122, 0.0, 0.0, 0.0, 0.0, 0.0), c_coefficients=(0.0, 0.0, 0.0, 0.0, 0.00014164, 0.0, 0.0, -2.8349e-06), d_coefficients=(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), critical_data=CriticalData(temperature=304.15, pressure=73.8659) ), SaxenaEightCoefficients( a_coefficients=(2.0614, 0.0, 0.0, 0.0, -2.2351, 0.0, 0.0, -0.39411), b_coefficients=(0.0, 0.0, 0.055125, 0.0, 0.039344, 0.0, 0.0, 0.0), c_coefficients=( 0.0, 0.0, -1.8935e-06, 0.0, -1.1092e-05, 0.0, -2.1892e-05, 0.0 ), d_coefficients=(0.0, 0.0, 5.0527e-11, 0.0, 0.0, -6.3033e-21, 0.0, 0.0), critical_data=CriticalData(temperature=304.15, pressure=73.8659) ) ), calibrations=( ExperimentalCalibration(pressure_max=1.0), ExperimentalCalibration(pressure_min=1.0, pressure_max=1000.0), ExperimentalCalibration(pressure_min=1000.0, pressure_max=5000.0), ExperimentalCalibration(pressure_min=5000.0) ), upper_pressure_bounds=(1.0, 1000.0, 5000.0), _volume_functions=( <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>> ), _volume_integral_functions=( <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>> ) )
CO2 corresponding states [Shi and Saxena, 1992]
- atmodeller.eos._saxena.COS_SS92: RealGas = CombinedRealGas( real_gases=( IdealGas(), SaxenaFiveCoefficients( a_coefficients=(1.0, 0.0, 0.0, 0.0, 0.0), b_coefficients=(0.0, 0.09827, 0.0, -0.2709, 0.0), c_coefficients=(0.0, 0.0, -0.00103, 0.0, 0.01472), d_coefficients=(0.0, 0.0, 0.0, 0.0, 0.0), critical_data=CriticalData(temperature=377.55, pressure=65.8612) ), SaxenaEightCoefficients( a_coefficients=(1.0, 0.0, 0.0, 0.0, -0.5917, 0.0, 0.0, 0.0), b_coefficients=(0.0, 0.0, 0.09122, 0.0, 0.0, 0.0, 0.0, 0.0), c_coefficients=(0.0, 0.0, 0.0, 0.0, 0.00014164, 0.0, 0.0, -2.8349e-06), d_coefficients=(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), critical_data=CriticalData(temperature=377.55, pressure=65.8612) ), SaxenaEightCoefficients( a_coefficients=(2.0614, 0.0, 0.0, 0.0, -2.2351, 0.0, 0.0, -0.39411), b_coefficients=(0.0, 0.0, 0.055125, 0.0, 0.039344, 0.0, 0.0, 0.0), c_coefficients=( 0.0, 0.0, -1.8935e-06, 0.0, -1.1092e-05, 0.0, -2.1892e-05, 0.0 ), d_coefficients=(0.0, 0.0, 5.0527e-11, 0.0, 0.0, -6.3033e-21, 0.0, 0.0), critical_data=CriticalData(temperature=377.55, pressure=65.8612) ) ), calibrations=( ExperimentalCalibration(pressure_max=1.0), ExperimentalCalibration(pressure_min=1.0, pressure_max=1000.0), ExperimentalCalibration(pressure_min=1000.0, pressure_max=5000.0), ExperimentalCalibration(pressure_min=5000.0) ), upper_pressure_bounds=(1.0, 1000.0, 5000.0), _volume_functions=( <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>> ), _volume_integral_functions=( <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>> ) )
COS corresponding states [Shi and Saxena, 1992]
- atmodeller.eos._saxena.O2_SS92: RealGas = CombinedRealGas( real_gases=( IdealGas(), SaxenaFiveCoefficients( a_coefficients=(1.0, 0.0, 0.0, 0.0, 0.0), b_coefficients=(0.0, 0.09827, 0.0, -0.2709, 0.0), c_coefficients=(0.0, 0.0, -0.00103, 0.0, 0.01472), d_coefficients=(0.0, 0.0, 0.0, 0.0, 0.0), critical_data=CriticalData(temperature=154.75, pressure=50.7638) ), SaxenaEightCoefficients( a_coefficients=(1.0, 0.0, 0.0, 0.0, -0.5917, 0.0, 0.0, 0.0), b_coefficients=(0.0, 0.0, 0.09122, 0.0, 0.0, 0.0, 0.0, 0.0), c_coefficients=(0.0, 0.0, 0.0, 0.0, 0.00014164, 0.0, 0.0, -2.8349e-06), d_coefficients=(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), critical_data=CriticalData(temperature=154.75, pressure=50.7638) ), SaxenaEightCoefficients( a_coefficients=(2.0614, 0.0, 0.0, 0.0, -2.2351, 0.0, 0.0, -0.39411), b_coefficients=(0.0, 0.0, 0.055125, 0.0, 0.039344, 0.0, 0.0, 0.0), c_coefficients=( 0.0, 0.0, -1.8935e-06, 0.0, -1.1092e-05, 0.0, -2.1892e-05, 0.0 ), d_coefficients=(0.0, 0.0, 5.0527e-11, 0.0, 0.0, -6.3033e-21, 0.0, 0.0), critical_data=CriticalData(temperature=154.75, pressure=50.7638) ) ), calibrations=( ExperimentalCalibration(pressure_max=1.0), ExperimentalCalibration(pressure_min=1.0, pressure_max=1000.0), ExperimentalCalibration(pressure_min=1000.0, pressure_max=5000.0), ExperimentalCalibration(pressure_min=5000.0) ), upper_pressure_bounds=(1.0, 1000.0, 5000.0), _volume_functions=( <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>> ), _volume_integral_functions=( <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>> ) )
O2 corresponding states [Shi and Saxena, 1992]
- atmodeller.eos._saxena.S2_SS92: RealGas = CombinedRealGas( real_gases=( IdealGas(), SaxenaFiveCoefficients( a_coefficients=(1.0, 0.0, 0.0, 0.0, 0.0), b_coefficients=(0.0, 0.09827, 0.0, -0.2709, 0.0), c_coefficients=(0.0, 0.0, -0.00103, 0.0, 0.01472), d_coefficients=(0.0, 0.0, 0.0, 0.0, 0.0), critical_data=CriticalData(temperature=208.15, pressure=72.954) ), SaxenaEightCoefficients( a_coefficients=(1.0, 0.0, 0.0, 0.0, -0.5917, 0.0, 0.0, 0.0), b_coefficients=(0.0, 0.0, 0.09122, 0.0, 0.0, 0.0, 0.0, 0.0), c_coefficients=(0.0, 0.0, 0.0, 0.0, 0.00014164, 0.0, 0.0, -2.8349e-06), d_coefficients=(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), critical_data=CriticalData(temperature=208.15, pressure=72.954) ), SaxenaEightCoefficients( a_coefficients=(2.0614, 0.0, 0.0, 0.0, -2.2351, 0.0, 0.0, -0.39411), b_coefficients=(0.0, 0.0, 0.055125, 0.0, 0.039344, 0.0, 0.0, 0.0), c_coefficients=( 0.0, 0.0, -1.8935e-06, 0.0, -1.1092e-05, 0.0, -2.1892e-05, 0.0 ), d_coefficients=(0.0, 0.0, 5.0527e-11, 0.0, 0.0, -6.3033e-21, 0.0, 0.0), critical_data=CriticalData(temperature=208.15, pressure=72.954) ) ), calibrations=( ExperimentalCalibration(pressure_max=1.0), ExperimentalCalibration(pressure_min=1.0, pressure_max=1000.0), ExperimentalCalibration(pressure_min=1000.0, pressure_max=5000.0), ExperimentalCalibration(pressure_min=5000.0) ), upper_pressure_bounds=(1.0, 1000.0, 5000.0), _volume_functions=( <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>> ), _volume_integral_functions=( <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>> ) )
S2 corresponding states [Shi and Saxena, 1992]
- atmodeller.eos._saxena.Ar_SF87: RealGas = CombinedRealGas( real_gases=( IdealGas(), SaxenaFiveCoefficients( a_coefficients=(1.0, 0.0, 0.0, 0.0, 0.0), b_coefficients=(0.0, 0.09827, 0.0, -0.2709, 0.0), c_coefficients=(0.0, 0.0, -0.00103, 0.0, 0.01472), d_coefficients=(0.0, 0.0, 0.0, 0.0, 0.0), critical_data=CriticalData(temperature=151.0, pressure=48.6) ), SaxenaEightCoefficients( a_coefficients=(1.0, 0.0, 0.0, 0.0, -0.5917, 0.0, 0.0, 0.0), b_coefficients=(0.0, 0.0, 0.09122, 0.0, 0.0, 0.0, 0.0, 0.0), c_coefficients=(0.0, 0.0, 0.0, 0.0, 0.00014164, 0.0, 0.0, -2.8349e-06), d_coefficients=(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), critical_data=CriticalData(temperature=151.0, pressure=48.6) ), SaxenaEightCoefficients( a_coefficients=(2.0614, 0.0, 0.0, 0.0, -2.2351, 0.0, 0.0, -0.39411), b_coefficients=(0.0, 0.0, 0.055125, 0.0, 0.039344, 0.0, 0.0, 0.0), c_coefficients=( 0.0, 0.0, -1.8935e-06, 0.0, -1.1092e-05, 0.0, -2.1892e-05, 0.0 ), d_coefficients=(0.0, 0.0, 5.0527e-11, 0.0, 0.0, -6.3033e-21, 0.0, 0.0), critical_data=CriticalData(temperature=151.0, pressure=48.6) ) ), calibrations=( ExperimentalCalibration(pressure_max=1.0), ExperimentalCalibration(pressure_min=1.0, pressure_max=1000.0), ExperimentalCalibration(pressure_min=1000.0, pressure_max=5000.0), ExperimentalCalibration(pressure_min=5000.0) ), upper_pressure_bounds=(1.0, 1000.0, 5000.0), _volume_functions=( <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>> ), _volume_integral_functions=( <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>> ) )
Ar corresponding states [Saxena and Fei, 1987, Equation 11]
The low pressure extension given by the corresponding states model of Shi and Saxena [1992, Table 1a] is also adopted.
- atmodeller.eos._saxena.H2_SF87: RealGas = CombinedRealGas( real_gases=( IdealGas(), SaxenaFiveCoefficients( a_coefficients=(1.0, 0.0, 0.0, 0.0, 0.0), b_coefficients=(0.0, 0.09827, 0.0, -0.2709, 0.0), c_coefficients=(0.0, 0.0, -0.00103, 0.0, 0.01472), d_coefficients=(0.0, 0.0, 0.0, 0.0, 0.0), critical_data=CriticalData(temperature=33.25, pressure=12.9696) ), SaxenaEightCoefficients( a_coefficients=(1.0, 0.0, 0.0, 0.0, -0.5917, 0.0, 0.0, 0.0), b_coefficients=(0.0, 0.0, 0.09122, 0.0, 0.0, 0.0, 0.0, 0.0), c_coefficients=(0.0, 0.0, 0.0, 0.0, 0.00014164, 0.0, 0.0, -2.8349e-06), d_coefficients=(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), critical_data=CriticalData(temperature=33.25, pressure=12.9696) ), SaxenaEightCoefficients( a_coefficients=(2.0614, 0.0, 0.0, 0.0, -2.2351, 0.0, 0.0, -0.39411), b_coefficients=(0.0, 0.0, 0.055125, 0.0, 0.039344, 0.0, 0.0, 0.0), c_coefficients=( 0.0, 0.0, -1.8935e-06, 0.0, -1.1092e-05, 0.0, -2.1892e-05, 0.0 ), d_coefficients=(0.0, 0.0, 5.0527e-11, 0.0, 0.0, -6.3033e-21, 0.0, 0.0), critical_data=CriticalData(temperature=33.25, pressure=12.9696) ) ), calibrations=( ExperimentalCalibration(pressure_max=1.0), ExperimentalCalibration(pressure_min=1.0, pressure_max=1000.0), ExperimentalCalibration(pressure_min=1000.0, pressure_max=5000.0), ExperimentalCalibration(pressure_min=5000.0) ), upper_pressure_bounds=(1.0, 1000.0, 5000.0), _volume_functions=( <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>> ), _volume_integral_functions=( <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>> ) )
H2 corresponding states [Saxena and Fei, 1987, Equation 11]
The low pressure extension given by the corresponding states model of Shi and Saxena [1992, Table 1a] is also adopted.
- atmodeller.eos._saxena.N2_SF87: RealGas = CombinedRealGas( real_gases=( IdealGas(), SaxenaFiveCoefficients( a_coefficients=(1.0, 0.0, 0.0, 0.0, 0.0), b_coefficients=(0.0, 0.09827, 0.0, -0.2709, 0.0), c_coefficients=(0.0, 0.0, -0.00103, 0.0, 0.01472), d_coefficients=(0.0, 0.0, 0.0, 0.0, 0.0), critical_data=CriticalData(temperature=126.2, pressure=33.9) ), SaxenaEightCoefficients( a_coefficients=(1.0, 0.0, 0.0, 0.0, -0.5917, 0.0, 0.0, 0.0), b_coefficients=(0.0, 0.0, 0.09122, 0.0, 0.0, 0.0, 0.0, 0.0), c_coefficients=(0.0, 0.0, 0.0, 0.0, 0.00014164, 0.0, 0.0, -2.8349e-06), d_coefficients=(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), critical_data=CriticalData(temperature=126.2, pressure=33.9) ), SaxenaEightCoefficients( a_coefficients=(2.0614, 0.0, 0.0, 0.0, -2.2351, 0.0, 0.0, -0.39411), b_coefficients=(0.0, 0.0, 0.055125, 0.0, 0.039344, 0.0, 0.0, 0.0), c_coefficients=( 0.0, 0.0, -1.8935e-06, 0.0, -1.1092e-05, 0.0, -2.1892e-05, 0.0 ), d_coefficients=(0.0, 0.0, 5.0527e-11, 0.0, 0.0, -6.3033e-21, 0.0, 0.0), critical_data=CriticalData(temperature=126.2, pressure=33.9) ) ), calibrations=( ExperimentalCalibration(pressure_max=1.0), ExperimentalCalibration(pressure_min=1.0, pressure_max=1000.0), ExperimentalCalibration(pressure_min=1000.0, pressure_max=5000.0), ExperimentalCalibration(pressure_min=5000.0) ), upper_pressure_bounds=(1.0, 1000.0, 5000.0), _volume_functions=( <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>> ), _volume_integral_functions=( <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>> ) )
N2 corresponding states [Saxena and Fei, 1987, Equation 11]
The low pressure extension given by the corresponding states model of Shi and Saxena [1992, Table 1a] is also adopted.
atmodeller.eos._vanderwaals module
Real gas EOS from Lide [2005]
- class atmodeller.eos._vanderwaals.VanderWaals(a: Any, b: Any)
Bases:
RealGasVan der Waals EOS
- Parameters:
a – a constant in \(\mathrm{m}^6 \mathrm{bar} \mathrm{mol}^{-2}\)
b – b constant in \(\mathrm{m}^3 \mathrm{mol}^{-1}\)
- a: float
a constant in \(\mathrm{m}^6 \mathrm{bar} \mathrm{mol}^{-2}\)
- b: float
b constant in \(\mathrm{m}^3 \mathrm{mol}^{-1}\)
- _objective_function(volume: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, kwargs: dict[str, Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray]) Array
Objective function to solve for the volume
- Parameters:
volume – Volume in \(\mathrm{m}^3\ \mathrm{mol}^{-1}\)
kwargs – Dictionary with other required parameters
- Returns:
Residual of the objective function
- volume(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray
Computes the volume numerically.
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Volume in \(\mathrm{m}^3 \mathrm{mol}^{-1}\)
- volume_integral(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Volume integral
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Volume integral in \(\mathrm{m}^3\ \mathrm{bar}\ \mathrm{mol}^{-1}\)
- _abc_impl = <_abc._abc_data object>
- compressibility_factor(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray
Compressibility factor
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Compressibility factor, which is dimensionless
- dvdp(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Derivative of volume with respect to pressure
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Derivative of volume with respect to pressure
- dzdp(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Derivative of the compressibility factor with respect to pressure
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Derivative of the compressibility factor with respect to pressure
- fugacity(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Fugacity
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Fugacity in bar
- fugacity_coefficient(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Fugacity coefficient
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
fugacity coefficient, which is dimensionless
- log_activity(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Log activity
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Log activity, which is dimensionless
- log_fugacity(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Log fugacity
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Log fugacity in bar
- log_fugacity_coefficient(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Log fugacity coefficient
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Log fugacity coefficient, which is dimensionless
- pressure_from_fugacity(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, fugacity: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Calculate pressure from fugacity
- Parameters:
temperature – Temperature in K
fugacity – Fugacity in bar
- Returns:
Pressure in bar
- volume_integral_J(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Volume integral in J
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Volume integral in \(\mathrm{J}\ \mathrm{mol}^{-1}\)
- atmodeller.eos._vanderwaals.H2_lide: RealGas = VanderWaals(a=2.452e-07, b=2.65e-05)
H2 van der Waals [Lide, 2005]
- atmodeller.eos._vanderwaals.H2_lide_bounded: RealGas = CombinedRealGas( real_gases=(IdealGas(), VanderWaals(a=2.452e-07, b=2.65e-05)), calibrations=( ExperimentalCalibration(pressure_max=1.0), ExperimentalCalibration(pressure_min=1.0) ), upper_pressure_bounds=(1.0,), _volume_functions=( <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>> ), _volume_integral_functions=( <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>> ) )
H2 bounded to data range
- atmodeller.eos._vanderwaals.He_lide: RealGas = VanderWaals(a=3.46e-08, b=2.38e-05)
He van der Waals [Lide, 2005]
- atmodeller.eos._vanderwaals.He_lide_bounded: RealGas = CombinedRealGas( real_gases=(IdealGas(), VanderWaals(a=3.46e-08, b=2.38e-05)), calibrations=( ExperimentalCalibration(pressure_max=1.0), ExperimentalCalibration(pressure_min=1.0) ), upper_pressure_bounds=(1.0,), _volume_functions=( <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>> ), _volume_integral_functions=( <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>> ) )
He bounded to data range
- atmodeller.eos._vanderwaals.N2_lide: RealGas = VanderWaals(a=1.37e-06, b=3.87e-05)
N2 van der Waals [Lide, 2005]
- atmodeller.eos._vanderwaals.N2_lide_bounded: RealGas = CombinedRealGas( real_gases=(IdealGas(), VanderWaals(a=1.37e-06, b=3.87e-05)), calibrations=( ExperimentalCalibration(pressure_max=1.0), ExperimentalCalibration(pressure_min=1.0) ), upper_pressure_bounds=(1.0,), _volume_functions=( <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>> ), _volume_integral_functions=( <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>> ) )
N2 bounded to data range
- atmodeller.eos._vanderwaals.H4Si_lide: RealGas = VanderWaals(a=4.38e-06, b=5.79e-05)
SiH4 van der Waals [Lide, 2005]
- atmodeller.eos._vanderwaals.H4Si_lide_bounded: RealGas = CombinedRealGas( real_gases=(IdealGas(), VanderWaals(a=4.38e-06, b=5.79e-05)), calibrations=( ExperimentalCalibration(pressure_max=1.0), ExperimentalCalibration(pressure_min=1.0) ), upper_pressure_bounds=(1.0,), _volume_functions=( <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>> ), _volume_integral_functions=( <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>> ) )
SiH4 bounded to data range
- atmodeller.eos._vanderwaals.H2O_lide: RealGas = VanderWaals(a=5.537e-06, b=3.05e-05)
H2O van der Waals [Lide, 2005]
- atmodeller.eos._vanderwaals.H2O_lide_bounded: RealGas = CombinedRealGas( real_gases=(IdealGas(), VanderWaals(a=5.537e-06, b=3.05e-05)), calibrations=( ExperimentalCalibration(pressure_max=1.0), ExperimentalCalibration(pressure_min=1.0) ), upper_pressure_bounds=(1.0,), _volume_functions=( <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>> ), _volume_integral_functions=( <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>> ) )
H2O bounded to data range
- atmodeller.eos._vanderwaals.CH4_lide: RealGas = VanderWaals(a=2.303e-06, b=4.31e-05)
CH4 van der Waals [Lide, 2005]
- atmodeller.eos._vanderwaals.CH4_lide_bounded: RealGas = CombinedRealGas( real_gases=(IdealGas(), VanderWaals(a=2.303e-06, b=4.31e-05)), calibrations=( ExperimentalCalibration(pressure_max=1.0), ExperimentalCalibration(pressure_min=1.0) ), upper_pressure_bounds=(1.0,), _volume_functions=( <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>> ), _volume_integral_functions=( <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>> ) )
CH4 bounded to data range
- atmodeller.eos._vanderwaals.H3N_lide: RealGas = VanderWaals(a=4.225e-06, b=3.71e-05)
NH3 van der Waals [Lide, 2005]
- atmodeller.eos._vanderwaals.H3N_lide_bounded: RealGas = CombinedRealGas( real_gases=(IdealGas(), VanderWaals(a=4.225e-06, b=3.71e-05)), calibrations=( ExperimentalCalibration(pressure_max=1.0), ExperimentalCalibration(pressure_min=1.0) ), upper_pressure_bounds=(1.0,), _volume_functions=( <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>> ), _volume_integral_functions=( <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>> ) )
NH3 bounded to data range
- atmodeller.eos._vanderwaals.CHN_lide: RealGas = VanderWaals(a=1.29e-05, b=8.81e-05)
HCN van der Waals [Lide, 2005]
- atmodeller.eos._vanderwaals.CHN_lide_bounded: RealGas = CombinedRealGas( real_gases=(IdealGas(), VanderWaals(a=1.29e-05, b=8.81e-05)), calibrations=( ExperimentalCalibration(pressure_max=1.0), ExperimentalCalibration(pressure_min=1.0) ), upper_pressure_bounds=(1.0,), _volume_functions=( <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>> ), _volume_integral_functions=( <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>> ) )
HCN bounded to data range
- atmodeller.eos._vanderwaals.H4Si_isham: RealGas = VanderWaals(a=2.478e-06, b=3.275e-05)
SiH4 van der Waals (Isham) [Lide, 2005]
- atmodeller.eos._vanderwaals.H4Si_isham_bounded: RealGas = CombinedRealGas( real_gases=(IdealGas(), VanderWaals(a=2.478e-06, b=3.275e-05)), calibrations=( ExperimentalCalibration(pressure_max=1.0), ExperimentalCalibration(pressure_min=1.0) ), upper_pressure_bounds=(1.0,), _volume_functions=( <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>> ), _volume_integral_functions=( <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>> ) )
SiH4 (Isham) bounded to data range
- atmodeller.eos._vanderwaals.OSi_isham: RealGas = VanderWaals(a=8.698e-06, b=8.582e-06)
OSi van der Waals (Isham) [Lide, 2005]
- atmodeller.eos._vanderwaals.OSi_isham_bounded: RealGas = CombinedRealGas( real_gases=(IdealGas(), VanderWaals(a=8.698e-06, b=8.582e-06)), calibrations=( ExperimentalCalibration(pressure_max=1.0), ExperimentalCalibration(pressure_min=1.0) ), upper_pressure_bounds=(1.0,), _volume_functions=( <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>> ), _volume_integral_functions=( <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>> ) )
OSi (Isham) bounded to data range
atmodeller.eos._wang module
Real gas Virial EOS
The papers state a volume integration from \(P_0\) to \(P\), where \(f(P_0=1)=1\). Hence for bounded EOS a minimum pressure of 1 bar is assumed.
- class atmodeller.eos._wang.VirialQuadratic(a_coefficients: Any, b_coefficients: Any, c_coefficients: Any)
Bases:
RealGasA real gas EOS that implements the virial formulation
- Parameters:
a_coefficients – a coefficients
b_coefficients – b coefficients
c_coefficients – c coefficients
critical_data – Critical data. Defaults to empty.
- a_coefficients: tuple[float, ...]
a coefficients
- b_coefficients: tuple[float, ...]
b coefficients
- c_coefficients: tuple[float, ...]
c coefficients
- _get_compressibility_coefficient(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, coefficients: tuple[float, ...]) Array
General form of the coefficients for the compressibility calculation
- Parameters:
temperature – Temperature in K
coefficients – Tuple of the coefficients a, b, c
- Returns
The relevant coefficient
- a(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
a parameter
- Parameters:
temperature – Temperature in K
- Returns:
a parameter
- b(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
b parameter
- Parameters:
temperature – Temperature in K
- Returns:
b parameter
- c(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
c parameter
- Parameters:
temperature – Temperature in K
- Returns:
c parameter
- compressibility_factor(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Compressibility factor
This overrides the base class because the compressibility factor is used to determine the volume, whereas in the base class the volume is used to determine the compressibility factor.
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
The compressibility factor, which is dimensionless
- log_fugacity(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Log fugacity
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Log fugacity in bar
- volume(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Volume [Shi and Saxena, 1992, Equation 1]
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Volume in \(\mathrm{m}^3\ \mathrm{mol}^{-1}\)
- volume_integral(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Volume integral
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Volume integral in \(\mathrm{m}^3\ \mathrm{bar}\ \mathrm{mol}^{-1}\)
- _abc_impl = <_abc._abc_data object>
- dvdp(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Derivative of volume with respect to pressure
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Derivative of volume with respect to pressure
- dzdp(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Derivative of the compressibility factor with respect to pressure
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Derivative of the compressibility factor with respect to pressure
- fugacity(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Fugacity
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Fugacity in bar
- fugacity_coefficient(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Fugacity coefficient
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
fugacity coefficient, which is dimensionless
- log_activity(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Log activity
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Log activity, which is dimensionless
- log_fugacity_coefficient(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Log fugacity coefficient
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Log fugacity coefficient, which is dimensionless
- pressure_from_fugacity(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, fugacity: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Calculate pressure from fugacity
- Parameters:
temperature – Temperature in K
fugacity – Fugacity in bar
- Returns:
Pressure in bar
- volume_integral_J(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Volume integral in J
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Volume integral in \(\mathrm{J}\ \mathrm{mol}^{-1}\)
- atmodeller.eos._wang.experimental_calibration_wang18: ExperimentalCalibration = ExperimentalCalibration( temperature_min=1200.0, temperature_max=4100.0, pressure_min=1.0, pressure_max=1387000.0 )
Experimental calibration for [Wang et al., 2018] models
- atmodeller.eos._wang.H4Si_wang18_bounded: RealGas = CombinedRealGas( real_gases=( IdealGas(), VirialQuadratic( a_coefficients=(1.0, 0.0, 0.0), b_coefficients=(0.00038552, -1.822e-07, 2.54e-11), c_coefficients=(-1.942e-10, 1.088e-13, -1.62e-17) ), UpperBoundRealGas( real_gas=VirialQuadratic( a_coefficients=(1.0, 0.0, 0.0), b_coefficients=(0.00038552, -1.822e-07, 2.54e-11), c_coefficients=(-1.942e-10, 1.088e-13, -1.62e-17) ), p_eval=1387000.0 ) ), calibrations=( ExperimentalCalibration(pressure_max=1.0), ExperimentalCalibration( temperature_min=1200.0, temperature_max=4100.0, pressure_min=1.0, pressure_max=1387000.0 ), ExperimentalCalibration(pressure_min=1387000.0) ), upper_pressure_bounds=(1.0, 1387000.0), _volume_functions=( <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>> ), _volume_integral_functions=( <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>> ) )
OSi MRK corresponding states bounded [Connolly, 2016]
atmodeller.eos._zhang_duan module
Real gas EOS from Zhang and Duan [2009]
- class atmodeller.eos._zhang_duan.ZhangDuan(epsilon: Any, sigma: Any)
Bases:
RealGasReal gas EOS [Zhang and Duan, 2009]
- Parameters:
epsilon – Lenard-Jones parameter (epsilon/kB) in K
sigma – Lenard-Jones parameter in \(10^{-10}\) m
- coefficients: ClassVar[tuple[float, ...]] = (0.029517729893, -6337.56452413, -275265.428882, 0.00129128089283, -145.797416153, 76593.8947237, 2.58661493537e-06, 0.52126532146, -139.839523753, -2.36335007175e-08, 0.00535026383543, -0.27110649951, 25038.7836486, 0.73226726041, 0.015483335997)
Coefficients
- epsilon: float
Lenard-Jones parameter (epsilon/kB) in K
- sigma: float
Lenard-Jones parameter in \(10^{-10}\) m
- _Pm(pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Scaled pressure
- Parameters:
pressure – Pressure in bar
- Returns:
Scaled pressure
- _Tm(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray
Scaled temperature
- Parameters:
temperature – Temperature in K
- Returns:
Scaled temperature
- _Vm(volume: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Scaled volume
- Parameters:
volume – Volume in \(\mathrm{m}^3\ \mathrm{mol}^{-1}\)
- Returns:
Scaled volume
- _get_parameter(Tm: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, coefficients: tuple[float, ...]) Array
Gets the parameter (coefficient) for polynomials involving Tm terms
- Parameters:
Tm – Scaled temperature
coefficients – Coefficients for this term
- Returns:
Parameter (coefficient)
- _S1(Tm: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, Vm: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
S1 term [Zhang and Duan, 2009, Equation 15]
- Parameters:
Tm – Scaled temperature
Vm – Scaled volume
- Returns:
S1 term
- _objective_function(volume: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, kwargs: dict[str, Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray]) Array
Objective function to solve for the volume [Zhang and Duan, 2009, Equation 8].
Note that the left-hand side of Zhang and Duan [2009, Equation 8] is the compressibility factor so should be expressed in terms of P, V, R, and T, and not the scaled equivalents.
- Parameters:
volume – Volume in \(\mathrm{m}^3\ \mathrm{mol}^{-1}\)
kwargs – Dictionary with other required parameters
- Returns:
Residual of the objective function
- initial_volume(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Initial guess volume to ensure convergence to the correct root
\[V = \frac{RT}{P} \left(1 + \frac{b}{V_m}\right)\]This is the ideal gas law with a correction for the b term based on truncating the full equation and substituting in the ideal gas volume. The 1/Vm**2 is not included because convergence did not improve with it, in fact, it got worse. Also, the initial volume is required to be positive, so the initial compressibility parameter is limited to a minimum of 0.1, which is guided by the behaviour of water to some extent.
This initial guess will eventually fail for large pressures, leaving room for an improved approach.
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Initial volume in \(\mathrm{m}^3\ \mathrm{mol}^{-1}\)
- volume(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Computes the volume numerically.
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Volume in \(\mathrm{m}^3\ \mathrm{mol}^{-1}\)
- log_fugacity(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Log fugacity [Zhang and Duan, 2009, Equation 14]
This is for a pure species and does not include the terms to enable end member mixing.
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Log fugacity in bar
- volume_integral(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Volume integral
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Volume integral in \(\mathrm{m}^3\ \mathrm{bar}\ \mathrm{mol}^{-1}\)
- _abc_impl = <_abc._abc_data object>
- compressibility_factor(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray
Compressibility factor
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Compressibility factor, which is dimensionless
- dvdp(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Derivative of volume with respect to pressure
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Derivative of volume with respect to pressure
- dzdp(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Derivative of the compressibility factor with respect to pressure
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Derivative of the compressibility factor with respect to pressure
- fugacity(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Fugacity
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Fugacity in bar
- fugacity_coefficient(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Fugacity coefficient
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
fugacity coefficient, which is dimensionless
- log_activity(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Log activity
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Log activity, which is dimensionless
- log_fugacity_coefficient(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Log fugacity coefficient
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Log fugacity coefficient, which is dimensionless
- pressure_from_fugacity(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, fugacity: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Calculate pressure from fugacity
- Parameters:
temperature – Temperature in K
fugacity – Fugacity in bar
- Returns:
Pressure in bar
- volume_integral_J(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Volume integral in J
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Volume integral in \(\mathrm{J}\ \mathrm{mol}^{-1}\)
- atmodeller.eos._zhang_duan.CH4_zhang09: RealGas = ZhangDuan(epsilon=154.0, sigma=3.691)
CH4 unbounded [Zhang and Duan, 2009]
- atmodeller.eos._zhang_duan.CH4_experimental_calibration: ExperimentalCalibration = ExperimentalCalibration( temperature_min=273.0, temperature_max=2573.0, pressure_min=1.0, pressure_max=100000.0 )
Experimental calibration for CH4 [Zhang and Duan, 2009, Table 5]
- atmodeller.eos._zhang_duan.CH4_zhang09_bounded: RealGas = CombinedRealGas( real_gases=( IdealGas(), ZhangDuan(epsilon=154.0, sigma=3.691), UpperBoundRealGas( real_gas=ZhangDuan(epsilon=154.0, sigma=3.691), p_eval=100000.0 ) ), calibrations=( ExperimentalCalibration(pressure_max=1.0), ExperimentalCalibration( temperature_min=273.0, temperature_max=2573.0, pressure_min=1.0, pressure_max=100000.0 ), ExperimentalCalibration(pressure_min=100000.0) ), upper_pressure_bounds=(1.0, 100000.0), _volume_functions=( <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>> ), _volume_integral_functions=( <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>> ) )
CH4 bounded to data range [Zhang and Duan, 2009, Table 5]
- atmodeller.eos._zhang_duan.H2O_zhang09: RealGas = ZhangDuan(epsilon=510.0, sigma=2.88)
H2O unbounded [Zhang and Duan, 2009]
- atmodeller.eos._zhang_duan.H2O_experimental_calibration: ExperimentalCalibration = ExperimentalCalibration( temperature_min=673.0, temperature_max=2573.0, pressure_min=1.0, pressure_max=100000.0 )
Experimental calibration for H2O [Zhang and Duan, 2009, Table 5]
- atmodeller.eos._zhang_duan.H2O_zhang09_bounded: RealGas = CombinedRealGas( real_gases=( IdealGas(), ZhangDuan(epsilon=510.0, sigma=2.88), UpperBoundRealGas( real_gas=ZhangDuan(epsilon=510.0, sigma=2.88), p_eval=100000.0 ) ), calibrations=( ExperimentalCalibration(pressure_max=1.0), ExperimentalCalibration( temperature_min=673.0, temperature_max=2573.0, pressure_min=1.0, pressure_max=100000.0 ), ExperimentalCalibration(pressure_min=100000.0) ), upper_pressure_bounds=(1.0, 100000.0), _volume_functions=( <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>> ), _volume_integral_functions=( <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>> ) )
H2O bounded to data range [Zhang and Duan, 2009, Table 5]
- atmodeller.eos._zhang_duan.CO2_zhang09: RealGas = ZhangDuan(epsilon=235.0, sigma=3.79)
CO2 unbounded [Zhang and Duan, 2009]
- atmodeller.eos._zhang_duan.CO2_experimental_calibration: ExperimentalCalibration = ExperimentalCalibration( temperature_min=473.0, temperature_max=2573.0, pressure_min=1.0, pressure_max=100000.0 )
Experimental calibration for CO2 [Zhang and Duan, 2009, Table 5]
- atmodeller.eos._zhang_duan.H2_zhang09: RealGas = ZhangDuan(epsilon=31.2, sigma=2.93)
H2 unbounded [Zhang and Duan, 2009]
- atmodeller.eos._zhang_duan.H2_experimental_calibration: ExperimentalCalibration = ExperimentalCalibration( temperature_min=250.0, temperature_max=423.0, pressure_min=20.0, pressure_max=7000.0 )
Experimental calibration for H2 [Zhang and Duan, 2009, Table 5]
- atmodeller.eos._zhang_duan.H2_zhang09_bounded: RealGas = CombinedRealGas( real_gases=( IdealGas(), ZhangDuan(epsilon=31.2, sigma=2.93), UpperBoundRealGas( real_gas=ZhangDuan(epsilon=31.2, sigma=2.93), p_eval=7000.0 ) ), calibrations=( ExperimentalCalibration(pressure_max=20.0), ExperimentalCalibration( temperature_min=250.0, temperature_max=423.0, pressure_min=20.0, pressure_max=7000.0 ), ExperimentalCalibration(pressure_min=7000.0) ), upper_pressure_bounds=(20.0, 7000.0), _volume_functions=( <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>> ), _volume_integral_functions=( <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>> ) )
H2 bounded to data range [Zhang and Duan, 2009, Table 5]
- atmodeller.eos._zhang_duan.CO_zhang09: RealGas = ZhangDuan(epsilon=105.6, sigma=3.66)
CO unbounded [Zhang and Duan, 2009]
- atmodeller.eos._zhang_duan.CO_experimental_calibration: ExperimentalCalibration = ExperimentalCalibration( temperature_min=300.0, temperature_max=573.2, pressure_min=100.0, pressure_max=10206.0 )
Experimental calibration for CO [Zhang and Duan, 2009, Table 5]
- atmodeller.eos._zhang_duan.CO_zhang09_bounded: RealGas = CombinedRealGas( real_gases=( IdealGas(), ZhangDuan(epsilon=105.6, sigma=3.66), UpperBoundRealGas( real_gas=ZhangDuan(epsilon=105.6, sigma=3.66), p_eval=10206.0 ) ), calibrations=( ExperimentalCalibration(pressure_max=100.0), ExperimentalCalibration( temperature_min=300.0, temperature_max=573.2, pressure_min=100.0, pressure_max=10206.0 ), ExperimentalCalibration(pressure_min=10206.0) ), upper_pressure_bounds=(100.0, 10206.0), _volume_functions=( <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>> ), _volume_integral_functions=( <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>> ) )
CO bounded to data range [Zhang and Duan, 2009, Table 5]
- atmodeller.eos._zhang_duan.O2_zhang09: RealGas = ZhangDuan(epsilon=124.5, sigma=3.36)
O2 unbounded [Zhang and Duan, 2009]
- atmodeller.eos._zhang_duan.O2_experimental_calibration: ExperimentalCalibration = ExperimentalCalibration( temperature_min=300.0, temperature_max=1000.0, pressure_min=70.0, pressure_max=10132.0 )
Experimental calibration for O2 [Zhang and Duan, 2009, Table 5]
- atmodeller.eos._zhang_duan.O2_zhang09_bounded: RealGas = CombinedRealGas( real_gases=( IdealGas(), ZhangDuan(epsilon=124.5, sigma=3.36), UpperBoundRealGas( real_gas=ZhangDuan(epsilon=124.5, sigma=3.36), p_eval=10132.0 ) ), calibrations=( ExperimentalCalibration(pressure_max=70.0), ExperimentalCalibration( temperature_min=300.0, temperature_max=1000.0, pressure_min=70.0, pressure_max=10132.0 ), ExperimentalCalibration(pressure_min=10132.0) ), upper_pressure_bounds=(70.0, 10132.0), _volume_functions=( <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>> ), _volume_integral_functions=( <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>> ) )
O2 bounded to data range [Zhang and Duan, 2009, Table 5]
- atmodeller.eos._zhang_duan.C2H6_zhang09: RealGas = ZhangDuan(epsilon=246.1, sigma=4.35)
C2H6 unbounded [Zhang and Duan, 2009]
- atmodeller.eos._zhang_duan.C2H6_experimental_calibration: ExperimentalCalibration = ExperimentalCalibration( temperature_min=373.0, temperature_max=673.0, pressure_min=300.0, pressure_max=9000.0 )
Experimental calibration for C2H6 [Zhang and Duan, 2009, Table 5]
- atmodeller.eos._zhang_duan.C2H6_zhang09_bounded: RealGas = CombinedRealGas( real_gases=( IdealGas(), ZhangDuan(epsilon=246.1, sigma=4.35), UpperBoundRealGas( real_gas=ZhangDuan(epsilon=246.1, sigma=4.35), p_eval=9000.0 ) ), calibrations=( ExperimentalCalibration(pressure_max=300.0), ExperimentalCalibration( temperature_min=373.0, temperature_max=673.0, pressure_min=300.0, pressure_max=9000.0 ), ExperimentalCalibration(pressure_min=9000.0) ), upper_pressure_bounds=(300.0, 9000.0), _volume_functions=( <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>> ), _volume_integral_functions=( <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>>, <function to_hashable.<locals>.<lambda>> ) )
C2H6 bounded to data range [Zhang and Duan, 2009, Table 5]
atmodeller.eos.core module
Core classes and functions for real gas equations of state
Units for temperature and pressure are K and bar, respectively.
- class atmodeller.eos.core.RealGasBase
Bases:
ModuleA real gas equation of state (EOS) without explicit volume calculations
For the purpose of Atmodeller calculations, i.e. solving the reaction equilibrium, it is only necessary to be able to calculate the fugacity.
- abstractmethod log_fugacity(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Log fugacity
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Log fugacity in bar
- fugacity(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Fugacity
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Fugacity in bar
- log_fugacity_coefficient(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Log fugacity coefficient
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Log fugacity coefficient, which is dimensionless
- fugacity_coefficient(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Fugacity coefficient
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
fugacity coefficient, which is dimensionless
- log_activity(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Log activity
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Log activity, which is dimensionless
- pressure_from_fugacity(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, fugacity: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Calculate pressure from fugacity
- Parameters:
temperature – Temperature in K
fugacity – Fugacity in bar
- Returns:
Pressure in bar
- _abc_impl = <_abc._abc_data object>
- class atmodeller.eos.core.RealGas
Bases:
RealGasBaseA real gas equation of state (EOS) with volume calculations
Fugacity is computed using the standard relation:
\[R T \ln f = \int V dP\]where \(R\) is the gas constant, \(T\) is temperature, \(f\) is fugacity, \(V\) is volume, and \(P\) is pressure.
- abstractmethod volume(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray
Volume
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Volume in \(\mathrm{m}^3\ \mathrm{mol}^{-1}\)
- abstractmethod volume_integral(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Volume integral in units required for internal Atmodeller operations.
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Volume integral in \(\mathrm{m}^3\ \mathrm{bar}\ \mathrm{mol}^{-1}\)
- log_fugacity(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Log fugacity
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Log fugacity in bar
- volume_integral_J(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Volume integral in J
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Volume integral in \(\mathrm{J}\ \mathrm{mol}^{-1}\)
- dzdp(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Derivative of the compressibility factor with respect to pressure
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Derivative of the compressibility factor with respect to pressure
- dvdp(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Derivative of volume with respect to pressure
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Derivative of volume with respect to pressure
- compressibility_factor(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray
Compressibility factor
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Compressibility factor, which is dimensionless
- _abc_impl = <_abc._abc_data object>
- fugacity(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Fugacity
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Fugacity in bar
- fugacity_coefficient(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Fugacity coefficient
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
fugacity coefficient, which is dimensionless
- log_activity(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Log activity
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Log activity, which is dimensionless
- log_fugacity_coefficient(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Log fugacity coefficient
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Log fugacity coefficient, which is dimensionless
- pressure_from_fugacity(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, fugacity: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Calculate pressure from fugacity
- Parameters:
temperature – Temperature in K
fugacity – Fugacity in bar
- Returns:
Pressure in bar
- class atmodeller.eos.core.IdealGas
Bases:
RealGasIdeal gas equation of state:
\[R T = P V\]where \(R\) is the gas constant, \(T\) is temperature, \(P\) is pressure, and \(V\) is volume.
- volume(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray
Volume
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Volume in \(\mathrm{m}^3\ \mathrm{mol}^{-1}\)
- volume_integral(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Volume integral in units required for internal Atmodeller operations.
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Volume integral in \(\mathrm{m}^3\ \mathrm{bar}\ \mathrm{mol}^{-1}\)
- _abc_impl = <_abc._abc_data object>
- compressibility_factor(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray
Compressibility factor
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Compressibility factor, which is dimensionless
- dvdp(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Derivative of volume with respect to pressure
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Derivative of volume with respect to pressure
- dzdp(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Derivative of the compressibility factor with respect to pressure
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Derivative of the compressibility factor with respect to pressure
- fugacity(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Fugacity
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Fugacity in bar
- fugacity_coefficient(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Fugacity coefficient
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
fugacity coefficient, which is dimensionless
- log_activity(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Log activity
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Log activity, which is dimensionless
- log_fugacity(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Log fugacity
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Log fugacity in bar
- log_fugacity_coefficient(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Log fugacity coefficient
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Log fugacity coefficient, which is dimensionless
- pressure_from_fugacity(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, fugacity: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Calculate pressure from fugacity
- Parameters:
temperature – Temperature in K
fugacity – Fugacity in bar
- Returns:
Pressure in bar
- volume_integral_J(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Volume integral in J
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Volume integral in \(\mathrm{J}\ \mathrm{mol}^{-1}\)
- class atmodeller.eos.core.RedlichKwongABC
Bases:
RealGasRedlich-Kwong EOS:
\[P = \frac{RT}{V-b} - \frac{a}{\sqrt{T}V(V+b)}\]where \(P\) is pressure, \(T\) is temperature, \(V\) is the molar volume, \(R\) the gas constant, \(a\) corrects for the attractive potential of molecules, and \(b\) corrects for the volume.
This employs an approximation to analytically determine the volume and the volume integral.
- abstractmethod a(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray
Gets the a parameter
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
a parameter in \((\mathrm{m}^3\ \mathrm{mol}^{-1})^2\ \mathrm{K}^{1/2}\ \mathrm{bar}\)
- abstractmethod b() Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray
Gets the b parameter
- Returns:
b parameter in \(\mathrm{m}^3\ \mathrm{mol}^{-1}\)
- volume_integral(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Volume integral
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Volume integral in \(\mathrm{m}^3\ \mathrm{bar}\ \mathrm{mol}^{-1}\)
- volume(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Volume-explicit equation [Holland and Powell, 1991, Equation 7]
Without complications of critical phenomena the RK equation can be simplified using the approximation:
\[V \sim \frac{RT}{P} + b\]where \(V\) is volume, \(R\) is the gas constant, \(T\) is temperature, \(P\) is pressure, and \(b\) corrects for the volume.
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Volume in \(\mathrm{m}^3\ \mathrm{mol}^{-1}\)
- _abc_impl = <_abc._abc_data object>
- compressibility_factor(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray
Compressibility factor
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Compressibility factor, which is dimensionless
- dvdp(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Derivative of volume with respect to pressure
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Derivative of volume with respect to pressure
- dzdp(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Derivative of the compressibility factor with respect to pressure
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Derivative of the compressibility factor with respect to pressure
- fugacity(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Fugacity
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Fugacity in bar
- fugacity_coefficient(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Fugacity coefficient
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
fugacity coefficient, which is dimensionless
- log_activity(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Log activity
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Log activity, which is dimensionless
- log_fugacity(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Log fugacity
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Log fugacity in bar
- log_fugacity_coefficient(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Log fugacity coefficient
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Log fugacity coefficient, which is dimensionless
- pressure_from_fugacity(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, fugacity: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Calculate pressure from fugacity
- Parameters:
temperature – Temperature in K
fugacity – Fugacity in bar
- Returns:
Pressure in bar
- volume_integral_J(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Volume integral in J
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Volume integral in \(\mathrm{J}\ \mathrm{mol}^{-1}\)
- class atmodeller.eos.core.RedlichKwongImplicitABC
Bases:
RedlichKwongABCRedlich-Kwong EOS in an implicit form
\[P = \frac{RT}{V-b} - \frac{a}{\sqrt{T}V(V+b)}\]where \(P\) is pressure, \(T\) is temperature, \(V\) is the molar volume, \(R\) the gas constant, \(a\) corrects for the attractive potential of molecules, and \(b\) corrects for the volume.
- abstractmethod initial_volume(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray
Initial guess volume for the solution to ensure convergence to the correct root
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Initial volume in \(\mathrm{m}^3\ \mathrm{mol}^{-1}\)
- A_factor(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray
A factor [Holland and Powell, 1991, Appendix A]
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
A factor, which is dimensionless
- B_factor(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray
B factor [Holland and Powell, 1991, Appendix A]
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
B factor, which is dimensionless
- volume_integral(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Volume integral [Holland and Powell, 1991, Equation A.2]
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Volume integral in \(\mathrm{m}^3\ \mathrm{bar}\ \mathrm{mol}^{-1}\)
- log_fugacity(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Log fugacity
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Log fugacity
- _objective_function(volume: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, kwargs: dict[str, Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray]) Array
Objective function to solve for the volume
- Parameters:
volume – Volume in \(\mathrm{m}^3\ \mathrm{mol}^{-1}\)
kwargs – Dictionary with other required parameters
- Returns:
Residual of the objective function
- volume(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray
Solves the RK equation numerically to compute the volume.
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Volume in \(\mathrm{m}^3\ \mathrm{mol}^{-1}\)
- _abc_impl = <_abc._abc_data object>
- abstractmethod a(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray
Gets the a parameter
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
a parameter in \((\mathrm{m}^3\ \mathrm{mol}^{-1})^2\ \mathrm{K}^{1/2}\ \mathrm{bar}\)
- abstractmethod b() Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray
Gets the b parameter
- Returns:
b parameter in \(\mathrm{m}^3\ \mathrm{mol}^{-1}\)
- compressibility_factor(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray
Compressibility factor
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Compressibility factor, which is dimensionless
- dvdp(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Derivative of volume with respect to pressure
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Derivative of volume with respect to pressure
- dzdp(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Derivative of the compressibility factor with respect to pressure
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Derivative of the compressibility factor with respect to pressure
- fugacity(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Fugacity
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Fugacity in bar
- fugacity_coefficient(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Fugacity coefficient
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
fugacity coefficient, which is dimensionless
- log_activity(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Log activity
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Log activity, which is dimensionless
- log_fugacity_coefficient(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Log fugacity coefficient
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Log fugacity coefficient, which is dimensionless
- pressure_from_fugacity(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, fugacity: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Calculate pressure from fugacity
- Parameters:
temperature – Temperature in K
fugacity – Fugacity in bar
- Returns:
Pressure in bar
- volume_integral_J(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Volume integral in J
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Volume integral in \(\mathrm{J}\ \mathrm{mol}^{-1}\)
- class atmodeller.eos.core.RedlichKwongImplicitDenseFluidABC
Bases:
RedlichKwongImplicitABCMRK for the high density fluid phase :cite:p`HP91{Equation 6}`
- initial_volume(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray
Initial guess volume to ensure convergence to the correct root
For the dense fluid phase a suitably low value must be chosen [Holland and Powell, 1991, Appendix].
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Initial volume in \(\mathrm{m}^3\ \mathrm{mol}^{-1}\)
- A_factor(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray
A factor [Holland and Powell, 1991, Appendix A]
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
A factor, which is dimensionless
- B_factor(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray
B factor [Holland and Powell, 1991, Appendix A]
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
B factor, which is dimensionless
- _abc_impl = <_abc._abc_data object>
- _objective_function(volume: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, kwargs: dict[str, Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray]) Array
Objective function to solve for the volume
- Parameters:
volume – Volume in \(\mathrm{m}^3\ \mathrm{mol}^{-1}\)
kwargs – Dictionary with other required parameters
- Returns:
Residual of the objective function
- abstractmethod a(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray
Gets the a parameter
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
a parameter in \((\mathrm{m}^3\ \mathrm{mol}^{-1})^2\ \mathrm{K}^{1/2}\ \mathrm{bar}\)
- abstractmethod b() Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray
Gets the b parameter
- Returns:
b parameter in \(\mathrm{m}^3\ \mathrm{mol}^{-1}\)
- compressibility_factor(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray
Compressibility factor
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Compressibility factor, which is dimensionless
- dvdp(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Derivative of volume with respect to pressure
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Derivative of volume with respect to pressure
- dzdp(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Derivative of the compressibility factor with respect to pressure
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Derivative of the compressibility factor with respect to pressure
- fugacity(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Fugacity
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Fugacity in bar
- fugacity_coefficient(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Fugacity coefficient
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
fugacity coefficient, which is dimensionless
- log_activity(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Log activity
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Log activity, which is dimensionless
- log_fugacity(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Log fugacity
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Log fugacity
- log_fugacity_coefficient(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Log fugacity coefficient
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Log fugacity coefficient, which is dimensionless
- pressure_from_fugacity(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, fugacity: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Calculate pressure from fugacity
- Parameters:
temperature – Temperature in K
fugacity – Fugacity in bar
- Returns:
Pressure in bar
- volume(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray
Solves the RK equation numerically to compute the volume.
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Volume in \(\mathrm{m}^3\ \mathrm{mol}^{-1}\)
- volume_integral(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Volume integral [Holland and Powell, 1991, Equation A.2]
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Volume integral in \(\mathrm{m}^3\ \mathrm{bar}\ \mathrm{mol}^{-1}\)
- volume_integral_J(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Volume integral in J
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Volume integral in \(\mathrm{J}\ \mathrm{mol}^{-1}\)
- class atmodeller.eos.core.RedlichKwongImplicitGasABC
Bases:
RedlichKwongImplicitABCMRK for the low density gaseous phase [Holland and Powell, 1991, Equation 6a]
- initial_volume(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray
Initial guess volume to ensure convergence to the correct root
For the gaseous phase a suitably high value must be chosen [Holland and Powell, 1991, Appendix].
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Initial volume in \(\mathrm{m}^3\ \mathrm{mol}^{-1}\)
- A_factor(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray
A factor [Holland and Powell, 1991, Appendix A]
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
A factor, which is dimensionless
- B_factor(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray
B factor [Holland and Powell, 1991, Appendix A]
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
B factor, which is dimensionless
- _abc_impl = <_abc._abc_data object>
- _objective_function(volume: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, kwargs: dict[str, Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray]) Array
Objective function to solve for the volume
- Parameters:
volume – Volume in \(\mathrm{m}^3\ \mathrm{mol}^{-1}\)
kwargs – Dictionary with other required parameters
- Returns:
Residual of the objective function
- abstractmethod a(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray
Gets the a parameter
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
a parameter in \((\mathrm{m}^3\ \mathrm{mol}^{-1})^2\ \mathrm{K}^{1/2}\ \mathrm{bar}\)
- abstractmethod b() Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray
Gets the b parameter
- Returns:
b parameter in \(\mathrm{m}^3\ \mathrm{mol}^{-1}\)
- compressibility_factor(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray
Compressibility factor
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Compressibility factor, which is dimensionless
- dvdp(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Derivative of volume with respect to pressure
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Derivative of volume with respect to pressure
- dzdp(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Derivative of the compressibility factor with respect to pressure
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Derivative of the compressibility factor with respect to pressure
- fugacity(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Fugacity
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Fugacity in bar
- fugacity_coefficient(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Fugacity coefficient
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
fugacity coefficient, which is dimensionless
- log_activity(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Log activity
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Log activity, which is dimensionless
- log_fugacity(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Log fugacity
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Log fugacity
- log_fugacity_coefficient(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Log fugacity coefficient
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Log fugacity coefficient, which is dimensionless
- pressure_from_fugacity(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, fugacity: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Calculate pressure from fugacity
- Parameters:
temperature – Temperature in K
fugacity – Fugacity in bar
- Returns:
Pressure in bar
- volume(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray
Solves the RK equation numerically to compute the volume.
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Volume in \(\mathrm{m}^3\ \mathrm{mol}^{-1}\)
- volume_integral(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Volume integral [Holland and Powell, 1991, Equation A.2]
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Volume integral in \(\mathrm{m}^3\ \mathrm{bar}\ \mathrm{mol}^{-1}\)
- volume_integral_J(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Volume integral in J
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Volume integral in \(\mathrm{J}\ \mathrm{mol}^{-1}\)
- class atmodeller.eos.core.VirialCompensation(a_coefficients: Any, b_coefficients: Any, c_coefficients: Any, P0: Any)
Bases:
ModuleA virial compensation term for the increasing deviation of the MRK volumes with pressure
General form of the equation Holland and Powell [1998] and also see Holland and Powell [1991, Equations 4 and 9]:
\[V_\mathrm{virial} = a(P-P0) + b(P-P0)^\frac{1}{2} + c(P-P0)^\frac{1}{4}\]This form also works for the virial compensation term from Holland and Powell [1991], in which case \(c=0\).
Although this looks similar to an EOS, it only calculates an additional perturbation to the volume and the volume integral of an MRK EOS, and hence it does not return a meaningful volume or volume integral by itself.
- Parameters:
a_coefficients – Coefficients for a polynomial of the form \(a=a_0+a_1 T\).
b_coefficients – As above for the b coefficients
c_coefficients – As above for the c coefficients
P0 – Pressure at which the MRK equation begins to overestimate the molar volume significantly and may be determined from experimental data.
- a_coefficients: tuple[float, ...]
Coefficients for a polynomial of the form \(a=a_0+a_1 T\)
- b_coefficients: tuple[float, ...]
As above for the b coefficients
- c_coefficients: tuple[float, ...]
As above for the c coefficients
- P0: float
Pressure at which the MRK equation begins to overestimate the molar volume significantly
- _a(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, critical_data: CriticalData) Array
a parameter [Holland and Powell, 1998]
This is also the d parameter in Holland and Powell [1991].
- Parameters:
temperature – Temperature in K
critical_data – Critical data
- Returns:
a parameter in \(\mathrm{m}^3\ \mathrm{mol}^{-1}\ \mathrm{bar}^{-1}\)
- _b(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, critical_data: CriticalData) Array
b parameter [Holland and Powell, 1998]
This is also the c parameter in Holland and Powell [1991].
- Parameters:
temperature – Temperature in K
critical_data – Critical data
- Returns:
b parameter in \(\mathrm{m}^3\ \mathrm{mol}^{-1}\ \mathrm{bar}^{-1/2}\)
- _c(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, critical_data: CriticalData) Array
c parameter [Holland and Powell, 1998]
- Parameters:
temperature – Temperature in K
critical_data – Critical data
- Returns:
c parameter in \(\mathrm{m}^3\ \mathrm{mol}^{-1}\ \mathrm{bar}^{-1/4}\)
- _delta_pressure(pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Pressure difference
- Parameters:
pressure – Pressure in bar
- Returns:
Pressure difference relative to
P0in bar
- volume(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, critical_data: CriticalData) Array
Volume contribution
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
critical_data – Critical data
- Returns:
Volume contribution in \(\mathrm{m}^3\ \mathrm{mol}^{-1}\)
- volume_integral(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, critical_data: CriticalData) Array
Volume integral \(V dP\) contribution
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
critical_data – Critical data
- Returns:
Volume integral contribution in \(\mathrm{m}^3\ \mathrm{bar}\ \mathrm{mol}^{-1}\)
- _abc_impl = <_abc._abc_data object>
- class atmodeller.eos.core.CORK(mrk: RealGas, virial: VirialCompensation, critical_data: CriticalData)
Bases:
RealGasA Compensated-Redlich-Kwong (CORK) EOS [Holland and Powell, 1991]
- Parameters:
mrk – MRK model
virial – Virial compensation term
critical_data – Critical data
- _abc_impl = <_abc._abc_data object>
- compressibility_factor(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray
Compressibility factor
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Compressibility factor, which is dimensionless
- dvdp(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Derivative of volume with respect to pressure
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Derivative of volume with respect to pressure
- dzdp(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Derivative of the compressibility factor with respect to pressure
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Derivative of the compressibility factor with respect to pressure
- fugacity(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Fugacity
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Fugacity in bar
- fugacity_coefficient(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Fugacity coefficient
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
fugacity coefficient, which is dimensionless
- log_activity(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Log activity
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Log activity, which is dimensionless
- log_fugacity(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Log fugacity
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Log fugacity in bar
- log_fugacity_coefficient(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Log fugacity coefficient
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Log fugacity coefficient, which is dimensionless
- pressure_from_fugacity(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, fugacity: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Calculate pressure from fugacity
- Parameters:
temperature – Temperature in K
fugacity – Fugacity in bar
- Returns:
Pressure in bar
- volume_integral_J(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Volume integral in J
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Volume integral in \(\mathrm{J}\ \mathrm{mol}^{-1}\)
- virial: VirialCompensation
Virial compensation term
- critical_data: CriticalData
Critical data
- volume(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray
Volume [Holland and Powell, 1991, Equation 7a]
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Volume in \(\mathrm{m}^3\ \mathrm{mol}^{-1}\)
- volume_integral(temperature: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray, pressure: Array | ndarray | bool | number | bool | int | float | complex | TypedNdArray) Array
Volume integral [Holland and Powell, 1991, Equation 8]
- Parameters:
temperature – Temperature in K
pressure – Pressure in bar
- Returns:
Volume integral in \(\mathrm{m}^3\ \mathrm{bar}\ \mathrm{mol}^{-1}\)
atmodeller.eos.library module
Real gas EOS library
from atmodeller.eos.library import get_eos_models
eos_models = get_eos_models()
CH4_beattie = eos_models["CH4_beattie_holley58"]
# Evaluate fugacity at 10 bar and 800 K
fugacity = CH4_beattie.fugacity(800, 10)
print(fugacity)
- atmodeller.eos.library.get_eos_models() dict[str, RealGasBase]
Gets a dictionary of EOS models
- Returns:
Dictionary of EOS models
Module contents
EOS package
- atmodeller.eos.DATA_DIRECTORY: Traversable = PosixPath('/home/docs/checkouts/readthedocs.org/user_builds/atmodeller/checkouts/latest/atmodeller/eos/data')
Data directory, which is the same as the package directory
- atmodeller.eos.ABSOLUTE_TOLERANCE: float = 1e-12
Absolute tolerance when solving for the volume in \(\mathrm{m}^3\ \mathrm{mol}^{-1}\)
- atmodeller.eos.RELATIVE_TOLERANCE: float = 1e-06
Relative tolerance when solving for the volume in \(\mathrm{m}^3\ \mathrm{mol}^{-1}\)
- atmodeller.eos.THROW: bool = False
Whether to throw errors. Change to
Truefor debugging purposes.
- atmodeller.eos.VOLUME_EPSILON: float = 1e-12
Small volume offset in \(\mathrm{m}^3\ \mathrm{mol}^{-1}\)