xref: /petsc/src/snes/impls/tr/trimpl.h (revision 4a221d5978a6d86d172efe6a78940aca257e68d3)
1acbee50cSBarry Smith /*
2acbee50cSBarry Smith    Context for a Newton trust region method for solving a system
3acbee50cSBarry Smith    of nonlinear equations
4acbee50cSBarry Smith  */
5acbee50cSBarry Smith 
66524c165SJacob Faibussowitsch #ifndef __SNES_TR_H
7acbee50cSBarry Smith #define __SNES_TR_H
8af0996ceSBarry Smith #include <petsc/private/snesimpl.h>
9acbee50cSBarry Smith 
10acbee50cSBarry Smith typedef struct {
11acbee50cSBarry Smith   PetscReal delta;  /* trust region parameter */
12*4a221d59SStefano Zampini   PetscReal delta0; /* initial radius for trust region */
13*4a221d59SStefano Zampini   PetscReal deltaM; /* maximum radius for trust region */
14*4a221d59SStefano Zampini 
15*4a221d59SStefano Zampini   /*
16*4a221d59SStefano Zampini     Given rho = (fk - fkp1) / (m(0) - m(pk))
17*4a221d59SStefano Zampini 
18*4a221d59SStefano Zampini     The radius is modified as:
19*4a221d59SStefano Zampini       rho < eta2 -> delta *= t1
20*4a221d59SStefano Zampini       rho > eta3 -> delta *= t2
21*4a221d59SStefano Zampini       delta = min(delta,deltaM)
22*4a221d59SStefano Zampini 
23*4a221d59SStefano Zampini     The step is accepted if rho > eta1
24*4a221d59SStefano Zampini   */
25*4a221d59SStefano Zampini   PetscReal eta1;
26*4a221d59SStefano Zampini   PetscReal eta2;
27*4a221d59SStefano Zampini   PetscReal eta3;
28*4a221d59SStefano Zampini   PetscReal t1;
29*4a221d59SStefano Zampini   PetscReal t2;
30*4a221d59SStefano Zampini 
31*4a221d59SStefano Zampini   SNESNewtonTRFallbackType fallback; /* enum to distinguish fallback in case Newton step is outside of the trust region */
32*4a221d59SStefano Zampini 
33c9368356SGlenn Hammond   PetscErrorCode (*precheck)(SNES, Vec, Vec, PetscBool *, void *);
34c9368356SGlenn Hammond   void *precheckctx;
35c9368356SGlenn Hammond   PetscErrorCode (*postcheck)(SNES, Vec, Vec, Vec, PetscBool *, PetscBool *, void *);
367cb011f5SBarry Smith   void *postcheckctx;
3704d7464bSBarry Smith } SNES_NEWTONTR;
38acbee50cSBarry Smith 
39acbee50cSBarry Smith #endif
40