Actual source code: gmres2.c
2: #include <../src/ksp/ksp/impls/gmres/gmresimpl.h>
4: /*@C
5: KSPGMRESSetOrthogonalization - Sets the orthogonalization routine used by GMRES and FGMRES.
7: Logically Collective on ksp
9: Input Parameters:
10: + ksp - iterative context obtained from KSPCreate
11: - fcn - orthogonalization function
13: Calling Sequence of function:
14: $ errorcode = PetscErrorCode fcn(KSP ksp,PetscInt it);
15: $ it is one minus the number of GMRES iterations since last restart;
16: $ i.e. the size of Krylov space minus one
18: Notes:
19: Two orthogonalization routines are predefined, including
21: KSPGMRESModifiedGramSchmidtOrthogonalization()
23: KSPGMRESClassicalGramSchmidtOrthogonalization() - Default. Use KSPGMRESSetCGSRefinementType() to determine if
24: iterative refinement is used to increase stability.
26: Options Database Keys:
28: + -ksp_gmres_classicalgramschmidt - Activates KSPGMRESClassicalGramSchmidtOrthogonalization() (default)
29: - -ksp_gmres_modifiedgramschmidt - Activates KSPGMRESModifiedGramSchmidtOrthogonalization()
31: Level: intermediate
33: .seealso: KSPGMRESSetRestart(), KSPGMRESSetPreAllocateVectors(), KSPGMRESSetCGSRefinementType(), KSPGMRESSetOrthogonalization(),
34: KSPGMRESModifiedGramSchmidtOrthogonalization(), KSPGMRESClassicalGramSchmidtOrthogonalization(), KSPGMRESGetCGSRefinementType()
35: @*/
36: PetscErrorCode KSPGMRESSetOrthogonalization(KSP ksp,PetscErrorCode (*fcn)(KSP,PetscInt))
37: {
42: PetscTryMethod(ksp,"KSPGMRESSetOrthogonalization_C",(KSP,PetscErrorCode (*)(KSP,PetscInt)),(ksp,fcn));
43: return(0);
44: }
46: /*@C
47: KSPGMRESGetOrthogonalization - Gets the orthogonalization routine used by GMRES and FGMRES.
49: Not Collective
51: Input Parameter:
52: . ksp - iterative context obtained from KSPCreate
54: Output Parameter:
55: . fcn - orthogonalization function
57: Calling Sequence of function:
58: $ errorcode = PetscErrorCode fcn(KSP ksp,PetscInt it);
59: $ it is one minus the number of GMRES iterations since last restart;
60: $ i.e. the size of Krylov space minus one
62: Notes:
63: Two orthogonalization routines are predefined, including
65: KSPGMRESModifiedGramSchmidtOrthogonalization()
67: KSPGMRESClassicalGramSchmidtOrthogonalization() - Default. Use KSPGMRESSetCGSRefinementType() to determine if
68: iterative refinement is used to increase stability.
70: Options Database Keys:
72: + -ksp_gmres_classicalgramschmidt - Activates KSPGMRESClassicalGramSchmidtOrthogonalization() (default)
73: - -ksp_gmres_modifiedgramschmidt - Activates KSPGMRESModifiedGramSchmidtOrthogonalization()
75: Level: intermediate
77: .seealso: KSPGMRESSetRestart(), KSPGMRESSetPreAllocateVectors(), KSPGMRESSetCGSRefinementType(), KSPGMRESSetOrthogonalization(),
78: KSPGMRESModifiedGramSchmidtOrthogonalization(), KSPGMRESClassicalGramSchmidtOrthogonalization(), KSPGMRESGetCGSRefinementType()
79: @*/
80: PetscErrorCode KSPGMRESGetOrthogonalization(KSP ksp,PetscErrorCode (**fcn)(KSP,PetscInt))
81: {
86: PetscUseMethod(ksp,"KSPGMRESGetOrthogonalization_C",(KSP,PetscErrorCode (**)(KSP,PetscInt)),(ksp,fcn));
87: return(0);
88: }