Actual source code: gmres2.c
1: #include <../src/ksp/ksp/impls/gmres/gmresimpl.h>
3: /*@C
4: KSPGMRESSetOrthogonalization - Sets the orthogonalization routine used by `KSPGMRES` and `KSPFGMRES`.
6: Logically Collective
8: Input Parameters:
9: + ksp - iterative context obtained from `KSPCreate()`
10: - fcn - orthogonalization function
12: Calling sequence of fcn:
13: + ksp - the solver context
14: - it - the current iteration
16: Options Database Keys:
17: + -ksp_gmres_classicalgramschmidt - Activates KSPGMRESClassicalGramSchmidtOrthogonalization() (default)
18: - -ksp_gmres_modifiedgramschmidt - Activates KSPGMRESModifiedGramSchmidtOrthogonalization()
20: Level: intermediate
22: Notes:
23: Two orthogonalization routines are predefined, including `KSPGMRESModifiedGramSchmidtOrthogonalization()` and the default
24: `KSPGMRESClassicalGramSchmidtOrthogonalization()`.
26: Use `KSPGMRESSetCGSRefinementType()` to determine if iterative refinement is used to increase stability.
28: .seealso: [](ch_ksp), `KSPGMRESSetRestart()`, `KSPGMRESSetPreAllocateVectors()`,
29: `KSPGMRESSetCGSRefinementType()`, `KSPGMRESModifiedGramSchmidtOrthogonalization()`,
30: `KSPGMRESClassicalGramSchmidtOrthogonalization()`, `KSPGMRESGetCGSRefinementType()`
31: @*/
32: PetscErrorCode KSPGMRESSetOrthogonalization(KSP ksp, PetscErrorCode (*fcn)(KSP ksp, PetscInt it))
33: {
34: PetscFunctionBegin;
36: PetscTryMethod(ksp, "KSPGMRESSetOrthogonalization_C", (KSP, PetscErrorCode(*)(KSP, PetscInt)), (ksp, fcn));
37: PetscFunctionReturn(PETSC_SUCCESS);
38: }
40: /*@C
41: KSPGMRESGetOrthogonalization - Gets the orthogonalization routine used by `KSPGMRES` and `KSPFGMRES`.
43: Not Collective
45: Input Parameter:
46: . ksp - iterative context obtained from `KSPCreate()`
48: Output Parameter:
49: . fcn - orthogonalization function
51: Calling sequence of `fcn`:
52: + ksp - the solver context
53: - it - the current iteration
55: Options Database Keys:
56: + -ksp_gmres_classicalgramschmidt - Activates KSPGMRESClassicalGramSchmidtOrthogonalization() (default)
57: - -ksp_gmres_modifiedgramschmidt - Activates KSPGMRESModifiedGramSchmidtOrthogonalization()
59: Level: intermediate
61: Notes:
62: Two orthogonalization routines are predefined, including `KSPGMRESModifiedGramSchmidtOrthogonalization()`, and the default
63: `KSPGMRESClassicalGramSchmidtOrthogonalization()`
65: Use `KSPGMRESSetCGSRefinementType()` to determine if iterative refinement is used to increase stability.
67: .seealso: [](ch_ksp), `KSPGMRESSetRestart()`, `KSPGMRESSetPreAllocateVectors()`, `KSPGMRESSetCGSRefinementType()`, `KSPGMRESSetOrthogonalization()`,
68: `KSPGMRESModifiedGramSchmidtOrthogonalization()`, `KSPGMRESClassicalGramSchmidtOrthogonalization()`, `KSPGMRESGetCGSRefinementType()`
69: @*/
70: PetscErrorCode KSPGMRESGetOrthogonalization(KSP ksp, PetscErrorCode (**fcn)(KSP ksp, PetscInt it))
71: {
72: PetscFunctionBegin;
74: PetscUseMethod(ksp, "KSPGMRESGetOrthogonalization_C", (KSP, PetscErrorCode(**)(KSP, PetscInt)), (ksp, fcn));
75: PetscFunctionReturn(PETSC_SUCCESS);
76: }