unitforge/quantities/
stiffness.rs1use 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);