Skip to content

Commit 6bb4213

Browse files
authored
Update ndarray to fix dependency resolution (#327)
* Update ndarray to fix dependency resolution * update num-dual * Fix lifetime issues introduced in ndarray 0.17
1 parent 002494c commit 6bb4213

File tree

5 files changed

+18
-10
lines changed

5 files changed

+18
-10
lines changed

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
55
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
66

77
## [Unreleased]
8+
### Fixed
9+
- Updated to `ndarray` 0.17 and `num-dual`0.13 to fix a broken dependency resolution. [#324](https://github.com/feos-org/feos/pull/324)
810

911
## [0.9.1] - 2025-11-24
1012
### Fixed

Cargo.toml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,8 @@ categories = ["science"]
2323

2424
[workspace.dependencies]
2525
quantity = "0.12"
26-
num-dual = "0.12"
27-
ndarray = "0.16"
26+
num-dual = "0.13"
27+
ndarray = "0.17"
2828
nalgebra = "0.34"
2929
thiserror = "2.0"
3030
conv = "0.3"
@@ -41,7 +41,7 @@ rustfft = "6.0"
4141
libm = "0.2"
4242
gauss-quad = "0.2"
4343
approx = "0.5"
44-
criterion = "0.7"
44+
criterion = "0.8"
4545
paste = "1.0"
4646

4747
feos-core = { version = "0.9", path = "crates/feos-core" }

crates/feos-dft/src/convolver/transform.rs

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -197,9 +197,11 @@ impl<T: DualNum<f64> + DctNum> FourierTransform<T> for SphericalTransform<T> {
197197
let mut f_aux = Array::zeros(f_k.raw_dim());
198198
self.cosine_transform(&f_r * &self.r_grid, f_aux.view_mut(), false);
199199
self.sine_transform(f_r, f_k.view_mut(), false);
200-
f_k.assign(&(&f_k / &self.k_grid - &f_aux));
200+
let f_k_scaled = &f_k / &self.k_grid - &f_aux;
201+
f_k.assign(&f_k_scaled);
201202
}
202-
f_k.assign(&(&f_k / &self.k_grid));
203+
let f_k_scaled = &f_k / &self.k_grid;
204+
f_k.assign(&f_k_scaled);
203205
f_k[0] = T::zero();
204206
}
205207

@@ -210,9 +212,11 @@ impl<T: DualNum<f64> + DctNum> FourierTransform<T> for SphericalTransform<T> {
210212
let mut f_aux = Array::zeros(f_r.raw_dim());
211213
self.cosine_transform(&f_k * &self.k_grid, f_aux.view_mut(), true);
212214
self.sine_transform(f_k, f_r.view_mut(), true);
213-
f_r.assign(&(&f_r / &self.r_grid - &f_aux));
215+
let f_r_scaled = &f_r / &self.r_grid - &f_aux;
216+
f_r.assign(&f_r_scaled);
214217
}
215-
f_r.assign(&(&f_r / &self.r_grid));
218+
let f_r_scaled = &f_r / &self.r_grid;
219+
f_r.assign(&f_r_scaled);
216220
}
217221
}
218222

crates/feos-dft/src/profile/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -312,7 +312,7 @@ where
312312
let mut value = profile.to_owned();
313313
for (i, &w) in integration_weights.iter().enumerate() {
314314
for mut l in value.lanes_mut(Axis_nd(i)) {
315-
l.assign(&(&l * w));
315+
l.mul_assign(w);
316316
}
317317
}
318318
Volume::from_reduced(functional_determinant) * value.sum()

crates/feos-dft/src/weight_functions.rs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,8 @@ impl<T: DualNum<f64> + Copy> WeightFunction<T> {
7878

7979
// Apply Lanczos sigma factor
8080
if let Some(l) = lanczos {
81-
w_i.assign(&(&w_i * l));
81+
let w_i_l = &w_i * l;
82+
w_i.assign(&w_i_l);
8283
}
8384
}
8485

@@ -126,7 +127,8 @@ impl<T: DualNum<f64> + Copy> WeightFunction<T> {
126127

127128
// Apply Lanczos sigma factor
128129
if let Some(l) = lanczos {
129-
w_i.assign(&(&w_i * l));
130+
let w_i_l = &w_i * l;
131+
w_i.assign(&w_i_l)
130132
}
131133
}
132134
}

0 commit comments

Comments
 (0)