13#ifndef dealii_trilinos_linear_operator_h
14#define dealii_trilinos_linear_operator_h
18#ifdef DEAL_II_WITH_TRILINOS
28#ifdef DEAL_II_WITH_TRILINOS
35 namespace LinearOperatorImplementation
37 class TrilinosPayload;
40 namespace BlockLinearOperatorImplementation
42 template <
typename PayloadBlockType>
43 class TrilinosBlockPayload;
68 template <
typename Range,
typename Domain = Range,
typename Matrix>
80 linear_operator<Range, Domain, Payload, OperatorExemplar, Matrix>(
81 operator_exemplar, matrix);
98 template <
typename Range,
typename Domain = Range>
108 return ::linear_operator<Range, Domain, Payload, Matrix, Matrix>(
127 template <
typename Range,
typename Domain,
typename Matrix>
138 const Matrix &matrix)
144 linear_operator<Range, Domain, Payload, OperatorExemplar, Matrix>(
145 operator_exemplar, matrix);
168 template <
typename Range,
typename Domain = Range>
172 TrilinosWrappers::internal::BlockLinearOperatorImplementation::
173 TrilinosBlockPayload<TrilinosWrappers::internal::
174 LinearOperatorImplementation::TrilinosPayload>>
178 using PayloadBlockType =
180 using BlockPayload = TrilinosWrappers::internal::
181 BlockLinearOperatorImplementation::TrilinosBlockPayload<PayloadBlockType>;
182 return ::block_operator<Range, Domain, BlockPayload, BlockMatrix>(
201 template <std::size_t m,
204 typename Domain = Range>
208 TrilinosWrappers::internal::BlockLinearOperatorImplementation::
209 TrilinosBlockPayload<TrilinosWrappers::internal::
210 LinearOperatorImplementation::TrilinosPayload>>
215 typename Domain::BlockType,
217 LinearOperatorImplementation::TrilinosPayload>,
221 using PayloadBlockType =
223 using BlockPayload = TrilinosWrappers::internal::
224 BlockLinearOperatorImplementation::TrilinosBlockPayload<PayloadBlockType>;
225 return ::block_operator<m, n, Range, Domain, BlockPayload>(ops);
245 template <
typename Range,
typename Domain = Range>
249 TrilinosWrappers::internal::BlockLinearOperatorImplementation::
250 TrilinosBlockPayload<TrilinosWrappers::internal::
251 LinearOperatorImplementation::TrilinosPayload>>
256 using PayloadBlockType =
258 using BlockPayload = TrilinosWrappers::internal::
259 BlockLinearOperatorImplementation::TrilinosBlockPayload<PayloadBlockType>;
261 block_diagonal_operator<Range, Domain, BlockPayload, BlockMatrix>(
280 template <std::
size_t m,
typename Range,
typename Domain = Range>
284 TrilinosWrappers::internal::BlockLinearOperatorImplementation::
285 TrilinosBlockPayload<TrilinosWrappers::internal::
286 LinearOperatorImplementation::TrilinosPayload>>
290 typename Domain::BlockType,
295 using PayloadBlockType =
297 using BlockPayload = TrilinosWrappers::internal::
298 BlockLinearOperatorImplementation::TrilinosBlockPayload<PayloadBlockType>;
299 return ::block_diagonal_operator<m, Range, Domain, BlockPayload>(ops);
#define DEAL_II_NAMESPACE_OPEN
#define DEAL_II_NAMESPACE_CLOSE
BlockLinearOperator< Range, Domain, TrilinosWrappers::internal::BlockLinearOperatorImplementation::TrilinosBlockPayload< TrilinosWrappers::internal::LinearOperatorImplementation::TrilinosPayload > > block_operator(const TrilinosWrappers::BlockSparseMatrix &block_matrix)
BlockLinearOperator< Range, Domain, TrilinosWrappers::internal::BlockLinearOperatorImplementation::TrilinosBlockPayload< TrilinosWrappers::internal::LinearOperatorImplementation::TrilinosPayload > > block_operator(const std::array< std::array< LinearOperator< typename Range::BlockType, typename Domain::BlockType, TrilinosWrappers::internal::LinearOperatorImplementation::TrilinosPayload >, n >, m > &ops)
LinearOperator< Range, Domain, TrilinosWrappers::internal::LinearOperatorImplementation::TrilinosPayload > linear_operator(const LinearOperator< Range, Domain, TrilinosWrappers::internal::LinearOperatorImplementation::TrilinosPayload > &operator_exemplar, const Matrix &matrix)
LinearOperator< Range, Domain, TrilinosWrappers::internal::LinearOperatorImplementation::TrilinosPayload > linear_operator(const TrilinosWrappers::SparseMatrix &matrix)
BlockLinearOperator< Range, Domain, TrilinosWrappers::internal::BlockLinearOperatorImplementation::TrilinosBlockPayload< TrilinosWrappers::internal::LinearOperatorImplementation::TrilinosPayload > > block_diagonal_operator(const TrilinosWrappers::BlockSparseMatrix &block_matrix)
BlockLinearOperator< Range, Domain, TrilinosWrappers::internal::BlockLinearOperatorImplementation::TrilinosBlockPayload< TrilinosWrappers::internal::LinearOperatorImplementation::TrilinosPayload > > block_diagonal_operator(const std::array< LinearOperator< typename Range::BlockType, typename Domain::BlockType, TrilinosWrappers::internal::LinearOperatorImplementation::TrilinosPayload >, m > &ops)
LinearOperator< Range, Domain, TrilinosWrappers::internal::LinearOperatorImplementation::TrilinosPayload > linear_operator(const TrilinosWrappers::SparseMatrix &operator_exemplar, const Matrix &matrix)