Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:31:44

0001 #ifndef RKSolver_H
0002 #define RKSolver_H
0003 
0004 #include "FWCore/Utilities/interface/Visibility.h"
0005 
0006 #include "RKSmallVector.h"
0007 #include "RKDerivative.h"
0008 #include "RKDistance.h"
0009 
0010 /// ABC for Runge-Kutta solvers
0011 
0012 template <typename T, int N>
0013 class dso_internal RKSolver {
0014 public:
0015   typedef T Scalar;
0016   typedef RKSmallVector<T, N> Vector;
0017 
0018   virtual ~RKSolver() {}
0019 
0020   /** Advance starting state (startPar,startState) by step.
0021  *  The accuracy of the result should be better than eps.
0022  *  The accuracy is computed as the distance (using the "dist" argument)
0023  *  between different internal estimates of the resulting state.
0024  *  The "deriv" argument computes the derivatives.
0025  */
0026   virtual Vector operator()(Scalar startPar,
0027                             const Vector& startState,
0028                             Scalar step,
0029                             const RKDerivative<T, N>& deriv,
0030                             const RKDistance<T, N>& dist,
0031                             float eps) = 0;
0032 };
0033 
0034 #endif