Actual source code: zmpibaijf.c

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

  4: #if defined(PETSC_HAVE_FORTRAN_CAPS)
  5:   #define matmpibaijgetseqbaij_       MATMPIBAIJGETSEQBAIJ
  6:   #define matcreatebaij_              MATCREATEBAIJ
  7:   #define matmpibaijsetpreallocation_ MATMPIBAIJSETPREALLOCATION
  8: #elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE)
  9:   #define matmpibaijgetseqbaij_       matmpibaijgetseqbaij
 10:   #define matcreatebaij_              matcreatebaij
 11:   #define matmpibaijsetpreallocation_ matmpibaijsetpreallocation
 12: #endif

 14: PETSC_EXTERN void matmpibaijgetseqbaij_(Mat *A, Mat *Ad, Mat *Ao, PetscInt *ic, size_t *iic, PetscErrorCode *ierr)
 15: {
 16:   const PetscInt *i;
 17:   *ierr = MatMPIBAIJGetSeqBAIJ(*A, Ad, Ao, &i);
 18:   if (*ierr) return;
 19:   *iic = PetscIntAddressToFortran(ic, (PetscInt *)i);
 20: }

 22: PETSC_EXTERN void matcreatebaij_(MPI_Comm *comm, PetscInt *bs, PetscInt *m, PetscInt *n, PetscInt *M, PetscInt *N, PetscInt *d_nz, PetscInt *d_nnz, PetscInt *o_nz, PetscInt *o_nnz, Mat *newmat, PetscErrorCode *ierr)
 23: {
 24:   CHKFORTRANNULLINTEGER(d_nnz);
 25:   CHKFORTRANNULLINTEGER(o_nnz);
 26:   *ierr = MatCreateBAIJ(MPI_Comm_f2c(*(MPI_Fint *)&*comm), *bs, *m, *n, *M, *N, *d_nz, d_nnz, *o_nz, o_nnz, newmat);
 27: }

 29: PETSC_EXTERN void matmpibaijsetpreallocation_(Mat *mat, PetscInt *bs, PetscInt *d_nz, PetscInt *d_nnz, PetscInt *o_nz, PetscInt *o_nnz, PetscErrorCode *ierr)
 30: {
 31:   CHKFORTRANNULLINTEGER(d_nnz);
 32:   CHKFORTRANNULLINTEGER(o_nnz);
 33:   *ierr = MatMPIBAIJSetPreallocation(*mat, *bs, *d_nz, d_nnz, *o_nz, o_nnz);
 34: }