Interface to CheMPS2 by S. Wouters

Code author: Sebastian Wouters

Section author: Lori A. Burns

Module: Keywords, PSI Variables, Samples

https://img.shields.io/badge/home-CheMPS2-5077AB.svg
https://img.shields.io/badge/docs-latest-5077AB.svg

Note

As of late June 2016, DMRG keywords in PSI4 have been realigned with those of the chemps2 executable, plus a “dmrg_” prefix. The only exceptions are the orbital space PSI4 keywords RESTRICTED_DOCC (formerly CheMPS2 used FROZEN_DOCC, contrary to its definition) and ACTIVE which are passed along to CheMPS2 keywords NOCC and NACT. A translation table is available.

Installation

Binary

  • https://img.shields.io/badge/Anaconda%20Cloud-1.7.1-5077AB.svg
  • CheMPS2 is available as a conda package for Linux and macOS (and Windows, through the Ubuntu shell).

  • If using the PSI4 binary, CheMPS2 has already been installed alongside.

  • If using PSI4 built from source, and anaconda or miniconda has already been installed (instructions at Quick Installation), CheMPS2 can be obtained through conda install chemps2. Then enable it as a feature with ENABLE_CheMPS2, hint its location with CMAKE_PREFIX_PATH, and rebuild PSI4 to detect CheMPS2 and activate dependent code.

  • To remove a conda installation, conda remove chemps2.

Source

  • https://img.shields.io/github/tag/SebWouters/chemps2.svg?maxAge=2592000
  • If using PSI4 built from source and you want CheMPS2 built from from source also, enable it as a feature with ENABLE_CheMPS2, and let the build system fetch and build it and activate dependent code.

Methods

Density matrix renormalization group capabilities of PSI4 through CheMPS2

name

calls method

Energy

Gradient

dmrg-ci

DMRG configuration interaction (CI)

RHF/ROHF

dmrg-scf

DMRG complete active space SCF (CASSCF)

RHF/ROHF

dmrg-caspt2

DMRG CAS with 2nd-order perturbation theory (CASPT2)

RHF/ROHF

DMRG Keywords

DMRG_CASPT2_CALC

Do calculate the DMRG-CASPT2 energy after the DMRGSCF calculations are done?

DMRG_CASPT2_IMAG

CASPT2 Imaginary shift

  • Type: double

  • Default: 0.0

DMRG_CASPT2_IPEA

CASPT2 IPEA shift

  • Type: double

  • Default: 0.0

DMRG_CASPT2_ORBS

Whether to calculate the DMRG-CASPT2 energy after the DMRGSCF calculations are done.

  • Type: string

  • Possible Values: PSEUDOCANONICAL, ACTIVE

  • Default: PSEUDOCANONICAL

DMRG_DIIS

Whether or not to use DIIS for DMRG.

DMRG_DIIS_WRITE

Whether or not to store the DIIS checkpoint on disk (convenient for restarting).

DMRG_EXCITATION

Which root is targeted: 0 means ground state, 1 first excited state, etc.

  • Type: integer

  • Default: 0

DMRG_IRREP

The DMRG wavefunction irrep uses the same conventions as PSI4. How convenient :-). Just to avoid confusion, it’s copied here. It can also be found on http://sebwouters.github.io/CheMPS2/doxygen/classCheMPS2_1_1Irreps.html . Symmetry Conventions Irrep Number & Name Group Number & Name 0 1 2 3 4 5 6 7 0: c1 A 1: ci Ag Au 2: c2 A B 3: cs A’ A’’ 4: d2 A B1 B2 B3 5: c2v A1 A2 B1 B2 6: c2h Ag Bg Au Bu 7: d2h Ag B1g B2g B3g Au B1u B2u B3u

  • Type: integer

  • Default: -1

DMRG_LOCAL_INIT

Whether to start the active space localization process from a random unitary matrix instead of a unit matrix.

DMRG_MOLDEN_WRITE

DMRG-CI or converged DMRG-SCF orbitals in molden format

DMRG_MPS_WRITE

Whether or not to create intermediary MPS checkpoints

DMRG_MULTIPLICITY

The DMRG wavefunction multiplicity in the form (2S+1)

  • Type: integer

  • Default: -1

DMRG_OPDM_AO_PRINT

Print out the density matrix in the AO basis

DMRG_PRINT_CORR

Whether or not to print the correlation functions after the DMRG calculation

DMRG_SCF_ACTIVE_SPACE

Which active space to use for DMRG calculations: –> input with SCF rotations (INPUT); –> natural orbitals (NO); –> localized and ordered orbitals (LOC)

  • Type: string

  • Possible Values: INPUT, NO, LOC

  • Default: INPUT

DMRG_SCF_DIIS_THR

When the update norm is smaller than this value DIIS starts.

  • Type: double

  • Default: 1e-2

DMRG_SCF_GRAD_THR

The density RMS convergence to stop an instruction during successive DMRG instructions

  • Type: double

  • Default: 1.e-6

DMRG_SCF_MAX_ITER

Maximum number of DMRG iterations

  • Type: integer

  • Default: 100

DMRG_SCF_STATE_AVG

Whether or not to use state-averaging for roots >=2 with DMRG-SCF.

DMRG_SWEEP_DVDSON_RTOL

The residual tolerances for the Davidson diagonalization during DMRG instructions

  • Type: array

  • Default: No Default

DMRG_SWEEP_ENERGY_CONV

The energy convergence to stop an instruction during successive DMRG instructions

  • Type: array

  • Default: No Default

DMRG_SWEEP_MAX_SWEEPS

The maximum number of sweeps to stop an instruction during successive DMRG instructions

  • Type: array

  • Default: No Default

DMRG_SWEEP_NOISE_PREFAC

The noise prefactors for successive DMRG instructions

  • Type: array

  • Default: No Default

DMRG_SWEEP_STATES

The number of reduced renormalized basis states to be retained during successive DMRG instructions

  • Type: array

  • Default: No Default

DMRG_UNITARY_WRITE

Whether or not to store the unitary on disk (convenient for restarting).

How to configure CheMPS2 for building Psi4

Role and Dependencies

  • Role — In PSI4, CheMPS2 is a library that provides additional quantum chemical capabilities (DMRG).

  • Downstream Dependencies — PSI4 (\(\Leftarrow\) optional) CheMPS2

  • Upstream Dependencies — CheMPS2 \(\Leftarrow\) BLAS/LAPACK, HDF5 \(\Leftarrow\) zlib

CMake Variables

  • ENABLE_CheMPS2 — CMake variable toggling whether Psi4 builds with CheMPS2

  • CMAKE_PREFIX_PATH — CMake list variable to specify where pre-built dependencies can be found. For CheMPS2, set to an installation directory containing include/chemps2/DMRG.h

  • CheMPS2_DIR — CMake variable to specify where pre-built CheMPS2 can be found. Set to installation directory containing share/cmake/CheMPS2/CheMPS2Config.cmake

  • CMAKE_DISABLE_FIND_PACKAGE_CheMPS2 — CMake variable to force internal build of CheMPS2 instead of detecting pre-built

  • CMAKE_INSIST_FIND_PACKAGE_CheMPS2 — CMake variable to force detecting pre-built CheMPS2 and not falling back on internal build

Examples

  1. Build bundled

>>> cmake -DENABLE_CheMPS2=ON
  1. Build without CheMPS2

>>> cmake
  1. Build bundled with specific HDF5

>>> cmake -DENABLE_CheMPS2=ON -DCMAKE_PREFIX_PATH=/path/to/hdf5
  1. Link against pre-built

>>> cmake -DENABLE_CheMPS2=ON -DCMAKE_PREFIX_PATH=/path/to/chemps2/root
>>> cmake -DENABLE_CheMPS2=ON -DCheMPS2_DIR=/path/to/chemps2/configdir
  1. Link against pre-built with specific HDF5

>>> cmake -DENABLE_CheMPS2=ON -DCMAKE_PREFIX_PATH="/path/to/chemps2/root;/path/to/hdf5/root"
  1. Build bundled despite pre-built being detectable

>>> cmake -DENABLE_CheMPS2=ON -DCMAKE_PREFIX_PATH=/path/to/unwanted/chemps2/root/and/wanted/other/dependencies/root -DCMAKE_DISABLE_FIND_PACKAGE_CheMPS2=ON

How to fix “plugin needed to handle lto object” when building CheMPS2

For building with GCC, errors involving unresolved symbols or a message “plugin needed to handle lto object” may indicate a failure of the interprocedural optimization. This can be resolved by passing full locations to gcc toolchain utilities to setup or cmake: -DCMAKE_RANLIB=/path/to/gcc-ranlib -DCMAKE_AR=/path/to/gcc-ar . Details at https://github.com/psi4/psi4/issues/414.