16#ifndef dealii_trilinos_linear_operator_h
17#define dealii_trilinos_linear_operator_h
21#ifdef DEAL_II_WITH_TRILINOS
33 class PreconditionBase;
38 namespace LinearOperatorImplementation
40 class TrilinosPayload;
43 namespace BlockLinearOperatorImplementation
45 template <
typename PayloadBlockType>
46 class TrilinosBlockPayload;
71 template <
typename Range,
typename Domain = Range,
typename Matrix>
77 const Matrix & matrix)
83 linear_operator<Range, Domain, Payload, OperatorExemplar, Matrix>(
84 operator_exemplar, matrix);
101 template <
typename Range,
typename Domain = Range>
111 return ::linear_operator<Range, Domain, Payload, Matrix, Matrix>(
130 template <
typename Range,
typename Domain,
typename Matrix>
141 const Matrix &matrix)
147 linear_operator<Range, Domain, Payload, OperatorExemplar, Matrix>(
148 operator_exemplar, matrix);
171 template <
typename Range,
typename Domain = Range>
175 TrilinosWrappers::internal::BlockLinearOperatorImplementation::
176 TrilinosBlockPayload<TrilinosWrappers::internal::
177 LinearOperatorImplementation::TrilinosPayload>>
181 using PayloadBlockType =
183 using BlockPayload = TrilinosWrappers::internal::
184 BlockLinearOperatorImplementation::TrilinosBlockPayload<PayloadBlockType>;
185 return ::block_operator<Range, Domain, BlockPayload, BlockMatrix>(
204 template <std::size_t m,
207 typename Domain = Range>
211 TrilinosWrappers::internal::BlockLinearOperatorImplementation::
212 TrilinosBlockPayload<TrilinosWrappers::internal::
213 LinearOperatorImplementation::TrilinosPayload>>
218 typename Domain::BlockType,
220 LinearOperatorImplementation::TrilinosPayload>,
224 using PayloadBlockType =
226 using BlockPayload = TrilinosWrappers::internal::
227 BlockLinearOperatorImplementation::TrilinosBlockPayload<PayloadBlockType>;
228 return ::block_operator<m, n, Range, Domain, BlockPayload>(ops);
248 template <
typename Range,
typename Domain = Range>
252 TrilinosWrappers::internal::BlockLinearOperatorImplementation::
253 TrilinosBlockPayload<TrilinosWrappers::internal::
254 LinearOperatorImplementation::TrilinosPayload>>
259 using PayloadBlockType =
261 using BlockPayload = TrilinosWrappers::internal::
262 BlockLinearOperatorImplementation::TrilinosBlockPayload<PayloadBlockType>;
264 block_diagonal_operator<Range, Domain, BlockPayload, BlockMatrix>(
283 template <std::
size_t m,
typename Range,
typename Domain = Range>
287 TrilinosWrappers::internal::BlockLinearOperatorImplementation::
288 TrilinosBlockPayload<TrilinosWrappers::internal::
289 LinearOperatorImplementation::TrilinosPayload>>
293 typename Domain::BlockType,
298 using PayloadBlockType =
300 using BlockPayload = TrilinosWrappers::internal::
301 BlockLinearOperatorImplementation::TrilinosBlockPayload<PayloadBlockType>;
302 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)