1: ! 2: ! 3: ! Include file for Fortran use of the KSP package in PETSc 4: ! 5: #if !defined (__PETSCKSP_H) 8: #define KSP PetscFortranAddr 9: #define KSPType character*(80) 10: #define KSPCGType PetscEnum 11: #define KSPConvergedReason PetscEnum 12: #define KSPNormType PetscEnum 13: #define KSPGMRESCGSRefinementType PetscEnum 14: ! 15: ! Various Krylov subspace methods 16: ! 17: #define KSPRICHARDSON 'richardson' 18: #define KSPCHEBYCHEV 'chebychev' 19: #define KSPCG 'cg' 20: #define KSPCGNE 'cgne' 21: #define KSPSTCG 'stcg' 22: #define KSPGLTR 'gltr' 23: #define KSPGMRES 'gmres' 24: #define KSPFGMRES 'fgmres' 25: #define KSPLGMRES 'lgmres' 26: #define KSPTCQMR 'tcqmr' 27: #define KSPBCGS 'bcgs' 28: #define KSPBCGSL 'bcgsl' 29: #define KSPCGS 'cgs' 30: #define KSPTFQMR 'tfqmr' 31: #define KSPCR 'cr' 32: #define KSPLSQR 'lsqr' 33: #define KSPPREONLY 'preonly' 34: #define KSPQCG 'qcg' 35: #define KSPBICG 'bicg' 36: #define KSPMINRES 'minres' 37: #define KSPSYMMLQ 'symmlq' 38: #define KSPLCD 'lcd' 39: #endif 42: #if !defined (PETSC_AVOID_DECLARATIONS) 44: ! 45: ! CG Types 46: ! 47: PetscEnum KSP_CG_SYMMETRIC 48: PetscEnum KSP_CG_HERMITIAN 50: parameter (KSP_CG_SYMMETRIC=0,KSP_CG_HERMITIAN=1) 52: PetscEnum KSP_CONVERGED_RTOL 53: PetscEnum KSP_CONVERGED_ATOL 54: PetscEnum KSP_CONVERGED_ITS 55: PetscEnum KSP_DIVERGED_ITS 56: PetscEnum KSP_DIVERGED_DTOL 57: PetscEnum KSP_DIVERGED_BREAKDOWN 58: PetscEnum KSP_CONVERGED_ITERATING 59: PetscEnum KSP_CONVERGED_QCG_NEG_CURVE 60: PetscEnum KSP_CONVERGED_QCG_CONSTRAINED 61: PetscEnum KSP_CONVERGED_STEP_LENGTH 62: PetscEnum KSP_CONVERGED_HAPPY_BREAKDOWN 63: PetscEnum KSP_DIVERGED_BREAKDOWN_BICG 64: PetscEnum KSP_DIVERGED_NONSYMMETRIC 65: PetscEnum KSP_DIVERGED_INDEFINITE_PC 67: parameter (KSP_CONVERGED_RTOL = 2) 68: parameter (KSP_CONVERGED_ATOL = 3) 69: parameter (KSP_CONVERGED_ITS = 4) 70: parameter (KSP_CONVERGED_QCG_NEG_CURVE = 5) 71: parameter (KSP_CONVERGED_QCG_CONSTRAINED = 6) 72: parameter (KSP_CONVERGED_STEP_LENGTH = 7) 73: parameter (KSP_CONVERGED_HAPPY_BREAKDOWN = 8) 75: parameter (KSP_DIVERGED_ITS = -3) 76: parameter (KSP_DIVERGED_DTOL = -4) 77: parameter (KSP_DIVERGED_BREAKDOWN = -5) 78: parameter (KSP_DIVERGED_BREAKDOWN_BICG = -6) 79: parameter (KSP_DIVERGED_NONSYMMETRIC = -7) 80: parameter (KSP_DIVERGED_INDEFINITE_PC = -8) 82: parameter (KSP_CONVERGED_ITERATING = 0) 83: ! 84: ! Possible arguments to KSPSetNormType() 85: ! 86: PetscEnum KSP_NORM_NO 87: PetscEnum KSP_NORM_PRECONDITIONED 88: PetscEnum KSP_NORM_UNPRECONDITIONED 89: PetscEnum KSP_NORM_NATURAL 90: 91: parameter (KSP_NORM_NO=0) 92: parameter (KSP_NORM_PRECONDITIONED=1) 93: parameter (KSP_NORM_UNPRECONDITIONED=2) 94: parameter (KSP_NORM_NATURAL=3) 95: ! 96: ! Possible arguments to KSPMonitorSet() 97: ! 98: external KSPDEFAULTCONVERGED 99: external KSPMONITORDEFAULT 100: external KSPMONITORTRUERESIDUALNORM 101: external KSPMONITORLG 102: external KSPMONITORLGTRUERESIDUALNORM 103: external KSPMONITORSOLUTION 104: external KSPMONITORSINGULARVALUE 105: external KSPGMRESMONITORKRYLOV 106: ! 107: ! Possible arguments to KSPGMRESSetRefinementType() 108: ! 109: PetscEnum KSP_GMRES_CGS_REFINE_NEVER 110: PetscEnum KSP_GMRES_CGS_REFINE_IFNEEDED 111: PetscEnum KSP_GMRES_CGS_REFINE_ALWAYS 112: ! 113: parameter (KSP_GMRES_CGS_REFINE_NEVER = 0) 114: parameter (KSP_GMRES_CGS_REFINE_IFNEEDED = 1) 115: parameter (KSP_GMRES_CGS_REFINE_ALWAYS = 2) 116: ! 117: !PETSC_DEC_ATTRIBUTES(KSPDEFAULTCONVERGED,'_KSPDEFAULTCONVERGED') 118: !PETSC_DEC_ATTRIBUTES(KSPMONITORDEFAULT,'_KSPMONITORDEFAULT') 119: !PETSC_DEC_ATTRIBUTES(KSPMONITORTRUERESIDUALNORM,'_KSPMONITORTRUERESIDUALNORM') 120: !PETSC_DEC_ATTRIBUTES(KSPMONITORLG,'_KSPMONITORLG') 121: !PETSC_DEC_ATTRIBUTES(KSPMONITORLGTRUERESIDUALNORM,'_KSPMONITORLGTRUERESIDUALNORM') 122: !PETSC_DEC_ATTRIBUTES(KSPMONITORSOLUTION,'_KSPMONITORSOLUTION') 123: !PETSC_DEC_ATTRIBUTES(KSPMONITORSINGULARVALUE,'_KSPMONITORSINGULARVALUE') 124: !PETSC_DEC_ATTRIBUTES(KSPGMRESMONITORKRYLOV,'_KSPGMRESMONITORKRYLOV') 126: ! 127: ! End of Fortran include file for the KSP package in PETSc 128: ! 130: #endif