Skip to content

Commit

Permalink
Release 3.1.3
Browse files Browse the repository at this point in the history
  - Added support for the vDMRG[IP] method
  - Added support for the vDMRG[FEAST] method
  • Loading branch information
AlbertoBaiardi committed May 8, 2023
2 parents 4a0491e + 7f0940d commit e9770ed
Show file tree
Hide file tree
Showing 6 changed files with 132 additions and 105 deletions.
9 changes: 8 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,11 @@ build*/
my*
.vscode
**check*
**resu*
**resfile*
dmrg/doc/qcmaquis_manual.aux
dmrg/doc/qcmaquis_manual.bbl
dmrg/doc/qcmaquis_manual.blg
dmrg/doc/qcmaquis_manual.log
dmrg/doc/qcmaquis_manual.out
dmrg/doc/qcmaquis_manual.pdf
dmrg/doc/qcmaquis_manual.toc
88 changes: 74 additions & 14 deletions .gitlab-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,13 +10,15 @@ stages:
- buildFinal
- testFinal

# Conventional electronic-structure tests

build-electronic:
stage: buildBasic
tags:
- default_docker
script:
- mkdir buildElectronic && cd buildElectronic
- cmake -DQCMAQUIS_TESTS=ON -DBUILD_SYMMETRIES="TwoU1;TwoU1PG;SU2U1;SU2U1PG" ../dmrg
- cmake -DQCMAQUIS_TESTS=ON -DBUILD_SYMMETRIES="TwoU1;TwoU1PG;SU2U1;SU2U1PG" -DCMAKE_BUILD_TYPE=Release -DBUILD_DMRG_FEAST=ON -DBUILD_SRCAS=ON ../dmrg
- make -j2
artifacts:
paths:
Expand All @@ -31,7 +33,9 @@ testElectronic:
- default_docker
script:
- cd buildElectronic
- make test -j2
- make CTEST_OUTPUT_ON_FAILURE=1 test

# Relativistic electronic-structure tests

build-relativistic:
stage: buildAdvanced
Expand All @@ -40,7 +44,7 @@ build-relativistic:
- default_docker
script:
- mkdir buildRelativistic && cd buildRelativistic
- cmake -DQCMAQUIS_TESTS=ON -DBUILD_SYMMETRIES="TwoU1;TwoU1PG;SU2U1;SU2U1PG;U1DG" ../dmrg
- cmake -DQCMAQUIS_TESTS=ON -DBUILD_SYMMETRIES="TwoU1;TwoU1PG;SU2U1;SU2U1PG;U1DG" -DCMAKE_BUILD_TYPE=Release ../dmrg
- make -j2
artifacts:
paths:
Expand All @@ -55,41 +59,95 @@ testRelativistic:
- default_docker
script:
- cd buildRelativistic
- make test -j2
- make CTEST_OUTPUT_ON_FAILURE=1 test

# Non-electronic-structure tests

build-with-nu1:
buildPreBO:
stage: buildFinal
needs: ["testRelativistic"]
tags:
- default_docker
script:
- mkdir buildNU1 && cd buildNU1
- cmake -DQCMAQUIS_TESTS=ON -DBUILD_SYMMETRIES="TwoU1;TwoU1PG;SU2U1;SU2U1PG;U1DG;NU1" -DBUILD_PREBO=ON -DDMRG_NUMSYMM=5 ../dmrg
- cmake -DQCMAQUIS_TESTS=ON -DBUILD_SYMMETRIES="TwoU1;TwoU1PG;SU2U1;SU2U1PG;U1DG;NU1" -DCMAKE_BUILD_TYPE=Release -DBUILD_PREBO=ON -DDMRG_NUMSYMM=5 ../dmrg
- make -j2
artifacts:
paths:
- buildNU1/
expire_in: 6h
when: always

testNU1:
testPreBO:
stage: testFinal
needs: ["build-with-nu1"]
needs: ["buildPreBO"]
tags:
- default_docker
script:
- cd buildNU1
- make test -j4
- make CTEST_OUTPUT_ON_FAILURE=1 test

# Pipeline for the TD-DMRG case
buildVibrationalHamiltonians:
stage: buildFinal
needs: ["testRelativistic"]
tags:
- default_docker
script:
- mkdir buildVibrational && cd buildVibrational
- cmake -DQCMAQUIS_TESTS=ON -DBUILD_SYMMETRIES="NONE" -DCMAKE_BUILD_TYPE=Release -DBUILD_VIBRATIONAL=ON -DBUILD_DMRG_FEAST=ON -DBUILD_SRCAS=ON -DBUILD_MPS2CI=ON -DDMRG_ORDERNONE=12 ../dmrg
- make -j2
artifacts:
paths:
- buildVibrational/
expire_in: 6h
when: always

testVibrationalHamiltonians:
stage: testFinal
needs: ["buildVibrationalHamiltonians"]
tags:
- default_docker
script:
- cd buildVibrational
- make CTEST_OUTPUT_ON_FAILURE=1 test

buildVibronicHamiltonians:
stage: buildFinal
needs: ["testRelativistic"]
tags:
- default_docker
script:
- mkdir buildVibronic && cd buildVibronic
- cmake -DQCMAQUIS_TESTS=ON -DBUILD_SYMMETRIES="TwoU1PG;SU2U1PG;NU1;U1" -DCMAKE_BUILD_TYPE=Release -DBUILD_VIBRONIC=ON ../dmrg
- make -j2
artifacts:
paths:
- buildVibronic/
expire_in: 6h
when: always

testVibronicHamiltonians:
stage: testFinal
needs: ["buildVibronicHamiltonians"]
tags:
- default_docker
script:
- cd buildVibronic
- make CTEST_OUTPUT_ON_FAILURE=1 test

# +-----------------------------+
# Pipeline for the TD-DMRG case
# +-----------------------------+

# Tests TD-DMRG with Electronic Hamiltonians

build-TD-conventional:
stage: buildBasic
tags:
- default_docker
script:
- mkdir buildTDConventional && cd buildTDConventional
- cmake -DQCMAQUIS_TESTS=ON -DBUILD_SYMMETRIES="TwoU1;TwoU1PG;SU2U1;SU2U1PG" -DBUILD_DMRG_EVOLVE=ON ../dmrg
- cmake -DQCMAQUIS_TESTS=ON -DBUILD_SYMMETRIES="TwoU1;TwoU1PG;SU2U1;SU2U1PG" -DCMAKE_BUILD_TYPE=Release -DBUILD_DMRG_EVOLVE=ON ../dmrg
- make -j2
artifacts:
paths:
Expand All @@ -104,7 +162,9 @@ testTDConventional:
- default_docker
script:
- cd buildTDConventional
- make test -j2
- make CTEST_OUTPUT_ON_FAILURE=1 test

# Tests TD-DMRG with all Hamiltonians

build-TD-with-all-symmetries:
stage: buildAdvanced
Expand All @@ -113,7 +173,7 @@ build-TD-with-all-symmetries:
- default_docker
script:
- mkdir buildTDAllSymmetries && cd buildTDAllSymmetries
- cmake -DQCMAQUIS_TESTS=ON -DBUILD_SYMMETRIES="TwoU1;TwoU1PG;SU2U1;SU2U1PG;U1DG;NU1" -DBUILD_DMRG_EVOLVE=ON -DBUILD_PREBO=ON ../dmrg
- cmake -DQCMAQUIS_TESTS=ON -DBUILD_SYMMETRIES="TwoU1;TwoU1PG;SU2U1;SU2U1PG;U1DG;NU1;U1" -DCMAKE_BUILD_TYPE=Release -DBUILD_DMRG_EVOLVE=ON -DBUILD_PREBO=ON -DBUILD_VIBRONIC=ON ../dmrg
- make -j2
artifacts:
paths:
Expand All @@ -128,4 +188,4 @@ testTDAllSymmetries:
- default_docker
script:
- cd buildTDAllSymmetries
- make test -j2
- make CTEST_OUTPUT_ON_FAILURE=1 test
10 changes: 10 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,15 @@
# Changelog

## Release 3.1.3

- Added support for DMRG[IP], the inverse power iteration method applied to MPS wave functions.
- Added support for DMRG[FEAST] for large-scale excited-state DMRG calculations.

## Release 3.1.2

- Added support for vibrational Hamiltonian within the canonical quantization framework.
- Added support for excitonic and vibronic Hamiltonians.

## Release 3.1.1

- Fixed bug raising the "pre-existing term" message when constructing the MPO
Expand Down
86 changes: 0 additions & 86 deletions LICENSE

This file was deleted.

26 changes: 26 additions & 0 deletions LICENSE.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
Copyright ETH Zurich, Laboratory of Physical Chemistry, Reiher Group

Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:

1. Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.

2. Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation and/or
other materials provided with the distribution.

3. Neither the name of the copyright holder nor the names of its contributors
may be used to endorse or promote products derived from this software without
specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
OF THE POSSIBILITY OF SUCH DAMAGE.
18 changes: 14 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,9 @@ QCMaquis is an efficient C++11 implementation of the density matrix renormalizat
## Current Features:
- Optimization of spin-adapted SU(2) MPS wave functions with the DMRG algorithm
- Non-relativistic and scalar-relativistic quantum-chemical Hamiltonians
- Calculation of excited states
- Pre-Born--Oppenheimer Hamiltonian with multicomponent MPS including one-particle RDM and mutual information
- Vibrational calculation based on the Watson Hamiltonian
- Calculation of excited states with orthogonally-contrained DMRG, inverse-power iteration DMRG, and DMRG[FEAST]
- A tool set to analyze the MPS wave function and its quantum entanglement
- One-, two, three- and four-particle reduced density matrices
- One-, two- and three-particle reduced transition density matrices
Expand All @@ -15,7 +17,6 @@ QCMaquis is an efficient C++11 implementation of the density matrix renormalizat
- MPS state interaction (MPS-SI) for the calculation of spin-orbit coupling matrix elements, electronic and magnetic properties
- state-specific and quasi-degenerate (multi-state) DMRG-NEVPT2 calculations
- The current release version can be used together with SCINE autoCAS
- Pre-Born--Oppenheimer Hamiltonian with multicomponent MPS including one-particle RDM and mutual information

## QCMaquis compilation and installation
### Prerequisites:
Expand All @@ -41,10 +42,13 @@ where `<CMAKE_COMPILE_OPTIONS>` can be (optionally) one of the following:
### CMake compile options:
- `BUILD_MANUAL`: Compile and install the QCMaquis manual in PDF.
- `BUILD_OPENMOLCAS_INTERFACE`: Build and install the OpenMOLCAS Fortran interface.
- `TESTS`: Compile tests.
- `QCMAQUIS_TESTS`: Compile tests.
- `LAPACK_64_BIT`: Enable if you use a linear algebra library configured with 64-bit integers (ILP64).
- `BLAS_LAPACK_SELECTOR`: Set the vendor of the linear algebra library: `openblas`,`mkl_sequential`, `mkl_parallel`, `veclib` for Accelerate on Mac OS X, `auto` for autodetection and `manual` for setting the linking directories manually are supported. Default is autodetection, which usually does a good job.
- `BUILD_PREBO`: Build the pre-BO related model. It is mandatory to activate the `NU1` symmetry.
- `BUILD_PREBO`: Build the pre-BO related model. It is mandatory to activate the `NU1` symmetry.
- `BUILD_VIBRATIONAL`: Build the vibrational DMRG module. It is mandatory to activate the symmetry `NONE` for canonical quantization.
- `BUILD_VIBRONIC`: Buld the vibronic and excitonic DMRG modules. It is mandatory to activate the `U1` symmetry.
- `DMRG_ORDERNONE` Maximum order of integral terms for NONE symmetry for vibrational calculations. Integral files need to have #DMRG_ORDERNONE mode indices. Default is 6. If this flag is set to another number, certain tests will fail by construction.
- `BUILD_*`: Build (legacy) utility binaries to perform various operations with matrix product state (MPS) checkpoint files.

A more detailed installation guide can be found in Section 3.1 of our manual.
Expand All @@ -58,6 +62,7 @@ To install QCMaquis with the OpenMOLCAS interface, download OpenMOLCAS from the
## Documentation

A detailed installation guide and manual for QCMaquis (and its components) can be found in the `doc` subdirectory. Compile QCMaquis with the `BUILD_MANUAL` CMake option to obtain the documentation in the PDF format.
Note that two manuals are generated: `qcmaquis_manual.pdf`, which presents the OpenMolcas/QCMaquis interface, and `qcmaquis_manual_standalone.pdf`, which describes the functionalities of QCMaquis as a standalone software.

## Support

Expand All @@ -73,6 +78,11 @@ For reproducibility reasons, please cite, depending on the actual calculations y
- L. Freitag, S. Knecht, C. Angeli, M. Reiher, Multireference Perturbation Theory with Cholesky Decomposition for the Density Matrix Renormalization Group", J. Chem. Theory Comput., 2017, 13, 451. [DOI](https://doi.org/10.1021/acs.jctc.6b00778)
### MPS-SI:
- S. Knecht, S. Keller, J. Autschbach, M. Reiher, "A Nonorthogonal State-Interaction Approach for Matrix Product State Wave Functions", J. Chem. Theory Comput., 2016, 12, 5881. [DOI](https://doi.org/10.1021/acs.jctc.6b00889)
### Vibrational DMRG:
- A. Baiardi, C. J. Stein, M. Reiher, V. Barone, "Vibrational Density Matrix Renormalization Group", J. Chem. Theory Comput., 2017, 13, 3764. [DOI](https://doi.org/10.1021/acs.jctc.7b00329)
- N. Glaser, A. Baiardi, M. Reiher, "Tensor Network States for Vibrational Spectroscopy", in "Vibrational Dynamics of Molecules", 2022. [DOI](https://doi.org/10.1142/9789811237911_0003)
### Vibrational excited states with DMRG:
- A. Baiardi, A. K. Kelemen, M. Reiher, "Excited-state DMRG made simple with FEAST", J. Chem. Theory Comput., 2022, 18, 415. [DOI](https://doi.org/10.1021/acs.jctc.1c00984)

## QCMaquis and [ALPS](https://alps.comp-phys.org)
QCMaquis builds upon the ALPS MPS project. The ALPS MPS codes implement the DMRG algorithm for variational ground and low-lying excited state search as well as time evolution of arbitrary one- and two-dimensional models in a matrix-product-state representation. They have been developed at ETH Zurich by Michele Dolfi and Bela Bauer in the group of Matthias Troyer with contributions from Sebastian Keller and Alexandr Kosenkov and at the University of Geneva by Timothée Ewart and Adrian Kantian in the group of Thierry Giamarchi. For further information on the ALPS project, please visit https://alps.comp-phys.org and note the original ALPS MPS paper:
Expand Down

0 comments on commit e9770ed

Please sign in to comment.