31#ifndef __INTEGRATE4D_HPP
32#define __INTEGRATE4D_HPP "Created 25.04.2004 11:02:10 by werner benger"
34#include <ode/Integrator.hpp>
35#include <eagle/FixedArray.hpp>
36#include <ode/dop853decl.hpp>
42 using namespace Eagle;
44template <
class real=
long double,
int Dims=4>
47template <
class Real,
int N>
66 void DiffEqn(
int nEquations, real s,
const real *q, real *dq_ds)
69 const real *v = q + N;
71 real *dv_ds = dq_ds + N;
73 for(
int i=0; i<N; i++)
77 parent->Accel(s, x, v, dv_ds);
85 typedef long double real;
96 real *initialize(
int n,
const real&s);
97 long step_nr()
const override;
98 const real&dx()
const override;
99 const real&x0()
const override;
100 const real&x1()
const override;
101 int size()
const override;
102 const real&f(
int i)
const override;
103 real f(
int i,
const real&x)
const override;
107 virtual void Accel(real s,
const real *x,
const real *v, real *d2x_ds2) = 0;
113template <
class Real,
int Dims>
119 template <
class sValue,
class Value>
120 void init(
const sValue&s,
const Value*q,
const Value*dq)
122 real *x = initialize(2*Dims, s);
124 for(
int i=0; i<Dims; i++)
131 template <
class sValue,
class Value>
134 real *x = initialize(2*Dims, s);
136 for(
int i=0; i<Dims; i++)
145 virtual void Accel(real s,
const real *x,
const real *v, real *d2x_ds2) = 0;
148static unsigned nPaths()
154 const real&s0()
const
159 const real&s1()
const
164 const real&q(
int i)
const
169 real q(
unsigned i, real s)
const
171 return this->f(i, s );
174 const real&dq(
int i)
const
176 return this->f(i+nPaths() );
179 real dq(
unsigned i, real s)
const
181 return this->f(i+nPaths(), s );
valarray< size_t > size() const
constexpr void advance(_InputIterator &__i, _Distance __n)
Definition Integrate4D.hpp:45
Definition Integrate4D.hpp:115
Definition Integrate4D.hpp:58
Definition Integrate4D.hpp:53
Definition Integrate4D.hpp:49