supergrad.quantum_system.InteractingSystem.compute_energy_map

supergrad.quantum_system.InteractingSystem.compute_energy_map#

InteractingSystem.compute_energy_map(greedy_assign=True, enhanced_assign_data=None, return_eigvec=False) Array[source]#

Compute the energy of the whole system in the dressed indices, enumerating eigenenergies and eigenstates as j=0,1,2,… starting from the ground state. Assign results to map back to bare product state indices, for a Hilbert space composed of three subsystems TODO, specify tuples of the form (l,m,n) where l, m, n denote the excitation levels of each bare subsystem.

Noted we should calculate the matrices that permute the order of eigenvectors. The eigenproblem solver will sort the eigenvectors array by the eigenvalues, and one could get the “ascending” order. But we want to define a “tensor” order and make the eigenvectors array close to identity matrix(just like the coordinate array).

Parameters:
  • greedy_assign (bool) – if True, use greedy assignment mode TODO The greedy assignment mode ignores the issue “same state be assigned multiple times”, due to the weak coupling of subsystems.

  • enhanced_assign_data (array) – if None, do not use enhanced check mode. if 2d-array, use enhanced check mode, the column should be in the flat indices order of energy tensor. The enhanced check mode will construct a spin-chain in subspace and do one more assignment, thus the energy map will be more accurate for the computational basis.

  • return_eigvec (bool) – if True, return the eigenvectors of the system.