CMS 3D CMS Logo

RK4OneStepTempl.h
Go to the documentation of this file.
1 #ifndef RK4OneStepTempl_H
2 #define RK4OneStepTempl_H
3 
5 #include "RKSmallVector.h"
6 #include "RKDerivative.h"
7 
8 template <typename T, int N>
10 public:
11  typedef T Scalar;
13 
14  Vector operator()(Scalar startPar, const Vector& startState, const RKDerivative<T, N>& deriv, Scalar step) const {
15  // cout << "RK4OneStepTempl: starting from " << startPar << startState << endl;
16 
17  Vector k1 = step * deriv(startPar, startState);
18  Vector k2 = step * deriv(startPar + step / 2, startState + k1 / 2);
19  Vector k3 = step * deriv(startPar + step / 2, startState + k2 / 2);
20  Vector k4 = step * deriv(startPar + step, startState + k3);
21 
22  Vector result = startState + k1 / 6 + k2 / 3 + k3 / 3 + k4 / 6;
23 
24  // cout << "RK4OneStepTempl: result for step " << step << " is " << result << endl;
25 
26  return result;
27  }
28 };
29 
30 #endif
Visibility.h
step
step
Definition: StallMonitor.cc:94
RK4OneStepTempl::Vector
RKSmallVector< T, N > Vector
Definition: RK4OneStepTempl.h:12
RKDerivative.h
RKSmallVector
ROOT::Math::SVector< T, N > RKSmallVector
Definition: RKSmallVector.h:13
RK4OneStepTempl::Scalar
T Scalar
Definition: RK4OneStepTempl.h:11
RK4OneStepTempl
Definition: RK4OneStepTempl.h:9
dso_internal
#define dso_internal
Definition: Visibility.h:13
RK4OneStepTempl::operator()
Vector operator()(Scalar startPar, const Vector &startState, const RKDerivative< T, N > &deriv, Scalar step) const
Definition: RK4OneStepTempl.h:14
RKDerivative
Base class for derivative calculation.
Definition: RKDerivative.h:10
T
long double T
Definition: Basic3DVectorLD.h:48
mps_fire.result
result
Definition: mps_fire.py:311
RKSmallVector.h