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