15#ifndef dealii_trilinos_linear_operator_h
16#define dealii_trilinos_linear_operator_h
20#ifdef DEAL_II_WITH_TRILINOS
32 class PreconditionBase;
37 namespace LinearOperatorImplementation
39 class TrilinosPayload;
42 namespace BlockLinearOperatorImplementation
44 template <
typename PayloadBlockType>
45 class TrilinosBlockPayload;
70 template <
typename Range,
typename Domain = Range,
typename Matrix>
82 linear_operator<Range, Domain, Payload, OperatorExemplar, Matrix>(
83 operator_exemplar, matrix);
100 template <
typename Range,
typename Domain = Range>
110 return ::linear_operator<Range, Domain, Payload, Matrix, Matrix>(
129 template <
typename Range,
typename Domain,
typename Matrix>
140 const Matrix &matrix)
146 linear_operator<Range, Domain, Payload, OperatorExemplar, Matrix>(
147 operator_exemplar, matrix);
170 template <
typename Range,
typename Domain = Range>
174 TrilinosWrappers::internal::BlockLinearOperatorImplementation::
175 TrilinosBlockPayload<TrilinosWrappers::internal::
176 LinearOperatorImplementation::TrilinosPayload>>
180 using PayloadBlockType =
182 using BlockPayload = TrilinosWrappers::internal::
183 BlockLinearOperatorImplementation::TrilinosBlockPayload<PayloadBlockType>;
184 return ::block_operator<Range, Domain, BlockPayload, BlockMatrix>(
203 template <std::size_t m,
206 typename Domain = Range>
210 TrilinosWrappers::internal::BlockLinearOperatorImplementation::
211 TrilinosBlockPayload<TrilinosWrappers::internal::
212 LinearOperatorImplementation::TrilinosPayload>>
217 typename Domain::BlockType,
219 LinearOperatorImplementation::TrilinosPayload>,
223 using PayloadBlockType =
225 using BlockPayload = TrilinosWrappers::internal::
226 BlockLinearOperatorImplementation::TrilinosBlockPayload<PayloadBlockType>;
227 return ::block_operator<m, n, Range, Domain, BlockPayload>(ops);
247 template <
typename Range,
typename Domain = Range>
251 TrilinosWrappers::internal::BlockLinearOperatorImplementation::
252 TrilinosBlockPayload<TrilinosWrappers::internal::
253 LinearOperatorImplementation::TrilinosPayload>>
258 using PayloadBlockType =
260 using BlockPayload = TrilinosWrappers::internal::
261 BlockLinearOperatorImplementation::TrilinosBlockPayload<PayloadBlockType>;
263 block_diagonal_operator<Range, Domain, BlockPayload, BlockMatrix>(
282 template <std::
size_t m,
typename Range,
typename Domain = Range>
286 TrilinosWrappers::internal::BlockLinearOperatorImplementation::
287 TrilinosBlockPayload<TrilinosWrappers::internal::
288 LinearOperatorImplementation::TrilinosPayload>>
292 typename Domain::BlockType,
297 using PayloadBlockType =
299 using BlockPayload = TrilinosWrappers::internal::
300 BlockLinearOperatorImplementation::TrilinosBlockPayload<PayloadBlockType>;
301 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)