~ubuntu-branches/debian/squeeze/gmsh/squeeze

« back to all changes in this revision

Viewing changes to Mesh/meshGFaceBDS.cpp

  • Committer: Bazaar Package Importer
  • Author(s): Christophe Prud'homme
  • Date: 2009-01-07 16:02:08 UTC
  • mfrom: (5.1.2 sid)
  • Revision ID: james.westby@ubuntu.com-20090107160208-vklhtj69br5yw5bh
Tags: 2.2.6.dfsg-2
* debian/control: fixed lintian warning "debhelper-but-no-misc-depends"
* debian/watch: fixed lintian warning
  "debian-watch-file-should-mangle-version"

Show diffs side-by-side

added added

removed removed

Lines of Context:
15
15
#include "Context.h"
16
16
#include "GPoint.h"
17
17
#include "GModel.h"
18
 
#include "Message.h"
 
18
#include "GmshMessage.h"
19
19
#include "Numeric.h"
20
20
#include "BDS.h"
21
21
#include "qualityMeasures.h"
260
260
  return result > 0.;
261
261
}
262
262
 
 
263
 
 
264
bool edgeSwapTestHighOrder(BDS_Edge *e,GFace *gf)
 
265
{
 
266
  // must evaluate the swap with the perspectve of 
 
267
  // the generation of 2 high order elements 
 
268
  // The rationale is to consider the edges as
 
269
  // exactly matching curves and surfaces 
 
270
  return false;
 
271
}
 
272
 
 
273
 
263
274
bool edgeSwapTestDelaunayAniso(BDS_Edge *e, GFace *gf, std::set<swapquad> &configs)
264
275
{
265
276
  BDS_Point *op[2];
519
530
  
520
531
  int MAXNP = m.MAXPOINTNUMBER;
521
532
 
 
533
 
 
534
  // classify correctly the embedded vertices
 
535
  // use a negative model face number to avoid
 
536
  // mesh motion
 
537
  std::list<GVertex*> emb_vertx = gf->embeddedVertices();
 
538
  std::list<GVertex*>::iterator itvx = emb_vertx.begin();
 
539
  while(itvx != emb_vertx.end()){
 
540
    MVertex *v = *((*itvx)->mesh_vertices.begin());
 
541
    BDS_Point *p = m.find_point(v->getIndex());
 
542
    m.add_geom (-1, 2);
 
543
    p->g = m.get_geom(-1,2);
 
544
    p->lc() = (*itvx)->prescribedMeshSizeAtVertex();
 
545
    p->lcBGM() = (*itvx)->prescribedMeshSizeAtVertex();
 
546
    ++itvx;
 
547
  }
 
548
 
522
549
  // IF ASKED , compute nodal size field using 1D Mesh
523
550
  if (computeNodalSizeField){
 
551
 
524
552
    std::set<BDS_Point*,PointLessThan>::iterator itp = m.points.begin();
525
553
    while (itp != m.points.end()){
526
554
      std::list<BDS_Edge*>::iterator it  = (*itp)->edges.begin();
535
563
        }
536
564
        ++it;
537
565
      }
538
 
      if (!ne) L = 1.e22;
539
 
      if(CTX.mesh.lc_from_points)
540
 
        (*itp)->lc() = L;
541
 
      (*itp)->lcBGM() = L;
 
566
      if ((*itp)->g && (*itp)->g->classif_tag > 0){
 
567
        if (!ne) L = MAX_LC;
 
568
        if(CTX.mesh.lc_from_points)
 
569
          (*itp)->lc() = L;
 
570
        (*itp)->lcBGM() = L;
 
571
      }
542
572
      ++itp;
543
573
    }
544
574
  }
555
585
    int nb_swap = 0;
556
586
 
557
587
    // split long edges
558
 
    double minL = 1.E22, maxL = 0;
 
588
    double minL = 1.e22, maxL = 0;
559
589
    int NN1 = m.edges.size();
560
590
    int NN2 = 0;
561
591
    std::list<BDS_Edge*>::iterator it = m.edges.begin();
766
796
        if (!p[j]) {
767
797
          p[j] = m->add_point(e->getVertex(j)->getNum(), e->getVertex(j)->x(),
768
798
                              e->getVertex(j)->y(), e->getVertex(j)->z());
769
 
          double u0, v0;
770
 
          parametricCoordinates(e->getVertex(j), gf, u0, v0);
771
 
          p[j]->u = u0;
772
 
          p[j]->v = v0;
 
799
          SPoint2 param;
 
800
          reparamMeshVertexOnFace(e->getVertex(j), gf, param);
 
801
          p[j]->u = param[0];
 
802
          p[j]->v = param[1];
773
803
          m->add_geom(e->getVertex(j)->onWhat()->tag(), 
774
804
                      e->getVertex(j)->onWhat()->dim());
775
805
          BDS_GeomEntity *g = m->get_geom(e->getVertex(j)->onWhat()->tag(),