Alsvinn  0.5.3
The fast FVM simulator with UQ support
MpiIndexType.hpp
Go to the documentation of this file.
1 /* Copyright (c) 2018 ETH Zurich, Kjetil Olsen Lye
2  * This program is free software: you can redistribute it and/or modify
3  * it under the terms of the GNU General Public License as published by
4  * the Free Software Foundation, either version 3 of the License, or
5  * (at your option) any later version.
6  *
7  * This program is distributed in the hope that it will be useful,
8  * but WITHOUT ANY WARRANTY; without even the implied warranty of
9  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10  * GNU General Public License for more details.
11  *
12  * You should have received a copy of the GNU General Public License
13  * along with this program. If not, see <http://www.gnu.org/licenses/>.
14  */
15 
16 #pragma once
17 #include <mpi.h>
18 #include <vector>
19 #include "alsfvm/types.hpp"
20 
21 namespace alsfvm {
22 namespace mpi {
23 
24 class MpiIndexType {
25 private:
26  MpiIndexType(int numberOfBlocks,
27  const std::vector<int>& blockLengths,
28  const std::vector<int>& offsets,
29  MPI_Datatype datatype
30  );
31 public:
32  static alsfvm::shared_ptr<MpiIndexType> makeInstance(int numberOfBlocks,
33  const std::vector<int>& blockLengths,
34  const std::vector<int>& offsets,
35  MPI_Datatype datatype);
36  ~MpiIndexType();
37 
38  MPI_Datatype indexedDatatype();
39 private:
40  MPI_Datatype indexedDatatypeMember;
41 };
42 
43 typedef alsfvm::shared_ptr<MpiIndexType> MpiIndexTypePtr;
44 } // namespace mpi
45 } // namespace alsfvm
alsfvm::shared_ptr< MpiIndexType > MpiIndexTypePtr
Definition: MpiIndexType.hpp:43
Definition: MpiIndexType.hpp:24
~MpiIndexType()
Definition: MpiIndexType.cpp:43
MPI_Datatype indexedDatatype()
Definition: MpiIndexType.cpp:47
Various utility functions to implement the tecno flux.
Definition: types.hpp:30
static alsfvm::shared_ptr< MpiIndexType > makeInstance(int numberOfBlocks, const std::vector< int > &blockLengths, const std::vector< int > &offsets, MPI_Datatype datatype)
Definition: MpiIndexType.cpp:33