Skip to content

Ifpack2: Added equilibration demo

James Willenbring requested to merge Ifpack2-Equilibration into develop

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


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.

Merge request reports