Geant4  10.03
G4FSALIntegrationDriver Class Reference

#include <G4FSALIntegrationDriver.hh>

+ Collaboration diagram for G4FSALIntegrationDriver:

Public Member Functions

G4bool AccurateAdvance (G4FieldTrack &y_current, G4double hstep, G4double eps, G4double hinitial=0.0)
 
G4bool QuickAdvance (G4FieldTrack &y_val, G4double dydx[], G4double hstep, G4double &dchord_step, G4double &dyerr)
 
G4bool QuickAdvance (G4FieldTrack &y_posvel, G4double dydx[], G4double hstep, G4double &dchord_step, G4double &dyerr_pos_sq, G4double &dyerr_mom_rel_sq)
 
 G4FSALIntegrationDriver (G4double hminimum, G4VFSALIntegrationStepper *pItsStepper, G4int numberOfComponents=6, G4int statisticsVerbosity=1)
 
 ~G4FSALIntegrationDriver ()
 
G4double GetHmin () const
 
G4double Hmin () const
 
G4double GetSafety () const
 
G4double GetPshrnk () const
 
G4double GetPgrow () const
 
G4double GetErrcon () const
 
G4int GetNoTotalSteps () const
 
void GetDerivatives (const G4FieldTrack &y_curr, G4double dydx[])
 
void RenewStepperAndAdjust (G4VFSALIntegrationStepper *pItsStepper)
 
void ReSetParameters (G4double new_safety=0.9)
 
void SetSafety (G4double valS)
 
void SetPshrnk (G4double valPs)
 
void SetPgrow (G4double valPg)
 
void SetErrcon (G4double valEc)
 
G4double ComputeAndSetErrcon ()
 
const G4VFSALIntegrationStepperGetStepper () const
 
G4VFSALIntegrationStepperGetStepper ()
 
void OneGoodStep (G4double ystart[], G4double dydx[], G4double &x, G4double htry, G4double eps, G4double &hdid, G4double &hnext)
 
G4double ComputeNewStepSize (G4double errMaxNorm, G4double hstepCurrent)
 
G4double ComputeNewStepSize_WithinLimits (G4double errMaxNorm, G4double hstepCurrent)
 
G4int GetMaxNoSteps () const
 
void SetMaxNoSteps (G4int val)
 
G4int GetTotalNoStepperCalls () const
 
void SetHmin (G4double newval)
 
void SetVerboseLevel (G4int newLevel)
 
G4double GetVerboseLevel () const
 
G4double GetSmallestFraction () const
 
void SetSmallestFraction (G4double val)
 

Protected Member Functions

void WarnSmallStepSize (G4double hnext, G4double hstep, G4double h, G4double xDone, G4int noSteps)
 
void WarnTooManyStep (G4double x1start, G4double x2end, G4double xCurrent)
 
void WarnEndPointTooFar (G4double endPointDist, G4double hStepSize, G4double epsilonRelative, G4int debugFlag)
 
void PrintStatus (const G4double *StartArr, G4double xstart, const G4double *CurrentArr, G4double xcurrent, G4double requestStep, G4int subStepNo)
 
void PrintStatus (const G4FieldTrack &StartFT, const G4FieldTrack &CurrentFT, G4double requestStep, G4int subStepNo)
 
void PrintStat_Aux (const G4FieldTrack &aFieldTrack, G4double requestStep, G4double actualStep, G4int subStepNo, G4double subStepSize, G4double dotVelocities)
 
void PrintStatisticsReport ()
 

Private Member Functions

 G4FSALIntegrationDriver (const G4FSALIntegrationDriver &)
 
G4FSALIntegrationDriveroperator= (const G4FSALIntegrationDriver &)
 

Private Attributes

G4double fMinimumStep
 
G4double fSmallestFraction
 
const G4int fNoIntegrationVariables
 
const G4int fMinNoVars
 
const G4int fNoVars
 
G4int fMaxNoSteps
 
G4double safety
 
G4double pshrnk
 
G4double pgrow
 
G4double errcon
 
G4int fStatisticsVerboseLevel
 
G4VFSALIntegrationStepperpIntStepper
 
G4int fNoTotalSteps
 
G4int fNoBadSteps
 
G4int fNoSmallSteps
 
G4int fNoInitialSmallSteps
 
G4double fDyerr_max
 
G4double fDyerr_mx2
 
G4double fDyerrPos_smTot
 
G4double fDyerrPos_lgTot
 
G4double fDyerrVel_lgTot
 
G4double fSumH_sm
 
G4double fSumH_lg
 
G4int fVerboseLevel
 
G4int TotalNoStepperCalls
 

Static Private Attributes

static const G4int fMaxStepBase = 100000
 
static const G4double max_stepping_increase = 5.0
 
static const G4double max_stepping_decrease = 0.1
 

Detailed Description

Definition at line 48 of file G4FSALIntegrationDriver.hh.

Constructor & Destructor Documentation

G4FSALIntegrationDriver::G4FSALIntegrationDriver ( G4double  hminimum,
G4VFSALIntegrationStepper pItsStepper,
G4int  numberOfComponents = 6,
G4int  statisticsVerbosity = 1 
)

Definition at line 67 of file G4FSALIntegrationDriver.cc.

References fMaxNoSteps, fMaxStepBase, fMinimumStep, fStatisticsVerboseLevel, fVerboseLevel, G4cout, G4endl, G4VFSALIntegrationStepper::IntegratorOrder(), pIntStepper, and RenewStepperAndAdjust().

+ Here is the call graph for this function:

G4FSALIntegrationDriver::~G4FSALIntegrationDriver ( )

Definition at line 111 of file G4FSALIntegrationDriver.cc.

References fStatisticsVerboseLevel, and PrintStatisticsReport().

+ Here is the call graph for this function:

G4FSALIntegrationDriver::G4FSALIntegrationDriver ( const G4FSALIntegrationDriver )
private

Member Function Documentation

G4double G4FSALIntegrationDriver::ComputeAndSetErrcon ( )
inline
G4double G4FSALIntegrationDriver::ComputeNewStepSize ( G4double  errMaxNorm,
G4double  hstepCurrent 
)

Definition at line 770 of file G4FSALIntegrationDriver.cc.

References GetPgrow(), GetPshrnk(), GetSafety(), and max_stepping_increase.

Referenced by AccurateAdvance(), and QuickAdvance().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

G4double G4FSALIntegrationDriver::ComputeNewStepSize_WithinLimits ( G4double  errMaxNorm,
G4double  hstepCurrent 
)

Definition at line 800 of file G4FSALIntegrationDriver.cc.

References errcon, GetPgrow(), GetPshrnk(), GetSafety(), max_stepping_decrease, and max_stepping_increase.

+ Here is the call graph for this function:

void G4FSALIntegrationDriver::GetDerivatives ( const G4FieldTrack y_curr,
G4double  dydx[] 
)
inline
G4double G4FSALIntegrationDriver::GetErrcon ( ) const
inline
G4double G4FSALIntegrationDriver::GetHmin ( ) const
inline
G4int G4FSALIntegrationDriver::GetMaxNoSteps ( ) const
inline
G4int G4FSALIntegrationDriver::GetNoTotalSteps ( ) const
inline
G4double G4FSALIntegrationDriver::GetPgrow ( ) const
inline

Referenced by ComputeNewStepSize(), ComputeNewStepSize_WithinLimits(), and OneGoodStep().

+ Here is the caller graph for this function:

G4double G4FSALIntegrationDriver::GetPshrnk ( ) const
inline

Referenced by ComputeNewStepSize(), ComputeNewStepSize_WithinLimits(), and OneGoodStep().

+ Here is the caller graph for this function:

G4double G4FSALIntegrationDriver::GetSafety ( ) const
inline

Referenced by ComputeNewStepSize(), ComputeNewStepSize_WithinLimits(), and OneGoodStep().

+ Here is the caller graph for this function:

G4double G4FSALIntegrationDriver::GetSmallestFraction ( ) const
inline
const G4VFSALIntegrationStepper* G4FSALIntegrationDriver::GetStepper ( ) const
inline
G4VFSALIntegrationStepper* G4FSALIntegrationDriver::GetStepper ( )
inline
G4int G4FSALIntegrationDriver::GetTotalNoStepperCalls ( ) const
inline
G4double G4FSALIntegrationDriver::GetVerboseLevel ( ) const
inline
G4double G4FSALIntegrationDriver::Hmin ( ) const
inline

Referenced by AccurateAdvance(), and WarnSmallStepSize().

+ Here is the caller graph for this function:

void G4FSALIntegrationDriver::OneGoodStep ( G4double  ystart[],
G4double  dydx[],
G4double x,
G4double  htry,
G4double  eps,
G4double hdid,
G4double hnext 
)

Definition at line 518 of file G4FSALIntegrationDriver.cc.

References errcon, fDyerrPos_lgTot, fDyerrVel_lgTot, fMinimumStep, fNoIntegrationVariables, fSumH_lg, G4cerr, G4endl, G4ThreadLocal, GetPgrow(), GetPshrnk(), GetSafety(), G4INCL::Math::max(), max_stepping_increase, G4FieldTrack::ncompSVEC, pIntStepper, sqr(), and TotalNoStepperCalls.

Referenced by AccurateAdvance().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

G4FSALIntegrationDriver& G4FSALIntegrationDriver::operator= ( const G4FSALIntegrationDriver )
private
void G4FSALIntegrationDriver::PrintStat_Aux ( const G4FieldTrack aFieldTrack,
G4double  requestStep,
G4double  actualStep,
G4int  subStepNo,
G4double  subStepSize,
G4double  dotVelocities 
)
protected

Definition at line 935 of file G4FSALIntegrationDriver.cc.

References G4cout, G4endl, G4ThreadLocal, G4FieldTrack::GetCurveLength(), G4FieldTrack::GetKineticEnergy(), G4FieldTrack::GetMomentumDir(), and G4FieldTrack::GetPosition().

Referenced by PrintStatus().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void G4FSALIntegrationDriver::PrintStatisticsReport ( )
protected

Definition at line 1001 of file G4FSALIntegrationDriver.cc.

References fDyerr_max, fDyerr_mx2, fDyerrPos_lgTot, fDyerrPos_smTot, fDyerrVel_lgTot, fMinimumStep, fNoBadSteps, fNoInitialSmallSteps, fNoSmallSteps, fNoTotalSteps, fSumH_lg, fSumH_sm, G4cout, and G4endl.

Referenced by ~G4FSALIntegrationDriver().

+ Here is the caller graph for this function:

void G4FSALIntegrationDriver::PrintStatus ( const G4double StartArr,
G4double  xstart,
const G4double CurrentArr,
G4double  xcurrent,
G4double  requestStep,
G4int  subStepNo 
)
protected

Definition at line 832 of file G4FSALIntegrationDriver.cc.

References fNoIntegrationVariables, G4FieldTrack::LoadFromArray(), and G4FieldTrack::SetCurveLength().

Referenced by AccurateAdvance(), and QuickAdvance().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void G4FSALIntegrationDriver::PrintStatus ( const G4FieldTrack StartFT,
const G4FieldTrack CurrentFT,
G4double  requestStep,
G4int  subStepNo 
)
protected

Definition at line 857 of file G4FSALIntegrationDriver.cc.

References fVerboseLevel, G4cout, G4endl, G4ThreadLocal, G4FieldTrack::GetCurveLength(), G4FieldTrack::GetMomentumDir(), G4FieldTrack::GetPosition(), and PrintStat_Aux().

+ Here is the call graph for this function:

G4bool G4FSALIntegrationDriver::QuickAdvance ( G4FieldTrack y_val,
G4double  dydx[],
G4double  hstep,
G4double dchord_step,
G4double dyerr 
)

Definition at line 669 of file G4FSALIntegrationDriver.cc.

References ComputeNewStepSize(), G4FieldTrack::DumpToArray(), eps, fNoIntegrationVariables, fVerboseLevel, G4cout, G4endl, G4ThreadLocal, G4FieldTrack::GetCurveLength(), G4FieldTrack::LoadFromArray(), G4FieldTrack::ncompSVEC, pIntStepper, PrintStatus(), G4FieldTrack::SetCurveLength(), and sqr().

Referenced by AccurateAdvance().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

G4bool G4FSALIntegrationDriver::QuickAdvance ( G4FieldTrack y_posvel,
G4double  dydx[],
G4double  hstep,
G4double dchord_step,
G4double dyerr_pos_sq,
G4double dyerr_mom_rel_sq 
)

Definition at line 650 of file G4FSALIntegrationDriver.cc.

References FatalException, G4Exception(), and G4FieldTrack::GetPosition().

+ Here is the call graph for this function:

void G4FSALIntegrationDriver::RenewStepperAndAdjust ( G4VFSALIntegrationStepper pItsStepper)
inline

Referenced by G4FSALIntegrationDriver().

+ Here is the caller graph for this function:

void G4FSALIntegrationDriver::ReSetParameters ( G4double  new_safety = 0.9)
inline
void G4FSALIntegrationDriver::SetErrcon ( G4double  valEc)
inline
void G4FSALIntegrationDriver::SetHmin ( G4double  newval)
inline
void G4FSALIntegrationDriver::SetMaxNoSteps ( G4int  val)
inline
void G4FSALIntegrationDriver::SetPgrow ( G4double  valPg)
inline
void G4FSALIntegrationDriver::SetPshrnk ( G4double  valPs)
inline
void G4FSALIntegrationDriver::SetSafety ( G4double  valS)
inline
void G4FSALIntegrationDriver::SetSmallestFraction ( G4double  val)

Definition at line 1049 of file G4FSALIntegrationDriver.cc.

References fSmallestFraction, G4cerr, and G4endl.

void G4FSALIntegrationDriver::SetVerboseLevel ( G4int  newLevel)
inline
void G4FSALIntegrationDriver::WarnEndPointTooFar ( G4double  endPointDist,
G4double  hStepSize,
G4double  epsilonRelative,
G4int  debugFlag 
)
protected

Definition at line 482 of file G4FSALIntegrationDriver.cc.

References eps, G4endl, G4Exception(), G4ThreadLocal, G4GeometryTolerance::GetInstance(), G4GeometryTolerance::GetSurfaceTolerance(), and JustWarning.

Referenced by AccurateAdvance().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void G4FSALIntegrationDriver::WarnSmallStepSize ( G4double  hnext,
G4double  hstep,
G4double  h,
G4double  xDone,
G4int  noSteps 
)
protected

Definition at line 433 of file G4FSALIntegrationDriver.cc.

References fVerboseLevel, G4endl, G4Exception(), G4ThreadLocal, Hmin(), and JustWarning.

Referenced by AccurateAdvance().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void G4FSALIntegrationDriver::WarnTooManyStep ( G4double  x1start,
G4double  x2end,
G4double  xCurrent 
)
protected

Definition at line 465 of file G4FSALIntegrationDriver.cc.

References G4endl, G4Exception(), and JustWarning.

Referenced by AccurateAdvance().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

Member Data Documentation

G4double G4FSALIntegrationDriver::errcon
private

Definition at line 236 of file G4FSALIntegrationDriver.hh.

Referenced by ComputeNewStepSize_WithinLimits(), and OneGoodStep().

G4double G4FSALIntegrationDriver::fDyerr_max
private

Definition at line 253 of file G4FSALIntegrationDriver.hh.

Referenced by AccurateAdvance(), and PrintStatisticsReport().

G4double G4FSALIntegrationDriver::fDyerr_mx2
private

Definition at line 253 of file G4FSALIntegrationDriver.hh.

Referenced by PrintStatisticsReport().

G4double G4FSALIntegrationDriver::fDyerrPos_lgTot
private

Definition at line 254 of file G4FSALIntegrationDriver.hh.

Referenced by OneGoodStep(), and PrintStatisticsReport().

G4double G4FSALIntegrationDriver::fDyerrPos_smTot
private

Definition at line 254 of file G4FSALIntegrationDriver.hh.

Referenced by AccurateAdvance(), and PrintStatisticsReport().

G4double G4FSALIntegrationDriver::fDyerrVel_lgTot
private

Definition at line 254 of file G4FSALIntegrationDriver.hh.

Referenced by OneGoodStep(), and PrintStatisticsReport().

G4int G4FSALIntegrationDriver::fMaxNoSteps
private

Definition at line 230 of file G4FSALIntegrationDriver.hh.

Referenced by AccurateAdvance(), and G4FSALIntegrationDriver().

const G4int G4FSALIntegrationDriver::fMaxStepBase = 100000
staticprivate

Definition at line 231 of file G4FSALIntegrationDriver.hh.

Referenced by G4FSALIntegrationDriver().

G4double G4FSALIntegrationDriver::fMinimumStep
private
const G4int G4FSALIntegrationDriver::fMinNoVars
private

Definition at line 227 of file G4FSALIntegrationDriver.hh.

G4int G4FSALIntegrationDriver::fNoBadSteps
private

Definition at line 252 of file G4FSALIntegrationDriver.hh.

Referenced by AccurateAdvance(), and PrintStatisticsReport().

G4int G4FSALIntegrationDriver::fNoInitialSmallSteps
private

Definition at line 252 of file G4FSALIntegrationDriver.hh.

Referenced by AccurateAdvance(), and PrintStatisticsReport().

const G4int G4FSALIntegrationDriver::fNoIntegrationVariables
private
G4int G4FSALIntegrationDriver::fNoSmallSteps
private

Definition at line 252 of file G4FSALIntegrationDriver.hh.

Referenced by AccurateAdvance(), and PrintStatisticsReport().

G4int G4FSALIntegrationDriver::fNoTotalSteps
private

Definition at line 252 of file G4FSALIntegrationDriver.hh.

Referenced by AccurateAdvance(), and PrintStatisticsReport().

const G4int G4FSALIntegrationDriver::fNoVars
private

Definition at line 228 of file G4FSALIntegrationDriver.hh.

Referenced by AccurateAdvance().

G4double G4FSALIntegrationDriver::fSmallestFraction
private

Definition at line 222 of file G4FSALIntegrationDriver.hh.

Referenced by AccurateAdvance(), and SetSmallestFraction().

G4int G4FSALIntegrationDriver::fStatisticsVerboseLevel
private
G4double G4FSALIntegrationDriver::fSumH_lg
private

Definition at line 255 of file G4FSALIntegrationDriver.hh.

Referenced by OneGoodStep(), and PrintStatisticsReport().

G4double G4FSALIntegrationDriver::fSumH_sm
private

Definition at line 255 of file G4FSALIntegrationDriver.hh.

Referenced by AccurateAdvance(), and PrintStatisticsReport().

G4int G4FSALIntegrationDriver::fVerboseLevel
private
const G4double G4FSALIntegrationDriver::max_stepping_decrease = 0.1
staticprivate

Definition at line 240 of file G4FSALIntegrationDriver.hh.

Referenced by ComputeNewStepSize_WithinLimits().

const G4double G4FSALIntegrationDriver::max_stepping_increase = 5.0
staticprivate
G4double G4FSALIntegrationDriver::pgrow
private

Definition at line 235 of file G4FSALIntegrationDriver.hh.

G4VFSALIntegrationStepper* G4FSALIntegrationDriver::pIntStepper
private
G4double G4FSALIntegrationDriver::pshrnk
private

Definition at line 234 of file G4FSALIntegrationDriver.hh.

G4double G4FSALIntegrationDriver::safety
private

Definition at line 233 of file G4FSALIntegrationDriver.hh.

G4int G4FSALIntegrationDriver::TotalNoStepperCalls
private

Definition at line 262 of file G4FSALIntegrationDriver.hh.

Referenced by OneGoodStep().


The documentation for this class was generated from the following files: