Class 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 parameters
      Vector transApply​(Vector b, Vector x)
      Solves the approximate transpose problem with the given right hand side.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • 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 passed
        reverse - True to perform a reverse sweep as well as the forward sweep. If false, this preconditioner becomes the SOR method instead
        omegaF - 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. Uses omega=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 interface Preconditioner
        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 interface Preconditioner
        Parameters:
        b - Right hand side of problem
        x - 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 interface Preconditioner
        Parameters:
        b - Right hand side of problem
        x - Result is stored here
        Returns:
        x