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