This file is indexed.

/usr/include/CLHEP/GenericFunctions/AdaptiveRKStepper.hh is in libclhep-dev 2.1.4.1+dfsg-1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
#ifndef _AdaptiveRKStepper_h_
#define _AdaptiveRKStepper_h_
#include "CLHEP/GenericFunctions/RKIntegrator.hh"
//
// This is the default RKStepper routine, used within the RKIntegrator
// when no other stepper is provided.  
//
namespace Genfun {

  class AdaptiveRKStepper:public RKIntegrator::RKStepper {
    
  public:
    
    class EEStepper;

    // Constructor. A default stepper is created if none
    // is specified--it is an Embedded Runge Kutta stepper
    // using a Cash-Karp extended Butcher Tableau, which
    // is fourth-order.
    AdaptiveRKStepper(const EEStepper *eeStepper=NULL);

    // Copy constructor:
    AdaptiveRKStepper(const AdaptiveRKStepper & right);

    // Destructor:
    virtual ~AdaptiveRKStepper();

    // Takes *multiple* steps if needed up to or exceeding the
    // specified time.  This called from the RKFunction and not
    // by users.    If a time limit is specified, only one step
    // is taken--this mode is used to interpolate between cached
    // meshpoints.

    // Input:  data contains diffEqn information and cache:
    //         sData a summary of starting point information
    //         timeLimit (if nonzero) time limit for step 
    // Output  dData a summary of into at the ending point.
    // 

    virtual void step (const RKIntegrator::RKData       * data, 
		       const RKIntegrator::RKData::Data & sdata, 
		       RKIntegrator::RKData::Data       & ddata, 
		       double                             timeLimit) const ;
    // Clone
    virtual AdaptiveRKStepper *clone() const;

    // Accessors and modifiers to algorithmic parameters.  Roughly
    // speaking these are ordered according to importance: the user
    // will often wish to modify the tolerance and the starting 
    // stepsize, but rarely should need to touch any of the others.
    
    // The tolerance:
    double & tolerance();
    const double & tolerance() const;

    // The starting stepsize:
    double & startingStepsize();
    const double & startingStepsize() const;

    // The safety factor.  Step size increases are moderated by this
    // factor:
    double & safetyFactor();
    const double & safetyFactor() const;

    // The minimum amount by which a step size is decreased:
    double & rmin();
    const double & rmin() const;

    // The maximum amount by which a step size is increased:
    double & rmax();
    const double & rmax() const;
    
    
  private:
    
    // It is illegal to assign an AdaptiveRKStepper:
    AdaptiveRKStepper & operator=(const AdaptiveRKStepper & right);

    const        EEStepper   *eeStepper;
    double       T;
    double       sStepsize;
    double       S;
    double       Rmin;
    double       Rmax;
    mutable      double       stepsize;
  };


  // 
  // An abstract base class for steppers that return an error
  // estimate at each step:
  //
  class AdaptiveRKStepper::EEStepper {
  public:
    
    virtual ~EEStepper();
    virtual void step   (const RKIntegrator::RKData       * data, 
			 const RKIntegrator::RKData::Data & sdata, 
			 RKIntegrator::RKData::Data       & ddata, 
			 std::vector<double> & errors) const = 0;
    virtual EEStepper *clone() const=0;
    virtual unsigned int order() const=0;
  };
}

#endif