mirror of
https://github.com/QuantumPackage/qp2.git
synced 2024-10-02 06:20:53 +02:00
Introduced doc
This commit is contained in:
parent
7c59d6febd
commit
b7c7fd7e6f
2
404.html
2
404.html
@ -57,7 +57,7 @@
|
|||||||
|
|
||||||
|
|
||||||
<li>
|
<li>
|
||||||
<a title="Documentation" href="https://quantum-package-scemamamaster.readthedocs.io/">Documentation</a>
|
<a title="Documentation" href="https://quantumpackage.github.io/qp2/doc/index">Documentation</a>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
@ -57,7 +57,7 @@
|
|||||||
|
|
||||||
|
|
||||||
<li>
|
<li>
|
||||||
<a title="Documentation" href="https://quantum-package-scemamamaster.readthedocs.io/">Documentation</a>
|
<a title="Documentation" href="https://quantumpackage.github.io/qp2/doc/index">Documentation</a>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
BIN
doc/_images/cn3_energy.png
Normal file
BIN
doc/_images/cn3_energy.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 9.1 KiB |
BIN
doc/_images/qp2.png
Normal file
BIN
doc/_images/qp2.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 40 KiB |
BIN
doc/_images/speedup_davidson.png
Normal file
BIN
doc/_images/speedup_davidson.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 8.5 KiB |
BIN
doc/_images/speedup_pt2.png
Normal file
BIN
doc/_images/speedup_pt2.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 8.7 KiB |
158
doc/_sources/appendix/benchmarks.rst.txt
Normal file
158
doc/_sources/appendix/benchmarks.rst.txt
Normal file
@ -0,0 +1,158 @@
|
|||||||
|
Benchmarks
|
||||||
|
==========
|
||||||
|
|
||||||
|
The determinant selection, MR-PT2 and diagonalization are parallelized with
|
||||||
|
distributed parallelism. Benchmarks for the [NH2-CH-NH2]+ molecule in the
|
||||||
|
aug-cc-pVDZ basis set are presented with up to 50 nodes (1800 cores) on
|
||||||
|
CALMIP's `Olympe`_ supercomputer, and 200 nodes (9600 cores) on GENCI's
|
||||||
|
`Irene`_ supercomputer. This represents an active space of 18 electrons
|
||||||
|
in 111 MOs.
|
||||||
|
|
||||||
|
- Nodes of Olympe have two Skylake sockets, 2x18 cores @ 2.3GHz.
|
||||||
|
- Nodes of Irene have two Skylake sockets, 2x24 cores @ 2.7GHz.
|
||||||
|
|
||||||
|
Convergence of the energy
|
||||||
|
-------------------------
|
||||||
|
|
||||||
|
.. figure:: /_static/cn3_energy.png
|
||||||
|
:alt: Convergence of the energy.
|
||||||
|
|
||||||
|
Convergence of the variational energy, with and without the PT2 correction.
|
||||||
|
Both energies converge to the (frozen core) FCI energy.
|
||||||
|
The plot is displayed for the ground state and for the 1st excited state.
|
||||||
|
|
||||||
|
|
||||||
|
Variational energy
|
||||||
|
^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
================ ================ ================ ===============
|
||||||
|
Number of dets Ground state Excited state Excitation (eV)
|
||||||
|
================ ================ ================ ===============
|
||||||
|
7 -149.489 186 -149.207 354 7.67
|
||||||
|
123 -149.536 265 -149.261 860 7.47
|
||||||
|
3 083 -149.685 606 -149.404 450 7.65
|
||||||
|
29 409 -149.826 151 -149.547 275 7.59
|
||||||
|
168 595 -149.900 352 -149.626 058 7.46
|
||||||
|
1 322 537 -149.946 655 -149.675 032 7.39
|
||||||
|
8 495 334 -149.972 032 -149.704 145 7.29
|
||||||
|
9 356 952 -149.973 375 -149.706 822 7.25
|
||||||
|
42 779 636 -149.987 370 -149.721 470 7.24
|
||||||
|
186 978 487 -149.998 582 -149.733 039 7.23
|
||||||
|
================ ================ ================ ===============
|
||||||
|
|
||||||
|
|
||||||
|
Variational energy + PT2 correction
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
================ ================ ================ ===============
|
||||||
|
Number of dets Ground state Excited state Excitation (eV)
|
||||||
|
================ ================ ================ ===============
|
||||||
|
7 -150.161 107 -149.904 883 6.97
|
||||||
|
123 -150.116 958 -149.849 465 7.28
|
||||||
|
3 083 -150.043 5(2) -149.780 8(2) 7.15
|
||||||
|
29 409 -150.022 2(2) -149.758 3(2) 7.18
|
||||||
|
168 595 -150.019 9(1) -149.754 5(1) 7.22
|
||||||
|
1 322 537 -150.017 89(7) -149.752 55(7) 7.22
|
||||||
|
8 495 334 -150.015 97(4) -149.750 87(5) 7.21
|
||||||
|
9 356 952 -150.015 89(3) -149.750 66(3) 7.22
|
||||||
|
42 959 496 -150.016 75(2) -149.751 88(2) 7.21
|
||||||
|
186 978 487 -150.017 51(2) -149.752 90(2) 7.20
|
||||||
|
================ ================ ================ ===============
|
||||||
|
|
||||||
|
|
||||||
|
Davidson's diagonalization
|
||||||
|
--------------------------
|
||||||
|
|
||||||
|
We present the parallel speedup curve, and the wall-clock time in seconds
|
||||||
|
required to compute one iteration for two wave functions measured on Olympe
|
||||||
|
and Irene.
|
||||||
|
|
||||||
|
.. figure:: /_static/speedup_davidson.png
|
||||||
|
:alt: Parallel speedup of Davidson's diagonalization.
|
||||||
|
|
||||||
|
Parallel speedup of Davidson's diagonalization measured on Olympe and Irene.
|
||||||
|
|
||||||
|
Olympe
|
||||||
|
^^^^^^
|
||||||
|
|
||||||
|
======================= ====================== =======================
|
||||||
|
Number of 36-core Nodes 9 356 952 determinants 42 959 496 determinants
|
||||||
|
======================= ====================== =======================
|
||||||
|
1 775.55 11 198.70
|
||||||
|
5 169.88 2 288.58
|
||||||
|
10 93.22 1 213.95
|
||||||
|
20 56.86 626.41
|
||||||
|
30 43.76 445.65
|
||||||
|
40 36.18 350.25
|
||||||
|
50 33.67 295.25
|
||||||
|
======================= ====================== =======================
|
||||||
|
|
||||||
|
|
||||||
|
Irene
|
||||||
|
^^^^^
|
||||||
|
|
||||||
|
======================= ====================== =======================
|
||||||
|
Number of 48-core Nodes 9 356 952 determinants 42 959 496 determinants
|
||||||
|
======================= ====================== =======================
|
||||||
|
1 572.98 9 154.30 *
|
||||||
|
10 72.55 922.07
|
||||||
|
25 38.88 412.34
|
||||||
|
50 27.95 241.35
|
||||||
|
75 27.54 183.63
|
||||||
|
100 27.86 165.68
|
||||||
|
150 28.14 134.05
|
||||||
|
200 27.77 134.64
|
||||||
|
======================= ====================== =======================
|
||||||
|
|
||||||
|
|
||||||
|
PT2 correction
|
||||||
|
--------------
|
||||||
|
|
||||||
|
We present the parallel speedup curve, and the wall-clock time in seconds
|
||||||
|
required to compute the PT2 correction for two wave functions measured on
|
||||||
|
Olympe and Irene.
|
||||||
|
|
||||||
|
|
||||||
|
.. figure:: /_static/speedup_pt2.png
|
||||||
|
:alt: Parallel speedup of the PT2 computation of the ground state.
|
||||||
|
|
||||||
|
Parallel speedup of the PT2 computation of the ground state measured
|
||||||
|
on Olympe and Irene.
|
||||||
|
|
||||||
|
|
||||||
|
Olympe
|
||||||
|
^^^^^^
|
||||||
|
|
||||||
|
======================= ====================== =======================
|
||||||
|
Number of 36-core Nodes Ground state (9.3M) Excited state (9.3M)
|
||||||
|
======================= ====================== =======================
|
||||||
|
1 7 883.74 9 829.19
|
||||||
|
5 1 629.06 2 022.36
|
||||||
|
10 832.89 1 029.91
|
||||||
|
20 440.76 537.37
|
||||||
|
30 303.31 378.69
|
||||||
|
40 246.12 296.31
|
||||||
|
50 201.84 241.55
|
||||||
|
======================= ====================== =======================
|
||||||
|
|
||||||
|
|
||||||
|
Irene
|
||||||
|
^^^^^
|
||||||
|
|
||||||
|
======================= ====================== ======================= ====================== =======================
|
||||||
|
Number of 48-core Nodes Ground state (9.3M) Excited state (9.3M) Ground state (42.9M) Excited state (42.9M)
|
||||||
|
======================= ====================== ======================= ====================== =======================
|
||||||
|
1 4 935.81 6 152.29 24 586.62 37 440.59
|
||||||
|
10 525.95 652.23 2 458.66 3 086.19
|
||||||
|
25 237.47 286.06 1 041.69 1 295.43
|
||||||
|
50 144.39 174.12 588.35 724.25
|
||||||
|
75 109.13 129.17 446.74 537.59
|
||||||
|
100 100.75 103.43 367.21 450.32
|
||||||
|
150 82.04 91.77 298.63 358.25
|
||||||
|
200 75.62 85.25 268.96 312.23
|
||||||
|
======================= ====================== ======================= ====================== =======================
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
48
doc/_sources/appendix/contributors.rst.txt
Normal file
48
doc/_sources/appendix/contributors.rst.txt
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
============
|
||||||
|
Contributors
|
||||||
|
============
|
||||||
|
|
||||||
|
The |qp| is maintained by
|
||||||
|
|
||||||
|
Anthony Scemama
|
||||||
|
| `Laboratoire de Chimie et Physique Quantiques <http://www.lcpq.ups-tlse.fr/>`_,
|
||||||
|
| CNRS - Université Paul Sabatier
|
||||||
|
| Toulouse, France
|
||||||
|
| scemama@irsamc.ups-tlse.fr
|
||||||
|
|
||||||
|
|
||||||
|
Emmanuel Giner
|
||||||
|
| `Laboratoire de Chimie Theorique <http://www.lct.jussieu.fr/>`_
|
||||||
|
| CNRS - Sorbonne Université
|
||||||
|
| Paris, France
|
||||||
|
| emmanuel.giner@lct.jussieu.fr
|
||||||
|
|
||||||
|
|
||||||
|
Thomas Applencourt
|
||||||
|
| `Argonne Leadership Computing Facility <http://www.alcf.anl.gov/>`_
|
||||||
|
| Argonne, USA
|
||||||
|
| tapplencourt@anl.gov
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
The following people have contributed (by alphabetical order):
|
||||||
|
|
||||||
|
* Anouar Benali
|
||||||
|
* Chandler Bennet
|
||||||
|
* Michel Caffarel
|
||||||
|
* Grégoire David
|
||||||
|
* Madeline Galbraith
|
||||||
|
* Yann Garniron
|
||||||
|
* Kevin Gasperich
|
||||||
|
* Pierre-François Loos
|
||||||
|
* Barry Moore
|
||||||
|
* Julien Paquier
|
||||||
|
* Barthélémy Pradines
|
||||||
|
* Lorenzo Tenti
|
||||||
|
* Julien Toulouse
|
||||||
|
* Mikaël Véril
|
||||||
|
|
||||||
|
|
||||||
|
If you have contributed and don't appear in this list, please modify this file
|
||||||
|
and submit a pull request.
|
||||||
|
|
9
doc/_sources/appendix/license.rst.txt
Normal file
9
doc/_sources/appendix/license.rst.txt
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
License
|
||||||
|
=======
|
||||||
|
|
||||||
|
.. include:: LICENSE
|
||||||
|
:literal:
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
8
doc/_sources/appendix/research.rst.txt
Normal file
8
doc/_sources/appendix/research.rst.txt
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
Some research made with the |qp|
|
||||||
|
================================
|
||||||
|
|
||||||
|
.. bibliography:: /research.bib
|
||||||
|
:style: unsrt
|
||||||
|
:all:
|
||||||
|
|
||||||
|
|
57
doc/_sources/index.rst.txt
Normal file
57
doc/_sources/index.rst.txt
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
.. Quantum Package documentation master file, created by
|
||||||
|
sphinx-quickstart on Thu Oct 18 11:53:23 2018.
|
||||||
|
You can adapt this file completely to your liking, but it should at least
|
||||||
|
contain the root `toctree` directive.
|
||||||
|
|
||||||
|
.. include:: intro/intro.rst
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.. toctree::
|
||||||
|
:maxdepth: 1
|
||||||
|
:caption: Introduction
|
||||||
|
:hidden:
|
||||||
|
|
||||||
|
intro/install
|
||||||
|
intro/selected_ci
|
||||||
|
|
||||||
|
.. toctree::
|
||||||
|
:maxdepth: 1
|
||||||
|
:caption: User's guide
|
||||||
|
:glob:
|
||||||
|
:hidden:
|
||||||
|
|
||||||
|
users_guide/quickstart
|
||||||
|
users_guide/interfaces
|
||||||
|
users_guide/excited_states
|
||||||
|
users_guide/natural_orbitals
|
||||||
|
users_guide/printing
|
||||||
|
users_guide/plugins
|
||||||
|
users_guide/qp_plugins
|
||||||
|
users_guide/index
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.. toctree::
|
||||||
|
:maxdepth: 1
|
||||||
|
:caption: Programmer's guide
|
||||||
|
:hidden:
|
||||||
|
|
||||||
|
programmers_guide/programming
|
||||||
|
programmers_guide/ezfio
|
||||||
|
/programmers_guide/plugins
|
||||||
|
programmers_guide/index
|
||||||
|
programmers_guide/plugins
|
||||||
|
|
||||||
|
|
||||||
|
.. toctree::
|
||||||
|
:maxdepth: 1
|
||||||
|
:caption: Appendix
|
||||||
|
:hidden:
|
||||||
|
|
||||||
|
appendix/benchmarks
|
||||||
|
appendix/research
|
||||||
|
appendix/license
|
||||||
|
appendix/contributors
|
||||||
|
|
||||||
|
|
2
doc/_sources/intro/install.rst.txt
Normal file
2
doc/_sources/intro/install.rst.txt
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
.. include:: ../../../INSTALL.rst
|
||||||
|
|
84
doc/_sources/intro/intro.rst.txt
Normal file
84
doc/_sources/intro/intro.rst.txt
Normal file
@ -0,0 +1,84 @@
|
|||||||
|
========
|
||||||
|
The |qp|
|
||||||
|
========
|
||||||
|
|
||||||
|
.. image:: /_static/qp2.png
|
||||||
|
:align: center
|
||||||
|
:width: 200px
|
||||||
|
:alt: Quantum Package
|
||||||
|
|
||||||
|
|
||||||
|
What it is
|
||||||
|
==========
|
||||||
|
|
||||||
|
The |qp| is an open-source **programming environment** for quantum chemistry.
|
||||||
|
It has been built from the **developper** point of view in order to help
|
||||||
|
the design of new quantum chemistry methods,
|
||||||
|
especially for `wave function theory <https://en.wikipedia.org/wiki/Ab_initio_quantum_chemistry_methods>`_ (|WFT|).
|
||||||
|
|
||||||
|
From the **user** point of view, the |qp| proposes a stand-alone path
|
||||||
|
to use optimized selected configuration interaction |sCI| based on the
|
||||||
|
|CIPSI| algorithm that can efficiently reach near-full configuration interaction
|
||||||
|
|FCI| quality for relatively large systems (see for instance :cite:`Caffarel_2016,Caffarel_2016.2,Loos_2018,Scemama_2018,Dash_2018,Garniron_2017.2,Loos_2018,Garniron_2018,Giner2018Oct`).
|
||||||
|
To have a simple example of how to use the |CIPSI| program, go to the `users_guide/quickstart`.
|
||||||
|
|
||||||
|
|
||||||
|
The main goal is the development of selected configuration interaction |sCI|
|
||||||
|
methods and multi-reference perturbation theory |MRPT| in the
|
||||||
|
determinant-driven paradigm. It also contains the very basics of Kohn-Sham `density functional theory <https://en.wikipedia.org/wiki/Density_functional_theory>`_ |KS-DFT| and `range-separated hybrids <https://aip.scitation.org/doi/10.1063/1.1383587>`_ |RSH|.
|
||||||
|
|
||||||
|
The determinant-driven framework allows the programmer to include any arbitrary set of
|
||||||
|
determinants in the variational space, and thus gives a complete freedom in the methodological
|
||||||
|
development. The basic ingredients of |RSH| together with those of the |WFT| framework available in the |qp| library allows one to easily develop range-separated DFT (|RSDFT|) approaches (see for instance the plugins at `<https://gitlab.com/eginer/qp_plugins_eginer>`_).
|
||||||
|
|
||||||
|
All the programs are developed with the `IRPF90`_ code generator, which considerably simplifies
|
||||||
|
the collaborative development, and the development of new features.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
What it is not
|
||||||
|
==============
|
||||||
|
|
||||||
|
The |qp| is *not* a general purpose quantum chemistry program.
|
||||||
|
First of all, it is a *library* to develop new theories and algorithms in quantum chemistry.
|
||||||
|
Therefore, beside the use of the programs of the core modules, the users of the |qp| should develop their own programs.
|
||||||
|
|
||||||
|
The |qp| has been designed specifically for |sCI|, so all the
|
||||||
|
algorithms which are programmed are not adapted to run SCF or DFT calculations
|
||||||
|
on thousands of atoms. Currently, the systems targeted have less than 600
|
||||||
|
molecular orbitals. This limit is due to the memory bottleneck induced by the storring of the two-electron integrals (see ``mo_two_e_integrals`` and ``ao_two_e_integrals``).
|
||||||
|
|
||||||
|
The |qp| is *not* a massive production code. For conventional
|
||||||
|
methods such as Hartree-Fock, CISD or MP2, the users are recommended to use the
|
||||||
|
existing standard production codes which are designed to make these methods run
|
||||||
|
fast. Again, the role of the |qp| is to make life simple for the
|
||||||
|
developer. Once a new method is developed and tested, the developer is encouraged
|
||||||
|
to consider re-expressing it with an integral-driven formulation, and to
|
||||||
|
implement the new method in open-source production codes, such as `NWChem`_
|
||||||
|
or |GAMESS|.
|
||||||
|
|
||||||
|
|
||||||
|
A few examples of applications
|
||||||
|
==============================
|
||||||
|
|
||||||
|
Multiple programs were developed with the |qp|, such as:
|
||||||
|
|
||||||
|
- Selected Full-CI + Epstein-Nesbet PT2 (CIPSI) :cite:`Caffarel_2016,Caffarel_2016.2,Loos_2018,Scemama_2018,Dash_2018`
|
||||||
|
- Hybrid stochastic/deterministic MR-PT2 :cite:`Garniron_2017.2,Loos_2018`
|
||||||
|
- Orbital optimization for open-shell systems :cite:`Giner2016Mar,Giner_2017.3`
|
||||||
|
- CIS, CISD, MP2
|
||||||
|
- Selected CISD
|
||||||
|
- Jeziorsky-Monkhorst MR-PT2 :cite:`Giner_2017`
|
||||||
|
- Effective Hamiltonian for variational MR wave functions :cite:`Giner_2017.2`
|
||||||
|
- Selected CAS+SD
|
||||||
|
- Selected difference-dedicated CI (DD-CI)
|
||||||
|
- Multi-Reference Coupled Cluster (MR-CCSD) :cite:`Giner_2016,Garniron_2017`
|
||||||
|
- Shifted-Bk with CIPSI :cite:`Garniron_2018`
|
||||||
|
- CIPSI with range-separated DFT (plugins at `<https://gitlab.com/eginer/qp_plugins_eginer>`_)
|
||||||
|
- DFT for basis set corrections :cite:`Giner_2018`
|
||||||
|
|
||||||
|
All these programs can generate ground and excited states, and spin pure wave
|
||||||
|
functions (eigenstates of |S^2|).
|
||||||
|
|
||||||
|
|
||||||
|
|
175
doc/_sources/intro/selected_ci.rst.txt
Normal file
175
doc/_sources/intro/selected_ci.rst.txt
Normal file
@ -0,0 +1,175 @@
|
|||||||
|
Selected Configuration Interaction
|
||||||
|
==================================
|
||||||
|
|
||||||
|
.. default-role:: cite
|
||||||
|
|
||||||
|
These methods rely on the same principle as the usual |CI| approaches, except
|
||||||
|
that determinants aren't chosen *a priori* based on an occupation or
|
||||||
|
excitation criterion, but selected *on the fly* among the entire set of
|
||||||
|
determinants based on their estimated contribution to the |FCI| wave function.
|
||||||
|
It has been noticed long ago that, even inside a predefined subspace of
|
||||||
|
determinants, only a small number significantly contributes to the wave
|
||||||
|
function. `Bytautas_2009,Anderson_2018` Therefore, an *on the fly*
|
||||||
|
selection of determinants is a rather natural idea that has been proposed
|
||||||
|
in the late 60's by Bender and Davidson `Bender_1969` as well as Whitten
|
||||||
|
and Hackmeyer. `Whitten_1969`
|
||||||
|
|
||||||
|
The approach we are using in the |qp| is based on |CIPSI| developed by Huron,
|
||||||
|
Rancurel and Malrieu, `Huron_1973` that iteratively selects *external*
|
||||||
|
determinants (determinants which are not present in the variational space)
|
||||||
|
using a perturbative criterion.
|
||||||
|
|
||||||
|
There is however a computational downside. In *a priori* selected
|
||||||
|
methods, the rule by which determinants are selected is known *a
|
||||||
|
priori*, and therefore, one can map a particular determinant to some row or
|
||||||
|
column index. `Knowles_1984` As a consequence, it can be systematically
|
||||||
|
determined to which matrix element of :math:`\hat H` a two-electron integral
|
||||||
|
contributes. This allows for the implementation of so-called
|
||||||
|
*integral-driven* methods, that work essentially by iterating over
|
||||||
|
integrals and are very fast.
|
||||||
|
|
||||||
|
On the contrary, in selected methods an explicit list of determinants has to be
|
||||||
|
kept, and there is no immediate way to know whether a determinant has been
|
||||||
|
selected, or what its index is in the list. Consequently, a
|
||||||
|
*determinant-driven* approach will be used, in which the loops run over
|
||||||
|
determinants rather than integrals. This can be a lot more computationally
|
||||||
|
expensive since the number of determinants is typically much larger than the
|
||||||
|
number of integrals.
|
||||||
|
|
||||||
|
What makes *determinant-driven* approaches possible here is:
|
||||||
|
|
||||||
|
- the fact that selected |CI| methods will keep the number of determinants small
|
||||||
|
enough, orders of magnitude smaller than in *a priori* selected methods for
|
||||||
|
wave functions with equal energies,
|
||||||
|
- an efficient way to compare determinants in order to extract the
|
||||||
|
corresponding excitation operators `Scemama_2013`,
|
||||||
|
- an intense filtering of the internal space to avoid as much as possible
|
||||||
|
determinant comparisons of disconnected determinants,
|
||||||
|
- a fast retrieval of the corresponding two-electron integrals in memory.
|
||||||
|
|
||||||
|
|
||||||
|
Simple Algorithm
|
||||||
|
----------------
|
||||||
|
|
||||||
|
.. default-role:: math
|
||||||
|
|
||||||
|
.. |SetDI| replace:: `\{|D_I\rangle\}^{(n)}`
|
||||||
|
.. |Psi_n| replace:: `|\Psi^{(n)}\rangle`
|
||||||
|
.. |H| replace:: `\hat H`
|
||||||
|
.. |kalpha| replace:: `|\alpha\rangle`
|
||||||
|
.. |kalpha_star| replace:: `\{ |\alpha \rangle \}_\star ^{(n)}`
|
||||||
|
.. |ealpha| replace:: `e_\alpha`
|
||||||
|
.. |EPT| replace:: `E_\text{PT2}`
|
||||||
|
|
||||||
|
The variational wave function |Psi_n| is defined over a set of determinants
|
||||||
|
|SetDI| in which we diagonalize |H|.
|
||||||
|
|
||||||
|
.. math::
|
||||||
|
|
||||||
|
|\Psi^{(n)}\rangle = \sum_{I} c_I^{(n)} |D_I\rangle
|
||||||
|
|
||||||
|
|
||||||
|
The determinants in |SetDI| will be characterized as **internal**.
|
||||||
|
|
||||||
|
#. For all **external** determinants |kalpha| `\notin` |SetDI|, compute the
|
||||||
|
Epstein-Nesbet second-order perturbative contribution to the energy
|
||||||
|
|
||||||
|
.. math::
|
||||||
|
|
||||||
|
e_\alpha = \frac{ \langle \Psi^{(n)}| {\hat H} | \alpha \rangle^2 }{E^{(n)} - \langle \alpha | {\hat H} | \alpha \rangle }.
|
||||||
|
|
||||||
|
`E^{(n)}` is the variational energy of the wave function at the current
|
||||||
|
iteration. Note that another perturbation theory could be used to estimate
|
||||||
|
|ealpha|.
|
||||||
|
|
||||||
|
#. An estimate of the total missing correlation energy can be computed
|
||||||
|
by summing all the |ealpha| contributions
|
||||||
|
|
||||||
|
.. math::
|
||||||
|
|
||||||
|
E_\text{PT2} & = \sum_{\alpha} e_\alpha \\
|
||||||
|
E_\text{FCI} & \approx E + E_\text{PT2}
|
||||||
|
|
||||||
|
#. |kalpha_star|, the subset of determinants |kalpha| with the largest
|
||||||
|
contributions |ealpha|, is added to the variational space
|
||||||
|
|
||||||
|
.. math::
|
||||||
|
|
||||||
|
\{ |D_I \rangle \}^{(n+1)} = \{|D_I\rangle\}^{(n)} \cup \{ |\alpha\rangle \}_\star^{(n)}
|
||||||
|
|
||||||
|
|
||||||
|
#. Go to iteration n+1, or exit on some criterion (number of determinants in
|
||||||
|
the wave function, low |EPT|, ...).
|
||||||
|
|
||||||
|
|
||||||
|
Of course, such a procedure can be applied on any state and therefore can allow to treat both ground and excited states.
|
||||||
|
|
||||||
|
|
||||||
|
Stochastic approximations for the selection and the computation of |EPT|
|
||||||
|
------------------------------------------------------------------------
|
||||||
|
|
||||||
|
The simple algorithm would be too slow to make calculations possible. Instead,
|
||||||
|
the |QP| uses a stochastic algorithm :cite:`Garniron_2017.2` in order to compute
|
||||||
|
efficiently the |EPT| and to select on-the-fly the best Slater determinants.
|
||||||
|
|
||||||
|
In such a way, the selection step introduces no extra cost with respect to the |EPT| calculation and the |EPT|
|
||||||
|
itself is unbiased but associated with a statistical error bar rapidly converging.
|
||||||
|
|
||||||
|
|
||||||
|
Deterministic approximations for the selection
|
||||||
|
----------------------------------------------
|
||||||
|
|
||||||
|
The following description was used in a previous version of the |CIPSI| algorithm
|
||||||
|
which was less efficient. Nonetheless, it introduces the notions of **generator** and **selector** determinants
|
||||||
|
which are much more general than the |CIPSI| algorithm that targets the |FCI| and can be used to realize virtually
|
||||||
|
**any kind of CI in a selected way**.
|
||||||
|
|
||||||
|
|
||||||
|
We define **generator** determinants, as determinants of the internal space
|
||||||
|
from which the |kalpha| are generated.
|
||||||
|
We then define **selector** determinants, a truncated wave function
|
||||||
|
used in the computation of |ealpha|.
|
||||||
|
|
||||||
|
For calculations in the |FCI| space, the determinants are sorted by decreasing
|
||||||
|
`|c_I|^2`, and thresholds are used on the squared norm of the wave function.
|
||||||
|
The default is to use :option:`determinants threshold_generators` = 0.99 for
|
||||||
|
the generators, and :option:`determinants threshold_selectors` = 0.999 for the
|
||||||
|
selectors.
|
||||||
|
|
||||||
|
This is nothing but the 3-class |CIPSI| approximation to accelerate the selection,
|
||||||
|
:cite:`Evangelisti_1983` where instead of generating all possible |kalpha|,
|
||||||
|
we only generate a subset which are likely to be selected.
|
||||||
|
|
||||||
|
|
||||||
|
The computation of |EPT| using a truncated wave function is biased,
|
||||||
|
so if an accurate estimate of the |FCI| energy is desired, it is preferable
|
||||||
|
to recompute |EPT| with the hybrid deterministic/stochastic algorithm
|
||||||
|
:cite:`Garniron_2017b` which is unbiased (this is the default).
|
||||||
|
|
||||||
|
|
||||||
|
Modifying the selection space
|
||||||
|
-----------------------------
|
||||||
|
|
||||||
|
By changing the definition of generators, and the rules for the generation of
|
||||||
|
the |kalpha|, it is easy to define selected variants of traditional |CI| methods.
|
||||||
|
|
||||||
|
For example, if one defines the |HF| determinant as the only generator,
|
||||||
|
one will produce a selected |CISD|. If one also changes the rules for the generation
|
||||||
|
to generate only the double excitations, one will have a selected |CID|.
|
||||||
|
|
||||||
|
The generators can also be chosen as determinants belonging to a |CAS|. If the
|
||||||
|
rules allow only for excitations inside the |CAS|, we obtain a selected
|
||||||
|
|CAS| |CI|. If the rules allow for excitations in the |FCI| space, we obtain
|
||||||
|
a selected |CAS-SD|. And if one add the rule to prevent for doing double
|
||||||
|
excitations with two holes and two particles outside of the active space, one
|
||||||
|
obtains a selected |DDCI| method.
|
||||||
|
|
||||||
|
All such things can be done very easily when programming the |qp|.
|
||||||
|
|
||||||
|
-----------------------------------
|
||||||
|
|
||||||
|
.. bibliography:: selected.bib
|
||||||
|
:style: unsrt
|
||||||
|
:labelprefix: A
|
||||||
|
|
||||||
|
|
1245
doc/_sources/modules/ao_basis.rst.txt
Normal file
1245
doc/_sources/modules/ao_basis.rst.txt
Normal file
File diff suppressed because it is too large
Load Diff
2015
doc/_sources/modules/ao_one_e_ints.rst.txt
Normal file
2015
doc/_sources/modules/ao_one_e_ints.rst.txt
Normal file
File diff suppressed because it is too large
Load Diff
901
doc/_sources/modules/ao_two_e_erf_ints.rst.txt
Normal file
901
doc/_sources/modules/ao_two_e_erf_ints.rst.txt
Normal file
@ -0,0 +1,901 @@
|
|||||||
|
.. _module_ao_two_e_erf_ints:
|
||||||
|
|
||||||
|
.. program:: ao_two_e_erf_ints
|
||||||
|
|
||||||
|
.. default-role:: option
|
||||||
|
|
||||||
|
======================
|
||||||
|
ao_two_e_erf_ints
|
||||||
|
======================
|
||||||
|
|
||||||
|
Here, all two-electron integrals (:math:`erf(\mu r_{12})/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`.
|
||||||
|
|
||||||
|
The main parameter of this module is :option:`ao_two_e_erf_ints mu_erf` which is the range-separation parameter.
|
||||||
|
|
||||||
|
To fetch an |AO| integral, use the
|
||||||
|
`get_ao_two_e_integral_erf(i,j,k,l,ao_integrals_erf_map)` function.
|
||||||
|
|
||||||
|
|
||||||
|
The conventions are:
|
||||||
|
* For |AO| integrals : (ij|kl) = (11|22) = <ik|jl> = <12|12>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
EZFIO parameters
|
||||||
|
----------------
|
||||||
|
|
||||||
|
.. option:: io_ao_two_e_integrals_erf
|
||||||
|
|
||||||
|
Read/Write |AO| integrals with the long range interaction from/to disk [ Write | Read | None ]
|
||||||
|
|
||||||
|
Default: None
|
||||||
|
|
||||||
|
.. option:: mu_erf
|
||||||
|
|
||||||
|
cutting of the interaction in the range separated model
|
||||||
|
|
||||||
|
Default: 0.5
|
||||||
|
|
||||||
|
|
||||||
|
Providers
|
||||||
|
---------
|
||||||
|
|
||||||
|
.. c:var:: ao_integrals_erf_cache
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`ao_two_e_erf_ints/map_integrals_erf.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision, allocatable :: ao_integrals_erf_cache (0:64*64*64*64)
|
||||||
|
|
||||||
|
|
||||||
|
Cache of |AO| integrals for fast access
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`ao_integrals_erf_cache_min`
|
||||||
|
* :c:data:`ao_integrals_erf_map`
|
||||||
|
* :c:data:`ao_two_e_integrals_erf_in_map`
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: ao_integrals_erf_cache_max
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`ao_two_e_erf_ints/map_integrals_erf.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
integer :: ao_integrals_erf_cache_min
|
||||||
|
integer :: ao_integrals_erf_cache_max
|
||||||
|
|
||||||
|
|
||||||
|
Min and max values of the AOs for which the integrals are in the cache
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`ao_num`
|
||||||
|
|
||||||
|
Needed by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`ao_integrals_erf_cache`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: ao_integrals_erf_cache_min
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`ao_two_e_erf_ints/map_integrals_erf.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
integer :: ao_integrals_erf_cache_min
|
||||||
|
integer :: ao_integrals_erf_cache_max
|
||||||
|
|
||||||
|
|
||||||
|
Min and max values of the AOs for which the integrals are in the cache
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`ao_num`
|
||||||
|
|
||||||
|
Needed by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`ao_integrals_erf_cache`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: ao_integrals_erf_map
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`ao_two_e_erf_ints/map_integrals_erf.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
type(map_type) :: ao_integrals_erf_map
|
||||||
|
|
||||||
|
|
||||||
|
|AO| integrals
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`ao_num`
|
||||||
|
|
||||||
|
Needed by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`ao_integrals_erf_cache`
|
||||||
|
* :c:data:`ao_two_e_integrals_erf_in_map`
|
||||||
|
* :c:data:`mo_two_e_int_erf_jj_from_ao`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: ao_two_e_integral_erf_schwartz
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`ao_two_e_erf_ints/providers_ao_erf.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision, allocatable :: ao_two_e_integral_erf_schwartz (ao_num,ao_num)
|
||||||
|
|
||||||
|
|
||||||
|
Needed to compute Schwartz inequalities
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`ao_coef_normalized_ordered_transp`
|
||||||
|
* :c:data:`ao_expo_ordered_transp`
|
||||||
|
* :c:data:`ao_nucl`
|
||||||
|
* :c:data:`ao_num`
|
||||||
|
* :c:data:`ao_power`
|
||||||
|
* :c:data:`ao_prim_num`
|
||||||
|
* :c:data:`n_pt_max_integrals`
|
||||||
|
* :c:data:`nucl_coord`
|
||||||
|
|
||||||
|
Needed by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`mo_two_e_int_erf_jj_from_ao`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: ao_two_e_integrals_erf_in_map
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`ao_two_e_erf_ints/providers_ao_erf.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
logical :: ao_two_e_integrals_erf_in_map
|
||||||
|
|
||||||
|
|
||||||
|
Map of Atomic integrals
|
||||||
|
i(r1) j(r2) 1/r12 k(r1) l(r2)
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`ao_coef_normalized_ordered_transp`
|
||||||
|
* :c:data:`ao_expo_ordered_transp`
|
||||||
|
* :c:data:`ao_integrals_erf_map`
|
||||||
|
* :c:data:`ao_nucl`
|
||||||
|
* :c:data:`ao_num`
|
||||||
|
* :c:data:`ao_power`
|
||||||
|
* :c:data:`ao_prim_num`
|
||||||
|
* :c:data:`ezfio_filename`
|
||||||
|
* :c:data:`io_ao_two_e_integrals_erf`
|
||||||
|
* :c:data:`n_pt_max_integrals`
|
||||||
|
* :c:data:`nproc`
|
||||||
|
* :c:data:`nucl_coord`
|
||||||
|
* :c:data:`read_ao_two_e_integrals_erf`
|
||||||
|
* :c:data:`zmq_context`
|
||||||
|
* :c:data:`zmq_socket_pull_tcp_address`
|
||||||
|
* :c:data:`zmq_state`
|
||||||
|
|
||||||
|
Needed by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`ao_integrals_erf_cache`
|
||||||
|
* :c:data:`mo_two_e_int_erf_jj_from_ao`
|
||||||
|
* :c:data:`mo_two_e_integrals_erf_in_map`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:function:: general_primitive_integral_erf:
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`ao_two_e_erf_ints/two_e_integrals_erf.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision function general_primitive_integral_erf(dim, &
|
||||||
|
P_new,P_center,fact_p,p,p_inv,iorder_p, &
|
||||||
|
Q_new,Q_center,fact_q,q,q_inv,iorder_q)
|
||||||
|
|
||||||
|
|
||||||
|
Computes the integral <pq|rs> where p,q,r,s are Gaussian primitives
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`mu_erf`
|
||||||
|
|
||||||
|
Calls:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:func:`add_poly_multiply`
|
||||||
|
* :c:func:`give_polynom_mult_center_x`
|
||||||
|
* :c:func:`multiply_poly`
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Subroutines / functions
|
||||||
|
-----------------------
|
||||||
|
|
||||||
|
.. c:function:: ao_two_e_integral_erf:
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`ao_two_e_erf_ints/two_e_integrals_erf.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision function ao_two_e_integral_erf(i,j,k,l)
|
||||||
|
|
||||||
|
|
||||||
|
integral of the AO basis <ik|jl> or (ij|kl)
|
||||||
|
i(r1) j(r1) 1/r12 k(r2) l(r2)
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`n_pt_max_integrals`
|
||||||
|
* :c:data:`ao_coef_normalized_ordered_transp`
|
||||||
|
* :c:data:`ao_power`
|
||||||
|
* :c:data:`ao_expo_ordered_transp`
|
||||||
|
* :c:data:`ao_prim_num`
|
||||||
|
* :c:data:`ao_nucl`
|
||||||
|
* :c:data:`nucl_coord`
|
||||||
|
|
||||||
|
Calls:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:func:`give_explicit_poly_and_gaussian`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:function:: ao_two_e_integral_schwartz_accel_erf:
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`ao_two_e_erf_ints/two_e_integrals_erf.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision function ao_two_e_integral_schwartz_accel_erf(i,j,k,l)
|
||||||
|
|
||||||
|
|
||||||
|
integral of the AO basis <ik|jl> or (ij|kl)
|
||||||
|
i(r1) j(r1) 1/r12 k(r2) l(r2)
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`n_pt_max_integrals`
|
||||||
|
* :c:data:`ao_integrals_threshold`
|
||||||
|
* :c:data:`ao_coef_normalized_ordered_transp`
|
||||||
|
* :c:data:`ao_power`
|
||||||
|
* :c:data:`ao_expo_ordered_transp`
|
||||||
|
* :c:data:`ao_prim_num`
|
||||||
|
* :c:data:`ao_nucl`
|
||||||
|
* :c:data:`nucl_coord`
|
||||||
|
|
||||||
|
Calls:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:func:`give_explicit_poly_and_gaussian`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:function:: ao_two_e_integrals_erf_in_map_collector:
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`ao_two_e_erf_ints/integrals_erf_in_map_slave.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
subroutine ao_two_e_integrals_erf_in_map_collector(zmq_socket_pull)
|
||||||
|
|
||||||
|
|
||||||
|
Collects results from the AO integral calculation
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`ao_integrals_erf_map`
|
||||||
|
* :c:data:`ao_num`
|
||||||
|
|
||||||
|
Called by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`ao_two_e_integrals_erf_in_map`
|
||||||
|
|
||||||
|
Calls:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:func:`end_zmq_to_qp_run_socket`
|
||||||
|
* :c:func:`insert_into_ao_integrals_erf_map`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:function:: ao_two_e_integrals_erf_in_map_slave:
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`ao_two_e_erf_ints/integrals_erf_in_map_slave.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
subroutine ao_two_e_integrals_erf_in_map_slave(thread,iproc)
|
||||||
|
|
||||||
|
|
||||||
|
Computes a buffer of integrals
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`ao_num`
|
||||||
|
|
||||||
|
Called by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:func:`ao_two_e_integrals_erf_in_map_slave_inproc`
|
||||||
|
* :c:func:`ao_two_e_integrals_erf_in_map_slave_tcp`
|
||||||
|
|
||||||
|
Calls:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:func:`compute_ao_integrals_erf_jl`
|
||||||
|
* :c:func:`end_zmq_push_socket`
|
||||||
|
* :c:func:`end_zmq_to_qp_run_socket`
|
||||||
|
* :c:func:`push_integrals`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:function:: ao_two_e_integrals_erf_in_map_slave_inproc:
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`ao_two_e_erf_ints/integrals_erf_in_map_slave.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
subroutine ao_two_e_integrals_erf_in_map_slave_inproc(i)
|
||||||
|
|
||||||
|
|
||||||
|
Computes a buffer of integrals. i is the ID of the current thread.
|
||||||
|
|
||||||
|
Called by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`ao_two_e_integrals_erf_in_map`
|
||||||
|
|
||||||
|
Calls:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:func:`ao_two_e_integrals_erf_in_map_slave`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:function:: ao_two_e_integrals_erf_in_map_slave_tcp:
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`ao_two_e_erf_ints/integrals_erf_in_map_slave.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
subroutine ao_two_e_integrals_erf_in_map_slave_tcp(i)
|
||||||
|
|
||||||
|
|
||||||
|
Computes a buffer of integrals. i is the ID of the current thread.
|
||||||
|
|
||||||
|
Calls:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:func:`ao_two_e_integrals_erf_in_map_slave`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:function:: clear_ao_erf_map:
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`ao_two_e_erf_ints/map_integrals_erf.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
subroutine clear_ao_erf_map
|
||||||
|
|
||||||
|
|
||||||
|
Frees the memory of the |AO| map
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`ao_integrals_erf_map`
|
||||||
|
|
||||||
|
Calls:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:func:`map_deinit`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:function:: compute_ao_integrals_erf_jl:
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`ao_two_e_erf_ints/two_e_integrals_erf.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
subroutine compute_ao_integrals_erf_jl(j,l,n_integrals,buffer_i,buffer_value)
|
||||||
|
|
||||||
|
|
||||||
|
Parallel client for AO integrals
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`ao_overlap_abs`
|
||||||
|
* :c:data:`ao_num`
|
||||||
|
* :c:data:`ao_integrals_threshold`
|
||||||
|
* :c:data:`ao_two_e_integral_erf_schwartz`
|
||||||
|
|
||||||
|
Called by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:func:`ao_two_e_integrals_erf_in_map_slave`
|
||||||
|
|
||||||
|
Calls:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:func:`two_e_integrals_index`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:function:: compute_ao_two_e_integrals_erf:
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`ao_two_e_erf_ints/two_e_integrals_erf.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
subroutine compute_ao_two_e_integrals_erf(j,k,l,sze,buffer_value)
|
||||||
|
|
||||||
|
|
||||||
|
Compute AO 1/r12 integrals for all i and fixed j,k,l
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`ao_overlap_abs`
|
||||||
|
* :c:data:`ao_num`
|
||||||
|
* :c:data:`ao_two_e_integral_erf_schwartz`
|
||||||
|
|
||||||
|
Called by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`mo_two_e_int_erf_jj_from_ao`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:function:: dump_ao_integrals_erf:
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`ao_two_e_erf_ints/map_integrals_erf.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
subroutine dump_ao_integrals_erf(filename)
|
||||||
|
|
||||||
|
|
||||||
|
Save to disk the |AO| erf integrals
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`ao_integrals_erf_map`
|
||||||
|
|
||||||
|
Calls:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:func:`ezfio_set_work_empty`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:function:: eri_erf:
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`ao_two_e_erf_ints/two_e_integrals_erf.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision function ERI_erf(alpha,beta,delta,gama,a_x,b_x,c_x,d_x,a_y,b_y,c_y,d_y,a_z,b_z,c_z,d_z)
|
||||||
|
|
||||||
|
|
||||||
|
ATOMIC PRIMTIVE two-electron integral between the 4 primitives ::
|
||||||
|
primitive_1 = x1**(a_x) y1**(a_y) z1**(a_z) exp(-alpha * r1**2)
|
||||||
|
primitive_2 = x1**(b_x) y1**(b_y) z1**(b_z) exp(- beta * r1**2)
|
||||||
|
primitive_3 = x2**(c_x) y2**(c_y) z2**(c_z) exp(-delta * r2**2)
|
||||||
|
primitive_4 = x2**(d_x) y2**(d_y) z2**(d_z) exp(- gama * r2**2)
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`mu_erf`
|
||||||
|
|
||||||
|
Calls:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:func:`integrale_new_erf`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:function:: get_ao_erf_map_size:
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`ao_two_e_erf_ints/map_integrals_erf.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
function get_ao_erf_map_size()
|
||||||
|
|
||||||
|
|
||||||
|
Returns the number of elements in the |AO| map
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`ao_integrals_erf_map`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:function:: get_ao_two_e_integral_erf:
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`ao_two_e_erf_ints/map_integrals_erf.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision function get_ao_two_e_integral_erf(i,j,k,l,map) result(result)
|
||||||
|
|
||||||
|
|
||||||
|
Gets one |AO| two-electron integral from the |AO| map
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`ao_integrals_erf_cache_min`
|
||||||
|
* :c:data:`ao_overlap_abs`
|
||||||
|
* :c:data:`ao_integrals_threshold`
|
||||||
|
* :c:data:`ao_integrals_erf_cache`
|
||||||
|
* :c:data:`ao_two_e_integral_erf_schwartz`
|
||||||
|
* :c:data:`ao_two_e_integrals_erf_in_map`
|
||||||
|
|
||||||
|
Calls:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:func:`map_get`
|
||||||
|
* :c:func:`two_e_integrals_index`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:function:: get_ao_two_e_integrals_erf:
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`ao_two_e_erf_ints/map_integrals_erf.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
subroutine get_ao_two_e_integrals_erf(j,k,l,sze,out_val)
|
||||||
|
|
||||||
|
|
||||||
|
Gets multiple |AO| two-electron integral from the |AO| map .
|
||||||
|
All i are retrieved for j,k,l fixed.
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`ao_integrals_erf_map`
|
||||||
|
* :c:data:`ao_overlap_abs`
|
||||||
|
* :c:data:`ao_integrals_threshold`
|
||||||
|
* :c:data:`ao_two_e_integrals_erf_in_map`
|
||||||
|
|
||||||
|
Called by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:func:`add_integrals_to_map_erf`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:function:: get_ao_two_e_integrals_erf_non_zero:
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`ao_two_e_erf_ints/map_integrals_erf.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
subroutine get_ao_two_e_integrals_erf_non_zero(j,k,l,sze,out_val,out_val_index,non_zero_int)
|
||||||
|
|
||||||
|
|
||||||
|
Gets multiple |AO| two-electron integrals from the |AO| map .
|
||||||
|
All non-zero i are retrieved for j,k,l fixed.
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`ao_integrals_erf_map`
|
||||||
|
* :c:data:`ao_overlap_abs`
|
||||||
|
* :c:data:`ao_integrals_threshold`
|
||||||
|
* :c:data:`ao_two_e_integral_erf_schwartz`
|
||||||
|
* :c:data:`ao_two_e_integrals_erf_in_map`
|
||||||
|
|
||||||
|
Called by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`mo_two_e_int_erf_jj_from_ao`
|
||||||
|
|
||||||
|
Calls:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:func:`map_get`
|
||||||
|
* :c:func:`two_e_integrals_index`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:function:: insert_into_ao_integrals_erf_map:
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`ao_two_e_erf_ints/map_integrals_erf.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
subroutine insert_into_ao_integrals_erf_map(n_integrals,buffer_i, buffer_values)
|
||||||
|
|
||||||
|
|
||||||
|
Create new entry into |AO| map
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`ao_integrals_erf_map`
|
||||||
|
|
||||||
|
Called by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:func:`ao_two_e_integrals_erf_in_map_collector`
|
||||||
|
|
||||||
|
Calls:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:func:`map_append`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:function:: integrale_new_erf:
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`ao_two_e_erf_ints/two_e_integrals_erf.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
subroutine integrale_new_erf(I_f,a_x,b_x,c_x,d_x,a_y,b_y,c_y,d_y,a_z,b_z,c_z,d_z,p,q,n_pt)
|
||||||
|
|
||||||
|
|
||||||
|
calculate the integral of the polynom ::
|
||||||
|
I_x1(a_x+b_x, c_x+d_x,p,q) * I_x1(a_y+b_y, c_y+d_y,p,q) * I_x1(a_z+b_z, c_z+d_z,p,q)
|
||||||
|
between ( 0 ; 1)
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`mu_erf`
|
||||||
|
* :c:data:`n_pt_max_integrals`
|
||||||
|
* :c:data:`gauleg_t2`
|
||||||
|
|
||||||
|
Called by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:func:`eri_erf`
|
||||||
|
|
||||||
|
Calls:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:func:`i_x1_new`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:function:: load_ao_integrals_erf:
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`ao_two_e_erf_ints/map_integrals_erf.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
integer function load_ao_integrals_erf(filename)
|
||||||
|
|
||||||
|
|
||||||
|
Read from disk the |AO| erf integrals
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`ao_integrals_erf_map`
|
||||||
|
|
||||||
|
Calls:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:func:`cache_map_reallocate`
|
||||||
|
* :c:func:`map_deinit`
|
||||||
|
* :c:func:`map_sort`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:function:: save_erf_two_e_integrals_ao:
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`ao_two_e_erf_ints/routines_save_integrals_erf.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
subroutine save_erf_two_e_integrals_ao
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`ao_integrals_erf_map`
|
||||||
|
* :c:data:`ezfio_filename`
|
||||||
|
* :c:data:`ao_two_e_integrals_erf_in_map`
|
||||||
|
|
||||||
|
Called by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:func:`routine`
|
||||||
|
|
||||||
|
Calls:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:func:`ezfio_set_ao_two_e_erf_ints_io_ao_two_e_integrals_erf`
|
||||||
|
* :c:func:`ezfio_set_work_empty`
|
||||||
|
* :c:func:`map_save_to_disk`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:function:: save_erf_two_e_ints_ao_into_ints_ao:
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`ao_two_e_erf_ints/routines_save_integrals_erf.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
subroutine save_erf_two_e_ints_ao_into_ints_ao
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`ao_integrals_erf_map`
|
||||||
|
* :c:data:`ezfio_filename`
|
||||||
|
* :c:data:`ao_two_e_integrals_erf_in_map`
|
||||||
|
|
||||||
|
Calls:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:func:`ezfio_set_ao_two_e_ints_io_ao_two_e_integrals`
|
||||||
|
* :c:func:`ezfio_set_work_empty`
|
||||||
|
* :c:func:`map_save_to_disk`
|
||||||
|
|
1282
doc/_sources/modules/ao_two_e_ints.rst.txt
Normal file
1282
doc/_sources/modules/ao_two_e_ints.rst.txt
Normal file
File diff suppressed because it is too large
Load Diff
52
doc/_sources/modules/aux_quantities.rst.txt
Normal file
52
doc/_sources/modules/aux_quantities.rst.txt
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
.. _module_aux_quantities:
|
||||||
|
|
||||||
|
.. program:: aux_quantities
|
||||||
|
|
||||||
|
.. default-role:: option
|
||||||
|
|
||||||
|
==============
|
||||||
|
aux_quantities
|
||||||
|
==============
|
||||||
|
|
||||||
|
|
||||||
|
This module contains some global variables (such as densities and energies)
|
||||||
|
which are stored in the EZFIO folder in a different place than determinants.
|
||||||
|
This is used in practice to store density matrices which can be obtained from
|
||||||
|
any methods, as long as they are stored in the same MO basis which is used for
|
||||||
|
the calculations. In |RSDFT| calculations, this can be done to perform damping
|
||||||
|
on the density in order to speed up convergence.
|
||||||
|
|
||||||
|
The main providers of that module are:
|
||||||
|
|
||||||
|
* `data_one_e_dm_alpha_mo` and `data_one_e_dm_beta_mo` which are the
|
||||||
|
one-body alpha and beta densities which are necessary read from the EZFIO
|
||||||
|
folder.
|
||||||
|
|
||||||
|
|
||||||
|
Thanks to these providers you can use any density matrix that does not
|
||||||
|
necessary corresponds to that of the current wave function.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
EZFIO parameters
|
||||||
|
----------------
|
||||||
|
|
||||||
|
.. option:: data_energy_var
|
||||||
|
|
||||||
|
Variational energy computed with the wave function
|
||||||
|
|
||||||
|
|
||||||
|
.. option:: data_energy_proj
|
||||||
|
|
||||||
|
Projected energy computed with the wave function
|
||||||
|
|
||||||
|
|
||||||
|
.. option:: data_one_e_dm_alpha_mo
|
||||||
|
|
||||||
|
Alpha one body density matrix on the |MO| basis computed with the wave function
|
||||||
|
|
||||||
|
|
||||||
|
.. option:: data_one_e_dm_beta_mo
|
||||||
|
|
||||||
|
Beta one body density matrix on the |MO| basis computed with the wave function
|
||||||
|
|
833
doc/_sources/modules/becke_numerical_grid.rst.txt
Normal file
833
doc/_sources/modules/becke_numerical_grid.rst.txt
Normal file
@ -0,0 +1,833 @@
|
|||||||
|
.. _module_becke_numerical_grid:
|
||||||
|
|
||||||
|
.. program:: becke_numerical_grid
|
||||||
|
|
||||||
|
.. default-role:: option
|
||||||
|
|
||||||
|
====================
|
||||||
|
becke_numerical_grid
|
||||||
|
====================
|
||||||
|
|
||||||
|
This module contains all quantities needed to build Becke's grid used in general for DFT integration. Note that it can be used for whatever integration in R^3 as long as the functions to be integrated are mostly concentrated near the atomic regions.
|
||||||
|
|
||||||
|
This grid is built as the reunion of a spherical grid around each atom. Each spherical grid contains
|
||||||
|
a certain number of radial and angular points. No pruning is done on the angular part of the grid.
|
||||||
|
|
||||||
|
The main keyword for that module is:
|
||||||
|
|
||||||
|
* :option:`becke_numerical_grid grid_type_sgn` which controls the precision of the grid according the standard **SG-n** grids. This keyword controls the two providers `n_points_integration_angular` `n_points_radial_grid`.
|
||||||
|
|
||||||
|
The main providers of that module are:
|
||||||
|
|
||||||
|
* `n_points_integration_angular` which is the number of angular integration points. WARNING: it obeys to specific rules so it cannot be any integer number. Some of the possible values are [ 50 | 74 | 170 | 194 | 266 | 302 | 590 | 1202 | 2030 | 5810 ] for instance. See :file:`angular.f` for more details.
|
||||||
|
* `n_points_radial_grid` which is the number of radial angular points. This can be any strictly positive integer. Nevertheless, a minimum of 50 is in general necessary.
|
||||||
|
* `final_grid_points` which are the (x,y,z) coordinates of the grid points.
|
||||||
|
* `final_weight_at_r_vector` which are the weights at each grid point
|
||||||
|
|
||||||
|
|
||||||
|
For a simple example of how to use the grid, see :file:`example.irp.f`.
|
||||||
|
|
||||||
|
The spherical integration uses Lebedev-Laikov grids, which was used from the code distributed through CCL (http://www.ccl.net/).
|
||||||
|
See next section for explanations and citation policies.
|
||||||
|
|
||||||
|
.. code-block:: text
|
||||||
|
|
||||||
|
This subroutine is part of a set of subroutines that generate
|
||||||
|
Lebedev grids [1-6] for integration on a sphere. The original
|
||||||
|
C-code [1] was kindly provided by Dr. Dmitri N. Laikov and
|
||||||
|
translated into fortran by Dr. Christoph van Wuellen.
|
||||||
|
This subroutine was translated using a C to fortran77 conversion
|
||||||
|
tool written by Dr. Christoph van Wuellen.
|
||||||
|
|
||||||
|
Users of this code are asked to include reference [1] in their
|
||||||
|
publications, and in the user- and programmers-manuals
|
||||||
|
describing their codes.
|
||||||
|
|
||||||
|
This code was distributed through CCL (http://www.ccl.net/).
|
||||||
|
|
||||||
|
[1] V.I. Lebedev, and D.N. Laikov
|
||||||
|
"A quadrature formula for the sphere of the 131st
|
||||||
|
algebraic order of accuracy"
|
||||||
|
Doklady Mathematics, Vol. 59, No. 3, 1999, pp. 477-481.
|
||||||
|
|
||||||
|
[2] V.I. Lebedev
|
||||||
|
"A quadrature formula for the sphere of 59th algebraic
|
||||||
|
order of accuracy"
|
||||||
|
Russian Acad. Sci. Dokl. Math., Vol. 50, 1995, pp. 283-286.
|
||||||
|
|
||||||
|
[3] V.I. Lebedev, and A.L. Skorokhodov
|
||||||
|
"Quadrature formulas of orders 41, 47, and 53 for the sphere"
|
||||||
|
Russian Acad. Sci. Dokl. Math., Vol. 45, 1992, pp. 587-592.
|
||||||
|
|
||||||
|
[4] V.I. Lebedev
|
||||||
|
"Spherical quadrature formulas exact to orders 25-29"
|
||||||
|
Siberian Mathematical Journal, Vol. 18, 1977, pp. 99-107.
|
||||||
|
|
||||||
|
[5] V.I. Lebedev
|
||||||
|
"Quadratures on a sphere"
|
||||||
|
Computational Mathematics and Mathematical Physics, Vol. 16,
|
||||||
|
1976, pp. 10-24.
|
||||||
|
|
||||||
|
[6] V.I. Lebedev
|
||||||
|
"Values of the nodes and weights of ninth to seventeenth
|
||||||
|
order Gauss-Markov quadrature formulae invariant under the
|
||||||
|
octahedron group with inversion"
|
||||||
|
Computational Mathematics and Mathematical Physics, Vol. 15,
|
||||||
|
1975, pp. 44-51.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
EZFIO parameters
|
||||||
|
----------------
|
||||||
|
|
||||||
|
.. option:: grid_type_sgn
|
||||||
|
|
||||||
|
Type of grid used for the Becke's numerical grid. Can be, by increasing accuracy: [ 0 | 1 | 2 | 3 ]
|
||||||
|
|
||||||
|
Default: 2
|
||||||
|
|
||||||
|
|
||||||
|
Providers
|
||||||
|
---------
|
||||||
|
|
||||||
|
.. c:var:: alpha_knowles
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`becke_numerical_grid/integration_radial.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision, allocatable :: alpha_knowles (100)
|
||||||
|
|
||||||
|
|
||||||
|
Recommended values for the alpha parameters according to the paper of Knowles (JCP, 104, 1996)
|
||||||
|
as a function of the nuclear charge
|
||||||
|
|
||||||
|
Needed by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`final_weight_at_r`
|
||||||
|
* :c:data:`grid_points_per_atom`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: angular_quadrature_points
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`becke_numerical_grid/grid_becke.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision, allocatable :: angular_quadrature_points (n_points_integration_angular,3)
|
||||||
|
double precision, allocatable :: weights_angular_points (n_points_integration_angular)
|
||||||
|
|
||||||
|
|
||||||
|
weights and grid points for the integration on the angular variables on
|
||||||
|
the unit sphere centered on (0,0,0)
|
||||||
|
According to the LEBEDEV scheme
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`n_points_radial_grid`
|
||||||
|
|
||||||
|
Needed by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`final_weight_at_r`
|
||||||
|
* :c:data:`grid_points_per_atom`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: dr_radial_integral
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`becke_numerical_grid/grid_becke.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision, allocatable :: grid_points_radial (n_points_radial_grid)
|
||||||
|
double precision :: dr_radial_integral
|
||||||
|
|
||||||
|
|
||||||
|
points in [0,1] to map the radial integral [0,\infty]
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`n_points_radial_grid`
|
||||||
|
|
||||||
|
Needed by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`final_weight_at_r`
|
||||||
|
* :c:data:`grid_points_per_atom`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: final_grid_points
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`becke_numerical_grid/grid_becke_vector.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision, allocatable :: final_grid_points (3,n_points_final_grid)
|
||||||
|
double precision, allocatable :: final_weight_at_r_vector (n_points_final_grid)
|
||||||
|
integer, allocatable :: index_final_points (3,n_points_final_grid)
|
||||||
|
integer, allocatable :: index_final_points_reverse (n_points_integration_angular,n_points_radial_grid,nucl_num)
|
||||||
|
|
||||||
|
|
||||||
|
final_grid_points(1:3,j) = (/ x, y, z /) of the jth grid point
|
||||||
|
|
||||||
|
final_weight_at_r_vector(i) = Total weight function of the ith grid point which contains the Lebedev, Voronoi and radial weights contributions
|
||||||
|
|
||||||
|
index_final_points(1:3,i) = gives the angular, radial and atomic indices associated to the ith grid point
|
||||||
|
|
||||||
|
index_final_points_reverse(i,j,k) = index of the grid point having i as angular, j as radial and l as atomic indices
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`final_weight_at_r`
|
||||||
|
* :c:data:`grid_points_per_atom`
|
||||||
|
* :c:data:`n_points_final_grid`
|
||||||
|
* :c:data:`n_points_radial_grid`
|
||||||
|
* :c:data:`nucl_num`
|
||||||
|
|
||||||
|
Needed by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`aos_grad_in_r_array`
|
||||||
|
* :c:data:`aos_in_r_array`
|
||||||
|
* :c:data:`aos_lapl_in_r_array`
|
||||||
|
* :c:data:`aos_sr_vc_alpha_lda_w`
|
||||||
|
* :c:data:`aos_sr_vc_alpha_pbe_w`
|
||||||
|
* :c:data:`aos_vc_alpha_lda_w`
|
||||||
|
* :c:data:`aos_vc_alpha_pbe_w`
|
||||||
|
* :c:data:`energy_sr_x_lda`
|
||||||
|
* :c:data:`energy_sr_x_pbe`
|
||||||
|
* :c:data:`energy_x_lda`
|
||||||
|
* :c:data:`energy_x_pbe`
|
||||||
|
* :c:data:`mos_in_r_array`
|
||||||
|
* :c:data:`one_e_dm_alpha_at_r`
|
||||||
|
* :c:data:`one_e_dm_and_grad_alpha_in_r`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: final_weight_at_r
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`becke_numerical_grid/grid_becke.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision, allocatable :: final_weight_at_r (n_points_integration_angular,n_points_radial_grid,nucl_num)
|
||||||
|
|
||||||
|
|
||||||
|
Total weight on each grid point which takes into account all Lebedev, Voronoi and radial weights.
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`alpha_knowles`
|
||||||
|
* :c:data:`angular_quadrature_points`
|
||||||
|
* :c:data:`grid_points_radial`
|
||||||
|
* :c:data:`m_knowles`
|
||||||
|
* :c:data:`n_points_radial_grid`
|
||||||
|
* :c:data:`nucl_charge`
|
||||||
|
* :c:data:`nucl_num`
|
||||||
|
* :c:data:`weight_at_r`
|
||||||
|
|
||||||
|
Needed by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`final_grid_points`
|
||||||
|
* :c:data:`n_points_final_grid`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: final_weight_at_r_vector
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`becke_numerical_grid/grid_becke_vector.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision, allocatable :: final_grid_points (3,n_points_final_grid)
|
||||||
|
double precision, allocatable :: final_weight_at_r_vector (n_points_final_grid)
|
||||||
|
integer, allocatable :: index_final_points (3,n_points_final_grid)
|
||||||
|
integer, allocatable :: index_final_points_reverse (n_points_integration_angular,n_points_radial_grid,nucl_num)
|
||||||
|
|
||||||
|
|
||||||
|
final_grid_points(1:3,j) = (/ x, y, z /) of the jth grid point
|
||||||
|
|
||||||
|
final_weight_at_r_vector(i) = Total weight function of the ith grid point which contains the Lebedev, Voronoi and radial weights contributions
|
||||||
|
|
||||||
|
index_final_points(1:3,i) = gives the angular, radial and atomic indices associated to the ith grid point
|
||||||
|
|
||||||
|
index_final_points_reverse(i,j,k) = index of the grid point having i as angular, j as radial and l as atomic indices
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`final_weight_at_r`
|
||||||
|
* :c:data:`grid_points_per_atom`
|
||||||
|
* :c:data:`n_points_final_grid`
|
||||||
|
* :c:data:`n_points_radial_grid`
|
||||||
|
* :c:data:`nucl_num`
|
||||||
|
|
||||||
|
Needed by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`aos_grad_in_r_array`
|
||||||
|
* :c:data:`aos_in_r_array`
|
||||||
|
* :c:data:`aos_lapl_in_r_array`
|
||||||
|
* :c:data:`aos_sr_vc_alpha_lda_w`
|
||||||
|
* :c:data:`aos_sr_vc_alpha_pbe_w`
|
||||||
|
* :c:data:`aos_vc_alpha_lda_w`
|
||||||
|
* :c:data:`aos_vc_alpha_pbe_w`
|
||||||
|
* :c:data:`energy_sr_x_lda`
|
||||||
|
* :c:data:`energy_sr_x_pbe`
|
||||||
|
* :c:data:`energy_x_lda`
|
||||||
|
* :c:data:`energy_x_pbe`
|
||||||
|
* :c:data:`mos_in_r_array`
|
||||||
|
* :c:data:`one_e_dm_alpha_at_r`
|
||||||
|
* :c:data:`one_e_dm_and_grad_alpha_in_r`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: grid_points_per_atom
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`becke_numerical_grid/grid_becke.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision, allocatable :: grid_points_per_atom (3,n_points_integration_angular,n_points_radial_grid,nucl_num)
|
||||||
|
|
||||||
|
|
||||||
|
x,y,z coordinates of grid points used for integration in 3d space
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`alpha_knowles`
|
||||||
|
* :c:data:`angular_quadrature_points`
|
||||||
|
* :c:data:`grid_points_radial`
|
||||||
|
* :c:data:`m_knowles`
|
||||||
|
* :c:data:`n_points_radial_grid`
|
||||||
|
* :c:data:`nucl_charge`
|
||||||
|
* :c:data:`nucl_coord`
|
||||||
|
* :c:data:`nucl_num`
|
||||||
|
|
||||||
|
Needed by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`final_grid_points`
|
||||||
|
* :c:data:`one_e_dm_alpha_in_r`
|
||||||
|
* :c:data:`weight_at_r`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: grid_points_radial
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`becke_numerical_grid/grid_becke.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision, allocatable :: grid_points_radial (n_points_radial_grid)
|
||||||
|
double precision :: dr_radial_integral
|
||||||
|
|
||||||
|
|
||||||
|
points in [0,1] to map the radial integral [0,\infty]
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`n_points_radial_grid`
|
||||||
|
|
||||||
|
Needed by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`final_weight_at_r`
|
||||||
|
* :c:data:`grid_points_per_atom`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: index_final_points
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`becke_numerical_grid/grid_becke_vector.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision, allocatable :: final_grid_points (3,n_points_final_grid)
|
||||||
|
double precision, allocatable :: final_weight_at_r_vector (n_points_final_grid)
|
||||||
|
integer, allocatable :: index_final_points (3,n_points_final_grid)
|
||||||
|
integer, allocatable :: index_final_points_reverse (n_points_integration_angular,n_points_radial_grid,nucl_num)
|
||||||
|
|
||||||
|
|
||||||
|
final_grid_points(1:3,j) = (/ x, y, z /) of the jth grid point
|
||||||
|
|
||||||
|
final_weight_at_r_vector(i) = Total weight function of the ith grid point which contains the Lebedev, Voronoi and radial weights contributions
|
||||||
|
|
||||||
|
index_final_points(1:3,i) = gives the angular, radial and atomic indices associated to the ith grid point
|
||||||
|
|
||||||
|
index_final_points_reverse(i,j,k) = index of the grid point having i as angular, j as radial and l as atomic indices
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`final_weight_at_r`
|
||||||
|
* :c:data:`grid_points_per_atom`
|
||||||
|
* :c:data:`n_points_final_grid`
|
||||||
|
* :c:data:`n_points_radial_grid`
|
||||||
|
* :c:data:`nucl_num`
|
||||||
|
|
||||||
|
Needed by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`aos_grad_in_r_array`
|
||||||
|
* :c:data:`aos_in_r_array`
|
||||||
|
* :c:data:`aos_lapl_in_r_array`
|
||||||
|
* :c:data:`aos_sr_vc_alpha_lda_w`
|
||||||
|
* :c:data:`aos_sr_vc_alpha_pbe_w`
|
||||||
|
* :c:data:`aos_vc_alpha_lda_w`
|
||||||
|
* :c:data:`aos_vc_alpha_pbe_w`
|
||||||
|
* :c:data:`energy_sr_x_lda`
|
||||||
|
* :c:data:`energy_sr_x_pbe`
|
||||||
|
* :c:data:`energy_x_lda`
|
||||||
|
* :c:data:`energy_x_pbe`
|
||||||
|
* :c:data:`mos_in_r_array`
|
||||||
|
* :c:data:`one_e_dm_alpha_at_r`
|
||||||
|
* :c:data:`one_e_dm_and_grad_alpha_in_r`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: index_final_points_reverse
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`becke_numerical_grid/grid_becke_vector.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision, allocatable :: final_grid_points (3,n_points_final_grid)
|
||||||
|
double precision, allocatable :: final_weight_at_r_vector (n_points_final_grid)
|
||||||
|
integer, allocatable :: index_final_points (3,n_points_final_grid)
|
||||||
|
integer, allocatable :: index_final_points_reverse (n_points_integration_angular,n_points_radial_grid,nucl_num)
|
||||||
|
|
||||||
|
|
||||||
|
final_grid_points(1:3,j) = (/ x, y, z /) of the jth grid point
|
||||||
|
|
||||||
|
final_weight_at_r_vector(i) = Total weight function of the ith grid point which contains the Lebedev, Voronoi and radial weights contributions
|
||||||
|
|
||||||
|
index_final_points(1:3,i) = gives the angular, radial and atomic indices associated to the ith grid point
|
||||||
|
|
||||||
|
index_final_points_reverse(i,j,k) = index of the grid point having i as angular, j as radial and l as atomic indices
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`final_weight_at_r`
|
||||||
|
* :c:data:`grid_points_per_atom`
|
||||||
|
* :c:data:`n_points_final_grid`
|
||||||
|
* :c:data:`n_points_radial_grid`
|
||||||
|
* :c:data:`nucl_num`
|
||||||
|
|
||||||
|
Needed by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`aos_grad_in_r_array`
|
||||||
|
* :c:data:`aos_in_r_array`
|
||||||
|
* :c:data:`aos_lapl_in_r_array`
|
||||||
|
* :c:data:`aos_sr_vc_alpha_lda_w`
|
||||||
|
* :c:data:`aos_sr_vc_alpha_pbe_w`
|
||||||
|
* :c:data:`aos_vc_alpha_lda_w`
|
||||||
|
* :c:data:`aos_vc_alpha_pbe_w`
|
||||||
|
* :c:data:`energy_sr_x_lda`
|
||||||
|
* :c:data:`energy_sr_x_pbe`
|
||||||
|
* :c:data:`energy_x_lda`
|
||||||
|
* :c:data:`energy_x_pbe`
|
||||||
|
* :c:data:`mos_in_r_array`
|
||||||
|
* :c:data:`one_e_dm_alpha_at_r`
|
||||||
|
* :c:data:`one_e_dm_and_grad_alpha_in_r`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: m_knowles
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`becke_numerical_grid/grid_becke.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
integer :: m_knowles
|
||||||
|
|
||||||
|
|
||||||
|
value of the "m" parameter in the equation (7) of the paper of Knowles (JCP, 104, 1996)
|
||||||
|
|
||||||
|
Needed by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`final_weight_at_r`
|
||||||
|
* :c:data:`grid_points_per_atom`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: n_points_final_grid
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`becke_numerical_grid/grid_becke_vector.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
integer :: n_points_final_grid
|
||||||
|
|
||||||
|
|
||||||
|
Number of points which are non zero
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`final_weight_at_r`
|
||||||
|
* :c:data:`n_points_radial_grid`
|
||||||
|
* :c:data:`nucl_num`
|
||||||
|
|
||||||
|
Needed by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`aos_grad_in_r_array`
|
||||||
|
* :c:data:`aos_in_r_array`
|
||||||
|
* :c:data:`aos_lapl_in_r_array`
|
||||||
|
* :c:data:`aos_sr_vc_alpha_lda_w`
|
||||||
|
* :c:data:`aos_sr_vc_alpha_pbe_w`
|
||||||
|
* :c:data:`aos_vc_alpha_lda_w`
|
||||||
|
* :c:data:`aos_vc_alpha_pbe_w`
|
||||||
|
* :c:data:`energy_sr_x_lda`
|
||||||
|
* :c:data:`energy_sr_x_pbe`
|
||||||
|
* :c:data:`energy_x_lda`
|
||||||
|
* :c:data:`energy_x_pbe`
|
||||||
|
* :c:data:`final_grid_points`
|
||||||
|
* :c:data:`mos_grad_in_r_array`
|
||||||
|
* :c:data:`mos_in_r_array`
|
||||||
|
* :c:data:`mos_lapl_in_r_array`
|
||||||
|
* :c:data:`one_e_dm_alpha_at_r`
|
||||||
|
* :c:data:`one_e_dm_and_grad_alpha_in_r`
|
||||||
|
* :c:data:`potential_sr_c_alpha_ao_lda`
|
||||||
|
* :c:data:`potential_sr_x_alpha_ao_lda`
|
||||||
|
* :c:data:`potential_sr_x_alpha_ao_pbe`
|
||||||
|
* :c:data:`potential_x_alpha_ao_lda`
|
||||||
|
* :c:data:`potential_x_alpha_ao_pbe`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: n_points_grid_per_atom
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`becke_numerical_grid/grid_becke.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
integer :: n_points_grid_per_atom
|
||||||
|
|
||||||
|
|
||||||
|
Number of grid points per atom
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`n_points_radial_grid`
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: n_points_integration_angular
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`becke_numerical_grid/grid_becke.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
integer :: n_points_radial_grid
|
||||||
|
integer :: n_points_integration_angular
|
||||||
|
|
||||||
|
|
||||||
|
n_points_radial_grid = number of radial grid points per atom
|
||||||
|
|
||||||
|
n_points_integration_angular = number of angular grid points per atom
|
||||||
|
|
||||||
|
These numbers are automatically set by setting the grid_type_sgn parameter
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`grid_type_sgn`
|
||||||
|
|
||||||
|
Needed by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`angular_quadrature_points`
|
||||||
|
* :c:data:`final_grid_points`
|
||||||
|
* :c:data:`final_weight_at_r`
|
||||||
|
* :c:data:`grid_points_per_atom`
|
||||||
|
* :c:data:`grid_points_radial`
|
||||||
|
* :c:data:`n_points_final_grid`
|
||||||
|
* :c:data:`n_points_grid_per_atom`
|
||||||
|
* :c:data:`one_e_dm_alpha_in_r`
|
||||||
|
* :c:data:`weight_at_r`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: n_points_radial_grid
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`becke_numerical_grid/grid_becke.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
integer :: n_points_radial_grid
|
||||||
|
integer :: n_points_integration_angular
|
||||||
|
|
||||||
|
|
||||||
|
n_points_radial_grid = number of radial grid points per atom
|
||||||
|
|
||||||
|
n_points_integration_angular = number of angular grid points per atom
|
||||||
|
|
||||||
|
These numbers are automatically set by setting the grid_type_sgn parameter
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`grid_type_sgn`
|
||||||
|
|
||||||
|
Needed by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`angular_quadrature_points`
|
||||||
|
* :c:data:`final_grid_points`
|
||||||
|
* :c:data:`final_weight_at_r`
|
||||||
|
* :c:data:`grid_points_per_atom`
|
||||||
|
* :c:data:`grid_points_radial`
|
||||||
|
* :c:data:`n_points_final_grid`
|
||||||
|
* :c:data:`n_points_grid_per_atom`
|
||||||
|
* :c:data:`one_e_dm_alpha_in_r`
|
||||||
|
* :c:data:`weight_at_r`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: weight_at_r
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`becke_numerical_grid/grid_becke.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision, allocatable :: weight_at_r (n_points_integration_angular,n_points_radial_grid,nucl_num)
|
||||||
|
|
||||||
|
|
||||||
|
Weight function at grid points : w_n(r) according to the equation (22)
|
||||||
|
of Becke original paper (JCP, 88, 1988)
|
||||||
|
|
||||||
|
The "n" discrete variable represents the nucleis which in this array is
|
||||||
|
represented by the last dimension and the points are labelled by the
|
||||||
|
other dimensions.
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`grid_points_per_atom`
|
||||||
|
* :c:data:`n_points_radial_grid`
|
||||||
|
* :c:data:`nucl_coord_transp`
|
||||||
|
* :c:data:`nucl_dist_inv`
|
||||||
|
* :c:data:`nucl_num`
|
||||||
|
* :c:data:`slater_bragg_type_inter_distance_ua`
|
||||||
|
|
||||||
|
Needed by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`final_weight_at_r`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: weights_angular_points
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`becke_numerical_grid/grid_becke.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision, allocatable :: angular_quadrature_points (n_points_integration_angular,3)
|
||||||
|
double precision, allocatable :: weights_angular_points (n_points_integration_angular)
|
||||||
|
|
||||||
|
|
||||||
|
weights and grid points for the integration on the angular variables on
|
||||||
|
the unit sphere centered on (0,0,0)
|
||||||
|
According to the LEBEDEV scheme
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`n_points_radial_grid`
|
||||||
|
|
||||||
|
Needed by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`final_weight_at_r`
|
||||||
|
* :c:data:`grid_points_per_atom`
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Subroutines / functions
|
||||||
|
-----------------------
|
||||||
|
|
||||||
|
.. c:function:: cell_function_becke:
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`becke_numerical_grid/step_function_becke.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision function cell_function_becke(r,atom_number)
|
||||||
|
|
||||||
|
|
||||||
|
atom_number :: atom on which the cell function of Becke (1988, JCP,88(4))
|
||||||
|
r(1:3) :: x,y,z coordinantes of the current point
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`nucl_dist_inv`
|
||||||
|
* :c:data:`slater_bragg_type_inter_distance_ua`
|
||||||
|
* :c:data:`nucl_coord_transp`
|
||||||
|
* :c:data:`nucl_num`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:function:: derivative_knowles_function:
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`becke_numerical_grid/integration_radial.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision function derivative_knowles_function(alpha,m,x)
|
||||||
|
|
||||||
|
|
||||||
|
Derivative of the function proposed by Knowles (JCP, 104, 1996) for distributing the radial points
|
||||||
|
|
||||||
|
|
||||||
|
.. c:function:: example_becke_numerical_grid:
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`becke_numerical_grid/example.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
subroutine example_becke_numerical_grid
|
||||||
|
|
||||||
|
|
||||||
|
subroutine that illustrates the main features available in becke_numerical_grid
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`n_points_final_grid`
|
||||||
|
* :c:data:`final_weight_at_r`
|
||||||
|
* :c:data:`n_points_radial_grid`
|
||||||
|
* :c:data:`grid_points_per_atom`
|
||||||
|
* :c:data:`final_grid_points`
|
||||||
|
* :c:data:`nucl_coord`
|
||||||
|
* :c:data:`nucl_num`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:function:: f_function_becke:
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`becke_numerical_grid/step_function_becke.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision function f_function_becke(x)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.. c:function:: knowles_function:
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`becke_numerical_grid/integration_radial.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision function knowles_function(alpha,m,x)
|
||||||
|
|
||||||
|
|
||||||
|
Function proposed by Knowles (JCP, 104, 1996) for distributing the radial points :
|
||||||
|
the Log "m" function ( equation (7) in the paper )
|
||||||
|
|
||||||
|
|
||||||
|
.. c:function:: step_function_becke:
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`becke_numerical_grid/step_function_becke.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision function step_function_becke(x)
|
||||||
|
|
||||||
|
|
||||||
|
Step function of the Becke paper (1988, JCP,88(4))
|
||||||
|
|
3489
doc/_sources/modules/bitmask.rst.txt
Normal file
3489
doc/_sources/modules/bitmask.rst.txt
Normal file
File diff suppressed because it is too large
Load Diff
2259
doc/_sources/modules/cipsi.rst.txt
Normal file
2259
doc/_sources/modules/cipsi.rst.txt
Normal file
File diff suppressed because it is too large
Load Diff
275
doc/_sources/modules/cis.rst.txt
Normal file
275
doc/_sources/modules/cis.rst.txt
Normal file
@ -0,0 +1,275 @@
|
|||||||
|
.. _module_cis:
|
||||||
|
|
||||||
|
.. program:: cis
|
||||||
|
|
||||||
|
.. default-role:: option
|
||||||
|
|
||||||
|
===
|
||||||
|
cis
|
||||||
|
===
|
||||||
|
|
||||||
|
This module contains a CIS program.
|
||||||
|
|
||||||
|
The user point of view
|
||||||
|
----------------------
|
||||||
|
|
||||||
|
The :command:`cis` program performs the CI of the ROHF-like + all single excitations on top of it.
|
||||||
|
This program can be very useful to :
|
||||||
|
|
||||||
|
* **Ground state calculations**: generate a guess for the ground state wave function if one is not sure that the :c:func:`scf` program gave the lowest SCF solution. In combination with :c:func:`save_natorb` it can produce new |MOs| in order to reperform an :c:func:`scf` optimization.
|
||||||
|
|
||||||
|
* **Excited states calculations**: generate guess for all the :option:`determinants n_states` wave functions, that will be used by the :c:func:`fci` program.
|
||||||
|
|
||||||
|
|
||||||
|
The main keywords/options to be used are:
|
||||||
|
|
||||||
|
* :option:`determinants n_states` : number of states to consider for the |CIS| calculation
|
||||||
|
|
||||||
|
* :option:`determinants s2_eig` : force all states to have the desired value of :math:`S^2`
|
||||||
|
|
||||||
|
* :option:`determinants expected_s2` : desired value of :math:`S^2`
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
The programmer point of view
|
||||||
|
----------------------------
|
||||||
|
|
||||||
|
This module have been 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
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Programs
|
||||||
|
--------
|
||||||
|
|
||||||
|
* :ref:`cis`
|
||||||
|
|
||||||
|
Subroutines / functions
|
||||||
|
-----------------------
|
||||||
|
|
||||||
|
.. c:function:: h_apply_cis:
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`h_apply.irp.f_shell_8`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
subroutine H_apply_cis()
|
||||||
|
|
||||||
|
|
||||||
|
Calls H_apply on the |HF| determinant and selects all connected single and double
|
||||||
|
excitations (of the same symmetry). Auto-generated by the ``generate_h_apply`` script.
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`psi_coef`
|
||||||
|
* :c:data:`n_states`
|
||||||
|
* :c:data:`generators_bitmask`
|
||||||
|
* :c:data:`mo_num`
|
||||||
|
* :c:data:`mo_two_e_integrals_in_map`
|
||||||
|
* :c:data:`h_apply_buffer_allocated`
|
||||||
|
* :c:data:`n_det`
|
||||||
|
* :c:data:`s2_eig`
|
||||||
|
* :c:data:`n_det_generators`
|
||||||
|
* :c:data:`i_bitmask_gen`
|
||||||
|
* :c:data:`n_int`
|
||||||
|
* :c:data:`psi_det`
|
||||||
|
* :c:data:`psi_det_generators`
|
||||||
|
* :c:data:`psi_det_generators`
|
||||||
|
|
||||||
|
Calls:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:func:`build_fock_tmp`
|
||||||
|
* :c:func:`copy_h_apply_buffer_to_wf`
|
||||||
|
* :c:func:`dsort`
|
||||||
|
* :c:func:`h_apply_cis_diexc`
|
||||||
|
* :c:func:`h_apply_cis_monoexc`
|
||||||
|
* :c:func:`make_s2_eigenfunction`
|
||||||
|
* :c:func:`wall_time`
|
||||||
|
|
||||||
|
Touches:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`n_det`
|
||||||
|
* :c:data:`psi_occ_pattern`
|
||||||
|
* :c:data:`c0_weight`
|
||||||
|
* :c:data:`psi_coef`
|
||||||
|
* :c:data:`psi_det_sorted_bit`
|
||||||
|
* :c:data:`psi_det`
|
||||||
|
* :c:data:`psi_det_size`
|
||||||
|
* :c:data:`psi_det_sorted_bit`
|
||||||
|
* :c:data:`psi_occ_pattern`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:function:: h_apply_cis_diexc:
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`h_apply.irp.f_shell_8`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
subroutine H_apply_cis_diexc(key_in, key_prev, hole_1,particl_1, hole_2, particl_2, fock_diag_tmp, i_generator, iproc_in )
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`n_int`
|
||||||
|
* :c:data:`n_det`
|
||||||
|
* :c:data:`mo_num`
|
||||||
|
|
||||||
|
Called by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:func:`h_apply_cis`
|
||||||
|
|
||||||
|
Calls:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:func:`h_apply_cis_diexcp`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:function:: h_apply_cis_diexcorg:
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`h_apply.irp.f_shell_8`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
subroutine H_apply_cis_diexcOrg(key_in,key_mask,hole_1,particl_1,hole_2, particl_2, fock_diag_tmp, i_generator, iproc_in )
|
||||||
|
|
||||||
|
|
||||||
|
Generate all double excitations of key_in using the bit masks of holes and
|
||||||
|
particles.
|
||||||
|
Assume N_int is already provided.
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`n_int`
|
||||||
|
* :c:data:`elec_alpha_num`
|
||||||
|
* :c:data:`mo_num`
|
||||||
|
|
||||||
|
Called by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:func:`h_apply_cis_diexcp`
|
||||||
|
|
||||||
|
Calls:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:func:`bitstring_to_list_ab`
|
||||||
|
* :c:func:`fill_h_apply_buffer_no_selection`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:function:: h_apply_cis_diexcp:
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`h_apply.irp.f_shell_8`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
subroutine H_apply_cis_diexcP(key_in, fs1, fh1, particl_1, fs2, fh2, particl_2, fock_diag_tmp, i_generator, iproc_in )
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`n_int`
|
||||||
|
* :c:data:`n_det`
|
||||||
|
* :c:data:`mo_num`
|
||||||
|
|
||||||
|
Called by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:func:`h_apply_cis_diexc`
|
||||||
|
|
||||||
|
Calls:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:func:`h_apply_cis_diexcorg`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:function:: h_apply_cis_monoexc:
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`h_apply.irp.f_shell_8`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
subroutine H_apply_cis_monoexc(key_in, hole_1,particl_1,fock_diag_tmp,i_generator,iproc_in )
|
||||||
|
|
||||||
|
|
||||||
|
Generate all single excitations of key_in using the bit masks of holes and
|
||||||
|
particles.
|
||||||
|
Assume N_int is already provided.
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`n_int`
|
||||||
|
* :c:data:`elec_alpha_num`
|
||||||
|
* :c:data:`mo_num`
|
||||||
|
|
||||||
|
Called by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:func:`h_apply_cis`
|
||||||
|
|
||||||
|
Calls:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:func:`bitstring_to_list_ab`
|
||||||
|
* :c:func:`fill_h_apply_buffer_no_selection`
|
||||||
|
|
273
doc/_sources/modules/cisd.rst.txt
Normal file
273
doc/_sources/modules/cisd.rst.txt
Normal file
@ -0,0 +1,273 @@
|
|||||||
|
.. _module_cisd:
|
||||||
|
|
||||||
|
.. program:: cisd
|
||||||
|
|
||||||
|
.. default-role:: option
|
||||||
|
|
||||||
|
====
|
||||||
|
cisd
|
||||||
|
====
|
||||||
|
|
||||||
|
This module contains a CI of single and double excitations.
|
||||||
|
|
||||||
|
The user point of view
|
||||||
|
----------------------
|
||||||
|
|
||||||
|
The :command:`cisd` program performs the CI of the ROHF-like + all single and double excitations on top of it.
|
||||||
|
This program can be very useful to :
|
||||||
|
|
||||||
|
* **Ground state calculations**: generate a guess for the ground state wave function if one is not sure that the :c:func:`scf` program gave the lowest SCF solution. In combination with :c:func:`save_natorb` it can produce new |MOs| in order to reperform an :c:func:`scf` optimization.
|
||||||
|
|
||||||
|
* **Excited states calculations**: generate guess for all the :option:`determinants n_states` wave functions, that will be used by the :c:func:`fci` program.
|
||||||
|
|
||||||
|
|
||||||
|
The main keywords/options to be used are:
|
||||||
|
|
||||||
|
* :option:`determinants n_states` : number of states to consider for the |cisd| calculation
|
||||||
|
|
||||||
|
* :option:`determinants s2_eig` : force all states to have the desired value of :math:`S^2`
|
||||||
|
|
||||||
|
* :option:`determinants expected_s2` : desired value of :math:`S^2`
|
||||||
|
|
||||||
|
The programmer point of view
|
||||||
|
----------------------------
|
||||||
|
|
||||||
|
This module have been 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
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Programs
|
||||||
|
--------
|
||||||
|
|
||||||
|
* :ref:`cisd`
|
||||||
|
|
||||||
|
Subroutines / functions
|
||||||
|
-----------------------
|
||||||
|
|
||||||
|
.. c:function:: h_apply_cisd:
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`h_apply.irp.f_shell_8`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
subroutine H_apply_cisd()
|
||||||
|
|
||||||
|
|
||||||
|
Calls H_apply on the |HF| determinant and selects all connected single and double
|
||||||
|
excitations (of the same symmetry). Auto-generated by the ``generate_h_apply`` script.
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`psi_coef`
|
||||||
|
* :c:data:`n_states`
|
||||||
|
* :c:data:`generators_bitmask`
|
||||||
|
* :c:data:`mo_num`
|
||||||
|
* :c:data:`mo_two_e_integrals_in_map`
|
||||||
|
* :c:data:`h_apply_buffer_allocated`
|
||||||
|
* :c:data:`n_det`
|
||||||
|
* :c:data:`s2_eig`
|
||||||
|
* :c:data:`n_det_generators`
|
||||||
|
* :c:data:`i_bitmask_gen`
|
||||||
|
* :c:data:`n_int`
|
||||||
|
* :c:data:`psi_det`
|
||||||
|
* :c:data:`psi_det_generators`
|
||||||
|
* :c:data:`psi_det_generators`
|
||||||
|
|
||||||
|
Calls:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:func:`build_fock_tmp`
|
||||||
|
* :c:func:`copy_h_apply_buffer_to_wf`
|
||||||
|
* :c:func:`dsort`
|
||||||
|
* :c:func:`h_apply_cisd_diexc`
|
||||||
|
* :c:func:`h_apply_cisd_monoexc`
|
||||||
|
* :c:func:`make_s2_eigenfunction`
|
||||||
|
* :c:func:`wall_time`
|
||||||
|
|
||||||
|
Touches:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`n_det`
|
||||||
|
* :c:data:`psi_occ_pattern`
|
||||||
|
* :c:data:`c0_weight`
|
||||||
|
* :c:data:`psi_coef`
|
||||||
|
* :c:data:`psi_det_sorted_bit`
|
||||||
|
* :c:data:`psi_det`
|
||||||
|
* :c:data:`psi_det_size`
|
||||||
|
* :c:data:`psi_det_sorted_bit`
|
||||||
|
* :c:data:`psi_occ_pattern`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:function:: h_apply_cisd_diexc:
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`h_apply.irp.f_shell_8`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
subroutine H_apply_cisd_diexc(key_in, key_prev, hole_1,particl_1, hole_2, particl_2, fock_diag_tmp, i_generator, iproc_in )
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`n_int`
|
||||||
|
* :c:data:`n_det`
|
||||||
|
* :c:data:`mo_num`
|
||||||
|
|
||||||
|
Called by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:func:`h_apply_cisd`
|
||||||
|
|
||||||
|
Calls:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:func:`h_apply_cisd_diexcp`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:function:: h_apply_cisd_diexcorg:
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`h_apply.irp.f_shell_8`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
subroutine H_apply_cisd_diexcOrg(key_in,key_mask,hole_1,particl_1,hole_2, particl_2, fock_diag_tmp, i_generator, iproc_in )
|
||||||
|
|
||||||
|
|
||||||
|
Generate all double excitations of key_in using the bit masks of holes and
|
||||||
|
particles.
|
||||||
|
Assume N_int is already provided.
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`n_int`
|
||||||
|
* :c:data:`elec_alpha_num`
|
||||||
|
* :c:data:`mo_num`
|
||||||
|
|
||||||
|
Called by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:func:`h_apply_cisd_diexcp`
|
||||||
|
|
||||||
|
Calls:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:func:`bitstring_to_list_ab`
|
||||||
|
* :c:func:`fill_h_apply_buffer_no_selection`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:function:: h_apply_cisd_diexcp:
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`h_apply.irp.f_shell_8`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
subroutine H_apply_cisd_diexcP(key_in, fs1, fh1, particl_1, fs2, fh2, particl_2, fock_diag_tmp, i_generator, iproc_in )
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`n_int`
|
||||||
|
* :c:data:`n_det`
|
||||||
|
* :c:data:`mo_num`
|
||||||
|
|
||||||
|
Called by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:func:`h_apply_cisd_diexc`
|
||||||
|
|
||||||
|
Calls:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:func:`h_apply_cisd_diexcorg`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:function:: h_apply_cisd_monoexc:
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`h_apply.irp.f_shell_8`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
subroutine H_apply_cisd_monoexc(key_in, hole_1,particl_1,fock_diag_tmp,i_generator,iproc_in )
|
||||||
|
|
||||||
|
|
||||||
|
Generate all single excitations of key_in using the bit masks of holes and
|
||||||
|
particles.
|
||||||
|
Assume N_int is already provided.
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`n_int`
|
||||||
|
* :c:data:`elec_alpha_num`
|
||||||
|
* :c:data:`mo_num`
|
||||||
|
|
||||||
|
Called by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:func:`h_apply_cisd`
|
||||||
|
|
||||||
|
Calls:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:func:`bitstring_to_list_ab`
|
||||||
|
* :c:func:`fill_h_apply_buffer_no_selection`
|
||||||
|
|
1799
doc/_sources/modules/davidson.rst.txt
Normal file
1799
doc/_sources/modules/davidson.rst.txt
Normal file
File diff suppressed because it is too large
Load Diff
13
doc/_sources/modules/davidson_dressed.rst.txt
Normal file
13
doc/_sources/modules/davidson_dressed.rst.txt
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
.. _module_davidson_dressed:
|
||||||
|
|
||||||
|
.. program:: davidson_dressed
|
||||||
|
|
||||||
|
.. default-role:: option
|
||||||
|
|
||||||
|
================
|
||||||
|
davidson_dressed
|
||||||
|
================
|
||||||
|
|
||||||
|
Davidson with single-column dressing.
|
||||||
|
|
||||||
|
|
75
doc/_sources/modules/davidson_undressed.rst.txt
Normal file
75
doc/_sources/modules/davidson_undressed.rst.txt
Normal file
@ -0,0 +1,75 @@
|
|||||||
|
.. _module_davidson_undressed:
|
||||||
|
|
||||||
|
.. program:: davidson_undressed
|
||||||
|
|
||||||
|
.. default-role:: option
|
||||||
|
|
||||||
|
==================
|
||||||
|
davidson_undressed
|
||||||
|
==================
|
||||||
|
|
||||||
|
Module for main files Davidson's algorithm with no dressing.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Providers
|
||||||
|
---------
|
||||||
|
|
||||||
|
.. c:var:: dressing_column_h
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`davidson_undressed/null_dressing_vector.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision, allocatable :: dressing_column_h (N_det,N_states)
|
||||||
|
double precision, allocatable :: dressing_column_s (N_det,N_states)
|
||||||
|
|
||||||
|
|
||||||
|
Null dressing vectors
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`n_det`
|
||||||
|
* :c:data:`n_states`
|
||||||
|
|
||||||
|
Needed by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`ci_electronic_energy`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: dressing_column_s
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`davidson_undressed/null_dressing_vector.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision, allocatable :: dressing_column_h (N_det,N_states)
|
||||||
|
double precision, allocatable :: dressing_column_s (N_det,N_states)
|
||||||
|
|
||||||
|
|
||||||
|
Null dressing vectors
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`n_det`
|
||||||
|
* :c:data:`n_states`
|
||||||
|
|
||||||
|
Needed by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`ci_electronic_energy`
|
||||||
|
|
306
doc/_sources/modules/density_for_dft.rst.txt
Normal file
306
doc/_sources/modules/density_for_dft.rst.txt
Normal file
@ -0,0 +1,306 @@
|
|||||||
|
.. _module_density_for_dft:
|
||||||
|
|
||||||
|
.. program:: density_for_dft
|
||||||
|
|
||||||
|
.. default-role:: option
|
||||||
|
|
||||||
|
===============
|
||||||
|
density_for_dft
|
||||||
|
===============
|
||||||
|
|
||||||
|
|
||||||
|
This module defines the *provider* of the density used for the DFT related calculations.
|
||||||
|
This definition is done through the keyword :option:`density_for_dft density_for_dft`.
|
||||||
|
The density can be:
|
||||||
|
|
||||||
|
* WFT : the density is computed with a potentially multi determinant wave function (see variables `psi_det` and `psi_det`)# input_density : the density is set to a density previously stored in the |EZFIO| folder (see ``aux_quantities``)
|
||||||
|
* damping_rs_dft : the density is damped between the input_density and the WFT density, with a damping factor of :option:`density_for_dft damping_for_rs_dft`
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
EZFIO parameters
|
||||||
|
----------------
|
||||||
|
|
||||||
|
.. option:: density_for_dft
|
||||||
|
|
||||||
|
Type of density used for DFT calculation. If set to WFT , it uses the density of the wave function stored in (psi_det,psi_coef). If set to input_density it uses the one-body dm stored in aux_quantities/ . If set to damping_rs_dft it uses the damped density between WFT and input_density. In the ks_scf and rs_ks_scf programs, it is set to WFT.
|
||||||
|
|
||||||
|
Default: WFT
|
||||||
|
|
||||||
|
.. option:: damping_for_rs_dft
|
||||||
|
|
||||||
|
damping factor for the density used in RSFT.
|
||||||
|
|
||||||
|
Default: 0.5
|
||||||
|
|
||||||
|
|
||||||
|
Providers
|
||||||
|
---------
|
||||||
|
|
||||||
|
.. c:var:: one_body_dm_mo_alpha_one_det
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`density_for_dft/density_for_dft.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision, allocatable :: one_body_dm_mo_alpha_one_det (mo_num,mo_num,N_states)
|
||||||
|
double precision, allocatable :: one_body_dm_mo_beta_one_det (mo_num,mo_num,N_states)
|
||||||
|
|
||||||
|
|
||||||
|
One body density matrix on the |MO| basis for a single determinant
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`elec_alpha_num`
|
||||||
|
* :c:data:`elec_beta_num`
|
||||||
|
* :c:data:`mo_num`
|
||||||
|
* :c:data:`n_states`
|
||||||
|
|
||||||
|
Needed by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`one_e_dm_mo_alpha_for_dft`
|
||||||
|
* :c:data:`one_e_dm_mo_beta_for_dft`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: one_body_dm_mo_beta_one_det
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`density_for_dft/density_for_dft.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision, allocatable :: one_body_dm_mo_alpha_one_det (mo_num,mo_num,N_states)
|
||||||
|
double precision, allocatable :: one_body_dm_mo_beta_one_det (mo_num,mo_num,N_states)
|
||||||
|
|
||||||
|
|
||||||
|
One body density matrix on the |MO| basis for a single determinant
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`elec_alpha_num`
|
||||||
|
* :c:data:`elec_beta_num`
|
||||||
|
* :c:data:`mo_num`
|
||||||
|
* :c:data:`n_states`
|
||||||
|
|
||||||
|
Needed by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`one_e_dm_mo_alpha_for_dft`
|
||||||
|
* :c:data:`one_e_dm_mo_beta_for_dft`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: one_e_dm_alpha_ao_for_dft
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`density_for_dft/density_for_dft.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision, allocatable :: one_e_dm_alpha_ao_for_dft (ao_num,ao_num,N_states)
|
||||||
|
double precision, allocatable :: one_e_dm_beta_ao_for_dft (ao_num,ao_num,N_states)
|
||||||
|
|
||||||
|
|
||||||
|
one body density matrix on the AO basis based on one_e_dm_mo_alpha_for_dft
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`ao_num`
|
||||||
|
* :c:data:`mo_coef`
|
||||||
|
* :c:data:`mo_num`
|
||||||
|
* :c:data:`n_states`
|
||||||
|
* :c:data:`one_e_dm_mo_alpha_for_dft`
|
||||||
|
* :c:data:`one_e_dm_mo_beta_for_dft`
|
||||||
|
|
||||||
|
Needed by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`one_e_dm_alpha_at_r`
|
||||||
|
* :c:data:`one_e_dm_alpha_in_r`
|
||||||
|
* :c:data:`one_e_dm_and_grad_alpha_in_r`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: one_e_dm_average_mo_for_dft
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`density_for_dft/density_for_dft.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision, allocatable :: one_e_dm_average_mo_for_dft (mo_num,mo_num)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`mo_num`
|
||||||
|
* :c:data:`n_states`
|
||||||
|
* :c:data:`one_e_dm_mo_for_dft`
|
||||||
|
* :c:data:`state_average_weight`
|
||||||
|
|
||||||
|
Needed by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`short_range_hartree_operator`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: one_e_dm_beta_ao_for_dft
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`density_for_dft/density_for_dft.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision, allocatable :: one_e_dm_alpha_ao_for_dft (ao_num,ao_num,N_states)
|
||||||
|
double precision, allocatable :: one_e_dm_beta_ao_for_dft (ao_num,ao_num,N_states)
|
||||||
|
|
||||||
|
|
||||||
|
one body density matrix on the AO basis based on one_e_dm_mo_alpha_for_dft
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`ao_num`
|
||||||
|
* :c:data:`mo_coef`
|
||||||
|
* :c:data:`mo_num`
|
||||||
|
* :c:data:`n_states`
|
||||||
|
* :c:data:`one_e_dm_mo_alpha_for_dft`
|
||||||
|
* :c:data:`one_e_dm_mo_beta_for_dft`
|
||||||
|
|
||||||
|
Needed by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`one_e_dm_alpha_at_r`
|
||||||
|
* :c:data:`one_e_dm_alpha_in_r`
|
||||||
|
* :c:data:`one_e_dm_and_grad_alpha_in_r`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: one_e_dm_mo_alpha_for_dft
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`density_for_dft/density_for_dft.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision, allocatable :: one_e_dm_mo_alpha_for_dft (mo_num,mo_num,N_states)
|
||||||
|
|
||||||
|
|
||||||
|
density matrix for alpha electrons in the MO basis used for all DFT calculations based on the density
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`damping_for_rs_dft`
|
||||||
|
* :c:data:`data_one_e_dm_alpha_mo`
|
||||||
|
* :c:data:`density_for_dft`
|
||||||
|
* :c:data:`mo_coef`
|
||||||
|
* :c:data:`mo_num`
|
||||||
|
* :c:data:`n_states`
|
||||||
|
* :c:data:`one_body_dm_mo_alpha_one_det`
|
||||||
|
* :c:data:`one_e_dm_mo_alpha`
|
||||||
|
|
||||||
|
Needed by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`one_e_dm_alpha_ao_for_dft`
|
||||||
|
* :c:data:`one_e_dm_mo_for_dft`
|
||||||
|
* :c:data:`psi_dft_energy_kinetic`
|
||||||
|
* :c:data:`trace_v_xc`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: one_e_dm_mo_beta_for_dft
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`density_for_dft/density_for_dft.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision, allocatable :: one_e_dm_mo_beta_for_dft (mo_num,mo_num,N_states)
|
||||||
|
|
||||||
|
|
||||||
|
density matrix for beta electrons in the MO basis used for all DFT calculations based on the density
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`damping_for_rs_dft`
|
||||||
|
* :c:data:`data_one_e_dm_beta_mo`
|
||||||
|
* :c:data:`density_for_dft`
|
||||||
|
* :c:data:`mo_coef`
|
||||||
|
* :c:data:`mo_num`
|
||||||
|
* :c:data:`n_states`
|
||||||
|
* :c:data:`one_body_dm_mo_alpha_one_det`
|
||||||
|
* :c:data:`one_e_dm_mo_alpha`
|
||||||
|
|
||||||
|
Needed by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`one_e_dm_alpha_ao_for_dft`
|
||||||
|
* :c:data:`one_e_dm_mo_for_dft`
|
||||||
|
* :c:data:`psi_dft_energy_kinetic`
|
||||||
|
* :c:data:`trace_v_xc`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: one_e_dm_mo_for_dft
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`density_for_dft/density_for_dft.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision, allocatable :: one_e_dm_mo_for_dft (mo_num,mo_num,N_states)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`mo_num`
|
||||||
|
* :c:data:`n_states`
|
||||||
|
* :c:data:`one_e_dm_mo_alpha_for_dft`
|
||||||
|
* :c:data:`one_e_dm_mo_beta_for_dft`
|
||||||
|
|
||||||
|
Needed by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`one_e_dm_average_mo_for_dft`
|
||||||
|
* :c:data:`short_range_hartree_operator`
|
||||||
|
|
7922
doc/_sources/modules/determinants.rst.txt
Normal file
7922
doc/_sources/modules/determinants.rst.txt
Normal file
File diff suppressed because it is too large
Load Diff
68
doc/_sources/modules/dft_keywords.rst.txt
Normal file
68
doc/_sources/modules/dft_keywords.rst.txt
Normal file
@ -0,0 +1,68 @@
|
|||||||
|
.. _module_dft_keywords:
|
||||||
|
|
||||||
|
.. program:: dft_keywords
|
||||||
|
|
||||||
|
.. default-role:: option
|
||||||
|
|
||||||
|
============
|
||||||
|
dft_keywords
|
||||||
|
============
|
||||||
|
|
||||||
|
This module contains the main keywords related to a DFT calculation or RS-DFT calculation, such as:
|
||||||
|
|
||||||
|
* :option:`dft_keywords exchange_functional`
|
||||||
|
* :option:`dft_keywords correlation_functional`
|
||||||
|
* :option:`dft_keywords HF_exchange` : only relevent for the :c:func:`rs_ks_scf` program
|
||||||
|
|
||||||
|
The keyword for the **range separation parameter** :math:`\mu` is the :option:`ao_two_e_erf_ints mu_erf` keyword.
|
||||||
|
|
||||||
|
The keyword for the type of density used in RS-DFT calculation with a multi-configurational wave function is the :option:`density_for_dft density_for_dft` keyword.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
EZFIO parameters
|
||||||
|
----------------
|
||||||
|
|
||||||
|
.. option:: exchange_functional
|
||||||
|
|
||||||
|
name of the exchange functional
|
||||||
|
|
||||||
|
Default: short_range_LDA
|
||||||
|
|
||||||
|
.. option:: correlation_functional
|
||||||
|
|
||||||
|
name of the correlation functional
|
||||||
|
|
||||||
|
Default: short_range_LDA
|
||||||
|
|
||||||
|
.. option:: HF_exchange
|
||||||
|
|
||||||
|
Percentage of HF exchange in the DFT model
|
||||||
|
|
||||||
|
Default: 0.
|
||||||
|
|
||||||
|
|
||||||
|
Providers
|
||||||
|
---------
|
||||||
|
|
||||||
|
.. c:var:: dft_type
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`dft_keywords/keywords.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
character*(32) :: dft_type
|
||||||
|
|
||||||
|
|
||||||
|
defines the type of DFT applied: LDA, GGA etc ...
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`correlation_functional`
|
||||||
|
* :c:data:`exchange_functional`
|
||||||
|
|
||||||
|
|
876
doc/_sources/modules/dft_utils_in_r.rst.txt
Normal file
876
doc/_sources/modules/dft_utils_in_r.rst.txt
Normal file
@ -0,0 +1,876 @@
|
|||||||
|
.. _module_dft_utils_in_r:
|
||||||
|
|
||||||
|
.. program:: dft_utils_in_r
|
||||||
|
|
||||||
|
.. default-role:: option
|
||||||
|
|
||||||
|
==============
|
||||||
|
dft_utils_in_r
|
||||||
|
==============
|
||||||
|
|
||||||
|
This module contains most of the fundamental quantities (AOs, MOs or density derivatives) evaluated in real-space representation that are needed for the various DFT modules.
|
||||||
|
|
||||||
|
As these quantities might be used and re-used, the values at each point of the grid are stored (see ``becke_numerical_grid`` for more information on the grid).
|
||||||
|
|
||||||
|
The main providers for this module are:
|
||||||
|
|
||||||
|
* `aos_in_r_array`: values of the |AO| basis on the grid point.
|
||||||
|
* `mos_in_r_array`: values of the |MO| basis on the grid point.
|
||||||
|
* `one_e_dm_and_grad_alpha_in_r`: values of the density and its gradienst on the grid points.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Providers
|
||||||
|
---------
|
||||||
|
|
||||||
|
.. c:var:: aos_grad_in_r_array
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`dft_utils_in_r/ao_in_r.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision, allocatable :: aos_grad_in_r_array (ao_num,n_points_final_grid,3)
|
||||||
|
double precision, allocatable :: aos_grad_in_r_array_transp (n_points_final_grid,ao_num,3)
|
||||||
|
double precision, allocatable :: aos_grad_in_r_array_transp_xyz (3,n_points_final_grid,ao_num)
|
||||||
|
|
||||||
|
|
||||||
|
aos_grad_in_r_array(i,j,k) = value of the kth component of the gradient of ith ao on the jth grid point
|
||||||
|
|
||||||
|
aos_grad_in_r_array_transp(i,j,k) = value of the kth component of the gradient of jth ao on the ith grid point
|
||||||
|
|
||||||
|
k = 1 : x, k= 2, y, k 3, z
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`ao_coef_normalized_ordered_transp_per_nucl`
|
||||||
|
* :c:data:`ao_expo_ordered_transp_per_nucl`
|
||||||
|
* :c:data:`ao_num`
|
||||||
|
* :c:data:`ao_power_ordered_transp_per_nucl`
|
||||||
|
* :c:data:`ao_prim_num`
|
||||||
|
* :c:data:`final_grid_points`
|
||||||
|
* :c:data:`n_points_final_grid`
|
||||||
|
* :c:data:`nucl_aos_transposed`
|
||||||
|
* :c:data:`nucl_coord`
|
||||||
|
* :c:data:`nucl_n_aos`
|
||||||
|
* :c:data:`nucl_num`
|
||||||
|
|
||||||
|
Needed by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`aos_sr_vc_alpha_pbe_w`
|
||||||
|
* :c:data:`aos_vc_alpha_pbe_w`
|
||||||
|
* :c:data:`mos_grad_in_r_array`
|
||||||
|
* :c:data:`potential_sr_x_alpha_ao_pbe`
|
||||||
|
* :c:data:`potential_x_alpha_ao_pbe`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: aos_grad_in_r_array_transp
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`dft_utils_in_r/ao_in_r.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision, allocatable :: aos_grad_in_r_array (ao_num,n_points_final_grid,3)
|
||||||
|
double precision, allocatable :: aos_grad_in_r_array_transp (n_points_final_grid,ao_num,3)
|
||||||
|
double precision, allocatable :: aos_grad_in_r_array_transp_xyz (3,n_points_final_grid,ao_num)
|
||||||
|
|
||||||
|
|
||||||
|
aos_grad_in_r_array(i,j,k) = value of the kth component of the gradient of ith ao on the jth grid point
|
||||||
|
|
||||||
|
aos_grad_in_r_array_transp(i,j,k) = value of the kth component of the gradient of jth ao on the ith grid point
|
||||||
|
|
||||||
|
k = 1 : x, k= 2, y, k 3, z
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`ao_coef_normalized_ordered_transp_per_nucl`
|
||||||
|
* :c:data:`ao_expo_ordered_transp_per_nucl`
|
||||||
|
* :c:data:`ao_num`
|
||||||
|
* :c:data:`ao_power_ordered_transp_per_nucl`
|
||||||
|
* :c:data:`ao_prim_num`
|
||||||
|
* :c:data:`final_grid_points`
|
||||||
|
* :c:data:`n_points_final_grid`
|
||||||
|
* :c:data:`nucl_aos_transposed`
|
||||||
|
* :c:data:`nucl_coord`
|
||||||
|
* :c:data:`nucl_n_aos`
|
||||||
|
* :c:data:`nucl_num`
|
||||||
|
|
||||||
|
Needed by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`aos_sr_vc_alpha_pbe_w`
|
||||||
|
* :c:data:`aos_vc_alpha_pbe_w`
|
||||||
|
* :c:data:`mos_grad_in_r_array`
|
||||||
|
* :c:data:`potential_sr_x_alpha_ao_pbe`
|
||||||
|
* :c:data:`potential_x_alpha_ao_pbe`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: aos_grad_in_r_array_transp_xyz
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`dft_utils_in_r/ao_in_r.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision, allocatable :: aos_grad_in_r_array (ao_num,n_points_final_grid,3)
|
||||||
|
double precision, allocatable :: aos_grad_in_r_array_transp (n_points_final_grid,ao_num,3)
|
||||||
|
double precision, allocatable :: aos_grad_in_r_array_transp_xyz (3,n_points_final_grid,ao_num)
|
||||||
|
|
||||||
|
|
||||||
|
aos_grad_in_r_array(i,j,k) = value of the kth component of the gradient of ith ao on the jth grid point
|
||||||
|
|
||||||
|
aos_grad_in_r_array_transp(i,j,k) = value of the kth component of the gradient of jth ao on the ith grid point
|
||||||
|
|
||||||
|
k = 1 : x, k= 2, y, k 3, z
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`ao_coef_normalized_ordered_transp_per_nucl`
|
||||||
|
* :c:data:`ao_expo_ordered_transp_per_nucl`
|
||||||
|
* :c:data:`ao_num`
|
||||||
|
* :c:data:`ao_power_ordered_transp_per_nucl`
|
||||||
|
* :c:data:`ao_prim_num`
|
||||||
|
* :c:data:`final_grid_points`
|
||||||
|
* :c:data:`n_points_final_grid`
|
||||||
|
* :c:data:`nucl_aos_transposed`
|
||||||
|
* :c:data:`nucl_coord`
|
||||||
|
* :c:data:`nucl_n_aos`
|
||||||
|
* :c:data:`nucl_num`
|
||||||
|
|
||||||
|
Needed by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`aos_sr_vc_alpha_pbe_w`
|
||||||
|
* :c:data:`aos_vc_alpha_pbe_w`
|
||||||
|
* :c:data:`mos_grad_in_r_array`
|
||||||
|
* :c:data:`potential_sr_x_alpha_ao_pbe`
|
||||||
|
* :c:data:`potential_x_alpha_ao_pbe`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: aos_in_r_array
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`dft_utils_in_r/ao_in_r.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision, allocatable :: aos_in_r_array (ao_num,n_points_final_grid)
|
||||||
|
double precision, allocatable :: aos_in_r_array_transp (n_points_final_grid,ao_num)
|
||||||
|
|
||||||
|
|
||||||
|
aos_in_r_array(i,j) = value of the ith ao on the jth grid point
|
||||||
|
|
||||||
|
aos_in_r_array_transp(i,j) = value of the jth ao on the ith grid point
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`ao_coef_normalized_ordered_transp_per_nucl`
|
||||||
|
* :c:data:`ao_expo_ordered_transp_per_nucl`
|
||||||
|
* :c:data:`ao_num`
|
||||||
|
* :c:data:`ao_power_ordered_transp_per_nucl`
|
||||||
|
* :c:data:`ao_prim_num`
|
||||||
|
* :c:data:`final_grid_points`
|
||||||
|
* :c:data:`n_points_final_grid`
|
||||||
|
* :c:data:`nucl_aos_transposed`
|
||||||
|
* :c:data:`nucl_coord`
|
||||||
|
* :c:data:`nucl_n_aos`
|
||||||
|
* :c:data:`nucl_num`
|
||||||
|
|
||||||
|
Needed by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`aos_sr_vc_alpha_lda_w`
|
||||||
|
* :c:data:`aos_sr_vc_alpha_pbe_w`
|
||||||
|
* :c:data:`aos_vc_alpha_lda_w`
|
||||||
|
* :c:data:`aos_vc_alpha_pbe_w`
|
||||||
|
* :c:data:`potential_sr_c_alpha_ao_lda`
|
||||||
|
* :c:data:`potential_sr_x_alpha_ao_lda`
|
||||||
|
* :c:data:`potential_sr_x_alpha_ao_pbe`
|
||||||
|
* :c:data:`potential_x_alpha_ao_lda`
|
||||||
|
* :c:data:`potential_x_alpha_ao_pbe`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: aos_in_r_array_transp
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`dft_utils_in_r/ao_in_r.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision, allocatable :: aos_in_r_array (ao_num,n_points_final_grid)
|
||||||
|
double precision, allocatable :: aos_in_r_array_transp (n_points_final_grid,ao_num)
|
||||||
|
|
||||||
|
|
||||||
|
aos_in_r_array(i,j) = value of the ith ao on the jth grid point
|
||||||
|
|
||||||
|
aos_in_r_array_transp(i,j) = value of the jth ao on the ith grid point
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`ao_coef_normalized_ordered_transp_per_nucl`
|
||||||
|
* :c:data:`ao_expo_ordered_transp_per_nucl`
|
||||||
|
* :c:data:`ao_num`
|
||||||
|
* :c:data:`ao_power_ordered_transp_per_nucl`
|
||||||
|
* :c:data:`ao_prim_num`
|
||||||
|
* :c:data:`final_grid_points`
|
||||||
|
* :c:data:`n_points_final_grid`
|
||||||
|
* :c:data:`nucl_aos_transposed`
|
||||||
|
* :c:data:`nucl_coord`
|
||||||
|
* :c:data:`nucl_n_aos`
|
||||||
|
* :c:data:`nucl_num`
|
||||||
|
|
||||||
|
Needed by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`aos_sr_vc_alpha_lda_w`
|
||||||
|
* :c:data:`aos_sr_vc_alpha_pbe_w`
|
||||||
|
* :c:data:`aos_vc_alpha_lda_w`
|
||||||
|
* :c:data:`aos_vc_alpha_pbe_w`
|
||||||
|
* :c:data:`potential_sr_c_alpha_ao_lda`
|
||||||
|
* :c:data:`potential_sr_x_alpha_ao_lda`
|
||||||
|
* :c:data:`potential_sr_x_alpha_ao_pbe`
|
||||||
|
* :c:data:`potential_x_alpha_ao_lda`
|
||||||
|
* :c:data:`potential_x_alpha_ao_pbe`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: aos_lapl_in_r_array
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`dft_utils_in_r/ao_in_r.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision, allocatable :: aos_lapl_in_r_array (ao_num,n_points_final_grid,3)
|
||||||
|
double precision, allocatable :: aos_lapl_in_r_array_transp (n_points_final_grid,ao_num,3)
|
||||||
|
|
||||||
|
|
||||||
|
aos_lapl_in_r_array(i,j,k) = value of the kth component of the laplacian of ith ao on the jth grid point
|
||||||
|
|
||||||
|
aos_lapl_in_r_array_transp(i,j,k) = value of the kth component of the laplacian of jth ao on the ith grid point
|
||||||
|
|
||||||
|
k = 1 : x, k= 2, y, k 3, z
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`ao_coef_normalized_ordered_transp_per_nucl`
|
||||||
|
* :c:data:`ao_expo_ordered_transp_per_nucl`
|
||||||
|
* :c:data:`ao_num`
|
||||||
|
* :c:data:`ao_power_ordered_transp_per_nucl`
|
||||||
|
* :c:data:`ao_prim_num`
|
||||||
|
* :c:data:`final_grid_points`
|
||||||
|
* :c:data:`n_points_final_grid`
|
||||||
|
* :c:data:`nucl_aos_transposed`
|
||||||
|
* :c:data:`nucl_coord`
|
||||||
|
* :c:data:`nucl_n_aos`
|
||||||
|
* :c:data:`nucl_num`
|
||||||
|
|
||||||
|
Needed by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`mos_lapl_in_r_array`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: aos_lapl_in_r_array_transp
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`dft_utils_in_r/ao_in_r.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision, allocatable :: aos_lapl_in_r_array (ao_num,n_points_final_grid,3)
|
||||||
|
double precision, allocatable :: aos_lapl_in_r_array_transp (n_points_final_grid,ao_num,3)
|
||||||
|
|
||||||
|
|
||||||
|
aos_lapl_in_r_array(i,j,k) = value of the kth component of the laplacian of ith ao on the jth grid point
|
||||||
|
|
||||||
|
aos_lapl_in_r_array_transp(i,j,k) = value of the kth component of the laplacian of jth ao on the ith grid point
|
||||||
|
|
||||||
|
k = 1 : x, k= 2, y, k 3, z
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`ao_coef_normalized_ordered_transp_per_nucl`
|
||||||
|
* :c:data:`ao_expo_ordered_transp_per_nucl`
|
||||||
|
* :c:data:`ao_num`
|
||||||
|
* :c:data:`ao_power_ordered_transp_per_nucl`
|
||||||
|
* :c:data:`ao_prim_num`
|
||||||
|
* :c:data:`final_grid_points`
|
||||||
|
* :c:data:`n_points_final_grid`
|
||||||
|
* :c:data:`nucl_aos_transposed`
|
||||||
|
* :c:data:`nucl_coord`
|
||||||
|
* :c:data:`nucl_n_aos`
|
||||||
|
* :c:data:`nucl_num`
|
||||||
|
|
||||||
|
Needed by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`mos_lapl_in_r_array`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: mos_grad_in_r_array
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`dft_utils_in_r/mo_in_r.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision, allocatable :: mos_grad_in_r_array (mo_num,n_points_final_grid,3)
|
||||||
|
|
||||||
|
|
||||||
|
mos_grad_in_r_array(i,j,k) = value of the kth component of the gradient of ith mo on the jth grid point
|
||||||
|
|
||||||
|
mos_grad_in_r_array_transp(i,j,k) = value of the kth component of the gradient of jth mo on the ith grid point
|
||||||
|
|
||||||
|
k = 1 : x, k= 2, y, k 3, z
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`ao_num`
|
||||||
|
* :c:data:`aos_grad_in_r_array`
|
||||||
|
* :c:data:`mo_coef_transp`
|
||||||
|
* :c:data:`mo_num`
|
||||||
|
* :c:data:`n_points_final_grid`
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: mos_in_r_array
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`dft_utils_in_r/mo_in_r.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision, allocatable :: mos_in_r_array (mo_num,n_points_final_grid)
|
||||||
|
double precision, allocatable :: mos_in_r_array_transp (n_points_final_grid,mo_num)
|
||||||
|
|
||||||
|
|
||||||
|
mos_in_r_array(i,j) = value of the ith mo on the jth grid point
|
||||||
|
|
||||||
|
mos_in_r_array_transp(i,j) = value of the jth mo on the ith grid point
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`ao_num`
|
||||||
|
* :c:data:`final_grid_points`
|
||||||
|
* :c:data:`mo_coef_transp`
|
||||||
|
* :c:data:`mo_num`
|
||||||
|
* :c:data:`n_points_final_grid`
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: mos_in_r_array_transp
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`dft_utils_in_r/mo_in_r.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision, allocatable :: mos_in_r_array (mo_num,n_points_final_grid)
|
||||||
|
double precision, allocatable :: mos_in_r_array_transp (n_points_final_grid,mo_num)
|
||||||
|
|
||||||
|
|
||||||
|
mos_in_r_array(i,j) = value of the ith mo on the jth grid point
|
||||||
|
|
||||||
|
mos_in_r_array_transp(i,j) = value of the jth mo on the ith grid point
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`ao_num`
|
||||||
|
* :c:data:`final_grid_points`
|
||||||
|
* :c:data:`mo_coef_transp`
|
||||||
|
* :c:data:`mo_num`
|
||||||
|
* :c:data:`n_points_final_grid`
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: mos_lapl_in_r_array
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`dft_utils_in_r/mo_in_r.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision, allocatable :: mos_lapl_in_r_array (mo_num,n_points_final_grid,3)
|
||||||
|
|
||||||
|
|
||||||
|
mos_lapl_in_r_array(i,j,k) = value of the kth component of the laplacian of ith mo on the jth grid point
|
||||||
|
|
||||||
|
mos_lapl_in_r_array_transp(i,j,k) = value of the kth component of the laplacian of jth mo on the ith grid point
|
||||||
|
|
||||||
|
k = 1 : x, k= 2, y, k 3, z
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`ao_num`
|
||||||
|
* :c:data:`aos_lapl_in_r_array`
|
||||||
|
* :c:data:`mo_coef_transp`
|
||||||
|
* :c:data:`mo_num`
|
||||||
|
* :c:data:`n_points_final_grid`
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: one_e_dm_alpha_at_r
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`dft_utils_in_r/dm_in_r.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision, allocatable :: one_e_dm_alpha_at_r (n_points_final_grid,N_states)
|
||||||
|
double precision, allocatable :: one_e_dm_beta_at_r (n_points_final_grid,N_states)
|
||||||
|
|
||||||
|
|
||||||
|
one_e_dm_alpha_at_r(i,istate) = n_alpha(r_i,istate)
|
||||||
|
one_e_dm_beta_at_r(i,istate) = n_beta(r_i,istate)
|
||||||
|
where r_i is the ith point of the grid and istate is the state number
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`ao_num`
|
||||||
|
* :c:data:`final_grid_points`
|
||||||
|
* :c:data:`n_points_final_grid`
|
||||||
|
* :c:data:`n_states`
|
||||||
|
* :c:data:`one_e_dm_alpha_ao_for_dft`
|
||||||
|
|
||||||
|
Needed by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`aos_sr_vc_alpha_lda_w`
|
||||||
|
* :c:data:`aos_vc_alpha_lda_w`
|
||||||
|
* :c:data:`energy_sr_x_lda`
|
||||||
|
* :c:data:`energy_x_lda`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: one_e_dm_alpha_in_r
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`dft_utils_in_r/dm_in_r.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision, allocatable :: one_e_dm_alpha_in_r (n_points_integration_angular,n_points_radial_grid,nucl_num,N_states)
|
||||||
|
double precision, allocatable :: one_e_dm_beta_in_r (n_points_integration_angular,n_points_radial_grid,nucl_num,N_states)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`ao_num`
|
||||||
|
* :c:data:`grid_points_per_atom`
|
||||||
|
* :c:data:`mo_num`
|
||||||
|
* :c:data:`n_points_radial_grid`
|
||||||
|
* :c:data:`n_states`
|
||||||
|
* :c:data:`nucl_num`
|
||||||
|
* :c:data:`one_e_dm_alpha_ao_for_dft`
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: one_e_dm_and_grad_alpha_in_r
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`dft_utils_in_r/dm_in_r.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision, allocatable :: one_e_dm_and_grad_alpha_in_r (4,n_points_final_grid,N_states)
|
||||||
|
double precision, allocatable :: one_e_dm_and_grad_beta_in_r (4,n_points_final_grid,N_states)
|
||||||
|
double precision, allocatable :: one_e_grad_2_dm_alpha_at_r (n_points_final_grid,N_states)
|
||||||
|
double precision, allocatable :: one_e_grad_2_dm_beta_at_r (n_points_final_grid,N_states)
|
||||||
|
|
||||||
|
|
||||||
|
one_e_dm_and_grad_alpha_in_r(1,i,i_state) = d\dx n_alpha(r_i,istate)
|
||||||
|
one_e_dm_and_grad_alpha_in_r(2,i,i_state) = d\dy n_alpha(r_i,istate)
|
||||||
|
one_e_dm_and_grad_alpha_in_r(3,i,i_state) = d\dz n_alpha(r_i,istate)
|
||||||
|
one_e_dm_and_grad_alpha_in_r(4,i,i_state) = n_alpha(r_i,istate)
|
||||||
|
one_e_grad_2_dm_alpha_at_r(i,istate) = d\dx n_alpha(r_i,istate)^2 + d\dy n_alpha(r_i,istate)^2 + d\dz n_alpha(r_i,istate)^2
|
||||||
|
where r_i is the ith point of the grid and istate is the state number
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`ao_num`
|
||||||
|
* :c:data:`final_grid_points`
|
||||||
|
* :c:data:`n_points_final_grid`
|
||||||
|
* :c:data:`n_states`
|
||||||
|
* :c:data:`one_e_dm_alpha_ao_for_dft`
|
||||||
|
|
||||||
|
Needed by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`aos_sr_vc_alpha_pbe_w`
|
||||||
|
* :c:data:`aos_vc_alpha_pbe_w`
|
||||||
|
* :c:data:`energy_sr_x_pbe`
|
||||||
|
* :c:data:`energy_x_pbe`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: one_e_dm_and_grad_beta_in_r
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`dft_utils_in_r/dm_in_r.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision, allocatable :: one_e_dm_and_grad_alpha_in_r (4,n_points_final_grid,N_states)
|
||||||
|
double precision, allocatable :: one_e_dm_and_grad_beta_in_r (4,n_points_final_grid,N_states)
|
||||||
|
double precision, allocatable :: one_e_grad_2_dm_alpha_at_r (n_points_final_grid,N_states)
|
||||||
|
double precision, allocatable :: one_e_grad_2_dm_beta_at_r (n_points_final_grid,N_states)
|
||||||
|
|
||||||
|
|
||||||
|
one_e_dm_and_grad_alpha_in_r(1,i,i_state) = d\dx n_alpha(r_i,istate)
|
||||||
|
one_e_dm_and_grad_alpha_in_r(2,i,i_state) = d\dy n_alpha(r_i,istate)
|
||||||
|
one_e_dm_and_grad_alpha_in_r(3,i,i_state) = d\dz n_alpha(r_i,istate)
|
||||||
|
one_e_dm_and_grad_alpha_in_r(4,i,i_state) = n_alpha(r_i,istate)
|
||||||
|
one_e_grad_2_dm_alpha_at_r(i,istate) = d\dx n_alpha(r_i,istate)^2 + d\dy n_alpha(r_i,istate)^2 + d\dz n_alpha(r_i,istate)^2
|
||||||
|
where r_i is the ith point of the grid and istate is the state number
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`ao_num`
|
||||||
|
* :c:data:`final_grid_points`
|
||||||
|
* :c:data:`n_points_final_grid`
|
||||||
|
* :c:data:`n_states`
|
||||||
|
* :c:data:`one_e_dm_alpha_ao_for_dft`
|
||||||
|
|
||||||
|
Needed by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`aos_sr_vc_alpha_pbe_w`
|
||||||
|
* :c:data:`aos_vc_alpha_pbe_w`
|
||||||
|
* :c:data:`energy_sr_x_pbe`
|
||||||
|
* :c:data:`energy_x_pbe`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: one_e_dm_beta_at_r
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`dft_utils_in_r/dm_in_r.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision, allocatable :: one_e_dm_alpha_at_r (n_points_final_grid,N_states)
|
||||||
|
double precision, allocatable :: one_e_dm_beta_at_r (n_points_final_grid,N_states)
|
||||||
|
|
||||||
|
|
||||||
|
one_e_dm_alpha_at_r(i,istate) = n_alpha(r_i,istate)
|
||||||
|
one_e_dm_beta_at_r(i,istate) = n_beta(r_i,istate)
|
||||||
|
where r_i is the ith point of the grid and istate is the state number
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`ao_num`
|
||||||
|
* :c:data:`final_grid_points`
|
||||||
|
* :c:data:`n_points_final_grid`
|
||||||
|
* :c:data:`n_states`
|
||||||
|
* :c:data:`one_e_dm_alpha_ao_for_dft`
|
||||||
|
|
||||||
|
Needed by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`aos_sr_vc_alpha_lda_w`
|
||||||
|
* :c:data:`aos_vc_alpha_lda_w`
|
||||||
|
* :c:data:`energy_sr_x_lda`
|
||||||
|
* :c:data:`energy_x_lda`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: one_e_dm_beta_in_r
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`dft_utils_in_r/dm_in_r.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision, allocatable :: one_e_dm_alpha_in_r (n_points_integration_angular,n_points_radial_grid,nucl_num,N_states)
|
||||||
|
double precision, allocatable :: one_e_dm_beta_in_r (n_points_integration_angular,n_points_radial_grid,nucl_num,N_states)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`ao_num`
|
||||||
|
* :c:data:`grid_points_per_atom`
|
||||||
|
* :c:data:`mo_num`
|
||||||
|
* :c:data:`n_points_radial_grid`
|
||||||
|
* :c:data:`n_states`
|
||||||
|
* :c:data:`nucl_num`
|
||||||
|
* :c:data:`one_e_dm_alpha_ao_for_dft`
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: one_e_grad_2_dm_alpha_at_r
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`dft_utils_in_r/dm_in_r.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision, allocatable :: one_e_dm_and_grad_alpha_in_r (4,n_points_final_grid,N_states)
|
||||||
|
double precision, allocatable :: one_e_dm_and_grad_beta_in_r (4,n_points_final_grid,N_states)
|
||||||
|
double precision, allocatable :: one_e_grad_2_dm_alpha_at_r (n_points_final_grid,N_states)
|
||||||
|
double precision, allocatable :: one_e_grad_2_dm_beta_at_r (n_points_final_grid,N_states)
|
||||||
|
|
||||||
|
|
||||||
|
one_e_dm_and_grad_alpha_in_r(1,i,i_state) = d\dx n_alpha(r_i,istate)
|
||||||
|
one_e_dm_and_grad_alpha_in_r(2,i,i_state) = d\dy n_alpha(r_i,istate)
|
||||||
|
one_e_dm_and_grad_alpha_in_r(3,i,i_state) = d\dz n_alpha(r_i,istate)
|
||||||
|
one_e_dm_and_grad_alpha_in_r(4,i,i_state) = n_alpha(r_i,istate)
|
||||||
|
one_e_grad_2_dm_alpha_at_r(i,istate) = d\dx n_alpha(r_i,istate)^2 + d\dy n_alpha(r_i,istate)^2 + d\dz n_alpha(r_i,istate)^2
|
||||||
|
where r_i is the ith point of the grid and istate is the state number
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`ao_num`
|
||||||
|
* :c:data:`final_grid_points`
|
||||||
|
* :c:data:`n_points_final_grid`
|
||||||
|
* :c:data:`n_states`
|
||||||
|
* :c:data:`one_e_dm_alpha_ao_for_dft`
|
||||||
|
|
||||||
|
Needed by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`aos_sr_vc_alpha_pbe_w`
|
||||||
|
* :c:data:`aos_vc_alpha_pbe_w`
|
||||||
|
* :c:data:`energy_sr_x_pbe`
|
||||||
|
* :c:data:`energy_x_pbe`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: one_e_grad_2_dm_beta_at_r
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`dft_utils_in_r/dm_in_r.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision, allocatable :: one_e_dm_and_grad_alpha_in_r (4,n_points_final_grid,N_states)
|
||||||
|
double precision, allocatable :: one_e_dm_and_grad_beta_in_r (4,n_points_final_grid,N_states)
|
||||||
|
double precision, allocatable :: one_e_grad_2_dm_alpha_at_r (n_points_final_grid,N_states)
|
||||||
|
double precision, allocatable :: one_e_grad_2_dm_beta_at_r (n_points_final_grid,N_states)
|
||||||
|
|
||||||
|
|
||||||
|
one_e_dm_and_grad_alpha_in_r(1,i,i_state) = d\dx n_alpha(r_i,istate)
|
||||||
|
one_e_dm_and_grad_alpha_in_r(2,i,i_state) = d\dy n_alpha(r_i,istate)
|
||||||
|
one_e_dm_and_grad_alpha_in_r(3,i,i_state) = d\dz n_alpha(r_i,istate)
|
||||||
|
one_e_dm_and_grad_alpha_in_r(4,i,i_state) = n_alpha(r_i,istate)
|
||||||
|
one_e_grad_2_dm_alpha_at_r(i,istate) = d\dx n_alpha(r_i,istate)^2 + d\dy n_alpha(r_i,istate)^2 + d\dz n_alpha(r_i,istate)^2
|
||||||
|
where r_i is the ith point of the grid and istate is the state number
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`ao_num`
|
||||||
|
* :c:data:`final_grid_points`
|
||||||
|
* :c:data:`n_points_final_grid`
|
||||||
|
* :c:data:`n_states`
|
||||||
|
* :c:data:`one_e_dm_alpha_ao_for_dft`
|
||||||
|
|
||||||
|
Needed by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`aos_sr_vc_alpha_pbe_w`
|
||||||
|
* :c:data:`aos_vc_alpha_pbe_w`
|
||||||
|
* :c:data:`energy_sr_x_pbe`
|
||||||
|
* :c:data:`energy_x_pbe`
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Subroutines / functions
|
||||||
|
-----------------------
|
||||||
|
|
||||||
|
.. c:function:: density_and_grad_alpha_beta_and_all_aos_and_grad_aos_at_r:
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`dft_utils_in_r/dm_in_r.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
subroutine density_and_grad_alpha_beta_and_all_aos_and_grad_aos_at_r(r,dm_a,dm_b, grad_dm_a, grad_dm_b, aos_array, grad_aos_array)
|
||||||
|
|
||||||
|
|
||||||
|
input : r(1) ==> r(1) = x, r(2) = y, r(3) = z
|
||||||
|
output : dm_a = alpha density evaluated at r
|
||||||
|
: dm_b = beta density evaluated at r
|
||||||
|
: aos_array(i) = ao(i) evaluated at r
|
||||||
|
: grad_dm_a(1) = X gradient of the alpha density evaluated in r
|
||||||
|
: grad_dm_a(1) = X gradient of the beta density evaluated in r
|
||||||
|
: grad_aos_array(1) = X gradient of the aos(i) evaluated at r
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`ao_num`
|
||||||
|
* :c:data:`one_e_dm_alpha_ao_for_dft`
|
||||||
|
* :c:data:`n_states`
|
||||||
|
|
||||||
|
Called by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`one_e_dm_and_grad_alpha_in_r`
|
||||||
|
|
||||||
|
Calls:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:func:`dsymv`
|
||||||
|
* :c:func:`give_all_aos_and_grad_at_r`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:function:: dm_dft_alpha_beta_and_all_aos_at_r:
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`dft_utils_in_r/dm_in_r.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
subroutine dm_dft_alpha_beta_and_all_aos_at_r(r,dm_a,dm_b,aos_array)
|
||||||
|
|
||||||
|
|
||||||
|
input: r(1) ==> r(1) = x, r(2) = y, r(3) = z
|
||||||
|
output : dm_a = alpha density evaluated at r
|
||||||
|
output : dm_b = beta density evaluated at r
|
||||||
|
output : aos_array(i) = ao(i) evaluated at r
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`ao_num`
|
||||||
|
* :c:data:`one_e_dm_alpha_ao_for_dft`
|
||||||
|
* :c:data:`n_states`
|
||||||
|
|
||||||
|
Calls:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:func:`dsymv`
|
||||||
|
* :c:func:`give_all_aos_at_r`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:function:: dm_dft_alpha_beta_at_r:
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`dft_utils_in_r/dm_in_r.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
subroutine dm_dft_alpha_beta_at_r(r,dm_a,dm_b)
|
||||||
|
|
||||||
|
|
||||||
|
input: r(1) ==> r(1) = x, r(2) = y, r(3) = z
|
||||||
|
output : dm_a = alpha density evaluated at r(3)
|
||||||
|
output : dm_b = beta density evaluated at r(3)
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`ao_num`
|
||||||
|
* :c:data:`one_e_dm_alpha_ao_for_dft`
|
||||||
|
* :c:data:`n_states`
|
||||||
|
|
||||||
|
Called by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`one_e_dm_alpha_at_r`
|
||||||
|
* :c:data:`one_e_dm_alpha_in_r`
|
||||||
|
|
||||||
|
Calls:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:func:`dgemv`
|
||||||
|
* :c:func:`give_all_aos_at_r`
|
||||||
|
|
3765
doc/_sources/modules/dft_utils_one_e.rst.txt
Normal file
3765
doc/_sources/modules/dft_utils_one_e.rst.txt
Normal file
File diff suppressed because it is too large
Load Diff
36
doc/_sources/modules/dressing.rst.txt
Normal file
36
doc/_sources/modules/dressing.rst.txt
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
.. _module_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
|
114
doc/_sources/modules/electrons.rst.txt
Normal file
114
doc/_sources/modules/electrons.rst.txt
Normal file
@ -0,0 +1,114 @@
|
|||||||
|
.. _module_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
|
||||||
|
|
||||||
|
|
||||||
|
Providers
|
||||||
|
---------
|
||||||
|
|
||||||
|
.. c:var:: elec_num
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`electrons/electrons.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
integer :: elec_num
|
||||||
|
integer, allocatable :: elec_num_tab (2)
|
||||||
|
|
||||||
|
|
||||||
|
Numbers of alpha ("up") , beta ("down") and total electrons
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`elec_alpha_num`
|
||||||
|
* :c:data:`elec_beta_num`
|
||||||
|
* :c:data:`ezfio_filename`
|
||||||
|
|
||||||
|
Needed by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`diagonal_h_matrix_on_psi_det`
|
||||||
|
* :c:data:`psi_det_hii`
|
||||||
|
* :c:data:`psi_selectors_diag_h_mat`
|
||||||
|
* :c:data:`pt2_f`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: elec_num_tab
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`electrons/electrons.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
integer :: elec_num
|
||||||
|
integer, allocatable :: elec_num_tab (2)
|
||||||
|
|
||||||
|
|
||||||
|
Numbers of alpha ("up") , beta ("down") and total electrons
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`elec_alpha_num`
|
||||||
|
* :c:data:`elec_beta_num`
|
||||||
|
* :c:data:`ezfio_filename`
|
||||||
|
|
||||||
|
Needed by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`diagonal_h_matrix_on_psi_det`
|
||||||
|
* :c:data:`psi_det_hii`
|
||||||
|
* :c:data:`psi_selectors_diag_h_mat`
|
||||||
|
* :c:data:`pt2_f`
|
||||||
|
|
760
doc/_sources/modules/ezfio_files.rst.txt
Normal file
760
doc/_sources/modules/ezfio_files.rst.txt
Normal file
@ -0,0 +1,760 @@
|
|||||||
|
.. _module_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.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Providers
|
||||||
|
---------
|
||||||
|
|
||||||
|
.. c:var:: ezfio_filename
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`ezfio_files/ezfio.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
character*(128) :: ezfio_filename
|
||||||
|
|
||||||
|
|
||||||
|
Name of EZFIO file. It is obtained from the QPACKAGE_INPUT environment
|
||||||
|
variable if it is set, or as the 1st argument of the command line.
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`mpi_initialized`
|
||||||
|
|
||||||
|
Needed by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`ao_cartesian`
|
||||||
|
* :c:data:`ao_coef`
|
||||||
|
* :c:data:`ao_expo`
|
||||||
|
* :c:data:`ao_integrals_threshold`
|
||||||
|
* :c:data:`ao_md5`
|
||||||
|
* :c:data:`ao_nucl`
|
||||||
|
* :c:data:`ao_num`
|
||||||
|
* :c:data:`ao_power`
|
||||||
|
* :c:data:`ao_prim_num`
|
||||||
|
* :c:data:`ao_two_e_integrals_erf_in_map`
|
||||||
|
* :c:data:`ao_two_e_integrals_in_map`
|
||||||
|
* :c:data:`cas_bitmask`
|
||||||
|
* :c:data:`correlation_energy_ratio_max`
|
||||||
|
* :c:data:`data_energy_proj`
|
||||||
|
* :c:data:`data_energy_var`
|
||||||
|
* :c:data:`data_one_e_dm_alpha_mo`
|
||||||
|
* :c:data:`data_one_e_dm_beta_mo`
|
||||||
|
* :c:data:`davidson_sze_max`
|
||||||
|
* :c:data:`disk_access_nuclear_repulsion`
|
||||||
|
* :c:data:`disk_based_davidson`
|
||||||
|
* :c:data:`distributed_davidson`
|
||||||
|
* :c:data:`do_direct_integrals`
|
||||||
|
* :c:data:`do_pseudo`
|
||||||
|
* :c:data:`do_pt2`
|
||||||
|
* :c:data:`elec_alpha_num`
|
||||||
|
* :c:data:`elec_beta_num`
|
||||||
|
* :c:data:`elec_num`
|
||||||
|
* :c:data:`energy_iterations`
|
||||||
|
* :c:data:`ezfio_work_dir`
|
||||||
|
* :c:data:`frozen_orb_scf`
|
||||||
|
* :c:data:`generators_bitmask`
|
||||||
|
* :c:data:`generators_bitmask_restart`
|
||||||
|
* :c:data:`io_ao_integrals_e_n`
|
||||||
|
* :c:data:`io_ao_integrals_kinetic`
|
||||||
|
* :c:data:`io_ao_integrals_overlap`
|
||||||
|
* :c:data:`io_ao_integrals_pseudo`
|
||||||
|
* :c:data:`io_ao_one_e_integrals`
|
||||||
|
* :c:data:`io_ao_two_e_integrals`
|
||||||
|
* :c:data:`io_ao_two_e_integrals_erf`
|
||||||
|
* :c:data:`io_mo_integrals_e_n`
|
||||||
|
* :c:data:`io_mo_integrals_kinetic`
|
||||||
|
* :c:data:`io_mo_integrals_pseudo`
|
||||||
|
* :c:data:`io_mo_one_e_integrals`
|
||||||
|
* :c:data:`io_mo_two_e_integrals`
|
||||||
|
* :c:data:`io_mo_two_e_integrals_erf`
|
||||||
|
* :c:data:`level_shift`
|
||||||
|
* :c:data:`max_dim_diis`
|
||||||
|
* :c:data:`mo_class`
|
||||||
|
* :c:data:`mo_coef`
|
||||||
|
* :c:data:`mo_guess_type`
|
||||||
|
* :c:data:`mo_integrals_threshold`
|
||||||
|
* :c:data:`mo_label`
|
||||||
|
* :c:data:`mo_num`
|
||||||
|
* :c:data:`mo_occ`
|
||||||
|
* :c:data:`mo_two_e_integrals_erf_in_map`
|
||||||
|
* :c:data:`mo_two_e_integrals_in_map`
|
||||||
|
* :c:data:`mu_erf`
|
||||||
|
* :c:data:`n_cas_bitmask`
|
||||||
|
* :c:data:`n_det`
|
||||||
|
* :c:data:`n_det_iterations`
|
||||||
|
* :c:data:`n_det_max`
|
||||||
|
* :c:data:`n_det_max_full`
|
||||||
|
* :c:data:`n_det_print_wf`
|
||||||
|
* :c:data:`n_generators_bitmask`
|
||||||
|
* :c:data:`n_generators_bitmask_restart`
|
||||||
|
* :c:data:`n_it_scf_max`
|
||||||
|
* :c:data:`n_iter`
|
||||||
|
* :c:data:`n_states`
|
||||||
|
* :c:data:`n_states_diag`
|
||||||
|
* :c:data:`no_ivvv_integrals`
|
||||||
|
* :c:data:`no_vvv_integrals`
|
||||||
|
* :c:data:`no_vvvv_integrals`
|
||||||
|
* :c:data:`nucl_charge`
|
||||||
|
* :c:data:`nucl_charge_remove`
|
||||||
|
* :c:data:`nucl_coord`
|
||||||
|
* :c:data:`nucl_label`
|
||||||
|
* :c:data:`nucl_num`
|
||||||
|
* :c:data:`only_expected_s2`
|
||||||
|
* :c:data:`pseudo_dz_k`
|
||||||
|
* :c:data:`pseudo_dz_kl`
|
||||||
|
* :c:data:`pseudo_grid_rmax`
|
||||||
|
* :c:data:`pseudo_grid_size`
|
||||||
|
* :c:data:`pseudo_klocmax`
|
||||||
|
* :c:data:`pseudo_kmax`
|
||||||
|
* :c:data:`pseudo_lmax`
|
||||||
|
* :c:data:`pseudo_n_k`
|
||||||
|
* :c:data:`pseudo_n_kl`
|
||||||
|
* :c:data:`pseudo_v_k`
|
||||||
|
* :c:data:`pseudo_v_kl`
|
||||||
|
* :c:data:`psi_coef`
|
||||||
|
* :c:data:`psi_det`
|
||||||
|
* :c:data:`psi_det_size`
|
||||||
|
* :c:data:`pt2_iterations`
|
||||||
|
* :c:data:`pt2_max`
|
||||||
|
* :c:data:`pt2_relative_error`
|
||||||
|
* :c:data:`qp_stop_filename`
|
||||||
|
* :c:data:`read_wf`
|
||||||
|
* :c:data:`s2_eig`
|
||||||
|
* :c:data:`scf_algorithm`
|
||||||
|
* :c:data:`state_following`
|
||||||
|
* :c:data:`target_energy`
|
||||||
|
* :c:data:`thresh_scf`
|
||||||
|
* :c:data:`threshold_davidson`
|
||||||
|
* :c:data:`threshold_diis`
|
||||||
|
* :c:data:`threshold_generators`
|
||||||
|
* :c:data:`used_weight`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: ezfio_work_dir
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`ezfio_files/ezfio.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
character*(128) :: ezfio_work_dir
|
||||||
|
|
||||||
|
|
||||||
|
EZFIO/work/
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`ezfio_filename`
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: file_lock
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`ezfio_files/lock.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
integer(omp_lock_kind) :: file_lock
|
||||||
|
|
||||||
|
|
||||||
|
OpenMP Lock for I/O
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: output_cpu_time_0
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`ezfio_files/output.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision :: output_wall_time_0
|
||||||
|
double precision :: output_cpu_time_0
|
||||||
|
|
||||||
|
|
||||||
|
Initial CPU and wall times when printing in the output files
|
||||||
|
|
||||||
|
Needed by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`ao_cartesian`
|
||||||
|
* :c:data:`ao_coef`
|
||||||
|
* :c:data:`ao_expo`
|
||||||
|
* :c:data:`ao_integrals_threshold`
|
||||||
|
* :c:data:`ao_md5`
|
||||||
|
* :c:data:`ao_nucl`
|
||||||
|
* :c:data:`ao_num`
|
||||||
|
* :c:data:`ao_power`
|
||||||
|
* :c:data:`ao_prim_num`
|
||||||
|
* :c:data:`ci_energy`
|
||||||
|
* :c:data:`correlation_energy_ratio_max`
|
||||||
|
* :c:data:`data_energy_proj`
|
||||||
|
* :c:data:`data_energy_var`
|
||||||
|
* :c:data:`data_one_e_dm_alpha_mo`
|
||||||
|
* :c:data:`data_one_e_dm_beta_mo`
|
||||||
|
* :c:data:`davidson_sze_max`
|
||||||
|
* :c:data:`disk_access_nuclear_repulsion`
|
||||||
|
* :c:data:`disk_based_davidson`
|
||||||
|
* :c:data:`distributed_davidson`
|
||||||
|
* :c:data:`do_direct_integrals`
|
||||||
|
* :c:data:`do_pseudo`
|
||||||
|
* :c:data:`do_pt2`
|
||||||
|
* :c:data:`elec_alpha_num`
|
||||||
|
* :c:data:`elec_beta_num`
|
||||||
|
* :c:data:`energy_iterations`
|
||||||
|
* :c:data:`frozen_orb_scf`
|
||||||
|
* :c:data:`io_ao_integrals_e_n`
|
||||||
|
* :c:data:`io_ao_integrals_kinetic`
|
||||||
|
* :c:data:`io_ao_integrals_overlap`
|
||||||
|
* :c:data:`io_ao_integrals_pseudo`
|
||||||
|
* :c:data:`io_ao_one_e_integrals`
|
||||||
|
* :c:data:`io_ao_two_e_integrals`
|
||||||
|
* :c:data:`io_ao_two_e_integrals_erf`
|
||||||
|
* :c:data:`io_mo_integrals_e_n`
|
||||||
|
* :c:data:`io_mo_integrals_kinetic`
|
||||||
|
* :c:data:`io_mo_integrals_pseudo`
|
||||||
|
* :c:data:`io_mo_one_e_integrals`
|
||||||
|
* :c:data:`io_mo_two_e_integrals`
|
||||||
|
* :c:data:`io_mo_two_e_integrals_erf`
|
||||||
|
* :c:data:`level_shift`
|
||||||
|
* :c:data:`max_dim_diis`
|
||||||
|
* :c:data:`mo_class`
|
||||||
|
* :c:data:`mo_guess_type`
|
||||||
|
* :c:data:`mo_integrals_threshold`
|
||||||
|
* :c:data:`mu_erf`
|
||||||
|
* :c:data:`n_det_generators`
|
||||||
|
* :c:data:`n_det_iterations`
|
||||||
|
* :c:data:`n_det_max`
|
||||||
|
* :c:data:`n_det_max_full`
|
||||||
|
* :c:data:`n_det_print_wf`
|
||||||
|
* :c:data:`n_det_selectors`
|
||||||
|
* :c:data:`n_it_scf_max`
|
||||||
|
* :c:data:`n_iter`
|
||||||
|
* :c:data:`n_states`
|
||||||
|
* :c:data:`n_states_diag`
|
||||||
|
* :c:data:`no_ivvv_integrals`
|
||||||
|
* :c:data:`no_vvv_integrals`
|
||||||
|
* :c:data:`no_vvvv_integrals`
|
||||||
|
* :c:data:`nucl_charge`
|
||||||
|
* :c:data:`nucl_charge_remove`
|
||||||
|
* :c:data:`nucl_coord`
|
||||||
|
* :c:data:`nucl_label`
|
||||||
|
* :c:data:`nucl_num`
|
||||||
|
* :c:data:`nuclear_repulsion`
|
||||||
|
* :c:data:`only_expected_s2`
|
||||||
|
* :c:data:`pseudo_dz_k`
|
||||||
|
* :c:data:`pseudo_dz_kl`
|
||||||
|
* :c:data:`pseudo_grid_rmax`
|
||||||
|
* :c:data:`pseudo_grid_size`
|
||||||
|
* :c:data:`pseudo_klocmax`
|
||||||
|
* :c:data:`pseudo_kmax`
|
||||||
|
* :c:data:`pseudo_lmax`
|
||||||
|
* :c:data:`pseudo_n_k`
|
||||||
|
* :c:data:`pseudo_n_kl`
|
||||||
|
* :c:data:`pseudo_v_k`
|
||||||
|
* :c:data:`pseudo_v_kl`
|
||||||
|
* :c:data:`pt2_iterations`
|
||||||
|
* :c:data:`pt2_max`
|
||||||
|
* :c:data:`pt2_relative_error`
|
||||||
|
* :c:data:`read_wf`
|
||||||
|
* :c:data:`s2_eig`
|
||||||
|
* :c:data:`scf_algorithm`
|
||||||
|
* :c:data:`state_following`
|
||||||
|
* :c:data:`target_energy`
|
||||||
|
* :c:data:`thresh_scf`
|
||||||
|
* :c:data:`threshold_davidson`
|
||||||
|
* :c:data:`threshold_diis`
|
||||||
|
* :c:data:`threshold_generators`
|
||||||
|
* :c:data:`used_weight`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: output_wall_time_0
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`ezfio_files/output.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision :: output_wall_time_0
|
||||||
|
double precision :: output_cpu_time_0
|
||||||
|
|
||||||
|
|
||||||
|
Initial CPU and wall times when printing in the output files
|
||||||
|
|
||||||
|
Needed by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`ao_cartesian`
|
||||||
|
* :c:data:`ao_coef`
|
||||||
|
* :c:data:`ao_expo`
|
||||||
|
* :c:data:`ao_integrals_threshold`
|
||||||
|
* :c:data:`ao_md5`
|
||||||
|
* :c:data:`ao_nucl`
|
||||||
|
* :c:data:`ao_num`
|
||||||
|
* :c:data:`ao_power`
|
||||||
|
* :c:data:`ao_prim_num`
|
||||||
|
* :c:data:`ci_energy`
|
||||||
|
* :c:data:`correlation_energy_ratio_max`
|
||||||
|
* :c:data:`data_energy_proj`
|
||||||
|
* :c:data:`data_energy_var`
|
||||||
|
* :c:data:`data_one_e_dm_alpha_mo`
|
||||||
|
* :c:data:`data_one_e_dm_beta_mo`
|
||||||
|
* :c:data:`davidson_sze_max`
|
||||||
|
* :c:data:`disk_access_nuclear_repulsion`
|
||||||
|
* :c:data:`disk_based_davidson`
|
||||||
|
* :c:data:`distributed_davidson`
|
||||||
|
* :c:data:`do_direct_integrals`
|
||||||
|
* :c:data:`do_pseudo`
|
||||||
|
* :c:data:`do_pt2`
|
||||||
|
* :c:data:`elec_alpha_num`
|
||||||
|
* :c:data:`elec_beta_num`
|
||||||
|
* :c:data:`energy_iterations`
|
||||||
|
* :c:data:`frozen_orb_scf`
|
||||||
|
* :c:data:`io_ao_integrals_e_n`
|
||||||
|
* :c:data:`io_ao_integrals_kinetic`
|
||||||
|
* :c:data:`io_ao_integrals_overlap`
|
||||||
|
* :c:data:`io_ao_integrals_pseudo`
|
||||||
|
* :c:data:`io_ao_one_e_integrals`
|
||||||
|
* :c:data:`io_ao_two_e_integrals`
|
||||||
|
* :c:data:`io_ao_two_e_integrals_erf`
|
||||||
|
* :c:data:`io_mo_integrals_e_n`
|
||||||
|
* :c:data:`io_mo_integrals_kinetic`
|
||||||
|
* :c:data:`io_mo_integrals_pseudo`
|
||||||
|
* :c:data:`io_mo_one_e_integrals`
|
||||||
|
* :c:data:`io_mo_two_e_integrals`
|
||||||
|
* :c:data:`io_mo_two_e_integrals_erf`
|
||||||
|
* :c:data:`level_shift`
|
||||||
|
* :c:data:`max_dim_diis`
|
||||||
|
* :c:data:`mo_class`
|
||||||
|
* :c:data:`mo_guess_type`
|
||||||
|
* :c:data:`mo_integrals_threshold`
|
||||||
|
* :c:data:`mu_erf`
|
||||||
|
* :c:data:`n_det_generators`
|
||||||
|
* :c:data:`n_det_iterations`
|
||||||
|
* :c:data:`n_det_max`
|
||||||
|
* :c:data:`n_det_max_full`
|
||||||
|
* :c:data:`n_det_print_wf`
|
||||||
|
* :c:data:`n_det_selectors`
|
||||||
|
* :c:data:`n_it_scf_max`
|
||||||
|
* :c:data:`n_iter`
|
||||||
|
* :c:data:`n_states`
|
||||||
|
* :c:data:`n_states_diag`
|
||||||
|
* :c:data:`no_ivvv_integrals`
|
||||||
|
* :c:data:`no_vvv_integrals`
|
||||||
|
* :c:data:`no_vvvv_integrals`
|
||||||
|
* :c:data:`nucl_charge`
|
||||||
|
* :c:data:`nucl_charge_remove`
|
||||||
|
* :c:data:`nucl_coord`
|
||||||
|
* :c:data:`nucl_label`
|
||||||
|
* :c:data:`nucl_num`
|
||||||
|
* :c:data:`nuclear_repulsion`
|
||||||
|
* :c:data:`only_expected_s2`
|
||||||
|
* :c:data:`pseudo_dz_k`
|
||||||
|
* :c:data:`pseudo_dz_kl`
|
||||||
|
* :c:data:`pseudo_grid_rmax`
|
||||||
|
* :c:data:`pseudo_grid_size`
|
||||||
|
* :c:data:`pseudo_klocmax`
|
||||||
|
* :c:data:`pseudo_kmax`
|
||||||
|
* :c:data:`pseudo_lmax`
|
||||||
|
* :c:data:`pseudo_n_k`
|
||||||
|
* :c:data:`pseudo_n_kl`
|
||||||
|
* :c:data:`pseudo_v_k`
|
||||||
|
* :c:data:`pseudo_v_kl`
|
||||||
|
* :c:data:`pt2_iterations`
|
||||||
|
* :c:data:`pt2_max`
|
||||||
|
* :c:data:`pt2_relative_error`
|
||||||
|
* :c:data:`read_wf`
|
||||||
|
* :c:data:`s2_eig`
|
||||||
|
* :c:data:`scf_algorithm`
|
||||||
|
* :c:data:`state_following`
|
||||||
|
* :c:data:`target_energy`
|
||||||
|
* :c:data:`thresh_scf`
|
||||||
|
* :c:data:`threshold_davidson`
|
||||||
|
* :c:data:`threshold_diis`
|
||||||
|
* :c:data:`threshold_generators`
|
||||||
|
* :c:data:`used_weight`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: qp_kill_filename
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`ezfio_files/qp_stop.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
character*(128) :: qp_stop_filename
|
||||||
|
character*(128) :: qp_kill_filename
|
||||||
|
integer :: qp_stop_variable
|
||||||
|
|
||||||
|
|
||||||
|
Name of the file to check for qp stop
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`ezfio_filename`
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: qp_stop_filename
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`ezfio_files/qp_stop.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
character*(128) :: qp_stop_filename
|
||||||
|
character*(128) :: qp_kill_filename
|
||||||
|
integer :: qp_stop_variable
|
||||||
|
|
||||||
|
|
||||||
|
Name of the file to check for qp stop
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`ezfio_filename`
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: qp_stop_variable
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`ezfio_files/qp_stop.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
character*(128) :: qp_stop_filename
|
||||||
|
character*(128) :: qp_kill_filename
|
||||||
|
integer :: qp_stop_variable
|
||||||
|
|
||||||
|
|
||||||
|
Name of the file to check for qp stop
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`ezfio_filename`
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Subroutines / functions
|
||||||
|
-----------------------
|
||||||
|
|
||||||
|
.. c:function:: getunitandopen:
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`ezfio_files/get_unit_and_open.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
integer function getUnitAndOpen(f,mode)
|
||||||
|
|
||||||
|
|
||||||
|
:f:
|
||||||
|
file name
|
||||||
|
|
||||||
|
:mode:
|
||||||
|
'R' : READ, UNFORMATTED
|
||||||
|
'W' : WRITE, UNFORMATTED
|
||||||
|
'r' : READ, FORMATTED
|
||||||
|
'w' : WRITE, FORMATTED
|
||||||
|
'a' : APPEND, FORMATTED
|
||||||
|
'x' : READ/WRITE, FORMATTED
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.. c:function:: qp_stop:
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`ezfio_files/qp_stop.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
logical function qp_stop()
|
||||||
|
|
||||||
|
|
||||||
|
Checks if the qp_stop command was invoked for the clean termination of the program
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`qp_stop_filename`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:function:: write_bool:
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`ezfio_files/output.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
subroutine write_bool(iunit,value,label)
|
||||||
|
|
||||||
|
|
||||||
|
Write an logical value in output
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`mpi_master`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:function:: write_double:
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`ezfio_files/output.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
subroutine write_double(iunit,value,label)
|
||||||
|
|
||||||
|
|
||||||
|
Write a double precision value in output
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`mpi_master`
|
||||||
|
|
||||||
|
Called by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`ci_energy`
|
||||||
|
* :c:func:`damping_scf`
|
||||||
|
* :c:func:`davidson_diag_hjj_sjj`
|
||||||
|
* :c:data:`nuclear_repulsion`
|
||||||
|
* :c:data:`psi_coef_max`
|
||||||
|
* :c:data:`pt2_e0_denominator`
|
||||||
|
* :c:func:`roothaan_hall_scf`
|
||||||
|
* :c:func:`run_cipsi`
|
||||||
|
* :c:func:`run_slave_main`
|
||||||
|
* :c:func:`run_stochastic_cipsi`
|
||||||
|
* :c:func:`zmq_pt2`
|
||||||
|
* :c:func:`zmq_selection`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:function:: write_int:
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`ezfio_files/output.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
subroutine write_int(iunit,value,label)
|
||||||
|
|
||||||
|
|
||||||
|
Write an integer value in output
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`mpi_master`
|
||||||
|
|
||||||
|
Called by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:func:`davidson_diag_hjj_sjj`
|
||||||
|
* :c:func:`make_s2_eigenfunction`
|
||||||
|
* :c:data:`mo_num`
|
||||||
|
* :c:data:`n_cas_bitmask`
|
||||||
|
* :c:data:`n_core_orb`
|
||||||
|
* :c:data:`n_det`
|
||||||
|
* :c:data:`n_det_generators`
|
||||||
|
* :c:data:`n_det_selectors`
|
||||||
|
* :c:data:`n_generators_bitmask`
|
||||||
|
* :c:data:`n_generators_bitmask_restart`
|
||||||
|
* :c:data:`n_int`
|
||||||
|
* :c:data:`nthreads_davidson`
|
||||||
|
* :c:data:`nthreads_pt2`
|
||||||
|
* :c:data:`psi_cas`
|
||||||
|
* :c:data:`psi_det_alpha_unique`
|
||||||
|
* :c:data:`psi_det_beta_unique`
|
||||||
|
* :c:data:`psi_det_size`
|
||||||
|
* :c:data:`pt2_n_teeth`
|
||||||
|
* :c:data:`qp_max_mem`
|
||||||
|
* :c:func:`remove_small_contributions`
|
||||||
|
* :c:func:`save_wavefunction_general`
|
||||||
|
* :c:func:`save_wavefunction_specified`
|
||||||
|
* :c:func:`zmq_pt2`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:function:: write_time:
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`ezfio_files/output.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
subroutine write_time(iunit)
|
||||||
|
|
||||||
|
|
||||||
|
Write a time stamp in the output for chronological reconstruction
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`output_wall_time_0`
|
||||||
|
* :c:data:`mpi_master`
|
||||||
|
|
||||||
|
Called by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`ao_cartesian`
|
||||||
|
* :c:data:`ao_coef`
|
||||||
|
* :c:data:`ao_expo`
|
||||||
|
* :c:data:`ao_integrals_threshold`
|
||||||
|
* :c:data:`ao_md5`
|
||||||
|
* :c:data:`ao_nucl`
|
||||||
|
* :c:data:`ao_num`
|
||||||
|
* :c:data:`ao_power`
|
||||||
|
* :c:data:`ao_prim_num`
|
||||||
|
* :c:data:`ci_energy`
|
||||||
|
* :c:data:`correlation_energy_ratio_max`
|
||||||
|
* :c:func:`damping_scf`
|
||||||
|
* :c:data:`data_energy_proj`
|
||||||
|
* :c:data:`data_energy_var`
|
||||||
|
* :c:data:`data_one_e_dm_alpha_mo`
|
||||||
|
* :c:data:`data_one_e_dm_beta_mo`
|
||||||
|
* :c:func:`davidson_diag_hjj_sjj`
|
||||||
|
* :c:data:`davidson_sze_max`
|
||||||
|
* :c:data:`disk_access_nuclear_repulsion`
|
||||||
|
* :c:data:`disk_based_davidson`
|
||||||
|
* :c:data:`distributed_davidson`
|
||||||
|
* :c:data:`do_direct_integrals`
|
||||||
|
* :c:data:`do_pseudo`
|
||||||
|
* :c:data:`do_pt2`
|
||||||
|
* :c:data:`elec_alpha_num`
|
||||||
|
* :c:data:`elec_beta_num`
|
||||||
|
* :c:data:`energy_iterations`
|
||||||
|
* :c:data:`frozen_orb_scf`
|
||||||
|
* :c:data:`io_ao_integrals_e_n`
|
||||||
|
* :c:data:`io_ao_integrals_kinetic`
|
||||||
|
* :c:data:`io_ao_integrals_overlap`
|
||||||
|
* :c:data:`io_ao_integrals_pseudo`
|
||||||
|
* :c:data:`io_ao_one_e_integrals`
|
||||||
|
* :c:data:`io_ao_two_e_integrals`
|
||||||
|
* :c:data:`io_ao_two_e_integrals_erf`
|
||||||
|
* :c:data:`io_mo_integrals_e_n`
|
||||||
|
* :c:data:`io_mo_integrals_kinetic`
|
||||||
|
* :c:data:`io_mo_integrals_pseudo`
|
||||||
|
* :c:data:`io_mo_one_e_integrals`
|
||||||
|
* :c:data:`io_mo_two_e_integrals`
|
||||||
|
* :c:data:`io_mo_two_e_integrals_erf`
|
||||||
|
* :c:data:`level_shift`
|
||||||
|
* :c:func:`make_s2_eigenfunction`
|
||||||
|
* :c:data:`max_dim_diis`
|
||||||
|
* :c:func:`mo_as_eigvectors_of_mo_matrix`
|
||||||
|
* :c:func:`mo_as_svd_vectors_of_mo_matrix`
|
||||||
|
* :c:func:`mo_as_svd_vectors_of_mo_matrix_eig`
|
||||||
|
* :c:data:`mo_class`
|
||||||
|
* :c:data:`mo_guess_type`
|
||||||
|
* :c:data:`mo_integrals_threshold`
|
||||||
|
* :c:data:`mu_erf`
|
||||||
|
* :c:data:`n_det_generators`
|
||||||
|
* :c:data:`n_det_iterations`
|
||||||
|
* :c:data:`n_det_max`
|
||||||
|
* :c:data:`n_det_max_full`
|
||||||
|
* :c:data:`n_det_print_wf`
|
||||||
|
* :c:data:`n_det_selectors`
|
||||||
|
* :c:data:`n_it_scf_max`
|
||||||
|
* :c:data:`n_iter`
|
||||||
|
* :c:data:`n_states`
|
||||||
|
* :c:data:`n_states_diag`
|
||||||
|
* :c:data:`no_ivvv_integrals`
|
||||||
|
* :c:data:`no_vvv_integrals`
|
||||||
|
* :c:data:`no_vvvv_integrals`
|
||||||
|
* :c:data:`nucl_charge`
|
||||||
|
* :c:data:`nucl_charge_remove`
|
||||||
|
* :c:data:`nucl_coord`
|
||||||
|
* :c:data:`nucl_label`
|
||||||
|
* :c:data:`nucl_num`
|
||||||
|
* :c:data:`nuclear_repulsion`
|
||||||
|
* :c:data:`only_expected_s2`
|
||||||
|
* :c:data:`pseudo_dz_k`
|
||||||
|
* :c:data:`pseudo_dz_kl`
|
||||||
|
* :c:data:`pseudo_grid_rmax`
|
||||||
|
* :c:data:`pseudo_grid_size`
|
||||||
|
* :c:data:`pseudo_klocmax`
|
||||||
|
* :c:data:`pseudo_kmax`
|
||||||
|
* :c:data:`pseudo_lmax`
|
||||||
|
* :c:data:`pseudo_n_k`
|
||||||
|
* :c:data:`pseudo_n_kl`
|
||||||
|
* :c:data:`pseudo_v_k`
|
||||||
|
* :c:data:`pseudo_v_kl`
|
||||||
|
* :c:data:`pt2_iterations`
|
||||||
|
* :c:data:`pt2_max`
|
||||||
|
* :c:data:`pt2_relative_error`
|
||||||
|
* :c:data:`read_wf`
|
||||||
|
* :c:func:`roothaan_hall_scf`
|
||||||
|
* :c:data:`s2_eig`
|
||||||
|
* :c:data:`scf_algorithm`
|
||||||
|
* :c:data:`state_following`
|
||||||
|
* :c:data:`target_energy`
|
||||||
|
* :c:data:`thresh_scf`
|
||||||
|
* :c:data:`threshold_davidson`
|
||||||
|
* :c:data:`threshold_diis`
|
||||||
|
* :c:data:`threshold_generators`
|
||||||
|
* :c:data:`used_weight`
|
||||||
|
|
||||||
|
Calls:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:func:`cpu_time`
|
||||||
|
* :c:func:`print_memory_usage`
|
||||||
|
* :c:func:`wall_time`
|
||||||
|
|
151
doc/_sources/modules/fci.rst.txt
Normal file
151
doc/_sources/modules/fci.rst.txt
Normal file
@ -0,0 +1,151 @@
|
|||||||
|
.. _module_fci:
|
||||||
|
|
||||||
|
.. program:: fci
|
||||||
|
|
||||||
|
.. default-role:: option
|
||||||
|
|
||||||
|
===
|
||||||
|
fci
|
||||||
|
===
|
||||||
|
|
||||||
|
|
||||||
|
|CIPSI| algorithm in the full configuration interaction space.
|
||||||
|
|
||||||
|
|
||||||
|
The user point of view
|
||||||
|
----------------------
|
||||||
|
|
||||||
|
* :c:func:`fci` performs |CIPSI| calculations using a stochastic scheme for both the selection and the |PT2| contribution,
|
||||||
|
* :c:func:`pt2` computes the |PT2| contribution using the wave function stored in the |EZFIO|
|
||||||
|
database.
|
||||||
|
|
||||||
|
|
||||||
|
The main keywords/options for this module are:
|
||||||
|
|
||||||
|
* :option:`determinants n_det_max` : maximum number of Slater determinants in the CIPSI wave function. The :command:`fci` program will stop when the size of the CIPSI wave function will exceed :option:`determinants n_det_max`.
|
||||||
|
|
||||||
|
* :option:`perturbation pt2_max` : absolute value of the |PT2| to stop the CIPSI calculation. Once the |PT2| :math:`<` :option:`perturbation pt2_max`, the CIPSI calculation stops.
|
||||||
|
|
||||||
|
* :option:`determinants n_states` : number of states to consider in the CIPSI calculation.
|
||||||
|
|
||||||
|
* :option:`determinants read_wf` : if False, starts with a ROHF-like determinant, if True, starts with the current wave function(s) stored in the |EZFIO| folder.
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
For a multi-state calculation, it is recommended to start with :c:func:`cis` or :c:func:`cisd`
|
||||||
|
wave functions as a guess.
|
||||||
|
|
||||||
|
* :option:`determinants s2_eig` : if True, systematically add all the determinants needed to have a pure value of :math:`S^2`. Also, if True, it tracks only the states having the good :option:`determinants expected_s2`.
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
For a multi-state calculation, it is recommended to start with :c:func:`cis` or :c:func:`cisd`
|
||||||
|
wave functions as a guess.
|
||||||
|
|
||||||
|
* :option:`determinants expected_s2` : expected value of :math:`S^2` for the desired spin multiplicity.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
The programmer point of view
|
||||||
|
----------------------------
|
||||||
|
|
||||||
|
This module have been created with the :ref:`cipsi` module.
|
||||||
|
|
||||||
|
.. seealso::
|
||||||
|
|
||||||
|
The documentation of the :ref:`cipsi` module.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
EZFIO parameters
|
||||||
|
----------------
|
||||||
|
|
||||||
|
.. option:: energy
|
||||||
|
|
||||||
|
Calculated Selected |FCI| energy
|
||||||
|
|
||||||
|
|
||||||
|
.. option:: energy_pt2
|
||||||
|
|
||||||
|
Calculated |FCI| energy + |PT2|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Programs
|
||||||
|
--------
|
||||||
|
|
||||||
|
* :ref:`fci`
|
||||||
|
* :ref:`pt2`
|
||||||
|
|
||||||
|
Providers
|
||||||
|
---------
|
||||||
|
|
||||||
|
.. c:var:: do_ddci
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`fci/class.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
logical :: do_only_1h1p
|
||||||
|
logical :: do_ddci
|
||||||
|
|
||||||
|
|
||||||
|
In the FCI case, all those are always false
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: do_only_1h1p
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`fci/class.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
logical :: do_only_1h1p
|
||||||
|
logical :: do_ddci
|
||||||
|
|
||||||
|
|
||||||
|
In the FCI case, all those are always false
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Subroutines / functions
|
||||||
|
-----------------------
|
||||||
|
|
||||||
|
.. c:function:: save_energy:
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`fci/save_energy.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
subroutine save_energy(E,pt2)
|
||||||
|
|
||||||
|
|
||||||
|
Saves the energy in |EZFIO|.
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`n_states`
|
||||||
|
|
||||||
|
Called by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:func:`run_cipsi`
|
||||||
|
* :c:func:`run_stochastic_cipsi`
|
||||||
|
|
||||||
|
Calls:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:func:`ezfio_set_fci_energy`
|
||||||
|
* :c:func:`ezfio_set_fci_energy_pt2`
|
||||||
|
|
19
doc/_sources/modules/generators_cas.rst.txt
Normal file
19
doc/_sources/modules/generators_cas.rst.txt
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
.. _module_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
|
||||||
|
the generators as the |CAS| determinants, which can be useful to define post-CAS approaches (see cassd module for instance).
|
||||||
|
|
||||||
|
|
||||||
|
|
295
doc/_sources/modules/generators_full.rst.txt
Normal file
295
doc/_sources/modules/generators_full.rst.txt
Normal file
@ -0,0 +1,295 @@
|
|||||||
|
.. _module_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.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Providers
|
||||||
|
---------
|
||||||
|
|
||||||
|
.. c:var:: degree_max_generators
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`generators_full/generators.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
integer :: degree_max_generators
|
||||||
|
|
||||||
|
|
||||||
|
Max degree of excitation (respect to HF) of the generators
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`hf_bitmask`
|
||||||
|
* :c:data:`n_det_generators`
|
||||||
|
* :c:data:`n_int`
|
||||||
|
* :c:data:`psi_det_generators`
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: n_det_generators
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`generators_full/generators.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
integer :: n_det_generators
|
||||||
|
|
||||||
|
|
||||||
|
For Single reference wave functions, the number of generators is 1 : the
|
||||||
|
Hartree-Fock determinant
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`mpi_master`
|
||||||
|
* :c:data:`n_det`
|
||||||
|
* :c:data:`output_wall_time_0`
|
||||||
|
* :c:data:`psi_det_sorted`
|
||||||
|
* :c:data:`threshold_generators`
|
||||||
|
|
||||||
|
Needed by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`degree_max_generators`
|
||||||
|
* :c:data:`n_det_selectors`
|
||||||
|
* :c:data:`pt2_f`
|
||||||
|
* :c:data:`pt2_j`
|
||||||
|
* :c:data:`pt2_n_tasks`
|
||||||
|
* :c:data:`pt2_n_teeth`
|
||||||
|
* :c:data:`pt2_u`
|
||||||
|
* :c:data:`pt2_w`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: psi_coef_generators
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`generators_full/generators.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
integer(bit_kind), allocatable :: psi_det_generators (N_int,2,psi_det_size)
|
||||||
|
double precision, allocatable :: psi_coef_generators (psi_det_size,N_states)
|
||||||
|
|
||||||
|
|
||||||
|
For Single reference wave functions, the generator is the
|
||||||
|
Hartree-Fock determinant
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`n_det`
|
||||||
|
* :c:data:`n_int`
|
||||||
|
* :c:data:`n_states`
|
||||||
|
* :c:data:`psi_det_size`
|
||||||
|
* :c:data:`psi_det_sorted`
|
||||||
|
|
||||||
|
Needed by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`degree_max_generators`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: psi_coef_sorted_gen
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`generators_full/generators.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
integer(bit_kind), allocatable :: psi_det_sorted_gen (N_int,2,psi_det_size)
|
||||||
|
double precision, allocatable :: psi_coef_sorted_gen (psi_det_size,N_states)
|
||||||
|
integer, allocatable :: psi_det_sorted_gen_order (psi_det_size)
|
||||||
|
|
||||||
|
|
||||||
|
For Single reference wave functions, the generator is the
|
||||||
|
Hartree-Fock determinant
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`n_int`
|
||||||
|
* :c:data:`n_states`
|
||||||
|
* :c:data:`psi_det_size`
|
||||||
|
* :c:data:`psi_det_sorted`
|
||||||
|
|
||||||
|
Needed by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`pt2_f`
|
||||||
|
* :c:data:`pt2_n_teeth`
|
||||||
|
* :c:data:`pt2_w`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: psi_det_generators
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`generators_full/generators.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
integer(bit_kind), allocatable :: psi_det_generators (N_int,2,psi_det_size)
|
||||||
|
double precision, allocatable :: psi_coef_generators (psi_det_size,N_states)
|
||||||
|
|
||||||
|
|
||||||
|
For Single reference wave functions, the generator is the
|
||||||
|
Hartree-Fock determinant
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`n_det`
|
||||||
|
* :c:data:`n_int`
|
||||||
|
* :c:data:`n_states`
|
||||||
|
* :c:data:`psi_det_size`
|
||||||
|
* :c:data:`psi_det_sorted`
|
||||||
|
|
||||||
|
Needed by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`degree_max_generators`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: psi_det_sorted_gen
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`generators_full/generators.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
integer(bit_kind), allocatable :: psi_det_sorted_gen (N_int,2,psi_det_size)
|
||||||
|
double precision, allocatable :: psi_coef_sorted_gen (psi_det_size,N_states)
|
||||||
|
integer, allocatable :: psi_det_sorted_gen_order (psi_det_size)
|
||||||
|
|
||||||
|
|
||||||
|
For Single reference wave functions, the generator is the
|
||||||
|
Hartree-Fock determinant
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`n_int`
|
||||||
|
* :c:data:`n_states`
|
||||||
|
* :c:data:`psi_det_size`
|
||||||
|
* :c:data:`psi_det_sorted`
|
||||||
|
|
||||||
|
Needed by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`pt2_f`
|
||||||
|
* :c:data:`pt2_n_teeth`
|
||||||
|
* :c:data:`pt2_w`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: psi_det_sorted_gen_order
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`generators_full/generators.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
integer(bit_kind), allocatable :: psi_det_sorted_gen (N_int,2,psi_det_size)
|
||||||
|
double precision, allocatable :: psi_coef_sorted_gen (psi_det_size,N_states)
|
||||||
|
integer, allocatable :: psi_det_sorted_gen_order (psi_det_size)
|
||||||
|
|
||||||
|
|
||||||
|
For Single reference wave functions, the generator is the
|
||||||
|
Hartree-Fock determinant
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`n_int`
|
||||||
|
* :c:data:`n_states`
|
||||||
|
* :c:data:`psi_det_size`
|
||||||
|
* :c:data:`psi_det_sorted`
|
||||||
|
|
||||||
|
Needed by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`pt2_f`
|
||||||
|
* :c:data:`pt2_n_teeth`
|
||||||
|
* :c:data:`pt2_w`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: select_max
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`generators_full/generators.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision, allocatable :: select_max (size_select_max)
|
||||||
|
|
||||||
|
|
||||||
|
Memo to skip useless selectors
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`size_select_max`
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: size_select_max
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`generators_full/generators.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
integer :: size_select_max
|
||||||
|
|
||||||
|
|
||||||
|
Size of the select_max array
|
||||||
|
|
||||||
|
Needed by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`select_max`
|
||||||
|
|
406
doc/_sources/modules/hartree_fock.rst.txt
Normal file
406
doc/_sources/modules/hartree_fock.rst.txt
Normal file
@ -0,0 +1,406 @@
|
|||||||
|
.. _module_hartree_fock:
|
||||||
|
|
||||||
|
.. program:: hartree_fock
|
||||||
|
|
||||||
|
.. default-role:: option
|
||||||
|
|
||||||
|
============
|
||||||
|
hartree_fock
|
||||||
|
============
|
||||||
|
|
||||||
|
|
||||||
|
The :ref:`scf` program performs *Restricted* Hartree-Fock
|
||||||
|
calculations (the spatial part of the |MOs| is common for alpha and beta
|
||||||
|
spinorbitals).
|
||||||
|
|
||||||
|
The Hartree-Fock algorithm is a |SCF| and therefore is based on the
|
||||||
|
:ref:`module_scf_utils`` module.
|
||||||
|
|
||||||
|
The Fock matrix is defined in :file:`hartree_fock fock_matrix_hf.irp.f`.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
EZFIO parameters
|
||||||
|
----------------
|
||||||
|
|
||||||
|
.. option:: energy
|
||||||
|
|
||||||
|
Energy HF
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Programs
|
||||||
|
--------
|
||||||
|
|
||||||
|
* :ref:`scf`
|
||||||
|
|
||||||
|
Providers
|
||||||
|
---------
|
||||||
|
|
||||||
|
.. c:var:: ao_two_e_integral_alpha
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`hartree_fock/fock_matrix_hf.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision, allocatable :: ao_two_e_integral_alpha (ao_num,ao_num)
|
||||||
|
double precision, allocatable :: ao_two_e_integral_beta (ao_num,ao_num)
|
||||||
|
|
||||||
|
|
||||||
|
Alpha Fock matrix in AO basis set
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`ao_coef_normalized_ordered_transp`
|
||||||
|
* :c:data:`ao_expo_ordered_transp`
|
||||||
|
* :c:data:`ao_integrals_map`
|
||||||
|
* :c:data:`ao_integrals_threshold`
|
||||||
|
* :c:data:`ao_nucl`
|
||||||
|
* :c:data:`ao_num`
|
||||||
|
* :c:data:`ao_overlap_abs`
|
||||||
|
* :c:data:`ao_power`
|
||||||
|
* :c:data:`ao_prim_num`
|
||||||
|
* :c:data:`ao_two_e_integral_schwartz`
|
||||||
|
* :c:data:`ao_two_e_integrals_in_map`
|
||||||
|
* :c:data:`do_direct_integrals`
|
||||||
|
* :c:data:`n_pt_max_integrals`
|
||||||
|
* :c:data:`nucl_coord`
|
||||||
|
* :c:data:`scf_density_matrix_ao_alpha`
|
||||||
|
* :c:data:`scf_density_matrix_ao_beta`
|
||||||
|
|
||||||
|
Needed by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`fock_matrix_ao_alpha`
|
||||||
|
* :c:data:`hf_energy`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: ao_two_e_integral_beta
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`hartree_fock/fock_matrix_hf.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision, allocatable :: ao_two_e_integral_alpha (ao_num,ao_num)
|
||||||
|
double precision, allocatable :: ao_two_e_integral_beta (ao_num,ao_num)
|
||||||
|
|
||||||
|
|
||||||
|
Alpha Fock matrix in AO basis set
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`ao_coef_normalized_ordered_transp`
|
||||||
|
* :c:data:`ao_expo_ordered_transp`
|
||||||
|
* :c:data:`ao_integrals_map`
|
||||||
|
* :c:data:`ao_integrals_threshold`
|
||||||
|
* :c:data:`ao_nucl`
|
||||||
|
* :c:data:`ao_num`
|
||||||
|
* :c:data:`ao_overlap_abs`
|
||||||
|
* :c:data:`ao_power`
|
||||||
|
* :c:data:`ao_prim_num`
|
||||||
|
* :c:data:`ao_two_e_integral_schwartz`
|
||||||
|
* :c:data:`ao_two_e_integrals_in_map`
|
||||||
|
* :c:data:`do_direct_integrals`
|
||||||
|
* :c:data:`n_pt_max_integrals`
|
||||||
|
* :c:data:`nucl_coord`
|
||||||
|
* :c:data:`scf_density_matrix_ao_alpha`
|
||||||
|
* :c:data:`scf_density_matrix_ao_beta`
|
||||||
|
|
||||||
|
Needed by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`fock_matrix_ao_alpha`
|
||||||
|
* :c:data:`hf_energy`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: extra_e_contrib_density
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`hartree_fock/hf_energy.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision :: extra_e_contrib_density
|
||||||
|
|
||||||
|
|
||||||
|
Extra contribution to the SCF energy coming from the density.
|
||||||
|
|
||||||
|
For a Hartree-Fock calculation: extra_e_contrib_density = 0
|
||||||
|
|
||||||
|
For a Kohn-Sham or Range-separated Kohn-Sham: the exchange/correlation - trace of the V_xc potential
|
||||||
|
|
||||||
|
Needed by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`scf_energy`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: fock_matrix_ao_alpha
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`hartree_fock/fock_matrix_hf.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision, allocatable :: fock_matrix_ao_alpha (ao_num,ao_num)
|
||||||
|
double precision, allocatable :: fock_matrix_ao_beta (ao_num,ao_num)
|
||||||
|
|
||||||
|
|
||||||
|
Alpha Fock matrix in AO basis set
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`ao_num`
|
||||||
|
* :c:data:`ao_one_e_integrals`
|
||||||
|
* :c:data:`ao_two_e_integral_alpha`
|
||||||
|
|
||||||
|
Needed by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`fock_matrix_ao`
|
||||||
|
* :c:data:`fock_matrix_mo_alpha`
|
||||||
|
* :c:data:`fock_matrix_mo_beta`
|
||||||
|
* :c:data:`scf_energy`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: fock_matrix_ao_beta
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`hartree_fock/fock_matrix_hf.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision, allocatable :: fock_matrix_ao_alpha (ao_num,ao_num)
|
||||||
|
double precision, allocatable :: fock_matrix_ao_beta (ao_num,ao_num)
|
||||||
|
|
||||||
|
|
||||||
|
Alpha Fock matrix in AO basis set
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`ao_num`
|
||||||
|
* :c:data:`ao_one_e_integrals`
|
||||||
|
* :c:data:`ao_two_e_integral_alpha`
|
||||||
|
|
||||||
|
Needed by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`fock_matrix_ao`
|
||||||
|
* :c:data:`fock_matrix_mo_alpha`
|
||||||
|
* :c:data:`fock_matrix_mo_beta`
|
||||||
|
* :c:data:`scf_energy`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: hf_energy
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`hartree_fock/hf_energy.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision :: hf_energy
|
||||||
|
double precision :: hf_two_electron_energy
|
||||||
|
double precision :: hf_one_electron_energy
|
||||||
|
|
||||||
|
|
||||||
|
Hartree-Fock energy containing the nuclear repulsion, and its one- and two-body components.
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`ao_num`
|
||||||
|
* :c:data:`ao_one_e_integrals`
|
||||||
|
* :c:data:`ao_two_e_integral_alpha`
|
||||||
|
* :c:data:`nuclear_repulsion`
|
||||||
|
* :c:data:`scf_density_matrix_ao_alpha`
|
||||||
|
* :c:data:`scf_density_matrix_ao_beta`
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: hf_one_electron_energy
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`hartree_fock/hf_energy.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision :: hf_energy
|
||||||
|
double precision :: hf_two_electron_energy
|
||||||
|
double precision :: hf_one_electron_energy
|
||||||
|
|
||||||
|
|
||||||
|
Hartree-Fock energy containing the nuclear repulsion, and its one- and two-body components.
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`ao_num`
|
||||||
|
* :c:data:`ao_one_e_integrals`
|
||||||
|
* :c:data:`ao_two_e_integral_alpha`
|
||||||
|
* :c:data:`nuclear_repulsion`
|
||||||
|
* :c:data:`scf_density_matrix_ao_alpha`
|
||||||
|
* :c:data:`scf_density_matrix_ao_beta`
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: hf_two_electron_energy
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`hartree_fock/hf_energy.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision :: hf_energy
|
||||||
|
double precision :: hf_two_electron_energy
|
||||||
|
double precision :: hf_one_electron_energy
|
||||||
|
|
||||||
|
|
||||||
|
Hartree-Fock energy containing the nuclear repulsion, and its one- and two-body components.
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`ao_num`
|
||||||
|
* :c:data:`ao_one_e_integrals`
|
||||||
|
* :c:data:`ao_two_e_integral_alpha`
|
||||||
|
* :c:data:`nuclear_repulsion`
|
||||||
|
* :c:data:`scf_density_matrix_ao_alpha`
|
||||||
|
* :c:data:`scf_density_matrix_ao_beta`
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Subroutines / functions
|
||||||
|
-----------------------
|
||||||
|
|
||||||
|
.. c:function:: create_guess:
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`hartree_fock/scf.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
subroutine create_guess
|
||||||
|
|
||||||
|
|
||||||
|
Create a MO guess if no MOs are present in the EZFIO directory
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`ezfio_filename`
|
||||||
|
* :c:data:`mo_coef`
|
||||||
|
* :c:data:`mo_guess_type`
|
||||||
|
* :c:data:`mo_one_e_integrals`
|
||||||
|
* :c:data:`ao_ortho_lowdin_coef`
|
||||||
|
* :c:data:`mo_label`
|
||||||
|
|
||||||
|
Called by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:func:`scf`
|
||||||
|
|
||||||
|
Calls:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:func:`ezfio_has_mo_basis_mo_coef`
|
||||||
|
* :c:func:`huckel_guess`
|
||||||
|
* :c:func:`mo_as_eigvectors_of_mo_matrix`
|
||||||
|
|
||||||
|
Touches:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`fock_matrix_ao_alpha`
|
||||||
|
* :c:data:`fock_matrix_ao_alpha`
|
||||||
|
* :c:data:`mo_coef`
|
||||||
|
* :c:data:`mo_label`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:function:: run:
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`hartree_fock/scf.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
subroutine run
|
||||||
|
|
||||||
|
|
||||||
|
Run SCF calculation
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`scf_energy`
|
||||||
|
* :c:data:`mo_label`
|
||||||
|
|
||||||
|
Called by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:func:`pt2`
|
||||||
|
* :c:func:`scf`
|
||||||
|
|
||||||
|
Calls:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:func:`ezfio_set_hartree_fock_energy`
|
||||||
|
* :c:func:`roothaan_hall_scf`
|
||||||
|
|
||||||
|
Touches:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`fock_matrix_ao_alpha`
|
||||||
|
* :c:data:`fock_matrix_ao_alpha`
|
||||||
|
* :c:data:`mo_coef`
|
||||||
|
* :c:data:`level_shift`
|
||||||
|
* :c:data:`mo_coef`
|
||||||
|
|
204
doc/_sources/modules/iterations.rst.txt
Normal file
204
doc/_sources/modules/iterations.rst.txt
Normal file
@ -0,0 +1,204 @@
|
|||||||
|
.. _module_iterations:
|
||||||
|
|
||||||
|
.. program:: iterations
|
||||||
|
|
||||||
|
.. default-role:: option
|
||||||
|
|
||||||
|
==========
|
||||||
|
iterations
|
||||||
|
==========
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Providers
|
||||||
|
---------
|
||||||
|
|
||||||
|
.. c:var:: extrapolated_energy
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`iterations/iterations.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision, allocatable :: extrapolated_energy (N_iter,N_states)
|
||||||
|
|
||||||
|
|
||||||
|
Extrapolated energy, using E_var = f(PT2) where PT2=0
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`energy_iterations`
|
||||||
|
* :c:data:`n_det`
|
||||||
|
* :c:data:`n_iter`
|
||||||
|
* :c:data:`n_states`
|
||||||
|
* :c:data:`pt2_iterations`
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: n_iter
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`iterations/io.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
integer :: n_iter
|
||||||
|
|
||||||
|
|
||||||
|
number of iterations
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`ezfio_filename`
|
||||||
|
* :c:data:`mpi_master`
|
||||||
|
* :c:data:`n_states`
|
||||||
|
* :c:data:`output_wall_time_0`
|
||||||
|
|
||||||
|
Needed by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`extrapolated_energy`
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Subroutines / functions
|
||||||
|
-----------------------
|
||||||
|
|
||||||
|
.. c:function:: print_extrapolated_energy:
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`iterations/print_extrapolation.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
subroutine print_extrapolated_energy
|
||||||
|
|
||||||
|
|
||||||
|
Print the extrapolated energy in the output
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`extrapolated_energy`
|
||||||
|
* :c:data:`n_states`
|
||||||
|
* :c:data:`n_det`
|
||||||
|
* :c:data:`pt2_iterations`
|
||||||
|
* :c:data:`n_iter`
|
||||||
|
|
||||||
|
Called by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:func:`run_cipsi`
|
||||||
|
* :c:func:`run_stochastic_cipsi`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:function:: print_summary:
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`iterations/print_summary.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
subroutine print_summary(e_,pt2_,error_,variance_,norm_,n_det_,n_occ_pattern_,n_st,s2_)
|
||||||
|
|
||||||
|
|
||||||
|
Print the extrapolated energy in the output
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`do_pt2`
|
||||||
|
* :c:data:`s2_eig`
|
||||||
|
|
||||||
|
Called by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:func:`run_cipsi`
|
||||||
|
* :c:func:`run_stochastic_cipsi`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:function:: save_iterations:
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`iterations/iterations.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
subroutine save_iterations(e_, pt2_,n_)
|
||||||
|
|
||||||
|
|
||||||
|
Update the energy in the EZFIO file.
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`n_iter`
|
||||||
|
* :c:data:`energy_iterations`
|
||||||
|
* :c:data:`n_states`
|
||||||
|
* :c:data:`pt2_iterations`
|
||||||
|
* :c:data:`n_det_iterations`
|
||||||
|
|
||||||
|
Called by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:func:`run_cipsi`
|
||||||
|
* :c:func:`run_stochastic_cipsi`
|
||||||
|
|
||||||
|
Calls:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:func:`ezfio_set_iterations_energy_iterations`
|
||||||
|
* :c:func:`ezfio_set_iterations_n_det_iterations`
|
||||||
|
* :c:func:`ezfio_set_iterations_n_iter`
|
||||||
|
* :c:func:`ezfio_set_iterations_pt2_iterations`
|
||||||
|
|
101
doc/_sources/modules/kohn_sham.rst.txt
Normal file
101
doc/_sources/modules/kohn_sham.rst.txt
Normal file
@ -0,0 +1,101 @@
|
|||||||
|
.. _module_kohn_sham:
|
||||||
|
|
||||||
|
.. program:: kohn_sham
|
||||||
|
|
||||||
|
.. default-role:: option
|
||||||
|
|
||||||
|
=========
|
||||||
|
kohn_sham
|
||||||
|
=========
|
||||||
|
|
||||||
|
|
||||||
|
The Kohn-Sham module performs *Restricted* Kohn-Sham calculations (the
|
||||||
|
spatial part of the |MOs| is common for alpha and beta spinorbitals).
|
||||||
|
|
||||||
|
The Kohn-Sham in an SCF and therefore is based on the ``scf_utils`` structure.
|
||||||
|
It performs the following actions:
|
||||||
|
|
||||||
|
#. 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
|
||||||
|
|
||||||
|
The definition of the Fock matrix is in :file:`kohn_sham fock_matrix_ks.irp.f`
|
||||||
|
For the keywords related to the |SCF| procedure, see the ``scf_utils`` directory where you will find all options.
|
||||||
|
The main are:
|
||||||
|
|
||||||
|
#. :option:`scf_utils thresh_scf`
|
||||||
|
#. :option:`scf_utils level_shift`
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Programs
|
||||||
|
--------
|
||||||
|
|
||||||
|
* :ref:`ks_scf`
|
||||||
|
|
||||||
|
Providers
|
||||||
|
---------
|
||||||
|
|
||||||
|
.. c:var:: ks_energy
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`ks_enery.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision :: ks_energy
|
||||||
|
double precision :: two_e_energy
|
||||||
|
double precision :: one_e_energy
|
||||||
|
double precision :: fock_matrix_energy
|
||||||
|
double precision :: trace_potential_xc
|
||||||
|
|
||||||
|
|
||||||
|
Kohn-Sham energy containing the nuclear repulsion energy, and the various components of this quantity.
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`ao_num`
|
||||||
|
* :c:data:`ao_one_e_integrals`
|
||||||
|
* :c:data:`ao_potential_alpha_xc`
|
||||||
|
* :c:data:`ao_two_e_integral_alpha`
|
||||||
|
* :c:data:`e_correlation_dft`
|
||||||
|
* :c:data:`e_exchange_dft`
|
||||||
|
* :c:data:`fock_matrix_ao_alpha`
|
||||||
|
* :c:data:`nuclear_repulsion`
|
||||||
|
* :c:data:`scf_density_matrix_ao_alpha`
|
||||||
|
* :c:data:`scf_density_matrix_ao_beta`
|
||||||
|
|
||||||
|
Needed by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`extra_e_contrib_density`
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Subroutines / functions
|
||||||
|
-----------------------
|
468
doc/_sources/modules/kohn_sham_rs.rst.txt
Normal file
468
doc/_sources/modules/kohn_sham_rs.rst.txt
Normal file
@ -0,0 +1,468 @@
|
|||||||
|
.. _module_kohn_sham_rs:
|
||||||
|
|
||||||
|
.. program:: kohn_sham_rs
|
||||||
|
|
||||||
|
.. default-role:: option
|
||||||
|
|
||||||
|
============
|
||||||
|
kohn_sham_rs
|
||||||
|
============
|
||||||
|
|
||||||
|
|
||||||
|
The Range-separated Kohn-Sham module performs *Restricted* Kohn-Sham calculations (the
|
||||||
|
spatial part of the |MOs| is common for alpha and beta spinorbitals) where the coulomb interaction is partially treated using exact exchange.
|
||||||
|
The splitting of the interaction between long- and short-range is determined by the range-separation parameter :option:`ao_two_e_erf_ints mu_erf`. The long-range part of the interaction is explicitly treated with exact exchange, and the short-range part of the interaction is treated with appropriate DFT functionals.
|
||||||
|
|
||||||
|
The Range-separated Kohn-Sham in an SCF and therefore is based on the ``scf_utils`` structure.
|
||||||
|
It performs the following actions:
|
||||||
|
|
||||||
|
#. 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
|
||||||
|
|
||||||
|
The definition of the Fock matrix is in :file:`kohn_sham_rs fock_matrix_rs_ks.irp.f`
|
||||||
|
For the keywords related to the |SCF| procedure, see the ``scf_utils`` directory where you will find all options.
|
||||||
|
The main are:
|
||||||
|
# :option:`scf_utils thresh_scf`
|
||||||
|
# :option:`scf_utils level_shift`
|
||||||
|
|
||||||
|
|
||||||
|
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:: energy
|
||||||
|
|
||||||
|
Energy range separated hybrid
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Programs
|
||||||
|
--------
|
||||||
|
|
||||||
|
* :ref:`rs_ks_scf`
|
||||||
|
|
||||||
|
Providers
|
||||||
|
---------
|
||||||
|
|
||||||
|
.. c:var:: ao_potential_alpha_xc
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`pot_functionals.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision, allocatable :: ao_potential_alpha_xc (ao_num,ao_num)
|
||||||
|
double precision, allocatable :: ao_potential_beta_xc (ao_num,ao_num)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`ao_num`
|
||||||
|
* :c:data:`potential_x_alpha_ao`
|
||||||
|
|
||||||
|
Needed by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`fock_matrix_ao_alpha`
|
||||||
|
* :c:data:`rs_ks_energy`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: ao_potential_beta_xc
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`pot_functionals.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision, allocatable :: ao_potential_alpha_xc (ao_num,ao_num)
|
||||||
|
double precision, allocatable :: ao_potential_beta_xc (ao_num,ao_num)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`ao_num`
|
||||||
|
* :c:data:`potential_x_alpha_ao`
|
||||||
|
|
||||||
|
Needed by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`fock_matrix_ao_alpha`
|
||||||
|
* :c:data:`rs_ks_energy`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: e_correlation_dft
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`pot_functionals.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision :: e_correlation_dft
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`energy_x`
|
||||||
|
|
||||||
|
Needed by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`extra_e_contrib_density`
|
||||||
|
* :c:data:`rs_ks_energy`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: e_exchange_dft
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`pot_functionals.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision :: e_exchange_dft
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`energy_x`
|
||||||
|
|
||||||
|
Needed by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`extra_e_contrib_density`
|
||||||
|
* :c:data:`rs_ks_energy`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: fock_matrix_alpha_no_xc_ao
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`fock_matrix_rs_ks.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision, allocatable :: fock_matrix_alpha_no_xc_ao (ao_num,ao_num)
|
||||||
|
double precision, allocatable :: fock_matrix_beta_no_xc_ao (ao_num,ao_num)
|
||||||
|
|
||||||
|
|
||||||
|
Mono electronic an Coulomb matrix in AO basis set
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`ao_num`
|
||||||
|
* :c:data:`ao_one_e_integrals`
|
||||||
|
* :c:data:`ao_two_e_integral_alpha`
|
||||||
|
|
||||||
|
Needed by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`fock_matrix_ao_alpha`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: fock_matrix_beta_no_xc_ao
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`fock_matrix_rs_ks.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision, allocatable :: fock_matrix_alpha_no_xc_ao (ao_num,ao_num)
|
||||||
|
double precision, allocatable :: fock_matrix_beta_no_xc_ao (ao_num,ao_num)
|
||||||
|
|
||||||
|
|
||||||
|
Mono electronic an Coulomb matrix in AO basis set
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`ao_num`
|
||||||
|
* :c:data:`ao_one_e_integrals`
|
||||||
|
* :c:data:`ao_two_e_integral_alpha`
|
||||||
|
|
||||||
|
Needed by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`fock_matrix_ao_alpha`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: fock_matrix_energy
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`rs_ks_energy.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision :: rs_ks_energy
|
||||||
|
double precision :: two_e_energy
|
||||||
|
double precision :: one_e_energy
|
||||||
|
double precision :: fock_matrix_energy
|
||||||
|
double precision :: trace_potential_xc
|
||||||
|
|
||||||
|
|
||||||
|
Range-separated Kohn-Sham energy containing the nuclear repulsion energy, and the various components of this quantity.
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`ao_num`
|
||||||
|
* :c:data:`ao_one_e_integrals`
|
||||||
|
* :c:data:`ao_potential_alpha_xc`
|
||||||
|
* :c:data:`ao_two_e_integral_alpha`
|
||||||
|
* :c:data:`e_correlation_dft`
|
||||||
|
* :c:data:`e_exchange_dft`
|
||||||
|
* :c:data:`fock_matrix_ao_alpha`
|
||||||
|
* :c:data:`nuclear_repulsion`
|
||||||
|
* :c:data:`scf_density_matrix_ao_alpha`
|
||||||
|
* :c:data:`scf_density_matrix_ao_beta`
|
||||||
|
|
||||||
|
Needed by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`extra_e_contrib_density`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: one_e_energy
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`rs_ks_energy.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision :: rs_ks_energy
|
||||||
|
double precision :: two_e_energy
|
||||||
|
double precision :: one_e_energy
|
||||||
|
double precision :: fock_matrix_energy
|
||||||
|
double precision :: trace_potential_xc
|
||||||
|
|
||||||
|
|
||||||
|
Range-separated Kohn-Sham energy containing the nuclear repulsion energy, and the various components of this quantity.
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`ao_num`
|
||||||
|
* :c:data:`ao_one_e_integrals`
|
||||||
|
* :c:data:`ao_potential_alpha_xc`
|
||||||
|
* :c:data:`ao_two_e_integral_alpha`
|
||||||
|
* :c:data:`e_correlation_dft`
|
||||||
|
* :c:data:`e_exchange_dft`
|
||||||
|
* :c:data:`fock_matrix_ao_alpha`
|
||||||
|
* :c:data:`nuclear_repulsion`
|
||||||
|
* :c:data:`scf_density_matrix_ao_alpha`
|
||||||
|
* :c:data:`scf_density_matrix_ao_beta`
|
||||||
|
|
||||||
|
Needed by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`extra_e_contrib_density`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: rs_ks_energy
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`rs_ks_energy.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision :: rs_ks_energy
|
||||||
|
double precision :: two_e_energy
|
||||||
|
double precision :: one_e_energy
|
||||||
|
double precision :: fock_matrix_energy
|
||||||
|
double precision :: trace_potential_xc
|
||||||
|
|
||||||
|
|
||||||
|
Range-separated Kohn-Sham energy containing the nuclear repulsion energy, and the various components of this quantity.
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`ao_num`
|
||||||
|
* :c:data:`ao_one_e_integrals`
|
||||||
|
* :c:data:`ao_potential_alpha_xc`
|
||||||
|
* :c:data:`ao_two_e_integral_alpha`
|
||||||
|
* :c:data:`e_correlation_dft`
|
||||||
|
* :c:data:`e_exchange_dft`
|
||||||
|
* :c:data:`fock_matrix_ao_alpha`
|
||||||
|
* :c:data:`nuclear_repulsion`
|
||||||
|
* :c:data:`scf_density_matrix_ao_alpha`
|
||||||
|
* :c:data:`scf_density_matrix_ao_beta`
|
||||||
|
|
||||||
|
Needed by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`extra_e_contrib_density`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: trace_potential_xc
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`rs_ks_energy.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision :: rs_ks_energy
|
||||||
|
double precision :: two_e_energy
|
||||||
|
double precision :: one_e_energy
|
||||||
|
double precision :: fock_matrix_energy
|
||||||
|
double precision :: trace_potential_xc
|
||||||
|
|
||||||
|
|
||||||
|
Range-separated Kohn-Sham energy containing the nuclear repulsion energy, and the various components of this quantity.
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`ao_num`
|
||||||
|
* :c:data:`ao_one_e_integrals`
|
||||||
|
* :c:data:`ao_potential_alpha_xc`
|
||||||
|
* :c:data:`ao_two_e_integral_alpha`
|
||||||
|
* :c:data:`e_correlation_dft`
|
||||||
|
* :c:data:`e_exchange_dft`
|
||||||
|
* :c:data:`fock_matrix_ao_alpha`
|
||||||
|
* :c:data:`nuclear_repulsion`
|
||||||
|
* :c:data:`scf_density_matrix_ao_alpha`
|
||||||
|
* :c:data:`scf_density_matrix_ao_beta`
|
||||||
|
|
||||||
|
Needed by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`extra_e_contrib_density`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: two_e_energy
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`rs_ks_energy.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision :: rs_ks_energy
|
||||||
|
double precision :: two_e_energy
|
||||||
|
double precision :: one_e_energy
|
||||||
|
double precision :: fock_matrix_energy
|
||||||
|
double precision :: trace_potential_xc
|
||||||
|
|
||||||
|
|
||||||
|
Range-separated Kohn-Sham energy containing the nuclear repulsion energy, and the various components of this quantity.
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`ao_num`
|
||||||
|
* :c:data:`ao_one_e_integrals`
|
||||||
|
* :c:data:`ao_potential_alpha_xc`
|
||||||
|
* :c:data:`ao_two_e_integral_alpha`
|
||||||
|
* :c:data:`e_correlation_dft`
|
||||||
|
* :c:data:`e_exchange_dft`
|
||||||
|
* :c:data:`fock_matrix_ao_alpha`
|
||||||
|
* :c:data:`nuclear_repulsion`
|
||||||
|
* :c:data:`scf_density_matrix_ao_alpha`
|
||||||
|
* :c:data:`scf_density_matrix_ao_beta`
|
||||||
|
|
||||||
|
Needed by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`extra_e_contrib_density`
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Subroutines / functions
|
||||||
|
-----------------------
|
||||||
|
|
||||||
|
.. c:function:: check_coherence_functional:
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`rs_ks_scf.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
subroutine check_coherence_functional
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`exchange_functional`
|
||||||
|
* :c:data:`correlation_functional`
|
||||||
|
|
||||||
|
Called by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:func:`rs_ks_scf`
|
||||||
|
|
815
doc/_sources/modules/mo_basis.rst.txt
Normal file
815
doc/_sources/modules/mo_basis.rst.txt
Normal file
@ -0,0 +1,815 @@
|
|||||||
|
.. _module_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_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.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Providers
|
||||||
|
---------
|
||||||
|
|
||||||
|
.. c:var:: mo_coef
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`mo_basis/mos.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision, allocatable :: mo_coef (ao_num,mo_num)
|
||||||
|
|
||||||
|
|
||||||
|
Molecular orbital coefficients on |AO| basis set
|
||||||
|
|
||||||
|
mo_coef(i,j) = coefficient of the i-th |AO| on the jth mo
|
||||||
|
|
||||||
|
mo_label : Label characterizing the MOS (local, canonical, natural, etc)
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`ao_num`
|
||||||
|
* :c:data:`ao_ortho_canonical_coef`
|
||||||
|
* :c:data:`ezfio_filename`
|
||||||
|
* :c:data:`mo_num`
|
||||||
|
* :c:data:`mpi_master`
|
||||||
|
|
||||||
|
Needed by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`eigenvectors_fock_matrix_mo`
|
||||||
|
* :c:data:`fock_matrix_mo_alpha`
|
||||||
|
* :c:data:`fock_matrix_mo_beta`
|
||||||
|
* :c:data:`fps_spf_matrix_mo`
|
||||||
|
* :c:data:`mo_coef_in_ao_ortho_basis`
|
||||||
|
* :c:data:`mo_coef_transp`
|
||||||
|
* :c:data:`mo_dipole_x`
|
||||||
|
* :c:data:`mo_integrals_n_e`
|
||||||
|
* :c:data:`mo_integrals_n_e_per_atom`
|
||||||
|
* :c:data:`mo_kinetic_integrals`
|
||||||
|
* :c:data:`mo_overlap`
|
||||||
|
* :c:data:`mo_pseudo_integrals`
|
||||||
|
* :c:data:`mo_spread_x`
|
||||||
|
* :c:data:`mo_two_e_int_erf_jj_from_ao`
|
||||||
|
* :c:data:`mo_two_e_integral_jj_from_ao`
|
||||||
|
* :c:data:`mo_two_e_integrals_erf_in_map`
|
||||||
|
* :c:data:`mo_two_e_integrals_in_map`
|
||||||
|
* :c:data:`mo_two_e_integrals_vv_from_ao`
|
||||||
|
* :c:data:`one_e_dm_ao_alpha`
|
||||||
|
* :c:data:`one_e_spin_density_ao`
|
||||||
|
* :c:data:`psi_det`
|
||||||
|
* :c:data:`s_mo_coef`
|
||||||
|
* :c:data:`scf_density_matrix_ao_alpha`
|
||||||
|
* :c:data:`scf_density_matrix_ao_beta`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: mo_coef_begin_iteration
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`mo_basis/track_orb.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision, allocatable :: mo_coef_begin_iteration (ao_num,mo_num)
|
||||||
|
|
||||||
|
|
||||||
|
Void provider to store the coefficients of the |MO| basis at the beginning of the SCF iteration
|
||||||
|
|
||||||
|
Usefull to track some orbitals
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`ao_num`
|
||||||
|
* :c:data:`mo_num`
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: mo_coef_in_ao_ortho_basis
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`mo_basis/mos.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision, allocatable :: mo_coef_in_ao_ortho_basis (ao_num,mo_num)
|
||||||
|
|
||||||
|
|
||||||
|
|MO| coefficients in orthogonalized |AO| basis
|
||||||
|
|
||||||
|
:math:`C^{-1}.C_{mo}`
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`ao_num`
|
||||||
|
* :c:data:`ao_ortho_canonical_coef_inv`
|
||||||
|
* :c:data:`mo_coef`
|
||||||
|
* :c:data:`mo_num`
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: mo_coef_transp
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`mo_basis/mos.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision, allocatable :: mo_coef_transp (mo_num,ao_num)
|
||||||
|
|
||||||
|
|
||||||
|
|MO| coefficients on |AO| basis set
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`ao_num`
|
||||||
|
* :c:data:`mo_coef`
|
||||||
|
* :c:data:`mo_num`
|
||||||
|
|
||||||
|
Needed by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`mo_two_e_int_erf_jj_from_ao`
|
||||||
|
* :c:data:`mo_two_e_integral_jj_from_ao`
|
||||||
|
* :c:data:`mo_two_e_integrals_erf_in_map`
|
||||||
|
* :c:data:`mo_two_e_integrals_in_map`
|
||||||
|
* :c:data:`mo_two_e_integrals_vv_from_ao`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: mo_label
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`mo_basis/mos.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
character*(64) :: mo_label
|
||||||
|
|
||||||
|
|
||||||
|
|MO| coefficients on |AO| basis set
|
||||||
|
|
||||||
|
mo_coef(i,j) = coefficient of the i-th |AO| on the j-th |MO|
|
||||||
|
|
||||||
|
mo_label : Label characterizing the |MOs| (local, canonical, natural, etc)
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`ezfio_filename`
|
||||||
|
* :c:data:`mpi_master`
|
||||||
|
|
||||||
|
Needed by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`n_det`
|
||||||
|
* :c:data:`psi_coef`
|
||||||
|
* :c:data:`psi_det`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: mo_num
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`mo_basis/mos.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
integer :: mo_num
|
||||||
|
|
||||||
|
|
||||||
|
Number of MOs
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`ao_ortho_canonical_coef`
|
||||||
|
* :c:data:`ezfio_filename`
|
||||||
|
* :c:data:`mpi_master`
|
||||||
|
|
||||||
|
Needed by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`ao_ortho_canonical_nucl_elec_integrals`
|
||||||
|
* :c:data:`ao_ortho_lowdin_nucl_elec_integrals`
|
||||||
|
* :c:data:`big_array_coulomb_integrals`
|
||||||
|
* :c:data:`core_fock_operator`
|
||||||
|
* :c:data:`core_fock_operator_erf`
|
||||||
|
* :c:data:`data_one_e_dm_alpha_mo`
|
||||||
|
* :c:data:`data_one_e_dm_beta_mo`
|
||||||
|
* :c:data:`eigenvectors_fock_matrix_mo`
|
||||||
|
* :c:data:`fock_matrix_ao`
|
||||||
|
* :c:data:`fock_matrix_mo`
|
||||||
|
* :c:data:`fock_matrix_mo_alpha`
|
||||||
|
* :c:data:`fock_matrix_mo_beta`
|
||||||
|
* :c:data:`fock_operator_closed_shell_ref_bitmask`
|
||||||
|
* :c:data:`fock_wee_closed_shell`
|
||||||
|
* :c:data:`fps_spf_matrix_mo`
|
||||||
|
* :c:data:`full_ijkl_bitmask`
|
||||||
|
* :c:data:`int_erf_3_index`
|
||||||
|
* :c:data:`list_core_inact_act`
|
||||||
|
* :c:data:`list_inact`
|
||||||
|
* :c:data:`mo_class`
|
||||||
|
* :c:data:`mo_coef`
|
||||||
|
* :c:data:`mo_coef_begin_iteration`
|
||||||
|
* :c:data:`mo_coef_in_ao_ortho_basis`
|
||||||
|
* :c:data:`mo_coef_transp`
|
||||||
|
* :c:data:`mo_dipole_x`
|
||||||
|
* :c:data:`mo_integrals_cache_min`
|
||||||
|
* :c:data:`mo_integrals_erf_cache_min`
|
||||||
|
* :c:data:`mo_integrals_erf_map`
|
||||||
|
* :c:data:`mo_integrals_map`
|
||||||
|
* :c:data:`mo_integrals_n_e`
|
||||||
|
* :c:data:`mo_integrals_n_e_per_atom`
|
||||||
|
* :c:data:`mo_kinetic_integrals`
|
||||||
|
* :c:data:`mo_occ`
|
||||||
|
* :c:data:`mo_one_e_integrals`
|
||||||
|
* :c:data:`mo_overlap`
|
||||||
|
* :c:data:`mo_pseudo_integrals`
|
||||||
|
* :c:data:`mo_spread_x`
|
||||||
|
* :c:data:`mo_two_e_int_erf_jj`
|
||||||
|
* :c:data:`mo_two_e_int_erf_jj_from_ao`
|
||||||
|
* :c:data:`mo_two_e_integral_jj_from_ao`
|
||||||
|
* :c:data:`mo_two_e_integrals_erf_in_map`
|
||||||
|
* :c:data:`mo_two_e_integrals_in_map`
|
||||||
|
* :c:data:`mo_two_e_integrals_jj`
|
||||||
|
* :c:data:`mo_two_e_integrals_vv_from_ao`
|
||||||
|
* :c:data:`n_core_orb`
|
||||||
|
* :c:data:`n_int`
|
||||||
|
* :c:data:`one_e_dm_ao_alpha`
|
||||||
|
* :c:data:`one_e_dm_dagger_mo_spin_index`
|
||||||
|
* :c:data:`one_e_dm_mo`
|
||||||
|
* :c:data:`one_e_dm_mo_alpha`
|
||||||
|
* :c:data:`one_e_dm_mo_alpha_average`
|
||||||
|
* :c:data:`one_e_dm_mo_diff`
|
||||||
|
* :c:data:`one_e_dm_mo_spin_index`
|
||||||
|
* :c:data:`one_e_spin_density_ao`
|
||||||
|
* :c:data:`one_e_spin_density_mo`
|
||||||
|
* :c:data:`psi_energy_h_core`
|
||||||
|
* :c:data:`s_mo_coef`
|
||||||
|
* :c:data:`singles_alpha_csc_idx`
|
||||||
|
* :c:data:`singles_beta_csc_idx`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: mo_occ
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`mo_basis/mos.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision, allocatable :: mo_occ (mo_num)
|
||||||
|
|
||||||
|
|
||||||
|
|MO| occupation numbers
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`elec_alpha_num`
|
||||||
|
* :c:data:`elec_beta_num`
|
||||||
|
* :c:data:`ezfio_filename`
|
||||||
|
* :c:data:`mo_num`
|
||||||
|
* :c:data:`mpi_master`
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Subroutines / functions
|
||||||
|
-----------------------
|
||||||
|
|
||||||
|
.. c:function:: ao_ortho_cano_to_ao:
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`mo_basis/mos.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
subroutine ao_ortho_cano_to_ao(A_ao,LDA_ao,A,LDA)
|
||||||
|
|
||||||
|
|
||||||
|
Transform A from the |AO| basis to the orthogonal |AO| basis
|
||||||
|
|
||||||
|
$C^{-1}.A_{ao}.C^{\dagger-1}$
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`ao_num`
|
||||||
|
* :c:data:`ao_ortho_canonical_coef_inv`
|
||||||
|
|
||||||
|
Calls:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:func:`dgemm`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:function:: ao_to_mo:
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`mo_basis/mos.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
subroutine ao_to_mo(A_ao,LDA_ao,A_mo,LDA_mo)
|
||||||
|
|
||||||
|
|
||||||
|
Transform A from the |AO| basis to the |MO| basis
|
||||||
|
|
||||||
|
$C^\dagger.A_{ao}.C$
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`ao_num`
|
||||||
|
* :c:data:`mo_num`
|
||||||
|
* :c:data:`mo_coef`
|
||||||
|
|
||||||
|
Called by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`fock_matrix_mo_alpha`
|
||||||
|
* :c:data:`fock_matrix_mo_beta`
|
||||||
|
* :c:data:`fps_spf_matrix_mo`
|
||||||
|
* :c:data:`mo_dipole_x`
|
||||||
|
* :c:data:`mo_integrals_n_e`
|
||||||
|
* :c:data:`mo_integrals_n_e_per_atom`
|
||||||
|
* :c:data:`mo_kinetic_integrals`
|
||||||
|
* :c:data:`mo_pseudo_integrals`
|
||||||
|
* :c:data:`mo_spread_x`
|
||||||
|
|
||||||
|
Calls:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:func:`dgemm`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:function:: give_all_mos_and_grad_and_lapl_at_r:
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`mo_basis/mos_in_r.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
subroutine give_all_mos_and_grad_and_lapl_at_r(r,mos_array,mos_grad_array,mos_lapl_array)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`ao_num`
|
||||||
|
* :c:data:`mo_num`
|
||||||
|
* :c:data:`mo_coef`
|
||||||
|
|
||||||
|
Calls:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:func:`give_all_aos_and_grad_and_lapl_at_r`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:function:: give_all_mos_and_grad_at_r:
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`mo_basis/mos_in_r.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
subroutine give_all_mos_and_grad_at_r(r,mos_array,mos_grad_array)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`ao_num`
|
||||||
|
* :c:data:`mo_num`
|
||||||
|
* :c:data:`mo_coef`
|
||||||
|
|
||||||
|
Calls:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:func:`give_all_aos_and_grad_at_r`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:function:: give_all_mos_at_r:
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`mo_basis/mos_in_r.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
subroutine give_all_mos_at_r(r,mos_array)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`ao_num`
|
||||||
|
* :c:data:`mo_num`
|
||||||
|
* :c:data:`mo_coef_transp`
|
||||||
|
|
||||||
|
Calls:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:func:`dgemv`
|
||||||
|
* :c:func:`give_all_aos_at_r`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:function:: initialize_mo_coef_begin_iteration:
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`mo_basis/track_orb.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
subroutine initialize_mo_coef_begin_iteration
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Initialize :c:data:`mo_coef_begin_iteration` to the current :c:data:`mo_coef`
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`mo_coef_begin_iteration`
|
||||||
|
* :c:data:`mo_coef`
|
||||||
|
|
||||||
|
Called by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:func:`damping_scf`
|
||||||
|
* :c:func:`roothaan_hall_scf`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:function:: mix_mo_jk:
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`mo_basis/mos.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
subroutine mix_mo_jk(j,k)
|
||||||
|
|
||||||
|
|
||||||
|
Rotates the j-th |MO| with the k-th |MO| to give two new |MOs| that are
|
||||||
|
|
||||||
|
* $+ = \frac{1}{\sqrt{2}} (|j\rangle + |k\rangle)$
|
||||||
|
|
||||||
|
* $- = \frac{1}{\sqrt{2}} (|j\rangle - |k\rangle)$
|
||||||
|
|
||||||
|
by convention, the '+' |MO| is in the lowest index (min(j,k))
|
||||||
|
by convention, the '-' |MO| is in the highest index (max(j,k))
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`ao_num`
|
||||||
|
* :c:data:`mo_coef`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:function:: mo_as_eigvectors_of_mo_matrix:
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`mo_basis/utils.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
subroutine mo_as_eigvectors_of_mo_matrix(matrix,n,m,label,sign,output)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`mo_label`
|
||||||
|
* :c:data:`ao_num`
|
||||||
|
* :c:data:`mo_num`
|
||||||
|
* :c:data:`mo_coef`
|
||||||
|
|
||||||
|
Called by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:func:`create_guess`
|
||||||
|
* :c:func:`damping_scf`
|
||||||
|
* :c:func:`hcore_guess`
|
||||||
|
* :c:func:`roothaan_hall_scf`
|
||||||
|
|
||||||
|
Calls:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:func:`dgemm`
|
||||||
|
* :c:func:`lapack_diag`
|
||||||
|
* :c:func:`write_time`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:function:: mo_as_svd_vectors_of_mo_matrix:
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`mo_basis/utils.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
subroutine mo_as_svd_vectors_of_mo_matrix(matrix,lda,m,n,label)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`mo_label`
|
||||||
|
* :c:data:`ao_num`
|
||||||
|
* :c:data:`mo_num`
|
||||||
|
* :c:data:`mo_coef`
|
||||||
|
|
||||||
|
Calls:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:func:`dgemm`
|
||||||
|
* :c:func:`svd`
|
||||||
|
* :c:func:`write_time`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:function:: mo_as_svd_vectors_of_mo_matrix_eig:
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`mo_basis/utils.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
subroutine mo_as_svd_vectors_of_mo_matrix_eig(matrix,lda,m,n,eig,label)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`mo_label`
|
||||||
|
* :c:data:`ao_num`
|
||||||
|
* :c:data:`mo_num`
|
||||||
|
* :c:data:`mo_coef`
|
||||||
|
|
||||||
|
Called by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:func:`set_natural_mos`
|
||||||
|
|
||||||
|
Calls:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:func:`dgemm`
|
||||||
|
* :c:func:`svd`
|
||||||
|
* :c:func:`write_time`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:function:: reorder_core_orb:
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`mo_basis/track_orb.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
subroutine reorder_core_orb
|
||||||
|
|
||||||
|
|
||||||
|
routines that takes the current :c:data:`mo_coef` and reorder the core orbitals (see :c:data:`list_core` and :c:data:`n_core_orb`) according to the overlap with :c:data:`mo_coef_begin_iteration`
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`mo_num`
|
||||||
|
* :c:data:`mo_coef_begin_iteration`
|
||||||
|
* :c:data:`mo_coef`
|
||||||
|
* :c:data:`ao_overlap`
|
||||||
|
* :c:data:`n_core_orb`
|
||||||
|
* :c:data:`ao_num`
|
||||||
|
* :c:data:`list_inact`
|
||||||
|
|
||||||
|
Called by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:func:`damping_scf`
|
||||||
|
* :c:func:`roothaan_hall_scf`
|
||||||
|
|
||||||
|
Calls:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:func:`dsort`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:function:: save_mos:
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`mo_basis/utils.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
subroutine save_mos
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`mo_occ`
|
||||||
|
* :c:data:`ao_md5`
|
||||||
|
* :c:data:`ezfio_filename`
|
||||||
|
* :c:data:`mo_num`
|
||||||
|
* :c:data:`mo_coef`
|
||||||
|
* :c:data:`ao_num`
|
||||||
|
* :c:data:`mo_label`
|
||||||
|
|
||||||
|
Called by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:func:`damping_scf`
|
||||||
|
* :c:func:`hcore_guess`
|
||||||
|
* :c:func:`huckel_guess`
|
||||||
|
* :c:func:`roothaan_hall_scf`
|
||||||
|
* :c:func:`save_natural_mos`
|
||||||
|
* :c:func:`save_ortho_mos`
|
||||||
|
|
||||||
|
Calls:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:func:`ezfio_set_mo_basis_ao_md5`
|
||||||
|
* :c:func:`ezfio_set_mo_basis_mo_coef`
|
||||||
|
* :c:func:`ezfio_set_mo_basis_mo_label`
|
||||||
|
* :c:func:`ezfio_set_mo_basis_mo_num`
|
||||||
|
* :c:func:`ezfio_set_mo_basis_mo_occ`
|
||||||
|
* :c:func:`system`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:function:: save_mos_truncated:
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`mo_basis/utils.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
subroutine save_mos_truncated(n)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`mo_occ`
|
||||||
|
* :c:data:`ao_md5`
|
||||||
|
* :c:data:`ezfio_filename`
|
||||||
|
* :c:data:`mo_coef`
|
||||||
|
* :c:data:`ao_num`
|
||||||
|
* :c:data:`mo_label`
|
||||||
|
|
||||||
|
Calls:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:func:`ezfio_set_mo_basis_ao_md5`
|
||||||
|
* :c:func:`ezfio_set_mo_basis_mo_coef`
|
||||||
|
* :c:func:`ezfio_set_mo_basis_mo_label`
|
||||||
|
* :c:func:`ezfio_set_mo_basis_mo_num`
|
||||||
|
* :c:func:`ezfio_set_mo_basis_mo_occ`
|
||||||
|
* :c:func:`system`
|
||||||
|
|
160
doc/_sources/modules/mo_guess.rst.txt
Normal file
160
doc/_sources/modules/mo_guess.rst.txt
Normal file
@ -0,0 +1,160 @@
|
|||||||
|
.. _module_mo_guess:
|
||||||
|
|
||||||
|
.. program:: mo_guess
|
||||||
|
|
||||||
|
.. default-role:: option
|
||||||
|
|
||||||
|
========
|
||||||
|
mo_guess
|
||||||
|
========
|
||||||
|
|
||||||
|
Guess for |MOs|.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Providers
|
||||||
|
---------
|
||||||
|
|
||||||
|
.. c:var:: ao_ortho_canonical_nucl_elec_integrals
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`mo_guess/pot_mo_ortho_canonical_ints.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision, allocatable :: ao_ortho_canonical_nucl_elec_integrals (mo_num,mo_num)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`ao_integrals_n_e`
|
||||||
|
* :c:data:`ao_num`
|
||||||
|
* :c:data:`ao_ortho_canonical_coef`
|
||||||
|
* :c:data:`mo_num`
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: ao_ortho_lowdin_coef
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`mo_guess/mo_ortho_lowdin.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision, allocatable :: ao_ortho_lowdin_coef (ao_num,ao_num)
|
||||||
|
|
||||||
|
|
||||||
|
matrix of the coefficients of the mos generated by the
|
||||||
|
orthonormalization by the S^{-1/2} canonical transformation of the aos
|
||||||
|
ao_ortho_lowdin_coef(i,j) = coefficient of the ith ao on the jth ao_ortho_lowdin orbital
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`ao_num`
|
||||||
|
* :c:data:`ao_overlap`
|
||||||
|
|
||||||
|
Needed by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`ao_ortho_lowdin_nucl_elec_integrals`
|
||||||
|
* :c:data:`ao_ortho_lowdin_overlap`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: ao_ortho_lowdin_nucl_elec_integrals
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`mo_guess/pot_mo_ortho_lowdin_ints.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision, allocatable :: ao_ortho_lowdin_nucl_elec_integrals (mo_num,mo_num)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`ao_integrals_n_e`
|
||||||
|
* :c:data:`ao_num`
|
||||||
|
* :c:data:`ao_ortho_lowdin_coef`
|
||||||
|
* :c:data:`mo_num`
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: ao_ortho_lowdin_overlap
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`mo_guess/mo_ortho_lowdin.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision, allocatable :: ao_ortho_lowdin_overlap (ao_num,ao_num)
|
||||||
|
|
||||||
|
|
||||||
|
overlap matrix of the ao_ortho_lowdin
|
||||||
|
supposed to be the Identity
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`ao_num`
|
||||||
|
* :c:data:`ao_ortho_lowdin_coef`
|
||||||
|
* :c:data:`ao_overlap`
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Subroutines / functions
|
||||||
|
-----------------------
|
||||||
|
|
||||||
|
.. c:function:: hcore_guess:
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`mo_guess/h_core_guess_routine.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
subroutine hcore_guess
|
||||||
|
|
||||||
|
|
||||||
|
Produce `H_core` MO orbital
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`mo_label`
|
||||||
|
* :c:data:`mo_one_e_integrals`
|
||||||
|
* :c:data:`mo_coef`
|
||||||
|
|
||||||
|
Calls:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:func:`mo_as_eigvectors_of_mo_matrix`
|
||||||
|
* :c:func:`save_mos`
|
||||||
|
|
||||||
|
Touches:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`mo_coef`
|
||||||
|
* :c:data:`mo_label`
|
||||||
|
|
571
doc/_sources/modules/mo_one_e_ints.rst.txt
Normal file
571
doc/_sources/modules/mo_one_e_ints.rst.txt
Normal file
@ -0,0 +1,571 @@
|
|||||||
|
.. _module_mo_one_e_ints:
|
||||||
|
|
||||||
|
.. program:: mo_one_e_ints
|
||||||
|
|
||||||
|
.. default-role:: option
|
||||||
|
|
||||||
|
==================
|
||||||
|
mo_one_e_integrals
|
||||||
|
==================
|
||||||
|
|
||||||
|
All the one-electron integrals in |MO| basis are defined here.
|
||||||
|
|
||||||
|
The most important providers for usual quantum-chemistry calculation are:
|
||||||
|
|
||||||
|
* `mo_kinetic_integrals` which are the kinetic operator integrals on the |AO| basis (see :file:`kin_mo_ints.irp.f`)
|
||||||
|
* `mo_integrals_n_e` which are the nuclear-elctron operator integrals on the |AO| basis (see :file:`pot_mo_ints.irp.f`)
|
||||||
|
* `mo_one_e_integrals` which are the the h_core operator integrals on the |AO| basis (see :file:`mo_mono_ints.irp.f`)
|
||||||
|
|
||||||
|
Note that you can find other interesting integrals related to the position operator in :file:`spread_dipole_mo.irp.f`.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
EZFIO parameters
|
||||||
|
----------------
|
||||||
|
|
||||||
|
.. option:: mo_integrals_e_n
|
||||||
|
|
||||||
|
Nucleus-electron integrals in |MO| basis set
|
||||||
|
|
||||||
|
|
||||||
|
.. option:: io_mo_integrals_e_n
|
||||||
|
|
||||||
|
Read/Write |MO| electron-nucleus attraction integrals from/to disk [ Write | Read | None ]
|
||||||
|
|
||||||
|
Default: None
|
||||||
|
|
||||||
|
.. option:: mo_integrals_kinetic
|
||||||
|
|
||||||
|
Kinetic energy integrals in |MO| basis set
|
||||||
|
|
||||||
|
|
||||||
|
.. option:: io_mo_integrals_kinetic
|
||||||
|
|
||||||
|
Read/Write |MO| one-electron kinetic integrals from/to disk [ Write | Read | None ]
|
||||||
|
|
||||||
|
Default: None
|
||||||
|
|
||||||
|
.. option:: mo_integrals_pseudo
|
||||||
|
|
||||||
|
Pseudopotential integrals in |MO| basis set
|
||||||
|
|
||||||
|
|
||||||
|
.. option:: io_mo_integrals_pseudo
|
||||||
|
|
||||||
|
Read/Write |MO| pseudopotential integrals from/to disk [ Write | Read | None ]
|
||||||
|
|
||||||
|
Default: None
|
||||||
|
|
||||||
|
.. option:: mo_one_e_integrals
|
||||||
|
|
||||||
|
One-electron integrals in |MO| basis set
|
||||||
|
|
||||||
|
|
||||||
|
.. option:: io_mo_one_e_integrals
|
||||||
|
|
||||||
|
Read/Write |MO| one-electron integrals from/to disk [ Write | Read | None ]
|
||||||
|
|
||||||
|
Default: None
|
||||||
|
|
||||||
|
|
||||||
|
Providers
|
||||||
|
---------
|
||||||
|
|
||||||
|
.. c:var:: mo_dipole_x
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`mo_one_e_ints/spread_dipole_mo.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision, allocatable :: mo_dipole_x (mo_num,mo_num)
|
||||||
|
double precision, allocatable :: mo_dipole_y (mo_num,mo_num)
|
||||||
|
double precision, allocatable :: mo_dipole_z (mo_num,mo_num)
|
||||||
|
|
||||||
|
|
||||||
|
array of the integrals of MO_i * x MO_j
|
||||||
|
array of the integrals of MO_i * y MO_j
|
||||||
|
array of the integrals of MO_i * z MO_j
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`ao_dipole_x`
|
||||||
|
* :c:data:`ao_num`
|
||||||
|
* :c:data:`mo_coef`
|
||||||
|
* :c:data:`mo_num`
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: mo_dipole_y
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`mo_one_e_ints/spread_dipole_mo.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision, allocatable :: mo_dipole_x (mo_num,mo_num)
|
||||||
|
double precision, allocatable :: mo_dipole_y (mo_num,mo_num)
|
||||||
|
double precision, allocatable :: mo_dipole_z (mo_num,mo_num)
|
||||||
|
|
||||||
|
|
||||||
|
array of the integrals of MO_i * x MO_j
|
||||||
|
array of the integrals of MO_i * y MO_j
|
||||||
|
array of the integrals of MO_i * z MO_j
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`ao_dipole_x`
|
||||||
|
* :c:data:`ao_num`
|
||||||
|
* :c:data:`mo_coef`
|
||||||
|
* :c:data:`mo_num`
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: mo_dipole_z
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`mo_one_e_ints/spread_dipole_mo.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision, allocatable :: mo_dipole_x (mo_num,mo_num)
|
||||||
|
double precision, allocatable :: mo_dipole_y (mo_num,mo_num)
|
||||||
|
double precision, allocatable :: mo_dipole_z (mo_num,mo_num)
|
||||||
|
|
||||||
|
|
||||||
|
array of the integrals of MO_i * x MO_j
|
||||||
|
array of the integrals of MO_i * y MO_j
|
||||||
|
array of the integrals of MO_i * z MO_j
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`ao_dipole_x`
|
||||||
|
* :c:data:`ao_num`
|
||||||
|
* :c:data:`mo_coef`
|
||||||
|
* :c:data:`mo_num`
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: mo_integrals_n_e
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`mo_one_e_ints/pot_mo_ints.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision, allocatable :: mo_integrals_n_e (mo_num,mo_num)
|
||||||
|
|
||||||
|
|
||||||
|
Nucleus-electron interaction on the |MO| basis
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`ao_integrals_n_e`
|
||||||
|
* :c:data:`ao_num`
|
||||||
|
* :c:data:`mo_coef`
|
||||||
|
* :c:data:`mo_num`
|
||||||
|
* :c:data:`read_mo_integrals_e_n`
|
||||||
|
|
||||||
|
Needed by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`mo_one_e_integrals`
|
||||||
|
* :c:data:`ref_bitmask_energy`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: mo_integrals_n_e_per_atom
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`mo_one_e_ints/pot_mo_ints.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision, allocatable :: mo_integrals_n_e_per_atom (mo_num,mo_num,nucl_num)
|
||||||
|
|
||||||
|
|
||||||
|
mo_integrals_n_e_per_atom(i,j,k) =
|
||||||
|
:math:`\langle \phi_i| -\frac{1}{|r-R_k|} | \phi_j \rangle` .
|
||||||
|
where R_k is the coordinate of the k-th nucleus.
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`ao_integrals_n_e_per_atom`
|
||||||
|
* :c:data:`ao_num`
|
||||||
|
* :c:data:`mo_coef`
|
||||||
|
* :c:data:`mo_num`
|
||||||
|
* :c:data:`nucl_num`
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: mo_kinetic_integrals
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`mo_one_e_ints/kin_mo_ints.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision, allocatable :: mo_kinetic_integrals (mo_num,mo_num)
|
||||||
|
|
||||||
|
|
||||||
|
Kinetic energy integrals in the MO basis
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`ao_kinetic_integrals`
|
||||||
|
* :c:data:`ao_num`
|
||||||
|
* :c:data:`mo_coef`
|
||||||
|
* :c:data:`mo_num`
|
||||||
|
* :c:data:`read_mo_integrals_kinetic`
|
||||||
|
|
||||||
|
Needed by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`mo_one_e_integrals`
|
||||||
|
* :c:data:`ref_bitmask_energy`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: mo_one_e_integrals
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`mo_one_e_ints/mo_one_e_ints.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision, allocatable :: mo_one_e_integrals (mo_num,mo_num)
|
||||||
|
|
||||||
|
|
||||||
|
array of the mono electronic hamiltonian on the MOs basis :
|
||||||
|
sum of the kinetic and nuclear electronic potential (and pseudo potential if needed)
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`do_pseudo`
|
||||||
|
* :c:data:`mo_integrals_n_e`
|
||||||
|
* :c:data:`mo_kinetic_integrals`
|
||||||
|
* :c:data:`mo_num`
|
||||||
|
* :c:data:`mo_pseudo_integrals`
|
||||||
|
* :c:data:`read_mo_one_e_integrals`
|
||||||
|
|
||||||
|
Needed by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`core_energy`
|
||||||
|
* :c:data:`core_energy_erf`
|
||||||
|
* :c:data:`fock_operator_closed_shell_ref_bitmask`
|
||||||
|
* :c:data:`psi_energy_h_core`
|
||||||
|
* :c:data:`ref_bitmask_energy`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: mo_overlap
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`mo_one_e_ints/mo_overlap.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision, allocatable :: mo_overlap (mo_num,mo_num)
|
||||||
|
|
||||||
|
|
||||||
|
Provider to check that the MOs are indeed orthonormal.
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`ao_num`
|
||||||
|
* :c:data:`ao_overlap`
|
||||||
|
* :c:data:`mo_coef`
|
||||||
|
* :c:data:`mo_num`
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: mo_pseudo_integrals
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`mo_one_e_ints/pot_mo_pseudo_ints.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision, allocatable :: mo_pseudo_integrals (mo_num,mo_num)
|
||||||
|
|
||||||
|
|
||||||
|
Pseudopotential integrals in |MO| basis
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`ao_num`
|
||||||
|
* :c:data:`ao_pseudo_integrals`
|
||||||
|
* :c:data:`do_pseudo`
|
||||||
|
* :c:data:`mo_coef`
|
||||||
|
* :c:data:`mo_num`
|
||||||
|
* :c:data:`read_mo_integrals_pseudo`
|
||||||
|
|
||||||
|
Needed by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`mo_one_e_integrals`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: mo_spread_x
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`mo_one_e_ints/spread_dipole_mo.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision, allocatable :: mo_spread_x (mo_num,mo_num)
|
||||||
|
double precision, allocatable :: mo_spread_y (mo_num,mo_num)
|
||||||
|
double precision, allocatable :: mo_spread_z (mo_num,mo_num)
|
||||||
|
|
||||||
|
|
||||||
|
array of the integrals of MO_i * x^2 MO_j
|
||||||
|
array of the integrals of MO_i * y^2 MO_j
|
||||||
|
array of the integrals of MO_i * z^2 MO_j
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`ao_num`
|
||||||
|
* :c:data:`ao_spread_x`
|
||||||
|
* :c:data:`mo_coef`
|
||||||
|
* :c:data:`mo_num`
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: mo_spread_y
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`mo_one_e_ints/spread_dipole_mo.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision, allocatable :: mo_spread_x (mo_num,mo_num)
|
||||||
|
double precision, allocatable :: mo_spread_y (mo_num,mo_num)
|
||||||
|
double precision, allocatable :: mo_spread_z (mo_num,mo_num)
|
||||||
|
|
||||||
|
|
||||||
|
array of the integrals of MO_i * x^2 MO_j
|
||||||
|
array of the integrals of MO_i * y^2 MO_j
|
||||||
|
array of the integrals of MO_i * z^2 MO_j
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`ao_num`
|
||||||
|
* :c:data:`ao_spread_x`
|
||||||
|
* :c:data:`mo_coef`
|
||||||
|
* :c:data:`mo_num`
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: mo_spread_z
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`mo_one_e_ints/spread_dipole_mo.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision, allocatable :: mo_spread_x (mo_num,mo_num)
|
||||||
|
double precision, allocatable :: mo_spread_y (mo_num,mo_num)
|
||||||
|
double precision, allocatable :: mo_spread_z (mo_num,mo_num)
|
||||||
|
|
||||||
|
|
||||||
|
array of the integrals of MO_i * x^2 MO_j
|
||||||
|
array of the integrals of MO_i * y^2 MO_j
|
||||||
|
array of the integrals of MO_i * z^2 MO_j
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`ao_num`
|
||||||
|
* :c:data:`ao_spread_x`
|
||||||
|
* :c:data:`mo_coef`
|
||||||
|
* :c:data:`mo_num`
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: s_mo_coef
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`mo_one_e_ints/ao_to_mo.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision, allocatable :: s_mo_coef (ao_num,mo_num)
|
||||||
|
|
||||||
|
|
||||||
|
Product S.C where S is the overlap matrix in the AO basis and C the mo_coef matrix.
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`ao_num`
|
||||||
|
* :c:data:`ao_overlap`
|
||||||
|
* :c:data:`mo_coef`
|
||||||
|
* :c:data:`mo_num`
|
||||||
|
|
||||||
|
Needed by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`fock_matrix_ao`
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Subroutines / functions
|
||||||
|
-----------------------
|
||||||
|
|
||||||
|
.. c:function:: mo_to_ao:
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`mo_one_e_ints/ao_to_mo.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
subroutine mo_to_ao(A_mo,LDA_mo,A_ao,LDA_ao)
|
||||||
|
|
||||||
|
|
||||||
|
Transform A from the MO basis to the AO basis
|
||||||
|
|
||||||
|
$(S.C).A_{mo}.(S.C)^\dagger$
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`ao_num`
|
||||||
|
* :c:data:`s_mo_coef`
|
||||||
|
* :c:data:`mo_num`
|
||||||
|
|
||||||
|
Called by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`fock_matrix_ao`
|
||||||
|
|
||||||
|
Calls:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:func:`dgemm`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:function:: mo_to_ao_no_overlap:
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`mo_one_e_ints/ao_to_mo.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
subroutine mo_to_ao_no_overlap(A_mo,LDA_mo,A_ao,LDA_ao)
|
||||||
|
|
||||||
|
|
||||||
|
$C.A_{mo}.C^\dagger$
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`ao_num`
|
||||||
|
* :c:data:`mo_num`
|
||||||
|
* :c:data:`mo_coef`
|
||||||
|
|
||||||
|
Calls:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:func:`dgemm`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:function:: orthonormalize_mos:
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`mo_one_e_ints/orthonormalize.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
subroutine orthonormalize_mos
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`mo_label`
|
||||||
|
* :c:data:`ao_num`
|
||||||
|
* :c:data:`mo_overlap`
|
||||||
|
* :c:data:`mo_num`
|
||||||
|
* :c:data:`mo_coef`
|
||||||
|
|
||||||
|
Called by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:func:`save_ortho_mos`
|
||||||
|
* :c:func:`scf`
|
||||||
|
|
||||||
|
Calls:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:func:`ortho_lowdin`
|
||||||
|
|
||||||
|
Touches:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`mo_coef`
|
||||||
|
* :c:data:`mo_label`
|
||||||
|
|
1000
doc/_sources/modules/mo_two_e_erf_ints.rst.txt
Normal file
1000
doc/_sources/modules/mo_two_e_erf_ints.rst.txt
Normal file
File diff suppressed because it is too large
Load Diff
1312
doc/_sources/modules/mo_two_e_ints.rst.txt
Normal file
1312
doc/_sources/modules/mo_two_e_ints.rst.txt
Normal file
File diff suppressed because it is too large
Load Diff
291
doc/_sources/modules/mpi.rst.txt
Normal file
291
doc/_sources/modules/mpi.rst.txt
Normal file
@ -0,0 +1,291 @@
|
|||||||
|
.. _module_mpi:
|
||||||
|
|
||||||
|
.. program:: mpi
|
||||||
|
|
||||||
|
.. default-role:: option
|
||||||
|
|
||||||
|
===
|
||||||
|
mpi
|
||||||
|
===
|
||||||
|
|
||||||
|
Contains all the functions and providers for parallelization with |MPI|.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Providers
|
||||||
|
---------
|
||||||
|
|
||||||
|
.. c:var:: mpi_initialized
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`mpi/mpi.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
logical :: mpi_initialized
|
||||||
|
|
||||||
|
|
||||||
|
Always true. Initialized MPI
|
||||||
|
|
||||||
|
Needed by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`ezfio_filename`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: mpi_master
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`mpi/mpi.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
logical :: mpi_master
|
||||||
|
|
||||||
|
|
||||||
|
If true, rank is zero
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`mpi_rank`
|
||||||
|
|
||||||
|
Needed by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`ao_cartesian`
|
||||||
|
* :c:data:`ao_coef`
|
||||||
|
* :c:data:`ao_expo`
|
||||||
|
* :c:data:`ao_integrals_threshold`
|
||||||
|
* :c:data:`ao_md5`
|
||||||
|
* :c:data:`ao_nucl`
|
||||||
|
* :c:data:`ao_num`
|
||||||
|
* :c:data:`ao_power`
|
||||||
|
* :c:data:`ao_prim_num`
|
||||||
|
* :c:data:`ao_two_e_integrals_in_map`
|
||||||
|
* :c:data:`cas_bitmask`
|
||||||
|
* :c:data:`ci_energy`
|
||||||
|
* :c:data:`correlation_energy_ratio_max`
|
||||||
|
* :c:data:`data_energy_proj`
|
||||||
|
* :c:data:`data_energy_var`
|
||||||
|
* :c:data:`data_one_e_dm_alpha_mo`
|
||||||
|
* :c:data:`data_one_e_dm_beta_mo`
|
||||||
|
* :c:data:`davidson_sze_max`
|
||||||
|
* :c:data:`disk_access_nuclear_repulsion`
|
||||||
|
* :c:data:`disk_based_davidson`
|
||||||
|
* :c:data:`distributed_davidson`
|
||||||
|
* :c:data:`do_direct_integrals`
|
||||||
|
* :c:data:`do_pseudo`
|
||||||
|
* :c:data:`do_pt2`
|
||||||
|
* :c:data:`elec_alpha_num`
|
||||||
|
* :c:data:`elec_beta_num`
|
||||||
|
* :c:data:`element_name`
|
||||||
|
* :c:data:`energy_iterations`
|
||||||
|
* :c:data:`frozen_orb_scf`
|
||||||
|
* :c:data:`generators_bitmask`
|
||||||
|
* :c:data:`generators_bitmask_restart`
|
||||||
|
* :c:data:`io_ao_integrals_e_n`
|
||||||
|
* :c:data:`io_ao_integrals_kinetic`
|
||||||
|
* :c:data:`io_ao_integrals_overlap`
|
||||||
|
* :c:data:`io_ao_integrals_pseudo`
|
||||||
|
* :c:data:`io_ao_one_e_integrals`
|
||||||
|
* :c:data:`io_ao_two_e_integrals`
|
||||||
|
* :c:data:`io_ao_two_e_integrals_erf`
|
||||||
|
* :c:data:`io_mo_integrals_e_n`
|
||||||
|
* :c:data:`io_mo_integrals_kinetic`
|
||||||
|
* :c:data:`io_mo_integrals_pseudo`
|
||||||
|
* :c:data:`io_mo_one_e_integrals`
|
||||||
|
* :c:data:`io_mo_two_e_integrals`
|
||||||
|
* :c:data:`io_mo_two_e_integrals_erf`
|
||||||
|
* :c:data:`level_shift`
|
||||||
|
* :c:data:`max_dim_diis`
|
||||||
|
* :c:data:`mo_class`
|
||||||
|
* :c:data:`mo_coef`
|
||||||
|
* :c:data:`mo_guess_type`
|
||||||
|
* :c:data:`mo_integrals_threshold`
|
||||||
|
* :c:data:`mo_label`
|
||||||
|
* :c:data:`mo_num`
|
||||||
|
* :c:data:`mo_occ`
|
||||||
|
* :c:data:`mo_two_e_integrals_in_map`
|
||||||
|
* :c:data:`mu_erf`
|
||||||
|
* :c:data:`n_cas_bitmask`
|
||||||
|
* :c:data:`n_core_orb`
|
||||||
|
* :c:data:`n_det`
|
||||||
|
* :c:data:`n_det_generators`
|
||||||
|
* :c:data:`n_det_iterations`
|
||||||
|
* :c:data:`n_det_max`
|
||||||
|
* :c:data:`n_det_max_full`
|
||||||
|
* :c:data:`n_det_print_wf`
|
||||||
|
* :c:data:`n_det_selectors`
|
||||||
|
* :c:data:`n_generators_bitmask`
|
||||||
|
* :c:data:`n_generators_bitmask_restart`
|
||||||
|
* :c:data:`n_int`
|
||||||
|
* :c:data:`n_it_scf_max`
|
||||||
|
* :c:data:`n_iter`
|
||||||
|
* :c:data:`n_states`
|
||||||
|
* :c:data:`n_states_diag`
|
||||||
|
* :c:data:`no_ivvv_integrals`
|
||||||
|
* :c:data:`no_vvv_integrals`
|
||||||
|
* :c:data:`no_vvvv_integrals`
|
||||||
|
* :c:data:`nthreads_davidson`
|
||||||
|
* :c:data:`nthreads_pt2`
|
||||||
|
* :c:data:`nucl_charge`
|
||||||
|
* :c:data:`nucl_charge_remove`
|
||||||
|
* :c:data:`nucl_coord`
|
||||||
|
* :c:data:`nucl_label`
|
||||||
|
* :c:data:`nucl_num`
|
||||||
|
* :c:data:`nuclear_repulsion`
|
||||||
|
* :c:data:`only_expected_s2`
|
||||||
|
* :c:data:`pseudo_dz_k`
|
||||||
|
* :c:data:`pseudo_dz_kl`
|
||||||
|
* :c:data:`pseudo_grid_rmax`
|
||||||
|
* :c:data:`pseudo_grid_size`
|
||||||
|
* :c:data:`pseudo_klocmax`
|
||||||
|
* :c:data:`pseudo_kmax`
|
||||||
|
* :c:data:`pseudo_lmax`
|
||||||
|
* :c:data:`pseudo_n_k`
|
||||||
|
* :c:data:`pseudo_n_kl`
|
||||||
|
* :c:data:`pseudo_v_k`
|
||||||
|
* :c:data:`pseudo_v_kl`
|
||||||
|
* :c:data:`psi_cas`
|
||||||
|
* :c:data:`psi_coef`
|
||||||
|
* :c:data:`psi_coef_max`
|
||||||
|
* :c:data:`psi_det`
|
||||||
|
* :c:data:`psi_det_alpha_unique`
|
||||||
|
* :c:data:`psi_det_beta_unique`
|
||||||
|
* :c:data:`psi_det_size`
|
||||||
|
* :c:data:`pt2_e0_denominator`
|
||||||
|
* :c:data:`pt2_iterations`
|
||||||
|
* :c:data:`pt2_max`
|
||||||
|
* :c:data:`pt2_n_teeth`
|
||||||
|
* :c:data:`pt2_relative_error`
|
||||||
|
* :c:data:`qp_max_mem`
|
||||||
|
* :c:data:`read_wf`
|
||||||
|
* :c:data:`s2_eig`
|
||||||
|
* :c:data:`scf_algorithm`
|
||||||
|
* :c:data:`state_following`
|
||||||
|
* :c:data:`target_energy`
|
||||||
|
* :c:data:`thresh_scf`
|
||||||
|
* :c:data:`threshold_davidson`
|
||||||
|
* :c:data:`threshold_diis`
|
||||||
|
* :c:data:`threshold_generators`
|
||||||
|
* :c:data:`used_weight`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: mpi_rank
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`mpi/mpi.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
integer :: mpi_rank
|
||||||
|
integer :: mpi_size
|
||||||
|
|
||||||
|
|
||||||
|
Rank of MPI process and number of MPI processes
|
||||||
|
|
||||||
|
Needed by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`mpi_master`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: mpi_size
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`mpi/mpi.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
integer :: mpi_rank
|
||||||
|
integer :: mpi_size
|
||||||
|
|
||||||
|
|
||||||
|
Rank of MPI process and number of MPI processes
|
||||||
|
|
||||||
|
Needed by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`mpi_master`
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Subroutines / functions
|
||||||
|
-----------------------
|
||||||
|
|
||||||
|
.. c:function:: broadcast_chunks_double:
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`mpi/mpi.irp.f_template_97`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
subroutine broadcast_chunks_double(A, LDA)
|
||||||
|
|
||||||
|
|
||||||
|
Broadcast with chunks of ~2GB
|
||||||
|
|
||||||
|
|
||||||
|
.. c:function:: broadcast_chunks_integer:
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`mpi/mpi.irp.f_template_97`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
subroutine broadcast_chunks_integer(A, LDA)
|
||||||
|
|
||||||
|
|
||||||
|
Broadcast with chunks of ~2GB
|
||||||
|
|
||||||
|
|
||||||
|
.. c:function:: broadcast_chunks_integer8:
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`mpi/mpi.irp.f_template_97`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
subroutine broadcast_chunks_integer8(A, LDA)
|
||||||
|
|
||||||
|
|
||||||
|
Broadcast with chunks of ~2GB
|
||||||
|
|
||||||
|
|
||||||
|
.. c:function:: mpi_print:
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`mpi/mpi.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
subroutine mpi_print(string)
|
||||||
|
|
||||||
|
|
||||||
|
Print string to stdout if the MPI rank is zero.
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`mpi_master`
|
||||||
|
|
||||||
|
Called by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:func:`run_slave_main`
|
||||||
|
|
666
doc/_sources/modules/nuclei.rst.txt
Normal file
666
doc/_sources/modules/nuclei.rst.txt
Normal file
@ -0,0 +1,666 @@
|
|||||||
|
.. _module_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|)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Providers
|
||||||
|
---------
|
||||||
|
|
||||||
|
.. c:var:: center_of_mass
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`nuclei/nuclei.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision, allocatable :: center_of_mass (3)
|
||||||
|
|
||||||
|
|
||||||
|
Center of mass of the molecule
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`element_name`
|
||||||
|
* :c:data:`nucl_charge`
|
||||||
|
* :c:data:`nucl_coord`
|
||||||
|
* :c:data:`nucl_num`
|
||||||
|
|
||||||
|
Needed by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`inertia_tensor`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: element_mass
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`nuclei/nuclei.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
character*(4), allocatable :: element_name (0:127)
|
||||||
|
double precision, allocatable :: element_mass (0:127)
|
||||||
|
|
||||||
|
|
||||||
|
Array of the name of element, sorted by nuclear charge (integer)
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`mpi_master`
|
||||||
|
|
||||||
|
Needed by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`center_of_mass`
|
||||||
|
* :c:data:`inertia_tensor`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: element_name
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`nuclei/nuclei.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
character*(4), allocatable :: element_name (0:127)
|
||||||
|
double precision, allocatable :: element_mass (0:127)
|
||||||
|
|
||||||
|
|
||||||
|
Array of the name of element, sorted by nuclear charge (integer)
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`mpi_master`
|
||||||
|
|
||||||
|
Needed by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`center_of_mass`
|
||||||
|
* :c:data:`inertia_tensor`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: inertia_tensor
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`nuclei/inertia.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision, allocatable :: inertia_tensor (3,3)
|
||||||
|
|
||||||
|
|
||||||
|
Inertia tensor
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`center_of_mass`
|
||||||
|
* :c:data:`element_name`
|
||||||
|
* :c:data:`nucl_charge`
|
||||||
|
* :c:data:`nucl_coord`
|
||||||
|
* :c:data:`nucl_num`
|
||||||
|
|
||||||
|
Needed by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`inertia_tensor_eigenvectors`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: inertia_tensor_eigenvalues
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`nuclei/inertia.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision, allocatable :: inertia_tensor_eigenvectors (3,3)
|
||||||
|
double precision, allocatable :: inertia_tensor_eigenvalues (3)
|
||||||
|
|
||||||
|
|
||||||
|
Eigenvectors/eigenvalues of the inertia_tensor. Used to find normal orientation.
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`inertia_tensor`
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: inertia_tensor_eigenvectors
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`nuclei/inertia.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision, allocatable :: inertia_tensor_eigenvectors (3,3)
|
||||||
|
double precision, allocatable :: inertia_tensor_eigenvalues (3)
|
||||||
|
|
||||||
|
|
||||||
|
Eigenvectors/eigenvalues of the inertia_tensor. Used to find normal orientation.
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`inertia_tensor`
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: nucl_coord
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`nuclei/nuclei.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision, allocatable :: nucl_coord (nucl_num,3)
|
||||||
|
|
||||||
|
|
||||||
|
Nuclear coordinates in the format (:, {x,y,z})
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`ezfio_filename`
|
||||||
|
* :c:data:`mpi_master`
|
||||||
|
* :c:data:`nucl_charge`
|
||||||
|
* :c:data:`nucl_label`
|
||||||
|
* :c:data:`nucl_num`
|
||||||
|
* :c:data:`output_wall_time_0`
|
||||||
|
|
||||||
|
Needed by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`ao_deriv2_x`
|
||||||
|
* :c:data:`ao_deriv_1_x`
|
||||||
|
* :c:data:`ao_dipole_x`
|
||||||
|
* :c:data:`ao_integrals_n_e`
|
||||||
|
* :c:data:`ao_integrals_n_e_per_atom`
|
||||||
|
* :c:data:`ao_overlap`
|
||||||
|
* :c:data:`ao_overlap_abs`
|
||||||
|
* :c:data:`ao_pseudo_integrals_local`
|
||||||
|
* :c:data:`ao_pseudo_integrals_non_local`
|
||||||
|
* :c:data:`ao_spread_x`
|
||||||
|
* :c:data:`ao_two_e_integral_alpha`
|
||||||
|
* :c:data:`ao_two_e_integral_erf_schwartz`
|
||||||
|
* :c:data:`ao_two_e_integral_schwartz`
|
||||||
|
* :c:data:`ao_two_e_integrals_erf_in_map`
|
||||||
|
* :c:data:`ao_two_e_integrals_in_map`
|
||||||
|
* :c:data:`center_of_mass`
|
||||||
|
* :c:data:`inertia_tensor`
|
||||||
|
* :c:data:`nucl_coord_transp`
|
||||||
|
* :c:data:`nucl_dist_2`
|
||||||
|
* :c:data:`nuclear_repulsion`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: nucl_coord_transp
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`nuclei/nuclei.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision, allocatable :: nucl_coord_transp (3,nucl_num)
|
||||||
|
|
||||||
|
|
||||||
|
Transposed array of nucl_coord
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`nucl_coord`
|
||||||
|
* :c:data:`nucl_num`
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: nucl_dist
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`nuclei/nuclei.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision, allocatable :: nucl_dist_2 (nucl_num,nucl_num)
|
||||||
|
double precision, allocatable :: nucl_dist_vec_x (nucl_num,nucl_num)
|
||||||
|
double precision, allocatable :: nucl_dist_vec_y (nucl_num,nucl_num)
|
||||||
|
double precision, allocatable :: nucl_dist_vec_z (nucl_num,nucl_num)
|
||||||
|
double precision, allocatable :: nucl_dist (nucl_num,nucl_num)
|
||||||
|
|
||||||
|
|
||||||
|
nucl_dist : Nucleus-nucleus distances
|
||||||
|
nucl_dist_2 : Nucleus-nucleus distances squared
|
||||||
|
nucl_dist_vec : Nucleus-nucleus distances vectors
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`nucl_coord`
|
||||||
|
* :c:data:`nucl_num`
|
||||||
|
|
||||||
|
Needed by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`nucl_dist_inv`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: nucl_dist_2
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`nuclei/nuclei.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision, allocatable :: nucl_dist_2 (nucl_num,nucl_num)
|
||||||
|
double precision, allocatable :: nucl_dist_vec_x (nucl_num,nucl_num)
|
||||||
|
double precision, allocatable :: nucl_dist_vec_y (nucl_num,nucl_num)
|
||||||
|
double precision, allocatable :: nucl_dist_vec_z (nucl_num,nucl_num)
|
||||||
|
double precision, allocatable :: nucl_dist (nucl_num,nucl_num)
|
||||||
|
|
||||||
|
|
||||||
|
nucl_dist : Nucleus-nucleus distances
|
||||||
|
nucl_dist_2 : Nucleus-nucleus distances squared
|
||||||
|
nucl_dist_vec : Nucleus-nucleus distances vectors
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`nucl_coord`
|
||||||
|
* :c:data:`nucl_num`
|
||||||
|
|
||||||
|
Needed by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`nucl_dist_inv`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: nucl_dist_inv
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`nuclei/nuclei.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision, allocatable :: nucl_dist_inv (nucl_num,nucl_num)
|
||||||
|
|
||||||
|
|
||||||
|
Inverse of the distance between nucleus I and nucleus J
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`nucl_dist_2`
|
||||||
|
* :c:data:`nucl_num`
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: nucl_dist_vec_x
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`nuclei/nuclei.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision, allocatable :: nucl_dist_2 (nucl_num,nucl_num)
|
||||||
|
double precision, allocatable :: nucl_dist_vec_x (nucl_num,nucl_num)
|
||||||
|
double precision, allocatable :: nucl_dist_vec_y (nucl_num,nucl_num)
|
||||||
|
double precision, allocatable :: nucl_dist_vec_z (nucl_num,nucl_num)
|
||||||
|
double precision, allocatable :: nucl_dist (nucl_num,nucl_num)
|
||||||
|
|
||||||
|
|
||||||
|
nucl_dist : Nucleus-nucleus distances
|
||||||
|
nucl_dist_2 : Nucleus-nucleus distances squared
|
||||||
|
nucl_dist_vec : Nucleus-nucleus distances vectors
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`nucl_coord`
|
||||||
|
* :c:data:`nucl_num`
|
||||||
|
|
||||||
|
Needed by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`nucl_dist_inv`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: nucl_dist_vec_y
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`nuclei/nuclei.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision, allocatable :: nucl_dist_2 (nucl_num,nucl_num)
|
||||||
|
double precision, allocatable :: nucl_dist_vec_x (nucl_num,nucl_num)
|
||||||
|
double precision, allocatable :: nucl_dist_vec_y (nucl_num,nucl_num)
|
||||||
|
double precision, allocatable :: nucl_dist_vec_z (nucl_num,nucl_num)
|
||||||
|
double precision, allocatable :: nucl_dist (nucl_num,nucl_num)
|
||||||
|
|
||||||
|
|
||||||
|
nucl_dist : Nucleus-nucleus distances
|
||||||
|
nucl_dist_2 : Nucleus-nucleus distances squared
|
||||||
|
nucl_dist_vec : Nucleus-nucleus distances vectors
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`nucl_coord`
|
||||||
|
* :c:data:`nucl_num`
|
||||||
|
|
||||||
|
Needed by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`nucl_dist_inv`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: nucl_dist_vec_z
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`nuclei/nuclei.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision, allocatable :: nucl_dist_2 (nucl_num,nucl_num)
|
||||||
|
double precision, allocatable :: nucl_dist_vec_x (nucl_num,nucl_num)
|
||||||
|
double precision, allocatable :: nucl_dist_vec_y (nucl_num,nucl_num)
|
||||||
|
double precision, allocatable :: nucl_dist_vec_z (nucl_num,nucl_num)
|
||||||
|
double precision, allocatable :: nucl_dist (nucl_num,nucl_num)
|
||||||
|
|
||||||
|
|
||||||
|
nucl_dist : Nucleus-nucleus distances
|
||||||
|
nucl_dist_2 : Nucleus-nucleus distances squared
|
||||||
|
nucl_dist_vec : Nucleus-nucleus distances vectors
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`nucl_coord`
|
||||||
|
* :c:data:`nucl_num`
|
||||||
|
|
||||||
|
Needed by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`nucl_dist_inv`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: nuclear_repulsion
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`nuclei/nuclei.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision :: nuclear_repulsion
|
||||||
|
|
||||||
|
|
||||||
|
Nuclear repulsion energy
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`disk_access_nuclear_repulsion`
|
||||||
|
* :c:data:`mpi_master`
|
||||||
|
* :c:data:`nucl_charge`
|
||||||
|
* :c:data:`nucl_coord`
|
||||||
|
* :c:data:`nucl_num`
|
||||||
|
* :c:data:`output_wall_time_0`
|
||||||
|
|
||||||
|
Needed by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`ci_energy`
|
||||||
|
* :c:data:`core_energy`
|
||||||
|
* :c:data:`core_energy_erf`
|
||||||
|
* :c:data:`hf_energy`
|
||||||
|
* :c:data:`psi_energy_with_nucl_rep`
|
||||||
|
* :c:data:`pt2_e0_denominator`
|
||||||
|
* :c:data:`scf_energy`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: slater_bragg_radii
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`nuclei/atomic_radii.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision, allocatable :: slater_bragg_radii (100)
|
||||||
|
|
||||||
|
|
||||||
|
atomic radii in Angstrom defined in table I of JCP 41, 3199 (1964) Slater
|
||||||
|
execpt for the Hydrogen atom where we took the value of Becke (1988, JCP)
|
||||||
|
|
||||||
|
Needed by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`slater_bragg_radii_per_atom`
|
||||||
|
* :c:data:`slater_bragg_radii_ua`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: slater_bragg_radii_per_atom
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`nuclei/atomic_radii.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision, allocatable :: slater_bragg_radii_per_atom (nucl_num)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`nucl_charge`
|
||||||
|
* :c:data:`nucl_num`
|
||||||
|
* :c:data:`slater_bragg_radii`
|
||||||
|
|
||||||
|
Needed by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`slater_bragg_type_inter_distance`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: slater_bragg_radii_per_atom_ua
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`nuclei/atomic_radii.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision, allocatable :: slater_bragg_radii_per_atom_ua (nucl_num)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`nucl_charge`
|
||||||
|
* :c:data:`nucl_num`
|
||||||
|
* :c:data:`slater_bragg_radii_ua`
|
||||||
|
|
||||||
|
Needed by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`slater_bragg_type_inter_distance_ua`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: slater_bragg_radii_ua
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`nuclei/atomic_radii.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision, allocatable :: slater_bragg_radii_ua (100)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`slater_bragg_radii`
|
||||||
|
|
||||||
|
Needed by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`slater_bragg_radii_per_atom_ua`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: slater_bragg_type_inter_distance
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`nuclei/atomic_radii.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision, allocatable :: slater_bragg_type_inter_distance (nucl_num,nucl_num)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`nucl_num`
|
||||||
|
* :c:data:`slater_bragg_radii_per_atom`
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: slater_bragg_type_inter_distance_ua
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`nuclei/atomic_radii.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision, allocatable :: slater_bragg_type_inter_distance_ua (nucl_num,nucl_num)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`nucl_num`
|
||||||
|
* :c:data:`slater_bragg_radii_per_atom_ua`
|
||||||
|
|
||||||
|
|
999
doc/_sources/modules/perturbation.rst.txt
Normal file
999
doc/_sources/modules/perturbation.rst.txt
Normal file
@ -0,0 +1,999 @@
|
|||||||
|
.. _module_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.002
|
||||||
|
|
||||||
|
.. option:: correlation_energy_ratio_max
|
||||||
|
|
||||||
|
The selection process stops at a fixed correlation ratio (useful for getting same accuracy between molecules).
|
||||||
|
|
||||||
|
Defined as :math:`{E_{CI}-E_{HF}}/{E_{CI}+E_{PT2} - E_{HF}}`.
|
||||||
|
|
||||||
|
Default: 1.00
|
||||||
|
|
||||||
|
|
||||||
|
Providers
|
||||||
|
---------
|
||||||
|
|
||||||
|
.. c:function:: fill_h_apply_buffer_selection:
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`perturbation/selection.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
subroutine fill_H_apply_buffer_selection(n_selected,det_buffer,e_2_pert_buffer,coef_pert_buffer, &
|
||||||
|
N_st,Nint,iproc,select_max_out)
|
||||||
|
|
||||||
|
|
||||||
|
Fill the H_apply buffer with determiants for the selection
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`selection_criterion`
|
||||||
|
* :c:data:`h_apply_buffer_allocated`
|
||||||
|
* :c:data:`n_det`
|
||||||
|
* :c:data:`n_int`
|
||||||
|
|
||||||
|
Calls:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:func:`omp_set_lock`
|
||||||
|
* :c:func:`omp_unset_lock`
|
||||||
|
* :c:func:`resize_h_apply_buffer`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: h0_type
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`perturbation/h0_type.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
character*32 :: h0_type
|
||||||
|
|
||||||
|
|
||||||
|
Type of zeroth-order Hamiltonian
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`s2_eig`
|
||||||
|
|
||||||
|
Needed by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`pt2_e0_denominator`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: max_exc_pert
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`perturbation/exc_max.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
integer :: max_exc_pert
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: selection_criterion
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`perturbation/selection.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision :: selection_criterion
|
||||||
|
double precision :: selection_criterion_min
|
||||||
|
double precision :: selection_criterion_factor
|
||||||
|
|
||||||
|
|
||||||
|
Threshold to select determinants. Set by selection routines.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: selection_criterion_factor
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`perturbation/selection.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision :: selection_criterion
|
||||||
|
double precision :: selection_criterion_min
|
||||||
|
double precision :: selection_criterion_factor
|
||||||
|
|
||||||
|
|
||||||
|
Threshold to select determinants. Set by selection routines.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: selection_criterion_min
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`perturbation/selection.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision :: selection_criterion
|
||||||
|
double precision :: selection_criterion_min
|
||||||
|
double precision :: selection_criterion_factor
|
||||||
|
|
||||||
|
|
||||||
|
Threshold to select determinants. Set by selection routines.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: var_pt2_ratio
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`perturbation/var_pt2_ratio_provider.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision :: var_pt2_ratio
|
||||||
|
|
||||||
|
|
||||||
|
The selection process stops when the energy ratio variational/(variational+PT2)
|
||||||
|
is equal to var_pt2_ratio
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`correlation_energy_ratio_max`
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Subroutines / functions
|
||||||
|
-----------------------
|
||||||
|
|
||||||
|
.. c:function:: perturb_buffer_by_mono_dummy:
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`perturbation/perturbation.irp.f_shell_13`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
subroutine perturb_buffer_by_mono_dummy(i_generator,buffer,buffer_size,e_2_pert_buffer,coef_pert_buffer,sum_e_2_pert,sum_norm_pert,sum_H_pert_diag,N_st,Nint,key_mask,fock_diag_tmp,electronic_energy)
|
||||||
|
|
||||||
|
|
||||||
|
Applly pertubration ``dummy`` to the buffer of determinants generated in the H_apply
|
||||||
|
routine.
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`mo_num`
|
||||||
|
* :c:data:`psi_selectors`
|
||||||
|
* :c:data:`n_det`
|
||||||
|
* :c:data:`n_det_selectors`
|
||||||
|
* :c:data:`n_det_generators`
|
||||||
|
* :c:data:`psi_det_generators`
|
||||||
|
|
||||||
|
Calls:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:func:`create_minilist`
|
||||||
|
* :c:func:`create_minilist_find_previous`
|
||||||
|
* :c:func:`pt2_dummy`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:function:: perturb_buffer_by_mono_epstein_nesbet:
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`perturbation/perturbation.irp.f_shell_13`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
subroutine perturb_buffer_by_mono_epstein_nesbet(i_generator,buffer,buffer_size,e_2_pert_buffer,coef_pert_buffer,sum_e_2_pert,sum_norm_pert,sum_H_pert_diag,N_st,Nint,key_mask,fock_diag_tmp,electronic_energy)
|
||||||
|
|
||||||
|
|
||||||
|
Applly pertubration ``epstein_nesbet`` to the buffer of determinants generated in the H_apply
|
||||||
|
routine.
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`mo_num`
|
||||||
|
* :c:data:`psi_selectors`
|
||||||
|
* :c:data:`n_det`
|
||||||
|
* :c:data:`n_det_selectors`
|
||||||
|
* :c:data:`n_det_generators`
|
||||||
|
* :c:data:`psi_det_generators`
|
||||||
|
|
||||||
|
Calls:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:func:`create_minilist`
|
||||||
|
* :c:func:`create_minilist_find_previous`
|
||||||
|
* :c:func:`pt2_epstein_nesbet`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:function:: perturb_buffer_by_mono_epstein_nesbet_2x2:
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`perturbation/perturbation.irp.f_shell_13`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
subroutine perturb_buffer_by_mono_epstein_nesbet_2x2(i_generator,buffer,buffer_size,e_2_pert_buffer,coef_pert_buffer,sum_e_2_pert,sum_norm_pert,sum_H_pert_diag,N_st,Nint,key_mask,fock_diag_tmp,electronic_energy)
|
||||||
|
|
||||||
|
|
||||||
|
Applly pertubration ``epstein_nesbet_2x2`` to the buffer of determinants generated in the H_apply
|
||||||
|
routine.
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`mo_num`
|
||||||
|
* :c:data:`psi_selectors`
|
||||||
|
* :c:data:`n_det`
|
||||||
|
* :c:data:`n_det_selectors`
|
||||||
|
* :c:data:`n_det_generators`
|
||||||
|
* :c:data:`psi_det_generators`
|
||||||
|
|
||||||
|
Calls:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:func:`create_minilist`
|
||||||
|
* :c:func:`create_minilist_find_previous`
|
||||||
|
* :c:func:`pt2_epstein_nesbet_2x2`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:function:: perturb_buffer_by_mono_epstein_nesbet_2x2_no_ci_diag:
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`perturbation/perturbation.irp.f_shell_13`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
subroutine perturb_buffer_by_mono_epstein_nesbet_2x2_no_ci_diag(i_generator,buffer,buffer_size,e_2_pert_buffer,coef_pert_buffer,sum_e_2_pert,sum_norm_pert,sum_H_pert_diag,N_st,Nint,key_mask,fock_diag_tmp,electronic_energy)
|
||||||
|
|
||||||
|
|
||||||
|
Applly pertubration ``epstein_nesbet_2x2_no_ci_diag`` to the buffer of determinants generated in the H_apply
|
||||||
|
routine.
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`mo_num`
|
||||||
|
* :c:data:`psi_selectors`
|
||||||
|
* :c:data:`n_det`
|
||||||
|
* :c:data:`n_det_selectors`
|
||||||
|
* :c:data:`n_det_generators`
|
||||||
|
* :c:data:`psi_det_generators`
|
||||||
|
|
||||||
|
Calls:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:func:`create_minilist`
|
||||||
|
* :c:func:`create_minilist_find_previous`
|
||||||
|
* :c:func:`pt2_epstein_nesbet_2x2_no_ci_diag`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:function:: perturb_buffer_by_mono_moller_plesset:
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`perturbation/perturbation.irp.f_shell_13`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
subroutine perturb_buffer_by_mono_moller_plesset(i_generator,buffer,buffer_size,e_2_pert_buffer,coef_pert_buffer,sum_e_2_pert,sum_norm_pert,sum_H_pert_diag,N_st,Nint,key_mask,fock_diag_tmp,electronic_energy)
|
||||||
|
|
||||||
|
|
||||||
|
Applly pertubration ``moller_plesset`` to the buffer of determinants generated in the H_apply
|
||||||
|
routine.
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`mo_num`
|
||||||
|
* :c:data:`psi_selectors`
|
||||||
|
* :c:data:`n_det`
|
||||||
|
* :c:data:`n_det_selectors`
|
||||||
|
* :c:data:`n_det_generators`
|
||||||
|
* :c:data:`psi_det_generators`
|
||||||
|
|
||||||
|
Calls:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:func:`create_minilist`
|
||||||
|
* :c:func:`create_minilist_find_previous`
|
||||||
|
* :c:func:`pt2_moller_plesset`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:function:: perturb_buffer_by_mono_qdpt:
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`perturbation/perturbation.irp.f_shell_13`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
subroutine perturb_buffer_by_mono_qdpt(i_generator,buffer,buffer_size,e_2_pert_buffer,coef_pert_buffer,sum_e_2_pert,sum_norm_pert,sum_H_pert_diag,N_st,Nint,key_mask,fock_diag_tmp,electronic_energy)
|
||||||
|
|
||||||
|
|
||||||
|
Applly pertubration ``qdpt`` to the buffer of determinants generated in the H_apply
|
||||||
|
routine.
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`mo_num`
|
||||||
|
* :c:data:`psi_selectors`
|
||||||
|
* :c:data:`n_det`
|
||||||
|
* :c:data:`n_det_selectors`
|
||||||
|
* :c:data:`n_det_generators`
|
||||||
|
* :c:data:`psi_det_generators`
|
||||||
|
|
||||||
|
Calls:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:func:`create_minilist`
|
||||||
|
* :c:func:`create_minilist_find_previous`
|
||||||
|
* :c:func:`pt2_qdpt`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:function:: perturb_buffer_dummy:
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`perturbation/perturbation.irp.f_shell_13`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
subroutine perturb_buffer_dummy(i_generator,buffer,buffer_size,e_2_pert_buffer,coef_pert_buffer,sum_e_2_pert,sum_norm_pert,sum_H_pert_diag,N_st,Nint,key_mask,fock_diag_tmp,electronic_energy)
|
||||||
|
|
||||||
|
|
||||||
|
Applly pertubration ``dummy`` to the buffer of determinants generated in the H_apply
|
||||||
|
routine.
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`n_det_selectors`
|
||||||
|
* :c:data:`n_det_generators`
|
||||||
|
* :c:data:`psi_selectors`
|
||||||
|
* :c:data:`psi_det_generators`
|
||||||
|
* :c:data:`mo_num`
|
||||||
|
|
||||||
|
Calls:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:func:`create_microlist`
|
||||||
|
* :c:func:`create_minilist`
|
||||||
|
* :c:func:`create_minilist_find_previous`
|
||||||
|
* :c:func:`getmobiles`
|
||||||
|
* :c:func:`pt2_dummy`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:function:: perturb_buffer_epstein_nesbet:
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`perturbation/perturbation.irp.f_shell_13`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
subroutine perturb_buffer_epstein_nesbet(i_generator,buffer,buffer_size,e_2_pert_buffer,coef_pert_buffer,sum_e_2_pert,sum_norm_pert,sum_H_pert_diag,N_st,Nint,key_mask,fock_diag_tmp,electronic_energy)
|
||||||
|
|
||||||
|
|
||||||
|
Applly pertubration ``epstein_nesbet`` to the buffer of determinants generated in the H_apply
|
||||||
|
routine.
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`n_det_selectors`
|
||||||
|
* :c:data:`n_det_generators`
|
||||||
|
* :c:data:`psi_selectors`
|
||||||
|
* :c:data:`psi_det_generators`
|
||||||
|
* :c:data:`mo_num`
|
||||||
|
|
||||||
|
Calls:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:func:`create_microlist`
|
||||||
|
* :c:func:`create_minilist`
|
||||||
|
* :c:func:`create_minilist_find_previous`
|
||||||
|
* :c:func:`getmobiles`
|
||||||
|
* :c:func:`pt2_epstein_nesbet`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:function:: perturb_buffer_epstein_nesbet_2x2:
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`perturbation/perturbation.irp.f_shell_13`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
subroutine perturb_buffer_epstein_nesbet_2x2(i_generator,buffer,buffer_size,e_2_pert_buffer,coef_pert_buffer,sum_e_2_pert,sum_norm_pert,sum_H_pert_diag,N_st,Nint,key_mask,fock_diag_tmp,electronic_energy)
|
||||||
|
|
||||||
|
|
||||||
|
Applly pertubration ``epstein_nesbet_2x2`` to the buffer of determinants generated in the H_apply
|
||||||
|
routine.
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`n_det_selectors`
|
||||||
|
* :c:data:`n_det_generators`
|
||||||
|
* :c:data:`psi_selectors`
|
||||||
|
* :c:data:`psi_det_generators`
|
||||||
|
* :c:data:`mo_num`
|
||||||
|
|
||||||
|
Calls:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:func:`create_microlist`
|
||||||
|
* :c:func:`create_minilist`
|
||||||
|
* :c:func:`create_minilist_find_previous`
|
||||||
|
* :c:func:`getmobiles`
|
||||||
|
* :c:func:`pt2_epstein_nesbet_2x2`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:function:: perturb_buffer_epstein_nesbet_2x2_no_ci_diag:
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`perturbation/perturbation.irp.f_shell_13`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
subroutine perturb_buffer_epstein_nesbet_2x2_no_ci_diag(i_generator,buffer,buffer_size,e_2_pert_buffer,coef_pert_buffer,sum_e_2_pert,sum_norm_pert,sum_H_pert_diag,N_st,Nint,key_mask,fock_diag_tmp,electronic_energy)
|
||||||
|
|
||||||
|
|
||||||
|
Applly pertubration ``epstein_nesbet_2x2_no_ci_diag`` to the buffer of determinants generated in the H_apply
|
||||||
|
routine.
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`n_det_selectors`
|
||||||
|
* :c:data:`n_det_generators`
|
||||||
|
* :c:data:`psi_selectors`
|
||||||
|
* :c:data:`psi_det_generators`
|
||||||
|
* :c:data:`mo_num`
|
||||||
|
|
||||||
|
Calls:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:func:`create_microlist`
|
||||||
|
* :c:func:`create_minilist`
|
||||||
|
* :c:func:`create_minilist_find_previous`
|
||||||
|
* :c:func:`getmobiles`
|
||||||
|
* :c:func:`pt2_epstein_nesbet_2x2_no_ci_diag`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:function:: perturb_buffer_moller_plesset:
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`perturbation/perturbation.irp.f_shell_13`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
subroutine perturb_buffer_moller_plesset(i_generator,buffer,buffer_size,e_2_pert_buffer,coef_pert_buffer,sum_e_2_pert,sum_norm_pert,sum_H_pert_diag,N_st,Nint,key_mask,fock_diag_tmp,electronic_energy)
|
||||||
|
|
||||||
|
|
||||||
|
Applly pertubration ``moller_plesset`` to the buffer of determinants generated in the H_apply
|
||||||
|
routine.
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`n_det_selectors`
|
||||||
|
* :c:data:`n_det_generators`
|
||||||
|
* :c:data:`psi_selectors`
|
||||||
|
* :c:data:`psi_det_generators`
|
||||||
|
* :c:data:`mo_num`
|
||||||
|
|
||||||
|
Calls:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:func:`create_microlist`
|
||||||
|
* :c:func:`create_minilist`
|
||||||
|
* :c:func:`create_minilist_find_previous`
|
||||||
|
* :c:func:`getmobiles`
|
||||||
|
* :c:func:`pt2_moller_plesset`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:function:: perturb_buffer_qdpt:
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`perturbation/perturbation.irp.f_shell_13`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
subroutine perturb_buffer_qdpt(i_generator,buffer,buffer_size,e_2_pert_buffer,coef_pert_buffer,sum_e_2_pert,sum_norm_pert,sum_H_pert_diag,N_st,Nint,key_mask,fock_diag_tmp,electronic_energy)
|
||||||
|
|
||||||
|
|
||||||
|
Applly pertubration ``qdpt`` to the buffer of determinants generated in the H_apply
|
||||||
|
routine.
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`n_det_selectors`
|
||||||
|
* :c:data:`n_det_generators`
|
||||||
|
* :c:data:`psi_selectors`
|
||||||
|
* :c:data:`psi_det_generators`
|
||||||
|
* :c:data:`mo_num`
|
||||||
|
|
||||||
|
Calls:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:func:`create_microlist`
|
||||||
|
* :c:func:`create_minilist`
|
||||||
|
* :c:func:`create_minilist_find_previous`
|
||||||
|
* :c:func:`getmobiles`
|
||||||
|
* :c:func:`pt2_qdpt`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:function:: pt2_dummy:
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`perturbation/pt2_equations.irp.f_template_305`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
subroutine pt2_dummy (electronic_energy,det_ref,det_pert,fock_diag_tmp,c_pert,e_2_pert,H_pert_diag,Nint,ndet,N_st,minilist,idx_minilist,N_minilist)
|
||||||
|
|
||||||
|
|
||||||
|
Dummy perturbation to add all connected determinants.
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`n_det_selectors`
|
||||||
|
* :c:data:`selection_criterion`
|
||||||
|
* :c:data:`psi_selectors`
|
||||||
|
* :c:data:`psi_selectors_size`
|
||||||
|
* :c:data:`mo_num`
|
||||||
|
|
||||||
|
Called by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:func:`perturb_buffer_by_mono_dummy`
|
||||||
|
* :c:func:`perturb_buffer_dummy`
|
||||||
|
|
||||||
|
Calls:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:func:`i_h_psi_minilist`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:function:: pt2_epstein_nesbet:
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`perturbation/pt2_equations.irp.f_template_305`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
subroutine pt2_epstein_nesbet (electronic_energy,det_ref,det_pert,fock_diag_tmp,c_pert,e_2_pert,H_pert_diag,Nint,ndet,N_st,minilist,idx_minilist,N_minilist)
|
||||||
|
|
||||||
|
|
||||||
|
Compute the standard Epstein-Nesbet perturbative first order coefficient and
|
||||||
|
second order energetic contribution for the various N_st states.
|
||||||
|
|
||||||
|
`c_pert(i)` = $\frac{\langle i|H|\alpha \rangle}{ E_n - \langle \alpha|H|\alpha \rangle }$.
|
||||||
|
|
||||||
|
`e_2_pert(i)` = $\frac{\langle i|H|\alpha \rangle^2}{ E_n - \langle \alpha|H|\alpha \rangle }$.
|
||||||
|
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`n_det_selectors`
|
||||||
|
* :c:data:`selection_criterion`
|
||||||
|
* :c:data:`psi_selectors`
|
||||||
|
* :c:data:`psi_selectors_size`
|
||||||
|
* :c:data:`mo_num`
|
||||||
|
|
||||||
|
Called by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:func:`perturb_buffer_by_mono_epstein_nesbet`
|
||||||
|
* :c:func:`perturb_buffer_epstein_nesbet`
|
||||||
|
|
||||||
|
Calls:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:func:`i_h_psi_minilist`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:function:: pt2_epstein_nesbet_2x2:
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`perturbation/pt2_equations.irp.f_template_305`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
subroutine pt2_epstein_nesbet_2x2 (electronic_energy,det_ref,det_pert,fock_diag_tmp,c_pert,e_2_pert,H_pert_diag,Nint,ndet,N_st,minilist,idx_minilist,N_minilist)
|
||||||
|
|
||||||
|
|
||||||
|
Computes the Epstein-Nesbet 2x2 diagonalization coefficient and energetic contribution
|
||||||
|
for the various N_st states.
|
||||||
|
|
||||||
|
`e_2_pert(i)` = $\frac{1}{2} ( \langle \alpha|H|\alpha \rangle - E_n) - \sqrt{ (\langle \alpha|H|\alpha \rangle - E_n)^2 + 4 \langle i|H|\alpha \rangle^2 }$.
|
||||||
|
|
||||||
|
`c_pert(i)` = `e_2_pert(i)` $\times \frac{1}{ \langle i|H|\alpha \rangle}$.
|
||||||
|
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`n_det_selectors`
|
||||||
|
* :c:data:`psi_selectors`
|
||||||
|
* :c:data:`psi_selectors_size`
|
||||||
|
* :c:data:`mo_num`
|
||||||
|
|
||||||
|
Called by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:func:`perturb_buffer_by_mono_epstein_nesbet_2x2`
|
||||||
|
* :c:func:`perturb_buffer_epstein_nesbet_2x2`
|
||||||
|
|
||||||
|
Calls:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:func:`i_h_psi`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:function:: pt2_epstein_nesbet_2x2_no_ci_diag:
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`perturbation/pt2_equations.irp.f_template_305`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
subroutine pt2_epstein_nesbet_2x2_no_ci_diag(electronic_energy,det_ref,det_pert,fock_diag_tmp,c_pert,e_2_pert,H_pert_diag,Nint,ndet,N_st,minilist,idx_minilist,N_minilist)
|
||||||
|
|
||||||
|
|
||||||
|
compute the Epstein-Nesbet 2x2 diagonalization coefficient and energetic contribution
|
||||||
|
|
||||||
|
for the various N_st states.
|
||||||
|
|
||||||
|
e_2_pert(i) = 0.5 * (( <det_pert|H|det_pert> - E(i) ) - sqrt( ( <det_pert|H|det_pert> - E(i)) ^2 + 4 <psi(i)|H|det_pert>^2 )
|
||||||
|
|
||||||
|
c_pert(i) = e_2_pert(i)/ <psi(i)|H|det_pert>
|
||||||
|
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`n_det_selectors`
|
||||||
|
* :c:data:`psi_selectors`
|
||||||
|
* :c:data:`psi_selectors_size`
|
||||||
|
* :c:data:`psi_energy`
|
||||||
|
* :c:data:`mo_num`
|
||||||
|
|
||||||
|
Called by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:func:`perturb_buffer_by_mono_epstein_nesbet_2x2_no_ci_diag`
|
||||||
|
* :c:func:`perturb_buffer_epstein_nesbet_2x2_no_ci_diag`
|
||||||
|
|
||||||
|
Calls:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:func:`i_h_psi`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:function:: pt2_moller_plesset:
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`perturbation/pt2_equations.irp.f_template_305`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
subroutine pt2_moller_plesset (electronic_energy,det_ref,det_pert,fock_diag_tmp,c_pert,e_2_pert,H_pert_diag,Nint,ndet,N_st,minilist,idx_minilist,N_minilist)
|
||||||
|
|
||||||
|
|
||||||
|
Computes the standard Moller-Plesset perturbative first order coefficient and second
|
||||||
|
order energetic contribution for the various N_st states.
|
||||||
|
|
||||||
|
`c_pert(i)` = $\frac{\langle i|H|\alpha \rangle}{\text{difference of orbital energies}}$.
|
||||||
|
|
||||||
|
`e_2_pert(i)` = $\frac{\langle i|H|\alpha \rangle^2}{\text{difference of orbital energies}}$.
|
||||||
|
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`ref_bitmask`
|
||||||
|
* :c:data:`psi_selectors_size`
|
||||||
|
* :c:data:`psi_selectors`
|
||||||
|
* :c:data:`mo_num`
|
||||||
|
* :c:data:`n_det_selectors`
|
||||||
|
* :c:data:`fock_matrix_mo`
|
||||||
|
|
||||||
|
Called by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:func:`perturb_buffer_by_mono_moller_plesset`
|
||||||
|
* :c:func:`perturb_buffer_moller_plesset`
|
||||||
|
|
||||||
|
Calls:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:func:`decode_exc`
|
||||||
|
* :c:func:`get_excitation`
|
||||||
|
* :c:func:`i_h_psi_minilist`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:function:: pt2_qdpt:
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`perturbation/pt2_equations.irp.f_template_305`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
subroutine pt2_qdpt (electronic_energy,det_ref,det_pert,fock_diag_tmp,c_pert,e_2_pert,H_pert_diag,Nint,ndet,N_st,minilist,idx_minilist,N_minilist)
|
||||||
|
|
||||||
|
|
||||||
|
Computes the QDPT first order coefficient and second order energetic contribution
|
||||||
|
for the various N_st states.
|
||||||
|
|
||||||
|
`c_pert(i)` = $\frac{\langle i|H|\alpha \rangle}{\langle i|H|i \rangle - \langle \alpha|H|\alpha \rangle}$.
|
||||||
|
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`n_det_selectors`
|
||||||
|
* :c:data:`selection_criterion`
|
||||||
|
* :c:data:`psi_selectors`
|
||||||
|
* :c:data:`psi_selectors_size`
|
||||||
|
* :c:data:`mo_num`
|
||||||
|
|
||||||
|
Called by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:func:`perturb_buffer_by_mono_qdpt`
|
||||||
|
* :c:func:`perturb_buffer_qdpt`
|
||||||
|
|
||||||
|
Calls:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:func:`get_excitation_degree`
|
||||||
|
* :c:func:`i_h_j`
|
||||||
|
* :c:func:`i_h_psi_minilist`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:function:: remove_small_contributions:
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`perturbation/selection.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
subroutine remove_small_contributions
|
||||||
|
|
||||||
|
|
||||||
|
Remove determinants with small contributions. N_states is assumed to be
|
||||||
|
provided.
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`psi_coef`
|
||||||
|
* :c:data:`selection_criterion`
|
||||||
|
* :c:data:`n_states`
|
||||||
|
* :c:data:`n_det`
|
||||||
|
* :c:data:`psi_det_size`
|
||||||
|
* :c:data:`n_det_generators`
|
||||||
|
* :c:data:`n_int`
|
||||||
|
* :c:data:`psi_det_sorted`
|
||||||
|
* :c:data:`psi_det`
|
||||||
|
* :c:data:`psi_det_sorted`
|
||||||
|
|
||||||
|
Calls:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:func:`diagonalize_ci`
|
||||||
|
* :c:func:`i_h_psi`
|
||||||
|
* :c:func:`write_int`
|
||||||
|
|
||||||
|
Touches:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`ci_electronic_energy`
|
||||||
|
* :c:data:`ci_electronic_energy`
|
||||||
|
* :c:data:`ci_energy`
|
||||||
|
* :c:data:`ci_electronic_energy`
|
||||||
|
* :c:data:`n_det`
|
||||||
|
* :c:data:`psi_coef`
|
||||||
|
* :c:data:`psi_det`
|
||||||
|
|
94
doc/_sources/modules/pseudo.rst.txt
Normal file
94
doc/_sources/modules/pseudo.rst.txt
Normal file
@ -0,0 +1,94 @@
|
|||||||
|
.. _module_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
|
||||||
|
|
14
doc/_sources/modules/psiref_cas.rst.txt
Normal file
14
doc/_sources/modules/psiref_cas.rst.txt
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
.. _module_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|.
|
||||||
|
|
||||||
|
|
16
doc/_sources/modules/psiref_utils.rst.txt
Normal file
16
doc/_sources/modules/psiref_utils.rst.txt
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
.. _module_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.
|
||||||
|
|
||||||
|
|
||||||
|
|
795
doc/_sources/modules/scf_utils.rst.txt
Normal file
795
doc/_sources/modules/scf_utils.rst.txt
Normal file
@ -0,0 +1,795 @@
|
|||||||
|
.. _module_scf_utils:
|
||||||
|
|
||||||
|
.. program:: scf_utils
|
||||||
|
|
||||||
|
.. default-role:: option
|
||||||
|
|
||||||
|
=========
|
||||||
|
scf_utils
|
||||||
|
=========
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
The scf_utils module is an abstract module which contains the basics to perform *Restricted* SCF calculations (the
|
||||||
|
spatial part of the |MOs| is common for alpha and beta spinorbitals) based on a single-determinant wave function.
|
||||||
|
|
||||||
|
This module does not produce any executable *and must not do*, but instead it contains everything one needs to perform an orbital optimization based on an Fock matrix.
|
||||||
|
The ``scf_utils`` module is meant to be included in the :file:`NEED` of the various single determinant SCF procedures, such as ``hartree_fock`` or ``kohn_sham``, where a specific definition of the Fock matrix is given (see :file:`hartree_fock fock_matrix_hf.irp.f` for an example).
|
||||||
|
|
||||||
|
All SCF programs perform the following actions:
|
||||||
|
|
||||||
|
|
||||||
|
#. 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 based on the definition of the Fock matrix
|
||||||
|
|
||||||
|
|
||||||
|
The main keywords/options are:
|
||||||
|
|
||||||
|
* :option:`scf_utils thresh_scf`
|
||||||
|
* :option:`scf_utils level_shift`
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
.. 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:: frozen_orb_scf
|
||||||
|
|
||||||
|
If true, leave untouched all the orbitals defined as core and optimize all the orbitals defined as active with qp_set_mo_class
|
||||||
|
|
||||||
|
Default: False
|
||||||
|
|
||||||
|
|
||||||
|
Providers
|
||||||
|
---------
|
||||||
|
|
||||||
|
.. c:var:: eigenvalues_fock_matrix_ao
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`scf_utils/diis.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision, allocatable :: eigenvalues_fock_matrix_ao (AO_num)
|
||||||
|
double precision, allocatable :: eigenvectors_fock_matrix_ao (AO_num,AO_num)
|
||||||
|
|
||||||
|
|
||||||
|
Eigenvalues and eigenvectors of the Fock matrix over the AO basis
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`ao_num`
|
||||||
|
* :c:data:`fock_matrix_ao`
|
||||||
|
* :c:data:`s_half_inv`
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: eigenvectors_fock_matrix_ao
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`scf_utils/diis.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision, allocatable :: eigenvalues_fock_matrix_ao (AO_num)
|
||||||
|
double precision, allocatable :: eigenvectors_fock_matrix_ao (AO_num,AO_num)
|
||||||
|
|
||||||
|
|
||||||
|
Eigenvalues and eigenvectors of the Fock matrix over the AO basis
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`ao_num`
|
||||||
|
* :c:data:`fock_matrix_ao`
|
||||||
|
* :c:data:`s_half_inv`
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: eigenvectors_fock_matrix_mo
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`scf_utils/diagonalize_fock.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision, allocatable :: eigenvectors_fock_matrix_mo (ao_num,mo_num)
|
||||||
|
|
||||||
|
|
||||||
|
Eigenvector of the Fock matrix in the MO basis obtained with level shift.
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`ao_num`
|
||||||
|
* :c:data:`elec_alpha_num`
|
||||||
|
* :c:data:`elec_beta_num`
|
||||||
|
* :c:data:`fock_matrix_mo`
|
||||||
|
* :c:data:`frozen_orb_scf`
|
||||||
|
* :c:data:`level_shift`
|
||||||
|
* :c:data:`list_inact`
|
||||||
|
* :c:data:`mo_coef`
|
||||||
|
* :c:data:`mo_num`
|
||||||
|
* :c:data:`n_core_orb`
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.. c:function:: extrapolate_fock_matrix:
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`scf_utils/roothaan_hall_scf.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
subroutine extrapolate_Fock_matrix( &
|
||||||
|
error_matrix_DIIS,Fock_matrix_DIIS, &
|
||||||
|
Fock_matrix_AO_,size_Fock_matrix_AO, &
|
||||||
|
iteration_SCF,dim_DIIS &
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
Compute the extrapolated Fock matrix using the DIIS procedure
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`max_dim_diis`
|
||||||
|
* :c:data:`ao_num`
|
||||||
|
|
||||||
|
Called by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:func:`roothaan_hall_scf`
|
||||||
|
|
||||||
|
Calls:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:func:`dgemm`
|
||||||
|
* :c:func:`dsysvx`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: fock_matrix_ao
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`scf_utils/fock_matrix.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision, allocatable :: fock_matrix_ao (ao_num,ao_num)
|
||||||
|
|
||||||
|
|
||||||
|
Fock matrix in AO basis set
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`ao_num`
|
||||||
|
* :c:data:`elec_alpha_num`
|
||||||
|
* :c:data:`elec_beta_num`
|
||||||
|
* :c:data:`fock_matrix_ao_alpha`
|
||||||
|
* :c:data:`fock_matrix_mo`
|
||||||
|
* :c:data:`frozen_orb_scf`
|
||||||
|
* :c:data:`level_shift`
|
||||||
|
* :c:data:`mo_num`
|
||||||
|
* :c:data:`s_mo_coef`
|
||||||
|
|
||||||
|
Needed by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`eigenvalues_fock_matrix_ao`
|
||||||
|
* :c:data:`fps_spf_matrix_ao`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: fock_matrix_diag_mo
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`scf_utils/fock_matrix.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision, allocatable :: fock_matrix_mo (mo_num,mo_num)
|
||||||
|
double precision, allocatable :: fock_matrix_diag_mo (mo_num)
|
||||||
|
|
||||||
|
|
||||||
|
Fock matrix on the MO basis.
|
||||||
|
For open shells, the ROHF Fock Matrix is ::
|
||||||
|
|
||||||
|
| F-K | F + K/2 | F |
|
||||||
|
|---------------------------------|
|
||||||
|
| F + K/2 | F | F - K/2 |
|
||||||
|
|---------------------------------|
|
||||||
|
| F | F - K/2 | F + K |
|
||||||
|
|
||||||
|
|
||||||
|
F = 1/2 (Fa + Fb)
|
||||||
|
|
||||||
|
K = Fb - Fa
|
||||||
|
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`elec_alpha_num`
|
||||||
|
* :c:data:`elec_beta_num`
|
||||||
|
* :c:data:`fock_matrix_mo_alpha`
|
||||||
|
* :c:data:`fock_matrix_mo_beta`
|
||||||
|
* :c:data:`frozen_orb_scf`
|
||||||
|
* :c:data:`list_inact`
|
||||||
|
* :c:data:`mo_num`
|
||||||
|
* :c:data:`n_core_orb`
|
||||||
|
|
||||||
|
Needed by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`eigenvectors_fock_matrix_mo`
|
||||||
|
* :c:data:`fock_matrix_ao`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: fock_matrix_mo
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`scf_utils/fock_matrix.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision, allocatable :: fock_matrix_mo (mo_num,mo_num)
|
||||||
|
double precision, allocatable :: fock_matrix_diag_mo (mo_num)
|
||||||
|
|
||||||
|
|
||||||
|
Fock matrix on the MO basis.
|
||||||
|
For open shells, the ROHF Fock Matrix is ::
|
||||||
|
|
||||||
|
| F-K | F + K/2 | F |
|
||||||
|
|---------------------------------|
|
||||||
|
| F + K/2 | F | F - K/2 |
|
||||||
|
|---------------------------------|
|
||||||
|
| F | F - K/2 | F + K |
|
||||||
|
|
||||||
|
|
||||||
|
F = 1/2 (Fa + Fb)
|
||||||
|
|
||||||
|
K = Fb - Fa
|
||||||
|
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`elec_alpha_num`
|
||||||
|
* :c:data:`elec_beta_num`
|
||||||
|
* :c:data:`fock_matrix_mo_alpha`
|
||||||
|
* :c:data:`fock_matrix_mo_beta`
|
||||||
|
* :c:data:`frozen_orb_scf`
|
||||||
|
* :c:data:`list_inact`
|
||||||
|
* :c:data:`mo_num`
|
||||||
|
* :c:data:`n_core_orb`
|
||||||
|
|
||||||
|
Needed by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`eigenvectors_fock_matrix_mo`
|
||||||
|
* :c:data:`fock_matrix_ao`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: fock_matrix_mo_alpha
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`scf_utils/fock_matrix.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision, allocatable :: fock_matrix_mo_alpha (mo_num,mo_num)
|
||||||
|
|
||||||
|
|
||||||
|
Fock matrix on the MO basis
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`ao_num`
|
||||||
|
* :c:data:`fock_matrix_ao_alpha`
|
||||||
|
* :c:data:`mo_coef`
|
||||||
|
* :c:data:`mo_num`
|
||||||
|
|
||||||
|
Needed by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`fock_matrix_mo`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: fock_matrix_mo_beta
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`scf_utils/fock_matrix.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision, allocatable :: fock_matrix_mo_beta (mo_num,mo_num)
|
||||||
|
|
||||||
|
|
||||||
|
Fock matrix on the MO basis
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`ao_num`
|
||||||
|
* :c:data:`fock_matrix_ao_alpha`
|
||||||
|
* :c:data:`mo_coef`
|
||||||
|
* :c:data:`mo_num`
|
||||||
|
|
||||||
|
Needed by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`fock_matrix_mo`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: fps_spf_matrix_ao
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`scf_utils/diis.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision, allocatable :: fps_spf_matrix_ao (AO_num,AO_num)
|
||||||
|
|
||||||
|
|
||||||
|
Commutator FPS - SPF
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`ao_num`
|
||||||
|
* :c:data:`ao_overlap`
|
||||||
|
* :c:data:`fock_matrix_ao`
|
||||||
|
* :c:data:`scf_density_matrix_ao`
|
||||||
|
|
||||||
|
Needed by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`fps_spf_matrix_mo`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: fps_spf_matrix_mo
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`scf_utils/diis.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision, allocatable :: fps_spf_matrix_mo (mo_num,mo_num)
|
||||||
|
|
||||||
|
|
||||||
|
Commutator FPS - SPF in MO basis
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`ao_num`
|
||||||
|
* :c:data:`fps_spf_matrix_ao`
|
||||||
|
* :c:data:`mo_coef`
|
||||||
|
* :c:data:`mo_num`
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: scf_density_matrix_ao
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`scf_utils/scf_density_matrix_ao.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision, allocatable :: scf_density_matrix_ao (ao_num,ao_num)
|
||||||
|
|
||||||
|
|
||||||
|
S^{-1}.P.S^{-1} where P = C.C^t
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`ao_num`
|
||||||
|
* :c:data:`elec_alpha_num`
|
||||||
|
* :c:data:`elec_beta_num`
|
||||||
|
* :c:data:`scf_density_matrix_ao_alpha`
|
||||||
|
* :c:data:`scf_density_matrix_ao_beta`
|
||||||
|
|
||||||
|
Needed by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`fps_spf_matrix_ao`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: scf_density_matrix_ao_alpha
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`scf_utils/scf_density_matrix_ao.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision, allocatable :: scf_density_matrix_ao_alpha (ao_num,ao_num)
|
||||||
|
|
||||||
|
|
||||||
|
S^{-1}.P_alpha.S^{-1}
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`ao_num`
|
||||||
|
* :c:data:`elec_alpha_num`
|
||||||
|
* :c:data:`mo_coef`
|
||||||
|
|
||||||
|
Needed by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`ao_two_e_integral_alpha`
|
||||||
|
* :c:data:`hf_energy`
|
||||||
|
* :c:data:`scf_density_matrix_ao`
|
||||||
|
* :c:data:`scf_energy`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: scf_density_matrix_ao_beta
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`scf_utils/scf_density_matrix_ao.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision, allocatable :: scf_density_matrix_ao_beta (ao_num,ao_num)
|
||||||
|
|
||||||
|
|
||||||
|
S^{-1}.P_beta.S^{-1}
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`ao_num`
|
||||||
|
* :c:data:`elec_beta_num`
|
||||||
|
* :c:data:`mo_coef`
|
||||||
|
|
||||||
|
Needed by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`ao_two_e_integral_alpha`
|
||||||
|
* :c:data:`hf_energy`
|
||||||
|
* :c:data:`scf_density_matrix_ao`
|
||||||
|
* :c:data:`scf_energy`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: scf_energy
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`scf_utils/fock_matrix.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision :: scf_energy
|
||||||
|
|
||||||
|
|
||||||
|
Hartree-Fock energy
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`ao_num`
|
||||||
|
* :c:data:`ao_one_e_integrals`
|
||||||
|
* :c:data:`extra_e_contrib_density`
|
||||||
|
* :c:data:`fock_matrix_ao_alpha`
|
||||||
|
* :c:data:`nuclear_repulsion`
|
||||||
|
* :c:data:`scf_density_matrix_ao_alpha`
|
||||||
|
* :c:data:`scf_density_matrix_ao_beta`
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: threshold_diis_nonzero
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`scf_utils/diis.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision :: threshold_diis_nonzero
|
||||||
|
|
||||||
|
|
||||||
|
If threshold_DIIS is zero, choose sqrt(thresh_scf)
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`thresh_scf`
|
||||||
|
* :c:data:`threshold_diis`
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Subroutines / functions
|
||||||
|
-----------------------
|
||||||
|
|
||||||
|
.. c:function:: damping_scf:
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`scf_utils/damping_scf.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
subroutine damping_SCF
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`mo_coef`
|
||||||
|
* :c:data:`eigenvectors_fock_matrix_mo`
|
||||||
|
* :c:data:`scf_energy`
|
||||||
|
* :c:data:`scf_density_matrix_ao_beta`
|
||||||
|
* :c:data:`fock_matrix_mo`
|
||||||
|
* :c:data:`ao_num`
|
||||||
|
* :c:data:`scf_density_matrix_ao_alpha`
|
||||||
|
* :c:data:`fock_matrix_ao`
|
||||||
|
* :c:data:`mo_label`
|
||||||
|
* :c:data:`n_it_scf_max`
|
||||||
|
* :c:data:`thresh_scf`
|
||||||
|
* :c:data:`frozen_orb_scf`
|
||||||
|
|
||||||
|
Calls:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:func:`ezfio_set_hartree_fock_energy`
|
||||||
|
* :c:func:`initialize_mo_coef_begin_iteration`
|
||||||
|
* :c:func:`mo_as_eigvectors_of_mo_matrix`
|
||||||
|
* :c:func:`reorder_core_orb`
|
||||||
|
* :c:func:`save_mos`
|
||||||
|
* :c:func:`write_double`
|
||||||
|
* :c:func:`write_time`
|
||||||
|
|
||||||
|
Touches:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`scf_density_matrix_ao_alpha`
|
||||||
|
* :c:data:`scf_density_matrix_ao_beta`
|
||||||
|
* :c:data:`mo_coef`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:function:: huckel_guess:
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`scf_utils/huckel.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
subroutine huckel_guess
|
||||||
|
|
||||||
|
|
||||||
|
Build the MOs using the extended Huckel model
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`ao_one_e_integrals`
|
||||||
|
* :c:data:`mo_coef`
|
||||||
|
* :c:data:`eigenvectors_fock_matrix_mo`
|
||||||
|
* :c:data:`ao_overlap`
|
||||||
|
* :c:data:`ao_num`
|
||||||
|
* :c:data:`ao_two_e_integral_alpha`
|
||||||
|
* :c:data:`fock_matrix_ao_alpha`
|
||||||
|
* :c:data:`fock_matrix_ao_alpha`
|
||||||
|
|
||||||
|
Called by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:func:`create_guess`
|
||||||
|
|
||||||
|
Calls:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:func:`save_mos`
|
||||||
|
|
||||||
|
Touches:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`fock_matrix_ao_alpha`
|
||||||
|
* :c:data:`fock_matrix_ao_alpha`
|
||||||
|
* :c:data:`mo_coef`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:function:: roothaan_hall_scf:
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`scf_utils/roothaan_hall_scf.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
subroutine Roothaan_Hall_SCF
|
||||||
|
|
||||||
|
|
||||||
|
Roothaan-Hall algorithm for SCF Hartree-Fock calculation
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`max_dim_diis`
|
||||||
|
* :c:data:`mo_occ`
|
||||||
|
* :c:data:`ao_md5`
|
||||||
|
* :c:data:`mo_coef`
|
||||||
|
* :c:data:`level_shift`
|
||||||
|
* :c:data:`fps_spf_matrix_mo`
|
||||||
|
* :c:data:`eigenvectors_fock_matrix_mo`
|
||||||
|
* :c:data:`scf_energy`
|
||||||
|
* :c:data:`mo_num`
|
||||||
|
* :c:data:`thresh_scf`
|
||||||
|
* :c:data:`scf_algorithm`
|
||||||
|
* :c:data:`fock_matrix_mo`
|
||||||
|
* :c:data:`ao_num`
|
||||||
|
* :c:data:`fock_matrix_ao`
|
||||||
|
* :c:data:`mo_label`
|
||||||
|
* :c:data:`n_it_scf_max`
|
||||||
|
* :c:data:`threshold_diis_nonzero`
|
||||||
|
* :c:data:`frozen_orb_scf`
|
||||||
|
* :c:data:`fock_matrix_ao_alpha`
|
||||||
|
* :c:data:`fock_matrix_ao_alpha`
|
||||||
|
* :c:data:`fps_spf_matrix_ao`
|
||||||
|
|
||||||
|
Called by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:func:`run`
|
||||||
|
|
||||||
|
Calls:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:func:`extrapolate_fock_matrix`
|
||||||
|
* :c:func:`initialize_mo_coef_begin_iteration`
|
||||||
|
* :c:func:`mo_as_eigvectors_of_mo_matrix`
|
||||||
|
* :c:func:`reorder_core_orb`
|
||||||
|
* :c:func:`save_mos`
|
||||||
|
* :c:func:`write_double`
|
||||||
|
* :c:func:`write_time`
|
||||||
|
|
||||||
|
Touches:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`fock_matrix_ao_alpha`
|
||||||
|
* :c:data:`fock_matrix_ao_alpha`
|
||||||
|
* :c:data:`mo_coef`
|
||||||
|
* :c:data:`level_shift`
|
||||||
|
* :c:data:`mo_coef`
|
||||||
|
|
13
doc/_sources/modules/selectors_cassd.rst.txt
Normal file
13
doc/_sources/modules/selectors_cassd.rst.txt
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
.. _module_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.
|
||||||
|
|
153
doc/_sources/modules/selectors_full.rst.txt
Normal file
153
doc/_sources/modules/selectors_full.rst.txt
Normal file
@ -0,0 +1,153 @@
|
|||||||
|
.. _module_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.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Providers
|
||||||
|
---------
|
||||||
|
|
||||||
|
.. c:var:: n_det_selectors
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`selectors_full/selectors.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
integer :: n_det_selectors
|
||||||
|
|
||||||
|
|
||||||
|
For Single reference wave functions, the number of selectors is 1 : the
|
||||||
|
Hartree-Fock determinant
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`mpi_master`
|
||||||
|
* :c:data:`n_det`
|
||||||
|
* :c:data:`n_det_generators`
|
||||||
|
* :c:data:`output_wall_time_0`
|
||||||
|
* :c:data:`psi_det_sorted`
|
||||||
|
* :c:data:`threshold_selectors`
|
||||||
|
|
||||||
|
Needed by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`coef_hf_selector`
|
||||||
|
* :c:data:`exc_degree_per_selectors`
|
||||||
|
* :c:data:`psi_selectors`
|
||||||
|
* :c:data:`psi_selectors_coef_transp`
|
||||||
|
* :c:data:`psi_selectors_diag_h_mat`
|
||||||
|
* :c:data:`pt2_f`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: psi_selectors
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`selectors_full/selectors.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
integer(bit_kind), allocatable :: psi_selectors (N_int,2,psi_selectors_size)
|
||||||
|
double precision, allocatable :: psi_selectors_coef (psi_selectors_size,N_states)
|
||||||
|
|
||||||
|
|
||||||
|
Determinants on which we apply <i|H|psi> for perturbation.
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`n_det_selectors`
|
||||||
|
* :c:data:`n_int`
|
||||||
|
* :c:data:`n_states`
|
||||||
|
* :c:data:`psi_det_sorted`
|
||||||
|
* :c:data:`psi_selectors_size`
|
||||||
|
|
||||||
|
Needed by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`coef_hf_selector`
|
||||||
|
* :c:data:`exc_degree_per_selectors`
|
||||||
|
* :c:data:`psi_selectors_coef_transp`
|
||||||
|
* :c:data:`psi_selectors_diag_h_mat`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: psi_selectors_coef
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`selectors_full/selectors.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
integer(bit_kind), allocatable :: psi_selectors (N_int,2,psi_selectors_size)
|
||||||
|
double precision, allocatable :: psi_selectors_coef (psi_selectors_size,N_states)
|
||||||
|
|
||||||
|
|
||||||
|
Determinants on which we apply <i|H|psi> for perturbation.
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`n_det_selectors`
|
||||||
|
* :c:data:`n_int`
|
||||||
|
* :c:data:`n_states`
|
||||||
|
* :c:data:`psi_det_sorted`
|
||||||
|
* :c:data:`psi_selectors_size`
|
||||||
|
|
||||||
|
Needed by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`coef_hf_selector`
|
||||||
|
* :c:data:`exc_degree_per_selectors`
|
||||||
|
* :c:data:`psi_selectors_coef_transp`
|
||||||
|
* :c:data:`psi_selectors_diag_h_mat`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: threshold_selectors
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`selectors_full/selectors.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision :: threshold_selectors
|
||||||
|
|
||||||
|
|
||||||
|
Thresholds on selectors (fraction of the square of the norm)
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`threshold_generators`
|
||||||
|
|
||||||
|
Needed by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`n_det_selectors`
|
||||||
|
|
649
doc/_sources/modules/selectors_utils.rst.txt
Normal file
649
doc/_sources/modules/selectors_utils.rst.txt
Normal file
@ -0,0 +1,649 @@
|
|||||||
|
.. _module_selectors_utils:
|
||||||
|
|
||||||
|
.. program:: selectors_utils
|
||||||
|
|
||||||
|
.. default-role:: option
|
||||||
|
|
||||||
|
===============
|
||||||
|
selectors_utils
|
||||||
|
===============
|
||||||
|
|
||||||
|
Helper functions for selectors.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Providers
|
||||||
|
---------
|
||||||
|
|
||||||
|
.. c:var:: coef_hf_selector
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`selectors_utils/e_corr_selectors.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision :: coef_hf_selector
|
||||||
|
double precision :: inv_selectors_coef_hf
|
||||||
|
double precision :: inv_selectors_coef_hf_squared
|
||||||
|
double precision, allocatable :: e_corr_per_selectors (N_det_selectors)
|
||||||
|
double precision, allocatable :: i_h_hf_per_selectors (N_det_selectors)
|
||||||
|
double precision, allocatable :: delta_e_per_selector (N_det_selectors)
|
||||||
|
double precision :: e_corr_double_only
|
||||||
|
double precision :: e_corr_second_order
|
||||||
|
|
||||||
|
|
||||||
|
Correlation energy per determinant with respect to the Hartree-Fock determinant
|
||||||
|
for the all the double excitations in the selectors determinants.
|
||||||
|
|
||||||
|
E_corr_per_selectors(i) = :math:`\langle D_i | H | \text{HF}\rangle c(D_i)/c(HF)` if :math:`| D_i \rangle` is a double excitation.
|
||||||
|
|
||||||
|
E_corr_per_selectors(i) = -1000.d0 if it is not a double excitation
|
||||||
|
|
||||||
|
coef_hf_selector = coefficient of the Hartree Fock determinant in the selectors determinants
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`big_array_coulomb_integrals`
|
||||||
|
* :c:data:`big_array_coulomb_integrals`
|
||||||
|
* :c:data:`exc_degree_per_selectors`
|
||||||
|
* :c:data:`mo_integrals_map`
|
||||||
|
* :c:data:`mo_two_e_integrals_in_map`
|
||||||
|
* :c:data:`n_det_selectors`
|
||||||
|
* :c:data:`n_int`
|
||||||
|
* :c:data:`psi_selectors`
|
||||||
|
* :c:data:`ref_bitmask`
|
||||||
|
* :c:data:`ref_bitmask_energy`
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: delta_e_per_selector
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`selectors_utils/e_corr_selectors.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision :: coef_hf_selector
|
||||||
|
double precision :: inv_selectors_coef_hf
|
||||||
|
double precision :: inv_selectors_coef_hf_squared
|
||||||
|
double precision, allocatable :: e_corr_per_selectors (N_det_selectors)
|
||||||
|
double precision, allocatable :: i_h_hf_per_selectors (N_det_selectors)
|
||||||
|
double precision, allocatable :: delta_e_per_selector (N_det_selectors)
|
||||||
|
double precision :: e_corr_double_only
|
||||||
|
double precision :: e_corr_second_order
|
||||||
|
|
||||||
|
|
||||||
|
Correlation energy per determinant with respect to the Hartree-Fock determinant
|
||||||
|
for the all the double excitations in the selectors determinants.
|
||||||
|
|
||||||
|
E_corr_per_selectors(i) = :math:`\langle D_i | H | \text{HF}\rangle c(D_i)/c(HF)` if :math:`| D_i \rangle` is a double excitation.
|
||||||
|
|
||||||
|
E_corr_per_selectors(i) = -1000.d0 if it is not a double excitation
|
||||||
|
|
||||||
|
coef_hf_selector = coefficient of the Hartree Fock determinant in the selectors determinants
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`big_array_coulomb_integrals`
|
||||||
|
* :c:data:`big_array_coulomb_integrals`
|
||||||
|
* :c:data:`exc_degree_per_selectors`
|
||||||
|
* :c:data:`mo_integrals_map`
|
||||||
|
* :c:data:`mo_two_e_integrals_in_map`
|
||||||
|
* :c:data:`n_det_selectors`
|
||||||
|
* :c:data:`n_int`
|
||||||
|
* :c:data:`psi_selectors`
|
||||||
|
* :c:data:`ref_bitmask`
|
||||||
|
* :c:data:`ref_bitmask_energy`
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: double_index_selectors
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`selectors_utils/e_corr_selectors.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
integer, allocatable :: exc_degree_per_selectors (N_det_selectors)
|
||||||
|
integer, allocatable :: double_index_selectors (N_det_selectors)
|
||||||
|
integer :: n_double_selectors
|
||||||
|
|
||||||
|
|
||||||
|
Degree of excitation respect to Hartree Fock for the wave function
|
||||||
|
for the all the selectors determinants.
|
||||||
|
|
||||||
|
double_index_selectors = list of the index of the double excitations
|
||||||
|
|
||||||
|
n_double_selectors = number of double excitations in the selectors determinants
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`n_det_selectors`
|
||||||
|
* :c:data:`n_int`
|
||||||
|
* :c:data:`psi_selectors`
|
||||||
|
* :c:data:`ref_bitmask`
|
||||||
|
|
||||||
|
Needed by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`coef_hf_selector`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: e_corr_double_only
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`selectors_utils/e_corr_selectors.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision :: coef_hf_selector
|
||||||
|
double precision :: inv_selectors_coef_hf
|
||||||
|
double precision :: inv_selectors_coef_hf_squared
|
||||||
|
double precision, allocatable :: e_corr_per_selectors (N_det_selectors)
|
||||||
|
double precision, allocatable :: i_h_hf_per_selectors (N_det_selectors)
|
||||||
|
double precision, allocatable :: delta_e_per_selector (N_det_selectors)
|
||||||
|
double precision :: e_corr_double_only
|
||||||
|
double precision :: e_corr_second_order
|
||||||
|
|
||||||
|
|
||||||
|
Correlation energy per determinant with respect to the Hartree-Fock determinant
|
||||||
|
for the all the double excitations in the selectors determinants.
|
||||||
|
|
||||||
|
E_corr_per_selectors(i) = :math:`\langle D_i | H | \text{HF}\rangle c(D_i)/c(HF)` if :math:`| D_i \rangle` is a double excitation.
|
||||||
|
|
||||||
|
E_corr_per_selectors(i) = -1000.d0 if it is not a double excitation
|
||||||
|
|
||||||
|
coef_hf_selector = coefficient of the Hartree Fock determinant in the selectors determinants
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`big_array_coulomb_integrals`
|
||||||
|
* :c:data:`big_array_coulomb_integrals`
|
||||||
|
* :c:data:`exc_degree_per_selectors`
|
||||||
|
* :c:data:`mo_integrals_map`
|
||||||
|
* :c:data:`mo_two_e_integrals_in_map`
|
||||||
|
* :c:data:`n_det_selectors`
|
||||||
|
* :c:data:`n_int`
|
||||||
|
* :c:data:`psi_selectors`
|
||||||
|
* :c:data:`ref_bitmask`
|
||||||
|
* :c:data:`ref_bitmask_energy`
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: e_corr_per_selectors
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`selectors_utils/e_corr_selectors.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision :: coef_hf_selector
|
||||||
|
double precision :: inv_selectors_coef_hf
|
||||||
|
double precision :: inv_selectors_coef_hf_squared
|
||||||
|
double precision, allocatable :: e_corr_per_selectors (N_det_selectors)
|
||||||
|
double precision, allocatable :: i_h_hf_per_selectors (N_det_selectors)
|
||||||
|
double precision, allocatable :: delta_e_per_selector (N_det_selectors)
|
||||||
|
double precision :: e_corr_double_only
|
||||||
|
double precision :: e_corr_second_order
|
||||||
|
|
||||||
|
|
||||||
|
Correlation energy per determinant with respect to the Hartree-Fock determinant
|
||||||
|
for the all the double excitations in the selectors determinants.
|
||||||
|
|
||||||
|
E_corr_per_selectors(i) = :math:`\langle D_i | H | \text{HF}\rangle c(D_i)/c(HF)` if :math:`| D_i \rangle` is a double excitation.
|
||||||
|
|
||||||
|
E_corr_per_selectors(i) = -1000.d0 if it is not a double excitation
|
||||||
|
|
||||||
|
coef_hf_selector = coefficient of the Hartree Fock determinant in the selectors determinants
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`big_array_coulomb_integrals`
|
||||||
|
* :c:data:`big_array_coulomb_integrals`
|
||||||
|
* :c:data:`exc_degree_per_selectors`
|
||||||
|
* :c:data:`mo_integrals_map`
|
||||||
|
* :c:data:`mo_two_e_integrals_in_map`
|
||||||
|
* :c:data:`n_det_selectors`
|
||||||
|
* :c:data:`n_int`
|
||||||
|
* :c:data:`psi_selectors`
|
||||||
|
* :c:data:`ref_bitmask`
|
||||||
|
* :c:data:`ref_bitmask_energy`
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: e_corr_second_order
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`selectors_utils/e_corr_selectors.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision :: coef_hf_selector
|
||||||
|
double precision :: inv_selectors_coef_hf
|
||||||
|
double precision :: inv_selectors_coef_hf_squared
|
||||||
|
double precision, allocatable :: e_corr_per_selectors (N_det_selectors)
|
||||||
|
double precision, allocatable :: i_h_hf_per_selectors (N_det_selectors)
|
||||||
|
double precision, allocatable :: delta_e_per_selector (N_det_selectors)
|
||||||
|
double precision :: e_corr_double_only
|
||||||
|
double precision :: e_corr_second_order
|
||||||
|
|
||||||
|
|
||||||
|
Correlation energy per determinant with respect to the Hartree-Fock determinant
|
||||||
|
for the all the double excitations in the selectors determinants.
|
||||||
|
|
||||||
|
E_corr_per_selectors(i) = :math:`\langle D_i | H | \text{HF}\rangle c(D_i)/c(HF)` if :math:`| D_i \rangle` is a double excitation.
|
||||||
|
|
||||||
|
E_corr_per_selectors(i) = -1000.d0 if it is not a double excitation
|
||||||
|
|
||||||
|
coef_hf_selector = coefficient of the Hartree Fock determinant in the selectors determinants
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`big_array_coulomb_integrals`
|
||||||
|
* :c:data:`big_array_coulomb_integrals`
|
||||||
|
* :c:data:`exc_degree_per_selectors`
|
||||||
|
* :c:data:`mo_integrals_map`
|
||||||
|
* :c:data:`mo_two_e_integrals_in_map`
|
||||||
|
* :c:data:`n_det_selectors`
|
||||||
|
* :c:data:`n_int`
|
||||||
|
* :c:data:`psi_selectors`
|
||||||
|
* :c:data:`ref_bitmask`
|
||||||
|
* :c:data:`ref_bitmask_energy`
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: exc_degree_per_selectors
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`selectors_utils/e_corr_selectors.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
integer, allocatable :: exc_degree_per_selectors (N_det_selectors)
|
||||||
|
integer, allocatable :: double_index_selectors (N_det_selectors)
|
||||||
|
integer :: n_double_selectors
|
||||||
|
|
||||||
|
|
||||||
|
Degree of excitation respect to Hartree Fock for the wave function
|
||||||
|
for the all the selectors determinants.
|
||||||
|
|
||||||
|
double_index_selectors = list of the index of the double excitations
|
||||||
|
|
||||||
|
n_double_selectors = number of double excitations in the selectors determinants
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`n_det_selectors`
|
||||||
|
* :c:data:`n_int`
|
||||||
|
* :c:data:`psi_selectors`
|
||||||
|
* :c:data:`ref_bitmask`
|
||||||
|
|
||||||
|
Needed by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`coef_hf_selector`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: i_h_hf_per_selectors
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`selectors_utils/e_corr_selectors.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision :: coef_hf_selector
|
||||||
|
double precision :: inv_selectors_coef_hf
|
||||||
|
double precision :: inv_selectors_coef_hf_squared
|
||||||
|
double precision, allocatable :: e_corr_per_selectors (N_det_selectors)
|
||||||
|
double precision, allocatable :: i_h_hf_per_selectors (N_det_selectors)
|
||||||
|
double precision, allocatable :: delta_e_per_selector (N_det_selectors)
|
||||||
|
double precision :: e_corr_double_only
|
||||||
|
double precision :: e_corr_second_order
|
||||||
|
|
||||||
|
|
||||||
|
Correlation energy per determinant with respect to the Hartree-Fock determinant
|
||||||
|
for the all the double excitations in the selectors determinants.
|
||||||
|
|
||||||
|
E_corr_per_selectors(i) = :math:`\langle D_i | H | \text{HF}\rangle c(D_i)/c(HF)` if :math:`| D_i \rangle` is a double excitation.
|
||||||
|
|
||||||
|
E_corr_per_selectors(i) = -1000.d0 if it is not a double excitation
|
||||||
|
|
||||||
|
coef_hf_selector = coefficient of the Hartree Fock determinant in the selectors determinants
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`big_array_coulomb_integrals`
|
||||||
|
* :c:data:`big_array_coulomb_integrals`
|
||||||
|
* :c:data:`exc_degree_per_selectors`
|
||||||
|
* :c:data:`mo_integrals_map`
|
||||||
|
* :c:data:`mo_two_e_integrals_in_map`
|
||||||
|
* :c:data:`n_det_selectors`
|
||||||
|
* :c:data:`n_int`
|
||||||
|
* :c:data:`psi_selectors`
|
||||||
|
* :c:data:`ref_bitmask`
|
||||||
|
* :c:data:`ref_bitmask_energy`
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: inv_selectors_coef_hf
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`selectors_utils/e_corr_selectors.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision :: coef_hf_selector
|
||||||
|
double precision :: inv_selectors_coef_hf
|
||||||
|
double precision :: inv_selectors_coef_hf_squared
|
||||||
|
double precision, allocatable :: e_corr_per_selectors (N_det_selectors)
|
||||||
|
double precision, allocatable :: i_h_hf_per_selectors (N_det_selectors)
|
||||||
|
double precision, allocatable :: delta_e_per_selector (N_det_selectors)
|
||||||
|
double precision :: e_corr_double_only
|
||||||
|
double precision :: e_corr_second_order
|
||||||
|
|
||||||
|
|
||||||
|
Correlation energy per determinant with respect to the Hartree-Fock determinant
|
||||||
|
for the all the double excitations in the selectors determinants.
|
||||||
|
|
||||||
|
E_corr_per_selectors(i) = :math:`\langle D_i | H | \text{HF}\rangle c(D_i)/c(HF)` if :math:`| D_i \rangle` is a double excitation.
|
||||||
|
|
||||||
|
E_corr_per_selectors(i) = -1000.d0 if it is not a double excitation
|
||||||
|
|
||||||
|
coef_hf_selector = coefficient of the Hartree Fock determinant in the selectors determinants
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`big_array_coulomb_integrals`
|
||||||
|
* :c:data:`big_array_coulomb_integrals`
|
||||||
|
* :c:data:`exc_degree_per_selectors`
|
||||||
|
* :c:data:`mo_integrals_map`
|
||||||
|
* :c:data:`mo_two_e_integrals_in_map`
|
||||||
|
* :c:data:`n_det_selectors`
|
||||||
|
* :c:data:`n_int`
|
||||||
|
* :c:data:`psi_selectors`
|
||||||
|
* :c:data:`ref_bitmask`
|
||||||
|
* :c:data:`ref_bitmask_energy`
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: inv_selectors_coef_hf_squared
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`selectors_utils/e_corr_selectors.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision :: coef_hf_selector
|
||||||
|
double precision :: inv_selectors_coef_hf
|
||||||
|
double precision :: inv_selectors_coef_hf_squared
|
||||||
|
double precision, allocatable :: e_corr_per_selectors (N_det_selectors)
|
||||||
|
double precision, allocatable :: i_h_hf_per_selectors (N_det_selectors)
|
||||||
|
double precision, allocatable :: delta_e_per_selector (N_det_selectors)
|
||||||
|
double precision :: e_corr_double_only
|
||||||
|
double precision :: e_corr_second_order
|
||||||
|
|
||||||
|
|
||||||
|
Correlation energy per determinant with respect to the Hartree-Fock determinant
|
||||||
|
for the all the double excitations in the selectors determinants.
|
||||||
|
|
||||||
|
E_corr_per_selectors(i) = :math:`\langle D_i | H | \text{HF}\rangle c(D_i)/c(HF)` if :math:`| D_i \rangle` is a double excitation.
|
||||||
|
|
||||||
|
E_corr_per_selectors(i) = -1000.d0 if it is not a double excitation
|
||||||
|
|
||||||
|
coef_hf_selector = coefficient of the Hartree Fock determinant in the selectors determinants
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`big_array_coulomb_integrals`
|
||||||
|
* :c:data:`big_array_coulomb_integrals`
|
||||||
|
* :c:data:`exc_degree_per_selectors`
|
||||||
|
* :c:data:`mo_integrals_map`
|
||||||
|
* :c:data:`mo_two_e_integrals_in_map`
|
||||||
|
* :c:data:`n_det_selectors`
|
||||||
|
* :c:data:`n_int`
|
||||||
|
* :c:data:`psi_selectors`
|
||||||
|
* :c:data:`ref_bitmask`
|
||||||
|
* :c:data:`ref_bitmask_energy`
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: n_double_selectors
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`selectors_utils/e_corr_selectors.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
integer, allocatable :: exc_degree_per_selectors (N_det_selectors)
|
||||||
|
integer, allocatable :: double_index_selectors (N_det_selectors)
|
||||||
|
integer :: n_double_selectors
|
||||||
|
|
||||||
|
|
||||||
|
Degree of excitation respect to Hartree Fock for the wave function
|
||||||
|
for the all the selectors determinants.
|
||||||
|
|
||||||
|
double_index_selectors = list of the index of the double excitations
|
||||||
|
|
||||||
|
n_double_selectors = number of double excitations in the selectors determinants
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`n_det_selectors`
|
||||||
|
* :c:data:`n_int`
|
||||||
|
* :c:data:`psi_selectors`
|
||||||
|
* :c:data:`ref_bitmask`
|
||||||
|
|
||||||
|
Needed by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`coef_hf_selector`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: psi_selectors_coef_transp
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`selectors_utils/selectors.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision, allocatable :: psi_selectors_coef_transp (N_states,psi_selectors_size)
|
||||||
|
|
||||||
|
|
||||||
|
Transposed psi_selectors
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`n_det_selectors`
|
||||||
|
* :c:data:`n_states`
|
||||||
|
* :c:data:`psi_selectors`
|
||||||
|
* :c:data:`psi_selectors_size`
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: psi_selectors_diag_h_mat
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`selectors_utils/selectors.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
double precision, allocatable :: psi_selectors_diag_h_mat (psi_selectors_size)
|
||||||
|
|
||||||
|
|
||||||
|
Diagonal elements of the H matrix for each selectors
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`elec_num`
|
||||||
|
* :c:data:`n_det_selectors`
|
||||||
|
* :c:data:`n_int`
|
||||||
|
* :c:data:`psi_selectors`
|
||||||
|
* :c:data:`psi_selectors_size`
|
||||||
|
* :c:data:`ref_bitmask`
|
||||||
|
* :c:data:`ref_bitmask_energy`
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.. c:var:: psi_selectors_size
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`selectors_utils/selectors.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
integer :: psi_selectors_size
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`psi_det_size`
|
||||||
|
|
||||||
|
Needed by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`psi_selectors`
|
||||||
|
* :c:data:`psi_selectors_coef_transp`
|
||||||
|
* :c:data:`psi_selectors_diag_h_mat`
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Subroutines / functions
|
||||||
|
-----------------------
|
||||||
|
|
||||||
|
.. c:function:: zmq_get_n_det_generators:
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`selectors_utils/zmq.irp.f_template_102`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
integer function zmq_get_N_det_generators(zmq_to_qp_run_socket, worker_id)
|
||||||
|
|
||||||
|
|
||||||
|
Get N_det_generators from the qp_run scheduler
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`n_det_generators`
|
||||||
|
* :c:data:`zmq_state`
|
||||||
|
* :c:data:`mpi_master`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:function:: zmq_get_n_det_selectors:
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`selectors_utils/zmq.irp.f_template_102`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
integer function zmq_get_N_det_selectors(zmq_to_qp_run_socket, worker_id)
|
||||||
|
|
||||||
|
|
||||||
|
Get N_det_selectors from the qp_run scheduler
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`n_det_selectors`
|
||||||
|
* :c:data:`zmq_state`
|
||||||
|
* :c:data:`mpi_master`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:function:: zmq_put_n_det_generators:
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`selectors_utils/zmq.irp.f_template_102`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
integer function zmq_put_N_det_generators(zmq_to_qp_run_socket,worker_id)
|
||||||
|
|
||||||
|
|
||||||
|
Put N_det_generators on the qp_run scheduler
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`n_det_generators`
|
||||||
|
* :c:data:`zmq_state`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:function:: zmq_put_n_det_selectors:
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`selectors_utils/zmq.irp.f_template_102`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
integer function zmq_put_N_det_selectors(zmq_to_qp_run_socket,worker_id)
|
||||||
|
|
||||||
|
|
||||||
|
Put N_det_selectors on the qp_run scheduler
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`n_det_selectors`
|
||||||
|
* :c:data:`zmq_state`
|
||||||
|
|
14
doc/_sources/modules/single_ref_method.rst.txt
Normal file
14
doc/_sources/modules/single_ref_method.rst.txt
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
.. _module_single_ref_method:
|
||||||
|
|
||||||
|
.. program:: single_ref_method
|
||||||
|
|
||||||
|
.. default-role:: option
|
||||||
|
|
||||||
|
=================
|
||||||
|
single_ref_method
|
||||||
|
=================
|
||||||
|
|
||||||
|
Include this module for single reference methods.
|
||||||
|
Using this module, the only generator determinant is the Hartree-Fock determinant.
|
||||||
|
|
||||||
|
|
246
doc/_sources/modules/tools.rst.txt
Normal file
246
doc/_sources/modules/tools.rst.txt
Normal file
@ -0,0 +1,246 @@
|
|||||||
|
.. _module_tools:
|
||||||
|
|
||||||
|
.. program:: tools
|
||||||
|
|
||||||
|
.. default-role:: option
|
||||||
|
|
||||||
|
=====
|
||||||
|
tools
|
||||||
|
=====
|
||||||
|
|
||||||
|
Useful tools are grouped in this module.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Programs
|
||||||
|
--------
|
||||||
|
|
||||||
|
* :ref:`diagonalize_h`
|
||||||
|
* :ref:`fcidump`
|
||||||
|
* :ref:`four_idx_transform`
|
||||||
|
* :ref:`molden`
|
||||||
|
* :ref:`print_e_conv`
|
||||||
|
* :ref:`print_wf`
|
||||||
|
* :ref:`save_natorb`
|
||||||
|
* :ref:`save_one_e_dm`
|
||||||
|
* :ref:`save_ortho_mos`
|
||||||
|
* :ref:`write_integrals_erf`
|
||||||
|
|
||||||
|
Subroutines / functions
|
||||||
|
-----------------------
|
||||||
|
|
||||||
|
.. c:function:: routine:
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`write_integrals_erf.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
subroutine routine
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Called by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:func:`diagonalize_h`
|
||||||
|
* :c:func:`print_wf`
|
||||||
|
* :c:func:`write_integrals_erf`
|
||||||
|
|
||||||
|
Calls:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:func:`save_erf_two_e_integrals_ao`
|
||||||
|
* :c:func:`save_erf_two_e_integrals_mo`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:function:: routine_e_conv:
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`print_e_conv.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
subroutine routine_e_conv
|
||||||
|
|
||||||
|
|
||||||
|
routine called by :c:func:`print_e_conv`
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`n_states`
|
||||||
|
* :c:data:`ezfio_filename`
|
||||||
|
|
||||||
|
Called by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:func:`print_e_conv`
|
||||||
|
|
||||||
|
Calls:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:func:`ezfio_get_iterations_energy_iterations`
|
||||||
|
* :c:func:`ezfio_get_iterations_n_det_iterations`
|
||||||
|
* :c:func:`ezfio_get_iterations_n_iter`
|
||||||
|
* :c:func:`ezfio_get_iterations_pt2_iterations`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:function:: routine_save_one_e_dm:
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`save_one_e_dm.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
subroutine routine_save_one_e_dm
|
||||||
|
|
||||||
|
|
||||||
|
routine called by :c:func:`save_one_e_dm`
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`one_e_dm_mo_alpha`
|
||||||
|
|
||||||
|
Called by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:func:`save_one_e_dm`
|
||||||
|
|
||||||
|
Calls:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:func:`ezfio_set_aux_quantities_data_one_e_dm_alpha_mo`
|
||||||
|
* :c:func:`ezfio_set_aux_quantities_data_one_e_dm_beta_mo`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:function:: write_ao_basis:
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`molden.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
subroutine write_Ao_basis(i_unit_output)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`nucl_list_shell_aos`
|
||||||
|
* :c:data:`ao_coef`
|
||||||
|
* :c:data:`ao_num`
|
||||||
|
* :c:data:`ao_prim_num`
|
||||||
|
* :c:data:`nucl_charge`
|
||||||
|
* :c:data:`ao_l`
|
||||||
|
* :c:data:`ao_expo`
|
||||||
|
* :c:data:`element_name`
|
||||||
|
* :c:data:`nucl_num`
|
||||||
|
|
||||||
|
Called by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:func:`molden`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:function:: write_geometry:
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`molden.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
subroutine write_geometry(i_unit_output)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`nucl_coord`
|
||||||
|
* :c:data:`nucl_charge`
|
||||||
|
* :c:data:`element_name`
|
||||||
|
* :c:data:`nucl_num`
|
||||||
|
|
||||||
|
Called by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:func:`molden`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:function:: write_intro_gamess:
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`molden.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
subroutine write_intro_gamess(i_unit_output)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Called by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:func:`molden`
|
||||||
|
|
||||||
|
|
||||||
|
.. c:function:: write_mo_basis:
|
||||||
|
|
||||||
|
|
||||||
|
File : :file:`molden.irp.f`
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
subroutine write_Mo_basis(i_unit_output)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`mo_num`
|
||||||
|
* :c:data:`mo_coef`
|
||||||
|
* :c:data:`ao_num`
|
||||||
|
* :c:data:`ao_l_char_space`
|
||||||
|
* :c:data:`nucl_charge`
|
||||||
|
* :c:data:`ao_nucl`
|
||||||
|
* :c:data:`element_name`
|
||||||
|
|
||||||
|
Called by:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:func:`molden`
|
||||||
|
|
3024
doc/_sources/modules/utils.rst.txt
Normal file
3024
doc/_sources/modules/utils.rst.txt
Normal file
File diff suppressed because it is too large
Load Diff
1513
doc/_sources/modules/zmq.rst.txt
Normal file
1513
doc/_sources/modules/zmq.rst.txt
Normal file
File diff suppressed because it is too large
Load Diff
115
doc/_sources/programmers_guide/conventions.rst.txt
Normal file
115
doc/_sources/programmers_guide/conventions.rst.txt
Normal file
@ -0,0 +1,115 @@
|
|||||||
|
==================
|
||||||
|
Coding conventions
|
||||||
|
==================
|
||||||
|
|
||||||
|
|
||||||
|
General conventions
|
||||||
|
===================
|
||||||
|
|
||||||
|
All executable files should have a name with lowercase.
|
||||||
|
|
||||||
|
Tabs are forbidden everywhere.
|
||||||
|
|
||||||
|
Try to set the maximum line length to 80 characters. Long lines can be
|
||||||
|
automatically reformatted in vim by pressing :kbd:`gqj`.
|
||||||
|
|
||||||
|
Use blank lines between blocks to improve readability.
|
||||||
|
|
||||||
|
For existing files, stay faithful to the existing indentation.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Shell scripts
|
||||||
|
=============
|
||||||
|
|
||||||
|
Executables should have no extension. To know if the file is binary, or in
|
||||||
|
what shell scripting language it was written, the :command:`file` command can
|
||||||
|
be used. In addition, all the shell scripts should be under
|
||||||
|
:file:`${QP_ROOT}/scripts/`.
|
||||||
|
|
||||||
|
The exit code of the script should be 0 upon success only.
|
||||||
|
|
||||||
|
Bash and Python2 are the only shell scripting language permitted for
|
||||||
|
executables.
|
||||||
|
|
||||||
|
|
||||||
|
Bash
|
||||||
|
----
|
||||||
|
|
||||||
|
* Bash scripts should start with ``#!/bin/bash``
|
||||||
|
|
||||||
|
* All error messages should go to standard error, and should be prefixed with
|
||||||
|
the name of the command. For example, in Bash use
|
||||||
|
|
||||||
|
.. code:: bash
|
||||||
|
|
||||||
|
function echo_err() {
|
||||||
|
2>& echo $(basename $0)": error"
|
||||||
|
}
|
||||||
|
|
||||||
|
* The command-line options should be handled with ``getopt``.
|
||||||
|
|
||||||
|
* The script should check that the command-line arguments are consistent.
|
||||||
|
|
||||||
|
* Long options should be preferred to short options.
|
||||||
|
|
||||||
|
* Always quote strings containing variables, command substitutions, spaces or
|
||||||
|
shell meta characters, unless careful unquoted expansion is required.
|
||||||
|
|
||||||
|
* Use ``"$@"`` unless you have a specific reason to use ``$*``.
|
||||||
|
|
||||||
|
* Use ``$(command)`` instead of backticks, because they can be easily nested.
|
||||||
|
|
||||||
|
* ``[[ ... ]]`` is preferred over ``[``, ``test`` and ``/usr/bin/[``.
|
||||||
|
|
||||||
|
* Declare function-specific variables with local. Declaration and assignment
|
||||||
|
should be on different lines.
|
||||||
|
|
||||||
|
* Pipelines should be split one per line if they don't all fit on one line.
|
||||||
|
|
||||||
|
* Put ``; do`` and ``; then`` on the same line as the ``while``, ``for`` or ``if``.
|
||||||
|
|
||||||
|
|
||||||
|
Python
|
||||||
|
------
|
||||||
|
|
||||||
|
Only Python2 is supported. The reason is that some dependencies use Python2,
|
||||||
|
and we do not want yet to add an extra dependency to Python3.
|
||||||
|
|
||||||
|
Python scripts should start with ``#!/usr/bin/env python2`` to mention
|
||||||
|
explicitly that Python2 has to be used.
|
||||||
|
|
||||||
|
:command:`pylint` should be used to increase the quality of the source code.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
IRPF90
|
||||||
|
======
|
||||||
|
|
||||||
|
The code can be automatically indented with :command:`irp_indent`.
|
||||||
|
|
||||||
|
Lines sould not be longer than 80 characters.
|
||||||
|
|
||||||
|
Mathematical formulas in the `BEGIN_DOC...END_DOC` sections sould be written in
|
||||||
|
LaTeX format, between `$` symbols.
|
||||||
|
|
||||||
|
All the providers, subroutines and functions should have a
|
||||||
|
`BEGIN_DOC...END_DOC` block.
|
||||||
|
|
||||||
|
Providers should never be present in the same file as a main program.
|
||||||
|
|
||||||
|
String must not use double quotes (`"`) but single quotes (`'`).
|
||||||
|
|
||||||
|
After a `read` statement there should be no comma.
|
||||||
|
|
||||||
|
Only standard Fortran is allowed : Intel or GNU extensions are forbidden.
|
||||||
|
|
||||||
|
The name of a program should be the same as the name of the file. For example,
|
||||||
|
for the :ref:`fci` program, we have
|
||||||
|
|
||||||
|
.. code-block:: fortan
|
||||||
|
|
||||||
|
program fci
|
||||||
|
|
||||||
|
and the file is named :file:`fci.irp.f`.
|
||||||
|
|
112
doc/_sources/programmers_guide/ezfio.rst.txt
Normal file
112
doc/_sources/programmers_guide/ezfio.rst.txt
Normal file
@ -0,0 +1,112 @@
|
|||||||
|
=====
|
||||||
|
EZFIO
|
||||||
|
=====
|
||||||
|
|
||||||
|
|
||||||
|
EZFIO.cfg
|
||||||
|
=========
|
||||||
|
|
||||||
|
The simplest way to add control parameters in the |EZFIO| directory is to create a
|
||||||
|
:file:`EZFIO.cfg` file in the module. An example can be found in existing modules
|
||||||
|
such as :ref:`hartree_fock`::
|
||||||
|
|
||||||
|
[max_dim_diis]
|
||||||
|
type: integer
|
||||||
|
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.
|
||||||
|
interface: ezfio,provider,ocaml
|
||||||
|
default: 0.
|
||||||
|
|
||||||
|
[thresh_scf]
|
||||||
|
type: Threshold
|
||||||
|
doc: Threshold on the convergence of the Hartree Fock energy.
|
||||||
|
interface: ezfio,provider,ocaml
|
||||||
|
default: 1.e-10
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
The syntax obeys the following rules:
|
||||||
|
|
||||||
|
Required
|
||||||
|
--------
|
||||||
|
|
||||||
|
.. option:: [<provider_name>]
|
||||||
|
|
||||||
|
The name of the provider in irp.f90 and in the EZFIO lib
|
||||||
|
|
||||||
|
.. option:: doc:<str>
|
||||||
|
|
||||||
|
The plain text documentation
|
||||||
|
|
||||||
|
.. option:: type:<str>
|
||||||
|
|
||||||
|
A type supported by the |OCaml| modules. The complete list of supported
|
||||||
|
types can be obtained by::
|
||||||
|
|
||||||
|
ei_handler.py list_supported_types
|
||||||
|
|
||||||
|
|
||||||
|
.. option:: interface:<str>
|
||||||
|
|
||||||
|
The interface is a list of strings sepeared by "," which can contain :
|
||||||
|
|
||||||
|
- ``ezfio`` : to build the |EZFIO| API
|
||||||
|
- ``provider`` : to build the corresponding providers
|
||||||
|
- ``ocaml`` : to build the corresponding bindings in |OCaml|
|
||||||
|
|
||||||
|
If an ``EZFIO.cfg`` file is used, the compilation of the module will generate
|
||||||
|
the ``ezfio_interface.irp.f`` file which contains the generated providers.
|
||||||
|
This file should not be added to the repository
|
||||||
|
|
||||||
|
Optional
|
||||||
|
--------
|
||||||
|
|
||||||
|
.. option:: default:<str>
|
||||||
|
|
||||||
|
The default value needed if ``ocaml`` is in interface list.
|
||||||
|
No default can be set for arrays.
|
||||||
|
|
||||||
|
.. option:: size:<str>
|
||||||
|
|
||||||
|
The size of the variable, which is one by default (scalar).
|
||||||
|
|
||||||
|
Examples : ``1``; ``=sum(ao_num)``; ``(ao_basis.ao_num,3)``
|
||||||
|
|
||||||
|
.. warning::
|
||||||
|
|
||||||
|
The module and the value are separed by a ``.`` not a ``_``.
|
||||||
|
For example ``(determinants.n_det)``
|
||||||
|
|
||||||
|
.. option:: ezfio_name:<str>
|
||||||
|
|
||||||
|
The name in the |EZFIO| API (by default is ``<provider_name>``)
|
||||||
|
|
||||||
|
|
||||||
|
\*.ezfio_config
|
||||||
|
===============
|
||||||
|
|
||||||
|
It is possible to directly add to the current module |EZFIO| configuration
|
||||||
|
files, named with the ``.ezfio_config`` suffix. An example is in the
|
||||||
|
:ref:`bitmask` module.
|
||||||
|
|
||||||
|
.. code:: text
|
||||||
|
|
||||||
|
bitmasks
|
||||||
|
N_int integer
|
||||||
|
bit_kind integer
|
||||||
|
N_mask_gen integer
|
||||||
|
generators integer*8 (bitmasks_N_int*bitmasks_bit_kind/8,2,6,bitmasks_N_mask_gen)
|
||||||
|
N_mask_cas integer
|
||||||
|
cas integer*8 (bitmasks_N_int*bitmasks_bit_kind/8,2,bitmasks_N_mask_cas)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
22
doc/_sources/programmers_guide/index.rst.txt
Normal file
22
doc/_sources/programmers_guide/index.rst.txt
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
=====================
|
||||||
|
Index for programmers
|
||||||
|
=====================
|
||||||
|
|
||||||
|
Index of Modules
|
||||||
|
----------------
|
||||||
|
|
||||||
|
.. toctree::
|
||||||
|
:maxdepth: 1
|
||||||
|
:glob:
|
||||||
|
|
||||||
|
/modules/*
|
||||||
|
/programmers_guide/qp_*
|
||||||
|
/programmers_guide/conventions
|
||||||
|
|
||||||
|
|
||||||
|
.. Auto-generated file
|
||||||
|
|
||||||
|
.. include:: index_providers.rst
|
||||||
|
|
||||||
|
|
||||||
|
|
1404
doc/_sources/programmers_guide/index_providers.rst.txt
Normal file
1404
doc/_sources/programmers_guide/index_providers.rst.txt
Normal file
File diff suppressed because it is too large
Load Diff
30
doc/_sources/programmers_guide/plugins.rst.txt
Normal file
30
doc/_sources/programmers_guide/plugins.rst.txt
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
==================
|
||||||
|
Developing plugins
|
||||||
|
==================
|
||||||
|
|
||||||
|
|
||||||
|
Creating a repository of plugins
|
||||||
|
--------------------------------
|
||||||
|
|
||||||
|
The purpose of :file:`$QP_ROOT/plugins` is to contain local copies of
|
||||||
|
external repositories of plugins.
|
||||||
|
|
||||||
|
Create a repository, for example :file:`qp_plugins_user`, hosted somewhere
|
||||||
|
(GitLab, GitHub, etc...), and clone the repository in the
|
||||||
|
:file:`$QP_ROOT/plugins` directory.
|
||||||
|
|
||||||
|
|
||||||
|
Creating new plugins
|
||||||
|
--------------------
|
||||||
|
|
||||||
|
To create a new plugin named :file:`my_plugin` in this repository, run::
|
||||||
|
|
||||||
|
qp_plugins create -n my_plugin -r qp_plugins_user
|
||||||
|
|
||||||
|
|
||||||
|
Now, the plugin needs to be installed to be compiled::
|
||||||
|
|
||||||
|
qp_plugins install my_plugin
|
||||||
|
|
||||||
|
|
||||||
|
|
82
doc/_sources/programmers_guide/programming.rst.txt
Normal file
82
doc/_sources/programmers_guide/programming.rst.txt
Normal file
@ -0,0 +1,82 @@
|
|||||||
|
=======================
|
||||||
|
Programming in the |qp|
|
||||||
|
=======================
|
||||||
|
|
||||||
|
To program in the |qp|, it is required that you are familiar with the |IRPF90|
|
||||||
|
code generator. A GitBook can be found `here <http://scemama.gitbooks.io/irpf90>`_,
|
||||||
|
and programmers are encouraged to visit this manual.
|
||||||
|
|
||||||
|
|IRPF90| make programming very simple. The only information a programmer needs
|
||||||
|
in order to write a new program is the name of the required |IRPF90| entities
|
||||||
|
which may already exist in other modules. For example, writing a program which
|
||||||
|
prints the Hartree-Fock energy is as simple as:
|
||||||
|
|
||||||
|
.. code:: fortran
|
||||||
|
|
||||||
|
program print_hf_energy
|
||||||
|
implicit none
|
||||||
|
BEGIN_DOC
|
||||||
|
! Program which prints the Hartree-Fock energy
|
||||||
|
! to the standard output
|
||||||
|
END_DOC
|
||||||
|
print *, 'HF energy = ', HF_energy
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
The only required information was the existence of a provider for
|
||||||
|
:command:`hf_energy`. A detailed list of all the providers, subroutines
|
||||||
|
and functions of the |qp| can be found in the appendix of this manual.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Architecture
|
||||||
|
============
|
||||||
|
|
||||||
|
As |IRPF90| is used, the programmer doesn't have a full control of the sequence
|
||||||
|
of instructions in the produced Fortran code. This explains why the input data
|
||||||
|
is stored in a database rather than in sequential text files. Indeed, the
|
||||||
|
programmer can't know by advance in which order the files will be read, so a
|
||||||
|
simple random access to persistent data is needed. The |EZFIO| library generator
|
||||||
|
is a practical answer to this problem.
|
||||||
|
|
||||||
|
The |qp| uses a collection of programs inter-operating together. Each of these
|
||||||
|
programs is reading and/or modifying information in the |EZFIO| database.
|
||||||
|
This is done mostly using the command line or scripting.
|
||||||
|
|
||||||
|
.. important::
|
||||||
|
|
||||||
|
Each command modifies the state of the |EZFIO| database, so running twice the
|
||||||
|
same program on the same database may have different behaviors because of the
|
||||||
|
state of the database. For reproducibility, users are encouraged to run scripts
|
||||||
|
where a fresg new |EZFIO| database is created at the beginning of the
|
||||||
|
script. This way of running the |qp| makes calculations reproducible.
|
||||||
|
|
||||||
|
|
||||||
|
The computational part |qp| is organized in **modules**. A module is a
|
||||||
|
directory which contains multiple |IRPF90| files, a |README| and a |NEED| file.
|
||||||
|
|
||||||
|
The |README| file contains documentation about the module, that is
|
||||||
|
automatically included in the documentation of the |qp|. The documentation is
|
||||||
|
generated by the `Sphinx documentation builder <http://www.sphinx-doc.org>`_,
|
||||||
|
and it should be written using the |rst| format.
|
||||||
|
|
||||||
|
The |NEED| file contains the list of the modules which are needed for the
|
||||||
|
current module. When a module is needed, it means that all the |IRPF90| files
|
||||||
|
it contains should be included in the current module. This is done
|
||||||
|
automatically during the building process, by creating symbolic links in the
|
||||||
|
current directory.
|
||||||
|
|
||||||
|
To compile the program, the |Ninja| build system is used, and all the building
|
||||||
|
process is fully automated such that the programmer will never have to modify a
|
||||||
|
file by hand. Running :command:`ninja` inside a module will compile only the
|
||||||
|
module, and running :command:`ninja` at the root of the |qp| will build all the
|
||||||
|
modules, as well as the tools.
|
||||||
|
|
||||||
|
.. cache compile
|
||||||
|
.. interface AOs / MOs => resultsFile
|
||||||
|
.. interface integrals => AO / MO
|
||||||
|
.. interface integrals MO => FCIDUMP
|
||||||
|
.. TODO : molden module in resultsFile
|
||||||
|
|
||||||
|
.. include:: /work.rst
|
||||||
|
|
35
doc/_sources/programmers_guide/qp_name.rst.txt
Normal file
35
doc/_sources/programmers_guide/qp_name.rst.txt
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
.. _qp_name:
|
||||||
|
|
||||||
|
qp_name
|
||||||
|
=======
|
||||||
|
|
||||||
|
.. program:: qp_name
|
||||||
|
|
||||||
|
Displays the names of all the files in which the provider/subroutine/function
|
||||||
|
given as argument is used. With the `-r` flag, the name can be changed in the
|
||||||
|
whole quantum package.
|
||||||
|
|
||||||
|
Usage
|
||||||
|
-----
|
||||||
|
|
||||||
|
.. code:: bash
|
||||||
|
|
||||||
|
qp_name <name> [-r <new_name> | --rename=<new_name>]
|
||||||
|
|
||||||
|
|
||||||
|
.. option:: -h
|
||||||
|
|
||||||
|
Prints the help message.
|
||||||
|
|
||||||
|
|
||||||
|
.. option:: -r <new_name> --rename=<new_name>
|
||||||
|
|
||||||
|
Renames the provider/subroutine/function and all its occurences.
|
||||||
|
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
|
||||||
|
It is safe to create a commit before renaming a provider, and then to
|
||||||
|
check what has changed using git diff.
|
||||||
|
|
||||||
|
|
35
doc/_sources/programmers_guide/qp_test.rst.txt
Normal file
35
doc/_sources/programmers_guide/qp_test.rst.txt
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
.. _qp_test:
|
||||||
|
|
||||||
|
=======
|
||||||
|
qp_test
|
||||||
|
=======
|
||||||
|
|
||||||
|
.. program:: qp_test
|
||||||
|
|
||||||
|
This command runs the consistency test of |qp|.
|
||||||
|
The tests are run with the |Bats| shell testing environment.
|
||||||
|
If the name of a test of its number is specified on the command line, only this
|
||||||
|
test will be run.
|
||||||
|
|
||||||
|
Usage
|
||||||
|
-----
|
||||||
|
|
||||||
|
.. code:: bash
|
||||||
|
|
||||||
|
qp_test [FLAGS] [TEST]
|
||||||
|
Flags :
|
||||||
|
[-a] Run all the tests
|
||||||
|
[-v] Verbose mode: shows the output of the runs
|
||||||
|
|
||||||
|
|
||||||
|
.. option:: -a
|
||||||
|
|
||||||
|
Runs all the tests. By default, run only the tests of the current
|
||||||
|
directory, and the directories below.
|
||||||
|
|
||||||
|
.. option:: -v
|
||||||
|
|
||||||
|
Verbose mode. Print the output of the running executions of |qp|.
|
||||||
|
|
||||||
|
|
||||||
|
|
86
doc/_sources/programs/cis.rst.txt
Normal file
86
doc/_sources/programs/cis.rst.txt
Normal file
@ -0,0 +1,86 @@
|
|||||||
|
.. _cis:
|
||||||
|
|
||||||
|
.. program:: cis
|
||||||
|
|
||||||
|
===
|
||||||
|
cis
|
||||||
|
===
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Configuration Interaction with Single excitations.
|
||||||
|
|
||||||
|
This program takes a reference Slater determinant of ROHF-like
|
||||||
|
occupancy, and performs all single excitations on top of it.
|
||||||
|
Disregarding spatial symmetry, it computes the `n_states` lowest
|
||||||
|
eigenstates of that CI matrix. (see :option:`determinants n_states`)
|
||||||
|
|
||||||
|
This program can be useful in many cases:
|
||||||
|
|
||||||
|
|
||||||
|
Ground state calculation
|
||||||
|
------------------------
|
||||||
|
|
||||||
|
To be sure to have the lowest |SCF| solution, perform an :ref:`scf`
|
||||||
|
(see the :ref:`hartree_fock` module), then a :ref:`cis`, save
|
||||||
|
the natural orbitals (see :ref:`save_natorb`) and re-run an
|
||||||
|
:ref:`scf` optimization from this |MO| guess.
|
||||||
|
|
||||||
|
|
||||||
|
Excited states calculations
|
||||||
|
---------------------------
|
||||||
|
|
||||||
|
The lowest excited states are much likely to be dominated by
|
||||||
|
single-excitations. Therefore, running a :ref:`cis` will save
|
||||||
|
the `n_states` lowest states within the |CIS| space in the |EZFIO|
|
||||||
|
directory, which can afterwards be used as guess wave functions for
|
||||||
|
a further multi-state |FCI| calculation if :option:`determinants read_wf`
|
||||||
|
is set to |true| before running the :ref:`fci`
|
||||||
|
executable.
|
||||||
|
|
||||||
|
|
||||||
|
If :option:`determinants s2_eig` is set to |true|, the |CIS|
|
||||||
|
will only retain states having the expected |S^2| value (see
|
||||||
|
:option:`determinants expected_s2`). Otherwise, the |CIS| will take
|
||||||
|
the lowest :option:`determinants n_states`, whatever multiplicity
|
||||||
|
they are.
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
|
||||||
|
To discard some orbitals, use the :ref:`qp_set_mo_class`
|
||||||
|
command to specify:
|
||||||
|
|
||||||
|
* *core* orbitals which will be always doubly occupied
|
||||||
|
|
||||||
|
* *act* orbitals where an electron can be either excited from or to
|
||||||
|
|
||||||
|
* *del* orbitals which will be never occupied
|
||||||
|
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`read_wf`
|
||||||
|
|
||||||
|
Calls:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:func:`run`
|
||||||
|
|
||||||
|
Touches:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`fock_matrix_ao_alpha`
|
||||||
|
* :c:data:`fock_matrix_ao_alpha`
|
||||||
|
* :c:data:`mo_coef`
|
||||||
|
* :c:data:`level_shift`
|
||||||
|
* :c:data:`mo_coef`
|
||||||
|
* :c:data:`read_wf`
|
78
doc/_sources/programs/cisd.rst.txt
Normal file
78
doc/_sources/programs/cisd.rst.txt
Normal file
@ -0,0 +1,78 @@
|
|||||||
|
.. _cisd:
|
||||||
|
|
||||||
|
.. program:: cisd
|
||||||
|
|
||||||
|
====
|
||||||
|
cisd
|
||||||
|
====
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Configuration Interaction with Single and Double excitations.
|
||||||
|
|
||||||
|
This program takes a reference Slater determinant of ROHF-like occupancy,
|
||||||
|
|
||||||
|
and performs all single and double excitations on top of it, disregarding
|
||||||
|
spatial symmetry and compute the "n_states" lowest eigenstates of that CI
|
||||||
|
matrix (see :option:`determinants n_states`).
|
||||||
|
|
||||||
|
This program can be useful in many cases:
|
||||||
|
|
||||||
|
* GROUND STATE CALCULATION: if even after a :c:func:`cis` calculation, natural
|
||||||
|
orbitals (see :c:func:`save_natorb`) and then :c:func:`scf` optimization, you are not sure to have the lowest scf
|
||||||
|
solution,
|
||||||
|
do the same strategy with the :c:func:`cisd` executable instead of the :c:func:`cis` exectuable to generate the natural
|
||||||
|
orbitals as a guess for the :c:func:`scf`.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
* EXCITED STATES CALCULATIONS: the lowest excited states are much likely to
|
||||||
|
be dominanted by single- or double-excitations.
|
||||||
|
Therefore, running a :c:func:`cisd` will save the "n_states" lowest states within
|
||||||
|
the CISD space
|
||||||
|
in the EZFIO folder, which can afterward be used as guess wave functions
|
||||||
|
for a further multi-state fci calculation if you specify "read_wf" = True
|
||||||
|
before running the fci executable (see :option:`determinants read_wf`).
|
||||||
|
Also, if you specify "s2_eig" = True, the cisd will only retain states
|
||||||
|
having the good value :math:`S^2` value
|
||||||
|
(see :option:`determinants expected_s2` and :option:`determinants s2_eig`).
|
||||||
|
If "s2_eig" = False, it will take the lowest n_states, whatever
|
||||||
|
multiplicity they are.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Note: if you would like to discard some orbitals, use
|
||||||
|
:ref:`qp_set_mo_class` to specify:
|
||||||
|
|
||||||
|
* "core" orbitals which will be always doubly occupied
|
||||||
|
|
||||||
|
* "act" orbitals where an electron can be either excited from or to
|
||||||
|
|
||||||
|
* "del" orbitals which will be never occupied
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`read_wf`
|
||||||
|
|
||||||
|
Calls:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:func:`run`
|
||||||
|
|
||||||
|
Touches:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`fock_matrix_ao_alpha`
|
||||||
|
* :c:data:`fock_matrix_ao_alpha`
|
||||||
|
* :c:data:`mo_coef`
|
||||||
|
* :c:data:`level_shift`
|
||||||
|
* :c:data:`mo_coef`
|
||||||
|
* :c:data:`read_wf`
|
37
doc/_sources/programs/diagonalize_h.rst.txt
Normal file
37
doc/_sources/programs/diagonalize_h.rst.txt
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
.. _diagonalize_h:
|
||||||
|
|
||||||
|
.. program:: diagonalize_h
|
||||||
|
|
||||||
|
=============
|
||||||
|
diagonalize_h
|
||||||
|
=============
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Program that extracts the :option:`determinants n_states` lowest states of the Hamiltonian within the set of Slater determinants stored in the EZFIO folder.
|
||||||
|
|
||||||
|
If :option:`determinants s2_eig` = True, it will retain only states
|
||||||
|
|
||||||
|
which corresponds to the desired value of :option:`determinants expected_s2`.
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`read_wf`
|
||||||
|
|
||||||
|
Calls:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:func:`routine`
|
||||||
|
|
||||||
|
Touches:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`read_wf`
|
89
doc/_sources/programs/fci.rst.txt
Normal file
89
doc/_sources/programs/fci.rst.txt
Normal file
@ -0,0 +1,89 @@
|
|||||||
|
.. _fci:
|
||||||
|
|
||||||
|
.. program:: fci
|
||||||
|
|
||||||
|
===
|
||||||
|
fci
|
||||||
|
===
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Selected Full Configuration Interaction with stochastic selection
|
||||||
|
and PT2.
|
||||||
|
|
||||||
|
This program performs a |CIPSI|-like selected |CI| using a
|
||||||
|
stochastic scheme for both the selection of the important Slater
|
||||||
|
determinants and the computation of the |PT2| correction. This
|
||||||
|
|CIPSI|-like algorithm will be performed for the lowest states of
|
||||||
|
the variational space (see :option:`determinants n_states`). The
|
||||||
|
|FCI| program will stop when reaching at least one the two following
|
||||||
|
conditions:
|
||||||
|
|
||||||
|
* number of Slater determinants > :option:`determinants n_det_max`
|
||||||
|
* |PT2| < :option:`perturbation pt2_max`
|
||||||
|
|
||||||
|
The following other options can be of interest:
|
||||||
|
|
||||||
|
:option:`determinants read_wf`
|
||||||
|
When set to |false|, the program starts with a ROHF-like Slater
|
||||||
|
determinant as a guess wave function. When set to |true|, the
|
||||||
|
program starts with the wave function(s) stored in the |EZFIO|
|
||||||
|
directory as guess wave function(s).
|
||||||
|
|
||||||
|
:option:`determinants s2_eig`
|
||||||
|
When set to |true|, the selection will systematically add all the
|
||||||
|
necessary Slater determinants in order to have a pure spin wave
|
||||||
|
function with an |S^2| value corresponding to
|
||||||
|
:option:`determinants expected_s2`.
|
||||||
|
|
||||||
|
For excited states calculations, it is recommended to start with
|
||||||
|
:ref:`.cis.` or :ref:`.cisd.` guess wave functions, eventually in
|
||||||
|
a restricted set of |MOs|, and to set :option:`determinants s2_eig`
|
||||||
|
to |true|.
|
||||||
|
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`psi_coef`
|
||||||
|
* :c:data:`is_zmq_slave`
|
||||||
|
* :c:data:`do_pt2`
|
||||||
|
* :c:data:`mo_two_e_integrals_in_map`
|
||||||
|
* :c:data:`psi_det`
|
||||||
|
|
||||||
|
Calls:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:func:`run_cipsi`
|
||||||
|
* :c:func:`run_slave_cipsi`
|
||||||
|
* :c:func:`run_stochastic_cipsi`
|
||||||
|
|
||||||
|
Touches:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`ci_electronic_energy`
|
||||||
|
* :c:data:`ci_electronic_energy`
|
||||||
|
* :c:data:`ci_energy`
|
||||||
|
* :c:data:`ci_electronic_energy`
|
||||||
|
* :c:data:`n_det`
|
||||||
|
* :c:data:`psi_occ_pattern`
|
||||||
|
* :c:data:`c0_weight`
|
||||||
|
* :c:data:`distributed_davidson`
|
||||||
|
* :c:data:`psi_coef`
|
||||||
|
* :c:data:`psi_det_sorted_bit`
|
||||||
|
* :c:data:`psi_det`
|
||||||
|
* :c:data:`psi_det_size`
|
||||||
|
* :c:data:`psi_det_sorted_bit`
|
||||||
|
* :c:data:`psi_occ_pattern`
|
||||||
|
* :c:data:`pt2_e0_denominator`
|
||||||
|
* :c:data:`pt2_stoch_istate`
|
||||||
|
* :c:data:`read_wf`
|
||||||
|
* :c:data:`state_average_weight`
|
||||||
|
* :c:data:`threshold_generators`
|
40
doc/_sources/programs/fcidump.rst.txt
Normal file
40
doc/_sources/programs/fcidump.rst.txt
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
.. _fcidump:
|
||||||
|
|
||||||
|
.. program:: fcidump
|
||||||
|
|
||||||
|
=======
|
||||||
|
fcidump
|
||||||
|
=======
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Produce a regular FCIDUMP file from the |MOs| stored in the |EZFIO| folder.
|
||||||
|
|
||||||
|
To specify an active space, the class of the mos have to set in the |EZFIO| folder (see :ref:`qp_set_mo_class`).
|
||||||
|
|
||||||
|
The fcidump program supports 3 types of MO_class :
|
||||||
|
|
||||||
|
* the "core" orbitals which are always doubly occupied in the calculation
|
||||||
|
|
||||||
|
* the "del" orbitals that are never occupied in the calculation
|
||||||
|
|
||||||
|
* the "act" orbitals that will be occupied by a varying number of electrons
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`elec_beta_num`
|
||||||
|
* :c:data:`ezfio_filename`
|
||||||
|
* :c:data:`core_fock_operator`
|
||||||
|
* :c:data:`elec_num`
|
||||||
|
* :c:data:`mo_two_e_integrals_in_map`
|
||||||
|
* :c:data:`elec_alpha_num`
|
||||||
|
* :c:data:`mo_one_e_integrals`
|
||||||
|
* :c:data:`n_core_orb`
|
||||||
|
* :c:data:`mo_integrals_threshold`
|
||||||
|
* :c:data:`list_inact`
|
||||||
|
* :c:data:`mo_integrals_map`
|
||||||
|
* :c:data:`core_energy`
|
31
doc/_sources/programs/four_idx_transform.rst.txt
Normal file
31
doc/_sources/programs/four_idx_transform.rst.txt
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
.. _four_idx_transform:
|
||||||
|
|
||||||
|
.. program:: four_idx_transform
|
||||||
|
|
||||||
|
==================
|
||||||
|
four_idx_transform
|
||||||
|
==================
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
4-index transformation of two-electron integrals from |AO| to |MO| integrals.
|
||||||
|
|
||||||
|
This program will compute the two-electron integrals on the |MO| basis and store it into the |EZFIO| folder.
|
||||||
|
|
||||||
|
This program can be useful if the AO --> MO transformation is an expensive step by itself.
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`io_mo_two_e_integrals`
|
||||||
|
* :c:data:`mo_two_e_integrals_in_map`
|
||||||
|
|
||||||
|
Touches:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`io_mo_two_e_integrals`
|
52
doc/_sources/programs/ks_scf.rst.txt
Normal file
52
doc/_sources/programs/ks_scf.rst.txt
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
.. _ks_scf:
|
||||||
|
|
||||||
|
.. program:: ks_scf
|
||||||
|
|
||||||
|
======
|
||||||
|
ks_scf
|
||||||
|
======
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Produce `Kohn_Sham` MO orbital
|
||||||
|
output: mo_basis.mo_num mo_basis.mo_label mo_basis.ao_md5 mo_basis.mo_coef mo_basis.mo_occ
|
||||||
|
output: kohn_sham.energy
|
||||||
|
optional: mo_basis.mo_coef
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`io_mo_one_e_integrals`
|
||||||
|
* :c:data:`mu_erf_dft`
|
||||||
|
* :c:data:`density_for_dft`
|
||||||
|
* :c:data:`io_ao_one_e_integrals`
|
||||||
|
|
||||||
|
Calls:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:func:`check_coherence_functional`
|
||||||
|
* :c:func:`create_guess`
|
||||||
|
* :c:func:`orthonormalize_mos`
|
||||||
|
* :c:func:`run`
|
||||||
|
|
||||||
|
Touches:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`fock_matrix_ao_alpha`
|
||||||
|
* :c:data:`fock_matrix_ao_alpha`
|
||||||
|
* :c:data:`fock_matrix_ao_alpha`
|
||||||
|
* :c:data:`fock_matrix_ao_alpha`
|
||||||
|
* :c:data:`mo_coef`
|
||||||
|
* :c:data:`density_for_dft`
|
||||||
|
* :c:data:`io_ao_one_e_integrals`
|
||||||
|
* :c:data:`io_mo_one_e_integrals`
|
||||||
|
* :c:data:`level_shift`
|
||||||
|
* :c:data:`mo_coef`
|
||||||
|
* :c:data:`mo_label`
|
29
doc/_sources/programs/molden.rst.txt
Normal file
29
doc/_sources/programs/molden.rst.txt
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
.. _molden:
|
||||||
|
|
||||||
|
.. program:: molden
|
||||||
|
|
||||||
|
======
|
||||||
|
molden
|
||||||
|
======
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Produce a Molden file
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`ezfio_filename`
|
||||||
|
|
||||||
|
Calls:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:func:`write_ao_basis`
|
||||||
|
* :c:func:`write_geometry`
|
||||||
|
* :c:func:`write_intro_gamess`
|
||||||
|
* :c:func:`write_mo_basis`
|
32
doc/_sources/programs/print_e_conv.rst.txt
Normal file
32
doc/_sources/programs/print_e_conv.rst.txt
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
.. _print_e_conv:
|
||||||
|
|
||||||
|
.. program:: print_e_conv
|
||||||
|
|
||||||
|
============
|
||||||
|
print_e_conv
|
||||||
|
============
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
program that prints in a human readable format the convergence of the CIPSI algorithm.
|
||||||
|
|
||||||
|
for all istate, this program produces
|
||||||
|
|
||||||
|
* a file "EZFIO.istate.conv" containing the variational and var+PT2 energies as a function of N_det
|
||||||
|
|
||||||
|
* for istate > 1, a file EZFIO.istate.delta_e.conv containing the energy difference (both var and var+PT2) with the ground state as a function of N_det
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`ezfio_filename`
|
||||||
|
|
||||||
|
Calls:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:func:`routine_e_conv`
|
39
doc/_sources/programs/print_wf.rst.txt
Normal file
39
doc/_sources/programs/print_wf.rst.txt
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
.. _print_wf:
|
||||||
|
|
||||||
|
.. program:: print_wf
|
||||||
|
|
||||||
|
========
|
||||||
|
print_wf
|
||||||
|
========
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Print the ground state wave function stored in the |EZFIO| folder in the intermediate normalization.
|
||||||
|
|
||||||
|
It also prints a lot of information regarding the excitation operators from the reference determinant
|
||||||
|
|
||||||
|
and a first-order perturbative analysis of the wave function.
|
||||||
|
|
||||||
|
If the wave function strongly deviates from the first-order analysis, something funny is going on :)
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`read_wf`
|
||||||
|
|
||||||
|
Calls:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:func:`routine`
|
||||||
|
|
||||||
|
Touches:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`read_wf`
|
54
doc/_sources/programs/pt2.rst.txt
Normal file
54
doc/_sources/programs/pt2.rst.txt
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
.. _pt2:
|
||||||
|
|
||||||
|
.. program:: pt2
|
||||||
|
|
||||||
|
===
|
||||||
|
pt2
|
||||||
|
===
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Second order perturbative correction to the wave function contained in the EZFIO directory.
|
||||||
|
|
||||||
|
This programs runs the stochastic PT2 correction on all "n_states" wave function stored in the EZFIO folder (see :option:`determinant n_states`).
|
||||||
|
|
||||||
|
The option for the PT2 correction are the "pt2_relative_error" which is the relative stochastic
|
||||||
|
|
||||||
|
error on the PT2 to reach before stopping the stochastic sampling. (see :option:`perturbation pt2_relative_error`)
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`is_zmq_slave`
|
||||||
|
* :c:data:`mo_two_e_integrals_in_map`
|
||||||
|
* :c:data:`psi_energy`
|
||||||
|
* :c:data:`threshold_generators`
|
||||||
|
* :c:data:`read_wf`
|
||||||
|
|
||||||
|
Calls:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:func:`run`
|
||||||
|
* :c:func:`run_slave_cipsi`
|
||||||
|
|
||||||
|
Touches:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`fock_matrix_ao_alpha`
|
||||||
|
* :c:data:`fock_matrix_ao_alpha`
|
||||||
|
* :c:data:`mo_coef`
|
||||||
|
* :c:data:`distributed_davidson`
|
||||||
|
* :c:data:`level_shift`
|
||||||
|
* :c:data:`mo_coef`
|
||||||
|
* :c:data:`pt2_e0_denominator`
|
||||||
|
* :c:data:`pt2_stoch_istate`
|
||||||
|
* :c:data:`read_wf`
|
||||||
|
* :c:data:`state_average_weight`
|
||||||
|
* :c:data:`threshold_generators`
|
53
doc/_sources/programs/rs_ks_scf.rst.txt
Normal file
53
doc/_sources/programs/rs_ks_scf.rst.txt
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
.. _rs_ks_scf:
|
||||||
|
|
||||||
|
.. program:: rs_ks_scf
|
||||||
|
|
||||||
|
=========
|
||||||
|
rs_ks_scf
|
||||||
|
=========
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Produce `Range_separated_Kohn_Sham` MO orbital
|
||||||
|
output: mo_basis.mo_num mo_basis.mo_label mo_basis.ao_md5 mo_basis.mo_coef mo_basis.mo_occ
|
||||||
|
output: kohn_sham.energy
|
||||||
|
optional: mo_basis.mo_coef
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`io_mo_one_e_integrals`
|
||||||
|
* :c:data:`mu_erf_dft`
|
||||||
|
* :c:data:`density_for_dft`
|
||||||
|
* :c:data:`io_ao_one_e_integrals`
|
||||||
|
* :c:data:`read_wf`
|
||||||
|
|
||||||
|
Calls:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:func:`check_coherence_functional`
|
||||||
|
* :c:func:`create_guess`
|
||||||
|
* :c:func:`orthonormalize_mos`
|
||||||
|
* :c:func:`run`
|
||||||
|
|
||||||
|
Touches:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`fock_matrix_ao_alpha`
|
||||||
|
* :c:data:`fock_matrix_ao_alpha`
|
||||||
|
* :c:data:`fock_matrix_ao_alpha`
|
||||||
|
* :c:data:`fock_matrix_ao_alpha`
|
||||||
|
* :c:data:`mo_coef`
|
||||||
|
* :c:data:`density_for_dft`
|
||||||
|
* :c:data:`io_ao_one_e_integrals`
|
||||||
|
* :c:data:`io_mo_one_e_integrals`
|
||||||
|
* :c:data:`level_shift`
|
||||||
|
* :c:data:`mo_coef`
|
||||||
|
* :c:data:`mo_label`
|
48
doc/_sources/programs/save_natorb.rst.txt
Normal file
48
doc/_sources/programs/save_natorb.rst.txt
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
.. _save_natorb:
|
||||||
|
|
||||||
|
.. program:: save_natorb
|
||||||
|
|
||||||
|
===========
|
||||||
|
save_natorb
|
||||||
|
===========
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Save natural MOs into the EZFIO
|
||||||
|
|
||||||
|
This program reads the wave function stored in the EZFIO folder,
|
||||||
|
|
||||||
|
extracts the corresponding natural orbitals and set them as the new MOs
|
||||||
|
|
||||||
|
If this is a multi-state calculation, the density matrix that produces the natural orbitals
|
||||||
|
|
||||||
|
is obtained from a state-averaged of the density matrices of each state with the corresponding state_average_weight (see the doc of state_average_weight).
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`read_wf`
|
||||||
|
|
||||||
|
Calls:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:func:`ezfio_set_mo_one_e_ints_io_mo_integrals_e_n`
|
||||||
|
* :c:func:`ezfio_set_mo_one_e_ints_io_mo_integrals_kinetic`
|
||||||
|
* :c:func:`ezfio_set_mo_one_e_ints_io_mo_integrals_pseudo`
|
||||||
|
* :c:func:`ezfio_set_mo_one_e_ints_io_mo_one_e_integrals`
|
||||||
|
* :c:func:`ezfio_set_mo_two_e_ints_io_mo_two_e_integrals`
|
||||||
|
* :c:func:`save_natural_mos`
|
||||||
|
* :c:func:`save_ref_determinant`
|
||||||
|
|
||||||
|
Touches:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`mo_occ`
|
||||||
|
* :c:data:`read_wf`
|
38
doc/_sources/programs/save_one_e_dm.rst.txt
Normal file
38
doc/_sources/programs/save_one_e_dm.rst.txt
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
.. _save_one_e_dm:
|
||||||
|
|
||||||
|
.. program:: save_one_e_dm
|
||||||
|
|
||||||
|
=============
|
||||||
|
save_one_e_dm
|
||||||
|
=============
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
programs that computes the one body density on the mo basis for alpha and beta electrons
|
||||||
|
from the wave function stored in the EZFIO folder, and then save it into the EZFIO folder aux_quantities.
|
||||||
|
|
||||||
|
Then, the global variable data_one_e_dm_alpha_mo and data_one_e_dm_beta_mo will automatically read this density in a further calculation.
|
||||||
|
|
||||||
|
This can be used to perform damping on the density in RS-DFT calculation (see the density_for_dft module).
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`read_wf`
|
||||||
|
|
||||||
|
Calls:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:func:`routine_save_one_e_dm`
|
||||||
|
|
||||||
|
Touches:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`read_wf`
|
34
doc/_sources/programs/save_ortho_mos.rst.txt
Normal file
34
doc/_sources/programs/save_ortho_mos.rst.txt
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
.. _save_ortho_mos:
|
||||||
|
|
||||||
|
.. program:: save_ortho_mos
|
||||||
|
|
||||||
|
==============
|
||||||
|
save_ortho_mos
|
||||||
|
==============
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Save orthonormalized MOs in the EZFIO.
|
||||||
|
|
||||||
|
This program reads the current MOs, computes the corresponding overlap matrix in the MO basis
|
||||||
|
|
||||||
|
and perform a Lowdin orthonormalization : :math:`MO_{new} = S^{-1/2} MO_{guess}`.
|
||||||
|
|
||||||
|
Thanks to the Lowdin orthonormalization, the new MOs are the most similar to the guess MOs.
|
||||||
|
|
||||||
|
Calls:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:func:`orthonormalize_mos`
|
||||||
|
* :c:func:`save_mos`
|
||||||
|
|
||||||
|
Touches:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`mo_coef`
|
||||||
|
* :c:data:`mo_label`
|
66
doc/_sources/programs/scf.rst.txt
Normal file
66
doc/_sources/programs/scf.rst.txt
Normal file
@ -0,0 +1,66 @@
|
|||||||
|
.. _scf:
|
||||||
|
|
||||||
|
.. program:: scf
|
||||||
|
|
||||||
|
===
|
||||||
|
scf
|
||||||
|
===
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
The :ref:`scf` program performs *Restricted* Hartree-Fock
|
||||||
|
calculations (the spatial part of the |MOs| is common for alpha and beta
|
||||||
|
spinorbitals).
|
||||||
|
|
||||||
|
It performs the following actions:
|
||||||
|
|
||||||
|
#. 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
|
||||||
|
|
||||||
|
For the keywords related to the |SCF| procedure, see the ``scf_utils``
|
||||||
|
directory where you will find all options.
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
To start again a fresh |SCF| calculation, the |MOs| can be reset by
|
||||||
|
running the :ref:`qp_reset` command.
|
||||||
|
|
||||||
|
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`.
|
||||||
|
|
||||||
|
.. _DIIS: https://en.wikipedia.org/w/index.php?title=DIIS
|
||||||
|
.. _level-shifting: https://doi.org/10.1002/qua.560070407
|
||||||
|
|
||||||
|
|
||||||
|
Calls:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:func:`create_guess`
|
||||||
|
* :c:func:`orthonormalize_mos`
|
||||||
|
* :c:func:`run`
|
||||||
|
|
||||||
|
Touches:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`fock_matrix_ao_alpha`
|
||||||
|
* :c:data:`fock_matrix_ao_alpha`
|
||||||
|
* :c:data:`fock_matrix_ao_alpha`
|
||||||
|
* :c:data:`fock_matrix_ao_alpha`
|
||||||
|
* :c:data:`mo_coef`
|
||||||
|
* :c:data:`level_shift`
|
||||||
|
* :c:data:`mo_coef`
|
||||||
|
* :c:data:`mo_label`
|
35
doc/_sources/programs/write_integrals_erf.rst.txt
Normal file
35
doc/_sources/programs/write_integrals_erf.rst.txt
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
.. _write_integrals_erf:
|
||||||
|
|
||||||
|
.. program:: write_integrals_erf
|
||||||
|
|
||||||
|
===================
|
||||||
|
write_integrals_erf
|
||||||
|
===================
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Saves the two-electron integrals with the :math:`erf(\mu r_{12})/r_{12}` oprerator into the EZFIO folder
|
||||||
|
|
||||||
|
Needs:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`io_mo_two_e_integrals`
|
||||||
|
* :c:data:`io_ao_two_e_integrals`
|
||||||
|
|
||||||
|
Calls:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:func:`routine`
|
||||||
|
|
||||||
|
Touches:
|
||||||
|
|
||||||
|
.. hlist::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
* :c:data:`io_ao_two_e_integrals`
|
||||||
|
* :c:data:`io_mo_two_e_integrals`
|
37
doc/_sources/users_guide/configure.rst.txt
Normal file
37
doc/_sources/users_guide/configure.rst.txt
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
=========
|
||||||
|
configure
|
||||||
|
=========
|
||||||
|
|
||||||
|
|
||||||
|
.. program:: configure
|
||||||
|
|
||||||
|
Program that can either configure the compilations options or download/install
|
||||||
|
external dependencies (see the installation description).
|
||||||
|
|
||||||
|
Usage
|
||||||
|
-----
|
||||||
|
|
||||||
|
.. code:: 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:: bash
|
||||||
|
|
||||||
|
./configure
|
||||||
|
./configure -c config/gfortran.cfg
|
||||||
|
|
39
doc/_sources/users_guide/excited_states.rst.txt
Normal file
39
doc/_sources/users_guide/excited_states.rst.txt
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
.. _excited_states:
|
||||||
|
|
||||||
|
==============
|
||||||
|
Excited states
|
||||||
|
==============
|
||||||
|
|
||||||
|
It is possible to run excited states calculations with the quantum
|
||||||
|
package. To do this, set :option:`determinants n_states` to the number
|
||||||
|
of requested states. The selection criterion will be the maximum of the
|
||||||
|
selection criteria for each state. If the Davidson diagonalization has
|
||||||
|
difficulties to converge, increase the :option:`davidson n_states_diag`
|
||||||
|
value.
|
||||||
|
|
||||||
|
When computing multiple states, it is good to have the
|
||||||
|
:option:`determinants s2_eig` flag |true|. This will force the Davidson
|
||||||
|
algorithm to choose only vectors with a value of |S^2| equal to
|
||||||
|
:option:`determinants expected_s2`. Otherwise, different spin states
|
||||||
|
will come out in the diagonalization.
|
||||||
|
|
||||||
|
The |qp| doesn't take account of the symmetry. Due to numerical noise,
|
||||||
|
excited states of different symmetries may enter in the calculation.
|
||||||
|
Note that it is possible to make state-average calculation of states
|
||||||
|
with different symmetries and/or different spin multiplicities.
|
||||||
|
|
||||||
|
To include excited state of all possible symmetries, a simple trick is
|
||||||
|
to run a preliminary multi-state |CIS| calculation using the :ref:`CIS`
|
||||||
|
program, and then running the selected |FCI| restarting from the |CIS|
|
||||||
|
states, setting :option:`determinants read_wf` to |true|.
|
||||||
|
|
||||||
|
Usually, it is good practice to use state-averaged natural |MOs| so that
|
||||||
|
all states have |MOs| of comparable quality. This allows for a faster
|
||||||
|
convergence of excitation energies.
|
||||||
|
|
||||||
|
|
||||||
|
.. seealso::
|
||||||
|
|
||||||
|
The documentation of the :c:func:`scf`, :c:func:`cis` and
|
||||||
|
:c:func:`fci` programs.
|
||||||
|
|
21
doc/_sources/users_guide/index.rst.txt
Normal file
21
doc/_sources/users_guide/index.rst.txt
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
Index of commands
|
||||||
|
=================
|
||||||
|
|
||||||
|
.. toctree::
|
||||||
|
:maxdepth: 1
|
||||||
|
:glob:
|
||||||
|
|
||||||
|
configure
|
||||||
|
qpsh
|
||||||
|
qp_*
|
||||||
|
|
||||||
|
|
||||||
|
Index of programs
|
||||||
|
=================
|
||||||
|
|
||||||
|
.. toctree::
|
||||||
|
:maxdepth: 1
|
||||||
|
:glob:
|
||||||
|
|
||||||
|
/programs/*
|
||||||
|
|
30
doc/_sources/users_guide/interfaces.rst.txt
Normal file
30
doc/_sources/users_guide/interfaces.rst.txt
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
Interfaces
|
||||||
|
==========
|
||||||
|
|
||||||
|
.. TODO
|
||||||
|
|
||||||
|
A few interfaces to external codes are available.
|
||||||
|
|
||||||
|
\* -> |qp|
|
||||||
|
----------
|
||||||
|
|
||||||
|
`GAMESS`_ / Gaussian
|
||||||
|
Using the |resultsFile| Python library, the geometry and |MOs| can be read.
|
||||||
|
This is useful to make calculations with |CASSCF| orbitals
|
||||||
|
|
||||||
|
|qp| -> \*
|
||||||
|
----------
|
||||||
|
|
||||||
|
`Molden`_
|
||||||
|
3D plots of Molecular Orbitals
|
||||||
|
|
||||||
|
FCIDUMP
|
||||||
|
Interface with the |FCI| - |QMC| program `NECI`_, or the semi-stochastic
|
||||||
|
Heat-Bath |CI| program `Dice`_.
|
||||||
|
|
||||||
|
`QMCPack`_ / `CHAMP <https://www.utwente.nl/en/tnw/ccp/research/CHAMP.html>`_ /
|
||||||
|
`QMC=Chem`_
|
||||||
|
Trial wave functions can be used for |QMC|, with or without pseudo-potentials.
|
||||||
|
These interfaces are provided as `external plugins`_.
|
||||||
|
|
||||||
|
|
64
doc/_sources/users_guide/natural_orbitals.rst.txt
Normal file
64
doc/_sources/users_guide/natural_orbitals.rst.txt
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
Natural orbitals
|
||||||
|
================
|
||||||
|
|
||||||
|
Summary
|
||||||
|
-------
|
||||||
|
|
||||||
|
To produce state-average natural orbitals, run ::
|
||||||
|
|
||||||
|
qp_run save_natorb file.ezfio
|
||||||
|
|
||||||
|
The MOs will be replaced, so the two-electron integrals and the wave
|
||||||
|
function are invalidated as well.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Extracting natural orbitals
|
||||||
|
---------------------------
|
||||||
|
|
||||||
|
Once obtained the near |FCI| wave function, one can obtain many
|
||||||
|
Onquantities related to it. e of these quantities are the natural
|
||||||
|
Onorbitals which have the properties of diagonalizing the one-body
|
||||||
|
Ondensity matrix:
|
||||||
|
|
||||||
|
.. math::
|
||||||
|
|
||||||
|
\rho_{ij} = \delta_{ij}
|
||||||
|
|
||||||
|
where the element of the one-body density matrix :math:`\rho_{ij}` is
|
||||||
|
define as:
|
||||||
|
|
||||||
|
|
||||||
|
.. math::
|
||||||
|
|
||||||
|
\rho_{ij} = \langle \Psi | \left( a^{\dagger}_{j,\alpha} a_{i,\alpha} + a^{\dagger}_{j,\beta} a_{i,\beta} \right) | \Psi \rangle
|
||||||
|
|
||||||
|
|
||||||
|
These orbitals are in general known to be better than the usual |HF|
|
||||||
|
|MOs| as they are obtained from a correlated wave function. To use these
|
||||||
|
orbitals for future calculations, one has to replace the current |MOs|
|
||||||
|
by the natural orbitals. To do so, just run:
|
||||||
|
|
||||||
|
.. code::
|
||||||
|
|
||||||
|
qp_run save_natorb file.ezfio
|
||||||
|
|
||||||
|
|
||||||
|
Hands on
|
||||||
|
--------
|
||||||
|
|
||||||
|
.. important::
|
||||||
|
|
||||||
|
As the |MOs| are changed, for the sake of coherence of future
|
||||||
|
calculations, the save_natorb program *automatically removes the
|
||||||
|
current wave function* stored in the |EZFIO| database and replaces
|
||||||
|
it by a single Slater determinant corresponding to a |HF| occupation
|
||||||
|
of the new spin orbitals. Also, all the keywords to read the one-
|
||||||
|
and two-electron integrals on the |MO| basis are set to ``None`` in
|
||||||
|
order to be sure to avoid reading integrals incompatible with the
|
||||||
|
current set of |MOs|.
|
||||||
|
|
||||||
|
.. seealso::
|
||||||
|
|
||||||
|
The documentation of the :c:func:`save_natorb` program.
|
||||||
|
|
54
doc/_sources/users_guide/plugins.rst.txt
Normal file
54
doc/_sources/users_guide/plugins.rst.txt
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
=============================
|
||||||
|
Working with external plugins
|
||||||
|
=============================
|
||||||
|
|
||||||
|
|
||||||
|
|qp| has very few executables out of the box. Most of the time,
|
||||||
|
external plugins need to be downloaded and installed in the
|
||||||
|
:file:`$QP_ROOT/plugins` directory.
|
||||||
|
|
||||||
|
Plugins are usually hosted in external repositories. To download a
|
||||||
|
plugin, the remote repository needs to be downloaded, and the plugins of
|
||||||
|
the repository can be selected for installation.
|
||||||
|
|
||||||
|
To download an external repository of plugins, run the following
|
||||||
|
command:
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
qp_plugins download http://somewhere/over/the/rainbow/ext_repo
|
||||||
|
|
||||||
|
|
||||||
|
This downloads a copy of the repository of external plugins :file:`ext_repo`
|
||||||
|
in :file:`$QP_ROOT/plugins`.
|
||||||
|
|
||||||
|
The list of available uninstalled plugins can be seen using:
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
qp_plugins list -u
|
||||||
|
|
||||||
|
|
||||||
|
Now, the specific plugin :file:`ext_module` contained in the repository
|
||||||
|
:file:`ext_repo` can be installed using:
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
qp_plugins install ext_module
|
||||||
|
|
||||||
|
|
||||||
|
The module is now accessible via a symbolic link in :file:`$QP_ROOT/src`,
|
||||||
|
and can be compiled as any module, running |Ninja|.
|
||||||
|
|
||||||
|
|
||||||
|
To remove the module, run
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
qp_plugins uninstall ext_module
|
||||||
|
|
||||||
|
|
||||||
|
.. seealso::
|
||||||
|
|
||||||
|
For a more detailed explanation and an example, see :ref:`qp_plugins`.
|
||||||
|
|
42
doc/_sources/users_guide/printing.rst.txt
Normal file
42
doc/_sources/users_guide/printing.rst.txt
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
Printing the near-|FCI| wave function
|
||||||
|
=====================================
|
||||||
|
|
||||||
|
Once obtained the near-|FCI| energy, one can also take a closer look at
|
||||||
|
the wave function stored in the |EZFIO| database. If the wave function
|
||||||
|
contains less than :math:`10^4` determinants, you can directly read it
|
||||||
|
with the :ref:`qp_edit` command. Just run
|
||||||
|
|
||||||
|
.. code::
|
||||||
|
|
||||||
|
qp_edit file.ezfio
|
||||||
|
|
||||||
|
|
||||||
|
.. important::
|
||||||
|
|
||||||
|
The :ref:`qp_edit` mode virtually makes human-friendly the
|
||||||
|
architecture of the |EZFIO| database through the use of a
|
||||||
|
the text editor defined by the :envvar:`EDITOR` environment
|
||||||
|
variable.
|
||||||
|
|
||||||
|
|
||||||
|
Then, look for the word *hand* when you are in the :ref:`qp_edit`
|
||||||
|
mode. If the research is negative, then it means that the wave
|
||||||
|
function stored in the |EZFIO| database is too large to be edited
|
||||||
|
interactively in :ref:`qp_edit` mode. An alternative is to use the
|
||||||
|
:command:`print_wf` command:
|
||||||
|
|
||||||
|
.. code::
|
||||||
|
|
||||||
|
qp_run print_wf file.ezfio | tee file.ezfio.fci_natorb.wf
|
||||||
|
|
||||||
|
This program will, by default, print out the first :math:`10^4`
|
||||||
|
determinants whatever the size of the wave function stored in the
|
||||||
|
|EZFIO| folder. If you want to change the number of printed Slater
|
||||||
|
determinants, just change the :option:`determinants n_det_print_wf`
|
||||||
|
keyword using the :ref:`qp_edit` tool.
|
||||||
|
|
||||||
|
.. seealso::
|
||||||
|
|
||||||
|
The documentation of the :ref:`print_wf` program.
|
||||||
|
|
||||||
|
|
44
doc/_sources/users_guide/qp_convert_output_to_ezfio.rst.txt
Normal file
44
doc/_sources/users_guide/qp_convert_output_to_ezfio.rst.txt
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
.. _qp_convert_output_to_ezfio:
|
||||||
|
|
||||||
|
qp_convert_output_to_ezfio
|
||||||
|
==========================
|
||||||
|
|
||||||
|
.. program:: qp_convert_output_to_ezfio
|
||||||
|
|
||||||
|
This Python script uses the `resultsFile`_ Python library to gather the
|
||||||
|
geometry, |AOs| and |MOs| from output files of |GAMESS| or Gaussian, and
|
||||||
|
puts this data in an |EZFIO| database. Some constraints are necessary
|
||||||
|
in the output file : the run needs to be a single point |HF|, |DFT| or
|
||||||
|
|CAS| |SCF|.
|
||||||
|
|
||||||
|
Usage
|
||||||
|
-----
|
||||||
|
|
||||||
|
.. code:: bash
|
||||||
|
|
||||||
|
qp_convert_output_to_ezfio [-o EZFIO_DIR] FILE
|
||||||
|
|
||||||
|
.. option:: -o, --output=EZFIO_DIR
|
||||||
|
|
||||||
|
Renames the |EZFIO| directory. If this option is not present, the
|
||||||
|
default name fill be :file:`FILE.ezfio`
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
|
||||||
|
All the parameters of the wave functgion need to be presente in the
|
||||||
|
output file : complete description of the |AO| basis set, full set of
|
||||||
|
molecular orbitals, etc.
|
||||||
|
|
||||||
|
The following keywords are necessary for GAU$$IAN ::
|
||||||
|
|
||||||
|
GFPRINT pop=Full
|
||||||
|
|
||||||
|
|
||||||
|
Example
|
||||||
|
-------
|
||||||
|
|
||||||
|
.. code:: bash
|
||||||
|
|
||||||
|
qp_convert_output_to_ezfio h2o.out -o h2o
|
||||||
|
|
||||||
|
|
169
doc/_sources/users_guide/qp_create_ezfio_from_xyz.rst.txt
Normal file
169
doc/_sources/users_guide/qp_create_ezfio_from_xyz.rst.txt
Normal file
@ -0,0 +1,169 @@
|
|||||||
|
.. _qp_create_ezfio:
|
||||||
|
|
||||||
|
qp_create_ezfio
|
||||||
|
===============
|
||||||
|
|
||||||
|
.. program:: qp_create_ezfio
|
||||||
|
|
||||||
|
This command creates an |EZFIO| directory from a standard `xyz` file or
|
||||||
|
from a `z-matrix` file in Gaussian format.
|
||||||
|
|
||||||
|
Usage
|
||||||
|
-----
|
||||||
|
|
||||||
|
.. code:: bash
|
||||||
|
|
||||||
|
qp_create_ezfio [-a] -b <string> [-c <int>] [-d <float>]
|
||||||
|
[-h] [-m <int>] [-o EZFIO_DIR] [-p <string>] [-x] [--] FILE
|
||||||
|
|
||||||
|
|
||||||
|
.. option:: -a, --au
|
||||||
|
|
||||||
|
If present, input geometry is in atomic units.
|
||||||
|
|
||||||
|
|
||||||
|
.. option:: -b, --basis=<string>
|
||||||
|
|
||||||
|
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| This option is mandatory .
|
||||||
|
|
||||||
|
If ``<string>`` is set to ``show``, the list of all available basis
|
||||||
|
sets is displayed.
|
||||||
|
|
||||||
|
|
||||||
|
.. option:: -c, --charge=<int>
|
||||||
|
|
||||||
|
Total charge of the molecule. Default is 0.
|
||||||
|
|
||||||
|
|
||||||
|
.. option:: -d, --dummy=<float>
|
||||||
|
|
||||||
|
Add dummy atoms (X) between atoms when the distance between two atoms
|
||||||
|
is less than :math:`x \times \sum R_\mathrm{cov}`, the covalent radii
|
||||||
|
of the atoms. The default is x=0, so no dummy atom is added.
|
||||||
|
|
||||||
|
|
||||||
|
.. option:: -h, --help
|
||||||
|
|
||||||
|
Print the help text and exit
|
||||||
|
|
||||||
|
|
||||||
|
.. option:: -m, --multiplicity=<int>
|
||||||
|
|
||||||
|
Spin multiplicity :math:`2S+1` of the molecule. Default is 1.
|
||||||
|
|
||||||
|
|
||||||
|
.. option:: -o, --output=EZFIO_DIR
|
||||||
|
|
||||||
|
Name of the created |EZFIO| directory.
|
||||||
|
|
||||||
|
.. option:: -p <string>, --pseudo=<string>
|
||||||
|
|
||||||
|
Name of the pseudo-potential. Follows the same conventions as the basis set.
|
||||||
|
|
||||||
|
.. option:: -x, --cart
|
||||||
|
|
||||||
|
Compute |AOs| in the Cartesian basis set (6d, 10f, ...)
|
||||||
|
|
||||||
|
|
||||||
|
Using custom atomic basis sets
|
||||||
|
------------------------------
|
||||||
|
|
||||||
|
If a file with the same name as the basis set exists, this file will
|
||||||
|
be read. For example, if the file containing the basis set is named
|
||||||
|
``custom.basis``, and the *xyz* geometry is in ``molecule.xyz``, the
|
||||||
|
following should be used::
|
||||||
|
|
||||||
|
qp_create_ezfio -b custom.basis molecule.xyz
|
||||||
|
|
||||||
|
Basis set files should be given in |GAMESS| format, where the full
|
||||||
|
names of the atoms are given, and the basis sets for each element are
|
||||||
|
separated by a blank line. Here is an example ::
|
||||||
|
|
||||||
|
HYDROGEN
|
||||||
|
S 3
|
||||||
|
1 13.0100000 0.0196850
|
||||||
|
2 1.9620000 0.1379770
|
||||||
|
3 0.4446000 0.4781480
|
||||||
|
S 1
|
||||||
|
1 0.1220000 1.0000000
|
||||||
|
P 1
|
||||||
|
1 0.7270000 1.0000000
|
||||||
|
|
||||||
|
BORON
|
||||||
|
S 8
|
||||||
|
1 4570.0000000 0.0006960
|
||||||
|
2 685.9000000 0.0053530
|
||||||
|
3 156.5000000 0.0271340
|
||||||
|
4 44.4700000 0.1013800
|
||||||
|
5 14.4800000 0.2720550
|
||||||
|
6 5.1310000 0.4484030
|
||||||
|
7 1.8980000 0.2901230
|
||||||
|
8 0.3329000 0.0143220
|
||||||
|
S 8
|
||||||
|
1 4570.0000000 -0.0001390
|
||||||
|
2 685.9000000 -0.0010970
|
||||||
|
3 156.5000000 -0.0054440
|
||||||
|
4 44.4700000 -0.0219160
|
||||||
|
5 14.4800000 -0.0597510
|
||||||
|
6 5.1310000 -0.1387320
|
||||||
|
7 1.8980000 -0.1314820
|
||||||
|
8 0.3329000 0.5395260
|
||||||
|
S 1
|
||||||
|
1 0.1043000 1.0000000
|
||||||
|
P 3
|
||||||
|
1 6.0010000 0.0354810
|
||||||
|
2 1.2410000 0.1980720
|
||||||
|
3 0.3364000 0.5052300
|
||||||
|
P 1
|
||||||
|
1 0.0953800 1.0000000
|
||||||
|
D 1
|
||||||
|
1 0.3430000 1.0000000
|
||||||
|
|
||||||
|
|
||||||
|
Using custom pseudo-potentials
|
||||||
|
------------------------------
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
|
.. code:: bash
|
||||||
|
|
||||||
|
qp_create_ezfio -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 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. The pseudo-potential for each element are
|
||||||
|
separated by a blank line. Here is an example ::
|
||||||
|
|
||||||
|
Ne GEN 2 1
|
||||||
|
3
|
||||||
|
8.00000000 1 10.74945199
|
||||||
|
85.99561593 3 10.19801460
|
||||||
|
-56.79004456 2 10.18694048
|
||||||
|
1
|
||||||
|
55.11144535 2 12.85042963
|
||||||
|
|
||||||
|
F GEN 2 1
|
||||||
|
3
|
||||||
|
7.00000000 1 11.39210685
|
||||||
|
79.74474797 3 10.74911370
|
||||||
|
-49.45159098 2 10.45120693
|
||||||
|
1
|
||||||
|
50.25646328 2 11.30345826
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
68
doc/_sources/users_guide/qp_edit.rst.txt
Normal file
68
doc/_sources/users_guide/qp_edit.rst.txt
Normal file
@ -0,0 +1,68 @@
|
|||||||
|
.. _qp_edit:
|
||||||
|
|
||||||
|
=======
|
||||||
|
qp_edit
|
||||||
|
=======
|
||||||
|
|
||||||
|
.. program:: 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) document, where each section corresponds to
|
||||||
|
the corresponding |qp| module. The content of the file can be modified
|
||||||
|
to change the input parameters. When the text editor is closed, the
|
||||||
|
updated data is saved into the |EZFIO| directory.
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
The text editor which will be opened is defined by the :envvar:`EDITOR`
|
||||||
|
environment variable. If this variable is not set, the :command:`vi`
|
||||||
|
text editor will be used by default.
|
||||||
|
|
||||||
|
.. warning::
|
||||||
|
When the wave function is too large (more than 10 000 determinants), the
|
||||||
|
determinants are not displayed.
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
On some machines the terminal will be stuck in inverted colors after using
|
||||||
|
qp_edit. To Avoid this problem, put in your :file:`$HOME/.vimrc`::
|
||||||
|
|
||||||
|
set t_ti=
|
||||||
|
set t_te=
|
||||||
|
|
||||||
|
|
||||||
|
Usage
|
||||||
|
-----
|
||||||
|
|
||||||
|
.. code:: bash
|
||||||
|
|
||||||
|
qp_edit [-c] [-h] [-n <int>] [-s <range>] [--] EZFIO_DIR
|
||||||
|
|
||||||
|
.. option:: -c, --check
|
||||||
|
|
||||||
|
Checks the input data
|
||||||
|
|
||||||
|
.. option:: -h, --help
|
||||||
|
|
||||||
|
Print the help text and exits
|
||||||
|
|
||||||
|
.. option:: -n, --ndet=<int>
|
||||||
|
|
||||||
|
Truncates the wavefunction to the target number of determinants
|
||||||
|
|
||||||
|
.. option:: -s, --state=<range>
|
||||||
|
|
||||||
|
Select the states to extract from the |EZFIO| directory, using the same conventions
|
||||||
|
as :ref:`qp_set_mo_class`. See example below.
|
||||||
|
|
||||||
|
|
||||||
|
Example
|
||||||
|
-------
|
||||||
|
|
||||||
|
.. code:: bash
|
||||||
|
|
||||||
|
qp_edit --state="[1,3-5]" test.ezfio
|
||||||
|
|
||||||
|
Removes all states except states 1,3,4 and 5 from :file:`test.ezfio`.
|
||||||
|
The resulting |EZFIO| directory has 4 states.
|
||||||
|
|
30
doc/_sources/users_guide/qp_export_as_tgz.rst.txt
Normal file
30
doc/_sources/users_guide/qp_export_as_tgz.rst.txt
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
================
|
||||||
|
qp_export_as_tgz
|
||||||
|
================
|
||||||
|
|
||||||
|
.. program:: qp_export_as_tgz
|
||||||
|
|
||||||
|
In some HPC facilities, the access to the internet is limited for
|
||||||
|
security reasons. In such an environment, the installation of |QP| is
|
||||||
|
sometimes very painful because the OCaml compiler and the libraries
|
||||||
|
can't be installed by a non-root user.
|
||||||
|
|
||||||
|
This command creates a self-contained binary distribution in the form of
|
||||||
|
a `tar.gz` file that can be copied on another machine.
|
||||||
|
|
||||||
|
Usage
|
||||||
|
-----
|
||||||
|
|
||||||
|
.. code:: bash
|
||||||
|
|
||||||
|
qp_export_as_tgz [-h|--help]
|
||||||
|
|
||||||
|
.. option:: -h, --help
|
||||||
|
|
||||||
|
Prints the help message
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
There can be conflicts due to the version of glibc. The machine on which |QP| is
|
||||||
|
compiled should be the oldest one.
|
||||||
|
|
||||||
|
|
115
doc/_sources/users_guide/qp_plugins.rst.txt
Normal file
115
doc/_sources/users_guide/qp_plugins.rst.txt
Normal file
@ -0,0 +1,115 @@
|
|||||||
|
.. _qp_plugins:
|
||||||
|
|
||||||
|
==========
|
||||||
|
qp_plugins
|
||||||
|
==========
|
||||||
|
|
||||||
|
.. program:: qp_plugins
|
||||||
|
|
||||||
|
This command deals with all external plugins of |qp|. Plugin
|
||||||
|
repositories can be downloaded, and the plugins in these repositories
|
||||||
|
can be installed/uninstalled or created.
|
||||||
|
|
||||||
|
Usage
|
||||||
|
-----
|
||||||
|
|
||||||
|
.. code:: bash
|
||||||
|
|
||||||
|
qp_plugins list [-i] [-u] [-q]
|
||||||
|
qp_plugins download <url>
|
||||||
|
qp_plugins install <name>...
|
||||||
|
qp_plugins uninstall <name>
|
||||||
|
qp_plugins create -n <name> [-r <repo>] [<needed_modules>...]
|
||||||
|
|
||||||
|
.. option:: list
|
||||||
|
|
||||||
|
List all the available plugins.
|
||||||
|
|
||||||
|
.. option:: -i, --installed
|
||||||
|
|
||||||
|
List all the *installed* plugins.
|
||||||
|
|
||||||
|
.. option:: -u, --uninstalled
|
||||||
|
|
||||||
|
List all the *uninstalled* plugins.
|
||||||
|
|
||||||
|
.. option:: -q, --repositories
|
||||||
|
|
||||||
|
List all the downloaded repositories.
|
||||||
|
|
||||||
|
.. option:: download <url>
|
||||||
|
|
||||||
|
Download an external repository. The URL points to a tar.gz file or a
|
||||||
|
git repository, for example:
|
||||||
|
|
||||||
|
* http://example.com/site/example.tar.gz
|
||||||
|
* git@gitlab.com:user/example_repository
|
||||||
|
|
||||||
|
.. option:: install <plugin_name>
|
||||||
|
|
||||||
|
Install the plugin ``plugin_name``.
|
||||||
|
|
||||||
|
.. option:: uninstall <plugin_name>
|
||||||
|
|
||||||
|
Uninstall the plugin ``plugin_name``.
|
||||||
|
|
||||||
|
.. option:: -n, --name=<plugin_name>
|
||||||
|
|
||||||
|
Create a new plugin named ``plugin_name`` (in local repository by default).
|
||||||
|
|
||||||
|
.. option:: -r, --repository=<repo>
|
||||||
|
|
||||||
|
Specify in which repository the new plugin will be created.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Example
|
||||||
|
-------
|
||||||
|
|
||||||
|
Let us download, install and compile some specific external plugins from
|
||||||
|
`<https://gitlab.com/eginer/qp_plugins_eginer>`_ .
|
||||||
|
|
||||||
|
First, download the git repo associated to these plugins. To do so,
|
||||||
|
first go to the `plugins` directory in the |QP| and execute:
|
||||||
|
|
||||||
|
.. code:: bash
|
||||||
|
|
||||||
|
qp_plugins download https://gitlab.com/eginer/qp_plugins_eginer
|
||||||
|
|
||||||
|
|
||||||
|
This will create in the directory `plugins` a local copy of
|
||||||
|
the git repo located at the URL you indicated. Then, go in
|
||||||
|
`qp_plugins_eginer/stable/`
|
||||||
|
|
||||||
|
.. code:: bash
|
||||||
|
|
||||||
|
cd qp_plugins_eginer/stable/
|
||||||
|
|
||||||
|
In the directory `stable`, there are many directories which all
|
||||||
|
correspond to a specific plugin that have been developed by the person
|
||||||
|
in charge of the repository. All these plugins might use some global
|
||||||
|
variables and routines contained in the core modules of the |QP|.
|
||||||
|
|
||||||
|
Now let us install the plugin `rsdft_cipsi`:
|
||||||
|
|
||||||
|
.. code:: bash
|
||||||
|
|
||||||
|
qp_plugins install rsdft_cipsi
|
||||||
|
|
||||||
|
This will link this directory to the |QP| which means that when the code
|
||||||
|
will be compiled, this plugin will be compiled to and therefore all the
|
||||||
|
executables/scripts/input keywords contained in this module will be
|
||||||
|
available as if there were part of the core of the |QP|.
|
||||||
|
|
||||||
|
Then, to compile the new plugin, just recompile the |QP| as usual by
|
||||||
|
going at the root of the |QP| directory:
|
||||||
|
|
||||||
|
.. code:: bash
|
||||||
|
|
||||||
|
cd $QP_ROOT
|
||||||
|
ninja
|
||||||
|
|
||||||
|
Finally, if you go back to the plugin directory you just installed, you
|
||||||
|
should see all the executables/scripts which have been created and which
|
||||||
|
are now available with the `qp_run` command.
|
||||||
|
|
62
doc/_sources/users_guide/qp_run.rst.txt
Normal file
62
doc/_sources/users_guide/qp_run.rst.txt
Normal file
@ -0,0 +1,62 @@
|
|||||||
|
.. _qp_run:
|
||||||
|
|
||||||
|
======
|
||||||
|
qp_run
|
||||||
|
======
|
||||||
|
|
||||||
|
.. TODO
|
||||||
|
|
||||||
|
.. program:: qp_run
|
||||||
|
|
||||||
|
Command used to run a calculation.
|
||||||
|
|
||||||
|
If the ``USR1`` signal is sent to :ref:`qp_run`, the application will
|
||||||
|
call :ref:`qp_stop` to request a clean termination. In a SLURM script,
|
||||||
|
you can ask SLURM to send the ``USR1`` signal 120 seconds before end of
|
||||||
|
the time limit with ::
|
||||||
|
|
||||||
|
#SBATCH --signal=B:USR1@120
|
||||||
|
|
||||||
|
There is a directory named :file:`work` in the |EZFIO|. This directory
|
||||||
|
will contain work files which can be large, so it is recommended to
|
||||||
|
work in the scratch directory. To archive the |EZFIO| directory, it is
|
||||||
|
recommended to remove the :file:`work` directory.
|
||||||
|
|
||||||
|
Usage
|
||||||
|
-----
|
||||||
|
|
||||||
|
.. code:: bash
|
||||||
|
|
||||||
|
qp_run [-h] [-p <string>] [-s] [--] PROGRAM EZFIO_DIR
|
||||||
|
|
||||||
|
``PROGRAM`` is the name of the |QP| program to be run, and ``EZFIO_DIR``
|
||||||
|
is the name of the |EZFIO| directory containing the data.
|
||||||
|
|
||||||
|
|
||||||
|
.. option:: -h, --help
|
||||||
|
|
||||||
|
Displays the list of available |qp| programs.
|
||||||
|
|
||||||
|
|
||||||
|
.. option:: -p <string>, --prefix=<string>
|
||||||
|
|
||||||
|
Prefix before running the program. This option is used to run
|
||||||
|
programs like like gdb or valgrind.
|
||||||
|
|
||||||
|
|
||||||
|
.. option:: -s, --slave
|
||||||
|
|
||||||
|
This option needs to be set to run a slave job for ``PROGRAM``, to
|
||||||
|
accelerate another running instance of the |qp|.
|
||||||
|
|
||||||
|
|
||||||
|
Example
|
||||||
|
-------
|
||||||
|
|
||||||
|
.. code:: bash
|
||||||
|
|
||||||
|
qp_run fci h2o.ezfio &
|
||||||
|
srun qp_run --slave fci h2o.ezfio
|
||||||
|
wait
|
||||||
|
|
||||||
|
|
31
doc/_sources/users_guide/qp_set_frozen_core.rst.txt
Normal file
31
doc/_sources/users_guide/qp_set_frozen_core.rst.txt
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
.. _qp_set_frozen_core:
|
||||||
|
|
||||||
|
==================
|
||||||
|
qp_set_frozen_core
|
||||||
|
==================
|
||||||
|
|
||||||
|
.. program:: qp_set_frozen_core
|
||||||
|
|
||||||
|
Automatically finds *n*, the number of core electrons. Calls
|
||||||
|
:ref:`qp_set_mo_class` setting all |MOs| as ``Active``, except the
|
||||||
|
:math:`n/2` first ones which are set as ``Core``. If pseudo-potentials
|
||||||
|
are used, all the |MOs| are set as ``Active``.
|
||||||
|
|
||||||
|
For elements on the right of the periodic table, `qp_set_frozen_core`
|
||||||
|
will work as expected. But for elements on the left, a small core will
|
||||||
|
be chosen. For example, a Carbon atom will have 2 core electrons, but a
|
||||||
|
Lithium atom will have zero.
|
||||||
|
|
||||||
|
Usage
|
||||||
|
-----
|
||||||
|
|
||||||
|
.. code:: bash
|
||||||
|
|
||||||
|
qp_set_frozen_core [-q] EZFIO_DIR
|
||||||
|
|
||||||
|
|
||||||
|
.. option:: -q
|
||||||
|
|
||||||
|
Prints in the standard output the number of core electrons.
|
||||||
|
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user