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 KSPNASH 'nash' 22: #define KSPSTCG 'stcg' 23: #define KSPGLTR 'gltr' 24: #define KSPGMRES 'gmres' 25: #define KSPFGMRES 'fgmres' 26: #define KSPLGMRES 'lgmres' 27: #define KSPTCQMR 'tcqmr' 28: #define KSPBCGS 'bcgs' 29: #define KSPBCGSL 'bcgsl' 30: #define KSPCGS 'cgs' 31: #define KSPTFQMR 'tfqmr' 32: #define KSPCR 'cr' 33: #define KSPLSQR 'lsqr' 34: #define KSPPREONLY 'preonly' 35: #define KSPQCG 'qcg' 36: #define KSPBICG 'bicg' 37: #define KSPMINRES 'minres' 38: #define KSPSYMMLQ 'symmlq' 39: #define KSPLCD 'lcd' 40: #endif 43: #if !defined (PETSC_AVOID_DECLARATIONS) 45: ! 46: ! CG Types 47: ! 48: PetscEnum KSP_CG_SYMMETRIC 49: PetscEnum KSP_CG_HERMITIAN 51: parameter (KSP_CG_SYMMETRIC=0,KSP_CG_HERMITIAN=1) 53: PetscEnum KSP_CONVERGED_RTOL 54: PetscEnum KSP_CONVERGED_ATOL 55: PetscEnum KSP_CONVERGED_ITS 56: PetscEnum KSP_DIVERGED_ITS 57: PetscEnum KSP_DIVERGED_DTOL 58: PetscEnum KSP_DIVERGED_BREAKDOWN 59: PetscEnum KSP_CONVERGED_ITERATING 60: PetscEnum KSP_CONVERGED_QCG_NEG_CURVE 61: PetscEnum KSP_CONVERGED_QCG_CONSTRAINED 62: PetscEnum KSP_CONVERGED_STEP_LENGTH 63: PetscEnum KSP_CONVERGED_HAPPY_BREAKDOWN 64: PetscEnum KSP_DIVERGED_BREAKDOWN_BICG 65: PetscEnum KSP_DIVERGED_NONSYMMETRIC 66: PetscEnum KSP_DIVERGED_INDEFINITE_PC 68: parameter (KSP_CONVERGED_RTOL = 2) 69: parameter (KSP_CONVERGED_ATOL = 3) 70: parameter (KSP_CONVERGED_ITS = 4) 71: parameter (KSP_CONVERGED_QCG_NEG_CURVE = 5) 72: parameter (KSP_CONVERGED_QCG_CONSTRAINED = 6) 73: parameter (KSP_CONVERGED_STEP_LENGTH = 7) 74: parameter (KSP_CONVERGED_HAPPY_BREAKDOWN = 8) 76: parameter (KSP_DIVERGED_ITS = -3) 77: parameter (KSP_DIVERGED_DTOL = -4) 78: parameter (KSP_DIVERGED_BREAKDOWN = -5) 79: parameter (KSP_DIVERGED_BREAKDOWN_BICG = -6) 80: parameter (KSP_DIVERGED_NONSYMMETRIC = -7) 81: parameter (KSP_DIVERGED_INDEFINITE_PC = -8) 83: parameter (KSP_CONVERGED_ITERATING = 0) 84: ! 85: ! Possible arguments to KSPSetNormType() 86: ! 87: PetscEnum KSP_NORM_NO 88: PetscEnum KSP_NORM_PRECONDITIONED 89: PetscEnum KSP_NORM_UNPRECONDITIONED 90: PetscEnum KSP_NORM_NATURAL 91: 92: parameter (KSP_NORM_NO=0) 93: parameter (KSP_NORM_PRECONDITIONED=1) 94: parameter (KSP_NORM_UNPRECONDITIONED=2) 95: parameter (KSP_NORM_NATURAL=3) 96: ! 97: ! Possible arguments to KSPMonitorSet() 98: ! 99: external KSPDEFAULTCONVERGED 100: external KSPMONITORDEFAULT 101: external KSPMONITORTRUERESIDUALNORM 102: external KSPMONITORLG 103: external KSPMONITORLGTRUERESIDUALNORM 104: external KSPMONITORSOLUTION 105: external KSPMONITORSINGULARVALUE 106: external KSPGMRESMONITORKRYLOV 107: ! 108: ! Possible arguments to KSPGMRESSetRefinementType() 109: ! 110: PetscEnum KSP_GMRES_CGS_REFINE_NEVER 111: PetscEnum KSP_GMRES_CGS_REFINE_IFNEEDED 112: PetscEnum KSP_GMRES_CGS_REFINE_ALWAYS 113: ! 114: parameter (KSP_GMRES_CGS_REFINE_NEVER = 0) 115: parameter (KSP_GMRES_CGS_REFINE_IFNEEDED = 1) 116: parameter (KSP_GMRES_CGS_REFINE_ALWAYS = 2) 117: ! 118: !PETSC_DEC_ATTRIBUTES(KSPDEFAULTCONVERGED,'_KSPDEFAULTCONVERGED') 119: !PETSC_DEC_ATTRIBUTES(KSPMONITORDEFAULT,'_KSPMONITORDEFAULT') 120: !PETSC_DEC_ATTRIBUTES(KSPMONITORTRUERESIDUALNORM,'_KSPMONITORTRUERESIDUALNORM') 121: !PETSC_DEC_ATTRIBUTES(KSPMONITORLG,'_KSPMONITORLG') 122: !PETSC_DEC_ATTRIBUTES(KSPMONITORLGTRUERESIDUALNORM,'_KSPMONITORLGTRUERESIDUALNORM') 123: !PETSC_DEC_ATTRIBUTES(KSPMONITORSOLUTION,'_KSPMONITORSOLUTION') 124: !PETSC_DEC_ATTRIBUTES(KSPMONITORSINGULARVALUE,'_KSPMONITORSINGULARVALUE') 125: !PETSC_DEC_ATTRIBUTES(KSPGMRESMONITORKRYLOV,'_KSPGMRESMONITORKRYLOV') 127: ! 128: ! End of Fortran include file for the KSP package in PETSc 129: ! 131: #endif