FEI  Version of the Day
snl_fei_BlkSizeMsgHandler.hpp
1 /*--------------------------------------------------------------------*/
2 /* Copyright 2005 Sandia Corporation. */
3 /* Under the terms of Contract DE-AC04-94AL85000, there is a */
4 /* non-exclusive license for use of this work by or on behalf */
5 /* of the U.S. Government. Export of this program may require */
6 /* a license from the United States Government. */
7 /*--------------------------------------------------------------------*/
8 
9 #ifndef _snl_fei_BlkSizeMsgHandler_hpp_
10 #define _snl_fei_BlkSizeMsgHandler_hpp_
11 
12 #include <fei_macros.hpp>
13 #include <fei_SharedPtr.hpp>
14 #include <fei_VectorSpace.hpp>
15 #include <fei_Graph.hpp>
16 #include <fei_CommUtils.hpp>
17 
18 namespace snl_fei {
19 
22  public:
25  fei::Graph* graph,
26  MPI_Comm comm);
28  virtual ~BlkSizeMsgHandler();
29 
31  int do_the_exchange();
32 
34  std::vector<int>& getSendProcs();
36  std::vector<int>& getRecvProcs();
37 
39  int getSendMessageLength(int destProc, int& messageLength);
41  int getSendMessage(int destProc, std::vector<int>& message);
43  int processRecvMessage(int srcProc, std::vector<int>& message);
44 
45  private:
46  fei::comm_map* remote_colIndices_;
47  fei::comm_map* local_colIndices_;
48  fei::VectorSpace* vecSpace_;
49  snl_fei::PointBlockMap* ptBlkMap_;
50  fei::Graph* graph_;
51  MPI_Comm comm_;
52  std::vector<int> sendProcs_;
53  std::vector<int> recvProcs_;
54 
55  bool firstExchange_;
56 };
57 
58 } // namespace snl_fei
59 
60 #endif
61 
snl_fei::BlkSizeMsgHandler::getSendMessage
int getSendMessage(int destProc, std::vector< int > &message)
Definition: snl_fei_BlkSizeMsgHandler.cpp:152
snl_fei::BlkSizeMsgHandler::do_the_exchange
int do_the_exchange()
Definition: snl_fei_BlkSizeMsgHandler.cpp:60
snl_fei::PointBlockMap
Definition: snl_fei_PointBlockMap.hpp:23
snl_fei::RaggedTable
Definition: snl_fei_RaggedTable.hpp:29
fei::Graph
Definition: fei_Graph.hpp:20
snl_fei::BlkSizeMsgHandler::processRecvMessage
int processRecvMessage(int srcProc, std::vector< int > &message)
Definition: snl_fei_BlkSizeMsgHandler.cpp:182
snl_fei::BlkSizeMsgHandler::~BlkSizeMsgHandler
virtual ~BlkSizeMsgHandler()
Definition: snl_fei_BlkSizeMsgHandler.cpp:53
snl_fei::BlkSizeMsgHandler::getRecvProcs
std::vector< int > & getRecvProcs()
Definition: snl_fei_BlkSizeMsgHandler.cpp:125
fei::MessageHandler
Definition: fei_CommUtils.hpp:564
snl_fei::BlkSizeMsgHandler::BlkSizeMsgHandler
BlkSizeMsgHandler(fei::VectorSpace *vspace, fei::Graph *graph, MPI_Comm comm)
Definition: snl_fei_BlkSizeMsgHandler.cpp:33
snl_fei::BlkSizeMsgHandler
Definition: snl_fei_BlkSizeMsgHandler.hpp:21
snl_fei::BlkSizeMsgHandler::getSendProcs
std::vector< int > & getSendProcs()
Definition: snl_fei_BlkSizeMsgHandler.cpp:114
fei::VectorSpace
Definition: fei_VectorSpace.hpp:62
snl_fei::BlkSizeMsgHandler::getSendMessageLength
int getSendMessageLength(int destProc, int &messageLength)
Definition: snl_fei_BlkSizeMsgHandler.cpp:136