sparkl2d_core/dynamics/models/
failure_model.rs

1use crate::dynamics::models::MaximumStressFailure;
2use crate::math::{Matrix, Real};
3
4#[cfg_attr(feature = "cuda", derive(cust_core::DeviceCopy))]
5#[cfg_attr(feature = "serde-serialize", derive(Serialize, Deserialize))]
6#[derive(Copy, Clone, Debug, PartialEq)]
7#[repr(C)]
8pub enum CoreFailureModel {
9    MaximumStress(MaximumStressFailure),
10    Custom(u32),
11}
12
13impl CoreFailureModel {
14    pub fn particle_failed(&self, particle_stress: &Matrix<Real>) -> bool {
15        match self {
16            Self::MaximumStress(m) => m.particle_failed(particle_stress),
17            Self::Custom(_) => false,
18        }
19    }
20}