|
From: Ulf L. <ul...@wa...> - 2020-07-30 22:33:33
|
Hello everyone,
I assembled a new release for the C++ version that may deserve some
comments.
After a discussion with Burkhard, we identified Matlab as a problem;
many people do not have access to it, e.g., for classroom teaching. As
a consequence, we will slowly investigate porting to GNU Octave (or
rather refactoring the Matlab version to also run under Octave). I will
also focus the C++ development to provide most functionality of the
Matlab version. With the Python interface, and adding a Windows build,
this should be another alternative.
The first release in this direction ended up with a strong focus on
refactoring.
* Improved the build
Dropped some dependencies, automatically downloaded others, improved
CMake code. With some more tweaks, this should make a soon-ish Windows
build way easier, though I am not quite there yet.
* Removed Manipulator class
This class held functions whose implementations differ between
wavefunctions and densities (such calculating the trace). It was a
poor class, so it was now split into a collection of functions. Added
some functionality like applying a projection or calculating the
standard deviation of an operator.
* Gutted (1D) grid classes.
Grid classes now only contain the DVR grid points, values associated
with the FBR (e.g., momenta for PlaneWaveGrid) weights, and create a
default DVR <-> FBR transformation. These transformations are
encapsulated in new Transformation classes. The main gain here is
that a whole class of operators (diagonal in the FBR) can be
identified, which should come in handy when I try to exponentiate
them.
* Finally, there are some smaller additions, fixes etc.
- new operators Interval1D and TaylorSeries1D
- rectangular electric field envelopes
- new initial states PlaneWave and SphericalHarmonic
- some fixes in the logging output (state was not normalized
always before calculating expectation values)
Ulf
|