C++QEDCore  2.100.2 (v2 Milestone 10 Development branch)
a framework for simulating open quantum dynamics – core
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
Todo List
File BlitzArrayTraits.h
Much of this file is superfluous as many components can be formulated generally for all blitz::Array types
Class blitzplusplus::basi::Iterator< RANK, V, IS_CONST >

Implement a default version of Iterator for the case when neither slicing nor transposition is necessary, that is when V is equivalent to a range<0,RANK-1>. This will require further compile-time implementation selection.

Refine the iterator category according to the New-Style Iterator concepts. The point is that a multi-array is not a container of slices, so Iterator is definitely not a standard iterator. It seems rather like a proxy iterator.

File Conversions.h
Update & see why it is not much used in the framework
Member cpputils::sharedPointerize (boost::shared_ptr< T > t)
How to shared-pointerize an rvalue reference?
Member cpputils::subscript (const CArray< n > &a, size_t i)
fix this
Page Description of the Master-equation evolution
Implement this possibility (cf. also this tracker)
Class evolved::EvolvedIO< A >
Think about using a shared pointer instead of plain reference for referencing the array
File Exception.h
Rationalize & uniformize the exceptions throughout
Class quantumdata::DensityOperator< RANK >
provide a move constructor
Class quantumdata::StateVector< RANK >
provide a move constructor
Class quantumdata::transformation::Traits< void(*)(const CArray< RANK > &, CArray< RANK > &) >
For quantumdata::transformation::Traits default implementation should pertain to a function(object). Probably not very easy to implement, though…
Member quantumdata::wignerFunction (const DensityOperatorFunctor &rho, double x, double y, size_t truncatedDimension=0)
Should refer rho only via some traits class to make the code really generic.
Member quantumoperator::Tridiagonal< RANK >::average (const quantumdata::LazyDensityOperator< RANK > &, const typename quantumdata::LazyDensityOperator< RANK >::Idx &, IntRANK=_1_)
Implement.
Member quantumoperator::Tridiagonal< RANK >::furnishWithFreqs (const Diagonal &mainDiagonal, IntRANK=_1_)
Extend to arbitrary arity
Member quantumoperator::Tridiagonal< RANK >::hermitianConjugate () const
Implement an in-place version.
Member quantumtrajectory::ensemble::displayLog (std::ostream &, const LoggerList &, size_t nBins, size_t nJumpsPerBin)
The different kinds of jumps should be collected into different histograms
Class quantumtrajectory::EnsembleMCWF< RANK, V >
An additional constructor could be added to initialize the ensemble by a full density operator, which could be appropriately sampled.
Class quantumtrajectory::MCWF_Trajectory< RANK >
factor out template-parameter independent code
Class quantumtrajectory::TimeAveragingMCWF_Trajectory< RANK >

Stepsize-weighting could eventually be enabled as an option by a switch

If need be, the class could be modified to accept also a ProjectingMCWF_Trajectory as a base

Page Rationales

Consider switching to Boost.MultiArray. This would also provide const views which are not present in Blitz++.

Alternative implementations are possible, consider in particular Boost.Math.

Consider switching to Eigen.

Revisit this issue (might not exist anymore in C++11)

Implement this

Merge Boost.Bind and Boost.Lambda into Boost.Phoenix

Switch to range adaptors in existing codebase

clarify their use throughout

Member run
Consider taking Trajectory by rvalue reference
Member structure::AveragedCommon::display (const Averages &averages, std::ostream &os, int precision) const
The precision argument is obsolete after rev. #04265ae since precision might be propagated just via FormDouble::overallPrecision throughout the whole framework.
Class structure::Hamiltonian< RANK >
Hamiltonian should be able not only to add its contribution to a state vector, but simply return its contribution. In Hamiltonian::addContribution, somehow signal to the function whether it has to add or replace, because replacement could be also useful in some contexts.
Member structure::Hamiltonian< RANK >::addContribution (double t, const StateVectorLow &psi, StateVectorLow &dpsidt, double t0) const
3rd argument should be passed by rvalue reference — move constructor for blitz::Array needed for this?
Member structure::QuantumSystem< RANK >::Ptr
define Ptr types outside classes as template aliases eg QuantumSystem::Ptr => QuantumSystemPtr
Class trajectory::Averageable< T >
implement general time averaging along the lines discussed in this tracker
Class trajectory::Ensemble< T, T_ELEM >
Stepsize-weighting could eventually be enabled as an option by a switch
Class trajectory::Simulated< A >
Provide optional key printing
Class trajectory::Trajectory
Consider the possibility of cloning Trajectories
Member update
Somehow echo the whole command line into the output file – difficulty: the parameter-bundle has no knowledge about the output file