Previous topic

Code organization

Change Log

The following is a list of only the more substantial changes (e.g. such as break certain applications). For a full log of development, browse the Bazaar repository.

2012/08/09 The architecture of BinarySystem has changed, breaking scripts. Migration should be straightforward.

2012/08/09 Makefile-s obsolated, CMake build system put in place.. From now on, this is considered the canonical build way for users.

2012/06/28 Main branch #219 breaks compatibility with the CVS version of Blitz++. From now on, the Mercurial version is necessary. A BlitzCVS_compatibility branch will still remain provided corresponding to main branch #218:

bzr://cppqed.bzr.sourceforge.net/bzrroot/cppqed/BlitzCVS_compatibility

2012/06/12 State-vector and parameter output now also has the same precision as --precision, the latter also at least 6 digits.

2012/05/30 Time and timestep output has now the same precision as the overall precision governed by --precision, but at least 6 digits.

2012/05/03 Main branch revision #213 recants the fuzziness of time in trajectories and fixes bug in a different way. Cf. also this mailing-list thread.

2012/02/07 Main branch revision #204 fixes bug by introducing a little fuzziness to the time comparison of trajectories. Cf. also this tracker.

2012/01/27 Migrated to the Boost.Range version of range algorithms. This means that as of today, the minimal Boost version is 1.43.

2011/12/18 A more chiselled overshoot managment introduced in MCWF_Trajectory

This entailed the introduction of the new command-line parameter overshootTolerance. This has such a big default value, that backward compatibility of scripts is preserved. Cf. the discussion at An adaptive MCWF method and MCWF trajectory.

2011/08/16 structure::Averaged now throws an exception if it encounters nan or inf.

This is for avoiding numerical traps. For the moment, this works only for single trajectories.

2011/08/15 New Makefile in the main directory.

This will compile the whole framework (together with utils) into a single shared library, and link scripts against this. The new Makefile features the option with-flens. All other Makefiles have been removed.

2011/08/09 Build system changed to conform with dynamic linking change.

Executables have to link against more shared libraries now.

2011/08/08 Change in the timestep management in quantumtrajectory::MCWF_Trajectory

The API has not been changed, and according to the tests, the changes are visible only in such cases where the system has no Hamiltonian evolution, only Exact (and Liouvillean, of course). The convergence became much better in these cases, as previously they were not handled completely correctly by the timestep manager.

2011/07/06 Deprecation of quantumoperator::Frequencies.

The functionality of this class has been incorporated into quantumoperator::Tridiagonal, following the usage patterns we have observed so far. Usage became much more convenient this way.

2011/06/08 Successful compilation with the svn version of the clang++ compiler.

This required correction of some small mistakes which were accepted by gcc for some reason.

Also, for some reason, clang++ could note compile quantumoperator/impl/TridiagonalHamiltonian.tcc, so this had to be changed. (It had been crazy anyway.) This broke only one client, elements/interactions/ParticleCavity.cc, which therefore needed to be slightly modified as well. This looks a bit awful now, but all these will anyway become deprecated with the new quantumoperator architecture.

2011/05/10 Switching to a more refined definition of time-dependence schemes in structure::Hamiltonian

As a consequence, structure::TimeIndependentHamiltonian has been deprecated.

2011/02/15 Switching to Bazaar revision control

History has not been migrated to Bazaar, the old history remaining accessible from CVS. Cf. the tutorial for further details.

2010/11/29 Change in the quantumtrajectory bundle

Classes in the quantumtrajectory bundle (MCWF_Trajectory, Master, etc.) do not have the IS_NO template parameter any more. This is because the selection between orthogonal and non-orthogonal state vectors / density operators will now be done relying on run-time polymorphy instead of compile-time polymorphy as so far.

2010/08/26 Change in ParameterTable

A change occured in how parameters::ParameterTable handles boolean parameters. For each parameter, it now automatically adds another parameter with a no_ prefix which corresponds to the negation of the boolean. It is implemented in terms of a BooleanNegatedProxy which can be found in the header file of the same name. This makes that now there it makes no sense to declare negated boolean parameters any more. Therefore, e.g. the so far ubiquitous parameter nonoise (with default value false) has been changed to noise (with default value true) while the parameter no_noise is automatically added by ParameterTable (with default value false, of course).

2010/08/12 Change in the API of Mode

A change occured in the API of Mode as it got migrated to a template-based solution where the Averaging class is a plugin supplied as a template parameter. Furthermore, LossyModes acquired another template parameter signifying whether their temperature is finite. Both template parameters have default values, but still, at places where Modes are constructed explicitely (e.g. in scripts) the following change needs to be effected:

PumpedLossyMode mode(...); // to be changed to
PumpedLossyMode<> mode(...);

where <> signifies that the class is a template, although with default template arguments. The use of the mode::maker function is unchanged:

mode::SmartPtr mode(maker(...)); // is fine

Similar changes will occur in Particle, Spin, Qbit, as they too get migrated to this solution.