34class JacobiPreconditioner :
public PreconditionerBase<typename Operator::value_type>
37 typedef typename PreconditionerBase<typename Operator::value_type>::VectorType VectorType;
39 JacobiPreconditioner(Operator
const & underlying_operator_in,
bool const initialize)
40 : underlying_operator(underlying_operator_in)
42 underlying_operator.initialize_dof_vector(inverse_diagonal);
51 vmult(VectorType & dst, VectorType
const & src)
const final
53 if(dealii::PointerComparison::equal(&dst, &src))
55 dst.scale(inverse_diagonal);
59 for(
unsigned int i = 0; i < dst.locally_owned_size(); ++i)
60 dst.local_element(i) = inverse_diagonal.local_element(i) * src.local_element(i);
65 get_size_of_diagonal()
67 return inverse_diagonal.size();
73 underlying_operator.calculate_inverse_diagonal(inverse_diagonal);
75 this->update_needed =
false;
79 Operator
const & underlying_operator;
81 VectorType inverse_diagonal;