Skip to main content

oxiphysics_materials/eos/
vineteos_traits.rs

1//! # VinetEos - Trait Implementations
2//!
3//! This module contains trait implementations for `VinetEos`.
4//!
5//! ## Implemented Traits
6//!
7//! - `EquationOfState`
8//!
9//! 🤖 Generated with [SplitRS](https://github.com/cool-japan/splitrs)
10
11use super::functions::EquationOfState;
12#[allow(unused_imports)]
13use super::functions::*;
14use super::types::VinetEos;
15
16impl EquationOfState for VinetEos {
17    fn pressure(&self, density: f64) -> f64 {
18        self.pressure_from_volume(1.0 / density)
19    }
20    fn sound_speed(&self, density: f64) -> f64 {
21        let h = density * 1e-6;
22        let p_hi = self.pressure_from_volume(1.0 / (density + h));
23        let p_lo = self.pressure_from_volume(1.0 / (density - h));
24        ((p_lo - p_hi) / (2.0 * h)).max(0.0).sqrt()
25    }
26    fn density_from_pressure(&self, pressure: f64) -> f64 {
27        1.0 / self.volume(pressure)
28    }
29}