#include <BaseFEMDiscretization.hpp>


Public Member Functions | |
| void | setDirichletList (const Vector< bool > &dirichletList) |
| virtual void | assembleMatrix ()=0 |
| virtual void | assembleSecondMember ()=0 |
| virtual void | getDiagonal (BaseVector &u) const =0 |
| virtual void | transposedTimesX (const BaseVector &x, BaseVector &v) const =0 |
| virtual void | timesX (const BaseVector &x, BaseVector &v) const =0 |
| const Problem & | problem () const |
| BaseMatrix & | A () |
| BaseVector & | b () |
Protected Types | |
| typedef GivenMeshType | MeshType |
| The type of mesh used for discretization. | |
| typedef MeshType::CellType | CellType |
| The geometry of finite elements. | |
| typedef FiniteElementTraits < CellType, TypeOfDiscretization >::Type | FiniteElement |
| Finite element type. | |
| typedef FiniteElement::ElementaryMatrix | ElementaryMatrixType |
| Elementary matrices type. | |
| typedef FiniteElement::ElementaryVector | ElementaryVectorType |
| Elementary vector type. | |
| typedef FiniteElementTraits < CellType, TypeOfDiscretization > ::Transformation | ConformTransformation |
| type of transformation from reference element | |
| typedef FiniteElementTraits < CellType, TypeOfDiscretization > ::JacobianTransformation | JacobianTransformation |
| Associated jacobian. | |
Protected Member Functions | |
| void | generatesElementaryVector (ElementaryVectorType &eVector, const JacobianTransformation &J, const TinyVector< FiniteElement::numberOfQuadraturePoints, real_t > &f) const |
| void | generatesElementaryMatrix (ElementaryMatrixSet< ElementaryMatrixType > &eSet, const JacobianTransformation &J) const |
| void | generatesElementaryMatrix (const PDEOperator::Type operatorType, const JacobianTransformation &J, ElementaryMatrixType &matelem, const size_t i=0, const size_t j=0) const |
| BaseFEMDiscretization (const Problem &p, const MeshType &mesh, const DiscretizationType &discretisationType, BaseMatrix &a, BaseVector &bb, const DegreeOfFreedomSet &dof) | |
| virtual | ~BaseFEMDiscretization () |
Protected Attributes | |
| const MeshType & | __mesh |
| Mesh used to perform discretization. | |
| ElementaryMatrixSet < ElementaryMatrixType > | __eSet |
| Set of elementary matrices. | |
| DiscretizedOperators < ElementaryMatrixType > | __discretizedOperators |
| Operators that are discretized. | |
| const DegreeOfFreedomSet & | __degreeOfFreedomSet |
| Set of degrees of freedom. | |
| const DiscretizationType | __discretizationType |
| const Problem & | __problem |
| The PDEProblem to discretize. | |
| BaseMatrix & | __A |
| The matrix which will contain the discretization. | |
| BaseVector & | __b |
| The second member. | |
| const Vector< bool > * | __dirichletList |
| elimination dirichlet informations | |
Definition at line 62 of file BaseFEMDiscretization.hpp.
typedef GivenMeshType BaseFEMDiscretization< GivenMeshType, TypeOfDiscretization >::MeshType [protected] |
The type of mesh used for discretization.
Reimplemented in FEMDiscretization< GivenMeshType, TypeOfDiscretization >, and FEMDiscretization< Structured3DMesh, TypeOfDiscretization >.
Definition at line 67 of file BaseFEMDiscretization.hpp.
typedef MeshType::CellType BaseFEMDiscretization< GivenMeshType, TypeOfDiscretization >::CellType [protected] |
The geometry of finite elements.
Reimplemented in FEMDiscretization< GivenMeshType, TypeOfDiscretization >, and FEMDiscretization< Structured3DMesh, TypeOfDiscretization >.
Definition at line 70 of file BaseFEMDiscretization.hpp.
typedef FiniteElementTraits<CellType, TypeOfDiscretization>::Type BaseFEMDiscretization< GivenMeshType, TypeOfDiscretization >::FiniteElement [protected] |
Finite element type.
Reimplemented in FEMDiscretization< GivenMeshType, TypeOfDiscretization >, and FEMDiscretization< Structured3DMesh, TypeOfDiscretization >.
Definition at line 74 of file BaseFEMDiscretization.hpp.
typedef FiniteElement::ElementaryMatrix BaseFEMDiscretization< GivenMeshType, TypeOfDiscretization >::ElementaryMatrixType [protected] |
Elementary matrices type.
Reimplemented in FEMDiscretization< GivenMeshType, TypeOfDiscretization >, and FEMDiscretization< Structured3DMesh, TypeOfDiscretization >.
Definition at line 77 of file BaseFEMDiscretization.hpp.
typedef FiniteElement::ElementaryVector BaseFEMDiscretization< GivenMeshType, TypeOfDiscretization >::ElementaryVectorType [protected] |
Elementary vector type.
Reimplemented in FEMDiscretization< GivenMeshType, TypeOfDiscretization >, and FEMDiscretization< Structured3DMesh, TypeOfDiscretization >.
Definition at line 80 of file BaseFEMDiscretization.hpp.
typedef FiniteElementTraits<CellType, TypeOfDiscretization>::Transformation BaseFEMDiscretization< GivenMeshType, TypeOfDiscretization >::ConformTransformation [protected] |
type of transformation from reference element
Reimplemented in FEMDiscretization< GivenMeshType, TypeOfDiscretization >, and FEMDiscretization< Structured3DMesh, TypeOfDiscretization >.
Definition at line 86 of file BaseFEMDiscretization.hpp.
typedef FiniteElementTraits<CellType, TypeOfDiscretization>::JacobianTransformation BaseFEMDiscretization< GivenMeshType, TypeOfDiscretization >::JacobianTransformation [protected] |
Associated jacobian.
Reimplemented in FEMDiscretization< GivenMeshType, TypeOfDiscretization >, and FEMDiscretization< Structured3DMesh, TypeOfDiscretization >.
Definition at line 92 of file BaseFEMDiscretization.hpp.
| BaseFEMDiscretization< GivenMeshType, TypeOfDiscretization >::BaseFEMDiscretization | ( | const Problem & | p, | |
| const MeshType & | mesh, | |||
| const DiscretizationType & | discretisationType, | |||
| BaseMatrix & | a, | |||
| BaseVector & | bb, | |||
| const DegreeOfFreedomSet & | dof | |||
| ) | [inline, protected] |
Constructor of the discretization
| p | the problem | |
| mesh | the mesh used for discretization | |
| discretizationType | the type of discretization | |
| a | matrix storing discretization | |
| bb | vector that stores second member discretization | |
| dof | degrees of freedom set |
Definition at line 226 of file BaseFEMDiscretization.hpp.
00232 : Discretization(discretisationType, p, a, bb), 00233 __mesh(mesh), 00234 __eSet(problem()), 00235 __discretizedOperators(__eSet,problem()), 00236 __degreeOfFreedomSet(dof) 00237 { 00238 ; 00239 }
| virtual BaseFEMDiscretization< GivenMeshType, TypeOfDiscretization >::~BaseFEMDiscretization | ( | ) | [inline, protected, virtual] |
| void BaseFEMDiscretization< GivenMeshType, TypeOfDiscretization >::generatesElementaryVector | ( | ElementaryVectorType & | eVector, | |
| const JacobianTransformation & | J, | |||
| const TinyVector< FiniteElement::numberOfQuadraturePoints, real_t > & | f | |||
| ) | const [inline, protected] |
Generates elementary vector
| eVector | the generated elementary vector | |
| J | the jacobian of the transformation | |
| f | the function to discretize |
Definition at line 114 of file BaseFEMDiscretization.hpp.
Referenced by FEMDiscretization< Structured3DMesh, TypeOfDiscretization >::assembleSecondMember(), and FEMDiscretization< GivenMeshType, TypeOfDiscretization >::assembleSecondMember().
| void BaseFEMDiscretization< GivenMeshType, TypeOfDiscretization >::generatesElementaryMatrix | ( | ElementaryMatrixSet< ElementaryMatrixType > & | eSet, | |
| const JacobianTransformation & | J | |||
| ) | const [inline, protected] |
Generates elementary matrices set for a given element
| eSet | the set of elementary matrices | |
| J | the jacobian of the transformation |
Definition at line 128 of file BaseFEMDiscretization.hpp.
Referenced by FEMDiscretization< Structured3DMesh, TypeOfDiscretization >::assembleMatrix(), FEMDiscretization< GivenMeshType, TypeOfDiscretization >::assembleMatrix(), FEMDiscretization< Structured3DMesh, TypeOfDiscretization >::assembleSecondMember(), FEMDiscretization< GivenMeshType, TypeOfDiscretization >::assembleSecondMember(), BaseFEMDiscretization< Structured3DMesh, TypeOfDiscretization >::generatesElementaryMatrix(), FEMDiscretization< Structured3DMesh, TypeOfDiscretization >::getDiagonal(), FEMDiscretization< GivenMeshType, TypeOfDiscretization >::getDiagonal(), FEMDiscretization< Structured3DMesh, TypeOfDiscretization >::timesX(), FEMDiscretization< GivenMeshType, TypeOfDiscretization >::timesX(), FEMDiscretization< Structured3DMesh, TypeOfDiscretization >::transposedTimesX(), and FEMDiscretization< GivenMeshType, TypeOfDiscretization >::transposedTimesX().
00130 { 00131 if (eSet.isMassOperator()) { 00132 generatesElementaryMatrix(PDEOperator::massop, 00133 J, eSet.massOperator()); 00134 } 00135 if (eSet.isFirstOrderOperator()) { 00136 for (size_t i=0; i<3; ++i) { 00137 if (eSet.isFirstOrderUdxV(i)) { 00138 generatesElementaryMatrix(PDEOperator::firstorderopTransposed, 00139 J,eSet.firstOrderOperatorUdxV(i),i); 00140 } 00141 if (eSet.isFirstOrderDxUV(i)) { 00142 generatesElementaryMatrix(PDEOperator::firstorderop, J, 00143 eSet.firstOrderOperatorDxUV(i),i); 00144 } 00145 } 00146 } 00147 if (eSet.isSecondOrderOperator()) { 00148 for (size_t i=0; i<3; ++i) 00149 for (size_t j=0; j<3; ++j) { 00150 if (eSet.isSecondOrderOperator(i,j)) { 00151 generatesElementaryMatrix(PDEOperator::secondorderop, J, 00152 eSet.secondOrderOperator(i,j),i,j); 00153 } 00154 } 00155 } 00156 if (eSet.isDivMuGrad()) { 00157 generatesElementaryMatrix(PDEOperator::divmugrad, J, eSet.divMuGrad()); 00158 } 00159 }
| void BaseFEMDiscretization< GivenMeshType, TypeOfDiscretization >::generatesElementaryMatrix | ( | const PDEOperator::Type | operatorType, | |
| const JacobianTransformation & | J, | |||
| ElementaryMatrixType & | matelem, | |||
| const size_t | i = 0, |
|||
| const size_t | j = 0 | |||
| ) | const [inline, protected] |
Generates an elementary matrix for a given operator in an element. The row and column number can be specified when operator is not scalar:
for instance.
| operatorType | type of the operator | |
| J | jacobian of the transformation | |
| matelem | generated elementary matrix | |
| i | row number | |
| j | column number |
Definition at line 173 of file BaseFEMDiscretization.hpp.
00177 { 00178 matelem = 0; 00179 switch(operatorType) { 00180 case PDEOperator::firstorderop: { 00181 FiniteElement::instance().integrateDWjWi(matelem,i,J); 00182 matelem *= J.jacobianDet(); 00183 break; 00184 } 00185 case PDEOperator::firstorderopTransposed: { 00186 FiniteElement::instance().integrateWjDWi(matelem,i,J); 00187 matelem *= J.jacobianDet(); 00188 break; 00189 } 00190 case PDEOperator::divmugrad: { 00191 FiniteElement::instance().integrateDWjDWi(matelem,0,0,J); 00192 FiniteElement::instance().integrateDWjDWi(matelem,1,1,J); 00193 FiniteElement::instance().integrateDWjDWi(matelem,2,2,J); 00194 matelem *= J.jacobianDet(); 00195 break; 00196 } 00197 case PDEOperator::secondorderop: { 00198 FiniteElement::instance().integrateDWjDWi(matelem,i,j,J); 00199 matelem *= J.jacobianDet(); 00200 break; 00201 } 00202 case PDEOperator::massop: { 00203 FiniteElement::instance().integrateWjWi(matelem,J); 00204 matelem *= J.jacobianDet(); 00205 break; 00206 } 00207 default: { 00208 throw ErrorHandler(__FILE__,__LINE__, 00209 "unable to built elementary matrix for this operator", 00210 ErrorHandler::unexpected); 00211 } 00212 } 00213 }
| void Discretization::setDirichletList | ( | const Vector< bool > & | dirichletList | ) | [inline, inherited] |
Sets dirichlet vertices list
| dirichletList | list of dirichlet vertices |
Definition at line 63 of file Discretization.hpp.
References Discretization::__dirichletList, and ASSERT.
00064 { 00065 ASSERT(__dirichletList == 0); 00066 __dirichletList = &dirichletList; 00067 }
| virtual void Discretization::assembleMatrix | ( | ) | [pure virtual, inherited] |
Computes the matrix using the problem
Implemented in FEMDiscretization< GivenMeshType, TypeOfDiscretization >, FEMDiscretization< Structured3DMesh, TypeOfDiscretization >, SpectralLegendreDiscretizationConform, and SpectralLegendreDiscretizationNonConform.
| virtual void Discretization::assembleSecondMember | ( | ) | [pure virtual, inherited] |
Computes the second memeber using the problem
Implemented in FEMDiscretization< GivenMeshType, TypeOfDiscretization >, FEMDiscretization< Structured3DMesh, TypeOfDiscretization >, SpectralLegendreDiscretizationConform, and SpectralLegendreDiscretizationNonConform.
| virtual void Discretization::getDiagonal | ( | BaseVector & | u | ) | const [pure virtual, inherited] |
Provides interface for to allow computation without matrix
| u | the vector representing the diagonal |
Implemented in FEMDiscretization< GivenMeshType, TypeOfDiscretization >, FEMDiscretization< Structured3DMesh, TypeOfDiscretization >, SpectralLegendreDiscretizationConform, and SpectralLegendreDiscretizationNonConform.
| virtual void Discretization::transposedTimesX | ( | const BaseVector & | x, | |
| BaseVector & | v | |||
| ) | const [pure virtual, inherited] |
Provides interface for to allow computation without matrix
| x | the vector | |
| v | the result |
Implemented in FEMDiscretization< GivenMeshType, TypeOfDiscretization >, FEMDiscretization< Structured3DMesh, TypeOfDiscretization >, SpectralLegendreDiscretizationConform, and SpectralLegendreDiscretizationNonConform.
| virtual void Discretization::timesX | ( | const BaseVector & | x, | |
| BaseVector & | v | |||
| ) | const [pure virtual, inherited] |
Provides interface for to allow computation without matrix
| x | the vector | |
| v | the result |
Implemented in FEMDiscretization< GivenMeshType, TypeOfDiscretization >, FEMDiscretization< Structured3DMesh, TypeOfDiscretization >, SpectralLegendreDiscretizationConform, and SpectralLegendreDiscretizationNonConform.
| const Problem& Discretization::problem | ( | ) | const [inline, inherited] |
Read only access to the problem
Definition at line 109 of file Discretization.hpp.
References Discretization::__problem.
Referenced by SpectralLegendreDiscretizationNonConform::_getLocalDiscretizer(), FEMDiscretization< Structured3DMesh, TypeOfDiscretization >::assembleSecondMember(), and FEMDiscretization< GivenMeshType, TypeOfDiscretization >::assembleSecondMember().
00110 { 00111 return __problem; 00112 }
| BaseMatrix& Discretization::A | ( | ) | [inline, inherited] |
Read only access to the discretization type
__A
Definition at line 130 of file Discretization.hpp.
References Discretization::__A.
Referenced by SpectralLegendreDiscretizationNonConform::assembleMatrix(), SpectralLegendreDiscretizationConform::assembleMatrix(), FEMDiscretization< Structured3DMesh, TypeOfDiscretization >::assembleMatrix(), and FEMDiscretization< GivenMeshType, TypeOfDiscretization >::assembleMatrix().
00131 { 00132 return __A; 00133 }
| BaseVector& Discretization::b | ( | ) | [inline, inherited] |
Access to the second member
Definition at line 140 of file Discretization.hpp.
References Discretization::__b.
Referenced by SpectralLegendreDiscretizationNonConform::_getLocalDiscretizer(), SpectralLegendreDiscretizationNonConform::assembleSecondMember(), SpectralLegendreDiscretizationConform::assembleSecondMember(), FEMDiscretization< Structured3DMesh, TypeOfDiscretization >::assembleSecondMember(), and FEMDiscretization< GivenMeshType, TypeOfDiscretization >::assembleSecondMember().
00141 { 00142 return __b; 00143 }
const MeshType& BaseFEMDiscretization< GivenMeshType, TypeOfDiscretization >::__mesh [protected] |
Mesh used to perform discretization.
Definition at line 95 of file BaseFEMDiscretization.hpp.
Referenced by FEMDiscretization< Structured3DMesh, TypeOfDiscretization >::assembleMatrix(), FEMDiscretization< GivenMeshType, TypeOfDiscretization >::assembleMatrix(), FEMDiscretization< Structured3DMesh, TypeOfDiscretization >::assembleSecondMember(), FEMDiscretization< GivenMeshType, TypeOfDiscretization >::assembleSecondMember(), FEMDiscretization< Structured3DMesh, TypeOfDiscretization >::getDiagonal(), FEMDiscretization< GivenMeshType, TypeOfDiscretization >::getDiagonal(), FEMDiscretization< Structured3DMesh, TypeOfDiscretization >::timesX(), FEMDiscretization< GivenMeshType, TypeOfDiscretization >::timesX(), FEMDiscretization< Structured3DMesh, TypeOfDiscretization >::transposedTimesX(), and FEMDiscretization< GivenMeshType, TypeOfDiscretization >::transposedTimesX().
ElementaryMatrixSet<ElementaryMatrixType> BaseFEMDiscretization< GivenMeshType, TypeOfDiscretization >::__eSet [mutable, protected] |
Set of elementary matrices.
Definition at line 98 of file BaseFEMDiscretization.hpp.
Referenced by FEMDiscretization< Structured3DMesh, TypeOfDiscretization >::assembleMatrix(), FEMDiscretization< GivenMeshType, TypeOfDiscretization >::assembleMatrix(), FEMDiscretization< Structured3DMesh, TypeOfDiscretization >::getDiagonal(), FEMDiscretization< GivenMeshType, TypeOfDiscretization >::getDiagonal(), FEMDiscretization< Structured3DMesh, TypeOfDiscretization >::timesX(), FEMDiscretization< GivenMeshType, TypeOfDiscretization >::timesX(), FEMDiscretization< Structured3DMesh, TypeOfDiscretization >::transposedTimesX(), and FEMDiscretization< GivenMeshType, TypeOfDiscretization >::transposedTimesX().
DiscretizedOperators<ElementaryMatrixType> BaseFEMDiscretization< GivenMeshType, TypeOfDiscretization >::__discretizedOperators [mutable, protected] |
Operators that are discretized.
Definition at line 101 of file BaseFEMDiscretization.hpp.
Referenced by FEMDiscretization< Structured3DMesh, TypeOfDiscretization >::assembleMatrix(), FEMDiscretization< GivenMeshType, TypeOfDiscretization >::assembleMatrix(), FEMDiscretization< Structured3DMesh, TypeOfDiscretization >::getDiagonal(), FEMDiscretization< GivenMeshType, TypeOfDiscretization >::getDiagonal(), FEMDiscretization< Structured3DMesh, TypeOfDiscretization >::timesX(), FEMDiscretization< GivenMeshType, TypeOfDiscretization >::timesX(), FEMDiscretization< Structured3DMesh, TypeOfDiscretization >::transposedTimesX(), and FEMDiscretization< GivenMeshType, TypeOfDiscretization >::transposedTimesX().
const DegreeOfFreedomSet& BaseFEMDiscretization< GivenMeshType, TypeOfDiscretization >::__degreeOfFreedomSet [protected] |
Set of degrees of freedom.
Definition at line 104 of file BaseFEMDiscretization.hpp.
Referenced by FEMDiscretization< Structured3DMesh, TypeOfDiscretization >::assembleMatrix(), FEMDiscretization< GivenMeshType, TypeOfDiscretization >::assembleMatrix(), FEMDiscretization< Structured3DMesh, TypeOfDiscretization >::assembleSecondMember(), FEMDiscretization< GivenMeshType, TypeOfDiscretization >::assembleSecondMember(), FEMDiscretization< Structured3DMesh, TypeOfDiscretization >::getDiagonal(), FEMDiscretization< GivenMeshType, TypeOfDiscretization >::getDiagonal(), FEMDiscretization< Structured3DMesh, TypeOfDiscretization >::timesX(), FEMDiscretization< GivenMeshType, TypeOfDiscretization >::timesX(), FEMDiscretization< Structured3DMesh, TypeOfDiscretization >::transposedTimesX(), and FEMDiscretization< GivenMeshType, TypeOfDiscretization >::transposedTimesX().
const DiscretizationType Discretization::__discretizationType [protected, inherited] |
The full description of the discretization
Reimplemented in SpectralLegendreDiscretizationNonConform.
Definition at line 43 of file Discretization.hpp.
Referenced by FEMDiscretization< Structured3DMesh, TypeOfDiscretization >::FEMDiscretization(), and FEMDiscretization< GivenMeshType, TypeOfDiscretization >::FEMDiscretization().
const Problem& Discretization::__problem [protected, inherited] |
The PDEProblem to discretize.
Definition at line 46 of file Discretization.hpp.
Referenced by Discretization::problem().
BaseMatrix& Discretization::__A [protected, inherited] |
The matrix which will contain the discretization.
Definition at line 49 of file Discretization.hpp.
Referenced by SpectralLegendreDiscretizationNonConform::_getLocalDiscretizer(), Discretization::A(), SpectralLegendreDiscretizationNonConform::assembleMatrix(), SpectralLegendreDiscretizationConform::assembleMatrix(), FEMDiscretization< Structured3DMesh, TypeOfDiscretization >::assembleMatrix(), and FEMDiscretization< GivenMeshType, TypeOfDiscretization >::assembleMatrix().
BaseVector& Discretization::__b [protected, inherited] |
The second member.
Definition at line 52 of file Discretization.hpp.
Referenced by SpectralLegendreDiscretizationNonConform::_getLocalDiscretizer(), SpectralLegendreDiscretizationNonConform::assembleSecondMember(), SpectralLegendreDiscretizationConform::assembleSecondMember(), FEMDiscretization< Structured3DMesh, TypeOfDiscretization >::assembleSecondMember(), FEMDiscretization< GivenMeshType, TypeOfDiscretization >::assembleSecondMember(), and Discretization::b().
const Vector<bool>* Discretization::__dirichletList [protected, inherited] |
elimination dirichlet informations
Definition at line 55 of file Discretization.hpp.
Referenced by Discretization::setDirichletList(), FEMDiscretization< Structured3DMesh, TypeOfDiscretization >::timesX(), FEMDiscretization< GivenMeshType, TypeOfDiscretization >::timesX(), FEMDiscretization< Structured3DMesh, TypeOfDiscretization >::transposedTimesX(), and FEMDiscretization< GivenMeshType, TypeOfDiscretization >::transposedTimesX().
1.5.6