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: }