FacesBuilder< MeshType > Class Template Reference

#include <FacesBuilder.hpp>

List of all members.

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


Detailed Description

template<typename MeshType>
class FacesBuilder< MeshType >

Definition at line 36 of file FacesBuilder.hpp.


Member Typedef Documentation

template<typename MeshType>
typedef MeshType::FaceType FacesBuilder< MeshType >::FaceType [private]

Definition at line 39 of file FacesBuilder.hpp.

template<typename MeshType>
typedef MeshType::CellType FacesBuilder< MeshType >::CellType [private]

Definition at line 40 of file FacesBuilder.hpp.

template<typename MeshType>
typedef TinyVector<FaceType::NumberOfVertices, size_t> FacesBuilder< MeshType >::FaceVertices [private]

Definition at line 41 of file FacesBuilder.hpp.


Constructor & Destructor Documentation

template<typename MeshType>
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   }

Here is the call graph for this function:

template<typename MeshType>
FacesBuilder< MeshType >::~FacesBuilder (  )  [inline]

Definition at line 98 of file FacesBuilder.hpp.

00099   {
00100     ;
00101   }


Member Function Documentation

template<typename MeshType>
ReferenceCounting<FacesSet<FaceType> > FacesBuilder< MeshType >::facesSet (  )  [inline]


Member Data Documentation

template<typename MeshType>
std::map<FaceVertices, FaceVertices> FacesBuilder< MeshType >::__facesIdSet [private]

Definition at line 43 of file FacesBuilder.hpp.

Referenced by FacesBuilder< MeshType >::FacesBuilder().

template<typename MeshType>
ReferenceCounting<FacesSet<FaceType> > FacesBuilder< MeshType >::__facesSet [private]


The documentation for this class was generated from the following file:

Generated on Wed Nov 19 00:06:11 2008 for FreeFEM3D (aka ff3d) by  doxygen 1.5.6