xref: /petsc/src/snes/impls/ncg/snesncgimpl.h (revision fef7b6d8e45eee5b2327135157d7cc4a059fd396)
1*fef7b6d8SPeter Brune /*
2*fef7b6d8SPeter Brune    Private context for Richardson iteration
3*fef7b6d8SPeter Brune */
4*fef7b6d8SPeter Brune 
5*fef7b6d8SPeter Brune #ifndef __SNES_NCG_H
6*fef7b6d8SPeter Brune #define __SNES_NCG_H
7*fef7b6d8SPeter Brune #include <private/snesimpl.h>
8*fef7b6d8SPeter Brune 
9*fef7b6d8SPeter Brune typedef struct {
10*fef7b6d8SPeter Brune   SNESLineSearchType type;
11*fef7b6d8SPeter Brune   PetscErrorCode     (*LineSearch)(SNES,void*,Vec,Vec,Vec,PetscReal,PetscReal,Vec,Vec,PetscReal*,PetscReal*,PetscBool *);
12*fef7b6d8SPeter Brune   /* Line Search Parameters */
13*fef7b6d8SPeter Brune   PetscReal          damping;
14*fef7b6d8SPeter Brune   PetscReal          maxstep;                                                        /* maximum step size */
15*fef7b6d8SPeter Brune   PetscReal          steptol;                                                        /* step convergence tolerance */
16*fef7b6d8SPeter Brune   PetscErrorCode     (*precheckstep)(SNES,Vec,Vec,void*,PetscBool *);                  /* step-checking routine (optional) */
17*fef7b6d8SPeter Brune   void               *precheck;                                                       /* user-defined step-checking context (optional) */
18*fef7b6d8SPeter Brune   PetscErrorCode     (*postcheckstep)(SNES,Vec,Vec,Vec,void*,PetscBool *,PetscBool *); /* step-checking routine (optional) */
19*fef7b6d8SPeter Brune   void               *postcheck;                                                      /* user-defined step-checking context (optional) */
20*fef7b6d8SPeter Brune   void               *lsP;                                                            /* user-defined line-search context (optional) */
21*fef7b6d8SPeter Brune   PetscViewer        monitor;
22*fef7b6d8SPeter Brune } SNES_NCG;
23*fef7b6d8SPeter Brune 
24*fef7b6d8SPeter Brune #endif
25*fef7b6d8SPeter Brune 
26