Block implements the density matrix renormalization group (DMRG) algorithm for quantum chemistry.
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
README_Examples
btas
dmrg_tests
docs
genetic
include
modules fixed inconsistency in the spatial NPDM binary file format. Apr 21, 2017
molcas fixed inconsistency in the spatial NPDM binary file format. Apr 21, 2017
newmat10
pydmrg
.gitignore Fixed bug in warm-up with hf_occ = integral with symmetry Dec 25, 2014
BaseOperator.C
BaseOperator.h
CHANGELOG.md
CMakeLists.txt
CSFOverlapHelement.C
Coefficients.C
Doxyfile
IrrepSpace.C
IrrepSpace.h
IrrepVector.h
LICENSE.txt
MatrixBLAS.C
MatrixBLAS.h
ObjectMatrix.h
Operators.C
Operators.h
OverlapHelement.C
README.md
Schedule.C
SpinQuantum.C
SpinQuantum.h
SpinSpace.C Nonspin option is working now. The pdms are still not working for non… Jan 23, 2014
SpinSpace.h
StateInfo.C
StateInfo.h Fixed lots of small things so compiles with -Wall with clang++ and g++ Jun 25, 2016
Symmetry.C
Symmetry.h
blas_calls.h
couplingCoeffs.C
couplingCoeffs.h
csf.C Added the option of having open and closed orbitals and made the repo… Jan 22, 2015
csf.h
davidson.C
davidson.h
density.C
density.h Almost all the tests are running now except the NEVPT2 A16_matrix for… Aug 26, 2014
distribute.C
distribute.h
dmrg.C
dmrg_wrapper.h
fci.C
fciqmchelper.C
fciqmchelper.h
fiedler.C
fiedler.h
global.h
guess_wavefunction.C
guess_wavefunction.h
hfOccGenerator.C
initblocks.C
initblocks.h SC-NEVPT2 based on compressed MPS perturber functions. Pyscf is needed Jan 25, 2016
input.C
input.h
least_squares.C
least_squares.h forgot to add the header file for least squares Dec 19, 2012
linear.C
linear.h
main.C
makefile
new_anglib.C
new_anglib.h
nonAbelianGroup.h
op_components.C
op_components.h
operatorfunctions.C
operatorfunctions.h
operatorloops.h
opxop.C
opxop.h
orbstring.C Removed notice of GNU Public License Sep 11, 2012
orbstring.h
overlaptensor.h
pario.C
pario.h
readinput.C
renormalise.C
rotationmat.C
rotationmat.h
save_load_block.C
screen.C
screen.h
set_spinblock_components.C
slater.C replace all cout and cerr stream with new pout and perr; Sep 1, 2014
slater.h
solver.C
solver.h
spinblock.C
spinblock.h
sweep.C
sweep.h
sweep_mps.C
sweep_params.C Improve src code for print neatness and hierachy at 4 incremental lev… Jan 14, 2015
sweep_params.h
tensor_operator.h
timer.C
timer.h add total cpu timings across processors; add docs sections and fixes. Jul 20, 2015
wavefunction.C
wavefunction.h
wrapper.C
wrapper.h Removed a bug in excited state PT calculations. Also Bruillion-Wigner… Apr 4, 2015

README.md

BLOCK implements the density matrix renormalization group (DMRG) algorithm for quantum chemistry.

This version Block-1.1.1 is not maintained anymore. The DMRG code has been rewritten for better memory and computational efficiency. The project was moved to bitbucket and released as Block-1.5. Source code and manual of Block-1.5 can be found here.

New features

Version 1.5

  • Optimized memory usage and efficiency
  • Supported (OpenMP) threads and shared memory

Version 1.1 (alpha)

  • DMRG-CASSCF: close integration with PySCF (up to about 40 orbitals and 3000 basis functions)
  • DMRG-NEVPT2 (up to about 24 orbitals and 1200 basis functions with PySCF)
  • DMRG-NEVPT2 with compressed MPS perturber (up to about 30 orbitals and 1200 basis functions through PySCF)
  • 1, 2, 3, 4-particle density matrices
  • 1, 2-particle transition density matrices

FAQ

Should I update to Block-1.5 (stackblock)?

We highly recommend you to move to Block-1.5 for many reasons:

  • Bugfix. We fixed many bugs in Block-1.5. Calculations, especially NEVPT2, are more stable in Block-1.5.

  • Performance. Block-1.5 can be 1.5 to 5 times faster than Block-1.1. The speed up is significant for small systems.

  • Maintenance. Block-1.5 is the long-term project that we'll invest energy to maintain. We'll not spend time to fix problems that only exist in Block-1.1.

Where can I get Block-1.5?

You can download the source code or the binary executable from online manual. If you are using DMRG for chemistry problems, we recommend to use Block-1.5 with its interface in PySCF program. The Block programs in Molpro, ORCA and QChem are Block-1.1. We are working to port Block-1.5 program to these quantum chemistry packages.

Can I use the input of Block-1.1 in Block-1.5?

Yes. Input files (FCIDUMP and dmrg.conf) of Block-1.1 can be used in Block-1.5 without any changes. Block-1.5 provides new keywords num_thrds and memory to control the number of threads and the total memory to use.

num_thrds 8
memory, 40, g

Note these keywords are not recognized in Block-1.1 and they will cause Block-1.1 crashing.

Is wave-function format compatible in block-1.1 and block-1.5?

No. Block-1.1 and Block-1.5 have different data format for wave-function. You're not able to use wfn files of Block-1.1 to restart calculation in Block-1.5 and vice versa.

Why does my Block-1.5 crash for multiple threads while it works all right with Block-1.1 and single-thread Block-1.5?

It is mostly due to the memory size you specified in the input. In Block-1.5, operators are held in memory within the limits you specified in the input (or 2GB/proc). The memory is shared by all threads of the process. If you specify many threads (num_thrds keyword) in your calculation, you should increas the memory size accordingly.

How to cite Block

Block is distributed under the GNU GPL license which is reproduced in the file LICENSE. In addition, Block contains a full copy of the Newmat C++ matrix library by Robert Davies.

We would appreciate if you cite the following papers in publications resulting from the use of Block:

  • G. K.-L. Chan and M. Head-Gordon, J. Chem. Phys. 116, 4462 (2002),
  • G. K.-L. Chan, J. Chem. Phys. 120, 3172 (2004),
  • D. Ghosh, J. Hachmann, T. Yanai, and G. K.-L. Chan, J. Chem. Phys., 128, 144117 (2008),
  • S. Sharma and G. K-.L. Chan, J. Chem. Phys. 136, 124121 (2012).
  • S. Guo, M. A. Watson, W. Hu, Q. Sun, G. K.-L. Chan, J. Chem. Theory Comput. 12, 1583 (2016)

In addition, a useful list of DMRG references relevant to quantum chemistry can be found in the article above by Sharma and Chan.