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;
72 template <
typename Range,
typename Domain = Range,
typename Matrix>
84 linear_operator<Range, Domain, Payload, OperatorExemplar, Matrix>(
85 operator_exemplar,
matrix);
103 template <
typename Range,
typename Domain = Range>
113 return ::linear_operator<Range, Domain, Payload, Matrix, Matrix>(
138 template <
typename Range,
typename Domain = Range>
142 TrilinosWrappers::internal::BlockLinearOperatorImplementation::
143 TrilinosBlockPayload<TrilinosWrappers::internal::
144 LinearOperatorImplementation::TrilinosPayload>>
148 using PayloadBlockType =
150 using BlockPayload = TrilinosWrappers::internal::
151 BlockLinearOperatorImplementation::TrilinosBlockPayload<PayloadBlockType>;
152 return ::block_operator<Range, Domain, BlockPayload, BlockMatrix>(
172 template <std::size_t m,
175 typename Domain = Range>
179 TrilinosWrappers::internal::BlockLinearOperatorImplementation::
180 TrilinosBlockPayload<TrilinosWrappers::internal::
181 LinearOperatorImplementation::TrilinosPayload>>
186 typename Domain::BlockType,
188 LinearOperatorImplementation::TrilinosPayload>,
192 using PayloadBlockType =
194 using BlockPayload = TrilinosWrappers::internal::
195 BlockLinearOperatorImplementation::TrilinosBlockPayload<PayloadBlockType>;
196 return ::block_operator<m, n, Range, Domain, BlockPayload>(ops);
217 template <
typename Range,
typename Domain = Range>
221 TrilinosWrappers::internal::BlockLinearOperatorImplementation::
222 TrilinosBlockPayload<TrilinosWrappers::internal::
223 LinearOperatorImplementation::TrilinosPayload>>
228 using PayloadBlockType =
230 using BlockPayload = TrilinosWrappers::internal::
231 BlockLinearOperatorImplementation::TrilinosBlockPayload<PayloadBlockType>;
233 block_diagonal_operator<Range, Domain, BlockPayload, BlockMatrix>(
253 template <std::
size_t m,
typename Range,
typename Domain = Range>
257 TrilinosWrappers::internal::BlockLinearOperatorImplementation::
258 TrilinosBlockPayload<TrilinosWrappers::internal::
259 LinearOperatorImplementation::TrilinosPayload>>
263 typename Domain::BlockType,
268 using PayloadBlockType =
270 using BlockPayload = TrilinosWrappers::internal::
271 BlockLinearOperatorImplementation::TrilinosBlockPayload<PayloadBlockType>;
272 return ::block_diagonal_operator<m, Range, Domain, BlockPayload>(ops);
281 #endif // DEAL_II_WITH_TRILINOS