Geant4 11.4.0
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
G4SimpleHeum Class Reference

G4SimpleHeum implements a simple Heum stepper for magnetic field with 3rd order solver. More...

#include <G4SimpleHeum.hh>

Inheritance diagram for G4SimpleHeum:

Public Member Functions

 G4SimpleHeum (G4EquationOfMotion *EqRhs, G4int num_variables=6)
 ~G4SimpleHeum () override
 G4SimpleHeum (const G4SimpleHeum &)=delete
G4SimpleHeumoperator= (const G4SimpleHeum &)=delete
void DumbStepper (const G4double y[], const G4double dydx[], G4double h, G4double yout[]) override
G4int IntegratorOrder () const override
G4StepperType StepperType () const override
Public Member Functions inherited from G4MagErrorStepper
 G4MagErrorStepper (G4EquationOfMotion *EqRhs, G4int numberOfVariables, G4int numStateVariables=12)
 ~G4MagErrorStepper () override
 G4MagErrorStepper (const G4MagErrorStepper &)=delete
G4MagErrorStepperoperator= (const G4MagErrorStepper &)=delete
void Stepper (const G4double y[], const G4double dydx[], G4double h, G4double yout[], G4double yerr[]) override
G4double DistChord () const override
Public Member Functions inherited from G4MagIntegratorStepper
 G4MagIntegratorStepper (G4EquationOfMotion *Equation, G4int numIntegrationVariables, G4int numStateVariables=12, G4bool isFSAL=false)
virtual ~G4MagIntegratorStepper ()=default
 G4MagIntegratorStepper (const G4MagIntegratorStepper &)=delete
G4MagIntegratorStepperoperator= (const G4MagIntegratorStepper &)=delete
void NormaliseTangentVector (G4double vec[6])
void NormalisePolarizationVector (G4double vec[12])
void RightHandSide (const G4double y[], G4double dydx[]) const
void RightHandSide (const G4double y[], G4double dydx[], G4double field[]) const
G4int GetNumberOfVariables () const
G4int GetNumberOfStateVariables () const
G4int IntegrationOrder ()
G4EquationOfMotionGetEquationOfMotion ()
const G4EquationOfMotionGetEquationOfMotion () const
void SetEquationOfMotion (G4EquationOfMotion *newEquation)
unsigned long GetfNoRHSCalls ()
void ResetfNORHSCalls ()
G4bool IsFSAL () const
G4bool isQSS () const
void SetIsQSS (G4bool val)

Additional Inherited Members

Protected Member Functions inherited from G4MagIntegratorStepper
void SetIntegrationOrder (G4int order)
void SetFSAL (G4bool flag=true)

Detailed Description

G4SimpleHeum implements a simple Heum stepper for magnetic field with 3rd order solver.

Definition at line 49 of file G4SimpleHeum.hh.

Constructor & Destructor Documentation

◆ G4SimpleHeum() [1/2]

G4SimpleHeum::G4SimpleHeum ( G4EquationOfMotion * EqRhs,
G4int num_variables = 6 )

Constructor for G4SimpleHeum.

Parameters
[in]EqRhsPointer to the provided equation of motion.
[in]num_variablesThe number of integration variables.

Definition at line 38 of file G4SimpleHeum.cc.

39 : G4MagErrorStepper(EqRhs, num_variables),
40 fNumberOfVariables(num_variables)
41{
42 dydxTemp = new G4double[fNumberOfVariables] ;
43 dydxTemp2 = new G4double[fNumberOfVariables] ;
44 yTemp = new G4double[fNumberOfVariables] ;
45 yTemp2 = new G4double[fNumberOfVariables] ;
46}
double G4double
Definition G4Types.hh:83
G4MagErrorStepper(G4EquationOfMotion *EqRhs, G4int numberOfVariables, G4int numStateVariables=12)

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

◆ ~G4SimpleHeum()

G4SimpleHeum::~G4SimpleHeum ( )
override

Destructor.

Definition at line 52 of file G4SimpleHeum.cc.

53{
54 delete [] dydxTemp;
55 delete [] dydxTemp2;
56 delete [] yTemp;
57 delete [] yTemp2;
58}

◆ G4SimpleHeum() [2/2]

G4SimpleHeum::G4SimpleHeum ( const G4SimpleHeum & )
delete

Copy constructor and assignment operator not allowed.

Member Function Documentation

◆ DumbStepper()

void G4SimpleHeum::DumbStepper ( const G4double y[],
const G4double dydx[],
G4double h,
G4double yout[] )
overridevirtual

The stepper for the Runge Kutta integration, but performing a 'dump' step without error calculation.

Parameters
[in]yStarting values array of integration variables.
[in]dydxDerivatives array.
[in]hThe given step size.
[out]youtIntegration output.

Implements G4MagErrorStepper.

Definition at line 65 of file G4SimpleHeum.cc.

69{
70 for( G4int i = 0; i < fNumberOfVariables; ++i )
71 {
72 yTemp[i] = yIn[i] + (1.0/3.0) * h * dydx[i] ;
73 }
74
75 RightHandSide(yTemp,dydxTemp);
76
77 for( G4int i = 0; i < fNumberOfVariables; ++i )
78 {
79 yTemp2[i] = yIn[i] + (2.0/3.0) * h * dydxTemp[i] ;
80 }
81
82 RightHandSide(yTemp2,dydxTemp2);
83
84 for( G4int i = 0; i < fNumberOfVariables; ++i )
85 {
86 yOut[i] = yIn[i] + h * (0.25 * dydx[i] + 0.75 * dydxTemp2[i]);
87 }
88
89 if ( fNumberOfVariables == 12 ) { NormalisePolarizationVector( yOut ); }
90}
int G4int
Definition G4Types.hh:85
void NormalisePolarizationVector(G4double vec[12])
void RightHandSide(const G4double y[], G4double dydx[]) const

◆ IntegratorOrder()

G4int G4SimpleHeum::IntegratorOrder ( ) const
inlineoverridevirtual

Returns the order, 3, of integration.

Implements G4MagIntegratorStepper.

Definition at line 88 of file G4SimpleHeum.hh.

88{ return 3; }

◆ operator=()

G4SimpleHeum & G4SimpleHeum::operator= ( const G4SimpleHeum & )
delete

◆ StepperType()

G4StepperType G4SimpleHeum::StepperType ( ) const
inlineoverridevirtual

Returns the stepper type-ID, "kSimpleHeum".

Reimplemented from G4MagIntegratorStepper.

Definition at line 93 of file G4SimpleHeum.hh.

93{ return kSimpleHeum; }
@ kSimpleHeum
G4SimpleHeum.

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