#include <TAPsODESolvers.hpp>


Public Member Functions | |
| ODESolverRungeKutta4 () | |
| virtual void | SetSize (int vectorSize) |
| virtual void | Solve (VectorSet< T_SET > &x0, VectorSet< T_SET > &xEnd, T t0, T t1, DerivFunc dxdt, void *userData) |
| virtual | ~ODESolverRungeKutta4 () |
Private Attributes | |
| VectorSet< T_SET > | vK1 |
| VectorSet< T_SET > | vK2 |
| VectorSet< T_SET > | vK3 |
| VectorSet< T_SET > | vK4 |
Definition at line 175 of file TAPsODESolvers.hpp.
| ODESolverRungeKutta4< T, T_SET >::ODESolverRungeKutta4 | ( | ) | [inline] |
| ODESolverRungeKutta4< T, T_SET >::~ODESolverRungeKutta4 | ( | ) | [inline, virtual] |
| void ODESolverRungeKutta4< T, T_SET >::SetSize | ( | int | vectorSize | ) | [inline, virtual] |
Implements ODESolver< T, T_SET >.
Definition at line 141 of file TAPsODESolvers.cpp.
00142 { 00143 vK1.resize( vectorSize ); 00144 vK2.resize( vectorSize ); 00145 vK3.resize( vectorSize ); 00146 vK4.resize( vectorSize ); 00147 }
| void ODESolverRungeKutta4< T, T_SET >::Solve | ( | VectorSet< T_SET > & | x0, | |
| VectorSet< T_SET > & | xEnd, | |||
| T | t0, | |||
| T | t1, | |||
| DerivFunc | dxdt, | |||
| void * | userData | |||
| ) | [inline, virtual] |
Definition at line 150 of file TAPsODESolvers.cpp.
00151 : x(t_0) an initial state vector 00152 VectorSet<T_SET> &xEnd, // o/p: x(t_1) an end state vector 00153 T t0, T t1, // i/p: starting and ending times 00154 DerivFunc dxdt, // i/p: a derivative function 00155 void *userData // o/p: array of user data 00156 ) 00157 { 00158 bool restartNotRequired = true; 00159 T h = t1 - t0; 00160 T half = static_cast<T>( 0.5 ); 00161 // Runge-Kutta of Order 4 00162 restartNotRequired = dxdt( t0, x0, vK1, userData ); 00163 vK1 *= h; 00164 assert( restartNotRequired ); 00165 restartNotRequired = dxdt( t0 + h*half, x0 + vK1*half, vK2, userData ); 00166 vK2 *= h; 00167 assert( restartNotRequired ); 00168 restartNotRequired = dxdt( t0 + h*half, x0 + vK2*half, vK3, userData ); 00169 vK3 *= h; 00170 assert( restartNotRequired ); 00171 restartNotRequired = dxdt( t0 + h, x0 + vK3, vK4, userData ); 00172 vK4 *= h; 00173 assert( restartNotRequired ); 00174 // Update the state 00175 xEnd = x0 + vK1/static_cast<T>(6) 00176 + vK2/static_cast<T>(3) 00177 + vK3/static_cast<T>(3) 00178 + vK4/static_cast<T>(6); 00179 }
VectorSet<T_SET> ODESolverRungeKutta4< T, T_SET >::vK1 [private] |
Definition at line 203 of file TAPsODESolvers.hpp.
VectorSet<T_SET> ODESolverRungeKutta4< T, T_SET >::vK2 [private] |
Definition at line 203 of file TAPsODESolvers.hpp.
VectorSet<T_SET> ODESolverRungeKutta4< T, T_SET >::vK3 [private] |
Definition at line 203 of file TAPsODESolvers.hpp.
VectorSet<T_SET> ODESolverRungeKutta4< T, T_SET >::vK4 [private] |
Definition at line 203 of file TAPsODESolvers.hpp.
1.5.6