1 #ifndef BC_OPERATOR_ELASTIC_TENSIONTEST_H
2 #define BC_OPERATOR_ELASTIC_TENSIONTEST_H
16 static constexpr
const char*
name =
"tensiontest";
28 using Constant::operator();
36 std::string type =
"uniaxial_stress_clamp";
37 std::string disp =
"0.0", trac =
"0.0";
47 mode = LoadingMode::DISP;
52 mode = LoadingMode::TRAC;
57 if (type ==
"uniaxial_stress_clamp")
73 for (
int i = 0 ; i < AMREX_SPACEDIM ; i++)
75 value.
m_bc_type[Face::YLO][i] = Type::Traction;
76 value.
m_bc_type[Face::YHI][i] = Type::Traction;
78 value.
m_bc_type[Face::ZLO][i] = Type::Traction;
79 value.
m_bc_type[Face::ZHI][i] = Type::Traction;
80 value.
m_bc_type[Face::YLO_ZLO][i] = Type::Traction;
81 value.
m_bc_type[Face::YHI_ZLO][i] = Type::Traction;
82 value.
m_bc_type[Face::YLO_ZHI][i] = Type::Traction;
83 value.
m_bc_type[Face::YHI_ZHI][i] = Type::Traction;
87 else if (type ==
"uniaxial_kolsky")
94 for (
int i = 0 ; i < AMREX_SPACEDIM ; i++)
96 value.
m_bc_type[Face::YLO][i] = Type::Traction;
97 value.
m_bc_type[Face::YHI][i] = Type::Traction;
100 else if (type ==
"uniaxial_stress")
103 for (
int face = 0; face < m_nfaces; face++)
104 for (
int i = 0; i < AMREX_SPACEDIM; i++)
105 value.
m_bc_type[face][i] = Type::Traction;
109 value.
m_bc_type[Face::XLO][0] = Type::Displacement;
110 value.
m_bc_type[Face::XLO_YLO][0] = Type::Displacement;
111 value.
m_bc_type[Face::XLO_YHI][0] = Type::Displacement;
112 #
if AMREX_SPACEDIM == 3
113 value.
m_bc_type[Face::ZLO_XLO][0] = Type::Displacement;
114 value.
m_bc_type[Face::ZHI_XLO][0] = Type::Displacement;
115 value.
m_bc_type[Face::XLO_YLO_ZLO][0] = Type::Displacement;
116 value.
m_bc_type[Face::XLO_YLO_ZHI][0] = Type::Displacement;
117 value.
m_bc_type[Face::XLO_YHI_ZLO][0] = Type::Displacement;
118 value.
m_bc_type[Face::XLO_YHI_ZHI][0] = Type::Displacement;
122 if (mode == TensionTest::LoadingMode::DISP)
124 value.
m_bc_type[Face::XHI][0] = Type::Displacement;
126 value.
m_bc_type[Face::XHI_YLO][0] = Type::Displacement;
128 value.
m_bc_type[Face::XHI_YHI][0] = Type::Displacement;
131 else if (mode == TensionTest::LoadingMode::TRAC)
133 value.
m_bc_type[Face::XHI][0] = Type::Traction;
135 value.
m_bc_type[Face::XHI_YLO][0] = Type::Traction;
137 value.
m_bc_type[Face::XHI_YHI][0] = Type::Traction;
140 #if AMREX_SPACEDIM == 3
141 if (mode == TensionTest::LoadingMode::DISP)
143 value.
m_bc_type[Face::ZLO_XHI][0] = Type::Displacement;
145 value.
m_bc_type[Face::ZHI_XHI][0] = Type::Displacement;
147 value.
m_bc_type[Face::XHI_YLO_ZLO][0] = Type::Displacement;
149 value.
m_bc_type[Face::XHI_YLO_ZHI][0] = Type::Displacement;
151 value.
m_bc_type[Face::XHI_YHI_ZLO][0] = Type::Displacement;
153 value.
m_bc_type[Face::XHI_YHI_ZHI][0] = Type::Displacement;
156 if (mode == TensionTest::LoadingMode::TRAC)
158 value.
m_bc_type[Face::ZLO_XHI][0] = Type::Traction;
160 value.
m_bc_type[Face::ZHI_XHI][0] = Type::Traction;
162 value.
m_bc_type[Face::XHI_YLO_ZLO][0] = Type::Traction;
164 value.
m_bc_type[Face::XHI_YLO_ZHI][0] = Type::Traction;
166 value.
m_bc_type[Face::XHI_YHI_ZLO][0] = Type::Traction;
168 value.
m_bc_type[Face::XHI_YHI_ZHI][0] = Type::Traction;
174 value.
m_bc_type[Face::YLO][1] = Type::Displacement;
175 value.
m_bc_type[Face::XLO_YLO][1] = Type::Displacement;
176 value.
m_bc_type[Face::XHI_YLO][1] = Type::Displacement;
177 #if AMREX_SPACEDIM == 3
178 value.
m_bc_type[Face::YLO_ZLO][1] = Type::Displacement;
179 value.
m_bc_type[Face::YLO_ZHI][1] = Type::Displacement;
180 value.
m_bc_type[Face::XLO_YLO_ZLO][1] = Type::Displacement;
181 value.
m_bc_type[Face::XLO_YLO_ZHI][1] = Type::Displacement;
182 value.
m_bc_type[Face::XHI_YLO_ZLO][1] = Type::Displacement;
183 value.
m_bc_type[Face::XHI_YLO_ZHI][1] = Type::Displacement;
186 #if AMREX_SPACEDIM == 3
188 value.
m_bc_type[Face::ZLO][2] = Type::Displacement;
189 value.
m_bc_type[Face::YLO_ZLO][2] = Type::Displacement;
190 value.
m_bc_type[Face::YHI_ZLO][2] = Type::Displacement;
191 value.
m_bc_type[Face::ZLO_XLO][2] = Type::Displacement;
192 value.
m_bc_type[Face::ZLO_XHI][2] = Type::Displacement;
193 value.
m_bc_type[Face::XLO_YLO_ZLO][2] = Type::Displacement;
194 value.
m_bc_type[Face::XLO_YHI_ZLO][2] = Type::Displacement;
195 value.
m_bc_type[Face::XHI_YLO_ZLO][2] = Type::Displacement;
196 value.
m_bc_type[Face::XHI_YHI_ZLO][2] = Type::Displacement;
200 else if (type ==
"uniaxial_strain")
203 for (
int face = 0; face < m_nfaces; face++)
204 for (
int i = 0; i < AMREX_SPACEDIM; i++)
205 value.
m_bc_type[face][i] = Type::Traction;
209 value.
m_bc_type[Face::XLO][0] = Type::Displacement;
210 value.
m_bc_type[Face::XLO_YLO][0] = Type::Displacement;
211 value.
m_bc_type[Face::XLO_YHI][0] = Type::Displacement;
212 #
if AMREX_SPACEDIM == 3
213 value.
m_bc_type[Face::ZLO_XLO][0] = Type::Displacement;
214 value.
m_bc_type[Face::ZHI_XLO][0] = Type::Displacement;
215 value.
m_bc_type[Face::XLO_YLO_ZLO][0] = Type::Displacement;
216 value.
m_bc_type[Face::XLO_YLO_ZHI][0] = Type::Displacement;
217 value.
m_bc_type[Face::XLO_YHI_ZLO][0] = Type::Displacement;
218 value.
m_bc_type[Face::XLO_YHI_ZHI][0] = Type::Displacement;
222 value.
m_bc_type[Face::XHI][0] = Type::Displacement;
224 value.
m_bc_type[Face::XHI_YLO][0] = Type::Displacement;
226 value.
m_bc_type[Face::XHI_YHI][0] = Type::Displacement;
228 #if AMREX_SPACEDIM == 3
229 value.
m_bc_type[Face::ZLO_XHI][0] = Type::Displacement;
231 value.
m_bc_type[Face::ZHI_XHI][0] = Type::Displacement;
233 value.
m_bc_type[Face::XHI_YLO_ZLO][0] = Type::Displacement;
235 value.
m_bc_type[Face::XHI_YLO_ZHI][0] = Type::Displacement;
237 value.
m_bc_type[Face::XHI_YHI_ZLO][0] = Type::Displacement;
239 value.
m_bc_type[Face::XHI_YHI_ZHI][0] = Type::Displacement;
244 value.
m_bc_type[Face::YLO][1] = Type::Displacement;
245 value.
m_bc_type[Face::XLO_YLO][1] = Type::Displacement;
246 value.
m_bc_type[Face::XHI_YLO][1] = Type::Displacement;
247 value.
m_bc_type[Face::YHI][1] = Type::Displacement;
248 value.
m_bc_type[Face::XLO_YHI][1] = Type::Displacement;
249 value.
m_bc_type[Face::XHI_YHI][1] = Type::Displacement;
250 #if AMREX_SPACEDIM == 3
251 value.
m_bc_type[Face::YLO_ZLO][1] = Type::Displacement;
252 value.
m_bc_type[Face::YLO_ZHI][1] = Type::Displacement;
253 value.
m_bc_type[Face::YHI_ZLO][1] = Type::Displacement;
254 value.
m_bc_type[Face::YHI_ZHI][1] = Type::Displacement;
255 value.
m_bc_type[Face::XLO_YLO_ZLO][1] = Type::Displacement;
256 value.
m_bc_type[Face::XLO_YLO_ZHI][1] = Type::Displacement;
257 value.
m_bc_type[Face::XHI_YLO_ZLO][1] = Type::Displacement;
258 value.
m_bc_type[Face::XHI_YLO_ZHI][1] = Type::Displacement;
259 value.
m_bc_type[Face::XLO_YHI_ZLO][1] = Type::Displacement;
260 value.
m_bc_type[Face::XLO_YHI_ZHI][1] = Type::Displacement;
261 value.
m_bc_type[Face::XHI_YHI_ZLO][1] = Type::Displacement;
262 value.
m_bc_type[Face::XHI_YHI_ZHI][1] = Type::Displacement;
265 #if AMREX_SPACEDIM == 3
266 value.
m_bc_type[Face::ZLO][2] = Type::Displacement;
267 value.
m_bc_type[Face::ZHI][2] = Type::Displacement;
268 value.
m_bc_type[Face::YLO_ZLO][2] = Type::Displacement;
269 value.
m_bc_type[Face::YHI_ZLO][2] = Type::Displacement;
270 value.
m_bc_type[Face::ZLO_XLO][2] = Type::Displacement;
271 value.
m_bc_type[Face::ZLO_XHI][2] = Type::Displacement;
272 value.
m_bc_type[Face::YLO_ZHI][2] = Type::Displacement;
273 value.
m_bc_type[Face::YHI_ZHI][2] = Type::Displacement;
274 value.
m_bc_type[Face::ZHI_XLO][2] = Type::Displacement;
275 value.
m_bc_type[Face::ZHI_XHI][2] = Type::Displacement;
276 value.
m_bc_type[Face::XLO_YLO_ZLO][2] = Type::Displacement;
277 value.
m_bc_type[Face::XLO_YHI_ZLO][2] = Type::Displacement;
278 value.
m_bc_type[Face::XHI_YLO_ZLO][2] = Type::Displacement;
279 value.
m_bc_type[Face::XHI_YHI_ZLO][2] = Type::Displacement;
280 value.
m_bc_type[Face::XLO_YLO_ZHI][2] = Type::Displacement;
281 value.
m_bc_type[Face::XLO_YHI_ZHI][2] = Type::Displacement;
282 value.
m_bc_type[Face::XHI_YLO_ZHI][2] = Type::Displacement;
283 value.
m_bc_type[Face::XHI_YHI_ZHI][2] = Type::Displacement;