Does ITensor welcome links to open source libraries based on ITensor?


I wish to ask whether you currently support/agree to post links to open source packages based on ITensor, perhaps in the Community Codes section of the Codes page?
If so, what would be the way to proceed with requesting this?
Thanks a lot for this great community,

1 Like

Hi Haggai,
Yes, we are open to adding high-quality community codes to the Codes page of our website. For example, you can see how DMRGPy is linked there. While we can’t link all codes, we are happy to link ones that are general-purpose enough and developed enough so that they have a clear purpose, clear documentation, etc.

Glad to hear you’re enjoying using ITensor –

Great Miles, thanks for the quick reply.
So I would suggest the package that I coauthored (not surprisingly…).
It is a solver for the dynamics of qubits/spins modeled by a Lindblad master equation, suitable for simulations of general dissipative spin-1/2 models and also contains some code specific to simulations of qubit devices. The solver is written in C++ (based on ITensor of course) and wrapped with a Python interface for the management of the simulations and the analysis and plotting of the data. It is very well documented, and I believe that it can stand up to the requirements that you note above.

The package is lindbladmpo, hosted under the qiskit-community umbrella on github (with an Apache open source 2.0 license).
Thanks, Haggai.

1 Like

Thanks for sharing your code, looks nice!

I was working with one of our collaborators Giacomo Torlai on an automated system for compiling circuits for Lindbladian open system dynamics here: The goal was that the user just provides OpSums for the Hamiltonian and the dissipation terms, which then get compiled into a circuit (built of local Kraus operators) which can then be run like normal TEBD/circuit evolution using the MPO gate application function (apply) in ITensors.jl or PastaQ’s runcircuit function. So I think it is more narrow in scope than your library (really just doing the circuit compilation).

A nice part about the Julia version of ITensor is that the core gate application functionality (the apply function in ITensors.jl) is much more general and flexible than the one we have in C++ ITensor: it handles non-local gate application of n-site gates applied to both MPS and MPO, and also Kraus operators. Gates in the Julia version are just ITensors, and we determine where to apply them automatically based on which indices they have in common with sites of the MPS/MPO. Kraus operators are also just normal ITensor gates but with dangling indices that are automatically contracted over as the Kraus index/dimension when they are applied to both sides of an MPO.

1 Like

I see, that’s really nice - it allows for arbitrary Hamiltonian/Lindblad operators, while our solver currently has a simpler interface that lets one pick from predefined operators. The Julia version definitely seems powerful. The solver was actually developed by my co-author (Gregoire Misguich from IPhT/CEA-Saclay) with ITensor v2, so it has historic roots earlier than the Julia version I guess :slight_smile:

Hi Haggai,
I just added your package to our “Community Codes” section of our Codes page. <>

Please have a look and let me know if it looks ok, or if the description can be improved or if you want a different link for your personal info etc.

Thanks for making this & letting us know about it!


Hi Miles, it looks great!
I would just kindly ask to add the co-developer Grégoire Misguich.
Bye for now, thanks a lot,

Great. Ok just added him

1 Like

Hi Haggai,
I have read your package lindbladmpo, I was happy to learn that this package can calculate the following jump operators.
\mathcal{D}[\rho] = \sum_i \Gamma\left(\sigma_i^+ \rho\sigma_i^- - \frac{1}{2} \{\sigma_i^- \sigma_i^+,\rho\}\right)
But I still have some questions, such as whether it can calculate a jump operator with the following form.
\mathcal{D}[\rho] = \sum_{ij} \Gamma\left(\sigma_i^+ \rho\sigma_j^- - \frac{1}{2} \{\sigma_j^- \sigma_i^+,\rho\}\right)

Hello Han,
Thank you for your interest. Indeed such mixed/off-diagonal terms are not currently implemented. Since the library is open source, we encourage contributions. Do you have a reference to point me to with some more details about such two-site dissipators?

I’m sorry, I’m not good at programming. Currently, I have learned that the Qutip library is capable of implementing such functions. But it is not based on ITensors. Therefore, it is difficult to calculate the physical systems of large systems.