/******************************************************************************
 * Copyright (c) 1998 Lawrence Livermore National Security, LLC and other
 * HYPRE Project Developers. See the top-level COPYRIGHT file for details.
 *
 * SPDX-License-Identifier: (Apache-2.0 OR MIT)
 ******************************************************************************/

To create the smoothed aggregation or Ruge Stuben AMG methods,

1. instantiate the method (create smoothed aggregation AMG context)

   method = MLI_Method_CreateFromName( methodName, comm );
  
   where
      name = "AMGSA", "AMGRS", .. 
      comm = a MPI communicator

   or

   method = MLI_Method_CreateFromID( methodID, comm );

2. set the desired AMG parameters 

   method->setParams( param_string, argc, argv );

   param_string is one of : ( <d> - integer, <f> - floating point )
 
      setOutputLevel <d>
      setNumLevels <d>
      setCoarsenScheme <local>
      setMinCoarseSize <d>
      setStrengthThreshold <f?
      setPweight <f>
      setCalcSpectralNorm 
      setCalibrationSize <d>
      setPreSmoother  <Jacobi,GS,SGS,Schwarz,MLS,ParaSails>
      setPostSmoother <Jacobi,GS,SGS,Schwarz,MLS,ParaSails>
         argc = 2
         argv[0] = nsweeps
         argv[1] = weights
      setCoarseSolver <Jacobi,GS,SGS,Schwarz,ParaSails,SuperLU>
         argc = 2 (0 for SuperLU)
         argv[0] = nsweeps
         argv[1] = weights
      setNullSpace
         argc = 4;
         argv[0] = node degree of freedom\n";
         argv[1] = number of null space vectors\n";
         argv[2] = null space information\n";
         argv[3] = vector length\n";
      setNodalCoord
         argc = 3 (or 4 if matrix has been scaled);
         argv[0] = number of nodes
         argv[1] = node degree of freedom
         argv[2] = coordinates
         argv[3] = scalings 
      print

3. set up the grid hierarchy

   method->setup(mli);

4. to solve, call mli->solve

