LifeV
FEDefinitions.cpp
Go to the documentation of this file.
1 //@HEADER
2 /*
3 *******************************************************************************
4 
5  Copyright (C) 2004, 2005, 2007 EPFL, Politecnico di Milano, INRIA
6  Copyright (C) 2010 EPFL, Politecnico di Milano, Emory University
7 
8  This file is part of LifeV.
9 
10  LifeV is free software; you can redistribute it and/or modify
11  it under the terms of the GNU Lesser General Public License as published by
12  the Free Software Foundation, either version 3 of the License, or
13  (at your option) any later version.
14 
15  LifeV is distributed in the hope that it will be useful,
16  but WITHOUT ANY WARRANTY; without even the implied warranty of
17  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
18  Lesser General Public License for more details.
19 
20  You should have received a copy of the GNU Lesser General Public License
21  along with LifeV. If not, see <http://www.gnu.org/licenses/>.
22 
23 *******************************************************************************
24 */
25 //@HEADER
26 
27 /*!
28  @file
29  @brief File containing the definition of the FE, quadrature rules, ...
30 
31  @contributor Samuel Quinodoz <samuel.quinodoz@epfl.ch>
32  @mantainer Samuel Quinodoz <samuel.quinodoz@epfl.ch>
33  */
34 
35 
36 #include <lifev/core/fem/QuadratureRule.hpp>
37 #include <lifev/core/fem/ReferenceFEScalar.hpp>
38 #include <lifev/core/fem/ReferenceFEHdiv.hpp>
39 #include <lifev/core/fem/ReferenceFEHybrid.hpp>
40 #include <lifev/core/fem/GeometricMap.hpp>
41 
42 namespace LifeV
43 {
44 
45 /*======================================================================
46  *
47  * Dummy Quadrature Rules
48  *
49  *=======================================================================*/
50 
51 //! id of the quadrature rules on nodes
52 const int QUAD_RULE_DUMMY = 1;
53 
54 
55 static const QuadraturePoint pt_node_0pt[ 1 ];
56 
59  "Dummy quadrature rule", NONE, 0, 0 );
60 
61 /*======================================================================
62  *
63  * Quadrature Rules on Nodes
64  *
65  *=======================================================================*/
66 //! total number of quadrature rules on segments
67 
69 //! id of the quadrature rules on nodes
70 const int QUAD_RULE_NODE_1PT = 1;
71 
72 
73 static const QuadraturePoint pt_node_1pt[ 1 ] =
74 {
75  QuadraturePoint ( 0., 1. )
76 };
79  "Gauss Legendre 1 point on a node", POINT, 1, 1 );
80 
81 
82 /*======================================================================
83  *
84  * Quadrature Rules on segments
85  *
86  *=======================================================================*/
87 //! total number of quadrature rules on segments
89 //! id of the quadrature rules on segments
94 //----------------------------------------------------------------------
95 
96 static const QuadraturePoint pt_seg_1pt[ 1 ] =
97 {
98  QuadraturePoint ( 0.5, 1. )
99 };
102  "Gauss Legendre 1 point on a segment", LINE, 1, 1 );
103 //
104 //----------------------------------------------------------------------
105 const Real q2ptx1 = ( 1 - std::sqrt ( 1. / 3. ) ) / 2., q2ptx2 = ( 1 + std::sqrt ( 1. / 3. ) ) / 2.;
106 const Real q2ptw1 = 0.5, q2ptw2 = 0.5;
107 
108 static const QuadraturePoint pt_seg_2pt[ 2 ] =
109 {
112 };
115  "Gauss Legendre 2 points on a segment", LINE, 2, 3 );
116 //----------------------------------------------------------------------
117 const Real q3ptx1 = 0.5, q3ptx2 = ( 1 - std::sqrt ( 3. / 5. ) ) / 2., q3ptx3 = ( 1 + std::sqrt ( 3. / 5. ) ) / 2.;
118 const Real q3ptw1 = 8. / 18., q3ptw2 = 5. / 18., q3ptw3 = 5. / 18.;
119 
120 static const QuadraturePoint pt_seg_3pt[ 3 ] =
121 {
125 };
126 
129  "Gauss Legendre 3 points on a segment", LINE, 3, 5 );
130 //----------------------------------------------------------------------
131 const Real q4ptx1 = (1. - sqrt ( (3. - 2.*sqrt (6. / 5.) ) / 7.) ) / 2., q4ptw1 = 0.5 * (18. + sqrt (30) ) / 36.;
132 const Real q4ptx2 = (1. + sqrt ( (3. - 2.*sqrt (6. / 5.) ) / 7.) ) / 2., q4ptw2 = 0.5 * (18. + sqrt (30) ) / 36.;
133 const Real q4ptx3 = (1. - sqrt ( (3. + 2.*sqrt (6. / 5.) ) / 7.) ) / 2., q4ptw3 = 0.5 * (18. - sqrt (30) ) / 36.;
134 const Real q4ptx4 = (1. + sqrt ( (3. + 2.*sqrt (6. / 5.) ) / 7.) ) / 2., q4ptw4 = 0.5 * (18. - sqrt (30) ) / 36.;
135 
136 static const QuadraturePoint pt_seg_4pt[ 4 ] =
137 {
142 };
143 
146  "Gauss Legendre 4 points on a segment", LINE, 4, 7 );
147 /*----------------------------------------------------------------------
148  Set of all quadrature rules on segments
149  ----------------------------------------------------------------------*/
151 {
156 };
157 /*======================================================================
158  *
159  * Quadrature Rules 2D on triangles
160  *
161  *=======================================================================*/
162 //! total number of quadrature rules in 2D on triangle
163 #define NB_QUAD_RULE_TRIA 5
164 //! id of the quadrature rules on triangles
165 #define QUAD_RULE_TRIA_1PT 1
166 #define QUAD_RULE_TRIA_3PT 2
167 #define QUAD_RULE_TRIA_4PT 3
168 #define QUAD_RULE_TRIA_6PT 4
169 #define QUAD_RULE_TRIA_7PT 5
170 //----------------------------------------------------------------------
171 
172 static const QuadraturePoint pt_tria_1pt[ 1 ] =
173 {
174  QuadraturePoint ( 1. / 3., 1. / 3., 1. / 2. )
175 };
178  "Quadrature rule 1 point on a triangle", TRIANGLE, 1, 1 );
179 //----------------------------------------------------------------------
180 static const QuadraturePoint pt_tria_3pt[ 3 ] =
181 {
182  QuadraturePoint ( 0.5, 0. , 1. / 6. ),
183  QuadraturePoint ( 0. , 0.5, 1. / 6. ),
184  QuadraturePoint ( 0.5, 0.5, 1. / 6. )
185 };
188  "Quadrature rule 3 points on a triangle", TRIANGLE, 3, 2 );
189 //----------------------------------------------------------------------
190 // 4 points Integration rule for triangle (Ref. e.g. Comincioli pag. 234) D of Ex = 3
191 const Real t4pt_xb1 = 3. / 5.,
192  t4pt_xb2 = 1. / 5.,
193  t4pt_w1 = 25. / 96.,
194  t4pt_w2 = -9. / 32.,
195  t4pt_a = 1. / 3.;
196 
197 static const QuadraturePoint pt_tria_4pt[ 4 ] =
198 {
203 };
204 
207  "Quadrature rule 4 points on a triangle", TRIANGLE, 4, 3 );
208 //----------------------------------------------------------------------
209 // 6 points Integration rule for triangle, D of Ex = 4
210 // Ref: G.R. Cowper, Gaussian quadrature formulas for triangles,
211 // Internat. J. Numer. Methods Engrg. 7 (1973), 405--408.
212 const Real t6pt_x1 = 0.091576213509770743;
213 const Real t6pt_x2 = 0.44594849091596488;
214 const Real t6pt_w1 = 0.054975871827660933;
215 const Real t6pt_w2 = 0.11169079483900573;
216 
217 static const QuadraturePoint pt_tria_6pt[ 6 ] =
218 {
225 };
227  "Quadrature rule 6 points on a triangle",
228  TRIANGLE, 6, 4 );
229 //----------------------------------------------------------------------
230 // 7 points Integration rule for triangle (Ref. Stroud) D of Ex = 5
231 const Real t7pt_x0 = 1. / 3.;
232 const Real t7pt_x1 = 0.10128650732345633;
233 const Real t7pt_x2 = 0.47014206410511508;
234 const Real t7pt_w0 = 0.1125;
235 const Real t7pt_w1 = 0.062969590272413576;
236 const Real t7pt_w2 = 0.066197076394253090;
237 
238 static const QuadraturePoint pt_tria_7pt[ 7 ] =
239 {
247 };
249  "Quadrature rule 7 points on a triangle",
250  TRIANGLE, 7, 5 );
251 /*----------------------------------------------------------------------
252  Set of all quadrature rules on triangle
253  ----------------------------------------------------------------------*/
255 {
261 };
262 //----------------------------------------------------------------------
263 /*======================================================================
264  *
265  * Quadrature Rules 2D on quadrangles
266  *
267  *=======================================================================*/
268 //! total number of quadrature rules in 2D on quadrangle
269 #define NB_QUAD_RULE_QUAD 4
270 //! id of the quadrature rules on quadrangles
271 #define QUAD_RULE_QUAD_1PT 1
272 #define QUAD_RULE_QUAD_4PT 2
273 #define QUAD_RULE_QUAD_9PT 3
274 #define QUAD_RULE_QUAD_16PT 4
275 //----------------------------------------------------------------------
276 
277 static const QuadraturePoint pt_quad_1pt[ 1 ] =
278 {
279  QuadraturePoint ( .5, .5, 1. )
280 };
283  "Quadrature rule 1 point on a quadrangle", QUAD, 1, 1 );
284 //----------------------------------------------------------------------
285 static const QuadraturePoint pt_quad_4pt[ 4 ] =
286 {
291 };
294  "Quadrature rule 4 points on a quadrangle", QUAD, 4, 3 );
295 //----------------------------------------------------------------------
296 // 4 points Integration rule for quadrangle
297 
298 static const QuadraturePoint pt_quad_9pt[ 9 ] =
299 {
309 };
310 
313  "Quadrature rule 9 points on a quadrangle", QUAD, 9, 5 );
314 //----------------------------------------------------------------------
315 // 4 points Integration rule for quadrangle
316 
317 static const QuadraturePoint pt_quad_16pt[ 16 ] =
318 {
335 };
336 
339  "Quadrature rule 16 points on a quadrangle", QUAD, 16, 5 );
340 /*----------------------------------------------------------------------
341  Set of all quadrature rules on quadrangle
342  ----------------------------------------------------------------------*/
344 {
349 };
350 //----------------------------------------------------------------------
351 /*======================================================================
352  *
353  * Quadrature Rules 3D on tetraedras
354  *
355  *=======================================================================*/
356 //! total number of quadrature rules in 3D on tetraedra
357 #define NB_QUAD_RULE_TETRA 6
358 //! id of the quadrature rules on tetraedra
359 #define QUAD_RULE_TETRA_1PT 1
360 #define QUAD_RULE_TETRA_4PT 2
361 #define QUAD_RULE_TETRA_4PT_NODAL 3
362 #define QUAD_RULE_TETRA_5PT 4
363 #define QUAD_RULE_TETRA_15PT 5
364 #define QUAD_RULE_TETRA_64PT 6
365 
366 
367 //----------------------------------------------------------------------
368 
369 static const QuadraturePoint pt_tetra_1pt[ 1 ] =
370 {
371  QuadraturePoint ( 1. / 4., 1. / 4., 1. / 4., 1. / 6. )
372 };
375  "Quadrature rule 1 point on a tetraedra", TETRA, 1, 1 );
376 //----------------------------------------------------------------------
377 const Real tet4ptx1 = ( 5. - std::sqrt ( 5. ) ) / 20., tet4ptx2 = ( 5. + 3 * std::sqrt ( 5. ) ) / 20.;
378 
379 static const QuadraturePoint pt_tetra_4pt[ 4 ] =
380 {
385 };
388  "Quadrature rule 4 points on a tetraedra", TETRA, 4, 2 );
389 //----------------------------------------------------------------------
390 //Nodal integration for lumping
392 {
393  QuadraturePoint ( 0.0, 0.0, 0.0, 1. / 24. ),
394  QuadraturePoint ( 1.0, 0.0, 0.0, 1. / 24. ),
395  QuadraturePoint ( 0.0, 1.0, 0.0, 1. / 24. ),
396  QuadraturePoint ( 0.0, 0.0, 1.0, 1. / 24. )
397 };
400  "Quadrature rule 4 points on a tetraedra vertices", TETRA, 4, 1 );
401 //----------------------------------------------------------------------
402 // 5 points Integration rule for tetraedra (Ref. e.g. Comincioli pag. 236)
403 const Real tet5ptx1 = 1. / 6. , tet5ptx2 = 1. / 2., tet5ptx3 = 1. / 4.;
404 
405 static const QuadraturePoint pt_tetra_5pt[ 5 ] =
406 {
412 };
413 
416  "Quadrature rule 5 points on a tetraedra", TETRA, 5, 3 );
417 //
418 //----------------------------------------------------------------------
419 // 15 points integration rule for tetra.
420 // D o E = 5 (Stroud, T3:5-1 pag. 315)
421 // r
422 const Real r5 = 0.25;
423 // s
424 const Real s5[ 4 ] =
425 {
426  0.09197107805272303, 0.3197936278296299
427 }
428 ; // (7 \mp \sqrt(15))/34
429 // t
430 const Real t5[ 4 ] =
431 {
432  0.7240867658418310, 0.04061911651111023
433 }
434 ; // (13 \pm 3*sqrt(15))/34
435 // u
436 const Real u5 = 0.05635083268962915; // (10-2*sqrt(15))/40
437 // v
438 const Real v5 = 0.4436491673103708; // (10+2*sqrt(15))/40
439 // A
440 const Real A5 = 0.01975308641975309; // 16/135*1/6
441 // B
442 const Real B5[ 2 ] =
443 {
444  0.01198951396316977, 0.01151136787104540
445 }
446 ; // 1/6*(2665 \pm 14*sqrt(15))/37800
447 // C
448 const Real C5 = 0.008818342151675485; // 20/378*1/6
449 //
450 static const QuadraturePoint pt_tetra_15pt[ 15 ] =
451 {
453  QuadraturePoint ( s5[ 0 ], s5[ 0 ], s5[ 0 ], B5[ 0 ] ),
454  QuadraturePoint ( t5[ 0 ], s5[ 0 ], s5[ 0 ], B5[ 0 ] ),
455  QuadraturePoint ( s5[ 0 ], t5[ 0 ], s5[ 0 ], B5[ 0 ] ),
456  QuadraturePoint ( s5[ 0 ], s5[ 0 ], t5[ 0 ], B5[ 0 ] ),
457  QuadraturePoint ( s5[ 1 ], s5[ 1 ], s5[ 1 ], B5[ 1 ] ),
458  QuadraturePoint ( t5[ 1 ], s5[ 1 ], s5[ 1 ], B5[ 1 ] ),
459  QuadraturePoint ( s5[ 1 ], t5[ 1 ], s5[ 1 ], B5[ 1 ] ),
460  QuadraturePoint ( s5[ 1 ], s5[ 1 ], t5[ 1 ], B5[ 1 ] ),
467 };
468 //
471  "Quadrature rule 15 points on a tetraedra",
472  TETRA, 15, 5 );
473 //----------------------------------------------------------------------
474 // 64 points integration rule for tetra.
475 // D o E = 7 (Stroud, T3:7-1 pag. 315)
476 //
477 // t
478 const Real t[ 4 ] =
479 {
480  0.0485005494, 0.2386007376, 0.5170472951, 0.7958514179
481 };
482 // s
483 const Real s[ 4 ] =
484 {
485  0.0571041961, 0.2768430136, 0.5835904324, 0.8602401357
486 };
487 // r
488 const Real r[ 4 ] =
489 {
490  0.0694318422, 0.3300094782, 0.6699905218, 0.9305681558
491 };
492 // A
493 const Real A[ 4 ] =
494 {
495  0.1739274226, 0.3260725774, 0.3260725774, 0.1739274226
496 };
497 // B
498 const Real B[ 4 ] =
499 {
500  0.1355069134, 0.2034645680, 0.1298475476, 0.0311809709
501 };
502 // C
503 const Real C[ 4 ] =
504 {
505  0.1108884156, 0.1434587898, 0.0686338872, 0.0103522407
506 };
507 //
508 /*
509 for (i=0;i<4;i++){
510  for (j=0;j<4;j++){
511  for (k=0;k<4;k++){
512  pt_tetra_64pt[k+4*j+16*i]=
513  QuadraturePoint(t[k], s[j]*(1-t[k]), r[i]*(1-s[j])*(1-t[k]), A[i]*B[j]*C[k]);
514  }
515  }
516 }
517 */
518 static const QuadraturePoint pt_tetra_64pt[ 64 ] =
519 {
520  QuadraturePoint ( t[ 0 ], s[ 0 ] * ( 1 - t[ 0 ] ), r[ 0 ] * ( 1 - s[ 0 ] ) * ( 1 - t[ 0 ] ), A[ 0 ] * B[ 0 ] * C[ 0 ] ),
521  QuadraturePoint ( t[ 1 ], s[ 0 ] * ( 1 - t[ 1 ] ), r[ 0 ] * ( 1 - s[ 0 ] ) * ( 1 - t[ 1 ] ), A[ 0 ] * B[ 0 ] * C[ 1 ] ),
522  QuadraturePoint ( t[ 2 ], s[ 0 ] * ( 1 - t[ 2 ] ), r[ 0 ] * ( 1 - s[ 0 ] ) * ( 1 - t[ 2 ] ), A[ 0 ] * B[ 0 ] * C[ 2 ] ),
523  QuadraturePoint ( t[ 3 ], s[ 0 ] * ( 1 - t[ 3 ] ), r[ 0 ] * ( 1 - s[ 0 ] ) * ( 1 - t[ 3 ] ), A[ 0 ] * B[ 0 ] * C[ 3 ] ),
524  QuadraturePoint ( t[ 0 ], s[ 1 ] * ( 1 - t[ 0 ] ), r[ 0 ] * ( 1 - s[ 1 ] ) * ( 1 - t[ 0 ] ), A[ 0 ] * B[ 1 ] * C[ 0 ] ),
525  QuadraturePoint ( t[ 1 ], s[ 1 ] * ( 1 - t[ 1 ] ), r[ 0 ] * ( 1 - s[ 1 ] ) * ( 1 - t[ 1 ] ), A[ 0 ] * B[ 1 ] * C[ 1 ] ),
526  QuadraturePoint ( t[ 2 ], s[ 1 ] * ( 1 - t[ 2 ] ), r[ 0 ] * ( 1 - s[ 1 ] ) * ( 1 - t[ 2 ] ), A[ 0 ] * B[ 1 ] * C[ 2 ] ),
527  QuadraturePoint ( t[ 3 ], s[ 1 ] * ( 1 - t[ 3 ] ), r[ 0 ] * ( 1 - s[ 1 ] ) * ( 1 - t[ 3 ] ), A[ 0 ] * B[ 1 ] * C[ 3 ] ),
528  QuadraturePoint ( t[ 0 ], s[ 2 ] * ( 1 - t[ 0 ] ), r[ 0 ] * ( 1 - s[ 2 ] ) * ( 1 - t[ 0 ] ), A[ 0 ] * B[ 2 ] * C[ 0 ] ),
529  QuadraturePoint ( t[ 1 ], s[ 2 ] * ( 1 - t[ 1 ] ), r[ 0 ] * ( 1 - s[ 2 ] ) * ( 1 - t[ 1 ] ), A[ 0 ] * B[ 2 ] * C[ 1 ] ),
530  QuadraturePoint ( t[ 2 ], s[ 2 ] * ( 1 - t[ 2 ] ), r[ 0 ] * ( 1 - s[ 2 ] ) * ( 1 - t[ 2 ] ), A[ 0 ] * B[ 2 ] * C[ 2 ] ),
531  QuadraturePoint ( t[ 3 ], s[ 2 ] * ( 1 - t[ 3 ] ), r[ 0 ] * ( 1 - s[ 2 ] ) * ( 1 - t[ 3 ] ), A[ 0 ] * B[ 2 ] * C[ 3 ] ),
532  QuadraturePoint ( t[ 0 ], s[ 3 ] * ( 1 - t[ 0 ] ), r[ 0 ] * ( 1 - s[ 3 ] ) * ( 1 - t[ 0 ] ), A[ 0 ] * B[ 3 ] * C[ 0 ] ),
533  QuadraturePoint ( t[ 1 ], s[ 3 ] * ( 1 - t[ 1 ] ), r[ 0 ] * ( 1 - s[ 3 ] ) * ( 1 - t[ 1 ] ), A[ 0 ] * B[ 3 ] * C[ 1 ] ),
534  QuadraturePoint ( t[ 2 ], s[ 3 ] * ( 1 - t[ 2 ] ), r[ 0 ] * ( 1 - s[ 3 ] ) * ( 1 - t[ 2 ] ), A[ 0 ] * B[ 3 ] * C[ 2 ] ),
535  QuadraturePoint ( t[ 3 ], s[ 3 ] * ( 1 - t[ 3 ] ), r[ 0 ] * ( 1 - s[ 3 ] ) * ( 1 - t[ 3 ] ), A[ 0 ] * B[ 3 ] * C[ 3 ] ),
536  QuadraturePoint ( t[ 0 ], s[ 0 ] * ( 1 - t[ 0 ] ), r[ 1 ] * ( 1 - s[ 0 ] ) * ( 1 - t[ 0 ] ), A[ 1 ] * B[ 0 ] * C[ 0 ] ),
537  QuadraturePoint ( t[ 1 ], s[ 0 ] * ( 1 - t[ 1 ] ), r[ 1 ] * ( 1 - s[ 0 ] ) * ( 1 - t[ 1 ] ), A[ 1 ] * B[ 0 ] * C[ 1 ] ),
538  QuadraturePoint ( t[ 2 ], s[ 0 ] * ( 1 - t[ 2 ] ), r[ 1 ] * ( 1 - s[ 0 ] ) * ( 1 - t[ 2 ] ), A[ 1 ] * B[ 0 ] * C[ 2 ] ),
539  QuadraturePoint ( t[ 3 ], s[ 0 ] * ( 1 - t[ 3 ] ), r[ 1 ] * ( 1 - s[ 0 ] ) * ( 1 - t[ 3 ] ), A[ 1 ] * B[ 0 ] * C[ 3 ] ),
540  QuadraturePoint ( t[ 0 ], s[ 1 ] * ( 1 - t[ 0 ] ), r[ 1 ] * ( 1 - s[ 1 ] ) * ( 1 - t[ 0 ] ), A[ 1 ] * B[ 1 ] * C[ 0 ] ),
541  QuadraturePoint ( t[ 1 ], s[ 1 ] * ( 1 - t[ 1 ] ), r[ 1 ] * ( 1 - s[ 1 ] ) * ( 1 - t[ 1 ] ), A[ 1 ] * B[ 1 ] * C[ 1 ] ),
542  QuadraturePoint ( t[ 2 ], s[ 1 ] * ( 1 - t[ 2 ] ), r[ 1 ] * ( 1 - s[ 1 ] ) * ( 1 - t[ 2 ] ), A[ 1 ] * B[ 1 ] * C[ 2 ] ),
543  QuadraturePoint ( t[ 3 ], s[ 1 ] * ( 1 - t[ 3 ] ), r[ 1 ] * ( 1 - s[ 1 ] ) * ( 1 - t[ 3 ] ), A[ 1 ] * B[ 1 ] * C[ 3 ] ),
544  QuadraturePoint ( t[ 0 ], s[ 2 ] * ( 1 - t[ 0 ] ), r[ 1 ] * ( 1 - s[ 2 ] ) * ( 1 - t[ 0 ] ), A[ 1 ] * B[ 2 ] * C[ 0 ] ),
545  QuadraturePoint ( t[ 1 ], s[ 2 ] * ( 1 - t[ 1 ] ), r[ 1 ] * ( 1 - s[ 2 ] ) * ( 1 - t[ 1 ] ), A[ 1 ] * B[ 2 ] * C[ 1 ] ),
546  QuadraturePoint ( t[ 2 ], s[ 2 ] * ( 1 - t[ 2 ] ), r[ 1 ] * ( 1 - s[ 2 ] ) * ( 1 - t[ 2 ] ), A[ 1 ] * B[ 2 ] * C[ 2 ] ),
547  QuadraturePoint ( t[ 3 ], s[ 2 ] * ( 1 - t[ 3 ] ), r[ 1 ] * ( 1 - s[ 2 ] ) * ( 1 - t[ 3 ] ), A[ 1 ] * B[ 2 ] * C[ 3 ] ),
548  QuadraturePoint ( t[ 0 ], s[ 3 ] * ( 1 - t[ 0 ] ), r[ 1 ] * ( 1 - s[ 3 ] ) * ( 1 - t[ 0 ] ), A[ 1 ] * B[ 3 ] * C[ 0 ] ),
549  QuadraturePoint ( t[ 1 ], s[ 3 ] * ( 1 - t[ 1 ] ), r[ 1 ] * ( 1 - s[ 3 ] ) * ( 1 - t[ 1 ] ), A[ 1 ] * B[ 3 ] * C[ 1 ] ),
550  QuadraturePoint ( t[ 2 ], s[ 3 ] * ( 1 - t[ 2 ] ), r[ 1 ] * ( 1 - s[ 3 ] ) * ( 1 - t[ 2 ] ), A[ 1 ] * B[ 3 ] * C[ 2 ] ),
551  QuadraturePoint ( t[ 3 ], s[ 3 ] * ( 1 - t[ 3 ] ), r[ 1 ] * ( 1 - s[ 3 ] ) * ( 1 - t[ 3 ] ), A[ 1 ] * B[ 3 ] * C[ 3 ] ),
552  QuadraturePoint ( t[ 0 ], s[ 0 ] * ( 1 - t[ 0 ] ), r[ 2 ] * ( 1 - s[ 0 ] ) * ( 1 - t[ 0 ] ), A[ 2 ] * B[ 0 ] * C[ 0 ] ),
553  QuadraturePoint ( t[ 1 ], s[ 0 ] * ( 1 - t[ 1 ] ), r[ 2 ] * ( 1 - s[ 0 ] ) * ( 1 - t[ 1 ] ), A[ 2 ] * B[ 0 ] * C[ 1 ] ),
554  QuadraturePoint ( t[ 2 ], s[ 0 ] * ( 1 - t[ 2 ] ), r[ 2 ] * ( 1 - s[ 0 ] ) * ( 1 - t[ 2 ] ), A[ 2 ] * B[ 0 ] * C[ 2 ] ),
555  QuadraturePoint ( t[ 3 ], s[ 0 ] * ( 1 - t[ 3 ] ), r[ 2 ] * ( 1 - s[ 0 ] ) * ( 1 - t[ 3 ] ), A[ 2 ] * B[ 0 ] * C[ 3 ] ),
556  QuadraturePoint ( t[ 0 ], s[ 1 ] * ( 1 - t[ 0 ] ), r[ 2 ] * ( 1 - s[ 1 ] ) * ( 1 - t[ 0 ] ), A[ 2 ] * B[ 1 ] * C[ 0 ] ),
557  QuadraturePoint ( t[ 1 ], s[ 1 ] * ( 1 - t[ 1 ] ), r[ 2 ] * ( 1 - s[ 1 ] ) * ( 1 - t[ 1 ] ), A[ 2 ] * B[ 1 ] * C[ 1 ] ),
558  QuadraturePoint ( t[ 2 ], s[ 1 ] * ( 1 - t[ 2 ] ), r[ 2 ] * ( 1 - s[ 1 ] ) * ( 1 - t[ 2 ] ), A[ 2 ] * B[ 1 ] * C[ 2 ] ),
559  QuadraturePoint ( t[ 3 ], s[ 1 ] * ( 1 - t[ 3 ] ), r[ 2 ] * ( 1 - s[ 1 ] ) * ( 1 - t[ 3 ] ), A[ 2 ] * B[ 1 ] * C[ 3 ] ),
560  QuadraturePoint ( t[ 0 ], s[ 2 ] * ( 1 - t[ 0 ] ), r[ 2 ] * ( 1 - s[ 2 ] ) * ( 1 - t[ 0 ] ), A[ 2 ] * B[ 2 ] * C[ 0 ] ),
561  QuadraturePoint ( t[ 1 ], s[ 2 ] * ( 1 - t[ 1 ] ), r[ 2 ] * ( 1 - s[ 2 ] ) * ( 1 - t[ 1 ] ), A[ 2 ] * B[ 2 ] * C[ 1 ] ),
562  QuadraturePoint ( t[ 2 ], s[ 2 ] * ( 1 - t[ 2 ] ), r[ 2 ] * ( 1 - s[ 2 ] ) * ( 1 - t[ 2 ] ), A[ 2 ] * B[ 2 ] * C[ 2 ] ),
563  QuadraturePoint ( t[ 3 ], s[ 2 ] * ( 1 - t[ 3 ] ), r[ 2 ] * ( 1 - s[ 2 ] ) * ( 1 - t[ 3 ] ), A[ 2 ] * B[ 2 ] * C[ 3 ] ),
564  QuadraturePoint ( t[ 0 ], s[ 3 ] * ( 1 - t[ 0 ] ), r[ 2 ] * ( 1 - s[ 3 ] ) * ( 1 - t[ 0 ] ), A[ 2 ] * B[ 3 ] * C[ 0 ] ),
565  QuadraturePoint ( t[ 1 ], s[ 3 ] * ( 1 - t[ 1 ] ), r[ 2 ] * ( 1 - s[ 3 ] ) * ( 1 - t[ 1 ] ), A[ 2 ] * B[ 3 ] * C[ 1 ] ),
566  QuadraturePoint ( t[ 2 ], s[ 3 ] * ( 1 - t[ 2 ] ), r[ 2 ] * ( 1 - s[ 3 ] ) * ( 1 - t[ 2 ] ), A[ 2 ] * B[ 3 ] * C[ 2 ] ),
567  QuadraturePoint ( t[ 3 ], s[ 3 ] * ( 1 - t[ 3 ] ), r[ 2 ] * ( 1 - s[ 3 ] ) * ( 1 - t[ 3 ] ), A[ 2 ] * B[ 3 ] * C[ 3 ] ),
568  QuadraturePoint ( t[ 0 ], s[ 0 ] * ( 1 - t[ 0 ] ), r[ 3 ] * ( 1 - s[ 0 ] ) * ( 1 - t[ 0 ] ), A[ 3 ] * B[ 0 ] * C[ 0 ] ),
569  QuadraturePoint ( t[ 1 ], s[ 0 ] * ( 1 - t[ 1 ] ), r[ 3 ] * ( 1 - s[ 0 ] ) * ( 1 - t[ 1 ] ), A[ 3 ] * B[ 0 ] * C[ 1 ] ),
570  QuadraturePoint ( t[ 2 ], s[ 0 ] * ( 1 - t[ 2 ] ), r[ 3 ] * ( 1 - s[ 0 ] ) * ( 1 - t[ 2 ] ), A[ 3 ] * B[ 0 ] * C[ 2 ] ),
571  QuadraturePoint ( t[ 3 ], s[ 0 ] * ( 1 - t[ 3 ] ), r[ 3 ] * ( 1 - s[ 0 ] ) * ( 1 - t[ 3 ] ), A[ 3 ] * B[ 0 ] * C[ 3 ] ),
572  QuadraturePoint ( t[ 0 ], s[ 1 ] * ( 1 - t[ 0 ] ), r[ 3 ] * ( 1 - s[ 1 ] ) * ( 1 - t[ 0 ] ), A[ 3 ] * B[ 1 ] * C[ 0 ] ),
573  QuadraturePoint ( t[ 1 ], s[ 1 ] * ( 1 - t[ 1 ] ), r[ 3 ] * ( 1 - s[ 1 ] ) * ( 1 - t[ 1 ] ), A[ 3 ] * B[ 1 ] * C[ 1 ] ),
574  QuadraturePoint ( t[ 2 ], s[ 1 ] * ( 1 - t[ 2 ] ), r[ 3 ] * ( 1 - s[ 1 ] ) * ( 1 - t[ 2 ] ), A[ 3 ] * B[ 1 ] * C[ 2 ] ),
575  QuadraturePoint ( t[ 3 ], s[ 1 ] * ( 1 - t[ 3 ] ), r[ 3 ] * ( 1 - s[ 1 ] ) * ( 1 - t[ 3 ] ), A[ 3 ] * B[ 1 ] * C[ 3 ] ),
576  QuadraturePoint ( t[ 0 ], s[ 2 ] * ( 1 - t[ 0 ] ), r[ 3 ] * ( 1 - s[ 2 ] ) * ( 1 - t[ 0 ] ), A[ 3 ] * B[ 2 ] * C[ 0 ] ),
577  QuadraturePoint ( t[ 1 ], s[ 2 ] * ( 1 - t[ 1 ] ), r[ 3 ] * ( 1 - s[ 2 ] ) * ( 1 - t[ 1 ] ), A[ 3 ] * B[ 2 ] * C[ 1 ] ),
578  QuadraturePoint ( t[ 2 ], s[ 2 ] * ( 1 - t[ 2 ] ), r[ 3 ] * ( 1 - s[ 2 ] ) * ( 1 - t[ 2 ] ), A[ 3 ] * B[ 2 ] * C[ 2 ] ),
579  QuadraturePoint ( t[ 3 ], s[ 2 ] * ( 1 - t[ 3 ] ), r[ 3 ] * ( 1 - s[ 2 ] ) * ( 1 - t[ 3 ] ), A[ 3 ] * B[ 2 ] * C[ 3 ] ),
580  QuadraturePoint ( t[ 0 ], s[ 3 ] * ( 1 - t[ 0 ] ), r[ 3 ] * ( 1 - s[ 3 ] ) * ( 1 - t[ 0 ] ), A[ 3 ] * B[ 3 ] * C[ 0 ] ),
581  QuadraturePoint ( t[ 1 ], s[ 3 ] * ( 1 - t[ 1 ] ), r[ 3 ] * ( 1 - s[ 3 ] ) * ( 1 - t[ 1 ] ), A[ 3 ] * B[ 3 ] * C[ 1 ] ),
582  QuadraturePoint ( t[ 2 ], s[ 3 ] * ( 1 - t[ 2 ] ), r[ 3 ] * ( 1 - s[ 3 ] ) * ( 1 - t[ 2 ] ), A[ 3 ] * B[ 3 ] * C[ 2 ] ),
583  QuadraturePoint ( t[ 3 ], s[ 3 ] * ( 1 - t[ 3 ] ), r[ 3 ] * ( 1 - s[ 3 ] ) * ( 1 - t[ 3 ] ), A[ 3 ] * B[ 3 ] * C[ 3 ] )
584 };
585 //
588  "Quadrature rule 64 points on a tetraedra",
589  TETRA, 64, 7 );
590 /*----------------------------------------------------------------------
591  Set of all quadrature rules on tetraedra
592  ----------------------------------------------------------------------*/
594 {
600 };
601 //----------------------------------------------------------------------
602 /*======================================================================
603  *
604  * Quadrature Rules 3D on hexaedras
605  *
606  *=======================================================================*/
607 //! total number of quadrature rules in 3D on hexa
608 #define NB_QUAD_RULE_HEXA 2
609 //! id of the quadrature rules on quadrangles
610 #define QUAD_RULE_HEXA_1PT 1
611 #define QUAD_RULE_HEXA_8PT 2
612 //----------------------------------------------------------------------
613 
614 static const QuadraturePoint pt_hexa_1pt[ 1 ] =
615 {
616  QuadraturePoint ( .5, .5, .5, 1. )
617 };
620  "Quadrature rule 1 point on a hexa", HEXA, 1, 1 );
621 //----------------------------------------------------------------------
622 static const QuadraturePoint pt_hexa_8pt[ 8 ] =
623 {
632 };
635  "Quadrature rule 8 points on a hexa", HEXA, 8, 3 );
636 /*----------------------------------------------------------------------
637  Set of all quadrature rules on hexa
638  ----------------------------------------------------------------------*/
640 {
643 };
644 
645 
646 
647 //----------------------------------------------------------------------
648 //
649 // GeometricMaps
650 //
651 //----------------------------------------------------------------------
652 
653 const GeometricMap geoLinearNode ( "Mapping of a point", POINT,
654  1, 1,
657  ( GeometricMap* ) NULL );
658 
659 const GeometricMap geoLinearSeg ( "Linear mapping on a segment", LINE,
660  2, 1,
663  &geoLinearNode );
664 
665 const GeometricMap geoQuadraticSeg ( "Quadratic mapping on a segment", LINE,
666  3, 1,
669  &geoLinearNode );
670 
671 const GeometricMap geoLinearTria ( "Linear mapping on a triangle", TRIANGLE,
672  3, 2,
675  &geoLinearSeg );
676 
677 const GeometricMap geoBilinearQuad ( "Bilinear mapping on a quadrangle", QUAD,
678  4, 2,
681  &geoLinearSeg );
682 
683 const GeometricMap geoBiquadraticQuad ( "Biquadratic mapping on a quadrangle", QUAD,
684  9, 2,
687  &geoQuadraticSeg );
688 
689 const GeometricMap geoLinearTetra ( "Linear mapping on a tetraedra", TETRA,
690  4, 3,
693  &geoLinearTria );
694 
695 const GeometricMap geoBilinearHexa ( "Bilinear mapping on an hexaedra", HEXA,
696  8, 3,
699  &geoBilinearQuad );
700 
701 //======================================================================
702 //
703 // P0 (0D)
704 //
705 //======================================================================
706 /*
707  1
708 */
709 Real fct1_P0_0D ( const GeoVector& )
710 {
711  return 1.;
712 }
713 Real derfct1_P0_0D ( const GeoVector& )
714 {
715  return 0.;
716 }
717 Real der2fct1_P0_0D ( const GeoVector& )
718 {
719  return 0.;
720 }
721 
722 //======================================================================
723 //
724 // P0 (1D)
725 //
726 //======================================================================
727 /*
728  --1--
729 */
730 Real fct1_P0_1D ( const GeoVector& /*v*/ )
731 {
732  return 1.;
733 }
734 
735 Real derfct1_1_P0_1D ( const GeoVector& /*v*/ )
736 {
737  return 0.;
738 }
739 
740 Real der2fct1_P0_1D ( const GeoVector& /*v*/ )
741 {
742  return 0.;
743 }
744 
745 //======================================================================
746 //
747 // P1 (1D)
748 //
749 //======================================================================
750 /*
751  1-----2
752 */
753 Real fct1_P1_1D ( const GeoVector& v )
754 {
755  return 1 - v[0];
756 }
757 Real fct2_P1_1D ( const GeoVector& v )
758 {
759  return v[0];
760 }
761 
762 Real derfct1_1_P1_1D ( const GeoVector& )
763 {
764  return -1;
765 }
766 Real derfct2_1_P1_1D ( const GeoVector& )
767 {
768  return 1;
769 }
770 
771 Real der2fct1_P1_1D ( const GeoVector& )
772 {
773  return 0;
774 }
775 
776 //======================================================================
777 //
778 // P2 (1D)
779 //
780 //======================================================================
781 /*
782  1--3--2
783 */
784 Real fct1_P2_1D ( const GeoVector& v )
785 {
786  return 2. * ( v[0] - 1. ) * ( v[0] - 0.5 );
787 }
788 Real fct3_P2_1D ( const GeoVector& v )
789 {
790  return 4. * v[0] * ( 1. - v[0] );
791 }
792 Real fct2_P2_1D ( const GeoVector& v )
793 {
794  return 2. * v[0] * ( v[0] - 0.5 );
795 }
796 
797 Real derfct1_1_P2_1D ( const GeoVector& v )
798 {
799  return 4. * v[0] - 3.;
800 }
801 Real derfct3_1_P2_1D ( const GeoVector& v )
802 {
803  return -8. * v[0] + 4.;
804 }
805 Real derfct2_1_P2_1D ( const GeoVector& v )
806 {
807  return 4. * v[0] - 1.;
808 }
809 
810 Real der2fct1_11_P2_1D ( const GeoVector& )
811 {
812  return 4;
813 }
814 Real der2fct3_11_P2_1D ( const GeoVector& )
815 {
816  return -8;
817 }
818 Real der2fct2_11_P2_1D ( const GeoVector& )
819 {
820  return 4;
821 }
822 
823 
824 //======================================================================
825 //
826 // P0 (2D)
827 //
828 //======================================================================
829 /*
830 
831  |\
832  | \
833  | 1\
834  ---
835 */
836 Real fct1_P0_2D ( const GeoVector& )
837 {
838  return 1. ;
839 }
840 // First and Second derivatives are both equal (to 0).
841 Real derfct1_P0_2D ( const GeoVector& )
842 {
843  return 0. ;
844 }
845 Real der2fct1_P0_2D ( const GeoVector& )
846 {
847  return 0. ;
848 }
849 
850 //======================================================================
851 //
852 // P1 (2D)
853 //
854 //======================================================================
855 /*
856  3
857  |\
858  | \
859  | \
860  1---2
861 */
862 Real fct1_P1_2D ( const GeoVector& v )
863 {
864  return ( 1. - v[0] - v[1] );
865 }
866 Real fct2_P1_2D ( const GeoVector& v )
867 {
868  return v[0] ;
869 }
870 Real fct3_P1_2D ( const GeoVector& v )
871 {
872  return v[1] ;
873 }
874 
875 Real derfct1_1_P1_2D ( const GeoVector& )
876 {
877  return -1 ;
878 }
879 Real derfct1_2_P1_2D ( const GeoVector& )
880 {
881  return -1 ;
882 }
883 Real derfct2_1_P1_2D ( const GeoVector& )
884 {
885  return 1 ;
886 }
887 Real derfct2_2_P1_2D ( const GeoVector& )
888 {
889  return 0 ;
890 }
891 Real derfct3_1_P1_2D ( const GeoVector& )
892 {
893  return 0 ;
894 }
895 Real derfct3_2_P1_2D ( const GeoVector& )
896 {
897  return 1 ;
898 }
899 
900 // Second derivatives
901 Real der2fctx_xx_P1_2D ( const GeoVector& )
902 {
903  return 0;
904 }
905 
906 
907 
908 //======================================================================
909 //
910 // P1bubble (2D)
911 //
912 //======================================================================
913 /*
914  3
915  |\
916  | \
917  |4.\
918  1---2
919 */
920 
921 Real fct1_P1bubble_2D ( const GeoVector& v )
922 {
923  return ( 1. - v[0] - v[1] );
924 }
925 Real fct2_P1bubble_2D ( const GeoVector& v )
926 {
927  return v[0] ;
928 }
929 Real fct3_P1bubble_2D ( const GeoVector& v )
930 {
931  return v[1] ;
932 }
933 
934 Real fct4_P1bubble_2D ( const GeoVector& v )
935 {
936  return ( 1. - v[0] - v[1] ) * v[0] * v[1];
937 }
938 
939 Real derfct1_1_P1bubble_2D ( const GeoVector& )
940 {
941  return -1 ;
942 }
943 Real derfct1_2_P1bubble_2D ( const GeoVector& )
944 {
945  return -1 ;
946 }
947 Real derfct2_1_P1bubble_2D ( const GeoVector& )
948 {
949  return 1 ;
950 }
951 Real derfct2_2_P1bubble_2D ( const GeoVector& )
952 {
953  return 0 ;
954 }
955 Real derfct3_1_P1bubble_2D ( const GeoVector& )
956 {
957  return 0 ;
958 }
959 Real derfct3_2_P1bubble_2D ( const GeoVector& )
960 {
961  return 1 ;
962 }
963 
964 Real derfct4_1_P1bubble_2D ( const GeoVector& v )
965 {
966  return ( 1 - 2 * v[0] - v[1] ) * v[1];
967 }
968 Real derfct4_2_P1bubble_2D ( const GeoVector& v )
969 {
970  return ( 1 - v[0] - 2 * v[1] ) * v[0];
971 }
972 
973 // Second derivatives
974 Real der2fctx_xx_P1bubble_2D ( const GeoVector& )
975 {
976  return 0;
977 }
978 
979 Real der2fct4_11_P1bubble_2D ( const GeoVector& v )
980 {
981  return -2 * v[1];
982 }
983 Real der2fct4_12_P1bubble_2D ( const GeoVector& v )
984 {
985  return 1 - 2 * v[0] - 2 * v[1];
986 }
987 Real der2fct4_21_P1bubble_2D ( const GeoVector& v )
988 {
989  return 1 - 2 * v[0] - 2 * v[1];
990 }
991 Real der2fct4_22_P1bubble_2D ( const GeoVector& v )
992 {
993  return -2 * v[0];
994 }
995 
996 
997 
998 //======================================================================
999 //
1000 // P2 (2D)
1001 //
1002 //======================================================================
1003 /*
1004  3
1005  |\
1006  6 5
1007  | \
1008  1-4-2
1009 */
1010 Real fct1_P2_2D ( const GeoVector& v )
1011 {
1012  return ( 1 - v[0] - v[1] ) * ( 1 - v[0] - v[0] - v[1] - v[1] );
1013 }
1014 Real fct2_P2_2D ( const GeoVector& v )
1015 {
1016  return -v[0] * ( 1 - v[0] - v[0] );
1017 }
1018 Real fct3_P2_2D ( const GeoVector& v )
1019 {
1020  return -v[1] * ( 1 - v[1] - v[1] );
1021 }
1022 Real fct4_P2_2D ( const GeoVector& v )
1023 {
1024  return 4 * v[0] * ( 1 - v[0] - v[1] );
1025 }
1026 Real fct5_P2_2D ( const GeoVector& v )
1027 {
1028  return 4 * v[0] * v[1];
1029 }
1030 Real fct6_P2_2D ( const GeoVector& v )
1031 {
1032  return 4 * v[1] * ( 1 - v[0] - v[1] );
1033 }
1034 
1035 Real derfct1_1_P2_2D ( const GeoVector& v )
1036 {
1037  return 4 * ( v[0] + v[1] ) - 3;
1038 }
1039 Real derfct1_2_P2_2D ( const GeoVector& v )
1040 {
1041  return 4 * ( v[0] + v[1] ) - 3;
1042 }
1043 Real derfct2_1_P2_2D ( const GeoVector& v )
1044 {
1045  return 4 * v[0] - 1;
1046 }
1047 Real derfct2_2_P2_2D ( const GeoVector& )
1048 {
1049  return 0;
1050 }
1051 Real derfct3_1_P2_2D ( const GeoVector& )
1052 {
1053  return 0;
1054 }
1055 Real derfct3_2_P2_2D ( const GeoVector& v )
1056 {
1057  return 4 * v[1] - 1;
1058 }
1059 Real derfct4_1_P2_2D ( const GeoVector& v )
1060 {
1061  return 4 * ( 1 - v[0] - v[0] - v[1] );
1062 }
1063 Real derfct4_2_P2_2D ( const GeoVector& v )
1064 {
1065  return -4 * v[0];
1066 }
1067 Real derfct5_1_P2_2D ( const GeoVector& v )
1068 {
1069  return 4 * v[1];
1070 }
1071 Real derfct5_2_P2_2D ( const GeoVector& v )
1072 {
1073  return 4 * v[0];
1074 }
1075 Real derfct6_1_P2_2D ( const GeoVector& v )
1076 {
1077  return -4 * v[1];
1078 }
1079 Real derfct6_2_P2_2D ( const GeoVector& v )
1080 {
1081  return 4 * ( 1 - v[0] - v[1] - v[1] );
1082 }
1083 
1084 Real der2fct1_11_P2_2D ( const GeoVector& )
1085 {
1086  return 4;
1087 }
1088 Real der2fct1_12_P2_2D ( const GeoVector& )
1089 {
1090  return 4;
1091 }
1092 Real der2fct1_21_P2_2D ( const GeoVector& )
1093 {
1094  return 4;
1095 }
1096 Real der2fct1_22_P2_2D ( const GeoVector& )
1097 {
1098  return 4;
1099 }
1100 
1101 Real der2fct2_11_P2_2D ( const GeoVector& )
1102 {
1103  return 4;
1104 }
1105 Real der2fct2_12_P2_2D ( const GeoVector& )
1106 {
1107  return 0;
1108 }
1109 Real der2fct2_21_P2_2D ( const GeoVector& )
1110 {
1111  return 0;
1112 }
1113 Real der2fct2_22_P2_2D ( const GeoVector& )
1114 {
1115  return 0;
1116 }
1117 
1118 Real der2fct3_11_P2_2D ( const GeoVector& )
1119 {
1120  return 0;
1121 }
1122 Real der2fct3_12_P2_2D ( const GeoVector& )
1123 {
1124  return 0;
1125 }
1126 Real der2fct3_21_P2_2D ( const GeoVector& )
1127 {
1128  return 0;
1129 }
1130 Real der2fct3_22_P2_2D ( const GeoVector& )
1131 {
1132  return 4;
1133 }
1134 
1135 Real der2fct4_11_P2_2D ( const GeoVector& )
1136 {
1137  return -8;
1138 }
1139 Real der2fct4_12_P2_2D ( const GeoVector& )
1140 {
1141  return -4;
1142 }
1143 Real der2fct4_21_P2_2D ( const GeoVector& )
1144 {
1145  return -4;
1146 }
1147 Real der2fct4_22_P2_2D ( const GeoVector& )
1148 {
1149  return 0;
1150 }
1151 
1152 Real der2fct5_11_P2_2D ( const GeoVector& )
1153 {
1154  return 0;
1155 }
1156 Real der2fct5_12_P2_2D ( const GeoVector& )
1157 {
1158  return 4;
1159 }
1160 Real der2fct5_21_P2_2D ( const GeoVector& )
1161 {
1162  return 4;
1163 }
1164 Real der2fct5_22_P2_2D ( const GeoVector& )
1165 {
1166  return 0;
1167 }
1168 
1169 Real der2fct6_11_P2_2D ( const GeoVector& )
1170 {
1171  return 0;
1172 }
1173 Real der2fct6_12_P2_2D ( const GeoVector& )
1174 {
1175  return -4;
1176 }
1177 Real der2fct6_21_P2_2D ( const GeoVector& )
1178 {
1179  return -4;
1180 }
1181 Real der2fct6_22_P2_2D ( const GeoVector& )
1182 {
1183  return -8;
1184 }
1185 
1186 //======================================================================
1187 //
1188 // RT0 Triangle (2D)
1189 //
1190 //======================================================================
1191 /*
1192  3
1193  |\
1194  | \
1195  | \
1196  1---2
1197 */
1198 Real fct1_RT0_1_TRIA_2D ( const GeoVector& v )
1199 {
1200  return v[0];
1201 }
1202 Real fct1_RT0_2_TRIA_2D ( const GeoVector& v )
1203 {
1204  return v[1] - 1.;
1205 }
1206 
1207 Real fct2_RT0_1_TRIA_2D ( const GeoVector& v )
1208 {
1209  return v[0];
1210 }
1211 Real fct2_RT0_2_TRIA_2D ( const GeoVector& v )
1212 {
1213  return v[1];
1214 }
1215 
1216 Real fct3_RT0_1_TRIA_2D ( const GeoVector& v )
1217 {
1218  return v[0] - 1.;
1219 }
1220 Real fct3_RT0_2_TRIA_2D ( const GeoVector& v )
1221 {
1222  return v[1];
1223 }
1224 
1225 Real fct1_DIV_RT0_TRIA_2D ( const GeoVector& /*v*/ )
1226 {
1227  return 2.;
1228 }
1229 Real fct2_DIV_RT0_TRIA_2D ( const GeoVector& /*v*/ )
1230 {
1231  return 2.;
1232 }
1233 Real fct3_DIV_RT0_TRIA_2D ( const GeoVector& /*v*/ )
1234 {
1235  return 2.;
1236 }
1237 
1238 
1239 //======================================================================
1240 //
1241 // Q0 (2D)
1242 //
1243 //======================================================================
1244 /*
1245  -------
1246  | |
1247  | 1 |
1248  | |
1249  -------
1250 */
1251 Real fct1_Q0_2D ( const GeoVector& )
1252 {
1253  return 1. ;
1254 }
1255 Real derfct1_Q0_2D ( const GeoVector& )
1256 {
1257  return 0. ;
1258 }
1259 // The second derivative is equal to the first : both are equal to 0.
1260 Real der2fct1_Q0_2D ( const GeoVector& )
1261 {
1262  return 0. ;
1263 }
1264 
1265 //======================================================================
1266 //
1267 // Q1 (2D)
1268 //
1269 //======================================================================
1270 /*
1271  4-------3
1272  | |
1273  | |
1274  | |
1275  1-------2
1276 */
1277 Real fct1_Q1_2D ( const GeoVector& v )
1278 {
1279  return ( 1. - v[0] ) * ( 1. - v[1] );
1280 }
1281 Real fct2_Q1_2D ( const GeoVector& v )
1282 {
1283  return ( 1. - v[1] ) * v[0];
1284 }
1285 Real fct3_Q1_2D ( const GeoVector& v )
1286 {
1287  return v[0] * v[1];
1288 }
1289 Real fct4_Q1_2D ( const GeoVector& v )
1290 {
1291  return v[1] * ( 1. - v[0] );
1292 }
1293 
1294 Real derfct1_1_Q1_2D ( const GeoVector& v )
1295 {
1296  return - ( 1. - v[1] );
1297 }
1298 Real derfct1_2_Q1_2D ( const GeoVector& v )
1299 {
1300  return - ( 1. - v[0] );
1301 }
1302 Real derfct2_1_Q1_2D ( const GeoVector& v )
1303 {
1304  return ( 1. - v[1] );
1305 }
1306 Real derfct2_2_Q1_2D ( const GeoVector& v )
1307 {
1308  return -v[0];
1309 }
1310 Real derfct3_1_Q1_2D ( const GeoVector& v )
1311 {
1312  return v[1];
1313 }
1314 Real derfct3_2_Q1_2D ( const GeoVector& v )
1315 {
1316  return v[0];
1317 }
1318 Real derfct4_1_Q1_2D ( const GeoVector& v )
1319 {
1320  return -v[1];
1321 }
1322 Real derfct4_2_Q1_2D ( const GeoVector& v )
1323 {
1324  return ( 1. - v[0] );
1325 }
1326 
1327 // Second derivatives
1328 Real der2fctx_xx_Q1_2D ( const GeoVector& )
1329 {
1330  return 0;
1331 }
1332 //======================================================================
1333 //
1334 // Q2 (2D)
1335 //
1336 //======================================================================
1337 /*
1338  4---7---3
1339  | |
1340  8 9 6
1341  | |
1342  1---5---2
1343 */
1344 Real fct1_Q2_2D ( const GeoVector& v )
1345 {
1346  return 4. * ( 1 - v[0] ) * ( 0.5 - v[0] ) * ( 1 - v[1] ) * ( 0.5 - v[1] );
1347 }
1348 Real fct5_Q2_2D ( const GeoVector& v )
1349 {
1350  return 8. * v[0] * ( 1 - v[0] ) * ( 1 - v[1] ) * ( 0.5 - v[1] );
1351 }
1352 Real fct2_Q2_2D ( const GeoVector& v )
1353 {
1354  return 4. * v[0] * ( v[0] - 0.5 ) * ( 1 - v[1] ) * ( 0.5 - v[1] );
1355 }
1356 Real fct6_Q2_2D ( const GeoVector& v )
1357 {
1358  return 8. * v[0] * ( v[0] - 0.5 ) * v[1] * ( 1 - v[1] );
1359 }
1360 Real fct3_Q2_2D ( const GeoVector& v )
1361 {
1362  return 4. * v[0] * ( v[0] - 0.5 ) * v[1] * ( v[1] - 0.5 );
1363 }
1364 Real fct7_Q2_2D ( const GeoVector& v )
1365 {
1366  return 8. * v[0] * ( 1 - v[0] ) * v[1] * ( v[1] - 0.5 );
1367 }
1368 Real fct4_Q2_2D ( const GeoVector& v )
1369 {
1370  return 4. * ( 1 - v[0] ) * ( 0.5 - v[0] ) * v[1] * ( v[1] - 0.5 );
1371 }
1372 Real fct8_Q2_2D ( const GeoVector& v )
1373 {
1374  return 8. * ( 0.5 - v[0] ) * ( 1 - v[0] ) * v[1] * ( 1 - v[1] );
1375 }
1376 Real fct9_Q2_2D ( const GeoVector& v )
1377 {
1378  return 16. * v[0] * ( 1 - v[0] ) * v[1] * ( 1 - v[1] );
1379 }
1380 
1381 Real derfct1_1_Q2_2D ( const GeoVector& v )
1382 {
1383  return ( 2. * v[1] - 1. ) * ( v[1] - 1. ) * ( 4. * v[0] - 3. );
1384 }
1385 Real derfct1_2_Q2_2D ( const GeoVector& v )
1386 {
1387  return ( 2. * v[0] - 1. ) * ( v[0] - 1. ) * ( 4. * v[1] - 3. );
1388 }
1389 Real derfct5_1_Q2_2D ( const GeoVector& v )
1390 {
1391  return -4. * ( 2. * v[1] - 1. ) * ( v[1] - 1. ) * ( 2. * v[0] - 1. );
1392 }
1393 Real derfct5_2_Q2_2D ( const GeoVector& v )
1394 {
1395  return -4. * v[0] * ( v[0] - 1. ) * ( 4. * v[1] - 3. );
1396 }
1397 Real derfct2_1_Q2_2D ( const GeoVector& v )
1398 {
1399  return ( 2. * v[1] - 1. ) * ( v[1] - 1. ) * ( 4. * v[0] - 1. );
1400 }
1401 Real derfct2_2_Q2_2D ( const GeoVector& v )
1402 {
1403  return v[0] * ( 2. * v[0] - 1. ) * ( 4. * v[1] - 3. );
1404 }
1405 Real derfct6_1_Q2_2D ( const GeoVector& v )
1406 {
1407  return -4. * v[1] * ( 4. * v[0] - 1. ) * ( v[1] - 1. );
1408 }
1409 Real derfct6_2_Q2_2D ( const GeoVector& v )
1410 {
1411  return -4. * v[0] * ( 2. * v[0] - 1. ) * ( 2. * v[1] - 1. );
1412 }
1413 Real derfct3_1_Q2_2D ( const GeoVector& v )
1414 {
1415  return v[1] * ( 4. * v[0] - 1. ) * ( 2. * v[1] - 1. );
1416 }
1417 Real derfct3_2_Q2_2D ( const GeoVector& v )
1418 {
1419  return v[0] * ( 2. * v[0] - 1. ) * ( 4. * v[1] - 1. );
1420 }
1421 Real derfct7_1_Q2_2D ( const GeoVector& v )
1422 {
1423  return -4. * v[1] * ( 2. * v[0] - 1. ) * ( 2. * v[1] - 1. );
1424 }
1425 Real derfct7_2_Q2_2D ( const GeoVector& v )
1426 {
1427  return -4. * v[0] * ( v[0] - 1. ) * ( 4. * v[1] - 1. );
1428 }
1429 Real derfct4_1_Q2_2D ( const GeoVector& v )
1430 {
1431  return v[1] * ( 4. * v[0] - 3. ) * ( 2. * v[1] - 1. );
1432 }
1433 Real derfct4_2_Q2_2D ( const GeoVector& v )
1434 {
1435  return ( 2. * v[0] - 1. ) * ( v[0] - 1. ) * ( 4. * v[1] - 1. );
1436 }
1437 Real derfct8_1_Q2_2D ( const GeoVector& v )
1438 {
1439  return -4. * v[1] * ( 4. * v[0] - 3. ) * ( v[1] - 1. );
1440 }
1441 Real derfct8_2_Q2_2D ( const GeoVector& v )
1442 {
1443  return -4. * ( 2. * v[0] - 1. ) * ( v[0] - 1. ) * ( 2. * v[1] - 1. );
1444 }
1445 Real derfct9_1_Q2_2D ( const GeoVector& v )
1446 {
1447  return 16. * v[1] * ( 2. * v[0] - 1. ) * ( v[1] - 1. );
1448 }
1449 Real derfct9_2_Q2_2D ( const GeoVector& v )
1450 {
1451  return 16. * v[0] * ( v[0] - 1. ) * ( 2. * v[1] - 1. );
1452 }
1453 
1454 Real der2fct1_11_Q2_2D ( const GeoVector& v )
1455 {
1456  return ( 2. * v[1] - 1. ) * ( v[1] - 1. ) * 4.;
1457 }
1458 Real der2fct1_12_Q2_2D ( const GeoVector& v )
1459 {
1460  return ( 4. * v[1] - 3. ) * ( 4. * v[0] - 3. );
1461 }
1462 Real der2fct1_21_Q2_2D ( const GeoVector& v )
1463 {
1464  return ( 4. * v[1] - 3. ) * ( 4. * v[0] - 3. );
1465 }
1466 Real der2fct1_22_Q2_2D ( const GeoVector& v )
1467 {
1468  return ( 2. * v[0] - 1. ) * ( v[0] - 1. ) * 4.;
1469 }
1470 
1471 Real der2fct5_11_Q2_2D ( const GeoVector& v )
1472 {
1473  return -8. * ( 2. * v[1] - 1. ) * ( v[1] - 1. );
1474 }
1475 Real der2fct5_12_Q2_2D ( const GeoVector& v )
1476 {
1477  return -4. * ( 2. * v[0] - 1 ) * ( 4. * v[1] - 3 );
1478 }
1479 Real der2fct5_21_Q2_2D ( const GeoVector& v )
1480 {
1481  return -4. * ( 2. * v[0] - 1 ) * ( 4. * v[1] - 3 );
1482  ;
1483 }
1484 Real der2fct5_22_Q2_2D ( const GeoVector& v )
1485 {
1486  return -16. * v[0] * ( v[0] - 1. );
1487 }
1488 
1489 Real der2fct2_11_Q2_2D ( const GeoVector& v )
1490 {
1491  return ( 2. * v[1] - 1. ) * ( v[1] - 1. ) * 4.;
1492 }
1493 Real der2fct2_12_Q2_2D ( const GeoVector& v )
1494 {
1495  return ( 4. * v[0] - 1 ) * ( 4. * v[1] - 3. );
1496 }
1497 Real der2fct2_21_Q2_2D ( const GeoVector& v )
1498 {
1499  return ( 4. * v[1] - 3. ) * ( 4. * v[0] - 1. );
1500 }
1501 Real der2fct2_22_Q2_2D ( const GeoVector& v )
1502 {
1503  return v[0] * ( 2. * v[0] - 1. ) * 4.;
1504 }
1505 
1506 Real der2fct6_11_Q2_2D ( const GeoVector& v )
1507 {
1508  return -16. * v[1] * ( v[1] - 1. );
1509 }
1510 Real der2fct6_12_Q2_2D ( const GeoVector& v )
1511 {
1512  return -4. * ( 4. * v[0] - 1. ) * ( 2. * v[1] - 1. );
1513 }
1514 Real der2fct6_21_Q2_2D ( const GeoVector& v )
1515 {
1516  return -4. * ( 4. * v[0] - 1. ) * ( 2. * v[1] - 1. );
1517 }
1518 Real der2fct6_22_Q2_2D ( const GeoVector& v )
1519 {
1520  return -8. * v[0] * ( 2. * v[0] - 1. );
1521 }
1522 
1523 Real der2fct3_11_Q2_2D ( const GeoVector& v )
1524 {
1525  return 4. * v[1] * ( 2. * v[1] - 1. );
1526 }
1527 Real der2fct3_12_Q2_2D ( const GeoVector& v )
1528 {
1529  return ( 4. * v[0] - 1. ) * ( 4. * v[1] - 1. );
1530 }
1531 Real der2fct3_21_Q2_2D ( const GeoVector& v )
1532 {
1533  return ( 4. * v[0] - 1. ) * ( 4. * v[1] - 1. );
1534 }
1535 Real der2fct3_22_Q2_2D ( const GeoVector& v )
1536 {
1537  return 4. * v[0] * ( 2. * v[0] - 1. );
1538 }
1539 
1540 Real der2fct7_11_Q2_2D ( const GeoVector& v )
1541 {
1542  return -8. * v[1] * ( 2. * v[1] - 1. );
1543 }
1544 Real der2fct7_12_Q2_2D ( const GeoVector& v )
1545 {
1546  return -4. * ( 2. * v[0] - 1. ) * ( 4. * v[1] - 1. );
1547 }
1548 Real der2fct7_21_Q2_2D ( const GeoVector& v )
1549 {
1550  return -4. * ( 2. * v[0] - 1. ) * ( 4. * v[1] - 1. );
1551 }
1552 Real der2fct7_22_Q2_2D ( const GeoVector& v )
1553 {
1554  return -16. * v[0] * ( v[0] - 1. );
1555 }
1556 
1557 Real der2fct4_11_Q2_2D ( const GeoVector& v )
1558 {
1559  return 4. * v[1] * ( 2. * v[1] - 1. );
1560 }
1561 Real der2fct4_12_Q2_2D ( const GeoVector& v )
1562 {
1563  return ( 4. * v[0] - 3. ) * ( 4. * v[1] - 1. );
1564 }
1565 Real der2fct4_21_Q2_2D ( const GeoVector& v )
1566 {
1567  return ( 4. * v[0] - 3. ) * ( 4. * v[1] - 1. );
1568 }
1569 Real der2fct4_22_Q2_2D ( const GeoVector& v )
1570 {
1571  return 4. * ( 2. * v[0] - 1. ) * ( v[0] - 1. );
1572 }
1573 
1574 Real der2fct8_11_Q2_2D ( const GeoVector& v )
1575 {
1576  return -16. * v[1] * ( v[1] - 1. );
1577 }
1578 Real der2fct8_12_Q2_2D ( const GeoVector& v )
1579 {
1580  return -4. * ( 4. * v[0] - 3. ) * ( 2. * v[1] - 1. );
1581 }
1582 Real der2fct8_21_Q2_2D ( const GeoVector& v )
1583 {
1584  return -4. * ( 4. * v[0] - 3. ) * ( 2. * v[1] - 1. );
1585 }
1586 Real der2fct8_22_Q2_2D ( const GeoVector& v )
1587 {
1588  return -8. * ( 2. * v[0] - 1. ) * ( v[0] - 1. );
1589 }
1590 
1591 Real der2fct9_11_Q2_2D ( const GeoVector& v )
1592 {
1593  return 32. * v[1] * ( v[1] - 1. );
1594 }
1595 Real der2fct9_12_Q2_2D ( const GeoVector& v )
1596 {
1597  return 16. * ( 2. * v[0] - 1. ) * ( 2. * v[1] - 1. );
1598 }
1599 Real der2fct9_21_Q2_2D ( const GeoVector& v )
1600 {
1601  return 16. * ( 2. * v[0] - 1. ) * ( 2. * v[1] - 1. );
1602 }
1603 Real der2fct9_22_Q2_2D ( const GeoVector& v )
1604 {
1605  return 32. * v[0] * ( v[0] - 1. );
1606 }
1607 
1608 //======================================================================
1609 //
1610 // P0 (3D)
1611 //
1612 //======================================================================
1613 /*
1614  4
1615  / .
1616  / \.3
1617  / . \\
1618  / . \\
1619  /. \!
1620  1 ----------2
1621 */
1622 Real fct1_P0_3D ( const GeoVector& )
1623 {
1624  return 1.;
1625 }
1626 
1627 Real derfct1_P0_3D ( const GeoVector& )
1628 {
1629  return 0.;
1630 }
1631 
1632 // Second derivatives
1633 Real der2fct1_P0_3D ( const GeoVector& )
1634 {
1635  return 0;
1636 }
1637 
1638 
1639 //======================================================================
1640 //
1641 // P1 (3D)
1642 //
1643 //======================================================================
1644 /*
1645  4
1646  / .
1647  / \.3
1648  / . \\
1649  / . \\
1650  /. \!
1651  1 ----------2
1652 */
1653 Real fct1_P1_3D ( const GeoVector& v )
1654 {
1655  return 1 - v[0] - v[1] - v[2];
1656 }
1657 Real fct2_P1_3D ( const GeoVector& v )
1658 {
1659  return v[0];
1660 }
1661 Real fct3_P1_3D ( const GeoVector& v )
1662 {
1663  return v[1];
1664 }
1665 Real fct4_P1_3D ( const GeoVector& v )
1666 {
1667  return v[2];
1668 }
1669 
1670 Real derfct1_1_P1_3D ( const GeoVector& )
1671 {
1672  return -1;
1673 }
1674 Real derfct1_2_P1_3D ( const GeoVector& )
1675 {
1676  return -1;
1677 }
1678 Real derfct1_3_P1_3D ( const GeoVector& )
1679 {
1680  return -1;
1681 }
1682 Real derfct2_1_P1_3D ( const GeoVector& )
1683 {
1684  return 1;
1685 }
1686 Real derfct2_2_P1_3D ( const GeoVector& )
1687 {
1688  return 0;
1689 }
1690 Real derfct2_3_P1_3D ( const GeoVector& )
1691 {
1692  return 0;
1693 }
1694 Real derfct3_1_P1_3D ( const GeoVector& )
1695 {
1696  return 0;
1697 }
1698 Real derfct3_2_P1_3D ( const GeoVector& )
1699 {
1700  return 1;
1701 }
1702 Real derfct3_3_P1_3D ( const GeoVector& )
1703 {
1704  return 0;
1705 }
1706 Real derfct4_1_P1_3D ( const GeoVector& )
1707 {
1708  return 0;
1709 }
1710 Real derfct4_2_P1_3D ( const GeoVector& )
1711 {
1712  return 0;
1713 }
1714 Real derfct4_3_P1_3D ( const GeoVector& )
1715 {
1716  return 1;
1717 }
1718 
1719 // Second derivatives
1720 Real der2fctx_xx_P1_3D ( const GeoVector& )
1721 {
1722  return 0;
1723 }
1724 //======================================================================
1725 //======================================================================
1726 //
1727 // P1bubble (3D)
1728 //
1729 //======================================================================
1730 /*
1731  4
1732  / .
1733  / \.3
1734  / . \\
1735  / . .5 \\
1736  /. \!
1737  1 ----------2
1738 */
1739 Real fct1_P1bubble_3D ( const GeoVector& v )
1740 {
1741  return 1 - v[0] - v[1] - v[2];
1742 }
1743 Real fct2_P1bubble_3D ( const GeoVector& v )
1744 {
1745  return v[0];
1746 }
1747 Real fct3_P1bubble_3D ( const GeoVector& v )
1748 {
1749  return v[1];
1750 }
1751 Real fct4_P1bubble_3D ( const GeoVector& v )
1752 {
1753  return v[2];
1754 }
1755 Real fct5_P1bubble_3D ( const GeoVector& v )
1756 {
1757  return ( 1 - v[0] - v[1] - v[2] ) * v[0] * v[1] * v[2];
1758 }
1759 
1760 Real derfct1_1_P1bubble_3D ( const GeoVector& )
1761 {
1762  return -1;
1763 }
1764 Real derfct1_2_P1bubble_3D ( const GeoVector& )
1765 {
1766  return -1;
1767 }
1768 Real derfct1_3_P1bubble_3D ( const GeoVector& )
1769 {
1770  return -1;
1771 }
1772 Real derfct2_1_P1bubble_3D ( const GeoVector& )
1773 {
1774  return 1;
1775 }
1776 Real derfct2_2_P1bubble_3D ( const GeoVector& )
1777 {
1778  return 0;
1779 }
1780 Real derfct2_3_P1bubble_3D ( const GeoVector& )
1781 {
1782  return 0;
1783 }
1784 Real derfct3_1_P1bubble_3D ( const GeoVector& )
1785 {
1786  return 0;
1787 }
1788 Real derfct3_2_P1bubble_3D ( const GeoVector& )
1789 {
1790  return 1;
1791 }
1792 Real derfct3_3_P1bubble_3D ( const GeoVector& )
1793 {
1794  return 0;
1795 }
1796 Real derfct4_1_P1bubble_3D ( const GeoVector& )
1797 {
1798  return 0;
1799 }
1800 Real derfct4_2_P1bubble_3D ( const GeoVector& )
1801 {
1802  return 0;
1803 }
1804 Real derfct4_3_P1bubble_3D ( const GeoVector& )
1805 {
1806  return 1;
1807 }
1808 Real derfct5_1_P1bubble_3D ( const GeoVector& v )
1809 {
1810  return ( 1 - 2 * v[0] - v[1] - v[2] ) * v[1] * v[2];
1811 }
1812 Real derfct5_2_P1bubble_3D ( const GeoVector& v )
1813 {
1814  return ( 1 - v[0] - 2 * v[1] - v[2] ) * v[0] * v[2];
1815 }
1816 Real derfct5_3_P1bubble_3D ( const GeoVector& v )
1817 {
1818  return ( 1 - v[0] - v[1] - 2 * v[2] ) * v[0] * v[1];
1819 }
1820 
1821 // Second derivatives
1822 Real der2fctx_xx_P1bubble_3D ( const GeoVector& )
1823 {
1824  return 0;
1825 }
1826 Real der2fct5_11_P1bubble_3D ( const GeoVector& v )
1827 {
1828  return -2 * v[1] * v[2];
1829 }
1830 Real der2fct5_12_P1bubble_3D ( const GeoVector& v )
1831 {
1832  return ( 1 - 2 * v[0] - 2 * v[1] - v[2] ) * v[2];
1833 }
1834 Real der2fct5_13_P1bubble_3D ( const GeoVector& v )
1835 {
1836  return ( 1 - 2 * v[0] - v[1] - 2 * v[2] ) * v[1];
1837 }
1838 Real der2fct5_21_P1bubble_3D ( const GeoVector& v )
1839 {
1840  return ( 1 - 2 * v[0] - 2 * v[1] - v[2] ) * v[2];
1841 }
1842 Real der2fct5_22_P1bubble_3D ( const GeoVector& v )
1843 {
1844  return -2 * v[0] * v[2];
1845 }
1846 Real der2fct5_23_P1bubble_3D ( const GeoVector& v )
1847 {
1848  return ( 1 - v[0] - 2 * v[1] - 2 * v[2] ) * v[0];
1849 }
1850 Real der2fct5_31_P1bubble_3D ( const GeoVector& v )
1851 {
1852  return ( 1 - 2 * v[0] - v[1] - 2 * v[2] ) * v[1];
1853 }
1854 Real der2fct5_32_P1bubble_3D ( const GeoVector& v )
1855 {
1856  return ( 1 - v[0] - 2 * v[1] - 2 * v[2] ) * v[0];
1857 }
1858 Real der2fct5_33_P1bubble_3D ( const GeoVector& v )
1859 {
1860  return -2 * v[0] * v[1];
1861 }
1862 
1863 //======================================================================
1864 //
1865 // P2 (3D)
1866 //
1867 //======================================================================
1868 /*
1869  4
1870  / .10
1871  / \.3
1872  8 . 9\
1873  / 7 \6
1874  /. \!
1875  1 -----5----2
1876 */
1877 Real fct1_P2_3D ( const GeoVector& v )
1878 {
1879  return - ( 1 - v[0] - v[1] - v[2] ) * ( 1 - 2 * ( 1 - v[0] - v[1] - v[2] ) );
1880 }
1881 Real fct2_P2_3D ( const GeoVector& v )
1882 {
1883  return -v[0] * ( 1 - 2 * v[0] );
1884 }
1885 Real fct3_P2_3D ( const GeoVector& v )
1886 {
1887  return -v[1] * ( 1 - 2 * v[1] );
1888 }
1889 Real fct4_P2_3D ( const GeoVector& v )
1890 {
1891  return -v[2] * ( 1 - 2 * v[2] );
1892 }
1893 Real fct5_P2_3D ( const GeoVector& v )
1894 {
1895  return 4 * v[0] * ( 1 - v[0] - v[1] - v[2] );
1896 }
1897 Real fct6_P2_3D ( const GeoVector& v )
1898 {
1899  return 4 * v[0] * v[1];
1900 }
1901 Real fct7_P2_3D ( const GeoVector& v )
1902 {
1903  return 4 * v[1] * ( 1 - v[0] - v[1] - v[2] );
1904 }
1905 Real fct8_P2_3D ( const GeoVector& v )
1906 {
1907  return 4 * v[2] * ( 1 - v[0] - v[1] - v[2] );
1908 }
1909 Real fct9_P2_3D ( const GeoVector& v )
1910 {
1911  return 4 * v[0] * v[2];
1912 }
1913 Real fct10_P2_3D ( const GeoVector& v )
1914 {
1915  return 4 * v[1] * v[2];
1916 }
1917 
1918 
1919 Real derfct1_1_P2_3D ( const GeoVector& v )
1920 {
1921  return -3 + 4 * v[0] + 4 * v[1] + 4 * v[2];
1922 }
1923 Real derfct1_2_P2_3D ( const GeoVector& v )
1924 {
1925  return -3 + 4 * v[0] + 4 * v[1] + 4 * v[2];
1926 }
1927 Real derfct1_3_P2_3D ( const GeoVector& v )
1928 {
1929  return -3 + 4 * v[0] + 4 * v[1] + 4 * v[2];
1930 }
1931 
1932 Real derfct2_1_P2_3D ( const GeoVector& v )
1933 {
1934  return -1 + 4 * v[0];
1935 }
1936 Real derfct2_2_P2_3D ( const GeoVector& )
1937 {
1938  return 0.;
1939 }
1940 Real derfct2_3_P2_3D ( const GeoVector& )
1941 {
1942  return 0.;
1943 }
1944 
1945 Real derfct3_1_P2_3D ( const GeoVector& )
1946 {
1947  return 0.;
1948 }
1949 Real derfct3_2_P2_3D ( const GeoVector& v )
1950 {
1951  return -1 + 4 * v[1];
1952 }
1953 Real derfct3_3_P2_3D ( const GeoVector& )
1954 {
1955  return 0.;
1956 }
1957 
1958 Real derfct4_1_P2_3D ( const GeoVector& )
1959 {
1960  return 0.;
1961 }
1962 Real derfct4_2_P2_3D ( const GeoVector& )
1963 {
1964  return 0.;
1965 }
1966 Real derfct4_3_P2_3D ( const GeoVector& v )
1967 {
1968  return -1 + 4 * v[2];
1969 }
1970 
1971 Real derfct5_1_P2_3D ( const GeoVector& v )
1972 {
1973  return 4 - 8 * v[0] - 4 * v[1] - 4 * v[2];
1974 }
1975 Real derfct5_2_P2_3D ( const GeoVector& v )
1976 {
1977  return -4 * v[0];
1978 }
1979 Real derfct5_3_P2_3D ( const GeoVector& v )
1980 {
1981  return -4 * v[0];
1982 }
1983 
1984 Real derfct6_1_P2_3D ( const GeoVector& v )
1985 {
1986  return 4 * v[1];
1987 }
1988 Real derfct6_2_P2_3D ( const GeoVector& v )
1989 {
1990  return 4 * v[0];
1991 }
1992 Real derfct6_3_P2_3D ( const GeoVector& )
1993 {
1994  return 0.;
1995 }
1996 
1997 Real derfct7_1_P2_3D ( const GeoVector& v )
1998 {
1999  return -4 * v[1];
2000 }
2001 Real derfct7_2_P2_3D ( const GeoVector& v )
2002 {
2003  return 4 - 4 * v[0] - 8 * v[1] - 4 * v[2];
2004 }
2005 Real derfct7_3_P2_3D ( const GeoVector& v )
2006 {
2007  return -4 * v[1];
2008 }
2009 
2010 Real derfct8_1_P2_3D ( const GeoVector& v )
2011 {
2012  return -4 * v[2];
2013 }
2014 Real derfct8_2_P2_3D ( const GeoVector& v )
2015 {
2016  return -4 * v[2];
2017 }
2018 Real derfct8_3_P2_3D ( const GeoVector& v )
2019 {
2020  return 4 - 4 * v[0] - 4 * v[1] - 8 * v[2];
2021 }
2022 
2023 Real derfct9_1_P2_3D ( const GeoVector& v )
2024 {
2025  return 4 * v[2];
2026 }
2027 Real derfct9_2_P2_3D ( const GeoVector& )
2028 {
2029  return 0.;
2030 }
2031 Real derfct9_3_P2_3D ( const GeoVector& v )
2032 {
2033  return 4 * v[0];
2034 }
2035 
2036 Real derfct10_1_P2_3D ( const GeoVector& )
2037 {
2038  return 0.;
2039 }
2040 Real derfct10_2_P2_3D ( const GeoVector& v )
2041 {
2042  return 4 * v[2];
2043 }
2044 Real derfct10_3_P2_3D ( const GeoVector& v )
2045 {
2046  return 4 * v[1];
2047 }
2048 
2049 
2050 Real der2fct1_11_P2_3D ( const GeoVector& )
2051 {
2052  return 4;
2053 }
2054 Real der2fct1_12_P2_3D ( const GeoVector& )
2055 {
2056  return 4;
2057 }
2058 Real der2fct1_13_P2_3D ( const GeoVector& )
2059 {
2060  return 4;
2061 }
2062 Real der2fct1_21_P2_3D ( const GeoVector& )
2063 {
2064  return 4;
2065 }
2066 Real der2fct1_22_P2_3D ( const GeoVector& )
2067 {
2068  return 4;
2069 }
2070 Real der2fct1_23_P2_3D ( const GeoVector& )
2071 {
2072  return 4;
2073 }
2074 Real der2fct1_31_P2_3D ( const GeoVector& )
2075 {
2076  return 4;
2077 }
2078 Real der2fct1_32_P2_3D ( const GeoVector& )
2079 {
2080  return 4;
2081 }
2082 Real der2fct1_33_P2_3D ( const GeoVector& )
2083 {
2084  return 4;
2085 }
2086 
2087 Real der2fct2_11_P2_3D ( const GeoVector& )
2088 {
2089  return 4;
2090 }
2091 Real der2fct2_12_P2_3D ( const GeoVector& )
2092 {
2093  return 0;
2094 }
2095 Real der2fct2_13_P2_3D ( const GeoVector& )
2096 {
2097  return 0;
2098 }
2099 Real der2fct2_21_P2_3D ( const GeoVector& )
2100 {
2101  return 0;
2102 }
2103 Real der2fct2_22_P2_3D ( const GeoVector& )
2104 {
2105  return 0;
2106 }
2107 Real der2fct2_23_P2_3D ( const GeoVector& )
2108 {
2109  return 0;
2110 }
2111 Real der2fct2_31_P2_3D ( const GeoVector& )
2112 {
2113  return 0;
2114 }
2115 Real der2fct2_32_P2_3D ( const GeoVector& )
2116 {
2117  return 0;
2118 }
2119 Real der2fct2_33_P2_3D ( const GeoVector& )
2120 {
2121  return 0;
2122 }
2123 
2124 Real der2fct3_11_P2_3D ( const GeoVector& )
2125 {
2126  return 0;
2127 }
2128 Real der2fct3_12_P2_3D ( const GeoVector& )
2129 {
2130  return 0;
2131 }
2132 Real der2fct3_13_P2_3D ( const GeoVector& )
2133 {
2134  return 0;
2135 }
2136 Real der2fct3_21_P2_3D ( const GeoVector& )
2137 {
2138  return 0;
2139 }
2140 Real der2fct3_22_P2_3D ( const GeoVector& )
2141 {
2142  return 4;
2143 }
2144 Real der2fct3_23_P2_3D ( const GeoVector& )
2145 {
2146  return 0;
2147 }
2148 Real der2fct3_31_P2_3D ( const GeoVector& )
2149 {
2150  return 0;
2151 }
2152 Real der2fct3_32_P2_3D ( const GeoVector& )
2153 {
2154  return 0;
2155 }
2156 Real der2fct3_33_P2_3D ( const GeoVector& )
2157 {
2158  return 0;
2159 }
2160 
2161 Real der2fct4_11_P2_3D ( const GeoVector& )
2162 {
2163  return 0;
2164 }
2165 Real der2fct4_12_P2_3D ( const GeoVector& )
2166 {
2167  return 0;
2168 }
2169 Real der2fct4_13_P2_3D ( const GeoVector& )
2170 {
2171  return 0;
2172 }
2173 Real der2fct4_21_P2_3D ( const GeoVector& )
2174 {
2175  return 0;
2176 }
2177 Real der2fct4_22_P2_3D ( const GeoVector& )
2178 {
2179  return 0;
2180 }
2181 Real der2fct4_23_P2_3D ( const GeoVector& )
2182 {
2183  return 0;
2184 }
2185 Real der2fct4_31_P2_3D ( const GeoVector& )
2186 {
2187  return 0;
2188 }
2189 Real der2fct4_32_P2_3D ( const GeoVector& )
2190 {
2191  return 0;
2192 }
2193 Real der2fct4_33_P2_3D ( const GeoVector& )
2194 {
2195  return 4;
2196 }
2197 
2198 Real der2fct5_11_P2_3D ( const GeoVector& )
2199 {
2200  return -8;
2201 }
2202 Real der2fct5_12_P2_3D ( const GeoVector& )
2203 {
2204  return -4;
2205 }
2206 Real der2fct5_13_P2_3D ( const GeoVector& )
2207 {
2208  return -4;
2209 }
2210 Real der2fct5_21_P2_3D ( const GeoVector& )
2211 {
2212  return -4;
2213 }
2214 Real der2fct5_22_P2_3D ( const GeoVector& )
2215 {
2216  return 0;
2217 }
2218 Real der2fct5_23_P2_3D ( const GeoVector& )
2219 {
2220  return 0;
2221 }
2222 Real der2fct5_31_P2_3D ( const GeoVector& )
2223 {
2224  return -4;
2225 }
2226 Real der2fct5_32_P2_3D ( const GeoVector& )
2227 {
2228  return 0;
2229 }
2230 Real der2fct5_33_P2_3D ( const GeoVector& )
2231 {
2232  return 0;
2233 }
2234 
2235 Real der2fct6_11_P2_3D ( const GeoVector& )
2236 {
2237  return 0;
2238 }
2239 Real der2fct6_12_P2_3D ( const GeoVector& )
2240 {
2241  return 4;
2242 }
2243 Real der2fct6_13_P2_3D ( const GeoVector& )
2244 {
2245  return 0;
2246 }
2247 Real der2fct6_21_P2_3D ( const GeoVector& )
2248 {
2249  return 4;
2250 }
2251 Real der2fct6_22_P2_3D ( const GeoVector& )
2252 {
2253  return 0;
2254 }
2255 Real der2fct6_23_P2_3D ( const GeoVector& )
2256 {
2257  return 0;
2258 }
2259 Real der2fct6_31_P2_3D ( const GeoVector& )
2260 {
2261  return 0;
2262 }
2263 Real der2fct6_32_P2_3D ( const GeoVector& )
2264 {
2265  return 0;
2266 }
2267 Real der2fct6_33_P2_3D ( const GeoVector& )
2268 {
2269  return 0;
2270 }
2271 
2272 Real der2fct7_11_P2_3D ( const GeoVector& )
2273 {
2274  return 0;
2275 }
2276 Real der2fct7_12_P2_3D ( const GeoVector& )
2277 {
2278  return -4;
2279 }
2280 Real der2fct7_13_P2_3D ( const GeoVector& )
2281 {
2282  return 0;
2283 }
2284 Real der2fct7_21_P2_3D ( const GeoVector& )
2285 {
2286  return -4;
2287 }
2288 Real der2fct7_22_P2_3D ( const GeoVector& )
2289 {
2290  return -8;
2291 }
2292 Real der2fct7_23_P2_3D ( const GeoVector& )
2293 {
2294  return -4;
2295 }
2296 Real der2fct7_31_P2_3D ( const GeoVector& )
2297 {
2298  return 0;
2299 }
2300 Real der2fct7_32_P2_3D ( const GeoVector& )
2301 {
2302  return -4;
2303 }
2304 Real der2fct7_33_P2_3D ( const GeoVector& )
2305 {
2306  return 0;
2307 }
2308 
2309 Real der2fct8_11_P2_3D ( const GeoVector& )
2310 {
2311  return 0;
2312 }
2313 Real der2fct8_12_P2_3D ( const GeoVector& )
2314 {
2315  return 0;
2316 }
2317 Real der2fct8_13_P2_3D ( const GeoVector& )
2318 {
2319  return -4;
2320 }
2321 Real der2fct8_21_P2_3D ( const GeoVector& )
2322 {
2323  return 0;
2324 }
2325 Real der2fct8_22_P2_3D ( const GeoVector& )
2326 {
2327  return 0;
2328 }
2329 Real der2fct8_23_P2_3D ( const GeoVector& )
2330 {
2331  return -4;
2332 }
2333 Real der2fct8_31_P2_3D ( const GeoVector& )
2334 {
2335  return -4;
2336 }
2337 Real der2fct8_32_P2_3D ( const GeoVector& )
2338 {
2339  return -4;
2340 }
2341 Real der2fct8_33_P2_3D ( const GeoVector& )
2342 {
2343  return -8;
2344 }
2345 
2346 Real der2fct9_11_P2_3D ( const GeoVector& )
2347 {
2348  return 0;
2349 }
2350 Real der2fct9_12_P2_3D ( const GeoVector& )
2351 {
2352  return 0;
2353 }
2354 Real der2fct9_13_P2_3D ( const GeoVector& )
2355 {
2356  return 4;
2357 }
2358 Real der2fct9_21_P2_3D ( const GeoVector& )
2359 {
2360  return 0;
2361 }
2362 Real der2fct9_22_P2_3D ( const GeoVector& )
2363 {
2364  return 0;
2365 }
2366 Real der2fct9_23_P2_3D ( const GeoVector& )
2367 {
2368  return 0;
2369 }
2370 Real der2fct9_31_P2_3D ( const GeoVector& )
2371 {
2372  return 4;
2373 }
2374 Real der2fct9_32_P2_3D ( const GeoVector& )
2375 {
2376  return 0;
2377 }
2378 Real der2fct9_33_P2_3D ( const GeoVector& )
2379 {
2380  return 0;
2381 }
2382 
2383 Real der2fct10_11_P2_3D ( const GeoVector& )
2384 {
2385  return 0;
2386 }
2387 Real der2fct10_12_P2_3D ( const GeoVector& )
2388 {
2389  return 0;
2390 }
2391 Real der2fct10_13_P2_3D ( const GeoVector& )
2392 {
2393  return 0;
2394 }
2395 Real der2fct10_21_P2_3D ( const GeoVector& )
2396 {
2397  return 0;
2398 }
2399 Real der2fct10_22_P2_3D ( const GeoVector& )
2400 {
2401  return 0;
2402 }
2403 Real der2fct10_23_P2_3D ( const GeoVector& )
2404 {
2405  return 4;
2406 }
2407 Real der2fct10_31_P2_3D ( const GeoVector& )
2408 {
2409  return 0;
2410 }
2411 Real der2fct10_32_P2_3D ( const GeoVector& )
2412 {
2413  return 4;
2414 }
2415 Real der2fct10_33_P2_3D ( const GeoVector& )
2416 {
2417  return 0;
2418 }
2419 //======================================================================
2420 //
2421 // P2tilde (3D)
2422 // NAVIER-STOKES P2 Basis Oriented to the mass lumping
2423 //======================================================================
2424 /*
2425  4
2426  / .10
2427  / \.3
2428  8 . 9\
2429  / 7 .11 \6
2430  /. \!
2431  1 -----5----2
2432 */
2433 Real fct1_P2tilde_3D ( const GeoVector& v )
2434 {
2435  return - ( 1 - v[0] - v[1] - v[2] ) * ( 1 - 2 * ( 1 - v[0] - v[1] - v[2] ) ) + 32 * v[0] * v[1] * v[2] * ( 1 - v[0] - v[1] - v[2] );
2436 }
2437 Real fct2_P2tilde_3D ( const GeoVector& v )
2438 {
2439  return -v[0] * ( 1 - 2 * v[0] ) + 32 * v[0] * v[1] * v[2] * ( 1 - v[0] - v[1] - v[2] );
2440 }
2441 Real fct3_P2tilde_3D ( const GeoVector& v )
2442 {
2443  return -v[1] * ( 1 - 2 * v[1] ) + 32 * v[0] * v[1] * v[2] * ( 1 - v[0] - v[1] - v[2] );
2444 }
2445 Real fct4_P2tilde_3D ( const GeoVector& v )
2446 {
2447  return -v[2] * ( 1 - 2 * v[2] ) + 32 * v[0] * v[1] * v[2] * ( 1 - v[0] - v[1] - v[2] );
2448 }
2449 
2450 Real fct5_P2tilde_3D ( const GeoVector& v )
2451 {
2452  return 4 * v[0] * ( 1 - v[0] - v[1] - v[2] ) - 64 * v[0] * v[1] * v[2] * ( 1 - v[0] - v[1] - v[2] );
2453 }
2454 Real fct6_P2tilde_3D ( const GeoVector& v )
2455 {
2456  return 4 * v[0] * v[1] - 64 * v[0] * v[1] * v[2] * ( 1 - v[0] - v[1] - v[2] );
2457 }
2458 Real fct7_P2tilde_3D ( const GeoVector& v )
2459 {
2460  return 4 * v[1] * ( 1 - v[0] - v[1] - v[2] ) - 64 * v[0] * v[1] * v[2] * ( 1 - v[0] - v[1] - v[2] );
2461 }
2462 Real fct8_P2tilde_3D ( const GeoVector& v )
2463 {
2464  return 4 * v[2] * ( 1 - v[0] - v[1] - v[2] ) - 64 * v[0] * v[1] * v[2] * ( 1 - v[0] - v[1] - v[2] );
2465 }
2466 Real fct9_P2tilde_3D ( const GeoVector& v )
2467 {
2468  return 4 * v[0] * v[2] - 64 * v[0] * v[1] * v[2] * ( 1 - v[0] - v[1] - v[2] );
2469 }
2470 Real fct10_P2tilde_3D ( const GeoVector& v )
2471 {
2472  return 4 * v[1] * v[2] - 64 * v[0] * v[1] * v[2] * ( 1 - v[0] - v[1] - v[2] );
2473 }
2474 
2475 Real fct11_P2tilde_3D ( const GeoVector& v )
2476 {
2477  return 256 * v[0] * v[1] * v[2] * ( 1 - v[0] - v[1] - v[2] );
2478 }
2479 
2480 
2481 Real derfct1_1_P2tilde_3D ( const GeoVector& v )
2482 {
2483  return -3 + 4 * v[0] + 4 * v[1] + 4 * v[2] + 32 * v[1] * v[2] * ( 1 - 2 * v[0] - v[1] - v[2] );
2484 }
2485 Real derfct1_2_P2tilde_3D ( const GeoVector& v )
2486 {
2487  return -3 + 4 * v[0] + 4 * v[1] + 4 * v[2] + 32 * v[0] * v[2] * ( 1 - v[0] - 2 * v[1] - v[2] );
2488 }
2489 Real derfct1_3_P2tilde_3D ( const GeoVector& v )
2490 {
2491  return -3 + 4 * v[0] + 4 * v[1] + 4 * v[2] + 32 * v[0] * v[1] * ( 1 - v[0] - v[1] - 2 * v[2] );
2492 }
2493 
2494 Real derfct2_1_P2tilde_3D ( const GeoVector& v )
2495 {
2496  return -1 + 4 * v[0] + 32 * v[1] * v[2] * ( 1 - 2 * v[0] - v[1] - v[2] );
2497 }
2498 Real derfct2_2_P2tilde_3D ( const GeoVector& v )
2499 {
2500  return 32 * v[0] * v[2] * ( 1 - v[0] - 2 * v[1] - v[2] );
2501 }
2502 Real derfct2_3_P2tilde_3D ( const GeoVector& v )
2503 {
2504  return 32 * v[0] * v[1] * ( 1 - v[0] - v[1] - 2 * v[2] );
2505 }
2506 
2507 Real derfct3_1_P2tilde_3D ( const GeoVector& v )
2508 {
2509  return 32 * v[1] * v[2] * ( 1 - 2 * v[0] - v[1] - v[2] );
2510 }
2511 Real derfct3_2_P2tilde_3D ( const GeoVector& v )
2512 {
2513  return -1 + 4 * v[1] + 32 * v[0] * v[2] * ( 1 - v[0] - 2 * v[1] - v[2] );
2514 }
2515 Real derfct3_3_P2tilde_3D ( const GeoVector& v )
2516 {
2517  return 32 * v[0] * v[1] * ( 1 - v[0] - v[1] - 2 * v[2] );
2518 }
2519 
2520 Real derfct4_1_P2tilde_3D ( const GeoVector& v )
2521 {
2522  return 32 * v[1] * v[2] * ( 1 - 2 * v[0] - v[1] - v[2] );
2523 }
2524 Real derfct4_2_P2tilde_3D ( const GeoVector& v )
2525 {
2526  return 32 * v[0] * v[2] * ( 1 - v[0] - 2 * v[1] - v[2] );
2527 }
2528 Real derfct4_3_P2tilde_3D ( const GeoVector& v )
2529 {
2530  return -1 + 4 * v[2] + 32 * v[0] * v[1] * ( 1 - v[0] - v[1] - 2 * v[2] );
2531 }
2532 
2533 Real derfct5_1_P2tilde_3D ( const GeoVector& v )
2534 {
2535  return 4 - 8 * v[0] - 4 * v[1] - 4 * v[2] - 64 * v[1] * v[2] * ( 1 - 2 * v[0] - v[1] - v[2] );
2536 }
2537 Real derfct5_2_P2tilde_3D ( const GeoVector& v )
2538 {
2539  return -4 * v[0] - 64 * v[0] * v[2] * ( 1 - v[0] - 2 * v[1] - v[2] );
2540 }
2541 Real derfct5_3_P2tilde_3D ( const GeoVector& v )
2542 {
2543  return -4 * v[0] - 64 * v[0] * v[1] * ( 1 - v[0] - v[1] - 2 * v[2] );
2544 }
2545 
2546 Real derfct6_1_P2tilde_3D ( const GeoVector& v )
2547 {
2548  return 4 * v[1] - 64 * v[1] * v[2] * ( 1 - 2 * v[0] - v[1] - v[2] );
2549 }
2550 Real derfct6_2_P2tilde_3D ( const GeoVector& v )
2551 {
2552  return 4 * v[0] - 64 * v[0] * v[2] * ( 1 - v[0] - 2 * v[1] - v[2] );
2553 }
2554 Real derfct6_3_P2tilde_3D ( const GeoVector& v )
2555 {
2556  return - 64 * v[0] * v[1] * ( 1 - v[0] - v[1] - 2 * v[2] );
2557 }
2558 
2559 Real derfct7_1_P2tilde_3D ( const GeoVector& v )
2560 {
2561  return -4 * v[1] - 64 * v[1] * v[2] * ( 1 - 2 * v[0] - v[1] - v[2] );
2562 }
2563 Real derfct7_2_P2tilde_3D ( const GeoVector& v )
2564 {
2565  return 4 - 4 * v[0] - 8 * v[1] - 4 * v[2] - 64 * v[0] * v[2] * ( 1 - v[0] - 2 * v[1] - v[2] );
2566 }
2567 Real derfct7_3_P2tilde_3D ( const GeoVector& v )
2568 {
2569  return -4 * v[1] - 64 * v[0] * v[1] * ( 1 - v[0] - v[1] - 2 * v[2] );
2570 }
2571 
2572 Real derfct8_1_P2tilde_3D ( const GeoVector& v )
2573 {
2574  return -4 * v[2] - 64 * v[1] * v[2] * ( 1 - 2 * v[0] - v[1] - v[2] );
2575 }
2576 Real derfct8_2_P2tilde_3D ( const GeoVector& v )
2577 {
2578  return -4 * v[2] - 64 * v[0] * v[2] * ( 1 - v[0] - 2 * v[1] - v[2] );
2579 }
2580 Real derfct8_3_P2tilde_3D ( const GeoVector& v )
2581 {
2582  return 4 - 4 * v[0] - 4 * v[1] - 8 * v[2] - 64 * v[0] * v[1] * ( 1 - v[0] - v[1] - 2 * v[2] );
2583 }
2584 
2585 Real derfct9_1_P2tilde_3D ( const GeoVector& v )
2586 {
2587  return 4 * v[2] - 64 * v[1] * v[2] * ( 1 - 2 * v[0] - v[1] - v[2] );
2588 }
2589 Real derfct9_2_P2tilde_3D ( const GeoVector& v )
2590 {
2591  return - 64 * v[0] * v[2] * ( 1 - v[0] - 2 * v[1] - v[2] );
2592 }
2593 Real derfct9_3_P2tilde_3D ( const GeoVector& v )
2594 {
2595  return 4 * v[0] - 64 * v[0] * v[1] * ( 1 - v[0] - v[1] - 2 * v[2] );
2596 }
2597 
2598 Real derfct10_1_P2tilde_3D ( const GeoVector& v )
2599 {
2600  return - 64 * v[1] * v[2] * ( 1 - 2 * v[0] - v[1] - v[2] );
2601 }
2602 Real derfct10_2_P2tilde_3D ( const GeoVector& v )
2603 {
2604  return 4 * v[2] - 64 * v[0] * v[2] * ( 1 - v[0] - 2 * v[1] - v[2] );
2605 }
2606 Real derfct10_3_P2tilde_3D ( const GeoVector& v )
2607 {
2608  return 4 * v[1] - 64 * v[0] * v[1] * ( 1 - v[0] - v[1] - 2 * v[2] );
2609 }
2610 
2611 Real derfct11_1_P2tilde_3D ( const GeoVector& v )
2612 {
2613  return 256 * v[1] * v[2] * ( 1 - 2 * v[0] - v[1] - v[2] );
2614 }
2615 Real derfct11_2_P2tilde_3D ( const GeoVector& v )
2616 {
2617  return 256 * v[0] * v[2] * ( 1 - v[0] - 2 * v[1] - v[2] );
2618 }
2619 Real derfct11_3_P2tilde_3D ( const GeoVector& v )
2620 {
2621  return 256 * v[0] * v[1] * ( 1 - v[0] - v[1] - 2 * v[2] );
2622 }
2623 
2624 Real der2fct1_11_P2tilde_3D ( const GeoVector& v )
2625 {
2626  return 4 - 64 * v[0] * v[1] * v[2];
2627 }
2628 Real der2fct1_12_P2tilde_3D ( const GeoVector& v )
2629 {
2630  return 4 + 32 * v[2] * ( 1 - 2 * v[0] - 2 * v[1] - v[2] );
2631 }
2632 Real der2fct1_13_P2tilde_3D ( const GeoVector& v )
2633 {
2634  return 4 + 32 * v[1] * ( 1 - 2 * v[0] - v[1] - 2 * v[2] );
2635 }
2636 Real der2fct1_21_P2tilde_3D ( const GeoVector& v )
2637 {
2638  return 4 + 32 * v[2] * ( 1 - 2 * v[0] - 2 * v[1] - v[2] );
2639 }
2640 Real der2fct1_22_P2tilde_3D ( const GeoVector& v )
2641 {
2642  return 4 - 64 * v[0] * v[1] * v[2];
2643 }
2644 Real der2fct1_23_P2tilde_3D ( const GeoVector& v )
2645 {
2646  return 4 + 32 * v[0] * ( 1 - v[0] - 2 * v[1] - 2 * v[2] );
2647 }
2648 Real der2fct1_31_P2tilde_3D ( const GeoVector& v )
2649 {
2650  return 4 + 32 * v[1] * ( 1 - 2 * v[0] - v[1] - 2 * v[2] );
2651 }
2652 Real der2fct1_32_P2tilde_3D ( const GeoVector& v )
2653 {
2654  return 4 + 32 * v[0] * ( 1 - v[0] - 2 * v[1] - 2 * v[2] );
2655  ;
2656 }
2657 Real der2fct1_33_P2tilde_3D ( const GeoVector& v )
2658 {
2659  return 4 - 64 * v[0] * v[1] * v[2];
2660 }
2661 
2662 Real der2fct2_11_P2tilde_3D ( const GeoVector& v )
2663 {
2664  return 4 - 64 * v[0] * v[1] * v[2];
2665 }
2666 Real der2fct2_12_P2tilde_3D ( const GeoVector& v )
2667 {
2668  return 32 * v[2] * ( 1 - 2 * v[0] - 2 * v[1] - v[2] );
2669 }
2670 Real der2fct2_13_P2tilde_3D ( const GeoVector& v )
2671 {
2672  return 32 * v[1] * ( 1 - 2 * v[0] - v[1] - 2 * v[2] );
2673 }
2674 Real der2fct2_21_P2tilde_3D ( const GeoVector& v )
2675 {
2676  return 32 * v[2] * ( 1 - 2 * v[0] - 2 * v[1] - v[2] );
2677 }
2678 Real der2fct2_22_P2tilde_3D ( const GeoVector& v )
2679 {
2680  return - 64 * v[0] * v[1] * v[2];
2681 }
2682 Real der2fct2_23_P2tilde_3D ( const GeoVector& v )
2683 {
2684  return 32 * v[0] * ( 1 - v[0] - 2 * v[1] - 2 * v[2] );
2685 }
2686 Real der2fct2_31_P2tilde_3D ( const GeoVector& v )
2687 {
2688  return 32 * v[1] * ( 1 - 2 * v[0] - v[1] - 2 * v[2] );
2689 }
2690 Real der2fct2_32_P2tilde_3D ( const GeoVector& v )
2691 {
2692  return 32 * v[0] * ( 1 - v[0] - 2 * v[1] - 2 * v[2] );
2693 }
2694 Real der2fct2_33_P2tilde_3D ( const GeoVector& v )
2695 {
2696  return - 64 * v[0] * v[1] * v[2];
2697 }
2698 
2699 Real der2fct3_11_P2tilde_3D ( const GeoVector& v )
2700 {
2701  return - 64 * v[0] * v[1] * v[2];
2702 }
2703 Real der2fct3_12_P2tilde_3D ( const GeoVector& v )
2704 {
2705  return 32 * v[2] * ( 1 - 2 * v[0] - 2 * v[1] - v[2] );
2706 }
2707 Real der2fct3_13_P2tilde_3D ( const GeoVector& v )
2708 {
2709  return 32 * v[1] * ( 1 - 2 * v[0] - v[1] - 2 * v[2] );
2710 }
2711 Real der2fct3_21_P2tilde_3D ( const GeoVector& v )
2712 {
2713  return 32 * v[2] * ( 1 - 2 * v[0] - 2 * v[1] - v[2] );
2714 }
2715 Real der2fct3_22_P2tilde_3D ( const GeoVector& v )
2716 {
2717  return 4 - 64 * v[0] * v[1] * v[2];
2718 }
2719 Real der2fct3_23_P2tilde_3D ( const GeoVector& v )
2720 {
2721  return 32 * v[0] * ( 1 - v[0] - 2 * v[1] - 2 * v[2] );
2722 }
2723 Real der2fct3_31_P2tilde_3D ( const GeoVector& v )
2724 {
2725  return 32 * v[1] * ( 1 - 2 * v[0] - v[1] - 2 * v[2] );
2726 }
2727 Real der2fct3_32_P2tilde_3D ( const GeoVector& v )
2728 {
2729  return 32 * v[0] * ( 1 - v[0] - 2 * v[1] - 2 * v[2] );
2730 }
2731 Real der2fct3_33_P2tilde_3D ( const GeoVector& v )
2732 {
2733  return - 64 * v[0] * v[1] * v[2];
2734 }
2735 
2736 Real der2fct4_11_P2tilde_3D ( const GeoVector& v )
2737 {
2738  return -64 * v[0] * v[1] * v[2];
2739 }
2740 Real der2fct4_12_P2tilde_3D ( const GeoVector& v )
2741 {
2742  return 32 * v[2] * ( 1 - 2 * v[0] - 2 * v[1] - v[2] );
2743 }
2744 Real der2fct4_13_P2tilde_3D ( const GeoVector& v )
2745 {
2746  return 32 * v[1] * ( 1 - 2 * v[0] - v[1] - 2 * v[2] );
2747 }
2748 Real der2fct4_21_P2tilde_3D ( const GeoVector& v )
2749 {
2750  return 32 * v[2] * ( 1 - 2 * v[0] - 2 * v[1] - v[2] );
2751 }
2752 Real der2fct4_22_P2tilde_3D ( const GeoVector& v )
2753 {
2754  return - 64 * v[0] * v[1] * v[2];
2755 }
2756 Real der2fct4_23_P2tilde_3D ( const GeoVector& v )
2757 {
2758  return 32 * v[0] * ( 1 - v[0] - 2 * v[1] - 2 * v[2] );
2759 }
2760 Real der2fct4_31_P2tilde_3D ( const GeoVector& v )
2761 {
2762  return 32 * v[1] * ( 1 - 2 * v[0] - v[1] - 2 * v[2] );
2763 }
2764 Real der2fct4_32_P2tilde_3D ( const GeoVector& v )
2765 {
2766  return 32 * v[0] * ( 1 - v[0] - 2 * v[1] - 2 * v[2] );
2767 }
2768 Real der2fct4_33_P2tilde_3D ( const GeoVector& v )
2769 {
2770  return 4 - 64 * v[0] * v[1] * v[2];
2771 }
2772 
2773 Real der2fct5_11_P2tilde_3D ( const GeoVector& v )
2774 {
2775  return -8 - 128 * v[0] * v[1] * v[2];
2776 }
2777 Real der2fct5_12_P2tilde_3D ( const GeoVector& v )
2778 {
2779  return -4 + 64 * v[2] * ( 1 - 2 * v[0] - 2 * v[1] - v[2] );
2780 }
2781 Real der2fct5_13_P2tilde_3D ( const GeoVector& v )
2782 {
2783  return -4 + 64 * v[1] * ( 1 - 2 * v[0] - v[1] - 2 * v[2] );
2784 }
2785 Real der2fct5_21_P2tilde_3D ( const GeoVector& v )
2786 {
2787  return -4 + 64 * v[2] * ( 1 - 2 * v[0] - 2 * v[1] - v[2] );
2788 }
2789 Real der2fct5_22_P2tilde_3D ( const GeoVector& v )
2790 {
2791  return - 128 * v[0] * v[1] * v[2];
2792 }
2793 Real der2fct5_23_P2tilde_3D ( const GeoVector& v )
2794 {
2795  return 64 * v[0] * ( 1 - v[0] - 2 * v[1] - 2 * v[2] );
2796 }
2797 Real der2fct5_31_P2tilde_3D ( const GeoVector& v )
2798 {
2799  return -4 + 64 * v[1] * ( 1 - 2 * v[0] - v[1] - 2 * v[2] );
2800 }
2801 Real der2fct5_32_P2tilde_3D ( const GeoVector& v )
2802 {
2803  return 64 * v[0] * ( 1 - v[0] - 2 * v[1] - 2 * v[2] );
2804 }
2805 Real der2fct5_33_P2tilde_3D ( const GeoVector& v )
2806 {
2807  return - 128 * v[0] * v[1] * v[2];
2808 }
2809 
2810 Real der2fct6_11_P2tilde_3D ( const GeoVector& v )
2811 {
2812  return -128 * v[0] * v[1] * v[2];
2813 }
2814 Real der2fct6_12_P2tilde_3D ( const GeoVector& v )
2815 {
2816  return 4 + 64 * v[2] * ( 1 - 2 * v[0] - 2 * v[1] - v[2] );
2817 }
2818 Real der2fct6_13_P2tilde_3D ( const GeoVector& v )
2819 {
2820  return 64 * v[1] * ( 1 - 2 * v[0] - v[1] - 2 * v[2] );
2821 }
2822 Real der2fct6_21_P2tilde_3D ( const GeoVector& v )
2823 {
2824  return 4 + 64 * v[2] * ( 1 - 2 * v[0] - 2 * v[1] - v[2] );
2825 }
2826 Real der2fct6_22_P2tilde_3D ( const GeoVector& v )
2827 {
2828  return - 128 * v[0] * v[1] * v[2];
2829 }
2830 Real der2fct6_23_P2tilde_3D ( const GeoVector& v )
2831 {
2832  return 64 * v[0] * ( 1 - v[0] - 2 * v[1] - 2 * v[2] );
2833 }
2834 Real der2fct6_31_P2tilde_3D ( const GeoVector& v )
2835 {
2836  return 64 * v[1] * ( 1 - 2 * v[0] - v[1] - 2 * v[2] );
2837 }
2838 Real der2fct6_32_P2tilde_3D ( const GeoVector& v )
2839 {
2840  return 64 * v[0] * ( 1 - v[0] - 2 * v[1] - 2 * v[2] );
2841 }
2842 Real der2fct6_33_P2tilde_3D ( const GeoVector& v )
2843 {
2844  return - 128 * v[0] * v[1] * v[2];
2845 }
2846 
2847 Real der2fct7_11_P2tilde_3D ( const GeoVector& v )
2848 {
2849  return -128 * v[0] * v[1] * v[2];
2850 }
2851 Real der2fct7_12_P2tilde_3D ( const GeoVector& v )
2852 {
2853  return -4 + 64 * v[2] * ( 1 - 2 * v[0] - 2 * v[1] - v[2] );
2854 }
2855 Real der2fct7_13_P2tilde_3D ( const GeoVector& v )
2856 {
2857  return 64 * v[1] * ( 1 - 2 * v[0] - v[1] - 2 * v[2] );
2858 }
2859 Real der2fct7_21_P2tilde_3D ( const GeoVector& v )
2860 {
2861  return -4 + 64 * v[2] * ( 1 - 2 * v[0] - 2 * v[1] - v[2] );
2862 }
2863 Real der2fct7_22_P2tilde_3D ( const GeoVector& v )
2864 {
2865  return -8 - 128 * v[0] * v[1] * v[2];
2866 }
2867 Real der2fct7_23_P2tilde_3D ( const GeoVector& v )
2868 {
2869  return -4 + 64 * v[0] * ( 1 - v[0] - 2 * v[1] - 2 * v[2] );
2870 }
2871 Real der2fct7_31_P2tilde_3D ( const GeoVector& v )
2872 {
2873  return 64 * v[1] * ( 1 - 2 * v[0] - v[1] - 2 * v[2] );
2874 }
2875 Real der2fct7_32_P2tilde_3D ( const GeoVector& v )
2876 {
2877  return -4 + 64 * v[0] * ( 1 - v[0] - 2 * v[1] - 2 * v[2] );
2878 }
2879 Real der2fct7_33_P2tilde_3D ( const GeoVector& v )
2880 {
2881  return - 128 * v[0] * v[1] * v[2];
2882 }
2883 
2884 Real der2fct8_11_P2tilde_3D ( const GeoVector& v )
2885 {
2886  return -128 * v[0] * v[1] * v[2];
2887 }
2888 Real der2fct8_12_P2tilde_3D ( const GeoVector& v )
2889 {
2890  return 64 * v[2] * ( 1 - 2 * v[0] - 2 * v[1] - v[2] );
2891 }
2892 Real der2fct8_13_P2tilde_3D ( const GeoVector& v )
2893 {
2894  return -4 + 64 * v[1] * ( 1 - 2 * v[0] - v[1] - 2 * v[2] );
2895 }
2896 Real der2fct8_21_P2tilde_3D ( const GeoVector& v )
2897 {
2898  return 64 * v[2] * ( 1 - 2 * v[0] - 2 * v[1] - v[2] );
2899 }
2900 Real der2fct8_22_P2tilde_3D ( const GeoVector& v )
2901 {
2902  return - 128 * v[0] * v[1] * v[2];
2903 }
2904 Real der2fct8_23_P2tilde_3D ( const GeoVector& v )
2905 {
2906  return -4 + 64 * v[0] * ( 1 - v[0] - 2 * v[1] - 2 * v[2] );
2907 }
2908 Real der2fct8_31_P2tilde_3D ( const GeoVector& v )
2909 {
2910  return -4 + 64 * v[1] * ( 1 - 2 * v[0] - v[1] - 2 * v[2] );
2911 }
2912 Real der2fct8_32_P2tilde_3D ( const GeoVector& v )
2913 {
2914  return -4 + 64 * v[0] * ( 1 - v[0] - 2 * v[1] - 2 * v[2] );
2915 }
2916 Real der2fct8_33_P2tilde_3D ( const GeoVector& v )
2917 {
2918  return -8 - 128 * v[0] * v[1] * v[2];
2919 }
2920 
2921 Real der2fct9_11_P2tilde_3D ( const GeoVector& v )
2922 {
2923  return -128 * v[0] * v[1] * v[2];
2924 }
2925 Real der2fct9_12_P2tilde_3D ( const GeoVector& v )
2926 {
2927  return 64 * v[2] * ( 1 - 2 * v[0] - 2 * v[1] - v[2] );
2928 }
2929 Real der2fct9_13_P2tilde_3D ( const GeoVector& v )
2930 {
2931  return 4 + 64 * v[1] * ( 1 - 2 * v[0] - v[1] - 2 * v[2] );
2932 }
2933 Real der2fct9_21_P2tilde_3D ( const GeoVector& v )
2934 {
2935  return 64 * v[2] * ( 1 - 2 * v[0] - 2 * v[1] - v[2] );
2936 }
2937 Real der2fct9_22_P2tilde_3D ( const GeoVector& v )
2938 {
2939  return - 128 * v[0] * v[1] * v[2];
2940 }
2941 Real der2fct9_23_P2tilde_3D ( const GeoVector& v )
2942 {
2943  return 64 * v[0] * ( 1 - v[0] - 2 * v[1] - 2 * v[2] );
2944 }
2945 Real der2fct9_31_P2tilde_3D ( const GeoVector& v )
2946 {
2947  return 4 + 64 * v[1] * ( 1 - 2 * v[0] - v[1] - 2 * v[2] );
2948 }
2949 Real der2fct9_32_P2tilde_3D ( const GeoVector& v )
2950 {
2951  return 64 * v[0] * ( 1 - v[0] - 2 * v[1] - 2 * v[2] );
2952 }
2953 Real der2fct9_33_P2tilde_3D ( const GeoVector& v )
2954 {
2955  return - 128 * v[0] * v[1] * v[2];
2956 }
2957 
2958 Real der2fct10_11_P2tilde_3D ( const GeoVector& v )
2959 {
2960  return -128 * v[0] * v[1] * v[2];
2961 }
2962 Real der2fct10_12_P2tilde_3D ( const GeoVector& v )
2963 {
2964  return 64 * v[2] * ( 1 - 2 * v[0] - 2 * v[1] - v[2] );
2965 }
2966 Real der2fct10_13_P2tilde_3D ( const GeoVector& v )
2967 {
2968  return 64 * v[1] * ( 1 - 2 * v[0] - v[1] - 2 * v[2] );
2969 }
2970 Real der2fct10_21_P2tilde_3D ( const GeoVector& v )
2971 {
2972  return 64 * v[2] * ( 1 - 2 * v[0] - 2 * v[1] - v[2] );
2973 }
2974 Real der2fct10_22_P2tilde_3D ( const GeoVector& v )
2975 {
2976  return - 128 * v[0] * v[1] * v[2];
2977 }
2978 Real der2fct10_23_P2tilde_3D ( const GeoVector& v )
2979 {
2980  return 4 + 64 * v[0] * ( 1 - v[0] - 2 * v[1] - 2 * v[2] );
2981 }
2982 Real der2fct10_31_P2tilde_3D ( const GeoVector& v )
2983 {
2984  return 64 * v[1] * ( 1 - 2 * v[0] - v[1] - 2 * v[2] );
2985 }
2986 Real der2fct10_32_P2tilde_3D ( const GeoVector& v )
2987 {
2988  return 4 + 64 * v[0] * ( 1 - v[0] - 2 * v[1] - 2 * v[2] );
2989 }
2990 Real der2fct10_33_P2tilde_3D ( const GeoVector& v )
2991 {
2992  return - 128 * v[0] * v[1] * v[2];
2993 }
2994 
2995 Real der2fct11_11_P2tilde_3D ( const GeoVector& v )
2996 {
2997  return -512 * v[0] * v[1] * v[2];
2998 }
2999 Real der2fct11_12_P2tilde_3D ( const GeoVector& v )
3000 {
3001  return 256 * v[2] * ( 1 - 2 * v[0] - 2 * v[1] - v[2] );
3002 }
3003 Real der2fct11_13_P2tilde_3D ( const GeoVector& v )
3004 {
3005  return 256 * v[1] * ( 1 - 2 * v[0] - v[1] - 2 * v[2] );
3006 }
3007 Real der2fct11_21_P2tilde_3D ( const GeoVector& v )
3008 {
3009  return 256 * v[2] * ( 1 - 2 * v[0] - 2 * v[1] - v[2] );
3010 }
3011 Real der2fct11_22_P2tilde_3D ( const GeoVector& v )
3012 {
3013  return -512 * v[0] * v[1] * v[2];
3014 }
3015 Real der2fct11_23_P2tilde_3D ( const GeoVector& v )
3016 {
3017  return 256 * v[0] * ( 1 - v[0] - 2 * v[1] - 2 * v[2] );
3018 }
3019 Real der2fct11_31_P2tilde_3D ( const GeoVector& v )
3020 {
3021  return 256 * v[1] * ( 1 - 2 * v[0] - v[1] - 2 * v[2] );
3022 }
3023 Real der2fct11_32_P2tilde_3D ( const GeoVector& v )
3024 {
3025  return 256 * v[0] * ( 1 - v[0] - 2 * v[1] - 2 * v[2] );
3026 }
3027 Real der2fct11_33_P2tilde_3D ( const GeoVector& v )
3028 {
3029  return -512 * v[0] * v[1] * v[2];
3030 }
3031 
3032 //======================================================================
3033 //
3034 // Q0 (3D)
3035 //
3036 //======================================================================
3037 /*
3038  ________
3039  /. /|
3040  / . / |
3041  /_______/ |
3042  | . 1 | |
3043  | .....|..|
3044  | . | /
3045  |. |/
3046  |_______|
3047 
3048 */
3049 Real fct1_Q0_3D ( const GeoVector& )
3050 {
3051  return 1.;
3052 }
3053 Real derfct1_Q0_3D ( const GeoVector& )
3054 {
3055  return 0.;
3056 }
3057 // The second derivative is equal to the first : both are equal to 0.
3058 Real der2fct1_Q0_3D ( const GeoVector& )
3059 {
3060  return 0.;
3061 }
3062 
3063 //======================================================================
3064 //
3065 // Q1 (3D)
3066 //
3067 //======================================================================
3068 /*
3069  8-------7
3070  /. /|
3071  / . / |
3072  5_______6 |
3073  | . | |
3074  | 4....|..3
3075  | . | /
3076  |. |/
3077  1_______2
3078 */
3079 Real fct1_Q1_3D ( const GeoVector& v )
3080 {
3081  return ( 1. - v[0] ) * ( 1. - v[1] ) * ( 1. - v[2] );
3082 }
3083 Real fct2_Q1_3D ( const GeoVector& v )
3084 {
3085  return v[0] * ( 1. - v[1] ) * ( 1. - v[2] );
3086 }
3087 Real fct3_Q1_3D ( const GeoVector& v )
3088 {
3089  return v[0] * v[1] * ( 1. - v[2] );
3090 }
3091 Real fct4_Q1_3D ( const GeoVector& v )
3092 {
3093  return ( 1. - v[0] ) * v[1] * ( 1. - v[2] );
3094 }
3095 Real fct5_Q1_3D ( const GeoVector& v )
3096 {
3097  return ( 1. - v[0] ) * ( 1. - v[1] ) * v[2];
3098 }
3099 Real fct6_Q1_3D ( const GeoVector& v )
3100 {
3101  return v[0] * ( 1. - v[1] ) * v[2];
3102 }
3103 Real fct7_Q1_3D ( const GeoVector& v )
3104 {
3105  return v[0] * v[1] * v[2];
3106 }
3107 Real fct8_Q1_3D ( const GeoVector& v )
3108 {
3109  return ( 1. - v[0] ) * v[1] * v[2];
3110 }
3111 
3112 Real derfct1_1_Q1_3D ( const GeoVector& v )
3113 {
3114  return - ( 1. - v[1] ) * ( 1. - v[2] );
3115 }
3116 Real derfct1_2_Q1_3D ( const GeoVector& v )
3117 {
3118  return - ( 1. - v[0] ) * ( 1. - v[2] );
3119 }
3120 Real derfct1_3_Q1_3D ( const GeoVector& v )
3121 {
3122  return - ( 1. - v[0] ) * ( 1. - v[1] );
3123 }
3124 Real derfct2_1_Q1_3D ( const GeoVector& v )
3125 {
3126  return ( 1. - v[1] ) * ( 1. - v[2] );
3127 }
3128 Real derfct2_2_Q1_3D ( const GeoVector& v )
3129 {
3130  return -v[0] * ( 1. - v[2] ) ;
3131 }
3132 Real derfct2_3_Q1_3D ( const GeoVector& v )
3133 {
3134  return -v[0] * ( 1. - v[1] );
3135 }
3136 Real derfct3_1_Q1_3D ( const GeoVector& v )
3137 {
3138  return v[1] * ( 1. - v[2] );
3139 }
3140 Real derfct3_2_Q1_3D ( const GeoVector& v )
3141 {
3142  return v[0] * ( 1. - v[2] );
3143 }
3144 Real derfct3_3_Q1_3D ( const GeoVector& v )
3145 {
3146  return -v[0] * v[1] ;
3147 }
3148 Real derfct4_1_Q1_3D ( const GeoVector& v )
3149 {
3150  return -v[1] * ( 1. - v[2] );
3151 }
3152 Real derfct4_2_Q1_3D ( const GeoVector& v )
3153 {
3154  return ( 1. - v[0] ) * ( 1. - v[2] );
3155 }
3156 Real derfct4_3_Q1_3D ( const GeoVector& v )
3157 {
3158  return - ( 1. - v[0] ) * v[1];
3159 }
3160 Real derfct5_1_Q1_3D ( const GeoVector& v )
3161 {
3162  return - ( 1. - v[1] ) * v[2];
3163 }
3164 Real derfct5_2_Q1_3D ( const GeoVector& v )
3165 {
3166  return - ( 1. - v[0] ) * v[2];
3167 }
3168 Real derfct5_3_Q1_3D ( const GeoVector& v )
3169 {
3170  return ( 1. - v[0] ) * ( 1. - v[1] );
3171 }
3172 Real derfct6_1_Q1_3D ( const GeoVector& v )
3173 {
3174  return ( 1. - v[1] ) * v[2] ;
3175 }
3176 Real derfct6_2_Q1_3D ( const GeoVector& v )
3177 {
3178  return -v[0] * v[2];
3179 }
3180 Real derfct6_3_Q1_3D ( const GeoVector& v )
3181 {
3182  return v[0] * ( 1. - v[1] );
3183 }
3184 Real derfct7_1_Q1_3D ( const GeoVector& v )
3185 {
3186  return v[1] * v[2];
3187 }
3188 Real derfct7_2_Q1_3D ( const GeoVector& v )
3189 {
3190  return v[0] * v[2];
3191 }
3192 Real derfct7_3_Q1_3D ( const GeoVector& v )
3193 {
3194  return v[0] * v[1];
3195 }
3196 Real derfct8_1_Q1_3D ( const GeoVector& v )
3197 {
3198  return -v[1] * v[2];
3199 }
3200 Real derfct8_2_Q1_3D ( const GeoVector& v )
3201 {
3202  return ( 1. - v[0] ) * v[2];
3203 }
3204 Real derfct8_3_Q1_3D ( const GeoVector& v )
3205 {
3206  return ( 1. - v[0] ) * v[1];
3207 }
3208 
3209 Real der2fct1_11_Q1_3D ( const GeoVector& )
3210 {
3211  return 0;
3212 }
3213 Real der2fct1_12_Q1_3D ( const GeoVector& v )
3214 {
3215  return 1. - v[2];
3216 }
3217 Real der2fct1_13_Q1_3D ( const GeoVector& v )
3218 {
3219  return 1. - v[1];
3220 }
3221 Real der2fct1_21_Q1_3D ( const GeoVector& v )
3222 {
3223  return 1. - v[2];
3224 }
3225 Real der2fct1_22_Q1_3D ( const GeoVector& )
3226 {
3227  return 0;
3228 }
3229 Real der2fct1_23_Q1_3D ( const GeoVector& v )
3230 {
3231  return 1. - v[0];
3232 }
3233 Real der2fct1_31_Q1_3D ( const GeoVector& v )
3234 {
3235  return 1. - v[1];
3236 }
3237 Real der2fct1_32_Q1_3D ( const GeoVector& v )
3238 {
3239  return 1. - v[0];
3240 }
3241 Real der2fct1_33_Q1_3D ( const GeoVector& )
3242 {
3243  return 0;
3244 }
3245 
3246 Real der2fct2_11_Q1_3D ( const GeoVector& )
3247 {
3248  return 0;
3249 }
3250 Real der2fct2_12_Q1_3D ( const GeoVector& v )
3251 {
3252  return - ( 1. - v[2] );
3253 }
3254 Real der2fct2_13_Q1_3D ( const GeoVector& v )
3255 {
3256  return - ( 1. - v[1] );
3257 }
3258 Real der2fct2_21_Q1_3D ( const GeoVector& v )
3259 {
3260  return - ( 1. - v[2] );
3261 }
3262 Real der2fct2_22_Q1_3D ( const GeoVector& )
3263 {
3264  return 0;
3265 }
3266 Real der2fct2_23_Q1_3D ( const GeoVector& v )
3267 {
3268  return v[0];
3269 }
3270 Real der2fct2_31_Q1_3D ( const GeoVector& v )
3271 {
3272  return - ( 1. - v[1] );
3273 }
3274 Real der2fct2_32_Q1_3D ( const GeoVector& v )
3275 {
3276  return v[0];
3277 }
3278 Real der2fct2_33_Q1_3D ( const GeoVector& )
3279 {
3280  return 0;
3281 }
3282 
3283 Real der2fct3_11_Q1_3D ( const GeoVector& )
3284 {
3285  return 0;
3286 }
3287 Real der2fct3_12_Q1_3D ( const GeoVector& v )
3288 {
3289  return ( 1. - v[2] );
3290 }
3291 Real der2fct3_13_Q1_3D ( const GeoVector& v )
3292 {
3293  return -v[1];
3294 }
3295 Real der2fct3_21_Q1_3D ( const GeoVector& v )
3296 {
3297  return ( 1. - v[2] );
3298 }
3299 Real der2fct3_22_Q1_3D ( const GeoVector& )
3300 {
3301  return 0;
3302 }
3303 Real der2fct3_23_Q1_3D ( const GeoVector& v )
3304 {
3305  return -v[0];
3306 }
3307 Real der2fct3_31_Q1_3D ( const GeoVector& v )
3308 {
3309  return -v[1];
3310 }
3311 Real der2fct3_32_Q1_3D ( const GeoVector& v )
3312 {
3313  return -v[0];
3314 }
3315 Real der2fct3_33_Q1_3D ( const GeoVector& )
3316 {
3317  return 0;
3318 }
3319 
3320 Real der2fct4_11_Q1_3D ( const GeoVector& )
3321 {
3322  return 0;
3323 }
3324 Real der2fct4_12_Q1_3D ( const GeoVector& v )
3325 {
3326  return - ( 1. - v[2] );
3327 }
3328 Real der2fct4_13_Q1_3D ( const GeoVector& v )
3329 {
3330  return v[1];
3331 }
3332 Real der2fct4_21_Q1_3D ( const GeoVector& v )
3333 {
3334  return - ( 1. - v[2] );
3335 }
3336 Real der2fct4_22_Q1_3D ( const GeoVector& )
3337 {
3338  return 0;
3339 }
3340 Real der2fct4_23_Q1_3D ( const GeoVector& v )
3341 {
3342  return - ( 1. - v[0] );
3343 }
3344 Real der2fct4_31_Q1_3D ( const GeoVector& v )
3345 {
3346  return v[1];
3347 }
3348 Real der2fct4_32_Q1_3D ( const GeoVector& v )
3349 {
3350  return - ( 1. - v[0] );
3351 }
3352 Real der2fct4_33_Q1_3D ( const GeoVector& )
3353 {
3354  return 0;
3355 }
3356 
3357 Real der2fct5_11_Q1_3D ( const GeoVector& )
3358 {
3359  return 0;
3360 }
3361 Real der2fct5_12_Q1_3D ( const GeoVector& v )
3362 {
3363  return v[2];
3364 }
3365 Real der2fct5_13_Q1_3D ( const GeoVector& v )
3366 {
3367  return - ( 1. - v[1] );
3368 }
3369 Real der2fct5_21_Q1_3D ( const GeoVector& v )
3370 {
3371  return v[2];
3372 }
3373 Real der2fct5_22_Q1_3D ( const GeoVector& )
3374 {
3375  return 0;
3376 }
3377 Real der2fct5_23_Q1_3D ( const GeoVector& v )
3378 {
3379  return - ( 1. - v[0] );
3380 }
3381 Real der2fct5_31_Q1_3D ( const GeoVector& v )
3382 {
3383  return - ( 1. - v[1] );
3384 }
3385 Real der2fct5_32_Q1_3D ( const GeoVector& v )
3386 {
3387  return - ( 1. - v[0] );
3388 }
3389 Real der2fct5_33_Q1_3D ( const GeoVector& )
3390 {
3391  return 0;
3392 }
3393 
3394 Real der2fct6_11_Q1_3D ( const GeoVector& )
3395 {
3396  return 0;
3397 }
3398 Real der2fct6_12_Q1_3D ( const GeoVector& v )
3399 {
3400  return -v[2];
3401 }
3402 Real der2fct6_13_Q1_3D ( const GeoVector& v )
3403 {
3404  return 1. - v[1];
3405 }
3406 Real der2fct6_21_Q1_3D ( const GeoVector& v )
3407 {
3408  return -v[2];
3409 }
3410 Real der2fct6_22_Q1_3D ( const GeoVector& )
3411 {
3412  return 0;
3413 }
3414 Real der2fct6_23_Q1_3D ( const GeoVector& v )
3415 {
3416  return -v[0];
3417 }
3418 Real der2fct6_31_Q1_3D ( const GeoVector& v )
3419 {
3420  return 1. - v[1];
3421 }
3422 Real der2fct6_32_Q1_3D ( const GeoVector& v )
3423 {
3424  return -v[0];
3425 }
3426 Real der2fct6_33_Q1_3D ( const GeoVector& )
3427 {
3428  return 0;
3429 }
3430 
3431 Real der2fct7_11_Q1_3D ( const GeoVector& )
3432 {
3433  return 0;
3434 }
3435 Real der2fct7_12_Q1_3D ( const GeoVector& v )
3436 {
3437  return v[2];
3438 }
3439 Real der2fct7_13_Q1_3D ( const GeoVector& v )
3440 {
3441  return v[1];
3442 }
3443 Real der2fct7_21_Q1_3D ( const GeoVector& v )
3444 {
3445  return v[2];
3446 }
3447 Real der2fct7_22_Q1_3D ( const GeoVector& )
3448 {
3449  return 0;
3450 }
3451 Real der2fct7_23_Q1_3D ( const GeoVector& v )
3452 {
3453  return v[0];
3454 }
3455 Real der2fct7_31_Q1_3D ( const GeoVector& v )
3456 {
3457  return v[1];
3458 }
3459 Real der2fct7_32_Q1_3D ( const GeoVector& v )
3460 {
3461  return v[0];
3462 }
3463 Real der2fct7_33_Q1_3D ( const GeoVector& )
3464 {
3465  return 0;
3466 }
3467 
3468 Real der2fct8_11_Q1_3D ( const GeoVector& )
3469 {
3470  return 0;
3471 }
3472 Real der2fct8_12_Q1_3D ( const GeoVector& v )
3473 {
3474  return -v[2];
3475 }
3476 Real der2fct8_13_Q1_3D ( const GeoVector& v )
3477 {
3478  return -v[1];
3479 }
3480 Real der2fct8_21_Q1_3D ( const GeoVector& v )
3481 {
3482  return -v[2];
3483 }
3484 Real der2fct8_22_Q1_3D ( const GeoVector& )
3485 {
3486  return 0;
3487 }
3488 Real der2fct8_23_Q1_3D ( const GeoVector& v )
3489 {
3490  return 1. - v[0];
3491 }
3492 Real der2fct8_31_Q1_3D ( const GeoVector& v )
3493 {
3494  return -v[1];
3495 }
3496 Real der2fct8_32_Q1_3D ( const GeoVector& v )
3497 {
3498  return 1 - v[0];
3499 }
3500 Real der2fct8_33_Q1_3D ( const GeoVector& )
3501 {
3502  return 0;
3503 }
3504 
3505 //======================================================================
3506 //
3507 // RT0 Hexa (3D)
3508 //
3509 //======================================================================
3510 /*
3511 
3512  8-------7
3513  /. /|
3514  / . / |
3515  5_______6 |
3516  | . | |
3517  | 4....|..3
3518  | . | /
3519  |. |/
3520  1_______2
3521 
3522  face 1: 1,4,3,2
3523  face 2: 1,5,8,4
3524  face 3: 1,2,6,5
3525  face 4: 2,3,7,6
3526  face 5: 3,4,8,7
3527  face 6: 5,6,7,8
3528 
3529 */
3530 
3531 Real fct1_RT0_1_HEXA_3D ( const GeoVector& )
3532 {
3533  return 0.;
3534 }
3535 Real fct1_RT0_2_HEXA_3D ( const GeoVector& )
3536 {
3537  return 0.;
3538 }
3539 Real fct1_RT0_3_HEXA_3D ( const GeoVector& v )
3540 {
3541  return v[2] - 1.;
3542 }
3543 
3544 Real fct2_RT0_1_HEXA_3D ( const GeoVector& v )
3545 {
3546  return v[0] - 1.;
3547 }
3548 Real fct2_RT0_2_HEXA_3D ( const GeoVector& )
3549 {
3550  return 0.;
3551 }
3552 Real fct2_RT0_3_HEXA_3D ( const GeoVector& )
3553 {
3554  return 0.;
3555 }
3556 
3557 Real fct3_RT0_1_HEXA_3D ( const GeoVector& )
3558 {
3559  return 0.;
3560 }
3561 Real fct3_RT0_2_HEXA_3D ( const GeoVector& v )
3562 {
3563  return v[1] - 1.;
3564 }
3565 Real fct3_RT0_3_HEXA_3D ( const GeoVector& )
3566 {
3567  return 0.;
3568 }
3569 
3570 Real fct4_RT0_1_HEXA_3D ( const GeoVector& v )
3571 {
3572  return v[0];
3573 }
3574 Real fct4_RT0_2_HEXA_3D ( const GeoVector& )
3575 {
3576  return 0.;
3577 }
3578 Real fct4_RT0_3_HEXA_3D ( const GeoVector& )
3579 {
3580  return 0.;
3581 }
3582 
3583 Real fct5_RT0_1_HEXA_3D ( const GeoVector& )
3584 {
3585  return 0.;
3586 }
3587 Real fct5_RT0_2_HEXA_3D ( const GeoVector& v )
3588 {
3589  return v[1];
3590 }
3591 Real fct5_RT0_3_HEXA_3D ( const GeoVector& )
3592 {
3593  return 0.;
3594 }
3595 
3596 Real fct6_RT0_1_HEXA_3D ( const GeoVector& )
3597 {
3598  return 0.;
3599 }
3600 Real fct6_RT0_2_HEXA_3D ( const GeoVector& )
3601 {
3602  return 0.;
3603 }
3604 Real fct6_RT0_3_HEXA_3D ( const GeoVector& v )
3605 {
3606  return v[2];
3607 }
3608 
3609 Real fct1_DIV_RT0_HEXA_3D ( const GeoVector& )
3610 {
3611  return 1.;
3612 }
3613 Real fct2_DIV_RT0_HEXA_3D ( const GeoVector& )
3614 {
3615  return 1.;
3616 }
3617 Real fct3_DIV_RT0_HEXA_3D ( const GeoVector& )
3618 {
3619  return 1.;
3620 }
3621 Real fct4_DIV_RT0_HEXA_3D ( const GeoVector& )
3622 {
3623  return 1.;
3624 }
3625 Real fct5_DIV_RT0_HEXA_3D ( const GeoVector& )
3626 {
3627  return 1.;
3628 }
3629 Real fct6_DIV_RT0_HEXA_3D ( const GeoVector& )
3630 {
3631  return 1.;
3632 }
3633 
3634 //======================================================================
3635 //
3636 // RT0 Tetra (3D)
3637 //
3638 //======================================================================
3639 
3640 /*
3641 
3642  4
3643  / .
3644  / \.3
3645  / . \\
3646  / . \\
3647  /. \!
3648  1 ----------2
3649 
3650 SEE ElementShapes.cc for the ORIENTATION CONVENTIONS
3651  point 1: 0, 0, 0
3652  point 2: 1, 0, 0
3653  point 3: 0, 1, 0
3654  point 4: 0, 0, 1
3655 
3656  face 1: 2, 3, 4
3657  face 2: 1, 4, 3
3658  face 3: 1, 2, 4
3659  face 4: 1, 3, 2
3660 
3661 
3662 */
3663 
3664 Real fct3_RT0_1_TETRA_3D ( const GeoVector& v )
3665 {
3666  return 2. * v[0];
3667 }
3668 Real fct3_RT0_2_TETRA_3D ( const GeoVector& v )
3669 {
3670  return 2. * v[1];
3671 }
3672 Real fct3_RT0_3_TETRA_3D ( const GeoVector& v )
3673 {
3674  return 2. * v[2];
3675 }
3676 
3677 Real fct4_RT0_1_TETRA_3D ( const GeoVector& v )
3678 {
3679  return 2. * v[0] - 2.;
3680 }
3681 Real fct4_RT0_2_TETRA_3D ( const GeoVector& v )
3682 {
3683  return 2. * v[1];
3684 }
3685 Real fct4_RT0_3_TETRA_3D ( const GeoVector& v )
3686 {
3687  return 2. * v[2];
3688 }
3689 
3690 Real fct2_RT0_1_TETRA_3D ( const GeoVector& v )
3691 {
3692  return 2. * v[0];
3693 }
3694 Real fct2_RT0_2_TETRA_3D ( const GeoVector& v )
3695 {
3696  return 2. * v[1] - 2.;
3697 }
3698 Real fct2_RT0_3_TETRA_3D ( const GeoVector& v )
3699 {
3700  return 2. * v[2];
3701 }
3702 
3703 Real fct1_RT0_1_TETRA_3D ( const GeoVector& v )
3704 {
3705  return 2. * v[0];
3706 }
3707 Real fct1_RT0_2_TETRA_3D ( const GeoVector& v )
3708 {
3709  return 2. * v[1];
3710 }
3711 Real fct1_RT0_3_TETRA_3D ( const GeoVector& v )
3712 {
3713  return 2. * v[2] - 2.;
3714 }
3715 
3716 Real fct1_DIV_RT0_TETRA_3D ( const GeoVector& )
3717 {
3718  return 6.;
3719 }
3720 Real fct2_DIV_RT0_TETRA_3D ( const GeoVector& )
3721 {
3722  return 6.;
3723 }
3724 Real fct3_DIV_RT0_TETRA_3D ( const GeoVector& )
3725 {
3726  return 6.;
3727 }
3728 Real fct4_DIV_RT0_TETRA_3D ( const GeoVector& )
3729 {
3730  return 6.;
3731 }
3732 
3733 // Transformation functions
3734 
3736 {
3737  return values;
3738 }
3739 
3741 {
3742  std::vector<Real> FEValues (nodalValues);
3743  FEValues[4] = 256 * nodalValues[4] - 64 * (nodalValues[0] + nodalValues[1] + nodalValues[2] + nodalValues[3]);
3744  return FEValues;
3745 }
3746 
3748 {
3749  std::vector<Real> FEValues (nodalValues);
3750  FEValues[3] = 27 * nodalValues[3] - 9 * (nodalValues[0] + nodalValues[1] + nodalValues[2]);
3751  return FEValues;
3752 }
3753 
3754 
3755 //======================================================================
3756 //
3757 // P0 (0D)
3758 //
3759 //======================================================================
3760 /*
3761  1
3762 */
3763 
3764 const ReferenceFEScalar fePointP0 ( "Lagrange P0 on a point",
3765  FE_P0_0D,
3766  POINT,
3767  1, // nb dof per vertex
3768  0, // nb dof per edge
3769  0, // nb dof per face
3770  0, // nb dof per volume
3771  1, // nb dof
3772  1, // nb coor
3773  fct_P0_0D,
3774  derfct_P0_0D,
3775  der2fct_P0_0D,
3776  refcoor_P0_0D,
3778  ( ReferenceFE* ) NULL,
3780 
3781 //======================================================================
3782 //
3783 // P0 (1D)
3784 //
3785 //======================================================================
3786 /*
3787  --1--
3788 */
3789 
3790 const ReferenceFEScalar feSegP0 ( "Lagrange P0 on a segment", FE_P0_1D, LINE, 0, 1, 0, 0, 1, 1,
3793 
3794 //======================================================================
3795 //
3796 // P1 (1D)
3797 //
3798 //======================================================================
3799 /*
3800  1-----2
3801 */
3802 
3803 const ReferenceFEScalar feSegP1 ( "Lagrange P1 on a segment", FE_P1_1D, LINE, 1, 0, 0, 0, 2, 1,
3806 
3807 //======================================================================
3808 //
3809 // P2 (1D)
3810 //
3811 //======================================================================
3812 /*
3813  1--3--2
3814 */
3815 
3816 const ReferenceFEScalar feSegP2 ( "Lagrange P2 on a segment", FE_P2_1D, LINE, 1, 1, 0, 0, 3, 1,
3819 
3820 //======================================================================
3821 //
3822 // P0 (2D)
3823 //
3824 //======================================================================
3825 /*
3826 
3827  |\
3828  | \
3829  | 1\
3830  ---
3831 */
3832 
3833 const ReferenceFEScalar feTriaP0 ( "Lagrange P0 on a triangle", FE_P0_2D, TRIANGLE, 0, 0, 1, 0, 1, 2,
3836 
3837 //======================================================================
3838 //
3839 // P1 (2D)
3840 //
3841 //======================================================================
3842 /*
3843  3
3844  |\
3845  | \
3846  | \
3847  1---2
3848 */
3849 
3850 const ReferenceFEScalar feTriaP1 ( "Lagrange P1 on a triangle", FE_P1_2D, TRIANGLE, 1, 0, 0, 0, 3, 2,
3853 
3854 
3855 //======================================================================
3856 //
3857 // P1bubble (2D)
3858 //
3859 //======================================================================
3860 /*
3861  3
3862  |\
3863  | \
3864  |4.\
3865  1---2
3866 */
3867 
3868 const ReferenceFEScalar feTriaP1bubble ( "P1bubble on a triangle", FE_P1bubble_2D, TRIANGLE, 1, 0, 1, 0, 4, 2,
3871 
3872 
3873 //======================================================================
3874 //
3875 // P2 (2D)
3876 //
3877 //======================================================================
3878 /*
3879  3
3880  |\
3881  6 5
3882  | \
3883  1-4-2
3884 */
3885 
3886 const ReferenceFEScalar feTriaP2 ( "Lagrange P2 on a triangle", FE_P2_2D, TRIANGLE, 1, 1, 0, 0, 6, 2,
3889 
3890 //======================================================================
3891 //
3892 // RT0 (2D)
3893 //
3894 //======================================================================
3895 /*
3896  +
3897  |\
3898  3 2
3899  | \
3900  +-1-+
3901 */
3902 
3903 const ReferenceFEHdiv feTriaRT0 ( "Lagrange RT0 on a triangle", FE_RT0_TRIA_2D, TRIANGLE, 0, 1, 0, 0, 3, 2,
3906 
3907 
3908 //======================================================================
3909 //
3910 // Q0 (2D)
3911 //
3912 //======================================================================
3913 /*
3914  -------
3915  | |
3916  | 1 |
3917  | |
3918  -------
3919 */
3920 
3921 const ReferenceFEScalar feQuadQ0 ( "Lagrange Q0 on a quadrangle", FE_Q0_2D, QUAD, 0, 0, 1, 0, 1, 2,
3924 
3925 //======================================================================
3926 //
3927 // Q1 (2D)
3928 //
3929 //======================================================================
3930 /*
3931  4-------3
3932  | |
3933  | |
3934  | |
3935  1-------2
3936 */
3937 
3938 const ReferenceFEScalar feQuadQ1 ( "Lagrange Q1 on a quadrangle", FE_Q1_2D, QUAD, 1, 0, 0, 0, 4, 2,
3941 
3942 
3943 //======================================================================
3944 //
3945 // Q2 (2D)
3946 //
3947 //======================================================================
3948 /*
3949  4---7---3
3950  | |
3951  8 9 6
3952  | |
3953  1---5---2
3954 */
3955 
3956 const ReferenceFEScalar feQuadQ2 ( "Lagrange Q2 on a quadrangle", FE_Q2_2D, QUAD, 1, 1, 1, 0, 9, 2,
3959 
3960 //======================================================================
3961 //
3962 // P0 (3D)
3963 //
3964 //======================================================================
3965 /*
3966 
3967  / .
3968  / \.
3969  / . \\
3970  / . 1 \\
3971  /. \!
3972  ----------
3973 */
3974 const ReferenceFEScalar feTetraP0 ( "Lagrange P0 on a tetraedra", FE_P0_3D, TETRA, 0, 0, 0, 1, 1, 3,
3977 
3978 //======================================================================
3979 //
3980 // P1 (3D)
3981 //
3982 //======================================================================
3983 /*
3984  4
3985  / .
3986  / \.3
3987  / . \\
3988  / . \\
3989  /. \!
3990  1 ----------2
3991 */
3992 const ReferenceFEScalar feTetraP1 ( "Lagrange P1 on a tetraedra", FE_P1_3D, TETRA, 1, 0, 0, 0, 4, 3,
3995 
3996 //======================================================================
3997 //
3998 // P1bubble (3D)
3999 //
4000 //======================================================================
4001 /*
4002  4
4003  / .
4004  / \.3
4005  / . \\
4006  / . .5 \\
4007  /. \!
4008  1 ----------2
4009 */
4010 const ReferenceFEScalar feTetraP1bubble ( "Lagrange P1bubble on a tetraedra", FE_P1bubble_3D, TETRA, 1, 0, 0, 1, 5, 3,
4013 
4014 
4015 //======================================================================
4016 //
4017 // P2 (3D)
4018 //
4019 //======================================================================
4020 /*
4021  4
4022  / .10
4023  / \.3
4024  8 . 9\
4025  / 7 \6
4026  /. \!
4027  1 -----5----2
4028 */
4029 const ReferenceFEScalar feTetraP2 ( "Lagrange P2 on a tetraedra", FE_P2_3D, TETRA, 1, 1, 0, 0, 10, 3,
4032 //======================================================================
4033 //
4034 // P2tilde (3D)
4035 // NAVIER-STOKES P2 Basis Oriented to the mass lumping
4036 //======================================================================
4037 /*
4038  4
4039  / .10
4040  / \.3
4041  8 . 9\
4042  / 7 .11 \6
4043  /. \!
4044  1 -----5----2
4045 */
4046 const ReferenceFEScalar feTetraP2tilde ( "Lagrange P2tilde on a tetraedra", FE_P2tilde_3D,
4047  TETRA, 1, 1, 0, 1, 11, 3, fct_P2tilde_3D,
4052 
4053 //======================================================================
4054 //
4055 // Q0 (3D)
4056 //
4057 //======================================================================
4058 /*
4059  ________
4060  /. /|
4061  / . / |
4062  /_______/ |
4063  | . 1 | |
4064  | .....|..|
4065  | . | /
4066  |. |/
4067  |_______|
4068 */
4069 const ReferenceFEScalar feHexaQ0 ( "Lagrange Q0 on a hexaedra", FE_Q0_3D, HEXA, 0, 0, 0, 1, 1, 3,
4072 
4073 //======================================================================
4074 //
4075 // Q1 (3D)
4076 //
4077 //======================================================================
4078 /*
4079  8-------7
4080  /. /|
4081  / . / |
4082  5_______6 |
4083  | . | |
4084  | 4....|..3
4085  | . | /
4086  |. |/
4087  1_______2
4088 */
4089 const ReferenceFEScalar feHexaQ1 ( "Lagrange Q1 on a hexaedra", FE_Q1_3D, HEXA, 1, 0, 0, 0, 8, 3,
4092 
4093 //======================================================================
4094 //
4095 // RT0 (3D)
4096 //
4097 //======================================================================
4098 /*
4099 
4100  8-------7
4101  /. /|
4102  / . / |
4103  5_______6 |
4104  | . | |
4105  | 4....|..3
4106  | . | /
4107  |. |/
4108  1_______2
4109 
4110  face 1: 1,4,3,2
4111  face 2: 1,5,8,4
4112  face 3: 1,2,6,5
4113  face 4: 2,3,7,6
4114  face 5: 3,4,8,7
4115  face 6: 5,6,7,8
4116 
4117 */
4118 const ReferenceFEHdiv feHexaRT0 ( "Lagrange RT0 on a hexaedra", FE_RT0_HEXA_3D, HEXA, 0, 0, 1, 0, 6, 3,
4121 
4122 //======================================================================
4123 //
4124 // RT0 (3D)
4125 //
4126 //======================================================================
4127 /*
4128  4
4129  / .
4130  / \.3
4131  / . \\
4132  / . \\
4133  /. \!
4134  1 ----------2
4135 
4136 
4137  face 1: 1, 3, 2
4138  face 2: 1, 2, 4
4139  face 3: 2, 3, 4
4140  face 4: 1, 4, 3
4141 */
4142 const ReferenceFEHdiv feTetraRT0 ( "Lagrange RT0 on a tetraedra", FE_RT0_TETRA_3D, TETRA, 0, 0, 1, 0, 4, 3,
4145 
4146 
4147 //----------------------------------------------------------------------
4148 //
4149 // Mixed Hybrid FE
4150 //
4151 //----------------------------------------------------------------------
4152 
4153 //======================================================================
4154 //
4155 // RT0 TRIA HYBRID (2D)
4156 // Element defined on SEG : P0 on each TRIA face.
4157 //
4158 //======================================================================
4159 /*!
4160 
4161 
4162 */
4163 // N.B. : the hybrid classes and arrays depend on the quadrature rules,
4164 // geometric mappings and other reference elements :
4165 // thus they must be defined AFTER the definitions of quadrule, geomap, refFE...
4166 
4167 //! Total number of Boundary elements for the hybrid MFE for TRIA (= Number of faces. common for RT0,RT1...)
4168 #define NB_BDFE_RT0_HYB_TRIA 3
4175 
4177 {
4179 };
4180 
4182  refcoor_HYB_TRIA_SEG_1, 0, 1. );
4184  refcoor_HYB_TRIA_SEG_2, 1, 1. / std::sqrt ( 2. ) );
4186  refcoor_HYB_TRIA_SEG_3, 2, 1. );
4187 
4189 {
4191 };
4192 
4193 const ReferenceFEHybrid feTriaRT0Hyb ( "Hybrid RT0 elements on a triangle", FE_RT0_HYB_TRIA_2D, TRIANGLE,
4194  0, 1, 0, 0, 3, 2, NB_BDFE_RT0_HYB_TRIA, HybRT0TriaList,
4196 
4197 const ReferenceFEHybrid feTriaRT0VdotNHyb ( "Hybrid RT0 elements on a triangle", FE_RT0_HYB_TRIA_2D, TRIANGLE,
4198  0, 1, 0, 0, 3, 2, NB_BDFE_RT0_HYB_TRIA, HybRT0TriaVdotNList,
4200 
4201 
4202 //======================================================================
4203 //
4204 // RT0 HYBRID (3D)
4205 // Element defined on FACES : Q0 on each QUAD face.
4206 //
4207 //======================================================================
4208 /*!
4209 
4210  8-------7
4211  /. /|
4212  / . / |
4213  5_______6 |
4214  | . | |
4215  | 4....|..3
4216  | . | /
4217  |. |/
4218  1_______2
4219 
4220  face 1: 1,4,3,2
4221  face 2: 1,5,8,4
4222  face 3: 1,2,6,5
4223  face 4: 2,3,7,6
4224  face 5: 3,4,8,7
4225  face 6: 5,6,7,8
4226 
4227 
4228 */
4229 
4230 // N.B. : the hybrid classes and arrays depend on the quadrature rules,
4231 // geometrical mappings and other reference elements :
4232 // thus they must be defined AFTER the definitions of quadrule, geomap, refFE...
4233 
4234 //! Total number of Boundary elements for the hybrid MFE for HEXA (= Number of faces, common for RT0,RT1...)
4235 #define NB_BDFE_HYB_HEXA 6
4248 
4250 {
4254 };
4255 
4256 //const RefHybridFE feHexaRT0Hyb(NB_BDFE_HYB_HEXA,HybRT0HexaList,"Hybrid RT0 elements on a hexaedra",
4257 // FE_RT0_HYB_HEXA_3D, HEXA, 0,0,1,0,6,3,
4258 // refcoor_RT0HYB_HEXA,STANDARD_PATTERN);
4260  refcoor_HYB_HEXA_FACE_1, 0, 1. );
4262  refcoor_HYB_HEXA_FACE_2, 1, 1. );
4264  refcoor_HYB_HEXA_FACE_3, 2, 1. );
4266  refcoor_HYB_HEXA_FACE_4, 3, 1. );
4268  refcoor_HYB_HEXA_FACE_5, 4, 1. );
4270  refcoor_HYB_HEXA_FACE_6, 5, 1. );
4271 
4273 {
4277 };
4278 
4279 const ReferenceFEHybrid feHexaRT0Hyb ( "Hybrid RT0 elements on a hexaedra", FE_RT0_HYB_HEXA_3D, HEXA,
4280  0, 0, 1, 0, 6, 3, NB_BDFE_HYB_HEXA, HybRT0HexaList,
4282 
4283 const ReferenceFEHybrid feHexaRT0VdotNHyb ( "Hybrid RT0 elements on a hexaedra", FE_RT0_HYB_HEXA_3D, HEXA,
4284  0, 0, 1, 0, 6, 3, NB_BDFE_HYB_HEXA, HybRT0HexaVdotNList,
4286 
4287 
4288 //======================================================================
4289 //
4290 // RT0 TETRA HYBRID (3D)
4291 // Element defined on FACES : Q0 on each QUAD face.
4292 //
4293 //======================================================================
4294 /*!
4295 
4296  4
4297  / .
4298  / \.3
4299  / . \\
4300  / . \\
4301  /. \!
4302  1 ----------2
4303 
4304 SEE ElementShapes.cc for the ORIENTATION CONVENTIONS
4305  point 1: 0, 0, 0
4306  point 2: 1, 0, 0
4307  point 3: 0, 1, 0
4308  point 4: 0, 0, 1
4309 
4310  face 1: 1, 3, 2
4311  face 2: 1, 2, 4
4312  face 3: 2, 3, 4
4313  face 4: 1, 4, 3
4314 
4315 
4316 */
4317 // N.B. : the hybrid classes and arrays depend on the quadrature rules,
4318 // geometric mappings and other reference elements :
4319 // thus they must be defined AFTER the definitions of quadrule, geomap, refFE...
4320 
4321 //! Total number of Boundary elements for the hybrid MFE for TETRA (= Number of faces. common for RT0,RT1...)
4322 #define NB_BDFE_RT0_HYB_TETRA 4
4331 
4333 {
4336 };
4337 
4338 /*const RefHybridFE feTetraRT0Hyb (NB_BDFE_RT0_HYB_TETRA,HybRT0TetraList,"Hybrid RT0 elements on a tetrahedron",
4339  FE_RT0_HYB_TETRA_3D, TETRA, 0,0,1,0,4,3,
4340  refcoor_RT0HYB_TETRA,STANDARD_PATTERN);*/
4341 
4342 
4344  refcoor_HYB_TETRA_FACE_1, 0, 2. );
4346  refcoor_HYB_TETRA_FACE_2, 1, 2. );
4348  refcoor_HYB_TETRA_FACE_3, 2, 2. / std::sqrt ( 3. ) );
4350  refcoor_HYB_TETRA_FACE_4, 3, 2. );
4351 
4353 {
4356 };
4357 
4358 const ReferenceFEHybrid feTetraRT0Hyb ( "Hybrid RT0 elements on a tetrahedron", FE_RT0_HYB_TETRA_3D, TETRA,
4359  0, 0, 1, 0, 4, 3, NB_BDFE_RT0_HYB_TETRA, HybRT0TetraList,
4361 
4362 const ReferenceFEHybrid feTetraRT0VdotNHyb ( "Hybrid RT0 elements on a tetrahedron", FE_RT0_HYB_TETRA_3D, TETRA,
4363  0, 0, 1, 0, 4, 3, NB_BDFE_RT0_HYB_TETRA, HybRT0TetraVdotNList,
4365 
4366 
4367 }
Real der2fct4_12_P2_3D(const GeoVector &)
Real der2fct11_33_P2tilde_3D(const GeoVector &v)
Real derfct5_2_P2tilde_3D(const GeoVector &v)
Real der2fct3_31_P2_3D(const GeoVector &)
Real der2fct5_12_P2_2D(const GeoVector &)
Real der2fct11_23_P2tilde_3D(const GeoVector &v)
Real der2fct3_21_Q2_2D(const GeoVector &v)
Real fct9_P2tilde_3D(const GeoVector &v)
Real derfct3_1_P1bubble_3D(const GeoVector &)
Real der2fct3_22_P2tilde_3D(const GeoVector &v)
Real der2fct6_32_P2_3D(const GeoVector &)
Real der2fct2_22_P2_3D(const GeoVector &)
static const CurrentFEManifold * HybRT0TriaList[3]
Real derfct6_2_P2_2D(const GeoVector &v)
Real der2fct1_32_P2tilde_3D(const GeoVector &v)
Real der2fct6_21_P2tilde_3D(const GeoVector &v)
Real der2fct8_32_P2_3D(const GeoVector &)
const Real A[4]
Real der2fct4_32_P2tilde_3D(const GeoVector &v)
QuadraturePoint(Real x, Real weight)
Full constructor for 1D.
Real der2fct1_22_P2tilde_3D(const GeoVector &v)
Real der2fct7_13_Q1_3D(const GeoVector &v)
GeometricMap - Structure for the geometrical mapping.
Real fct8_Q2_2D(const GeoVector &v)
Real der2fct6_22_Q1_3D(const GeoVector &)
Real der2fct2_13_P2_3D(const GeoVector &)
const QuadratureRule quadRuleTetra64pt(pt_tetra_64pt, 6, "Quadrature rule 64 points on a tetraedra", TETRA, 64, 7)
Real fct1_P0_1D(const GeoVector &)
#define QUAD_RULE_QUAD_4PT
Real der2fct4_13_P2_3D(const GeoVector &)
const Real C[4]
Real der2fct3_12_Q1_3D(const GeoVector &v)
Real der2fct6_23_P2tilde_3D(const GeoVector &v)
Real fct3_Q1_3D(const GeoVector &v)
Real fct2_P1bubble_3D(const GeoVector &v)
Real fct2_RT0_1_HEXA_3D(const GeoVector &v)
Real der2fct10_31_P2_3D(const GeoVector &)
#define QUAD_RULE_TETRA_64PT
Real derfct10_3_P2_3D(const GeoVector &v)
Real der2fct5_11_Q1_3D(const GeoVector &)
Real der2fct4_22_P2_3D(const GeoVector &)
Real der2fct6_33_P2tilde_3D(const GeoVector &v)
Real der2fct3_12_P2_3D(const GeoVector &)
const QuadratureRule quadRuleQuad16pt(pt_quad_16pt, 4, "Quadrature rule 16 points on a quadrangle", QUAD, 16, 5)
Real fct2_P1_3D(const GeoVector &v)
static const QuadratureRule quad_rule_quad[4]
Real der2fctx_xx_Q1_2D(const GeoVector &)
Real der2fct8_13_P2_3D(const GeoVector &)
Real der2fct11_11_P2tilde_3D(const GeoVector &v)
Real fct2_P2_2D(const GeoVector &v)
const QuadratureRule quadRuleDummy(pt_node_0pt, QUAD_RULE_DUMMY, "Dummy quadrature rule", NONE, 0, 0)
Real der2fct9_12_P2tilde_3D(const GeoVector &v)
Real der2fct5_13_P2tilde_3D(const GeoVector &v)
static const CurrentFEManifold BdFE_RT0_HYB_TETRA_3(feTriaP0, geoLinearTria, quadRuleTria1pt, refcoor_HYB_TETRA_FACE_3, 2)
Real fct1_RT0_2_TETRA_3D(const GeoVector &v)
Real der2fct3_11_Q1_3D(const GeoVector &)
Real fct3_P1_2D(const GeoVector &v)
Real fct2_DIV_RT0_TRIA_2D(const GeoVector &)
Real fct1_DIV_RT0_TRIA_2D(const GeoVector &)
const Real t4pt_a
Real derfct2_3_P1bubble_3D(const GeoVector &)
static const CurrentFEManifold BdFE_RT0_HYB_HEXA_VdotN_5(feQuadQ0, geoBilinearQuad, quadRuleQuad1pt, refcoor_HYB_HEXA_FACE_5, 4, 1.)
Real der2fct1_31_P2tilde_3D(const GeoVector &v)
Real der2fct2_21_P2_3D(const GeoVector &)
Real der2fct1_22_Q1_3D(const GeoVector &)
Real derfct4_2_P2_3D(const GeoVector &)
Real derfct1_2_P1bubble_2D(const GeoVector &)
Real fct2_P1bubble_2D(const GeoVector &v)
Real der2fct4_21_Q2_2D(const GeoVector &v)
Real der2fct6_11_P2tilde_3D(const GeoVector &v)
const size_t QUAD_RULE_SEG_3PT
Real der2fct7_21_Q1_3D(const GeoVector &v)
Real fct3_RT0_3_TETRA_3D(const GeoVector &v)
const Real t5[4]
Real der2fct2_11_Q1_3D(const GeoVector &)
Real der2fct2_23_P2_3D(const GeoVector &)
static const QuadratureRule quad_rule_seg[NB_QUAD_RULE_SEG]
Real der2fct1_Q0_2D(const GeoVector &)
Real der2fct4_33_Q1_3D(const GeoVector &)
Real derfct5_3_P1bubble_3D(const GeoVector &v)
Real der2fct1_22_Q2_2D(const GeoVector &v)
Real der2fct4_11_Q1_3D(const GeoVector &)
static const QuadraturePoint pt_tria_7pt[7]
Real derfct2_1_Q1_2D(const GeoVector &v)
Real fct7_P2_3D(const GeoVector &v)
static const QuadratureRule quad_rule_tetra[6]
const QuadratureRule quadRuleQuad4pt(pt_quad_4pt, 2, "Quadrature rule 4 points on a quadrangle", QUAD, 4, 3)
Real derfct9_3_P2tilde_3D(const GeoVector &v)
static const QuadraturePoint pt_tria_1pt[1]
Real derfct3_1_Q1_3D(const GeoVector &v)
Real der2fct11_32_P2tilde_3D(const GeoVector &v)
static const QuadraturePoint pt_tetra_15pt[15]
Real derfct1_3_Q1_3D(const GeoVector &v)
Real der2fct4_12_P1bubble_2D(const GeoVector &v)
const QuadratureRule quadRuleSeg3pt(pt_seg_3pt, QUAD_RULE_SEG_3PT, "Gauss Legendre 3 points on a segment", LINE, 3, 5)
Real der2fct7_21_P2_3D(const GeoVector &)
Real fct1_P1bubble_3D(const GeoVector &v)
Real der2fct6_12_Q1_3D(const GeoVector &v)
const ReferenceFEScalar feHexaQ0("Lagrange Q0 on a hexaedra", FE_Q0_3D, HEXA, 0, 0, 0, 1, 1, 3, fct_Q0_3D, derfct_Q0_3D, der2fct_Q0_3D, refcoor_Q0_3D, STANDARD_PATTERN, &feQuadQ0, &lagrangianTransform)
Real der2fct4_31_Q1_3D(const GeoVector &v)
Real derfct3_1_P2_2D(const GeoVector &)
Real der2fct7_12_P2_3D(const GeoVector &)
static const QuadraturePoint pt_tetra_4pt_nodal[4]
Real derfct3_2_Q1_3D(const GeoVector &v)
Real der2fct5_33_P1bubble_3D(const GeoVector &v)
Real der2fct3_13_P2tilde_3D(const GeoVector &v)
Real der2fct5_31_P2_3D(const GeoVector &)
Real der2fct6_12_P2_2D(const GeoVector &)
const Real tet5ptx2
Real der2fct4_33_P2tilde_3D(const GeoVector &v)
Real derfct9_1_P2tilde_3D(const GeoVector &v)
const Real q4ptx1
Real fct9_P2_3D(const GeoVector &v)
const Real q4ptx4
Real derfct4_3_P2tilde_3D(const GeoVector &v)
Real der2fct4_21_Q1_3D(const GeoVector &v)
Real fct5_P1bubble_3D(const GeoVector &v)
Real der2fct5_13_P1bubble_3D(const GeoVector &v)
Real der2fct6_33_P2_3D(const GeoVector &)
Real der2fct9_12_P2_3D(const GeoVector &)
Real der2fct9_23_P2_3D(const GeoVector &)
Real der2fct2_23_P2tilde_3D(const GeoVector &v)
const Real q3ptx3
Real fct1_P0_0D(const GeoVector &)
Real derfct7_3_Q1_3D(const GeoVector &v)
Real fct2_P1_1D(const GeoVector &v)
Real fct2_Q2_2D(const GeoVector &v)
Real der2fct5_21_P2_2D(const GeoVector &)
Real der2fct6_12_Q2_2D(const GeoVector &v)
#define QUAD_RULE_TRIA_7PT
Real der2fct1_21_P2_3D(const GeoVector &)
Real der2fct10_33_P2tilde_3D(const GeoVector &v)
Real der2fct5_23_Q1_3D(const GeoVector &v)
Real fct5_RT0_3_HEXA_3D(const GeoVector &)
const QuadratureRule quadRuleTetra4ptNodal(pt_tetra_4pt_nodal, 3, "Quadrature rule 4 points on a tetraedra vertices", TETRA, 4, 1)
Real derfct5_1_P2tilde_3D(const GeoVector &v)
Real fct6_Q2_2D(const GeoVector &v)
Real der2fct2_11_P2_3D(const GeoVector &)
Real derfct1_2_P2_2D(const GeoVector &v)
Real der2fct2_32_P2_3D(const GeoVector &)
const Real t4pt_xb2
#define QUAD_RULE_TETRA_1PT
id of the quadrature rules on tetraedra
const ReferenceFEScalar feSegP0("Lagrange P0 on a segment", FE_P0_1D, LINE, 0, 1, 0, 0, 1, 1, fct_P0_1D, derfct_P0_1D, der2fct_P0_1D, refcoor_P0_1D, STANDARD_PATTERN, &fePointP0, &lagrangianTransform)
const QuadratureRule quadRuleTetra15pt(pt_tetra_15pt, 5, "Quadrature rule 15 points on a tetraedra", TETRA, 15, 5)
Real der2fct7_23_Q1_3D(const GeoVector &v)
Real derfct8_2_P2tilde_3D(const GeoVector &v)
Real der2fct10_21_P2_3D(const GeoVector &)
static const CurrentFEManifold BdFE_RT0_HYB_TRIA_VdotN_1(feSegP0, geoLinearSeg, quadRuleSeg1pt, refcoor_HYB_TRIA_SEG_1, 0, 1.)
Real der2fct5_31_Q1_3D(const GeoVector &v)
Real der2fct3_21_P2_2D(const GeoVector &)
Real der2fct2_11_P2_1D(const GeoVector &)
Real fct3_Q2_2D(const GeoVector &v)
const size_t QUAD_RULE_SEG_4PT
const QuadratureRule quadRuleTria4pt(pt_tria_4pt, 3, "Quadrature rule 4 points on a triangle", TRIANGLE, 4, 3)
#define QUAD_RULE_TETRA_5PT
#define QUAD_RULE_TRIA_3PT
Real derfct2_2_P2tilde_3D(const GeoVector &v)
Real der2fct8_31_P2tilde_3D(const GeoVector &v)
Real fct1_P2_1D(const GeoVector &v)
Real der2fct1_12_P2_3D(const GeoVector &)
Real der2fct7_13_P2_3D(const GeoVector &)
Real derfct8_1_Q1_3D(const GeoVector &v)
Real derfct4_2_Q1_3D(const GeoVector &v)
Real derfct6_2_P2_3D(const GeoVector &v)
Real fct2_P2tilde_3D(const GeoVector &v)
Real derfct1_1_Q2_2D(const GeoVector &v)
Real derfct9_2_P2_3D(const GeoVector &)
Real der2fct5_32_P2tilde_3D(const GeoVector &v)
Real der2fct6_32_P2tilde_3D(const GeoVector &v)
Real derfct2_2_P1_3D(const GeoVector &)
Real fct5_Q2_2D(const GeoVector &v)
Real der2fct8_23_P2_3D(const GeoVector &)
Real derfct2_3_Q1_3D(const GeoVector &v)
Real der2fct5_23_P1bubble_3D(const GeoVector &v)
Real fct1_RT0_1_TRIA_2D(const GeoVector &v)
======================================================================
Real derfct4_3_P2_3D(const GeoVector &v)
const ReferenceFEScalar feTetraP2("Lagrange P2 on a tetraedra", FE_P2_3D, TETRA, 1, 1, 0, 0, 10, 3, fct_P2_3D, derfct_P2_3D, der2fct_P2_3D, refcoor_P2_3D, STANDARD_PATTERN, &feTriaP2, &lagrangianTransform)
A class for a finite element on a manifold.
Real der2fct7_23_P2_3D(const GeoVector &)
Real derfct4_1_P1bubble_2D(const GeoVector &v)
Real derfct6_3_P2tilde_3D(const GeoVector &v)
Real derfct1_1_P1bubble_3D(const GeoVector &)
const QuadratureRule quadRuleTetra4pt(pt_tetra_4pt, 2, "Quadrature rule 4 points on a tetraedra", TETRA, 4, 2)
Real derfct7_1_Q1_3D(const GeoVector &v)
Real der2fct7_23_P2tilde_3D(const GeoVector &v)
Real derfct3_3_Q1_3D(const GeoVector &v)
const ReferenceFEScalar feTriaP1("Lagrange P1 on a triangle", FE_P1_2D, TRIANGLE, 1, 0, 0, 0, 3, 2, fct_P1_2D, derfct_P1_2D, der2fct_P1_2D, refcoor_P1_2D, STANDARD_PATTERN, &feSegP1, &lagrangianTransform)
Real fct1_P1_2D(const GeoVector &v)
const size_t QUAD_RULE_SEG_1PT
id of the quadrature rules on segments
Real derfct2_2_P1bubble_3D(const GeoVector &)
Real fct10_P2tilde_3D(const GeoVector &v)
QuadraturePoint(Real x, Real y, Real weight)
Full constructor for 2D.
Real der2fct8_11_Q1_3D(const GeoVector &)
Real der2fct7_12_Q2_2D(const GeoVector &v)
Real der2fctx_xx_P1_2D(const GeoVector &)
const size_t NB_QUAD_RULE_SEG
total number of quadrature rules on segments
const ReferenceFEHybrid feHexaRT0VdotNHyb("Hybrid RT0 elements on a hexaedra", FE_RT0_HYB_HEXA_3D, HEXA, 0, 0, 1, 0, 6, 3, 6, HybRT0HexaVdotNList, refcoor_RT0HYB_HEXA, STANDARD_PATTERN)
Real der2fct1_P0_2D(const GeoVector &)
Real derfct4_2_Q2_2D(const GeoVector &v)
Real der2fct9_33_P2tilde_3D(const GeoVector &v)
const GeometricMap geoLinearTetra("Linear mapping on a tetraedra", TETRA, 4, 3, fct_P1_3D, derfct_P1_3D, der2fct_P1_3D, refcoor_P1_3D, &geoLinearTria)
Real der2fct2_21_P2_2D(const GeoVector &)
Real der2fct3_31_Q1_3D(const GeoVector &v)
Real derfct6_1_Q2_2D(const GeoVector &v)
Real der2fct8_21_P2_3D(const GeoVector &)
Real der2fct3_23_Q1_3D(const GeoVector &v)
Real derfct1_3_P2_3D(const GeoVector &v)
Real derfct2_2_P2_3D(const GeoVector &)
Real fct1_RT0_1_TETRA_3D(const GeoVector &v)
======================================================================
Real derfct7_3_P2tilde_3D(const GeoVector &v)
const Real s5[4]
const Real B[4]
Real der2fct3_12_P2_2D(const GeoVector &)
Real der2fct9_21_P2tilde_3D(const GeoVector &v)
Real der2fctx_xx_P1bubble_3D(const GeoVector &)
const Real t7pt_x2
Real der2fct11_31_P2tilde_3D(const GeoVector &v)
#define QUAD_RULE_HEXA_1PT
id of the quadrature rules on quadrangles
Real der2fct5_11_P1bubble_3D(const GeoVector &v)
Real der2fct8_23_P2tilde_3D(const GeoVector &v)
Real fct3_RT0_1_TETRA_3D(const GeoVector &v)
const GeometricMap geoLinearTria("Linear mapping on a triangle", TRIANGLE, 3, 2, fct_P1_2D, derfct_P1_2D, der2fct_P1_2D, refcoor_P1_2D, &geoLinearSeg)
Real derfct4_2_Q1_2D(const GeoVector &v)
Real derfct4_1_Q1_3D(const GeoVector &v)
static const CurrentFEManifold BdFE_RT0_HYB_TRIA_2(feSegP0, geoLinearSeg, quadRuleSeg1pt, refcoor_HYB_TRIA_SEG_2, 1)
std::vector< Real > P1Bubble2DTransform(const std::vector< Real > &nodalValues)
Real der2fct7_32_P2_3D(const GeoVector &)
#define QUAD_RULE_HEXA_8PT
Real der2fct7_32_P2tilde_3D(const GeoVector &v)
Real derfct7_1_Q2_2D(const GeoVector &v)
const Real t7pt_w2
Real der2fct4_21_P2tilde_3D(const GeoVector &v)
Real derfct5_2_Q2_2D(const GeoVector &v)
Real der2fct2_33_Q1_3D(const GeoVector &)
Real der2fct6_11_Q2_2D(const GeoVector &v)
Real der2fct5_11_Q2_2D(const GeoVector &v)
Real fct1_Q0_2D(const GeoVector &)
static const QuadraturePoint pt_hexa_1pt[1]
Real fct2_Q1_2D(const GeoVector &v)
Real fct2_RT0_1_TETRA_3D(const GeoVector &v)
Real fct5_RT0_2_HEXA_3D(const GeoVector &v)
Real der2fct1_33_P2_3D(const GeoVector &)
Real der2fct6_13_P2tilde_3D(const GeoVector &v)
Real fct11_P2tilde_3D(const GeoVector &v)
Real der2fct2_11_Q2_2D(const GeoVector &v)
static const CurrentFEManifold BdFE_RT0_HYB_HEXA_1(feQuadQ0, geoBilinearQuad, quadRuleQuad1pt, refcoor_HYB_HEXA_FACE_1, 0)
const Real q4ptx3
Real derfct6_1_P2_2D(const GeoVector &v)
Real der2fct6_31_P2tilde_3D(const GeoVector &v)
const Real v5
Real der2fct10_22_P2_3D(const GeoVector &)
Real der2fct1_P0_3D(const GeoVector &)
static const QuadraturePoint pt_seg_3pt[3]
Real der2fct9_23_P2tilde_3D(const GeoVector &v)
Real der2fct4_22_P1bubble_2D(const GeoVector &v)
const Real C5
Real der2fct7_22_P2tilde_3D(const GeoVector &v)
Real der2fct2_21_P2tilde_3D(const GeoVector &v)
const Real t7pt_w0
Real der2fct5_33_Q1_3D(const GeoVector &)
Real derfct1_1_P2tilde_3D(const GeoVector &v)
Real der2fct7_33_P2tilde_3D(const GeoVector &v)
Real fct4_Q1_3D(const GeoVector &v)
Real fct2_DIV_RT0_TETRA_3D(const GeoVector &)
Real der2fct8_32_Q1_3D(const GeoVector &v)
Real der2fct9_22_Q2_2D(const GeoVector &v)
Real der2fct1_21_P2tilde_3D(const GeoVector &v)
static const QuadraturePoint pt_tria_4pt[4]
Real der2fct5_12_P2tilde_3D(const GeoVector &v)
Real der2fct1_31_Q1_3D(const GeoVector &v)
const QuadratureRule quadRuleNode1pt(pt_node_1pt, QUAD_RULE_NODE_1PT, "Gauss Legendre 1 point on a node", POINT, 1, 1)
static const QuadraturePoint pt_node_0pt[1]
static const QuadraturePoint pt_quad_4pt[4]
Real fct1_DIV_RT0_TETRA_3D(const GeoVector &)
static const QuadraturePoint pt_tetra_1pt[1]
static const CurrentFEManifold BdFE_RT0_HYB_HEXA_VdotN_3(feQuadQ0, geoBilinearQuad, quadRuleQuad1pt, refcoor_HYB_HEXA_FACE_3, 2, 1.)
Real der2fct4_13_P2tilde_3D(const GeoVector &v)
Real der2fct7_13_P2tilde_3D(const GeoVector &v)
static const QuadraturePoint pt_tria_3pt[3]
static const CurrentFEManifold BdFE_RT0_HYB_HEXA_VdotN_4(feQuadQ0, geoBilinearQuad, quadRuleQuad1pt, refcoor_HYB_HEXA_FACE_4, 3, 1.)
Real der2fct3_31_P2tilde_3D(const GeoVector &v)
Real der2fct10_21_P2tilde_3D(const GeoVector &v)
Real derfct2_3_P2_3D(const GeoVector &)
Real derfct2_2_Q1_2D(const GeoVector &v)
Real derfct10_3_P2tilde_3D(const GeoVector &v)
Real fct2_RT0_2_HEXA_3D(const GeoVector &)
Real fct5_DIV_RT0_HEXA_3D(const GeoVector &)
Real der2fct3_11_P2tilde_3D(const GeoVector &v)
Real derfct7_2_Q2_2D(const GeoVector &v)
#define NB_QUAD_RULE_HEXA
total number of quadrature rules in 3D on hexa
Real fct6_RT0_3_HEXA_3D(const GeoVector &v)
Real der2fct4_22_Q2_2D(const GeoVector &v)
Real der2fct3_32_P2_3D(const GeoVector &)
Real der2fct8_12_Q2_2D(const GeoVector &v)
Real der2fct6_22_P2tilde_3D(const GeoVector &v)
Real derfct2_2_P1_2D(const GeoVector &)
Real der2fct3_32_P2tilde_3D(const GeoVector &v)
Real der2fct7_11_P2tilde_3D(const GeoVector &v)
static const CurrentFEManifold * HybRT0TetraList[4]
Real der2fct6_33_Q1_3D(const GeoVector &)
static const CurrentFEManifold BdFE_RT0_HYB_HEXA_6(feQuadQ0, geoBilinearQuad, quadRuleQuad1pt, refcoor_HYB_HEXA_FACE_6, 5)
Real derfct11_3_P2tilde_3D(const GeoVector &v)
Real derfct1_2_P1_2D(const GeoVector &)
Real der2fct1_11_P2_3D(const GeoVector &)
Real fct9_Q2_2D(const GeoVector &v)
Real derfct9_3_P2_3D(const GeoVector &v)
Real der2fct6_21_Q1_3D(const GeoVector &v)
#define QUAD_RULE_TETRA_4PT
#define QUAD_RULE_TETRA_15PT
const GeometricMap geoQuadraticSeg("Quadratic mapping on a segment", LINE, 3, 1, fct_P2_1D, derfct_P2_1D, der2fct_P2_1D, refcoor_P2_1D, &geoLinearNode)
Real derfct4_3_Q1_3D(const GeoVector &v)
Real der2fct2_12_Q2_2D(const GeoVector &v)
Real fct2_RT0_2_TRIA_2D(const GeoVector &v)
Real derfct2_2_Q1_3D(const GeoVector &v)
void updateInverseJacobian(const UInt &iQuadPt)
std::vector< Real >(* ValuesToValuesFunction_Type)(const std::vector< Real > &)
Real der2fct4_23_P2_3D(const GeoVector &)
const Real q2ptw1
Real derfct10_2_P2_3D(const GeoVector &v)
Real der2fct9_32_P2_3D(const GeoVector &)
Real derfct1_2_P2_3D(const GeoVector &v)
Real derfct4_2_P1_3D(const GeoVector &)
const ReferenceFEScalar feTetraP0("Lagrange P0 on a tetraedra", FE_P0_3D, TETRA, 0, 0, 0, 1, 1, 3, fct_P0_3D, derfct_P0_3D, der2fct_P0_3D, refcoor_P0_3D, STANDARD_PATTERN, &feTriaP0, &lagrangianTransform)
Real derfct11_1_P2tilde_3D(const GeoVector &v)
#define NB_QUAD_RULE_QUAD
total number of quadrature rules in 2D on quadrangle
Real fct3_RT0_1_HEXA_3D(const GeoVector &)
static const CurrentFEManifold BdFE_RT0_HYB_HEXA_VdotN_1(feQuadQ0, geoBilinearQuad, quadRuleQuad1pt, refcoor_HYB_HEXA_FACE_1, 0, 1.)
Real derfct8_2_Q2_2D(const GeoVector &v)
Real der2fct4_11_P2tilde_3D(const GeoVector &v)
static const CurrentFEManifold BdFE_RT0_HYB_HEXA_2(feQuadQ0, geoBilinearQuad, quadRuleQuad1pt, refcoor_HYB_HEXA_FACE_2, 1)
Real der2fct2_11_P2_2D(const GeoVector &)
Real der2fct4_12_P2_2D(const GeoVector &)
static const QuadratureRule quad_rule_hexa[2]
Real der2fct10_13_P2_3D(const GeoVector &)
static const CurrentFEManifold BdFE_RT0_HYB_TETRA_VdotN_2(feTriaP0, geoLinearTria, quadRuleTria1pt, refcoor_HYB_TETRA_FACE_2, 1, 2.)
Real derfct7_2_P2tilde_3D(const GeoVector &v)
Real der2fct10_13_P2tilde_3D(const GeoVector &v)
Real der2fct8_11_Q2_2D(const GeoVector &v)
Real der2fct3_22_Q2_2D(const GeoVector &v)
Real der2fct6_22_P2_2D(const GeoVector &)
Real derfct6_1_P2_3D(const GeoVector &v)
Real der2fct9_13_P2_3D(const GeoVector &)
Real der2fct5_31_P2tilde_3D(const GeoVector &v)
Real der2fct8_12_P2_3D(const GeoVector &)
Real fct6_DIV_RT0_HEXA_3D(const GeoVector &)
Real der2fct1_Q0_3D(const GeoVector &)
const Real t7pt_w1
Real der2fct2_21_Q2_2D(const GeoVector &v)
Real fct1_Q0_3D(const GeoVector &)
Real der2fct5_33_P2tilde_3D(const GeoVector &v)
Real der2fct2_31_P2tilde_3D(const GeoVector &v)
Real fct6_P2_2D(const GeoVector &v)
const ReferenceFEHybrid feTetraRT0VdotNHyb("Hybrid RT0 elements on a tetrahedron", FE_RT0_HYB_TETRA_3D, TETRA, 0, 0, 1, 0, 4, 3, 4, HybRT0TetraVdotNList, refcoor_RT0HYB_TETRA, STANDARD_PATTERN)
static const QuadraturePoint pt_node_1pt[1]
Real derfct4_3_P1bubble_3D(const GeoVector &)
Real der2fct3_13_P2_3D(const GeoVector &)
static const CurrentFEManifold BdFE_RT0_HYB_HEXA_VdotN_6(feQuadQ0, geoBilinearQuad, quadRuleQuad1pt, refcoor_HYB_HEXA_FACE_6, 5, 1.)
Real derfct3_1_P2_1D(const GeoVector &v)
Real der2fct4_21_P2_3D(const GeoVector &)
const QuadratureRule quadRuleSeg4pt(pt_seg_4pt, QUAD_RULE_SEG_4PT, "Gauss Legendre 4 points on a segment", LINE, 4, 7)
Real derfct2_1_P2_2D(const GeoVector &v)
Real derfct3_1_P1bubble_2D(const GeoVector &)
Real derfct1_2_Q2_2D(const GeoVector &v)
Real derfct5_1_P2_3D(const GeoVector &v)
Real der2fct3_11_P2_1D(const GeoVector &)
const Real tet4ptx2
Real fct1_Q2_2D(const GeoVector &v)
Real derfct5_1_Q2_2D(const GeoVector &v)
Real der2fct5_22_P2tilde_3D(const GeoVector &v)
Real der2fct2_12_Q1_3D(const GeoVector &v)
Real der2fct5_23_P2tilde_3D(const GeoVector &v)
Real der2fct7_22_Q1_3D(const GeoVector &)
Real der2fct8_33_P2_3D(const GeoVector &)
const GeometricMap geoLinearNode("Mapping of a point", POINT, 1, 1, fct_P0_0D, derfct_P0_0D, der2fct_P0_0D, refcoor_P0_0D,(GeometricMap *) NULL)
Real der2fct10_33_P2_3D(const GeoVector &)
static const CurrentFEManifold BdFE_RT0_HYB_HEXA_5(feQuadQ0, geoBilinearQuad, quadRuleQuad1pt, refcoor_HYB_HEXA_FACE_5, 4)
const ReferenceFEScalar feTriaP0("Lagrange P0 on a triangle", FE_P0_2D, TRIANGLE, 0, 0, 1, 0, 1, 2, fct_P0_2D, derfct_P0_2D, der2fct_P0_2D, refcoor_P0_2D, STANDARD_PATTERN, &feSegP0, &lagrangianTransform)
const QuadratureRule quadRuleSeg2pt(pt_seg_2pt, QUAD_RULE_SEG_2PT, "Gauss Legendre 2 points on a segment", LINE, 2, 3)
#define NB_QUAD_RULE_TRIA
total number of quadrature rules in 2D on triangle
const ReferenceFEHdiv feHexaRT0("Lagrange RT0 on a hexaedra", FE_RT0_HEXA_3D, HEXA, 0, 0, 1, 0, 6, 3, fct_RT0_HEXA_3D, fct_DIV_RT0_HEXA_3D, refcoor_RT0_HEXA_3D, STANDARD_PATTERN, &feQuadQ0)
Real derfct2_2_P1bubble_2D(const GeoVector &)
Real der2fct2_13_P2tilde_3D(const GeoVector &v)
Real fct2_RT0_1_TRIA_2D(const GeoVector &v)
Real der2fct6_22_P2_3D(const GeoVector &)
static const QuadraturePoint pt_seg_1pt[1]
Real der2fct4_11_P2_2D(const GeoVector &)
Real der2fct10_12_P2_3D(const GeoVector &)
Real derfct3_2_P1bubble_3D(const GeoVector &)
Real fct3_DIV_RT0_HEXA_3D(const GeoVector &)
Real der2fct1_31_P2_3D(const GeoVector &)
Real der2fct8_11_P2tilde_3D(const GeoVector &v)
const QuadratureRule quadRuleQuad9pt(pt_quad_9pt, 3, "Quadrature rule 9 points on a quadrangle", QUAD, 9, 5)
const Real u5
Real der2fct4_11_Q2_2D(const GeoVector &v)
Real derfct3_2_P1_3D(const GeoVector &)
Real der2fct9_22_P2_3D(const GeoVector &)
Real derfct1_1_P2_1D(const GeoVector &v)
Real derfct6_1_P2tilde_3D(const GeoVector &v)
Real der2fct5_32_P1bubble_3D(const GeoVector &v)
Real der2fct9_31_P2tilde_3D(const GeoVector &v)
Real der2fct11_21_P2tilde_3D(const GeoVector &v)
const ReferenceFEScalar feTetraP1bubble("Lagrange P1bubble on a tetraedra", FE_P1bubble_3D, TETRA, 1, 0, 0, 1, 5, 3, fct_P1bubble_3D, derfct_P1bubble_3D, der2fct_P1bubble_3D, refcoor_P1bubble_3D, STANDARD_PATTERN, &feTriaP1, &P1Bubble3DTransform)
Real der2fct1_33_Q1_3D(const GeoVector &)
Real derfct4_1_Q2_2D(const GeoVector &v)
Real der2fct6_21_Q2_2D(const GeoVector &v)
Real derfct7_1_P2_3D(const GeoVector &v)
static const CurrentFEManifold BdFE_RT0_HYB_TETRA_VdotN_1(feTriaP0, geoLinearTria, quadRuleTria1pt, refcoor_HYB_TETRA_FACE_1, 0, 2.)
Real der2fct1_11_P2tilde_3D(const GeoVector &v)
Real der2fct2_23_Q1_3D(const GeoVector &v)
#define NB_BDFE_RT0_HYB_TRIA
Total number of Boundary elements for the hybrid MFE for TRIA (= Number of faces. common for RT0...
Real der2fct4_23_Q1_3D(const GeoVector &v)
Real fct2_P2_3D(const GeoVector &v)
Real der2fct9_32_P2tilde_3D(const GeoVector &v)
Real fct1_RT0_1_HEXA_3D(const GeoVector &)
======================================================================
Real derfct1_1_Q1_3D(const GeoVector &v)
Real der2fct5_21_P2_3D(const GeoVector &)
Real der2fct9_13_P2tilde_3D(const GeoVector &v)
Real derfct3_2_Q1_2D(const GeoVector &v)
const size_t QUAD_RULE_SEG_2PT
Real derfct1_P0_3D(const GeoVector &)
Real der2fct3_22_Q1_3D(const GeoVector &)
Real der2fct5_21_P1bubble_3D(const GeoVector &v)
Real derfct5_3_P2tilde_3D(const GeoVector &v)
const QuadratureRule quadRuleQuad1pt(pt_quad_1pt, 1, "Quadrature rule 1 point on a quadrangle", QUAD, 1, 1)
Real derfct7_3_P2_3D(const GeoVector &v)
Real fct1_Q1_2D(const GeoVector &v)
Real derfct5_2_P2_3D(const GeoVector &v)
const GeometricMap geoLinearSeg("Linear mapping on a segment", LINE, 2, 1, fct_P1_1D, derfct_P1_1D, der2fct_P1_1D, refcoor_P1_1D, &geoLinearNode)
Real fct4_RT0_1_TETRA_3D(const GeoVector &v)
const ReferenceFEScalar feSegP1("Lagrange P1 on a segment", FE_P1_1D, LINE, 1, 0, 0, 0, 2, 1, fct_P1_1D, derfct_P1_1D, der2fct_P1_1D, refcoor_P1_1D, STANDARD_PATTERN, &fePointP0, &lagrangianTransform)
Real der2fct9_12_Q2_2D(const GeoVector &v)
const ReferenceFEHdiv feTetraRT0("Lagrange RT0 on a tetraedra", FE_RT0_TETRA_3D, TETRA, 0, 0, 1, 0, 4, 3, fct_RT0_TETRA_3D, fct_DIV_RT0_TETRA_3D, refcoor_RT0_TETRA_3D, STANDARD_PATTERN, &feTriaP0)
Real fct4_RT0_2_HEXA_3D(const GeoVector &)
const int QUAD_RULE_NODE_1PT
id of the quadrature rules on nodes
Real fct3_P2tilde_3D(const GeoVector &v)
const Real r[4]
const Real q4ptw4
Real derfct2_1_P1_2D(const GeoVector &)
Real derfct9_1_Q2_2D(const GeoVector &v)
Real derfct4_2_P2tilde_3D(const GeoVector &v)
Real derfct3_3_P1_3D(const GeoVector &)
Real derfct5_3_P2_3D(const GeoVector &v)
Real fct1_RT0_3_TETRA_3D(const GeoVector &v)
Real der2fct9_11_P2_3D(const GeoVector &)
Real derfct11_2_P2tilde_3D(const GeoVector &v)
Real der2fct5_32_P2_3D(const GeoVector &)
Real fct3_RT0_3_HEXA_3D(const GeoVector &)
Real derfct3_2_P1_2D(const GeoVector &)
Real der2fct1_P1_1D(const GeoVector &)
std::vector< Real > lagrangianTransform(const std::vector< Real > &values)
static const CurrentFEManifold * HybRT0HexaList[6]
Real der2fct2_21_Q1_3D(const GeoVector &v)
Real derfct1_1_Q1_2D(const GeoVector &v)
static const QuadraturePoint pt_quad_1pt[1]
Real fct1_RT0_3_HEXA_3D(const GeoVector &v)
const QuadratureRule quadRuleTetra5pt(pt_tetra_5pt, 4, "Quadrature rule 5 points on a tetraedra", TETRA, 5, 3)
Real fct8_P2tilde_3D(const GeoVector &v)
Real der2fct6_11_P2_2D(const GeoVector &)
Real der2fct3_33_Q1_3D(const GeoVector &)
Real der2fct2_22_Q2_2D(const GeoVector &v)
Real der2fct5_21_Q2_2D(const GeoVector &v)
Real derfct3_2_P2tilde_3D(const GeoVector &v)
Real der2fct2_31_Q1_3D(const GeoVector &v)
Real fct1_RT0_2_TRIA_2D(const GeoVector &v)
Real derfct3_1_P1_3D(const GeoVector &)
Real derfct6_3_Q1_3D(const GeoVector &v)
const Real t[4]
Real derfct4_1_P2_3D(const GeoVector &)
Real derfct5_1_P2_2D(const GeoVector &v)
Real derfct9_1_P2_3D(const GeoVector &v)
Real derfct1_2_P2tilde_3D(const GeoVector &v)
static const CurrentFEManifold BdFE_RT0_HYB_TETRA_1(feTriaP0, geoLinearTria, quadRuleTria1pt, refcoor_HYB_TETRA_FACE_1, 0)
Real der2fct7_32_Q1_3D(const GeoVector &v)
Real der2fct1_23_P2tilde_3D(const GeoVector &v)
Real fct5_RT0_1_HEXA_3D(const GeoVector &)
Real fct5_P2_2D(const GeoVector &v)
QuadraturePoint - Simple container for a point of a quadrature rule.
Real der2fct3_11_P2_2D(const GeoVector &)
Real der2fct7_21_P2tilde_3D(const GeoVector &v)
Real der2fct11_12_P2tilde_3D(const GeoVector &v)
Real der2fct5_11_P2_3D(const GeoVector &)
Real der2fct4_11_P2_3D(const GeoVector &)
Real der2fct3_12_Q2_2D(const GeoVector &v)
static const CurrentFEManifold * HybRT0TriaVdotNList[3]
const ReferenceFEScalar feSegP2("Lagrange P2 on a segment", FE_P2_1D, LINE, 1, 1, 0, 0, 3, 1, fct_P2_1D, derfct_P2_1D, der2fct_P2_1D, refcoor_P2_1D, STANDARD_PATTERN, &fePointP0, &lagrangianTransform)
Real der2fct4_23_P2tilde_3D(const GeoVector &v)
const ReferenceFEHybrid feTetraRT0Hyb("Hybrid RT0 elements on a tetrahedron", FE_RT0_HYB_TETRA_3D, TETRA, 0, 0, 1, 0, 4, 3, 4, HybRT0TetraList, refcoor_RT0HYB_TETRA, STANDARD_PATTERN)
Real derfct10_1_P2tilde_3D(const GeoVector &v)
static const CurrentFEManifold BdFE_RT0_HYB_TRIA_VdotN_3(feSegP0, geoLinearSeg, quadRuleSeg1pt, refcoor_HYB_TRIA_SEG_3, 2, 1.)
Real der2fct6_12_P2_3D(const GeoVector &)
static const QuadraturePoint pt_quad_16pt[16]
Real der2fctx_xx_P1bubble_2D(const GeoVector &)
const ReferenceFEHybrid feTriaRT0VdotNHyb("Hybrid RT0 elements on a triangle", FE_RT0_HYB_TRIA_2D, TRIANGLE, 0, 1, 0, 0, 3, 2, 3, HybRT0TriaVdotNList, refcoor_RT0HYB_TRIA, STANDARD_PATTERN)
Real der2fct6_21_P2_3D(const GeoVector &)
#define NB_QUAD_RULE_TETRA
total number of quadrature rules in 3D on tetraedra
Real der2fct8_31_P2_3D(const GeoVector &)
Real der2fct3_11_P2_3D(const GeoVector &)
Real derfct1_3_P1bubble_3D(const GeoVector &)
Real der2fct3_23_P2tilde_3D(const GeoVector &v)
Real fct4_RT0_3_TETRA_3D(const GeoVector &v)
Real fct3_RT0_2_TETRA_3D(const GeoVector &v)
Real fct1_RT0_2_HEXA_3D(const GeoVector &)
Real der2fct5_12_Q2_2D(const GeoVector &v)
Real der2fct4_31_P2_3D(const GeoVector &)
Real derfct2_1_P1bubble_2D(const GeoVector &)
Real derfct1_P0_0D(const GeoVector &)
Real der2fct7_11_P2_3D(const GeoVector &)
Real fct3_RT0_2_HEXA_3D(const GeoVector &v)
Real fct7_P2tilde_3D(const GeoVector &v)
Real der2fct1_11_Q2_2D(const GeoVector &v)
const Real r5
Real der2fct1_13_P2tilde_3D(const GeoVector &v)
Real der2fct5_11_P2tilde_3D(const GeoVector &v)
Real derfct1_1_P1_3D(const GeoVector &)
Real derfct9_2_P2tilde_3D(const GeoVector &v)
Real der2fct2_13_Q1_3D(const GeoVector &v)
const ReferenceFEScalar feTriaP2("Lagrange P2 on a triangle", FE_P2_2D, TRIANGLE, 1, 1, 0, 0, 6, 2, fct_P2_2D, derfct_P2_2D, der2fct_P2_2D, refcoor_P2_2D, STANDARD_PATTERN, &feSegP2, &lagrangianTransform)
static const CurrentFEManifold * HybRT0TetraVdotNList[4]
Real fct3_P2_1D(const GeoVector &v)
Real der2fct1_P0_0D(const GeoVector &)
Real der2fct2_33_P2tilde_3D(const GeoVector &v)
const QuadratureRule quadRuleSeg1pt(pt_seg_1pt, QUAD_RULE_SEG_1PT, "Gauss Legendre 1 point on a segment", LINE, 1, 1)
QuadraturePoint(Real x, Real y, Real z, Real weight)
Full constructor for 3D.
Real der2fct7_31_Q1_3D(const GeoVector &v)
Real der2fct9_22_P2tilde_3D(const GeoVector &v)
Real fct7_Q1_3D(const GeoVector &v)
Real derfct7_2_P2_3D(const GeoVector &v)
Real der2fct8_22_P2tilde_3D(const GeoVector &v)
const Real s[4]
Real der2fct6_21_P2_2D(const GeoVector &)
Real der2fct4_11_P1bubble_2D(const GeoVector &v)
const ReferenceFEHdiv feTriaRT0("Lagrange RT0 on a triangle", FE_RT0_TRIA_2D, TRIANGLE, 0, 1, 0, 0, 3, 2, fct_RT0_TRIA_2D, fct_DIV_RT0_TRIA_2D, refcoor_RT0_TRIA_2D, STANDARD_PATTERN, &feSegP0)
Real fct2_RT0_3_TETRA_3D(const GeoVector &v)
std::vector< Real > P1Bubble3DTransform(const std::vector< Real > &nodalValues)
Real fct3_DIV_RT0_TETRA_3D(const GeoVector &)
Real der2fct6_31_P2_3D(const GeoVector &)
Real der2fct6_23_Q1_3D(const GeoVector &v)
Real der2fct5_32_Q1_3D(const GeoVector &v)
Real derfct7_2_Q1_3D(const GeoVector &v)
Real der2fct2_22_P2_2D(const GeoVector &)
Real der2fct1_13_Q1_3D(const GeoVector &v)
#define QUAD_RULE_QUAD_9PT
Real der2fct9_11_Q2_2D(const GeoVector &v)
Real fct4_DIV_RT0_TETRA_3D(const GeoVector &)
Real fct3_Q1_2D(const GeoVector &v)
Real derfct2_1_P1bubble_3D(const GeoVector &)
Real fct4_RT0_3_HEXA_3D(const GeoVector &)
Real der2fct8_13_P2tilde_3D(const GeoVector &v)
const ReferenceFEHybrid feHexaRT0Hyb("Hybrid RT0 elements on a hexaedra", FE_RT0_HYB_HEXA_3D, HEXA, 0, 0, 1, 0, 6, 3, 6, HybRT0HexaList, refcoor_RT0HYB_HEXA, STANDARD_PATTERN)
Real der2fct3_11_Q2_2D(const GeoVector &v)
Real der2fct5_12_Q1_3D(const GeoVector &v)
Real der2fct11_13_P2tilde_3D(const GeoVector &v)
Real der2fct1_33_P2tilde_3D(const GeoVector &v)
Real fct1_P2_3D(const GeoVector &v)
Real derfct4_1_P1_3D(const GeoVector &)
Real der2fct7_11_Q2_2D(const GeoVector &v)
Real der2fct8_12_P2tilde_3D(const GeoVector &v)
Real derfct8_3_P2tilde_3D(const GeoVector &v)
Real fct2_P1_2D(const GeoVector &v)
Real fct1_DIV_RT0_HEXA_3D(const GeoVector &)
Real fct8_Q1_3D(const GeoVector &v)
Real der2fct9_21_Q2_2D(const GeoVector &v)
const Real q4ptw1
Real fct3_P1_3D(const GeoVector &v)
const Real tet5ptx1
Real derfct9_2_Q2_2D(const GeoVector &v)
Real derfct3_3_P1bubble_3D(const GeoVector &)
static const CurrentFEManifold BdFE_RT0_HYB_TETRA_4(feTriaP0, geoLinearTria, quadRuleTria1pt, refcoor_HYB_TETRA_FACE_4, 3)
Real fct4_RT0_2_TETRA_3D(const GeoVector &v)
Real der2fct4_22_Q1_3D(const GeoVector &)
ReferenceFEHdiv - Short description of the class.
Real derfct3_1_Q2_2D(const GeoVector &v)
const ReferenceFEHybrid feTriaRT0Hyb("Hybrid RT0 elements on a triangle", FE_RT0_HYB_TRIA_2D, TRIANGLE, 0, 1, 0, 0, 3, 2, 3, HybRT0TriaList, refcoor_RT0HYB_TRIA, STANDARD_PATTERN)
Real der2fct8_32_P2tilde_3D(const GeoVector &v)
Real fct3_P1bubble_2D(const GeoVector &v)
Real der2fct8_33_P2tilde_3D(const GeoVector &v)
Real der2fct5_22_Q1_3D(const GeoVector &)
Real der2fct8_21_Q1_3D(const GeoVector &v)
const Real q4ptw3
Real derfct2_3_P1_3D(const GeoVector &)
Real der2fct7_33_Q1_3D(const GeoVector &)
Real derfct1_1_P2_2D(const GeoVector &v)
Real der2fct8_13_Q1_3D(const GeoVector &v)
Real der2fct2_12_P2tilde_3D(const GeoVector &v)
Real der2fct8_12_Q1_3D(const GeoVector &v)
const Real tet4ptx1
Real derfct3_2_P2_3D(const GeoVector &v)
Real der2fct6_13_P2_3D(const GeoVector &)
double Real
Generic real data.
Definition: LifeV.hpp:175
Real der2fct4_13_Q1_3D(const GeoVector &v)
Real der2fct6_32_Q1_3D(const GeoVector &v)
Real der2fct5_13_P2_3D(const GeoVector &)
Real der2fct5_21_Q1_3D(const GeoVector &v)
Real der2fct5_22_P1bubble_3D(const GeoVector &v)
Real fct2_RT0_3_HEXA_3D(const GeoVector &)
Real fct1_P1bubble_2D(const GeoVector &v)
Real fct4_Q1_2D(const GeoVector &v)
#define QUAD_RULE_TRIA_6PT
const ReferenceFEScalar feTetraP1("Lagrange P1 on a tetraedra", FE_P1_3D, TETRA, 1, 0, 0, 0, 4, 3, fct_P1_3D, derfct_P1_3D, der2fct_P1_3D, refcoor_P1_3D, STANDARD_PATTERN, &feTriaP1, &lagrangianTransform)
Real derfct2_1_P1_1D(const GeoVector &)
Real der2fct6_11_Q1_3D(const GeoVector &)
Real derfct7_1_P2tilde_3D(const GeoVector &v)
Real der2fct5_12_P2_3D(const GeoVector &)
static const CurrentFEManifold BdFE_RT0_HYB_TETRA_2(feTriaP0, geoLinearTria, quadRuleTria1pt, refcoor_HYB_TETRA_FACE_2, 1)
Real derfct6_2_P2tilde_3D(const GeoVector &v)
Real der2fct4_12_Q2_2D(const GeoVector &v)
Real derfct1_Q0_3D(const GeoVector &)
Real derfct8_1_Q2_2D(const GeoVector &v)
const QuadratureRule quadRuleTria3pt(pt_tria_3pt, 2, "Quadrature rule 3 points on a triangle", TRIANGLE, 3, 2)
Real der2fct1_12_Q1_3D(const GeoVector &v)
Real der2fct1_32_P2_3D(const GeoVector &)
#define QUAD_RULE_TRIA_1PT
id of the quadrature rules on triangles
Real der2fct6_12_P2tilde_3D(const GeoVector &v)
Real der2fct4_31_P2tilde_3D(const GeoVector &v)
Real der2fct8_21_Q2_2D(const GeoVector &v)
Real derfct5_2_P1bubble_3D(const GeoVector &v)
const GeometricMap geoBiquadraticQuad("Biquadratic mapping on a quadrangle", QUAD, 9, 2, fct_Q2_2D, derfct_Q2_2D, der2fct_Q2_2D, refcoor_Q2_2D, &geoQuadraticSeg)
Real der2fct5_33_P2_3D(const GeoVector &)
Real der2fct3_33_P2tilde_3D(const GeoVector &v)
Real derfct8_1_P2_3D(const GeoVector &v)
Real fct2_P2_1D(const GeoVector &v)
Real derfct1_2_Q1_2D(const GeoVector &v)
const Real t6pt_x1
Real der2fct8_22_P2_3D(const GeoVector &)
Real derfct4_2_P1bubble_3D(const GeoVector &)
Real der2fct2_32_P2tilde_3D(const GeoVector &v)
static const QuadratureRule quad_rule_tria[5]
Real der2fct8_33_Q1_3D(const GeoVector &)
const QuadratureRule quadRuleTetra1pt(pt_tetra_1pt, 1, "Quadrature rule 1 point on a tetraedra", TETRA, 1, 1)
const GeometricMap geoBilinearHexa("Bilinear mapping on an hexaedra", HEXA, 8, 3, fct_Q1_3D, derfct_Q1_3D, der2fct_Q1_3D, refcoor_Q1_3D, &geoBilinearQuad)
Real fct3_P2_3D(const GeoVector &v)
Real der2fct3_12_P2tilde_3D(const GeoVector &v)
Real derfct5_2_Q1_3D(const GeoVector &v)
Real der2fct3_21_P2_3D(const GeoVector &)
Real der2fct1_12_P2_2D(const GeoVector &)
static const QuadraturePoint pt_quad_9pt[9]
Real derfct4_1_P2tilde_3D(const GeoVector &v)
static const QuadraturePoint pt_tetra_5pt[5]
Real der2fct6_31_Q1_3D(const GeoVector &v)
const QuadratureRule quadRuleTria7pt(pt_tria_7pt, 5, "Quadrature rule 7 points on a triangle", TRIANGLE, 7, 5)
const GeometricMap geoBilinearQuad("Bilinear mapping on a quadrangle", QUAD, 4, 2, fct_Q1_2D, derfct_Q1_2D, der2fct_Q1_2D, refcoor_Q1_2D, &geoLinearSeg)
const QuadratureRule quadRuleTria6pt(pt_tria_6pt, 4, "Quadrature rule 6 points on a triangle", TRIANGLE, 6, 4)
Real derfct3_1_P2tilde_3D(const GeoVector &v)
Real der2fct1_22_P2_3D(const GeoVector &)
Real der2fct4_32_P2_3D(const GeoVector &)
Real der2fct3_13_Q1_3D(const GeoVector &v)
Real der2fct7_31_P2_3D(const GeoVector &)
Real fct5_Q1_3D(const GeoVector &v)
const Real t4pt_xb1
static const CurrentFEManifold BdFE_RT0_HYB_HEXA_3(feQuadQ0, geoBilinearQuad, quadRuleQuad1pt, refcoor_HYB_HEXA_FACE_3, 2)
const size_t NB_QUAD_RULE_NODE
total number of quadrature rules on segments
const int QUAD_RULE_DUMMY
id of the quadrature rules on nodes
Real der2fct10_23_P2_3D(const GeoVector &)
Real der2fct7_11_Q1_3D(const GeoVector &)
Real fct1_P1_1D(const GeoVector &v)
const Real q3ptx2
static const CurrentFEManifold BdFE_RT0_HYB_TRIA_VdotN_2(feSegP0, geoLinearSeg, quadRuleSeg1pt, refcoor_HYB_TRIA_SEG_2, 1, 1./std::sqrt(2.))
Real der2fct1_22_P2_2D(const GeoVector &)
Real derfct1_1_P2_3D(const GeoVector &v)
Real fct5_P2tilde_3D(const GeoVector &v)
Real der2fct8_22_Q2_2D(const GeoVector &v)
Real derfct3_1_Q1_2D(const GeoVector &v)
static const QuadraturePoint pt_tria_6pt[6]
Real der2fct10_31_P2tilde_3D(const GeoVector &v)
const Real t7pt_x1
Real der2fct7_21_Q2_2D(const GeoVector &v)
Real derfct8_2_Q1_3D(const GeoVector &v)
Real der2fct1_12_Q2_2D(const GeoVector &v)
Real der2fct7_12_P2tilde_3D(const GeoVector &v)
Real der2fct8_11_P2_3D(const GeoVector &)
Real fct4_RT0_1_HEXA_3D(const GeoVector &v)
Real der2fct9_11_P2tilde_3D(const GeoVector &v)
const Real q4ptw2
Real der2fct1_P0_1D(const GeoVector &)
Real der2fct3_33_P2_3D(const GeoVector &)
static const CurrentFEManifold BdFE_RT0_HYB_TRIA_1(feSegP0, geoLinearSeg, quadRuleSeg1pt, refcoor_HYB_TRIA_SEG_1, 0)
Real derfct8_3_P2_3D(const GeoVector &v)
Real fct4_P2_2D(const GeoVector &v)
Real derfct2_2_P2_2D(const GeoVector &)
Real derfct2_3_P2tilde_3D(const GeoVector &v)
Real fct8_P2_3D(const GeoVector &v)
const ReferenceFEScalar fePointP0("Lagrange P0 on a point", FE_P0_0D, POINT, 1, 0, 0, 0, 1, 1, fct_P0_0D, derfct_P0_0D, der2fct_P0_0D, refcoor_P0_0D, STANDARD_PATTERN,(ReferenceFE *) NULL, &lagrangianTransform)
Real derfct2_1_P1_3D(const GeoVector &)
Real derfct3_2_P1bubble_2D(const GeoVector &)
const ReferenceFEScalar feQuadQ2("Lagrange Q2 on a quadrangle", FE_Q2_2D, QUAD, 1, 1, 1, 0, 9, 2, fct_Q2_2D, derfct_Q2_2D, der2fct_Q2_2D, refcoor_Q2_2D, STANDARD_PATTERN, &feSegP2, &lagrangianTransform)
const ReferenceFEScalar feQuadQ0("Lagrange Q0 on a quadrangle", FE_Q0_2D, QUAD, 0, 0, 1, 0, 1, 2, fct_Q0_2D, derfct_Q0_2D, der2fct_Q0_2D, refcoor_Q0_2D, STANDARD_PATTERN, &feSegP0, &lagrangianTransform)
Real derfct2_1_P2_1D(const GeoVector &v)
Real derfct1_1_P0_1D(const GeoVector &)
Real der2fct4_32_Q1_3D(const GeoVector &v)
Real der2fct4_33_P2_3D(const GeoVector &)
Real derfct4_2_P1bubble_2D(const GeoVector &v)
Real der2fct2_32_Q1_3D(const GeoVector &v)
Real derfct8_2_P2_3D(const GeoVector &v)
Real fct1_Q1_3D(const GeoVector &v)
Real der2fct5_11_P2_2D(const GeoVector &)
Real fct1_P2tilde_3D(const GeoVector &v)
Real derfct3_2_P2_2D(const GeoVector &v)
#define QUAD_RULE_TETRA_4PT_NODAL
Real fct4_P1bubble_2D(const GeoVector &v)
const Real B5[2]
Real derfct1_1_P1_1D(const GeoVector &)
Real der2fct6_23_P2_3D(const GeoVector &)
const ReferenceFEScalar feHexaQ1("Lagrange Q1 on a hexaedra", FE_Q1_3D, HEXA, 1, 0, 0, 0, 8, 3, fct_Q1_3D, derfct_Q1_3D, der2fct_Q1_3D, refcoor_Q1_3D, STANDARD_PATTERN, &feQuadQ1, &lagrangianTransform)
Real derfct10_1_P2_3D(const GeoVector &)
const ReferenceFEScalar feTetraP2tilde("Lagrange P2tilde on a tetraedra", FE_P2tilde_3D, TETRA, 1, 1, 0, 1, 11, 3, fct_P2tilde_3D, derfct_P2tilde_3D, der2fct_P2tilde_3D, refcoor_P2tilde_3D, STANDARD_PATTERN, &feTriaP2, &lagrangianTransform)
Real der2fct3_22_P2_3D(const GeoVector &)
Real der2fct2_12_P2_3D(const GeoVector &)
const Real q3ptw2
Real fct5_P2_3D(const GeoVector &v)
Real fct2_DIV_RT0_HEXA_3D(const GeoVector &)
Real derfct3_2_Q2_2D(const GeoVector &v)
Real der2fct10_23_P2tilde_3D(const GeoVector &v)
static const CurrentFEManifold BdFE_RT0_HYB_TRIA_3(feSegP0, geoLinearSeg, quadRuleSeg1pt, refcoor_HYB_TRIA_SEG_3, 2)
Real derfct1_1_P1_2D(const GeoVector &)
const Real t4pt_w1
Real derfct5_1_P1bubble_3D(const GeoVector &v)
const Real tet5ptx3
const Real q3ptw3
Real derfct6_1_Q1_3D(const GeoVector &v)
Real fct4_Q2_2D(const GeoVector &v)
Real derfct3_3_P2tilde_3D(const GeoVector &v)
Real der2fct2_22_P2tilde_3D(const GeoVector &v)
const Real q2ptx1
const Real t6pt_w2
Real fct3_DIV_RT0_TRIA_2D(const GeoVector &)
Real der2fct8_22_Q1_3D(const GeoVector &)
Real der2fct5_12_P1bubble_3D(const GeoVector &v)
Real derfct5_1_Q1_3D(const GeoVector &v)
Real fct1_P2_2D(const GeoVector &v)
Real derfct2_1_P2_3D(const GeoVector &v)
static const QuadraturePoint pt_seg_2pt[2]
Real fct6_Q1_3D(const GeoVector &v)
Real fct4_DIV_RT0_HEXA_3D(const GeoVector &)
Real der2fct11_22_P2tilde_3D(const GeoVector &v)
Real derfct8_1_P2tilde_3D(const GeoVector &v)
Real fct2_Q1_3D(const GeoVector &v)
Real der2fct10_11_P2tilde_3D(const GeoVector &v)
Real der2fct9_31_P2_3D(const GeoVector &)
Real fct1_P0_3D(const GeoVector &)
Real der2fct5_22_P2_3D(const GeoVector &)
Real der2fct7_22_P2_3D(const GeoVector &)
Real derfct1_2_P1_3D(const GeoVector &)
Real derfct3_3_P2_3D(const GeoVector &)
const QuadratureRule quadRuleHexa1pt(pt_hexa_1pt, 1, "Quadrature rule 1 point on a hexa", HEXA, 1, 1)
Real derfct5_2_P2_2D(const GeoVector &v)
static const CurrentFEManifold BdFE_RT0_HYB_TETRA_VdotN_3(feTriaP0, geoLinearTria, quadRuleTria1pt, refcoor_HYB_TETRA_FACE_3, 2, 2./std::sqrt(3.))
const QuadratureRule quadRuleHexa8pt(pt_hexa_8pt, 2, "Quadrature rule 8 points on a hexa", HEXA, 8, 3)
const Real t7pt_x0
Real der2fct1_13_P2_3D(const GeoVector &)
const Real t4pt_w2
Real der2fct1_12_P2tilde_3D(const GeoVector &v)
Real derfct6_2_Q1_3D(const GeoVector &v)
Real fct2_RT0_2_TETRA_3D(const GeoVector &v)
Real der2fct5_21_P2tilde_3D(const GeoVector &v)
Real fct1_P1_3D(const GeoVector &v)
QuadratureRule - The basis class for storing and accessing quadrature rules.
Real fct3_RT0_1_TRIA_2D(const GeoVector &v)
Real der2fct3_32_Q1_3D(const GeoVector &v)
Real der2fct2_12_P2_2D(const GeoVector &)
static const CurrentFEManifold BdFE_RT0_HYB_HEXA_4(feQuadQ0, geoBilinearQuad, quadRuleQuad1pt, refcoor_HYB_HEXA_FACE_4, 3)
Real derfct1_Q0_2D(const GeoVector &)
static const CurrentFEManifold BdFE_RT0_HYB_TETRA_VdotN_4(feTriaP0, geoLinearTria, quadRuleTria1pt, refcoor_HYB_TETRA_FACE_4, 3, 2.)
Real derfct3_1_P1_2D(const GeoVector &)
#define NB_BDFE_RT0_HYB_TETRA
Total number of Boundary elements for the hybrid MFE for TETRA (= Number of faces. common for RT0,RT1...)
Real fct6_RT0_1_HEXA_3D(const GeoVector &)
Real der2fct10_22_P2tilde_3D(const GeoVector &v)
Real der2fct1_11_P2_2D(const GeoVector &)
#define QUAD_RULE_TRIA_4PT
Real der2fct8_23_Q1_3D(const GeoVector &v)
#define NB_BDFE_HYB_HEXA
Total number of Boundary elements for the hybrid MFE for HEXA (= Number of faces, common for RT0...
Real der2fct8_21_P2tilde_3D(const GeoVector &v)
#define QUAD_RULE_QUAD_1PT
id of the quadrature rules on quadrangles
Real derfct4_1_P2_2D(const GeoVector &v)
Real der2fct6_22_Q2_2D(const GeoVector &v)
Real der2fct3_21_Q1_3D(const GeoVector &v)
Real der2fct2_11_P2tilde_3D(const GeoVector &v)
Real der2fct1_11_P2_1D(const GeoVector &)
Real derfct1_2_P1bubble_3D(const GeoVector &)
Real derfct4_3_P1_3D(const GeoVector &)
Real fct3_P2_2D(const GeoVector &v)
Real der2fct3_23_P2_3D(const GeoVector &)
Real der2fct2_22_Q1_3D(const GeoVector &)
Real der2fct2_33_P2_3D(const GeoVector &)
static const CurrentFEManifold * HybRT0HexaVdotNList[6]
Real derfct2_1_Q1_3D(const GeoVector &v)
Real der2fct3_22_P2_2D(const GeoVector &)
Real fct6_P2_3D(const GeoVector &v)
Real derfct1_3_P2tilde_3D(const GeoVector &v)
Real der2fct4_12_P2tilde_3D(const GeoVector &v)
const ReferenceFEScalar feQuadQ1("Lagrange Q1 on a quadrangle", FE_Q1_2D, QUAD, 1, 0, 0, 0, 4, 2, fct_Q1_2D, derfct_Q1_2D, der2fct_Q1_2D, refcoor_Q1_2D, STANDARD_PATTERN, &feSegP1, &lagrangianTransform)
Real der2fct1_23_P2_3D(const GeoVector &)
Real der2fct4_22_P2_2D(const GeoVector &)
Real derfct6_3_P2_3D(const GeoVector &)
static const CurrentFEManifold BdFE_RT0_HYB_HEXA_VdotN_2(feQuadQ0, geoBilinearQuad, quadRuleQuad1pt, refcoor_HYB_HEXA_FACE_2, 1, 1.)
Real der2fct1_21_Q2_2D(const GeoVector &v)
Real derfct10_2_P2tilde_3D(const GeoVector &v)
Real derfct4_2_P2_2D(const GeoVector &v)
const QuadratureRule quadRuleTria1pt(pt_tria_1pt, 1, "Quadrature rule 1 point on a triangle", TRIANGLE, 1, 1)
Real der2fct4_21_P1bubble_2D(const GeoVector &v)
Real der2fct5_22_Q2_2D(const GeoVector &v)
Real fct10_P2_3D(const GeoVector &v)
Real fct6_RT0_2_HEXA_3D(const GeoVector &)
Real derfct8_3_Q1_3D(const GeoVector &v)
Real der2fct1_23_Q1_3D(const GeoVector &v)
Real der2fct1_21_Q1_3D(const GeoVector &v)
Real der2fct1_32_Q1_3D(const GeoVector &v)
Real der2fct7_12_Q1_3D(const GeoVector &v)
Real derfct4_1_Q1_2D(const GeoVector &v)
const Real q2ptx2
static const QuadraturePoint pt_seg_4pt[4]
Real der2fct1_11_Q1_3D(const GeoVector &)
Real der2fct5_22_P2_2D(const GeoVector &)
Real derfct5_3_Q1_3D(const GeoVector &v)
const Real q3ptx1
Real der2fct10_32_P2tilde_3D(const GeoVector &v)
Real der2fct10_12_P2tilde_3D(const GeoVector &v)
Real fct3_P1bubble_3D(const GeoVector &v)
Real der2fct2_31_P2_3D(const GeoVector &)
Real derfct1_P0_2D(const GeoVector &)
Real der2fct9_21_P2_3D(const GeoVector &)
Real der2fct4_21_P2_2D(const GeoVector &)
Real derfct1_1_P1bubble_2D(const GeoVector &)
Real der2fct9_33_P2_3D(const GeoVector &)
Real der2fct4_22_P2tilde_3D(const GeoVector &v)
static const QuadraturePoint pt_hexa_8pt[8]
static const QuadraturePoint pt_tetra_64pt[64]
Real der2fct5_23_P2_3D(const GeoVector &)
Real der2fct6_11_P2_3D(const GeoVector &)
Real derfct6_2_Q2_2D(const GeoVector &v)
Real fct4_P2tilde_3D(const GeoVector &v)
Real derfct2_2_Q2_2D(const GeoVector &v)
Real derfct1_2_Q1_3D(const GeoVector &v)
Real derfct1_3_P1_3D(const GeoVector &)
const Real A5
Real derfct3_1_P2_3D(const GeoVector &)
const Real q4ptx2
Real der2fct10_11_P2_3D(const GeoVector &)
Real derfct4_1_P1bubble_3D(const GeoVector &)
Real fct7_Q2_2D(const GeoVector &v)
Real derfct2_1_Q2_2D(const GeoVector &v)
Real fct3_RT0_2_TRIA_2D(const GeoVector &v)
const ReferenceFEScalar feTriaP1bubble("P1bubble on a triangle", FE_P1bubble_2D, TRIANGLE, 1, 0, 1, 0, 4, 2, fct_P1bubble_2D, derfct_P1bubble_2D, der2fct_P1bubble_2D, refcoor_P1bubble_2D, STANDARD_PATTERN, &feSegP1, &P1Bubble2DTransform)
const Real t6pt_w1
Real fct6_P2tilde_3D(const GeoVector &v)
Real der2fct7_31_P2tilde_3D(const GeoVector &v)
Real fct4_P2_3D(const GeoVector &v)
Real der2fct4_12_Q1_3D(const GeoVector &v)
Real der2fct5_31_P1bubble_3D(const GeoVector &v)
static const QuadraturePoint pt_tetra_4pt[4]
const Real q2ptw2
Real fct4_P1_3D(const GeoVector &v)
Real der2fct6_13_Q1_3D(const GeoVector &v)
Real der2fct10_32_P2_3D(const GeoVector &)
Real der2fct7_33_P2_3D(const GeoVector &)
Real der2fct5_13_Q1_3D(const GeoVector &v)
Real derfct2_1_P2tilde_3D(const GeoVector &v)
#define QUAD_RULE_QUAD_16PT
const Real t6pt_x2
Real der2fct3_21_P2tilde_3D(const GeoVector &v)
Real der2fctx_xx_P1_3D(const GeoVector &)
Real fct1_P0_2D(const GeoVector &)
const Real q3ptw1
Real fct4_P1bubble_3D(const GeoVector &v)
Real der2fct7_22_Q2_2D(const GeoVector &v)
Real der2fct1_21_P2_2D(const GeoVector &)
Real der2fct8_31_Q1_3D(const GeoVector &v)