From a39cecc555a97d24e941fda602b28431ecc81a79 Mon Sep 17 00:00:00 2001 From: "Victor A. P. Magri" <50467563+victorapm@users.noreply.github.com> Date: Sat, 17 Jun 2023 22:21:37 -0400 Subject: [PATCH] Fix compilation error (#929) This PR fixes a compilation error that arises in PETSc when hypre is used --- src/parcsr_ls/_hypre_parcsr_ls.h | 2 +- src/parcsr_ls/par_ilu.c | 21 +++++++++++---------- src/parcsr_ls/protos.h | 2 +- 3 files changed, 13 insertions(+), 12 deletions(-) diff --git a/src/parcsr_ls/_hypre_parcsr_ls.h b/src/parcsr_ls/_hypre_parcsr_ls.h index f15d1d7a3..d73583833 100644 --- a/src/parcsr_ls/_hypre_parcsr_ls.h +++ b/src/parcsr_ls/_hypre_parcsr_ls.h @@ -3710,7 +3710,7 @@ HYPRE_Int hypre_ILUMinHeapRemoveIIIi( HYPRE_Int *heap, HYPRE_Int *I1, HYPRE_Int hypre_ILUMinHeapRemoveIRIi( HYPRE_Int *heap, HYPRE_Real *I1, HYPRE_Int *Ii1, HYPRE_Int len ); HYPRE_Int hypre_ILUMaxrHeapRemoveRabsI( HYPRE_Real *heap, HYPRE_Int *I1, HYPRE_Int len ); -HYPRE_Int hypre_ILUMaxQSplitRabsI( HYPRE_Real *array, HYPRE_Int *I, HYPRE_Int left, +HYPRE_Int hypre_ILUMaxQSplitRabsI( HYPRE_Real *arrayR, HYPRE_Int *arrayI, HYPRE_Int left, HYPRE_Int bound, HYPRE_Int right ); HYPRE_Int hypre_ILUMaxRabs( HYPRE_Real *array_data, HYPRE_Int *array_j, HYPRE_Int start, HYPRE_Int end, HYPRE_Int nLU, HYPRE_Int *rperm, HYPRE_Real *value, diff --git a/src/parcsr_ls/par_ilu.c b/src/parcsr_ls/par_ilu.c index 278561d3f..532344a6f 100644 --- a/src/parcsr_ls/par_ilu.c +++ b/src/parcsr_ls/par_ilu.c @@ -1452,15 +1452,16 @@ hypre_ILUMaxrHeapRemoveRabsI(HYPRE_Real *heap, HYPRE_Int *I1, HYPRE_Int len) * * Split based on quick sort algorithm (avoid sorting the entire array) * find the largest k elements out of original array - * array: input array for compare - * I: integer array bind with array + * + * arrayR: input array for compare + * arrayI: integer array bind with array * k: largest k elements * len: length of the array *--------------------------------------------------------------------------*/ HYPRE_Int -hypre_ILUMaxQSplitRabsI(HYPRE_Real *array, - HYPRE_Int *I, +hypre_ILUMaxQSplitRabsI(HYPRE_Real *arrayR, + HYPRE_Int *arrayI, HYPRE_Int left, HYPRE_Int bound, HYPRE_Int right) @@ -1472,21 +1473,21 @@ hypre_ILUMaxQSplitRabsI(HYPRE_Real *array, return hypre_error_flag; } - hypre_swap2(I, array, left, (left + right) / 2); + hypre_swap2(arrayI, arrayR, left, (left + right) / 2); last = left; for (i = left + 1 ; i <= right ; i ++) { - if (hypre_abs(array[i]) > hypre_abs(array[left])) + if (hypre_abs(arrayR[i]) > hypre_abs(arrayR[left])) { - hypre_swap2(I, array, ++last, i); + hypre_swap2(arrayI, arrayR, ++last, i); } } - hypre_swap2(I, array, left, last); - hypre_ILUMaxQSplitRabsI(array, I, left, bound, last - 1); + hypre_swap2(arrayI, arrayR, left, last); + hypre_ILUMaxQSplitRabsI(arrayR, arrayI, left, bound, last - 1); if (bound > last) { - hypre_ILUMaxQSplitRabsI(array, I, last + 1, bound, right); + hypre_ILUMaxQSplitRabsI(arrayR, arrayI, last + 1, bound, right); } return hypre_error_flag; diff --git a/src/parcsr_ls/protos.h b/src/parcsr_ls/protos.h index 0e2dc3490..db786f5e1 100644 --- a/src/parcsr_ls/protos.h +++ b/src/parcsr_ls/protos.h @@ -2325,7 +2325,7 @@ HYPRE_Int hypre_ILUMinHeapRemoveIIIi( HYPRE_Int *heap, HYPRE_Int *I1, HYPRE_Int hypre_ILUMinHeapRemoveIRIi( HYPRE_Int *heap, HYPRE_Real *I1, HYPRE_Int *Ii1, HYPRE_Int len ); HYPRE_Int hypre_ILUMaxrHeapRemoveRabsI( HYPRE_Real *heap, HYPRE_Int *I1, HYPRE_Int len ); -HYPRE_Int hypre_ILUMaxQSplitRabsI( HYPRE_Real *array, HYPRE_Int *I, HYPRE_Int left, +HYPRE_Int hypre_ILUMaxQSplitRabsI( HYPRE_Real *arrayR, HYPRE_Int *arrayI, HYPRE_Int left, HYPRE_Int bound, HYPRE_Int right ); HYPRE_Int hypre_ILUMaxRabs( HYPRE_Real *array_data, HYPRE_Int *array_j, HYPRE_Int start, HYPRE_Int end, HYPRE_Int nLU, HYPRE_Int *rperm, HYPRE_Real *value,