/usr/include/CLHEP/GenericFunctions/RungeKuttaClassicalSolver.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 | // This is a class the creates an N-Dimensional Phase Space //
// It is for use in computing the time development of classical //
// Hamiltonian Systems. //
// Joe Boudreau October 2011 //
//--------------------------------------------------------------//
#ifndef _RKClassicalSolver_h__
#define _RKClassicalSolver_h__
#include "CLHEP/GenericFunctions/PhaseSpace.hh"
#include "CLHEP/GenericFunctions/ClassicalSolver.hh"
#include "CLHEP/GenericFunctions/RKIntegrator.hh"
#include "CLHEP/GenericFunctions/Variable.hh"
#include "CLHEP/GenericFunctions/Parameter.hh"
#include <vector>
namespace Classical {
class RungeKuttaSolver : public Solver {
public:
//
// Constructor--takes a hamiltonian and a point in p-space:
//
RungeKuttaSolver(Genfun::GENFUNCTION H, const PhaseSpace & phaseSpace, const Genfun::RKIntegrator::RKStepper *stepper=NULL);
//
// Destructor:
//
~RungeKuttaSolver();
//
// Returns the time evolution for a variable (q_i or p_i)
//
virtual Genfun::GENFUNCTION equationOf(const Genfun::Variable & v) const;
//
// Returns the phase space
//
virtual const PhaseSpace & phaseSpace() const;
//
// Returns the Hamiltonian (function of the 2N phase space variables).
//
virtual Genfun::GENFUNCTION hamiltonian() const;
//
// Returns the energy (function of time).
//
virtual Genfun::GENFUNCTION energy() const;
//
// This is in the rare case that the user needs to edit starting values.
// or parameterize the Hamiltonian. Most users: can ignore.
virtual Genfun::Parameter *takeQ0(unsigned int index);
virtual Genfun::Parameter *takeP0(unsigned int index);
virtual Genfun::Parameter *createControlParameter(const std::string & variableName="anon",
double defStartingValue=0.0,
double startingValueMin=0.0,
double startingValueMax=0.0) const;
private:
// Illegal Operations:
RungeKuttaSolver (const RungeKuttaSolver &);
RungeKuttaSolver & operator=(const RungeKuttaSolver &);
// Clockwork
class Clockwork;
Clockwork *c;
};
}
#endif
|