28 G4Mag_UsualEqRhs *iEquation =
new G4Mag_UsualEqRhs(
this);
30 if (std::find(SUPPORTED_STEPPERS.begin(), SUPPORTED_STEPPERS.end(), integration_stepper) == SUPPORTED_STEPPERS.end()) {
35 G4MagIntegratorStepper *mag_int_stepper =
nullptr;
38 if (integration_stepper ==
"G4DormandPrince745") {
39 mag_int_stepper =
new G4DormandPrince745(iEquation);
40 }
else if (integration_stepper ==
"G4ClassicalRK4") {
41 mag_int_stepper =
new G4ClassicalRK4(iEquation);
42 }
else if (integration_stepper ==
"G4SimpleRunge") {
43 mag_int_stepper =
new G4HelixSimpleRunge(iEquation);
44 }
else if (integration_stepper ==
"G4HelixExplicitEuler") {
45 mag_int_stepper =
new G4HelixExplicitEuler(iEquation);
46 }
else if (integration_stepper ==
"G4HelixImplicitEuler") {
47 mag_int_stepper =
new G4HelixImplicitEuler(iEquation);
48 }
else if (integration_stepper ==
"G4CashKarpRKF45") {
49 mag_int_stepper =
new G4CashKarpRKF45(iEquation);
50 }
else if (integration_stepper ==
"G4RKG3_Stepper") {
51 mag_int_stepper =
new G4RKG3_Stepper(iEquation);
52 }
else if (integration_stepper ==
"G4SimpleHeum") {
53 mag_int_stepper =
new G4SimpleHeum(iEquation);
54 }
else if (integration_stepper ==
"G4NystromRK4") {
55 mag_int_stepper =
new G4NystromRK4(iEquation);
56 }
else if (integration_stepper ==
"G4ImplicitEuler") {
57 mag_int_stepper =
new G4ImplicitEuler(iEquation);
58 }
else if (integration_stepper ==
"G4ExplicitEuler") {
59 mag_int_stepper =
new G4ExplicitEuler(iEquation);
62 log->error(
ERR_STEPPER_NOT_FOUND,
"Integration Stepper ", integration_stepper,
" not found. Exiting.");
65 G4ChordFinder *fChordFinder =
new G4ChordFinder(
this, minimum_step, mag_int_stepper);
67 return new G4FieldManager(
this, fChordFinder);