Changeset 9202


Ignore:
Timestamp:
08/08/11 12:07:22 (14 years ago)
Author:
Mathieu Morlighem
Message:

corrected some crashes and checked for orphans in meshconvert

Location:
issm/trunk/src/c/objects/Bamg
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk/src/c/objects/Bamg/Geometry.cpp

    r9200 r9202  
    4848        Geometry::~Geometry() {
    4949                /*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, MeshGeom.cpp/~Geometry)*/
    50                 if(NbRef>0)    _error_("Trying to delete geometry and NbRef>0");
     50                if(NbRef>0){   printf("Trying to delete geometry and NbRef>0, probably due to an error"); return;}
    5151                if(vertices)   delete [] vertices;  vertices=0;
    5252                if(edges)      delete [] edges;     edges=0;
  • issm/trunk/src/c/objects/Bamg/Mesh.cpp

    r8722 r9202  
    265265                Metric M1(1);
    266266                int verbose=0;
     267                bool* nodeflags=NULL;
    267268
    268269                nbv=nods;
     
    287288                if (verbose) printf("Reading triangles (%i)\n",nbt);
    288289                triangles =new Triangle[maxnbt]; //we cannot allocate only nbt triangles since
     290                nodeflags=(bool*)xmalloc(nbv*sizeof(bool));
     291                for(i=0;i<nbv;i++) nodeflags[i]=false;
    289292                //other triangles will be added for each edge
    290293                for (i=0;i<nbt;i++){
     
    295298                        t=Triangle(this,i1,i2,i3);
    296299                        t.color=1;
     300                        nodeflags[i1]=nodeflags[i2]=nodeflags[i3]=true;
    297301                }
    298302
     
    302306                if (verbose) printf("Completing geometry\n");
    303307                Gh.PostRead();
     308
     309                /*Check that there is no orphan*/
     310                bool isorphan=false;
     311                for(i=0;i<nbv;i++){
     312                        if(!nodeflags[i]){
     313                                printf("Vertex %i does not belong to any element\n",i+1);
     314                                isorphan=true;
     315                        }
     316                }
     317                if(isorphan) _error_("Orphan found in mesh, see ids above");
     318
     319                /*Clean up*/
     320                xfree((void**)&nodeflags);
    304321        }
    305322        /*}}}1*/
Note: See TracChangeset for help on using the changeset viewer.