pub struct MultiBandDamping {
pub center_frequencies: Vec<f32>,
pub damping_coefficients: Vec<f32>,
pub num_bands: usize,
}Expand description
Multi-band damping coefficients for efficient GPU computation.
Pre-computes absorption for multiple frequency bands to avoid per-sample FFT computations in the main FDTD loop.
Fields§
§center_frequencies: Vec<f32>Center frequencies for each band (Hz)
damping_coefficients: Vec<f32>Damping coefficient per band (linear multiplier per time step)
num_bands: usizeNumber of frequency bands
Implementations§
Source§impl MultiBandDamping
impl MultiBandDamping
Sourcepub fn from_environment(
env: &Environment,
time_step: f32,
_cell_size: f32,
) -> Self
pub fn from_environment( env: &Environment, time_step: f32, _cell_size: f32, ) -> Self
Create multi-band damping from environment conditions.
Uses octave bands from 31.5 Hz to 16 kHz (standard ISO bands).
Sourcepub fn single_band(damping_factor: f32) -> Self
pub fn single_band(damping_factor: f32) -> Self
Create simplified single-band damping.
Sourcepub fn damping_for_frequency(&self, frequency: f32) -> f32
pub fn damping_for_frequency(&self, frequency: f32) -> f32
Get the effective damping for a dominant frequency.
Sourcepub fn average_damping(&self) -> f32
pub fn average_damping(&self) -> f32
Get average damping across all bands (for simple simulations).
Trait Implementations§
Source§impl Clone for MultiBandDamping
impl Clone for MultiBandDamping
Source§fn clone(&self) -> MultiBandDamping
fn clone(&self) -> MultiBandDamping
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreAuto Trait Implementations§
impl Freeze for MultiBandDamping
impl RefUnwindSafe for MultiBandDamping
impl Send for MultiBandDamping
impl Sync for MultiBandDamping
impl Unpin for MultiBandDamping
impl UnwindSafe for MultiBandDamping
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
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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<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 more