Add Metrics iterator
This commit is contained in:
@@ -162,4 +162,37 @@ impl Metrics {
|
||||
pub fn detj_deta_dy(&self) -> ArrayView2<Float> {
|
||||
self.detj_deta_dy.view()
|
||||
}
|
||||
pub fn iter(
|
||||
&self,
|
||||
) -> impl DoubleEndedIterator<Item = Metric> + ExactSizeIterator<Item = Metric> + '_ {
|
||||
let n = self.nx() * self.ny();
|
||||
let detj = &self.detj.as_slice().unwrap()[..n];
|
||||
let detj_dxi_dx = &self.detj_dxi_dx.as_slice().unwrap()[..n];
|
||||
let detj_dxi_dy = &self.detj_dxi_dy.as_slice().unwrap()[..n];
|
||||
let detj_deta_dx = &self.detj_deta_dx.as_slice().unwrap()[..n];
|
||||
let detj_deta_dy = &self.detj_deta_dy.as_slice().unwrap()[..n];
|
||||
|
||||
detj.iter()
|
||||
.zip(detj_dxi_dx)
|
||||
.zip(detj_dxi_dy)
|
||||
.zip(detj_deta_dx)
|
||||
.zip(detj_deta_dy)
|
||||
.map(
|
||||
|((((&detj, &detj_dxi_dx), &detj_dxi_dy), &detj_deta_dx), &detj_deta_dy)| Metric {
|
||||
detj,
|
||||
detj_dxi_dx,
|
||||
detj_dxi_dy,
|
||||
detj_deta_dx,
|
||||
detj_deta_dy,
|
||||
},
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
pub struct Metric {
|
||||
pub detj: Float,
|
||||
pub detj_dxi_dx: Float,
|
||||
pub detj_dxi_dy: Float,
|
||||
pub detj_deta_dx: Float,
|
||||
pub detj_deta_dy: Float,
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user