Branch data Line data Source code
1 : : #ifndef MESHKIT_CAMAL_TRI_ADV_HPP
2 : : #define MESHKIT_CAMAL_TRI_ADV_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 CAMALTriAdvance.hpp
11 : : */
12 : :
13 : : #include "meshkit/MeshScheme.hpp"
14 : :
15 : : namespace MeshKit
16 : : {
17 : :
18 : : class MKCore;
19 : :
20 : : /** \class CAMALTriAdvance CAMALTriAdvance.hpp "meshkit/CAMALTriAdvance.hpp"
21 : : * \brief The interface to the CAMAL TriAdvance algorithm
22 : : *
23 : : * This class implements the interface to CAMAL's TriAdvance advancing front tri mesher algorithm.
24 : : */
25 : : class CAMALTriAdvance : public MeshScheme
26 : : {
27 : : public:
28 : : /** \brief Constructor
29 : : * \param mk_core MKCore instance
30 : : * \param me_vec ModelEnts this mesher will be applied to
31 : : */
32 : : CAMALTriAdvance(MKCore *mk_core, const MEntVector &me_vec);
33 : :
34 : : /** \brief Destructor
35 : : */
36 : : ~CAMALTriAdvance();
37 : :
38 : : /** \brief Setup function for this mesher, simply calls setup_boundary
39 : : */
40 : : virtual void setup_this();
41 : :
42 : : /** \brief Execute the mesher (calling CAMAL mesher on this surface)
43 : : */
44 : : virtual void execute_this();
45 : :
46 : : /** \brief Static list of mesh types treated by this scheme
47 : : */
48 : : static moab::EntityType meshTps[];
49 : :
50 : :
51 : : /**\brief Get class name */
52 : 226 : static const char* name()
53 : 226 : { return "CAMALTriAdvance"; }
54 : :
55 : : /**\brief Function returning whether this scheme can mesh entities of t
56 : : * the specified dimension.
57 : : *\param dim entity dimension
58 : : */
59 : 160 : static bool can_mesh(iBase_EntityType dim)
60 : 160 : { return iBase_FACE == dim; }
61 : :
62 : : /** \brief Function returning whether this scheme can mesh the specified entity
63 : : *
64 : : * Used by MeshOpFactory to find scheme for an entity.
65 : : * \param me ModelEnt being queried
66 : : * \return If true, this scheme can mesh the specified ModelEnt
67 : : */
68 : 0 : static bool can_mesh(ModelEnt *me)
69 : 0 : { return canmesh_face(me); }
70 : :
71 : : /**\brief Get list of mesh entity types that can be generated.
72 : : *\return array terminated with \c moab::MBMAXTYPE
73 : : */
74 : 42 : static const moab::EntityType* output_types()
75 : 42 : { return meshTps; }
76 : :
77 : : /** \brief Return the mesh entity types operated on by this scheme
78 : : * \return array terminated with \c moab::MBMAXTYPE
79 : : */
80 : 0 : virtual const moab::EntityType* mesh_types_arr() const
81 : 0 : { return output_types(); }
82 : :
83 : : private:
84 : :
85 : : /** \brief print debug information and save input boundary mesh for CAMAL library
86 : : */
87 : : void print_debug(ModelEnt *me, std::vector<double> &coords,
88 : : moab::Range &bdy_vrange, std::vector<int> &group_sizes,
89 : : std::vector<int> &bdy_ids);
90 : : };
91 : :
92 : : } // namespace MeshKit
93 : :
94 : : #endif
|