Branch data Line data Source code
1 : : /*
2 : : * MBVolOp.h
3 : : *
4 : : * Created on: Jan 13, 2012
5 : : */
6 : :
7 : : #ifndef MBVOLOP_H_
8 : : #define MBVOLOP_H_
9 : :
10 : : #include "meshkit/MeshScheme.hpp"
11 : : #include "moab/GeomTopoTool.hpp"
12 : : #include "moab/FBEngine.hpp"
13 : :
14 : : namespace MeshKit {
15 : :
16 : : class MBVolOp: public MeshKit::MeshScheme {
17 : : public:
18 : : MBVolOp(MKCore *mk_core, const MEntVector &me_vec);
19 : : virtual ~MBVolOp();
20 : : // globalIds: to identify / single out the gfaces to be weaved
21 : : // the gface will be found among gfaces in the mentSelection
22 : : // gface sources, targets
23 : : void add_pair(int source, int target);// these are global ids in input ment vectors
24 : : // or maybe orders in some lists?
25 : :
26 : : // this is the main direction of sweeping / weaving
27 : 1 : void set_direction(double x, double y, double z)
28 : 1 : {_direction[0]=x; _direction[1]=y; _direction[2]=z;}
29 : : //set up the weaving, needed for volume creation
30 : : virtual void setup_this();
31 : :
32 : : // construct the mesh
33 : : virtual void execute_this();
34 : :
35 : : /**\brief Get class name */
36 : 342 : static const char* name()
37 : : {
38 : 342 : return "MBVolOp";
39 : : }
40 : :
41 : 160 : static bool can_mesh(iBase_EntityType dim)
42 : : {
43 : 160 : return false;
44 : : }
45 : :
46 : : /** \brief Function returning whether this scheme can mesh the specified entity
47 : : *
48 : : * Used by MeshOpFactory to find scheme for an entity.
49 : : * \param me ModelEnt being queried
50 : : * \return If true, this scheme can mesh the specified ModelEnt
51 : : */
52 : 0 : static bool can_mesh(ModelEnt *me)
53 : : {
54 : 0 : return false;// this is not used for meshing, but for geometry creation
55 : : }
56 : :
57 : : /**\brief Get list of mesh entity types that can be generated.
58 : : *\return array terminated with \c moab::MBMAXTYPE
59 : : */
60 : : static const moab::EntityType* output_types();
61 : :
62 : : /** \brief Return the mesh entity types operated on by this scheme
63 : : * \return array terminated with \c moab::MBMAXTYPE
64 : : */
65 : 0 : virtual const moab::EntityType* mesh_types_arr() const
66 : : {
67 : 0 : return output_types();
68 : : }
69 : :
70 : :
71 : : private:
72 : : /**
73 : : * \brief find correspondence between vertices, edges, surfaces, for later weaving
74 : : * used later to weave between source and target
75 : : */
76 : : void establish_mapping();
77 : :
78 : : double _direction[3];
79 : : moab::GeomTopoTool * _pGTT ;
80 : : moab::EntityHandle _rootSet;// this is the root set for gtt result
81 : : std::map<moab::EntityHandle, moab::EntityHandle> vertexMap;
82 : : std::map<moab::EntityHandle, moab::EntityHandle> edgeMap;
83 : : std::map<moab::EntityHandle, moab::EntityHandle> faceMap;
84 : : moab::FBEngine * _fbe;
85 : : };
86 : :
87 : : }// namespace MeshKit
88 : :
89 : : #endif /* MBVOLOP_H_ */
|