1acbee50cSBarry Smith 2acbee50cSBarry Smith /* 3acbee50cSBarry Smith Context for a Newton trust region method for solving a system 4acbee50cSBarry Smith of nonlinear equations 5acbee50cSBarry Smith */ 6acbee50cSBarry Smith 7519f805aSKarl Rupp #if !defined(__SNES_TR_H) 8acbee50cSBarry Smith #define __SNES_TR_H 9af0996ceSBarry Smith #include <petsc/private/snesimpl.h> 10acbee50cSBarry Smith 11acbee50cSBarry Smith typedef struct { 12acbee50cSBarry Smith /* ---- Parameters used by the trust region method ---- */ 13acbee50cSBarry Smith PetscReal mu; /* used to compute trust region parameter */ 14acbee50cSBarry Smith PetscReal eta; /* used to compute trust region parameter */ 15acbee50cSBarry Smith PetscReal delta; /* trust region parameter */ 16acbee50cSBarry Smith PetscReal delta0; /* used to initialize trust region parameter */ 17acbee50cSBarry Smith PetscReal delta1; /* used to compute trust region parameter */ 18acbee50cSBarry Smith PetscReal delta2; /* used to compute trust region parameter */ 19acbee50cSBarry Smith PetscReal delta3; /* used to compute trust region parameter */ 20acbee50cSBarry Smith PetscReal sigma; /* used to detemine termination */ 21ace3abfcSBarry Smith PetscBool itflag; /* flag for convergence testing */ 22acbee50cSBarry Smith PetscReal rnorm0,ttol; /* used for KSP convergence test */ 23*c9368356SGlenn Hammond PetscErrorCode (*precheck)(SNES,Vec,Vec,PetscBool*,void*); 24*c9368356SGlenn Hammond void *precheckctx; 25*c9368356SGlenn Hammond PetscErrorCode (*postcheck)(SNES,Vec,Vec,Vec,PetscBool*,PetscBool*,void*); 267cb011f5SBarry Smith void *postcheckctx; 2704d7464bSBarry Smith } SNES_NEWTONTR; 28acbee50cSBarry Smith 29acbee50cSBarry Smith #endif 30