BorderLinker< Mesh::volume > Struct Template Reference

#include <ConnectivityBuilder.hpp>

List of all members.

Public Member Functions

template<typename MeshType>
 BorderLinker (const MeshType &m, ConnectivityBuilder< MeshType > &connectivityBuilder, ReferenceCounting< typename MeshType::BorderMeshType > border)


Detailed Description

template<>
struct BorderLinker< Mesh::volume >

Definition at line 615 of file ConnectivityBuilder.hpp.


Constructor & Destructor Documentation

template<typename MeshType>
BorderLinker< Mesh::volume >::BorderLinker ( const MeshType &  m,
ConnectivityBuilder< MeshType > &  connectivityBuilder,
ReferenceCounting< typename MeshType::BorderMeshType >  border 
) [inline]

Definition at line 618 of file ConnectivityBuilder.hpp.

References ConnectivityBuilder< MeshType >::__faceToCells, ConnectivityBuilder< MeshType >::__faceToCellsConstruction(), ffout(), ErrorHandler::normal, and stringify().

00621   {
00622     if (border != 0) {
00623       connectivityBuilder.__faceToCellsConstruction();
00624 
00625       ffout(3) << "- Connecting border mesh\n";
00626       const typename ConnectivityBuilder<MeshType>::FaceToCellMapping&
00627         faceToCells = connectivityBuilder.__faceToCells;
00628 
00629       for (typename MeshType::BorderMeshType::iterator i(*border);
00630            not(i.end()); ++i) {
00631         std::set<size_t> verticesSet;
00632         for (size_t k=0; k<ConnectivityBuilder<MeshType>::FaceType::NumberOfVertices; ++k) {
00633           const size_t vertexNumber = m.vertexNumber((*i)(k));
00634           verticesSet.insert(m.correspondance(vertexNumber));
00635         }
00636         size_t k=0; 
00637         typename ConnectivityBuilder<MeshType>::FaceVerticesList vertices;
00638         for (std::set<size_t>::iterator n=verticesSet.begin();
00639              n !=  verticesSet.end(); ++n) {
00640           vertices[k++]=*n;
00641         }
00642         typename ConnectivityBuilder<MeshType>::FaceToCellMapping
00643           ::const_iterator icell = faceToCells.find(vertices);
00644         if (icell != faceToCells.end()) {
00645           (*i).setMother(icell->second.begin()->first, icell->second.begin()->second);
00646         } else {
00647           const std::string errorMsg
00648             = "boundary element number "+stringify(border->cellNumber(*i))
00649             +" is not related to any cell of the mesh\n";
00650           throw ErrorHandler(__FILE__,__LINE__,
00651                              errorMsg,
00652                              ErrorHandler::normal); // error might come from external mesher
00653 
00654         }
00655       }
00656     }
00657   }

Here is the call graph for this function:


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

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