16#ifndef dealii_trilinos_linear_operator_h
17#define dealii_trilinos_linear_operator_h
21#if defined(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>
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>(
135 template <
typename Range,
typename Domain = Range>
139 TrilinosWrappers::internal::BlockLinearOperatorImplementation::
140 TrilinosBlockPayload<TrilinosWrappers::internal::
141 LinearOperatorImplementation::TrilinosPayload>>
145 using PayloadBlockType =
147 using BlockPayload = TrilinosWrappers::internal::
148 BlockLinearOperatorImplementation::TrilinosBlockPayload<PayloadBlockType>;
149 return ::block_operator<Range, Domain, BlockPayload, BlockMatrix>(
168 template <std::size_t m,
171 typename Domain = Range>
175 TrilinosWrappers::internal::BlockLinearOperatorImplementation::
176 TrilinosBlockPayload<TrilinosWrappers::internal::
177 LinearOperatorImplementation::TrilinosPayload>>
182 typename Domain::BlockType,
184 LinearOperatorImplementation::TrilinosPayload>,
188 using PayloadBlockType =
190 using BlockPayload = TrilinosWrappers::internal::
191 BlockLinearOperatorImplementation::TrilinosBlockPayload<PayloadBlockType>;
192 return ::block_operator<m, n, Range, Domain, BlockPayload>(ops);
212 template <
typename Range,
typename Domain = Range>
216 TrilinosWrappers::internal::BlockLinearOperatorImplementation::
217 TrilinosBlockPayload<TrilinosWrappers::internal::
218 LinearOperatorImplementation::TrilinosPayload>>
223 using PayloadBlockType =
225 using BlockPayload = TrilinosWrappers::internal::
226 BlockLinearOperatorImplementation::TrilinosBlockPayload<PayloadBlockType>;
228 block_diagonal_operator<Range, Domain, BlockPayload, BlockMatrix>(
247 template <std::
size_t m,
typename Range,
typename Domain = Range>
251 TrilinosWrappers::internal::BlockLinearOperatorImplementation::
252 TrilinosBlockPayload<TrilinosWrappers::internal::
253 LinearOperatorImplementation::TrilinosPayload>>
257 typename Domain::BlockType,
262 using PayloadBlockType =
264 using BlockPayload = TrilinosWrappers::internal::
265 BlockLinearOperatorImplementation::TrilinosBlockPayload<PayloadBlockType>;
266 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 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)
@ matrix
Contents is actually a matrix.
BlockSparseMatrix< double > BlockSparseMatrix
SparseMatrix< double > SparseMatrix