/* ******************************************************************** */
/* See the file COPYRIGHT for a complete copyright notice, contact      */
/* person and disclaimer.                                               */
/* ******************************************************************** */

Usage of this module :

1. No customization

   - create a ML object
   - ......
   - call ML_Gen_MGHierarchy_UsingAggregation(ml, level, ML_INCREMENT, NULL)

2. Customization

   - create a ML object
   - ......
   - create an ML_Aggregate object if customization is needed
   - call ML_Gen_MGHierarchy_UsingAggregation(ml, level, ML_INCREMENT, ag)

   Example code :
       ML_Aggregate *ag;
       ML_Aggregate_Create(&ag);
       ML_Aggregate_Set_GraphOrdering( ag );
       ML_Aggregate_Set_AttachScheme_MinRank( ag );
       ML_Aggregate_Set_MaxCoarseSize( ag, 10 );
       ML_Aggregate_Set_CoarsenScheme_Uncoupled( ag );
       ML_Aggregate_Set_Threshold( ag, 0.8 );
       ML_Aggregate_Set_DampingFactor( ag, 1.3333 );
       int ML_Aggregate_Set_PSmootherType( ag, 0 );
       int ML_Aggregate_Set_NullSpace( ag, nNull, length, vals, nPDE);
       ..
       ML_Gen_MGHierarchy_UsingAggregation(ml, level, ML_INCREMENT, ag)
       ..
       ML_Aggregate_Destroy( &ag );



