I'm looking to solve quantum system in 1D and 2D consisting of a large number of sites.

What are the pros and cons of each package, and which package is more suitable for what type of calculations?

Many beginners will be benefit from the answers, and any help in this direction will be appreciated.

Answers in the format of these examples would be appreciated:

  • 2
    $\begingroup$ Welcome to the site! Thank you for contributing your question here (+1!) and we hope to see much more of you! It is strongly preferred that one question is asked per post, so the part where you asked specifically about software for "magnetic properties such as magnetization, correlation, susceptibility" can possibly be asked separately, and you can easily get back what you wrote by looking at the edit history. See the examples I provided above, to see what we hope for the questions and answers to look like. Welcome again! $\endgroup$ Dec 16 '20 at 5:37
  • 1
    $\begingroup$ @NikeDattani, Thanks for edit! $\endgroup$
    – 2.1
    Dec 16 '20 at 5:57
  • $\begingroup$ why did you want to close this question (and to rename it)? $\endgroup$ Oct 7 at 19:46
  • 2
    $\begingroup$ The current version of the question seems too broad. It doesn't really make sense to compare an ED package to a QMC one - it seems better to have one question comparing the methods, and other questions focusing on e.g. ED packages. And "quantum systems" includes noninteracting ones, which is presumably not your focus here. $\endgroup$
    – Anyon
    Oct 22 at 16:01
  • 1
    $\begingroup$ To further Anyon's point, ideally we shouldn't make fundamental changes to a question after they have already received a satisfactory answer to the original version. You could ask some version of your new question in a separate post, though you would need to narrow the scope of it to avoid it being too broad. $\endgroup$
    – Tyberius
    Oct 23 at 12:37

Note: This answer was written when the question was specifically about exact diagonalization codes. In an ED context, "a large number of spin sites" would maybe mean somewhere in the 24-40 range (maybe slightly more if really pushing the envelope, fewer for $t-J$ and Hubbard models) since the Hilbert space grows exponentially. If one is looking to solve problems with larger numbers of sites than that, it's better to look to other computational methods like DMRG or QMC.


QuSpin is an open-source Python code that can do exact diagonalization of spin, fermion, and boson systems. It has a wide support for use of symmetries, constrained Hilbert spaces, various models, and time evolution. The combination of fairly simple Python syntax and a large number of tutorials make it a great choice for beginners, for small-scale experimentation, and time-evolution problems in many-body systems. However, the parallelization options are limited. As far as I know, as of v. 0.3.6 QuSpin only supports on-node parallelization through OpenMP and MKL. Thus QuSpin is typically not the best choice if you want to reach the largest systems. In addition, QuSpin seems to currently lack built-in support for dynamical correlation functions, which is of interest to modeling inelastic experiments.


  1. Project on GitHub: https://weinbe58.github.io/QuSpin/
  2. Introducing paper: Phillip Weinberg, and Marin Bukov, QuSpin: a Python package for dynamics and exact diagonalisation of quantum many body systems part I: spin chains, SciPost Phys. 2, 003 (2017).
  3. Follow-up paper: Phillip Weinberg, and Marin Bukov, QuSpin: a Python package for dynamics and exact diagonalisation of quantum many body systems. Part II: bosons, fermions and higher spins, SciPost Phys. 7, 020 (2019).
  • $\begingroup$ @Chumbak No problem. I guess I will give others more time to write answers of their own, but if nobody chimes in I could post an answer about HPhi too. $\endgroup$
    – Anyon
    Dec 18 '20 at 16:11

Software to do molecular dynamics on windows

The LAMMPS molecular dynamics package has a windows version.

Alternatively, have you considered the Windows Subsystem for Linux (WSL) using which you can easily install linux based applications? I use the WSL daily for most of my work and can confirm that the performance degradation when compared to a native installation of linux is minimal (at least for my use cases of LAMMPS and SIESTA dft).

Also, is there any specific reason why you would want to use python for DFT? If you are willing to try a package such as SIESTA, there are tutorials that sufficiently describe the process of simulating a water molecule. Also the SIESTA package is capable to working with large systems due to the use of localized basis sets. However, there would be a reduction in accuracy when compared to other Plane Wave packages such as Quantum Espresso and ABINIT, but the increased system size usually justifies the error introduced.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.