6using GetElementGausIntMapType = std::map<ElementType, std::function<void(
const int,
const int,
11GetElementGausIntMapType get_element_gauss_int_data = {
13 {ElementType::HEX8, [](
const int insd,
const int nG,
Vector<double>& w, Array<double>& xi) ->
void {
15 double s = 1.0 / sqrt(3.0);
16 double t = -1.0 / sqrt(3.0);
52 {ElementType::HEX20, [](
const int insd,
const int nG,
Vector<double>& w, Array<double>& xi) ->
void {
53 for (
int i = 0; i < 8; i++) {
57 for (
int i = 8; i < 20; i++) {
61 for (
int i = 20; i < 26; i++) {
65 w(26) = 512.0 / 729.0;
71 xi(0, n) = -s; xi(1, n) = -s; xi(2, n) = -s; n++;
72 xi(0, n) = s; xi(1, n) = -s; xi(2, n) = -s; n++;
73 xi(0, n) = s; xi(1, n) = s; xi(2, n) = -s; n++;
74 xi(0, n) = -s; xi(1, n) = s; xi(2, n) = -s; n++;
75 xi(0, n) = -s; xi(1, n) = -s; xi(2, n) = s; n++;
76 xi(0, n) = s; xi(1, n) = -s; xi(2, n) = s; n++;
77 xi(0, n) = s; xi(1, n) = s; xi(2, n) = s; n++;
78 xi(0, n) = -s; xi(1, n) = s; xi(2, n) = s; n++;
80 xi(0, n) = t; xi(1, n) = -s; xi(2, n) = -s; n++;
81 xi(0,n) = s; xi(1,n) = t; xi(2,n) = -s; n++;
82 xi(0,n) = t; xi(1,n) = s; xi(2,n) = -s; n++;
83 xi(0,n) = -s; xi(1,n) = t; xi(2,n) = -s; n++;
84 xi(0,n) = t; xi(1,n) = -s; xi(2,n) = s; n++;
85 xi(0,n) = s; xi(1,n) = t; xi(2,n) = s; n++;
86 xi(0,n) = t; xi(1,n) = s; xi(2,n) = s; n++;
87 xi(0,n) = -s; xi(1,n) = t; xi(2,n) = s; n++;
88 xi(0,n) = -s; xi(1,n) = -s; xi(2,n) = t; n++;
89 xi(0,n) = s; xi(1,n) = -s; xi(2,n) = t; n++;
90 xi(0,n) = s; xi(1,n) = s; xi(2,n) = t; n++;
91 xi(0,n) = -s; xi(1,n) = s; xi(2,n) = t; n++;
93 xi(0,n) = -s; xi(1,n) = t; xi(2,n) = t; n++;
94 xi(0,n) = s; xi(1,n) = t; xi(2,n) = t; n++;
95 xi(0,n) = t; xi(1,n) = -s; xi(2,n) = t; n++;
96 xi(0,n) = t; xi(1,n) = s; xi(2,n) = t; n++;
97 xi(0,n) = t; xi(1,n) = t; xi(2,n) = -s; n++;
98 xi(0,n) = t; xi(1,n) = t; xi(2,n) = s; n++;
100 xi(0,n) = t; xi(1,n) = t; xi(2,n) = t;
104 {ElementType::HEX27, [](
const int insd,
const int nG,
Vector<double>& w, Array<double>& xi) ->
void {
106 for (
int i = 0; i < 8; i++) {
107 w(i) = 125.0 / 729.0;
110 for (
int i = 8; i < 20; i++) {
111 w(i) = 200.0 / 729.0;
114 for (
int i = 20; i < 26; i++) {
115 w(i) = 320.0 / 729.0;
118 w(26) = 512.0 / 729.0;
120 double s = sqrt(0.6);
124 xi(0, n) = -s; xi(1, n) = -s; xi(2, n) = -s; n++;
125 xi(0, n) = s; xi(1, n) = -s; xi(2, n) = -s; n++;
126 xi(0, n) = s; xi(1, n) = s; xi(2, n) = -s; n++;
127 xi(0, n) = -s; xi(1, n) = s; xi(2, n) = -s; n++;
128 xi(0, n) = -s; xi(1, n) = -s; xi(2, n) = s; n++;
129 xi(0, n) = s; xi(1, n) = -s; xi(2, n) = s; n++;
130 xi(0, n) = s; xi(1, n) = s; xi(2, n) = s; n++;
131 xi(0, n) = -s; xi(1, n) = s; xi(2, n) = s; n++;
133 xi(0, n) = t; xi(1, n) = -s; xi(2, n) = -s; n++;
134 xi(0,n) = s; xi(1,n) = t; xi(2,n) = -s; n++;
135 xi(0,n) = t; xi(1,n) = s; xi(2,n) = -s; n++;
136 xi(0,n) = -s; xi(1,n) = t; xi(2,n) = -s; n++;
137 xi(0,n) = t; xi(1,n) = -s; xi(2,n) = s; n++;
138 xi(0,n) = s; xi(1,n) = t; xi(2,n) = s; n++;
139 xi(0,n) = t; xi(1,n) = s; xi(2,n) = s; n++;
140 xi(0,n) = -s; xi(1,n) = t; xi(2,n) = s; n++;
141 xi(0,n) = -s; xi(1,n) = -s; xi(2,n) = t; n++;
142 xi(0,n) = s; xi(1,n) = -s; xi(2,n) = t; n++;
143 xi(0,n) = s; xi(1,n) = s; xi(2,n) = t; n++;
144 xi(0,n) = -s; xi(1,n) = s; xi(2,n) = t; n++;
146 xi(0,n) = -s; xi(1,n) = t; xi(2,n) = t; n++;
147 xi(0,n) = s; xi(1,n) = t; xi(2,n) = t; n++;
148 xi(0,n) = t; xi(1,n) = -s; xi(2,n) = t; n++;
149 xi(0,n) = t; xi(1,n) = s; xi(2,n) = t; n++;
150 xi(0,n) = t; xi(1,n) = t; xi(2,n) = -s; n++;
151 xi(0,n) = t; xi(1,n) = t; xi(2,n) = s; n++;
153 xi(0,n) = t; xi(1,n) = t; xi(2,n) = t;
157 {ElementType::LIN1, [](
const int insd,
const int nG,
Vector<double>& w, Array<double>& xi) ->
void {
159 double s = 1.0 / sqrt(3.0);
165 {ElementType::QUD4, [](
const int insd,
const int nG,
Vector<double>& w, Array<double>& xi) ->
void {
167 double s = 1.0 / sqrt(3.0);
168 xi(0,0) = -s; xi(1,0) = -s;
169 xi(0,1) = s; xi(1,1) = -s;
170 xi(0,2) = s; xi(1,2) = s;
171 xi(0,3) = -s; xi(1,3) = s;
175 {ElementType::QUD9, [](
const int insd,
const int nG,
Vector<double>& w, Array<double>& xi) ->
void {
176 for (
int i = 0; i < 4; i++) {
178 w(i+4) = 40.0 / 81.0;
182 double s = sqrt(6.0);
214 {ElementType::TET4, [](
const int insd,
const int nG,
Vector<double>& w, Array<double>& xi) ->
void {
215 for (
int i = 0; i < nG; i++) {
218 double s = (5.0 + 3.0*sqrt(5.0)) / 20.0;
219 double t = (5.0 - sqrt(5.0)) / 20.0;
220 xi(0,0) = s; xi(1,0) = t; xi(2,0) = t;
221 xi(0,1) = t; xi(1,1) = s; xi(2,1) = t;
222 xi(0,2) = t; xi(1,2) = t; xi(2,2) = s;
223 xi(0,3) = t; xi(1,3) = t; xi(2,3) = t;
227 {ElementType::TRI3, [](
const int insd,
const int nG,
Vector<double>& w, Array<double>& xi) ->
void {
228 for (
int i = 0; i < nG; i++) {
242 {ElementType::WDG, [](
const int insd,
const int nG,
Vector<double>& w, Array<double>& xi) ->
void {
243 for (
int i = 0; i < nG; i++) {
246 double s = 2.0 / 3.0;
247 double t = 1.0 / 6.0;
248 double uz = 1.0 / sqrt(3.0);
249 double lz = -1.0 / sqrt(3.0);
250 xi(0,0) = s; xi(1,0) = t; xi(2,0) = lz;
251 xi(0,1) = t; xi(1,1) = s; xi(2,1) = lz;
252 xi(0,2) = t; xi(1,2) = t; xi(2,2) = lz;
253 xi(0,3) = s; xi(1,3) = t; xi(2,3) = uz;
254 xi(0,4) = t; xi(1,4) = s; xi(2,4) = uz;
255 xi(0,5) = t; xi(1,5) = t; xi(2,5) = uz;
263using SetElementGausIntMapType = std::map<ElementType, std::function<void(
mshType&)>>;
269SetElementGausIntMapType set_element_gauss_int_data = {
271 {ElementType::HEX8, [](
mshType& mesh) ->
void {
272 for (
int i = 0; i < mesh.nG; i++) {
275 double s = 1.0 / sqrt(3.0);
276 double t = -1.0 / sqrt(3.0);
277 mesh.xi(0,0) = t; mesh.xi(1,0) = t; mesh.xi(2,0) = t;
278 mesh.xi(0,1) = s; mesh.xi(1,1) = t; mesh.xi(2,1) = t;
279 mesh.xi(0,2) = s; mesh.xi(1,2) = s; mesh.xi(2,2) = t;
280 mesh.xi(0,3) = t; mesh.xi(1,3) = s; mesh.xi(2,3) = t;
281 mesh.xi(0,4) = t; mesh.xi(1,4) = t; mesh.xi(2,4) = s;
282 mesh.xi(0,5) = s; mesh.xi(1,5) = t; mesh.xi(2,5) = s;
283 mesh.xi(0,6) = s; mesh.xi(1,6) = s; mesh.xi(2,6) = s;
284 mesh.xi(0,7) = t; mesh.xi(1,7) = s; mesh.xi(2,7) = s;
288 {ElementType::HEX20, [](
mshType& mesh) ->
void {
290 for (
int i = 0; i < 8; i++) {
291 mesh.w(i) = 125.0 / 729.0;
294 for (
int i = 8; i < 20; i++) {
295 mesh.w(i) = 200.0 / 729.0;
298 for (
int i = 20; i < 26; i++) {
299 mesh.w(i) = 320.0 / 729.0;
302 mesh.w(26) = 512.0 / 729.0;
304 double s = sqrt(0.6);
308 mesh.xi(0, n) = -s; mesh.xi(1, n) = -s; mesh.xi(2, n) = -s; n++;
309 mesh.xi(0, n) = s; mesh.xi(1, n) = -s; mesh.xi(2, n) = -s; n++;
310 mesh.xi(0, n) = s; mesh.xi(1, n) = s; mesh.xi(2, n) = -s; n++;
311 mesh.xi(0, n) = -s; mesh.xi(1, n) = s; mesh.xi(2, n) = -s; n++;
312 mesh.xi(0, n) = -s; mesh.xi(1, n) = -s; mesh.xi(2, n) = s; n++;
313 mesh.xi(0, n) = s; mesh.xi(1, n) = -s; mesh.xi(2, n) = s; n++;
314 mesh.xi(0, n) = s; mesh.xi(1, n) = s; mesh.xi(2, n) = s; n++;
315 mesh.xi(0, n) = -s; mesh.xi(1, n) = s; mesh.xi(2, n) = s; n++;
317 mesh.xi(0, n) = t; mesh.xi(1, n) = -s; mesh.xi(2, n) = -s; n++;
318 mesh.xi(0,n) = s; mesh.xi(1,n) = t; mesh.xi(2,n) = -s; n++;
319 mesh.xi(0,n) = t; mesh.xi(1,n) = s; mesh.xi(2,n) = -s; n++;
320 mesh.xi(0,n) = -s; mesh.xi(1,n) = t; mesh.xi(2,n) = -s; n++;
321 mesh.xi(0,n) = t; mesh.xi(1,n) = -s; mesh.xi(2,n) = s; n++;
322 mesh.xi(0,n) = s; mesh.xi(1,n) = t; mesh.xi(2,n) = s; n++;
323 mesh.xi(0,n) = t; mesh.xi(1,n) = s; mesh.xi(2,n) = s; n++;
324 mesh.xi(0,n) = -s; mesh.xi(1,n) = t; mesh.xi(2,n) = s; n++;
325 mesh.xi(0,n) = -s; mesh.xi(1,n) = -s; mesh.xi(2,n) = t; n++;
326 mesh.xi(0,n) = s; mesh.xi(1,n) = -s; mesh.xi(2,n) = t; n++;
327 mesh.xi(0,n) = s; mesh.xi(1,n) = s; mesh.xi(2,n) = t; n++;
328 mesh.xi(0,n) = -s; mesh.xi(1,n) = s; mesh.xi(2,n) = t; n++;
330 mesh.xi(0,n) = -s; mesh.xi(1,n) = t; mesh.xi(2,n) = t; n++;
331 mesh.xi(0,n) = s; mesh.xi(1,n) = t; mesh.xi(2,n) = t; n++;
332 mesh.xi(0,n) = t; mesh.xi(1,n) = -s; mesh.xi(2,n) = t; n++;
333 mesh.xi(0,n) = t; mesh.xi(1,n) = s; mesh.xi(2,n) = t; n++;
334 mesh.xi(0,n) = t; mesh.xi(1,n) = t; mesh.xi(2,n) = -s; n++;
335 mesh.xi(0,n) = t; mesh.xi(1,n) = t; mesh.xi(2,n) = s; n++;
337 mesh.xi(0,n) = t; mesh.xi(1,n) = t; mesh.xi(2,n) = t;
341 {ElementType::HEX27, [](
mshType& mesh) ->
void {
343 for (
int i = 0; i < 8; i++) {
344 mesh.w(i) = 125.0 / 729.0;
347 for (
int i = 8; i < 20; i++) {
348 mesh.w(i) = 200.0 / 729.0;
351 for (
int i = 20; i < 26; i++) {
352 mesh.w(i) = 320.0 / 729.0;
355 mesh.w(26) = 512.0 / 729.0;
357 double s = sqrt(0.6);
361 mesh.xi(0, n) = -s; mesh.xi(1, n) = -s; mesh.xi(2, n) = -s; n++;
362 mesh.xi(0, n) = s; mesh.xi(1, n) = -s; mesh.xi(2, n) = -s; n++;
363 mesh.xi(0, n) = s; mesh.xi(1, n) = s; mesh.xi(2, n) = -s; n++;
364 mesh.xi(0, n) = -s; mesh.xi(1, n) = s; mesh.xi(2, n) = -s; n++;
365 mesh.xi(0, n) = -s; mesh.xi(1, n) = -s; mesh.xi(2, n) = s; n++;
366 mesh.xi(0, n) = s; mesh.xi(1, n) = -s; mesh.xi(2, n) = s; n++;
367 mesh.xi(0, n) = s; mesh.xi(1, n) = s; mesh.xi(2, n) = s; n++;
368 mesh.xi(0, n) = -s; mesh.xi(1, n) = s; mesh.xi(2, n) = s; n++;
370 mesh.xi(0, n) = t; mesh.xi(1, n) = -s; mesh.xi(2, n) = -s; n++;
371 mesh.xi(0,n) = s; mesh.xi(1,n) = t; mesh.xi(2,n) = -s; n++;
372 mesh.xi(0,n) = t; mesh.xi(1,n) = s; mesh.xi(2,n) = -s; n++;
373 mesh.xi(0,n) = -s; mesh.xi(1,n) = t; mesh.xi(2,n) = -s; n++;
374 mesh.xi(0,n) = t; mesh.xi(1,n) = -s; mesh.xi(2,n) = s; n++;
375 mesh.xi(0,n) = s; mesh.xi(1,n) = t; mesh.xi(2,n) = s; n++;
376 mesh.xi(0,n) = t; mesh.xi(1,n) = s; mesh.xi(2,n) = s; n++;
377 mesh.xi(0,n) = -s; mesh.xi(1,n) = t; mesh.xi(2,n) = s; n++;
378 mesh.xi(0,n) = -s; mesh.xi(1,n) = -s; mesh.xi(2,n) = t; n++;
379 mesh.xi(0,n) = s; mesh.xi(1,n) = -s; mesh.xi(2,n) = t; n++;
380 mesh.xi(0,n) = s; mesh.xi(1,n) = s; mesh.xi(2,n) = t; n++;
381 mesh.xi(0,n) = -s; mesh.xi(1,n) = s; mesh.xi(2,n) = t; n++;
383 mesh.xi(0,n) = -s; mesh.xi(1,n) = t; mesh.xi(2,n) = t; n++;
384 mesh.xi(0,n) = s; mesh.xi(1,n) = t; mesh.xi(2,n) = t; n++;
385 mesh.xi(0,n) = t; mesh.xi(1,n) = -s; mesh.xi(2,n) = t; n++;
386 mesh.xi(0,n) = t; mesh.xi(1,n) = s; mesh.xi(2,n) = t; n++;
387 mesh.xi(0,n) = t; mesh.xi(1,n) = t; mesh.xi(2,n) = -s; n++;
388 mesh.xi(0,n) = t; mesh.xi(1,n) = t; mesh.xi(2,n) = s; n++;
390 mesh.xi(0,n) = t; mesh.xi(1,n) = t; mesh.xi(2,n) = t;
394 {ElementType::LIN1, [](
mshType& mesh) ->
void {
395 for (
int i = 0; i < mesh.nG; i++) {
398 double s = 1.0 / sqrt(3.0);
404 {ElementType::LIN2, [](
mshType& mesh) ->
void {
405 mesh.w[0] = 5.0 / 9.0;
406 mesh.w[1] = 5.0 / 9.0;
407 mesh.w[2] = 8.0 / 9.0;
409 double s = sqrt(0.6);
417 {ElementType::QUD4, [](
mshType& mesh) ->
void {
418 for (
int i = 0; i < mesh.nG; i++) {
421 double s = 1.0 / sqrt(3.0);
422 mesh.xi(0,0) = -s; mesh.xi(1,0) = -s;
423 mesh.xi(0,1) = s; mesh.xi(1,1) = -s;
424 mesh.xi(0,2) = s; mesh.xi(1,2) = s;
425 mesh.xi(0,3) = -s; mesh.xi(1,3) = s;
429 {ElementType::QUD9, [](
mshType& mesh) ->
void {
430 mesh.w(0) = 25.0 / 81.0;
431 mesh.w(1) = 25.0 / 81.0;
432 mesh.w(2) = 25.0 / 81.0;
433 mesh.w(3) = 25.0 / 81.0;
435 mesh.w(4) = 40.0 / 81.0;
436 mesh.w(5) = 40.0 / 81.0;
437 mesh.w(6) = 40.0 / 81.0;
438 mesh.w(7) = 40.0 / 81.0;
439 mesh.w(8) = 64.0 / 81.0;
441 double s = sqrt(0.6);
474 {ElementType::TET4, [](
mshType& mesh) ->
void {
475 for (
int i = 0; i < mesh.nG; i++) {
476 mesh.w(i) = 1.0 / 24.0;
481 double s = mesh.qmTET4;
485 double t = (1-s)/3.0;
486 mesh.xi(0,0) = s; mesh.xi(1,0) = t; mesh.xi(2,0) = t;
487 mesh.xi(0,1) = t; mesh.xi(1,1) = s; mesh.xi(2,1) = t;
488 mesh.xi(0,2) = t; mesh.xi(1,2) = t; mesh.xi(2,2) = s;
489 mesh.xi(0,3) = t; mesh.xi(1,3) = t; mesh.xi(2,3) = t;
493 {ElementType::TET10, [](
mshType& mesh) ->
void {
494 mesh.w(0) = 0.0302836780970890;
496 mesh.w(1) = 0.0060267857142860;
497 mesh.w(2) = 0.0060267857142860;
498 mesh.w(3) = 0.0060267857142860;
499 mesh.w(4) = 0.0060267857142860;
501 mesh.w(5) = 0.0116452490860290;
502 mesh.w(6) = 0.0116452490860290;
503 mesh.w(7) = 0.0116452490860290;
504 mesh.w(8) = 0.0116452490860290;
506 mesh.w(9) = 0.0109491415613860;
507 mesh.w(10) = 0.0109491415613860;
508 mesh.w(11) = 0.0109491415613860;
509 mesh.w(12) = 0.0109491415613860;
510 mesh.w(13) = 0.0109491415613860;
511 mesh.w(14) = 0.0109491415613860;
515 xi(0,0) = s; xi(1,0) = s; xi(2,0) = s;
517 s = 0.3333333333333330;
519 xi(0,1) = t; xi(1,1) = s; xi(2,1) = s;
520 xi(0,2) = s; xi(1,2) = t; xi(2,2) = s;
521 xi(0,3) = s; xi(1,3) = s; xi(2,3) = t;
522 xi(0,4) = s; xi(1,4) = s; xi(2,4) = s;
524 s = 0.0909090909090910;
525 t = 0.7272727272727270;
526 xi(0,5) = t; xi(1,5) = s; xi(2,5) = s;
527 xi(0,6) = s; xi(1,6) = t; xi(2,6) = s;
528 xi(0,7) = s; xi(1,7) = s; xi(2,7) = t;
529 xi(0,8) = s; xi(1,8) = s; xi(2,8) = s;
531 s = 0.0665501535736640;
532 t = 0.4334498464263360;
533 xi(0, 9) = s; xi(1, 9) = s; xi(2, 9) = t;
534 xi(0,10) = s; xi(1,10) = t; xi(2,10) = s;
535 xi(0,11) = s; xi(1,11) = t; xi(2,11) = t;
536 xi(0,12) = t; xi(1,12) = t; xi(2,12) = s;
537 xi(0,13) = t; xi(1,13) = s; xi(2,13) = t;
538 xi(0,14) = t; xi(1,14) = s; xi(2,14) = s;
542 {ElementType::TRI3, [](
mshType& mesh) ->
void {
543 for (
int i = 0; i < mesh.nG; i++) {
544 mesh.w(i) = 1.0 / 6.0;
546 double s = 2.0 / 3.0;
547 double t = 1.0 / 6.0;
548 mesh.xi(0,0) = t; mesh.xi(1,0) = t;
549 mesh.xi(0,1) = s; mesh.xi(1,1) = t;
550 mesh.xi(0,2) = t; mesh.xi(1,2) = s;
554 {ElementType::TRI6, [](
mshType& mesh) ->
void {
555 mesh.w[0] = 0.225000000000000 * 5.0e-1 ;
556 mesh.w[1] = 0.125939180544827 * 5.0e-1 ;
557 mesh.w[2] = 0.125939180544827 * 5.0e-1 ;
558 mesh.w[3] = 0.125939180544827 * 5.0e-1 ;
559 mesh.w(4) = 0.132394152788506 * 5.0e-1 ;
560 mesh.w(5) = 0.132394152788506 * 5.0e-1 ;
561 mesh.w(6) = 0.132394152788506 * 5.0e-1 ;
563 double s = 0.333333333333333;
564 mesh.xi(0,0) = s; mesh.xi(1,0) = s;
566 s = 0.797426985353087;
567 double t = 0.101286507323456;
568 mesh.xi(0,1) = s; mesh.xi(1,1) = t;
569 mesh.xi(0,2) = t; mesh.xi(1,2) = s;
570 mesh.xi(0,3) = t; mesh.xi(1,3) = t;
572 s = 0.059715871789770;
573 t = 0.470142064105115;
574 mesh.xi(0,4) = s; mesh.xi(1,4) = t;
575 mesh.xi(0,5) = t; mesh.xi(1,5) = s;
576 mesh.xi(0,6) = t; mesh.xi(1,6) = t;
580 {ElementType::WDG, [](
mshType& mesh) ->
void {
581 for (
int i = 0; i < mesh.nG; i++) {
582 mesh.w(i) = 1.0 / 6.0;
584 double s = 2.0 / 3.0;
585 double t = 1.0 / 6.0;
586 double uz = 1.0 / sqrt(3.0);
587 double lz = -1.0 / sqrt(3.0);
588 mesh.xi(0,0) = s; mesh.xi(1,0) = t; mesh.xi(2,0) = lz;
589 mesh.xi(0,1) = t; mesh.xi(1,1) = s; mesh.xi(2,1) = lz;
590 mesh.xi(0,2) = t; mesh.xi(1,2) = t; mesh.xi(2,2) = lz;
591 mesh.xi(0,3) = s; mesh.xi(1,3) = t; mesh.xi(2,3) = uz;
592 mesh.xi(0,4) = t; mesh.xi(1,4) = s; mesh.xi(2,4) = uz;
593 mesh.xi(0,5) = t; mesh.xi(1,5) = t; mesh.xi(2,5) = uz;
601using SetFaceGausIntMapType = std::map<ElementType, std::function<void(
faceType&)>>;
605SetFaceGausIntMapType set_face_gauss_int_data = {
607 {ElementType::PNT, [](
faceType& face) ->
void {
608 for (
int i = 0; i < face.nG; i++) {
614 {ElementType::LIN1, [](
faceType& face) ->
void {
615 for (
int i = 0; i < face.nG; i++) {
618 double s = 1.0 / sqrt(3.0);
624 {ElementType::LIN2, [](
faceType& face) ->
void {
625 face.w[0] = 5.0 / 9.0;
626 face.w[1] = 5.0 / 9.0;
627 face.w[2] = 8.0 / 9.0;
629 double s = sqrt(0.6);
637 {ElementType::QUD4, [](
faceType& face) ->
void {
639 double s = 1.0 / sqrt(3.0);
640 face.xi(0,0) = -s; face.xi(1,0) = -s;
641 face.xi(0,1) = s; face.xi(1,1) = -s;
642 face.xi(0,2) = s; face.xi(1,2) = s;
643 face.xi(0,3) = -s; face.xi(1,3) = s;
647 {ElementType::QUD8, [](
faceType& face) ->
void {
648 face.w(0) = 25.0/81.0;
649 face.w(1) = 25.0/81.0;
650 face.w(2) = 25.0/81.0;
651 face.w(3) = 25.0/81.0;
653 face.w(4) = 40.0/81.0;
654 face.w(5) = 40.0/81.0;
655 face.w(6) = 40.0/81.0;
656 face.w(7) = 40.0/81.0;
658 face.w(8) = 64.0/81.0;
660 double s = sqrt(0.6);
663 face.xi(0,0) = -s; face.xi(1,0) = -s;
664 face.xi(0,1) = s; face.xi(1,1) = -s;
665 face.xi(0,2) = s; face.xi(1,2) = s;
666 face.xi(0,3) = -s; face.xi(1,3) = s;
667 face.xi(0,4) = t; face.xi(1,4) = -s;
668 face.xi(0,5) = s; face.xi(1,5) = t;
669 face.xi(0,6) = t; face.xi(1,6) = s;
670 face.xi(0,7) = -s; face.xi(1,7) = t;
671 face.xi(0,8) = t; face.xi(1,8) = t;
675 {ElementType::QUD9, [](
faceType& face) ->
void {
676 face.w(0) = 25.0 / 81.0;
677 face.w(1) = 25.0 / 81.0;
678 face.w(2) = 25.0 / 81.0;
679 face.w(3) = 25.0 / 81.0;
681 face.w(4) = 40.0 / 81.0;
682 face.w(5) = 40.0 / 81.0;
683 face.w(6) = 40.0 / 81.0;
684 face.w(7) = 40.0 / 81.0;
685 face.w(8) = 64.0 / 81.0;
687 double s = sqrt(0.6);
720 {ElementType::TRI3, [](
faceType& face) ->
void {
729 double s = face.qmTRI3;
733 double t = -0.5*s+0.5;
734 face.xi(0,0) = t; face.xi(1,0) = t;
735 face.xi(0,1) = s; face.xi(1,1) = t;
736 face.xi(0,2) = t; face.xi(1,2) = s;
740 {ElementType::TRI6, [](
faceType& face) ->
void {
741 face.w[0] = 0.225000000000000 * 5.0e-1;
742 face.w[1] = 0.125939180544827 * 5.0e-1;
743 face.w[2] = 0.125939180544827 * 5.0e-1;
744 face.w[3] = 0.125939180544827 * 5.0e-1 ;
745 face.w(4) = 0.132394152788506 * 5.0e-1 ;
746 face.w(5) = 0.132394152788506 * 5.0e-1 ;
747 face.w(6) = 0.132394152788506 * 5.0e-1 ;
749 double s = 0.333333333333333;
750 face.xi(0,0) = s; face.xi(1,0) = s;
752 s = 0.797426985353087;
753 double t = 0.101286507323456;
754 face.xi(0,1) = s; face.xi(1,1) = t;
755 face.xi(0,2) = t; face.xi(1,2) = s;
756 face.xi(0,3) = t; face.xi(1,3) = t;
758 s = 0.059715871789770;
759 t = 0.470142064105115;
760 face.xi(0,4) = s; face.xi(1,4) = t;
761 face.xi(0,5) = t; face.xi(1,5) = s;
762 face.xi(0,6) = t; face.xi(1,6) = t;
The Vector template class is used for storing int and double data.
Definition Vector.h:23
The face type containing mesh at boundary.
Definition ComMod.h:511
This is the container for a mesh or NURBS patch, those specific to NURBS are noted.
Definition ComMod.h:863