mirror of
https://github.com/pfloos/quack
synced 2025-05-06 15:14:55 +02:00
new readme
This commit is contained in:
parent
5d4ae58cf2
commit
97eb2a393c
200
README.md
200
README.md
@ -1,150 +1,96 @@
|
|||||||
# QuAcK: an open-source software for emerging quantum electronic structure methods
|
|
||||||
|
|
||||||
<img src="logo/logo_quack.png" width="250">
|
# 🦆 QuAcK: Quantum Chemistry Prototyping Toolkit
|
||||||
|
|
||||||
**Contributors:**
|

|
||||||
- [Pierre-Francois Loos](https://pfloos.github.io/WEB_LOOS)
|

|
||||||
- [Anthony Scemama](https://scemama.github.io)
|

|
||||||
- [Enzo Monino](https://enzomonino.github.io)
|

|
||||||
- [Antoine Marie](https://antoine-marie.github.io)
|
|
||||||
- [Abdallah Ammar](https://scholar.google.com/citations?user=y437T5sAAAAJ&hl=en)
|
|
||||||
- [Mauricio Rodriguez-Mayorga](https://scholar.google.com/citations?user=OLGOgQgAAAAJ&hl=es)
|
|
||||||
- [Loris Burth](https://github.com/lburth)
|
|
||||||
|
|
||||||
# What is it?
|
QuAcK is an open-source, lightweight electronic structure program written in **Fortran 90**, developed at the [Laboratoire de Chimie et Physique Quantiques (LCPQ)](https://www.lcpq.ups-tlse.fr/) in Toulouse, France. Designed primarily for rapid prototyping of new ideas in quantum chemistry, QuAcK provides a flexible environment for testing novel methods before integrating them into larger-scale projects like the [Quantum Package](https://github.com/QuantumPackage/qp2).
|
||||||
|
|
||||||
**QuAcK** is a lightweight electronic structure program written in `Fortran 90`, developed at the [Laboratoire de Chimie et Physique Quantiques (LCPQ)](https://www.lcpq.ups-tlse.fr) in Toulouse, France. Originally designed as a platform for rapid prototyping of new ideas in quantum chemistry, QuAcK serves as a flexible and accessible environment for testing novel methods before integrating them more efficiently into larger-scale projects such as the [Quantum Package](https://quantumpackage.github.io/qp2/).
|
> ⚠️ **Note:** QuAcK is under active development. Users should be cautious and validate results, as the code may allow unconventional inputs to facilitate flexibility during prototyping.
|
||||||
|
|
||||||
Thanks to its compact and transparent codebase, QuAcK is particularly well-suited for experienced PhD students and postdoctoral researchers who are already familiar with electronic structure theory and want to quickly implement or explore new concepts. Written in a clean and relatively straightforward programming language, it provides an excellent entry point for those looking to dive into method development.
|
---
|
||||||
|
|
||||||
For beginners in the field or those with less programming experience, we recommend starting with [qcmath](https://github.com/LCPQ/qcmath/), a symbolic and numerical quantum chemistry toolkit built in [Mathematica](https://www.wolfram.com/mathematica/). qcmath is specifically designed to help newcomers explore and develop ideas without the complexity of full-fledged numerical implementations.
|
## 🚀 Features
|
||||||
|
|
||||||
QuAcK is under active and ongoing development, which means that bugs, inconsistencies, and incomplete features are to be expected. It is a tool made *by* experts *for* experts—users are expected to understand what they’re doing and to remain cautious when interpreting results. The code may allow questionable inputs or behavior *on purpose*, to encourage flexibility during prototyping—so always double-check your results and assumptions.
|
- **Rapid Prototyping:** Ideal for testing and developing new quantum chemistry methods.
|
||||||
|
- **Modular Design:** Easily integrate with other tools and libraries.
|
||||||
|
- **Educational Tool:** Serves as an excellent entry point for researchers familiar with electronic structure theory.
|
||||||
|
- **Integration with PySCF:** Utilizes [PySCF](https://github.com/pyscf/pyscf) for computing one- and two-electron integrals.
|
||||||
|
|
||||||
In short: use QuAcK at your own risk—but also to your advantage, if you're ready to experiment and explore.
|
---
|
||||||
|
|
||||||
# Installation guide
|
## 🛠️ Installation
|
||||||
The QuAcK software can be downloaded on GitHub as a Git repository
|
|
||||||
```
|
1. **Clone the Repository:**
|
||||||
git clone https://github.com/pfloos/QuAcK.git
|
|
||||||
|
```bash
|
||||||
|
git clone https://github.com/pfloos/QuAcK.git
|
||||||
|
```
|
||||||
|
|
||||||
|
2. **Set the `QUACK_ROOT` Environment Variable:**
|
||||||
|
|
||||||
|
```bash
|
||||||
|
export QUACK_ROOT=$HOME/Work/QuAcK
|
||||||
|
```
|
||||||
|
|
||||||
|
3. **Install PySCF:**
|
||||||
|
|
||||||
|
```bash
|
||||||
|
pip install pyscf
|
||||||
|
```
|
||||||
|
|
||||||
|
*PySCF is used for computing one- and two-electron integrals, which are then read by QuAcK. It's also possible to use other software for integral computations.*
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ⚡ Quick Start
|
||||||
|
|
||||||
|
Navigate to the QuAcK directory and run the main script:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd $QUACK_ROOT
|
||||||
|
python PyDuck.py -h
|
||||||
```
|
```
|
||||||
|
|
||||||
Then, one must define the variable `QUACK_ROOT`. For example,
|
**Usage:**
|
||||||
```
|
|
||||||
export QUACK_ROOT=$HOME/Work/QuAcK
|
```bash
|
||||||
```
|
usage: PyDuck.py [-h] -b BASIS [--bohr] [-c CHARGE] [--cartesian]
|
||||||
You must also install [PySCF](https://pyscf.org) (for example using `pip`)
|
[--print_2e] [--formatted_2e] [--mmap_2e] [--aosym_2e]
|
||||||
```
|
[-fc FROZEN_CORE] [-m MULTIPLICITY]
|
||||||
pip install pyscf
|
[--working_dir WORKING_DIR] -x XYZ
|
||||||
```
|
```
|
||||||
|
|
||||||
PySCF is used for the computation of one- and two-electron integrals (mainly) which are dumped in files and read by QuAcK.
|
**Options:**
|
||||||
Therefore, it is very easy to use other software to compute the integrals or to add other types of integrals.
|
|
||||||
|
|
||||||
# Quick start
|
- `-b, --basis BASIS`: Name of the basis set file in `$QUACK_ROOT/basis/`.
|
||||||
|
- `--bohr`: Specify if the XYZ file is in Bohr units (default is Angstrom).
|
||||||
|
- `-c, --charge CHARGE`: Total charge of the molecule (e.g., `m1` for -1).
|
||||||
|
- `-x, --xyz XYZ`: Path to the XYZ file containing molecular geometry.
|
||||||
|
- Additional options available; use `-h` for full list.
|
||||||
|
|
||||||
```
|
---
|
||||||
~ 💩 % cd $QUACK_ROOT
|
|
||||||
QuAcK 💩 % python PyDuck.py -h
|
|
||||||
usage: PyDuck.py [-h] -b BASIS [--bohr] [-c CHARGE] [--cartesian] [--print_2e] [--formatted_2e] [--mmap_2e] [--aosym_2e] [-fc FROZEN_CORE]
|
|
||||||
[-m MULTIPLICITY] [--working_dir WORKING_DIR] -x XYZ
|
|
||||||
|
|
||||||
This script is the main script of QuAcK, it is used to run the calculation. If $QUACK_ROOT is not set, $QUACK_ROOT is replaces by the current
|
## 👥 Contributors
|
||||||
directory.
|
|
||||||
|
|
||||||
options:
|
- [Pierre-François Loos](https://github.com/pfloos)
|
||||||
-h, --help show this help message and exit
|
- [Anthony Scemama](https://github.com/scemama)
|
||||||
-b, --basis BASIS Name of the file containing the basis set information in the $QUACK_ROOT/basis/ directory
|
- [Enzo Monino](https://github.com/enzomonino)
|
||||||
--bohr By default QuAcK assumes that the xyz files are in Angstrom. Add this argument if your xyz file is in Bohr.
|
- [Antoine Marie](https://github.com/antoine-marie)
|
||||||
-c, --charge CHARGE Total charge of the molecule. Specify negative charges with "m" instead of the minus sign, for example m1 instead of -1.
|
- [Abdallah Ammar](https://scholar.google.com)
|
||||||
Default is 0
|
- [Mauricio Rodriguez-Mayorga](https://scholar.google.com)
|
||||||
--cartesian Add this option if you want to use cartesian basis functions.
|
- [Loris Burth](https://github.com/lorisburth)
|
||||||
--print_2e If True, print ERIs to disk.
|
|
||||||
--formatted_2e Add this option if you want to print formatted ERIs.
|
|
||||||
--mmap_2e If True, avoid using DRAM when generating ERIs.
|
|
||||||
--aosym_2e If True, use 8-fold symmetry in ERIs.
|
|
||||||
-fc, --frozen_core FROZEN_CORE
|
|
||||||
Freeze core orbitals. Default is false
|
|
||||||
-m, --multiplicity MULTIPLICITY
|
|
||||||
Spin multiplicity. Default is 1 (singlet)
|
|
||||||
--working_dir WORKING_DIR
|
|
||||||
Set a working directory to run the calculation.
|
|
||||||
-x, --xyz XYZ Name of the file containing the nuclear coordinates in xyz format in the $QUACK_ROOT/mol/ directory without the .xyz
|
|
||||||
extension
|
|
||||||
```
|
|
||||||
|
|
||||||
The two most important files are:
|
---
|
||||||
- `$QUACK_ROOT/input/methods` that gathers the methods you want to use.
|
|
||||||
- `$QUACK_ROOT/input/options` that gathers the different options associated these methods.
|
|
||||||
|
|
||||||
Copy the files `methods.default` and `options.default` to `methods` and `options`, respectively.
|
## 📄 License
|
||||||
```
|
|
||||||
cp $QUACK_ROOT/input/methods.default $QUACK_ROOT/input/methods
|
|
||||||
cp $QUACK_ROOT/input/options.default $QUACK_ROOT/input/options
|
|
||||||
```
|
|
||||||
You can then edit these files to run the methods you'd like (by replacing `F` with `T`) with specific options.
|
|
||||||
These files look like this
|
|
||||||
```
|
|
||||||
QuAcK 💩 % cat input/methods
|
|
||||||
# RHF UHF GHF ROHF HFB
|
|
||||||
F F F F F
|
|
||||||
# MP2 MP3
|
|
||||||
F F
|
|
||||||
# CCD pCCD DCD CCSD CCSD(T)
|
|
||||||
F F F F F
|
|
||||||
# drCCD rCCD crCCD lCCD
|
|
||||||
F F F F
|
|
||||||
# CIS CIS(D) CID CISD FCI
|
|
||||||
F F F F F
|
|
||||||
# phRPA phRPAx crRPA ppRPA
|
|
||||||
F F F F
|
|
||||||
# G0F2 evGF2 qsGF2 ufGF2 G0F3 evGF3
|
|
||||||
F F F F F F
|
|
||||||
# G0W0 evGW qsGW ufG0W0 ufGW
|
|
||||||
F F F F F
|
|
||||||
# G0T0pp evGTpp qsGTpp ufG0T0pp
|
|
||||||
F F F F
|
|
||||||
# G0T0eh evGTeh qsGTeh
|
|
||||||
F F F
|
|
||||||
# Parquet
|
|
||||||
F
|
|
||||||
# Rtest Utest Gtest
|
|
||||||
F F F
|
|
||||||
```
|
|
||||||
and
|
|
||||||
```
|
|
||||||
QuAcK 💩 % cat input/options
|
|
||||||
# HF: maxSCF thresh DIIS guess mix shift stab search
|
|
||||||
256 0.00001 5 1 0.0 0.0 F F
|
|
||||||
# MP: reg
|
|
||||||
F
|
|
||||||
# CC: maxSCF thresh DIIS
|
|
||||||
64 0.00001 5
|
|
||||||
# LR: TDA singlet triplet
|
|
||||||
F T T
|
|
||||||
# GF: maxSCF thresh DIIS lin eta renorm reg
|
|
||||||
256 0.00001 5 F 0.0 0 F
|
|
||||||
# GW: maxSCF thresh DIIS lin eta TDA_W reg
|
|
||||||
256 0.00001 5 F 0.0 F F
|
|
||||||
# GT: maxSCF thresh DIIS lin eta TDA_T reg
|
|
||||||
256 0.00001 5 F 0.0 F F
|
|
||||||
# ACFDT: AC Kx XBS
|
|
||||||
F F T
|
|
||||||
# BSE: phBSE phBSE2 ppBSE dBSE dTDA
|
|
||||||
F F F F T
|
|
||||||
# HFB: temperature sigma chem_pot_HF restart_HFB
|
|
||||||
0.05 1.00 T F
|
|
||||||
# Parquet: TDAeh TDApp max_it_1b conv_1b max_it_2b conv_2b DIIS_1b DIIS_2b lin reg
|
|
||||||
T T 10 0.00001 10 0.00001 2 2 T 100.0
|
|
||||||
```
|
|
||||||
|
|
||||||
For example, if you want to run a calculation on water using the cc-pvdz basis set:
|
QuAcK is licensed under the [GNU General Public License v3.0](https://www.gnu.org/licenses/gpl-3.0.en.html).
|
||||||
```
|
|
||||||
QuAcK 💩 % python PyDuck.py -x water -b cc-pvdz
|
|
||||||
```
|
|
||||||
|
|
||||||
QuAcK runs calculations in the `QUACK_ROOT` directory which is quite unusual but it also use the `--working_dir` option to run calculations elsewhere.
|
---
|
||||||
|
|
||||||
<img src="https://lcpq.github.io/PTEROSOR/img/ERC.png" width="200" />
|
## 📫 Contact
|
||||||
|
|
||||||
QuAcK is supported by the [PTEROSOR](https://lcpq.github.io/PTEROSOR/) project that has received funding from the European Research Council (ERC) under the European Union’s Horizon 2020 research and innovation programme (Grant agreement No. 863481).
|
For questions or contributions, please open an issue or submit a pull request on the [GitHub repository](https://github.com/pfloos/QuAcK).
|
||||||
|
@ -74,7 +74,7 @@ subroutine RGF2_self_energy(eta,nBas,nC,nO,nV,nR,e,ERI,Ec,SigC,Z)
|
|||||||
|
|
||||||
Z(:) = 1d0/(1d0 - Z(:))
|
Z(:) = 1d0/(1d0 - Z(:))
|
||||||
|
|
||||||
! Compute MP2 correlation energy
|
! Compute correlation energy
|
||||||
|
|
||||||
Ec = 0d0
|
Ec = 0d0
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user