svMultiPhysics
Loading...
Searching...
No Matches
set_material_props.h
1// SPDX-FileCopyrightText: Copyright (c) Stanford University, The Regents of the University of California, and others.
2// SPDX-License-Identifier: BSD-3-Clause
3
4///////////////////////////////////////////////////////////
5// S e t M a t e r i a l P r o p e r t i e s //
6///////////////////////////////////////////////////////////
7//
8// The 'set_material_props' map defined here sets material
9// properties from values read in from a file.
10
11using SeMaterialPropertiesMapType = std::map<consts::ConstitutiveModelType,
12 std::function<void(DomainParameters*, double, double, double, dmnType&)>>;
13
14SeMaterialPropertiesMapType set_material_props = {
15
16//---------------------------//
17// stIso_nHook //
18//---------------------------//
19//
20{consts::ConstitutiveModelType::stIso_nHook, [](DomainParameters* domain_params, double mu, double kap, double lam,
21 dmnType& lDmn) -> void
22{
23 lDmn.stM.isoType = consts::ConstitutiveModelType::stIso_nHook;
24 lDmn.stM.C10 = 0.5 * mu;
25} },
26
27//---------------------------//
28// stIso_lin //
29//---------------------------//
30//
31{consts::ConstitutiveModelType::stIso_lin, [](DomainParameters* domain_params, double mu, double kap, double lam,
32 dmnType& lDmn) -> void
33{
34 lDmn.stM.isoType = consts::ConstitutiveModelType::stIso_lin;
35 lDmn.stM.C10 = mu;
36} },
37
38//---------------------------//
39// stIso_StVK //
40//---------------------------//
41//
42{consts::ConstitutiveModelType::stIso_StVK, [](DomainParameters* domain_params, double mu, double kap, double lam,
43 dmnType& lDmn) -> void
44{
45 lDmn.stM.isoType = consts::ConstitutiveModelType::stIso_StVK;
46 lDmn.stM.C10 = lam;
47 lDmn.stM.C01 = mu;
48 lDmn.stM.Kpen = kap;
49} },
50
51//---------------------------//
52// stIso_mStVK //
53//---------------------------//
54//
55{consts::ConstitutiveModelType::stIso_mStVK, [](DomainParameters* domain_params, double mu, double kap, double lam,
56 dmnType& lDmn) -> void
57{
58 lDmn.stM.isoType = consts::ConstitutiveModelType::stIso_mStVK;
59 lDmn.stM.C10 = kap;
60 lDmn.stM.C01 = mu;
61 lDmn.stM.Kpen = kap;
62} },
63
64//---------------------------//
65// stIso_MR //
66//---------------------------//
67//
68{consts::ConstitutiveModelType::stIso_MR, [](DomainParameters* domain_params, double mu, double kap, double lam,
69 dmnType& lDmn) -> void
70{
71 lDmn.stM.isoType = consts::ConstitutiveModelType::stIso_MR;
72 lDmn.stM.C10 = domain_params->constitutive_model.mooney_rivlin.c1.value();
73 lDmn.stM.C01 = domain_params->constitutive_model.mooney_rivlin.c2.value();
74} },
75
76//---------------------------//
77// stIso_HGO //
78//---------------------------//
79//
80{consts::ConstitutiveModelType::stIso_HGO, [](DomainParameters* domain_params, double mu, double kap, double lam,
81 dmnType& lDmn) -> void
82{
83 lDmn.stM.isoType = consts::ConstitutiveModelType::stIso_HGO;
84 auto& params = domain_params->constitutive_model.holzapfel_gasser_ogden;
85
86 lDmn.stM.C10 = mu * 0.5;
87 lDmn.stM.aff = params.a4.value();
88 lDmn.stM.bff = params.b4.value();
89 lDmn.stM.ass = params.a6.value();
90 lDmn.stM.bss = params.b6.value();
91 lDmn.stM.kap = params.kappa.value();
92} },
93
94//---------------------------//
95// stIso_Gucci //
96//---------------------------//
97//
98{consts::ConstitutiveModelType::stIso_Gucci, [](DomainParameters* domain_params, double mu, double kap, double lam,
99 dmnType& lDmn) -> void
100{
101 lDmn.stM.isoType = consts::ConstitutiveModelType::stIso_Gucci;
102 auto& params = domain_params->constitutive_model.guccione;
103
104 lDmn.stM.C10 = params.c.value();
105 lDmn.stM.bff = params.bf.value();
106 lDmn.stM.bss = params.bt.value();
107 lDmn.stM.bfs =params.bfs.value();
108} },
109
110//---------------------------//
111// stIso_HO //
112//---------------------------//
113//
114{consts::ConstitutiveModelType::stIso_HO, [](DomainParameters* domain_params, double mu, double kap, double lam,
115 dmnType& lDmn) -> void
116{
117 lDmn.stM.isoType = consts::ConstitutiveModelType::stIso_HO;
118 auto& params = domain_params->constitutive_model.holzapfel;
119
120 lDmn.stM.a = params.a.value();
121 lDmn.stM.b = params.b.value();
122 lDmn.stM.aff = params.a4f.value();
123 lDmn.stM.bff = params.b4f.value();
124 lDmn.stM.ass = params.a4s.value();
125 lDmn.stM.bss = params.b4s.value();
126 lDmn.stM.afs = params.afs.value();
127 lDmn.stM.bfs = params.bfs.value();
128 lDmn.stM.khs = params.k.value();
129} },
130
131//---------------------------//
132// stIso_HO_ma //
133//---------------------------//
134//
135{consts::ConstitutiveModelType::stIso_HO_ma, [](DomainParameters* domain_params, double mu, double kap, double lam,
136 dmnType& lDmn) -> void
137{
138 lDmn.stM.isoType = consts::ConstitutiveModelType::stIso_HO_ma;
139 auto& params = domain_params->constitutive_model.holzapfel;
140 lDmn.stM.a = params.a.value();
141 lDmn.stM.b = params.b.value();
142 lDmn.stM.aff = params.a4f.value();
143 lDmn.stM.bff = params.b4f.value();
144 lDmn.stM.ass = params.a4s.value();
145 lDmn.stM.bss = params.b4s.value();
146 lDmn.stM.afs = params.afs.value();
147 lDmn.stM.bfs = params.bfs.value();
148 lDmn.stM.khs = params.k.value();
149} },
150
151//--------------------------------------------//
152// stArtificialNeuralNet //
153//--------------------------------------------//
154//
155{consts::ConstitutiveModelType::stArtificialNeuralNet, [](DomainParameters* domain_params, double mu, double kap, double lam,
156 dmnType& lDmn) -> void
157{
158 lDmn.stM.isoType = consts::ConstitutiveModelType::stArtificialNeuralNet;
159 auto& params = domain_params->constitutive_model.cann;
160
161 lDmn.stM.paramTable.num_rows = params.rows.size();
162
163 lDmn.stM.paramTable.invariant_indices.resize(lDmn.stM.paramTable.num_rows);
164 lDmn.stM.paramTable.activation_functions.resize(lDmn.stM.paramTable.num_rows,3);
165 lDmn.stM.paramTable.weights.resize(lDmn.stM.paramTable.num_rows,3);
166
167 // Populate components of the table in stM
168 for (size_t i = 0; i < lDmn.stM.paramTable.num_rows; i++)
169 {
170 // Store invariant index
171 lDmn.stM.paramTable.invariant_indices[i] = params.rows[i]->row.invariant_index.value_;
172
173 // Store activation function and weight values
174 for (size_t j = 0; j < 3; j++)
175 {
176 lDmn.stM.paramTable.activation_functions(i,j) = params.rows[i]->row.activation_functions.value_[j];
177 lDmn.stM.paramTable.weights(i,j) = params.rows[i]->row.weights.value_[j];
178 }
179
180 }
181
182} },
183
184//---------------------------//
185// stIso_LS //
186//---------------------------//
187// Lee-Sacks material model.
188//
189{consts::ConstitutiveModelType::stIso_LS, [](DomainParameters* domain_params, double mu, double kap, double lam,
190 dmnType& lDmn) -> void
191{
192 lDmn.stM.isoType = consts::ConstitutiveModelType::stIso_LS;
193 auto& params = domain_params->constitutive_model.lee_sacks;
194
195 lDmn.stM.a = params.a.value();
196 lDmn.stM.a0 = params.a0.value();
197 lDmn.stM.b1 = params.b1.value();
198 lDmn.stM.b2 = params.b2.value();
199 lDmn.stM.mu0 = params.mu0.value();
200
201} },
202
203};
The DomainParameters class stores parameters for the XML 'Domain' element to specify properties for s...
Definition Parameters.h:1145
Domain type is to keep track with element belong to which domain and also different physical quantiti...
Definition ComMod.h:422