Skip to main content

EllipticProblemExt

Trait EllipticProblemExt 

Source
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§

Source

fn lower(&self, dim: usize) -> BoundaryCondition

Boundary condition at the lower side of dim.

Source

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".

Implementors§

Source§

impl<const N: usize, T: EllipticProblem<N>> EllipticProblemExt<N> for T