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

« back to all changes in this revision

Viewing changes to Mesh/meshGRegionDelaunayInsertion.cpp

  • Committer: Bazaar Package Importer
  • Author(s): Christophe Prud'homme, Christophe Prud'homme
  • Date: 2009-09-27 17:36:40 UTC
  • mfrom: (1.2.9 upstream) (8.1.2 squeeze)
  • Revision ID: james.westby@ubuntu.com-20090927173640-oxyhzt0eadjfrlwz
[Christophe Prud'homme]
* New upstream release
  + solver code refactoring
  + better IDE integration.

Show diffs side-by-side

added added

removed removed

Lines of Context:
7
7
#include <map>
8
8
#include <algorithm>
9
9
#include "GmshMessage.h"
10
 
#include "GmshPredicates.h"
 
10
#include "robustPredicates.h"
11
11
#include "OS.h"
12
12
#include "BackgroundMesh.h"
13
13
#include "meshGRegion.h"
32
32
  double pd[3] = {base->getVertex(3)->x(),
33
33
                  base->getVertex(3)->y(),
34
34
                  base->getVertex(3)->z()};
35
 
  double result = 
36
 
    gmsh::insphere(pa, pb, pc, pd, (double*)p) * gmsh::orient3d(pa, pb, pc, pd);
 
35
  double result = robustPredicates::insphere(pa, pb, pc, pd, (double*)p) * 
 
36
    robustPredicates::orient3d(pa, pb, pc, pd);
37
37
  return (result > 0) ? 1 : 0;
38
38
}
39
39
 
348
348
 
349
349
void adaptMeshGRegion::operator () (GRegion *gr)
350
350
{
351
 
  const gmshQualityMeasure4Tet qm = QMTET_2;
 
351
  const qualityMeasure4Tet qm = QMTET_2;
352
352
 
353
353
  typedef std::list<MTet4 *> CONTAINER ;
354
354
  CONTAINER allTets;
405
405
      if (!(*it)->isDeleted()){
406
406
        for (int i = 0; i < 4; i++){
407
407
          for (int j = 0; j < 4; j++){
408
 
            if (gmshCollapseVertex(newTets, *it, i, j, QMTET_2)){
 
408
            if (collapseVertex(newTets, *it, i, j, QMTET_2)){
409
409
              nbCollapse++; i = j = 10;
410
410
            }
411
411
          }
420
420
        double qq = (*it)->getQuality();
421
421
        if (qq < qMin){
422
422
          for (int i = 0; i < 4; i++){
423
 
            if (gmshFaceSwap(newTets, *it, i, qm)){
 
423
            if (faceSwap(newTets, *it, i, qm)){
424
424
              nbFSwap++;
425
425
              break;
426
426
            }
437
437
        double qq = (*it)->getQuality();
438
438
        if (qq < qMin)
439
439
          for (int i = 0; i < 6; i++){
440
 
            if (gmshEdgeSwap(newTets, *it, i, qm)) {
 
440
            if (edgeSwap(newTets, *it, i, qm)) {
441
441
              nbESwap++;
442
442
              break; 
443
443
            }
472
472
        double qq = (*it)->getQuality();
473
473
        if (qq < qMin)
474
474
          for (int i = 0; i < 4; i++){
475
 
            if (gmshSmoothVertex(*it, i, qm)) nbReloc++;
 
475
            if (smoothVertex(*it, i, qm)) nbReloc++;
476
476
          }
477
477
      }
478
478
    }
529
529
}
530
530
 
531
531
//template <class CONTAINER, class DATA> 
532
 
void gmshOptimizeMesh(GRegion *gr, const gmshQualityMeasure4Tet &qm)
 
532
void optimizeMesh(GRegion *gr, const qualityMeasure4Tet &qm)
533
533
{
534
534
  typedef std::list<MTet4 *> CONTAINER ;
535
535
  CONTAINER allTets;
589
589
        double qq = (*it)->getQuality();
590
590
        if (qq < qMin){
591
591
          for (int i = 0; i < 4; i++){
592
 
            if (gmshFaceSwap(newTets, *it, i, qm)){
 
592
            if (faceSwap(newTets, *it, i, qm)){
593
593
              nbFSwap++;
594
594
              break;
595
595
            }
606
606
        double qq = (*it)->getQuality();
607
607
        if (qq < qMin)
608
608
          for (int i = 0; i < 6; i++){
609
 
            if (gmshEdgeSwap(newTets, *it, i, qm)) {
 
609
            if (edgeSwap(newTets, *it, i, qm)) {
610
610
              nbESwap++;
611
611
              break;
612
612
            }
627
627
      int nbSliversWeCanDoSomething = 0;
628
628
      for(unsigned int i = 0; i < illegals.size(); i++)
629
629
        if(!(illegals[i]->isDeleted())){
630
 
          if(gmshSliverRemoval(newTets, illegals[i], qm))
 
630
          if(sliverRemoval(newTets, illegals[i], qm))
631
631
            nbSliversWeCanDoSomething++;
632
632
          nbSlivers++;
633
633
        }
655
655
        double qq = (*it)->getQuality();
656
656
        if (qq < qMin)
657
657
          for (int i = 0; i < 4; i++){
658
 
            if (gmshSmoothVertex(*it, i, qm)) nbReloc++;
 
658
            if (smoothVertex(*it, i, qm)) nbReloc++;
659
659
          }
660
660
      }
661
661
    }