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
4 changes: 2 additions & 2 deletions src/cubic.rs
Original file line number Diff line number Diff line change
Expand Up @@ -254,7 +254,7 @@ impl MolarWeight<SIUnit> for PengRobinson {
#[cfg(test)]
mod tests {
use super::*;
use crate::phase_equilibria::VLEOptions;
use crate::phase_equilibria::SolverOptions;
use crate::state::State;
use crate::Contributions;
use crate::{EosResult, Verbosity};
Expand Down Expand Up @@ -309,7 +309,7 @@ mod tests {
let parameters =
PengRobinsonParameters::from_records(vec![propane.clone()], Array2::zeros((1, 1)));
let pr = Rc::new(PengRobinson::new(Rc::new(parameters)));
let options = VLEOptions::new().verbosity(Verbosity::Iter);
let options = SolverOptions::new().verbosity(Verbosity::Iter);
let cp = State::critical_point(&pr, None, None, options)?;
println!("{} {}", cp.temperature, cp.pressure(Contributions::Total));
assert_relative_eq!(cp.temperature, tc * KELVIN, max_relative = 1e-4);
Expand Down
2 changes: 1 addition & 1 deletion src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ pub use equation_of_state::{
};
pub use errors::{EosError, EosResult};
pub use phase_equilibria::{
PhaseDiagramBinary, PhaseDiagramHetero, PhaseDiagramPure, PhaseEquilibrium, VLEOptions,
PhaseDiagramBinary, PhaseDiagramHetero, PhaseDiagramPure, PhaseEquilibrium, SolverOptions,
Verbosity,
};
pub use state::{Contributions, DensityInitialization, State, StateBuilder, StateHD};
Expand Down
14 changes: 7 additions & 7 deletions src/phase_equilibria/bubble_dew.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
use super::{PhaseEquilibrium, VLEOptions, Verbosity};
use super::{PhaseEquilibrium, SolverOptions, Verbosity};
use crate::errors::{EosError, EosResult};
use crate::state::{
Contributions,
Expand Down Expand Up @@ -75,7 +75,7 @@ impl<U: EosUnit, E: EquationOfState> PhaseEquilibrium<U, E, 2> {
pressure: Option<QuantityScalar<U>>,
liquid_molefracs: &Array1<f64>,
vapor_molefracs: Option<&Array1<f64>>,
options: (VLEOptions, VLEOptions),
options: (SolverOptions, SolverOptions),
) -> EosResult<Self>
where
QuantityScalar<U>: std::fmt::Display,
Expand All @@ -99,7 +99,7 @@ impl<U: EosUnit, E: EquationOfState> PhaseEquilibrium<U, E, 2> {
temperature: Option<QuantityScalar<U>>,
liquid_molefracs: &Array1<f64>,
vapor_molefracs: Option<&Array1<f64>>,
options: (VLEOptions, VLEOptions),
options: (SolverOptions, SolverOptions),
) -> EosResult<Self>
where
QuantityScalar<U>: std::fmt::Display,
Expand All @@ -123,7 +123,7 @@ impl<U: EosUnit, E: EquationOfState> PhaseEquilibrium<U, E, 2> {
pressure: Option<QuantityScalar<U>>,
vapor_molefracs: &Array1<f64>,
liquid_molefracs: Option<&Array1<f64>>,
options: (VLEOptions, VLEOptions),
options: (SolverOptions, SolverOptions),
) -> EosResult<Self>
where
QuantityScalar<U>: std::fmt::Display,
Expand All @@ -147,7 +147,7 @@ impl<U: EosUnit, E: EquationOfState> PhaseEquilibrium<U, E, 2> {
temperature: Option<QuantityScalar<U>>,
vapor_molefracs: &Array1<f64>,
liquid_molefracs: Option<&Array1<f64>>,
options: (VLEOptions, VLEOptions),
options: (SolverOptions, SolverOptions),
) -> EosResult<Self>
where
QuantityScalar<U>: std::fmt::Display,
Expand All @@ -170,7 +170,7 @@ impl<U: EosUnit, E: EquationOfState> PhaseEquilibrium<U, E, 2> {
molefracs_spec: &Array1<f64>,
molefracs_init: Option<&Array1<f64>>,
bubble: bool,
options: (VLEOptions, VLEOptions),
options: (SolverOptions, SolverOptions),
) -> EosResult<Self>
where
QuantityScalar<U>: std::fmt::Display,
Expand Down Expand Up @@ -259,7 +259,7 @@ fn bubble_dew<U: EosUnit, E: EquationOfState>(
mut var_tp: TPSpec<U>,
mut state1: State<U, E>,
mut state2: State<U, E>,
options: (VLEOptions, VLEOptions),
options: (SolverOptions, SolverOptions),
) -> EosResult<PhaseEquilibrium<U, E, 2>>
where
QuantityScalar<U>: std::fmt::Display,
Expand Down
6 changes: 3 additions & 3 deletions src/phase_equilibria/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ impl Default for Verbosity {
/// If the values are [None], solver specific default
/// values are used.
#[derive(Copy, Clone, Default)]
pub struct VLEOptions {
pub struct SolverOptions {
/// Maximum number of iterations.
pub max_iter: Option<usize>,
/// Tolerance.
Expand All @@ -47,7 +47,7 @@ pub struct VLEOptions {
pub verbosity: Verbosity,
}

impl From<(Option<usize>, Option<f64>, Option<Verbosity>)> for VLEOptions {
impl From<(Option<usize>, Option<f64>, Option<Verbosity>)> for SolverOptions {
fn from(options: (Option<usize>, Option<f64>, Option<Verbosity>)) -> Self {
Self {
max_iter: options.0,
Expand All @@ -57,7 +57,7 @@ impl From<(Option<usize>, Option<f64>, Option<Verbosity>)> for VLEOptions {
}
}

impl VLEOptions {
impl SolverOptions {
pub fn new() -> Self {
Self::default()
}
Expand Down
36 changes: 18 additions & 18 deletions src/phase_equilibria/phase_diagram_binary.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
use super::{PhaseEquilibrium, VLEOptions};
use super::{PhaseEquilibrium, SolverOptions};
use crate::equation_of_state::EquationOfState;
use crate::errors::{EosError, EosResult};
use num_dual::linalg::{norm, LU};
Expand Down Expand Up @@ -34,7 +34,7 @@ impl<U: EosUnit, E: EquationOfState> PhaseDiagramBinary<U, E> {
pressure: QuantityScalar<U>,
npoints: Option<usize>,
x_lle: Option<(f64, f64)>,
bubble_dew_options: (VLEOptions, VLEOptions),
bubble_dew_options: (SolverOptions, SolverOptions),
) -> EosResult<Self>
where
QuantityScalar<U>: std::fmt::Display + std::fmt::LowerExp,
Expand All @@ -58,7 +58,7 @@ impl<U: EosUnit, E: EquationOfState> PhaseDiagramBinary<U, E> {
temperature: QuantityScalar<U>,
npoints: Option<usize>,
x_lle: Option<(f64, f64)>,
bubble_dew_options: (VLEOptions, VLEOptions),
bubble_dew_options: (SolverOptions, SolverOptions),
) -> EosResult<Self>
where
QuantityScalar<U>: std::fmt::Display + std::fmt::LowerExp,
Expand All @@ -77,7 +77,7 @@ impl<U: EosUnit, E: EquationOfState> PhaseDiagramBinary<U, E> {
tp: TPSpec<U>,
npoints: Option<usize>,
x_lle: Option<(f64, f64)>,
bubble_dew_options: (VLEOptions, VLEOptions),
bubble_dew_options: (SolverOptions, SolverOptions),
) -> EosResult<Self>
where
QuantityScalar<U>: std::fmt::Display + std::fmt::LowerExp,
Expand Down Expand Up @@ -110,12 +110,12 @@ impl<U: EosUnit, E: EquationOfState> PhaseDiagramBinary<U, E> {
let (x_lim, vle_lim, bubble) = match vle_sat {
[None, None] => return Err(EosError::SuperCritical()),
[Some(vle2), None] => {
let cp = State::critical_point_binary(eos, tp, VLEOptions::default())?;
let cp = State::critical_point_binary(eos, tp, SolverOptions::default())?;
let cp_vle = PhaseEquilibrium::from_states(cp.clone(), cp.clone());
([0.0, cp.molefracs[0]], (vle2, cp_vle), bubble)
}
[None, Some(vle1)] => {
let cp = State::critical_point_binary(eos, tp, VLEOptions::default())?;
let cp = State::critical_point_binary(eos, tp, SolverOptions::default())?;
let cp_vle = PhaseEquilibrium::from_states(cp.clone(), cp.clone());
([1.0, cp.molefracs[0]], (vle1, cp_vle), bubble)
}
Expand Down Expand Up @@ -145,7 +145,7 @@ impl<U: EosUnit, E: EquationOfState> PhaseDiagramBinary<U, E> {
npoints: usize,
x_lle: (f64, f64),
vle_sat: [Option<PhaseEquilibrium<U, E, 2>>; 2],
bubble_dew_options: (VLEOptions, VLEOptions),
bubble_dew_options: (SolverOptions, SolverOptions),
) -> EosResult<(
Vec<PhaseEquilibrium<U, E, 2>>,
Vec<PhaseEquilibrium<U, E, 2>>,
Expand Down Expand Up @@ -263,7 +263,7 @@ impl<U: EosUnit, E: EquationOfState> PhaseDiagramBinary<U, E> {
p,
&feed,
vle.as_ref(),
VLEOptions::default(),
SolverOptions::default(),
None,
)
.ok();
Expand Down Expand Up @@ -313,7 +313,7 @@ fn iterate_vle<U: EosUnit, E: EquationOfState>(
vle_1: Option<PhaseEquilibrium<U, E, 2>>,
npoints: usize,
bubble: bool,
bubble_dew_options: (VLEOptions, VLEOptions),
bubble_dew_options: (SolverOptions, SolverOptions),
) -> Vec<PhaseEquilibrium<U, E, 2>>
where
QuantityScalar<U>: std::fmt::Display + std::fmt::LowerExp,
Expand Down Expand Up @@ -393,7 +393,7 @@ impl<U: EosUnit, E: EquationOfState> PhaseDiagramHetero<U, E> {
min_temperature_lle: Option<QuantityScalar<U>>,
npoints_vle: Option<usize>,
npoints_lle: Option<usize>,
bubble_dew_options: (VLEOptions, VLEOptions),
bubble_dew_options: (SolverOptions, SolverOptions),
) -> EosResult<Self>
where
QuantityScalar<U>: std::fmt::Display + std::fmt::LowerExp,
Expand Down Expand Up @@ -421,7 +421,7 @@ impl<U: EosUnit, E: EquationOfState> PhaseDiagramHetero<U, E> {
max_pressure_lle: Option<QuantityScalar<U>>,
npoints_vle: Option<usize>,
npoints_lle: Option<usize>,
bubble_dew_options: (VLEOptions, VLEOptions),
bubble_dew_options: (SolverOptions, SolverOptions),
) -> EosResult<Self>
where
QuantityScalar<U>: std::fmt::Display + std::fmt::LowerExp,
Expand All @@ -444,7 +444,7 @@ impl<U: EosUnit, E: EquationOfState> PhaseDiagramHetero<U, E> {
tp_lim_lle: Option<QuantityScalar<U>>,
npoints_vle: Option<usize>,
npoints_lle: Option<usize>,
bubble_dew_options: (VLEOptions, VLEOptions),
bubble_dew_options: (SolverOptions, SolverOptions),
) -> EosResult<Self>
where
QuantityScalar<U>: std::fmt::Display + std::fmt::LowerExp,
Expand All @@ -461,14 +461,14 @@ impl<U: EosUnit, E: EquationOfState> PhaseDiagramHetero<U, E> {
eos,
t,
x_lle,
VLEOptions::default(),
SolverOptions::default(),
bubble_dew_options,
),
TPSpec::Pressure(p) => PhaseEquilibrium::heteroazeotrope_p(
eos,
p,
x_lle,
VLEOptions::default(),
SolverOptions::default(),
bubble_dew_options,
),
}?;
Expand Down Expand Up @@ -536,8 +536,8 @@ where
eos: &Rc<E>,
temperature: QuantityScalar<U>,
x_init: (f64, f64),
options: VLEOptions,
bubble_dew_options: (VLEOptions, VLEOptions),
options: SolverOptions,
bubble_dew_options: (SolverOptions, SolverOptions),
) -> EosResult<Self> {
// calculate initial values using bubble point
let x1 = arr1(&[x_init.0, 1.0 - x_init.0]);
Expand Down Expand Up @@ -687,8 +687,8 @@ where
eos: &Rc<E>,
pressure: QuantityScalar<U>,
x_init: (f64, f64),
options: VLEOptions,
bubble_dew_options: (VLEOptions, VLEOptions),
options: SolverOptions,
bubble_dew_options: (SolverOptions, SolverOptions),
) -> EosResult<Self> {
let p = pressure.to_reduced(U::reference_pressure())?;

Expand Down
6 changes: 3 additions & 3 deletions src/phase_equilibria/phase_diagram_pure.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
use super::{PhaseEquilibrium, VLEOptions};
use super::{PhaseEquilibrium, SolverOptions};
use crate::equation_of_state::EquationOfState;
use crate::errors::EosResult;
use crate::state::{Contributions, State};
Expand All @@ -20,14 +20,14 @@ impl<U: EosUnit, E: EquationOfState> PhaseDiagramPure<U, E> {
min_temperature: QuantityScalar<U>,
npoints: usize,
critical_temperature: Option<QuantityScalar<U>>,
options: VLEOptions,
options: SolverOptions,
) -> EosResult<Self>
where
QuantityScalar<U>: std::fmt::Display + std::fmt::LowerExp,
{
let mut states = Vec::with_capacity(npoints);

let sc = State::critical_point(eos, None, critical_temperature, VLEOptions::default())?;
let sc = State::critical_point(eos, None, critical_temperature, SolverOptions::default())?;

let max_temperature = min_temperature
+ (sc.temperature - min_temperature) * ((npoints - 2) as f64 / (npoints - 1) as f64);
Expand Down
8 changes: 4 additions & 4 deletions src/phase_equilibria/stability_analysis.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
use super::{PhaseEquilibrium, VLEOptions, Verbosity};
use super::{PhaseEquilibrium, SolverOptions, Verbosity};
use crate::equation_of_state::EquationOfState;
use crate::errors::{EosError, EosResult};
use crate::state::{Contributions, DensityInitialization, State};
Expand All @@ -20,14 +20,14 @@ const ZERO_TPD: f64 = -1E-08;
impl<U: EosUnit, E: EquationOfState> State<U, E> {
/// Determine if the state is stable, i.e. if a phase split should
/// occur or not.
pub fn is_stable(&self, options: VLEOptions) -> EosResult<bool> {
pub fn is_stable(&self, options: SolverOptions) -> EosResult<bool> {
Ok(self.stability_analysis(options)?.is_empty())
}

/// Perform a stability analysis. The result is a list of [State]s with
/// negative tangent plane distance (i.e. lower Gibbs energy) that can be
/// used as initial estimates for a phase equilibrium calculation.
pub fn stability_analysis(&self, options: VLEOptions) -> EosResult<Vec<State<U, E>>> {
pub fn stability_analysis(&self, options: SolverOptions) -> EosResult<Vec<State<U, E>>> {
let mut result = Vec::new();
for i_trial in 0..self.eos.components() + 1 {
let phase = if i_trial == self.eos.components() {
Expand Down Expand Up @@ -94,7 +94,7 @@ impl<U: EosUnit, E: EquationOfState> State<U, E> {
fn minimize_tpd(
&self,
trial: &mut State<U, E>,
options: VLEOptions,
options: SolverOptions,
) -> EosResult<(Option<f64>, usize)> {
let (max_iter, tol, verbosity) = options.unwrap_or(MINIMIZE_KMAX, MINIMIZE_TOL);
let mut newton = false;
Expand Down
8 changes: 4 additions & 4 deletions src/phase_equilibria/tp_flash.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
use super::{PhaseEquilibrium, VLEOptions, Verbosity};
use super::{PhaseEquilibrium, SolverOptions, Verbosity};
use crate::equation_of_state::EquationOfState;
use crate::errors::{EosError, EosResult};
use crate::state::{Contributions, DensityInitialization, State};
Expand All @@ -24,7 +24,7 @@ impl<U: EosUnit, E: EquationOfState> PhaseEquilibrium<U, E, 2> {
pressure: QuantityScalar<U>,
feed: &QuantityArray1<U>,
init_vle_state: Option<&PhaseEquilibrium<U, E, 2>>,
options: VLEOptions,
options: SolverOptions,
non_volatile_components: Option<Vec<usize>>,
) -> EosResult<Self> {
State::new_npt(
Expand All @@ -49,7 +49,7 @@ impl<U: EosUnit, E: EquationOfState> State<U, E> {
pub fn tp_flash(
&self,
init_vle_state: Option<&PhaseEquilibrium<U, E, 2>>,
options: VLEOptions,
options: SolverOptions,
non_volatile_components: Option<Vec<usize>>,
) -> EosResult<PhaseEquilibrium<U, E, 2>> {
// set options
Expand Down Expand Up @@ -297,7 +297,7 @@ impl<U: EosUnit, E: EquationOfState> PhaseEquilibrium<U, E, 2> {
}

fn vle_init_stability(feed_state: &State<U, E>) -> EosResult<Self> {
let mut stable_states = feed_state.stability_analysis(VLEOptions::default())?;
let mut stable_states = feed_state.stability_analysis(SolverOptions::default())?;
let state1 = stable_states.pop();
let state2 = stable_states.pop();
match (state1, state2) {
Expand Down
Loading