46 if( numStateVariables < 8 )
48 std::ostringstream message;
49 message <<
"The number of State variables at least 8 " <<
G4endl
50 <<
"Instead it is - numStateVariables= " << numStateVariables;
51 G4Exception(
"G4ConstRK4::G4ConstRK4()",
"GeomField0002",
64 Field[0]=0.; Field[1]=0.; Field[2]=0.;
100 yt[5] = yIn[5] + hh*dydx[5] ;
101 yt[4] = yIn[4] + hh*dydx[4] ;
102 yt[3] = yIn[3] + hh*dydx[3] ;
103 yt[2] = yIn[2] + hh*dydx[2] ;
104 yt[1] = yIn[1] + hh*dydx[1] ;
105 yt[0] = yIn[0] + hh*dydx[0] ;
109 yt[5] = yIn[5] + hh*dydxt[5] ;
110 yt[4] = yIn[4] + hh*dydxt[4] ;
111 yt[3] = yIn[3] + hh*dydxt[3] ;
112 yt[2] = yIn[2] + hh*dydxt[2] ;
113 yt[1] = yIn[1] + hh*dydxt[1] ;
114 yt[0] = yIn[0] + hh*dydxt[0] ;
119 yt[5] = yIn[5] + h*dydxm[5] ;
120 dydxm[5] += dydxt[5] ;
121 yt[4] = yIn[4] + h*dydxm[4] ;
122 dydxm[4] += dydxt[4] ;
123 yt[3] = yIn[3] + h*dydxm[3] ;
124 dydxm[3] += dydxt[3] ;
125 yt[2] = yIn[2] + h*dydxm[2] ;
126 dydxm[2] += dydxt[2] ;
127 yt[1] = yIn[1] + h*dydxm[1] ;
128 dydxm[1] += dydxt[1] ;
129 yt[0] = yIn[0] + h*dydxm[0] ;
130 dydxm[0] += dydxt[0] ;
134 yOut[5] = yIn[5]+h6*(dydx[5]+dydxt[5]+2.0*dydxm[5]);
135 yOut[4] = yIn[4]+h6*(dydx[4]+dydxt[4]+2.0*dydxm[4]);
136 yOut[3] = yIn[3]+h6*(dydx[3]+dydxt[3]+2.0*dydxm[3]);
137 yOut[2] = yIn[2]+h6*(dydx[2]+dydxt[2]+2.0*dydxm[2]);
138 yOut[1] = yIn[1]+h6*(dydx[1]+dydxt[1]+2.0*dydxm[1]);
139 yOut[0] = yIn[0]+h6*(dydx[0]+dydxt[0]+2.0*dydxm[0]);
154 const G4int nvar = 6;
163 for (i=0; i<maxvar; i++) { yInitial[i]= yInput[i]; }
166 for (i=nvar; i<maxvar; i++) { yOutput[i]= yInput[i]; }
169 yMiddle[7] = yInput[7];
170 yOneStep[7] = yInput[7];
185 fMidPoint =
G4ThreeVector( yMiddle[0], yMiddle[1], yMiddle[2]);
192 yError [i] = yOutput[i] - yOneStep[i] ;
193 yOutput[i] += yError[i]*correction ;
198 fInitialPoint =
G4ThreeVector( yInitial[0], yInitial[1], yInitial[2]);
199 fFinalPoint =
G4ThreeVector( yOutput[0], yOutput[1], yOutput[2]);
217 if (fInitialPoint != fFinalPoint)
222 distChord = distLine;
226 distChord = (fMidPoint-fInitialPoint).mag();
G4ConstRK4(G4Mag_EqRhs *EquationMotion, G4int numberOfStateVariables=8)
CLHEP::Hep3Vector G4ThreeVector
static G4double Distline(const G4ThreeVector &OtherPnt, const G4ThreeVector &LinePntA, const G4ThreeVector &LinePntB)
G4double DistChord() const
void Stepper(const G4double y[], const G4double dydx[], G4double h, G4double yout[], G4double yerr[])
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
void GetConstField(const G4double y[], G4double Field[])
void RightHandSideConst(const G4double y[], G4double dydx[]) const
G4int GetNumberOfStateVariables() const
G4int IntegratorOrder() const
void DumbStepper(const G4double yIn[], const G4double dydx[], G4double h, G4double yOut[])