Changeset 3246
- Timestamp:
- 03/10/10 11:17:57 (15 years ago)
- Location:
- issm/trunk/src/c/Bamgx
- Files:
-
- 15 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk/src/c/Bamgx/objects/GeometricalEdge.cpp
r3243 r3246 17 17 /*Methods*/ 18 18 /*FUNCTION GeometricalEdge::R1tg{{{1*/ 19 double GeometricalEdge::R1tg(double theta,R2 & t) const // 1/R of radius of cuvature 20 { R2 A=v[0]->r,B=v[1]->r; 19 double GeometricalEdge::R1tg(double theta,R2 & t) const{ 20 /*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, MeshGeom.cpp/R1tg)*/ 21 // 1/R of radius of cuvature 22 23 R2 A=v[0]->r,B=v[1]->r; 21 24 double dca,dcb,dcta,dctb; 22 25 double ddca,ddcb,ddcta,ddctb; … … 90 93 /*}}}1*/ 91 94 /*FUNCTION GeometricalEdge::F{{{1*/ 92 R2 GeometricalEdge::F(double theta) const // parametrization of the curve edge 93 { R2 A=v[0]->r,B=v[1]->r; 95 R2 GeometricalEdge::F(double theta) const{ 96 /*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, MeshGeom.cpp/F)*/ 97 // parametrization of the curve edge 98 99 R2 A=v[0]->r,B=v[1]->r; 94 100 double ca,cb,cta,ctb; 95 101 if ( theta<-1e-12){ -
issm/trunk/src/c/Bamgx/objects/Geometry.cpp
r3243 r3246 16 16 /*FUNCTION Geometry::Geometry(const Geometry & Gh){{{1*/ 17 17 Geometry::Geometry(const Geometry & Gh) { 18 /*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, MeshGeom.cpp/Geometry)*/ 19 18 20 long i; 19 21 *this = Gh; … … 40 42 /*FUNCTION Geometry::~Geometry(){{{1*/ 41 43 Geometry::~Geometry() { 44 /*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, MeshGeom.cpp/~Geometry)*/ 45 42 46 long int verbosity=0; 43 47 … … 491 495 /*FUNCTION Geometry::AfterRead(){{{1*/ 492 496 void Geometry::AfterRead(){ 497 /*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, MeshGeom.cpp/AfterRead)*/ 498 493 499 long int verbosity=0; 494 500 … … 846 852 } 847 853 /*}}}1*/ 848 /*FUNCTION Geometry::Contening{{{1*/ 849 GeometricalEdge* Geometry::Contening(const R2 P, GeometricalEdge * start) const { 854 /*FUNCTION Geometry::Containing{{{1*/ 855 GeometricalEdge* Geometry::Containing(const R2 P, GeometricalEdge * start) const { 856 /*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, MeshGeom.cpp/Contening)*/ 857 850 858 GeometricalEdge* on =start,* pon=0; 851 859 // walk with the cos on geometry … … 901 909 /*FUNCTION Geometry::EmptyGeometry(){{{1*/ 902 910 void Geometry::EmptyGeometry() { 911 /*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, MeshGeom.cpp/EmptyGeometry)*/ 912 903 913 NbRef=0; 904 914 quadtree=0; … … 921 931 /*FUNCTION Geometry::ProjectOnCurve {{{1*/ 922 932 GeometricalEdge* Geometry::ProjectOnCurve(const Edge & e,double s,Vertex &V,VertexOnGeom &GV ) const { 933 /*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, MeshGeom.cpp/ProjectOnCurve)*/ 934 923 935 double save_s=s; 924 936 int NbTry=0; -
issm/trunk/src/c/Bamgx/objects/Geometry.h
r3245 r3246 71 71 void UnMarkEdges() {for (int i=0;i<nbe;i++) edges[i].SetUnMark();} 72 72 GeometricalEdge * ProjectOnCurve(const Edge & ,double,Vertex &,VertexOnGeom &) const ; 73 GeometricalEdge * Cont ening(const R2 P, GeometricalEdge * start) const;73 GeometricalEdge * Containing(const R2 P, GeometricalEdge * start) const; 74 74 void WriteGeometry(BamgGeom* bamggeom, BamgOpts* bamgopts); 75 75 }; -
issm/trunk/src/c/Bamgx/objects/ListofIntersectionTriangles.cpp
r3243 r3246 15 15 /*FUNCTION ListofIntersectionTriangles::SplitEdge{{{1*/ 16 16 void ListofIntersectionTriangles::SplitEdge(const Triangles & Bh, const R2 &A,const R2 &B,int nbegin) { 17 /*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Mesh2.cpp/ListofIntersectionTriangles)*/ 18 17 19 Triangle *tbegin, *t; 18 20 … … 218 220 /*FUNCTION ListofIntersectionTriangles::NewItem(Triangle * tt,double d0,double d1,double d2) {{{1*/ 219 221 int ListofIntersectionTriangles::NewItem(Triangle * tt,double d0,double d1,double d2) { 222 /*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Mesh2.cpp/NewItem)*/ 223 220 224 register int n; 221 225 R2 x(0,0); … … 244 248 /*FUNCTION ListofIntersectionTriangles::NewItem(R2 A,const Metric & mm){{{1*/ 245 249 int ListofIntersectionTriangles::NewItem(R2 A,const Metric & mm) { 250 /*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Mesh2.cpp/NewItem)*/ 251 246 252 register int n; 247 253 if(!Size || Norme2_2(lIntTria[Size-1].x-A)) { … … 258 264 /*FUNCTION ListofIntersectionTriangles::Length{{{1*/ 259 265 double ListofIntersectionTriangles::Length(){ 266 /*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Mesh2.cpp/Length)*/ 267 260 268 // computation of the length 261 269 … … 304 312 /*FUNCTION ListofIntersectionTriangles::NewPoints{{{1*/ 305 313 long ListofIntersectionTriangles::NewPoints(Vertex* vertices,long &nbv,long nbvx){ 314 /*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Mesh2.cpp/NewPoints)*/ 306 315 307 316 //If length<1.5, do nothing -
issm/trunk/src/c/Bamgx/objects/MatVVP2x2.cpp
r3232 r3246 14 14 /*FUNCTION MatVVP2x2::MatVVP2x2(const Metric M){{{1*/ 15 15 MatVVP2x2::MatVVP2x2(const Metric M){ 16 /*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Metric.cpp/MatVVP2x2)*/ 17 16 18 double a11=M.a11,a21=M.a21,a22=M.a22; 17 19 const double eps = 1.e-5; … … 45 47 /*Methods*/ 46 48 /*FUNCTION MatVVP2x2::Echo {{{1*/ 47 48 49 void MatVVP2x2::Echo(void){ 49 50 -
issm/trunk/src/c/Bamgx/objects/Metric.cpp
r3243 r3246 18 18 /*FUNCTION Metric::Metric(const double a[3],const Metric m0, const Metric m1,const Metric m2 ){{{1*/ 19 19 Metric::Metric(const double a[3],const Metric m0, const Metric m1,const Metric m2 ){ 20 /*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Metric.cpp/Metric)*/ 21 20 22 Metric mab(a[0]*m0.a11 + a[1]*m1.a11 + a[2]*m2.a11, 21 23 a[0]*m0.a21 + a[1]*m1.a21 + a[2]*m2.a21, … … 37 39 /*FUNCTION Metric::Metric( double a,const Metric ma, double b,const Metric mb){{{1*/ 38 40 Metric::Metric( double a,const Metric ma, double b,const Metric mb) { 41 /*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Metric.cpp/MatVVP2x2)*/ 42 39 43 Metric mab(a*ma.a11+b*mb.a11,a*ma.a21+b*mb.a21,a*ma.a22+b*mb.a22); 40 44 MatVVP2x2 vab(mab); … … 54 58 /*Methods*/ 55 59 /*FUNCTION Metric::Echo {{{1*/ 56 57 60 void Metric::Echo(void){ 58 61 … … 65 68 /*FUNCTION Metric::IntersectWith{{{1*/ 66 69 int Metric::IntersectWith(const Metric M2) { 70 /*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Metric.cpp/IntersectWith)*/ 71 67 72 /*Get a new metric from an existing metric (M1=this) 68 73 * and a new metric given in input M2 using a … … 118 123 /*FUNCTION LengthInterpole{{{1*/ 119 124 double LengthInterpole(const Metric Ma,const Metric Mb, R2 AB) { 125 /*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Metric.cpp/LengthInterpole)*/ 126 120 127 double k=1./2.; 121 128 int level=0; … … 184 191 /*FUNCTION SimultaneousMatrixReduction{{{1*/ 185 192 void SimultaneousMatrixReduction( Metric M1, Metric M2, D2xD2 &V) { 193 /*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Metric.cpp/ReductionSimultanee)*/ 194 186 195 /*In this routine we must return a matrix V that is composed of the 187 196 * eigen vectors of N=inv(M1) M2. … … 287 296 /*FUNCTION abscisseInterpole{{{1*/ 288 297 double abscisseInterpole(const Metric Ma,const Metric Mb, R2 AB,double s,int optim) { 298 /*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Metric.cpp/abscisseInterpole)*/ 299 289 300 if(!optim) LengthInterpole(Ma,Mb,AB); 290 301 double l = s* LastMetricInterpole.lab,r; -
issm/trunk/src/c/Bamgx/objects/QuadTree.cpp
r3245 r3246 81 81 /*FUNCTION QuadTree::QuadTree(Triangles * t,long nbv){{{1*/ 82 82 QuadTree::QuadTree(Triangles * t,long nbv) : 83 /*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, QuadTree.cpp/QuadTree)*/ 84 83 85 lenStorageQuadTreeBox(t->nbvx/8+10), 84 86 th(t), … … 100 102 /*FUNCTION QuadTree::QuadTree(){{{1*/ 101 103 QuadTree::QuadTree() : 104 /*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, QuadTree.cpp/QuadTree)*/ 105 102 106 lenStorageQuadTreeBox(100), // by default 100 vertices by box 103 107 th(0), // initial mesh = NULL … … 114 118 /*FUNCTION QuadTree::~QuadTree(){{{1*/ 115 119 QuadTree::~QuadTree() { 120 /*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, QuadTree.cpp/~QuadTree)*/ 121 116 122 delete sb; 117 123 root=0; … … 122 128 /*FUNCTION QuadTree::Add{{{1*/ 123 129 void QuadTree::Add(Vertex &w){ 130 /*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, QuadTree.cpp/Add)*/ 131 124 132 QuadTreeBox** pb; 125 133 QuadTreeBox* b; … … 205 213 /*FUNCTION QuadTree::NearestVertex{{{1*/ 206 214 Vertex* QuadTree::NearestVertex(Icoor1 i,Icoor1 j) { 215 /*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, QuadTree.cpp/NearestVertex)*/ 207 216 208 217 /*Build QuadTree*/ … … 343 352 /*FUNCTION QuadTree::NearestVertexWithNormal{{{1*/ 344 353 Vertex* QuadTree::NearestVertexWithNormal(Icoor1 i,Icoor1 j) { 354 /*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, QuadTree.cpp/NearestVertexWithNormal)*/ 355 345 356 QuadTreeBox * pb[ MaxDeep ]; 346 357 int pi[ MaxDeep ]; … … 453 464 /*FUNCTION QuadTree::StorageQuadTreeBox::StorageQuadTreeBox{{{1*/ 454 465 QuadTree::StorageQuadTreeBox::StorageQuadTreeBox(long ll,StorageQuadTreeBox *nn) { 466 /*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, QuadTree.cpp/StorageQuadTreeBox)*/ 467 455 468 len = ll; 456 469 n = nn; … … 467 480 /*FUNCTION QuadTree::ToClose {{{1*/ 468 481 Vertex * QuadTree::ToClose(Vertex & v,double seuil,Icoor1 hx,Icoor1 hy){ 482 /*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, QuadTree.cpp/ToClose)*/ 483 469 484 const Icoor1 i=v.i.x; 470 485 const Icoor1 j=v.i.y; -
issm/trunk/src/c/Bamgx/objects/QuadTree.h
r3243 r3246 1 /*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, QuadTree.h)*/ 1 2 #ifndef _QUADTREE_H 2 3 #define _QUADTREE_H -
issm/trunk/src/c/Bamgx/objects/R2.h
r3241 r3246 1 /*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, R2.h)*/ 1 2 #ifndef _R2_H 2 3 #define _R2_H -
issm/trunk/src/c/Bamgx/objects/SetOfE4.cpp
r3245 r3246 11 11 /*FUNCTION SetOfEdges4::SetOfEdges4(long mmx,long nnx){{{1*/ 12 12 SetOfEdges4::SetOfEdges4(long mmx,long nnx){ 13 /*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, SetOfEdges4.cpp/SetOfEdges4)*/ 13 14 14 15 /*Intermediary*/ … … 31 32 /*FUNCTION SetOfEdges4::find {{{1*/ 32 33 long SetOfEdges4::find(long ii,long jj) { 34 /*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, SetOfEdges4.cpp/find)*/ 33 35 34 36 /*Intermediary*/ … … 59 61 /*FUNCTION SetOfEdges4::add{{{1*/ 60 62 long SetOfEdges4::add(long ii,long jj) { 63 /*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, SetOfEdges4.cpp/add)*/ 61 64 62 65 /*Intermediary*/ -
issm/trunk/src/c/Bamgx/objects/Triangle.cpp
r3243 r3246 15 15 /*FUNCTION Triangle::FindBoundaryEdge{{{1*/ 16 16 TriangleAdjacent Triangle::FindBoundaryEdge(int i) const{ 17 /*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Mesh2.cpp/FindBoundaryEdge)*/ 17 18 18 19 /*Intermediary*/ … … 60 61 /*}}}1*/ 61 62 /*FUNCTION Triangle::Echo {{{1*/ 62 63 63 void Triangle::Echo(void){ 64 64 … … 93 93 /*FUNCTION Triangle::Optim{{{1*/ 94 94 long Triangle::Optim(short i,int koption) { 95 /*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Mesh2.cpp/Optim)*/ 96 95 97 // turn around (positive direction) 96 98 Triangle *t=this; … … 124 126 /*FUNCTION Triangle::swap{{{1*/ 125 127 int Triangle::swap(short a,int koption){ 128 /*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Mesh2.cpp/swap)*/ 129 126 130 if(a/4 !=0) return 0;// arete lock or MarkUnSwap 127 131 -
issm/trunk/src/c/Bamgx/objects/Triangles.cpp
r3245 r3246 20 20 /*FUNCTION Triangles::Triangles(BamgMesh* bamgmesh, BamgOpts* bamgopts){{{1*/ 21 21 Triangles::Triangles(BamgMesh* bamgmesh, BamgOpts* bamgopts):Gh(*(new Geometry())),BTh(*this){ 22 23 22 PreInit(0); 24 23 ReadMesh(bamgmesh,bamgopts); … … 38 37 /*FUNCTION Triangles::Triangles(const Triangles & Tho,const int *flag ,const int *bb){{{1*/ 39 38 Triangles::Triangles(const Triangles & Tho,const int *flag ,const int *bb,BamgOpts* bamgopts) : Gh(*(new Geometry())), BTh(*this) { 39 /*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Mesh2.cpp/Triangles)*/ 40 40 41 41 int i,k,itadj; … … 141 141 Triangles::Triangles(Triangles & Th,Geometry * pGh,Triangles * pBth,long nbvxx) 142 142 : Gh(*(pGh?pGh:&Th.Gh)), BTh(*(pBth?pBth:this)) { 143 /*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Mesh2.cpp/Triangles)*/ 143 144 Gh.NbRef++; 144 145 nbvxx = Max(nbvxx,Th.nbv); … … 206 207 /*FUNCTION Triangles::~Triangles(){{{1*/ 207 208 Triangles::~Triangles() { 209 /*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Mesh2.cpp/Triangles)*/ 210 208 211 long int verbosity=2; 209 212 //if(vertices) delete [] vertices; //TEST crash if not commented … … 861 864 /*FUNCTION Triangles::AddGeometryMetric{{{1*/ 862 865 void Triangles::AddGeometryMetric(BamgOpts* bamgopts){ 866 /*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Metric.cpp/IntersectGeomMetric)*/ 863 867 864 868 /*Get options*/ … … 933 937 /*FUNCTION Triangles::AddVertex{{{1*/ 934 938 void Triangles::AddVertex( Vertex &s,Triangle* t, Icoor2* det3) { 939 /*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Mesh2.cpp/Add)*/ 935 940 // ------------------------------------------- 936 941 // s2 … … 1073 1078 /*FUNCTION Triangles::BoundAnisotropy{{{1*/ 1074 1079 void Triangles::BoundAnisotropy(double anisomax,double hminaniso) { 1080 /*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Metric.cpp/BoundAnisotropy)*/ 1075 1081 1076 1082 long int verbosity=0; … … 1112 1118 /*FUNCTION Triangles::BuildGeometryFromMesh{{{1*/ 1113 1119 void Triangles::BuildGeometryFromMesh(BamgOpts* bamgopts){ 1120 /*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, MeshGeom.cpp/ConsGeometry)*/ 1121 1114 1122 /*Reconstruct Geometry from Mesh*/ 1115 1123 … … 1761 1769 /*FUNCTION Triangles::BuildMetric1 (Green formula){{{1*/ 1762 1770 void Triangles::BuildMetric1(BamgOpts* bamgopts){ 1771 /*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Metric.cpp/IntersectConsMetric)*/ 1763 1772 1764 1773 /*Options*/ … … 2049 2058 /*FUNCTION Triangles::Crack{{{1*/ 2050 2059 int Triangles::Crack() { 2060 /*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Mesh2.cpp/Crack)*/ 2051 2061 if (NbCrackedEdges!=0 && NbCrackedVertices<=0);{ 2052 2062 throw ErrorException(__FUNCT__,exprintf("NbCrackedEdges!=0 && NbCrackedVertices<=0")); … … 2058 2068 /*FUNCTION Triangles::CrackMesh{{{1*/ 2059 2069 int Triangles::CrackMesh() { 2070 /*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Mesh2.cpp/CrackMesh)*/ 2060 2071 2061 2072 int verbosity=0; … … 2200 2211 /*FUNCTION Triangles::ForceBoundary{{{1*/ 2201 2212 void Triangles::ForceBoundary() { 2213 /*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Mesh2.cpp/ForceBoundary)*/ 2214 2202 2215 long int verbosity=2; 2203 2216 int k=0; … … 2246 2259 /*FUNCTION Triangles::FindSubDomain{{{1*/ 2247 2260 void Triangles::FindSubDomain(int OutSide) { 2261 /*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Mesh2.cpp/FindSubDomain)*/ 2262 2248 2263 long int verbosity=0; 2249 2264 … … 2496 2511 /*FUNCTION Triangles::FindTriangleContaining{{{1*/ 2497 2512 Triangle * Triangles::FindTriangleContaining(const I2 & B,Icoor2 dete[3], Triangle *tstart) const { 2513 /*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Mesh2.cpp/FindTriangleContening)*/ 2514 2498 2515 Triangle * t=0; 2499 2516 int j,jp,jn,jj; … … 2507 2524 if (!a || !a->t ) { 2508 2525 if (a) { 2509 printf("TriangleCont eningTheVertexvertex number %i, another call to ReMakeTriangleContainingTheVertex was required\n", Number(a));2526 printf("TriangleContaining vertex number %i, another call to ReMakeTriangleContainingTheVertex was required\n", Number(a)); 2510 2527 } 2511 2528 throw ErrorException(__FUNCT__,exprintf("problem in Triangles::FindTriangleContaining")); … … 2589 2606 /*FUNCTION Triangles::GenerateMeshProperties{{{1*/ 2590 2607 void Triangles::GenerateMeshProperties() { 2608 /*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Mesh2.cpp/FillHoleInMesh)*/ 2591 2609 2592 2610 int verbosity=0; … … 2874 2892 /*FUNCTION Triangles::GeomToTriangles0{{{1*/ 2875 2893 void Triangles::GeomToTriangles0(long inbvx,BamgOpts* bamgopts) { 2894 /*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Mesh2.cpp/GeomToTriangles0)*/ 2895 2876 2896 /*Generate mesh from geometry*/ 2877 2897 … … 3192 3212 /*FUNCTION Triangles::GeomToTriangles1{{{1*/ 3193 3213 void Triangles::GeomToTriangles1(long inbvx,BamgOpts* bamgopts,int KeepVertices){ 3214 /*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Mesh2.cpp/GeomToTriangles1)*/ 3194 3215 3195 3216 /*Get options*/ … … 3531 3552 /*FUNCTION Triangles::Insert{{{1*/ 3532 3553 void Triangles::Insert() { 3554 /*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Mesh2.cpp/Insert)*/ 3555 3533 3556 /*Insert points in the existing Geometry*/ 3534 3557 … … 3681 3704 /*FUNCTION Triangles::InsertNewPoints{{{1*/ 3682 3705 long Triangles::InsertNewPoints(long nbvold,long & NbTSwap) { 3706 /*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Mesh2.cpp/InsertNewPoints)*/ 3683 3707 3684 3708 long int verbosity=0; … … 3755 3779 } 3756 3780 /*}}}1*/ 3757 /*FUNCTION Triangles::MakeGeometricalEdgeToEdge{{{1*/ 3758 Edge** Triangles::MakeGeometricalEdgeToEdge() { 3759 if (!Gh.nbe){ 3760 throw ErrorException(__FUNCT__,exprintf("!Gh.nbe")); 3781 /*FUNCTION Triangles::MakeGeometricalEdgeToEdge{{{1*/ 3782 Edge** Triangles::MakeGeometricalEdgeToEdge() { 3783 /*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Mesh2.cpp/MakeGeometricalEdgeToEdge)*/ 3784 3785 if (!Gh.nbe){ 3786 throw ErrorException(__FUNCT__,exprintf("!Gh.nbe")); 3787 } 3788 Edge **e= new (Edge* [Gh.nbe]); 3789 3790 long i; 3791 for ( i=0;i<Gh.nbe ; i++) 3792 e[i]=NULL; 3793 for ( i=0;i<nbe ; i++) 3794 { 3795 Edge * ei = edges+i; 3796 GeometricalEdge *onGeometry = ei->onGeometry; 3797 e[Gh.Number(onGeometry)] = ei; 3798 } 3799 for ( i=0;i<nbe ; i++) 3800 for (int ii=0;ii<2;ii++) { 3801 Edge * ei = edges+i; 3802 GeometricalEdge *onGeometry = ei->onGeometry; 3803 int j= ii; 3804 while (!(*onGeometry)[j].Required()) { 3805 Adj(onGeometry,j); // next geom edge 3806 j=1-j; 3807 if (e[Gh.Number(onGeometry)]) break; // optimisation 3808 e[Gh.Number(onGeometry)] = ei; 3809 } 3810 } 3811 3812 int kk=0; 3813 for ( i=0;i<Gh.nbe ; i++){ 3814 if (!e[i]){ 3815 kk++; 3816 if(kk<10) printf("BUG: the geometrical edge %i is on no edge curve\n",i); 3817 } 3818 } 3819 if(kk) throw ErrorException(__FUNCT__,exprintf("See above")); 3820 3821 return e; 3761 3822 } 3762 Edge **e= new (Edge* [Gh.nbe]); 3763 3764 long i; 3765 for ( i=0;i<Gh.nbe ; i++) 3766 e[i]=NULL; 3767 for ( i=0;i<nbe ; i++) 3768 { 3769 Edge * ei = edges+i; 3770 GeometricalEdge *onGeometry = ei->onGeometry; 3771 e[Gh.Number(onGeometry)] = ei; 3772 } 3773 for ( i=0;i<nbe ; i++) 3774 for (int ii=0;ii<2;ii++) { 3775 Edge * ei = edges+i; 3776 GeometricalEdge *onGeometry = ei->onGeometry; 3777 int j= ii; 3778 while (!(*onGeometry)[j].Required()) { 3779 Adj(onGeometry,j); // next geom edge 3780 j=1-j; 3781 if (e[Gh.Number(onGeometry)]) break; // optimisation 3782 e[Gh.Number(onGeometry)] = ei; 3783 } 3784 } 3785 3786 int kk=0; 3787 for ( i=0;i<Gh.nbe ; i++){ 3788 if (!e[i]){ 3789 kk++; 3790 if(kk<10) printf("BUG: the geometrical edge %i is on no edge curve\n",i); 3791 } 3792 } 3793 if(kk) throw ErrorException(__FUNCT__,exprintf("See above")); 3794 3795 return e; 3796 } 3797 /*}}}1*/ 3823 /*}}}1*/ 3798 3824 /*FUNCTION Triangles::MakeQuadrangles{{{1*/ 3799 3825 void Triangles::MakeQuadrangles(double costheta){ 3826 /*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Mesh2.cpp/MakeQuadrangles)*/ 3827 3800 3828 long int verbosity=0; 3801 3829 … … 3837 3865 } 3838 3866 /*}}}1*/ 3839 /*FUNCTION Triangles::MakeQuadTree{{{1*/ 3840 void Triangles::MakeQuadTree() { 3841 long int verbosity=0; 3842 if ( !quadtree ) quadtree = new QuadTree(this); 3843 3844 } 3845 /*}}}1*/ 3846 /*FUNCTION Triangles::MaxSubDivision{{{1*/ 3847 void Triangles::MaxSubDivision(double maxsubdiv) { 3848 long int verbosity=0; 3849 3850 const double maxsubdiv2 = maxsubdiv*maxsubdiv; 3851 if(verbosity>1) printf(" Limit the subdivision of a edges in the new mesh by %g\n",maxsubdiv); 3852 // for all the edges 3853 // if the len of the edge is to long 3854 long it,nbchange=0; 3855 double lmax=0; 3856 for (it=0;it<nbt;it++) 3857 { 3858 Triangle &t=triangles[it]; 3859 for (int j=0;j<3;j++) 3867 /*FUNCTION Triangles::MakeQuadTree{{{1*/ 3868 void Triangles::MakeQuadTree() { 3869 /*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Mesh2.cpp/MakeQuadTree)*/ 3870 3871 long int verbosity=0; 3872 if ( !quadtree ) quadtree = new QuadTree(this); 3873 3874 } 3875 /*}}}1*/ 3876 /*FUNCTION Triangles::MaxSubDivision{{{1*/ 3877 void Triangles::MaxSubDivision(double maxsubdiv) { 3878 /*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Metric.cpp/MaxSubDivision)*/ 3879 3880 long int verbosity=0; 3881 3882 const double maxsubdiv2 = maxsubdiv*maxsubdiv; 3883 if(verbosity>1) printf(" Limit the subdivision of a edges in the new mesh by %g\n",maxsubdiv); 3884 // for all the edges 3885 // if the len of the edge is to long 3886 long it,nbchange=0; 3887 double lmax=0; 3888 for (it=0;it<nbt;it++) 3860 3889 { 3861 Triangle &t t = *t.TriangleAdj(j);3862 if ( ! &tt || it < Number(tt) && ( tt.link || t.link))3890 Triangle &t=triangles[it]; 3891 for (int j=0;j<3;j++) 3863 3892 { 3864 Vertex &v0 = t[VerticesOfTriangularEdge[j][0]]; 3865 Vertex &v1 = t[VerticesOfTriangularEdge[j][1]]; 3866 R2 AB= (R2) v1-(R2) v0; 3867 Metric M = v0; 3868 double l = M(AB,AB); 3869 lmax = Max(lmax,l); 3870 if(l> maxsubdiv2) 3871 { R2 AC = M.Orthogonal(AB);// the ortogonal vector of AB in M 3872 double lc = M(AC,AC); 3873 D2xD2 Rt(AB,AC);// Rt.x = AB , Rt.y = AC; 3874 D2xD2 Rt1(Rt.inv()); 3875 D2xD2 D(maxsubdiv2,0,0,lc); 3876 D2xD2 MM = Rt1*D*Rt1.t(); 3877 v0.m = M = Metric(MM.x.x,MM.y.x,MM.y.y); 3878 nbchange++; 3893 Triangle &tt = *t.TriangleAdj(j); 3894 if ( ! &tt || it < Number(tt) && ( tt.link || t.link)) 3895 { 3896 Vertex &v0 = t[VerticesOfTriangularEdge[j][0]]; 3897 Vertex &v1 = t[VerticesOfTriangularEdge[j][1]]; 3898 R2 AB= (R2) v1-(R2) v0; 3899 Metric M = v0; 3900 double l = M(AB,AB); 3901 lmax = Max(lmax,l); 3902 if(l> maxsubdiv2) 3903 { R2 AC = M.Orthogonal(AB);// the ortogonal vector of AB in M 3904 double lc = M(AC,AC); 3905 D2xD2 Rt(AB,AC);// Rt.x = AB , Rt.y = AC; 3906 D2xD2 Rt1(Rt.inv()); 3907 D2xD2 D(maxsubdiv2,0,0,lc); 3908 D2xD2 MM = Rt1*D*Rt1.t(); 3909 v0.m = M = Metric(MM.x.x,MM.y.x,MM.y.y); 3910 nbchange++; 3911 } 3912 M = v1; 3913 l = M(AB,AB); 3914 lmax = Max(lmax,l); 3915 if(l> maxsubdiv2) 3916 { R2 AC = M.Orthogonal(AB);// the ortogonal vector of AB in M 3917 double lc = M(AC,AC); 3918 D2xD2 Rt(AB,AC);// Rt.x = AB , Rt.y = AC; 3919 D2xD2 Rt1(Rt.inv()); 3920 D2xD2 D(maxsubdiv2,0,0,lc); 3921 D2xD2 MM = Rt1*D*Rt1.t(); 3922 v1.m = M = Metric(MM.x.x,MM.y.x,MM.y.y); 3923 nbchange++; 3924 } 3925 3926 3879 3927 } 3880 M = v1;3881 l = M(AB,AB);3882 lmax = Max(lmax,l);3883 if(l> maxsubdiv2)3884 { R2 AC = M.Orthogonal(AB);// the ortogonal vector of AB in M3885 double lc = M(AC,AC);3886 D2xD2 Rt(AB,AC);// Rt.x = AB , Rt.y = AC;3887 D2xD2 Rt1(Rt.inv());3888 D2xD2 D(maxsubdiv2,0,0,lc);3889 D2xD2 MM = Rt1*D*Rt1.t();3890 v1.m = M = Metric(MM.x.x,MM.y.x,MM.y.y);3891 nbchange++;3892 }3893 3894 3895 3928 } 3896 3929 } 3897 }3898 if(verbosity>3){3899 printf(" number of metric changes = %i, maximum number of subdivision of a edges before change = %g\n",nbchange,pow(lmax,0.5));3930 if(verbosity>3){ 3931 printf(" number of metric changes = %i, maximum number of subdivision of a edges before change = %g\n",nbchange,pow(lmax,0.5)); 3932 } 3900 3933 } 3901 } 3902 /*}}}1*/ 3934 /*}}}1*/ 3903 3935 /*FUNCTION Triangles::MetricAt{{{1*/ 3904 3936 Metric Triangles::MetricAt(const R2 & A) const { 3937 /*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Mesh2.cpp/MetricAt)*/ 3938 3905 3939 I2 a = toI2(A); 3906 3940 Icoor2 deta[3]; … … 3922 3956 /*FUNCTION Triangles::NearestVertex{{{1*/ 3923 3957 Vertex * Triangles::NearestVertex(Icoor1 i,Icoor1 j) { 3958 /*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Mesh2.cpp/NearestVertex)*/ 3924 3959 return quadtree->NearestVertex(i,j); 3925 3960 } … … 3927 3962 /*FUNCTION Triangles::NewPoints{{{1*/ 3928 3963 void Triangles::NewPoints(Triangles & Bh,BamgOpts* bamgopts,int KeepVertices){ 3964 /*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Mesh2.cpp/NewPoints)*/ 3929 3965 3930 3966 int i,j,k; … … 4046 4082 /*FUNCTION Triangles::PreInit{{{1*/ 4047 4083 void Triangles::PreInit(long inbvx) { 4084 /*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Mesh2.cpp/PreInit)*/ 4085 4048 4086 long int verbosity=0; 4049 4087 … … 4104 4142 GeometricalEdge* Triangles::ProjectOnCurve( Edge & BhAB, Vertex & vA, Vertex & vB, 4105 4143 double theta,Vertex & R,VertexOnEdge & BR,VertexOnGeom & GR) { 4144 /*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, MeshQuad.cpp/ProjectOnCurve)*/ 4145 4106 4146 void *pA=0,*pB=0; 4107 4147 double tA=0,tB=0; … … 4320 4360 /*FUNCTION Triangles::ReNumberingTheTriangleBySubDomain{{{1*/ 4321 4361 void Triangles::ReNumberingTheTriangleBySubDomain(bool justcompress) { 4362 /*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Mesh2.cpp/ReNumberingTheTriangleBySubDomain)*/ 4363 4322 4364 long int verbosity=0; 4323 4365 long *renu= new long[nbt]; … … 4388 4430 /*FUNCTION Triangles::ReNumberingVertex{{{1*/ 4389 4431 void Triangles::ReNumberingVertex(long * renu) { 4432 /*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Mesh2.cpp/ReNumberingVertex)*/ 4433 4390 4434 // warning be carfull because pointeur 4391 4435 // from on mesh to over mesh … … 4456 4500 /*FUNCTION Triangles::SetIntCoor{{{1*/ 4457 4501 void Triangles::SetIntCoor(const char * strfrom) { 4502 /*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Mesh2.cpp/SetIntCoor)*/ 4503 4458 4504 /*Set integer coordinate for existing vertices*/ 4459 4505 … … 4511 4557 /*FUNCTION Triangles::ShowRegulaty{{{1*/ 4512 4558 void Triangles::ShowRegulaty() const { 4559 /*Original code from Frederic Hecht <hecht@ann.jussieu.fr>*/ 4560 4513 4561 const double sqrt32=sqrt(3.)*0.5; 4514 4562 const double aireKh=sqrt32*0.5; … … 4575 4623 /*FUNCTION Triangles::ShowHistogram{{{1*/ 4576 4624 void Triangles::ShowHistogram() const { 4625 /*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Mesh2.cpp/ShowHistogram)*/ 4577 4626 4578 4627 const long kmax=10; … … 4619 4668 /*FUNCTION Triangles::SmoothingVertex{{{1*/ 4620 4669 void Triangles::SmoothingVertex(int nbiter,double omega ) { 4670 /*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Mesh2.cpp/SmoothingVertex)*/ 4671 4621 4672 long int verbosity=0; 4622 4673 // if quatree exist remove it end reconstruct … … 4659 4710 /*FUNCTION Triangles::SmoothMetric{{{1*/ 4660 4711 void Triangles::SmoothMetric(double raisonmax) { 4712 /*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Metric.cpp/SmoothMetric)*/ 4713 4661 4714 long int verbosity=0; 4662 4715 … … 4735 4788 /*FUNCTION Triangles::SplitElement{{{1*/ 4736 4789 int Triangles::SplitElement(int choice){ 4790 /*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, MeshQuad.cpp/SplitElement)*/ 4791 4737 4792 long int verbosity=0; 4738 4793 … … 4858 4913 vertices[k].DirOfSearch = NoDirOfSearch; 4859 4914 4860 newedges[ie].onGeometry = Gh.Cont ening(AA,ong);4915 newedges[ie].onGeometry = Gh.Containing(AA,ong); 4861 4916 newedges[ie++].v[1]=vertices+k; 4862 4917 … … 4864 4919 newedges[ie].adj[0]=newedges + ie -1; 4865 4920 newedges[ie].adj[1]=newedges+(edges[i].adj[1]-edges) ; 4866 newedges[ie].onGeometry = Gh.Cont ening(BB,ong);4921 newedges[ie].onGeometry = Gh.Containing(BB,ong); 4867 4922 newedges[ie++].v[0]=vertices+k; 4868 4923 k++; … … 5243 5298 /*FUNCTION Triangles::SplitInternalEdgeWithBorderVertices{{{1*/ 5244 5299 long Triangles::SplitInternalEdgeWithBorderVertices(){ 5300 /*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Mesh2.cpp/SplitInternalEdgeWithBorderVertices)*/ 5301 5245 5302 long NbSplitEdge=0; 5246 5303 SetVertexFieldOn(); … … 5312 5369 /*FUNCTION Triangles::TriangleReferenceList{{{1*/ 5313 5370 long Triangles::TriangleReferenceList(long* reft) const { 5371 /*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Mesh2.cpp/ConsRefTriangle)*/ 5372 5314 5373 long int verbosity=0; 5315 5374 register Triangle *t0,*t; … … 5350 5409 /*FUNCTION Triangles::UnCrack{{{1*/ 5351 5410 int Triangles::UnCrack() { 5411 /*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Mesh2.cpp/UnCrack)*/ 5412 5352 5413 if (NbCrackedEdges!=0 && NbCrackedVertices<=0);{ 5353 5414 throw ErrorException(__FUNCT__,exprintf("NbCrackedEdges ==0 || NbCrackedVertices >0")); … … 5362 5423 /*FUNCTION swap{{{1*/ 5363 5424 void swap(Triangle *t1,short a1, Triangle *t2,short a2, Vertex *s1,Vertex *s2,Icoor2 det1,Icoor2 det2){ 5425 /*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Mesh2.cpp/swap)*/ 5364 5426 // -------------------------------------------------------------- 5365 5427 // short a2=aa[a];// les 2 numero de l arete dans les 2 triangles … … 5406 5468 /*FUNCTION CloseBoundaryEdge{{{1*/ 5407 5469 TriangleAdjacent CloseBoundaryEdge(I2 A,Triangle *t, double &a,double &b) { 5470 /*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Mesh2.cpp/CloseBoundaryEdge)*/ 5471 5408 5472 int k=(*t)(0) ? (( (*t)(1) ? ( (*t)(2) ? -1 : 2) : 1 )) : 0; 5409 5473 int dir=0; … … 5444 5508 /*FUNCTION CloseBoundaryEdgeV2{{{1*/ 5445 5509 TriangleAdjacent CloseBoundaryEdgeV2(I2 C,Triangle *t, double &a,double &b) { 5510 /*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Mesh2.cpp/CloseBoundaryEdgeV2)*/ 5446 5511 // walk around the vertex 5447 5512 // version 2 for remove the probleme if we fill the hole … … 5592 5657 /*FUNCTION AGoodNumberPrimeWith{{{1*/ 5593 5658 long AGoodNumberPrimeWith(long n){ 5659 /*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Mesh2.cpp/AGoodNumberPrimeWith)*/ 5594 5660 5595 5661 //list of big prime numbers … … 5621 5687 /*FUNCTION SwapForForcingEdge{{{1*/ 5622 5688 int SwapForForcingEdge(Vertex * & pva ,Vertex * & pvb ,TriangleAdjacent & tt1,Icoor2 & dets1, Icoor2 & detsa,Icoor2 & detsb, int & NbSwap) { 5689 /*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Mesh2.cpp/SwapForForcingEdge)*/ 5623 5690 // l'arete ta coupe l'arete pva pvb 5624 5691 // de cas apres le swap sa coupe toujours … … 5707 5774 /*}}}1*/ 5708 5775 /*FUNCTION ForceEdge{{{1*/ 5709 5710 5776 int ForceEdge(Vertex &a, Vertex & b,TriangleAdjacent & taret) { 5777 /*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Mesh2.cpp/ForceEdge)*/ 5778 5711 5779 int NbSwap =0; 5712 5780 if (!a.t || !b.t){ // the 2 vertex is in a mesh -
issm/trunk/src/c/Bamgx/objects/Vertex.cpp
r3243 r3246 15 15 /*FUNCTION Vertex::Smoothing{{{1*/ 16 16 double Vertex::Smoothing(Triangles &Th,const Triangles &BTh,Triangle* &tstart ,double omega){ 17 /*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Mesh2.cpp/Smoothing)*/ 17 18 18 19 register Vertex* s=this; … … 212 213 /*FUNCTION QuadQuality{{{1*/ 213 214 double QuadQuality(const Vertex & a,const Vertex &b,const Vertex &c,const Vertex &d) { 215 /*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, MeshQuad.cpp/QuadQuality)*/ 216 214 217 // calcul de 4 angles -- 215 218 R2 A((R2)a),B((R2)b),C((R2)c),D((R2)d); -
issm/trunk/src/c/Bamgx/shared/FindTriangleAdjacent.h
r3237 r3246 8 8 9 9 inline TriangleAdjacent FindTriangleAdjacent(Edge &E){ 10 /*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Mesh2.cpp)*/ 11 10 12 Vertex * a = E.v[0]; 11 13 Vertex * b = E.v[1]; -
issm/trunk/src/c/Bamgx/shared/TheVertex.h
r3236 r3246 8 8 9 9 inline Vertex* TheVertex(Vertex * a){// for remove crak in mesh 10 /*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Mesh2.cpp)*/ 11 10 12 // give a unique vertex with smallest number 11 13 // in case on crack in mesh
Note:
See TracChangeset
for help on using the changeset viewer.