xref: /petsc/include/petscsnes.h (revision f03417d36c71e2997ebf2d81042931cd8fa697a7)
1*f03417d3SBarry Smith /* $Id: snes.h,v 1.1 1995/03/20 00:12:47 bsmith Exp bsmith $ */
2b1f5cb9dSBarry Smith 
3*f03417d3SBarry Smith #if !defined(__SNES_PACKAGE)
4*f03417d3SBarry Smith #define __SNES_PACKAGE
5b1f5cb9dSBarry Smith 
6*f03417d3SBarry Smith typedef enum { NLE_NLS1,
7*f03417d3SBarry Smith                NLE_NTR1,
8*f03417d3SBarry Smith                NLE_NTR2_DOG,
9*f03417d3SBarry Smith                NLE_NTR2_LIN,
10*f03417d3SBarry Smith                NLE_NBASIC,
11*f03417d3SBarry Smith                NLM_NLS1,
12*f03417d3SBarry Smith                NLM_NTR1 }
13*f03417d3SBarry Smith   NLMETHOD;
14b1f5cb9dSBarry Smith 
15*f03417d3SBarry Smith typedef enum { NLINITIAL_GUESS,
16*f03417d3SBarry Smith                NLRESIDUAL,
17*f03417d3SBarry Smith                NLFUNCTION,
18*f03417d3SBarry Smith                NLGRADIENT,
19*f03417d3SBarry Smith                NLMATRIX,
20*f03417d3SBarry Smith                NLCORE,
21*f03417d3SBarry Smith                NLSTEP_SETUP,
22*f03417d3SBarry Smith                NLSTEP_COMPUTE,
23*f03417d3SBarry Smith                NLSTEP_DESTROY,
24*f03417d3SBarry Smith                NLTOTAL }
25*f03417d3SBarry Smith    NLPHASE;
26b1f5cb9dSBarry Smith 
27*f03417d3SBarry Smith typedef enum { NLE, NLM } NLTYPE;
28*f03417d3SBarry Smith 
29*f03417d3SBarry Smith extern void NLSetResidual               ANSI_ARGS((NLCtx*, void *));
30*f03417d3SBarry Smith extern void NLSetResidualRoutine        ANSI_ARGS((NLCtx*,
31*f03417d3SBarry Smith                                         void (*)(NLCtx*, void*, void*), int ));
32*f03417d3SBarry Smith extern void NLSetMaxResidualEvaluations ANSI_ARGS((NLCtx*, int ));
33*f03417d3SBarry Smith extern void *NLGetResidual              ANSI_ARGS((NLCtx *));
34*f03417d3SBarry Smith extern void NLiResid                    ANSI_ARGS((NLCtx*, void *, void *));
35*f03417d3SBarry Smith 
36*f03417d3SBarry Smith extern void NLENewtonStatisticsMonitor  ANSI_ARGS((NLCtx*, void*, void*,
37*f03417d3SBarry Smith                                         double *));
38*f03417d3SBarry Smith extern void NLENewtonDefaultMonitor     ANSI_ARGS((NLCtx*, void*, void*,
39*f03417d3SBarry Smith                                         double *));
40*f03417d3SBarry Smith extern int  NLENewtonDefaultConverged   ANSI_ARGS((NLCtx*, double*, double*,
41*f03417d3SBarry Smith                                         double *));
42*f03417d3SBarry Smith extern char *NLENewtonDefaultConvergedType ANSI_ARGS((NLCtx *));
43*f03417d3SBarry Smith 
44*f03417d3SBarry Smith extern int SNESGetSLES(SNES,SLES*);
45*f03417d3SBarry Smith 
46b1f5cb9dSBarry Smith extern void     NLSlesSetDampingFlag	ANSI_ARGS((NLCtx*, int));
47b1f5cb9dSBarry Smith extern void     NLSlesSetSaveSolverCtx	ANSI_ARGS((NLCtx *));
48b1f5cb9dSBarry Smith 
49b1f5cb9dSBarry Smith /* ---- Routines to extract information from the NLSles context ---- */
50b1f5cb9dSBarry Smith extern int      NLSlesGetDampingFlag	ANSI_ARGS((NLCtx *));
51b1f5cb9dSBarry Smith extern int      NLSlesSaveSolverCtx	ANSI_ARGS((NLCtx *));
52b1f5cb9dSBarry Smith 
53b1f5cb9dSBarry Smith /* --- Miscellaneous routines --- */
54b1f5cb9dSBarry Smith extern void     NLSlesSetUp 		ANSI_ARGS((NLCtx*, void *));
55b1f5cb9dSBarry Smith extern void     NLSlesSetGeneralStep	ANSI_ARGS((NLCtx*,
56b1f5cb9dSBarry Smith 					void (*)(NLCtx *, void *) ));
57b1f5cb9dSBarry Smith extern void     NLSlesSetRoutines	ANSI_ARGS((NLCtx*,
58b1f5cb9dSBarry Smith 					void (*)(NLCtx *, void *) ));
59b1f5cb9dSBarry Smith extern void     NLSlesApplyForwardSolve ANSI_ARGS((NLCtx*, void*, void *));
60b1f5cb9dSBarry Smith extern void     NLSlesApplyBackwardSolve ANSI_ARGS((NLCtx*, void*, void *));
61b1f5cb9dSBarry Smith        void     NLSlesCheck		ANSI_ARGS((NLCtx*, char*));
62b1f5cb9dSBarry Smith extern int      NLSlesSolveScale	ANSI_ARGS((NLCtx*, void*, void*,
63b1f5cb9dSBarry Smith 					void*, double*, double*, double*,
64b1f5cb9dSBarry Smith 					double*, double*, void *));
65b1f5cb9dSBarry Smith 
66