1 #ifndef SimTK_SIMMATH_INTEGRATOR_H_
2 #define SimTK_SIMMATH_INTEGRATOR_H_
123 class InitializationFailed;
124 class StepSizeTooSmall;
126 class TriedToAdvancePastFinalTime;
127 class CantAskForEventInfoWhenNoEventTriggered;
130 const char* getMethodName()
const;
132 int getMethodMinOrder()
const;
134 int getMethodMaxOrder()
const;
138 bool methodHasErrorControl()
const;
143 void initialize(
const State& state);
156 void reinitialize(
Stage stage,
bool shouldTerminate);
160 const State& getState()
const;
166 bool isStateInterpolated()
const;
171 const State& getAdvancedState()
const;
176 State& updAdvancedState();
180 Real getAccuracyInUse()
const;
183 Real getConstraintToleranceInUse()
const;
204 ReachedReportTime =1,
206 ReachedEventTrigger =2,
208 ReachedScheduledEvent=3,
217 StartOfContinuousInterval=7,
218 InvalidSuccessfulStepStatus = -1
221 static String getSuccessfulStepStatusString(SuccessfulStepStatus);
226 SuccessfulStepStatus stepTo(
Real reportTime,
Real scheduledEventTime=
Infinity);
230 SuccessfulStepStatus stepBy(
Real interval,
Real scheduledEventTime=
Infinity);
235 Vec2 getEventWindow()
const;
252 ReachedFinalTime = 1,
254 AnUnrecoverableErrorOccurred = 2,
256 EventHandlerRequestedTermination = 3,
258 InvalidTerminationReason = -1
263 bool isSimulationOver()
const;
267 TerminationReason getTerminationReason()
const;
270 static String getTerminationReasonString(TerminationReason);
273 void resetAllStatistics();
276 Real getActualInitialStepSizeTaken()
const;
279 Real getPreviousStepSizeTaken()
const;
282 Real getPredictedNextStepSize()
const;
286 int getNumStepsAttempted()
const;
288 int getNumStepsTaken()
const;
290 int getNumRealizations()
const;
293 int getNumQProjections()
const;
296 int getNumUProjections()
const;
299 int getNumProjections()
const;
302 int getNumErrorTestFailures()
const;
307 int getNumConvergenceTestFailures()
const;
310 int getNumRealizationFailures()
const;
314 int getNumQProjectionFailures()
const;
318 int getNumUProjectionFailures()
const;
322 int getNumProjectionFailures()
const;
325 int getNumConvergentIterations()
const;
328 int getNumDivergentIterations()
const;
332 int getNumIterations()
const;
336 void setFinalTime(
Real tFinal);
339 void setInitialStepSize(
Real hinit);
342 void setMinimumStepSize(
Real hmin);
345 void setMaximumStepSize(
Real hmax);
352 void setFixedStepSize(
Real stepSize);
357 void setAccuracy(
Real accuracy);
359 void setConstraintTolerance(
Real consTol);
364 void setUseInfinityNorm(
bool useInfinityNorm);
366 bool isInfinityNormInUse()
const;
373 void setInternalStepLimit(
int nSteps);
378 void setReturnEveryInternalStep(
bool shouldReturn);
383 void setProjectEveryStep(
bool forceProject);
394 void setAllowInterpolation(
bool shouldInterpolate);
398 void setProjectInterpolatedStates(
bool shouldProject);
402 void setForceFullNewton(
bool forceFullNewton);
406 {
return getSuccessfulStepStatusString(stat); }
409 const IntegratorRep&
getRep()
const {assert(rep);
return *rep;}
410 IntegratorRep&
updRep() {assert(rep);
return *rep;}
414 friend class IntegratorRep;
419 #endif // SimTK_SIMMATH_INTEGRATOR_H_
const IntegratorRep & getRep() const
Definition: Integrator.h:409
IntegratorRep * rep
Definition: Integrator.h:413
This is the top-level SimTK namespace into which all SimTK names are placed to avoid collision with o...
Definition: Assembler.h:37
An Integrator is an object that can advance the State of a System through time.
Definition: Integrator.h:116
This class is basically a glorified enumerated type, type-safe and range checked but permitting conve...
Definition: Stage.h:50
Real getTime() const
Get the time of the current State. This is equivalent to calling getState().getTime().
Definition: Integrator.h:162
The SimTK::Array_ container class is a plug-compatible replacement for the C++ standard template l...
Definition: Array.h:50
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:577
Integrator()
Definition: Integrator.h:118
static String successfulStepStatusString(SuccessfulStepStatus stat)
OBSOLETE: use getSuccessfulStepStatusString().
Definition: Integrator.h:405
This object is intended to contain all state information for a SimTK::System, except topological info...
Definition: State.h:276
Includes internal headers providing declarations for the basic SimTK Core classes, including Simmatrix.
TerminationReason
Once the simulation has ended, getTerminationReason() may be called to find out what caused it to end...
Definition: Integrator.h:250
IntegratorRep & updRep()
Definition: Integrator.h:410
const Real Infinity
This is the IEEE positive infinity constant for this implementation of the default-precision Real typ...
This is the header file that every Simmath compilation unit should include first. ...
SimTK::String is a plug-compatible std::string replacement (plus some additional functionality) inten...
Definition: String.h:62
SuccessfulStepStatus
When a step is successful, it will return an indication of what caused it to stop where it did...
Definition: Integrator.h:202
Real getAdvancedTime() const
Get the time of the advanced State. This is equivalent to calling getAdvancedState().getTime().
Definition: Integrator.h:173
#define SimTK_SIMMATH_EXPORT
Definition: SimTKmath/include/simmath/internal/common.h:64