Actual source code: itregis.c

  1: #include <petsc/private/kspimpl.h>

  3: PETSC_EXTERN PetscErrorCode KSPCreate_Richardson(KSP);
  4: PETSC_EXTERN PetscErrorCode KSPCreate_Chebyshev(KSP);
  5: PETSC_EXTERN PetscErrorCode KSPCreate_CG(KSP);
  6: PETSC_EXTERN PetscErrorCode KSPCreate_GROPPCG(KSP);
  7: PETSC_EXTERN PetscErrorCode KSPCreate_PIPECG(KSP);
  8: PETSC_EXTERN PetscErrorCode KSPCreate_PIPECGRR(KSP);
  9: PETSC_EXTERN PetscErrorCode KSPCreate_PIPELCG(KSP);
 10: PETSC_EXTERN PetscErrorCode KSPCreate_PIPEPRCG(KSP);
 11: PETSC_EXTERN PetscErrorCode KSPCreate_PIPECG2(KSP);
 12: PETSC_EXTERN PetscErrorCode KSPCreate_CGNE(KSP);
 13: PETSC_EXTERN PetscErrorCode KSPCreate_NASH(KSP);
 14: PETSC_EXTERN PetscErrorCode KSPCreate_STCG(KSP);
 15: PETSC_EXTERN PetscErrorCode KSPCreate_GLTR(KSP);
 16: PETSC_EXTERN PetscErrorCode KSPCreate_TCQMR(KSP);
 17: PETSC_EXTERN PetscErrorCode KSPCreate_FCG(KSP);
 18: PETSC_EXTERN PetscErrorCode KSPCreate_PIPEFCG(KSP);
 19: PETSC_EXTERN PetscErrorCode KSPCreate_GMRES(KSP);
 20: PETSC_EXTERN PetscErrorCode KSPCreate_BCGS(KSP);
 21: PETSC_EXTERN PetscErrorCode KSPCreate_IBCGS(KSP);
 22: PETSC_EXTERN PetscErrorCode KSPCreate_QMRCGS(KSP);
 23: PETSC_EXTERN PetscErrorCode KSPCreate_FBCGS(KSP);
 24: PETSC_EXTERN PetscErrorCode KSPCreate_PIPEBCGS(KSP);
 25: PETSC_EXTERN PetscErrorCode KSPCreate_FBCGSR(KSP);
 26: PETSC_EXTERN PetscErrorCode KSPCreate_BCGSL(KSP);
 27: PETSC_EXTERN PetscErrorCode KSPCreate_CGS(KSP);
 28: PETSC_EXTERN PetscErrorCode KSPCreate_TFQMR(KSP);
 29: PETSC_EXTERN PetscErrorCode KSPCreate_LSQR(KSP);
 30: PETSC_EXTERN PetscErrorCode KSPCreate_PREONLY(KSP);
 31: PETSC_EXTERN PetscErrorCode KSPCreate_CR(KSP);
 32: PETSC_EXTERN PetscErrorCode KSPCreate_PIPECR(KSP);
 33: PETSC_EXTERN PetscErrorCode KSPCreate_QCG(KSP);
 34: PETSC_EXTERN PetscErrorCode KSPCreate_BiCG(KSP);
 35: PETSC_EXTERN PetscErrorCode KSPCreate_FGMRES(KSP);
 36: PETSC_EXTERN PetscErrorCode KSPCreate_PIPEFGMRES(KSP);
 37: PETSC_EXTERN PetscErrorCode KSPCreate_MINRES(KSP);
 38: PETSC_EXTERN PetscErrorCode KSPCreate_SYMMLQ(KSP);
 39: PETSC_EXTERN PetscErrorCode KSPCreate_LGMRES(KSP);
 40: PETSC_EXTERN PetscErrorCode KSPCreate_LCD(KSP);
 41: PETSC_EXTERN PetscErrorCode KSPCreate_GCR(KSP);
 42: PETSC_EXTERN PetscErrorCode KSPCreate_PIPEGCR(KSP);
 43: PETSC_EXTERN PetscErrorCode KSPCreate_PGMRES(KSP);
 44: #if !defined(PETSC_USE_COMPLEX)
 45: PETSC_EXTERN PetscErrorCode KSPCreate_DGMRES(KSP);
 46: #endif
 47: PETSC_EXTERN PetscErrorCode KSPCreate_TSIRM(KSP);
 48: PETSC_EXTERN PetscErrorCode KSPCreate_CGLS(KSP);
 49: PETSC_EXTERN PetscErrorCode KSPCreate_FETIDP(KSP);
 50: #if defined(PETSC_HAVE_HPDDM)
 51: PETSC_EXTERN PetscErrorCode KSPCreate_HPDDM(KSP);
 52: #endif

 54: /*@C
 55:   KSPRegisterAll - Registers all of the Krylov subspace methods in the `KSP` package.

 57:   Not Collective

 59:   Level: advanced

 61: .seealso: [](chapter_ksp), `KSP`, `KSPRegister()`, `KSPType`
 62: @*/
 63: PetscErrorCode KSPRegisterAll(void)
 64: {
 65:   if (KSPRegisterAllCalled) return 0;
 66:   KSPRegisterAllCalled = PETSC_TRUE;

 68:   KSPRegister(KSPCG, KSPCreate_CG);
 69:   KSPRegister(KSPGROPPCG, KSPCreate_GROPPCG);
 70:   KSPRegister(KSPPIPECG, KSPCreate_PIPECG);
 71:   KSPRegister(KSPPIPECGRR, KSPCreate_PIPECGRR);
 72:   KSPRegister(KSPPIPELCG, KSPCreate_PIPELCG);
 73:   KSPRegister(KSPPIPEPRCG, KSPCreate_PIPEPRCG);
 74:   KSPRegister(KSPPIPECG2, KSPCreate_PIPECG2);
 75:   KSPRegister(KSPCGNE, KSPCreate_CGNE);
 76:   KSPRegister(KSPNASH, KSPCreate_NASH);
 77:   KSPRegister(KSPSTCG, KSPCreate_STCG);
 78:   KSPRegister(KSPGLTR, KSPCreate_GLTR);
 79:   KSPRegister(KSPRICHARDSON, KSPCreate_Richardson);
 80:   KSPRegister(KSPCHEBYSHEV, KSPCreate_Chebyshev);
 81:   KSPRegister(KSPGMRES, KSPCreate_GMRES);
 82:   KSPRegister(KSPTCQMR, KSPCreate_TCQMR);
 83:   KSPRegister(KSPFCG, KSPCreate_FCG);
 84:   KSPRegister(KSPPIPEFCG, KSPCreate_PIPEFCG);
 85:   KSPRegister(KSPBCGS, KSPCreate_BCGS);
 86:   KSPRegister(KSPIBCGS, KSPCreate_IBCGS);
 87:   KSPRegister(KSPQMRCGS, KSPCreate_QMRCGS);
 88:   KSPRegister(KSPFBCGS, KSPCreate_FBCGS);
 89:   KSPRegister(KSPPIPEBCGS, KSPCreate_PIPEBCGS);
 90:   KSPRegister(KSPFBCGSR, KSPCreate_FBCGSR);
 91:   KSPRegister(KSPBCGSL, KSPCreate_BCGSL);
 92:   KSPRegister(KSPCGS, KSPCreate_CGS);
 93:   KSPRegister(KSPTFQMR, KSPCreate_TFQMR);
 94:   KSPRegister(KSPCR, KSPCreate_CR);
 95:   KSPRegister(KSPPIPECR, KSPCreate_PIPECR);
 96:   KSPRegister(KSPLSQR, KSPCreate_LSQR);
 97:   KSPRegister(KSPPREONLY, KSPCreate_PREONLY);
 98:   KSPRegister(KSPNONE, KSPCreate_PREONLY);
 99:   KSPRegister(KSPQCG, KSPCreate_QCG);
100:   KSPRegister(KSPBICG, KSPCreate_BiCG);
101:   KSPRegister(KSPFGMRES, KSPCreate_FGMRES);
102:   KSPRegister(KSPPIPEFGMRES, KSPCreate_PIPEFGMRES);
103:   KSPRegister(KSPMINRES, KSPCreate_MINRES);
104:   KSPRegister(KSPSYMMLQ, KSPCreate_SYMMLQ);
105:   KSPRegister(KSPLGMRES, KSPCreate_LGMRES);
106:   KSPRegister(KSPLCD, KSPCreate_LCD);
107:   KSPRegister(KSPGCR, KSPCreate_GCR);
108:   KSPRegister(KSPPIPEGCR, KSPCreate_PIPEGCR);
109:   KSPRegister(KSPPGMRES, KSPCreate_PGMRES);
110: #if !defined(PETSC_USE_COMPLEX)
111:   KSPRegister(KSPDGMRES, KSPCreate_DGMRES);
112: #endif
113:   KSPRegister(KSPTSIRM, KSPCreate_TSIRM);
114:   KSPRegister(KSPCGLS, KSPCreate_CGLS);
115:   KSPRegister(KSPFETIDP, KSPCreate_FETIDP);
116: #if defined(PETSC_HAVE_HPDDM)
117:   KSPRegister(KSPHPDDM, KSPCreate_HPDDM);
118: #endif
119:   return 0;
120: }

122: /*@C
123:   KSPMonitoRegisterAll - Registers all of the Krylov subspace monitors in the `KSP` package.

125:   Not Collective

127:   Level: advanced

129: .seealso: [](chapter_ksp), `KSP`, `KSPMonitorRegister()`, `KSPRegister()`
130: @*/
131: PetscErrorCode KSPMonitorRegisterAll(void)
132: {
133:   if (KSPMonitorRegisterAllCalled) return 0;
134:   KSPMonitorRegisterAllCalled = PETSC_TRUE;

136:   KSPMonitorRegister("preconditioned_residual", PETSCVIEWERASCII, PETSC_VIEWER_DEFAULT, KSPMonitorResidual, NULL, NULL);
137:   KSPMonitorRegister("preconditioned_residual", PETSCVIEWERDRAW, PETSC_VIEWER_DEFAULT, KSPMonitorResidualDraw, NULL, NULL);
138:   KSPMonitorRegister("preconditioned_residual", PETSCVIEWERDRAW, PETSC_VIEWER_DRAW_LG, KSPMonitorResidualDrawLG, KSPMonitorResidualDrawLGCreate, NULL);
139:   KSPMonitorRegister("preconditioned_residual_short", PETSCVIEWERASCII, PETSC_VIEWER_DEFAULT, KSPMonitorResidualShort, NULL, NULL);
140:   KSPMonitorRegister("preconditioned_residual_range", PETSCVIEWERASCII, PETSC_VIEWER_DEFAULT, KSPMonitorResidualRange, NULL, NULL);
141:   KSPMonitorRegister("true_residual", PETSCVIEWERASCII, PETSC_VIEWER_DEFAULT, KSPMonitorTrueResidual, NULL, NULL);
142:   KSPMonitorRegister("true_residual", PETSCVIEWERDRAW, PETSC_VIEWER_DEFAULT, KSPMonitorTrueResidualDraw, NULL, NULL);
143:   KSPMonitorRegister("true_residual", PETSCVIEWERDRAW, PETSC_VIEWER_DRAW_LG, KSPMonitorTrueResidualDrawLG, KSPMonitorTrueResidualDrawLGCreate, NULL);
144:   KSPMonitorRegister("true_residual_max", PETSCVIEWERASCII, PETSC_VIEWER_DEFAULT, KSPMonitorTrueResidualMax, NULL, NULL);
145:   KSPMonitorRegister("error", PETSCVIEWERASCII, PETSC_VIEWER_DEFAULT, KSPMonitorError, NULL, NULL);
146:   KSPMonitorRegister("error", PETSCVIEWERDRAW, PETSC_VIEWER_DEFAULT, KSPMonitorErrorDraw, NULL, NULL);
147:   KSPMonitorRegister("error", PETSCVIEWERDRAW, PETSC_VIEWER_DRAW_LG, KSPMonitorErrorDrawLG, KSPMonitorErrorDrawLGCreate, NULL);
148:   KSPMonitorRegister("solution", PETSCVIEWERASCII, PETSC_VIEWER_DEFAULT, KSPMonitorSolution, NULL, NULL);
149:   KSPMonitorRegister("solution", PETSCVIEWERDRAW, PETSC_VIEWER_DEFAULT, KSPMonitorSolutionDraw, NULL, NULL);
150:   KSPMonitorRegister("solution", PETSCVIEWERDRAW, PETSC_VIEWER_DRAW_LG, KSPMonitorSolutionDrawLG, KSPMonitorSolutionDrawLGCreate, NULL);
151:   KSPMonitorRegister("singular_value", PETSCVIEWERASCII, PETSC_VIEWER_DEFAULT, KSPMonitorSingularValue, KSPMonitorSingularValueCreate, NULL);
152:   KSPMonitorRegister("lsqr_residual", PETSCVIEWERASCII, PETSC_VIEWER_DEFAULT, KSPLSQRMonitorResidual, NULL, NULL);
153:   KSPMonitorRegister("lsqr_residual", PETSCVIEWERDRAW, PETSC_VIEWER_DRAW_LG, KSPLSQRMonitorResidualDrawLG, KSPLSQRMonitorResidualDrawLGCreate, NULL);
154:   return 0;
155: }