added the parameter CF_init to hypre_BoomerAMGCoarsen as well as the

capability to pass in CF_marker, CF_init indicates whether CF_marker
is passed in (CF_init = 1) and contains the first independent set to
be used for the CLJP coarsening. If CF_init = 0, CF_marker is allocated
and the first independent set genertaed within the routine.

simplified the routine hypre_BoomerAMGCoarsenFalgout to only contain
two function calls and added the parameter measure_type, which enables
us to also use global measures (if measure_type = 0).
This commit is contained in:
ulrikey 2000-07-13 18:47:20 +00:00
parent 2fdf9549c6
commit ddd98588e5
6 changed files with 200 additions and 2216 deletions

View File

@ -171,7 +171,7 @@ hypre_BoomerAMGSetup( void *amg_vdata,
strong_threshold, max_row_sum, &S);
if (coarsen_type == 6)
{
hypre_BoomerAMGCoarsenFalgout(S, A_array[level],
hypre_BoomerAMGCoarsenFalgout(S, A_array[level], measure_type,
debug_flag, &CF_marker, &coarse_size);
}
else if (coarsen_type)
@ -182,7 +182,7 @@ hypre_BoomerAMGSetup( void *amg_vdata,
}
else
{
hypre_BoomerAMGCoarsen(S, A_array[level],
hypre_BoomerAMGCoarsen(S, A_array[level], 0,
debug_flag, &CF_marker, &coarse_size);
}

File diff suppressed because it is too large Load Diff

View File

@ -298,9 +298,9 @@ int hypre_BoomerAMGCycleT( void *amg_vdata , hypre_ParVector **F_array , hypre_P
int hypre_BoomerAMGRelaxT( hypre_ParCSRMatrix *A , hypre_ParVector *f , int *cf_marker , int relax_type , int relax_points , double relax_weight , hypre_ParVector *u , hypre_ParVector *Vtemp );
/* par_coarsen.c */
int hypre_BoomerAMGCoarsen( hypre_ParCSRMatrix *S , hypre_ParCSRMatrix *A , int debug_flag , int **CF_marker_ptr , int *coarse_size_ptr );
int hypre_BoomerAMGCoarsen( hypre_ParCSRMatrix *S , hypre_ParCSRMatrix *A , int CF_init , int debug_flag , int **CF_marker_ptr , int *coarse_size_ptr );
int hypre_BoomerAMGCoarsenRuge( hypre_ParCSRMatrix *S , hypre_ParCSRMatrix *A , int measure_type , int coarsen_type , int debug_flag , int **CF_marker_ptr , int *coarse_size_ptr );
int hypre_BoomerAMGCoarsenFalgout( hypre_ParCSRMatrix *S , hypre_ParCSRMatrix *A , int debug_flag , int **CF_marker_ptr , int *coarse_size_ptr );
int hypre_BoomerAMGCoarsenFalgout( hypre_ParCSRMatrix *S , hypre_ParCSRMatrix *A , int measure_type , int debug_flag , int **CF_marker_ptr , int *coarse_size_ptr );
/* par_cycle.c */
int hypre_BoomerAMGCycle( void *amg_vdata , hypre_ParVector **F_array , hypre_ParVector **U_array );

View File

@ -171,7 +171,7 @@ hypre_BoomerAMGSetup( void *amg_vdata,
strong_threshold, max_row_sum, &S);
if (coarsen_type == 6)
{
hypre_BoomerAMGCoarsenFalgout(S, A_array[level],
hypre_BoomerAMGCoarsenFalgout(S, A_array[level], measure_type,
debug_flag, &CF_marker, &coarse_size);
}
else if (coarsen_type)
@ -182,7 +182,7 @@ hypre_BoomerAMGSetup( void *amg_vdata,
}
else
{
hypre_BoomerAMGCoarsen(S, A_array[level],
hypre_BoomerAMGCoarsen(S, A_array[level], 0,
debug_flag, &CF_marker, &coarse_size);
}

File diff suppressed because it is too large Load Diff

View File

@ -298,9 +298,9 @@ int hypre_BoomerAMGCycleT( void *amg_vdata , hypre_ParVector **F_array , hypre_P
int hypre_BoomerAMGRelaxT( hypre_ParCSRMatrix *A , hypre_ParVector *f , int *cf_marker , int relax_type , int relax_points , double relax_weight , hypre_ParVector *u , hypre_ParVector *Vtemp );
/* par_coarsen.c */
int hypre_BoomerAMGCoarsen( hypre_ParCSRMatrix *S , hypre_ParCSRMatrix *A , int debug_flag , int **CF_marker_ptr , int *coarse_size_ptr );
int hypre_BoomerAMGCoarsen( hypre_ParCSRMatrix *S , hypre_ParCSRMatrix *A , int CF_init , int debug_flag , int **CF_marker_ptr , int *coarse_size_ptr );
int hypre_BoomerAMGCoarsenRuge( hypre_ParCSRMatrix *S , hypre_ParCSRMatrix *A , int measure_type , int coarsen_type , int debug_flag , int **CF_marker_ptr , int *coarse_size_ptr );
int hypre_BoomerAMGCoarsenFalgout( hypre_ParCSRMatrix *S , hypre_ParCSRMatrix *A , int debug_flag , int **CF_marker_ptr , int *coarse_size_ptr );
int hypre_BoomerAMGCoarsenFalgout( hypre_ParCSRMatrix *S , hypre_ParCSRMatrix *A , int measure_type , int debug_flag , int **CF_marker_ptr , int *coarse_size_ptr );
/* par_cycle.c */
int hypre_BoomerAMGCycle( void *amg_vdata , hypre_ParVector **F_array , hypre_ParVector **U_array );