pub struct KernelGrid {
pub width: u32,
pub height: u32,
pub params: AcousticParams,
/* private fields */
}Expand description
A simulation grid backed by RingKernel actors.
Each cell in the grid is a persistent kernel that maintains its own state and communicates with neighbors via message passing.
Fields§
§width: u32Grid width (number of columns).
height: u32Grid height (number of rows).
params: AcousticParamsAcoustic simulation parameters.
Implementations§
Source§impl KernelGrid
impl KernelGrid
Sourcepub async fn new(
width: u32,
height: u32,
params: AcousticParams,
backend: Backend,
) -> Result<Self>
pub async fn new( width: u32, height: u32, params: AcousticParams, backend: Backend, ) -> Result<Self>
Create a new kernel-based simulation grid.
§Arguments
width- Number of columnsheight- Number of rowsparams- Acoustic simulation parametersbackend- The compute backend to use
Sourcepub async fn step(&mut self) -> Result<()>
pub async fn step(&mut self) -> Result<()>
Perform one simulation step using kernel actors.
This coordinates the pressure exchange and computation across all kernel actors.
Sourcepub fn inject_impulse(&mut self, x: u32, y: u32, amplitude: f32)
pub fn inject_impulse(&mut self, x: u32, y: u32, amplitude: f32)
Inject an impulse at the given grid position.
Sourcepub fn get_pressure_grid(&self) -> Vec<Vec<f32>>
pub fn get_pressure_grid(&self) -> Vec<Vec<f32>>
Get the pressure grid for visualization.
Sourcepub fn max_pressure(&self) -> f32
pub fn max_pressure(&self) -> f32
Get the maximum absolute pressure in the grid.
Sourcepub fn total_energy(&self) -> f32
pub fn total_energy(&self) -> f32
Get total energy in the system.
Sourcepub fn set_speed_of_sound(&mut self, speed: f32)
pub fn set_speed_of_sound(&mut self, speed: f32)
Update acoustic parameters.
Sourcepub fn set_cell_size(&mut self, size: f32)
pub fn set_cell_size(&mut self, size: f32)
Update cell size.
Sourcepub fn cell_count(&self) -> usize
pub fn cell_count(&self) -> usize
Get the number of cells.
Sourcepub async fn switch_backend(&mut self, backend: Backend) -> Result<()>
pub async fn switch_backend(&mut self, backend: Backend) -> Result<()>
Switch to a different backend.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for KernelGrid
impl !RefUnwindSafe for KernelGrid
impl Send for KernelGrid
impl Sync for KernelGrid
impl Unpin for KernelGrid
impl !UnwindSafe for KernelGrid
Blanket Implementations§
Source§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
Source§type ArchivedMetadata = ()
type ArchivedMetadata = ()
The archived version of the pointer metadata for this type.
Source§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
Converts some archived metadata to the pointer metadata for itself.
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
Source§impl<F, W, T, D> Deserialize<With<T, W>, D> for F
impl<F, W, T, D> Deserialize<With<T, W>, D> for F
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Convert
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Convert
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
Convert
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<State, Message> IntoBoot<State, Message> for State
impl<State, Message> IntoBoot<State, Message> for State
Source§fn into_boot(self) -> (State, Task<Message>)
fn into_boot(self) -> (State, Task<Message>)
Turns some type into the initial state of some
Application.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>
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 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>
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 moreSource§impl<T> LayoutRaw for T
impl<T> LayoutRaw for T
Source§fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
Gets the layout of the type.