12219e2e3SSatish Balay #include <petsc-private/fortranimpl.h> 24035e84dSBarry Smith #include <petsc-private/dmdaimpl.h> 32219e2e3SSatish Balay 42219e2e3SSatish Balay #if defined(PETSC_HAVE_FORTRAN_CAPS) 52219e2e3SSatish Balay #define dmdagetownershipranges_ DMDAGETOWNERSHIPRANGES 62219e2e3SSatish Balay #define dmdagetneighbors_ DMDAGETNEIGHBORS 72219e2e3SSatish Balay #elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE) 82219e2e3SSatish Balay #define dmdagetownershipranges_ dmdagetownershipranges 92219e2e3SSatish Balay #define dmdagetneighbors_ dmdagetneighbors 102219e2e3SSatish Balay #endif 112219e2e3SSatish Balay 128cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL dmdagetneighbors_(DM *da,PetscMPIInt *ranks,PetscErrorCode *ierr) 132219e2e3SSatish Balay { 142219e2e3SSatish Balay const PetscMPIInt *r; 15*c73cfb54SMatthew G. Knepley PetscInt n,dim; 162219e2e3SSatish Balay 172219e2e3SSatish Balay *ierr = DMDAGetNeighbors(*da,&r);if (*ierr) return; 18*c73cfb54SMatthew G. Knepley *ierr = DMGetDimension(*da,&dim);if (*ierr) return; 19*c73cfb54SMatthew G. Knepley if (dim == 2) n = 9; 208865f1eaSKarl Rupp else n = 27; 212219e2e3SSatish Balay *ierr = PetscMemcpy(ranks,r,n*sizeof(PetscMPIInt)); 222219e2e3SSatish Balay } 232219e2e3SSatish Balay 248cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL dmdagetownershipranges_(DM *da,PetscInt lx[],PetscInt ly[],PetscInt lz[],PetscErrorCode *ierr) 252219e2e3SSatish Balay { 262219e2e3SSatish Balay const PetscInt *gx,*gy,*gz; 272219e2e3SSatish Balay PetscInt M,N,P,i; 282219e2e3SSatish Balay 292219e2e3SSatish Balay CHKFORTRANNULLINTEGER(lx); 302219e2e3SSatish Balay CHKFORTRANNULLINTEGER(ly); 312219e2e3SSatish Balay CHKFORTRANNULLINTEGER(lz); 322219e2e3SSatish Balay *ierr = DMDAGetInfo(*da,0,0,0,0,&M,&N,&P,0,0,0,0,0,0);if (*ierr) return; 332219e2e3SSatish Balay *ierr = DMDAGetOwnershipRanges(*da,&gx,&gy,&gz);if (*ierr) return; 348865f1eaSKarl Rupp if (lx) { 358865f1eaSKarl Rupp for (i=0; i<M; i++) lx[i] = gx[i]; 368865f1eaSKarl Rupp } 378865f1eaSKarl Rupp if (ly) { 388865f1eaSKarl Rupp for (i=0; i<N; i++) ly[i] = gy[i]; 398865f1eaSKarl Rupp } 408865f1eaSKarl Rupp if (lz) { 418865f1eaSKarl Rupp for (i=0; i<P; i++) lz[i] = gz[i]; 428865f1eaSKarl Rupp } 432219e2e3SSatish Balay } 442219e2e3SSatish Balay 45