47 #ifndef MUI_PRECONDITIONER_ILU_H_
48 #define MUI_PRECONDITIONER_ILU_H_
54 template<
typename ITYPE,
typename VTYPE>
61 for (ITYPE i = 0; i < A.
get_rows(); ++i) {
64 U_.set_value(i, i,
static_cast<VTYPE
>(1.0));
66 for (ITYPE j = 0; j < A.
get_cols(); ++j) {
77 for (ITYPE j1 = 0; j1 < L_.get_cols(); ++j1) {
79 for (ITYPE j2 = 0; j2 < U_.get_cols(); ++j2) {
81 L_.set_value(i, j2, (L_.get_value(i, j2) - (L_.get_value(i, j1) * U_.get_value(j1, j2))));
88 for (ITYPE j1 = 0; j1 < U_.get_cols(); ++j1) {
90 for (ITYPE j2 = 0; j2 < L_.get_cols(); ++j2) {
92 U_.set_value(i, j2, (U_.get_value(i, j2) / L_.get_value(j1, j1)));
101 template<
typename ITYPE,
typename VTYPE>
109 template<
typename ITYPE,
typename VTYPE>
112 "MUI Error [preconditioner_ilu.h]: apply only works for column vectors");
117 for (ITYPE i = 0; i < x.
get_rows(); ++i) {
119 for (ITYPE j = 0; j < L_.get_cols(); ++j) {
128 for (ITYPE i = x.
get_rows() - 1; i >= 0; i--) {
130 for (ITYPE j = 0; j < U_.get_cols(); ++j) {
incomplete_lu_preconditioner(const sparse_matrix< ITYPE, VTYPE > &)
Definition: preconditioner_ilu.h:55
sparse_matrix< ITYPE, VTYPE > apply(const sparse_matrix< ITYPE, VTYPE > &)
Definition: preconditioner_ilu.h:110
~incomplete_lu_preconditioner()
Definition: preconditioner_ilu.h:102
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
SCALAR sum(vexpr< E, SCALAR, D > const &u)
Definition: point.h:362