#include "slepceps.h" PetscErrorCode EPSSetBalance(EPS eps,EPSBalance bal,PetscInt its,PetscReal cutoff)Logically Collective
eps | - the eigensolver context | |
bal | - the balancing method, one of EPS_BALANCE_NONE, EPS_BALANCE_ONESIDE, EPS_BALANCE_TWOSIDE, or EPS_BALANCE_USER | |
its | - number of iterations of the balancing algorithm | |
cutoff | - cutoff value |
-eps_balance <method> | - the balancing method, where <method> is one of 'none', 'oneside', 'twoside', or 'user' | |
-eps_balance_its <its> | - number of iterations | |
-eps_balance_cutoff <cutoff> | - cutoff value |
Balancing makes sense only for non-Hermitian problems when the required precision is high (i.e. a small tolerance such as 1e-15).
By default, balancing is disabled. The two-sided method is much more effective than the one-sided counterpart, but it requires the system matrices to have the MatMultTranspose operation defined.
The parameter 'its' is the number of iterations performed by the method. The cutoff value is used only in the two-side variant. Use PETSC_DETERMINE to assign a reasonably good value, or PETSC_CURRENT to leave the value unchanged.
User-defined balancing is allowed provided that the corresponding matrix is set via STSetBalanceMatrix.