56 G4int integrationVariables)
63void G4BogackiShampine23::makeStep(
const G4double yInput[],
74 yOutput[i] = yTemp[i] = yInput[i];
81 b31 = 0., b32 = 3.0 / 4.0,
82 b41 = 2.0 / 9.0, b42 = 1.0 / 3.0, b43 = 4.0 / 9.0;
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;
90 yTemp[i] = yInput[i] + b21 * hstep * dydx[i];
96 yTemp[i] = yInput[i] + hstep * (b31 * dydx[i] + b32 * ak2[i]);
102 yOutput[i] = yInput[i] + hstep * (b41*dydx[i] + b42*ak2[i] + b43*ak3[i]);
105 if ((dydxOutput !=
nullptr) && (yError !=
nullptr))
110 yError[i] = hstep * (dc1 * dydx[i] + dc2 * ak2[i] +
111 dc3 * ak3[i] + dc4 * dydxOutput[i]);
126 makeStep(fyIn, fdydx, fhstep, fyOut, fdydxOut, yError);
128 copy(yOutput, fyOut);
142 makeStep(fyIn, fdydx, fhstep, fyOut, fdydxOut, yError);
144 copy(yOutput, fyOut);
145 copy(dydxOutput, fdydxOut);
151 makeStep(fyIn, fdydx, fhstep / 2., yMid);
G4double DistChord() const override
void Stepper(const G4double yInput[], const G4double dydx[], G4double hstep, G4double yOutput[], G4double yError[]) override
G4BogackiShampine23(G4EquationOfMotion *EqRhs, G4int numberOfVariables=6)
static G4double Distline(const G4ThreeVector &OtherPnt, const G4ThreeVector &LinePntA, const G4ThreeVector &LinePntB)
G4int GetNumberOfVariables() const
void RightHandSide(const G4double y[], G4double dydx[]) const
void SetIntegrationOrder(G4int order)
void SetFSAL(G4bool flag=true)
G4int GetNumberOfStateVariables() const
G4ThreeVector makeVector(const ArrayType &array, Value3D value)
void copy(G4double dst[], const G4double src[], std::size_t size=G4FieldTrack::ncompSVEC)