v0.14.0
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 
32  WAVE_2D = 8,
38 };
39 
40 MoFEMErrorCode 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 
103 MoFEMErrorCode 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 
166 MoFEMErrorCode 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 
229 MoFEMErrorCode 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;
247  case PUNCH_TOP_AND_MID:
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;
257  case PUNCH_TOP_ONLY_ALM:
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
MortarCtestFunctions::check_tests
MoFEMErrorCode check_tests(int ss, int test_num, double &expected_energy, double &expected_contact_area, int &expected_nb_gauss_pts)
Definition: MortarCtestFunctions.hpp:229
MortarCtestFunctions::LAST_TEST
@ LAST_TEST
Definition: MortarCtestFunctions.hpp:37
MortarCtestFunctions::PUNCH_TOP_AND_MID
@ PUNCH_TOP_AND_MID
Definition: MortarCtestFunctions.hpp:27
MoFEM::Exceptions::MoFEMErrorCode
PetscErrorCode MoFEMErrorCode
MoFEM/PETSc error code.
Definition: Exceptions.hpp:56
MortarCtestFunctions::get_night_wave_2D_results
MoFEMErrorCode get_night_wave_2D_results(int ss, double &exp_energy, double &expected_contact_area, int &exp_nb_gauss_pts)
Definition: MortarCtestFunctions.hpp:166
MortarCtestFunctions::contact_tests
contact_tests
Definition: MortarCtestFunctions.hpp:24
MortarCtestFunctions::WAVE_2D_ALM
@ WAVE_2D_ALM
Definition: MortarCtestFunctions.hpp:33
MortarCtestFunctions::SMILING_FACE
@ SMILING_FACE
Definition: MortarCtestFunctions.hpp:30
CHKERR
#define CHKERR
Inline error check.
Definition: definitions.h:535
MortarCtestFunctions::T_INTERFACE
@ T_INTERFACE
Definition: MortarCtestFunctions.hpp:26
MortarCtestFunctions::get_night_hertz_2D_results
MoFEMErrorCode get_night_hertz_2D_results(int ss, double &exp_energy, double &expected_contact_area, int &exp_nb_gauss_pts)
Definition: MortarCtestFunctions.hpp:40
MortarCtestFunctions::PUNCH_TOP_ONLY_ALM
@ PUNCH_TOP_ONLY_ALM
Definition: MortarCtestFunctions.hpp:29
MortarCtestFunctions::NIGNT_WAVE_2D
@ NIGNT_WAVE_2D
Definition: MortarCtestFunctions.hpp:35
MortarCtestFunctions::WAVE_2D
@ WAVE_2D
Definition: MortarCtestFunctions.hpp:32
MortarCtestFunctions::NIGNT_HERTZ_3D
@ NIGNT_HERTZ_3D
Definition: MortarCtestFunctions.hpp:36
MortarCtestFunctions::EIGHT_CUBE
@ EIGHT_CUBE
Definition: MortarCtestFunctions.hpp:25
MortarCtestFunctions::get_night_hertz_3D_results
MoFEMErrorCode get_night_hertz_3D_results(int ss, double &exp_energy, double &expected_contact_area, int &exp_nb_gauss_pts)
Definition: MortarCtestFunctions.hpp:103
MortarCtestFunctions
Definition: MortarCtestFunctions.hpp:22
MOFEM_ATOM_TEST_INVALID
@ MOFEM_ATOM_TEST_INVALID
Definition: definitions.h:40
MortarCtestFunctions::SMILING_FACE_CONVECT
@ SMILING_FACE_CONVECT
Definition: MortarCtestFunctions.hpp:31
MoFEMFunctionReturn
#define MoFEMFunctionReturn(a)
Last executable line of each PETSc function used for error handling. Replaces return()
Definition: definitions.h:416
MortarCtestFunctions::PUNCH_TOP_ONLY
@ PUNCH_TOP_ONLY
Definition: MortarCtestFunctions.hpp:28
MortarCtestFunctions::NIGNT_HERTZ_2D
@ NIGNT_HERTZ_2D
Definition: MortarCtestFunctions.hpp:34
MoFEMFunctionBegin
#define MoFEMFunctionBegin
First executable line of each MoFEM function, used for error handling. Final line of MoFEM functions ...
Definition: definitions.h:346