Skip to main content

conspire/constitutive/hybrid/elastic/multiplicative/
mod.rs

1mod elastic;
2
3use crate::constitutive::{hybrid::Multiplicative, solid::elastic::Elastic};
4use std::ops::Deref;
5
6/// A hybrid elastic constitutive model based on the multiplicative decomposition.
7#[derive(Clone, Debug)]
8pub struct ElasticMultiplicative<C1, C2>
9where
10    C1: Elastic,
11    C2: Elastic,
12{
13    inner: Multiplicative<C1, C2>,
14}
15
16impl<C1, C2> Deref for ElasticMultiplicative<C1, C2>
17where
18    C1: Elastic,
19    C2: Elastic,
20{
21    type Target = Multiplicative<C1, C2>;
22    fn deref(&self) -> &Self::Target {
23        &self.inner
24    }
25}
26
27impl<C1, C2> From<(C1, C2)> for ElasticMultiplicative<C1, C2>
28where
29    C1: Elastic,
30    C2: Elastic,
31{
32    fn from((constitutive_model_1, constitutive_model_2): (C1, C2)) -> Self {
33        Self {
34            inner: Multiplicative(constitutive_model_1, constitutive_model_2),
35        }
36    }
37}