Actual source code: zitclf.c

  1: #include <petsc/private/fortranimpl.h>
  2: #include <petscksp.h>

  4: #if defined(PETSC_HAVE_FORTRAN_CAPS)
  5:   #define kspgetoptionsprefix_      KSPGETOPTIONSPREFIX
  6:   #define kspappendoptionsprefix_   KSPAPPENDOPTIONSPREFIX
  7:   #define kspsetoptionsprefix_      KSPSETOPTIONSPREFIX
  8:   #define kspbuildsolution_         KSPBUILDSOLUTION
  9:   #define kspbuildresidual_         KSPBUILDRESIDUAL
 10:   #define matcreateschurcomplement_ MATCREATESCHURCOMPLEMENT
 11: #elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE)
 12:   #define kspgetoptionsprefix_      kspgetoptionsprefix
 13:   #define kspappendoptionsprefix_   kspappendoptionsprefix
 14:   #define kspsetoptionsprefix_      kspsetoptionsprefix
 15:   #define kspbuildsolution_         kspbuildsolution
 16:   #define kspbuildresidual_         kspbuildresidual
 17:   #define matcreateschurcomplement_ matcreateschurcomplement
 18: #endif

 20: PETSC_EXTERN void kspbuildsolution_(KSP *ksp, Vec *v, Vec *V, int *ierr)
 21: {
 22:   CHKFORTRANNULLOBJECT(V);
 23:   *ierr = KSPBuildSolution(*ksp, *v, V);
 24: }

 26: PETSC_EXTERN void kspbuildresidual_(KSP *ksp, Vec *t, Vec *v, Vec *V, int *ierr)
 27: {
 28:   CHKFORTRANNULLOBJECT(V);
 29:   *ierr = KSPBuildResidual(*ksp, *t, *v, V);
 30: }

 32: PETSC_EXTERN void kspgetoptionsprefix_(KSP *ksp, char *prefix, PetscErrorCode *ierr, PETSC_FORTRAN_CHARLEN_T len)
 33: {
 34:   const char *tname;

 36:   *ierr = KSPGetOptionsPrefix(*ksp, &tname);
 37:   *ierr = PetscStrncpy(prefix, tname, len);
 38:   if (*ierr) return;
 39:   FIXRETURNCHAR(PETSC_TRUE, prefix, len);
 40: }

 42: PETSC_EXTERN void kspappendoptionsprefix_(KSP *ksp, char *prefix, PetscErrorCode *ierr, PETSC_FORTRAN_CHARLEN_T len)
 43: {
 44:   char *t;

 46:   FIXCHAR(prefix, len, t);
 47:   *ierr = KSPAppendOptionsPrefix(*ksp, t);
 48:   if (*ierr) return;
 49:   FREECHAR(prefix, t);
 50: }

 52: PETSC_EXTERN void kspsetoptionsprefix_(KSP *ksp, char *prefix, PetscErrorCode *ierr, PETSC_FORTRAN_CHARLEN_T len)
 53: {
 54:   char *t;

 56:   FIXCHAR(prefix, len, t);
 57:   *ierr = KSPSetOptionsPrefix(*ksp, t);
 58:   if (*ierr) return;
 59:   FREECHAR(prefix, t);
 60: }