Issues:
1) When running all cells of the notebook without alterations, I encounter the following error when runnnig
Python: Select all
E1_s, _ = eng.run()
Python: Select all
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
Cell In[26], line 2
1 eng = dmrg.TwoSiteDMRGEngine(psi1_s, M_s, dmrg_params, resume_data=resume_psi1_s)
----> 2 E1_s, _ = eng.run()
File ~/Desktop/numerical_spt_classification/code/venv/lib/python3.11/site-packages/tenpy/algorithms/dmrg.py:459, in DMRGEngine.run(self)
448 def run(self):
449 """Run the DMRG simulation to find the ground state.
450
451 Returns
(...)
457 i.e. just a reference to :attr:`psi`.
458 """
--> 459 return super().run()
File ~/Desktop/numerical_spt_classification/code/venv/lib/python3.11/site-packages/tenpy/algorithms/mps_common.py:779, in IterativeSweeps.run(self)
777 if not is_first_sweep:
778 self.checkpoint.emit(self)
--> 779 result = self.run_iteration()
780 self.status_update(iteration_start_time=iteration_start_time)
781 is_first_sweep = False
File ~/Desktop/numerical_spt_classification/code/venv/lib/python3.11/site-packages/tenpy/algorithms/dmrg.py:307, in DMRGEngine.run_iteration(self)
305 logger.info('Running sweep with optimization')
306 for i in range(self.N_sweeps_check - 1):
--> 307 self.sweep(meas_E_trunc=False)
308 max_trunc_err = self.sweep(meas_E_trunc=True)
309 max_E_trunc = np.max(self.E_trunc_list)
File ~/Desktop/numerical_spt_classification/code/venv/lib/python3.11/site-packages/tenpy/algorithms/dmrg.py:544, in DMRGEngine.sweep(self, optimize, meas_E_trunc)
538 """One 'sweep' of the algorithm.
539
540 Thin wrapper around :meth:`tenpy.algorithms.mps_common.Sweep.sweep` with one additional
541 parameter `meas_E_trunc` specifying whether to measure truncation energies.
542 """
543 self._meas_E_trunc = meas_E_trunc
--> 544 return super().sweep(optimize)
File ~/Desktop/numerical_spt_classification/code/venv/lib/python3.11/site-packages/tenpy/algorithms/mps_common.py:381, in Sweep.sweep(self, optimize)
379 update_data = self.update_local(theta, optimize=optimize)
380 self.update_env(**update_data)
--> 381 self.post_update_local(**update_data)
382 self.free_no_longer_needed_envs()
384 if optimize: # count optimization sweeps
File ~/Desktop/numerical_spt_classification/code/venv/lib/python3.11/site-packages/tenpy/algorithms/dmrg.py:632, in DMRGEngine.post_update_local(self, E0, age, N, ov_change, err, **update_data)
629 self.E_trunc_list.append(E_trunc)
631 if self.psi.bc == 'segment':
--> 632 self.update_segment_boundaries()
File ~/Desktop/numerical_spt_classification/code/venv/lib/python3.11/site-packages/tenpy/algorithms/dmrg.py:656, in DMRGEngine.update_segment_boundaries(self)
653 psi.set_B(j, A_new, form='A')
655 old_UL, old_VR = psi.segment_boundaries
--> 656 new_UL = npc.tensordot(old_UL, U, axes=['vR', 'vL'])
657 psi.segment_boundaries = (new_UL, old_VR)
659 for env in self._all_envs:
File ~/Desktop/numerical_spt_classification/code/venv/lib/python3.11/site-packages/tenpy/linalg/np_conserved.py:3476, in tensordot(a, b, axes)
3448 """Similar as ``np.tensordot`` but for :class:`Array`.
3449
3450 Builds the tensor product of `a` and `b` and sums over the specified axes.
(...)
3473 Returns a scalar in case of a full contraction.
3474 """
3475 # for details on the implementation, see _tensordot_worker.
-> 3476 a, b, axes = _tensordot_transpose_axes(a, b, axes)
3478 # optimize/check for special cases
3479 no_block = (a.stored_blocks == 0 or b.stored_blocks == 0) # result is zero
File ~/Desktop/numerical_spt_classification/code/venv/lib/python3.11/site-packages/tenpy/linalg/_npc_helper.pyx:1261, in tenpy.linalg._npc_helper._tensordot_transpose_axes()
AttributeError: 'NoneType' object has no attribute 'rank'
Python: Select all
class TransverseCluster(CouplingModel):
def __init__(self, model_params):
# Read out/set default parameters
name = "Cluster Ising model"
L = model_params.get('L', 2)
B = model_params.get('B', 0)
bc_MPS = model_params.get('bc_MPS', 'infinite')
# sites
site = SpinHalfSite(conserve=None)
# lattice
bc = 'periodic'
lat = Chain(L, site, bc=bc, bc_MPS=bc_MPS)
# initialize CouplingModel
CouplingModel.__init__(self, lat)
# add terms of the Hamiltonian
self.add_onsite(-B, 0, 'Sigmax')
self.add_multi_coupling(
-1,
[
('Sigmaz', -1, 0),
('Sigmax', 0, 0),
('Sigmaz', 1, 0),
]
)
# initialize H_MPO
MPOModel.__init__(self, lat, self.calc_H_MPO())
Python: Select all
File ~/Desktop/numerical_spt_classification/code/venv/lib/python3.11/site-packages/tenpy/networks/mpo.py:2192, in MPOEnvironment.test_sanity(self)
2190 def test_sanity(self):
2191 """Sanity check, raises ValueErrors, if something is wrong."""
-> 2192 assert (self.bra.finite == self.ket.finite == self.H.finite == self.finite)
2193 # check that the physical legs are contractable
2194 for b_s, H_s, k_s in zip(self.bra.sites, self.H.sites, self.ket.sites):
AssertionError:
Thanks in advance for any help provided!