Module ojalgo

Class SSORPreconditioner

  • All Implemented Interfaces:
    Preconditioner

    public final class SSORPreconditioner
    extends java.lang.Object
    implements Preconditioner
    Symmetric Successive Over-Relaxation (SSOR) preconditioner with relaxation factor omega (ω).

    For ω = 1 this reduces to a symmetric Gauss–Seidel (forward + backward) sweep – a common choice for SPD systems with suitable variable ordering.

    The applied effect is an approximate M^{-1} with the classic form (D/ω + L) D^{-1} (D/ω + U) scaled by (2 - ω)/ω, implemented via forward and backward triangular sweeps.

    Compatibility and guidance

    • Symmetric by construction; typically positive-definite for SPD A when 0 < ω < 2.
    • Useful for methods that expect a symmetric (often SPD) preconditioner.
    • Can be used as a right-preconditioner in methods for general nonsymmetric systems where symmetry of M is acceptable or desired.
    • Stationary fixed-point methods that ignore preconditioners will not use this.
    • Field Detail

      • myOmega

        private double myOmega
      • myWorkY

        private transient R064Store myWorkY
      • myWorkZ

        private transient R064Store myWorkZ
      • myEquations

        private transient java.util.List<Equation> myEquations
      • myDim

        private int myDim
    • Constructor Detail

      • SSORPreconditioner

        public SSORPreconditioner()
    • Method Detail

      • prepare

        public void prepare​(java.util.List<Equation> equations,
                            int dimension)
        Description copied from interface: Preconditioner
        Prepare internal structures for a specific system. Implementations may analyse sparsity or extract diagonals/factors here.
        Specified by:
        prepare in interface Preconditioner
        Parameters:
        equations - The active set of rows constituting the system body.
        dimension - The vector dimension (number of variables / size of solution vector).