33using GetElementGausIntMapType = std::map<ElementType, std::function<void(
const int,
const int,
38GetElementGausIntMapType get_element_gauss_int_data = {
40 {ElementType::HEX8, [](
const int insd,
const int nG,
Vector<double>& w, Array<double>& xi) ->
void {
42 double s = 1.0 / sqrt(3.0);
43 double t = -1.0 / sqrt(3.0);
79 {ElementType::HEX20, [](
const int insd,
const int nG,
Vector<double>& w, Array<double>& xi) ->
void {
80 for (
int i = 0; i < 8; i++) {
84 for (
int i = 8; i < 20; i++) {
88 for (
int i = 20; i < 26; i++) {
92 w(26) = 512.0 / 729.0;
98 xi(0, n) = -s; xi(1, n) = -s; xi(2, n) = -s; n++;
99 xi(0, n) = s; xi(1, n) = -s; xi(2, n) = -s; n++;
100 xi(0, n) = s; xi(1, n) = s; xi(2, n) = -s; n++;
101 xi(0, n) = -s; xi(1, n) = s; xi(2, n) = -s; n++;
102 xi(0, n) = -s; xi(1, n) = -s; xi(2, n) = s; n++;
103 xi(0, n) = s; xi(1, n) = -s; xi(2, n) = s; n++;
104 xi(0, n) = s; xi(1, n) = s; xi(2, n) = s; n++;
105 xi(0, n) = -s; xi(1, n) = s; xi(2, n) = s; n++;
107 xi(0, n) = t; xi(1, n) = -s; xi(2, n) = -s; n++;
108 xi(0,n) = s; xi(1,n) = t; xi(2,n) = -s; n++;
109 xi(0,n) = t; xi(1,n) = s; xi(2,n) = -s; n++;
110 xi(0,n) = -s; xi(1,n) = t; xi(2,n) = -s; n++;
111 xi(0,n) = t; xi(1,n) = -s; xi(2,n) = s; n++;
112 xi(0,n) = s; xi(1,n) = t; xi(2,n) = s; n++;
113 xi(0,n) = t; xi(1,n) = s; xi(2,n) = s; n++;
114 xi(0,n) = -s; xi(1,n) = t; xi(2,n) = s; n++;
115 xi(0,n) = -s; xi(1,n) = -s; xi(2,n) = t; n++;
116 xi(0,n) = s; xi(1,n) = -s; xi(2,n) = t; n++;
117 xi(0,n) = s; xi(1,n) = s; xi(2,n) = t; n++;
118 xi(0,n) = -s; xi(1,n) = s; xi(2,n) = t; n++;
120 xi(0,n) = -s; xi(1,n) = t; xi(2,n) = t; n++;
121 xi(0,n) = s; xi(1,n) = t; xi(2,n) = t; n++;
122 xi(0,n) = t; xi(1,n) = -s; xi(2,n) = t; n++;
123 xi(0,n) = t; xi(1,n) = s; xi(2,n) = t; n++;
124 xi(0,n) = t; xi(1,n) = t; xi(2,n) = -s; n++;
125 xi(0,n) = t; xi(1,n) = t; xi(2,n) = s; n++;
127 xi(0,n) = t; xi(1,n) = t; xi(2,n) = t;
131 {ElementType::HEX27, [](
const int insd,
const int nG,
Vector<double>& w, Array<double>& xi) ->
void {
133 for (
int i = 0; i < 8; i++) {
134 w(i) = 125.0 / 729.0;
137 for (
int i = 8; i < 20; i++) {
138 w(i) = 200.0 / 729.0;
141 for (
int i = 20; i < 26; i++) {
142 w(i) = 320.0 / 729.0;
145 w(26) = 512.0 / 729.0;
147 double s = sqrt(0.6);
151 xi(0, n) = -s; xi(1, n) = -s; xi(2, n) = -s; n++;
152 xi(0, n) = s; xi(1, n) = -s; xi(2, n) = -s; n++;
153 xi(0, n) = s; xi(1, n) = s; xi(2, n) = -s; n++;
154 xi(0, n) = -s; xi(1, n) = s; xi(2, n) = -s; n++;
155 xi(0, n) = -s; xi(1, n) = -s; xi(2, n) = s; n++;
156 xi(0, n) = s; xi(1, n) = -s; xi(2, n) = s; n++;
157 xi(0, n) = s; xi(1, n) = s; xi(2, n) = s; n++;
158 xi(0, n) = -s; xi(1, n) = s; xi(2, n) = s; n++;
160 xi(0, n) = t; xi(1, n) = -s; xi(2, n) = -s; n++;
161 xi(0,n) = s; xi(1,n) = t; xi(2,n) = -s; n++;
162 xi(0,n) = t; xi(1,n) = s; xi(2,n) = -s; n++;
163 xi(0,n) = -s; xi(1,n) = t; xi(2,n) = -s; n++;
164 xi(0,n) = t; xi(1,n) = -s; xi(2,n) = s; n++;
165 xi(0,n) = s; xi(1,n) = t; xi(2,n) = s; n++;
166 xi(0,n) = t; xi(1,n) = s; xi(2,n) = s; n++;
167 xi(0,n) = -s; xi(1,n) = t; xi(2,n) = s; n++;
168 xi(0,n) = -s; xi(1,n) = -s; xi(2,n) = t; n++;
169 xi(0,n) = s; xi(1,n) = -s; xi(2,n) = t; n++;
170 xi(0,n) = s; xi(1,n) = s; xi(2,n) = t; n++;
171 xi(0,n) = -s; xi(1,n) = s; xi(2,n) = t; n++;
173 xi(0,n) = -s; xi(1,n) = t; xi(2,n) = t; n++;
174 xi(0,n) = s; xi(1,n) = t; xi(2,n) = t; n++;
175 xi(0,n) = t; xi(1,n) = -s; xi(2,n) = t; n++;
176 xi(0,n) = t; xi(1,n) = s; xi(2,n) = t; n++;
177 xi(0,n) = t; xi(1,n) = t; xi(2,n) = -s; n++;
178 xi(0,n) = t; xi(1,n) = t; xi(2,n) = s; n++;
180 xi(0,n) = t; xi(1,n) = t; xi(2,n) = t;
184 {ElementType::LIN1, [](
const int insd,
const int nG,
Vector<double>& w, Array<double>& xi) ->
void {
186 double s = 1.0 / sqrt(3.0);
192 {ElementType::QUD4, [](
const int insd,
const int nG,
Vector<double>& w, Array<double>& xi) ->
void {
194 double s = 1.0 / sqrt(3.0);
195 xi(0,0) = -s; xi(1,0) = -s;
196 xi(0,1) = s; xi(1,1) = -s;
197 xi(0,2) = s; xi(1,2) = s;
198 xi(0,3) = -s; xi(1,3) = s;
202 {ElementType::QUD9, [](
const int insd,
const int nG,
Vector<double>& w, Array<double>& xi) ->
void {
203 for (
int i = 0; i < 4; i++) {
205 w(i+4) = 40.0 / 81.0;
209 double s = sqrt(6.0);
241 {ElementType::TET4, [](
const int insd,
const int nG,
Vector<double>& w, Array<double>& xi) ->
void {
242 for (
int i = 0; i < nG; i++) {
245 double s = (5.0 + 3.0*sqrt(5.0)) / 20.0;
246 double t = (5.0 - sqrt(5.0)) / 20.0;
247 xi(0,0) = s; xi(1,0) = t; xi(2,0) = t;
248 xi(0,1) = t; xi(1,1) = s; xi(2,1) = t;
249 xi(0,2) = t; xi(1,2) = t; xi(2,2) = s;
250 xi(0,3) = t; xi(1,3) = t; xi(2,3) = t;
254 {ElementType::TRI3, [](
const int insd,
const int nG,
Vector<double>& w, Array<double>& xi) ->
void {
255 for (
int i = 0; i < nG; i++) {
269 {ElementType::WDG, [](
const int insd,
const int nG,
Vector<double>& w, Array<double>& xi) ->
void {
270 for (
int i = 0; i < nG; i++) {
273 double s = 2.0 / 3.0;
274 double t = 1.0 / 6.0;
275 double uz = 1.0 / sqrt(3.0);
276 double lz = -1.0 / sqrt(3.0);
277 xi(0,0) = s; xi(1,0) = t; xi(2,0) = lz;
278 xi(0,1) = t; xi(1,1) = s; xi(2,1) = lz;
279 xi(0,2) = t; xi(1,2) = t; xi(2,2) = lz;
280 xi(0,3) = s; xi(1,3) = t; xi(2,3) = uz;
281 xi(0,4) = t; xi(1,4) = s; xi(2,4) = uz;
282 xi(0,5) = t; xi(1,5) = t; xi(2,5) = uz;
290using SetElementGausIntMapType = std::map<ElementType, std::function<void(
mshType&)>>;
296SetElementGausIntMapType set_element_gauss_int_data = {
298 {ElementType::HEX8, [](
mshType& mesh) ->
void {
299 for (
int i = 0; i < mesh.nG; i++) {
302 double s = 1.0 / sqrt(3.0);
303 double t = -1.0 / sqrt(3.0);
304 mesh.xi(0,0) = t; mesh.xi(1,0) = t; mesh.xi(2,0) = t;
305 mesh.xi(0,1) = s; mesh.xi(1,1) = t; mesh.xi(2,1) = t;
306 mesh.xi(0,2) = s; mesh.xi(1,2) = s; mesh.xi(2,2) = t;
307 mesh.xi(0,3) = t; mesh.xi(1,3) = s; mesh.xi(2,3) = t;
308 mesh.xi(0,4) = t; mesh.xi(1,4) = t; mesh.xi(2,4) = s;
309 mesh.xi(0,5) = s; mesh.xi(1,5) = t; mesh.xi(2,5) = s;
310 mesh.xi(0,6) = s; mesh.xi(1,6) = s; mesh.xi(2,6) = s;
311 mesh.xi(0,7) = t; mesh.xi(1,7) = s; mesh.xi(2,7) = s;
315 {ElementType::HEX20, [](
mshType& mesh) ->
void {
317 for (
int i = 0; i < 8; i++) {
318 mesh.w(i) = 125.0 / 729.0;
321 for (
int i = 8; i < 20; i++) {
322 mesh.w(i) = 200.0 / 729.0;
325 for (
int i = 20; i < 26; i++) {
326 mesh.w(i) = 320.0 / 729.0;
329 mesh.w(26) = 512.0 / 729.0;
331 double s = sqrt(0.6);
335 mesh.xi(0, n) = -s; mesh.xi(1, n) = -s; mesh.xi(2, n) = -s; n++;
336 mesh.xi(0, n) = s; mesh.xi(1, n) = -s; mesh.xi(2, n) = -s; n++;
337 mesh.xi(0, n) = s; mesh.xi(1, n) = s; mesh.xi(2, n) = -s; n++;
338 mesh.xi(0, n) = -s; mesh.xi(1, n) = s; mesh.xi(2, n) = -s; n++;
339 mesh.xi(0, n) = -s; mesh.xi(1, n) = -s; mesh.xi(2, n) = s; n++;
340 mesh.xi(0, n) = s; mesh.xi(1, n) = -s; mesh.xi(2, n) = s; n++;
341 mesh.xi(0, n) = s; mesh.xi(1, n) = s; mesh.xi(2, n) = s; n++;
342 mesh.xi(0, n) = -s; mesh.xi(1, n) = s; mesh.xi(2, n) = s; n++;
344 mesh.xi(0, n) = t; mesh.xi(1, n) = -s; mesh.xi(2, n) = -s; n++;
345 mesh.xi(0,n) = s; mesh.xi(1,n) = t; mesh.xi(2,n) = -s; n++;
346 mesh.xi(0,n) = t; mesh.xi(1,n) = s; mesh.xi(2,n) = -s; n++;
347 mesh.xi(0,n) = -s; mesh.xi(1,n) = t; mesh.xi(2,n) = -s; n++;
348 mesh.xi(0,n) = t; mesh.xi(1,n) = -s; mesh.xi(2,n) = s; n++;
349 mesh.xi(0,n) = s; mesh.xi(1,n) = t; mesh.xi(2,n) = s; n++;
350 mesh.xi(0,n) = t; mesh.xi(1,n) = s; mesh.xi(2,n) = s; n++;
351 mesh.xi(0,n) = -s; mesh.xi(1,n) = t; mesh.xi(2,n) = s; n++;
352 mesh.xi(0,n) = -s; mesh.xi(1,n) = -s; mesh.xi(2,n) = t; n++;
353 mesh.xi(0,n) = s; mesh.xi(1,n) = -s; mesh.xi(2,n) = t; n++;
354 mesh.xi(0,n) = s; mesh.xi(1,n) = s; mesh.xi(2,n) = t; n++;
355 mesh.xi(0,n) = -s; mesh.xi(1,n) = s; mesh.xi(2,n) = t; n++;
357 mesh.xi(0,n) = -s; mesh.xi(1,n) = t; mesh.xi(2,n) = t; n++;
358 mesh.xi(0,n) = s; mesh.xi(1,n) = t; mesh.xi(2,n) = t; n++;
359 mesh.xi(0,n) = t; mesh.xi(1,n) = -s; mesh.xi(2,n) = t; n++;
360 mesh.xi(0,n) = t; mesh.xi(1,n) = s; mesh.xi(2,n) = t; n++;
361 mesh.xi(0,n) = t; mesh.xi(1,n) = t; mesh.xi(2,n) = -s; n++;
362 mesh.xi(0,n) = t; mesh.xi(1,n) = t; mesh.xi(2,n) = s; n++;
364 mesh.xi(0,n) = t; mesh.xi(1,n) = t; mesh.xi(2,n) = t;
368 {ElementType::HEX27, [](
mshType& mesh) ->
void {
370 for (
int i = 0; i < 8; i++) {
371 mesh.w(i) = 125.0 / 729.0;
374 for (
int i = 8; i < 20; i++) {
375 mesh.w(i) = 200.0 / 729.0;
378 for (
int i = 20; i < 26; i++) {
379 mesh.w(i) = 320.0 / 729.0;
382 mesh.w(26) = 512.0 / 729.0;
384 double s = sqrt(0.6);
388 mesh.xi(0, n) = -s; mesh.xi(1, n) = -s; mesh.xi(2, n) = -s; n++;
389 mesh.xi(0, n) = s; mesh.xi(1, n) = -s; mesh.xi(2, n) = -s; n++;
390 mesh.xi(0, n) = s; mesh.xi(1, n) = s; mesh.xi(2, n) = -s; n++;
391 mesh.xi(0, n) = -s; mesh.xi(1, n) = s; mesh.xi(2, n) = -s; n++;
392 mesh.xi(0, n) = -s; mesh.xi(1, n) = -s; mesh.xi(2, n) = s; n++;
393 mesh.xi(0, n) = s; mesh.xi(1, n) = -s; mesh.xi(2, n) = s; n++;
394 mesh.xi(0, n) = s; mesh.xi(1, n) = s; mesh.xi(2, n) = s; n++;
395 mesh.xi(0, n) = -s; mesh.xi(1, n) = s; mesh.xi(2, n) = s; n++;
397 mesh.xi(0, n) = t; mesh.xi(1, n) = -s; mesh.xi(2, n) = -s; n++;
398 mesh.xi(0,n) = s; mesh.xi(1,n) = t; mesh.xi(2,n) = -s; n++;
399 mesh.xi(0,n) = t; mesh.xi(1,n) = s; mesh.xi(2,n) = -s; n++;
400 mesh.xi(0,n) = -s; mesh.xi(1,n) = t; mesh.xi(2,n) = -s; n++;
401 mesh.xi(0,n) = t; mesh.xi(1,n) = -s; mesh.xi(2,n) = s; n++;
402 mesh.xi(0,n) = s; mesh.xi(1,n) = t; mesh.xi(2,n) = s; n++;
403 mesh.xi(0,n) = t; mesh.xi(1,n) = s; mesh.xi(2,n) = s; n++;
404 mesh.xi(0,n) = -s; mesh.xi(1,n) = t; mesh.xi(2,n) = s; n++;
405 mesh.xi(0,n) = -s; mesh.xi(1,n) = -s; mesh.xi(2,n) = t; n++;
406 mesh.xi(0,n) = s; mesh.xi(1,n) = -s; mesh.xi(2,n) = t; n++;
407 mesh.xi(0,n) = s; mesh.xi(1,n) = s; mesh.xi(2,n) = t; n++;
408 mesh.xi(0,n) = -s; mesh.xi(1,n) = s; mesh.xi(2,n) = t; n++;
410 mesh.xi(0,n) = -s; mesh.xi(1,n) = t; mesh.xi(2,n) = t; n++;
411 mesh.xi(0,n) = s; mesh.xi(1,n) = t; mesh.xi(2,n) = t; n++;
412 mesh.xi(0,n) = t; mesh.xi(1,n) = -s; mesh.xi(2,n) = t; n++;
413 mesh.xi(0,n) = t; mesh.xi(1,n) = s; mesh.xi(2,n) = t; n++;
414 mesh.xi(0,n) = t; mesh.xi(1,n) = t; mesh.xi(2,n) = -s; n++;
415 mesh.xi(0,n) = t; mesh.xi(1,n) = t; mesh.xi(2,n) = s; n++;
417 mesh.xi(0,n) = t; mesh.xi(1,n) = t; mesh.xi(2,n) = t;
421 {ElementType::LIN1, [](
mshType& mesh) ->
void {
422 for (
int i = 0; i < mesh.nG; i++) {
425 double s = 1.0 / sqrt(3.0);
431 {ElementType::LIN2, [](
mshType& mesh) ->
void {
432 mesh.w[0] = 5.0 / 9.0;
433 mesh.w[1] = 5.0 / 9.0;
434 mesh.w[2] = 8.0 / 9.0;
436 double s = sqrt(0.6);
444 {ElementType::QUD4, [](
mshType& mesh) ->
void {
445 for (
int i = 0; i < mesh.nG; i++) {
448 double s = 1.0 / sqrt(3.0);
449 mesh.xi(0,0) = -s; mesh.xi(1,0) = -s;
450 mesh.xi(0,1) = s; mesh.xi(1,1) = -s;
451 mesh.xi(0,2) = s; mesh.xi(1,2) = s;
452 mesh.xi(0,3) = -s; mesh.xi(1,3) = s;
456 {ElementType::QUD9, [](
mshType& mesh) ->
void {
457 mesh.w(0) = 25.0 / 81.0;
458 mesh.w(1) = 25.0 / 81.0;
459 mesh.w(2) = 25.0 / 81.0;
460 mesh.w(3) = 25.0 / 81.0;
462 mesh.w(4) = 40.0 / 81.0;
463 mesh.w(5) = 40.0 / 81.0;
464 mesh.w(6) = 40.0 / 81.0;
465 mesh.w(7) = 40.0 / 81.0;
466 mesh.w(8) = 64.0 / 81.0;
468 double s = sqrt(0.6);
501 {ElementType::TET4, [](
mshType& mesh) ->
void {
502 for (
int i = 0; i < mesh.nG; i++) {
503 mesh.w(i) = 1.0 / 24.0;
508 double s = mesh.qmTET4;
512 double t = (1-s)/3.0;
513 mesh.xi(0,0) = s; mesh.xi(1,0) = t; mesh.xi(2,0) = t;
514 mesh.xi(0,1) = t; mesh.xi(1,1) = s; mesh.xi(2,1) = t;
515 mesh.xi(0,2) = t; mesh.xi(1,2) = t; mesh.xi(2,2) = s;
516 mesh.xi(0,3) = t; mesh.xi(1,3) = t; mesh.xi(2,3) = t;
520 {ElementType::TET10, [](
mshType& mesh) ->
void {
521 mesh.w(0) = 0.0302836780970890;
523 mesh.w(1) = 0.0060267857142860;
524 mesh.w(2) = 0.0060267857142860;
525 mesh.w(3) = 0.0060267857142860;
526 mesh.w(4) = 0.0060267857142860;
528 mesh.w(5) = 0.0116452490860290;
529 mesh.w(6) = 0.0116452490860290;
530 mesh.w(7) = 0.0116452490860290;
531 mesh.w(8) = 0.0116452490860290;
533 mesh.w(9) = 0.0109491415613860;
534 mesh.w(10) = 0.0109491415613860;
535 mesh.w(11) = 0.0109491415613860;
536 mesh.w(12) = 0.0109491415613860;
537 mesh.w(13) = 0.0109491415613860;
538 mesh.w(14) = 0.0109491415613860;
542 xi(0,0) = s; xi(1,0) = s; xi(2,0) = s;
544 s = 0.3333333333333330;
546 xi(0,1) = t; xi(1,1) = s; xi(2,1) = s;
547 xi(0,2) = s; xi(1,2) = t; xi(2,2) = s;
548 xi(0,3) = s; xi(1,3) = s; xi(2,3) = t;
549 xi(0,4) = s; xi(1,4) = s; xi(2,4) = s;
551 s = 0.0909090909090910;
552 t = 0.7272727272727270;
553 xi(0,5) = t; xi(1,5) = s; xi(2,5) = s;
554 xi(0,6) = s; xi(1,6) = t; xi(2,6) = s;
555 xi(0,7) = s; xi(1,7) = s; xi(2,7) = t;
556 xi(0,8) = s; xi(1,8) = s; xi(2,8) = s;
558 s = 0.0665501535736640;
559 t = 0.4334498464263360;
560 xi(0, 9) = s; xi(1, 9) = s; xi(2, 9) = t;
561 xi(0,10) = s; xi(1,10) = t; xi(2,10) = s;
562 xi(0,11) = s; xi(1,11) = t; xi(2,11) = t;
563 xi(0,12) = t; xi(1,12) = t; xi(2,12) = s;
564 xi(0,13) = t; xi(1,13) = s; xi(2,13) = t;
565 xi(0,14) = t; xi(1,14) = s; xi(2,14) = s;
569 {ElementType::TRI3, [](
mshType& mesh) ->
void {
570 for (
int i = 0; i < mesh.nG; i++) {
571 mesh.w(i) = 1.0 / 6.0;
573 double s = 2.0 / 3.0;
574 double t = 1.0 / 6.0;
575 mesh.xi(0,0) = t; mesh.xi(1,0) = t;
576 mesh.xi(0,1) = s; mesh.xi(1,1) = t;
577 mesh.xi(0,2) = t; mesh.xi(1,2) = s;
581 {ElementType::TRI6, [](
mshType& mesh) ->
void {
582 mesh.w[0] = 0.225000000000000 * 5.0e-1 ;
583 mesh.w[1] = 0.125939180544827 * 5.0e-1 ;
584 mesh.w[2] = 0.125939180544827 * 5.0e-1 ;
585 mesh.w[3] = 0.125939180544827 * 5.0e-1 ;
586 mesh.w(4) = 0.132394152788506 * 5.0e-1 ;
587 mesh.w(5) = 0.132394152788506 * 5.0e-1 ;
588 mesh.w(6) = 0.132394152788506 * 5.0e-1 ;
590 double s = 0.333333333333333;
591 mesh.xi(0,0) = s; mesh.xi(1,0) = s;
593 s = 0.797426985353087;
594 double t = 0.101286507323456;
595 mesh.xi(0,1) = s; mesh.xi(1,1) = t;
596 mesh.xi(0,2) = t; mesh.xi(1,2) = s;
597 mesh.xi(0,3) = t; mesh.xi(1,3) = t;
599 s = 0.059715871789770;
600 t = 0.470142064105115;
601 mesh.xi(0,4) = s; mesh.xi(1,4) = t;
602 mesh.xi(0,5) = t; mesh.xi(1,5) = s;
603 mesh.xi(0,6) = t; mesh.xi(1,6) = t;
607 {ElementType::WDG, [](
mshType& mesh) ->
void {
608 for (
int i = 0; i < mesh.nG; i++) {
609 mesh.w(i) = 1.0 / 6.0;
611 double s = 2.0 / 3.0;
612 double t = 1.0 / 6.0;
613 double uz = 1.0 / sqrt(3.0);
614 double lz = -1.0 / sqrt(3.0);
615 mesh.xi(0,0) = s; mesh.xi(1,0) = t; mesh.xi(2,0) = lz;
616 mesh.xi(0,1) = t; mesh.xi(1,1) = s; mesh.xi(2,1) = lz;
617 mesh.xi(0,2) = t; mesh.xi(1,2) = t; mesh.xi(2,2) = lz;
618 mesh.xi(0,3) = s; mesh.xi(1,3) = t; mesh.xi(2,3) = uz;
619 mesh.xi(0,4) = t; mesh.xi(1,4) = s; mesh.xi(2,4) = uz;
620 mesh.xi(0,5) = t; mesh.xi(1,5) = t; mesh.xi(2,5) = uz;
628using SetFaceGausIntMapType = std::map<ElementType, std::function<void(
faceType&)>>;
632SetFaceGausIntMapType set_face_gauss_int_data = {
634 {ElementType::PNT, [](
faceType& face) ->
void {
635 for (
int i = 0; i < face.nG; i++) {
641 {ElementType::LIN1, [](
faceType& face) ->
void {
642 for (
int i = 0; i < face.nG; i++) {
645 double s = 1.0 / sqrt(3.0);
651 {ElementType::LIN2, [](
faceType& face) ->
void {
652 face.w[0] = 5.0 / 9.0;
653 face.w[1] = 5.0 / 9.0;
654 face.w[2] = 8.0 / 9.0;
656 double s = sqrt(0.6);
664 {ElementType::QUD4, [](
faceType& face) ->
void {
666 double s = 1.0 / sqrt(3.0);
667 face.xi(0,0) = -s; face.xi(1,0) = -s;
668 face.xi(0,1) = s; face.xi(1,1) = -s;
669 face.xi(0,2) = s; face.xi(1,2) = s;
670 face.xi(0,3) = -s; face.xi(1,3) = s;
674 {ElementType::QUD8, [](
faceType& face) ->
void {
675 face.w(0) = 25.0/81.0;
676 face.w(1) = 25.0/81.0;
677 face.w(2) = 25.0/81.0;
678 face.w(3) = 25.0/81.0;
680 face.w(4) = 40.0/81.0;
681 face.w(5) = 40.0/81.0;
682 face.w(6) = 40.0/81.0;
683 face.w(7) = 40.0/81.0;
685 face.w(8) = 64.0/81.0;
687 double s = sqrt(0.6);
690 face.xi(0,0) = -s; face.xi(1,0) = -s;
691 face.xi(0,1) = s; face.xi(1,1) = -s;
692 face.xi(0,2) = s; face.xi(1,2) = s;
693 face.xi(0,3) = -s; face.xi(1,3) = s;
694 face.xi(0,4) = t; face.xi(1,4) = -s;
695 face.xi(0,5) = s; face.xi(1,5) = t;
696 face.xi(0,6) = t; face.xi(1,6) = s;
697 face.xi(0,7) = -s; face.xi(1,7) = t;
698 face.xi(0,8) = t; face.xi(1,8) = t;
702 {ElementType::QUD9, [](
faceType& face) ->
void {
703 face.w(0) = 25.0 / 81.0;
704 face.w(1) = 25.0 / 81.0;
705 face.w(2) = 25.0 / 81.0;
706 face.w(3) = 25.0 / 81.0;
708 face.w(4) = 40.0 / 81.0;
709 face.w(5) = 40.0 / 81.0;
710 face.w(6) = 40.0 / 81.0;
711 face.w(7) = 40.0 / 81.0;
712 face.w(8) = 64.0 / 81.0;
714 double s = sqrt(0.6);
747 {ElementType::TRI3, [](
faceType& face) ->
void {
756 double s = face.qmTRI3;
760 double t = -0.5*s+0.5;
761 face.xi(0,0) = t; face.xi(1,0) = t;
762 face.xi(0,1) = s; face.xi(1,1) = t;
763 face.xi(0,2) = t; face.xi(1,2) = s;
767 {ElementType::TRI6, [](
faceType& face) ->
void {
768 face.w[0] = 0.225000000000000 * 5.0e-1;
769 face.w[1] = 0.125939180544827 * 5.0e-1;
770 face.w[2] = 0.125939180544827 * 5.0e-1;
771 face.w[3] = 0.125939180544827 * 5.0e-1 ;
772 face.w(4) = 0.132394152788506 * 5.0e-1 ;
773 face.w(5) = 0.132394152788506 * 5.0e-1 ;
774 face.w(6) = 0.132394152788506 * 5.0e-1 ;
776 double s = 0.333333333333333;
777 face.xi(0,0) = s; face.xi(1,0) = s;
779 s = 0.797426985353087;
780 double t = 0.101286507323456;
781 face.xi(0,1) = s; face.xi(1,1) = t;
782 face.xi(0,2) = t; face.xi(1,2) = s;
783 face.xi(0,3) = t; face.xi(1,3) = t;
785 s = 0.059715871789770;
786 t = 0.470142064105115;
787 face.xi(0,4) = s; face.xi(1,4) = t;
788 face.xi(0,5) = t; face.xi(1,5) = s;
789 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:50
The face type containing mesh at boundary.
Definition ComMod.h:521
This is the container for a mesh or NURBS patch, those specific to NURBS are noted.
Definition ComMod.h:832