pub trait EllipticProblemExt<const N: usize>: EllipticProblem<N> {
// Provided methods
fn lower(&self, dim: usize) -> BoundaryCondition { ... }
fn upper(&self, dim: usize) -> BoundaryCondition { ... }
}Expand description
Convenience access to the boundary condition on a single side.
§Examples
use solver::numeric::finite_difference::discretization::{
BoundaryCondition, BoundaryConditions, DimensionKind, Transport,
};
use solver::numeric::finite_difference::elliptic::{
EllipticProblem, EllipticProblemExt,
};
use solver::models::control::StateDerivatives;
struct Poisson;
impl EllipticProblem<1> for Poisson {
fn dimension_kind(&self, _dim: usize) -> DimensionKind { DimensionKind::Diffusion }
fn transport(&self, _s: &[f64; 1], _d: &StateDerivatives<1>) -> Transport<1> {
Transport::new([1.0], [1.0], 0.0)
}
fn rhs(&self, _s: &[f64; 1]) -> f64 { 1.0 }
fn boundary_conditions(&self) -> BoundaryConditions<1> {
BoundaryConditions::new(
[BoundaryCondition::Dirichlet(0.0)],
[BoundaryCondition::Dirichlet(1.0)],
)
}
}
assert!(matches!(Poisson.lower(0), BoundaryCondition::Dirichlet(_)));Provided Methods§
Sourcefn lower(&self, dim: usize) -> BoundaryCondition
fn lower(&self, dim: usize) -> BoundaryCondition
Boundary condition at the lower side of dim.
Sourcefn upper(&self, dim: usize) -> BoundaryCondition
fn upper(&self, dim: usize) -> BoundaryCondition
Boundary condition at the upper side of dim.
Dyn Compatibility§
This trait is dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".