Geant4-11
Public Member Functions | Protected Member Functions | Private Member Functions | Private Attributes
G4BogackiShampine23 Class Reference

#include <G4BogackiShampine23.hh>

Inheritance diagram for G4BogackiShampine23:
G4MagIntegratorStepper

Public Member Functions

virtual G4double DistChord () const override
 
 G4BogackiShampine23 (const G4BogackiShampine23 &)=delete
 
 G4BogackiShampine23 (G4EquationOfMotion *EqRhs, G4int numberOfVariables=6)
 
G4EquationOfMotionGetEquationOfMotion ()
 
const G4EquationOfMotionGetEquationOfMotion () const
 
unsigned long GetfNoRHSCalls ()
 
G4int GetNumberOfStateVariables () const
 
G4int GetNumberOfVariables () const
 
G4int IntegrationOrder ()
 
virtual G4int IntegratorOrder () const override
 
G4bool IsFSAL () const
 
void NormalisePolarizationVector (G4double vec[12])
 
void NormaliseTangentVector (G4double vec[6])
 
G4BogackiShampine23operator= (const G4BogackiShampine23 &)=delete
 
void ResetfNORHSCalls ()
 
void RightHandSide (const G4double y[], G4double dydx[]) const
 
void RightHandSide (const G4double y[], G4double dydx[], G4double field[]) const
 
void SetEquationOfMotion (G4EquationOfMotion *newEquation)
 
virtual 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[])
 

Protected Member Functions

void SetFSAL (G4bool flag=true)
 
void SetIntegrationOrder (G4int order)
 

Private Member Functions

void makeStep (const G4double yInput[], const G4double dydx[], const G4double hstep, G4double yOutput[], G4double *dydxOutput=nullptr, G4double *yError=nullptr) const
 

Private Attributes

G4double fdydx [G4FieldTrack::ncompSVEC]
 
G4double fdydxOut [G4FieldTrack::ncompSVEC]
 
G4EquationOfMotionfEquation_Rhs = nullptr
 
G4double fhstep = -1.0
 
G4int fIntegrationOrder = -1
 
G4bool fIsFSAL = false
 
const G4int fNoIntegrationVariables = 0
 
unsigned long fNoRHSCalls = 0UL
 
const G4int fNoStateVariables = 0
 
G4double fyIn [G4FieldTrack::ncompSVEC]
 
G4double fyOut [G4FieldTrack::ncompSVEC]
 

Detailed Description

Definition at line 50 of file G4BogackiShampine23.hh.

Constructor & Destructor Documentation

◆ G4BogackiShampine23() [1/2]

G4BogackiShampine23::G4BogackiShampine23 ( G4EquationOfMotion EqRhs,
G4int  numberOfVariables = 6 
)

Definition at line 55 of file G4BogackiShampine23.cc.

57 : G4MagIntegratorStepper(EqRhs, integrationVariables)
58{
60 SetFSAL(true);
61}
G4MagIntegratorStepper(G4EquationOfMotion *Equation, G4int numIntegrationVariables, G4int numStateVariables=12, G4bool isFSAL=false)
void SetIntegrationOrder(G4int order)
void SetFSAL(G4bool flag=true)

References G4MagIntegratorStepper::SetFSAL(), and G4MagIntegratorStepper::SetIntegrationOrder().

◆ G4BogackiShampine23() [2/2]

G4BogackiShampine23::G4BogackiShampine23 ( const G4BogackiShampine23 )
delete

Member Function Documentation

◆ DistChord()

G4double G4BogackiShampine23::DistChord ( ) const
overridevirtual

Implements G4MagIntegratorStepper.

Definition at line 148 of file G4BogackiShampine23.cc.

149{
151 makeStep(fyIn, fdydx, fhstep / 2., yMid);
152
153 const G4ThreeVector begin = makeVector(fyIn, Value3D::Position);
154 const G4ThreeVector mid = makeVector(yMid, Value3D::Position);
155 const G4ThreeVector end = makeVector(fyOut, Value3D::Position);
156
157 return G4LineSection::Distline(mid, begin, end);
158}
double G4double
Definition: G4Types.hh:83
G4double fdydx[G4FieldTrack::ncompSVEC]
G4double fyIn[G4FieldTrack::ncompSVEC]
void makeStep(const G4double yInput[], const G4double dydx[], const G4double hstep, G4double yOutput[], G4double *dydxOutput=nullptr, G4double *yError=nullptr) const
G4double fyOut[G4FieldTrack::ncompSVEC]
static G4double Distline(const G4ThreeVector &OtherPnt, const G4ThreeVector &LinePntA, const G4ThreeVector &LinePntB)
G4ThreeVector makeVector(const ArrayType &array, Value3D value)

References G4LineSection::Distline(), fdydx, fhstep, fyIn, fyOut, makeStep(), field_utils::makeVector(), and G4FieldTrack::ncompSVEC.

◆ GetEquationOfMotion() [1/2]

G4EquationOfMotion * G4MagIntegratorStepper::GetEquationOfMotion ( )
inlineinherited

◆ GetEquationOfMotion() [2/2]

const G4EquationOfMotion * G4MagIntegratorStepper::GetEquationOfMotion ( ) const
inlineinherited

◆ GetfNoRHSCalls()

unsigned long G4MagIntegratorStepper::GetfNoRHSCalls ( )
inlineinherited

◆ GetNumberOfStateVariables()

G4int G4MagIntegratorStepper::GetNumberOfStateVariables ( ) const
inlineinherited

◆ GetNumberOfVariables()

G4int G4MagIntegratorStepper::GetNumberOfVariables ( ) const
inlineinherited

◆ IntegrationOrder()

G4int G4MagIntegratorStepper::IntegrationOrder ( )
inlineinherited

◆ IntegratorOrder()

virtual G4int G4BogackiShampine23::IntegratorOrder ( ) const
inlineoverridevirtual

Implements G4MagIntegratorStepper.

Definition at line 74 of file G4BogackiShampine23.hh.

74{ return 3; }

◆ IsFSAL()

G4bool G4MagIntegratorStepper::IsFSAL ( ) const
inlineinherited

◆ makeStep()

void G4BogackiShampine23::makeStep ( const G4double  yInput[],
const G4double  dydx[],
const G4double  hstep,
G4double  yOutput[],
G4double dydxOutput = nullptr,
G4double yError = nullptr 
) const
private

Definition at line 63 of file G4BogackiShampine23.cc.

69{
70
73 {
74 yOutput[i] = yTemp[i] = yInput[i];
75 }
76
79
80 const G4double b21 = 0.5 ,
81 b31 = 0., b32 = 3.0 / 4.0,
82 b41 = 2.0 / 9.0, b42 = 1.0 / 3.0, b43 = 4.0 / 9.0;
83
84 const G4double dc1 = b41 - 7.0 / 24.0, dc2 = b42 - 1.0 / 4.0,
85 dc3 = b43 - 1.0 / 3.0, dc4 = - 1.0 / 8.0;
86
87 // RightHandSide(yInput, dydx);
88 for(G4int i = 0; i < GetNumberOfVariables(); ++i)
89 {
90 yTemp[i] = yInput[i] + b21 * hstep * dydx[i];
91 }
92
93 RightHandSide(yTemp, ak2);
94 for(G4int i = 0; i < GetNumberOfVariables(); ++i)
95 {
96 yTemp[i] = yInput[i] + hstep * (b31 * dydx[i] + b32 * ak2[i]);
97 }
98
99 RightHandSide(yTemp, ak3);
100 for(G4int i = 0; i < GetNumberOfVariables(); ++i)
101 {
102 yOutput[i] = yInput[i] + hstep * (b41*dydx[i] + b42*ak2[i] + b43*ak3[i]);
103 }
104
105 if (dydxOutput && yError)
106 {
107 RightHandSide(yOutput, dydxOutput);
108 for(G4int i = 0; i < GetNumberOfVariables(); ++i)
109 {
110 yError[i] = hstep * (dc1 * dydx[i] + dc2 * ak2[i] +
111 dc3 * ak3[i] + dc4 * dydxOutput[i]);
112 }
113 }
114}
static const G4double ak2
int G4int
Definition: G4Types.hh:85
G4int GetNumberOfVariables() const
void RightHandSide(const G4double y[], G4double dydx[]) const
G4int GetNumberOfStateVariables() const

References ak2, G4MagIntegratorStepper::GetNumberOfStateVariables(), G4MagIntegratorStepper::GetNumberOfVariables(), G4FieldTrack::ncompSVEC, and G4MagIntegratorStepper::RightHandSide().

Referenced by DistChord(), and Stepper().

◆ NormalisePolarizationVector()

void G4MagIntegratorStepper::NormalisePolarizationVector ( G4double  vec[12])
inlineinherited

◆ NormaliseTangentVector()

void G4MagIntegratorStepper::NormaliseTangentVector ( G4double  vec[6])
inlineinherited

◆ operator=()

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

◆ ResetfNORHSCalls()

void G4MagIntegratorStepper::ResetfNORHSCalls ( )
inlineinherited

◆ RightHandSide() [1/2]

void G4MagIntegratorStepper::RightHandSide ( const G4double  y[],
G4double  dydx[] 
) const
inlineinherited

◆ RightHandSide() [2/2]

void G4MagIntegratorStepper::RightHandSide ( const G4double  y[],
G4double  dydx[],
G4double  field[] 
) const
inlineinherited

◆ SetEquationOfMotion()

void G4MagIntegratorStepper::SetEquationOfMotion ( G4EquationOfMotion newEquation)
inlineinherited

◆ SetFSAL()

void G4MagIntegratorStepper::SetFSAL ( G4bool  flag = true)
inlineprotectedinherited

Referenced by G4BogackiShampine23().

◆ SetIntegrationOrder()

void G4MagIntegratorStepper::SetIntegrationOrder ( G4int  order)
inlineprotectedinherited

Referenced by G4BogackiShampine23().

◆ Stepper() [1/2]

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

Implements G4MagIntegratorStepper.

Definition at line 116 of file G4BogackiShampine23.cc.

121{
122 copy(fyIn, yInput);
123 copy(fdydx, dydx);
124 fhstep = hstep;
125
126 makeStep(fyIn, fdydx, fhstep, fyOut, fdydxOut, yError);
127
128 copy(yOutput, fyOut);
129}
G4double fdydxOut[G4FieldTrack::ncompSVEC]
void copy(G4double dst[], const G4double src[], size_t size=G4FieldTrack::ncompSVEC)
Definition: G4FieldUtils.cc:98

References field_utils::copy(), fdydx, fdydxOut, fhstep, fyIn, fyOut, and makeStep().

◆ Stepper() [2/2]

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

Definition at line 131 of file G4BogackiShampine23.cc.

137{
138 copy(fyIn, yInput);
139 copy(fdydx, dydx);
140 fhstep = hstep;
141
142 makeStep(fyIn, fdydx, fhstep, fyOut, fdydxOut, yError);
143
144 copy(yOutput, fyOut);
145 copy(dydxOutput, fdydxOut);
146}

References field_utils::copy(), fdydx, fdydxOut, fhstep, fyIn, fyOut, and makeStep().

Field Documentation

◆ fdydx

G4double G4BogackiShampine23::fdydx[G4FieldTrack::ncompSVEC]
private

Definition at line 86 of file G4BogackiShampine23.hh.

Referenced by DistChord(), and Stepper().

◆ fdydxOut

G4double G4BogackiShampine23::fdydxOut[G4FieldTrack::ncompSVEC]
private

Definition at line 88 of file G4BogackiShampine23.hh.

Referenced by Stepper().

◆ fEquation_Rhs

G4EquationOfMotion* G4MagIntegratorStepper::fEquation_Rhs = nullptr
privateinherited

Definition at line 124 of file G4MagIntegratorStepper.hh.

◆ fhstep

G4double G4BogackiShampine23::fhstep = -1.0
private

Definition at line 89 of file G4BogackiShampine23.hh.

Referenced by DistChord(), and Stepper().

◆ fIntegrationOrder

G4int G4MagIntegratorStepper::fIntegrationOrder = -1
privateinherited

Definition at line 134 of file G4MagIntegratorStepper.hh.

◆ fIsFSAL

G4bool G4MagIntegratorStepper::fIsFSAL = false
privateinherited

Definition at line 136 of file G4MagIntegratorStepper.hh.

◆ fNoIntegrationVariables

const G4int G4MagIntegratorStepper::fNoIntegrationVariables = 0
privateinherited

Definition at line 125 of file G4MagIntegratorStepper.hh.

◆ fNoRHSCalls

unsigned long G4MagIntegratorStepper::fNoRHSCalls = 0UL
mutableprivateinherited

Definition at line 128 of file G4MagIntegratorStepper.hh.

◆ fNoStateVariables

const G4int G4MagIntegratorStepper::fNoStateVariables = 0
privateinherited

Definition at line 126 of file G4MagIntegratorStepper.hh.

◆ fyIn

G4double G4BogackiShampine23::fyIn[G4FieldTrack::ncompSVEC]
private

Definition at line 85 of file G4BogackiShampine23.hh.

Referenced by DistChord(), and Stepper().

◆ fyOut

G4double G4BogackiShampine23::fyOut[G4FieldTrack::ncompSVEC]
private

Definition at line 87 of file G4BogackiShampine23.hh.

Referenced by DistChord(), and Stepper().


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