ITensor Version 3.0 Released
Version 3.0.0 of ITensor has just been released!
This new major release of ITensor makes a number of significant changes, such as streamlining block-sparse and dense tensors (IQTensor and ITensor) into a single type (ITensor); a new system for tagging indices with short strings; and including names with quantum numbers to allow quantum numbers defined "locally" to be sensibly mixed together within one global calculation.
This release has been spearheaded by the new co-lead-developer of ITensor, Matt Fishman, who also holds the position of Associate Data Scientist at the Flatiron Institute Center for Computational Quantum Physics. Thanks to the support of the Simons Foundation in hiring Matt, ITensor is now improving at a significantly faster pace.
Version 3 of ITensor includes many other significant changes, such as switching to the C++17 standard, which brings in many productivity enhancing features like multiple return values. Also various interfaces and algorithms throughout ITensor have been made more consistent and many functions which were previously templates have been simplified to become plain functions.
For help converting from version 2 to version 3, see the upgrade guide.
For even more details, see the changelog.
Version 2.1 Released
(Jun 1, 2017)
Version 2.1.0 of ITensor is out! This version includes some powerful new features, as well as a raft of small improvements and bug fixes.
One notable improvement is that an AutoMPO can now include terms with operators acting on more than two sites. And the default AutoMPO backend uses a compression algorithm to ensure that the resulting MPO dimension is as small as possible without losing accuracy. Combined with the ability of AutoMPO to handle arbitrary range interactions, such as for making MPOs for quasi-2D systems, ITensor is now more useful than ever for setting up advanced DMRG and MPS calculations.
Another useful change is that the SiteSet system has been overhauled internally. This make it much easier to define custom Hilbert spaces, possibly with different types of degrees of freedom on different sites.
Some other important internal changes include switching to 64 bit Index ID numbers to avoid collisions in heavy-duty calculations, and improved internal handling of scalar tensors.
For even more details, see the changelog.
AutoMPO Official Release
(May 30, 2017)
With the upcoming release of ITensor version 2.1, the AutoMPO feature is officially out of the beta testing phase. AutoMPO is a very powerful feature that lets you construct MPOs (and IQMPOs) from human-readable input, similar to pencil-and-paper notation. AutoMPO can even be used to produce an MPO approximating the exponential of a sum of operators!
We would especially like to thank Anna Keselman for her work on AutoMPO. While a graduate student at the Weizmann Institute, she expanded AutoMPO to include a new backend that can handle operators acting on any number of sites and which optimizes the size of the resulting MPO using a series of SVDs. Anna will be pursuing the next phase of her career as a joint Station Q and KITP postdoc in Santa Barbara.
For more information on AutoMPO and some examples see the documentation page.
For an example of how to use the toExpH function to exponentiate an AutoMPO, see the above documentation page or the following code formula.
The ITensor website now has a page where you can sign up for the ITensor Newsletter. This newsletter will be sent by email only very occasionally, only a handful of times a year, and will announce major new ITensor features or additional resources. Visit the sign-up page to join the list.
New ITensor Codes Page
(May 19, 2017)
The ITensor website has a new page featuring ITensor codes. We plan to feature high-quality, open-source codes based on ITensor, including advanced physics algorithms and packages for extending ITensor itself. The initial batch of codes includes finite temperature DMRG; real-space parallel DMRG; and tensor network machine learning.
If you have a code you have created using ITensor, or if you are making a code that extends ITensor but is still in "beta" form, please post your code on Github or Bitbucket and contact Miles Stoudenmire to have your code listed on our site. Codes that are of high enough quality and of general use will be considered for eventual inclusion in a future release of ITensor.
ITensor at the Simons Many-Electron Summer School 2016
(Jun 18, 2016)
The Simons Collaboration on the Many-Electron Problem is holding its third-annual summer school this June at Stony Brook University. This year the school involves a weekend workshop beforehand on developing quality codeo for physics research. The main topic of the school will be tensor network methods. ITensor will be featured in both parts of the school, alongside two other collaboration projects: ALPSCore and TRIQS.
Tutorial on Fermions and Jordan-Wigner Transformations
(Apr 20, 2016)
One difficulty with ITensor (which we hope to remedy in future versions) is that to work with fermionic operators acting on different sites, you must map them to bosonic operators using the Jordan-Wigner transformation.
Because this transformation can be tricky to get right, we have added a detailed tutorial, which even includes the case of fermions with spin. Please email Miles if you would like to see extra examples in this tutorial or additional steps in greater detail.
New Discussion Forum
(Mar 25, 2016)
Along with the new release of ITensor, we have added a discussion forum to the website. This forum works similarly to Stack Exchange, where you can vote on questions and answers. Please create an account and post a question.
When writing a post, you can indent code text by 4 spaces to have it be automatically formatted (different font and highlighting).
You can also delimit latex by @@[email protected]@ for inline latex or by
for latex on its own separate line.
ITensor Version 2.0 Released
(Mar 25, 2016)
The latest release of ITensor comes with a major overhaul of ITensor and IQTensor internals. Tensor storage is now handled by a set of independent storage types, which can have completely arbitrary layouts and behaviors. This paves the way for future support for even more sparse tensor types, in addition to the currently support ones such as diagonal tensors. For example, "combiners" are no longer a separate type, but are now just a special case of an ITensor or IQTensor with "combiner storage".
The new version also includes a new low-level linear algebra library as a foundation for ITensor. This library revolves around a simple tensor type with indices having a fixed order. Matrices and vectors are treated as special cases of tensors.
For more details on the update, see the changelog.
For help upgrading your code to the new version, see the transition guide.
For a deeper discussion of the new ITensor internals, read about the new storage system.
ITensor at 2016 Sherbrooke Summer School
(Jan 11, 2016)
The International Summer School on Computational Quantum Materials will again be featuring lectures on using ITensor to implement matrix product state (e.g. DMRG) methods. Following lectures by U. Schollwoeck on MPS and DMRG, Miles Stoudenmire will present two lectures, 1.5 hours each, with hands-on demos of ITensor. Please register or notify your students about this opportunity to discuss details of ITensor with Miles in person and to attend a great summer school with many distinguished speakers. Deadline for registration is Feb 1, 2016.
ITensor Version 1.1—C++11 and more
(May 16, 2015)
Spring brings another new release of ITensor (Github link). Version 1.1.0 is the first to require C++11 compiler support, which allows us to make the library nicer to use and more memory safe. The internals have been reworked for better efficiency and stability.
This release also brings a major new feature: AutoMPO. The AutoMPO class makes it simple to create MPOs for many common Hamiltonians, including on two-dimensional lattices (see the front page for an example of usage). AutoMPO is also quite useful for creating other MPOs which are sums of local operators. For more details about this release, see the changelog.
ITensor Gets a Spring Clean
(May 27, 2014)
ITensor version 1.0 has just been released (Github link) with many improvements, such as automatic sparsity for ITensors and IQTensors; no more boost dependence when compiling with C++11; a more consistent interface for MPS methods; a new infinite DMRG code; new facilities for printing; and much more. For more details, take a look at the changelog.
Should you use periodic boundary conditions with DMRG?
(Apr. 28, 2014)
Are periodic boundary conditions the best way to eliminate edge effects? Aren't correlation function measurements the "standard" and best approach to detecting symmetry breaking? The answer may surprise you. Fully periodic boundary conditions impose a steep cost within DMRG, and one can make the case that they are needed only in rare circumstances. Open boundaries can even be a superior choice for other numerical methods such as quantum Monte Carlo. For more, see the full article.
Hands-On With ITensor at Sherbrooke Summer School
(Dec. 17, 2013)
The ITensor Library will be featured as part of the Sherbrooke International Summer School on Computational Methods for Quantum Materials taking place May 26 to June 6, 2014. Following Uli Schollwöck's tutorials on modern DMRG theory and practice, Miles Stoudenmire will give two talks on the practical implementation of DMRG and matrix product states using ITensor. This will include hands-on tutorials on getting started with ITensor and applying ITensor to real research problems.
Parallelizing DMRG Across Real Space
(Apr. 22, 2013)
Although DMRG is a one-dimensional method, its power and efficiency have made it surprisingly effective for studying two-dimensional lattice models. Recent DMRG results for the kagome lattice antiferromagnet have reinvigorated the search for realistic quantum spin liquids. DMRG was also the workhorse behind new sophisticated measurements of topological order. But two-dimensional DMRG calculations are computationally very demanding.
DMRG's success in 1d and 2d can be attributed to its ideal characteristics including robust convergence and exponential scaling of accuracy with computational cost. Yet one feature it lacked was parallelism, where a single DMRG calculation could be split across multiple computers.
Now this problem has been solved using insights based on matrix product states. Performing a matrix product state gauge transformation at the real-space boundary between two blocks provides an orthonormal basis for independent DMRG calculations within each block, then a way to merge the results afterward. Repeating this procedure across N blocks enables a single DMRG calculation to run almost N times faster. (See figure above.) Using the ITensor Library made it possible to rapidly develop and test the algorithm; all of the demanding benchmark calculations used ITensor as well.
Read the full paper here.
Note: although the method was developed explicitly using tensors and matrix product states, it should be straightforward to implement in conventional DMRG codes and only requires modifying the DMRG algorithm at block boundaries.
Studying Density Functional Theory in a 1D Laboratory
(Aug. 22, 2012)
At the heart of the enormously successful density functional theory (DFT) method lies a functional that gives the ground state energy of any system provided only its density. Can this exact energy functional be written down? What are its key properties?
Except for a handful of small systems, computing the exact functional in three dimensions is too difficult to permit a systematic study of its properties. However, a recent paper in Physical Review Letters shows that in one dimension—thanks to the power of density matrix renormalization group (DMRG) calculations and the flexibility of the ITensor Library—one can calculate the exact densities of a wide variety of continuum, long-range interacting systems consisting of long chains of artificial atoms.
From these exact densities, it is relatively straightforward to calculate the exact density functional and a host of other quantities of interest in DFT. In the future, this 1d laboratory should be useful for studying popular density-functional approximations and exploring improved functionals which could be applied to strongly correlated systems in 3d.
Read the paper here.
Majorana Fermions Thrive in the Hostile World of Electrons
(Sept. 19, 2011)
Recently, there has been a surge in proposals to observe exotic fractional particles known as Majorana fermions using rather conventional condensed matter systems. Producing and controlling these particles would be a key step toward building a robust quantum computer. In one of the simplest setups, Majorana fermions could be produced by applying a magnetic field to certain superconducting nanowires. But our present theoretical understanding leaves out many of the complications expected in a realistic nanowire experiment.
In a recent paper produced using extensive ITensor Library simulations, we take the important step of reintroducing the fact that electrons repel one another. The key issue is the extent to which the Majorana fermions survive these more realistic conditions. Although we find that electron interactions make them more fragile to thermal fluctuations, interactions ultimately result in a net gain since they make the Majoranas more robust to electron density fluctuations and allow them to appear at weaker magnetic fields - the latter two issues being more pressing experimentally. In fact, we go so far as to show that a magnetic field may not be necessary at all given the right combination of materials properties and strong interactions.
See the Physics synopsis.