#include <G4SimpleHeum.hh>
Inheritance diagram for G4SimpleHeum:
Public Member Functions | |
G4SimpleHeum (G4EquationOfMotion *EqRhs, G4int num_variables=6) | |
~G4SimpleHeum () | |
void | DumbStepper (const G4double y[], const G4double dydx[], G4double h, G4double yout[]) |
G4int | IntegratorOrder () const |
Definition at line 50 of file G4SimpleHeum.hh.
G4SimpleHeum::G4SimpleHeum | ( | G4EquationOfMotion * | EqRhs, | |
G4int | num_variables = 6 | |||
) |
Definition at line 46 of file G4SimpleHeum.cc.
00046 : 00047 G4MagErrorStepper(EqRhs, num_variables), 00048 fNumberOfVariables(num_variables) 00049 { 00050 dydxTemp = new G4double[fNumberOfVariables] ; 00051 dydxTemp2 = new G4double[fNumberOfVariables] ; 00052 yTemp = new G4double[fNumberOfVariables] ; 00053 yTemp2 = new G4double[fNumberOfVariables] ; 00054 }
G4SimpleHeum::~G4SimpleHeum | ( | ) |
Definition at line 61 of file G4SimpleHeum.cc.
00062 { 00063 delete[] dydxTemp; 00064 delete[] dydxTemp2; 00065 delete[] yTemp; 00066 delete[] yTemp2; 00067 }
void G4SimpleHeum::DumbStepper | ( | const G4double | y[], | |
const G4double | dydx[], | |||
G4double | h, | |||
G4double | yout[] | |||
) | [virtual] |
Implements G4MagErrorStepper.
Definition at line 75 of file G4SimpleHeum.cc.
References G4MagIntegratorStepper::NormalisePolarizationVector(), and G4MagIntegratorStepper::RightHandSide().
00079 { 00080 G4int i; 00081 for( i = 0; i < fNumberOfVariables; i++ ) 00082 { 00083 yTemp[i] = yIn[i] + (1.0/3.0) * h * dydx[i] ; 00084 } 00085 00086 RightHandSide(yTemp,dydxTemp); 00087 00088 for( i = 0; i < fNumberOfVariables; i++ ) 00089 { 00090 yTemp2[i] = yIn[i] + (2.0/3.0) * h * dydxTemp[i] ; 00091 } 00092 00093 RightHandSide(yTemp2,dydxTemp2); 00094 00095 for( i = 0; i < fNumberOfVariables; i++ ) 00096 { 00097 yOut[i] = yIn[i] + h * (0.25 * dydx[i] + 0.75 * dydxTemp2[i]); 00098 } 00099 00100 if ( fNumberOfVariables == 12 ) { NormalisePolarizationVector( yOut ); } 00101 }
G4int G4SimpleHeum::IntegratorOrder | ( | ) | const [inline, virtual] |