sciforge-core 0.0.4

Shared engineering primitives: materials, fasteners, fluids, propulsion taxonomies, std components.
Documentation
use crate::moleculars::Gas;
use sciforge_hub::prelude::constants::physics::electronics::paschen;
use sciforge_hub::prelude::physics::electronics::amplifiers as sf_amp;
use sciforge_hub::prelude::physics::electronics::devices as sf_dev;

impl Gas {
    pub fn thermal_voltage_v(&self) -> f64 {
        sf_amp::thermal_voltage(self.temperature_ref_k)
    }

    pub fn thermal_voltage_at_v(&self, temperature_k: f64) -> f64 {
        sf_amp::thermal_voltage(temperature_k)
    }

    pub fn paschen_coefficients(&self) -> Option<(f64, f64, f64)> {
        paschen::by_formula(self.formula).map(|p| (p.a_per_pa_m, p.b_v_per_pa_m, p.gamma))
    }

    pub fn breakdown_voltage_v(&self, gap_m: f64) -> Option<f64> {
        let p = paschen::by_formula(self.formula)?;
        Some(sf_dev::paschen_breakdown(
            self.pressure_ref_pa,
            gap_m,
            p.a_per_pa_m,
            p.b_v_per_pa_m,
            p.gamma,
        ))
    }

    pub fn breakdown_voltage_at_v(&self, pressure_pa: f64, gap_m: f64) -> Option<f64> {
        let p = paschen::by_formula(self.formula)?;
        Some(sf_dev::paschen_breakdown(
            pressure_pa,
            gap_m,
            p.a_per_pa_m,
            p.b_v_per_pa_m,
            p.gamma,
        ))
    }

    pub fn breakdown_field_v_per_m(&self, gap_m: f64) -> Option<f64> {
        self.breakdown_voltage_v(gap_m).map(|v| v / gap_m)
    }
}