1*cdcc8137SSatish Balay #include "zpetsc.h" 2*cdcc8137SSatish Balay #include "petscsnes.h" 3*cdcc8137SSatish Balay 4*cdcc8137SSatish Balay #if defined(PETSC_HAVE_FORTRAN_CAPS) 5*cdcc8137SSatish Balay #define matmffdsetfunction_ MATMFFDSETFUNCTION 6*cdcc8137SSatish Balay #define matmffdsettype_ MATMFFDSETTYPE 7*cdcc8137SSatish Balay #elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE) 8*cdcc8137SSatish Balay #define matmffdsetfunction_ matmffdsetfunction 9*cdcc8137SSatish Balay #define matmffdsettype_ matmffdsettype 10*cdcc8137SSatish Balay #endif 11*cdcc8137SSatish Balay 12*cdcc8137SSatish Balay EXTERN_C_BEGIN 13*cdcc8137SSatish Balay static void (PETSC_STDCALL *f11)(void*,Vec*,Vec*,PetscErrorCode*); 14*cdcc8137SSatish Balay EXTERN_C_END 15*cdcc8137SSatish Balay 16*cdcc8137SSatish Balay static PetscErrorCode ourmatmffdfunction(void *ctx,Vec x,Vec f) 17*cdcc8137SSatish Balay { 18*cdcc8137SSatish Balay PetscErrorCode ierr = 0; 19*cdcc8137SSatish Balay (*f11)(ctx,&x,&f,&ierr);CHKERRQ(ierr); 20*cdcc8137SSatish Balay return 0; 21*cdcc8137SSatish Balay } 22*cdcc8137SSatish Balay 23*cdcc8137SSatish Balay EXTERN_C_BEGIN 24*cdcc8137SSatish Balay void PETSC_STDCALL matmffdsetfunction_(Mat *mat,void (PETSC_STDCALL *func)(void*,Vec*,Vec*,PetscErrorCode*), 25*cdcc8137SSatish Balay void *ctx,PetscErrorCode *ierr) 26*cdcc8137SSatish Balay { 27*cdcc8137SSatish Balay f11 = func; 28*cdcc8137SSatish Balay CHKFORTRANNULLOBJECT(ctx); 29*cdcc8137SSatish Balay *ierr = MatMFFDSetFunction(*mat,ourmatmffdfunction,ctx); 30*cdcc8137SSatish Balay } 31*cdcc8137SSatish Balay 32*cdcc8137SSatish Balay void PETSC_STDCALL matmffdsettype_(Mat *mat,CHAR ftype PETSC_MIXED_LEN(len), 33*cdcc8137SSatish Balay PetscErrorCode *ierr PETSC_END_LEN(len)) 34*cdcc8137SSatish Balay { 35*cdcc8137SSatish Balay char *t; 36*cdcc8137SSatish Balay FIXCHAR(ftype,len,t); 37*cdcc8137SSatish Balay *ierr = MatMFFDSetType(*mat,t); 38*cdcc8137SSatish Balay FREECHAR(ftype,t); 39*cdcc8137SSatish Balay } 40*cdcc8137SSatish Balay 41*cdcc8137SSatish Balay EXTERN_C_END 42