pub trait Engine<const N: usize> {
Show 13 methods
// Required methods
fn space(&self) -> &NodeSpace<N>;
fn node_range(&self) -> Range<usize>;
fn alloc<T: Default>(&self, len: usize) -> &mut [T];
fn value(&self, field: &[f64], vertex: [usize; N]) -> f64;
fn derivative(&self, field: &[f64], axis: usize, vertex: [usize; N]) -> f64;
fn second_derivative(
&self,
field: &[f64],
axis: usize,
vertex: [usize; N],
) -> f64;
fn mixed_derivative(
&self,
field: &[f64],
i: usize,
j: usize,
vertex: [usize; N],
) -> f64;
fn dissipation(&self, field: &[f64], axis: usize, vertex: [usize; N]) -> f64;
// Provided methods
fn num_nodes(&self) -> usize { ... }
fn vertex_size(&self) -> [usize; N] { ... }
fn position(&self, vertex: [usize; N]) -> [f64; N] { ... }
fn index_from_vertex(&self, vertex: [usize; N]) -> usize { ... }
fn min_spacing(&self) -> f64 { ... }
}Expand description
An interface for computing values, gradients, and hessians of fields.
Required Methods§
fn space(&self) -> &NodeSpace<N>
fn node_range(&self) -> Range<usize>
fn alloc<T: Default>(&self, len: usize) -> &mut [T]
fn value(&self, field: &[f64], vertex: [usize; N]) -> f64
fn derivative(&self, field: &[f64], axis: usize, vertex: [usize; N]) -> f64
fn second_derivative( &self, field: &[f64], axis: usize, vertex: [usize; N], ) -> f64
fn mixed_derivative( &self, field: &[f64], i: usize, j: usize, vertex: [usize; N], ) -> f64
fn dissipation(&self, field: &[f64], axis: usize, vertex: [usize; N]) -> f64
Provided Methods§
fn num_nodes(&self) -> usize
fn vertex_size(&self) -> [usize; N]
fn position(&self, vertex: [usize; N]) -> [f64; N]
fn index_from_vertex(&self, vertex: [usize; N]) -> usize
fn min_spacing(&self) -> f64
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.