use deep_causality_core::{CausalityError, PropagatingEffect};
use deep_causality_tensor::CausalTensor;
use crate::solvers::dec::DecNsScalar;
use crate::solvers::dec::dec_ns_solver::DecNsSolver;
use deep_causality_physics::SolenoidalField;
pub fn dec_ns_step<const D: usize, R>(
solver: &DecNsSolver<'_, D, R>,
state: &SolenoidalField<R>,
) -> PropagatingEffect<CausalTensor<R>>
where
R: DecNsScalar,
{
match solver.step(state) {
Ok(output) => PropagatingEffect::pure(output.state().as_one_form().clone()),
Err(e) => PropagatingEffect::from_error(CausalityError::from(e)),
}
}