36#ifndef G4BORIS_DRIVER_HH
37#define G4BORIS_DRIVER_HH
51 G4int numberOfComponents = 6,
134 void StreamInfo( std::ostream& os )
const override;
144 inline G4int GetNumberOfVariables()
const;
173 static constexpr G4int fMaxNoSteps = 300;
174 static constexpr G4double fSmallestFraction= 1e-12;
176 static constexpr G4int fIntegratorOrder= 2;
177 static constexpr G4double fSafetyFactor = 0.9;
179 static constexpr G4double fMaxSteppingIncrease= 10.0;
180 static constexpr G4double fMaxSteppingDecrease= 0.1;
181 static constexpr G4double fPowerShrink = -1.0 / fIntegratorOrder;
182 static constexpr G4double fPowerGrow = -1.0 / (1.0 + fIntegratorOrder);
184 static const G4double fErrorConstraintShrink;
185 static const G4double fErrorConstraintGrow;
190#include "G4BorisDriver.icc"
G4double epsilon(G4double density, G4double temperature)
G4MagIntegratorStepper * GetStepper() override
void OneGoodStep(G4double yCurrentState[], G4double &curveLength, G4double htry, G4double epsilon_rel, G4double restMass, G4double charge, G4double &hdid, G4double &hnext)
G4EquationOfMotion * GetEquationOfMotion() override
void StreamInfo(std::ostream &os) const override
G4double ShrinkStepSize2(G4double h, G4double error2) const
void GetDerivatives(const G4FieldTrack &track, G4double dydx[]) const override
G4BorisDriver(G4double hminimum, G4BorisScheme *Boris, G4int numberOfComponents=6, G4bool verbosity=false)
void SetEquationOfMotion(G4EquationOfMotion *equation) override
G4double AdvanceChordLimited(G4FieldTrack &track, G4double hstep, G4double eps, G4double chordDistance) override
void OnComputeStep(const G4FieldTrack *) override
G4double ComputeNewStepSize(G4double errMaxNorm, G4double hstepCurrent) override
void SetVerboseLevel(G4int level) override
G4int GetVerboseLevel() const override
~G4BorisDriver() override=default
G4bool AccurateAdvance(G4FieldTrack &track, G4double stepLen, G4double epsilon, G4double beginStep=0) override
G4bool DoesReIntegrate() const override
G4bool QuickAdvance(G4FieldTrack &y_val, const G4double dydx[], G4double hstep, G4double &missDist, G4double &dyerr) override
const G4EquationOfMotion * GetEquationOfMotion() const
void OnStartTracking() override
G4BorisDriver(const G4BorisDriver &)=delete
const G4MagIntegratorStepper * GetStepper() const override
G4BorisDriver & operator=(const G4BorisDriver &)=delete
G4double GrowStepSize2(G4double h, G4double error2) const
G4double AdvanceChordLimitedImpl(G4FieldTrack &track, G4double hstep, G4double eps, G4double chordDistance)