#include <FacesBuilder.hpp>
Public Member Functions | |
| ReferenceCounting< FacesSet < FaceType > > | facesSet () |
| FacesBuilder (MeshType &mesh) | |
| ~FacesBuilder () | |
Private Types | |
| typedef MeshType::FaceType | FaceType |
| typedef MeshType::CellType | CellType |
| typedef TinyVector < FaceType::NumberOfVertices, size_t > | FaceVertices |
Private Attributes | |
| std::map< FaceVertices, FaceVertices > | __facesIdSet |
| ReferenceCounting< FacesSet < FaceType > > | __facesSet |
Definition at line 36 of file FacesBuilder.hpp.
typedef MeshType::FaceType FacesBuilder< MeshType >::FaceType [private] |
Definition at line 39 of file FacesBuilder.hpp.
typedef MeshType::CellType FacesBuilder< MeshType >::CellType [private] |
Definition at line 40 of file FacesBuilder.hpp.
typedef TinyVector<FaceType::NumberOfVertices, size_t> FacesBuilder< MeshType >::FaceVertices [private] |
Definition at line 41 of file FacesBuilder.hpp.
| FacesBuilder< MeshType >::FacesBuilder | ( | MeshType & | mesh | ) | [inline] |
Definition at line 54 of file FacesBuilder.hpp.
References FacesBuilder< MeshType >::__facesIdSet, FacesBuilder< MeshType >::__facesSet, ASSERT, FacesBuilder< MeshType >::facesSet(), and ffout().
00055 { 00056 ffout(3) << "- FacesBuilder: building...\n"; 00057 for (typename MeshType::const_iterator i(mesh); not(i.end()); ++i) { 00058 const CellType& cell = *i; 00059 for (size_t j=0; j<CellType::NumberOfFaces; ++j) { 00060 std::set<size_t> vertices; 00061 FaceVertices face; 00062 for (size_t k=0; k<FaceType::NumberOfVertices ;++k) { 00063 face[k] = mesh.vertexNumber(cell(CellType::faces[j][k])); 00064 vertices.insert(face[k]); 00065 } 00066 ASSERT(vertices.size() == FaceType::NumberOfVertices); 00067 FaceVertices faceId; 00068 size_t k=0; 00069 for (std::set<size_t>::const_iterator iv = vertices.begin(); 00070 iv != vertices.end(); ++iv,++k) { 00071 faceId[k] = *iv; 00072 } 00073 00074 if (__facesIdSet.find(faceId) == __facesIdSet.end()) { 00075 __facesIdSet.insert(__facesIdSet.end(), 00076 std::make_pair(faceId, face)); 00077 } 00078 } 00079 } 00080 00081 __facesSet = new FacesSet<FaceType>(__facesIdSet.size()); 00082 FacesSet<FaceType>& facesSet = *__facesSet; 00083 size_t i=0; 00084 for (typename std::map<FaceVertices, FaceVertices>::const_iterator 00085 f = __facesIdSet.begin(); f != __facesIdSet.end(); ++f, ++i) { 00086 TinyVector<FaceType::NumberOfVertices, Vertex*> newFace; 00087 00088 for (size_t k=0; k<FaceType::NumberOfVertices; ++k) { 00089 const size_t vertexNumber = f->second[k]; 00090 newFace[k] = &mesh.vertex(vertexNumber); 00091 } 00092 00093 facesSet[i] = FaceType(newFace); 00094 } 00095 ffout(3) << "- FacesBuilder: done\n"; 00096 }

| FacesBuilder< MeshType >::~FacesBuilder | ( | ) | [inline] |
| ReferenceCounting<FacesSet<FaceType> > FacesBuilder< MeshType >::facesSet | ( | ) | [inline] |
Definition at line 49 of file FacesBuilder.hpp.
References FacesBuilder< MeshType >::__facesSet.
Referenced by Structured3DMesh::buildFaces(), SpectralMesh::buildFaces(), MeshOfTetrahedra::buildFaces(), MeshOfHexahedra::buildFaces(), and FacesBuilder< MeshType >::FacesBuilder().
00050 { 00051 return __facesSet; 00052 }
std::map<FaceVertices, FaceVertices> FacesBuilder< MeshType >::__facesIdSet [private] |
Definition at line 43 of file FacesBuilder.hpp.
Referenced by FacesBuilder< MeshType >::FacesBuilder().
ReferenceCounting<FacesSet<FaceType> > FacesBuilder< MeshType >::__facesSet [private] |
Definition at line 45 of file FacesBuilder.hpp.
Referenced by FacesBuilder< MeshType >::FacesBuilder(), and FacesBuilder< MeshType >::facesSet().
1.5.6