Geant4 11.4.0
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
G4RKIntegrationDriver< T > Class Template Reference

G4RKIntegrationDriver is a templated driver class which controls the integration error of a Runge-Kutta stepper. More...

#include <G4RKIntegrationDriver.hh>

Inheritance diagram for G4RKIntegrationDriver< T >:

Public Member Functions

 G4RKIntegrationDriver (T *stepper)
 G4RKIntegrationDriver (const G4RKIntegrationDriver &)=delete
G4RKIntegrationDriveroperator= (const G4RKIntegrationDriver &)=delete
void GetDerivatives (const G4FieldTrack &track, G4double dydx[]) const override
void GetDerivatives (const G4FieldTrack &track, G4double dydx[], G4double field[]) const override
G4double ComputeNewStepSize (G4double errMaxNorm, G4double hstepCurrent) final
G4EquationOfMotionGetEquationOfMotion () override
void SetEquationOfMotion (G4EquationOfMotion *equation) override
const T * GetStepper () const override
T * GetStepper () override
void StreamInfo (std::ostream &os) const override
G4double GetSafety () const
G4double GetPshrnk () const
G4double GetPgrow () const
void RenewStepperAndAdjust (G4MagIntegratorStepper *stepper) override
void ReSetParameters (G4double safety=0.9)
void SetSafety (G4double valS)
G4int GetMaxNoSteps () const
void SetMaxNoSteps (G4int val)
G4double GetSmallestFraction () const
void SetSmallestFraction (G4double val)
Public Member Functions inherited from G4VIntegrationDriver
virtual ~G4VIntegrationDriver ()=default
virtual G4double AdvanceChordLimited (G4FieldTrack &track, G4double hstep, G4double eps, G4double chordDistance)=0
virtual G4bool AccurateAdvance (G4FieldTrack &track, G4double hstep, G4double eps, G4double hinitial=0)=0
virtual void SetVerboseLevel (G4int level)=0
virtual G4int GetVerboseLevel () const =0
virtual void OnComputeStep (const G4FieldTrack *=nullptr)=0
virtual void OnStartTracking ()=0
virtual G4bool DoesReIntegrate () const =0
virtual G4bool QuickAdvance (G4FieldTrack &, const G4double[], G4double, G4double &, G4double &)

Protected Member Functions

G4double ShrinkStepSize (G4double h, G4double error) const
G4double GrowStepSize (G4double h, G4double error) const
G4double ShrinkStepSize2 (G4double h, G4double error2) const
G4double GrowStepSize2 (G4double h, G4double error2) const
void UpdateErrorConstraints ()

Additional Inherited Members

Static Protected Attributes inherited from G4VIntegrationDriver
static constexpr G4double max_stepping_increase = 5
static constexpr G4double max_stepping_decrease = 0.1

Detailed Description

template<class T>
class G4RKIntegrationDriver< T >

G4RKIntegrationDriver is a templated driver class which controls the integration error of a Runge-Kutta stepper.

Definition at line 46 of file G4RKIntegrationDriver.hh.

Constructor & Destructor Documentation

◆ G4RKIntegrationDriver() [1/2]

template<class T>
G4RKIntegrationDriver< T >::G4RKIntegrationDriver ( T * stepper)

Constructor for G4RKIntegrationDriver.

Parameters
[in]stepperPointer to the stepper algorithm.

Referenced by G4RKIntegrationDriver(), and operator=().

◆ G4RKIntegrationDriver() [2/2]

template<class T>
G4RKIntegrationDriver< T >::G4RKIntegrationDriver ( const G4RKIntegrationDriver< T > & )
delete

Copy constructor and assignment operator not allowed.

Member Function Documentation

◆ ComputeNewStepSize()

template<class T>
G4double G4RKIntegrationDriver< T >::ComputeNewStepSize ( G4double errMaxNorm,
G4double hstepCurrent )
finalvirtual

Taking the last step's normalised error, it calculates a step size for the next step; it limits the next step's size within a factor of the current one.

Implements G4VIntegrationDriver.

◆ GetDerivatives() [1/2]

template<class T>
void G4RKIntegrationDriver< T >::GetDerivatives ( const G4FieldTrack & track,
G4double dydx[] ) const
overridevirtual

Accessors for derivatives.

Implements G4VIntegrationDriver.

◆ GetDerivatives() [2/2]

template<class T>
void G4RKIntegrationDriver< T >::GetDerivatives ( const G4FieldTrack & track,
G4double dydx[],
G4double field[] ) const
overridevirtual

Implements G4VIntegrationDriver.

◆ GetEquationOfMotion()

template<class T>
G4EquationOfMotion * G4RKIntegrationDriver< T >::GetEquationOfMotion ( )
overridevirtual

Getter and setter for the equation of motion.

Implements G4VIntegrationDriver.

◆ GetMaxNoSteps()

template<class T>
G4int G4RKIntegrationDriver< T >::GetMaxNoSteps ( ) const

◆ GetPgrow()

template<class T>
G4double G4RKIntegrationDriver< T >::GetPgrow ( ) const

◆ GetPshrnk()

template<class T>
G4double G4RKIntegrationDriver< T >::GetPshrnk ( ) const

◆ GetSafety()

template<class T>
G4double G4RKIntegrationDriver< T >::GetSafety ( ) const

Accessors.

◆ GetSmallestFraction()

template<class T>
G4double G4RKIntegrationDriver< T >::GetSmallestFraction ( ) const

◆ GetStepper() [1/2]

template<class T>
const T * G4RKIntegrationDriver< T >::GetStepper ( ) const
overridevirtual

Accessors for the stepper.

Implements G4VIntegrationDriver.

◆ GetStepper() [2/2]

template<class T>
T * G4RKIntegrationDriver< T >::GetStepper ( )
overridevirtual

Implements G4VIntegrationDriver.

◆ GrowStepSize()

template<class T>
G4double G4RKIntegrationDriver< T >::GrowStepSize ( G4double h,
G4double error ) const
protected

◆ GrowStepSize2()

template<class T>
G4double G4RKIntegrationDriver< T >::GrowStepSize2 ( G4double h,
G4double error2 ) const
protected

◆ operator=()

template<class T>
G4RKIntegrationDriver & G4RKIntegrationDriver< T >::operator= ( const G4RKIntegrationDriver< T > & )
delete

◆ RenewStepperAndAdjust()

template<class T>
void G4RKIntegrationDriver< T >::RenewStepperAndAdjust ( G4MagIntegratorStepper * pItsStepper)
overridevirtual

Method for compatibility – relevant only for G4MagIntegratorDriver.

Reimplemented from G4VIntegrationDriver.

◆ ReSetParameters()

template<class T>
void G4RKIntegrationDriver< T >::ReSetParameters ( G4double safety = 0.9)

◆ SetEquationOfMotion()

template<class T>
void G4RKIntegrationDriver< T >::SetEquationOfMotion ( G4EquationOfMotion * equation)
overridevirtual

Setter and getter for the equation of motion.

Implements G4VIntegrationDriver.

◆ SetMaxNoSteps()

template<class T>
void G4RKIntegrationDriver< T >::SetMaxNoSteps ( G4int val)

◆ SetSafety()

template<class T>
void G4RKIntegrationDriver< T >::SetSafety ( G4double valS)

◆ SetSmallestFraction()

template<class T>
void G4RKIntegrationDriver< T >::SetSmallestFraction ( G4double val)

◆ ShrinkStepSize()

template<class T>
G4double G4RKIntegrationDriver< T >::ShrinkStepSize ( G4double h,
G4double error ) const
protected

Utility methods to control step size.

◆ ShrinkStepSize2()

template<class T>
G4double G4RKIntegrationDriver< T >::ShrinkStepSize2 ( G4double h,
G4double error2 ) const
protected

◆ StreamInfo()

template<class T>
void G4RKIntegrationDriver< T >::StreamInfo ( std::ostream & os) const
overridevirtual

Writes out to stream the parameters/state of the driver.

Implements G4VIntegrationDriver.

◆ UpdateErrorConstraints()

template<class T>
void G4RKIntegrationDriver< T >::UpdateErrorConstraints ( )
protected

The documentation for this class was generated from the following file: