31class BlockJacobiPreconditioner :
public PreconditionerBase<typename Operator::value_type>
34 typedef typename PreconditionerBase<typename Operator::value_type>::VectorType VectorType;
36 BlockJacobiPreconditioner(Operator
const & underlying_operator_in,
bool const initialize)
37 : underlying_operator(underlying_operator_in)
40 underlying_operator.initialize_block_diagonal_preconditioner(initialize);
43 this->update_needed =
false;
54 underlying_operator.update_block_diagonal_preconditioner();
56 this->update_needed =
false;
65 vmult(VectorType & dst, VectorType
const & src)
const final
68 not this->update_needed,
70 "Block Jacobi preconditioner can not be applied because it needs to be updated."));
72 underlying_operator.apply_inverse_block_diagonal(dst, src);
76 Operator
const & underlying_operator;