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