49 : fnvar(nvar), m_eps_rel(eps_rel), m_midpoint(equation,nvar),
50 m_last_step_rejected(false), m_first(true), m_dt_last(0.0), m_max_dt(max_dt)
65 for(
G4int k = 0; k < i; ++k)
69 m_coeff[i][k] = 1.0 / (r * r - 1.0);
244 for(
G4int j = k - 1 ; j > 0; --j)
263 const G4double expo = 1.0 / (2 * k + 1);
337 return error * e * e > d * d;
static const G4double e2[44]
static const G4double fac
void extrapolate(size_t k, G4double xest[])
G4bool m_last_step_rejected
G4bool set_k_opt(size_t k, G4double &dt)
G4int m_interval_sequence[m_k_max+1]
G4BulirschStoer(G4EquationOfMotion *equation, G4int nvar, G4double eps_rel, G4double max_dt=DBL_MAX)
G4double m_err[G4FieldTrack::ncompSVEC]
G4ModifiedMidpoint m_midpoint
static const G4int m_k_max
G4bool in_convergence_window(G4int k) const
G4double m_coeff[m_k_max+1][m_k_max]
step_result try_step(const G4double in[], const G4double dxdt[], G4double &t, G4double out[], G4double &dt)
G4bool should_reject(G4double error, G4int k) const
G4double m_table[m_k_max][G4FieldTrack::ncompSVEC]
G4double calc_h_opt(G4double h, G4double error, size_t k) const
G4double h_opt[m_k_max+1]
void SetSteps(G4int steps)
void DoStep(const G4double yIn[], const G4double dydxIn[], G4double yOut[], G4double hstep) const
T max(const T t1, const T t2)
brief Return the largest of the two arguments
T min(const T t1, const T t2)
brief Return the smallest of the two arguments
constexpr G4double STEPFAC1
constexpr G4double STEPFAC2
constexpr G4double inv_STEPFAC1
constexpr G4double inv_STEPFAC4
constexpr G4double STEPFAC4
constexpr G4double STEPFAC3
G4double relativeError(const G4double y[], const G4double yerr[], G4double hstep, G4double errorTolerance)
static PROLOG_HANDLER error