Go to the documentation of this file. 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&);
421 #endif // SimTK_CPODES_H_
static int root_static(const CPodesSystem &sys, Real t, const Vector &y, const Vector &yp, Vector &gout)
Definition: SimTKcpodes.h:101
@ Normal
Definition: SimTKcpodes.h:174
int quadInit(const Vector &q0)
int step(Real tout, Real *tret, Vector &y_inout, Vector &yp_inout, StepMode=Normal)
ODEType
Definition: SimTKcpodes.h:127
char * dlsGetReturnFlagName(int flag)
int getProjNumCnstrEvals(int *nce)
int getCurrentStep(Real *hcur)
int dlsSetJacFn(void *jac, void *jac_data)
int setInitStep(Real hin)
int setMaxHnilWarns(int mxhnil)
int getEstLocalErrors(Vector &ele)
int dlsProjGetNumFctEvals(int *ncevalsLS)
int dlsGetWorkSpace(int *lenrwLS, int *leniwLS)
NonlinearSystemIterationType
Definition: SimTKcpodes.h:139
ProjectionFactorizationType
Definition: SimTKcpodes.h:164
int getWorkSpace(int *lenrw, int *leniw)
virtual void errorHandler(int error_code, const char *module, const char *function, char *msg) const
int setProjUpdateErrEst(bool proj_err)
int getQuadErrWeights(Vector &eQweight)
#define SimTK_SIMMATH_EXPORT
Definition: SimTKmath/include/simmath/internal/common.h:64
ToleranceType
Definition: SimTKcpodes.h:145
This is a System that represents the dynamics of a particle moving along a smooth surface.
Definition: Assembler.h:37
@ ProjectWithQR
Definition: SimTKcpodes.h:167
int getNumNonlinSolvIters(int *nniters)
LinearMultistepMethod
Definition: SimTKcpodes.h:133
int setStopTime(Real tstop)
int getActualInitStep(Real *hinused)
@ Newton
Definition: SimTKcpodes.h:141
@ ProjectWithLU
Definition: SimTKcpodes.h:166
int setStabLimDet(bool stldet)
CPodes(ODEType ode=UnspecifiedODEType, LinearMultistepMethod lmm=UnspecifiedLinearMultistepMethod, NonlinearSystemIterationType nls=UnspecifiedNonlinearSystemIterationType)
Definition: SimTKcpodes.h:181
int dlsProjGetNumJacEvals(int *njPevals)
int setQuadErrCon(bool errconQ, int tol_typeQ, Real reltolQ, void *abstolQ)
int getErrWeights(Vector &eweight)
int quadReInit(const Vector &q0)
virtual int implicitODE(Real t, const Vector &y, const Vector &yp, Vector &fout) const
int getCurrentOrder(int *qcur)
int reInit(CPodesSystem &sys, Real t0, const Vector &y0, const Vector &yp0, ToleranceType tt, Real reltol, void *abstol)
int lapackBand(int N, int mupper, int mlower)
int getProjStats(int *nproj, int *nce, int *nsetupsP, int *nprf)
int setProjLsetupFreq(int proj_lset_freq)
@ L2Norm
Definition: SimTKcpodes.h:154
This is a straightforward translation of the Sundials CPODES C interface into C++.
Definition: SimTKcpodes.h:122
int setMaxOrd(int maxord)
virtual int explicitODE(Real t, const Vector &y, Vector &fout) const
static int weight_static(const CPodesSystem &sys, const Vector &y, Vector &weights)
Definition: SimTKcpodes.h:105
char * getReturnFlagName(int flag)
virtual int constraint(Real t, const Vector &y, Vector &cout) const
int lapackDenseProj(int Nc, int Ny, ProjectionFactorizationType)
virtual ~CPodesSystem()
Definition: SimTKcpodes.h:51
int init(CPodesSystem &sys, Real t0, const Vector &y0, const Vector &yp0, ToleranceType tt, Real reltol, void *abstol)
int setMinStep(Real hmin)
int getProjNumProj(int *nproj)
int setRootDirection(Array_< int > &rootdir)
virtual int project(Real t, const Vector &ycur, Vector &corr, Real epsProj, Vector &err) const
int getNumSteps(int *nsteps)
int getQuad(Real t, Vector &yQout)
int getTolScaleFactor(Real *tolsfac)
int setMaxConvFails(int maxncf)
int dlsProjSetJacFn(void *jacP, void *jacP_data)
int getNumNonlinSolvConvFails(int *nncfails)
@ ScalarScalar
Definition: SimTKcpodes.h:147
static int constraint_static(const CPodesSystem &sys, Real t, const Vector &y, Vector &cout)
Definition: SimTKcpodes.h:88
ProjectionNorm
Definition: SimTKcpodes.h:152
static int project_static(const CPodesSystem &sys, Real t, const Vector &ycur, Vector &corr, Real epsProj, Vector &err)
Definition: SimTKcpodes.h:92
int getNumStabLimOrderReds(int *nslred)
@ ScalarVector
Definition: SimTKcpodes.h:148
int getRootWindow(Real *tLo, Real *tHi)
static int quadrature_static(const CPodesSystem &sys, Real t, const Vector &y, Vector &qout)
Definition: SimTKcpodes.h:97
int getLastStep(Real *hlast)
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:606
int getNumGEvals(int *ngevals)
@ ProjectWithSchurComplement
Definition: SimTKcpodes.h:168
StepMode
Definition: SimTKcpodes.h:172
int getProjNumLinSolvSetups(int *nsetupsP)
int getLastOrder(int *qlast)
int getQuadDky(Real t, int k, Vector &dky)
int setMaxNonlinIters(int maxcor)
int dlsGetNumJacEvals(int *njevals)
int setProjFrequency(int proj_freq)
int getProjNumFailures(int *nprf)
int projInit(ProjectionNorm, ConstraintLinearity, const Vector &ctol)
@ NormalTstop
Definition: SimTKcpodes.h:176
int setTolerances(int tol_type, Real reltol, void *abstol)
int setProjNonlinConvCoef(Real prjcoef)
int setMaxStep(Real hmax)
static int implicitODE_static(const CPodesSystem &sys, Real t, const Vector &y, const Vector &yp, Vector &fout)
Definition: SimTKcpodes.h:84
int getRootInfo(int *rootsfound)
ConstraintLinearity
Definition: SimTKcpodes.h:158
int setMaxNumSteps(int mxsteps)
@ BDF
Definition: SimTKcpodes.h:135
virtual int root(Real t, const Vector &y, const Vector &yp, Vector &gout) const
int dlsGetNumFctEvals(int *nfevalsLS)
int getCurrentTime(Real *tcur)
int setMaxErrTestFails(int maxnef)
int getNumLinSolvSetups(int *nlinsetups)
virtual int quadrature(Real t, const Vector &y, Vector &qout) const
int getIntegratorStats(int *nsteps, int *nfevals, int *nlinsetups, int *netfails, int *qlast, int *qcur, Real *hinused, Real *hlast, Real *hcur, Real *tcur)
virtual int weight(const Vector &y, Vector &weights) const
int getQuadNumFunEvals(int *nqevals)
int setErrFile(FILE *errfp)
int setNonlinConvCoef(Real nlscoef)
static void errorHandler_static(const CPodesSystem &sys, int error_code, const char *module, const char *function, char *msg)
Definition: SimTKcpodes.h:109
int getNumErrTestFails(int *netfails)
@ ExplicitODE
Definition: SimTKcpodes.h:129
int dlsGetLastFlag(int *flag)
@ Linear
Definition: SimTKcpodes.h:160
int getDky(Real t, int k, Vector &dky)
This abstract class defines the system to be integrated with SimTK CPodes.
Definition: SimTKcpodes.h:49
int setProjTestCnstr(bool test_cnstr)
static int explicitODE_static(const CPodesSystem &sys, Real t, const Vector &y, Vector &fout)
Definition: SimTKcpodes.h:80
@ OneStep
Definition: SimTKcpodes.h:175
int getNonlinSolvStats(int *nniters, int *nncfails)
int getNumFctEvals(int *nfevals)