16 #ifndef dealii_trilinos_linear_operator_h 17 #define dealii_trilinos_linear_operator_h 19 #include <deal.II/base/config.h> 21 #if defined(DEAL_II_WITH_TRILINOS) 23 # include <deal.II/lac/block_linear_operator.h> 24 # include <deal.II/lac/linear_operator.h> 26 DEAL_II_NAMESPACE_OPEN
32 class PreconditionBase;
37 namespace LinearOperatorImplementation
39 class TrilinosPayload;
42 namespace BlockLinearOperatorImplementation
44 template <
typename PayloadBlockType>
45 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);
102 template <
typename Range,
typename Domain = Range>
112 return ::linear_operator<Range, Domain, Payload, Matrix, Matrix>(
137 template <
typename Range,
typename Domain = Range>
141 TrilinosWrappers::internal::BlockLinearOperatorImplementation::
142 TrilinosBlockPayload<TrilinosWrappers::internal::
143 LinearOperatorImplementation::TrilinosPayload>>
147 using PayloadBlockType =
149 using BlockPayload = TrilinosWrappers::internal::
150 BlockLinearOperatorImplementation::TrilinosBlockPayload<PayloadBlockType>;
151 return ::block_operator<Range, Domain, BlockPayload, BlockMatrix>(
171 template <std::size_t m,
174 typename Domain = Range>
178 TrilinosWrappers::internal::BlockLinearOperatorImplementation::
179 TrilinosBlockPayload<TrilinosWrappers::internal::
180 LinearOperatorImplementation::TrilinosPayload>>
185 typename Domain::BlockType,
187 LinearOperatorImplementation::TrilinosPayload>,
191 using PayloadBlockType =
193 using BlockPayload = TrilinosWrappers::internal::
194 BlockLinearOperatorImplementation::TrilinosBlockPayload<PayloadBlockType>;
195 return ::block_operator<m, n, Range, Domain, BlockPayload>(ops);
216 template <
typename Range,
typename Domain = Range>
220 TrilinosWrappers::internal::BlockLinearOperatorImplementation::
221 TrilinosBlockPayload<TrilinosWrappers::internal::
222 LinearOperatorImplementation::TrilinosPayload>>
227 using PayloadBlockType =
229 using BlockPayload = TrilinosWrappers::internal::
230 BlockLinearOperatorImplementation::TrilinosBlockPayload<PayloadBlockType>;
232 block_diagonal_operator<Range, Domain, BlockPayload, BlockMatrix>(
252 template <std::
size_t m,
typename Range,
typename Domain = Range>
256 TrilinosWrappers::internal::BlockLinearOperatorImplementation::
257 TrilinosBlockPayload<TrilinosWrappers::internal::
258 LinearOperatorImplementation::TrilinosPayload>>
262 typename Domain::BlockType,
267 using PayloadBlockType =
269 using BlockPayload = TrilinosWrappers::internal::
270 BlockLinearOperatorImplementation::TrilinosBlockPayload<PayloadBlockType>;
271 return ::block_diagonal_operator<m, Range, Domain, BlockPayload>(ops);
278 DEAL_II_NAMESPACE_CLOSE
280 #endif // DEAL_II_WITH_TRILINOS LinearOperator< Range, Domain, TrilinosWrappers::internal::LinearOperatorImplementation::TrilinosPayload > linear_operator(const TrilinosWrappers::SparseMatrix &operator_exemplar, const Matrix &matrix)
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_diagonal_operator(const TrilinosWrappers::BlockSparseMatrix &block_matrix)