Skip to content
/ Block Public
forked from sanshar/Block

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

License

Notifications You must be signed in to change notification settings

ssh2/Block

This branch is 25 commits behind sanshar/Block:master.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

5886caf · Mar 25, 2016
Feb 16, 2015
Feb 21, 2014
May 12, 2015
Feb 27, 2016
Jan 25, 2016
Jan 25, 2016
Mar 10, 2016
Jul 8, 2015
Feb 29, 2016
Apr 30, 2014
Dec 25, 2014
Feb 4, 2015
Jan 25, 2016
Feb 27, 2016
Mar 25, 2016
Nov 14, 2014
Feb 26, 2016
Apr 12, 2014
Jan 15, 2013
Dec 17, 2012
May 29, 2012
Jun 13, 2012
Sep 1, 2014
Aug 7, 2014
Jan 25, 2016
Jan 25, 2016
Jan 25, 2016
Apr 4, 2015
Feb 27, 2016
Sep 1, 2014
Jan 25, 2016
Jan 25, 2016
Jan 23, 2014
Apr 12, 2014
Jan 14, 2015
Jan 25, 2016
Feb 4, 2015
Dec 17, 2012
Nov 5, 2014
Jan 14, 2015
Oct 4, 2012
Jan 22, 2015
Jul 10, 2014
Jul 9, 2014
Jul 9, 2014
Jan 22, 2015
Aug 26, 2014
Sep 11, 2012
Sep 11, 2012
Jan 26, 2016
Feb 23, 2013
Nov 6, 2014
Feb 4, 2015
Jan 25, 2016
Apr 12, 2014
Apr 25, 2013
Jan 25, 2016
Jan 25, 2016
Aug 22, 2014
Jan 22, 2015
Jan 25, 2016
Jan 25, 2016
Jan 25, 2016
Jan 25, 2016
Sep 1, 2014
Dec 19, 2012
Feb 18, 2015
Feb 18, 2015
Sep 1, 2014
Feb 29, 2016
Sep 1, 2014
Oct 4, 2012
Sep 1, 2014
Jan 25, 2016
Jan 25, 2016
Jan 25, 2016
Jan 25, 2016
Sep 1, 2014
Jan 25, 2016
Jan 25, 2016
Sep 11, 2012
Sep 19, 2014
Jan 14, 2015
Feb 26, 2016
Feb 26, 2016
Jan 14, 2015
Jan 22, 2015
Feb 14, 2016
Apr 30, 2014
Jan 25, 2016
Jan 25, 2016
Jan 25, 2016
Jan 25, 2016
Sep 1, 2014
Sep 1, 2014
Feb 18, 2015
Feb 20, 2014
Jan 25, 2016
Jan 25, 2016
Feb 26, 2016
Jan 25, 2016
Jan 14, 2015
Jan 14, 2015
Feb 20, 2014
Jan 25, 2016
Feb 18, 2015
Jul 20, 2015
Jan 14, 2015
Jun 6, 2014
Apr 4, 2015
Apr 4, 2015

Repository files navigation

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

New features

  • 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

Build Block

1. Compile BLOCK

BLOCK requires BLAS, LAPACK and BOOST. MPI library is needed for distributed-memory parallel compilation. BLOCK is compiled using the makefile supplied in the distribution. The following customizations need to be made to the makefile placed in the main directory ./Block.

Choose compilers by specifying,

    CXX = g++  

For MPI-based parallel execution on distributed-memory machines,

    USE_MPI = yes
    MPICXX = mpicxx  

MPI library must be compiled using the same compiler as for compiling BLOCK. Intel compiler such as icpc is also supported with approriate compiling flags chosen automatically.

Please note that when choosing your compiler, either GNU or Intel, C++0x/C++11 standards must be appropriately supported, as BLOCK requires new features for some of the modules (eg, npdm, nevpt2, etc). Here are our suggested minimum GNU/Intel compiler versions in order for the compiling process to be successful:

  • GNU g++: 4.8 or newer,
  • or Intel icpc: at least 14.0.1 (2013 SP1 Update 1) or newer.

To enable MKL library,

    USE_MKL = yes

And supply MKL and BOOST libraries by giving the locations,

MKLLIB = /opt/intel/composer_xe_2013_sp1.0.080/mkl/lib/intel64/ 
MKLFLAGS = /opt/intel/composer_xe_2013_sp1.0.080/mkl/include

BOOSTLIB = /lib64/boost_1_55_0/lib/
BOOSTINCLUDE = /lib64/boost_1_55_0/include/

When the makefile is configured, run in the directory ./Block

    $./make

The successful compilation generates the executable block.spin_adapted, static and shared DMRG libraries libqcdmrg.a and libqcdmrg.so.

2. Test BLOCK

BLOCK can be tested by executing the script in the directory ./Block/dmrg_tests,

    $cd dmrg_tests
    $./runtest

The tests require Python to be installed on the system.

3. Run BLOCK

The standalone serial code can be executed running

    $block.spin_adapted input.dat > output.dat

input.dat is the input file and the output of the program is piped into the output file output.dat.

The MPI parallel mode can be called running

    $mpirun -np 4 block.spin_adapted input.dat > output.dat

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).

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

About

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

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C 58.3%
  • C++ 33.8%
  • HTML 3.9%
  • Python 2.3%
  • Makefile 1.6%
  • CMake 0.1%