Actual source code: zsda.c

  1: /*$Id: sda2f.c,v 1.15 2001/08/06 21:18:49 bsmith Exp $*/
  2: /*
  3:      Fortran interface for SDA routines.
  4: */
 5:  #include src/fortran/custom/zpetsc.h
 6:  #include petscda.h

  8: #ifdef PETSC_HAVE_FORTRAN_CAPS
  9: #define sdadestroy_           SDADESTROY
 10: #define sdalocaltolocalbegin_ SDALOCALTOLOCALBEGIN
 11: #define sdalocaltolocalend_   SDALOCALTOLOCALEND
 12: #define sdacreate1d_          SDACREATE1D
 13: #define sdacreate2d_          SDACREATE2D
 14: #define sdacreate3d_          SDACREATE3D
 15: #define sdagetghostcorners_   SDAGETGHOSTCORNERS
 16: #define sdagetcorners_        SDAGETCORNERS
 17: #define sdaarrayview_         SDAARRAYVIEW
 18: #elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE)
 19: #define sdadestroy_           sdadestroy
 20: #define sdalocaltolocalbegin_ sdalocaltolocalbegin
 21: #define sdalocaltolocalend_   sdalocaltolocalend
 22: #define sdacreate1d_          sdacreate1d
 23: #define sdacreate2d_          sdacreate2d
 24: #define sdacreate3d_          sdacreate3d
 25: #define sdagetghostcorners_   sdagetghostcorners
 26: #define sdagetcorners_        sdagetcorners
 27: #define sdaarrayview_         sdaarrayview
 28: #endif

 30: extern int SDAArrayView(SDA,PetscScalar*,PetscViewer);

 32: EXTERN_C_BEGIN
 33: void sdaarrayview_(SDA *da,PetscScalar *values,PetscViewer *vin,int *ierr)
 34: {
 35:   PetscViewer v;
 36:   PetscPatchDefaultViewers_Fortran(vin,v);
 37:   *SDAArrayView(*da,values,v);
 38: }

 40: void sdagetghostcorners_(SDA *da,int *x,int *y,int *z,int *m,int *n,int *p,int *ierr)
 41: {
 42:   CHKFORTRANNULLINTEGER(x);
 43:   CHKFORTRANNULLINTEGER(y);
 44:   CHKFORTRANNULLINTEGER(z);
 45:   CHKFORTRANNULLINTEGER(m);
 46:   CHKFORTRANNULLINTEGER(n);
 47:   CHKFORTRANNULLINTEGER(p);
 48:   *SDAGetGhostCorners(*da,x,y,z,m,n,p);
 49: }

 51: void sdagetcorners_(SDA *da,int *x,int *y,int *z,int *m,int *n,int *p,int *ierr)
 52: {
 53:   CHKFORTRANNULLINTEGER(x);
 54:   CHKFORTRANNULLINTEGER(y);
 55:   CHKFORTRANNULLINTEGER(z);
 56:   CHKFORTRANNULLINTEGER(m);
 57:   CHKFORTRANNULLINTEGER(n);
 58:   CHKFORTRANNULLINTEGER(p);
 59:   *SDAGetCorners(*da,x,y,z,m,n,p);
 60: }

 62: void sdadestroy_(SDA *sda,int *__ierr)
 63: {
 64:   *__SDADestroy((SDA)PetscToPointer(sda));
 65:   PetscRmPointer(sda);
 66: }

 68: void sdalocaltolocalbegin_(SDA *sda,PetscScalar *g,InsertMode *mode,PetscScalar *l,
 69:                            int *__ierr)
 70: {
 71:   *__SDALocalToLocalBegin((SDA)PetscToPointer(sda),g,*mode,l);
 72: }

 74: void sdalocaltolocalend_(SDA *sda,PetscScalar *g,InsertMode *mode,PetscScalar *l,
 75:                          int *__ierr){
 76:   *__SDALocalToLocalEnd((SDA)PetscToPointer(sda),g,*mode,l);
 77: }

 79: void sdacreate2d_(MPI_Comm *comm,DAPeriodicType *wrap,DAStencilType
 80:                   *stencil_type,int *M,int *N,int *m,int *n,int *w,
 81:                   int *s,int *lx,int *ly,SDA *inra,int *ierr)
 82: {
 83:   CHKFORTRANNULLINTEGER(lx);
 84:   CHKFORTRANNULLINTEGER(ly);
 85:   *SDACreate2d(
 86:             (MPI_Comm)PetscToPointerComm(*comm),*wrap,
 87:             *stencil_type,*M,*N,*m,*n,*w,*s,lx,ly,inra);
 88: }

 90: void sdacreate1d_(MPI_Comm *comm,DAPeriodicType *wrap,int *M,int *w,int *s,
 91:                  int *lc,SDA *inra,int *ierr)
 92: {
 93:   CHKFORTRANNULLINTEGER(lc);
 94:   *SDACreate1d(
 95:            (MPI_Comm)PetscToPointerComm(*comm),*wrap,*M,*w,*s,lc,inra);
 96: }

 98: void sdacreate3d_(MPI_Comm *comm,DAPeriodicType *wrap,DAStencilType 
 99:                  *stencil_type,int *M,int *N,int *P,int *m,int *n,int *p,
100:                  int *w,int *s,int *lx,int *ly,int *lz,SDA *inra,int *ierr)
101: {
102:   CHKFORTRANNULLINTEGER(lx);
103:   CHKFORTRANNULLINTEGER(ly);
104:   CHKFORTRANNULLINTEGER(lz);
105:   *SDACreate3d(
106:            (MPI_Comm)PetscToPointerComm(*comm),*wrap,*stencil_type,
107:            *M,*N,*P,*m,*n,*p,*w,*s,lx,ly,lz,inra);
108: }

110: EXTERN_C_END