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

G4RK547FEq1 is an implementation of the 7 stage embedded Runge-Kutta 4,5 pair. More...

#include <G4RK547FEq1.hh>

Inheritance diagram for G4RK547FEq1:

Public Member Functions

 G4RK547FEq1 (G4EquationOfMotion *EqRhs, G4int integrationVariables=6)
 ~G4RK547FEq1 () override=default
 G4RK547FEq1 (const G4RK547FEq1 &)=delete
G4RK547FEq1operator= (const G4RK547FEq1 &)=delete
void Stepper (const G4double yInput[], const G4double dydx[], G4double hstep, G4double yOutput[], G4double yError[]) override
void Stepper (const G4double yInput[], const G4double dydx[], G4double hstep, G4double yOutput[], G4double yError[], G4double dydxOutput[])
G4double DistChord () const override
G4int IntegratorOrder () const override
G4StepperType StepperType () 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

G4RK547FEq1 is an implementation of the 7 stage embedded Runge-Kutta 4,5 pair.

Definition at line 49 of file G4RK547FEq1.hh.

Constructor & Destructor Documentation

◆ G4RK547FEq1() [1/2]

G4RK547FEq1::G4RK547FEq1 ( G4EquationOfMotion * EqRhs,
G4int integrationVariables = 6 )

Constructor for G4RK547FEq1.

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

Definition at line 51 of file G4RK547FEq1.cc.

52 : G4MagIntegratorStepper(EqRhs, integrationVariables)
53{
54}
G4MagIntegratorStepper(G4EquationOfMotion *Equation, G4int numIntegrationVariables, G4int numStateVariables=12, G4bool isFSAL=false)

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

◆ ~G4RK547FEq1()

G4RK547FEq1::~G4RK547FEq1 ( )
overridedefault

Default Destructor.

◆ G4RK547FEq1() [2/2]

G4RK547FEq1::G4RK547FEq1 ( const G4RK547FEq1 & )
delete

Copy constructor and assignment operator not allowed.

Member Function Documentation

◆ DistChord()

G4double G4RK547FEq1::DistChord ( ) const
overridevirtual

Returns the distance from chord line.

Implements G4MagIntegratorStepper.

Definition at line 178 of file G4RK547FEq1.cc.

179{
181 makeStep(fyIn, fdydx, fhstep / 2., yMid);
182
183 const G4ThreeVector begin = makeVector(fyIn, Value3D::Position);
184 const G4ThreeVector mid = makeVector(yMid, Value3D::Position);
185 const G4ThreeVector end = makeVector(fyOut, Value3D::Position);
186
187 return G4LineSection::Distline(mid, begin, end);
188}
CLHEP::Hep3Vector G4ThreeVector
double G4double
Definition G4Types.hh:83
static G4double Distline(const G4ThreeVector &OtherPnt, const G4ThreeVector &LinePntA, const G4ThreeVector &LinePntB)
G4ThreeVector makeVector(const ArrayType &array, Value3D value)

◆ IntegratorOrder()

G4int G4RK547FEq1::IntegratorOrder ( ) const
inlineoverridevirtual

Returns the order, 4, of integration.

Implements G4MagIntegratorStepper.

Definition at line 113 of file G4RK547FEq1.hh.

113{ return 4; }

◆ operator=()

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

◆ Stepper() [1/2]

void G4RK547FEq1::Stepper ( const G4double yInput[],
const G4double dydx[],
G4double hstep,
G4double yOutput[],
G4double yError[] )
overridevirtual

The stepper for the Runge Kutta integration. The stepsize is fixed, with the step size given by 'hstep'. Integrates ODE starting values yInput[0 to 6]. Outputs yOutput[] and its estimated error yError[].

Parameters
[in]yInputStarting values array of integration variables.
[in]dydxDerivatives array.
[in]hstepThe given step size.
[out]yOutputIntegration output.
[out]yErrorThe estimated error.

Implements G4MagIntegratorStepper.

Definition at line 146 of file G4RK547FEq1.cc.

151{
152 copy(fyIn, yInput);
153 copy(fdydx, dydx);
154 fhstep = hstep;
155
156 makeStep(fyIn, fdydx, fhstep, fyOut, fdydxOut, yError);
157
158 copy(yOutput, fyOut);
159}
void copy(G4double dst[], const G4double src[], std::size_t size=G4FieldTrack::ncompSVEC)

◆ Stepper() [2/2]

void G4RK547FEq1::Stepper ( const G4double yInput[],
const G4double dydx[],
G4double hstep,
G4double yOutput[],
G4double yError[],
G4double dydxOutput[] )

Same as the Stepper() function above, with dydx also in ouput.

Parameters
[in]yInputStarting values array of integration variables.
[in]dydxDerivatives array.
[in]hstepThe given step size.
[out]yOutputIntegration output.
[out]yErrorThe estimated error.
[out]dydxOutputdydx in output.

Definition at line 161 of file G4RK547FEq1.cc.

167{
168 copy(fyIn, yInput);
169 copy(fdydx, dydx);
170 fhstep = hstep;
171
172 makeStep(fyIn,fdydx, fhstep, fyOut, fdydxOut, yError);
173
174 copy(yOutput, fyOut);
175 copy(dydxOutput, fdydxOut);
176}

◆ StepperType()

G4StepperType G4RK547FEq1::StepperType ( ) const
inlineoverridevirtual

Returns the stepper type-ID, "kRK547FEq1".

Reimplemented from G4MagIntegratorStepper.

Definition at line 118 of file G4RK547FEq1.hh.

118{ return kRK547FEq1; }
@ kRK547FEq1
G4RK547FEq1.

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