Actual source code: zitcreatef.c

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

  5: #if defined(PETSC_HAVE_FORTRAN_CAPS)
  6:   #define kspgettype_         KSPGETTYPE
  7:   #define kspsettype_         KSPSETTYPE
  8:   #define kspview_            KSPVIEW
  9:   #define kspviewfromoptions_ KSPVIEWFROMOPTIONS
 10: #elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE)
 11:   #define kspgettype_         kspgettype
 12:   #define kspsettype_         kspsettype
 13:   #define kspview_            kspview
 14:   #define kspviewfromoptions_ kspviewfromoptions
 15: #endif

 17: PETSC_EXTERN void kspgettype_(KSP *ksp, char *name, PetscErrorCode *ierr, PETSC_FORTRAN_CHARLEN_T len)
 18: {
 19:   const char *tname;

 21:   *ierr = KSPGetType(*ksp, &tname);
 22:   if (*ierr) return;
 23:   *ierr = PetscStrncpy(name, tname, len);
 24:   FIXRETURNCHAR(PETSC_TRUE, name, len);
 25: }

 27: PETSC_EXTERN void kspsettype_(KSP *ksp, char *type, PetscErrorCode *ierr, PETSC_FORTRAN_CHARLEN_T len)
 28: {
 29:   char *t;

 31:   FIXCHAR(type, len, t);
 32:   *ierr = KSPSetType(*ksp, t);
 33:   if (*ierr) return;
 34:   FREECHAR(type, t);
 35: }

 37: PETSC_EXTERN void kspview_(KSP *ksp, PetscViewer *viewer, PetscErrorCode *ierr)
 38: {
 39:   PetscViewer v;
 40:   PetscPatchDefaultViewers_Fortran(viewer, v);
 41:   *ierr = KSPView(*ksp, v);
 42: }

 44: PETSC_EXTERN void kspviewfromoptions_(KSP *ao, PetscObject obj, char *type, PetscErrorCode *ierr, PETSC_FORTRAN_CHARLEN_T len)
 45: {
 46:   char *t;

 48:   FIXCHAR(type, len, t);
 49:   CHKFORTRANNULLOBJECT(obj);
 50:   *ierr = KSPViewFromOptions(*ao, obj, t);
 51:   if (*ierr) return;
 52:   FREECHAR(type, t);
 53: }

 55: PETSC_EXTERN void kspgetconvergedreasonstring_(KSP *ksp, char *strreason, PetscErrorCode *ierr, PETSC_FORTRAN_CHARLEN_T len)
 56: {
 57:   const char *tstrreason;
 58:   *ierr = KSPGetConvergedReasonString(*ksp, &tstrreason);
 59:   *ierr = PetscStrncpy(strreason, tstrreason, len);
 60:   if (*ierr) return;
 61:   FIXRETURNCHAR(PETSC_TRUE, strreason, len);
 62: }