pub struct LuOptions {
pub abs_pivot_tol: f64,
pub rel_pivot_tol: f64,
pub search_limit: usize,
pub growth_limit: f64,
pub fill_factor: f64,
pub refactor_interval: usize,
pub update_stability_tol: f64,
pub hyper_rhs_density: f64,
pub hyper_result_density: f64,
pub drop_tol: f64,
}Expand description
Options of the factorization, of the solves and of the update policy.
The names follow the contract (D-0080); the defaults are those of the
first edition (FactorOptions and the two fields of the solver’s
Tolerances it read), so a default Lu behaves exactly as the
first edition’s default Factor.
Fields§
§abs_pivot_tol: f64Absolute pivot tolerance τ_abs: no pivot of magnitude at or below
it is accepted, in the factorization or in an update (1e-10).
Absolute, in the units of B: an unscaled matrix whose columns
hold only tiny entries is declared singular. The Harwell–Boeing
matrix sherman3 has 2 107 of its 5 005 columns with largest entry
10⁻¹⁰ (inactive cells of a reservoir model) and is reported with
rank deficiency 2 107, while SuperLU, which has no absolute
threshold, factorizes it. Scale first (crate::Scaling: with
Geometric { max_iters: 4, power_of_two: true } it factorizes with
the defaults, residual 5·10⁻¹²), or lower τ_abs (10⁻¹²:
residual 7·10⁻¹⁷; task L1.5b, D9). The simplex method scales its
computational form when it is badly scaled (ScaleMode::Auto,
Chapter 6.9) before it factorizes.
rel_pivot_tol: f64Relative threshold u ∈ (0, 1] of Markowitz threshold pivoting
(1e-2; the solver’s Tolerances::markowitz).
search_limit: usizeNumber of lines with an acceptable entry after which the Markowitz
search stops (4, Zlatev’s restriction; at least 1).
growth_limit: f64Growth limit (1e10): the factor is flagged
(LuStats::growth_exceeded) when max |u_ij| / max |b_ij|
exceeds it, and an update asks for a refactorization when the
growth added by the updates, UpdateStats::update_growth,
exceeds it (Chapter 5.5, refactorization policy).
fill_factor: f64Fill trigger: an update asks for a refactorization when
nnz(L) + nnz(U) + nnz(etas) exceeds this multiple of
nnz(L) + nnz(U) right after the factorization (3.0).
refactor_interval: usizeNumber of updates after which a refactorization is requested
(100).
update_stability_tol: f64Relative tolerance of the Forrest–Tomlin stability test: the new
diagonal must agree with α_r · u_old within this relative
distance (1e-8).
hyper_rhs_density: f64Largest right-hand side density (count/m) for which a solve may
use the hypersparse algorithms (Chapter 5.4, policy (b); 0.10).
A negative value disables them.
hyper_result_density: f64Largest expected result density for which a solve may use the
hypersparse algorithms (Chapter 5.4, policy (c); 0.10).
drop_tol: f64Drop tolerance ε_drop: magnitudes at or below it are treated as
zero by the elimination and the update (1e-12; the solver’s
Tolerances::zero).