Actual source code: zmpiaijf.c

  1: #include <petsc/private/fortranimpl.h>
  2: #include <petscmat.h>

  4: #if defined(PETSC_HAVE_FORTRAN_CAPS)
  5:   #define matmpiaijgetseqaij_             MATMPIAIJGETSEQAIJ
  6:   #define matcreateaij_                   MATCREATEAIJ
  7:   #define matmpiaijsetpreallocation_      MATMPIAIJSETPREALLOCATION
  8:   #define matxaijsetpreallocation_        MATXAIJSETPREALLOCATION
  9:   #define matcreatempiaijwithsplitarrays_ MATCREATEMPIAIJWITHSPLITARRAYS
 10: #elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE)
 11:   #define matmpiaijgetseqaij_             matmpiaijgetseqaij
 12:   #define matcreateaij_                   matcreateaij
 13:   #define matmpiaijsetpreallocation_      matmpiaijsetpreallocation
 14:   #define matxaijsetpreallocation_        matxaijsetpreallocation
 15:   #define matcreatempiaijwithsplitarrays_ matcreatempiaijwithsplitarrays
 16: #endif

 18: PETSC_EXTERN void matcreatempiaijwithsplitarrays_(MPI_Comm *comm, PetscInt *m, PetscInt *n, PetscInt *M, PetscInt *N, PetscInt i[], PetscInt j[], PetscScalar a[], PetscInt oi[], PetscInt oj[], PetscScalar oa[], Mat *mat, int *ierr)
 19: {
 20:   *ierr = MatCreateMPIAIJWithSplitArrays(MPI_Comm_f2c(*(MPI_Fint *)&*comm), *m, *n, *M, *N, i, j, a, oi, oj, oa, mat);
 21: }

 23: PETSC_EXTERN void matmpiaijgetseqaij_(Mat *A, Mat *Ad, Mat *Ao, PetscInt *ic, size_t *iic, PetscErrorCode *ierr)
 24: {
 25:   const PetscInt *i;
 26:   *ierr = MatMPIAIJGetSeqAIJ(*A, Ad, Ao, &i);
 27:   if (*ierr) return;
 28:   *iic = PetscIntAddressToFortran(ic, (PetscInt *)i);
 29: }

 31: PETSC_EXTERN void matcreateaij_(MPI_Comm *comm, PetscInt *m, PetscInt *n, PetscInt *M, PetscInt *N, PetscInt *d_nz, PetscInt *d_nnz, PetscInt *o_nz, PetscInt *o_nnz, Mat *newmat, PetscErrorCode *ierr)
 32: {
 33:   CHKFORTRANNULLINTEGER(d_nnz);
 34:   CHKFORTRANNULLINTEGER(o_nnz);

 36:   *ierr = MatCreateAIJ(MPI_Comm_f2c(*(MPI_Fint *)&*comm), *m, *n, *M, *N, *d_nz, d_nnz, *o_nz, o_nnz, newmat);
 37: }

 39: PETSC_EXTERN void matmpiaijsetpreallocation_(Mat *mat, PetscInt *d_nz, PetscInt *d_nnz, PetscInt *o_nz, PetscInt *o_nnz, PetscErrorCode *ierr)
 40: {
 41:   CHKFORTRANNULLINTEGER(d_nnz);
 42:   CHKFORTRANNULLINTEGER(o_nnz);
 43:   *ierr = MatMPIAIJSetPreallocation(*mat, *d_nz, d_nnz, *o_nz, o_nnz);
 44: }

 46: PETSC_EXTERN void matxaijsetpreallocation_(Mat *A, PetscInt *bs, PetscInt dnnz[], PetscInt onnz[], PetscInt dnnzu[], PetscInt onnzu[], PetscErrorCode *ierr)
 47: {
 48:   CHKFORTRANNULLINTEGER(dnnz);
 49:   CHKFORTRANNULLINTEGER(onnz);
 50:   CHKFORTRANNULLINTEGER(dnnzu);
 51:   CHKFORTRANNULLINTEGER(onnzu);
 52:   *ierr = MatXAIJSetPreallocation(*A, *bs, dnnz, onnz, dnnzu, onnzu);
 53: }