47 #ifndef MUI_PRECONDITIONER_SSOR_H_
48 #define MUI_PRECONDITIONER_SSOR_H_
57 template<
typename ITYPE,
typename VTYPE>
59 : A_(A), omega_(omega) {}
62 template<
typename ITYPE,
typename VTYPE>
71 template<
typename ITYPE,
typename VTYPE>
74 "MUI Error [preconditioner_ssor.h]: apply only works for column vectors");
79 for (ITYPE i = 0; i < A_.get_rows(); ++i) {
81 for (ITYPE j = 0; j < A_.get_cols(); ++j) {
86 "MUI Error [preconditioner_ssor.h]: Divide by zero assert for omega_ * A_.get_value(i,j)");
93 for (ITYPE i = A_.get_rows() - 1; i >= 0; i--) {
95 for (ITYPE j = 0; j < A_.get_cols(); ++j) {
100 "MUI Error [preconditioner_ssor.h]: Divide by zero assert for A_.get_value(i,j)");
ITYPE get_rows() const
Definition: matrix_io_info.h:579
void set_value(ITYPE, ITYPE, VTYPE, bool=true)
Definition: matrix_manipulation.h:292
VTYPE get_value(ITYPE, ITYPE) const
Definition: matrix_io_info.h:523
ITYPE get_cols() const
Definition: matrix_io_info.h:585
sparse_matrix< ITYPE, VTYPE > apply(const sparse_matrix< ITYPE, VTYPE > &)
Definition: preconditioner_ssor.h:72
~symmetric_successive_over_relaxation_preconditioner()
Definition: preconditioner_ssor.h:63
symmetric_successive_over_relaxation_preconditioner(const sparse_matrix< ITYPE, VTYPE > &, VTYPE=1.0)
Definition: preconditioner_ssor.h:58
u u u u u u min
Definition: dim.h:289
SCALAR sum(vexpr< E, SCALAR, D > const &u)
Definition: point.h:362