svMultiPhysics
Loading...
Searching...
No Matches
set_material_props.h
1/* Copyright (c) Stanford University, The Regents of the University of California, and others.
2 *
3 * All Rights Reserved.
4 *
5 * See Copyright-SimVascular.txt for additional details.
6 *
7 * Permission is hereby granted, free of charge, to any person obtaining
8 * a copy of this software and associated documentation files (the
9 * "Software"), to deal in the Software without restriction, including
10 * without limitation the rights to use, copy, modify, merge, publish,
11 * distribute, sublicense, and/or sell copies of the Software, and to
12 * permit persons to whom the Software is furnished to do so, subject
13 * to the following conditions:
14 *
15 * The above copyright notice and this permission notice shall be included
16 * in all copies or substantial portions of the Software.
17 *
18 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
19 * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
20 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
21 * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
22 * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
23 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
24 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
25 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
26 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
27 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
28 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29 */
30
31///////////////////////////////////////////////////////////
32// S e t M a t e r i a l P r o p e r t i e s //
33///////////////////////////////////////////////////////////
34//
35// The 'set_material_props' map defined here sets material
36// properties from values read in from a file.
37
38using SeMaterialPropertiesMapType = std::map<consts::ConstitutiveModelType,
39 std::function<void(DomainParameters*, double, double, double, dmnType&)>>;
40
41SeMaterialPropertiesMapType set_material_props = {
42
43//---------------------------//
44// stIso_nHook //
45//---------------------------//
46//
47{consts::ConstitutiveModelType::stIso_nHook, [](DomainParameters* domain_params, double mu, double kap, double lam,
48 dmnType& lDmn) -> void
49{
50 lDmn.stM.isoType = consts::ConstitutiveModelType::stIso_nHook;
51 lDmn.stM.C10 = 0.5 * mu;
52} },
53
54//---------------------------//
55// stIso_lin //
56//---------------------------//
57//
58{consts::ConstitutiveModelType::stIso_lin, [](DomainParameters* domain_params, double mu, double kap, double lam,
59 dmnType& lDmn) -> void
60{
61 lDmn.stM.isoType = consts::ConstitutiveModelType::stIso_lin;
62 lDmn.stM.C10 = mu;
63} },
64
65//---------------------------//
66// stIso_StVK //
67//---------------------------//
68//
69{consts::ConstitutiveModelType::stIso_StVK, [](DomainParameters* domain_params, double mu, double kap, double lam,
70 dmnType& lDmn) -> void
71{
72 lDmn.stM.isoType = consts::ConstitutiveModelType::stIso_StVK;
73 lDmn.stM.C10 = lam;
74 lDmn.stM.C01 = mu;
75 lDmn.stM.Kpen = kap;
76} },
77
78//---------------------------//
79// stIso_mStVK //
80//---------------------------//
81//
82{consts::ConstitutiveModelType::stIso_mStVK, [](DomainParameters* domain_params, double mu, double kap, double lam,
83 dmnType& lDmn) -> void
84{
85 lDmn.stM.isoType = consts::ConstitutiveModelType::stIso_mStVK;
86 lDmn.stM.C10 = kap;
87 lDmn.stM.C01 = mu;
88 lDmn.stM.Kpen = kap;
89} },
90
91//---------------------------//
92// stIso_MR //
93//---------------------------//
94//
95{consts::ConstitutiveModelType::stIso_MR, [](DomainParameters* domain_params, double mu, double kap, double lam,
96 dmnType& lDmn) -> void
97{
98 lDmn.stM.isoType = consts::ConstitutiveModelType::stIso_MR;
99 lDmn.stM.C10 = domain_params->constitutive_model.mooney_rivlin.c1.value();
100 lDmn.stM.C01 = domain_params->constitutive_model.mooney_rivlin.c2.value();
101} },
102
103//---------------------------//
104// stIso_HGO //
105//---------------------------//
106//
107{consts::ConstitutiveModelType::stIso_HGO, [](DomainParameters* domain_params, double mu, double kap, double lam,
108 dmnType& lDmn) -> void
109{
110 lDmn.stM.isoType = consts::ConstitutiveModelType::stIso_HGO;
111 auto& params = domain_params->constitutive_model.holzapfel_gasser_ogden;
112
113 lDmn.stM.C10 = mu * 0.5;
114 lDmn.stM.aff = params.a4.value();
115 lDmn.stM.bff = params.b4.value();
116 lDmn.stM.ass = params.a6.value();
117 lDmn.stM.bss = params.b6.value();
118 lDmn.stM.kap = params.kappa.value();
119} },
120
121//---------------------------//
122// stIso_Gucci //
123//---------------------------//
124//
125{consts::ConstitutiveModelType::stIso_Gucci, [](DomainParameters* domain_params, double mu, double kap, double lam,
126 dmnType& lDmn) -> void
127{
128 lDmn.stM.isoType = consts::ConstitutiveModelType::stIso_Gucci;
129 auto& params = domain_params->constitutive_model.guccione;
130
131 lDmn.stM.C10 = params.c.value();
132 lDmn.stM.bff = params.bf.value();
133 lDmn.stM.bss = params.bt.value();
134 lDmn.stM.bfs =params.bfs.value();
135} },
136
137//---------------------------//
138// stIso_HO //
139//---------------------------//
140//
141{consts::ConstitutiveModelType::stIso_HO, [](DomainParameters* domain_params, double mu, double kap, double lam,
142 dmnType& lDmn) -> void
143{
144 lDmn.stM.isoType = consts::ConstitutiveModelType::stIso_HO;
145 auto& params = domain_params->constitutive_model.holzapfel;
146
147 lDmn.stM.a = params.a.value();
148 lDmn.stM.b = params.b.value();
149 lDmn.stM.aff = params.a4f.value();
150 lDmn.stM.bff = params.b4f.value();
151 lDmn.stM.ass = params.a4s.value();
152 lDmn.stM.bss = params.b4s.value();
153 lDmn.stM.afs = params.afs.value();
154 lDmn.stM.bfs = params.bfs.value();
155 lDmn.stM.khs = params.k.value();
156} },
157
158//---------------------------//
159// stIso_HO_ma //
160//---------------------------//
161//
162{consts::ConstitutiveModelType::stIso_HO_ma, [](DomainParameters* domain_params, double mu, double kap, double lam,
163 dmnType& lDmn) -> void
164{
165 lDmn.stM.isoType = consts::ConstitutiveModelType::stIso_HO_ma;
166 auto& params = domain_params->constitutive_model.holzapfel;
167 lDmn.stM.a = params.a.value();
168 lDmn.stM.b = params.b.value();
169 lDmn.stM.aff = params.a4f.value();
170 lDmn.stM.bff = params.b4f.value();
171 lDmn.stM.ass = params.a4s.value();
172 lDmn.stM.bss = params.b4s.value();
173 lDmn.stM.afs = params.afs.value();
174 lDmn.stM.bfs = params.bfs.value();
175 lDmn.stM.khs = params.k.value();
176} },
177
178//---------------------------//
179// stIso_LS //
180//---------------------------//
181// Lee-Sacks material model.
182//
183{consts::ConstitutiveModelType::stIso_LS, [](DomainParameters* domain_params, double mu, double kap, double lam,
184 dmnType& lDmn) -> void
185{
186 lDmn.stM.isoType = consts::ConstitutiveModelType::stIso_LS;
187 auto& params = domain_params->constitutive_model.lee_sacks;
188
189 lDmn.stM.a = params.a.value();
190 lDmn.stM.a0 = params.a0.value();
191 lDmn.stM.b1 = params.b1.value();
192 lDmn.stM.b2 = params.b2.value();
193 lDmn.stM.mu0 = params.mu0.value();
194
195} },
196
197};
The DomainParameters class stores parameters for the XML 'Domain' element to specify properties for s...
Definition Parameters.h:1073
Domain type is to keep track with element belong to which domain and also different physical quantiti...
Definition ComMod.h:432