diff --git a/benches/state_properties.rs b/benches/state_properties.rs
index db4373568..ae4207530 100644
--- a/benches/state_properties.rs
+++ b/benches/state_properties.rs
@@ -68,5 +68,38 @@ fn properties_pcsaft(c: &mut Criterion) {
});
}
-criterion_group!(bench, properties_pcsaft);
+fn properties_pcsaft_polar(c: &mut Criterion) {
+ let parameters = PcSaftParameters::from_json(
+ vec!["acetone", "butanal", "dimethyl ether"],
+ "./parameters/pcsaft/gross2006.json",
+ None,
+ IdentifierOption::Name,
+ )
+ .unwrap();
+ let eos = Arc::new(PcSaft::new(Arc::new(parameters)));
+ let t = 300.0 * KELVIN;
+ let density = 71.18 * KILO * MOL / METER.powi(3);
+ let v = 100.0 * MOL / density;
+ let x = arr1(&[1.0 / 3.0, 1.0 / 3.0, 1.0 / 3.0]);
+ let m = &x * 100.0 * MOL;
+
+ let mut group = c.benchmark_group("state_properties_pcsaft_polar");
+ group.bench_function("a", |b| {
+ b.iter(|| property((&eos, S::helmholtz_energy, t, v, &m, Contributions::Total)))
+ });
+ group.bench_function("compressibility", |b| {
+ b.iter(|| property((&eos, S::compressibility, t, v, &m, Contributions::Total)))
+ });
+ group.bench_function("ln_phi", |b| {
+ b.iter(|| property_no_contributions((&eos, S::ln_phi, t, v, &m)))
+ });
+ group.bench_function("c_v", |b| {
+ b.iter(|| property((&eos, S::c_v, t, v, &m, Contributions::ResidualNvt)))
+ });
+ group.bench_function("molar_volume", |b| {
+ b.iter(|| property((&eos, S::molar_volume, t, v, &m, Contributions::ResidualNvt)))
+ });
+}
+
+criterion_group!(bench, properties_pcsaft, properties_pcsaft_polar);
criterion_main!(bench);
diff --git a/src/association/mod.rs b/src/association/mod.rs
index eb0e304f3..3691ac466 100644
--- a/src/association/mod.rs
+++ b/src/association/mod.rs
@@ -80,12 +80,14 @@ impl AssociationParameters {
for (i, record) in records.iter().enumerate() {
if let Some(record) = record.as_ref() {
- assoc_comp.push(i);
- sigma_assoc.push(sigma[i]);
- kappa_ab.push(record.kappa_ab);
- epsilon_k_ab.push(record.epsilon_k_ab);
- na.push(record.na.unwrap_or(1.0));
- nb.push(record.nb.unwrap_or(1.0));
+ if record.kappa_ab > 0.0 && record.epsilon_k_ab > 0.0 {
+ assoc_comp.push(i);
+ sigma_assoc.push(sigma[i]);
+ kappa_ab.push(record.kappa_ab);
+ epsilon_k_ab.push(record.epsilon_k_ab);
+ na.push(record.na.unwrap_or(1.0));
+ nb.push(record.nb.unwrap_or(1.0));
+ }
}
}
@@ -238,21 +240,14 @@ impl
fmt::Display for Association
{
impl Association {
pub fn assoc_site_frac_ab>(deltarho: D, na: f64, nb: f64) -> D {
- if deltarho.re() > f64::EPSILON.sqrt() {
- (((deltarho * (na - nb) + 1.0).powi(2) + deltarho * nb * 4.0).sqrt()
- - (deltarho * (nb - na) + 1.0))
- / (deltarho * na * 2.0)
- } else {
- D::one() + deltarho * nb * (deltarho * (nb + na) - 1.0)
- }
+ (((deltarho * (na - nb) + 1.0).powi(2) + deltarho * nb * 4.0).sqrt()
+ + (deltarho * (nb - na) + 1.0))
+ .recip()
+ * (2.0 * nb / na)
}
pub fn assoc_site_frac_a>(deltarho: D, na: f64) -> D {
- if deltarho.re() > f64::EPSILON.sqrt() {
- ((deltarho * na * 4.0 + 1.0).powi(2) - 1.0).sqrt() / (deltarho * na * 2.0)
- } else {
- D::one() + deltarho * na * (deltarho * na * 2.0 - 1.0)
- }
+ ((deltarho * 4.0 * na + 1.0).sqrt() + 1.0).recip() * 2.0
}
#[allow(clippy::too_many_arguments)]
diff --git a/src/pcsaft/eos/polar.rs b/src/pcsaft/eos/polar.rs
index 704da0059..b94df9087 100644
--- a/src/pcsaft/eos/polar.rs
+++ b/src/pcsaft/eos/polar.rs
@@ -99,39 +99,20 @@ impl MeanSegmentNumbers {
Multipole::Quadrupole => (parameters.nquadpole, ¶meters.quadpole_comp),
};
- let mut mi;
- let mut mj;
- let mut mk;
- let mut mij;
- let mut mijk;
let mut mij1 = Array2::zeros((npoles, npoles));
let mut mij2 = Array2::zeros((npoles, npoles));
let mut mijk1 = Array3::zeros((npoles, npoles, npoles));
let mut mijk2 = Array3::zeros((npoles, npoles, npoles));
for i in 0..npoles {
- let dci = comp[i];
- mi = parameters.m[dci].min(2.0);
- mij1[[i, i]] = (mi - 1.0) / mi;
- mij2[[i, i]] = mij1[[i, i]] * (mi - 2.0) / mi;
-
- mijk1[[i, i, i]] = mij1[[i, i]];
- mijk2[[i, i, i]] = mij2[[i, i]];
- for j in i + 1..npoles {
- let dcj = comp[j];
- mj = parameters.m[dcj].min(2.0);
- mij = (mi * mj).sqrt();
+ let mi = parameters.m[comp[i]].min(2.0);
+ for j in i..npoles {
+ let mj = parameters.m[comp[j]].min(2.0);
+ let mij = (mi * mj).sqrt();
mij1[[i, j]] = (mij - 1.0) / mij;
mij2[[i, j]] = mij1[[i, j]] * (mij - 2.0) / mij;
- mijk = (mi * mi * mj).cbrt();
- mijk1[[i, i, j]] = (mijk - 1.0) / mijk;
- mijk2[[i, i, j]] = mijk1[[i, i, j]] * (mijk - 2.0) / mijk;
- mijk = (mi * mj * mj).cbrt();
- mijk1[[i, j, j]] = (mijk - 1.0) / mijk;
- mijk2[[i, j, j]] = mijk1[[i, j, j]] * (mijk - 2.0) / mijk;
- for k in j + 1..npoles {
- let dck = comp[k];
- mk = parameters.m[dck].min(2.0);
- mijk = (mi * mj * mk).cbrt();
+ for k in j..npoles {
+ let mk = parameters.m[comp[k]].min(2.0);
+ let mijk = (mi * mj * mk).cbrt();
mijk1[[i, j, k]] = (mijk - 1.0) / mijk;
mijk2[[i, j, k]] = mijk1[[i, j, k]] * (mijk - 2.0) / mijk;
}
@@ -149,34 +130,27 @@ impl MeanSegmentNumbers {
fn pair_integral_ij>(
mij1: f64,
mij2: f64,
- eta: D,
+ etas: &[D],
a: &[[f64; 3]],
b: &[[f64; 3]],
eps_ij_t: D,
) -> D {
- let eta2 = eta * eta;
- let etas = [D::one(), eta, eta2, eta2 * eta, eta2 * eta2];
(0..a.len())
.map(|i| {
etas[i]
* (eps_ij_t * (b[i][0] + mij1 * b[i][1] + mij2 * b[i][2])
- + a[i][0]
- + mij1 * a[i][1]
- + mij2 * a[i][2])
+ + (a[i][0] + mij1 * a[i][1] + mij2 * a[i][2]))
})
.sum()
}
-fn triplet_integral_ijk>(mijk1: f64, mijk2: f64, eta: D, c: &[[f64; 3]]) -> D {
- let eta2 = eta * eta;
- let etas = [D::one(), eta, eta2, eta2 * eta];
+fn triplet_integral_ijk>(mijk1: f64, mijk2: f64, etas: &[D], c: &[[f64; 3]]) -> D {
(0..c.len())
.map(|i| etas[i] * (c[i][0] + mijk1 * c[i][1] + mijk2 * c[i][2]))
.sum()
}
-fn triplet_integral_ijk_dq>(mijk: f64, eta: D, c: &[[f64; 2]]) -> D {
- let etas = [D::one(), eta, eta * eta];
+fn triplet_integral_ijk_dq>(mijk: f64, etas: &[D], c: &[[f64; 2]]) -> D {
(0..c.len())
.map(|i| etas[i] * (c[i][0] + mijk * c[i][1]))
.sum()
@@ -203,34 +177,16 @@ impl> HelmholtzEnergyDual for Dipole {
let rho = &state.partial_density;
let r = p.hs_diameter(state.temperature) * 0.5;
let eta = (rho * &p.m * &r * &r * &r).sum() * 4.0 * FRAC_PI_3;
+ let eta2 = eta * eta;
+ let etas = [D::one(), eta, eta2, eta2 * eta, eta2 * eta2];
let mut phi2 = D::zero();
let mut phi3 = D::zero();
for i in 0..p.ndipole {
let di = p.dipole_comp[i];
- phi2 -= rho[di]
- * rho[di]
- * mu2_term[i]
- * mu2_term[i]
- * pair_integral_ij(
- m.mij1[[i, i]],
- m.mij2[[i, i]],
- eta,
- &AD,
- &BD,
- eps_ij_t[[di, di]],
- )
- / sig_ij_3[[di, di]];
- phi3 -= rho[di]
- * rho[di]
- * rho[di]
- * mu2_term[i]
- * mu2_term[i]
- * mu2_term[i]
- * triplet_integral_ijk(m.mijk1[[i, i, i]], m.mijk2[[i, i, i]], eta, &CD)
- / sig_ij_3[[di, di]];
- for j in (i + 1)..p.ndipole {
+ for j in i..p.ndipole {
let dj = p.dipole_comp[j];
+ let c = if i == j { 1.0 } else { 2.0 };
phi2 -= rho[di]
* rho[dj]
* mu2_term[i]
@@ -238,27 +194,26 @@ impl> HelmholtzEnergyDual for Dipole {
* pair_integral_ij(
m.mij1[[i, j]],
m.mij2[[i, j]],
- eta,
+ &etas,
&AD,
&BD,
eps_ij_t[[di, dj]],
)
/ sig_ij_3[[di, dj]]
- * 2.0;
- phi3 -= rho[di] * rho[di] * rho[dj] * mu2_term[i] * mu2_term[i] * mu2_term[j]
- / (p.sigma_ij[[di, di]] * p.sigma_ij[[di, dj]] * p.sigma_ij[[di, dj]])
- * triplet_integral_ijk(m.mijk1[[i, i, j]], m.mijk2[[i, i, j]], eta, &CD)
- * 3.0;
- phi3 -= rho[di] * rho[dj] * rho[dj] * mu2_term[i] * mu2_term[j] * mu2_term[j]
- / (p.sigma_ij[[di, dj]] * p.sigma_ij[[di, dj]] * p.sigma_ij[[dj, dj]])
- * triplet_integral_ijk(m.mijk1[[i, j, j]], m.mijk2[[i, j, j]], eta, &CD)
- * 3.0;
- for k in (j + 1)..p.ndipole {
+ * c;
+ for k in j..p.ndipole {
let dk = p.dipole_comp[k];
+ let c = if i == k {
+ 1.0
+ } else if i == j || j == k {
+ 3.0
+ } else {
+ 6.0
+ };
phi3 -= rho[di] * rho[dj] * rho[dk] * mu2_term[i] * mu2_term[j] * mu2_term[k]
/ (p.sigma_ij[[di, dj]] * p.sigma_ij[[di, dk]] * p.sigma_ij[[dj, dk]])
- * triplet_integral_ijk(m.mijk1[[i, j, k]], m.mijk2[[i, j, k]], eta, &CD)
- * 6.0;
+ * triplet_integral_ijk(m.mijk1[[i, j, k]], m.mijk2[[i, j, k]], &etas, &CD)
+ * c;
}
}
}
@@ -299,34 +254,16 @@ impl> HelmholtzEnergyDual for Quadrupole {
let rho = &state.partial_density;
let r = p.hs_diameter(state.temperature) * 0.5;
let eta = (rho * &p.m * &r * &r * &r).sum() * 4.0 * FRAC_PI_3;
+ let eta2 = eta * eta;
+ let etas = [D::one(), eta, eta2, eta2 * eta, eta2 * eta2];
let mut phi2 = D::zero();
let mut phi3 = D::zero();
for i in 0..p.nquadpole {
let di = p.quadpole_comp[i];
- phi2 -= (rho[di]
- * rho[di]
- * q2_term[i]
- * q2_term[i]
- * pair_integral_ij(
- m.mij1[[i, i]],
- m.mij2[[i, i]],
- eta,
- &AQ,
- &BQ,
- eps_ij_t[[di, di]],
- ))
- / p.sigma_ij[[di, di]].powi(7);
- phi3 += (rho[di]
- * rho[di]
- * rho[di]
- * q2_term[i]
- * q2_term[i]
- * q2_term[i]
- * triplet_integral_ijk(m.mijk1[[i, i, i]], m.mijk2[[i, i, i]], eta, &CQ))
- / sig_ij_3[[di, di]].powi(3);
- for j in (i + 1)..p.nquadpole {
+ for j in i..p.nquadpole {
let dj = p.quadpole_comp[j];
+ let c = if i == j { 1.0 } else { 2.0 };
phi2 -= (rho[di]
* rho[dj]
* q2_term[i]
@@ -334,27 +271,26 @@ impl> HelmholtzEnergyDual for Quadrupole {
* pair_integral_ij(
m.mij1[[i, j]],
m.mij2[[i, j]],
- eta,
+ &etas,
&AQ,
&BQ,
eps_ij_t[[di, dj]],
))
/ p.sigma_ij[[di, di]].powi(7)
- * 2.0;
- phi3 += rho[di] * rho[di] * rho[dj] * q2_term[i] * q2_term[i] * q2_term[j]
- / (sig_ij_3[[di, di]] * sig_ij_3[[di, dj]] * sig_ij_3[[di, dj]])
- * triplet_integral_ijk(m.mijk1[[i, i, j]], m.mijk2[[i, i, j]], eta, &CQ)
- * 3.0;
- phi3 += rho[di] * rho[dj] * rho[dj] * q2_term[i] * q2_term[j] * q2_term[j]
- / (sig_ij_3[[di, dj]] * sig_ij_3[[di, dj]] * sig_ij_3[[dj, dj]])
- * triplet_integral_ijk(m.mijk1[[i, j, j]], m.mijk2[[i, j, j]], eta, &CQ)
- * 3.0;
- for k in (j + 1)..p.nquadpole {
+ * c;
+ for k in j..p.nquadpole {
let dk = p.quadpole_comp[k];
+ let c = if i == k {
+ 1.0
+ } else if i == j || j == k {
+ 3.0
+ } else {
+ 6.0
+ };
phi3 += rho[di] * rho[dj] * rho[dk] * q2_term[i] * q2_term[j] * q2_term[k]
/ (sig_ij_3[[di, dj]] * sig_ij_3[[di, dk]] * sig_ij_3[[dj, dk]])
- * triplet_integral_ijk(m.mijk1[[i, j, k]], m.mijk2[[i, j, k]], eta, &CQ)
- * 6.0;
+ * triplet_integral_ijk(m.mijk1[[i, j, k]], m.mijk2[[i, j, k]], &etas, &CQ)
+ * c;
}
}
}
@@ -409,6 +345,8 @@ impl> HelmholtzEnergyDual for DipoleQuadrupole {
let rho = &state.partial_density;
let r = p.hs_diameter(state.temperature) * 0.5;
let eta = (rho * &p.m * &r * &r * &r).sum() * 4.0 * FRAC_PI_3;
+ let eta2 = eta * eta;
+ let etas = [D::one(), eta, eta2, eta2 * eta, eta2 * eta2];
// mean segment number
let mut mdq1 = Array2::zeros((p.ndipole, p.nquadpole));
@@ -453,7 +391,7 @@ impl> HelmholtzEnergyDual for DipoleQuadrupole {
* pair_integral_ij(
mdq1[[i, j]],
mdq2[[i, j]],
- eta,
+ &etas,
&ADQ,
&BDQ,
eps_ij_t[[di, qj]],
@@ -463,7 +401,7 @@ impl> HelmholtzEnergyDual for DipoleQuadrupole {
phi3 += rho[di] * rho[qj] * rho[dk] * mu2_term[i] * q2_term[j] * mu2_term[k]
/ (p.sigma_ij[[di, qj]] * p.sigma_ij[[di, dk]] * p.sigma_ij[[qj, dk]])
.powi(2)
- * triplet_integral_ijk_dq(mdqd[[i, j, k]], eta, &CDQ);
+ * triplet_integral_ijk_dq(mdqd[[i, j, k]], &etas, &CDQ);
}
for k in 0..p.nquadpole {
let qk = p.quadpole_comp[k];
@@ -471,7 +409,7 @@ impl> HelmholtzEnergyDual for DipoleQuadrupole {
/ (p.sigma_ij[[di, qj]] * p.sigma_ij[[di, qk]] * p.sigma_ij[[qj, qk]])
.powi(2)
* ALPHA
- * triplet_integral_ijk_dq(mdqq[[i, j, k]], eta, &CDQ);
+ * triplet_integral_ijk_dq(mdqq[[i, j, k]], &etas, &CDQ);
}
}
}
@@ -500,6 +438,7 @@ mod tests {
carbon_dioxide_parameters, dme_co2_parameters, dme_parameters,
};
use approx::assert_relative_eq;
+ use feos_core::parameter::{IdentifierOption, Parameter};
use feos_core::StateHD;
#[test]
@@ -515,6 +454,27 @@ mod tests {
assert_relative_eq!(a, -1.40501033595417E-002, epsilon = 1e-6);
}
+ #[test]
+ fn test_dipolar_contribution_mix() {
+ let dp = Dipole {
+ parameters: Arc::new(
+ PcSaftParameters::from_json(
+ vec!["acetone", "butanal", "dimethyl ether"],
+ "./parameters/pcsaft/gross2006.json",
+ None,
+ IdentifierOption::Name,
+ )
+ .unwrap(),
+ ),
+ };
+ let t = 350.0;
+ let v = 1000.0;
+ let n = [1.0, 2.0, 3.0];
+ let s = StateHD::new(t, v, arr1(&n));
+ let a = dp.helmholtz_energy(&s);
+ assert_relative_eq!(a, -1.4126308106201688, epsilon = 1e-10);
+ }
+
#[test]
fn test_quadrupolar_contribution() {
let qp = Quadrupole {
@@ -528,6 +488,27 @@ mod tests {
assert_relative_eq!(a, -4.38559558854186E-002, epsilon = 1e-6);
}
+ #[test]
+ fn test_quadrupolar_contribution_mix() {
+ let qp = Quadrupole {
+ parameters: Arc::new(
+ PcSaftParameters::from_json(
+ vec!["carbon dioxide", "chlorine", "ethylene"],
+ "./parameters/pcsaft/gross2005_literature.json",
+ None,
+ IdentifierOption::Name,
+ )
+ .unwrap(),
+ ),
+ };
+ let t = 350.0;
+ let v = 1000.0;
+ let n = [1.0, 2.0, 3.0];
+ let s = StateHD::new(t, v, arr1(&n));
+ let a = qp.helmholtz_energy(&s);
+ assert_relative_eq!(a, -0.327493924806138, epsilon = 1e-10);
+ }
+
#[test]
fn test_dipolar_quadrupolar_contribution() {
let dp = Dipole {
diff --git a/src/pcsaft/parameters.rs b/src/pcsaft/parameters.rs
index f7e2b980c..9517b9317 100644
--- a/src/pcsaft/parameters.rs
+++ b/src/pcsaft/parameters.rs
@@ -505,12 +505,13 @@ impl std::fmt::Display for PcSaftParameters {
if !self.quadpole_comp.is_empty() {
write!(f, "\n\tq={}", self.q)?;
}
- // if !self.assoc_comp.is_empty() {
- // write!(f, "\n\tkappa_ab={}", self.kappa_ab)?;
- // write!(f, "\n\tepsilon_k_ab={}", self.epsilon_k_ab)?;
- // write!(f, "\n\tna={}", self.na)?;
- // write!(f, "\n\tnb={}", self.nb)?;
- // }
+ if !self.association.assoc_comp.is_empty() {
+ write!(f, "\n\tassociating={}", self.association.assoc_comp)?;
+ write!(f, "\n\tkappa_ab={}", self.association.kappa_ab)?;
+ write!(f, "\n\tepsilon_k_ab={}", self.association.epsilon_k_ab)?;
+ write!(f, "\n\tna={}", self.association.na)?;
+ write!(f, "\n\tnb={}", self.association.nb)?;
+ }
if !self.k_ij.iter().all(|k| k.is_zero()) {
write!(f, "\n\tk_ij=\n{}", self.k_ij)?;
}
@@ -523,168 +524,6 @@ pub mod utils {
use super::*;
use feos_core::joback::JobackRecord;
use std::sync::Arc;
- // use feos_core::parameter::SegmentRecord;
-
- // pub fn pure_record_vec() -> Vec> {
- // let records = r#"[
- // {
- // "identifier": {
- // "cas": "74-98-6",
- // "name": "propane",
- // "iupac_name": "propane",
- // "smiles": "CCC",
- // "inchi": "InChI=1/C3H8/c1-3-2/h3H2,1-2H3",
- // "formula": "C3H8"
- // },
- // "model_record": {
- // "m": 2.0018290000000003,
- // "sigma": 3.618353,
- // "epsilon_k": 208.1101
- // },
- // "molarweight": 44.0962,
- // "chemical_record": {
- // "segments": ["CH3", "CH2", "CH3"]
- // }
- // },
- // {
- // "identifier": {
- // "cas": "106-97-8",
- // "name": "butane",
- // "iupac_name": "butane",
- // "smiles": "CCCC",
- // "inchi": "InChI=1/C4H10/c1-3-4-2/h3-4H2,1-2H3",
- // "formula": "C4H10"
- // },
- // "model_record": {
- // "m": 2.331586,
- // "sigma": 3.7086010000000003,
- // "epsilon_k": 222.8774
- // },
- // "molarweight": 58.123,
- // "chemical_record": {
- // "segments": ["CH3", "CH2", "CH2", "CH3"]
- // }
- // },
- // {
- // "identifier": {
- // "cas": "74-82-8",
- // "name": "methane",
- // "iupac_name": "methane",
- // "smiles": "C",
- // "inchi": "InChI=1/CH4/h1H4",
- // "formula": "CH4"
- // },
- // "model_record": {
- // "m": 1.0,
- // "sigma": 3.7039,
- // "epsilon_k": 150.034
- // },
- // "molarweight": 16.0426
- // },
- // {
- // "identifier": {
- // "cas": "124-38-9",
- // "name": "carbon-dioxide",
- // "iupac_name": "carbon dioxide",
- // "smiles": "O=C=O",
- // "inchi": "InChI=1/CO2/c2-1-3",
- // "formula": "CO2"
- // },
- // "molarweight": 44.0098,
- // "model_record": {
- // "m": 1.5131,
- // "sigma": 3.1869,
- // "epsilon_k": 163.333,
- // "q": 4.4
- // }
- // }
- // ]"#;
- // serde_json::from_str(records).expect("Unable to parse json.")
- // }
-
- // pub fn segments_vec() -> Vec> {
- // let segments_json = r#"[
- // {
- // "identifier": "CH3",
- // "model_record": {
- // "m": 0.77247,
- // "sigma": 3.6937,
- // "epsilon_k": 181.49
- // },
- // "molarweight": 15.0345
- // },
- // {
- // "identifier": "CH2",
- // "model_record": {
- // "m": 0.7912,
- // "sigma": 3.0207,
- // "epsilon_k": 157.23
- // },
- // "molarweight": 14.02658
- // },
-
- // {
- // "identifier": ">CH",
- // "model_record": {
- // "m": 0.52235,
- // "sigma": 0.99912,
- // "epsilon_k": 269.84
- // },
- // "molarweight": 13.01854
- // },
- // {
- // "identifier": ">C<",
- // "model_record": {
- // "m": -0.70131,
- // "sigma": 0.54350,
- // "epsilon_k": 0.0
- // },
- // "molarweight": 12.0107
- // },
- // {
- // "identifier": "=CH2",
- // "model_record": {
- // "m": 0.70581,
- // "sigma": 3.1630,
- // "epsilon_k": 171.34
- // },
- // "molarweight": 14.02658
- // },
- // {
- // "identifier": "=CH",
- // "model_record": {
- // "m": 0.90182,
- // "sigma": 2.8864,
- // "epsilon_k": 158.90
- // },
- // "molarweight": 13.01854
- // }
- // ]"#;
- // serde_json::from_str(segments_json).expect("Unable to parse json.")
- // }
-
- // pub fn methane_parameters() -> PcSaftParameters {
- // let methane_json = r#"
- // {
- // "identifier": {
- // "cas": "74-82-8",
- // "name": "methane",
- // "iupac_name": "methane",
- // "smiles": "C",
- // "inchi": "InChI=1/CH4/h1H4",
- // "formula": "CH4"
- // },
- // "model_record": {
- // "m": 1.0,
- // "sigma": 3.7039,
- // "epsilon_k": 150.034
- // },
- // "molarweight": 16.0426
- // }"#;
- // let methane_record: PureRecord =
- // serde_json::from_str(methane_json).expect("Unable to parse json.");
- // PcSaftParameters::from_records(vec![methane_record], None).unwrap()
- // }
pub fn propane_parameters() -> Arc {
let propane_json = r#"
@@ -712,53 +551,6 @@ pub mod utils {
Arc::new(PcSaftParameters::new_pure(propane_record))
}
- // pub fn propane_homogc_parameters() -> PcSaftParameters {
- // let propane_json = r#"
- // {
- // "identifier": {
- // "cas": "74-98-6",
- // "name": "propane",
- // "iupac_name": "propane",
- // "smiles": "CCC",
- // "inchi": "InChI=1/C3H8/c1-3-2/h3H2,1-2H3",
- // "formula": "C3H8"
- // },
- // "chemical_record": {
- // "molarweight": 44.0962,
- // "segments": ["CH3", "CH2", "CH3"]
- // }
- // }"#;
- // let segments_json = r#"[
- // {
- // "identifier": "CH3",
- // "model_record": {
- // "m": 0.61198,
- // "sigma": 3.7202,
- // "epsilon_k": 229.90
- // },
- // "molarweight": 15.0345
- // },
- // {
- // "identifier": "CH2",
- // "model_record": {
- // "m": 0.45606,
- // "sigma": 3.8900,
- // "epsilon_k": 239.01
- // },
- // "molarweight": 14.02658
- // }
- // ]"#;
- // let propane_record: PureRecord =
- // serde_json::from_str(&propane_json).expect("Unable to parse json.");
- // let segment_records: Vec =
- // serde_json::from_str(&segments_json).expect("Unable to parse json.");
- // ParameterBuilder::new()
- // .molecule_records(Some(&vec![propane_record]), None)
- // .segment_records(Some(&segment_records), None)
- // .build(BuilderOption::HomoGC)
- // .unwrap()
- // }
-
pub fn carbon_dioxide_parameters() -> PcSaftParameters {
let co2_json = r#"
{
@@ -941,155 +733,4 @@ pub mod utils {
serde_json::from_str(binary_json).expect("Unable to parse json.");
Arc::new(PcSaftParameters::new_binary(binary_record, None))
}
-
- // pub fn water_hexane_parameters() -> PcSaftParameters {
- // let binary_json = r#"[
- // {
- // "identifier": {
- // "cas": "7732-18-5",
- // "name": "water_np",
- // "iupac_name": "oxidane",
- // "smiles": "O",
- // "inchi": "InChI=1/H2O/h1H2",
- // "formula": "H2O"
- // },
- // "model_record": {
- // "m": 1.065587,
- // "sigma": 3.000683,
- // "epsilon_k": 366.5121,
- // "kappa_ab": 0.034867983,
- // "epsilon_k_ab": 2500.6706
- // },
- // "molarweight": 18.0152
- // },
- // {
- // "identifier": {
- // "cas": "110-54-3",
- // "name": "hexane",
- // "iupac_name": "hexane",
- // "smiles": "CCCCCC",
- // "inchi": "InChI=1/C6H14/c1-3-5-6-4-2/h3-6H2,1-2H3",
- // "formula": "C6H14"
- // },
- // "model_record": {
- // "m": 3.0576,
- // "sigma": 3.7983,
- // "epsilon_k": 236.77
- // },
- // "molarweight": 86.177
- // }
- // ]"#;
- // let binary_record: Vec> =
- // serde_json::from_str(binary_json).expect("Unable to parse json.");
- // PcSaftParameters::from_records(binary_record, None).unwrap()
- // }
-
- // pub fn dodecane_nitrogen_parameters() -> PcSaftParameters {
- // let binary_json = r#"[
- // {
- // "identifier": {
- // "cas": "112-40-3",
- // "name": "dodecane",
- // "iupac_name": "dodecane",
- // "smiles": "CCCCCCCCCCCC",
- // "inchi": "InChI=1/C12H26/c1-3-5-7-9-11-12-10-8-6-4-2/h3-12H2,1-2H3",
- // "formula": "C12H26"
- // },
- // "model_record": {
- // "m": 5.305758999999999,
- // "sigma": 3.895892,
- // "epsilon_k": 249.2145,
- // "viscosity": [
- // -1.6719,
- // -3.39020393,
- // -0.6956429590000001,
- // -0.154563667
- // ],
- // "diffusion": [
- // -1.709976456320196,
- // 0.4350370700652692,
- // 0.3567181896779805,
- // 0.0,
- // 0.0
- // ]
- // },
- // "molarweight": 170.3374
- // },
- // {
- // "identifier": {
- // "cas": "7727-37-9",
- // "name": "nitrogen",
- // "iupac_name": "molecular nitrogen",
- // "smiles": "N#N",
- // "inchi": "InChI=1/N2/c1-2",
- // "formula": "N2"
- // },
- // "model_record": {
- // "m": 1.1504,
- // "sigma": 3.3848,
- // "epsilon_k": 91.4,
- // "q": 1.43,
- // "viscosity": [
- // -0.196376646,
- // -0.9460855,
- // -0.0309718769,
- // -0.0303367687
- // ],
- // "diffusion": [
- // -0.12855765455212295,
- // 0.24885131958296933,
- // 0.08052800000000002,
- // 0.0,
- // 0.0
- // ]
- // },
- // "molarweight": 28.0134
- // }
- // ]"#;
- // let kij_json = r#"[
- // {
- // "id1": {
- // "cas": "7727-37-9",
- // "name": "nitrogen",
- // "iupac_name": "molecular nitrogen",
- // "smiles": "N#N",
- // "inchi": "InChI=1/N2/c1-2",
- // "formula": "N2"
- // },
- // "id2": {
- // "cas": "112-40-3",
- // "name": "dodecane",
- // "iupac_name": "dodecane",
- // "smiles": "CCCCCCCCCCCC",
- // "inchi": "InChI=1/C12H26/c1-3-5-7-9-11-12-10-8-6-4-2/h3-12H2,1-2H3",
- // "formula": "C12H26"
- // },
- // "k_ij": 0.1661
- // },
- // {
- // "id1": {
- // "cas": "7727-37-9",
- // "name": "nitrogen",
- // "iupac_name": "molecular nitrogen",
- // "smiles": "N#N",
- // "inchi": "InChI=1/N2/c1-2",
- // "formula": "N2"
- // },
- // "id2": {
- // "cas": "74-98-6",
- // "name": "propane",
- // "iupac_name": "propane",
- // "smiles": "CCC",
- // "inchi": "InChI=1/C3H8/c1-3-2/h3H2,1-2H3",
- // "formula": "C3H8"
- // },
- // "k_ij": 0.02512
- // }
- // ]"#;
- // let binary_record: Vec> =
- // serde_json::from_str(binary_json).expect("Unable to parse json.");
- // let kij_record: Vec> =
- // serde_json::from_str(kij_json).expect("Unable to parse binary json.");
- // PcSaftParameters::from_records(binary_record, Some(kij_record)).unwrap()
- // }
}