Interface to CheMPS2 by S. Wouters¶
Code author: Sebastian Wouters
Section author: Lori A. Burns
Module: Keywords, PSI Variables, Samples
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
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
Methods¶
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?
- Type: boolean
- Default: false
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_WRITE¶
Whether or not to store the DIIS checkpoint on disk (convenient for restarting).
- Type: boolean
- Default: true
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 or the unit matrix.
- Type: boolean
- Default: true
DMRG_MOLDEN_WRITE¶
DMRG-CI or converged DMRG-SCF orbitals in molden format
- Type: boolean
- Default: false
DMRG_MPS_WRITE¶
Whether or not to create intermediary MPS checkpoints
- Type: boolean
- Default: false
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
- Type: boolean
- Default: false
DMRG_PRINT_CORR¶
Whether or not to print the correlation functions after the DMRG calculation
- Type: boolean
- Default: false
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.
- Type: boolean
- Default: true
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).
- Type: boolean
- Default: true
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\) 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
Examples
- Build bundled
>>> cmake -DENABLE_CheMPS2=ON
- Build without CheMPS2
>>> cmake
- Build bundled with specific HDF5
>>> cmake -DENABLE_CheMPS2=ON -DCMAKE_PREFIX_PATH=/path/to/hdf5
- 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
- Link against pre-built with specific HDF5
>>> cmake -DENABLE_CheMPS2=ON -DCMAKE_PREFIX_PATH="/path/to/chemps2/root;/path/to/hdf5/root"
- 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.