CCCM crystallographic coupled cluster method

What's about?

CCCM is a high-order CCM (coupled cluster method) code for lattice spin systems at T=0 by Damian J. J. Farnell (DF). Historically, this code is based on "foundations" laid by Ray Bishop and John Parkinson (amongst others), and Chen Zeng's work in the 90's on the high-order code. This code has been exploited and pushed forward by Damian Farnell and Sven Krüger primarily. Indeed, the current incarnation of the CCM code is still being used and extended by Johannes Richter and his co-workers. Because Damians time is being increasingly concentrated on other topics Joerg Schulenburg (JS) did some improvements and necessary changes to the code and set up this webpage for distribution of the most recent code. If you have suggestions and code patches, send it to Joerg together with a description what it does (better), so he can include it in the official version.



check signature using gpg --verify ccmXXXX.asc


 --- please also look at the ChangeLog file at the tgz package ---

 - bounding=... in ccm-script removed (automatically computed)
 - set GAP=0 if DI is not converged
 - improve shift estimation for DI-GAP-code (EXPERIMENTAL=4)
   every 2nd GAP was bad for J1-J2 models
 - rewrite DI-GAP (power method, see wikipedia), making it more robust
 - add option to set start vector (--startx=0..., see setStartX in solve.c)
   sample: triangle.ccm sub-5-5 NR convergence
 - better TermCompression (minimum size computed at runtime, bitshift used)
   more compression by use of maxbits + bitshift, (cfg+term only once?)
   ex: 5*18bit+4bit.term+Xbit.factor05=94bit+X=12Byte instead of 16,24,32B
 - check number of different coefficients (for better compression)
   switch on by TermCompression+=2 (smaller TERMSIZE, up to 50% less memory,
   no precission loss, but save to disk may not work compressed! ToDo)
 - print warning, when bounding triangle is set, bounding=... is obsolete now
 - fix bug: LatticeSymmetries.number >= MAX_NUM_SYM
 - add option --symmetries=... to set num symmetries (use carefully!)
 - add option --expects=... to set max. num of computed expectation values
 - fix: accuracy 1e-8 instead 1e-10 for j1j2_square_Neel J2=0.2 (float used)
 - output Mag iterations if error grows (divergence)
 - add options --subm and --subn, overrides script m and n (more flexibility)
 - add option --mom (weight or momentum for direct iteration, macro removed) 
 - add options --increment --minimum --maximum for parameter range
   to have the advantage to use the same script file for different batch jobs
 - dont exit if bra-vector does not converge (useful for Delta scans)
 - add Data/j1j2_square_Coll_Ferromag.ccm (convergence checked, NR vs. DI)
 - add Data/*.txt files (documentation, remarks , datas, known samples)   

see ChangeLog in tgz-package


The documentation is available in the documentation-path. Also have an eye to the publication list.

Frequently asked questions (FAQ)

 Q: What about performance?
 A: Here are some results: 
  xxzSquare6-6 Oct04 (np=num_parallel_cpus, realtime,usertime,systime)
     np=2  PM-600MHz   21s,6s,0s + 28m,14m,0s       + 49s,14s,7s (old=slow)
                                                    + 24s,10s,1s (new=fast)
     np=4  PM-600MHz   20s,4s,0s + 16m, 4m,0s       + 30s, 5s,0s
     np=2  PM-600MHz   11s,4s,0s + 16m, 8m,0s       + 22s, 9s,1s
     np=1  PM-600MHz    4s,3s,0s + 16m,16m,0s       + 19s,17s,1s
     no_np PM-600MHz    3s,3s,0s + 16m,16m,0s       + 18s,17s,1s
     no_np PM-600MHz    3s,3s,0s + 16m,16m,0s       + 82s,76s,5s (no_collect)
     no_np PM-600MHz    3s,3s,0s + 12m06s     noDEBUG + static_arrays
     no_np PM-1200MHz   2s,2s,0s + 5m56s      noDEBUG + static_arrays
   Sep05: no_np Celeron 2GHz = 41s

   diagramm terms over configs

 Q: Are there some test models to check correctness of the code? 
 A: Yes, you can find them in the ../Data path.
  ### model  fundClusters bon1terms bond2terms D Eg M (Sep05)
  xxzCubic-6-6  181  838  53620  D= -1.0 Eg= -1.80360459 M= 0.42859590 P2.6=1400s
  kagome_j1j2-6 521 8163 458724  D=  0.0 Eg= -0.41827021 M= 0.27026674 P2.6=192s
  S=1/2-LC-14   931 43537 4205e3 D= -1.0 Eg= -0.44255049 M= 0.14240498 ca.2h
  S=1-chain-8-8 247 2466  56649  D= -1.0 Eg= -1.38346552 M= 0.53325176 P2.6=76s

(potential) Bugs

 - not known, please report (please try the latest version)