Skip to content
This repository was archived by the owner on Jun 14, 2022. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions src/phase_equilibria/vle_pure.rs
Original file line number Diff line number Diff line change
Expand Up @@ -260,7 +260,7 @@ impl<U: EosUnit, E: EquationOfState> PhaseEquilibrium<U, E, 2> {
let density = 0.75 * eos.max_density(None)?;
let liquid = State::new_nvt(eos, temperature, U::reference_moles() / density, &m)?;
let z = liquid.compressibility(Contributions::Total);
let mu = liquid.chemical_potential(Contributions::Residual);
let mu = liquid.chemical_potential(Contributions::ResidualNvt);
let p = temperature
* density
* U::gas_constant()
Expand Down Expand Up @@ -427,7 +427,8 @@ impl<U: EosUnit, E: EquationOfState> PhaseEquilibrium<U, E, 2> {
(0..eos.components())
.map(|i| {
let pure_eos = Rc::new(eos.subset(&[i]));
PhaseEquilibrium::pure_t(&pure_eos, temperature, None, SolverOptions::default()).ok()
PhaseEquilibrium::pure_t(&pure_eos, temperature, None, SolverOptions::default())
.ok()
})
.collect()
}
Expand Down
29 changes: 15 additions & 14 deletions src/state/properties.rs
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,9 @@ pub enum Contributions {
/// Only compute the ideal gas contribution
IdealGas,
/// Only compute the difference between the total and the ideal gas contribution
Residual,
ResidualNvt,
/// Compute the differnce between the total and the ideal gas contribution for a (N,p,T) reference state
ResidualP,
ResidualNpt,
/// Compute ideal gas and residual contributions
Total,
}
Expand Down Expand Up @@ -144,14 +144,14 @@ impl<U: EosUnit, E: EquationOfState> State<U, E> {
match contributions {
Contributions::IdealGas => f(self, Evaluate::IdealGas),
Contributions::Total => f(self, Evaluate::Total),
Contributions::Residual => {
Contributions::ResidualNvt => {
if additive {
f(self, Evaluate::Residual)
} else {
f(self, Evaluate::Total) - f(self, Evaluate::IdealGas)
}
}
Contributions::ResidualP => {
Contributions::ResidualNpt => {
let p = self.pressure_(Evaluate::Total);
let state_p = Self::new_nvt(
&self.eos,
Expand Down Expand Up @@ -293,7 +293,8 @@ impl<U: EosUnit, E: EquationOfState> State<U, E> {

/// Logarithm of the fugacity coefficient: $\ln\varphi_i=\beta\mu_i^\mathrm{res}\left(T,p,\lbrace N_i\rbrace\right)$
pub fn ln_phi(&self) -> Array1<f64> {
(self.chemical_potential(Contributions::ResidualP) / (U::gas_constant() * self.temperature))
(self.chemical_potential(Contributions::ResidualNpt)
/ (U::gas_constant() * self.temperature))
.into_value()
.unwrap()
}
Expand All @@ -305,18 +306,18 @@ impl<U: EosUnit, E: EquationOfState> State<U, E> {
- s.chemical_potential_(evaluate) / self.temperature)
/ (U::gas_constant() * self.temperature)
};
self.evaluate_property(func, Contributions::ResidualP, false)
self.evaluate_property(func, Contributions::ResidualNpt, false)
}

/// Partial derivative of the logarithm of the fugacity coefficient w.r.t. pressure: $\left(\frac{\partial\ln\varphi_i}{\partial p}\right)_{T,N_i}$
pub fn dln_phi_dp(&self) -> QuantityArray1<U> {
self.molar_volume(Contributions::ResidualP) / (U::gas_constant() * self.temperature)
self.molar_volume(Contributions::ResidualNpt) / (U::gas_constant() * self.temperature)
}

/// Partial derivative of the logarithm of the fugacity coefficient w.r.t. moles: $\left(\frac{\partial\ln\varphi_i}{\partial N_j}\right)_{T,p,N_k}$
pub fn dln_phi_dnj(&self) -> QuantityArray2<U> {
let n = self.eos.components();
let dmu_dni = self.dmu_dni(Contributions::Residual);
let dmu_dni = self.dmu_dni(Contributions::ResidualNvt);
let dp_dni = self.dp_dni(Contributions::Total);
let dp_dv = self.dp_dv(Contributions::Total);
let dp_dn_2 = QuantityArray::from_shape_fn((n, n), |(i, j)| dp_dni.get(i) * dp_dni.get(j));
Expand Down Expand Up @@ -620,7 +621,7 @@ impl<U: EosUnit, E: EquationOfState + EntropyScaling<U>> State<U, E> {
/// Return the viscosity via entropy scaling.
pub fn viscosity(&self) -> EosResult<QuantityScalar<U>> {
let s = self
.molar_entropy(Contributions::Residual)
.molar_entropy(Contributions::ResidualNvt)
.to_reduced(U::reference_molar_entropy())?;
Ok(self
.eos
Expand All @@ -634,7 +635,7 @@ impl<U: EosUnit, E: EquationOfState + EntropyScaling<U>> State<U, E> {
/// that is used for entropy scaling.
pub fn ln_viscosity_reduced(&self) -> EosResult<f64> {
let s = self
.molar_entropy(Contributions::Residual)
.molar_entropy(Contributions::ResidualNvt)
.to_reduced(U::reference_molar_entropy())?;
self.eos.viscosity_correlation(s, &self.molefracs)
}
Expand All @@ -648,7 +649,7 @@ impl<U: EosUnit, E: EquationOfState + EntropyScaling<U>> State<U, E> {
/// Return the diffusion via entropy scaling.
pub fn diffusion(&self) -> EosResult<QuantityScalar<U>> {
let s = self
.molar_entropy(Contributions::Residual)
.molar_entropy(Contributions::ResidualNvt)
.to_reduced(U::reference_molar_entropy())?;
Ok(self
.eos
Expand All @@ -662,7 +663,7 @@ impl<U: EosUnit, E: EquationOfState + EntropyScaling<U>> State<U, E> {
/// that is used for entropy scaling.
pub fn ln_diffusion_reduced(&self) -> EosResult<f64> {
let s = self
.molar_entropy(Contributions::Residual)
.molar_entropy(Contributions::ResidualNvt)
.to_reduced(U::reference_molar_entropy())?;
self.eos.diffusion_correlation(s, &self.molefracs)
}
Expand All @@ -676,7 +677,7 @@ impl<U: EosUnit, E: EquationOfState + EntropyScaling<U>> State<U, E> {
/// Return the thermal conductivity via entropy scaling.
pub fn thermal_conductivity(&self) -> EosResult<QuantityScalar<U>> {
let s = self
.molar_entropy(Contributions::Residual)
.molar_entropy(Contributions::ResidualNvt)
.to_reduced(U::reference_molar_entropy())?;
Ok(self
.eos
Expand All @@ -693,7 +694,7 @@ impl<U: EosUnit, E: EquationOfState + EntropyScaling<U>> State<U, E> {
/// that is used for entropy scaling.
pub fn ln_thermal_conductivity_reduced(&self) -> EosResult<f64> {
let s = self
.molar_entropy(Contributions::Residual)
.molar_entropy(Contributions::ResidualNvt)
.to_reduced(U::reference_molar_entropy())?;
self.eos
.thermal_conductivity_correlation(s, &self.molefracs)
Expand Down