/[ff3d]/ff3d/solver/SurfaceMeshGenerator.cpp
ViewVC logotype

Diff of /ff3d/solver/SurfaceMeshGenerator.cpp

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.32 by delpinux, Tue Sep 2 16:09:27 2003 UTC revision 1.33 by delpinux, Thu Sep 4 20:37:36 2003 UTC
# Line 358  private: Line 358  private:
358                            const ObjectToTreat& O1,                            const ObjectToTreat& O1,
359                            const ObjectToTreat& O2);                            const ObjectToTreat& O2);
360    
361    void __generateMesh(Structured3DMesh& SMesh,    void __generateMesh(const Domain& omega, Structured3DMesh& SMesh,
362                        const Object& object, const size_t& level,                        const Object& object, const size_t& level,
363                        std::stack<ReferenceCounting<ObjectToTreat> >& objectStack);                        std::stack<ReferenceCounting<ObjectToTreat> >& objectStack);
364    
# Line 3147  void plotmedit(const size_t& nobject, Line 3147  void plotmedit(const size_t& nobject,
3147  void plothexa(size_t ncase,std::set<const Cell*>& cuttedHexahedra);  void plothexa(size_t ncase,std::set<const Cell*>& cuttedHexahedra);
3148    
3149  void SurfaceMeshGenerator::Internals::  void SurfaceMeshGenerator::Internals::
3150  __generateMesh(Structured3DMesh& SMesh,  __generateMesh(const Domain& omega,
3151                   Structured3DMesh& SMesh,
3152                 const Object& object, const size_t& level,                 const Object& object, const size_t& level,
3153                 std::stack<ReferenceCounting<ObjectToTreat> >& objectStack)                 std::stack<ReferenceCounting<ObjectToTreat> >& objectStack)
3154  {  {
# Line 3158  __generateMesh(Structured3DMesh& SMesh, Line 3159  __generateMesh(Structured3DMesh& SMesh,
3159      size_t j=0;      size_t j=0;
3160      for (Union::const_iterator i = U.begin();      for (Union::const_iterator i = U.begin();
3161           i != U.end(); ++i,++j) {           i != U.end(); ++i,++j) {
3162        __generateMesh(SMesh,(*(*i)), level+1, objectStack);        __generateMesh(omega, SMesh,(*(*i)), level+1, objectStack);
3163        if (j>0) {        if (j>0) {
3164          // get first object of the intersection          // get first object of the intersection
3165          ReferenceCounting<ObjectToTreat> O1 = objectStack.top();          ReferenceCounting<ObjectToTreat> O1 = objectStack.top();
# Line 3194  __generateMesh(Structured3DMesh& SMesh, Line 3195  __generateMesh(Structured3DMesh& SMesh,
3195      size_t j=0;      size_t j=0;
3196      for(Intersection::const_iterator i = I.begin();      for(Intersection::const_iterator i = I.begin();
3197          i != I.end(); ++i,++j) {          i != I.end(); ++i,++j) {
3198        __generateMesh(SMesh,(*(*i)), level+1, objectStack);        __generateMesh(omega, SMesh,(*(*i)), level+1, objectStack);
3199        if (j>0) {        if (j>0) {
3200          // get first object of the intersection          // get first object of the intersection
3201          ReferenceCounting<ObjectToTreat> O1 = objectStack.top();          ReferenceCounting<ObjectToTreat> O1 = objectStack.top();
# Line 3229  __generateMesh(Structured3DMesh& SMesh, Line 3230  __generateMesh(Structured3DMesh& SMesh,
3230    }    }
3231    case Shape::not_: {    case Shape::not_: {
3232      const Object& notObject = *(static_cast<const Not&>(*object.shape()).object());      const Object& notObject = *(static_cast<const Not&>(*object.shape()).object());
3233      __generateMesh(SMesh, notObject,      __generateMesh(omega, SMesh, notObject,
3234                     level+1, objectStack);                     level+1, objectStack);
3235    
3236      ObjectToTreat& o = (*objectStack.top());      ObjectToTreat& o = (*objectStack.top());
# Line 3250  __generateMesh(Structured3DMesh& SMesh, Line 3251  __generateMesh(Structured3DMesh& SMesh,
3251    
3252    ObjectToTreat& o = (*objectStack.top());    ObjectToTreat& o = (*objectStack.top());
3253    if(object.hasReference()) {    if(object.hasReference()) {
3254      static size_t ref=1;      const size_t ref = omega.reference(object.reference());
3255      for (size_t i=0; i<(*o.trianglelist).size(); ++i) {      for (size_t i=0; i<(*o.trianglelist).size(); ++i) {
3256        Triangle& t = (*o.trianglelist)[i];        Triangle& t = (*o.trianglelist)[i];
3257        t.reference()=ref;        t.reference()=ref;
3258      }      }
     ffout(0) << "Reference set to " << ref << '\n';  
     ref++;  
   } else {  
     ffout(0) << "has no reference!\n";  
3259    }    }
3260  }  }
3261    
# Line 3289  __marchingTetrahedra(Structured3DMesh& S Line 3286  __marchingTetrahedra(Structured3DMesh& S
3286    \warning Implementation could be improved and function size reduced.    \warning Implementation could be improved and function size reduced.
3287  */  */
3288  void SurfaceMeshGenerator::  void SurfaceMeshGenerator::
3289  generateSurfacicMesh(const Domain& Omega,  generateSurfacicMesh(const Domain& omega,
3290                       SurfaceMeshOfTriangles& s_mesh,                       SurfaceMeshOfTriangles& s_mesh,
3291                       Structured3DMesh& SMesh)                       Structured3DMesh& SMesh)
3292  {  {
3293    typedef std::map<TinyVector<3>, Object*> ObjectReferences;    typedef std::map<TinyVector<3>, Object*> ObjectReferences;
3294    
3295    const Object& object = Omega.object();    const Object& object = omega.object();
3296    const Scene& scene = Omega.scene();    const Scene& scene = omega.scene();
3297    
3298    (*__internals).edgesRefVertex.resize(scene.nbObjects());    (*__internals).edgesRefVertex.resize(scene.nbObjects());
3299    
# Line 3305  generateSurfacicMesh(const Domain& Omega Line 3302  generateSurfacicMesh(const Domain& Omega
3302    }    }
3303    
3304    std::stack<ReferenceCounting<SurfaceMeshGenerator::Internals::ObjectToTreat> > objectStack;    std::stack<ReferenceCounting<SurfaceMeshGenerator::Internals::ObjectToTreat> > objectStack;
3305    (*__internals).__generateMesh(SMesh,object, 0, objectStack);    (*__internals).__generateMesh(omega, SMesh,object, 0, objectStack);
3306    
3307    SurfaceMeshGenerator::Internals::ObjectToTreat& o = (*objectStack.top());    SurfaceMeshGenerator::Internals::ObjectToTreat& o = (*objectStack.top());
3308    std::set<int> refset;    std::set<int> refset;

Legend:
Removed from v.1.32  
changed lines
  Added in v.1.33

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26