30class BlockJacobiPreconditioner :
public PreconditionerBase<typename Operator::value_type>
33 typedef typename PreconditionerBase<typename Operator::value_type>::VectorType VectorType;
35 BlockJacobiPreconditioner(Operator
const & underlying_operator_in,
bool const initialize)
36 : underlying_operator(underlying_operator_in)
39 underlying_operator.initialize_block_diagonal_preconditioner(initialize);
42 this->update_needed =
false;
53 underlying_operator.update_block_diagonal_preconditioner();
55 this->update_needed =
false;
64 vmult(VectorType & dst, VectorType
const & src)
const final
67 not this->update_needed,
69 "Block Jacobi preconditioner can not be applied because it needs to be updated."));
71 underlying_operator.apply_inverse_block_diagonal(dst, src);
75 Operator
const & underlying_operator;