Branch data Line data Source code
1 : : #ifndef MESHKIT_NETGEN_TET_MESHER_HPP
2 : : #define MESHKIT_NETGEN_TET_MESHER_HPP
3 : :
4 : : #include "meshkit/iGeom.hpp"
5 : : #include <set>
6 : : #include <vector>
7 : : #include "meshkit/MeshScheme.hpp"
8 : : #include "moab/Interface.hpp"
9 : :
10 : : /** \file NGTetMesher.hpp
11 : : */
12 : :
13 : : #include "meshkit/MeshScheme.hpp"
14 : :
15 : : class CMLTetMesher;
16 : :
17 : : namespace MeshKit
18 : : {
19 : :
20 : : class MKCore;
21 : :
22 : : /** \class NGTetMesher NGTetMesher.hpp "meshkit/NGTetMesher.hpp"
23 : : * \brief The wrapper for the Netgen tet mesher
24 : : *
25 : : * This class calls the Netgen tet mesher and converts mesh to/from the required format for that mesher.
26 : : */
27 : : class NGTetMesher : public MeshScheme
28 : : {
29 : : public:
30 : : /** \brief Constructor
31 : : * \param mk_core MKCore instance
32 : : * \param me_vec ModelEnts this mesher will be applied to
33 : : */
34 : : NGTetMesher(MKCore *mk_core, const MEntVector &me_vec);
35 : :
36 : : /** \brief Destructor
37 : : */
38 : : ~NGTetMesher();
39 : :
40 : : /** \brief Setup function for this mesher, simply calls setup_boundary
41 : : */
42 : : virtual void setup_this();
43 : :
44 : : /** \brief Execute the mesher (calling Netgen mesher on this volume)
45 : : */
46 : : virtual void execute_this();
47 : :
48 : : /** \brief Static variable for registering this meshop
49 : : */
50 : : static bool meshopRegistered;
51 : :
52 : : /** \brief Static list of geometry types treated by this scheme
53 : : */
54 : : static iBase_EntityType geomTps[];
55 : :
56 : : /** \brief Static list of mesh types treated by this scheme
57 : : */
58 : : static moab::EntityType meshTps[];
59 : :
60 : :
61 : : /**\brief Get class name */
62 : 83 : static const char* name()
63 : 83 : { return "NGTetMesher"; }
64 : :
65 : : /**\brief Function returning whether this scheme can mesh entities of t
66 : : * the specified dimension.
67 : : *\param dim entity dimension
68 : : */
69 : 160 : static bool can_mesh(iBase_EntityType dim)
70 : 160 : { return iBase_REGION == dim; }
71 : :
72 : : /** \brief Function returning whether this scheme can mesh the specified entity
73 : : *
74 : : * Used by MeshOpFactory to find scheme for an entity.
75 : : * \param me ModelEnt being queried
76 : : * \return If true, this scheme can mesh the specified ModelEnt
77 : : */
78 : 0 : static bool can_mesh(ModelEnt *me)
79 : 0 : { return canmesh_region(me); }
80 : :
81 : : /**\brief Get list of mesh entity types that can be generated.
82 : : *\return array terminated with \c moab::MBMAXTYPE
83 : : */
84 : 40 : static const moab::EntityType* output_types()
85 : 40 : { return meshTps; }
86 : :
87 : : /** \brief Return the mesh entity types operated on by this scheme
88 : : * \return array terminated with \c moab::MBMAXTYPE
89 : : */
90 : 0 : virtual const moab::EntityType* mesh_types_arr() const
91 : 0 : { return output_types(); }
92 : :
93 : : private:
94 : :
95 : : /** \brief Construct a MeshOp that can generate triangle elements
96 : : * \return A MeshOp that can generate tri elements
97 : : */
98 : : MeshOp *get_tri_mesher();
99 : : };
100 : :
101 : : } // namespace MeshKit
102 : :
103 : : #endif
|