Changeset 2814


Ignore:
Timestamp:
01/13/10 09:51:40 (15 years ago)
Author:
Mathieu Morlighem
Message:

Added Triangle.cpp and updated WriteMetric

Location:
issm/trunk/src/c
Files:
1 added
5 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk/src/c/Bamgx/Bamgx.h

    r2790 r2814  
    1212
    1313#endif  /* _BAMGX_H */
    14        
    15 
  • issm/trunk/src/c/Bamgx/Mesh2.cpp

    r2813 r2814  
    239239                }
    240240
    241                 TriangleAdjacent Triangle::FindBoundaryEdge(int i) const
    242                 {
    243                         // turn around  the vertex ns[i] also call  s
    244                         Triangle   *t = (Triangle *) this , *ttc;
    245                         int k=0,j = EdgesVertexTriangle[i][0],jc;
    246                         int exterieur  = !link  ;
    247 
    248                         do
    249                         {
    250                                 int exterieurp = exterieur;
    251                                 k++;
    252                                 ttc =  t->at[j];
    253                                 exterieur = !ttc->link;
    254                                 if (exterieur+exterieurp == 1)
    255                                         return TriangleAdjacent(t,j);
    256                                 jc = NextEdge[t->aa[j]&3];
    257                                 t = ttc;
    258                                 j = NextEdge[jc];
    259                                 assert(k<2000);
    260                         } while ( (this!= t));
    261                         return TriangleAdjacent(0,0);
    262 
    263                 }
    264 
    265 
    266241                TriangleAdjacent CloseBoundaryEdgeV2(I2 C,Triangle *t, double &a,double &b)
    267242                {
     
    431406                                const R2 &A,const R2  &B,int nbegin)
    432407                { //  SplitEdge
    433                         //  if(SHOW)  cout << " splitedge " << A << B << " " <<  nbegin << endl;
    434408                        Triangle *tbegin, *t;
    435409
     
    454428                                init();
    455429                                t=tbegin = Bh.FindTriangleContening(a,deta);
    456                                 //    if(SHOW) cout <<t << " " << Real8(deta[0])/t->det<< " " << Real8(deta[1])/t->det
    457                                 //                << " " << Real8(deta[2])/t->det << endl;
    458430                                if( t->det>=0)
    459431                                        ilast=NewItem(t,Real8(deta[0])/t->det,Real8(deta[1])/t->det,Real8(deta[2])/t->det);
     
    489461                                        deti = bamg::det(a,b,vi);
    490462                                        detj = bamg::det(a,b,vj);
    491                                         //  if(SHOW) {  penthickness(3);
    492                                         //      Move(vi);Line(vj);CurrentTh->inquire();penthickness(1);
    493                                         //         cout << Bh.Number(tbegin) << " " << Bh.Number(t) << " i= " << i <<" j= " <<  j << " k=" << k
    494                                         //                 << " deti= " << deti << " detj= " << detj
    495                                         //           << " v = " << Bh.Number((*t)[i]) << (*t)[i].r <<  " " << Bh.Number((*t)[j]) << (*t)[j].r  << endl;}
    496463                                        if (deti>0) // go to  i direction on gamma
    497464                                                ocut = PreviousEdge[ocut];     
     
    537504                                        ba[i] = -deti/dij;
    538505                                        ba[k] = 0;
    539                                         //      if(SHOW) cout << i << " " << j << " " << k << " " << ba[i] << " " << ba[j] << endl;
    540506                                        ilast=NewItem(t,ba[0],ba[1],ba[2]); }
    541507                        }  //  outside departure
  • issm/trunk/src/c/Bamgx/Mesh2.h

    r2813 r2814  
    5050#endif
    5151
    52 extern int SHOW;
    5352#include "meshtype.h"
    54 
    5553#include "error.hpp"
    56 
    57 
    5854#include "R2.h"
    5955
    6056namespace bamg {
    61 
    62 
    6357
    6458const  double Pi =  3.14159265358979323846264338328;
     
    6660
    6761extern int hinterpole;
    68 
    6962
    7063typedef P2<Icoor1,Icoor2> I2;
     
    8275typedef P2xP2<Int2,Int4> I2xI2;
    8376typedef P2<Real4,Real8> R2xR2;
    84 
    8577}
    8678
     
    9890  register  Icoor2 cax = c.x - a.x ,cay = c.y - a.y;
    9991  return  bax*cay - bay*cax;}
    100 
    10192
    10293
     
    835826  void BoundAnisotropy(Real8 anisomax,double hminaniso= 1e-100) ;
    836827  void MaxSubDivision(Real8 maxsubdiv);
    837   void WriteMetric(std::ostream &,int iso) ;
    838828  Edge** MakeGeometricalEdgeToEdge();
    839829  void  SetVertexFieldOn(); 
     
    873863
    874864  void ReadMetric(BamgOpts* bamgopts,const Real8 hmin,const Real8 hmax,const Real8 coef);
     865  void WriteMetric(BamgOpts* bamgopts);
    875866  void IntersectConsMetric(const double * s,const Int4 nbsol,const int * typsols,
    876867                           const  Real8 hmin,const Real8 hmax, const Real8 coef,
  • issm/trunk/src/c/Bamgx/Triangles.cpp

    r2813 r2814  
    697697        }
    698698        /*}}}1*/
    699         /*FUNCTION Triangles::WriteMetric TO UPDATE{{{1*/
    700         void Triangles::WriteMetric(ostream & f,int iso) {
    701                 if (iso)
    702                   {
    703                         f <<  nbv <<" " << 1 << endl ;
    704                         for (Int4 iv=0;iv<nbv;iv++)
    705                           {
    706                                 MatVVP2x2 V=vertices[iv].m;
    707                                 f <<  V.hmin()  << endl;
    708                           }
    709                   }
    710                 else
    711                   {
    712                         f <<  nbv <<" " << 3 << endl ;
    713                         for (Int4 iv=0;iv<nbv;iv++)
    714                          f <<  vertices[iv].m.a11 << " "
    715                                 <<  vertices[iv].m.a21 << " "
    716                                 <<  vertices[iv].m.a22 << endl;
    717                   }
     699        /*FUNCTION Triangles::WriteMetric{{{1*/
     700        void Triangles::WriteMetric(BamgOpts* bamgopts) {
     701                int i;
     702                xfree((void**)&bamgopts->metric);
     703                if (bamgopts->iso){
     704                        bamgopts->metric=(double*)xmalloc(1*nbv*sizeof(double));
     705                        for (i=0;i<nbv;i++){
     706                                MatVVP2x2 V=vertices[i].m;
     707                                bamgopts->metric[i]=V.hmin();
     708                        }
     709                }
     710                else {
     711                        bamgopts->metric=(double*)xmalloc(3*nbv*sizeof(double));
     712                        for (i=0;i<nbv;i++){
     713                                bamgopts->metric[i*3+0]=vertices[i].m.a11;
     714                                bamgopts->metric[i*3+1]=vertices[i].m.a21;
     715                                bamgopts->metric[i*3+2]=vertices[i].m.a22;
     716                        }
     717                }
    718718        }
    719719        /*}}}1*/
  • issm/trunk/src/c/Makefile.am

    r2810 r2814  
    325325                                        ./Bamgx/meshtype.h \
    326326                                        ./Bamgx/Triangles.cpp   \
     327                                        ./Bamgx/Triangle.cpp    \
    327328                                        ./Bamgx/Geometry.cpp    \
    328329                                        ./Bamgx/Metric.cpp \
     
    664665                                        ./Bamgx/meshtype.h \
    665666                                        ./Bamgx/Triangles.cpp   \
     667                                        ./Bamgx/Triangle.cpp    \
    666668                                        ./Bamgx/Geometry.cpp    \
    667669                                        ./Bamgx/Metric.cpp \
Note: See TracChangeset for help on using the changeset viewer.