5#ifndef DUNE_AMGCONSTRUCTION_HH 
    6#define DUNE_AMGCONSTRUCTION_HH 
   11#include <dune/istl/solvercategory.hh> 
   54        return std::make_shared<T>();
 
   58    template<
class T, 
class A>
 
   64        return std::make_shared<BlockVector<T,A>>(n);
 
   68    template<
class M, 
class C>
 
   69    struct ParallelOperatorArgs
 
   71      ParallelOperatorArgs(std::shared_ptr<M> matrix, 
const C& comm)
 
   72        : matrix_(matrix), comm_(comm)
 
   75      std::shared_ptr<M> matrix_;
 
   80    struct OwnerOverlapCopyCommunicationArgs
 
   83        : comm_(comm), cat_(cat)
 
   91    struct SequentialCommunicationArgs
 
   93      SequentialCommunicationArgs(Communication<void*> comm, [[maybe_unused]] 
int cat)
 
   97      Communication<void*> comm_;
 
  103  template<
class M, 
class X, 
class Y, 
class C>
 
  104  class OverlappingSchwarzOperator;
 
  106  template<
class M, 
class X, 
class Y, 
class C>
 
  107  class NonoverlappingSchwarzOperator;
 
  111    template<
class M, 
class X, 
class Y, 
class C>
 
  112    struct ConstructionTraits<OverlappingSchwarzOperator<M,X,Y,C> >
 
  114      typedef ParallelOperatorArgs<M,C> 
Arguments;
 
  116      static inline std::shared_ptr<OverlappingSchwarzOperator<M,X,Y,C>> 
construct(
const Arguments& args)
 
  118        return std::make_shared<OverlappingSchwarzOperator<M,X,Y,C>>
 
  119          (args.matrix_, args.comm_);
 
  123    template<
class M, 
class X, 
class Y, 
class C>
 
  124    struct ConstructionTraits<NonoverlappingSchwarzOperator<M,X,Y,C> >
 
  126      typedef ParallelOperatorArgs<M,C> 
Arguments;
 
  128      static inline std::shared_ptr<NonoverlappingSchwarzOperator<M,X,Y,C>> 
construct(
const Arguments& args)
 
  130        return std::make_shared<NonoverlappingSchwarzOperator<M,X,Y,C>>
 
  131          (args.matrix_, args.comm_);
 
  135    template<
class M, 
class X, 
class Y>
 
  136    struct MatrixAdapterArgs
 
  138      MatrixAdapterArgs(std::shared_ptr<M> matrix, 
const SequentialInformation)
 
  142      std::shared_ptr<M> matrix_;
 
  145    template<
class M, 
class X, 
class Y>
 
  146    struct ConstructionTraits<MatrixAdapter<M,X,Y> >
 
  148      typedef const MatrixAdapterArgs<M,X,Y> 
Arguments;
 
  152        return std::make_shared<MatrixAdapter<M,X,Y>>(args.matrix_);
 
  157    struct ConstructionTraits<SequentialInformation>
 
  159      typedef const SequentialCommunicationArgs 
Arguments;
 
  162        return std::make_shared<SequentialInformation>(args.comm_);
 
  169    template<
class T1, 
class T2>
 
  170    struct ConstructionTraits<OwnerOverlapCopyCommunication<T1,T2> >
 
  172      typedef const OwnerOverlapCopyCommunicationArgs 
Arguments;
 
  174      static inline std::shared_ptr<OwnerOverlapCopyCommunication<T1,T2>> 
construct(
Arguments& args)
 
  176        return std::make_shared<OwnerOverlapCopyCommunication<T1,T2>>(args.comm_, args.cat_);
 
This file implements a vector space as a tensor product of a given vector space. The number of compon...
 
A vector of blocks with memory management.
Definition: bvector.hh:392
 
Classes providing communication interfaces for overlapping Schwarz methods.
 
const void * Arguments
A type holding all the arguments needed to call the constructor.
Definition: construction.hh:44
 
static std::shared_ptr< T > construct(Arguments &args)
Construct an object with the specified arguments.
Definition: construction.hh:52
 
Dune namespace.
Definition: alignedallocator.hh:13
 
Define general, extensible interface for operators. The available implementation wraps a matrix.
 
Traits class for generically constructing non default constructable types.
Definition: construction.hh:39
 
Category
Definition: solvercategory.hh:23