Namespaces | |
NonMatching | |
Patterns | |
Functions | |
template<typename Range , typename Domain , typename Payload = internal::LinearOperatorImplementation::EmptyPayload> | |
LinearOperator< Range, Domain, Payload > | projection_operator (const Range &range_exemplar, const std::vector< std::reference_wrapper< const Domain >> &local_basis, const Domain *domain_exemplar=nullptr, const Payload &payload=Payload()) |
Construct a LinearOperator object that projects a vector onto a basis. More... | |
LinearOperator<Range, Domain, Payload> dealii::projection_operator | ( | const Range & | range_exemplar, |
const std::vector< std::reference_wrapper< const Domain >> & | local_basis, | ||
const Domain * | domain_exemplar = nullptr , |
||
const Payload & | payload = Payload() |
||
) |
Construct a LinearOperator object that projects a vector onto a basis.
This function can be used to perform model order reduction, i.e. to project a large dimensional vector onto a smaller dimensional subspace. A typical usage of this class is the following:
range_exemplar | An exmeplar vector of the range space. We'll make a few copies of this vector to allow the operator to be used with intermediate storage. |
local_basis | A vector of references to the locally owned basis vectors. These vectors must be ordered according to the IndexSet Range::locally_owned_elements() of the range space. |
domain_exemplar | If used in parallel, it may happen that some processes do not own any index of the Range space. In this case, you need to provide a pointer to a Domain vector to be used as an exemplar vector. |
Definition at line 77 of file projection_operator.h.
References VectorOperation::add, Assert, AssertDimension, StandardExceptions::ExcMessage(), and TrilinosWrappers::linear_operator().
Referenced by PDEs::Serial::ReducedLagrange< dim, spacedim >::solve().