use crate::imports::*;
use crate::train::TrainState;
#[serde_api]
#[derive(Debug, Clone, Copy, Serialize, Deserialize, Default, PartialEq)]
#[cfg_attr(feature = "pyo3", pyclass(module = "altrios", subclass, eq))]
pub struct Basic {
cd_area: si::Area,
}
#[pyo3_api]
impl Basic {}
impl Init for Basic {}
impl SerdeAPI for Basic {}
impl Basic {
pub fn new(cd_area: si::Area) -> Self {
Self { cd_area }
}
pub fn calc_res(&mut self, state: &TrainState) -> anyhow::Result<si::Force> {
Ok(self.cd_area
* uc::rho_air()
* *state.speed.get_unchecked(|| format_dbg!())?
* *state.speed.get_unchecked(|| format_dbg!())?)
}
}