CLHEP VERSION Reference Documentation
CLHEP Home Page
CLHEP Documentation
CLHEP Bug Reports
GenericFunctions
CLHEP
GenericFunctions
CLHEP/GenericFunctions/ClassicalSolver.hh
Go to the documentation of this file.
1
// This is a class the creates an N-Dimensional Phase Space //
2
3
// It is for use in computing the time development of classical //
4
// Hamiltonian Systems. //
5
6
// Joe Boudreau October 2011 //
7
8
//--------------------------------------------------------------//
9
10
#ifndef _ClassicalSolver_h__
11
#define _ClassicalSolver_h__
12
13
#include "
CLHEP/GenericFunctions/PhaseSpace.hh
"
14
#include "
CLHEP/GenericFunctions/Variable.hh
"
15
#include "
CLHEP/GenericFunctions/Parameter.hh
"
16
17
18
namespace
Genfun
{
19
class
EnergyFunction;
20
}
21
22
23
namespace
Classical
{
24
25
26
class
Solver
{
27
28
public
:
29
//
30
// Constructor--takes a hamiltonian and a point in p-space:
31
//
32
Solver
(){};
33
//
34
// Destructor:
35
//
36
virtual
~Solver
(){};
37
//
38
// Returns the time evolution for a variable (q_i or p_i)
39
//
40
virtual
Genfun::GENFUNCTION
equationOf(
const
Genfun::Variable
& v)
const
=0;
41
//
42
// Returns the phase space
43
//
44
virtual
const
PhaseSpace
& phaseSpace()
const
=0;
45
//
46
// Returns the Hamiltonian (function of the 2N phase space variables).
47
//
48
virtual
Genfun::GENFUNCTION
hamiltonian()
const
=0;
49
//
50
// Returns the energy (function of time).
51
//
52
virtual
Genfun::GENFUNCTION
energy()
const
=0;
53
//
54
// This is in the rare case that the user needs to edit starting values.
55
// or parameterize the Hamiltonian. Most users: can ignore.
56
virtual
Genfun::Parameter
*takeQ0(
unsigned
int
index)=0;
57
virtual
Genfun::Parameter
*takeP0(
unsigned
int
index)=0;
58
virtual
Genfun::Parameter
*createControlParameter(
const
std::string & variableName=
"anon"
,
59
double
defStartingValue=0.0,
60
double
startingValueMin=0.0,
61
double
startingValueMax=0.0)
const
= 0;
62
63
64
65
private
:
66
67
// Illegal Operations:
68
Solver
(
const
Solver
&);
69
Solver
& operator=(
const
Solver
&);
70
71
};
72
}
73
74
namespace
Genfun
{
75
76
class
EnergyFunction
:
public
Genfun::AbsFunction
{
77
78
FUNCTION_OBJECT_DEF
(
EnergyFunction
)
79
80
public
:
81
82
// Constructor
83
EnergyFunction
(
const
Classical::Solver
&);
84
85
// Destructor
86
virtual
~
EnergyFunction
();
87
88
// Copy constructor
89
EnergyFunction
(
const
EnergyFunction
&right);
90
91
// Retreive function value
92
virtual
double
operator ()(
double
argument)
const
;
93
virtual
double
operator ()(
const
Argument
&
a
)
const
{
return
operator() (a[0]);}
94
95
private
:
96
97
// It is illegal to assign a EnergyFunction
98
const
EnergyFunction
& operator=(
const
EnergyFunction
&right);
99
100
const
Classical::Solver
& solver;
101
102
};
103
104
}
105
106
107
108
#endif
Variable.hh
Parameter.hh
Classical::Solver::~Solver
virtual ~Solver()
Definition:
CLHEP/GenericFunctions/ClassicalSolver.hh:36
Genfun::AbsFunction
Definition:
CLHEP/GenericFunctions/AbsFunction.hh:48
PhaseSpace.hh
FUNCTION_OBJECT_DEF
#define FUNCTION_OBJECT_DEF(classname)
Definition:
CLHEP/GenericFunctions/AbsFunction.hh:144
Genfun::Variable
Definition:
CLHEP/GenericFunctions/Variable.hh:19
Genfun::EnergyFunction
Definition:
CLHEP/GenericFunctions/ClassicalSolver.hh:76
a
Definition:
testCategories.cc:125
Classical::Solver::Solver
Solver()
Definition:
CLHEP/GenericFunctions/ClassicalSolver.hh:32
Genfun::Argument
Definition:
CLHEP/GenericFunctions/Argument.hh:17
Classical::PhaseSpace
Definition:
CLHEP/GenericFunctions/PhaseSpace.hh:17
Genfun::Parameter
Definition:
CLHEP/GenericFunctions/Parameter.hh:35
Genfun
Definition:
CLHEP/GenericFunctions/Abs.hh:14
Classical
Definition:
CLHEP/GenericFunctions/ClassicalSolver.hh:23
Classical::Solver
Definition:
CLHEP/GenericFunctions/ClassicalSolver.hh:26
Generated by
1.8.13