# 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.