FQHESphereJackGenerator

From diagham
Jump to navigation Jump to search

FQHESphereJackGenerator allows to generate decomposition of Jack polynomials on symmetric monomial basis or decomposition of Jack polynomial time Van Der Monde on the unnormalized Slater basis.

Basic usage

FQHESphereJackGenerator needs a text file that describes the polynomials including the number of particles (NbrParticles), the number of flux quanta (LzMax) and the root partition (ReferenceState). Such a text file looks like

   NbrParticles=8
   LzMax=14
   ReferenceState=1 0 1 0 1 0 1 0 1 0 1 0 1 0 1

write this file with the name laughlin_n_8_2s_14.dat and then run from the directory where you save this file

$PATHTODIAGHAM/build/FQHE/src/Programs/FQHEOnSphere/FQHESphereJackGenerator -a -2 -t bosons_unnormalized_haldane_laughlin_n_8_2s_14_lz_0.0.vec.txt --reference-file laughlin_n_8_2s_14.dat

$PATHTODIAGHAM should be replace by the path to the DiagHam directory. The -a option allows to set the alpha parameter of the Jack polynomial. Here it is set to -2 for the Laughlin state. It should be -3 for the Moore-Read state, -(k+1) for the Read-Rezayi k state, or -(k+1)/(r-1) for any (k,r) clustered state (using the bosonic value of r). The -t option sets the name of the file where the Jack polynomial decomposition will be stored. Using the -t option will write down the decomposition in a ASCII file, i.e. a file that can be open with any text editor. If you want to process the result with another DiagHam program, you should better store the result in binary mode using the -o option

$PATHTODIAGHAM/build/FQHE/src/Programs/FQHEOnSphere/FQHESphereJackGenerator -a -2 -o bosons_unnormalized_haldane_laughlin_n_8_2s_14_lz_0.0.vec --fermion --reference-file laughlin_n_8_2s_14.dat

The binary vectors can easily be manipulated using the tools provided with DiagHam. By default, the Jack generator expresses the result in the unnormalized basis and you convert it to the sphere geometry using FQHESphereUnnormalizeState. Actually, you can get directly the sphere geometry normalization by adding the -n option.

Fermionic counterparts of Jack polynomials (i.e. Jack polynomial times a Van der Monde determinant) can be computed in a similar way. The reference file should contains the fermionic root configuration, for example the Laughlin state at 1/3 should look like

   NbrParticles=8
   LzMax=21
   ReferenceState=1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1

then when running the Jack generator, you should add the --fermion option

$PATHTODIAGHAM/build/FQHE/src/Programs/FQHEOnSphere/FQHESphereJackGenerator -a -2 -o fermions_unnormalized_haldane_laughlin_n_8_2s_21_lz_0.0.vec --reference-file laughlin_n_8_2s_21.dat

assuming the reference file has been named laughlin_n_8_2s_21.dat. Notice that the alpha value is the same than the bosonic case.

Advanced usage

check singularity :

The recursion formula used in the Jack generator may sometimes lead to 0/0 (this is discussed in this paper). States such as Laughlin, Moore-Read or the Read Rezayi series,... are safe. For some other clustered (k,r) states, this might happen. In that case the coefficients in a Jack expansion might just be crap. That why for these kin of states, it's safe to check for singular coefficients using the --check-singularity option. For example, the k=3 r=4 clustered for 12 particles using the following reference file named nonunitary_3_4_n_12_2s_12.dat

   NbrParticles=12
   LzMax=12
   ReferenceState= 3 0 0 0 3 0 0 0 3 0 0 0 3


will leads to 6 singular coefficients

'$PATHTODIAGHAM/build/FQHE/src/Programs/FQHEOnSphere/FQHESphereJackGenerator --reference-file nonunitary_3_4_n_12_2s_12.dat -a -1.3333333333333333 -o test.vec --check-singularity

   memory requested for Hilbert space = 13Mo
   partitions that may lead to singular coefficients :
   [12,12,9,9,9,9,2,2,2,2,2,2] = 0 0 6 0 0 0 0 0 0 4 0 0 2
   [11,11,11,11,8,8,2,2,2,2,2,2] = 0 0 6 0 0 0 0 0 2 0 0 4 0
   [11,11,5,5,5,5,5,5,5,5,5,5] = 0 0 0 0 0 10 0 0 0 0 0 2 0
   [10,10,10,10,10,10,4,4,1,1,1,1] = 0 4 0 0 2 0 0 0 0 0 6 0 0
   [10,10,10,10,10,10,3,3,3,3] = 2 0 0 4 0 0 0 0 0 0 6 0 0
   [7,7,7,7,7,7,7,7,7,7,1,1] = 0 2 0 0 0 0 0 10 0 0 0 0 0


rational numbers

The Jack generator provides basic support of rational numbers. This allows to compute Jacks (only bosonic one, no huge mode) relying only on rational numbers. Typical usage is

$PATHTODIAGHAM/build/FQHE/src/Programs/FQHEOnSphere/FQHESphereJackGenerator --numerator-alpha -3 --denominator-alpha 2 --rational -t bosons_unnormalized_haldane_gaffnian_n_12_2s_15_lz_0.0.vec.txt --reference-file gaffnian_n_12_2s_15.dat

--rational option should be turned on. The alpha coefficient is given through its numerator (--numerator-alpha option) and its denominator (--denominator-alpha option). It should be notice that no test on integer overflow is done so this option should be used with caution. In case of a singular coefficient is obtained at some point of the calculation, the code will stop and only output the Jack coefficients that have been computed, filling the other with zeroes.

The --check-singularity can also be used in rational mode. In that case, the singular coefficients are detected without any numerical error.

By default, the precision of rational depends on the machine/OS integer type (32bits or 64bits). Beware that no test is done to check integer overflow. The option --use-longlong allows to use larger integer numbers. If the GMP support is available, the --use-longlong option is replaced by the --use-gmp option that allows to use rational with arbitrary precision.

Singular coefficients may be fixed using the --use-symbolic option. This mode is highly CPU and memory demanding and should only be used if singular coefficients are present. It also requires arbitrary precision rational numbers even for moderate system sizes.

Huge mode

In this mode, the Jack generator can handle Hilbert spaces that cannot fit into the computer memory or for Hilbert spaces dimension larger than 2^31.

create a text file describing the state (bosonic N=20 Moore-Read state)
   NbrParticles=20
   LzMax=18
   ReferenceState=2 0 2 0 2 0 2 0 2 0 2 0 2 0 2 0 2 0 2


compute and save the squeezed Hilbert space
time build/FQHE/src/Programs/FQHEOnSphere/FQHESphereJackGenerator -o bosons_unnormalized_haldane_pfaffian_n_20_2s_18_lz_0.0.vec -a -3 --reference-file pfaffian_n_20_2s_18.dat --symmetrized-basis --huge-basis --memory 1000 --file-size 1 --save-hilbert pfaffian_n_20_2s_18.hil
compute the state itself
time build/FQHE/src/Programs/FQHEOnSphere/FQHESphereJackGenerator -o bosons_unnormalized_haldane_pfaffian_n_20_2s_18_lz_0.0.vec -a -3 --huge-vector 2000 --reference-file pfaffian_n_20_2s_18.dat --symmetrized-basis --huge-basis --memory 1 --file-size 1 --load-hilbert pfaffian_n_20_2s_18.hil -S --processors 2 --huge-blocks 1000


Here is the typical output on a dual AMD Opteron 2376 with g++ 4.3.4

computing and saving the squeezed Hilbert space

total dimension = 386905330
total dimension = 386905330 (7798)
total requested disk space = 77 Mbytes splitted in 289 files
largest file = 865 KBytes (110780 elements)
disk storage is useless, keep everything in memory
Haldane space dimension = 193181910
final Hilbert space dimension 193181910
Nbr Saved states = 193181910

real 7m51.997s
user 7m45.777s
sys 0m3.788s

computing the state itself

TotalCount = 330236
Factorization ratio = 0.225442%
look up size 1048576
Hilbert space factorization done in 16.4077s
dimension = 193181910
using disk storage for the Hilbert space and output state, some options might be disabled
vector does not require temporary disk storage
number of precalculation blocks = 12102
183054853 / 193181910 (94%)

real 157m52.731s
user 230m30.528s
sys 10m10.810s