
Public Member Functions | |
| template<typename SurfaceMeshType> | |
| void | eval (const SurfaceMeshType &surfaceMesh) const |
| __GetDiagonalDirichletBoundaryConditions (const Dirichlet &D, const size_t equationNumber, VectorType &z, const BoundaryConditionDiscretizationPenalty &bc) | |
| __GetDiagonalDirichletBoundaryConditions (const __GetDiagonalDirichletBoundaryConditions &G) | |
| ~__GetDiagonalDirichletBoundaryConditions () | |
Private Attributes | |
| const Dirichlet & | __dirichlet |
| const size_t | __equationNumber |
| VectorType & | __z |
| const BoundaryConditionDiscretizationPenalty < MeshType, TypeOfDiscretization > & | __bc |
Definition at line 389 of file BoundaryConditionDiscretizationPenalty.hpp.
| BoundaryConditionDiscretizationPenalty< MeshType, TypeOfDiscretization >::__GetDiagonalDirichletBoundaryConditions< VectorType >::__GetDiagonalDirichletBoundaryConditions | ( | const Dirichlet & | D, | |
| const size_t | equationNumber, | |||
| VectorType & | z, | |||
| const BoundaryConditionDiscretizationPenalty & | bc | |||
| ) | [inline] |
Definition at line 483 of file BoundaryConditionDiscretizationPenalty.hpp.
00487 : __dirichlet(D), 00488 __equationNumber(equationNumber), 00489 __z(z), 00490 __bc(bc) 00491 { 00492 ; 00493 }
| BoundaryConditionDiscretizationPenalty< MeshType, TypeOfDiscretization >::__GetDiagonalDirichletBoundaryConditions< VectorType >::__GetDiagonalDirichletBoundaryConditions | ( | const __GetDiagonalDirichletBoundaryConditions< VectorType > & | G | ) | [inline] |
Definition at line 495 of file BoundaryConditionDiscretizationPenalty.hpp.
00496 : __dirichlet(G.__dirichlet), 00497 __equationNumber(G.__equationNumber), 00498 __z(G.__z), 00499 __bc(G.__bc) 00500 { 00501 ; 00502 }
| BoundaryConditionDiscretizationPenalty< MeshType, TypeOfDiscretization >::__GetDiagonalDirichletBoundaryConditions< VectorType >::~__GetDiagonalDirichletBoundaryConditions | ( | ) | [inline] |
| void BoundaryConditionDiscretizationPenalty< MeshType, TypeOfDiscretization >::__GetDiagonalDirichletBoundaryConditions< VectorType >::eval | ( | const SurfaceMeshType & | surfaceMesh | ) | const [inline] |
Definition at line 404 of file BoundaryConditionDiscretizationPenalty.hpp.
References BoundaryConditionDiscretizationPenalty< MeshType, TypeOfDiscretization >::__GetDiagonalDirichletBoundaryConditions< VectorType >::__bc, BoundaryConditionDiscretizationPenalty< MeshType, TypeOfDiscretization >::__GetDiagonalDirichletBoundaryConditions< VectorType >::__equationNumber, and BoundaryConditionDiscretizationPenalty< MeshType, TypeOfDiscretization >::__GetDiagonalDirichletBoundaryConditions< VectorType >::__z.
00405 { 00406 typedef typename SurfaceMeshType::CellType BoundaryCellType; 00407 00408 typedef 00409 typename FiniteElementTraits<BoundaryCellType, 00410 TypeOfDiscretization>::Transformation 00411 BoundaryConformTransformation; 00412 00413 typedef 00414 typename FiniteElementTraits<BoundaryCellType, 00415 TypeOfDiscretization>::Type 00416 BoundaryFiniteElement; 00417 00418 typedef 00419 typename BoundaryFiniteElement::QuadratureType 00420 BoundaryQuadratureType; 00421 00422 const FiniteElement& finiteElement = FiniteElement::instance(); 00423 00424 const BoundaryQuadratureType& referenceBoundaryQuadrature 00425 = BoundaryQuadratureType::instance(); 00426 00427 const ScalarDegreeOfFreedomPositionsSet& dofPositions 00428 = __bc.__degreeOfFreedomSet.positionsSet(0); 00429 00430 AutoPointer<ConformTransformation> pT; 00431 00432 const CellType* lastCell = 0; 00433 00434 for (typename SurfaceMeshType::const_iterator iface(surfaceMesh); 00435 not(iface.end()); ++iface) { 00436 const typename SurfaceMeshType::CellType& face = *iface; 00437 const BoundaryConformTransformation boundaryT(face); 00438 00439 const CellType& cell 00440 = static_cast<const CellType&>(face.mother()); 00441 00442 if(lastCell != &cell) { 00443 pT = new ConformTransformation(cell); 00444 lastCell = &cell; 00445 } 00446 00447 const size_t cellNumber = __bc.mesh().cellNumber(cell); 00448 00449 const ConformTransformation& T = *pT; 00450 00451 for (size_t k=0; k<BoundaryQuadratureType::numberOfQuadraturePoints; 00452 k++) { 00453 // computes local quadrature vertex 00454 TinyVector<3, real_t> q; 00455 boundaryT.value(referenceBoundaryQuadrature[k], q); 00456 00457 const real_t weight 00458 = referenceBoundaryQuadrature.weight(k) 00459 * face.volume(); 00460 00461 TinyVector<3> coordinates; 00462 T.invertT(q, coordinates); 00463 00464 typename FiniteElement::ElementaryVector W; 00465 for (size_t l=0; l<FiniteElement::numberOfDegreesOfFreedom; l++) 00466 W[l] = finiteElement.W(l,coordinates); 00467 00468 size_t indices[FiniteElement::numberOfDegreesOfFreedom]; 00469 for (size_t l=0; l<FiniteElement::numberOfDegreesOfFreedom; ++l) { 00470 indices[l] = __bc.__degreeOfFreedomSet(__equationNumber, 00471 dofPositions(cellNumber,l)); 00472 } 00473 00474 for (size_t l=0; l<FiniteElement::numberOfDegreesOfFreedom; l++) { 00475 const size_t& I = indices[l]; 00476 __z[I] += W[l] * W[l] * weight / __bc.__epsilon; 00477 } 00478 } 00479 } 00480 }
const Dirichlet& BoundaryConditionDiscretizationPenalty< MeshType, TypeOfDiscretization >::__GetDiagonalDirichletBoundaryConditions< VectorType >::__dirichlet [private] |
Definition at line 392 of file BoundaryConditionDiscretizationPenalty.hpp.
const size_t BoundaryConditionDiscretizationPenalty< MeshType, TypeOfDiscretization >::__GetDiagonalDirichletBoundaryConditions< VectorType >::__equationNumber [private] |
VectorType& BoundaryConditionDiscretizationPenalty< MeshType, TypeOfDiscretization >::__GetDiagonalDirichletBoundaryConditions< VectorType >::__z [private] |
const BoundaryConditionDiscretizationPenalty<MeshType, TypeOfDiscretization>& BoundaryConditionDiscretizationPenalty< MeshType, TypeOfDiscretization >::__GetDiagonalDirichletBoundaryConditions< VectorType >::__bc [private] |
1.5.6