1 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
2 // vi: set et ts=4 sw=2 sts=2:
3 #ifndef DUNE_AMG_PINFO_HH
4 #define DUNE_AMG_PINFO_HH
5 
6 #include <dune/common/parallel/communication.hh>
7 #include <dune/common/enumset.hh>
8 
9 #if HAVE_MPI
10 
11 #include <dune/common/parallel/mpicommunication.hh>
12 #include <dune/common/parallel/mpitraits.hh>
13 #include <dune/common/parallel/remoteindices.hh>
14 #include <dune/common/parallel/interface.hh>
15 #include <dune/common/parallel/communicator.hh>
16 
17 #endif
18 
19 #include <dune/istl/solvercategory.hh>
20 namespace Dune
21 {
22   namespace Amg
23   {
24 
25     class SequentialInformation
26     {
27     public:
28       typedef CollectiveCommunication<void*> MPICommunicator;
29       typedef EmptySet<int> CopyFlags;
30       typedef AllSet<int> OwnerSet;
31 
category() const32       SolverCategory::Category category () const {
33         return SolverCategory::sequential;
34       }
35 
communicator() const36       MPICommunicator communicator() const
37       {
38         return comm_;
39       }
40 
procs() const41       int procs() const
42       {
43         return 1;
44       }
45 
46       template<typename T>
globalSum(const T & t) const47       T globalSum(const T& t) const
48       {
49         return t;
50       }
51 
52       typedef int GlobalLookupIndexSet;
53 
buildGlobalLookup(std::size_t)54       void buildGlobalLookup(std::size_t){}
55 
freeGlobalLookup()56       void freeGlobalLookup(){}
57 
globalLookup() const58       const GlobalLookupIndexSet& globalLookup() const
59       {
60         return gli;
61       }
62 
63       template<class V>
copyOwnerToAll(V & v,V & v1) const64       void copyOwnerToAll([[maybe_unused]] V& v, [[maybe_unused]] V& v1) const
65       {}
66 
67       template<class V>
project(V & v) const68       void project([[maybe_unused]] V& v) const
69       {}
70 
71       template<class T1, class T2>
dot(const T1 &,const T1 &,T2 &) const72       void dot (const T1&, const T1&, T2&) const
73       {
74         // This function should never be called
75         std::abort();
76       }
77 
78       template<class T1>
norm(const T1 &) const79       typename FieldTraits<typename T1::field_type>::real_type norm (const T1&) const
80       {
81         // This function should never be called
82         std::abort();
83       }
84 
85       template<class T>
SequentialInformation(const CollectiveCommunication<T> &)86       SequentialInformation(const CollectiveCommunication<T>&)
87       {}
88 
SequentialInformation()89       SequentialInformation()
90       {}
91 
SequentialInformation(const SequentialInformation &)92       SequentialInformation(const SequentialInformation&)
93       {}
94     private:
95       MPICommunicator comm_;
96       GlobalLookupIndexSet gli;
97     };
98 
99 
100   } // namespace Amg
101 } //namespace Dune
102 #endif
103