CLHEP VERSION Reference Documentation
   
CLHEP Home Page     CLHEP Documentation     CLHEP Bug Reports

RungeKuttaClassicalSolver.cc
Go to the documentation of this file.
4 namespace Classical {
5  //
6  // This is the private innards of RungeKuttaSolver
7  //
9  public:
10 
11  Clockwork(Genfun::GENFUNCTION gH, const PhaseSpace & mphaseSpace):H(gH),phaseSpace(mphaseSpace), integrator(NULL){
12  }
16  std::vector<Genfun::Parameter*> startingQ;
17  std::vector<Genfun::Parameter*> startingP;
19  };
20 
21  RungeKuttaSolver::RungeKuttaSolver(Genfun::GENFUNCTION gH, const PhaseSpace & mphaseSpace, const Genfun::RKIntegrator::RKStepper *stepper):c(new Clockwork(gH,mphaseSpace)){
22  c->integrator=new Genfun::RKIntegrator(stepper);
23  //
24  // Dimension (of coords, or phase space)
25  //
26  const unsigned int DIM=c->phaseSpace.dim();
27  //
28  // Equations of motion via hamilton's equations:
29  //
32 
33  for (unsigned int i=0;i<DIM;i++) {
34  Genfun::GENFUNCTION DXDT = c->H.partial(P[i].index());
35  c->startingQ.push_back(c->integrator->addDiffEquation(&DXDT,"X",c->phaseSpace.startValue(X[i])));
36  }
37  for (unsigned int i=0;i<DIM;i++) {
38  Genfun::GENFUNCTION DPDT = -c->H.partial(X[i].index());
39  c->startingP.push_back(c->integrator->addDiffEquation(&DPDT,"P",c->phaseSpace.startValue(P[i])));
40  }
41  c->energy=NULL;
42 
43  }
45  delete c->integrator;
46  delete c->energy;
47  delete c;
48  }
49 
51  return *c->integrator->getFunction(v.index());
52  }
54  return c->H;
55  }
57  return c->phaseSpace;
58  }
60  if (!c->energy) c->energy=new Genfun::EnergyFunction(*this);
61  return *c->energy;
62  }
63 
65  double defStartingValue,
66  double startingValueMin,
67  double startingValueMax) const {
68  return c->integrator->createControlParameter(variableName, defStartingValue, startingValueMin, startingValueMax) ;
69  }
70 
72  return c->startingQ[index];
73  }
75  return c->startingP[index];
76  }
77 
78 }
Classical::RungeKuttaSolver::~RungeKuttaSolver
~RungeKuttaSolver()
Definition: RungeKuttaClassicalSolver.cc:44
X
Definition: testSharedPtrBasic.cc:28
AdaptiveRKStepper.hh
Classical::RungeKuttaSolver::Clockwork::startingQ
std::vector< Genfun::Parameter * > startingQ
Definition: RungeKuttaClassicalSolver.cc:16
Classical::RungeKuttaSolver::Clockwork
Definition: RungeKuttaClassicalSolver.cc:8
Classical::RungeKuttaSolver::Clockwork::integrator
Genfun::RKIntegrator * integrator
Definition: RungeKuttaClassicalSolver.cc:15
RKIntegrator.hh
Classical::RungeKuttaSolver::createControlParameter
virtual Genfun::Parameter * createControlParameter(const std::string &variableName="anon", double defStartingValue=0.0, double startingValueMin=0.0, double startingValueMax=0.0) const
Definition: RungeKuttaClassicalSolver.cc:64
Classical::PhaseSpace::momenta
const Component & momenta() const
Definition: PhaseSpace.cc:70
Genfun::Variable
Definition: CLHEP/GenericFunctions/Variable.hh:19
Classical::PhaseSpace::Component
Definition: CLHEP/GenericFunctions/PhaseSpace.hh:48
Classical::RungeKuttaSolver::phaseSpace
virtual const PhaseSpace & phaseSpace() const
Definition: RungeKuttaClassicalSolver.cc:56
Classical::RungeKuttaSolver::energy
virtual Genfun::GENFUNCTION energy() const
Definition: RungeKuttaClassicalSolver.cc:59
Genfun::GENFUNCTION
const typedef AbsFunction & GENFUNCTION
Definition: CLHEP/GenericFunctions/AbsFunction.hh:125
Classical::RungeKuttaSolver::Clockwork::H
Genfun::GENFUNCTION H
Definition: RungeKuttaClassicalSolver.cc:13
Classical::RungeKuttaSolver::Clockwork::phaseSpace
const Classical::PhaseSpace & phaseSpace
Definition: RungeKuttaClassicalSolver.cc:14
Genfun::RKIntegrator::addDiffEquation
Parameter * addDiffEquation(const AbsFunction *diffEquation, const std::string &variableName="anon", double defStartingValue=0.0, double startingValueMin=0.0, double startingValueMax=0.0)
Definition: RKIntegrator.cc:105
Genfun::RKIntegrator::RKStepper
Definition: CLHEP/GenericFunctions/RKIntegrator.hh:172
Classical::RungeKuttaSolver::takeQ0
virtual Genfun::Parameter * takeQ0(unsigned int index)
Definition: RungeKuttaClassicalSolver.cc:71
Classical::RungeKuttaSolver::takeP0
virtual Genfun::Parameter * takeP0(unsigned int index)
Definition: RungeKuttaClassicalSolver.cc:74
RungeKuttaClassicalSolver.hh
v
they are gone ZOOM Features Discontinued The following features of the ZOOM package were felt to be extreme overkill These have been after checking that no existing user code was utilizing as in SpaceVector v
Definition: keyMergeIssues.doc:324
Classical
Definition: CLHEP/GenericFunctions/ClassicalSolver.hh:23
Genfun::EnergyFunction
Definition: CLHEP/GenericFunctions/ClassicalSolver.hh:76
Genfun::RKIntegrator::getFunction
const RKFunction * getFunction(unsigned int i) const
Definition: RKIntegrator.cc:136
Genfun::RKIntegrator::createControlParameter
Parameter * createControlParameter(const std::string &variableName="anon", double defStartingValue=0.0, double startingValueMin=0.0, double startingValueMax=0.0)
Definition: RKIntegrator.cc:122
Classical::RungeKuttaSolver::Clockwork::startingP
std::vector< Genfun::Parameter * > startingP
Definition: RungeKuttaClassicalSolver.cc:17
i
long i
Definition: JamesRandomSeeding.txt:27
Classical::PhaseSpace::dim
unsigned int dim() const
Definition: PhaseSpace.cc:98
Classical::PhaseSpace::coordinates
const Component & coordinates() const
Definition: PhaseSpace.cc:66
Classical::PhaseSpace
Definition: CLHEP/GenericFunctions/PhaseSpace.hh:17
Classical::RungeKuttaSolver::hamiltonian
virtual Genfun::GENFUNCTION hamiltonian() const
Definition: RungeKuttaClassicalSolver.cc:53
Genfun::Parameter
Definition: CLHEP/GenericFunctions/Parameter.hh:35
Classical::RungeKuttaSolver::Clockwork::energy
Genfun::EnergyFunction * energy
Definition: RungeKuttaClassicalSolver.cc:18
Classical::RungeKuttaSolver::equationOf
virtual Genfun::GENFUNCTION equationOf(const Genfun::Variable &v) const
Definition: RungeKuttaClassicalSolver.cc:50
Classical::PhaseSpace::startValue
double startValue(const Genfun::Variable &component) const
Definition: PhaseSpace.cc:87
Genfun::RKIntegrator
Definition: CLHEP/GenericFunctions/RKIntegrator.hh:43
Classical::RungeKuttaSolver::Clockwork::Clockwork
Clockwork(Genfun::GENFUNCTION gH, const PhaseSpace &mphaseSpace)
Definition: RungeKuttaClassicalSolver.cc:11
Classical::RungeKuttaSolver::RungeKuttaSolver
RungeKuttaSolver(Genfun::GENFUNCTION H, const PhaseSpace &phaseSpace, const Genfun::RKIntegrator::RKStepper *stepper=NULL)
Definition: RungeKuttaClassicalSolver.cc:21