pub struct InterferenceProblem {
pub frequency: Hertz,
pub medium: ScalarMedium,
pub sources: SourceSet,
pub singularity_radius: PositiveMetres,
}Expand description
A coherent scalar-wave problem in one homogeneous medium.
The model uses the real field
u(x, t) = Re{U(x) * exp(-i * omega * t)} and the complex wavenumber
k_tilde = omega / c + i * alpha. Away from point sources, the phasor
satisfies laplacian(U) + k_tilde^2 * U = 0.
The positive outgoing sign is exp(i * k_tilde * distance): phase advances
with distance while non-negative alpha attenuates it. Point-source
amplitudes are stated at POINT_SOURCE_REFERENCE_DISTANCE_METRES and
samples at or inside singularity_radius are outside the model.
Fields§
§frequency: HertzThe one frequency shared by every coherent source.
medium: ScalarMediumThe homogeneous scalar propagation medium.
sources: SourceSetThe non-empty, canonically ordered coherent sources.
singularity_radius: PositiveMetresThe positive exclusion radius around every point source.
Implementations§
Source§impl InterferenceProblem
impl InterferenceProblem
Sourcepub fn new(
frequency: Hertz,
medium: ScalarMedium,
sources: SourceSet,
singularity_radius: PositiveMetres,
) -> Self
pub fn new( frequency: Hertz, medium: ScalarMedium, sources: SourceSet, singularity_radius: PositiveMetres, ) -> Self
Constructs a problem from checked components.
Sourcepub fn angular_frequency_radians_per_second(&self) -> f64
pub fn angular_frequency_radians_per_second(&self) -> f64
Returns the angular frequency omega = 2 * pi * frequency.
Sourcepub fn wavenumber(&self) -> WaveNumber
pub fn wavenumber(&self) -> WaveNumber
Returns this problem’s complex wavenumber.
Sourcepub fn wavelength_metres(&self) -> f64
pub fn wavelength_metres(&self) -> f64
Returns the unattenuated wavelength c / frequency in metres.
Trait Implementations§
Source§impl Clone for InterferenceProblem
impl Clone for InterferenceProblem
Source§fn clone(&self) -> InterferenceProblem
fn clone(&self) -> InterferenceProblem
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more