pub struct DecIncompressible<'m, const D: usize, R: CfdScalar> { /* private fields */ }Expand description
The DEC-native incompressible Navier–Stokes regime as a FluidTheory.
Wraps the validated DecNsRate together with the projection options the
rate’s per-step CG solve needs, so the field-level rate matches the
rate(state, ambient) seam. The manifold borrow lives inside the rate (the
theory is materialized bound to the manifold at run time), keeping the
FluidTheory trait itself 'm-free.
Implementations§
Trait Implementations§
Source§impl<'m, const D: usize, R: CfdScalar> FluidTheory<R> for DecIncompressible<'m, D, R>
impl<'m, const D: usize, R: CfdScalar> FluidTheory<R> for DecIncompressible<'m, D, R>
Source§fn rate(
&self,
state: &VelocityOneForm<R>,
ambient: &Ambient<R>,
) -> Result<VelocityOneForm<R>, PhysicsError>
fn rate( &self, state: &VelocityOneForm<R>, ambient: &Ambient<R>, ) -> Result<VelocityOneForm<R>, PhysicsError>
P(−½[i_u(du♭) − G*_ω u] − ν Δ_dR u♭ + g♭) at the ambient ν, with the
skew-symmetrized convective term (see DecNsRate). The ambient is read
once per call (between Rk4 steps); with a constant ambient this is
bit-identical to the construction-fixed rate.
Only ν is taken from the ambient. g♭ is the body force fixed on the rate kernel at
construction; Ambient::set_body_force is not consulted here, so a coupling stage that drives
the ambient body force will not change what this rate returns. See Ambient::set_body_force.
Source§type State = VelocityOneForm<R>
type State = VelocityOneForm<R>
deep_causality_calculus::Rk4 needs, so any theory drops into the integrator.Source§type Ambient = Ambient<R>
type Ambient = Ambient<R>
crate::Ambient; compressible/thermal regimes supply their own type,
extending the ambient without changing this trait.Auto Trait Implementations§
impl<'m, const D: usize, R> !Freeze for DecIncompressible<'m, D, R>
impl<'m, const D: usize, R> !RefUnwindSafe for DecIncompressible<'m, D, R>
impl<'m, const D: usize, R> !Sync for DecIncompressible<'m, D, R>
impl<'m, const D: usize, R> Send for DecIncompressible<'m, D, R>
impl<'m, const D: usize, R> Unpin for DecIncompressible<'m, D, R>
impl<'m, const D: usize, R> UnsafeUnpin for DecIncompressible<'m, D, R>
impl<'m, const D: usize, R> UnwindSafe for DecIncompressible<'m, D, R>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more