MeshKit
1.0
|
00001 #ifndef PAR_RECV_SURF_MESH_HPP 00002 #define PAR_RECV_SURF_MESH_HPP 00003 00004 #include "meshkit/MeshScheme.hpp" 00005 #include "meshkit/ModelEnt.hpp" 00006 #include "moab/ParallelComm.hpp" 00007 00008 namespace MeshKit 00009 { 00010 using namespace moab; 00011 00012 class ParRecvSurfMesh : public MeshScheme 00013 { 00014 public: 00015 00016 ParRecvSurfMesh(MKCore *mkcore, const MEntVector &me_vec); 00017 00018 virtual ~ParRecvSurfMesh(); 00019 00021 static const char* name() 00022 { return "ParRecvSurfMesh"; } 00023 00028 static bool can_mesh(iBase_EntityType dim) 00029 { return iBase_ALL_TYPES == dim; } 00030 00037 static bool can_mesh(ModelEnt *me) 00038 { return (me->dimension() == 4); } 00039 00043 static const moab::EntityType* output_types(); 00044 00048 virtual const moab::EntityType* mesh_types_arr() const 00049 { return output_types(); } 00050 00053 virtual void setup_this(); 00054 00057 virtual void execute_this(); 00058 00059 private: 00060 00061 ParallelComm* m_mpcomm; // mesh parallel communication 00062 00063 unsigned int m_rank; 00064 00065 std::vector< Range* > m_shared_entities; 00066 00067 std::vector< unsigned int > m_shared_procs; 00068 00069 int get_shared_list(const int to_proc); 00070 }; 00071 } 00072 00073 #endif