Skip to content

Commit 8234e3e

Browse files
author
LisaNeumaier
committed
added tests for Helmholtz energy of Born and Ionic term, added parameters of water NaCl to utils, some binary record troubleshooting
1 parent 2b2c7d1 commit 8234e3e

File tree

4 files changed

+430
-119
lines changed

4 files changed

+430
-119
lines changed

src/epcsaft/eos/born.rs

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
use crate::epcsaft::eos::permittivity::Permittivity;
22
use crate::epcsaft::parameters::ElectrolytePcSaftParameters;
3+
use crate::hard_sphere::HardSphereProperties;
34
use feos_core::StateHD;
45
use ndarray::Array1;
56
use num_dual::DualNum;
@@ -49,3 +50,41 @@ impl fmt::Display for Born {
4950
write!(f, "Born")
5051
}
5152
}
53+
54+
#[cfg(test)]
55+
mod tests {
56+
use super::*;
57+
use crate::epcsaft::parameters::utils::{water_nacl_parameters, water_nacl_parameters_perturb};
58+
use approx::assert_relative_eq;
59+
use ndarray::arr1;
60+
61+
#[test]
62+
fn helmholtz_energy_perturb() {
63+
let born = Born {
64+
parameters: water_nacl_parameters_perturb(),
65+
};
66+
67+
let t = 298.0;
68+
let v = 31.875;
69+
let s = StateHD::new(t, v, arr1(&[0.9, 0.05, 0.05]));
70+
let d = born.parameters.hs_diameter(t);
71+
let a_rust = born.helmholtz_energy(&s, &d);
72+
73+
assert_relative_eq!(a_rust, -22.51064553710294, epsilon = 1e-10);
74+
}
75+
76+
#[test]
77+
fn helmholtz_energy() {
78+
let born = Born {
79+
parameters: water_nacl_parameters(),
80+
};
81+
82+
let t = 298.0;
83+
let v = 31.875;
84+
let s = StateHD::new(t, v, arr1(&[0.9, 0.05, 0.05]));
85+
let d = born.parameters.hs_diameter(t);
86+
let a_rust = born.helmholtz_energy(&s, &d);
87+
88+
assert_relative_eq!(a_rust, -22.525624511559244, epsilon = 1e-10);
89+
}
90+
}

src/epcsaft/eos/ionic.rs

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
use crate::epcsaft::eos::permittivity::Permittivity;
22
use crate::epcsaft::parameters::ElectrolytePcSaftParameters;
3+
use crate::hard_sphere::HardSphereProperties;
34
use feos_core::StateHD;
45
use ndarray::*;
56
use num_dual::DualNum;
@@ -94,3 +95,43 @@ impl fmt::Display for Ionic {
9495
write!(f, "Ionic")
9596
}
9697
}
98+
99+
#[cfg(test)]
100+
mod tests {
101+
use super::*;
102+
use crate::epcsaft::parameters::utils::{water_nacl_parameters, water_nacl_parameters_perturb};
103+
use approx::assert_relative_eq;
104+
use ndarray::arr1;
105+
106+
#[test]
107+
fn helmholtz_energy_perturb() {
108+
let ionic = Ionic {
109+
parameters: water_nacl_parameters_perturb(),
110+
variant: ElectrolytePcSaftVariants::Advanced,
111+
};
112+
let t = 298.0;
113+
let v = 31.875;
114+
115+
let s = StateHD::new(t, v, arr1(&[0.9, 0.05, 0.05]));
116+
117+
let d = ionic.parameters.hs_diameter(t);
118+
let a_rust = ionic.helmholtz_energy(&s, &d);
119+
120+
assert_relative_eq!(a_rust, -0.07775796084032328, epsilon = 1e-10);
121+
}
122+
123+
#[test]
124+
fn helmholtz_energy() {
125+
let ionic = Ionic {
126+
parameters: water_nacl_parameters(),
127+
variant: ElectrolytePcSaftVariants::Advanced,
128+
};
129+
let t = 298.0;
130+
let v = 31.875;
131+
let s = StateHD::new(t, v, arr1(&[0.9, 0.05, 0.05]));
132+
let d = ionic.parameters.hs_diameter(t);
133+
let a_rust = ionic.helmholtz_energy(&s, &d);
134+
135+
assert_relative_eq!(a_rust, -0.07341337106244776, epsilon = 1e-10);
136+
}
137+
}

src/epcsaft/eos/mod.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -449,7 +449,7 @@ mod tests {
449449

450450
#[test]
451451
fn association() {
452-
let parameters = Arc::new(water_parameters());
452+
let parameters = water_parameters();
453453
let assoc = Association::new(&parameters, &parameters.association, 50, 1e-10);
454454
let t = 350.0;
455455
let v = 41.248289328513216;
@@ -462,7 +462,7 @@ mod tests {
462462

463463
#[test]
464464
fn cross_association() {
465-
let parameters = Arc::new(water_parameters());
465+
let parameters = water_parameters();
466466
let assoc =
467467
Association::new_cross_association(&parameters, &parameters.association, 50, 1e-10);
468468
let t = 350.0;

0 commit comments

Comments
 (0)