MeshKit
1.0
|
00001 #ifndef MESHKIT_CAMAL_TET_MESHER_HPP 00002 #define MESHKIT_CAMAL_TET_MESHER_HPP 00003 00004 #include "meshkit/iGeom.hpp" 00005 #include <set> 00006 #include <vector> 00007 #include "meshkit/MeshScheme.hpp" 00008 #include "moab/Interface.hpp" 00009 00013 #include "meshkit/MeshScheme.hpp" 00014 00015 class CMLTetMesher; 00016 00017 namespace MeshKit 00018 { 00019 00020 class MKCore; 00021 00027 class CAMALTetMesher : public MeshScheme 00028 { 00029 public: 00034 CAMALTetMesher(MKCore *mk_core, const MEntVector &me_vec); 00035 00038 ~CAMALTetMesher(); 00039 00042 virtual void setup_this(); 00043 00046 virtual void execute_this(); 00047 00050 static moab::EntityType meshTps[]; 00051 00052 00054 static const char* name() 00055 { return "CAMALTetMesher"; } 00056 00061 static bool can_mesh(iBase_EntityType dim) 00062 { return iBase_REGION == dim; } 00063 00070 static bool can_mesh(ModelEnt *me) 00071 { return canmesh_region(me); } 00072 00076 static const moab::EntityType* output_types() 00077 { return meshTps; } 00078 00082 virtual const moab::EntityType* mesh_types_arr() const 00083 { return output_types(); } 00084 00085 private: 00086 00090 MeshOp *get_tri_mesher(); 00091 00094 void print_debug(ModelEnt *me, std::vector<double> &coords, 00095 moab::Range &bdy_vrange, 00096 std::vector<moab::EntityHandle> &bdy, 00097 std::vector<int> &group_sizes, 00098 std::vector<int> &bdy_ids); 00099 00102 CMLTetMesher *cmlTetMesher; 00103 }; 00104 00105 } // namespace MeshKit 00106 00107 #endif