This program implements a v2DM solver for the DOCI N-representability constraints. Both the boundary point method and the potential reduction method have been implemented. Two orbital optimizer are available:
- A simulated annealing code (in the extern directory)
- Jacobi rotations based local minimalisatie
To build this, you need a C++11 compiler (GCC 4.8 or newer, Clang 3.3 or newer), the HDF5 libraries and the blas and lapack libraries. The Makefile is quite simple, adjust the compilers and header/libraries as needed for your system.
The program needs symmetry-adapted electron integrals from PSI4. You can extract them using a plugin found in the extern/mointegrals.cpp file.
Everything is documented with doxygen. Run make doc
to build the HTML docs.
Or read the docs online. If something
is unclear, do not hesitate to contact me.
In the directory example
, all the input files for the He dimer (interatomic distance is 10 Bohr)
can be found:
He2-integrals.dat
: This is the input file for PSI4 to generate the one- and two-electron integralsmo-ints-he2-cc-pvdz-010.00.h5
: the Hartree-Fock molecular orbitalsso-ints-he2-cc-pvdz-010.00.h5
: the integrals in the orthogonalized, symmetry-adapted basisunitary-mo-he2-cc-pvdz-010.00.h5
: the orthogonal transformation from the orthogonalized, symmetry-adapted basis to the Hartree-Fock molecular orbital.
You can run the v2DM-DOCI optimisation with:
../doci_bp -i so-ints-he2-cc-pvdz-010.00.h5 -u unitary-mo-he2-cc-pvdz-010.00.h -l
The will generate:
optimale-uni.h5
: the optimal basis transformationoptimal-ham.h5
: the one- and two-electron integrals in the optimal basisoptimal-rdm.h5
: the optimal 2DM
In the file output.txt
, the output of the optimisation is stored.
The code is available under the GPLv3 license.