Class 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 preconditioner
      AMG​(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.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • 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-smoothing
        omegaPreR - Overrelaxation parameter in the backwards sweep of the pre-smoothing
        omegaPostF - Overrelaxation parameter in the forward sweep of the post-smoothing
        omegaPostR - Overrelaxation parameter in the backwards sweep of the post-smoothing
        nu1 - Number of pre-relaxations to perform
        nu2 - Number of post-relaxations to perform
        gamma - Number of times to go to a coarser level
        min - Smallest matrix size before using a direct solver
        omega - 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-smoothing
        omegaPost - Overrelaxation parameter in the post-smoothing
        nu1 - Number of pre-relaxations to perform
        nu2 - Number of post-relaxations to perform
        gamma - Number of times to go to a coarser level
        min - Smallest matrix size before using a direct solver
        omega - 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 and omegaR=1.85, while in the postsmoothing, omegaF=1.85 and omegaR=1. Sets nu1=nu2=gamma=1, has a smallest matrix size of 40, and sets omega=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 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
      • 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