MeshKit
1.0
|
00001 #ifndef PAR_SEND_POST_SURF_MESH_HPP 00002 #define PAR_SEND_POST_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 ParSendPostSurfMesh : public MeshScheme 00013 { 00014 public: 00015 00016 ParSendPostSurfMesh(MKCore *mkcore, const MEntVector &me_vec); 00017 00018 virtual ~ParSendPostSurfMesh(); 00019 00021 static const char* name() 00022 { return "ParSendPostSurfMesh"; } 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 void get_incoming(int& incoming1, int& incoming2); 00060 00061 private: 00062 00063 ParallelComm* m_mpcomm; // mesh parallel communication 00064 00065 unsigned int m_rank; 00066 00067 std::vector< Range* > m_shared_entities; 00068 00069 std::vector< unsigned int > m_shared_procs; 00070 00071 int get_shared_list(const int to_proc); 00072 00073 int m_incoming1, m_incoming2; 00074 }; 00075 } 00076 00077 #endif