Go to the documentation of this file.
3 #ifndef DUNE_AMGCONSTRUCTION_HH
4 #define DUNE_AMGCONSTRUCTION_HH
6 #include <dune/common/unused.hh>
37 class ConstructionTraits
54 return std::make_shared<T>();
58 template<
class T,
class A>
65 return std::make_shared<BlockVector<T,A>>(n);
69 template<
class M,
class C>
81 struct OwnerOverlapCopyCommunicationArgs
84 : comm_(comm), cat_(cat)
97 DUNE_UNUSED_PARAMETER(cat);
100 CollectiveCommunication<void*>
comm_;
106 template<
class M,
class X,
class Y,
class C>
109 template<
class M,
class X,
class Y,
class C>
114 template<
class M,
class X,
class Y,
class C>
122 return std::make_shared<OverlappingSchwarzOperator<M,X,Y,C>>
127 template<
class M,
class X,
class Y,
class C>
133 static inline std::shared_ptr<NonoverlappingSchwarzOperator<M,X,Y,C>>
construct(
const Arguments& args)
135 return std::make_shared<NonoverlappingSchwarzOperator<M,X,Y,C>>
140 template<
class M,
class X,
class Y>
150 template<
class M,
class X,
class Y>
158 return std::make_shared<MatrixAdapter<M,X,Y>>(args.matrix_);
169 return std::make_shared<SequentialInformation>(args.comm_);
176 template<
class T1,
class T2>
177 class ConstructionTraits<OwnerOverlapCopyCommunication<T1,T2> >
180 typedef const OwnerOverlapCopyCommunicationArgs
Arguments;
182 static inline std::shared_ptr<OwnerOverlapCopyCommunication<T1,T2>>
construct(
Arguments& args)
184 return std::make_shared<OwnerOverlapCopyCommunication<T1,T2>>(args.comm_, args.cat_);
const C & comm_
Definition: construction.hh:77
static std::shared_ptr< T > construct(Arguments &args)
Construct an object with the specified arguments.
Definition: construction.hh:52
Definition: construction.hh:141
Definition: construction.hh:92
Traits class for generically constructing non default constructable types.
Definition: novlpschwarz.hh:251
ParallelOperatorArgs< M, C > Arguments
Definition: construction.hh:118
ParallelOperatorArgs(std::shared_ptr< M > matrix, const C &comm)
Definition: construction.hh:72
const typedef SequentialCommunicationArgs Arguments
Definition: construction.hh:166
static std::shared_ptr< MatrixAdapter< M, X, Y > > construct(Arguments &args)
Definition: construction.hh:156
std::shared_ptr< M > matrix_
Definition: construction.hh:147
static std::shared_ptr< OverlappingSchwarzOperator< M, X, Y, C > > construct(const Arguments &args)
Definition: construction.hh:120
std::shared_ptr< M > matrix_
Definition: construction.hh:76
Definition: construction.hh:70
MatrixAdapterArgs(std::shared_ptr< M > matrix, const SequentialInformation)
Definition: construction.hh:143
const typedef void * Arguments
A type holding all the arguments needed to call the constructor.
Definition: construction.hh:44
SequentialCommunicationArgs(CollectiveCommunication< void * > comm, int cat)
Definition: construction.hh:94
ParallelOperatorArgs< M, C > Arguments
Definition: construction.hh:131
Adapter to turn a matrix into a linear operator.
Definition: operators.hh:134
An overlapping Schwarz operator.
Definition: construction.hh:107
Definition: allocator.hh:7
static std::shared_ptr< SequentialInformation > construct(Arguments &args)
Definition: construction.hh:167
A nonoverlapping operator with communication object.
Definition: novlpschwarz.hh:59
const typedef MatrixAdapterArgs< M, X, Y > Arguments
Definition: construction.hh:154
Classes providing communication interfaces for overlapping Schwarz methods.
CollectiveCommunication< void * > comm_
Definition: construction.hh:100
A vector of blocks with memory management.
Definition: bvector.hh:402
Category
Definition: solvercategory.hh:21
const typedef int Arguments
Definition: construction.hh:62
This file implements a vector space as a tensor product of a given vector space. The number of compon...
static std::shared_ptr< NonoverlappingSchwarzOperator< M, X, Y, C > > construct(const Arguments &args)
Definition: construction.hh:133
static std::shared_ptr< BlockVector< T, A > > construct(Arguments &n)
Definition: construction.hh:63
Define general, extensible interface for operators. The available implementation wraps a matrix.