use deep_causality_algebra::RealField;
use deep_causality_physics::SolenoidalField;
#[derive(Debug, Clone, PartialEq)]
pub struct StepOutput<R: RealField> {
state: SolenoidalField<R>,
max_speed: R,
divergence_residual: R,
}
impl<R: RealField> StepOutput<R> {
pub(crate) fn new(state: SolenoidalField<R>, max_speed: R, divergence_residual: R) -> Self {
Self {
state,
max_speed,
divergence_residual,
}
}
pub fn state(&self) -> &SolenoidalField<R> {
&self.state
}
pub fn max_speed(&self) -> R {
self.max_speed
}
pub fn divergence_residual(&self) -> R {
self.divergence_residual
}
pub fn into_state(self) -> SolenoidalField<R> {
self.state
}
}
#[derive(Debug, Clone, PartialEq)]
pub struct RunOutput<R: RealField> {
state: SolenoidalField<R>,
steps: usize,
satisfied: bool,
}
impl<R: RealField> RunOutput<R> {
pub(crate) fn new(state: SolenoidalField<R>, steps: usize, satisfied: bool) -> Self {
Self {
state,
steps,
satisfied,
}
}
pub fn state(&self) -> &SolenoidalField<R> {
&self.state
}
pub fn steps(&self) -> usize {
self.steps
}
pub fn satisfied(&self) -> bool {
self.satisfied
}
pub fn into_state(self) -> SolenoidalField<R> {
self.state
}
}