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