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