PolyDEAL
 
Loading...
Searching...
No Matches
linear_operator_for_mg.h File Reference
#include <deal.II/base/config.h>
#include <deal.II/base/exceptions.h>
#include <deal.II/lac/vector_memory.h>
#include <array>
#include <functional>
#include <type_traits>

Go to the source code of this file.

Classes

class  LinearOperatorMG< Range, Domain, Payload >
 
class  internal::LinearOperatorMGImplementation::ReinitHelper< Vector >
 
class  internal::LinearOperatorMGImplementation::EmptyPayload
 
class  internal::LinearOperatorMGImplementation::has_vmult_add_and_Tvmult_add< Range, Domain, T >
 
class  internal::LinearOperatorMGImplementation::MatrixInterfaceWithoutVmultAdd< Range, Domain, Payload >
 
class  internal::LinearOperatorMGImplementation::MatrixInterfaceWithVmultAdd< Range, Domain, Payload >
 

Namespaces

namespace  internal
 
namespace  internal::LinearOperatorMGImplementation
 

Functions

EmptyPayload internal::LinearOperatorMGImplementation::operator+ (const EmptyPayload &, const EmptyPayload &)
 
EmptyPayload internal::LinearOperatorMGImplementation::operator* (const EmptyPayload &, const EmptyPayload &)
 
template<typename Function , typename Range , typename Domain >
void internal::LinearOperatorMGImplementation::apply_with_intermediate_storage (Function function, Range &v, const Domain &u, bool add)
 
template<typename Range = Vector<double>, typename Domain = Range, typename Payload = internal::LinearOperatorMGImplementation::EmptyPayload, typename OperatorExemplar , typename Matrix , typename = std::enable_if_t<!std::is_lvalue_reference_v<Matrix>>>
LinearOperatorMG< Range, Domain, Payload > linear_operator_mg (const OperatorExemplar &, Matrix &&)=delete
 
template<typename Range = Vector<double>, typename Domain = Range, typename Payload = internal::LinearOperatorMGImplementation::EmptyPayload, typename OperatorExemplar , typename Matrix , typename = std::enable_if_t<!std::is_lvalue_reference_v<OperatorExemplar>>, typename = std::enable_if_t<!std::is_same_v<OperatorExemplar, LinearOperatorMG<Range, Domain, Payload>>>>
LinearOperatorMG< Range, Domain, Payload > linear_operator_mg (OperatorExemplar &&, const Matrix &)=delete
 
template<typename Range = Vector<double>, typename Domain = Range, typename Payload = internal::LinearOperatorMGImplementation::EmptyPayload, typename OperatorExemplar , typename Matrix , typename = std::enable_if_t<!std::is_lvalue_reference_v<Matrix>>, typename = std::enable_if_t<!std::is_lvalue_reference_v<OperatorExemplar>>, typename = std::enable_if_t<!std::is_same_v<OperatorExemplar, LinearOperatorMG<Range, Domain, Payload>>>>
LinearOperatorMG< Range, Domain, Payload > linear_operator_mg (OperatorExemplar &&, Matrix &&)=delete
 
template<typename Range = Vector<double>, typename Domain = Range, typename Payload = internal::LinearOperatorMGImplementation::EmptyPayload, typename Matrix , typename = std::enable_if_t<!std::is_lvalue_reference_v<Matrix>>>
LinearOperatorMG< Range, Domain, Payload > linear_operator_mg (const LinearOperatorMG< Range, Domain, Payload > &, Matrix &&)=delete
 
template<typename Range = Vector<double>, typename Domain = Range, typename Payload = internal::LinearOperatorMGImplementation::EmptyPayload, typename Matrix , typename = std::enable_if_t<!std::is_lvalue_reference_v<Matrix>>>
LinearOperatorMG< Range, Domain, Payload > linear_operator_mg (Matrix &&)=delete
 
template<typename Payload , typename Solver , typename Preconditioner , typename Range = typename Solver::vector_type, typename Domain = Range, typename = std::enable_if_t<!std::is_lvalue_reference_v<Preconditioner>>, typename = std::enable_if_t<!std::is_same_v<Preconditioner, PreconditionIdentity>>, typename = std::enable_if_t< !std::is_same_v<Preconditioner, LinearOperatorMG<Range, Domain, Payload>>>>
LinearOperatorMG< Domain, Range, Payload > inverse_operator (const LinearOperatorMG< Range, Domain, Payload > &, Solver &, Preconditioner &&)=delete
 
Creation of a LinearOperatorMG
template<typename Range = Vector<double>, typename Domain = Range, typename Payload = internal::LinearOperatorMGImplementation::EmptyPayload, typename OperatorExemplar , typename Matrix >
LinearOperatorMG< Range, Domain, Payload > linear_operator_mg (const OperatorExemplar &, const Matrix &)
 
template<typename Range = Vector<double>, typename Domain = Range, typename Payload = internal::LinearOperatorMGImplementation::EmptyPayload, typename Matrix >
LinearOperatorMG< Range, Domain, Payload > linear_operator_mg (const Matrix &)
 
template<typename Range = Vector<double>, typename Domain = Range, typename Payload = internal::LinearOperatorMGImplementation::EmptyPayload>
LinearOperatorMG< Range, Domain, Payload > null_operator (const LinearOperatorMG< Range, Domain, Payload > &)
 
template<typename Range , typename Domain , typename Payload >
LinearOperatorMG< Range, Domain, Payload > identity_operator (const LinearOperatorMG< Range, Domain, Payload > &)
 
template<typename Range , typename Payload = internal::LinearOperatorMGImplementation::EmptyPayload>
LinearOperatorMG< Range, Range, Payload > identity_operator (const std::function< void(Range &, bool)> &reinit_vector)
 
template<typename Range , typename Payload = internal::LinearOperatorMGImplementation::EmptyPayload>
LinearOperatorMG< Range, Range, Payload > mean_value_filter (const std::function< void(Range &, bool)> &reinit_vector)
 
template<typename Range , typename Domain , typename Payload >
LinearOperatorMG< Range, Domain, Payload > mean_value_filter (const LinearOperatorMG< Range, Domain, Payload > &op)
 
template<typename Range , typename Domain , typename Payload , typename Matrix >
LinearOperatorMG< Range, Domain, Payload > linear_operator_mg (const LinearOperatorMG< Range, Domain, Payload > &operator_exemplar, const Matrix &matrix)
 
Vector space operations
template<typename Range , typename Domain , typename Payload >
LinearOperatorMG< Range, Domain, Payload > operator+ (const LinearOperatorMG< Range, Domain, Payload > &first_op, const LinearOperatorMG< Range, Domain, Payload > &second_op)
 
template<typename Range , typename Domain , typename Payload >
LinearOperatorMG< Range, Domain, Payload > operator- (const LinearOperatorMG< Range, Domain, Payload > &first_op, const LinearOperatorMG< Range, Domain, Payload > &second_op)
 
template<typename Range , typename Domain , typename Payload >
LinearOperatorMG< Range, Domain, Payload > operator* (typename Range::value_type number, const LinearOperatorMG< Range, Domain, Payload > &op)
 
template<typename Range , typename Domain , typename Payload >
LinearOperatorMG< Range, Domain, Payload > operator* (const LinearOperatorMG< Range, Domain, Payload > &op, typename Domain::value_type number)
 
Composition and manipulation of a LinearOperatorMG
template<typename Range , typename Intermediate , typename Domain , typename Payload >
LinearOperatorMG< Range, Domain, Payload > operator* (const LinearOperatorMG< Range, Intermediate, Payload > &first_op, const LinearOperatorMG< Intermediate, Domain, Payload > &second_op)
 
template<typename Range , typename Domain , typename Payload >
LinearOperatorMG< Domain, Range, Payload > transpose_operator (const LinearOperatorMG< Range, Domain, Payload > &op)
 
template<typename Payload , typename Solver , typename Preconditioner , typename Range = typename Solver::vector_type, typename Domain = Range>
LinearOperatorMG< Domain, Range, Payload > inverse_operator (const LinearOperatorMG< Range, Domain, Payload > &op, Solver &solver, const Preconditioner &preconditioner)
 
template<typename Payload , typename Solver , typename Range = typename Solver::vector_type, typename Domain = Range>
LinearOperatorMG< Domain, Range, Payload > inverse_operator (const LinearOperatorMG< Range, Domain, Payload > &op, Solver &solver, const LinearOperatorMG< Range, Domain, Payload > &preconditioner)
 
template<typename Payload , typename Solver , typename Range = typename Solver::vector_type, typename Domain = Range>
LinearOperatorMG< Domain, Range, Payload > inverse_operator (const LinearOperatorMG< Range, Domain, Payload > &op, Solver &solver)
 
template<typename Payload , typename Solver , typename Range = typename Solver::vector_type, typename Domain = Range>
LinearOperatorMG< Domain, Range, Payload > inverse_operator (const LinearOperatorMG< Range, Domain, Payload > &op, Solver &solver, const PreconditionIdentity &)
 

Function Documentation

◆ inverse_operator()

template<typename Payload , typename Solver , typename Preconditioner , typename Range = typename Solver::vector_type, typename Domain = Range, typename = std::enable_if_t<!std::is_lvalue_reference_v<Preconditioner>>, typename = std::enable_if_t<!std::is_same_v<Preconditioner, PreconditionIdentity>>, typename = std::enable_if_t< !std::is_same_v<Preconditioner, LinearOperatorMG<Range, Domain, Payload>>>>
LinearOperatorMG< Domain, Range, Payload > inverse_operator ( const LinearOperatorMG< Range, Domain, Payload > & ,
Solver & ,
Preconditioner &&  )
delete

◆ linear_operator_mg() [1/5]

template<typename Range = Vector<double>, typename Domain = Range, typename Payload = internal::LinearOperatorMGImplementation::EmptyPayload, typename Matrix , typename = std::enable_if_t<!std::is_lvalue_reference_v<Matrix>>>
LinearOperatorMG< Range, Domain, Payload > linear_operator_mg ( const LinearOperatorMG< Range, Domain, Payload > & ,
Matrix &&  )
delete

◆ linear_operator_mg() [2/5]

template<typename Range = Vector<double>, typename Domain = Range, typename Payload = internal::LinearOperatorMGImplementation::EmptyPayload, typename OperatorExemplar , typename Matrix , typename = std::enable_if_t<!std::is_lvalue_reference_v<Matrix>>>
LinearOperatorMG< Range, Domain, Payload > linear_operator_mg ( const OperatorExemplar & ,
Matrix &&  )
delete

◆ linear_operator_mg() [3/5]

template<typename Range = Vector<double>, typename Domain = Range, typename Payload = internal::LinearOperatorMGImplementation::EmptyPayload, typename Matrix , typename = std::enable_if_t<!std::is_lvalue_reference_v<Matrix>>>
LinearOperatorMG< Range, Domain, Payload > linear_operator_mg ( Matrix && )
delete

◆ linear_operator_mg() [4/5]

template<typename Range = Vector<double>, typename Domain = Range, typename Payload = internal::LinearOperatorMGImplementation::EmptyPayload, typename OperatorExemplar , typename Matrix , typename = std::enable_if_t<!std::is_lvalue_reference_v<OperatorExemplar>>, typename = std::enable_if_t<!std::is_same_v<OperatorExemplar, LinearOperatorMG<Range, Domain, Payload>>>>
LinearOperatorMG< Range, Domain, Payload > linear_operator_mg ( OperatorExemplar && ,
const Matrix &  )
delete

◆ linear_operator_mg() [5/5]

template<typename Range = Vector<double>, typename Domain = Range, typename Payload = internal::LinearOperatorMGImplementation::EmptyPayload, typename OperatorExemplar , typename Matrix , typename = std::enable_if_t<!std::is_lvalue_reference_v<Matrix>>, typename = std::enable_if_t<!std::is_lvalue_reference_v<OperatorExemplar>>, typename = std::enable_if_t<!std::is_same_v<OperatorExemplar, LinearOperatorMG<Range, Domain, Payload>>>>
LinearOperatorMG< Range, Domain, Payload > linear_operator_mg ( OperatorExemplar && ,
Matrix &&  )
delete