As underpinning data structure, the blitz::Array could be replaced by boost::multi_array.
This would have the advantage of eliminating dependence on the not too well maintained Blitz++ library.
I almost forgot the main motivation for this replacement, which is that the whole reference-counting mechanism of Blitz++ is mostly an overkill for us, since in our simulations there is always a structure (StateVector or DensityOperator) which is supposed to own the data for the whole lifetime of the program.
What we would need is const and non-const views of this data, the former of which is not very well supported by Blitz++.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
A façade to boost::multi_array could be used, along the lines described here:
http://thenewcpp.wordpress.com/2011/10/27/a-boost_multi_array-facade/
I almost forgot the main motivation for this replacement, which is that the whole reference-counting mechanism of Blitz++ is mostly an overkill for us, since in our simulations there is always a structure (StateVector or DensityOperator) which is supposed to own the data for the whole lifetime of the program.
What we would need is const and non-const views of this data, the former of which is not very well supported by Blitz++.
It looks like Eigen is also developing a multi-array template that they call tensor:
http://eigen.tuxfamily.org/dox-devel/unsupported/groupCXX11TensorModule.html
Looks promising…