sciforge-core 0.0.4

Shared engineering primitives: materials, fasteners, fluids, propulsion taxonomies, std components.
Documentation
use crate::moleculars::{Gas, Liquid, Material};
use sciforge_hub::prelude::physics::acoustics::doppler as sf_dop;

impl Gas {
    pub fn doppler_approaching_hz(
        &self,
        emitted_frequency_hz: f64,
        source_velocity_m_s: f64,
        temperature_k: f64,
    ) -> f64 {
        sf_dop::doppler_approaching(
            emitted_frequency_hz,
            self.speed_of_sound_m_s(temperature_k),
            source_velocity_m_s,
        )
    }

    pub fn doppler_receding_hz(
        &self,
        emitted_frequency_hz: f64,
        source_velocity_m_s: f64,
        temperature_k: f64,
    ) -> f64 {
        sf_dop::doppler_receding(
            emitted_frequency_hz,
            self.speed_of_sound_m_s(temperature_k),
            source_velocity_m_s,
        )
    }

    pub fn doppler_general_hz(
        &self,
        emitted_frequency_hz: f64,
        observer_velocity_m_s: f64,
        source_velocity_m_s: f64,
        temperature_k: f64,
    ) -> f64 {
        sf_dop::doppler_general(
            emitted_frequency_hz,
            self.speed_of_sound_m_s(temperature_k),
            observer_velocity_m_s,
            source_velocity_m_s,
        )
    }

    pub fn mach_cone_angle_rad(&self, velocity_m_s: f64, temperature_k: f64) -> f64 {
        sf_dop::mach_cone_angle(velocity_m_s, self.speed_of_sound_m_s(temperature_k))
    }
}

impl Liquid {
    pub fn doppler_approaching_hz(&self, emitted_frequency_hz: f64, source_velocity_m_s: f64) -> f64 {
        sf_dop::doppler_approaching(emitted_frequency_hz, self.speed_of_sound_m_s(), source_velocity_m_s)
    }

    pub fn doppler_receding_hz(&self, emitted_frequency_hz: f64, source_velocity_m_s: f64) -> f64 {
        sf_dop::doppler_receding(emitted_frequency_hz, self.speed_of_sound_m_s(), source_velocity_m_s)
    }

    pub fn doppler_general_hz(
        &self,
        emitted_frequency_hz: f64,
        observer_velocity_m_s: f64,
        source_velocity_m_s: f64,
    ) -> f64 {
        sf_dop::doppler_general(
            emitted_frequency_hz,
            self.speed_of_sound_m_s(),
            observer_velocity_m_s,
            source_velocity_m_s,
        )
    }
}

impl Material {
    pub fn doppler_approaching_hz(&self, emitted_frequency_hz: f64, source_velocity_m_s: f64) -> f64 {
        sf_dop::doppler_approaching(emitted_frequency_hz, self.speed_of_sound_m_s(), source_velocity_m_s)
    }

    pub fn doppler_receding_hz(&self, emitted_frequency_hz: f64, source_velocity_m_s: f64) -> f64 {
        sf_dop::doppler_receding(emitted_frequency_hz, self.speed_of_sound_m_s(), source_velocity_m_s)
    }
}