Changeset 2960
- Timestamp:
- 02/05/10 07:49:20 (15 years ago)
- Location:
- issm/trunk/src
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk/src/c/Bamgx/objects/Triangle.cpp
r2940 r2960 19 19 /*Methods*/ 20 20 /*FUNCTION Triangle::FindBoundaryEdge{{{1*/ 21 TriangleAdjacent Triangle::FindBoundaryEdge(int i) const 22 { 21 TriangleAdjacent Triangle::FindBoundaryEdge(int i) const{ 23 22 // turn around the vertex ns[i] also call s 24 Triangle *t = (Triangle *) this , *ttc; 23 Triangle* t = (Triangle*)this; 24 Triangle* ttc=NULL; 25 25 26 int k=0,j = EdgesVertexTriangle[i][0],jc; 26 27 int exterieur = !link ; 27 28 28 do 29 { 29 do{ 30 30 int exterieurp = exterieur; 31 31 k++; … … 38 38 j = NextEdge[jc]; 39 39 if (k>=2000){ 40 throw ErrorException(__FUNCT__,exprintf(" k>=2000"));40 throw ErrorException(__FUNCT__,exprintf("too many iteration in Triangle::FindBoundaryEdge (k>=2000)")); 41 41 } 42 } while ( (this!= t));42 } while (this!= t); 43 43 return TriangleAdjacent(0,0); 44 44 } 45 45 /*}}}1*/ 46 46 /*FUNCTION Triangle::Echo {{{1*/ -
issm/trunk/src/c/Bamgx/objects/Triangles.cpp
r2958 r2960 20 20 long NbUnSwap =0; 21 21 int Triangles::counter = 0; 22 Triangles* CurrentTh=NULL; //To delete23 22 24 23 /*Constructors/Destructors*/ … … 137 136 Triangles::~Triangles() { 138 137 long int verbosity=2; 139 if (CurrentTh == this) CurrentTh=0;140 138 //if(vertices) delete [] vertices; //TEST crash if not commented 141 139 if(edges) delete [] edges; … … 415 413 if(verbose>3) printf(" no Edges found\n"); 416 414 } 415 //CrackedEdges 416 if(bamgmesh->CrackedEdges){ 417 if(verbose>3) printf(" processing CrackedEdges\n"); 418 NbCrackedEdges=bamgmesh->NumCrackedEdges; 419 CrackedEdges=new CrackedEdge[NbCrackedEdges]; 420 printf("NbCrackedEdges = %i\n",bamgmesh->NumCrackedEdges); 421 for (i=0;i<NbCrackedEdges;i++){ 422 //CrackedEdges[i].a.edge=bamgmesh->CrackedEdges[i*2+0]-1; //C indexing 423 //CrackedEdges[i].b.edge=bamgmesh->CrackedEdges[i*1+0]-1; //C indexing 424 throw ErrorException(__FUNCT__,exprintf("not implemented yet")); 425 } 426 } 427 else{ 428 if(verbose>3) printf(" no CrackedEdges found\n"); 429 } 417 430 418 431 //EdgeOnGeometricEdge … … 886 899 int verbosity=bamgopts->verbose; 887 900 double cutoffradian=bamgopts->MaximalAngleOfCorner*Pi/180; 888 CurrentTh=this;889 901 890 902 //display info … … 967 979 printf(" - number of triangles = %i \n",nbt); 968 980 printf(" - number of given edges = %i \n",nbe); 969 printf(" - number of all edges = %i \n" ,edge4->nb());970 printf(" - Euler number 1 - nb of holes = %i \n" ,nbt- edge4->nb()+nbv);981 printf(" - number of all edges = %i \n",nbedges); 982 printf(" - Euler number 1 - nb of holes = %i \n" ,nbt-nbedges+nbv); 971 983 } 972 984 … … 1858 1870 /*FUNCTION Triangles::CrackMesh{{{1*/ 1859 1871 int Triangles::CrackMesh() { 1860 long int verbosity=0; 1861 Triangles *CurrentThOld = CurrentTh; 1872 1873 int verbosity=0; 1874 int i,k; 1862 1875 // computed the number of cracked edge 1863 int i,k;1864 1876 for (k=i=0;i<nbe;i++) 1865 1877 if(edges[i].onGeometry->Cracked()) k++; 1866 1878 if( k==0) return 0; 1867 CurrentTh = this;1868 1879 printf(" number of Cracked Edges = %i\n",k); 1869 1880 NbCrackedEdges =k; … … 1996 2007 throw ErrorException(__FUNCT__,exprintf("Not enougth vertices: to crack the mesh we need %i vertices",nbv)); 1997 2008 } 1998 CurrentTh = CurrentThOld;1999 2009 return NbCrackedVertices; 2000 2010 } … … 2039 2049 /*FUNCTION Triangles::FillHoleInMesh{{{1*/ 2040 2050 void Triangles::FillHoleInMesh() { 2041 2042 Triangles* OldCurrentTh =CurrentTh;2043 CurrentTh=this;2044 2051 2045 2052 int verbosity=0; … … 2105 2112 } 2106 2113 if(verbosity>5) { 2107 printf(" info on Mesh \n");2114 printf(" info on Mesh:\n"); 2108 2115 printf(" - number of vertices = %i \n",nbv); 2109 2116 printf(" - number of triangles = %i \n",nbt); … … 2325 2332 } 2326 2333 } 2327 CurrentTh=OldCurrentTh;2328 2334 } 2329 2335 /*}}}1*/ … … 2947 2953 // NewPointsOld(*this) ; 2948 2954 NewPoints(*this,0) ; 2949 CurrentTh = 0;2950 2955 } 2951 2956 /*}}}1*/ … … 3288 3293 3289 3294 NewPoints(BTh,KeepVertices) ; 3290 CurrentTh = 0;3291 3295 } 3292 3296 /*}}}1*/ … … 3367 3371 long int verbosity=2; 3368 3372 if (verbosity>2) printf(" Insert initial %i vertices\n",nbv); 3369 Triangles* OldCurrentTh=CurrentTh;3370 CurrentTh=this;3371 3373 SetIntCoor(); 3372 3374 Int4 i; … … 3473 3475 // because we break the TriangleContainingTheVertex 3474 3476 #endif 3475 CurrentTh=OldCurrentTh;3476 3477 } 3477 3478 /*}}}1*/ … … 4516 4517 int ret =0; 4517 4518 if (nbvx<nbv+nbe) return 1;// 4518 Triangles * OCurrentTh= CurrentTh;4519 CurrentTh = this;4520 4519 // 1) create the new points by spliting the internal edges 4521 4520 // set the … … 4984 4983 } 4985 4984 4986 CurrentTh=OCurrentTh;4987 4985 return 0; //ok 4988 4986 … … 4999 4997 if(newVertexOnBThEdge) delete [] newVertexOnBThEdge; 5000 4998 5001 5002 CurrentTh= OCurrentTh;5003 4999 return ret; // ok 5004 5000 } … … 5246 5242 /*FUNCTION FindTriangle{{{1*/ 5247 5243 Int4 FindTriangle(Triangles &Th, Real8 x, Real8 y, double* a,int & inside){ 5248 CurrentTh=&Th;5249 5244 I2 I = Th.toI2(R2(Min(Max(Th.pmin.x,x),Th.pmax.x),Min(Max(Th.pmin.y,y),Th.pmax.y))); 5250 5245 Icoor2 dete[3]; -
issm/trunk/src/m/classes/public/bamg.m
r2955 r2960 66 66 bamg_mesh.NumTriangles=0; 67 67 bamg_mesh.Triangles=[]; 68 bamg_mesh.index=zeros(0,3); 68 bamg_mesh.NumEdges=0; 69 bamg_mesh.Edges=zeros(0,3); 69 70 bamg_mesh.hVertices=[]; 71 bamg_mesh.NumCrackedEdges=0; 72 bamg_mesh.CrackedEdges=zeros(0,2); 70 73 if (~exist(options,'domain') & md.numberofgrids~=0 & strcmpi(md.type,'2d')), 71 74 bamg_mesh.NumVertices=md.numberofgrids; … … 78 81 error(['hVertices option should be of size [' num2str(md.numberofgrids) ',1]']); 79 82 end 83 end 84 if isstruct(md.rifts) 85 for i=1:length(md.rifts) 86 bamg_mesh.Edges=[bamg_mesh.Edges;md.rifts(i).segments]; 87 end 88 bamg_mesh.NumEdges=size(bamg_mesh.Edges,1); 89 bamg_mesh.NumCrackedEdges=bamg_mesh.NumEdges; 90 bamg_mesh.CrackedEdges=[1 2;3 4]; 80 91 end 81 92 end -
issm/trunk/src/mex/Bamg/Bamg.cpp
r2955 r2960 20 20 double* TrianglesMesh=NULL; 21 21 double* hVerticesMesh=NULL; 22 int NumCrackedEdgesMesh; 23 double* CrackedEdgesMesh=NULL; 22 24 23 25 /*Geom inputs: */ … … 105 107 bamgmesh.NumEdges=0; 106 108 bamgmesh.Edges=NULL; 107 bamgmesh.NumCrackedEdges=0; 108 bamgmesh.CrackedEdges=NULL; 109 FetchData(&NumCrackedEdgesMesh,mxGetField(BAMGMESH,0,"NumCrackedEdges")); 110 bamgmesh.NumCrackedEdges=NumCrackedEdgesMesh; 111 FetchData(&CrackedEdgesMesh,NULL,NULL,mxGetField(BAMGMESH,0,"CrackedEdges")); 112 bamgmesh.CrackedEdges=CrackedEdgesMesh; 109 113 bamgmesh.NumSubDomains=0; 110 114 bamgmesh.SubDomains=NULL;
Note:
See TracChangeset
for help on using the changeset viewer.