J.-S. Caux e7dd24d337 Clean up sources up to (before) src/SCAN. | 6 years ago | |
---|---|---|
bin | 6 years ago | |
include | 6 years ago | |
lib | 6 years ago | |
obj | 6 years ago | |
src | 6 years ago | |
.gitignore | 6 years ago | |
ABACUS.org | 6 years ago | |
Makefile | 6 years ago | |
README.md | 6 years ago |
Copyright © J.-S. Caux.
ABACUS is a general set of algorithms for dealing with Bethe Ansatz-solvable systems including:
The principal purposes of ABACUS are:
From the base directory, simply run
$ make
This will produce all executables, together with a library ABACUS_[vn]
where vn is of the form [digit][character].
State_Label
s.Antoine Klauser provided functions for computing neighbour-operator-product matrix elements in XXX: ln_Szz_ME
, ln_Szm_p_Smz_ME
and ln_Smm_ME
.
Miłosz Panfil contributed to code to help in the calculation of finite-temperature correlations of Lieb-Liniger.
Jacopo De Nardis contributed code for the ln_g2_ME
function for Lieb-Liniger.
Teun Zwart has given much useful advice concerning C++ code organization.
Development of ABACUS started around 2004 and has known an embarrassingly large number of versions.
Here under are some notes on major versions and overhauls of the codebase.
[started 2015 02 20] [published 2015 04 04]
Building up on ++G_7.
Objectives:
facilitate use of OpenMP, by removing the recursive aspect of descending. DONE.
improve memory use. DONE.
Replace in-memory Scan_Thread_Set
by on-disk Scan_Thread_Data
.
Uses Scan_Thread
structure.
Features:
Scan_Info
’s Nfull
now contains the sub-Hilbert space dimension (for spin chains; type == double
)General_Scan
, containing info about expected data value and actually obtained onewtime()
.Notes:
[published 2015 01 17]
Building up on ++G_6.
Scan_Thread_List
replaced by Scan_Thread_Set
(to optimize performance and threads storage)Works well for LiebLin, including at finite T.
TODO:
AveragingState
)[started 2015 01]
Simple scanning: iK
stepped up, iK
stepped down (from ++G_5).
Fixed momentum scanning is thus implemented.
[started 2014 12 11] [abandoned 2015 01, except for version 5.0 (great for GS of LiebLin)]
Fundamental rewriting of scanning protocol.
Version 5.0 works very well for ground state correlations of Lieb-Liniger. Heis: still bugged.
[started 2014 12 08] [abandoned 2014 12 11]
Nontrivial bug: descending with inner and outer skeletons does not always preserve number of p-h excitations. Fatal for large c in LiebLin.
TODO:
[started 2014 11 10] [closed 2014 12 08]
lambdaoc
, to make rescaling lambda/c explicit[closed 2014 11 10] [2013 09 20]
[2013 09 06]
Changed parallel version for Bose:
Prepare
, Run
and Wrapup
into separate executablesfilenamesuffix
argument to parallel functionsNew labelling and descending implemented for arbitrary states with strings, e.g. spin chains.
Descendents for an arbitrary state are now generated according to the following logic.
TO DO: Include string deviation value in Bethe_State objects and in RAW files. Form factors are always computed.
[2013 08 25] Changed sum rules for LiebLin density-density: now using f-sumrule from iKmin to iKmax.
Notable changes from ABACUS++:
The state labelling is now done with a single string
label, detailing the base, nr of particle-hole excitations (as compared to a reference scan state) and Ix2
changes. The number of particle-hole excitations is therefore not limited anymore, and (for LiebLin) there is no upper momentum limit. See the src/State_Label.cc
file for the implementation details.
The state scanning procedure (i.e. the descendents logic) is now implemented solely at the level of the quantum numbers, following a recursive logic in which excitations are created at the right, then left Fermi boundary and allowed to propagate deeper outside/inside as the tree is climbed.
Since the labelling and descending are now completely general, dynamical correlations not only on ground states but also on arbitrary excited states can be computed efficiently. This thus allows to deal with finite temperature correlations.
Important conventions:
[in development][abandoned]
Scanning over ensembles.
Changed labels slightly, to avoid identifying empty string with integer 0. All labels with at least one excitation are now strictly nonempty.
[published 1 Dec 2011]
Optimization of runtime memory use and of output files sizes.
Labels: introduction of compressed labels (used in raw and thr files).
Removed conv boolean from raw file (all states in this file have converged).
Threads: removed omega and iK (changed General_Scan
accordingly), use compressed labels.
Scanning function: it’s now possible to give a default file name when invoking
General_Scan
(and thus Scan_Bose
, etc). This is done to avoid stupidly long file
names when calculating correlators over AveragingState
s which are far from
the ground state.
[published 21 Nov 2011]
The scanning is now also done over the hole positions.
Upon the creation of a particle-hole, only hole positions at the edges of
blocks of contiguous Ix2
in OriginState
are used.
The holes are then scanned moving towards the center of the blocks.
There are now thus 3 types of scanning: 0: over holes 1: over particles 2: adding a p-h pair
[published 4 Nov 2011]
Introduced two types of threads, separating scanning over fixed particle-hole numbers and adding a p-h.
Modification to the labeling logic:
states are now always labeled using the AveragingState’s quantum numbers,
even if their bases are different. The form of the State_Label
is thus changed.
[published 1 Nov 2011]
New, simpler logic for descendents: the hole positions are scanned immediately upon creation of a new particle-hole pair; the hole positions are then kept fixed in subsequent descending.
Problems:
[in progress][abandoned]
Attempt at implementing fixed-momentum-based scanning.
[published 23 June 2011]
First version of new setup and logic for ABACUS. Implementation of all basic new ideas for state labelling and descending.
Earlier version of ABACUS are not documented here. The whole history is available in J.-S. Caux’s private backfiles.