Skip to content

Releases: ITensor/ITensor

Fixed IQTensor access bug; added developer tools

17 Sep 23:14
Compare
Choose a tag to compare
  • 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

21 Aug 01:45
Compare
Choose a tag to compare

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

13 Aug 20:31
Compare
Choose a tag to compare

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

16 May 18:23
Compare
Choose a tag to compare

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

23 Jun 23:26
Compare
Choose a tag to compare
  • 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

02 Jun 20:20
Compare
Choose a tag to compare
  • 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

02 Jun 20:24
Compare
Choose a tag to compare
  • 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

28 May 19:13
Compare
Choose a tag to compare

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 and plusEq instead.
  • Improved methods for constructing OptSet named argument sets.

Fixed convertToIQ bug; replaced Boost unit test with Catch

23 May 17:49
Compare
Choose a tag to compare

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.