Package no.uib.cipr.matrix.sparse
Class SSOR
- java.lang.Object
-
- no.uib.cipr.matrix.sparse.SSOR
-
- All Implemented Interfaces:
Preconditioner
public class SSOR extends java.lang.Object implements Preconditioner
SSOR preconditioner. Uses symmetrical sucessive overrelaxation as a preconditioner. Meant for symmetrical, positive definite matrices. For best performance, omega must be carefully chosen (between 0 and 2).
-
-
Constructor Summary
Constructors Constructor Description SSOR(CompRowMatrix F)
Constructor for SSOR.SSOR(CompRowMatrix F, boolean reverse, double omegaF, double omegaR)
Constructor for SSOR
-
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.void
setOmega(double omegaF, double omegaR)
Sets the overrelaxation parametersVector
transApply(Vector b, Vector x)
Solves the approximate transpose problem with the given right hand side.
-
-
-
Constructor Detail
-
SSOR
public SSOR(CompRowMatrix F, boolean reverse, double omegaF, double omegaR)
Constructor for SSOR- Parameters:
F
- Matrix to use internally. It will not be modified, thus the system matrix may be passedreverse
- True to perform a reverse sweep as well as the forward sweep. If false, this preconditioner becomes the SOR method insteadomegaF
- Overrelaxation parameter for the forward sweep. Between 0 and 2.omegaR
- Overrelaxation parameter for the backwards sweep. Between 0 and 2.
-
SSOR
public SSOR(CompRowMatrix F)
Constructor for SSOR. Usesomega=1
with a backwards sweep- Parameters:
F
- Matrix to use internally. It will not be modified, thus the system matrix may be passed
-
-
Method Detail
-
setOmega
public void setOmega(double omegaF, double omegaR)
Sets the overrelaxation parameters- Parameters:
omegaF
- Overrelaxation parameter for the forward sweep. Between 0 and 2.omegaR
- Overrelaxation parameter for the backwards sweep. Between 0 and 2.
-
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
-
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
-
-