LifeV
ReferenceFEHdiv.hpp
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 Reference finite element for Hdiv space.
30 
31  @author Alessio Fumagalli
32  Samuel Quinodoz <samuel.quinodoz@epfl.ch>
33  @date 10-05-2010
34 
35  @contributor
36  @mantainer Samuel Quinodoz <samuel.quinodoz@epfl.ch>
37  */
38 
39 #ifndef REFFEHDIV_H
40 #define REFFEHDIV_H 1
41 
42 #include<lifev/core/fem/ReferenceFE.hpp>
43 
44 namespace LifeV
45 {
46 
47 //! ReferenceFEHdiv - Short description of the class
48 
50  : public ReferenceFE
51 {
52 public:
53 
54  //! @name Public Types
55  //@{
56 
57  typedef ReferenceFE::function_Type function_Type;
58 
59  //@}
60 
61 
62  //! @name Constructor & Destructor
63  //@{
64 
65  //! Constructor of a reference Lagrangian finite element.
66  /*!
67  Constructor of a reference finite element. The arguments are:
68  @param name the name of the f.e.
69  @param type the type of the f.e. (FE_P1_2D,... see the #define at the
70  begining of refFE.h)
71  @param shape the geometry belongs to enum ReferenceShapes {NONE, POINT,
72  LINE, TRIANGLE, QUAD, HEXA, PRISM, TETRA}; (see ElementShapes.h)
73  @param nbDofPerVertex the number of degrees of freedom per vertex
74  @param nbDofPerEdge the number of degrees of freedom per edge
75  @param nbDofPerFace the number of degrees of freedom per face
76  @param nbDofPerVolume the number of degrees of freedom per volume
77  @param nbDof the total number of d.o.f ( = nbDofPerVertex * nb vertex +
78  nbDofPerEdge * nb edges + etc...)
79  @param nbLocalCoor number of local coordinates
80  @param phi the static array containing the basis functions (defined in
81  refEle.h)
82  @param dPhi the static array containing the derivatives of the basis
83  functions (defined in refEle.h)
84  @param d2Phi the static array containing the second derivatives of the
85  basis functions (defined in refEle.h)
86  @param refCoor the static array containing the coordinates of the nodes on
87  the reference element (defined in refEle.h)
88  @param patternType in most of cases STANDARD_PATTERN, except for elements
89  like P1isoP2 (to define a new pattern, add a new #define in refFE.h and
90  code it in refFE.cc following the example of P1ISOP2_TRIA_PATTERN)
91  @param bdRefFE a pointer on the associated reference finite element on the boundary
92  */
93  ReferenceFEHdiv ( std::string name,
94  FE_TYPE type,
95  ReferenceShapes shape,
96  Int nbDofPerVertex,
97  Int nbDofPerEdge,
98  Int nbDofPerFace,
99  Int nbDofPerVolume,
100  Int nbDof,
101  Int nbLocalCoor,
102  const function_Type* phi,
103  const function_Type* divPhi,
104  const Real* refCoor,
105  DofPatternType patternType,
106  const ReferenceFE* bdRefFE );
107 
109 
110  //@}
111 };
112 
113 // Vector finite elements
114 
115 extern const ReferenceFEHdiv feTriaRT0;
116 
117 extern const ReferenceFEHdiv feHexaRT0;
118 extern const ReferenceFEHdiv feTetraRT0;
119 
120 } // Namespace LifeV
121 
122 #endif /* REFFEHDIV_H */
ReferenceFEHdiv(std::string name, FE_TYPE type, ReferenceShapes shape, Int nbDofPerVertex, Int nbDofPerEdge, Int nbDofPerFace, Int nbDofPerVolume, Int nbDof, Int nbLocalCoor, const function_Type *phi, const function_Type *divPhi, const Real *refCoor, DofPatternType patternType, const ReferenceFE *bdRefFE)
Constructor of a reference Lagrangian finite element.
DofPatternType
Local pattern type.
int32_type Int
Generic integer data.
Definition: LifeV.hpp:188
void updateInverseJacobian(const UInt &iQuadPt)
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)
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)
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)
ReferenceFEHdiv - Short description of the class.
double Real
Generic real data.
Definition: LifeV.hpp:175
The class for a reference Lagrangian finite element.