Ifpack2: Added equilibration demo
Created by: mhoemmen
I added an equilibration demo as an Ifpack2 unit test. "Equilibration" means row and column scaling: both computing one-norms of rows and columns, and actually modifying the matrix (left and/or right scaling it).
I made this an Ifpack2 demo, because I'm not sure where this capability should go. It doesn't belong in Belos, because Belos is supposed to be agnostic of the linear algebra implementation. I'm not sure if it goes in Ifpack2, because it's not a preconditioner -- it's supposed to be a pre-processing and post-processing step for linear solves. I'm not sure if it goes in Tpetra, because it's more of a solver-related thing. So, y'all can help me decide :-D . Meanwhile, here's the code, ready for customers to try out.
@trilinos/ifpack2 @trilinos/tpetra
Description
Demonstration of equilibration.
- Symmetric case: square root of row one norms
- Nonsymmetric case: like LAPACK's DGEEQU, but one norms instead of infinity norms
- Left and right scaling (actually modifying the CrsMatrix) also implemented
- It's all thread parallel and tested with OpenMP
Motivation and Context
Applications want more robust Ifpack2 preconditioning. AztecOO has various matrix scaling options (see AZ_scaling
). This imitates AZ_sym_row_sum
for the symmetric case.