1*2219e2e3SSatish Balay #include <petsc-private/fortranimpl.h> 2*2219e2e3SSatish Balay #include <petsc-private/daimpl.h> 3*2219e2e3SSatish Balay 4*2219e2e3SSatish Balay #if defined(PETSC_HAVE_FORTRAN_CAPS) 5*2219e2e3SSatish Balay #define dmdagetownershipranges_ DMDAGETOWNERSHIPRANGES 6*2219e2e3SSatish Balay #define dmdagetneighbors_ DMDAGETNEIGHBORS 7*2219e2e3SSatish Balay #elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE) 8*2219e2e3SSatish Balay #define dmdagetownershipranges_ dmdagetownershipranges 9*2219e2e3SSatish Balay #define dmdagetneighbors_ dmdagetneighbors 10*2219e2e3SSatish Balay #endif 11*2219e2e3SSatish Balay 12*2219e2e3SSatish Balay EXTERN_C_BEGIN 13*2219e2e3SSatish Balay void PETSC_STDCALL dmdagetneighbors_(DM *da,PetscMPIInt *ranks,PetscErrorCode *ierr) 14*2219e2e3SSatish Balay { 15*2219e2e3SSatish Balay const PetscMPIInt *r; 16*2219e2e3SSatish Balay PetscInt n; 17*2219e2e3SSatish Balay DM_DA *dd = (DM_DA*)(*da)->data; 18*2219e2e3SSatish Balay 19*2219e2e3SSatish Balay *ierr = DMDAGetNeighbors(*da,&r);if (*ierr) return; 20*2219e2e3SSatish Balay if (dd->dim == 2) n = 9; else n = 27; 21*2219e2e3SSatish Balay *ierr = PetscMemcpy(ranks,r,n*sizeof(PetscMPIInt)); 22*2219e2e3SSatish Balay } 23*2219e2e3SSatish Balay 24*2219e2e3SSatish Balay void PETSC_STDCALL dmdagetownershipranges_(DM *da,PetscInt lx[],PetscInt ly[],PetscInt lz[],PetscErrorCode *ierr) 25*2219e2e3SSatish Balay { 26*2219e2e3SSatish Balay const PetscInt *gx,*gy,*gz; 27*2219e2e3SSatish Balay PetscInt M,N,P,i; 28*2219e2e3SSatish Balay 29*2219e2e3SSatish Balay CHKFORTRANNULLINTEGER(lx); 30*2219e2e3SSatish Balay CHKFORTRANNULLINTEGER(ly); 31*2219e2e3SSatish Balay CHKFORTRANNULLINTEGER(lz); 32*2219e2e3SSatish Balay *ierr = DMDAGetInfo(*da,0,0,0,0,&M,&N,&P,0,0,0,0,0,0);if (*ierr) return; 33*2219e2e3SSatish Balay *ierr = DMDAGetOwnershipRanges(*da,&gx,&gy,&gz);if (*ierr) return; 34*2219e2e3SSatish Balay if (lx) {for (i=0; i<M; i++) {lx[i] = gx[i];}} 35*2219e2e3SSatish Balay if (ly) {for (i=0; i<N; i++) {ly[i] = gy[i];}} 36*2219e2e3SSatish Balay if (lz) {for (i=0; i<P; i++) {lz[i] = gz[i];}} 37*2219e2e3SSatish Balay } 38*2219e2e3SSatish Balay 39*2219e2e3SSatish Balay EXTERN_C_END 40