#include <G4HelixImplicitEuler.hh>
Inheritance diagram for G4HelixImplicitEuler:
Public Member Functions | |
G4HelixImplicitEuler (G4Mag_EqRhs *EqRhs) | |
~G4HelixImplicitEuler () | |
void | DumbStepper (const G4double y[], G4ThreeVector Bfld, G4double h, G4double yout[]) |
G4int | IntegratorOrder () const |
Definition at line 51 of file G4HelixImplicitEuler.hh.
G4HelixImplicitEuler::G4HelixImplicitEuler | ( | G4Mag_EqRhs * | EqRhs | ) | [inline] |
G4HelixImplicitEuler::~G4HelixImplicitEuler | ( | ) | [inline] |
void G4HelixImplicitEuler::DumbStepper | ( | const G4double | y[], | |
G4ThreeVector | Bfld, | |||
G4double | h, | |||
G4double | yout[] | |||
) | [virtual] |
Implements G4MagHelicalStepper.
Definition at line 46 of file G4HelixImplicitEuler.cc.
References G4MagHelicalStepper::AdvanceHelix(), and G4MagHelicalStepper::MagFieldEvaluate().
00050 { 00051 const G4int nvar = 6 ; 00052 G4double yTemp[6], yTemp2[6]; 00053 G4ThreeVector Bfld_endpoint; 00054 00055 G4int i; 00056 00057 // Step forward like in the explicit euler case 00058 AdvanceHelix( yIn, Bfld, h, yTemp); 00059 00060 // now obtain the new field value at the new point 00061 MagFieldEvaluate(yTemp, Bfld_endpoint); 00062 00063 // and also advance along a helix for this field value 00064 AdvanceHelix( yIn, Bfld_endpoint, h, yTemp2); 00065 00066 // we take the average 00067 for( i = 0; i < nvar; i++ ) 00068 yOut[i] = 0.5 * ( yTemp[i] + yTemp2[i] ); 00069 00070 // NormaliseTangentVector( yOut ); 00071 }
G4int G4HelixImplicitEuler::IntegratorOrder | ( | ) | const [inline, virtual] |