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);
54: PETSC_EXTERN PetscErrorCode KSPCreate_EKSM(KSP);
56: /*@
57: KSPRegisterAll - Registers all of the Krylov subspace methods in the `KSP` package.
59: Not Collective
61: Level: advanced
63: .seealso: [](ch_ksp), `KSP`, `KSPRegister()`, `KSPType`
64: @*/
65: PetscErrorCode KSPRegisterAll(void)
66: {
67: PetscFunctionBegin;
68: if (KSPRegisterAllCalled) PetscFunctionReturn(PETSC_SUCCESS);
69: KSPRegisterAllCalled = PETSC_TRUE;
71: PetscCall(KSPRegister(KSPCG, KSPCreate_CG));
72: PetscCall(KSPRegister(KSPGROPPCG, KSPCreate_GROPPCG));
73: PetscCall(KSPRegister(KSPPIPECG, KSPCreate_PIPECG));
74: PetscCall(KSPRegister(KSPPIPECGRR, KSPCreate_PIPECGRR));
75: PetscCall(KSPRegister(KSPPIPELCG, KSPCreate_PIPELCG));
76: PetscCall(KSPRegister(KSPPIPEPRCG, KSPCreate_PIPEPRCG));
77: PetscCall(KSPRegister(KSPPIPECG2, KSPCreate_PIPECG2));
78: PetscCall(KSPRegister(KSPCGNE, KSPCreate_CGNE));
79: PetscCall(KSPRegister(KSPNASH, KSPCreate_NASH));
80: PetscCall(KSPRegister(KSPSTCG, KSPCreate_STCG));
81: PetscCall(KSPRegister(KSPGLTR, KSPCreate_GLTR));
82: PetscCall(KSPRegister(KSPRICHARDSON, KSPCreate_Richardson));
83: PetscCall(KSPRegister(KSPCHEBYSHEV, KSPCreate_Chebyshev));
84: PetscCall(KSPRegister(KSPGMRES, KSPCreate_GMRES));
85: PetscCall(KSPRegister(KSPTCQMR, KSPCreate_TCQMR));
86: PetscCall(KSPRegister(KSPFCG, KSPCreate_FCG));
87: PetscCall(KSPRegister(KSPPIPEFCG, KSPCreate_PIPEFCG));
88: PetscCall(KSPRegister(KSPBCGS, KSPCreate_BCGS));
89: PetscCall(KSPRegister(KSPIBCGS, KSPCreate_IBCGS));
90: PetscCall(KSPRegister(KSPQMRCGS, KSPCreate_QMRCGS));
91: PetscCall(KSPRegister(KSPFBCGS, KSPCreate_FBCGS));
92: PetscCall(KSPRegister(KSPPIPEBCGS, KSPCreate_PIPEBCGS));
93: PetscCall(KSPRegister(KSPFBCGSR, KSPCreate_FBCGSR));
94: PetscCall(KSPRegister(KSPBCGSL, KSPCreate_BCGSL));
95: PetscCall(KSPRegister(KSPCGS, KSPCreate_CGS));
96: PetscCall(KSPRegister(KSPTFQMR, KSPCreate_TFQMR));
97: PetscCall(KSPRegister(KSPCR, KSPCreate_CR));
98: PetscCall(KSPRegister(KSPPIPECR, KSPCreate_PIPECR));
99: PetscCall(KSPRegister(KSPLSQR, KSPCreate_LSQR));
100: PetscCall(KSPRegister(KSPPREONLY, KSPCreate_PREONLY));
101: PetscCall(KSPRegister(KSPNONE, KSPCreate_PREONLY));
102: PetscCall(KSPRegister(KSPQCG, KSPCreate_QCG));
103: PetscCall(KSPRegister(KSPBICG, KSPCreate_BiCG));
104: PetscCall(KSPRegister(KSPFGMRES, KSPCreate_FGMRES));
105: PetscCall(KSPRegister(KSPPIPEFGMRES, KSPCreate_PIPEFGMRES));
106: PetscCall(KSPRegister(KSPMINRES, KSPCreate_MINRES));
107: PetscCall(KSPRegister(KSPSYMMLQ, KSPCreate_SYMMLQ));
108: PetscCall(KSPRegister(KSPLGMRES, KSPCreate_LGMRES));
109: PetscCall(KSPRegister(KSPLCD, KSPCreate_LCD));
110: PetscCall(KSPRegister(KSPGCR, KSPCreate_GCR));
111: PetscCall(KSPRegister(KSPPIPEGCR, KSPCreate_PIPEGCR));
112: PetscCall(KSPRegister(KSPPGMRES, KSPCreate_PGMRES));
113: #if !PetscDefined(USE_COMPLEX)
114: PetscCall(KSPRegister(KSPDGMRES, KSPCreate_DGMRES));
115: #endif
116: PetscCall(KSPRegister(KSPTSIRM, KSPCreate_TSIRM));
117: PetscCall(KSPRegister(KSPCGLS, KSPCreate_CGLS));
118: PetscCall(KSPRegister(KSPFETIDP, KSPCreate_FETIDP));
119: #if PetscDefined(HAVE_HPDDM)
120: PetscCall(KSPRegister(KSPHPDDM, KSPCreate_HPDDM));
121: #endif
122: PetscCall(KSPRegister(KSPIDR, KSPCreate_IDR));
123: PetscCall(KSPRegister(KSPEKSM, KSPCreate_EKSM));
124: PetscFunctionReturn(PETSC_SUCCESS);
125: }
127: /*@
128: KSPMonitorRegisterAll - Registers all of the Krylov subspace monitors in the `KSP` package.
130: Not Collective
132: Level: advanced
134: .seealso: [](ch_ksp), `KSP`, `KSPMonitorRegister()`, `KSPRegister()`
135: @*/
136: PetscErrorCode KSPMonitorRegisterAll(void)
137: {
138: PetscFunctionBegin;
139: if (KSPMonitorRegisterAllCalled) PetscFunctionReturn(PETSC_SUCCESS);
140: KSPMonitorRegisterAllCalled = PETSC_TRUE;
142: PetscCall(KSPMonitorRegister("preconditioned_residual", PETSCVIEWERASCII, PETSC_VIEWER_DEFAULT, KSPMonitorResidual, NULL, NULL));
143: PetscCall(KSPMonitorRegister("preconditioned_residual", PETSCVIEWERHDF5, PETSC_VIEWER_DEFAULT, KSPMonitorResidualView, NULL, NULL));
144: PetscCall(KSPMonitorRegister("preconditioned_residual", PETSCVIEWERHDF5, PETSC_VIEWER_HDF5_VIZ, KSPMonitorResidualView, NULL, NULL));
145: PetscCall(KSPMonitorRegister("preconditioned_residual", PETSCVIEWERDRAW, PETSC_VIEWER_DEFAULT, KSPMonitorResidualView, NULL, NULL));
146: PetscCall(KSPMonitorRegister("preconditioned_residual", PETSCVIEWERDRAW, PETSC_VIEWER_DRAW_LG, KSPMonitorResidualDrawLG, KSPMonitorResidualDrawLGCreate, NULL));
147: PetscCall(KSPMonitorRegister("preconditioned_residual", PETSCVIEWERVTK, PETSC_VIEWER_VTK_VTS, KSPMonitorResidualView, NULL, NULL));
148: PetscCall(KSPMonitorRegister("preconditioned_residual", PETSCVIEWERVTK, PETSC_VIEWER_VTK_VTR, KSPMonitorResidualView, NULL, NULL));
149: PetscCall(KSPMonitorRegister("preconditioned_residual", PETSCVIEWERVTK, PETSC_VIEWER_VTK_VTU, KSPMonitorResidualView, NULL, NULL));
150: PetscCall(KSPMonitorRegister("preconditioned_residual_range", PETSCVIEWERASCII, PETSC_VIEWER_DEFAULT, KSPMonitorResidualRange, NULL, NULL));
151: PetscCall(KSPMonitorRegister("true_residual", PETSCVIEWERASCII, PETSC_VIEWER_DEFAULT, KSPMonitorTrueResidual, NULL, NULL));
152: PetscCall(KSPMonitorRegister("true_residual", PETSCVIEWERHDF5, PETSC_VIEWER_DEFAULT, KSPMonitorTrueResidualView, NULL, NULL));
153: PetscCall(KSPMonitorRegister("true_residual", PETSCVIEWERDRAW, PETSC_VIEWER_DEFAULT, KSPMonitorTrueResidualView, NULL, NULL));
154: PetscCall(KSPMonitorRegister("true_residual", PETSCVIEWERDRAW, PETSC_VIEWER_DRAW_LG, KSPMonitorTrueResidualDrawLG, KSPMonitorTrueResidualDrawLGCreate, NULL));
155: PetscCall(KSPMonitorRegister("true_residual_max", PETSCVIEWERASCII, PETSC_VIEWER_DEFAULT, KSPMonitorTrueResidualMax, NULL, NULL));
156: PetscCall(KSPMonitorRegister("error", PETSCVIEWERASCII, PETSC_VIEWER_DEFAULT, KSPMonitorError, NULL, NULL));
157: PetscCall(KSPMonitorRegister("error", PETSCVIEWERDRAW, PETSC_VIEWER_DEFAULT, KSPMonitorErrorDraw, NULL, NULL));
158: PetscCall(KSPMonitorRegister("error", PETSCVIEWERDRAW, PETSC_VIEWER_DRAW_LG, KSPMonitorErrorDrawLG, KSPMonitorErrorDrawLGCreate, NULL));
159: PetscCall(KSPMonitorRegister("solution", PETSCVIEWERASCII, PETSC_VIEWER_DEFAULT, KSPMonitorSolution, NULL, NULL));
160: PetscCall(KSPMonitorRegister("solution", PETSCVIEWERDRAW, PETSC_VIEWER_DEFAULT, KSPMonitorSolutionDraw, NULL, NULL));
161: PetscCall(KSPMonitorRegister("solution", PETSCVIEWERDRAW, PETSC_VIEWER_DRAW_LG, KSPMonitorSolutionDrawLG, KSPMonitorSolutionDrawLGCreate, NULL));
162: PetscCall(KSPMonitorRegister("singular_value", PETSCVIEWERASCII, PETSC_VIEWER_DEFAULT, KSPMonitorSingularValue, KSPMonitorSingularValueCreate, NULL));
163: PetscCall(KSPMonitorRegister("lsqr_residual", PETSCVIEWERASCII, PETSC_VIEWER_DEFAULT, KSPLSQRMonitorResidual, NULL, NULL));
164: PetscCall(KSPMonitorRegister("lsqr_residual", PETSCVIEWERDRAW, PETSC_VIEWER_DRAW_LG, KSPLSQRMonitorResidualDrawLG, KSPLSQRMonitorResidualDrawLGCreate, NULL));
165: PetscFunctionReturn(PETSC_SUCCESS);
166: }