v0.14.0
Loading...
Searching...
No Matches
MortarCtestFunctions.hpp
Go to the documentation of this file.
1/** \file MortarCtestFunctions.hpp
2 */
3
4/* This file is part of MoFEM.
5 * MoFEM is free software: you can redistribute it and/or modify it under
6 * the terms of the GNU Lesser General Public License as published by the
7 * Free Software Foundation, either version 3 of the License, or (at your
8 * option) any later version.
9 *
10 * MoFEM is distributed in the hope that it will be useful, but WITHOUT
11 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
12 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
13 * License for more details.
14 *
15 * You should have received a copy of the GNU Lesser General Public
16 * License along with MoFEM. If not, see <http://www.gnu.org/licenses/>. */
17#pragma once
18
19#ifndef __MORTAR_CTEST_FUNCTIONS_HPP__
20#define __MORTAR_CTEST_FUNCTIONS_HPP__
21
23
38};
39
40MoFEMErrorCode get_night_hertz_2D_results(int ss, double &exp_energy,
41 double &expected_contact_area,
42 int &exp_nb_gauss_pts) {
44 switch (ss) {
45 case 0:
46 exp_energy = 1.6140e-08;
47 expected_contact_area = 0.001342793;
48 exp_nb_gauss_pts = 4230;
49 break;
50 case 1:
51 exp_energy = 5.9959e-08;
52 expected_contact_area = 0.001860186;
53 exp_nb_gauss_pts = 5876;
54 break;
55 case 2:
56 exp_energy = 1.2880e-07;
57 expected_contact_area = 0.002319399;
58 exp_nb_gauss_pts = 7356;
59 break;
60 case 3:
61 exp_energy = 2.2131e-07;
62 expected_contact_area = 0.002683898;
63 exp_nb_gauss_pts = 8550;
64 break;
65 case 4:
66 exp_energy = 3.3642e-07;
67 expected_contact_area = 0.002929756;
68 exp_nb_gauss_pts = 9360;
69 break;
70 case 5:
71 exp_energy = 4.7351e-07;
72 expected_contact_area = 0.003192519;
73 exp_nb_gauss_pts = 10220;
74 break;
75 case 6:
76 exp_energy = 6.3188e-07;
77 expected_contact_area = 0.003467593;
78 exp_nb_gauss_pts = 11110;
79 break;
80 case 7:
81 exp_energy = 8.1095e-07;
82 expected_contact_area = 0.003689629;
83 exp_nb_gauss_pts = 11840;
84 break;
85 case 8:
86 exp_energy = 1.0103e-06;
87 expected_contact_area = 0.003906358;
88 exp_nb_gauss_pts = 12935;
89 break;
90 case 9:
91 exp_energy = 1.2296e-06;
92 expected_contact_area = 0.004150522;
93 exp_nb_gauss_pts = 13788;
94 break;
95 default:
96 SETERRQ(PETSC_COMM_SELF, MOFEM_ATOM_TEST_INVALID,
97 "Too many steps for Test NIGNT_HERTZ_2D");
98 }
99
101};
102
103MoFEMErrorCode get_night_hertz_3D_results(int ss, double &exp_energy,
104 double &expected_contact_area,
105 int &exp_nb_gauss_pts) {
107 switch (ss) {
108 case 0:
109 exp_energy = 2.4921e-07;
110 expected_contact_area = 0.037387570;
111 exp_nb_gauss_pts = 11554;
112 break;
113 case 1:
114 exp_energy = 8.5849e-07;
115 expected_contact_area = 0.053806117;
116 exp_nb_gauss_pts = 14912;
117 break;
118 case 2:
119 exp_energy = 1.7168e-06;
120 expected_contact_area = 0.072368224;
121 exp_nb_gauss_pts = 17395;
122 break;
123 case 3:
124 exp_energy = 2.6893e-06;
125 expected_contact_area = 0.075171507;
126 exp_nb_gauss_pts = 19006;
127 break;
128 case 4:
129 exp_energy = 3.9262e-06;
130 expected_contact_area = 0.080084399;
131 exp_nb_gauss_pts = 20744;
132 break;
133 case 5:
134 exp_energy = 5.4079e-06;
135 expected_contact_area = 0.084318672;
136 exp_nb_gauss_pts = 22342;
137 break;
138 case 6:
139 exp_energy = 7.1375e-06;
140 expected_contact_area = 0.087477064;
141 exp_nb_gauss_pts = 23951;
142 break;
143 case 7:
144 exp_energy = 9.0959e-06;
145 expected_contact_area = 0.088494524;
146 exp_nb_gauss_pts = 24764;
147 break;
148 case 8:
149 exp_energy = 1.1310e-05;
150 expected_contact_area = 0.091510940;
151 exp_nb_gauss_pts = 26403;
152 break;
153 case 9:
154 exp_energy = 1.3771e-05;
155 expected_contact_area = 0.095836947;
156 exp_nb_gauss_pts = 27461;
157 break;
158 default:
159 SETERRQ(PETSC_COMM_SELF, MOFEM_ATOM_TEST_INVALID,
160 "Too many steps for Test NIGNT_HERTZ_2D");
161 }
162
164};
165
166MoFEMErrorCode get_night_wave_2D_results(int ss, double &exp_energy,
167 double &expected_contact_area,
168 int &exp_nb_gauss_pts) {
170 switch (ss) {
171 case 0:
172 exp_energy = 1.7327e-04;
173 expected_contact_area = 0.015624916;
174 exp_nb_gauss_pts = 768;
175 break;
176 case 1:
177 exp_energy = 6.1650e-04;
178 expected_contact_area = 0.025471946;
179 exp_nb_gauss_pts = 1288;
180 break;
181 case 2:
182 exp_energy = 1.2469e-03;
183 expected_contact_area = 0.031249908;
184 exp_nb_gauss_pts = 1578;
185 break;
186 case 3:
187 exp_energy = 2.0878e-03;
188 expected_contact_area = 0.031249908;
189 exp_nb_gauss_pts = 1578;
190 break;
191 case 4:
192 exp_energy = 3.1689e-03;
193 expected_contact_area = 0.031249929;
194 exp_nb_gauss_pts = 1600;
195 break;
196 case 5:
197 exp_energy = 4.4035e-03;
198 expected_contact_area = 0.039604827;
199 exp_nb_gauss_pts = 2013;
200 break;
201 case 6:
202 exp_energy = 5.7279e-03;
203 expected_contact_area = 0.042453153;
204 exp_nb_gauss_pts = 2153;
205 break;
206 case 7:
207 exp_energy = 7.1716e-03;
208 expected_contact_area = 0.046874962;
209 exp_nb_gauss_pts = 2370;
210 break;
211 case 8:
212 exp_energy = 8.7560e-03;
213 expected_contact_area = 0.046874962;
214 exp_nb_gauss_pts = 2370;
215 break;
216 case 9:
217 exp_energy = 1.0527e-02;
218 expected_contact_area = 0.046874962;
219 exp_nb_gauss_pts = 2370;
220 break;
221 default:
222 SETERRQ(PETSC_COMM_SELF, MOFEM_ATOM_TEST_INVALID,
223 "Too many steps for Test NIGNT_HERTZ_2D");
224 }
225
227};
228
229MoFEMErrorCode check_tests(int ss, int test_num, double &expected_energy,
230 double &expected_contact_area,
231 int &expected_nb_gauss_pts) {
233
234 if (test_num) {
235
236 switch (test_num) {
237 case EIGHT_CUBE:
238 expected_energy = 3.0e-04;
239 expected_contact_area = 2.999995061;
240 expected_nb_gauss_pts = 5718;
241 break;
242 case T_INTERFACE:
243 expected_energy = 3.0e-04;
244 expected_contact_area = 1.749997733;
245 expected_nb_gauss_pts = 2046;
246 break;
248 expected_energy = 7.8125e-05;
249 expected_contact_area = 0.062499557;
250 expected_nb_gauss_pts = 3408;
251 break;
252 case PUNCH_TOP_ONLY:
253 expected_energy = 2.4110e-05;
254 expected_contact_area = 0.062499557;
255 expected_nb_gauss_pts = 3408;
256 break;
258 expected_energy = 2.4104e-05;
259 expected_contact_area = 0.062499557;
260 expected_nb_gauss_pts = 3408;
261 break;
262 case SMILING_FACE:
263 expected_energy = 7.5944e-04;
264 expected_contact_area = 2.727269391;
265 expected_nb_gauss_pts = 1020;
266 break;
268 expected_energy = 7.2982e-04;
269 expected_contact_area = 2.230868859;
270 expected_nb_gauss_pts = 794;
271 break;
272 case WAVE_2D:
273 expected_energy = 0.008537863;
274 expected_contact_area = 0.125;
275 expected_nb_gauss_pts = 384;
276 break;
277 case WAVE_2D_ALM:
278 expected_energy = 0.008538894;
279 expected_contact_area = 0.125;
280 expected_nb_gauss_pts = 384;
281 break;
282 case NIGNT_HERTZ_2D:
284 ss, expected_energy, expected_contact_area, expected_nb_gauss_pts);
285 break;
286 case NIGNT_WAVE_2D:
288 ss, expected_energy, expected_contact_area, expected_nb_gauss_pts);
289 break;
290 case NIGNT_HERTZ_3D:
292 ss, expected_energy, expected_contact_area, expected_nb_gauss_pts);
293 break;
294 default:
295 SETERRQ1(PETSC_COMM_SELF, MOFEM_ATOM_TEST_INVALID,
296 "Unknown test number %d", test_num);
297 }
298 }
300}
301
302} // namespace MortarCtestFunctions
303
304#endif
#define MoFEMFunctionBegin
First executable line of each MoFEM function, used for error handling. Final line of MoFEM functions ...
Definition: definitions.h:346
@ MOFEM_ATOM_TEST_INVALID
Definition: definitions.h:40
#define MoFEMFunctionReturn(a)
Last executable line of each PETSc function used for error handling. Replaces return()
Definition: definitions.h:416
#define CHKERR
Inline error check.
Definition: definitions.h:535
MoFEMErrorCode check_tests(int ss, int test_num, double &expected_energy, double &expected_contact_area, int &expected_nb_gauss_pts)
MoFEMErrorCode get_night_wave_2D_results(int ss, double &exp_energy, double &expected_contact_area, int &exp_nb_gauss_pts)
MoFEMErrorCode get_night_hertz_2D_results(int ss, double &exp_energy, double &expected_contact_area, int &exp_nb_gauss_pts)
MoFEMErrorCode get_night_hertz_3D_results(int ss, double &exp_energy, double &expected_contact_area, int &exp_nb_gauss_pts)