1 #ifndef SimTK_SIMMATH_RUNGE_KUTTA_MERSON_INTEGRATOR_REP_H_
2 #define SimTK_SIMMATH_RUNGE_KUTTA_MERSON_INTEGRATOR_REP_H_
3 
4 /* -------------------------------------------------------------------------- *
5  *                        Simbody(tm): SimTKmath                              *
6  * -------------------------------------------------------------------------- *
7  * This is part of the SimTK biosimulation toolkit originating from           *
8  * Simbios, the NIH National Center for Physics-Based Simulation of           *
9  * Biological Structures at Stanford, funded under the NIH Roadmap for        *
10  * Medical Research, grant U54 GM072970. See https://simtk.org/home/simbody.  *
11  *                                                                            *
12  * Portions copyright (c) 2006-12 Stanford University and the Authors.        *
13  * Authors: Michael Sherman                                                   *
14  * Contributors:                                                              *
15  *                                                                            *
16  * Licensed under the Apache License, Version 2.0 (the "License"); you may    *
17  * not use this file except in compliance with the License. You may obtain a  *
18  * copy of the License at http://www.apache.org/licenses/LICENSE-2.0.         *
19  *                                                                            *
20  * Unless required by applicable law or agreed to in writing, software        *
21  * distributed under the License is distributed on an "AS IS" BASIS,          *
22  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.   *
23  * See the License for the specific language governing permissions and        *
24  * limitations under the License.                                             *
25  * -------------------------------------------------------------------------- */
26 
27 #include "AbstractIntegratorRep.h"
28 
29 namespace SimTK {
30 
31 /**
32  * This is the private (library side) implementation of the
33  * RungeKuttaMersonIntegratorRep class which is a concrete class
34  * implementing the abstract IntegratorRep.
35  */
36 
37 class RungeKuttaMersonIntegratorRep : public AbstractIntegratorRep {
38 public:
39     RungeKuttaMersonIntegratorRep(Integrator* handle, const System& sys);
40 protected:
41     bool attemptODEStep
42        (Real t1, Vector& yErrEst, int& errOrder, int& numIterations) override;
43 private:
44     static const int NTemps = 3;
45     Vector ytmp[NTemps];
46 };
47 
48 } // namespace SimTK
49 
50 #endif // SimTK_SIMMATH_RUNGE_KUTTA_MERSON_INTEGRATOR_REP_H_
51 
52 
53