Hello,
I would like to diagonalize a quantum system of 16 sites, with two quantum numbers, Sz and Tz, each can take two values: 1/2 and -1/2.
I would also like to impose the constraint Sz_total=0 and Tz_total=0.
In this case, the Hilbert space size would be (16 choose 8)^2 / 16, where the division by 16 is due to translational symmetry. I assume that the amount of memory required to store the Lanczos vector would be (16 choose 8)^2 / 16 * 128 ~ 1.3GB. However, when I run the sparsediag for this system, it requires ~21GB, which exceeds my 8GB RAM. I guess it happens because the application tries to diagonalize all momentum blocks in parallel (1.3*16 ~ 21).
Is there a way to diagonalize each block seperately, so the application would not be using the virtual memory?
Another question related to memory usage reduction: The system's ground state does also have the property of SzTz_total = 0. This reduces the Hilbert space's size further (by a factor of ~2.6), however I could not find a way to implement this constraint, since it does not depend on a self standing quantum number but determined by the two others. Is there another way to take advantage of this constraint, nevertheless?
Thank you very much, Israel
System details:
Ubuntu 12.10 64bit Intel® Core™ i7-2600 CPU @ 3.40GHz × 8 Compiled with gcc and MKL 11.0 Update 3
comp-phys-alps-users@lists.phys.ethz.ch