pub struct ConservationMonitor {
pub laws: Vec<ConservationLaw>,
pub history: Vec<MonitorSnapshot>,
pub drift_detectors: Vec<DriftDetector>,
}Expand description
Monitors multiple conservation laws simultaneously.
Fields§
§laws: Vec<ConservationLaw>§history: Vec<MonitorSnapshot>§drift_detectors: Vec<DriftDetector>Implementations§
Source§impl ConservationMonitor
impl ConservationMonitor
Sourcepub fn newtonian(tolerance: f64) -> Self
pub fn newtonian(tolerance: f64) -> Self
Pre-built Newtonian monitor: energy + momentum (3) + angular momentum (3) = 7 values.
Sourcepub fn hamiltonian(tolerance: f64) -> Self
pub fn hamiltonian(tolerance: f64) -> Self
Pre-built Hamiltonian monitor: energy only.
Sourcepub fn custom(laws: Vec<ConservationLaw>) -> Self
pub fn custom(laws: Vec<ConservationLaw>) -> Self
Custom monitor with user-supplied laws.
Sourcepub fn expected_value_count(&self) -> usize
pub fn expected_value_count(&self) -> usize
Number of scalar values expected per tick.
Sourcepub fn add_law(&mut self, law: ConservationLaw)
pub fn add_law(&mut self, law: ConservationLaw)
Add a conservation law.
Sourcepub fn tick(&mut self, time: f64, values: &[f64]) -> Result<()>
pub fn tick(&mut self, time: f64, values: &[f64]) -> Result<()>
Record a snapshot: check all conservation laws at time t.
values layout: for each law in order, emit component_count() values.
For Newtonian that is [energy, px, py, pz, lx, ly, lz].
Sourcepub fn total_violations(&self) -> usize
pub fn total_violations(&self) -> usize
Total number of violations across all snapshots.
Trait Implementations§
Source§impl Clone for ConservationMonitor
impl Clone for ConservationMonitor
Source§impl Debug for ConservationMonitor
impl Debug for ConservationMonitor
Auto Trait Implementations§
impl Freeze for ConservationMonitor
impl RefUnwindSafe for ConservationMonitor
impl Send for ConservationMonitor
impl Sync for ConservationMonitor
impl Unpin for ConservationMonitor
impl UnsafeUnpin for ConservationMonitor
impl UnwindSafe for ConservationMonitor
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more