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