xref: /petsc/src/ksp/ksp/impls/gmres/fgmres/fgmresimpl.h (revision 261990621b8271d303ed08a016fbf5046de1bd47)
1 #pragma once
2 
3 #define KSPGMRES_NO_MACROS
4 #include <../src/ksp/ksp/impls/gmres/gmresimpl.h>
5 
6 typedef struct {
7   KSPGMRESHEADER
8 
9   /* new storage for fgmres */
10   Vec  *prevecs;           /* holds the preconditioned basis vectors for fgmres.
11                                     We will allocate these at the same time as vecs
12                                     above (and in the same "chunks". */
13   Vec **prevecs_user_work; /* same purpose as user_work above, but this one is
14                                     for our preconditioned vectors */
15 
16   /* we need a function for interacting with the pcfamily */
17 
18   KSPFlexibleModifyPCFn *modifypc; /* function to modify the preconditioner*/
19   PetscCtxDestroyFn     *modifydestroy;
20   void                  *modifyctx;
21 } KSP_FGMRES;
22 
23 #define HH(a, b) (fgmres->hh_origin + (b) * (fgmres->max_k + 2) + (a))
24 /* HH will be size (max_k+2)*(max_k+1)  -  think of HH as
25    being stored columnwise for access purposes. */
26 #define HES(a, b) (fgmres->hes_origin + (b) * (fgmres->max_k + 1) + (a))
27 /* HES will be size (max_k + 1) * (max_k + 1) -
28    again, think of HES as being stored columnwise */
29 #define CC(a) (fgmres->cc_origin + (a)) /* CC will be length (max_k+1) - cosines */
30 #define SS(a) (fgmres->ss_origin + (a)) /* SS will be length (max_k+1) - sines */
31 #define RS(a) (fgmres->rs_origin + (a)) /* RS will be length (max_k+2) - rt side */
32 
33 /* vector names */
34 #define VEC_OFFSET     2
35 #define VEC_TEMP       fgmres->vecs[0] /* work space */
36 #define VEC_TEMP_MATOP fgmres->vecs[1] /* work space */
37 #define VEC_VV(i) \
38   fgmres->vecs[VEC_OFFSET + i] /* use to access
39                                                         othog basis vectors */
40 #define PREVEC(i) \
41   fgmres->prevecs[i] /* use to access
42                                                         preconditioned basis */
43