How To Grow A Quasi-1D Chain In IDMRG?
Introduction
In the realm of computational physics and tensor network methods, the infinite density matrix renormalization group (iDMRG) is a powerful tool for studying one-dimensional (1D) quantum systems. One of the key aspects of iDMRG is the ability to grow a quasi-1D chain, which is essential for understanding the behavior of 2D systems that can be mapped onto a 1D chain. In this article, we will provide a step-by-step guide on how to grow a quasi-1D chain in iDMRG, assuming a basic understanding of the Matrix Product State (MPS) and Matrix Product Operator (MPO) formalisms.
Prerequisites
Before diving into the details of growing a quasi-1D chain in iDMRG, it is essential to have a solid understanding of the following concepts:
- Matrix Product State (MPS): A way to represent a quantum state as a matrix product of smaller matrices.
- Matrix Product Operator (MPO): A way to represent a quantum operator as a matrix product of smaller matrices.
- Infinite Density Matrix Renormalization Group (iDMRG): A numerical method for studying 1D quantum systems using MPS and MPO.
If you are familiar with these concepts, you can proceed to the next section. Otherwise, we recommend reviewing the relevant literature and notes, such as the one provided in the additional information section.
Growing a 1D Chain with Nearest Neighbor Interaction
As a warm-up exercise, let's review how to grow a 1D chain with nearest neighbor interaction using iDMRG. This will provide a solid foundation for understanding the more complex case of growing a quasi-1D chain.
Step 1: Initialize the MPS and MPO
To grow a 1D chain, we need to initialize the MPS and MPO. The MPS is a matrix product of smaller matrices, each representing a site in the chain. The MPO is a matrix product of smaller matrices, each representing a local operator on a site in the chain.
import numpy as np

mps = np.random.rand(2, 2, 2) # 2 sites, 2 physical indices, 2 bond indices
mpo = np.random.rand(2, 2, 2, 2) # 2 sites, 2 physical indices, 2 bond indices, 2 physical indices
Step 2: Apply the MPO to the MPS
To apply the MPO to the MPS, we need to perform a matrix product contraction. This involves multiplying the MPO with the MPS, while keeping track of the bond indices.
# Apply the MPO to the MPS
result = np.tensordot(mpo, mps, axes=[(1, 2), (0, 1)])
Step 3: Update the MPS
After applying the MPO to the MPS, we need to update the MPS to reflect the new state of the system. This involves performing a singular value decomposition (SVD) on the result.
# Update the MPS
u, s, vh = np.linalg.svd(result, full_matrices=False)
mps = np.tensordot(u, s, axes=[(0, 1), (0, 1)])
Step 4: Repeat the Process
To grow the 1D chain, we need to repeat the process of applying the MPO to the MPS and updating the MPS. This involves iterating over the sites in the chain, applying the MPO, and updating the MPS.
# Repeat the process
for i in range(10):
result = np.tensordot(mpo, mps, axes=[(1, 2), (0, 1)])
u, s, vh = np.linalg.svd(result, full_matrices=False)
mps = np.tensordot(u, s, axes=[(0, 1), (0, 1)])
Growing a Quasi-1D Chain
Now that we have reviewed how to grow a 1D chain with nearest neighbor interaction, let's move on to the more complex case of growing a quasi-1D chain.
Step 1: Define the Quasi-1D Chain
To grow a quasi-1D chain, we need to define the chain structure. This involves specifying the number of sites in the chain, the number of physical indices, and the number of bond indices.
# Define the quasi-1D chain
num_sites = 10
num_physical_indices = 2
num_bond_indices = 2
Step 2: Initialize the MPS and MPO
To grow the quasi-1D chain, we need to initialize the MPS and MPO. The MPS is a matrix product of smaller matrices, each representing a site in the chain. The MPO is a matrix product of smaller matrices, each representing a local operator on a site in the chain.
# Initialize the MPS
mps = np.random.rand(num_sites, num_physical_indices, num_bond_indices)
mpo = np.random.rand(num_sites, num_physical_indices, num_bond_indices, num_physical_indices)
Step 3: Apply the MPO to the MPS
To apply the MPO to the MPS, we need to perform a matrix product contraction. This involves multiplying the MPO with the MPS, while keeping track of the bond indices.
# Apply the MPO to the MPS
result = np.tensordot(mpo, mps, axes=[(1, 2), (0, 1)])
Step 4: Update the MPS
After applying the MPO to the MPS, we need to update the MPS to reflect the new state of the system. This involves performing a singular value decomposition (SVD) on the result.
# Update the MPS
u, s, vh = np.linalg.svd(result, full_matrices=False)
mps = np.tensordot(u, s, axes=[(0, 1), (0, 1)])
Step 5: Repeat the Process
To grow the quasi-1D chain, we need to repeat the process of applying the MPO to the MPS and updating the MPS. This involves iterating over the sites in the chain, applying the MPO, and updating the MPS.
# Repeat the process
for i in range(10):
result = np.tensordot(mpo, mps, axes=[(1, 2), (0, 1)])
u, s, vh = np.linalg.svd(result, full_matrices=False)
mps = np.tensordot(u, s, axes=[(0, 1), (0, 1)])
Conclusion
Q: What is the difference between a 1D chain and a quasi-1D chain?
A: A 1D chain is a chain of sites with nearest neighbor interaction, where each site is connected to its nearest neighbors. A quasi-1D chain, on the other hand, is a chain of sites with non-nearest neighbor interaction, where each site is connected to multiple other sites.
Q: Why do we need to grow a quasi-1D chain in iDMRG?
A: Growing a quasi-1D chain in iDMRG is essential for understanding the behavior of 2D systems that can be mapped onto a 1D chain. By growing a quasi-1D chain, we can study the properties of these systems and gain insights into their behavior.
Q: What is the role of the MPS and MPO in growing a quasi-1D chain?
A: The MPS and MPO are essential components in growing a quasi-1D chain in iDMRG. The MPS represents the quantum state of the system, while the MPO represents the local operators on each site. By applying the MPO to the MPS, we can study the behavior of the system and gain insights into its properties.
Q: How do we initialize the MPS and MPO for a quasi-1D chain?
A: To initialize the MPS and MPO for a quasi-1D chain, we need to specify the number of sites in the chain, the number of physical indices, and the number of bond indices. We can then use random numbers to initialize the MPS and MPO.
Q: What is the process of applying the MPO to the MPS?
A: The process of applying the MPO to the MPS involves performing a matrix product contraction. This involves multiplying the MPO with the MPS, while keeping track of the bond indices.
Q: How do we update the MPS after applying the MPO?
A: After applying the MPO to the MPS, we need to update the MPS to reflect the new state of the system. This involves performing a singular value decomposition (SVD) on the result.
Q: How many times do we need to repeat the process of applying the MPO to the MPS?
A: We need to repeat the process of applying the MPO to the MPS multiple times to grow the quasi-1D chain. The number of times we need to repeat the process depends on the desired length of the chain.
Q: What are the challenges of growing a quasi-1D chain in iDMRG?
A: One of the challenges of growing a quasi-1D chain in iDMRG is the need to handle the non-nearest neighbor interaction between sites. This can lead to a large number of bond indices, making the calculation more complex.
Q: How can we overcome the challenges of growing a quasi-1D chain in iDMRG?
A: To overcome the challenges of growing a quasi-1D chain in iDMRG, we can use various techniques such as truncation, renormalization, and optimization. These techniques can reduce the number of bond indices and make the calculation more efficient.
Q: What are the applications of growing a quasi-1D chain in iDMRG?
A: Growing a quasi-1D chain in iDMRG has various applications in condensed matter physics, quantum field theory, and materials science. It can be used to study the behavior of 2D systems, such as superconductors, superfluids, and topological insulators.
Q: How can I implement growing a quasi-1D chain in iDMRG in my research?
A: To implement growing a quasi-1D chain in iDMRG in your research, you can use various software packages such as ITensor, TeNPy, and PyTorch. You can also use libraries such as NumPy and SciPy to perform the necessary calculations.