Skip to main content

DecIncompressible

Struct DecIncompressible 

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

Source§

impl<'m, const D: usize, R: CfdScalar> DecIncompressible<'m, D, R>

Source

pub fn new(rate: DecNsRate<'m, D, R>, opts: HodgeDecomposeOptions<R>) -> Self

Build the theory from a validated rate and the projection options.

Source

pub fn rate(&self) -> &DecNsRate<'m, D, R>

The underlying DEC rate.

Trait Implementations§

Source§

impl<'m, const D: usize, R: Debug + CfdScalar> Debug for DecIncompressible<'m, D, R>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

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>

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>

The marching state this regime advances. Its algebra bounds are exactly what deep_causality_calculus::Rk4 needs, so any theory drops into the integrator.
Source§

type Ambient = Ambient<R>

The ambient this regime reads each step. The incompressible regime uses 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>
where DecNsRate<'m, D, R>: Send, HodgeDecomposeOptions<R>: Send,

§

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> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

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

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

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

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.