Skip to content

Commit 72c3d26

Browse files
committed
rebase and update all models
1 parent 7c2c3ec commit 72c3d26

37 files changed

+206
-145
lines changed

.github/workflows/test.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@ name: Test
22

33
on:
44
push:
5-
branches: [main]
5+
branches: [main, development]
66
pull_request:
7-
branches: [main]
7+
branches: [main, development]
88

99
env:
1010
CARGO_TERM_COLOR: always

.github/workflows/wheels.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
name: Build Wheels
22
on:
33
push:
4-
branches: [main]
4+
branches: [main, development]
55
pull_request:
6-
branches: [main]
6+
branches: [main, development]
77
jobs:
88
linux:
99
runs-on: ubuntu-latest

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ inherits = "release"
5353
lto = true
5454

5555
[features]
56-
default = []
56+
default = ["all_models"]
5757
dft = ["feos-dft", "petgraph"]
5858
estimator = []
5959
association = []

benches/dual_numbers.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ fn state_pcsaft(parameters: PcSaftParameters) -> State<PcSaft> {
2828
}
2929

3030
/// Residual Helmholtz energy given an equation of state and a StateHD.
31-
fn a_res<D: DualNum<f64>, E: EquationOfState>(inp: (&Arc<E>, &StateHD<D>)) -> D
31+
fn a_res<D: DualNum<f64> + Copy, E: EquationOfState>(inp: (&Arc<E>, &StateHD<D>)) -> D
3232
where
3333
(dyn HelmholtzEnergy + 'static): HelmholtzEnergyDual<D>,
3434
{

feos-dft/src/functional.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -452,7 +452,7 @@ impl<T: HelmholtzEnergyFunctional> DFT<T> {
452452
D: Dimension,
453453
D::Larger: Dimension<Smaller = D>,
454454
{
455-
let temperature_dual = Dual64::from(temperature).derive();
455+
let temperature_dual = Dual64::from(temperature).derivative();
456456
let density_dual = density.mapv(Dual64::from);
457457
let weighted_densities = convolver.weighted_densities(&density_dual);
458458
let contributions = self.contributions();

feos-dft/src/functional_contribution.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ use feos_core::{EosResult, HelmholtzEnergyDual, StateHD};
33
use ndarray::prelude::*;
44
use ndarray::RemoveAxis;
55
use num_dual::*;
6-
use num_traits::{One, Zero};
6+
use num_traits::Zero;
77
use std::fmt::Display;
88

99
macro_rules! impl_helmholtz_energy {
@@ -130,13 +130,13 @@ pub trait FunctionalContribution:
130130

131131
for i in 0..wd.shape()[0] {
132132
wd.index_axis_mut(Axis(0), i)
133-
.map_inplace(|x| x.eps[0] = Dual64::one());
133+
.map_inplace(|x| x.eps = Derivative::derivative());
134134
phi = self.calculate_helmholtz_energy_density(t, wd.view())?;
135135
first_partial_derivative
136136
.index_axis_mut(Axis(0), i)
137-
.assign(&phi.mapv(|p| p.eps[0]));
137+
.assign(&phi.mapv(|p| p.eps.unwrap()));
138138
wd.index_axis_mut(Axis(0), i)
139-
.map_inplace(|x| x.eps[0] = Dual64::zero());
139+
.map_inplace(|x| x.eps = Derivative::none());
140140
}
141141
helmholtz_energy_density.assign(&phi.mapv(|p| p.re));
142142
Ok(())

feos-dft/src/profile.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -617,7 +617,7 @@ where
617617
let functional_contributions = self.dft.contributions();
618618
let weight_functions: Vec<WeightFunctionInfo<Dual64>> = functional_contributions
619619
.iter()
620-
.map(|c| c.weight_functions(Dual64::from(t).derive()))
620+
.map(|c| c.weight_functions(Dual64::from(t).derivative()))
621621
.collect();
622622
let convolver: Arc<dyn Convolver<_, D>> =
623623
ConvolverFFT::plan(&self.grid, &weight_functions, None);
@@ -638,11 +638,11 @@ where
638638
let x = (self.bulk.partial_molar_volume(Contributions::Total)
639639
* self.bulk.dp_dt(Contributions::Total))
640640
.to_reduced(SIUnit::reference_molar_entropy())?;
641-
let mut lhs = dfdrhodt.mapv(|d| d.eps[0]);
641+
let mut lhs = dfdrhodt.mapv(|d| d.eps.unwrap());
642642
lhs.outer_iter_mut()
643643
.zip(dfdrhodt_bulk.into_iter())
644644
.zip(x.into_iter())
645-
.for_each(|((mut lhs, d), x)| lhs -= d.eps[0] - x);
645+
.for_each(|((mut lhs, d), x)| lhs -= d.eps.unwrap() - x);
646646
lhs.outer_iter_mut()
647647
.zip(rho.outer_iter())
648648
.zip(rho_bulk.into_iter())

src/association/dft.rs

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ where
111111

112112
impl<P: HardSphereProperties> Association<P> {
113113
pub fn calculate_helmholtz_energy_density<
114-
N: DualNum<f64> + ScalarOperand,
114+
N: DualNum<f64> + Copy + ScalarOperand,
115115
S: Data<Elem = N>,
116116
>(
117117
&self,
@@ -183,7 +183,10 @@ impl<P: HardSphereProperties> Association<P> {
183183
}
184184
}
185185

186-
fn helmholtz_energy_density_ab_analytic<N: DualNum<f64> + ScalarOperand, S: Data<Elem = N>>(
186+
fn helmholtz_energy_density_ab_analytic<
187+
N: DualNum<f64> + Copy + ScalarOperand,
188+
S: Data<Elem = N>,
189+
>(
187190
&self,
188191
temperature: N,
189192
rho0: &Array2<N>,
@@ -217,7 +220,10 @@ impl<P: HardSphereProperties> Association<P> {
217220
rhoa * xa.mapv(f) + rhob * xb.mapv(f)
218221
}
219222

220-
fn helmholtz_energy_density_cc_analytic<N: DualNum<f64> + ScalarOperand, S: Data<Elem = N>>(
223+
fn helmholtz_energy_density_cc_analytic<
224+
N: DualNum<f64> + Copy + ScalarOperand,
225+
S: Data<Elem = N>,
226+
>(
221227
&self,
222228
temperature: N,
223229
rho0: &Array2<N>,

src/association/mod.rs

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -326,7 +326,11 @@ impl<P: HardSphereProperties> Association<P> {
326326
(rhoa * (xa.ln() - xa * 0.5 + 0.5) + rhob * (xb.ln() - xb * 0.5 + 0.5)) * state.volume
327327
}
328328

329-
fn helmholtz_energy_cc_analytic<D: DualNum<f64>>(&self, state: &StateHD<D>, delta: D) -> D {
329+
fn helmholtz_energy_cc_analytic<D: DualNum<f64> + Copy>(
330+
&self,
331+
state: &StateHD<D>,
332+
delta: D,
333+
) -> D {
330334
let a = &self.association_parameters;
331335

332336
// site density
@@ -548,8 +552,9 @@ mod tests_gc_pcsaft {
548552
Dual64::from_re(volume).derivative(),
549553
arr1(&[Dual64::from_re(moles)]),
550554
);
551-
let pressure =
552-
-contrib.helmholtz_energy(&state).eps[0] * temperature * EosUnit::reference_pressure();
555+
let pressure = -contrib.helmholtz_energy(&state).eps.unwrap()
556+
* temperature
557+
* EosUnit::reference_pressure();
553558
assert_relative_eq!(pressure, -3.6819598891967344 * PASCAL, max_relative = 1e-10);
554559
}
555560

@@ -568,8 +573,9 @@ mod tests_gc_pcsaft {
568573
Dual64::from_re(volume).derivative(),
569574
arr1(&[Dual64::from_re(moles)]),
570575
);
571-
let pressure =
572-
-contrib.helmholtz_energy(&state).eps[0] * temperature * EosUnit::reference_pressure();
576+
let pressure = -contrib.helmholtz_energy(&state).eps.unwrap()
577+
* temperature
578+
* EosUnit::reference_pressure();
573579
assert_relative_eq!(pressure, -3.6819598891967344 * PASCAL, max_relative = 1e-10);
574580
}
575581

@@ -590,8 +596,9 @@ mod tests_gc_pcsaft {
590596
Dual64::from_re(volume).derivative(),
591597
moles.mapv(Dual64::from_re),
592598
);
593-
let pressure =
594-
-contrib.helmholtz_energy(&state).eps[0] * temperature * EosUnit::reference_pressure();
599+
let pressure = -contrib.helmholtz_energy(&state).eps.unwrap()
600+
* temperature
601+
* EosUnit::reference_pressure();
595602
assert_relative_eq!(pressure, -26.105606376765632 * PASCAL, max_relative = 1e-10);
596603
}
597604
}

src/gc_pcsaft/dft/dispersion.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,9 @@ impl AttractiveFunctional {
2424
}
2525
}
2626

27-
impl<N: DualNum<f64> + ScalarOperand> FunctionalContributionDual<N> for AttractiveFunctional {
27+
impl<N: DualNum<f64> + Copy + ScalarOperand> FunctionalContributionDual<N>
28+
for AttractiveFunctional
29+
{
2830
fn weight_functions(&self, temperature: N) -> WeightFunctionInfo<N> {
2931
let p = &self.parameters;
3032

0 commit comments

Comments
 (0)