Actual source code: vissimpl.h

  1: /*
  2:    Private context for semismooth newton method with line search for solving
  3:    system of mixed complementarity equations
  4:  */


  9: #include <petsc/private/snesimpl.h>

 11: #define PetscScalarNorm(a,b) (PetscSqrtScalar((a)*(a)+(b)*(b)))

 13: typedef struct {
 14:   Vec         phi;                 /* pointer to semismooth function */
 15:   PetscReal   phinorm;             /* 2-norm of the semismooth function */
 16:   PetscReal   merit;               /* Merit function */
 17:   Vec         dpsi;                /* Merit function gradient */
 18:   Vec         Da;                  /* B sub-differential work vector (diag perturbation) */
 19:   Vec         Db;                  /* B sub-differential work vector (row scaling) */
 20:   Vec         z;                   /* B subdifferential work vector */
 21:   Vec         t;                   /* B subdifferential work vector */
 22:   PetscScalar norm_d;              /* two norm of the descent direction */

 24:   /* Copy of user supplied function evaluation routine  */
 25:   PetscErrorCode (*computeuserfunction)(SNES,Vec,Vec,void*);
 26:   /* user supplied function for checking redundant equations for SNESSolveVI_RS2 */
 27:   PetscErrorCode (*checkredundancy)(SNES,IS,IS*,void*);
 28: } SNES_VINEWTONSSLS;

 30: #endif