4 #ifndef CPPQEDELEMENTS_FREES_PARTICLE__H_INCLUDED
5 #define CPPQEDELEMENTS_FREES_PARTICLE__H_INCLUDED
7 #include "Particle_Fwd.h"
9 #include "ParsParticle.h"
11 #include "QM_PictureFwd.h"
12 #include "StateVectorFwd.h"
14 #include "ModeFunction.h"
20 #include <boost/shared_ptr.hpp>
27 typedef boost::shared_ptr<const ParticleBase>
Ptr;
29 typedef boost::shared_ptr<const PumpedParticleBase> PtrPumped;
32 const Tridiagonal expINKX(particle::Ptr, ptrdiff_t);
34 inline const Tridiagonal sinNKX(particle::Ptr
particle, ptrdiff_t nK) {
return (expINKX(particle,nK)-expINKX(particle,-nK))/(2.*
DCOMP_I);}
35 inline const Tridiagonal cosNKX(particle::Ptr particle, ptrdiff_t nK) {
return (expINKX(particle,nK)+expINKX(particle,-nK))/ 2. ;}
37 const Tridiagonal mfNKX (particle::Ptr,
const ModeFunction&);
38 const Tridiagonal mfNKX_AbsSqr(particle::Ptr,
const ModeFunction&);
41 const StateVector wavePacket(
const InitialCondition&,
const Spatial&,
bool kFlag=
true);
42 const StateVector wavePacket(
const Pars &,
bool kFlag=
true);
43 const StateVector wavePacket(
const ParsPumped&,
bool kFlag=
true);
45 const StateVector hoState(
int n,
const InitialCondition&,
const Spatial&,
bool kFlag=
true);
46 const StateVector hoState(
const Pars &,
bool Kflag=
true);
47 const StateVector hoState(
const ParsPumped&,
bool Kflag=
true);
51 Ptr
make(
const Pars&, QM_Picture);
53 PtrPumped makePumped(
const ParsPumped&, QM_Picture);
58 typedef boost::tuple<const Spatial&, double> Storage;
68 using details::Storage::get;
73 bool applicableInMaster_v()
const {
return true;}
75 const Diagonal factorExponents_;
80 namespace details {
struct EmptyBase {}; }
83 template<
bool IS_TIME_DEPENDENT>
86 public mpl::if_c<IS_TIME_DEPENDENT,Exact,details::EmptyBase>::type
92 Hamiltonian(
const Spatial&,
double omrec, mpl::bool_<IS_TIME_DEPENDENT> =mpl::false_());
112 explicit Spatial(
size_t,
double deltaK=1);
114 size_t getFinesse ()
const {
return fin_;}
115 size_t getDimension()
const {
return x_.size();}
118 double x(
size_t i)
const {
return x_(i);}
119 double k(
size_t i)
const {
return k_(i);}
121 const Array& getX()
const {
return x_;}
122 const Array& getK()
const {
return k_;}
124 void header(std::ostream&)
const;
129 const double xMax_, deltaX_, kMax_, deltaK_;
144 const Spatial& getSpace()
const {
return space_;}
148 void process_v( Averages&)
const;
180 double getV_Class()
const {
return vClass_;}
182 const ModeFunction& getMF()
const {
return mf_;}
189 const double vClass_;
190 const ModeFunction mf_ ;
199 explicit Particle(
const particle::Pars&);
229 #endif // CPPQEDELEMENTS_FREES_PARTICLE__H_INCLUDED
boost::shared_ptr< const Base > Ptr
const dcomp DCOMP_I(0, 1)
std::list< CF > ComplexFreqs
blitz::Array< double, RANK > DArray
const StateVector init(const Pars &)
Dispatcher for initial condition.
std::list< RF > RealFreqs
const Ptr make(const IA &ia)