pub struct AcousticSolver2D {
pub p: Grid2D,
pub vx: Grid2D,
pub vy: Grid2D,
/* private fields */
}Expand description
Solveur acoustique 2D (FDTD, schéma saute-mouton sur grille décalée).
Disposition : p[x,y] au centre des cellules, vx[x,y] entre p[x,y] et
p[x+1,y], vy[x,y] entre p[x,y] et p[x,y+1].
Les frontières sont des murs rigides (vitesse normale nulle), sauf si
set_absorbing_boundary est utilisé.
Fields§
§p: Grid2D§vx: Grid2D§vy: Grid2DImplementations§
Source§impl AcousticSolver2D
impl AcousticSolver2D
pub fn new( nx: usize, ny: usize, dx: f32, dy: f32, default_rho: f32, default_c: f32, ) -> Self
Sourcepub fn rho(&self) -> &Grid2D
pub fn rho(&self) -> &Grid2D
Densité (lecture seule). Utiliser set_medium pour modifier.
Sourcepub fn set_pml_boundary(&mut self, width: usize, max_sigma: f32)
pub fn set_pml_boundary(&mut self, width: usize, max_sigma: f32)
Configure des couches absorbantes PML sur les bords.
width : épaisseur en nombre de cellules (ex: 20 à 30).
max_sigma : intensité maximale de l’amortissement.
Sourcepub fn bulk_modulus(&self) -> &Grid2D
pub fn bulk_modulus(&self) -> &Grid2D
Module de compressibilité K = ρc² (lecture seule).
Sourcepub fn set_medium(&mut self, x: usize, y: usize, rho: f32, c: f32)
pub fn set_medium(&mut self, x: usize, y: usize, rho: f32, c: f32)
Définit le milieu d’une cellule : densité rho et vitesse du son c.
Sourcepub fn set_medium_rect(
&mut self,
x0: usize,
y0: usize,
x1: usize,
y1: usize,
rho: f32,
c: f32,
)
pub fn set_medium_rect( &mut self, x0: usize, y0: usize, x1: usize, y1: usize, rho: f32, c: f32, )
Définit le milieu d’un rectangle [x0, x1) × [y0, y1).
Sourcepub fn max_stable_dt(&self) -> f32
pub fn max_stable_dt(&self) -> f32
Pas de temps maximal stable (condition CFL 2D) pour le milieu actuel.
Sourcepub fn stable_dt(&self, safety: f32) -> f32
pub fn stable_dt(&self, safety: f32) -> f32
safety × max_stable_dt(), avec 0 < safety <= 1 (0.9 est un bon choix).
Sourcepub fn set_absorbing_boundary(&mut self, width: usize, max_damping: f32)
pub fn set_absorbing_boundary(&mut self, width: usize, max_damping: f32)
Couche éponge de width cellules sur les 4 bords.
max_damping (entre 0 et 1) est la fraction d’amplitude retirée à chaque
pas sur le bord extérieur ; le profil décroît de façon quadratique vers
l’intérieur. Valeurs typiques : width 15–30, max_damping 0.05–0.2.
width = 0 désactive l’amortissement (murs rigides).
Sourcepub fn add_source(
&mut self,
x: usize,
y: usize,
waveform: Waveform,
amplitude: f32,
)
pub fn add_source( &mut self, x: usize, y: usize, waveform: Waveform, amplitude: f32, )
Ajoute une source ponctuelle pilotée par une forme d’onde.
Sourcepub fn inject_source(&mut self, x: usize, y: usize, value: f32)
pub fn inject_source(&mut self, x: usize, y: usize, value: f32)
Injecte instantanément une impulsion de pression.
Sourcepub fn add_receiver(&mut self, x: usize, y: usize) -> usize
pub fn add_receiver(&mut self, x: usize, y: usize) -> usize
Ajoute un récepteur ; retourne son identifiant.
Auto Trait Implementations§
impl Freeze for AcousticSolver2D
impl RefUnwindSafe for AcousticSolver2D
impl Send for AcousticSolver2D
impl Sync for AcousticSolver2D
impl Unpin for AcousticSolver2D
impl UnsafeUnpin for AcousticSolver2D
impl UnwindSafe for AcousticSolver2D
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
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> ⓘ
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> ⓘ
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