Changeset 12086
- Timestamp:
- 04/20/12 14:27:30 (13 years ago)
- Location:
- issm/trunk-jpl/src/c/shared/TriMesh
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/shared/TriMesh/SplitMeshForRifts.cpp
r12080 r12086 47 47 segmentmarkerlist=*psegmentmarkerlist; 48 48 49 50 49 /*Establish list of segments that belong to a rift: */ 51 RiftSegmentsFromSegments(&nriftsegs,&riftsegments,nel,index,nsegs,segments); /*riftsegments of size nriftsegsx4 (4 for first element on segment,second element,52 first node and second snode)*/50 /*riftsegments of size nriftsegsx4 (4 for first element on segment,second element,first node and second snode)*/ 51 RiftSegmentsFromSegments(&nriftsegs,&riftsegments,nel,index,nsegs,segments); 53 52 54 53 /*Go through all nodes of the rift segments, and start splitting the mesh: */ … … 70 69 DetermineGridElementListOnOneSideOfRift(&NumGridElementListOnOneSideOfRift,&GridElementListOnOneSideOfRift,i,nriftsegs,riftsegments,node,index,nel); 71 70 72 /*Summary: we have for node, a list of elements (GridElementListOnOneSideOfRift, of size NumGridElementListOnOneSideOfRift) that all contain node 73 *and that are on the same side of the rift. For all these elements, we clone node into another node, and we swap all instances of node in the triangulation 74 *for those elements, to the new node.*/ 71 /*Summary: we have for node, a list of elements 72 * (GridElementListOnOneSideOfRift, of size 73 * NumGridElementListOnOneSideOfRift) that all contain node 74 *and that are on the same side of the rift. For all these 75 elements, we clone node into another node, and we swap all 76 instances of node in the triangulation *for those elements, to the 77 new node.*/ 75 78 76 79 //augment number of nodes -
issm/trunk-jpl/src/c/shared/TriMesh/TriMeshUtils.cpp
r12080 r12086 278 278 for (k=0;k<3;k++){ 279 279 if ((x[(int)*(index+el1*3+k)-1]==x[(int)*(segments+3*j+0)-1]) && (y[(int)*(index+el1*3+k)-1]==y[(int)*(segments+3*j+0)-1])){ 280 *(segments+3*j+0)=*(index+el1*3+k); _assert_(segments[3*j+0]<nods );280 *(segments+3*j+0)=*(index+el1*3+k); _assert_(segments[3*j+0]<nods+1); 281 281 break; 282 282 } … … 284 284 for (k=0;k<3;k++){ 285 285 if ((x[(int)*(index+el1*3+k)-1]==x[(int)*(segments+3*j+1)-1]) && (y[(int)*(index+el1*3+k)-1]==y[(int)*(segments+3*j+1)-1])){ 286 *(segments+3*j+1)=*(index+el1*3+k); _assert_(segments[3*j+1]<nods );286 *(segments+3*j+1)=*(index+el1*3+k); _assert_(segments[3*j+1]<nods+1); 287 287 break; 288 288 } … … 293 293 for (k=0;k<3;k++){ 294 294 if ((x[(int)*(index+el2*3+k)-1]==x[(int)*(segments+3*j+0)-1]) && (y[(int)*(index+el2*3+k)-1]==y[(int)*(segments+3*j+0)-1])){ 295 *(segments+3*(nsegs+i)+0)=*(index+el2*3+k); _assert_(segments[3*(nsegs+i)+0]<nods );295 *(segments+3*(nsegs+i)+0)=*(index+el2*3+k); _assert_(segments[3*(nsegs+i)+0]<nods+1); 296 296 break; 297 297 } … … 299 299 for (k=0;k<3;k++){ 300 300 if ((x[(int)*(index+el2*3+k)-1]==x[(int)*(segments+3*j+1)-1]) && (y[(int)*(index+el2*3+k)-1]==y[(int)*(segments+3*j+1)-1])){ 301 *(segments+3*(nsegs+i)+1)=*(index+el2*3+k); _assert_(segments[3*(nsegs+i)+1]<nods );301 *(segments+3*(nsegs+i)+1)=*(index+el2*3+k); _assert_(segments[3*(nsegs+i)+1]<nods+1); 302 302 break; 303 303 } … … 309 309 for (k=0;k<3;k++){ 310 310 if ((x[(int)*(index+el2*3+k)-1]==x[(int)*(segments+3*j+0)-1]) && (y[(int)*(index+el2*3+k)-1]==y[(int)*(segments+3*j+0)-1])){ 311 *(segments+3*j+0)=*(index+el2*3+k); _assert_(segments[3*j+0]<nods );311 *(segments+3*j+0)=*(index+el2*3+k); _assert_(segments[3*j+0]<nods+1); 312 312 break; 313 313 } … … 315 315 for (k=0;k<3;k++){ 316 316 if ((x[(int)*(index+el2*3+k)-1]==x[(int)*(segments+3*j+1)-1]) && (y[(int)*(index+el2*3+k)-1]==y[(int)*(segments+3*j+1)-1])){ 317 *(segments+3*j+1)=*(index+el2*3+k);_assert_(segments[3*j+1]<nods );317 *(segments+3*j+1)=*(index+el2*3+k);_assert_(segments[3*j+1]<nods+1); 318 318 break; 319 319 } … … 324 324 for (k=0;k<3;k++){ 325 325 if ((x[(int)*(index+el1*3+k)-1]==x[(int)*(segments+3*j+0)-1]) && (y[(int)*(index+el1*3+k)-1]==y[(int)*(segments+3*j+0)-1])){ 326 *(segments+3*(nsegs+i)+0)=*(index+el1*3+k);_assert_(segments[3*(nsegs+i)+0]<nods );326 *(segments+3*(nsegs+i)+0)=*(index+el1*3+k);_assert_(segments[3*(nsegs+i)+0]<nods+1); 327 327 break; 328 328 } … … 330 330 for (k=0;k<3;k++){ 331 331 if ((x[(int)*(index+el1*3+k)-1]==x[(int)*(segments+3*j+1)-1]) && (y[(int)*(index+el1*3+k)-1]==y[(int)*(segments+3*j+1)-1])){ 332 *(segments+3*(nsegs+i)+1)=*(index+el1*3+k);_assert_(segments[3*(nsegs+i)+1]<nods );332 *(segments+3*(nsegs+i)+1)=*(index+el1*3+k);_assert_(segments[3*(nsegs+i)+1]<nods+1); 333 333 break; 334 334 } … … 436 436 for (j=0;j<numsegs;j++){ 437 437 if (segmentmarkerlist[j]==(2+i)){ 438 riftsegment[3*counter+0]=segments[3*j+0];_assert_(riftsegment[3*counter+0]<nods );439 riftsegment[3*counter+1]=segments[3*j+1];_assert_(riftsegment[3*counter+1]<nods );440 riftsegment[3*counter+2]=segments[3*j+2];_assert_(riftsegment[3*counter+2]<nel );438 riftsegment[3*counter+0]=segments[3*j+0];_assert_(riftsegment[3*counter+0]<nods+1); 439 riftsegment[3*counter+1]=segments[3*j+1];_assert_(riftsegment[3*counter+1]<nods+1); 440 riftsegment[3*counter+2]=segments[3*j+2];_assert_(riftsegment[3*counter+2]<nel+1); 441 441 counter++; 442 442 } … … 743 743 double* riftstips=NULL; 744 744 745 746 745 /*Allocate byproduct of this routine, riftstips: */ 747 746 riftstips=(double*)xmalloc(numrifts*2*sizeof(double)); … … 753 752 numsegs=riftsnumsegments[i]; 754 753 755 756 754 /*Allocate copy of riftsegments and riftpairs, 757 755 *as well as ordering vector: */ … … 778 776 } 779 777 /* Make sure node3 faces node1 and node4 faces node2: */ 780 _assert_(node1<nods && node4<nods); 781 if ((x[node1]==x[node4]) && (y[node1]==y[node4])){ 778 _assert_(node1<nods+1 && node4<nods+1); 779 _assert_(node1>0 && node4>0); 780 if ((x[node1-1]==x[node4-1]) && (y[node1-1]==y[node4-1])){ 782 781 /*Swap node3 and node4:*/ 783 782 temp_node=node3;
Note:
See TracChangeset
for help on using the changeset viewer.