conspire/constitutive/hybrid/
mod.rs1mod 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#[derive(Clone)]
24pub struct Additive<C1, C2>(C1, C2);
25
26#[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}