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 !PetscDefined(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 PetscDefined(HAVE_HPDDM)
 51: PETSC_EXTERN PetscErrorCode KSPCreate_HPDDM(KSP);
 52: #endif
 53: PETSC_EXTERN PetscErrorCode KSPCreate_IDR(KSP);

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

 58:   Not Collective

 60:   Level: advanced

 62: .seealso: [](ch_ksp), `KSP`, `KSPRegister()`, `KSPType`
 63: @*/
 64: PetscErrorCode KSPRegisterAll(void)
 65: {
 66:   PetscFunctionBegin;
 67:   if (KSPRegisterAllCalled) PetscFunctionReturn(PETSC_SUCCESS);
 68:   KSPRegisterAllCalled = PETSC_TRUE;

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

125: /*@
126:   KSPMonitorRegisterAll - Registers all of the Krylov subspace monitors in the `KSP` package.

128:   Not Collective

130:   Level: advanced

132: .seealso: [](ch_ksp), `KSP`, `KSPMonitorRegister()`, `KSPRegister()`
133: @*/
134: PetscErrorCode KSPMonitorRegisterAll(void)
135: {
136:   PetscFunctionBegin;
137:   if (KSPMonitorRegisterAllCalled) PetscFunctionReturn(PETSC_SUCCESS);
138:   KSPMonitorRegisterAllCalled = PETSC_TRUE;

140:   PetscCall(KSPMonitorRegister("preconditioned_residual", PETSCVIEWERASCII, PETSC_VIEWER_DEFAULT, KSPMonitorResidual, NULL, NULL));
141:   PetscCall(KSPMonitorRegister("preconditioned_residual", PETSCVIEWERHDF5, PETSC_VIEWER_DEFAULT, KSPMonitorResidualView, NULL, NULL));
142:   PetscCall(KSPMonitorRegister("preconditioned_residual", PETSCVIEWERHDF5, PETSC_VIEWER_HDF5_VIZ, KSPMonitorResidualView, NULL, NULL));
143:   PetscCall(KSPMonitorRegister("preconditioned_residual", PETSCVIEWERDRAW, PETSC_VIEWER_DEFAULT, KSPMonitorResidualView, NULL, NULL));
144:   PetscCall(KSPMonitorRegister("preconditioned_residual", PETSCVIEWERDRAW, PETSC_VIEWER_DRAW_LG, KSPMonitorResidualDrawLG, KSPMonitorResidualDrawLGCreate, NULL));
145:   PetscCall(KSPMonitorRegister("preconditioned_residual", PETSCVIEWERVTK, PETSC_VIEWER_VTK_VTS, KSPMonitorResidualView, NULL, NULL));
146:   PetscCall(KSPMonitorRegister("preconditioned_residual", PETSCVIEWERVTK, PETSC_VIEWER_VTK_VTR, KSPMonitorResidualView, NULL, NULL));
147:   PetscCall(KSPMonitorRegister("preconditioned_residual", PETSCVIEWERVTK, PETSC_VIEWER_VTK_VTU, KSPMonitorResidualView, NULL, NULL));
148:   PetscCall(KSPMonitorRegister("preconditioned_residual_range", PETSCVIEWERASCII, PETSC_VIEWER_DEFAULT, KSPMonitorResidualRange, NULL, NULL));
149:   PetscCall(KSPMonitorRegister("true_residual", PETSCVIEWERASCII, PETSC_VIEWER_DEFAULT, KSPMonitorTrueResidual, NULL, NULL));
150:   PetscCall(KSPMonitorRegister("true_residual", PETSCVIEWERHDF5, PETSC_VIEWER_DEFAULT, KSPMonitorTrueResidualView, NULL, NULL));
151:   PetscCall(KSPMonitorRegister("true_residual", PETSCVIEWERDRAW, PETSC_VIEWER_DEFAULT, KSPMonitorTrueResidualView, NULL, NULL));
152:   PetscCall(KSPMonitorRegister("true_residual", PETSCVIEWERDRAW, PETSC_VIEWER_DRAW_LG, KSPMonitorTrueResidualDrawLG, KSPMonitorTrueResidualDrawLGCreate, NULL));
153:   PetscCall(KSPMonitorRegister("true_residual_max", PETSCVIEWERASCII, PETSC_VIEWER_DEFAULT, KSPMonitorTrueResidualMax, NULL, NULL));
154:   PetscCall(KSPMonitorRegister("error", PETSCVIEWERASCII, PETSC_VIEWER_DEFAULT, KSPMonitorError, NULL, NULL));
155:   PetscCall(KSPMonitorRegister("error", PETSCVIEWERDRAW, PETSC_VIEWER_DEFAULT, KSPMonitorErrorDraw, NULL, NULL));
156:   PetscCall(KSPMonitorRegister("error", PETSCVIEWERDRAW, PETSC_VIEWER_DRAW_LG, KSPMonitorErrorDrawLG, KSPMonitorErrorDrawLGCreate, NULL));
157:   PetscCall(KSPMonitorRegister("solution", PETSCVIEWERASCII, PETSC_VIEWER_DEFAULT, KSPMonitorSolution, NULL, NULL));
158:   PetscCall(KSPMonitorRegister("solution", PETSCVIEWERDRAW, PETSC_VIEWER_DEFAULT, KSPMonitorSolutionDraw, NULL, NULL));
159:   PetscCall(KSPMonitorRegister("solution", PETSCVIEWERDRAW, PETSC_VIEWER_DRAW_LG, KSPMonitorSolutionDrawLG, KSPMonitorSolutionDrawLGCreate, NULL));
160:   PetscCall(KSPMonitorRegister("singular_value", PETSCVIEWERASCII, PETSC_VIEWER_DEFAULT, KSPMonitorSingularValue, KSPMonitorSingularValueCreate, NULL));
161:   PetscCall(KSPMonitorRegister("lsqr_residual", PETSCVIEWERASCII, PETSC_VIEWER_DEFAULT, KSPLSQRMonitorResidual, NULL, NULL));
162:   PetscCall(KSPMonitorRegister("lsqr_residual", PETSCVIEWERDRAW, PETSC_VIEWER_DRAW_LG, KSPLSQRMonitorResidualDrawLG, KSPLSQRMonitorResidualDrawLGCreate, NULL));
163:   PetscFunctionReturn(PETSC_SUCCESS);
164: }