#include <P1TetrahedronFiniteElement.hpp>


Public Types | |
| enum | { numberOfDegreesOfFreedom = 4, numberOfVertexDegreesOfFreedom = 1, numberOfEdgeDegreesOfFreedom = 0, numberOfFaceDegreesOfFreedom = 0, numberOfVolumeDegreesOfFreedom = 0, numberOfFaceLivingDegreesOfFreedom = 3 } |
| enum | |
| typedef QuadratureFormulaP1Tetrahedron | QuadratureType |
| typedef TinyVector < numberOfDegreesOfFreedom > | ElementaryVector |
| typedef TinyMatrix < numberOfDegreesOfFreedom, numberOfDegreesOfFreedom > | ElementaryMatrix |
Public Member Functions | |
| real_t | W (const size_t &i, const TinyVector< 3 > &X) const |
| real_t | dxW (const size_t &i, const TinyVector< 3 > &X) const |
| real_t | dyW (const size_t &i, const TinyVector< 3 > &X) const |
| real_t | dzW (const size_t &i, const TinyVector< 3 > &X) const |
| const TinyVector < QuadratureType::numberOfQuadraturePoints, TinyVector< 3 > > & | integrationVertices () const |
| P1TetrahedronFiniteElement () | |
| ~P1TetrahedronFiniteElement () | |
| const real_t & | W (const size_t &i, const size_t &j) const |
| const real_t & | dxW (const size_t &i, const size_t &j) const |
| const real_t & | dyW (const size_t &i, const size_t &j) const |
| const real_t & | dzW (const size_t &i, const size_t &j) const |
| void | integrateWjWi (ElementaryMatrix &matElem, const ConformTransformation &T) const |
| void | integrateDWjWi (ElementaryMatrix &matElem, const size_t &n, const ConformTransformation &T) const |
| void | integrateWjDWi (ElementaryMatrix &matElem, const size_t &n, const ConformTransformation &T) const |
| void | integrateDWjDWi (ElementaryMatrix &matElem, const size_t &n, const size_t &m, const ConformTransformation &T) const |
| void | integrateWj (ElementaryVector &vectElem, const ConformTransformation &T, const TinyVector< numberOfQuadraturePoints, real_t > &f) const |
Static Public Member Functions | |
| static const TinyVector < 3, real_t > & | massCenter () |
| static P1TetrahedronFiniteElement & | instance () |
| static void | create () |
| static void | destroy () |
Static Public Attributes | |
| static const size_t | facesDOF [Tetrahedron::NumberOfFaces][numberOfFaceLivingDegreesOfFreedom] |
Protected Member Functions | |
| real_t | __W (const size_t &i, const size_t &j) |
| real_t | __dxW (const size_t &i, const size_t &j) |
| real_t | __dyW (const size_t &i, const size_t &j) |
| real_t | __dzW (const size_t &i, const size_t &j) |
Protected Attributes | |
| TinyMatrix < numberOfDegreesOfFreedom, numberOfQuadraturePoints > | __w |
| TinyMatrix < numberOfDegreesOfFreedom, numberOfQuadraturePoints > | __dxw |
| TinyMatrix < numberOfDegreesOfFreedom, numberOfQuadraturePoints > | __dyw |
| TinyMatrix < numberOfDegreesOfFreedom, numberOfQuadraturePoints > | __dzw |
Static Protected Attributes | |
| static P1TetrahedronFiniteElement * | __pInstance |
Static Private Attributes | |
| static TinyVector< 3, real_t > | __massCenter |
Definition at line 32 of file P1TetrahedronFiniteElement.hpp.
typedef QuadratureFormulaP1Tetrahedron LagrangianFiniteElement< numberOfDegreesOfFreedom, P1TetrahedronFiniteElement , QuadratureFormulaP1Tetrahedron >::QuadratureType [inherited] |
default quadrature type
Definition at line 46 of file LagrangianFiniteElement.hpp.
typedef TinyVector<numberOfDegreesOfFreedom> LagrangianFiniteElement< numberOfDegreesOfFreedom, P1TetrahedronFiniteElement , QuadratureFormulaP1Tetrahedron >::ElementaryVector [inherited] |
type of elementary vector
Definition at line 54 of file LagrangianFiniteElement.hpp.
typedef TinyMatrix<numberOfDegreesOfFreedom, numberOfDegreesOfFreedom> LagrangianFiniteElement< numberOfDegreesOfFreedom, P1TetrahedronFiniteElement , QuadratureFormulaP1Tetrahedron >::ElementaryMatrix [inherited] |
type of elementary matrix
Definition at line 59 of file LagrangianFiniteElement.hpp.
| anonymous enum |
| numberOfDegreesOfFreedom | |
| numberOfVertexDegreesOfFreedom | |
| numberOfEdgeDegreesOfFreedom | |
| numberOfFaceDegreesOfFreedom | |
| numberOfVolumeDegreesOfFreedom | |
| numberOfFaceLivingDegreesOfFreedom |
Definition at line 41 of file P1TetrahedronFiniteElement.hpp.
00041 { 00042 numberOfDegreesOfFreedom = 4, 00043 numberOfVertexDegreesOfFreedom = 1, 00044 numberOfEdgeDegreesOfFreedom = 0, 00045 numberOfFaceDegreesOfFreedom = 0, 00046 numberOfVolumeDegreesOfFreedom = 0, 00047 numberOfFaceLivingDegreesOfFreedom = 3 // degrees of freedom carried by a face 00048 };
anonymous enum [inherited] |
Definition at line 48 of file LagrangianFiniteElement.hpp.
00048 { 00049 numberOfQuadraturePoints = QuadratureType::numberOfQuadraturePoints 00050 };
| P1TetrahedronFiniteElement::P1TetrahedronFiniteElement | ( | ) | [inline] |
| P1TetrahedronFiniteElement::~P1TetrahedronFiniteElement | ( | ) | [inline] |
| static const TinyVector<3, real_t>& P1TetrahedronFiniteElement::massCenter | ( | ) | [inline, static] |
returns the mass center of the reference element
Definition at line 60 of file P1TetrahedronFiniteElement.hpp.
References __massCenter.
00061 { 00062 return __massCenter; 00063 }
| real_t P1TetrahedronFiniteElement::W | ( | const size_t & | i, | |
| const TinyVector< 3 > & | X | |||
| ) | const |
Definition at line 33 of file P1TetrahedronFiniteElement.cpp.
References ErrorHandler::unexpected.
00034 { 00035 const real_t& x = X[0]; 00036 const real_t& y = X[1]; 00037 const real_t& z = X[2]; 00038 00039 switch (i) { 00040 case 0: { 00041 return (1-x-y-z); 00042 } 00043 case 1: { 00044 return x; 00045 } 00046 case 2: { 00047 return y; 00048 } 00049 case 3: { 00050 return z; 00051 } 00052 default: { 00053 throw ErrorHandler(__FILE__,__LINE__, 00054 "unexpected basis function number", 00055 ErrorHandler::unexpected); 00056 return 0.; 00057 } 00058 } 00059 }
| real_t P1TetrahedronFiniteElement::dxW | ( | const size_t & | i, | |
| const TinyVector< 3 > & | X | |||
| ) | const |
Definition at line 62 of file P1TetrahedronFiniteElement.cpp.
References ErrorHandler::unexpected.
00063 { 00064 switch (i) { 00065 case 0: { 00066 return -1; 00067 } 00068 case 1: { 00069 return 1; 00070 } 00071 case 2: { 00072 return 0; 00073 } 00074 case 3: { 00075 return 0; 00076 } 00077 default: { 00078 throw ErrorHandler(__FILE__,__LINE__, 00079 "unexpected basis function number", 00080 ErrorHandler::unexpected); 00081 return 0.; 00082 } 00083 } 00084 }
| real_t P1TetrahedronFiniteElement::dyW | ( | const size_t & | i, | |
| const TinyVector< 3 > & | X | |||
| ) | const |
Definition at line 87 of file P1TetrahedronFiniteElement.cpp.
References ErrorHandler::unexpected.
00088 { 00089 switch (i) { 00090 case 0: { 00091 return -1; 00092 } 00093 case 1: { 00094 return 0; 00095 } 00096 case 2: { 00097 return 1; 00098 } 00099 case 3: { 00100 return 0; 00101 } 00102 default: { 00103 throw ErrorHandler(__FILE__,__LINE__, 00104 "unexpected basis function number", 00105 ErrorHandler::unexpected); 00106 return 0.; 00107 } 00108 } 00109 }
| real_t P1TetrahedronFiniteElement::dzW | ( | const size_t & | i, | |
| const TinyVector< 3 > & | X | |||
| ) | const |
Definition at line 112 of file P1TetrahedronFiniteElement.cpp.
References ErrorHandler::unexpected.
00113 { 00114 switch (i) { 00115 case 0: { 00116 return -1; 00117 } 00118 case 1: { 00119 return 0; 00120 } 00121 case 2: { 00122 return 0; 00123 } 00124 case 3: { 00125 return 1; 00126 } 00127 default: { 00128 throw ErrorHandler(__FILE__,__LINE__, 00129 "unexpected basis function number", 00130 ErrorHandler::unexpected); 00131 return 0.; 00132 } 00133 } 00134 }
| const TinyVector<QuadratureType::numberOfQuadraturePoints, TinyVector<3> >& P1TetrahedronFiniteElement::integrationVertices | ( | ) | const [inline] |
Definition at line 74 of file P1TetrahedronFiniteElement.hpp.
References StaticBase< QuadratureFormulaP1Tetrahedron >::instance(), and QuadratureFormulaP1Tetrahedron::vertices().
00075 { 00076 return QuadratureType::instance().vertices(); 00077 }

| static P1TetrahedronFiniteElement & StaticBase< P1TetrahedronFiniteElement >::instance | ( | ) | [inline, static, inherited] |
Access to auto instanciated static;
Definition at line 46 of file StaticBase.hpp.
00047 { 00048 return *__pInstance; 00049 }
| static void StaticBase< P1TetrahedronFiniteElement >::create | ( | ) | [inline, static, inherited] |
Creates __pInstance in Embedding class.
Definition at line 55 of file StaticBase.hpp.
Referenced by ThreadStaticCenter::ThreadStaticCenter().
00056 { 00057 __pInstance = new EmbeddingClass(); 00058 }
| static void StaticBase< P1TetrahedronFiniteElement >::destroy | ( | ) | [inline, static, inherited] |
Destroyes __autoInstanciated in Embedding class.
Definition at line 64 of file StaticBase.hpp.
Referenced by ThreadStaticCenter::~ThreadStaticCenter().
00065 { 00066 delete __pInstance; 00067 }
| real_t LagrangianFiniteElement< numberOfDegreesOfFreedom, P1TetrahedronFiniteElement , QuadratureFormulaP1Tetrahedron >::__W | ( | const size_t & | i, | |
| const size_t & | j | |||
| ) | [inline, protected, inherited] |
Computes hat function value at quadrature point
| i | the hat function number | |
| j | the number of quadrature point |
Definition at line 81 of file LagrangianFiniteElement.hpp.
00082 { 00083 return self().W(i,self().integrationVertices()[j]); 00084 }
| real_t LagrangianFiniteElement< numberOfDegreesOfFreedom, P1TetrahedronFiniteElement , QuadratureFormulaP1Tetrahedron >::__dxW | ( | const size_t & | i, | |
| const size_t & | j | |||
| ) | [inline, protected, inherited] |
Computes hat function derivative by x at quadrature point
| i | the hat function number | |
| j | the number of quadrature point |
Definition at line 94 of file LagrangianFiniteElement.hpp.
00095 { 00096 return self().dxW(i,self().integrationVertices()[j]); 00097 }
| real_t LagrangianFiniteElement< numberOfDegreesOfFreedom, P1TetrahedronFiniteElement , QuadratureFormulaP1Tetrahedron >::__dyW | ( | const size_t & | i, | |
| const size_t & | j | |||
| ) | [inline, protected, inherited] |
Computes hat function derivative by y at quadrature point
| i | the hat function number | |
| j | the number of quadrature point |
Definition at line 107 of file LagrangianFiniteElement.hpp.
00108 { 00109 return self().dyW(i,self().integrationVertices()[j]); 00110 }
| real_t LagrangianFiniteElement< numberOfDegreesOfFreedom, P1TetrahedronFiniteElement , QuadratureFormulaP1Tetrahedron >::__dzW | ( | const size_t & | i, | |
| const size_t & | j | |||
| ) | [inline, protected, inherited] |
Computes hat function derivative by z at quadrature point
| i | the hat function number | |
| j | the number of quadrature point |
Definition at line 120 of file LagrangianFiniteElement.hpp.
00121 { 00122 return self().dzW(i,self().integrationVertices()[j]); 00123 }
| const real_t& LagrangianFiniteElement< numberOfDegreesOfFreedom, P1TetrahedronFiniteElement , QuadratureFormulaP1Tetrahedron >::W | ( | const size_t & | i, | |
| const size_t & | j | |||
| ) | const [inline, inherited] |
Read-only access to hat function value at a quadrature point
| i | the hat function number | |
| j | the number of quadrature point |
Definition at line 147 of file LagrangianFiniteElement.hpp.
00148 { 00149 return __w(i,j); 00150 }
| const real_t& LagrangianFiniteElement< numberOfDegreesOfFreedom, P1TetrahedronFiniteElement , QuadratureFormulaP1Tetrahedron >::dxW | ( | const size_t & | i, | |
| const size_t & | j | |||
| ) | const [inline, inherited] |
Read-only access to hat function's derivative by x value at a quadrature point
| i | the hat function number | |
| j | the number of quadrature point |
Definition at line 161 of file LagrangianFiniteElement.hpp.
00162 { 00163 return __dxw(i,j); 00164 }
| const real_t& LagrangianFiniteElement< numberOfDegreesOfFreedom, P1TetrahedronFiniteElement , QuadratureFormulaP1Tetrahedron >::dyW | ( | const size_t & | i, | |
| const size_t & | j | |||
| ) | const [inline, inherited] |
Read-only access to hat function's derivative by y value at a quadrature point
| i | the hat function number | |
| j | the number of quadrature point |
Definition at line 175 of file LagrangianFiniteElement.hpp.
00176 { 00177 return __dyw(i,j); 00178 }
| const real_t& LagrangianFiniteElement< numberOfDegreesOfFreedom, P1TetrahedronFiniteElement , QuadratureFormulaP1Tetrahedron >::dzW | ( | const size_t & | i, | |
| const size_t & | j | |||
| ) | const [inline, inherited] |
Read-only access to hat function's derivative by z value at a quadrature point
| i | the hat function number | |
| j | the number of quadrature point |
Definition at line 189 of file LagrangianFiniteElement.hpp.
00190 { 00191 return __dzw(i,j); 00192 }
| void LagrangianFiniteElement< numberOfDegreesOfFreedom, P1TetrahedronFiniteElement , QuadratureFormulaP1Tetrahedron >::integrateWjWi | ( | ElementaryMatrix & | matElem, | |
| const ConformTransformation & | T | |||
| ) | const [inline, inherited] |
Computes elementary matrix associated to
on a given element using the associated conform transformation
| matElem | the elementary matrix | |
| T | the given transformation |
Definition at line 203 of file LagrangianFiniteElement.hpp.
00205 { 00206 ElementaryMatrix tmp = 0; 00207 00208 for (size_t k=0; k<numberOfQuadraturePoints; ++k) { // Loop on integration vertices 00209 for (size_t j=0; j<numberOfDegreesOfFreedom; ++j) { 00210 for (size_t i=0; i<=j; ++i) { 00211 tmp(i,j) 00212 += W(i,k) * W(j,k) * QuadratureType::instance().weight(k); 00213 } 00214 } 00215 } 00216 00217 // for this operator, matElem is symetric. 00218 for (size_t j=0; j<numberOfDegreesOfFreedom; ++j) 00219 for (size_t i=j+1; i<numberOfDegreesOfFreedom; ++i) 00220 tmp(i,j) = tmp(j,i); 00221 00222 matElem += tmp; 00223 }
| void LagrangianFiniteElement< numberOfDegreesOfFreedom, P1TetrahedronFiniteElement , QuadratureFormulaP1Tetrahedron >::integrateDWjWi | ( | ElementaryMatrix & | matElem, | |
| const size_t & | n, | |||
| const ConformTransformation & | T | |||
| ) | const [inline, inherited] |
Computes elementary matrix associated to
on a given element using the associated conform transformation
| matElem | the elementary matrix | |
| n | the in | |
| T | the given transformation |
Definition at line 235 of file LagrangianFiniteElement.hpp.
00238 { 00239 ElementaryMatrix tmp = 0; 00240 00241 for (size_t k=0; k<numberOfQuadraturePoints; ++k) { // Loop on integration vertices 00242 for (size_t j=0; j<numberOfDegreesOfFreedom; ++j) { 00243 const real_t fj 00244 = dxW(j,k)*T.invJacobian(0,n) 00245 + dyW(j,k)*T.invJacobian(1,n) 00246 + dzW(j,k)*T.invJacobian(2,n); 00247 for (size_t i=0; i<numberOfDegreesOfFreedom; ++i) { 00248 tmp(i,j) 00249 += fj * W(i,k) * QuadratureType::instance().weight(k); 00250 } 00251 } 00252 } 00253 matElem += tmp; 00254 }
| void LagrangianFiniteElement< numberOfDegreesOfFreedom, P1TetrahedronFiniteElement , QuadratureFormulaP1Tetrahedron >::integrateWjDWi | ( | ElementaryMatrix & | matElem, | |
| const size_t & | n, | |||
| const ConformTransformation & | T | |||
| ) | const [inline, inherited] |
Computes elementary matrix associated to
on a given element using the associated conform transformation
| matElem | the elementary matrix | |
| n | the in | |
| T | the given transformation |
Definition at line 266 of file LagrangianFiniteElement.hpp.
00269 { 00270 ElementaryMatrix tmp = 0; 00271 00272 for (size_t k=0; k<numberOfQuadraturePoints; ++k) { // Loop on integration vertices 00273 for (size_t i=0; i<numberOfDegreesOfFreedom; ++i) { 00274 const real_t fi 00275 = dxW(i,k)*T.invJacobian(0,n) 00276 + dyW(i,k)*T.invJacobian(1,n) 00277 + dzW(i,k)*T.invJacobian(2,n); 00278 for (size_t j=0; j<numberOfDegreesOfFreedom; ++j) { 00279 tmp(i,j) 00280 += fi * W(j,k) * QuadratureType::instance().weight(k); 00281 } 00282 } 00283 } 00284 matElem += tmp; 00285 }
| void LagrangianFiniteElement< numberOfDegreesOfFreedom, P1TetrahedronFiniteElement , QuadratureFormulaP1Tetrahedron >::integrateDWjDWi | ( | ElementaryMatrix & | matElem, | |
| const size_t & | n, | |||
| const size_t & | m, | |||
| const ConformTransformation & | T | |||
| ) | const [inline, inherited] |
Computes elementary matrix associated to
on a given element using the associated conform transformation
| matElem | the elementary matrix | |
| n | the in | |
| m | the in | |
| T | the given transformation |
Definition at line 298 of file LagrangianFiniteElement.hpp.
00302 { 00303 ElementaryMatrix tmp = 0; 00304 00305 for (size_t k=0; k<numberOfQuadraturePoints; ++k) { // Loop on integration vertices 00306 for (size_t j=0; j<numberOfDegreesOfFreedom; ++j) { 00307 const real_t fj 00308 = dxW(j,k)*T.invJacobian(0,n) 00309 + dyW(j,k)*T.invJacobian(1,n) 00310 + dzW(j,k)*T.invJacobian(2,n); 00311 for (size_t i=0; i<numberOfDegreesOfFreedom; ++i) { 00312 tmp(i,j) 00313 += fj 00314 * ( dxW(i,k)*T.invJacobian(0,m) 00315 + dyW(i,k)*T.invJacobian(1,m) 00316 + dzW(i,k)*T.invJacobian(2,m) ) 00317 * QuadratureType::instance().weight(k); 00318 } 00319 } 00320 } 00321 00322 matElem += tmp; 00323 }
| void LagrangianFiniteElement< numberOfDegreesOfFreedom, P1TetrahedronFiniteElement , QuadratureFormulaP1Tetrahedron >::integrateWj | ( | ElementaryVector & | vectElem, | |
| const ConformTransformation & | T, | |||
| const TinyVector< numberOfQuadraturePoints, real_t > & | f | |||
| ) | const [inline, inherited] |
Computes elementary vector associated to
on a given element using the associated conform transformation
| vectElem | the elementary vector | |
| T | the given transformation | |
| f | values at quadrature points |
Definition at line 334 of file LagrangianFiniteElement.hpp.
00337 { 00338 vectElem = 0; 00339 00340 for (size_t k=0; k<numberOfQuadraturePoints; ++k) 00341 for (size_t j=0; j<numberOfDegreesOfFreedom; ++j) { 00342 vectElem[j] 00343 += W(j,k) 00344 * f[k] 00345 * QuadratureType::instance().weight(k); 00346 } 00347 }
TinyVector< 3, real_t > P1TetrahedronFiniteElement::__massCenter [static, private] |
mass center of the reference element
Definition at line 38 of file P1TetrahedronFiniteElement.hpp.
Referenced by massCenter().
const size_t P1TetrahedronFiniteElement::facesDOF [static] |
Initial value:
{{1,2,3},
{2,3,0},
{0,1,3},
{2,1,0}}
Definition at line 53 of file P1TetrahedronFiniteElement.hpp.
P1TetrahedronFiniteElement * StaticBase< P1TetrahedronFiniteElement >::__pInstance [static, protected, inherited] |
The static variable
Definition at line 37 of file StaticBase.hpp.
TinyMatrix<numberOfDegreesOfFreedom,numberOfQuadraturePoints> LagrangianFiniteElement< numberOfDegreesOfFreedom, P1TetrahedronFiniteElement , QuadratureFormulaP1Tetrahedron >::__w [protected, inherited] |
hat function values at quadrature points
Definition at line 127 of file LagrangianFiniteElement.hpp.
TinyMatrix<numberOfDegreesOfFreedom,numberOfQuadraturePoints> LagrangianFiniteElement< numberOfDegreesOfFreedom, P1TetrahedronFiniteElement , QuadratureFormulaP1Tetrahedron >::__dxw [protected, inherited] |
hat function dx values at quadrature points
Definition at line 130 of file LagrangianFiniteElement.hpp.
TinyMatrix<numberOfDegreesOfFreedom,numberOfQuadraturePoints> LagrangianFiniteElement< numberOfDegreesOfFreedom, P1TetrahedronFiniteElement , QuadratureFormulaP1Tetrahedron >::__dyw [protected, inherited] |
hat function dy values at quadrature points
Definition at line 133 of file LagrangianFiniteElement.hpp.
TinyMatrix<numberOfDegreesOfFreedom,numberOfQuadraturePoints> LagrangianFiniteElement< numberOfDegreesOfFreedom, P1TetrahedronFiniteElement , QuadratureFormulaP1Tetrahedron >::__dzw [protected, inherited] |
hat function dz values at quadrature points
Definition at line 136 of file LagrangianFiniteElement.hpp.
1.5.6