Changeset 2955
- Timestamp:
- 02/04/10 07:25:05 (15 years ago)
- Location:
- issm/trunk/src
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk/src/c/Bamgx/Mesh2.h
r2945 r2955 16 16 #include <limits.h> 17 17 #include <time.h> 18 19 #if (defined(unix) || defined(__unix)) && !defined(__AIX)20 #define SYSTIMES21 #include <sys/times.h>22 #include <unistd.h>23 #endif24 18 25 19 #include "meshtype.h" … … 124 118 Vertex * to;// use in geometry Vertex to now the Mesh Vertex associed 125 119 VertexOnGeom * onGeometry; // if vint 8; // set with Triangles::SetVertexFieldOn() 126 Vertex * on bv; // if vint == 16 on Background vertex Triangles::SetVertexFieldOnBTh()127 VertexOnEdge * on be; // if vint == 32 on Background edge120 Vertex * onBackgroundVertex; // if vint == 16 on Background vertex Triangles::SetVertexFieldOnBTh() 121 VertexOnEdge * onBackgroundEdge; // if vint == 32 on Background edge 128 122 }; 129 123 Int1 vint; // the vertex number in triangle; varies between 0 and 2 in t … … 245 239 class GeometricalEdge { 246 240 public: 247 GeometricalVertex 241 GeometricalVertex* v[2]; 248 242 Int4 ref; 249 Int4 250 R2 tg[2]; // the 2 tangente251 // if tg[0] =0 => no continuit e252 GeometricalEdge * Adj[2];243 Int4 CurveNumber; 244 R2 tg[2]; // the 2 tangentes 245 // if tg[0] =0 => no continuity 246 GeometricalEdge* Adj[2]; 253 247 int DirAdj[2]; 254 // private:255 248 int flag ; 256 public:257 249 GeometricalEdge* link; // if Cracked() or Equi() 258 259 250 // end of data 260 251 … … 578 569 VertexOnVertex() {}; 579 570 inline void Set(const Triangles &,Int4,Triangles &); 580 void SetOnBTh(){v->on bv=bv;v->vint=IsVertexOnVertex;}571 void SetOnBTh(){v->onBackgroundVertex=bv;v->vint=IsVertexOnVertex;} 581 572 }; 582 573 /*}}}1*/ … … 590 581 VertexOnEdge(){} 591 582 inline void Set(const Triangles &,Int4,Triangles &); 592 void SetOnBTh(){v->on be=this;v->vint=IsVertexOnEdge;}583 void SetOnBTh(){v->onBackgroundEdge=this;v->vint=IsVertexOnEdge;} 593 584 Vertex & operator[](int i) const { return (*be)[i];} 594 585 operator Real8 () const { return abcisse;} -
issm/trunk/src/c/Bamgx/objects/Triangles.cpp
r2945 r2955 478 478 479 479 verbose=bamgopts->verbose; 480 481 //Build reft that holds the number the subdomain number of each triangle 480 482 Int4 *reft = new Int4[nbt]; 481 483 Int4 nbInT = ConsRefTriangle(reft); … … 538 540 for (i=0;i<nbt;i++){ 539 541 Triangle &t=triangles[i]; 542 //reft[i]=-1 for outside triangle 540 543 if (reft[i]>=0 && !( t.Hidden(0) || t.Hidden(1) || t.Hidden(2) )){ 541 544 bamgmesh->Triangles[num*4+0]=Number(t[0])+1; //back to M indexing … … 1770 1773 register Triangle *t0,*t; 1771 1774 register Int4 k=0, num; 1772 for (Int4 it=0;it<nbt;it++) reft[it]=-1; // outside triangle 1775 1776 //initialize all triangles as -1 (outside) 1777 for (Int4 it=0;it<nbt;it++) reft[it]=-1; 1778 1779 //loop over all subdomains 1773 1780 for (Int4 i=0;i<NbSubDomains;i++){ 1781 1782 //first triangle of the subdomain i 1774 1783 t=t0=subdomains[i].head; 1784 1785 //check that the subdomain is not empty 1775 1786 if (!t0){ // no empty sub domai{ 1776 throw ErrorException(__FUNCT__,exprintf("!t0")); 1777 } 1778 // register Int4 color=i+1;// because the color 0 is outside triangle 1779 do { k++; 1787 throw ErrorException(__FUNCT__,exprintf("At least one subdomain is empty")); 1788 } 1789 1790 //loop 1791 do{ 1792 k++; 1793 1794 //get current triangle number 1780 1795 num = Number(t); 1796 1797 //check that num is in [0 nbt[ 1781 1798 if (num<0 || num>=nbt){ 1782 1799 throw ErrorException(__FUNCT__,exprintf("num<0 || num>=nbt")); 1783 1800 } 1801 1802 //reft of this triangle is the subdomain number 1784 1803 reft[num]=i; 1785 } 1786 while (t0 != (t=t->link)); 1804 } while (t0 != (t=t->link)); 1805 //stop when all triangles of subdomains have been tagged 1806 1787 1807 } 1788 1808 return k; … … 3897 3917 Vertex * pvA=&vA, * pvB=&vB; 3898 3918 if (vA.vint == IsVertexOnVertex){ 3899 pA=vA.on bv;3919 pA=vA.onBackgroundVertex; 3900 3920 } 3901 3921 else if (vA.vint == IsVertexOnEdge){ 3902 pA=vA.on be->be;3903 tA=vA.on be->abcisse;3922 pA=vA.onBackgroundEdge->be; 3923 tA=vA.onBackgroundEdge->abcisse; 3904 3924 } 3905 3925 else { … … 3908 3928 3909 3929 if (vB.vint == IsVertexOnVertex){ 3910 pB=vB.on bv;3930 pB=vB.onBackgroundVertex; 3911 3931 } 3912 3932 else if(vB.vint == IsVertexOnEdge){ 3913 pB=vB.on be->be;3914 tB=vB.on be->abcisse;3933 pB=vB.onBackgroundEdge->be; 3934 tB=vB.onBackgroundEdge->abcisse; 3915 3935 } 3916 3936 else { … … 3934 3954 if( vA.vint == IsVertexOnEdge) 3935 3955 { // find the start edge 3936 e = vA.on be->be;3956 e = vA.onBackgroundEdge->be; 3937 3957 3938 3958 } … … 3944 3964 Exchange(pvA,pvB); 3945 3965 Exchange(A,B); 3946 e = vB.on be->be;3966 e = vB.onBackgroundEdge->be; 3947 3967 3948 3968 } -
issm/trunk/src/m/classes/public/bamg.m
r2950 r2955 18 18 bamg_geometry.NumEdges=0; 19 19 bamg_geometry.Edges=zeros(0,3); 20 bamg_geometry.NumCrackedEdges=0; 21 bamg_geometry.CrackedEdges=zeros(0,1); 20 22 bamg_geometry.hVertices=zeros(0,1); 21 23 bamg_geometry.NumSubDomains=0; … … 36 38 bamg_geometry.Edges=[bamg_geometry.Edges; [transp(count+1:count+nods) transp([count+2:count+nods count+1]) ones(nods,1)]]; 37 39 if i>1, 38 clockwise=-1; 39 bamg_geometry.SubDomains=[2 count+1 clockwise 1]; 40 %if closed : hole 41 if (domain(i).x(1)==domain(i).x(end) & domain(i).y(1)==domain(i).y(end)), 42 clockwise=-1; 43 bamg_geometry.SubDomains=[2 count+1 clockwise 1]; 44 else 45 %rift 46 end 40 47 end 41 48 count=count+nods; … … 122 129 123 130 %Fill in rest of fields: 131 md.type='2d'; 124 132 md.numberofelements=length(md.elements); 125 133 md.numberofgrids=length(md.x); … … 127 135 md.gridonboundary=zeros(md.numberofgrids,1); md.gridonboundary(md.segments(:,1:2))=1; 128 136 md.gridonbed=ones(md.numberofgrids,1); 137 md.gridonwater=zeros(md.numberofgrids,1); 129 138 md.gridonsurface=ones(md.numberofgrids,1); 130 139 md.elementonbed=ones(md.numberofelements,1); … … 138 147 md.segments=findsegments(md); 139 148 md.gridonboundary=zeros(md.numberofgrids,1); md.gridonboundary(md.segments(:,1:2))=1; 140 141 %Fill in rest of fields:142 md.z=zeros(md.numberofgrids,1);143 md.gridonbed=ones(md.numberofgrids,1);144 md.gridonsurface=ones(md.numberofgrids,1);145 md.elementonbed=ones(md.numberofelements,1);146 md.elementonsurface=ones(md.numberofelements,1);147 md.gridonwater=zeros(md.numberofgrids,1);148 149 %type of model150 md.type='2d'; -
issm/trunk/src/m/classes/public/mesh/meshyams.m
r2749 r2955 171 171 172 172 end 173 174 175 176 177 -
issm/trunk/src/mex/Bamg/Bamg.cpp
r2942 r2955 26 26 int NumEdgesGeom; 27 27 double* EdgesGeom=NULL; 28 int NumCrackedEdgesGeom; 29 double* CrackedEdgesGeom=NULL; 28 30 double* hVerticesGeom=NULL; 29 31 double MaximalAngleOfCorner; … … 73 75 bamggeom.NumRequiredEdges=0; 74 76 bamggeom.RequiredEdges=NULL; 75 bamggeom.NumCrackedEdges=0; 76 bamggeom.CrackedEdges=NULL; 77 FetchData(&NumCrackedEdgesGeom,mxGetField(BAMGGEOMETRY,0,"NumCrackedEdges")); 78 bamggeom.NumCrackedEdges=NumCrackedEdgesGeom; 79 FetchData(&CrackedEdgesGeom,NULL,NULL,mxGetField(BAMGGEOMETRY,0,"CrackedEdges")); 80 bamggeom.CrackedEdges=CrackedEdgesGeom; 77 81 FetchData(&NumSubDomainsGeom,mxGetField(BAMGGEOMETRY,0,"NumSubDomains")); 78 82 bamggeom.NumSubDomains=NumSubDomainsGeom;
Note:
See TracChangeset
for help on using the changeset viewer.