00001
00002
00003
00004
00005
00006
00007
00008 #ifndef SRC_AMG_MKB_AMG_ROWDATACOLLECTOR_HPP_
00009 #define SRC_AMG_MKB_AMG_ROWDATACOLLECTOR_HPP_
00010 #include "AMGRows.hpp"
00011 #include <map>
00012 #include <petscmat.h>
00013 #include <algorithm>
00014 #include <mpi.h>
00015 #include "RowData.hpp"
00016 #include "AMGMatrixUtilityFunctions.hpp"
00017
00018
00019
00020
00021 class RowDataCollector {
00022 public:
00023 RowData* Collect(Mat mat, struct influenced_info* influenced_info_array);
00024 RowDataCollector();
00025 virtual ~RowDataCollector();
00026 private:
00027 RowData* GetRequiredRowData(Mat mat, struct influenced_info* influenced_info_array);
00028 int GetExchangeBufferSize(int* row_data_request_sizes, int world_size);
00029 void FillExchangeBuffer(PetscInt* exchangeBuffer, struct influenced_info* influenced_info_array, int received_count, PetscInt range_begin);
00030 };
00031
00032 #endif