
Public Member Functions | |
| template<typename SurfaceMeshType> | |
| void | eval (const SurfaceMeshType &surfaceMesh) const |
| __SetSecondMemberDirichlet (const Dirichlet &dirichlet, const size_t equationNumber, VectorType &b, const BoundaryConditionDiscretizationPenalty< MeshType, TypeOfDiscretization > &bc) | |
| __SetSecondMemberDirichlet (const __SetSecondMemberDirichlet &S) | |
| ~__SetSecondMemberDirichlet () | |
Private Attributes | |
| const Dirichlet & | __dirichlet |
| const size_t | __equationNumber |
| VectorType & | __b |
| const BoundaryConditionDiscretizationPenalty < MeshType, TypeOfDiscretization > & | __bc |
Definition at line 791 of file BoundaryConditionDiscretizationPenalty.hpp.
| BoundaryConditionDiscretizationPenalty< MeshType, TypeOfDiscretization >::__SetSecondMemberDirichlet< VectorType >::__SetSecondMemberDirichlet | ( | const Dirichlet & | dirichlet, | |
| const size_t | equationNumber, | |||
| VectorType & | b, | |||
| const BoundaryConditionDiscretizationPenalty< MeshType, TypeOfDiscretization > & | bc | |||
| ) | [inline] |
Definition at line 887 of file BoundaryConditionDiscretizationPenalty.hpp.
00892 : __dirichlet(dirichlet), 00893 __equationNumber(equationNumber), 00894 __b(b), 00895 __bc(bc) 00896 { 00897 ; 00898 }
| BoundaryConditionDiscretizationPenalty< MeshType, TypeOfDiscretization >::__SetSecondMemberDirichlet< VectorType >::__SetSecondMemberDirichlet | ( | const __SetSecondMemberDirichlet< VectorType > & | S | ) | [inline] |
Definition at line 900 of file BoundaryConditionDiscretizationPenalty.hpp.
00901 : __dirichlet(S.__dirichlet), 00902 __equationNumber(S.__equationNumber), 00903 __b(S.__b), 00904 __bc(S.__bc) 00905 { 00906 ; 00907 }
| BoundaryConditionDiscretizationPenalty< MeshType, TypeOfDiscretization >::__SetSecondMemberDirichlet< VectorType >::~__SetSecondMemberDirichlet | ( | ) | [inline] |
| void BoundaryConditionDiscretizationPenalty< MeshType, TypeOfDiscretization >::__SetSecondMemberDirichlet< VectorType >::eval | ( | const SurfaceMeshType & | surfaceMesh | ) | const [inline] |
Definition at line 806 of file BoundaryConditionDiscretizationPenalty.hpp.
References BoundaryConditionDiscretizationPenalty< MeshType, TypeOfDiscretization >::__SetSecondMemberDirichlet< VectorType >::__b, BoundaryConditionDiscretizationPenalty< MeshType, TypeOfDiscretization >::__SetSecondMemberDirichlet< VectorType >::__bc, BoundaryConditionDiscretizationPenalty< MeshType, TypeOfDiscretization >::__SetSecondMemberDirichlet< VectorType >::__dirichlet, BoundaryConditionDiscretizationPenalty< MeshType, TypeOfDiscretization >::__SetSecondMemberDirichlet< VectorType >::__equationNumber, and Dirichlet::g().
00807 { 00808 typedef typename SurfaceMeshType::CellType BoundaryCellType; 00809 00810 typedef 00811 typename FiniteElementTraits<BoundaryCellType, 00812 TypeOfDiscretization>::Transformation 00813 BoundaryConformTransformation; 00814 00815 typedef 00816 typename FiniteElementTraits<BoundaryCellType, 00817 TypeOfDiscretization>::Type 00818 BoundaryFiniteElement; 00819 00820 typedef 00821 typename BoundaryFiniteElement::QuadratureType 00822 BoundaryQuadratureType; 00823 00824 const FiniteElement& finiteElement = FiniteElement::instance(); 00825 00826 const BoundaryQuadratureType& referenceBoundaryQuadrature 00827 = BoundaryQuadratureType::instance(); 00828 00829 const ScalarDegreeOfFreedomPositionsSet& dofPositions 00830 = __bc.__degreeOfFreedomSet.positionsSet(0); 00831 00832 AutoPointer<ConformTransformation> pT; 00833 00834 const CellType* lastCell = 0; 00835 00836 for (typename SurfaceMeshType::const_iterator iface(surfaceMesh); 00837 not(iface.end()); ++iface) { 00838 const typename SurfaceMeshType::CellType& face = *iface; 00839 const BoundaryConformTransformation boundaryT(face); 00840 00841 const CellType& cell 00842 = static_cast<const CellType&>(face.mother()); 00843 00844 if(lastCell != &cell) { 00845 pT = new ConformTransformation(cell); 00846 lastCell = &cell; 00847 } 00848 00849 const ConformTransformation T = *pT; 00850 00851 const size_t cellNumber = __bc.mesh().cellNumber(cell); 00852 00853 for (size_t k=0; k<BoundaryQuadratureType::numberOfQuadraturePoints; 00854 k++) { 00855 // computes local quadrature vertex 00856 TinyVector<3, real_t> q; 00857 boundaryT.value(referenceBoundaryQuadrature[k], q); 00858 00859 const real_t weight 00860 = referenceBoundaryQuadrature.weight(k) 00861 * face.volume(); 00862 00863 TinyVector<3> coordinates; 00864 T.invertT(q, coordinates); 00865 00866 const real_t GValue = __dirichlet.g(q); 00867 00868 typename FiniteElement::ElementaryVector W; 00869 for (size_t l=0; l<FiniteElement::numberOfDegreesOfFreedom; l++) 00870 W[l] = finiteElement.W(l,coordinates); 00871 00872 size_t indices[FiniteElement::numberOfDegreesOfFreedom]; 00873 for (size_t l=0; l<FiniteElement::numberOfDegreesOfFreedom; ++l) { 00874 indices[l] = dofPositions(cellNumber, l); 00875 } 00876 00877 for (size_t l=0; l<FiniteElement::numberOfDegreesOfFreedom; l++) { 00878 const size_t I = __bc.__degreeOfFreedomSet(__equationNumber, 00879 indices[l]); 00880 // Assembling second member 00881 __b[I] += W[l] * weight * GValue / __bc.__epsilon; 00882 } 00883 } 00884 } 00885 }

const Dirichlet& BoundaryConditionDiscretizationPenalty< MeshType, TypeOfDiscretization >::__SetSecondMemberDirichlet< VectorType >::__dirichlet [private] |
Definition at line 794 of file BoundaryConditionDiscretizationPenalty.hpp.
Referenced by BoundaryConditionDiscretizationPenalty< MeshType, TypeOfDiscretization >::__SetSecondMemberDirichlet< VectorType >::eval().
const size_t BoundaryConditionDiscretizationPenalty< MeshType, TypeOfDiscretization >::__SetSecondMemberDirichlet< VectorType >::__equationNumber [private] |
Definition at line 796 of file BoundaryConditionDiscretizationPenalty.hpp.
Referenced by BoundaryConditionDiscretizationPenalty< MeshType, TypeOfDiscretization >::__SetSecondMemberDirichlet< VectorType >::eval().
VectorType& BoundaryConditionDiscretizationPenalty< MeshType, TypeOfDiscretization >::__SetSecondMemberDirichlet< VectorType >::__b [private] |
Definition at line 798 of file BoundaryConditionDiscretizationPenalty.hpp.
Referenced by BoundaryConditionDiscretizationPenalty< MeshType, TypeOfDiscretization >::__SetSecondMemberDirichlet< VectorType >::eval().
const BoundaryConditionDiscretizationPenalty<MeshType, TypeOfDiscretization>& BoundaryConditionDiscretizationPenalty< MeshType, TypeOfDiscretization >::__SetSecondMemberDirichlet< VectorType >::__bc [private] |
Definition at line 801 of file BoundaryConditionDiscretizationPenalty.hpp.
Referenced by BoundaryConditionDiscretizationPenalty< MeshType, TypeOfDiscretization >::__SetSecondMemberDirichlet< VectorType >::eval().
1.5.6