Releases: ITensor/ITensor
Fixed IQTensor access bug; added developer tools
- Fixed a bug in IQTensor const element access---thanks Shenghan Jiang!
- Added stdx utility library which adds convenient extensions to the std library.
- Added timers utility for profiling
Interface improvements; count.h library
Created setA method for MPS/IQMPS. Similar to Anc but better, more self-documenting name. Call psi.setA(j,T); to set tensor at site j to be the tensor T.
svd methods now recognize LeftIndexName, RightIndexName, LeftIndexType, RightIndexType (or just IndexType) named args for specifying properties of newly created indices. Very useful for 2D tensor network algorithms.
Added count.h mini-library to utilities. Allows writing for loops over integers as for(auto n : count(4)) for n=0,1,2,3 or for(auto n : count1(4)) for n=1,2,3,4 (notice the count1 versus count). Also writing for(auto n : index(v)) makes n an integer iterating from 0 up to < v.size().
Created an external norm(T) function for ITensors and IQTensors.
Fixed a bug where ITensor svd in "ShowEigs" mode was not reporting correct truncation error.
Extensible IndexType, Quieter Makefiles, Bugfixes
IndexType now a class instead of an enum; this makes IndexType's user extensible, see commit a92c17a
Makefiles now hide most compiler output for a nicer installation experience
Bugfixes include:
- AutoMPO now works correctly independently of order of operators passed
- Updates to CMakeLists.txt files for cmake users (thanks Andrey Antipov)
- Added MSVC version of mkdtemp for Windows users (thanks Kyungmin Lee)
- Fixed bug in hams/TriHeisenberg.h (thanks Hitesh Changlani)
Switch to C++11, Storage Redesign, Fixed Index Comparisons, AutoMPO
This major new release of ITensor is the first official release to require C++11 compiler support (approximately the following compiler versions: gcc > v4.6; icpc > v15; clang > v2.9). Requiring C++11 allows us to start making many key improvements to ITensor such as allowing arbitrary numbers of function arguments; improving memory safety through features such as unique_ptr and shared_ptr; and removing dependence on boost.
In this release many internals have been redesigned and many bugs fixed. The uniqueReal system for comparing indices is gone as it occasionally led to incorrect comparisons in codes using many indices. ITensors and IQTensor now have simpler data storage layouts.
One major new feature is the AutoMPO class. AutoMPO provides a "pencil and paper" interface for creating MPOs, both for Hamiltonians and for other sums of local operators such as orbital creation/annihilation operators.
Improved Lapack wrap. Other bugfixes
- Removed requirement of including Lapack header files except for the case of MKL (which has very specific type definitions).
- Fixed bug in idmrg sample code
- Added operator= as an alternative to operator<< for commaInit
- Added iterators to VectorRef and Vector.
New tutorial code & bugfixes
- Updated tutorial codes.
- Fixed C++11-only line of code present in new idmrg.h file.
- Fixed an MPS write-to-disk bug.
- Added some missing includes to fix compilation on certain machines.
New Spectrum Features; Fix IQIndexVal design
- Added new features to Spectrum class: more complete interface for accessing eigenvalues and quantum numbers; ability to construct from diagonal tensors.
- Fixed design flaw in class IQIndexVal: was previously subclass of IQIndex which caused unexpected behavior when constructing ITensors from IQIndexVals. Now IQIndexVal holds an IQIndex as a data member instead.
- Minor updates to tutorial code.
- Fixed compilation error when using C++98 boost Foreach caused by some debugging code.
ITensor version v1.0.0
This release adds a number of new features and makes some overdue breaking changes to the library. For detailed information, view the change log.
Some notable changes include:
- Put all code into
namespace itensor
- No more dependence on boost library when compiling with USE_CPP11=yes set in options.mk.
- Minimal boost header code included with library download when compiling with USE_CPP11=no.
- Removed ITSparse and IQTSparse classes. Now ITensor carry an internal sparse-mode flag.
- MPS class no longer stores accuracy parameters (maxm,cutoff,...) or a vector of Spectrum objects.
- MPS class no longer defines + and += operators. Use functions
sum
andplusEq
instead. - Improved methods for constructing OptSet named argument sets.
Fixed convertToIQ bug; replaced Boost unit test with Catch
Fixed a bug in convertToIQ causing it to fail. This was caused by the code not using the MPO N() method, but reading the MPO size directly from its storage.
Also switched the unit tests over from Boost Test (which requires downloading and compiling Boost) to Catch https://github.com/philsquared/Catch which is a slightly better unit testing framework that is all header code and can be distributed along with ITensor.