Git Product home page Git Product logo

website's Introduction

โš ๏ธ INFO: This repository is deprecated

This is the source code for the old itensor.org website. You can find the source code for the new website here.

website's People

Contributors

1ucasvb avatar emsflatiron avatar emstoudenmire avatar jansendavid avatar kshyatt avatar lowagner avatar mtfishman avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

website's Issues

Update "Book" for V3

Here are some updates needed in the "Book" (http://www.itensor.org/docs.cgi?vers=cppv3&page=book):

Index Objects section (http://www.itensor.org/docs.cgi?vers=cppv3&page=book/index):

  • noprime -> noPrime

ITensor Basics section (http://www.itensor.org/docs.cgi?vers=cppv3&page=book/itensor_basics):

  • T.ord(), ord(T), rank(T), T.r() -> maybe don't mention these alternatives? We could just mention that "order" is called different things in different communities, but I think it is better not to mention them as supported anymore, I would rather undocument them so they are not floating around forever.
  • Maybe change T.elt(...) -> elt(T,...) if we decide on that notation.

Factorizing ITensors (SVD Example) section (http://www.itensor.org/docs.cgi?vers=cppv3&page=book/itensor_factorizing):

  • "Maxm","Minm" -> "MaxDim", "MinDim"
  • Mention setting custom tags on new Index? I think we should encourage users to do this, but maybe it is too much too early on.

Case Study: TRG Algorithm section (http://www.itensor.org/docs.cgi?vers=cppv3&page=book/trg):

  • Matt: I plan to clean up the TRG code, and then update this page accordingly. For example, I will use the Indices l,r,u,d with tags "left","right","up","down", and then distinguish indices at different levels just by the tags "orig" and "renorm", instead of e.g. "scale=4", "scale=5".
  • Don't name the delta tensors for doing the trace Trx, Tr, maybe just multiply with T*delta(l,r)*delta(u,d) is clear enough.
  • We should keep track of kappa, the "partition function per site" defined by Z = kappa^N. The current way of keeping track of lnZ overflows with more iterations. Also we can mention the exact free energy, etc.

IQTensor sections:

  • Update to make IQTensor -> ITensor with QDense storage.

Improve website organization

It seems like we can merge "The ITensor Book", "Tutorials", and "Code Formulas" together (maybe all into "The ITensor Book"?).

They all have useful information, but it is too spread out right now. I often spend time looking for a tutorial/sample code I know is there but forgot which link it was put under.

Point to v3.1.1 on homepage

@emstoudenmire, could you have the homepage point to v3.1.1? It has an important bugfix for the removeQNs(ITensor) function.

It also has a few other improvements, like that svd now doesn't truncate by default (which it was doing accidentally before) and Cutoff=0 now truncates singular values that are exactly zero.

Thanks,
Matt

Update "Tensor Decomposition" docs for V3

Tensor Decomposition docs (http://www.itensor.org/docs.cgi?vers=cppv3&page=classes/decomp) need some updates:

  • randomTensor -> randomITensor everywhere in examples
  • Change svd args:
    • Change "Maxm"/"Minm" (maybe to "MaxDim"/"MinDim" or "MaxRank"/"MinRank"? This isn't implemented yet so maybe don't change the docs)
    • Need to remove "LeftIndexName", "LeftIndexType", etc. to instead be "LeftTags", etc.
    • List the default tag convention, and add example of getting the Index with commonIndex or findIndex
  • Update factor for tags
  • Update diagHermitian:
    • "Maxm"/"Minm" -> something else (Matt: this isn't implemented yet so maybe don't change the docs).
    • Update to reflect tag args and tag convention
    • Show how more general input index structure can be used, like ia,ja,...,ib,jb,... where replaceTags(ia,tags(a),tags(b)) == ib? (Matt: I am not sure if I added this feature yet, so maybe not).
  • Update denmatDecomp docs
    • "Maxm"/"Minm" -> something else (Matt: this isn't implemented yet so maybe don't change the docs).
    • Show the tags convention for the new index, and how it can be changed.

Add caching to docs script

The script should write html files to the same directory as the md files. Each time it's run, the script checks whether the md file is newer than the html file - if so, it replaces the html file.

Update "Tutorials" for V3

Here are updates needed to the tutorials (http://www.itensor.org/docs.cgi?vers=cppv3&page=tutorials) for V3:

ITensor Quickstart (http://www.itensor.org/docs.cgi?vers=cppv3&page=tutorials/quickstart)

  • Fix Index constructors
  • i(1) -> i=1

Understanding Tensor Diagrams (http://www.itensor.org/docs.cgi?vers=cppv3&page=tutorials/diagrams)

  • Fix Index constructors
  • IQMPS/IQTensor -> MPS/ITensor with QNs/QDense storage

Priming Indices in ITensor (http://www.itensor.org/docs.cgi?vers=cppv3&page=tutorials/primes)

  • Remove IndexType, explain using tags

Choosing DMRG Parameters (http://www.itensor.org/docs.cgi?vers=cppv3&page=tutorials/dmrg_params)

  • maxm -> maxDim, etc.
  • niter -> maxKrylovSize?

Matrix Product States (http://www.itensor.org/docs.cgi?vers=cppv3&page=tutorials/MPS)

  • psi.A(3) -> psi(3), psi.Aref(3) -> psi.ref(3), etc.
  • In prime function, use "Site" instead of Site

Matrix Product Operator (http://www.itensor.org/docs.cgi?vers=cppv3&page=tutorials/MPO)

  • MPO -> toMPO?
  • Site -> "Site"

Introduction to AutoMPO (http://www.itensor.org/docs.cgi?vers=cppv3&page=tutorials/AutoMPO)

  • MPO -> toMPO?

Calculating Two-Site Correlation Functions (http://www.itensor.org/docs.cgi?vers=cppv3&page=tutorials/correlations)

  • psi.A(2) -> psi(2), etc.
  • Link -> "Link", etc.
  • C.real() -> C.elt(). Maybe to get a scalar it should be elt(C)?

The Args System (http://www.itensor.org/docs.cgi?vers=cppv3&page=tutorials/args)

  • "Maxm" -> "MaxDim"

Updates for V2 -> V3 transition

Here are some things we should make sure to emphasize in the transition guide/changelog:

  • Changed the prime level convention for the output of nmultMPO and applyMPO.
  • Removed exactApplyMPO and fitApplyMPO interface in favor of applyMPO.
  • Instead of mapprime, use replaceTags (maybe we will add mapPrime back to ease the transition).
  • ITensor functions assume MPS and MPO have certain index topology conventions (neighboring tensors have one shared link).

Update "ITensor" docs for V3

The ITensor docs (http://www.itensor.org/docs.cgi?vers=cppv3&page=classes/itensor) need some more updates for V3:

  • rank -> order.
  • Should .elt and .eltC be free functions, i.e. elt(T,i=1,j=2)? (Yes)
  • T.inds() -> inds(T).
  • Add the tags(T, "... -> ...") function, once it is created. Decided not to implement this.
  • Instead of referencing IndexSet docs for *Tags functions, just put the description directly on the ITensor page (these functions will become much simpler once prime levels can be accessed through tags). The interface for tagging functions is the same, so the docs just point to IndexSet.
  • Put .conj, .dag, etc next to conj, dag, etc.
  • Put the section "Analyzing ITensor Indices" closer to the top, since these are used a lot.

Update "Code Formulas" for V3

Code Formulas (http://www.itensor.org/docs.cgi?vers=cppv3&page=formulas) updates for V3:

NOTE:

  • Extract the Storage of a Dense ITensor
  • Evaluate a Function on Each Element of a Tensor

are linked twice, update for V2 docs as well.

Measure local properties of an MPS wavefunction (http://www.itensor.org/docs.cgi?vers=cppv3&page=formulas/measure_mps):

  • Change psi.A(j) -> psi(j)
  • Site -> "Site"
  • T.real() -> elt(T)
  • sites.op(...) -> op(sites,...)

Measure two-point correlator from an MPS wavefunction (http://www.itensor.org/docs.cgi?vers=cppv3&page=formulas/correlator_mps):

  • IQMPS -> MPS
  • sites.op("Op1",i) - > op(sites,"Op1",i), etc.
  • Link -> "Link", etc.
  • psi.A(i) -> psi(i), etc.
  • commonIndex(psi.A(i),psi.A(i+1),Link) -> linkInd(psi,i)
  • psi.A(i)*op_i*dag(prime(psi.A(i),Site,ir)) -> prime(psi(i),linkInd(psi,i-1))*op_i*dag(prime(psi(i)))
  • C *= psi.A(k); -> auto sk = siteInd(psi,k); C *= prime(psi(k),sk);
  • C *= dag(prime(psi.A(k),Link)); -> C *= dag(prime(psi(k)));
  • C *= psi.A(j); -> auto lj = linkInd(psi,j); C *= prime(psi(j),lj);
  • C *= dag(prime(psi.A(j),jl,Site)); -> C *= dag(prime(psi(j)));
  • C.real() -> elt(C)

Compute entanglement entropy (http://www.itensor.org/docs.cgi?vers=cppv3&page=formulas/entanglement_mps):

  • psi.A(b) -> psi(b)
  • commonIndex(psi.A(i),psi.A(i+1),Link) -> linkInd(psi,i)

Measure spinless fermion two-point correlator (http://www.itensor.org/docs.cgi?vers=cppv3&page=formulas/spinless_correlator_mps):

  • Changes similar to "Measure two-point correlator from an MPS wavefunction" page

Compute a two-site reduced density matrix from an MPS (http://www.itensor.org/docs.cgi?vers=cppv3&page=formulas/mps_two_rdm):

  • Changes similar to "Measure two-point correlator from an MPS wavefunction" page

Operator matrix elements involving two MPS (http://www.itensor.org/docs.cgi?vers=cppv3&page=formulas/two_mps):

  • Changes similar to "Measure two-point correlator from an MPS wavefunction" page

Time-evolving an MPS with Trotter Gates (http://www.itensor.org/docs.cgi?vers=cppv3&page=formulas/tevol_trotter):

  • BondGate<ITensor> -> BondGate
  • sites.op(...) -> op(sites,...)?

Time-evolving an MPS with an MPO (matrix product operator) (http://www.itensor.org/docs.cgi?vers=cppv3&page=formulas/tevol_mps_mpo):

  • psi.A(3) -> psi(3)
  • noprime -> noPrime
  • toExpH<ITensor> -> toExpH
  • exactApplyMPO(...) -> applyMPO(...,{"Method=","DensityMatrix"}), fitApplyMPO(...) -> ..., ect.
  • normalize(psi) -> psi.normalize()

Applying a two-site 'gate' to an MPS (http://www.itensor.org/docs.cgi?vers=cppv3&page=formulas/gate):

  • psi.A(3) -> psi(3)
  • noprime -> noPrime
  • psi.setA(3,U) -> psi.set(3,U)

Create a page of performance tips

It would be good to add a page somewhere with a list of performance tips for ITensor/tensor network contraction methods.

One example is a performance issue I was just running into, where I was contracting two MPS psi and phi like this:

auto N = 10;
auto sites = SiteSet(N,2);
auto psi = MPS(sites);
auto phi = MPS(sites);
auto O = psi(1)*phi(1);
for( auto n : range1(N) )
   O *= psi(n) * phi(n);

and getting really bad performance (for medium to large bond dimensions). The definition of *= in ITensor leads to a different order of operations than I was expecting (performing psi(n)*phi(n) first, then contracting with O). So a better way is to write this as:

for( auto n : range1(N) )
  {
  O *= psi(n);
  O *= phi(n);
  }

I was used to the definition of x *= y from Julia, where it is always lowered to x = x * y, so it took longer than it should have for me to catch this. Anyway, just adding a note about this for future reference.

ITensor prime and tag functions

Right now, the ITensor prime and tag functions section points to the IndexSet documentation page. It would be better to have those functions directly in the ITensor page to avoid confusion and make finding them easier when searching the website.

Update "MPS" and "MPO" docs for V3

Update MPS docs (http://www.itensor.org/docs.cgi?vers=cppv3&page=classes/mps) for V3:

  • psi.A(3) -> psi(3) (Matt: this still needs to be implemented)
  • psi.setA(3,A) -> psi.set(3,A) (Matt: this still needs to be implemented)
  • psi.Aref(3) -> psi.ref(3) (Matt: this still needs to be implemented)
  • Remove .Anc from docs
  • psi.N() -> length(psi)
  • .rightLim(), .leftLim(), .isOrtho(), .orthoCenter(), .sites() -> free functions (Matt: this still needs to be implements)
  • Update "MPS Prime Level Methods"
  • averageM, maxM -> averageLinkDim, maxLinkDim
  • normalize(psi) -> .normalize(psi)
  • psi.norm() -> norm(psi)

MPO docs (http://www.itensor.org/docs.cgi?vers=cppv3&page=classes/mpo):

  • H.A(j) -> H(j)

Update "IndexSet" docs for V3

Some of the IndexSet docs (http://www.itensor.org/docs.cgi?vers=cppv3&page=classes/indexset) need to be updated more for V3:

  • .r and rank -> order
  • Update findIndex functions to only accept a TagSet for matching once prime levels can be accessed through the tagset.
  • maxM and minM -> maxDim and minDim
  • Move "Other IndexSet Functions" to the top since I think those are ones people would use most. The other functions are mostly internal ones that get used when they are called on an ITensor.
  • Make the "Accessor Methods" free functions?
  • Rename extent -> dim?

Concatenate Local Operators

This is something user benoit mentioned already on the website under "AutoMPO Syntax: Concatenate local terms" but miles commented that it would be best to file a feature request. I'm wondering if it would be possible to have a function that would allow you to construct an operator involving operators from an arbitrary number of sites, without explicitly needing to write
ampo += "Sz", j, "Sz", j+1, "S+", j+2, ...
I have a system where the number of operators increases with the system size, so for example for a system of size 7 I will have an operator involving all 7 sites (they will have small coefficients out front compared to more local operators so that DMRG should hopefully still be useful). See benoit's post for an example of the pseudocode that would be useful to have. Thanks!

documentation

I have no access to the documentation through the website.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.