314 lines (245 with data), 12.6 kB
Version 0.2.4:
Breaking changes:
- renamed several key classes:
- LinearOperator => Expression
- SchroedingerOperator => SchroedingerEquation
- OperatorMatrix => EquationSystem
- OperatorPrimitive => Operator
- DvrPrimitive* => DvrOperator*
- PrimitiveSum => OperatorSum
- PrimitiveProduct => OperatorProduct
- and various functions from *Primitive* to *Operator*
- Operator::getSpectralMin/Max() has been replaced by
a single function OperatorPrimitive::getSpectralBounds()
- Expression::getSpectrum() has been renamed to
Expression::getSpectralBounds()
New Features:
- Python bindings can be installed as regular Python module (#137)
- renamed several key classes to make distinction between
operators and expressions/equations clearer (#124)
- added a Projection operator (#70)
- new demo that uses a projection operator to monitor
populations and a half-finished Lindblad relaxation demo (#70)
- new demo with explanation that shows how to deal with
systems at fixed temperature (#138)
Minor issues:
- Chebychev propagators add a small safety margin to the (#148)
auto-determined spectral ranges.
- OperatorPrimitive now handles all representation issues, (#145)
derived operators do not care
- using the Plot1DObserver is far simpler now. (#142)
also, works with coupled states
- 2 new demos: MolElectronic/OH/1 and 2 (#142)
demonstrate electronic excitation using a close coupling
grid (1) and a set of coupled states (2)
Bug Fixes:
- fixed several bugs with LoggingObserver (#150)
- energies for individual electronic states were always positive
- norms for multiple states were not applied correctly
-------------------------------------------------------------------------------
Version 0.2.3:
Breaking changes:
- writeStructuredData() has a different signature
- interpolation functions have a different signature
- renamings of some OperatorPrimitives
Potential1D => DvrPrimitive1D
PotentialND => DvrPrimitiveND
Bug fixes:
- Imaginary time propagation did not work as expected, because
the wave function was never renormalized
- added propagation filters and a "normalization" filter
that renormalizes the wave function
- added a demo MorseOscillator/Bound_1D/2 for this use-case
New Features:
- more work on Python interface (#130, #131)
- conversion between numpy and tensor library
so that data can be easily manipulated inside python
- prototypes for further use-cases (units etc.)
- implemented harmonic oscillator demo
- implemented complex pump-probe demo (#135)
FemtoChem/Interferometry
- added unit conversion for interpolation
- added wave function generator that wraps around a given tensor
(e.g., an already calculated ground state)
- added a simplifyOperator() function that converts an operator (#95)
into a more streamlined and efficient version
for a 20% gain if the potential is a complex multi-state potential
-------------------------------------------------------------------------------
Version 0.2.2:
Breaking changes:
- renamed some functions in the OperatorMatrix class
- added suffixes to easily use other units (eV, Angstroem etc.)
and a new highlighted demo for that (#123)
- added an operator and functors for oscillating laser fields
and updated pendular states demo to demonstrate these (#126)
- added a prototype for a python interface (#117)
- only for free particle demo for now; needs a lot more work
- see new option Opt_BuildPython and demo
FreeParticle/Gaussian_1D/1/demo.py
- sped up compilation considerably
- OperatorMatrix no longer uses boost data types (#103)
- ODE solvers hide their reference to boost::odeint (#104)
- used cotire (COmpile TIme REducer) (#128)
see advanced compile option Opt_UseCotire (default: off)
- LoggingOutput prints too small numbers as zero
to fix a test failure in the virtual machine image (#127)
-------------------------------------------------------------------------------
Version 0.2.1:
Breaking changes:
- RedfieldBuilder is now called RedfieldFactory and works differently
- added a script "wp-build.sh" to simplify the compilation of own programs
and a tutorial for that (#73)
- added a HarmonicOscillatorFactory to simplify setup of harmonic oscillator operators,
in particular Hamiltonians and raising and lowering operators (#106)
- added Mecke dipole function
- added Morse oscillator demo (#58)
- cleanup of the RedfieldFactory; still not very usable because it requires
correlation functions where one normally has spectral densities instead (#97)
- used demos for automated testing (#98)
- added helper function to encapsulate pi constant (#102)
- used source code checkers to fix some minor issues (#79)
-------------------------------------------------------------------------------
Version 0.2:
No breaking changes
- added plotting of the wave function (#67)
- added a factory to set up plotting for one-dimensional wave functions
- added a documented demo for the TDSE / TISE case
- added absorbing boundary conditions (#80)
- added a factory to easily create negative imaginary potentials
- added a documented demo to demonstrate this feature
- changed license to a more permissive ISC / CC0 mixture (#94)
- upgraded virtual machine image for the build (#109)
- Tests should be more reproducible now (fixed random seed) (#47)
That should mostly fix the issue of one test always failing
- some minor code formatting cleanup (#82)
-------------------------------------------------------------------------------
Version 0.1.4:
Breaking changes:
- moved/renamed several classes and functions
Gaussian -> GaussianState
Projection -> DvrEigenstate
LoggingOutput -> LoggingObserver
readTokenizedInput() -> readStructuredData()
readInterpolationData() -> Interpolator::createFromStream()
- functors that construct an initial state now take a grid as input, not the grid points
- #83, #89: added support for rotational problems
- added spherical harmonics expansion [SphericalHarmonicsGrid]
- added the L^2 operator for this grid [RotationalKineticEnergy]
- added spherical harmonic initial wave function [FbrEigenstate]
- #90: ability to easily write out calculated values
- added an observer to calculate expectation values [ExpectationValueObserver]
- added functions to write out a matrix to a file [writeStructuredData()]
- two documented demos that demonstrate the new features [MolRotation/*]
- #81: some code changes to speed up the build
- minor tweaks to documentation and build
-------------------------------------------------------------------------------
Version 0.1.3:
- tutorial improvements
- new tutorials for the time-independent Schroedinger equation, general advice
- improved/extended some other tutorials
- handling of multiple coupled channels
- introduced CoupledChannels grid with helper operators and functors
- logging resolves the channels
- added a demo and a tutorial
- added class to parse command-line options and configuration files
- added class
- added demo with detailed instructions
- misc smaller changes
- DoubleWell demo uses Razavy potential
-------------------------------------------------------------------------------
Version 0.1.2:
- improved Chebychev propagators:
- you no longer have to specify the spectrum, there are safe defaults
- improved documentation:
- moved tutorial from wiki and extended it considerably
- added package documentations
- use CMake as build system
- added solver for the time-independent Schroedinger equation
-------------------------------------------------------------------------------
Version 0.1.1b:
- updated googletest requirements and build defaults to version 1.8
- fixed some compiler warnings
- fixed possible compiler failures in acceptance tests
-------------------------------------------------------------------------------
Version 0.1.1:
- new acceptance test:
- usage of electric fields of custom shape
- relaxation of a density operator to thermal equilibrium and subsequent propagation
- new demos:
- free particle
- 2D harmonic oscillator
- basic tutorial (Wiki on sourceforge page)
- Major propagator refactoring:
- split into primitives to propagate one time step and Propagator, which deals with logging etc.
- Joined propagation of single and multiple states and simplified the latter
- separate primitives for real and imaginary time; simplified use of the latter
- Chebychev propagator in real and imaginary time
- added functors (function-like objects)
- interpolation as functor
- product wave function built from functors yielding 1D wave functions
- 1D potential operators build the potential with functors
- merged DensityManipulator and WavefunctionManipulator into a single class
- implemented an own exception hierarchy; not complete
- upgraded build process
- require more recent version of boost; this drops one dependency
- by default, all tests are built into a single executable
- minor fixes and improvements here and there
-------------------------------------------------------------------------------
Version 0.1:
- new working acceptance test:
- Spin-Boson problem with Redfield dissipation
- started adding demos from old Matlab code
- squeezed and shifted state in a harmonic oscillator
- cleaned up / improved generation of initial state:
- StateBuilder assembles product states, pure density operators
from wavefunctions etc.
- elementary generators build one-dimensional wavefunctions
- harmonic oscillator eigenstates
- Morse oscillator eigenstates
- interpolation from file; setting the 1D wavefunction
- New operators:
- RedfieldLiouvillian
- generalized operators that takes an arbitrary matrix / tensor
- time-dependent function
- added RedfieldBuilder to calculate the effective operators appearing in the
RedfieldLiouvillian
- New MultiPropagators that can simultaneously propagate several states
- added observers that are automatically called every (settable) propagation time steps
- added observer that logs norm, energy and some other expectation values
- some work to make Wavefunction/DensityManipulators more useful
- tests log some of the data; may be put to use for reproducing failures
-------------------------------------------------------------------------------
Version 0.0.3:
- new working acceptance tests:
- Harmonic oscillator with Lindblad dissipation
- Density propagation and Wavefunction propagation give same result
- added a builder to set up density operators as direct product states
- completely reworked how operators work; there is now a primitive that knows
what to do with various objects and a high-level operator that determines
the actual action (commute with a density operator or apply to a wavefunction)
- added a bunch of new operators:
- CommutatorOperator, LindbladLiouvillian as high-level operators
- ConstantOperator, TensorOperator as primitives
- added class to simplify transformation of wavefunctions/density operators
between the various representation (DVR, FBR, DVR with weights)
- added Makefile target and structure for doxygen documentation
- slightly simplified the Makefile configuration; fixed a few linker issues
- shifted a few files, beautification and simplification of the code/tests etc.
-------------------------------------------------------------------------------
Version 0.0.2:
- implemented multi-dimensional grids
- introduced weighted DVR as new representation; this obsoletes the
direct exposure of the DVR weights
- a couple of new operators:
harmonic oscillator, momentum operator, coordinate operator
- added addition and summation of operators
- added a wave function builder that generates a Gaussian initial state
and can build a tensor product of one-dimensional wave functions
- an acceptance test of a coherent state in a 2D harmonic oscillator
-------------------------------------------------------------------------------
Version 0.0.1:
- Initial release
- an FFT-based Cartesian grid
- a kinetic energy operator for said grid
- a propagator employing standard ODE solvers
- an acceptance test that propagates a free particle