Actual source code: zdaf.c
1: #include <petsc/private/fortranimpl.h>
2: #include <petsc/private/dmdaimpl.h>
4: #if defined(PETSC_HAVE_FORTRAN_CAPS)
5: #define dmdagetownershipranges_ DMDAGETOWNERSHIPRANGES
6: #define dmdagetneighbors_ DMDAGETNEIGHBORS
7: #define dmdagetrefinementfactor_ DMDAGETREFINEMENTFACTOR
8: #elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE)
9: #define dmdagetownershipranges_ dmdagetownershipranges
10: #define dmdagetneighbors_ dmdagetneighbors
11: #define dmdagetrefinementfactor_ dmdagetrefinementfactor
12: #endif
14: PETSC_EXTERN void dmdagetneighbors_(DM *da, PetscMPIInt *ranks, PetscErrorCode *ierr)
15: {
16: const PetscMPIInt *r;
17: PetscInt n, dim;
19: *ierr = DMDAGetNeighbors(*da, &r);
20: if (*ierr) return;
21: *ierr = DMGetDimension(*da, &dim);
22: if (*ierr) return;
23: if (dim == 2) n = 9;
24: else n = 27;
25: *ierr = PetscArraycpy(ranks, r, n);
26: }
28: PETSC_EXTERN void dmdagetownershipranges_(DM *da, PetscInt lx[], PetscInt ly[], PetscInt lz[], PetscErrorCode *ierr)
29: {
30: const PetscInt *gx, *gy, *gz;
31: PetscInt M, N, P, i;
33: CHKFORTRANNULLINTEGER(lx);
34: CHKFORTRANNULLINTEGER(ly);
35: CHKFORTRANNULLINTEGER(lz);
36: *ierr = DMDAGetInfo(*da, NULL, NULL, NULL, NULL, &M, &N, &P, NULL, NULL, NULL, NULL, NULL, NULL);
37: if (*ierr) return;
38: *ierr = DMDAGetOwnershipRanges(*da, &gx, &gy, &gz);
39: if (*ierr) return;
40: if (lx) {
41: for (i = 0; i < M; i++) lx[i] = gx[i];
42: }
43: if (ly) {
44: for (i = 0; i < N; i++) ly[i] = gy[i];
45: }
46: if (lz) {
47: for (i = 0; i < P; i++) lz[i] = gz[i];
48: }
49: }
51: PETSC_EXTERN void dmdagetrefinementfactor_(DM *da, PetscInt *lx, PetscInt *ly, PetscInt *lz, PetscErrorCode *ierr)
52: {
53: CHKFORTRANNULLINTEGER(lx);
54: CHKFORTRANNULLINTEGER(ly);
55: CHKFORTRANNULLINTEGER(lz);
56: *ierr = DMDAGetRefinementFactor(*da, lx, ly, lz);
57: }