xref: /petsc/src/mat/graphops/partition/ftn-custom/zpartitionf.c (revision 18839329aaeb3ce9cd40c4ea53e02f28ec2a1604)
1 #include <../src/mat/impls/adj/mpi/mpiadj.h>
2 #include <petsc/private/fortranimpl.h>
3 #include <petscmat.h>
4 
5 #if defined(PETSC_HAVE_FORTRAN_CAPS)
6   #define matpartitioningsetvertexweights_ MATPARTITIONINGSETVERTEXWEIGHTS
7   #define matpartitioningview_             MATPARTITIONINGVIEW
8   #define matpartitioningviewfromoptions_  MATPARTITIONINGVIEWFROMOPTIONS
9 #elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE)
10   #define matpartitioningsetvertexweights_ matpartitioningsetvertexweights
11   #define matpartitioningview_             matpartitioningview
12   #define matpartitioningviewfromoptions_  matpartitioningviewfromoptions
13 #endif
14 
15 PETSC_EXTERN void matpartitioningsetvertexweights_(MatPartitioning *part, const PetscInt weights[], PetscErrorCode *ierr)
16 {
17   PetscInt  len;
18   PetscInt *array;
19   *ierr = MatGetLocalSize((*part)->adj, &len, NULL);
20   if (*ierr) return;
21   *ierr = PetscMalloc1(len, &array);
22   if (*ierr) return;
23   *ierr = PetscArraycpy(array, weights, len);
24   if (*ierr) return;
25   *ierr = MatPartitioningSetVertexWeights(*part, array);
26 }
27 PETSC_EXTERN void matpartitioningview_(MatPartitioning *part, PetscViewer *viewer, PetscErrorCode *ierr)
28 {
29   PetscViewer v;
30   PetscPatchDefaultViewers_Fortran(viewer, v);
31   *ierr = MatPartitioningView(*part, v);
32 }
33 
34 PETSC_EXTERN void matpartitioningviewfromoptions_(MatPartitioning *ao, PetscObject obj, char *type, PetscErrorCode *ierr, PETSC_FORTRAN_CHARLEN_T len)
35 {
36   char *t;
37 
38   FIXCHAR(type, len, t);
39   CHKFORTRANNULLOBJECT(obj);
40   *ierr = MatPartitioningViewFromOptions(*ao, obj, t);
41   if (*ierr) return;
42   FREECHAR(type, t);
43 }
44