#include <LagrangianFiniteElement.hpp>


Public Types | |
| enum | { numberOfQuadraturePoints = QuadratureType::numberOfQuadraturePoints } |
| typedef GivenQuadratureType | QuadratureType |
| typedef TinyVector < numberOfDegreesOfFreedom > | ElementaryVector |
| typedef TinyMatrix < numberOfDegreesOfFreedom, numberOfDegreesOfFreedom > | ElementaryMatrix |
Public Member Functions | |
| 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 |
| template<typename ConformTransformation> | |
| void | integrateWjWi (ElementaryMatrix &matElem, const ConformTransformation &T) const |
| template<typename ConformTransformation> | |
| void | integrateDWjWi (ElementaryMatrix &matElem, const size_t &n, const ConformTransformation &T) const |
| template<typename ConformTransformation> | |
| void | integrateWjDWi (ElementaryMatrix &matElem, const size_t &n, const ConformTransformation &T) const |
| template<typename ConformTransformation> | |
| void | integrateDWjDWi (ElementaryMatrix &matElem, const size_t &n, const size_t &m, const ConformTransformation &T) const |
| template<typename ConformTransformation> | |
| void | integrateWj (ElementaryVector &vectElem, const ConformTransformation &T, const TinyVector< numberOfQuadraturePoints, real_t > &f) const |
| LagrangianFiniteElement () | |
| virtual | ~LagrangianFiniteElement () |
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 |
Private Member Functions | |
| FiniteElementType & | self () |
Definition at line 42 of file LagrangianFiniteElement.hpp.
| typedef GivenQuadratureType LagrangianFiniteElement< numberOfDegreesOfFreedom, FiniteElementType, GivenQuadratureType >::QuadratureType |
default quadrature type
Definition at line 46 of file LagrangianFiniteElement.hpp.
| typedef TinyVector<numberOfDegreesOfFreedom> LagrangianFiniteElement< numberOfDegreesOfFreedom, FiniteElementType, GivenQuadratureType >::ElementaryVector |
type of elementary vector
Definition at line 54 of file LagrangianFiniteElement.hpp.
| typedef TinyMatrix<numberOfDegreesOfFreedom, numberOfDegreesOfFreedom> LagrangianFiniteElement< numberOfDegreesOfFreedom, FiniteElementType, GivenQuadratureType >::ElementaryMatrix |
type of elementary matrix
Definition at line 59 of file LagrangianFiniteElement.hpp.
| anonymous enum |
Definition at line 48 of file LagrangianFiniteElement.hpp.
00048 { 00049 numberOfQuadraturePoints = QuadratureType::numberOfQuadraturePoints 00050 };
| LagrangianFiniteElement< numberOfDegreesOfFreedom, FiniteElementType, GivenQuadratureType >::LagrangianFiniteElement | ( | ) | [inline] |
Constructor
Definition at line 353 of file LagrangianFiniteElement.hpp.
00354 { 00355 try { 00356 for (size_t i=0; i<numberOfDegreesOfFreedom; ++i) { 00357 for(size_t j=0; j<numberOfQuadraturePoints; ++j) { 00358 __w(i,j) = __W(i,j); 00359 __dxw(i,j) = __dxW(i,j); 00360 __dyw(i,j) = __dyW(i,j); 00361 __dzw(i,j) = __dzW(i,j); 00362 } 00363 } 00364 } 00365 catch(ErrorHandler e) { 00366 e.writeErrorMessage(); 00367 } 00368 catch(...) { 00369 fferr(0) << "error: Unknown exception caught!\n"; 00370 fferr(0) << __FILE__ << ':' << __LINE__ << ": Not implemented\n"; 00371 } 00372 }
| virtual LagrangianFiniteElement< numberOfDegreesOfFreedom, FiniteElementType, GivenQuadratureType >::~LagrangianFiniteElement | ( | ) | [inline, virtual] |
| FiniteElementType& LagrangianFiniteElement< numberOfDegreesOfFreedom, FiniteElementType, GivenQuadratureType >::self | ( | ) | [inline, private] |
The static polymorphism core function
Definition at line 67 of file LagrangianFiniteElement.hpp.
| real_t LagrangianFiniteElement< numberOfDegreesOfFreedom, FiniteElementType, GivenQuadratureType >::__W | ( | const size_t & | i, | |
| const size_t & | j | |||
| ) | [inline, protected] |
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.
Referenced by LagrangianFiniteElement< 1, P0TetrahedronFiniteElement, QuadratureFormulaP0Tetrahedron >::LagrangianFiniteElement().
00082 { 00083 return self().W(i,self().integrationVertices()[j]); 00084 }
| real_t LagrangianFiniteElement< numberOfDegreesOfFreedom, FiniteElementType, GivenQuadratureType >::__dxW | ( | const size_t & | i, | |
| const size_t & | j | |||
| ) | [inline, protected] |
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.
Referenced by LagrangianFiniteElement< 1, P0TetrahedronFiniteElement, QuadratureFormulaP0Tetrahedron >::LagrangianFiniteElement().
00095 { 00096 return self().dxW(i,self().integrationVertices()[j]); 00097 }
| real_t LagrangianFiniteElement< numberOfDegreesOfFreedom, FiniteElementType, GivenQuadratureType >::__dyW | ( | const size_t & | i, | |
| const size_t & | j | |||
| ) | [inline, protected] |
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.
Referenced by LagrangianFiniteElement< 1, P0TetrahedronFiniteElement, QuadratureFormulaP0Tetrahedron >::LagrangianFiniteElement().
00108 { 00109 return self().dyW(i,self().integrationVertices()[j]); 00110 }
| real_t LagrangianFiniteElement< numberOfDegreesOfFreedom, FiniteElementType, GivenQuadratureType >::__dzW | ( | const size_t & | i, | |
| const size_t & | j | |||
| ) | [inline, protected] |
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.
Referenced by LagrangianFiniteElement< 1, P0TetrahedronFiniteElement, QuadratureFormulaP0Tetrahedron >::LagrangianFiniteElement().
00121 { 00122 return self().dzW(i,self().integrationVertices()[j]); 00123 }
| const real_t& LagrangianFiniteElement< numberOfDegreesOfFreedom, FiniteElementType, GivenQuadratureType >::W | ( | const size_t & | i, | |
| const size_t & | j | |||
| ) | const [inline] |
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.
Referenced by LagrangianFiniteElement< 1, P0TetrahedronFiniteElement, QuadratureFormulaP0Tetrahedron >::__W(), LagrangianFiniteElement< 1, P0TetrahedronFiniteElement, QuadratureFormulaP0Tetrahedron >::integrateDWjWi(), LagrangianFiniteElement< 1, P0TetrahedronFiniteElement, QuadratureFormulaP0Tetrahedron >::integrateWj(), LagrangianFiniteElement< 1, P0TetrahedronFiniteElement, QuadratureFormulaP0Tetrahedron >::integrateWjDWi(), and LagrangianFiniteElement< 1, P0TetrahedronFiniteElement, QuadratureFormulaP0Tetrahedron >::integrateWjWi().
00148 { 00149 return __w(i,j); 00150 }
| const real_t& LagrangianFiniteElement< numberOfDegreesOfFreedom, FiniteElementType, GivenQuadratureType >::dxW | ( | const size_t & | i, | |
| const size_t & | j | |||
| ) | const [inline] |
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.
Referenced by LagrangianFiniteElement< 1, P0TetrahedronFiniteElement, QuadratureFormulaP0Tetrahedron >::__dxW(), LagrangianFiniteElement< 1, P0TetrahedronFiniteElement, QuadratureFormulaP0Tetrahedron >::integrateDWjDWi(), LagrangianFiniteElement< 1, P0TetrahedronFiniteElement, QuadratureFormulaP0Tetrahedron >::integrateDWjWi(), and LagrangianFiniteElement< 1, P0TetrahedronFiniteElement, QuadratureFormulaP0Tetrahedron >::integrateWjDWi().
00162 { 00163 return __dxw(i,j); 00164 }
| const real_t& LagrangianFiniteElement< numberOfDegreesOfFreedom, FiniteElementType, GivenQuadratureType >::dyW | ( | const size_t & | i, | |
| const size_t & | j | |||
| ) | const [inline] |
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.
Referenced by LagrangianFiniteElement< 1, P0TetrahedronFiniteElement, QuadratureFormulaP0Tetrahedron >::__dyW(), LagrangianFiniteElement< 1, P0TetrahedronFiniteElement, QuadratureFormulaP0Tetrahedron >::integrateDWjDWi(), LagrangianFiniteElement< 1, P0TetrahedronFiniteElement, QuadratureFormulaP0Tetrahedron >::integrateDWjWi(), and LagrangianFiniteElement< 1, P0TetrahedronFiniteElement, QuadratureFormulaP0Tetrahedron >::integrateWjDWi().
00176 { 00177 return __dyw(i,j); 00178 }
| const real_t& LagrangianFiniteElement< numberOfDegreesOfFreedom, FiniteElementType, GivenQuadratureType >::dzW | ( | const size_t & | i, | |
| const size_t & | j | |||
| ) | const [inline] |
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.
Referenced by LagrangianFiniteElement< 1, P0TetrahedronFiniteElement, QuadratureFormulaP0Tetrahedron >::__dzW(), LagrangianFiniteElement< 1, P0TetrahedronFiniteElement, QuadratureFormulaP0Tetrahedron >::integrateDWjDWi(), LagrangianFiniteElement< 1, P0TetrahedronFiniteElement, QuadratureFormulaP0Tetrahedron >::integrateDWjWi(), and LagrangianFiniteElement< 1, P0TetrahedronFiniteElement, QuadratureFormulaP0Tetrahedron >::integrateWjDWi().
00190 { 00191 return __dzw(i,j); 00192 }
| void LagrangianFiniteElement< numberOfDegreesOfFreedom, FiniteElementType, GivenQuadratureType >::integrateWjWi | ( | ElementaryMatrix & | matElem, | |
| const ConformTransformation & | T | |||
| ) | const [inline] |
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, FiniteElementType, GivenQuadratureType >::integrateDWjWi | ( | ElementaryMatrix & | matElem, | |
| const size_t & | n, | |||
| const ConformTransformation & | T | |||
| ) | const [inline] |
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, FiniteElementType, GivenQuadratureType >::integrateWjDWi | ( | ElementaryMatrix & | matElem, | |
| const size_t & | n, | |||
| const ConformTransformation & | T | |||
| ) | const [inline] |
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, FiniteElementType, GivenQuadratureType >::integrateDWjDWi | ( | ElementaryMatrix & | matElem, | |
| const size_t & | n, | |||
| const size_t & | m, | |||
| const ConformTransformation & | T | |||
| ) | const [inline] |
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, FiniteElementType, GivenQuadratureType >::integrateWj | ( | ElementaryVector & | vectElem, | |
| const ConformTransformation & | T, | |||
| const TinyVector< numberOfQuadraturePoints, real_t > & | f | |||
| ) | const [inline] |
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 }
TinyMatrix<numberOfDegreesOfFreedom,numberOfQuadraturePoints> LagrangianFiniteElement< numberOfDegreesOfFreedom, FiniteElementType, GivenQuadratureType >::__w [protected] |
hat function values at quadrature points
Definition at line 127 of file LagrangianFiniteElement.hpp.
Referenced by LagrangianFiniteElement< 1, P0TetrahedronFiniteElement, QuadratureFormulaP0Tetrahedron >::LagrangianFiniteElement(), and LagrangianFiniteElement< 1, P0TetrahedronFiniteElement, QuadratureFormulaP0Tetrahedron >::W().
TinyMatrix<numberOfDegreesOfFreedom,numberOfQuadraturePoints> LagrangianFiniteElement< numberOfDegreesOfFreedom, FiniteElementType, GivenQuadratureType >::__dxw [protected] |
hat function dx values at quadrature points
Definition at line 130 of file LagrangianFiniteElement.hpp.
Referenced by LagrangianFiniteElement< 1, P0TetrahedronFiniteElement, QuadratureFormulaP0Tetrahedron >::dxW(), and LagrangianFiniteElement< 1, P0TetrahedronFiniteElement, QuadratureFormulaP0Tetrahedron >::LagrangianFiniteElement().
TinyMatrix<numberOfDegreesOfFreedom,numberOfQuadraturePoints> LagrangianFiniteElement< numberOfDegreesOfFreedom, FiniteElementType, GivenQuadratureType >::__dyw [protected] |
hat function dy values at quadrature points
Definition at line 133 of file LagrangianFiniteElement.hpp.
Referenced by LagrangianFiniteElement< 1, P0TetrahedronFiniteElement, QuadratureFormulaP0Tetrahedron >::dyW(), and LagrangianFiniteElement< 1, P0TetrahedronFiniteElement, QuadratureFormulaP0Tetrahedron >::LagrangianFiniteElement().
TinyMatrix<numberOfDegreesOfFreedom,numberOfQuadraturePoints> LagrangianFiniteElement< numberOfDegreesOfFreedom, FiniteElementType, GivenQuadratureType >::__dzw [protected] |
hat function dz values at quadrature points
Definition at line 136 of file LagrangianFiniteElement.hpp.
Referenced by LagrangianFiniteElement< 1, P0TetrahedronFiniteElement, QuadratureFormulaP0Tetrahedron >::dzW(), and LagrangianFiniteElement< 1, P0TetrahedronFiniteElement, QuadratureFormulaP0Tetrahedron >::LagrangianFiniteElement().
1.5.6