10
0
mirror of https://github.com/LCPQ/quantum_package synced 2024-06-02 11:25:26 +02:00
This commit is contained in:
Anthony Scemama 2018-11-12 20:09:50 +01:00
parent c4ceb53b20
commit 487d538083
113 changed files with 2389 additions and 544 deletions

213
INSTALL.rst Normal file
View File

@ -0,0 +1,213 @@
============
Installation
============
Before anything, go into your :file:`quantum_package` directory and run
.. code-block:: bash
./configure
This script will create the :file:`quantum_package.rc` bash script, which
sets all the environment variables required for the normal operation of the
*Quantum Package*.
Running this script will also tell you which external dependencies need to be
installed.
Then, source the :file:`quantum_package.rc` file in your current shell before
installing the dependencies.
Requirements
============
- Linux OS
- Fortran compiler : GNU Fortran, Intel Fortran or IBM XL Fortran
- `GNU make`_
- `Autoconf`_
- `Python`_ > 2.6
- |IRPF90| : Fortran code generator
- |EZFIO| : Easy Fortran Input/Output library generator
- |BLAS| and |LAPACK|
- `EMSL_Basis_Set_Exchange_Local`_ : Local copy of the data contained in the
`EMSL Basis Set Exchange website <https://bse.pnl.gov/bse/portal>`_
- `Zlib`_
- `GNU Patch`_
- |ZeroMQ| : networking library
- |OCaml| compiler with |OPAM| package manager
- |Ninja| : a parallel build system
When all the dependencies have been installed, go into the config directory,
and copy the configuration file that corresponds to your architecture. Modify
it if needed, and run :command:`configure` with :option:`configure -c`.
.. code-block:: bash
cp ./config/gfortran.example config/gfortran.cfg
./configure -c config/gfortran.cfg
Help for installing external dependencies
=========================================
Before doing anything below, try to install the packages with your package manager
(:command:`apt`, :command:`yum`, etc)
Ninja
-----
*Ninja* is a build system (like GNU make), with a focus on speed.
* Download the latest binary version of Ninja
here : `<https://github.com/ninja-build/ninja/releases/latest>`_
* Unzip the ninja-linux.zip file, and move the ninja binary into
the :file:`${QP_ROOT}/bin` directory.
IRPF90
------
*IRPF90* is a Fortran code generator for programming using the Implicit Reference
to Parameters (IRP) method.
* Download the latest version of IRPF90
here : `<https://github.com/scemama/irpf90/releases/latest>`_ and move
the downloaded archive in the :file:`"$QP_ROOT"/external` directory
* Extract the archive and go into the :file:`irpf90-*` directory to run
:command:`make``
* Create scripts to facilitate the access to :command:`irpf90` and
:command:`irpman` as follows
.. code-block:: bash
for i in irpf90 irpman irpf90_indent
do
cat << EOF > "$QP_ROOT"/bin/$i
#!/bin/sh
exec $PWD/bin/$i \$@
EOF
chmod +x "$QP_ROOT"/bin/$i
done
ZeroMQ and its Fortran binding
------------------------------
*ZeroMQ* is a high-performance asynchronous messaging library.
* Download the latest stable version of ZeroMQ
here : `<https://github.com/zeromq/libzmq/releases/latest>`_ and move the
downloaded archive in the :file:`"$QP_ROOT"/external` directory
* Extract the archive, go into the :file:`zeromq-*` directory and run
the following commands
.. code-block:: bash
./configure --prefix="$QP_ROOT" --without-libsodium
make
make install
* Download the Fortran binding
here : `<https://github.com/zeromq/f77_zmq/releases/latest>`_ and move
the downloaded archive in the :file:`"$QP_ROOT"/external` directory
* Extract the archive, go into the :file:`f77_zmq-*` directory and run
the following commands
.. code-block:: bash
export ZMQ_H="$QP_ROOT"/include/zmq.h
make
cp libf77zmq.a "${QP_ROOT}"/lib
cp libf77zmq.so "${QP_ROOT}"/lib
* Copy the :file:`f77_zmq_free.h` file in the ``ZMQ`` module as follows:
.. code-block:: bash
cp f77_zmq_free.h "${QP_ROOT}"/src/ZMQ/f77_zmq.h
OCaml
-----
*OCaml* is a general purpose programming language with an emphasis on expressiveness and safety.
* Download the installer of the OPAM package manager here : `<//raw.githubusercontent.com/ocaml/opam/master/shell/install.sh>`_
* Copy it as :file:`"$QP_ROOT"/bin/opam`
* Install the OCaml compiler
.. code-block:: bash
opam init --root="$QP_ROOT"/external/opam --comp=4.06.0
eval `"$QP_ROOT"/bin/opam config env --root="$QP_ROOT"/external/opam`
* Install the required external OCaml libraries
.. code-block:: bash
opam install cryptokit zmq core sexplib ppx_sexp_conv ppx_deriving
EZFIO
-----
*EZFIO* is the Easy Fortran Input/Output library generator.
* Download EZFIO here : `<https://github.com/scemama/EZFIO/releases/latest>`_ and move
the downloaded archive in the :file:`"$QP_ROOT"/external` directory
* Extract the archive, and rename it as :file:`"$QP_ROOT"/external/ezfio`
EMSL Basis Sets
---------------
*EMSL_Basis_Set_Exchange_Local* is a tool which provides all basis sets of the
`EMSL web site <https://bse.pnl.gov/bse/portal>`_ off-line.
* Download the archive
here : `<https://github.com/LCPQ/EMSL_Basis_Set_Exchange_Local/releases/latest>`_
and move the downloaded archive in the :file:`"$QP_ROOT"/external` directory
* Extract the archive, and rename it as :file:`"$QP_ROOT"/external/emsl`.
Docopt
------
*Docopt* is a Python package defining a command-line interface description language.
If you have *pip*, you can do
.. code-block:: bash
pip2 install docopt
Otherwise,
* Download the archive here : `<https://github.com/docopt/docopt/releases/tag/0.6.2>`_
* Extract the archive
* Copy :file:`docopt-0.6.2/docopt.py` in the :file:`${QP_ROOT}/scripts` directory

View File

@ -16,4 +16,5 @@ help:
# Catch-all target: route all unknown targets to Sphinx using the new
# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS).
%: Makefile
@$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
cd source ; python2 auto_generate.py
@$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)

View File

@ -41,6 +41,8 @@
.. |SLURM| replace:: `SLURM`_
.. |ZeroMQ| replace:: `ZeroMQ`_
.. |AO| replace:: :abbr:`AO (Atomic Orbital)`
.. |AOs| replace:: :abbr:`AOs (Atomic Orbitals)`
.. |CAS| replace:: :abbr:`CAS (Complete Active Space)`
.. |CAS-SD| replace:: :abbr:`CAS-SD (Complete Active Space plus all Singles and Doubles)`
.. |CCD| replace:: :abbr:`CCD (Coupled Cluster with Double Excitations)`
@ -50,6 +52,21 @@
.. |CI| replace:: :abbr:`CI (Configuration Interaction)`
.. |CISD| replace:: :abbr:`CISD (Configuration Interaction with Single and Double Excitations)`
.. |CIS| replace:: :abbr:`CIS (Configuration Interaction with Single Excitations)`
.. |DFT| replace:: :abbr:`DFT (Density Functional Theory)`
.. |DDCI| replace:: :abbr:`DDCI (Difference Dedicated Configuration Interaction)`
.. |DIIS| replace:: :abbr:`DIIS (Direct Inversion of the Iterative Subspace)`
.. |FCI| replace:: :abbr:`FCI (Full Configuration Interaction)`
.. |HF| replace:: :abbr:`HF (Hartree-Fock)`
.. |MO| replace:: :abbr:`MO (Molecular Orbital)`
.. |MOs| replace:: :abbr:`MOs (Molecular Orbitals)`
.. |MP2| replace:: :abbr:`MP2 (Moller-Plesset second order perturbative correction)`
.. |MPI| replace:: :abbr:`MPI (Message Passing Interface)`
.. |MRCC| replace:: :abbr:`MRCC (Multi-Reference Coupled Cluster)`
.. |MRPT| replace:: :abbr:`MRPT (Multi-Reference Perturbation Theory)`
.. |PT2| replace:: :abbr:`PT2 (Second order perturbative correction)`
.. |SCF| replace:: :abbr:`SCF (Self Consistent Field)`
.. |H| replace:: :math:`\hat H`
.. |Psi| replace:: :math:`|\Psi \rangle`
.. |S^2| replace:: :math:`\widehat{S^2}`

62
docs/source/auto_generate.py Executable file
View File

@ -0,0 +1,62 @@
#!/bin/env python2
from __future__ import print_function
import os
import ConfigParser
def generate(abs_module):
MODULE = os.path.split(abs_module)[-1]
module = MODULE.lower()
if module == "dummy":
return
with open( os.path.join(abs_module,'README.rst'), 'r' ) as f:
readme = f.read()
rst = [
".. _%s:"%(module), "",
".. program:: %s"%(module), "",
".. default-role:: option", "",
readme, "",
]
EZFIO = os.path.join(abs_module,'EZFIO.cfg')
if os.path.exists(EZFIO):
rst += [ "", "EZFIO parameters", "----------------", "" ]
config_file = ConfigParser.ConfigParser()
with open(EZFIO,'r') as f:
config_file.readfp(f)
for section in config_file.sections():
doc = config_file.get(section,"doc")
doc = " " + doc.replace("\n","\n\n ")+"\n"
try:
default = config_file.get(section,"default")
default = " " + "Default: %s\n"%default
except:
default = ""
rst += [ ".. option:: %s\n"%(section), doc, default ]
rst_file = os.path.join('modules',module+".rst")
with open(rst_file,'w') as f:
f.write("\n".join(rst))
def main():
if "QP_ROOT" in os.environ:
QP_ROOT=os.environ["QP_ROOT"]
else:
QP_ROOT="../../../"
SRC = os.path.join(QP_ROOT, "src")
for abs_module in os.listdir(SRC):
abs_module = os.path.join(SRC,abs_module)
if os.path.exists( os.path.join(abs_module, "README.rst") ):
generate(abs_module)
if __name__ == '__main__':
main()

View File

@ -13,15 +13,17 @@ Quantum Package
.. toctree::
:maxdepth: 1
:caption: Introduction
intro/intro
intro/selected_ci
intro/requirements
intro/installation
intro/configure
intro/install
.. toctree::
:maxdepth: 2
:maxdepth: 1
:caption: User's guide
users_guide/users_guide
@ -31,24 +33,31 @@ Quantum Package
users_guide/qp_edit
users_guide/qp_run
users_guide/qp_set_mo_class
users_guide/hartree_fock
users_guide/natural_orbitals
users_guide/plugins
users_guide/excited_states
users_guide.rst
users_guide/interfaces
.. toctree::
:maxdepth: 2
:maxdepth: 1
:caption: Modules
:glob:
modules/*
.. toctree::
:maxdepth: 1
:caption: Programmer's guide
programmers_guide/programming
.. toctree::
:maxdepth: 2
:caption: Appendix:
:maxdepth: 1
:caption: Appendix
appendix/benchmarks
appendix/research

View File

@ -0,0 +1,2 @@
.. include:: ../../../INSTALL.rst

View File

@ -0,0 +1,91 @@
.. _ao_basis:
.. program:: ao_basis
.. default-role:: option
========
AO_Basis
========
This module describes the atomic orbitals basis set.
An |AO| :math:`\chi` centered on nucleus A is represented as:
.. math::
\chi_i({\bf r}) = (x-X_A)^a (y-Y_A)^b (z-Z_A)^c \sum_k c_{ki} e^{-\gamma_{ki} |{\bf r} - {\bf R}_A|^2}
The |AO| coefficients are normalized as:
.. math::
{\tilde c}_{ki} = \frac{c_{ki}}{ \int \left( (x-X_A)^a (y-Y_A)^b (z-Z_A)^c e^{-\gamma_{ki} |{\bf r} - {\bf R}_A|^2} \right)^2 dr}
Warning: `ao_coef` contains the |AO| coefficients given in input. These do not
include the normalization constant of the |AO|. The `ao_coef_normalized` provider includes
this normalization factor.
The |AOs| are also sorted by increasing exponent to accelerate the calculation of
the two electron integrals.
EZFIO parameters
----------------
.. option:: ao_basis
Name of the |AO| basis set
.. option:: ao_num
Number of |AOs|
.. option:: ao_prim_num
Number of primitives per |AO|
.. option:: ao_prim_num_max
Maximum number of primitives
Default: =maxval(ao_basis.ao_prim_num)
.. option:: ao_nucl
Index of the nucleus on which the |AO| is centered
.. option:: ao_power
Powers of x, y and z for each |AO|
.. option:: ao_coef
Primitive coefficients, read from input. Those should not be used directly, as the MOs are expressed on the basis of **normalized** AOs.
.. option:: ao_expo
Exponents for each primitive of each |AO|
.. option:: ao_md5
MD5 key, specific of the |AO| basis
.. option:: ao_cartesian
If true, use |AOs| in Cartesian coordinates (6d,10f,...)
Default: false

View File

@ -0,0 +1,43 @@
.. _ao_one_e_integrals:
.. program:: ao_one_e_integrals
.. default-role:: option
==================
AO_one_e_integrals
==================
All the one-electron integrals in the |AO| basis are here.
EZFIO parameters
----------------
.. option:: integral_nuclear
Nucleus-electron integrals in |AO| basis set
.. option:: integral_kinetic
Kinetic energy integrals in |AO| basis set
.. option:: integral_pseudo
Pseudopotential integrals in |AO| basis set
.. option:: integral_overlap
Overlap integrals in |AO| basis set
.. option:: disk_access_ao_one_integrals
Read/Write |AO| one-electron integrals from/to disk [ Write | Read | None ]
Default: None

View File

@ -0,0 +1,35 @@
.. _bitmask:
.. program:: bitmask
.. default-role:: option
==============
Bitmask Module
==============
The central part of this module is the :file:`bitmasks_module.f90` file. It contains
the constants that will be used to define on which kind of integer the bitmasks
will be defined.
In the program, to represent a determinant as a pair of bitstrings,
the determinant should be defined as
.. code-block:: fortran
use bitmasks
integer(bit_kind) :: determinant(N_int,2)
:file:`bitmasks_routines.irp.f` contains helper routines to manipulate bitmask, like
transforming a bit string to a list of integers for example.
`bit_kind_shift`, `bit_kind_size` and `bit_kind` are supposed to be consistent::
2**bit_kind_shift = bit_kind_size
bit_kind = bit_kind_size / 8

View File

@ -0,0 +1,51 @@
.. _cassd:
.. program:: cassd
.. default-role:: option
=====
CASSD
=====
Selected |CAS-SD|.
EZFIO parameters
----------------
.. option:: energy
Calculated CAS-SD energy
.. option:: energy_pt2
Calculated selected CAS-SD energy with PT2 correction
.. option:: do_ddci
If true, remove purely inactive double excitations
Default: False
.. option:: do_only_1h1p
If true, do only one hole/one particle excitations
Default: False
.. option:: do_singles
If true, do only single excitations
Default: True
.. option:: do_doubles
If true, do only double excitations
Default: True

View File

@ -0,0 +1,30 @@
.. _champ:
.. program:: champ
.. default-role:: option
===============
CHAMP Interface
===============
For multi-state calculations, to extract state 2 use:
.. code-block:: bash
QP_STATE=2 qp_run save_for_champ x.ezfio
(state 1 is the ground state).
EZFIO parameters
----------------
.. option:: ci_threshold
Threshold on the CI coefficients as in QMCChem
Default: 1.e-8

View File

@ -0,0 +1,29 @@
.. _cis:
.. program:: cis
.. default-role:: option
===
CIS
===
This module contains a CIS program, built by setting the following rules:
* The only generator determinant is the Hartree-Fock (single-reference method)
* All generated singly excited determinants are included in the wave function (no perturbative
selection)
These rules are set in the ``H_apply.irp.f`` file.
EZFIO parameters
----------------
.. option:: energy
Variational CIS energy

View File

@ -0,0 +1,29 @@
.. _cisd:
.. program:: cisd
.. default-role:: option
====
CISD
====
This module contains a CISD program, built by setting the following rules:
* The only generator determinant is the Hartree-Fock (single-reference method)
* All generated determinants are included in the wave function (no perturbative
selection)
These rules are set in the ``H_apply.irp.f`` file.
EZFIO parameters
----------------
.. option:: energy
Variational CISD energy

View File

@ -0,0 +1,58 @@
.. _davidson:
.. program:: davidson
.. default-role:: option
==============
Davidson_Utils
==============
Abstract module for Davidson's diagonalization.
It contains everything required for the Davidson algorithm, dressed or not. If
a dressing is used, the dressing column should be defined and the
:ref:`davidsondressed` module should be used. If no dressing is required,
the :ref:`davidson` module should be used, and it has a default zero dressing vector.
EZFIO parameters
----------------
.. option:: threshold_davidson
Thresholds of Davidson's algorithm
Default: 1.e-12
.. option:: n_states_diag
Number of states to consider during the Davdison diagonalization
Default: 4
.. option:: davidson_sze_max
Number of micro-iterations before re-contracting
Default: 8
.. option:: state_following
If true, the states are re-ordered to match the input states
Default: False
.. option:: disk_based_davidson
If true, disk space is used to store the vectors
Default: False
.. option:: distributed_davidson
If true, use the distributed algorithm
Default: False

View File

@ -0,0 +1,13 @@
.. _davidsondressed:
.. program:: davidsondressed
.. default-role:: option
===============
DavidsonDressed
===============
Davidson with single-column dressing.

View File

@ -0,0 +1,13 @@
.. _davidsonundressed:
.. program:: davidsonundressed
.. default-role:: option
=================
DavidsonUndressed
=================
Module for main files Davidson's algorithm with no dressing.

View File

@ -0,0 +1,12 @@
.. _debug:
.. program:: debug
.. default-role:: option
=====
debug
=====
Debugging module.

View File

@ -0,0 +1,122 @@
.. _determinants:
.. program:: determinants
.. default-role:: option
============
Determinants
============
Contains everything for the computation of the Hamiltonian in the basis of Slater determinants.
EZFIO parameters
----------------
.. option:: N_det_max
Maximum number of determinants in the wave function
Default: 1000000
.. option:: N_det_max_full
Maximum number of determinants where |H| is fully diagonalized
Default: 1000
.. option:: N_states
Number of states to consider
Default: 1
.. option:: read_wf
If true, read the wave function from the |EZFIO| file
Default: False
.. option:: s2_eig
Force the wave function to be an eigenfunction of |S^2|
Default: True
.. option:: used_weight
0: 1./(c_0^2), 1: 1/N_states, 2: input state-average weight, 3: 1/(Norm_L3(Psi))
Default: 0
.. option:: threshold_generators
Thresholds on generators (fraction of the square of the norm)
Default: 0.99
.. option:: threshold_selectors
Thresholds on selectors (fraction of the square of the norm)
Default: 0.999
.. option:: n_int
Number of integers required to represent bitstrings (set in module :ref:`bitmasks`)
.. option:: bit_kind
(set in module :ref:`bitmasks`)
.. option:: mo_label
Label of the |MOs| on which the determinants are expressed
.. option:: n_det
Number of determinants in the current wave function
.. option:: psi_coef
Coefficients of the wave function
.. option:: psi_det
Determinants of the variational space
.. option:: expected_s2
Expected value of |S^2|
.. option:: target_energy
Energy that should be obtained when truncating the wave function (optional)
Default: 0.
.. option:: store_full_H_mat
If True, the Davidson diagonalization is performed by storing the full |H| matrix up to n_det_max_stored. Be careful, it can cost a lot of memory but can also save a lot of CPU time
Default: False
.. option:: n_det_max_stored
Maximum number of determinants for which the full |H| matrix is stored. be careful, the memory requested scales as 10*n_det_max_stored**2. for instance, 90000 determinants represents a matrix of size 60 Gb.
Default: 90000
.. option:: state_average_weight
Weight of the states in state-average calculations.

View File

@ -0,0 +1,36 @@
.. _dressing:
.. program:: dressing
.. default-role:: option
=========
dress_zmq
=========
Module to facilitate the construction of modules using dressed Hamiltonians, parallelized
with |ZeroMQ|.
EZFIO parameters
----------------
.. option:: thresh_dressed_ci
Threshold on the convergence of the dressed |CI| energy
Default: 1.e-5
.. option:: n_it_max_dressed_ci
Maximum number of dressed |CI| iterations
Default: 10
.. option:: dress_relative_error
Stop stochastic dressing when the relative error is smaller than :option:`perturbation PT2_relative_error`
Default: 0.001

View File

@ -0,0 +1,44 @@
.. _electrons:
.. program:: electrons
.. default-role:: option
=========
Electrons
=========
Describes the electrons. For the moment, only the number of alpha and beta electrons
are provided by this module.
Assumptions
===========
* `elec_num` >= 0
* `elec_alpha_num` >= 0
* `elec_beta_num` >= 0
* `elec_alpha_num` >= `elec_beta_num`
EZFIO parameters
----------------
.. option:: elec_alpha_num
Numbers of electrons alpha ("up")
.. option:: elec_beta_num
Numbers of electrons beta ("down")
.. option:: elec_num
Numbers total of electrons (alpha + beta)
Default: = electrons.elec_alpha_num + electrons.elec_beta_num

View File

@ -0,0 +1,15 @@
.. _ezfio_files:
.. program:: ezfio_files
.. default-role:: option
===========
Ezfio_files
===========
This modules essentially contains the name of the |EZFIO| directory in the
:c:data:`ezfio_filename` variable. This is read as the first argument of the
command-line, or as the :envvar:`QP_INPUT` environment variable.

View File

@ -0,0 +1,26 @@
.. _fci:
.. program:: fci
.. default-role:: option
===
FCI
===
Selected Full Configuration Interaction.
EZFIO parameters
----------------
.. option:: energy
Calculated Selected |FCI| energy
.. option:: energy_pt2
Calculated |FCI| energy + |PT2|

View File

@ -0,0 +1,13 @@
.. _fouridx:
.. program:: fouridx
.. default-role:: option
=======
FourIdx
=======
Four-index transformation.

View File

@ -0,0 +1,19 @@
.. _generators_cas:
.. program:: generators_cas
.. default-role:: option
==============
Generators_CAS
==============
Module defining the generator determinants as those belonging to a |CAS|.
The |MOs| belonging to the |CAS| are those which were set as active with
the :ref:`qp_set_mo_class` command.
This module is intended to be included in the :file:`NEED` file to define
generators on a |CAS|.

View File

@ -0,0 +1,16 @@
.. _generators_full:
.. program:: generators_full
.. default-role:: option
===============
Generators_full
===============
Module defining the generator determinants as all the determinants of the
variational space.
This module is intended to be included in the :file:`NEED` file to define
a full set of generators.

View File

@ -0,0 +1,97 @@
.. _hartree_fock:
.. program:: hartree_fock
.. default-role:: option
============
Hartree-Fock
============
The Hartree-Fock module performs *Restricted* Hartree-Fock calculations (the
spatial part of the |MOs| is common for alpha and beta spinorbitals).
The Hartree-Fock program does the following:
#. Compute/Read all the one- and two-electron integrals, and store them in memory
#. Check in the |EZFIO| database if there is a set of |MOs|. If there is, it
will read them as initial guess. Otherwise, it will create a guess.
#. Perform the |SCF| iterations
At each iteration, the |MOs| are saved in the |EZFIO| database. Hence, if the calculation
crashes for any unexpected reason, the calculation can be restarted by running again
the |SCF| with the same |EZFIO| database.
The `DIIS`_ algorithm is implemented, as well as the `level-shifting`_ method.
If the |SCF| does not converge, try again with a higher value of :option:`level_shift`.
To start a calculation from scratch, the simplest way is to remove the
``mo_basis`` directory from the |EZFIO| database, and run the |SCF| again.
.. _DIIS: https://en.wikipedia.org/w/index.php?title=DIIS
.. _level-shifting: https://doi.org/10.1002/qua.560070407
EZFIO parameters
----------------
.. option:: max_dim_diis
Maximum size of the |DIIS| extrapolation procedure
Default: 15
.. option:: threshold_diis
Threshold on the convergence of the |DIIS| error vector during a Hartree-Fock calculation. If 0. is chosen, the square root of thresh_scf will be used.
Default: 0.
.. option:: thresh_scf
Threshold on the convergence of the Hartree Fock energy.
Default: 1.e-10
.. option:: n_it_scf_max
Maximum number of |SCF| iterations
Default: 500
.. option:: level_shift
Energy shift on the virtual |MOs| to improve |SCF| convergence
Default: 0.2
.. option:: scf_algorithm
Type of |SCF| algorithm used. Possible choices are [ Simple | DIIS]
Default: DIIS
.. option:: mo_guess_type
Initial MO guess. Can be [ Huckel | HCore ]
Default: Huckel
.. option:: energy
Calculated HF energy
.. option:: no_oa_or_av_opt
If true, skip the (inactive+core) --> (active) and the (active) --> (virtual) orbital rotations within the |SCF| procedure
Default: False

View File

@ -0,0 +1,80 @@
.. _integrals_bielec:
.. program:: integrals_bielec
.. default-role:: option
================
Integrals_Bielec
================
Here, all two-electron integrals (:math:`1/r_{12}`) are computed.
As they have 4 indices and many are zero, they are stored in a map, as defined
in :file:`Utils/map_module.f90`.
To fetch an |AO| integral, use the
`get_ao_bielec_integral(i,j,k,l,ao_integrals_map)` function, and
to fetch an |MO| integral, use
`get_mo_bielec_integral(i,j,k,l,mo_integrals_map)` or
`mo_bielec_integral(i,j,k,l)`.
The conventions are:
* For |AO| integrals : (ik|jl) = (11|22)
* For |MO| integrals : <ij|kl> = <12|12>
EZFIO parameters
----------------
.. option:: disk_access_mo_integrals
Read/Write |MO| integrals from/to disk [ Write | Read | None ]
Default: None
.. option:: disk_access_ao_integrals
Read/Write |AO| integrals from/to disk [ Write | Read | None ]
Default: None
.. option:: ao_integrals_threshold
If | (pq|rs) | < `ao_integrals_threshold` then (pq|rs) is zero
Default: 1.e-15
.. option:: mo_integrals_threshold
If | <ij|kl> | < `mo_integrals_threshold` then <ij|kl> is zero
Default: 1.e-15
.. option:: no_vvvv_integrals
If `True`, computes all integrals except for the integrals having 4 virtual indices
Default: False
.. option:: no_ivvv_integrals
Can be switched on only if `no_vvvv_integrals` is `True`, then does not compute the integrals with 3 virtual indices and 1 belonging to the core inactive active orbitals
Default: False
.. option:: no_vvv_integrals
Can be switched on only if `no_vvvv_integrals` is `True`, then does not compute the integrals with 3 virtual orbitals
Default: False
.. option:: do_direct_integrals
Compute integrals on the fly (very slow, only for debugging)
Default: False

View File

@ -0,0 +1,37 @@
.. _iterations:
.. program:: iterations
.. default-role:: option
=============
IterativeSave
=============
Module which saves the computed energies for an extrapolation to the |FCI| limit.
EZFIO parameters
----------------
.. option:: n_iter
Number of saved iterations
Default: 1
.. option:: n_det_iterations
Number of determinants at each iteration
.. option:: energy_iterations
The variational energy at each iteration
.. option:: pt2_iterations
The |PT2| correction at each iteration

View File

@ -0,0 +1,65 @@
.. _mo_basis:
.. program:: mo_basis
.. default-role:: option
========
MO_Basis
========
Molecular orbitals are expressed as
.. math::
\phi_k({\bf r}) = \sum_i C_{ik} \chi_k({\bf r})
where :math:`\chi_k` are *normalized* atomic basis functions.
The current set of |MOs| has a label `mo_label`.
When the orbitals are modified, the label should also be updated to keep
everything consistent.
When saving the |MOs|, the :file:`mo_basis` directory of the |EZFIO| database
is copied in the :file:`save` directory, named by the current `mo_label`. All
this is done with the script named :file:`save_current_mos.sh` in the
:file:`$QP_ROOT/scripts` directory.
EZFIO parameters
----------------
.. option:: mo_tot_num
Total number of |MOs|
.. option:: mo_coef
Coefficient of the i-th |AO| on the j-th |MO|
.. option:: mo_label
Label characterizing the MOS (Local, Canonical, Natural, *etc*)
.. option:: mo_occ
|MO| occupation numbers
.. option:: mo_class
[ Core | Inactive | Active | Virtual | Deleted ], as defined by :ref:`qp_set_mo_class`
.. option:: ao_md5
MD5 checksum characterizing the |AO| basis set.

View File

@ -0,0 +1,38 @@
.. _mo_one_e_integrals:
.. program:: mo_one_e_integrals
.. default-role:: option
==================
MO_one_e_integrals
==================
All the one-electron integrals in |MO| basis are defined here.
EZFIO parameters
----------------
.. option:: integral_nuclear
Nucleus-electron integrals in |MO| basis set
.. option:: integral_kinetic
Kinetic energy integrals in |MO| basis set
.. option:: integral_pseudo
Pseudopotential integrals in |MO| basis set
.. option:: disk_access_mo_one_integrals
Read/Write |MO| one-electron integrals from/to disk [ Write | Read | None ]
Default: None

View File

@ -0,0 +1,13 @@
.. _moguess:
.. program:: moguess
.. default-role:: option
=======
MOGuess
=======
Guess for |MOs|.

View File

@ -0,0 +1,21 @@
.. _mp2:
.. program:: mp2
.. default-role:: option
==========
MP2 Module
==========
Computes the |MP2| energy.
EZFIO parameters
----------------
.. option:: energy
|MP2| energy

View File

@ -0,0 +1,12 @@
.. _mpi:
.. program:: mpi
.. default-role:: option
===
MPI
===
Contains all the functions and providers for parallelization with |MPI|.

View File

@ -0,0 +1,49 @@
.. _mrcc:
.. program:: mrcc
.. default-role:: option
====
MRCC
====
Multi-Reference Coupled Cluster module:
#. A simple approach to the state-specific MR-CC using the intermediate Hamiltonian formalism
Emmanuel Giner , Grégoire David , Anthony Scemama and Jean Paul Malrieu (2016), in: J. Chem. Phys., 144:6(064101)
#. Alternative definition of excitation amplitudes in multi-reference state-specific coupled cluster
Yann Garniron , Emmanuel Giner , Jean Paul Malrieu and Anthony Scemama (2017), in: The Journal of Chemical Physics, 146:15(154107)
Using this module requires to have a selected |CAS-SD| wave function.
EZFIO parameters
----------------
.. option:: lambda_type
Type of amplitudes used. lambda=0 : defined in [2], lambda=1 : defined in [1]
Default: 0
.. option:: energy
|MRCC| energy
.. option:: energy_pt2
Selected |MRCC| energy, with |PT2| contribution to estimate the complete |MRCC| energy
.. option:: perturbative_triples
If `True`, compute the perturbative contribution of the Triples
Default: true

View File

@ -0,0 +1,14 @@
.. _mrcc_utils:
.. program:: mrcc_utils
.. default-role:: option
==========
MRCC_Utils
==========
Subroutines and providers required for |MRCC|.

View File

@ -0,0 +1,22 @@
.. _mrpt_utils:
.. program:: mrpt_utils
.. default-role:: option
==========
MRPT_Utils
==========
Subroutines and providers required for |MRPT|.
EZFIO parameters
----------------
.. option:: do_third_order_1h1p
If `True`, compute the third order contribution for the 1h1p
Default: True

View File

@ -0,0 +1,50 @@
.. _nuclei:
.. program:: nuclei
.. default-role:: option
======
Nuclei
======
This module contains data relative to the nuclei (coordinates, charge,
nuclear repulsion energy, etc).
The coordinates are expressed in atomic units.
EZFIO parameters
----------------
.. option:: nucl_num
Number of nuclei
.. option:: nucl_label
Nuclear labels
.. option:: nucl_charge
Nuclear charges
.. option:: nucl_coord
Nuclear coordinates in the format (:, {x,y,z})
.. option:: disk_access_nuclear_repulsion
Read/Write Nuclear Repulsion from/to disk [ Write | Read | None ]
Default: None
.. option:: nuclear_repulsion
Nuclear repulsion (Computed automaticaly or Read in the |EZFIO|)

View File

@ -0,0 +1,109 @@
.. _perturbation:
.. program:: perturbation
.. default-role:: option
============
Perturbation
============
All subroutines in ``*.irp.f`` starting with `pt2_` in the current directory are
perturbation computed using the routine `i_H_psi`. Other cases are not allowed.
The arguments of the `pt2_` are always:
.. code-block:: fortran
subroutine pt2_...( &
psi_ref, &
psi_ref_coefs, &
E_refs, &
det_pert, &
c_pert, &
e_2_pert, &
H_pert_diag, &
Nint, &
Ndet, &
N_st )
integer , intent(in) :: Nint,Ndet,N_st
integer(bit_kind), intent(in) :: psi_ref(Nint,2,Ndet)
double precision , intent(in) :: psi_ref_coefs(Ndet,N_st)
double precision , intent(in) :: E_refs(N_st)
integer(bit_kind), intent(in) :: det_pert(Nint,2)
double precision , intent(out) :: c_pert(N_st),e_2_pert(N_st),H_pert_diag
`psi_ref`
bitstring of the determinants present in the various `N_st` states
`psi_ref_coefs`
coefficients of the determinants on the various `N_st` states
`E_refs`
Energy of the various `N_st` states
`det_pert`
Perturber determinant
`c_pert`
Perturbative coefficients for the various states
`e_2_pert`
Perturbative energetic contribution for the various states
`H_pert_diag`
Diagonal |H| matrix element of the perturber
`Nint`
Should be equal to `N_int`
`Ndet`
Number of determinants `i` in |Psi| on which we apply <det_pert | |H| | `i`>
`N_st`
Number of states
EZFIO parameters
----------------
.. option:: do_pt2
If `True`, compute the |PT2| contribution
Default: True
.. option:: PT2_max
The selection process stops when the largest |PT2| (for all the state) is lower
than `pt2_max` in absolute value
Default: 0.0001
.. option:: PT2_relative_error
Stop stochastic |PT2| when the relative error is smaller than `PT2_relative_error`
Default: 0.005
.. option:: correlation_energy_ratio_max
The selection process stops at a fixed correlation ratio (useful for getting same accuracy between molecules).
Defined as :math:`\frac{E_{CI}-E_{HF}} {E_{CI}+E_{PT2} - E_{HF}}`.
Default: 1.00
.. option:: h0_type
Type of zeroth-order Hamiltonian [ EN | Barycentric ]
Default: EN

View File

@ -0,0 +1,94 @@
.. _pseudo:
.. program:: pseudo
.. default-role:: option
======
Pseudo
======
This module defines the |EZFIO| parameters of the effective core potentials.
EZFIO parameters
----------------
.. option:: nucl_charge_remove
Nuclear charges removed per atom
.. option:: pseudo_klocmax
Maximum value of k for the local component
.. option:: pseudo_n_k
Number of gaussians in the local component
.. option:: pseudo_v_k
Coefficients in the local component
.. option:: pseudo_dz_k
Exponents in the local component
.. option:: pseudo_lmax
Maximum angular momentum
.. option:: pseudo_kmax
Maximum number of functions in the non-local component
.. option:: pseudo_n_kl
Number of functions in the non-local component
.. option:: pseudo_v_kl
Coefficients in the non-local component
.. option:: pseudo_dz_kl
Exponents in the non-local component
.. option:: do_pseudo
If `True`, pseudo-potentials are used.
Default: False
.. option:: pseudo_grid_size
Nb of points of the grid for the QMC interfaces
Default: 1000
.. option:: pseudo_grid_rmax
R_max of the QMC grid
Default: 10.0
.. option:: ao_pseudo_grid
Grid for the QMC interface
.. option:: mo_pseudo_grid
Grid for the QMC interface

View File

@ -0,0 +1,14 @@
.. _psiref_cas:
.. program:: psiref_cas
.. default-role:: option
==========
Psiref_CAS
==========
Reference wave function is defined as a |CAS| wave function.
This module is required for |CAS-SD|, |MRPT| or |MRCC|.

View File

@ -0,0 +1,16 @@
.. _psiref_utils:
.. program:: psiref_utils
.. default-role:: option
============
Psiref_Utils
============
Utilities related to the use of a reference wave function. This module
needs to be loaded with any `psi_ref_*` module.

View File

@ -0,0 +1,13 @@
.. _selectors_cassd:
.. program:: selectors_cassd
.. default-role:: option
===============
Selectors_CASSD
===============
Selectors for |CAS-SD| calculations. The selectors are defined as first the
generators from :ref:`Generators_CAS`, and then the rest of the wave function.

View File

@ -0,0 +1,14 @@
.. _selectors_full:
.. program:: selectors_full
.. default-role:: option
==============
Selectors_full
==============
All the determinants are possible selectors. Only the largest contributions are kept, where
a threshold is applied to the squared norm of the wave function, with the :option:`determinants
threshold_selectors` flag.

View File

@ -0,0 +1,13 @@
.. _selectors_utils:
.. program:: selectors_utils
.. default-role:: option
===============
Selectors_Utils
===============
Helper functions for selectors.

View File

@ -0,0 +1,14 @@
.. _singlerefmethod:
.. program:: singlerefmethod
.. default-role:: option
===============
SingleDetMethod
===============
Include this module for single reference methods.
Using this module, the only generator determinant is the Hartree-Fock determinant.

View File

@ -0,0 +1,13 @@
.. _slave:
.. program:: slave
.. default-role:: option
=====
Slave
=====
Slave processes for distributed parallelism.

View File

@ -0,0 +1,12 @@
.. _tools:
.. program:: tools
.. default-role:: option
=====
Tools
=====
Useful tools are grouped in this module.

View File

@ -0,0 +1,13 @@
.. _utils:
.. program:: utils
.. default-role:: option
=====
Utils
=====
Contains general purpose utilities (sorting, maps, etc).

View File

@ -0,0 +1,14 @@
.. _zmq:
.. program:: zmq
.. default-role:: option
===
ZMQ
===
Definition of |ZeroMQ| sockets and messages.

View File

@ -0,0 +1,34 @@
=========
configure
=========
.. program:: configure
Usage
-----
.. code-block:: bash
./configure [-h | -c <file> | -i <package>]
.. option:: -c <file>, --config <file>
Define a configuration file, in :file`${QP_ROOT}/config/`
.. option:: -h, --help
Print the help message
.. option:: -i <package>, --install <package>
Try to install <package>. Use at your own risk.
Example
-------
.. code-block:: bash
./configure
./configure -c config/gfortran.cfg

View File

@ -1,5 +0,0 @@
.. _Hartree_Fock:
.. Fetch the documentation provided in the module.
.. include:: ../../../src/Hartree_Fock/README.rst

View File

@ -3,19 +3,35 @@
qp_convert_output_to_ezfio.py
=============================
.. TODO
.. program:: qp_convert_output_to_ezfio.py
Usage ::
This Python script uses the `resultsFile`_ Python library to gather the
geometry, |AOs| and |MOs| from output files of |GAMESS| or Gaussian, and creates an
|EZFIO| directory with this information. Some constraints are necessary in the
output file : the run needs to be a single point |HF|, |DFT| or |CAS| |SCF|.
qp_convert_output_to_ezfio.py FILE.out [-o EZFIO_DIRECTORY]
Usage
-----
This Python script uses the `resultsFile`_ Python library to gather the geometry,
AOs and MOs from output files of |GAMESS| and Gaussian and create an |EZFIO| directory
with this information. Some constraints are necessary in the output file : the run
needs to be a single point HF, DFT or CASSCF.
.. code-block:: bash
qp_convert_output_to_ezfio.py <FILE.out> [-o <EZFIO_DIRECTORY>]
.. option:: -o <EZFIO_DIRECTORY>
Renames the |EZFIO| directory. If this option is not present, the default
name fill be :file:`<FILE.out>.ezfio`
.. note::
The following keywords are necessary for Gaussian ::
GFPRINT pop=Full
Example
-------
.. code-block:: bash
qp_convert_output_to_ezfio.py h2o.out -o h2o

View File

@ -3,35 +3,64 @@
qp_create_ezfio_from_xyz
========================
.. TODO
Usage ::
qp_create_ezfio_from_xyz [FLAGS] (xyz_file|zmt_file)
Flags ::
-b string Name of basis set.
[-au] Input geometry is in atomic units.
[-c int] Total charge of the molecule. Default is 0.
[-cart] Compute AOs in the Cartesian basis set (6d, 10f, ...)
[-d float] Add dummy atoms. x * (covalent radii of the atoms)
[-m int] Spin multiplicity (2S+1) of the molecule. Default is 1.
[-o file] Name of the created EZFIO file.
[-p string] Name of the pseudo-potential
[-help] print this help text and exit
(alias: -?)
.. program:: qp_create_ezfio_from_xyz
This command creates an |EZFIO| directory from a standard `xyz` file or from a
`z-matrix` file in Gaussian format. The basis set is defined as a single string
if all the atoms are taken from the same basis set, otherwise specific elements
can be defined as follows::
`z-matrix` file in Gaussian format.
-b "cc-pcvdz | H:cc-pvdz | C:6-31g"
-b "cc-pvtz | 1,H:sto-3g | 3,H:6-31g"
Usage
-----
By default, the basis set is obtained from the local database of the |qp|.
.. code-block:: bash
qp_create_ezfio_from_xyz [FLAGS] (<xyz_file> | <zmt_file>)
Flags :
-b [-au] [-c int] [-cart] [-d float]
[-m int] [-o file] [-p string] [-help]
.. option:: -b <basis_name>
Name of basis set. The basis set is defined as a single string if all the
atoms are taken from the same basis set, otherwise specific elements can be
defined as follows::
-b "cc-pcvdz | H:cc-pvdz | C:6-31g"
-b "cc-pvtz | 1,H:sto-3g | 3,H:6-31g"
By default, the basis set is obtained from the local database of the |qp|.
.. option:: -au
If present, input geometry is in atomic units.
.. option:: -c <float>
Total charge of the molecule. Default is 0.
.. option:: -cart
Compute |AOs| in the Cartesian basis set (6d, 10f, ...)
.. option:: -d <float>
Add dummy atoms. x * (covalent radii of the atoms)
.. option:: -m <int>
Spin multiplicity (2S+1) of the molecule. Default is 1.
.. option:: -o <EZFIO_DIRECTORY>
Name of the created |EZFIO| directory.
.. option:: -p <string>
Name of the pseudo-potential
.. option:: -help, -?
Print the help text and exit
Using custom atomic basis sets
@ -95,12 +124,14 @@ As for the basis set, if a file with the same name as the pseudo-potential
exists, this file will be read.
For example, if the file containing the custom pseudo-potential is named
``custom.pseudo``, the basis set is named ``custom.basis``, and the *xyz*
geometry is in ``molecule.xyz``, the following command should be used::
geometry is in ``molecule.xyz``, the following command should be used
.. code-block:: bash
qp_create_ezfio_from_xyz -b custom.basis -p custom.pseudo molecule.xyz
Pseudo-potential files should be given in a format very close to |GAMESS|
format. The first line should be formatted as ``"%s GEN %d %d"`` where the
format. The first line should be formatted as ``%s GEN %d %d`` where the
first string is the chemical symbol, the first integer is the number of
core electrons to be removed and the second integer is LMAX+1 as in |GAMESS|
format.

View File

@ -1,22 +1,9 @@
.. _qp_edit:
qp_edit
=======
.. TODO
Usage ::
qp_edit EZFIO_DIRECTORY
Flags ::
[-c] Checks the input data
[-ndet int] Truncate the wavefunction to the target number of determinants
[-state int] Pick the state as a new wavefunction.
[-help] print this help text and exit
(alias: -?)
qp_edit
=======
This command reads the content of the |EZFIO| directory and creates a temporary
file containing the data. The data is presented as a *ReStructured Text* (rst)
@ -28,9 +15,38 @@ the text editor is closed, the updated data is saved into the |EZFIO| directory.
When the wave function is too large (more than 10 000 determinants), the
determinants are not displayed.
Usage
-----
.. code-block:: bash
qp_edit [FLAGS] <EZFIO_DIRECTORY>
Flags :
[-c] [-ndet int]
[-state int] [-help]
.. option:: -c
Checks the input data
.. option:: -ndet <int>
Truncates the wavefunction to the target number of determinants
.. option:: -state <int>
Pick the target state as a new wavefunction.
.. option:: -help
Print the help text and exits
Here is a short list of important control parameters :
read_wf
.. option:: read_wf
If ``false``, initialize the calculation with a single-determinant wave
function. If ``true``, initialize the calculation with the wave function stored
in the |EZFIO| directory.

View File

@ -5,7 +5,29 @@ qp_run
.. TODO
``qp_run`` is the command used to run a calculation.
.. program:: qp_run
Command used to run a calculation.
Usage
-----
.. code-block:: bash
qp_run [-slave] <PROGRAM> <EZFIO_DIRECTORY>
.. option:: -slave
This option needs to be set when ``PROGRAM`` is a slave program, to accelerate
another running instance of the |qp|.
Example
-------
.. code-block:: bash
qp_run FCI h2o.ezfio

View File

@ -5,21 +5,6 @@ qp_set_mo_class
.. TODO
Usage ::
qp_set_mo_class [FLAGS] EZFIO_DIRECTORY
Flags ::
[-act range] Range of active orbitals
[-core range] Range of core orbitals
[-del range] Range of deleted orbitals
[-inact range] Range of inactive orbitals
[-q] Query: print the current masks
[-virt range] Range of virtual orbitals
[-help] print this help text and exit
(alias: -?)
This command sets the orbital classes in an |EZFIO| directory.
@ -55,5 +40,43 @@ The range of MOs are given like the ranges in |SLURM| commands. For example,
zero.
Usage
-----
.. code-block:: bash
qp_set_mo_class [FLAGS] <EZFIO_DIRECTORY>
Flags:
[-act range] [-core range] [-del range]
[-inact range] [-q] [-virt range]
[-help]
.. option:: -act <range>
Range of active orbitals
.. option:: -core <range>
Range of core orbitals
.. option:: -del <range>
Range of deleted orbitals
.. option:: -inact <range>
Range of inactive orbitals
.. option:: -q
Query: print the current masks
.. option:: -virt <range>
Range of virtual orbitals
.. option:: -help, -?

View File

@ -50,7 +50,7 @@ basis set:
Run a Hartree-Fock calculation
------------------------------
The program ref:`qp_run` is the driver program of the |qp|. To run an SCF calculation,
The program :ref:`qp_run` is the driver program of the |qp|. To run an SCF calculation,
just run
.. code-block:: bash

View File

@ -1,38 +0,0 @@
#!/bin/bash
# Convert a old ezfio file (with option.irp.f ezfio_default)
# into a new EZFIO.cfg type
# Hartree Fock
# Changin the case, don't know if is needed or not
echo "Will tranform qp_v1.*_ezfio to qp_v2.*_ezfio"
echo "All action are irrevocable! And is by choice"
echo "You need to stop to use a old version! Plz..."
echo "Change thresh_SCF > thresh_scf0"
mv $1/hartree_Fock/thresh_SCF $1/hartree_fock/thresh_scf 2> /dev/null
# Set disk_acess
echo "Change {read,write}_ao_integrals > disk_access_ao_integrals"
biint=$1/Integrals_bielec
if [[ -f $biint/read_ao_integrals ]]; then
if [[ `cat $1/Integrals_bielec/read_ao_integrals` -eq "T" ]]
then
echo "Read" > $biint/disk_access_ao_integrals
elif [[ `cat $biint/write_ao_integrals` -eq "T" ]]
then
echo "Write" > $biint/disk_access_ao_integrals
else
echo "None" > $biint/disk_access_ao_integrals
fi
rm $biint/read_ao_integrals $biint/write_ao_integrals $biint/write_ao_intergals 2> /dev/null
fi
mv $1/MonoInts $1/Integrals_Monoelec
echo "Done"

View File

@ -1,34 +1,34 @@
[ao_basis]
type: character*(256)
doc: name of the AO basis set
doc: Name of the |AO| basis set
interface: ezfio
[ao_num]
type: integer
doc: number of AOs
doc: Number of |AOs|
interface: ezfio, provider
[ao_prim_num]
type: integer
doc: Number of primitives per atomic orbital
doc: Number of primitives per |AO|
size: (ao_basis.ao_num)
interface: ezfio, provider
[ao_prim_num_max]
type: integer
doc: maximum number of primitives
doc: Maximum number of primitives
default: =maxval(ao_basis.ao_prim_num)
interface: ezfio
[ao_nucl]
type: integer
doc: Index of the nucleus on which the AO is centered
doc: Index of the nucleus on which the |AO| is centered
size: (ao_basis.ao_num)
interface: ezfio, provider
[ao_power]
type: integer
doc: Powers of x, y and z for each AO
doc: Powers of x, y and z for each |AO|
size: (ao_basis.ao_num,3)
interface: ezfio, provider
@ -40,18 +40,18 @@ interface: ezfio, provider
[ao_expo]
type: double precision
doc: Exponents for each primitive of each AO
doc: Exponents for each primitive of each |AO|
size: (ao_basis.ao_num,ao_basis.ao_prim_num_max)
interface: ezfio, provider
[ao_md5]
type: character*(32)
doc: MD5 key, specific of the AO basis
doc: MD5 key, specific of the |AO| basis
interface: ezfio, provider
[ao_cartesian]
type: logical
doc: If true, use AOs in Cartesian coordinates (6d,10f,...)
doc: If true, use |AOs| in Cartesian coordinates (6d,10f,...)
interface: ezfio, provider
default: false

View File

@ -1,32 +1,28 @@
==========
AOs Module
==========
========
AO_Basis
========
This module describes the atomic orbitals basis set.
An atomic orbital :math:`\chi` centered on nucleus A is represented as:
An |AO| :math:`\chi` centered on nucleus A is represented as:
.. math::
\chi_i({\bf r}) = (x-X_A)^a (y-Y_A)^b (z-Z_A)^c \sum_k c_{ki} e^{-\gamma_{ki} |{\bf r} - {\bf R}_A|^2}
The AO coefficients are normalized as:
The |AO| coefficients are normalized as:
.. math::
{\tilde c}_{ki} = \frac{c_{ki}}{ \int \left( (x-X_A)^a (y-Y_A)^b (z-Z_A)^c e^{-\gamma_{ki} |{\bf r} - {\bf R}_A|^2} \right)^2} dr
{\tilde c}_{ki} = \frac{c_{ki}}{ \int \left( (x-X_A)^a (y-Y_A)^b (z-Z_A)^c e^{-\gamma_{ki} |{\bf r} - {\bf R}_A|^2} \right)^2 dr}
Warning: ``ao_coef`` contains the AO coefficients given in input. These do not
include the normalization constant of the AO. The ``ao_coef_normalized`` includes
Warning: `ao_coef` contains the |AO| coefficients given in input. These do not
include the normalization constant of the |AO|. The `ao_coef_normalized` provider includes
this normalization factor.
The AOs are also sorted by increasing exponent to accelerate the calculation of
The |AOs| are also sorted by increasing exponent to accelerate the calculation of
the two electron integrals.
Assumptions
===========
* The AO coefficients in the EZFIO files are not necessarily normalized and are normalized after reading

View File

@ -1,30 +1,30 @@
[integral_nuclear]
type: double precision
doc: Nucleus-electron integrals in AO basis set
doc: Nucleus-electron integrals in |AO| basis set
size: (ao_basis.ao_num,ao_basis.ao_num)
interface: ezfio
[integral_kinetic]
type: double precision
doc: Kinetic energy integrals in AO basis set
doc: Kinetic energy integrals in |AO| basis set
size: (ao_basis.ao_num,ao_basis.ao_num)
interface: ezfio
[integral_pseudo]
type: double precision
doc: Pseudopotential integrals in AO basis set
doc: Pseudopotential integrals in |AO| basis set
size: (ao_basis.ao_num,ao_basis.ao_num)
interface: ezfio
[integral_overlap]
type: double precision
doc: Overlap integrals in AO basis set
doc: Overlap integrals in |AO| basis set
size: (ao_basis.ao_num,ao_basis.ao_num)
interface: ezfio
[disk_access_ao_one_integrals]
type: Disk_access
doc: Read/Write AO one-electron integrals from/to disk [ Write | Read | None ]
doc: Read/Write |AO| one-electron integrals from/to disk [ Write | Read | None ]
interface: ezfio,provider,ocaml
default: None

View File

@ -2,5 +2,5 @@
AO_one_e_integrals
==================
All the one-electron integrals in AO basis are here.
All the one-electron integrals in the |AO| basis are here.

View File

@ -2,34 +2,27 @@
Bitmask Module
==============
The central part of this module is the ``bitmasks_module.f90`` file. It contains
The central part of this module is the :file:`bitmasks_module.f90` file. It contains
the constants that will be used to define on which kind of integer the bitmasks
will be defined.
In the program, when an integer ``X`` is used to represent a bit string (like a determinant
for example), it should be defined as, for example:
In the program, to represent a determinant as a pair of bitstrings,
the determinant should be defined as
.. code-block:: fortran
use bitmasks
integer(bit_kind) :: X
integer(bit_kind) :: determinant(N_int,2)
The ``bitmasks_routines.irp.f`` contains helper routines to manipulate bitmassk, like
:file:`bitmasks_routines.irp.f` contains helper routines to manipulate bitmask, like
transforming a bit string to a list of integers for example.
Assumptions
===========
.. Do not edit this section. It was auto-generated from the
.. NEEDED_MODULES_CHILDREN file by the `update_README.py` script.
`bit_kind_shift`, `bit_kind_size` and `bit_kind` are supposed to be consistent::
``bit_kind_shift``, ``bit_kind_size`` and ``bit_kind`` are coherent:
.. code_block:: fortran
2**bit_kind_shift = bit_kind_size
bit_kind = bit_kind_size / 8
2**bit_kind_shift = bit_kind_size
bit_kind = bit_kind_size / 8

6
src/CIS/EZFIO.cfg Normal file
View File

@ -0,0 +1,6 @@
[energy]
type: double precision
doc: Variational CIS energy
interface: ezfio

View File

@ -1,9 +1,13 @@
==========
CIS Module
==========
===
CIS
===
Assumptions
===========
* The molecular orbitals are assumed orthonormal
This module contains a CIS program, built by setting the following rules:
* The only generator determinant is the Hartree-Fock (single-reference method)
* All generated singly excited determinants are included in the wave function (no perturbative
selection)
These rules are set in the ``H_apply.irp.f`` file.

View File

@ -3,8 +3,4 @@ type: double precision
doc: Variational CISD energy
interface: ezfio
[energy_pt2]
type: double precision
doc: Estimated CISD energy (including PT2)
interface: ezfio

View File

@ -5,7 +5,5 @@ BEGIN_SHELL [ /usr/bin/env python2 ]
from generate_h_apply import H_apply
H = H_apply("cisd",do_double_exc=True)
print H
H = H_apply("cis",do_double_exc=False)
print H
END_SHELL

View File

@ -1,9 +1,10 @@
====
CISD
====
This is a test directory which builds a CISD by setting the follwoing rules:
This module contains a CISD program, built by setting the following rules:
* The only generator determinant is the Hartee-Fock (single-reference method)
* The only generator determinant is the Hartree-Fock (single-reference method)
* All generated determinants are included in the wave function (no perturbative
selection)

View File

@ -1,9 +1,11 @@
==============
Davidson_Utils
==============
Abstract module for Davidson diagonalization. Contains everything required for the
Davidson algorithm, dressed or not. If a dressing is used, the dressing column should
be defined and the DavidsonDressed module should be used. If no dressing is required,
the Davidson module should be used, and it has a default null dressing vector.
Abstract module for Davidson's diagonalization.
It contains everything required for the Davidson algorithm, dressed or not. If
a dressing is used, the dressing column should be defined and the
:ref:`davidsondressed` module should be used. If no dressing is required,
the :ref:`davidson` module should be used, and it has a default zero dressing vector.

View File

@ -2,5 +2,5 @@
DavidsonDressed
===============
Davidson with single-column dressing
Davidson with single-column dressing.

View File

@ -2,5 +2,5 @@
DavidsonUndressed
=================
Module for main files with undressed Davidson
Module for main files Davidson's algorithm with no dressing.

View File

@ -1,12 +1,12 @@
[N_det_max]
type: Det_number_max
doc: Max number of determinants in the wave function
doc: Maximum number of determinants in the wave function
interface: ezfio,provider,ocaml
default: 1000000
[N_det_max_full]
type: Det_number_max
doc: Maximum number of determinants where H is fully diagonalized
doc: Maximum number of determinants where |H| is fully diagonalized
interface: ezfio,provider,ocaml
default: 1000
@ -18,25 +18,19 @@ default: 1
[read_wf]
type: logical
doc: If true, read the wave function from the EZFIO file
doc: If true, read the wave function from the |EZFIO| file
interface: ezfio,provider,ocaml
default: False
[only_single_double_dm]
type: logical
doc: If true, The One body DM is calculated with ignoring the Double<->Doubles extra diag elements
interface: ezfio,provider,ocaml
default: False
[s2_eig]
type: logical
doc: Force the wave function to be an eigenfunction of S^2
doc: Force the wave function to be an eigenfunction of |S^2|
interface: ezfio,provider,ocaml
default: True
[used_weight]
type: integer
doc: 0: 1/(c_0^2), 1: 1/N_states, 2: input state-average weight, 3: 1/(Norm_L3(Psi))
doc: 0: 1./(c_0^2), 1: 1/N_states, 2: input state-average weight, 3: 1/(Norm_L3(Psi))
interface: ezfio,provider,ocaml
default: 0
@ -54,51 +48,39 @@ default: 0.999
[n_int]
interface: ezfio
doc: n_int
doc: Number of integers required to represent bitstrings (set in module :ref:`bitmasks`)
type: N_int_number
[bit_kind]
interface: ezfio
doc: bit_kind
doc: (set in module :ref:`bitmasks`)
type: Bit_kind
[mo_label]
interface: ezfio
doc: mo_label
doc: Label of the |MOs| on which the determinants are expressed
type: character*(64)
[n_det]
interface: ezfio
doc: n_det
doc: Number of determinants in the current wave function
type: integer
[psi_coef]
interface: ezfio
doc: psi_coef
doc: Coefficients of the wave function
type: double precision
size: (determinants.n_det,determinants.n_states)
[psi_det]
interface: ezfio
doc: psi_det
doc: Determinants of the variational space
type: integer*8
size: (determinants.n_int*determinants.bit_kind/8,2,determinants.n_det)
[det_occ]
interface: ezfio,provider
doc: det_occ
type: integer
size: (electrons.elec_alpha_num,determinants.n_det,2)
[det_coef]
interface: ezfio,provider
doc: det_coef
type: double precision
size: (determinants.n_det)
[expected_s2]
interface: ezfio
doc: Expected value of S^2
doc: Expected value of |S^2|
type: double precision
[target_energy]
@ -109,13 +91,13 @@ default: 0.
[store_full_H_mat]
type: logical
doc: If True, the Davidson diagonalization is performed by storing the full H matrix up to n_det_max_stored. Be careful, it can cost a lot of memory but can also save a lot of CPU time
doc: If True, the Davidson diagonalization is performed by storing the full |H| matrix up to n_det_max_stored. Be careful, it can cost a lot of memory but can also save a lot of CPU time
interface: ezfio,provider,ocaml
default: False
[n_det_max_stored]
type: Det_number_max
doc: Maximum number of determinants for which the full h matrix is stored. be careful, the memory requested scales as 10*n_det_max_stored**2. for instance, 90000 determinants represent a matrix of size 60 Gb.
doc: Maximum number of determinants for which the full |H| matrix is stored. be careful, the memory requested scales as 10*n_det_max_stored**2. for instance, 90000 determinants represents a matrix of size 60 Gb.
interface: ezfio,provider,ocaml
default: 90000
@ -125,9 +107,3 @@ doc: Weight of the states in state-average calculations.
interface: ezfio
size: (determinants.n_states)
[zero_doubles]
type: logical
doc: If true, set to zero all the matrix elements for two determinants differing by a double excitation.
interface: ezfio,provider,ocaml
default: False

View File

@ -532,9 +532,6 @@ subroutine i_H_j_s2(key_i,key_j,Nint,hij,s2)
integer :: spin
select case (degree)
case (2)
if (zero_doubles) then
hij = 0.d0
else
call get_double_excitation(key_i,key_j,exc,phase,Nint)
! Mono alpha, mono beta
if (exc(0,1,1) == 1) then
@ -551,7 +548,6 @@ subroutine i_H_j_s2(key_i,key_j,Nint,hij,s2)
exc(1,1,2), &
exc(1,2,1), &
exc(1,2,2) ,mo_integrals_map)
endif
! Double alpha
else if (exc(0,1,1) == 2) then
hij = phase*(get_mo_bielec_integral( &
@ -638,9 +634,6 @@ subroutine i_H_j(key_i,key_j,Nint,hij)
integer :: spin
select case (degree)
case (2)
if (zero_doubles) then
hij = 0.d0
else
call get_double_excitation(key_i,key_j,exc,phase,Nint)
if (exc(0,1,1) == 1) then
! Mono alpha, mono beta
@ -654,7 +647,6 @@ subroutine i_H_j(key_i,key_j,Nint,hij)
exc(1,1,2), &
exc(1,2,1), &
exc(1,2,2) ,mo_integrals_map)
endif
else if (exc(0,1,1) == 2) then
! Double alpha
hij = phase*(get_mo_bielec_integral( &
@ -739,9 +731,6 @@ subroutine i_H_j_phase_out(key_i,key_j,Nint,hij,phase,exc,degree)
call get_excitation_degree(key_i,key_j,degree,Nint)
select case (degree)
case (2)
if (zero_doubles) then
hij = 0.d0
else
call get_double_excitation(key_i,key_j,exc,phase,Nint)
if (exc(0,1,1) == 1) then
! Mono alpha, mono beta
@ -775,7 +764,6 @@ subroutine i_H_j_phase_out(key_i,key_j,Nint,hij,phase,exc,degree)
exc(2,2,2), &
exc(1,2,2) ,mo_integrals_map) )
endif
endif
case (1)
call get_mono_excitation(key_i,key_j,exc,phase,Nint)
!DIR$ FORCEINLINE

View File

@ -1,18 +1,18 @@
[thresh_dressed_ci]
type: Threshold
doc: Threshold on the convergence of the dressed CI energy
doc: Threshold on the convergence of the dressed |CI| energy
interface: ezfio,provider,ocaml
default: 1.e-5
[n_it_max_dressed_ci]
type: Strictly_positive_int
doc: Maximum number of dressed CI iterations
doc: Maximum number of dressed |CI| iterations
interface: ezfio,provider,ocaml
default: 10
[dress_relative_error]
type: Normalized_float
doc: Stop stochastic PT2 when the relative error is smaller than PT2_relative_error
doc: Stop stochastic dressing when the relative error is smaller than :option:`perturbation PT2_relative_error`
interface: ezfio,provider,ocaml
default: 0.001

View File

@ -2,3 +2,6 @@
dress_zmq
=========
Module to facilitate the construction of modules using dressed Hamiltonians, parallelized
with |ZeroMQ|.

View File

@ -1,6 +1,6 @@
================
Electrons Module
================
=========
Electrons
=========
Describes the electrons. For the moment, only the number of alpha and beta electrons
are provided by this module.
@ -9,12 +9,9 @@ are provided by this module.
Assumptions
===========
.. Do not edit this section. It was auto-generated from the
.. NEEDED_MODULES_CHILDREN file by the `update_README.py` script.
* ``elec_num`` >= 0
* ``elec_alpha_num`` >= 0
* ``elec_beta_num`` >= 0
* ``elec_alpha_num`` >= ``elec_beta_num``
* `elec_num` >= 0
* `elec_alpha_num` >= 0
* `elec_beta_num` >= 0
* `elec_alpha_num` >= `elec_beta_num`

View File

@ -1,8 +1,8 @@
==================
Ezfio_files Module
==================
===========
Ezfio_files
===========
This modules essentially contains the name of the EZFIO directory in the
``ezfio_filename`` variable. This is read as the first argument of the
command-line, or as the ``QP_INPUT`` environment variable.
This modules essentially contains the name of the |EZFIO| directory in the
:c:data:`ezfio_filename` variable. This is read as the first argument of the
command-line, or as the :envvar:`QP_INPUT` environment variable.

View File

@ -1,12 +1,12 @@
[energy]
type: double precision
doc: Calculated Selected FCI energy
doc: Calculated Selected |FCI| energy
interface: ezfio
size: (determinants.n_states)
[energy_pt2]
type: double precision
doc: Calculated FCI energy + PT2
doc: Calculated |FCI| energy + |PT2|
interface: ezfio
size: (determinants.n_states)

View File

@ -1,11 +1,12 @@
=====================
Generators_CAS Module
=====================
==============
Generators_CAS
==============
The generator determinants are those filtered by the ``cas_bitmask`` mask.
Module defining the generator determinants as those belonging to a |CAS|.
The |MOs| belonging to the |CAS| are those which were set as active with
the :ref:`qp_set_mo_class` command.
Assumptions
===========
This module is intended to be included in the :file:`NEED` file to define
generators on a |CAS|.
The active space is defined by the ``reference_bitmask``.

View File

@ -1,7 +1,9 @@
======================
Generators_full Module
======================
===============
Generators_full
===============
All the determinants of the wave function are generators. In this way, the Full CI
space is explored.
Module defining the generator determinants as all the determinants of the
variational space.
This module is intended to be included in the :file:`NEED` file to define
a full set of generators.

View File

@ -1,12 +1,12 @@
[max_dim_diis]
type: integer
doc: Maximum size of the DIIS extrapolation procedure
doc: Maximum size of the |DIIS| extrapolation procedure
interface: ezfio,provider,ocaml
default: 15
[threshold_diis]
type: Threshold
doc: Threshold on the convergence of the DIIS error vector during a Hartree-Fock calculation. If 0. is chosen, the square root of thresh_scf will be used.
doc: Threshold on the convergence of the |DIIS| error vector during a Hartree-Fock calculation. If 0. is chosen, the square root of thresh_scf will be used.
interface: ezfio,provider,ocaml
default: 0.
@ -18,19 +18,19 @@ default: 1.e-10
[n_it_scf_max]
type: Strictly_positive_int
doc: Maximum number of SCF iterations
doc: Maximum number of |SCF| iterations
interface: ezfio,provider,ocaml
default: 500
[level_shift]
type: Positive_float
doc: Energy shift on the virtual MOs to improve SCF convergence
doc: Energy shift on the virtual |MOs| to improve |SCF| convergence
interface: ezfio,provider,ocaml
default: 0.2
[scf_algorithm]
type: character*(32)
doc: Type of SCF algorithm used. Possible choices are [ Simple | DIIS]
doc: Type of |SCF| algorithm used. Possible choices are [ Simple | DIIS]
interface: ezfio,provider,ocaml
default: DIIS
@ -47,7 +47,7 @@ interface: ezfio
[no_oa_or_av_opt]
type: logical
doc: If true, skip the (inactive+core) --> (active) and the (active) --> (virtual) orbital rotations within the SCF procedure
doc: If true, skip the (inactive+core) --> (active) and the (active) --> (virtual) orbital rotations within the |SCF| procedure
interface: ezfio,provider,ocaml
default: False

View File

@ -1,27 +1,27 @@
===================
Hartree-Fock Module
===================
============
Hartree-Fock
============
The Hartree-Fock module performs *Restricted* Hartree-Fock calculations (the
spatial part of the MOs is common for alpha and beta spinorbitals).
spatial part of the |MOs| is common for alpha and beta spinorbitals).
The Hartree-Fock program does the following:
#. Compute/Read all the one- and two-electron integrals, and store them in memory
#. Check in the |EZFIO| database if there is a set of MOs. If there is, it will read them as
initial guess. Otherwise, it will create a guess.
#. Perform the SCF iterations
#. Check in the |EZFIO| database if there is a set of |MOs|. If there is, it
will read them as initial guess. Otherwise, it will create a guess.
#. Perform the |SCF| iterations
At each iteration, the MOs are saved in the |EZFIO| database. Hence, if the calculation
At each iteration, the |MOs| are saved in the |EZFIO| database. Hence, if the calculation
crashes for any unexpected reason, the calculation can be restarted by running again
the SCF with the same |EZFIO| database.
the |SCF| with the same |EZFIO| database.
The `DIIS`_ algorithm is implemented, as well as the `level-shifting`_ method.
If the SCF does not converge, try again with a higher value of ``level_shift``.
If the |SCF| does not converge, try again with a higher value of :option:`level_shift`.
To start a calculation from scratch, the simplest way is to remove the
``mo_basis`` directory from the |EZFIO| database, and run the SCF again.
``mo_basis`` directory from the |EZFIO| database, and run the |SCF| again.

View File

@ -1,53 +1,55 @@
[do_direct_integrals]
type: logical
doc: Compute integrals on the fly
interface: ezfio,provider,ocaml
default: False
ezfio_name: direct
[no_vvvv_integrals]
type: logical
doc: If True, computes all integrals except for the integrals having 4 virtual index
interface: ezfio,provider,ocaml
default: False
ezfio_name: no_vvvv_integrals
[no_ivvv_integrals]
type: logical
doc: Can be switched on only if no_vvvv_integrals is True, then do not computes the integrals having 3 virtual index and 1 belonging to the core inactive active orbitals
interface: ezfio,provider,ocaml
default: False
ezfio_name: no_ivvv_integrals
[no_vvv_integrals]
type: logical
doc: Can be switched on only if no_vvvv_integrals is True, then do not computes the integrals having 3 virtual orbitals
interface: ezfio,provider,ocaml
default: False
ezfio_name: no_vvv_integrals
[disk_access_mo_integrals]
type: Disk_access
doc: Read/Write MO integrals from/to disk [ Write | Read | None ]
doc: Read/Write |MO| integrals from/to disk [ Write | Read | None ]
interface: ezfio,provider,ocaml
default: None
[disk_access_ao_integrals]
type: Disk_access
doc: Read/Write AO integrals from/to disk [ Write | Read | None ]
doc: Read/Write |AO| integrals from/to disk [ Write | Read | None ]
interface: ezfio,provider,ocaml
default: None
[ao_integrals_threshold]
type: Threshold
doc: If |<pq|rs>| < ao_integrals_threshold then <pq|rs> is zero
doc: If | (pq|rs) | < `ao_integrals_threshold` then (pq|rs) is zero
interface: ezfio,provider,ocaml
default: 1.e-15
ezfio_name: threshold_ao
[mo_integrals_threshold]
type: Threshold
doc: If |<ij|kl>| < ao_integrals_threshold then <pq|rs> is zero
doc: If | <ij|kl> | < `mo_integrals_threshold` then <ij|kl> is zero
interface: ezfio,provider,ocaml
default: 1.e-15
ezfio_name: threshold_mo
[no_vvvv_integrals]
type: logical
doc: If `True`, computes all integrals except for the integrals having 4 virtual indices
interface: ezfio,provider,ocaml
default: False
ezfio_name: no_vvvv_integrals
[no_ivvv_integrals]
type: logical
doc: Can be switched on only if `no_vvvv_integrals` is `True`, then does not compute the integrals with 3 virtual indices and 1 belonging to the core inactive active orbitals
interface: ezfio,provider,ocaml
default: False
ezfio_name: no_ivvv_integrals
[no_vvv_integrals]
type: logical
doc: Can be switched on only if `no_vvvv_integrals` is `True`, then does not compute the integrals with 3 virtual orbitals
interface: ezfio,provider,ocaml
default: False
ezfio_name: no_vvv_integrals
[do_direct_integrals]
type: logical
doc: Compute integrals on the fly (very slow, only for debugging)
interface: ezfio,provider,ocaml
default: False
ezfio_name: direct

View File

@ -2,17 +2,20 @@
Integrals_Bielec
================
Here, all two-electron integrals (:math:`1/r_{12}`) are computed. As they have
4 indices and many are zero, they are stored in a map, as defined in
``Utils/map_module.f90``. To fetch an AO integral, use the
``get_ao_bielec_integral(i,j,k,l,ao_integrals_map)`` function, and to fetch and
MO integral, use ``get_mo_bielec_integral(i,j,k,l,mo_integrals_map)`` or
``mo_bielec_integral(i,j,k,l)``.
Here, all two-electron integrals (:math:`1/r_{12}`) are computed.
As they have 4 indices and many are zero, they are stored in a map, as defined
in :file:`Utils/map_module.f90`.
To fetch an |AO| integral, use the
`get_ao_bielec_integral(i,j,k,l,ao_integrals_map)` function, and
to fetch an |MO| integral, use
`get_mo_bielec_integral(i,j,k,l,mo_integrals_map)` or
`mo_bielec_integral(i,j,k,l)`.
The conventions are:
* For AO integrals : (ik|jl) = (11|22)
* For MO integrals : <ij|kl> = <12|12>
* For |AO| integrals : (ik|jl) = (11|22)
* For |MO| integrals : <ij|kl> = <12|12>

View File

@ -1,6 +1,6 @@
[n_iter]
interface: ezfio
doc: number of iterations
doc: Number of saved iterations
type:integer
default: 1
@ -12,13 +12,13 @@ size: (100)
[energy_iterations]
interface: ezfio, provider
doc: The energy without a pt2 correction for n_det
doc: The variational energy at each iteration
type: double precision
size: (determinants.n_states,100)
[pt2_iterations]
interface: ezfio, provider
doc: The pt2 correction for n_det
doc: The |PT2| correction at each iteration
type: double precision
size: (determinants.n_states,100)

View File

@ -2,3 +2,4 @@
IterativeSave
=============
Module which saves the computed energies for an extrapolation to the |FCI| limit.

View File

@ -1,4 +1,6 @@
==============
MOGuess Module
==============
=======
MOGuess
=======
Guess for |MOs|.

View File

@ -1,33 +1,33 @@
[mo_tot_num]
type: integer
doc: Total number of molecular orbitals and the size of the keys corresponding
doc: Total number of |MOs|
interface: ezfio
[mo_coef]
type: double precision
doc: coefficient of the ith ao on the jth mo
doc: Coefficient of the i-th |AO| on the j-th |MO|
interface: ezfio
size: (ao_basis.ao_num,mo_basis.mo_tot_num)
[mo_label]
type: character*(64)
doc: Label characterizing the MOS (local, canonical, natural, etc)
doc: Label characterizing the MOS (Local, Canonical, Natural, *etc*)
interface: ezfio
[mo_occ]
type: double precision
doc: MO occupation numbers
doc: |MO| occupation numbers
interface: ezfio
size: (mo_basis.mo_tot_num)
[mo_class]
type: MO_class
doc: Core|Inactive|Active|Virtual|Deleted
doc: [ Core | Inactive | Active | Virtual | Deleted ], as defined by :ref:`qp_set_mo_class`
interface: ezfio, provider
size: (mo_basis.mo_tot_num)
[ao_md5]
type: character*(32)
doc: Ao_md5
doc: MD5 checksum characterizing the |AO| basis set.
interface: ezfio

View File

@ -1,6 +1,6 @@
==========
MOs Module
==========
========
MO_Basis
========
Molecular orbitals are expressed as
@ -8,19 +8,17 @@ Molecular orbitals are expressed as
\phi_k({\bf r}) = \sum_i C_{ik} \chi_k({\bf r})
where :math:`\chi_k` are *normalized* atomic basis set.
The current set of molecular orbitals has a label ``mo_label``.
where :math:`\chi_k` are *normalized* atomic basis functions.
The current set of |MOs| has a label `mo_label`.
When the orbitals are modified, the label should also be updated to keep
everything consistent.
When saving the MOs, the ``mo_basis`` directory of the EZFIO file is copied
in the ``save`` directory, named by the current ``mo_label``. All this is
done with the script named ``save_current_mos.sh`` in the ``scripts`` directory.
ASSUMPTONS
==========
* The AO basis functions are normalized.
When saving the |MOs|, the :file:`mo_basis` directory of the |EZFIO| database
is copied in the :file:`save` directory, named by the current `mo_label`. All
this is done with the script named :file:`save_current_mos.sh` in the
:file:`$QP_ROOT/scripts` directory.

View File

@ -1,24 +1,24 @@
[integral_nuclear]
type: double precision
doc: Nucleus-electron integrals in MO basis set
doc: Nucleus-electron integrals in |MO| basis set
size: (mo_basis.mo_tot_num,mo_basis.mo_tot_num)
interface: ezfio
[integral_kinetic]
type: double precision
doc: Kinetic energy integrals in MO basis set
doc: Kinetic energy integrals in |MO| basis set
size: (mo_basis.mo_tot_num,mo_basis.mo_tot_num)
interface: ezfio
[integral_pseudo]
type: double precision
doc: Pseudopotential integrals in MO basis set
doc: Pseudopotential integrals in |MO| basis set
size: (mo_basis.mo_tot_num,mo_basis.mo_tot_num)
interface: ezfio
[disk_access_mo_one_integrals]
type: Disk_access
doc: Read/Write MO one-electron integrals from/to disk [ Write | Read | None ]
doc: Read/Write |MO| one-electron integrals from/to disk [ Write | Read | None ]
interface: ezfio,provider,ocaml
default: None

View File

@ -2,5 +2,5 @@
MO_one_e_integrals
==================
All the one-electron integrals in MO basis are here.
All the one-electron integrals in |MO| basis are defined here.

View File

@ -2,3 +2,4 @@
MPI
===
Contains all the functions and providers for parallelization with |MPI|.

View File

@ -1,6 +1,6 @@
[do_third_order_1h1p]
type: logical
doc: If true, compute the third order contribution for the 1h1p
doc: If `True`, compute the third order contribution for the 1h1p
interface: ezfio,provider,ocaml
default: True

View File

@ -2,12 +2,4 @@
MRPT_Utils
==========
Needed Modules
==============
.. Do not edit this section It was auto-generated
.. by the `update_README.py` script.
Documentation
=============
.. Do not edit this section It was auto-generated
.. by the `update_README.py` script.
Subroutines and providers required for |MRPT|.

View File

@ -28,6 +28,6 @@ interface: ezfio,provider,ocaml
default: None
[nuclear_repulsion]
doc: Nuclear repulsion (Computed automaticaly or Read in the EZFIO)
doc: Nuclear repulsion (Computed automaticaly or Read in the |EZFIO|)
type:double precision
interface: ezfio

View File

@ -1,6 +1,6 @@
=============
Nuclei Module
=============
======
Nuclei
======
This module contains data relative to the nuclei (coordinates, charge,
nuclear repulsion energy, etc).

View File

@ -1,46 +1,26 @@
[do_pt2]
type: logical
doc: If true, compute the PT2
doc: If `True`, compute the |PT2| contribution
interface: ezfio,provider,ocaml
default: True
[PT2_max]
type: PT2_energy
doc: The selection process stops when the largest PT2 (for all the state) is lower
than pt2_max in absolute value
doc: The selection process stops when the largest |PT2| (for all the state) is lower
than `pt2_max` in absolute value
interface: ezfio,provider,ocaml
default: 0.0001
[PT2_relative_error]
type: Normalized_float
doc: Stop stochastic PT2 when the relative error is smaller than PT2_relative_error
doc: Stop stochastic |PT2| when the relative error is smaller than `PT2_relative_error`
interface: ezfio,provider,ocaml
default: 0.005
[correlation_energy_ratio_max]
type: Normalized_float
doc: The selection process stops at a fixed correlation ratio (useful for getting same accuracy between molecules)
Defined as (E_CI-E_HF)/ (E_CI+PT2 - E_HF). (E_HF) is not required.
interface: ezfio,provider,ocaml
default: 1.00
[threshold_generators_pt2]
type: Threshold
doc: Thresholds on generators (fraction of the norm) for final PT2 calculation
interface: ezfio,provider,ocaml
default: 0.999
[threshold_selectors_pt2]
type: Threshold
doc: Thresholds on selectors (fraction of the norm) for final PT2 calculation
interface: ezfio,provider,ocaml
default: 1.
[correlation_energy_ratio_max]
type: Normalized_float
doc: The selection process stops at a fixed correlation ratio (useful for getting same accuracy between molecules)
Defined as (E_CI-E_HF)/ (E_CI+PT2 - E_HF). (E_HF) is not required.
doc: The selection process stops at a fixed correlation ratio (useful for getting same accuracy between molecules).
Defined as :math:`\frac{E_{CI}-E_{HF}} {E_{CI}+E_{PT2} - E_{HF}}`.
interface: ezfio,provider,ocaml
default: 1.00

View File

@ -1,69 +1,64 @@
===================
Perturbation Module
===================
============
Perturbation
============
All subroutines in `*.irp.f` starting with ``pt2_`` in the current directory are
perturbation computed using the routine ``i_H_psi``. Other cases are not allowed.
The arguments of the ``pt2_`` are always:
All subroutines in ``*.irp.f`` starting with `pt2_` in the current directory are
perturbation computed using the routine `i_H_psi`. Other cases are not allowed.
The arguments of the `pt2_` are always:
subroutine pt2_...( &
psi_ref, &
psi_ref_coefs, &
E_refs, &
det_pert, &
c_pert, &
e_2_pert, &
H_pert_diag, &
Nint, &
ndet, &
n_st )
.. code-block:: fortran
subroutine pt2_...( &
psi_ref, &
psi_ref_coefs, &
E_refs, &
det_pert, &
c_pert, &
e_2_pert, &
H_pert_diag, &
Nint, &
Ndet, &
N_st )
integer, intent(in) :: Nint,ndet,n_st
integer(bit_kind), intent(in) :: psi_ref(Nint,2,ndet)
double precision , intent(in) :: psi_ref_coefs(ndet,n_st)
double precision , intent(in) :: E_refs(n_st)
integer , intent(in) :: Nint,Ndet,N_st
integer(bit_kind), intent(in) :: psi_ref(Nint,2,Ndet)
double precision , intent(in) :: psi_ref_coefs(Ndet,N_st)
double precision , intent(in) :: E_refs(N_st)
integer(bit_kind), intent(in) :: det_pert(Nint,2)
double precision , intent(out) :: c_pert(n_st),e_2_pert(n_st),H_pert_diag
double precision , intent(out) :: c_pert(N_st),e_2_pert(N_st),H_pert_diag
psi_ref
bitstring of the determinants present in the various n_st states
`psi_ref`
bitstring of the determinants present in the various `N_st` states
psi_ref_coefs
coefficients of the determinants on the various n_st states
`psi_ref_coefs`
coefficients of the determinants on the various `N_st` states
E_refs
Energy of the various n_st states
`E_refs`
Energy of the various `N_st` states
det_pert
`det_pert`
Perturber determinant
c_pert
Pertrubative coefficients for the various states
`c_pert`
Perturbative coefficients for the various states
e_2_pert
`e_2_pert`
Perturbative energetic contribution for the various states
H_pert_diag
Diagonal H matrix element of the perturber
`H_pert_diag`
Diagonal |H| matrix element of the perturber
Nint
Should be equal to N_int
`Nint`
Should be equal to `N_int`
Ndet
Number of determinants `i` in Psi on which we apply <det_pert|Hi>
`Ndet`
Number of determinants `i` in |Psi| on which we apply <det_pert | |H| | `i`>
N_st
`N_st`
Number of states
Assumptions
===========
* This is not allowed:
subroutine &
pt2_....

View File

@ -1,88 +1,87 @@
[nucl_charge_remove]
doc: Nuclear charges removed
doc: Nuclear charges removed per atom
type:double precision
size: (nuclei.nucl_num)
interface: ezfio, provider
[pseudo_klocmax]
doc: test
doc: Maximum value of k for the local component
type:integer
interface: ezfio,provider
[pseudo_n_k]
doc: test
doc: Number of gaussians in the local component
type: integer
interface: ezfio,provider
size: (nuclei.nucl_num,pseudo.pseudo_klocmax)
[pseudo_v_k]
doc: test
doc: Coefficients in the local component
type: double precision
interface: ezfio,provider
size: (nuclei.nucl_num,pseudo.pseudo_klocmax)
[pseudo_dz_k]
doc: test
doc: Exponents in the local component
type: double precision
interface: ezfio,provider
size: (nuclei.nucl_num,pseudo.pseudo_klocmax)
[pseudo_lmax]
doc: test
doc: Maximum angular momentum
type:integer
interface: ezfio,provider
[pseudo_kmax]
doc: test
doc: Maximum number of functions in the non-local component
type:integer
interface: ezfio,provider
[pseudo_n_kl]
doc: test
doc: Number of functions in the non-local component
type: integer
interface: ezfio,provider
size: (nuclei.nucl_num,pseudo.pseudo_kmax,0:pseudo.pseudo_lmax)
[pseudo_v_kl]
doc: test
doc: Coefficients in the non-local component
type: double precision
interface: ezfio,provider
size: (nuclei.nucl_num,pseudo.pseudo_kmax,0:pseudo.pseudo_lmax)
[pseudo_dz_kl]
doc: test
doc: Exponents in the non-local component
type: double precision
interface: ezfio,provider
size: (nuclei.nucl_num,pseudo.pseudo_kmax,0:pseudo.pseudo_lmax)
[do_pseudo]
type: logical
doc: Using pseudo potential integral or not
doc: If `True`, pseudo-potentials are used.
interface: ezfio,provider,ocaml
default: False
[pseudo_grid_size]
type: integer
doc: Nb of points of the QMC grid
doc: Nb of points of the grid for the QMC interfaces
interface: ezfio,provider,ocaml
default: 1000
[pseudo_grid_rmax]
type: double precision
doc: R_maxof the QMC grid
doc: R_max of the QMC grid
interface: ezfio,provider,ocaml
default: 10.0
[ao_pseudo_grid]
type: double precision
doc: QMC grid
doc: Grid for the QMC interface
interface: ezfio
size: (ao_basis.ao_num,-pseudo.pseudo_lmax:pseudo.pseudo_lmax,0:pseudo.pseudo_lmax,nuclei.nucl_num,pseudo.pseudo_grid_size)
[mo_pseudo_grid]
type: double precision
doc: QMC grid
doc: Grid for the QMC interface
interface: ezfio
size: (ao_basis.ao_num,-pseudo.pseudo_lmax:pseudo.pseudo_lmax,0:pseudo.pseudo_lmax,nuclei.nucl_num,pseudo.pseudo_grid_size)

View File

@ -1,4 +1,5 @@
=============
Pseudo Module
=============
======
Pseudo
======
This module defines the |EZFIO| parameters of the effective core potentials.

Some files were not shown because too many files have changed in this diff Show More