pub struct DeviceFvmPlan<B: AcceleratorBackend> { /* private fields */ }Expand description
Structure-of-arrays device plan for conservative face/cell execution.
Implementations§
Source§impl<B: AcceleratorBackend> DeviceFvmPlan<B>
impl<B: AcceleratorBackend> DeviceFvmPlan<B>
Sourcepub fn compile(
backend: &B,
inputs: &FvmInputs,
labels: Option<&LabelSet>,
epochs: PlanEpochs,
) -> Result<Self, AcceleratorError>
pub fn compile( backend: &B, inputs: &FvmInputs, labels: Option<&LabelSet>, epochs: PlanEpochs, ) -> Result<Self, AcceleratorError>
Compile FVM stencils, geometry, and optional wet/dry/boundary labels.
Sourcepub fn validate(&self, current: PlanEpochs) -> Result<(), AcceleratorError>
pub fn validate(&self, current: PlanEpochs) -> Result<(), AcceleratorError>
Reject execution with stale topology, atlas, or geometry epochs.
Sourcepub fn face_count(&self) -> usize
pub fn face_count(&self) -> usize
Total number of faces in the combined flux array.
Sourcepub fn cell_count(&self) -> usize
pub fn cell_count(&self) -> usize
Number of packed cells.
Sourcepub fn internal_face_count(&self) -> usize
pub fn internal_face_count(&self) -> usize
Number of internal faces.
Sourcepub fn boundary_face_count(&self) -> usize
pub fn boundary_face_count(&self) -> usize
Number of boundary faces.
Sourcepub fn cell_active(&self) -> &B::Buffer<u8>
pub fn cell_active(&self) -> &B::Buffer<u8>
Read-only cell activity mask.
Sourcepub fn face_active(&self) -> &B::Buffer<u8>
pub fn face_active(&self) -> &B::Buffer<u8>
Read-only face activity mask.
Source§impl DeviceFvmPlan<CpuBackend>
impl DeviceFvmPlan<CpuBackend>
Sourcepub fn compute_gradients<T: FvmScalar>(
&self,
state: &mut DeviceFvmState<T, CpuBackend>,
) -> Result<(), AcceleratorError>
pub fn compute_gradients<T: FvmScalar>( &self, state: &mut DeviceFvmState<T, CpuBackend>, ) -> Result<(), AcceleratorError>
Reference Green–Gauss gradient using the plan’s deterministic CSR.
Sourcepub fn compute_diffusive_face_fluxes<T: FvmScalar>(
&self,
state: &mut DeviceFvmState<T, CpuBackend>,
diffusivity: f64,
) -> Result<(), AcceleratorError>
pub fn compute_diffusive_face_fluxes<T: FvmScalar>( &self, state: &mut DeviceFvmState<T, CpuBackend>, diffusivity: f64, ) -> Result<(), AcceleratorError>
Reference orthogonal internal/boundary diffusive face fluxes.
Sourcepub fn compute_face_fluxes<T: FvmScalar>(
&self,
state: &mut DeviceFvmState<T, CpuBackend>,
scheme: ScalarFluxScheme,
) -> Result<(), AcceleratorError>
pub fn compute_face_fluxes<T: FvmScalar>( &self, state: &mut DeviceFvmState<T, CpuBackend>, scheme: ScalarFluxScheme, ) -> Result<(), AcceleratorError>
Reference implementation of internal/boundary face flux kernels.
Sourcepub fn assemble_cell_residuals<T: FvmScalar>(
&self,
state: &mut DeviceFvmState<T, CpuBackend>,
) -> Result<(), AcceleratorError>
pub fn assemble_cell_residuals<T: FvmScalar>( &self, state: &mut DeviceFvmState<T, CpuBackend>, ) -> Result<(), AcceleratorError>
Reference implementation of deterministic cell residual gathering.
Auto Trait Implementations§
impl<B> Freeze for DeviceFvmPlan<B>where
<B as AcceleratorBackend>::Buffer<u32>: Freeze,
<B as AcceleratorBackend>::Buffer<f64>: Freeze,
<B as AcceleratorBackend>::Buffer<i8>: Freeze,
<B as AcceleratorBackend>::Buffer<u8>: Freeze,
impl<B> RefUnwindSafe for DeviceFvmPlan<B>where
<B as AcceleratorBackend>::Buffer<u32>: RefUnwindSafe,
<B as AcceleratorBackend>::Buffer<f64>: RefUnwindSafe,
<B as AcceleratorBackend>::Buffer<i8>: RefUnwindSafe,
<B as AcceleratorBackend>::Buffer<u8>: RefUnwindSafe,
impl<B> Send for DeviceFvmPlan<B>
impl<B> Sync for DeviceFvmPlan<B>
impl<B> Unpin for DeviceFvmPlan<B>where
<B as AcceleratorBackend>::Buffer<u32>: Unpin,
<B as AcceleratorBackend>::Buffer<f64>: Unpin,
<B as AcceleratorBackend>::Buffer<i8>: Unpin,
<B as AcceleratorBackend>::Buffer<u8>: Unpin,
impl<B> UnsafeUnpin for DeviceFvmPlan<B>where
<B as AcceleratorBackend>::Buffer<u32>: UnsafeUnpin,
<B as AcceleratorBackend>::Buffer<f64>: UnsafeUnpin,
<B as AcceleratorBackend>::Buffer<i8>: UnsafeUnpin,
<B as AcceleratorBackend>::Buffer<u8>: UnsafeUnpin,
impl<B> UnwindSafe for DeviceFvmPlan<B>where
<B as AcceleratorBackend>::Buffer<u32>: UnwindSafe,
<B as AcceleratorBackend>::Buffer<f64>: UnwindSafe,
<B as AcceleratorBackend>::Buffer<i8>: UnwindSafe,
<B as AcceleratorBackend>::Buffer<u8>: UnwindSafe,
Blanket Implementations§
Source§impl<T> AccumulatePathExt for T
impl<T> AccumulatePathExt for T
fn accumulate_path<O, I>(path: I) -> Owhere
O: Orientation,
I: IntoIterator<Item = O>,
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
Mutably borrows from an owned value. Read more