1 #ifndef SimTK_SIMMATH_CPODES_H_ 
    2 #define SimTK_SIMMATH_CPODES_H_ 
   70                               const char* 
function, 
char* msg) 
const;
 
   95   { 
return sys.
project(t,ycur,corr,epsProj,err); }
 
  103   { 
return sys.
root(t,y,yp,gout); }
 
  107   { 
return sys.
weight(y,weights); }
 
  110                                 int error_code, 
const char* module, 
 
  111                                 const char* 
function, 
char* msg)
 
  128         UnspecifiedODEType=0,
 
  134         UnspecifiedLinearMultistepMethod=0,
 
  140         UnspecifiedNonlinearSystemIterationType=0,
 
  146         UnspecifiedToleranceType=0,
 
  153         UnspecifiedProjectionNorm=0,
 
  159         UnspecifiedConstraintLinearity=0,
 
  165         UnspecifiedProjectionFactorizationType=0,
 
  173         UnspecifiedStepMode=0,
 
  181        (
ODEType                      ode=UnspecifiedODEType, 
 
  186         librarySideCPodesConstructor(ode, lmm, nls);
 
  188         clientSideCPodesConstructor();
 
  194     static const int Success     = 0;
 
  195     static const int TstopReturn = 1;
 
  196     static const int RootReturn  = 2;
 
  197     static const int Warning     = 99;
 
  198     static const int TooMuchWork = -1;
 
  199     static const int TooClose    = -27;
 
  207     static const int RecoverableError = 9999;
 
  208     static const int UnrecoverableError = -9999;
 
  282                       int tol_typeQ, 
Real reltolQ, 
void* abstolQ);
 
  312                            int* nfevals, 
int* nlinsetups,
 
  313                            int* netfails, 
int* qlast,
 
  314                            int* qcur, 
Real* hinused, 
Real* hlast,
 
  325                      int* nce, 
int* nsetupsP,
 
  367                                      int error_code, 
const char* module, 
 
  368                                      const char* 
function, 
char* msg);
 
  378     void registerExplicitODEFunc(ExplicitODEFunc);
 
  379     void registerImplicitODEFunc(ImplicitODEFunc);
 
  380     void registerConstraintFunc(ConstraintFunc);
 
  381     void registerProjectFunc(ProjectFunc);
 
  382     void registerQuadratureFunc(QuadratureFunc);
 
  383     void registerRootFunc(RootFunc);
 
  384     void registerWeightFunc(WeightFunc);
 
  385     void registerErrorHandlerFunc(ErrorHandlerFunc);
 
  395     void clientSideCPodesConstructor() {
 
  408     class CPodesRep* rep;
 
  409     friend class CPodesRep;
 
  411     const CPodesRep& getRep()
 const {assert(rep); 
return *rep;}
 
  412     CPodesRep&       updRep()       {assert(rep); 
return *rep;}
 
  415     CPodes(
const CPodes&);
 
  416     CPodes& operator=(
const CPodes&);
 
Includes internal headers providing declarations for the basic SimTK Core classes,...
 
This is the header file that every Simmath compilation unit should include first.
 
#define SimTK_SIMMATH_EXPORT
Definition: SimTKmath/include/simmath/internal/common.h:64
 
This abstract class defines the system to be integrated with SimTK CPodes.
Definition: SimTKcpodes.h:49
 
virtual int root(Real t, const Vector &y, const Vector &yp, Vector &gout) const
 
virtual int weight(const Vector &y, Vector &weights) const
 
virtual void errorHandler(int error_code, const char *module, const char *function, char *msg) const
 
virtual int explicitODE(Real t, const Vector &y, Vector &fout) const
 
virtual int constraint(Real t, const Vector &y, Vector &cout) const
 
virtual int project(Real t, const Vector &ycur, Vector &corr, Real epsProj, Vector &err) const
 
virtual ~CPodesSystem()
Definition: SimTKcpodes.h:51
 
virtual int implicitODE(Real t, const Vector &y, const Vector &yp, Vector &fout) const
 
virtual int quadrature(Real t, const Vector &y, Vector &qout) const
 
This is a straightforward translation of the Sundials CPODES C interface into C++.
Definition: SimTKcpodes.h:122
 
int getProjNumFailures(int *nprf)
 
int getNumFctEvals(int *nfevals)
 
int lapackBand(int N, int mupper, int mlower)
 
int getIntegratorStats(int *nsteps, int *nfevals, int *nlinsetups, int *netfails, int *qlast, int *qcur, Real *hinused, Real *hlast, Real *hcur, Real *tcur)
 
int quadInit(const Vector &q0)
 
NonlinearSystemIterationType
Definition: SimTKcpodes.h:139
 
@ Newton
Definition: SimTKcpodes.h:141
 
int getRootInfo(int *rootsfound)
 
int reInit(CPodesSystem &sys, Real t0, const Vector &y0, const Vector &yp0, ToleranceType tt, Real reltol, void *abstol)
 
int setTolerances(int tol_type, Real reltol, void *abstol)
 
int getNumGEvals(int *ngevals)
 
int getNumNonlinSolvConvFails(int *nncfails)
 
ProjectionFactorizationType
Definition: SimTKcpodes.h:164
 
@ ProjectWithQR
Definition: SimTKcpodes.h:167
 
@ ProjectWithSchurComplement
Definition: SimTKcpodes.h:168
 
@ ProjectWithLU
Definition: SimTKcpodes.h:166
 
int getCurrentTime(Real *tcur)
 
LinearMultistepMethod
Definition: SimTKcpodes.h:133
 
@ BDF
Definition: SimTKcpodes.h:135
 
int getNonlinSolvStats(int *nniters, int *nncfails)
 
int setMinStep(Real hmin)
 
int dlsProjSetJacFn(void *jacP, void *jacP_data)
 
int dlsProjGetNumJacEvals(int *njPevals)
 
int setRootDirection(Array_< int > &rootdir)
 
ConstraintLinearity
Definition: SimTKcpodes.h:158
 
@ Linear
Definition: SimTKcpodes.h:160
 
int dlsSetJacFn(void *jac, void *jac_data)
 
int getNumLinSolvSetups(int *nlinsetups)
 
int dlsProjGetNumFctEvals(int *ncevalsLS)
 
int setStopTime(Real tstop)
 
int getCurrentOrder(int *qcur)
 
int getQuadNumFunEvals(int *nqevals)
 
int step(Real tout, Real *tret, Vector &y_inout, Vector &yp_inout, StepMode=Normal)
 
int getQuad(Real t, Vector &yQout)
 
int getWorkSpace(int *lenrw, int *leniw)
 
int setNonlinConvCoef(Real nlscoef)
 
int getNumNonlinSolvIters(int *nniters)
 
ToleranceType
Definition: SimTKcpodes.h:145
 
@ ScalarScalar
Definition: SimTKcpodes.h:147
 
@ ScalarVector
Definition: SimTKcpodes.h:148
 
int dlsGetWorkSpace(int *lenrwLS, int *leniwLS)
 
int setMaxStep(Real hmax)
 
int getProjNumCnstrEvals(int *nce)
 
ODEType
Definition: SimTKcpodes.h:127
 
@ ExplicitODE
Definition: SimTKcpodes.h:129
 
int setProjUpdateErrEst(bool proj_err)
 
int getDky(Real t, int k, Vector &dky)
 
int getNumSteps(int *nsteps)
 
int setProjFrequency(int proj_freq)
 
int getNumErrTestFails(int *netfails)
 
StepMode
Definition: SimTKcpodes.h:172
 
@ NormalTstop
Definition: SimTKcpodes.h:176
 
@ Normal
Definition: SimTKcpodes.h:174
 
@ OneStep
Definition: SimTKcpodes.h:175
 
int getNumStabLimOrderReds(int *nslred)
 
int setProjNonlinConvCoef(Real prjcoef)
 
int setProjLsetupFreq(int proj_lset_freq)
 
char * getReturnFlagName(int flag)
 
int getProjStats(int *nproj, int *nce, int *nsetupsP, int *nprf)
 
int projInit(ProjectionNorm, ConstraintLinearity, const Vector &ctol)
 
int getEstLocalErrors(Vector &ele)
 
int init(CPodesSystem &sys, Real t0, const Vector &y0, const Vector &yp0, ToleranceType tt, Real reltol, void *abstol)
 
int dlsGetLastFlag(int *flag)
 
ProjectionNorm
Definition: SimTKcpodes.h:152
 
@ L2Norm
Definition: SimTKcpodes.h:154
 
int dlsGetNumJacEvals(int *njevals)
 
int setMaxHnilWarns(int mxhnil)
 
int lapackDenseProj(int Nc, int Ny, ProjectionFactorizationType)
 
CPodes(ODEType ode=UnspecifiedODEType, LinearMultistepMethod lmm=UnspecifiedLinearMultistepMethod, NonlinearSystemIterationType nls=UnspecifiedNonlinearSystemIterationType)
Definition: SimTKcpodes.h:181
 
int setProjTestCnstr(bool test_cnstr)
 
int setMaxNumSteps(int mxsteps)
 
int setMaxNonlinIters(int maxcor)
 
int getLastOrder(int *qlast)
 
int setErrFile(FILE *errfp)
 
int setInitStep(Real hin)
 
int getProjNumProj(int *nproj)
 
int setQuadErrCon(bool errconQ, int tol_typeQ, Real reltolQ, void *abstolQ)
 
int getQuadErrWeights(Vector &eQweight)
 
int setMaxErrTestFails(int maxnef)
 
int getCurrentStep(Real *hcur)
 
int getRootWindow(Real *tLo, Real *tHi)
 
int setMaxConvFails(int maxncf)
 
int setMaxOrd(int maxord)
 
int getProjNumLinSolvSetups(int *nsetupsP)
 
int quadReInit(const Vector &q0)
 
int dlsGetNumFctEvals(int *nfevalsLS)
 
int setStabLimDet(bool stldet)
 
int getErrWeights(Vector &eweight)
 
char * dlsGetReturnFlagName(int flag)
 
int getQuadDky(Real t, int k, Vector &dky)
 
int getTolScaleFactor(Real *tolsfac)
 
int getLastStep(Real *hlast)
 
int getActualInitStep(Real *hinused)
 
This is the top-level SimTK namespace into which all SimTK names are placed to avoid collision with o...
Definition: Assembler.h:37
 
static int weight_static(const CPodesSystem &sys, const Vector &y, Vector &weights)
Definition: SimTKcpodes.h:105
 
static int explicitODE_static(const CPodesSystem &sys, Real t, const Vector &y, Vector &fout)
Definition: SimTKcpodes.h:80
 
static int quadrature_static(const CPodesSystem &sys, Real t, const Vector &y, Vector &qout)
Definition: SimTKcpodes.h:97
 
static int root_static(const CPodesSystem &sys, Real t, const Vector &y, const Vector &yp, Vector &gout)
Definition: SimTKcpodes.h:101
 
static int project_static(const CPodesSystem &sys, Real t, const Vector &ycur, Vector &corr, Real epsProj, Vector &err)
Definition: SimTKcpodes.h:92
 
static int constraint_static(const CPodesSystem &sys, Real t, const Vector &y, Vector &cout)
Definition: SimTKcpodes.h:88
 
static void errorHandler_static(const CPodesSystem &sys, int error_code, const char *module, const char *function, char *msg)
Definition: SimTKcpodes.h:109
 
static int implicitODE_static(const CPodesSystem &sys, Real t, const Vector &y, const Vector &yp, Vector &fout)
Definition: SimTKcpodes.h:84
 
SimTK_Real Real
This is the default compiled-in floating point type for SimTK, either float or double.
Definition: SimTKcommon/include/SimTKcommon/internal/common.h:607