For most situations, RelaxValue should be set to zero. For certain kinds of problems, e.g., reservoir modeling, there is a conservation principle involved such that any operator should obey a zero row-sum property. MILU was designed for these cases and you should set the RelaxValue to 1. For other situations, setting RelaxValue to some nonzero value may improve the stability of factorization, and can be used if the computed ILU factors are poorly conditioned.
Given the above method to estimate the conditioning of the incomplete factors, if we detect that our factorization is too ill-conditioned we can improve the conditioning by perturbing the matrix diagonal and restarting the factorization using this more diagonally dominant matrix. In order to apply perturbation, prior to starting the factorization, we compute a diagonal perturbation of our matrix
and perform the factorization on this perturbed matrix. The overhead cost of perturbing the diagonal is minimal since the first step in computing the incomplete factors is to copy the matrix
into the memory space for the incomplete factors. We simply compute the perturbed diagonal at this point. The actual perturbation values we use are the diagonal values
with
,
, where
is the matrix dimension and
returns the sign of the diagonal entry. This has the effect of forcing the diagonal values to have minimal magnitude of
and to increase each by an amount proportional to
, and still keep the sign of the original diagonal entry.
1.4.7