Package no.uib.cipr.matrix.sparse
Class AMG
- java.lang.Object
-
- no.uib.cipr.matrix.sparse.AMG
-
- All Implemented Interfaces:
Preconditioner
public class AMG extends java.lang.Object implements Preconditioner
Algebraic multigrid preconditioner. Uses the smoothed aggregation method described by Vanek, Mandel, and Brezina (1996).
-
-
Constructor Summary
Constructors Constructor Description AMG()
Sets up the algebraic multigrid preconditioner using some default parameters.AMG(double omegaPreF, double omegaPreR, double omegaPostF, double omegaPostR, int nu1, int nu2, int gamma, int min, double omega)
Sets up the algebraic multigrid preconditionerAMG(double omegaPre, double omegaPost, int nu1, int nu2, int gamma, int min, double omega)
Sets up the algebraic multigrid preconditioner.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description Vector
apply(Vector b, Vector x)
Solves the approximate problem with the given right hand side.void
setMatrix(Matrix A)
Sets the operator matrix for the preconditioner.Vector
transApply(Vector b, Vector x)
Solves the approximate transpose problem with the given right hand side.
-
-
-
Constructor Detail
-
AMG
public AMG(double omegaPreF, double omegaPreR, double omegaPostF, double omegaPostR, int nu1, int nu2, int gamma, int min, double omega)
Sets up the algebraic multigrid preconditioner- Parameters:
omegaPreF
- Overrelaxation parameter in the forward sweep of the pre-smoothingomegaPreR
- Overrelaxation parameter in the backwards sweep of the pre-smoothingomegaPostF
- Overrelaxation parameter in the forward sweep of the post-smoothingomegaPostR
- Overrelaxation parameter in the backwards sweep of the post-smoothingnu1
- Number of pre-relaxations to performnu2
- Number of post-relaxations to performgamma
- Number of times to go to a coarser levelmin
- Smallest matrix size before using a direct solveromega
- Jacobi damping parameter, between zero and one. If it equals zero, the method reduces to the standard aggregate multigrid method
-
AMG
public AMG(double omegaPre, double omegaPost, int nu1, int nu2, int gamma, int min, double omega)
Sets up the algebraic multigrid preconditioner. Uses an SOR method, without the backward sweep in SSOR- Parameters:
omegaPre
- Overrelaxation parameter in the pre-smoothingomegaPost
- Overrelaxation parameter in the post-smoothingnu1
- Number of pre-relaxations to performnu2
- Number of post-relaxations to performgamma
- Number of times to go to a coarser levelmin
- Smallest matrix size before using a direct solveromega
- Jacobi damping parameter, between zero and one. If it equals zero, the method reduces to the standard aggregate multigrid method
-
AMG
public AMG()
Sets up the algebraic multigrid preconditioner using some default parameters. In the presmoothing,omegaF=1
andomegaR=1.85
, while in the postsmoothing,omegaF=1.85
andomegaR=1
. Setsnu1=nu2=gamma=1
, has a smallest matrix size of 40, and setsomega=2/3
.
-
-
Method Detail
-
apply
public Vector apply(Vector b, Vector x)
Description copied from interface:Preconditioner
Solves the approximate problem with the given right hand side. Result is stored in given solution vector- Specified by:
apply
in interfacePreconditioner
- Parameters:
b
- Right hand side of problemx
- Result is stored here- Returns:
- x
-
transApply
public Vector transApply(Vector b, Vector x)
Description copied from interface:Preconditioner
Solves the approximate transpose problem with the given right hand side. Result is stored in given solution vector- Specified by:
transApply
in interfacePreconditioner
- Parameters:
b
- Right hand side of problemx
- Result is stored here- Returns:
- x
-
setMatrix
public void setMatrix(Matrix A)
Description copied from interface:Preconditioner
Sets the operator matrix for the preconditioner. This method must be called before a preconditioner is used by an iterative solver- Specified by:
setMatrix
in interfacePreconditioner
- Parameters:
A
- Matrix to setup the preconditioner for. Not modified
-
-