Changeset 12218


Ignore:
Timestamp:
05/07/12 10:54:06 (13 years ago)
Author:
Mathieu Morlighem
Message:

renamed QuadTree BamgQuadtree to avoid conflicts with Kriging's Quadtree

Location:
issm/trunk-jpl/src/c
Files:
7 edited
2 moved

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/c/Makefile.am

    r12210 r12218  
    572572                                ./objects/Bamg/Metric.cpp\
    573573                                ./objects/Bamg/Metric.h\
    574                                 ./objects/Bamg/QuadTree.cpp\
    575                                 ./objects/Bamg/QuadTree.h\
     574                                ./objects/Bamg/BamgQuadtree.cpp\
     575                                ./objects/Bamg/BamgQuadtree.h\
    576576                                ./objects/Bamg/R2.h\
    577577                                ./objects/Bamg/SetOfE4.cpp\
  • issm/trunk-jpl/src/c/modules/Bamgx/Bamgx.cpp

    r11551 r12218  
    9292
    9393                //Make Quadtree from background mesh
    94                 BTh.MakeQuadTree();
     94                BTh.MakeBamgQuadtree();
    9595
    9696                //Bound hmin and hmax
  • issm/trunk-jpl/src/c/objects/Bamg/BamgQuadtree.cpp

    r12216 r12218  
    4848#define J_IJ(k,l)  ((k&2) ? l:0)
    4949        /*}}}*/
    50         /*DOCUMENTATION What is a QuadTree? {{{1
     50        /*DOCUMENTATION What is a BamgQuadtree? {{{1
    5151         * A Quadtree is a very simple way to group vertices according
    5252         * to their locations. A square that holds all the points of the mesh
     
    9797
    9898        /*Constructors/Destructors*/
    99         /*FUNCTION QuadTree::QuadTree(){{{1*/
    100         QuadTree::QuadTree(){
     99        /*FUNCTION BamgQuadtree::BamgQuadtree(){{{1*/
     100        BamgQuadtree::BamgQuadtree(){
    101101
    102102                /*Number of boxes and vertices*/
    103                 NbQuadTreeBox=0;
     103                NbBamgQuadtreeBox=0;
    104104                NbVertices=0;
    105105
     
    108108
    109109                /*Create Root, pointer toward the main box*/
    110                 root=NewQuadTreeBox();
     110                root=NewBamgQuadtreeBox();
    111111
    112112                }
    113113        /*}}}1*/
    114         /*FUNCTION QuadTree::QuadTree(Mesh * t,long nbv){{{1*/
    115         QuadTree::QuadTree(Mesh * t,long nbv){
     114        /*FUNCTION BamgQuadtree::BamgQuadtree(Mesh * t,long nbv){{{1*/
     115        BamgQuadtree::BamgQuadtree(Mesh * t,long nbv){
    116116
    117117                /*Number of boxes and vertices*/
    118                 NbQuadTreeBox=0;
     118                NbBamgQuadtreeBox=0;
    119119                NbVertices=0;
    120120
     
    123123
    124124                /*Create Root, pointer toward the main box*/
    125                 root=NewQuadTreeBox();
     125                root=NewBamgQuadtreeBox();
    126126
    127127                /*Check Sizes*/
     
    134134        }
    135135        /*}}}1*/
    136         /*FUNCTION QuadTree::~QuadTree(){{{1*/
    137         QuadTree::~QuadTree() {
     136        /*FUNCTION BamgQuadtree::~BamgQuadtree(){{{1*/
     137        BamgQuadtree::~BamgQuadtree() {
    138138                delete boxcontainer;
    139139                root=NULL;
     
    142142
    143143        /*Methods*/
    144         /*FUNCTION QuadTree::Add{{{1*/
    145         void  QuadTree::Add(BamgVertex &w){
    146                 /*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, QuadTree.cpp/Add)*/
    147                 QuadTreeBox** pb=NULL;
    148                 QuadTreeBox*  b=NULL;
     144        /*FUNCTION BamgQuadtree::Add{{{1*/
     145        void  BamgQuadtree::Add(BamgVertex &w){
     146                /*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, BamgQuadtree.cpp/Add)*/
     147                BamgQuadtreeBox** pb=NULL;
     148                BamgQuadtreeBox*  b=NULL;
    149149
    150150                /*Get integer coodinate of current point w*/
     
    184184                /*Now, try to add the vertex, if the subbox is full (nbitems=4), we have to divide it
    185185                  in 4 new subboxes*/
    186                 while ((b= *pb) && (b->nbitems == 4)){ // the QuadTreeBox is full
    187 
    188                         /*Copy the 4 vertices in the current QuadTreebox*/
     186                while ((b= *pb) && (b->nbitems == 4)){ // the BamgQuadtreeBox is full
     187
     188                        /*Copy the 4 vertices in the current BamgQuadtreebox*/
    189189                        BamgVertex* v4[4];
    190190                        v4[0]= b->v[0];
     
    208208                                int          ij;
    209209                                /*bb is the new "sub"box of b where v4[k] is located*/
    210                                 QuadTreeBox *bb = b->b[ij=IJ(v4[k]->i.x,v4[k]->i.y,level)];
    211 
    212                                 // alloc the QuadTreeBox
    213                                 if (!bb) bb=b->b[ij]=NewQuadTreeBox();
     210                                BamgQuadtreeBox *bb = b->b[ij=IJ(v4[k]->i.x,v4[k]->i.y,level)];
     211
     212                                // alloc the BamgQuadtreeBox
     213                                if (!bb) bb=b->b[ij]=NewBamgQuadtreeBox();
    214214
    215215                                /*Copy the current vertex*/
     
    221221                }
    222222
    223                 /*alloc the QuadTreeBox if necessary*/
    224                 if (!(b=*pb)) b=*pb= NewQuadTreeBox();
     223                /*alloc the BamgQuadtreeBox if necessary*/
     224                if (!(b=*pb)) b=*pb= NewBamgQuadtreeBox();
    225225
    226226                /*Add w*/
     
    231231        }
    232232        /*}}}1*/
    233         /*FUNCTION QuadTree::NearestVertex{{{1*/
    234         BamgVertex*  QuadTree::NearestVertex(Icoor1 i,Icoor1 j) {
    235                 /*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, QuadTree.cpp/NearestVertex)*/
     233        /*FUNCTION BamgQuadtree::NearestVertex{{{1*/
     234        BamgVertex*  BamgQuadtree::NearestVertex(Icoor1 i,Icoor1 j) {
     235                /*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, BamgQuadtree.cpp/NearestVertex)*/
    236236
    237237                /*Intermediaries*/
    238                 QuadTreeBox *pb[MaxDepth];
     238                BamgQuadtreeBox *pb[MaxDepth];
    239239                int          pi[MaxDepth];
    240240                Icoor1       ii[MaxDepth];
     
    242242                int          level;
    243243                long         n0;
    244                 QuadTreeBox *b;
     244                BamgQuadtreeBox *b;
    245245                long         h0;
    246246                long         h = MaxISize;
     
    261261                if (!root->nbitems) return nearest_v;
    262262
    263                 /*else, find the smallest non-empty QuadTreeBox containing  the point (i,j)*/
     263                /*else, find the smallest non-empty BamgQuadtreeBox containing  the point (i,j)*/
    264264                while((n0=b->nbitems)<0){
    265265
    266266                        Icoor1       hb2 = hb >> 1;             //size of the current box
    267267                        int          k   = IJ(iplus,jplus,hb2); //box number (0,1,2 or 3)
    268                         QuadTreeBox *b0  = b->b[k];             //pointer toward current box
     268                        BamgQuadtreeBox *b0  = b->b[k];             //pointer toward current box
    269269
    270270                        /* break if NULL box or empty (Keep previous box b)*/
     
    273273                        /*Get next Quadtree box*/
    274274                        b=b0;   
    275                         i0 += I_IJ(k,hb2); // i orign of QuadTreeBox (macro)
    276                         j0 += J_IJ(k,hb2); // j orign of QuadTreeBox
     275                        i0 += I_IJ(k,hb2); // i orign of BamgQuadtreeBox (macro)
     276                        j0 += J_IJ(k,hb2); // j orign of BamgQuadtreeBox
    277277                        hb = hb2;          // size of the box (in Int)
    278278                }
     
    346346                                 * non empty box containing w, or the closest point to w (so far) */
    347347                                else{
    348                                         QuadTreeBox* b0=b;
     348                                        BamgQuadtreeBox* b0=b;
    349349
    350350                                        /*if the next box exists:*/
     
    390390        }
    391391        /*}}}1*/
    392         /*FUNCTION QuadTree::NearestVertexWithNormal{{{1*/
    393         BamgVertex*  QuadTree::NearestVertexWithNormal(Icoor1 i,Icoor1 j) {
    394                 /*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, QuadTree.cpp/NearestVertexWithNormal)*/
    395 
    396                 QuadTreeBox * pb[ MaxDepth ];
     392        /*FUNCTION BamgQuadtree::NearestVertexWithNormal{{{1*/
     393        BamgVertex*  BamgQuadtree::NearestVertexWithNormal(Icoor1 i,Icoor1 j) {
     394                /*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, BamgQuadtree.cpp/NearestVertexWithNormal)*/
     395
     396                BamgQuadtreeBox * pb[ MaxDepth ];
    397397                int  pi[ MaxDepth  ];
    398398                Icoor1 ii[  MaxDepth ], jj [ MaxDepth];
    399399                int l; // level
    400                 QuadTreeBox * b;
     400                BamgQuadtreeBox * b;
    401401                long     h =MaxISize,h0;
    402402                long     hb=MaxISize;
     
    416416                  {
    417417                        // search the non empty
    418                         // QuadTreeBox containing  the point (i,j)
     418                        // BamgQuadtreeBox containing  the point (i,j)
    419419                        register Icoor1 hb2 = hb >> 1 ;
    420                         register  int k = IJ(iplus,jplus,hb2);// QuadTreeBox number of size hb2 contening i;j
    421                         register QuadTreeBox * b0= b->b[k];
     420                        register  int k = IJ(iplus,jplus,hb2);// BamgQuadtreeBox number of size hb2 contening i;j
     421                        register BamgQuadtreeBox * b0= b->b[k];
    422422                        if ( ( b0 == 0) || (b0->nbitems == 0) )
    423423                         break; // null box or empty   => break             
    424424                        b=b0;   
    425                         i0 += I_IJ(k,hb2); // i orign of QuadTreeBox
    426                         j0 += J_IJ(k,hb2); // j orign of QuadTreeBox
     425                        i0 += I_IJ(k,hb2); // i orign of BamgQuadtreeBox
     426                        j0 += J_IJ(k,hb2); // j orign of BamgQuadtreeBox
    427427                        hb = hb2;
    428428                  }
     
    456456                                int k = pi[l];
    457457
    458                                 if (b->nbitems>0) // BamgVertex QuadTreeBox none empty
     458                                if (b->nbitems>0) // BamgVertex BamgQuadtreeBox none empty
    459459                                  {
    460460                                        I2 i2 =  b->v[k]->i;
     
    468468                                          }
    469469                                  }
    470                                 else // Pointer QuadTreeBox
     470                                else // Pointer BamgQuadtreeBox
    471471                                  {
    472                                         register QuadTreeBox *b0=b;
     472                                        register BamgQuadtreeBox *b0=b;
    473473                                        if ((b=b->b[k]))
    474474                                          {
     
    498498        }
    499499        /*}}}1*/
    500         /*FUNCTION QuadTree::NewQuadTreeBox {{{1*/
    501         QuadTree::QuadTreeBox* QuadTree::NewQuadTreeBox(void){
     500        /*FUNCTION BamgQuadtree::NewBamgQuadtreeBox {{{1*/
     501        BamgQuadtree::BamgQuadtreeBox* BamgQuadtree::NewBamgQuadtreeBox(void){
    502502
    503503                /*Output*/
    504                 QuadTreeBox* newbox=NULL;
     504                BamgQuadtreeBox* newbox=NULL;
    505505
    506506                /*Create and initialize a new box*/
    507                 newbox=new QuadTreeBox;
     507                newbox=new BamgQuadtreeBox;
    508508                newbox->nbitems=0;
    509509                newbox->b[0]=NULL;
     
    516516
    517517                /*Increase counter*/
    518                 NbQuadTreeBox++;
     518                NbBamgQuadtreeBox++;
    519519
    520520                /*currentbox now points toward next quadtree box*/
    521521                return newbox;
    522522        }/*}}}*/
    523         /*FUNCTION QuadTree::ToClose {{{1*/
    524         BamgVertex*   QuadTree::ToClose(BamgVertex & v,double seuil,Icoor1 hx,Icoor1 hy){
    525                 /*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, QuadTree.cpp/ToClose)*/
     523        /*FUNCTION BamgQuadtree::ToClose {{{1*/
     524        BamgVertex*   BamgQuadtree::ToClose(BamgVertex & v,double seuil,Icoor1 hx,Icoor1 hy){
     525                /*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, BamgQuadtree.cpp/ToClose)*/
    526526
    527527                const Icoor1 i=v.i.x;
     
    530530                const Metric  Mx(v.m);
    531531
    532                 QuadTreeBox * pb[ MaxDepth ];
     532                BamgQuadtreeBox * pb[ MaxDepth ];
    533533                int  pi[ MaxDepth  ];
    534534                Icoor1 ii[  MaxDepth ], jj [ MaxDepth];
    535535                register int l=0; // level
    536                 register QuadTreeBox * b;
     536                register BamgQuadtreeBox * b;
    537537                Icoor1 h=MaxISize;
    538538                Icoor1 hb =  MaxISize;
     
    555555                                register int k = pi[l];
    556556
    557                                 if (b->nbitems>0){ // BamgVertex QuadTreeBox none empty
     557                                if (b->nbitems>0){ // BamgVertex BamgQuadtreeBox none empty
    558558                                        I2 i2 =  b->v[k]->i;
    559559                                        if ( ABS(i-i2.x) <hx && ABS(j-i2.y) <hy )
     
    566566                                          }
    567567                                }
    568                                 else{ // Pointer QuadTreeBox
    569                                         register QuadTreeBox *b0=b;
     568                                else{ // Pointer BamgQuadtreeBox
     569                                        register BamgQuadtreeBox *b0=b;
    570570                                        if ((b=b->b[k])){
    571571                                                hb >>=1 ; // div by 2
  • issm/trunk-jpl/src/c/objects/Bamg/BamgQuadtree.h

    r12216 r12218  
    1 /*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, QuadTree.h)*/
     1/*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, BamgQuadtree.h)*/
    22#ifndef _QUADTREE_H
    33#define _QUADTREE_H
     
    1212        class BamgVertex;
    1313
    14         class QuadTree{
     14        class BamgQuadtree{
    1515
    1616                private:
     
    2121                         * - up to 4 vertices
    2222                         * - 4 "sub" quadtree boxes*/
    23                         class QuadTreeBox: public Object{
     23                        class BamgQuadtreeBox: public Object{
    2424                                public:
    2525                                        int nbitems; // number of current vertices in the box
    2626                                        union{
    27                                                 QuadTreeBox* b[4];
     27                                                BamgQuadtreeBox* b[4];
    2828                                                BamgVertex*  v[4];
    2929                                        };
    3030                                        /*Object functions*/
    31                                         void  Echo(){_error_("not implemented yet");};
    32                                         void  DeepEcho(){_error_("not implemented yet");};
    33                                         int   Id(){_error_("not implemented yet");};
    34                                         int   MyRank(){_error_("not implemented yet");};
    35                                         int   ObjectEnum(){_error_("not implemented yet");};
    36                                         Object* copy(){_error_("not implemented yet");};
     31                                        void    Echo()       {_error_("not implemented yet"); };
     32                                        void    DeepEcho()   {_error_("not implemented yet"); };
     33                                        int     Id()         {_error_("not implemented yet"); };
     34                                        int     MyRank()     {_error_("not implemented yet"); };
     35                                        int     ObjectEnum() {_error_("not implemented yet"); };
     36                                        Object *copy()       {_error_("not implemented yet"); };
    3737                        };
    3838
    39                         /*QuadTree private Fields*/
     39                        /*BamgQuadtree private Fields*/
    4040                        DataSet* boxcontainer;
    4141
    4242                public:
    4343
    44                         /*QuadTree public Fields*/
    45                         QuadTreeBox* root;
    46                         long         NbQuadTreeBox;
     44                        /*BamgQuadtree public Fields*/
     45                        BamgQuadtreeBox* root;
     46                        long         NbBamgQuadtreeBox;
    4747                        long         NbVertices;
    4848
    49                         QuadTree();
    50                         QuadTree(Mesh *t,long nbv=-1);
    51                         ~QuadTree();
     49                        BamgQuadtree();
     50                        BamgQuadtree(Mesh *t,long nbv=-1);
     51                        ~BamgQuadtree();
    5252
    53                         BamgVertex*  NearestVertex(Icoor1 i,Icoor1 j);
    54                         BamgVertex*  NearestVertexWithNormal(Icoor1 i,Icoor1 j);
    55                         QuadTreeBox* NewQuadTreeBox(void);
    56                         BamgVertex*  ToClose(BamgVertex & ,double ,Icoor1,Icoor1);
    57                         void         Add( BamgVertex & w);
    58 
     53                        BamgVertex      *NearestVertex(Icoor1 i,Icoor1 j);
     54                        BamgVertex      *NearestVertexWithNormal(Icoor1  i,Icoor1 j);
     55                        BamgQuadtreeBox *NewBamgQuadtreeBox(void);
     56                        BamgVertex      *ToClose(BamgVertex &,double ,Icoor1,Icoor1);
     57                        void             Add(BamgVertex &w);
    5958        };
    6059}
  • issm/trunk-jpl/src/c/objects/Bamg/Geometry.cpp

    r9309 r12218  
    505505                float             *eangle   = new float[nbe];
    506506                double             eps      = 1e-20;
    507                 QuadTree           quadtree; // build quadtree to find duplicates
     507                BamgQuadtree           quadtree; // build quadtree to find duplicates
    508508                BamgVertex        *v0       = vertices;
    509509                GeomVertex *v0g      = (GeomVertex*) (void*)v0;
  • issm/trunk-jpl/src/c/objects/Bamg/Geometry.h

    r5573 r12218  
    1212
    1313        class Triangle;
    14         class QuadTree;
     14        class BamgQuadtree;
    1515        class GeomSubDomain;
    1616        class Edge;
     
    2020                public:
    2121
    22                         long                  NbRef;                         // counter of ref on the this class if 0 we can delete
    23                         long                  nbv;                           // number of vertices
    24                         long                  nbe;                           // number of edges
    25                         long                  nbsubdomains;
    26                         long                  nbcurves;
     22                        long           NbRef;                 // counter of ref on the this class if 0 we can delete
     23                        long           nbv;                   // number of vertices
     24                        long           nbe;                   // number of edges
     25                        long           nbsubdomains;
     26                        long           nbcurves;
    2727                        GeomVertex    *vertices;
    2828                        GeomEdge      *edges;
    29                         QuadTree             *quadtree;
     29                        BamgQuadtree  *quadtree;
    3030                        GeomSubDomain *subdomains;
    31                         Curve                *curves;
    32                         R2                    pmin,pmax;                     // domain extrema coordinates
    33                         double                coefIcoor;                     // coef to integer Icoor1;
    34                         double                MaxCornerAngle;
     31                        Curve         *curves;
     32                        R2             pmin,pmax;             // domain extrema coordinates
     33                        double         coefIcoor;             // coef to integer Icoor1;
     34                        double         MaxCornerAngle;
    3535
    3636                        //Constructor/Destructors
     
    4444                        GeomVertex       &operator[](long i) { return vertices[i];       };
    4545                        const GeomEdge   &operator()(long i) const { return edges[i];    };
    46                         GeomEdge         &operator()(long  i) { return edges[i];                };
     46                        GeomEdge         &operator()(long  i) { return edges[i];         };
    4747
    4848                        //Methods
  • issm/trunk-jpl/src/c/objects/Bamg/Mesh.cpp

    r11584 r12218  
    28852885
    28862886                //build quadtree
    2887                 if (!quadtree)  quadtree = new QuadTree(this,0);
     2887                if (!quadtree)  quadtree = new BamgQuadtree(this,0);
    28882888                quadtree->Add(*v0);
    28892889                quadtree->Add(*v1);
     
    31073107        }
    31083108        /*}}}1*/
    3109         /*FUNCTION Mesh::MakeQuadTree{{{1*/
    3110         void Mesh::MakeQuadTree() { 
    3111                 /*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Mesh2.cpp/MakeQuadTree)*/
     3109        /*FUNCTION Mesh::MakeBamgQuadtree{{{1*/
     3110        void Mesh::MakeBamgQuadtree() { 
     3111                /*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Mesh2.cpp/MakeBamgQuadtree)*/
    31123112
    31133113                long int verbose=0;
    3114                 if (  !quadtree )  quadtree = new QuadTree(this);
     3114                if (  !quadtree )  quadtree = new BamgQuadtree(this);
    31153115
    31163116        }
     
    36223622
    36233623        if (!quadtree) delete quadtree; //ReInitialise;
    3624         quadtree = new QuadTree(this,0);
     3624        quadtree = new BamgQuadtree(this,0);
    36253625        quadtree->Add(*v0);
    36263626        quadtree->Add(*v1);
     
    39003900                if (quadtree){
    39013901                        delete quadtree;
    3902                         quadtree = new QuadTree(this);
     3902                        quadtree = new BamgQuadtree(this);
    39033903                }
    39043904
     
    41164116
    41174117        delete [] tstart;
    4118         if (quadtree) quadtree= new QuadTree(this);
     4118        if (quadtree) quadtree= new BamgQuadtree(this);
    41194119}
    41204120/*}}}1*/
  • issm/trunk-jpl/src/c/objects/Bamg/Mesh.h

    r10205 r12218  
    1717        class Geometry;
    1818        class CrackedEdge;
    19         class QuadTree;
     19        class BamgQuadtree;
    2020        class SubDomain;
    2121
     
    2929                        Triangle                     *triangles;
    3030                        Edge                         *edges;
    31                         QuadTree                     *quadtree;
     31                        BamgQuadtree                 *quadtree;
    3232                        BamgVertex                  **orderedvertices;
    3333                        SubDomain                    *subdomains;
     
    9494                        void MakeQuadrangles(double costheta);
    9595                        int  SplitElement(int choice);
    96                         void MakeQuadTree();
     96                        void MakeBamgQuadtree();
    9797                        void NewPoints(Mesh &,BamgOpts* bamgopts,int KeepVertices=1);
    9898                        long InsertNewPoints(long nbvold,long & NbTSwap) ;
  • issm/trunk-jpl/src/c/objects/objects.h

    r12207 r12218  
    170170#include "./Bamg/Mesh.h"
    171171#include "./Bamg/Geometry.h"
    172 #include "./Bamg/QuadTree.h"
     172#include "./Bamg/BamgQuadtree.h"
    173173#include "./Bamg/SetOfE4.h"
    174174
Note: See TracChangeset for help on using the changeset viewer.