unitforge/quantities/
stiffness.rs

1use crate::impl_macros::macros::*;
2use crate::prelude::*;
3use crate::PhysicsUnit;
4use ndarray::{Array1, Array2, ArrayView1, ArrayView2};
5use num_traits::identities::Zero;
6use num_traits::FromPrimitive;
7use std::cmp::Ordering;
8use std::fmt;
9use std::ops::{Add, AddAssign, Div, DivAssign, Mul, MulAssign, Neg, Sub, SubAssign};
10
11#[derive(Copy, Clone, PartialEq)]
12pub enum StiffnessUnit {
13    N_mm,
14    kN_mm,
15    N_m,
16    kN_m,
17}
18
19impl PhysicsUnit for StiffnessUnit {
20    fn name(&self) -> &str {
21        match &self {
22            StiffnessUnit::N_mm => "N/mm",
23            StiffnessUnit::kN_mm => "kN/mm",
24            StiffnessUnit::N_m => "N/m",
25            StiffnessUnit::kN_m => "kN/m",
26        }
27    }
28
29    fn base_per_x(&self) -> f64 {
30        match self {
31            StiffnessUnit::N_mm => 10_f64.powi(3),
32            StiffnessUnit::kN_mm => 10_f64.powi(6),
33            StiffnessUnit::N_m => 10_f64.powi(0),
34            StiffnessUnit::kN_m => 10_f64.powi(3),
35        }
36    }
37}
38
39impl_quantity!(Stiffness, StiffnessUnit, StiffnessUnit::N_mm);
40impl_div_with_self_to_f64!(Stiffness);