use crate::types::{Real, Size};
#[derive(Clone, Debug)]
pub struct Fdm1dMesher {
locations: Vec<Real>,
dplus: Vec<Real>,
dminus: Vec<Real>,
}
impl Fdm1dMesher {
pub fn new(locations: Vec<Real>, dplus: Vec<Real>, dminus: Vec<Real>) -> Self {
assert!(
locations.len() == dplus.len() && locations.len() == dminus.len(),
"mesher vectors must agree in length"
);
Fdm1dMesher {
locations,
dplus,
dminus,
}
}
pub fn size(&self) -> Size {
self.locations.len()
}
pub fn location(&self, index: Size) -> Real {
self.locations[index]
}
pub fn locations(&self) -> &[Real] {
&self.locations
}
pub fn dplus(&self, index: Size) -> Real {
self.dplus[index]
}
pub fn dminus(&self, index: Size) -> Real {
self.dminus[index]
}
}