File: GeoMatcher.h

package info (click to toggle)
madlib 1.3.0-5
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 8,196 kB
  • sloc: cpp: 39,851; sh: 10,041; makefile: 473
file content (65 lines) | stat: -rw-r--r-- 1,794 bytes parent folder | download | duplicates (6)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
// -*- C++ -*-
// -------------------------------------------------------------------
// MAdLib - Copyright (C) 2008-2009 Universite catholique de Louvain
//
// See the Copyright.txt and License.txt files for license information. 
// You should have received a copy of these files along with MAdLib. 
// If not, see <http://www.madlib.be/license/>
//
// Please report all bugs and problems to <contrib@madlib.be>
//
// Authors: Gaetan Compere, Jean-Francois Remacle
// -------------------------------------------------------------------

#ifndef _H_GEOMATCHER
#define _H_GEOMATCHER

#include "MAdElasticityOp.h"
#include "SliverFaceHandler.h"
#include "SliverRegionHandler.h"
#include <list>

namespace MAd {

  class MeshAdapter;

  // -------------------------------------------------------------------
  class geoMatcher: public MAdElasticityOp
  {

  public:

    geoMatcher(pMesh, MeshAdapter *);
    geoMatcher(const geoMatcher&);
    ~geoMatcher();

    void setForceRelocation(bool _force) { force = _force; }
    void setStrictChecking (bool sc) { strictChecking = sc; }

    void setSliverFaceHandler(sliverFaceHandler * s) { sliverFOp = s; }
    void setSliverRegionHandler(sliverRegionHandler * s) { sliverROp = s; }

    bool snap();

    void reportFailure(double ratio) { failures.push_back(ratio); }
    void printFailures(std::ostream&) const;

  private:

    bool force; // if the nodes are snapped without any check nor repositioning inside the domain
    bool strictChecking; // true: snap() returns true only if we the full snapping is done

    std::list<double> failures;

    MeshAdapter * adapter;

    sliverFaceHandler    *  sliverFOp;
    sliverRegionHandler  *  sliverROp;

  };

  // -------------------------------------------------------------------

}

#endif