Changeset 5573
- Timestamp:
- 08/25/10 13:18:56 (15 years ago)
- Location:
- issm/trunk/src/c/objects/Bamg
- Files:
-
- 15 edited
- 6 moved
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk/src/c/objects/Bamg/BamgMesh.cpp
r5187 r5573 17 17 this->CrackedEdgesSize[0]=0, this->CrackedEdgesSize[1]=0; this->CrackedEdges=NULL; 18 18 19 this->VerticesOnGeom etricVertexSize[0]=0, this->VerticesOnGeometricVertexSize[1]=0;this->VerticesOnGeometricVertex=NULL;20 this->VerticesOnGeom etricEdgeSize[0]=0, this->VerticesOnGeometricEdgeSize[1]=0; this->VerticesOnGeometricEdge=NULL;21 this->EdgesOnGeom etricEdgeSize[0]=0, this->EdgesOnGeometricEdgeSize[1]=0; this->EdgesOnGeometricEdge=NULL;19 this->VerticesOnGeomVertexSize[0]=0, this->VerticesOnGeomVertexSize[1]=0;this->VerticesOnGeomVertex=NULL; 20 this->VerticesOnGeomEdgeSize[0]=0, this->VerticesOnGeomEdgeSize[1]=0; this->VerticesOnGeomEdge=NULL; 21 this->EdgesOnGeomEdgeSize[0]=0, this->EdgesOnGeomEdgeSize[1]=0; this->EdgesOnGeomEdge=NULL; 22 22 23 23 this->IssmEdgesSize[0]=0, this->IssmEdgesSize[1]=0; this->IssmEdges=NULL; … … 47 47 FetchData(&this->CrackedEdges, &this->CrackedEdgesSize[0], &this->CrackedEdgesSize[1], mxGetField(matlab_struct,0,"CrackedEdges")); 48 48 49 FetchData(&this->VerticesOnGeom etricEdge, &this->VerticesOnGeometricEdgeSize[0], &this->VerticesOnGeometricEdgeSize[1], mxGetField(matlab_struct,0,"VerticesOnGeometricEdge"));50 FetchData(&this->VerticesOnGeom etricVertex,&this->VerticesOnGeometricVertexSize[0],&this->VerticesOnGeometricVertexSize[1],mxGetField(matlab_struct,0,"VerticesOnGeometricVertex"));51 FetchData(&this->EdgesOnGeom etricEdge, &this->EdgesOnGeometricEdgeSize[0], &this->EdgesOnGeometricEdgeSize[1], mxGetField(matlab_struct,0,"EdgesOnGeometricEdge"));49 FetchData(&this->VerticesOnGeomEdge, &this->VerticesOnGeomEdgeSize[0], &this->VerticesOnGeomEdgeSize[1], mxGetField(matlab_struct,0,"VerticesOnGeomEdge")); 50 FetchData(&this->VerticesOnGeomVertex,&this->VerticesOnGeomVertexSize[0],&this->VerticesOnGeomVertexSize[1],mxGetField(matlab_struct,0,"VerticesOnGeomVertex")); 51 FetchData(&this->EdgesOnGeomEdge, &this->EdgesOnGeomEdgeSize[0], &this->EdgesOnGeomEdgeSize[1], mxGetField(matlab_struct,0,"EdgesOnGeomEdge")); 52 52 53 53 this->IssmEdgesSize[0]=0, this->IssmEdgesSize[1]=0; this->IssmEdges=NULL; … … 74 74 xfree((void**)&this->CrackedEdges); 75 75 76 xfree((void**)&this->VerticesOnGeom etricVertex);77 xfree((void**)&this->VerticesOnGeom etricEdge);78 xfree((void**)&this->EdgesOnGeom etricEdge);76 xfree((void**)&this->VerticesOnGeomVertex); 77 xfree((void**)&this->VerticesOnGeomEdge); 78 xfree((void**)&this->EdgesOnGeomEdge); 79 79 80 80 xfree((void**)&this->IssmEdges); … … 110 110 fnames[i++] = "IssmEdges"; 111 111 fnames[i++] = "Quadrilaterals"; 112 fnames[i++] = "VerticesOnGeom etricVertex";113 fnames[i++] = "VerticesOnGeom etricEdge";114 fnames[i++] = "EdgesOnGeom etricEdge";112 fnames[i++] = "VerticesOnGeomVertex"; 113 fnames[i++] = "VerticesOnGeomEdge"; 114 fnames[i++] = "EdgesOnGeomEdge"; 115 115 fnames[i++] = "SubDomains"; 116 116 fnames[i++] = "SubDomainsFromGeom"; … … 133 133 i++; SetMatlabStructureField(output,"IssmEdges", this->IssmEdgesSize[0], this->IssmEdgesSize[1], this->IssmEdges); 134 134 i++; SetMatlabStructureField(output,"Quadrilaterals", this->QuadrilateralsSize[0], this->QuadrilateralsSize[1], this->Quadrilaterals); 135 i++; SetMatlabStructureField(output,"VerticesOnGeom etricVertex",this->VerticesOnGeometricVertexSize[0],this->VerticesOnGeometricVertexSize[1], this->VerticesOnGeometricVertex);136 i++; SetMatlabStructureField(output,"VerticesOnGeom etricEdge", this->VerticesOnGeometricEdgeSize[0], this->VerticesOnGeometricEdgeSize[1], this->VerticesOnGeometricEdge);137 i++; SetMatlabStructureField(output,"EdgesOnGeom etricEdge", this->EdgesOnGeometricEdgeSize[0], this->EdgesOnGeometricEdgeSize[1], this->EdgesOnGeometricEdge);135 i++; SetMatlabStructureField(output,"VerticesOnGeomVertex",this->VerticesOnGeomVertexSize[0],this->VerticesOnGeomVertexSize[1], this->VerticesOnGeomVertex); 136 i++; SetMatlabStructureField(output,"VerticesOnGeomEdge", this->VerticesOnGeomEdgeSize[0], this->VerticesOnGeomEdgeSize[1], this->VerticesOnGeomEdge); 137 i++; SetMatlabStructureField(output,"EdgesOnGeomEdge", this->EdgesOnGeomEdgeSize[0], this->EdgesOnGeomEdgeSize[1], this->EdgesOnGeomEdge); 138 138 i++; SetMatlabStructureField(output,"SubDomains", this->SubDomainsSize[0], this->SubDomainsSize[1], this->SubDomains); 139 139 i++; SetMatlabStructureField(output,"SubDomainsFromGeom", this->SubDomainsFromGeomSize[0], this->SubDomainsFromGeomSize[1], this->SubDomainsFromGeom); -
issm/trunk/src/c/objects/Bamg/BamgMesh.h
r5187 r5573 22 22 double* Quadrilaterals; 23 23 24 int VerticesOnGeom etricVertexSize[2];25 double* VerticesOnGeom etricVertex;26 int VerticesOnGeom etricEdgeSize[2];27 double* VerticesOnGeom etricEdge;28 int EdgesOnGeom etricEdgeSize[2];29 double* EdgesOnGeom etricEdge;24 int VerticesOnGeomVertexSize[2]; 25 double* VerticesOnGeomVertex; 26 int VerticesOnGeomEdgeSize[2]; 27 double* VerticesOnGeomEdge; 28 int EdgesOnGeomEdgeSize[2]; 29 double* EdgesOnGeomEdge; 30 30 31 31 int SubDomainsSize[2]; -
issm/trunk/src/c/objects/Bamg/BamgVertex.h
r5460 r5573 31 31 long color; 32 32 BamgVertex *MeshVertexHook; // used in geometry BamgVertex to know the Mesh Vertex associated 33 VertexOnGeom *Geom etricalEdgeHook; // if IndexInTriangle == 8; // set with Mesh::SetVertexFieldOn()33 VertexOnGeom *GeomEdgeHook; // if IndexInTriangle == 8; // set with Mesh::SetVertexFieldOn() 34 34 BamgVertex *BackgroundVertexHook; // if IndexInTriangle == 16 on Background vertex Mesh::SetVertexFieldOnBTh() 35 35 VertexOnEdge *BackgroundEdgeHook; // if IndexInTriangle == 32 on Background edge -
issm/trunk/src/c/objects/Bamg/CrackedEdge.h
r3913 r5573 8 8 //classes 9 9 class Triangle; 10 class Geom etricalEdge;10 class GeomEdge; 11 11 class Edge; 12 12 … … 16 16 Triangle* a; 17 17 Triangle* b; 18 Geom etricalEdge* E;18 GeomEdge* E; 19 19 Edge* e1; 20 20 Edge* e2; -
issm/trunk/src/c/objects/Bamg/Curve.h
r5401 r5573 7 7 8 8 //classes 9 class Geom etricalEdge;9 class GeomEdge; 10 10 class Curve; 11 11 class Geometry; … … 13 13 class Curve { 14 14 public: 15 Geom etricalEdge *FirstEdge; //First edge of the curve16 Geom etricalEdge *LastEdge; //Last edge of the curve15 GeomEdge *FirstEdge; //First edge of the curve 16 GeomEdge *LastEdge; //Last edge of the curve 17 17 int FirstVertexIndex; //Last vertex index in the last edge 18 18 int LastVertexIndex; //First Vertex index in the first edge -
issm/trunk/src/c/objects/Bamg/Edge.cpp
r5149 r5573 18 18 v[0] = ThNew.vertices + Th.GetId(v[0]); 19 19 v[1] = ThNew.vertices + Th.GetId(v[1]); 20 if (Geom etricalEdgeHook)21 Geom etricalEdgeHook = ThNew.Gh.edges+Th.Gh.GetId(GeometricalEdgeHook);20 if (GeomEdgeHook) 21 GeomEdgeHook = ThNew.Gh.edges+Th.Gh.GetId(GeomEdgeHook); 22 22 if (adj[0]) adj[0] = ThNew.edges + Th.GetId(adj[0]); 23 23 if (adj[1]) adj[1] = ThNew.edges + Th.GetId(adj[1]); … … 29 29 printf(" pointers towards two vertices: %p %p\n",v[0],v[1]); 30 30 printf(" ReferenceNumber = %i\n",ReferenceNumber); 31 printf(" Geom etricalEdgeHook = %p\n",GeometricalEdgeHook);31 printf(" GeomEdgeHook = %p\n",GeomEdgeHook); 32 32 printf(" two adjacent edges on the same curve: %p %p\n",adj[0],adj[1]); 33 33 } -
issm/trunk/src/c/objects/Bamg/Edge.h
r5148 r5573 6 6 #include "../../include/include.h" 7 7 #include "../../shared/Exceptions/exceptions.h" 8 #include "./Geom etricalEdge.h"8 #include "./GeomEdge.h" 9 9 10 10 namespace bamg { … … 18 18 BamgVertex *v[2]; 19 19 long ReferenceNumber; 20 Geom etricalEdge *GeometricalEdgeHook;20 GeomEdge *GeomEdgeHook; 21 21 Edge *adj[2]; // the 2 adj edges if on the same curve 22 22 -
issm/trunk/src/c/objects/Bamg/GeomEdge.cpp
r5571 r5573 6 6 #include "../../shared/Exceptions/exceptions.h" 7 7 8 #include "Geom etricalEdge.h"8 #include "GeomEdge.h" 9 9 #include "Geometry.h" 10 10 … … 16 16 17 17 /*Methods*/ 18 /*FUNCTION Geom etricalEdge::Cracked{{{1*/19 int Geom etricalEdge::Cracked() const {18 /*FUNCTION GeomEdge::Cracked{{{1*/ 19 int GeomEdge::Cracked() const { 20 20 return type &1; 21 21 }/*}}}*/ 22 /*FUNCTION Geom etricalEdge::F{{{1*/23 R2 Geom etricalEdge::F(double theta) const{22 /*FUNCTION GeomEdge::F{{{1*/ 23 R2 GeomEdge::F(double theta) const{ 24 24 /*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, MeshGeom.cpp/F)*/ 25 25 // parametrization of the curve edge … … 63 63 } 64 64 /*}}}1*/ 65 /*FUNCTION Geom etricalEdge::Mark{{{1*/66 int Geom etricalEdge::Mark() const {65 /*FUNCTION GeomEdge::Mark{{{1*/ 66 int GeomEdge::Mark() const { 67 67 return type &16; 68 68 }/*}}}*/ 69 /*FUNCTION Geom etricalEdge::R1tg{{{1*/70 double Geom etricalEdge::R1tg(double theta,R2 & t) const{69 /*FUNCTION GeomEdge::R1tg{{{1*/ 70 double GeomEdge::R1tg(double theta,R2 & t) const{ 71 71 /*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, MeshGeom.cpp/R1tg)*/ 72 72 // 1/R of radius of cuvature … … 139 139 } 140 140 /*}}}1*/ 141 /*FUNCTION Geom etricalEdge::Required{{{1*/142 int Geom etricalEdge::Required() {141 /*FUNCTION GeomEdge::Required{{{1*/ 142 int GeomEdge::Required() { 143 143 return type &64; 144 144 }/*}}}*/ 145 /*FUNCTION Geom etricalEdge::Set {{{1*/146 void Geom etricalEdge::Set(const GeometricalEdge & rec,const Geometry & Gh ,Geometry & GhNew){145 /*FUNCTION GeomEdge::Set {{{1*/ 146 void GeomEdge::Set(const GeomEdge & rec,const Geometry & Gh ,Geometry & GhNew){ 147 147 *this = rec; 148 148 v[0] = GhNew.vertices + Gh.GetId(v[0]); … … 152 152 } 153 153 /*}}}*/ 154 /*FUNCTION Geom etricalEdge::SetCracked{{{1*/155 void Geom etricalEdge::SetCracked() {154 /*FUNCTION GeomEdge::SetCracked{{{1*/ 155 void GeomEdge::SetCracked() { 156 156 type |= 1;/*=>1st digit to 1*/ 157 157 }/*}}}*/ 158 /*FUNCTION Geom etricalEdge::SetTgA{{{1*/159 void Geom etricalEdge::SetTgA() {158 /*FUNCTION GeomEdge::SetTgA{{{1*/ 159 void GeomEdge::SetTgA() { 160 160 type |=4; /*=>2d digit to 1*/ 161 161 }/*}}}*/ 162 /*FUNCTION Geom etricalEdge::SetTgB{{{1*/163 void Geom etricalEdge::SetTgB() {162 /*FUNCTION GeomEdge::SetTgB{{{1*/ 163 void GeomEdge::SetTgB() { 164 164 type |=8; /*=> 3d digit to 1*/ 165 165 }/*}}}*/ 166 /*FUNCTION Geom etricalEdge::SetMark{{{1*/167 void Geom etricalEdge::SetMark() {166 /*FUNCTION GeomEdge::SetMark{{{1*/ 167 void GeomEdge::SetMark() { 168 168 type |=16;/*=> 4th digiy to 1*/ 169 169 }/*}}}*/ 170 /*FUNCTION Geom etricalEdge::SetUnMark{{{1*/171 void Geom etricalEdge::SetUnMark() {170 /*FUNCTION GeomEdge::SetUnMark{{{1*/ 171 void GeomEdge::SetUnMark() { 172 172 type &= 1007 /* 1023-16 = 000111110111 => 4th digit to 0*/; 173 173 }/*}}}*/ 174 /*FUNCTION Geom etricalEdge::SetRequired{{{1*/175 void Geom etricalEdge::SetRequired() {174 /*FUNCTION GeomEdge::SetRequired{{{1*/ 175 void GeomEdge::SetRequired() { 176 176 type |= 64;/*=>6th digit to 1*/ 177 177 }/*}}}*/ 178 /*FUNCTION Geom etricalEdge::Tg{{{1*/179 int Geom etricalEdge::Tg(int i) const {178 /*FUNCTION GeomEdge::Tg{{{1*/ 179 int GeomEdge::Tg(int i) const { 180 180 return i==0 ? TgA() : TgB(); 181 181 }/*}}}*/ 182 /*FUNCTION Geom etricalEdge::TgA{{{1*/183 int Geom etricalEdge::TgA() const {182 /*FUNCTION GeomEdge::TgA{{{1*/ 183 int GeomEdge::TgA() const { 184 184 return type &4; 185 185 }/*}}}*/ 186 /*FUNCTION Geom etricalEdge::TgB{{{1*/187 int Geom etricalEdge::TgB() const {186 /*FUNCTION GeomEdge::TgB{{{1*/ 187 int GeomEdge::TgB() const { 188 188 return type &8; 189 189 }/*}}}*/ -
issm/trunk/src/c/objects/Bamg/GeomEdge.h
r5571 r5573 7 7 8 8 //classes 9 class Geom etricalVertex;9 class GeomVertex; 10 10 class Geometry; 11 11 12 class Geom etricalEdge {12 class GeomEdge { 13 13 14 14 public: 15 Geom etricalVertex *v[2];15 GeomVertex *v[2]; 16 16 long ReferenceNumber; 17 17 long CurveNumber; 18 18 R2 tg[2]; // the 2 tangentes (tg[0] =0 => no continuity) 19 Geom etricalEdge *Adj[2];19 GeomEdge *Adj[2]; 20 20 int AdjVertexIndex[2]; // for a given vertex, this gives the index of the vertex in the adjacent edge (0 or 1) 21 21 int type; 22 22 23 23 //Operators 24 Geom etricalVertex & operator[](int i){return *v[i];};25 const Geom etricalVertex & operator[](int i) const { return *v[i];};26 Geom etricalVertex * operator()(int i){return v[i];};24 GeomVertex & operator[](int i){return *v[i];}; 25 const GeomVertex & operator[](int i) const { return *v[i];}; 26 GeomVertex * operator()(int i){return v[i];}; 27 27 28 28 //Methods … … 41 41 void SetUnMark(); 42 42 void SetRequired(); 43 void Set(const Geom etricalEdge & rec,const Geometry & Th ,Geometry & ThNew);43 void Set(const GeomEdge & rec,const Geometry & Th ,Geometry & ThNew); 44 44 }; 45 45 -
issm/trunk/src/c/objects/Bamg/GeomSubDomain.cpp
r5571 r5573 4 4 #include <ctime> 5 5 6 #include "Geom etricalSubDomain.h"6 #include "GeomSubDomain.h" 7 7 #include "Geometry.h" 8 8 … … 12 12 13 13 /*Methods*/ 14 /*FUNCTION Geom etricalSubDomain::Set {{{1*/15 void Geom etricalSubDomain::Set(const GeometricalSubDomain & rec,const Geometry & Gh ,const Geometry & GhNew){14 /*FUNCTION GeomSubDomain::Set {{{1*/ 15 void GeomSubDomain::Set(const GeomSubDomain & rec,const Geometry & Gh ,const Geometry & GhNew){ 16 16 *this = rec; 17 17 edge = Gh.GetId(edge) + GhNew.edges; -
issm/trunk/src/c/objects/Bamg/GeomSubDomain.h
r5571 r5573 7 7 8 8 //classes 9 class Geom etricalEdge;9 class GeomEdge; 10 10 class Geometry; 11 11 12 class Geom etricalSubDomain {12 class GeomSubDomain { 13 13 public: 14 Geom etricalEdge *edge;14 GeomEdge *edge; 15 15 int direction; // -1 or 1 16 16 long ReferenceNumber; 17 17 18 18 //Methods 19 void Set(const Geom etricalSubDomain &,const Geometry & ,const Geometry &);19 void Set(const GeomSubDomain &,const Geometry & ,const Geometry &); 20 20 }; 21 21 -
issm/trunk/src/c/objects/Bamg/GeomVertex.cpp
r5571 r5573 4 4 #include <ctime> 5 5 6 #include "Geom etricalVertex.h"6 #include "GeomVertex.h" 7 7 #include "../../include/include.h" 8 8 #include "../../shared/Exceptions/exceptions.h" … … 14 14 15 15 /*Methods*/ 16 /*FUNCTION Geom etricalVertex::Corner {{{1*/17 int Geom etricalVertex::Corner() const {16 /*FUNCTION GeomVertex::Corner {{{1*/ 17 int GeomVertex::Corner() const { 18 18 return type & 4; 19 19 } 20 20 /*}}}*/ 21 /*FUNCTION Geom etricalVertex::Required {{{1*/22 int Geom etricalVertex::Required()const {21 /*FUNCTION GeomVertex::Required {{{1*/ 22 int GeomVertex::Required()const { 23 23 // a corner is required 24 24 return type & 6; 25 25 } 26 26 /*}}}*/ 27 /*FUNCTION Geom etricalVertex::SetCorner {{{1*/28 void Geom etricalVertex::SetCorner(){27 /*FUNCTION GeomVertex::SetCorner {{{1*/ 28 void GeomVertex::SetCorner(){ 29 29 type |= 4; 30 30 } 31 31 /*}}}*/ 32 /*FUNCTION Geom etricalVertex::SetRequired {{{1*/33 void Geom etricalVertex::SetRequired(){32 /*FUNCTION GeomVertex::SetRequired {{{1*/ 33 void GeomVertex::SetRequired(){ 34 34 type |= 2; 35 35 } -
issm/trunk/src/c/objects/Bamg/GeomVertex.h
r5571 r5573 9 9 class Geometry; 10 10 11 class Geom etricalVertex : public BamgVertex {11 class GeomVertex : public BamgVertex { 12 12 13 13 public: … … 17 17 18 18 //Constructors 19 Geom etricalVertex():type(0){};19 GeomVertex():type(0){}; 20 20 21 21 //Methods -
issm/trunk/src/c/objects/Bamg/Geometry.cpp
r5401 r5573 33 33 NbRef =0; 34 34 quadtree=0; 35 vertices = nbv ? new Geom etricalVertex[nbv] : NULL;36 edges = nbe ? new Geom etricalEdge[nbe]:NULL;35 vertices = nbv ? new GeomVertex[nbv] : NULL; 36 edges = nbe ? new GeomEdge[nbe]:NULL; 37 37 curves= nbcurves ? new Curve[nbcurves]:NULL; 38 subdomains = nbsubdomains ? new Geom etricalSubDomain[nbsubdomains]:NULL;38 subdomains = nbsubdomains ? new GeomSubDomain[nbsubdomains]:NULL; 39 39 for (i=0;i<nbe;i++) 40 40 edges[i].Set(Gh.edges[i],Gh,*this); … … 83 83 if(verbose>5) printf(" processing Vertices\n"); 84 84 if (bamggeom->VerticesSize[1]!=3) ISSMERROR("Vertices should have 3 columns"); 85 vertices = new Geom etricalVertex[nbv];85 vertices = new GeomVertex[nbv]; 86 86 for (i=0;i<nbv;i++) { 87 87 vertices[i].r.x=(double)bamggeom->Vertices[i*3+0]; … … 128 128 if(verbose>5) printf(" processing Edges\n"); 129 129 if (bamggeom->EdgesSize[1]!=3) ISSMERROR("Edges should have 3 columns"); 130 edges = new Geom etricalEdge[nbe];130 edges = new GeomEdge[nbe]; 131 131 132 132 //initialize verticeslength (sum of the lengths of the edges holding vertex) … … 265 265 if (bamggeom->SubDomainsSize[1]!=4) ISSMERROR("SubDomains should have 4 columns"); 266 266 nbsubdomains=bamggeom->SubDomainsSize[0]; 267 subdomains = new Geom etricalSubDomain[nbsubdomains];267 subdomains = new GeomSubDomain[nbsubdomains]; 268 268 for (i=0;i<nbsubdomains;i++){ 269 269 i0=(int)bamggeom->SubDomains[i*4+0]; … … 449 449 return Max(pmax.x-pmin.x,pmax.y-pmin.y); 450 450 }/*}}}*/ 451 /*FUNCTION Geometry::GetId(const Geom etricalVertex &t){{{1*/452 long Geometry::GetId(const Geom etricalVertex & t) const {451 /*FUNCTION Geometry::GetId(const GeomVertex &t){{{1*/ 452 long Geometry::GetId(const GeomVertex & t) const { 453 453 return &t - vertices; 454 454 }/*}}}*/ 455 /*FUNCTION Geometry::GetId(const Geom etricalVertex * t){{{1*/456 long Geometry::GetId(const Geom etricalVertex * t) const {455 /*FUNCTION Geometry::GetId(const GeomVertex * t){{{1*/ 456 long Geometry::GetId(const GeomVertex * t) const { 457 457 return t - vertices; 458 458 }/*}}}*/ 459 /*FUNCTION Geometry::GetId(const Geom etricalEdge & t){{{1*/460 long Geometry::GetId(const Geom etricalEdge & t) const {459 /*FUNCTION Geometry::GetId(const GeomEdge & t){{{1*/ 460 long Geometry::GetId(const GeomEdge & t) const { 461 461 return &t - edges; 462 462 }/*}}}*/ 463 /*FUNCTION Geometry::GetId(const Geom etricalEdge * t){{{1*/464 long Geometry::GetId(const Geom etricalEdge * t) const {463 /*FUNCTION Geometry::GetId(const GeomEdge * t){{{1*/ 464 long Geometry::GetId(const GeomEdge * t) const { 465 465 return t - edges; 466 466 }/*}}}*/ … … 470 470 }/*}}}*/ 471 471 /*FUNCTION Geometry::Containing{{{1*/ 472 Geom etricalEdge* Geometry::Containing(const R2 P, GeometricalEdge * start) const {472 GeomEdge* Geometry::Containing(const R2 P, GeomEdge * start) const { 473 473 /*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, MeshGeom.cpp/Contening)*/ 474 474 475 Geom etricalEdge* on =start,* pon=0;475 GeomEdge* on =start,* pon=0; 476 476 // walk with the cos on geometry 477 477 int counter=0; … … 507 507 QuadTree quadtree; // build quadtree to find duplicates 508 508 BamgVertex *v0 = vertices; 509 Geom etricalVertex *v0g = (GeometricalVertex*) (void*)v0;509 GeomVertex *v0g = (GeomVertex*) (void*)v0; 510 510 511 511 k=0; … … 755 755 for (i=0;i<nbe;i++){ 756 756 757 Geom etricalEdge & ei=edges[i];757 GeomEdge & ei=edges[i]; 758 758 for(j=0;j<2;j++){ 759 759 /*If current edge ei is unmarked and (level=1 or vertex i is required (corner)): … … 761 761 if (!ei.Mark() && (level || ei[j].Required())) { 762 762 int k0=j,k1; 763 Geom etricalEdge *e=&ei;764 Geom etricalVertex *a=(*e)(k0); // begin763 GeomEdge *e=&ei; 764 GeomVertex *a=(*e)(k0); // begin 765 765 if(curves){ 766 766 curves[nbcurves].FirstEdge=e; … … 774 774 nb_marked_edges++; 775 775 e->CurveNumber=nbcurves; 776 Geom etricalVertex *b=(*e)(k1);776 GeomVertex *b=(*e)(k1); 777 777 778 778 //break if we have reached the other end of the curve … … 809 809 /*}}}1*/ 810 810 /*FUNCTION Geometry::ProjectOnCurve {{{1*/ 811 Geom etricalEdge* Geometry::ProjectOnCurve(const Edge &e,double s,BamgVertex &V,VertexOnGeom &GV) const {811 GeomEdge* Geometry::ProjectOnCurve(const Edge &e,double s,BamgVertex &V,VertexOnGeom &GV) const { 812 812 /*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, MeshGeom.cpp/ProjectOnCurve)*/ 813 813 /*Add a vertex on an existing geometrical edge according to the metrics of the two vertices constituting the edge*/ … … 819 819 820 820 s=save_s; 821 Geom etricalEdge* on=e.GeometricalEdgeHook;821 GeomEdge* on=e.GeomEdgeHook; 822 822 if (!on){ 823 823 ISSMERROR("ProjectOnCurve error message: edge provided should be on geometry"); 824 824 } 825 if (!e[0].Geom etricalEdgeHook || !e[1].GeometricalEdgeHook){825 if (!e[0].GeomEdgeHook || !e[1].GeomEdgeHook){ 826 826 ISSMERROR("ProjectOnCurve error message: at least one of the vertex of the edge provided is not on geometry"); 827 827 } … … 835 835 836 836 //Get geometrical vertices corresponding to v0 and v1 837 VertexOnGeom vg0=*v0.Geom etricalEdgeHook, vg1=*v1.GeometricalEdgeHook;837 VertexOnGeom vg0=*v0.GeomEdgeHook, vg1=*v1.GeomEdgeHook; 838 838 839 839 //build two pointers towrad current geometrical edge 840 Geom etricalEdge *eg0=on, *eg1=on;840 GeomEdge *eg0=on, *eg1=on; 841 841 842 842 //Get edge direction and swap v0 and v1 if necessary … … 850 850 851 851 const int mxe=100; 852 Geom etricalEdge* ge[mxe+1];852 GeomEdge* ge[mxe+1]; 853 853 int directionge[mxe+1]; 854 854 double lge[mxe+1]; 855 855 int bge=mxe/2,tge=bge; 856 ge[bge] = e.Geom etricalEdgeHook;856 ge[bge] = e.GeomEdgeHook; 857 857 directionge[bge]=1; 858 858 859 while (eg0!=(Geom etricalEdge*)vg0 && (*eg0)(direction0)!=(GeometricalVertex*)vg0){859 while (eg0!=(GeomEdge*)vg0 && (*eg0)(direction0)!=(GeomVertex*)vg0){ 860 860 if (bge<=0) { 861 861 if(NbTry) { … … 870 870 goto retry; 871 871 } 872 Geom etricalEdge* tmpge = eg0;872 GeomEdge* tmpge = eg0; 873 873 ge[--bge] =eg0 = eg0->Adj[direction0]; 874 874 ISSMASSERT(bge>=0 && bge<=mxe); 875 875 direction0 = 1-( directionge[bge] = tmpge->AdjVertexIndex[direction0]); 876 876 } 877 while (eg1 != (Geom etricalEdge*) vg1 && (*eg1)(direction1) != (GeometricalVertex*) vg1) {877 while (eg1 != (GeomEdge*) vg1 && (*eg1)(direction1) != (GeomVertex*) vg1) { 878 878 if(tge>=mxe ) { 879 879 printf("WARNING: on the class Mesh before call Geometry::ProjectOnCurve is having issues (isn't it Eric?)\n"); … … 887 887 ISSMERROR("see above"); 888 888 } 889 Geom etricalEdge* tmpge = eg1;889 GeomEdge* tmpge = eg1; 890 890 ge[++tge] =eg1 = eg1->Adj[direction1]; 891 891 directionge[tge]= direction1 = 1-tmpge->AdjVertexIndex[direction1]; … … 894 894 895 895 896 if ((*eg0)(direction0)==(Geom etricalVertex*)vg0)896 if ((*eg0)(direction0)==(GeomVertex*)vg0) 897 897 vg0=VertexOnGeom(*(BamgVertex*) vg0,*eg0,direction0); //vg0 = absisce 898 898 899 if ((*eg1)(direction1)==(Geom etricalVertex*)vg1)899 if ((*eg1)(direction1)==(GeomVertex*)vg1) 900 900 vg1=VertexOnGeom(*(BamgVertex*) vg1,*eg1,direction1); 901 901 -
issm/trunk/src/c/objects/Bamg/Geometry.h
r5397 r5573 5 5 #include "./BamgGeom.h" 6 6 #include "./BamgOpts.h" 7 #include "./Geom etricalVertex.h"8 #include "./Geom etricalEdge.h"7 #include "./GeomVertex.h" 8 #include "./GeomEdge.h" 9 9 #include "./Curve.h" 10 10 … … 13 13 class Triangle; 14 14 class QuadTree; 15 class Geom etricalSubDomain;15 class GeomSubDomain; 16 16 class Edge; 17 17 … … 25 25 long nbsubdomains; 26 26 long nbcurves; 27 Geom etricalVertex *vertices;28 Geom etricalEdge *edges;27 GeomVertex *vertices; 28 GeomEdge *edges; 29 29 QuadTree *quadtree; 30 Geom etricalSubDomain *subdomains;30 GeomSubDomain *subdomains; 31 31 Curve *curves; 32 32 R2 pmin,pmax; // domain extrema coordinates … … 41 41 42 42 //Operators 43 const Geom etricalVertex &operator[](long i) const { return vertices[i]; };44 Geom etricalVertex &operator[](long i) { return vertices[i]; };45 const Geom etricalEdge &operator()(long i) const { return edges[i]; };46 Geom etricalEdge &operator()(long i) { return edges[i]; };43 const GeomVertex &operator[](long i) const { return vertices[i]; }; 44 GeomVertex &operator[](long i) { return vertices[i]; }; 45 const GeomEdge &operator()(long i) const { return edges[i]; }; 46 GeomEdge &operator()(long i) { return edges[i]; }; 47 47 48 48 //Methods … … 54 54 void Init(void); 55 55 void PostRead(); 56 long GetId(const Geom etricalVertex &t) const;57 long GetId(const Geom etricalVertex *t) const;58 long GetId(const Geom etricalEdge &t) const;59 long GetId(const Geom etricalEdge *t) const;56 long GetId(const GeomVertex &t) const; 57 long GetId(const GeomVertex *t) const; 58 long GetId(const GeomEdge &t) const; 59 long GetId(const GeomEdge *t) const; 60 60 long GetId(const Curve *c) const; 61 61 void UnMarkEdges(); 62 Geom etricalEdge *ProjectOnCurve(const Edge &,double,BamgVertex &,VertexOnGeom &) const;63 Geom etricalEdge *Containing(const R2 P, GeometricalEdge *start) const;62 GeomEdge *ProjectOnCurve(const Edge &,double,BamgVertex &,VertexOnGeom &) const; 63 GeomEdge *Containing(const R2 P, GeomEdge *start) const; 64 64 void WriteGeometry(BamgGeom *bamggeom, BamgOpts*bamgopts); 65 65 }; -
issm/trunk/src/c/objects/Bamg/ListofIntersectionTriangles.cpp
r5180 r5573 180 180 /*}}}1*/ 181 181 /*FUNCTION ListofIntersectionTriangles::NewSubSeg{{{1*/ 182 void ListofIntersectionTriangles::NewSubSeg(Geom etricalEdge *e,double s0,double s1){182 void ListofIntersectionTriangles::NewSubSeg(GeomEdge *e,double s0,double s1){ 183 183 long int verbosity=0; 184 184 if (NbSeg>=MaxNbSeg) { -
issm/trunk/src/c/objects/Bamg/ListofIntersectionTriangles.h
r5130 r5573 25 25 26 26 public: 27 Geom etricalEdge *e;27 GeomEdge *e; 28 28 double sBegin ,sEnd; // abscisse of the seg on edge parameter 29 29 double lBegin ,lEnd; // length abscisse set in ListofIntersectionTriangles::Length … … 66 66 double Length(); 67 67 long NewPoints(BamgVertex *,long &nbv,long maxnbv); 68 void NewSubSeg(Geom etricalEdge *e,double s0,double s1);68 void NewSubSeg(GeomEdge *e,double s0,double s1); 69 69 void ReShape(); 70 70 }; -
issm/trunk/src/c/objects/Bamg/Mesh.cpp
r5531 r5573 380 380 } 381 381 382 //VerticesOnGeom etricEdge383 if(bamgmesh->VerticesOnGeom etricEdge){384 if(verbose>5) printf(" processing VerticesOnGeom etricEdge\n");385 NbVerticesOnGeomEdge=bamgmesh->VerticesOnGeom etricEdgeSize[0];382 //VerticesOnGeomEdge 383 if(bamgmesh->VerticesOnGeomEdge){ 384 if(verbose>5) printf(" processing VerticesOnGeomEdge\n"); 385 NbVerticesOnGeomEdge=bamgmesh->VerticesOnGeomEdgeSize[0]; 386 386 VerticesOnGeomEdge= new VertexOnGeom[NbVerticesOnGeomEdge] ; 387 387 for (i=0;i<NbVerticesOnGeomEdge;i++){ 388 388 long i1,i2; 389 389 double s; 390 i1=(long) bamgmesh->VerticesOnGeom etricEdge[i*3+0]-1; //for C indexing391 i2=(long) bamgmesh->VerticesOnGeom etricEdge[i*3+1]-1; //for C indexing392 s =(double)bamgmesh->VerticesOnGeom etricEdge[i*3+2];390 i1=(long) bamgmesh->VerticesOnGeomEdge[i*3+0]-1; //for C indexing 391 i2=(long) bamgmesh->VerticesOnGeomEdge[i*3+1]-1; //for C indexing 392 s =(double)bamgmesh->VerticesOnGeomEdge[i*3+2]; 393 393 VerticesOnGeomEdge[i]=VertexOnGeom(vertices[i1],Gh.edges[i2],s); 394 394 } 395 395 } 396 396 397 //VerticesOnGeom etricVertex398 if(bamgmesh->VerticesOnGeom etricVertexSize[0]){399 if(verbose>5) printf(" processing VerticesOnGeom etricVertex\n");400 NbVerticesOnGeomVertex=bamgmesh->VerticesOnGeom etricVertexSize[0];397 //VerticesOnGeomVertex 398 if(bamgmesh->VerticesOnGeomVertexSize[0]){ 399 if(verbose>5) printf(" processing VerticesOnGeomVertex\n"); 400 NbVerticesOnGeomVertex=bamgmesh->VerticesOnGeomVertexSize[0]; 401 401 VerticesOnGeomVertex = new VertexOnGeom[NbVerticesOnGeomVertex] ; 402 402 for (i=0;i<NbVerticesOnGeomVertex;i++){ 403 403 long i1,i2; 404 i1=(long)bamgmesh->VerticesOnGeom etricVertex[i*2+0]-1; //for C indexing405 i2=(long)bamgmesh->VerticesOnGeom etricVertex[i*2+1]-1; //for C indexing404 i1=(long)bamgmesh->VerticesOnGeomVertex[i*2+0]-1; //for C indexing 405 i2=(long)bamgmesh->VerticesOnGeomVertex[i*2+1]-1; //for C indexing 406 406 VerticesOnGeomVertex[i]=VertexOnGeom(vertices[i1],Gh.vertices[i2]); 407 407 } … … 471 471 } 472 472 473 //EdgeOnGeom etricEdge474 if(bamgmesh->EdgesOnGeom etricEdge){475 if(verbose>5) printf(" processing EdgesOnGeom etricEdge\n");473 //EdgeOnGeomEdge 474 if(bamgmesh->EdgesOnGeomEdge){ 475 if(verbose>5) printf(" processing EdgesOnGeomEdge\n"); 476 476 int i1,i2,i,j; 477 i2=bamgmesh->EdgesOnGeom etricEdgeSize[0];477 i2=bamgmesh->EdgesOnGeomEdgeSize[0]; 478 478 for (i1=0;i1<i2;i1++) { 479 i=(int)bamgmesh->EdgesOnGeom etricEdge[i1*2+0]-1; //C indexing480 j=(int)bamgmesh->EdgesOnGeom etricEdge[i1*2+1]-1; //C indexing479 i=(int)bamgmesh->EdgesOnGeomEdge[i1*2+0]-1; //C indexing 480 j=(int)bamgmesh->EdgesOnGeomEdge[i1*2+1]-1; //C indexing 481 481 //Check value 482 482 if(!(i>=0 && j>=0 && i<nbe && j<Gh.nbe)) { 483 ISSMERROR("ReadMesh error: EdgesOnGeom etricEdge edge provided (line %i: [%i %i]) is incorrect (must be positive, [0<i<nbe=%i 0<j<Gh.nbe=%i]",i1+1,i+1,j+1,nbe,Gh.nbe);484 } 485 edges[i].Geom etricalEdgeHook=Gh.edges+j;483 ISSMERROR("ReadMesh error: EdgesOnGeomEdge edge provided (line %i: [%i %i]) is incorrect (must be positive, [0<i<nbe=%i 0<j<Gh.nbe=%i]",i1+1,i+1,j+1,nbe,Gh.nbe); 484 } 485 edges[i].GeomEdgeHook=Gh.edges+j; 486 486 } 487 487 } … … 582 582 bamgmesh->Edges[i*3+1]=GetId(edges[i][1])+1; //back to M indexing 583 583 bamgmesh->Edges[i*3+2]=edges[i].ReferenceNumber; 584 if(edges[i].Geom etricalEdgeHook){584 if(edges[i].GeomEdgeHook){ 585 585 NumIssmSegments++; 586 586 } … … 651 651 num=0; 652 652 for (i=0;i<nbe;i++){ 653 if(edges[i].Geom etricalEdgeHook){653 if(edges[i].GeomEdgeHook){ 654 654 //build segment 655 655 int i1=GetId(edges[i][0]); … … 758 758 759 759 /*VerticesOnGeomVertex*/ 760 if(verbose>5) printf(" writing VerticesOnGeom etricVertex\n");761 bamgmesh->VerticesOnGeom etricVertexSize[0]=NbVerticesOnGeomVertex;762 bamgmesh->VerticesOnGeom etricVertexSize[1]=2;760 if(verbose>5) printf(" writing VerticesOnGeomVertex\n"); 761 bamgmesh->VerticesOnGeomVertexSize[0]=NbVerticesOnGeomVertex; 762 bamgmesh->VerticesOnGeomVertexSize[1]=2; 763 763 if (NbVerticesOnGeomVertex){ 764 bamgmesh->VerticesOnGeom etricVertex=(double*)xmalloc(2*NbVerticesOnGeomVertex*sizeof(double));764 bamgmesh->VerticesOnGeomVertex=(double*)xmalloc(2*NbVerticesOnGeomVertex*sizeof(double)); 765 765 for (i=0;i<NbVerticesOnGeomVertex;i++){ 766 766 VertexOnGeom &v=VerticesOnGeomVertex[i]; 767 767 ISSMASSERT(v.OnGeomVertex()); 768 bamgmesh->VerticesOnGeom etricVertex[i*2+0]=GetId((BamgVertex*)v)+1; //back to Matlab indexing769 bamgmesh->VerticesOnGeom etricVertex[i*2+1]=Gh.GetId((GeometricalVertex*)v)+1; //back to Matlab indexing770 } 771 } 772 773 /*VertexOnGeom etricEdge*/774 if(verbose>5) printf(" writing VerticesOnGeom etricEdge\n");775 bamgmesh->VerticesOnGeom etricEdgeSize[0]=NbVerticesOnGeomEdge;776 bamgmesh->VerticesOnGeom etricEdgeSize[1]=3;768 bamgmesh->VerticesOnGeomVertex[i*2+0]=GetId((BamgVertex*)v)+1; //back to Matlab indexing 769 bamgmesh->VerticesOnGeomVertex[i*2+1]=Gh.GetId((GeomVertex*)v)+1; //back to Matlab indexing 770 } 771 } 772 773 /*VertexOnGeomEdge*/ 774 if(verbose>5) printf(" writing VerticesOnGeomEdge\n"); 775 bamgmesh->VerticesOnGeomEdgeSize[0]=NbVerticesOnGeomEdge; 776 bamgmesh->VerticesOnGeomEdgeSize[1]=3; 777 777 if (NbVerticesOnGeomEdge){ 778 bamgmesh->VerticesOnGeom etricEdge=(double*)xmalloc(3*NbVerticesOnGeomEdge*sizeof(double));778 bamgmesh->VerticesOnGeomEdge=(double*)xmalloc(3*NbVerticesOnGeomEdge*sizeof(double)); 779 779 for (i=0;i<NbVerticesOnGeomEdge;i++){ 780 780 const VertexOnGeom &v=VerticesOnGeomEdge[i]; 781 781 if (!v.OnGeomEdge()){ 782 ISSMERROR("A vertices supposed to be OnGeom etricEdge is actually not");783 } 784 bamgmesh->VerticesOnGeom etricEdge[i*3+0]=GetId((BamgVertex*)v)+1; //back to Matlab indexing785 bamgmesh->VerticesOnGeom etricEdge[i*3+1]=Gh.GetId((const GeometricalEdge*)v)+1; //back to Matlab indexing786 bamgmesh->VerticesOnGeom etricEdge[i*3+2]=(double)v; //absisce787 } 788 } 789 790 /*EdgesOnGeom etricEdge*/791 if(verbose>5) printf(" writing EdgesOnGeom etricEdge\n");782 ISSMERROR("A vertices supposed to be OnGeomEdge is actually not"); 783 } 784 bamgmesh->VerticesOnGeomEdge[i*3+0]=GetId((BamgVertex*)v)+1; //back to Matlab indexing 785 bamgmesh->VerticesOnGeomEdge[i*3+1]=Gh.GetId((const GeomEdge*)v)+1; //back to Matlab indexing 786 bamgmesh->VerticesOnGeomEdge[i*3+2]=(double)v; //absisce 787 } 788 } 789 790 /*EdgesOnGeomEdge*/ 791 if(verbose>5) printf(" writing EdgesOnGeomEdge\n"); 792 792 k=0; 793 793 for (i=0;i<nbe;i++){ 794 if (edges[i].Geom etricalEdgeHook) k=k+1;795 } 796 bamgmesh->EdgesOnGeom etricEdgeSize[0]=k;797 bamgmesh->EdgesOnGeom etricEdgeSize[1]=2;794 if (edges[i].GeomEdgeHook) k=k+1; 795 } 796 bamgmesh->EdgesOnGeomEdgeSize[0]=k; 797 bamgmesh->EdgesOnGeomEdgeSize[1]=2; 798 798 if (k){ 799 bamgmesh->EdgesOnGeom etricEdge=(double*)xmalloc(2*(int)k*sizeof(double));799 bamgmesh->EdgesOnGeomEdge=(double*)xmalloc(2*(int)k*sizeof(double)); 800 800 int count=0; 801 801 for (i=0;i<nbe;i++){ 802 if (edges[i].Geom etricalEdgeHook){803 bamgmesh->EdgesOnGeom etricEdge[count*2+0]=(double)i+1; //back to Matlab indexing804 bamgmesh->EdgesOnGeom etricEdge[count*2+1]=(double)Gh.GetId(edges[i].GeometricalEdgeHook)+1; //back to Matlab indexing802 if (edges[i].GeomEdgeHook){ 803 bamgmesh->EdgesOnGeomEdge[count*2+0]=(double)i+1; //back to Matlab indexing 804 bamgmesh->EdgesOnGeomEdge[count*2+1]=(double)Gh.GetId(edges[i].GeomEdgeHook)+1; //back to Matlab indexing 805 805 count=count+1; 806 806 } … … 1015 1015 Gh.ProjectOnCurve(edges[i],ss[j],V,GV); 1016 1016 1017 Geom etricalEdge* eg = GV;1017 GeomEdge* eg = GV; 1018 1018 double s = GV; 1019 1019 R2 tg; … … 1386 1386 edges[add].v[0] = &triangles[it][VerticesOfTriangularEdge[j][0]]; 1387 1387 edges[add].v[1] = &triangles[it][VerticesOfTriangularEdge[j][1]]; 1388 edges[add].Geom etricalEdgeHook=NULL;1388 edges[add].GeomEdgeHook=NULL; 1389 1389 //if already existed 1390 1390 if (i<nbeold){ 1391 1391 edges[add].ReferenceNumber=edgessave[i].ReferenceNumber; 1392 edges[add].Geom etricalEdgeHook=edgessave[i].GeometricalEdgeHook; // HACK to get required edges1392 edges[add].GeomEdgeHook=edgessave[i].GeomEdgeHook; // HACK to get required edges 1393 1393 printf("oh no...\n"); 1394 1394 } … … 1553 1553 Gh.nbv=k; 1554 1554 Gh.nbe = nbe; 1555 Gh.vertices = new Geom etricalVertex[k];1556 Gh.edges = new Geom etricalEdge[nbe];1555 Gh.vertices = new GeomVertex[k]; 1556 Gh.edges = new GeomEdge[nbe]; 1557 1557 Gh.nbsubdomains = nbsubdomains; 1558 Gh.subdomains = new Geom etricalSubDomain[nbsubdomains];1558 Gh.subdomains = new GeomSubDomain[nbsubdomains]; 1559 1559 if (verbose>3) printf(" number of vertices = %i\n number of edges = %i\n",Gh.nbv,Gh.nbe); 1560 1560 NbVerticesOnGeomVertex = Gh.nbv; … … 1618 1618 Gh.edges[i].tg[1]=R2(); 1619 1619 1620 bool required= edges[i].Geom etricalEdgeHook;1620 bool required= edges[i].GeomEdgeHook; 1621 1621 if(required) kreq++; 1622 edges[i].Geom etricalEdgeHook = Gh.edges + i;1622 edges[i].GeomEdgeHook = Gh.edges + i; 1623 1623 if(required){ 1624 1624 Gh.edges[i].v[0]->SetRequired(); … … 2195 2195 // computed the number of cracked edge 2196 2196 for (k=i=0;i<nbe;i++){ 2197 if(edges[i].Geom etricalEdgeHook->Cracked()) k++;2197 if(edges[i].GeomEdgeHook->Cracked()) k++; 2198 2198 } 2199 2199 … … 2214 2214 2215 2215 for (i=0;i<nbe;i++){ 2216 if(edges[i].Geom etricalEdgeHook->Cracked()){2216 if(edges[i].GeomEdgeHook->Cracked()){ 2217 2217 2218 2218 //Fill edges fields of CrackedEdges 2219 CrackedEdges[k ].E =edges[i].Geom etricalEdgeHook;2219 CrackedEdges[k ].E =edges[i].GeomEdgeHook; 2220 2220 CrackedEdges[k++].e1=&edges[i]; 2221 2221 … … 2563 2563 CreateSingleVertexToTriangleConnectivity(); 2564 2564 long * mark = new long[nbt]; 2565 Edge **Geom etricalEdgetoEdge = MakeGeometricalEdgeToEdge();2565 Edge **GeomEdgetoEdge = MakeGeomEdgeToEdge(); 2566 2566 2567 2567 for (it=0;it<nbt;it++) … … 2569 2569 long inew =0; 2570 2570 for (int i=0;i<nbsubdomains;i++) { 2571 Geom etricalEdge &eg = *Gh.subdomains[i].edge;2571 GeomEdge &eg = *Gh.subdomains[i].edge; 2572 2572 subdomains[i].ReferenceNumber = Gh.subdomains[i].ReferenceNumber; 2573 2573 int ssdlab = subdomains[i].ReferenceNumber; 2574 // by carefull is not easy to find a edge create from a Geom etricalEdge2575 // see routine MakeGeom etricalEdgeToEdge2576 Edge &e = *Geom etricalEdgetoEdge[Gh.GetId(eg)];2574 // by carefull is not easy to find a edge create from a GeomEdge 2575 // see routine MakeGeomEdgeToEdge 2576 Edge &e = *GeomEdgetoEdge[Gh.GetId(eg)]; 2577 2577 ISSMASSERT(&e); 2578 2578 BamgVertex * v0 = e(0),*v1 = e(1); … … 2632 2632 if ( mark[it] ==-1 ) 2633 2633 nbtout++,triangles[it].link =0; 2634 delete [] Geom etricalEdgetoEdge;2634 delete [] GeomEdgetoEdge; 2635 2635 delete [] mark; 2636 2636 … … 2954 2954 } 2955 2955 /*}}}1*/ 2956 /*FUNCTION Mesh::MakeGeom etricalEdgeToEdge{{{1*/2957 Edge** Mesh::MakeGeom etricalEdgeToEdge() {2958 /*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Mesh2.cpp/MakeGeom etricalEdgeToEdge)*/2956 /*FUNCTION Mesh::MakeGeomEdgeToEdge{{{1*/ 2957 Edge** Mesh::MakeGeomEdgeToEdge() { 2958 /*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Mesh2.cpp/MakeGeomEdgeToEdge)*/ 2959 2959 2960 2960 if (!Gh.nbe){ … … 2969 2969 { 2970 2970 Edge * ei = edges+i; 2971 Geom etricalEdge *GeometricalEdgeHook = ei->GeometricalEdgeHook;2972 e[Gh.GetId(Geom etricalEdgeHook)] = ei;2971 GeomEdge *GeomEdgeHook = ei->GeomEdgeHook; 2972 e[Gh.GetId(GeomEdgeHook)] = ei; 2973 2973 } 2974 2974 for ( i=0;i<nbe ; i++) 2975 2975 for (int ii=0;ii<2;ii++) { 2976 2976 Edge * ei = edges+i; 2977 Geom etricalEdge *GeometricalEdgeHook = ei->GeometricalEdgeHook;2977 GeomEdge *GeomEdgeHook = ei->GeomEdgeHook; 2978 2978 int j= ii; 2979 while (!(*Geom etricalEdgeHook)[j].Required()) {2980 Adj(Geom etricalEdgeHook,j); // next geom edge2979 while (!(*GeomEdgeHook)[j].Required()) { 2980 Adj(GeomEdgeHook,j); // next geom edge 2981 2981 j=1-j; 2982 if (e[Gh.GetId(Geom etricalEdgeHook)]) break; // optimisation2983 e[Gh.GetId(Geom etricalEdgeHook)] = ei;2982 if (e[Gh.GetId(GeomEdgeHook)]) break; // optimisation 2983 e[Gh.GetId(GeomEdgeHook)] = ei; 2984 2984 } 2985 2985 } … … 3161 3161 for (i=0;i<Bh.nbv;i++){ 3162 3162 BamgVertex &bv=Bh[i]; 3163 if (!bv.Geom etricalEdgeHook){3163 if (!bv.GeomEdgeHook){ 3164 3164 vertices[nbv].r = bv.r; 3165 3165 vertices[nbv++].m = bv.m; … … 3266 3266 /*}}}1*/ 3267 3267 /*FUNCTION Mesh::ProjectOnCurve{{{1*/ 3268 Geom etricalEdge* Mesh::ProjectOnCurve( Edge & BhAB, BamgVertex & vA, BamgVertex & vB,3268 GeomEdge* Mesh::ProjectOnCurve( Edge & BhAB, BamgVertex & vA, BamgVertex & vB, 3269 3269 double theta,BamgVertex & R,VertexOnEdge & BR,VertexOnGeom & GR) { 3270 3270 /*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, MeshQuad.cpp/ProjectOnCurve)*/ … … 3676 3676 for (i=0;i<nbe;i++){ 3677 3677 /*If the current mesh edge is on Geometry*/ 3678 if(edges[i].Geom etricalEdgeHook){3678 if(edges[i].GeomEdgeHook){ 3679 3679 for(int j=0;j<2;j++){ 3680 3680 /*Go through the edges adjacent to current edge (if on the same curve)*/ … … 3682 3682 /*The edge is on Geometry and does not have 2 adjacent edges... (not on a closed curve)*/ 3683 3683 /*Check that the 2 vertices are on geometry AND required*/ 3684 if(!edges[i][j].Geom etricalEdgeHook->IsRequiredVertex()){3684 if(!edges[i][j].GeomEdgeHook->IsRequiredVertex()){ 3685 3685 printf("ReconstructExistingMesh error message: problem with the edge number %i: [%i %i]\n",i+1,GetId(edges[i][0])+1,GetId(edges[i][1])+1); 3686 printf("This edge is on geometrical edge number %i\n",Gh.GetId(edges[i].Geom etricalEdgeHook)+1);3687 if (edges[i][j].Geom etricalEdgeHook->OnGeomVertex())3688 printf("the vertex number %i of this edge is a geometric BamgVertex number %i\n",GetId(edges[i][j])+1,Gh.GetId(edges[i][j].Geom etricalEdgeHook->gv)+1);3689 else if (edges[i][j].Geom etricalEdgeHook->OnGeomEdge())3690 printf("the vertex number %i of this edge is a geometric Edge number %i\n",GetId(edges[i][j])+1,Gh.GetId(edges[i][j].Geom etricalEdgeHook->ge)+1);3686 printf("This edge is on geometrical edge number %i\n",Gh.GetId(edges[i].GeomEdgeHook)+1); 3687 if (edges[i][j].GeomEdgeHook->OnGeomVertex()) 3688 printf("the vertex number %i of this edge is a geometric BamgVertex number %i\n",GetId(edges[i][j])+1,Gh.GetId(edges[i][j].GeomEdgeHook->gv)+1); 3689 else if (edges[i][j].GeomEdgeHook->OnGeomEdge()) 3690 printf("the vertex number %i of this edge is a geometric Edge number %i\n",GetId(edges[i][j])+1,Gh.GetId(edges[i][j].GeomEdgeHook->ge)+1); 3691 3691 else 3692 printf("Its pointer is %p\n",edges[i][j].Geom etricalEdgeHook);3692 printf("Its pointer is %p\n",edges[i][j].GeomEdgeHook); 3693 3693 3694 3694 printf("This edge is on geometry and has no adjacent edge (open curve) and one of the tip is not required\n"); … … 4174 4174 Triangle * lastT = triangles + nbt; 4175 4175 for (i=0;i<nbe;i++) 4176 if(edges[i].Geom etricalEdgeHook) NbEdgeOnGeom++;4176 if(edges[i].GeomEdgeHook) NbEdgeOnGeom++; 4177 4177 long newnbe=nbe+nbe; 4178 4178 // long newNbVerticesOnGeomVertex=NbVerticesOnGeomVertex; … … 4198 4198 Edge ** edgesGtoB=0; 4199 4199 if (withBackground) 4200 edgesGtoB= BTh.MakeGeom etricalEdgeToEdge();4200 edgesGtoB= BTh.MakeGeomEdgeToEdge(); 4201 4201 long ferr=0; 4202 4202 for (i=0;i<nbe;i++) 4203 newedges[ie].Geom etricalEdgeHook=0;4203 newedges[ie].GeomEdgeHook=0; 4204 4204 4205 4205 for (i=0;i<nbe;i++) 4206 4206 { 4207 Geom etricalEdge *ong = edges[i].GeometricalEdgeHook;4207 GeomEdge *ong = edges[i].GeomEdgeHook; 4208 4208 4209 4209 newedges[ie]=edges[i]; … … 4224 4224 ISSMERROR("!edgesGtoB"); 4225 4225 } 4226 ong= ProjectOnCurve(*edgesGtoB[Gh.GetId(edges[i].Geom etricalEdgeHook)],4226 ong= ProjectOnCurve(*edgesGtoB[Gh.GetId(edges[i].GeomEdgeHook)], 4227 4227 edges[i][0],edges[i][1],0.5,vertices[k], 4228 4228 newVertexOnBThEdge[kvb], … … 4253 4253 vertices[k].r = ((R2) edges[i][0] + (R2) edges[i][1] )*0.5; 4254 4254 vertices[k].m = Metric(0.5,edges[i][0],0.5,edges[i][1]); 4255 vertices[k].Geom etricalEdgeHook = 0;4255 vertices[k].GeomEdgeHook = 0; 4256 4256 } 4257 4257 //vertices[k].i = R2ToI2( vertices[k].r); … … 4262 4262 vertices[k].DirOfSearch = NoDirOfSearch; 4263 4263 4264 newedges[ie].Geom etricalEdgeHook = Gh.Containing(AA,ong);4264 newedges[ie].GeomEdgeHook = Gh.Containing(AA,ong); 4265 4265 newedges[ie++].v[1]=vertices+k; 4266 4266 … … 4268 4268 newedges[ie].adj[0]=newedges + ie -1; 4269 4269 newedges[ie].adj[1]=newedges+(edges[i].adj[1]-edges) ; 4270 newedges[ie].Geom etricalEdgeHook = Gh.Containing(BB,ong);4270 newedges[ie].GeomEdgeHook = Gh.Containing(BB,ong); 4271 4271 newedges[ie++].v[0]=vertices+k; 4272 4272 k++; … … 4664 4664 BamgVertex &v0 = t[VerticesOfTriangularEdge[j][0]]; 4665 4665 BamgVertex &v1 = t[VerticesOfTriangularEdge[j][1]]; 4666 if (v0.Geom etricalEdgeHook && v1.GeometricalEdgeHook){4666 if (v0.GeomEdgeHook && v1.GeomEdgeHook){ 4667 4667 R2 P= ((R2) v0 + (R2) v1)*0.5; 4668 4668 if ( nbv<maxnbv) { … … 4884 4884 4885 4885 R2 AB; 4886 Geom etricalVertex *a, *b;4886 GeomVertex *a, *b; 4887 4887 BamgVertex *va, *vb; 4888 Geom etricalEdge *e;4888 GeomEdge *e; 4889 4889 4890 4890 // add a ref to GH to make sure that it is not destroyed by mistake … … 4951 4951 4952 4952 //ei = current Geometrical edge 4953 Geom etricalEdge &ei=Gh.edges[i];4953 GeomEdge &ei=Gh.edges[i]; 4954 4954 4955 4955 //loop over the two vertices of the edge ei … … 4978 4978 edges[nbe].v[1]=b->MeshVertexHook;; 4979 4979 edges[nbe].ReferenceNumber = e->ReferenceNumber; 4980 edges[nbe].Geom etricalEdgeHook = e;4980 edges[nbe].GeomEdgeHook = e; 4981 4981 edges[nbe].adj[0] = 0; 4982 4982 edges[nbe].adj[1] = 0; … … 5087 5087 edges[nbe].v[1]=vb; 5088 5088 edges[nbe].ReferenceNumber =e->ReferenceNumber; 5089 edges[nbe].Geom etricalEdgeHook = e;5089 edges[nbe].GeomEdgeHook = e; 5090 5090 edges[nbe].adj[0] = PreviousNewEdge; 5091 5091 if(PreviousNewEdge) PreviousNewEdge->adj[1]=&edges[nbe]; … … 5124 5124 edges[nbe].v[1]=vb; 5125 5125 edges[nbe].ReferenceNumber = e->ReferenceNumber; 5126 edges[nbe].Geom etricalEdgeHook = e;5126 edges[nbe].GeomEdgeHook = e; 5127 5127 edges[nbe].adj[0] = PreviousNewEdge; 5128 5128 edges[nbe].adj[1] = 0; … … 5191 5191 * We need the abcisse of the background mesh vertices on geometry 5192 5192 * so a vertex is 5193 * 0 on Geom etricalVertex ;5194 * 1 on Geom etricalEdge + abcisse5193 * 0 on GeomVertex ; 5194 * 1 on GeomEdge + abcisse 5195 5195 * 2 internal 5196 5196 *************************************************************************/ … … 5238 5238 VertexOnGeom &vog=BTh.VerticesOnGeomVertex[i]; 5239 5239 if (vog.IsRequiredVertex()){ 5240 Geom etricalVertex* gv=vog;5240 GeomVertex* gv=vog; 5241 5241 BamgVertex *bv = vog; 5242 5242 ISSMASSERT(gv->MeshVertexHook); // use of Geom -> Th … … 5262 5262 5263 5263 /* If one of the vertex is required we are in a new curve*/ 5264 if (ei[je].Geom etricalEdgeHook->IsRequiredVertex()){5264 if (ei[je].GeomEdgeHook->IsRequiredVertex()){ 5265 5265 5266 5266 /*Get curve number*/ 5267 int nc=ei.Geom etricalEdgeHook->CurveNumber;5267 int nc=ei.GeomEdgeHook->CurveNumber; 5268 5268 5269 5269 //printf("Dealing with curve number %i\n",nc); 5270 //printf("edge on geometry is same as GhCurve? %s\n",(ei.Geom etricalEdgeHook==Gh.curves[nc].FirstEdge || ei.GeometricalEdgeHook==Gh.curves[nc].LastEdge)?"yes":"no");5271 //if(ei.Geom etricalEdgeHook==Gh.curves[nc].FirstEdge || ei.GeometricalEdgeHook==Gh.curves[nc].LastEdge){5272 // printf("Do we have the right extremity? curve first vertex -> %s\n",((Geom etricalVertex *)*ei[je].GeometricalEdgeHook==&(*Gh.curves[nc].FirstEdge)[Gh.curves[nc].FirstVertexIndex])?"yes":"no");5273 // printf("Do we have the right extremity? curve last vertex -> %s\n",((Geom etricalVertex *)*ei[je].GeometricalEdgeHook==&(*Gh.curves[nc].LastEdge)[Gh.curves[nc].LastVertexIndex])?"yes":"no");5270 //printf("edge on geometry is same as GhCurve? %s\n",(ei.GeomEdgeHook==Gh.curves[nc].FirstEdge || ei.GeomEdgeHook==Gh.curves[nc].LastEdge)?"yes":"no"); 5271 //if(ei.GeomEdgeHook==Gh.curves[nc].FirstEdge || ei.GeomEdgeHook==Gh.curves[nc].LastEdge){ 5272 // printf("Do we have the right extremity? curve first vertex -> %s\n",((GeomVertex *)*ei[je].GeomEdgeHook==&(*Gh.curves[nc].FirstEdge)[Gh.curves[nc].FirstVertexIndex])?"yes":"no"); 5273 // printf("Do we have the right extremity? curve last vertex -> %s\n",((GeomVertex *)*ei[je].GeomEdgeHook==&(*Gh.curves[nc].LastEdge)[Gh.curves[nc].LastVertexIndex])?"yes":"no"); 5274 5274 //} 5275 5275 //BUG FIX from original bamg 5276 5276 /*Check that we are on the same edge and right vertex (0 or 1) */ 5277 if(ei.Geom etricalEdgeHook==Gh.curves[nc].FirstEdge && (GeometricalVertex *)*ei[je].GeometricalEdgeHook==&(*Gh.curves[nc].FirstEdge)[Gh.curves[nc].FirstVertexIndex]){5277 if(ei.GeomEdgeHook==Gh.curves[nc].FirstEdge && (GeomVertex *)*ei[je].GeomEdgeHook==&(*Gh.curves[nc].FirstEdge)[Gh.curves[nc].FirstVertexIndex]){ 5278 5278 bcurve[nc]=iedge*2+je; 5279 5279 bfind++; 5280 5280 } 5281 else if ((ei.Geom etricalEdgeHook==Gh.curves[nc].LastEdge && (GeometricalVertex *)*ei[je].GeometricalEdgeHook==&(*Gh.curves[nc].LastEdge)[Gh.curves[nc].LastVertexIndex]) && bcurve[nc]==-1){5281 else if ((ei.GeomEdgeHook==Gh.curves[nc].LastEdge && (GeomVertex *)*ei[je].GeomEdgeHook==&(*Gh.curves[nc].LastEdge)[Gh.curves[nc].LastVertexIndex]) && bcurve[nc]==-1){ 5282 5282 bcurve[nc]=iedge*2+je; 5283 5283 bfind++; … … 5335 5335 int k0equi=jedgeequi,k1equi; 5336 5336 Edge * peequi= BTh.edges+iedgeequi; 5337 Geom etricalEdge *ongequi = peequi->GeometricalEdgeHook;5337 GeomEdge *ongequi = peequi->GeomEdgeHook; 5338 5338 5339 5339 double sNew=Lstep;// abscisse of the new points (phase==1) 5340 5340 L=0;// length of the curve 5341 5341 long i=0;// index of new points on the curve 5342 register Geom etricalVertex * GA0 = *(*peequi)[k0equi].GeometricalEdgeHook;5342 register GeomVertex * GA0 = *(*peequi)[k0equi].GeomEdgeHook; 5343 5343 BamgVertex *A0; 5344 5344 A0 = GA0->MeshVertexHook; // the vertex in new mesh … … 5350 5350 ISSMASSERT(A0-vertices>=0 && A0-vertices<nbv); 5351 5351 if(ongequi->Required()){ 5352 Geom etricalVertex *GA1 = *(*peequi)[1-k0equi].GeometricalEdgeHook;5352 GeomVertex *GA1 = *(*peequi)[1-k0equi].GeomEdgeHook; 5353 5353 A1 = GA1->MeshVertexHook; // 5354 5354 } … … 5359 5359 k1 = 1-k0; // next vertex of the edge 5360 5360 k1equi= 1 - k0equi; 5361 ISSMASSERT(pe && ee.Geom etricalEdgeHook);5362 ee.Geom etricalEdgeHook->SetMark();5361 ISSMASSERT(pe && ee.GeomEdgeHook); 5362 ee.GeomEdgeHook->SetMark(); 5363 5363 BamgVertex & v0=ee[0], & v1=ee[1]; 5364 5364 R2 AB=(R2)v1-(R2)v0; … … 5396 5396 A1->ReferenceNumber = eeequi.ReferenceNumber; 5397 5397 A1->DirOfSearch =NoDirOfSearch; 5398 e->Geom etricalEdgeHook = ongequi;5398 e->GeomEdgeHook = ongequi; 5399 5399 e->v[0]=A0; 5400 5400 e->v[1]=A1; … … 5411 5411 5412 5412 //some checks 5413 ISSMASSERT(ee.Geom etricalEdgeHook->CurveNumber==ei.GeometricalEdgeHook->CurveNumber);5414 if (ee[k1].Geom etricalEdgeHook->IsRequiredVertex()) {5415 ISSMASSERT(eeequi[k1equi].Geom etricalEdgeHook->IsRequiredVertex());5416 register Geom etricalVertex * GA1 = *eeequi[k1equi].GeometricalEdgeHook;5413 ISSMASSERT(ee.GeomEdgeHook->CurveNumber==ei.GeomEdgeHook->CurveNumber); 5414 if (ee[k1].GeomEdgeHook->IsRequiredVertex()) { 5415 ISSMASSERT(eeequi[k1equi].GeomEdgeHook->IsRequiredVertex()); 5416 register GeomVertex * GA1 = *eeequi[k1equi].GeomEdgeHook; 5417 5417 A1=GA1->MeshVertexHook;// the vertex in new mesh 5418 5418 ISSMASSERT(A1-vertices>=0 && A1-vertices<nbv); … … 5432 5432 if (phase){ // construction of the last edge 5433 5433 Edge* e=edges + nbe++; 5434 e->Geom etricalEdgeHook = ongequi;5434 e->GeomEdgeHook = ongequi; 5435 5435 e->v[0]=A0; 5436 5436 e->v[1]=A1; -
issm/trunk/src/c/objects/Bamg/Mesh.h
r5460 r5573 89 89 void BoundAnisotropy(double anisomax,double hminaniso= 1e-100) ; 90 90 void MaxSubDivision(double maxsubdiv); 91 Edge** MakeGeom etricalEdgeToEdge();91 Edge** MakeGeomEdgeToEdge(); 92 92 long SplitInternalEdgeWithBorderVertices(); 93 93 void MakeQuadrangles(double costheta); … … 100 100 void SmoothingVertex(int =3,double=0.3); 101 101 Metric MetricAt (const R2 &) const; 102 Geom etricalEdge* ProjectOnCurve( Edge & AB, BamgVertex & A, BamgVertex & B,double theta, BamgVertex & R,VertexOnEdge & BR,VertexOnGeom & GR);102 GeomEdge* ProjectOnCurve( Edge & AB, BamgVertex & A, BamgVertex & B,double theta, BamgVertex & R,VertexOnEdge & BR,VertexOnGeom & GR); 103 103 long GetId(const Triangle & t) const; 104 104 long GetId(const Triangle * t) const; … … 134 134 } 135 135 inline void SetVertexFieldOn(){ 136 for (int i=0;i<nbv;i++) vertices[i].Geom etricalEdgeHook=NULL;136 for (int i=0;i<nbv;i++) vertices[i].GeomEdgeHook=NULL; 137 137 for (int j=0;j<NbVerticesOnGeomVertex;j++) VerticesOnGeomVertex[j].SetOn(); 138 138 for (int k=0;k<NbVerticesOnGeomEdge;k++ ) VerticesOnGeomEdge[k].SetOn(); 139 139 } 140 140 inline void SetVertexFieldOnBTh(){ 141 for (int i=0;i<nbv;i++) vertices[i].Geom etricalEdgeHook=NULL;141 for (int i=0;i<nbv;i++) vertices[i].GeomEdgeHook=NULL; 142 142 for (int j=0;j<NbVertexOnBThVertex;j++) VertexOnBThVertex[j].SetOnBTh(); 143 143 for (int k=0;k<NbVertexOnBThEdge;k++ ) VertexOnBThEdge[k].SetOnBTh(); … … 169 169 return a.Adj(); 170 170 } 171 inline void Adj(Geom etricalEdge * & on,int &i){171 inline void Adj(GeomEdge * & on,int &i){ 172 172 int j=i;i=on->AdjVertexIndex[i];on=on->Adj[j]; 173 173 } -
issm/trunk/src/c/objects/Bamg/VertexOnGeom.cpp
r5461 r5573 18 18 } 19 19 /*}}}*/ 20 /*FUNCTION VertexOnGeom::VertexOnGeom(BamgVertex & m,Geom etricalVertex &g){{{1*/21 VertexOnGeom::VertexOnGeom(BamgVertex & m,Geom etricalVertex &g){20 /*FUNCTION VertexOnGeom::VertexOnGeom(BamgVertex & m,GeomVertex &g){{{1*/ 21 VertexOnGeom::VertexOnGeom(BamgVertex & m,GeomVertex &g){ 22 22 meshvertex=&m; 23 23 curvilincoord=-1; … … 25 25 } 26 26 /*}}}*/ 27 /*FUNCTION VertexOnGeom::VertexOnGeom(BamgVertex & m,Geom etricalEdge &g,double s){{{1*/28 VertexOnGeom::VertexOnGeom(BamgVertex & m,Geom etricalEdge &g,double s){27 /*FUNCTION VertexOnGeom::VertexOnGeom(BamgVertex & m,GeomEdge &g,double s){{{1*/ 28 VertexOnGeom::VertexOnGeom(BamgVertex & m,GeomEdge &g,double s){ 29 29 meshvertex=&m; 30 30 curvilincoord=s; … … 63 63 /*FUNCTION VertexOnGeom::SetOn{{{1*/ 64 64 void VertexOnGeom::SetOn(){ 65 meshvertex->Geom etricalEdgeHook=this;65 meshvertex->GeomEdgeHook=this; 66 66 meshvertex->IndexInTriangle=IsVertexOnGeom; 67 67 } -
issm/trunk/src/c/objects/Bamg/VertexOnGeom.h
r5461 r5573 3 3 4 4 #include "./include.h" 5 #include "./Geom etricalVertex.h"5 #include "./GeomVertex.h" 6 6 7 7 namespace bamg { … … 10 10 class Mesh; 11 11 class BamgVertex; 12 class Geom etricalEdge;12 class GeomEdge; 13 13 14 14 class VertexOnGeom{ … … 19 19 double curvilincoord; 20 20 union{ 21 Geom etricalVertex* gv; // if curvilincoord <0;22 Geom etricalEdge* ge; // if curvilincoord in [0..1]21 GeomVertex* gv; // if curvilincoord <0; 22 GeomEdge* ge; // if curvilincoord in [0..1] 23 23 }; 24 24 25 25 //Constructors/Destructors 26 26 VertexOnGeom(); 27 VertexOnGeom(BamgVertex & m,Geom etricalVertex &g);28 VertexOnGeom(BamgVertex & m,Geom etricalEdge &g,double s);27 VertexOnGeom(BamgVertex & m,GeomVertex &g); 28 VertexOnGeom(BamgVertex & m,GeomEdge &g,double s); 29 29 30 30 //Operators 31 31 operator BamgVertex*() const {return meshvertex;} 32 operator Geom etricalVertex * () const {return gv;}33 operator Geom etricalEdge * () const {return ge;}32 operator GeomVertex * () const {return gv;} 33 operator GeomEdge * () const {return ge;} 34 34 operator const double & () const {return curvilincoord;} 35 35
Note:
See TracChangeset
for help on using the changeset viewer.