diff --git a/src/dm/interface/ftn-custom/makefile b/src/dm/interface/ftn-custom/makefile --- a/src/dm/interface/ftn-custom/makefile +++ b/src/dm/interface/ftn-custom/makefile @@ -4,10 +4,10 @@ ALL: lib CFLAGS = FFLAGS = -SOURCEC = zdmf.c +SOURCEC = zdmf.c zdmgetf.c SOURCEF = SOURCEH = -OBJSC = zdmf.o +OBJSC = ${SOURCEC:.c=.o} OBJSF = LIBBASE = libpetscdm MANSEC = DM diff --git a/src/dm/interface/ftn-custom/zdmgetf.c b/src/dm/interface/ftn-custom/zdmgetf.c new file mode 100644 --- /dev/null +++ b/src/dm/interface/ftn-custom/zdmgetf.c @@ -0,0 +1,30 @@ +#include +#include + +#if defined(PETSC_HAVE_FORTRAN_CAPS) +#define dmgetglobalvector_ DMGETGLOBALVECTOR +#define dmrestoreglobalvector_ DMRESTOREGLOBALVECTOR +#elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE) +#define dmgetglobalvector_ dmgetglobalvector +#define dmrestoreglobalvector_ dmrestoreglobalvector +#endif + +EXTERN_C_BEGIN +void PETSC_STDCALL dmgetnamedglobalvector_(DM *dm,CHAR name PETSC_MIXED_LEN(len),Vec *X,PetscErrorCode *ierr PETSC_END_LEN(len)) +{ + char *t; + + FIXCHAR(name,len,t); + *ierr = DMGetNamedGlobalVector(*dm,t,X); + FREECHAR(name,t); +} + +void PETSC_STDCALL dmrestorenamedglobalvector_(DM *dm,CHAR name PETSC_MIXED_LEN(len),Vec *X,PetscErrorCode *ierr PETSC_END_LEN(len)) +{ + char *t; + + FIXCHAR(name,len,t); + *ierr = DMRestoreNamedGlobalVector(*dm,t,X); + FREECHAR(name,t); +} +EXTERN_C_END