Skip to main content

conspire/constitutive/hybrid/
mod.rs

1//! Hybrid constitutive models.
2
3mod elastic;
4mod elastic_viscoplastic;
5mod hyperelastic;
6mod hyperelastic_viscoplastic;
7
8pub use self::{
9    elastic::{additive::ElasticAdditive, multiplicative::ElasticMultiplicative},
10    elastic_viscoplastic::additive::{
11        ElasticViscoplasticAdditiveElastic, ElasticViscoplasticAdditiveViscoplastic,
12    },
13};
14
15pub use crate::constitutive::canonical::Canonical as ElasticMultiplicativeViscoplastic;
16
17use std::{
18    any::type_name,
19    fmt::{self, Debug, Formatter},
20};
21
22/// A hybrid constitutive model based on the additive decomposition.
23#[derive(Clone)]
24pub struct Additive<C1, C2>(C1, C2);
25
26/// A hybrid constitutive model based on the multiplicative decomposition.
27#[derive(Clone)]
28pub struct Multiplicative<C1, C2>(C1, C2);
29
30impl<C1, C2> Debug for Additive<C1, C2> {
31    fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
32        write!(
33            f,
34            "Additive({}, {})",
35            type_name::<C1>()
36                .rsplit("::")
37                .next()
38                .unwrap()
39                .split("<")
40                .next()
41                .unwrap(),
42            type_name::<C2>()
43                .rsplit("::")
44                .next()
45                .unwrap()
46                .split("<")
47                .next()
48                .unwrap()
49        )
50    }
51}
52
53impl<C1, C2> Debug for Multiplicative<C1, C2> {
54    fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
55        write!(
56            f,
57            "Multiplicative({}, {})",
58            type_name::<C1>()
59                .rsplit("::")
60                .next()
61                .unwrap()
62                .split("<")
63                .next()
64                .unwrap(),
65            type_name::<C2>()
66                .rsplit("::")
67                .next()
68                .unwrap()
69                .split("<")
70                .next()
71                .unwrap()
72        )
73    }
74}