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, `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: Level: intermediate
57: Notes:
58: Two orthogonalization routines are predefined, `KSPGMRESModifiedGramSchmidtOrthogonalization()`, and the default
59: `KSPGMRESClassicalGramSchmidtOrthogonalization()`
61: Use `KSPGMRESSetCGSRefinementType()` to determine if iterative refinement is used to increase stability.
63: .seealso: [](ch_ksp), `KSPGMRESSetRestart()`, `KSPGMRESSetPreAllocateVectors()`, `KSPGMRESSetCGSRefinementType()`, `KSPGMRESSetOrthogonalization()`,
64: `KSPGMRESModifiedGramSchmidtOrthogonalization()`, `KSPGMRESClassicalGramSchmidtOrthogonalization()`, `KSPGMRESGetCGSRefinementType()`
65: @*/
66: PetscErrorCode KSPGMRESGetOrthogonalization(KSP ksp, PetscErrorCode (**fcn)(KSP ksp, PetscInt it))
67: {
68: PetscFunctionBegin;
70: PetscUseMethod(ksp, "KSPGMRESGetOrthogonalization_C", (KSP, PetscErrorCode (**)(KSP, PetscInt)), (ksp, fcn));
71: PetscFunctionReturn(PETSC_SUCCESS);
72: }