

Public Types | |
| enum | { NumberOfVertices = 3, NumberOfFaces = 3, NumberOfEdges = 3 } |
| typedef Edge | FaceType |
| enum | Type { hexahedron, cartesianHexahedron, hexahedronByEdge, tetrahedron, triangle3d, quadrangle3d } |
Public Member Functions | |
| TriangleCut () | |
| TriangleCut (const TriangleCut &K) | |
| TriangleCut (const Vertex &v0, const Vertex &v1, const Vertex &v2, size_t num, size_t num2) | |
| ~TriangleCut () | |
| Destructor. | |
| void | getBarycentricCoordinates (const TinyVector< 2, real_t > &X, TinyVector< 3, real_t > &lambda) const |
| size_t | numberOfVertices () const |
| Cell::Type | type () const |
| const TinyVector< 3, real_t > | normal () const |
| Edge | edge (size_t i) const |
| const Cell & | mother () const |
| size_t | motherCellFaceNumber () const |
| void | setMother (const Cell *cell, const size_t faceNumber) |
| bool | find (const Vertex *P) |
| const real_t & | volume () const |
| void | replace (Vertex *v0, Vertex *v1) |
| const bool & | isFictitious () const |
| void | setFictitious (const bool &b) const |
| const size_t & | reference () const |
| size_t & | reference () |
| Vertex & | operator() (const size_t &i) |
| const Vertex & | operator() (const size_t &i) const |
Public Attributes | |
| TinyVector< 3, TinyVector < 2, int > > | edgecut |
| TinyVector< 3, size_t > | isInTriangle |
| TinyVector< 3, TinyVector < 2, const Vertex * > > | pointsIntersection |
| std::map< const Vertex *,const Vertex * > | pointsin |
| size_t | numobject |
| size_t | otherobject |
Static Public Attributes | |
| static const size_t | faces [NumberOfEdges][FaceType::NumberOfVertices] = {{1,2},{2,0},{0,1}} |
| static const size_t | edges [NumberOfEdges][Edge::NumberOfVertices] = {{1,2},{2,0},{0,1}} |
Protected Attributes | |
| const Cell * | __motherCell |
| size_t | __motherCellFaceNumber |
| size_t | __reference |
| Reference of the Cell. | |
| real_t | __volume |
| Volume or surface of the cell. | |
| Vertex ** | __vertices |
| Pointers on vertices of the cell. | |
| bool | __isFictitious |
| indicates if the cell is to be taken into accounts for computations | |
Definition at line 497 of file SurfaceMeshGenerator.cpp.
typedef Edge Triangle::FaceType [inherited] |
Definition at line 63 of file Triangle.hpp.
anonymous enum [inherited] |
| NumberOfVertices | number of vertices |
| NumberOfFaces | number of faces |
| NumberOfEdges | number of edges |
Definition at line 57 of file Triangle.hpp.
00057 { 00058 NumberOfVertices = 3, 00059 NumberOfFaces = 3, 00060 NumberOfEdges = 3 00061 };
enum Cell::Type [inherited] |
Definition at line 40 of file Cell.hpp.
00040 { 00041 hexahedron, 00042 cartesianHexahedron, 00043 hexahedronByEdge, 00044 tetrahedron, 00045 triangle3d, 00046 quadrangle3d 00047 };
| SurfaceMeshGenerator::Internals::TriangleCut::TriangleCut | ( | ) | [inline] |
| SurfaceMeshGenerator::Internals::TriangleCut::TriangleCut | ( | const TriangleCut & | K | ) | [inline] |
Definition at line 514 of file SurfaceMeshGenerator.cpp.
References edgecut, isInTriangle, numobject, otherobject, pointsin, and pointsIntersection.
00514 { 00515 edgecut=K.edgecut; 00516 isInTriangle=K.isInTriangle; 00517 pointsIntersection=K.pointsIntersection; 00518 pointsin=K.pointsin; 00519 numobject=K.numobject; 00520 otherobject=K.otherobject; 00521 }
| SurfaceMeshGenerator::Internals::TriangleCut::TriangleCut | ( | const Vertex & | v0, | |
| const Vertex & | v1, | |||
| const Vertex & | v2, | |||
| size_t | num, | |||
| size_t | num2 | |||
| ) | [inline] |
Definition at line 523 of file SurfaceMeshGenerator.cpp.
References edgecut, isInTriangle, numobject, and otherobject.
00528 : Triangle(v0,v1,v2) 00529 { 00530 numobject=num; 00531 otherobject=num2; 00532 edgecut=0; 00533 isInTriangle=0; 00534 }
| SurfaceMeshGenerator::Internals::TriangleCut::~TriangleCut | ( | ) | [inline] |
| void Triangle::getBarycentricCoordinates | ( | const TinyVector< 2, real_t > & | X, | |
| TinyVector< 3, real_t > & | lambda | |||
| ) | const [inline, inherited] |
computes barycentric coordinates in the current triangle related to a given X position.
| X | Cartesian coordinates | |
| lambda | barycentric coordinates |
Definition at line 78 of file Triangle.hpp.
Referenced by MeshOfTriangles::find().
00080 { 00081 TinyVector<3, real_t> X2; 00082 X2[0] = X[0]; 00083 X2[1] = X[1]; 00084 X2[2] = 1; 00085 00086 TinyMatrix<3, 3, real_t> M = 0; 00087 for (size_t i=0; i<3; ++i) { 00088 const Vertex& V = (*this)(i); 00089 for (size_t j=0; j<2; ++j) { 00090 M(j, i) = V[j]; 00091 } 00092 } 00093 00094 for (size_t i=0; i<3; ++i) { 00095 M(2,i) = 1; 00096 } 00097 00098 lambda = X2/M; 00099 }
| size_t Triangle::numberOfVertices | ( | ) | const [inline, virtual, inherited] |
The number of vertices of a triangle
Implements Cell.
Definition at line 106 of file Triangle.hpp.
References Triangle::NumberOfVertices.
00107 { 00108 return NumberOfVertices; 00109 }
| Cell::Type Triangle::type | ( | ) | const [inline, virtual, inherited] |
Access to the type of this cell
Implements Cell.
Definition at line 116 of file Triangle.hpp.
References Cell::triangle3d.
00117 { 00118 return Cell::triangle3d; 00119 }
| const TinyVector<3,real_t> Triangle::normal | ( | ) | const [inline, virtual, inherited] |
Returns the normal to the face.
Implements SurfElem.
Definition at line 127 of file Triangle.hpp.
References Cell::__vertices.
00128 { 00129 const TinyVector<3>& v0 = *(__vertices[0]); 00130 const TinyVector<3>& v1 = *(__vertices[1]); 00131 const TinyVector<3>& v2 = *(__vertices[2]); 00132 00133 const TinyVector<3> A(v1-v0); 00134 const TinyVector<3> B(v2-v0); 00135 TinyVector<3> N(A^B); 00136 const real_t n = Norm(N); 00137 N/=n; 00138 return N; 00139 }
| Edge Triangle::edge | ( | size_t | i | ) | const [inline, inherited] |
Access to the ith edge of the triangle
| i | the number of the Edge |
Definition at line 148 of file Triangle.hpp.
References Cell::__vertices, ASSERT, and Triangle::NumberOfVertices.
Referenced by MeshSimplifier::__proceed().
00149 { 00150 ASSERT(i<NumberOfVertices); 00151 return Edge(*__vertices[(i+1)%3], *__vertices[(i+2)%3]); 00152 }
| const Cell& SurfElem::mother | ( | ) | const [inline, inherited] |
Access to the mother cell
Definition at line 55 of file SurfElem.hpp.
References SurfElem::__motherCell, and ASSERT.
Referenced by SurfaceMeshGenerator::Internals::__constructionFinalMesh(), SurfaceMeshGenerator::Internals::__createTrianglesIntersection(), MeshSimplifier::__proceed(), and SurfaceMeshGenerator::Internals::__setMotherCells().
00056 { 00057 ASSERT(__motherCell!=0); 00058 return *__motherCell; 00059 }
| size_t SurfElem::motherCellFaceNumber | ( | ) | const [inline, inherited] |
Access to the mother cell face number
Definition at line 65 of file SurfElem.hpp.
References SurfElem::__motherCell, SurfElem::__motherCellFaceNumber, and ASSERT.
00066 { 00067 ASSERT(__motherCell!=0); 00068 return __motherCellFaceNumber; 00069 }
| void SurfElem::setMother | ( | const Cell * | cell, | |
| const size_t | faceNumber | |||
| ) | [inline, inherited] |
Sets the mother cell
Definition at line 75 of file SurfElem.hpp.
References SurfElem::__motherCell, and SurfElem::__motherCellFaceNumber.
Referenced by SurfaceMeshGenerator::Internals::__addTriangle(), SurfaceMeshGenerator::Internals::__constructionFinalMesh(), SurfaceMeshGenerator::Internals::__dataStructureConvertion(), MeshSimplifier::__proceed(), SurfaceMeshGenerator::Internals::__setMotherCells(), SpectralMesh::SpectralMesh(), and Structured3DMesh::Structured3DMesh().
00077 { 00078 __motherCell = cell; 00079 __motherCellFaceNumber = faceNumber; 00080 }
| bool Cell::find | ( | const Vertex * | P | ) | [inline, inherited] |
Find the vertex P in the cell
Definition at line 69 of file Cell.hpp.
References Cell::__vertices, and Cell::numberOfVertices().
Referenced by Triangulation::__checkLine().
00069 { 00070 for(size_t i=0 ; i<numberOfVertices() ; ++i) { 00071 if(__vertices[i]==P) { 00072 return true; 00073 } 00074 } 00075 return false; 00076 }

| const real_t& Cell::volume | ( | ) | const [inline, inherited] |
Read-only access to the volume of the cell
Definition at line 83 of file Cell.hpp.
References Cell::__volume.
Referenced by FEMDiscretization< Structured3DMesh, TypeOfDiscretization >::assembleSecondMember(), ConformTransformationP1TriangleJacobian::ConformTransformationP1TriangleJacobian(), ConformTransformationQ1QuadrangleJacobian::ConformTransformationQ1QuadrangleJacobian(), BoundaryConditionDiscretizationSpectralNonConform::getDiagonal(), BoundaryConditionDiscretizationSpectralNonConform::setSecondMember(), BoundaryConditionDiscretizationSpectralNonConform::timesX(), and BoundaryConditionDiscretizationSpectralNonConform::transposedTimesX().
00084 { 00085 return __volume; 00086 }
Replaces a vertex by another
| v0 | the vertex to replace | |
| v1 | the new vertex |
Definition at line 94 of file Cell.hpp.
References Cell::__vertices, Cell::numberOfVertices(), stringify(), and ErrorHandler::unexpected.
00095 { 00096 for (size_t i = 0; i<numberOfVertices(); ++i) { 00097 if (__vertices[i] == v0) { 00098 __vertices[i] = v1; 00099 return; 00100 } 00101 } 00102 00103 const std::string errorMsg 00104 = "vertex "+stringify(v0)+" was not found while replacing "+stringify(v1); 00105 00106 throw ErrorHandler(__FILE__,__LINE__, 00107 errorMsg, 00108 ErrorHandler::unexpected); 00109 }

| const bool& Cell::isFictitious | ( | ) | const [inline, inherited] |
Read-only access to the fictitious state of the cell
Definition at line 116 of file Cell.hpp.
References Cell::__isFictitious.
Referenced by FEMDiscretization< Structured3DMesh, TypeOfDiscretization >::assembleSecondMember().
00117 { 00118 return __isFictitious; 00119 }
| void Cell::setFictitious | ( | const bool & | b | ) | const [inline, inherited] |
Sets fictitious state of the cell
Definition at line 127 of file Cell.hpp.
References Cell::__isFictitious.
Referenced by FictitiousDomainMethod::Compute().
00128 { 00129 __isFictitious = b; 00130 }
| const size_t& Cell::reference | ( | ) | const [inline, inherited] |
Read-only access to the reference of the Cell.
Definition at line 151 of file Cell.hpp.
References Cell::__reference.
Referenced by SurfaceMeshGenerator::Internals::__constructionFinalMesh(), SurfaceMeshGenerator::Internals::__createGeneral(), SurfaceMeshGenerator::Internals::__createSurface(), SurfaceMeshGenerator::Internals::__createTriangle(), SurfaceMeshGenerator::Internals::__createTrianglesIntersection(), SurfaceMeshGenerator::Internals::__generateMesh(), SurfaceMeshGenerator::Internals::__putRefByFront(), SurfaceMeshGenerator::Internals::UnionTest::compute(), SurfaceMeshGenerator::Internals::IntersectionTest::compute(), SurfaceMeshGenerator::generateSurfacicMesh(), and MeshDomainTetrahedrizor::run().
00152 { 00153 return __reference; 00154 }
| size_t& Cell::reference | ( | ) | [inline, inherited] |
Access to the reference of the Cell.
Definition at line 161 of file Cell.hpp.
References Cell::__reference.
00162 { 00163 return __reference; 00164 }
| Vertex& Cell::operator() | ( | const size_t & | i | ) | [inline, inherited] |
Access to the ith Vertex of the Cell.
| i | the local number of the vertex |
Definition at line 173 of file Cell.hpp.
References Cell::__vertices, ASSERT, and Cell::numberOfVertices().
00174 { 00175 ASSERT (i<numberOfVertices()); 00176 return *__vertices[i]; 00177 }

| const Vertex& Cell::operator() | ( | const size_t & | i | ) | const [inline, inherited] |
Read-only access to the ith Vertex of the Cell.
| i | the local number of the vertex |
Definition at line 186 of file Cell.hpp.
References Cell::__vertices, ASSERT, and Cell::numberOfVertices().
00187 { 00188 ASSERT (i<numberOfVertices()); 00189 return *(__vertices[i]); 00190 }

Definition at line 501 of file SurfaceMeshGenerator.cpp.
Referenced by SurfaceMeshGenerator::Internals::__create2SD(), SurfaceMeshGenerator::Internals::__create3in(), SurfaceMeshGenerator::Internals::__createCase(), SurfaceMeshGenerator::Internals::__createGeneral(), SurfaceMeshGenerator::Internals::__createList(), SurfaceMeshGenerator::Internals::__createLocalListIntersection(), SurfaceMeshGenerator::Internals::__determinateCase(), SurfaceMeshGenerator::Internals::__findInEdges(), SurfaceMeshGenerator::Internals::__findOneEdge(), and TriangleCut().
Definition at line 502 of file SurfaceMeshGenerator.cpp.
Referenced by SurfaceMeshGenerator::Internals::__addList(), SurfaceMeshGenerator::Internals::__createCase(), SurfaceMeshGenerator::Internals::__createGeneral(), SurfaceMeshGenerator::Internals::__createList(), and TriangleCut().
| TinyVector<3,TinyVector<2,const Vertex*> > SurfaceMeshGenerator::Internals::TriangleCut::pointsIntersection |
Definition at line 503 of file SurfaceMeshGenerator.cpp.
Referenced by SurfaceMeshGenerator::Internals::__create2SD(), SurfaceMeshGenerator::Internals::__create3in(), SurfaceMeshGenerator::Internals::__createList(), SurfaceMeshGenerator::Internals::__createLocalListIntersection(), SurfaceMeshGenerator::Internals::__findInEdges(), SurfaceMeshGenerator::Internals::__findOneEdge(), and TriangleCut().
| std::map< const Vertex* ,const Vertex*> SurfaceMeshGenerator::Internals::TriangleCut::pointsin |
Definition at line 504 of file SurfaceMeshGenerator.cpp.
Referenced by SurfaceMeshGenerator::Internals::__createLocalListIntersection(), and TriangleCut().
Definition at line 505 of file SurfaceMeshGenerator.cpp.
Referenced by SurfaceMeshGenerator::Internals::__createLocalListIntersection(), and TriangleCut().
const size_t Triangle::faces = {{1,2},{2,0},{0,1}} [static, inherited] |
Definition at line 65 of file Triangle.hpp.
const size_t Triangle::edges = {{1,2},{2,0},{0,1}} [static, inherited] |
Definition at line 66 of file Triangle.hpp.
const Cell* SurfElem::__motherCell [protected, inherited] |
The mother cell (ie: a 3d element which interacts with the triangle)
Definition at line 47 of file SurfElem.hpp.
Referenced by SurfElem::mother(), SurfElem::motherCellFaceNumber(), SurfElem::operator=(), and SurfElem::setMother().
size_t SurfElem::__motherCellFaceNumber [protected, inherited] |
Definition at line 48 of file SurfElem.hpp.
Referenced by SurfElem::motherCellFaceNumber(), SurfElem::operator=(), and SurfElem::setMother().
size_t Cell::__reference [protected, inherited] |
real_t Cell::__volume [protected, inherited] |
Volume or surface of the cell.
Definition at line 54 of file Cell.hpp.
Referenced by Triangle::__computeVolume(), Quadrangle::__computeVolume(), CartesianHexahedron::CartesianHexahedron(), Hexahedron::Hexahedron(), Cell::operator=(), Quadrangle::Quadrangle(), Tetrahedron::Tetrahedron(), and Cell::volume().
Vertex** Cell::__vertices [protected, inherited] |
Pointers on vertices of the cell.
Definition at line 57 of file Cell.hpp.
Referenced by Triangle::__computeVolume(), Quadrangle::__computeVolume(), ConnectedTriangle::base(), CartesianHexahedron::CartesianHexahedron(), Cell::Cell(), Triangle::edge(), Cell::find(), CartesianHexahedron::getLocalCoordinates(), Hexahedron::Hexahedron(), Triangle::normal(), Quadrangle::normal(), Cell::operator()(), Cell::operator=(), Quadrangle::Quadrangle(), Cell::replace(), ConnectedTriangle::setVertices(), Tetrahedron::Tetrahedron(), Triangle::Triangle(), and Cell::~Cell().
bool Cell::__isFictitious [mutable, protected, inherited] |
indicates if the cell is to be taken into accounts for computations
Definition at line 60 of file Cell.hpp.
Referenced by Cell::isFictitious(), and Cell::setFictitious().
1.5.6