diff --git a/404.html b/404.html index 81f2ff0f..88b94736 100644 --- a/404.html +++ b/404.html @@ -57,7 +57,7 @@
  • - Documentation + Documentation
  • diff --git a/categories/index.html b/categories/index.html index bb6f6e00..356feca1 100644 --- a/categories/index.html +++ b/categories/index.html @@ -57,7 +57,7 @@
  • - Documentation + Documentation
  • diff --git a/doc/_images/cn3_energy.png b/doc/_images/cn3_energy.png new file mode 100644 index 00000000..5f595320 Binary files /dev/null and b/doc/_images/cn3_energy.png differ diff --git a/doc/_images/qp2.png b/doc/_images/qp2.png new file mode 100644 index 00000000..f15ded98 Binary files /dev/null and b/doc/_images/qp2.png differ diff --git a/doc/_images/speedup_davidson.png b/doc/_images/speedup_davidson.png new file mode 100644 index 00000000..70e60f54 Binary files /dev/null and b/doc/_images/speedup_davidson.png differ diff --git a/doc/_images/speedup_pt2.png b/doc/_images/speedup_pt2.png new file mode 100644 index 00000000..ec0c27ae Binary files /dev/null and b/doc/_images/speedup_pt2.png differ diff --git a/doc/_sources/appendix/benchmarks.rst.txt b/doc/_sources/appendix/benchmarks.rst.txt new file mode 100644 index 00000000..9369f884 --- /dev/null +++ b/doc/_sources/appendix/benchmarks.rst.txt @@ -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 +======================= ====================== ======================= ====================== ======================= + + + + + diff --git a/doc/_sources/appendix/contributors.rst.txt b/doc/_sources/appendix/contributors.rst.txt new file mode 100644 index 00000000..453560aa --- /dev/null +++ b/doc/_sources/appendix/contributors.rst.txt @@ -0,0 +1,48 @@ +============ +Contributors +============ + +The |qp| is maintained by + +Anthony Scemama + | `Laboratoire de Chimie et Physique Quantiques `_, + | CNRS - Université Paul Sabatier + | Toulouse, France + | scemama@irsamc.ups-tlse.fr + + +Emmanuel Giner + | `Laboratoire de Chimie Theorique `_ + | CNRS - Sorbonne Université + | Paris, France + | emmanuel.giner@lct.jussieu.fr + + +Thomas Applencourt + | `Argonne Leadership Computing Facility `_ + | 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. + diff --git a/doc/_sources/appendix/license.rst.txt b/doc/_sources/appendix/license.rst.txt new file mode 100644 index 00000000..def8f1f7 --- /dev/null +++ b/doc/_sources/appendix/license.rst.txt @@ -0,0 +1,9 @@ +License +======= + +.. include:: LICENSE + :literal: + + + + diff --git a/doc/_sources/appendix/research.rst.txt b/doc/_sources/appendix/research.rst.txt new file mode 100644 index 00000000..992cc1eb --- /dev/null +++ b/doc/_sources/appendix/research.rst.txt @@ -0,0 +1,8 @@ +Some research made with the |qp| +================================ + +.. bibliography:: /research.bib + :style: unsrt + :all: + + diff --git a/doc/_sources/index.rst.txt b/doc/_sources/index.rst.txt new file mode 100644 index 00000000..3f0ea0bd --- /dev/null +++ b/doc/_sources/index.rst.txt @@ -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 + + diff --git a/doc/_sources/intro/install.rst.txt b/doc/_sources/intro/install.rst.txt new file mode 100644 index 00000000..058fcd14 --- /dev/null +++ b/doc/_sources/intro/install.rst.txt @@ -0,0 +1,2 @@ +.. include:: ../../../INSTALL.rst + diff --git a/doc/_sources/intro/intro.rst.txt b/doc/_sources/intro/intro.rst.txt new file mode 100644 index 00000000..aecd072d --- /dev/null +++ b/doc/_sources/intro/intro.rst.txt @@ -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 `_ (|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 `_ |KS-DFT| and `range-separated hybrids `_ |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 ``_). + +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 ``_) +- 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|). + + + diff --git a/doc/_sources/intro/selected_ci.rst.txt b/doc/_sources/intro/selected_ci.rst.txt new file mode 100644 index 00000000..443a678f --- /dev/null +++ b/doc/_sources/intro/selected_ci.rst.txt @@ -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 + + diff --git a/doc/_sources/modules/ao_basis.rst.txt b/doc/_sources/modules/ao_basis.rst.txt new file mode 100644 index 00000000..f61e99e8 --- /dev/null +++ b/doc/_sources/modules/ao_basis.rst.txt @@ -0,0 +1,1245 @@ +.. _module_ao_basis: + +.. program:: ao_basis + +.. default-role:: option + +======== +ao_basis +======== + +This module describes the atomic orbitals basis set. + +An |AO| :math:`\chi` centered on nucleus A is represented as: + +.. math:: + + \chi_i({\bf r}) = (x-X_A)^a (y-Y_A)^b (z-Z_A)^c \sum_k c_{ki} e^{-\gamma_{ki} |{\bf r} - {\bf R}_A|^2} + + +The |AO| coefficients are normalized as: + +.. math:: + + {\tilde c}_{ki} = \frac{c_{ki}}{ \int \left( (x-X_A)^a (y-Y_A)^b (z-Z_A)^c e^{-\gamma_{ki} |{\bf r} - {\bf R}_A|^2} \right)^2 dr} + +Warning: `ao_coef` contains the |AO| coefficients given in input. These do not +include the normalization constant of the |AO|. The `ao_coef_normalized` provider includes +this normalization factor. + +The |AOs| are also sorted by increasing exponent to accelerate the calculation of +the two electron integrals. + + + + + + +EZFIO parameters +---------------- + +.. option:: ao_basis + + Name of the |AO| basis set + + +.. option:: ao_num + + Number of |AOs| + + +.. option:: ao_prim_num + + Number of primitives per |AO| + + +.. option:: ao_prim_num_max + + Maximum number of primitives + + Default: =maxval(ao_basis.ao_prim_num) + +.. option:: ao_nucl + + Index of the nucleus on which the |AO| is centered + + +.. option:: ao_power + + Powers of x, y and z for each |AO| + + +.. option:: ao_coef + + Primitive coefficients, read from input. Those should not be used directly, as the MOs are expressed on the basis of **normalized** AOs. + + +.. option:: ao_expo + + Exponents for each primitive of each |AO| + + +.. option:: ao_md5 + + MD5 key, specific of the |AO| basis + + +.. option:: ao_cartesian + + If |true|, use |AOs| in Cartesian coordinates (6d,10f,...) + + Default: false + + +Providers +--------- + +.. c:var:: ao_coef_normalization_factor + + + File : :file:`ao_basis/aos.irp.f` + + .. code:: fortran + + double precision, allocatable :: ao_coef_normalized (ao_num,ao_prim_num_max) + double precision, allocatable :: ao_coef_normalization_factor (ao_num) + + + Coefficients including the |AO| normalization + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_coef` + * :c:data:`ao_expo` + * :c:data:`ao_num` + * :c:data:`ao_power` + * :c:data:`ao_prim_num` + * :c:data:`ao_prim_num_max` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_coef_normalization_libint_factor` + * :c:data:`ao_coef_normalized_ordered` + + +.. c:var:: ao_coef_normalization_libint_factor + + + File : :file:`ao_basis/aos.irp.f` + + .. code:: fortran + + double precision, allocatable :: ao_coef_normalization_libint_factor (ao_num) + + + |AO| normalization for interfacing with libint + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_coef_normalized` + * :c:data:`ao_expo` + * :c:data:`ao_l` + * :c:data:`ao_num` + * :c:data:`ao_prim_num` + + + +.. c:var:: ao_coef_normalized + + + File : :file:`ao_basis/aos.irp.f` + + .. code:: fortran + + double precision, allocatable :: ao_coef_normalized (ao_num,ao_prim_num_max) + double precision, allocatable :: ao_coef_normalization_factor (ao_num) + + + Coefficients including the |AO| normalization + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_coef` + * :c:data:`ao_expo` + * :c:data:`ao_num` + * :c:data:`ao_power` + * :c:data:`ao_prim_num` + * :c:data:`ao_prim_num_max` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_coef_normalization_libint_factor` + * :c:data:`ao_coef_normalized_ordered` + + +.. c:var:: ao_coef_normalized_ordered + + + File : :file:`ao_basis/aos.irp.f` + + .. code:: fortran + + double precision, allocatable :: ao_coef_normalized_ordered (ao_num,ao_prim_num_max) + double precision, allocatable :: ao_expo_ordered (ao_num,ao_prim_num_max) + + + Sorted primitives to accelerate 4 index |MO| transformation + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_coef_normalized` + * :c:data:`ao_expo` + * :c:data:`ao_num` + * :c:data:`ao_prim_num` + * :c:data:`ao_prim_num_max` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_coef_normalized_ordered_transp` + * :c:data:`ao_expo_ordered_transp` + + +.. c:var:: ao_coef_normalized_ordered_transp + + + File : :file:`ao_basis/aos.irp.f` + + .. code:: fortran + + double precision, allocatable :: ao_coef_normalized_ordered_transp (ao_prim_num_max,ao_num) + + + Transposed :c:data:`ao_coef_normalized_ordered` + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_coef_normalized_ordered` + * :c:data:`ao_num` + * :c:data:`ao_prim_num_max` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_coef_normalized_ordered_transp_per_nucl` + * :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:var:: ao_coef_normalized_ordered_transp_per_nucl + + + File : :file:`ao_basis/aos_transp.irp.f` + + .. code:: fortran + + double precision, allocatable :: ao_coef_normalized_ordered_transp_per_nucl (ao_prim_num_max,N_AOs_max,nucl_num) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_coef_normalized_ordered_transp` + * :c:data:`ao_prim_num` + * :c:data:`ao_prim_num_max` + * :c:data:`nucl_aos_transposed` + * :c:data:`nucl_n_aos` + * :c:data:`nucl_num` + + + +.. c:var:: ao_expo_ordered + + + File : :file:`ao_basis/aos.irp.f` + + .. code:: fortran + + double precision, allocatable :: ao_coef_normalized_ordered (ao_num,ao_prim_num_max) + double precision, allocatable :: ao_expo_ordered (ao_num,ao_prim_num_max) + + + Sorted primitives to accelerate 4 index |MO| transformation + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_coef_normalized` + * :c:data:`ao_expo` + * :c:data:`ao_num` + * :c:data:`ao_prim_num` + * :c:data:`ao_prim_num_max` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_coef_normalized_ordered_transp` + * :c:data:`ao_expo_ordered_transp` + + +.. c:var:: ao_expo_ordered_transp + + + File : :file:`ao_basis/aos.irp.f` + + .. code:: fortran + + double precision, allocatable :: ao_expo_ordered_transp (ao_prim_num_max,ao_num) + + + Transposed :c:data:`ao_expo_ordered` + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_coef_normalized_ordered` + * :c:data:`ao_num` + * :c:data:`ao_prim_num_max` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_deriv2_x` + * :c:data:`ao_deriv_1_x` + * :c:data:`ao_dipole_x` + * :c:data:`ao_expo_ordered_transp_per_nucl` + * :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:var:: ao_expo_ordered_transp_per_nucl + + + File : :file:`ao_basis/aos_transp.irp.f` + + .. code:: fortran + + double precision, allocatable :: ao_expo_ordered_transp_per_nucl (ao_prim_num_max,N_AOs_max,nucl_num) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_expo_ordered_transp` + * :c:data:`ao_prim_num` + * :c:data:`ao_prim_num_max` + * :c:data:`nucl_aos_transposed` + * :c:data:`nucl_n_aos` + * :c:data:`nucl_num` + + + +.. c:var:: ao_l + + + File : :file:`ao_basis/aos.irp.f` + + .. code:: fortran + + integer, allocatable :: ao_l (ao_num) + integer :: ao_l_max + character*(128), allocatable :: ao_l_char (ao_num) + + + :math:`l` value of the |AO|: :math`a+b+c` in :math:`x^a y^b z^c` + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`ao_power` + * :c:data:`l_to_charater` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_cart_to_sphe_coef` + * :c:data:`ao_coef_normalization_libint_factor` + * :c:data:`ao_l_char_space` + * :c:data:`nucl_list_shell_aos` + + +.. c:var:: ao_l_char + + + File : :file:`ao_basis/aos.irp.f` + + .. code:: fortran + + integer, allocatable :: ao_l (ao_num) + integer :: ao_l_max + character*(128), allocatable :: ao_l_char (ao_num) + + + :math:`l` value of the |AO|: :math`a+b+c` in :math:`x^a y^b z^c` + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`ao_power` + * :c:data:`l_to_charater` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_cart_to_sphe_coef` + * :c:data:`ao_coef_normalization_libint_factor` + * :c:data:`ao_l_char_space` + * :c:data:`nucl_list_shell_aos` + + +.. c:var:: ao_l_char_space + + + File : :file:`ao_basis/aos.irp.f` + + .. code:: fortran + + character*(4), allocatable :: ao_l_char_space (ao_num) + + + Converts an l value to a string + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_l` + * :c:data:`ao_num` + * :c:data:`ao_power` + + + +.. c:var:: ao_l_max + + + File : :file:`ao_basis/aos.irp.f` + + .. code:: fortran + + integer, allocatable :: ao_l (ao_num) + integer :: ao_l_max + character*(128), allocatable :: ao_l_char (ao_num) + + + :math:`l` value of the |AO|: :math`a+b+c` in :math:`x^a y^b z^c` + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`ao_power` + * :c:data:`l_to_charater` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_cart_to_sphe_coef` + * :c:data:`ao_coef_normalization_libint_factor` + * :c:data:`ao_l_char_space` + * :c:data:`nucl_list_shell_aos` + + +.. c:var:: ao_power_ordered_transp_per_nucl + + + File : :file:`ao_basis/aos_transp.irp.f` + + .. code:: fortran + + integer, allocatable :: ao_power_ordered_transp_per_nucl (3,N_AOs_max,nucl_num) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_power` + * :c:data:`nucl_aos_transposed` + * :c:data:`nucl_n_aos` + * :c:data:`nucl_num` + + + +.. c:var:: ao_prim_num_max + + + File : :file:`ao_basis/aos.irp.f` + + .. code:: fortran + + integer :: ao_prim_num_max + + + Max number of primitives. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_prim_num` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_coef` + * :c:data:`ao_coef_normalized` + * :c:data:`ao_coef_normalized_ordered` + * :c:data:`ao_coef_normalized_ordered_transp` + * :c:data:`ao_coef_normalized_ordered_transp_per_nucl` + * :c:data:`ao_expo` + * :c:data:`ao_expo_ordered_transp` + * :c:data:`ao_expo_ordered_transp_per_nucl` + + +.. c:var:: cart_to_sphe_0 + + + File : :file:`ao_basis/spherical_to_cartesian.irp.f` + + .. code:: fortran + + double precision, allocatable :: cart_to_sphe_0 (1,1) + + + Spherical -> Cartesian Transformation matrix for l=0 + + + +.. c:var:: cart_to_sphe_1 + + + File : :file:`ao_basis/spherical_to_cartesian.irp.f` + + .. code:: fortran + + double precision, allocatable :: cart_to_sphe_1 (3,3) + + + Spherical -> Cartesian Transformation matrix for l=1 + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_cart_to_sphe_coef` + + +.. c:var:: cart_to_sphe_2 + + + File : :file:`ao_basis/spherical_to_cartesian.irp.f` + + .. code:: fortran + + double precision, allocatable :: cart_to_sphe_2 (6,5) + + + Spherical -> Cartesian Transformation matrix for l=2 + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_cart_to_sphe_coef` + + +.. c:var:: cart_to_sphe_3 + + + File : :file:`ao_basis/spherical_to_cartesian.irp.f` + + .. code:: fortran + + double precision, allocatable :: cart_to_sphe_3 (10,7) + + + Spherical -> Cartesian Transformation matrix for l=3 + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_cart_to_sphe_coef` + + +.. c:var:: cart_to_sphe_4 + + + File : :file:`ao_basis/spherical_to_cartesian.irp.f` + + .. code:: fortran + + double precision, allocatable :: cart_to_sphe_4 (15,9) + + + Spherical -> Cartesian Transformation matrix for l=4 + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_cart_to_sphe_coef` + + +.. c:var:: cart_to_sphe_5 + + + File : :file:`ao_basis/spherical_to_cartesian.irp.f` + + .. code:: fortran + + double precision, allocatable :: cart_to_sphe_5 (21,11) + + + Spherical -> Cartesian Transformation matrix for l=5 + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_cart_to_sphe_coef` + + +.. c:var:: cart_to_sphe_6 + + + File : :file:`ao_basis/spherical_to_cartesian.irp.f` + + .. code:: fortran + + double precision, allocatable :: cart_to_sphe_6 (28,13) + + + Spherical -> Cartesian Transformation matrix for l=6 + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_cart_to_sphe_coef` + + +.. c:var:: cart_to_sphe_7 + + + File : :file:`ao_basis/spherical_to_cartesian.irp.f` + + .. code:: fortran + + double precision, allocatable :: cart_to_sphe_7 (36,15) + + + Spherical -> Cartesian Transformation matrix for l=7 + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_cart_to_sphe_coef` + + +.. c:var:: cart_to_sphe_8 + + + File : :file:`ao_basis/spherical_to_cartesian.irp.f` + + .. code:: fortran + + double precision, allocatable :: cart_to_sphe_8 (45,17) + + + Spherical -> Cartesian Transformation matrix for l=8 + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_cart_to_sphe_coef` + + +.. c:var:: cart_to_sphe_9 + + + File : :file:`ao_basis/spherical_to_cartesian.irp.f` + + .. code:: fortran + + double precision, allocatable :: cart_to_sphe_9 (55,19) + + + Spherical -> Cartesian Transformation matrix for l=9 + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_cart_to_sphe_coef` + + +.. c:var:: l_to_charater + + + File : :file:`ao_basis/aos.irp.f` + + .. code:: fortran + + character*(128), allocatable :: l_to_charater (0:7) + + + Character corresponding to the "l" value of an |AO| + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_l` + + +.. c:var:: n_aos_max + + + File : :file:`ao_basis/aos.irp.f` + + .. code:: fortran + + integer, allocatable :: nucl_n_aos (nucl_num) + integer :: n_aos_max + + + Number of |AOs| per atom + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_nucl` + * :c:data:`ao_num` + * :c:data:`nucl_num` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_coef_normalized_ordered_transp_per_nucl` + * :c:data:`ao_expo_ordered_transp_per_nucl` + * :c:data:`ao_power_ordered_transp_per_nucl` + * :c:data:`nucl_aos` + * :c:data:`nucl_aos_transposed` + * :c:data:`nucl_list_shell_aos` + + +.. c:var:: n_pt_max_i_x + + + File : :file:`ao_basis/dimensions_integrals.irp.f` + + .. code:: fortran + + integer :: n_pt_max_integrals + integer :: n_pt_max_i_x + + + Number of points used in the numerical integrations. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_power` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_integrals_n_e` + * :c:data:`ao_integrals_n_e_per_atom` + * :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:`gauleg_t2` + + +.. c:var:: n_pt_max_integrals + + + File : :file:`ao_basis/dimensions_integrals.irp.f` + + .. code:: fortran + + integer :: n_pt_max_integrals + integer :: n_pt_max_i_x + + + Number of points used in the numerical integrations. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_power` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_integrals_n_e` + * :c:data:`ao_integrals_n_e_per_atom` + * :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:`gauleg_t2` + + +.. c:var:: nucl_aos + + + File : :file:`ao_basis/aos.irp.f` + + .. code:: fortran + + integer, allocatable :: nucl_aos (nucl_num,N_AOs_max) + + + List of |AOs| centered on each atom + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_nucl` + * :c:data:`ao_num` + * :c:data:`nucl_n_aos` + * :c:data:`nucl_num` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`nucl_aos_transposed` + * :c:data:`nucl_list_shell_aos` + + +.. c:var:: nucl_aos_transposed + + + File : :file:`ao_basis/aos_transp.irp.f` + + .. code:: fortran + + integer, allocatable :: nucl_aos_transposed (N_AOs_max,nucl_num) + + + List of AOs attached on each atom + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_nucl` + * :c:data:`ao_num` + * :c:data:`nucl_aos` + * :c:data:`nucl_n_aos` + * :c:data:`nucl_num` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_coef_normalized_ordered_transp_per_nucl` + * :c:data:`ao_expo_ordered_transp_per_nucl` + * :c:data:`ao_power_ordered_transp_per_nucl` + + +.. c:var:: nucl_list_shell_aos + + + File : :file:`ao_basis/aos.irp.f` + + .. code:: fortran + + integer, allocatable :: nucl_list_shell_aos (nucl_num,N_AOs_max) + integer, allocatable :: nucl_num_shell_aos (nucl_num) + + + Index of the shell type |AOs| and of the corresponding |AOs| + By convention, for p,d,f and g |AOs|, we take the index + of the |AO| with the the corresponding power in the x axis + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_l` + * :c:data:`ao_power` + * :c:data:`nucl_aos` + * :c:data:`nucl_n_aos` + * :c:data:`nucl_num` + + + +.. c:var:: nucl_n_aos + + + File : :file:`ao_basis/aos.irp.f` + + .. code:: fortran + + integer, allocatable :: nucl_n_aos (nucl_num) + integer :: n_aos_max + + + Number of |AOs| per atom + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_nucl` + * :c:data:`ao_num` + * :c:data:`nucl_num` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_coef_normalized_ordered_transp_per_nucl` + * :c:data:`ao_expo_ordered_transp_per_nucl` + * :c:data:`ao_power_ordered_transp_per_nucl` + * :c:data:`nucl_aos` + * :c:data:`nucl_aos_transposed` + * :c:data:`nucl_list_shell_aos` + + +.. c:var:: nucl_num_shell_aos + + + File : :file:`ao_basis/aos.irp.f` + + .. code:: fortran + + integer, allocatable :: nucl_list_shell_aos (nucl_num,N_AOs_max) + integer, allocatable :: nucl_num_shell_aos (nucl_num) + + + Index of the shell type |AOs| and of the corresponding |AOs| + By convention, for p,d,f and g |AOs|, we take the index + of the |AO| with the the corresponding power in the x axis + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_l` + * :c:data:`ao_power` + * :c:data:`nucl_aos` + * :c:data:`nucl_n_aos` + * :c:data:`nucl_num` + + + + +Subroutines / functions +----------------------- + +.. c:function:: ao_power_index: + + + File : :file:`ao_basis/aos.irp.f` + + .. code:: fortran + + integer function ao_power_index(nx,ny,nz) + + + Unique index given to a triplet of powers: + + :math:`\frac{1}{2} (l-n_x) (l-n_x+1) + n_z + 1` + + +.. c:function:: ao_value: + + + File : :file:`ao_basis/aos_value.irp.f` + + .. code:: fortran + + double precision function ao_value(i,r) + + + return the value of the ith ao at point r + + Needs: + + .. hlist:: + :columns: 3 + + * :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` + + +.. c:function:: give_all_aos_and_grad_and_lapl_at_r: + + + File : :file:`ao_basis/aos_value.irp.f` + + .. code:: fortran + + subroutine give_all_aos_and_grad_and_lapl_at_r(r,aos_array,aos_grad_array,aos_lapl_array) + + + input : r(1) ==> r(1) = x, r(2) = y, r(3) = z + output : aos_array(i) = ao(i) evaluated at r + : aos_grad_array(1,i) = gradient X of the ao(i) evaluated at r + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_expo_ordered_transp_per_nucl` + * :c:data:`ao_power_ordered_transp_per_nucl` + * :c:data:`nucl_n_aos` + * :c:data:`ao_num` + * :c:data:`ao_prim_num` + * :c:data:`ao_coef_normalized_ordered_transp_per_nucl` + * :c:data:`nucl_aos_transposed` + * :c:data:`nucl_coord` + * :c:data:`nucl_num` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`give_all_mos_and_grad_and_lapl_at_r` + + +.. c:function:: give_all_aos_and_grad_at_r: + + + File : :file:`ao_basis/aos_value.irp.f` + + .. code:: fortran + + subroutine give_all_aos_and_grad_at_r(r,aos_array,aos_grad_array) + + + input : r(1) ==> r(1) = x, r(2) = y, r(3) = z + output : aos_array(i) = ao(i) evaluated at r + : aos_grad_array(1,i) = gradient X of the ao(i) evaluated at r + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_expo_ordered_transp_per_nucl` + * :c:data:`ao_power_ordered_transp_per_nucl` + * :c:data:`nucl_n_aos` + * :c:data:`ao_num` + * :c:data:`ao_prim_num` + * :c:data:`ao_coef_normalized_ordered_transp_per_nucl` + * :c:data:`nucl_aos_transposed` + * :c:data:`nucl_coord` + * :c:data:`nucl_num` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`give_all_mos_and_grad_at_r` + + +.. c:function:: give_all_aos_at_r: + + + File : :file:`ao_basis/aos_value.irp.f` + + .. code:: fortran + + subroutine give_all_aos_at_r(r,aos_array) + + + input : r == r(1) = x and so on + aos_array(i) = aos(i) evaluated in r + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_expo_ordered_transp_per_nucl` + * :c:data:`ao_power_ordered_transp_per_nucl` + * :c:data:`nucl_n_aos` + * :c:data:`ao_num` + * :c:data:`ao_prim_num` + * :c:data:`ao_coef_normalized_ordered_transp_per_nucl` + * :c:data:`nucl_aos_transposed` + * :c:data:`nucl_coord` + * :c:data:`nucl_num` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`give_all_mos_at_r` + + +.. c:function:: give_all_aos_at_r_old: + + + File : :file:`ao_basis/aos_value.irp.f` + + .. code:: fortran + + subroutine give_all_aos_at_r_old(r,aos_array) + + + gives the values of aos at a given point r + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + + +.. c:function:: primitive_value: + + + File : :file:`ao_basis/aos_value.irp.f` + + .. code:: fortran + + double precision function primitive_value(i,j,r) + + + return the value of the jth primitive of ith ao at point r WITHOUT THE COEF + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_expo_ordered_transp` + * :c:data:`ao_nucl` + * :c:data:`nucl_coord` + * :c:data:`ao_power` + diff --git a/doc/_sources/modules/ao_one_e_ints.rst.txt b/doc/_sources/modules/ao_one_e_ints.rst.txt new file mode 100644 index 00000000..53f5844c --- /dev/null +++ b/doc/_sources/modules/ao_one_e_ints.rst.txt @@ -0,0 +1,2015 @@ +.. _module_ao_one_e_ints: + +.. program:: ao_one_e_ints + +.. default-role:: option + +================== +ao_one_e_integrals +================== + +All the one-electron integrals in the |AO| basis are here. + +The most important providers for usual quantum-chemistry calculation are: + +* `ao_kinetic_integral` which are the kinetic operator integrals on the |AO| basis (see :file:`kin_ao_ints.irp.f`) +* `ao_nucl_elec_integral` which are the nuclear-elctron operator integrals on the |AO| basis (see :file:`pot_ao_ints.irp.f`) +* `ao_one_e_integrals` which are the the h_core operator integrals on the |AO| basis (see :file:`ao_mono_ints.irp.f`) + + +Note that you can find other interesting integrals related to the position operator in :file:`spread_dipole_ao.irp.f`. + + + +EZFIO parameters +---------------- + +.. option:: ao_integrals_e_n + + Nucleus-electron integrals in |AO| basis set + + +.. option:: io_ao_integrals_e_n + + Read/Write |AO| nucleus-electron attraction integrals from/to disk [ Write | Read | None ] + + Default: None + +.. option:: ao_integrals_kinetic + + Kinetic energy integrals in |AO| basis set + + +.. option:: io_ao_integrals_kinetic + + Read/Write |AO| kinetic integrals from/to disk [ Write | Read | None ] + + Default: None + +.. option:: ao_integrals_pseudo + + Pseudopotential integrals in |AO| basis set + + +.. option:: io_ao_integrals_pseudo + + Read/Write |AO| pseudopotential integrals from/to disk [ Write | Read | None ] + + Default: None + +.. option:: ao_integrals_overlap + + Overlap integrals in |AO| basis set + + +.. option:: io_ao_integrals_overlap + + Read/Write |AO| overlap integrals from/to disk [ Write | Read | None ] + + Default: None + +.. option:: ao_one_e_integrals + + Combined integrals in |AO| basis set + + +.. option:: io_ao_one_e_integrals + + Read/Write |AO| one-electron integrals from/to disk [ Write | Read | None ] + + Default: None + + +Providers +--------- + +.. c:var:: ao_cart_to_sphe_coef + + + File : :file:`ao_one_e_ints/ao_ortho_canonical.irp.f` + + .. code:: fortran + + double precision, allocatable :: ao_cart_to_sphe_coef (ao_num,ao_num) + integer :: ao_cart_to_sphe_num + + + Coefficients to go from cartesian to spherical coordinates in the current + basis set + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_l` + * :c:data:`ao_num` + * :c:data:`ao_power` + * :c:data:`cart_to_sphe_1` + * :c:data:`cart_to_sphe_2` + * :c:data:`cart_to_sphe_3` + * :c:data:`cart_to_sphe_4` + * :c:data:`cart_to_sphe_5` + * :c:data:`cart_to_sphe_6` + * :c:data:`cart_to_sphe_7` + * :c:data:`cart_to_sphe_8` + * :c:data:`cart_to_sphe_9` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_cart_to_sphe_inv` + * :c:data:`ao_cart_to_sphe_overlap` + * :c:data:`ao_ortho_canonical_coef` + + +.. c:var:: ao_cart_to_sphe_inv + + + File : :file:`ao_one_e_ints/ao_ortho_canonical.irp.f` + + .. code:: fortran + + double precision, allocatable :: ao_cart_to_sphe_inv (ao_cart_to_sphe_num,ao_num) + + + Inverse of :c:data:`ao_cart_to_sphe_coef` + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_cart_to_sphe_coef` + * :c:data:`ao_num` + + + +.. c:var:: ao_cart_to_sphe_num + + + File : :file:`ao_one_e_ints/ao_ortho_canonical.irp.f` + + .. code:: fortran + + double precision, allocatable :: ao_cart_to_sphe_coef (ao_num,ao_num) + integer :: ao_cart_to_sphe_num + + + Coefficients to go from cartesian to spherical coordinates in the current + basis set + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_l` + * :c:data:`ao_num` + * :c:data:`ao_power` + * :c:data:`cart_to_sphe_1` + * :c:data:`cart_to_sphe_2` + * :c:data:`cart_to_sphe_3` + * :c:data:`cart_to_sphe_4` + * :c:data:`cart_to_sphe_5` + * :c:data:`cart_to_sphe_6` + * :c:data:`cart_to_sphe_7` + * :c:data:`cart_to_sphe_8` + * :c:data:`cart_to_sphe_9` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_cart_to_sphe_inv` + * :c:data:`ao_cart_to_sphe_overlap` + * :c:data:`ao_ortho_canonical_coef` + + +.. c:var:: ao_cart_to_sphe_overlap + + + File : :file:`ao_one_e_ints/ao_ortho_canonical.irp.f` + + .. code:: fortran + + double precision, allocatable :: ao_cart_to_sphe_overlap (ao_cart_to_sphe_num,ao_cart_to_sphe_num) + + + |AO| overlap matrix in the spherical basis set + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_cart_to_sphe_coef` + * :c:data:`ao_num` + * :c:data:`ao_overlap` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_ortho_canonical_coef` + + +.. c:var:: ao_deriv2_x + + + File : :file:`ao_one_e_ints/kin_ao_ints.irp.f` + + .. code:: fortran + + double precision, allocatable :: ao_deriv2_x (ao_num,ao_num) + double precision, allocatable :: ao_deriv2_y (ao_num,ao_num) + double precision, allocatable :: ao_deriv2_z (ao_num,ao_num) + + + Second derivative matrix elements in the |AO| basis. + + :math:`{\tt ao\_deriv2\_x} = + \langle \chi_i(x,y,z) | \frac{\partial^2}{\partial x^2} |\chi_j (x,y,z) \rangle` + + + 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:`nucl_coord` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_kinetic_integrals` + + +.. c:var:: ao_deriv2_y + + + File : :file:`ao_one_e_ints/kin_ao_ints.irp.f` + + .. code:: fortran + + double precision, allocatable :: ao_deriv2_x (ao_num,ao_num) + double precision, allocatable :: ao_deriv2_y (ao_num,ao_num) + double precision, allocatable :: ao_deriv2_z (ao_num,ao_num) + + + Second derivative matrix elements in the |AO| basis. + + :math:`{\tt ao\_deriv2\_x} = + \langle \chi_i(x,y,z) | \frac{\partial^2}{\partial x^2} |\chi_j (x,y,z) \rangle` + + + 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:`nucl_coord` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_kinetic_integrals` + + +.. c:var:: ao_deriv2_z + + + File : :file:`ao_one_e_ints/kin_ao_ints.irp.f` + + .. code:: fortran + + double precision, allocatable :: ao_deriv2_x (ao_num,ao_num) + double precision, allocatable :: ao_deriv2_y (ao_num,ao_num) + double precision, allocatable :: ao_deriv2_z (ao_num,ao_num) + + + Second derivative matrix elements in the |AO| basis. + + :math:`{\tt ao\_deriv2\_x} = + \langle \chi_i(x,y,z) | \frac{\partial^2}{\partial x^2} |\chi_j (x,y,z) \rangle` + + + 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:`nucl_coord` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_kinetic_integrals` + + +.. c:var:: ao_deriv_1_x + + + File : :file:`ao_one_e_ints/spread_dipole_ao.irp.f` + + .. code:: fortran + + double precision, allocatable :: ao_deriv_1_x (ao_num,ao_num) + double precision, allocatable :: ao_deriv_1_y (ao_num,ao_num) + double precision, allocatable :: ao_deriv_1_z (ao_num,ao_num) + + + * array of the integrals of AO_i * d/dx AO_j + + * array of the integrals of AO_i * d/dy AO_j + + * array of the integrals of AO_i * d/dz AO_j + + 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:`nucl_coord` + + + +.. c:var:: ao_deriv_1_y + + + File : :file:`ao_one_e_ints/spread_dipole_ao.irp.f` + + .. code:: fortran + + double precision, allocatable :: ao_deriv_1_x (ao_num,ao_num) + double precision, allocatable :: ao_deriv_1_y (ao_num,ao_num) + double precision, allocatable :: ao_deriv_1_z (ao_num,ao_num) + + + * array of the integrals of AO_i * d/dx AO_j + + * array of the integrals of AO_i * d/dy AO_j + + * array of the integrals of AO_i * d/dz AO_j + + 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:`nucl_coord` + + + +.. c:var:: ao_deriv_1_z + + + File : :file:`ao_one_e_ints/spread_dipole_ao.irp.f` + + .. code:: fortran + + double precision, allocatable :: ao_deriv_1_x (ao_num,ao_num) + double precision, allocatable :: ao_deriv_1_y (ao_num,ao_num) + double precision, allocatable :: ao_deriv_1_z (ao_num,ao_num) + + + * array of the integrals of AO_i * d/dx AO_j + + * array of the integrals of AO_i * d/dy AO_j + + * array of the integrals of AO_i * d/dz AO_j + + 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:`nucl_coord` + + + +.. c:var:: ao_dipole_x + + + File : :file:`ao_one_e_ints/spread_dipole_ao.irp.f` + + .. code:: fortran + + double precision, allocatable :: ao_dipole_x (ao_num,ao_num) + double precision, allocatable :: ao_dipole_y (ao_num,ao_num) + double precision, allocatable :: ao_dipole_z (ao_num,ao_num) + + + * array of the integrals of AO_i * x AO_j + + * array of the integrals of AO_i * y AO_j + + * array of the integrals of AO_i * z AO_j + + 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:`nucl_coord` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_dipole_x` + + +.. c:var:: ao_dipole_y + + + File : :file:`ao_one_e_ints/spread_dipole_ao.irp.f` + + .. code:: fortran + + double precision, allocatable :: ao_dipole_x (ao_num,ao_num) + double precision, allocatable :: ao_dipole_y (ao_num,ao_num) + double precision, allocatable :: ao_dipole_z (ao_num,ao_num) + + + * array of the integrals of AO_i * x AO_j + + * array of the integrals of AO_i * y AO_j + + * array of the integrals of AO_i * z AO_j + + 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:`nucl_coord` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_dipole_x` + + +.. c:var:: ao_dipole_z + + + File : :file:`ao_one_e_ints/spread_dipole_ao.irp.f` + + .. code:: fortran + + double precision, allocatable :: ao_dipole_x (ao_num,ao_num) + double precision, allocatable :: ao_dipole_y (ao_num,ao_num) + double precision, allocatable :: ao_dipole_z (ao_num,ao_num) + + + * array of the integrals of AO_i * x AO_j + + * array of the integrals of AO_i * y AO_j + + * array of the integrals of AO_i * z AO_j + + 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:`nucl_coord` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_dipole_x` + + +.. c:var:: ao_integrals_n_e + + + File : :file:`ao_one_e_ints/pot_ao_ints.irp.f` + + .. code:: fortran + + double precision, allocatable :: ao_integrals_n_e (ao_num,ao_num) + + + Nucleus-electron interaction, in the |AO| basis set. + + :math:`\langle \chi_i | -\sum_A \frac{1}{|r-R_A|} | \chi_j \rangle` + + 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_charge` + * :c:data:`nucl_coord` + * :c:data:`nucl_num` + * :c:data:`read_ao_integrals_e_n` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_one_e_integrals` + * :c:data:`ao_ortho_canonical_nucl_elec_integrals` + * :c:data:`ao_ortho_lowdin_nucl_elec_integrals` + * :c:data:`mo_integrals_n_e` + + +.. c:var:: ao_integrals_n_e_per_atom + + + File : :file:`ao_one_e_ints/pot_ao_ints.irp.f` + + .. code:: fortran + + double precision, allocatable :: ao_integrals_n_e_per_atom (ao_num,ao_num,nucl_num) + + + Nucleus-electron interaction in the |AO| basis set, per atom A. + + :math:`\langle \chi_i | -\frac{1}{|r-R_A|} | \chi_j \rangle` + + 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` + * :c:data:`nucl_num` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_integrals_n_e_per_atom` + + +.. c:var:: ao_kinetic_integrals + + + File : :file:`ao_one_e_ints/kin_ao_ints.irp.f` + + .. code:: fortran + + double precision, allocatable :: ao_kinetic_integrals (ao_num,ao_num) + + + Kinetic energy integrals in the |AO| basis. + + :math:`\langle \chi_i |\hat{T}| \chi_j \rangle` + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_deriv2_x` + * :c:data:`ao_num` + * :c:data:`read_ao_integrals_kinetic` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_one_e_integrals` + * :c:data:`mo_kinetic_integrals` + + +.. c:var:: ao_one_e_integrals + + + File : :file:`ao_one_e_ints/ao_one_e_ints.irp.f` + + .. code:: fortran + + double precision, allocatable :: ao_one_e_integrals (ao_num,ao_num) + double precision, allocatable :: ao_one_e_integrals_diag (ao_num) + + + One-electron Hamiltonian in the |AO| basis. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_integrals_n_e` + * :c:data:`ao_kinetic_integrals` + * :c:data:`ao_num` + * :c:data:`ao_pseudo_integrals` + * :c:data:`do_pseudo` + * :c:data:`read_ao_one_e_integrals` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`fock_matrix_ao_alpha` + * :c:data:`hf_energy` + * :c:data:`scf_energy` + + +.. c:var:: ao_one_e_integrals_diag + + + File : :file:`ao_one_e_ints/ao_one_e_ints.irp.f` + + .. code:: fortran + + double precision, allocatable :: ao_one_e_integrals (ao_num,ao_num) + double precision, allocatable :: ao_one_e_integrals_diag (ao_num) + + + One-electron Hamiltonian in the |AO| basis. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_integrals_n_e` + * :c:data:`ao_kinetic_integrals` + * :c:data:`ao_num` + * :c:data:`ao_pseudo_integrals` + * :c:data:`do_pseudo` + * :c:data:`read_ao_one_e_integrals` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`fock_matrix_ao_alpha` + * :c:data:`hf_energy` + * :c:data:`scf_energy` + + +.. c:var:: ao_ortho_canonical_coef + + + File : :file:`ao_one_e_ints/ao_ortho_canonical.irp.f` + + .. code:: fortran + + double precision, allocatable :: ao_ortho_canonical_coef (ao_num,ao_num) + integer :: ao_ortho_canonical_num + + + matrix of the coefficients of the mos generated by the + orthonormalization by the S^{-1/2} canonical transformation of the aos + ao_ortho_canonical_coef(i,j) = coefficient of the ith ao on the jth ao_ortho_canonical orbital + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_cart_to_sphe_coef` + * :c:data:`ao_cart_to_sphe_overlap` + * :c:data:`ao_cartesian` + * :c:data:`ao_num` + * :c:data:`ao_overlap` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_ortho_canonical_coef_inv` + * :c:data:`ao_ortho_canonical_nucl_elec_integrals` + * :c:data:`ao_ortho_canonical_overlap` + * :c:data:`mo_coef` + * :c:data:`mo_num` + + +.. c:var:: ao_ortho_canonical_coef_inv + + + File : :file:`ao_one_e_ints/ao_ortho_canonical.irp.f` + + .. code:: fortran + + double precision, allocatable :: ao_ortho_canonical_coef_inv (ao_num,ao_num) + + + ao_ortho_canonical_coef^(-1) + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`ao_ortho_canonical_coef` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_coef_in_ao_ortho_basis` + + +.. c:var:: ao_ortho_canonical_num + + + File : :file:`ao_one_e_ints/ao_ortho_canonical.irp.f` + + .. code:: fortran + + double precision, allocatable :: ao_ortho_canonical_coef (ao_num,ao_num) + integer :: ao_ortho_canonical_num + + + matrix of the coefficients of the mos generated by the + orthonormalization by the S^{-1/2} canonical transformation of the aos + ao_ortho_canonical_coef(i,j) = coefficient of the ith ao on the jth ao_ortho_canonical orbital + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_cart_to_sphe_coef` + * :c:data:`ao_cart_to_sphe_overlap` + * :c:data:`ao_cartesian` + * :c:data:`ao_num` + * :c:data:`ao_overlap` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_ortho_canonical_coef_inv` + * :c:data:`ao_ortho_canonical_nucl_elec_integrals` + * :c:data:`ao_ortho_canonical_overlap` + * :c:data:`mo_coef` + * :c:data:`mo_num` + + +.. c:var:: ao_ortho_canonical_overlap + + + File : :file:`ao_one_e_ints/ao_ortho_canonical.irp.f` + + .. code:: fortran + + double precision, allocatable :: ao_ortho_canonical_overlap (ao_ortho_canonical_num,ao_ortho_canonical_num) + + + overlap matrix of the ao_ortho_canonical. + Expected to be the Identity + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`ao_ortho_canonical_coef` + * :c:data:`ao_overlap` + + + +.. c:var:: ao_overlap + + + File : :file:`ao_one_e_ints/ao_overlap.irp.f` + + .. code:: fortran + + double precision, allocatable :: ao_overlap (ao_num,ao_num) + double precision, allocatable :: ao_overlap_x (ao_num,ao_num) + double precision, allocatable :: ao_overlap_y (ao_num,ao_num) + double precision, allocatable :: ao_overlap_z (ao_num,ao_num) + + + Overlap between atomic basis functions: + + :math:`\int \chi_i(r) \chi_j(r) dr` + + 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:`nucl_coord` + * :c:data:`read_ao_integrals_overlap` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_cart_to_sphe_overlap` + * :c:data:`ao_ortho_canonical_coef` + * :c:data:`ao_ortho_canonical_overlap` + * :c:data:`ao_ortho_lowdin_coef` + * :c:data:`ao_ortho_lowdin_overlap` + * :c:data:`fps_spf_matrix_ao` + * :c:data:`mo_overlap` + * :c:data:`s_half` + * :c:data:`s_half_inv` + * :c:data:`s_inv` + * :c:data:`s_mo_coef` + + +.. c:var:: ao_overlap_abs + + + File : :file:`ao_one_e_ints/ao_overlap.irp.f` + + .. code:: fortran + + double precision, allocatable :: ao_overlap_abs (ao_num,ao_num) + + + Overlap between absolute values of atomic basis functions: + + :math:`\int |\chi_i(r)| |\chi_j(r)| dr` + + 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:`nucl_coord` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_two_e_integral_alpha` + * :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_vv_from_ao` + + +.. c:var:: ao_overlap_x + + + File : :file:`ao_one_e_ints/ao_overlap.irp.f` + + .. code:: fortran + + double precision, allocatable :: ao_overlap (ao_num,ao_num) + double precision, allocatable :: ao_overlap_x (ao_num,ao_num) + double precision, allocatable :: ao_overlap_y (ao_num,ao_num) + double precision, allocatable :: ao_overlap_z (ao_num,ao_num) + + + Overlap between atomic basis functions: + + :math:`\int \chi_i(r) \chi_j(r) dr` + + 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:`nucl_coord` + * :c:data:`read_ao_integrals_overlap` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_cart_to_sphe_overlap` + * :c:data:`ao_ortho_canonical_coef` + * :c:data:`ao_ortho_canonical_overlap` + * :c:data:`ao_ortho_lowdin_coef` + * :c:data:`ao_ortho_lowdin_overlap` + * :c:data:`fps_spf_matrix_ao` + * :c:data:`mo_overlap` + * :c:data:`s_half` + * :c:data:`s_half_inv` + * :c:data:`s_inv` + * :c:data:`s_mo_coef` + + +.. c:var:: ao_overlap_y + + + File : :file:`ao_one_e_ints/ao_overlap.irp.f` + + .. code:: fortran + + double precision, allocatable :: ao_overlap (ao_num,ao_num) + double precision, allocatable :: ao_overlap_x (ao_num,ao_num) + double precision, allocatable :: ao_overlap_y (ao_num,ao_num) + double precision, allocatable :: ao_overlap_z (ao_num,ao_num) + + + Overlap between atomic basis functions: + + :math:`\int \chi_i(r) \chi_j(r) dr` + + 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:`nucl_coord` + * :c:data:`read_ao_integrals_overlap` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_cart_to_sphe_overlap` + * :c:data:`ao_ortho_canonical_coef` + * :c:data:`ao_ortho_canonical_overlap` + * :c:data:`ao_ortho_lowdin_coef` + * :c:data:`ao_ortho_lowdin_overlap` + * :c:data:`fps_spf_matrix_ao` + * :c:data:`mo_overlap` + * :c:data:`s_half` + * :c:data:`s_half_inv` + * :c:data:`s_inv` + * :c:data:`s_mo_coef` + + +.. c:var:: ao_overlap_z + + + File : :file:`ao_one_e_ints/ao_overlap.irp.f` + + .. code:: fortran + + double precision, allocatable :: ao_overlap (ao_num,ao_num) + double precision, allocatable :: ao_overlap_x (ao_num,ao_num) + double precision, allocatable :: ao_overlap_y (ao_num,ao_num) + double precision, allocatable :: ao_overlap_z (ao_num,ao_num) + + + Overlap between atomic basis functions: + + :math:`\int \chi_i(r) \chi_j(r) dr` + + 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:`nucl_coord` + * :c:data:`read_ao_integrals_overlap` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_cart_to_sphe_overlap` + * :c:data:`ao_ortho_canonical_coef` + * :c:data:`ao_ortho_canonical_overlap` + * :c:data:`ao_ortho_lowdin_coef` + * :c:data:`ao_ortho_lowdin_overlap` + * :c:data:`fps_spf_matrix_ao` + * :c:data:`mo_overlap` + * :c:data:`s_half` + * :c:data:`s_half_inv` + * :c:data:`s_inv` + * :c:data:`s_mo_coef` + + +.. c:var:: ao_pseudo_integrals + + + File : :file:`ao_one_e_ints/pot_ao_pseudo_ints.irp.f` + + .. code:: fortran + + double precision, allocatable :: ao_pseudo_integrals (ao_num,ao_num) + + + Pseudo-potential integrals in the |AO| basis set. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`ao_pseudo_integrals_local` + * :c:data:`ao_pseudo_integrals_non_local` + * :c:data:`do_pseudo` + * :c:data:`pseudo_klocmax` + * :c:data:`pseudo_kmax` + * :c:data:`read_ao_integrals_pseudo` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_one_e_integrals` + * :c:data:`mo_pseudo_integrals` + + +.. c:var:: ao_pseudo_integrals_local + + + File : :file:`ao_one_e_ints/pot_ao_pseudo_ints.irp.f` + + .. code:: fortran + + double precision, allocatable :: ao_pseudo_integrals_local (ao_num,ao_num) + + + Local pseudo-potential + + 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:`nucl_charge` + * :c:data:`nucl_coord` + * :c:data:`nucl_num` + * :c:data:`pseudo_klocmax` + * :c:data:`pseudo_v_k_transp` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_pseudo_integrals` + + +.. c:var:: ao_pseudo_integrals_non_local + + + File : :file:`ao_one_e_ints/pot_ao_pseudo_ints.irp.f` + + .. code:: fortran + + double precision, allocatable :: ao_pseudo_integrals_non_local (ao_num,ao_num) + + + Non-local pseudo-potential + + 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:`nucl_charge` + * :c:data:`nucl_coord` + * :c:data:`nucl_num` + * :c:data:`pseudo_kmax` + * :c:data:`pseudo_lmax` + * :c:data:`pseudo_v_kl_transp` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_pseudo_integrals` + + +.. c:var:: ao_spread_x + + + File : :file:`ao_one_e_ints/spread_dipole_ao.irp.f` + + .. code:: fortran + + double precision, allocatable :: ao_spread_x (ao_num,ao_num) + double precision, allocatable :: ao_spread_y (ao_num,ao_num) + double precision, allocatable :: ao_spread_z (ao_num,ao_num) + + + * array of the integrals of AO_i * x^2 AO_j + + * array of the integrals of AO_i * y^2 AO_j + + * array of the integrals of AO_i * z^2 AO_j + + 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:`nucl_coord` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_spread_x` + + +.. c:var:: ao_spread_y + + + File : :file:`ao_one_e_ints/spread_dipole_ao.irp.f` + + .. code:: fortran + + double precision, allocatable :: ao_spread_x (ao_num,ao_num) + double precision, allocatable :: ao_spread_y (ao_num,ao_num) + double precision, allocatable :: ao_spread_z (ao_num,ao_num) + + + * array of the integrals of AO_i * x^2 AO_j + + * array of the integrals of AO_i * y^2 AO_j + + * array of the integrals of AO_i * z^2 AO_j + + 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:`nucl_coord` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_spread_x` + + +.. c:var:: ao_spread_z + + + File : :file:`ao_one_e_ints/spread_dipole_ao.irp.f` + + .. code:: fortran + + double precision, allocatable :: ao_spread_x (ao_num,ao_num) + double precision, allocatable :: ao_spread_y (ao_num,ao_num) + double precision, allocatable :: ao_spread_z (ao_num,ao_num) + + + * array of the integrals of AO_i * x^2 AO_j + + * array of the integrals of AO_i * y^2 AO_j + + * array of the integrals of AO_i * z^2 AO_j + + 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:`nucl_coord` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_spread_x` + + +.. c:function:: give_polynomial_mult_center_one_e_erf: + + + File : :file:`ao_one_e_ints/pot_ao_erf_ints.irp.f` + + .. code:: fortran + + subroutine give_polynomial_mult_center_one_e_erf(A_center,B_center,alpha,beta,& + power_A,power_B,C_center,n_pt_in,d,n_pt_out,mu_in) + + + Returns the explicit polynomial in terms of the $t$ variable of the following polynomial: + + $I_{x1}(a_x, d_x,p,q) \times I_{x1}(a_y, d_y,p,q) \times I_{x1}(a_z, d_z,p,q)$. + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`i_x1_pol_mult_one_e` + * :c:func:`multiply_poly` + + +.. c:function:: give_polynomial_mult_center_one_e_erf_opt: + + + File : :file:`ao_one_e_ints/pot_ao_erf_ints.irp.f` + + .. code:: fortran + + subroutine give_polynomial_mult_center_one_e_erf_opt(A_center,B_center,alpha,beta,& + power_A,power_B,C_center,n_pt_in,d,n_pt_out,mu_in,p,p_inv,p_inv_2,p_new,P_center) + + + Returns the explicit polynomial in terms of the $t$ variable of the following polynomial: + + $I_{x1}(a_x, d_x,p,q) \times I_{x1}(a_y, d_y,p,q) \times I_{x1}(a_z, d_z,p,q)$. + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`nai_pol_mult_erf` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`i_x1_pol_mult_one_e` + * :c:func:`multiply_poly` + + +.. c:function:: i_x1_pol_mult_one_e: + + + File : :file:`ao_one_e_ints/pot_ao_ints.irp.f` + + .. code:: fortran + + recursive subroutine I_x1_pol_mult_one_e(a,c,R1x,R1xp,R2x,d,nd,n_pt_in) + + + Recursive routine involved in the electron-nucleus potential + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`give_polynomial_mult_center_one_e` + * :c:func:`give_polynomial_mult_center_one_e_erf` + * :c:func:`give_polynomial_mult_center_one_e_erf_opt` + * :c:func:`i_x1_pol_mult_one_e` + * :c:func:`i_x2_pol_mult_one_e` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`i_x1_pol_mult_one_e` + * :c:func:`i_x2_pol_mult_one_e` + * :c:func:`multiply_poly` + + +.. c:function:: i_x2_pol_mult_one_e: + + + File : :file:`ao_one_e_ints/pot_ao_ints.irp.f` + + .. code:: fortran + + recursive subroutine I_x2_pol_mult_one_e(c,R1x,R1xp,R2x,d,nd,dim) + + + Recursive routine involved in the electron-nucleus potential + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`i_x1_pol_mult_one_e` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`i_x1_pol_mult_one_e` + * :c:func:`multiply_poly` + + +.. c:var:: pseudo_dz_k_transp + + + File : :file:`ao_one_e_ints/pot_ao_pseudo_ints.irp.f` + + .. code:: fortran + + double precision, allocatable :: pseudo_v_k_transp (pseudo_klocmax,nucl_num) + integer, allocatable :: pseudo_n_k_transp (pseudo_klocmax,nucl_num) + double precision, allocatable :: pseudo_dz_k_transp (pseudo_klocmax,nucl_num) + + + Transposed arrays for pseudopotentials + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`nucl_num` + * :c:data:`pseudo_dz_k` + * :c:data:`pseudo_klocmax` + * :c:data:`pseudo_n_k` + * :c:data:`pseudo_v_k` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_pseudo_integrals_local` + + +.. c:var:: pseudo_dz_kl_transp + + + File : :file:`ao_one_e_ints/pot_ao_pseudo_ints.irp.f` + + .. code:: fortran + + double precision, allocatable :: pseudo_v_kl_transp (pseudo_kmax,0:pseudo_lmax,nucl_num) + integer, allocatable :: pseudo_n_kl_transp (pseudo_kmax,0:pseudo_lmax,nucl_num) + double precision, allocatable :: pseudo_dz_kl_transp (pseudo_kmax,0:pseudo_lmax,nucl_num) + + + Transposed arrays for pseudopotentials + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`nucl_num` + * :c:data:`pseudo_dz_kl` + * :c:data:`pseudo_kmax` + * :c:data:`pseudo_lmax` + * :c:data:`pseudo_n_kl` + * :c:data:`pseudo_v_kl` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_pseudo_integrals_non_local` + + +.. c:var:: pseudo_n_k_transp + + + File : :file:`ao_one_e_ints/pot_ao_pseudo_ints.irp.f` + + .. code:: fortran + + double precision, allocatable :: pseudo_v_k_transp (pseudo_klocmax,nucl_num) + integer, allocatable :: pseudo_n_k_transp (pseudo_klocmax,nucl_num) + double precision, allocatable :: pseudo_dz_k_transp (pseudo_klocmax,nucl_num) + + + Transposed arrays for pseudopotentials + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`nucl_num` + * :c:data:`pseudo_dz_k` + * :c:data:`pseudo_klocmax` + * :c:data:`pseudo_n_k` + * :c:data:`pseudo_v_k` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_pseudo_integrals_local` + + +.. c:var:: pseudo_n_kl_transp + + + File : :file:`ao_one_e_ints/pot_ao_pseudo_ints.irp.f` + + .. code:: fortran + + double precision, allocatable :: pseudo_v_kl_transp (pseudo_kmax,0:pseudo_lmax,nucl_num) + integer, allocatable :: pseudo_n_kl_transp (pseudo_kmax,0:pseudo_lmax,nucl_num) + double precision, allocatable :: pseudo_dz_kl_transp (pseudo_kmax,0:pseudo_lmax,nucl_num) + + + Transposed arrays for pseudopotentials + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`nucl_num` + * :c:data:`pseudo_dz_kl` + * :c:data:`pseudo_kmax` + * :c:data:`pseudo_lmax` + * :c:data:`pseudo_n_kl` + * :c:data:`pseudo_v_kl` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_pseudo_integrals_non_local` + + +.. c:var:: pseudo_v_k_transp + + + File : :file:`ao_one_e_ints/pot_ao_pseudo_ints.irp.f` + + .. code:: fortran + + double precision, allocatable :: pseudo_v_k_transp (pseudo_klocmax,nucl_num) + integer, allocatable :: pseudo_n_k_transp (pseudo_klocmax,nucl_num) + double precision, allocatable :: pseudo_dz_k_transp (pseudo_klocmax,nucl_num) + + + Transposed arrays for pseudopotentials + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`nucl_num` + * :c:data:`pseudo_dz_k` + * :c:data:`pseudo_klocmax` + * :c:data:`pseudo_n_k` + * :c:data:`pseudo_v_k` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_pseudo_integrals_local` + + +.. c:var:: pseudo_v_kl_transp + + + File : :file:`ao_one_e_ints/pot_ao_pseudo_ints.irp.f` + + .. code:: fortran + + double precision, allocatable :: pseudo_v_kl_transp (pseudo_kmax,0:pseudo_lmax,nucl_num) + integer, allocatable :: pseudo_n_kl_transp (pseudo_kmax,0:pseudo_lmax,nucl_num) + double precision, allocatable :: pseudo_dz_kl_transp (pseudo_kmax,0:pseudo_lmax,nucl_num) + + + Transposed arrays for pseudopotentials + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`nucl_num` + * :c:data:`pseudo_dz_kl` + * :c:data:`pseudo_kmax` + * :c:data:`pseudo_lmax` + * :c:data:`pseudo_n_kl` + * :c:data:`pseudo_v_kl` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_pseudo_integrals_non_local` + + +.. c:var:: s_half + + + File : :file:`ao_one_e_ints/ao_overlap.irp.f` + + .. code:: fortran + + double precision, allocatable :: s_half (ao_num,ao_num) + + + :math:`S^{1/2}` + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`ao_overlap` + + + +.. c:var:: s_half_inv + + + File : :file:`ao_one_e_ints/ao_overlap.irp.f` + + .. code:: fortran + + double precision, allocatable :: s_half_inv (AO_num,AO_num) + + + :math:`X = S^{-1/2}` obtained by SVD + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`ao_overlap` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`eigenvalues_fock_matrix_ao` + + +.. c:var:: s_inv + + + File : :file:`ao_one_e_ints/ao_overlap.irp.f` + + .. code:: fortran + + double precision, allocatable :: s_inv (ao_num,ao_num) + + + Inverse of the overlap matrix + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`ao_overlap` + + + + +Subroutines / functions +----------------------- + +.. c:function:: give_all_erf_kl_ao: + + + File : :file:`ao_one_e_ints/pot_ao_erf_ints.irp.f` + + .. code:: fortran + + subroutine give_all_erf_kl_ao(integrals_ao,mu_in,C_center) + + + Subroutine that returns all integrals over $r$ of type + $\frac{ \erf(\mu * |r-R_C|) }{ |r-R_C| }$ + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + + +.. c:function:: give_polynomial_mult_center_one_e: + + + File : :file:`ao_one_e_ints/pot_ao_ints.irp.f` + + .. code:: fortran + + subroutine give_polynomial_mult_center_one_e(A_center,B_center,alpha,beta,power_A,power_B,C_center,n_pt_in,d,n_pt_out) + + + Returns the explicit polynomial in terms of the "t" variable of the following + + $I_{x1}(a_x, d_x,p,q) \times I_{x1}(a_y, d_y,p,q) \times I_{x1}(a_z, d_z,p,q)$. + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`nai_pol_mult` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`i_x1_pol_mult_one_e` + * :c:func:`multiply_poly` + + +.. c:function:: int_gaus_pol: + + + File : :file:`ao_one_e_ints/pot_ao_ints.irp.f` + + .. code:: fortran + + double precision function int_gaus_pol(alpha,n) + + + Computes the integral: + + $\int_{-\infty}^{\infty} x^n \exp(-\alpha x^2) dx$. + + +.. c:function:: nai_pol_mult: + + + File : :file:`ao_one_e_ints/pot_ao_ints.irp.f` + + .. code:: fortran + + double precision function NAI_pol_mult(A_center,B_center,power_A,power_B,alpha,beta,C_center,n_pt_in) + + + Computes the electron-nucleus attraction with two primitves. + + :math:`\langle g_i | \frac{1}{|r-R_c|} | g_j \rangle` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`give_polynomial_mult_center_one_e` + + +.. c:function:: nai_pol_mult_erf: + + + File : :file:`ao_one_e_ints/pot_ao_erf_ints.irp.f` + + .. code:: fortran + + double precision function NAI_pol_mult_erf(A_center,B_center,power_A,power_B,alpha,beta,C_center,n_pt_in,mu_in) + + + Computes the following integral : + $\int dr (x-A_x)^a (x-B_x)^b \exp(-\alpha (x-A_x)^2 - \beta (x-B_x)^2 ) + \frac{\erf(\mu |r-R_C|)}{|r-R_c|}$. + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`give_polynomial_mult_center_one_e_erf_opt` + + +.. c:function:: nai_pol_mult_erf_ao: + + + File : :file:`ao_one_e_ints/pot_ao_erf_ints.irp.f` + + .. code:: fortran + + double precision function NAI_pol_mult_erf_ao(i_ao,j_ao,mu_in,C_center) + + + Computes the following integral : + $\int_{-\infty}^{infty} dr \chi_i(r) \chi_j(r) \frac{\erf(\mu |r-R_C|)}{|r-R_C|}$. + + 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` + + +.. c:function:: overlap_bourrin_deriv_x: + + + File : :file:`ao_one_e_ints/spread_dipole_ao.irp.f` + + .. code:: fortran + + subroutine overlap_bourrin_deriv_x(i_component,A_center,B_center,alpha,beta,power_A,power_B,dx,lower_exp_val,overlap_x,nx) + + + + Called by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_deriv_1_x` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`overlap_bourrin_x` + + +.. c:function:: overlap_bourrin_dipole: + + + File : :file:`ao_one_e_ints/spread_dipole_ao.irp.f` + + .. code:: fortran + + subroutine overlap_bourrin_dipole(A_center,B_center,alpha,beta,power_A,power_B,overlap_x,lower_exp_val,dx,nx) + + + + Called by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_dipole_x` + + +.. c:function:: overlap_bourrin_spread: + + + File : :file:`ao_one_e_ints/spread_dipole_ao.irp.f` + + .. code:: fortran + + subroutine overlap_bourrin_spread(A_center,B_center,alpha,beta,power_A,power_B,overlap_x,lower_exp_val,dx,nx) + + + Computes the following integral : + int [-infty ; +infty] of [(x-A_center)^(power_A) * (x-B_center)^power_B * exp(-alpha(x-A_center)^2) * exp(-beta(x-B_center)^2) * x ] + needed for the dipole and those things + + Called by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_spread_x` + + +.. c:function:: overlap_bourrin_x: + + + File : :file:`ao_one_e_ints/spread_dipole_ao.irp.f` + + .. code:: fortran + + subroutine overlap_bourrin_x(A_center,B_center,alpha,beta,power_A,power_B,overlap_x,lower_exp_val,dx,nx) + + + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`overlap_bourrin_deriv_x` + + +.. c:function:: v_e_n: + + + File : :file:`ao_one_e_ints/pot_ao_ints.irp.f` + + .. code:: fortran + + double precision function V_e_n(a_x,a_y,a_z,b_x,b_y,b_z,alpha,beta) + + + Primitve nuclear attraction between the two primitves centered on the same atom. + + $p_1 = x^{a_x} y^{a_y} z^{a_z} \exp(-\alpha r^2)$ + + $p_2 = x^{b_x} y^{b_y} z^{b_z} \exp(-\beta r^2)$ + + +.. c:function:: v_phi: + + + File : :file:`ao_one_e_ints/pot_ao_ints.irp.f` + + .. code:: fortran + + double precision function V_phi(n,m) + + + Computes the angular $\phi$ part of the nuclear attraction integral: + + $\int_{0}^{2 \pi} \cos(\phi)^n \sin(\phi)^m d\phi$. + + +.. c:function:: v_r: + + + File : :file:`ao_one_e_ints/pot_ao_ints.irp.f` + + .. code:: fortran + + double precision function V_r(n,alpha) + + + Computes the radial part of the nuclear attraction integral: + + $\int_{0}^{\infty} r^n \exp(-\alpha r^2) dr$ + + + +.. c:function:: v_theta: + + + File : :file:`ao_one_e_ints/pot_ao_ints.irp.f` + + .. code:: fortran + + double precision function V_theta(n,m) + + + Computes the angular $\theta$ part of the nuclear attraction integral: + + $\int_{0}^{\pi} \cos(\theta)^n \sin(\theta)^m d\theta$ + + +.. c:function:: wallis: + + + File : :file:`ao_one_e_ints/pot_ao_ints.irp.f` + + .. code:: fortran + + double precision function Wallis(n) + + + Wallis integral: + + $\int_{0}^{\pi} \cos(\theta)^n d\theta$. + diff --git a/doc/_sources/modules/ao_two_e_erf_ints.rst.txt b/doc/_sources/modules/ao_two_e_erf_ints.rst.txt new file mode 100644 index 00000000..4e35de17 --- /dev/null +++ b/doc/_sources/modules/ao_two_e_erf_ints.rst.txt @@ -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) = = <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 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 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 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` + diff --git a/doc/_sources/modules/ao_two_e_ints.rst.txt b/doc/_sources/modules/ao_two_e_ints.rst.txt new file mode 100644 index 00000000..9121ed30 --- /dev/null +++ b/doc/_sources/modules/ao_two_e_ints.rst.txt @@ -0,0 +1,1282 @@ +.. _module_ao_two_e_ints: + +.. program:: ao_two_e_ints + +.. default-role:: option + +================== +ao_two_e_ints +================== + +Here, all two-electron integrals (:math:`1/r_{12}`) are computed. +As they have 4 indices and many are zero, they are stored in a map, as defined +in :file:`utils/map_module.f90`. + +To fetch an |AO| integral, use the +`get_ao_two_e_integral(i,j,k,l,ao_integrals_map)` function. + + +The conventions are: +* For |AO| integrals : (ij|kl) = (11|22) = = <12|12> + + + + + + +EZFIO parameters +---------------- + +.. option:: io_ao_two_e_integrals + + Read/Write |AO| integrals from/to disk [ Write | Read | None ] + + Default: None + +.. option:: ao_integrals_threshold + + If | (pq|rs) | < `ao_integrals_threshold` then (pq|rs) is zero + + Default: 1.e-15 + +.. option:: do_direct_integrals + + Compute integrals on the fly (very slow, only for debugging) + + Default: False + + +Providers +--------- + +.. c:var:: ao_integrals_cache + + + File : :file:`ao_two_e_ints/map_integrals.irp.f` + + .. code:: fortran + + double precision, allocatable :: ao_integrals_cache (0:64*64*64*64) + + + Cache of AO integrals for fast access + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_integrals_cache_min` + * :c:data:`ao_integrals_map` + * :c:data:`ao_two_e_integrals_in_map` + + + +.. c:var:: ao_integrals_cache_max + + + File : :file:`ao_two_e_ints/map_integrals.irp.f` + + .. code:: fortran + + integer :: ao_integrals_cache_min + integer :: ao_integrals_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_cache` + + +.. c:var:: ao_integrals_cache_min + + + File : :file:`ao_two_e_ints/map_integrals.irp.f` + + .. code:: fortran + + integer :: ao_integrals_cache_min + integer :: ao_integrals_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_cache` + + +.. c:var:: ao_integrals_map + + + File : :file:`ao_two_e_ints/map_integrals.irp.f` + + .. code:: fortran + + type(map_type) :: ao_integrals_map + + + AO integrals + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_integrals_cache` + * :c:data:`ao_two_e_integral_alpha` + * :c:data:`ao_two_e_integrals_in_map` + * :c:data:`mo_two_e_integral_jj_from_ao` + * :c:data:`mo_two_e_integrals_vv_from_ao` + + +.. c:var:: ao_two_e_integral_schwartz + + + File : :file:`ao_two_e_ints/two_e_integrals.irp.f` + + .. code:: fortran + + double precision, allocatable :: ao_two_e_integral_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:`ao_two_e_integral_alpha` + * :c:data:`mo_two_e_integral_jj_from_ao` + * :c:data:`mo_two_e_integrals_vv_from_ao` + + +.. c:var:: ao_two_e_integrals_in_map + + + File : :file:`ao_two_e_ints/two_e_integrals.irp.f` + + .. code:: fortran + + logical :: ao_two_e_integrals_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_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` + * :c:data:`mpi_master` + * :c:data:`n_pt_max_integrals` + * :c:data:`nproc` + * :c:data:`nucl_coord` + * :c:data:`read_ao_two_e_integrals` + * :c:data:`zmq_context` + * :c:data:`zmq_socket_pull_tcp_address` + * :c:data:`zmq_state` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_integrals_cache` + * :c:data:`ao_two_e_integral_alpha` + * :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:: gauleg_t2 + + + File : :file:`ao_two_e_ints/gauss_legendre.irp.f` + + .. code:: fortran + + double precision, allocatable :: gauleg_t2 (n_pt_max_integrals,n_pt_max_integrals/2) + double precision, allocatable :: gauleg_w (n_pt_max_integrals,n_pt_max_integrals/2) + + + t_w(i,1,k) = w(i) + t_w(i,2,k) = t(i) + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_pt_max_integrals` + + + +.. c:var:: gauleg_w + + + File : :file:`ao_two_e_ints/gauss_legendre.irp.f` + + .. code:: fortran + + double precision, allocatable :: gauleg_t2 (n_pt_max_integrals,n_pt_max_integrals/2) + double precision, allocatable :: gauleg_w (n_pt_max_integrals,n_pt_max_integrals/2) + + + t_w(i,1,k) = w(i) + t_w(i,2,k) = t(i) + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_pt_max_integrals` + + + +.. c:function:: general_primitive_integral: + + + File : :file:`ao_two_e_ints/two_e_integrals.irp.f` + + .. code:: fortran + + double precision function general_primitive_integral(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 where p,q,r,s are Gaussian primitives + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`add_poly_multiply` + * :c:func:`give_polynom_mult_center_x` + * :c:func:`multiply_poly` + + +.. c:function:: i_x1_new: + + + File : :file:`ao_two_e_ints/two_e_integrals.irp.f` + + .. code:: fortran + + recursive subroutine I_x1_new(a,c,B_10,B_01,B_00,res,n_pt) + + + recursive function involved in the two-electron integral + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_pt_max_integrals` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`i_x1_new` + * :c:func:`i_x2_new` + * :c:func:`integrale_new` + * :c:func:`integrale_new_erf` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`i_x1_new` + * :c:func:`i_x2_new` + + +.. c:function:: i_x1_pol_mult_a1: + + + File : :file:`ao_two_e_ints/two_e_integrals.irp.f` + + .. code:: fortran + + recursive subroutine I_x1_pol_mult_a1(c,B_10,B_01,B_00,C_00,D_00,d,nd,n_pt_in) + + + recursive function involved in the two-electron integral + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`i_x1_pol_mult` + * :c:func:`i_x1_pol_mult_a2` + * :c:func:`i_x1_pol_mult_recurs` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`i_x2_pol_mult` + * :c:func:`multiply_poly` + + +.. c:function:: i_x1_pol_mult_a2: + + + File : :file:`ao_two_e_ints/two_e_integrals.irp.f` + + .. code:: fortran + + recursive subroutine I_x1_pol_mult_a2(c,B_10,B_01,B_00,C_00,D_00,d,nd,n_pt_in) + + + recursive function involved in the two-electron integral + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`i_x1_pol_mult` + * :c:func:`i_x1_pol_mult_recurs` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`i_x1_pol_mult_a1` + * :c:func:`i_x2_pol_mult` + * :c:func:`multiply_poly` + + +.. c:function:: i_x1_pol_mult_recurs: + + + File : :file:`ao_two_e_ints/two_e_integrals.irp.f` + + .. code:: fortran + + recursive subroutine I_x1_pol_mult_recurs(a,c,B_10,B_01,B_00,C_00,D_00,d,nd,n_pt_in) + + + recursive function involved in the two-electron integral + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`i_x1_pol_mult` + * :c:func:`i_x1_pol_mult_recurs` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`i_x1_pol_mult_a1` + * :c:func:`i_x1_pol_mult_a2` + * :c:func:`i_x1_pol_mult_recurs` + * :c:func:`multiply_poly` + + +.. c:function:: i_x2_new: + + + File : :file:`ao_two_e_ints/two_e_integrals.irp.f` + + .. code:: fortran + + recursive subroutine I_x2_new(c,B_10,B_01,B_00,res,n_pt) + + + recursive function involved in the two-electron integral + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_pt_max_integrals` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`i_x1_new` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`i_x1_new` + + +.. c:function:: i_x2_pol_mult: + + + File : :file:`ao_two_e_ints/two_e_integrals.irp.f` + + .. code:: fortran + + recursive subroutine I_x2_pol_mult(c,B_10,B_01,B_00,C_00,D_00,d,nd,dim) + + + recursive function involved in the two-electron integral + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`i_x1_pol_mult` + * :c:func:`i_x1_pol_mult_a1` + * :c:func:`i_x1_pol_mult_a2` + * :c:func:`i_x2_pol_mult` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`i_x2_pol_mult` + * :c:func:`multiply_poly` + + + +Subroutines / functions +----------------------- + +.. c:function:: ao_l4: + + + File : :file:`ao_two_e_ints/two_e_integrals.irp.f` + + .. code:: fortran + + integer function ao_l4(i,j,k,l) + + + Computes the product of l values of i,j,k,and l + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_l` + + +.. c:function:: ao_two_e_integral: + + + File : :file:`ao_two_e_ints/two_e_integrals.irp.f` + + .. code:: fortran + + double precision function ao_two_e_integral(i,j,k,l) + + + integral of the AO basis 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: + + + File : :file:`ao_two_e_ints/two_e_integrals.irp.f` + + .. code:: fortran + + double precision function ao_two_e_integral_schwartz_accel(i,j,k,l) + + + integral of the AO basis 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_in_map_collector: + + + File : :file:`ao_two_e_ints/integrals_in_map_slave.irp.f` + + .. code:: fortran + + subroutine ao_two_e_integrals_in_map_collector(zmq_socket_pull) + + + Collects results from the AO integral calculation + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_integrals_map` + * :c:data:`ao_num` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_two_e_integrals_in_map` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`end_zmq_to_qp_run_socket` + * :c:func:`insert_into_ao_integrals_map` + + +.. c:function:: ao_two_e_integrals_in_map_slave: + + + File : :file:`ao_two_e_ints/integrals_in_map_slave.irp.f` + + .. code:: fortran + + subroutine ao_two_e_integrals_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_in_map_slave_inproc` + * :c:func:`ao_two_e_integrals_in_map_slave_tcp` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`compute_ao_integrals_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_in_map_slave_inproc: + + + File : :file:`ao_two_e_ints/integrals_in_map_slave.irp.f` + + .. code:: fortran + + subroutine ao_two_e_integrals_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_in_map` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`ao_two_e_integrals_in_map_slave` + + +.. c:function:: ao_two_e_integrals_in_map_slave_tcp: + + + File : :file:`ao_two_e_ints/integrals_in_map_slave.irp.f` + + .. code:: fortran + + subroutine ao_two_e_integrals_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_in_map_slave` + + +.. c:function:: clear_ao_map: + + + File : :file:`ao_two_e_ints/map_integrals.irp.f` + + .. code:: fortran + + subroutine clear_ao_map + + + Frees the memory of the AO map + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_integrals_map` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`map_deinit` + + +.. c:function:: compute_ao_integrals_jl: + + + File : :file:`ao_two_e_ints/two_e_integrals.irp.f` + + .. code:: fortran + + subroutine compute_ao_integrals_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_schwartz` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`ao_two_e_integrals_in_map_slave` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`two_e_integrals_index` + + +.. c:function:: compute_ao_two_e_integrals: + + + File : :file:`ao_two_e_ints/two_e_integrals.irp.f` + + .. code:: fortran + + subroutine compute_ao_two_e_integrals(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_schwartz` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_two_e_integral_jj_from_ao` + * :c:data:`mo_two_e_integrals_vv_from_ao` + + +.. c:function:: dump_ao_integrals: + + + File : :file:`ao_two_e_ints/map_integrals.irp.f` + + .. code:: fortran + + subroutine dump_ao_integrals(filename) + + + Save to disk the |AO| integrals + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_integrals_map` + * :c:data:`mpi_master` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`ezfio_set_work_empty` + + +.. c:function:: eri: + + + File : :file:`ao_two_e_ints/two_e_integrals.irp.f` + + .. code:: fortran + + double precision function ERI(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) + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`integrale_new` + + +.. c:function:: gauleg: + + + File : :file:`ao_two_e_ints/gauss_legendre.irp.f` + + .. code:: fortran + + subroutine gauleg(x1,x2,x,w,n) + + + Gauss-Legendre + + Called by: + + .. hlist:: + :columns: 3 + + * :c:data:`gauleg_t2` + + +.. c:function:: get_ao_map_size: + + + File : :file:`ao_two_e_ints/map_integrals.irp.f` + + .. code:: fortran + + function get_ao_map_size() + + + Returns the number of elements in the AO map + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_integrals_map` + + +.. c:function:: get_ao_two_e_integral: + + + File : :file:`ao_two_e_ints/map_integrals.irp.f` + + .. code:: fortran + + double precision function get_ao_two_e_integral(i,j,k,l,map) result(result) + + + Gets one AO bi-electronic integral from the AO map + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_overlap_abs` + * :c:data:`ao_integrals_threshold` + * :c:data:`ao_two_e_integral_schwartz` + * :c:data:`ao_integrals_cache` + * :c:data:`ao_integrals_cache_min` + * :c:data:`ao_two_e_integrals_in_map` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`map_get` + * :c:func:`two_e_integrals_index` + + +.. c:function:: get_ao_two_e_integrals: + + + File : :file:`ao_two_e_ints/map_integrals.irp.f` + + .. code:: fortran + + subroutine get_ao_two_e_integrals(j,k,l,sze,out_val) + + + Gets multiple AO bi-electronic integral from the AO map . + All i are retrieved for j,k,l fixed. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_integrals_map` + * :c:data:`ao_overlap_abs` + * :c:data:`ao_integrals_threshold` + * :c:data:`ao_two_e_integrals_in_map` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`add_integrals_to_map` + * :c:func:`add_integrals_to_map_no_exit_34` + * :c:func:`add_integrals_to_map_three_indices` + + +.. c:function:: get_ao_two_e_integrals_non_zero: + + + File : :file:`ao_two_e_ints/map_integrals.irp.f` + + .. code:: fortran + + subroutine get_ao_two_e_integrals_non_zero(j,k,l,sze,out_val,out_val_index,non_zero_int) + + + Gets multiple AO bi-electronic integral from the AO map . + All non-zero i are retrieved for j,k,l fixed. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_integrals_map` + * :c:data:`ao_overlap_abs` + * :c:data:`ao_integrals_threshold` + * :c:data:`ao_two_e_integral_schwartz` + * :c:data:`ao_two_e_integrals_in_map` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_two_e_integral_jj_from_ao` + * :c:data:`mo_two_e_integrals_vv_from_ao` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`map_get` + * :c:func:`two_e_integrals_index` + + +.. c:function:: give_polynom_mult_center_x: + + + File : :file:`ao_two_e_ints/two_e_integrals.irp.f` + + .. code:: fortran + + subroutine give_polynom_mult_center_x(P_center,Q_center,a_x,d_x,p,q,n_pt_in,pq_inv,pq_inv_2,p10_1,p01_1,p10_2,p01_2,d,n_pt_out) + + + subroutine that returns the explicit polynom in term of the "t" + variable of the following polynomw : + I_x1(a_x, d_x,p,q) * I_x1(a_y, d_y,p,q) * I_x1(a_z, d_z,p,q) + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`general_primitive_integral` + * :c:func:`general_primitive_integral_erf` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`i_x1_pol_mult` + + +.. c:function:: i_x1_pol_mult: + + + File : :file:`ao_two_e_ints/two_e_integrals.irp.f` + + .. code:: fortran + + subroutine I_x1_pol_mult(a,c,B_10,B_01,B_00,C_00,D_00,d,nd,n_pt_in) + + + recursive function involved in the two-electron integral + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`give_polynom_mult_center_x` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`i_x1_pol_mult_a1` + * :c:func:`i_x1_pol_mult_a2` + * :c:func:`i_x1_pol_mult_recurs` + * :c:func:`i_x2_pol_mult` + + +.. c:function:: insert_into_ao_integrals_map: + + + File : :file:`ao_two_e_ints/map_integrals.irp.f` + + .. code:: fortran + + subroutine insert_into_ao_integrals_map(n_integrals,buffer_i, buffer_values) + + + Create new entry into AO map + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_integrals_map` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`ao_two_e_integrals_in_map_collector` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`map_append` + + +.. c:function:: integrale_new: + + + File : :file:`ao_two_e_ints/two_e_integrals.irp.f` + + .. code:: fortran + + subroutine integrale_new(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:`n_pt_max_integrals` + * :c:data:`gauleg_t2` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`eri` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`i_x1_new` + + +.. c:function:: load_ao_integrals: + + + File : :file:`ao_two_e_ints/map_integrals.irp.f` + + .. code:: fortran + + integer function load_ao_integrals(filename) + + + Read from disk the |AO| integrals + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_integrals_map` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`cache_map_reallocate` + * :c:func:`map_deinit` + * :c:func:`map_sort` + + +.. c:function:: n_pt_sup: + + + File : :file:`ao_two_e_ints/two_e_integrals.irp.f` + + .. code:: fortran + + integer function n_pt_sup(a_x,b_x,c_x,d_x,a_y,b_y,c_y,d_y,a_z,b_z,c_z,d_z) + + + Returns the upper boundary of the degree of the polynomial involved in the + bielctronic integral : + Ix(a_x,b_x,c_x,d_x) * Iy(a_y,b_y,c_y,d_y) * Iz(a_z,b_z,c_z,d_z) + + +.. c:function:: push_integrals: + + + File : :file:`ao_two_e_ints/integrals_in_map_slave.irp.f` + + .. code:: fortran + + subroutine push_integrals(zmq_socket_push, n_integrals, buffer_i, buffer_value, task_id) + + + Push integrals in the push socket + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`ao_two_e_integrals_erf_in_map_slave` + * :c:func:`ao_two_e_integrals_in_map_slave` + + +.. c:function:: two_e_integrals_index: + + + File : :file:`ao_two_e_ints/map_integrals.irp.f` + + .. code:: fortran + + subroutine two_e_integrals_index(i,j,k,l,i1) + + + + Called by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_integrals_cache` + * :c:data:`ao_integrals_erf_cache` + * :c:data:`ao_integrals_erf_map` + * :c:data:`ao_integrals_map` + * :c:func:`compute_ao_integrals_erf_jl` + * :c:func:`compute_ao_integrals_jl` + * :c:func:`get_ao_two_e_integral` + * :c:func:`get_ao_two_e_integral_erf` + * :c:func:`get_ao_two_e_integrals_erf_non_zero` + * :c:func:`get_ao_two_e_integrals_non_zero` + * :c:func:`get_mo_two_e_integral_erf` + * :c:func:`get_mo_two_e_integrals_coulomb_ii` + * :c:func:`get_mo_two_e_integrals_erf` + * :c:func:`get_mo_two_e_integrals_erf_coulomb_ii` + * :c:func:`get_mo_two_e_integrals_erf_exch_ii` + * :c:func:`get_mo_two_e_integrals_erf_i1j1` + * :c:func:`get_mo_two_e_integrals_erf_ij` + * :c:func:`get_mo_two_e_integrals_exch_ii` + * :c:func:`get_mo_two_e_integrals_i1j1` + * :c:func:`get_mo_two_e_integrals_ij` + * :c:func:`get_two_e_integral` + * :c:data:`mo_integrals_cache` + * :c:data:`mo_integrals_erf_cache` + * :c:data:`mo_integrals_erf_map` + * :c:data:`mo_integrals_map` + * :c:func:`two_e_integrals_index_reverse` + + +.. c:function:: two_e_integrals_index_reverse: + + + File : :file:`ao_two_e_ints/map_integrals.irp.f` + + .. code:: fortran + + subroutine two_e_integrals_index_reverse(i,j,k,l,i1) + + + + Called by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_two_e_integral_alpha` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`two_e_integrals_index` + diff --git a/doc/_sources/modules/aux_quantities.rst.txt b/doc/_sources/modules/aux_quantities.rst.txt new file mode 100644 index 00000000..3ded29f8 --- /dev/null +++ b/doc/_sources/modules/aux_quantities.rst.txt @@ -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 + diff --git a/doc/_sources/modules/becke_numerical_grid.rst.txt b/doc/_sources/modules/becke_numerical_grid.rst.txt new file mode 100644 index 00000000..5f97851d --- /dev/null +++ b/doc/_sources/modules/becke_numerical_grid.rst.txt @@ -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)) + diff --git a/doc/_sources/modules/bitmask.rst.txt b/doc/_sources/modules/bitmask.rst.txt new file mode 100644 index 00000000..530eb096 --- /dev/null +++ b/doc/_sources/modules/bitmask.rst.txt @@ -0,0 +1,3489 @@ +.. _module_bitmask: + +.. program:: bitmask + +.. default-role:: option + +============== +bitmask module +============== + +The central part of this module is the :file:`bitmasks_module.f90` file. It contains +the constants that will be used to define on which kind of integer the bitmasks +will be defined. + +In the program, to represent a determinant as a pair of bitstrings, +the determinant should be defined as + +.. code-block:: fortran + + use bitmasks + integer(bit_kind) :: determinant(N_int,2) + + +:file:`bitmasks_routines.irp.f` contains helper routines to manipulate bitmask, like +transforming a bit string to a list of integers for example. + + +`bit_kind_shift`, `bit_kind_size` and `bit_kind` are supposed to be consistent:: + + 2**bit_kind_shift = bit_kind_size + bit_kind = bit_kind_size / 8 + + +For an example of how to use the bitmaks, see the file :file:`example.irp.f`. + + + +Providers +--------- + +.. c:var:: act_bitmask + + + File : :file:`bitmask/core_inact_act_virt.irp.f` + + .. code:: fortran + + integer, allocatable :: list_inact (dim_list_inact_orb) + integer, allocatable :: list_virt (dim_list_virt_orb) + integer, allocatable :: list_inact_reverse (mo_num) + integer, allocatable :: list_virt_reverse (mo_num) + integer, allocatable :: list_del_reverse (mo_num) + integer, allocatable :: list_del (mo_num) + integer, allocatable :: list_core (dim_list_core_orb) + integer, allocatable :: list_core_reverse (mo_num) + integer, allocatable :: list_act (dim_list_act_orb) + integer, allocatable :: list_act_reverse (mo_num) + integer(bit_kind), allocatable :: core_bitmask (N_int,2) + integer(bit_kind), allocatable :: inact_bitmask (N_int,2) + integer(bit_kind), allocatable :: act_bitmask (N_int,2) + integer(bit_kind), allocatable :: virt_bitmask (N_int,2) + integer(bit_kind), allocatable :: del_bitmask (N_int,2) + + + inact_bitmask : Bitmask of the inactive orbitals which are supposed to be doubly excited + in post CAS methods + n_inact_orb : Number of inactive orbitals + virt_bitmask : Bitmaks of vritual orbitals which are supposed to be recieve electrons + in post CAS methods + n_virt_orb : Number of virtual orbitals + list_inact : List of the inactive orbitals which are supposed to be doubly excited + in post CAS methods + list_virt : List of vritual orbitals which are supposed to be recieve electrons + in post CAS methods + list_inact_reverse : reverse list of inactive orbitals + list_inact_reverse(i) = 0 ::> not an inactive + list_inact_reverse(i) = k ::> IS the kth inactive + list_virt_reverse : reverse list of virtual orbitals + list_virt_reverse(i) = 0 ::> not an virtual + list_virt_reverse(i) = k ::> IS the kth virtual + list_act(i) = index of the ith active orbital + + list_act_reverse : reverse list of active orbitals + list_act_reverse(i) = 0 ::> not an active + list_act_reverse(i) = k ::> IS the kth active orbital + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`dim_list_core_orb` + * :c:data:`mo_class` + * :c:data:`mo_num` + * :c:data:`n_core_orb` + * :c:data:`n_int` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`core_energy` + * :c:data:`core_energy_erf` + * :c:data:`core_fock_operator` + * :c:data:`core_fock_operator_erf` + * :c:data:`eigenvectors_fock_matrix_mo` + * :c:data:`fock_matrix_mo` + * :c:data:`inact_virt_bitmask` + * :c:data:`list_core_inact_act` + * :c:data:`mo_two_e_integrals_in_map` + * :c:data:`mo_two_e_integrals_vv_from_ao` + * :c:data:`reunion_of_bitmask` + * :c:data:`reunion_of_cas_inact_bitmask` + * :c:data:`reunion_of_core_inact_bitmask` + * :c:data:`virt_bitmask_4` + + +.. c:var:: cas_bitmask + + + File : :file:`bitmask/bitmasks.irp.f` + + .. code:: fortran + + integer(bit_kind), allocatable :: cas_bitmask (N_int,2,N_cas_bitmask) + + + Bitmasks for CAS reference determinants. (N_int, alpha/beta, CAS reference) + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ezfio_filename` + * :c:data:`full_ijkl_bitmask` + * :c:data:`generators_bitmask_restart` + * :c:data:`hf_bitmask` + * :c:data:`mpi_master` + * :c:data:`n_cas_bitmask` + * :c:data:`n_generators_bitmask` + * :c:data:`n_int` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`closed_shell_ref_bitmask` + * :c:data:`psi_cas` + * :c:data:`reunion_of_bitmask` + * :c:data:`reunion_of_cas_inact_bitmask` + * :c:data:`reunion_of_core_inact_act_bitmask` + + +.. c:var:: closed_shell_ref_bitmask + + + File : :file:`bitmask/bitmasks.irp.f` + + .. code:: fortran + + integer(bit_kind), allocatable :: closed_shell_ref_bitmask (N_int,2) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`cas_bitmask` + * :c:data:`n_int` + * :c:data:`ref_bitmask` + + + +.. c:var:: core_bitmask + + + File : :file:`bitmask/core_inact_act_virt.irp.f` + + .. code:: fortran + + integer, allocatable :: list_inact (dim_list_inact_orb) + integer, allocatable :: list_virt (dim_list_virt_orb) + integer, allocatable :: list_inact_reverse (mo_num) + integer, allocatable :: list_virt_reverse (mo_num) + integer, allocatable :: list_del_reverse (mo_num) + integer, allocatable :: list_del (mo_num) + integer, allocatable :: list_core (dim_list_core_orb) + integer, allocatable :: list_core_reverse (mo_num) + integer, allocatable :: list_act (dim_list_act_orb) + integer, allocatable :: list_act_reverse (mo_num) + integer(bit_kind), allocatable :: core_bitmask (N_int,2) + integer(bit_kind), allocatable :: inact_bitmask (N_int,2) + integer(bit_kind), allocatable :: act_bitmask (N_int,2) + integer(bit_kind), allocatable :: virt_bitmask (N_int,2) + integer(bit_kind), allocatable :: del_bitmask (N_int,2) + + + inact_bitmask : Bitmask of the inactive orbitals which are supposed to be doubly excited + in post CAS methods + n_inact_orb : Number of inactive orbitals + virt_bitmask : Bitmaks of vritual orbitals which are supposed to be recieve electrons + in post CAS methods + n_virt_orb : Number of virtual orbitals + list_inact : List of the inactive orbitals which are supposed to be doubly excited + in post CAS methods + list_virt : List of vritual orbitals which are supposed to be recieve electrons + in post CAS methods + list_inact_reverse : reverse list of inactive orbitals + list_inact_reverse(i) = 0 ::> not an inactive + list_inact_reverse(i) = k ::> IS the kth inactive + list_virt_reverse : reverse list of virtual orbitals + list_virt_reverse(i) = 0 ::> not an virtual + list_virt_reverse(i) = k ::> IS the kth virtual + list_act(i) = index of the ith active orbital + + list_act_reverse : reverse list of active orbitals + list_act_reverse(i) = 0 ::> not an active + list_act_reverse(i) = k ::> IS the kth active orbital + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`dim_list_core_orb` + * :c:data:`mo_class` + * :c:data:`mo_num` + * :c:data:`n_core_orb` + * :c:data:`n_int` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`core_energy` + * :c:data:`core_energy_erf` + * :c:data:`core_fock_operator` + * :c:data:`core_fock_operator_erf` + * :c:data:`eigenvectors_fock_matrix_mo` + * :c:data:`fock_matrix_mo` + * :c:data:`inact_virt_bitmask` + * :c:data:`list_core_inact_act` + * :c:data:`mo_two_e_integrals_in_map` + * :c:data:`mo_two_e_integrals_vv_from_ao` + * :c:data:`reunion_of_bitmask` + * :c:data:`reunion_of_cas_inact_bitmask` + * :c:data:`reunion_of_core_inact_bitmask` + * :c:data:`virt_bitmask_4` + + +.. c:var:: core_inact_act_bitmask_4 + + + File : :file:`bitmask/bitmasks.irp.f` + + .. code:: fortran + + integer(bit_kind), allocatable :: core_inact_act_bitmask_4 (N_int,4) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_int` + * :c:data:`reunion_of_core_inact_act_bitmask` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_two_e_integrals_in_map` + + +.. c:var:: core_inact_virt_bitmask + + + File : :file:`bitmask/bitmasks.irp.f` + + .. code:: fortran + + integer(bit_kind), allocatable :: inact_virt_bitmask (N_int,2) + integer(bit_kind), allocatable :: core_inact_virt_bitmask (N_int,2) + + + Reunion of the inactive and virtual bitmasks + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`list_inact` + * :c:data:`n_int` + + + +.. c:var:: del_bitmask + + + File : :file:`bitmask/core_inact_act_virt.irp.f` + + .. code:: fortran + + integer, allocatable :: list_inact (dim_list_inact_orb) + integer, allocatable :: list_virt (dim_list_virt_orb) + integer, allocatable :: list_inact_reverse (mo_num) + integer, allocatable :: list_virt_reverse (mo_num) + integer, allocatable :: list_del_reverse (mo_num) + integer, allocatable :: list_del (mo_num) + integer, allocatable :: list_core (dim_list_core_orb) + integer, allocatable :: list_core_reverse (mo_num) + integer, allocatable :: list_act (dim_list_act_orb) + integer, allocatable :: list_act_reverse (mo_num) + integer(bit_kind), allocatable :: core_bitmask (N_int,2) + integer(bit_kind), allocatable :: inact_bitmask (N_int,2) + integer(bit_kind), allocatable :: act_bitmask (N_int,2) + integer(bit_kind), allocatable :: virt_bitmask (N_int,2) + integer(bit_kind), allocatable :: del_bitmask (N_int,2) + + + inact_bitmask : Bitmask of the inactive orbitals which are supposed to be doubly excited + in post CAS methods + n_inact_orb : Number of inactive orbitals + virt_bitmask : Bitmaks of vritual orbitals which are supposed to be recieve electrons + in post CAS methods + n_virt_orb : Number of virtual orbitals + list_inact : List of the inactive orbitals which are supposed to be doubly excited + in post CAS methods + list_virt : List of vritual orbitals which are supposed to be recieve electrons + in post CAS methods + list_inact_reverse : reverse list of inactive orbitals + list_inact_reverse(i) = 0 ::> not an inactive + list_inact_reverse(i) = k ::> IS the kth inactive + list_virt_reverse : reverse list of virtual orbitals + list_virt_reverse(i) = 0 ::> not an virtual + list_virt_reverse(i) = k ::> IS the kth virtual + list_act(i) = index of the ith active orbital + + list_act_reverse : reverse list of active orbitals + list_act_reverse(i) = 0 ::> not an active + list_act_reverse(i) = k ::> IS the kth active orbital + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`dim_list_core_orb` + * :c:data:`mo_class` + * :c:data:`mo_num` + * :c:data:`n_core_orb` + * :c:data:`n_int` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`core_energy` + * :c:data:`core_energy_erf` + * :c:data:`core_fock_operator` + * :c:data:`core_fock_operator_erf` + * :c:data:`eigenvectors_fock_matrix_mo` + * :c:data:`fock_matrix_mo` + * :c:data:`inact_virt_bitmask` + * :c:data:`list_core_inact_act` + * :c:data:`mo_two_e_integrals_in_map` + * :c:data:`mo_two_e_integrals_vv_from_ao` + * :c:data:`reunion_of_bitmask` + * :c:data:`reunion_of_cas_inact_bitmask` + * :c:data:`reunion_of_core_inact_bitmask` + * :c:data:`virt_bitmask_4` + + +.. c:var:: dim_list_act_orb + + + File : :file:`bitmask/core_inact_act_virt.irp.f` + + .. code:: fortran + + integer :: dim_list_core_orb + integer :: dim_list_inact_orb + integer :: dim_list_virt_orb + integer :: dim_list_act_orb + integer :: dim_list_del_orb + + + dimensions for the allocation of list_inact, list_virt, list_core and list_act + it is at least 1 + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_core_orb` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`list_inact` + + +.. c:var:: dim_list_core_orb + + + File : :file:`bitmask/core_inact_act_virt.irp.f` + + .. code:: fortran + + integer :: dim_list_core_orb + integer :: dim_list_inact_orb + integer :: dim_list_virt_orb + integer :: dim_list_act_orb + integer :: dim_list_del_orb + + + dimensions for the allocation of list_inact, list_virt, list_core and list_act + it is at least 1 + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_core_orb` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`list_inact` + + +.. c:var:: dim_list_del_orb + + + File : :file:`bitmask/core_inact_act_virt.irp.f` + + .. code:: fortran + + integer :: dim_list_core_orb + integer :: dim_list_inact_orb + integer :: dim_list_virt_orb + integer :: dim_list_act_orb + integer :: dim_list_del_orb + + + dimensions for the allocation of list_inact, list_virt, list_core and list_act + it is at least 1 + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_core_orb` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`list_inact` + + +.. c:var:: dim_list_inact_orb + + + File : :file:`bitmask/core_inact_act_virt.irp.f` + + .. code:: fortran + + integer :: dim_list_core_orb + integer :: dim_list_inact_orb + integer :: dim_list_virt_orb + integer :: dim_list_act_orb + integer :: dim_list_del_orb + + + dimensions for the allocation of list_inact, list_virt, list_core and list_act + it is at least 1 + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_core_orb` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`list_inact` + + +.. c:var:: dim_list_virt_orb + + + File : :file:`bitmask/core_inact_act_virt.irp.f` + + .. code:: fortran + + integer :: dim_list_core_orb + integer :: dim_list_inact_orb + integer :: dim_list_virt_orb + integer :: dim_list_act_orb + integer :: dim_list_del_orb + + + dimensions for the allocation of list_inact, list_virt, list_core and list_act + it is at least 1 + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_core_orb` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`list_inact` + + +.. c:var:: full_ijkl_bitmask + + + File : :file:`bitmask/bitmasks.irp.f` + + .. code:: fortran + + integer(bit_kind), allocatable :: full_ijkl_bitmask (N_int) + + + Bitmask to include all possible MOs + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_class` + * :c:data:`mo_num` + * :c:data:`n_int` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`cas_bitmask` + * :c:data:`fock_operator_closed_shell_ref_bitmask` + * :c:data:`fock_wee_closed_shell` + * :c:data:`full_ijkl_bitmask_4` + * :c:data:`generators_bitmask` + * :c:data:`generators_bitmask_restart` + + +.. c:var:: full_ijkl_bitmask_4 + + + File : :file:`bitmask/bitmasks.irp.f` + + .. code:: fortran + + integer(bit_kind), allocatable :: full_ijkl_bitmask_4 (N_int,4) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`full_ijkl_bitmask` + * :c:data:`n_int` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_two_e_integrals_erf_in_map` + * :c:data:`mo_two_e_integrals_in_map` + + +.. c:var:: generators_bitmask + + + File : :file:`bitmask/bitmasks.irp.f` + + .. code:: fortran + + integer(bit_kind), allocatable :: generators_bitmask (N_int,2,6,N_generators_bitmask) + + + Bitmasks for generator determinants. + (N_int, alpha/beta, hole/particle, generator). + + 3rd index is : + + * 1 : hole for single exc + + * 2 : particle for single exc + + * 3 : hole for 1st exc of double + + * 4 : particle for 1st exc of double + + * 5 : hole for 2nd exc of double + + * 6 : particle for 2nd exc of double + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ezfio_filename` + * :c:data:`full_ijkl_bitmask` + * :c:data:`mpi_master` + * :c:data:`n_generators_bitmask` + * :c:data:`n_int` + + + +.. c:var:: generators_bitmask_restart + + + File : :file:`bitmask/bitmasks.irp.f` + + .. code:: fortran + + integer(bit_kind), allocatable :: generators_bitmask_restart (N_int,2,6,N_generators_bitmask_restart) + + + Bitmasks for generator determinants. + (N_int, alpha/beta, hole/particle, generator). + + 3rd index is : + + * 1 : hole for single exc + + * 2 : particle for single exc + + * 3 : hole for 1st exc of double + + * 4 : particle for 1st exc of double + + * 5 : hole for 2nd exc of double + + * 6 : particle for 2nd exc of double + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ezfio_filename` + * :c:data:`full_ijkl_bitmask` + * :c:data:`mpi_master` + * :c:data:`n_generators_bitmask` + * :c:data:`n_generators_bitmask_restart` + * :c:data:`n_int` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`cas_bitmask` + + +.. c:var:: hf_bitmask + + + File : :file:`bitmask/bitmasks.irp.f` + + .. code:: fortran + + integer(bit_kind), allocatable :: hf_bitmask (N_int,2) + + + Hartree Fock bit mask + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`elec_alpha_num` + * :c:data:`elec_beta_num` + * :c:data:`n_int` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`cas_bitmask` + * :c:data:`degree_max_generators` + * :c:data:`double_exc_bitmask` + * :c:data:`max_degree_exc` + * :c:data:`psi_cas` + * :c:data:`psi_det` + * :c:data:`ref_bitmask` + * :c:data:`single_exc_bitmask` + * :c:data:`unpaired_alpha_electrons` + + +.. c:var:: i_bitmask_gen + + + File : :file:`bitmask/bitmasks.irp.f` + + .. code:: fortran + + integer :: i_bitmask_gen + + + Current bitmask for the generators + + + +.. c:var:: inact_bitmask + + + File : :file:`bitmask/core_inact_act_virt.irp.f` + + .. code:: fortran + + integer, allocatable :: list_inact (dim_list_inact_orb) + integer, allocatable :: list_virt (dim_list_virt_orb) + integer, allocatable :: list_inact_reverse (mo_num) + integer, allocatable :: list_virt_reverse (mo_num) + integer, allocatable :: list_del_reverse (mo_num) + integer, allocatable :: list_del (mo_num) + integer, allocatable :: list_core (dim_list_core_orb) + integer, allocatable :: list_core_reverse (mo_num) + integer, allocatable :: list_act (dim_list_act_orb) + integer, allocatable :: list_act_reverse (mo_num) + integer(bit_kind), allocatable :: core_bitmask (N_int,2) + integer(bit_kind), allocatable :: inact_bitmask (N_int,2) + integer(bit_kind), allocatable :: act_bitmask (N_int,2) + integer(bit_kind), allocatable :: virt_bitmask (N_int,2) + integer(bit_kind), allocatable :: del_bitmask (N_int,2) + + + inact_bitmask : Bitmask of the inactive orbitals which are supposed to be doubly excited + in post CAS methods + n_inact_orb : Number of inactive orbitals + virt_bitmask : Bitmaks of vritual orbitals which are supposed to be recieve electrons + in post CAS methods + n_virt_orb : Number of virtual orbitals + list_inact : List of the inactive orbitals which are supposed to be doubly excited + in post CAS methods + list_virt : List of vritual orbitals which are supposed to be recieve electrons + in post CAS methods + list_inact_reverse : reverse list of inactive orbitals + list_inact_reverse(i) = 0 ::> not an inactive + list_inact_reverse(i) = k ::> IS the kth inactive + list_virt_reverse : reverse list of virtual orbitals + list_virt_reverse(i) = 0 ::> not an virtual + list_virt_reverse(i) = k ::> IS the kth virtual + list_act(i) = index of the ith active orbital + + list_act_reverse : reverse list of active orbitals + list_act_reverse(i) = 0 ::> not an active + list_act_reverse(i) = k ::> IS the kth active orbital + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`dim_list_core_orb` + * :c:data:`mo_class` + * :c:data:`mo_num` + * :c:data:`n_core_orb` + * :c:data:`n_int` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`core_energy` + * :c:data:`core_energy_erf` + * :c:data:`core_fock_operator` + * :c:data:`core_fock_operator_erf` + * :c:data:`eigenvectors_fock_matrix_mo` + * :c:data:`fock_matrix_mo` + * :c:data:`inact_virt_bitmask` + * :c:data:`list_core_inact_act` + * :c:data:`mo_two_e_integrals_in_map` + * :c:data:`mo_two_e_integrals_vv_from_ao` + * :c:data:`reunion_of_bitmask` + * :c:data:`reunion_of_cas_inact_bitmask` + * :c:data:`reunion_of_core_inact_bitmask` + * :c:data:`virt_bitmask_4` + + +.. c:var:: inact_virt_bitmask + + + File : :file:`bitmask/bitmasks.irp.f` + + .. code:: fortran + + integer(bit_kind), allocatable :: inact_virt_bitmask (N_int,2) + integer(bit_kind), allocatable :: core_inact_virt_bitmask (N_int,2) + + + Reunion of the inactive and virtual bitmasks + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`list_inact` + * :c:data:`n_int` + + + +.. c:var:: index_holes_bitmask + + + File : :file:`bitmask/modify_bitmasks.irp.f` + + .. code:: fortran + + integer, allocatable :: index_holes_bitmask (3) + + + Index of the holes in the generators_bitmasks + + + +.. c:var:: index_particl_bitmask + + + File : :file:`bitmask/modify_bitmasks.irp.f` + + .. code:: fortran + + integer, allocatable :: index_particl_bitmask (3) + + + Index of the holes in the generators_bitmasks + + + +.. c:var:: list_act + + + File : :file:`bitmask/core_inact_act_virt.irp.f` + + .. code:: fortran + + integer, allocatable :: list_inact (dim_list_inact_orb) + integer, allocatable :: list_virt (dim_list_virt_orb) + integer, allocatable :: list_inact_reverse (mo_num) + integer, allocatable :: list_virt_reverse (mo_num) + integer, allocatable :: list_del_reverse (mo_num) + integer, allocatable :: list_del (mo_num) + integer, allocatable :: list_core (dim_list_core_orb) + integer, allocatable :: list_core_reverse (mo_num) + integer, allocatable :: list_act (dim_list_act_orb) + integer, allocatable :: list_act_reverse (mo_num) + integer(bit_kind), allocatable :: core_bitmask (N_int,2) + integer(bit_kind), allocatable :: inact_bitmask (N_int,2) + integer(bit_kind), allocatable :: act_bitmask (N_int,2) + integer(bit_kind), allocatable :: virt_bitmask (N_int,2) + integer(bit_kind), allocatable :: del_bitmask (N_int,2) + + + inact_bitmask : Bitmask of the inactive orbitals which are supposed to be doubly excited + in post CAS methods + n_inact_orb : Number of inactive orbitals + virt_bitmask : Bitmaks of vritual orbitals which are supposed to be recieve electrons + in post CAS methods + n_virt_orb : Number of virtual orbitals + list_inact : List of the inactive orbitals which are supposed to be doubly excited + in post CAS methods + list_virt : List of vritual orbitals which are supposed to be recieve electrons + in post CAS methods + list_inact_reverse : reverse list of inactive orbitals + list_inact_reverse(i) = 0 ::> not an inactive + list_inact_reverse(i) = k ::> IS the kth inactive + list_virt_reverse : reverse list of virtual orbitals + list_virt_reverse(i) = 0 ::> not an virtual + list_virt_reverse(i) = k ::> IS the kth virtual + list_act(i) = index of the ith active orbital + + list_act_reverse : reverse list of active orbitals + list_act_reverse(i) = 0 ::> not an active + list_act_reverse(i) = k ::> IS the kth active orbital + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`dim_list_core_orb` + * :c:data:`mo_class` + * :c:data:`mo_num` + * :c:data:`n_core_orb` + * :c:data:`n_int` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`core_energy` + * :c:data:`core_energy_erf` + * :c:data:`core_fock_operator` + * :c:data:`core_fock_operator_erf` + * :c:data:`eigenvectors_fock_matrix_mo` + * :c:data:`fock_matrix_mo` + * :c:data:`inact_virt_bitmask` + * :c:data:`list_core_inact_act` + * :c:data:`mo_two_e_integrals_in_map` + * :c:data:`mo_two_e_integrals_vv_from_ao` + * :c:data:`reunion_of_bitmask` + * :c:data:`reunion_of_cas_inact_bitmask` + * :c:data:`reunion_of_core_inact_bitmask` + * :c:data:`virt_bitmask_4` + + +.. c:var:: list_act_reverse + + + File : :file:`bitmask/core_inact_act_virt.irp.f` + + .. code:: fortran + + integer, allocatable :: list_inact (dim_list_inact_orb) + integer, allocatable :: list_virt (dim_list_virt_orb) + integer, allocatable :: list_inact_reverse (mo_num) + integer, allocatable :: list_virt_reverse (mo_num) + integer, allocatable :: list_del_reverse (mo_num) + integer, allocatable :: list_del (mo_num) + integer, allocatable :: list_core (dim_list_core_orb) + integer, allocatable :: list_core_reverse (mo_num) + integer, allocatable :: list_act (dim_list_act_orb) + integer, allocatable :: list_act_reverse (mo_num) + integer(bit_kind), allocatable :: core_bitmask (N_int,2) + integer(bit_kind), allocatable :: inact_bitmask (N_int,2) + integer(bit_kind), allocatable :: act_bitmask (N_int,2) + integer(bit_kind), allocatable :: virt_bitmask (N_int,2) + integer(bit_kind), allocatable :: del_bitmask (N_int,2) + + + inact_bitmask : Bitmask of the inactive orbitals which are supposed to be doubly excited + in post CAS methods + n_inact_orb : Number of inactive orbitals + virt_bitmask : Bitmaks of vritual orbitals which are supposed to be recieve electrons + in post CAS methods + n_virt_orb : Number of virtual orbitals + list_inact : List of the inactive orbitals which are supposed to be doubly excited + in post CAS methods + list_virt : List of vritual orbitals which are supposed to be recieve electrons + in post CAS methods + list_inact_reverse : reverse list of inactive orbitals + list_inact_reverse(i) = 0 ::> not an inactive + list_inact_reverse(i) = k ::> IS the kth inactive + list_virt_reverse : reverse list of virtual orbitals + list_virt_reverse(i) = 0 ::> not an virtual + list_virt_reverse(i) = k ::> IS the kth virtual + list_act(i) = index of the ith active orbital + + list_act_reverse : reverse list of active orbitals + list_act_reverse(i) = 0 ::> not an active + list_act_reverse(i) = k ::> IS the kth active orbital + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`dim_list_core_orb` + * :c:data:`mo_class` + * :c:data:`mo_num` + * :c:data:`n_core_orb` + * :c:data:`n_int` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`core_energy` + * :c:data:`core_energy_erf` + * :c:data:`core_fock_operator` + * :c:data:`core_fock_operator_erf` + * :c:data:`eigenvectors_fock_matrix_mo` + * :c:data:`fock_matrix_mo` + * :c:data:`inact_virt_bitmask` + * :c:data:`list_core_inact_act` + * :c:data:`mo_two_e_integrals_in_map` + * :c:data:`mo_two_e_integrals_vv_from_ao` + * :c:data:`reunion_of_bitmask` + * :c:data:`reunion_of_cas_inact_bitmask` + * :c:data:`reunion_of_core_inact_bitmask` + * :c:data:`virt_bitmask_4` + + +.. c:var:: list_core + + + File : :file:`bitmask/core_inact_act_virt.irp.f` + + .. code:: fortran + + integer, allocatable :: list_inact (dim_list_inact_orb) + integer, allocatable :: list_virt (dim_list_virt_orb) + integer, allocatable :: list_inact_reverse (mo_num) + integer, allocatable :: list_virt_reverse (mo_num) + integer, allocatable :: list_del_reverse (mo_num) + integer, allocatable :: list_del (mo_num) + integer, allocatable :: list_core (dim_list_core_orb) + integer, allocatable :: list_core_reverse (mo_num) + integer, allocatable :: list_act (dim_list_act_orb) + integer, allocatable :: list_act_reverse (mo_num) + integer(bit_kind), allocatable :: core_bitmask (N_int,2) + integer(bit_kind), allocatable :: inact_bitmask (N_int,2) + integer(bit_kind), allocatable :: act_bitmask (N_int,2) + integer(bit_kind), allocatable :: virt_bitmask (N_int,2) + integer(bit_kind), allocatable :: del_bitmask (N_int,2) + + + inact_bitmask : Bitmask of the inactive orbitals which are supposed to be doubly excited + in post CAS methods + n_inact_orb : Number of inactive orbitals + virt_bitmask : Bitmaks of vritual orbitals which are supposed to be recieve electrons + in post CAS methods + n_virt_orb : Number of virtual orbitals + list_inact : List of the inactive orbitals which are supposed to be doubly excited + in post CAS methods + list_virt : List of vritual orbitals which are supposed to be recieve electrons + in post CAS methods + list_inact_reverse : reverse list of inactive orbitals + list_inact_reverse(i) = 0 ::> not an inactive + list_inact_reverse(i) = k ::> IS the kth inactive + list_virt_reverse : reverse list of virtual orbitals + list_virt_reverse(i) = 0 ::> not an virtual + list_virt_reverse(i) = k ::> IS the kth virtual + list_act(i) = index of the ith active orbital + + list_act_reverse : reverse list of active orbitals + list_act_reverse(i) = 0 ::> not an active + list_act_reverse(i) = k ::> IS the kth active orbital + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`dim_list_core_orb` + * :c:data:`mo_class` + * :c:data:`mo_num` + * :c:data:`n_core_orb` + * :c:data:`n_int` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`core_energy` + * :c:data:`core_energy_erf` + * :c:data:`core_fock_operator` + * :c:data:`core_fock_operator_erf` + * :c:data:`eigenvectors_fock_matrix_mo` + * :c:data:`fock_matrix_mo` + * :c:data:`inact_virt_bitmask` + * :c:data:`list_core_inact_act` + * :c:data:`mo_two_e_integrals_in_map` + * :c:data:`mo_two_e_integrals_vv_from_ao` + * :c:data:`reunion_of_bitmask` + * :c:data:`reunion_of_cas_inact_bitmask` + * :c:data:`reunion_of_core_inact_bitmask` + * :c:data:`virt_bitmask_4` + + +.. c:var:: list_core_inact_act + + + File : :file:`bitmask/bitmasks.irp.f` + + .. code:: fortran + + integer, allocatable :: list_core_inact_act (n_core_inact_act_orb) + integer, allocatable :: list_core_inact_act_reverse (mo_num) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`list_inact` + * :c:data:`mo_num` + * :c:data:`n_int` + * :c:data:`reunion_of_core_inact_act_bitmask` + + + +.. c:var:: list_core_inact_act_reverse + + + File : :file:`bitmask/bitmasks.irp.f` + + .. code:: fortran + + integer, allocatable :: list_core_inact_act (n_core_inact_act_orb) + integer, allocatable :: list_core_inact_act_reverse (mo_num) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`list_inact` + * :c:data:`mo_num` + * :c:data:`n_int` + * :c:data:`reunion_of_core_inact_act_bitmask` + + + +.. c:var:: list_core_reverse + + + File : :file:`bitmask/core_inact_act_virt.irp.f` + + .. code:: fortran + + integer, allocatable :: list_inact (dim_list_inact_orb) + integer, allocatable :: list_virt (dim_list_virt_orb) + integer, allocatable :: list_inact_reverse (mo_num) + integer, allocatable :: list_virt_reverse (mo_num) + integer, allocatable :: list_del_reverse (mo_num) + integer, allocatable :: list_del (mo_num) + integer, allocatable :: list_core (dim_list_core_orb) + integer, allocatable :: list_core_reverse (mo_num) + integer, allocatable :: list_act (dim_list_act_orb) + integer, allocatable :: list_act_reverse (mo_num) + integer(bit_kind), allocatable :: core_bitmask (N_int,2) + integer(bit_kind), allocatable :: inact_bitmask (N_int,2) + integer(bit_kind), allocatable :: act_bitmask (N_int,2) + integer(bit_kind), allocatable :: virt_bitmask (N_int,2) + integer(bit_kind), allocatable :: del_bitmask (N_int,2) + + + inact_bitmask : Bitmask of the inactive orbitals which are supposed to be doubly excited + in post CAS methods + n_inact_orb : Number of inactive orbitals + virt_bitmask : Bitmaks of vritual orbitals which are supposed to be recieve electrons + in post CAS methods + n_virt_orb : Number of virtual orbitals + list_inact : List of the inactive orbitals which are supposed to be doubly excited + in post CAS methods + list_virt : List of vritual orbitals which are supposed to be recieve electrons + in post CAS methods + list_inact_reverse : reverse list of inactive orbitals + list_inact_reverse(i) = 0 ::> not an inactive + list_inact_reverse(i) = k ::> IS the kth inactive + list_virt_reverse : reverse list of virtual orbitals + list_virt_reverse(i) = 0 ::> not an virtual + list_virt_reverse(i) = k ::> IS the kth virtual + list_act(i) = index of the ith active orbital + + list_act_reverse : reverse list of active orbitals + list_act_reverse(i) = 0 ::> not an active + list_act_reverse(i) = k ::> IS the kth active orbital + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`dim_list_core_orb` + * :c:data:`mo_class` + * :c:data:`mo_num` + * :c:data:`n_core_orb` + * :c:data:`n_int` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`core_energy` + * :c:data:`core_energy_erf` + * :c:data:`core_fock_operator` + * :c:data:`core_fock_operator_erf` + * :c:data:`eigenvectors_fock_matrix_mo` + * :c:data:`fock_matrix_mo` + * :c:data:`inact_virt_bitmask` + * :c:data:`list_core_inact_act` + * :c:data:`mo_two_e_integrals_in_map` + * :c:data:`mo_two_e_integrals_vv_from_ao` + * :c:data:`reunion_of_bitmask` + * :c:data:`reunion_of_cas_inact_bitmask` + * :c:data:`reunion_of_core_inact_bitmask` + * :c:data:`virt_bitmask_4` + + +.. c:var:: list_del + + + File : :file:`bitmask/core_inact_act_virt.irp.f` + + .. code:: fortran + + integer, allocatable :: list_inact (dim_list_inact_orb) + integer, allocatable :: list_virt (dim_list_virt_orb) + integer, allocatable :: list_inact_reverse (mo_num) + integer, allocatable :: list_virt_reverse (mo_num) + integer, allocatable :: list_del_reverse (mo_num) + integer, allocatable :: list_del (mo_num) + integer, allocatable :: list_core (dim_list_core_orb) + integer, allocatable :: list_core_reverse (mo_num) + integer, allocatable :: list_act (dim_list_act_orb) + integer, allocatable :: list_act_reverse (mo_num) + integer(bit_kind), allocatable :: core_bitmask (N_int,2) + integer(bit_kind), allocatable :: inact_bitmask (N_int,2) + integer(bit_kind), allocatable :: act_bitmask (N_int,2) + integer(bit_kind), allocatable :: virt_bitmask (N_int,2) + integer(bit_kind), allocatable :: del_bitmask (N_int,2) + + + inact_bitmask : Bitmask of the inactive orbitals which are supposed to be doubly excited + in post CAS methods + n_inact_orb : Number of inactive orbitals + virt_bitmask : Bitmaks of vritual orbitals which are supposed to be recieve electrons + in post CAS methods + n_virt_orb : Number of virtual orbitals + list_inact : List of the inactive orbitals which are supposed to be doubly excited + in post CAS methods + list_virt : List of vritual orbitals which are supposed to be recieve electrons + in post CAS methods + list_inact_reverse : reverse list of inactive orbitals + list_inact_reverse(i) = 0 ::> not an inactive + list_inact_reverse(i) = k ::> IS the kth inactive + list_virt_reverse : reverse list of virtual orbitals + list_virt_reverse(i) = 0 ::> not an virtual + list_virt_reverse(i) = k ::> IS the kth virtual + list_act(i) = index of the ith active orbital + + list_act_reverse : reverse list of active orbitals + list_act_reverse(i) = 0 ::> not an active + list_act_reverse(i) = k ::> IS the kth active orbital + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`dim_list_core_orb` + * :c:data:`mo_class` + * :c:data:`mo_num` + * :c:data:`n_core_orb` + * :c:data:`n_int` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`core_energy` + * :c:data:`core_energy_erf` + * :c:data:`core_fock_operator` + * :c:data:`core_fock_operator_erf` + * :c:data:`eigenvectors_fock_matrix_mo` + * :c:data:`fock_matrix_mo` + * :c:data:`inact_virt_bitmask` + * :c:data:`list_core_inact_act` + * :c:data:`mo_two_e_integrals_in_map` + * :c:data:`mo_two_e_integrals_vv_from_ao` + * :c:data:`reunion_of_bitmask` + * :c:data:`reunion_of_cas_inact_bitmask` + * :c:data:`reunion_of_core_inact_bitmask` + * :c:data:`virt_bitmask_4` + + +.. c:var:: list_del_reverse + + + File : :file:`bitmask/core_inact_act_virt.irp.f` + + .. code:: fortran + + integer, allocatable :: list_inact (dim_list_inact_orb) + integer, allocatable :: list_virt (dim_list_virt_orb) + integer, allocatable :: list_inact_reverse (mo_num) + integer, allocatable :: list_virt_reverse (mo_num) + integer, allocatable :: list_del_reverse (mo_num) + integer, allocatable :: list_del (mo_num) + integer, allocatable :: list_core (dim_list_core_orb) + integer, allocatable :: list_core_reverse (mo_num) + integer, allocatable :: list_act (dim_list_act_orb) + integer, allocatable :: list_act_reverse (mo_num) + integer(bit_kind), allocatable :: core_bitmask (N_int,2) + integer(bit_kind), allocatable :: inact_bitmask (N_int,2) + integer(bit_kind), allocatable :: act_bitmask (N_int,2) + integer(bit_kind), allocatable :: virt_bitmask (N_int,2) + integer(bit_kind), allocatable :: del_bitmask (N_int,2) + + + inact_bitmask : Bitmask of the inactive orbitals which are supposed to be doubly excited + in post CAS methods + n_inact_orb : Number of inactive orbitals + virt_bitmask : Bitmaks of vritual orbitals which are supposed to be recieve electrons + in post CAS methods + n_virt_orb : Number of virtual orbitals + list_inact : List of the inactive orbitals which are supposed to be doubly excited + in post CAS methods + list_virt : List of vritual orbitals which are supposed to be recieve electrons + in post CAS methods + list_inact_reverse : reverse list of inactive orbitals + list_inact_reverse(i) = 0 ::> not an inactive + list_inact_reverse(i) = k ::> IS the kth inactive + list_virt_reverse : reverse list of virtual orbitals + list_virt_reverse(i) = 0 ::> not an virtual + list_virt_reverse(i) = k ::> IS the kth virtual + list_act(i) = index of the ith active orbital + + list_act_reverse : reverse list of active orbitals + list_act_reverse(i) = 0 ::> not an active + list_act_reverse(i) = k ::> IS the kth active orbital + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`dim_list_core_orb` + * :c:data:`mo_class` + * :c:data:`mo_num` + * :c:data:`n_core_orb` + * :c:data:`n_int` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`core_energy` + * :c:data:`core_energy_erf` + * :c:data:`core_fock_operator` + * :c:data:`core_fock_operator_erf` + * :c:data:`eigenvectors_fock_matrix_mo` + * :c:data:`fock_matrix_mo` + * :c:data:`inact_virt_bitmask` + * :c:data:`list_core_inact_act` + * :c:data:`mo_two_e_integrals_in_map` + * :c:data:`mo_two_e_integrals_vv_from_ao` + * :c:data:`reunion_of_bitmask` + * :c:data:`reunion_of_cas_inact_bitmask` + * :c:data:`reunion_of_core_inact_bitmask` + * :c:data:`virt_bitmask_4` + + +.. c:var:: list_inact + + + File : :file:`bitmask/core_inact_act_virt.irp.f` + + .. code:: fortran + + integer, allocatable :: list_inact (dim_list_inact_orb) + integer, allocatable :: list_virt (dim_list_virt_orb) + integer, allocatable :: list_inact_reverse (mo_num) + integer, allocatable :: list_virt_reverse (mo_num) + integer, allocatable :: list_del_reverse (mo_num) + integer, allocatable :: list_del (mo_num) + integer, allocatable :: list_core (dim_list_core_orb) + integer, allocatable :: list_core_reverse (mo_num) + integer, allocatable :: list_act (dim_list_act_orb) + integer, allocatable :: list_act_reverse (mo_num) + integer(bit_kind), allocatable :: core_bitmask (N_int,2) + integer(bit_kind), allocatable :: inact_bitmask (N_int,2) + integer(bit_kind), allocatable :: act_bitmask (N_int,2) + integer(bit_kind), allocatable :: virt_bitmask (N_int,2) + integer(bit_kind), allocatable :: del_bitmask (N_int,2) + + + inact_bitmask : Bitmask of the inactive orbitals which are supposed to be doubly excited + in post CAS methods + n_inact_orb : Number of inactive orbitals + virt_bitmask : Bitmaks of vritual orbitals which are supposed to be recieve electrons + in post CAS methods + n_virt_orb : Number of virtual orbitals + list_inact : List of the inactive orbitals which are supposed to be doubly excited + in post CAS methods + list_virt : List of vritual orbitals which are supposed to be recieve electrons + in post CAS methods + list_inact_reverse : reverse list of inactive orbitals + list_inact_reverse(i) = 0 ::> not an inactive + list_inact_reverse(i) = k ::> IS the kth inactive + list_virt_reverse : reverse list of virtual orbitals + list_virt_reverse(i) = 0 ::> not an virtual + list_virt_reverse(i) = k ::> IS the kth virtual + list_act(i) = index of the ith active orbital + + list_act_reverse : reverse list of active orbitals + list_act_reverse(i) = 0 ::> not an active + list_act_reverse(i) = k ::> IS the kth active orbital + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`dim_list_core_orb` + * :c:data:`mo_class` + * :c:data:`mo_num` + * :c:data:`n_core_orb` + * :c:data:`n_int` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`core_energy` + * :c:data:`core_energy_erf` + * :c:data:`core_fock_operator` + * :c:data:`core_fock_operator_erf` + * :c:data:`eigenvectors_fock_matrix_mo` + * :c:data:`fock_matrix_mo` + * :c:data:`inact_virt_bitmask` + * :c:data:`list_core_inact_act` + * :c:data:`mo_two_e_integrals_in_map` + * :c:data:`mo_two_e_integrals_vv_from_ao` + * :c:data:`reunion_of_bitmask` + * :c:data:`reunion_of_cas_inact_bitmask` + * :c:data:`reunion_of_core_inact_bitmask` + * :c:data:`virt_bitmask_4` + + +.. c:var:: list_inact_reverse + + + File : :file:`bitmask/core_inact_act_virt.irp.f` + + .. code:: fortran + + integer, allocatable :: list_inact (dim_list_inact_orb) + integer, allocatable :: list_virt (dim_list_virt_orb) + integer, allocatable :: list_inact_reverse (mo_num) + integer, allocatable :: list_virt_reverse (mo_num) + integer, allocatable :: list_del_reverse (mo_num) + integer, allocatable :: list_del (mo_num) + integer, allocatable :: list_core (dim_list_core_orb) + integer, allocatable :: list_core_reverse (mo_num) + integer, allocatable :: list_act (dim_list_act_orb) + integer, allocatable :: list_act_reverse (mo_num) + integer(bit_kind), allocatable :: core_bitmask (N_int,2) + integer(bit_kind), allocatable :: inact_bitmask (N_int,2) + integer(bit_kind), allocatable :: act_bitmask (N_int,2) + integer(bit_kind), allocatable :: virt_bitmask (N_int,2) + integer(bit_kind), allocatable :: del_bitmask (N_int,2) + + + inact_bitmask : Bitmask of the inactive orbitals which are supposed to be doubly excited + in post CAS methods + n_inact_orb : Number of inactive orbitals + virt_bitmask : Bitmaks of vritual orbitals which are supposed to be recieve electrons + in post CAS methods + n_virt_orb : Number of virtual orbitals + list_inact : List of the inactive orbitals which are supposed to be doubly excited + in post CAS methods + list_virt : List of vritual orbitals which are supposed to be recieve electrons + in post CAS methods + list_inact_reverse : reverse list of inactive orbitals + list_inact_reverse(i) = 0 ::> not an inactive + list_inact_reverse(i) = k ::> IS the kth inactive + list_virt_reverse : reverse list of virtual orbitals + list_virt_reverse(i) = 0 ::> not an virtual + list_virt_reverse(i) = k ::> IS the kth virtual + list_act(i) = index of the ith active orbital + + list_act_reverse : reverse list of active orbitals + list_act_reverse(i) = 0 ::> not an active + list_act_reverse(i) = k ::> IS the kth active orbital + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`dim_list_core_orb` + * :c:data:`mo_class` + * :c:data:`mo_num` + * :c:data:`n_core_orb` + * :c:data:`n_int` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`core_energy` + * :c:data:`core_energy_erf` + * :c:data:`core_fock_operator` + * :c:data:`core_fock_operator_erf` + * :c:data:`eigenvectors_fock_matrix_mo` + * :c:data:`fock_matrix_mo` + * :c:data:`inact_virt_bitmask` + * :c:data:`list_core_inact_act` + * :c:data:`mo_two_e_integrals_in_map` + * :c:data:`mo_two_e_integrals_vv_from_ao` + * :c:data:`reunion_of_bitmask` + * :c:data:`reunion_of_cas_inact_bitmask` + * :c:data:`reunion_of_core_inact_bitmask` + * :c:data:`virt_bitmask_4` + + +.. c:var:: list_virt + + + File : :file:`bitmask/core_inact_act_virt.irp.f` + + .. code:: fortran + + integer, allocatable :: list_inact (dim_list_inact_orb) + integer, allocatable :: list_virt (dim_list_virt_orb) + integer, allocatable :: list_inact_reverse (mo_num) + integer, allocatable :: list_virt_reverse (mo_num) + integer, allocatable :: list_del_reverse (mo_num) + integer, allocatable :: list_del (mo_num) + integer, allocatable :: list_core (dim_list_core_orb) + integer, allocatable :: list_core_reverse (mo_num) + integer, allocatable :: list_act (dim_list_act_orb) + integer, allocatable :: list_act_reverse (mo_num) + integer(bit_kind), allocatable :: core_bitmask (N_int,2) + integer(bit_kind), allocatable :: inact_bitmask (N_int,2) + integer(bit_kind), allocatable :: act_bitmask (N_int,2) + integer(bit_kind), allocatable :: virt_bitmask (N_int,2) + integer(bit_kind), allocatable :: del_bitmask (N_int,2) + + + inact_bitmask : Bitmask of the inactive orbitals which are supposed to be doubly excited + in post CAS methods + n_inact_orb : Number of inactive orbitals + virt_bitmask : Bitmaks of vritual orbitals which are supposed to be recieve electrons + in post CAS methods + n_virt_orb : Number of virtual orbitals + list_inact : List of the inactive orbitals which are supposed to be doubly excited + in post CAS methods + list_virt : List of vritual orbitals which are supposed to be recieve electrons + in post CAS methods + list_inact_reverse : reverse list of inactive orbitals + list_inact_reverse(i) = 0 ::> not an inactive + list_inact_reverse(i) = k ::> IS the kth inactive + list_virt_reverse : reverse list of virtual orbitals + list_virt_reverse(i) = 0 ::> not an virtual + list_virt_reverse(i) = k ::> IS the kth virtual + list_act(i) = index of the ith active orbital + + list_act_reverse : reverse list of active orbitals + list_act_reverse(i) = 0 ::> not an active + list_act_reverse(i) = k ::> IS the kth active orbital + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`dim_list_core_orb` + * :c:data:`mo_class` + * :c:data:`mo_num` + * :c:data:`n_core_orb` + * :c:data:`n_int` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`core_energy` + * :c:data:`core_energy_erf` + * :c:data:`core_fock_operator` + * :c:data:`core_fock_operator_erf` + * :c:data:`eigenvectors_fock_matrix_mo` + * :c:data:`fock_matrix_mo` + * :c:data:`inact_virt_bitmask` + * :c:data:`list_core_inact_act` + * :c:data:`mo_two_e_integrals_in_map` + * :c:data:`mo_two_e_integrals_vv_from_ao` + * :c:data:`reunion_of_bitmask` + * :c:data:`reunion_of_cas_inact_bitmask` + * :c:data:`reunion_of_core_inact_bitmask` + * :c:data:`virt_bitmask_4` + + +.. c:var:: list_virt_reverse + + + File : :file:`bitmask/core_inact_act_virt.irp.f` + + .. code:: fortran + + integer, allocatable :: list_inact (dim_list_inact_orb) + integer, allocatable :: list_virt (dim_list_virt_orb) + integer, allocatable :: list_inact_reverse (mo_num) + integer, allocatable :: list_virt_reverse (mo_num) + integer, allocatable :: list_del_reverse (mo_num) + integer, allocatable :: list_del (mo_num) + integer, allocatable :: list_core (dim_list_core_orb) + integer, allocatable :: list_core_reverse (mo_num) + integer, allocatable :: list_act (dim_list_act_orb) + integer, allocatable :: list_act_reverse (mo_num) + integer(bit_kind), allocatable :: core_bitmask (N_int,2) + integer(bit_kind), allocatable :: inact_bitmask (N_int,2) + integer(bit_kind), allocatable :: act_bitmask (N_int,2) + integer(bit_kind), allocatable :: virt_bitmask (N_int,2) + integer(bit_kind), allocatable :: del_bitmask (N_int,2) + + + inact_bitmask : Bitmask of the inactive orbitals which are supposed to be doubly excited + in post CAS methods + n_inact_orb : Number of inactive orbitals + virt_bitmask : Bitmaks of vritual orbitals which are supposed to be recieve electrons + in post CAS methods + n_virt_orb : Number of virtual orbitals + list_inact : List of the inactive orbitals which are supposed to be doubly excited + in post CAS methods + list_virt : List of vritual orbitals which are supposed to be recieve electrons + in post CAS methods + list_inact_reverse : reverse list of inactive orbitals + list_inact_reverse(i) = 0 ::> not an inactive + list_inact_reverse(i) = k ::> IS the kth inactive + list_virt_reverse : reverse list of virtual orbitals + list_virt_reverse(i) = 0 ::> not an virtual + list_virt_reverse(i) = k ::> IS the kth virtual + list_act(i) = index of the ith active orbital + + list_act_reverse : reverse list of active orbitals + list_act_reverse(i) = 0 ::> not an active + list_act_reverse(i) = k ::> IS the kth active orbital + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`dim_list_core_orb` + * :c:data:`mo_class` + * :c:data:`mo_num` + * :c:data:`n_core_orb` + * :c:data:`n_int` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`core_energy` + * :c:data:`core_energy_erf` + * :c:data:`core_fock_operator` + * :c:data:`core_fock_operator_erf` + * :c:data:`eigenvectors_fock_matrix_mo` + * :c:data:`fock_matrix_mo` + * :c:data:`inact_virt_bitmask` + * :c:data:`list_core_inact_act` + * :c:data:`mo_two_e_integrals_in_map` + * :c:data:`mo_two_e_integrals_vv_from_ao` + * :c:data:`reunion_of_bitmask` + * :c:data:`reunion_of_cas_inact_bitmask` + * :c:data:`reunion_of_core_inact_bitmask` + * :c:data:`virt_bitmask_4` + + +.. c:var:: mpi_bit_kind + + + File : :file:`bitmask/mpi.irp.f` + + .. code:: fortran + + integer :: mpi_bit_kind + + + MPI bit kind type + + + +.. c:var:: n_act_orb + + + File : :file:`bitmask/core_inact_act_virt.irp.f` + + .. code:: fortran + + integer :: n_core_orb + integer :: n_inact_orb + integer :: n_act_orb + integer :: n_virt_orb + integer :: n_del_orb + + + inact_bitmask : Bitmask of the inactive orbitals which are supposed to be doubly excited + in post CAS methods + n_inact_orb : Number of inactive orbitals + virt_bitmask : Bitmaks of vritual orbitals which are supposed to be recieve electrons + in post CAS methods + n_virt_orb : Number of virtual orbitals + list_inact : List of the inactive orbitals which are supposed to be doubly excited + in post CAS methods + list_virt : List of vritual orbitals which are supposed to be recieve electrons + in post CAS methods + list_inact_reverse : reverse list of inactive orbitals + list_inact_reverse(i) = 0 ::> not an inactive + list_inact_reverse(i) = k ::> IS the kth inactive + list_virt_reverse : reverse list of virtual orbitals + list_virt_reverse(i) = 0 ::> not an virtual + list_virt_reverse(i) = k ::> IS the kth virtual + list_act(i) = index of the ith active orbital + + list_act_reverse : reverse list of active orbitals + list_act_reverse(i) = 0 ::> not an active + list_act_reverse(i) = k ::> IS the kth active orbital + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_class` + * :c:data:`mo_num` + * :c:data:`mpi_master` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`core_energy` + * :c:data:`core_energy_erf` + * :c:data:`core_fock_operator` + * :c:data:`core_fock_operator_erf` + * :c:data:`dim_list_core_orb` + * :c:data:`eigenvectors_fock_matrix_mo` + * :c:data:`fock_matrix_mo` + * :c:data:`list_inact` + * :c:data:`mo_two_e_integrals_vv_from_ao` + * :c:data:`n_core_orb_allocate` + * :c:data:`n_inact_orb_allocate` + * :c:data:`n_virt_orb_allocate` + * :c:data:`pt2_f` + + +.. c:var:: n_cas_bitmask + + + File : :file:`bitmask/bitmasks.irp.f` + + .. code:: fortran + + integer :: n_cas_bitmask + + + Number of bitmasks for CAS + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ezfio_filename` + * :c:data:`mpi_master` + * :c:data:`n_int` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`cas_bitmask` + * :c:data:`psi_cas` + + +.. c:var:: n_core_inact_act_orb + + + File : :file:`bitmask/bitmasks.irp.f` + + .. code:: fortran + + integer(bit_kind), allocatable :: reunion_of_core_inact_act_bitmask (N_int,2) + integer :: n_core_inact_act_orb + + + Reunion of the core, inactive and active bitmasks + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`cas_bitmask` + * :c:data:`n_int` + * :c:data:`reunion_of_core_inact_bitmask` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`core_inact_act_bitmask_4` + * :c:data:`list_core_inact_act` + + +.. c:var:: n_core_inact_orb + + + File : :file:`bitmask/bitmasks.irp.f` + + .. code:: fortran + + integer :: n_core_inact_orb + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_int` + * :c:data:`reunion_of_core_inact_bitmask` + + + +.. c:var:: n_core_orb + + + File : :file:`bitmask/core_inact_act_virt.irp.f` + + .. code:: fortran + + integer :: n_core_orb + integer :: n_inact_orb + integer :: n_act_orb + integer :: n_virt_orb + integer :: n_del_orb + + + inact_bitmask : Bitmask of the inactive orbitals which are supposed to be doubly excited + in post CAS methods + n_inact_orb : Number of inactive orbitals + virt_bitmask : Bitmaks of vritual orbitals which are supposed to be recieve electrons + in post CAS methods + n_virt_orb : Number of virtual orbitals + list_inact : List of the inactive orbitals which are supposed to be doubly excited + in post CAS methods + list_virt : List of vritual orbitals which are supposed to be recieve electrons + in post CAS methods + list_inact_reverse : reverse list of inactive orbitals + list_inact_reverse(i) = 0 ::> not an inactive + list_inact_reverse(i) = k ::> IS the kth inactive + list_virt_reverse : reverse list of virtual orbitals + list_virt_reverse(i) = 0 ::> not an virtual + list_virt_reverse(i) = k ::> IS the kth virtual + list_act(i) = index of the ith active orbital + + list_act_reverse : reverse list of active orbitals + list_act_reverse(i) = 0 ::> not an active + list_act_reverse(i) = k ::> IS the kth active orbital + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_class` + * :c:data:`mo_num` + * :c:data:`mpi_master` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`core_energy` + * :c:data:`core_energy_erf` + * :c:data:`core_fock_operator` + * :c:data:`core_fock_operator_erf` + * :c:data:`dim_list_core_orb` + * :c:data:`eigenvectors_fock_matrix_mo` + * :c:data:`fock_matrix_mo` + * :c:data:`list_inact` + * :c:data:`mo_two_e_integrals_vv_from_ao` + * :c:data:`n_core_orb_allocate` + * :c:data:`n_inact_orb_allocate` + * :c:data:`n_virt_orb_allocate` + * :c:data:`pt2_f` + + +.. c:var:: n_core_orb_allocate + + + File : :file:`bitmask/bitmasks.irp.f` + + .. code:: fortran + + integer :: n_core_orb_allocate + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_core_orb` + + + +.. c:var:: n_del_orb + + + File : :file:`bitmask/core_inact_act_virt.irp.f` + + .. code:: fortran + + integer :: n_core_orb + integer :: n_inact_orb + integer :: n_act_orb + integer :: n_virt_orb + integer :: n_del_orb + + + inact_bitmask : Bitmask of the inactive orbitals which are supposed to be doubly excited + in post CAS methods + n_inact_orb : Number of inactive orbitals + virt_bitmask : Bitmaks of vritual orbitals which are supposed to be recieve electrons + in post CAS methods + n_virt_orb : Number of virtual orbitals + list_inact : List of the inactive orbitals which are supposed to be doubly excited + in post CAS methods + list_virt : List of vritual orbitals which are supposed to be recieve electrons + in post CAS methods + list_inact_reverse : reverse list of inactive orbitals + list_inact_reverse(i) = 0 ::> not an inactive + list_inact_reverse(i) = k ::> IS the kth inactive + list_virt_reverse : reverse list of virtual orbitals + list_virt_reverse(i) = 0 ::> not an virtual + list_virt_reverse(i) = k ::> IS the kth virtual + list_act(i) = index of the ith active orbital + + list_act_reverse : reverse list of active orbitals + list_act_reverse(i) = 0 ::> not an active + list_act_reverse(i) = k ::> IS the kth active orbital + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_class` + * :c:data:`mo_num` + * :c:data:`mpi_master` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`core_energy` + * :c:data:`core_energy_erf` + * :c:data:`core_fock_operator` + * :c:data:`core_fock_operator_erf` + * :c:data:`dim_list_core_orb` + * :c:data:`eigenvectors_fock_matrix_mo` + * :c:data:`fock_matrix_mo` + * :c:data:`list_inact` + * :c:data:`mo_two_e_integrals_vv_from_ao` + * :c:data:`n_core_orb_allocate` + * :c:data:`n_inact_orb_allocate` + * :c:data:`n_virt_orb_allocate` + * :c:data:`pt2_f` + + +.. c:var:: n_generators_bitmask + + + File : :file:`bitmask/bitmasks.irp.f` + + .. code:: fortran + + integer :: n_generators_bitmask + + + Number of bitmasks for generators + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ezfio_filename` + * :c:data:`mpi_master` + * :c:data:`n_int` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`cas_bitmask` + * :c:data:`generators_bitmask` + * :c:data:`generators_bitmask_restart` + + +.. c:var:: n_generators_bitmask_restart + + + File : :file:`bitmask/bitmasks.irp.f` + + .. code:: fortran + + integer :: n_generators_bitmask_restart + + + Number of bitmasks for generators + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ezfio_filename` + * :c:data:`mpi_master` + * :c:data:`n_int` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`generators_bitmask_restart` + + +.. c:var:: n_inact_orb + + + File : :file:`bitmask/core_inact_act_virt.irp.f` + + .. code:: fortran + + integer :: n_core_orb + integer :: n_inact_orb + integer :: n_act_orb + integer :: n_virt_orb + integer :: n_del_orb + + + inact_bitmask : Bitmask of the inactive orbitals which are supposed to be doubly excited + in post CAS methods + n_inact_orb : Number of inactive orbitals + virt_bitmask : Bitmaks of vritual orbitals which are supposed to be recieve electrons + in post CAS methods + n_virt_orb : Number of virtual orbitals + list_inact : List of the inactive orbitals which are supposed to be doubly excited + in post CAS methods + list_virt : List of vritual orbitals which are supposed to be recieve electrons + in post CAS methods + list_inact_reverse : reverse list of inactive orbitals + list_inact_reverse(i) = 0 ::> not an inactive + list_inact_reverse(i) = k ::> IS the kth inactive + list_virt_reverse : reverse list of virtual orbitals + list_virt_reverse(i) = 0 ::> not an virtual + list_virt_reverse(i) = k ::> IS the kth virtual + list_act(i) = index of the ith active orbital + + list_act_reverse : reverse list of active orbitals + list_act_reverse(i) = 0 ::> not an active + list_act_reverse(i) = k ::> IS the kth active orbital + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_class` + * :c:data:`mo_num` + * :c:data:`mpi_master` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`core_energy` + * :c:data:`core_energy_erf` + * :c:data:`core_fock_operator` + * :c:data:`core_fock_operator_erf` + * :c:data:`dim_list_core_orb` + * :c:data:`eigenvectors_fock_matrix_mo` + * :c:data:`fock_matrix_mo` + * :c:data:`list_inact` + * :c:data:`mo_two_e_integrals_vv_from_ao` + * :c:data:`n_core_orb_allocate` + * :c:data:`n_inact_orb_allocate` + * :c:data:`n_virt_orb_allocate` + * :c:data:`pt2_f` + + +.. c:var:: n_inact_orb_allocate + + + File : :file:`bitmask/bitmasks.irp.f` + + .. code:: fortran + + integer :: n_inact_orb_allocate + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_core_orb` + + + +.. c:var:: n_int + + + File : :file:`bitmask/bitmasks.irp.f` + + .. code:: fortran + + integer :: n_int + + + Number of 64-bit integers needed to represent determinants as binary strings + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_num` + * :c:data:`mpi_master` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`cas_bitmask` + * :c:data:`ci_electronic_energy` + * :c:data:`closed_shell_ref_bitmask` + * :c:data:`coef_hf_selector` + * :c:data:`core_inact_act_bitmask_4` + * :c:data:`degree_max_generators` + * :c:data:`det_to_occ_pattern` + * :c:data:`diagonal_h_matrix_on_psi_det` + * :c:data:`double_exc_bitmask` + * :c:data:`exc_degree_per_selectors` + * :c:data:`fock_operator_closed_shell_ref_bitmask` + * :c:data:`fock_wee_closed_shell` + * :c:data:`full_ijkl_bitmask` + * :c:data:`full_ijkl_bitmask_4` + * :c:data:`generators_bitmask` + * :c:data:`generators_bitmask_restart` + * :c:data:`h_apply_buffer_allocated` + * :c:data:`h_matrix_all_dets` + * :c:data:`h_matrix_cas` + * :c:data:`hf_bitmask` + * :c:data:`inact_virt_bitmask` + * :c:data:`list_core_inact_act` + * :c:data:`list_inact` + * :c:data:`max_degree_exc` + * :c:data:`mo_two_e_integrals_erf_in_map` + * :c:data:`mo_two_e_integrals_in_map` + * :c:data:`n_cas_bitmask` + * :c:data:`n_core_inact_orb` + * :c:data:`n_generators_bitmask` + * :c:data:`n_generators_bitmask_restart` + * :c:data:`one_e_dm_mo_alpha` + * :c:data:`psi_bilinear_matrix_values` + * :c:data:`psi_cas` + * :c:data:`psi_cas_sorted_bit` + * :c:data:`psi_det` + * :c:data:`psi_det_alpha` + * :c:data:`psi_det_alpha_unique` + * :c:data:`psi_det_beta` + * :c:data:`psi_det_beta_unique` + * :c:data:`psi_det_generators` + * :c:data:`psi_det_hii` + * :c:data:`psi_det_sorted` + * :c:data:`psi_det_sorted_bit` + * :c:data:`psi_det_sorted_gen` + * :c:data:`psi_energy` + * :c:data:`psi_energy_two_e` + * :c:data:`psi_non_cas` + * :c:data:`psi_non_cas_sorted_bit` + * :c:data:`psi_occ_pattern` + * :c:data:`psi_selectors` + * :c:data:`psi_selectors_diag_h_mat` + * :c:data:`ref_bitmask` + * :c:data:`ref_bitmask_energy` + * :c:data:`ref_closed_shell_bitmask` + * :c:data:`reunion_of_bitmask` + * :c:data:`reunion_of_cas_inact_bitmask` + * :c:data:`reunion_of_core_inact_act_bitmask` + * :c:data:`reunion_of_core_inact_bitmask` + * :c:data:`s2_matrix_all_dets` + * :c:data:`s2_values` + * :c:data:`single_exc_bitmask` + * :c:data:`singles_alpha_csc` + * :c:data:`singles_alpha_csc_idx` + * :c:data:`singles_beta_csc` + * :c:data:`singles_beta_csc_idx` + * :c:data:`unpaired_alpha_electrons` + * :c:data:`virt_bitmask_4` + + +.. c:var:: n_virt_orb + + + File : :file:`bitmask/core_inact_act_virt.irp.f` + + .. code:: fortran + + integer :: n_core_orb + integer :: n_inact_orb + integer :: n_act_orb + integer :: n_virt_orb + integer :: n_del_orb + + + inact_bitmask : Bitmask of the inactive orbitals which are supposed to be doubly excited + in post CAS methods + n_inact_orb : Number of inactive orbitals + virt_bitmask : Bitmaks of vritual orbitals which are supposed to be recieve electrons + in post CAS methods + n_virt_orb : Number of virtual orbitals + list_inact : List of the inactive orbitals which are supposed to be doubly excited + in post CAS methods + list_virt : List of vritual orbitals which are supposed to be recieve electrons + in post CAS methods + list_inact_reverse : reverse list of inactive orbitals + list_inact_reverse(i) = 0 ::> not an inactive + list_inact_reverse(i) = k ::> IS the kth inactive + list_virt_reverse : reverse list of virtual orbitals + list_virt_reverse(i) = 0 ::> not an virtual + list_virt_reverse(i) = k ::> IS the kth virtual + list_act(i) = index of the ith active orbital + + list_act_reverse : reverse list of active orbitals + list_act_reverse(i) = 0 ::> not an active + list_act_reverse(i) = k ::> IS the kth active orbital + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_class` + * :c:data:`mo_num` + * :c:data:`mpi_master` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`core_energy` + * :c:data:`core_energy_erf` + * :c:data:`core_fock_operator` + * :c:data:`core_fock_operator_erf` + * :c:data:`dim_list_core_orb` + * :c:data:`eigenvectors_fock_matrix_mo` + * :c:data:`fock_matrix_mo` + * :c:data:`list_inact` + * :c:data:`mo_two_e_integrals_vv_from_ao` + * :c:data:`n_core_orb_allocate` + * :c:data:`n_inact_orb_allocate` + * :c:data:`n_virt_orb_allocate` + * :c:data:`pt2_f` + + +.. c:var:: n_virt_orb_allocate + + + File : :file:`bitmask/bitmasks.irp.f` + + .. code:: fortran + + integer :: n_virt_orb_allocate + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_core_orb` + + + +.. c:var:: ref_bitmask + + + File : :file:`bitmask/bitmasks.irp.f` + + .. code:: fortran + + integer(bit_kind), allocatable :: ref_bitmask (N_int,2) + + + Reference bit mask, used in Slater rules, chosen as Hartree-Fock bitmask + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`hf_bitmask` + * :c:data:`n_int` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`closed_shell_ref_bitmask` + * :c:data:`coef_hf_selector` + * :c:data:`diagonal_h_matrix_on_psi_det` + * :c:data:`exc_degree_per_selectors` + * :c:data:`psi_det_hii` + * :c:data:`psi_selectors_diag_h_mat` + * :c:data:`ref_bitmask_energy` + * :c:data:`ref_closed_shell_bitmask` + + +.. c:var:: reunion_of_bitmask + + + File : :file:`bitmask/bitmasks.irp.f` + + .. code:: fortran + + integer(bit_kind), allocatable :: reunion_of_bitmask (N_int,2) + + + Reunion of the inactive, active and virtual bitmasks + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`cas_bitmask` + * :c:data:`list_inact` + * :c:data:`n_int` + + + +.. c:var:: reunion_of_cas_inact_bitmask + + + File : :file:`bitmask/bitmasks.irp.f` + + .. code:: fortran + + integer(bit_kind), allocatable :: reunion_of_cas_inact_bitmask (N_int,2) + + + Reunion of the inactive, active and virtual bitmasks + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`cas_bitmask` + * :c:data:`list_inact` + * :c:data:`n_int` + + + +.. c:var:: reunion_of_core_inact_act_bitmask + + + File : :file:`bitmask/bitmasks.irp.f` + + .. code:: fortran + + integer(bit_kind), allocatable :: reunion_of_core_inact_act_bitmask (N_int,2) + integer :: n_core_inact_act_orb + + + Reunion of the core, inactive and active bitmasks + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`cas_bitmask` + * :c:data:`n_int` + * :c:data:`reunion_of_core_inact_bitmask` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`core_inact_act_bitmask_4` + * :c:data:`list_core_inact_act` + + +.. c:var:: reunion_of_core_inact_bitmask + + + File : :file:`bitmask/bitmasks.irp.f` + + .. code:: fortran + + integer(bit_kind), allocatable :: reunion_of_core_inact_bitmask (N_int,2) + + + Reunion of the core and inactive and virtual bitmasks + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`list_inact` + * :c:data:`n_int` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`n_core_inact_orb` + * :c:data:`reunion_of_core_inact_act_bitmask` + + +.. c:var:: unpaired_alpha_electrons + + + File : :file:`bitmask/bitmasks.irp.f` + + .. code:: fortran + + integer(bit_kind), allocatable :: unpaired_alpha_electrons (N_int) + + + Bitmask reprenting the unpaired alpha electrons in the HF_bitmask + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`hf_bitmask` + * :c:data:`n_int` + + + +.. c:var:: virt_bitmask + + + File : :file:`bitmask/core_inact_act_virt.irp.f` + + .. code:: fortran + + integer, allocatable :: list_inact (dim_list_inact_orb) + integer, allocatable :: list_virt (dim_list_virt_orb) + integer, allocatable :: list_inact_reverse (mo_num) + integer, allocatable :: list_virt_reverse (mo_num) + integer, allocatable :: list_del_reverse (mo_num) + integer, allocatable :: list_del (mo_num) + integer, allocatable :: list_core (dim_list_core_orb) + integer, allocatable :: list_core_reverse (mo_num) + integer, allocatable :: list_act (dim_list_act_orb) + integer, allocatable :: list_act_reverse (mo_num) + integer(bit_kind), allocatable :: core_bitmask (N_int,2) + integer(bit_kind), allocatable :: inact_bitmask (N_int,2) + integer(bit_kind), allocatable :: act_bitmask (N_int,2) + integer(bit_kind), allocatable :: virt_bitmask (N_int,2) + integer(bit_kind), allocatable :: del_bitmask (N_int,2) + + + inact_bitmask : Bitmask of the inactive orbitals which are supposed to be doubly excited + in post CAS methods + n_inact_orb : Number of inactive orbitals + virt_bitmask : Bitmaks of vritual orbitals which are supposed to be recieve electrons + in post CAS methods + n_virt_orb : Number of virtual orbitals + list_inact : List of the inactive orbitals which are supposed to be doubly excited + in post CAS methods + list_virt : List of vritual orbitals which are supposed to be recieve electrons + in post CAS methods + list_inact_reverse : reverse list of inactive orbitals + list_inact_reverse(i) = 0 ::> not an inactive + list_inact_reverse(i) = k ::> IS the kth inactive + list_virt_reverse : reverse list of virtual orbitals + list_virt_reverse(i) = 0 ::> not an virtual + list_virt_reverse(i) = k ::> IS the kth virtual + list_act(i) = index of the ith active orbital + + list_act_reverse : reverse list of active orbitals + list_act_reverse(i) = 0 ::> not an active + list_act_reverse(i) = k ::> IS the kth active orbital + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`dim_list_core_orb` + * :c:data:`mo_class` + * :c:data:`mo_num` + * :c:data:`n_core_orb` + * :c:data:`n_int` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`core_energy` + * :c:data:`core_energy_erf` + * :c:data:`core_fock_operator` + * :c:data:`core_fock_operator_erf` + * :c:data:`eigenvectors_fock_matrix_mo` + * :c:data:`fock_matrix_mo` + * :c:data:`inact_virt_bitmask` + * :c:data:`list_core_inact_act` + * :c:data:`mo_two_e_integrals_in_map` + * :c:data:`mo_two_e_integrals_vv_from_ao` + * :c:data:`reunion_of_bitmask` + * :c:data:`reunion_of_cas_inact_bitmask` + * :c:data:`reunion_of_core_inact_bitmask` + * :c:data:`virt_bitmask_4` + + +.. c:var:: virt_bitmask_4 + + + File : :file:`bitmask/bitmasks.irp.f` + + .. code:: fortran + + integer(bit_kind), allocatable :: virt_bitmask_4 (N_int,4) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`list_inact` + * :c:data:`n_int` + + + + +Subroutines / functions +----------------------- + +.. c:function:: bitstring_to_hexa: + + + File : :file:`bitmask/bitmasks_routines.irp.f` + + .. code:: fortran + + subroutine bitstring_to_hexa( output, string, Nint ) + + + Transform a bit string to a string in hexadecimal format for printing + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`debug_det` + * :c:func:`debug_spindet` + + +.. c:function:: bitstring_to_list: + + + File : :file:`bitmask/bitmasks_routines.irp.f` + + .. code:: fortran + + subroutine bitstring_to_list( string, list, n_elements, Nint) + + + Gives the inidices(+1) of the bits set to 1 in the bit string + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`add_integrals_to_map` + * :c:func:`add_integrals_to_map_erf` + * :c:func:`add_integrals_to_map_no_exit_34` + * :c:func:`add_integrals_to_map_three_indices` + * :c:func:`create_microlist` + * :c:func:`example_bitmask` + * :c:func:`getmobiles` + * :c:data:`list_core_inact_act` + * :c:data:`ref_bitmask_energy` + + +.. c:function:: bitstring_to_str: + + + File : :file:`bitmask/bitmasks_routines.irp.f` + + .. code:: fortran + + subroutine bitstring_to_str( output, string, Nint ) + + + Transform a bit string to a string for printing + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`add_integrals_to_map` + * :c:func:`add_integrals_to_map_erf` + * :c:func:`add_integrals_to_map_three_indices` + * :c:func:`example_bitmask` + * :c:func:`print_det` + * :c:func:`print_spindet` + + +.. c:function:: broadcast_chunks_bit_kind: + + + File : :file:`bitmask/mpi.irp.f` + + .. code:: fortran + + subroutine broadcast_chunks_bit_kind(A, LDA) + + + Broadcast with chunks of ~2GB + + +.. c:function:: clear_bit_to_integer: + + + File : :file:`bitmask/bitmasks_routines.irp.f` + + .. code:: fortran + + subroutine clear_bit_to_integer(i_physical,key,Nint) + + + set to 0 the bit number i_physical in the bitstring key + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`example_bitmask` + * :c:data:`ref_closed_shell_bitmask` + + +.. c:function:: debug_det: + + + File : :file:`bitmask/bitmasks_routines.irp.f` + + .. code:: fortran + + subroutine debug_det(string,Nint) + + + Subroutine to print the content of a determinant in '+-' notation and + hexadecimal representation. + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`build_fock_tmp` + * :c:func:`example_determinants` + * :c:func:`get_excitation_degree_vector_mono_or_exchange_verbose` + * :c:func:`number_of_holes_verbose` + * :c:func:`number_of_particles_verbose` + * :c:func:`routine_example_psi_det` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`bitstring_to_hexa` + * :c:func:`print_det` + + +.. c:function:: debug_spindet: + + + File : :file:`bitmask/bitmasks_routines.irp.f` + + .. code:: fortran + + subroutine debug_spindet(string,Nint) + + + Subroutine to print the content of a determinant in '+-' notation and + hexadecimal representation. + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`bitstring_to_hexa` + * :c:func:`print_spindet` + + +.. c:function:: example_bitmask: + + + File : :file:`bitmask/example.irp.f` + + .. code:: fortran + + subroutine example_bitmask + + + subroutine that illustrates the main features available in bitmask + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_core_orb` + * :c:data:`list_inact` + * :c:data:`n_int` + * :c:data:`mo_num` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`bitstring_to_list` + * :c:func:`bitstring_to_str` + * :c:func:`clear_bit_to_integer` + * :c:func:`set_bit_to_integer` + + +.. c:function:: initialize_bitmask_to_restart_ones: + + + File : :file:`bitmask/modify_bitmasks.irp.f` + + .. code:: fortran + + subroutine initialize_bitmask_to_restart_ones + + + Initialization of the generators_bitmask to the restart bitmask + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`generators_bitmask_restart` + * :c:data:`n_generators_bitmask` + * :c:data:`generators_bitmask` + * :c:data:`n_int` + + +.. c:function:: is_a_1h: + + + File : :file:`bitmask/bitmask_cas_routines.irp.f` + + .. code:: fortran + + logical function is_a_1h(key_in) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_int` + + +.. c:function:: is_a_1h1p: + + + File : :file:`bitmask/bitmask_cas_routines.irp.f` + + .. code:: fortran + + logical function is_a_1h1p(key_in) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_int` + + +.. c:function:: is_a_1h2p: + + + File : :file:`bitmask/bitmask_cas_routines.irp.f` + + .. code:: fortran + + logical function is_a_1h2p(key_in) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_int` + + +.. c:function:: is_a_1p: + + + File : :file:`bitmask/bitmask_cas_routines.irp.f` + + .. code:: fortran + + logical function is_a_1p(key_in) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_int` + + +.. c:function:: is_a_2h: + + + File : :file:`bitmask/bitmask_cas_routines.irp.f` + + .. code:: fortran + + logical function is_a_2h(key_in) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_int` + + +.. c:function:: is_a_2h1p: + + + File : :file:`bitmask/bitmask_cas_routines.irp.f` + + .. code:: fortran + + logical function is_a_2h1p(key_in) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_int` + + +.. c:function:: is_a_2p: + + + File : :file:`bitmask/bitmask_cas_routines.irp.f` + + .. code:: fortran + + logical function is_a_2p(key_in) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_int` + + +.. c:function:: is_a_two_holes_two_particles: + + + File : :file:`bitmask/bitmask_cas_routines.irp.f` + + .. code:: fortran + + logical function is_a_two_holes_two_particles(key_in) + + + logical function that returns True if the determinant 'key_in' + belongs to the 2h-2p excitation class of the DDCI space + this is calculated using the CAS_bitmask that defines the active + orbital space, the inact_bitmasl that defines the inactive oribital space + and the virt_bitmask that defines the virtual orbital space + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`cas_bitmask` + * :c:data:`reunion_of_core_inact_bitmask` + * :c:data:`list_inact` + * :c:data:`n_int` + + +.. c:function:: is_i_in_virtual: + + + File : :file:`bitmask/bitmask_cas_routines.irp.f` + + .. code:: fortran + + logical function is_i_in_virtual(i) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`list_inact` + * :c:data:`n_int` + + +.. c:function:: is_the_hole_in_det: + + + File : :file:`bitmask/find_hole.irp.f` + + .. code:: fortran + + logical function is_the_hole_in_det(key_in,ispin,i_hole) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_int` + + +.. c:function:: is_the_particl_in_det: + + + File : :file:`bitmask/find_hole.irp.f` + + .. code:: fortran + + logical function is_the_particl_in_det(key_in,ispin,i_particl) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_int` + + +.. c:function:: list_to_bitstring: + + + File : :file:`bitmask/bitmasks_routines.irp.f` + + .. code:: fortran + + subroutine list_to_bitstring( string, list, n_elements, Nint) + + + Returns the physical string "string(N_int,2)" from the array of + occupations "list(N_int*bit_kind_size,2) + + Called by: + + .. hlist:: + :columns: 3 + + * :c:data:`hf_bitmask` + * :c:data:`list_inact` + + +.. c:function:: modify_bitmasks_for_hole: + + + File : :file:`bitmask/modify_bitmasks.irp.f` + + .. code:: fortran + + subroutine modify_bitmasks_for_hole(i_hole) + + + modify the generators_bitmask in order that one can only excite + the electrons occupying i_hole + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_generators_bitmask` + * :c:data:`generators_bitmask` + * :c:data:`n_int` + * :c:data:`index_holes_bitmask` + + +.. c:function:: modify_bitmasks_for_hole_in_out: + + + File : :file:`bitmask/modify_bitmasks.irp.f` + + .. code:: fortran + + subroutine modify_bitmasks_for_hole_in_out(i_hole) + + + modify the generators_bitmask in order that one can only excite + the electrons occupying i_hole + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_generators_bitmask` + * :c:data:`generators_bitmask` + * :c:data:`index_holes_bitmask` + + +.. c:function:: modify_bitmasks_for_particl: + + + File : :file:`bitmask/modify_bitmasks.irp.f` + + .. code:: fortran + + subroutine modify_bitmasks_for_particl(i_part) + + + modify the generators_bitmask in order that one can only excite + the electrons to the orbital i_part + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`index_particl_bitmask` + * :c:data:`n_generators_bitmask` + * :c:data:`generators_bitmask` + * :c:data:`n_int` + + +.. c:function:: number_of_holes: + + + File : :file:`bitmask/bitmask_cas_routines.irp.f` + + .. code:: fortran + + integer function number_of_holes(key_in) + + + Function that returns the number of holes in the inact space + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`cas_bitmask` + * :c:data:`reunion_of_core_inact_bitmask` + * :c:data:`n_int` + + +.. c:function:: number_of_holes_verbose: + + + File : :file:`bitmask/bitmask_cas_routines.irp.f` + + .. code:: fortran + + integer function number_of_holes_verbose(key_in) + + + function that returns the number of holes in the inact space + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`cas_bitmask` + * :c:data:`reunion_of_core_inact_bitmask` + * :c:data:`n_int` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`debug_det` + + +.. c:function:: number_of_particles: + + + File : :file:`bitmask/bitmask_cas_routines.irp.f` + + .. code:: fortran + + integer function number_of_particles(key_in) + + + function that returns the number of particles in the virtual space + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`cas_bitmask` + * :c:data:`list_inact` + * :c:data:`n_int` + + +.. c:function:: number_of_particles_verbose: + + + File : :file:`bitmask/bitmask_cas_routines.irp.f` + + .. code:: fortran + + integer function number_of_particles_verbose(key_in) + + + function that returns the number of particles in the inact space + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`cas_bitmask` + * :c:data:`list_inact` + * :c:data:`n_int` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`debug_det` + + +.. c:function:: print_det: + + + File : :file:`bitmask/bitmasks_routines.irp.f` + + .. code:: fortran + + subroutine print_det(string,Nint) + + + Subroutine to print the content of a determinant using the '+-' notation + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`debug_det` + * :c:func:`example_determinants` + * :c:func:`print_generators_bitmasks_holes` + * :c:func:`print_generators_bitmasks_holes_for_one_generator` + * :c:func:`print_generators_bitmasks_particles` + * :c:func:`print_generators_bitmasks_particles_for_one_generator` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`bitstring_to_str` + + +.. c:function:: print_generators_bitmasks_holes: + + + File : :file:`bitmask/modify_bitmasks.irp.f` + + .. code:: fortran + + subroutine print_generators_bitmasks_holes + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`generators_bitmask` + * :c:data:`n_int` + * :c:data:`index_holes_bitmask` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`print_det` + + +.. c:function:: print_generators_bitmasks_holes_for_one_generator: + + + File : :file:`bitmask/modify_bitmasks.irp.f` + + .. code:: fortran + + subroutine print_generators_bitmasks_holes_for_one_generator(i_gen) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`generators_bitmask` + * :c:data:`n_int` + * :c:data:`index_holes_bitmask` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`print_det` + + +.. c:function:: print_generators_bitmasks_particles: + + + File : :file:`bitmask/modify_bitmasks.irp.f` + + .. code:: fortran + + subroutine print_generators_bitmasks_particles + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`index_particl_bitmask` + * :c:data:`generators_bitmask` + * :c:data:`n_int` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`print_det` + + +.. c:function:: print_generators_bitmasks_particles_for_one_generator: + + + File : :file:`bitmask/modify_bitmasks.irp.f` + + .. code:: fortran + + subroutine print_generators_bitmasks_particles_for_one_generator(i_gen) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`index_particl_bitmask` + * :c:data:`generators_bitmask` + * :c:data:`n_int` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`print_det` + + +.. c:function:: print_spindet: + + + File : :file:`bitmask/bitmasks_routines.irp.f` + + .. code:: fortran + + subroutine print_spindet(string,Nint) + + + Subroutine to print the content of a determinant using the '+-' notation + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`debug_spindet` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`bitstring_to_str` + + +.. c:function:: set_bit_to_integer: + + + File : :file:`bitmask/bitmasks_routines.irp.f` + + .. code:: fortran + + subroutine set_bit_to_integer(i_physical,key,Nint) + + + set to 1 the bit number i_physical in the bitstring key + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`example_bitmask` + + +.. c:function:: set_bitmask_hole_as_input: + + + File : :file:`bitmask/modify_bitmasks.irp.f` + + .. code:: fortran + + subroutine set_bitmask_hole_as_input(input_bimask) + + + set the generators_bitmask for the holes + as the input_bimask + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_generators_bitmask` + * :c:data:`generators_bitmask` + * :c:data:`n_int` + * :c:data:`index_holes_bitmask` + + Touches: + + .. hlist:: + :columns: 3 + + * :c:data:`generators_bitmask` + + +.. c:function:: set_bitmask_particl_as_input: + + + File : :file:`bitmask/modify_bitmasks.irp.f` + + .. code:: fortran + + subroutine set_bitmask_particl_as_input(input_bimask) + + + set the generators_bitmask for the particles + as the input_bimask + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`index_particl_bitmask` + * :c:data:`n_generators_bitmask` + * :c:data:`generators_bitmask` + * :c:data:`n_int` + + Touches: + + .. hlist:: + :columns: 3 + + * :c:data:`generators_bitmask` + diff --git a/doc/_sources/modules/cipsi.rst.txt b/doc/_sources/modules/cipsi.rst.txt new file mode 100644 index 00000000..3e0d1aef --- /dev/null +++ b/doc/_sources/modules/cipsi.rst.txt @@ -0,0 +1,2259 @@ +.. _module_cipsi: + +.. program:: cipsi + +.. default-role:: option + +===== +cipsi +===== + +|CIPSI| algorithm. + +The :c:func:`run_stochastic_cipsi` and :c:func:`run_cipsi` subroutines start with a single +determinant, or with the wave function in the |EZFIO| database if +:option:`determinants read_wf` is |true|. + +The :c:func:`run_cipsi` subroutine iteratively: + +* Selects the most important determinants from the external space and adds them to the + internal space +* If :option:`determinants s2_eig` is |true|, it adds all the necessary + determinants to allow the eigenstates of |H| to be eigenstates of |S^2| +* Diagonalizes |H| in the enlarged internal space +* Computes the |PT2| contribution to the energy stochastically :cite:`Garniron_2017.2` + or deterministically, depending on :option:`perturbation do_pt2` +* Extrapolates the variational energy by fitting + :math:`E=E_\text{FCI} - \alpha\, E_\text{PT2}` + +The difference between :c:func:`run_stochastic_cipsi` and :c:func:`run_cipsi` is that +:c:func:`run_stochastic_cipsi` selects the determinants on the fly with the computation +of the stochastic |PT2| :cite:`Garniron_2017.2`. Hence, it is a semi-stochastic selection. It + +* Selects the most important determinants from the external space and adds them to the + internal space, on the fly with the computation of the PT2 with the stochastic algorithm + presented in :cite:`Garniron_2017.2`. +* If :option:`determinants s2_eig` is |true|, it adds all the necessary + determinants to allow the eigenstates of |H| to be eigenstates of |S^2| +* Extrapolates the variational energy by fitting + :math:`E=E_\text{FCI} - \alpha\, E_\text{PT2}` +* Diagonalizes |H| in the enlarged internal space + + +The number of selected determinants at each iteration will be such that the +size of the wave function will double at every iteration. If :option:`determinants +s2_eig` is |true|, then the number of selected determinants will be 1.5x the +current number, and then all the additional determinants will be added. + +By default, the program will stop when more than one million determinants have +been selected, or when the |PT2| energy is below :math:`10^{-4}`. + +The variational and |PT2| energies of the iterations are stored in the +|EZFIO| database, in the :ref:`iterations` module. + + + +Computation of the |PT2| energy +------------------------------- + +At each iteration, the |PT2| energy is computed considering the Epstein-Nesbet +zeroth-order Hamiltonian: + +.. math:: + + E_{\text{PT2}} = \sum_{ \alpha } + \frac{|\langle \Psi_S | \hat{H} | \alpha \rangle|^2} + {E - \langle \alpha | \hat{H} | \alpha \rangle} + +where the |kalpha| determinants are generated by applying all the single and +double excitation operators to all the determinants of the wave function +:math:`\Psi_G`. + +When the hybrid-deterministic/stochastic algorithm is chosen +(default), :math:`Psi_G = \Psi_S = \Psi`, the full wavefunction expanded in the +internal space. +When the deterministic algorithm is chosen (:option:`perturbation do_pt2` +is set to |false|), :math:`Psi_G` is a truncation of |Psi| using +:option:`determinants threshold_generators`, and :math:`Psi_S` is a truncation +of |Psi| using :option:`determinants threshold_selectors`, and re-weighted +by :math:`1/\langle \Psi_s | \Psi_s \rangle`. + +At every iteration, while computing the |PT2|, the variance of the wave +function is also computed: + +.. math:: + + \sigma^2 & = \langle \Psi | \hat{H}^2 | \Psi \rangle - + \langle \Psi | \hat{H} | \Psi \rangle^2 \\ + & = \sum_{i \in \text{FCI}} + \langle \Psi | \hat{H} | i \rangle + \langle i | \hat{H} | \Psi \rangle - + \langle \Psi | \hat{H} | \Psi \rangle^2 \\ + & = \sum_{ \alpha } + \langle |\Psi | \hat{H} | \alpha \rangle|^2. + +The expression of the variance is the same as the expression of the |PT2|, with +a denominator of 1. It measures how far the wave function is from the |FCI| +solution. Note that the absence of denominator in the Heat-Bath selected |CI| +method is selection method by minimization of the variance, whereas |CIPSI| is +a selection method by minimization of the energy. + + +If :option:`perturbation do_pt2` is set to |false|, then the stochastic +|PT2| is not computed, and an approximate value is obtained from the |CIPSI| +selection. The calculation is faster, but the extrapolated |FCI| value is +less accurate. This way of running the code should be used when the only +goal is to generate a wave function, as for using |CIPSI| wave functions as +trial wave functions of |QMC| calculations for example. + + +The :command:`PT2` program reads the wave function of the |EZFIO| database +and computes the energy and the |PT2| contribution. + + +State-averaging +--------------- + +Extrapolated |FCI| energy +------------------------- + +An estimate of the |FCI| energy is computed by extrapolating + +.. math:: + + E=E_\text{FCI} - \alpha\, E_\text{PT2} + +This extrapolation is done for all the requested states, and excitation +energies are printed as energy differences between the extrapolated +energies of the excited states and the extrapolated energy of the ground +state. + +The extrapolations are given considering the 2 last points, the 3 last points, ..., +the 7 last points. The extrapolated value should be chosen such that the extrpolated +value is stable with the number of points. + + + + +Providers +--------- + +.. c:var:: initialize_pt2_e0_denominator + + + File : :file:`cipsi/energy.irp.f` + + .. code:: fortran + + logical :: initialize_pt2_e0_denominator + + + If true, initialize pt2_E0_denominator + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`pt2_e0_denominator` + + +.. c:var:: nthreads_pt2 + + + File : :file:`cipsi/environment.irp.f` + + .. code:: fortran + + integer :: nthreads_pt2 + + + Number of threads for Davidson + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mpi_master` + * :c:data:`nproc` + + + +.. c:function:: pt2_collector: + + + File : :file:`cipsi/pt2_stoch_routines.irp.f` + + .. code:: fortran + + subroutine pt2_collector(zmq_socket_pull, E, relative_error, pt2, error, & + variance, norm, b, N_) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`pt2_j` + * :c:data:`pt2_stoch_istate` + * :c:data:`n_states` + * :c:data:`pt2_f` + * :c:data:`pt2_w` + * :c:data:`n_det_generators` + * :c:data:`pt2_n_teeth` + * :c:data:`pt2_u` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`zmq_pt2` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`add_to_selection_buffer` + * :c:func:`check_mem` + * :c:func:`create_selection_buffer` + * :c:func:`delete_selection_buffer` + * :c:func:`end_zmq_to_qp_run_socket` + * :c:func:`pull_pt2_results` + * :c:func:`sleep` + * :c:func:`sort_selection_buffer` + * :c:func:`wall_time` + + +.. c:var:: pt2_cw + + + File : :file:`cipsi/pt2_stoch_routines.irp.f` + + .. code:: fortran + + double precision, allocatable :: pt2_w (N_det_generators) + double precision, allocatable :: pt2_cw (0:N_det_generators) + double precision :: pt2_w_t + double precision :: pt2_u_0 + integer, allocatable :: pt2_n_0 (pt2_N_teeth+1) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_det_generators` + * :c:data:`psi_det_sorted_gen` + * :c:data:`pt2_n_teeth` + * :c:data:`pt2_stoch_istate` + * :c:data:`qp_max_mem` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`pt2_j` + + +.. c:var:: pt2_e0_denominator + + + File : :file:`cipsi/energy.irp.f` + + .. code:: fortran + + double precision, allocatable :: pt2_e0_denominator (N_states) + + + E0 in the denominator of the PT2 + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`barycentric_electronic_energy` + * :c:data:`h0_type` + * :c:data:`initialize_pt2_e0_denominator` + * :c:data:`mpi_master` + * :c:data:`n_states` + * :c:data:`nuclear_repulsion` + * :c:data:`psi_energy` + + + +.. c:var:: pt2_f + + + File : :file:`cipsi/pt2_stoch_routines.irp.f` + + .. code:: fortran + + integer, allocatable :: pt2_f (N_det_generators) + integer :: pt2_n_tasks_max + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`elec_num` + * :c:data:`n_core_orb` + * :c:data:`n_det_generators` + * :c:data:`n_det_selectors` + * :c:data:`n_states` + * :c:data:`psi_det_sorted_gen` + + + +.. c:var:: pt2_j + + + File : :file:`cipsi/pt2_stoch_routines.irp.f` + + .. code:: fortran + + integer, allocatable :: pt2_j (N_det_generators) + integer, allocatable :: pt2_r (N_det_generators) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_det_generators` + * :c:data:`pt2_n_tasks` + * :c:data:`pt2_n_teeth` + * :c:data:`pt2_u` + * :c:data:`pt2_w` + * :c:data:`qp_max_mem` + + + +.. c:var:: pt2_mindetinfirstteeth + + + File : :file:`cipsi/pt2_stoch_routines.irp.f` + + .. code:: fortran + + integer :: pt2_n_teeth + integer :: pt2_mindetinfirstteeth + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mpi_master` + * :c:data:`n_det_generators` + * :c:data:`psi_det_sorted_gen` + * :c:data:`pt2_stoch_istate` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`pt2_j` + * :c:data:`pt2_w` + + +.. c:var:: pt2_n_0 + + + File : :file:`cipsi/pt2_stoch_routines.irp.f` + + .. code:: fortran + + double precision, allocatable :: pt2_w (N_det_generators) + double precision, allocatable :: pt2_cw (0:N_det_generators) + double precision :: pt2_w_t + double precision :: pt2_u_0 + integer, allocatable :: pt2_n_0 (pt2_N_teeth+1) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_det_generators` + * :c:data:`psi_det_sorted_gen` + * :c:data:`pt2_n_teeth` + * :c:data:`pt2_stoch_istate` + * :c:data:`qp_max_mem` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`pt2_j` + + +.. c:var:: pt2_n_tasks + + + File : :file:`cipsi/pt2_stoch_routines.irp.f` + + .. code:: fortran + + integer :: pt2_n_tasks + + + Number of parallel tasks for the Monte Carlo + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_det_generators` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`pt2_j` + + +.. c:var:: pt2_n_tasks_max + + + File : :file:`cipsi/pt2_stoch_routines.irp.f` + + .. code:: fortran + + integer, allocatable :: pt2_f (N_det_generators) + integer :: pt2_n_tasks_max + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`elec_num` + * :c:data:`n_core_orb` + * :c:data:`n_det_generators` + * :c:data:`n_det_selectors` + * :c:data:`n_states` + * :c:data:`psi_det_sorted_gen` + + + +.. c:var:: pt2_n_teeth + + + File : :file:`cipsi/pt2_stoch_routines.irp.f` + + .. code:: fortran + + integer :: pt2_n_teeth + integer :: pt2_mindetinfirstteeth + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mpi_master` + * :c:data:`n_det_generators` + * :c:data:`psi_det_sorted_gen` + * :c:data:`pt2_stoch_istate` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`pt2_j` + * :c:data:`pt2_w` + + +.. c:var:: pt2_r + + + File : :file:`cipsi/pt2_stoch_routines.irp.f` + + .. code:: fortran + + integer, allocatable :: pt2_j (N_det_generators) + integer, allocatable :: pt2_r (N_det_generators) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_det_generators` + * :c:data:`pt2_n_tasks` + * :c:data:`pt2_n_teeth` + * :c:data:`pt2_u` + * :c:data:`pt2_w` + * :c:data:`qp_max_mem` + + + +.. c:var:: pt2_stoch_istate + + + File : :file:`cipsi/pt2_stoch_routines.irp.f` + + .. code:: fortran + + integer :: pt2_stoch_istate + + + State for stochatsic PT2 + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`pt2_n_teeth` + * :c:data:`pt2_w` + + +.. c:var:: pt2_u + + + File : :file:`cipsi/pt2_stoch_routines.irp.f` + + .. code:: fortran + + double precision, allocatable :: pt2_u (N_det_generators) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_det_generators` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`pt2_j` + + +.. c:var:: pt2_u_0 + + + File : :file:`cipsi/pt2_stoch_routines.irp.f` + + .. code:: fortran + + double precision, allocatable :: pt2_w (N_det_generators) + double precision, allocatable :: pt2_cw (0:N_det_generators) + double precision :: pt2_w_t + double precision :: pt2_u_0 + integer, allocatable :: pt2_n_0 (pt2_N_teeth+1) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_det_generators` + * :c:data:`psi_det_sorted_gen` + * :c:data:`pt2_n_teeth` + * :c:data:`pt2_stoch_istate` + * :c:data:`qp_max_mem` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`pt2_j` + + +.. c:var:: pt2_w + + + File : :file:`cipsi/pt2_stoch_routines.irp.f` + + .. code:: fortran + + double precision, allocatable :: pt2_w (N_det_generators) + double precision, allocatable :: pt2_cw (0:N_det_generators) + double precision :: pt2_w_t + double precision :: pt2_u_0 + integer, allocatable :: pt2_n_0 (pt2_N_teeth+1) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_det_generators` + * :c:data:`psi_det_sorted_gen` + * :c:data:`pt2_n_teeth` + * :c:data:`pt2_stoch_istate` + * :c:data:`qp_max_mem` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`pt2_j` + + +.. c:var:: pt2_w_t + + + File : :file:`cipsi/pt2_stoch_routines.irp.f` + + .. code:: fortran + + double precision, allocatable :: pt2_w (N_det_generators) + double precision, allocatable :: pt2_cw (0:N_det_generators) + double precision :: pt2_w_t + double precision :: pt2_u_0 + integer, allocatable :: pt2_n_0 (pt2_N_teeth+1) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_det_generators` + * :c:data:`psi_det_sorted_gen` + * :c:data:`pt2_n_teeth` + * :c:data:`pt2_stoch_istate` + * :c:data:`qp_max_mem` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`pt2_j` + + +.. c:var:: selection_weight + + + File : :file:`cipsi/selection.irp.f` + + .. code:: fortran + + double precision, allocatable :: selection_weight (N_states) + + + Weights used in the selection criterion + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`c0_weight` + * :c:data:`n_states` + + + + +Subroutines / functions +----------------------- + +.. c:function:: add_to_selection_buffer: + + + File : :file:`cipsi/selection_buffer.irp.f` + + .. code:: fortran + + subroutine add_to_selection_buffer(b, det, val) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_int` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`fill_buffer_double` + * :c:func:`pt2_collector` + * :c:func:`selection_collector` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`sort_selection_buffer` + + +.. c:function:: bitstring_to_list_in_selection: + + + File : :file:`cipsi/selection.irp.f` + + .. code:: fortran + + subroutine bitstring_to_list_in_selection( string, list, n_elements, Nint) + + + Gives the inidices(+1) of the bits set to 1 in the bit string + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`splash_pq` + * :c:func:`spot_isinwf` + + +.. c:function:: create_selection_buffer: + + + File : :file:`cipsi/selection_buffer.irp.f` + + .. code:: fortran + + subroutine create_selection_buffer(N, siz_, res) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_int` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`pt2_collector` + * :c:func:`run_pt2_slave` + * :c:func:`run_selection_slave` + * :c:func:`selection_collector` + * :c:func:`zmq_pt2` + * :c:func:`zmq_selection` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`check_mem` + + +.. c:function:: delete_selection_buffer: + + + File : :file:`cipsi/selection_buffer.irp.f` + + .. code:: fortran + + subroutine delete_selection_buffer(b) + + + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`pt2_collector` + * :c:func:`run_pt2_slave` + * :c:func:`run_selection_slave` + * :c:func:`selection_collector` + * :c:func:`zmq_pt2` + * :c:func:`zmq_selection` + + +.. c:function:: fill_buffer_double: + + + File : :file:`cipsi/selection.irp.f` + + .. code:: fortran + + subroutine fill_buffer_double(i_generator, sp, h1, h2, bannedOrb, banned, fock_diag_tmp, E0, pt2, variance, norm, mat, buf) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`psi_occ_pattern_hii` + * :c:data:`det_to_occ_pattern` + * :c:data:`selection_weight` + * :c:data:`mo_num` + * :c:data:`n_states` + * :c:data:`n_int` + * :c:data:`psi_det_hii` + * :c:data:`do_only_1h1p` + * :c:data:`h0_type` + * :c:data:`psi_det_generators` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`select_singles_and_doubles` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`add_to_selection_buffer` + * :c:func:`apply_holes` + * :c:func:`apply_particles` + + +.. c:function:: get_d0: + + + File : :file:`cipsi/selection.irp.f` + + .. code:: fortran + + subroutine get_d0(gen, phasemask, bannedOrb, banned, mat, mask, h, p, sp, coefs) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_states` + * :c:data:`n_int` + * :c:data:`mo_integrals_map` + * :c:data:`mo_num` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`splash_pq` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`apply_particles` + * :c:func:`get_mo_two_e_integrals` + * :c:func:`i_h_j` + + +.. c:function:: get_d1: + + + File : :file:`cipsi/selection.irp.f` + + .. code:: fortran + + subroutine get_d1(gen, phasemask, bannedOrb, banned, mat, mask, h, p, sp, coefs) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_states` + * :c:data:`n_int` + * :c:data:`mo_integrals_map` + * :c:data:`mo_num` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`splash_pq` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`apply_particles` + * :c:func:`get_mo_two_e_integrals` + * :c:func:`i_h_j` + + +.. c:function:: get_d2: + + + File : :file:`cipsi/selection.irp.f` + + .. code:: fortran + + subroutine get_d2(gen, phasemask, bannedOrb, banned, mat, mask, h, p, sp, coefs) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_states` + * :c:data:`n_int` + * :c:data:`mo_num` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`splash_pq` + + +.. c:function:: get_mask_phase: + + + File : :file:`cipsi/selection.irp.f` + + .. code:: fortran + + subroutine get_mask_phase(det1, pm, Nint) + + + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`splash_pq` + + +.. c:function:: get_phase_bi: + + + File : :file:`cipsi/selection.irp.f` + + .. code:: fortran + + double precision function get_phase_bi(phasemask, s1, s2, h1, p1, h2, p2, Nint) + + + + +.. c:function:: make_selection_buffer_s2: + + + File : :file:`cipsi/selection_buffer.irp.f` + + .. code:: fortran + + subroutine make_selection_buffer_s2(b) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`elec_alpha_num` + * :c:data:`n_int` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`zmq_pt2` + * :c:func:`zmq_selection` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`check_mem` + * :c:func:`dsort` + * :c:func:`i8sort` + * :c:func:`occ_pattern_to_dets` + * :c:func:`occ_pattern_to_dets_size` + + +.. c:function:: merge_selection_buffers: + + + File : :file:`cipsi/selection_buffer.irp.f` + + .. code:: fortran + + subroutine merge_selection_buffers(b1, b2) + + + Merges the selection buffers b1 and b2 into b2 + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_int` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`run_pt2_slave` + * :c:func:`run_selection_slave` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`check_mem` + + +.. c:function:: past_d1: + + + File : :file:`cipsi/selection.irp.f` + + .. code:: fortran + + subroutine past_d1(bannedOrb, p) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_num` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`splash_pq` + + +.. c:function:: past_d2: + + + File : :file:`cipsi/selection.irp.f` + + .. code:: fortran + + subroutine past_d2(banned, p, sp) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_num` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`splash_pq` + + +.. c:function:: provide_everything: + + + File : :file:`cipsi/slave_cipsi.irp.f` + + .. code:: fortran + + subroutine provide_everything + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`generators_bitmask` + * :c:data:`pt2_stoch_istate` + * :c:data:`psi_selectors` + * :c:data:`psi_det` + * :c:data:`zmq_state` + * :c:data:`psi_coef` + * :c:data:`mpi_master` + * :c:data:`n_det` + * :c:data:`zmq_context` + * :c:data:`n_det_selectors` + * :c:data:`state_average_weight` + * :c:data:`mo_num` + * :c:data:`mo_two_e_integrals_in_map` + * :c:data:`pt2_e0_denominator` + * :c:data:`ci_energy` + * :c:data:`n_states_diag` + * :c:data:`threshold_generators` + * :c:data:`psi_det_sorted_bit` + * :c:data:`n_states` + * :c:data:`h_apply_buffer_allocated` + * :c:data:`n_det_generators` + * :c:data:`psi_det_generators` + * :c:data:`n_int` + * :c:data:`psi_det_generators` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`run_slave_cipsi` + + +.. c:function:: pt2_find_sample: + + + File : :file:`cipsi/pt2_stoch_routines.irp.f` + + .. code:: fortran + + integer function pt2_find_sample(v, w) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_det_generators` + + +.. c:function:: pt2_find_sample_lr: + + + File : :file:`cipsi/pt2_stoch_routines.irp.f` + + .. code:: fortran + + integer function pt2_find_sample_lr(v, w, l_in, r_in) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_det_generators` + + +.. c:function:: pt2_slave_inproc: + + + File : :file:`cipsi/pt2_stoch_routines.irp.f` + + .. code:: fortran + + subroutine pt2_slave_inproc(i) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`pt2_e0_denominator` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`zmq_pt2` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`run_pt2_slave` + + +.. c:function:: pull_pt2_results: + + + File : :file:`cipsi/run_pt2_slave.irp.f` + + .. code:: fortran + + subroutine pull_pt2_results(zmq_socket_pull, index, pt2, variance, norm, task_id, n_tasks, b) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_states` + * :c:data:`n_int` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`pt2_collector` + + +.. c:function:: pull_selection_results: + + + File : :file:`cipsi/run_selection_slave.irp.f` + + .. code:: fortran + + subroutine pull_selection_results(zmq_socket_pull, pt2, variance, norm, val, det, N, task_id, ntask) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_states` + * :c:data:`n_int` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`selection_collector` + + +.. c:function:: push_pt2_results: + + + File : :file:`cipsi/run_pt2_slave.irp.f` + + .. code:: fortran + + subroutine push_pt2_results(zmq_socket_push, index, pt2, variance, norm, b, task_id, n_tasks) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_states` + * :c:data:`n_int` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`run_pt2_slave` + + +.. c:function:: push_selection_results: + + + File : :file:`cipsi/run_selection_slave.irp.f` + + .. code:: fortran + + subroutine push_selection_results(zmq_socket_push, pt2, variance, norm, b, task_id, ntask) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_states` + * :c:data:`n_int` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`run_selection_slave` + + +.. c:function:: remove_duplicates_in_selection_buffer: + + + File : :file:`cipsi/selection_buffer.irp.f` + + .. code:: fortran + + subroutine remove_duplicates_in_selection_buffer(b) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_int` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`zmq_pt2` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`check_mem` + * :c:func:`i8sort` + + +.. c:function:: run_cipsi: + + + File : :file:`cipsi/cipsi.irp.f` + + .. code:: fortran + + subroutine run_cipsi + + + Selected Full Configuration Interaction with deterministic selection and + stochastic PT2. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`correlation_energy_ratio_max` + * :c:data:`n_iter` + * :c:data:`psi_energy_with_nucl_rep` + * :c:data:`psi_occ_pattern` + * :c:data:`n_det_max` + * :c:data:`n_states` + * :c:data:`h_apply_buffer_allocated` + * :c:data:`n_det` + * :c:data:`s2_eig` + * :c:data:`do_pt2` + * :c:data:`psi_energy` + * :c:data:`pt2_relative_error` + * :c:data:`ref_bitmask_energy` + * :c:data:`psi_det` + * :c:data:`n_states_diag` + * :c:data:`psi_coef` + * :c:data:`psi_det_sorted` + * :c:data:`pt2_max` + * :c:data:`threshold_generators` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`fci` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`check_mem` + * :c:func:`diagonalize_ci` + * :c:func:`ezfio_get_hartree_fock_energy` + * :c:func:`ezfio_has_hartree_fock_energy` + * :c:func:`make_s2_eigenfunction` + * :c:func:`print_extrapolated_energy` + * :c:func:`print_summary` + * :c:func:`save_energy` + * :c:func:`save_iterations` + * :c:func:`save_wavefunction` + * :c:func:`write_double` + * :c:func:`zmq_pt2` + * :c:func:`zmq_selection` + + 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:`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_stoch_istate` + * :c:data:`state_average_weight` + * :c:data:`threshold_generators` + + +.. c:function:: run_pt2_slave: + + + File : :file:`cipsi/run_pt2_slave.irp.f` + + .. code:: fortran + + subroutine run_pt2_slave(thread,iproc,energy) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_states_diag` + * :c:data:`n_states` + * :c:data:`pt2_f` + * :c:data:`nproc` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`pt2_slave_inproc` + * :c:func:`run_slave_main` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`check_mem` + * :c:func:`create_selection_buffer` + * :c:func:`delete_selection_buffer` + * :c:func:`end_zmq_push_socket` + * :c:func:`end_zmq_to_qp_run_socket` + * :c:func:`merge_selection_buffers` + * :c:func:`push_pt2_results` + * :c:func:`select_connected` + * :c:func:`sleep` + * :c:func:`sort_selection_buffer` + * :c:func:`wall_time` + + +.. c:function:: run_selection_slave: + + + File : :file:`cipsi/run_selection_slave.irp.f` + + .. code:: fortran + + subroutine run_selection_slave(thread,iproc,energy) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`psi_det_beta_unique` + * :c:data:`psi_bilinear_matrix_values` + * :c:data:`psi_bilinear_matrix_transp_values` + * :c:data:`psi_bilinear_matrix_transp_rows_loc` + * :c:data:`n_states` + * :c:data:`pt2_f` + * :c:data:`psi_bilinear_matrix_values` + * :c:data:`psi_bilinear_matrix_transp_values` + * :c:data:`n_int` + * :c:data:`psi_det_alpha_unique` + * :c:data:`psi_det_sorted` + * :c:data:`psi_det_sorted` + * :c:data:`psi_bilinear_matrix_columns_loc` + * :c:data:`psi_selectors_coef_transp` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`run_slave_main` + * :c:func:`selection_slave_inproc` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`create_selection_buffer` + * :c:func:`delete_selection_buffer` + * :c:func:`end_zmq_push_socket` + * :c:func:`end_zmq_to_qp_run_socket` + * :c:func:`merge_selection_buffers` + * :c:func:`push_selection_results` + * :c:func:`select_connected` + * :c:func:`sleep` + * :c:func:`sort_selection_buffer` + + +.. c:function:: run_slave_cipsi: + + + File : :file:`cipsi/slave_cipsi.irp.f` + + .. code:: fortran + + subroutine run_slave_cipsi + + + Helper program for distributed parallelism + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`read_wf` + * :c:data:`distributed_davidson` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`fci` + * :c:func:`pt2` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`omp_set_nested` + * :c:func:`provide_everything` + * :c:func:`run_slave_main` + * :c:func:`switch_qp_run_to_master` + + Touches: + + .. hlist:: + :columns: 3 + + * :c:data:`distributed_davidson` + * :c:data:`pt2_e0_denominator` + * :c:data:`pt2_stoch_istate` + * :c:data:`read_wf` + * :c:data:`state_average_weight` + * :c:data:`threshold_generators` + + +.. c:function:: run_slave_main: + + + File : :file:`cipsi/slave_cipsi.irp.f` + + .. code:: fortran + + subroutine run_slave_main + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`psi_coef` + * :c:data:`mpi_rank` + * :c:data:`zmq_state` + * :c:data:`state_average_weight` + * :c:data:`mpi_master` + * :c:data:`pt2_stoch_istate` + * :c:data:`n_states` + * :c:data:`n_det` + * :c:data:`pt2_e0_denominator` + * :c:data:`n_det_selectors` + * :c:data:`n_det_generators` + * :c:data:`psi_det` + * :c:data:`n_states_diag` + * :c:data:`zmq_context` + * :c:data:`threshold_generators` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`run_slave_cipsi` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`davidson_slave_tcp` + * :c:func:`mpi_print` + * :c:func:`omp_set_nested` + * :c:func:`run_pt2_slave` + * :c:func:`run_selection_slave` + * :c:func:`sleep` + * :c:func:`wait_for_states` + * :c:func:`wall_time` + * :c:func:`write_double` + + Touches: + + .. hlist:: + :columns: 3 + + * :c:data:`pt2_e0_denominator` + * :c:data:`pt2_stoch_istate` + * :c:data:`state_average_weight` + * :c:data:`threshold_generators` + + +.. c:function:: run_stochastic_cipsi: + + + File : :file:`cipsi/stochastic_cipsi.irp.f` + + .. code:: fortran + + subroutine run_stochastic_cipsi + + + Selected Full Configuration Interaction with Stochastic selection and PT2. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`correlation_energy_ratio_max` + * :c:data:`n_iter` + * :c:data:`psi_energy_with_nucl_rep` + * :c:data:`psi_occ_pattern` + * :c:data:`n_det_max` + * :c:data:`n_states` + * :c:data:`h_apply_buffer_allocated` + * :c:data:`n_det` + * :c:data:`s2_eig` + * :c:data:`psi_energy` + * :c:data:`pt2_relative_error` + * :c:data:`ref_bitmask_energy` + * :c:data:`psi_det` + * :c:data:`n_states_diag` + * :c:data:`psi_coef` + * :c:data:`psi_det_sorted` + * :c:data:`pt2_max` + * :c:data:`threshold_generators` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`fci` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`check_mem` + * :c:func:`copy_h_apply_buffer_to_wf` + * :c:func:`diagonalize_ci` + * :c:func:`ezfio_get_hartree_fock_energy` + * :c:func:`ezfio_has_hartree_fock_energy` + * :c:func:`make_s2_eigenfunction` + * :c:func:`print_extrapolated_energy` + * :c:func:`print_summary` + * :c:func:`save_energy` + * :c:func:`save_iterations` + * :c:func:`save_wavefunction` + * :c:func:`write_double` + * :c:func:`zmq_pt2` + + 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:`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_stoch_istate` + * :c:data:`state_average_weight` + * :c:data:`threshold_generators` + + +.. c:function:: select_connected: + + + File : :file:`cipsi/selection.irp.f` + + .. code:: fortran + + subroutine select_connected(i_generator,E0,pt2,variance,norm,b,subset,csubset) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`generators_bitmask` + * :c:data:`mo_num` + * :c:data:`n_states` + * :c:data:`n_int` + * :c:data:`n_generators_bitmask` + * :c:data:`psi_det_generators` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`run_pt2_slave` + * :c:func:`run_selection_slave` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`build_fock_tmp` + * :c:func:`select_singles_and_doubles` + + +.. c:function:: select_singles_and_doubles: + + + File : :file:`cipsi/selection.irp.f` + + .. code:: fortran + + subroutine select_singles_and_doubles(i_generator,hole_mask,particle_mask,fock_diag_tmp,E0,pt2,variance,norm,buf,subset,csubset) + + + WARNING /!\ : It is assumed that the generators and selectors are psi_det_sorted + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`psi_det_beta_unique` + * :c:data:`psi_bilinear_matrix_values` + * :c:data:`psi_bilinear_matrix_transp_values` + * :c:data:`mo_num` + * :c:data:`psi_bilinear_matrix_transp_rows_loc` + * :c:data:`n_states` + * :c:data:`n_det` + * :c:data:`psi_bilinear_matrix_transp_values` + * :c:data:`elec_alpha_num` + * :c:data:`n_det_selectors` + * :c:data:`psi_bilinear_matrix_transp_values` + * :c:data:`psi_bilinear_matrix_values` + * :c:data:`n_int` + * :c:data:`psi_det_generators` + * :c:data:`psi_bilinear_matrix_values` + * :c:data:`psi_det_alpha_unique` + * :c:data:`psi_det_sorted` + * :c:data:`psi_det_sorted` + * :c:data:`psi_bilinear_matrix_columns_loc` + * :c:data:`psi_selectors_coef_transp` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`select_connected` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`apply_hole` + * :c:func:`bitstring_to_list_ab` + * :c:func:`check_mem` + * :c:func:`fill_buffer_double` + * :c:func:`get_excitation_degree_spin` + * :c:func:`isort` + * :c:func:`splash_pq` + * :c:func:`spot_isinwf` + + +.. c:function:: selection_collector: + + + File : :file:`cipsi/zmq_selection.irp.f` + + .. code:: fortran + + subroutine selection_collector(zmq_socket_pull, b, N, pt2, variance, norm) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_det_generators` + * :c:data:`n_states` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`zmq_selection` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`add_to_selection_buffer` + * :c:func:`check_mem` + * :c:func:`create_selection_buffer` + * :c:func:`delete_selection_buffer` + * :c:func:`end_zmq_to_qp_run_socket` + * :c:func:`pull_selection_results` + * :c:func:`sort_selection_buffer` + + +.. c:function:: selection_slave_inproc: + + + File : :file:`cipsi/zmq_selection.irp.f` + + .. code:: fortran + + subroutine selection_slave_inproc(i) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`pt2_e0_denominator` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`zmq_selection` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`run_selection_slave` + + +.. c:function:: sort_selection_buffer: + + + File : :file:`cipsi/selection_buffer.irp.f` + + .. code:: fortran + + subroutine sort_selection_buffer(b) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_int` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`add_to_selection_buffer` + * :c:func:`pt2_collector` + * :c:func:`run_pt2_slave` + * :c:func:`run_selection_slave` + * :c:func:`selection_collector` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`check_mem` + * :c:func:`dsort` + + +.. c:function:: splash_pq: + + + File : :file:`cipsi/selection.irp.f` + + .. code:: fortran + + subroutine splash_pq(mask, sp, det, i_gen, N_sel, bannedOrb, banned, mat, interesting) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`psi_selectors_coef_transp` + * :c:data:`n_states` + * :c:data:`psi_det_sorted` + * :c:data:`n_int` + * :c:data:`mo_num` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`select_singles_and_doubles` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`bitstring_to_list_in_selection` + * :c:func:`get_d0` + * :c:func:`get_d1` + * :c:func:`get_d2` + * :c:func:`get_mask_phase` + * :c:func:`past_d1` + * :c:func:`past_d2` + + +.. c:function:: spot_isinwf: + + + File : :file:`cipsi/selection.irp.f` + + .. code:: fortran + + subroutine spot_isinwf(mask, det, i_gen, N, banned, fullMatch, interesting) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_int` + * :c:data:`mo_num` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`select_singles_and_doubles` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`bitstring_to_list_in_selection` + + +.. c:function:: testteethbuilding: + + + File : :file:`cipsi/pt2_stoch_routines.irp.f` + + .. code:: fortran + + logical function testTeethBuilding(minF, N) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`pt2_stoch_istate` + * :c:data:`n_det_generators` + * :c:data:`psi_det_sorted_gen` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`check_mem` + + +.. c:function:: zmq_pt2: + + + File : :file:`cipsi/pt2_stoch_routines.irp.f` + + .. code:: fortran + + subroutine ZMQ_pt2(E, pt2,relative_error, error, variance, norm, N_in) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`psi_det_sorted` + * :c:data:`pt2_stoch_istate` + * :c:data:`psi_selectors` + * :c:data:`psi_bilinear_matrix_values` + * :c:data:`psi_det_alpha_unique` + * :c:data:`pt2_e0_denominator` + * :c:data:`pt2_n_teeth` + * :c:data:`psi_selectors_coef_transp` + * :c:data:`n_det` + * :c:data:`s2_eig` + * :c:data:`pt2_j` + * :c:data:`mo_two_e_integrals_in_map` + * :c:data:`psi_bilinear_matrix_transp_values` + * :c:data:`state_average_weight` + * :c:data:`mo_num` + * :c:data:`nthreads_pt2` + * :c:data:`psi_bilinear_matrix_values` + * :c:data:`mo_one_e_integrals` + * :c:data:`elec_alpha_num` + * :c:data:`nproc` + * :c:data:`psi_bilinear_matrix_columns_loc` + * :c:data:`threshold_generators` + * :c:data:`psi_det_beta_unique` + * :c:data:`qp_max_mem` + * :c:data:`psi_bilinear_matrix_transp_rows_loc` + * :c:data:`n_states` + * :c:data:`pt2_f` + * :c:data:`n_det_generators` + * :c:data:`psi_bilinear_matrix_transp_values` + * :c:data:`n_int` + * :c:data:`pt2_j` + * :c:data:`psi_det_sorted` + * :c:data:`pt2_w` + * :c:data:`pt2_u` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`run_cipsi` + * :c:func:`run_stochastic_cipsi` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`check_mem` + * :c:func:`create_selection_buffer` + * :c:func:`delete_selection_buffer` + * :c:func:`end_parallel_job` + * :c:func:`fill_h_apply_buffer_no_selection` + * :c:func:`make_selection_buffer_s2` + * :c:func:`new_parallel_job` + * :c:func:`omp_set_nested` + * :c:func:`pt2_collector` + * :c:func:`pt2_slave_inproc` + * :c:func:`remove_duplicates_in_selection_buffer` + * :c:func:`resident_memory` + * :c:func:`write_double` + * :c:func:`write_int` + * :c:func:`zmq_selection` + + Touches: + + .. hlist:: + :columns: 3 + + * :c:data:`n_det` + * :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:`pt2_stoch_istate` + * :c:data:`state_average_weight` + + +.. c:function:: zmq_selection: + + + File : :file:`cipsi/zmq_selection.irp.f` + + .. code:: fortran + + subroutine ZMQ_selection(N_in, pt2, variance, norm) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`psi_det_sorted` + * :c:data:`psi_selectors` + * :c:data:`psi_bilinear_matrix_values` + * :c:data:`n_det` + * :c:data:`psi_bilinear_matrix_columns_loc` + * :c:data:`n_det_selectors` + * :c:data:`psi_det_alpha_unique` + * :c:data:`psi_bilinear_matrix_transp_values` + * :c:data:`state_average_weight` + * :c:data:`psi_bilinear_matrix_values` + * :c:data:`pt2_e0_denominator` + * :c:data:`do_pt2` + * :c:data:`nproc` + * :c:data:`s2_eig` + * :c:data:`threshold_generators` + * :c:data:`psi_det_beta_unique` + * :c:data:`qp_max_mem` + * :c:data:`psi_bilinear_matrix_transp_rows_loc` + * :c:data:`n_states` + * :c:data:`pt2_f` + * :c:data:`n_det_generators` + * :c:data:`psi_bilinear_matrix_transp_values` + * :c:data:`n_int` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`run_cipsi` + * :c:func:`zmq_pt2` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`copy_h_apply_buffer_to_wf` + * :c:func:`create_selection_buffer` + * :c:func:`delete_selection_buffer` + * :c:func:`end_parallel_job` + * :c:func:`fill_h_apply_buffer_no_selection` + * :c:func:`make_selection_buffer_s2` + * :c:func:`new_parallel_job` + * :c:func:`save_wavefunction` + * :c:func:`selection_collector` + * :c:func:`selection_slave_inproc` + * :c:func:`write_double` + + Touches: + + .. hlist:: + :columns: 3 + + * :c:data:`n_det` + * :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` + diff --git a/doc/_sources/modules/cis.rst.txt b/doc/_sources/modules/cis.rst.txt new file mode 100644 index 00000000..10700afb --- /dev/null +++ b/doc/_sources/modules/cis.rst.txt @@ -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` + diff --git a/doc/_sources/modules/cisd.rst.txt b/doc/_sources/modules/cisd.rst.txt new file mode 100644 index 00000000..7816de30 --- /dev/null +++ b/doc/_sources/modules/cisd.rst.txt @@ -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` + diff --git a/doc/_sources/modules/davidson.rst.txt b/doc/_sources/modules/davidson.rst.txt new file mode 100644 index 00000000..b29d42ff --- /dev/null +++ b/doc/_sources/modules/davidson.rst.txt @@ -0,0 +1,1799 @@ +.. _module_davidson: + +.. program:: davidson + +.. default-role:: option + +======== +davidson +======== + +Abstract module for Davidson's diagonalization. +It contains everything required for the Davidson algorithm, dressed or not. If +a dressing is used, the dressing column should be defined and the +:ref:`davidson_dressed` module should be used. If no dressing is required, +the :ref:`davidson` module should be used, and it has a default zero dressing vector. + +The important providers for that module are: + +# `psi_energy` which is the expectation value over the wave function (`psi_det`, `psi_coef`) of the Hamiltonian, dressed or not. It uses the general subroutine `u_0_H_u_0`. +# `psi_energy_two_e` which is the expectation value over the wave function (`psi_det`, `psi_coef`) of the standard two-electrons coulomb operator. It uses the general routine `u_0_H_u_0_two_e`. + + + +EZFIO parameters +---------------- + +.. option:: threshold_davidson + + Thresholds of Davidson's algorithm + + Default: 1.e-10 + +.. option:: n_states_diag + + Number of states to consider during the Davdison diagonalization + + Default: 4 + +.. option:: davidson_sze_max + + Number of micro-iterations before re-contracting + + Default: 8 + +.. option:: state_following + + If |true|, the states are re-ordered to match the input states + + Default: False + +.. option:: disk_based_davidson + + If |true|, a memory-mapped file may be used to store the W and S2 vectors if not enough RAM is available + + Default: True + +.. option:: distributed_davidson + + If |true|, use the distributed algorithm + + Default: True + +.. option:: only_expected_s2 + + If |true|, use filter out all vectors with bad |S^2| values + + Default: True + + +Providers +--------- + +.. c:var:: ci_eigenvectors + + + File : :file:`davidson/diagonalize_ci.irp.f` + + .. code:: fortran + + double precision, allocatable :: ci_electronic_energy (N_states_diag) + double precision, allocatable :: ci_eigenvectors (N_det,N_states_diag) + double precision, allocatable :: ci_s2 (N_states_diag) + + + Eigenvectors/values of the |CI| matrix + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`diag_algorithm` + * :c:data:`dressing_column_h` + * :c:data:`expected_s2` + * :c:data:`h_matrix_all_dets` + * :c:data:`mo_two_e_integrals_in_map` + * :c:data:`n_det` + * :c:data:`n_int` + * :c:data:`n_states` + * :c:data:`n_states_diag` + * :c:data:`nthreads_davidson` + * :c:data:`psi_coef` + * :c:data:`psi_det` + * :c:data:`s2_eig` + * :c:data:`s2_matrix_all_dets` + * :c:data:`s_z` + * :c:data:`threshold_davidson` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ci_energy` + + +.. c:var:: ci_electronic_energy + + + File : :file:`davidson/diagonalize_ci.irp.f` + + .. code:: fortran + + double precision, allocatable :: ci_electronic_energy (N_states_diag) + double precision, allocatable :: ci_eigenvectors (N_det,N_states_diag) + double precision, allocatable :: ci_s2 (N_states_diag) + + + Eigenvectors/values of the |CI| matrix + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`diag_algorithm` + * :c:data:`dressing_column_h` + * :c:data:`expected_s2` + * :c:data:`h_matrix_all_dets` + * :c:data:`mo_two_e_integrals_in_map` + * :c:data:`n_det` + * :c:data:`n_int` + * :c:data:`n_states` + * :c:data:`n_states_diag` + * :c:data:`nthreads_davidson` + * :c:data:`psi_coef` + * :c:data:`psi_det` + * :c:data:`s2_eig` + * :c:data:`s2_matrix_all_dets` + * :c:data:`s_z` + * :c:data:`threshold_davidson` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ci_energy` + + +.. c:var:: ci_energy + + + File : :file:`davidson/diagonalize_ci.irp.f` + + .. code:: fortran + + double precision, allocatable :: ci_energy (N_states_diag) + + + :c:data:`n_states` lowest eigenvalues of the |CI| matrix + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ci_electronic_energy` + * :c:data:`mpi_master` + * :c:data:`n_det` + * :c:data:`n_states` + * :c:data:`n_states_diag` + * :c:data:`nuclear_repulsion` + * :c:data:`output_wall_time_0` + + + +.. c:var:: ci_s2 + + + File : :file:`davidson/diagonalize_ci.irp.f` + + .. code:: fortran + + double precision, allocatable :: ci_electronic_energy (N_states_diag) + double precision, allocatable :: ci_eigenvectors (N_det,N_states_diag) + double precision, allocatable :: ci_s2 (N_states_diag) + + + Eigenvectors/values of the |CI| matrix + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`diag_algorithm` + * :c:data:`dressing_column_h` + * :c:data:`expected_s2` + * :c:data:`h_matrix_all_dets` + * :c:data:`mo_two_e_integrals_in_map` + * :c:data:`n_det` + * :c:data:`n_int` + * :c:data:`n_states` + * :c:data:`n_states_diag` + * :c:data:`nthreads_davidson` + * :c:data:`psi_coef` + * :c:data:`psi_det` + * :c:data:`s2_eig` + * :c:data:`s2_matrix_all_dets` + * :c:data:`s_z` + * :c:data:`threshold_davidson` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ci_energy` + + +.. c:var:: davidson_criterion + + + File : :file:`davidson/parameters.irp.f` + + .. code:: fortran + + character(64) :: davidson_criterion + + + Can be : [ energy | residual | both | wall_time | cpu_time | iterations ] + + + +.. c:var:: dressed_column_idx + + + File : :file:`davidson/diagonalization_hs2_dressed.irp.f` + + .. code:: fortran + + integer, allocatable :: dressed_column_idx (N_states) + + + Index of the dressed columns + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_det` + * :c:data:`n_states` + * :c:data:`psi_coef` + + + +.. c:var:: n_states_diag + + + File : :file:`davidson/input.irp.f` + + .. code:: fortran + + integer :: n_states_diag + + + Number of states to consider during the Davdison diagonalization + + 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:`ci_electronic_energy` + * :c:data:`ci_energy` + * :c:data:`psi_energy` + + +.. c:var:: nthreads_davidson + + + File : :file:`davidson/davidson_parallel.irp.f` + + .. code:: fortran + + integer :: nthreads_davidson + + + Number of threads for Davidson + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mpi_master` + * :c:data:`nproc` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ci_electronic_energy` + + +.. c:var:: psi_energy + + + File : :file:`davidson/u0_h_u0.irp.f` + + .. code:: fortran + + double precision, allocatable :: psi_energy (N_states) + double precision, allocatable :: psi_s2 (N_states) + + + psi_energy(i) = :math:`\langle \Psi_i | H | \Psi_i \rangle` + + psi_s2(i) = :math:`\langle \Psi_i | S^2 | \Psi_i \rangle` + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`distributed_davidson` + * :c:data:`n_det` + * :c:data:`n_int` + * :c:data:`n_states` + * :c:data:`n_states_diag` + * :c:data:`psi_coef` + * :c:data:`psi_det` + * :c:data:`psi_det_size` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`psi_energy_two_e` + * :c:data:`psi_energy_with_nucl_rep` + * :c:data:`pt2_e0_denominator` + + +.. c:var:: psi_energy_two_e + + + File : :file:`davidson/u0_wee_u0.irp.f` + + .. code:: fortran + + double precision, allocatable :: psi_energy_two_e (N_states) + + + Energy of the current wave function + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_det` + * :c:data:`n_int` + * :c:data:`n_states` + * :c:data:`psi_coef` + * :c:data:`psi_det` + * :c:data:`psi_det_size` + * :c:data:`psi_energy` + + + +.. c:var:: psi_energy_with_nucl_rep + + + File : :file:`davidson/u0_h_u0.irp.f` + + .. code:: fortran + + double precision, allocatable :: psi_energy_with_nucl_rep (N_states) + + + Energy of the wave function with the nuclear repulsion energy. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_states` + * :c:data:`nuclear_repulsion` + * :c:data:`psi_energy` + + + +.. c:var:: psi_s2 + + + File : :file:`davidson/u0_h_u0.irp.f` + + .. code:: fortran + + double precision, allocatable :: psi_energy (N_states) + double precision, allocatable :: psi_s2 (N_states) + + + psi_energy(i) = :math:`\langle \Psi_i | H | \Psi_i \rangle` + + psi_s2(i) = :math:`\langle \Psi_i | S^2 | \Psi_i \rangle` + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`distributed_davidson` + * :c:data:`n_det` + * :c:data:`n_int` + * :c:data:`n_states` + * :c:data:`n_states_diag` + * :c:data:`psi_coef` + * :c:data:`psi_det` + * :c:data:`psi_det_size` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`psi_energy_two_e` + * :c:data:`psi_energy_with_nucl_rep` + * :c:data:`pt2_e0_denominator` + + + +Subroutines / functions +----------------------- + +.. c:function:: davidson_collector: + + + File : :file:`davidson/davidson_parallel.irp.f` + + .. code:: fortran + + subroutine davidson_collector(zmq_to_qp_run_socket, zmq_socket_pull, v0, s0, sze, N_st) + + + Routine collecting the results of the workers in Davidson's algorithm. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_det` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`h_s2_u_0_nstates_zmq` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`davidson_pull_results` + + +.. c:function:: davidson_converged: + + + File : :file:`davidson/parameters.irp.f` + + .. code:: fortran + + subroutine davidson_converged(energy,residual,wall,iterations,cpu,N_st,converged) + + + True if the Davidson algorithm is converged + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`threshold_davidson` + * :c:data:`davidson_criterion` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`davidson_diag_hjj_sjj` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`cpu_time` + * :c:func:`wall_time` + + +.. c:function:: davidson_diag_hjj_sjj: + + + File : :file:`davidson/diagonalization_hs2_dressed.irp.f` + + .. code:: fortran + + subroutine davidson_diag_hjj_sjj(dets_in,u_in,H_jj,s2_out,energies,dim_in,sze,N_st,N_st_diag_in,Nint,dressing_state,converged) + + + Davidson diagonalization with specific diagonal elements of the H matrix + + H_jj : specific diagonal H matrix elements to diagonalize de Davidson + + S2_out : Output : s^2 + + dets_in : bitmasks corresponding to determinants + + u_in : guess coefficients on the various states. Overwritten + on exit + + dim_in : leftmost dimension of u_in + + sze : Number of determinants + + N_st : Number of eigenstates + + N_st_diag_in : Number of states in which H is diagonalized. Assumed > sze + + Initial guess vectors are not necessarily orthonormal + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`psi_bilinear_matrix_order_reverse` + * :c:data:`psi_bilinear_matrix_values` + * :c:data:`nthreads_davidson` + * :c:data:`psi_coef` + * :c:data:`dressed_column_idx` + * :c:data:`expected_s2` + * :c:data:`s_z` + * :c:data:`n_det` + * :c:data:`dressing_column_h` + * :c:data:`ezfio_work_dir` + * :c:data:`davidson_sze_max` + * :c:data:`state_following` + * :c:data:`psi_det_alpha_unique` + * :c:data:`nuclear_repulsion` + * :c:data:`nproc` + * :c:data:`qp_max_mem` + * :c:data:`disk_based_davidson` + * :c:data:`s2_eig` + * :c:data:`psi_det_beta_unique` + * :c:data:`only_expected_s2` + * :c:data:`distributed_davidson` + * :c:data:`n_states` + * :c:data:`n_int` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`davidson_diag_hs2` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`c_f_pointer` + * :c:func:`check_mem` + * :c:func:`cpu_time` + * :c:func:`davidson_converged` + * :c:func:`dgemm` + * :c:func:`dswap` + * :c:func:`h_s2_u_0_nstates_openmp` + * :c:func:`h_s2_u_0_nstates_zmq` + * :c:func:`lapack_diag` + * :c:func:`mmap` + * :c:func:`munmap` + * :c:func:`normalize` + * :c:func:`ortho_qr` + * :c:func:`random_number` + * :c:func:`resident_memory` + * :c:func:`sgemm` + * :c:func:`wall_time` + * :c:func:`write_double` + * :c:func:`write_int` + * :c:func:`write_time` + + Touches: + + .. hlist:: + :columns: 3 + + * :c:data:`n_states_diag` + * :c:data:`nthreads_davidson` + + +.. c:function:: davidson_diag_hs2: + + + File : :file:`davidson/diagonalization_hs2_dressed.irp.f` + + .. code:: fortran + + subroutine davidson_diag_hs2(dets_in,u_in,s2_out,dim_in,energies,sze,N_st,N_st_diag,Nint,dressing_state,converged) + + + Davidson diagonalization. + + dets_in : bitmasks corresponding to determinants + + u_in : guess coefficients on the various states. Overwritten + on exit + + dim_in : leftmost dimension of u_in + + sze : Number of determinants + + N_st : Number of eigenstates + + Initial guess vectors are not necessarily orthonormal + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`dressing_column_h` + * :c:data:`mo_two_e_integrals_in_map` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:data:`ci_electronic_energy` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`davidson_diag_hjj_sjj` + + Touches: + + .. hlist:: + :columns: 3 + + * :c:data:`n_states_diag` + * :c:data:`nthreads_davidson` + + +.. c:function:: davidson_pull_results: + + + File : :file:`davidson/davidson_parallel.irp.f` + + .. code:: fortran + + subroutine davidson_pull_results(zmq_socket_pull, v_t, s_t, imin, imax, task_id) + + + Pull the results of $H|U \rangle$ on the master. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_states_diag` + * :c:data:`n_det` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`davidson_collector` + + +.. c:function:: davidson_push_results: + + + File : :file:`davidson/davidson_parallel.irp.f` + + .. code:: fortran + + subroutine davidson_push_results(zmq_socket_push, v_t, s_t, imin, imax, task_id) + + + Push the results of $H|U \rangle$ from a worker to the master. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_states_diag` + * :c:data:`n_det` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`davidson_slave_work` + + +.. c:function:: davidson_run_slave: + + + File : :file:`davidson/davidson_parallel.irp.f` + + .. code:: fortran + + subroutine davidson_run_slave(thread,iproc) + + + Slave routine for Davidson's diagonalization. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_states_diag` + * :c:data:`n_det` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`davidson_slave_inproc` + * :c:func:`davidson_slave_tcp` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`davidson_slave_work` + * :c:func:`end_zmq_push_socket` + * :c:func:`end_zmq_to_qp_run_socket` + * :c:func:`sleep` + + +.. c:function:: davidson_slave_inproc: + + + File : :file:`davidson/davidson_parallel.irp.f` + + .. code:: fortran + + subroutine davidson_slave_inproc(i) + + + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`h_s2_u_0_nstates_zmq` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`davidson_run_slave` + + +.. c:function:: davidson_slave_tcp: + + + File : :file:`davidson/davidson_parallel.irp.f` + + .. code:: fortran + + subroutine davidson_slave_tcp(i) + + + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`run_slave_main` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`davidson_run_slave` + + +.. c:function:: davidson_slave_work: + + + File : :file:`davidson/davidson_parallel.irp.f` + + .. code:: fortran + + subroutine davidson_slave_work(zmq_to_qp_run_socket, zmq_socket_push, N_st, sze, worker_id) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`psi_det_beta_unique` + * :c:data:`psi_bilinear_matrix_order_transp_reverse` + * :c:data:`psi_det_alpha_unique` + * :c:data:`mpi_initialized` + * :c:data:`n_det` + * :c:data:`psi_bilinear_matrix_transp_values` + * :c:data:`psi_bilinear_matrix_values` + * :c:data:`nproc` + * :c:data:`ref_bitmask_energy` + * :c:data:`psi_bilinear_matrix_columns_loc` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`davidson_run_slave` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`davidson_push_results` + * :c:func:`h_s2_u_0_nstates_openmp_work` + * :c:func:`sleep` + + +.. c:function:: diagonalize_ci: + + + File : :file:`davidson/diagonalize_ci.irp.f` + + .. code:: fortran + + subroutine diagonalize_CI + + + Replace the coefficients of the |CI| states by the coefficients of the + eigenstates of the |CI| matrix. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`psi_coef` + * :c:data:`ci_electronic_energy` + * :c:data:`n_states` + * :c:data:`n_det` + * :c:data:`ci_electronic_energy` + * :c:data:`ci_energy` + * :c:data:`ci_electronic_energy` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`remove_small_contributions` + * :c:func:`run_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:`psi_coef` + + +.. c:function:: h_s2_u_0_nstates_openmp: + + + File : :file:`davidson/u0_h_u0.irp.f` + + .. code:: fortran + + subroutine H_S2_u_0_nstates_openmp(v_0,s_0,u_0,N_st,sze) + + + Computes $v_0 = H|u_0\rangle$ and $s_0 = S^2 |u_0\rangle$. + + Assumes that the determinants are in psi_det + + istart, iend, ishift, istep are used in ZMQ parallelization. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`psi_bilinear_matrix_order_reverse` + * :c:data:`psi_bilinear_matrix_values` + * :c:data:`n_det` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`davidson_diag_hjj_sjj` + * :c:func:`u_0_h_u_0` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`dset_order` + * :c:func:`dtranspose` + * :c:func:`h_s2_u_0_nstates_openmp_work` + + +.. c:function:: h_s2_u_0_nstates_openmp_work: + + + File : :file:`davidson/u0_h_u0.irp.f` + + .. code:: fortran + + subroutine H_S2_u_0_nstates_openmp_work(v_t,s_t,u_t,N_st,sze,istart,iend,ishift,istep) + + + Computes $v_t = H|u_t\rangle$ and $s_t = S^2 |u_t\rangle$ + + Default should be 1,N_det,0,1 + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ref_bitmask_energy` + * :c:data:`n_det` + * :c:data:`n_int` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`davidson_slave_work` + * :c:func:`h_s2_u_0_nstates_openmp` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`h_s2_u_0_nstates_openmp_work_1` + * :c:func:`h_s2_u_0_nstates_openmp_work_2` + * :c:func:`h_s2_u_0_nstates_openmp_work_3` + * :c:func:`h_s2_u_0_nstates_openmp_work_4` + * :c:func:`h_s2_u_0_nstates_openmp_work_n_int` + + +.. c:function:: h_s2_u_0_nstates_openmp_work_1: + + + File : :file:`davidson/u0_h_u0.irp.f_template_631` + + .. code:: fortran + + subroutine H_S2_u_0_nstates_openmp_work_1(v_t,s_t,u_t,N_st,sze,istart,iend,ishift,istep) + + + Computes $v_t = H|u_t angle$ and $s_t = S^2 |u_t angle$ + + Default should be 1,N_det,0,1 + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`psi_det_beta_unique` + * :c:data:`psi_bilinear_matrix_order_transp_reverse` + * :c:data:`psi_det_alpha_unique` + * :c:data:`psi_bilinear_matrix_transp_rows_loc` + * :c:data:`singles_beta_csc` + * :c:data:`n_det` + * :c:data:`psi_bilinear_matrix_transp_values` + * :c:data:`nthreads_davidson` + * :c:data:`psi_bilinear_matrix_values` + * :c:data:`n_int` + * :c:data:`singles_beta_csc_idx` + * :c:data:`psi_bilinear_matrix_columns_loc` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`h_s2_u_0_nstates_openmp_work` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`get_all_spin_singles_1` + * :c:func:`get_all_spin_singles_and_doubles_1` + * :c:func:`get_s2` + * :c:func:`i_h_j_double_alpha_beta` + * :c:func:`i_h_j_double_spin` + * :c:func:`i_h_j_mono_spin` + + +.. c:function:: h_s2_u_0_nstates_openmp_work_2: + + + File : :file:`davidson/u0_h_u0.irp.f_template_631` + + .. code:: fortran + + subroutine H_S2_u_0_nstates_openmp_work_2(v_t,s_t,u_t,N_st,sze,istart,iend,ishift,istep) + + + Computes $v_t = H|u_t angle$ and $s_t = S^2 |u_t angle$ + + Default should be 1,N_det,0,1 + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`psi_det_beta_unique` + * :c:data:`psi_bilinear_matrix_order_transp_reverse` + * :c:data:`psi_det_alpha_unique` + * :c:data:`psi_bilinear_matrix_transp_rows_loc` + * :c:data:`singles_beta_csc` + * :c:data:`n_det` + * :c:data:`psi_bilinear_matrix_transp_values` + * :c:data:`nthreads_davidson` + * :c:data:`psi_bilinear_matrix_values` + * :c:data:`n_int` + * :c:data:`singles_beta_csc_idx` + * :c:data:`psi_bilinear_matrix_columns_loc` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`h_s2_u_0_nstates_openmp_work` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`get_all_spin_singles_2` + * :c:func:`get_all_spin_singles_and_doubles_2` + * :c:func:`get_s2` + * :c:func:`i_h_j_double_alpha_beta` + * :c:func:`i_h_j_double_spin` + * :c:func:`i_h_j_mono_spin` + + +.. c:function:: h_s2_u_0_nstates_openmp_work_3: + + + File : :file:`davidson/u0_h_u0.irp.f_template_631` + + .. code:: fortran + + subroutine H_S2_u_0_nstates_openmp_work_3(v_t,s_t,u_t,N_st,sze,istart,iend,ishift,istep) + + + Computes $v_t = H|u_t angle$ and $s_t = S^2 |u_t angle$ + + Default should be 1,N_det,0,1 + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`psi_det_beta_unique` + * :c:data:`psi_bilinear_matrix_order_transp_reverse` + * :c:data:`psi_det_alpha_unique` + * :c:data:`psi_bilinear_matrix_transp_rows_loc` + * :c:data:`singles_beta_csc` + * :c:data:`n_det` + * :c:data:`psi_bilinear_matrix_transp_values` + * :c:data:`nthreads_davidson` + * :c:data:`psi_bilinear_matrix_values` + * :c:data:`n_int` + * :c:data:`singles_beta_csc_idx` + * :c:data:`psi_bilinear_matrix_columns_loc` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`h_s2_u_0_nstates_openmp_work` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`get_all_spin_singles_3` + * :c:func:`get_all_spin_singles_and_doubles_3` + * :c:func:`get_s2` + * :c:func:`i_h_j_double_alpha_beta` + * :c:func:`i_h_j_double_spin` + * :c:func:`i_h_j_mono_spin` + + +.. c:function:: h_s2_u_0_nstates_openmp_work_4: + + + File : :file:`davidson/u0_h_u0.irp.f_template_631` + + .. code:: fortran + + subroutine H_S2_u_0_nstates_openmp_work_4(v_t,s_t,u_t,N_st,sze,istart,iend,ishift,istep) + + + Computes $v_t = H|u_t angle$ and $s_t = S^2 |u_t angle$ + + Default should be 1,N_det,0,1 + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`psi_det_beta_unique` + * :c:data:`psi_bilinear_matrix_order_transp_reverse` + * :c:data:`psi_det_alpha_unique` + * :c:data:`psi_bilinear_matrix_transp_rows_loc` + * :c:data:`singles_beta_csc` + * :c:data:`n_det` + * :c:data:`psi_bilinear_matrix_transp_values` + * :c:data:`nthreads_davidson` + * :c:data:`psi_bilinear_matrix_values` + * :c:data:`n_int` + * :c:data:`singles_beta_csc_idx` + * :c:data:`psi_bilinear_matrix_columns_loc` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`h_s2_u_0_nstates_openmp_work` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`get_all_spin_singles_4` + * :c:func:`get_all_spin_singles_and_doubles_4` + * :c:func:`get_s2` + * :c:func:`i_h_j_double_alpha_beta` + * :c:func:`i_h_j_double_spin` + * :c:func:`i_h_j_mono_spin` + + +.. c:function:: h_s2_u_0_nstates_openmp_work_n_int: + + + File : :file:`davidson/u0_h_u0.irp.f_template_631` + + .. code:: fortran + + subroutine H_S2_u_0_nstates_openmp_work_N_int(v_t,s_t,u_t,N_st,sze,istart,iend,ishift,istep) + + + Computes $v_t = H|u_t angle$ and $s_t = S^2 |u_t angle$ + + Default should be 1,N_det,0,1 + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`psi_det_beta_unique` + * :c:data:`psi_bilinear_matrix_order_transp_reverse` + * :c:data:`psi_det_alpha_unique` + * :c:data:`psi_bilinear_matrix_transp_rows_loc` + * :c:data:`singles_beta_csc` + * :c:data:`n_det` + * :c:data:`psi_bilinear_matrix_transp_values` + * :c:data:`nthreads_davidson` + * :c:data:`psi_bilinear_matrix_values` + * :c:data:`n_int` + * :c:data:`singles_beta_csc_idx` + * :c:data:`psi_bilinear_matrix_columns_loc` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`h_s2_u_0_nstates_openmp_work` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`get_all_spin_singles_and_doubles_n_int` + * :c:func:`get_all_spin_singles_n_int` + * :c:func:`get_s2` + * :c:func:`i_h_j_double_alpha_beta` + * :c:func:`i_h_j_double_spin` + * :c:func:`i_h_j_mono_spin` + + +.. c:function:: h_s2_u_0_nstates_zmq: + + + File : :file:`davidson/davidson_parallel.irp.f` + + .. code:: fortran + + subroutine H_S2_u_0_nstates_zmq(v_0,s_0,u_0,N_st,sze) + + + Computes $v_0 = H|u_0\rangle$ and $s_0 = S^2 |u_0\rangle$ + + n : number of determinants + + H_jj : array of $\langle j|H|j \rangle$ + + S2_jj : array of $\langle j|S^2|j \rangle$ + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`psi_det_beta_unique` + * :c:data:`psi_bilinear_matrix_order_transp_reverse` + * :c:data:`psi_det_alpha_unique` + * :c:data:`psi_bilinear_matrix_order_reverse` + * :c:data:`mpi_initialized` + * :c:data:`n_det` + * :c:data:`psi_bilinear_matrix_transp_values` + * :c:data:`psi_bilinear_matrix_values` + * :c:data:`nproc` + * :c:data:`ref_bitmask_energy` + * :c:data:`n_states_diag` + * :c:data:`psi_bilinear_matrix_columns_loc` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`davidson_diag_hjj_sjj` + * :c:func:`u_0_h_u_0` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`davidson_collector` + * :c:func:`davidson_slave_inproc` + * :c:func:`dset_order` + * :c:func:`dtranspose` + * :c:func:`end_parallel_job` + * :c:func:`new_parallel_job` + * :c:func:`omp_set_nested` + + Touches: + + .. hlist:: + :columns: 3 + + * :c:data:`n_states_diag` + + +.. c:function:: h_s2_u_0_two_e_nstates_openmp: + + + File : :file:`davidson/u0_wee_u0.irp.f` + + .. code:: fortran + + subroutine H_S2_u_0_two_e_nstates_openmp(v_0,s_0,u_0,N_st,sze) + + + Computes $v_0 = H|u_0\rangle$ and $s_0 = S^2 |u_0\rangle$ + + Assumes that the determinants are in psi_det + + istart, iend, ishift, istep are used in ZMQ parallelization. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`psi_bilinear_matrix_order_reverse` + * :c:data:`psi_bilinear_matrix_values` + * :c:data:`n_det` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`u_0_h_u_0_two_e` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`dset_order` + * :c:func:`dtranspose` + * :c:func:`h_s2_u_0_two_e_nstates_openmp_work` + + +.. c:function:: h_s2_u_0_two_e_nstates_openmp_work: + + + File : :file:`davidson/u0_wee_u0.irp.f` + + .. code:: fortran + + subroutine H_S2_u_0_two_e_nstates_openmp_work(v_t,s_t,u_t,N_st,sze,istart,iend,ishift,istep) + + + Computes $v_t = H|u_t\rangle$ and $s_t = S^2 |u_t\rangle$ + + Default should be 1,N_det,0,1 + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ref_bitmask_energy` + * :c:data:`n_det` + * :c:data:`n_int` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`h_s2_u_0_two_e_nstates_openmp` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`h_s2_u_0_two_e_nstates_openmp_work_1` + * :c:func:`h_s2_u_0_two_e_nstates_openmp_work_2` + * :c:func:`h_s2_u_0_two_e_nstates_openmp_work_3` + * :c:func:`h_s2_u_0_two_e_nstates_openmp_work_4` + * :c:func:`h_s2_u_0_two_e_nstates_openmp_work_n_int` + + +.. c:function:: h_s2_u_0_two_e_nstates_openmp_work_1: + + + File : :file:`davidson/u0_wee_u0.irp.f_template_457` + + .. code:: fortran + + subroutine H_S2_u_0_two_e_nstates_openmp_work_1(v_t,s_t,u_t,N_st,sze,istart,iend,ishift,istep) + + + Computes $v_t = H|u_t angle$ and $s_t = S^2 |u_t angle$ + + Default should be 1,N_det,0,1 + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`psi_det_beta_unique` + * :c:data:`psi_bilinear_matrix_order_transp_reverse` + * :c:data:`psi_det_alpha_unique` + * :c:data:`psi_bilinear_matrix_transp_rows_loc` + * :c:data:`n_det` + * :c:data:`psi_bilinear_matrix_transp_values` + * :c:data:`nthreads_davidson` + * :c:data:`psi_bilinear_matrix_values` + * :c:data:`n_int` + * :c:data:`psi_bilinear_matrix_columns_loc` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`h_s2_u_0_two_e_nstates_openmp_work` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`get_all_spin_singles_1` + * :c:func:`get_all_spin_singles_and_doubles_1` + * :c:func:`get_s2` + * :c:func:`i_h_j_double_alpha_beta` + * :c:func:`i_h_j_double_spin` + * :c:func:`i_wee_j_mono` + + +.. c:function:: h_s2_u_0_two_e_nstates_openmp_work_2: + + + File : :file:`davidson/u0_wee_u0.irp.f_template_457` + + .. code:: fortran + + subroutine H_S2_u_0_two_e_nstates_openmp_work_2(v_t,s_t,u_t,N_st,sze,istart,iend,ishift,istep) + + + Computes $v_t = H|u_t angle$ and $s_t = S^2 |u_t angle$ + + Default should be 1,N_det,0,1 + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`psi_det_beta_unique` + * :c:data:`psi_bilinear_matrix_order_transp_reverse` + * :c:data:`psi_det_alpha_unique` + * :c:data:`psi_bilinear_matrix_transp_rows_loc` + * :c:data:`n_det` + * :c:data:`psi_bilinear_matrix_transp_values` + * :c:data:`nthreads_davidson` + * :c:data:`psi_bilinear_matrix_values` + * :c:data:`n_int` + * :c:data:`psi_bilinear_matrix_columns_loc` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`h_s2_u_0_two_e_nstates_openmp_work` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`get_all_spin_singles_2` + * :c:func:`get_all_spin_singles_and_doubles_2` + * :c:func:`get_s2` + * :c:func:`i_h_j_double_alpha_beta` + * :c:func:`i_h_j_double_spin` + * :c:func:`i_wee_j_mono` + + +.. c:function:: h_s2_u_0_two_e_nstates_openmp_work_3: + + + File : :file:`davidson/u0_wee_u0.irp.f_template_457` + + .. code:: fortran + + subroutine H_S2_u_0_two_e_nstates_openmp_work_3(v_t,s_t,u_t,N_st,sze,istart,iend,ishift,istep) + + + Computes $v_t = H|u_t angle$ and $s_t = S^2 |u_t angle$ + + Default should be 1,N_det,0,1 + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`psi_det_beta_unique` + * :c:data:`psi_bilinear_matrix_order_transp_reverse` + * :c:data:`psi_det_alpha_unique` + * :c:data:`psi_bilinear_matrix_transp_rows_loc` + * :c:data:`n_det` + * :c:data:`psi_bilinear_matrix_transp_values` + * :c:data:`nthreads_davidson` + * :c:data:`psi_bilinear_matrix_values` + * :c:data:`n_int` + * :c:data:`psi_bilinear_matrix_columns_loc` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`h_s2_u_0_two_e_nstates_openmp_work` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`get_all_spin_singles_3` + * :c:func:`get_all_spin_singles_and_doubles_3` + * :c:func:`get_s2` + * :c:func:`i_h_j_double_alpha_beta` + * :c:func:`i_h_j_double_spin` + * :c:func:`i_wee_j_mono` + + +.. c:function:: h_s2_u_0_two_e_nstates_openmp_work_4: + + + File : :file:`davidson/u0_wee_u0.irp.f_template_457` + + .. code:: fortran + + subroutine H_S2_u_0_two_e_nstates_openmp_work_4(v_t,s_t,u_t,N_st,sze,istart,iend,ishift,istep) + + + Computes $v_t = H|u_t angle$ and $s_t = S^2 |u_t angle$ + + Default should be 1,N_det,0,1 + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`psi_det_beta_unique` + * :c:data:`psi_bilinear_matrix_order_transp_reverse` + * :c:data:`psi_det_alpha_unique` + * :c:data:`psi_bilinear_matrix_transp_rows_loc` + * :c:data:`n_det` + * :c:data:`psi_bilinear_matrix_transp_values` + * :c:data:`nthreads_davidson` + * :c:data:`psi_bilinear_matrix_values` + * :c:data:`n_int` + * :c:data:`psi_bilinear_matrix_columns_loc` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`h_s2_u_0_two_e_nstates_openmp_work` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`get_all_spin_singles_4` + * :c:func:`get_all_spin_singles_and_doubles_4` + * :c:func:`get_s2` + * :c:func:`i_h_j_double_alpha_beta` + * :c:func:`i_h_j_double_spin` + * :c:func:`i_wee_j_mono` + + +.. c:function:: h_s2_u_0_two_e_nstates_openmp_work_n_int: + + + File : :file:`davidson/u0_wee_u0.irp.f_template_457` + + .. code:: fortran + + subroutine H_S2_u_0_two_e_nstates_openmp_work_N_int(v_t,s_t,u_t,N_st,sze,istart,iend,ishift,istep) + + + Computes $v_t = H|u_t angle$ and $s_t = S^2 |u_t angle$ + + Default should be 1,N_det,0,1 + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`psi_det_beta_unique` + * :c:data:`psi_bilinear_matrix_order_transp_reverse` + * :c:data:`psi_det_alpha_unique` + * :c:data:`psi_bilinear_matrix_transp_rows_loc` + * :c:data:`n_det` + * :c:data:`psi_bilinear_matrix_transp_values` + * :c:data:`nthreads_davidson` + * :c:data:`psi_bilinear_matrix_values` + * :c:data:`n_int` + * :c:data:`psi_bilinear_matrix_columns_loc` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`h_s2_u_0_two_e_nstates_openmp_work` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`get_all_spin_singles_and_doubles_n_int` + * :c:func:`get_all_spin_singles_n_int` + * :c:func:`get_s2` + * :c:func:`i_h_j_double_alpha_beta` + * :c:func:`i_h_j_double_spin` + * :c:func:`i_wee_j_mono` + + +.. c:function:: u_0_h_u_0: + + + File : :file:`davidson/u0_h_u0.irp.f` + + .. code:: fortran + + subroutine u_0_H_u_0(e_0,s_0,u_0,n,keys_tmp,Nint,N_st,sze) + + + Computes $E_0 = \frac{\langle u_0|H|u_0 \rangle}{\langle u_0|u_0 \rangle}$ + + and $S_0 = \frac{\langle u_0|S^2|u_0 \rangle}{\langle u_0|u_0 \rangle}$ + + n : number of determinants + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_states_diag` + * :c:data:`n_states` + * :c:data:`distributed_davidson` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:data:`psi_energy` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`h_s2_u_0_nstates_openmp` + * :c:func:`h_s2_u_0_nstates_zmq` + + Touches: + + .. hlist:: + :columns: 3 + + * :c:data:`n_states_diag` + + +.. c:function:: u_0_h_u_0_two_e: + + + File : :file:`davidson/u0_wee_u0.irp.f` + + .. code:: fortran + + subroutine u_0_H_u_0_two_e(e_0,u_0,n,keys_tmp,Nint,N_st,sze) + + + Computes $E_0 = \frac{ \langle u_0|H|u_0\rangle}{\langle u_0|u_0 \rangle}$. + + n : number of determinants + + + Called by: + + .. hlist:: + :columns: 3 + + * :c:data:`psi_energy_two_e` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`h_s2_u_0_two_e_nstates_openmp` + + +.. c:function:: zmq_get_n_states_diag: + + + File : :file:`davidson/davidson_parallel.irp.f` + + .. code:: fortran + + integer function zmq_get_N_states_diag(zmq_to_qp_run_socket, worker_id) + + + Get N_states_diag from the qp_run scheduler + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_states_diag` + * :c:data:`zmq_state` + * :c:data:`mpi_master` + + Touches: + + .. hlist:: + :columns: 3 + + * :c:data:`n_states_diag` + + +.. c:function:: zmq_put_n_states_diag: + + + File : :file:`davidson/davidson_parallel.irp.f` + + .. code:: fortran + + integer function zmq_put_N_states_diag(zmq_to_qp_run_socket,worker_id) + + + Put N_states_diag on the qp_run scheduler + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_states_diag` + * :c:data:`zmq_state` + diff --git a/doc/_sources/modules/davidson_dressed.rst.txt b/doc/_sources/modules/davidson_dressed.rst.txt new file mode 100644 index 00000000..38d8fc1e --- /dev/null +++ b/doc/_sources/modules/davidson_dressed.rst.txt @@ -0,0 +1,13 @@ +.. _module_davidson_dressed: + +.. program:: davidson_dressed + +.. default-role:: option + +================ +davidson_dressed +================ + +Davidson with single-column dressing. + + diff --git a/doc/_sources/modules/davidson_undressed.rst.txt b/doc/_sources/modules/davidson_undressed.rst.txt new file mode 100644 index 00000000..326f48d9 --- /dev/null +++ b/doc/_sources/modules/davidson_undressed.rst.txt @@ -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` + diff --git a/doc/_sources/modules/density_for_dft.rst.txt b/doc/_sources/modules/density_for_dft.rst.txt new file mode 100644 index 00000000..28708f69 --- /dev/null +++ b/doc/_sources/modules/density_for_dft.rst.txt @@ -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` + diff --git a/doc/_sources/modules/determinants.rst.txt b/doc/_sources/modules/determinants.rst.txt new file mode 100644 index 00000000..e6f1ddd7 --- /dev/null +++ b/doc/_sources/modules/determinants.rst.txt @@ -0,0 +1,7922 @@ +.. _module_determinants: + +.. program:: determinants + +.. default-role:: option + +============ +determinants +============ + +Contains everything for the computation of the Hamiltonian matrix elements in the basis of orthogonal Slater determinants built on a restricted spin-orbitals basis. + +The main providers for this module are: + +* :option:`determinants n_states`: number of states to be computed +* `psi_det`: list of determinants in the wave function used in many routines/providers of the |QP|. +* `psi_coef`: list of coefficients, for all :option:`determinants n_states` states, and all determinants. + +The main routines for this module are: + +* `i_H_j`: computes the Hamiltonian matrix element between two arbitrary Slater determinants. +* `i_H_j_s2`: computes the Hamiltonian and (:math:`S^2`) matrix element between two arbitrary Slater determinants. +* `i_H_j_verbose`: returns the decomposition in terms of one- and two-body components of the Hamiltonian matrix elements between two arbitrary Slater determinants. Also return the fermionic phase factor. +* `i_H_psi`: computes the Hamiltonian matrix element between an arbitrary Slater determinant and a wave function composed of a sum of arbitrary Slater determinants. + + +For an example of how to use these routines and providers, take a look at :file:`example.irp.f`. + + + +EZFIO parameters +---------------- + +.. option:: n_det_max + + Maximum number of determinants in the wave function + + Default: 1000000 + +.. option:: n_det_print_wf + + Maximum number of determinants to be printed with the program print_wf + + Default: 10000 + +.. option:: n_det_max_full + + Maximum number of determinants where |H| is fully diagonalized + + Default: 1000 + +.. option:: n_states + + Number of states to consider + + Default: 1 + +.. option:: read_wf + + If |true|, read the wave function from the |EZFIO| file + + Default: False + +.. option:: s2_eig + + Force the wave function to be an eigenfunction of |S^2| + + Default: True + +.. option:: used_weight + + Weight used in the calculation of the one-electron density matrix. 0: 1./(c_0^2), 1: 1/N_states, 2: input state-average weight, 3: 1/(Norm_L3(Psi)) + + Default: 1 + +.. option:: threshold_generators + + Thresholds on generators (fraction of the square of the norm) + + Default: 0.99 + +.. option:: n_int + + Number of integers required to represent bitstrings (set in module :ref:`bitmask`) + + +.. option:: bit_kind + + (set in module :ref:`bitmask`) + + +.. option:: mo_label + + Label of the |MOs| on which the determinants are expressed + + +.. option:: n_det + + Number of determinants in the current wave function + + +.. option:: psi_coef + + Coefficients of the wave function + + +.. option:: psi_det + + Determinants of the variational space + + +.. option:: expected_s2 + + Expected value of |S^2| + + +.. option:: target_energy + + Energy that should be obtained when truncating the wave function (optional) + + Default: 0. + +.. option:: state_average_weight + + Weight of the states in state-average calculations. + + + +Providers +--------- + +.. c:var:: abs_psi_coef_max + + + File : :file:`determinants/determinants.irp.f` + + .. code:: fortran + + double precision, allocatable :: psi_coef_max (N_states) + double precision, allocatable :: psi_coef_min (N_states) + double precision, allocatable :: abs_psi_coef_max (N_states) + double precision, allocatable :: abs_psi_coef_min (N_states) + + + Max and min values of the coefficients + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mpi_master` + * :c:data:`n_states` + * :c:data:`psi_coef` + + + +.. c:var:: abs_psi_coef_min + + + File : :file:`determinants/determinants.irp.f` + + .. code:: fortran + + double precision, allocatable :: psi_coef_max (N_states) + double precision, allocatable :: psi_coef_min (N_states) + double precision, allocatable :: abs_psi_coef_max (N_states) + double precision, allocatable :: abs_psi_coef_min (N_states) + + + Max and min values of the coefficients + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mpi_master` + * :c:data:`n_states` + * :c:data:`psi_coef` + + + +.. c:var:: barycentric_electronic_energy + + + File : :file:`determinants/energy.irp.f` + + .. code:: fortran + + double precision, allocatable :: barycentric_electronic_energy (N_states) + + + :math:`E_n = \sum_i {c_i^{(n)}}^2 H_{ii}` + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`diagonal_h_matrix_on_psi_det` + * :c:data:`n_det` + * :c:data:`n_states` + * :c:data:`psi_coef` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`pt2_e0_denominator` + + +.. c:var:: c0_weight + + + File : :file:`determinants/density_matrix.irp.f` + + .. code:: fortran + + double precision, allocatable :: c0_weight (N_states) + + + Weight of the states in the selection : :math:`\frac{1}{c_0^2}` . + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_states` + * :c:data:`psi_coef` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`selection_weight` + * :c:data:`state_average_weight` + + +.. c:var:: det_alpha_norm + + + File : :file:`determinants/spindeterminants.irp.f` + + .. code:: fortran + + double precision, allocatable :: det_alpha_norm (N_det_alpha_unique) + double precision, allocatable :: det_beta_norm (N_det_beta_unique) + + + Norm of the :math:`\alpha` and :math:`\beta` spin determinants in the wave function: + + :math:`||D_\alpha||_i = \sum_j C_{ij}^2` + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_det` + * :c:data:`n_states` + * :c:data:`psi_bilinear_matrix_values` + * :c:data:`psi_det_alpha_unique` + * :c:data:`psi_det_beta_unique` + * :c:data:`state_average_weight` + + + +.. c:var:: det_beta_norm + + + File : :file:`determinants/spindeterminants.irp.f` + + .. code:: fortran + + double precision, allocatable :: det_alpha_norm (N_det_alpha_unique) + double precision, allocatable :: det_beta_norm (N_det_beta_unique) + + + Norm of the :math:`\alpha` and :math:`\beta` spin determinants in the wave function: + + :math:`||D_\alpha||_i = \sum_j C_{ij}^2` + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_det` + * :c:data:`n_states` + * :c:data:`psi_bilinear_matrix_values` + * :c:data:`psi_det_alpha_unique` + * :c:data:`psi_det_beta_unique` + * :c:data:`state_average_weight` + + + +.. c:var:: det_to_occ_pattern + + + File : :file:`determinants/occ_pattern.irp.f` + + .. code:: fortran + + integer, allocatable :: det_to_occ_pattern (N_det) + + + Returns the index of the occupation pattern for each determinant + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`elec_alpha_num` + * :c:data:`n_det` + * :c:data:`n_int` + * :c:data:`psi_det` + * :c:data:`psi_occ_pattern` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`psi_occ_pattern_hii` + * :c:data:`weight_occ_pattern` + + +.. c:var:: diag_algorithm + + + File : :file:`determinants/determinants.irp.f` + + .. code:: fortran + + character*(64) :: diag_algorithm + + + Diagonalization algorithm (Davidson or Lapack) + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_det` + * :c:data:`n_det_max_full` + * :c:data:`n_states` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ci_electronic_energy` + + +.. c:var:: diagonal_h_matrix_on_psi_det + + + File : :file:`determinants/energy.irp.f` + + .. code:: fortran + + double precision, allocatable :: diagonal_h_matrix_on_psi_det (N_det) + + + Diagonal of the Hamiltonian ordered as psi_det + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`elec_num` + * :c:data:`n_det` + * :c:data:`n_int` + * :c:data:`psi_det` + * :c:data:`ref_bitmask` + * :c:data:`ref_bitmask_energy` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`barycentric_electronic_energy` + + +.. c:var:: double_exc_bitmask + + + File : :file:`determinants/determinants_bitmasks.irp.f` + + .. code:: fortran + + integer(bit_kind), allocatable :: double_exc_bitmask (N_int,4,N_double_exc_bitmasks) + + + double_exc_bitmask(:,1,i) is the bitmask for holes of excitation 1 + + double_exc_bitmask(:,2,i) is the bitmask for particles of excitation 1 + + double_exc_bitmask(:,3,i) is the bitmask for holes of excitation 2 + + double_exc_bitmask(:,4,i) is the bitmask for particles of excitation 2 + + for a given couple of hole/particle excitations i. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`hf_bitmask` + * :c:data:`n_double_exc_bitmasks` + * :c:data:`n_int` + + + +.. c:var:: expected_s2 + + + File : :file:`determinants/s2.irp.f` + + .. code:: fortran + + double precision :: expected_s2 + + + Expected value of |S^2| : S*(S+1) + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`elec_alpha_num` + * :c:data:`elec_beta_num` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ci_electronic_energy` + + +.. c:var:: fock_operator_closed_shell_ref_bitmask + + + File : :file:`determinants/single_excitations.irp.f` + + .. code:: fortran + + double precision, allocatable :: fock_operator_closed_shell_ref_bitmask (mo_num,mo_num) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`full_ijkl_bitmask` + * :c:data:`mo_integrals_map` + * :c:data:`mo_num` + * :c:data:`mo_one_e_integrals` + * :c:data:`mo_two_e_integrals_in_map` + * :c:data:`n_int` + * :c:data:`ref_closed_shell_bitmask` + + + +.. c:var:: fock_wee_closed_shell + + + File : :file:`determinants/mono_excitations_bielec.irp.f` + + .. code:: fortran + + double precision, allocatable :: fock_wee_closed_shell (mo_num,mo_num) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`full_ijkl_bitmask` + * :c:data:`mo_integrals_map` + * :c:data:`mo_num` + * :c:data:`mo_two_e_integrals_in_map` + * :c:data:`n_int` + * :c:data:`ref_closed_shell_bitmask` + + + +.. c:var:: h_apply_buffer_allocated + + + File : :file:`determinants/h_apply.irp.f` + + .. code:: fortran + + logical :: h_apply_buffer_allocated + integer(omp_lock_kind), allocatable :: h_apply_buffer_lock (64,0:nproc-1) + + + Buffer of determinants/coefficients/perturbative energy for H_apply. + Uninitialized. Filled by H_apply subroutines. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_det` + * :c:data:`n_int` + * :c:data:`n_states` + * :c:data:`nproc` + + + +.. c:var:: h_apply_buffer_lock + + + File : :file:`determinants/h_apply.irp.f` + + .. code:: fortran + + logical :: h_apply_buffer_allocated + integer(omp_lock_kind), allocatable :: h_apply_buffer_lock (64,0:nproc-1) + + + Buffer of determinants/coefficients/perturbative energy for H_apply. + Uninitialized. Filled by H_apply subroutines. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_det` + * :c:data:`n_int` + * :c:data:`n_states` + * :c:data:`nproc` + + + +.. c:var:: h_matrix_all_dets + + + File : :file:`determinants/utils.irp.f` + + .. code:: fortran + + double precision, allocatable :: h_matrix_all_dets (N_det,N_det) + + + |H| matrix on the basis of the Slater determinants defined by psi_det + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`big_array_coulomb_integrals` + * :c:data:`big_array_coulomb_integrals` + * :c:data:`mo_integrals_map` + * :c:data:`mo_two_e_integrals_in_map` + * :c:data:`n_det` + * :c:data:`n_int` + * :c:data:`psi_det` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ci_electronic_energy` + + +.. c:var:: h_matrix_cas + + + File : :file:`determinants/psi_cas.irp.f` + + .. code:: fortran + + double precision, allocatable :: h_matrix_cas (N_det_cas,N_det_cas) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`big_array_coulomb_integrals` + * :c:data:`big_array_coulomb_integrals` + * :c:data:`mo_integrals_map` + * :c:data:`mo_two_e_integrals_in_map` + * :c:data:`n_int` + * :c:data:`psi_cas` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`psi_cas_energy` + * :c:data:`psi_coef_cas_diagonalized` + + +.. c:var:: idx_cas + + + File : :file:`determinants/psi_cas.irp.f` + + .. code:: fortran + + integer(bit_kind), allocatable :: psi_cas (N_int,2,psi_det_size) + double precision, allocatable :: psi_cas_coef (psi_det_size,n_states) + integer, allocatable :: idx_cas (psi_det_size) + integer :: n_det_cas + + + |CAS| wave function, defined from the application of the |CAS| bitmask on the + determinants. idx_cas gives the indice of the |CAS| determinant in psi_det. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`cas_bitmask` + * :c:data:`hf_bitmask` + * :c:data:`mpi_master` + * :c:data:`n_cas_bitmask` + * :c:data:`n_det` + * :c:data:`n_int` + * :c:data:`n_states` + * :c:data:`psi_coef` + * :c:data:`psi_det` + * :c:data:`psi_det_size` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`h_matrix_cas` + * :c:data:`psi_cas_energy` + * :c:data:`psi_cas_sorted_bit` + * :c:data:`psi_coef_cas_diagonalized` + * :c:data:`psi_non_cas` + * :c:data:`psi_non_cas_sorted_bit` + + +.. c:var:: idx_non_cas + + + File : :file:`determinants/psi_cas.irp.f` + + .. code:: fortran + + integer(bit_kind), allocatable :: psi_non_cas (N_int,2,psi_det_size) + double precision, allocatable :: psi_non_cas_coef (psi_det_size,n_states) + integer, allocatable :: idx_non_cas (psi_det_size) + integer :: n_det_non_cas + + + Set of determinants which are not part of the |CAS|, defined from the application + of the |CAS| bitmask on the determinants. + idx_non_cas gives the indice of the determinant in psi_det. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_det` + * :c:data:`n_int` + * :c:data:`n_states` + * :c:data:`psi_cas` + * :c:data:`psi_coef` + * :c:data:`psi_det` + * :c:data:`psi_det_size` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`psi_non_cas_sorted_bit` + + +.. c:var:: max_degree_exc + + + File : :file:`determinants/determinants.irp.f` + + .. code:: fortran + + integer :: max_degree_exc + + + Maximum degree of excitation in the wave function with respect to the Hartree-Fock + determinant. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`hf_bitmask` + * :c:data:`n_det` + * :c:data:`n_int` + * :c:data:`psi_det` + + + +.. c:var:: n_det + + + File : :file:`determinants/determinants.irp.f` + + .. code:: fortran + + integer :: n_det + + + Number of determinants in the wave function + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ezfio_filename` + * :c:data:`mo_label` + * :c:data:`mpi_master` + * :c:data:`nproc` + * :c:data:`read_wf` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`barycentric_electronic_energy` + * :c:data:`ci_electronic_energy` + * :c:data:`ci_energy` + * :c:data:`det_alpha_norm` + * :c:data:`det_to_occ_pattern` + * :c:data:`diag_algorithm` + * :c:data:`diagonal_h_matrix_on_psi_det` + * :c:data:`dressed_column_idx` + * :c:data:`dressing_column_h` + * :c:data:`extrapolated_energy` + * :c:data:`h_apply_buffer_allocated` + * :c:data:`h_matrix_all_dets` + * :c:data:`max_degree_exc` + * :c:data:`n_det_generators` + * :c:data:`n_det_selectors` + * :c:data:`one_e_dm_mo_alpha` + * :c:data:`psi_average_norm_contrib` + * :c:data:`psi_bilinear_matrix` + * :c:data:`psi_bilinear_matrix_columns_loc` + * :c:data:`psi_bilinear_matrix_order_reverse` + * :c:data:`psi_bilinear_matrix_order_transp_reverse` + * :c:data:`psi_bilinear_matrix_transp_rows_loc` + * :c:data:`psi_bilinear_matrix_transp_values` + * :c:data:`psi_bilinear_matrix_values` + * :c:data:`psi_cas` + * :c:data:`psi_coef` + * :c:data:`psi_det` + * :c:data:`psi_det_alpha` + * :c:data:`psi_det_alpha_unique` + * :c:data:`psi_det_beta` + * :c:data:`psi_det_beta_unique` + * :c:data:`psi_det_generators` + * :c:data:`psi_det_hii` + * :c:data:`psi_det_sorted` + * :c:data:`psi_det_sorted_bit` + * :c:data:`psi_energy` + * :c:data:`psi_energy_two_e` + * :c:data:`psi_non_cas` + * :c:data:`psi_occ_pattern` + * :c:data:`psi_occ_pattern_hii` + * :c:data:`s2_matrix_all_dets` + * :c:data:`s2_values` + * :c:data:`weight_occ_pattern` + + +.. c:var:: n_det_alpha_unique + + + File : :file:`determinants/spindeterminants.irp.f_template_144` + + .. code:: fortran + + integer(bit_kind), allocatable :: psi_det_alpha_unique (N_int,psi_det_size) + integer :: n_det_alpha_unique + + + Unique :math:`\alpha` determinants + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mpi_master` + * :c:data:`n_det` + * :c:data:`n_int` + * :c:data:`psi_det_alpha` + * :c:data:`psi_det_size` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`det_alpha_norm` + * :c:data:`one_e_dm_mo_alpha` + * :c:data:`psi_bilinear_matrix` + * :c:data:`psi_bilinear_matrix_transp_rows_loc` + * :c:data:`psi_bilinear_matrix_values` + * :c:data:`singles_alpha_csc` + * :c:data:`singles_alpha_csc_idx` + + +.. c:var:: n_det_beta_unique + + + File : :file:`determinants/spindeterminants.irp.f_template_144` + + .. code:: fortran + + integer(bit_kind), allocatable :: psi_det_beta_unique (N_int,psi_det_size) + integer :: n_det_beta_unique + + + Unique :math:`\beta` determinants + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mpi_master` + * :c:data:`n_det` + * :c:data:`n_int` + * :c:data:`psi_det_beta` + * :c:data:`psi_det_size` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`det_alpha_norm` + * :c:data:`one_e_dm_mo_alpha` + * :c:data:`psi_bilinear_matrix` + * :c:data:`psi_bilinear_matrix_columns_loc` + * :c:data:`psi_bilinear_matrix_transp_values` + * :c:data:`psi_bilinear_matrix_values` + * :c:data:`singles_beta_csc` + * :c:data:`singles_beta_csc_idx` + + +.. c:var:: n_det_cas + + + File : :file:`determinants/psi_cas.irp.f` + + .. code:: fortran + + integer(bit_kind), allocatable :: psi_cas (N_int,2,psi_det_size) + double precision, allocatable :: psi_cas_coef (psi_det_size,n_states) + integer, allocatable :: idx_cas (psi_det_size) + integer :: n_det_cas + + + |CAS| wave function, defined from the application of the |CAS| bitmask on the + determinants. idx_cas gives the indice of the |CAS| determinant in psi_det. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`cas_bitmask` + * :c:data:`hf_bitmask` + * :c:data:`mpi_master` + * :c:data:`n_cas_bitmask` + * :c:data:`n_det` + * :c:data:`n_int` + * :c:data:`n_states` + * :c:data:`psi_coef` + * :c:data:`psi_det` + * :c:data:`psi_det_size` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`h_matrix_cas` + * :c:data:`psi_cas_energy` + * :c:data:`psi_cas_sorted_bit` + * :c:data:`psi_coef_cas_diagonalized` + * :c:data:`psi_non_cas` + * :c:data:`psi_non_cas_sorted_bit` + + +.. c:var:: n_det_non_cas + + + File : :file:`determinants/psi_cas.irp.f` + + .. code:: fortran + + integer(bit_kind), allocatable :: psi_non_cas (N_int,2,psi_det_size) + double precision, allocatable :: psi_non_cas_coef (psi_det_size,n_states) + integer, allocatable :: idx_non_cas (psi_det_size) + integer :: n_det_non_cas + + + Set of determinants which are not part of the |CAS|, defined from the application + of the |CAS| bitmask on the determinants. + idx_non_cas gives the indice of the determinant in psi_det. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_det` + * :c:data:`n_int` + * :c:data:`n_states` + * :c:data:`psi_cas` + * :c:data:`psi_coef` + * :c:data:`psi_det` + * :c:data:`psi_det_size` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`psi_non_cas_sorted_bit` + + +.. c:var:: n_double_exc_bitmasks + + + File : :file:`determinants/determinants_bitmasks.irp.f` + + .. code:: fortran + + integer :: n_double_exc_bitmasks + + + Number of double excitation bitmasks + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`double_exc_bitmask` + + +.. c:var:: n_occ_pattern + + + File : :file:`determinants/occ_pattern.irp.f` + + .. code:: fortran + + integer(bit_kind), allocatable :: psi_occ_pattern (N_int,2,psi_det_size) + integer :: n_occ_pattern + + + Array of the occ_patterns present in the wave function. + + psi_occ_pattern(:,1,j) = j-th occ_pattern of the wave function : represents all the single occupations + + psi_occ_pattern(:,2,j) = j-th occ_pattern of the wave function : represents all the double occupations + + The occ patterns are sorted by :c:func:`occ_pattern_search_key` + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`elec_alpha_num` + * :c:data:`n_det` + * :c:data:`n_int` + * :c:data:`psi_det` + * :c:data:`psi_det_size` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`det_to_occ_pattern` + * :c:data:`psi_occ_pattern_hii` + * :c:data:`weight_occ_pattern` + + +.. c:var:: n_single_exc_bitmasks + + + File : :file:`determinants/determinants_bitmasks.irp.f` + + .. code:: fortran + + integer :: n_single_exc_bitmasks + + + Number of single excitation bitmasks + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`single_exc_bitmask` + + +.. c:var:: one_e_dm_ao_alpha + + + File : :file:`determinants/density_matrix.irp.f` + + .. code:: fortran + + double precision, allocatable :: one_e_dm_ao_alpha (ao_num,ao_num) + double precision, allocatable :: one_e_dm_ao_beta (ao_num,ao_num) + + + One body density matrix on the |AO| basis : :math:`\rho_{AO}(\alpha), \rho_{AO}(\beta)` . + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`mo_coef` + * :c:data:`mo_num` + * :c:data:`one_e_dm_mo_alpha_average` + + + +.. c:var:: one_e_dm_ao_beta + + + File : :file:`determinants/density_matrix.irp.f` + + .. code:: fortran + + double precision, allocatable :: one_e_dm_ao_alpha (ao_num,ao_num) + double precision, allocatable :: one_e_dm_ao_beta (ao_num,ao_num) + + + One body density matrix on the |AO| basis : :math:`\rho_{AO}(\alpha), \rho_{AO}(\beta)` . + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`mo_coef` + * :c:data:`mo_num` + * :c:data:`one_e_dm_mo_alpha_average` + + + +.. c:var:: one_e_dm_dagger_mo_spin_index + + + File : :file:`determinants/density_matrix.irp.f` + + .. code:: fortran + + double precision, allocatable :: one_e_dm_dagger_mo_spin_index (mo_num,mo_num,N_states,2) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_num` + * :c:data:`n_states` + * :c:data:`one_e_dm_mo_alpha` + + + +.. c:var:: one_e_dm_mo + + + File : :file:`determinants/density_matrix.irp.f` + + .. code:: fortran + + double precision, allocatable :: one_e_dm_mo (mo_num,mo_num) + + + One-body density matrix + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_num` + * :c:data:`one_e_dm_mo_alpha_average` + + + +.. c:var:: one_e_dm_mo_alpha + + + File : :file:`determinants/density_matrix.irp.f` + + .. code:: fortran + + double precision, allocatable :: one_e_dm_mo_alpha (mo_num,mo_num,N_states) + double precision, allocatable :: one_e_dm_mo_beta (mo_num,mo_num,N_states) + + + :math:`\alpha` and :math:`\beta` one-body density matrix for each state + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`elec_alpha_num` + * :c:data:`elec_beta_num` + * :c:data:`mo_num` + * :c:data:`n_det` + * :c:data:`n_int` + * :c:data:`n_states` + * :c:data:`psi_bilinear_matrix_transp_values` + * :c:data:`psi_bilinear_matrix_values` + * :c:data:`psi_det` + * :c:data:`psi_det_alpha_unique` + * :c:data:`psi_det_beta_unique` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`one_e_dm_dagger_mo_spin_index` + * :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:`psi_energy_h_core` + + +.. c:var:: one_e_dm_mo_alpha_average + + + File : :file:`determinants/density_matrix.irp.f` + + .. code:: fortran + + double precision, allocatable :: one_e_dm_mo_alpha_average (mo_num,mo_num) + double precision, allocatable :: one_e_dm_mo_beta_average (mo_num,mo_num) + + + :math:`\alpha` and :math:`\beta` one-body density matrix for each state + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_num` + * :c:data:`n_states` + * :c:data:`one_e_dm_mo_alpha` + * :c:data:`state_average_weight` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`one_e_dm_ao_alpha` + * :c:data:`one_e_dm_mo` + * :c:data:`one_e_spin_density_mo` + + +.. c:var:: one_e_dm_mo_beta + + + File : :file:`determinants/density_matrix.irp.f` + + .. code:: fortran + + double precision, allocatable :: one_e_dm_mo_alpha (mo_num,mo_num,N_states) + double precision, allocatable :: one_e_dm_mo_beta (mo_num,mo_num,N_states) + + + :math:`\alpha` and :math:`\beta` one-body density matrix for each state + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`elec_alpha_num` + * :c:data:`elec_beta_num` + * :c:data:`mo_num` + * :c:data:`n_det` + * :c:data:`n_int` + * :c:data:`n_states` + * :c:data:`psi_bilinear_matrix_transp_values` + * :c:data:`psi_bilinear_matrix_values` + * :c:data:`psi_det` + * :c:data:`psi_det_alpha_unique` + * :c:data:`psi_det_beta_unique` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`one_e_dm_dagger_mo_spin_index` + * :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:`psi_energy_h_core` + + +.. c:var:: one_e_dm_mo_beta_average + + + File : :file:`determinants/density_matrix.irp.f` + + .. code:: fortran + + double precision, allocatable :: one_e_dm_mo_alpha_average (mo_num,mo_num) + double precision, allocatable :: one_e_dm_mo_beta_average (mo_num,mo_num) + + + :math:`\alpha` and :math:`\beta` one-body density matrix for each state + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_num` + * :c:data:`n_states` + * :c:data:`one_e_dm_mo_alpha` + * :c:data:`state_average_weight` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`one_e_dm_ao_alpha` + * :c:data:`one_e_dm_mo` + * :c:data:`one_e_spin_density_mo` + + +.. c:var:: one_e_dm_mo_diff + + + File : :file:`determinants/density_matrix.irp.f` + + .. code:: fortran + + double precision, allocatable :: one_e_dm_mo_diff (mo_num,mo_num,2:N_states) + + + Difference of the one-body density matrix with respect to the ground state + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_num` + * :c:data:`n_states` + * :c:data:`one_e_dm_mo_alpha` + + + +.. c:var:: one_e_dm_mo_spin_index + + + File : :file:`determinants/density_matrix.irp.f` + + .. code:: fortran + + double precision, allocatable :: one_e_dm_mo_spin_index (mo_num,mo_num,N_states,2) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_num` + * :c:data:`n_states` + * :c:data:`one_e_dm_mo_alpha` + + + +.. c:var:: one_e_spin_density_ao + + + File : :file:`determinants/density_matrix.irp.f` + + .. code:: fortran + + double precision, allocatable :: one_e_spin_density_ao (ao_num,ao_num) + + + One body spin density matrix on the |AO| basis : :math:`\rho_{AO}(\alpha) - \rho_{AO}(\beta)` + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`mo_coef` + * :c:data:`mo_num` + * :c:data:`one_e_spin_density_mo` + + + +.. c:var:: one_e_spin_density_mo + + + File : :file:`determinants/density_matrix.irp.f` + + .. code:: fortran + + double precision, allocatable :: one_e_spin_density_mo (mo_num,mo_num) + + + :math:`\rho(\alpha) - \rho(\beta)` + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_num` + * :c:data:`one_e_dm_mo_alpha_average` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`one_e_spin_density_ao` + + +.. c:var:: psi_average_norm_contrib + + + File : :file:`determinants/determinants.irp.f` + + .. code:: fortran + + double precision, allocatable :: psi_average_norm_contrib (psi_det_size) + + + Contribution of determinants to the state-averaged density. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_det` + * :c:data:`n_states` + * :c:data:`psi_coef` + * :c:data:`psi_det_size` + * :c:data:`state_average_weight` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`psi_det_sorted` + + +.. c:var:: psi_average_norm_contrib_sorted + + + File : :file:`determinants/determinants.irp.f` + + .. code:: fortran + + integer(bit_kind), allocatable :: psi_det_sorted (N_int,2,psi_det_size) + double precision, allocatable :: psi_coef_sorted (psi_det_size,N_states) + double precision, allocatable :: psi_average_norm_contrib_sorted (psi_det_size) + integer, allocatable :: psi_det_sorted_order (psi_det_size) + + + Wave function sorted by determinants contribution to the norm (state-averaged) + + psi_det_sorted_order(i) -> k : index in psi_det + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_det` + * :c:data:`n_int` + * :c:data:`n_states` + * :c:data:`psi_average_norm_contrib` + * :c:data:`psi_coef` + * :c:data:`psi_det` + * :c:data:`psi_det_size` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`n_det_generators` + * :c:data:`n_det_selectors` + * :c:data:`psi_det_generators` + * :c:data:`psi_det_sorted_gen` + * :c:data:`psi_selectors` + + +.. c:var:: psi_bilinear_matrix + + + File : :file:`determinants/spindeterminants.irp.f` + + .. code:: fortran + + double precision, allocatable :: psi_bilinear_matrix (N_det_alpha_unique,N_det_beta_unique,N_states) + + + Coefficient matrix if the wave function is expressed in a bilinear form : + + :math:`D_\alpha^\dagger.C.D_\beta` + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_det` + * :c:data:`n_states` + * :c:data:`psi_bilinear_matrix_values` + * :c:data:`psi_det_alpha_unique` + * :c:data:`psi_det_beta_unique` + + + +.. c:var:: psi_bilinear_matrix_columns + + + File : :file:`determinants/spindeterminants.irp.f` + + .. code:: fortran + + double precision, allocatable :: psi_bilinear_matrix_values (N_det,N_states) + integer, allocatable :: psi_bilinear_matrix_rows (N_det) + integer, allocatable :: psi_bilinear_matrix_columns (N_det) + integer, allocatable :: psi_bilinear_matrix_order (N_det) + + + Sparse coefficient matrix if the wave function is expressed in a bilinear form : + :math:`D_\alpha^\dagger.C.D_\beta` + + Rows are :math:`\alpha` determinants and columns are :math:`\beta` . + + Order refers to psi_det + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_det` + * :c:data:`n_int` + * :c:data:`n_states` + * :c:data:`psi_coef` + * :c:data:`psi_det_sorted_bit` + * :c:data:`psi_det` + * :c:data:`psi_det_alpha_unique` + * :c:data:`psi_det_beta_unique` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`det_alpha_norm` + * :c:data:`one_e_dm_mo_alpha` + * :c:data:`psi_bilinear_matrix` + * :c:data:`psi_bilinear_matrix_columns_loc` + * :c:data:`psi_bilinear_matrix_order_reverse` + * :c:data:`psi_bilinear_matrix_transp_values` + + +.. c:var:: psi_bilinear_matrix_columns_loc + + + File : :file:`determinants/spindeterminants.irp.f` + + .. code:: fortran + + integer, allocatable :: psi_bilinear_matrix_columns_loc (N_det_beta_unique+1) + + + Sparse coefficient matrix if the wave function is expressed in a bilinear form : + + :math:`D_\alpha^\dagger.C.D_\beta` + + Rows are :math:`\alpha` determinants and columns are :math:`\beta` . + + Order refers to :c:data:`psi_det` + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_det` + * :c:data:`psi_bilinear_matrix_values` + * :c:data:`psi_det_beta_unique` + + + +.. c:var:: psi_bilinear_matrix_order + + + File : :file:`determinants/spindeterminants.irp.f` + + .. code:: fortran + + double precision, allocatable :: psi_bilinear_matrix_values (N_det,N_states) + integer, allocatable :: psi_bilinear_matrix_rows (N_det) + integer, allocatable :: psi_bilinear_matrix_columns (N_det) + integer, allocatable :: psi_bilinear_matrix_order (N_det) + + + Sparse coefficient matrix if the wave function is expressed in a bilinear form : + :math:`D_\alpha^\dagger.C.D_\beta` + + Rows are :math:`\alpha` determinants and columns are :math:`\beta` . + + Order refers to psi_det + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_det` + * :c:data:`n_int` + * :c:data:`n_states` + * :c:data:`psi_coef` + * :c:data:`psi_det_sorted_bit` + * :c:data:`psi_det` + * :c:data:`psi_det_alpha_unique` + * :c:data:`psi_det_beta_unique` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`det_alpha_norm` + * :c:data:`one_e_dm_mo_alpha` + * :c:data:`psi_bilinear_matrix` + * :c:data:`psi_bilinear_matrix_columns_loc` + * :c:data:`psi_bilinear_matrix_order_reverse` + * :c:data:`psi_bilinear_matrix_transp_values` + + +.. c:var:: psi_bilinear_matrix_order_reverse + + + File : :file:`determinants/spindeterminants.irp.f` + + .. code:: fortran + + integer, allocatable :: psi_bilinear_matrix_order_reverse (N_det) + + + Order which allows to go from :c:data:`psi_bilinear_matrix` to :c:data:`psi_det` + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_det` + * :c:data:`psi_bilinear_matrix_values` + + + +.. c:var:: psi_bilinear_matrix_order_transp_reverse + + + File : :file:`determinants/spindeterminants.irp.f` + + .. code:: fortran + + integer, allocatable :: psi_bilinear_matrix_order_transp_reverse (N_det) + + + Order which allows to go from :c:data:`psi_bilinear_matrix_order_transp` to + :c:data:`psi_bilinear_matrix` + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_det` + * :c:data:`psi_bilinear_matrix_transp_values` + + + +.. c:var:: psi_bilinear_matrix_rows + + + File : :file:`determinants/spindeterminants.irp.f` + + .. code:: fortran + + double precision, allocatable :: psi_bilinear_matrix_values (N_det,N_states) + integer, allocatable :: psi_bilinear_matrix_rows (N_det) + integer, allocatable :: psi_bilinear_matrix_columns (N_det) + integer, allocatable :: psi_bilinear_matrix_order (N_det) + + + Sparse coefficient matrix if the wave function is expressed in a bilinear form : + :math:`D_\alpha^\dagger.C.D_\beta` + + Rows are :math:`\alpha` determinants and columns are :math:`\beta` . + + Order refers to psi_det + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_det` + * :c:data:`n_int` + * :c:data:`n_states` + * :c:data:`psi_coef` + * :c:data:`psi_det_sorted_bit` + * :c:data:`psi_det` + * :c:data:`psi_det_alpha_unique` + * :c:data:`psi_det_beta_unique` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`det_alpha_norm` + * :c:data:`one_e_dm_mo_alpha` + * :c:data:`psi_bilinear_matrix` + * :c:data:`psi_bilinear_matrix_columns_loc` + * :c:data:`psi_bilinear_matrix_order_reverse` + * :c:data:`psi_bilinear_matrix_transp_values` + + +.. c:var:: psi_bilinear_matrix_transp_columns + + + File : :file:`determinants/spindeterminants.irp.f` + + .. code:: fortran + + double precision, allocatable :: psi_bilinear_matrix_transp_values (N_det,N_states) + integer, allocatable :: psi_bilinear_matrix_transp_rows (N_det) + integer, allocatable :: psi_bilinear_matrix_transp_columns (N_det) + integer, allocatable :: psi_bilinear_matrix_transp_order (N_det) + + + Transpose of :c:data:`psi_bilinear_matrix` + + :math:`D_\beta^\dagger.C^\dagger.D_\alpha` + + Rows are :math:`\alpha` determinants and columns are :math:`\beta` , but the matrix is stored in row major + format. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_det` + * :c:data:`n_states` + * :c:data:`psi_bilinear_matrix_values` + * :c:data:`psi_det_sorted_bit` + * :c:data:`psi_det_beta_unique` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`one_e_dm_mo_alpha` + * :c:data:`psi_bilinear_matrix_order_transp_reverse` + * :c:data:`psi_bilinear_matrix_transp_rows_loc` + + +.. c:var:: psi_bilinear_matrix_transp_order + + + File : :file:`determinants/spindeterminants.irp.f` + + .. code:: fortran + + double precision, allocatable :: psi_bilinear_matrix_transp_values (N_det,N_states) + integer, allocatable :: psi_bilinear_matrix_transp_rows (N_det) + integer, allocatable :: psi_bilinear_matrix_transp_columns (N_det) + integer, allocatable :: psi_bilinear_matrix_transp_order (N_det) + + + Transpose of :c:data:`psi_bilinear_matrix` + + :math:`D_\beta^\dagger.C^\dagger.D_\alpha` + + Rows are :math:`\alpha` determinants and columns are :math:`\beta` , but the matrix is stored in row major + format. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_det` + * :c:data:`n_states` + * :c:data:`psi_bilinear_matrix_values` + * :c:data:`psi_det_sorted_bit` + * :c:data:`psi_det_beta_unique` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`one_e_dm_mo_alpha` + * :c:data:`psi_bilinear_matrix_order_transp_reverse` + * :c:data:`psi_bilinear_matrix_transp_rows_loc` + + +.. c:var:: psi_bilinear_matrix_transp_rows + + + File : :file:`determinants/spindeterminants.irp.f` + + .. code:: fortran + + double precision, allocatable :: psi_bilinear_matrix_transp_values (N_det,N_states) + integer, allocatable :: psi_bilinear_matrix_transp_rows (N_det) + integer, allocatable :: psi_bilinear_matrix_transp_columns (N_det) + integer, allocatable :: psi_bilinear_matrix_transp_order (N_det) + + + Transpose of :c:data:`psi_bilinear_matrix` + + :math:`D_\beta^\dagger.C^\dagger.D_\alpha` + + Rows are :math:`\alpha` determinants and columns are :math:`\beta` , but the matrix is stored in row major + format. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_det` + * :c:data:`n_states` + * :c:data:`psi_bilinear_matrix_values` + * :c:data:`psi_det_sorted_bit` + * :c:data:`psi_det_beta_unique` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`one_e_dm_mo_alpha` + * :c:data:`psi_bilinear_matrix_order_transp_reverse` + * :c:data:`psi_bilinear_matrix_transp_rows_loc` + + +.. c:var:: psi_bilinear_matrix_transp_rows_loc + + + File : :file:`determinants/spindeterminants.irp.f` + + .. code:: fortran + + integer, allocatable :: psi_bilinear_matrix_transp_rows_loc (N_det_alpha_unique+1) + + + Location of the columns in the :c:data:`psi_bilinear_matrix` + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_det` + * :c:data:`psi_bilinear_matrix_transp_values` + * :c:data:`psi_det_alpha_unique` + + + +.. c:var:: psi_bilinear_matrix_transp_values + + + File : :file:`determinants/spindeterminants.irp.f` + + .. code:: fortran + + double precision, allocatable :: psi_bilinear_matrix_transp_values (N_det,N_states) + integer, allocatable :: psi_bilinear_matrix_transp_rows (N_det) + integer, allocatable :: psi_bilinear_matrix_transp_columns (N_det) + integer, allocatable :: psi_bilinear_matrix_transp_order (N_det) + + + Transpose of :c:data:`psi_bilinear_matrix` + + :math:`D_\beta^\dagger.C^\dagger.D_\alpha` + + Rows are :math:`\alpha` determinants and columns are :math:`\beta` , but the matrix is stored in row major + format. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_det` + * :c:data:`n_states` + * :c:data:`psi_bilinear_matrix_values` + * :c:data:`psi_det_sorted_bit` + * :c:data:`psi_det_beta_unique` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`one_e_dm_mo_alpha` + * :c:data:`psi_bilinear_matrix_order_transp_reverse` + * :c:data:`psi_bilinear_matrix_transp_rows_loc` + + +.. c:var:: psi_bilinear_matrix_values + + + File : :file:`determinants/spindeterminants.irp.f` + + .. code:: fortran + + double precision, allocatable :: psi_bilinear_matrix_values (N_det,N_states) + integer, allocatable :: psi_bilinear_matrix_rows (N_det) + integer, allocatable :: psi_bilinear_matrix_columns (N_det) + integer, allocatable :: psi_bilinear_matrix_order (N_det) + + + Sparse coefficient matrix if the wave function is expressed in a bilinear form : + :math:`D_\alpha^\dagger.C.D_\beta` + + Rows are :math:`\alpha` determinants and columns are :math:`\beta` . + + Order refers to psi_det + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_det` + * :c:data:`n_int` + * :c:data:`n_states` + * :c:data:`psi_coef` + * :c:data:`psi_det_sorted_bit` + * :c:data:`psi_det` + * :c:data:`psi_det_alpha_unique` + * :c:data:`psi_det_beta_unique` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`det_alpha_norm` + * :c:data:`one_e_dm_mo_alpha` + * :c:data:`psi_bilinear_matrix` + * :c:data:`psi_bilinear_matrix_columns_loc` + * :c:data:`psi_bilinear_matrix_order_reverse` + * :c:data:`psi_bilinear_matrix_transp_values` + + +.. c:var:: psi_cas + + + File : :file:`determinants/psi_cas.irp.f` + + .. code:: fortran + + integer(bit_kind), allocatable :: psi_cas (N_int,2,psi_det_size) + double precision, allocatable :: psi_cas_coef (psi_det_size,n_states) + integer, allocatable :: idx_cas (psi_det_size) + integer :: n_det_cas + + + |CAS| wave function, defined from the application of the |CAS| bitmask on the + determinants. idx_cas gives the indice of the |CAS| determinant in psi_det. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`cas_bitmask` + * :c:data:`hf_bitmask` + * :c:data:`mpi_master` + * :c:data:`n_cas_bitmask` + * :c:data:`n_det` + * :c:data:`n_int` + * :c:data:`n_states` + * :c:data:`psi_coef` + * :c:data:`psi_det` + * :c:data:`psi_det_size` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`h_matrix_cas` + * :c:data:`psi_cas_energy` + * :c:data:`psi_cas_sorted_bit` + * :c:data:`psi_coef_cas_diagonalized` + * :c:data:`psi_non_cas` + * :c:data:`psi_non_cas_sorted_bit` + + +.. c:var:: psi_cas_coef + + + File : :file:`determinants/psi_cas.irp.f` + + .. code:: fortran + + integer(bit_kind), allocatable :: psi_cas (N_int,2,psi_det_size) + double precision, allocatable :: psi_cas_coef (psi_det_size,n_states) + integer, allocatable :: idx_cas (psi_det_size) + integer :: n_det_cas + + + |CAS| wave function, defined from the application of the |CAS| bitmask on the + determinants. idx_cas gives the indice of the |CAS| determinant in psi_det. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`cas_bitmask` + * :c:data:`hf_bitmask` + * :c:data:`mpi_master` + * :c:data:`n_cas_bitmask` + * :c:data:`n_det` + * :c:data:`n_int` + * :c:data:`n_states` + * :c:data:`psi_coef` + * :c:data:`psi_det` + * :c:data:`psi_det_size` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`h_matrix_cas` + * :c:data:`psi_cas_energy` + * :c:data:`psi_cas_sorted_bit` + * :c:data:`psi_coef_cas_diagonalized` + * :c:data:`psi_non_cas` + * :c:data:`psi_non_cas_sorted_bit` + + +.. c:var:: psi_cas_coef_sorted_bit + + + File : :file:`determinants/psi_cas.irp.f` + + .. code:: fortran + + integer(bit_kind), allocatable :: psi_cas_sorted_bit (N_int,2,psi_det_size) + double precision, allocatable :: psi_cas_coef_sorted_bit (psi_det_size,N_states) + + + |CAS| determinants sorted to accelerate the search of a random determinant in the wave + function. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_int` + * :c:data:`n_states` + * :c:data:`psi_cas` + * :c:data:`psi_det_size` + + + +.. c:var:: psi_cas_energy + + + File : :file:`determinants/psi_cas.irp.f` + + .. code:: fortran + + double precision, allocatable :: psi_cas_energy (N_states) + + + Variational energy of :math:`\Psi_{CAS}` , where :math:`\Psi_{CAS} = \sum_{I \in CAS} \I \rangle \langle I | \Psi \rangle` . + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`h_matrix_cas` + * :c:data:`n_states` + * :c:data:`psi_cas` + + + +.. c:var:: psi_cas_energy_diagonalized + + + File : :file:`determinants/psi_cas.irp.f` + + .. code:: fortran + + double precision, allocatable :: psi_coef_cas_diagonalized (N_det_cas,N_states) + double precision, allocatable :: psi_cas_energy_diagonalized (N_states) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`h_matrix_cas` + * :c:data:`n_states` + * :c:data:`psi_cas` + + + +.. c:var:: psi_cas_sorted_bit + + + File : :file:`determinants/psi_cas.irp.f` + + .. code:: fortran + + integer(bit_kind), allocatable :: psi_cas_sorted_bit (N_int,2,psi_det_size) + double precision, allocatable :: psi_cas_coef_sorted_bit (psi_det_size,N_states) + + + |CAS| determinants sorted to accelerate the search of a random determinant in the wave + function. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_int` + * :c:data:`n_states` + * :c:data:`psi_cas` + * :c:data:`psi_det_size` + + + +.. c:var:: psi_coef + + + File : :file:`determinants/determinants.irp.f` + + .. code:: fortran + + double precision, allocatable :: psi_coef (psi_det_size,N_states) + + + The wave function coefficients. Initialized with Hartree-Fock if the |EZFIO| file + is empty. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ezfio_filename` + * :c:data:`mo_label` + * :c:data:`mpi_master` + * :c:data:`n_det` + * :c:data:`n_states` + * :c:data:`psi_det_size` + * :c:data:`read_wf` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`barycentric_electronic_energy` + * :c:data:`c0_weight` + * :c:data:`ci_electronic_energy` + * :c:data:`dressed_column_idx` + * :c:data:`psi_average_norm_contrib` + * :c:data:`psi_bilinear_matrix_values` + * :c:data:`psi_cas` + * :c:data:`psi_coef_max` + * :c:data:`psi_det_sorted` + * :c:data:`psi_det_sorted_bit` + * :c:data:`psi_energy` + * :c:data:`psi_energy_two_e` + * :c:data:`psi_non_cas` + * :c:data:`s2_values` + * :c:data:`weight_occ_pattern` + + +.. c:var:: psi_coef_cas_diagonalized + + + File : :file:`determinants/psi_cas.irp.f` + + .. code:: fortran + + double precision, allocatable :: psi_coef_cas_diagonalized (N_det_cas,N_states) + double precision, allocatable :: psi_cas_energy_diagonalized (N_states) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`h_matrix_cas` + * :c:data:`n_states` + * :c:data:`psi_cas` + + + +.. c:var:: psi_coef_max + + + File : :file:`determinants/determinants.irp.f` + + .. code:: fortran + + double precision, allocatable :: psi_coef_max (N_states) + double precision, allocatable :: psi_coef_min (N_states) + double precision, allocatable :: abs_psi_coef_max (N_states) + double precision, allocatable :: abs_psi_coef_min (N_states) + + + Max and min values of the coefficients + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mpi_master` + * :c:data:`n_states` + * :c:data:`psi_coef` + + + +.. c:var:: psi_coef_min + + + File : :file:`determinants/determinants.irp.f` + + .. code:: fortran + + double precision, allocatable :: psi_coef_max (N_states) + double precision, allocatable :: psi_coef_min (N_states) + double precision, allocatable :: abs_psi_coef_max (N_states) + double precision, allocatable :: abs_psi_coef_min (N_states) + + + Max and min values of the coefficients + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mpi_master` + * :c:data:`n_states` + * :c:data:`psi_coef` + + + +.. c:var:: psi_coef_sorted + + + File : :file:`determinants/determinants.irp.f` + + .. code:: fortran + + integer(bit_kind), allocatable :: psi_det_sorted (N_int,2,psi_det_size) + double precision, allocatable :: psi_coef_sorted (psi_det_size,N_states) + double precision, allocatable :: psi_average_norm_contrib_sorted (psi_det_size) + integer, allocatable :: psi_det_sorted_order (psi_det_size) + + + Wave function sorted by determinants contribution to the norm (state-averaged) + + psi_det_sorted_order(i) -> k : index in psi_det + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_det` + * :c:data:`n_int` + * :c:data:`n_states` + * :c:data:`psi_average_norm_contrib` + * :c:data:`psi_coef` + * :c:data:`psi_det` + * :c:data:`psi_det_size` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`n_det_generators` + * :c:data:`n_det_selectors` + * :c:data:`psi_det_generators` + * :c:data:`psi_det_sorted_gen` + * :c:data:`psi_selectors` + + +.. c:var:: psi_coef_sorted_bit + + + File : :file:`determinants/determinants.irp.f` + + .. code:: fortran + + integer(bit_kind), allocatable :: psi_det_sorted_bit (N_int,2,psi_det_size) + double precision, allocatable :: psi_coef_sorted_bit (psi_det_size,N_states) + + + Determinants on which we apply :math:`\langle i|H|psi \rangle` for perturbation. + They are sorted by determinants interpreted as integers. Useful + to accelerate the search of a random determinant in the wave + function. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_det` + * :c:data:`n_int` + * :c:data:`n_states` + * :c:data:`psi_coef` + * :c:data:`psi_det` + * :c:data:`psi_det_size` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`psi_bilinear_matrix_transp_values` + * :c:data:`psi_bilinear_matrix_values` + + +.. c:var:: psi_det + + + File : :file:`determinants/determinants.irp.f` + + .. code:: fortran + + integer(bit_kind), allocatable :: psi_det (N_int,2,psi_det_size) + + + The determinants of the wave function. Initialized with Hartree-Fock if the |EZFIO| file + is empty. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ezfio_filename` + * :c:data:`hf_bitmask` + * :c:data:`mo_coef` + * :c:data:`mo_label` + * :c:data:`mpi_master` + * :c:data:`n_det` + * :c:data:`n_int` + * :c:data:`psi_det_size` + * :c:data:`read_wf` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ci_electronic_energy` + * :c:data:`det_to_occ_pattern` + * :c:data:`diagonal_h_matrix_on_psi_det` + * :c:data:`h_matrix_all_dets` + * :c:data:`max_degree_exc` + * :c:data:`one_e_dm_mo_alpha` + * :c:data:`psi_bilinear_matrix_values` + * :c:data:`psi_cas` + * :c:data:`psi_det_alpha` + * :c:data:`psi_det_beta` + * :c:data:`psi_det_hii` + * :c:data:`psi_det_sorted` + * :c:data:`psi_det_sorted_bit` + * :c:data:`psi_energy` + * :c:data:`psi_energy_two_e` + * :c:data:`psi_non_cas` + * :c:data:`psi_occ_pattern` + * :c:data:`s2_matrix_all_dets` + * :c:data:`s2_values` + + +.. c:var:: psi_det_alpha + + + File : :file:`determinants/spindeterminants.irp.f` + + .. code:: fortran + + integer(bit_kind), allocatable :: psi_det_alpha (N_int,psi_det_size) + + + List of :math:`\alpha` determinants of psi_det + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_det` + * :c:data:`n_int` + * :c:data:`psi_det` + * :c:data:`psi_det_size` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`psi_det_alpha_unique` + + +.. c:var:: psi_det_alpha_unique + + + File : :file:`determinants/spindeterminants.irp.f_template_144` + + .. code:: fortran + + integer(bit_kind), allocatable :: psi_det_alpha_unique (N_int,psi_det_size) + integer :: n_det_alpha_unique + + + Unique :math:`\alpha` determinants + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mpi_master` + * :c:data:`n_det` + * :c:data:`n_int` + * :c:data:`psi_det_alpha` + * :c:data:`psi_det_size` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`det_alpha_norm` + * :c:data:`one_e_dm_mo_alpha` + * :c:data:`psi_bilinear_matrix` + * :c:data:`psi_bilinear_matrix_transp_rows_loc` + * :c:data:`psi_bilinear_matrix_values` + * :c:data:`singles_alpha_csc` + * :c:data:`singles_alpha_csc_idx` + + +.. c:var:: psi_det_beta + + + File : :file:`determinants/spindeterminants.irp.f` + + .. code:: fortran + + integer(bit_kind), allocatable :: psi_det_beta (N_int,psi_det_size) + + + List of :math:`\beta` determinants of psi_det + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_det` + * :c:data:`n_int` + * :c:data:`psi_det` + * :c:data:`psi_det_size` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`psi_det_beta_unique` + + +.. c:var:: psi_det_beta_unique + + + File : :file:`determinants/spindeterminants.irp.f_template_144` + + .. code:: fortran + + integer(bit_kind), allocatable :: psi_det_beta_unique (N_int,psi_det_size) + integer :: n_det_beta_unique + + + Unique :math:`\beta` determinants + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mpi_master` + * :c:data:`n_det` + * :c:data:`n_int` + * :c:data:`psi_det_beta` + * :c:data:`psi_det_size` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`det_alpha_norm` + * :c:data:`one_e_dm_mo_alpha` + * :c:data:`psi_bilinear_matrix` + * :c:data:`psi_bilinear_matrix_columns_loc` + * :c:data:`psi_bilinear_matrix_transp_values` + * :c:data:`psi_bilinear_matrix_values` + * :c:data:`singles_beta_csc` + * :c:data:`singles_beta_csc_idx` + + +.. c:var:: psi_det_hii + + + File : :file:`determinants/determinants.irp.f` + + .. code:: fortran + + double precision, allocatable :: psi_det_hii (N_det) + + + :math:`\langle i|h|i \rangle` for all determinants. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`elec_num` + * :c:data:`n_det` + * :c:data:`n_int` + * :c:data:`psi_det` + * :c:data:`ref_bitmask` + * :c:data:`ref_bitmask_energy` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`psi_occ_pattern_hii` + + +.. c:var:: psi_det_size + + + File : :file:`determinants/determinants.irp.f` + + .. code:: fortran + + integer :: psi_det_size + + + Size of the psi_det and psi_coef arrays + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ezfio_filename` + * :c:data:`mpi_master` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`psi_average_norm_contrib` + * :c:data:`psi_cas` + * :c:data:`psi_cas_sorted_bit` + * :c:data:`psi_coef` + * :c:data:`psi_det` + * :c:data:`psi_det_alpha` + * :c:data:`psi_det_alpha_unique` + * :c:data:`psi_det_beta` + * :c:data:`psi_det_beta_unique` + * :c:data:`psi_det_generators` + * :c:data:`psi_det_sorted` + * :c:data:`psi_det_sorted_bit` + * :c:data:`psi_det_sorted_gen` + * :c:data:`psi_energy` + * :c:data:`psi_energy_two_e` + * :c:data:`psi_non_cas` + * :c:data:`psi_non_cas_sorted_bit` + * :c:data:`psi_occ_pattern` + * :c:data:`psi_selectors_size` + * :c:data:`s2_values` + + +.. c:var:: psi_det_sorted + + + File : :file:`determinants/determinants.irp.f` + + .. code:: fortran + + integer(bit_kind), allocatable :: psi_det_sorted (N_int,2,psi_det_size) + double precision, allocatable :: psi_coef_sorted (psi_det_size,N_states) + double precision, allocatable :: psi_average_norm_contrib_sorted (psi_det_size) + integer, allocatable :: psi_det_sorted_order (psi_det_size) + + + Wave function sorted by determinants contribution to the norm (state-averaged) + + psi_det_sorted_order(i) -> k : index in psi_det + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_det` + * :c:data:`n_int` + * :c:data:`n_states` + * :c:data:`psi_average_norm_contrib` + * :c:data:`psi_coef` + * :c:data:`psi_det` + * :c:data:`psi_det_size` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`n_det_generators` + * :c:data:`n_det_selectors` + * :c:data:`psi_det_generators` + * :c:data:`psi_det_sorted_gen` + * :c:data:`psi_selectors` + + +.. c:var:: psi_det_sorted_bit + + + File : :file:`determinants/determinants.irp.f` + + .. code:: fortran + + integer(bit_kind), allocatable :: psi_det_sorted_bit (N_int,2,psi_det_size) + double precision, allocatable :: psi_coef_sorted_bit (psi_det_size,N_states) + + + Determinants on which we apply :math:`\langle i|H|psi \rangle` for perturbation. + They are sorted by determinants interpreted as integers. Useful + to accelerate the search of a random determinant in the wave + function. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_det` + * :c:data:`n_int` + * :c:data:`n_states` + * :c:data:`psi_coef` + * :c:data:`psi_det` + * :c:data:`psi_det_size` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`psi_bilinear_matrix_transp_values` + * :c:data:`psi_bilinear_matrix_values` + + +.. c:var:: psi_det_sorted_order + + + File : :file:`determinants/determinants.irp.f` + + .. code:: fortran + + integer(bit_kind), allocatable :: psi_det_sorted (N_int,2,psi_det_size) + double precision, allocatable :: psi_coef_sorted (psi_det_size,N_states) + double precision, allocatable :: psi_average_norm_contrib_sorted (psi_det_size) + integer, allocatable :: psi_det_sorted_order (psi_det_size) + + + Wave function sorted by determinants contribution to the norm (state-averaged) + + psi_det_sorted_order(i) -> k : index in psi_det + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_det` + * :c:data:`n_int` + * :c:data:`n_states` + * :c:data:`psi_average_norm_contrib` + * :c:data:`psi_coef` + * :c:data:`psi_det` + * :c:data:`psi_det_size` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`n_det_generators` + * :c:data:`n_det_selectors` + * :c:data:`psi_det_generators` + * :c:data:`psi_det_sorted_gen` + * :c:data:`psi_selectors` + + +.. c:var:: psi_energy_h_core + + + File : :file:`determinants/psi_energy_mono_elec.irp.f` + + .. code:: fortran + + double precision, allocatable :: psi_energy_h_core (N_states) + + + psi_energy_h_core = :math:`\langle \Psi | h_{core} |\Psi \rangle` + + computed using the :c:data:`one_e_dm_mo_alpha` + + :c:data:`one_e_dm_mo_beta` and :c:data:`mo_one_e_integrals` + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`elec_alpha_num` + * :c:data:`elec_beta_num` + * :c:data:`mo_num` + * :c:data:`mo_one_e_integrals` + * :c:data:`n_states` + * :c:data:`one_e_dm_mo_alpha` + + + +.. c:var:: psi_non_cas + + + File : :file:`determinants/psi_cas.irp.f` + + .. code:: fortran + + integer(bit_kind), allocatable :: psi_non_cas (N_int,2,psi_det_size) + double precision, allocatable :: psi_non_cas_coef (psi_det_size,n_states) + integer, allocatable :: idx_non_cas (psi_det_size) + integer :: n_det_non_cas + + + Set of determinants which are not part of the |CAS|, defined from the application + of the |CAS| bitmask on the determinants. + idx_non_cas gives the indice of the determinant in psi_det. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_det` + * :c:data:`n_int` + * :c:data:`n_states` + * :c:data:`psi_cas` + * :c:data:`psi_coef` + * :c:data:`psi_det` + * :c:data:`psi_det_size` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`psi_non_cas_sorted_bit` + + +.. c:var:: psi_non_cas_coef + + + File : :file:`determinants/psi_cas.irp.f` + + .. code:: fortran + + integer(bit_kind), allocatable :: psi_non_cas (N_int,2,psi_det_size) + double precision, allocatable :: psi_non_cas_coef (psi_det_size,n_states) + integer, allocatable :: idx_non_cas (psi_det_size) + integer :: n_det_non_cas + + + Set of determinants which are not part of the |CAS|, defined from the application + of the |CAS| bitmask on the determinants. + idx_non_cas gives the indice of the determinant in psi_det. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_det` + * :c:data:`n_int` + * :c:data:`n_states` + * :c:data:`psi_cas` + * :c:data:`psi_coef` + * :c:data:`psi_det` + * :c:data:`psi_det_size` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`psi_non_cas_sorted_bit` + + +.. c:var:: psi_non_cas_coef_sorted_bit + + + File : :file:`determinants/psi_cas.irp.f` + + .. code:: fortran + + integer(bit_kind), allocatable :: psi_non_cas_sorted_bit (N_int,2,psi_det_size) + double precision, allocatable :: psi_non_cas_coef_sorted_bit (psi_det_size,N_states) + + + |CAS| determinants sorted to accelerate the search of a random determinant in the wave + function. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_int` + * :c:data:`n_states` + * :c:data:`psi_cas` + * :c:data:`psi_det_size` + * :c:data:`psi_non_cas` + + + +.. c:var:: psi_non_cas_sorted_bit + + + File : :file:`determinants/psi_cas.irp.f` + + .. code:: fortran + + integer(bit_kind), allocatable :: psi_non_cas_sorted_bit (N_int,2,psi_det_size) + double precision, allocatable :: psi_non_cas_coef_sorted_bit (psi_det_size,N_states) + + + |CAS| determinants sorted to accelerate the search of a random determinant in the wave + function. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_int` + * :c:data:`n_states` + * :c:data:`psi_cas` + * :c:data:`psi_det_size` + * :c:data:`psi_non_cas` + + + +.. c:var:: psi_occ_pattern + + + File : :file:`determinants/occ_pattern.irp.f` + + .. code:: fortran + + integer(bit_kind), allocatable :: psi_occ_pattern (N_int,2,psi_det_size) + integer :: n_occ_pattern + + + Array of the occ_patterns present in the wave function. + + psi_occ_pattern(:,1,j) = j-th occ_pattern of the wave function : represents all the single occupations + + psi_occ_pattern(:,2,j) = j-th occ_pattern of the wave function : represents all the double occupations + + The occ patterns are sorted by :c:func:`occ_pattern_search_key` + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`elec_alpha_num` + * :c:data:`n_det` + * :c:data:`n_int` + * :c:data:`psi_det` + * :c:data:`psi_det_size` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`det_to_occ_pattern` + * :c:data:`psi_occ_pattern_hii` + * :c:data:`weight_occ_pattern` + + +.. c:var:: psi_occ_pattern_hii + + + File : :file:`determinants/occ_pattern.irp.f` + + .. code:: fortran + + double precision, allocatable :: psi_occ_pattern_hii (N_occ_pattern) + + + :math:`\langle I|H|I \rangle` where :math:`|I\rangle` is an occupation pattern. + This is the minimum :math:`H_{ii}` , where the :math:`|i\rangle` are the + determinants of :math:`|I\rangle` . + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`det_to_occ_pattern` + * :c:data:`n_det` + * :c:data:`psi_det_hii` + * :c:data:`psi_occ_pattern` + + + +.. c:var:: ref_bitmask_e_n_energy + + + File : :file:`determinants/ref_bitmask.irp.f` + + .. code:: fortran + + double precision :: ref_bitmask_energy + double precision :: ref_bitmask_one_e_energy + double precision :: ref_bitmask_kinetic_energy + double precision :: ref_bitmask_e_n_energy + double precision :: ref_bitmask_two_e_energy + + + Energy of the reference bitmask used in Slater rules + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`elec_alpha_num` + * :c:data:`elec_beta_num` + * :c:data:`mo_integrals_n_e` + * :c:data:`mo_kinetic_integrals` + * :c:data:`mo_one_e_integrals` + * :c:data:`mo_two_e_integrals_jj` + * :c:data:`n_int` + * :c:data:`ref_bitmask` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`coef_hf_selector` + * :c:data:`diagonal_h_matrix_on_psi_det` + * :c:data:`psi_det_hii` + * :c:data:`psi_selectors_diag_h_mat` + + +.. c:var:: ref_bitmask_energy + + + File : :file:`determinants/ref_bitmask.irp.f` + + .. code:: fortran + + double precision :: ref_bitmask_energy + double precision :: ref_bitmask_one_e_energy + double precision :: ref_bitmask_kinetic_energy + double precision :: ref_bitmask_e_n_energy + double precision :: ref_bitmask_two_e_energy + + + Energy of the reference bitmask used in Slater rules + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`elec_alpha_num` + * :c:data:`elec_beta_num` + * :c:data:`mo_integrals_n_e` + * :c:data:`mo_kinetic_integrals` + * :c:data:`mo_one_e_integrals` + * :c:data:`mo_two_e_integrals_jj` + * :c:data:`n_int` + * :c:data:`ref_bitmask` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`coef_hf_selector` + * :c:data:`diagonal_h_matrix_on_psi_det` + * :c:data:`psi_det_hii` + * :c:data:`psi_selectors_diag_h_mat` + + +.. c:var:: ref_bitmask_kinetic_energy + + + File : :file:`determinants/ref_bitmask.irp.f` + + .. code:: fortran + + double precision :: ref_bitmask_energy + double precision :: ref_bitmask_one_e_energy + double precision :: ref_bitmask_kinetic_energy + double precision :: ref_bitmask_e_n_energy + double precision :: ref_bitmask_two_e_energy + + + Energy of the reference bitmask used in Slater rules + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`elec_alpha_num` + * :c:data:`elec_beta_num` + * :c:data:`mo_integrals_n_e` + * :c:data:`mo_kinetic_integrals` + * :c:data:`mo_one_e_integrals` + * :c:data:`mo_two_e_integrals_jj` + * :c:data:`n_int` + * :c:data:`ref_bitmask` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`coef_hf_selector` + * :c:data:`diagonal_h_matrix_on_psi_det` + * :c:data:`psi_det_hii` + * :c:data:`psi_selectors_diag_h_mat` + + +.. c:var:: ref_bitmask_one_e_energy + + + File : :file:`determinants/ref_bitmask.irp.f` + + .. code:: fortran + + double precision :: ref_bitmask_energy + double precision :: ref_bitmask_one_e_energy + double precision :: ref_bitmask_kinetic_energy + double precision :: ref_bitmask_e_n_energy + double precision :: ref_bitmask_two_e_energy + + + Energy of the reference bitmask used in Slater rules + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`elec_alpha_num` + * :c:data:`elec_beta_num` + * :c:data:`mo_integrals_n_e` + * :c:data:`mo_kinetic_integrals` + * :c:data:`mo_one_e_integrals` + * :c:data:`mo_two_e_integrals_jj` + * :c:data:`n_int` + * :c:data:`ref_bitmask` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`coef_hf_selector` + * :c:data:`diagonal_h_matrix_on_psi_det` + * :c:data:`psi_det_hii` + * :c:data:`psi_selectors_diag_h_mat` + + +.. c:var:: ref_bitmask_two_e_energy + + + File : :file:`determinants/ref_bitmask.irp.f` + + .. code:: fortran + + double precision :: ref_bitmask_energy + double precision :: ref_bitmask_one_e_energy + double precision :: ref_bitmask_kinetic_energy + double precision :: ref_bitmask_e_n_energy + double precision :: ref_bitmask_two_e_energy + + + Energy of the reference bitmask used in Slater rules + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`elec_alpha_num` + * :c:data:`elec_beta_num` + * :c:data:`mo_integrals_n_e` + * :c:data:`mo_kinetic_integrals` + * :c:data:`mo_one_e_integrals` + * :c:data:`mo_two_e_integrals_jj` + * :c:data:`n_int` + * :c:data:`ref_bitmask` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`coef_hf_selector` + * :c:data:`diagonal_h_matrix_on_psi_det` + * :c:data:`psi_det_hii` + * :c:data:`psi_selectors_diag_h_mat` + + +.. c:var:: ref_closed_shell_bitmask + + + File : :file:`determinants/single_excitations.irp.f` + + .. code:: fortran + + integer(bit_kind), allocatable :: ref_closed_shell_bitmask (N_int,2) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`elec_alpha_num` + * :c:data:`elec_beta_num` + * :c:data:`n_int` + * :c:data:`ref_bitmask` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`fock_operator_closed_shell_ref_bitmask` + * :c:data:`fock_wee_closed_shell` + + +.. c:var:: s2_matrix_all_dets + + + File : :file:`determinants/utils.irp.f` + + .. code:: fortran + + double precision, allocatable :: s2_matrix_all_dets (N_det,N_det) + + + |S^2| matrix on the basis of the Slater determinants defined by psi_det + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_det` + * :c:data:`n_int` + * :c:data:`psi_det` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ci_electronic_energy` + + +.. c:var:: s2_values + + + File : :file:`determinants/s2.irp.f` + + .. code:: fortran + + double precision, allocatable :: s2_values (N_states) + + + array of the averaged values of the S^2 operator on the various states + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_det` + * :c:data:`n_int` + * :c:data:`n_states` + * :c:data:`psi_coef` + * :c:data:`psi_det` + * :c:data:`psi_det_size` + * :c:data:`s_z` + + + +.. c:var:: s_z + + + File : :file:`determinants/s2.irp.f` + + .. code:: fortran + + double precision :: s_z + double precision :: s_z2_sz + + + z component of the Spin + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`elec_alpha_num` + * :c:data:`elec_beta_num` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ci_electronic_energy` + * :c:data:`s2_values` + + +.. c:var:: s_z2_sz + + + File : :file:`determinants/s2.irp.f` + + .. code:: fortran + + double precision :: s_z + double precision :: s_z2_sz + + + z component of the Spin + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`elec_alpha_num` + * :c:data:`elec_beta_num` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ci_electronic_energy` + * :c:data:`s2_values` + + +.. c:var:: single_exc_bitmask + + + File : :file:`determinants/determinants_bitmasks.irp.f` + + .. code:: fortran + + integer(bit_kind), allocatable :: single_exc_bitmask (N_int,2,N_single_exc_bitmasks) + + + single_exc_bitmask(:,1,i) is the bitmask for holes + + single_exc_bitmask(:,2,i) is the bitmask for particles + + for a given couple of hole/particle excitations i. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`hf_bitmask` + * :c:data:`n_int` + * :c:data:`n_single_exc_bitmasks` + + + +.. c:var:: singles_alpha_csc + + + File : :file:`determinants/spindeterminants.irp.f` + + .. code:: fortran + + integer, allocatable :: singles_alpha_csc (singles_alpha_csc_size) + + + Indices of all single excitations + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_int` + * :c:data:`psi_det_alpha_unique` + * :c:data:`singles_alpha_csc_idx` + + + +.. c:var:: singles_alpha_csc_idx + + + File : :file:`determinants/spindeterminants.irp.f` + + .. code:: fortran + + integer*8, allocatable :: singles_alpha_csc_idx (N_det_alpha_unique+1) + integer*8 :: singles_alpha_csc_size + + + singles_alpha_csc_size : Dimension of the :c:data:`singles_alpha_csc` array + + singles_alpha_csc_idx : Index where the single excitations of determinant i start + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`elec_alpha_num` + * :c:data:`mo_num` + * :c:data:`n_int` + * :c:data:`psi_det_alpha_unique` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`singles_alpha_csc` + + +.. c:var:: singles_alpha_csc_size + + + File : :file:`determinants/spindeterminants.irp.f` + + .. code:: fortran + + integer*8, allocatable :: singles_alpha_csc_idx (N_det_alpha_unique+1) + integer*8 :: singles_alpha_csc_size + + + singles_alpha_csc_size : Dimension of the :c:data:`singles_alpha_csc` array + + singles_alpha_csc_idx : Index where the single excitations of determinant i start + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`elec_alpha_num` + * :c:data:`mo_num` + * :c:data:`n_int` + * :c:data:`psi_det_alpha_unique` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`singles_alpha_csc` + + +.. c:var:: singles_beta_csc + + + File : :file:`determinants/spindeterminants.irp.f` + + .. code:: fortran + + integer, allocatable :: singles_beta_csc (singles_beta_csc_size) + + + Indices of all single excitations + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_int` + * :c:data:`psi_det_beta_unique` + * :c:data:`singles_beta_csc_idx` + + + +.. c:var:: singles_beta_csc_idx + + + File : :file:`determinants/spindeterminants.irp.f` + + .. code:: fortran + + integer*8, allocatable :: singles_beta_csc_idx (N_det_beta_unique+1) + integer*8 :: singles_beta_csc_size + + + singles_beta_csc_size : Dimension of the :c:data:`singles_beta_csc` array + + singles_beta_csc_idx : Index where the single excitations of determinant i start + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`elec_beta_num` + * :c:data:`mo_num` + * :c:data:`n_int` + * :c:data:`psi_det_beta_unique` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`singles_beta_csc` + + +.. c:var:: singles_beta_csc_size + + + File : :file:`determinants/spindeterminants.irp.f` + + .. code:: fortran + + integer*8, allocatable :: singles_beta_csc_idx (N_det_beta_unique+1) + integer*8 :: singles_beta_csc_size + + + singles_beta_csc_size : Dimension of the :c:data:`singles_beta_csc` array + + singles_beta_csc_idx : Index where the single excitations of determinant i start + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`elec_beta_num` + * :c:data:`mo_num` + * :c:data:`n_int` + * :c:data:`psi_det_beta_unique` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`singles_beta_csc` + + +.. c:var:: state_average_weight + + + File : :file:`determinants/density_matrix.irp.f` + + .. code:: fortran + + double precision, allocatable :: state_average_weight (N_states) + + + Weights in the state-average calculation of the density matrix + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`c0_weight` + * :c:data:`n_states` + * :c:data:`used_weight` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`det_alpha_norm` + * :c:data:`one_e_dm_mo_alpha_average` + * :c:data:`psi_average_norm_contrib` + + +.. c:var:: weight_occ_pattern + + + File : :file:`determinants/occ_pattern.irp.f` + + .. code:: fortran + + double precision, allocatable :: weight_occ_pattern (N_occ_pattern,N_states) + + + Weight of the occupation patterns in the wave function + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`det_to_occ_pattern` + * :c:data:`n_det` + * :c:data:`n_states` + * :c:data:`psi_coef` + * :c:data:`psi_occ_pattern` + + + + +Subroutines / functions +----------------------- + +.. c:function:: a_operator: + + + File : :file:`determinants/slater_rules.irp.f` + + .. code:: fortran + + subroutine a_operator(iorb,ispin,key,hjj,Nint,na,nb) + + + Needed for :c:func:`diag_H_mat_elem`. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_two_e_integrals_jj` + * :c:data:`mo_one_e_integrals` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`diag_h_mat_elem` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`bitstring_to_list_ab` + + +.. c:function:: a_operator_two_e: + + + File : :file:`determinants/slater_rules_wee_mono.irp.f` + + .. code:: fortran + + subroutine a_operator_two_e(iorb,ispin,key,hjj,Nint,na,nb) + + + Needed for :c:func:`diag_Wee_mat_elem`. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_two_e_integrals_jj` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`diag_wee_mat_elem` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`bitstring_to_list_ab` + + +.. c:function:: ac_operator: + + + File : :file:`determinants/slater_rules.irp.f` + + .. code:: fortran + + subroutine ac_operator(iorb,ispin,key,hjj,Nint,na,nb) + + + Needed for :c:func:`diag_H_mat_elem`. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_two_e_integrals_jj` + * :c:data:`mo_one_e_integrals` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`diag_h_mat_elem` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`bitstring_to_list_ab` + + +.. c:function:: ac_operator_two_e: + + + File : :file:`determinants/slater_rules_wee_mono.irp.f` + + .. code:: fortran + + subroutine ac_operator_two_e(iorb,ispin,key,hjj,Nint,na,nb) + + + Needed for :c:func:`diag_Wee_mat_elem`. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_two_e_integrals_jj` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`diag_wee_mat_elem` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`bitstring_to_list_ab` + + +.. c:function:: apply_excitation: + + + File : :file:`determinants/determinants.irp.f` + + .. code:: fortran + + subroutine apply_excitation(det, exc, res, ok, Nint) + + + + +.. c:function:: apply_hole: + + + File : :file:`determinants/determinants.irp.f` + + .. code:: fortran + + subroutine apply_hole(det, s1, h1, res, ok, Nint) + + + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`select_singles_and_doubles` + + +.. c:function:: apply_holes: + + + File : :file:`determinants/determinants.irp.f` + + .. code:: fortran + + subroutine apply_holes(det, s1, h1, s2, h2, res, ok, Nint) + + + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`fill_buffer_double` + + +.. c:function:: apply_particle: + + + File : :file:`determinants/determinants.irp.f` + + .. code:: fortran + + subroutine apply_particle(det, s1, p1, res, ok, Nint) + + + + +.. c:function:: apply_particles: + + + File : :file:`determinants/determinants.irp.f` + + .. code:: fortran + + subroutine apply_particles(det, s1, p1, s2, p2, res, ok, Nint) + + + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`fill_buffer_double` + * :c:func:`get_d0` + * :c:func:`get_d1` + + +.. c:function:: bitstring_to_list_ab: + + + File : :file:`determinants/slater_rules.irp.f` + + .. code:: fortran + + subroutine bitstring_to_list_ab( string, list, n_elements, Nint) + + + Gives the inidices(+1) of the bits set to 1 in the bit string + For alpha/beta determinants. + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`a_operator` + * :c:func:`a_operator_two_e` + * :c:func:`ac_operator` + * :c:func:`ac_operator_two_e` + * :c:func:`build_fock_tmp` + * :c:func:`diag_h_mat_elem` + * :c:func:`diag_h_mat_elem_one_e` + * :c:func:`diag_wee_mat_elem` + * :c:func:`example_determinants` + * :c:data:`fock_operator_closed_shell_ref_bitmask` + * :c:data:`fock_wee_closed_shell` + * :c:func:`get_mono_excitation_from_fock` + * :c:func:`get_occupation_from_dets` + * :c:func:`i_h_j` + * :c:func:`i_h_j_s2` + * :c:func:`i_h_j_two_e` + * :c:func:`i_h_j_verbose` + * :c:func:`mono_excitation_wee` + * :c:data:`one_e_dm_mo_alpha` + * :c:data:`ref_closed_shell_bitmask` + * :c:func:`select_singles_and_doubles` + + +.. c:function:: build_fock_tmp: + + + File : :file:`determinants/fock_diag.irp.f` + + .. code:: fortran + + subroutine build_fock_tmp(fock_diag_tmp,det_ref,Nint) + + + Build the diagonal of the Fock matrix corresponding to a generator + determinant. $F_{00}$ is $\langle i|H|i \rangle = E_0$. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`elec_beta_num` + * :c:data:`mo_num` + * :c:data:`mo_one_e_integrals` + * :c:data:`elec_alpha_num` + * :c:data:`mo_two_e_integrals_jj` + * :c:data:`n_int` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`select_connected` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`bitstring_to_list_ab` + * :c:func:`debug_det` + + +.. c:function:: connected_to_ref: + + + File : :file:`determinants/connected_to_ref.irp.f` + + .. code:: fortran + + integer function connected_to_ref(key,keys,Nint,N_past_in,Ndet) + + + input : key : a given Slater determinant + + : keys: a list of Slater determinants + + : Ndet: the number of Slater determinants in keys + + : N_past_in the number of Slater determinants for the connectivity research + + output : 0 : key not connected to the N_past_in first Slater determinants in keys + + i : key is connected to determinant i of keys + + -i : key is the ith determinant of the reference wf keys + + +.. c:function:: connected_to_ref_by_mono: + + + File : :file:`determinants/connected_to_ref.irp.f` + + .. code:: fortran + + integer function connected_to_ref_by_mono(key,keys,Nint,N_past_in,Ndet) + + + Returns |true| is ``key`` is connected to the reference by a single excitation. + input : key : a given Slater determinant + + : keys: a list of Slater determinants + + : Ndet: the number of Slater determinants in keys + + : N_past_in the number of Slater determinants for the connectivity research + + output : 0 : key not connected by a MONO EXCITATION to the N_past_in first Slater determinants in keys + + i : key is connected by a MONO EXCITATION to determinant i of keys + + -i : key is the ith determinant of the reference wf keys + + +.. c:function:: copy_h_apply_buffer_to_wf: + + + File : :file:`determinants/h_apply.irp.f` + + .. code:: fortran + + subroutine copy_H_apply_buffer_to_wf + + + Copies the H_apply buffer to psi_coef. + After calling this subroutine, N_det, psi_det and psi_coef need to be touched + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`psi_coef` + * :c:data:`n_states` + * :c:data:`h_apply_buffer_allocated` + * :c:data:`n_det` + * :c:data:`psi_det_size` + * :c:data:`n_int` + * :c:data:`nproc` + * :c:data:`psi_det` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`generate_all_alpha_beta_det_products` + * :c:func:`make_s2_eigenfunction` + * :c:func:`run_stochastic_cipsi` + * :c:func:`zmq_selection` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`normalize` + * :c:func:`remove_duplicates_in_psi_det` + + Touches: + + .. hlist:: + :columns: 3 + + * :c:data:`n_det` + * :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:function:: copy_psi_bilinear_to_psi: + + + File : :file:`determinants/spindeterminants.irp.f` + + .. code:: fortran + + subroutine copy_psi_bilinear_to_psi(psi, isize) + + + Overwrites :c:data:`psi_det` and :c:data:`psi_coef` with the wave function + in bilinear order + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`psi_det_beta_unique` + * :c:data:`psi_det_alpha_unique` + * :c:data:`psi_bilinear_matrix_values` + * :c:data:`n_int` + + +.. c:function:: create_microlist: + + + File : :file:`determinants/filter_connected.irp.f` + + .. code:: fortran + + subroutine create_microlist(minilist, N_minilist, key_mask, microlist, idx_microlist, N_microlist, ptr_microlist, Nint) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_num` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`perturb_buffer_dummy` + * :c:func:`perturb_buffer_epstein_nesbet` + * :c:func:`perturb_buffer_epstein_nesbet_2x2` + * :c:func:`perturb_buffer_epstein_nesbet_2x2_no_ci_diag` + * :c:func:`perturb_buffer_moller_plesset` + * :c:func:`perturb_buffer_qdpt` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`bitstring_to_list` + + +.. c:function:: create_minilist: + + + File : :file:`determinants/slater_rules.irp.f` + + .. code:: fortran + + subroutine create_minilist(key_mask, fullList, miniList, idx_miniList, N_fullList, N_miniList, Nint) + + + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`perturb_buffer_by_mono_dummy` + * :c:func:`perturb_buffer_by_mono_epstein_nesbet` + * :c:func:`perturb_buffer_by_mono_epstein_nesbet_2x2` + * :c:func:`perturb_buffer_by_mono_epstein_nesbet_2x2_no_ci_diag` + * :c:func:`perturb_buffer_by_mono_moller_plesset` + * :c:func:`perturb_buffer_by_mono_qdpt` + * :c:func:`perturb_buffer_dummy` + * :c:func:`perturb_buffer_epstein_nesbet` + * :c:func:`perturb_buffer_epstein_nesbet_2x2` + * :c:func:`perturb_buffer_epstein_nesbet_2x2_no_ci_diag` + * :c:func:`perturb_buffer_moller_plesset` + * :c:func:`perturb_buffer_qdpt` + + +.. c:function:: create_minilist_find_previous: + + + File : :file:`determinants/slater_rules.irp.f` + + .. code:: fortran + + subroutine create_minilist_find_previous(key_mask, fullList, miniList, N_fullList, N_miniList, fullMatch, Nint) + + + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`perturb_buffer_by_mono_dummy` + * :c:func:`perturb_buffer_by_mono_epstein_nesbet` + * :c:func:`perturb_buffer_by_mono_epstein_nesbet_2x2` + * :c:func:`perturb_buffer_by_mono_epstein_nesbet_2x2_no_ci_diag` + * :c:func:`perturb_buffer_by_mono_moller_plesset` + * :c:func:`perturb_buffer_by_mono_qdpt` + * :c:func:`perturb_buffer_dummy` + * :c:func:`perturb_buffer_epstein_nesbet` + * :c:func:`perturb_buffer_epstein_nesbet_2x2` + * :c:func:`perturb_buffer_epstein_nesbet_2x2_no_ci_diag` + * :c:func:`perturb_buffer_moller_plesset` + * :c:func:`perturb_buffer_qdpt` + + +.. c:function:: create_wf_of_psi_bilinear_matrix: + + + File : :file:`determinants/spindeterminants.irp.f` + + .. code:: fortran + + subroutine create_wf_of_psi_bilinear_matrix(truncate) + + + Generates a wave function containing all possible products + of $\alpha$ and $\beta$ determinants + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`psi_coef` + * :c:data:`psi_det_beta_unique` + * :c:data:`psi_det_alpha_unique` + * :c:data:`psi_det_sorted_bit` + * :c:data:`n_states` + * :c:data:`n_det` + * :c:data:`psi_bilinear_matrix` + * :c:data:`n_int` + * :c:data:`psi_det` + * :c:data:`psi_det_sorted` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`generate_all_alpha_beta_det_products` + + Touches: + + .. hlist:: + :columns: 3 + + * :c:data:`n_det` + * :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:function:: decode_exc: + + + File : :file:`determinants/slater_rules.irp.f` + + .. code:: fortran + + subroutine decode_exc(exc,degree,h1,p1,h2,p2,s1,s2) + + + Decodes the exc arrays returned by get_excitation. + h1,h2 : Holes + p1,p2 : Particles + s1,s2 : Spins (1:alpha, 2:beta) + degree : Degree of excitation + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`diag_h_mat_elem_fock` + * :c:func:`example_determinants` + * :c:func:`pt2_moller_plesset` + + +.. c:function:: decode_exc_spin: + + + File : :file:`determinants/slater_rules.irp.f` + + .. code:: fortran + + subroutine decode_exc_spin(exc,h1,p1,h2,p2) + + + Decodes the exc arrays returned by get_excitation. + + h1,h2 : Holes + + p1,p2 : Particles + + Called by: + + .. hlist:: + :columns: 3 + + * :c:data:`one_e_dm_mo_alpha` + + +.. c:function:: det_inf: + + + File : :file:`determinants/sort_dets_ab.irp.f` + + .. code:: fortran + + logical function det_inf(key1, key2, Nint) + + + Ordering function for determinants. + + +.. c:function:: det_search_key: + + + File : :file:`determinants/connected_to_ref.irp.f` + + .. code:: fortran + + integer*8 function det_search_key(det,Nint) + + + Return an integer*8 corresponding to a determinant index for searching + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`elec_alpha_num` + + +.. c:function:: detcmp: + + + File : :file:`determinants/determinants.irp.f` + + .. code:: fortran + + integer function detCmp(a,b,Nint) + + + + +.. c:function:: deteq: + + + File : :file:`determinants/determinants.irp.f` + + .. code:: fortran + + logical function detEq(a,b,Nint) + + + + +.. c:function:: diag_h_mat_elem: + + + File : :file:`determinants/slater_rules.irp.f` + + .. code:: fortran + + double precision function diag_H_mat_elem(det_in,Nint) + + + Computes $\langle i|H|i \rangle$. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ref_bitmask_energy` + * :c:data:`elec_num` + * :c:data:`ref_bitmask` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`a_operator` + * :c:func:`ac_operator` + * :c:func:`bitstring_to_list_ab` + + +.. c:function:: diag_h_mat_elem_fock: + + + File : :file:`determinants/slater_rules.irp.f` + + .. code:: fortran + + double precision function diag_H_mat_elem_fock(det_ref,det_pert,fock_diag_tmp,Nint) + + + Computes $\langle i|H|i \rangle$ when $i$ is at most a double excitation from + a reference. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_two_e_integrals_jj` + * :c:data:`mo_num` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`decode_exc` + * :c:func:`get_double_excitation` + * :c:func:`get_excitation_degree` + * :c:func:`get_mono_excitation` + + +.. c:function:: diag_h_mat_elem_one_e: + + + File : :file:`determinants/slater_rules_wee_mono.irp.f` + + .. code:: fortran + + double precision function diag_H_mat_elem_one_e(det_in,Nint) + + + Computes $\langle i|H|i \rangle$. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_one_e_integrals` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`bitstring_to_list_ab` + + +.. c:function:: diag_s_mat_elem: + + + File : :file:`determinants/s2.irp.f` + + .. code:: fortran + + double precision function diag_S_mat_elem(key_i,Nint) + + + Returns + + +.. c:function:: diag_wee_mat_elem: + + + File : :file:`determinants/slater_rules_wee_mono.irp.f` + + .. code:: fortran + + double precision function diag_wee_mat_elem(det_in,Nint) + + + Computes $\langle i|H|i \rangle$. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ref_bitmask_energy` + * :c:data:`elec_num` + * :c:data:`ref_bitmask` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`a_operator_two_e` + * :c:func:`ac_operator_two_e` + * :c:func:`bitstring_to_list_ab` + + +.. c:function:: do_mono_excitation: + + + File : :file:`determinants/create_excitations.irp.f` + + .. code:: fortran + + subroutine do_mono_excitation(key_in,i_hole,i_particle,ispin,i_ok) + + + Apply the single excitation operator : a^{dager}_(i_particle) a_(i_hole) of spin = ispin + on key_in + ispin = 1 == alpha + ispin = 2 == beta + i_ok = 1 == the excitation is possible + i_ok = -1 == the excitation is not possible + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`elec_num` + * :c:data:`n_int` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`example_determinants` + + +.. c:function:: example_determinants: + + + File : :file:`determinants/example.irp.f` + + .. code:: fortran + + subroutine example_determinants + + + subroutine that illustrates the main features available in determinants + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ref_bitmask` + * :c:data:`elec_alpha_num` + * :c:data:`n_int` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`bitstring_to_list_ab` + * :c:func:`debug_det` + * :c:func:`decode_exc` + * :c:func:`do_mono_excitation` + * :c:func:`get_excitation` + * :c:func:`get_excitation_degree` + * :c:func:`i_h_j` + * :c:func:`print_det` + + +.. c:function:: example_determinants_psi_det: + + + File : :file:`determinants/example.irp.f` + + .. code:: fortran + + subroutine example_determinants_psi_det + + + subroutine that illustrates the main features available in determinants using the psi_det/psi_coef + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`read_wf` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`routine_example_psi_det` + + Touches: + + .. hlist:: + :columns: 3 + + * :c:data:`read_wf` + + +.. c:function:: fill_h_apply_buffer_no_selection: + + + File : :file:`determinants/h_apply.irp.f` + + .. code:: fortran + + subroutine fill_H_apply_buffer_no_selection(n_selected,det_buffer,Nint,iproc) + + + Fill the H_apply buffer with determiants for |CISD| + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_states` + * :c:data:`h_apply_buffer_allocated` + * :c:data:`n_det` + * :c:data:`n_int` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`generate_all_alpha_beta_det_products` + * :c:func:`make_s2_eigenfunction` + * :c:func:`zmq_pt2` + * :c:func:`zmq_selection` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`omp_set_lock` + * :c:func:`omp_unset_lock` + * :c:func:`resize_h_apply_buffer` + + +.. c:function:: filter_connected: + + + File : :file:`determinants/filter_connected.irp.f` + + .. code:: fortran + + subroutine filter_connected(key1,key2,Nint,sze,idx) + + + Filters out the determinants that are not connected by H + + returns the array idx which contains the index of the + + determinants in the array key1 that interact + + via the H operator with key2. + + idx(0) is the number of determinants that interact with key1 + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`get_uj_s2_ui` + + +.. c:function:: filter_connected_i_h_psi0: + + + File : :file:`determinants/filter_connected.irp.f` + + .. code:: fortran + + subroutine filter_connected_i_H_psi0(key1,key2,Nint,sze,idx) + + + Returns the array idx which contains the index of the + + determinants in the array key1 that interact + + via the H operator with key2. + + idx(0) is the number of determinants that interact with key1 + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`i_h_psi` + * :c:func:`i_h_psi_minilist` + * :c:func:`i_s2_psi_minilist` + + +.. c:function:: filter_not_connected: + + + File : :file:`determinants/filter_connected.irp.f` + + .. code:: fortran + + subroutine filter_not_connected(key1,key2,Nint,sze,idx) + + + Returns the array idx which contains the index of the + + determinants in the array key1 that DO NOT interact + + via the H operator with key2. + + idx(0) is the number of determinants that DO NOT interact with key1 + + +.. c:function:: generate_all_alpha_beta_det_products: + + + File : :file:`determinants/spindeterminants.irp.f` + + .. code:: fortran + + subroutine generate_all_alpha_beta_det_products + + + Creates a wave function from all possible $\alpha \times \beta$ determinants + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`psi_coef` + * :c:data:`psi_det_beta_unique` + * :c:data:`psi_det_alpha_unique` + * :c:data:`h_apply_buffer_allocated` + * :c:data:`n_det` + * :c:data:`n_int` + * :c:data:`psi_det` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`create_wf_of_psi_bilinear_matrix` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`copy_h_apply_buffer_to_wf` + * :c:func:`fill_h_apply_buffer_no_selection` + + Touches: + + .. hlist:: + :columns: 3 + + * :c:data:`n_det` + * :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:function:: get_all_spin_doubles: + + + File : :file:`determinants/spindeterminants.irp.f` + + .. code:: fortran + + subroutine get_all_spin_doubles(buffer, idx, spindet, Nint, size_buffer, doubles, n_doubles) + + + + Returns the indices of all the double excitations in the list of + unique $\alpha$ determinants. + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_int` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`get_all_spin_doubles_1` + * :c:func:`get_all_spin_doubles_2` + * :c:func:`get_all_spin_doubles_3` + * :c:func:`get_all_spin_doubles_4` + * :c:func:`get_all_spin_doubles_n_int` + + +.. c:function:: get_all_spin_doubles_1: + + + File : :file:`determinants/spindeterminants.irp.f` + + .. code:: fortran + + subroutine get_all_spin_doubles_1(buffer, idx, spindet, size_buffer, doubles, n_doubles) + + + + Returns the indices of all the double excitations in the list of + unique $\alpha$ determinants. + + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`get_all_spin_doubles` + + +.. c:function:: get_all_spin_doubles_2: + + + File : :file:`determinants/spindeterminants.irp.f_template_1291` + + .. code:: fortran + + subroutine get_all_spin_doubles_2(buffer, idx, spindet, size_buffer, doubles, n_doubles) + + + + Returns the indices of all the double excitations in the list of + unique $lpha$ determinants. + + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`get_all_spin_doubles` + + +.. c:function:: get_all_spin_doubles_3: + + + File : :file:`determinants/spindeterminants.irp.f_template_1291` + + .. code:: fortran + + subroutine get_all_spin_doubles_3(buffer, idx, spindet, size_buffer, doubles, n_doubles) + + + + Returns the indices of all the double excitations in the list of + unique $lpha$ determinants. + + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`get_all_spin_doubles` + + +.. c:function:: get_all_spin_doubles_4: + + + File : :file:`determinants/spindeterminants.irp.f_template_1291` + + .. code:: fortran + + subroutine get_all_spin_doubles_4(buffer, idx, spindet, size_buffer, doubles, n_doubles) + + + + Returns the indices of all the double excitations in the list of + unique $lpha$ determinants. + + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`get_all_spin_doubles` + + +.. c:function:: get_all_spin_doubles_n_int: + + + File : :file:`determinants/spindeterminants.irp.f_template_1291` + + .. code:: fortran + + subroutine get_all_spin_doubles_N_int(buffer, idx, spindet, size_buffer, doubles, n_doubles) + + + + Returns the indices of all the double excitations in the list of + unique $lpha$ determinants. + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_int` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`get_all_spin_doubles` + + +.. c:function:: get_all_spin_singles: + + + File : :file:`determinants/spindeterminants.irp.f` + + .. code:: fortran + + subroutine get_all_spin_singles(buffer, idx, spindet, Nint, size_buffer, singles, n_singles) + + + + Returns the indices of all the single excitations in the list of + unique $\alpha$ determinants. + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_int` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:data:`singles_alpha_csc` + * :c:data:`singles_alpha_csc_idx` + * :c:data:`singles_beta_csc` + * :c:data:`singles_beta_csc_idx` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`get_all_spin_singles_1` + * :c:func:`get_all_spin_singles_2` + * :c:func:`get_all_spin_singles_3` + * :c:func:`get_all_spin_singles_4` + * :c:func:`get_all_spin_singles_n_int` + + +.. c:function:: get_all_spin_singles_1: + + + File : :file:`determinants/spindeterminants.irp.f` + + .. code:: fortran + + subroutine get_all_spin_singles_1(buffer, idx, spindet, size_buffer, singles, n_singles) + + + + Returns the indices of all the single excitations in the list of + unique $\alpha$ determinants. + + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`get_all_spin_singles` + * :c:func:`h_s2_u_0_nstates_openmp_work_1` + * :c:func:`h_s2_u_0_two_e_nstates_openmp_work_1` + + +.. c:function:: get_all_spin_singles_2: + + + File : :file:`determinants/spindeterminants.irp.f_template_1291` + + .. code:: fortran + + subroutine get_all_spin_singles_2(buffer, idx, spindet, size_buffer, singles, n_singles) + + + + Returns the indices of all the single excitations in the list of + unique $lpha$ determinants. + + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`get_all_spin_singles` + * :c:func:`h_s2_u_0_nstates_openmp_work_2` + * :c:func:`h_s2_u_0_two_e_nstates_openmp_work_2` + + +.. c:function:: get_all_spin_singles_3: + + + File : :file:`determinants/spindeterminants.irp.f_template_1291` + + .. code:: fortran + + subroutine get_all_spin_singles_3(buffer, idx, spindet, size_buffer, singles, n_singles) + + + + Returns the indices of all the single excitations in the list of + unique $lpha$ determinants. + + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`get_all_spin_singles` + * :c:func:`h_s2_u_0_nstates_openmp_work_3` + * :c:func:`h_s2_u_0_two_e_nstates_openmp_work_3` + + +.. c:function:: get_all_spin_singles_4: + + + File : :file:`determinants/spindeterminants.irp.f_template_1291` + + .. code:: fortran + + subroutine get_all_spin_singles_4(buffer, idx, spindet, size_buffer, singles, n_singles) + + + + Returns the indices of all the single excitations in the list of + unique $lpha$ determinants. + + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`get_all_spin_singles` + * :c:func:`h_s2_u_0_nstates_openmp_work_4` + * :c:func:`h_s2_u_0_two_e_nstates_openmp_work_4` + + +.. c:function:: get_all_spin_singles_and_doubles: + + + File : :file:`determinants/spindeterminants.irp.f` + + .. code:: fortran + + subroutine get_all_spin_singles_and_doubles(buffer, idx, spindet, Nint, size_buffer, singles, doubles, n_singles, n_doubles) + + + + Returns the indices of all the single and double excitations in the list of + unique $\alpha$ determinants. + + Warning: The buffer is transposed. + + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`get_all_spin_singles_and_doubles_1` + * :c:func:`get_all_spin_singles_and_doubles_2` + * :c:func:`get_all_spin_singles_and_doubles_3` + * :c:func:`get_all_spin_singles_and_doubles_4` + * :c:func:`get_all_spin_singles_and_doubles_n_int` + + +.. c:function:: get_all_spin_singles_and_doubles_1: + + + File : :file:`determinants/spindeterminants.irp.f` + + .. code:: fortran + + subroutine get_all_spin_singles_and_doubles_1(buffer, idx, spindet, size_buffer, singles, doubles, n_singles, n_doubles) + + + + Returns the indices of all the single and double excitations in the list of + unique $\alpha$ determinants. + + /!\ : The buffer is transposed ! + + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`get_all_spin_singles_and_doubles` + * :c:func:`h_s2_u_0_nstates_openmp_work_1` + * :c:func:`h_s2_u_0_two_e_nstates_openmp_work_1` + + +.. c:function:: get_all_spin_singles_and_doubles_2: + + + File : :file:`determinants/spindeterminants.irp.f_template_1291` + + .. code:: fortran + + subroutine get_all_spin_singles_and_doubles_2(buffer, idx, spindet, size_buffer, singles, doubles, n_singles, n_doubles) + + + + Returns the indices of all the single and double excitations in the list of + unique $lpha$ determinants. + + /!\ : The buffer is transposed ! + + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`get_all_spin_singles_and_doubles` + * :c:func:`h_s2_u_0_nstates_openmp_work_2` + * :c:func:`h_s2_u_0_two_e_nstates_openmp_work_2` + + +.. c:function:: get_all_spin_singles_and_doubles_3: + + + File : :file:`determinants/spindeterminants.irp.f_template_1291` + + .. code:: fortran + + subroutine get_all_spin_singles_and_doubles_3(buffer, idx, spindet, size_buffer, singles, doubles, n_singles, n_doubles) + + + + Returns the indices of all the single and double excitations in the list of + unique $lpha$ determinants. + + /!\ : The buffer is transposed ! + + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`get_all_spin_singles_and_doubles` + * :c:func:`h_s2_u_0_nstates_openmp_work_3` + * :c:func:`h_s2_u_0_two_e_nstates_openmp_work_3` + + +.. c:function:: get_all_spin_singles_and_doubles_4: + + + File : :file:`determinants/spindeterminants.irp.f_template_1291` + + .. code:: fortran + + subroutine get_all_spin_singles_and_doubles_4(buffer, idx, spindet, size_buffer, singles, doubles, n_singles, n_doubles) + + + + Returns the indices of all the single and double excitations in the list of + unique $lpha$ determinants. + + /!\ : The buffer is transposed ! + + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`get_all_spin_singles_and_doubles` + * :c:func:`h_s2_u_0_nstates_openmp_work_4` + * :c:func:`h_s2_u_0_two_e_nstates_openmp_work_4` + + +.. c:function:: get_all_spin_singles_and_doubles_n_int: + + + File : :file:`determinants/spindeterminants.irp.f_template_1291` + + .. code:: fortran + + subroutine get_all_spin_singles_and_doubles_N_int(buffer, idx, spindet, size_buffer, singles, doubles, n_singles, n_doubles) + + + + Returns the indices of all the single and double excitations in the list of + unique $lpha$ determinants. + + /!\ : The buffer is transposed ! + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_int` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`get_all_spin_singles_and_doubles` + * :c:func:`h_s2_u_0_nstates_openmp_work_n_int` + * :c:func:`h_s2_u_0_two_e_nstates_openmp_work_n_int` + + +.. c:function:: get_all_spin_singles_n_int: + + + File : :file:`determinants/spindeterminants.irp.f_template_1291` + + .. code:: fortran + + subroutine get_all_spin_singles_N_int(buffer, idx, spindet, size_buffer, singles, n_singles) + + + + Returns the indices of all the single excitations in the list of + unique $lpha$ determinants. + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_int` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`get_all_spin_singles` + * :c:func:`h_s2_u_0_nstates_openmp_work_n_int` + * :c:func:`h_s2_u_0_two_e_nstates_openmp_work_n_int` + + +.. c:function:: get_double_excitation: + + + File : :file:`determinants/slater_rules.irp.f` + + .. code:: fortran + + subroutine get_double_excitation(det1,det2,exc,phase,Nint) + + + Returns the two excitation operators between two doubly excited determinants and the phase. + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`diag_h_mat_elem_fock` + * :c:func:`get_excitation` + * :c:func:`get_s2` + * :c:func:`i_h_j` + * :c:func:`i_h_j_s2` + * :c:func:`i_h_j_two_e` + * :c:func:`i_h_j_verbose` + + +.. c:function:: get_double_excitation_spin: + + + File : :file:`determinants/slater_rules.irp.f` + + .. code:: fortran + + subroutine get_double_excitation_spin(det1,det2,exc,phase,Nint) + + + Returns the two excitation operators between two doubly excited spin-determinants + and the phase. + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`get_excitation_spin` + * :c:func:`i_h_j_double_spin` + + +.. c:function:: get_excitation: + + + File : :file:`determinants/slater_rules.irp.f` + + .. code:: fortran + + subroutine get_excitation(det1,det2,exc,degree,phase,Nint) + + + Returns the excitation operators between two determinants and the phase. + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`example_determinants` + * :c:func:`get_phase` + * :c:func:`pt2_moller_plesset` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`get_double_excitation` + * :c:func:`get_excitation_degree` + * :c:func:`get_mono_excitation` + + +.. c:function:: get_excitation_degree: + + + File : :file:`determinants/slater_rules.irp.f` + + .. code:: fortran + + subroutine get_excitation_degree(key1,key2,degree,Nint) + + + Returns the excitation degree between two determinants. + + Called by: + + .. hlist:: + :columns: 3 + + * :c:data:`degree_max_generators` + * :c:func:`diag_h_mat_elem_fock` + * :c:func:`example_determinants` + * :c:data:`exc_degree_per_selectors` + * :c:func:`get_excitation` + * :c:func:`get_s2` + * :c:func:`i_h_j` + * :c:func:`i_h_j_one_e` + * :c:func:`i_h_j_s2` + * :c:func:`i_h_j_two_e` + * :c:func:`i_h_j_verbose` + * :c:data:`max_degree_exc` + * :c:data:`psi_non_cas` + * :c:func:`pt2_qdpt` + + +.. c:function:: get_excitation_degree_spin: + + + File : :file:`determinants/slater_rules.irp.f` + + .. code:: fortran + + subroutine get_excitation_degree_spin(key1,key2,degree,Nint) + + + Returns the excitation degree between two determinants. + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`get_excitation_spin` + * :c:data:`one_e_dm_mo_alpha` + * :c:func:`select_singles_and_doubles` + + +.. c:function:: get_excitation_degree_vector: + + + File : :file:`determinants/slater_rules.irp.f` + + .. code:: fortran + + subroutine get_excitation_degree_vector(key1,key2,degree,Nint,sze,idx) + + + Applies get_excitation_degree to an array of determinants. + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`routine_example_psi_det` + + +.. c:function:: get_excitation_degree_vector_double_alpha_beta: + + + File : :file:`determinants/slater_rules.irp.f` + + .. code:: fortran + + subroutine get_excitation_degree_vector_double_alpha_beta(key1,key2,degree,Nint,sze,idx) + + + Applies get_excitation_degree to an array of determinants and return only the + single excitations and the connections through exchange integrals. + + +.. c:function:: get_excitation_degree_vector_mono: + + + File : :file:`determinants/slater_rules.irp.f` + + .. code:: fortran + + subroutine get_excitation_degree_vector_mono(key1,key2,degree,Nint,sze,idx) + + + Applies get_excitation_degree to an array of determinants and returns only + the single excitations. + + +.. c:function:: get_excitation_degree_vector_mono_or_exchange: + + + File : :file:`determinants/slater_rules.irp.f` + + .. code:: fortran + + subroutine get_excitation_degree_vector_mono_or_exchange(key1,key2,degree,Nint,sze,idx) + + + Applies get_excitation_degree to an array of determinants and return only the + single excitations and the connections through exchange integrals. + + +.. c:function:: get_excitation_degree_vector_mono_or_exchange_verbose: + + + File : :file:`determinants/slater_rules.irp.f` + + .. code:: fortran + + subroutine get_excitation_degree_vector_mono_or_exchange_verbose(key1,key2,degree,Nint,sze,idx) + + + Applies get_excitation_degree to an array of determinants and return only the single + excitations and the connections through exchange integrals. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_int` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`debug_det` + + +.. c:function:: get_excitation_spin: + + + File : :file:`determinants/slater_rules.irp.f` + + .. code:: fortran + + subroutine get_excitation_spin(det1,det2,exc,degree,phase,Nint) + + + Returns the excitation operators between two determinants and the phase. + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`get_double_excitation_spin` + * :c:func:`get_excitation_degree_spin` + * :c:func:`get_mono_excitation_spin` + + +.. c:function:: get_index_in_psi_det_alpha_unique: + + + File : :file:`determinants/spindeterminants.irp.f` + + .. code:: fortran + + integer function get_index_in_psi_det_alpha_unique(key,Nint) + + + Returns the index of the determinant in the :c:data:`psi_det_alpha_unique` array + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`psi_det_alpha_unique` + + +.. c:function:: get_index_in_psi_det_beta_unique: + + + File : :file:`determinants/spindeterminants.irp.f` + + .. code:: fortran + + integer function get_index_in_psi_det_beta_unique(key,Nint) + + + Returns the index of the determinant in the :c:data:`psi_det_beta_unique` array + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`psi_det_beta_unique` + + +.. c:function:: get_index_in_psi_det_sorted_bit: + + + File : :file:`determinants/connected_to_ref.irp.f` + + .. code:: fortran + + integer function get_index_in_psi_det_sorted_bit(key,Nint) + + + Returns the index of the determinant in the ``psi_det_sorted_bit`` array + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`psi_det_sorted_bit` + * :c:data:`n_det` + + +.. c:function:: get_mono_excitation: + + + File : :file:`determinants/slater_rules.irp.f` + + .. code:: fortran + + subroutine get_mono_excitation(det1,det2,exc,phase,Nint) + + + Returns the excitation operator between two singly excited determinants and the phase. + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`diag_h_mat_elem_fock` + * :c:func:`get_excitation` + * :c:func:`i_h_j` + * :c:func:`i_h_j_one_e` + * :c:func:`i_h_j_s2` + * :c:func:`i_h_j_two_e` + * :c:func:`i_h_j_verbose` + + +.. c:function:: get_mono_excitation_from_fock: + + + File : :file:`determinants/single_excitations.irp.f` + + .. code:: fortran + + subroutine get_mono_excitation_from_fock(det_1,det_2,h,p,spin,phase,hij) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ref_closed_shell_bitmask` + * :c:data:`big_array_coulomb_integrals` + * :c:data:`fock_operator_closed_shell_ref_bitmask` + * :c:data:`n_int` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`i_h_j` + * :c:func:`i_h_j_mono_spin` + * :c:func:`i_h_j_s2` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`bitstring_to_list_ab` + + +.. c:function:: get_mono_excitation_spin: + + + File : :file:`determinants/slater_rules.irp.f` + + .. code:: fortran + + subroutine get_mono_excitation_spin(det1,det2,exc,phase,Nint) + + + Returns the excitation operator between two singly excited determinants and the phase. + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`get_excitation_spin` + * :c:func:`i_h_j_double_alpha_beta` + * :c:func:`i_h_j_mono_spin` + * :c:func:`i_h_j_mono_spin_one_e` + * :c:func:`i_wee_j_mono` + * :c:data:`one_e_dm_mo_alpha` + + +.. c:function:: get_occupation_from_dets: + + + File : :file:`determinants/density_matrix.irp.f` + + .. code:: fortran + + subroutine get_occupation_from_dets(istate,occupation) + + + Returns the average occupation of the MOs + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`psi_coef` + * :c:data:`psi_det` + * :c:data:`n_int` + * :c:data:`n_det` + * :c:data:`mo_num` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`bitstring_to_list_ab` + + +.. c:function:: get_phase: + + + File : :file:`determinants/slater_rules.irp.f` + + .. code:: fortran + + subroutine get_phase(key1,key2,phase,Nint) + + + Returns the phase between key1 and key2. + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`get_excitation` + + +.. c:function:: get_phasemask_bit: + + + File : :file:`determinants/slater_rules.irp.f` + + .. code:: fortran + + subroutine get_phasemask_bit(det1, pm, Nint) + + + + +.. c:function:: get_s2: + + + File : :file:`determinants/s2.irp.f` + + .. code:: fortran + + subroutine get_s2(key_i,key_j,Nint,s2) + + + Returns + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`get_uj_s2_ui` + * :c:func:`h_s2_u_0_nstates_openmp_work_1` + * :c:func:`h_s2_u_0_nstates_openmp_work_2` + * :c:func:`h_s2_u_0_nstates_openmp_work_3` + * :c:func:`h_s2_u_0_nstates_openmp_work_4` + * :c:func:`h_s2_u_0_nstates_openmp_work_n_int` + * :c:func:`h_s2_u_0_two_e_nstates_openmp_work_1` + * :c:func:`h_s2_u_0_two_e_nstates_openmp_work_2` + * :c:func:`h_s2_u_0_two_e_nstates_openmp_work_3` + * :c:func:`h_s2_u_0_two_e_nstates_openmp_work_4` + * :c:func:`h_s2_u_0_two_e_nstates_openmp_work_n_int` + * :c:func:`i_s2_psi_minilist` + * :c:data:`s2_matrix_all_dets` + * :c:func:`s2_u_0_nstates` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`get_double_excitation` + * :c:func:`get_excitation_degree` + + +.. c:function:: get_uj_s2_ui: + + + File : :file:`determinants/s2.irp.f` + + .. code:: fortran + + subroutine get_uJ_s2_uI(psi_keys_tmp,psi_coefs_tmp,n,nmax_coefs,nmax_keys,s2,nstates) + + + returns the matrix elements of S^2 "s2(i,j)" between the "nstates" states + psi_coefs_tmp(:,i) and psi_coefs_tmp(:,j) + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_int` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`filter_connected` + * :c:func:`get_s2` + + +.. c:function:: getmobiles: + + + File : :file:`determinants/filter_connected.irp.f` + + .. code:: fortran + + subroutine getMobiles(key,key_mask, mobiles,Nint) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_num` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`perturb_buffer_dummy` + * :c:func:`perturb_buffer_epstein_nesbet` + * :c:func:`perturb_buffer_epstein_nesbet_2x2` + * :c:func:`perturb_buffer_epstein_nesbet_2x2_no_ci_diag` + * :c:func:`perturb_buffer_moller_plesset` + * :c:func:`perturb_buffer_qdpt` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`bitstring_to_list` + + +.. c:function:: i_h_j: + + + File : :file:`determinants/slater_rules.irp.f` + + .. code:: fortran + + subroutine i_H_j(key_i,key_j,Nint,hij) + + + Returns $\langle i|H|j \rangle$ where $i$ and $j$ are determinants. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`big_array_coulomb_integrals` + * :c:data:`mo_two_e_integrals_in_map` + * :c:data:`big_array_coulomb_integrals` + * :c:data:`mo_integrals_map` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:data:`coef_hf_selector` + * :c:func:`example_determinants` + * :c:func:`get_d0` + * :c:func:`get_d1` + * :c:data:`h_matrix_all_dets` + * :c:data:`h_matrix_cas` + * :c:func:`i_h_psi` + * :c:func:`i_h_psi_minilist` + * :c:func:`pt2_qdpt` + * :c:func:`routine_example_psi_det` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`bitstring_to_list_ab` + * :c:func:`get_double_excitation` + * :c:func:`get_excitation_degree` + * :c:func:`get_mono_excitation` + * :c:func:`get_mono_excitation_from_fock` + + +.. c:function:: i_h_j_double_alpha_beta: + + + File : :file:`determinants/slater_rules.irp.f` + + .. code:: fortran + + subroutine i_H_j_double_alpha_beta(key_i,key_j,Nint,hij) + + + Returns $\langle i|H|j \rangle$ where $i$ and $j$ are determinants differing by + an opposite-spin double excitation. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`big_array_coulomb_integrals` + * :c:data:`mo_two_e_integrals_in_map` + * :c:data:`big_array_coulomb_integrals` + * :c:data:`mo_integrals_map` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`h_s2_u_0_nstates_openmp_work_1` + * :c:func:`h_s2_u_0_nstates_openmp_work_2` + * :c:func:`h_s2_u_0_nstates_openmp_work_3` + * :c:func:`h_s2_u_0_nstates_openmp_work_4` + * :c:func:`h_s2_u_0_nstates_openmp_work_n_int` + * :c:func:`h_s2_u_0_two_e_nstates_openmp_work_1` + * :c:func:`h_s2_u_0_two_e_nstates_openmp_work_2` + * :c:func:`h_s2_u_0_two_e_nstates_openmp_work_3` + * :c:func:`h_s2_u_0_two_e_nstates_openmp_work_4` + * :c:func:`h_s2_u_0_two_e_nstates_openmp_work_n_int` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`get_mono_excitation_spin` + + +.. c:function:: i_h_j_double_spin: + + + File : :file:`determinants/slater_rules.irp.f` + + .. code:: fortran + + subroutine i_H_j_double_spin(key_i,key_j,Nint,hij) + + + Returns $\langle i|H|j \rangle$ where $i$ and $j$ are determinants differing by + a same-spin double excitation. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`big_array_coulomb_integrals` + * :c:data:`mo_two_e_integrals_in_map` + * :c:data:`mo_integrals_map` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`h_s2_u_0_nstates_openmp_work_1` + * :c:func:`h_s2_u_0_nstates_openmp_work_2` + * :c:func:`h_s2_u_0_nstates_openmp_work_3` + * :c:func:`h_s2_u_0_nstates_openmp_work_4` + * :c:func:`h_s2_u_0_nstates_openmp_work_n_int` + * :c:func:`h_s2_u_0_two_e_nstates_openmp_work_1` + * :c:func:`h_s2_u_0_two_e_nstates_openmp_work_2` + * :c:func:`h_s2_u_0_two_e_nstates_openmp_work_3` + * :c:func:`h_s2_u_0_two_e_nstates_openmp_work_4` + * :c:func:`h_s2_u_0_two_e_nstates_openmp_work_n_int` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`get_double_excitation_spin` + + +.. c:function:: i_h_j_mono_spin: + + + File : :file:`determinants/slater_rules.irp.f` + + .. code:: fortran + + subroutine i_H_j_mono_spin(key_i,key_j,Nint,spin,hij) + + + Returns $\langle i|H|j \rangle$ where $i$ and $j$ are determinants differing by + a single excitation. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`big_array_coulomb_integrals` + * :c:data:`mo_two_e_integrals_in_map` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`h_s2_u_0_nstates_openmp_work_1` + * :c:func:`h_s2_u_0_nstates_openmp_work_2` + * :c:func:`h_s2_u_0_nstates_openmp_work_3` + * :c:func:`h_s2_u_0_nstates_openmp_work_4` + * :c:func:`h_s2_u_0_nstates_openmp_work_n_int` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`get_mono_excitation_from_fock` + * :c:func:`get_mono_excitation_spin` + + +.. c:function:: i_h_j_mono_spin_one_e: + + + File : :file:`determinants/slater_rules_wee_mono.irp.f` + + .. code:: fortran + + subroutine i_H_j_mono_spin_one_e(key_i,key_j,Nint,spin,hij) + + + Returns $\langle i|H|j \rangle$ where $i$ and $j$ are determinants differing by + a single excitation. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_one_e_integrals` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`get_mono_excitation_spin` + + +.. c:function:: i_h_j_one_e: + + + File : :file:`determinants/slater_rules_wee_mono.irp.f` + + .. code:: fortran + + subroutine i_H_j_one_e(key_i,key_j,Nint,hij) + + + Returns $\langle i|H|j \rangle$ where $i$ and $j$ are determinants. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_one_e_integrals` + * :c:data:`n_int` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`get_excitation_degree` + * :c:func:`get_mono_excitation` + + +.. c:function:: i_h_j_s2: + + + File : :file:`determinants/slater_rules.irp.f` + + .. code:: fortran + + subroutine i_H_j_s2(key_i,key_j,Nint,hij,s2) + + + Returns $\langle i|H|j \rangle$ and $\langle i|S^2|j \rangle$ + where $i$ and $j$ are determinants. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`big_array_coulomb_integrals` + * :c:data:`mo_two_e_integrals_in_map` + * :c:data:`big_array_coulomb_integrals` + * :c:data:`mo_integrals_map` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`bitstring_to_list_ab` + * :c:func:`get_double_excitation` + * :c:func:`get_excitation_degree` + * :c:func:`get_mono_excitation` + * :c:func:`get_mono_excitation_from_fock` + + +.. c:function:: i_h_j_two_e: + + + File : :file:`determinants/slater_rules_wee_mono.irp.f` + + .. code:: fortran + + subroutine i_H_j_two_e(key_i,key_j,Nint,hij) + + + Returns $\langle i|H|j \rangle$ where $i$ and $j$ are determinants. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ref_bitmask_energy` + * :c:data:`big_array_coulomb_integrals` + * :c:data:`mo_two_e_integrals_in_map` + * :c:data:`big_array_coulomb_integrals` + * :c:data:`mo_integrals_map` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`bitstring_to_list_ab` + * :c:func:`get_double_excitation` + * :c:func:`get_excitation_degree` + * :c:func:`get_mono_excitation` + * :c:func:`mono_excitation_wee` + + +.. c:function:: i_h_j_verbose: + + + File : :file:`determinants/slater_rules.irp.f` + + .. code:: fortran + + subroutine i_H_j_verbose(key_i,key_j,Nint,hij,hmono,hdouble,phase) + + + Returns $\langle i|H|j \rangle$ where $i$ and $j$ are determinants. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`elec_beta_num` + * :c:data:`mo_one_e_integrals` + * :c:data:`mo_two_e_integrals_in_map` + * :c:data:`elec_alpha_num` + * :c:data:`mo_integrals_map` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`bitstring_to_list_ab` + * :c:func:`get_double_excitation` + * :c:func:`get_excitation_degree` + * :c:func:`get_mono_excitation` + + +.. c:function:: i_h_psi: + + + File : :file:`determinants/slater_rules.irp.f` + + .. code:: fortran + + subroutine i_H_psi(key,keys,coef,Nint,Ndet,Ndet_max,Nstate,i_H_psi_array) + + + Computes $\langle i|H|Psi \rangle = \sum_J c_J \langle i | H | J \rangle$. + + Uses filter_connected_i_H_psi0 to get all the $|J \rangle$ to which $|i \rangle$ + is connected. + The i_H_psi_minilist is much faster but requires to build the + minilists. + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`pt2_epstein_nesbet_2x2` + * :c:func:`pt2_epstein_nesbet_2x2_no_ci_diag` + * :c:func:`remove_small_contributions` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`filter_connected_i_h_psi0` + * :c:func:`i_h_j` + + +.. c:function:: i_h_psi_minilist: + + + File : :file:`determinants/slater_rules.irp.f` + + .. code:: fortran + + subroutine i_H_psi_minilist(key,keys,idx_key,N_minilist,coef,Nint,Ndet,Ndet_max,Nstate,i_H_psi_array) + + + Computes $\langle i|H|\Psi \rangle = \sum_J c_J \langle i|H|J\rangle$. + + Uses filter_connected_i_H_psi0 to get all the $|J \rangle$ to which $|i \rangle$ + is connected. The $|J\rangle$ are searched in short pre-computed lists. + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`pt2_dummy` + * :c:func:`pt2_epstein_nesbet` + * :c:func:`pt2_moller_plesset` + * :c:func:`pt2_qdpt` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`filter_connected_i_h_psi0` + * :c:func:`i_h_j` + + +.. c:function:: i_s2_psi_minilist: + + + File : :file:`determinants/s2.irp.f` + + .. code:: fortran + + subroutine i_S2_psi_minilist(key,keys,idx_key,N_minilist,coef,Nint,Ndet,Ndet_max,Nstate,i_S2_psi_array) + + + Computes $\langle i|S^2|\Psi \rangle = \sum_J c_J \langle i|S^2|J \rangle$. + + Uses filter_connected_i_H_psi0 to get all the $|J\rangle$ to which $|i\rangle$ + is connected. The $|J\rangle$ are searched in short pre-computed lists. + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`filter_connected_i_h_psi0` + * :c:func:`get_s2` + + +.. c:function:: i_wee_j_mono: + + + File : :file:`determinants/slater_rules_wee_mono.irp.f` + + .. code:: fortran + + subroutine i_Wee_j_mono(key_i,key_j,Nint,spin,hij) + + + Returns $\langle i|H|j \rangle$ where $i$ and $j$ are determinants differing by a + single excitation. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`big_array_coulomb_integrals` + * :c:data:`mo_two_e_integrals_in_map` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`h_s2_u_0_two_e_nstates_openmp_work_1` + * :c:func:`h_s2_u_0_two_e_nstates_openmp_work_2` + * :c:func:`h_s2_u_0_two_e_nstates_openmp_work_3` + * :c:func:`h_s2_u_0_two_e_nstates_openmp_work_4` + * :c:func:`h_s2_u_0_two_e_nstates_openmp_work_n_int` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`get_mono_excitation_spin` + * :c:func:`mono_excitation_wee` + + +.. c:function:: is_connected_to: + + + File : :file:`determinants/connected_to_ref.irp.f` + + .. code:: fortran + + logical function is_connected_to(key,keys,Nint,Ndet) + + + Returns |true| if determinant ``key`` is connected to ``keys`` + + +.. c:function:: is_connected_to_by_mono: + + + File : :file:`determinants/connected_to_ref.irp.f` + + .. code:: fortran + + logical function is_connected_to_by_mono(key,keys,Nint,Ndet) + + + Returns |true| is ``key`` is connected to ``keys`` by a single excitation. + + +.. c:function:: is_in_wavefunction: + + + File : :file:`determinants/connected_to_ref.irp.f` + + .. code:: fortran + + logical function is_in_wavefunction(key,Nint) + + + |true| if the determinant ``det`` is in the wave function + + +.. c:function:: is_spin_flip_possible: + + + File : :file:`determinants/create_excitations.irp.f` + + .. code:: fortran + + logical function is_spin_flip_possible(key_in,i_flip,ispin) + + + returns |true| if the spin-flip of spin ispin in the orbital i_flip is possible + on key_in + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_int` + + +.. c:function:: make_s2_eigenfunction: + + + File : :file:`determinants/occ_pattern.irp.f` + + .. code:: fortran + + subroutine make_s2_eigenfunction + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`psi_coef` + * :c:data:`psi_occ_pattern` + * :c:data:`psi_occ_pattern` + * :c:data:`elec_alpha_num` + * :c:data:`n_det` + * :c:data:`n_int` + * :c:data:`psi_det` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`run_cipsi` + * :c:func:`run_stochastic_cipsi` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`copy_h_apply_buffer_to_wf` + * :c:func:`fill_h_apply_buffer_no_selection` + * :c:func:`occ_pattern_to_dets` + * :c:func:`occ_pattern_to_dets_size` + * :c:func:`write_int` + * :c:func:`write_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:: mono_excitation_wee: + + + File : :file:`determinants/mono_excitations_bielec.irp.f` + + .. code:: fortran + + subroutine mono_excitation_wee(det_1,det_2,h,p,spin,phase,hij) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ref_closed_shell_bitmask` + * :c:data:`fock_wee_closed_shell` + * :c:data:`big_array_coulomb_integrals` + * :c:data:`n_int` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`i_h_j_two_e` + * :c:func:`i_wee_j_mono` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`bitstring_to_list_ab` + + +.. c:function:: occ_pattern_of_det: + + + File : :file:`determinants/occ_pattern.irp.f` + + .. code:: fortran + + subroutine occ_pattern_of_det(d,o,Nint) + + + Transforms a determinant to an occupation pattern + + occ(:,1) : Single occupations + + occ(:,2) : Double occupations + + + +.. c:function:: occ_pattern_search_key: + + + File : :file:`determinants/connected_to_ref.irp.f` + + .. code:: fortran + + integer*8 function occ_pattern_search_key(det,Nint) + + + Return an integer*8 corresponding to a determinant index for searching + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`elec_alpha_num` + + +.. c:function:: occ_pattern_to_dets: + + + File : :file:`determinants/occ_pattern.irp.f` + + .. code:: fortran + + subroutine occ_pattern_to_dets(o,d,sze,n_alpha,Nint) + + + Generate all possible determinants for a give occ_pattern + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`binom_int` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`make_s2_eigenfunction` + * :c:func:`make_selection_buffer_s2` + + +.. c:function:: occ_pattern_to_dets_size: + + + File : :file:`determinants/occ_pattern.irp.f` + + .. code:: fortran + + subroutine occ_pattern_to_dets_size(o,sze,n_alpha,Nint) + + + Number of possible determinants for a given occ_pattern + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`binom_int` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`make_s2_eigenfunction` + * :c:func:`make_selection_buffer_s2` + + +.. c:function:: pull_pt2: + + + File : :file:`determinants/h_apply.irp.f` + + .. code:: fortran + + subroutine pull_pt2(zmq_socket_pull,pt2,norm_pert,H_pert_diag,i_generator,N_st,n,task_id) + + + Pull |PT2| calculation in the collector + + +.. c:function:: push_pt2: + + + File : :file:`determinants/h_apply.irp.f` + + .. code:: fortran + + subroutine push_pt2(zmq_socket_push,pt2,norm_pert,H_pert_diag,i_generator,N_st,task_id) + + + Push |PT2| calculation to the collector + + +.. c:function:: read_dets: + + + File : :file:`determinants/determinants.irp.f` + + .. code:: fortran + + subroutine read_dets(det,Nint,Ndet) + + + Reads the determinants from the |EZFIO| file + + Called by: + + .. hlist:: + :columns: 3 + + * :c:data:`psi_det` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`ezfio_get_determinants_bit_kind` + * :c:func:`ezfio_get_determinants_n_int` + * :c:func:`ezfio_get_determinants_psi_det` + + +.. c:function:: remove_duplicates_in_psi_det: + + + File : :file:`determinants/h_apply.irp.f` + + .. code:: fortran + + subroutine remove_duplicates_in_psi_det(found_duplicates) + + + Removes duplicate determinants in the wave function. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`psi_coef` + * :c:data:`psi_det_sorted_bit` + * :c:data:`c0_weight` + * :c:data:`n_det` + * :c:data:`psi_det_sorted_bit` + * :c:data:`n_int` + * :c:data:`psi_det` + * :c:data:`psi_det_sorted` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`copy_h_apply_buffer_to_wf` + + Touches: + + .. hlist:: + :columns: 3 + + * :c:data:`n_det` + * :c:data:`c0_weight` + * :c:data:`psi_coef` + * :c:data:`psi_det_sorted_bit` + * :c:data:`psi_det` + * :c:data:`psi_det_sorted_bit` + + +.. c:function:: resize_h_apply_buffer: + + + File : :file:`determinants/h_apply.irp.f` + + .. code:: fortran + + subroutine resize_H_apply_buffer(new_size,iproc) + + + Resizes the H_apply buffer of proc iproc. The buffer lock should + be set before calling this function. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_states` + * :c:data:`h_apply_buffer_allocated` + * :c:data:`n_det` + * :c:data:`n_int` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`fill_h_apply_buffer_no_selection` + * :c:func:`fill_h_apply_buffer_selection` + + +.. c:function:: routine_example_psi_det: + + + File : :file:`determinants/example.irp.f` + + .. code:: fortran + + subroutine routine_example_psi_det + + + subroutine that illustrates the main features available in determinants using many determinants + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`psi_coef` + * :c:data:`psi_det` + * :c:data:`n_states` + * :c:data:`n_det` + * :c:data:`n_int` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`example_determinants_psi_det` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`debug_det` + * :c:func:`get_excitation_degree_vector` + * :c:func:`i_h_j` + + +.. c:function:: s2_u_0: + + + File : :file:`determinants/s2.irp.f` + + .. code:: fortran + + subroutine S2_u_0(v_0,u_0,n,keys_tmp,Nint) + + + Computes v_0 = S^2|u_0> + + n : number of determinants + + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`s2_u_0_nstates` + + +.. c:function:: s2_u_0_nstates: + + + File : :file:`determinants/s2.irp.f` + + .. code:: fortran + + subroutine S2_u_0_nstates(v_0,u_0,n,keys_tmp,Nint,N_st,sze_8) + + + Computes v_0 = S^2|u_0> + + n : number of determinants + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ref_bitmask_energy` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`s2_u_0` + * :c:func:`u_0_s2_u_0` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`get_s2` + * :c:func:`sort_dets_ab_v` + * :c:func:`sort_dets_ba_v` + + +.. c:function:: save_natural_mos: + + + File : :file:`determinants/density_matrix.irp.f` + + .. code:: fortran + + subroutine save_natural_mos + + + Save natural orbitals, obtained by diagonalization of the one-body density matrix in + the |MO| basis + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`save_natorb` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`save_mos` + * :c:func:`set_natural_mos` + + Touches: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_occ` + + +.. c:function:: save_ref_determinant: + + + File : :file:`determinants/determinants.irp.f` + + .. code:: fortran + + subroutine save_ref_determinant + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_states` + * :c:data:`ref_bitmask` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`save_natorb` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`save_wavefunction_general` + + +.. c:function:: save_wavefunction: + + + File : :file:`determinants/determinants.irp.f` + + .. code:: fortran + + subroutine save_wavefunction + + + Save the wave function into the |EZFIO| file + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`read_wf` + * :c:data:`n_states` + * :c:data:`psi_det_sorted` + * :c:data:`n_det` + * :c:data:`mpi_master` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`run_cipsi` + * :c:func:`run_stochastic_cipsi` + * :c:func:`zmq_selection` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`save_wavefunction_general` + + +.. c:function:: save_wavefunction_general: + + + File : :file:`determinants/determinants.irp.f` + + .. code:: fortran + + subroutine save_wavefunction_general(ndet,nstates,psidet,dim_psicoef,psicoef) + + + Save the wave function into the |EZFIO| file + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mpi_master` + * :c:data:`n_int` + * :c:data:`mo_label` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`save_ref_determinant` + * :c:func:`save_wavefunction` + * :c:func:`save_wavefunction_truncated` + * :c:func:`save_wavefunction_unsorted` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`ezfio_set_determinants_bit_kind` + * :c:func:`ezfio_set_determinants_mo_label` + * :c:func:`ezfio_set_determinants_n_det` + * :c:func:`ezfio_set_determinants_n_int` + * :c:func:`ezfio_set_determinants_n_states` + * :c:func:`ezfio_set_determinants_psi_coef` + * :c:func:`ezfio_set_determinants_psi_det` + * :c:func:`normalize` + * :c:func:`write_int` + + +.. c:function:: save_wavefunction_specified: + + + File : :file:`determinants/determinants.irp.f` + + .. code:: fortran + + subroutine save_wavefunction_specified(ndet,nstates,psidet,psicoef,ndetsave,index_det_save) + + + Save the wave function into the |EZFIO| file + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_int` + * :c:data:`mo_label` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`ezfio_set_determinants_bit_kind` + * :c:func:`ezfio_set_determinants_mo_label` + * :c:func:`ezfio_set_determinants_n_det` + * :c:func:`ezfio_set_determinants_n_int` + * :c:func:`ezfio_set_determinants_n_states` + * :c:func:`ezfio_set_determinants_psi_coef` + * :c:func:`ezfio_set_determinants_psi_det` + * :c:func:`write_int` + + +.. c:function:: save_wavefunction_truncated: + + + File : :file:`determinants/determinants.irp.f` + + .. code:: fortran + + subroutine save_wavefunction_truncated(thr) + + + Save the wave function into the |EZFIO| file + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_states` + * :c:data:`psi_det_sorted` + * :c:data:`n_det` + * :c:data:`mpi_master` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`save_wavefunction_general` + + +.. c:function:: save_wavefunction_unsorted: + + + File : :file:`determinants/determinants.irp.f` + + .. code:: fortran + + subroutine save_wavefunction_unsorted + + + Save the wave function into the |EZFIO| file + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`psi_coef` + * :c:data:`psi_det` + * :c:data:`n_states` + * :c:data:`n_det` + * :c:data:`mpi_master` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`save_wavefunction_general` + + +.. c:function:: set_natural_mos: + + + File : :file:`determinants/density_matrix.irp.f` + + .. code:: fortran + + subroutine set_natural_mos + + + Set natural orbitals, obtained by diagonalization of the one-body density matrix + in the |MO| basis + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_occ` + * :c:data:`one_e_dm_mo` + * :c:data:`mo_num` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`save_natural_mos` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`mo_as_svd_vectors_of_mo_matrix_eig` + + Touches: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_occ` + + +.. c:function:: sort_dets_ab: + + + File : :file:`determinants/sort_dets_ab.irp.f` + + .. code:: fortran + + subroutine sort_dets_ab(key, idx, shortcut, N_key, Nint) + + + Deprecated routine + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`tamiser` + + +.. c:function:: sort_dets_ab_v: + + + File : :file:`determinants/sort_dets_ab.irp.f` + + .. code:: fortran + + subroutine sort_dets_ab_v(key_in, key_out, idx, shortcut, version, N_key, Nint) + + + Deprecated routine + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`s2_u_0_nstates` + * :c:func:`sort_dets_ba_v` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`tamiser` + + +.. c:function:: sort_dets_ba_v: + + + File : :file:`determinants/sort_dets_ab.irp.f` + + .. code:: fortran + + subroutine sort_dets_ba_v(key_in, key_out, idx, shortcut, version, N_key, Nint) + + + Deprecated routine + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`s2_u_0_nstates` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`sort_dets_ab_v` + + +.. c:function:: sort_dets_by_det_search_key: + + + File : :file:`determinants/determinants.irp.f` + + .. code:: fortran + + subroutine sort_dets_by_det_search_key(Ndet, det_in, coef_in, sze, det_out, coef_out, N_st) + + + Determinants are sorted according to their :c:func:`det_search_key`. + Useful to accelerate the search of a random determinant in the wave + function. + + /!\ The first dimension of coef_out and coef_in need to be psi_det_size + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_int` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:data:`psi_cas_sorted_bit` + * :c:data:`psi_det_sorted_bit` + * :c:data:`psi_non_cas_sorted_bit` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`i8sort` + + +.. c:function:: spin_det_search_key: + + + File : :file:`determinants/spindeterminants.irp.f` + + .. code:: fortran + + integer*8 function spin_det_search_key(det,Nint) + + + Returns an integer(8) corresponding to a determinant index for searching + + +.. c:function:: tamiser: + + + File : :file:`determinants/sort_dets_ab.irp.f` + + .. code:: fortran + + subroutine tamiser(key, idx, no, n, Nint, N_key) + + + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`sort_dets_ab` + * :c:func:`sort_dets_ab_v` + + +.. c:function:: u_0_s2_u_0: + + + File : :file:`determinants/s2.irp.f` + + .. code:: fortran + + subroutine u_0_S2_u_0(e_0,u_0,n,keys_tmp,Nint,N_st,sze_8) + + + Computes e_0 = / + + n : number of determinants + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`s_z` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:data:`ci_electronic_energy` + * :c:data:`s2_values` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`s2_u_0_nstates` + + +.. c:function:: wf_of_psi_bilinear_matrix: + + + File : :file:`determinants/spindeterminants.irp.f` + + .. code:: fortran + + subroutine wf_of_psi_bilinear_matrix(truncate) + + + Generate a wave function containing all possible products + of $\alpha$ and $\beta$ determinants + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`psi_coef` + * :c:data:`psi_det_beta_unique` + * :c:data:`psi_det_alpha_unique` + * :c:data:`n_states` + * :c:data:`n_det` + * :c:data:`psi_bilinear_matrix_values` + * :c:data:`n_int` + * :c:data:`psi_det` + * :c:data:`psi_det_sorted` + + Touches: + + .. hlist:: + :columns: 3 + + * :c:data:`n_det` + * :c:data:`psi_coef` + * :c:data:`psi_det` + + +.. c:function:: write_spindeterminants: + + + File : :file:`determinants/spindeterminants.irp.f` + + .. code:: fortran + + subroutine write_spindeterminants + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`psi_det_beta_unique` + * :c:data:`psi_det_alpha_unique` + * :c:data:`n_states` + * :c:data:`n_det` + * :c:data:`psi_bilinear_matrix_values` + * :c:data:`n_int` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`ezfio_set_spindeterminants_bit_kind` + * :c:func:`ezfio_set_spindeterminants_n_det` + * :c:func:`ezfio_set_spindeterminants_n_det_alpha` + * :c:func:`ezfio_set_spindeterminants_n_det_beta` + * :c:func:`ezfio_set_spindeterminants_n_int` + * :c:func:`ezfio_set_spindeterminants_n_states` + * :c:func:`ezfio_set_spindeterminants_psi_coef_matrix_columns` + * :c:func:`ezfio_set_spindeterminants_psi_coef_matrix_rows` + * :c:func:`ezfio_set_spindeterminants_psi_coef_matrix_values` + * :c:func:`ezfio_set_spindeterminants_psi_det_alpha` + * :c:func:`ezfio_set_spindeterminants_psi_det_beta` + + +.. c:function:: zmq_get_n_det: + + + File : :file:`determinants/zmq.irp.f_template_379` + + .. code:: fortran + + integer function zmq_get_N_det(zmq_to_qp_run_socket, worker_id) + + + Get N_det from the qp_run scheduler + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`zmq_state` + * :c:data:`n_det` + * :c:data:`mpi_master` + + +.. c:function:: zmq_get_n_det_alpha_unique: + + + File : :file:`determinants/zmq.irp.f_template_379` + + .. code:: fortran + + integer function zmq_get_N_det_alpha_unique(zmq_to_qp_run_socket, worker_id) + + + Get N_det_alpha_unique from the qp_run scheduler + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`psi_det_alpha_unique` + * :c:data:`zmq_state` + * :c:data:`mpi_master` + + +.. c:function:: zmq_get_n_det_beta_unique: + + + File : :file:`determinants/zmq.irp.f_template_379` + + .. code:: fortran + + integer function zmq_get_N_det_beta_unique(zmq_to_qp_run_socket, worker_id) + + + Get N_det_beta_unique from the qp_run scheduler + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`psi_det_beta_unique` + * :c:data:`zmq_state` + * :c:data:`mpi_master` + + +.. c:function:: zmq_get_n_states: + + + File : :file:`determinants/zmq.irp.f_template_379` + + .. code:: fortran + + integer function zmq_get_N_states(zmq_to_qp_run_socket, worker_id) + + + Get N_states from the qp_run scheduler + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_states` + * :c:data:`zmq_state` + * :c:data:`mpi_master` + + +.. c:function:: zmq_get_psi: + + + File : :file:`determinants/zmq.irp.f` + + .. code:: fortran + + integer function zmq_get_psi(zmq_to_qp_run_socket, worker_id) + + + Get the wave function from the qp_run scheduler + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`psi_coef` + * :c:data:`psi_det` + * :c:data:`n_states` + * :c:data:`n_det` + * :c:data:`psi_det_size` + + Touches: + + .. hlist:: + :columns: 3 + + * :c:data:`n_det` + * :c:data:`n_states` + * :c:data:`psi_coef` + * :c:data:`psi_det` + * :c:data:`psi_det_size` + + +.. c:function:: zmq_get_psi_bilinear: + + + File : :file:`determinants/zmq.irp.f` + + .. code:: fortran + + integer function zmq_get_psi_bilinear(zmq_to_qp_run_socket, worker_id) + + + Get the wave function from the qp_run scheduler + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`psi_coef` + * :c:data:`psi_det_beta_unique` + * :c:data:`psi_bilinear_matrix_values` + * :c:data:`psi_det_alpha_unique` + * :c:data:`n_states` + * :c:data:`psi_bilinear_matrix_values` + * :c:data:`psi_bilinear_matrix_values` + * :c:data:`n_det` + * :c:data:`psi_det_alpha_unique` + * :c:data:`psi_det_beta_unique` + * :c:data:`psi_det_size` + * :c:data:`psi_det` + * :c:data:`psi_bilinear_matrix_values` + + Touches: + + .. hlist:: + :columns: 3 + + * :c:data:`n_det` + * :c:data:`psi_det_alpha_unique` + * :c:data:`psi_det_beta_unique` + * :c:data:`n_states` + * :c:data:`psi_bilinear_matrix_values` + * :c:data:`psi_bilinear_matrix_values` + * :c:data:`psi_bilinear_matrix_values` + * :c:data:`psi_bilinear_matrix_values` + * :c:data:`psi_coef` + * :c:data:`psi_det` + * :c:data:`psi_det_alpha_unique` + * :c:data:`psi_det_beta_unique` + * :c:data:`psi_det_size` + + +.. c:function:: zmq_get_psi_bilinear_matrix_columns: + + + File : :file:`determinants/zmq.irp.f_template_500` + + .. code:: fortran + + integer*8 function zmq_get_psi_bilinear_matrix_columns(zmq_to_qp_run_socket,worker_id) + + + Get psi_bilinear_matrix_columns on the qp_run scheduler + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`psi_bilinear_matrix_values` + + +.. c:function:: zmq_get_psi_bilinear_matrix_order: + + + File : :file:`determinants/zmq.irp.f_template_500` + + .. code:: fortran + + integer*8 function zmq_get_psi_bilinear_matrix_order(zmq_to_qp_run_socket,worker_id) + + + Get psi_bilinear_matrix_order on the qp_run scheduler + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`psi_bilinear_matrix_values` + + +.. c:function:: zmq_get_psi_bilinear_matrix_rows: + + + File : :file:`determinants/zmq.irp.f_template_500` + + .. code:: fortran + + integer*8 function zmq_get_psi_bilinear_matrix_rows(zmq_to_qp_run_socket,worker_id) + + + Get psi_bilinear_matrix_rows on the qp_run scheduler + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`psi_bilinear_matrix_values` + + +.. c:function:: zmq_get_psi_bilinear_matrix_values: + + + File : :file:`determinants/zmq.irp.f_template_564` + + .. code:: fortran + + integer*8 function zmq_get_psi_bilinear_matrix_values(zmq_to_qp_run_socket,worker_id) + + + get psi_bilinear_matrix_values on the qp_run scheduler + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`psi_bilinear_matrix_values` + + +.. c:function:: zmq_get_psi_coef: + + + File : :file:`determinants/zmq.irp.f_template_564` + + .. code:: fortran + + integer*8 function zmq_get_psi_coef(zmq_to_qp_run_socket,worker_id) + + + get psi_coef on the qp_run scheduler + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`psi_coef` + + +.. c:function:: zmq_get_psi_det: + + + File : :file:`determinants/zmq.irp.f_template_440` + + .. code:: fortran + + integer*8 function zmq_get_psi_det(zmq_to_qp_run_socket,worker_id) + + + Get psi_det on the qp_run scheduler + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`psi_det` + + +.. c:function:: zmq_get_psi_det_alpha_unique: + + + File : :file:`determinants/zmq.irp.f_template_440` + + .. code:: fortran + + integer*8 function zmq_get_psi_det_alpha_unique(zmq_to_qp_run_socket,worker_id) + + + Get psi_det_alpha_unique on the qp_run scheduler + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`psi_det_alpha_unique` + + +.. c:function:: zmq_get_psi_det_beta_unique: + + + File : :file:`determinants/zmq.irp.f_template_440` + + .. code:: fortran + + integer*8 function zmq_get_psi_det_beta_unique(zmq_to_qp_run_socket,worker_id) + + + Get psi_det_beta_unique on the qp_run scheduler + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`psi_det_beta_unique` + + +.. c:function:: zmq_get_psi_det_size: + + + File : :file:`determinants/zmq.irp.f_template_379` + + .. code:: fortran + + integer function zmq_get_psi_det_size(zmq_to_qp_run_socket, worker_id) + + + Get psi_det_size from the qp_run scheduler + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`zmq_state` + * :c:data:`psi_det_size` + * :c:data:`mpi_master` + + +.. c:function:: zmq_get_psi_notouch: + + + File : :file:`determinants/zmq.irp.f` + + .. code:: fortran + + integer function zmq_get_psi_notouch(zmq_to_qp_run_socket, worker_id) + + + Get the wave function from the qp_run scheduler + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`psi_coef` + * :c:data:`psi_det` + * :c:data:`n_states` + * :c:data:`n_int` + * :c:data:`psi_det_size` + + +.. c:function:: zmq_put_n_det: + + + File : :file:`determinants/zmq.irp.f_template_379` + + .. code:: fortran + + integer function zmq_put_N_det(zmq_to_qp_run_socket,worker_id) + + + Put N_det on the qp_run scheduler + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`zmq_state` + * :c:data:`n_det` + + +.. c:function:: zmq_put_n_det_alpha_unique: + + + File : :file:`determinants/zmq.irp.f_template_379` + + .. code:: fortran + + integer function zmq_put_N_det_alpha_unique(zmq_to_qp_run_socket,worker_id) + + + Put N_det_alpha_unique on the qp_run scheduler + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`psi_det_alpha_unique` + * :c:data:`zmq_state` + + +.. c:function:: zmq_put_n_det_beta_unique: + + + File : :file:`determinants/zmq.irp.f_template_379` + + .. code:: fortran + + integer function zmq_put_N_det_beta_unique(zmq_to_qp_run_socket,worker_id) + + + Put N_det_beta_unique on the qp_run scheduler + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`psi_det_beta_unique` + * :c:data:`zmq_state` + + +.. c:function:: zmq_put_n_states: + + + File : :file:`determinants/zmq.irp.f_template_379` + + .. code:: fortran + + integer function zmq_put_N_states(zmq_to_qp_run_socket,worker_id) + + + Put N_states on the qp_run scheduler + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_states` + * :c:data:`zmq_state` + + +.. c:function:: zmq_put_psi: + + + File : :file:`determinants/zmq.irp.f` + + .. code:: fortran + + integer function zmq_put_psi(zmq_to_qp_run_socket,worker_id) + + + Put the wave function on the qp_run scheduler + + +.. c:function:: zmq_put_psi_bilinear: + + + File : :file:`determinants/zmq.irp.f` + + .. code:: fortran + + integer function zmq_put_psi_bilinear(zmq_to_qp_run_socket,worker_id) + + + Put the wave function on the qp_run scheduler + + +.. c:function:: zmq_put_psi_bilinear_matrix_columns: + + + File : :file:`determinants/zmq.irp.f_template_500` + + .. code:: fortran + + integer*8 function zmq_put_psi_bilinear_matrix_columns(zmq_to_qp_run_socket,worker_id) + + + Put psi_bilinear_matrix_columns on the qp_run scheduler + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`psi_bilinear_matrix_values` + + +.. c:function:: zmq_put_psi_bilinear_matrix_order: + + + File : :file:`determinants/zmq.irp.f_template_500` + + .. code:: fortran + + integer*8 function zmq_put_psi_bilinear_matrix_order(zmq_to_qp_run_socket,worker_id) + + + Put psi_bilinear_matrix_order on the qp_run scheduler + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`psi_bilinear_matrix_values` + + +.. c:function:: zmq_put_psi_bilinear_matrix_rows: + + + File : :file:`determinants/zmq.irp.f_template_500` + + .. code:: fortran + + integer*8 function zmq_put_psi_bilinear_matrix_rows(zmq_to_qp_run_socket,worker_id) + + + Put psi_bilinear_matrix_rows on the qp_run scheduler + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`psi_bilinear_matrix_values` + + +.. c:function:: zmq_put_psi_bilinear_matrix_values: + + + File : :file:`determinants/zmq.irp.f_template_564` + + .. code:: fortran + + integer*8 function zmq_put_psi_bilinear_matrix_values(zmq_to_qp_run_socket,worker_id) + + + Put psi_bilinear_matrix_values on the qp_run scheduler + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`psi_bilinear_matrix_values` + + +.. c:function:: zmq_put_psi_coef: + + + File : :file:`determinants/zmq.irp.f_template_564` + + .. code:: fortran + + integer*8 function zmq_put_psi_coef(zmq_to_qp_run_socket,worker_id) + + + Put psi_coef on the qp_run scheduler + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`psi_coef` + + +.. c:function:: zmq_put_psi_det: + + + File : :file:`determinants/zmq.irp.f_template_440` + + .. code:: fortran + + integer*8 function zmq_put_psi_det(zmq_to_qp_run_socket,worker_id) + + + Put psi_det on the qp_run scheduler + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`psi_det` + + +.. c:function:: zmq_put_psi_det_alpha_unique: + + + File : :file:`determinants/zmq.irp.f_template_440` + + .. code:: fortran + + integer*8 function zmq_put_psi_det_alpha_unique(zmq_to_qp_run_socket,worker_id) + + + Put psi_det_alpha_unique on the qp_run scheduler + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`psi_det_alpha_unique` + + +.. c:function:: zmq_put_psi_det_beta_unique: + + + File : :file:`determinants/zmq.irp.f_template_440` + + .. code:: fortran + + integer*8 function zmq_put_psi_det_beta_unique(zmq_to_qp_run_socket,worker_id) + + + Put psi_det_beta_unique on the qp_run scheduler + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`psi_det_beta_unique` + + +.. c:function:: zmq_put_psi_det_size: + + + File : :file:`determinants/zmq.irp.f_template_379` + + .. code:: fortran + + integer function zmq_put_psi_det_size(zmq_to_qp_run_socket,worker_id) + + + Put psi_det_size on the qp_run scheduler + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`zmq_state` + * :c:data:`psi_det_size` + diff --git a/doc/_sources/modules/dft_keywords.rst.txt b/doc/_sources/modules/dft_keywords.rst.txt new file mode 100644 index 00000000..a2ad749a --- /dev/null +++ b/doc/_sources/modules/dft_keywords.rst.txt @@ -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` + + diff --git a/doc/_sources/modules/dft_utils_in_r.rst.txt b/doc/_sources/modules/dft_utils_in_r.rst.txt new file mode 100644 index 00000000..4a011cc8 --- /dev/null +++ b/doc/_sources/modules/dft_utils_in_r.rst.txt @@ -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` + diff --git a/doc/_sources/modules/dft_utils_one_e.rst.txt b/doc/_sources/modules/dft_utils_one_e.rst.txt new file mode 100644 index 00000000..3124a68a --- /dev/null +++ b/doc/_sources/modules/dft_utils_one_e.rst.txt @@ -0,0 +1,3765 @@ +.. _module_dft_utils_one_e: + +.. program:: dft_utils_one_e + +.. default-role:: option + +=============== +dft_utils_one_e +=============== + +This module contains all the one-body related quantities needed to perform DFT or RS-DFT calculations. +Therefore, it contains most of the properties which depends on the one-body density and density matrix. + +The most important files and variables are: + +* The general *providers* for the x/c energies in :file:`e_xc_general.irp.f` +* The general *providers* for the x/c potentials in :file:`pot_general.irp.f` +* The short-range hartree operator and all related quantities in :file:`sr_coulomb.irp.f` + +These *providers* will be used in many DFT-related programs, such as :file:`ks_scf.irp.f` or :file:`rs_ks_scf.irp.f`. +It is also needed to compute the effective one-body operator needed in multi-determinant RS-DFT (see plugins by eginer). + +Some other interesting quantities: + +* The LDA and PBE *providers* for the x/c energies in :file:`e_xc.irp.f` and :file:`sr_exc.irp.f` +* The LDA and PBE *providers* for the x/c potentials on the AO basis in :file:`pot_ao.irp.f` and :file:`sr_pot_ao.irp.f` +* The :math:`h_{core}` energy computed directly with the one-body density matrix in :file:`one_e_energy_dft.irp.f` +* LDA and PBE short-range functionals *subroutines* in :file:`exc_sr_lda.irp.f` and :file:`exc_sr_pbe.irp.f` + + + + + +Providers +--------- + +.. c:var:: ao_effective_one_e_potential + + + File : :file:`dft_utils_one_e/effective_pot.irp.f` + + .. code:: fortran + + double precision, allocatable :: ao_effective_one_e_potential (ao_num,ao_num,N_states) + double precision, allocatable :: ao_effective_one_e_potential_without_kin (ao_num,ao_num,N_states) + + + ao_effective_one_e_potential(i,j) = :math:`\rangle i_{AO}| v_{H}^{sr} |j_{AO}\rangle + \rangle i_{AO}| h_{core} |j_{AO}\rangle + \rangle i_{AO}|v_{xc} |j_{AO}\rangle` + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`effective_one_e_potential` + * :c:data:`mo_coef` + * :c:data:`mo_num` + * :c:data:`n_states` + + + +.. c:var:: ao_effective_one_e_potential_without_kin + + + File : :file:`dft_utils_one_e/effective_pot.irp.f` + + .. code:: fortran + + double precision, allocatable :: ao_effective_one_e_potential (ao_num,ao_num,N_states) + double precision, allocatable :: ao_effective_one_e_potential_without_kin (ao_num,ao_num,N_states) + + + ao_effective_one_e_potential(i,j) = :math:`\rangle i_{AO}| v_{H}^{sr} |j_{AO}\rangle + \rangle i_{AO}| h_{core} |j_{AO}\rangle + \rangle i_{AO}|v_{xc} |j_{AO}\rangle` + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`effective_one_e_potential` + * :c:data:`mo_coef` + * :c:data:`mo_num` + * :c:data:`n_states` + + + +.. c:var:: aos_dsr_vc_alpha_pbe_w + + + File : :file:`dft_utils_one_e/sr_pot_ao.irp.f` + + .. code:: fortran + + double precision, allocatable :: aos_sr_vc_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_sr_vc_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_sr_vx_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_sr_vx_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_dsr_vc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dsr_vc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dsr_vx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dsr_vx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + + + aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`aos_grad_in_r_array` + * :c:data:`aos_in_r_array` + * :c:data:`correlation_functional` + * :c:data:`exchange_functional` + * :c:data:`final_grid_points` + * :c:data:`mu_erf_dft` + * :c:data:`n_points_final_grid` + * :c:data:`n_states` + * :c:data:`one_e_dm_and_grad_alpha_in_r` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`potential_sr_x_alpha_ao_pbe` + + +.. c:var:: aos_dsr_vc_beta_pbe_w + + + File : :file:`dft_utils_one_e/sr_pot_ao.irp.f` + + .. code:: fortran + + double precision, allocatable :: aos_sr_vc_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_sr_vc_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_sr_vx_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_sr_vx_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_dsr_vc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dsr_vc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dsr_vx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dsr_vx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + + + aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`aos_grad_in_r_array` + * :c:data:`aos_in_r_array` + * :c:data:`correlation_functional` + * :c:data:`exchange_functional` + * :c:data:`final_grid_points` + * :c:data:`mu_erf_dft` + * :c:data:`n_points_final_grid` + * :c:data:`n_states` + * :c:data:`one_e_dm_and_grad_alpha_in_r` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`potential_sr_x_alpha_ao_pbe` + + +.. c:var:: aos_dsr_vx_alpha_pbe_w + + + File : :file:`dft_utils_one_e/sr_pot_ao.irp.f` + + .. code:: fortran + + double precision, allocatable :: aos_sr_vc_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_sr_vc_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_sr_vx_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_sr_vx_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_dsr_vc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dsr_vc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dsr_vx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dsr_vx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + + + aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`aos_grad_in_r_array` + * :c:data:`aos_in_r_array` + * :c:data:`correlation_functional` + * :c:data:`exchange_functional` + * :c:data:`final_grid_points` + * :c:data:`mu_erf_dft` + * :c:data:`n_points_final_grid` + * :c:data:`n_states` + * :c:data:`one_e_dm_and_grad_alpha_in_r` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`potential_sr_x_alpha_ao_pbe` + + +.. c:var:: aos_dsr_vx_beta_pbe_w + + + File : :file:`dft_utils_one_e/sr_pot_ao.irp.f` + + .. code:: fortran + + double precision, allocatable :: aos_sr_vc_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_sr_vc_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_sr_vx_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_sr_vx_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_dsr_vc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dsr_vc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dsr_vx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dsr_vx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + + + aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`aos_grad_in_r_array` + * :c:data:`aos_in_r_array` + * :c:data:`correlation_functional` + * :c:data:`exchange_functional` + * :c:data:`final_grid_points` + * :c:data:`mu_erf_dft` + * :c:data:`n_points_final_grid` + * :c:data:`n_states` + * :c:data:`one_e_dm_and_grad_alpha_in_r` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`potential_sr_x_alpha_ao_pbe` + + +.. c:var:: aos_dvc_alpha_pbe_w + + + File : :file:`dft_utils_one_e/pot_ao.irp.f` + + .. code:: fortran + + double precision, allocatable :: aos_vc_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_vc_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_vx_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_vx_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_dvc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dvc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dvx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dvx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + + + aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`aos_grad_in_r_array` + * :c:data:`aos_in_r_array` + * :c:data:`correlation_functional` + * :c:data:`exchange_functional` + * :c:data:`final_grid_points` + * :c:data:`n_points_final_grid` + * :c:data:`n_states` + * :c:data:`one_e_dm_and_grad_alpha_in_r` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`potential_x_alpha_ao_pbe` + + +.. c:var:: aos_dvc_beta_pbe_w + + + File : :file:`dft_utils_one_e/pot_ao.irp.f` + + .. code:: fortran + + double precision, allocatable :: aos_vc_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_vc_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_vx_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_vx_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_dvc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dvc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dvx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dvx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + + + aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`aos_grad_in_r_array` + * :c:data:`aos_in_r_array` + * :c:data:`correlation_functional` + * :c:data:`exchange_functional` + * :c:data:`final_grid_points` + * :c:data:`n_points_final_grid` + * :c:data:`n_states` + * :c:data:`one_e_dm_and_grad_alpha_in_r` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`potential_x_alpha_ao_pbe` + + +.. c:var:: aos_dvx_alpha_pbe_w + + + File : :file:`dft_utils_one_e/pot_ao.irp.f` + + .. code:: fortran + + double precision, allocatable :: aos_vc_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_vc_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_vx_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_vx_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_dvc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dvc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dvx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dvx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + + + aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`aos_grad_in_r_array` + * :c:data:`aos_in_r_array` + * :c:data:`correlation_functional` + * :c:data:`exchange_functional` + * :c:data:`final_grid_points` + * :c:data:`n_points_final_grid` + * :c:data:`n_states` + * :c:data:`one_e_dm_and_grad_alpha_in_r` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`potential_x_alpha_ao_pbe` + + +.. c:var:: aos_dvx_beta_pbe_w + + + File : :file:`dft_utils_one_e/pot_ao.irp.f` + + .. code:: fortran + + double precision, allocatable :: aos_vc_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_vc_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_vx_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_vx_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_dvc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dvc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dvx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dvx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + + + aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`aos_grad_in_r_array` + * :c:data:`aos_in_r_array` + * :c:data:`correlation_functional` + * :c:data:`exchange_functional` + * :c:data:`final_grid_points` + * :c:data:`n_points_final_grid` + * :c:data:`n_states` + * :c:data:`one_e_dm_and_grad_alpha_in_r` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`potential_x_alpha_ao_pbe` + + +.. c:var:: aos_sr_vc_alpha_lda_w + + + File : :file:`dft_utils_one_e/sr_pot_ao.irp.f` + + .. code:: fortran + + double precision, allocatable :: aos_sr_vc_alpha_lda_w (n_points_final_grid,ao_num,N_states) + double precision, allocatable :: aos_sr_vc_beta_lda_w (n_points_final_grid,ao_num,N_states) + double precision, allocatable :: aos_sr_vx_alpha_lda_w (n_points_final_grid,ao_num,N_states) + double precision, allocatable :: aos_sr_vx_beta_lda_w (n_points_final_grid,ao_num,N_states) + + + aos_sr_vxc_alpha_LDA_w(j,i) = ao_i(r_j) * (sr_v^x_alpha(r_j) + sr_v^c_alpha(r_j)) * W(r_j) + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`aos_in_r_array` + * :c:data:`final_grid_points` + * :c:data:`mu_erf_dft` + * :c:data:`n_points_final_grid` + * :c:data:`n_states` + * :c:data:`one_e_dm_alpha_at_r` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`potential_sr_c_alpha_ao_lda` + * :c:data:`potential_sr_x_alpha_ao_lda` + + +.. c:var:: aos_sr_vc_alpha_pbe_w + + + File : :file:`dft_utils_one_e/sr_pot_ao.irp.f` + + .. code:: fortran + + double precision, allocatable :: aos_sr_vc_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_sr_vc_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_sr_vx_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_sr_vx_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_dsr_vc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dsr_vc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dsr_vx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dsr_vx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + + + aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`aos_grad_in_r_array` + * :c:data:`aos_in_r_array` + * :c:data:`correlation_functional` + * :c:data:`exchange_functional` + * :c:data:`final_grid_points` + * :c:data:`mu_erf_dft` + * :c:data:`n_points_final_grid` + * :c:data:`n_states` + * :c:data:`one_e_dm_and_grad_alpha_in_r` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`potential_sr_x_alpha_ao_pbe` + + +.. c:var:: aos_sr_vc_beta_lda_w + + + File : :file:`dft_utils_one_e/sr_pot_ao.irp.f` + + .. code:: fortran + + double precision, allocatable :: aos_sr_vc_alpha_lda_w (n_points_final_grid,ao_num,N_states) + double precision, allocatable :: aos_sr_vc_beta_lda_w (n_points_final_grid,ao_num,N_states) + double precision, allocatable :: aos_sr_vx_alpha_lda_w (n_points_final_grid,ao_num,N_states) + double precision, allocatable :: aos_sr_vx_beta_lda_w (n_points_final_grid,ao_num,N_states) + + + aos_sr_vxc_alpha_LDA_w(j,i) = ao_i(r_j) * (sr_v^x_alpha(r_j) + sr_v^c_alpha(r_j)) * W(r_j) + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`aos_in_r_array` + * :c:data:`final_grid_points` + * :c:data:`mu_erf_dft` + * :c:data:`n_points_final_grid` + * :c:data:`n_states` + * :c:data:`one_e_dm_alpha_at_r` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`potential_sr_c_alpha_ao_lda` + * :c:data:`potential_sr_x_alpha_ao_lda` + + +.. c:var:: aos_sr_vc_beta_pbe_w + + + File : :file:`dft_utils_one_e/sr_pot_ao.irp.f` + + .. code:: fortran + + double precision, allocatable :: aos_sr_vc_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_sr_vc_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_sr_vx_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_sr_vx_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_dsr_vc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dsr_vc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dsr_vx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dsr_vx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + + + aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`aos_grad_in_r_array` + * :c:data:`aos_in_r_array` + * :c:data:`correlation_functional` + * :c:data:`exchange_functional` + * :c:data:`final_grid_points` + * :c:data:`mu_erf_dft` + * :c:data:`n_points_final_grid` + * :c:data:`n_states` + * :c:data:`one_e_dm_and_grad_alpha_in_r` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`potential_sr_x_alpha_ao_pbe` + + +.. c:var:: aos_sr_vx_alpha_lda_w + + + File : :file:`dft_utils_one_e/sr_pot_ao.irp.f` + + .. code:: fortran + + double precision, allocatable :: aos_sr_vc_alpha_lda_w (n_points_final_grid,ao_num,N_states) + double precision, allocatable :: aos_sr_vc_beta_lda_w (n_points_final_grid,ao_num,N_states) + double precision, allocatable :: aos_sr_vx_alpha_lda_w (n_points_final_grid,ao_num,N_states) + double precision, allocatable :: aos_sr_vx_beta_lda_w (n_points_final_grid,ao_num,N_states) + + + aos_sr_vxc_alpha_LDA_w(j,i) = ao_i(r_j) * (sr_v^x_alpha(r_j) + sr_v^c_alpha(r_j)) * W(r_j) + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`aos_in_r_array` + * :c:data:`final_grid_points` + * :c:data:`mu_erf_dft` + * :c:data:`n_points_final_grid` + * :c:data:`n_states` + * :c:data:`one_e_dm_alpha_at_r` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`potential_sr_c_alpha_ao_lda` + * :c:data:`potential_sr_x_alpha_ao_lda` + + +.. c:var:: aos_sr_vx_alpha_pbe_w + + + File : :file:`dft_utils_one_e/sr_pot_ao.irp.f` + + .. code:: fortran + + double precision, allocatable :: aos_sr_vc_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_sr_vc_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_sr_vx_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_sr_vx_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_dsr_vc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dsr_vc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dsr_vx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dsr_vx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + + + aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`aos_grad_in_r_array` + * :c:data:`aos_in_r_array` + * :c:data:`correlation_functional` + * :c:data:`exchange_functional` + * :c:data:`final_grid_points` + * :c:data:`mu_erf_dft` + * :c:data:`n_points_final_grid` + * :c:data:`n_states` + * :c:data:`one_e_dm_and_grad_alpha_in_r` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`potential_sr_x_alpha_ao_pbe` + + +.. c:var:: aos_sr_vx_beta_lda_w + + + File : :file:`dft_utils_one_e/sr_pot_ao.irp.f` + + .. code:: fortran + + double precision, allocatable :: aos_sr_vc_alpha_lda_w (n_points_final_grid,ao_num,N_states) + double precision, allocatable :: aos_sr_vc_beta_lda_w (n_points_final_grid,ao_num,N_states) + double precision, allocatable :: aos_sr_vx_alpha_lda_w (n_points_final_grid,ao_num,N_states) + double precision, allocatable :: aos_sr_vx_beta_lda_w (n_points_final_grid,ao_num,N_states) + + + aos_sr_vxc_alpha_LDA_w(j,i) = ao_i(r_j) * (sr_v^x_alpha(r_j) + sr_v^c_alpha(r_j)) * W(r_j) + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`aos_in_r_array` + * :c:data:`final_grid_points` + * :c:data:`mu_erf_dft` + * :c:data:`n_points_final_grid` + * :c:data:`n_states` + * :c:data:`one_e_dm_alpha_at_r` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`potential_sr_c_alpha_ao_lda` + * :c:data:`potential_sr_x_alpha_ao_lda` + + +.. c:var:: aos_sr_vx_beta_pbe_w + + + File : :file:`dft_utils_one_e/sr_pot_ao.irp.f` + + .. code:: fortran + + double precision, allocatable :: aos_sr_vc_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_sr_vc_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_sr_vx_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_sr_vx_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_dsr_vc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dsr_vc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dsr_vx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dsr_vx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + + + aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`aos_grad_in_r_array` + * :c:data:`aos_in_r_array` + * :c:data:`correlation_functional` + * :c:data:`exchange_functional` + * :c:data:`final_grid_points` + * :c:data:`mu_erf_dft` + * :c:data:`n_points_final_grid` + * :c:data:`n_states` + * :c:data:`one_e_dm_and_grad_alpha_in_r` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`potential_sr_x_alpha_ao_pbe` + + +.. c:var:: aos_vc_alpha_lda_w + + + File : :file:`dft_utils_one_e/pot_ao.irp.f` + + .. code:: fortran + + double precision, allocatable :: aos_vc_alpha_lda_w (n_points_final_grid,ao_num,N_states) + double precision, allocatable :: aos_vc_beta_lda_w (n_points_final_grid,ao_num,N_states) + double precision, allocatable :: aos_vx_alpha_lda_w (n_points_final_grid,ao_num,N_states) + double precision, allocatable :: aos_vx_beta_lda_w (n_points_final_grid,ao_num,N_states) + + + aos_vxc_alpha_LDA_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`aos_in_r_array` + * :c:data:`final_grid_points` + * :c:data:`n_points_final_grid` + * :c:data:`n_states` + * :c:data:`one_e_dm_alpha_at_r` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`potential_x_alpha_ao_lda` + + +.. c:var:: aos_vc_alpha_pbe_w + + + File : :file:`dft_utils_one_e/pot_ao.irp.f` + + .. code:: fortran + + double precision, allocatable :: aos_vc_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_vc_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_vx_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_vx_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_dvc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dvc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dvx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dvx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + + + aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`aos_grad_in_r_array` + * :c:data:`aos_in_r_array` + * :c:data:`correlation_functional` + * :c:data:`exchange_functional` + * :c:data:`final_grid_points` + * :c:data:`n_points_final_grid` + * :c:data:`n_states` + * :c:data:`one_e_dm_and_grad_alpha_in_r` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`potential_x_alpha_ao_pbe` + + +.. c:var:: aos_vc_beta_lda_w + + + File : :file:`dft_utils_one_e/pot_ao.irp.f` + + .. code:: fortran + + double precision, allocatable :: aos_vc_alpha_lda_w (n_points_final_grid,ao_num,N_states) + double precision, allocatable :: aos_vc_beta_lda_w (n_points_final_grid,ao_num,N_states) + double precision, allocatable :: aos_vx_alpha_lda_w (n_points_final_grid,ao_num,N_states) + double precision, allocatable :: aos_vx_beta_lda_w (n_points_final_grid,ao_num,N_states) + + + aos_vxc_alpha_LDA_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`aos_in_r_array` + * :c:data:`final_grid_points` + * :c:data:`n_points_final_grid` + * :c:data:`n_states` + * :c:data:`one_e_dm_alpha_at_r` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`potential_x_alpha_ao_lda` + + +.. c:var:: aos_vc_beta_pbe_w + + + File : :file:`dft_utils_one_e/pot_ao.irp.f` + + .. code:: fortran + + double precision, allocatable :: aos_vc_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_vc_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_vx_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_vx_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_dvc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dvc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dvx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dvx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + + + aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`aos_grad_in_r_array` + * :c:data:`aos_in_r_array` + * :c:data:`correlation_functional` + * :c:data:`exchange_functional` + * :c:data:`final_grid_points` + * :c:data:`n_points_final_grid` + * :c:data:`n_states` + * :c:data:`one_e_dm_and_grad_alpha_in_r` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`potential_x_alpha_ao_pbe` + + +.. c:var:: aos_vx_alpha_lda_w + + + File : :file:`dft_utils_one_e/pot_ao.irp.f` + + .. code:: fortran + + double precision, allocatable :: aos_vc_alpha_lda_w (n_points_final_grid,ao_num,N_states) + double precision, allocatable :: aos_vc_beta_lda_w (n_points_final_grid,ao_num,N_states) + double precision, allocatable :: aos_vx_alpha_lda_w (n_points_final_grid,ao_num,N_states) + double precision, allocatable :: aos_vx_beta_lda_w (n_points_final_grid,ao_num,N_states) + + + aos_vxc_alpha_LDA_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`aos_in_r_array` + * :c:data:`final_grid_points` + * :c:data:`n_points_final_grid` + * :c:data:`n_states` + * :c:data:`one_e_dm_alpha_at_r` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`potential_x_alpha_ao_lda` + + +.. c:var:: aos_vx_alpha_pbe_w + + + File : :file:`dft_utils_one_e/pot_ao.irp.f` + + .. code:: fortran + + double precision, allocatable :: aos_vc_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_vc_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_vx_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_vx_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_dvc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dvc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dvx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dvx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + + + aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`aos_grad_in_r_array` + * :c:data:`aos_in_r_array` + * :c:data:`correlation_functional` + * :c:data:`exchange_functional` + * :c:data:`final_grid_points` + * :c:data:`n_points_final_grid` + * :c:data:`n_states` + * :c:data:`one_e_dm_and_grad_alpha_in_r` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`potential_x_alpha_ao_pbe` + + +.. c:var:: aos_vx_beta_lda_w + + + File : :file:`dft_utils_one_e/pot_ao.irp.f` + + .. code:: fortran + + double precision, allocatable :: aos_vc_alpha_lda_w (n_points_final_grid,ao_num,N_states) + double precision, allocatable :: aos_vc_beta_lda_w (n_points_final_grid,ao_num,N_states) + double precision, allocatable :: aos_vx_alpha_lda_w (n_points_final_grid,ao_num,N_states) + double precision, allocatable :: aos_vx_beta_lda_w (n_points_final_grid,ao_num,N_states) + + + aos_vxc_alpha_LDA_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`aos_in_r_array` + * :c:data:`final_grid_points` + * :c:data:`n_points_final_grid` + * :c:data:`n_states` + * :c:data:`one_e_dm_alpha_at_r` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`potential_x_alpha_ao_lda` + + +.. c:var:: aos_vx_beta_pbe_w + + + File : :file:`dft_utils_one_e/pot_ao.irp.f` + + .. code:: fortran + + double precision, allocatable :: aos_vc_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_vc_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_vx_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_vx_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_dvc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dvc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dvx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dvx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + + + aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`aos_grad_in_r_array` + * :c:data:`aos_in_r_array` + * :c:data:`correlation_functional` + * :c:data:`exchange_functional` + * :c:data:`final_grid_points` + * :c:data:`n_points_final_grid` + * :c:data:`n_states` + * :c:data:`one_e_dm_and_grad_alpha_in_r` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`potential_x_alpha_ao_pbe` + + +.. c:var:: effective_one_e_potential + + + File : :file:`dft_utils_one_e/effective_pot.irp.f` + + .. code:: fortran + + double precision, allocatable :: effective_one_e_potential (mo_num,mo_num,N_states) + double precision, allocatable :: effective_one_e_potential_without_kin (mo_num,mo_num,N_states) + + + Effective_one_e_potential(i,j) = :math:`\rangle i_{MO}| v_{H}^{sr} |j_{MO}\rangle + \rangle i_{MO}| h_{core} |j_{MO}\rangle + \rangle i_{MO}|v_{xc} |j_{MO}\rangle` + + on the |MO| basis + Taking the expectation value does not provide any energy, but + effective_one_e_potential(i,j) is the potential coupling DFT and WFT part to + be used in any WFT calculation. + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_integrals_n_e` + * :c:data:`mo_kinetic_integrals` + * :c:data:`mo_num` + * :c:data:`n_states` + * :c:data:`potential_x_alpha_mo` + * :c:data:`short_range_hartree_operator` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_effective_one_e_potential` + + +.. c:var:: effective_one_e_potential_without_kin + + + File : :file:`dft_utils_one_e/effective_pot.irp.f` + + .. code:: fortran + + double precision, allocatable :: effective_one_e_potential (mo_num,mo_num,N_states) + double precision, allocatable :: effective_one_e_potential_without_kin (mo_num,mo_num,N_states) + + + Effective_one_e_potential(i,j) = :math:`\rangle i_{MO}| v_{H}^{sr} |j_{MO}\rangle + \rangle i_{MO}| h_{core} |j_{MO}\rangle + \rangle i_{MO}|v_{xc} |j_{MO}\rangle` + + on the |MO| basis + Taking the expectation value does not provide any energy, but + effective_one_e_potential(i,j) is the potential coupling DFT and WFT part to + be used in any WFT calculation. + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_integrals_n_e` + * :c:data:`mo_kinetic_integrals` + * :c:data:`mo_num` + * :c:data:`n_states` + * :c:data:`potential_x_alpha_mo` + * :c:data:`short_range_hartree_operator` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_effective_one_e_potential` + + +.. c:var:: energy_c + + + File : :file:`dft_utils_one_e/e_xc_general.irp.f` + + .. code:: fortran + + double precision, allocatable :: energy_x (N_states) + double precision, allocatable :: energy_c (N_states) + + + correlation and exchange energies general providers. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`correlation_functional` + * :c:data:`energy_sr_x_lda` + * :c:data:`energy_sr_x_pbe` + * :c:data:`exchange_functional` + * :c:data:`n_states` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`e_correlation_dft` + * :c:data:`e_exchange_dft` + * :c:data:`shifting_constant` + + +.. c:var:: energy_c_lda + + + File : :file:`dft_utils_one_e/e_xc.irp.f` + + .. code:: fortran + + double precision, allocatable :: energy_x_lda (N_states) + double precision, allocatable :: energy_c_lda (N_states) + + + exchange/correlation energy with the short range LDA functional + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`final_grid_points` + * :c:data:`n_points_final_grid` + * :c:data:`n_states` + * :c:data:`one_e_dm_alpha_at_r` + + + +.. c:var:: energy_c_pbe + + + File : :file:`dft_utils_one_e/e_xc.irp.f` + + .. code:: fortran + + double precision, allocatable :: energy_x_pbe (N_states) + double precision, allocatable :: energy_c_pbe (N_states) + + + exchange/correlation energy with the short range PBE functional + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`correlation_functional` + * :c:data:`exchange_functional` + * :c:data:`final_grid_points` + * :c:data:`n_points_final_grid` + * :c:data:`n_states` + * :c:data:`one_e_dm_and_grad_alpha_in_r` + + + +.. c:var:: energy_sr_c_lda + + + File : :file:`dft_utils_one_e/sr_exc.irp.f` + + .. code:: fortran + + double precision, allocatable :: energy_sr_x_lda (N_states) + double precision, allocatable :: energy_sr_c_lda (N_states) + + + exchange/correlation energy with the short range LDA functional + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`final_grid_points` + * :c:data:`mu_erf_dft` + * :c:data:`n_points_final_grid` + * :c:data:`n_states` + * :c:data:`one_e_dm_alpha_at_r` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`energy_x` + + +.. c:var:: energy_sr_c_pbe + + + File : :file:`dft_utils_one_e/sr_exc.irp.f` + + .. code:: fortran + + double precision, allocatable :: energy_sr_x_pbe (N_states) + double precision, allocatable :: energy_sr_c_pbe (N_states) + + + exchange/correlation energy with the short range PBE functional + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`correlation_functional` + * :c:data:`exchange_functional` + * :c:data:`final_grid_points` + * :c:data:`mu_erf_dft` + * :c:data:`n_points_final_grid` + * :c:data:`n_states` + * :c:data:`one_e_dm_and_grad_alpha_in_r` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`energy_x` + + +.. c:var:: energy_sr_x_lda + + + File : :file:`dft_utils_one_e/sr_exc.irp.f` + + .. code:: fortran + + double precision, allocatable :: energy_sr_x_lda (N_states) + double precision, allocatable :: energy_sr_c_lda (N_states) + + + exchange/correlation energy with the short range LDA functional + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`final_grid_points` + * :c:data:`mu_erf_dft` + * :c:data:`n_points_final_grid` + * :c:data:`n_states` + * :c:data:`one_e_dm_alpha_at_r` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`energy_x` + + +.. c:var:: energy_sr_x_pbe + + + File : :file:`dft_utils_one_e/sr_exc.irp.f` + + .. code:: fortran + + double precision, allocatable :: energy_sr_x_pbe (N_states) + double precision, allocatable :: energy_sr_c_pbe (N_states) + + + exchange/correlation energy with the short range PBE functional + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`correlation_functional` + * :c:data:`exchange_functional` + * :c:data:`final_grid_points` + * :c:data:`mu_erf_dft` + * :c:data:`n_points_final_grid` + * :c:data:`n_states` + * :c:data:`one_e_dm_and_grad_alpha_in_r` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`energy_x` + + +.. c:var:: energy_x + + + File : :file:`dft_utils_one_e/e_xc_general.irp.f` + + .. code:: fortran + + double precision, allocatable :: energy_x (N_states) + double precision, allocatable :: energy_c (N_states) + + + correlation and exchange energies general providers. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`correlation_functional` + * :c:data:`energy_sr_x_lda` + * :c:data:`energy_sr_x_pbe` + * :c:data:`exchange_functional` + * :c:data:`n_states` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`e_correlation_dft` + * :c:data:`e_exchange_dft` + * :c:data:`shifting_constant` + + +.. c:var:: energy_x_lda + + + File : :file:`dft_utils_one_e/e_xc.irp.f` + + .. code:: fortran + + double precision, allocatable :: energy_x_lda (N_states) + double precision, allocatable :: energy_c_lda (N_states) + + + exchange/correlation energy with the short range LDA functional + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`final_grid_points` + * :c:data:`n_points_final_grid` + * :c:data:`n_states` + * :c:data:`one_e_dm_alpha_at_r` + + + +.. c:var:: energy_x_pbe + + + File : :file:`dft_utils_one_e/e_xc.irp.f` + + .. code:: fortran + + double precision, allocatable :: energy_x_pbe (N_states) + double precision, allocatable :: energy_c_pbe (N_states) + + + exchange/correlation energy with the short range PBE functional + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`correlation_functional` + * :c:data:`exchange_functional` + * :c:data:`final_grid_points` + * :c:data:`n_points_final_grid` + * :c:data:`n_states` + * :c:data:`one_e_dm_and_grad_alpha_in_r` + + + +.. c:function:: gga_sr_type_functionals: + + + File : :file:`dft_utils_one_e/utils.irp.f` + + .. code:: fortran + + subroutine GGA_sr_type_functionals(r,rho_a,rho_b,grad_rho_a_2,grad_rho_b_2,grad_rho_a_b, & + ex,vx_rho_a,vx_rho_b,vx_grad_rho_a_2,vx_grad_rho_b_2,vx_grad_rho_a_b, & + ec,vc_rho_a,vc_rho_b,vc_grad_rho_a_2,vc_grad_rho_b_2,vc_grad_rho_a_b ) + + + routine that helps in building the x/c potentials on the AO basis for a GGA functional with a short-range interaction + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mu_erf_dft` + * :c:data:`exchange_functional` + * :c:data:`correlation_functional` + * :c:data:`n_states` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:data:`aos_sr_vc_alpha_pbe_w` + * :c:data:`energy_sr_x_pbe` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`ec_pbe_sr` + * :c:func:`ex_pbe_sr` + * :c:func:`grad_rho_ab_to_grad_rho_oc` + * :c:func:`rho_ab_to_rho_oc` + * :c:func:`v_grad_rho_oc_to_v_grad_rho_ab` + * :c:func:`v_rho_oc_to_v_rho_ab` + + +.. c:function:: gga_type_functionals: + + + File : :file:`dft_utils_one_e/utils.irp.f` + + .. code:: fortran + + subroutine GGA_type_functionals(r,rho_a,rho_b,grad_rho_a_2,grad_rho_b_2,grad_rho_a_b, & + ex,vx_rho_a,vx_rho_b,vx_grad_rho_a_2,vx_grad_rho_b_2,vx_grad_rho_a_b, & + ec,vc_rho_a,vc_rho_b,vc_grad_rho_a_2,vc_grad_rho_b_2,vc_grad_rho_a_b ) + + + routine that helps in building the x/c potentials on the AO basis for a GGA functional + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_states` + * :c:data:`exchange_functional` + * :c:data:`correlation_functional` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:data:`aos_vc_alpha_pbe_w` + * :c:data:`energy_x_pbe` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`ec_pbe_sr` + * :c:func:`ex_pbe_sr` + * :c:func:`grad_rho_ab_to_grad_rho_oc` + * :c:func:`rho_ab_to_rho_oc` + * :c:func:`v_grad_rho_oc_to_v_grad_rho_ab` + * :c:func:`v_rho_oc_to_v_rho_ab` + + +.. c:var:: grad_aos_dsr_vc_alpha_pbe_w + + + File : :file:`dft_utils_one_e/sr_pot_ao.irp.f` + + .. code:: fortran + + double precision, allocatable :: aos_sr_vc_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_sr_vc_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_sr_vx_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_sr_vx_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_dsr_vc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dsr_vc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dsr_vx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dsr_vx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + + + aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`aos_grad_in_r_array` + * :c:data:`aos_in_r_array` + * :c:data:`correlation_functional` + * :c:data:`exchange_functional` + * :c:data:`final_grid_points` + * :c:data:`mu_erf_dft` + * :c:data:`n_points_final_grid` + * :c:data:`n_states` + * :c:data:`one_e_dm_and_grad_alpha_in_r` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`potential_sr_x_alpha_ao_pbe` + + +.. c:var:: grad_aos_dsr_vc_beta_pbe_w + + + File : :file:`dft_utils_one_e/sr_pot_ao.irp.f` + + .. code:: fortran + + double precision, allocatable :: aos_sr_vc_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_sr_vc_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_sr_vx_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_sr_vx_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_dsr_vc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dsr_vc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dsr_vx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dsr_vx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + + + aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`aos_grad_in_r_array` + * :c:data:`aos_in_r_array` + * :c:data:`correlation_functional` + * :c:data:`exchange_functional` + * :c:data:`final_grid_points` + * :c:data:`mu_erf_dft` + * :c:data:`n_points_final_grid` + * :c:data:`n_states` + * :c:data:`one_e_dm_and_grad_alpha_in_r` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`potential_sr_x_alpha_ao_pbe` + + +.. c:var:: grad_aos_dsr_vx_alpha_pbe_w + + + File : :file:`dft_utils_one_e/sr_pot_ao.irp.f` + + .. code:: fortran + + double precision, allocatable :: aos_sr_vc_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_sr_vc_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_sr_vx_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_sr_vx_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_dsr_vc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dsr_vc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dsr_vx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dsr_vx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + + + aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`aos_grad_in_r_array` + * :c:data:`aos_in_r_array` + * :c:data:`correlation_functional` + * :c:data:`exchange_functional` + * :c:data:`final_grid_points` + * :c:data:`mu_erf_dft` + * :c:data:`n_points_final_grid` + * :c:data:`n_states` + * :c:data:`one_e_dm_and_grad_alpha_in_r` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`potential_sr_x_alpha_ao_pbe` + + +.. c:var:: grad_aos_dsr_vx_beta_pbe_w + + + File : :file:`dft_utils_one_e/sr_pot_ao.irp.f` + + .. code:: fortran + + double precision, allocatable :: aos_sr_vc_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_sr_vc_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_sr_vx_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_sr_vx_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_dsr_vc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dsr_vc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dsr_vx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dsr_vx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + + + aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`aos_grad_in_r_array` + * :c:data:`aos_in_r_array` + * :c:data:`correlation_functional` + * :c:data:`exchange_functional` + * :c:data:`final_grid_points` + * :c:data:`mu_erf_dft` + * :c:data:`n_points_final_grid` + * :c:data:`n_states` + * :c:data:`one_e_dm_and_grad_alpha_in_r` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`potential_sr_x_alpha_ao_pbe` + + +.. c:var:: grad_aos_dvc_alpha_pbe_w + + + File : :file:`dft_utils_one_e/pot_ao.irp.f` + + .. code:: fortran + + double precision, allocatable :: aos_vc_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_vc_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_vx_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_vx_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_dvc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dvc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dvx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dvx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + + + aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`aos_grad_in_r_array` + * :c:data:`aos_in_r_array` + * :c:data:`correlation_functional` + * :c:data:`exchange_functional` + * :c:data:`final_grid_points` + * :c:data:`n_points_final_grid` + * :c:data:`n_states` + * :c:data:`one_e_dm_and_grad_alpha_in_r` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`potential_x_alpha_ao_pbe` + + +.. c:var:: grad_aos_dvc_beta_pbe_w + + + File : :file:`dft_utils_one_e/pot_ao.irp.f` + + .. code:: fortran + + double precision, allocatable :: aos_vc_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_vc_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_vx_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_vx_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_dvc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dvc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dvx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dvx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + + + aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`aos_grad_in_r_array` + * :c:data:`aos_in_r_array` + * :c:data:`correlation_functional` + * :c:data:`exchange_functional` + * :c:data:`final_grid_points` + * :c:data:`n_points_final_grid` + * :c:data:`n_states` + * :c:data:`one_e_dm_and_grad_alpha_in_r` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`potential_x_alpha_ao_pbe` + + +.. c:var:: grad_aos_dvx_alpha_pbe_w + + + File : :file:`dft_utils_one_e/pot_ao.irp.f` + + .. code:: fortran + + double precision, allocatable :: aos_vc_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_vc_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_vx_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_vx_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_dvc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dvc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dvx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dvx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + + + aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`aos_grad_in_r_array` + * :c:data:`aos_in_r_array` + * :c:data:`correlation_functional` + * :c:data:`exchange_functional` + * :c:data:`final_grid_points` + * :c:data:`n_points_final_grid` + * :c:data:`n_states` + * :c:data:`one_e_dm_and_grad_alpha_in_r` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`potential_x_alpha_ao_pbe` + + +.. c:var:: grad_aos_dvx_beta_pbe_w + + + File : :file:`dft_utils_one_e/pot_ao.irp.f` + + .. code:: fortran + + double precision, allocatable :: aos_vc_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_vc_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_vx_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_vx_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_dvc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dvc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dvx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dvx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + + + aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`aos_grad_in_r_array` + * :c:data:`aos_in_r_array` + * :c:data:`correlation_functional` + * :c:data:`exchange_functional` + * :c:data:`final_grid_points` + * :c:data:`n_points_final_grid` + * :c:data:`n_states` + * :c:data:`one_e_dm_and_grad_alpha_in_r` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`potential_x_alpha_ao_pbe` + + +.. c:var:: mu_erf_dft + + + File : :file:`dft_utils_one_e/mu_erf_dft.irp.f` + + .. code:: fortran + + double precision :: mu_erf_dft + + + range separation parameter used in RS-DFT. It is set to mu_erf in order to be consistent with the two electrons integrals erf + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mu_erf` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`aos_sr_vc_alpha_lda_w` + * :c:data:`aos_sr_vc_alpha_pbe_w` + * :c:data:`energy_sr_x_lda` + * :c:data:`energy_sr_x_pbe` + + +.. c:var:: potential_c_alpha_ao + + + File : :file:`dft_utils_one_e/pot_general.irp.f` + + .. code:: fortran + + double precision, allocatable :: potential_x_alpha_ao (ao_num,ao_num,N_states) + double precision, allocatable :: potential_x_beta_ao (ao_num,ao_num,N_states) + double precision, allocatable :: potential_c_alpha_ao (ao_num,ao_num,N_states) + double precision, allocatable :: potential_c_beta_ao (ao_num,ao_num,N_states) + + + general providers for the alpha/beta exchange/correlation potentials on the AO basis + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`correlation_functional` + * :c:data:`exchange_functional` + * :c:data:`n_states` + * :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` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_potential_alpha_xc` + * :c:data:`potential_x_alpha_mo` + + +.. c:var:: potential_c_alpha_ao_lda + + + File : :file:`dft_utils_one_e/pot_ao.irp.f` + + .. code:: fortran + + double precision, allocatable :: potential_x_alpha_ao_lda (ao_num,ao_num,N_states) + double precision, allocatable :: potential_x_beta_ao_lda (ao_num,ao_num,N_states) + double precision, allocatable :: potential_c_alpha_ao_lda (ao_num,ao_num,N_states) + double precision, allocatable :: potential_c_beta_ao_lda (ao_num,ao_num,N_states) + + + short range exchange/correlation alpha/beta potentials with LDA functional on the AO basis + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`aos_in_r_array` + * :c:data:`aos_vc_alpha_lda_w` + * :c:data:`n_points_final_grid` + * :c:data:`n_states` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`potential_x_alpha_ao` + + +.. c:var:: potential_c_alpha_ao_pbe + + + File : :file:`dft_utils_one_e/pot_ao.irp.f` + + .. code:: fortran + + double precision, allocatable :: potential_x_alpha_ao_pbe (ao_num,ao_num,N_states) + double precision, allocatable :: potential_x_beta_ao_pbe (ao_num,ao_num,N_states) + double precision, allocatable :: potential_c_alpha_ao_pbe (ao_num,ao_num,N_states) + double precision, allocatable :: potential_c_beta_ao_pbe (ao_num,ao_num,N_states) + + + exchange/correlation alpha/beta potentials with the short range PBE functional on the AO basis + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`aos_grad_in_r_array` + * :c:data:`aos_in_r_array` + * :c:data:`aos_vc_alpha_pbe_w` + * :c:data:`n_points_final_grid` + * :c:data:`n_states` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`potential_x_alpha_ao` + + +.. c:var:: potential_c_alpha_mo + + + File : :file:`dft_utils_one_e/pot_general.irp.f` + + .. code:: fortran + + double precision, allocatable :: potential_x_alpha_mo (mo_num,mo_num,N_states) + double precision, allocatable :: potential_x_beta_mo (mo_num,mo_num,N_states) + double precision, allocatable :: potential_c_alpha_mo (mo_num,mo_num,N_states) + double precision, allocatable :: potential_c_beta_mo (mo_num,mo_num,N_states) + + + general providers for the alpha/beta exchange/correlation potentials on the MO basis + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`mo_coef` + * :c:data:`mo_num` + * :c:data:`n_states` + * :c:data:`potential_x_alpha_ao` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`effective_one_e_potential` + * :c:data:`trace_v_xc` + + +.. c:var:: potential_c_beta_ao + + + File : :file:`dft_utils_one_e/pot_general.irp.f` + + .. code:: fortran + + double precision, allocatable :: potential_x_alpha_ao (ao_num,ao_num,N_states) + double precision, allocatable :: potential_x_beta_ao (ao_num,ao_num,N_states) + double precision, allocatable :: potential_c_alpha_ao (ao_num,ao_num,N_states) + double precision, allocatable :: potential_c_beta_ao (ao_num,ao_num,N_states) + + + general providers for the alpha/beta exchange/correlation potentials on the AO basis + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`correlation_functional` + * :c:data:`exchange_functional` + * :c:data:`n_states` + * :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` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_potential_alpha_xc` + * :c:data:`potential_x_alpha_mo` + + +.. c:var:: potential_c_beta_ao_lda + + + File : :file:`dft_utils_one_e/pot_ao.irp.f` + + .. code:: fortran + + double precision, allocatable :: potential_x_alpha_ao_lda (ao_num,ao_num,N_states) + double precision, allocatable :: potential_x_beta_ao_lda (ao_num,ao_num,N_states) + double precision, allocatable :: potential_c_alpha_ao_lda (ao_num,ao_num,N_states) + double precision, allocatable :: potential_c_beta_ao_lda (ao_num,ao_num,N_states) + + + short range exchange/correlation alpha/beta potentials with LDA functional on the AO basis + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`aos_in_r_array` + * :c:data:`aos_vc_alpha_lda_w` + * :c:data:`n_points_final_grid` + * :c:data:`n_states` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`potential_x_alpha_ao` + + +.. c:var:: potential_c_beta_ao_pbe + + + File : :file:`dft_utils_one_e/pot_ao.irp.f` + + .. code:: fortran + + double precision, allocatable :: potential_x_alpha_ao_pbe (ao_num,ao_num,N_states) + double precision, allocatable :: potential_x_beta_ao_pbe (ao_num,ao_num,N_states) + double precision, allocatable :: potential_c_alpha_ao_pbe (ao_num,ao_num,N_states) + double precision, allocatable :: potential_c_beta_ao_pbe (ao_num,ao_num,N_states) + + + exchange/correlation alpha/beta potentials with the short range PBE functional on the AO basis + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`aos_grad_in_r_array` + * :c:data:`aos_in_r_array` + * :c:data:`aos_vc_alpha_pbe_w` + * :c:data:`n_points_final_grid` + * :c:data:`n_states` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`potential_x_alpha_ao` + + +.. c:var:: potential_c_beta_mo + + + File : :file:`dft_utils_one_e/pot_general.irp.f` + + .. code:: fortran + + double precision, allocatable :: potential_x_alpha_mo (mo_num,mo_num,N_states) + double precision, allocatable :: potential_x_beta_mo (mo_num,mo_num,N_states) + double precision, allocatable :: potential_c_alpha_mo (mo_num,mo_num,N_states) + double precision, allocatable :: potential_c_beta_mo (mo_num,mo_num,N_states) + + + general providers for the alpha/beta exchange/correlation potentials on the MO basis + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`mo_coef` + * :c:data:`mo_num` + * :c:data:`n_states` + * :c:data:`potential_x_alpha_ao` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`effective_one_e_potential` + * :c:data:`trace_v_xc` + + +.. c:var:: potential_sr_c_alpha_ao_lda + + + File : :file:`dft_utils_one_e/sr_pot_ao.irp.f` + + .. code:: fortran + + double precision, allocatable :: potential_sr_c_alpha_ao_lda (ao_num,ao_num,N_states) + double precision, allocatable :: potential_sr_c_beta_ao_lda (ao_num,ao_num,N_states) + + + short range correlation alpha/beta potentials with LDA functional on the |AO| basis + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`aos_in_r_array` + * :c:data:`aos_sr_vc_alpha_lda_w` + * :c:data:`n_points_final_grid` + * :c:data:`n_states` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`potential_x_alpha_ao` + + +.. c:var:: potential_sr_c_alpha_ao_pbe + + + File : :file:`dft_utils_one_e/sr_pot_ao.irp.f` + + .. code:: fortran + + double precision, allocatable :: potential_sr_x_alpha_ao_pbe (ao_num,ao_num,N_states) + double precision, allocatable :: potential_sr_x_beta_ao_pbe (ao_num,ao_num,N_states) + double precision, allocatable :: potential_sr_c_alpha_ao_pbe (ao_num,ao_num,N_states) + double precision, allocatable :: potential_sr_c_beta_ao_pbe (ao_num,ao_num,N_states) + + + exchange/correlation alpha/beta potentials with the short range PBE functional on the AO basis + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`aos_grad_in_r_array` + * :c:data:`aos_in_r_array` + * :c:data:`aos_sr_vc_alpha_pbe_w` + * :c:data:`n_points_final_grid` + * :c:data:`n_states` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`potential_x_alpha_ao` + + +.. c:var:: potential_sr_c_beta_ao_lda + + + File : :file:`dft_utils_one_e/sr_pot_ao.irp.f` + + .. code:: fortran + + double precision, allocatable :: potential_sr_c_alpha_ao_lda (ao_num,ao_num,N_states) + double precision, allocatable :: potential_sr_c_beta_ao_lda (ao_num,ao_num,N_states) + + + short range correlation alpha/beta potentials with LDA functional on the |AO| basis + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`aos_in_r_array` + * :c:data:`aos_sr_vc_alpha_lda_w` + * :c:data:`n_points_final_grid` + * :c:data:`n_states` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`potential_x_alpha_ao` + + +.. c:var:: potential_sr_c_beta_ao_pbe + + + File : :file:`dft_utils_one_e/sr_pot_ao.irp.f` + + .. code:: fortran + + double precision, allocatable :: potential_sr_x_alpha_ao_pbe (ao_num,ao_num,N_states) + double precision, allocatable :: potential_sr_x_beta_ao_pbe (ao_num,ao_num,N_states) + double precision, allocatable :: potential_sr_c_alpha_ao_pbe (ao_num,ao_num,N_states) + double precision, allocatable :: potential_sr_c_beta_ao_pbe (ao_num,ao_num,N_states) + + + exchange/correlation alpha/beta potentials with the short range PBE functional on the AO basis + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`aos_grad_in_r_array` + * :c:data:`aos_in_r_array` + * :c:data:`aos_sr_vc_alpha_pbe_w` + * :c:data:`n_points_final_grid` + * :c:data:`n_states` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`potential_x_alpha_ao` + + +.. c:var:: potential_sr_x_alpha_ao_lda + + + File : :file:`dft_utils_one_e/sr_pot_ao.irp.f` + + .. code:: fortran + + double precision, allocatable :: potential_sr_x_alpha_ao_lda (ao_num,ao_num,N_states) + double precision, allocatable :: potential_sr_x_beta_ao_lda (ao_num,ao_num,N_states) + + + short range exchange alpha/beta potentials with LDA functional on the |AO| basis + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`aos_in_r_array` + * :c:data:`aos_sr_vc_alpha_lda_w` + * :c:data:`n_points_final_grid` + * :c:data:`n_states` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`potential_x_alpha_ao` + + +.. c:var:: potential_sr_x_alpha_ao_pbe + + + File : :file:`dft_utils_one_e/sr_pot_ao.irp.f` + + .. code:: fortran + + double precision, allocatable :: potential_sr_x_alpha_ao_pbe (ao_num,ao_num,N_states) + double precision, allocatable :: potential_sr_x_beta_ao_pbe (ao_num,ao_num,N_states) + double precision, allocatable :: potential_sr_c_alpha_ao_pbe (ao_num,ao_num,N_states) + double precision, allocatable :: potential_sr_c_beta_ao_pbe (ao_num,ao_num,N_states) + + + exchange/correlation alpha/beta potentials with the short range PBE functional on the AO basis + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`aos_grad_in_r_array` + * :c:data:`aos_in_r_array` + * :c:data:`aos_sr_vc_alpha_pbe_w` + * :c:data:`n_points_final_grid` + * :c:data:`n_states` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`potential_x_alpha_ao` + + +.. c:var:: potential_sr_x_beta_ao_lda + + + File : :file:`dft_utils_one_e/sr_pot_ao.irp.f` + + .. code:: fortran + + double precision, allocatable :: potential_sr_x_alpha_ao_lda (ao_num,ao_num,N_states) + double precision, allocatable :: potential_sr_x_beta_ao_lda (ao_num,ao_num,N_states) + + + short range exchange alpha/beta potentials with LDA functional on the |AO| basis + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`aos_in_r_array` + * :c:data:`aos_sr_vc_alpha_lda_w` + * :c:data:`n_points_final_grid` + * :c:data:`n_states` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`potential_x_alpha_ao` + + +.. c:var:: potential_sr_x_beta_ao_pbe + + + File : :file:`dft_utils_one_e/sr_pot_ao.irp.f` + + .. code:: fortran + + double precision, allocatable :: potential_sr_x_alpha_ao_pbe (ao_num,ao_num,N_states) + double precision, allocatable :: potential_sr_x_beta_ao_pbe (ao_num,ao_num,N_states) + double precision, allocatable :: potential_sr_c_alpha_ao_pbe (ao_num,ao_num,N_states) + double precision, allocatable :: potential_sr_c_beta_ao_pbe (ao_num,ao_num,N_states) + + + exchange/correlation alpha/beta potentials with the short range PBE functional on the AO basis + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`aos_grad_in_r_array` + * :c:data:`aos_in_r_array` + * :c:data:`aos_sr_vc_alpha_pbe_w` + * :c:data:`n_points_final_grid` + * :c:data:`n_states` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`potential_x_alpha_ao` + + +.. c:var:: potential_x_alpha_ao + + + File : :file:`dft_utils_one_e/pot_general.irp.f` + + .. code:: fortran + + double precision, allocatable :: potential_x_alpha_ao (ao_num,ao_num,N_states) + double precision, allocatable :: potential_x_beta_ao (ao_num,ao_num,N_states) + double precision, allocatable :: potential_c_alpha_ao (ao_num,ao_num,N_states) + double precision, allocatable :: potential_c_beta_ao (ao_num,ao_num,N_states) + + + general providers for the alpha/beta exchange/correlation potentials on the AO basis + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`correlation_functional` + * :c:data:`exchange_functional` + * :c:data:`n_states` + * :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` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_potential_alpha_xc` + * :c:data:`potential_x_alpha_mo` + + +.. c:var:: potential_x_alpha_ao_lda + + + File : :file:`dft_utils_one_e/pot_ao.irp.f` + + .. code:: fortran + + double precision, allocatable :: potential_x_alpha_ao_lda (ao_num,ao_num,N_states) + double precision, allocatable :: potential_x_beta_ao_lda (ao_num,ao_num,N_states) + double precision, allocatable :: potential_c_alpha_ao_lda (ao_num,ao_num,N_states) + double precision, allocatable :: potential_c_beta_ao_lda (ao_num,ao_num,N_states) + + + short range exchange/correlation alpha/beta potentials with LDA functional on the AO basis + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`aos_in_r_array` + * :c:data:`aos_vc_alpha_lda_w` + * :c:data:`n_points_final_grid` + * :c:data:`n_states` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`potential_x_alpha_ao` + + +.. c:var:: potential_x_alpha_ao_pbe + + + File : :file:`dft_utils_one_e/pot_ao.irp.f` + + .. code:: fortran + + double precision, allocatable :: potential_x_alpha_ao_pbe (ao_num,ao_num,N_states) + double precision, allocatable :: potential_x_beta_ao_pbe (ao_num,ao_num,N_states) + double precision, allocatable :: potential_c_alpha_ao_pbe (ao_num,ao_num,N_states) + double precision, allocatable :: potential_c_beta_ao_pbe (ao_num,ao_num,N_states) + + + exchange/correlation alpha/beta potentials with the short range PBE functional on the AO basis + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`aos_grad_in_r_array` + * :c:data:`aos_in_r_array` + * :c:data:`aos_vc_alpha_pbe_w` + * :c:data:`n_points_final_grid` + * :c:data:`n_states` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`potential_x_alpha_ao` + + +.. c:var:: potential_x_alpha_mo + + + File : :file:`dft_utils_one_e/pot_general.irp.f` + + .. code:: fortran + + double precision, allocatable :: potential_x_alpha_mo (mo_num,mo_num,N_states) + double precision, allocatable :: potential_x_beta_mo (mo_num,mo_num,N_states) + double precision, allocatable :: potential_c_alpha_mo (mo_num,mo_num,N_states) + double precision, allocatable :: potential_c_beta_mo (mo_num,mo_num,N_states) + + + general providers for the alpha/beta exchange/correlation potentials on the MO basis + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`mo_coef` + * :c:data:`mo_num` + * :c:data:`n_states` + * :c:data:`potential_x_alpha_ao` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`effective_one_e_potential` + * :c:data:`trace_v_xc` + + +.. c:var:: potential_x_beta_ao + + + File : :file:`dft_utils_one_e/pot_general.irp.f` + + .. code:: fortran + + double precision, allocatable :: potential_x_alpha_ao (ao_num,ao_num,N_states) + double precision, allocatable :: potential_x_beta_ao (ao_num,ao_num,N_states) + double precision, allocatable :: potential_c_alpha_ao (ao_num,ao_num,N_states) + double precision, allocatable :: potential_c_beta_ao (ao_num,ao_num,N_states) + + + general providers for the alpha/beta exchange/correlation potentials on the AO basis + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`correlation_functional` + * :c:data:`exchange_functional` + * :c:data:`n_states` + * :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` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_potential_alpha_xc` + * :c:data:`potential_x_alpha_mo` + + +.. c:var:: potential_x_beta_ao_lda + + + File : :file:`dft_utils_one_e/pot_ao.irp.f` + + .. code:: fortran + + double precision, allocatable :: potential_x_alpha_ao_lda (ao_num,ao_num,N_states) + double precision, allocatable :: potential_x_beta_ao_lda (ao_num,ao_num,N_states) + double precision, allocatable :: potential_c_alpha_ao_lda (ao_num,ao_num,N_states) + double precision, allocatable :: potential_c_beta_ao_lda (ao_num,ao_num,N_states) + + + short range exchange/correlation alpha/beta potentials with LDA functional on the AO basis + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`aos_in_r_array` + * :c:data:`aos_vc_alpha_lda_w` + * :c:data:`n_points_final_grid` + * :c:data:`n_states` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`potential_x_alpha_ao` + + +.. c:var:: potential_x_beta_ao_pbe + + + File : :file:`dft_utils_one_e/pot_ao.irp.f` + + .. code:: fortran + + double precision, allocatable :: potential_x_alpha_ao_pbe (ao_num,ao_num,N_states) + double precision, allocatable :: potential_x_beta_ao_pbe (ao_num,ao_num,N_states) + double precision, allocatable :: potential_c_alpha_ao_pbe (ao_num,ao_num,N_states) + double precision, allocatable :: potential_c_beta_ao_pbe (ao_num,ao_num,N_states) + + + exchange/correlation alpha/beta potentials with the short range PBE functional on the AO basis + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`aos_grad_in_r_array` + * :c:data:`aos_in_r_array` + * :c:data:`aos_vc_alpha_pbe_w` + * :c:data:`n_points_final_grid` + * :c:data:`n_states` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`potential_x_alpha_ao` + + +.. c:var:: potential_x_beta_mo + + + File : :file:`dft_utils_one_e/pot_general.irp.f` + + .. code:: fortran + + double precision, allocatable :: potential_x_alpha_mo (mo_num,mo_num,N_states) + double precision, allocatable :: potential_x_beta_mo (mo_num,mo_num,N_states) + double precision, allocatable :: potential_c_alpha_mo (mo_num,mo_num,N_states) + double precision, allocatable :: potential_c_beta_mo (mo_num,mo_num,N_states) + + + general providers for the alpha/beta exchange/correlation potentials on the MO basis + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`mo_coef` + * :c:data:`mo_num` + * :c:data:`n_states` + * :c:data:`potential_x_alpha_ao` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`effective_one_e_potential` + * :c:data:`trace_v_xc` + + +.. c:var:: psi_dft_energy_h_core + + + File : :file:`dft_utils_one_e/one_e_energy_dft.irp.f` + + .. code:: fortran + + double precision, allocatable :: psi_dft_energy_kinetic (N_states) + double precision, allocatable :: psi_dft_energy_nuclear_elec (N_states) + double precision, allocatable :: psi_dft_energy_h_core (N_states) + + + kinetic, electron-nuclear and total h_core energy computed with the density matrix one_e_dm_mo_beta_for_dft+one_e_dm_mo_alpha_for_dft + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`elec_alpha_num` + * :c:data:`elec_beta_num` + * :c:data:`mo_integrals_n_e` + * :c:data:`mo_kinetic_integrals` + * :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` + + + +.. c:var:: psi_dft_energy_kinetic + + + File : :file:`dft_utils_one_e/one_e_energy_dft.irp.f` + + .. code:: fortran + + double precision, allocatable :: psi_dft_energy_kinetic (N_states) + double precision, allocatable :: psi_dft_energy_nuclear_elec (N_states) + double precision, allocatable :: psi_dft_energy_h_core (N_states) + + + kinetic, electron-nuclear and total h_core energy computed with the density matrix one_e_dm_mo_beta_for_dft+one_e_dm_mo_alpha_for_dft + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`elec_alpha_num` + * :c:data:`elec_beta_num` + * :c:data:`mo_integrals_n_e` + * :c:data:`mo_kinetic_integrals` + * :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` + + + +.. c:var:: psi_dft_energy_nuclear_elec + + + File : :file:`dft_utils_one_e/one_e_energy_dft.irp.f` + + .. code:: fortran + + double precision, allocatable :: psi_dft_energy_kinetic (N_states) + double precision, allocatable :: psi_dft_energy_nuclear_elec (N_states) + double precision, allocatable :: psi_dft_energy_h_core (N_states) + + + kinetic, electron-nuclear and total h_core energy computed with the density matrix one_e_dm_mo_beta_for_dft+one_e_dm_mo_alpha_for_dft + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`elec_alpha_num` + * :c:data:`elec_beta_num` + * :c:data:`mo_integrals_n_e` + * :c:data:`mo_kinetic_integrals` + * :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` + + + +.. c:var:: shifting_constant + + + File : :file:`dft_utils_one_e/shifted_potential.irp.f` + + .. code:: fortran + + double precision, allocatable :: shifting_constant (N_states) + + + shifting_constant = (E_{Hxc} - <\Psi | V_{Hxc} | \Psi>) / N_elec + constant to add to the potential in order to obtain the variational energy as + the eigenvalue of the effective long-range Hamiltonian + (see original paper of Levy PRL 113, 113002 (2014), equation (17) ) + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`elec_num` + * :c:data:`energy_x` + * :c:data:`n_states` + * :c:data:`short_range_hartree_operator` + * :c:data:`trace_v_xc` + + + +.. c:var:: short_range_hartree + + + File : :file:`dft_utils_one_e/sr_coulomb.irp.f` + + .. code:: fortran + + double precision, allocatable :: short_range_hartree_operator (mo_num,mo_num,N_states) + double precision, allocatable :: short_range_hartree (N_states) + + + short_range_Hartree_operator(i,j) = :math:`\int dr i(r)j(r) \int r' \rho(r') W_{ee}^{sr}` + + short_range_Hartree = :math:`1/2 \sum_{i,j} \rho_{ij} \mathtt{short_range_Hartree_operator}(i,j)` + + = :math:`1/2 \int dr \int r' \rho(r) \rho(r') W_{ee}^{sr}` + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_integrals_erf_map` + * :c:data:`mo_integrals_map` + * :c:data:`mo_num` + * :c:data:`mo_two_e_integrals_erf_in_map` + * :c:data:`mo_two_e_integrals_in_map` + * :c:data:`n_states` + * :c:data:`one_e_dm_average_mo_for_dft` + * :c:data:`one_e_dm_mo_for_dft` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`effective_one_e_potential` + * :c:data:`shifting_constant` + * :c:data:`trace_v_xc` + + +.. c:var:: short_range_hartree_operator + + + File : :file:`dft_utils_one_e/sr_coulomb.irp.f` + + .. code:: fortran + + double precision, allocatable :: short_range_hartree_operator (mo_num,mo_num,N_states) + double precision, allocatable :: short_range_hartree (N_states) + + + short_range_Hartree_operator(i,j) = :math:`\int dr i(r)j(r) \int r' \rho(r') W_{ee}^{sr}` + + short_range_Hartree = :math:`1/2 \sum_{i,j} \rho_{ij} \mathtt{short_range_Hartree_operator}(i,j)` + + = :math:`1/2 \int dr \int r' \rho(r) \rho(r') W_{ee}^{sr}` + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_integrals_erf_map` + * :c:data:`mo_integrals_map` + * :c:data:`mo_num` + * :c:data:`mo_two_e_integrals_erf_in_map` + * :c:data:`mo_two_e_integrals_in_map` + * :c:data:`n_states` + * :c:data:`one_e_dm_average_mo_for_dft` + * :c:data:`one_e_dm_mo_for_dft` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`effective_one_e_potential` + * :c:data:`shifting_constant` + * :c:data:`trace_v_xc` + + +.. c:var:: trace_v_h + + + File : :file:`dft_utils_one_e/pot_general.irp.f` + + .. code:: fortran + + double precision, allocatable :: trace_v_xc (N_states) + double precision, allocatable :: trace_v_h (N_states) + double precision, allocatable :: trace_v_hxc (N_states) + + + Trace_v_xc = \sum_{i,j} (rho_{ij}_\alpha v^{xc}_{ij}^\alpha + rho_{ij}_\beta v^{xc}_{ij}^\beta) + Trace_v_Hxc = \sum_{i,j} v^{H}_{ij} (rho_{ij}_\alpha + rho_{ij}_\beta) + Trace_v_Hxc = \sum_{i,j} rho_{ij} v^{Hxc}_{ij} + + 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` + * :c:data:`potential_x_alpha_mo` + * :c:data:`short_range_hartree_operator` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`shifting_constant` + + +.. c:var:: trace_v_hxc + + + File : :file:`dft_utils_one_e/pot_general.irp.f` + + .. code:: fortran + + double precision, allocatable :: trace_v_xc (N_states) + double precision, allocatable :: trace_v_h (N_states) + double precision, allocatable :: trace_v_hxc (N_states) + + + Trace_v_xc = \sum_{i,j} (rho_{ij}_\alpha v^{xc}_{ij}^\alpha + rho_{ij}_\beta v^{xc}_{ij}^\beta) + Trace_v_Hxc = \sum_{i,j} v^{H}_{ij} (rho_{ij}_\alpha + rho_{ij}_\beta) + Trace_v_Hxc = \sum_{i,j} rho_{ij} v^{Hxc}_{ij} + + 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` + * :c:data:`potential_x_alpha_mo` + * :c:data:`short_range_hartree_operator` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`shifting_constant` + + +.. c:var:: trace_v_xc + + + File : :file:`dft_utils_one_e/pot_general.irp.f` + + .. code:: fortran + + double precision, allocatable :: trace_v_xc (N_states) + double precision, allocatable :: trace_v_h (N_states) + double precision, allocatable :: trace_v_hxc (N_states) + + + Trace_v_xc = \sum_{i,j} (rho_{ij}_\alpha v^{xc}_{ij}^\alpha + rho_{ij}_\beta v^{xc}_{ij}^\beta) + Trace_v_Hxc = \sum_{i,j} v^{H}_{ij} (rho_{ij}_\alpha + rho_{ij}_\beta) + Trace_v_Hxc = \sum_{i,j} rho_{ij} v^{Hxc}_{ij} + + 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` + * :c:data:`potential_x_alpha_mo` + * :c:data:`short_range_hartree_operator` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`shifting_constant` + + + +Subroutines / functions +----------------------- + +.. c:function:: berf: + + + File : :file:`dft_utils_one_e/exc_sr_lda.irp.f` + + .. code:: fortran + + function berf(a) + + + + +.. c:function:: dberfda: + + + File : :file:`dft_utils_one_e/exc_sr_lda.irp.f` + + .. code:: fortran + + function dberfda(a) + + + + +.. c:function:: dpol: + + + File : :file:`dft_utils_one_e/exc_sr_lda.irp.f` + + .. code:: fortran + + double precision function dpol(rs) + + + + +.. c:function:: dpold: + + + File : :file:`dft_utils_one_e/exc_sr_lda.irp.f` + + .. code:: fortran + + double precision function dpold(rs) + + + + +.. c:function:: dpoldd: + + + File : :file:`dft_utils_one_e/exc_sr_lda.irp.f` + + .. code:: fortran + + double precision function dpoldd(rs) + + + + +.. c:function:: ec_lda: + + + File : :file:`dft_utils_one_e/exc_sr_lda.irp.f` + + .. code:: fortran + + subroutine ec_lda(rho_a,rho_b,ec,vc_a,vc_b) + + + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`ec_pbe_only` + * :c:func:`ec_pbe_sr` + * :c:data:`energy_x_lda` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`ecpw` + + +.. c:function:: ec_lda_sr: + + + File : :file:`dft_utils_one_e/exc_sr_lda.irp.f` + + .. code:: fortran + + subroutine ec_lda_sr(mu,rho_a,rho_b,ec,vc_a,vc_b) + + + + Called by: + + .. hlist:: + :columns: 3 + + * :c:data:`aos_sr_vc_alpha_lda_w` + * :c:data:`aos_vc_alpha_lda_w` + * :c:func:`ec_pbe_only` + * :c:func:`ec_pbe_sr` + * :c:data:`energy_sr_x_lda` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`ecorrlr` + * :c:func:`ecpw` + * :c:func:`vcorrlr` + + +.. c:function:: ec_only_lda_sr: + + + File : :file:`dft_utils_one_e/exc_sr_lda.irp.f` + + .. code:: fortran + + subroutine ec_only_lda_sr(mu,rho_a,rho_b,ec) + + + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`ecorrlr` + * :c:func:`ecpw` + + +.. c:function:: ec_pbe_only: + + + File : :file:`dft_utils_one_e/exc_sr_pbe.irp.f` + + .. code:: fortran + + subroutine ec_pbe_only(mu,rhoc,rhoo,sigmacc,sigmaco,sigmaoo,ec) + + + Short-range PBE correlation energy functional for erf interaction + + input : ========== + + mu = range separated parameter + + rhoc, rhoo = total density and spin density + + sigmacc = square of the gradient of the total density + + sigmaco = square of the gradient of the spin density + + sigmaoo = scalar product between the gradient of the total density and the one of the spin density + + output: ========== + + ec = correlation energy + + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`ec_lda` + * :c:func:`ec_lda_sr` + + +.. c:function:: ec_pbe_sr: + + + File : :file:`dft_utils_one_e/exc_sr_pbe.irp.f` + + .. code:: fortran + + subroutine ec_pbe_sr(mu,rhoc,rhoo,sigmacc,sigmaco,sigmaoo,ec,vrhoc,vrhoo,vsigmacc,vsigmaco,vsigmaoo) + + + Short-range PBE correlation energy functional for erf interaction + + input : ========== + + mu = range separated parameter + + rhoc, rhoo = total density and spin density + + sigmacc = square of the gradient of the total density + + sigmaco = square of the gradient of the spin density + + sigmaoo = scalar product between the gradient of the total density and the one of the spin density + + output: ========== + + ec = correlation energy + + all variables v** are energy derivatives with respect to components of the density + + vrhoc = derivative with respect to the total density + + vrhoo = derivative with respect to spin density + + vsigmacc = derivative with respect to the square of the gradient of the total density + + vsigmaco = derivative with respect to scalar product between the gradients of total and spin densities + + vsigmaoo = derivative with respect to the square of the gradient of the psin density + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`gga_sr_type_functionals` + * :c:func:`gga_type_functionals` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`ec_lda` + * :c:func:`ec_lda_sr` + + +.. c:function:: ecorrlr: + + + File : :file:`dft_utils_one_e/exc_sr_lda.irp.f` + + .. code:: fortran + + subroutine ecorrlr(rs,z,mu,eclr) + + + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`ec_lda_sr` + * :c:func:`ec_only_lda_sr` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`ecpw` + + +.. c:function:: ecpw: + + + File : :file:`dft_utils_one_e/exc_sr_lda.irp.f` + + .. code:: fortran + + subroutine ecPW(x,y,ec,ecd,ecz,ecdd,eczd) + + + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`ec_lda` + * :c:func:`ec_lda_sr` + * :c:func:`ec_only_lda_sr` + * :c:func:`ecorrlr` + * :c:func:`vcorrlr` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`gpw` + + +.. c:function:: ex_lda: + + + File : :file:`dft_utils_one_e/exc_sr_lda.irp.f` + + .. code:: fortran + + subroutine ex_lda(rho_a,rho_b,ex,vx_a,vx_b) + + + + Called by: + + .. hlist:: + :columns: 3 + + * :c:data:`energy_x_lda` + + +.. c:function:: ex_lda_sr: + + + File : :file:`dft_utils_one_e/exc_sr_lda.irp.f` + + .. code:: fortran + + subroutine ex_lda_sr(mu,rho_a,rho_b,ex,vx_a,vx_b) + + + + Called 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:func:`ex_pbe_sr` + * :c:func:`ex_pbe_sr_only` + + +.. c:function:: ex_pbe_sr: + + + File : :file:`dft_utils_one_e/exc_sr_pbe.irp.f` + + .. code:: fortran + + subroutine ex_pbe_sr(mu,rho_a,rho_b,grd_rho_a_2,grd_rho_b_2,grd_rho_a_b,ex,vx_rho_a,vx_rho_b,vx_grd_rho_a_2,vx_grd_rho_b_2,vx_grd_rho_a_b) + + + mu = range separation parameter + rho_a = density alpha + rho_b = density beta + grd_rho_a_2 = (gradient rho_a)^2 + grd_rho_b_2 = (gradient rho_b)^2 + grd_rho_a_b = (gradient rho_a).(gradient rho_b) + ex = exchange energy density at the density and corresponding gradients of the density + vx_rho_a = d ex / d rho_a + vx_rho_b = d ex / d rho_b + vx_grd_rho_a_2 = d ex / d grd_rho_a_2 + vx_grd_rho_b_2 = d ex / d grd_rho_b_2 + vx_grd_rho_a_b = d ex / d grd_rho_a_b + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`gga_sr_type_functionals` + * :c:func:`gga_type_functionals` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`ex_lda_sr` + + +.. c:function:: ex_pbe_sr_only: + + + File : :file:`dft_utils_one_e/exc_sr_pbe.irp.f` + + .. code:: fortran + + subroutine ex_pbe_sr_only(mu,rho_a,rho_b,grd_rho_a_2,grd_rho_b_2,grd_rho_a_b,ex) + + + rho_a = density alpha + rho_b = density beta + grd_rho_a_2 = (gradient rho_a)^2 + grd_rho_b_2 = (gradient rho_b)^2 + grd_rho_a_b = (gradient rho_a).(gradient rho_b) + ex = exchange energy density at point r + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`ex_lda_sr` + + +.. c:function:: g0d: + + + File : :file:`dft_utils_one_e/exc_sr_lda.irp.f` + + .. code:: fortran + + double precision function g0d(rs) + + + + +.. c:function:: g0dd: + + + File : :file:`dft_utils_one_e/exc_sr_lda.irp.f` + + .. code:: fortran + + double precision function g0dd(rs) + + + + +.. c:function:: g0f: + + + File : :file:`dft_utils_one_e/exc_sr_lda.irp.f` + + .. code:: fortran + + double precision function g0f(x) + + + + +.. c:function:: gpw: + + + File : :file:`dft_utils_one_e/exc_sr_lda.irp.f` + + .. code:: fortran + + subroutine GPW(x,Ac,alfa1,beta1,beta2,beta3,beta4,G,Gd,Gdd) + + + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`ecpw` + + +.. c:function:: grad_rho_ab_to_grad_rho_oc: + + + File : :file:`dft_utils_one_e/rho_ab_to_rho_tot.irp.f` + + .. code:: fortran + + subroutine grad_rho_ab_to_grad_rho_oc(grad_rho_a_2,grad_rho_b_2,grad_rho_a_b,grad_rho_o_2,grad_rho_c_2,grad_rho_o_c) + + + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`gga_sr_type_functionals` + * :c:func:`gga_type_functionals` + + +.. c:function:: qrpa: + + + File : :file:`dft_utils_one_e/exc_sr_lda.irp.f` + + .. code:: fortran + + double precision function Qrpa(x) + + + + +.. c:function:: qrpad: + + + File : :file:`dft_utils_one_e/exc_sr_lda.irp.f` + + .. code:: fortran + + double precision function Qrpad(x) + + + + +.. c:function:: qrpadd: + + + File : :file:`dft_utils_one_e/exc_sr_lda.irp.f` + + .. code:: fortran + + double precision function Qrpadd(x) + + + + +.. c:function:: rho_ab_to_rho_oc: + + + File : :file:`dft_utils_one_e/rho_ab_to_rho_tot.irp.f` + + .. code:: fortran + + subroutine rho_ab_to_rho_oc(rho_a,rho_b,rho_o,rho_c) + + + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`gga_sr_type_functionals` + * :c:func:`gga_type_functionals` + + +.. c:function:: rho_oc_to_rho_ab: + + + File : :file:`dft_utils_one_e/rho_ab_to_rho_tot.irp.f` + + .. code:: fortran + + subroutine rho_oc_to_rho_ab(rho_o,rho_c,rho_a,rho_b) + + + + +.. c:function:: v_grad_rho_oc_to_v_grad_rho_ab: + + + File : :file:`dft_utils_one_e/rho_ab_to_rho_tot.irp.f` + + .. code:: fortran + + subroutine v_grad_rho_oc_to_v_grad_rho_ab(v_grad_rho_o_2,v_grad_rho_c_2,v_grad_rho_o_c,v_grad_rho_a_2,v_grad_rho_b_2,v_grad_rho_a_b) + + + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`gga_sr_type_functionals` + * :c:func:`gga_type_functionals` + + +.. c:function:: v_rho_ab_to_v_rho_oc: + + + File : :file:`dft_utils_one_e/rho_ab_to_rho_tot.irp.f` + + .. code:: fortran + + subroutine v_rho_ab_to_v_rho_oc(v_rho_a,v_rho_b,v_rho_o,v_rho_c) + + + + +.. c:function:: v_rho_oc_to_v_rho_ab: + + + File : :file:`dft_utils_one_e/rho_ab_to_rho_tot.irp.f` + + .. code:: fortran + + subroutine v_rho_oc_to_v_rho_ab(v_rho_o,v_rho_c,v_rho_a,v_rho_b) + + + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`gga_sr_type_functionals` + * :c:func:`gga_type_functionals` + + +.. c:function:: vcorrlr: + + + File : :file:`dft_utils_one_e/exc_sr_lda.irp.f` + + .. code:: fortran + + subroutine vcorrlr(rs,z,mu,vclrup,vclrdown,vclrupd,vclrdownd) + + + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`ec_lda_sr` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`ecpw` + diff --git a/doc/_sources/modules/dressing.rst.txt b/doc/_sources/modules/dressing.rst.txt new file mode 100644 index 00000000..17695be4 --- /dev/null +++ b/doc/_sources/modules/dressing.rst.txt @@ -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 diff --git a/doc/_sources/modules/electrons.rst.txt b/doc/_sources/modules/electrons.rst.txt new file mode 100644 index 00000000..17fc993f --- /dev/null +++ b/doc/_sources/modules/electrons.rst.txt @@ -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` + diff --git a/doc/_sources/modules/ezfio_files.rst.txt b/doc/_sources/modules/ezfio_files.rst.txt new file mode 100644 index 00000000..18cae0b6 --- /dev/null +++ b/doc/_sources/modules/ezfio_files.rst.txt @@ -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` + diff --git a/doc/_sources/modules/fci.rst.txt b/doc/_sources/modules/fci.rst.txt new file mode 100644 index 00000000..2631511b --- /dev/null +++ b/doc/_sources/modules/fci.rst.txt @@ -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` + diff --git a/doc/_sources/modules/generators_cas.rst.txt b/doc/_sources/modules/generators_cas.rst.txt new file mode 100644 index 00000000..e4452aca --- /dev/null +++ b/doc/_sources/modules/generators_cas.rst.txt @@ -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). + + + diff --git a/doc/_sources/modules/generators_full.rst.txt b/doc/_sources/modules/generators_full.rst.txt new file mode 100644 index 00000000..3af33dde --- /dev/null +++ b/doc/_sources/modules/generators_full.rst.txt @@ -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` + diff --git a/doc/_sources/modules/hartree_fock.rst.txt b/doc/_sources/modules/hartree_fock.rst.txt new file mode 100644 index 00000000..9f818166 --- /dev/null +++ b/doc/_sources/modules/hartree_fock.rst.txt @@ -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` + diff --git a/doc/_sources/modules/iterations.rst.txt b/doc/_sources/modules/iterations.rst.txt new file mode 100644 index 00000000..d8358b27 --- /dev/null +++ b/doc/_sources/modules/iterations.rst.txt @@ -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` + diff --git a/doc/_sources/modules/kohn_sham.rst.txt b/doc/_sources/modules/kohn_sham.rst.txt new file mode 100644 index 00000000..955a25b7 --- /dev/null +++ b/doc/_sources/modules/kohn_sham.rst.txt @@ -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 +----------------------- diff --git a/doc/_sources/modules/kohn_sham_rs.rst.txt b/doc/_sources/modules/kohn_sham_rs.rst.txt new file mode 100644 index 00000000..02322304 --- /dev/null +++ b/doc/_sources/modules/kohn_sham_rs.rst.txt @@ -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` + diff --git a/doc/_sources/modules/mo_basis.rst.txt b/doc/_sources/modules/mo_basis.rst.txt new file mode 100644 index 00000000..2038ca3a --- /dev/null +++ b/doc/_sources/modules/mo_basis.rst.txt @@ -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` + diff --git a/doc/_sources/modules/mo_guess.rst.txt b/doc/_sources/modules/mo_guess.rst.txt new file mode 100644 index 00000000..25c9acde --- /dev/null +++ b/doc/_sources/modules/mo_guess.rst.txt @@ -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` + diff --git a/doc/_sources/modules/mo_one_e_ints.rst.txt b/doc/_sources/modules/mo_one_e_ints.rst.txt new file mode 100644 index 00000000..c882bb6f --- /dev/null +++ b/doc/_sources/modules/mo_one_e_ints.rst.txt @@ -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` + diff --git a/doc/_sources/modules/mo_two_e_erf_ints.rst.txt b/doc/_sources/modules/mo_two_e_erf_ints.rst.txt new file mode 100644 index 00000000..7e85039b --- /dev/null +++ b/doc/_sources/modules/mo_two_e_erf_ints.rst.txt @@ -0,0 +1,1000 @@ +.. _module_mo_two_e_erf_ints: + +.. program:: mo_two_e_erf_ints + +.. default-role:: option + +====================== +mo_two_e_erf_ints +====================== + +Here, all two-electron integrals (:math:`erf({\mu}_{erf} * 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 range separation parameter :math:`{\mu}_{erf}` is the variable :option:`ao_two_e_erf_ints mu_erf`. + +To fetch an |MO| integral, use +`get_mo_two_e_integral_erf(i,j,k,l,mo_integrals_map_erf)` + +The conventions are: + +* For |MO| integrals : = <12|12> + +Be aware that it might not be the same conventions for |MO| and |AO| integrals. + + + + + +EZFIO parameters +---------------- + +.. option:: io_mo_two_e_integrals_erf + + Read/Write MO integrals with the long range interaction from/to disk [ Write | Read | None ] + + Default: None + + +Providers +--------- + +.. c:var:: core_energy_erf + + + File : :file:`mo_two_e_erf_ints/core_quantities_erf.irp.f` + + .. code:: fortran + + double precision :: core_energy_erf + + + energy from the core : contains all core-core contributionswith the erf interaction + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`list_inact` + * :c:data:`mo_one_e_integrals` + * :c:data:`mo_two_e_int_erf_jj` + * :c:data:`n_core_orb` + * :c:data:`nuclear_repulsion` + + + +.. c:var:: core_fock_operator_erf + + + File : :file:`mo_two_e_erf_ints/core_quantities_erf.irp.f` + + .. code:: fortran + + double precision, allocatable :: core_fock_operator_erf (mo_num,mo_num) + + + this is the contribution to the Fock operator from the core electrons with the erf interaction + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`list_inact` + * :c:data:`mo_integrals_erf_cache` + * :c:data:`mo_integrals_erf_cache_min` + * :c:data:`mo_integrals_erf_map` + * :c:data:`mo_num` + * :c:data:`mo_two_e_integrals_erf_in_map` + * :c:data:`n_core_orb` + + + +.. c:function:: insert_into_mo_integrals_erf_map: + + + File : :file:`mo_two_e_erf_ints/map_integrals_erf.irp.f` + + .. code:: fortran + + subroutine insert_into_mo_integrals_erf_map(n_integrals, & + buffer_i, buffer_values, thr) + + + Create new entry into |MO| map, or accumulate in an existing entry + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_integrals_erf_map` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`add_integrals_to_map_erf` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`map_update` + + +.. c:var:: int_erf_3_index + + + File : :file:`mo_two_e_erf_ints/ints_erf_3_index.irp.f` + + .. code:: fortran + + double precision, allocatable :: int_erf_3_index (mo_num,mo_num,mo_num) + double precision, allocatable :: int_erf_3_index_exc (mo_num,mo_num,mo_num) + + + int_erf_3_index(i,j) = = (ii|jj) with the erf interaction + + int_erf_3_index_exc(i,j) = = (ij|ij) with the erf interaction + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_integrals_erf_cache` + * :c:data:`mo_integrals_erf_cache_min` + * :c:data:`mo_integrals_erf_map` + * :c:data:`mo_num` + * :c:data:`mo_two_e_integrals_erf_in_map` + + + +.. c:var:: int_erf_3_index_exc + + + File : :file:`mo_two_e_erf_ints/ints_erf_3_index.irp.f` + + .. code:: fortran + + double precision, allocatable :: int_erf_3_index (mo_num,mo_num,mo_num) + double precision, allocatable :: int_erf_3_index_exc (mo_num,mo_num,mo_num) + + + int_erf_3_index(i,j) = = (ii|jj) with the erf interaction + + int_erf_3_index_exc(i,j) = = (ij|ij) with the erf interaction + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_integrals_erf_cache` + * :c:data:`mo_integrals_erf_cache_min` + * :c:data:`mo_integrals_erf_map` + * :c:data:`mo_num` + * :c:data:`mo_two_e_integrals_erf_in_map` + + + +.. c:var:: mo_integrals_erf_cache + + + File : :file:`mo_two_e_erf_ints/map_integrals_erf.irp.f` + + .. code:: fortran + + double precision, allocatable :: mo_integrals_erf_cache (0:64*64*64*64) + + + Cache of |MO| integrals for fast access + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_integrals_erf_cache_min` + * :c:data:`mo_integrals_erf_map` + * :c:data:`mo_two_e_integrals_erf_in_map` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`core_fock_operator_erf` + * :c:data:`int_erf_3_index` + * :c:data:`mo_two_e_int_erf_jj` + + +.. c:var:: mo_integrals_erf_cache_max + + + File : :file:`mo_two_e_erf_ints/map_integrals_erf.irp.f` + + .. code:: fortran + + integer :: mo_integrals_erf_cache_min + integer :: mo_integrals_erf_cache_max + + + Min and max values of the MOs for which the integrals are in the cache + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`elec_alpha_num` + * :c:data:`mo_num` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`core_fock_operator_erf` + * :c:data:`int_erf_3_index` + * :c:data:`mo_integrals_erf_cache` + * :c:data:`mo_two_e_int_erf_jj` + + +.. c:var:: mo_integrals_erf_cache_min + + + File : :file:`mo_two_e_erf_ints/map_integrals_erf.irp.f` + + .. code:: fortran + + integer :: mo_integrals_erf_cache_min + integer :: mo_integrals_erf_cache_max + + + Min and max values of the MOs for which the integrals are in the cache + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`elec_alpha_num` + * :c:data:`mo_num` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`core_fock_operator_erf` + * :c:data:`int_erf_3_index` + * :c:data:`mo_integrals_erf_cache` + * :c:data:`mo_two_e_int_erf_jj` + + +.. c:var:: mo_integrals_erf_map + + + File : :file:`mo_two_e_erf_ints/map_integrals_erf.irp.f` + + .. code:: fortran + + type(map_type) :: mo_integrals_erf_map + + + |MO| integrals + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_num` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`core_fock_operator_erf` + * :c:data:`int_erf_3_index` + * :c:data:`mo_integrals_erf_cache` + * :c:data:`mo_two_e_int_erf_jj` + * :c:data:`mo_two_e_integrals_erf_in_map` + + +.. c:var:: mo_two_e_int_erf_jj + + + File : :file:`mo_two_e_erf_ints/mo_bi_integrals_erf.irp.f` + + .. code:: fortran + + double precision, allocatable :: mo_two_e_int_erf_jj (mo_num,mo_num) + double precision, allocatable :: mo_two_e_int_erf_jj_exchange (mo_num,mo_num) + double precision, allocatable :: mo_two_e_int_erf_jj_anti (mo_num,mo_num) + + + mo_two_e_integrals_jj(i,j) = J_ij + mo_two_e_integrals_jj_exchange(i,j) = K_ij + mo_two_e_integrals_jj_anti(i,j) = J_ij - K_ij + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_integrals_erf_cache` + * :c:data:`mo_integrals_erf_cache_min` + * :c:data:`mo_integrals_erf_map` + * :c:data:`mo_num` + * :c:data:`mo_two_e_integrals_erf_in_map` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`core_energy_erf` + + +.. c:var:: mo_two_e_int_erf_jj_anti + + + File : :file:`mo_two_e_erf_ints/mo_bi_integrals_erf.irp.f` + + .. code:: fortran + + double precision, allocatable :: mo_two_e_int_erf_jj (mo_num,mo_num) + double precision, allocatable :: mo_two_e_int_erf_jj_exchange (mo_num,mo_num) + double precision, allocatable :: mo_two_e_int_erf_jj_anti (mo_num,mo_num) + + + mo_two_e_integrals_jj(i,j) = J_ij + mo_two_e_integrals_jj_exchange(i,j) = K_ij + mo_two_e_integrals_jj_anti(i,j) = J_ij - K_ij + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_integrals_erf_cache` + * :c:data:`mo_integrals_erf_cache_min` + * :c:data:`mo_integrals_erf_map` + * :c:data:`mo_num` + * :c:data:`mo_two_e_integrals_erf_in_map` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`core_energy_erf` + + +.. c:var:: mo_two_e_int_erf_jj_anti_from_ao + + + File : :file:`mo_two_e_erf_ints/mo_bi_integrals_erf.irp.f` + + .. code:: fortran + + double precision, allocatable :: mo_two_e_int_erf_jj_from_ao (mo_num,mo_num) + double precision, allocatable :: mo_two_e_int_erf_jj_exchange_from_ao (mo_num,mo_num) + double precision, allocatable :: mo_two_e_int_erf_jj_anti_from_ao (mo_num,mo_num) + + + mo_two_e_integral_jj_from_ao(i,j) = J_ij + mo_two_e_integrals_jj_exchange_from_ao(i,j) = J_ij + mo_two_e_integrals_jj_anti_from_ao(i,j) = J_ij - K_ij + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_integrals_erf_map` + * :c:data:`ao_integrals_threshold` + * :c:data:`ao_num` + * :c:data:`ao_overlap_abs` + * :c:data:`ao_two_e_integral_erf_schwartz` + * :c:data:`ao_two_e_integrals_erf_in_map` + * :c:data:`do_direct_integrals` + * :c:data:`mo_coef` + * :c:data:`mo_coef_transp` + * :c:data:`mo_num` + + + +.. c:var:: mo_two_e_int_erf_jj_exchange + + + File : :file:`mo_two_e_erf_ints/mo_bi_integrals_erf.irp.f` + + .. code:: fortran + + double precision, allocatable :: mo_two_e_int_erf_jj (mo_num,mo_num) + double precision, allocatable :: mo_two_e_int_erf_jj_exchange (mo_num,mo_num) + double precision, allocatable :: mo_two_e_int_erf_jj_anti (mo_num,mo_num) + + + mo_two_e_integrals_jj(i,j) = J_ij + mo_two_e_integrals_jj_exchange(i,j) = K_ij + mo_two_e_integrals_jj_anti(i,j) = J_ij - K_ij + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_integrals_erf_cache` + * :c:data:`mo_integrals_erf_cache_min` + * :c:data:`mo_integrals_erf_map` + * :c:data:`mo_num` + * :c:data:`mo_two_e_integrals_erf_in_map` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`core_energy_erf` + + +.. c:var:: mo_two_e_int_erf_jj_exchange_from_ao + + + File : :file:`mo_two_e_erf_ints/mo_bi_integrals_erf.irp.f` + + .. code:: fortran + + double precision, allocatable :: mo_two_e_int_erf_jj_from_ao (mo_num,mo_num) + double precision, allocatable :: mo_two_e_int_erf_jj_exchange_from_ao (mo_num,mo_num) + double precision, allocatable :: mo_two_e_int_erf_jj_anti_from_ao (mo_num,mo_num) + + + mo_two_e_integral_jj_from_ao(i,j) = J_ij + mo_two_e_integrals_jj_exchange_from_ao(i,j) = J_ij + mo_two_e_integrals_jj_anti_from_ao(i,j) = J_ij - K_ij + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_integrals_erf_map` + * :c:data:`ao_integrals_threshold` + * :c:data:`ao_num` + * :c:data:`ao_overlap_abs` + * :c:data:`ao_two_e_integral_erf_schwartz` + * :c:data:`ao_two_e_integrals_erf_in_map` + * :c:data:`do_direct_integrals` + * :c:data:`mo_coef` + * :c:data:`mo_coef_transp` + * :c:data:`mo_num` + + + +.. c:var:: mo_two_e_int_erf_jj_from_ao + + + File : :file:`mo_two_e_erf_ints/mo_bi_integrals_erf.irp.f` + + .. code:: fortran + + double precision, allocatable :: mo_two_e_int_erf_jj_from_ao (mo_num,mo_num) + double precision, allocatable :: mo_two_e_int_erf_jj_exchange_from_ao (mo_num,mo_num) + double precision, allocatable :: mo_two_e_int_erf_jj_anti_from_ao (mo_num,mo_num) + + + mo_two_e_integral_jj_from_ao(i,j) = J_ij + mo_two_e_integrals_jj_exchange_from_ao(i,j) = J_ij + mo_two_e_integrals_jj_anti_from_ao(i,j) = J_ij - K_ij + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_integrals_erf_map` + * :c:data:`ao_integrals_threshold` + * :c:data:`ao_num` + * :c:data:`ao_overlap_abs` + * :c:data:`ao_two_e_integral_erf_schwartz` + * :c:data:`ao_two_e_integrals_erf_in_map` + * :c:data:`do_direct_integrals` + * :c:data:`mo_coef` + * :c:data:`mo_coef_transp` + * :c:data:`mo_num` + + + +.. c:var:: mo_two_e_integrals_erf_in_map + + + File : :file:`mo_two_e_erf_ints/mo_bi_integrals_erf.irp.f` + + .. code:: fortran + + logical :: mo_two_e_integrals_erf_in_map + + + If True, the map of MO two-electron integrals is provided + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`ao_two_e_integrals_erf_in_map` + * :c:data:`ao_two_e_integrals_in_map` + * :c:data:`ezfio_filename` + * :c:data:`full_ijkl_bitmask_4` + * :c:data:`mo_coef` + * :c:data:`mo_coef_transp` + * :c:data:`mo_integrals_erf_map` + * :c:data:`mo_integrals_threshold` + * :c:data:`mo_num` + * :c:data:`n_int` + * :c:data:`read_mo_two_e_integrals_erf` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`core_fock_operator_erf` + * :c:data:`int_erf_3_index` + * :c:data:`mo_integrals_erf_cache` + * :c:data:`mo_two_e_int_erf_jj` + + + +Subroutines / functions +----------------------- + +.. c:function:: add_integrals_to_map_erf: + + + File : :file:`mo_two_e_erf_ints/mo_bi_integrals_erf.irp.f` + + .. code:: fortran + + subroutine add_integrals_to_map_erf(mask_ijkl) + + + Adds integrals to tha MO map according to some bitmask + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_coef` + * :c:data:`mo_integrals_threshold` + * :c:data:`mo_coef_transp` + * :c:data:`ao_num` + * :c:data:`n_int` + * :c:data:`mo_num` + * :c:data:`ao_two_e_integrals_in_map` + * :c:data:`mo_integrals_erf_map` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_two_e_integrals_erf_in_map` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`bitstring_to_list` + * :c:func:`bitstring_to_str` + * :c:func:`cpu_time` + * :c:func:`get_ao_two_e_integrals_erf` + * :c:func:`insert_into_mo_integrals_erf_map` + * :c:func:`map_merge` + * :c:func:`mo_two_e_integrals_index` + * :c:func:`wall_time` + + +.. c:function:: clear_mo_erf_map: + + + File : :file:`mo_two_e_erf_ints/mo_bi_integrals_erf.irp.f` + + .. code:: fortran + + subroutine clear_mo_erf_map + + + Frees the memory of the MO map + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_integrals_erf_map` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`map_deinit` + + +.. c:function:: get_mo_erf_map_size: + + + File : :file:`mo_two_e_erf_ints/map_integrals_erf.irp.f` + + .. code:: fortran + + integer*8 function get_mo_erf_map_size() + + + Returns the number of elements in the |MO| map + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_integrals_erf_map` + + +.. c:function:: get_mo_two_e_integral_erf: + + + File : :file:`mo_two_e_erf_ints/map_integrals_erf.irp.f` + + .. code:: fortran + + double precision function get_mo_two_e_integral_erf(i,j,k,l,map) + + + Returns one integral $\langle ij|kl \rangle$ in the |MO| basis + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_integrals_erf_cache` + * :c:data:`mo_integrals_erf_cache_min` + * :c:data:`mo_two_e_integrals_erf_in_map` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`map_get` + * :c:func:`two_e_integrals_index` + + +.. c:function:: get_mo_two_e_integrals_erf: + + + File : :file:`mo_two_e_erf_ints/map_integrals_erf.irp.f` + + .. code:: fortran + + subroutine get_mo_two_e_integrals_erf(j,k,l,sze,out_val,map) + + + Returns multiple integrals $\langle ij|kl \rangle$ in the |MO| basis, all + i for j,k,l fixed. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_two_e_integrals_erf_in_map` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`map_get_many` + * :c:func:`two_e_integrals_index` + + +.. c:function:: get_mo_two_e_integrals_erf_coulomb_ii: + + + File : :file:`mo_two_e_erf_ints/map_integrals_erf.irp.f` + + .. code:: fortran + + subroutine get_mo_two_e_integrals_erf_coulomb_ii(k,l,sze,out_val,map) + + + Returns multiple integrals $\langle ki|li \rangle$ + + k(1)i(2) 1/r12 l(1)i(2) :: out_val(i1) + for k,l fixed. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_two_e_integrals_erf_in_map` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`map_get_many` + * :c:func:`two_e_integrals_index` + + +.. c:function:: get_mo_two_e_integrals_erf_exch_ii: + + + File : :file:`mo_two_e_erf_ints/map_integrals_erf.irp.f` + + .. code:: fortran + + subroutine get_mo_two_e_integrals_erf_exch_ii(k,l,sze,out_val,map) + + + Returns multiple integrals $\langle ki|il \rangle$ + + $\int k(1)i(2) \frac{1}{r_{12}} i(1)l(2)$ :: out_val(i1) + for k,l fixed. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_two_e_integrals_erf_in_map` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`map_get_many` + * :c:func:`two_e_integrals_index` + + +.. c:function:: get_mo_two_e_integrals_erf_i1j1: + + + File : :file:`mo_two_e_erf_ints/map_integrals_erf.irp.f` + + .. code:: fortran + + subroutine get_mo_two_e_integrals_erf_i1j1(k,l,sze,out_array,map) + + + Returns multiple integrals $\langle ik|jl \rangle$ in the |MO| basis, all + $\int i(1)j(1) \frac{\erf(\mu * r_{12})}{r_{12}} k(2)l(2)$ + i, j for k,l fixed. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_two_e_integrals_erf_in_map` + * :c:data:`mo_integrals_erf_map` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`i2radix_sort` + * :c:func:`i8radix_sort` + * :c:func:`iradix_sort` + * :c:func:`map_get_many` + * :c:func:`two_e_integrals_index` + + +.. c:function:: get_mo_two_e_integrals_erf_ij: + + + File : :file:`mo_two_e_erf_ints/map_integrals_erf.irp.f` + + .. code:: fortran + + subroutine get_mo_two_e_integrals_erf_ij(k,l,sze,out_array,map) + + + Returns multiple integrals $\langle ij|kl \rangle$ in the |MO| basis, all + $\int i(1)j(2) \frac{1}{r_{12}} k(1)l(2)$ + i, j for k,l fixed. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_two_e_integrals_erf_in_map` + * :c:data:`mo_integrals_erf_map` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`i2radix_sort` + * :c:func:`i8radix_sort` + * :c:func:`iradix_sort` + * :c:func:`map_get_many` + * :c:func:`two_e_integrals_index` + + +.. c:function:: load_mo_integrals_erf: + + + File : :file:`mo_two_e_erf_ints/map_integrals_erf.irp.f` + + .. code:: fortran + + integer function load_mo_integrals_erf(filename) + + + Read from disk the |MO| erf integrals + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_integrals_erf_map` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`cache_map_reallocate` + * :c:func:`map_deinit` + * :c:func:`map_sort` + + +.. c:function:: mo_two_e_integral_erf: + + + File : :file:`mo_two_e_erf_ints/map_integrals_erf.irp.f` + + .. code:: fortran + + double precision function mo_two_e_integral_erf(i,j,k,l) + + + Returns one integral $\langle ij|kl \rangle$ in the |MO| basis + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_integrals_erf_cache` + * :c:data:`mo_integrals_erf_map` + * :c:data:`mo_two_e_integrals_erf_in_map` + + +.. c:function:: mo_two_e_integrals_erf_index: + + + File : :file:`mo_two_e_erf_ints/mo_bi_integrals_erf.irp.f` + + .. code:: fortran + + subroutine mo_two_e_integrals_erf_index(i,j,k,l,i1) + + + Computes an unique index for i,j,k,l integrals + + +.. c:function:: provide_all_mo_integrals_erf: + + + File : :file:`mo_two_e_erf_ints/mo_bi_integrals_erf.irp.f` + + .. code:: fortran + + subroutine provide_all_mo_integrals_erf + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_two_e_integrals_erf_in_map` + * :c:data:`mo_two_e_int_erf_jj` + * :c:data:`mo_two_e_int_erf_jj` + * :c:data:`mo_integrals_erf_map` + * :c:data:`mo_two_e_int_erf_jj` + + +.. c:function:: save_erf_two_e_integrals_mo: + + + File : :file:`mo_two_e_erf_ints/routines_save_integrals_erf.irp.f` + + .. code:: fortran + + subroutine save_erf_two_e_integrals_mo + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_two_e_integrals_erf_in_map` + * :c:data:`ezfio_filename` + * :c:data:`mo_integrals_erf_map` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`routine` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`ezfio_set_mo_two_e_erf_ints_io_mo_two_e_integrals_erf` + * :c:func:`ezfio_set_work_empty` + * :c:func:`map_save_to_disk` + + +.. c:function:: save_erf_two_e_ints_mo_into_ints_mo: + + + File : :file:`mo_two_e_erf_ints/routines_save_integrals_erf.irp.f` + + .. code:: fortran + + subroutine save_erf_two_e_ints_mo_into_ints_mo + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_two_e_integrals_erf_in_map` + * :c:data:`ezfio_filename` + * :c:data:`mo_integrals_erf_map` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`ezfio_set_mo_two_e_ints_io_mo_two_e_integrals` + * :c:func:`ezfio_set_work_empty` + * :c:func:`map_save_to_disk` + diff --git a/doc/_sources/modules/mo_two_e_ints.rst.txt b/doc/_sources/modules/mo_two_e_ints.rst.txt new file mode 100644 index 00000000..bb860e59 --- /dev/null +++ b/doc/_sources/modules/mo_two_e_ints.rst.txt @@ -0,0 +1,1312 @@ +.. _module_mo_two_e_ints: + +.. program:: mo_two_e_ints + +.. default-role:: option + +================== +mo_two_e_ints +================== + +Here, all two-electron integrals (:math:`1/r_{12}`) are computed. +As they have 4 indices and many are zero, they are stored in a map, as defined +in :file:`Utils/map_module.f90`. + +To fetch an |AO| integral, use the +`get_ao_two_e_integral(i,j,k,l,ao_integrals_map)` function, and +to fetch an |MO| integral, use +`get_two_e_integral(i,j,k,l,mo_integrals_map)` or +`mo_two_e_integral(i,j,k,l)`. + +The conventions are: + +* For |AO| integrals : (ik|jl) = (11|22) +* For |MO| integrals : = <12|12> + + + + + + +EZFIO parameters +---------------- + +.. option:: io_mo_two_e_integrals + + Read/Write |MO| integrals from/to disk [ Write | Read | None ] + + Default: None + +.. option:: mo_integrals_threshold + + If | | < `mo_integrals_threshold` then is zero + + Default: 1.e-15 + +.. option:: no_vvvv_integrals + + If `True`, computes all integrals except for the integrals having 4 virtual indices + + Default: False + +.. option:: no_ivvv_integrals + + Can be switched on only if `no_vvvv_integrals` is `True`, then does not compute the integrals with 3 virtual indices and 1 belonging to the core inactive active orbitals + + Default: False + +.. option:: no_vvv_integrals + + Can be switched on only if `no_vvvv_integrals` is `True`, then does not compute the integrals with 3 virtual orbitals + + Default: False + + +Providers +--------- + +.. c:var:: big_array_coulomb_integrals + + + File : :file:`mo_two_e_ints/integrals_3_index.irp.f` + + .. code:: fortran + + double precision, allocatable :: big_array_coulomb_integrals (mo_num,mo_num,mo_num) + double precision, allocatable :: big_array_exchange_integrals (mo_num,mo_num,mo_num) + + + big_array_coulomb_integrals(i,j) = = (ii|jj) + + big_array_exchange_integrals(i,j) = = (ij|ij) + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_integrals_cache` + * :c:data:`mo_integrals_cache_min` + * :c:data:`mo_integrals_map` + * :c:data:`mo_num` + * :c:data:`mo_two_e_integrals_in_map` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`coef_hf_selector` + * :c:data:`h_matrix_all_dets` + * :c:data:`h_matrix_cas` + + +.. c:var:: big_array_exchange_integrals + + + File : :file:`mo_two_e_ints/integrals_3_index.irp.f` + + .. code:: fortran + + double precision, allocatable :: big_array_coulomb_integrals (mo_num,mo_num,mo_num) + double precision, allocatable :: big_array_exchange_integrals (mo_num,mo_num,mo_num) + + + big_array_coulomb_integrals(i,j) = = (ii|jj) + + big_array_exchange_integrals(i,j) = = (ij|ij) + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_integrals_cache` + * :c:data:`mo_integrals_cache_min` + * :c:data:`mo_integrals_map` + * :c:data:`mo_num` + * :c:data:`mo_two_e_integrals_in_map` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`coef_hf_selector` + * :c:data:`h_matrix_all_dets` + * :c:data:`h_matrix_cas` + + +.. c:var:: core_energy + + + File : :file:`mo_two_e_ints/core_quantities.irp.f` + + .. code:: fortran + + double precision :: core_energy + + + energy from the core : contains all core-core contributions + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`list_inact` + * :c:data:`mo_one_e_integrals` + * :c:data:`mo_two_e_integrals_jj` + * :c:data:`n_core_orb` + * :c:data:`nuclear_repulsion` + + + +.. c:var:: core_fock_operator + + + File : :file:`mo_two_e_ints/core_quantities.irp.f` + + .. code:: fortran + + double precision, allocatable :: core_fock_operator (mo_num,mo_num) + + + this is the contribution to the Fock operator from the core electrons + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`list_inact` + * :c:data:`mo_integrals_cache` + * :c:data:`mo_integrals_cache_min` + * :c:data:`mo_integrals_map` + * :c:data:`mo_num` + * :c:data:`mo_two_e_integrals_in_map` + * :c:data:`n_core_orb` + + + +.. c:function:: insert_into_mo_integrals_map: + + + File : :file:`mo_two_e_ints/map_integrals.irp.f` + + .. code:: fortran + + subroutine insert_into_mo_integrals_map(n_integrals, & + buffer_i, buffer_values, thr) + + + Create new entry into MO map, or accumulate in an existing entry + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_integrals_map` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`add_integrals_to_map` + * :c:func:`add_integrals_to_map_no_exit_34` + * :c:func:`add_integrals_to_map_three_indices` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`map_update` + + +.. c:var:: mo_integrals_cache + + + File : :file:`mo_two_e_ints/map_integrals.irp.f` + + .. code:: fortran + + double precision, allocatable :: mo_integrals_cache (0_8:128_8*128_8*128_8*128_8) + + + Cache of MO integrals for fast access + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_integrals_cache_min` + * :c:data:`mo_integrals_map` + * :c:data:`mo_two_e_integrals_in_map` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`big_array_coulomb_integrals` + * :c:data:`core_fock_operator` + * :c:data:`mo_two_e_integrals_jj` + + +.. c:var:: mo_integrals_cache_max + + + File : :file:`mo_two_e_ints/map_integrals.irp.f` + + .. code:: fortran + + integer*4 :: mo_integrals_cache_min + integer*4 :: mo_integrals_cache_max + integer*8 :: mo_integrals_cache_min_8 + integer*8 :: mo_integrals_cache_max_8 + + + Min and max values of the MOs for which the integrals are in the cache + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`elec_alpha_num` + * :c:data:`mo_num` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`big_array_coulomb_integrals` + * :c:data:`core_fock_operator` + * :c:data:`mo_integrals_cache` + * :c:data:`mo_two_e_integrals_jj` + + +.. c:var:: mo_integrals_cache_max_8 + + + File : :file:`mo_two_e_ints/map_integrals.irp.f` + + .. code:: fortran + + integer*4 :: mo_integrals_cache_min + integer*4 :: mo_integrals_cache_max + integer*8 :: mo_integrals_cache_min_8 + integer*8 :: mo_integrals_cache_max_8 + + + Min and max values of the MOs for which the integrals are in the cache + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`elec_alpha_num` + * :c:data:`mo_num` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`big_array_coulomb_integrals` + * :c:data:`core_fock_operator` + * :c:data:`mo_integrals_cache` + * :c:data:`mo_two_e_integrals_jj` + + +.. c:var:: mo_integrals_cache_min + + + File : :file:`mo_two_e_ints/map_integrals.irp.f` + + .. code:: fortran + + integer*4 :: mo_integrals_cache_min + integer*4 :: mo_integrals_cache_max + integer*8 :: mo_integrals_cache_min_8 + integer*8 :: mo_integrals_cache_max_8 + + + Min and max values of the MOs for which the integrals are in the cache + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`elec_alpha_num` + * :c:data:`mo_num` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`big_array_coulomb_integrals` + * :c:data:`core_fock_operator` + * :c:data:`mo_integrals_cache` + * :c:data:`mo_two_e_integrals_jj` + + +.. c:var:: mo_integrals_cache_min_8 + + + File : :file:`mo_two_e_ints/map_integrals.irp.f` + + .. code:: fortran + + integer*4 :: mo_integrals_cache_min + integer*4 :: mo_integrals_cache_max + integer*8 :: mo_integrals_cache_min_8 + integer*8 :: mo_integrals_cache_max_8 + + + Min and max values of the MOs for which the integrals are in the cache + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`elec_alpha_num` + * :c:data:`mo_num` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`big_array_coulomb_integrals` + * :c:data:`core_fock_operator` + * :c:data:`mo_integrals_cache` + * :c:data:`mo_two_e_integrals_jj` + + +.. c:var:: mo_integrals_map + + + File : :file:`mo_two_e_ints/map_integrals.irp.f` + + .. code:: fortran + + type(map_type) :: mo_integrals_map + + + MO integrals + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_num` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`big_array_coulomb_integrals` + * :c:data:`coef_hf_selector` + * :c:data:`core_fock_operator` + * :c:data:`fock_operator_closed_shell_ref_bitmask` + * :c:data:`fock_wee_closed_shell` + * :c:data:`h_matrix_all_dets` + * :c:data:`h_matrix_cas` + * :c:data:`mo_integrals_cache` + * :c:data:`mo_two_e_integrals_in_map` + * :c:data:`mo_two_e_integrals_jj` + + +.. c:var:: mo_two_e_integral_jj_from_ao + + + File : :file:`mo_two_e_ints/mo_bi_integrals.irp.f` + + .. code:: fortran + + double precision, allocatable :: mo_two_e_integral_jj_from_ao (mo_num,mo_num) + double precision, allocatable :: mo_two_e_integrals_jj_exchange_from_ao (mo_num,mo_num) + double precision, allocatable :: mo_two_e_integrals_jj_anti_from_ao (mo_num,mo_num) + + + mo_two_e_integral_jj_from_ao(i,j) = J_ij + mo_two_e_integrals_jj_exchange_from_ao(i,j) = J_ij + mo_two_e_integrals_jj_anti_from_ao(i,j) = J_ij - K_ij + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_integrals_map` + * :c:data:`ao_integrals_threshold` + * :c:data:`ao_num` + * :c:data:`ao_overlap_abs` + * :c:data:`ao_two_e_integral_schwartz` + * :c:data:`ao_two_e_integrals_in_map` + * :c:data:`do_direct_integrals` + * :c:data:`mo_coef` + * :c:data:`mo_coef_transp` + * :c:data:`mo_num` + + + +.. c:var:: mo_two_e_integrals_in_map + + + File : :file:`mo_two_e_ints/mo_bi_integrals.irp.f` + + .. code:: fortran + + logical :: mo_two_e_integrals_in_map + + + If True, the map of MO two-electron integrals is provided + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`ao_two_e_integrals_in_map` + * :c:data:`core_inact_act_bitmask_4` + * :c:data:`ezfio_filename` + * :c:data:`full_ijkl_bitmask_4` + * :c:data:`list_inact` + * :c:data:`mo_class` + * :c:data:`mo_coef` + * :c:data:`mo_coef_transp` + * :c:data:`mo_integrals_map` + * :c:data:`mo_integrals_threshold` + * :c:data:`mo_num` + * :c:data:`mpi_master` + * :c:data:`n_int` + * :c:data:`no_ivvv_integrals` + * :c:data:`no_vvv_integrals` + * :c:data:`no_vvvv_integrals` + * :c:data:`read_mo_two_e_integrals` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`big_array_coulomb_integrals` + * :c:data:`ci_electronic_energy` + * :c:data:`coef_hf_selector` + * :c:data:`core_fock_operator` + * :c:data:`fock_operator_closed_shell_ref_bitmask` + * :c:data:`fock_wee_closed_shell` + * :c:data:`h_matrix_all_dets` + * :c:data:`h_matrix_cas` + * :c:data:`mo_integrals_cache` + * :c:data:`mo_two_e_integrals_jj` + + +.. c:var:: mo_two_e_integrals_jj + + + File : :file:`mo_two_e_ints/mo_bi_integrals.irp.f` + + .. code:: fortran + + double precision, allocatable :: mo_two_e_integrals_jj (mo_num,mo_num) + double precision, allocatable :: mo_two_e_integrals_jj_exchange (mo_num,mo_num) + double precision, allocatable :: mo_two_e_integrals_jj_anti (mo_num,mo_num) + + + mo_two_e_integrals_jj(i,j) = J_ij + mo_two_e_integrals_jj_exchange(i,j) = K_ij + mo_two_e_integrals_jj_anti(i,j) = J_ij - K_ij + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_integrals_cache` + * :c:data:`mo_integrals_cache_min` + * :c:data:`mo_integrals_map` + * :c:data:`mo_num` + * :c:data:`mo_two_e_integrals_in_map` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`core_energy` + * :c:data:`ref_bitmask_energy` + + +.. c:var:: mo_two_e_integrals_jj_anti + + + File : :file:`mo_two_e_ints/mo_bi_integrals.irp.f` + + .. code:: fortran + + double precision, allocatable :: mo_two_e_integrals_jj (mo_num,mo_num) + double precision, allocatable :: mo_two_e_integrals_jj_exchange (mo_num,mo_num) + double precision, allocatable :: mo_two_e_integrals_jj_anti (mo_num,mo_num) + + + mo_two_e_integrals_jj(i,j) = J_ij + mo_two_e_integrals_jj_exchange(i,j) = K_ij + mo_two_e_integrals_jj_anti(i,j) = J_ij - K_ij + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_integrals_cache` + * :c:data:`mo_integrals_cache_min` + * :c:data:`mo_integrals_map` + * :c:data:`mo_num` + * :c:data:`mo_two_e_integrals_in_map` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`core_energy` + * :c:data:`ref_bitmask_energy` + + +.. c:var:: mo_two_e_integrals_jj_anti_from_ao + + + File : :file:`mo_two_e_ints/mo_bi_integrals.irp.f` + + .. code:: fortran + + double precision, allocatable :: mo_two_e_integral_jj_from_ao (mo_num,mo_num) + double precision, allocatable :: mo_two_e_integrals_jj_exchange_from_ao (mo_num,mo_num) + double precision, allocatable :: mo_two_e_integrals_jj_anti_from_ao (mo_num,mo_num) + + + mo_two_e_integral_jj_from_ao(i,j) = J_ij + mo_two_e_integrals_jj_exchange_from_ao(i,j) = J_ij + mo_two_e_integrals_jj_anti_from_ao(i,j) = J_ij - K_ij + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_integrals_map` + * :c:data:`ao_integrals_threshold` + * :c:data:`ao_num` + * :c:data:`ao_overlap_abs` + * :c:data:`ao_two_e_integral_schwartz` + * :c:data:`ao_two_e_integrals_in_map` + * :c:data:`do_direct_integrals` + * :c:data:`mo_coef` + * :c:data:`mo_coef_transp` + * :c:data:`mo_num` + + + +.. c:var:: mo_two_e_integrals_jj_exchange + + + File : :file:`mo_two_e_ints/mo_bi_integrals.irp.f` + + .. code:: fortran + + double precision, allocatable :: mo_two_e_integrals_jj (mo_num,mo_num) + double precision, allocatable :: mo_two_e_integrals_jj_exchange (mo_num,mo_num) + double precision, allocatable :: mo_two_e_integrals_jj_anti (mo_num,mo_num) + + + mo_two_e_integrals_jj(i,j) = J_ij + mo_two_e_integrals_jj_exchange(i,j) = K_ij + mo_two_e_integrals_jj_anti(i,j) = J_ij - K_ij + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_integrals_cache` + * :c:data:`mo_integrals_cache_min` + * :c:data:`mo_integrals_map` + * :c:data:`mo_num` + * :c:data:`mo_two_e_integrals_in_map` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`core_energy` + * :c:data:`ref_bitmask_energy` + + +.. c:var:: mo_two_e_integrals_jj_exchange_from_ao + + + File : :file:`mo_two_e_ints/mo_bi_integrals.irp.f` + + .. code:: fortran + + double precision, allocatable :: mo_two_e_integral_jj_from_ao (mo_num,mo_num) + double precision, allocatable :: mo_two_e_integrals_jj_exchange_from_ao (mo_num,mo_num) + double precision, allocatable :: mo_two_e_integrals_jj_anti_from_ao (mo_num,mo_num) + + + mo_two_e_integral_jj_from_ao(i,j) = J_ij + mo_two_e_integrals_jj_exchange_from_ao(i,j) = J_ij + mo_two_e_integrals_jj_anti_from_ao(i,j) = J_ij - K_ij + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_integrals_map` + * :c:data:`ao_integrals_threshold` + * :c:data:`ao_num` + * :c:data:`ao_overlap_abs` + * :c:data:`ao_two_e_integral_schwartz` + * :c:data:`ao_two_e_integrals_in_map` + * :c:data:`do_direct_integrals` + * :c:data:`mo_coef` + * :c:data:`mo_coef_transp` + * :c:data:`mo_num` + + + +.. c:var:: mo_two_e_integrals_vv_anti_from_ao + + + File : :file:`mo_two_e_ints/mo_bi_integrals.irp.f` + + .. code:: fortran + + double precision, allocatable :: mo_two_e_integrals_vv_from_ao (mo_num,mo_num) + double precision, allocatable :: mo_two_e_integrals_vv_exchange_from_ao (mo_num,mo_num) + double precision, allocatable :: mo_two_e_integrals_vv_anti_from_ao (mo_num,mo_num) + + + mo_two_e_integrals_vv_from_ao(i,j) = J_ij + mo_two_e_integrals_vv_exchange_from_ao(i,j) = J_ij + mo_two_e_integrals_vv_anti_from_ao(i,j) = J_ij - K_ij + but only for the virtual orbitals + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_integrals_map` + * :c:data:`ao_integrals_threshold` + * :c:data:`ao_num` + * :c:data:`ao_overlap_abs` + * :c:data:`ao_two_e_integral_schwartz` + * :c:data:`ao_two_e_integrals_in_map` + * :c:data:`do_direct_integrals` + * :c:data:`list_inact` + * :c:data:`mo_coef` + * :c:data:`mo_coef_transp` + * :c:data:`mo_num` + * :c:data:`n_core_orb` + + + +.. c:var:: mo_two_e_integrals_vv_exchange_from_ao + + + File : :file:`mo_two_e_ints/mo_bi_integrals.irp.f` + + .. code:: fortran + + double precision, allocatable :: mo_two_e_integrals_vv_from_ao (mo_num,mo_num) + double precision, allocatable :: mo_two_e_integrals_vv_exchange_from_ao (mo_num,mo_num) + double precision, allocatable :: mo_two_e_integrals_vv_anti_from_ao (mo_num,mo_num) + + + mo_two_e_integrals_vv_from_ao(i,j) = J_ij + mo_two_e_integrals_vv_exchange_from_ao(i,j) = J_ij + mo_two_e_integrals_vv_anti_from_ao(i,j) = J_ij - K_ij + but only for the virtual orbitals + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_integrals_map` + * :c:data:`ao_integrals_threshold` + * :c:data:`ao_num` + * :c:data:`ao_overlap_abs` + * :c:data:`ao_two_e_integral_schwartz` + * :c:data:`ao_two_e_integrals_in_map` + * :c:data:`do_direct_integrals` + * :c:data:`list_inact` + * :c:data:`mo_coef` + * :c:data:`mo_coef_transp` + * :c:data:`mo_num` + * :c:data:`n_core_orb` + + + +.. c:var:: mo_two_e_integrals_vv_from_ao + + + File : :file:`mo_two_e_ints/mo_bi_integrals.irp.f` + + .. code:: fortran + + double precision, allocatable :: mo_two_e_integrals_vv_from_ao (mo_num,mo_num) + double precision, allocatable :: mo_two_e_integrals_vv_exchange_from_ao (mo_num,mo_num) + double precision, allocatable :: mo_two_e_integrals_vv_anti_from_ao (mo_num,mo_num) + + + mo_two_e_integrals_vv_from_ao(i,j) = J_ij + mo_two_e_integrals_vv_exchange_from_ao(i,j) = J_ij + mo_two_e_integrals_vv_anti_from_ao(i,j) = J_ij - K_ij + but only for the virtual orbitals + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_integrals_map` + * :c:data:`ao_integrals_threshold` + * :c:data:`ao_num` + * :c:data:`ao_overlap_abs` + * :c:data:`ao_two_e_integral_schwartz` + * :c:data:`ao_two_e_integrals_in_map` + * :c:data:`do_direct_integrals` + * :c:data:`list_inact` + * :c:data:`mo_coef` + * :c:data:`mo_coef_transp` + * :c:data:`mo_num` + * :c:data:`n_core_orb` + + + + +Subroutines / functions +----------------------- + +.. c:function:: add_integrals_to_map: + + + File : :file:`mo_two_e_ints/mo_bi_integrals.irp.f` + + .. code:: fortran + + subroutine add_integrals_to_map(mask_ijkl) + + + Adds integrals to tha MO map according to some bitmask + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_coef` + * :c:data:`mo_integrals_threshold` + * :c:data:`mo_coef_transp` + * :c:data:`ao_num` + * :c:data:`mo_integrals_map` + * :c:data:`mo_num` + * :c:data:`ao_two_e_integrals_in_map` + * :c:data:`n_int` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_two_e_integrals_in_map` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`bitstring_to_list` + * :c:func:`bitstring_to_str` + * :c:func:`cpu_time` + * :c:func:`get_ao_two_e_integrals` + * :c:func:`insert_into_mo_integrals_map` + * :c:func:`map_merge` + * :c:func:`mo_two_e_integrals_index` + * :c:func:`wall_time` + + +.. c:function:: add_integrals_to_map_no_exit_34: + + + File : :file:`mo_two_e_ints/mo_bi_integrals.irp.f` + + .. code:: fortran + + subroutine add_integrals_to_map_no_exit_34(mask_ijkl) + + + Adds integrals to tha MO map according to some bitmask + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_coef` + * :c:data:`mo_integrals_threshold` + * :c:data:`mo_coef_transp` + * :c:data:`ao_num` + * :c:data:`mo_integrals_map` + * :c:data:`mo_num` + * :c:data:`ao_two_e_integrals_in_map` + * :c:data:`n_int` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_two_e_integrals_in_map` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`bitstring_to_list` + * :c:func:`cpu_time` + * :c:func:`get_ao_two_e_integrals` + * :c:func:`insert_into_mo_integrals_map` + * :c:func:`map_merge` + * :c:func:`mo_two_e_integrals_index` + * :c:func:`wall_time` + + +.. c:function:: add_integrals_to_map_three_indices: + + + File : :file:`mo_two_e_ints/mo_bi_integrals.irp.f` + + .. code:: fortran + + subroutine add_integrals_to_map_three_indices(mask_ijk) + + + Adds integrals to tha MO map according to some bitmask + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_coef` + * :c:data:`mo_integrals_threshold` + * :c:data:`mo_coef_transp` + * :c:data:`ao_num` + * :c:data:`mo_integrals_map` + * :c:data:`mo_num` + * :c:data:`ao_two_e_integrals_in_map` + * :c:data:`n_int` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_two_e_integrals_in_map` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`bitstring_to_list` + * :c:func:`bitstring_to_str` + * :c:func:`cpu_time` + * :c:func:`get_ao_two_e_integrals` + * :c:func:`insert_into_mo_integrals_map` + * :c:func:`map_merge` + * :c:func:`mo_two_e_integrals_index` + * :c:func:`wall_time` + + +.. c:function:: clear_mo_map: + + + File : :file:`mo_two_e_ints/mo_bi_integrals.irp.f` + + .. code:: fortran + + subroutine clear_mo_map + + + Frees the memory of the MO map + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_integrals_map` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`map_deinit` + + +.. c:function:: dump_mo_integrals: + + + File : :file:`mo_two_e_ints/map_integrals.irp.f` + + .. code:: fortran + + subroutine dump_mo_integrals(filename) + + + Save to disk the |MO| integrals + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_integrals_map` + * :c:data:`mpi_master` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`ezfio_set_work_empty` + + +.. c:function:: get_mo_map_size: + + + File : :file:`mo_two_e_ints/map_integrals.irp.f` + + .. code:: fortran + + integer*8 function get_mo_map_size() + + + Return the number of elements in the MO map + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_integrals_map` + + +.. c:function:: get_mo_two_e_integrals: + + + File : :file:`mo_two_e_ints/map_integrals.irp.f` + + .. code:: fortran + + subroutine get_mo_two_e_integrals(j,k,l,sze,out_val,map) + + + Returns multiple integrals in the MO basis, all + i for j,k,l fixed. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_two_e_integrals_in_map` + * :c:data:`mo_integrals_cache` + * :c:data:`mo_integrals_cache_min` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`get_d0` + * :c:func:`get_d1` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`map_get` + + +.. c:function:: get_mo_two_e_integrals_coulomb_ii: + + + File : :file:`mo_two_e_ints/map_integrals.irp.f` + + .. code:: fortran + + subroutine get_mo_two_e_integrals_coulomb_ii(k,l,sze,out_val,map) + + + Returns multiple integrals + k(1)i(2) 1/r12 l(1)i(2) :: out_val(i1) + for k,l fixed. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_two_e_integrals_in_map` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:data:`fock_operator_closed_shell_ref_bitmask` + * :c:data:`fock_wee_closed_shell` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`map_get_many` + * :c:func:`two_e_integrals_index` + + +.. c:function:: get_mo_two_e_integrals_exch_ii: + + + File : :file:`mo_two_e_ints/map_integrals.irp.f` + + .. code:: fortran + + subroutine get_mo_two_e_integrals_exch_ii(k,l,sze,out_val,map) + + + Returns multiple integrals + k(1)i(2) 1/r12 i(1)l(2) :: out_val(i1) + for k,l fixed. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_two_e_integrals_in_map` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:data:`fock_operator_closed_shell_ref_bitmask` + * :c:data:`fock_wee_closed_shell` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`map_get_many` + * :c:func:`two_e_integrals_index` + + +.. c:function:: get_mo_two_e_integrals_i1j1: + + + File : :file:`mo_two_e_ints/map_integrals.irp.f` + + .. code:: fortran + + subroutine get_mo_two_e_integrals_i1j1(k,l,sze,out_array,map) + + + Returns multiple integrals in the MO basis, all + i(1)j(1) 1/r12 k(2)l(2) + i, j for k,l fixed. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_two_e_integrals_in_map` + * :c:data:`mo_integrals_map` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`i2radix_sort` + * :c:func:`i8radix_sort` + * :c:func:`iradix_sort` + * :c:func:`map_get_many` + * :c:func:`two_e_integrals_index` + + +.. c:function:: get_mo_two_e_integrals_ij: + + + File : :file:`mo_two_e_ints/map_integrals.irp.f` + + .. code:: fortran + + subroutine get_mo_two_e_integrals_ij(k,l,sze,out_array,map) + + + Returns multiple integrals in the MO basis, all + i(1)j(2) 1/r12 k(1)l(2) + i, j for k,l fixed. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_two_e_integrals_in_map` + * :c:data:`mo_integrals_map` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`i2radix_sort` + * :c:func:`i8radix_sort` + * :c:func:`iradix_sort` + * :c:func:`map_get_many` + * :c:func:`two_e_integrals_index` + + +.. c:function:: get_two_e_integral: + + + File : :file:`mo_two_e_ints/map_integrals.irp.f` + + .. code:: fortran + + double precision function get_two_e_integral(i,j,k,l,map) + + + Returns one integral in the MO basis + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_two_e_integrals_in_map` + * :c:data:`mo_integrals_cache` + * :c:data:`mo_integrals_cache_min` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`map_get` + * :c:func:`two_e_integrals_index` + + +.. c:function:: load_mo_integrals: + + + File : :file:`mo_two_e_ints/map_integrals.irp.f` + + .. code:: fortran + + integer function load_mo_integrals(filename) + + + Read from disk the |MO| integrals + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_integrals_map` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`cache_map_reallocate` + * :c:func:`map_deinit` + * :c:func:`map_sort` + + +.. c:function:: mo_two_e_integral: + + + File : :file:`mo_two_e_ints/map_integrals.irp.f` + + .. code:: fortran + + double precision function mo_two_e_integral(i,j,k,l) + + + Returns one integral in the MO basis + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_integrals_cache` + * :c:data:`mo_integrals_map` + * :c:data:`mo_two_e_integrals_in_map` + + +.. c:function:: mo_two_e_integrals_index: + + + File : :file:`mo_two_e_ints/mo_bi_integrals.irp.f` + + .. code:: fortran + + subroutine mo_two_e_integrals_index(i,j,k,l,i1) + + + Computes an unique index for i,j,k,l integrals + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`add_integrals_to_map` + * :c:func:`add_integrals_to_map_erf` + * :c:func:`add_integrals_to_map_no_exit_34` + * :c:func:`add_integrals_to_map_three_indices` + diff --git a/doc/_sources/modules/mpi.rst.txt b/doc/_sources/modules/mpi.rst.txt new file mode 100644 index 00000000..21608559 --- /dev/null +++ b/doc/_sources/modules/mpi.rst.txt @@ -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` + diff --git a/doc/_sources/modules/nuclei.rst.txt b/doc/_sources/modules/nuclei.rst.txt new file mode 100644 index 00000000..0bd4b325 --- /dev/null +++ b/doc/_sources/modules/nuclei.rst.txt @@ -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` + + diff --git a/doc/_sources/modules/perturbation.rst.txt b/doc/_sources/modules/perturbation.rst.txt new file mode 100644 index 00000000..fb144639 --- /dev/null +++ b/doc/_sources/modules/perturbation.rst.txt @@ -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 + +`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 * (( - E(i) ) - sqrt( ( - E(i)) ^2 + 4 ^2 ) + + c_pert(i) = e_2_pert(i)/ + + + 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` + diff --git a/doc/_sources/modules/pseudo.rst.txt b/doc/_sources/modules/pseudo.rst.txt new file mode 100644 index 00000000..8a48aa9f --- /dev/null +++ b/doc/_sources/modules/pseudo.rst.txt @@ -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 + diff --git a/doc/_sources/modules/psiref_cas.rst.txt b/doc/_sources/modules/psiref_cas.rst.txt new file mode 100644 index 00000000..c57198fe --- /dev/null +++ b/doc/_sources/modules/psiref_cas.rst.txt @@ -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|. + + diff --git a/doc/_sources/modules/psiref_utils.rst.txt b/doc/_sources/modules/psiref_utils.rst.txt new file mode 100644 index 00000000..541fc2c4 --- /dev/null +++ b/doc/_sources/modules/psiref_utils.rst.txt @@ -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. + + + diff --git a/doc/_sources/modules/scf_utils.rst.txt b/doc/_sources/modules/scf_utils.rst.txt new file mode 100644 index 00000000..5b06d6d0 --- /dev/null +++ b/doc/_sources/modules/scf_utils.rst.txt @@ -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` + diff --git a/doc/_sources/modules/selectors_cassd.rst.txt b/doc/_sources/modules/selectors_cassd.rst.txt new file mode 100644 index 00000000..57704d5c --- /dev/null +++ b/doc/_sources/modules/selectors_cassd.rst.txt @@ -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. + diff --git a/doc/_sources/modules/selectors_full.rst.txt b/doc/_sources/modules/selectors_full.rst.txt new file mode 100644 index 00000000..98dd62d9 --- /dev/null +++ b/doc/_sources/modules/selectors_full.rst.txt @@ -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 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 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` + diff --git a/doc/_sources/modules/selectors_utils.rst.txt b/doc/_sources/modules/selectors_utils.rst.txt new file mode 100644 index 00000000..9c4b3bd4 --- /dev/null +++ b/doc/_sources/modules/selectors_utils.rst.txt @@ -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` + diff --git a/doc/_sources/modules/single_ref_method.rst.txt b/doc/_sources/modules/single_ref_method.rst.txt new file mode 100644 index 00000000..e0d17a00 --- /dev/null +++ b/doc/_sources/modules/single_ref_method.rst.txt @@ -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. + + diff --git a/doc/_sources/modules/tools.rst.txt b/doc/_sources/modules/tools.rst.txt new file mode 100644 index 00000000..dfe746cc --- /dev/null +++ b/doc/_sources/modules/tools.rst.txt @@ -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` + diff --git a/doc/_sources/modules/utils.rst.txt b/doc/_sources/modules/utils.rst.txt new file mode 100644 index 00000000..d2c76ba2 --- /dev/null +++ b/doc/_sources/modules/utils.rst.txt @@ -0,0 +1,3024 @@ +.. _module_utils: + +.. program:: utils + +.. default-role:: option + +===== +utils +===== + +Contains general purpose utilities (sorting, maps, etc). + + + + +Providers +--------- + +.. c:var:: binom + + + File : :file:`utils/util.irp.f` + + .. code:: fortran + + double precision, allocatable :: binom (0:40,0:40) + double precision, allocatable :: binom_transp (0:40,0:40) + + + Binomial coefficients + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`binom_int` + + +.. c:var:: binom_int + + + File : :file:`utils/util.irp.f` + + .. code:: fortran + + integer*8, allocatable :: binom_int (0:40,0:40) + integer*8, allocatable :: binom_int_transp (0:40,0:40) + + + Binomial coefficients, as integers*8 + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`binom` + + + +.. c:var:: binom_int_transp + + + File : :file:`utils/util.irp.f` + + .. code:: fortran + + integer*8, allocatable :: binom_int (0:40,0:40) + integer*8, allocatable :: binom_int_transp (0:40,0:40) + + + Binomial coefficients, as integers*8 + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`binom` + + + +.. c:var:: binom_transp + + + File : :file:`utils/util.irp.f` + + .. code:: fortran + + double precision, allocatable :: binom (0:40,0:40) + double precision, allocatable :: binom_transp (0:40,0:40) + + + Binomial coefficients + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`binom_int` + + +.. c:var:: degree_max_integration_lebedev + + + File : :file:`utils/angular_integration.irp.f` + + .. code:: fortran + + integer :: degree_max_integration_lebedev + + + integrate correctly a polynom of order "degree_max_integration_lebedev" + needed for the angular integration according to LEBEDEV formulae + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`n_points_integration_angular_lebedev` + * :c:data:`theta_angular_integration_lebedev` + + +.. c:function:: dtranspose: + + + File : :file:`utils/transpose.irp.f` + + .. code:: fortran + + recursive subroutine dtranspose(A,LDA,B,LDB,d1,d2) + + + Transpose input matrix A into output matrix B + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`dtranspose` + * :c:func:`h_s2_u_0_nstates_openmp` + * :c:func:`h_s2_u_0_nstates_zmq` + * :c:func:`h_s2_u_0_two_e_nstates_openmp` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`dtranspose` + + +.. c:var:: fact_inv + + + File : :file:`utils/util.irp.f` + + .. code:: fortran + + double precision, allocatable :: fact_inv (128) + + + 1/n! + + + +.. c:function:: i2radix_sort: + + + File : :file:`utils/sort.irp.f_template_644` + + .. code:: fortran + + recursive subroutine i2radix_sort(x,iorder,isize,iradix) + + + Sort integer array x(isize) using the radix sort algorithm. + iorder in input should be (1,2,3,...,isize), and in output + contains the new order of the elements. + iradix should be -1 in input. + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`get_mo_two_e_integrals_erf_i1j1` + * :c:func:`get_mo_two_e_integrals_erf_ij` + * :c:func:`get_mo_two_e_integrals_i1j1` + * :c:func:`get_mo_two_e_integrals_ij` + * :c:func:`i2radix_sort` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`i2radix_sort` + * :c:func:`insertion_i2sort` + + +.. c:function:: i8radix_sort: + + + File : :file:`utils/sort.irp.f_template_644` + + .. code:: fortran + + recursive subroutine i8radix_sort(x,iorder,isize,iradix) + + + Sort integer array x(isize) using the radix sort algorithm. + iorder in input should be (1,2,3,...,isize), and in output + contains the new order of the elements. + iradix should be -1 in input. + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`get_mo_two_e_integrals_erf_i1j1` + * :c:func:`get_mo_two_e_integrals_erf_ij` + * :c:func:`get_mo_two_e_integrals_i1j1` + * :c:func:`get_mo_two_e_integrals_ij` + * :c:func:`i8radix_sort` + * :c:data:`psi_bilinear_matrix_transp_values` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`i8radix_sort` + * :c:func:`insertion_i8sort` + + +.. c:function:: i8radix_sort_big: + + + File : :file:`utils/sort.irp.f_template_644` + + .. code:: fortran + + recursive subroutine i8radix_sort_big(x,iorder,isize,iradix) + + + Sort integer array x(isize) using the radix sort algorithm. + iorder in input should be (1,2,3,...,isize), and in output + contains the new order of the elements. + iradix should be -1 in input. + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`i8radix_sort_big` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`i8radix_sort_big` + * :c:func:`insertion_i8sort_big` + + +.. c:var:: inv_int + + + File : :file:`utils/util.irp.f` + + .. code:: fortran + + double precision, allocatable :: inv_int (128) + + + 1/i + + + +.. c:function:: iradix_sort: + + + File : :file:`utils/sort.irp.f_template_644` + + .. code:: fortran + + recursive subroutine iradix_sort(x,iorder,isize,iradix) + + + Sort integer array x(isize) using the radix sort algorithm. + iorder in input should be (1,2,3,...,isize), and in output + contains the new order of the elements. + iradix should be -1 in input. + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`get_mo_two_e_integrals_erf_i1j1` + * :c:func:`get_mo_two_e_integrals_erf_ij` + * :c:func:`get_mo_two_e_integrals_i1j1` + * :c:func:`get_mo_two_e_integrals_ij` + * :c:func:`iradix_sort` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`insertion_isort` + * :c:func:`iradix_sort` + + +.. c:function:: iradix_sort_big: + + + File : :file:`utils/sort.irp.f_template_644` + + .. code:: fortran + + recursive subroutine iradix_sort_big(x,iorder,isize,iradix) + + + Sort integer array x(isize) using the radix sort algorithm. + iorder in input should be (1,2,3,...,isize), and in output + contains the new order of the elements. + iradix should be -1 in input. + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`iradix_sort_big` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`insertion_isort_big` + * :c:func:`iradix_sort_big` + + +.. c:var:: n_points_integration_angular_lebedev + + + File : :file:`utils/angular_integration.irp.f` + + .. code:: fortran + + integer :: n_points_integration_angular_lebedev + + + Number of points needed for the angular integral + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`degree_max_integration_lebedev` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`theta_angular_integration_lebedev` + + +.. c:var:: nproc + + + File : :file:`utils/util.irp.f` + + .. code:: fortran + + integer :: nproc + + + Number of current OpenMP threads + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_two_e_integrals_erf_in_map` + * :c:data:`ao_two_e_integrals_in_map` + * :c:data:`h_apply_buffer_allocated` + * :c:data:`n_det` + * :c:data:`nthreads_davidson` + * :c:data:`nthreads_pt2` + + +.. c:function:: overlap_gaussian_xyz: + + + File : :file:`utils/one_e_integration.irp.f` + + .. code:: fortran + + subroutine overlap_gaussian_xyz(A_center,B_center,alpha,beta,power_A,& + power_B,overlap_x,overlap_y,overlap_z,overlap,dim) + + + .. math:: + + S_x = \int (x-A_x)^{a_x} exp(-\alpha(x-A_x)^2) (x-B_x)^{b_x} exp(-beta(x-B_x)^2) dx \\ + S = S_x S_y S_z + + + Called by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_coef_normalization_libint_factor` + * :c:data:`ao_coef_normalized` + * :c:data:`ao_deriv2_x` + * :c:data:`ao_deriv_1_x` + * :c:data:`ao_dipole_x` + * :c:data:`ao_overlap` + * :c:data:`ao_spread_x` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`gaussian_product_x` + * :c:func:`give_explicit_poly_and_gaussian` + + +.. c:var:: phi_angular_integration_lebedev + + + File : :file:`utils/angular_integration.irp.f` + + .. code:: fortran + + double precision, allocatable :: theta_angular_integration_lebedev (n_points_integration_angular_lebedev) + double precision, allocatable :: phi_angular_integration_lebedev (n_points_integration_angular_lebedev) + double precision, allocatable :: weights_angular_integration_lebedev (n_points_integration_angular_lebedev) + + + Theta phi values together with the weights values for the angular integration : + integral [dphi,dtheta] f(x,y,z) = 4 * pi * sum (1 where i is the basis function and psi_j is the j th eigenvector + + + Called by: + + .. hlist:: + :columns: 3 + + * :c:data:`ci_electronic_energy` + * :c:func:`davidson_diag_hjj_sjj` + * :c:func:`mo_as_eigvectors_of_mo_matrix` + * :c:data:`psi_coef_cas_diagonalized` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`dsyev` + + +.. c:function:: lapack_diagd: + + + File : :file:`utils/linear_algebra.irp.f` + + .. code:: fortran + + subroutine lapack_diagd(eigvalues,eigvectors,H,nmax,n) + + + Diagonalize matrix H + + H is untouched between input and ouptut + + eigevalues(i) = ith lowest eigenvalue of the H matrix + + eigvectors(i,j) = where i is the basis function and psi_j is the j th eigenvector + + + Called by: + + .. hlist:: + :columns: 3 + + * :c:data:`inertia_tensor_eigenvectors` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`dsyevd` + + +.. c:function:: logfact: + + + File : :file:`utils/util.irp.f` + + .. code:: fortran + + double precision function logfact(n) + + + n! + + +.. c:function:: lowercase: + + + File : :file:`utils/util.irp.f` + + .. code:: fortran + + subroutine lowercase(txt,n) + + + Transform to lower case + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`end_parallel_job` + * :c:func:`new_parallel_job` + + +.. c:function:: map_load_from_disk: + + + File : :file:`utils/map_functions.irp.f` + + .. code:: fortran + + subroutine map_load_from_disk(filename,map) + + + + Called by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_two_e_integrals_erf_in_map` + * :c:data:`ao_two_e_integrals_in_map` + * :c:data:`mo_two_e_integrals_erf_in_map` + * :c:data:`mo_two_e_integrals_in_map` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`c_f_pointer` + * :c:func:`mmap` + + +.. c:function:: map_save_to_disk: + + + File : :file:`utils/map_functions.irp.f` + + .. code:: fortran + + subroutine map_save_to_disk(filename,map) + + + + Called by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_two_e_integrals_erf_in_map` + * :c:data:`ao_two_e_integrals_in_map` + * :c:data:`mo_two_e_integrals_erf_in_map` + * :c:data:`mo_two_e_integrals_in_map` + * :c:func:`save_erf_two_e_integrals_ao` + * :c:func:`save_erf_two_e_integrals_mo` + * :c:func:`save_erf_two_e_ints_ao_into_ints_ao` + * :c:func:`save_erf_two_e_ints_mo_into_ints_mo` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`c_f_pointer` + * :c:func:`map_sort` + * :c:func:`mmap` + * :c:func:`msync` + + +.. c:function:: memory_of_double: + + + File : :file:`utils/memory.irp.f` + + .. code:: fortran + + double precision function memory_of_double(n) + + + Computes the memory required for n double precision elements in gigabytes. + + +.. c:function:: memory_of_int: + + + File : :file:`utils/memory.irp.f` + + .. code:: fortran + + double precision function memory_of_int(n) + + + Computes the memory required for n double precision elements in gigabytes. + + +.. c:function:: multiply_poly: + + + File : :file:`utils/integration.irp.f` + + .. code:: fortran + + subroutine multiply_poly(b,nb,c,nc,d,nd) + + + Multiply two polynomials + D(t) =! D(t) +( B(t)*C(t)) + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`general_primitive_integral` + * :c:func:`general_primitive_integral_erf` + * :c:func:`give_explicit_poly_and_gaussian` + * :c:func:`give_explicit_poly_and_gaussian_x` + * :c:func:`give_polynomial_mult_center_one_e` + * :c:func:`give_polynomial_mult_center_one_e_erf` + * :c:func:`give_polynomial_mult_center_one_e_erf_opt` + * :c:func:`i_x1_pol_mult_a1` + * :c:func:`i_x1_pol_mult_a2` + * :c:func:`i_x1_pol_mult_one_e` + * :c:func:`i_x1_pol_mult_recurs` + * :c:func:`i_x2_pol_mult` + * :c:func:`i_x2_pol_mult_one_e` + + +.. c:function:: normalize: + + + File : :file:`utils/util.irp.f` + + .. code:: fortran + + subroutine normalize(u,sze) + + + Normalizes vector u + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`copy_h_apply_buffer_to_wf` + * :c:func:`davidson_diag_hjj_sjj` + * :c:func:`save_wavefunction_general` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`dscal` + + +.. c:function:: ortho_canonical: + + + File : :file:`utils/linear_algebra.irp.f` + + .. code:: fortran + + subroutine ortho_canonical(overlap,LDA,N,C,LDC,m) + + + Compute C_new=C_old.U.s^-1/2 canonical orthogonalization. + + overlap : overlap matrix + + LDA : leftmost dimension of overlap array + + N : Overlap matrix is NxN (array is (LDA,N) ) + + C : Coefficients of the vectors to orthogonalize. On exit, + orthogonal vectors + + LDC : leftmost dimension of C + + m : Coefficients matrix is MxN, ( array is (LDC,N) ) + + + Called by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_ortho_canonical_coef` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`dgemm` + * :c:func:`svd` + + +.. c:function:: ortho_lowdin: + + + File : :file:`utils/linear_algebra.irp.f` + + .. code:: fortran + + subroutine ortho_lowdin(overlap,LDA,N,C,LDC,m) + + + Compute C_new=C_old.S^-1/2 orthogonalization. + + overlap : overlap matrix + + LDA : leftmost dimension of overlap array + + N : Overlap matrix is NxN (array is (LDA,N) ) + + C : Coefficients of the vectors to orthogonalize. On exit, + orthogonal vectors + + LDC : leftmost dimension of C + + M : Coefficients matrix is MxN, ( array is (LDC,N) ) + + + Called by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_ortho_lowdin_coef` + * :c:func:`orthonormalize_mos` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`dgemm` + * :c:func:`svd` + + +.. c:function:: ortho_qr: + + + File : :file:`utils/linear_algebra.irp.f` + + .. code:: fortran + + subroutine ortho_qr(A,LDA,m,n) + + + Orthogonalization using Q.R factorization + + A : matrix to orthogonalize + + LDA : leftmost dimension of A + + n : Number of rows of A + + m : Number of columns of A + + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`davidson_diag_hjj_sjj` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`dgeqrf` + * :c:func:`dorgqr` + + +.. c:function:: ortho_qr_unblocked: + + + File : :file:`utils/linear_algebra.irp.f` + + .. code:: fortran + + subroutine ortho_qr_unblocked(A,LDA,m,n) + + + Orthogonalization using Q.R factorization + + A : matrix to orthogonalize + + LDA : leftmost dimension of A + + n : Number of rows of A + + m : Number of columns of A + + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`dgeqr2` + * :c:func:`dorg2r` + + +.. c:function:: overlap_gaussian_x: + + + File : :file:`utils/one_e_integration.irp.f` + + .. code:: fortran + + double precision function overlap_gaussian_x(A_center,B_center,alpha,beta,power_A,power_B,dim) + + + .. math:: + + \sum_{-infty}^{+infty} (x-A_x)^ax (x-B_x)^bx exp(-alpha(x-A_x)^2) exp(-beta(x-B_X)^2) dx + + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`give_explicit_poly_and_gaussian_x` + + +.. c:function:: overlap_x_abs: + + + File : :file:`utils/one_e_integration.irp.f` + + .. code:: fortran + + subroutine overlap_x_abs(A_center,B_center,alpha,beta,power_A,power_B,overlap_x,lower_exp_val,dx,nx) + + + .. math :: + + \int_{-infty}^{+infty} (x-A_center)^(power_A) * (x-B_center)^power_B * exp(-alpha(x-A_center)^2) * exp(-beta(x-B_center)^2) dx + + + Called by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_overlap_abs` + + +.. c:function:: print_memory_usage: + + + File : :file:`utils/memory.irp.f` + + .. code:: fortran + + subroutine print_memory_usage() + + + Prints the memory usage in the output + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`write_time` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`resident_memory` + * :c:func:`total_memory` + + +.. c:function:: quick_dsort: + + + File : :file:`utils/sort.irp.f_template_261` + + .. code:: fortran + + subroutine quick_dsort(x, iorder, isize) + + + Sort array x(isize) using the quicksort algorithm. + iorder in input should be (1,2,3,...,isize), and in output + contains the new order of the elements. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`nproc` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`dsort` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`rec_d_quicksort` + + +.. c:function:: quick_i2sort: + + + File : :file:`utils/sort.irp.f_template_261` + + .. code:: fortran + + subroutine quick_i2sort(x, iorder, isize) + + + Sort array x(isize) using the quicksort algorithm. + iorder in input should be (1,2,3,...,isize), and in output + contains the new order of the elements. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`nproc` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`i2sort` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`rec_i2_quicksort` + + +.. c:function:: quick_i8sort: + + + File : :file:`utils/sort.irp.f_template_261` + + .. code:: fortran + + subroutine quick_i8sort(x, iorder, isize) + + + Sort array x(isize) using the quicksort algorithm. + iorder in input should be (1,2,3,...,isize), and in output + contains the new order of the elements. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`nproc` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`i8sort` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`rec_i8_quicksort` + + +.. c:function:: quick_isort: + + + File : :file:`utils/sort.irp.f_template_261` + + .. code:: fortran + + subroutine quick_isort(x, iorder, isize) + + + Sort array x(isize) using the quicksort algorithm. + iorder in input should be (1,2,3,...,isize), and in output + contains the new order of the elements. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`nproc` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`isort` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`rec_i_quicksort` + + +.. c:function:: quick_sort: + + + File : :file:`utils/sort.irp.f_template_261` + + .. code:: fortran + + subroutine quick_sort(x, iorder, isize) + + + Sort array x(isize) using the quicksort algorithm. + iorder in input should be (1,2,3,...,isize), and in output + contains the new order of the elements. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`nproc` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`sort` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`rec__quicksort` + + +.. c:function:: recentered_poly2: + + + File : :file:`utils/integration.irp.f` + + .. code:: fortran + + subroutine recentered_poly2(P_new,x_A,x_P,a,P_new2,x_B,x_Q,b) + + + Recenter two polynomials + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`binom` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`give_explicit_poly_and_gaussian` + * :c:func:`give_explicit_poly_and_gaussian_x` + + +.. c:function:: resident_memory: + + + File : :file:`utils/memory.irp.f` + + .. code:: fortran + + subroutine resident_memory(value) + + + Returns the current used memory in gigabytes used by the current process. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`file_lock` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`check_mem` + * :c:func:`davidson_diag_hjj_sjj` + * :c:func:`print_memory_usage` + * :c:func:`zmq_pt2` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`omp_set_lock` + * :c:func:`omp_unset_lock` + + +.. c:function:: rint: + + + File : :file:`utils/integration.irp.f` + + .. code:: fortran + + double precision function rint(n,rho) + + + .. math:: + + \int_0^1 dx \exp(-p x^2) x^n + + + +.. c:function:: rint1: + + + File : :file:`utils/integration.irp.f` + + .. code:: fortran + + double precision function rint1(n,rho) + + + Standard version of rint + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`inv_int` + * :c:data:`fact_inv` + + +.. c:function:: rint_large_n: + + + File : :file:`utils/integration.irp.f` + + .. code:: fortran + + double precision function rint_large_n(n,rho) + + + Version of rint for large values of n + + +.. c:function:: rint_sum: + + + File : :file:`utils/integration.irp.f` + + .. code:: fortran + + double precision function rint_sum(n_pt_out,rho,d1) + + + Needed for the calculation of two-electron integrals. + + +.. c:function:: rinteg: + + + File : :file:`utils/need.irp.f` + + .. code:: fortran + + double precision function rinteg(n,u) + + + + +.. c:function:: rintgauss: + + + File : :file:`utils/need.irp.f` + + .. code:: fortran + + double precision function rintgauss(n) + + + + +.. c:function:: sabpartial: + + + File : :file:`utils/need.irp.f` + + .. code:: fortran + + double precision function SABpartial(zA,zB,A,B,nA,nB,gamA,gamB,l) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`binom` + + +.. c:function:: set_order: + + + File : :file:`utils/sort.irp.f_template_347` + + .. code:: fortran + + subroutine set_order(x,iorder,isize) + + + array A has already been sorted, and iorder has contains the new order of + elements of A. This subroutine changes the order of x to match the new order of A. + + +.. c:function:: set_order_big: + + + File : :file:`utils/sort.irp.f_template_412` + + .. code:: fortran + + subroutine set_order_big(x,iorder,isize) + + + array A has already been sorted, and iorder has contains the new order of + elements of A. This subroutine changes the order of x to match the new order of A. + This is a version for very large arrays where the indices need + to be in integer*8 format + + +.. c:function:: sort: + + + File : :file:`utils/sort.irp.f_template_293` + + .. code:: fortran + + subroutine sort(x,iorder,isize) + + + Sort array x(isize). + iorder in input should be (1,2,3,...,isize), and in output + contains the new order of the elements. + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`insertion_sort` + * :c:func:`quick_sort` + + +.. c:function:: sorted_dnumber: + + + File : :file:`utils/sort.irp.f_template_261` + + .. code:: fortran + + subroutine sorted_dnumber(x,isize,n) + + + Returns the number of sorted elements + + +.. c:function:: sorted_i2number: + + + File : :file:`utils/sort.irp.f_template_261` + + .. code:: fortran + + subroutine sorted_i2number(x,isize,n) + + + Returns the number of sorted elements + + +.. c:function:: sorted_i8number: + + + File : :file:`utils/sort.irp.f_template_261` + + .. code:: fortran + + subroutine sorted_i8number(x,isize,n) + + + Returns the number of sorted elements + + +.. c:function:: sorted_inumber: + + + File : :file:`utils/sort.irp.f_template_261` + + .. code:: fortran + + subroutine sorted_inumber(x,isize,n) + + + Returns the number of sorted elements + + +.. c:function:: sorted_number: + + + File : :file:`utils/sort.irp.f_template_261` + + .. code:: fortran + + subroutine sorted_number(x,isize,n) + + + Returns the number of sorted elements + + +.. c:function:: svd: + + + File : :file:`utils/linear_algebra.irp.f` + + .. code:: fortran + + subroutine svd(A,LDA,U,LDU,D,Vt,LDVt,m,n) + + + Compute A = U.D.Vt + + LDx : leftmost dimension of x + + Dimsneion of A is m x n + + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`mo_as_svd_vectors_of_mo_matrix` + * :c:func:`mo_as_svd_vectors_of_mo_matrix_eig` + * :c:func:`ortho_canonical` + * :c:func:`ortho_lowdin` + * :c:data:`s_half` + * :c:data:`s_half_inv` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`dgesvd` + + +.. c:function:: total_memory: + + + File : :file:`utils/memory.irp.f` + + .. code:: fortran + + subroutine total_memory(value) + + + Returns the current used memory in gigabytes used by the current process. + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`print_memory_usage` + + +.. c:function:: u_dot_u: + + + File : :file:`utils/util.irp.f` + + .. code:: fortran + + double precision function u_dot_u(u,sze) + + + Compute + + +.. c:function:: u_dot_v: + + + File : :file:`utils/util.irp.f` + + .. code:: fortran + + double precision function u_dot_v(u,v,sze) + + + Compute + + +.. c:function:: wall_time: + + + File : :file:`utils/util.irp.f` + + .. code:: fortran + + subroutine wall_time(t) + + + The equivalent of cpu_time, but for the wall time. + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`add_integrals_to_map` + * :c:func:`add_integrals_to_map_erf` + * :c:func:`add_integrals_to_map_no_exit_34` + * :c:func:`add_integrals_to_map_three_indices` + * :c:data:`ao_pseudo_integrals_local` + * :c:data:`ao_pseudo_integrals_non_local` + * :c:data:`ao_two_e_integrals_erf_in_map` + * :c:data:`ao_two_e_integrals_in_map` + * :c:func:`davidson_converged` + * :c:func:`davidson_diag_hjj_sjj` + * :c:data:`output_wall_time_0` + * :c:func:`pt2_collector` + * :c:func:`run_pt2_slave` + * :c:func:`run_slave_main` + * :c:func:`write_time` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`system_clock` + + +.. c:function:: write_git_log: + + + File : :file:`utils/util.irp.f` + + .. code:: fortran + + subroutine write_git_log(iunit) + + + Write the last git commit in file iunit. + diff --git a/doc/_sources/modules/zmq.rst.txt b/doc/_sources/modules/zmq.rst.txt new file mode 100644 index 00000000..92a2fe6a --- /dev/null +++ b/doc/_sources/modules/zmq.rst.txt @@ -0,0 +1,1513 @@ +.. _module_zmq: + +.. program:: zmq + +.. default-role:: option + +=== +zmq +=== + +Definition of |ZeroMQ| sockets and messages. + + + + + +Providers +--------- + +.. c:var:: is_zmq_slave + + + File : :file:`zmq/utils.irp.f` + + .. code:: fortran + + logical :: is_zmq_slave + + + If |true|, the current process is a |ZeroMQ| slave. + + + +.. c:var:: qp_run_address + + + File : :file:`zmq/utils.irp.f` + + .. code:: fortran + + character*(128) :: qp_run_address + integer :: zmq_port_start + + + Address of the qp_run socket + Example : tcp://130.120.229.139:12345 + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`zmq_socket_pull_tcp_address` + + +.. c:var:: zmq_context + + + File : :file:`zmq/utils.irp.f` + + .. code:: fortran + + integer(ZMQ_PTR) :: zmq_context + integer(omp_lock_kind) :: zmq_lock + + + Context for the ZeroMQ library + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_two_e_integrals_erf_in_map` + * :c:data:`ao_two_e_integrals_in_map` + + +.. c:var:: zmq_lock + + + File : :file:`zmq/utils.irp.f` + + .. code:: fortran + + integer(ZMQ_PTR) :: zmq_context + integer(omp_lock_kind) :: zmq_lock + + + Context for the ZeroMQ library + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_two_e_integrals_erf_in_map` + * :c:data:`ao_two_e_integrals_in_map` + + +.. c:var:: zmq_port_start + + + File : :file:`zmq/utils.irp.f` + + .. code:: fortran + + character*(128) :: qp_run_address + integer :: zmq_port_start + + + Address of the qp_run socket + Example : tcp://130.120.229.139:12345 + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`zmq_socket_pull_tcp_address` + + +.. c:var:: zmq_socket_pair_inproc_address + + + File : :file:`zmq/utils.irp.f` + + .. code:: fortran + + character*(128) :: zmq_socket_pull_tcp_address + character*(128) :: zmq_socket_pair_inproc_address + character*(128) :: zmq_socket_push_tcp_address + character*(128) :: zmq_socket_pull_inproc_address + character*(128) :: zmq_socket_push_inproc_address + character*(128) :: zmq_socket_sub_tcp_address + + + Socket which pulls the results (2) + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`qp_run_address` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_two_e_integrals_erf_in_map` + * :c:data:`ao_two_e_integrals_in_map` + + +.. c:var:: zmq_socket_pull_inproc_address + + + File : :file:`zmq/utils.irp.f` + + .. code:: fortran + + character*(128) :: zmq_socket_pull_tcp_address + character*(128) :: zmq_socket_pair_inproc_address + character*(128) :: zmq_socket_push_tcp_address + character*(128) :: zmq_socket_pull_inproc_address + character*(128) :: zmq_socket_push_inproc_address + character*(128) :: zmq_socket_sub_tcp_address + + + Socket which pulls the results (2) + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`qp_run_address` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_two_e_integrals_erf_in_map` + * :c:data:`ao_two_e_integrals_in_map` + + +.. c:var:: zmq_socket_pull_tcp_address + + + File : :file:`zmq/utils.irp.f` + + .. code:: fortran + + character*(128) :: zmq_socket_pull_tcp_address + character*(128) :: zmq_socket_pair_inproc_address + character*(128) :: zmq_socket_push_tcp_address + character*(128) :: zmq_socket_pull_inproc_address + character*(128) :: zmq_socket_push_inproc_address + character*(128) :: zmq_socket_sub_tcp_address + + + Socket which pulls the results (2) + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`qp_run_address` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_two_e_integrals_erf_in_map` + * :c:data:`ao_two_e_integrals_in_map` + + +.. c:var:: zmq_socket_push_inproc_address + + + File : :file:`zmq/utils.irp.f` + + .. code:: fortran + + character*(128) :: zmq_socket_pull_tcp_address + character*(128) :: zmq_socket_pair_inproc_address + character*(128) :: zmq_socket_push_tcp_address + character*(128) :: zmq_socket_pull_inproc_address + character*(128) :: zmq_socket_push_inproc_address + character*(128) :: zmq_socket_sub_tcp_address + + + Socket which pulls the results (2) + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`qp_run_address` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_two_e_integrals_erf_in_map` + * :c:data:`ao_two_e_integrals_in_map` + + +.. c:var:: zmq_socket_push_tcp_address + + + File : :file:`zmq/utils.irp.f` + + .. code:: fortran + + character*(128) :: zmq_socket_pull_tcp_address + character*(128) :: zmq_socket_pair_inproc_address + character*(128) :: zmq_socket_push_tcp_address + character*(128) :: zmq_socket_pull_inproc_address + character*(128) :: zmq_socket_push_inproc_address + character*(128) :: zmq_socket_sub_tcp_address + + + Socket which pulls the results (2) + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`qp_run_address` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_two_e_integrals_erf_in_map` + * :c:data:`ao_two_e_integrals_in_map` + + +.. c:var:: zmq_socket_sub_tcp_address + + + File : :file:`zmq/utils.irp.f` + + .. code:: fortran + + character*(128) :: zmq_socket_pull_tcp_address + character*(128) :: zmq_socket_pair_inproc_address + character*(128) :: zmq_socket_push_tcp_address + character*(128) :: zmq_socket_pull_inproc_address + character*(128) :: zmq_socket_push_inproc_address + character*(128) :: zmq_socket_sub_tcp_address + + + Socket which pulls the results (2) + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`qp_run_address` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_two_e_integrals_erf_in_map` + * :c:data:`ao_two_e_integrals_in_map` + + +.. c:var:: zmq_state + + + File : :file:`zmq/utils.irp.f` + + .. code:: fortran + + character*(128) :: zmq_state + + + Threads executing work through the ZeroMQ interface + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_two_e_integrals_erf_in_map` + * :c:data:`ao_two_e_integrals_in_map` + + + +Subroutines / functions +----------------------- + +.. c:function:: add_task_to_taskserver: + + + File : :file:`zmq/utils.irp.f` + + .. code:: fortran + + integer function add_task_to_taskserver(zmq_to_qp_run_socket,task) + + + Get a task from the task server + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`zmq_state` + + +.. c:function:: connect_to_taskserver: + + + File : :file:`zmq/utils.irp.f` + + .. code:: fortran + + integer function connect_to_taskserver(zmq_to_qp_run_socket,worker_id,thread) + + + Connect to the task server and obtain the worker ID + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`zmq_state` + + +.. c:function:: disconnect_from_taskserver: + + + File : :file:`zmq/utils.irp.f` + + .. code:: fortran + + integer function disconnect_from_taskserver(zmq_to_qp_run_socket, worker_id) + + + Disconnect from the task server + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`zmq_state` + + +.. c:function:: disconnect_from_taskserver_state: + + + File : :file:`zmq/utils.irp.f` + + .. code:: fortran + + integer function disconnect_from_taskserver_state(zmq_to_qp_run_socket, worker_id, state) + + + Disconnect from the task server + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`zmq_state` + + +.. c:function:: end_parallel_job: + + + File : :file:`zmq/utils.irp.f` + + .. code:: fortran + + subroutine end_parallel_job(zmq_to_qp_run_socket,zmq_socket_pull,name_in) + + + End a new parallel job with name 'name'. The slave tasks execute subroutine 'slave' + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`zmq_state` + * :c:data:`zmq_context` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_two_e_integrals_erf_in_map` + * :c:data:`ao_two_e_integrals_in_map` + * :c:func:`h_s2_u_0_nstates_zmq` + * :c:func:`zmq_pt2` + * :c:func:`zmq_selection` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`end_zmq_pull_socket` + * :c:func:`end_zmq_to_qp_run_socket` + * :c:func:`lowercase` + * :c:func:`omp_set_lock` + * :c:func:`omp_unset_lock` + * :c:func:`sleep` + + +.. c:function:: end_zmq_pair_socket: + + + File : :file:`zmq/utils.irp.f` + + .. code:: fortran + + subroutine end_zmq_pair_socket(zmq_socket_pair) + + + Terminate socket on which the results are sent. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`zmq_context` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`omp_set_lock` + * :c:func:`omp_unset_lock` + + +.. c:function:: end_zmq_pull_socket: + + + File : :file:`zmq/utils.irp.f` + + .. code:: fortran + + subroutine end_zmq_pull_socket(zmq_socket_pull) + + + Terminate socket on which the results are sent. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`zmq_context` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`end_parallel_job` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`omp_set_lock` + * :c:func:`omp_unset_lock` + + +.. c:function:: end_zmq_push_socket: + + + File : :file:`zmq/utils.irp.f` + + .. code:: fortran + + subroutine end_zmq_push_socket(zmq_socket_push,thread) + + + Terminate socket on which the results are sent. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`zmq_context` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`ao_two_e_integrals_erf_in_map_slave` + * :c:func:`ao_two_e_integrals_in_map_slave` + * :c:func:`davidson_run_slave` + * :c:func:`run_pt2_slave` + * :c:func:`run_selection_slave` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`omp_set_lock` + * :c:func:`omp_unset_lock` + + +.. c:function:: end_zmq_sub_socket: + + + File : :file:`zmq/utils.irp.f` + + .. code:: fortran + + subroutine end_zmq_sub_socket(zmq_socket_sub) + + + Terminate socket on which the results are sent. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`zmq_context` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`wait_for_next_state` + * :c:func:`wait_for_state` + * :c:func:`wait_for_states` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`omp_set_lock` + * :c:func:`omp_unset_lock` + + +.. c:function:: end_zmq_to_qp_run_socket: + + + File : :file:`zmq/utils.irp.f` + + .. code:: fortran + + subroutine end_zmq_to_qp_run_socket(zmq_to_qp_run_socket) + + + Terminate the socket from the application to qp_run + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`ao_two_e_integrals_erf_in_map_collector` + * :c:func:`ao_two_e_integrals_erf_in_map_slave` + * :c:func:`ao_two_e_integrals_in_map_collector` + * :c:func:`ao_two_e_integrals_in_map_slave` + * :c:func:`davidson_run_slave` + * :c:func:`end_parallel_job` + * :c:func:`pt2_collector` + * :c:func:`run_pt2_slave` + * :c:func:`run_selection_slave` + * :c:func:`selection_collector` + + +.. c:function:: get_task_from_taskserver: + + + File : :file:`zmq/utils.irp.f` + + .. code:: fortran + + integer function get_task_from_taskserver(zmq_to_qp_run_socket,worker_id,task_id,task) + + + Get a task from the task server + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`zmq_state` + + +.. c:function:: get_tasks_from_taskserver: + + + File : :file:`zmq/utils.irp.f` + + .. code:: fortran + + integer function get_tasks_from_taskserver(zmq_to_qp_run_socket,worker_id,task_id,task,n_tasks) + + + Get multiple tasks from the task server + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`zmq_state` + + +.. c:function:: new_parallel_job: + + + File : :file:`zmq/utils.irp.f` + + .. code:: fortran + + subroutine new_parallel_job(zmq_to_qp_run_socket,zmq_socket_pull,name_in) + + + Start a new parallel job with name 'name'. The slave tasks execute subroutine 'slave' + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`zmq_state` + * :c:data:`zmq_socket_pull_tcp_address` + * :c:data:`zmq_context` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_two_e_integrals_erf_in_map` + * :c:data:`ao_two_e_integrals_in_map` + * :c:func:`h_s2_u_0_nstates_zmq` + * :c:func:`zmq_pt2` + * :c:func:`zmq_selection` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`lowercase` + * :c:func:`omp_set_lock` + * :c:func:`omp_unset_lock` + + +.. c:function:: new_zmq_pair_socket: + + + File : :file:`zmq/utils.irp.f` + + .. code:: fortran + + function new_zmq_pair_socket(bind) + + + Socket on which the collector and the main communicate + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`zmq_socket_pull_tcp_address` + * :c:data:`zmq_context` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`omp_set_lock` + * :c:func:`omp_unset_lock` + + +.. c:function:: new_zmq_pull_socket: + + + File : :file:`zmq/utils.irp.f` + + .. code:: fortran + + function new_zmq_pull_socket() + + + Socket on which the results are sent. If thread is 1, use inproc + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`qp_run_address` + * :c:data:`zmq_socket_pull_tcp_address` + * :c:data:`zmq_context` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`omp_set_lock` + * :c:func:`omp_unset_lock` + * :c:func:`sleep` + + +.. c:function:: new_zmq_push_socket: + + + File : :file:`zmq/utils.irp.f` + + .. code:: fortran + + function new_zmq_push_socket(thread) + + + Socket on which the results are sent. If thread is 1, use inproc + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`zmq_socket_pull_tcp_address` + * :c:data:`zmq_context` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`omp_set_lock` + * :c:func:`omp_unset_lock` + + +.. c:function:: new_zmq_sub_socket: + + + File : :file:`zmq/utils.irp.f` + + .. code:: fortran + + function new_zmq_sub_socket() + + + Socket to read the state published by the Task server + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`zmq_socket_pull_tcp_address` + * :c:data:`zmq_context` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`omp_set_lock` + * :c:func:`omp_unset_lock` + + +.. c:function:: new_zmq_to_qp_run_socket: + + + File : :file:`zmq/utils.irp.f` + + .. code:: fortran + + function new_zmq_to_qp_run_socket() + + + Socket on which the qp_run process replies + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`qp_run_address` + * :c:data:`zmq_context` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`omp_set_lock` + * :c:func:`omp_unset_lock` + + +.. c:function:: reset_zmq_addresses: + + + File : :file:`zmq/utils.irp.f` + + .. code:: fortran + + subroutine reset_zmq_addresses + + + Socket which pulls the results (2) + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`qp_run_address` + * :c:data:`zmq_socket_pull_tcp_address` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`switch_qp_run_to_master` + + +.. c:function:: switch_qp_run_to_master: + + + File : :file:`zmq/utils.irp.f` + + .. code:: fortran + + subroutine switch_qp_run_to_master + + + Address of the master qp_run socket + Example : tcp://130.120.229.139:12345 + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`is_zmq_slave` + * :c:data:`qp_run_address` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`run_slave_cipsi` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`getenv` + * :c:func:`reset_zmq_addresses` + + +.. c:function:: task_done_to_taskserver: + + + File : :file:`zmq/utils.irp.f` + + .. code:: fortran + + integer function task_done_to_taskserver(zmq_to_qp_run_socket, worker_id, task_id) + + + Get a task from the task server + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`zmq_state` + + +.. c:function:: tasks_done_to_taskserver: + + + File : :file:`zmq/utils.irp.f` + + .. code:: fortran + + integer function tasks_done_to_taskserver(zmq_to_qp_run_socket, worker_id, task_id, n_tasks) + + + Get a task from the task server + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`zmq_state` + + +.. c:function:: wait_for_next_state: + + + File : :file:`zmq/utils.irp.f` + + .. code:: fortran + + subroutine wait_for_next_state(state) + + + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`end_zmq_sub_socket` + + +.. c:function:: wait_for_state: + + + File : :file:`zmq/utils.irp.f` + + .. code:: fortran + + subroutine wait_for_state(state_wait,state) + + + Wait for the ZMQ state to be ready + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`end_zmq_sub_socket` + + +.. c:function:: wait_for_states: + + + File : :file:`zmq/utils.irp.f` + + .. code:: fortran + + subroutine wait_for_states(state_wait,state,n) + + + Wait for the ZMQ state to be ready + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`run_slave_main` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`end_zmq_sub_socket` + + +.. c:function:: zmq_abort: + + + File : :file:`zmq/utils.irp.f` + + .. code:: fortran + + integer function zmq_abort(zmq_to_qp_run_socket) + + + Aborts a running parallel computation + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`sleep` + + +.. c:function:: zmq_delete_task: + + + File : :file:`zmq/utils.irp.f` + + .. code:: fortran + + integer function zmq_delete_task(zmq_to_qp_run_socket,zmq_socket_pull,task_id,more) + + + When a task is done, it has to be removed from the list of tasks on the qp_run + queue. This guarantees that the results have been received in the pull. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`zmq_state` + + +.. c:function:: zmq_delete_tasks: + + + File : :file:`zmq/utils.irp.f` + + .. code:: fortran + + integer function zmq_delete_tasks(zmq_to_qp_run_socket,zmq_socket_pull,task_id,n_tasks,more) + + + When a task is done, it has to be removed from the list of tasks on the qp_run + queue. This guarantees that the results have been received in the pull. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`zmq_state` + + +.. c:function:: zmq_delete_tasks_async_recv: + + + File : :file:`zmq/utils.irp.f` + + .. code:: fortran + + integer function zmq_delete_tasks_async_recv(zmq_to_qp_run_socket,zmq_socket_pull,task_id,n_tasks,more) + + + When a task is done, it has to be removed from the list of tasks on the qp_run + queue. This guarantees that the results have been received in the pull. + + +.. c:function:: zmq_delete_tasks_async_send: + + + File : :file:`zmq/utils.irp.f` + + .. code:: fortran + + integer function zmq_delete_tasks_async_send(zmq_to_qp_run_socket,zmq_socket_pull,task_id,n_tasks,more) + + + When a task is done, it has to be removed from the list of tasks on the qp_run + queue. This guarantees that the results have been received in the pull. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`zmq_state` + + +.. c:function:: zmq_get8_dvector: + + + File : :file:`zmq/put_get.irp.f` + + .. code:: fortran + + integer function zmq_get8_dvector(zmq_to_qp_run_socket, worker_id, name, x, size_x) + + + Get a float vector from the qp_run scheduler + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`zmq_state` + * :c:data:`mpi_master` + + +.. c:function:: zmq_get8_ivector: + + + File : :file:`zmq/put_get.irp.f` + + .. code:: fortran + + integer function zmq_get8_ivector(zmq_to_qp_run_socket, worker_id, name, x, size_x) + + + Get a vector of integers from the qp_run scheduler + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`zmq_state` + * :c:data:`mpi_master` + + +.. c:function:: zmq_get_dmatrix: + + + File : :file:`zmq/put_get.irp.f` + + .. code:: fortran + + integer function zmq_get_dmatrix(zmq_to_qp_run_socket, worker_id, name, x, size_x1, size_x2, sze) + + + Get a float vector from the qp_run scheduler + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`zmq_state` + * :c:data:`mpi_master` + + +.. c:function:: zmq_get_dvector: + + + File : :file:`zmq/put_get.irp.f` + + .. code:: fortran + + integer function zmq_get_dvector(zmq_to_qp_run_socket, worker_id, name, x, size_x) + + + Get a float vector from the qp_run scheduler + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`zmq_state` + * :c:data:`mpi_master` + + +.. c:function:: zmq_get_i8matrix: + + + File : :file:`zmq/put_get.irp.f` + + .. code:: fortran + + integer function zmq_get_i8matrix(zmq_to_qp_run_socket, worker_id, name, x, size_x1, size_x2, sze) + + + Get a float vector from the qp_run scheduler + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`zmq_state` + * :c:data:`mpi_master` + + +.. c:function:: zmq_get_imatrix: + + + File : :file:`zmq/put_get.irp.f` + + .. code:: fortran + + integer function zmq_get_imatrix(zmq_to_qp_run_socket, worker_id, name, x, size_x1, size_x2, sze) + + + Get a float vector from the qp_run scheduler + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`zmq_state` + * :c:data:`mpi_master` + + +.. c:function:: zmq_get_int: + + + File : :file:`zmq/put_get.irp.f` + + .. code:: fortran + + integer function zmq_get_int(zmq_to_qp_run_socket, worker_id, name, x) + + + Get a vector of integers from the qp_run scheduler + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`zmq_state` + * :c:data:`mpi_master` + + +.. c:function:: zmq_get_int_nompi: + + + File : :file:`zmq/put_get.irp.f` + + .. code:: fortran + + integer function zmq_get_int_nompi(zmq_to_qp_run_socket, worker_id, name, x) + + + Get a vector of integers from the qp_run scheduler + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`zmq_state` + + +.. c:function:: zmq_get_ivector: + + + File : :file:`zmq/put_get.irp.f` + + .. code:: fortran + + integer function zmq_get_ivector(zmq_to_qp_run_socket, worker_id, name, x, size_x) + + + Get a vector of integers from the qp_run scheduler + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`zmq_state` + * :c:data:`mpi_master` + + +.. c:function:: zmq_port: + + + File : :file:`zmq/utils.irp.f` + + .. code:: fortran + + function zmq_port(ishift) + + + Return the value of the ZMQ port from the corresponding integer + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`qp_run_address` + + +.. c:function:: zmq_put8_dvector: + + + File : :file:`zmq/put_get.irp.f` + + .. code:: fortran + + integer function zmq_put8_dvector(zmq_to_qp_run_socket, worker_id, name, x, size_x) + + + Put a float vector on the qp_run scheduler + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`zmq_state` + + +.. c:function:: zmq_put8_ivector: + + + File : :file:`zmq/put_get.irp.f` + + .. code:: fortran + + integer function zmq_put8_ivector(zmq_to_qp_run_socket, worker_id, name, x, size_x) + + + Put a vector of integers on the qp_run scheduler + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`zmq_state` + + +.. c:function:: zmq_put_dmatrix: + + + File : :file:`zmq/put_get.irp.f` + + .. code:: fortran + + integer function zmq_put_dmatrix(zmq_to_qp_run_socket, worker_id, name, x, size_x1, size_x2, sze) + + + Put a float vector on the qp_run scheduler + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`zmq_state` + + +.. c:function:: zmq_put_dvector: + + + File : :file:`zmq/put_get.irp.f` + + .. code:: fortran + + integer function zmq_put_dvector(zmq_to_qp_run_socket, worker_id, name, x, size_x) + + + Put a float vector on the qp_run scheduler + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`zmq_state` + + +.. c:function:: zmq_put_i8matrix: + + + File : :file:`zmq/put_get.irp.f` + + .. code:: fortran + + integer function zmq_put_i8matrix(zmq_to_qp_run_socket, worker_id, name, x, size_x1, size_x2, sze) + + + Put a float vector on the qp_run scheduler + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`zmq_state` + + +.. c:function:: zmq_put_imatrix: + + + File : :file:`zmq/put_get.irp.f` + + .. code:: fortran + + integer function zmq_put_imatrix(zmq_to_qp_run_socket, worker_id, name, x, size_x1, size_x2, sze) + + + Put a float vector on the qp_run scheduler + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`zmq_state` + + +.. c:function:: zmq_put_int: + + + File : :file:`zmq/put_get.irp.f` + + .. code:: fortran + + integer function zmq_put_int(zmq_to_qp_run_socket, worker_id, name, x) + + + Put a vector of integers on the qp_run scheduler + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`zmq_state` + + +.. c:function:: zmq_put_ivector: + + + File : :file:`zmq/put_get.irp.f` + + .. code:: fortran + + integer function zmq_put_ivector(zmq_to_qp_run_socket, worker_id, name, x, size_x) + + + Put a vector of integers on the qp_run scheduler + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`zmq_state` + + +.. c:function:: zmq_set_running: + + + File : :file:`zmq/utils.irp.f` + + .. code:: fortran + + integer function zmq_set_running(zmq_to_qp_run_socket) + + + Set the job to Running in QP-run + diff --git a/doc/_sources/programmers_guide/conventions.rst.txt b/doc/_sources/programmers_guide/conventions.rst.txt new file mode 100644 index 00000000..ecd6d6b0 --- /dev/null +++ b/doc/_sources/programmers_guide/conventions.rst.txt @@ -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`. + diff --git a/doc/_sources/programmers_guide/ezfio.rst.txt b/doc/_sources/programmers_guide/ezfio.rst.txt new file mode 100644 index 00000000..e96883bb --- /dev/null +++ b/doc/_sources/programmers_guide/ezfio.rst.txt @@ -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:: [] + + The name of the provider in irp.f90 and in the EZFIO lib + +.. option:: doc: + + The plain text documentation + +.. option:: type: + + 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: + + 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: + + The default value needed if ``ocaml`` is in interface list. + No default can be set for arrays. + +.. option:: size: + + 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: + + The name in the |EZFIO| API (by default is ````) + + +\*.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) + + + + + + + diff --git a/doc/_sources/programmers_guide/index.rst.txt b/doc/_sources/programmers_guide/index.rst.txt new file mode 100644 index 00000000..2bfd9282 --- /dev/null +++ b/doc/_sources/programmers_guide/index.rst.txt @@ -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 + + + diff --git a/doc/_sources/programmers_guide/index_providers.rst.txt b/doc/_sources/programmers_guide/index_providers.rst.txt new file mode 100644 index 00000000..1b296fff --- /dev/null +++ b/doc/_sources/programmers_guide/index_providers.rst.txt @@ -0,0 +1,1404 @@ +Index of Providers +------------------ + +* :c:data:`abs_psi_coef_max` +* :c:data:`abs_psi_coef_min` +* :c:data:`act_bitmask` +* :c:data:`alpha_knowles` +* :c:data:`angular_quadrature_points` +* :c:data:`ao_cart_to_sphe_coef` +* :c:data:`ao_cart_to_sphe_inv` +* :c:data:`ao_cart_to_sphe_num` +* :c:data:`ao_cart_to_sphe_overlap` +* :c:data:`ao_cartesian` +* :c:data:`ao_coef` +* :c:data:`ao_coef_normalization_factor` +* :c:data:`ao_coef_normalization_libint_factor` +* :c:data:`ao_coef_normalized` +* :c:data:`ao_coef_normalized_ordered` +* :c:data:`ao_coef_normalized_ordered_transp` +* :c:data:`ao_coef_normalized_ordered_transp_per_nucl` +* :c:data:`ao_deriv2_x` +* :c:data:`ao_deriv2_y` +* :c:data:`ao_deriv2_z` +* :c:data:`ao_deriv_1_x` +* :c:data:`ao_deriv_1_y` +* :c:data:`ao_deriv_1_z` +* :c:data:`ao_dipole_x` +* :c:data:`ao_dipole_y` +* :c:data:`ao_dipole_z` +* :c:data:`ao_effective_one_e_potential` +* :c:data:`ao_effective_one_e_potential_without_kin` +* :c:data:`ao_expo` +* :c:data:`ao_expo_ordered` +* :c:data:`ao_expo_ordered_transp` +* :c:data:`ao_expo_ordered_transp_per_nucl` +* :c:data:`ao_integrals_cache` +* :c:data:`ao_integrals_cache_max` +* :c:data:`ao_integrals_cache_min` +* :c:data:`ao_integrals_erf_cache` +* :c:data:`ao_integrals_erf_cache_max` +* :c:data:`ao_integrals_erf_cache_min` +* :c:data:`ao_integrals_erf_map` +* :c:data:`ao_integrals_map` +* :c:data:`ao_integrals_n_e` +* :c:data:`ao_integrals_n_e_per_atom` +* :c:data:`ao_integrals_threshold` +* :c:data:`ao_kinetic_integrals` +* :c:data:`ao_l` +* :c:data:`ao_l_char` +* :c:data:`ao_l_char_space` +* :c:data:`ao_l_max` +* :c:data:`ao_md5` +* :c:data:`ao_nucl` +* :c:data:`ao_num` +* :c:data:`ao_one_e_integrals` +* :c:data:`ao_one_e_integrals_diag` +* :c:data:`ao_ortho_canonical_coef` +* :c:data:`ao_ortho_canonical_coef_inv` +* :c:data:`ao_ortho_canonical_nucl_elec_integrals` +* :c:data:`ao_ortho_canonical_num` +* :c:data:`ao_ortho_canonical_overlap` +* :c:data:`ao_ortho_lowdin_coef` +* :c:data:`ao_ortho_lowdin_nucl_elec_integrals` +* :c:data:`ao_ortho_lowdin_overlap` +* :c:data:`ao_overlap` +* :c:data:`ao_overlap_abs` +* :c:data:`ao_overlap_x` +* :c:data:`ao_overlap_y` +* :c:data:`ao_overlap_z` +* :c:data:`ao_potential_alpha_xc` +* :c:data:`ao_potential_beta_xc` +* :c:data:`ao_power` +* :c:data:`ao_power_ordered_transp_per_nucl` +* :c:data:`ao_prim_num` +* :c:data:`ao_prim_num_max` +* :c:data:`ao_pseudo_integrals` +* :c:data:`ao_pseudo_integrals_local` +* :c:data:`ao_pseudo_integrals_non_local` +* :c:data:`ao_spread_x` +* :c:data:`ao_spread_y` +* :c:data:`ao_spread_z` +* :c:data:`ao_two_e_integral_alpha` +* :c:data:`ao_two_e_integral_beta` +* :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:`aos_dsr_vc_alpha_pbe_w` +* :c:data:`aos_dsr_vc_beta_pbe_w` +* :c:data:`aos_dsr_vx_alpha_pbe_w` +* :c:data:`aos_dsr_vx_beta_pbe_w` +* :c:data:`aos_dvc_alpha_pbe_w` +* :c:data:`aos_dvc_beta_pbe_w` +* :c:data:`aos_dvx_alpha_pbe_w` +* :c:data:`aos_dvx_beta_pbe_w` +* :c:data:`aos_grad_in_r_array` +* :c:data:`aos_grad_in_r_array_transp` +* :c:data:`aos_grad_in_r_array_transp_xyz` +* :c:data:`aos_in_r_array` +* :c:data:`aos_in_r_array_transp` +* :c:data:`aos_lapl_in_r_array` +* :c:data:`aos_lapl_in_r_array_transp` +* :c:data:`aos_sr_vc_alpha_lda_w` +* :c:data:`aos_sr_vc_alpha_pbe_w` +* :c:data:`aos_sr_vc_beta_lda_w` +* :c:data:`aos_sr_vc_beta_pbe_w` +* :c:data:`aos_sr_vx_alpha_lda_w` +* :c:data:`aos_sr_vx_alpha_pbe_w` +* :c:data:`aos_sr_vx_beta_lda_w` +* :c:data:`aos_sr_vx_beta_pbe_w` +* :c:data:`aos_vc_alpha_lda_w` +* :c:data:`aos_vc_alpha_pbe_w` +* :c:data:`aos_vc_beta_lda_w` +* :c:data:`aos_vc_beta_pbe_w` +* :c:data:`aos_vx_alpha_lda_w` +* :c:data:`aos_vx_alpha_pbe_w` +* :c:data:`aos_vx_beta_lda_w` +* :c:data:`aos_vx_beta_pbe_w` +* :c:data:`barycentric_electronic_energy` +* :c:data:`big_array_coulomb_integrals` +* :c:data:`big_array_exchange_integrals` +* :c:data:`binom` +* :c:data:`binom_int` +* :c:data:`binom_int_transp` +* :c:data:`binom_transp` +* :c:data:`c0_weight` +* :c:data:`cart_to_sphe_0` +* :c:data:`cart_to_sphe_1` +* :c:data:`cart_to_sphe_2` +* :c:data:`cart_to_sphe_3` +* :c:data:`cart_to_sphe_4` +* :c:data:`cart_to_sphe_5` +* :c:data:`cart_to_sphe_6` +* :c:data:`cart_to_sphe_7` +* :c:data:`cart_to_sphe_8` +* :c:data:`cart_to_sphe_9` +* :c:data:`cas_bitmask` +* :c:data:`center_of_mass` +* :c:data:`ci_eigenvectors` +* :c:data:`ci_electronic_energy` +* :c:data:`ci_energy` +* :c:data:`ci_s2` +* :c:data:`closed_shell_ref_bitmask` +* :c:data:`coef_hf_selector` +* :c:data:`core_bitmask` +* :c:data:`core_energy` +* :c:data:`core_energy_erf` +* :c:data:`core_fock_operator` +* :c:data:`core_fock_operator_erf` +* :c:data:`core_inact_act_bitmask_4` +* :c:data:`core_inact_virt_bitmask` +* :c:data:`correlation_energy_ratio_max` +* :c:data:`correlation_functional` +* :c:data:`damping_for_rs_dft` +* :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_criterion` +* :c:data:`davidson_sze_max` +* :c:data:`degree_max_generators` +* :c:data:`degree_max_integration_lebedev` +* :c:data:`del_bitmask` +* :c:data:`delta_e_per_selector` +* :c:data:`density_for_dft` +* :c:data:`det_alpha_norm` +* :c:data:`det_beta_norm` +* :c:data:`det_to_occ_pattern` +* :c:data:`dft_type` +* :c:data:`diag_algorithm` +* :c:data:`diagonal_h_matrix_on_psi_det` +* :c:data:`dim_list_act_orb` +* :c:data:`dim_list_core_orb` +* :c:data:`dim_list_del_orb` +* :c:data:`dim_list_inact_orb` +* :c:data:`dim_list_virt_orb` +* :c:data:`disk_access_nuclear_repulsion` +* :c:data:`disk_based_davidson` +* :c:data:`distributed_davidson` +* :c:data:`do_ddci` +* :c:data:`do_direct_integrals` +* :c:data:`do_only_1h1p` +* :c:data:`do_pseudo` +* :c:data:`do_pt2` +* :c:data:`double_exc_bitmask` +* :c:data:`double_index_selectors` +* :c:data:`dr_radial_integral` +* :c:data:`dressed_column_idx` +* :c:data:`dressing_column_h` +* :c:data:`dressing_column_s` +* :c:data:`dtranspose` +* :c:data:`e_corr_double_only` +* :c:data:`e_corr_per_selectors` +* :c:data:`e_corr_second_order` +* :c:data:`e_correlation_dft` +* :c:data:`e_exchange_dft` +* :c:data:`effective_one_e_potential` +* :c:data:`effective_one_e_potential_without_kin` +* :c:data:`eigenvalues_fock_matrix_ao` +* :c:data:`eigenvectors_fock_matrix_ao` +* :c:data:`eigenvectors_fock_matrix_mo` +* :c:data:`elec_alpha_num` +* :c:data:`elec_beta_num` +* :c:data:`elec_num` +* :c:data:`elec_num_tab` +* :c:data:`element_mass` +* :c:data:`element_name` +* :c:data:`energy_c` +* :c:data:`energy_c_lda` +* :c:data:`energy_c_pbe` +* :c:data:`energy_iterations` +* :c:data:`energy_sr_c_lda` +* :c:data:`energy_sr_c_pbe` +* :c:data:`energy_sr_x_lda` +* :c:data:`energy_sr_x_pbe` +* :c:data:`energy_x` +* :c:data:`energy_x_lda` +* :c:data:`energy_x_pbe` +* :c:data:`exc_degree_per_selectors` +* :c:data:`exchange_functional` +* :c:data:`expected_s2` +* :c:data:`extra_e_contrib_density` +* :c:data:`extrapolate_fock_matrix` +* :c:data:`extrapolated_energy` +* :c:data:`ezfio_filename` +* :c:data:`ezfio_work_dir` +* :c:data:`fact_inv` +* :c:data:`file_lock` +* :c:data:`fill_h_apply_buffer_selection` +* :c:data:`final_grid_points` +* :c:data:`final_weight_at_r` +* :c:data:`final_weight_at_r_vector` +* :c:data:`fock_matrix_alpha_no_xc_ao` +* :c:data:`fock_matrix_ao` +* :c:data:`fock_matrix_ao_alpha` +* :c:data:`fock_matrix_ao_beta` +* :c:data:`fock_matrix_beta_no_xc_ao` +* :c:data:`fock_matrix_diag_mo` +* :c:data:`fock_matrix_energy` +* :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_ao` +* :c:data:`fps_spf_matrix_mo` +* :c:data:`frozen_orb_scf` +* :c:data:`full_ijkl_bitmask` +* :c:data:`full_ijkl_bitmask_4` +* :c:data:`gauleg_t2` +* :c:data:`gauleg_w` +* :c:data:`general_primitive_integral` +* :c:data:`general_primitive_integral_erf` +* :c:data:`generators_bitmask` +* :c:data:`generators_bitmask_restart` +* :c:data:`gga_sr_type_functionals` +* :c:data:`gga_type_functionals` +* :c:data:`give_polynomial_mult_center_one_e_erf` +* :c:data:`give_polynomial_mult_center_one_e_erf_opt` +* :c:data:`grad_aos_dsr_vc_alpha_pbe_w` +* :c:data:`grad_aos_dsr_vc_beta_pbe_w` +* :c:data:`grad_aos_dsr_vx_alpha_pbe_w` +* :c:data:`grad_aos_dsr_vx_beta_pbe_w` +* :c:data:`grad_aos_dvc_alpha_pbe_w` +* :c:data:`grad_aos_dvc_beta_pbe_w` +* :c:data:`grad_aos_dvx_alpha_pbe_w` +* :c:data:`grad_aos_dvx_beta_pbe_w` +* :c:data:`grid_points_per_atom` +* :c:data:`grid_points_radial` +* :c:data:`grid_type_sgn` +* :c:data:`h0_type` +* :c:data:`h_apply_buffer_allocated` +* :c:data:`h_apply_buffer_lock` +* :c:data:`h_matrix_all_dets` +* :c:data:`h_matrix_cas` +* :c:data:`hf_bitmask` +* :c:data:`hf_energy` +* :c:data:`hf_exchange` +* :c:data:`hf_one_electron_energy` +* :c:data:`hf_two_electron_energy` +* :c:data:`i2radix_sort` +* :c:data:`i8radix_sort` +* :c:data:`i8radix_sort_big` +* :c:data:`i_bitmask_gen` +* :c:data:`i_h_hf_per_selectors` +* :c:data:`i_x1_new` +* :c:data:`i_x1_pol_mult_a1` +* :c:data:`i_x1_pol_mult_a2` +* :c:data:`i_x1_pol_mult_one_e` +* :c:data:`i_x1_pol_mult_recurs` +* :c:data:`i_x2_new` +* :c:data:`i_x2_pol_mult` +* :c:data:`i_x2_pol_mult_one_e` +* :c:data:`idx_cas` +* :c:data:`idx_non_cas` +* :c:data:`inact_bitmask` +* :c:data:`inact_virt_bitmask` +* :c:data:`index_final_points` +* :c:data:`index_final_points_reverse` +* :c:data:`index_holes_bitmask` +* :c:data:`index_particl_bitmask` +* :c:data:`inertia_tensor` +* :c:data:`inertia_tensor_eigenvalues` +* :c:data:`inertia_tensor_eigenvectors` +* :c:data:`initialize_pt2_e0_denominator` +* :c:data:`insert_into_mo_integrals_erf_map` +* :c:data:`insert_into_mo_integrals_map` +* :c:data:`int_erf_3_index` +* :c:data:`int_erf_3_index_exc` +* :c:data:`inv_int` +* :c:data:`inv_selectors_coef_hf` +* :c:data:`inv_selectors_coef_hf_squared` +* :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:`iradix_sort` +* :c:data:`iradix_sort_big` +* :c:data:`is_zmq_slave` +* :c:data:`ks_energy` +* :c:data:`l_to_charater` +* :c:data:`level_shift` +* :c:data:`list_act` +* :c:data:`list_act_reverse` +* :c:data:`list_core` +* :c:data:`list_core_inact_act` +* :c:data:`list_core_inact_act_reverse` +* :c:data:`list_core_reverse` +* :c:data:`list_del` +* :c:data:`list_del_reverse` +* :c:data:`list_inact` +* :c:data:`list_inact_reverse` +* :c:data:`list_virt` +* :c:data:`list_virt_reverse` +* :c:data:`m_knowles` +* :c:data:`max_degree_exc` +* :c:data:`max_dim_diis` +* :c:data:`max_exc_pert` +* :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_dipole_y` +* :c:data:`mo_dipole_z` +* :c:data:`mo_guess_type` +* :c:data:`mo_integrals_cache` +* :c:data:`mo_integrals_cache_max` +* :c:data:`mo_integrals_cache_max_8` +* :c:data:`mo_integrals_cache_min` +* :c:data:`mo_integrals_cache_min_8` +* :c:data:`mo_integrals_erf_cache` +* :c:data:`mo_integrals_erf_cache_max` +* :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_integrals_threshold` +* :c:data:`mo_kinetic_integrals` +* :c:data:`mo_label` +* :c:data:`mo_num` +* :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_spread_y` +* :c:data:`mo_spread_z` +* :c:data:`mo_two_e_int_erf_jj` +* :c:data:`mo_two_e_int_erf_jj_anti` +* :c:data:`mo_two_e_int_erf_jj_anti_from_ao` +* :c:data:`mo_two_e_int_erf_jj_exchange` +* :c:data:`mo_two_e_int_erf_jj_exchange_from_ao` +* :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_jj_anti` +* :c:data:`mo_two_e_integrals_jj_anti_from_ao` +* :c:data:`mo_two_e_integrals_jj_exchange` +* :c:data:`mo_two_e_integrals_jj_exchange_from_ao` +* :c:data:`mo_two_e_integrals_vv_anti_from_ao` +* :c:data:`mo_two_e_integrals_vv_exchange_from_ao` +* :c:data:`mo_two_e_integrals_vv_from_ao` +* :c:data:`mos_grad_in_r_array` +* :c:data:`mos_in_r_array` +* :c:data:`mos_in_r_array_transp` +* :c:data:`mos_lapl_in_r_array` +* :c:data:`mpi_bit_kind` +* :c:data:`mpi_initialized` +* :c:data:`mpi_master` +* :c:data:`mpi_rank` +* :c:data:`mpi_size` +* :c:data:`mu_erf` +* :c:data:`mu_erf_dft` +* :c:data:`n_act_orb` +* :c:data:`n_aos_max` +* :c:data:`n_cas_bitmask` +* :c:data:`n_core_inact_act_orb` +* :c:data:`n_core_inact_orb` +* :c:data:`n_core_orb` +* :c:data:`n_core_orb_allocate` +* :c:data:`n_del_orb` +* :c:data:`n_det` +* :c:data:`n_det_alpha_unique` +* :c:data:`n_det_beta_unique` +* :c:data:`n_det_cas` +* :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_non_cas` +* :c:data:`n_det_print_wf` +* :c:data:`n_det_selectors` +* :c:data:`n_double_exc_bitmasks` +* :c:data:`n_double_selectors` +* :c:data:`n_generators_bitmask` +* :c:data:`n_generators_bitmask_restart` +* :c:data:`n_inact_orb` +* :c:data:`n_inact_orb_allocate` +* :c:data:`n_int` +* :c:data:`n_it_scf_max` +* :c:data:`n_iter` +* :c:data:`n_occ_pattern` +* :c:data:`n_points_final_grid` +* :c:data:`n_points_grid_per_atom` +* :c:data:`n_points_integration_angular` +* :c:data:`n_points_integration_angular_lebedev` +* :c:data:`n_points_radial_grid` +* :c:data:`n_pt_max_i_x` +* :c:data:`n_pt_max_integrals` +* :c:data:`n_single_exc_bitmasks` +* :c:data:`n_states` +* :c:data:`n_states_diag` +* :c:data:`n_virt_orb` +* :c:data:`n_virt_orb_allocate` +* :c:data:`no_ivvv_integrals` +* :c:data:`no_vvv_integrals` +* :c:data:`no_vvvv_integrals` +* :c:data:`nproc` +* :c:data:`nthreads_davidson` +* :c:data:`nthreads_pt2` +* :c:data:`nucl_aos` +* :c:data:`nucl_aos_transposed` +* :c:data:`nucl_charge` +* :c:data:`nucl_charge_remove` +* :c:data:`nucl_coord` +* :c:data:`nucl_coord_transp` +* :c:data:`nucl_dist` +* :c:data:`nucl_dist_2` +* :c:data:`nucl_dist_inv` +* :c:data:`nucl_dist_vec_x` +* :c:data:`nucl_dist_vec_y` +* :c:data:`nucl_dist_vec_z` +* :c:data:`nucl_label` +* :c:data:`nucl_list_shell_aos` +* :c:data:`nucl_n_aos` +* :c:data:`nucl_num` +* :c:data:`nucl_num_shell_aos` +* :c:data:`nuclear_repulsion` +* :c:data:`one_body_dm_mo_alpha_one_det` +* :c:data:`one_body_dm_mo_beta_one_det` +* :c:data:`one_e_dm_alpha_ao_for_dft` +* :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:data:`one_e_dm_and_grad_beta_in_r` +* :c:data:`one_e_dm_ao_alpha` +* :c:data:`one_e_dm_ao_beta` +* :c:data:`one_e_dm_average_mo_for_dft` +* :c:data:`one_e_dm_beta_ao_for_dft` +* :c:data:`one_e_dm_beta_at_r` +* :c:data:`one_e_dm_beta_in_r` +* :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_alpha_for_dft` +* :c:data:`one_e_dm_mo_beta` +* :c:data:`one_e_dm_mo_beta_average` +* :c:data:`one_e_dm_mo_beta_for_dft` +* :c:data:`one_e_dm_mo_diff` +* :c:data:`one_e_dm_mo_for_dft` +* :c:data:`one_e_dm_mo_spin_index` +* :c:data:`one_e_energy` +* :c:data:`one_e_grad_2_dm_alpha_at_r` +* :c:data:`one_e_grad_2_dm_beta_at_r` +* :c:data:`one_e_spin_density_ao` +* :c:data:`one_e_spin_density_mo` +* :c:data:`only_expected_s2` +* :c:data:`output_cpu_time_0` +* :c:data:`output_wall_time_0` +* :c:data:`overlap_gaussian_xyz` +* :c:data:`phi_angular_integration_lebedev` +* :c:data:`potential_c_alpha_ao` +* :c:data:`potential_c_alpha_ao_lda` +* :c:data:`potential_c_alpha_ao_pbe` +* :c:data:`potential_c_alpha_mo` +* :c:data:`potential_c_beta_ao` +* :c:data:`potential_c_beta_ao_lda` +* :c:data:`potential_c_beta_ao_pbe` +* :c:data:`potential_c_beta_mo` +* :c:data:`potential_sr_c_alpha_ao_lda` +* :c:data:`potential_sr_c_alpha_ao_pbe` +* :c:data:`potential_sr_c_beta_ao_lda` +* :c:data:`potential_sr_c_beta_ao_pbe` +* :c:data:`potential_sr_x_alpha_ao_lda` +* :c:data:`potential_sr_x_alpha_ao_pbe` +* :c:data:`potential_sr_x_beta_ao_lda` +* :c:data:`potential_sr_x_beta_ao_pbe` +* :c:data:`potential_x_alpha_ao` +* :c:data:`potential_x_alpha_ao_lda` +* :c:data:`potential_x_alpha_ao_pbe` +* :c:data:`potential_x_alpha_mo` +* :c:data:`potential_x_beta_ao` +* :c:data:`potential_x_beta_ao_lda` +* :c:data:`potential_x_beta_ao_pbe` +* :c:data:`potential_x_beta_mo` +* :c:data:`pseudo_dz_k` +* :c:data:`pseudo_dz_k_transp` +* :c:data:`pseudo_dz_kl` +* :c:data:`pseudo_dz_kl_transp` +* :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_k_transp` +* :c:data:`pseudo_n_kl` +* :c:data:`pseudo_n_kl_transp` +* :c:data:`pseudo_v_k` +* :c:data:`pseudo_v_k_transp` +* :c:data:`pseudo_v_kl` +* :c:data:`pseudo_v_kl_transp` +* :c:data:`psi_average_norm_contrib` +* :c:data:`psi_average_norm_contrib_sorted` +* :c:data:`psi_bilinear_matrix` +* :c:data:`psi_bilinear_matrix_columns` +* :c:data:`psi_bilinear_matrix_columns_loc` +* :c:data:`psi_bilinear_matrix_order` +* :c:data:`psi_bilinear_matrix_order_reverse` +* :c:data:`psi_bilinear_matrix_order_transp_reverse` +* :c:data:`psi_bilinear_matrix_rows` +* :c:data:`psi_bilinear_matrix_transp_columns` +* :c:data:`psi_bilinear_matrix_transp_order` +* :c:data:`psi_bilinear_matrix_transp_rows` +* :c:data:`psi_bilinear_matrix_transp_rows_loc` +* :c:data:`psi_bilinear_matrix_transp_values` +* :c:data:`psi_bilinear_matrix_values` +* :c:data:`psi_cas` +* :c:data:`psi_cas_coef` +* :c:data:`psi_cas_coef_sorted_bit` +* :c:data:`psi_cas_energy` +* :c:data:`psi_cas_energy_diagonalized` +* :c:data:`psi_cas_sorted_bit` +* :c:data:`psi_coef` +* :c:data:`psi_coef_cas_diagonalized` +* :c:data:`psi_coef_generators` +* :c:data:`psi_coef_max` +* :c:data:`psi_coef_min` +* :c:data:`psi_coef_sorted` +* :c:data:`psi_coef_sorted_bit` +* :c:data:`psi_coef_sorted_gen` +* :c:data:`psi_det` +* :c:data:`psi_det_alpha` +* :c:data:`psi_det_alpha_unique` +* :c:data:`psi_det_beta` +* :c:data:`psi_det_beta_unique` +* :c:data:`psi_det_generators` +* :c:data:`psi_det_hii` +* :c:data:`psi_det_size` +* :c:data:`psi_det_sorted` +* :c:data:`psi_det_sorted_bit` +* :c:data:`psi_det_sorted_gen` +* :c:data:`psi_det_sorted_gen_order` +* :c:data:`psi_det_sorted_order` +* :c:data:`psi_dft_energy_h_core` +* :c:data:`psi_dft_energy_kinetic` +* :c:data:`psi_dft_energy_nuclear_elec` +* :c:data:`psi_energy` +* :c:data:`psi_energy_h_core` +* :c:data:`psi_energy_two_e` +* :c:data:`psi_energy_with_nucl_rep` +* :c:data:`psi_non_cas` +* :c:data:`psi_non_cas_coef` +* :c:data:`psi_non_cas_coef_sorted_bit` +* :c:data:`psi_non_cas_sorted_bit` +* :c:data:`psi_occ_pattern` +* :c:data:`psi_occ_pattern_hii` +* :c:data:`psi_s2` +* :c:data:`psi_selectors` +* :c:data:`psi_selectors_coef` +* :c:data:`psi_selectors_coef_transp` +* :c:data:`psi_selectors_diag_h_mat` +* :c:data:`psi_selectors_size` +* :c:data:`pt2_collector` +* :c:data:`pt2_cw` +* :c:data:`pt2_e0_denominator` +* :c:data:`pt2_f` +* :c:data:`pt2_iterations` +* :c:data:`pt2_j` +* :c:data:`pt2_max` +* :c:data:`pt2_mindetinfirstteeth` +* :c:data:`pt2_n_0` +* :c:data:`pt2_n_tasks` +* :c:data:`pt2_n_tasks_max` +* :c:data:`pt2_n_teeth` +* :c:data:`pt2_r` +* :c:data:`pt2_relative_error` +* :c:data:`pt2_stoch_istate` +* :c:data:`pt2_u` +* :c:data:`pt2_u_0` +* :c:data:`pt2_w` +* :c:data:`pt2_w_t` +* :c:data:`qp_kill_filename` +* :c:data:`qp_max_mem` +* :c:data:`qp_run_address` +* :c:data:`qp_stop_filename` +* :c:data:`qp_stop_variable` +* :c:data:`read_ao_integrals_e_n` +* :c:data:`read_ao_integrals_kinetic` +* :c:data:`read_ao_integrals_overlap` +* :c:data:`read_ao_integrals_pseudo` +* :c:data:`read_ao_one_e_integrals` +* :c:data:`read_ao_two_e_integrals` +* :c:data:`read_ao_two_e_integrals_erf` +* :c:data:`read_mo_integrals_e_n` +* :c:data:`read_mo_integrals_kinetic` +* :c:data:`read_mo_integrals_pseudo` +* :c:data:`read_mo_one_e_integrals` +* :c:data:`read_mo_two_e_integrals` +* :c:data:`read_mo_two_e_integrals_erf` +* :c:data:`read_nuclear_repulsion` +* :c:data:`read_wf` +* :c:data:`rec__quicksort` +* :c:data:`rec_d_quicksort` +* :c:data:`rec_i2_quicksort` +* :c:data:`rec_i8_quicksort` +* :c:data:`rec_i_quicksort` +* :c:data:`ref_bitmask` +* :c:data:`ref_bitmask_e_n_energy` +* :c:data:`ref_bitmask_energy` +* :c:data:`ref_bitmask_kinetic_energy` +* :c:data:`ref_bitmask_one_e_energy` +* :c:data:`ref_bitmask_two_e_energy` +* :c:data:`ref_closed_shell_bitmask` +* :c:data:`reunion_of_bitmask` +* :c:data:`reunion_of_cas_inact_bitmask` +* :c:data:`reunion_of_core_inact_act_bitmask` +* :c:data:`reunion_of_core_inact_bitmask` +* :c:data:`rs_ks_energy` +* :c:data:`s2_eig` +* :c:data:`s2_matrix_all_dets` +* :c:data:`s2_values` +* :c:data:`s_half` +* :c:data:`s_half_inv` +* :c:data:`s_inv` +* :c:data:`s_mo_coef` +* :c:data:`s_z` +* :c:data:`s_z2_sz` +* :c:data:`scf_algorithm` +* :c:data:`scf_density_matrix_ao` +* :c:data:`scf_density_matrix_ao_alpha` +* :c:data:`scf_density_matrix_ao_beta` +* :c:data:`scf_energy` +* :c:data:`select_max` +* :c:data:`selection_criterion` +* :c:data:`selection_criterion_factor` +* :c:data:`selection_criterion_min` +* :c:data:`selection_weight` +* :c:data:`shifting_constant` +* :c:data:`short_range_hartree` +* :c:data:`short_range_hartree_operator` +* :c:data:`single_exc_bitmask` +* :c:data:`singles_alpha_csc` +* :c:data:`singles_alpha_csc_idx` +* :c:data:`singles_alpha_csc_size` +* :c:data:`singles_beta_csc` +* :c:data:`singles_beta_csc_idx` +* :c:data:`singles_beta_csc_size` +* :c:data:`size_select_max` +* :c:data:`slater_bragg_radii` +* :c:data:`slater_bragg_radii_per_atom` +* :c:data:`slater_bragg_radii_per_atom_ua` +* :c:data:`slater_bragg_radii_ua` +* :c:data:`slater_bragg_type_inter_distance` +* :c:data:`slater_bragg_type_inter_distance_ua` +* :c:data:`state_average_weight` +* :c:data:`state_following` +* :c:data:`target_energy` +* :c:data:`theta_angular_integration_lebedev` +* :c:data:`thresh_scf` +* :c:data:`threshold_davidson` +* :c:data:`threshold_diis` +* :c:data:`threshold_diis_nonzero` +* :c:data:`threshold_generators` +* :c:data:`threshold_selectors` +* :c:data:`trace_potential_xc` +* :c:data:`trace_v_h` +* :c:data:`trace_v_hxc` +* :c:data:`trace_v_xc` +* :c:data:`transpose` +* :c:data:`two_e_energy` +* :c:data:`unpaired_alpha_electrons` +* :c:data:`used_weight` +* :c:data:`var_pt2_ratio` +* :c:data:`virt_bitmask` +* :c:data:`virt_bitmask_4` +* :c:data:`weight_at_r` +* :c:data:`weight_occ_pattern` +* :c:data:`weights_angular_integration_lebedev` +* :c:data:`weights_angular_points` +* :c:data:`write_ao_integrals_e_n` +* :c:data:`write_ao_integrals_kinetic` +* :c:data:`write_ao_integrals_overlap` +* :c:data:`write_ao_integrals_pseudo` +* :c:data:`write_ao_one_e_integrals` +* :c:data:`write_ao_two_e_integrals` +* :c:data:`write_ao_two_e_integrals_erf` +* :c:data:`write_mo_integrals_e_n` +* :c:data:`write_mo_integrals_kinetic` +* :c:data:`write_mo_integrals_pseudo` +* :c:data:`write_mo_one_e_integrals` +* :c:data:`write_mo_two_e_integrals` +* :c:data:`write_mo_two_e_integrals_erf` +* :c:data:`write_nuclear_repulsion` +* :c:data:`zmq_context` +* :c:data:`zmq_lock` +* :c:data:`zmq_port_start` +* :c:data:`zmq_socket_pair_inproc_address` +* :c:data:`zmq_socket_pull_inproc_address` +* :c:data:`zmq_socket_pull_tcp_address` +* :c:data:`zmq_socket_push_inproc_address` +* :c:data:`zmq_socket_push_tcp_address` +* :c:data:`zmq_socket_sub_tcp_address` +* :c:data:`zmq_state` + +Index of Subroutines/Functions +------------------------------ + +* :c:func:`a_coef` +* :c:func:`a_operator` +* :c:func:`a_operator_two_e` +* :c:func:`ac_operator` +* :c:func:`ac_operator_two_e` +* :c:func:`add_integrals_to_map` +* :c:func:`add_integrals_to_map_erf` +* :c:func:`add_integrals_to_map_no_exit_34` +* :c:func:`add_integrals_to_map_three_indices` +* :c:func:`add_poly` +* :c:func:`add_poly_multiply` +* :c:func:`add_task_to_taskserver` +* :c:func:`add_to_selection_buffer` +* :c:func:`ao_l4` +* :c:func:`ao_ortho_cano_to_ao` +* :c:func:`ao_power_index` +* :c:func:`ao_to_mo` +* :c:func:`ao_two_e_integral` +* :c:func:`ao_two_e_integral_erf` +* :c:func:`ao_two_e_integral_schwartz_accel` +* :c:func:`ao_two_e_integral_schwartz_accel_erf` +* :c:func:`ao_two_e_integrals_erf_in_map_collector` +* :c:func:`ao_two_e_integrals_erf_in_map_slave` +* :c:func:`ao_two_e_integrals_erf_in_map_slave_inproc` +* :c:func:`ao_two_e_integrals_erf_in_map_slave_tcp` +* :c:func:`ao_two_e_integrals_in_map_collector` +* :c:func:`ao_two_e_integrals_in_map_slave` +* :c:func:`ao_two_e_integrals_in_map_slave_inproc` +* :c:func:`ao_two_e_integrals_in_map_slave_tcp` +* :c:func:`ao_value` +* :c:func:`apply_excitation` +* :c:func:`apply_hole` +* :c:func:`apply_holes` +* :c:func:`apply_particle` +* :c:func:`apply_particles` +* :c:func:`apply_rotation` +* :c:func:`approx_dble` +* :c:func:`b_coef` +* :c:func:`berf` +* :c:func:`binom_func` +* :c:func:`bitstring_to_hexa` +* :c:func:`bitstring_to_list` +* :c:func:`bitstring_to_list_ab` +* :c:func:`bitstring_to_list_in_selection` +* :c:func:`bitstring_to_str` +* :c:func:`broadcast_chunks_bit_kind` +* :c:func:`broadcast_chunks_double` +* :c:func:`broadcast_chunks_integer` +* :c:func:`broadcast_chunks_integer8` +* :c:func:`build_fock_tmp` +* :c:func:`cell_function_becke` +* :c:func:`check_coherence_functional` +* :c:func:`check_mem` +* :c:func:`cis` +* :c:func:`cisd` +* :c:func:`clear_ao_erf_map` +* :c:func:`clear_ao_map` +* :c:func:`clear_bit_to_integer` +* :c:func:`clear_mo_erf_map` +* :c:func:`clear_mo_map` +* :c:func:`compute_ao_integrals_erf_jl` +* :c:func:`compute_ao_integrals_jl` +* :c:func:`compute_ao_two_e_integrals` +* :c:func:`compute_ao_two_e_integrals_erf` +* :c:func:`connect_to_taskserver` +* :c:func:`connected_to_ref` +* :c:func:`connected_to_ref_by_mono` +* :c:func:`copy_h_apply_buffer_to_wf` +* :c:func:`copy_psi_bilinear_to_psi` +* :c:func:`create_guess` +* :c:func:`create_microlist` +* :c:func:`create_minilist` +* :c:func:`create_minilist_find_previous` +* :c:func:`create_selection_buffer` +* :c:func:`create_wf_of_psi_bilinear_matrix` +* :c:func:`damping_scf` +* :c:func:`davidson_collector` +* :c:func:`davidson_converged` +* :c:func:`davidson_diag_hjj_sjj` +* :c:func:`davidson_diag_hs2` +* :c:func:`davidson_pull_results` +* :c:func:`davidson_push_results` +* :c:func:`davidson_run_slave` +* :c:func:`davidson_slave_inproc` +* :c:func:`davidson_slave_tcp` +* :c:func:`davidson_slave_work` +* :c:func:`dberfda` +* :c:func:`dble_fact` +* :c:func:`dble_fact_even` +* :c:func:`dble_fact_odd` +* :c:func:`dble_logfact` +* :c:func:`ddfact2` +* :c:func:`debug_det` +* :c:func:`debug_spindet` +* :c:func:`decode_exc` +* :c:func:`decode_exc_spin` +* :c:func:`delete_selection_buffer` +* :c:func:`density_and_grad_alpha_beta_and_all_aos_and_grad_aos_at_r` +* :c:func:`derivative_knowles_function` +* :c:func:`det_inf` +* :c:func:`det_search_key` +* :c:func:`detcmp` +* :c:func:`deteq` +* :c:func:`diag_h_mat_elem` +* :c:func:`diag_h_mat_elem_fock` +* :c:func:`diag_h_mat_elem_one_e` +* :c:func:`diag_s_mat_elem` +* :c:func:`diag_wee_mat_elem` +* :c:func:`diagonalize_ci` +* :c:func:`diagonalize_h` +* :c:func:`disconnect_from_taskserver` +* :c:func:`disconnect_from_taskserver_state` +* :c:func:`dm_dft_alpha_beta_and_all_aos_at_r` +* :c:func:`dm_dft_alpha_beta_at_r` +* :c:func:`do_mono_excitation` +* :c:func:`dpol` +* :c:func:`dpold` +* :c:func:`dpoldd` +* :c:func:`dset_order` +* :c:func:`dset_order_big` +* :c:func:`dsort` +* :c:func:`dump_ao_integrals` +* :c:func:`dump_ao_integrals_erf` +* :c:func:`dump_mo_integrals` +* :c:func:`ec_lda` +* :c:func:`ec_lda_sr` +* :c:func:`ec_only_lda_sr` +* :c:func:`ec_pbe_only` +* :c:func:`ec_pbe_sr` +* :c:func:`ecorrlr` +* :c:func:`ecpw` +* :c:func:`end_parallel_job` +* :c:func:`end_zmq_pair_socket` +* :c:func:`end_zmq_pull_socket` +* :c:func:`end_zmq_push_socket` +* :c:func:`end_zmq_sub_socket` +* :c:func:`end_zmq_to_qp_run_socket` +* :c:func:`erf0` +* :c:func:`eri` +* :c:func:`eri_erf` +* :c:func:`ex_lda` +* :c:func:`ex_lda_sr` +* :c:func:`ex_pbe_sr` +* :c:func:`ex_pbe_sr_only` +* :c:func:`example_becke_numerical_grid` +* :c:func:`example_bitmask` +* :c:func:`example_determinants` +* :c:func:`example_determinants_psi_det` +* :c:func:`extrapolate_data` +* :c:func:`f_function_becke` +* :c:func:`f_integral` +* :c:func:`fact` +* :c:func:`fci` +* :c:func:`fcidump` +* :c:func:`fill_buffer_double` +* :c:func:`fill_h_apply_buffer_no_selection` +* :c:func:`filter_connected` +* :c:func:`filter_connected_i_h_psi0` +* :c:func:`filter_not_connected` +* :c:func:`find_rotation` +* :c:func:`four_idx_transform` +* :c:func:`g0d` +* :c:func:`g0dd` +* :c:func:`g0f` +* :c:func:`gammln` +* :c:func:`gammp` +* :c:func:`gauleg` +* :c:func:`gaussian_product` +* :c:func:`gaussian_product_x` +* :c:func:`gcf` +* :c:func:`generate_all_alpha_beta_det_products` +* :c:func:`get_all_spin_doubles` +* :c:func:`get_all_spin_doubles_1` +* :c:func:`get_all_spin_doubles_2` +* :c:func:`get_all_spin_doubles_3` +* :c:func:`get_all_spin_doubles_4` +* :c:func:`get_all_spin_doubles_n_int` +* :c:func:`get_all_spin_singles` +* :c:func:`get_all_spin_singles_1` +* :c:func:`get_all_spin_singles_2` +* :c:func:`get_all_spin_singles_3` +* :c:func:`get_all_spin_singles_4` +* :c:func:`get_all_spin_singles_and_doubles` +* :c:func:`get_all_spin_singles_and_doubles_1` +* :c:func:`get_all_spin_singles_and_doubles_2` +* :c:func:`get_all_spin_singles_and_doubles_3` +* :c:func:`get_all_spin_singles_and_doubles_4` +* :c:func:`get_all_spin_singles_and_doubles_n_int` +* :c:func:`get_all_spin_singles_n_int` +* :c:func:`get_ao_erf_map_size` +* :c:func:`get_ao_map_size` +* :c:func:`get_ao_two_e_integral` +* :c:func:`get_ao_two_e_integral_erf` +* :c:func:`get_ao_two_e_integrals` +* :c:func:`get_ao_two_e_integrals_erf` +* :c:func:`get_ao_two_e_integrals_erf_non_zero` +* :c:func:`get_ao_two_e_integrals_non_zero` +* :c:func:`get_d0` +* :c:func:`get_d1` +* :c:func:`get_d2` +* :c:func:`get_double_excitation` +* :c:func:`get_double_excitation_spin` +* :c:func:`get_excitation` +* :c:func:`get_excitation_degree` +* :c:func:`get_excitation_degree_spin` +* :c:func:`get_excitation_degree_vector` +* :c:func:`get_excitation_degree_vector_double_alpha_beta` +* :c:func:`get_excitation_degree_vector_mono` +* :c:func:`get_excitation_degree_vector_mono_or_exchange` +* :c:func:`get_excitation_degree_vector_mono_or_exchange_verbose` +* :c:func:`get_excitation_spin` +* :c:func:`get_index_in_psi_det_alpha_unique` +* :c:func:`get_index_in_psi_det_beta_unique` +* :c:func:`get_index_in_psi_det_sorted_bit` +* :c:func:`get_inverse` +* :c:func:`get_mask_phase` +* :c:func:`get_mo_erf_map_size` +* :c:func:`get_mo_map_size` +* :c:func:`get_mo_two_e_integral_erf` +* :c:func:`get_mo_two_e_integrals` +* :c:func:`get_mo_two_e_integrals_coulomb_ii` +* :c:func:`get_mo_two_e_integrals_erf` +* :c:func:`get_mo_two_e_integrals_erf_coulomb_ii` +* :c:func:`get_mo_two_e_integrals_erf_exch_ii` +* :c:func:`get_mo_two_e_integrals_erf_i1j1` +* :c:func:`get_mo_two_e_integrals_erf_ij` +* :c:func:`get_mo_two_e_integrals_exch_ii` +* :c:func:`get_mo_two_e_integrals_i1j1` +* :c:func:`get_mo_two_e_integrals_ij` +* :c:func:`get_mono_excitation` +* :c:func:`get_mono_excitation_from_fock` +* :c:func:`get_mono_excitation_spin` +* :c:func:`get_occupation_from_dets` +* :c:func:`get_phase` +* :c:func:`get_phase_bi` +* :c:func:`get_phasemask_bit` +* :c:func:`get_pseudo_inverse` +* :c:func:`get_s2` +* :c:func:`get_task_from_taskserver` +* :c:func:`get_tasks_from_taskserver` +* :c:func:`get_two_e_integral` +* :c:func:`get_uj_s2_ui` +* :c:func:`getmobiles` +* :c:func:`getunitandopen` +* :c:func:`give_all_aos_and_grad_and_lapl_at_r` +* :c:func:`give_all_aos_and_grad_at_r` +* :c:func:`give_all_aos_at_r` +* :c:func:`give_all_aos_at_r_old` +* :c:func:`give_all_erf_kl_ao` +* :c:func:`give_all_mos_and_grad_and_lapl_at_r` +* :c:func:`give_all_mos_and_grad_at_r` +* :c:func:`give_all_mos_at_r` +* :c:func:`give_explicit_poly_and_gaussian` +* :c:func:`give_explicit_poly_and_gaussian_double` +* :c:func:`give_explicit_poly_and_gaussian_x` +* :c:func:`give_polynom_mult_center_x` +* :c:func:`give_polynomial_mult_center_one_e` +* :c:func:`gpw` +* :c:func:`grad_rho_ab_to_grad_rho_oc` +* :c:func:`gser` +* :c:func:`h_apply_cis` +* :c:func:`h_apply_cis_diexc` +* :c:func:`h_apply_cis_diexcorg` +* :c:func:`h_apply_cis_diexcp` +* :c:func:`h_apply_cis_monoexc` +* :c:func:`h_apply_cisd` +* :c:func:`h_apply_cisd_diexc` +* :c:func:`h_apply_cisd_diexcorg` +* :c:func:`h_apply_cisd_diexcp` +* :c:func:`h_apply_cisd_monoexc` +* :c:func:`h_s2_u_0_nstates_openmp` +* :c:func:`h_s2_u_0_nstates_openmp_work` +* :c:func:`h_s2_u_0_nstates_openmp_work_1` +* :c:func:`h_s2_u_0_nstates_openmp_work_2` +* :c:func:`h_s2_u_0_nstates_openmp_work_3` +* :c:func:`h_s2_u_0_nstates_openmp_work_4` +* :c:func:`h_s2_u_0_nstates_openmp_work_n_int` +* :c:func:`h_s2_u_0_nstates_zmq` +* :c:func:`h_s2_u_0_two_e_nstates_openmp` +* :c:func:`h_s2_u_0_two_e_nstates_openmp_work` +* :c:func:`h_s2_u_0_two_e_nstates_openmp_work_1` +* :c:func:`h_s2_u_0_two_e_nstates_openmp_work_2` +* :c:func:`h_s2_u_0_two_e_nstates_openmp_work_3` +* :c:func:`h_s2_u_0_two_e_nstates_openmp_work_4` +* :c:func:`h_s2_u_0_two_e_nstates_openmp_work_n_int` +* :c:func:`hcore_guess` +* :c:func:`heap_dsort` +* :c:func:`heap_dsort_big` +* :c:func:`heap_i2sort` +* :c:func:`heap_i2sort_big` +* :c:func:`heap_i8sort` +* :c:func:`heap_i8sort_big` +* :c:func:`heap_isort` +* :c:func:`heap_isort_big` +* :c:func:`heap_sort` +* :c:func:`heap_sort_big` +* :c:func:`hermite` +* :c:func:`huckel_guess` +* :c:func:`i2set_order` +* :c:func:`i2set_order_big` +* :c:func:`i2sort` +* :c:func:`i8set_order` +* :c:func:`i8set_order_big` +* :c:func:`i8sort` +* :c:func:`i_h_j` +* :c:func:`i_h_j_double_alpha_beta` +* :c:func:`i_h_j_double_spin` +* :c:func:`i_h_j_mono_spin` +* :c:func:`i_h_j_mono_spin_one_e` +* :c:func:`i_h_j_one_e` +* :c:func:`i_h_j_s2` +* :c:func:`i_h_j_two_e` +* :c:func:`i_h_j_verbose` +* :c:func:`i_h_psi` +* :c:func:`i_h_psi_minilist` +* :c:func:`i_s2_psi_minilist` +* :c:func:`i_wee_j_mono` +* :c:func:`i_x1_pol_mult` +* :c:func:`initialize_bitmask_to_restart_ones` +* :c:func:`initialize_mo_coef_begin_iteration` +* :c:func:`insert_into_ao_integrals_erf_map` +* :c:func:`insert_into_ao_integrals_map` +* :c:func:`insertion_dsort` +* :c:func:`insertion_dsort_big` +* :c:func:`insertion_i2sort` +* :c:func:`insertion_i2sort_big` +* :c:func:`insertion_i8sort` +* :c:func:`insertion_i8sort_big` +* :c:func:`insertion_isort` +* :c:func:`insertion_isort_big` +* :c:func:`insertion_sort` +* :c:func:`insertion_sort_big` +* :c:func:`int_gaus_pol` +* :c:func:`integrale_new` +* :c:func:`integrale_new_erf` +* :c:func:`is_a_1h` +* :c:func:`is_a_1h1p` +* :c:func:`is_a_1h2p` +* :c:func:`is_a_1p` +* :c:func:`is_a_2h` +* :c:func:`is_a_2h1p` +* :c:func:`is_a_2p` +* :c:func:`is_a_two_holes_two_particles` +* :c:func:`is_connected_to` +* :c:func:`is_connected_to_by_mono` +* :c:func:`is_i_in_virtual` +* :c:func:`is_in_wavefunction` +* :c:func:`is_spin_flip_possible` +* :c:func:`is_the_hole_in_det` +* :c:func:`is_the_particl_in_det` +* :c:func:`iset_order` +* :c:func:`iset_order_big` +* :c:func:`isort` +* :c:func:`knowles_function` +* :c:func:`ks_scf` +* :c:func:`lapack_diag` +* :c:func:`lapack_diagd` +* :c:func:`list_to_bitstring` +* :c:func:`load_ao_integrals` +* :c:func:`load_ao_integrals_erf` +* :c:func:`load_mo_integrals` +* :c:func:`load_mo_integrals_erf` +* :c:func:`logfact` +* :c:func:`lowercase` +* :c:func:`make_s2_eigenfunction` +* :c:func:`make_selection_buffer_s2` +* :c:func:`map_load_from_disk` +* :c:func:`map_save_to_disk` +* :c:func:`memory_of_double` +* :c:func:`memory_of_int` +* :c:func:`merge_selection_buffers` +* :c:func:`mix_mo_jk` +* :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:func:`mo_to_ao` +* :c:func:`mo_to_ao_no_overlap` +* :c:func:`mo_two_e_integral` +* :c:func:`mo_two_e_integral_erf` +* :c:func:`mo_two_e_integrals_erf_index` +* :c:func:`mo_two_e_integrals_index` +* :c:func:`modify_bitmasks_for_hole` +* :c:func:`modify_bitmasks_for_hole_in_out` +* :c:func:`modify_bitmasks_for_particl` +* :c:func:`molden` +* :c:func:`mono_excitation_wee` +* :c:func:`mpi_print` +* :c:func:`multiply_poly` +* :c:func:`n_pt_sup` +* :c:func:`nai_pol_mult` +* :c:func:`nai_pol_mult_erf` +* :c:func:`nai_pol_mult_erf_ao` +* :c:func:`new_parallel_job` +* :c:func:`new_zmq_pair_socket` +* :c:func:`new_zmq_pull_socket` +* :c:func:`new_zmq_push_socket` +* :c:func:`new_zmq_sub_socket` +* :c:func:`new_zmq_to_qp_run_socket` +* :c:func:`normalize` +* :c:func:`number_of_holes` +* :c:func:`number_of_holes_verbose` +* :c:func:`number_of_particles` +* :c:func:`number_of_particles_verbose` +* :c:func:`occ_pattern_of_det` +* :c:func:`occ_pattern_search_key` +* :c:func:`occ_pattern_to_dets` +* :c:func:`occ_pattern_to_dets_size` +* :c:func:`ortho_canonical` +* :c:func:`ortho_lowdin` +* :c:func:`ortho_qr` +* :c:func:`ortho_qr_unblocked` +* :c:func:`orthonormalize_mos` +* :c:func:`overlap_bourrin_deriv_x` +* :c:func:`overlap_bourrin_dipole` +* :c:func:`overlap_bourrin_spread` +* :c:func:`overlap_bourrin_x` +* :c:func:`overlap_gaussian_x` +* :c:func:`overlap_x_abs` +* :c:func:`past_d1` +* :c:func:`past_d2` +* :c:func:`perturb_buffer_by_mono_dummy` +* :c:func:`perturb_buffer_by_mono_epstein_nesbet` +* :c:func:`perturb_buffer_by_mono_epstein_nesbet_2x2` +* :c:func:`perturb_buffer_by_mono_epstein_nesbet_2x2_no_ci_diag` +* :c:func:`perturb_buffer_by_mono_moller_plesset` +* :c:func:`perturb_buffer_by_mono_qdpt` +* :c:func:`perturb_buffer_dummy` +* :c:func:`perturb_buffer_epstein_nesbet` +* :c:func:`perturb_buffer_epstein_nesbet_2x2` +* :c:func:`perturb_buffer_epstein_nesbet_2x2_no_ci_diag` +* :c:func:`perturb_buffer_moller_plesset` +* :c:func:`perturb_buffer_qdpt` +* :c:func:`primitive_value` +* :c:func:`print_det` +* :c:func:`print_e_conv` +* :c:func:`print_extrapolated_energy` +* :c:func:`print_generators_bitmasks_holes` +* :c:func:`print_generators_bitmasks_holes_for_one_generator` +* :c:func:`print_generators_bitmasks_particles` +* :c:func:`print_generators_bitmasks_particles_for_one_generator` +* :c:func:`print_memory_usage` +* :c:func:`print_spindet` +* :c:func:`print_summary` +* :c:func:`print_wf` +* :c:func:`provide_all_mo_integrals_erf` +* :c:func:`provide_everything` +* :c:func:`pt2` +* :c:func:`pt2_dummy` +* :c:func:`pt2_epstein_nesbet` +* :c:func:`pt2_epstein_nesbet_2x2` +* :c:func:`pt2_epstein_nesbet_2x2_no_ci_diag` +* :c:func:`pt2_find_sample` +* :c:func:`pt2_find_sample_lr` +* :c:func:`pt2_moller_plesset` +* :c:func:`pt2_qdpt` +* :c:func:`pt2_slave_inproc` +* :c:func:`pull_pt2` +* :c:func:`pull_pt2_results` +* :c:func:`pull_selection_results` +* :c:func:`push_integrals` +* :c:func:`push_pt2` +* :c:func:`push_pt2_results` +* :c:func:`push_selection_results` +* :c:func:`qp_stop` +* :c:func:`qrpa` +* :c:func:`qrpad` +* :c:func:`qrpadd` +* :c:func:`quick_dsort` +* :c:func:`quick_i2sort` +* :c:func:`quick_i8sort` +* :c:func:`quick_isort` +* :c:func:`quick_sort` +* :c:func:`read_dets` +* :c:func:`recentered_poly2` +* :c:func:`remove_duplicates_in_psi_det` +* :c:func:`remove_duplicates_in_selection_buffer` +* :c:func:`remove_small_contributions` +* :c:func:`reorder_core_orb` +* :c:func:`reset_zmq_addresses` +* :c:func:`resident_memory` +* :c:func:`resize_h_apply_buffer` +* :c:func:`rho_ab_to_rho_oc` +* :c:func:`rho_oc_to_rho_ab` +* :c:func:`rint` +* :c:func:`rint1` +* :c:func:`rint_large_n` +* :c:func:`rint_sum` +* :c:func:`rinteg` +* :c:func:`rintgauss` +* :c:func:`roothaan_hall_scf` +* :c:func:`routine` +* :c:func:`routine_e_conv` +* :c:func:`routine_example_psi_det` +* :c:func:`routine_save_one_e_dm` +* :c:func:`rs_ks_scf` +* :c:func:`run` +* :c:func:`run_cipsi` +* :c:func:`run_pt2_slave` +* :c:func:`run_selection_slave` +* :c:func:`run_slave_cipsi` +* :c:func:`run_slave_main` +* :c:func:`run_stochastic_cipsi` +* :c:func:`s2_u_0` +* :c:func:`s2_u_0_nstates` +* :c:func:`sabpartial` +* :c:func:`save_energy` +* :c:func:`save_erf_two_e_integrals_ao` +* :c:func:`save_erf_two_e_integrals_mo` +* :c:func:`save_erf_two_e_ints_ao_into_ints_ao` +* :c:func:`save_erf_two_e_ints_mo_into_ints_mo` +* :c:func:`save_iterations` +* :c:func:`save_mos` +* :c:func:`save_mos_truncated` +* :c:func:`save_natorb` +* :c:func:`save_natural_mos` +* :c:func:`save_one_e_dm` +* :c:func:`save_ortho_mos` +* :c:func:`save_ref_determinant` +* :c:func:`save_wavefunction` +* :c:func:`save_wavefunction_general` +* :c:func:`save_wavefunction_specified` +* :c:func:`save_wavefunction_truncated` +* :c:func:`save_wavefunction_unsorted` +* :c:func:`scf` +* :c:func:`select_connected` +* :c:func:`select_singles_and_doubles` +* :c:func:`selection_collector` +* :c:func:`selection_slave_inproc` +* :c:func:`set_bit_to_integer` +* :c:func:`set_bitmask_hole_as_input` +* :c:func:`set_bitmask_particl_as_input` +* :c:func:`set_natural_mos` +* :c:func:`set_order` +* :c:func:`set_order_big` +* :c:func:`sort` +* :c:func:`sort_dets_ab` +* :c:func:`sort_dets_ab_v` +* :c:func:`sort_dets_ba_v` +* :c:func:`sort_dets_by_det_search_key` +* :c:func:`sort_selection_buffer` +* :c:func:`sorted_dnumber` +* :c:func:`sorted_i2number` +* :c:func:`sorted_i8number` +* :c:func:`sorted_inumber` +* :c:func:`sorted_number` +* :c:func:`spin_det_search_key` +* :c:func:`splash_pq` +* :c:func:`spot_isinwf` +* :c:func:`step_function_becke` +* :c:func:`svd` +* :c:func:`switch_qp_run_to_master` +* :c:func:`tamiser` +* :c:func:`task_done_to_taskserver` +* :c:func:`tasks_done_to_taskserver` +* :c:func:`testteethbuilding` +* :c:func:`total_memory` +* :c:func:`two_e_integrals_index` +* :c:func:`two_e_integrals_index_reverse` +* :c:func:`u_0_h_u_0` +* :c:func:`u_0_h_u_0_two_e` +* :c:func:`u_0_s2_u_0` +* :c:func:`u_dot_u` +* :c:func:`u_dot_v` +* :c:func:`v_e_n` +* :c:func:`v_grad_rho_oc_to_v_grad_rho_ab` +* :c:func:`v_phi` +* :c:func:`v_r` +* :c:func:`v_rho_ab_to_v_rho_oc` +* :c:func:`v_rho_oc_to_v_rho_ab` +* :c:func:`v_theta` +* :c:func:`vcorrlr` +* :c:func:`wait_for_next_state` +* :c:func:`wait_for_state` +* :c:func:`wait_for_states` +* :c:func:`wall_time` +* :c:func:`wallis` +* :c:func:`wf_of_psi_bilinear_matrix` +* :c:func:`write_ao_basis` +* :c:func:`write_bool` +* :c:func:`write_double` +* :c:func:`write_geometry` +* :c:func:`write_git_log` +* :c:func:`write_int` +* :c:func:`write_integrals_erf` +* :c:func:`write_intro_gamess` +* :c:func:`write_mo_basis` +* :c:func:`write_spindeterminants` +* :c:func:`write_time` +* :c:func:`zmq_abort` +* :c:func:`zmq_delete_task` +* :c:func:`zmq_delete_tasks` +* :c:func:`zmq_delete_tasks_async_recv` +* :c:func:`zmq_delete_tasks_async_send` +* :c:func:`zmq_get8_dvector` +* :c:func:`zmq_get8_ivector` +* :c:func:`zmq_get_dmatrix` +* :c:func:`zmq_get_dvector` +* :c:func:`zmq_get_i8matrix` +* :c:func:`zmq_get_imatrix` +* :c:func:`zmq_get_int` +* :c:func:`zmq_get_int_nompi` +* :c:func:`zmq_get_ivector` +* :c:func:`zmq_get_n_det` +* :c:func:`zmq_get_n_det_alpha_unique` +* :c:func:`zmq_get_n_det_beta_unique` +* :c:func:`zmq_get_n_det_generators` +* :c:func:`zmq_get_n_det_selectors` +* :c:func:`zmq_get_n_states` +* :c:func:`zmq_get_n_states_diag` +* :c:func:`zmq_get_psi` +* :c:func:`zmq_get_psi_bilinear` +* :c:func:`zmq_get_psi_bilinear_matrix_columns` +* :c:func:`zmq_get_psi_bilinear_matrix_order` +* :c:func:`zmq_get_psi_bilinear_matrix_rows` +* :c:func:`zmq_get_psi_bilinear_matrix_values` +* :c:func:`zmq_get_psi_coef` +* :c:func:`zmq_get_psi_det` +* :c:func:`zmq_get_psi_det_alpha_unique` +* :c:func:`zmq_get_psi_det_beta_unique` +* :c:func:`zmq_get_psi_det_size` +* :c:func:`zmq_get_psi_notouch` +* :c:func:`zmq_port` +* :c:func:`zmq_pt2` +* :c:func:`zmq_put8_dvector` +* :c:func:`zmq_put8_ivector` +* :c:func:`zmq_put_dmatrix` +* :c:func:`zmq_put_dvector` +* :c:func:`zmq_put_i8matrix` +* :c:func:`zmq_put_imatrix` +* :c:func:`zmq_put_int` +* :c:func:`zmq_put_ivector` +* :c:func:`zmq_put_n_det` +* :c:func:`zmq_put_n_det_alpha_unique` +* :c:func:`zmq_put_n_det_beta_unique` +* :c:func:`zmq_put_n_det_generators` +* :c:func:`zmq_put_n_det_selectors` +* :c:func:`zmq_put_n_states` +* :c:func:`zmq_put_n_states_diag` +* :c:func:`zmq_put_psi` +* :c:func:`zmq_put_psi_bilinear` +* :c:func:`zmq_put_psi_bilinear_matrix_columns` +* :c:func:`zmq_put_psi_bilinear_matrix_order` +* :c:func:`zmq_put_psi_bilinear_matrix_rows` +* :c:func:`zmq_put_psi_bilinear_matrix_values` +* :c:func:`zmq_put_psi_coef` +* :c:func:`zmq_put_psi_det` +* :c:func:`zmq_put_psi_det_alpha_unique` +* :c:func:`zmq_put_psi_det_beta_unique` +* :c:func:`zmq_put_psi_det_size` +* :c:func:`zmq_selection` +* :c:func:`zmq_set_running` \ No newline at end of file diff --git a/doc/_sources/programmers_guide/plugins.rst.txt b/doc/_sources/programmers_guide/plugins.rst.txt new file mode 100644 index 00000000..5ad9171a --- /dev/null +++ b/doc/_sources/programmers_guide/plugins.rst.txt @@ -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 + + + diff --git a/doc/_sources/programmers_guide/programming.rst.txt b/doc/_sources/programmers_guide/programming.rst.txt new file mode 100644 index 00000000..56e32707 --- /dev/null +++ b/doc/_sources/programmers_guide/programming.rst.txt @@ -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 `_, +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 `_, +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 + diff --git a/doc/_sources/programmers_guide/qp_name.rst.txt b/doc/_sources/programmers_guide/qp_name.rst.txt new file mode 100644 index 00000000..5667e97a --- /dev/null +++ b/doc/_sources/programmers_guide/qp_name.rst.txt @@ -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 [-r | --rename=] + + +.. option:: -h + + Prints the help message. + + +.. option:: -r --rename= + + 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. + + diff --git a/doc/_sources/programmers_guide/qp_test.rst.txt b/doc/_sources/programmers_guide/qp_test.rst.txt new file mode 100644 index 00000000..4e7b3245 --- /dev/null +++ b/doc/_sources/programmers_guide/qp_test.rst.txt @@ -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|. + + + diff --git a/doc/_sources/programs/cis.rst.txt b/doc/_sources/programs/cis.rst.txt new file mode 100644 index 00000000..ffbadf5f --- /dev/null +++ b/doc/_sources/programs/cis.rst.txt @@ -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` diff --git a/doc/_sources/programs/cisd.rst.txt b/doc/_sources/programs/cisd.rst.txt new file mode 100644 index 00000000..8208dd06 --- /dev/null +++ b/doc/_sources/programs/cisd.rst.txt @@ -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` diff --git a/doc/_sources/programs/diagonalize_h.rst.txt b/doc/_sources/programs/diagonalize_h.rst.txt new file mode 100644 index 00000000..e21da7c0 --- /dev/null +++ b/doc/_sources/programs/diagonalize_h.rst.txt @@ -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` diff --git a/doc/_sources/programs/fci.rst.txt b/doc/_sources/programs/fci.rst.txt new file mode 100644 index 00000000..f4b8b268 --- /dev/null +++ b/doc/_sources/programs/fci.rst.txt @@ -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` diff --git a/doc/_sources/programs/fcidump.rst.txt b/doc/_sources/programs/fcidump.rst.txt new file mode 100644 index 00000000..b6e2a5b4 --- /dev/null +++ b/doc/_sources/programs/fcidump.rst.txt @@ -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` diff --git a/doc/_sources/programs/four_idx_transform.rst.txt b/doc/_sources/programs/four_idx_transform.rst.txt new file mode 100644 index 00000000..953d7b1d --- /dev/null +++ b/doc/_sources/programs/four_idx_transform.rst.txt @@ -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` diff --git a/doc/_sources/programs/ks_scf.rst.txt b/doc/_sources/programs/ks_scf.rst.txt new file mode 100644 index 00000000..bb1e9204 --- /dev/null +++ b/doc/_sources/programs/ks_scf.rst.txt @@ -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` diff --git a/doc/_sources/programs/molden.rst.txt b/doc/_sources/programs/molden.rst.txt new file mode 100644 index 00000000..23830392 --- /dev/null +++ b/doc/_sources/programs/molden.rst.txt @@ -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` diff --git a/doc/_sources/programs/print_e_conv.rst.txt b/doc/_sources/programs/print_e_conv.rst.txt new file mode 100644 index 00000000..19212630 --- /dev/null +++ b/doc/_sources/programs/print_e_conv.rst.txt @@ -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` diff --git a/doc/_sources/programs/print_wf.rst.txt b/doc/_sources/programs/print_wf.rst.txt new file mode 100644 index 00000000..56f5b238 --- /dev/null +++ b/doc/_sources/programs/print_wf.rst.txt @@ -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` diff --git a/doc/_sources/programs/pt2.rst.txt b/doc/_sources/programs/pt2.rst.txt new file mode 100644 index 00000000..c18e466b --- /dev/null +++ b/doc/_sources/programs/pt2.rst.txt @@ -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` diff --git a/doc/_sources/programs/rs_ks_scf.rst.txt b/doc/_sources/programs/rs_ks_scf.rst.txt new file mode 100644 index 00000000..bdf8969d --- /dev/null +++ b/doc/_sources/programs/rs_ks_scf.rst.txt @@ -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` diff --git a/doc/_sources/programs/save_natorb.rst.txt b/doc/_sources/programs/save_natorb.rst.txt new file mode 100644 index 00000000..736e4178 --- /dev/null +++ b/doc/_sources/programs/save_natorb.rst.txt @@ -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` diff --git a/doc/_sources/programs/save_one_e_dm.rst.txt b/doc/_sources/programs/save_one_e_dm.rst.txt new file mode 100644 index 00000000..bf8ec089 --- /dev/null +++ b/doc/_sources/programs/save_one_e_dm.rst.txt @@ -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` diff --git a/doc/_sources/programs/save_ortho_mos.rst.txt b/doc/_sources/programs/save_ortho_mos.rst.txt new file mode 100644 index 00000000..80cb065d --- /dev/null +++ b/doc/_sources/programs/save_ortho_mos.rst.txt @@ -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` diff --git a/doc/_sources/programs/scf.rst.txt b/doc/_sources/programs/scf.rst.txt new file mode 100644 index 00000000..0c70d00a --- /dev/null +++ b/doc/_sources/programs/scf.rst.txt @@ -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` diff --git a/doc/_sources/programs/write_integrals_erf.rst.txt b/doc/_sources/programs/write_integrals_erf.rst.txt new file mode 100644 index 00000000..b940e8b4 --- /dev/null +++ b/doc/_sources/programs/write_integrals_erf.rst.txt @@ -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` diff --git a/doc/_sources/users_guide/configure.rst.txt b/doc/_sources/users_guide/configure.rst.txt new file mode 100644 index 00000000..8d519c6f --- /dev/null +++ b/doc/_sources/users_guide/configure.rst.txt @@ -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 | -i ] + +.. option:: -c , --config + + Define a configuration file, in :file`${QP_ROOT}/config/` + +.. option:: -h, --help + + Print the help message + +.. option:: -i , --install + + Try to install . Use at your own risk. + +Example +------- + +.. code:: bash + + ./configure + ./configure -c config/gfortran.cfg + diff --git a/doc/_sources/users_guide/excited_states.rst.txt b/doc/_sources/users_guide/excited_states.rst.txt new file mode 100644 index 00000000..980d7bf5 --- /dev/null +++ b/doc/_sources/users_guide/excited_states.rst.txt @@ -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. + diff --git a/doc/_sources/users_guide/index.rst.txt b/doc/_sources/users_guide/index.rst.txt new file mode 100644 index 00000000..33478cb9 --- /dev/null +++ b/doc/_sources/users_guide/index.rst.txt @@ -0,0 +1,21 @@ +Index of commands +================= + +.. toctree:: + :maxdepth: 1 + :glob: + + configure + qpsh + qp_* + + +Index of programs +================= + +.. toctree:: + :maxdepth: 1 + :glob: + + /programs/* + diff --git a/doc/_sources/users_guide/interfaces.rst.txt b/doc/_sources/users_guide/interfaces.rst.txt new file mode 100644 index 00000000..c00b165e --- /dev/null +++ b/doc/_sources/users_guide/interfaces.rst.txt @@ -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 `_ / +`QMC=Chem`_ +Trial wave functions can be used for |QMC|, with or without pseudo-potentials. +These interfaces are provided as `external plugins`_. + + diff --git a/doc/_sources/users_guide/natural_orbitals.rst.txt b/doc/_sources/users_guide/natural_orbitals.rst.txt new file mode 100644 index 00000000..3263531f --- /dev/null +++ b/doc/_sources/users_guide/natural_orbitals.rst.txt @@ -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. + diff --git a/doc/_sources/users_guide/plugins.rst.txt b/doc/_sources/users_guide/plugins.rst.txt new file mode 100644 index 00000000..e9153177 --- /dev/null +++ b/doc/_sources/users_guide/plugins.rst.txt @@ -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`. + diff --git a/doc/_sources/users_guide/printing.rst.txt b/doc/_sources/users_guide/printing.rst.txt new file mode 100644 index 00000000..8509a2d8 --- /dev/null +++ b/doc/_sources/users_guide/printing.rst.txt @@ -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. + + diff --git a/doc/_sources/users_guide/qp_convert_output_to_ezfio.rst.txt b/doc/_sources/users_guide/qp_convert_output_to_ezfio.rst.txt new file mode 100644 index 00000000..171e2796 --- /dev/null +++ b/doc/_sources/users_guide/qp_convert_output_to_ezfio.rst.txt @@ -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 + + diff --git a/doc/_sources/users_guide/qp_create_ezfio_from_xyz.rst.txt b/doc/_sources/users_guide/qp_create_ezfio_from_xyz.rst.txt new file mode 100644 index 00000000..266cc32a --- /dev/null +++ b/doc/_sources/users_guide/qp_create_ezfio_from_xyz.rst.txt @@ -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 [-c ] [-d ] + [-h] [-m ] [-o EZFIO_DIR] [-p ] [-x] [--] FILE + + +.. option:: -a, --au + + If present, input geometry is in atomic units. + + +.. option:: -b, --basis= + + 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 ```` is set to ``show``, the list of all available basis + sets is displayed. + + +.. option:: -c, --charge= + + Total charge of the molecule. Default is 0. + + +.. option:: -d, --dummy= + + 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= + + Spin multiplicity :math:`2S+1` of the molecule. Default is 1. + + +.. option:: -o, --output=EZFIO_DIR + + Name of the created |EZFIO| directory. + +.. option:: -p , --pseudo= + + 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 + + + + diff --git a/doc/_sources/users_guide/qp_edit.rst.txt b/doc/_sources/users_guide/qp_edit.rst.txt new file mode 100644 index 00000000..c9f94530 --- /dev/null +++ b/doc/_sources/users_guide/qp_edit.rst.txt @@ -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 ] [-s ] [--] EZFIO_DIR + +.. option:: -c, --check + + Checks the input data + +.. option:: -h, --help + + Print the help text and exits + +.. option:: -n, --ndet= + + Truncates the wavefunction to the target number of determinants + +.. option:: -s, --state= + + 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. + diff --git a/doc/_sources/users_guide/qp_export_as_tgz.rst.txt b/doc/_sources/users_guide/qp_export_as_tgz.rst.txt new file mode 100644 index 00000000..e498cde4 --- /dev/null +++ b/doc/_sources/users_guide/qp_export_as_tgz.rst.txt @@ -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. + + diff --git a/doc/_sources/users_guide/qp_plugins.rst.txt b/doc/_sources/users_guide/qp_plugins.rst.txt new file mode 100644 index 00000000..18a41ba8 --- /dev/null +++ b/doc/_sources/users_guide/qp_plugins.rst.txt @@ -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 + qp_plugins install ... + qp_plugins uninstall + qp_plugins create -n [-r ] [...] + +.. 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 + + 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 + + Install the plugin ``plugin_name``. + +.. option:: uninstall + + Uninstall the plugin ``plugin_name``. + +.. option:: -n, --name= + + Create a new plugin named ``plugin_name`` (in local repository by default). + +.. option:: -r, --repository= + + Specify in which repository the new plugin will be created. + + + +Example +------- + +Let us download, install and compile some specific external plugins from +``_ . + +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. + diff --git a/doc/_sources/users_guide/qp_run.rst.txt b/doc/_sources/users_guide/qp_run.rst.txt new file mode 100644 index 00000000..252a1bc8 --- /dev/null +++ b/doc/_sources/users_guide/qp_run.rst.txt @@ -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 ] [-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 , --prefix= + + 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 + + diff --git a/doc/_sources/users_guide/qp_set_frozen_core.rst.txt b/doc/_sources/users_guide/qp_set_frozen_core.rst.txt new file mode 100644 index 00000000..09231c32 --- /dev/null +++ b/doc/_sources/users_guide/qp_set_frozen_core.rst.txt @@ -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. + + diff --git a/doc/_sources/users_guide/qp_set_mo_class.rst.txt b/doc/_sources/users_guide/qp_set_mo_class.rst.txt new file mode 100644 index 00000000..a0490f19 --- /dev/null +++ b/doc/_sources/users_guide/qp_set_mo_class.rst.txt @@ -0,0 +1,69 @@ +.. _qp_set_mo_class: + +qp_set_mo_class +=============== + +.. program:: qp_set_mo_class + + +This command sets the orbital classes in an |EZFIO| directory. + +Core + MOs which are always doubly occupied + +Deleted + MOs which are never occupied + +Active + MOs in which any number of holes/particles can be made + +Inactive + MOs in which only holes can be made + +Virtual + MOs in which only particles can be made + +To avoid errors, all the MOs should be given a class. +The range of MOs are given like the ranges in |SLURM| commands. For example, +``"[36-53,72-107,126-131]"``. + +.. tip:: + To quickly setup a frozen core calculation, the script :ref:`qp_set_frozen_core` + can be used. + + + +Usage +----- + +.. code:: bash + + qp_set_mo_class [-a ] [-c ] [-d ] [-h] [-i ] + [-q] [-v ] [--] EZFIO_DIR + +.. option:: -a, --act= + + Range of active orbitals + +.. option:: -c, --core= + + Range of core orbitals + +.. option:: -d, --del= + + Range of deleted orbitals + +.. option:: -i, --inact= + + Range of inactive orbitals + +.. option:: -q, --query + + Print the |MO| classes + +.. option:: -v, --virt= + + Range of virtual orbitals + + + diff --git a/doc/_sources/users_guide/qp_stop.rst.txt b/doc/_sources/users_guide/qp_stop.rst.txt new file mode 100644 index 00000000..0d783d51 --- /dev/null +++ b/doc/_sources/users_guide/qp_stop.rst.txt @@ -0,0 +1,30 @@ +.. _qp_stop: + +======= +qp_stop +======= + +.. program:: qp_stop + +Requests for a clean termination of the program. + +This will have the effect to exit the Davidson diagonalization, the +|SCF| procedure or the determinant selection to save the current wave +function and exit the program. + +Usage +----- + +.. code:: bash + + qp_stop [-chq] EZFIO_DIR + +.. option:: -c, --cancel + + Cancel the qp_stop order. + +.. option:: -q, --query + + Ask if :file:`EZFIO_DIR` was requested to stop. + + diff --git a/doc/_sources/users_guide/qp_update.rst.txt b/doc/_sources/users_guide/qp_update.rst.txt new file mode 100644 index 00000000..1be65fe3 --- /dev/null +++ b/doc/_sources/users_guide/qp_update.rst.txt @@ -0,0 +1,17 @@ +.. _qp_update: + +========= +qp_update +========= + +.. program:: qp_update + +This command makes an update of the |QP| to the latest stable version. + +Usage +----- + +.. code:: bash + + qp_update [-h] + diff --git a/doc/_sources/users_guide/qpsh.rst.txt b/doc/_sources/users_guide/qpsh.rst.txt new file mode 100644 index 00000000..4cf1a612 --- /dev/null +++ b/doc/_sources/users_guide/qpsh.rst.txt @@ -0,0 +1,153 @@ +.. _qpsh: + +==== +qpsh +==== + +.. program:: qpsh + + +:command:`qpsh` is the |qp| shell. It is a Bash shell with all the +required evironment variables loaded, a modified prompt, and the +:ref:`qp` command. + + +.. _qp: + +.. program:: qp + +qp +== + +This command is a hub to the most used command within |qp|. The power +of the :ref:`qpsh` shell is the auto-completion that comes when the +:kbd:`` key is pressed with the :ref:`qp` command. + + +EZFIO access +------------ + +.. option:: set_file + + .. code:: bash + + qp set_file EZFIO_DIR + + Sets the current |EZFIO| directory. All the following instruction will be + relative to this directory. + + This command is equivalent to :command:`ezfio set_file EZFIO_DIR`. + + +.. option:: unset_file + + .. code:: bash + + qp unset_file + + Unsets the current |EZFIO| directory. + + This command is equivalent to :command:`ezfio unset_file`. + + +.. option:: has + + .. code:: bash + + qp has + + If the `/` is set in the |EZFIO| directory, returns 1. + Otherwise returns 0. + + This command is equivalent to :command:`ezfio has `. + + +.. option:: get + + .. code:: bash + + qp get + + Returns the value of `/`. + + This command is equivalent to :command:`ezfio get `. + + +.. option:: set + + .. code:: bash + + qp set [] + + Sets the value of `/`. If the value is not given in + the command line it is read from the standard input. + + This command is equivalent to + :command:`ezfio set []`. + + +Running programs +---------------- + +.. option:: run + + .. code:: bash + + qp (run|srun|mpirun) [options] + + Runs :ref:`qp_run`, :ref:`qp_srun`, or :ref:`qp_mpirun` using the current + |EZFIO| directory. + +.. option:: stop + + :command:`qp stop` : runs :ref:`qp_stop` + +Getting help +------------ + +.. option:: man + + .. code:: bash + + qp man (|) + + Displays a man page for a |qp| program or a |qp| command. + + +Running quantum package commands +-------------------------------- + +The ``qp_`` commands can be run without specifying the |EZFIO| directory: + +.. option:: convert_output_to_ezfio + + :command:`qp convert_output_to_ezfio` : runs :ref:`qp_convert_output_to_ezfio` + +.. option:: create_ezfio + + :command:`qp create_ezfio` : runs :ref:`qp_create_ezfio` + +.. option:: plugins + + :command:`qp plugins` : runs :ref:`qp_plugins` + +.. option:: reset + + :command:`qp reset` : runs :ref:`qp_reset` + +.. option:: set_frozen_core + + :command:`qp set_frozen_core` : runs :ref:`qp_set_frozen_core` + +.. option:: set_mo_class + + :command:`qp set_mo_class` : runs :ref:`qp_set_mo_class` + +.. option:: update + + :command:`qp update` : runs :ref:`qp_update` + + + + + diff --git a/doc/_sources/users_guide/quickstart.rst.txt b/doc/_sources/users_guide/quickstart.rst.txt new file mode 100644 index 00000000..2c04cbcb --- /dev/null +++ b/doc/_sources/users_guide/quickstart.rst.txt @@ -0,0 +1,156 @@ +================= +Quick-start guide +================= + +This tutorial should teach you everything you need to get started with +the the basics of the |qp|. As an example, we will run a frozen core +|CIPSI| calculation on the HCN molecule in the 631-G basis set. + + +Demo video +========== + +.. Include demo video here + + +Hands on +======== + +.. important:: + + Before using the |qp|, it is required to source the file + :file:`quantum_package.rc` if it has not been done already in the + current shell. + +Create the EZFIO database +------------------------- + +The data relative to calculations are stored in an |EZFIO| database. +|EZFIO| is a hierarchical data format which uses the hierarchy of the +file system to organize the data, as files stored in a directory. The +data in the |EZFIO| directory are stored as plain text files, so it can +be opened with any text editor. +To access the data of the |EZFIO| database, the APIs (Fortran, |Python|, +|OCaml| or Bash) provided by |EZFIO| should be used, or tools using +these APIs such as :ref:`qp_edit` provided with the |qp|. + +First, create an `xyz` file containing the coordinates of the molecule. +The file :file:`hcn.xyz` contains:: + + 3 + HCN molecule + C 0.0 0.0 0.0 + H 0.0 0.0 1.064 + N 0.0 0.0 -1.156 + + +This xyz file is now used with the :ref:`qp_create_ezfio` command to +create an |EZFIO| database with the 6-31G basis set: + +.. code:: bash + + qp_create_ezfio -b "6-31G" hcn.xyz -o hcn + +The EZFIO database now contains data relative to the nuclear coordinates +and the atomic basis set: + +.. code:: bash + + $ ls hcn + ao_basis/ electrons/ ezfio/ nuclei/ pseudo/ + + +Run a Hartree-Fock calculation +------------------------------ + +The program :ref:`qp_run` is the driver program of the |qp|. To run a +|SCF| calculation, just run + +.. code:: bash + + qp_run scf hcn + +The expected energy is ``-92.827856698`` au. + +.. seealso:: + + The documentation of the :ref:`hartree_fock` module and that of the :c:func:`scf` program. + +This creates the |MOs| in the |EZFIO| database that will be used to +perform any other post-SCF method. The |qp| does not handle symmetry and +the |MOs| are stored by increasing order of Fock energies. + +Choose the target |MO| space +---------------------------- + +Now, modify to |EZFIO| database to make |CIPSI| calculation in the +full set of valence |MOs|, keeping the core |MOs| frozen. The simple +command :ref:`qp_set_frozen_core` does this automatically: + +.. code:: bash + + qp_set_frozen_core hcn + + +The general command to specify core and active orbitals is :ref:`qp_set_mo_class`. +In the case of HCN molecule in the 631G basis, one has 20 |MOs| in total and the two first orbitals are frozen: + +.. code:: + + qp_set_mo_class -core "[1-2]" -act "[3-20]" hcn + + + +Run the |CIPSI| calculation +---------------------------- + +We will now use the |CIPSI| algorithm to estimate the |FCI| energy. + +.. code:: + + qp_run fci hcn | tee hcn.fci.out + + +The program will start with a single determinant and will iteratively: + +* Select the most important determinants from the external space and add them to the + internal space +* Add all the necessary determinants to allow the eigenvector of |H| to be + also an eigenstate of |S^2| +* Diagonalize |H| in the enlarged internal space +* Compute (stochastically) the second-order perturbative contribution to the energy +* Extrapolate the variational energy by fitting + :math:`E=E_\text{FCI} - \alpha\, E_\text{PT2}` + +By default, the program will stop when more than one million determinants have +entered in the internal space, or when the |PT2| energy is below :math:`10^{-4}`. + +To have a pictural illustration of the convergence of the |CIPSI| algorithm, just run + +.. code:: + + qp_e_conv_fci hcn.fci.out + +This will create the files "hcn.fci.out.conv" containing the data of the convergence of the energy that can be plotted, together with the file "hcn.fci.out.conv.1.eps" which is obtained from the gnuplot plot file "hcn.fci.out.conv.plt". + + +The estimated |FCI| energy of HCN is ``-93.0501`` au. + +.. seealso:: + + The documentation of the :ref:`fci` module and that of the :c:func:`fci` program. + + +--------------------------- + +TODO + + +.. important:: TODO + + .. include:: /work.rst + + * Parameters for Hartree-Fock + * Parameters for Davidson + * Running in parallel + diff --git a/doc/_sources/work.rst.txt b/doc/_sources/work.rst.txt new file mode 100644 index 00000000..3d7291f7 --- /dev/null +++ b/doc/_sources/work.rst.txt @@ -0,0 +1,3 @@ + +.. image:: http://craniointernational.com/wp-content/uploads/2018/01/work-in-progress.jpg + diff --git a/doc/_static/ajax-loader.gif b/doc/_static/ajax-loader.gif new file mode 100644 index 00000000..61faf8ca Binary files /dev/null and b/doc/_static/ajax-loader.gif differ diff --git a/doc/_static/basic.css b/doc/_static/basic.css new file mode 100644 index 00000000..104f076a --- /dev/null +++ b/doc/_static/basic.css @@ -0,0 +1,676 @@ +/* + * basic.css + * ~~~~~~~~~ + * + * Sphinx stylesheet -- basic theme. + * + * :copyright: Copyright 2007-2018 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +/* -- main layout ----------------------------------------------------------- */ + +div.clearer { + clear: both; +} + +/* -- relbar ---------------------------------------------------------------- */ + +div.related { + width: 100%; + font-size: 90%; +} + +div.related h3 { + display: none; +} + +div.related ul { + margin: 0; + padding: 0 0 0 10px; + list-style: none; +} + +div.related li { + display: inline; +} + +div.related li.right { + float: right; + margin-right: 5px; +} + +/* -- sidebar --------------------------------------------------------------- */ + +div.sphinxsidebarwrapper { + padding: 10px 5px 0 10px; +} + +div.sphinxsidebar { + float: left; + width: 230px; + margin-left: -100%; + font-size: 90%; + word-wrap: break-word; + overflow-wrap : break-word; +} + +div.sphinxsidebar ul { + list-style: none; +} + +div.sphinxsidebar ul ul, +div.sphinxsidebar ul.want-points { + margin-left: 20px; + list-style: square; +} + +div.sphinxsidebar ul ul { + margin-top: 0; + margin-bottom: 0; +} + +div.sphinxsidebar form { + margin-top: 10px; +} + +div.sphinxsidebar input { + border: 1px solid #98dbcc; + font-family: sans-serif; + font-size: 1em; +} + +div.sphinxsidebar #searchbox form.search { + overflow: hidden; +} + +div.sphinxsidebar #searchbox input[type="text"] { + float: left; + width: 80%; + padding: 0.25em; + box-sizing: border-box; +} + +div.sphinxsidebar #searchbox input[type="submit"] { + float: left; + width: 20%; + border-left: none; + padding: 0.25em; + box-sizing: border-box; +} + + +img { + border: 0; + max-width: 100%; +} + +/* -- search page ----------------------------------------------------------- */ + +ul.search { + margin: 10px 0 0 20px; + padding: 0; +} + +ul.search li { + padding: 5px 0 5px 20px; + background-image: url(file.png); + background-repeat: no-repeat; + background-position: 0 7px; +} + +ul.search li a { + font-weight: bold; +} + +ul.search li div.context { + color: #888; + margin: 2px 0 0 30px; + text-align: left; +} + +ul.keywordmatches li.goodmatch a { + font-weight: bold; +} + +/* -- index page ------------------------------------------------------------ */ + +table.contentstable { + width: 90%; + margin-left: auto; + margin-right: auto; +} + +table.contentstable p.biglink { + line-height: 150%; +} + +a.biglink { + font-size: 1.3em; +} + +span.linkdescr { + font-style: italic; + padding-top: 5px; + font-size: 90%; +} + +/* -- general index --------------------------------------------------------- */ + +table.indextable { + width: 100%; +} + +table.indextable td { + text-align: left; + vertical-align: top; +} + +table.indextable ul { + margin-top: 0; + margin-bottom: 0; + list-style-type: none; +} + +table.indextable > tbody > tr > td > ul { + padding-left: 0em; +} + +table.indextable tr.pcap { + height: 10px; +} + +table.indextable tr.cap { + margin-top: 10px; + background-color: #f2f2f2; +} + +img.toggler { + margin-right: 3px; + margin-top: 3px; + cursor: pointer; +} + +div.modindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +div.genindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +/* -- domain module index --------------------------------------------------- */ + +table.modindextable td { + padding: 2px; + border-collapse: collapse; +} + +/* -- general body styles --------------------------------------------------- */ + +div.body { + min-width: 450px; + max-width: 800px; +} + +div.body p, div.body dd, div.body li, div.body blockquote { + -moz-hyphens: auto; + -ms-hyphens: auto; + -webkit-hyphens: auto; + hyphens: auto; +} + +a.headerlink { + visibility: hidden; +} + +h1:hover > a.headerlink, +h2:hover > a.headerlink, +h3:hover > a.headerlink, +h4:hover > a.headerlink, +h5:hover > a.headerlink, +h6:hover > a.headerlink, +dt:hover > a.headerlink, +caption:hover > a.headerlink, +p.caption:hover > a.headerlink, +div.code-block-caption:hover > a.headerlink { + visibility: visible; +} + +div.body p.caption { + text-align: inherit; +} + +div.body td { + text-align: left; +} + +.first { + margin-top: 0 !important; +} + +p.rubric { + margin-top: 30px; + font-weight: bold; +} + +img.align-left, .figure.align-left, object.align-left { + clear: left; + float: left; + margin-right: 1em; +} + +img.align-right, .figure.align-right, object.align-right { + clear: right; + float: right; + margin-left: 1em; +} + +img.align-center, .figure.align-center, object.align-center { + display: block; + margin-left: auto; + margin-right: auto; +} + +.align-left { + text-align: left; +} + +.align-center { + text-align: center; +} + +.align-right { + text-align: right; +} + +/* -- sidebars -------------------------------------------------------------- */ + +div.sidebar { + margin: 0 0 0.5em 1em; + border: 1px solid #ddb; + padding: 7px 7px 0 7px; + background-color: #ffe; + width: 40%; + float: right; +} + +p.sidebar-title { + font-weight: bold; +} + +/* -- topics ---------------------------------------------------------------- */ + +div.topic { + border: 1px solid #ccc; + padding: 7px 7px 0 7px; + margin: 10px 0 10px 0; +} + +p.topic-title { + font-size: 1.1em; + font-weight: bold; + margin-top: 10px; +} + +/* -- admonitions ----------------------------------------------------------- */ + +div.admonition { + margin-top: 10px; + margin-bottom: 10px; + padding: 7px; +} + +div.admonition dt { + font-weight: bold; +} + +div.admonition dl { + margin-bottom: 0; +} + +p.admonition-title { + margin: 0px 10px 5px 0px; + font-weight: bold; +} + +div.body p.centered { + text-align: center; + margin-top: 25px; +} + +/* -- tables ---------------------------------------------------------------- */ + +table.docutils { + border: 0; + border-collapse: collapse; +} + +table.align-center { + margin-left: auto; + margin-right: auto; +} + +table caption span.caption-number { + font-style: italic; +} + +table caption span.caption-text { +} + +table.docutils td, table.docutils th { + padding: 1px 8px 1px 5px; + border-top: 0; + border-left: 0; + border-right: 0; + border-bottom: 1px solid #aaa; +} + +table.footnote td, table.footnote th { + border: 0 !important; +} + +th { + text-align: left; + padding-right: 5px; +} + +table.citation { + border-left: solid 1px gray; + margin-left: 1px; +} + +table.citation td { + border-bottom: none; +} + +/* -- figures --------------------------------------------------------------- */ + +div.figure { + margin: 0.5em; + padding: 0.5em; +} + +div.figure p.caption { + padding: 0.3em; +} + +div.figure p.caption span.caption-number { + font-style: italic; +} + +div.figure p.caption span.caption-text { +} + +/* -- field list styles ----------------------------------------------------- */ + +table.field-list td, table.field-list th { + border: 0 !important; +} + +.field-list ul { + margin: 0; + padding-left: 1em; +} + +.field-list p { + margin: 0; +} + +.field-name { + -moz-hyphens: manual; + -ms-hyphens: manual; + -webkit-hyphens: manual; + hyphens: manual; +} + +/* -- hlist styles ---------------------------------------------------------- */ + +table.hlist td { + vertical-align: top; +} + + +/* -- other body styles ----------------------------------------------------- */ + +ol.arabic { + list-style: decimal; +} + +ol.loweralpha { + list-style: lower-alpha; +} + +ol.upperalpha { + list-style: upper-alpha; +} + +ol.lowerroman { + list-style: lower-roman; +} + +ol.upperroman { + list-style: upper-roman; +} + +dl { + margin-bottom: 15px; +} + +dd p { + margin-top: 0px; +} + +dd ul, dd table { + margin-bottom: 10px; +} + +dd { + margin-top: 3px; + margin-bottom: 10px; + margin-left: 30px; +} + +dt:target, span.highlighted { + background-color: #fbe54e; +} + +rect.highlighted { + fill: #fbe54e; +} + +dl.glossary dt { + font-weight: bold; + font-size: 1.1em; +} + +.optional { + font-size: 1.3em; +} + +.sig-paren { + font-size: larger; +} + +.versionmodified { + font-style: italic; +} + +.system-message { + background-color: #fda; + padding: 5px; + border: 3px solid red; +} + +.footnote:target { + background-color: #ffa; +} + +.line-block { + display: block; + margin-top: 1em; + margin-bottom: 1em; +} + +.line-block .line-block { + margin-top: 0; + margin-bottom: 0; + margin-left: 1.5em; +} + +.guilabel, .menuselection { + font-family: sans-serif; +} + +.accelerator { + text-decoration: underline; +} + +.classifier { + font-style: oblique; +} + +abbr, acronym { + border-bottom: dotted 1px; + cursor: help; +} + +/* -- code displays --------------------------------------------------------- */ + +pre { + overflow: auto; + overflow-y: hidden; /* fixes display issues on Chrome browsers */ +} + +span.pre { + -moz-hyphens: none; + -ms-hyphens: none; + -webkit-hyphens: none; + hyphens: none; +} + +td.linenos pre { + padding: 5px 0px; + border: 0; + background-color: transparent; + color: #aaa; +} + +table.highlighttable { + margin-left: 0.5em; +} + +table.highlighttable td { + padding: 0 0.5em 0 0.5em; +} + +div.code-block-caption { + padding: 2px 5px; + font-size: small; +} + +div.code-block-caption code { + background-color: transparent; +} + +div.code-block-caption + div > div.highlight > pre { + margin-top: 0; +} + +div.code-block-caption span.caption-number { + padding: 0.1em 0.3em; + font-style: italic; +} + +div.code-block-caption span.caption-text { +} + +div.literal-block-wrapper { + padding: 1em 1em 0; +} + +div.literal-block-wrapper div.highlight { + margin: 0; +} + +code.descname { + background-color: transparent; + font-weight: bold; + font-size: 1.2em; +} + +code.descclassname { + background-color: transparent; +} + +code.xref, a code { + background-color: transparent; + font-weight: bold; +} + +h1 code, h2 code, h3 code, h4 code, h5 code, h6 code { + background-color: transparent; +} + +.viewcode-link { + float: right; +} + +.viewcode-back { + float: right; + font-family: sans-serif; +} + +div.viewcode-block:target { + margin: -1px -10px; + padding: 0 10px; +} + +/* -- math display ---------------------------------------------------------- */ + +img.math { + vertical-align: middle; +} + +div.body div.math p { + text-align: center; +} + +span.eqno { + float: right; +} + +span.eqno a.headerlink { + position: relative; + left: 0px; + z-index: 1; +} + +div.math:hover a.headerlink { + visibility: visible; +} + +/* -- printout stylesheet --------------------------------------------------- */ + +@media print { + div.document, + div.documentwrapper, + div.bodywrapper { + margin: 0 !important; + width: 100%; + } + + div.sphinxsidebar, + div.related, + div.footer, + #top-link { + display: none; + } +} \ No newline at end of file diff --git a/doc/_static/cn3_energy.png b/doc/_static/cn3_energy.png new file mode 100644 index 00000000..5f595320 Binary files /dev/null and b/doc/_static/cn3_energy.png differ diff --git a/doc/_static/comment-bright.png b/doc/_static/comment-bright.png new file mode 100644 index 00000000..15e27edb Binary files /dev/null and b/doc/_static/comment-bright.png differ diff --git a/doc/_static/comment-close.png b/doc/_static/comment-close.png new file mode 100644 index 00000000..4d91bcf5 Binary files /dev/null and b/doc/_static/comment-close.png differ diff --git a/doc/_static/comment.png b/doc/_static/comment.png new file mode 100644 index 00000000..dfbc0cbd Binary files /dev/null and b/doc/_static/comment.png differ diff --git a/doc/_static/css/badge_only.css b/doc/_static/css/badge_only.css new file mode 100644 index 00000000..323730ae --- /dev/null +++ b/doc/_static/css/badge_only.css @@ -0,0 +1 @@ +.fa:before{-webkit-font-smoothing:antialiased}.clearfix{*zoom:1}.clearfix:before,.clearfix:after{display:table;content:""}.clearfix:after{clear:both}@font-face{font-family:FontAwesome;font-weight:normal;font-style:normal;src:url("../fonts/fontawesome-webfont.eot");src:url("../fonts/fontawesome-webfont.eot?#iefix") format("embedded-opentype"),url("../fonts/fontawesome-webfont.woff") format("woff"),url("../fonts/fontawesome-webfont.ttf") format("truetype"),url("../fonts/fontawesome-webfont.svg#FontAwesome") format("svg")}.fa:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;text-decoration:inherit}a .fa{display:inline-block;text-decoration:inherit}li .fa{display:inline-block}li .fa-large:before,li .fa-large:before{width:1.875em}ul.fas{list-style-type:none;margin-left:2em;text-indent:-0.8em}ul.fas li .fa{width:.8em}ul.fas li .fa-large:before,ul.fas li .fa-large:before{vertical-align:baseline}.fa-book:before{content:""}.icon-book:before{content:""}.fa-caret-down:before{content:""}.icon-caret-down:before{content:""}.fa-caret-up:before{content:""}.icon-caret-up:before{content:""}.fa-caret-left:before{content:""}.icon-caret-left:before{content:""}.fa-caret-right:before{content:""}.icon-caret-right:before{content:""}.rst-versions{position:fixed;bottom:0;left:0;width:300px;color:#fcfcfc;background:#1f1d1d;font-family:"Lato","proxima-nova","Helvetica Neue",Arial,sans-serif;z-index:400}.rst-versions a{color:#2980B9;text-decoration:none}.rst-versions .rst-badge-small{display:none}.rst-versions .rst-current-version{padding:12px;background-color:#272525;display:block;text-align:right;font-size:90%;cursor:pointer;color:#27AE60;*zoom:1}.rst-versions .rst-current-version:before,.rst-versions .rst-current-version:after{display:table;content:""}.rst-versions .rst-current-version:after{clear:both}.rst-versions .rst-current-version .fa{color:#fcfcfc}.rst-versions .rst-current-version .fa-book{float:left}.rst-versions .rst-current-version .icon-book{float:left}.rst-versions .rst-current-version.rst-out-of-date{background-color:#E74C3C;color:#fff}.rst-versions .rst-current-version.rst-active-old-version{background-color:#F1C40F;color:#000}.rst-versions.shift-up{height:auto;max-height:100%}.rst-versions.shift-up .rst-other-versions{display:block}.rst-versions .rst-other-versions{font-size:90%;padding:12px;color:gray;display:none}.rst-versions .rst-other-versions hr{display:block;height:1px;border:0;margin:20px 0;padding:0;border-top:solid 1px #413d3d}.rst-versions .rst-other-versions dd{display:inline-block;margin:0}.rst-versions .rst-other-versions dd a{display:inline-block;padding:6px;color:#fcfcfc}.rst-versions.rst-badge{width:auto;bottom:20px;right:20px;left:auto;border:none;max-width:300px}.rst-versions.rst-badge .icon-book{float:none}.rst-versions.rst-badge .fa-book{float:none}.rst-versions.rst-badge.shift-up .rst-current-version{text-align:right}.rst-versions.rst-badge.shift-up .rst-current-version .fa-book{float:left}.rst-versions.rst-badge.shift-up .rst-current-version .icon-book{float:left}.rst-versions.rst-badge .rst-current-version{width:auto;height:30px;line-height:30px;padding:0 6px;display:block;text-align:center}@media screen and (max-width: 768px){.rst-versions{width:85%;display:none}.rst-versions.shift{display:block}} diff --git a/doc/_static/css/theme.css b/doc/_static/css/theme.css new file mode 100644 index 00000000..b19dbfe5 --- /dev/null +++ b/doc/_static/css/theme.css @@ -0,0 +1,6 @@ +/* sphinx_rtd_theme version 0.4.2 | MIT license */ +/* Built 20181005 13:10 */ +*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block}audio,canvas,video{display:inline-block;*display:inline;*zoom:1}audio:not([controls]){display:none}[hidden]{display:none}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}a:hover,a:active{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}blockquote{margin:0}dfn{font-style:italic}ins{background:#ff9;color:#000;text-decoration:none}mark{background:#ff0;color:#000;font-style:italic;font-weight:bold}pre,code,.rst-content tt,.rst-content code,kbd,samp{font-family:monospace,serif;_font-family:"courier new",monospace;font-size:1em}pre{white-space:pre}q{quotes:none}q:before,q:after{content:"";content:none}small{font-size:85%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}ul,ol,dl{margin:0;padding:0;list-style:none;list-style-image:none}li{list-style:none}dd{margin:0}img{border:0;-ms-interpolation-mode:bicubic;vertical-align:middle;max-width:100%}svg:not(:root){overflow:hidden}figure{margin:0}form{margin:0}fieldset{border:0;margin:0;padding:0}label{cursor:pointer}legend{border:0;*margin-left:-7px;padding:0;white-space:normal}button,input,select,textarea{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle}button,input{line-height:normal}button,input[type="button"],input[type="reset"],input[type="submit"]{cursor:pointer;-webkit-appearance:button;*overflow:visible}button[disabled],input[disabled]{cursor:default}input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0;*width:13px;*height:13px}input[type="search"]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type="search"]::-webkit-search-decoration,input[type="search"]::-webkit-search-cancel-button{-webkit-appearance:none}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}textarea{overflow:auto;vertical-align:top;resize:vertical}table{border-collapse:collapse;border-spacing:0}td{vertical-align:top}.chromeframe{margin:.2em 0;background:#ccc;color:#000;padding:.2em 0}.ir{display:block;border:0;text-indent:-999em;overflow:hidden;background-color:transparent;background-repeat:no-repeat;text-align:left;direction:ltr;*line-height:0}.ir br{display:none}.hidden{display:none !important;visibility:hidden}.visuallyhidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.visuallyhidden.focusable:active,.visuallyhidden.focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}.invisible{visibility:hidden}.relative{position:relative}big,small{font-size:100%}@media print{html,body,section{background:none !important}*{box-shadow:none !important;text-shadow:none !important;filter:none !important;-ms-filter:none !important}a,a:visited{text-decoration:underline}.ir a:after,a[href^="javascript:"]:after,a[href^="#"]:after{content:""}pre,blockquote{page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100% !important}@page{margin:.5cm}p,h2,.rst-content .toctree-wrapper p.caption,h3{orphans:3;widows:3}h2,.rst-content .toctree-wrapper p.caption,h3{page-break-after:avoid}}.fa:before,.wy-menu-vertical li span.toctree-expand:before,.wy-menu-vertical li.on a span.toctree-expand:before,.wy-menu-vertical li.current>a span.toctree-expand:before,.rst-content .admonition-title:before,.rst-content h1 .headerlink:before,.rst-content h2 .headerlink:before,.rst-content h3 .headerlink:before,.rst-content h4 .headerlink:before,.rst-content h5 .headerlink:before,.rst-content h6 .headerlink:before,.rst-content dl dt .headerlink:before,.rst-content p.caption .headerlink:before,.rst-content table>caption .headerlink:before,.rst-content tt.download span:first-child:before,.rst-content code.download span:first-child:before,.icon:before,.wy-dropdown .caret:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before,.wy-alert,.rst-content .note,.rst-content .attention,.rst-content .caution,.rst-content .danger,.rst-content .error,.rst-content .hint,.rst-content .important,.rst-content .tip,.rst-content .warning,.rst-content .seealso,.rst-content .admonition-todo,.rst-content .admonition,.btn,input[type="text"],input[type="password"],input[type="email"],input[type="url"],input[type="date"],input[type="month"],input[type="time"],input[type="datetime"],input[type="datetime-local"],input[type="week"],input[type="number"],input[type="search"],input[type="tel"],input[type="color"],select,textarea,.wy-menu-vertical li.on a,.wy-menu-vertical li.current>a,.wy-side-nav-search>a,.wy-side-nav-search .wy-dropdown>a,.wy-nav-top a{-webkit-font-smoothing:antialiased}.clearfix{*zoom:1}.clearfix:before,.clearfix:after{display:table;content:""}.clearfix:after{clear:both}/*! + * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome + * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) + */@font-face{font-family:'FontAwesome';src:url("../fonts/fontawesome-webfont.eot?v=4.7.0");src:url("../fonts/fontawesome-webfont.eot?#iefix&v=4.7.0") format("embedded-opentype"),url("../fonts/fontawesome-webfont.woff2?v=4.7.0") format("woff2"),url("../fonts/fontawesome-webfont.woff?v=4.7.0") format("woff"),url("../fonts/fontawesome-webfont.ttf?v=4.7.0") format("truetype"),url("../fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular") format("svg");font-weight:normal;font-style:normal}.fa,.wy-menu-vertical li span.toctree-expand,.wy-menu-vertical li.on a span.toctree-expand,.wy-menu-vertical li.current>a span.toctree-expand,.rst-content .admonition-title,.rst-content h1 .headerlink,.rst-content h2 .headerlink,.rst-content h3 .headerlink,.rst-content h4 .headerlink,.rst-content h5 .headerlink,.rst-content h6 .headerlink,.rst-content dl dt .headerlink,.rst-content p.caption .headerlink,.rst-content table>caption .headerlink,.rst-content tt.download span:first-child,.rst-content code.download span:first-child,.icon{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.3333333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.2857142857em;text-align:center}.fa-ul{padding-left:0;margin-left:2.1428571429em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.1428571429em;width:2.1428571429em;top:.1428571429em;text-align:center}.fa-li.fa-lg{left:-1.8571428571em}.fa-border{padding:.2em .25em .15em;border:solid 0.08em #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left,.wy-menu-vertical li span.fa-pull-left.toctree-expand,.wy-menu-vertical li.on a span.fa-pull-left.toctree-expand,.wy-menu-vertical li.current>a span.fa-pull-left.toctree-expand,.rst-content .fa-pull-left.admonition-title,.rst-content h1 .fa-pull-left.headerlink,.rst-content h2 .fa-pull-left.headerlink,.rst-content h3 .fa-pull-left.headerlink,.rst-content h4 .fa-pull-left.headerlink,.rst-content h5 .fa-pull-left.headerlink,.rst-content h6 .fa-pull-left.headerlink,.rst-content dl dt .fa-pull-left.headerlink,.rst-content p.caption .fa-pull-left.headerlink,.rst-content table>caption .fa-pull-left.headerlink,.rst-content tt.download span.fa-pull-left:first-child,.rst-content code.download span.fa-pull-left:first-child,.fa-pull-left.icon{margin-right:.3em}.fa.fa-pull-right,.wy-menu-vertical li span.fa-pull-right.toctree-expand,.wy-menu-vertical li.on a span.fa-pull-right.toctree-expand,.wy-menu-vertical li.current>a span.fa-pull-right.toctree-expand,.rst-content .fa-pull-right.admonition-title,.rst-content h1 .fa-pull-right.headerlink,.rst-content h2 .fa-pull-right.headerlink,.rst-content h3 .fa-pull-right.headerlink,.rst-content h4 .fa-pull-right.headerlink,.rst-content h5 .fa-pull-right.headerlink,.rst-content h6 .fa-pull-right.headerlink,.rst-content dl dt .fa-pull-right.headerlink,.rst-content p.caption .fa-pull-right.headerlink,.rst-content table>caption .fa-pull-right.headerlink,.rst-content tt.download span.fa-pull-right:first-child,.rst-content code.download span.fa-pull-right:first-child,.fa-pull-right.icon{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left,.wy-menu-vertical li span.pull-left.toctree-expand,.wy-menu-vertical li.on a span.pull-left.toctree-expand,.wy-menu-vertical li.current>a span.pull-left.toctree-expand,.rst-content .pull-left.admonition-title,.rst-content h1 .pull-left.headerlink,.rst-content h2 .pull-left.headerlink,.rst-content h3 .pull-left.headerlink,.rst-content h4 .pull-left.headerlink,.rst-content h5 .pull-left.headerlink,.rst-content h6 .pull-left.headerlink,.rst-content dl dt .pull-left.headerlink,.rst-content p.caption .pull-left.headerlink,.rst-content table>caption .pull-left.headerlink,.rst-content tt.download span.pull-left:first-child,.rst-content code.download span.pull-left:first-child,.pull-left.icon{margin-right:.3em}.fa.pull-right,.wy-menu-vertical li span.pull-right.toctree-expand,.wy-menu-vertical li.on a span.pull-right.toctree-expand,.wy-menu-vertical li.current>a span.pull-right.toctree-expand,.rst-content .pull-right.admonition-title,.rst-content h1 .pull-right.headerlink,.rst-content h2 .pull-right.headerlink,.rst-content h3 .pull-right.headerlink,.rst-content h4 .pull-right.headerlink,.rst-content h5 .pull-right.headerlink,.rst-content h6 .pull-right.headerlink,.rst-content dl dt .pull-right.headerlink,.rst-content p.caption .pull-right.headerlink,.rst-content table>caption .pull-right.headerlink,.rst-content tt.download span.pull-right:first-child,.rst-content code.download span.pull-right:first-child,.pull-right.icon{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:""}.fa-music:before{content:""}.fa-search:before,.icon-search:before{content:""}.fa-envelope-o:before{content:""}.fa-heart:before{content:""}.fa-star:before{content:""}.fa-star-o:before{content:""}.fa-user:before{content:""}.fa-film:before{content:""}.fa-th-large:before{content:""}.fa-th:before{content:""}.fa-th-list:before{content:""}.fa-check:before{content:""}.fa-remove:before,.fa-close:before,.fa-times:before{content:""}.fa-search-plus:before{content:""}.fa-search-minus:before{content:""}.fa-power-off:before{content:""}.fa-signal:before{content:""}.fa-gear:before,.fa-cog:before{content:""}.fa-trash-o:before{content:""}.fa-home:before,.icon-home:before{content:""}.fa-file-o:before{content:""}.fa-clock-o:before{content:""}.fa-road:before{content:""}.fa-download:before,.rst-content tt.download span:first-child:before,.rst-content code.download span:first-child:before{content:""}.fa-arrow-circle-o-down:before{content:""}.fa-arrow-circle-o-up:before{content:""}.fa-inbox:before{content:""}.fa-play-circle-o:before{content:""}.fa-rotate-right:before,.fa-repeat:before{content:""}.fa-refresh:before{content:""}.fa-list-alt:before{content:""}.fa-lock:before{content:""}.fa-flag:before{content:""}.fa-headphones:before{content:""}.fa-volume-off:before{content:""}.fa-volume-down:before{content:""}.fa-volume-up:before{content:""}.fa-qrcode:before{content:""}.fa-barcode:before{content:""}.fa-tag:before{content:""}.fa-tags:before{content:""}.fa-book:before,.icon-book:before{content:""}.fa-bookmark:before{content:""}.fa-print:before{content:""}.fa-camera:before{content:""}.fa-font:before{content:""}.fa-bold:before{content:""}.fa-italic:before{content:""}.fa-text-height:before{content:""}.fa-text-width:before{content:""}.fa-align-left:before{content:""}.fa-align-center:before{content:""}.fa-align-right:before{content:""}.fa-align-justify:before{content:""}.fa-list:before{content:""}.fa-dedent:before,.fa-outdent:before{content:""}.fa-indent:before{content:""}.fa-video-camera:before{content:""}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:""}.fa-pencil:before{content:""}.fa-map-marker:before{content:""}.fa-adjust:before{content:""}.fa-tint:before{content:""}.fa-edit:before,.fa-pencil-square-o:before{content:""}.fa-share-square-o:before{content:""}.fa-check-square-o:before{content:""}.fa-arrows:before{content:""}.fa-step-backward:before{content:""}.fa-fast-backward:before{content:""}.fa-backward:before{content:""}.fa-play:before{content:""}.fa-pause:before{content:""}.fa-stop:before{content:""}.fa-forward:before{content:""}.fa-fast-forward:before{content:""}.fa-step-forward:before{content:""}.fa-eject:before{content:""}.fa-chevron-left:before{content:""}.fa-chevron-right:before{content:""}.fa-plus-circle:before{content:""}.fa-minus-circle:before{content:""}.fa-times-circle:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before{content:""}.fa-check-circle:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before{content:""}.fa-question-circle:before{content:""}.fa-info-circle:before{content:""}.fa-crosshairs:before{content:""}.fa-times-circle-o:before{content:""}.fa-check-circle-o:before{content:""}.fa-ban:before{content:""}.fa-arrow-left:before{content:""}.fa-arrow-right:before{content:""}.fa-arrow-up:before{content:""}.fa-arrow-down:before{content:""}.fa-mail-forward:before,.fa-share:before{content:""}.fa-expand:before{content:""}.fa-compress:before{content:""}.fa-plus:before{content:""}.fa-minus:before{content:""}.fa-asterisk:before{content:""}.fa-exclamation-circle:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before,.rst-content .admonition-title:before{content:""}.fa-gift:before{content:""}.fa-leaf:before{content:""}.fa-fire:before,.icon-fire:before{content:""}.fa-eye:before{content:""}.fa-eye-slash:before{content:""}.fa-warning:before,.fa-exclamation-triangle:before{content:""}.fa-plane:before{content:""}.fa-calendar:before{content:""}.fa-random:before{content:""}.fa-comment:before{content:""}.fa-magnet:before{content:""}.fa-chevron-up:before{content:""}.fa-chevron-down:before{content:""}.fa-retweet:before{content:""}.fa-shopping-cart:before{content:""}.fa-folder:before{content:""}.fa-folder-open:before{content:""}.fa-arrows-v:before{content:""}.fa-arrows-h:before{content:""}.fa-bar-chart-o:before,.fa-bar-chart:before{content:""}.fa-twitter-square:before{content:""}.fa-facebook-square:before{content:""}.fa-camera-retro:before{content:""}.fa-key:before{content:""}.fa-gears:before,.fa-cogs:before{content:""}.fa-comments:before{content:""}.fa-thumbs-o-up:before{content:""}.fa-thumbs-o-down:before{content:""}.fa-star-half:before{content:""}.fa-heart-o:before{content:""}.fa-sign-out:before{content:""}.fa-linkedin-square:before{content:""}.fa-thumb-tack:before{content:""}.fa-external-link:before{content:""}.fa-sign-in:before{content:""}.fa-trophy:before{content:""}.fa-github-square:before{content:""}.fa-upload:before{content:""}.fa-lemon-o:before{content:""}.fa-phone:before{content:""}.fa-square-o:before{content:""}.fa-bookmark-o:before{content:""}.fa-phone-square:before{content:""}.fa-twitter:before{content:""}.fa-facebook-f:before,.fa-facebook:before{content:""}.fa-github:before,.icon-github:before{content:""}.fa-unlock:before{content:""}.fa-credit-card:before{content:""}.fa-feed:before,.fa-rss:before{content:""}.fa-hdd-o:before{content:""}.fa-bullhorn:before{content:""}.fa-bell:before{content:""}.fa-certificate:before{content:""}.fa-hand-o-right:before{content:""}.fa-hand-o-left:before{content:""}.fa-hand-o-up:before{content:""}.fa-hand-o-down:before{content:""}.fa-arrow-circle-left:before,.icon-circle-arrow-left:before{content:""}.fa-arrow-circle-right:before,.icon-circle-arrow-right:before{content:""}.fa-arrow-circle-up:before{content:""}.fa-arrow-circle-down:before{content:""}.fa-globe:before{content:""}.fa-wrench:before{content:""}.fa-tasks:before{content:""}.fa-filter:before{content:""}.fa-briefcase:before{content:""}.fa-arrows-alt:before{content:""}.fa-group:before,.fa-users:before{content:""}.fa-chain:before,.fa-link:before,.icon-link:before{content:""}.fa-cloud:before{content:""}.fa-flask:before{content:""}.fa-cut:before,.fa-scissors:before{content:""}.fa-copy:before,.fa-files-o:before{content:""}.fa-paperclip:before{content:""}.fa-save:before,.fa-floppy-o:before{content:""}.fa-square:before{content:""}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:""}.fa-list-ul:before{content:""}.fa-list-ol:before{content:""}.fa-strikethrough:before{content:""}.fa-underline:before{content:""}.fa-table:before{content:""}.fa-magic:before{content:""}.fa-truck:before{content:""}.fa-pinterest:before{content:""}.fa-pinterest-square:before{content:""}.fa-google-plus-square:before{content:""}.fa-google-plus:before{content:""}.fa-money:before{content:""}.fa-caret-down:before,.wy-dropdown .caret:before,.icon-caret-down:before{content:""}.fa-caret-up:before{content:""}.fa-caret-left:before{content:""}.fa-caret-right:before{content:""}.fa-columns:before{content:""}.fa-unsorted:before,.fa-sort:before{content:""}.fa-sort-down:before,.fa-sort-desc:before{content:""}.fa-sort-up:before,.fa-sort-asc:before{content:""}.fa-envelope:before{content:""}.fa-linkedin:before{content:""}.fa-rotate-left:before,.fa-undo:before{content:""}.fa-legal:before,.fa-gavel:before{content:""}.fa-dashboard:before,.fa-tachometer:before{content:""}.fa-comment-o:before{content:""}.fa-comments-o:before{content:""}.fa-flash:before,.fa-bolt:before{content:""}.fa-sitemap:before{content:""}.fa-umbrella:before{content:""}.fa-paste:before,.fa-clipboard:before{content:""}.fa-lightbulb-o:before{content:""}.fa-exchange:before{content:""}.fa-cloud-download:before{content:""}.fa-cloud-upload:before{content:""}.fa-user-md:before{content:""}.fa-stethoscope:before{content:""}.fa-suitcase:before{content:""}.fa-bell-o:before{content:""}.fa-coffee:before{content:""}.fa-cutlery:before{content:""}.fa-file-text-o:before{content:""}.fa-building-o:before{content:""}.fa-hospital-o:before{content:""}.fa-ambulance:before{content:""}.fa-medkit:before{content:""}.fa-fighter-jet:before{content:""}.fa-beer:before{content:""}.fa-h-square:before{content:""}.fa-plus-square:before{content:""}.fa-angle-double-left:before{content:""}.fa-angle-double-right:before{content:""}.fa-angle-double-up:before{content:""}.fa-angle-double-down:before{content:""}.fa-angle-left:before{content:""}.fa-angle-right:before{content:""}.fa-angle-up:before{content:""}.fa-angle-down:before{content:""}.fa-desktop:before{content:""}.fa-laptop:before{content:""}.fa-tablet:before{content:""}.fa-mobile-phone:before,.fa-mobile:before{content:""}.fa-circle-o:before{content:""}.fa-quote-left:before{content:""}.fa-quote-right:before{content:""}.fa-spinner:before{content:""}.fa-circle:before{content:""}.fa-mail-reply:before,.fa-reply:before{content:""}.fa-github-alt:before{content:""}.fa-folder-o:before{content:""}.fa-folder-open-o:before{content:""}.fa-smile-o:before{content:""}.fa-frown-o:before{content:""}.fa-meh-o:before{content:""}.fa-gamepad:before{content:""}.fa-keyboard-o:before{content:""}.fa-flag-o:before{content:""}.fa-flag-checkered:before{content:""}.fa-terminal:before{content:""}.fa-code:before{content:""}.fa-mail-reply-all:before,.fa-reply-all:before{content:""}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:""}.fa-location-arrow:before{content:""}.fa-crop:before{content:""}.fa-code-fork:before{content:""}.fa-unlink:before,.fa-chain-broken:before{content:""}.fa-question:before{content:""}.fa-info:before{content:""}.fa-exclamation:before{content:""}.fa-superscript:before{content:""}.fa-subscript:before{content:""}.fa-eraser:before{content:""}.fa-puzzle-piece:before{content:""}.fa-microphone:before{content:""}.fa-microphone-slash:before{content:""}.fa-shield:before{content:""}.fa-calendar-o:before{content:""}.fa-fire-extinguisher:before{content:""}.fa-rocket:before{content:""}.fa-maxcdn:before{content:""}.fa-chevron-circle-left:before{content:""}.fa-chevron-circle-right:before{content:""}.fa-chevron-circle-up:before{content:""}.fa-chevron-circle-down:before{content:""}.fa-html5:before{content:""}.fa-css3:before{content:""}.fa-anchor:before{content:""}.fa-unlock-alt:before{content:""}.fa-bullseye:before{content:""}.fa-ellipsis-h:before{content:""}.fa-ellipsis-v:before{content:""}.fa-rss-square:before{content:""}.fa-play-circle:before{content:""}.fa-ticket:before{content:""}.fa-minus-square:before{content:""}.fa-minus-square-o:before,.wy-menu-vertical li.on a span.toctree-expand:before,.wy-menu-vertical li.current>a span.toctree-expand:before{content:""}.fa-level-up:before{content:""}.fa-level-down:before{content:""}.fa-check-square:before{content:""}.fa-pencil-square:before{content:""}.fa-external-link-square:before{content:""}.fa-share-square:before{content:""}.fa-compass:before{content:""}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:""}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:""}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:""}.fa-euro:before,.fa-eur:before{content:""}.fa-gbp:before{content:""}.fa-dollar:before,.fa-usd:before{content:""}.fa-rupee:before,.fa-inr:before{content:""}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:""}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:""}.fa-won:before,.fa-krw:before{content:""}.fa-bitcoin:before,.fa-btc:before{content:""}.fa-file:before{content:""}.fa-file-text:before{content:""}.fa-sort-alpha-asc:before{content:""}.fa-sort-alpha-desc:before{content:""}.fa-sort-amount-asc:before{content:""}.fa-sort-amount-desc:before{content:""}.fa-sort-numeric-asc:before{content:""}.fa-sort-numeric-desc:before{content:""}.fa-thumbs-up:before{content:""}.fa-thumbs-down:before{content:""}.fa-youtube-square:before{content:""}.fa-youtube:before{content:""}.fa-xing:before{content:""}.fa-xing-square:before{content:""}.fa-youtube-play:before{content:""}.fa-dropbox:before{content:""}.fa-stack-overflow:before{content:""}.fa-instagram:before{content:""}.fa-flickr:before{content:""}.fa-adn:before{content:""}.fa-bitbucket:before,.icon-bitbucket:before{content:""}.fa-bitbucket-square:before{content:""}.fa-tumblr:before{content:""}.fa-tumblr-square:before{content:""}.fa-long-arrow-down:before{content:""}.fa-long-arrow-up:before{content:""}.fa-long-arrow-left:before{content:""}.fa-long-arrow-right:before{content:""}.fa-apple:before{content:""}.fa-windows:before{content:""}.fa-android:before{content:""}.fa-linux:before{content:""}.fa-dribbble:before{content:""}.fa-skype:before{content:""}.fa-foursquare:before{content:""}.fa-trello:before{content:""}.fa-female:before{content:""}.fa-male:before{content:""}.fa-gittip:before,.fa-gratipay:before{content:""}.fa-sun-o:before{content:""}.fa-moon-o:before{content:""}.fa-archive:before{content:""}.fa-bug:before{content:""}.fa-vk:before{content:""}.fa-weibo:before{content:""}.fa-renren:before{content:""}.fa-pagelines:before{content:""}.fa-stack-exchange:before{content:""}.fa-arrow-circle-o-right:before{content:""}.fa-arrow-circle-o-left:before{content:""}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:""}.fa-dot-circle-o:before{content:""}.fa-wheelchair:before{content:""}.fa-vimeo-square:before{content:""}.fa-turkish-lira:before,.fa-try:before{content:""}.fa-plus-square-o:before,.wy-menu-vertical li span.toctree-expand:before{content:""}.fa-space-shuttle:before{content:""}.fa-slack:before{content:""}.fa-envelope-square:before{content:""}.fa-wordpress:before{content:""}.fa-openid:before{content:""}.fa-institution:before,.fa-bank:before,.fa-university:before{content:""}.fa-mortar-board:before,.fa-graduation-cap:before{content:""}.fa-yahoo:before{content:""}.fa-google:before{content:""}.fa-reddit:before{content:""}.fa-reddit-square:before{content:""}.fa-stumbleupon-circle:before{content:""}.fa-stumbleupon:before{content:""}.fa-delicious:before{content:""}.fa-digg:before{content:""}.fa-pied-piper-pp:before{content:""}.fa-pied-piper-alt:before{content:""}.fa-drupal:before{content:""}.fa-joomla:before{content:""}.fa-language:before{content:""}.fa-fax:before{content:""}.fa-building:before{content:""}.fa-child:before{content:""}.fa-paw:before{content:""}.fa-spoon:before{content:""}.fa-cube:before{content:""}.fa-cubes:before{content:""}.fa-behance:before{content:""}.fa-behance-square:before{content:""}.fa-steam:before{content:""}.fa-steam-square:before{content:""}.fa-recycle:before{content:""}.fa-automobile:before,.fa-car:before{content:""}.fa-cab:before,.fa-taxi:before{content:""}.fa-tree:before{content:""}.fa-spotify:before{content:""}.fa-deviantart:before{content:""}.fa-soundcloud:before{content:""}.fa-database:before{content:""}.fa-file-pdf-o:before{content:""}.fa-file-word-o:before{content:""}.fa-file-excel-o:before{content:""}.fa-file-powerpoint-o:before{content:""}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:""}.fa-file-zip-o:before,.fa-file-archive-o:before{content:""}.fa-file-sound-o:before,.fa-file-audio-o:before{content:""}.fa-file-movie-o:before,.fa-file-video-o:before{content:""}.fa-file-code-o:before{content:""}.fa-vine:before{content:""}.fa-codepen:before{content:""}.fa-jsfiddle:before{content:""}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:""}.fa-circle-o-notch:before{content:""}.fa-ra:before,.fa-resistance:before,.fa-rebel:before{content:""}.fa-ge:before,.fa-empire:before{content:""}.fa-git-square:before{content:""}.fa-git:before{content:""}.fa-y-combinator-square:before,.fa-yc-square:before,.fa-hacker-news:before{content:""}.fa-tencent-weibo:before{content:""}.fa-qq:before{content:""}.fa-wechat:before,.fa-weixin:before{content:""}.fa-send:before,.fa-paper-plane:before{content:""}.fa-send-o:before,.fa-paper-plane-o:before{content:""}.fa-history:before{content:""}.fa-circle-thin:before{content:""}.fa-header:before{content:""}.fa-paragraph:before{content:""}.fa-sliders:before{content:""}.fa-share-alt:before{content:""}.fa-share-alt-square:before{content:""}.fa-bomb:before{content:""}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:""}.fa-tty:before{content:""}.fa-binoculars:before{content:""}.fa-plug:before{content:""}.fa-slideshare:before{content:""}.fa-twitch:before{content:""}.fa-yelp:before{content:""}.fa-newspaper-o:before{content:""}.fa-wifi:before{content:""}.fa-calculator:before{content:""}.fa-paypal:before{content:""}.fa-google-wallet:before{content:""}.fa-cc-visa:before{content:""}.fa-cc-mastercard:before{content:""}.fa-cc-discover:before{content:""}.fa-cc-amex:before{content:""}.fa-cc-paypal:before{content:""}.fa-cc-stripe:before{content:""}.fa-bell-slash:before{content:""}.fa-bell-slash-o:before{content:""}.fa-trash:before{content:""}.fa-copyright:before{content:""}.fa-at:before{content:""}.fa-eyedropper:before{content:""}.fa-paint-brush:before{content:""}.fa-birthday-cake:before{content:""}.fa-area-chart:before{content:""}.fa-pie-chart:before{content:""}.fa-line-chart:before{content:""}.fa-lastfm:before{content:""}.fa-lastfm-square:before{content:""}.fa-toggle-off:before{content:""}.fa-toggle-on:before{content:""}.fa-bicycle:before{content:""}.fa-bus:before{content:""}.fa-ioxhost:before{content:""}.fa-angellist:before{content:""}.fa-cc:before{content:""}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:""}.fa-meanpath:before{content:""}.fa-buysellads:before{content:""}.fa-connectdevelop:before{content:""}.fa-dashcube:before{content:""}.fa-forumbee:before{content:""}.fa-leanpub:before{content:""}.fa-sellsy:before{content:""}.fa-shirtsinbulk:before{content:""}.fa-simplybuilt:before{content:""}.fa-skyatlas:before{content:""}.fa-cart-plus:before{content:""}.fa-cart-arrow-down:before{content:""}.fa-diamond:before{content:""}.fa-ship:before{content:""}.fa-user-secret:before{content:""}.fa-motorcycle:before{content:""}.fa-street-view:before{content:""}.fa-heartbeat:before{content:""}.fa-venus:before{content:""}.fa-mars:before{content:""}.fa-mercury:before{content:""}.fa-intersex:before,.fa-transgender:before{content:""}.fa-transgender-alt:before{content:""}.fa-venus-double:before{content:""}.fa-mars-double:before{content:""}.fa-venus-mars:before{content:""}.fa-mars-stroke:before{content:""}.fa-mars-stroke-v:before{content:""}.fa-mars-stroke-h:before{content:""}.fa-neuter:before{content:""}.fa-genderless:before{content:""}.fa-facebook-official:before{content:""}.fa-pinterest-p:before{content:""}.fa-whatsapp:before{content:""}.fa-server:before{content:""}.fa-user-plus:before{content:""}.fa-user-times:before{content:""}.fa-hotel:before,.fa-bed:before{content:""}.fa-viacoin:before{content:""}.fa-train:before{content:""}.fa-subway:before{content:""}.fa-medium:before{content:""}.fa-yc:before,.fa-y-combinator:before{content:""}.fa-optin-monster:before{content:""}.fa-opencart:before{content:""}.fa-expeditedssl:before{content:""}.fa-battery-4:before,.fa-battery:before,.fa-battery-full:before{content:""}.fa-battery-3:before,.fa-battery-three-quarters:before{content:""}.fa-battery-2:before,.fa-battery-half:before{content:""}.fa-battery-1:before,.fa-battery-quarter:before{content:""}.fa-battery-0:before,.fa-battery-empty:before{content:""}.fa-mouse-pointer:before{content:""}.fa-i-cursor:before{content:""}.fa-object-group:before{content:""}.fa-object-ungroup:before{content:""}.fa-sticky-note:before{content:""}.fa-sticky-note-o:before{content:""}.fa-cc-jcb:before{content:""}.fa-cc-diners-club:before{content:""}.fa-clone:before{content:""}.fa-balance-scale:before{content:""}.fa-hourglass-o:before{content:""}.fa-hourglass-1:before,.fa-hourglass-start:before{content:""}.fa-hourglass-2:before,.fa-hourglass-half:before{content:""}.fa-hourglass-3:before,.fa-hourglass-end:before{content:""}.fa-hourglass:before{content:""}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:""}.fa-hand-stop-o:before,.fa-hand-paper-o:before{content:""}.fa-hand-scissors-o:before{content:""}.fa-hand-lizard-o:before{content:""}.fa-hand-spock-o:before{content:""}.fa-hand-pointer-o:before{content:""}.fa-hand-peace-o:before{content:""}.fa-trademark:before{content:""}.fa-registered:before{content:""}.fa-creative-commons:before{content:""}.fa-gg:before{content:""}.fa-gg-circle:before{content:""}.fa-tripadvisor:before{content:""}.fa-odnoklassniki:before{content:""}.fa-odnoklassniki-square:before{content:""}.fa-get-pocket:before{content:""}.fa-wikipedia-w:before{content:""}.fa-safari:before{content:""}.fa-chrome:before{content:""}.fa-firefox:before{content:""}.fa-opera:before{content:""}.fa-internet-explorer:before{content:""}.fa-tv:before,.fa-television:before{content:""}.fa-contao:before{content:""}.fa-500px:before{content:""}.fa-amazon:before{content:""}.fa-calendar-plus-o:before{content:""}.fa-calendar-minus-o:before{content:""}.fa-calendar-times-o:before{content:""}.fa-calendar-check-o:before{content:""}.fa-industry:before{content:""}.fa-map-pin:before{content:""}.fa-map-signs:before{content:""}.fa-map-o:before{content:""}.fa-map:before{content:""}.fa-commenting:before{content:""}.fa-commenting-o:before{content:""}.fa-houzz:before{content:""}.fa-vimeo:before{content:""}.fa-black-tie:before{content:""}.fa-fonticons:before{content:""}.fa-reddit-alien:before{content:""}.fa-edge:before{content:""}.fa-credit-card-alt:before{content:""}.fa-codiepie:before{content:""}.fa-modx:before{content:""}.fa-fort-awesome:before{content:""}.fa-usb:before{content:""}.fa-product-hunt:before{content:""}.fa-mixcloud:before{content:""}.fa-scribd:before{content:""}.fa-pause-circle:before{content:""}.fa-pause-circle-o:before{content:""}.fa-stop-circle:before{content:""}.fa-stop-circle-o:before{content:""}.fa-shopping-bag:before{content:""}.fa-shopping-basket:before{content:""}.fa-hashtag:before{content:""}.fa-bluetooth:before{content:""}.fa-bluetooth-b:before{content:""}.fa-percent:before{content:""}.fa-gitlab:before,.icon-gitlab:before{content:""}.fa-wpbeginner:before{content:""}.fa-wpforms:before{content:""}.fa-envira:before{content:""}.fa-universal-access:before{content:""}.fa-wheelchair-alt:before{content:""}.fa-question-circle-o:before{content:""}.fa-blind:before{content:""}.fa-audio-description:before{content:""}.fa-volume-control-phone:before{content:""}.fa-braille:before{content:""}.fa-assistive-listening-systems:before{content:""}.fa-asl-interpreting:before,.fa-american-sign-language-interpreting:before{content:""}.fa-deafness:before,.fa-hard-of-hearing:before,.fa-deaf:before{content:""}.fa-glide:before{content:""}.fa-glide-g:before{content:""}.fa-signing:before,.fa-sign-language:before{content:""}.fa-low-vision:before{content:""}.fa-viadeo:before{content:""}.fa-viadeo-square:before{content:""}.fa-snapchat:before{content:""}.fa-snapchat-ghost:before{content:""}.fa-snapchat-square:before{content:""}.fa-pied-piper:before{content:""}.fa-first-order:before{content:""}.fa-yoast:before{content:""}.fa-themeisle:before{content:""}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:""}.fa-fa:before,.fa-font-awesome:before{content:""}.fa-handshake-o:before{content:""}.fa-envelope-open:before{content:""}.fa-envelope-open-o:before{content:""}.fa-linode:before{content:""}.fa-address-book:before{content:""}.fa-address-book-o:before{content:""}.fa-vcard:before,.fa-address-card:before{content:""}.fa-vcard-o:before,.fa-address-card-o:before{content:""}.fa-user-circle:before{content:""}.fa-user-circle-o:before{content:""}.fa-user-o:before{content:""}.fa-id-badge:before{content:""}.fa-drivers-license:before,.fa-id-card:before{content:""}.fa-drivers-license-o:before,.fa-id-card-o:before{content:""}.fa-quora:before{content:""}.fa-free-code-camp:before{content:""}.fa-telegram:before{content:""}.fa-thermometer-4:before,.fa-thermometer:before,.fa-thermometer-full:before{content:""}.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:""}.fa-thermometer-2:before,.fa-thermometer-half:before{content:""}.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:""}.fa-thermometer-0:before,.fa-thermometer-empty:before{content:""}.fa-shower:before{content:""}.fa-bathtub:before,.fa-s15:before,.fa-bath:before{content:""}.fa-podcast:before{content:""}.fa-window-maximize:before{content:""}.fa-window-minimize:before{content:""}.fa-window-restore:before{content:""}.fa-times-rectangle:before,.fa-window-close:before{content:""}.fa-times-rectangle-o:before,.fa-window-close-o:before{content:""}.fa-bandcamp:before{content:""}.fa-grav:before{content:""}.fa-etsy:before{content:""}.fa-imdb:before{content:""}.fa-ravelry:before{content:""}.fa-eercast:before{content:""}.fa-microchip:before{content:""}.fa-snowflake-o:before{content:""}.fa-superpowers:before{content:""}.fa-wpexplorer:before{content:""}.fa-meetup:before{content:""}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}.fa,.wy-menu-vertical li span.toctree-expand,.wy-menu-vertical li.on a span.toctree-expand,.wy-menu-vertical li.current>a span.toctree-expand,.rst-content .admonition-title,.rst-content h1 .headerlink,.rst-content h2 .headerlink,.rst-content h3 .headerlink,.rst-content h4 .headerlink,.rst-content h5 .headerlink,.rst-content h6 .headerlink,.rst-content dl dt .headerlink,.rst-content p.caption .headerlink,.rst-content table>caption .headerlink,.rst-content tt.download span:first-child,.rst-content code.download span:first-child,.icon,.wy-dropdown .caret,.wy-inline-validate.wy-inline-validate-success .wy-input-context,.wy-inline-validate.wy-inline-validate-danger .wy-input-context,.wy-inline-validate.wy-inline-validate-warning .wy-input-context,.wy-inline-validate.wy-inline-validate-info .wy-input-context{font-family:inherit}.fa:before,.wy-menu-vertical li span.toctree-expand:before,.wy-menu-vertical li.on a span.toctree-expand:before,.wy-menu-vertical li.current>a span.toctree-expand:before,.rst-content .admonition-title:before,.rst-content h1 .headerlink:before,.rst-content h2 .headerlink:before,.rst-content h3 .headerlink:before,.rst-content h4 .headerlink:before,.rst-content h5 .headerlink:before,.rst-content h6 .headerlink:before,.rst-content dl dt .headerlink:before,.rst-content p.caption .headerlink:before,.rst-content table>caption .headerlink:before,.rst-content tt.download span:first-child:before,.rst-content code.download span:first-child:before,.icon:before,.wy-dropdown .caret:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before{font-family:"FontAwesome";display:inline-block;font-style:normal;font-weight:normal;line-height:1;text-decoration:inherit}a .fa,a .wy-menu-vertical li span.toctree-expand,.wy-menu-vertical li a span.toctree-expand,.wy-menu-vertical li.on a span.toctree-expand,.wy-menu-vertical li.current>a span.toctree-expand,a .rst-content .admonition-title,.rst-content a .admonition-title,a .rst-content h1 .headerlink,.rst-content h1 a .headerlink,a .rst-content h2 .headerlink,.rst-content h2 a .headerlink,a .rst-content h3 .headerlink,.rst-content h3 a .headerlink,a .rst-content h4 .headerlink,.rst-content h4 a .headerlink,a .rst-content h5 .headerlink,.rst-content h5 a .headerlink,a .rst-content h6 .headerlink,.rst-content h6 a .headerlink,a .rst-content dl dt .headerlink,.rst-content dl dt a .headerlink,a .rst-content p.caption .headerlink,.rst-content p.caption a .headerlink,a .rst-content table>caption .headerlink,.rst-content table>caption a .headerlink,a .rst-content tt.download span:first-child,.rst-content tt.download a span:first-child,a .rst-content code.download span:first-child,.rst-content code.download a span:first-child,a .icon{display:inline-block;text-decoration:inherit}.btn .fa,.btn .wy-menu-vertical li span.toctree-expand,.wy-menu-vertical li .btn span.toctree-expand,.btn .wy-menu-vertical li.on a span.toctree-expand,.wy-menu-vertical li.on a .btn span.toctree-expand,.btn .wy-menu-vertical li.current>a span.toctree-expand,.wy-menu-vertical li.current>a .btn span.toctree-expand,.btn .rst-content .admonition-title,.rst-content .btn .admonition-title,.btn .rst-content h1 .headerlink,.rst-content h1 .btn .headerlink,.btn .rst-content h2 .headerlink,.rst-content h2 .btn .headerlink,.btn .rst-content h3 .headerlink,.rst-content h3 .btn .headerlink,.btn .rst-content h4 .headerlink,.rst-content h4 .btn .headerlink,.btn .rst-content h5 .headerlink,.rst-content h5 .btn .headerlink,.btn .rst-content h6 .headerlink,.rst-content h6 .btn .headerlink,.btn .rst-content dl dt .headerlink,.rst-content dl dt .btn .headerlink,.btn .rst-content p.caption .headerlink,.rst-content p.caption .btn .headerlink,.btn .rst-content table>caption .headerlink,.rst-content table>caption .btn .headerlink,.btn .rst-content tt.download span:first-child,.rst-content tt.download .btn span:first-child,.btn .rst-content code.download span:first-child,.rst-content code.download .btn span:first-child,.btn .icon,.nav .fa,.nav .wy-menu-vertical li span.toctree-expand,.wy-menu-vertical li .nav span.toctree-expand,.nav .wy-menu-vertical li.on a span.toctree-expand,.wy-menu-vertical li.on a .nav span.toctree-expand,.nav .wy-menu-vertical li.current>a span.toctree-expand,.wy-menu-vertical li.current>a .nav span.toctree-expand,.nav .rst-content .admonition-title,.rst-content .nav .admonition-title,.nav .rst-content h1 .headerlink,.rst-content h1 .nav .headerlink,.nav .rst-content h2 .headerlink,.rst-content h2 .nav .headerlink,.nav .rst-content h3 .headerlink,.rst-content h3 .nav .headerlink,.nav .rst-content h4 .headerlink,.rst-content h4 .nav .headerlink,.nav .rst-content h5 .headerlink,.rst-content h5 .nav .headerlink,.nav .rst-content h6 .headerlink,.rst-content h6 .nav .headerlink,.nav .rst-content dl dt .headerlink,.rst-content dl dt .nav .headerlink,.nav .rst-content p.caption .headerlink,.rst-content p.caption .nav .headerlink,.nav .rst-content table>caption .headerlink,.rst-content table>caption .nav .headerlink,.nav .rst-content tt.download span:first-child,.rst-content tt.download .nav span:first-child,.nav .rst-content code.download span:first-child,.rst-content code.download .nav span:first-child,.nav .icon{display:inline}.btn .fa.fa-large,.btn .wy-menu-vertical li span.fa-large.toctree-expand,.wy-menu-vertical li .btn span.fa-large.toctree-expand,.btn .rst-content .fa-large.admonition-title,.rst-content .btn .fa-large.admonition-title,.btn .rst-content h1 .fa-large.headerlink,.rst-content h1 .btn .fa-large.headerlink,.btn .rst-content h2 .fa-large.headerlink,.rst-content h2 .btn .fa-large.headerlink,.btn .rst-content h3 .fa-large.headerlink,.rst-content h3 .btn .fa-large.headerlink,.btn .rst-content h4 .fa-large.headerlink,.rst-content h4 .btn .fa-large.headerlink,.btn .rst-content h5 .fa-large.headerlink,.rst-content h5 .btn .fa-large.headerlink,.btn .rst-content h6 .fa-large.headerlink,.rst-content h6 .btn .fa-large.headerlink,.btn .rst-content dl dt .fa-large.headerlink,.rst-content dl dt .btn .fa-large.headerlink,.btn .rst-content p.caption .fa-large.headerlink,.rst-content p.caption .btn .fa-large.headerlink,.btn .rst-content table>caption .fa-large.headerlink,.rst-content table>caption .btn .fa-large.headerlink,.btn .rst-content tt.download span.fa-large:first-child,.rst-content tt.download .btn span.fa-large:first-child,.btn .rst-content code.download span.fa-large:first-child,.rst-content code.download .btn span.fa-large:first-child,.btn .fa-large.icon,.nav .fa.fa-large,.nav .wy-menu-vertical li span.fa-large.toctree-expand,.wy-menu-vertical li .nav span.fa-large.toctree-expand,.nav .rst-content .fa-large.admonition-title,.rst-content .nav .fa-large.admonition-title,.nav .rst-content h1 .fa-large.headerlink,.rst-content h1 .nav .fa-large.headerlink,.nav .rst-content h2 .fa-large.headerlink,.rst-content h2 .nav .fa-large.headerlink,.nav .rst-content h3 .fa-large.headerlink,.rst-content h3 .nav .fa-large.headerlink,.nav .rst-content h4 .fa-large.headerlink,.rst-content h4 .nav .fa-large.headerlink,.nav .rst-content h5 .fa-large.headerlink,.rst-content h5 .nav .fa-large.headerlink,.nav .rst-content h6 .fa-large.headerlink,.rst-content h6 .nav .fa-large.headerlink,.nav .rst-content dl dt .fa-large.headerlink,.rst-content dl dt .nav .fa-large.headerlink,.nav .rst-content p.caption .fa-large.headerlink,.rst-content p.caption .nav .fa-large.headerlink,.nav .rst-content table>caption .fa-large.headerlink,.rst-content table>caption .nav .fa-large.headerlink,.nav .rst-content tt.download span.fa-large:first-child,.rst-content tt.download .nav span.fa-large:first-child,.nav .rst-content code.download span.fa-large:first-child,.rst-content code.download .nav span.fa-large:first-child,.nav .fa-large.icon{line-height:.9em}.btn .fa.fa-spin,.btn .wy-menu-vertical li span.fa-spin.toctree-expand,.wy-menu-vertical li .btn span.fa-spin.toctree-expand,.btn .rst-content .fa-spin.admonition-title,.rst-content .btn .fa-spin.admonition-title,.btn .rst-content h1 .fa-spin.headerlink,.rst-content h1 .btn .fa-spin.headerlink,.btn .rst-content h2 .fa-spin.headerlink,.rst-content h2 .btn .fa-spin.headerlink,.btn .rst-content h3 .fa-spin.headerlink,.rst-content h3 .btn .fa-spin.headerlink,.btn .rst-content h4 .fa-spin.headerlink,.rst-content h4 .btn .fa-spin.headerlink,.btn .rst-content h5 .fa-spin.headerlink,.rst-content h5 .btn .fa-spin.headerlink,.btn .rst-content h6 .fa-spin.headerlink,.rst-content h6 .btn .fa-spin.headerlink,.btn .rst-content dl dt .fa-spin.headerlink,.rst-content dl dt .btn .fa-spin.headerlink,.btn .rst-content p.caption .fa-spin.headerlink,.rst-content p.caption .btn .fa-spin.headerlink,.btn .rst-content table>caption .fa-spin.headerlink,.rst-content table>caption .btn .fa-spin.headerlink,.btn .rst-content tt.download span.fa-spin:first-child,.rst-content tt.download .btn span.fa-spin:first-child,.btn .rst-content code.download span.fa-spin:first-child,.rst-content code.download .btn span.fa-spin:first-child,.btn .fa-spin.icon,.nav .fa.fa-spin,.nav .wy-menu-vertical li span.fa-spin.toctree-expand,.wy-menu-vertical li .nav span.fa-spin.toctree-expand,.nav .rst-content .fa-spin.admonition-title,.rst-content .nav .fa-spin.admonition-title,.nav .rst-content h1 .fa-spin.headerlink,.rst-content h1 .nav .fa-spin.headerlink,.nav .rst-content h2 .fa-spin.headerlink,.rst-content h2 .nav .fa-spin.headerlink,.nav .rst-content h3 .fa-spin.headerlink,.rst-content h3 .nav .fa-spin.headerlink,.nav .rst-content h4 .fa-spin.headerlink,.rst-content h4 .nav .fa-spin.headerlink,.nav .rst-content h5 .fa-spin.headerlink,.rst-content h5 .nav .fa-spin.headerlink,.nav .rst-content h6 .fa-spin.headerlink,.rst-content h6 .nav .fa-spin.headerlink,.nav .rst-content dl dt .fa-spin.headerlink,.rst-content dl dt .nav .fa-spin.headerlink,.nav .rst-content p.caption .fa-spin.headerlink,.rst-content p.caption .nav .fa-spin.headerlink,.nav .rst-content table>caption .fa-spin.headerlink,.rst-content table>caption .nav .fa-spin.headerlink,.nav .rst-content tt.download span.fa-spin:first-child,.rst-content tt.download .nav span.fa-spin:first-child,.nav .rst-content code.download span.fa-spin:first-child,.rst-content code.download .nav span.fa-spin:first-child,.nav .fa-spin.icon{display:inline-block}.btn.fa:before,.wy-menu-vertical li span.btn.toctree-expand:before,.rst-content .btn.admonition-title:before,.rst-content h1 .btn.headerlink:before,.rst-content h2 .btn.headerlink:before,.rst-content h3 .btn.headerlink:before,.rst-content h4 .btn.headerlink:before,.rst-content h5 .btn.headerlink:before,.rst-content h6 .btn.headerlink:before,.rst-content dl dt .btn.headerlink:before,.rst-content p.caption .btn.headerlink:before,.rst-content table>caption .btn.headerlink:before,.rst-content tt.download span.btn:first-child:before,.rst-content code.download span.btn:first-child:before,.btn.icon:before{opacity:.5;-webkit-transition:opacity .05s ease-in;-moz-transition:opacity .05s ease-in;transition:opacity .05s ease-in}.btn.fa:hover:before,.wy-menu-vertical li span.btn.toctree-expand:hover:before,.rst-content .btn.admonition-title:hover:before,.rst-content h1 .btn.headerlink:hover:before,.rst-content h2 .btn.headerlink:hover:before,.rst-content h3 .btn.headerlink:hover:before,.rst-content h4 .btn.headerlink:hover:before,.rst-content h5 .btn.headerlink:hover:before,.rst-content h6 .btn.headerlink:hover:before,.rst-content dl dt .btn.headerlink:hover:before,.rst-content p.caption .btn.headerlink:hover:before,.rst-content table>caption .btn.headerlink:hover:before,.rst-content tt.download span.btn:first-child:hover:before,.rst-content code.download span.btn:first-child:hover:before,.btn.icon:hover:before{opacity:1}.btn-mini .fa:before,.btn-mini .wy-menu-vertical li span.toctree-expand:before,.wy-menu-vertical li .btn-mini span.toctree-expand:before,.btn-mini .rst-content .admonition-title:before,.rst-content .btn-mini .admonition-title:before,.btn-mini .rst-content h1 .headerlink:before,.rst-content h1 .btn-mini .headerlink:before,.btn-mini .rst-content h2 .headerlink:before,.rst-content h2 .btn-mini .headerlink:before,.btn-mini .rst-content h3 .headerlink:before,.rst-content h3 .btn-mini .headerlink:before,.btn-mini .rst-content h4 .headerlink:before,.rst-content h4 .btn-mini .headerlink:before,.btn-mini .rst-content h5 .headerlink:before,.rst-content h5 .btn-mini .headerlink:before,.btn-mini .rst-content h6 .headerlink:before,.rst-content h6 .btn-mini .headerlink:before,.btn-mini .rst-content dl dt .headerlink:before,.rst-content dl dt .btn-mini .headerlink:before,.btn-mini .rst-content p.caption .headerlink:before,.rst-content p.caption .btn-mini .headerlink:before,.btn-mini .rst-content table>caption .headerlink:before,.rst-content table>caption .btn-mini .headerlink:before,.btn-mini .rst-content tt.download span:first-child:before,.rst-content tt.download .btn-mini span:first-child:before,.btn-mini .rst-content code.download span:first-child:before,.rst-content code.download .btn-mini span:first-child:before,.btn-mini .icon:before{font-size:14px;vertical-align:-15%}.wy-alert,.rst-content .note,.rst-content .attention,.rst-content .caution,.rst-content .danger,.rst-content .error,.rst-content .hint,.rst-content .important,.rst-content .tip,.rst-content .warning,.rst-content .seealso,.rst-content .admonition-todo,.rst-content .admonition{padding:12px;line-height:24px;margin-bottom:24px;background:#e7f2fa}.wy-alert-title,.rst-content .admonition-title{color:#fff;font-weight:bold;display:block;color:#fff;background:#6ab0de;margin:-12px;padding:6px 12px;margin-bottom:12px}.wy-alert.wy-alert-danger,.rst-content .wy-alert-danger.note,.rst-content .wy-alert-danger.attention,.rst-content .wy-alert-danger.caution,.rst-content .danger,.rst-content .error,.rst-content .wy-alert-danger.hint,.rst-content .wy-alert-danger.important,.rst-content .wy-alert-danger.tip,.rst-content .wy-alert-danger.warning,.rst-content .wy-alert-danger.seealso,.rst-content .wy-alert-danger.admonition-todo,.rst-content .wy-alert-danger.admonition{background:#fdf3f2}.wy-alert.wy-alert-danger .wy-alert-title,.rst-content .wy-alert-danger.note .wy-alert-title,.rst-content .wy-alert-danger.attention .wy-alert-title,.rst-content .wy-alert-danger.caution .wy-alert-title,.rst-content .danger .wy-alert-title,.rst-content .error .wy-alert-title,.rst-content .wy-alert-danger.hint .wy-alert-title,.rst-content .wy-alert-danger.important .wy-alert-title,.rst-content .wy-alert-danger.tip .wy-alert-title,.rst-content .wy-alert-danger.warning .wy-alert-title,.rst-content .wy-alert-danger.seealso .wy-alert-title,.rst-content .wy-alert-danger.admonition-todo .wy-alert-title,.rst-content .wy-alert-danger.admonition .wy-alert-title,.wy-alert.wy-alert-danger .rst-content .admonition-title,.rst-content .wy-alert.wy-alert-danger .admonition-title,.rst-content .wy-alert-danger.note .admonition-title,.rst-content .wy-alert-danger.attention .admonition-title,.rst-content .wy-alert-danger.caution .admonition-title,.rst-content .danger .admonition-title,.rst-content .error .admonition-title,.rst-content .wy-alert-danger.hint .admonition-title,.rst-content .wy-alert-danger.important .admonition-title,.rst-content .wy-alert-danger.tip .admonition-title,.rst-content .wy-alert-danger.warning .admonition-title,.rst-content .wy-alert-danger.seealso .admonition-title,.rst-content .wy-alert-danger.admonition-todo .admonition-title,.rst-content .wy-alert-danger.admonition .admonition-title{background:#f29f97}.wy-alert.wy-alert-warning,.rst-content .wy-alert-warning.note,.rst-content .attention,.rst-content .caution,.rst-content .wy-alert-warning.danger,.rst-content .wy-alert-warning.error,.rst-content .wy-alert-warning.hint,.rst-content .wy-alert-warning.important,.rst-content .wy-alert-warning.tip,.rst-content .warning,.rst-content .wy-alert-warning.seealso,.rst-content .admonition-todo,.rst-content .wy-alert-warning.admonition{background:#ffedcc}.wy-alert.wy-alert-warning .wy-alert-title,.rst-content .wy-alert-warning.note .wy-alert-title,.rst-content .attention .wy-alert-title,.rst-content .caution .wy-alert-title,.rst-content .wy-alert-warning.danger .wy-alert-title,.rst-content .wy-alert-warning.error .wy-alert-title,.rst-content .wy-alert-warning.hint .wy-alert-title,.rst-content .wy-alert-warning.important .wy-alert-title,.rst-content .wy-alert-warning.tip .wy-alert-title,.rst-content .warning .wy-alert-title,.rst-content .wy-alert-warning.seealso .wy-alert-title,.rst-content .admonition-todo .wy-alert-title,.rst-content .wy-alert-warning.admonition .wy-alert-title,.wy-alert.wy-alert-warning .rst-content .admonition-title,.rst-content .wy-alert.wy-alert-warning .admonition-title,.rst-content .wy-alert-warning.note .admonition-title,.rst-content .attention .admonition-title,.rst-content .caution .admonition-title,.rst-content .wy-alert-warning.danger .admonition-title,.rst-content .wy-alert-warning.error .admonition-title,.rst-content .wy-alert-warning.hint .admonition-title,.rst-content .wy-alert-warning.important .admonition-title,.rst-content .wy-alert-warning.tip .admonition-title,.rst-content .warning .admonition-title,.rst-content .wy-alert-warning.seealso .admonition-title,.rst-content .admonition-todo .admonition-title,.rst-content .wy-alert-warning.admonition .admonition-title{background:#f0b37e}.wy-alert.wy-alert-info,.rst-content .note,.rst-content .wy-alert-info.attention,.rst-content .wy-alert-info.caution,.rst-content .wy-alert-info.danger,.rst-content .wy-alert-info.error,.rst-content .wy-alert-info.hint,.rst-content .wy-alert-info.important,.rst-content .wy-alert-info.tip,.rst-content .wy-alert-info.warning,.rst-content .seealso,.rst-content .wy-alert-info.admonition-todo,.rst-content .wy-alert-info.admonition{background:#e7f2fa}.wy-alert.wy-alert-info .wy-alert-title,.rst-content .note .wy-alert-title,.rst-content .wy-alert-info.attention .wy-alert-title,.rst-content .wy-alert-info.caution .wy-alert-title,.rst-content .wy-alert-info.danger .wy-alert-title,.rst-content .wy-alert-info.error .wy-alert-title,.rst-content .wy-alert-info.hint .wy-alert-title,.rst-content .wy-alert-info.important .wy-alert-title,.rst-content .wy-alert-info.tip .wy-alert-title,.rst-content .wy-alert-info.warning .wy-alert-title,.rst-content .seealso .wy-alert-title,.rst-content .wy-alert-info.admonition-todo .wy-alert-title,.rst-content .wy-alert-info.admonition .wy-alert-title,.wy-alert.wy-alert-info .rst-content .admonition-title,.rst-content .wy-alert.wy-alert-info .admonition-title,.rst-content .note .admonition-title,.rst-content .wy-alert-info.attention .admonition-title,.rst-content .wy-alert-info.caution .admonition-title,.rst-content .wy-alert-info.danger .admonition-title,.rst-content .wy-alert-info.error .admonition-title,.rst-content .wy-alert-info.hint .admonition-title,.rst-content .wy-alert-info.important .admonition-title,.rst-content .wy-alert-info.tip .admonition-title,.rst-content .wy-alert-info.warning .admonition-title,.rst-content .seealso .admonition-title,.rst-content .wy-alert-info.admonition-todo .admonition-title,.rst-content .wy-alert-info.admonition .admonition-title{background:#6ab0de}.wy-alert.wy-alert-success,.rst-content .wy-alert-success.note,.rst-content .wy-alert-success.attention,.rst-content .wy-alert-success.caution,.rst-content .wy-alert-success.danger,.rst-content .wy-alert-success.error,.rst-content .hint,.rst-content .important,.rst-content .tip,.rst-content .wy-alert-success.warning,.rst-content .wy-alert-success.seealso,.rst-content .wy-alert-success.admonition-todo,.rst-content .wy-alert-success.admonition{background:#dbfaf4}.wy-alert.wy-alert-success .wy-alert-title,.rst-content .wy-alert-success.note .wy-alert-title,.rst-content .wy-alert-success.attention .wy-alert-title,.rst-content .wy-alert-success.caution .wy-alert-title,.rst-content .wy-alert-success.danger .wy-alert-title,.rst-content .wy-alert-success.error .wy-alert-title,.rst-content .hint .wy-alert-title,.rst-content .important .wy-alert-title,.rst-content .tip .wy-alert-title,.rst-content .wy-alert-success.warning .wy-alert-title,.rst-content .wy-alert-success.seealso .wy-alert-title,.rst-content .wy-alert-success.admonition-todo .wy-alert-title,.rst-content .wy-alert-success.admonition .wy-alert-title,.wy-alert.wy-alert-success .rst-content .admonition-title,.rst-content .wy-alert.wy-alert-success .admonition-title,.rst-content .wy-alert-success.note .admonition-title,.rst-content .wy-alert-success.attention .admonition-title,.rst-content .wy-alert-success.caution .admonition-title,.rst-content .wy-alert-success.danger .admonition-title,.rst-content .wy-alert-success.error .admonition-title,.rst-content .hint .admonition-title,.rst-content .important .admonition-title,.rst-content .tip .admonition-title,.rst-content .wy-alert-success.warning .admonition-title,.rst-content .wy-alert-success.seealso .admonition-title,.rst-content .wy-alert-success.admonition-todo .admonition-title,.rst-content .wy-alert-success.admonition .admonition-title{background:#1abc9c}.wy-alert.wy-alert-neutral,.rst-content .wy-alert-neutral.note,.rst-content .wy-alert-neutral.attention,.rst-content .wy-alert-neutral.caution,.rst-content .wy-alert-neutral.danger,.rst-content .wy-alert-neutral.error,.rst-content .wy-alert-neutral.hint,.rst-content .wy-alert-neutral.important,.rst-content .wy-alert-neutral.tip,.rst-content .wy-alert-neutral.warning,.rst-content .wy-alert-neutral.seealso,.rst-content .wy-alert-neutral.admonition-todo,.rst-content .wy-alert-neutral.admonition{background:#f3f6f6}.wy-alert.wy-alert-neutral .wy-alert-title,.rst-content .wy-alert-neutral.note .wy-alert-title,.rst-content .wy-alert-neutral.attention .wy-alert-title,.rst-content .wy-alert-neutral.caution .wy-alert-title,.rst-content .wy-alert-neutral.danger .wy-alert-title,.rst-content .wy-alert-neutral.error .wy-alert-title,.rst-content .wy-alert-neutral.hint .wy-alert-title,.rst-content .wy-alert-neutral.important .wy-alert-title,.rst-content .wy-alert-neutral.tip .wy-alert-title,.rst-content .wy-alert-neutral.warning .wy-alert-title,.rst-content .wy-alert-neutral.seealso .wy-alert-title,.rst-content .wy-alert-neutral.admonition-todo .wy-alert-title,.rst-content .wy-alert-neutral.admonition .wy-alert-title,.wy-alert.wy-alert-neutral .rst-content .admonition-title,.rst-content .wy-alert.wy-alert-neutral .admonition-title,.rst-content .wy-alert-neutral.note .admonition-title,.rst-content .wy-alert-neutral.attention .admonition-title,.rst-content .wy-alert-neutral.caution .admonition-title,.rst-content .wy-alert-neutral.danger .admonition-title,.rst-content .wy-alert-neutral.error .admonition-title,.rst-content .wy-alert-neutral.hint .admonition-title,.rst-content .wy-alert-neutral.important .admonition-title,.rst-content .wy-alert-neutral.tip .admonition-title,.rst-content .wy-alert-neutral.warning .admonition-title,.rst-content .wy-alert-neutral.seealso .admonition-title,.rst-content .wy-alert-neutral.admonition-todo .admonition-title,.rst-content .wy-alert-neutral.admonition .admonition-title{color:#404040;background:#e1e4e5}.wy-alert.wy-alert-neutral a,.rst-content .wy-alert-neutral.note a,.rst-content .wy-alert-neutral.attention a,.rst-content .wy-alert-neutral.caution a,.rst-content .wy-alert-neutral.danger a,.rst-content .wy-alert-neutral.error a,.rst-content .wy-alert-neutral.hint a,.rst-content .wy-alert-neutral.important a,.rst-content .wy-alert-neutral.tip a,.rst-content .wy-alert-neutral.warning a,.rst-content .wy-alert-neutral.seealso a,.rst-content .wy-alert-neutral.admonition-todo a,.rst-content .wy-alert-neutral.admonition a{color:#2980B9}.wy-alert p:last-child,.rst-content .note p:last-child,.rst-content .attention p:last-child,.rst-content .caution p:last-child,.rst-content .danger p:last-child,.rst-content .error p:last-child,.rst-content .hint p:last-child,.rst-content .important p:last-child,.rst-content .tip p:last-child,.rst-content .warning p:last-child,.rst-content .seealso p:last-child,.rst-content .admonition-todo p:last-child,.rst-content .admonition p:last-child{margin-bottom:0}.wy-tray-container{position:fixed;bottom:0px;left:0;z-index:600}.wy-tray-container li{display:block;width:300px;background:transparent;color:#fff;text-align:center;box-shadow:0 5px 5px 0 rgba(0,0,0,0.1);padding:0 24px;min-width:20%;opacity:0;height:0;line-height:56px;overflow:hidden;-webkit-transition:all .3s ease-in;-moz-transition:all .3s ease-in;transition:all .3s ease-in}.wy-tray-container li.wy-tray-item-success{background:#27AE60}.wy-tray-container li.wy-tray-item-info{background:#2980B9}.wy-tray-container li.wy-tray-item-warning{background:#E67E22}.wy-tray-container li.wy-tray-item-danger{background:#E74C3C}.wy-tray-container li.on{opacity:1;height:56px}@media screen and (max-width: 768px){.wy-tray-container{bottom:auto;top:0;width:100%}.wy-tray-container li{width:100%}}button{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle;cursor:pointer;line-height:normal;-webkit-appearance:button;*overflow:visible}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}button[disabled]{cursor:default}.btn{display:inline-block;border-radius:2px;line-height:normal;white-space:nowrap;text-align:center;cursor:pointer;font-size:100%;padding:6px 12px 8px 12px;color:#fff;border:1px solid rgba(0,0,0,0.1);background-color:#27AE60;text-decoration:none;font-weight:normal;font-family:"Lato","proxima-nova","Helvetica Neue",Arial,sans-serif;box-shadow:0px 1px 2px -1px rgba(255,255,255,0.5) inset,0px -2px 0px 0px rgba(0,0,0,0.1) inset;outline-none:false;vertical-align:middle;*display:inline;zoom:1;-webkit-user-drag:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-transition:all .1s linear;-moz-transition:all .1s linear;transition:all .1s linear}.btn-hover{background:#2e8ece;color:#fff}.btn:hover{background:#2cc36b;color:#fff}.btn:focus{background:#2cc36b;outline:0}.btn:active{box-shadow:0px -1px 0px 0px rgba(0,0,0,0.05) inset,0px 2px 0px 0px rgba(0,0,0,0.1) inset;padding:8px 12px 6px 12px}.btn:visited{color:#fff}.btn:disabled{background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);filter:alpha(opacity=40);opacity:.4;cursor:not-allowed;box-shadow:none}.btn-disabled{background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);filter:alpha(opacity=40);opacity:.4;cursor:not-allowed;box-shadow:none}.btn-disabled:hover,.btn-disabled:focus,.btn-disabled:active{background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);filter:alpha(opacity=40);opacity:.4;cursor:not-allowed;box-shadow:none}.btn::-moz-focus-inner{padding:0;border:0}.btn-small{font-size:80%}.btn-info{background-color:#2980B9 !important}.btn-info:hover{background-color:#2e8ece !important}.btn-neutral{background-color:#f3f6f6 !important;color:#404040 !important}.btn-neutral:hover{background-color:#e5ebeb !important;color:#404040}.btn-neutral:visited{color:#404040 !important}.btn-success{background-color:#27AE60 !important}.btn-success:hover{background-color:#295 !important}.btn-danger{background-color:#E74C3C !important}.btn-danger:hover{background-color:#ea6153 !important}.btn-warning{background-color:#E67E22 !important}.btn-warning:hover{background-color:#e98b39 !important}.btn-invert{background-color:#222}.btn-invert:hover{background-color:#2f2f2f !important}.btn-link{background-color:transparent !important;color:#2980B9;box-shadow:none;border-color:transparent !important}.btn-link:hover{background-color:transparent !important;color:#409ad5 !important;box-shadow:none}.btn-link:active{background-color:transparent !important;color:#409ad5 !important;box-shadow:none}.btn-link:visited{color:#9B59B6}.wy-btn-group .btn,.wy-control .btn{vertical-align:middle}.wy-btn-group{margin-bottom:24px;*zoom:1}.wy-btn-group:before,.wy-btn-group:after{display:table;content:""}.wy-btn-group:after{clear:both}.wy-dropdown{position:relative;display:inline-block}.wy-dropdown-active .wy-dropdown-menu{display:block}.wy-dropdown-menu{position:absolute;left:0;display:none;float:left;top:100%;min-width:100%;background:#fcfcfc;z-index:100;border:solid 1px #cfd7dd;box-shadow:0 2px 2px 0 rgba(0,0,0,0.1);padding:12px}.wy-dropdown-menu>dd>a{display:block;clear:both;color:#404040;white-space:nowrap;font-size:90%;padding:0 12px;cursor:pointer}.wy-dropdown-menu>dd>a:hover{background:#2980B9;color:#fff}.wy-dropdown-menu>dd.divider{border-top:solid 1px #cfd7dd;margin:6px 0}.wy-dropdown-menu>dd.search{padding-bottom:12px}.wy-dropdown-menu>dd.search input[type="search"]{width:100%}.wy-dropdown-menu>dd.call-to-action{background:#e3e3e3;text-transform:uppercase;font-weight:500;font-size:80%}.wy-dropdown-menu>dd.call-to-action:hover{background:#e3e3e3}.wy-dropdown-menu>dd.call-to-action .btn{color:#fff}.wy-dropdown.wy-dropdown-up .wy-dropdown-menu{bottom:100%;top:auto;left:auto;right:0}.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu{background:#fcfcfc;margin-top:2px}.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu a{padding:6px 12px}.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu a:hover{background:#2980B9;color:#fff}.wy-dropdown.wy-dropdown-left .wy-dropdown-menu{right:0;left:auto;text-align:right}.wy-dropdown-arrow:before{content:" ";border-bottom:5px solid #f5f5f5;border-left:5px solid transparent;border-right:5px solid transparent;position:absolute;display:block;top:-4px;left:50%;margin-left:-3px}.wy-dropdown-arrow.wy-dropdown-arrow-left:before{left:11px}.wy-form-stacked select{display:block}.wy-form-aligned input,.wy-form-aligned textarea,.wy-form-aligned select,.wy-form-aligned .wy-help-inline,.wy-form-aligned label{display:inline-block;*display:inline;*zoom:1;vertical-align:middle}.wy-form-aligned .wy-control-group>label{display:inline-block;vertical-align:middle;width:10em;margin:6px 12px 0 0;float:left}.wy-form-aligned .wy-control{float:left}.wy-form-aligned .wy-control label{display:block}.wy-form-aligned .wy-control select{margin-top:6px}fieldset{border:0;margin:0;padding:0}legend{display:block;width:100%;border:0;padding:0;white-space:normal;margin-bottom:24px;font-size:150%;*margin-left:-7px}label{display:block;margin:0 0 .3125em 0;color:#333;font-size:90%}input,select,textarea{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle}.wy-control-group{margin-bottom:24px;*zoom:1;max-width:68em;margin-left:auto;margin-right:auto;*zoom:1}.wy-control-group:before,.wy-control-group:after{display:table;content:""}.wy-control-group:after{clear:both}.wy-control-group:before,.wy-control-group:after{display:table;content:""}.wy-control-group:after{clear:both}.wy-control-group.wy-control-group-required>label:after{content:" *";color:#E74C3C}.wy-control-group .wy-form-full,.wy-control-group .wy-form-halves,.wy-control-group .wy-form-thirds{padding-bottom:12px}.wy-control-group .wy-form-full select,.wy-control-group .wy-form-halves select,.wy-control-group .wy-form-thirds select{width:100%}.wy-control-group .wy-form-full input[type="text"],.wy-control-group .wy-form-full input[type="password"],.wy-control-group .wy-form-full input[type="email"],.wy-control-group .wy-form-full input[type="url"],.wy-control-group .wy-form-full input[type="date"],.wy-control-group .wy-form-full input[type="month"],.wy-control-group .wy-form-full input[type="time"],.wy-control-group .wy-form-full input[type="datetime"],.wy-control-group .wy-form-full input[type="datetime-local"],.wy-control-group .wy-form-full input[type="week"],.wy-control-group .wy-form-full input[type="number"],.wy-control-group .wy-form-full input[type="search"],.wy-control-group .wy-form-full input[type="tel"],.wy-control-group .wy-form-full input[type="color"],.wy-control-group .wy-form-halves input[type="text"],.wy-control-group .wy-form-halves input[type="password"],.wy-control-group .wy-form-halves input[type="email"],.wy-control-group .wy-form-halves input[type="url"],.wy-control-group .wy-form-halves input[type="date"],.wy-control-group .wy-form-halves input[type="month"],.wy-control-group .wy-form-halves input[type="time"],.wy-control-group .wy-form-halves input[type="datetime"],.wy-control-group .wy-form-halves input[type="datetime-local"],.wy-control-group .wy-form-halves input[type="week"],.wy-control-group .wy-form-halves input[type="number"],.wy-control-group .wy-form-halves input[type="search"],.wy-control-group .wy-form-halves input[type="tel"],.wy-control-group .wy-form-halves input[type="color"],.wy-control-group .wy-form-thirds input[type="text"],.wy-control-group .wy-form-thirds input[type="password"],.wy-control-group .wy-form-thirds input[type="email"],.wy-control-group .wy-form-thirds input[type="url"],.wy-control-group .wy-form-thirds input[type="date"],.wy-control-group .wy-form-thirds input[type="month"],.wy-control-group .wy-form-thirds input[type="time"],.wy-control-group .wy-form-thirds input[type="datetime"],.wy-control-group .wy-form-thirds input[type="datetime-local"],.wy-control-group .wy-form-thirds input[type="week"],.wy-control-group .wy-form-thirds input[type="number"],.wy-control-group .wy-form-thirds input[type="search"],.wy-control-group .wy-form-thirds input[type="tel"],.wy-control-group .wy-form-thirds input[type="color"]{width:100%}.wy-control-group .wy-form-full{float:left;display:block;margin-right:2.3576515979%;width:100%;margin-right:0}.wy-control-group .wy-form-full:last-child{margin-right:0}.wy-control-group .wy-form-halves{float:left;display:block;margin-right:2.3576515979%;width:48.821174201%}.wy-control-group .wy-form-halves:last-child{margin-right:0}.wy-control-group .wy-form-halves:nth-of-type(2n){margin-right:0}.wy-control-group .wy-form-halves:nth-of-type(2n+1){clear:left}.wy-control-group .wy-form-thirds{float:left;display:block;margin-right:2.3576515979%;width:31.7615656014%}.wy-control-group .wy-form-thirds:last-child{margin-right:0}.wy-control-group .wy-form-thirds:nth-of-type(3n){margin-right:0}.wy-control-group .wy-form-thirds:nth-of-type(3n+1){clear:left}.wy-control-group.wy-control-group-no-input .wy-control{margin:6px 0 0 0;font-size:90%}.wy-control-no-input{display:inline-block;margin:6px 0 0 0;font-size:90%}.wy-control-group.fluid-input input[type="text"],.wy-control-group.fluid-input input[type="password"],.wy-control-group.fluid-input input[type="email"],.wy-control-group.fluid-input input[type="url"],.wy-control-group.fluid-input input[type="date"],.wy-control-group.fluid-input input[type="month"],.wy-control-group.fluid-input input[type="time"],.wy-control-group.fluid-input input[type="datetime"],.wy-control-group.fluid-input input[type="datetime-local"],.wy-control-group.fluid-input input[type="week"],.wy-control-group.fluid-input input[type="number"],.wy-control-group.fluid-input input[type="search"],.wy-control-group.fluid-input input[type="tel"],.wy-control-group.fluid-input input[type="color"]{width:100%}.wy-form-message-inline{display:inline-block;padding-left:.3em;color:#666;vertical-align:middle;font-size:90%}.wy-form-message{display:block;color:#999;font-size:70%;margin-top:.3125em;font-style:italic}.wy-form-message p{font-size:inherit;font-style:italic;margin-bottom:6px}.wy-form-message p:last-child{margin-bottom:0}input{line-height:normal}input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer;font-family:"Lato","proxima-nova","Helvetica Neue",Arial,sans-serif;*overflow:visible}input[type="text"],input[type="password"],input[type="email"],input[type="url"],input[type="date"],input[type="month"],input[type="time"],input[type="datetime"],input[type="datetime-local"],input[type="week"],input[type="number"],input[type="search"],input[type="tel"],input[type="color"]{-webkit-appearance:none;padding:6px;display:inline-block;border:1px solid #ccc;font-size:80%;font-family:"Lato","proxima-nova","Helvetica Neue",Arial,sans-serif;box-shadow:inset 0 1px 3px #ddd;border-radius:0;-webkit-transition:border .3s linear;-moz-transition:border .3s linear;transition:border .3s linear}input[type="datetime-local"]{padding:.34375em .625em}input[disabled]{cursor:default}input[type="checkbox"],input[type="radio"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0;margin-right:.3125em;*height:13px;*width:13px}input[type="search"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}input[type="text"]:focus,input[type="password"]:focus,input[type="email"]:focus,input[type="url"]:focus,input[type="date"]:focus,input[type="month"]:focus,input[type="time"]:focus,input[type="datetime"]:focus,input[type="datetime-local"]:focus,input[type="week"]:focus,input[type="number"]:focus,input[type="search"]:focus,input[type="tel"]:focus,input[type="color"]:focus{outline:0;outline:thin dotted \9;border-color:#333}input.no-focus:focus{border-color:#ccc !important}input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:thin dotted #333;outline:1px auto #129FEA}input[type="text"][disabled],input[type="password"][disabled],input[type="email"][disabled],input[type="url"][disabled],input[type="date"][disabled],input[type="month"][disabled],input[type="time"][disabled],input[type="datetime"][disabled],input[type="datetime-local"][disabled],input[type="week"][disabled],input[type="number"][disabled],input[type="search"][disabled],input[type="tel"][disabled],input[type="color"][disabled]{cursor:not-allowed;background-color:#fafafa}input:focus:invalid,textarea:focus:invalid,select:focus:invalid{color:#E74C3C;border:1px solid #E74C3C}input:focus:invalid:focus,textarea:focus:invalid:focus,select:focus:invalid:focus{border-color:#E74C3C}input[type="file"]:focus:invalid:focus,input[type="radio"]:focus:invalid:focus,input[type="checkbox"]:focus:invalid:focus{outline-color:#E74C3C}input.wy-input-large{padding:12px;font-size:100%}textarea{overflow:auto;vertical-align:top;width:100%;font-family:"Lato","proxima-nova","Helvetica Neue",Arial,sans-serif}select,textarea{padding:.5em .625em;display:inline-block;border:1px solid #ccc;font-size:80%;box-shadow:inset 0 1px 3px #ddd;-webkit-transition:border .3s linear;-moz-transition:border .3s linear;transition:border .3s linear}select{border:1px solid #ccc;background-color:#fff}select[multiple]{height:auto}select:focus,textarea:focus{outline:0}select[disabled],textarea[disabled],input[readonly],select[readonly],textarea[readonly]{cursor:not-allowed;background-color:#fafafa}input[type="radio"][disabled],input[type="checkbox"][disabled]{cursor:not-allowed}.wy-checkbox,.wy-radio{margin:6px 0;color:#404040;display:block}.wy-checkbox input,.wy-radio input{vertical-align:baseline}.wy-form-message-inline{display:inline-block;*display:inline;*zoom:1;vertical-align:middle}.wy-input-prefix,.wy-input-suffix{white-space:nowrap;padding:6px}.wy-input-prefix .wy-input-context,.wy-input-suffix .wy-input-context{line-height:27px;padding:0 8px;display:inline-block;font-size:80%;background-color:#f3f6f6;border:solid 1px #ccc;color:#999}.wy-input-suffix .wy-input-context{border-left:0}.wy-input-prefix .wy-input-context{border-right:0}.wy-switch{position:relative;display:block;height:24px;margin-top:12px;cursor:pointer}.wy-switch:before{position:absolute;content:"";display:block;left:0;top:0;width:36px;height:12px;border-radius:4px;background:#ccc;-webkit-transition:all .2s ease-in-out;-moz-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.wy-switch:after{position:absolute;content:"";display:block;width:18px;height:18px;border-radius:4px;background:#999;left:-3px;top:-3px;-webkit-transition:all .2s ease-in-out;-moz-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.wy-switch span{position:absolute;left:48px;display:block;font-size:12px;color:#ccc;line-height:1}.wy-switch.active:before{background:#1e8449}.wy-switch.active:after{left:24px;background:#27AE60}.wy-switch.disabled{cursor:not-allowed;opacity:.8}.wy-control-group.wy-control-group-error .wy-form-message,.wy-control-group.wy-control-group-error>label{color:#E74C3C}.wy-control-group.wy-control-group-error input[type="text"],.wy-control-group.wy-control-group-error input[type="password"],.wy-control-group.wy-control-group-error input[type="email"],.wy-control-group.wy-control-group-error input[type="url"],.wy-control-group.wy-control-group-error input[type="date"],.wy-control-group.wy-control-group-error input[type="month"],.wy-control-group.wy-control-group-error input[type="time"],.wy-control-group.wy-control-group-error input[type="datetime"],.wy-control-group.wy-control-group-error input[type="datetime-local"],.wy-control-group.wy-control-group-error input[type="week"],.wy-control-group.wy-control-group-error input[type="number"],.wy-control-group.wy-control-group-error input[type="search"],.wy-control-group.wy-control-group-error input[type="tel"],.wy-control-group.wy-control-group-error input[type="color"]{border:solid 1px #E74C3C}.wy-control-group.wy-control-group-error textarea{border:solid 1px #E74C3C}.wy-inline-validate{white-space:nowrap}.wy-inline-validate .wy-input-context{padding:.5em .625em;display:inline-block;font-size:80%}.wy-inline-validate.wy-inline-validate-success .wy-input-context{color:#27AE60}.wy-inline-validate.wy-inline-validate-danger .wy-input-context{color:#E74C3C}.wy-inline-validate.wy-inline-validate-warning .wy-input-context{color:#E67E22}.wy-inline-validate.wy-inline-validate-info .wy-input-context{color:#2980B9}.rotate-90{-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg)}.rotate-180{-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-ms-transform:rotate(180deg);-o-transform:rotate(180deg);transform:rotate(180deg)}.rotate-270{-webkit-transform:rotate(270deg);-moz-transform:rotate(270deg);-ms-transform:rotate(270deg);-o-transform:rotate(270deg);transform:rotate(270deg)}.mirror{-webkit-transform:scaleX(-1);-moz-transform:scaleX(-1);-ms-transform:scaleX(-1);-o-transform:scaleX(-1);transform:scaleX(-1)}.mirror.rotate-90{-webkit-transform:scaleX(-1) rotate(90deg);-moz-transform:scaleX(-1) rotate(90deg);-ms-transform:scaleX(-1) rotate(90deg);-o-transform:scaleX(-1) rotate(90deg);transform:scaleX(-1) rotate(90deg)}.mirror.rotate-180{-webkit-transform:scaleX(-1) rotate(180deg);-moz-transform:scaleX(-1) rotate(180deg);-ms-transform:scaleX(-1) rotate(180deg);-o-transform:scaleX(-1) rotate(180deg);transform:scaleX(-1) rotate(180deg)}.mirror.rotate-270{-webkit-transform:scaleX(-1) rotate(270deg);-moz-transform:scaleX(-1) rotate(270deg);-ms-transform:scaleX(-1) rotate(270deg);-o-transform:scaleX(-1) rotate(270deg);transform:scaleX(-1) rotate(270deg)}@media only screen and (max-width: 480px){.wy-form button[type="submit"]{margin:.7em 0 0}.wy-form input[type="text"],.wy-form input[type="password"],.wy-form input[type="email"],.wy-form input[type="url"],.wy-form input[type="date"],.wy-form input[type="month"],.wy-form input[type="time"],.wy-form input[type="datetime"],.wy-form input[type="datetime-local"],.wy-form input[type="week"],.wy-form input[type="number"],.wy-form input[type="search"],.wy-form input[type="tel"],.wy-form input[type="color"]{margin-bottom:.3em;display:block}.wy-form label{margin-bottom:.3em;display:block}.wy-form input[type="password"],.wy-form input[type="email"],.wy-form input[type="url"],.wy-form input[type="date"],.wy-form input[type="month"],.wy-form input[type="time"],.wy-form input[type="datetime"],.wy-form input[type="datetime-local"],.wy-form input[type="week"],.wy-form input[type="number"],.wy-form input[type="search"],.wy-form input[type="tel"],.wy-form input[type="color"]{margin-bottom:0}.wy-form-aligned .wy-control-group label{margin-bottom:.3em;text-align:left;display:block;width:100%}.wy-form-aligned .wy-control{margin:1.5em 0 0 0}.wy-form .wy-help-inline,.wy-form-message-inline,.wy-form-message{display:block;font-size:80%;padding:6px 0}}@media screen and (max-width: 768px){.tablet-hide{display:none}}@media screen and (max-width: 480px){.mobile-hide{display:none}}.float-left{float:left}.float-right{float:right}.full-width{width:100%}.wy-table,.rst-content table.docutils,.rst-content table.field-list{border-collapse:collapse;border-spacing:0;empty-cells:show;margin-bottom:24px}.wy-table caption,.rst-content table.docutils caption,.rst-content table.field-list caption{color:#000;font:italic 85%/1 arial,sans-serif;padding:1em 0;text-align:center}.wy-table td,.rst-content table.docutils td,.rst-content table.field-list td,.wy-table th,.rst-content table.docutils th,.rst-content table.field-list th{font-size:90%;margin:0;overflow:visible;padding:8px 16px}.wy-table td:first-child,.rst-content table.docutils td:first-child,.rst-content table.field-list td:first-child,.wy-table th:first-child,.rst-content table.docutils th:first-child,.rst-content table.field-list th:first-child{border-left-width:0}.wy-table thead,.rst-content table.docutils thead,.rst-content table.field-list thead{color:#000;text-align:left;vertical-align:bottom;white-space:nowrap}.wy-table thead th,.rst-content table.docutils thead th,.rst-content table.field-list thead th{font-weight:bold;border-bottom:solid 2px #e1e4e5}.wy-table td,.rst-content table.docutils td,.rst-content table.field-list td{background-color:transparent;vertical-align:middle}.wy-table td p,.rst-content table.docutils td p,.rst-content table.field-list td p{line-height:18px}.wy-table td p:last-child,.rst-content table.docutils td p:last-child,.rst-content table.field-list td p:last-child{margin-bottom:0}.wy-table .wy-table-cell-min,.rst-content table.docutils .wy-table-cell-min,.rst-content table.field-list .wy-table-cell-min{width:1%;padding-right:0}.wy-table .wy-table-cell-min input[type=checkbox],.rst-content table.docutils .wy-table-cell-min input[type=checkbox],.rst-content table.field-list .wy-table-cell-min input[type=checkbox],.wy-table .wy-table-cell-min input[type=checkbox],.rst-content table.docutils .wy-table-cell-min input[type=checkbox],.rst-content table.field-list .wy-table-cell-min input[type=checkbox]{margin:0}.wy-table-secondary{color:gray;font-size:90%}.wy-table-tertiary{color:gray;font-size:80%}.wy-table-odd td,.wy-table-striped tr:nth-child(2n-1) td,.rst-content table.docutils:not(.field-list) tr:nth-child(2n-1) td{background-color:#f3f6f6}.wy-table-backed{background-color:#f3f6f6}.wy-table-bordered-all,.rst-content table.docutils{border:1px solid #e1e4e5}.wy-table-bordered-all td,.rst-content table.docutils td{border-bottom:1px solid #e1e4e5;border-left:1px solid #e1e4e5}.wy-table-bordered-all tbody>tr:last-child td,.rst-content table.docutils tbody>tr:last-child td{border-bottom-width:0}.wy-table-bordered{border:1px solid #e1e4e5}.wy-table-bordered-rows td{border-bottom:1px solid #e1e4e5}.wy-table-bordered-rows tbody>tr:last-child td{border-bottom-width:0}.wy-table-horizontal tbody>tr:last-child td{border-bottom-width:0}.wy-table-horizontal td,.wy-table-horizontal th{border-width:0 0 1px 0;border-bottom:1px solid #e1e4e5}.wy-table-horizontal tbody>tr:last-child td{border-bottom-width:0}.wy-table-responsive{margin-bottom:24px;max-width:100%;overflow:auto}.wy-table-responsive table{margin-bottom:0 !important}.wy-table-responsive table td,.wy-table-responsive table th{white-space:nowrap}a{color:#2980B9;text-decoration:none;cursor:pointer}a:hover{color:#3091d1}a:visited{color:#9B59B6}html{height:100%;overflow-x:hidden}body{font-family:"Lato","proxima-nova","Helvetica Neue",Arial,sans-serif;font-weight:normal;color:#404040;min-height:100%;overflow-x:hidden;background:#edf0f2}.wy-text-left{text-align:left}.wy-text-center{text-align:center}.wy-text-right{text-align:right}.wy-text-large{font-size:120%}.wy-text-normal{font-size:100%}.wy-text-small,small{font-size:80%}.wy-text-strike{text-decoration:line-through}.wy-text-warning{color:#E67E22 !important}a.wy-text-warning:hover{color:#eb9950 !important}.wy-text-info{color:#2980B9 !important}a.wy-text-info:hover{color:#409ad5 !important}.wy-text-success{color:#27AE60 !important}a.wy-text-success:hover{color:#36d278 !important}.wy-text-danger{color:#E74C3C !important}a.wy-text-danger:hover{color:#ed7669 !important}.wy-text-neutral{color:#404040 !important}a.wy-text-neutral:hover{color:#595959 !important}h1,h2,.rst-content .toctree-wrapper p.caption,h3,h4,h5,h6,legend{margin-top:0;font-weight:700;font-family:"Roboto Slab","ff-tisa-web-pro","Georgia",Arial,sans-serif}p{line-height:24px;margin:0;font-size:16px;margin-bottom:24px}h1{font-size:175%}h2,.rst-content .toctree-wrapper p.caption{font-size:150%}h3{font-size:125%}h4{font-size:115%}h5{font-size:110%}h6{font-size:100%}hr{display:block;height:1px;border:0;border-top:1px solid #e1e4e5;margin:24px 0;padding:0}code,.rst-content tt,.rst-content code{white-space:nowrap;max-width:100%;background:#fff;border:solid 1px #e1e4e5;font-size:75%;padding:0 5px;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",Courier,monospace;color:#E74C3C;overflow-x:auto}code.code-large,.rst-content tt.code-large{font-size:90%}.wy-plain-list-disc,.rst-content .section ul,.rst-content .toctree-wrapper ul,article ul{list-style:disc;line-height:24px;margin-bottom:24px}.wy-plain-list-disc li,.rst-content .section ul li,.rst-content .toctree-wrapper ul li,article ul li{list-style:disc;margin-left:24px}.wy-plain-list-disc li p:last-child,.rst-content .section ul li p:last-child,.rst-content .toctree-wrapper ul li p:last-child,article ul li p:last-child{margin-bottom:0}.wy-plain-list-disc li ul,.rst-content .section ul li ul,.rst-content .toctree-wrapper ul li ul,article ul li ul{margin-bottom:0}.wy-plain-list-disc li li,.rst-content .section ul li li,.rst-content .toctree-wrapper ul li li,article ul li li{list-style:circle}.wy-plain-list-disc li li li,.rst-content .section ul li li li,.rst-content .toctree-wrapper ul li li li,article ul li li li{list-style:square}.wy-plain-list-disc li ol li,.rst-content .section ul li ol li,.rst-content .toctree-wrapper ul li ol li,article ul li ol li{list-style:decimal}.wy-plain-list-decimal,.rst-content .section ol,.rst-content ol.arabic,article ol{list-style:decimal;line-height:24px;margin-bottom:24px}.wy-plain-list-decimal li,.rst-content .section ol li,.rst-content ol.arabic li,article ol li{list-style:decimal;margin-left:24px}.wy-plain-list-decimal li p:last-child,.rst-content .section ol li p:last-child,.rst-content ol.arabic li p:last-child,article ol li p:last-child{margin-bottom:0}.wy-plain-list-decimal li ul,.rst-content .section ol li ul,.rst-content ol.arabic li ul,article ol li ul{margin-bottom:0}.wy-plain-list-decimal li ul li,.rst-content .section ol li ul li,.rst-content ol.arabic li ul li,article ol li ul li{list-style:disc}.wy-breadcrumbs{*zoom:1}.wy-breadcrumbs:before,.wy-breadcrumbs:after{display:table;content:""}.wy-breadcrumbs:after{clear:both}.wy-breadcrumbs li{display:inline-block}.wy-breadcrumbs li.wy-breadcrumbs-aside{float:right}.wy-breadcrumbs li a{display:inline-block;padding:5px}.wy-breadcrumbs li a:first-child{padding-left:0}.wy-breadcrumbs li code,.wy-breadcrumbs li .rst-content tt,.rst-content .wy-breadcrumbs li tt{padding:5px;border:none;background:none}.wy-breadcrumbs li code.literal,.wy-breadcrumbs li .rst-content tt.literal,.rst-content .wy-breadcrumbs li tt.literal{color:#404040}.wy-breadcrumbs-extra{margin-bottom:0;color:#b3b3b3;font-size:80%;display:inline-block}@media screen and (max-width: 480px){.wy-breadcrumbs-extra{display:none}.wy-breadcrumbs li.wy-breadcrumbs-aside{display:none}}@media print{.wy-breadcrumbs li.wy-breadcrumbs-aside{display:none}}html{font-size:16px}.wy-affix{position:fixed;top:1.618em}.wy-menu a:hover{text-decoration:none}.wy-menu-horiz{*zoom:1}.wy-menu-horiz:before,.wy-menu-horiz:after{display:table;content:""}.wy-menu-horiz:after{clear:both}.wy-menu-horiz ul,.wy-menu-horiz li{display:inline-block}.wy-menu-horiz li:hover{background:rgba(255,255,255,0.1)}.wy-menu-horiz li.divide-left{border-left:solid 1px #404040}.wy-menu-horiz li.divide-right{border-right:solid 1px #404040}.wy-menu-horiz a{height:32px;display:inline-block;line-height:32px;padding:0 16px}.wy-menu-vertical{width:300px}.wy-menu-vertical header,.wy-menu-vertical p.caption{height:32px;display:inline-block;line-height:32px;padding:0 1.618em;margin-bottom:0;display:block;font-weight:bold;text-transform:uppercase;font-size:80%;white-space:nowrap}.wy-menu-vertical ul{margin-bottom:0}.wy-menu-vertical li.divide-top{border-top:solid 1px #404040}.wy-menu-vertical li.divide-bottom{border-bottom:solid 1px #404040}.wy-menu-vertical li.current{background:#e3e3e3}.wy-menu-vertical li.current a{color:gray;border-right:solid 1px #c9c9c9;padding:.4045em 2.427em}.wy-menu-vertical li.current a:hover{background:#d6d6d6}.wy-menu-vertical li code,.wy-menu-vertical li .rst-content tt,.rst-content .wy-menu-vertical li tt{border:none;background:inherit;color:inherit;padding-left:0;padding-right:0}.wy-menu-vertical li span.toctree-expand{display:block;float:left;margin-left:-1.2em;font-size:.8em;line-height:1.6em;color:#4d4d4d}.wy-menu-vertical li.on a,.wy-menu-vertical li.current>a{color:#404040;padding:.4045em 1.618em;font-weight:bold;position:relative;background:#fcfcfc;border:none;padding-left:1.618em -4px}.wy-menu-vertical li.on a:hover,.wy-menu-vertical li.current>a:hover{background:#fcfcfc}.wy-menu-vertical li.on a:hover span.toctree-expand,.wy-menu-vertical li.current>a:hover span.toctree-expand{color:gray}.wy-menu-vertical li.on a span.toctree-expand,.wy-menu-vertical li.current>a span.toctree-expand{display:block;font-size:.8em;line-height:1.6em;color:#333}.wy-menu-vertical li.toctree-l1.current>a{border-bottom:solid 1px #c9c9c9;border-top:solid 1px #c9c9c9}.wy-menu-vertical li.toctree-l2 a,.wy-menu-vertical li.toctree-l3 a,.wy-menu-vertical li.toctree-l4 a{color:#404040}.wy-menu-vertical li.toctree-l1.current li.toctree-l2>ul,.wy-menu-vertical li.toctree-l2.current li.toctree-l3>ul{display:none}.wy-menu-vertical li.toctree-l1.current li.toctree-l2.current>ul,.wy-menu-vertical li.toctree-l2.current li.toctree-l3.current>ul{display:block}.wy-menu-vertical li.toctree-l2.current>a{background:#c9c9c9;padding:.4045em 2.427em}.wy-menu-vertical li.toctree-l2.current li.toctree-l3>a{display:block;background:#c9c9c9;padding:.4045em 4.045em}.wy-menu-vertical li.toctree-l2 a:hover span.toctree-expand{color:gray}.wy-menu-vertical li.toctree-l2 span.toctree-expand{color:#a3a3a3}.wy-menu-vertical li.toctree-l3{font-size:.9em}.wy-menu-vertical li.toctree-l3.current>a{background:#bdbdbd;padding:.4045em 4.045em}.wy-menu-vertical li.toctree-l3.current li.toctree-l4>a{display:block;background:#bdbdbd;padding:.4045em 5.663em}.wy-menu-vertical li.toctree-l3 a:hover span.toctree-expand{color:gray}.wy-menu-vertical li.toctree-l3 span.toctree-expand{color:#969696}.wy-menu-vertical li.toctree-l4{font-size:.9em}.wy-menu-vertical li.current ul{display:block}.wy-menu-vertical li ul{margin-bottom:0;display:none}.wy-menu-vertical li ul li a{margin-bottom:0;color:#d9d9d9;font-weight:normal}.wy-menu-vertical a{display:inline-block;line-height:18px;padding:.4045em 1.618em;display:block;position:relative;font-size:90%;color:#d9d9d9}.wy-menu-vertical a:hover{background-color:#4e4a4a;cursor:pointer}.wy-menu-vertical a:hover span.toctree-expand{color:#d9d9d9}.wy-menu-vertical a:active{background-color:#2980B9;cursor:pointer;color:#fff}.wy-menu-vertical a:active span.toctree-expand{color:#fff}.wy-side-nav-search{display:block;width:300px;padding:.809em;margin-bottom:.809em;z-index:200;background-color:#2980B9;text-align:center;padding:.809em;display:block;color:#fcfcfc;margin-bottom:.809em}.wy-side-nav-search input[type=text]{width:100%;border-radius:50px;padding:6px 12px;border-color:#2472a4}.wy-side-nav-search img{display:block;margin:auto auto .809em auto;height:45px;width:45px;background-color:#2980B9;padding:5px;border-radius:100%}.wy-side-nav-search>a,.wy-side-nav-search .wy-dropdown>a{color:#fcfcfc;font-size:100%;font-weight:bold;display:inline-block;padding:4px 6px;margin-bottom:.809em}.wy-side-nav-search>a:hover,.wy-side-nav-search .wy-dropdown>a:hover{background:rgba(255,255,255,0.1)}.wy-side-nav-search>a img.logo,.wy-side-nav-search .wy-dropdown>a img.logo{display:block;margin:0 auto;height:auto;width:auto;border-radius:0;max-width:100%;background:transparent}.wy-side-nav-search>a.icon img.logo,.wy-side-nav-search .wy-dropdown>a.icon img.logo{margin-top:.85em}.wy-side-nav-search>div.version{margin-top:-.4045em;margin-bottom:.809em;font-weight:normal;color:rgba(255,255,255,0.3)}.wy-nav .wy-menu-vertical header{color:#2980B9}.wy-nav .wy-menu-vertical a{color:#b3b3b3}.wy-nav .wy-menu-vertical a:hover{background-color:#2980B9;color:#fff}[data-menu-wrap]{-webkit-transition:all .2s ease-in;-moz-transition:all .2s ease-in;transition:all .2s ease-in;position:absolute;opacity:1;width:100%;opacity:0}[data-menu-wrap].move-center{left:0;right:auto;opacity:1}[data-menu-wrap].move-left{right:auto;left:-100%;opacity:0}[data-menu-wrap].move-right{right:-100%;left:auto;opacity:0}.wy-body-for-nav{background:#fcfcfc}.wy-grid-for-nav{position:absolute;width:100%;height:100%}.wy-nav-side{position:fixed;top:0;bottom:0;left:0;padding-bottom:2em;width:300px;overflow-x:hidden;overflow-y:hidden;min-height:100%;color:#9b9b9b;background:#343131;z-index:200}.wy-side-scroll{width:320px;position:relative;overflow-x:hidden;overflow-y:scroll;height:100%}.wy-nav-top{display:none;background:#2980B9;color:#fff;padding:.4045em .809em;position:relative;line-height:50px;text-align:center;font-size:100%;*zoom:1}.wy-nav-top:before,.wy-nav-top:after{display:table;content:""}.wy-nav-top:after{clear:both}.wy-nav-top a{color:#fff;font-weight:bold}.wy-nav-top img{margin-right:12px;height:45px;width:45px;background-color:#2980B9;padding:5px;border-radius:100%}.wy-nav-top i{font-size:30px;float:left;cursor:pointer;padding-top:inherit}.wy-nav-content-wrap{margin-left:300px;background:#fcfcfc;min-height:100%}.wy-nav-content{padding:1.618em 3.236em;height:100%;max-width:800px;margin:auto}.wy-body-mask{position:fixed;width:100%;height:100%;background:rgba(0,0,0,0.2);display:none;z-index:499}.wy-body-mask.on{display:block}footer{color:gray}footer p{margin-bottom:12px}footer span.commit code,footer span.commit .rst-content tt,.rst-content footer span.commit tt{padding:0px;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",Courier,monospace;font-size:1em;background:none;border:none;color:gray}.rst-footer-buttons{*zoom:1}.rst-footer-buttons:before,.rst-footer-buttons:after{width:100%}.rst-footer-buttons:before,.rst-footer-buttons:after{display:table;content:""}.rst-footer-buttons:after{clear:both}.rst-breadcrumbs-buttons{margin-top:12px;*zoom:1}.rst-breadcrumbs-buttons:before,.rst-breadcrumbs-buttons:after{display:table;content:""}.rst-breadcrumbs-buttons:after{clear:both}#search-results .search li{margin-bottom:24px;border-bottom:solid 1px #e1e4e5;padding-bottom:24px}#search-results .search li:first-child{border-top:solid 1px #e1e4e5;padding-top:24px}#search-results .search li a{font-size:120%;margin-bottom:12px;display:inline-block}#search-results .context{color:gray;font-size:90%}@media screen and (max-width: 768px){.wy-body-for-nav{background:#fcfcfc}.wy-nav-top{display:block}.wy-nav-side{left:-300px}.wy-nav-side.shift{width:85%;left:0}.wy-side-scroll{width:auto}.wy-side-nav-search{width:auto}.wy-menu.wy-menu-vertical{width:auto}.wy-nav-content-wrap{margin-left:0}.wy-nav-content-wrap .wy-nav-content{padding:1.618em}.wy-nav-content-wrap.shift{position:fixed;min-width:100%;left:85%;top:0;height:100%;overflow:hidden}}@media screen and (min-width: 1100px){.wy-nav-content-wrap{background:rgba(0,0,0,0.05)}.wy-nav-content{margin:0;background:#fcfcfc}}@media print{.rst-versions,footer,.wy-nav-side{display:none}.wy-nav-content-wrap{margin-left:0}}.rst-versions{position:fixed;bottom:0;left:0;width:300px;color:#fcfcfc;background:#1f1d1d;font-family:"Lato","proxima-nova","Helvetica Neue",Arial,sans-serif;z-index:400}.rst-versions a{color:#2980B9;text-decoration:none}.rst-versions .rst-badge-small{display:none}.rst-versions .rst-current-version{padding:12px;background-color:#272525;display:block;text-align:right;font-size:90%;cursor:pointer;color:#27AE60;*zoom:1}.rst-versions .rst-current-version:before,.rst-versions .rst-current-version:after{display:table;content:""}.rst-versions .rst-current-version:after{clear:both}.rst-versions .rst-current-version .fa,.rst-versions .rst-current-version .wy-menu-vertical li span.toctree-expand,.wy-menu-vertical li .rst-versions .rst-current-version span.toctree-expand,.rst-versions .rst-current-version .rst-content .admonition-title,.rst-content .rst-versions .rst-current-version .admonition-title,.rst-versions .rst-current-version .rst-content h1 .headerlink,.rst-content h1 .rst-versions .rst-current-version .headerlink,.rst-versions .rst-current-version .rst-content h2 .headerlink,.rst-content h2 .rst-versions .rst-current-version .headerlink,.rst-versions .rst-current-version .rst-content h3 .headerlink,.rst-content h3 .rst-versions .rst-current-version .headerlink,.rst-versions .rst-current-version .rst-content h4 .headerlink,.rst-content h4 .rst-versions .rst-current-version .headerlink,.rst-versions .rst-current-version .rst-content h5 .headerlink,.rst-content h5 .rst-versions .rst-current-version .headerlink,.rst-versions .rst-current-version .rst-content h6 .headerlink,.rst-content h6 .rst-versions .rst-current-version .headerlink,.rst-versions .rst-current-version .rst-content dl dt .headerlink,.rst-content dl dt .rst-versions .rst-current-version .headerlink,.rst-versions .rst-current-version .rst-content p.caption .headerlink,.rst-content p.caption .rst-versions .rst-current-version .headerlink,.rst-versions .rst-current-version .rst-content table>caption .headerlink,.rst-content table>caption .rst-versions .rst-current-version .headerlink,.rst-versions .rst-current-version .rst-content tt.download span:first-child,.rst-content tt.download .rst-versions .rst-current-version span:first-child,.rst-versions .rst-current-version .rst-content code.download span:first-child,.rst-content code.download .rst-versions .rst-current-version span:first-child,.rst-versions .rst-current-version .icon{color:#fcfcfc}.rst-versions .rst-current-version .fa-book,.rst-versions .rst-current-version .icon-book{float:left}.rst-versions .rst-current-version .icon-book{float:left}.rst-versions .rst-current-version.rst-out-of-date{background-color:#E74C3C;color:#fff}.rst-versions .rst-current-version.rst-active-old-version{background-color:#F1C40F;color:#000}.rst-versions.shift-up{height:auto;max-height:100%}.rst-versions.shift-up .rst-other-versions{display:block}.rst-versions .rst-other-versions{font-size:90%;padding:12px;color:gray;display:none}.rst-versions .rst-other-versions hr{display:block;height:1px;border:0;margin:20px 0;padding:0;border-top:solid 1px #413d3d}.rst-versions .rst-other-versions dd{display:inline-block;margin:0}.rst-versions .rst-other-versions dd a{display:inline-block;padding:6px;color:#fcfcfc}.rst-versions.rst-badge{width:auto;bottom:20px;right:20px;left:auto;border:none;max-width:300px}.rst-versions.rst-badge .icon-book{float:none}.rst-versions.rst-badge .fa-book,.rst-versions.rst-badge .icon-book{float:none}.rst-versions.rst-badge.shift-up .rst-current-version{text-align:right}.rst-versions.rst-badge.shift-up .rst-current-version .fa-book,.rst-versions.rst-badge.shift-up .rst-current-version .icon-book{float:left}.rst-versions.rst-badge.shift-up .rst-current-version .icon-book{float:left}.rst-versions.rst-badge .rst-current-version{width:auto;height:30px;line-height:30px;padding:0 6px;display:block;text-align:center}@media screen and (max-width: 768px){.rst-versions{width:85%;display:none}.rst-versions.shift{display:block}}.rst-content img{max-width:100%;height:auto}.rst-content div.figure{margin-bottom:24px}.rst-content div.figure p.caption{font-style:italic}.rst-content div.figure p:last-child.caption{margin-bottom:0px}.rst-content div.figure.align-center{text-align:center}.rst-content .section>img,.rst-content .section>a>img{margin-bottom:24px}.rst-content abbr[title]{text-decoration:none}.rst-content.style-external-links a.reference.external:after{font-family:FontAwesome;content:"";color:#b3b3b3;vertical-align:super;font-size:60%;margin:0 .2em}.rst-content blockquote{margin-left:24px;line-height:24px;margin-bottom:24px}.rst-content pre.literal-block{white-space:pre;margin:0;padding:12px 12px;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",Courier,monospace;display:block;overflow:auto}.rst-content pre.literal-block,.rst-content div[class^='highlight']{border:1px solid #e1e4e5;overflow-x:auto;margin:1px 0 24px 0}.rst-content pre.literal-block div[class^='highlight'],.rst-content div[class^='highlight'] div[class^='highlight']{padding:0px;border:none;margin:0}.rst-content div[class^='highlight'] td.code{width:100%}.rst-content .linenodiv pre{border-right:solid 1px #e6e9ea;margin:0;padding:12px 12px;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",Courier,monospace;user-select:none;pointer-events:none}.rst-content div[class^='highlight'] pre{white-space:pre;margin:0;padding:12px 12px;display:block;overflow:auto}.rst-content div[class^='highlight'] pre .hll{display:block;margin:0 -12px;padding:0 12px}.rst-content pre.literal-block,.rst-content div[class^='highlight'] pre,.rst-content .linenodiv pre{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",Courier,monospace;font-size:12px;line-height:1.4}@media print{.rst-content .codeblock,.rst-content div[class^='highlight'],.rst-content div[class^='highlight'] pre{white-space:pre-wrap}}.rst-content .note .last,.rst-content .attention .last,.rst-content .caution .last,.rst-content .danger .last,.rst-content .error .last,.rst-content .hint .last,.rst-content .important .last,.rst-content .tip .last,.rst-content .warning .last,.rst-content .seealso .last,.rst-content .admonition-todo .last,.rst-content .admonition .last{margin-bottom:0}.rst-content .admonition-title:before{margin-right:4px}.rst-content .admonition table{border-color:rgba(0,0,0,0.1)}.rst-content .admonition table td,.rst-content .admonition table th{background:transparent !important;border-color:rgba(0,0,0,0.1) !important}.rst-content .section ol.loweralpha,.rst-content .section ol.loweralpha li{list-style:lower-alpha}.rst-content .section ol.upperalpha,.rst-content .section ol.upperalpha li{list-style:upper-alpha}.rst-content .section ol p,.rst-content .section ul p{margin-bottom:12px}.rst-content .section ol p:last-child,.rst-content .section ul p:last-child{margin-bottom:24px}.rst-content .line-block{margin-left:0px;margin-bottom:24px;line-height:24px}.rst-content .line-block .line-block{margin-left:24px;margin-bottom:0px}.rst-content .topic-title{font-weight:bold;margin-bottom:12px}.rst-content .toc-backref{color:#404040}.rst-content .align-right{float:right;margin:0px 0px 24px 24px}.rst-content .align-left{float:left;margin:0px 24px 24px 0px}.rst-content .align-center{margin:auto}.rst-content .align-center:not(table){display:block}.rst-content h1 .headerlink,.rst-content h2 .headerlink,.rst-content .toctree-wrapper p.caption .headerlink,.rst-content h3 .headerlink,.rst-content h4 .headerlink,.rst-content h5 .headerlink,.rst-content h6 .headerlink,.rst-content dl dt .headerlink,.rst-content p.caption .headerlink,.rst-content table>caption .headerlink{visibility:hidden;font-size:14px}.rst-content h1 .headerlink:after,.rst-content h2 .headerlink:after,.rst-content .toctree-wrapper p.caption .headerlink:after,.rst-content h3 .headerlink:after,.rst-content h4 .headerlink:after,.rst-content h5 .headerlink:after,.rst-content h6 .headerlink:after,.rst-content dl dt .headerlink:after,.rst-content p.caption .headerlink:after,.rst-content table>caption .headerlink:after{content:"";font-family:FontAwesome}.rst-content h1:hover .headerlink:after,.rst-content h2:hover .headerlink:after,.rst-content .toctree-wrapper p.caption:hover .headerlink:after,.rst-content h3:hover .headerlink:after,.rst-content h4:hover .headerlink:after,.rst-content h5:hover .headerlink:after,.rst-content h6:hover .headerlink:after,.rst-content dl dt:hover .headerlink:after,.rst-content p.caption:hover .headerlink:after,.rst-content table>caption:hover .headerlink:after{visibility:visible}.rst-content table>caption .headerlink:after{font-size:12px}.rst-content .centered{text-align:center}.rst-content .sidebar{float:right;width:40%;display:block;margin:0 0 24px 24px;padding:24px;background:#f3f6f6;border:solid 1px #e1e4e5}.rst-content .sidebar p,.rst-content .sidebar ul,.rst-content .sidebar dl{font-size:90%}.rst-content .sidebar .last{margin-bottom:0}.rst-content .sidebar .sidebar-title{display:block;font-family:"Roboto Slab","ff-tisa-web-pro","Georgia",Arial,sans-serif;font-weight:bold;background:#e1e4e5;padding:6px 12px;margin:-24px;margin-bottom:24px;font-size:100%}.rst-content .highlighted{background:#F1C40F;display:inline-block;font-weight:bold;padding:0 6px}.rst-content .footnote-reference,.rst-content .citation-reference{vertical-align:baseline;position:relative;top:-0.4em;line-height:0;font-size:90%}.rst-content table.docutils.citation,.rst-content table.docutils.footnote{background:none;border:none;color:gray}.rst-content table.docutils.citation td,.rst-content table.docutils.citation tr,.rst-content table.docutils.footnote td,.rst-content table.docutils.footnote tr{border:none;background-color:transparent !important;white-space:normal}.rst-content table.docutils.citation td.label,.rst-content table.docutils.footnote td.label{padding-left:0;padding-right:0;vertical-align:top}.rst-content table.docutils.citation tt,.rst-content table.docutils.citation code,.rst-content table.docutils.footnote tt,.rst-content table.docutils.footnote code{color:#555}.rst-content .wy-table-responsive.citation,.rst-content .wy-table-responsive.footnote{margin-bottom:0}.rst-content .wy-table-responsive.citation+:not(.citation),.rst-content .wy-table-responsive.footnote+:not(.footnote){margin-top:24px}.rst-content .wy-table-responsive.citation:last-child,.rst-content .wy-table-responsive.footnote:last-child{margin-bottom:24px}.rst-content table.docutils th{border-color:#e1e4e5}.rst-content table.docutils td .last,.rst-content table.docutils td .last :last-child{margin-bottom:0}.rst-content table.field-list{border:none}.rst-content table.field-list td{border:none}.rst-content table.field-list td>strong{display:inline-block}.rst-content table.field-list .field-name{padding-right:10px;text-align:left;white-space:nowrap}.rst-content table.field-list .field-body{text-align:left}.rst-content tt,.rst-content tt,.rst-content code{color:#000;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",Courier,monospace;padding:2px 5px}.rst-content tt big,.rst-content tt em,.rst-content tt big,.rst-content code big,.rst-content tt em,.rst-content code em{font-size:100% !important;line-height:normal}.rst-content tt.literal,.rst-content tt.literal,.rst-content code.literal{color:#E74C3C}.rst-content tt.xref,a .rst-content tt,.rst-content tt.xref,.rst-content code.xref,a .rst-content tt,a .rst-content code{font-weight:bold;color:#404040}.rst-content pre,.rst-content kbd,.rst-content samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",Courier,monospace}.rst-content a tt,.rst-content a tt,.rst-content a code{color:#2980B9}.rst-content dl{margin-bottom:24px}.rst-content dl dt{font-weight:bold;margin-bottom:12px}.rst-content dl p,.rst-content dl table,.rst-content dl ul,.rst-content dl ol{margin-bottom:12px !important}.rst-content dl dd{margin:0 0 12px 24px;line-height:24px}.rst-content dl:not(.docutils){margin-bottom:24px}.rst-content dl:not(.docutils) dt{display:table;margin:6px 0;font-size:90%;line-height:normal;background:#e7f2fa;color:#2980B9;border-top:solid 3px #6ab0de;padding:6px;position:relative}.rst-content dl:not(.docutils) dt:before{color:#6ab0de}.rst-content dl:not(.docutils) dt .headerlink{color:#404040;font-size:100% !important}.rst-content dl:not(.docutils) dl dt{margin-bottom:6px;border:none;border-left:solid 3px #ccc;background:#f0f0f0;color:#555}.rst-content dl:not(.docutils) dl dt .headerlink{color:#404040;font-size:100% !important}.rst-content dl:not(.docutils) dt:first-child{margin-top:0}.rst-content dl:not(.docutils) tt,.rst-content dl:not(.docutils) tt,.rst-content dl:not(.docutils) code{font-weight:bold}.rst-content dl:not(.docutils) tt.descname,.rst-content dl:not(.docutils) tt.descclassname,.rst-content dl:not(.docutils) tt.descname,.rst-content dl:not(.docutils) code.descname,.rst-content dl:not(.docutils) tt.descclassname,.rst-content dl:not(.docutils) code.descclassname{background-color:transparent;border:none;padding:0;font-size:100% !important}.rst-content dl:not(.docutils) tt.descname,.rst-content dl:not(.docutils) tt.descname,.rst-content dl:not(.docutils) code.descname{font-weight:bold}.rst-content dl:not(.docutils) .optional{display:inline-block;padding:0 4px;color:#000;font-weight:bold}.rst-content dl:not(.docutils) .property{display:inline-block;padding-right:8px}.rst-content .viewcode-link,.rst-content .viewcode-back{display:inline-block;color:#27AE60;font-size:80%;padding-left:24px}.rst-content .viewcode-back{display:block;float:right}.rst-content p.rubric{margin-bottom:12px;font-weight:bold}.rst-content tt.download,.rst-content code.download{background:inherit;padding:inherit;font-weight:normal;font-family:inherit;font-size:inherit;color:inherit;border:inherit;white-space:inherit}.rst-content tt.download span:first-child,.rst-content code.download span:first-child{-webkit-font-smoothing:subpixel-antialiased}.rst-content tt.download span:first-child:before,.rst-content code.download span:first-child:before{margin-right:4px}.rst-content .guilabel{border:1px solid #7fbbe3;background:#e7f2fa;font-size:80%;font-weight:700;border-radius:4px;padding:2.4px 6px;margin:auto 2px}.rst-content .versionmodified{font-style:italic}@media screen and (max-width: 480px){.rst-content .sidebar{width:100%}}span[id*='MathJax-Span']{color:#404040}.math{text-align:center}@font-face{font-family:"Lato";src:url("../fonts/Lato/lato-regular.eot");src:url("../fonts/Lato/lato-regular.eot?#iefix") format("embedded-opentype"),url("../fonts/Lato/lato-regular.woff2") format("woff2"),url("../fonts/Lato/lato-regular.woff") format("woff"),url("../fonts/Lato/lato-regular.ttf") format("truetype");font-weight:400;font-style:normal}@font-face{font-family:"Lato";src:url("../fonts/Lato/lato-bold.eot");src:url("../fonts/Lato/lato-bold.eot?#iefix") format("embedded-opentype"),url("../fonts/Lato/lato-bold.woff2") format("woff2"),url("../fonts/Lato/lato-bold.woff") format("woff"),url("../fonts/Lato/lato-bold.ttf") format("truetype");font-weight:700;font-style:normal}@font-face{font-family:"Lato";src:url("../fonts/Lato/lato-bolditalic.eot");src:url("../fonts/Lato/lato-bolditalic.eot?#iefix") format("embedded-opentype"),url("../fonts/Lato/lato-bolditalic.woff2") format("woff2"),url("../fonts/Lato/lato-bolditalic.woff") format("woff"),url("../fonts/Lato/lato-bolditalic.ttf") format("truetype");font-weight:700;font-style:italic}@font-face{font-family:"Lato";src:url("../fonts/Lato/lato-italic.eot");src:url("../fonts/Lato/lato-italic.eot?#iefix") format("embedded-opentype"),url("../fonts/Lato/lato-italic.woff2") format("woff2"),url("../fonts/Lato/lato-italic.woff") format("woff"),url("../fonts/Lato/lato-italic.ttf") format("truetype");font-weight:400;font-style:italic}@font-face{font-family:"Roboto Slab";font-style:normal;font-weight:400;src:url("../fonts/RobotoSlab/roboto-slab.eot");src:url("../fonts/RobotoSlab/roboto-slab-v7-regular.eot?#iefix") format("embedded-opentype"),url("../fonts/RobotoSlab/roboto-slab-v7-regular.woff2") format("woff2"),url("../fonts/RobotoSlab/roboto-slab-v7-regular.woff") format("woff"),url("../fonts/RobotoSlab/roboto-slab-v7-regular.ttf") format("truetype")}@font-face{font-family:"Roboto Slab";font-style:normal;font-weight:700;src:url("../fonts/RobotoSlab/roboto-slab-v7-bold.eot");src:url("../fonts/RobotoSlab/roboto-slab-v7-bold.eot?#iefix") format("embedded-opentype"),url("../fonts/RobotoSlab/roboto-slab-v7-bold.woff2") format("woff2"),url("../fonts/RobotoSlab/roboto-slab-v7-bold.woff") format("woff"),url("../fonts/RobotoSlab/roboto-slab-v7-bold.ttf") format("truetype")} diff --git a/doc/_static/doctools.js b/doc/_static/doctools.js new file mode 100644 index 00000000..ffadbec1 --- /dev/null +++ b/doc/_static/doctools.js @@ -0,0 +1,315 @@ +/* + * doctools.js + * ~~~~~~~~~~~ + * + * Sphinx JavaScript utilities for all documentation. + * + * :copyright: Copyright 2007-2018 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +/** + * select a different prefix for underscore + */ +$u = _.noConflict(); + +/** + * make the code below compatible with browsers without + * an installed firebug like debugger +if (!window.console || !console.firebug) { + var names = ["log", "debug", "info", "warn", "error", "assert", "dir", + "dirxml", "group", "groupEnd", "time", "timeEnd", "count", "trace", + "profile", "profileEnd"]; + window.console = {}; + for (var i = 0; i < names.length; ++i) + window.console[names[i]] = function() {}; +} + */ + +/** + * small helper function to urldecode strings + */ +jQuery.urldecode = function(x) { + return decodeURIComponent(x).replace(/\+/g, ' '); +}; + +/** + * small helper function to urlencode strings + */ +jQuery.urlencode = encodeURIComponent; + +/** + * This function returns the parsed url parameters of the + * current request. Multiple values per key are supported, + * it will always return arrays of strings for the value parts. + */ +jQuery.getQueryParameters = function(s) { + if (typeof s === 'undefined') + s = document.location.search; + var parts = s.substr(s.indexOf('?') + 1).split('&'); + var result = {}; + for (var i = 0; i < parts.length; i++) { + var tmp = parts[i].split('=', 2); + var key = jQuery.urldecode(tmp[0]); + var value = jQuery.urldecode(tmp[1]); + if (key in result) + result[key].push(value); + else + result[key] = [value]; + } + return result; +}; + +/** + * highlight a given string on a jquery object by wrapping it in + * span elements with the given class name. + */ +jQuery.fn.highlightText = function(text, className) { + function highlight(node, addItems) { + if (node.nodeType === 3) { + var val = node.nodeValue; + var pos = val.toLowerCase().indexOf(text); + if (pos >= 0 && + !jQuery(node.parentNode).hasClass(className) && + !jQuery(node.parentNode).hasClass("nohighlight")) { + var span; + var isInSVG = jQuery(node).closest("body, svg, foreignObject").is("svg"); + if (isInSVG) { + span = document.createElementNS("http://www.w3.org/2000/svg", "tspan"); + } else { + span = document.createElement("span"); + span.className = className; + } + span.appendChild(document.createTextNode(val.substr(pos, text.length))); + node.parentNode.insertBefore(span, node.parentNode.insertBefore( + document.createTextNode(val.substr(pos + text.length)), + node.nextSibling)); + node.nodeValue = val.substr(0, pos); + if (isInSVG) { + var bbox = span.getBBox(); + var rect = document.createElementNS("http://www.w3.org/2000/svg", "rect"); + rect.x.baseVal.value = bbox.x; + rect.y.baseVal.value = bbox.y; + rect.width.baseVal.value = bbox.width; + rect.height.baseVal.value = bbox.height; + rect.setAttribute('class', className); + var parentOfText = node.parentNode.parentNode; + addItems.push({ + "parent": node.parentNode, + "target": rect}); + } + } + } + else if (!jQuery(node).is("button, select, textarea")) { + jQuery.each(node.childNodes, function() { + highlight(this, addItems); + }); + } + } + var addItems = []; + var result = this.each(function() { + highlight(this, addItems); + }); + for (var i = 0; i < addItems.length; ++i) { + jQuery(addItems[i].parent).before(addItems[i].target); + } + return result; +}; + +/* + * backward compatibility for jQuery.browser + * This will be supported until firefox bug is fixed. + */ +if (!jQuery.browser) { + jQuery.uaMatch = function(ua) { + ua = ua.toLowerCase(); + + var match = /(chrome)[ \/]([\w.]+)/.exec(ua) || + /(webkit)[ \/]([\w.]+)/.exec(ua) || + /(opera)(?:.*version|)[ \/]([\w.]+)/.exec(ua) || + /(msie) ([\w.]+)/.exec(ua) || + ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua) || + []; + + return { + browser: match[ 1 ] || "", + version: match[ 2 ] || "0" + }; + }; + jQuery.browser = {}; + jQuery.browser[jQuery.uaMatch(navigator.userAgent).browser] = true; +} + +/** + * Small JavaScript module for the documentation. + */ +var Documentation = { + + init : function() { + this.fixFirefoxAnchorBug(); + this.highlightSearchWords(); + this.initIndexTable(); + if (DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) { + this.initOnKeyListeners(); + } + }, + + /** + * i18n support + */ + TRANSLATIONS : {}, + PLURAL_EXPR : function(n) { return n === 1 ? 0 : 1; }, + LOCALE : 'unknown', + + // gettext and ngettext don't access this so that the functions + // can safely bound to a different name (_ = Documentation.gettext) + gettext : function(string) { + var translated = Documentation.TRANSLATIONS[string]; + if (typeof translated === 'undefined') + return string; + return (typeof translated === 'string') ? translated : translated[0]; + }, + + ngettext : function(singular, plural, n) { + var translated = Documentation.TRANSLATIONS[singular]; + if (typeof translated === 'undefined') + return (n == 1) ? singular : plural; + return translated[Documentation.PLURALEXPR(n)]; + }, + + addTranslations : function(catalog) { + for (var key in catalog.messages) + this.TRANSLATIONS[key] = catalog.messages[key]; + this.PLURAL_EXPR = new Function('n', 'return +(' + catalog.plural_expr + ')'); + this.LOCALE = catalog.locale; + }, + + /** + * add context elements like header anchor links + */ + addContextElements : function() { + $('div[id] > :header:first').each(function() { + $('\u00B6'). + attr('href', '#' + this.id). + attr('title', _('Permalink to this headline')). + appendTo(this); + }); + $('dt[id]').each(function() { + $('\u00B6'). + attr('href', '#' + this.id). + attr('title', _('Permalink to this definition')). + appendTo(this); + }); + }, + + /** + * workaround a firefox stupidity + * see: https://bugzilla.mozilla.org/show_bug.cgi?id=645075 + */ + fixFirefoxAnchorBug : function() { + if (document.location.hash && $.browser.mozilla) + window.setTimeout(function() { + document.location.href += ''; + }, 10); + }, + + /** + * highlight the search words provided in the url in the text + */ + highlightSearchWords : function() { + var params = $.getQueryParameters(); + var terms = (params.highlight) ? params.highlight[0].split(/\s+/) : []; + if (terms.length) { + var body = $('div.body'); + if (!body.length) { + body = $('body'); + } + window.setTimeout(function() { + $.each(terms, function() { + body.highlightText(this.toLowerCase(), 'highlighted'); + }); + }, 10); + $('') + .appendTo($('#searchbox')); + } + }, + + /** + * init the domain index toggle buttons + */ + initIndexTable : function() { + var togglers = $('img.toggler').click(function() { + var src = $(this).attr('src'); + var idnum = $(this).attr('id').substr(7); + $('tr.cg-' + idnum).toggle(); + if (src.substr(-9) === 'minus.png') + $(this).attr('src', src.substr(0, src.length-9) + 'plus.png'); + else + $(this).attr('src', src.substr(0, src.length-8) + 'minus.png'); + }).css('display', ''); + if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) { + togglers.click(); + } + }, + + /** + * helper function to hide the search marks again + */ + hideSearchWords : function() { + $('#searchbox .highlight-link').fadeOut(300); + $('span.highlighted').removeClass('highlighted'); + }, + + /** + * make the url absolute + */ + makeURL : function(relativeURL) { + return DOCUMENTATION_OPTIONS.URL_ROOT + '/' + relativeURL; + }, + + /** + * get the current relative url + */ + getCurrentURL : function() { + var path = document.location.pathname; + var parts = path.split(/\//); + $.each(DOCUMENTATION_OPTIONS.URL_ROOT.split(/\//), function() { + if (this === '..') + parts.pop(); + }); + var url = parts.join('/'); + return path.substring(url.lastIndexOf('/') + 1, path.length - 1); + }, + + initOnKeyListeners: function() { + $(document).keyup(function(event) { + var activeElementType = document.activeElement.tagName; + // don't navigate when in search box or textarea + if (activeElementType !== 'TEXTAREA' && activeElementType !== 'INPUT' && activeElementType !== 'SELECT') { + switch (event.keyCode) { + case 37: // left + var prevHref = $('link[rel="prev"]').prop('href'); + if (prevHref) { + window.location.href = prevHref; + return false; + } + case 39: // right + var nextHref = $('link[rel="next"]').prop('href'); + if (nextHref) { + window.location.href = nextHref; + return false; + } + } + } + }); + } +}; + +// quick alias for translations +_ = Documentation.gettext; + +$(document).ready(function() { + Documentation.init(); +}); diff --git a/doc/_static/documentation_options.js b/doc/_static/documentation_options.js new file mode 100644 index 00000000..01cfcd93 --- /dev/null +++ b/doc/_static/documentation_options.js @@ -0,0 +1,296 @@ +var DOCUMENTATION_OPTIONS = { + URL_ROOT: document.getElementById("documentation_options").getAttribute('data-url_root'), + VERSION: '2.0', + LANGUAGE: 'None', + COLLAPSE_INDEX: false, + FILE_SUFFIX: '.html', + HAS_SOURCE: true, + SOURCELINK_SUFFIX: '.txt', + NAVIGATION_WITH_KEYS: false, + SEARCH_LANGUAGE_STOP_WORDS: ["a","and","are","as","at","be","but","by","for","if","in","into","is","it","near","no","not","of","on","or","such","that","the","their","then","there","these","they","this","to","was","will","with"] +}; + + + +/* Non-minified version JS is _stemmer.js if file is provided */ +/** + * Porter Stemmer + */ +var Stemmer = function() { + + var step2list = { + ational: 'ate', + tional: 'tion', + enci: 'ence', + anci: 'ance', + izer: 'ize', + bli: 'ble', + alli: 'al', + entli: 'ent', + eli: 'e', + ousli: 'ous', + ization: 'ize', + ation: 'ate', + ator: 'ate', + alism: 'al', + iveness: 'ive', + fulness: 'ful', + ousness: 'ous', + aliti: 'al', + iviti: 'ive', + biliti: 'ble', + logi: 'log' + }; + + var step3list = { + icate: 'ic', + ative: '', + alize: 'al', + iciti: 'ic', + ical: 'ic', + ful: '', + ness: '' + }; + + var c = "[^aeiou]"; // consonant + var v = "[aeiouy]"; // vowel + var C = c + "[^aeiouy]*"; // consonant sequence + var V = v + "[aeiou]*"; // vowel sequence + + var mgr0 = "^(" + C + ")?" + V + C; // [C]VC... is m>0 + var meq1 = "^(" + C + ")?" + V + C + "(" + V + ")?$"; // [C]VC[V] is m=1 + var mgr1 = "^(" + C + ")?" + V + C + V + C; // [C]VCVC... is m>1 + var s_v = "^(" + C + ")?" + v; // vowel in stem + + this.stemWord = function (w) { + var stem; + var suffix; + var firstch; + var origword = w; + + if (w.length < 3) + return w; + + var re; + var re2; + var re3; + var re4; + + firstch = w.substr(0,1); + if (firstch == "y") + w = firstch.toUpperCase() + w.substr(1); + + // Step 1a + re = /^(.+?)(ss|i)es$/; + re2 = /^(.+?)([^s])s$/; + + if (re.test(w)) + w = w.replace(re,"$1$2"); + else if (re2.test(w)) + w = w.replace(re2,"$1$2"); + + // Step 1b + re = /^(.+?)eed$/; + re2 = /^(.+?)(ed|ing)$/; + if (re.test(w)) { + var fp = re.exec(w); + re = new RegExp(mgr0); + if (re.test(fp[1])) { + re = /.$/; + w = w.replace(re,""); + } + } + else if (re2.test(w)) { + var fp = re2.exec(w); + stem = fp[1]; + re2 = new RegExp(s_v); + if (re2.test(stem)) { + w = stem; + re2 = /(at|bl|iz)$/; + re3 = new RegExp("([^aeiouylsz])\\1$"); + re4 = new RegExp("^" + C + v + "[^aeiouwxy]$"); + if (re2.test(w)) + w = w + "e"; + else if (re3.test(w)) { + re = /.$/; + w = w.replace(re,""); + } + else if (re4.test(w)) + w = w + "e"; + } + } + + // Step 1c + re = /^(.+?)y$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(s_v); + if (re.test(stem)) + w = stem + "i"; + } + + // Step 2 + re = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + suffix = fp[2]; + re = new RegExp(mgr0); + if (re.test(stem)) + w = stem + step2list[suffix]; + } + + // Step 3 + re = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + suffix = fp[2]; + re = new RegExp(mgr0); + if (re.test(stem)) + w = stem + step3list[suffix]; + } + + // Step 4 + re = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/; + re2 = /^(.+?)(s|t)(ion)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(mgr1); + if (re.test(stem)) + w = stem; + } + else if (re2.test(w)) { + var fp = re2.exec(w); + stem = fp[1] + fp[2]; + re2 = new RegExp(mgr1); + if (re2.test(stem)) + w = stem; + } + + // Step 5 + re = /^(.+?)e$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(mgr1); + re2 = new RegExp(meq1); + re3 = new RegExp("^" + C + v + "[^aeiouwxy]$"); + if (re.test(stem) || (re2.test(stem) && !(re3.test(stem)))) + w = stem; + } + re = /ll$/; + re2 = new RegExp(mgr1); + if (re.test(w) && re2.test(w)) { + re = /.$/; + w = w.replace(re,""); + } + + // and turn initial Y back to y + if (firstch == "y") + w = firstch.toLowerCase() + w.substr(1); + return w; + } +} + + + + + +var splitChars = (function() { + var result = {}; + var singles = [96, 180, 187, 191, 215, 247, 749, 885, 903, 907, 909, 930, 1014, 1648, + 1748, 1809, 2416, 2473, 2481, 2526, 2601, 2609, 2612, 2615, 2653, 2702, + 2706, 2729, 2737, 2740, 2857, 2865, 2868, 2910, 2928, 2948, 2961, 2971, + 2973, 3085, 3089, 3113, 3124, 3213, 3217, 3241, 3252, 3295, 3341, 3345, + 3369, 3506, 3516, 3633, 3715, 3721, 3736, 3744, 3748, 3750, 3756, 3761, + 3781, 3912, 4239, 4347, 4681, 4695, 4697, 4745, 4785, 4799, 4801, 4823, + 4881, 5760, 5901, 5997, 6313, 7405, 8024, 8026, 8028, 8030, 8117, 8125, + 8133, 8181, 8468, 8485, 8487, 8489, 8494, 8527, 11311, 11359, 11687, 11695, + 11703, 11711, 11719, 11727, 11735, 12448, 12539, 43010, 43014, 43019, 43587, + 43696, 43713, 64286, 64297, 64311, 64317, 64319, 64322, 64325, 65141]; + var i, j, start, end; + for (i = 0; i < singles.length; i++) { + result[singles[i]] = true; + } + var ranges = [[0, 47], [58, 64], [91, 94], [123, 169], [171, 177], [182, 184], [706, 709], + [722, 735], [741, 747], [751, 879], [888, 889], [894, 901], [1154, 1161], + [1318, 1328], [1367, 1368], [1370, 1376], [1416, 1487], [1515, 1519], [1523, 1568], + [1611, 1631], [1642, 1645], [1750, 1764], [1767, 1773], [1789, 1790], [1792, 1807], + [1840, 1868], [1958, 1968], [1970, 1983], [2027, 2035], [2038, 2041], [2043, 2047], + [2070, 2073], [2075, 2083], [2085, 2087], [2089, 2307], [2362, 2364], [2366, 2383], + [2385, 2391], [2402, 2405], [2419, 2424], [2432, 2436], [2445, 2446], [2449, 2450], + [2483, 2485], [2490, 2492], [2494, 2509], [2511, 2523], [2530, 2533], [2546, 2547], + [2554, 2564], [2571, 2574], [2577, 2578], [2618, 2648], [2655, 2661], [2672, 2673], + [2677, 2692], [2746, 2748], [2750, 2767], [2769, 2783], [2786, 2789], [2800, 2820], + [2829, 2830], [2833, 2834], [2874, 2876], [2878, 2907], [2914, 2917], [2930, 2946], + [2955, 2957], [2966, 2968], [2976, 2978], [2981, 2983], [2987, 2989], [3002, 3023], + [3025, 3045], [3059, 3076], [3130, 3132], [3134, 3159], [3162, 3167], [3170, 3173], + [3184, 3191], [3199, 3204], [3258, 3260], [3262, 3293], [3298, 3301], [3312, 3332], + [3386, 3388], [3390, 3423], [3426, 3429], [3446, 3449], [3456, 3460], [3479, 3481], + [3518, 3519], [3527, 3584], [3636, 3647], [3655, 3663], [3674, 3712], [3717, 3718], + [3723, 3724], [3726, 3731], [3752, 3753], [3764, 3772], [3774, 3775], [3783, 3791], + [3802, 3803], [3806, 3839], [3841, 3871], [3892, 3903], [3949, 3975], [3980, 4095], + [4139, 4158], [4170, 4175], [4182, 4185], [4190, 4192], [4194, 4196], [4199, 4205], + [4209, 4212], [4226, 4237], [4250, 4255], [4294, 4303], [4349, 4351], [4686, 4687], + [4702, 4703], [4750, 4751], [4790, 4791], [4806, 4807], [4886, 4887], [4955, 4968], + [4989, 4991], [5008, 5023], [5109, 5120], [5741, 5742], [5787, 5791], [5867, 5869], + [5873, 5887], [5906, 5919], [5938, 5951], [5970, 5983], [6001, 6015], [6068, 6102], + [6104, 6107], [6109, 6111], [6122, 6127], [6138, 6159], [6170, 6175], [6264, 6271], + [6315, 6319], [6390, 6399], [6429, 6469], [6510, 6511], [6517, 6527], [6572, 6592], + [6600, 6607], [6619, 6655], [6679, 6687], [6741, 6783], [6794, 6799], [6810, 6822], + [6824, 6916], [6964, 6980], [6988, 6991], [7002, 7042], [7073, 7085], [7098, 7167], + [7204, 7231], [7242, 7244], [7294, 7400], [7410, 7423], [7616, 7679], [7958, 7959], + [7966, 7967], [8006, 8007], [8014, 8015], [8062, 8063], [8127, 8129], [8141, 8143], + [8148, 8149], [8156, 8159], [8173, 8177], [8189, 8303], [8306, 8307], [8314, 8318], + [8330, 8335], [8341, 8449], [8451, 8454], [8456, 8457], [8470, 8472], [8478, 8483], + [8506, 8507], [8512, 8516], [8522, 8525], [8586, 9311], [9372, 9449], [9472, 10101], + [10132, 11263], [11493, 11498], [11503, 11516], [11518, 11519], [11558, 11567], + [11622, 11630], [11632, 11647], [11671, 11679], [11743, 11822], [11824, 12292], + [12296, 12320], [12330, 12336], [12342, 12343], [12349, 12352], [12439, 12444], + [12544, 12548], [12590, 12592], [12687, 12689], [12694, 12703], [12728, 12783], + [12800, 12831], [12842, 12880], [12896, 12927], [12938, 12976], [12992, 13311], + [19894, 19967], [40908, 40959], [42125, 42191], [42238, 42239], [42509, 42511], + [42540, 42559], [42592, 42593], [42607, 42622], [42648, 42655], [42736, 42774], + [42784, 42785], [42889, 42890], [42893, 43002], [43043, 43055], [43062, 43071], + [43124, 43137], [43188, 43215], [43226, 43249], [43256, 43258], [43260, 43263], + [43302, 43311], [43335, 43359], [43389, 43395], [43443, 43470], [43482, 43519], + [43561, 43583], [43596, 43599], [43610, 43615], [43639, 43641], [43643, 43647], + [43698, 43700], [43703, 43704], [43710, 43711], [43715, 43738], [43742, 43967], + [44003, 44015], [44026, 44031], [55204, 55215], [55239, 55242], [55292, 55295], + [57344, 63743], [64046, 64047], [64110, 64111], [64218, 64255], [64263, 64274], + [64280, 64284], [64434, 64466], [64830, 64847], [64912, 64913], [64968, 65007], + [65020, 65135], [65277, 65295], [65306, 65312], [65339, 65344], [65371, 65381], + [65471, 65473], [65480, 65481], [65488, 65489], [65496, 65497]]; + for (i = 0; i < ranges.length; i++) { + start = ranges[i][0]; + end = ranges[i][1]; + for (j = start; j <= end; j++) { + result[j] = true; + } + } + return result; +})(); + +function splitQuery(query) { + var result = []; + var start = -1; + for (var i = 0; i < query.length; i++) { + if (splitChars[query.charCodeAt(i)]) { + if (start !== -1) { + result.push(query.slice(start, i)); + start = -1; + } + } else if (start === -1) { + start = i; + } + } + if (start !== -1) { + result.push(query.slice(start)); + } + return result; +} + + diff --git a/doc/_static/down-pressed.png b/doc/_static/down-pressed.png new file mode 100644 index 00000000..5756c8ca Binary files /dev/null and b/doc/_static/down-pressed.png differ diff --git a/doc/_static/down.png b/doc/_static/down.png new file mode 100644 index 00000000..1b3bdad2 Binary files /dev/null and b/doc/_static/down.png differ diff --git a/doc/_static/file.png b/doc/_static/file.png new file mode 100644 index 00000000..a858a410 Binary files /dev/null and b/doc/_static/file.png differ diff --git a/doc/_static/fonts/Inconsolata-Bold.ttf b/doc/_static/fonts/Inconsolata-Bold.ttf new file mode 100644 index 00000000..809c1f58 Binary files /dev/null and b/doc/_static/fonts/Inconsolata-Bold.ttf differ diff --git a/doc/_static/fonts/Inconsolata-Regular.ttf b/doc/_static/fonts/Inconsolata-Regular.ttf new file mode 100644 index 00000000..fc981ce7 Binary files /dev/null and b/doc/_static/fonts/Inconsolata-Regular.ttf differ diff --git a/doc/_static/fonts/Inconsolata.ttf b/doc/_static/fonts/Inconsolata.ttf new file mode 100644 index 00000000..4b8a36d2 Binary files /dev/null and b/doc/_static/fonts/Inconsolata.ttf differ diff --git a/doc/_static/fonts/Lato-Bold.ttf b/doc/_static/fonts/Lato-Bold.ttf new file mode 100644 index 00000000..1d23c706 Binary files /dev/null and b/doc/_static/fonts/Lato-Bold.ttf differ diff --git a/doc/_static/fonts/Lato-Regular.ttf b/doc/_static/fonts/Lato-Regular.ttf new file mode 100644 index 00000000..0f3d0f83 Binary files /dev/null and b/doc/_static/fonts/Lato-Regular.ttf differ diff --git a/doc/_static/fonts/Lato/lato-bold.eot b/doc/_static/fonts/Lato/lato-bold.eot new file mode 100644 index 00000000..3361183a Binary files /dev/null and b/doc/_static/fonts/Lato/lato-bold.eot differ diff --git a/doc/_static/fonts/Lato/lato-bold.ttf b/doc/_static/fonts/Lato/lato-bold.ttf new file mode 100644 index 00000000..29f691d5 Binary files /dev/null and b/doc/_static/fonts/Lato/lato-bold.ttf differ diff --git a/doc/_static/fonts/Lato/lato-bold.woff b/doc/_static/fonts/Lato/lato-bold.woff new file mode 100644 index 00000000..c6dff51f Binary files /dev/null and b/doc/_static/fonts/Lato/lato-bold.woff differ diff --git a/doc/_static/fonts/Lato/lato-bold.woff2 b/doc/_static/fonts/Lato/lato-bold.woff2 new file mode 100644 index 00000000..bb195043 Binary files /dev/null and b/doc/_static/fonts/Lato/lato-bold.woff2 differ diff --git a/doc/_static/fonts/Lato/lato-bolditalic.eot b/doc/_static/fonts/Lato/lato-bolditalic.eot new file mode 100644 index 00000000..3d415493 Binary files /dev/null and b/doc/_static/fonts/Lato/lato-bolditalic.eot differ diff --git a/doc/_static/fonts/Lato/lato-bolditalic.ttf b/doc/_static/fonts/Lato/lato-bolditalic.ttf new file mode 100644 index 00000000..f402040b Binary files /dev/null and b/doc/_static/fonts/Lato/lato-bolditalic.ttf differ diff --git a/doc/_static/fonts/Lato/lato-bolditalic.woff b/doc/_static/fonts/Lato/lato-bolditalic.woff new file mode 100644 index 00000000..88ad05b9 Binary files /dev/null and b/doc/_static/fonts/Lato/lato-bolditalic.woff differ diff --git a/doc/_static/fonts/Lato/lato-bolditalic.woff2 b/doc/_static/fonts/Lato/lato-bolditalic.woff2 new file mode 100644 index 00000000..c4e3d804 Binary files /dev/null and b/doc/_static/fonts/Lato/lato-bolditalic.woff2 differ diff --git a/doc/_static/fonts/Lato/lato-italic.eot b/doc/_static/fonts/Lato/lato-italic.eot new file mode 100644 index 00000000..3f826421 Binary files /dev/null and b/doc/_static/fonts/Lato/lato-italic.eot differ diff --git a/doc/_static/fonts/Lato/lato-italic.ttf b/doc/_static/fonts/Lato/lato-italic.ttf new file mode 100644 index 00000000..b4bfc9b2 Binary files /dev/null and b/doc/_static/fonts/Lato/lato-italic.ttf differ diff --git a/doc/_static/fonts/Lato/lato-italic.woff b/doc/_static/fonts/Lato/lato-italic.woff new file mode 100644 index 00000000..76114bc0 Binary files /dev/null and b/doc/_static/fonts/Lato/lato-italic.woff differ diff --git a/doc/_static/fonts/Lato/lato-italic.woff2 b/doc/_static/fonts/Lato/lato-italic.woff2 new file mode 100644 index 00000000..3404f37e Binary files /dev/null and b/doc/_static/fonts/Lato/lato-italic.woff2 differ diff --git a/doc/_static/fonts/Lato/lato-regular.eot b/doc/_static/fonts/Lato/lato-regular.eot new file mode 100644 index 00000000..11e3f2a5 Binary files /dev/null and b/doc/_static/fonts/Lato/lato-regular.eot differ diff --git a/doc/_static/fonts/Lato/lato-regular.ttf b/doc/_static/fonts/Lato/lato-regular.ttf new file mode 100644 index 00000000..74decd9e Binary files /dev/null and b/doc/_static/fonts/Lato/lato-regular.ttf differ diff --git a/doc/_static/fonts/Lato/lato-regular.woff b/doc/_static/fonts/Lato/lato-regular.woff new file mode 100644 index 00000000..ae1307ff Binary files /dev/null and b/doc/_static/fonts/Lato/lato-regular.woff differ diff --git a/doc/_static/fonts/Lato/lato-regular.woff2 b/doc/_static/fonts/Lato/lato-regular.woff2 new file mode 100644 index 00000000..3bf98433 Binary files /dev/null and b/doc/_static/fonts/Lato/lato-regular.woff2 differ diff --git a/doc/_static/fonts/RobotoSlab-Bold.ttf b/doc/_static/fonts/RobotoSlab-Bold.ttf new file mode 100644 index 00000000..df5d1df2 Binary files /dev/null and b/doc/_static/fonts/RobotoSlab-Bold.ttf differ diff --git a/doc/_static/fonts/RobotoSlab-Regular.ttf b/doc/_static/fonts/RobotoSlab-Regular.ttf new file mode 100644 index 00000000..eb52a790 Binary files /dev/null and b/doc/_static/fonts/RobotoSlab-Regular.ttf differ diff --git a/doc/_static/fonts/RobotoSlab/roboto-slab-v7-bold.eot b/doc/_static/fonts/RobotoSlab/roboto-slab-v7-bold.eot new file mode 100644 index 00000000..79dc8efe Binary files /dev/null and b/doc/_static/fonts/RobotoSlab/roboto-slab-v7-bold.eot differ diff --git a/doc/_static/fonts/RobotoSlab/roboto-slab-v7-bold.ttf b/doc/_static/fonts/RobotoSlab/roboto-slab-v7-bold.ttf new file mode 100644 index 00000000..df5d1df2 Binary files /dev/null and b/doc/_static/fonts/RobotoSlab/roboto-slab-v7-bold.ttf differ diff --git a/doc/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff b/doc/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff new file mode 100644 index 00000000..6cb60000 Binary files /dev/null and b/doc/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff differ diff --git a/doc/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff2 b/doc/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff2 new file mode 100644 index 00000000..7059e231 Binary files /dev/null and b/doc/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff2 differ diff --git a/doc/_static/fonts/RobotoSlab/roboto-slab-v7-regular.eot b/doc/_static/fonts/RobotoSlab/roboto-slab-v7-regular.eot new file mode 100644 index 00000000..2f7ca78a Binary files /dev/null and b/doc/_static/fonts/RobotoSlab/roboto-slab-v7-regular.eot differ diff --git a/doc/_static/fonts/RobotoSlab/roboto-slab-v7-regular.ttf b/doc/_static/fonts/RobotoSlab/roboto-slab-v7-regular.ttf new file mode 100644 index 00000000..eb52a790 Binary files /dev/null and b/doc/_static/fonts/RobotoSlab/roboto-slab-v7-regular.ttf differ diff --git a/doc/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff b/doc/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff new file mode 100644 index 00000000..f815f63f Binary files /dev/null and b/doc/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff differ diff --git a/doc/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff2 b/doc/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff2 new file mode 100644 index 00000000..f2c76e5b Binary files /dev/null and b/doc/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff2 differ diff --git a/doc/_static/fonts/fontawesome-webfont.eot b/doc/_static/fonts/fontawesome-webfont.eot new file mode 100644 index 00000000..e9f60ca9 Binary files /dev/null and b/doc/_static/fonts/fontawesome-webfont.eot differ diff --git a/doc/_static/fonts/fontawesome-webfont.svg b/doc/_static/fonts/fontawesome-webfont.svg new file mode 100644 index 00000000..855c845e --- /dev/null +++ b/doc/_static/fonts/fontawesome-webfont.svg @@ -0,0 +1,2671 @@ + + + + +Created by FontForge 20120731 at Mon Oct 24 17:37:40 2016 + By ,,, +Copyright Dave Gandy 2016. All rights reserved. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/doc/_static/fonts/fontawesome-webfont.ttf b/doc/_static/fonts/fontawesome-webfont.ttf new file mode 100644 index 00000000..35acda2f Binary files /dev/null and b/doc/_static/fonts/fontawesome-webfont.ttf differ diff --git a/doc/_static/fonts/fontawesome-webfont.woff b/doc/_static/fonts/fontawesome-webfont.woff new file mode 100644 index 00000000..400014a4 Binary files /dev/null and b/doc/_static/fonts/fontawesome-webfont.woff differ diff --git a/doc/_static/fonts/fontawesome-webfont.woff2 b/doc/_static/fonts/fontawesome-webfont.woff2 new file mode 100644 index 00000000..4d13fc60 Binary files /dev/null and b/doc/_static/fonts/fontawesome-webfont.woff2 differ diff --git a/doc/_static/jquery-3.2.1.js b/doc/_static/jquery-3.2.1.js new file mode 100644 index 00000000..d2d8ca47 --- /dev/null +++ b/doc/_static/jquery-3.2.1.js @@ -0,0 +1,10253 @@ +/*! + * jQuery JavaScript Library v3.2.1 + * https://jquery.com/ + * + * Includes Sizzle.js + * https://sizzlejs.com/ + * + * Copyright JS Foundation and other contributors + * Released under the MIT license + * https://jquery.org/license + * + * Date: 2017-03-20T18:59Z + */ +( function( global, factory ) { + + "use strict"; + + if ( typeof module === "object" && typeof module.exports === "object" ) { + + // For CommonJS and CommonJS-like environments where a proper `window` + // is present, execute the factory and get jQuery. + // For environments that do not have a `window` with a `document` + // (such as Node.js), expose a factory as module.exports. + // This accentuates the need for the creation of a real `window`. + // e.g. var jQuery = require("jquery")(window); + // See ticket #14549 for more info. + module.exports = global.document ? + factory( global, true ) : + function( w ) { + if ( !w.document ) { + throw new Error( "jQuery requires a window with a document" ); + } + return factory( w ); + }; + } else { + factory( global ); + } + +// Pass this if window is not defined yet +} )( typeof window !== "undefined" ? window : this, function( window, noGlobal ) { + +// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1 +// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode +// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common +// enough that all such attempts are guarded in a try block. +"use strict"; + +var arr = []; + +var document = window.document; + +var getProto = Object.getPrototypeOf; + +var slice = arr.slice; + +var concat = arr.concat; + +var push = arr.push; + +var indexOf = arr.indexOf; + +var class2type = {}; + +var toString = class2type.toString; + +var hasOwn = class2type.hasOwnProperty; + +var fnToString = hasOwn.toString; + +var ObjectFunctionString = fnToString.call( Object ); + +var support = {}; + + + + function DOMEval( code, doc ) { + doc = doc || document; + + var script = doc.createElement( "script" ); + + script.text = code; + doc.head.appendChild( script ).parentNode.removeChild( script ); + } +/* global Symbol */ +// Defining this global in .eslintrc.json would create a danger of using the global +// unguarded in another place, it seems safer to define global only for this module + + + +var + version = "3.2.1", + + // Define a local copy of jQuery + jQuery = function( selector, context ) { + + // The jQuery object is actually just the init constructor 'enhanced' + // Need init if jQuery is called (just allow error to be thrown if not included) + return new jQuery.fn.init( selector, context ); + }, + + // Support: Android <=4.0 only + // Make sure we trim BOM and NBSP + rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, + + // Matches dashed string for camelizing + rmsPrefix = /^-ms-/, + rdashAlpha = /-([a-z])/g, + + // Used by jQuery.camelCase as callback to replace() + fcamelCase = function( all, letter ) { + return letter.toUpperCase(); + }; + +jQuery.fn = jQuery.prototype = { + + // The current version of jQuery being used + jquery: version, + + constructor: jQuery, + + // The default length of a jQuery object is 0 + length: 0, + + toArray: function() { + return slice.call( this ); + }, + + // Get the Nth element in the matched element set OR + // Get the whole matched element set as a clean array + get: function( num ) { + + // Return all the elements in a clean array + if ( num == null ) { + return slice.call( this ); + } + + // Return just the one element from the set + return num < 0 ? this[ num + this.length ] : this[ num ]; + }, + + // Take an array of elements and push it onto the stack + // (returning the new matched element set) + pushStack: function( elems ) { + + // Build a new jQuery matched element set + var ret = jQuery.merge( this.constructor(), elems ); + + // Add the old object onto the stack (as a reference) + ret.prevObject = this; + + // Return the newly-formed element set + return ret; + }, + + // Execute a callback for every element in the matched set. + each: function( callback ) { + return jQuery.each( this, callback ); + }, + + map: function( callback ) { + return this.pushStack( jQuery.map( this, function( elem, i ) { + return callback.call( elem, i, elem ); + } ) ); + }, + + slice: function() { + return this.pushStack( slice.apply( this, arguments ) ); + }, + + first: function() { + return this.eq( 0 ); + }, + + last: function() { + return this.eq( -1 ); + }, + + eq: function( i ) { + var len = this.length, + j = +i + ( i < 0 ? len : 0 ); + return this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] ); + }, + + end: function() { + return this.prevObject || this.constructor(); + }, + + // For internal use only. + // Behaves like an Array's method, not like a jQuery method. + push: push, + sort: arr.sort, + splice: arr.splice +}; + +jQuery.extend = jQuery.fn.extend = function() { + var options, name, src, copy, copyIsArray, clone, + target = arguments[ 0 ] || {}, + i = 1, + length = arguments.length, + deep = false; + + // Handle a deep copy situation + if ( typeof target === "boolean" ) { + deep = target; + + // Skip the boolean and the target + target = arguments[ i ] || {}; + i++; + } + + // Handle case when target is a string or something (possible in deep copy) + if ( typeof target !== "object" && !jQuery.isFunction( target ) ) { + target = {}; + } + + // Extend jQuery itself if only one argument is passed + if ( i === length ) { + target = this; + i--; + } + + for ( ; i < length; i++ ) { + + // Only deal with non-null/undefined values + if ( ( options = arguments[ i ] ) != null ) { + + // Extend the base object + for ( name in options ) { + src = target[ name ]; + copy = options[ name ]; + + // Prevent never-ending loop + if ( target === copy ) { + continue; + } + + // Recurse if we're merging plain objects or arrays + if ( deep && copy && ( jQuery.isPlainObject( copy ) || + ( copyIsArray = Array.isArray( copy ) ) ) ) { + + if ( copyIsArray ) { + copyIsArray = false; + clone = src && Array.isArray( src ) ? src : []; + + } else { + clone = src && jQuery.isPlainObject( src ) ? src : {}; + } + + // Never move original objects, clone them + target[ name ] = jQuery.extend( deep, clone, copy ); + + // Don't bring in undefined values + } else if ( copy !== undefined ) { + target[ name ] = copy; + } + } + } + } + + // Return the modified object + return target; +}; + +jQuery.extend( { + + // Unique for each copy of jQuery on the page + expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ), + + // Assume jQuery is ready without the ready module + isReady: true, + + error: function( msg ) { + throw new Error( msg ); + }, + + noop: function() {}, + + isFunction: function( obj ) { + return jQuery.type( obj ) === "function"; + }, + + isWindow: function( obj ) { + return obj != null && obj === obj.window; + }, + + isNumeric: function( obj ) { + + // As of jQuery 3.0, isNumeric is limited to + // strings and numbers (primitives or objects) + // that can be coerced to finite numbers (gh-2662) + var type = jQuery.type( obj ); + return ( type === "number" || type === "string" ) && + + // parseFloat NaNs numeric-cast false positives ("") + // ...but misinterprets leading-number strings, particularly hex literals ("0x...") + // subtraction forces infinities to NaN + !isNaN( obj - parseFloat( obj ) ); + }, + + isPlainObject: function( obj ) { + var proto, Ctor; + + // Detect obvious negatives + // Use toString instead of jQuery.type to catch host objects + if ( !obj || toString.call( obj ) !== "[object Object]" ) { + return false; + } + + proto = getProto( obj ); + + // Objects with no prototype (e.g., `Object.create( null )`) are plain + if ( !proto ) { + return true; + } + + // Objects with prototype are plain iff they were constructed by a global Object function + Ctor = hasOwn.call( proto, "constructor" ) && proto.constructor; + return typeof Ctor === "function" && fnToString.call( Ctor ) === ObjectFunctionString; + }, + + isEmptyObject: function( obj ) { + + /* eslint-disable no-unused-vars */ + // See https://github.com/eslint/eslint/issues/6125 + var name; + + for ( name in obj ) { + return false; + } + return true; + }, + + type: function( obj ) { + if ( obj == null ) { + return obj + ""; + } + + // Support: Android <=2.3 only (functionish RegExp) + return typeof obj === "object" || typeof obj === "function" ? + class2type[ toString.call( obj ) ] || "object" : + typeof obj; + }, + + // Evaluates a script in a global context + globalEval: function( code ) { + DOMEval( code ); + }, + + // Convert dashed to camelCase; used by the css and data modules + // Support: IE <=9 - 11, Edge 12 - 13 + // Microsoft forgot to hump their vendor prefix (#9572) + camelCase: function( string ) { + return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); + }, + + each: function( obj, callback ) { + var length, i = 0; + + if ( isArrayLike( obj ) ) { + length = obj.length; + for ( ; i < length; i++ ) { + if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { + break; + } + } + } else { + for ( i in obj ) { + if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { + break; + } + } + } + + return obj; + }, + + // Support: Android <=4.0 only + trim: function( text ) { + return text == null ? + "" : + ( text + "" ).replace( rtrim, "" ); + }, + + // results is for internal usage only + makeArray: function( arr, results ) { + var ret = results || []; + + if ( arr != null ) { + if ( isArrayLike( Object( arr ) ) ) { + jQuery.merge( ret, + typeof arr === "string" ? + [ arr ] : arr + ); + } else { + push.call( ret, arr ); + } + } + + return ret; + }, + + inArray: function( elem, arr, i ) { + return arr == null ? -1 : indexOf.call( arr, elem, i ); + }, + + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + merge: function( first, second ) { + var len = +second.length, + j = 0, + i = first.length; + + for ( ; j < len; j++ ) { + first[ i++ ] = second[ j ]; + } + + first.length = i; + + return first; + }, + + grep: function( elems, callback, invert ) { + var callbackInverse, + matches = [], + i = 0, + length = elems.length, + callbackExpect = !invert; + + // Go through the array, only saving the items + // that pass the validator function + for ( ; i < length; i++ ) { + callbackInverse = !callback( elems[ i ], i ); + if ( callbackInverse !== callbackExpect ) { + matches.push( elems[ i ] ); + } + } + + return matches; + }, + + // arg is for internal usage only + map: function( elems, callback, arg ) { + var length, value, + i = 0, + ret = []; + + // Go through the array, translating each of the items to their new values + if ( isArrayLike( elems ) ) { + length = elems.length; + for ( ; i < length; i++ ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret.push( value ); + } + } + + // Go through every key on the object, + } else { + for ( i in elems ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret.push( value ); + } + } + } + + // Flatten any nested arrays + return concat.apply( [], ret ); + }, + + // A global GUID counter for objects + guid: 1, + + // Bind a function to a context, optionally partially applying any + // arguments. + proxy: function( fn, context ) { + var tmp, args, proxy; + + if ( typeof context === "string" ) { + tmp = fn[ context ]; + context = fn; + fn = tmp; + } + + // Quick check to determine if target is callable, in the spec + // this throws a TypeError, but we will just return undefined. + if ( !jQuery.isFunction( fn ) ) { + return undefined; + } + + // Simulated bind + args = slice.call( arguments, 2 ); + proxy = function() { + return fn.apply( context || this, args.concat( slice.call( arguments ) ) ); + }; + + // Set the guid of unique handler to the same of original handler, so it can be removed + proxy.guid = fn.guid = fn.guid || jQuery.guid++; + + return proxy; + }, + + now: Date.now, + + // jQuery.support is not used in Core but other projects attach their + // properties to it so it needs to exist. + support: support +} ); + +if ( typeof Symbol === "function" ) { + jQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ]; +} + +// Populate the class2type map +jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ), +function( i, name ) { + class2type[ "[object " + name + "]" ] = name.toLowerCase(); +} ); + +function isArrayLike( obj ) { + + // Support: real iOS 8.2 only (not reproducible in simulator) + // `in` check used to prevent JIT error (gh-2145) + // hasOwn isn't used here due to false negatives + // regarding Nodelist length in IE + var length = !!obj && "length" in obj && obj.length, + type = jQuery.type( obj ); + + if ( type === "function" || jQuery.isWindow( obj ) ) { + return false; + } + + return type === "array" || length === 0 || + typeof length === "number" && length > 0 && ( length - 1 ) in obj; +} +var Sizzle = +/*! + * Sizzle CSS Selector Engine v2.3.3 + * https://sizzlejs.com/ + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: 2016-08-08 + */ +(function( window ) { + +var i, + support, + Expr, + getText, + isXML, + tokenize, + compile, + select, + outermostContext, + sortInput, + hasDuplicate, + + // Local document vars + setDocument, + document, + docElem, + documentIsHTML, + rbuggyQSA, + rbuggyMatches, + matches, + contains, + + // Instance-specific data + expando = "sizzle" + 1 * new Date(), + preferredDoc = window.document, + dirruns = 0, + done = 0, + classCache = createCache(), + tokenCache = createCache(), + compilerCache = createCache(), + sortOrder = function( a, b ) { + if ( a === b ) { + hasDuplicate = true; + } + return 0; + }, + + // Instance methods + hasOwn = ({}).hasOwnProperty, + arr = [], + pop = arr.pop, + push_native = arr.push, + push = arr.push, + slice = arr.slice, + // Use a stripped-down indexOf as it's faster than native + // https://jsperf.com/thor-indexof-vs-for/5 + indexOf = function( list, elem ) { + var i = 0, + len = list.length; + for ( ; i < len; i++ ) { + if ( list[i] === elem ) { + return i; + } + } + return -1; + }, + + booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped", + + // Regular expressions + + // http://www.w3.org/TR/css3-selectors/#whitespace + whitespace = "[\\x20\\t\\r\\n\\f]", + + // http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier + identifier = "(?:\\\\.|[\\w-]|[^\0-\\xa0])+", + + // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors + attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace + + // Operator (capture 2) + "*([*^$|!~]?=)" + whitespace + + // "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]" + "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace + + "*\\]", + + pseudos = ":(" + identifier + ")(?:\\((" + + // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments: + // 1. quoted (capture 3; capture 4 or capture 5) + "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" + + // 2. simple (capture 6) + "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" + + // 3. anything else (capture 2) + ".*" + + ")\\)|)", + + // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter + rwhitespace = new RegExp( whitespace + "+", "g" ), + rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ), + + rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ), + rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ), + + rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*?)" + whitespace + "*\\]", "g" ), + + rpseudo = new RegExp( pseudos ), + ridentifier = new RegExp( "^" + identifier + "$" ), + + matchExpr = { + "ID": new RegExp( "^#(" + identifier + ")" ), + "CLASS": new RegExp( "^\\.(" + identifier + ")" ), + "TAG": new RegExp( "^(" + identifier + "|[*])" ), + "ATTR": new RegExp( "^" + attributes ), + "PSEUDO": new RegExp( "^" + pseudos ), + "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace + + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace + + "*(\\d+)|))" + whitespace + "*\\)|)", "i" ), + "bool": new RegExp( "^(?:" + booleans + ")$", "i" ), + // For use in libraries implementing .is() + // We use this for POS matching in `select` + "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + + whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" ) + }, + + rinputs = /^(?:input|select|textarea|button)$/i, + rheader = /^h\d$/i, + + rnative = /^[^{]+\{\s*\[native \w/, + + // Easily-parseable/retrievable ID or TAG or CLASS selectors + rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, + + rsibling = /[+~]/, + + // CSS escapes + // http://www.w3.org/TR/CSS21/syndata.html#escaped-characters + runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ), + funescape = function( _, escaped, escapedWhitespace ) { + var high = "0x" + escaped - 0x10000; + // NaN means non-codepoint + // Support: Firefox<24 + // Workaround erroneous numeric interpretation of +"0x" + return high !== high || escapedWhitespace ? + escaped : + high < 0 ? + // BMP codepoint + String.fromCharCode( high + 0x10000 ) : + // Supplemental Plane codepoint (surrogate pair) + String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 ); + }, + + // CSS string/identifier serialization + // https://drafts.csswg.org/cssom/#common-serializing-idioms + rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g, + fcssescape = function( ch, asCodePoint ) { + if ( asCodePoint ) { + + // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER + if ( ch === "\0" ) { + return "\uFFFD"; + } + + // Control characters and (dependent upon position) numbers get escaped as code points + return ch.slice( 0, -1 ) + "\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " "; + } + + // Other potentially-special ASCII characters get backslash-escaped + return "\\" + ch; + }, + + // Used for iframes + // See setDocument() + // Removing the function wrapper causes a "Permission Denied" + // error in IE + unloadHandler = function() { + setDocument(); + }, + + disabledAncestor = addCombinator( + function( elem ) { + return elem.disabled === true && ("form" in elem || "label" in elem); + }, + { dir: "parentNode", next: "legend" } + ); + +// Optimize for push.apply( _, NodeList ) +try { + push.apply( + (arr = slice.call( preferredDoc.childNodes )), + preferredDoc.childNodes + ); + // Support: Android<4.0 + // Detect silently failing push.apply + arr[ preferredDoc.childNodes.length ].nodeType; +} catch ( e ) { + push = { apply: arr.length ? + + // Leverage slice if possible + function( target, els ) { + push_native.apply( target, slice.call(els) ); + } : + + // Support: IE<9 + // Otherwise append directly + function( target, els ) { + var j = target.length, + i = 0; + // Can't trust NodeList.length + while ( (target[j++] = els[i++]) ) {} + target.length = j - 1; + } + }; +} + +function Sizzle( selector, context, results, seed ) { + var m, i, elem, nid, match, groups, newSelector, + newContext = context && context.ownerDocument, + + // nodeType defaults to 9, since context defaults to document + nodeType = context ? context.nodeType : 9; + + results = results || []; + + // Return early from calls with invalid selector or context + if ( typeof selector !== "string" || !selector || + nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) { + + return results; + } + + // Try to shortcut find operations (as opposed to filters) in HTML documents + if ( !seed ) { + + if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) { + setDocument( context ); + } + context = context || document; + + if ( documentIsHTML ) { + + // If the selector is sufficiently simple, try using a "get*By*" DOM method + // (excepting DocumentFragment context, where the methods don't exist) + if ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) { + + // ID selector + if ( (m = match[1]) ) { + + // Document context + if ( nodeType === 9 ) { + if ( (elem = context.getElementById( m )) ) { + + // Support: IE, Opera, Webkit + // TODO: identify versions + // getElementById can match elements by name instead of ID + if ( elem.id === m ) { + results.push( elem ); + return results; + } + } else { + return results; + } + + // Element context + } else { + + // Support: IE, Opera, Webkit + // TODO: identify versions + // getElementById can match elements by name instead of ID + if ( newContext && (elem = newContext.getElementById( m )) && + contains( context, elem ) && + elem.id === m ) { + + results.push( elem ); + return results; + } + } + + // Type selector + } else if ( match[2] ) { + push.apply( results, context.getElementsByTagName( selector ) ); + return results; + + // Class selector + } else if ( (m = match[3]) && support.getElementsByClassName && + context.getElementsByClassName ) { + + push.apply( results, context.getElementsByClassName( m ) ); + return results; + } + } + + // Take advantage of querySelectorAll + if ( support.qsa && + !compilerCache[ selector + " " ] && + (!rbuggyQSA || !rbuggyQSA.test( selector )) ) { + + if ( nodeType !== 1 ) { + newContext = context; + newSelector = selector; + + // qSA looks outside Element context, which is not what we want + // Thanks to Andrew Dupont for this workaround technique + // Support: IE <=8 + // Exclude object elements + } else if ( context.nodeName.toLowerCase() !== "object" ) { + + // Capture the context ID, setting it first if necessary + if ( (nid = context.getAttribute( "id" )) ) { + nid = nid.replace( rcssescape, fcssescape ); + } else { + context.setAttribute( "id", (nid = expando) ); + } + + // Prefix every selector in the list + groups = tokenize( selector ); + i = groups.length; + while ( i-- ) { + groups[i] = "#" + nid + " " + toSelector( groups[i] ); + } + newSelector = groups.join( "," ); + + // Expand context for sibling selectors + newContext = rsibling.test( selector ) && testContext( context.parentNode ) || + context; + } + + if ( newSelector ) { + try { + push.apply( results, + newContext.querySelectorAll( newSelector ) + ); + return results; + } catch ( qsaError ) { + } finally { + if ( nid === expando ) { + context.removeAttribute( "id" ); + } + } + } + } + } + } + + // All others + return select( selector.replace( rtrim, "$1" ), context, results, seed ); +} + +/** + * Create key-value caches of limited size + * @returns {function(string, object)} Returns the Object data after storing it on itself with + * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength) + * deleting the oldest entry + */ +function createCache() { + var keys = []; + + function cache( key, value ) { + // Use (key + " ") to avoid collision with native prototype properties (see Issue #157) + if ( keys.push( key + " " ) > Expr.cacheLength ) { + // Only keep the most recent entries + delete cache[ keys.shift() ]; + } + return (cache[ key + " " ] = value); + } + return cache; +} + +/** + * Mark a function for special use by Sizzle + * @param {Function} fn The function to mark + */ +function markFunction( fn ) { + fn[ expando ] = true; + return fn; +} + +/** + * Support testing using an element + * @param {Function} fn Passed the created element and returns a boolean result + */ +function assert( fn ) { + var el = document.createElement("fieldset"); + + try { + return !!fn( el ); + } catch (e) { + return false; + } finally { + // Remove from its parent by default + if ( el.parentNode ) { + el.parentNode.removeChild( el ); + } + // release memory in IE + el = null; + } +} + +/** + * Adds the same handler for all of the specified attrs + * @param {String} attrs Pipe-separated list of attributes + * @param {Function} handler The method that will be applied + */ +function addHandle( attrs, handler ) { + var arr = attrs.split("|"), + i = arr.length; + + while ( i-- ) { + Expr.attrHandle[ arr[i] ] = handler; + } +} + +/** + * Checks document order of two siblings + * @param {Element} a + * @param {Element} b + * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b + */ +function siblingCheck( a, b ) { + var cur = b && a, + diff = cur && a.nodeType === 1 && b.nodeType === 1 && + a.sourceIndex - b.sourceIndex; + + // Use IE sourceIndex if available on both nodes + if ( diff ) { + return diff; + } + + // Check if b follows a + if ( cur ) { + while ( (cur = cur.nextSibling) ) { + if ( cur === b ) { + return -1; + } + } + } + + return a ? 1 : -1; +} + +/** + * Returns a function to use in pseudos for input types + * @param {String} type + */ +function createInputPseudo( type ) { + return function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && elem.type === type; + }; +} + +/** + * Returns a function to use in pseudos for buttons + * @param {String} type + */ +function createButtonPseudo( type ) { + return function( elem ) { + var name = elem.nodeName.toLowerCase(); + return (name === "input" || name === "button") && elem.type === type; + }; +} + +/** + * Returns a function to use in pseudos for :enabled/:disabled + * @param {Boolean} disabled true for :disabled; false for :enabled + */ +function createDisabledPseudo( disabled ) { + + // Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable + return function( elem ) { + + // Only certain elements can match :enabled or :disabled + // https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled + // https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled + if ( "form" in elem ) { + + // Check for inherited disabledness on relevant non-disabled elements: + // * listed form-associated elements in a disabled fieldset + // https://html.spec.whatwg.org/multipage/forms.html#category-listed + // https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled + // * option elements in a disabled optgroup + // https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled + // All such elements have a "form" property. + if ( elem.parentNode && elem.disabled === false ) { + + // Option elements defer to a parent optgroup if present + if ( "label" in elem ) { + if ( "label" in elem.parentNode ) { + return elem.parentNode.disabled === disabled; + } else { + return elem.disabled === disabled; + } + } + + // Support: IE 6 - 11 + // Use the isDisabled shortcut property to check for disabled fieldset ancestors + return elem.isDisabled === disabled || + + // Where there is no isDisabled, check manually + /* jshint -W018 */ + elem.isDisabled !== !disabled && + disabledAncestor( elem ) === disabled; + } + + return elem.disabled === disabled; + + // Try to winnow out elements that can't be disabled before trusting the disabled property. + // Some victims get caught in our net (label, legend, menu, track), but it shouldn't + // even exist on them, let alone have a boolean value. + } else if ( "label" in elem ) { + return elem.disabled === disabled; + } + + // Remaining elements are neither :enabled nor :disabled + return false; + }; +} + +/** + * Returns a function to use in pseudos for positionals + * @param {Function} fn + */ +function createPositionalPseudo( fn ) { + return markFunction(function( argument ) { + argument = +argument; + return markFunction(function( seed, matches ) { + var j, + matchIndexes = fn( [], seed.length, argument ), + i = matchIndexes.length; + + // Match elements found at the specified indexes + while ( i-- ) { + if ( seed[ (j = matchIndexes[i]) ] ) { + seed[j] = !(matches[j] = seed[j]); + } + } + }); + }); +} + +/** + * Checks a node for validity as a Sizzle context + * @param {Element|Object=} context + * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value + */ +function testContext( context ) { + return context && typeof context.getElementsByTagName !== "undefined" && context; +} + +// Expose support vars for convenience +support = Sizzle.support = {}; + +/** + * Detects XML nodes + * @param {Element|Object} elem An element or a document + * @returns {Boolean} True iff elem is a non-HTML XML node + */ +isXML = Sizzle.isXML = function( elem ) { + // documentElement is verified for cases where it doesn't yet exist + // (such as loading iframes in IE - #4833) + var documentElement = elem && (elem.ownerDocument || elem).documentElement; + return documentElement ? documentElement.nodeName !== "HTML" : false; +}; + +/** + * Sets document-related variables once based on the current document + * @param {Element|Object} [doc] An element or document object to use to set the document + * @returns {Object} Returns the current document + */ +setDocument = Sizzle.setDocument = function( node ) { + var hasCompare, subWindow, + doc = node ? node.ownerDocument || node : preferredDoc; + + // Return early if doc is invalid or already selected + if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) { + return document; + } + + // Update global variables + document = doc; + docElem = document.documentElement; + documentIsHTML = !isXML( document ); + + // Support: IE 9-11, Edge + // Accessing iframe documents after unload throws "permission denied" errors (jQuery #13936) + if ( preferredDoc !== document && + (subWindow = document.defaultView) && subWindow.top !== subWindow ) { + + // Support: IE 11, Edge + if ( subWindow.addEventListener ) { + subWindow.addEventListener( "unload", unloadHandler, false ); + + // Support: IE 9 - 10 only + } else if ( subWindow.attachEvent ) { + subWindow.attachEvent( "onunload", unloadHandler ); + } + } + + /* Attributes + ---------------------------------------------------------------------- */ + + // Support: IE<8 + // Verify that getAttribute really returns attributes and not properties + // (excepting IE8 booleans) + support.attributes = assert(function( el ) { + el.className = "i"; + return !el.getAttribute("className"); + }); + + /* getElement(s)By* + ---------------------------------------------------------------------- */ + + // Check if getElementsByTagName("*") returns only elements + support.getElementsByTagName = assert(function( el ) { + el.appendChild( document.createComment("") ); + return !el.getElementsByTagName("*").length; + }); + + // Support: IE<9 + support.getElementsByClassName = rnative.test( document.getElementsByClassName ); + + // Support: IE<10 + // Check if getElementById returns elements by name + // The broken getElementById methods don't pick up programmatically-set names, + // so use a roundabout getElementsByName test + support.getById = assert(function( el ) { + docElem.appendChild( el ).id = expando; + return !document.getElementsByName || !document.getElementsByName( expando ).length; + }); + + // ID filter and find + if ( support.getById ) { + Expr.filter["ID"] = function( id ) { + var attrId = id.replace( runescape, funescape ); + return function( elem ) { + return elem.getAttribute("id") === attrId; + }; + }; + Expr.find["ID"] = function( id, context ) { + if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { + var elem = context.getElementById( id ); + return elem ? [ elem ] : []; + } + }; + } else { + Expr.filter["ID"] = function( id ) { + var attrId = id.replace( runescape, funescape ); + return function( elem ) { + var node = typeof elem.getAttributeNode !== "undefined" && + elem.getAttributeNode("id"); + return node && node.value === attrId; + }; + }; + + // Support: IE 6 - 7 only + // getElementById is not reliable as a find shortcut + Expr.find["ID"] = function( id, context ) { + if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { + var node, i, elems, + elem = context.getElementById( id ); + + if ( elem ) { + + // Verify the id attribute + node = elem.getAttributeNode("id"); + if ( node && node.value === id ) { + return [ elem ]; + } + + // Fall back on getElementsByName + elems = context.getElementsByName( id ); + i = 0; + while ( (elem = elems[i++]) ) { + node = elem.getAttributeNode("id"); + if ( node && node.value === id ) { + return [ elem ]; + } + } + } + + return []; + } + }; + } + + // Tag + Expr.find["TAG"] = support.getElementsByTagName ? + function( tag, context ) { + if ( typeof context.getElementsByTagName !== "undefined" ) { + return context.getElementsByTagName( tag ); + + // DocumentFragment nodes don't have gEBTN + } else if ( support.qsa ) { + return context.querySelectorAll( tag ); + } + } : + + function( tag, context ) { + var elem, + tmp = [], + i = 0, + // By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too + results = context.getElementsByTagName( tag ); + + // Filter out possible comments + if ( tag === "*" ) { + while ( (elem = results[i++]) ) { + if ( elem.nodeType === 1 ) { + tmp.push( elem ); + } + } + + return tmp; + } + return results; + }; + + // Class + Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) { + if ( typeof context.getElementsByClassName !== "undefined" && documentIsHTML ) { + return context.getElementsByClassName( className ); + } + }; + + /* QSA/matchesSelector + ---------------------------------------------------------------------- */ + + // QSA and matchesSelector support + + // matchesSelector(:active) reports false when true (IE9/Opera 11.5) + rbuggyMatches = []; + + // qSa(:focus) reports false when true (Chrome 21) + // We allow this because of a bug in IE8/9 that throws an error + // whenever `document.activeElement` is accessed on an iframe + // So, we allow :focus to pass through QSA all the time to avoid the IE error + // See https://bugs.jquery.com/ticket/13378 + rbuggyQSA = []; + + if ( (support.qsa = rnative.test( document.querySelectorAll )) ) { + // Build QSA regex + // Regex strategy adopted from Diego Perini + assert(function( el ) { + // Select is set to empty string on purpose + // This is to test IE's treatment of not explicitly + // setting a boolean content attribute, + // since its presence should be enough + // https://bugs.jquery.com/ticket/12359 + docElem.appendChild( el ).innerHTML = "" + + ""; + + // Support: IE8, Opera 11-12.16 + // Nothing should be selected when empty strings follow ^= or $= or *= + // The test attribute must be unknown in Opera but "safe" for WinRT + // https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section + if ( el.querySelectorAll("[msallowcapture^='']").length ) { + rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" ); + } + + // Support: IE8 + // Boolean attributes and "value" are not treated correctly + if ( !el.querySelectorAll("[selected]").length ) { + rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" ); + } + + // Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+ + if ( !el.querySelectorAll( "[id~=" + expando + "-]" ).length ) { + rbuggyQSA.push("~="); + } + + // Webkit/Opera - :checked should return selected option elements + // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked + // IE8 throws error here and will not see later tests + if ( !el.querySelectorAll(":checked").length ) { + rbuggyQSA.push(":checked"); + } + + // Support: Safari 8+, iOS 8+ + // https://bugs.webkit.org/show_bug.cgi?id=136851 + // In-page `selector#id sibling-combinator selector` fails + if ( !el.querySelectorAll( "a#" + expando + "+*" ).length ) { + rbuggyQSA.push(".#.+[+~]"); + } + }); + + assert(function( el ) { + el.innerHTML = "" + + ""; + + // Support: Windows 8 Native Apps + // The type and name attributes are restricted during .innerHTML assignment + var input = document.createElement("input"); + input.setAttribute( "type", "hidden" ); + el.appendChild( input ).setAttribute( "name", "D" ); + + // Support: IE8 + // Enforce case-sensitivity of name attribute + if ( el.querySelectorAll("[name=d]").length ) { + rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" ); + } + + // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled) + // IE8 throws error here and will not see later tests + if ( el.querySelectorAll(":enabled").length !== 2 ) { + rbuggyQSA.push( ":enabled", ":disabled" ); + } + + // Support: IE9-11+ + // IE's :disabled selector does not pick up the children of disabled fieldsets + docElem.appendChild( el ).disabled = true; + if ( el.querySelectorAll(":disabled").length !== 2 ) { + rbuggyQSA.push( ":enabled", ":disabled" ); + } + + // Opera 10-11 does not throw on post-comma invalid pseudos + el.querySelectorAll("*,:x"); + rbuggyQSA.push(",.*:"); + }); + } + + if ( (support.matchesSelector = rnative.test( (matches = docElem.matches || + docElem.webkitMatchesSelector || + docElem.mozMatchesSelector || + docElem.oMatchesSelector || + docElem.msMatchesSelector) )) ) { + + assert(function( el ) { + // Check to see if it's possible to do matchesSelector + // on a disconnected node (IE 9) + support.disconnectedMatch = matches.call( el, "*" ); + + // This should fail with an exception + // Gecko does not error, returns false instead + matches.call( el, "[s!='']:x" ); + rbuggyMatches.push( "!=", pseudos ); + }); + } + + rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") ); + rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") ); + + /* Contains + ---------------------------------------------------------------------- */ + hasCompare = rnative.test( docElem.compareDocumentPosition ); + + // Element contains another + // Purposefully self-exclusive + // As in, an element does not contain itself + contains = hasCompare || rnative.test( docElem.contains ) ? + function( a, b ) { + var adown = a.nodeType === 9 ? a.documentElement : a, + bup = b && b.parentNode; + return a === bup || !!( bup && bup.nodeType === 1 && ( + adown.contains ? + adown.contains( bup ) : + a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16 + )); + } : + function( a, b ) { + if ( b ) { + while ( (b = b.parentNode) ) { + if ( b === a ) { + return true; + } + } + } + return false; + }; + + /* Sorting + ---------------------------------------------------------------------- */ + + // Document order sorting + sortOrder = hasCompare ? + function( a, b ) { + + // Flag for duplicate removal + if ( a === b ) { + hasDuplicate = true; + return 0; + } + + // Sort on method existence if only one input has compareDocumentPosition + var compare = !a.compareDocumentPosition - !b.compareDocumentPosition; + if ( compare ) { + return compare; + } + + // Calculate position if both inputs belong to the same document + compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ? + a.compareDocumentPosition( b ) : + + // Otherwise we know they are disconnected + 1; + + // Disconnected nodes + if ( compare & 1 || + (!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) { + + // Choose the first element that is related to our preferred document + if ( a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) { + return -1; + } + if ( b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) { + return 1; + } + + // Maintain original order + return sortInput ? + ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : + 0; + } + + return compare & 4 ? -1 : 1; + } : + function( a, b ) { + // Exit early if the nodes are identical + if ( a === b ) { + hasDuplicate = true; + return 0; + } + + var cur, + i = 0, + aup = a.parentNode, + bup = b.parentNode, + ap = [ a ], + bp = [ b ]; + + // Parentless nodes are either documents or disconnected + if ( !aup || !bup ) { + return a === document ? -1 : + b === document ? 1 : + aup ? -1 : + bup ? 1 : + sortInput ? + ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : + 0; + + // If the nodes are siblings, we can do a quick check + } else if ( aup === bup ) { + return siblingCheck( a, b ); + } + + // Otherwise we need full lists of their ancestors for comparison + cur = a; + while ( (cur = cur.parentNode) ) { + ap.unshift( cur ); + } + cur = b; + while ( (cur = cur.parentNode) ) { + bp.unshift( cur ); + } + + // Walk down the tree looking for a discrepancy + while ( ap[i] === bp[i] ) { + i++; + } + + return i ? + // Do a sibling check if the nodes have a common ancestor + siblingCheck( ap[i], bp[i] ) : + + // Otherwise nodes in our document sort first + ap[i] === preferredDoc ? -1 : + bp[i] === preferredDoc ? 1 : + 0; + }; + + return document; +}; + +Sizzle.matches = function( expr, elements ) { + return Sizzle( expr, null, null, elements ); +}; + +Sizzle.matchesSelector = function( elem, expr ) { + // Set document vars if needed + if ( ( elem.ownerDocument || elem ) !== document ) { + setDocument( elem ); + } + + // Make sure that attribute selectors are quoted + expr = expr.replace( rattributeQuotes, "='$1']" ); + + if ( support.matchesSelector && documentIsHTML && + !compilerCache[ expr + " " ] && + ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) && + ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) { + + try { + var ret = matches.call( elem, expr ); + + // IE 9's matchesSelector returns false on disconnected nodes + if ( ret || support.disconnectedMatch || + // As well, disconnected nodes are said to be in a document + // fragment in IE 9 + elem.document && elem.document.nodeType !== 11 ) { + return ret; + } + } catch (e) {} + } + + return Sizzle( expr, document, null, [ elem ] ).length > 0; +}; + +Sizzle.contains = function( context, elem ) { + // Set document vars if needed + if ( ( context.ownerDocument || context ) !== document ) { + setDocument( context ); + } + return contains( context, elem ); +}; + +Sizzle.attr = function( elem, name ) { + // Set document vars if needed + if ( ( elem.ownerDocument || elem ) !== document ) { + setDocument( elem ); + } + + var fn = Expr.attrHandle[ name.toLowerCase() ], + // Don't get fooled by Object.prototype properties (jQuery #13807) + val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ? + fn( elem, name, !documentIsHTML ) : + undefined; + + return val !== undefined ? + val : + support.attributes || !documentIsHTML ? + elem.getAttribute( name ) : + (val = elem.getAttributeNode(name)) && val.specified ? + val.value : + null; +}; + +Sizzle.escape = function( sel ) { + return (sel + "").replace( rcssescape, fcssescape ); +}; + +Sizzle.error = function( msg ) { + throw new Error( "Syntax error, unrecognized expression: " + msg ); +}; + +/** + * Document sorting and removing duplicates + * @param {ArrayLike} results + */ +Sizzle.uniqueSort = function( results ) { + var elem, + duplicates = [], + j = 0, + i = 0; + + // Unless we *know* we can detect duplicates, assume their presence + hasDuplicate = !support.detectDuplicates; + sortInput = !support.sortStable && results.slice( 0 ); + results.sort( sortOrder ); + + if ( hasDuplicate ) { + while ( (elem = results[i++]) ) { + if ( elem === results[ i ] ) { + j = duplicates.push( i ); + } + } + while ( j-- ) { + results.splice( duplicates[ j ], 1 ); + } + } + + // Clear input after sorting to release objects + // See https://github.com/jquery/sizzle/pull/225 + sortInput = null; + + return results; +}; + +/** + * Utility function for retrieving the text value of an array of DOM nodes + * @param {Array|Element} elem + */ +getText = Sizzle.getText = function( elem ) { + var node, + ret = "", + i = 0, + nodeType = elem.nodeType; + + if ( !nodeType ) { + // If no nodeType, this is expected to be an array + while ( (node = elem[i++]) ) { + // Do not traverse comment nodes + ret += getText( node ); + } + } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) { + // Use textContent for elements + // innerText usage removed for consistency of new lines (jQuery #11153) + if ( typeof elem.textContent === "string" ) { + return elem.textContent; + } else { + // Traverse its children + for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { + ret += getText( elem ); + } + } + } else if ( nodeType === 3 || nodeType === 4 ) { + return elem.nodeValue; + } + // Do not include comment or processing instruction nodes + + return ret; +}; + +Expr = Sizzle.selectors = { + + // Can be adjusted by the user + cacheLength: 50, + + createPseudo: markFunction, + + match: matchExpr, + + attrHandle: {}, + + find: {}, + + relative: { + ">": { dir: "parentNode", first: true }, + " ": { dir: "parentNode" }, + "+": { dir: "previousSibling", first: true }, + "~": { dir: "previousSibling" } + }, + + preFilter: { + "ATTR": function( match ) { + match[1] = match[1].replace( runescape, funescape ); + + // Move the given value to match[3] whether quoted or unquoted + match[3] = ( match[3] || match[4] || match[5] || "" ).replace( runescape, funescape ); + + if ( match[2] === "~=" ) { + match[3] = " " + match[3] + " "; + } + + return match.slice( 0, 4 ); + }, + + "CHILD": function( match ) { + /* matches from matchExpr["CHILD"] + 1 type (only|nth|...) + 2 what (child|of-type) + 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...) + 4 xn-component of xn+y argument ([+-]?\d*n|) + 5 sign of xn-component + 6 x of xn-component + 7 sign of y-component + 8 y of y-component + */ + match[1] = match[1].toLowerCase(); + + if ( match[1].slice( 0, 3 ) === "nth" ) { + // nth-* requires argument + if ( !match[3] ) { + Sizzle.error( match[0] ); + } + + // numeric x and y parameters for Expr.filter.CHILD + // remember that false/true cast respectively to 0/1 + match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) ); + match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" ); + + // other types prohibit arguments + } else if ( match[3] ) { + Sizzle.error( match[0] ); + } + + return match; + }, + + "PSEUDO": function( match ) { + var excess, + unquoted = !match[6] && match[2]; + + if ( matchExpr["CHILD"].test( match[0] ) ) { + return null; + } + + // Accept quoted arguments as-is + if ( match[3] ) { + match[2] = match[4] || match[5] || ""; + + // Strip excess characters from unquoted arguments + } else if ( unquoted && rpseudo.test( unquoted ) && + // Get excess from tokenize (recursively) + (excess = tokenize( unquoted, true )) && + // advance to the next closing parenthesis + (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) { + + // excess is a negative index + match[0] = match[0].slice( 0, excess ); + match[2] = unquoted.slice( 0, excess ); + } + + // Return only captures needed by the pseudo filter method (type and argument) + return match.slice( 0, 3 ); + } + }, + + filter: { + + "TAG": function( nodeNameSelector ) { + var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase(); + return nodeNameSelector === "*" ? + function() { return true; } : + function( elem ) { + return elem.nodeName && elem.nodeName.toLowerCase() === nodeName; + }; + }, + + "CLASS": function( className ) { + var pattern = classCache[ className + " " ]; + + return pattern || + (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) && + classCache( className, function( elem ) { + return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== "undefined" && elem.getAttribute("class") || "" ); + }); + }, + + "ATTR": function( name, operator, check ) { + return function( elem ) { + var result = Sizzle.attr( elem, name ); + + if ( result == null ) { + return operator === "!="; + } + if ( !operator ) { + return true; + } + + result += ""; + + return operator === "=" ? result === check : + operator === "!=" ? result !== check : + operator === "^=" ? check && result.indexOf( check ) === 0 : + operator === "*=" ? check && result.indexOf( check ) > -1 : + operator === "$=" ? check && result.slice( -check.length ) === check : + operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 : + operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" : + false; + }; + }, + + "CHILD": function( type, what, argument, first, last ) { + var simple = type.slice( 0, 3 ) !== "nth", + forward = type.slice( -4 ) !== "last", + ofType = what === "of-type"; + + return first === 1 && last === 0 ? + + // Shortcut for :nth-*(n) + function( elem ) { + return !!elem.parentNode; + } : + + function( elem, context, xml ) { + var cache, uniqueCache, outerCache, node, nodeIndex, start, + dir = simple !== forward ? "nextSibling" : "previousSibling", + parent = elem.parentNode, + name = ofType && elem.nodeName.toLowerCase(), + useCache = !xml && !ofType, + diff = false; + + if ( parent ) { + + // :(first|last|only)-(child|of-type) + if ( simple ) { + while ( dir ) { + node = elem; + while ( (node = node[ dir ]) ) { + if ( ofType ? + node.nodeName.toLowerCase() === name : + node.nodeType === 1 ) { + + return false; + } + } + // Reverse direction for :only-* (if we haven't yet done so) + start = dir = type === "only" && !start && "nextSibling"; + } + return true; + } + + start = [ forward ? parent.firstChild : parent.lastChild ]; + + // non-xml :nth-child(...) stores cache data on `parent` + if ( forward && useCache ) { + + // Seek `elem` from a previously-cached index + + // ...in a gzip-friendly way + node = parent; + outerCache = node[ expando ] || (node[ expando ] = {}); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ node.uniqueID ] || + (outerCache[ node.uniqueID ] = {}); + + cache = uniqueCache[ type ] || []; + nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; + diff = nodeIndex && cache[ 2 ]; + node = nodeIndex && parent.childNodes[ nodeIndex ]; + + while ( (node = ++nodeIndex && node && node[ dir ] || + + // Fallback to seeking `elem` from the start + (diff = nodeIndex = 0) || start.pop()) ) { + + // When found, cache indexes on `parent` and break + if ( node.nodeType === 1 && ++diff && node === elem ) { + uniqueCache[ type ] = [ dirruns, nodeIndex, diff ]; + break; + } + } + + } else { + // Use previously-cached element index if available + if ( useCache ) { + // ...in a gzip-friendly way + node = elem; + outerCache = node[ expando ] || (node[ expando ] = {}); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ node.uniqueID ] || + (outerCache[ node.uniqueID ] = {}); + + cache = uniqueCache[ type ] || []; + nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; + diff = nodeIndex; + } + + // xml :nth-child(...) + // or :nth-last-child(...) or :nth(-last)?-of-type(...) + if ( diff === false ) { + // Use the same loop as above to seek `elem` from the start + while ( (node = ++nodeIndex && node && node[ dir ] || + (diff = nodeIndex = 0) || start.pop()) ) { + + if ( ( ofType ? + node.nodeName.toLowerCase() === name : + node.nodeType === 1 ) && + ++diff ) { + + // Cache the index of each encountered element + if ( useCache ) { + outerCache = node[ expando ] || (node[ expando ] = {}); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ node.uniqueID ] || + (outerCache[ node.uniqueID ] = {}); + + uniqueCache[ type ] = [ dirruns, diff ]; + } + + if ( node === elem ) { + break; + } + } + } + } + } + + // Incorporate the offset, then check against cycle size + diff -= last; + return diff === first || ( diff % first === 0 && diff / first >= 0 ); + } + }; + }, + + "PSEUDO": function( pseudo, argument ) { + // pseudo-class names are case-insensitive + // http://www.w3.org/TR/selectors/#pseudo-classes + // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters + // Remember that setFilters inherits from pseudos + var args, + fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] || + Sizzle.error( "unsupported pseudo: " + pseudo ); + + // The user may use createPseudo to indicate that + // arguments are needed to create the filter function + // just as Sizzle does + if ( fn[ expando ] ) { + return fn( argument ); + } + + // But maintain support for old signatures + if ( fn.length > 1 ) { + args = [ pseudo, pseudo, "", argument ]; + return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ? + markFunction(function( seed, matches ) { + var idx, + matched = fn( seed, argument ), + i = matched.length; + while ( i-- ) { + idx = indexOf( seed, matched[i] ); + seed[ idx ] = !( matches[ idx ] = matched[i] ); + } + }) : + function( elem ) { + return fn( elem, 0, args ); + }; + } + + return fn; + } + }, + + pseudos: { + // Potentially complex pseudos + "not": markFunction(function( selector ) { + // Trim the selector passed to compile + // to avoid treating leading and trailing + // spaces as combinators + var input = [], + results = [], + matcher = compile( selector.replace( rtrim, "$1" ) ); + + return matcher[ expando ] ? + markFunction(function( seed, matches, context, xml ) { + var elem, + unmatched = matcher( seed, null, xml, [] ), + i = seed.length; + + // Match elements unmatched by `matcher` + while ( i-- ) { + if ( (elem = unmatched[i]) ) { + seed[i] = !(matches[i] = elem); + } + } + }) : + function( elem, context, xml ) { + input[0] = elem; + matcher( input, null, xml, results ); + // Don't keep the element (issue #299) + input[0] = null; + return !results.pop(); + }; + }), + + "has": markFunction(function( selector ) { + return function( elem ) { + return Sizzle( selector, elem ).length > 0; + }; + }), + + "contains": markFunction(function( text ) { + text = text.replace( runescape, funescape ); + return function( elem ) { + return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1; + }; + }), + + // "Whether an element is represented by a :lang() selector + // is based solely on the element's language value + // being equal to the identifier C, + // or beginning with the identifier C immediately followed by "-". + // The matching of C against the element's language value is performed case-insensitively. + // The identifier C does not have to be a valid language name." + // http://www.w3.org/TR/selectors/#lang-pseudo + "lang": markFunction( function( lang ) { + // lang value must be a valid identifier + if ( !ridentifier.test(lang || "") ) { + Sizzle.error( "unsupported lang: " + lang ); + } + lang = lang.replace( runescape, funescape ).toLowerCase(); + return function( elem ) { + var elemLang; + do { + if ( (elemLang = documentIsHTML ? + elem.lang : + elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) { + + elemLang = elemLang.toLowerCase(); + return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0; + } + } while ( (elem = elem.parentNode) && elem.nodeType === 1 ); + return false; + }; + }), + + // Miscellaneous + "target": function( elem ) { + var hash = window.location && window.location.hash; + return hash && hash.slice( 1 ) === elem.id; + }, + + "root": function( elem ) { + return elem === docElem; + }, + + "focus": function( elem ) { + return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex); + }, + + // Boolean properties + "enabled": createDisabledPseudo( false ), + "disabled": createDisabledPseudo( true ), + + "checked": function( elem ) { + // In CSS3, :checked should return both checked and selected elements + // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked + var nodeName = elem.nodeName.toLowerCase(); + return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected); + }, + + "selected": function( elem ) { + // Accessing this property makes selected-by-default + // options in Safari work properly + if ( elem.parentNode ) { + elem.parentNode.selectedIndex; + } + + return elem.selected === true; + }, + + // Contents + "empty": function( elem ) { + // http://www.w3.org/TR/selectors/#empty-pseudo + // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5), + // but not by others (comment: 8; processing instruction: 7; etc.) + // nodeType < 6 works because attributes (2) do not appear as children + for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { + if ( elem.nodeType < 6 ) { + return false; + } + } + return true; + }, + + "parent": function( elem ) { + return !Expr.pseudos["empty"]( elem ); + }, + + // Element/input types + "header": function( elem ) { + return rheader.test( elem.nodeName ); + }, + + "input": function( elem ) { + return rinputs.test( elem.nodeName ); + }, + + "button": function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && elem.type === "button" || name === "button"; + }, + + "text": function( elem ) { + var attr; + return elem.nodeName.toLowerCase() === "input" && + elem.type === "text" && + + // Support: IE<8 + // New HTML5 attribute values (e.g., "search") appear with elem.type === "text" + ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text" ); + }, + + // Position-in-collection + "first": createPositionalPseudo(function() { + return [ 0 ]; + }), + + "last": createPositionalPseudo(function( matchIndexes, length ) { + return [ length - 1 ]; + }), + + "eq": createPositionalPseudo(function( matchIndexes, length, argument ) { + return [ argument < 0 ? argument + length : argument ]; + }), + + "even": createPositionalPseudo(function( matchIndexes, length ) { + var i = 0; + for ( ; i < length; i += 2 ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "odd": createPositionalPseudo(function( matchIndexes, length ) { + var i = 1; + for ( ; i < length; i += 2 ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "lt": createPositionalPseudo(function( matchIndexes, length, argument ) { + var i = argument < 0 ? argument + length : argument; + for ( ; --i >= 0; ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "gt": createPositionalPseudo(function( matchIndexes, length, argument ) { + var i = argument < 0 ? argument + length : argument; + for ( ; ++i < length; ) { + matchIndexes.push( i ); + } + return matchIndexes; + }) + } +}; + +Expr.pseudos["nth"] = Expr.pseudos["eq"]; + +// Add button/input type pseudos +for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) { + Expr.pseudos[ i ] = createInputPseudo( i ); +} +for ( i in { submit: true, reset: true } ) { + Expr.pseudos[ i ] = createButtonPseudo( i ); +} + +// Easy API for creating new setFilters +function setFilters() {} +setFilters.prototype = Expr.filters = Expr.pseudos; +Expr.setFilters = new setFilters(); + +tokenize = Sizzle.tokenize = function( selector, parseOnly ) { + var matched, match, tokens, type, + soFar, groups, preFilters, + cached = tokenCache[ selector + " " ]; + + if ( cached ) { + return parseOnly ? 0 : cached.slice( 0 ); + } + + soFar = selector; + groups = []; + preFilters = Expr.preFilter; + + while ( soFar ) { + + // Comma and first run + if ( !matched || (match = rcomma.exec( soFar )) ) { + if ( match ) { + // Don't consume trailing commas as valid + soFar = soFar.slice( match[0].length ) || soFar; + } + groups.push( (tokens = []) ); + } + + matched = false; + + // Combinators + if ( (match = rcombinators.exec( soFar )) ) { + matched = match.shift(); + tokens.push({ + value: matched, + // Cast descendant combinators to space + type: match[0].replace( rtrim, " " ) + }); + soFar = soFar.slice( matched.length ); + } + + // Filters + for ( type in Expr.filter ) { + if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] || + (match = preFilters[ type ]( match ))) ) { + matched = match.shift(); + tokens.push({ + value: matched, + type: type, + matches: match + }); + soFar = soFar.slice( matched.length ); + } + } + + if ( !matched ) { + break; + } + } + + // Return the length of the invalid excess + // if we're just parsing + // Otherwise, throw an error or return tokens + return parseOnly ? + soFar.length : + soFar ? + Sizzle.error( selector ) : + // Cache the tokens + tokenCache( selector, groups ).slice( 0 ); +}; + +function toSelector( tokens ) { + var i = 0, + len = tokens.length, + selector = ""; + for ( ; i < len; i++ ) { + selector += tokens[i].value; + } + return selector; +} + +function addCombinator( matcher, combinator, base ) { + var dir = combinator.dir, + skip = combinator.next, + key = skip || dir, + checkNonElements = base && key === "parentNode", + doneName = done++; + + return combinator.first ? + // Check against closest ancestor/preceding element + function( elem, context, xml ) { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + return matcher( elem, context, xml ); + } + } + return false; + } : + + // Check against all ancestor/preceding elements + function( elem, context, xml ) { + var oldCache, uniqueCache, outerCache, + newCache = [ dirruns, doneName ]; + + // We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching + if ( xml ) { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + if ( matcher( elem, context, xml ) ) { + return true; + } + } + } + } else { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + outerCache = elem[ expando ] || (elem[ expando ] = {}); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ elem.uniqueID ] || (outerCache[ elem.uniqueID ] = {}); + + if ( skip && skip === elem.nodeName.toLowerCase() ) { + elem = elem[ dir ] || elem; + } else if ( (oldCache = uniqueCache[ key ]) && + oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) { + + // Assign to newCache so results back-propagate to previous elements + return (newCache[ 2 ] = oldCache[ 2 ]); + } else { + // Reuse newcache so results back-propagate to previous elements + uniqueCache[ key ] = newCache; + + // A match means we're done; a fail means we have to keep checking + if ( (newCache[ 2 ] = matcher( elem, context, xml )) ) { + return true; + } + } + } + } + } + return false; + }; +} + +function elementMatcher( matchers ) { + return matchers.length > 1 ? + function( elem, context, xml ) { + var i = matchers.length; + while ( i-- ) { + if ( !matchers[i]( elem, context, xml ) ) { + return false; + } + } + return true; + } : + matchers[0]; +} + +function multipleContexts( selector, contexts, results ) { + var i = 0, + len = contexts.length; + for ( ; i < len; i++ ) { + Sizzle( selector, contexts[i], results ); + } + return results; +} + +function condense( unmatched, map, filter, context, xml ) { + var elem, + newUnmatched = [], + i = 0, + len = unmatched.length, + mapped = map != null; + + for ( ; i < len; i++ ) { + if ( (elem = unmatched[i]) ) { + if ( !filter || filter( elem, context, xml ) ) { + newUnmatched.push( elem ); + if ( mapped ) { + map.push( i ); + } + } + } + } + + return newUnmatched; +} + +function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) { + if ( postFilter && !postFilter[ expando ] ) { + postFilter = setMatcher( postFilter ); + } + if ( postFinder && !postFinder[ expando ] ) { + postFinder = setMatcher( postFinder, postSelector ); + } + return markFunction(function( seed, results, context, xml ) { + var temp, i, elem, + preMap = [], + postMap = [], + preexisting = results.length, + + // Get initial elements from seed or context + elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ), + + // Prefilter to get matcher input, preserving a map for seed-results synchronization + matcherIn = preFilter && ( seed || !selector ) ? + condense( elems, preMap, preFilter, context, xml ) : + elems, + + matcherOut = matcher ? + // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results, + postFinder || ( seed ? preFilter : preexisting || postFilter ) ? + + // ...intermediate processing is necessary + [] : + + // ...otherwise use results directly + results : + matcherIn; + + // Find primary matches + if ( matcher ) { + matcher( matcherIn, matcherOut, context, xml ); + } + + // Apply postFilter + if ( postFilter ) { + temp = condense( matcherOut, postMap ); + postFilter( temp, [], context, xml ); + + // Un-match failing elements by moving them back to matcherIn + i = temp.length; + while ( i-- ) { + if ( (elem = temp[i]) ) { + matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem); + } + } + } + + if ( seed ) { + if ( postFinder || preFilter ) { + if ( postFinder ) { + // Get the final matcherOut by condensing this intermediate into postFinder contexts + temp = []; + i = matcherOut.length; + while ( i-- ) { + if ( (elem = matcherOut[i]) ) { + // Restore matcherIn since elem is not yet a final match + temp.push( (matcherIn[i] = elem) ); + } + } + postFinder( null, (matcherOut = []), temp, xml ); + } + + // Move matched elements from seed to results to keep them synchronized + i = matcherOut.length; + while ( i-- ) { + if ( (elem = matcherOut[i]) && + (temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) { + + seed[temp] = !(results[temp] = elem); + } + } + } + + // Add elements to results, through postFinder if defined + } else { + matcherOut = condense( + matcherOut === results ? + matcherOut.splice( preexisting, matcherOut.length ) : + matcherOut + ); + if ( postFinder ) { + postFinder( null, results, matcherOut, xml ); + } else { + push.apply( results, matcherOut ); + } + } + }); +} + +function matcherFromTokens( tokens ) { + var checkContext, matcher, j, + len = tokens.length, + leadingRelative = Expr.relative[ tokens[0].type ], + implicitRelative = leadingRelative || Expr.relative[" "], + i = leadingRelative ? 1 : 0, + + // The foundational matcher ensures that elements are reachable from top-level context(s) + matchContext = addCombinator( function( elem ) { + return elem === checkContext; + }, implicitRelative, true ), + matchAnyContext = addCombinator( function( elem ) { + return indexOf( checkContext, elem ) > -1; + }, implicitRelative, true ), + matchers = [ function( elem, context, xml ) { + var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || ( + (checkContext = context).nodeType ? + matchContext( elem, context, xml ) : + matchAnyContext( elem, context, xml ) ); + // Avoid hanging onto element (issue #299) + checkContext = null; + return ret; + } ]; + + for ( ; i < len; i++ ) { + if ( (matcher = Expr.relative[ tokens[i].type ]) ) { + matchers = [ addCombinator(elementMatcher( matchers ), matcher) ]; + } else { + matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches ); + + // Return special upon seeing a positional matcher + if ( matcher[ expando ] ) { + // Find the next relative operator (if any) for proper handling + j = ++i; + for ( ; j < len; j++ ) { + if ( Expr.relative[ tokens[j].type ] ) { + break; + } + } + return setMatcher( + i > 1 && elementMatcher( matchers ), + i > 1 && toSelector( + // If the preceding token was a descendant combinator, insert an implicit any-element `*` + tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" }) + ).replace( rtrim, "$1" ), + matcher, + i < j && matcherFromTokens( tokens.slice( i, j ) ), + j < len && matcherFromTokens( (tokens = tokens.slice( j )) ), + j < len && toSelector( tokens ) + ); + } + matchers.push( matcher ); + } + } + + return elementMatcher( matchers ); +} + +function matcherFromGroupMatchers( elementMatchers, setMatchers ) { + var bySet = setMatchers.length > 0, + byElement = elementMatchers.length > 0, + superMatcher = function( seed, context, xml, results, outermost ) { + var elem, j, matcher, + matchedCount = 0, + i = "0", + unmatched = seed && [], + setMatched = [], + contextBackup = outermostContext, + // We must always have either seed elements or outermost context + elems = seed || byElement && Expr.find["TAG"]( "*", outermost ), + // Use integer dirruns iff this is the outermost matcher + dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1), + len = elems.length; + + if ( outermost ) { + outermostContext = context === document || context || outermost; + } + + // Add elements passing elementMatchers directly to results + // Support: IE<9, Safari + // Tolerate NodeList properties (IE: "length"; Safari: ) matching elements by id + for ( ; i !== len && (elem = elems[i]) != null; i++ ) { + if ( byElement && elem ) { + j = 0; + if ( !context && elem.ownerDocument !== document ) { + setDocument( elem ); + xml = !documentIsHTML; + } + while ( (matcher = elementMatchers[j++]) ) { + if ( matcher( elem, context || document, xml) ) { + results.push( elem ); + break; + } + } + if ( outermost ) { + dirruns = dirrunsUnique; + } + } + + // Track unmatched elements for set filters + if ( bySet ) { + // They will have gone through all possible matchers + if ( (elem = !matcher && elem) ) { + matchedCount--; + } + + // Lengthen the array for every element, matched or not + if ( seed ) { + unmatched.push( elem ); + } + } + } + + // `i` is now the count of elements visited above, and adding it to `matchedCount` + // makes the latter nonnegative. + matchedCount += i; + + // Apply set filters to unmatched elements + // NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount` + // equals `i`), unless we didn't visit _any_ elements in the above loop because we have + // no element matchers and no seed. + // Incrementing an initially-string "0" `i` allows `i` to remain a string only in that + // case, which will result in a "00" `matchedCount` that differs from `i` but is also + // numerically zero. + if ( bySet && i !== matchedCount ) { + j = 0; + while ( (matcher = setMatchers[j++]) ) { + matcher( unmatched, setMatched, context, xml ); + } + + if ( seed ) { + // Reintegrate element matches to eliminate the need for sorting + if ( matchedCount > 0 ) { + while ( i-- ) { + if ( !(unmatched[i] || setMatched[i]) ) { + setMatched[i] = pop.call( results ); + } + } + } + + // Discard index placeholder values to get only actual matches + setMatched = condense( setMatched ); + } + + // Add matches to results + push.apply( results, setMatched ); + + // Seedless set matches succeeding multiple successful matchers stipulate sorting + if ( outermost && !seed && setMatched.length > 0 && + ( matchedCount + setMatchers.length ) > 1 ) { + + Sizzle.uniqueSort( results ); + } + } + + // Override manipulation of globals by nested matchers + if ( outermost ) { + dirruns = dirrunsUnique; + outermostContext = contextBackup; + } + + return unmatched; + }; + + return bySet ? + markFunction( superMatcher ) : + superMatcher; +} + +compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) { + var i, + setMatchers = [], + elementMatchers = [], + cached = compilerCache[ selector + " " ]; + + if ( !cached ) { + // Generate a function of recursive functions that can be used to check each element + if ( !match ) { + match = tokenize( selector ); + } + i = match.length; + while ( i-- ) { + cached = matcherFromTokens( match[i] ); + if ( cached[ expando ] ) { + setMatchers.push( cached ); + } else { + elementMatchers.push( cached ); + } + } + + // Cache the compiled function + cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) ); + + // Save selector and tokenization + cached.selector = selector; + } + return cached; +}; + +/** + * A low-level selection function that works with Sizzle's compiled + * selector functions + * @param {String|Function} selector A selector or a pre-compiled + * selector function built with Sizzle.compile + * @param {Element} context + * @param {Array} [results] + * @param {Array} [seed] A set of elements to match against + */ +select = Sizzle.select = function( selector, context, results, seed ) { + var i, tokens, token, type, find, + compiled = typeof selector === "function" && selector, + match = !seed && tokenize( (selector = compiled.selector || selector) ); + + results = results || []; + + // Try to minimize operations if there is only one selector in the list and no seed + // (the latter of which guarantees us context) + if ( match.length === 1 ) { + + // Reduce context if the leading compound selector is an ID + tokens = match[0] = match[0].slice( 0 ); + if ( tokens.length > 2 && (token = tokens[0]).type === "ID" && + context.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[1].type ] ) { + + context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0]; + if ( !context ) { + return results; + + // Precompiled matchers will still verify ancestry, so step up a level + } else if ( compiled ) { + context = context.parentNode; + } + + selector = selector.slice( tokens.shift().value.length ); + } + + // Fetch a seed set for right-to-left matching + i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length; + while ( i-- ) { + token = tokens[i]; + + // Abort if we hit a combinator + if ( Expr.relative[ (type = token.type) ] ) { + break; + } + if ( (find = Expr.find[ type ]) ) { + // Search, expanding context for leading sibling combinators + if ( (seed = find( + token.matches[0].replace( runescape, funescape ), + rsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context + )) ) { + + // If seed is empty or no tokens remain, we can return early + tokens.splice( i, 1 ); + selector = seed.length && toSelector( tokens ); + if ( !selector ) { + push.apply( results, seed ); + return results; + } + + break; + } + } + } + } + + // Compile and execute a filtering function if one is not provided + // Provide `match` to avoid retokenization if we modified the selector above + ( compiled || compile( selector, match ) )( + seed, + context, + !documentIsHTML, + results, + !context || rsibling.test( selector ) && testContext( context.parentNode ) || context + ); + return results; +}; + +// One-time assignments + +// Sort stability +support.sortStable = expando.split("").sort( sortOrder ).join("") === expando; + +// Support: Chrome 14-35+ +// Always assume duplicates if they aren't passed to the comparison function +support.detectDuplicates = !!hasDuplicate; + +// Initialize against the default document +setDocument(); + +// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27) +// Detached nodes confoundingly follow *each other* +support.sortDetached = assert(function( el ) { + // Should return 1, but returns 4 (following) + return el.compareDocumentPosition( document.createElement("fieldset") ) & 1; +}); + +// Support: IE<8 +// Prevent attribute/property "interpolation" +// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx +if ( !assert(function( el ) { + el.innerHTML = ""; + return el.firstChild.getAttribute("href") === "#" ; +}) ) { + addHandle( "type|href|height|width", function( elem, name, isXML ) { + if ( !isXML ) { + return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 ); + } + }); +} + +// Support: IE<9 +// Use defaultValue in place of getAttribute("value") +if ( !support.attributes || !assert(function( el ) { + el.innerHTML = ""; + el.firstChild.setAttribute( "value", "" ); + return el.firstChild.getAttribute( "value" ) === ""; +}) ) { + addHandle( "value", function( elem, name, isXML ) { + if ( !isXML && elem.nodeName.toLowerCase() === "input" ) { + return elem.defaultValue; + } + }); +} + +// Support: IE<9 +// Use getAttributeNode to fetch booleans when getAttribute lies +if ( !assert(function( el ) { + return el.getAttribute("disabled") == null; +}) ) { + addHandle( booleans, function( elem, name, isXML ) { + var val; + if ( !isXML ) { + return elem[ name ] === true ? name.toLowerCase() : + (val = elem.getAttributeNode( name )) && val.specified ? + val.value : + null; + } + }); +} + +return Sizzle; + +})( window ); + + + +jQuery.find = Sizzle; +jQuery.expr = Sizzle.selectors; + +// Deprecated +jQuery.expr[ ":" ] = jQuery.expr.pseudos; +jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort; +jQuery.text = Sizzle.getText; +jQuery.isXMLDoc = Sizzle.isXML; +jQuery.contains = Sizzle.contains; +jQuery.escapeSelector = Sizzle.escape; + + + + +var dir = function( elem, dir, until ) { + var matched = [], + truncate = until !== undefined; + + while ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) { + if ( elem.nodeType === 1 ) { + if ( truncate && jQuery( elem ).is( until ) ) { + break; + } + matched.push( elem ); + } + } + return matched; +}; + + +var siblings = function( n, elem ) { + var matched = []; + + for ( ; n; n = n.nextSibling ) { + if ( n.nodeType === 1 && n !== elem ) { + matched.push( n ); + } + } + + return matched; +}; + + +var rneedsContext = jQuery.expr.match.needsContext; + + + +function nodeName( elem, name ) { + + return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); + +}; +var rsingleTag = ( /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i ); + + + +var risSimple = /^.[^:#\[\.,]*$/; + +// Implement the identical functionality for filter and not +function winnow( elements, qualifier, not ) { + if ( jQuery.isFunction( qualifier ) ) { + return jQuery.grep( elements, function( elem, i ) { + return !!qualifier.call( elem, i, elem ) !== not; + } ); + } + + // Single element + if ( qualifier.nodeType ) { + return jQuery.grep( elements, function( elem ) { + return ( elem === qualifier ) !== not; + } ); + } + + // Arraylike of elements (jQuery, arguments, Array) + if ( typeof qualifier !== "string" ) { + return jQuery.grep( elements, function( elem ) { + return ( indexOf.call( qualifier, elem ) > -1 ) !== not; + } ); + } + + // Simple selector that can be filtered directly, removing non-Elements + if ( risSimple.test( qualifier ) ) { + return jQuery.filter( qualifier, elements, not ); + } + + // Complex selector, compare the two sets, removing non-Elements + qualifier = jQuery.filter( qualifier, elements ); + return jQuery.grep( elements, function( elem ) { + return ( indexOf.call( qualifier, elem ) > -1 ) !== not && elem.nodeType === 1; + } ); +} + +jQuery.filter = function( expr, elems, not ) { + var elem = elems[ 0 ]; + + if ( not ) { + expr = ":not(" + expr + ")"; + } + + if ( elems.length === 1 && elem.nodeType === 1 ) { + return jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : []; + } + + return jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) { + return elem.nodeType === 1; + } ) ); +}; + +jQuery.fn.extend( { + find: function( selector ) { + var i, ret, + len = this.length, + self = this; + + if ( typeof selector !== "string" ) { + return this.pushStack( jQuery( selector ).filter( function() { + for ( i = 0; i < len; i++ ) { + if ( jQuery.contains( self[ i ], this ) ) { + return true; + } + } + } ) ); + } + + ret = this.pushStack( [] ); + + for ( i = 0; i < len; i++ ) { + jQuery.find( selector, self[ i ], ret ); + } + + return len > 1 ? jQuery.uniqueSort( ret ) : ret; + }, + filter: function( selector ) { + return this.pushStack( winnow( this, selector || [], false ) ); + }, + not: function( selector ) { + return this.pushStack( winnow( this, selector || [], true ) ); + }, + is: function( selector ) { + return !!winnow( + this, + + // If this is a positional/relative selector, check membership in the returned set + // so $("p:first").is("p:last") won't return true for a doc with two "p". + typeof selector === "string" && rneedsContext.test( selector ) ? + jQuery( selector ) : + selector || [], + false + ).length; + } +} ); + + +// Initialize a jQuery object + + +// A central reference to the root jQuery(document) +var rootjQuery, + + // A simple way to check for HTML strings + // Prioritize #id over to avoid XSS via location.hash (#9521) + // Strict HTML recognition (#11290: must start with <) + // Shortcut simple #id case for speed + rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/, + + init = jQuery.fn.init = function( selector, context, root ) { + var match, elem; + + // HANDLE: $(""), $(null), $(undefined), $(false) + if ( !selector ) { + return this; + } + + // Method init() accepts an alternate rootjQuery + // so migrate can support jQuery.sub (gh-2101) + root = root || rootjQuery; + + // Handle HTML strings + if ( typeof selector === "string" ) { + if ( selector[ 0 ] === "<" && + selector[ selector.length - 1 ] === ">" && + selector.length >= 3 ) { + + // Assume that strings that start and end with <> are HTML and skip the regex check + match = [ null, selector, null ]; + + } else { + match = rquickExpr.exec( selector ); + } + + // Match html or make sure no context is specified for #id + if ( match && ( match[ 1 ] || !context ) ) { + + // HANDLE: $(html) -> $(array) + if ( match[ 1 ] ) { + context = context instanceof jQuery ? context[ 0 ] : context; + + // Option to run scripts is true for back-compat + // Intentionally let the error be thrown if parseHTML is not present + jQuery.merge( this, jQuery.parseHTML( + match[ 1 ], + context && context.nodeType ? context.ownerDocument || context : document, + true + ) ); + + // HANDLE: $(html, props) + if ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) { + for ( match in context ) { + + // Properties of context are called as methods if possible + if ( jQuery.isFunction( this[ match ] ) ) { + this[ match ]( context[ match ] ); + + // ...and otherwise set as attributes + } else { + this.attr( match, context[ match ] ); + } + } + } + + return this; + + // HANDLE: $(#id) + } else { + elem = document.getElementById( match[ 2 ] ); + + if ( elem ) { + + // Inject the element directly into the jQuery object + this[ 0 ] = elem; + this.length = 1; + } + return this; + } + + // HANDLE: $(expr, $(...)) + } else if ( !context || context.jquery ) { + return ( context || root ).find( selector ); + + // HANDLE: $(expr, context) + // (which is just equivalent to: $(context).find(expr) + } else { + return this.constructor( context ).find( selector ); + } + + // HANDLE: $(DOMElement) + } else if ( selector.nodeType ) { + this[ 0 ] = selector; + this.length = 1; + return this; + + // HANDLE: $(function) + // Shortcut for document ready + } else if ( jQuery.isFunction( selector ) ) { + return root.ready !== undefined ? + root.ready( selector ) : + + // Execute immediately if ready is not present + selector( jQuery ); + } + + return jQuery.makeArray( selector, this ); + }; + +// Give the init function the jQuery prototype for later instantiation +init.prototype = jQuery.fn; + +// Initialize central reference +rootjQuery = jQuery( document ); + + +var rparentsprev = /^(?:parents|prev(?:Until|All))/, + + // Methods guaranteed to produce a unique set when starting from a unique set + guaranteedUnique = { + children: true, + contents: true, + next: true, + prev: true + }; + +jQuery.fn.extend( { + has: function( target ) { + var targets = jQuery( target, this ), + l = targets.length; + + return this.filter( function() { + var i = 0; + for ( ; i < l; i++ ) { + if ( jQuery.contains( this, targets[ i ] ) ) { + return true; + } + } + } ); + }, + + closest: function( selectors, context ) { + var cur, + i = 0, + l = this.length, + matched = [], + targets = typeof selectors !== "string" && jQuery( selectors ); + + // Positional selectors never match, since there's no _selection_ context + if ( !rneedsContext.test( selectors ) ) { + for ( ; i < l; i++ ) { + for ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) { + + // Always skip document fragments + if ( cur.nodeType < 11 && ( targets ? + targets.index( cur ) > -1 : + + // Don't pass non-elements to Sizzle + cur.nodeType === 1 && + jQuery.find.matchesSelector( cur, selectors ) ) ) { + + matched.push( cur ); + break; + } + } + } + } + + return this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched ); + }, + + // Determine the position of an element within the set + index: function( elem ) { + + // No argument, return index in parent + if ( !elem ) { + return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1; + } + + // Index in selector + if ( typeof elem === "string" ) { + return indexOf.call( jQuery( elem ), this[ 0 ] ); + } + + // Locate the position of the desired element + return indexOf.call( this, + + // If it receives a jQuery object, the first element is used + elem.jquery ? elem[ 0 ] : elem + ); + }, + + add: function( selector, context ) { + return this.pushStack( + jQuery.uniqueSort( + jQuery.merge( this.get(), jQuery( selector, context ) ) + ) + ); + }, + + addBack: function( selector ) { + return this.add( selector == null ? + this.prevObject : this.prevObject.filter( selector ) + ); + } +} ); + +function sibling( cur, dir ) { + while ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {} + return cur; +} + +jQuery.each( { + parent: function( elem ) { + var parent = elem.parentNode; + return parent && parent.nodeType !== 11 ? parent : null; + }, + parents: function( elem ) { + return dir( elem, "parentNode" ); + }, + parentsUntil: function( elem, i, until ) { + return dir( elem, "parentNode", until ); + }, + next: function( elem ) { + return sibling( elem, "nextSibling" ); + }, + prev: function( elem ) { + return sibling( elem, "previousSibling" ); + }, + nextAll: function( elem ) { + return dir( elem, "nextSibling" ); + }, + prevAll: function( elem ) { + return dir( elem, "previousSibling" ); + }, + nextUntil: function( elem, i, until ) { + return dir( elem, "nextSibling", until ); + }, + prevUntil: function( elem, i, until ) { + return dir( elem, "previousSibling", until ); + }, + siblings: function( elem ) { + return siblings( ( elem.parentNode || {} ).firstChild, elem ); + }, + children: function( elem ) { + return siblings( elem.firstChild ); + }, + contents: function( elem ) { + if ( nodeName( elem, "iframe" ) ) { + return elem.contentDocument; + } + + // Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only + // Treat the template element as a regular one in browsers that + // don't support it. + if ( nodeName( elem, "template" ) ) { + elem = elem.content || elem; + } + + return jQuery.merge( [], elem.childNodes ); + } +}, function( name, fn ) { + jQuery.fn[ name ] = function( until, selector ) { + var matched = jQuery.map( this, fn, until ); + + if ( name.slice( -5 ) !== "Until" ) { + selector = until; + } + + if ( selector && typeof selector === "string" ) { + matched = jQuery.filter( selector, matched ); + } + + if ( this.length > 1 ) { + + // Remove duplicates + if ( !guaranteedUnique[ name ] ) { + jQuery.uniqueSort( matched ); + } + + // Reverse order for parents* and prev-derivatives + if ( rparentsprev.test( name ) ) { + matched.reverse(); + } + } + + return this.pushStack( matched ); + }; +} ); +var rnothtmlwhite = ( /[^\x20\t\r\n\f]+/g ); + + + +// Convert String-formatted options into Object-formatted ones +function createOptions( options ) { + var object = {}; + jQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) { + object[ flag ] = true; + } ); + return object; +} + +/* + * Create a callback list using the following parameters: + * + * options: an optional list of space-separated options that will change how + * the callback list behaves or a more traditional option object + * + * By default a callback list will act like an event callback list and can be + * "fired" multiple times. + * + * Possible options: + * + * once: will ensure the callback list can only be fired once (like a Deferred) + * + * memory: will keep track of previous values and will call any callback added + * after the list has been fired right away with the latest "memorized" + * values (like a Deferred) + * + * unique: will ensure a callback can only be added once (no duplicate in the list) + * + * stopOnFalse: interrupt callings when a callback returns false + * + */ +jQuery.Callbacks = function( options ) { + + // Convert options from String-formatted to Object-formatted if needed + // (we check in cache first) + options = typeof options === "string" ? + createOptions( options ) : + jQuery.extend( {}, options ); + + var // Flag to know if list is currently firing + firing, + + // Last fire value for non-forgettable lists + memory, + + // Flag to know if list was already fired + fired, + + // Flag to prevent firing + locked, + + // Actual callback list + list = [], + + // Queue of execution data for repeatable lists + queue = [], + + // Index of currently firing callback (modified by add/remove as needed) + firingIndex = -1, + + // Fire callbacks + fire = function() { + + // Enforce single-firing + locked = locked || options.once; + + // Execute callbacks for all pending executions, + // respecting firingIndex overrides and runtime changes + fired = firing = true; + for ( ; queue.length; firingIndex = -1 ) { + memory = queue.shift(); + while ( ++firingIndex < list.length ) { + + // Run callback and check for early termination + if ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false && + options.stopOnFalse ) { + + // Jump to end and forget the data so .add doesn't re-fire + firingIndex = list.length; + memory = false; + } + } + } + + // Forget the data if we're done with it + if ( !options.memory ) { + memory = false; + } + + firing = false; + + // Clean up if we're done firing for good + if ( locked ) { + + // Keep an empty list if we have data for future add calls + if ( memory ) { + list = []; + + // Otherwise, this object is spent + } else { + list = ""; + } + } + }, + + // Actual Callbacks object + self = { + + // Add a callback or a collection of callbacks to the list + add: function() { + if ( list ) { + + // If we have memory from a past run, we should fire after adding + if ( memory && !firing ) { + firingIndex = list.length - 1; + queue.push( memory ); + } + + ( function add( args ) { + jQuery.each( args, function( _, arg ) { + if ( jQuery.isFunction( arg ) ) { + if ( !options.unique || !self.has( arg ) ) { + list.push( arg ); + } + } else if ( arg && arg.length && jQuery.type( arg ) !== "string" ) { + + // Inspect recursively + add( arg ); + } + } ); + } )( arguments ); + + if ( memory && !firing ) { + fire(); + } + } + return this; + }, + + // Remove a callback from the list + remove: function() { + jQuery.each( arguments, function( _, arg ) { + var index; + while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) { + list.splice( index, 1 ); + + // Handle firing indexes + if ( index <= firingIndex ) { + firingIndex--; + } + } + } ); + return this; + }, + + // Check if a given callback is in the list. + // If no argument is given, return whether or not list has callbacks attached. + has: function( fn ) { + return fn ? + jQuery.inArray( fn, list ) > -1 : + list.length > 0; + }, + + // Remove all callbacks from the list + empty: function() { + if ( list ) { + list = []; + } + return this; + }, + + // Disable .fire and .add + // Abort any current/pending executions + // Clear all callbacks and values + disable: function() { + locked = queue = []; + list = memory = ""; + return this; + }, + disabled: function() { + return !list; + }, + + // Disable .fire + // Also disable .add unless we have memory (since it would have no effect) + // Abort any pending executions + lock: function() { + locked = queue = []; + if ( !memory && !firing ) { + list = memory = ""; + } + return this; + }, + locked: function() { + return !!locked; + }, + + // Call all callbacks with the given context and arguments + fireWith: function( context, args ) { + if ( !locked ) { + args = args || []; + args = [ context, args.slice ? args.slice() : args ]; + queue.push( args ); + if ( !firing ) { + fire(); + } + } + return this; + }, + + // Call all the callbacks with the given arguments + fire: function() { + self.fireWith( this, arguments ); + return this; + }, + + // To know if the callbacks have already been called at least once + fired: function() { + return !!fired; + } + }; + + return self; +}; + + +function Identity( v ) { + return v; +} +function Thrower( ex ) { + throw ex; +} + +function adoptValue( value, resolve, reject, noValue ) { + var method; + + try { + + // Check for promise aspect first to privilege synchronous behavior + if ( value && jQuery.isFunction( ( method = value.promise ) ) ) { + method.call( value ).done( resolve ).fail( reject ); + + // Other thenables + } else if ( value && jQuery.isFunction( ( method = value.then ) ) ) { + method.call( value, resolve, reject ); + + // Other non-thenables + } else { + + // Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer: + // * false: [ value ].slice( 0 ) => resolve( value ) + // * true: [ value ].slice( 1 ) => resolve() + resolve.apply( undefined, [ value ].slice( noValue ) ); + } + + // For Promises/A+, convert exceptions into rejections + // Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in + // Deferred#then to conditionally suppress rejection. + } catch ( value ) { + + // Support: Android 4.0 only + // Strict mode functions invoked without .call/.apply get global-object context + reject.apply( undefined, [ value ] ); + } +} + +jQuery.extend( { + + Deferred: function( func ) { + var tuples = [ + + // action, add listener, callbacks, + // ... .then handlers, argument index, [final state] + [ "notify", "progress", jQuery.Callbacks( "memory" ), + jQuery.Callbacks( "memory" ), 2 ], + [ "resolve", "done", jQuery.Callbacks( "once memory" ), + jQuery.Callbacks( "once memory" ), 0, "resolved" ], + [ "reject", "fail", jQuery.Callbacks( "once memory" ), + jQuery.Callbacks( "once memory" ), 1, "rejected" ] + ], + state = "pending", + promise = { + state: function() { + return state; + }, + always: function() { + deferred.done( arguments ).fail( arguments ); + return this; + }, + "catch": function( fn ) { + return promise.then( null, fn ); + }, + + // Keep pipe for back-compat + pipe: function( /* fnDone, fnFail, fnProgress */ ) { + var fns = arguments; + + return jQuery.Deferred( function( newDefer ) { + jQuery.each( tuples, function( i, tuple ) { + + // Map tuples (progress, done, fail) to arguments (done, fail, progress) + var fn = jQuery.isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ]; + + // deferred.progress(function() { bind to newDefer or newDefer.notify }) + // deferred.done(function() { bind to newDefer or newDefer.resolve }) + // deferred.fail(function() { bind to newDefer or newDefer.reject }) + deferred[ tuple[ 1 ] ]( function() { + var returned = fn && fn.apply( this, arguments ); + if ( returned && jQuery.isFunction( returned.promise ) ) { + returned.promise() + .progress( newDefer.notify ) + .done( newDefer.resolve ) + .fail( newDefer.reject ); + } else { + newDefer[ tuple[ 0 ] + "With" ]( + this, + fn ? [ returned ] : arguments + ); + } + } ); + } ); + fns = null; + } ).promise(); + }, + then: function( onFulfilled, onRejected, onProgress ) { + var maxDepth = 0; + function resolve( depth, deferred, handler, special ) { + return function() { + var that = this, + args = arguments, + mightThrow = function() { + var returned, then; + + // Support: Promises/A+ section 2.3.3.3.3 + // https://promisesaplus.com/#point-59 + // Ignore double-resolution attempts + if ( depth < maxDepth ) { + return; + } + + returned = handler.apply( that, args ); + + // Support: Promises/A+ section 2.3.1 + // https://promisesaplus.com/#point-48 + if ( returned === deferred.promise() ) { + throw new TypeError( "Thenable self-resolution" ); + } + + // Support: Promises/A+ sections 2.3.3.1, 3.5 + // https://promisesaplus.com/#point-54 + // https://promisesaplus.com/#point-75 + // Retrieve `then` only once + then = returned && + + // Support: Promises/A+ section 2.3.4 + // https://promisesaplus.com/#point-64 + // Only check objects and functions for thenability + ( typeof returned === "object" || + typeof returned === "function" ) && + returned.then; + + // Handle a returned thenable + if ( jQuery.isFunction( then ) ) { + + // Special processors (notify) just wait for resolution + if ( special ) { + then.call( + returned, + resolve( maxDepth, deferred, Identity, special ), + resolve( maxDepth, deferred, Thrower, special ) + ); + + // Normal processors (resolve) also hook into progress + } else { + + // ...and disregard older resolution values + maxDepth++; + + then.call( + returned, + resolve( maxDepth, deferred, Identity, special ), + resolve( maxDepth, deferred, Thrower, special ), + resolve( maxDepth, deferred, Identity, + deferred.notifyWith ) + ); + } + + // Handle all other returned values + } else { + + // Only substitute handlers pass on context + // and multiple values (non-spec behavior) + if ( handler !== Identity ) { + that = undefined; + args = [ returned ]; + } + + // Process the value(s) + // Default process is resolve + ( special || deferred.resolveWith )( that, args ); + } + }, + + // Only normal processors (resolve) catch and reject exceptions + process = special ? + mightThrow : + function() { + try { + mightThrow(); + } catch ( e ) { + + if ( jQuery.Deferred.exceptionHook ) { + jQuery.Deferred.exceptionHook( e, + process.stackTrace ); + } + + // Support: Promises/A+ section 2.3.3.3.4.1 + // https://promisesaplus.com/#point-61 + // Ignore post-resolution exceptions + if ( depth + 1 >= maxDepth ) { + + // Only substitute handlers pass on context + // and multiple values (non-spec behavior) + if ( handler !== Thrower ) { + that = undefined; + args = [ e ]; + } + + deferred.rejectWith( that, args ); + } + } + }; + + // Support: Promises/A+ section 2.3.3.3.1 + // https://promisesaplus.com/#point-57 + // Re-resolve promises immediately to dodge false rejection from + // subsequent errors + if ( depth ) { + process(); + } else { + + // Call an optional hook to record the stack, in case of exception + // since it's otherwise lost when execution goes async + if ( jQuery.Deferred.getStackHook ) { + process.stackTrace = jQuery.Deferred.getStackHook(); + } + window.setTimeout( process ); + } + }; + } + + return jQuery.Deferred( function( newDefer ) { + + // progress_handlers.add( ... ) + tuples[ 0 ][ 3 ].add( + resolve( + 0, + newDefer, + jQuery.isFunction( onProgress ) ? + onProgress : + Identity, + newDefer.notifyWith + ) + ); + + // fulfilled_handlers.add( ... ) + tuples[ 1 ][ 3 ].add( + resolve( + 0, + newDefer, + jQuery.isFunction( onFulfilled ) ? + onFulfilled : + Identity + ) + ); + + // rejected_handlers.add( ... ) + tuples[ 2 ][ 3 ].add( + resolve( + 0, + newDefer, + jQuery.isFunction( onRejected ) ? + onRejected : + Thrower + ) + ); + } ).promise(); + }, + + // Get a promise for this deferred + // If obj is provided, the promise aspect is added to the object + promise: function( obj ) { + return obj != null ? jQuery.extend( obj, promise ) : promise; + } + }, + deferred = {}; + + // Add list-specific methods + jQuery.each( tuples, function( i, tuple ) { + var list = tuple[ 2 ], + stateString = tuple[ 5 ]; + + // promise.progress = list.add + // promise.done = list.add + // promise.fail = list.add + promise[ tuple[ 1 ] ] = list.add; + + // Handle state + if ( stateString ) { + list.add( + function() { + + // state = "resolved" (i.e., fulfilled) + // state = "rejected" + state = stateString; + }, + + // rejected_callbacks.disable + // fulfilled_callbacks.disable + tuples[ 3 - i ][ 2 ].disable, + + // progress_callbacks.lock + tuples[ 0 ][ 2 ].lock + ); + } + + // progress_handlers.fire + // fulfilled_handlers.fire + // rejected_handlers.fire + list.add( tuple[ 3 ].fire ); + + // deferred.notify = function() { deferred.notifyWith(...) } + // deferred.resolve = function() { deferred.resolveWith(...) } + // deferred.reject = function() { deferred.rejectWith(...) } + deferred[ tuple[ 0 ] ] = function() { + deferred[ tuple[ 0 ] + "With" ]( this === deferred ? undefined : this, arguments ); + return this; + }; + + // deferred.notifyWith = list.fireWith + // deferred.resolveWith = list.fireWith + // deferred.rejectWith = list.fireWith + deferred[ tuple[ 0 ] + "With" ] = list.fireWith; + } ); + + // Make the deferred a promise + promise.promise( deferred ); + + // Call given func if any + if ( func ) { + func.call( deferred, deferred ); + } + + // All done! + return deferred; + }, + + // Deferred helper + when: function( singleValue ) { + var + + // count of uncompleted subordinates + remaining = arguments.length, + + // count of unprocessed arguments + i = remaining, + + // subordinate fulfillment data + resolveContexts = Array( i ), + resolveValues = slice.call( arguments ), + + // the master Deferred + master = jQuery.Deferred(), + + // subordinate callback factory + updateFunc = function( i ) { + return function( value ) { + resolveContexts[ i ] = this; + resolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value; + if ( !( --remaining ) ) { + master.resolveWith( resolveContexts, resolveValues ); + } + }; + }; + + // Single- and empty arguments are adopted like Promise.resolve + if ( remaining <= 1 ) { + adoptValue( singleValue, master.done( updateFunc( i ) ).resolve, master.reject, + !remaining ); + + // Use .then() to unwrap secondary thenables (cf. gh-3000) + if ( master.state() === "pending" || + jQuery.isFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) { + + return master.then(); + } + } + + // Multiple arguments are aggregated like Promise.all array elements + while ( i-- ) { + adoptValue( resolveValues[ i ], updateFunc( i ), master.reject ); + } + + return master.promise(); + } +} ); + + +// These usually indicate a programmer mistake during development, +// warn about them ASAP rather than swallowing them by default. +var rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/; + +jQuery.Deferred.exceptionHook = function( error, stack ) { + + // Support: IE 8 - 9 only + // Console exists when dev tools are open, which can happen at any time + if ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) { + window.console.warn( "jQuery.Deferred exception: " + error.message, error.stack, stack ); + } +}; + + + + +jQuery.readyException = function( error ) { + window.setTimeout( function() { + throw error; + } ); +}; + + + + +// The deferred used on DOM ready +var readyList = jQuery.Deferred(); + +jQuery.fn.ready = function( fn ) { + + readyList + .then( fn ) + + // Wrap jQuery.readyException in a function so that the lookup + // happens at the time of error handling instead of callback + // registration. + .catch( function( error ) { + jQuery.readyException( error ); + } ); + + return this; +}; + +jQuery.extend( { + + // Is the DOM ready to be used? Set to true once it occurs. + isReady: false, + + // A counter to track how many items to wait for before + // the ready event fires. See #6781 + readyWait: 1, + + // Handle when the DOM is ready + ready: function( wait ) { + + // Abort if there are pending holds or we're already ready + if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) { + return; + } + + // Remember that the DOM is ready + jQuery.isReady = true; + + // If a normal DOM Ready event fired, decrement, and wait if need be + if ( wait !== true && --jQuery.readyWait > 0 ) { + return; + } + + // If there are functions bound, to execute + readyList.resolveWith( document, [ jQuery ] ); + } +} ); + +jQuery.ready.then = readyList.then; + +// The ready event handler and self cleanup method +function completed() { + document.removeEventListener( "DOMContentLoaded", completed ); + window.removeEventListener( "load", completed ); + jQuery.ready(); +} + +// Catch cases where $(document).ready() is called +// after the browser event has already occurred. +// Support: IE <=9 - 10 only +// Older IE sometimes signals "interactive" too soon +if ( document.readyState === "complete" || + ( document.readyState !== "loading" && !document.documentElement.doScroll ) ) { + + // Handle it asynchronously to allow scripts the opportunity to delay ready + window.setTimeout( jQuery.ready ); + +} else { + + // Use the handy event callback + document.addEventListener( "DOMContentLoaded", completed ); + + // A fallback to window.onload, that will always work + window.addEventListener( "load", completed ); +} + + + + +// Multifunctional method to get and set values of a collection +// The value/s can optionally be executed if it's a function +var access = function( elems, fn, key, value, chainable, emptyGet, raw ) { + var i = 0, + len = elems.length, + bulk = key == null; + + // Sets many values + if ( jQuery.type( key ) === "object" ) { + chainable = true; + for ( i in key ) { + access( elems, fn, i, key[ i ], true, emptyGet, raw ); + } + + // Sets one value + } else if ( value !== undefined ) { + chainable = true; + + if ( !jQuery.isFunction( value ) ) { + raw = true; + } + + if ( bulk ) { + + // Bulk operations run against the entire set + if ( raw ) { + fn.call( elems, value ); + fn = null; + + // ...except when executing function values + } else { + bulk = fn; + fn = function( elem, key, value ) { + return bulk.call( jQuery( elem ), value ); + }; + } + } + + if ( fn ) { + for ( ; i < len; i++ ) { + fn( + elems[ i ], key, raw ? + value : + value.call( elems[ i ], i, fn( elems[ i ], key ) ) + ); + } + } + } + + if ( chainable ) { + return elems; + } + + // Gets + if ( bulk ) { + return fn.call( elems ); + } + + return len ? fn( elems[ 0 ], key ) : emptyGet; +}; +var acceptData = function( owner ) { + + // Accepts only: + // - Node + // - Node.ELEMENT_NODE + // - Node.DOCUMENT_NODE + // - Object + // - Any + return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType ); +}; + + + + +function Data() { + this.expando = jQuery.expando + Data.uid++; +} + +Data.uid = 1; + +Data.prototype = { + + cache: function( owner ) { + + // Check if the owner object already has a cache + var value = owner[ this.expando ]; + + // If not, create one + if ( !value ) { + value = {}; + + // We can accept data for non-element nodes in modern browsers, + // but we should not, see #8335. + // Always return an empty object. + if ( acceptData( owner ) ) { + + // If it is a node unlikely to be stringify-ed or looped over + // use plain assignment + if ( owner.nodeType ) { + owner[ this.expando ] = value; + + // Otherwise secure it in a non-enumerable property + // configurable must be true to allow the property to be + // deleted when data is removed + } else { + Object.defineProperty( owner, this.expando, { + value: value, + configurable: true + } ); + } + } + } + + return value; + }, + set: function( owner, data, value ) { + var prop, + cache = this.cache( owner ); + + // Handle: [ owner, key, value ] args + // Always use camelCase key (gh-2257) + if ( typeof data === "string" ) { + cache[ jQuery.camelCase( data ) ] = value; + + // Handle: [ owner, { properties } ] args + } else { + + // Copy the properties one-by-one to the cache object + for ( prop in data ) { + cache[ jQuery.camelCase( prop ) ] = data[ prop ]; + } + } + return cache; + }, + get: function( owner, key ) { + return key === undefined ? + this.cache( owner ) : + + // Always use camelCase key (gh-2257) + owner[ this.expando ] && owner[ this.expando ][ jQuery.camelCase( key ) ]; + }, + access: function( owner, key, value ) { + + // In cases where either: + // + // 1. No key was specified + // 2. A string key was specified, but no value provided + // + // Take the "read" path and allow the get method to determine + // which value to return, respectively either: + // + // 1. The entire cache object + // 2. The data stored at the key + // + if ( key === undefined || + ( ( key && typeof key === "string" ) && value === undefined ) ) { + + return this.get( owner, key ); + } + + // When the key is not a string, or both a key and value + // are specified, set or extend (existing objects) with either: + // + // 1. An object of properties + // 2. A key and value + // + this.set( owner, key, value ); + + // Since the "set" path can have two possible entry points + // return the expected data based on which path was taken[*] + return value !== undefined ? value : key; + }, + remove: function( owner, key ) { + var i, + cache = owner[ this.expando ]; + + if ( cache === undefined ) { + return; + } + + if ( key !== undefined ) { + + // Support array or space separated string of keys + if ( Array.isArray( key ) ) { + + // If key is an array of keys... + // We always set camelCase keys, so remove that. + key = key.map( jQuery.camelCase ); + } else { + key = jQuery.camelCase( key ); + + // If a key with the spaces exists, use it. + // Otherwise, create an array by matching non-whitespace + key = key in cache ? + [ key ] : + ( key.match( rnothtmlwhite ) || [] ); + } + + i = key.length; + + while ( i-- ) { + delete cache[ key[ i ] ]; + } + } + + // Remove the expando if there's no more data + if ( key === undefined || jQuery.isEmptyObject( cache ) ) { + + // Support: Chrome <=35 - 45 + // Webkit & Blink performance suffers when deleting properties + // from DOM nodes, so set to undefined instead + // https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted) + if ( owner.nodeType ) { + owner[ this.expando ] = undefined; + } else { + delete owner[ this.expando ]; + } + } + }, + hasData: function( owner ) { + var cache = owner[ this.expando ]; + return cache !== undefined && !jQuery.isEmptyObject( cache ); + } +}; +var dataPriv = new Data(); + +var dataUser = new Data(); + + + +// Implementation Summary +// +// 1. Enforce API surface and semantic compatibility with 1.9.x branch +// 2. Improve the module's maintainability by reducing the storage +// paths to a single mechanism. +// 3. Use the same single mechanism to support "private" and "user" data. +// 4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData) +// 5. Avoid exposing implementation details on user objects (eg. expando properties) +// 6. Provide a clear path for implementation upgrade to WeakMap in 2014 + +var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/, + rmultiDash = /[A-Z]/g; + +function getData( data ) { + if ( data === "true" ) { + return true; + } + + if ( data === "false" ) { + return false; + } + + if ( data === "null" ) { + return null; + } + + // Only convert to a number if it doesn't change the string + if ( data === +data + "" ) { + return +data; + } + + if ( rbrace.test( data ) ) { + return JSON.parse( data ); + } + + return data; +} + +function dataAttr( elem, key, data ) { + var name; + + // If nothing was found internally, try to fetch any + // data from the HTML5 data-* attribute + if ( data === undefined && elem.nodeType === 1 ) { + name = "data-" + key.replace( rmultiDash, "-$&" ).toLowerCase(); + data = elem.getAttribute( name ); + + if ( typeof data === "string" ) { + try { + data = getData( data ); + } catch ( e ) {} + + // Make sure we set the data so it isn't changed later + dataUser.set( elem, key, data ); + } else { + data = undefined; + } + } + return data; +} + +jQuery.extend( { + hasData: function( elem ) { + return dataUser.hasData( elem ) || dataPriv.hasData( elem ); + }, + + data: function( elem, name, data ) { + return dataUser.access( elem, name, data ); + }, + + removeData: function( elem, name ) { + dataUser.remove( elem, name ); + }, + + // TODO: Now that all calls to _data and _removeData have been replaced + // with direct calls to dataPriv methods, these can be deprecated. + _data: function( elem, name, data ) { + return dataPriv.access( elem, name, data ); + }, + + _removeData: function( elem, name ) { + dataPriv.remove( elem, name ); + } +} ); + +jQuery.fn.extend( { + data: function( key, value ) { + var i, name, data, + elem = this[ 0 ], + attrs = elem && elem.attributes; + + // Gets all values + if ( key === undefined ) { + if ( this.length ) { + data = dataUser.get( elem ); + + if ( elem.nodeType === 1 && !dataPriv.get( elem, "hasDataAttrs" ) ) { + i = attrs.length; + while ( i-- ) { + + // Support: IE 11 only + // The attrs elements can be null (#14894) + if ( attrs[ i ] ) { + name = attrs[ i ].name; + if ( name.indexOf( "data-" ) === 0 ) { + name = jQuery.camelCase( name.slice( 5 ) ); + dataAttr( elem, name, data[ name ] ); + } + } + } + dataPriv.set( elem, "hasDataAttrs", true ); + } + } + + return data; + } + + // Sets multiple values + if ( typeof key === "object" ) { + return this.each( function() { + dataUser.set( this, key ); + } ); + } + + return access( this, function( value ) { + var data; + + // The calling jQuery object (element matches) is not empty + // (and therefore has an element appears at this[ 0 ]) and the + // `value` parameter was not undefined. An empty jQuery object + // will result in `undefined` for elem = this[ 0 ] which will + // throw an exception if an attempt to read a data cache is made. + if ( elem && value === undefined ) { + + // Attempt to get data from the cache + // The key will always be camelCased in Data + data = dataUser.get( elem, key ); + if ( data !== undefined ) { + return data; + } + + // Attempt to "discover" the data in + // HTML5 custom data-* attrs + data = dataAttr( elem, key ); + if ( data !== undefined ) { + return data; + } + + // We tried really hard, but the data doesn't exist. + return; + } + + // Set the data... + this.each( function() { + + // We always store the camelCased key + dataUser.set( this, key, value ); + } ); + }, null, value, arguments.length > 1, null, true ); + }, + + removeData: function( key ) { + return this.each( function() { + dataUser.remove( this, key ); + } ); + } +} ); + + +jQuery.extend( { + queue: function( elem, type, data ) { + var queue; + + if ( elem ) { + type = ( type || "fx" ) + "queue"; + queue = dataPriv.get( elem, type ); + + // Speed up dequeue by getting out quickly if this is just a lookup + if ( data ) { + if ( !queue || Array.isArray( data ) ) { + queue = dataPriv.access( elem, type, jQuery.makeArray( data ) ); + } else { + queue.push( data ); + } + } + return queue || []; + } + }, + + dequeue: function( elem, type ) { + type = type || "fx"; + + var queue = jQuery.queue( elem, type ), + startLength = queue.length, + fn = queue.shift(), + hooks = jQuery._queueHooks( elem, type ), + next = function() { + jQuery.dequeue( elem, type ); + }; + + // If the fx queue is dequeued, always remove the progress sentinel + if ( fn === "inprogress" ) { + fn = queue.shift(); + startLength--; + } + + if ( fn ) { + + // Add a progress sentinel to prevent the fx queue from being + // automatically dequeued + if ( type === "fx" ) { + queue.unshift( "inprogress" ); + } + + // Clear up the last queue stop function + delete hooks.stop; + fn.call( elem, next, hooks ); + } + + if ( !startLength && hooks ) { + hooks.empty.fire(); + } + }, + + // Not public - generate a queueHooks object, or return the current one + _queueHooks: function( elem, type ) { + var key = type + "queueHooks"; + return dataPriv.get( elem, key ) || dataPriv.access( elem, key, { + empty: jQuery.Callbacks( "once memory" ).add( function() { + dataPriv.remove( elem, [ type + "queue", key ] ); + } ) + } ); + } +} ); + +jQuery.fn.extend( { + queue: function( type, data ) { + var setter = 2; + + if ( typeof type !== "string" ) { + data = type; + type = "fx"; + setter--; + } + + if ( arguments.length < setter ) { + return jQuery.queue( this[ 0 ], type ); + } + + return data === undefined ? + this : + this.each( function() { + var queue = jQuery.queue( this, type, data ); + + // Ensure a hooks for this queue + jQuery._queueHooks( this, type ); + + if ( type === "fx" && queue[ 0 ] !== "inprogress" ) { + jQuery.dequeue( this, type ); + } + } ); + }, + dequeue: function( type ) { + return this.each( function() { + jQuery.dequeue( this, type ); + } ); + }, + clearQueue: function( type ) { + return this.queue( type || "fx", [] ); + }, + + // Get a promise resolved when queues of a certain type + // are emptied (fx is the type by default) + promise: function( type, obj ) { + var tmp, + count = 1, + defer = jQuery.Deferred(), + elements = this, + i = this.length, + resolve = function() { + if ( !( --count ) ) { + defer.resolveWith( elements, [ elements ] ); + } + }; + + if ( typeof type !== "string" ) { + obj = type; + type = undefined; + } + type = type || "fx"; + + while ( i-- ) { + tmp = dataPriv.get( elements[ i ], type + "queueHooks" ); + if ( tmp && tmp.empty ) { + count++; + tmp.empty.add( resolve ); + } + } + resolve(); + return defer.promise( obj ); + } +} ); +var pnum = ( /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/ ).source; + +var rcssNum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" ); + + +var cssExpand = [ "Top", "Right", "Bottom", "Left" ]; + +var isHiddenWithinTree = function( elem, el ) { + + // isHiddenWithinTree might be called from jQuery#filter function; + // in that case, element will be second argument + elem = el || elem; + + // Inline style trumps all + return elem.style.display === "none" || + elem.style.display === "" && + + // Otherwise, check computed style + // Support: Firefox <=43 - 45 + // Disconnected elements can have computed display: none, so first confirm that elem is + // in the document. + jQuery.contains( elem.ownerDocument, elem ) && + + jQuery.css( elem, "display" ) === "none"; + }; + +var swap = function( elem, options, callback, args ) { + var ret, name, + old = {}; + + // Remember the old values, and insert the new ones + for ( name in options ) { + old[ name ] = elem.style[ name ]; + elem.style[ name ] = options[ name ]; + } + + ret = callback.apply( elem, args || [] ); + + // Revert the old values + for ( name in options ) { + elem.style[ name ] = old[ name ]; + } + + return ret; +}; + + + + +function adjustCSS( elem, prop, valueParts, tween ) { + var adjusted, + scale = 1, + maxIterations = 20, + currentValue = tween ? + function() { + return tween.cur(); + } : + function() { + return jQuery.css( elem, prop, "" ); + }, + initial = currentValue(), + unit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ), + + // Starting value computation is required for potential unit mismatches + initialInUnit = ( jQuery.cssNumber[ prop ] || unit !== "px" && +initial ) && + rcssNum.exec( jQuery.css( elem, prop ) ); + + if ( initialInUnit && initialInUnit[ 3 ] !== unit ) { + + // Trust units reported by jQuery.css + unit = unit || initialInUnit[ 3 ]; + + // Make sure we update the tween properties later on + valueParts = valueParts || []; + + // Iteratively approximate from a nonzero starting point + initialInUnit = +initial || 1; + + do { + + // If previous iteration zeroed out, double until we get *something*. + // Use string for doubling so we don't accidentally see scale as unchanged below + scale = scale || ".5"; + + // Adjust and apply + initialInUnit = initialInUnit / scale; + jQuery.style( elem, prop, initialInUnit + unit ); + + // Update scale, tolerating zero or NaN from tween.cur() + // Break the loop if scale is unchanged or perfect, or if we've just had enough. + } while ( + scale !== ( scale = currentValue() / initial ) && scale !== 1 && --maxIterations + ); + } + + if ( valueParts ) { + initialInUnit = +initialInUnit || +initial || 0; + + // Apply relative offset (+=/-=) if specified + adjusted = valueParts[ 1 ] ? + initialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] : + +valueParts[ 2 ]; + if ( tween ) { + tween.unit = unit; + tween.start = initialInUnit; + tween.end = adjusted; + } + } + return adjusted; +} + + +var defaultDisplayMap = {}; + +function getDefaultDisplay( elem ) { + var temp, + doc = elem.ownerDocument, + nodeName = elem.nodeName, + display = defaultDisplayMap[ nodeName ]; + + if ( display ) { + return display; + } + + temp = doc.body.appendChild( doc.createElement( nodeName ) ); + display = jQuery.css( temp, "display" ); + + temp.parentNode.removeChild( temp ); + + if ( display === "none" ) { + display = "block"; + } + defaultDisplayMap[ nodeName ] = display; + + return display; +} + +function showHide( elements, show ) { + var display, elem, + values = [], + index = 0, + length = elements.length; + + // Determine new display value for elements that need to change + for ( ; index < length; index++ ) { + elem = elements[ index ]; + if ( !elem.style ) { + continue; + } + + display = elem.style.display; + if ( show ) { + + // Since we force visibility upon cascade-hidden elements, an immediate (and slow) + // check is required in this first loop unless we have a nonempty display value (either + // inline or about-to-be-restored) + if ( display === "none" ) { + values[ index ] = dataPriv.get( elem, "display" ) || null; + if ( !values[ index ] ) { + elem.style.display = ""; + } + } + if ( elem.style.display === "" && isHiddenWithinTree( elem ) ) { + values[ index ] = getDefaultDisplay( elem ); + } + } else { + if ( display !== "none" ) { + values[ index ] = "none"; + + // Remember what we're overwriting + dataPriv.set( elem, "display", display ); + } + } + } + + // Set the display of the elements in a second loop to avoid constant reflow + for ( index = 0; index < length; index++ ) { + if ( values[ index ] != null ) { + elements[ index ].style.display = values[ index ]; + } + } + + return elements; +} + +jQuery.fn.extend( { + show: function() { + return showHide( this, true ); + }, + hide: function() { + return showHide( this ); + }, + toggle: function( state ) { + if ( typeof state === "boolean" ) { + return state ? this.show() : this.hide(); + } + + return this.each( function() { + if ( isHiddenWithinTree( this ) ) { + jQuery( this ).show(); + } else { + jQuery( this ).hide(); + } + } ); + } +} ); +var rcheckableType = ( /^(?:checkbox|radio)$/i ); + +var rtagName = ( /<([a-z][^\/\0>\x20\t\r\n\f]+)/i ); + +var rscriptType = ( /^$|\/(?:java|ecma)script/i ); + + + +// We have to close these tags to support XHTML (#13200) +var wrapMap = { + + // Support: IE <=9 only + option: [ 1, "" ], + + // XHTML parsers do not magically insert elements in the + // same way that tag soup parsers do. So we cannot shorten + // this by omitting or other required elements. + thead: [ 1, "", "
    " ], + col: [ 2, "", "
    " ], + tr: [ 2, "", "
    " ], + td: [ 3, "", "
    " ], + + _default: [ 0, "", "" ] +}; + +// Support: IE <=9 only +wrapMap.optgroup = wrapMap.option; + +wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; +wrapMap.th = wrapMap.td; + + +function getAll( context, tag ) { + + // Support: IE <=9 - 11 only + // Use typeof to avoid zero-argument method invocation on host objects (#15151) + var ret; + + if ( typeof context.getElementsByTagName !== "undefined" ) { + ret = context.getElementsByTagName( tag || "*" ); + + } else if ( typeof context.querySelectorAll !== "undefined" ) { + ret = context.querySelectorAll( tag || "*" ); + + } else { + ret = []; + } + + if ( tag === undefined || tag && nodeName( context, tag ) ) { + return jQuery.merge( [ context ], ret ); + } + + return ret; +} + + +// Mark scripts as having already been evaluated +function setGlobalEval( elems, refElements ) { + var i = 0, + l = elems.length; + + for ( ; i < l; i++ ) { + dataPriv.set( + elems[ i ], + "globalEval", + !refElements || dataPriv.get( refElements[ i ], "globalEval" ) + ); + } +} + + +var rhtml = /<|&#?\w+;/; + +function buildFragment( elems, context, scripts, selection, ignored ) { + var elem, tmp, tag, wrap, contains, j, + fragment = context.createDocumentFragment(), + nodes = [], + i = 0, + l = elems.length; + + for ( ; i < l; i++ ) { + elem = elems[ i ]; + + if ( elem || elem === 0 ) { + + // Add nodes directly + if ( jQuery.type( elem ) === "object" ) { + + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem ); + + // Convert non-html into a text node + } else if ( !rhtml.test( elem ) ) { + nodes.push( context.createTextNode( elem ) ); + + // Convert html into DOM nodes + } else { + tmp = tmp || fragment.appendChild( context.createElement( "div" ) ); + + // Deserialize a standard representation + tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase(); + wrap = wrapMap[ tag ] || wrapMap._default; + tmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ]; + + // Descend through wrappers to the right content + j = wrap[ 0 ]; + while ( j-- ) { + tmp = tmp.lastChild; + } + + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + jQuery.merge( nodes, tmp.childNodes ); + + // Remember the top-level container + tmp = fragment.firstChild; + + // Ensure the created nodes are orphaned (#12392) + tmp.textContent = ""; + } + } + } + + // Remove wrapper from fragment + fragment.textContent = ""; + + i = 0; + while ( ( elem = nodes[ i++ ] ) ) { + + // Skip elements already in the context collection (trac-4087) + if ( selection && jQuery.inArray( elem, selection ) > -1 ) { + if ( ignored ) { + ignored.push( elem ); + } + continue; + } + + contains = jQuery.contains( elem.ownerDocument, elem ); + + // Append to fragment + tmp = getAll( fragment.appendChild( elem ), "script" ); + + // Preserve script evaluation history + if ( contains ) { + setGlobalEval( tmp ); + } + + // Capture executables + if ( scripts ) { + j = 0; + while ( ( elem = tmp[ j++ ] ) ) { + if ( rscriptType.test( elem.type || "" ) ) { + scripts.push( elem ); + } + } + } + } + + return fragment; +} + + +( function() { + var fragment = document.createDocumentFragment(), + div = fragment.appendChild( document.createElement( "div" ) ), + input = document.createElement( "input" ); + + // Support: Android 4.0 - 4.3 only + // Check state lost if the name is set (#11217) + // Support: Windows Web Apps (WWA) + // `name` and `type` must use .setAttribute for WWA (#14901) + input.setAttribute( "type", "radio" ); + input.setAttribute( "checked", "checked" ); + input.setAttribute( "name", "t" ); + + div.appendChild( input ); + + // Support: Android <=4.1 only + // Older WebKit doesn't clone checked state correctly in fragments + support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked; + + // Support: IE <=11 only + // Make sure textarea (and checkbox) defaultValue is properly cloned + div.innerHTML = ""; + support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue; +} )(); +var documentElement = document.documentElement; + + + +var + rkeyEvent = /^key/, + rmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/, + rtypenamespace = /^([^.]*)(?:\.(.+)|)/; + +function returnTrue() { + return true; +} + +function returnFalse() { + return false; +} + +// Support: IE <=9 only +// See #13393 for more info +function safeActiveElement() { + try { + return document.activeElement; + } catch ( err ) { } +} + +function on( elem, types, selector, data, fn, one ) { + var origFn, type; + + // Types can be a map of types/handlers + if ( typeof types === "object" ) { + + // ( types-Object, selector, data ) + if ( typeof selector !== "string" ) { + + // ( types-Object, data ) + data = data || selector; + selector = undefined; + } + for ( type in types ) { + on( elem, type, selector, data, types[ type ], one ); + } + return elem; + } + + if ( data == null && fn == null ) { + + // ( types, fn ) + fn = selector; + data = selector = undefined; + } else if ( fn == null ) { + if ( typeof selector === "string" ) { + + // ( types, selector, fn ) + fn = data; + data = undefined; + } else { + + // ( types, data, fn ) + fn = data; + data = selector; + selector = undefined; + } + } + if ( fn === false ) { + fn = returnFalse; + } else if ( !fn ) { + return elem; + } + + if ( one === 1 ) { + origFn = fn; + fn = function( event ) { + + // Can use an empty set, since event contains the info + jQuery().off( event ); + return origFn.apply( this, arguments ); + }; + + // Use same guid so caller can remove using origFn + fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); + } + return elem.each( function() { + jQuery.event.add( this, types, fn, data, selector ); + } ); +} + +/* + * Helper functions for managing events -- not part of the public interface. + * Props to Dean Edwards' addEvent library for many of the ideas. + */ +jQuery.event = { + + global: {}, + + add: function( elem, types, handler, data, selector ) { + + var handleObjIn, eventHandle, tmp, + events, t, handleObj, + special, handlers, type, namespaces, origType, + elemData = dataPriv.get( elem ); + + // Don't attach events to noData or text/comment nodes (but allow plain objects) + if ( !elemData ) { + return; + } + + // Caller can pass in an object of custom data in lieu of the handler + if ( handler.handler ) { + handleObjIn = handler; + handler = handleObjIn.handler; + selector = handleObjIn.selector; + } + + // Ensure that invalid selectors throw exceptions at attach time + // Evaluate against documentElement in case elem is a non-element node (e.g., document) + if ( selector ) { + jQuery.find.matchesSelector( documentElement, selector ); + } + + // Make sure that the handler has a unique ID, used to find/remove it later + if ( !handler.guid ) { + handler.guid = jQuery.guid++; + } + + // Init the element's event structure and main handler, if this is the first + if ( !( events = elemData.events ) ) { + events = elemData.events = {}; + } + if ( !( eventHandle = elemData.handle ) ) { + eventHandle = elemData.handle = function( e ) { + + // Discard the second event of a jQuery.event.trigger() and + // when an event is called after a page has unloaded + return typeof jQuery !== "undefined" && jQuery.event.triggered !== e.type ? + jQuery.event.dispatch.apply( elem, arguments ) : undefined; + }; + } + + // Handle multiple events separated by a space + types = ( types || "" ).match( rnothtmlwhite ) || [ "" ]; + t = types.length; + while ( t-- ) { + tmp = rtypenamespace.exec( types[ t ] ) || []; + type = origType = tmp[ 1 ]; + namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); + + // There *must* be a type, no attaching namespace-only handlers + if ( !type ) { + continue; + } + + // If event changes its type, use the special event handlers for the changed type + special = jQuery.event.special[ type ] || {}; + + // If selector defined, determine special event api type, otherwise given type + type = ( selector ? special.delegateType : special.bindType ) || type; + + // Update special based on newly reset type + special = jQuery.event.special[ type ] || {}; + + // handleObj is passed to all event handlers + handleObj = jQuery.extend( { + type: type, + origType: origType, + data: data, + handler: handler, + guid: handler.guid, + selector: selector, + needsContext: selector && jQuery.expr.match.needsContext.test( selector ), + namespace: namespaces.join( "." ) + }, handleObjIn ); + + // Init the event handler queue if we're the first + if ( !( handlers = events[ type ] ) ) { + handlers = events[ type ] = []; + handlers.delegateCount = 0; + + // Only use addEventListener if the special events handler returns false + if ( !special.setup || + special.setup.call( elem, data, namespaces, eventHandle ) === false ) { + + if ( elem.addEventListener ) { + elem.addEventListener( type, eventHandle ); + } + } + } + + if ( special.add ) { + special.add.call( elem, handleObj ); + + if ( !handleObj.handler.guid ) { + handleObj.handler.guid = handler.guid; + } + } + + // Add to the element's handler list, delegates in front + if ( selector ) { + handlers.splice( handlers.delegateCount++, 0, handleObj ); + } else { + handlers.push( handleObj ); + } + + // Keep track of which events have ever been used, for event optimization + jQuery.event.global[ type ] = true; + } + + }, + + // Detach an event or set of events from an element + remove: function( elem, types, handler, selector, mappedTypes ) { + + var j, origCount, tmp, + events, t, handleObj, + special, handlers, type, namespaces, origType, + elemData = dataPriv.hasData( elem ) && dataPriv.get( elem ); + + if ( !elemData || !( events = elemData.events ) ) { + return; + } + + // Once for each type.namespace in types; type may be omitted + types = ( types || "" ).match( rnothtmlwhite ) || [ "" ]; + t = types.length; + while ( t-- ) { + tmp = rtypenamespace.exec( types[ t ] ) || []; + type = origType = tmp[ 1 ]; + namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); + + // Unbind all events (on this namespace, if provided) for the element + if ( !type ) { + for ( type in events ) { + jQuery.event.remove( elem, type + types[ t ], handler, selector, true ); + } + continue; + } + + special = jQuery.event.special[ type ] || {}; + type = ( selector ? special.delegateType : special.bindType ) || type; + handlers = events[ type ] || []; + tmp = tmp[ 2 ] && + new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ); + + // Remove matching events + origCount = j = handlers.length; + while ( j-- ) { + handleObj = handlers[ j ]; + + if ( ( mappedTypes || origType === handleObj.origType ) && + ( !handler || handler.guid === handleObj.guid ) && + ( !tmp || tmp.test( handleObj.namespace ) ) && + ( !selector || selector === handleObj.selector || + selector === "**" && handleObj.selector ) ) { + handlers.splice( j, 1 ); + + if ( handleObj.selector ) { + handlers.delegateCount--; + } + if ( special.remove ) { + special.remove.call( elem, handleObj ); + } + } + } + + // Remove generic event handler if we removed something and no more handlers exist + // (avoids potential for endless recursion during removal of special event handlers) + if ( origCount && !handlers.length ) { + if ( !special.teardown || + special.teardown.call( elem, namespaces, elemData.handle ) === false ) { + + jQuery.removeEvent( elem, type, elemData.handle ); + } + + delete events[ type ]; + } + } + + // Remove data and the expando if it's no longer used + if ( jQuery.isEmptyObject( events ) ) { + dataPriv.remove( elem, "handle events" ); + } + }, + + dispatch: function( nativeEvent ) { + + // Make a writable jQuery.Event from the native event object + var event = jQuery.event.fix( nativeEvent ); + + var i, j, ret, matched, handleObj, handlerQueue, + args = new Array( arguments.length ), + handlers = ( dataPriv.get( this, "events" ) || {} )[ event.type ] || [], + special = jQuery.event.special[ event.type ] || {}; + + // Use the fix-ed jQuery.Event rather than the (read-only) native event + args[ 0 ] = event; + + for ( i = 1; i < arguments.length; i++ ) { + args[ i ] = arguments[ i ]; + } + + event.delegateTarget = this; + + // Call the preDispatch hook for the mapped type, and let it bail if desired + if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) { + return; + } + + // Determine handlers + handlerQueue = jQuery.event.handlers.call( this, event, handlers ); + + // Run delegates first; they may want to stop propagation beneath us + i = 0; + while ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) { + event.currentTarget = matched.elem; + + j = 0; + while ( ( handleObj = matched.handlers[ j++ ] ) && + !event.isImmediatePropagationStopped() ) { + + // Triggered event must either 1) have no namespace, or 2) have namespace(s) + // a subset or equal to those in the bound event (both can have no namespace). + if ( !event.rnamespace || event.rnamespace.test( handleObj.namespace ) ) { + + event.handleObj = handleObj; + event.data = handleObj.data; + + ret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle || + handleObj.handler ).apply( matched.elem, args ); + + if ( ret !== undefined ) { + if ( ( event.result = ret ) === false ) { + event.preventDefault(); + event.stopPropagation(); + } + } + } + } + } + + // Call the postDispatch hook for the mapped type + if ( special.postDispatch ) { + special.postDispatch.call( this, event ); + } + + return event.result; + }, + + handlers: function( event, handlers ) { + var i, handleObj, sel, matchedHandlers, matchedSelectors, + handlerQueue = [], + delegateCount = handlers.delegateCount, + cur = event.target; + + // Find delegate handlers + if ( delegateCount && + + // Support: IE <=9 + // Black-hole SVG instance trees (trac-13180) + cur.nodeType && + + // Support: Firefox <=42 + // Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861) + // https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click + // Support: IE 11 only + // ...but not arrow key "clicks" of radio inputs, which can have `button` -1 (gh-2343) + !( event.type === "click" && event.button >= 1 ) ) { + + for ( ; cur !== this; cur = cur.parentNode || this ) { + + // Don't check non-elements (#13208) + // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764) + if ( cur.nodeType === 1 && !( event.type === "click" && cur.disabled === true ) ) { + matchedHandlers = []; + matchedSelectors = {}; + for ( i = 0; i < delegateCount; i++ ) { + handleObj = handlers[ i ]; + + // Don't conflict with Object.prototype properties (#13203) + sel = handleObj.selector + " "; + + if ( matchedSelectors[ sel ] === undefined ) { + matchedSelectors[ sel ] = handleObj.needsContext ? + jQuery( sel, this ).index( cur ) > -1 : + jQuery.find( sel, this, null, [ cur ] ).length; + } + if ( matchedSelectors[ sel ] ) { + matchedHandlers.push( handleObj ); + } + } + if ( matchedHandlers.length ) { + handlerQueue.push( { elem: cur, handlers: matchedHandlers } ); + } + } + } + } + + // Add the remaining (directly-bound) handlers + cur = this; + if ( delegateCount < handlers.length ) { + handlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } ); + } + + return handlerQueue; + }, + + addProp: function( name, hook ) { + Object.defineProperty( jQuery.Event.prototype, name, { + enumerable: true, + configurable: true, + + get: jQuery.isFunction( hook ) ? + function() { + if ( this.originalEvent ) { + return hook( this.originalEvent ); + } + } : + function() { + if ( this.originalEvent ) { + return this.originalEvent[ name ]; + } + }, + + set: function( value ) { + Object.defineProperty( this, name, { + enumerable: true, + configurable: true, + writable: true, + value: value + } ); + } + } ); + }, + + fix: function( originalEvent ) { + return originalEvent[ jQuery.expando ] ? + originalEvent : + new jQuery.Event( originalEvent ); + }, + + special: { + load: { + + // Prevent triggered image.load events from bubbling to window.load + noBubble: true + }, + focus: { + + // Fire native event if possible so blur/focus sequence is correct + trigger: function() { + if ( this !== safeActiveElement() && this.focus ) { + this.focus(); + return false; + } + }, + delegateType: "focusin" + }, + blur: { + trigger: function() { + if ( this === safeActiveElement() && this.blur ) { + this.blur(); + return false; + } + }, + delegateType: "focusout" + }, + click: { + + // For checkbox, fire native event so checked state will be right + trigger: function() { + if ( this.type === "checkbox" && this.click && nodeName( this, "input" ) ) { + this.click(); + return false; + } + }, + + // For cross-browser consistency, don't fire native .click() on links + _default: function( event ) { + return nodeName( event.target, "a" ); + } + }, + + beforeunload: { + postDispatch: function( event ) { + + // Support: Firefox 20+ + // Firefox doesn't alert if the returnValue field is not set. + if ( event.result !== undefined && event.originalEvent ) { + event.originalEvent.returnValue = event.result; + } + } + } + } +}; + +jQuery.removeEvent = function( elem, type, handle ) { + + // This "if" is needed for plain objects + if ( elem.removeEventListener ) { + elem.removeEventListener( type, handle ); + } +}; + +jQuery.Event = function( src, props ) { + + // Allow instantiation without the 'new' keyword + if ( !( this instanceof jQuery.Event ) ) { + return new jQuery.Event( src, props ); + } + + // Event object + if ( src && src.type ) { + this.originalEvent = src; + this.type = src.type; + + // Events bubbling up the document may have been marked as prevented + // by a handler lower down the tree; reflect the correct value. + this.isDefaultPrevented = src.defaultPrevented || + src.defaultPrevented === undefined && + + // Support: Android <=2.3 only + src.returnValue === false ? + returnTrue : + returnFalse; + + // Create target properties + // Support: Safari <=6 - 7 only + // Target should not be a text node (#504, #13143) + this.target = ( src.target && src.target.nodeType === 3 ) ? + src.target.parentNode : + src.target; + + this.currentTarget = src.currentTarget; + this.relatedTarget = src.relatedTarget; + + // Event type + } else { + this.type = src; + } + + // Put explicitly provided properties onto the event object + if ( props ) { + jQuery.extend( this, props ); + } + + // Create a timestamp if incoming event doesn't have one + this.timeStamp = src && src.timeStamp || jQuery.now(); + + // Mark it as fixed + this[ jQuery.expando ] = true; +}; + +// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding +// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html +jQuery.Event.prototype = { + constructor: jQuery.Event, + isDefaultPrevented: returnFalse, + isPropagationStopped: returnFalse, + isImmediatePropagationStopped: returnFalse, + isSimulated: false, + + preventDefault: function() { + var e = this.originalEvent; + + this.isDefaultPrevented = returnTrue; + + if ( e && !this.isSimulated ) { + e.preventDefault(); + } + }, + stopPropagation: function() { + var e = this.originalEvent; + + this.isPropagationStopped = returnTrue; + + if ( e && !this.isSimulated ) { + e.stopPropagation(); + } + }, + stopImmediatePropagation: function() { + var e = this.originalEvent; + + this.isImmediatePropagationStopped = returnTrue; + + if ( e && !this.isSimulated ) { + e.stopImmediatePropagation(); + } + + this.stopPropagation(); + } +}; + +// Includes all common event props including KeyEvent and MouseEvent specific props +jQuery.each( { + altKey: true, + bubbles: true, + cancelable: true, + changedTouches: true, + ctrlKey: true, + detail: true, + eventPhase: true, + metaKey: true, + pageX: true, + pageY: true, + shiftKey: true, + view: true, + "char": true, + charCode: true, + key: true, + keyCode: true, + button: true, + buttons: true, + clientX: true, + clientY: true, + offsetX: true, + offsetY: true, + pointerId: true, + pointerType: true, + screenX: true, + screenY: true, + targetTouches: true, + toElement: true, + touches: true, + + which: function( event ) { + var button = event.button; + + // Add which for key events + if ( event.which == null && rkeyEvent.test( event.type ) ) { + return event.charCode != null ? event.charCode : event.keyCode; + } + + // Add which for click: 1 === left; 2 === middle; 3 === right + if ( !event.which && button !== undefined && rmouseEvent.test( event.type ) ) { + if ( button & 1 ) { + return 1; + } + + if ( button & 2 ) { + return 3; + } + + if ( button & 4 ) { + return 2; + } + + return 0; + } + + return event.which; + } +}, jQuery.event.addProp ); + +// Create mouseenter/leave events using mouseover/out and event-time checks +// so that event delegation works in jQuery. +// Do the same for pointerenter/pointerleave and pointerover/pointerout +// +// Support: Safari 7 only +// Safari sends mouseenter too often; see: +// https://bugs.chromium.org/p/chromium/issues/detail?id=470258 +// for the description of the bug (it existed in older Chrome versions as well). +jQuery.each( { + mouseenter: "mouseover", + mouseleave: "mouseout", + pointerenter: "pointerover", + pointerleave: "pointerout" +}, function( orig, fix ) { + jQuery.event.special[ orig ] = { + delegateType: fix, + bindType: fix, + + handle: function( event ) { + var ret, + target = this, + related = event.relatedTarget, + handleObj = event.handleObj; + + // For mouseenter/leave call the handler if related is outside the target. + // NB: No relatedTarget if the mouse left/entered the browser window + if ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) { + event.type = handleObj.origType; + ret = handleObj.handler.apply( this, arguments ); + event.type = fix; + } + return ret; + } + }; +} ); + +jQuery.fn.extend( { + + on: function( types, selector, data, fn ) { + return on( this, types, selector, data, fn ); + }, + one: function( types, selector, data, fn ) { + return on( this, types, selector, data, fn, 1 ); + }, + off: function( types, selector, fn ) { + var handleObj, type; + if ( types && types.preventDefault && types.handleObj ) { + + // ( event ) dispatched jQuery.Event + handleObj = types.handleObj; + jQuery( types.delegateTarget ).off( + handleObj.namespace ? + handleObj.origType + "." + handleObj.namespace : + handleObj.origType, + handleObj.selector, + handleObj.handler + ); + return this; + } + if ( typeof types === "object" ) { + + // ( types-object [, selector] ) + for ( type in types ) { + this.off( type, selector, types[ type ] ); + } + return this; + } + if ( selector === false || typeof selector === "function" ) { + + // ( types [, fn] ) + fn = selector; + selector = undefined; + } + if ( fn === false ) { + fn = returnFalse; + } + return this.each( function() { + jQuery.event.remove( this, types, fn, selector ); + } ); + } +} ); + + +var + + /* eslint-disable max-len */ + + // See https://github.com/eslint/eslint/issues/3229 + rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi, + + /* eslint-enable */ + + // Support: IE <=10 - 11, Edge 12 - 13 + // In IE/Edge using regex groups here causes severe slowdowns. + // See https://connect.microsoft.com/IE/feedback/details/1736512/ + rnoInnerhtml = /\s*$/g; + +// Prefer a tbody over its parent table for containing new rows +function manipulationTarget( elem, content ) { + if ( nodeName( elem, "table" ) && + nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ) { + + return jQuery( ">tbody", elem )[ 0 ] || elem; + } + + return elem; +} + +// Replace/restore the type attribute of script elements for safe DOM manipulation +function disableScript( elem ) { + elem.type = ( elem.getAttribute( "type" ) !== null ) + "/" + elem.type; + return elem; +} +function restoreScript( elem ) { + var match = rscriptTypeMasked.exec( elem.type ); + + if ( match ) { + elem.type = match[ 1 ]; + } else { + elem.removeAttribute( "type" ); + } + + return elem; +} + +function cloneCopyEvent( src, dest ) { + var i, l, type, pdataOld, pdataCur, udataOld, udataCur, events; + + if ( dest.nodeType !== 1 ) { + return; + } + + // 1. Copy private data: events, handlers, etc. + if ( dataPriv.hasData( src ) ) { + pdataOld = dataPriv.access( src ); + pdataCur = dataPriv.set( dest, pdataOld ); + events = pdataOld.events; + + if ( events ) { + delete pdataCur.handle; + pdataCur.events = {}; + + for ( type in events ) { + for ( i = 0, l = events[ type ].length; i < l; i++ ) { + jQuery.event.add( dest, type, events[ type ][ i ] ); + } + } + } + } + + // 2. Copy user data + if ( dataUser.hasData( src ) ) { + udataOld = dataUser.access( src ); + udataCur = jQuery.extend( {}, udataOld ); + + dataUser.set( dest, udataCur ); + } +} + +// Fix IE bugs, see support tests +function fixInput( src, dest ) { + var nodeName = dest.nodeName.toLowerCase(); + + // Fails to persist the checked state of a cloned checkbox or radio button. + if ( nodeName === "input" && rcheckableType.test( src.type ) ) { + dest.checked = src.checked; + + // Fails to return the selected option to the default selected state when cloning options + } else if ( nodeName === "input" || nodeName === "textarea" ) { + dest.defaultValue = src.defaultValue; + } +} + +function domManip( collection, args, callback, ignored ) { + + // Flatten any nested arrays + args = concat.apply( [], args ); + + var fragment, first, scripts, hasScripts, node, doc, + i = 0, + l = collection.length, + iNoClone = l - 1, + value = args[ 0 ], + isFunction = jQuery.isFunction( value ); + + // We can't cloneNode fragments that contain checked, in WebKit + if ( isFunction || + ( l > 1 && typeof value === "string" && + !support.checkClone && rchecked.test( value ) ) ) { + return collection.each( function( index ) { + var self = collection.eq( index ); + if ( isFunction ) { + args[ 0 ] = value.call( this, index, self.html() ); + } + domManip( self, args, callback, ignored ); + } ); + } + + if ( l ) { + fragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored ); + first = fragment.firstChild; + + if ( fragment.childNodes.length === 1 ) { + fragment = first; + } + + // Require either new content or an interest in ignored elements to invoke the callback + if ( first || ignored ) { + scripts = jQuery.map( getAll( fragment, "script" ), disableScript ); + hasScripts = scripts.length; + + // Use the original fragment for the last item + // instead of the first because it can end up + // being emptied incorrectly in certain situations (#8070). + for ( ; i < l; i++ ) { + node = fragment; + + if ( i !== iNoClone ) { + node = jQuery.clone( node, true, true ); + + // Keep references to cloned scripts for later restoration + if ( hasScripts ) { + + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + jQuery.merge( scripts, getAll( node, "script" ) ); + } + } + + callback.call( collection[ i ], node, i ); + } + + if ( hasScripts ) { + doc = scripts[ scripts.length - 1 ].ownerDocument; + + // Reenable scripts + jQuery.map( scripts, restoreScript ); + + // Evaluate executable scripts on first document insertion + for ( i = 0; i < hasScripts; i++ ) { + node = scripts[ i ]; + if ( rscriptType.test( node.type || "" ) && + !dataPriv.access( node, "globalEval" ) && + jQuery.contains( doc, node ) ) { + + if ( node.src ) { + + // Optional AJAX dependency, but won't run scripts if not present + if ( jQuery._evalUrl ) { + jQuery._evalUrl( node.src ); + } + } else { + DOMEval( node.textContent.replace( rcleanScript, "" ), doc ); + } + } + } + } + } + } + + return collection; +} + +function remove( elem, selector, keepData ) { + var node, + nodes = selector ? jQuery.filter( selector, elem ) : elem, + i = 0; + + for ( ; ( node = nodes[ i ] ) != null; i++ ) { + if ( !keepData && node.nodeType === 1 ) { + jQuery.cleanData( getAll( node ) ); + } + + if ( node.parentNode ) { + if ( keepData && jQuery.contains( node.ownerDocument, node ) ) { + setGlobalEval( getAll( node, "script" ) ); + } + node.parentNode.removeChild( node ); + } + } + + return elem; +} + +jQuery.extend( { + htmlPrefilter: function( html ) { + return html.replace( rxhtmlTag, "<$1>" ); + }, + + clone: function( elem, dataAndEvents, deepDataAndEvents ) { + var i, l, srcElements, destElements, + clone = elem.cloneNode( true ), + inPage = jQuery.contains( elem.ownerDocument, elem ); + + // Fix IE cloning issues + if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) && + !jQuery.isXMLDoc( elem ) ) { + + // We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2 + destElements = getAll( clone ); + srcElements = getAll( elem ); + + for ( i = 0, l = srcElements.length; i < l; i++ ) { + fixInput( srcElements[ i ], destElements[ i ] ); + } + } + + // Copy the events from the original to the clone + if ( dataAndEvents ) { + if ( deepDataAndEvents ) { + srcElements = srcElements || getAll( elem ); + destElements = destElements || getAll( clone ); + + for ( i = 0, l = srcElements.length; i < l; i++ ) { + cloneCopyEvent( srcElements[ i ], destElements[ i ] ); + } + } else { + cloneCopyEvent( elem, clone ); + } + } + + // Preserve script evaluation history + destElements = getAll( clone, "script" ); + if ( destElements.length > 0 ) { + setGlobalEval( destElements, !inPage && getAll( elem, "script" ) ); + } + + // Return the cloned set + return clone; + }, + + cleanData: function( elems ) { + var data, elem, type, + special = jQuery.event.special, + i = 0; + + for ( ; ( elem = elems[ i ] ) !== undefined; i++ ) { + if ( acceptData( elem ) ) { + if ( ( data = elem[ dataPriv.expando ] ) ) { + if ( data.events ) { + for ( type in data.events ) { + if ( special[ type ] ) { + jQuery.event.remove( elem, type ); + + // This is a shortcut to avoid jQuery.event.remove's overhead + } else { + jQuery.removeEvent( elem, type, data.handle ); + } + } + } + + // Support: Chrome <=35 - 45+ + // Assign undefined instead of using delete, see Data#remove + elem[ dataPriv.expando ] = undefined; + } + if ( elem[ dataUser.expando ] ) { + + // Support: Chrome <=35 - 45+ + // Assign undefined instead of using delete, see Data#remove + elem[ dataUser.expando ] = undefined; + } + } + } + } +} ); + +jQuery.fn.extend( { + detach: function( selector ) { + return remove( this, selector, true ); + }, + + remove: function( selector ) { + return remove( this, selector ); + }, + + text: function( value ) { + return access( this, function( value ) { + return value === undefined ? + jQuery.text( this ) : + this.empty().each( function() { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + this.textContent = value; + } + } ); + }, null, value, arguments.length ); + }, + + append: function() { + return domManip( this, arguments, function( elem ) { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + var target = manipulationTarget( this, elem ); + target.appendChild( elem ); + } + } ); + }, + + prepend: function() { + return domManip( this, arguments, function( elem ) { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + var target = manipulationTarget( this, elem ); + target.insertBefore( elem, target.firstChild ); + } + } ); + }, + + before: function() { + return domManip( this, arguments, function( elem ) { + if ( this.parentNode ) { + this.parentNode.insertBefore( elem, this ); + } + } ); + }, + + after: function() { + return domManip( this, arguments, function( elem ) { + if ( this.parentNode ) { + this.parentNode.insertBefore( elem, this.nextSibling ); + } + } ); + }, + + empty: function() { + var elem, + i = 0; + + for ( ; ( elem = this[ i ] ) != null; i++ ) { + if ( elem.nodeType === 1 ) { + + // Prevent memory leaks + jQuery.cleanData( getAll( elem, false ) ); + + // Remove any remaining nodes + elem.textContent = ""; + } + } + + return this; + }, + + clone: function( dataAndEvents, deepDataAndEvents ) { + dataAndEvents = dataAndEvents == null ? false : dataAndEvents; + deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; + + return this.map( function() { + return jQuery.clone( this, dataAndEvents, deepDataAndEvents ); + } ); + }, + + html: function( value ) { + return access( this, function( value ) { + var elem = this[ 0 ] || {}, + i = 0, + l = this.length; + + if ( value === undefined && elem.nodeType === 1 ) { + return elem.innerHTML; + } + + // See if we can take a shortcut and just use innerHTML + if ( typeof value === "string" && !rnoInnerhtml.test( value ) && + !wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) { + + value = jQuery.htmlPrefilter( value ); + + try { + for ( ; i < l; i++ ) { + elem = this[ i ] || {}; + + // Remove element nodes and prevent memory leaks + if ( elem.nodeType === 1 ) { + jQuery.cleanData( getAll( elem, false ) ); + elem.innerHTML = value; + } + } + + elem = 0; + + // If using innerHTML throws an exception, use the fallback method + } catch ( e ) {} + } + + if ( elem ) { + this.empty().append( value ); + } + }, null, value, arguments.length ); + }, + + replaceWith: function() { + var ignored = []; + + // Make the changes, replacing each non-ignored context element with the new content + return domManip( this, arguments, function( elem ) { + var parent = this.parentNode; + + if ( jQuery.inArray( this, ignored ) < 0 ) { + jQuery.cleanData( getAll( this ) ); + if ( parent ) { + parent.replaceChild( elem, this ); + } + } + + // Force callback invocation + }, ignored ); + } +} ); + +jQuery.each( { + appendTo: "append", + prependTo: "prepend", + insertBefore: "before", + insertAfter: "after", + replaceAll: "replaceWith" +}, function( name, original ) { + jQuery.fn[ name ] = function( selector ) { + var elems, + ret = [], + insert = jQuery( selector ), + last = insert.length - 1, + i = 0; + + for ( ; i <= last; i++ ) { + elems = i === last ? this : this.clone( true ); + jQuery( insert[ i ] )[ original ]( elems ); + + // Support: Android <=4.0 only, PhantomJS 1 only + // .get() because push.apply(_, arraylike) throws on ancient WebKit + push.apply( ret, elems.get() ); + } + + return this.pushStack( ret ); + }; +} ); +var rmargin = ( /^margin/ ); + +var rnumnonpx = new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" ); + +var getStyles = function( elem ) { + + // Support: IE <=11 only, Firefox <=30 (#15098, #14150) + // IE throws on elements created in popups + // FF meanwhile throws on frame elements through "defaultView.getComputedStyle" + var view = elem.ownerDocument.defaultView; + + if ( !view || !view.opener ) { + view = window; + } + + return view.getComputedStyle( elem ); + }; + + + +( function() { + + // Executing both pixelPosition & boxSizingReliable tests require only one layout + // so they're executed at the same time to save the second computation. + function computeStyleTests() { + + // This is a singleton, we need to execute it only once + if ( !div ) { + return; + } + + div.style.cssText = + "box-sizing:border-box;" + + "position:relative;display:block;" + + "margin:auto;border:1px;padding:1px;" + + "top:1%;width:50%"; + div.innerHTML = ""; + documentElement.appendChild( container ); + + var divStyle = window.getComputedStyle( div ); + pixelPositionVal = divStyle.top !== "1%"; + + // Support: Android 4.0 - 4.3 only, Firefox <=3 - 44 + reliableMarginLeftVal = divStyle.marginLeft === "2px"; + boxSizingReliableVal = divStyle.width === "4px"; + + // Support: Android 4.0 - 4.3 only + // Some styles come back with percentage values, even though they shouldn't + div.style.marginRight = "50%"; + pixelMarginRightVal = divStyle.marginRight === "4px"; + + documentElement.removeChild( container ); + + // Nullify the div so it wouldn't be stored in the memory and + // it will also be a sign that checks already performed + div = null; + } + + var pixelPositionVal, boxSizingReliableVal, pixelMarginRightVal, reliableMarginLeftVal, + container = document.createElement( "div" ), + div = document.createElement( "div" ); + + // Finish early in limited (non-browser) environments + if ( !div.style ) { + return; + } + + // Support: IE <=9 - 11 only + // Style of cloned element affects source element cloned (#8908) + div.style.backgroundClip = "content-box"; + div.cloneNode( true ).style.backgroundClip = ""; + support.clearCloneStyle = div.style.backgroundClip === "content-box"; + + container.style.cssText = "border:0;width:8px;height:0;top:0;left:-9999px;" + + "padding:0;margin-top:1px;position:absolute"; + container.appendChild( div ); + + jQuery.extend( support, { + pixelPosition: function() { + computeStyleTests(); + return pixelPositionVal; + }, + boxSizingReliable: function() { + computeStyleTests(); + return boxSizingReliableVal; + }, + pixelMarginRight: function() { + computeStyleTests(); + return pixelMarginRightVal; + }, + reliableMarginLeft: function() { + computeStyleTests(); + return reliableMarginLeftVal; + } + } ); +} )(); + + +function curCSS( elem, name, computed ) { + var width, minWidth, maxWidth, ret, + + // Support: Firefox 51+ + // Retrieving style before computed somehow + // fixes an issue with getting wrong values + // on detached elements + style = elem.style; + + computed = computed || getStyles( elem ); + + // getPropertyValue is needed for: + // .css('filter') (IE 9 only, #12537) + // .css('--customProperty) (#3144) + if ( computed ) { + ret = computed.getPropertyValue( name ) || computed[ name ]; + + if ( ret === "" && !jQuery.contains( elem.ownerDocument, elem ) ) { + ret = jQuery.style( elem, name ); + } + + // A tribute to the "awesome hack by Dean Edwards" + // Android Browser returns percentage for some values, + // but width seems to be reliably pixels. + // This is against the CSSOM draft spec: + // https://drafts.csswg.org/cssom/#resolved-values + if ( !support.pixelMarginRight() && rnumnonpx.test( ret ) && rmargin.test( name ) ) { + + // Remember the original values + width = style.width; + minWidth = style.minWidth; + maxWidth = style.maxWidth; + + // Put in the new values to get a computed value out + style.minWidth = style.maxWidth = style.width = ret; + ret = computed.width; + + // Revert the changed values + style.width = width; + style.minWidth = minWidth; + style.maxWidth = maxWidth; + } + } + + return ret !== undefined ? + + // Support: IE <=9 - 11 only + // IE returns zIndex value as an integer. + ret + "" : + ret; +} + + +function addGetHookIf( conditionFn, hookFn ) { + + // Define the hook, we'll check on the first run if it's really needed. + return { + get: function() { + if ( conditionFn() ) { + + // Hook not needed (or it's not possible to use it due + // to missing dependency), remove it. + delete this.get; + return; + } + + // Hook needed; redefine it so that the support test is not executed again. + return ( this.get = hookFn ).apply( this, arguments ); + } + }; +} + + +var + + // Swappable if display is none or starts with table + // except "table", "table-cell", or "table-caption" + // See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display + rdisplayswap = /^(none|table(?!-c[ea]).+)/, + rcustomProp = /^--/, + cssShow = { position: "absolute", visibility: "hidden", display: "block" }, + cssNormalTransform = { + letterSpacing: "0", + fontWeight: "400" + }, + + cssPrefixes = [ "Webkit", "Moz", "ms" ], + emptyStyle = document.createElement( "div" ).style; + +// Return a css property mapped to a potentially vendor prefixed property +function vendorPropName( name ) { + + // Shortcut for names that are not vendor prefixed + if ( name in emptyStyle ) { + return name; + } + + // Check for vendor prefixed names + var capName = name[ 0 ].toUpperCase() + name.slice( 1 ), + i = cssPrefixes.length; + + while ( i-- ) { + name = cssPrefixes[ i ] + capName; + if ( name in emptyStyle ) { + return name; + } + } +} + +// Return a property mapped along what jQuery.cssProps suggests or to +// a vendor prefixed property. +function finalPropName( name ) { + var ret = jQuery.cssProps[ name ]; + if ( !ret ) { + ret = jQuery.cssProps[ name ] = vendorPropName( name ) || name; + } + return ret; +} + +function setPositiveNumber( elem, value, subtract ) { + + // Any relative (+/-) values have already been + // normalized at this point + var matches = rcssNum.exec( value ); + return matches ? + + // Guard against undefined "subtract", e.g., when used as in cssHooks + Math.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || "px" ) : + value; +} + +function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) { + var i, + val = 0; + + // If we already have the right measurement, avoid augmentation + if ( extra === ( isBorderBox ? "border" : "content" ) ) { + i = 4; + + // Otherwise initialize for horizontal or vertical properties + } else { + i = name === "width" ? 1 : 0; + } + + for ( ; i < 4; i += 2 ) { + + // Both box models exclude margin, so add it if we want it + if ( extra === "margin" ) { + val += jQuery.css( elem, extra + cssExpand[ i ], true, styles ); + } + + if ( isBorderBox ) { + + // border-box includes padding, so remove it if we want content + if ( extra === "content" ) { + val -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); + } + + // At this point, extra isn't border nor margin, so remove border + if ( extra !== "margin" ) { + val -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); + } + } else { + + // At this point, extra isn't content, so add padding + val += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); + + // At this point, extra isn't content nor padding, so add border + if ( extra !== "padding" ) { + val += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); + } + } + } + + return val; +} + +function getWidthOrHeight( elem, name, extra ) { + + // Start with computed style + var valueIsBorderBox, + styles = getStyles( elem ), + val = curCSS( elem, name, styles ), + isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box"; + + // Computed unit is not pixels. Stop here and return. + if ( rnumnonpx.test( val ) ) { + return val; + } + + // Check for style in case a browser which returns unreliable values + // for getComputedStyle silently falls back to the reliable elem.style + valueIsBorderBox = isBorderBox && + ( support.boxSizingReliable() || val === elem.style[ name ] ); + + // Fall back to offsetWidth/Height when value is "auto" + // This happens for inline elements with no explicit setting (gh-3571) + if ( val === "auto" ) { + val = elem[ "offset" + name[ 0 ].toUpperCase() + name.slice( 1 ) ]; + } + + // Normalize "", auto, and prepare for extra + val = parseFloat( val ) || 0; + + // Use the active box-sizing model to add/subtract irrelevant styles + return ( val + + augmentWidthOrHeight( + elem, + name, + extra || ( isBorderBox ? "border" : "content" ), + valueIsBorderBox, + styles + ) + ) + "px"; +} + +jQuery.extend( { + + // Add in style property hooks for overriding the default + // behavior of getting and setting a style property + cssHooks: { + opacity: { + get: function( elem, computed ) { + if ( computed ) { + + // We should always get a number back from opacity + var ret = curCSS( elem, "opacity" ); + return ret === "" ? "1" : ret; + } + } + } + }, + + // Don't automatically add "px" to these possibly-unitless properties + cssNumber: { + "animationIterationCount": true, + "columnCount": true, + "fillOpacity": true, + "flexGrow": true, + "flexShrink": true, + "fontWeight": true, + "lineHeight": true, + "opacity": true, + "order": true, + "orphans": true, + "widows": true, + "zIndex": true, + "zoom": true + }, + + // Add in properties whose names you wish to fix before + // setting or getting the value + cssProps: { + "float": "cssFloat" + }, + + // Get and set the style property on a DOM Node + style: function( elem, name, value, extra ) { + + // Don't set styles on text and comment nodes + if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) { + return; + } + + // Make sure that we're working with the right name + var ret, type, hooks, + origName = jQuery.camelCase( name ), + isCustomProp = rcustomProp.test( name ), + style = elem.style; + + // Make sure that we're working with the right name. We don't + // want to query the value if it is a CSS custom property + // since they are user-defined. + if ( !isCustomProp ) { + name = finalPropName( origName ); + } + + // Gets hook for the prefixed version, then unprefixed version + hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; + + // Check if we're setting a value + if ( value !== undefined ) { + type = typeof value; + + // Convert "+=" or "-=" to relative numbers (#7345) + if ( type === "string" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) { + value = adjustCSS( elem, name, ret ); + + // Fixes bug #9237 + type = "number"; + } + + // Make sure that null and NaN values aren't set (#7116) + if ( value == null || value !== value ) { + return; + } + + // If a number was passed in, add the unit (except for certain CSS properties) + if ( type === "number" ) { + value += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? "" : "px" ); + } + + // background-* props affect original clone's values + if ( !support.clearCloneStyle && value === "" && name.indexOf( "background" ) === 0 ) { + style[ name ] = "inherit"; + } + + // If a hook was provided, use that value, otherwise just set the specified value + if ( !hooks || !( "set" in hooks ) || + ( value = hooks.set( elem, value, extra ) ) !== undefined ) { + + if ( isCustomProp ) { + style.setProperty( name, value ); + } else { + style[ name ] = value; + } + } + + } else { + + // If a hook was provided get the non-computed value from there + if ( hooks && "get" in hooks && + ( ret = hooks.get( elem, false, extra ) ) !== undefined ) { + + return ret; + } + + // Otherwise just get the value from the style object + return style[ name ]; + } + }, + + css: function( elem, name, extra, styles ) { + var val, num, hooks, + origName = jQuery.camelCase( name ), + isCustomProp = rcustomProp.test( name ); + + // Make sure that we're working with the right name. We don't + // want to modify the value if it is a CSS custom property + // since they are user-defined. + if ( !isCustomProp ) { + name = finalPropName( origName ); + } + + // Try prefixed name followed by the unprefixed name + hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; + + // If a hook was provided get the computed value from there + if ( hooks && "get" in hooks ) { + val = hooks.get( elem, true, extra ); + } + + // Otherwise, if a way to get the computed value exists, use that + if ( val === undefined ) { + val = curCSS( elem, name, styles ); + } + + // Convert "normal" to computed value + if ( val === "normal" && name in cssNormalTransform ) { + val = cssNormalTransform[ name ]; + } + + // Make numeric if forced or a qualifier was provided and val looks numeric + if ( extra === "" || extra ) { + num = parseFloat( val ); + return extra === true || isFinite( num ) ? num || 0 : val; + } + + return val; + } +} ); + +jQuery.each( [ "height", "width" ], function( i, name ) { + jQuery.cssHooks[ name ] = { + get: function( elem, computed, extra ) { + if ( computed ) { + + // Certain elements can have dimension info if we invisibly show them + // but it must have a current display style that would benefit + return rdisplayswap.test( jQuery.css( elem, "display" ) ) && + + // Support: Safari 8+ + // Table columns in Safari have non-zero offsetWidth & zero + // getBoundingClientRect().width unless display is changed. + // Support: IE <=11 only + // Running getBoundingClientRect on a disconnected node + // in IE throws an error. + ( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ? + swap( elem, cssShow, function() { + return getWidthOrHeight( elem, name, extra ); + } ) : + getWidthOrHeight( elem, name, extra ); + } + }, + + set: function( elem, value, extra ) { + var matches, + styles = extra && getStyles( elem ), + subtract = extra && augmentWidthOrHeight( + elem, + name, + extra, + jQuery.css( elem, "boxSizing", false, styles ) === "border-box", + styles + ); + + // Convert to pixels if value adjustment is needed + if ( subtract && ( matches = rcssNum.exec( value ) ) && + ( matches[ 3 ] || "px" ) !== "px" ) { + + elem.style[ name ] = value; + value = jQuery.css( elem, name ); + } + + return setPositiveNumber( elem, value, subtract ); + } + }; +} ); + +jQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft, + function( elem, computed ) { + if ( computed ) { + return ( parseFloat( curCSS( elem, "marginLeft" ) ) || + elem.getBoundingClientRect().left - + swap( elem, { marginLeft: 0 }, function() { + return elem.getBoundingClientRect().left; + } ) + ) + "px"; + } + } +); + +// These hooks are used by animate to expand properties +jQuery.each( { + margin: "", + padding: "", + border: "Width" +}, function( prefix, suffix ) { + jQuery.cssHooks[ prefix + suffix ] = { + expand: function( value ) { + var i = 0, + expanded = {}, + + // Assumes a single number if not a string + parts = typeof value === "string" ? value.split( " " ) : [ value ]; + + for ( ; i < 4; i++ ) { + expanded[ prefix + cssExpand[ i ] + suffix ] = + parts[ i ] || parts[ i - 2 ] || parts[ 0 ]; + } + + return expanded; + } + }; + + if ( !rmargin.test( prefix ) ) { + jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber; + } +} ); + +jQuery.fn.extend( { + css: function( name, value ) { + return access( this, function( elem, name, value ) { + var styles, len, + map = {}, + i = 0; + + if ( Array.isArray( name ) ) { + styles = getStyles( elem ); + len = name.length; + + for ( ; i < len; i++ ) { + map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles ); + } + + return map; + } + + return value !== undefined ? + jQuery.style( elem, name, value ) : + jQuery.css( elem, name ); + }, name, value, arguments.length > 1 ); + } +} ); + + +function Tween( elem, options, prop, end, easing ) { + return new Tween.prototype.init( elem, options, prop, end, easing ); +} +jQuery.Tween = Tween; + +Tween.prototype = { + constructor: Tween, + init: function( elem, options, prop, end, easing, unit ) { + this.elem = elem; + this.prop = prop; + this.easing = easing || jQuery.easing._default; + this.options = options; + this.start = this.now = this.cur(); + this.end = end; + this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" ); + }, + cur: function() { + var hooks = Tween.propHooks[ this.prop ]; + + return hooks && hooks.get ? + hooks.get( this ) : + Tween.propHooks._default.get( this ); + }, + run: function( percent ) { + var eased, + hooks = Tween.propHooks[ this.prop ]; + + if ( this.options.duration ) { + this.pos = eased = jQuery.easing[ this.easing ]( + percent, this.options.duration * percent, 0, 1, this.options.duration + ); + } else { + this.pos = eased = percent; + } + this.now = ( this.end - this.start ) * eased + this.start; + + if ( this.options.step ) { + this.options.step.call( this.elem, this.now, this ); + } + + if ( hooks && hooks.set ) { + hooks.set( this ); + } else { + Tween.propHooks._default.set( this ); + } + return this; + } +}; + +Tween.prototype.init.prototype = Tween.prototype; + +Tween.propHooks = { + _default: { + get: function( tween ) { + var result; + + // Use a property on the element directly when it is not a DOM element, + // or when there is no matching style property that exists. + if ( tween.elem.nodeType !== 1 || + tween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) { + return tween.elem[ tween.prop ]; + } + + // Passing an empty string as a 3rd parameter to .css will automatically + // attempt a parseFloat and fallback to a string if the parse fails. + // Simple values such as "10px" are parsed to Float; + // complex values such as "rotate(1rad)" are returned as-is. + result = jQuery.css( tween.elem, tween.prop, "" ); + + // Empty strings, null, undefined and "auto" are converted to 0. + return !result || result === "auto" ? 0 : result; + }, + set: function( tween ) { + + // Use step hook for back compat. + // Use cssHook if its there. + // Use .style if available and use plain properties where available. + if ( jQuery.fx.step[ tween.prop ] ) { + jQuery.fx.step[ tween.prop ]( tween ); + } else if ( tween.elem.nodeType === 1 && + ( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null || + jQuery.cssHooks[ tween.prop ] ) ) { + jQuery.style( tween.elem, tween.prop, tween.now + tween.unit ); + } else { + tween.elem[ tween.prop ] = tween.now; + } + } + } +}; + +// Support: IE <=9 only +// Panic based approach to setting things on disconnected nodes +Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = { + set: function( tween ) { + if ( tween.elem.nodeType && tween.elem.parentNode ) { + tween.elem[ tween.prop ] = tween.now; + } + } +}; + +jQuery.easing = { + linear: function( p ) { + return p; + }, + swing: function( p ) { + return 0.5 - Math.cos( p * Math.PI ) / 2; + }, + _default: "swing" +}; + +jQuery.fx = Tween.prototype.init; + +// Back compat <1.8 extension point +jQuery.fx.step = {}; + + + + +var + fxNow, inProgress, + rfxtypes = /^(?:toggle|show|hide)$/, + rrun = /queueHooks$/; + +function schedule() { + if ( inProgress ) { + if ( document.hidden === false && window.requestAnimationFrame ) { + window.requestAnimationFrame( schedule ); + } else { + window.setTimeout( schedule, jQuery.fx.interval ); + } + + jQuery.fx.tick(); + } +} + +// Animations created synchronously will run synchronously +function createFxNow() { + window.setTimeout( function() { + fxNow = undefined; + } ); + return ( fxNow = jQuery.now() ); +} + +// Generate parameters to create a standard animation +function genFx( type, includeWidth ) { + var which, + i = 0, + attrs = { height: type }; + + // If we include width, step value is 1 to do all cssExpand values, + // otherwise step value is 2 to skip over Left and Right + includeWidth = includeWidth ? 1 : 0; + for ( ; i < 4; i += 2 - includeWidth ) { + which = cssExpand[ i ]; + attrs[ "margin" + which ] = attrs[ "padding" + which ] = type; + } + + if ( includeWidth ) { + attrs.opacity = attrs.width = type; + } + + return attrs; +} + +function createTween( value, prop, animation ) { + var tween, + collection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ "*" ] ), + index = 0, + length = collection.length; + for ( ; index < length; index++ ) { + if ( ( tween = collection[ index ].call( animation, prop, value ) ) ) { + + // We're done with this property + return tween; + } + } +} + +function defaultPrefilter( elem, props, opts ) { + var prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display, + isBox = "width" in props || "height" in props, + anim = this, + orig = {}, + style = elem.style, + hidden = elem.nodeType && isHiddenWithinTree( elem ), + dataShow = dataPriv.get( elem, "fxshow" ); + + // Queue-skipping animations hijack the fx hooks + if ( !opts.queue ) { + hooks = jQuery._queueHooks( elem, "fx" ); + if ( hooks.unqueued == null ) { + hooks.unqueued = 0; + oldfire = hooks.empty.fire; + hooks.empty.fire = function() { + if ( !hooks.unqueued ) { + oldfire(); + } + }; + } + hooks.unqueued++; + + anim.always( function() { + + // Ensure the complete handler is called before this completes + anim.always( function() { + hooks.unqueued--; + if ( !jQuery.queue( elem, "fx" ).length ) { + hooks.empty.fire(); + } + } ); + } ); + } + + // Detect show/hide animations + for ( prop in props ) { + value = props[ prop ]; + if ( rfxtypes.test( value ) ) { + delete props[ prop ]; + toggle = toggle || value === "toggle"; + if ( value === ( hidden ? "hide" : "show" ) ) { + + // Pretend to be hidden if this is a "show" and + // there is still data from a stopped show/hide + if ( value === "show" && dataShow && dataShow[ prop ] !== undefined ) { + hidden = true; + + // Ignore all other no-op show/hide data + } else { + continue; + } + } + orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop ); + } + } + + // Bail out if this is a no-op like .hide().hide() + propTween = !jQuery.isEmptyObject( props ); + if ( !propTween && jQuery.isEmptyObject( orig ) ) { + return; + } + + // Restrict "overflow" and "display" styles during box animations + if ( isBox && elem.nodeType === 1 ) { + + // Support: IE <=9 - 11, Edge 12 - 13 + // Record all 3 overflow attributes because IE does not infer the shorthand + // from identically-valued overflowX and overflowY + opts.overflow = [ style.overflow, style.overflowX, style.overflowY ]; + + // Identify a display type, preferring old show/hide data over the CSS cascade + restoreDisplay = dataShow && dataShow.display; + if ( restoreDisplay == null ) { + restoreDisplay = dataPriv.get( elem, "display" ); + } + display = jQuery.css( elem, "display" ); + if ( display === "none" ) { + if ( restoreDisplay ) { + display = restoreDisplay; + } else { + + // Get nonempty value(s) by temporarily forcing visibility + showHide( [ elem ], true ); + restoreDisplay = elem.style.display || restoreDisplay; + display = jQuery.css( elem, "display" ); + showHide( [ elem ] ); + } + } + + // Animate inline elements as inline-block + if ( display === "inline" || display === "inline-block" && restoreDisplay != null ) { + if ( jQuery.css( elem, "float" ) === "none" ) { + + // Restore the original display value at the end of pure show/hide animations + if ( !propTween ) { + anim.done( function() { + style.display = restoreDisplay; + } ); + if ( restoreDisplay == null ) { + display = style.display; + restoreDisplay = display === "none" ? "" : display; + } + } + style.display = "inline-block"; + } + } + } + + if ( opts.overflow ) { + style.overflow = "hidden"; + anim.always( function() { + style.overflow = opts.overflow[ 0 ]; + style.overflowX = opts.overflow[ 1 ]; + style.overflowY = opts.overflow[ 2 ]; + } ); + } + + // Implement show/hide animations + propTween = false; + for ( prop in orig ) { + + // General show/hide setup for this element animation + if ( !propTween ) { + if ( dataShow ) { + if ( "hidden" in dataShow ) { + hidden = dataShow.hidden; + } + } else { + dataShow = dataPriv.access( elem, "fxshow", { display: restoreDisplay } ); + } + + // Store hidden/visible for toggle so `.stop().toggle()` "reverses" + if ( toggle ) { + dataShow.hidden = !hidden; + } + + // Show elements before animating them + if ( hidden ) { + showHide( [ elem ], true ); + } + + /* eslint-disable no-loop-func */ + + anim.done( function() { + + /* eslint-enable no-loop-func */ + + // The final step of a "hide" animation is actually hiding the element + if ( !hidden ) { + showHide( [ elem ] ); + } + dataPriv.remove( elem, "fxshow" ); + for ( prop in orig ) { + jQuery.style( elem, prop, orig[ prop ] ); + } + } ); + } + + // Per-property setup + propTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim ); + if ( !( prop in dataShow ) ) { + dataShow[ prop ] = propTween.start; + if ( hidden ) { + propTween.end = propTween.start; + propTween.start = 0; + } + } + } +} + +function propFilter( props, specialEasing ) { + var index, name, easing, value, hooks; + + // camelCase, specialEasing and expand cssHook pass + for ( index in props ) { + name = jQuery.camelCase( index ); + easing = specialEasing[ name ]; + value = props[ index ]; + if ( Array.isArray( value ) ) { + easing = value[ 1 ]; + value = props[ index ] = value[ 0 ]; + } + + if ( index !== name ) { + props[ name ] = value; + delete props[ index ]; + } + + hooks = jQuery.cssHooks[ name ]; + if ( hooks && "expand" in hooks ) { + value = hooks.expand( value ); + delete props[ name ]; + + // Not quite $.extend, this won't overwrite existing keys. + // Reusing 'index' because we have the correct "name" + for ( index in value ) { + if ( !( index in props ) ) { + props[ index ] = value[ index ]; + specialEasing[ index ] = easing; + } + } + } else { + specialEasing[ name ] = easing; + } + } +} + +function Animation( elem, properties, options ) { + var result, + stopped, + index = 0, + length = Animation.prefilters.length, + deferred = jQuery.Deferred().always( function() { + + // Don't match elem in the :animated selector + delete tick.elem; + } ), + tick = function() { + if ( stopped ) { + return false; + } + var currentTime = fxNow || createFxNow(), + remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ), + + // Support: Android 2.3 only + // Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497) + temp = remaining / animation.duration || 0, + percent = 1 - temp, + index = 0, + length = animation.tweens.length; + + for ( ; index < length; index++ ) { + animation.tweens[ index ].run( percent ); + } + + deferred.notifyWith( elem, [ animation, percent, remaining ] ); + + // If there's more to do, yield + if ( percent < 1 && length ) { + return remaining; + } + + // If this was an empty animation, synthesize a final progress notification + if ( !length ) { + deferred.notifyWith( elem, [ animation, 1, 0 ] ); + } + + // Resolve the animation and report its conclusion + deferred.resolveWith( elem, [ animation ] ); + return false; + }, + animation = deferred.promise( { + elem: elem, + props: jQuery.extend( {}, properties ), + opts: jQuery.extend( true, { + specialEasing: {}, + easing: jQuery.easing._default + }, options ), + originalProperties: properties, + originalOptions: options, + startTime: fxNow || createFxNow(), + duration: options.duration, + tweens: [], + createTween: function( prop, end ) { + var tween = jQuery.Tween( elem, animation.opts, prop, end, + animation.opts.specialEasing[ prop ] || animation.opts.easing ); + animation.tweens.push( tween ); + return tween; + }, + stop: function( gotoEnd ) { + var index = 0, + + // If we are going to the end, we want to run all the tweens + // otherwise we skip this part + length = gotoEnd ? animation.tweens.length : 0; + if ( stopped ) { + return this; + } + stopped = true; + for ( ; index < length; index++ ) { + animation.tweens[ index ].run( 1 ); + } + + // Resolve when we played the last frame; otherwise, reject + if ( gotoEnd ) { + deferred.notifyWith( elem, [ animation, 1, 0 ] ); + deferred.resolveWith( elem, [ animation, gotoEnd ] ); + } else { + deferred.rejectWith( elem, [ animation, gotoEnd ] ); + } + return this; + } + } ), + props = animation.props; + + propFilter( props, animation.opts.specialEasing ); + + for ( ; index < length; index++ ) { + result = Animation.prefilters[ index ].call( animation, elem, props, animation.opts ); + if ( result ) { + if ( jQuery.isFunction( result.stop ) ) { + jQuery._queueHooks( animation.elem, animation.opts.queue ).stop = + jQuery.proxy( result.stop, result ); + } + return result; + } + } + + jQuery.map( props, createTween, animation ); + + if ( jQuery.isFunction( animation.opts.start ) ) { + animation.opts.start.call( elem, animation ); + } + + // Attach callbacks from options + animation + .progress( animation.opts.progress ) + .done( animation.opts.done, animation.opts.complete ) + .fail( animation.opts.fail ) + .always( animation.opts.always ); + + jQuery.fx.timer( + jQuery.extend( tick, { + elem: elem, + anim: animation, + queue: animation.opts.queue + } ) + ); + + return animation; +} + +jQuery.Animation = jQuery.extend( Animation, { + + tweeners: { + "*": [ function( prop, value ) { + var tween = this.createTween( prop, value ); + adjustCSS( tween.elem, prop, rcssNum.exec( value ), tween ); + return tween; + } ] + }, + + tweener: function( props, callback ) { + if ( jQuery.isFunction( props ) ) { + callback = props; + props = [ "*" ]; + } else { + props = props.match( rnothtmlwhite ); + } + + var prop, + index = 0, + length = props.length; + + for ( ; index < length; index++ ) { + prop = props[ index ]; + Animation.tweeners[ prop ] = Animation.tweeners[ prop ] || []; + Animation.tweeners[ prop ].unshift( callback ); + } + }, + + prefilters: [ defaultPrefilter ], + + prefilter: function( callback, prepend ) { + if ( prepend ) { + Animation.prefilters.unshift( callback ); + } else { + Animation.prefilters.push( callback ); + } + } +} ); + +jQuery.speed = function( speed, easing, fn ) { + var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : { + complete: fn || !fn && easing || + jQuery.isFunction( speed ) && speed, + duration: speed, + easing: fn && easing || easing && !jQuery.isFunction( easing ) && easing + }; + + // Go to the end state if fx are off + if ( jQuery.fx.off ) { + opt.duration = 0; + + } else { + if ( typeof opt.duration !== "number" ) { + if ( opt.duration in jQuery.fx.speeds ) { + opt.duration = jQuery.fx.speeds[ opt.duration ]; + + } else { + opt.duration = jQuery.fx.speeds._default; + } + } + } + + // Normalize opt.queue - true/undefined/null -> "fx" + if ( opt.queue == null || opt.queue === true ) { + opt.queue = "fx"; + } + + // Queueing + opt.old = opt.complete; + + opt.complete = function() { + if ( jQuery.isFunction( opt.old ) ) { + opt.old.call( this ); + } + + if ( opt.queue ) { + jQuery.dequeue( this, opt.queue ); + } + }; + + return opt; +}; + +jQuery.fn.extend( { + fadeTo: function( speed, to, easing, callback ) { + + // Show any hidden elements after setting opacity to 0 + return this.filter( isHiddenWithinTree ).css( "opacity", 0 ).show() + + // Animate to the value specified + .end().animate( { opacity: to }, speed, easing, callback ); + }, + animate: function( prop, speed, easing, callback ) { + var empty = jQuery.isEmptyObject( prop ), + optall = jQuery.speed( speed, easing, callback ), + doAnimation = function() { + + // Operate on a copy of prop so per-property easing won't be lost + var anim = Animation( this, jQuery.extend( {}, prop ), optall ); + + // Empty animations, or finishing resolves immediately + if ( empty || dataPriv.get( this, "finish" ) ) { + anim.stop( true ); + } + }; + doAnimation.finish = doAnimation; + + return empty || optall.queue === false ? + this.each( doAnimation ) : + this.queue( optall.queue, doAnimation ); + }, + stop: function( type, clearQueue, gotoEnd ) { + var stopQueue = function( hooks ) { + var stop = hooks.stop; + delete hooks.stop; + stop( gotoEnd ); + }; + + if ( typeof type !== "string" ) { + gotoEnd = clearQueue; + clearQueue = type; + type = undefined; + } + if ( clearQueue && type !== false ) { + this.queue( type || "fx", [] ); + } + + return this.each( function() { + var dequeue = true, + index = type != null && type + "queueHooks", + timers = jQuery.timers, + data = dataPriv.get( this ); + + if ( index ) { + if ( data[ index ] && data[ index ].stop ) { + stopQueue( data[ index ] ); + } + } else { + for ( index in data ) { + if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) { + stopQueue( data[ index ] ); + } + } + } + + for ( index = timers.length; index--; ) { + if ( timers[ index ].elem === this && + ( type == null || timers[ index ].queue === type ) ) { + + timers[ index ].anim.stop( gotoEnd ); + dequeue = false; + timers.splice( index, 1 ); + } + } + + // Start the next in the queue if the last step wasn't forced. + // Timers currently will call their complete callbacks, which + // will dequeue but only if they were gotoEnd. + if ( dequeue || !gotoEnd ) { + jQuery.dequeue( this, type ); + } + } ); + }, + finish: function( type ) { + if ( type !== false ) { + type = type || "fx"; + } + return this.each( function() { + var index, + data = dataPriv.get( this ), + queue = data[ type + "queue" ], + hooks = data[ type + "queueHooks" ], + timers = jQuery.timers, + length = queue ? queue.length : 0; + + // Enable finishing flag on private data + data.finish = true; + + // Empty the queue first + jQuery.queue( this, type, [] ); + + if ( hooks && hooks.stop ) { + hooks.stop.call( this, true ); + } + + // Look for any active animations, and finish them + for ( index = timers.length; index--; ) { + if ( timers[ index ].elem === this && timers[ index ].queue === type ) { + timers[ index ].anim.stop( true ); + timers.splice( index, 1 ); + } + } + + // Look for any animations in the old queue and finish them + for ( index = 0; index < length; index++ ) { + if ( queue[ index ] && queue[ index ].finish ) { + queue[ index ].finish.call( this ); + } + } + + // Turn off finishing flag + delete data.finish; + } ); + } +} ); + +jQuery.each( [ "toggle", "show", "hide" ], function( i, name ) { + var cssFn = jQuery.fn[ name ]; + jQuery.fn[ name ] = function( speed, easing, callback ) { + return speed == null || typeof speed === "boolean" ? + cssFn.apply( this, arguments ) : + this.animate( genFx( name, true ), speed, easing, callback ); + }; +} ); + +// Generate shortcuts for custom animations +jQuery.each( { + slideDown: genFx( "show" ), + slideUp: genFx( "hide" ), + slideToggle: genFx( "toggle" ), + fadeIn: { opacity: "show" }, + fadeOut: { opacity: "hide" }, + fadeToggle: { opacity: "toggle" } +}, function( name, props ) { + jQuery.fn[ name ] = function( speed, easing, callback ) { + return this.animate( props, speed, easing, callback ); + }; +} ); + +jQuery.timers = []; +jQuery.fx.tick = function() { + var timer, + i = 0, + timers = jQuery.timers; + + fxNow = jQuery.now(); + + for ( ; i < timers.length; i++ ) { + timer = timers[ i ]; + + // Run the timer and safely remove it when done (allowing for external removal) + if ( !timer() && timers[ i ] === timer ) { + timers.splice( i--, 1 ); + } + } + + if ( !timers.length ) { + jQuery.fx.stop(); + } + fxNow = undefined; +}; + +jQuery.fx.timer = function( timer ) { + jQuery.timers.push( timer ); + jQuery.fx.start(); +}; + +jQuery.fx.interval = 13; +jQuery.fx.start = function() { + if ( inProgress ) { + return; + } + + inProgress = true; + schedule(); +}; + +jQuery.fx.stop = function() { + inProgress = null; +}; + +jQuery.fx.speeds = { + slow: 600, + fast: 200, + + // Default speed + _default: 400 +}; + + +// Based off of the plugin by Clint Helfers, with permission. +// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/ +jQuery.fn.delay = function( time, type ) { + time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time; + type = type || "fx"; + + return this.queue( type, function( next, hooks ) { + var timeout = window.setTimeout( next, time ); + hooks.stop = function() { + window.clearTimeout( timeout ); + }; + } ); +}; + + +( function() { + var input = document.createElement( "input" ), + select = document.createElement( "select" ), + opt = select.appendChild( document.createElement( "option" ) ); + + input.type = "checkbox"; + + // Support: Android <=4.3 only + // Default value for a checkbox should be "on" + support.checkOn = input.value !== ""; + + // Support: IE <=11 only + // Must access selectedIndex to make default options select + support.optSelected = opt.selected; + + // Support: IE <=11 only + // An input loses its value after becoming a radio + input = document.createElement( "input" ); + input.value = "t"; + input.type = "radio"; + support.radioValue = input.value === "t"; +} )(); + + +var boolHook, + attrHandle = jQuery.expr.attrHandle; + +jQuery.fn.extend( { + attr: function( name, value ) { + return access( this, jQuery.attr, name, value, arguments.length > 1 ); + }, + + removeAttr: function( name ) { + return this.each( function() { + jQuery.removeAttr( this, name ); + } ); + } +} ); + +jQuery.extend( { + attr: function( elem, name, value ) { + var ret, hooks, + nType = elem.nodeType; + + // Don't get/set attributes on text, comment and attribute nodes + if ( nType === 3 || nType === 8 || nType === 2 ) { + return; + } + + // Fallback to prop when attributes are not supported + if ( typeof elem.getAttribute === "undefined" ) { + return jQuery.prop( elem, name, value ); + } + + // Attribute hooks are determined by the lowercase version + // Grab necessary hook if one is defined + if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { + hooks = jQuery.attrHooks[ name.toLowerCase() ] || + ( jQuery.expr.match.bool.test( name ) ? boolHook : undefined ); + } + + if ( value !== undefined ) { + if ( value === null ) { + jQuery.removeAttr( elem, name ); + return; + } + + if ( hooks && "set" in hooks && + ( ret = hooks.set( elem, value, name ) ) !== undefined ) { + return ret; + } + + elem.setAttribute( name, value + "" ); + return value; + } + + if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) { + return ret; + } + + ret = jQuery.find.attr( elem, name ); + + // Non-existent attributes return null, we normalize to undefined + return ret == null ? undefined : ret; + }, + + attrHooks: { + type: { + set: function( elem, value ) { + if ( !support.radioValue && value === "radio" && + nodeName( elem, "input" ) ) { + var val = elem.value; + elem.setAttribute( "type", value ); + if ( val ) { + elem.value = val; + } + return value; + } + } + } + }, + + removeAttr: function( elem, value ) { + var name, + i = 0, + + // Attribute names can contain non-HTML whitespace characters + // https://html.spec.whatwg.org/multipage/syntax.html#attributes-2 + attrNames = value && value.match( rnothtmlwhite ); + + if ( attrNames && elem.nodeType === 1 ) { + while ( ( name = attrNames[ i++ ] ) ) { + elem.removeAttribute( name ); + } + } + } +} ); + +// Hooks for boolean attributes +boolHook = { + set: function( elem, value, name ) { + if ( value === false ) { + + // Remove boolean attributes when set to false + jQuery.removeAttr( elem, name ); + } else { + elem.setAttribute( name, name ); + } + return name; + } +}; + +jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( i, name ) { + var getter = attrHandle[ name ] || jQuery.find.attr; + + attrHandle[ name ] = function( elem, name, isXML ) { + var ret, handle, + lowercaseName = name.toLowerCase(); + + if ( !isXML ) { + + // Avoid an infinite loop by temporarily removing this function from the getter + handle = attrHandle[ lowercaseName ]; + attrHandle[ lowercaseName ] = ret; + ret = getter( elem, name, isXML ) != null ? + lowercaseName : + null; + attrHandle[ lowercaseName ] = handle; + } + return ret; + }; +} ); + + + + +var rfocusable = /^(?:input|select|textarea|button)$/i, + rclickable = /^(?:a|area)$/i; + +jQuery.fn.extend( { + prop: function( name, value ) { + return access( this, jQuery.prop, name, value, arguments.length > 1 ); + }, + + removeProp: function( name ) { + return this.each( function() { + delete this[ jQuery.propFix[ name ] || name ]; + } ); + } +} ); + +jQuery.extend( { + prop: function( elem, name, value ) { + var ret, hooks, + nType = elem.nodeType; + + // Don't get/set properties on text, comment and attribute nodes + if ( nType === 3 || nType === 8 || nType === 2 ) { + return; + } + + if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { + + // Fix name and attach hooks + name = jQuery.propFix[ name ] || name; + hooks = jQuery.propHooks[ name ]; + } + + if ( value !== undefined ) { + if ( hooks && "set" in hooks && + ( ret = hooks.set( elem, value, name ) ) !== undefined ) { + return ret; + } + + return ( elem[ name ] = value ); + } + + if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) { + return ret; + } + + return elem[ name ]; + }, + + propHooks: { + tabIndex: { + get: function( elem ) { + + // Support: IE <=9 - 11 only + // elem.tabIndex doesn't always return the + // correct value when it hasn't been explicitly set + // https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/ + // Use proper attribute retrieval(#12072) + var tabindex = jQuery.find.attr( elem, "tabindex" ); + + if ( tabindex ) { + return parseInt( tabindex, 10 ); + } + + if ( + rfocusable.test( elem.nodeName ) || + rclickable.test( elem.nodeName ) && + elem.href + ) { + return 0; + } + + return -1; + } + } + }, + + propFix: { + "for": "htmlFor", + "class": "className" + } +} ); + +// Support: IE <=11 only +// Accessing the selectedIndex property +// forces the browser to respect setting selected +// on the option +// The getter ensures a default option is selected +// when in an optgroup +// eslint rule "no-unused-expressions" is disabled for this code +// since it considers such accessions noop +if ( !support.optSelected ) { + jQuery.propHooks.selected = { + get: function( elem ) { + + /* eslint no-unused-expressions: "off" */ + + var parent = elem.parentNode; + if ( parent && parent.parentNode ) { + parent.parentNode.selectedIndex; + } + return null; + }, + set: function( elem ) { + + /* eslint no-unused-expressions: "off" */ + + var parent = elem.parentNode; + if ( parent ) { + parent.selectedIndex; + + if ( parent.parentNode ) { + parent.parentNode.selectedIndex; + } + } + } + }; +} + +jQuery.each( [ + "tabIndex", + "readOnly", + "maxLength", + "cellSpacing", + "cellPadding", + "rowSpan", + "colSpan", + "useMap", + "frameBorder", + "contentEditable" +], function() { + jQuery.propFix[ this.toLowerCase() ] = this; +} ); + + + + + // Strip and collapse whitespace according to HTML spec + // https://html.spec.whatwg.org/multipage/infrastructure.html#strip-and-collapse-whitespace + function stripAndCollapse( value ) { + var tokens = value.match( rnothtmlwhite ) || []; + return tokens.join( " " ); + } + + +function getClass( elem ) { + return elem.getAttribute && elem.getAttribute( "class" ) || ""; +} + +jQuery.fn.extend( { + addClass: function( value ) { + var classes, elem, cur, curValue, clazz, j, finalValue, + i = 0; + + if ( jQuery.isFunction( value ) ) { + return this.each( function( j ) { + jQuery( this ).addClass( value.call( this, j, getClass( this ) ) ); + } ); + } + + if ( typeof value === "string" && value ) { + classes = value.match( rnothtmlwhite ) || []; + + while ( ( elem = this[ i++ ] ) ) { + curValue = getClass( elem ); + cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " ); + + if ( cur ) { + j = 0; + while ( ( clazz = classes[ j++ ] ) ) { + if ( cur.indexOf( " " + clazz + " " ) < 0 ) { + cur += clazz + " "; + } + } + + // Only assign if different to avoid unneeded rendering. + finalValue = stripAndCollapse( cur ); + if ( curValue !== finalValue ) { + elem.setAttribute( "class", finalValue ); + } + } + } + } + + return this; + }, + + removeClass: function( value ) { + var classes, elem, cur, curValue, clazz, j, finalValue, + i = 0; + + if ( jQuery.isFunction( value ) ) { + return this.each( function( j ) { + jQuery( this ).removeClass( value.call( this, j, getClass( this ) ) ); + } ); + } + + if ( !arguments.length ) { + return this.attr( "class", "" ); + } + + if ( typeof value === "string" && value ) { + classes = value.match( rnothtmlwhite ) || []; + + while ( ( elem = this[ i++ ] ) ) { + curValue = getClass( elem ); + + // This expression is here for better compressibility (see addClass) + cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " ); + + if ( cur ) { + j = 0; + while ( ( clazz = classes[ j++ ] ) ) { + + // Remove *all* instances + while ( cur.indexOf( " " + clazz + " " ) > -1 ) { + cur = cur.replace( " " + clazz + " ", " " ); + } + } + + // Only assign if different to avoid unneeded rendering. + finalValue = stripAndCollapse( cur ); + if ( curValue !== finalValue ) { + elem.setAttribute( "class", finalValue ); + } + } + } + } + + return this; + }, + + toggleClass: function( value, stateVal ) { + var type = typeof value; + + if ( typeof stateVal === "boolean" && type === "string" ) { + return stateVal ? this.addClass( value ) : this.removeClass( value ); + } + + if ( jQuery.isFunction( value ) ) { + return this.each( function( i ) { + jQuery( this ).toggleClass( + value.call( this, i, getClass( this ), stateVal ), + stateVal + ); + } ); + } + + return this.each( function() { + var className, i, self, classNames; + + if ( type === "string" ) { + + // Toggle individual class names + i = 0; + self = jQuery( this ); + classNames = value.match( rnothtmlwhite ) || []; + + while ( ( className = classNames[ i++ ] ) ) { + + // Check each className given, space separated list + if ( self.hasClass( className ) ) { + self.removeClass( className ); + } else { + self.addClass( className ); + } + } + + // Toggle whole class name + } else if ( value === undefined || type === "boolean" ) { + className = getClass( this ); + if ( className ) { + + // Store className if set + dataPriv.set( this, "__className__", className ); + } + + // If the element has a class name or if we're passed `false`, + // then remove the whole classname (if there was one, the above saved it). + // Otherwise bring back whatever was previously saved (if anything), + // falling back to the empty string if nothing was stored. + if ( this.setAttribute ) { + this.setAttribute( "class", + className || value === false ? + "" : + dataPriv.get( this, "__className__" ) || "" + ); + } + } + } ); + }, + + hasClass: function( selector ) { + var className, elem, + i = 0; + + className = " " + selector + " "; + while ( ( elem = this[ i++ ] ) ) { + if ( elem.nodeType === 1 && + ( " " + stripAndCollapse( getClass( elem ) ) + " " ).indexOf( className ) > -1 ) { + return true; + } + } + + return false; + } +} ); + + + + +var rreturn = /\r/g; + +jQuery.fn.extend( { + val: function( value ) { + var hooks, ret, isFunction, + elem = this[ 0 ]; + + if ( !arguments.length ) { + if ( elem ) { + hooks = jQuery.valHooks[ elem.type ] || + jQuery.valHooks[ elem.nodeName.toLowerCase() ]; + + if ( hooks && + "get" in hooks && + ( ret = hooks.get( elem, "value" ) ) !== undefined + ) { + return ret; + } + + ret = elem.value; + + // Handle most common string cases + if ( typeof ret === "string" ) { + return ret.replace( rreturn, "" ); + } + + // Handle cases where value is null/undef or number + return ret == null ? "" : ret; + } + + return; + } + + isFunction = jQuery.isFunction( value ); + + return this.each( function( i ) { + var val; + + if ( this.nodeType !== 1 ) { + return; + } + + if ( isFunction ) { + val = value.call( this, i, jQuery( this ).val() ); + } else { + val = value; + } + + // Treat null/undefined as ""; convert numbers to string + if ( val == null ) { + val = ""; + + } else if ( typeof val === "number" ) { + val += ""; + + } else if ( Array.isArray( val ) ) { + val = jQuery.map( val, function( value ) { + return value == null ? "" : value + ""; + } ); + } + + hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ]; + + // If set returns undefined, fall back to normal setting + if ( !hooks || !( "set" in hooks ) || hooks.set( this, val, "value" ) === undefined ) { + this.value = val; + } + } ); + } +} ); + +jQuery.extend( { + valHooks: { + option: { + get: function( elem ) { + + var val = jQuery.find.attr( elem, "value" ); + return val != null ? + val : + + // Support: IE <=10 - 11 only + // option.text throws exceptions (#14686, #14858) + // Strip and collapse whitespace + // https://html.spec.whatwg.org/#strip-and-collapse-whitespace + stripAndCollapse( jQuery.text( elem ) ); + } + }, + select: { + get: function( elem ) { + var value, option, i, + options = elem.options, + index = elem.selectedIndex, + one = elem.type === "select-one", + values = one ? null : [], + max = one ? index + 1 : options.length; + + if ( index < 0 ) { + i = max; + + } else { + i = one ? index : 0; + } + + // Loop through all the selected options + for ( ; i < max; i++ ) { + option = options[ i ]; + + // Support: IE <=9 only + // IE8-9 doesn't update selected after form reset (#2551) + if ( ( option.selected || i === index ) && + + // Don't return options that are disabled or in a disabled optgroup + !option.disabled && + ( !option.parentNode.disabled || + !nodeName( option.parentNode, "optgroup" ) ) ) { + + // Get the specific value for the option + value = jQuery( option ).val(); + + // We don't need an array for one selects + if ( one ) { + return value; + } + + // Multi-Selects return an array + values.push( value ); + } + } + + return values; + }, + + set: function( elem, value ) { + var optionSet, option, + options = elem.options, + values = jQuery.makeArray( value ), + i = options.length; + + while ( i-- ) { + option = options[ i ]; + + /* eslint-disable no-cond-assign */ + + if ( option.selected = + jQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1 + ) { + optionSet = true; + } + + /* eslint-enable no-cond-assign */ + } + + // Force browsers to behave consistently when non-matching value is set + if ( !optionSet ) { + elem.selectedIndex = -1; + } + return values; + } + } + } +} ); + +// Radios and checkboxes getter/setter +jQuery.each( [ "radio", "checkbox" ], function() { + jQuery.valHooks[ this ] = { + set: function( elem, value ) { + if ( Array.isArray( value ) ) { + return ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 ); + } + } + }; + if ( !support.checkOn ) { + jQuery.valHooks[ this ].get = function( elem ) { + return elem.getAttribute( "value" ) === null ? "on" : elem.value; + }; + } +} ); + + + + +// Return jQuery for attributes-only inclusion + + +var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/; + +jQuery.extend( jQuery.event, { + + trigger: function( event, data, elem, onlyHandlers ) { + + var i, cur, tmp, bubbleType, ontype, handle, special, + eventPath = [ elem || document ], + type = hasOwn.call( event, "type" ) ? event.type : event, + namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split( "." ) : []; + + cur = tmp = elem = elem || document; + + // Don't do events on text and comment nodes + if ( elem.nodeType === 3 || elem.nodeType === 8 ) { + return; + } + + // focus/blur morphs to focusin/out; ensure we're not firing them right now + if ( rfocusMorph.test( type + jQuery.event.triggered ) ) { + return; + } + + if ( type.indexOf( "." ) > -1 ) { + + // Namespaced trigger; create a regexp to match event type in handle() + namespaces = type.split( "." ); + type = namespaces.shift(); + namespaces.sort(); + } + ontype = type.indexOf( ":" ) < 0 && "on" + type; + + // Caller can pass in a jQuery.Event object, Object, or just an event type string + event = event[ jQuery.expando ] ? + event : + new jQuery.Event( type, typeof event === "object" && event ); + + // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true) + event.isTrigger = onlyHandlers ? 2 : 3; + event.namespace = namespaces.join( "." ); + event.rnamespace = event.namespace ? + new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ) : + null; + + // Clean up the event in case it is being reused + event.result = undefined; + if ( !event.target ) { + event.target = elem; + } + + // Clone any incoming data and prepend the event, creating the handler arg list + data = data == null ? + [ event ] : + jQuery.makeArray( data, [ event ] ); + + // Allow special events to draw outside the lines + special = jQuery.event.special[ type ] || {}; + if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) { + return; + } + + // Determine event propagation path in advance, per W3C events spec (#9951) + // Bubble up to document, then to window; watch for a global ownerDocument var (#9724) + if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) { + + bubbleType = special.delegateType || type; + if ( !rfocusMorph.test( bubbleType + type ) ) { + cur = cur.parentNode; + } + for ( ; cur; cur = cur.parentNode ) { + eventPath.push( cur ); + tmp = cur; + } + + // Only add window if we got to document (e.g., not plain obj or detached DOM) + if ( tmp === ( elem.ownerDocument || document ) ) { + eventPath.push( tmp.defaultView || tmp.parentWindow || window ); + } + } + + // Fire handlers on the event path + i = 0; + while ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) { + + event.type = i > 1 ? + bubbleType : + special.bindType || type; + + // jQuery handler + handle = ( dataPriv.get( cur, "events" ) || {} )[ event.type ] && + dataPriv.get( cur, "handle" ); + if ( handle ) { + handle.apply( cur, data ); + } + + // Native handler + handle = ontype && cur[ ontype ]; + if ( handle && handle.apply && acceptData( cur ) ) { + event.result = handle.apply( cur, data ); + if ( event.result === false ) { + event.preventDefault(); + } + } + } + event.type = type; + + // If nobody prevented the default action, do it now + if ( !onlyHandlers && !event.isDefaultPrevented() ) { + + if ( ( !special._default || + special._default.apply( eventPath.pop(), data ) === false ) && + acceptData( elem ) ) { + + // Call a native DOM method on the target with the same name as the event. + // Don't do default actions on window, that's where global variables be (#6170) + if ( ontype && jQuery.isFunction( elem[ type ] ) && !jQuery.isWindow( elem ) ) { + + // Don't re-trigger an onFOO event when we call its FOO() method + tmp = elem[ ontype ]; + + if ( tmp ) { + elem[ ontype ] = null; + } + + // Prevent re-triggering of the same event, since we already bubbled it above + jQuery.event.triggered = type; + elem[ type ](); + jQuery.event.triggered = undefined; + + if ( tmp ) { + elem[ ontype ] = tmp; + } + } + } + } + + return event.result; + }, + + // Piggyback on a donor event to simulate a different one + // Used only for `focus(in | out)` events + simulate: function( type, elem, event ) { + var e = jQuery.extend( + new jQuery.Event(), + event, + { + type: type, + isSimulated: true + } + ); + + jQuery.event.trigger( e, null, elem ); + } + +} ); + +jQuery.fn.extend( { + + trigger: function( type, data ) { + return this.each( function() { + jQuery.event.trigger( type, data, this ); + } ); + }, + triggerHandler: function( type, data ) { + var elem = this[ 0 ]; + if ( elem ) { + return jQuery.event.trigger( type, data, elem, true ); + } + } +} ); + + +jQuery.each( ( "blur focus focusin focusout resize scroll click dblclick " + + "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " + + "change select submit keydown keypress keyup contextmenu" ).split( " " ), + function( i, name ) { + + // Handle event binding + jQuery.fn[ name ] = function( data, fn ) { + return arguments.length > 0 ? + this.on( name, null, data, fn ) : + this.trigger( name ); + }; +} ); + +jQuery.fn.extend( { + hover: function( fnOver, fnOut ) { + return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver ); + } +} ); + + + + +support.focusin = "onfocusin" in window; + + +// Support: Firefox <=44 +// Firefox doesn't have focus(in | out) events +// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787 +// +// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1 +// focus(in | out) events fire after focus & blur events, +// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order +// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857 +if ( !support.focusin ) { + jQuery.each( { focus: "focusin", blur: "focusout" }, function( orig, fix ) { + + // Attach a single capturing handler on the document while someone wants focusin/focusout + var handler = function( event ) { + jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) ); + }; + + jQuery.event.special[ fix ] = { + setup: function() { + var doc = this.ownerDocument || this, + attaches = dataPriv.access( doc, fix ); + + if ( !attaches ) { + doc.addEventListener( orig, handler, true ); + } + dataPriv.access( doc, fix, ( attaches || 0 ) + 1 ); + }, + teardown: function() { + var doc = this.ownerDocument || this, + attaches = dataPriv.access( doc, fix ) - 1; + + if ( !attaches ) { + doc.removeEventListener( orig, handler, true ); + dataPriv.remove( doc, fix ); + + } else { + dataPriv.access( doc, fix, attaches ); + } + } + }; + } ); +} +var location = window.location; + +var nonce = jQuery.now(); + +var rquery = ( /\?/ ); + + + +// Cross-browser xml parsing +jQuery.parseXML = function( data ) { + var xml; + if ( !data || typeof data !== "string" ) { + return null; + } + + // Support: IE 9 - 11 only + // IE throws on parseFromString with invalid input. + try { + xml = ( new window.DOMParser() ).parseFromString( data, "text/xml" ); + } catch ( e ) { + xml = undefined; + } + + if ( !xml || xml.getElementsByTagName( "parsererror" ).length ) { + jQuery.error( "Invalid XML: " + data ); + } + return xml; +}; + + +var + rbracket = /\[\]$/, + rCRLF = /\r?\n/g, + rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i, + rsubmittable = /^(?:input|select|textarea|keygen)/i; + +function buildParams( prefix, obj, traditional, add ) { + var name; + + if ( Array.isArray( obj ) ) { + + // Serialize array item. + jQuery.each( obj, function( i, v ) { + if ( traditional || rbracket.test( prefix ) ) { + + // Treat each array item as a scalar. + add( prefix, v ); + + } else { + + // Item is non-scalar (array or object), encode its numeric index. + buildParams( + prefix + "[" + ( typeof v === "object" && v != null ? i : "" ) + "]", + v, + traditional, + add + ); + } + } ); + + } else if ( !traditional && jQuery.type( obj ) === "object" ) { + + // Serialize object item. + for ( name in obj ) { + buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add ); + } + + } else { + + // Serialize scalar item. + add( prefix, obj ); + } +} + +// Serialize an array of form elements or a set of +// key/values into a query string +jQuery.param = function( a, traditional ) { + var prefix, + s = [], + add = function( key, valueOrFunction ) { + + // If value is a function, invoke it and use its return value + var value = jQuery.isFunction( valueOrFunction ) ? + valueOrFunction() : + valueOrFunction; + + s[ s.length ] = encodeURIComponent( key ) + "=" + + encodeURIComponent( value == null ? "" : value ); + }; + + // If an array was passed in, assume that it is an array of form elements. + if ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) { + + // Serialize the form elements + jQuery.each( a, function() { + add( this.name, this.value ); + } ); + + } else { + + // If traditional, encode the "old" way (the way 1.3.2 or older + // did it), otherwise encode params recursively. + for ( prefix in a ) { + buildParams( prefix, a[ prefix ], traditional, add ); + } + } + + // Return the resulting serialization + return s.join( "&" ); +}; + +jQuery.fn.extend( { + serialize: function() { + return jQuery.param( this.serializeArray() ); + }, + serializeArray: function() { + return this.map( function() { + + // Can add propHook for "elements" to filter or add form elements + var elements = jQuery.prop( this, "elements" ); + return elements ? jQuery.makeArray( elements ) : this; + } ) + .filter( function() { + var type = this.type; + + // Use .is( ":disabled" ) so that fieldset[disabled] works + return this.name && !jQuery( this ).is( ":disabled" ) && + rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) && + ( this.checked || !rcheckableType.test( type ) ); + } ) + .map( function( i, elem ) { + var val = jQuery( this ).val(); + + if ( val == null ) { + return null; + } + + if ( Array.isArray( val ) ) { + return jQuery.map( val, function( val ) { + return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; + } ); + } + + return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; + } ).get(); + } +} ); + + +var + r20 = /%20/g, + rhash = /#.*$/, + rantiCache = /([?&])_=[^&]*/, + rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg, + + // #7653, #8125, #8152: local protocol detection + rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/, + rnoContent = /^(?:GET|HEAD)$/, + rprotocol = /^\/\//, + + /* Prefilters + * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example) + * 2) These are called: + * - BEFORE asking for a transport + * - AFTER param serialization (s.data is a string if s.processData is true) + * 3) key is the dataType + * 4) the catchall symbol "*" can be used + * 5) execution will start with transport dataType and THEN continue down to "*" if needed + */ + prefilters = {}, + + /* Transports bindings + * 1) key is the dataType + * 2) the catchall symbol "*" can be used + * 3) selection will start with transport dataType and THEN go to "*" if needed + */ + transports = {}, + + // Avoid comment-prolog char sequence (#10098); must appease lint and evade compression + allTypes = "*/".concat( "*" ), + + // Anchor tag for parsing the document origin + originAnchor = document.createElement( "a" ); + originAnchor.href = location.href; + +// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport +function addToPrefiltersOrTransports( structure ) { + + // dataTypeExpression is optional and defaults to "*" + return function( dataTypeExpression, func ) { + + if ( typeof dataTypeExpression !== "string" ) { + func = dataTypeExpression; + dataTypeExpression = "*"; + } + + var dataType, + i = 0, + dataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || []; + + if ( jQuery.isFunction( func ) ) { + + // For each dataType in the dataTypeExpression + while ( ( dataType = dataTypes[ i++ ] ) ) { + + // Prepend if requested + if ( dataType[ 0 ] === "+" ) { + dataType = dataType.slice( 1 ) || "*"; + ( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func ); + + // Otherwise append + } else { + ( structure[ dataType ] = structure[ dataType ] || [] ).push( func ); + } + } + } + }; +} + +// Base inspection function for prefilters and transports +function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) { + + var inspected = {}, + seekingTransport = ( structure === transports ); + + function inspect( dataType ) { + var selected; + inspected[ dataType ] = true; + jQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) { + var dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR ); + if ( typeof dataTypeOrTransport === "string" && + !seekingTransport && !inspected[ dataTypeOrTransport ] ) { + + options.dataTypes.unshift( dataTypeOrTransport ); + inspect( dataTypeOrTransport ); + return false; + } else if ( seekingTransport ) { + return !( selected = dataTypeOrTransport ); + } + } ); + return selected; + } + + return inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" ); +} + +// A special extend for ajax options +// that takes "flat" options (not to be deep extended) +// Fixes #9887 +function ajaxExtend( target, src ) { + var key, deep, + flatOptions = jQuery.ajaxSettings.flatOptions || {}; + + for ( key in src ) { + if ( src[ key ] !== undefined ) { + ( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ]; + } + } + if ( deep ) { + jQuery.extend( true, target, deep ); + } + + return target; +} + +/* Handles responses to an ajax request: + * - finds the right dataType (mediates between content-type and expected dataType) + * - returns the corresponding response + */ +function ajaxHandleResponses( s, jqXHR, responses ) { + + var ct, type, finalDataType, firstDataType, + contents = s.contents, + dataTypes = s.dataTypes; + + // Remove auto dataType and get content-type in the process + while ( dataTypes[ 0 ] === "*" ) { + dataTypes.shift(); + if ( ct === undefined ) { + ct = s.mimeType || jqXHR.getResponseHeader( "Content-Type" ); + } + } + + // Check if we're dealing with a known content-type + if ( ct ) { + for ( type in contents ) { + if ( contents[ type ] && contents[ type ].test( ct ) ) { + dataTypes.unshift( type ); + break; + } + } + } + + // Check to see if we have a response for the expected dataType + if ( dataTypes[ 0 ] in responses ) { + finalDataType = dataTypes[ 0 ]; + } else { + + // Try convertible dataTypes + for ( type in responses ) { + if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[ 0 ] ] ) { + finalDataType = type; + break; + } + if ( !firstDataType ) { + firstDataType = type; + } + } + + // Or just use first one + finalDataType = finalDataType || firstDataType; + } + + // If we found a dataType + // We add the dataType to the list if needed + // and return the corresponding response + if ( finalDataType ) { + if ( finalDataType !== dataTypes[ 0 ] ) { + dataTypes.unshift( finalDataType ); + } + return responses[ finalDataType ]; + } +} + +/* Chain conversions given the request and the original response + * Also sets the responseXXX fields on the jqXHR instance + */ +function ajaxConvert( s, response, jqXHR, isSuccess ) { + var conv2, current, conv, tmp, prev, + converters = {}, + + // Work with a copy of dataTypes in case we need to modify it for conversion + dataTypes = s.dataTypes.slice(); + + // Create converters map with lowercased keys + if ( dataTypes[ 1 ] ) { + for ( conv in s.converters ) { + converters[ conv.toLowerCase() ] = s.converters[ conv ]; + } + } + + current = dataTypes.shift(); + + // Convert to each sequential dataType + while ( current ) { + + if ( s.responseFields[ current ] ) { + jqXHR[ s.responseFields[ current ] ] = response; + } + + // Apply the dataFilter if provided + if ( !prev && isSuccess && s.dataFilter ) { + response = s.dataFilter( response, s.dataType ); + } + + prev = current; + current = dataTypes.shift(); + + if ( current ) { + + // There's only work to do if current dataType is non-auto + if ( current === "*" ) { + + current = prev; + + // Convert response if prev dataType is non-auto and differs from current + } else if ( prev !== "*" && prev !== current ) { + + // Seek a direct converter + conv = converters[ prev + " " + current ] || converters[ "* " + current ]; + + // If none found, seek a pair + if ( !conv ) { + for ( conv2 in converters ) { + + // If conv2 outputs current + tmp = conv2.split( " " ); + if ( tmp[ 1 ] === current ) { + + // If prev can be converted to accepted input + conv = converters[ prev + " " + tmp[ 0 ] ] || + converters[ "* " + tmp[ 0 ] ]; + if ( conv ) { + + // Condense equivalence converters + if ( conv === true ) { + conv = converters[ conv2 ]; + + // Otherwise, insert the intermediate dataType + } else if ( converters[ conv2 ] !== true ) { + current = tmp[ 0 ]; + dataTypes.unshift( tmp[ 1 ] ); + } + break; + } + } + } + } + + // Apply converter (if not an equivalence) + if ( conv !== true ) { + + // Unless errors are allowed to bubble, catch and return them + if ( conv && s.throws ) { + response = conv( response ); + } else { + try { + response = conv( response ); + } catch ( e ) { + return { + state: "parsererror", + error: conv ? e : "No conversion from " + prev + " to " + current + }; + } + } + } + } + } + } + + return { state: "success", data: response }; +} + +jQuery.extend( { + + // Counter for holding the number of active queries + active: 0, + + // Last-Modified header cache for next request + lastModified: {}, + etag: {}, + + ajaxSettings: { + url: location.href, + type: "GET", + isLocal: rlocalProtocol.test( location.protocol ), + global: true, + processData: true, + async: true, + contentType: "application/x-www-form-urlencoded; charset=UTF-8", + + /* + timeout: 0, + data: null, + dataType: null, + username: null, + password: null, + cache: null, + throws: false, + traditional: false, + headers: {}, + */ + + accepts: { + "*": allTypes, + text: "text/plain", + html: "text/html", + xml: "application/xml, text/xml", + json: "application/json, text/javascript" + }, + + contents: { + xml: /\bxml\b/, + html: /\bhtml/, + json: /\bjson\b/ + }, + + responseFields: { + xml: "responseXML", + text: "responseText", + json: "responseJSON" + }, + + // Data converters + // Keys separate source (or catchall "*") and destination types with a single space + converters: { + + // Convert anything to text + "* text": String, + + // Text to html (true = no transformation) + "text html": true, + + // Evaluate text as a json expression + "text json": JSON.parse, + + // Parse text as xml + "text xml": jQuery.parseXML + }, + + // For options that shouldn't be deep extended: + // you can add your own custom options here if + // and when you create one that shouldn't be + // deep extended (see ajaxExtend) + flatOptions: { + url: true, + context: true + } + }, + + // Creates a full fledged settings object into target + // with both ajaxSettings and settings fields. + // If target is omitted, writes into ajaxSettings. + ajaxSetup: function( target, settings ) { + return settings ? + + // Building a settings object + ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) : + + // Extending ajaxSettings + ajaxExtend( jQuery.ajaxSettings, target ); + }, + + ajaxPrefilter: addToPrefiltersOrTransports( prefilters ), + ajaxTransport: addToPrefiltersOrTransports( transports ), + + // Main method + ajax: function( url, options ) { + + // If url is an object, simulate pre-1.5 signature + if ( typeof url === "object" ) { + options = url; + url = undefined; + } + + // Force options to be an object + options = options || {}; + + var transport, + + // URL without anti-cache param + cacheURL, + + // Response headers + responseHeadersString, + responseHeaders, + + // timeout handle + timeoutTimer, + + // Url cleanup var + urlAnchor, + + // Request state (becomes false upon send and true upon completion) + completed, + + // To know if global events are to be dispatched + fireGlobals, + + // Loop variable + i, + + // uncached part of the url + uncached, + + // Create the final options object + s = jQuery.ajaxSetup( {}, options ), + + // Callbacks context + callbackContext = s.context || s, + + // Context for global events is callbackContext if it is a DOM node or jQuery collection + globalEventContext = s.context && + ( callbackContext.nodeType || callbackContext.jquery ) ? + jQuery( callbackContext ) : + jQuery.event, + + // Deferreds + deferred = jQuery.Deferred(), + completeDeferred = jQuery.Callbacks( "once memory" ), + + // Status-dependent callbacks + statusCode = s.statusCode || {}, + + // Headers (they are sent all at once) + requestHeaders = {}, + requestHeadersNames = {}, + + // Default abort message + strAbort = "canceled", + + // Fake xhr + jqXHR = { + readyState: 0, + + // Builds headers hashtable if needed + getResponseHeader: function( key ) { + var match; + if ( completed ) { + if ( !responseHeaders ) { + responseHeaders = {}; + while ( ( match = rheaders.exec( responseHeadersString ) ) ) { + responseHeaders[ match[ 1 ].toLowerCase() ] = match[ 2 ]; + } + } + match = responseHeaders[ key.toLowerCase() ]; + } + return match == null ? null : match; + }, + + // Raw string + getAllResponseHeaders: function() { + return completed ? responseHeadersString : null; + }, + + // Caches the header + setRequestHeader: function( name, value ) { + if ( completed == null ) { + name = requestHeadersNames[ name.toLowerCase() ] = + requestHeadersNames[ name.toLowerCase() ] || name; + requestHeaders[ name ] = value; + } + return this; + }, + + // Overrides response content-type header + overrideMimeType: function( type ) { + if ( completed == null ) { + s.mimeType = type; + } + return this; + }, + + // Status-dependent callbacks + statusCode: function( map ) { + var code; + if ( map ) { + if ( completed ) { + + // Execute the appropriate callbacks + jqXHR.always( map[ jqXHR.status ] ); + } else { + + // Lazy-add the new callbacks in a way that preserves old ones + for ( code in map ) { + statusCode[ code ] = [ statusCode[ code ], map[ code ] ]; + } + } + } + return this; + }, + + // Cancel the request + abort: function( statusText ) { + var finalText = statusText || strAbort; + if ( transport ) { + transport.abort( finalText ); + } + done( 0, finalText ); + return this; + } + }; + + // Attach deferreds + deferred.promise( jqXHR ); + + // Add protocol if not provided (prefilters might expect it) + // Handle falsy url in the settings object (#10093: consistency with old signature) + // We also use the url parameter if available + s.url = ( ( url || s.url || location.href ) + "" ) + .replace( rprotocol, location.protocol + "//" ); + + // Alias method option to type as per ticket #12004 + s.type = options.method || options.type || s.method || s.type; + + // Extract dataTypes list + s.dataTypes = ( s.dataType || "*" ).toLowerCase().match( rnothtmlwhite ) || [ "" ]; + + // A cross-domain request is in order when the origin doesn't match the current origin. + if ( s.crossDomain == null ) { + urlAnchor = document.createElement( "a" ); + + // Support: IE <=8 - 11, Edge 12 - 13 + // IE throws exception on accessing the href property if url is malformed, + // e.g. http://example.com:80x/ + try { + urlAnchor.href = s.url; + + // Support: IE <=8 - 11 only + // Anchor's host property isn't correctly set when s.url is relative + urlAnchor.href = urlAnchor.href; + s.crossDomain = originAnchor.protocol + "//" + originAnchor.host !== + urlAnchor.protocol + "//" + urlAnchor.host; + } catch ( e ) { + + // If there is an error parsing the URL, assume it is crossDomain, + // it can be rejected by the transport if it is invalid + s.crossDomain = true; + } + } + + // Convert data if not already a string + if ( s.data && s.processData && typeof s.data !== "string" ) { + s.data = jQuery.param( s.data, s.traditional ); + } + + // Apply prefilters + inspectPrefiltersOrTransports( prefilters, s, options, jqXHR ); + + // If request was aborted inside a prefilter, stop there + if ( completed ) { + return jqXHR; + } + + // We can fire global events as of now if asked to + // Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118) + fireGlobals = jQuery.event && s.global; + + // Watch for a new set of requests + if ( fireGlobals && jQuery.active++ === 0 ) { + jQuery.event.trigger( "ajaxStart" ); + } + + // Uppercase the type + s.type = s.type.toUpperCase(); + + // Determine if request has content + s.hasContent = !rnoContent.test( s.type ); + + // Save the URL in case we're toying with the If-Modified-Since + // and/or If-None-Match header later on + // Remove hash to simplify url manipulation + cacheURL = s.url.replace( rhash, "" ); + + // More options handling for requests with no content + if ( !s.hasContent ) { + + // Remember the hash so we can put it back + uncached = s.url.slice( cacheURL.length ); + + // If data is available, append data to url + if ( s.data ) { + cacheURL += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data; + + // #9682: remove data so that it's not used in an eventual retry + delete s.data; + } + + // Add or update anti-cache param if needed + if ( s.cache === false ) { + cacheURL = cacheURL.replace( rantiCache, "$1" ); + uncached = ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + ( nonce++ ) + uncached; + } + + // Put hash and anti-cache on the URL that will be requested (gh-1732) + s.url = cacheURL + uncached; + + // Change '%20' to '+' if this is encoded form body content (gh-2658) + } else if ( s.data && s.processData && + ( s.contentType || "" ).indexOf( "application/x-www-form-urlencoded" ) === 0 ) { + s.data = s.data.replace( r20, "+" ); + } + + // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. + if ( s.ifModified ) { + if ( jQuery.lastModified[ cacheURL ] ) { + jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] ); + } + if ( jQuery.etag[ cacheURL ] ) { + jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] ); + } + } + + // Set the correct header, if data is being sent + if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) { + jqXHR.setRequestHeader( "Content-Type", s.contentType ); + } + + // Set the Accepts header for the server, depending on the dataType + jqXHR.setRequestHeader( + "Accept", + s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ? + s.accepts[ s.dataTypes[ 0 ] ] + + ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) : + s.accepts[ "*" ] + ); + + // Check for headers option + for ( i in s.headers ) { + jqXHR.setRequestHeader( i, s.headers[ i ] ); + } + + // Allow custom headers/mimetypes and early abort + if ( s.beforeSend && + ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) { + + // Abort if not done already and return + return jqXHR.abort(); + } + + // Aborting is no longer a cancellation + strAbort = "abort"; + + // Install callbacks on deferreds + completeDeferred.add( s.complete ); + jqXHR.done( s.success ); + jqXHR.fail( s.error ); + + // Get transport + transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR ); + + // If no transport, we auto-abort + if ( !transport ) { + done( -1, "No Transport" ); + } else { + jqXHR.readyState = 1; + + // Send global event + if ( fireGlobals ) { + globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] ); + } + + // If request was aborted inside ajaxSend, stop there + if ( completed ) { + return jqXHR; + } + + // Timeout + if ( s.async && s.timeout > 0 ) { + timeoutTimer = window.setTimeout( function() { + jqXHR.abort( "timeout" ); + }, s.timeout ); + } + + try { + completed = false; + transport.send( requestHeaders, done ); + } catch ( e ) { + + // Rethrow post-completion exceptions + if ( completed ) { + throw e; + } + + // Propagate others as results + done( -1, e ); + } + } + + // Callback for when everything is done + function done( status, nativeStatusText, responses, headers ) { + var isSuccess, success, error, response, modified, + statusText = nativeStatusText; + + // Ignore repeat invocations + if ( completed ) { + return; + } + + completed = true; + + // Clear timeout if it exists + if ( timeoutTimer ) { + window.clearTimeout( timeoutTimer ); + } + + // Dereference transport for early garbage collection + // (no matter how long the jqXHR object will be used) + transport = undefined; + + // Cache response headers + responseHeadersString = headers || ""; + + // Set readyState + jqXHR.readyState = status > 0 ? 4 : 0; + + // Determine if successful + isSuccess = status >= 200 && status < 300 || status === 304; + + // Get response data + if ( responses ) { + response = ajaxHandleResponses( s, jqXHR, responses ); + } + + // Convert no matter what (that way responseXXX fields are always set) + response = ajaxConvert( s, response, jqXHR, isSuccess ); + + // If successful, handle type chaining + if ( isSuccess ) { + + // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. + if ( s.ifModified ) { + modified = jqXHR.getResponseHeader( "Last-Modified" ); + if ( modified ) { + jQuery.lastModified[ cacheURL ] = modified; + } + modified = jqXHR.getResponseHeader( "etag" ); + if ( modified ) { + jQuery.etag[ cacheURL ] = modified; + } + } + + // if no content + if ( status === 204 || s.type === "HEAD" ) { + statusText = "nocontent"; + + // if not modified + } else if ( status === 304 ) { + statusText = "notmodified"; + + // If we have data, let's convert it + } else { + statusText = response.state; + success = response.data; + error = response.error; + isSuccess = !error; + } + } else { + + // Extract error from statusText and normalize for non-aborts + error = statusText; + if ( status || !statusText ) { + statusText = "error"; + if ( status < 0 ) { + status = 0; + } + } + } + + // Set data for the fake xhr object + jqXHR.status = status; + jqXHR.statusText = ( nativeStatusText || statusText ) + ""; + + // Success/Error + if ( isSuccess ) { + deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] ); + } else { + deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] ); + } + + // Status-dependent callbacks + jqXHR.statusCode( statusCode ); + statusCode = undefined; + + if ( fireGlobals ) { + globalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError", + [ jqXHR, s, isSuccess ? success : error ] ); + } + + // Complete + completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] ); + + if ( fireGlobals ) { + globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] ); + + // Handle the global AJAX counter + if ( !( --jQuery.active ) ) { + jQuery.event.trigger( "ajaxStop" ); + } + } + } + + return jqXHR; + }, + + getJSON: function( url, data, callback ) { + return jQuery.get( url, data, callback, "json" ); + }, + + getScript: function( url, callback ) { + return jQuery.get( url, undefined, callback, "script" ); + } +} ); + +jQuery.each( [ "get", "post" ], function( i, method ) { + jQuery[ method ] = function( url, data, callback, type ) { + + // Shift arguments if data argument was omitted + if ( jQuery.isFunction( data ) ) { + type = type || callback; + callback = data; + data = undefined; + } + + // The url can be an options object (which then must have .url) + return jQuery.ajax( jQuery.extend( { + url: url, + type: method, + dataType: type, + data: data, + success: callback + }, jQuery.isPlainObject( url ) && url ) ); + }; +} ); + + +jQuery._evalUrl = function( url ) { + return jQuery.ajax( { + url: url, + + // Make this explicit, since user can override this through ajaxSetup (#11264) + type: "GET", + dataType: "script", + cache: true, + async: false, + global: false, + "throws": true + } ); +}; + + +jQuery.fn.extend( { + wrapAll: function( html ) { + var wrap; + + if ( this[ 0 ] ) { + if ( jQuery.isFunction( html ) ) { + html = html.call( this[ 0 ] ); + } + + // The elements to wrap the target around + wrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true ); + + if ( this[ 0 ].parentNode ) { + wrap.insertBefore( this[ 0 ] ); + } + + wrap.map( function() { + var elem = this; + + while ( elem.firstElementChild ) { + elem = elem.firstElementChild; + } + + return elem; + } ).append( this ); + } + + return this; + }, + + wrapInner: function( html ) { + if ( jQuery.isFunction( html ) ) { + return this.each( function( i ) { + jQuery( this ).wrapInner( html.call( this, i ) ); + } ); + } + + return this.each( function() { + var self = jQuery( this ), + contents = self.contents(); + + if ( contents.length ) { + contents.wrapAll( html ); + + } else { + self.append( html ); + } + } ); + }, + + wrap: function( html ) { + var isFunction = jQuery.isFunction( html ); + + return this.each( function( i ) { + jQuery( this ).wrapAll( isFunction ? html.call( this, i ) : html ); + } ); + }, + + unwrap: function( selector ) { + this.parent( selector ).not( "body" ).each( function() { + jQuery( this ).replaceWith( this.childNodes ); + } ); + return this; + } +} ); + + +jQuery.expr.pseudos.hidden = function( elem ) { + return !jQuery.expr.pseudos.visible( elem ); +}; +jQuery.expr.pseudos.visible = function( elem ) { + return !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length ); +}; + + + + +jQuery.ajaxSettings.xhr = function() { + try { + return new window.XMLHttpRequest(); + } catch ( e ) {} +}; + +var xhrSuccessStatus = { + + // File protocol always yields status code 0, assume 200 + 0: 200, + + // Support: IE <=9 only + // #1450: sometimes IE returns 1223 when it should be 204 + 1223: 204 + }, + xhrSupported = jQuery.ajaxSettings.xhr(); + +support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported ); +support.ajax = xhrSupported = !!xhrSupported; + +jQuery.ajaxTransport( function( options ) { + var callback, errorCallback; + + // Cross domain only allowed if supported through XMLHttpRequest + if ( support.cors || xhrSupported && !options.crossDomain ) { + return { + send: function( headers, complete ) { + var i, + xhr = options.xhr(); + + xhr.open( + options.type, + options.url, + options.async, + options.username, + options.password + ); + + // Apply custom fields if provided + if ( options.xhrFields ) { + for ( i in options.xhrFields ) { + xhr[ i ] = options.xhrFields[ i ]; + } + } + + // Override mime type if needed + if ( options.mimeType && xhr.overrideMimeType ) { + xhr.overrideMimeType( options.mimeType ); + } + + // X-Requested-With header + // For cross-domain requests, seeing as conditions for a preflight are + // akin to a jigsaw puzzle, we simply never set it to be sure. + // (it can always be set on a per-request basis or even using ajaxSetup) + // For same-domain requests, won't change header if already provided. + if ( !options.crossDomain && !headers[ "X-Requested-With" ] ) { + headers[ "X-Requested-With" ] = "XMLHttpRequest"; + } + + // Set headers + for ( i in headers ) { + xhr.setRequestHeader( i, headers[ i ] ); + } + + // Callback + callback = function( type ) { + return function() { + if ( callback ) { + callback = errorCallback = xhr.onload = + xhr.onerror = xhr.onabort = xhr.onreadystatechange = null; + + if ( type === "abort" ) { + xhr.abort(); + } else if ( type === "error" ) { + + // Support: IE <=9 only + // On a manual native abort, IE9 throws + // errors on any property access that is not readyState + if ( typeof xhr.status !== "number" ) { + complete( 0, "error" ); + } else { + complete( + + // File: protocol always yields status 0; see #8605, #14207 + xhr.status, + xhr.statusText + ); + } + } else { + complete( + xhrSuccessStatus[ xhr.status ] || xhr.status, + xhr.statusText, + + // Support: IE <=9 only + // IE9 has no XHR2 but throws on binary (trac-11426) + // For XHR2 non-text, let the caller handle it (gh-2498) + ( xhr.responseType || "text" ) !== "text" || + typeof xhr.responseText !== "string" ? + { binary: xhr.response } : + { text: xhr.responseText }, + xhr.getAllResponseHeaders() + ); + } + } + }; + }; + + // Listen to events + xhr.onload = callback(); + errorCallback = xhr.onerror = callback( "error" ); + + // Support: IE 9 only + // Use onreadystatechange to replace onabort + // to handle uncaught aborts + if ( xhr.onabort !== undefined ) { + xhr.onabort = errorCallback; + } else { + xhr.onreadystatechange = function() { + + // Check readyState before timeout as it changes + if ( xhr.readyState === 4 ) { + + // Allow onerror to be called first, + // but that will not handle a native abort + // Also, save errorCallback to a variable + // as xhr.onerror cannot be accessed + window.setTimeout( function() { + if ( callback ) { + errorCallback(); + } + } ); + } + }; + } + + // Create the abort callback + callback = callback( "abort" ); + + try { + + // Do send the request (this may raise an exception) + xhr.send( options.hasContent && options.data || null ); + } catch ( e ) { + + // #14683: Only rethrow if this hasn't been notified as an error yet + if ( callback ) { + throw e; + } + } + }, + + abort: function() { + if ( callback ) { + callback(); + } + } + }; + } +} ); + + + + +// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432) +jQuery.ajaxPrefilter( function( s ) { + if ( s.crossDomain ) { + s.contents.script = false; + } +} ); + +// Install script dataType +jQuery.ajaxSetup( { + accepts: { + script: "text/javascript, application/javascript, " + + "application/ecmascript, application/x-ecmascript" + }, + contents: { + script: /\b(?:java|ecma)script\b/ + }, + converters: { + "text script": function( text ) { + jQuery.globalEval( text ); + return text; + } + } +} ); + +// Handle cache's special case and crossDomain +jQuery.ajaxPrefilter( "script", function( s ) { + if ( s.cache === undefined ) { + s.cache = false; + } + if ( s.crossDomain ) { + s.type = "GET"; + } +} ); + +// Bind script tag hack transport +jQuery.ajaxTransport( "script", function( s ) { + + // This transport only deals with cross domain requests + if ( s.crossDomain ) { + var script, callback; + return { + send: function( _, complete ) { + script = jQuery( " + + + + + + +
    + + + + +
    + + + + + +
    + +
    + + + + + + + + + + + + + + + + + +
    + + + + +
    +
    +
    +
    + +
    +

    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

    +
    +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 detsGround stateExcited stateExcitation (eV)
    7-149.489 186-149.207 3547.67
    123-149.536 265-149.261 8607.47
    3 083-149.685 606-149.404 4507.65
    29 409-149.826 151-149.547 2757.59
    168 595-149.900 352-149.626 0587.46
    1 322 537-149.946 655-149.675 0327.39
    8 495 334-149.972 032-149.704 1457.29
    9 356 952-149.973 375-149.706 8227.25
    42 779 636-149.987 370-149.721 4707.24
    186 978 487-149.998 582-149.733 0397.23
    +
    +
    +

    Variational energy + PT2 correction

    + ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Number of detsGround stateExcited stateExcitation (eV)
    7-150.161 107-149.904 8836.97
    123-150.116 958-149.849 4657.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.

    +
    +Parallel speedup of Davidson's diagonalization. +

    Parallel speedup of Davidson’s diagonalization measured on Olympe and Irene.

    +
    +
    +

    Olympe

    + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Number of 36-core Nodes9 356 952 determinants42 959 496 determinants
    1775.5511 198.70
    5169.882 288.58
    1093.221 213.95
    2056.86626.41
    3043.76445.65
    4036.18350.25
    5033.67295.25
    +
    +
    +

    Irene

    + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Number of 48-core Nodes9 356 952 determinants42 959 496 determinants
    1572.989 154.30 *
    1072.55922.07
    2538.88412.34
    5027.95241.35
    7527.54183.63
    10027.86165.68
    15028.14134.05
    20027.77134.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.

    +
    +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 NodesGround state (9.3M)Excited state (9.3M)
    17 883.749 829.19
    51 629.062 022.36
    10832.891 029.91
    20440.76537.37
    30303.31378.69
    40246.12296.31
    50201.84241.55
    +
    +
    +

    Irene

    + +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Number of 48-core NodesGround state (9.3M)Excited state (9.3M)Ground state (42.9M)Excited state (42.9M)
    14 935.816 152.2924 586.6237 440.59
    10525.95652.232 458.663 086.19
    25237.47286.061 041.691 295.43
    50144.39174.12588.35724.25
    75109.13129.17446.74537.59
    100100.75103.43367.21450.32
    15082.0491.77298.63358.25
    20075.6285.25268.96312.23
    +
    +
    +
    + + +
    + +
    + + +
    +
    + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/doc/appendix/contributors.html b/doc/appendix/contributors.html new file mode 100644 index 00000000..9662de95 --- /dev/null +++ b/doc/appendix/contributors.html @@ -0,0 +1,285 @@ + + + + + + + + + + + Contributors — Quantum Package 2.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + +
    + + + + + +
    + +
    + + + + + + + + + + + + + + + + + +
    + + + + +
    +
    +
    +
    + +
    +

    Contributors

    +

    The Quantum Package is maintained by

    +
    +
    Anthony Scemama
    +
    + +
    CNRS - Université Paul Sabatier
    +
    Toulouse, France
    + +
    +
    +
    Emmanuel Giner
    +
    + +
    CNRS - Sorbonne Université
    +
    Paris, France
    + +
    +
    +
    Thomas Applencourt
    +
    +
    +
    +

    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.

    +
    + + +
    + +
    + + +
    +
    + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/doc/appendix/license.html b/doc/appendix/license.html new file mode 100644 index 00000000..83258ccc --- /dev/null +++ b/doc/appendix/license.html @@ -0,0 +1,584 @@ + + + + + + + + + + + License — Quantum Package 2.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + +
    + + + + + +
    + +
    + + + + + + + + + + + + + + + + + +
    + + + + +
    +
    +
    +
    + +
    +

    License

    +
                        GNU GENERAL PUBLIC LICENSE
    +                       Version 2, June 1991
    +
    + Copyright (C) 1989, 1991 Free Software Foundation, Inc., <http://fsf.org/>
    + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
    + Everyone is permitted to copy and distribute verbatim copies
    + of this license document, but changing it is not allowed.
    +
    +                            Preamble
    +
    +  The licenses for most software are designed to take away your
    +freedom to share and change it.  By contrast, the GNU General Public
    +License is intended to guarantee your freedom to share and change free
    +software--to make sure the software is free for all its users.  This
    +General Public License applies to most of the Free Software
    +Foundation's software and to any other program whose authors commit to
    +using it.  (Some other Free Software Foundation software is covered by
    +the GNU Lesser General Public License instead.)  You can apply it to
    +your programs, too.
    +
    +  When we speak of free software, we are referring to freedom, not
    +price.  Our General Public Licenses are designed to make sure that you
    +have the freedom to distribute copies of free software (and charge for
    +this service if you wish), that you receive source code or can get it
    +if you want it, that you can change the software or use pieces of it
    +in new free programs; and that you know you can do these things.
    +
    +  To protect your rights, we need to make restrictions that forbid
    +anyone to deny you these rights or to ask you to surrender the rights.
    +These restrictions translate to certain responsibilities for you if you
    +distribute copies of the software, or if you modify it.
    +
    +  For example, if you distribute copies of such a program, whether
    +gratis or for a fee, you must give the recipients all the rights that
    +you have.  You must make sure that they, too, receive or can get the
    +source code.  And you must show them these terms so they know their
    +rights.
    +
    +  We protect your rights with two steps: (1) copyright the software, and
    +(2) offer you this license which gives you legal permission to copy,
    +distribute and/or modify the software.
    +
    +  Also, for each author's protection and ours, we want to make certain
    +that everyone understands that there is no warranty for this free
    +software.  If the software is modified by someone else and passed on, we
    +want its recipients to know that what they have is not the original, so
    +that any problems introduced by others will not reflect on the original
    +authors' reputations.
    +
    +  Finally, any free program is threatened constantly by software
    +patents.  We wish to avoid the danger that redistributors of a free
    +program will individually obtain patent licenses, in effect making the
    +program proprietary.  To prevent this, we have made it clear that any
    +patent must be licensed for everyone's free use or not licensed at all.
    +
    +  The precise terms and conditions for copying, distribution and
    +modification follow.
    +
    +                    GNU GENERAL PUBLIC LICENSE
    +   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
    +
    +  0. This License applies to any program or other work which contains
    +a notice placed by the copyright holder saying it may be distributed
    +under the terms of this General Public License.  The "Program", below,
    +refers to any such program or work, and a "work based on the Program"
    +means either the Program or any derivative work under copyright law:
    +that is to say, a work containing the Program or a portion of it,
    +either verbatim or with modifications and/or translated into another
    +language.  (Hereinafter, translation is included without limitation in
    +the term "modification".)  Each licensee is addressed as "you".
    +
    +Activities other than copying, distribution and modification are not
    +covered by this License; they are outside its scope.  The act of
    +running the Program is not restricted, and the output from the Program
    +is covered only if its contents constitute a work based on the
    +Program (independent of having been made by running the Program).
    +Whether that is true depends on what the Program does.
    +
    +  1. You may copy and distribute verbatim copies of the Program's
    +source code as you receive it, in any medium, provided that you
    +conspicuously and appropriately publish on each copy an appropriate
    +copyright notice and disclaimer of warranty; keep intact all the
    +notices that refer to this License and to the absence of any warranty;
    +and give any other recipients of the Program a copy of this License
    +along with the Program.
    +
    +You may charge a fee for the physical act of transferring a copy, and
    +you may at your option offer warranty protection in exchange for a fee.
    +
    +  2. You may modify your copy or copies of the Program or any portion
    +of it, thus forming a work based on the Program, and copy and
    +distribute such modifications or work under the terms of Section 1
    +above, provided that you also meet all of these conditions:
    +
    +    a) You must cause the modified files to carry prominent notices
    +    stating that you changed the files and the date of any change.
    +
    +    b) You must cause any work that you distribute or publish, that in
    +    whole or in part contains or is derived from the Program or any
    +    part thereof, to be licensed as a whole at no charge to all third
    +    parties under the terms of this License.
    +
    +    c) If the modified program normally reads commands interactively
    +    when run, you must cause it, when started running for such
    +    interactive use in the most ordinary way, to print or display an
    +    announcement including an appropriate copyright notice and a
    +    notice that there is no warranty (or else, saying that you provide
    +    a warranty) and that users may redistribute the program under
    +    these conditions, and telling the user how to view a copy of this
    +    License.  (Exception: if the Program itself is interactive but
    +    does not normally print such an announcement, your work based on
    +    the Program is not required to print an announcement.)
    +
    +These requirements apply to the modified work as a whole.  If
    +identifiable sections of that work are not derived from the Program,
    +and can be reasonably considered independent and separate works in
    +themselves, then this License, and its terms, do not apply to those
    +sections when you distribute them as separate works.  But when you
    +distribute the same sections as part of a whole which is a work based
    +on the Program, the distribution of the whole must be on the terms of
    +this License, whose permissions for other licensees extend to the
    +entire whole, and thus to each and every part regardless of who wrote it.
    +
    +Thus, it is not the intent of this section to claim rights or contest
    +your rights to work written entirely by you; rather, the intent is to
    +exercise the right to control the distribution of derivative or
    +collective works based on the Program.
    +
    +In addition, mere aggregation of another work not based on the Program
    +with the Program (or with a work based on the Program) on a volume of
    +a storage or distribution medium does not bring the other work under
    +the scope of this License.
    +
    +  3. You may copy and distribute the Program (or a work based on it,
    +under Section 2) in object code or executable form under the terms of
    +Sections 1 and 2 above provided that you also do one of the following:
    +
    +    a) Accompany it with the complete corresponding machine-readable
    +    source code, which must be distributed under the terms of Sections
    +    1 and 2 above on a medium customarily used for software interchange; or,
    +
    +    b) Accompany it with a written offer, valid for at least three
    +    years, to give any third party, for a charge no more than your
    +    cost of physically performing source distribution, a complete
    +    machine-readable copy of the corresponding source code, to be
    +    distributed under the terms of Sections 1 and 2 above on a medium
    +    customarily used for software interchange; or,
    +
    +    c) Accompany it with the information you received as to the offer
    +    to distribute corresponding source code.  (This alternative is
    +    allowed only for noncommercial distribution and only if you
    +    received the program in object code or executable form with such
    +    an offer, in accord with Subsection b above.)
    +
    +The source code for a work means the preferred form of the work for
    +making modifications to it.  For an executable work, complete source
    +code means all the source code for all modules it contains, plus any
    +associated interface definition files, plus the scripts used to
    +control compilation and installation of the executable.  However, as a
    +special exception, the source code distributed need not include
    +anything that is normally distributed (in either source or binary
    +form) with the major components (compiler, kernel, and so on) of the
    +operating system on which the executable runs, unless that component
    +itself accompanies the executable.
    +
    +If distribution of executable or object code is made by offering
    +access to copy from a designated place, then offering equivalent
    +access to copy the source code from the same place counts as
    +distribution of the source code, even though third parties are not
    +compelled to copy the source along with the object code.
    +
    +  4. You may not copy, modify, sublicense, or distribute the Program
    +except as expressly provided under this License.  Any attempt
    +otherwise to copy, modify, sublicense or distribute the Program is
    +void, and will automatically terminate your rights under this License.
    +However, parties who have received copies, or rights, from you under
    +this License will not have their licenses terminated so long as such
    +parties remain in full compliance.
    +
    +  5. You are not required to accept this License, since you have not
    +signed it.  However, nothing else grants you permission to modify or
    +distribute the Program or its derivative works.  These actions are
    +prohibited by law if you do not accept this License.  Therefore, by
    +modifying or distributing the Program (or any work based on the
    +Program), you indicate your acceptance of this License to do so, and
    +all its terms and conditions for copying, distributing or modifying
    +the Program or works based on it.
    +
    +  6. Each time you redistribute the Program (or any work based on the
    +Program), the recipient automatically receives a license from the
    +original licensor to copy, distribute or modify the Program subject to
    +these terms and conditions.  You may not impose any further
    +restrictions on the recipients' exercise of the rights granted herein.
    +You are not responsible for enforcing compliance by third parties to
    +this License.
    +
    +  7. If, as a consequence of a court judgment or allegation of patent
    +infringement or for any other reason (not limited to patent issues),
    +conditions are imposed on you (whether by court order, agreement or
    +otherwise) that contradict the conditions of this License, they do not
    +excuse you from the conditions of this License.  If you cannot
    +distribute so as to satisfy simultaneously your obligations under this
    +License and any other pertinent obligations, then as a consequence you
    +may not distribute the Program at all.  For example, if a patent
    +license would not permit royalty-free redistribution of the Program by
    +all those who receive copies directly or indirectly through you, then
    +the only way you could satisfy both it and this License would be to
    +refrain entirely from distribution of the Program.
    +
    +If any portion of this section is held invalid or unenforceable under
    +any particular circumstance, the balance of the section is intended to
    +apply and the section as a whole is intended to apply in other
    +circumstances.
    +
    +It is not the purpose of this section to induce you to infringe any
    +patents or other property right claims or to contest validity of any
    +such claims; this section has the sole purpose of protecting the
    +integrity of the free software distribution system, which is
    +implemented by public license practices.  Many people have made
    +generous contributions to the wide range of software distributed
    +through that system in reliance on consistent application of that
    +system; it is up to the author/donor to decide if he or she is willing
    +to distribute software through any other system and a licensee cannot
    +impose that choice.
    +
    +This section is intended to make thoroughly clear what is believed to
    +be a consequence of the rest of this License.
    +
    +  8. If the distribution and/or use of the Program is restricted in
    +certain countries either by patents or by copyrighted interfaces, the
    +original copyright holder who places the Program under this License
    +may add an explicit geographical distribution limitation excluding
    +those countries, so that distribution is permitted only in or among
    +countries not thus excluded.  In such case, this License incorporates
    +the limitation as if written in the body of this License.
    +
    +  9. The Free Software Foundation may publish revised and/or new versions
    +of the General Public License from time to time.  Such new versions will
    +be similar in spirit to the present version, but may differ in detail to
    +address new problems or concerns.
    +
    +Each version is given a distinguishing version number.  If the Program
    +specifies a version number of this License which applies to it and "any
    +later version", you have the option of following the terms and conditions
    +either of that version or of any later version published by the Free
    +Software Foundation.  If the Program does not specify a version number of
    +this License, you may choose any version ever published by the Free Software
    +Foundation.
    +
    +  10. If you wish to incorporate parts of the Program into other free
    +programs whose distribution conditions are different, write to the author
    +to ask for permission.  For software which is copyrighted by the Free
    +Software Foundation, write to the Free Software Foundation; we sometimes
    +make exceptions for this.  Our decision will be guided by the two goals
    +of preserving the free status of all derivatives of our free software and
    +of promoting the sharing and reuse of software generally.
    +
    +                            NO WARRANTY
    +
    +  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
    +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
    +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
    +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
    +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
    +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
    +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
    +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
    +REPAIR OR CORRECTION.
    +
    +  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
    +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
    +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
    +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
    +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
    +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
    +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
    +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
    +POSSIBILITY OF SUCH DAMAGES.
    +
    +                     END OF TERMS AND CONDITIONS
    +
    +            How to Apply These Terms to Your New Programs
    +
    +  If you develop a new program, and you want it to be of the greatest
    +possible use to the public, the best way to achieve this is to make it
    +free software which everyone can redistribute and change under these terms.
    +
    +  To do so, attach the following notices to the program.  It is safest
    +to attach them to the start of each source file to most effectively
    +convey the exclusion of warranty; and each file should have at least
    +the "copyright" line and a pointer to where the full notice is found.
    +
    +    {description}
    +    Copyright (C) {year}  {fullname}
    +
    +    This program is free software; you can redistribute it and/or modify
    +    it under the terms of the GNU General Public License as published by
    +    the Free Software Foundation; either version 2 of the License, or
    +    (at your option) any later version.
    +
    +    This program is distributed in the hope that it will be useful,
    +    but WITHOUT ANY WARRANTY; without even the implied warranty of
    +    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    +    GNU General Public License for more details.
    +
    +    You should have received a copy of the GNU General Public License along
    +    with this program; if not, write to the Free Software Foundation, Inc.,
    +    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
    +
    +Also add information on how to contact you by electronic and paper mail.
    +
    +If the program is interactive, make it output a short notice like this
    +when it starts in an interactive mode:
    +
    +    Gnomovision version 69, Copyright (C) year name of author
    +    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
    +    This is free software, and you are welcome to redistribute it
    +    under certain conditions; type `show c' for details.
    +
    +The hypothetical commands `show w' and `show c' should show the appropriate
    +parts of the General Public License.  Of course, the commands you use may
    +be called something other than `show w' and `show c'; they could even be
    +mouse-clicks or menu items--whatever suits your program.
    +
    +You should also get your employer (if you work as a programmer) or your
    +school, if any, to sign a "copyright disclaimer" for the program, if
    +necessary.  Here is a sample; alter the names:
    +
    +  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
    +  `Gnomovision' (which makes passes at compilers) written by James Hacker.
    +
    +  {signature of Ty Coon}, 1 April 1989
    +  Ty Coon, President of Vice
    +
    +This General Public License does not permit incorporating your program into
    +proprietary programs.  If your program is a subroutine library, you may
    +consider it more useful to permit linking proprietary applications with the
    +library.  If this is what you want to do, use the GNU Lesser General
    +Public License instead of this License.
    +
    +
    +
    + + +
    + +
    + + +
    +
    + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/doc/appendix/research.html b/doc/appendix/research.html new file mode 100644 index 00000000..707869ad --- /dev/null +++ b/doc/appendix/research.html @@ -0,0 +1,394 @@ + + + + + + + + + + + Some research made with the Quantum Package — Quantum Package 2.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + +
    + + + + + +
    + +
    + + + + + + + + + + + + + + + + + +
    + + + + +
    +
    +
    +
    + +
    +

    Some research made with the Quantum Package

    +

    + + + + +
    [1]Thomas Applencourt, Kevin Gasperich, and Anthony Scemama. Spin adaptation with determinant-based selected configuration interaction. arXiv, Dec 2018. URL: https://arxiv.org/abs/1812.06902, arXiv:1812.06902.
    + + + + + +
    [2]Pierre-François Loos, Martial Boggio-Pasqua, Anthony Scemama, Michel Caffarel, and Denis Jacquemin. Reference Energies for Double Excitations. arXiv, pages 1811.12861, Nov 2018. URL: https://arxiv.org/abs/1811.12861.
    + + + + + +
    [3]Sergio D. Pineda Flores and Eric Neuscamman. Excited State Specific Multi-Slater Jastrow Wave Functions. arXiv, pages 1811.00583, Nov 2018. URL: https://arxiv.org/abs/1811.00583.
    + + + + + +
    [4]Emmanuel Giner, Barthélemy Pradines, Anthony Ferté, Roland Assaraf, Andreas Savin, and Julien Toulouse. Curing basis-set convergence of wave-function theory using density-functional theory: a systematically improvable approach. The Journal of Chemical Physics, 149(19):194301, nov 2018. URL: https://doi.org/10.1063%2F1.5052714, doi:10.1063/1.5052714.
    + + + + + +
    [5]Emmanuel Giner, David Tew, Yann Garniron, and Ali Alavi. Interplay between electronic correlation and metal-ligand delocalization in the spectroscopy of transition metal compounds: case study on a series of planar Cu2+complexes. J. Chem. Theory Comput., Oct 2018. doi:10.1021/acs.jctc.8b00591.
    + + + + + +
    [6]Pierre-François Loos, Anthony Scemama, Aymeric Blondel, Yann Garniron, Michel Caffarel, and Denis Jacquemin. A mountaineering strategy to excited states: highly accurate reference energies and benchmarks. Journal of Chemical Theory and Computation, 14(8):4360–4379, jul 2018. URL: https://doi.org/10.1021%2Facs.jctc.8b00406, doi:10.1021/acs.jctc.8b00406.
    + + + + + +
    [7]Anthony Scemama, Yann Garniron, Michel Caffarel, and Pierre-François Loos. Deterministic construction of nodal surfaces within quantum monte carlo: the case of FeS. Journal of Chemical Theory and Computation, 14(3):1395–1402, jan 2018. URL: https://doi.org/10.1021%2Facs.jctc.7b01250, doi:10.1021/acs.jctc.7b01250.
    + + + + + +
    [8]Anthony Scemama, Anouar Benali, Denis Jacquemin, Michel Caffarel, and Pierre-François Loos. Excitation energies from diffusion monte carlo using selected configuration interaction nodes. The Journal of Chemical Physics, 149(3):034108, jul 2018. URL: https://doi.org/10.1063%2F1.5041327, doi:10.1063/1.5041327.
    + + + + + +
    [9]Monika Dash, Saverio Moroni, Anthony Scemama, and Claudia Filippi. Perturbatively selected configuration-interaction wave functions for efficient geometry optimization in quantum monte carlo. Journal of Chemical Theory and Computation, 14(8):4176–4182, jun 2018. URL: https://doi.org/10.1021%2Facs.jctc.8b00393, doi:10.1021/acs.jctc.8b00393.
    + + + + + +
    [10]Yann Garniron, Anthony Scemama, Emmanuel Giner, Michel Caffarel, and Pierre-François Loos. Selected configuration interaction dressed by perturbation. The Journal of Chemical Physics, 149(6):064103, aug 2018. URL: https://doi.org/10.1063%2F1.5044503, doi:10.1063/1.5044503.
    + + + + + +
    [11]Emmanuel Giner, Celestino Angeli, Yann Garniron, Anthony Scemama, and Jean-Paul Malrieu. A jeziorski-monkhorst fully uncontracted multi-reference perturbative treatment. i. principles, second-order versions, and tests on ground state potential energy curves. The Journal of Chemical Physics, 146(22):224108, jun 2017. URL: https://doi.org/10.1063%2F1.4984616, doi:10.1063/1.4984616.
    + + + + + +
    [12]Yann Garniron, Emmanuel Giner, Jean-Paul Malrieu, and Anthony Scemama. Alternative definition of excitation amplitudes in multi-reference state-specific coupled cluster. The Journal of Chemical Physics, 146(15):154107, apr 2017. URL: https://doi.org/10.1063%2F1.4980034, doi:10.1063/1.4980034.
    + + + + + +
    [13]Yann Garniron, Anthony Scemama, Pierre-François Loos, and Michel Caffarel. Hybrid stochastic-deterministic calculation of the second-order perturbative contribution of multireference perturbation theory. The Journal of Chemical Physics, 147(3):034101, jul 2017. URL: https://doi.org/10.1063%2F1.4992127, doi:10.1063/1.4992127.
    + + + + + +
    [14]E. Giner, C. Angeli, A. Scemama, and J.-P. Malrieu. Orthogonal valence bond hamiltonians incorporating dynamical correlation effects. Computational and Theoretical Chemistry, 1116:134–140, sep 2017. URL: https://doi.org/10.1016%2Fj.comptc.2017.03.001, doi:10.1016/j.comptc.2017.03.001.
    + + + + + +
    [15]Emmanuel Giner, Lorenzo Tenti, Celestino Angeli, and Nicolas Ferré. Computation of the isotropic hyperfine coupling constant: efficiency and insights from a new approach based on wave function theory. Journal of Chemical Theory and Computation, 13(2):475–487, 2017. PMID: 28094936. URL: https://doi.org/10.1021/acs.jctc.6b00827, arXiv:https://doi.org/10.1021/acs.jctc.6b00827, doi:10.1021/acs.jctc.6b00827.
    + + + + + +
    [16]Emmanuel Giner and Celestino Angeli. Spin density and orbital optimization in open shell systems: A rational and computationally efficient proposal. J. Chem. Phys., 144(10):104104, Mar 2016. doi:10.1063/1.4943187.
    + + + + + +
    [17]E. Giner, G. David, A. Scemama, and J. P. Malrieu. A simple approach to the state-specific MR-CC using the intermediate hamiltonian formalism. The Journal of Chemical Physics, 144(6):064101, feb 2016. URL: https://doi.org/10.1063%2F1.4940781, doi:10.1063/1.4940781.
    + + + + + +
    [18]Michel Caffarel, Thomas Applencourt, Emmanuel Giner, and Anthony Scemama. Communication: toward an improved control of the fixed-node error in quantum monte carlo: the case of the water molecule. The Journal of Chemical Physics, 144(15):151103, apr 2016. URL: https://doi.org/10.1063%2F1.4947093, doi:10.1063/1.4947093.
    + + + + + +
    [19]Michel Caffarel, Thomas Applencourt, Emmanuel Giner, and Anthony Scemama. Using cipsi nodes in diffusion monte carlo. In ACS Symposium Series, pages 15–46. American Chemical Society, jan 2016. URL: https://doi.org/10.1021%2Fbk-2016-1234.ch002, doi:10.1021/bk-2016-1234.ch002.
    + + + + + +
    [20]Emmanuel Giner, Anthony Scemama, and Michel Caffarel. Fixed-node diffusion monte carlo potential energy curve of the fluorine molecule f2 using selected configuration interaction trial wavefunctions. The Journal of Chemical Physics, 142(4):044115, jan 2015. URL: https://doi.org/10.1063%2F1.4905528, doi:10.1063/1.4905528.
    + + + + + +
    [21]Emmanuel Giner and Celestino Angeli. Metal-ligand delocalization and spin density in the CuCl2 and [CuCl4]2- molecules: Some insights from wave function theory. J. Chem. Phys., 143(12):124305, Sep 2015. doi:10.1063/1.4931639.
    + + + + + +
    [22]A. Scemama, T. Applencourt, E. Giner, and M. Caffarel. Accurate nonrelativistic ground-state energies of 3d transition metal atoms. The Journal of Chemical Physics, 141(24):244110, dec 2014. URL: https://doi.org/10.1063%2F1.4903985, doi:10.1063/1.4903985.
    + + + + + +
    [23]Michel Caffarel, Emmanuel Giner, Anthony Scemama, and Alejandro Ram’ırez-Sol’ıs. Spin density distribution in open-shell transition metal systems: a comparative post-hartree-fock, density functional theory, and quantum monte carlo study of the cucl2 molecule. Journal of Chemical Theory and Computation, 10(12):5286–5296, nov 2014. URL: https://doi.org/10.1021%2Fct5004252, doi:10.1021/ct5004252.
    + + + + + +
    [24]Emmanuel Giner, Anthony Scemama, and Michel Caffarel. Using perturbatively selected configuration interaction in quantum monte carlo calculations. Canadian Journal of Chemistry, 91(9):879–885, sep 2013. URL: https://doi.org/10.1139%2Fcjc-2013-0017, doi:10.1139/cjc-2013-0017.
    + + + + + +
    [25]Anthony Scemama and Emmanuel Giner. An efficient implementation of Slater-Condon rules. arXiv, Nov 2013. URL: https://arxiv.org/abs/1311.6244, arXiv:1311.6244.
    +

    +
    + + +
    + +
    + + +
    +
    + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/doc/genindex.html b/doc/genindex.html new file mode 100644 index 00000000..7797153c --- /dev/null +++ b/doc/genindex.html @@ -0,0 +1,4876 @@ + + + + + + + + + + + + Index — Quantum Package 2.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + +
    + + + + + +
    + +
    + + + + + + + + + + + + + + + + + +
    + +
      + +
    • Docs »
    • + +
    • Index
    • + + +
    • + + + +
    • + +
    + + +
    +
    +
    +
    + + +

    Index

    + +
    + Symbols + | A + | B + | C + | D + | E + | F + | G + | H + | I + | K + | L + | M + | N + | O + | P + | Q + | R + | S + | T + | U + | V + | W + | Z + +
    +

    Symbols

    + + + +
    + +

    A

    + + + +
    + +

    B

    + + + +
    + +

    C

    + + + +
    + +

    D

    + + + +
    + +

    E

    + + + +
    + +

    F

    + + + +
    + +

    G

    + + + +
    + +

    H

    + + + +
    + +

    I

    + + + +
    + +

    K

    + + + +
    + +

    L

    + + + +
    + +

    M

    + + + +
    + +

    N

    + + + +
    + +

    O

    + + + +
    + +

    P

    + + + +
    + +

    Q

    + + + +
    + +

    R

    + + + +
    + +

    S

    + + + +
    + +

    T

    + + + +
    + +

    U

    + + + +
    + +

    V

    + + + +
    + +

    W

    + + + +
    + +

    Z

    + + + +
    + + + +
    + +
    +
    + + +
    + +
    +

    + © Copyright 2018, A. Scemama, E. Giner + +

    +
    + Built with Sphinx using a theme provided by Read the Docs. + +
    + +
    +
    + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/doc/index.html b/doc/index.html new file mode 100644 index 00000000..5b36647b --- /dev/null +++ b/doc/index.html @@ -0,0 +1,308 @@ + + + + + + + + + + + The Quantum Package — Quantum Package 2.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + +
    + + + + + +
    + +
    + + + + + + + + + + + + + + + + + +
    + + + + +
    +
    +
    +
    + +
    +

    The Quantum Package

    +Quantum Package +
    +

    What it is

    +

    The Quantum Package 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 (WFT).

    +

    From the user point of view, the Quantum Package 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 [18][19][6][7][9][13][6][10][5]). +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 KS-DFT and range-separated hybrids 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 Quantum Package 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 Quantum Package 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 Quantum Package should develop their own programs.

    +

    The Quantum Package 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 Quantum Package 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 Quantum Package 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 Quantum Package, such as:

    +
      +
    • Selected Full-CI + Epstein-Nesbet PT2 (CIPSI) [18][19][6][7][9]
    • +
    • Hybrid stochastic/deterministic MR-PT2 [13][6]
    • +
    • Orbital optimization for open-shell systems [16][15]
    • +
    • CIS, CISD, MP2
    • +
    • Selected CISD
    • +
    • Jeziorsky-Monkhorst MR-PT2 [11]
    • +
    • Effective Hamiltonian for variational MR wave functions [14]
    • +
    • Selected CAS+SD
    • +
    • Selected difference-dedicated CI (DD-CI)
    • +
    • Multi-Reference Coupled Cluster (MR-CCSD) [17][12]
    • +
    • Shifted-Bk with CIPSI [10]
    • +
    • CIPSI with range-separated DFT (plugins at https://gitlab.com/eginer/qp_plugins_eginer)
    • +
    • DFT for basis set corrections [4]
    • +
    +

    All these programs can generate ground and excited states, and spin pure wave +functions (eigenstates of \(\widehat{S^2}\)).

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + + +
    + +
    + + +
    +
    + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/doc/intro/install.html b/doc/intro/install.html new file mode 100644 index 00000000..2d07224d --- /dev/null +++ b/doc/intro/install.html @@ -0,0 +1,485 @@ + + + + + + + + + + + Installation — Quantum Package 2.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + +
    + + + + + +
    + +
    + + + + + + + + + + + + + + + + + +
    + + + + +
    +
    +
    +
    + +
    +

    Installation

    +

    The Quantum Package can be downloaded on GitHub as an archive or as a git +repository.

    +
    git clone https://github.com/LCPQ/quantum_package
    +
    +
    +

    Before anything, go into your quantum_package directory and run

    +
    ./configure
    +
    +
    +

    This script will create the quantum_package.rc bash script, which +sets all the environment variables required for the normal operation of the +Quantum Package.

    +

    Running this script will also tell you which external dependencies are missing +and need to be installed.

    +

    When all dependencies have been installed, ( the configure will tell you) +source the quantum_package.rc in order to load all environment variables and compile the Quantum Package.

    +
    +

    Requirements

    + +

    When all the dependencies have been installed, go into the config +directory, and copy the configuration file that corresponds to your +architecture. Modify it if needed, and run configure with +configure -c.

    +
    cp ./config/gfortran.example config/gfortran.cfg
    +./configure -c config/gfortran.cfg
    +
    +
    +
    +

    Note

    +

    The popcnt instruction accelerates a lot the programs, so the +SSE4.2, AVX or AVX2 instruction sets should be enabled in the +configuration file if possible.

    +
    +
    +
    +

    Help for installing external dependencies

    +
    +

    Using the configure executable

    +

    The configure executable can help you in installing the minimal dependencies you will need to compile the Quantum Package. +The command is to be used as follows:

    +
    ./configure --install <package>
    +
    +
    +

    The following packages are supported by the configure installer:

    +
      +
    • ninja
    • +
    • irpf90
    • +
    • zeromq
    • +
    • f77zmq
    • +
    • ocaml ( \(\approx\) 10 minutes)
    • +
    • ezfio
    • +
    • docopt
    • +
    • resultsFile
    • +
    • bats
    • +
    +

    Example:

    +
    ./configure -i ezfio
    +
    +
    +
    +

    Note

    +

    When installing the ocaml package, you will be asked the location of where it should be installed. +A safe option is to enter the path proposed by the Quantum Package:

    +

    QP>> Please install it here: /your_quantum_package_directory/bin

    +

    So just enter the proposition of the Quantum Package and press enter.

    +
    +
    +
    +

    If the configure executable fails to install a specific dependency

    +

    If the configure executable does not succeed to install a specific dependency, +there are some proposition of how to download and install the minimal dependencies to compile and use the Quantum Package

    +

    Before doing anything below, try to install the packages with your package manager +(apt, yum, etc)

    +
    +
    +

    Ninja

    +

    Ninja is a build system (like GNU make), with a focus on speed.

    + +
    +
    +

    IRPF90

    +

    IRPF90 is a Fortran code generator for programming using the Implicit Reference +to Parameters (IRP) method.

    + +
    +

    Note

    +

    The IRPF90_PATH variable may need to be updated in the configuration +file $QP_ROOT/etc/irpf90.rc.

    +
    +
    +
    +

    ZeroMQ and its Fortran binding

    +

    ZeroMQ is a high-performance asynchronous messaging library.

    +
      +
    • Download the latest stable version of ZeroMQ +here : https://github.com/zeromq/libzmq/releases/latest and move the +downloaded archive in the $QP_ROOT/external directory
    • +
    • Extract the archive, go into the zeromq-* directory and run +the following commands
    • +
    +
    ./configure --prefix="${QP_ROOT}" --without-libsodium
    +make
    +make install
    +
    +
    + +
    export ZMQ_H=${QP_ROOT}/include/zmq.h
    +make
    +cp libf77zmq.a ${QP_ROOT}/lib
    +cp libf77zmq.so ${QP_ROOT}/lib
    +
    +
    +
      +
    • Copy the f77_zmq_free.h file in the ZMQ module as follows:
    • +
    +
    cp f77_zmq_free.h ${QP_ROOT}/src/ZMQ/f77_zmq.h
    +
    +
    +
    +
    +

    Zlib

    +

    Zlib is the compression library used by gzip.

    +
      +
    • Download the latest version of Zlib here: +https://www.zlib.net/zlib-1.2.11.tar.gz +and move it in the $QP_ROOT/external directory
    • +
    • Extract the archive, go into the zlib-* directory and run +the following commands
    • +
    +
    ./configure --prefix=${QP_ROOT}
    +make
    +make install
    +
    +
    +
    +
    +

    OCaml

    +

    OCaml is a general purpose programming language with an emphasis on expressiveness and safety.

    +
      +
    • Download the installer of the OPAM package manager here : +https://raw.githubusercontent.com/ocaml/opam/master/shell/install.sh +and move it in the $QP_ROOT/external directory

      +
    • +
    • If you use OCaml only with the Quantum Package, you can install the OPAM directory +containing the compiler and all the installed libraries in the +$QP_ROOT/external directory as

      +
      export OPAMROOT=${QP_ROOT}/external/opam
      +
      +
      +
    • +
    • Run the installer

      +
      echo ${QP_ROOT}/bin
      +${QP_ROOT}/external/opam_installer.sh --no-backup --fresh
      +
      +
      +

      You the opam command can be installed in the $QP_ROOT/bin +directory. To do this, take the output of echo ${QP_ROOT}/bin and +use it as an answer to where opam should be installed.

      +
    • +
    • Install the OCaml compiler

      +
      opam init --disable-sandboxing --comp=4.07.0
      +eval `${QP_ROOT}/bin/opam env`
      +
      +
      +
    • +
    • Install the required external OCaml libraries

      +
      opam install ocamlbuild cryptokit zmq core sexplib ppx_sexp_conv ppx_deriving getopt
      +
      +
      +
    • +
    +
    +
    +

    EZFIO

    +

    EZFIO is the Easy Fortran Input/Output library generator.

    + +
    +
    +

    Docopt

    +

    Docopt is a Python package defining a command-line interface description language.

    +

    If you have pip for Python2, you can do

    +
    pip2 install --user docopt
    +
    +
    +

    Otherwise,

    + +
    +
    +
    + + +
    + +
    + + +
    +
    + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/doc/intro/intro.html b/doc/intro/intro.html new file mode 100644 index 00000000..1f5d23c9 --- /dev/null +++ b/doc/intro/intro.html @@ -0,0 +1,292 @@ + + + + + + + + + + + The Quantum Package — Quantum Package 2.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + +
    + + + + + +
    + +
    + + + + + + + + + + + + + + + + + +
    + + + + +
    +
    +
    +
    + +
    +

    The Quantum Package

    +Quantum Package +
    +

    What it is

    +

    The Quantum Package 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 (WFT).

    +

    From the user point of view, the Quantum Package 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 [18][19][6][7][9][13][6][10][5]). +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 KS-DFT and range-separated hybrids 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 Quantum Package 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 Quantum Package 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 Quantum Package should develop their own programs.

    +

    The Quantum Package 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 Quantum Package 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 Quantum Package 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 Quantum Package, such as:

    +
      +
    • Selected Full-CI + Epstein-Nesbet PT2 (CIPSI) [18][19][6][7][9]
    • +
    • Hybrid stochastic/deterministic MR-PT2 [13][6]
    • +
    • Orbital optimization for open-shell systems [16][15]
    • +
    • CIS, CISD, MP2
    • +
    • Selected CISD
    • +
    • Jeziorsky-Monkhorst MR-PT2 [11]
    • +
    • Effective Hamiltonian for variational MR wave functions [14]
    • +
    • Selected CAS+SD
    • +
    • Selected difference-dedicated CI (DD-CI)
    • +
    • Multi-Reference Coupled Cluster (MR-CCSD) [17][12]
    • +
    • Shifted-Bk with CIPSI [10]
    • +
    • CIPSI with range-separated DFT (plugins at https://gitlab.com/eginer/qp_plugins_eginer)
    • +
    • DFT for basis set corrections [4]
    • +
    +

    All these programs can generate ground and excited states, and spin pure wave +functions (eigenstates of \(\widehat{S^2}\)).

    +
    +
    + + +
    + +
    +
    + + +
    + +
    +

    + © Copyright 2018, A. Scemama, E. Giner + +

    +
    + Built with Sphinx using a theme provided by Read the Docs. + +
    + +
    +
    + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/doc/intro/selected_ci.html b/doc/intro/selected_ci.html new file mode 100644 index 00000000..3215c054 --- /dev/null +++ b/doc/intro/selected_ci.html @@ -0,0 +1,424 @@ + + + + + + + + + + + Selected Configuration Interaction — Quantum Package 2.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + +
    + + + + + +
    + +
    + + + + + + + + + + + + + + + + + +
    + + + + +
    +
    +
    +
    + +
    +

    Selected Configuration Interaction

    +

    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. [A1][A2] 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 [A3] as well as Whitten +and Hackmeyer. [A4]

    +

    The approach we are using in the Quantum Package is based on CIPSI developed by Huron, +Rancurel and Malrieu, [A5] 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. [A6] As a consequence, it can be systematically +determined to which matrix element of \(\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 [A7],
    • +
    • 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

    +

    The variational wave function \(|\Psi^{(n)}\rangle\) is defined over a set of determinants +\(\{|D_I\rangle\}^{(n)}\) in which we diagonalize \(\hat H\).

    +
    +\[|\Psi^{(n)}\rangle = \sum_{I} c_I^{(n)} |D_I\rangle\]
    +

    The determinants in \(\{|D_I\rangle\}^{(n)}\) will be characterized as internal.

    +
      +
    1. For all external determinants \(|\alpha \rangle\) \(\notin\) \(\{|D_I\rangle\}^{(n)}\), compute the +Epstein-Nesbet second-order perturbative contribution to the energy

      +
      +\[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 +\(e_\alpha\).

      +
    2. +
    3. An estimate of the total missing correlation energy can be computed +by summing all the \(e_\alpha\) contributions

      +
      +\[\begin{split}E_\text{PT2} & = \sum_{\alpha} e_\alpha \\ +E_\text{FCI} & \approx E + E_\text{PT2}\end{split}\]
      +
    4. +
    5. \(\{ |\alpha \rangle \}_\star ^{(n)}\), the subset of determinants \(|\alpha \rangle\) with the largest +contributions \(e_\alpha\), is added to the variational space

      +
      +\[\{ |D_I \rangle \}^{(n+1)} = \{|D_I\rangle\}^{(n)} \cup \{ |\alpha\rangle \}_\star^{(n)}\]
      +
    6. +
    7. Go to iteration n+1, or exit on some criterion (number of determinants in +the wave function, low \(E_\text{PT2}\), …).

      +
    8. +
    +

    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 \(E_\text{PT2}\)

    +

    The simple algorithm would be too slow to make calculations possible. Instead, +the Quantum Package uses a stochastic algorithm [13] in order to compute +efficiently the \(E_\text{PT2}\) 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 \(E_\text{PT2}\) calculation and the \(E_\text{PT2}\) +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 \(|\alpha \rangle\) are generated. +We then define selector determinants, a truncated wave function +used in the computation of \(e_\alpha\).

    +

    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 determinants threshold_generators = 0.99 for +the generators, and determinants threshold_selectors = 0.999 for the +selectors.

    +

    This is nothing but the 3-class CIPSI approximation to accelerate the selection, +[A8] where instead of generating all possible \(|\alpha \rangle\), +we only generate a subset which are likely to be selected.

    +

    The computation of \(E_\text{PT2}\) using a truncated wave function is biased, +so if an accurate estimate of the FCI energy is desired, it is preferable +to recompute \(E_\text{PT2}\) with the hybrid deterministic/stochastic algorithm +[A9] 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 \(|\alpha \rangle\), 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 Quantum Package.

    +
    +

    + + + + +
    [A1]Laimutis Bytautas and Klaus Ruedenberg. A priori identification of configurational deadwood. Chemical Physics, 356(1-3):64–75, feb 2009. URL: https://doi.org/10.1016%2Fj.chemphys.2008.11.021, doi:10.1016/j.chemphys.2008.11.021.
    + + + + + +
    [A2]James S.M. Anderson, Farnaz Heidar-Zadeh, and Paul W. Ayers. Breaking the curse of dimension for the electronic schrodinger equation with functional analysis. Computational and Theoretical Chemistry, 1142:66–77, oct 2018. URL: https://doi.org/10.1016%2Fj.comptc.2018.08.017, doi:10.1016/j.comptc.2018.08.017.
    + + + + + +
    [A3]Charles F. Bender and Ernest R. Davidson. Studies in configuration interaction: the first-row diatomic hydrides. Phys. Rev., 183(1):23–30, jul 1969. URL: http://dx.doi.org/10.1103/PhysRev.183.23, doi:10.1103/physrev.183.23.
    + + + + + +
    [A4]J. L. Whitten and Melvyn Hackmeyer. Configuration interaction studies of ground and excited states of polyatomic molecules. i. the CI formulation and studies of formaldehyde. The Journal of Chemical Physics, 51(12):5584–5596, dec 1969. URL: https://doi.org/10.1063%2F1.1671985, doi:10.1063/1.1671985.
    + + + + + +
    [A5]B. Huron, J. P. Malrieu, and P. Rancurel. Iterative perturbation calculations of ground and excited state energies from multiconfigurational zeroth-order wavefunctions. The Journal of Chemical Physics, 58(12):5745–5759, jun 1973. URL: https://doi.org/10.1063%2F1.1679199, doi:10.1063/1.1679199.
    + + + + + +
    [A6]Peter J. Knowles and Nicholas C Handy. A new determinant-based full configuration interaction method. Chem. Phys. Letters, 111:315–321, 1984.
    + + + + + +
    [A7]A. Scemama and E. Giner. An efficient implementation of Slater-Condon rules. ArXiv [physics.comp-ph], pages 1311.6244, November 2013. URL: https://arxiv.org/abs/1311.6244.
    + + + + + +
    [A8]Stefano Evangelisti, Jean-Pierre Daudey, and Jean-Paul Malrieu. Convergence of an improved CIPSI algorithm. Chemical Physics, 75(1):91–102, feb 1983. URL: https://doi.org/10.1016%2F0301-0104%2883%2985011-3, doi:10.1016/0301-0104(83)85011-3.
    + + + + + +
    [A9]Yann Garniron, Anthony Scemama, Pierre-François Loos, and Michel Caffarel. Hybrid stochastic-deterministic calculation of the second-order perturbative contribution of multireference perturbation theory. The Journal of Chemical Physics, 147(3):034101, jul 2017. URL: https://doi.org/10.1063%2F1.4992127, doi:10.1063/1.4992127.
    +

    +
    +
    + + +
    + +
    + + +
    +
    + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/doc/modules/ao_basis.html b/doc/modules/ao_basis.html new file mode 100644 index 00000000..581cf192 --- /dev/null +++ b/doc/modules/ao_basis.html @@ -0,0 +1,1522 @@ + + + + + + + + + + + ao_basis — Quantum Package 2.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + +
    + + + + + +
    + +
    + + + + + + + + + + + + + + + + + +
    + + + + +
    +
    +
    +
    + +
    +

    ao_basis

    +

    This module describes the atomic orbitals basis set.

    +

    An AO \(\chi\) centered on nucleus A is represented as:

    +
    +\[\chi_i({\bf r}) = (x-X_A)^a (y-Y_A)^b (z-Z_A)^c \sum_k c_{ki} e^{-\gamma_{ki} |{\bf r} - {\bf R}_A|^2}\]
    +

    The AO coefficients are normalized as:

    +
    +\[{\tilde c}_{ki} = \frac{c_{ki}}{ \int \left( (x-X_A)^a (y-Y_A)^b (z-Z_A)^c e^{-\gamma_{ki} |{\bf r} - {\bf R}_A|^2} \right)^2 dr}\]
    +

    Warning: ao_coef contains the AO coefficients given in input. These do not +include the normalization constant of the AO. The ao_coef_normalized provider includes +this normalization factor.

    +

    The AOs are also sorted by increasing exponent to accelerate the calculation of +the two electron integrals.

    +
    +

    EZFIO parameters

    +
    +
    +ao_basis
    +

    Name of the AO basis set

    +
    + +
    +
    +ao_num
    +

    Number of AOs

    +
    + +
    +
    +ao_prim_num
    +

    Number of primitives per AO

    +
    + +
    +
    +ao_prim_num_max
    +

    Maximum number of primitives

    +

    Default: =maxval(ao_basis.ao_prim_num)

    +
    + +
    +
    +ao_nucl
    +

    Index of the nucleus on which the AO is centered

    +
    + +
    +
    +ao_power
    +

    Powers of x, y and z for each AO

    +
    + +
    +
    +ao_coef
    +

    Primitive coefficients, read from input. Those should not be used directly, as the MOs are expressed on the basis of normalized AOs.

    +
    + +
    +
    +ao_expo
    +

    Exponents for each primitive of each AO

    +
    + +
    +
    +ao_md5
    +

    MD5 key, specific of the AO basis

    +
    + +
    +
    +ao_cartesian
    +

    If true, use AOs in Cartesian coordinates (6d,10f,…)

    +

    Default: false

    +
    + +
    +
    +

    Providers

    +
    +
    +ao_coef_normalization_factor
    +

    File : ao_basis/aos.irp.f

    +
    double precision, allocatable   :: ao_coef_normalized   (ao_num,ao_prim_num_max)
    +double precision, allocatable   :: ao_coef_normalization_factor (ao_num)
    +
    +
    +

    Coefficients including the AO normalization

    +

    Needs:

    +
      +
    • ao_coef
    • +
    • ao_expo
    • +
    +
      +
    • ao_num
    • +
    • ao_power
    • +
    +
    +
    +

    Needed by:

    +
    + +
      +
    +
    +
    + +
    +
    +ao_coef_normalization_libint_factor
    +

    File : ao_basis/aos.irp.f

    +
    double precision, allocatable   :: ao_coef_normalization_libint_factor  (ao_num)
    +
    +
    +

    AO normalization for interfacing with libint

    +

    Needs:

    +
    + +
      +
    • ao_prim_num
    • +
    +
    +
    + +
    +
    +ao_coef_normalized
    +

    File : ao_basis/aos.irp.f

    +
    double precision, allocatable   :: ao_coef_normalized   (ao_num,ao_prim_num_max)
    +double precision, allocatable   :: ao_coef_normalization_factor (ao_num)
    +
    +
    +

    Coefficients including the AO normalization

    +

    Needs:

    +
      +
    • ao_coef
    • +
    • ao_expo
    • +
    +
      +
    • ao_num
    • +
    • ao_power
    • +
    +
    +
    +

    Needed by:

    +
    + +
      +
    +
    +
    + +
    +
    +ao_coef_normalized_ordered
    +

    File : ao_basis/aos.irp.f

    +
    double precision, allocatable   :: ao_coef_normalized_ordered   (ao_num,ao_prim_num_max)
    +double precision, allocatable   :: ao_expo_ordered      (ao_num,ao_prim_num_max)
    +
    +
    +

    Sorted primitives to accelerate 4 index MO transformation

    +

    Needs:

    +
    +
      +
    • ao_num
    • +
    • ao_prim_num
    • +
    +
    +
    +

    Needed by:

    +
    + +
      +
    +
    +
    + +
    +
    +ao_coef_normalized_ordered_transp
    +

    File : ao_basis/aos.irp.f

    +
    double precision, allocatable   :: ao_coef_normalized_ordered_transp    (ao_prim_num_max,ao_num)
    +
    +
    +

    Transposed ao_coef_normalized_ordered

    +

    Needs:

    +
    +
      +
    • ao_num
    • +
    +
    +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +ao_coef_normalized_ordered_transp_per_nucl
    +

    File : ao_basis/aos_transp.irp.f

    +
    double precision, allocatable   :: ao_coef_normalized_ordered_transp_per_nucl   (ao_prim_num_max,N_AOs_max,nucl_num)
    +
    +
    +

    Needs:

    +
    + + +
    +
    + +
    +
    +ao_expo_ordered
    +

    File : ao_basis/aos.irp.f

    +
    double precision, allocatable   :: ao_coef_normalized_ordered   (ao_num,ao_prim_num_max)
    +double precision, allocatable   :: ao_expo_ordered      (ao_num,ao_prim_num_max)
    +
    +
    +

    Sorted primitives to accelerate 4 index MO transformation

    +

    Needs:

    +
    +
      +
    • ao_num
    • +
    • ao_prim_num
    • +
    +
    +
    +

    Needed by:

    +
    + +
      +
    +
    +
    + +
    +
    +ao_expo_ordered_transp
    +

    File : ao_basis/aos.irp.f

    +
    double precision, allocatable   :: ao_expo_ordered_transp       (ao_prim_num_max,ao_num)
    +
    +
    +

    Transposed ao_expo_ordered

    +

    Needs:

    +
    +
      +
    • ao_num
    • +
    +
    +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +ao_expo_ordered_transp_per_nucl
    +

    File : ao_basis/aos_transp.irp.f

    +
    double precision, allocatable   :: ao_expo_ordered_transp_per_nucl      (ao_prim_num_max,N_AOs_max,nucl_num)
    +
    +
    +

    Needs:

    +
    + + +
    +
    + +
    +
    +ao_l
    +

    File : ao_basis/aos.irp.f

    +
    integer, allocatable    :: ao_l (ao_num)
    +integer :: ao_l_max
    +character*(128), allocatable    :: ao_l_char    (ao_num)
    +
    +
    +

    \(l\) value of the AO: :math`a+b+c` in \(x^a y^b z^c\)

    +

    Needs:

    +
      +
    • ao_num
    • +
    +
      +
    • ao_power
    • +
    +
    +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +ao_l_char
    +

    File : ao_basis/aos.irp.f

    +
    integer, allocatable    :: ao_l (ao_num)
    +integer :: ao_l_max
    +character*(128), allocatable    :: ao_l_char    (ao_num)
    +
    +
    +

    \(l\) value of the AO: :math`a+b+c` in \(x^a y^b z^c\)

    +

    Needs:

    +
      +
    • ao_num
    • +
    +
      +
    • ao_power
    • +
    +
    +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +ao_l_char_space
    +

    File : ao_basis/aos.irp.f

    +
    character*(4), allocatable      :: ao_l_char_space      (ao_num)
    +
    +
    +

    Converts an l value to a string

    +

    Needs:

    +
    +
      +
    • ao_num
    • +
    +
      +
    • ao_power
    • +
    +
    +
    + +
    +
    +ao_l_max
    +

    File : ao_basis/aos.irp.f

    +
    integer, allocatable    :: ao_l (ao_num)
    +integer :: ao_l_max
    +character*(128), allocatable    :: ao_l_char    (ao_num)
    +
    +
    +

    \(l\) value of the AO: :math`a+b+c` in \(x^a y^b z^c\)

    +

    Needs:

    +
      +
    • ao_num
    • +
    +
      +
    • ao_power
    • +
    +
    +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +ao_power_ordered_transp_per_nucl
    +

    File : ao_basis/aos_transp.irp.f

    +
    integer, allocatable    :: ao_power_ordered_transp_per_nucl     (3,N_AOs_max,nucl_num)
    +
    +
    +

    Needs:

    +
    + +
      +
    • nucl_num
    • +
    +
    +
    + +
    +
    +ao_prim_num_max
    +

    File : ao_basis/aos.irp.f

    +
    integer :: ao_prim_num_max
    +
    +
    +

    Max number of primitives.

    +

    Needs:

    +
      +
    • ao_prim_num
    • +
    +
      +
    +
      +
    +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +cart_to_sphe_0
    +

    File : ao_basis/spherical_to_cartesian.irp.f

    +
    double precision, allocatable   :: cart_to_sphe_0       (1,1)
    +
    +
    +

    Spherical -> Cartesian Transformation matrix for l=0

    +
    + +
    +
    +cart_to_sphe_1
    +

    File : ao_basis/spherical_to_cartesian.irp.f

    +
    double precision, allocatable   :: cart_to_sphe_1       (3,3)
    +
    +
    +

    Spherical -> Cartesian Transformation matrix for l=1

    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +cart_to_sphe_2
    +

    File : ao_basis/spherical_to_cartesian.irp.f

    +
    double precision, allocatable   :: cart_to_sphe_2       (6,5)
    +
    +
    +

    Spherical -> Cartesian Transformation matrix for l=2

    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +cart_to_sphe_3
    +

    File : ao_basis/spherical_to_cartesian.irp.f

    +
    double precision, allocatable   :: cart_to_sphe_3       (10,7)
    +
    +
    +

    Spherical -> Cartesian Transformation matrix for l=3

    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +cart_to_sphe_4
    +

    File : ao_basis/spherical_to_cartesian.irp.f

    +
    double precision, allocatable   :: cart_to_sphe_4       (15,9)
    +
    +
    +

    Spherical -> Cartesian Transformation matrix for l=4

    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +cart_to_sphe_5
    +

    File : ao_basis/spherical_to_cartesian.irp.f

    +
    double precision, allocatable   :: cart_to_sphe_5       (21,11)
    +
    +
    +

    Spherical -> Cartesian Transformation matrix for l=5

    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +cart_to_sphe_6
    +

    File : ao_basis/spherical_to_cartesian.irp.f

    +
    double precision, allocatable   :: cart_to_sphe_6       (28,13)
    +
    +
    +

    Spherical -> Cartesian Transformation matrix for l=6

    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +cart_to_sphe_7
    +

    File : ao_basis/spherical_to_cartesian.irp.f

    +
    double precision, allocatable   :: cart_to_sphe_7       (36,15)
    +
    +
    +

    Spherical -> Cartesian Transformation matrix for l=7

    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +cart_to_sphe_8
    +

    File : ao_basis/spherical_to_cartesian.irp.f

    +
    double precision, allocatable   :: cart_to_sphe_8       (45,17)
    +
    +
    +

    Spherical -> Cartesian Transformation matrix for l=8

    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +cart_to_sphe_9
    +

    File : ao_basis/spherical_to_cartesian.irp.f

    +
    double precision, allocatable   :: cart_to_sphe_9       (55,19)
    +
    +
    +

    Spherical -> Cartesian Transformation matrix for l=9

    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +l_to_charater
    +

    File : ao_basis/aos.irp.f

    +
    character*(128), allocatable    :: l_to_charater        (0:7)
    +
    +
    +

    Character corresponding to the “l” value of an AO

    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +n_aos_max
    +

    File : ao_basis/aos.irp.f

    +
    integer, allocatable    :: nucl_n_aos   (nucl_num)
    +integer :: n_aos_max
    +
    +
    +

    Number of AOs per atom

    +

    Needs:

    +
      +
    • ao_nucl
    • +
    +
      +
    • ao_num
    • +
    +
      +
    • nucl_num
    • +
    +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +n_pt_max_i_x
    +

    File : ao_basis/dimensions_integrals.irp.f

    +
    integer :: n_pt_max_integrals
    +integer :: n_pt_max_i_x
    +
    +
    +

    Number of points used in the numerical integrations.

    +

    Needs:

    +
      +
    • ao_power
    • +
    +
      +
    +
      +
    +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +n_pt_max_integrals
    +

    File : ao_basis/dimensions_integrals.irp.f

    +
    integer :: n_pt_max_integrals
    +integer :: n_pt_max_i_x
    +
    +
    +

    Number of points used in the numerical integrations.

    +

    Needs:

    +
      +
    • ao_power
    • +
    +
      +
    +
      +
    +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +nucl_aos
    +

    File : ao_basis/aos.irp.f

    +
    integer, allocatable    :: nucl_aos     (nucl_num,N_AOs_max)
    +
    +
    +

    List of AOs centered on each atom

    +

    Needs:

    +
      +
    • ao_nucl
    • +
    • ao_num
    • +
    +
    +
      +
    • nucl_num
    • +
    +
    +

    Needed by:

    +
    + +
      +
    +
    +
    + +
    +
    +nucl_aos_transposed
    +

    File : ao_basis/aos_transp.irp.f

    +
    integer, allocatable    :: nucl_aos_transposed  (N_AOs_max,nucl_num)
    +
    +
    +

    List of AOs attached on each atom

    +

    Needs:

    +
      +
    • ao_nucl
    • +
    • ao_num
    • +
    +
    +
      +
    • nucl_num
    • +
    +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +nucl_list_shell_aos
    +

    File : ao_basis/aos.irp.f

    +
    integer, allocatable    :: nucl_list_shell_aos  (nucl_num,N_AOs_max)
    +integer, allocatable    :: nucl_num_shell_aos   (nucl_num)
    +
    +
    +

    Index of the shell type AOs and of the corresponding AOs +By convention, for p,d,f and g AOs, we take the index +of the AO with the the corresponding power in the x axis

    +

    Needs:

    +
    + +
      +
    • nucl_num
    • +
    +
    +
    + +
    +
    +nucl_n_aos
    +

    File : ao_basis/aos.irp.f

    +
    integer, allocatable    :: nucl_n_aos   (nucl_num)
    +integer :: n_aos_max
    +
    +
    +

    Number of AOs per atom

    +

    Needs:

    +
      +
    • ao_nucl
    • +
    +
      +
    • ao_num
    • +
    +
      +
    • nucl_num
    • +
    +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +nucl_num_shell_aos
    +

    File : ao_basis/aos.irp.f

    +
    integer, allocatable    :: nucl_list_shell_aos  (nucl_num,N_AOs_max)
    +integer, allocatable    :: nucl_num_shell_aos   (nucl_num)
    +
    +
    +

    Index of the shell type AOs and of the corresponding AOs +By convention, for p,d,f and g AOs, we take the index +of the AO with the the corresponding power in the x axis

    +

    Needs:

    +
    + +
      +
    • nucl_num
    • +
    +
    +
    + +
    +
    +

    Subroutines / functions

    +
    +
    +ao_power_index:()
    +

    File : ao_basis/aos.irp.f

    +
    integer function ao_power_index(nx,ny,nz)
    +
    +
    +

    Unique index given to a triplet of powers:

    +

    \(\frac{1}{2} (l-n_x) (l-n_x+1) + n_z + 1\)

    +
    + +
    +
    +ao_value:()
    +

    File : ao_basis/aos_value.irp.f

    +
    double precision function ao_value(i,r)
    +
    +
    +

    return the value of the ith ao at point r

    +

    Needs:

    +
    + + +
    +
    + +
    +
    +give_all_aos_and_grad_and_lapl_at_r:()
    +

    File : ao_basis/aos_value.irp.f

    +
    subroutine give_all_aos_and_grad_and_lapl_at_r(r,aos_array,aos_grad_array,aos_lapl_array)
    +
    +
    +

    input : r(1) ==> r(1) = x, r(2) = y, r(3) = z +output : aos_array(i) = ao(i) evaluated at r

    +
    +
    : aos_grad_array(1,i) = gradient X of the ao(i) evaluated at r
    +

    Needs:

    +
    + + +
    +

    Called by:

    +
      +
    • give_all_mos_and_grad_and_lapl_at_r()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +give_all_aos_and_grad_at_r:()
    +

    File : ao_basis/aos_value.irp.f

    +
    subroutine give_all_aos_and_grad_at_r(r,aos_array,aos_grad_array)
    +
    +
    +

    input : r(1) ==> r(1) = x, r(2) = y, r(3) = z +output : aos_array(i) = ao(i) evaluated at r

    +
    +
    : aos_grad_array(1,i) = gradient X of the ao(i) evaluated at r
    +

    Needs:

    +
    + + +
    +

    Called by:

    +
      +
    • give_all_mos_and_grad_at_r()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +give_all_aos_at_r:()
    +

    File : ao_basis/aos_value.irp.f

    +
    subroutine give_all_aos_at_r(r,aos_array)
    +
    +
    +

    input : r == r(1) = x and so on +aos_array(i) = aos(i) evaluated in r

    +

    Needs:

    +
    + + +
    +

    Called by:

    +
      +
    • give_all_mos_at_r()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +give_all_aos_at_r_old:()
    +

    File : ao_basis/aos_value.irp.f

    +
    subroutine give_all_aos_at_r_old(r,aos_array)
    +
    +
    +

    gives the values of aos at a given point r

    +

    Needs:

    +
      +
    • ao_num
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +primitive_value:()
    +

    File : ao_basis/aos_value.irp.f

    +
    double precision function primitive_value(i,j,r)
    +
    +
    +

    return the value of the jth primitive of ith ao at point r WITHOUT THE COEF

    +

    Needs:

    +
    + +
      +
    • ao_power
    • +
    +
    +
    + +
    +
    + + +
    + +
    + + +
    +
    + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/doc/modules/ao_one_e_ints.html b/doc/modules/ao_one_e_ints.html new file mode 100644 index 00000000..cdd56af5 --- /dev/null +++ b/doc/modules/ao_one_e_ints.html @@ -0,0 +1,2299 @@ + + + + + + + + + + + ao_one_e_integrals — Quantum Package 2.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + +
    + + + + + +
    + +
    + + + + + + + + + + + + + + + + + +
    + + + + +
    +
    +
    +
    + +
    +

    ao_one_e_integrals

    +

    All the one-electron integrals in the AO basis are here.

    +

    The most important providers for usual quantum-chemistry calculation are:

    +
      +
    • ao_kinetic_integral which are the kinetic operator integrals on the AO basis (see kin_ao_ints.irp.f)
    • +
    • ao_nucl_elec_integral which are the nuclear-elctron operator integrals on the AO basis (see pot_ao_ints.irp.f)
    • +
    • ao_one_e_integrals which are the the h_core operator integrals on the AO basis (see ao_mono_ints.irp.f)
    • +
    +

    Note that you can find other interesting integrals related to the position operator in spread_dipole_ao.irp.f.

    +
    +

    EZFIO parameters

    +
    +
    +ao_integrals_e_n
    +

    Nucleus-electron integrals in AO basis set

    +
    + +
    +
    +io_ao_integrals_e_n
    +

    Read/Write AO nucleus-electron attraction integrals from/to disk [ Write | Read | None ]

    +

    Default: None

    +
    + +
    +
    +ao_integrals_kinetic
    +

    Kinetic energy integrals in AO basis set

    +
    + +
    +
    +io_ao_integrals_kinetic
    +

    Read/Write AO kinetic integrals from/to disk [ Write | Read | None ]

    +

    Default: None

    +
    + +
    +
    +ao_integrals_pseudo
    +

    Pseudopotential integrals in AO basis set

    +
    + +
    +
    +io_ao_integrals_pseudo
    +

    Read/Write AO pseudopotential integrals from/to disk [ Write | Read | None ]

    +

    Default: None

    +
    + +
    +
    +ao_integrals_overlap
    +

    Overlap integrals in AO basis set

    +
    + +
    +
    +io_ao_integrals_overlap
    +

    Read/Write AO overlap integrals from/to disk [ Write | Read | None ]

    +

    Default: None

    +
    + +
    +
    +ao_one_e_integrals
    +

    Combined integrals in AO basis set

    +
    + +
    +
    +io_ao_one_e_integrals
    +

    Read/Write AO one-electron integrals from/to disk [ Write | Read | None ]

    +

    Default: None

    +
    + +
    +
    +

    Providers

    +
    +
    +ao_cart_to_sphe_coef
    +

    File : ao_one_e_ints/ao_ortho_canonical.irp.f

    +
    double precision, allocatable   :: ao_cart_to_sphe_coef (ao_num,ao_num)
    +integer :: ao_cart_to_sphe_num
    +
    +
    +

    Coefficients to go from cartesian to spherical coordinates in the current +basis set

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +ao_cart_to_sphe_inv
    +

    File : ao_one_e_ints/ao_ortho_canonical.irp.f

    +
    double precision, allocatable   :: ao_cart_to_sphe_inv  (ao_cart_to_sphe_num,ao_num)
    +
    +
    +

    Inverse of ao_cart_to_sphe_coef

    +

    Needs:

    +
    +
      +
    • ao_num
    • +
    +
      +
    +
    +
    + +
    +
    +ao_cart_to_sphe_num
    +

    File : ao_one_e_ints/ao_ortho_canonical.irp.f

    +
    double precision, allocatable   :: ao_cart_to_sphe_coef (ao_num,ao_num)
    +integer :: ao_cart_to_sphe_num
    +
    +
    +

    Coefficients to go from cartesian to spherical coordinates in the current +basis set

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +ao_cart_to_sphe_overlap
    +

    File : ao_one_e_ints/ao_ortho_canonical.irp.f

    +
    double precision, allocatable   :: ao_cart_to_sphe_overlap      (ao_cart_to_sphe_num,ao_cart_to_sphe_num)
    +
    +
    +

    AO overlap matrix in the spherical basis set

    +

    Needs:

    +
    +
      +
    • ao_num
    • +
    +
    +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +ao_deriv2_x
    +

    File : ao_one_e_ints/kin_ao_ints.irp.f

    +
    double precision, allocatable   :: ao_deriv2_x  (ao_num,ao_num)
    +double precision, allocatable   :: ao_deriv2_y  (ao_num,ao_num)
    +double precision, allocatable   :: ao_deriv2_z  (ao_num,ao_num)
    +
    +
    +

    Second derivative matrix elements in the AO basis.

    +
    +
    :math:`{tt ao_deriv2_x} =
    +
    langle chi_i(x,y,z) | frac{partial^2}{partial x^2} |chi_j (x,y,z) rangle`
    +
    +

    Needs:

    +
    +
      +
    • ao_num
    • +
    • ao_power
    • +
    +
    +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +ao_deriv2_y
    +

    File : ao_one_e_ints/kin_ao_ints.irp.f

    +
    double precision, allocatable   :: ao_deriv2_x  (ao_num,ao_num)
    +double precision, allocatable   :: ao_deriv2_y  (ao_num,ao_num)
    +double precision, allocatable   :: ao_deriv2_z  (ao_num,ao_num)
    +
    +
    +

    Second derivative matrix elements in the AO basis.

    +
    +
    :math:`{tt ao_deriv2_x} =
    +
    langle chi_i(x,y,z) | frac{partial^2}{partial x^2} |chi_j (x,y,z) rangle`
    +
    +

    Needs:

    +
    +
      +
    • ao_num
    • +
    • ao_power
    • +
    +
    +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +ao_deriv2_z
    +

    File : ao_one_e_ints/kin_ao_ints.irp.f

    +
    double precision, allocatable   :: ao_deriv2_x  (ao_num,ao_num)
    +double precision, allocatable   :: ao_deriv2_y  (ao_num,ao_num)
    +double precision, allocatable   :: ao_deriv2_z  (ao_num,ao_num)
    +
    +
    +

    Second derivative matrix elements in the AO basis.

    +
    +
    :math:`{tt ao_deriv2_x} =
    +
    langle chi_i(x,y,z) | frac{partial^2}{partial x^2} |chi_j (x,y,z) rangle`
    +
    +

    Needs:

    +
    +
      +
    • ao_num
    • +
    • ao_power
    • +
    +
    +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +ao_deriv_1_x
    +

    File : ao_one_e_ints/spread_dipole_ao.irp.f

    +
    double precision, allocatable   :: ao_deriv_1_x (ao_num,ao_num)
    +double precision, allocatable   :: ao_deriv_1_y (ao_num,ao_num)
    +double precision, allocatable   :: ao_deriv_1_z (ao_num,ao_num)
    +
    +
    +
      +
    • array of the integrals of AO_i * d/dx AO_j
    • +
    • array of the integrals of AO_i * d/dy AO_j
    • +
    • array of the integrals of AO_i * d/dz AO_j
    • +
    +

    Needs:

    +
    +
      +
    • ao_num
    • +
    • ao_power
    • +
    +
    +
    +
    + +
    +
    +ao_deriv_1_y
    +

    File : ao_one_e_ints/spread_dipole_ao.irp.f

    +
    double precision, allocatable   :: ao_deriv_1_x (ao_num,ao_num)
    +double precision, allocatable   :: ao_deriv_1_y (ao_num,ao_num)
    +double precision, allocatable   :: ao_deriv_1_z (ao_num,ao_num)
    +
    +
    +
      +
    • array of the integrals of AO_i * d/dx AO_j
    • +
    • array of the integrals of AO_i * d/dy AO_j
    • +
    • array of the integrals of AO_i * d/dz AO_j
    • +
    +

    Needs:

    +
    +
      +
    • ao_num
    • +
    • ao_power
    • +
    +
    +
    +
    + +
    +
    +ao_deriv_1_z
    +

    File : ao_one_e_ints/spread_dipole_ao.irp.f

    +
    double precision, allocatable   :: ao_deriv_1_x (ao_num,ao_num)
    +double precision, allocatable   :: ao_deriv_1_y (ao_num,ao_num)
    +double precision, allocatable   :: ao_deriv_1_z (ao_num,ao_num)
    +
    +
    +
      +
    • array of the integrals of AO_i * d/dx AO_j
    • +
    • array of the integrals of AO_i * d/dy AO_j
    • +
    • array of the integrals of AO_i * d/dz AO_j
    • +
    +

    Needs:

    +
    +
      +
    • ao_num
    • +
    • ao_power
    • +
    +
    +
    +
    + +
    +
    +ao_dipole_x
    +

    File : ao_one_e_ints/spread_dipole_ao.irp.f

    +
    double precision, allocatable   :: ao_dipole_x  (ao_num,ao_num)
    +double precision, allocatable   :: ao_dipole_y  (ao_num,ao_num)
    +double precision, allocatable   :: ao_dipole_z  (ao_num,ao_num)
    +
    +
    +
      +
    • array of the integrals of AO_i * x AO_j
    • +
    • array of the integrals of AO_i * y AO_j
    • +
    • array of the integrals of AO_i * z AO_j
    • +
    +

    Needs:

    +
    +
      +
    • ao_num
    • +
    • ao_power
    • +
    +
    +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +ao_dipole_y
    +

    File : ao_one_e_ints/spread_dipole_ao.irp.f

    +
    double precision, allocatable   :: ao_dipole_x  (ao_num,ao_num)
    +double precision, allocatable   :: ao_dipole_y  (ao_num,ao_num)
    +double precision, allocatable   :: ao_dipole_z  (ao_num,ao_num)
    +
    +
    +
      +
    • array of the integrals of AO_i * x AO_j
    • +
    • array of the integrals of AO_i * y AO_j
    • +
    • array of the integrals of AO_i * z AO_j
    • +
    +

    Needs:

    +
    +
      +
    • ao_num
    • +
    • ao_power
    • +
    +
    +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +ao_dipole_z
    +

    File : ao_one_e_ints/spread_dipole_ao.irp.f

    +
    double precision, allocatable   :: ao_dipole_x  (ao_num,ao_num)
    +double precision, allocatable   :: ao_dipole_y  (ao_num,ao_num)
    +double precision, allocatable   :: ao_dipole_z  (ao_num,ao_num)
    +
    +
    +
      +
    • array of the integrals of AO_i * x AO_j
    • +
    • array of the integrals of AO_i * y AO_j
    • +
    • array of the integrals of AO_i * z AO_j
    • +
    +

    Needs:

    +
    +
      +
    • ao_num
    • +
    • ao_power
    • +
    +
    +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +ao_integrals_n_e
    +

    File : ao_one_e_ints/pot_ao_ints.irp.f

    +
    double precision, allocatable   :: ao_integrals_n_e     (ao_num,ao_num)
    +
    +
    +

    Nucleus-electron interaction, in the AO basis set.

    +

    \(\langle \chi_i | -\sum_A \frac{1}{|r-R_A|} | \chi_j \rangle\)

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +ao_integrals_n_e_per_atom
    +

    File : ao_one_e_ints/pot_ao_ints.irp.f

    +
    double precision, allocatable   :: ao_integrals_n_e_per_atom    (ao_num,ao_num,nucl_num)
    +
    +
    +

    Nucleus-electron interaction in the AO basis set, per atom A.

    +

    \(\langle \chi_i | -\frac{1}{|r-R_A|} | \chi_j \rangle\)

    +

    Needs:

    +
    +
      +
    • ao_num
    • +
    • ao_power
    • +
    • ao_prim_num
    • +
    +
    +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +ao_kinetic_integrals
    +

    File : ao_one_e_ints/kin_ao_ints.irp.f

    +
    double precision, allocatable   :: ao_kinetic_integrals (ao_num,ao_num)
    +
    +
    +

    Kinetic energy integrals in the AO basis.

    +

    \(\langle \chi_i |\hat{T}| \chi_j \rangle\)

    +

    Needs:

    +
    +
      +
    • ao_num
    • +
    +
      +
    • read_ao_integrals_kinetic
    • +
    +
    +

    Needed by:

    +
    + +
      +
    +
    +
    + +
    +
    +ao_one_e_integrals
    +

    File : ao_one_e_ints/ao_one_e_ints.irp.f

    +
    double precision, allocatable   :: ao_one_e_integrals   (ao_num,ao_num)
    +double precision, allocatable   :: ao_one_e_integrals_diag      (ao_num)
    +
    +
    +

    One-electron Hamiltonian in the AO basis.

    +

    Needs:

    +
    + +
      +
    • do_pseudo
    • +
    • read_ao_one_e_integrals
    • +
    +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +ao_one_e_integrals_diag
    +

    File : ao_one_e_ints/ao_one_e_ints.irp.f

    +
    double precision, allocatable   :: ao_one_e_integrals   (ao_num,ao_num)
    +double precision, allocatable   :: ao_one_e_integrals_diag      (ao_num)
    +
    +
    +

    One-electron Hamiltonian in the AO basis.

    +

    Needs:

    +
    + +
      +
    • do_pseudo
    • +
    • read_ao_one_e_integrals
    • +
    +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +ao_ortho_canonical_coef
    +

    File : ao_one_e_ints/ao_ortho_canonical.irp.f

    +
    double precision, allocatable   :: ao_ortho_canonical_coef      (ao_num,ao_num)
    +integer :: ao_ortho_canonical_num
    +
    +
    +

    matrix of the coefficients of the mos generated by the +orthonormalization by the S^{-1/2} canonical transformation of the aos +ao_ortho_canonical_coef(i,j) = coefficient of the ith ao on the jth ao_ortho_canonical orbital

    +

    Needs:

    +
    +
      +
    • ao_cartesian
    • +
    • ao_num
    • +
    +
    +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +ao_ortho_canonical_coef_inv
    +

    File : ao_one_e_ints/ao_ortho_canonical.irp.f

    +
    double precision, allocatable   :: ao_ortho_canonical_coef_inv  (ao_num,ao_num)
    +
    +
    +

    ao_ortho_canonical_coef^(-1)

    +

    Needs:

    +
      +
    • ao_num
    • +
    +
    +
      +
    +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +ao_ortho_canonical_num
    +

    File : ao_one_e_ints/ao_ortho_canonical.irp.f

    +
    double precision, allocatable   :: ao_ortho_canonical_coef      (ao_num,ao_num)
    +integer :: ao_ortho_canonical_num
    +
    +
    +

    matrix of the coefficients of the mos generated by the +orthonormalization by the S^{-1/2} canonical transformation of the aos +ao_ortho_canonical_coef(i,j) = coefficient of the ith ao on the jth ao_ortho_canonical orbital

    +

    Needs:

    +
    +
      +
    • ao_cartesian
    • +
    • ao_num
    • +
    +
    +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +ao_ortho_canonical_overlap
    +

    File : ao_one_e_ints/ao_ortho_canonical.irp.f

    +
    double precision, allocatable   :: ao_ortho_canonical_overlap   (ao_ortho_canonical_num,ao_ortho_canonical_num)
    +
    +
    +

    overlap matrix of the ao_ortho_canonical. +Expected to be the Identity

    +

    Needs:

    +
      +
    • ao_num
    • +
    +
    + +
    +
    + +
    +
    +ao_overlap
    +

    File : ao_one_e_ints/ao_overlap.irp.f

    +
    double precision, allocatable   :: ao_overlap   (ao_num,ao_num)
    +double precision, allocatable   :: ao_overlap_x (ao_num,ao_num)
    +double precision, allocatable   :: ao_overlap_y (ao_num,ao_num)
    +double precision, allocatable   :: ao_overlap_z (ao_num,ao_num)
    +
    +
    +

    Overlap between atomic basis functions:

    +

    \(\int \chi_i(r) \chi_j(r) dr\)

    +

    Needs:

    +
    +
      +
    • ao_num
    • +
    • ao_power
    • +
    • ao_prim_num
    • +
    +
    +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +ao_overlap_abs
    +

    File : ao_one_e_ints/ao_overlap.irp.f

    +
    double precision, allocatable   :: ao_overlap_abs       (ao_num,ao_num)
    +
    +
    +

    Overlap between absolute values of atomic basis functions:

    +

    \(\int |\chi_i(r)| |\chi_j(r)| dr\)

    +

    Needs:

    +
    +
      +
    • ao_num
    • +
    • ao_power
    • +
    +
    +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +ao_overlap_x
    +

    File : ao_one_e_ints/ao_overlap.irp.f

    +
    double precision, allocatable   :: ao_overlap   (ao_num,ao_num)
    +double precision, allocatable   :: ao_overlap_x (ao_num,ao_num)
    +double precision, allocatable   :: ao_overlap_y (ao_num,ao_num)
    +double precision, allocatable   :: ao_overlap_z (ao_num,ao_num)
    +
    +
    +

    Overlap between atomic basis functions:

    +

    \(\int \chi_i(r) \chi_j(r) dr\)

    +

    Needs:

    +
    +
      +
    • ao_num
    • +
    • ao_power
    • +
    • ao_prim_num
    • +
    +
    +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +ao_overlap_y
    +

    File : ao_one_e_ints/ao_overlap.irp.f

    +
    double precision, allocatable   :: ao_overlap   (ao_num,ao_num)
    +double precision, allocatable   :: ao_overlap_x (ao_num,ao_num)
    +double precision, allocatable   :: ao_overlap_y (ao_num,ao_num)
    +double precision, allocatable   :: ao_overlap_z (ao_num,ao_num)
    +
    +
    +

    Overlap between atomic basis functions:

    +

    \(\int \chi_i(r) \chi_j(r) dr\)

    +

    Needs:

    +
    +
      +
    • ao_num
    • +
    • ao_power
    • +
    • ao_prim_num
    • +
    +
    +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +ao_overlap_z
    +

    File : ao_one_e_ints/ao_overlap.irp.f

    +
    double precision, allocatable   :: ao_overlap   (ao_num,ao_num)
    +double precision, allocatable   :: ao_overlap_x (ao_num,ao_num)
    +double precision, allocatable   :: ao_overlap_y (ao_num,ao_num)
    +double precision, allocatable   :: ao_overlap_z (ao_num,ao_num)
    +
    +
    +

    Overlap between atomic basis functions:

    +

    \(\int \chi_i(r) \chi_j(r) dr\)

    +

    Needs:

    +
    +
      +
    • ao_num
    • +
    • ao_power
    • +
    • ao_prim_num
    • +
    +
    +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +ao_pseudo_integrals
    +

    File : ao_one_e_ints/pot_ao_pseudo_ints.irp.f

    +
    double precision, allocatable   :: ao_pseudo_integrals  (ao_num,ao_num)
    +
    +
    +

    Pseudo-potential integrals in the AO basis set.

    +

    Needs:

    +
    +
      +
    • do_pseudo
    • +
    • pseudo_klocmax
    • +
    +
      +
    • pseudo_kmax
    • +
    • read_ao_integrals_pseudo
    • +
    +
    +

    Needed by:

    +
    + +
      +
    +
    +
    + +
    +
    +ao_pseudo_integrals_local
    +

    File : ao_one_e_ints/pot_ao_pseudo_ints.irp.f

    +
    double precision, allocatable   :: ao_pseudo_integrals_local    (ao_num,ao_num)
    +
    +
    +

    Local pseudo-potential

    +

    Needs:

    +
    +
      +
    • ao_power
    • +
    • ao_prim_num
    • +
    • nucl_charge
    • +
    • nucl_coord
    • +
    +
    +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +ao_pseudo_integrals_non_local
    +

    File : ao_one_e_ints/pot_ao_pseudo_ints.irp.f

    +
    double precision, allocatable   :: ao_pseudo_integrals_non_local        (ao_num,ao_num)
    +
    +
    +

    Non-local pseudo-potential

    +

    Needs:

    +
    +
      +
    • ao_power
    • +
    • ao_prim_num
    • +
    • nucl_charge
    • +
    • nucl_coord
    • +
    +
    +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +ao_spread_x
    +

    File : ao_one_e_ints/spread_dipole_ao.irp.f

    +
    double precision, allocatable   :: ao_spread_x  (ao_num,ao_num)
    +double precision, allocatable   :: ao_spread_y  (ao_num,ao_num)
    +double precision, allocatable   :: ao_spread_z  (ao_num,ao_num)
    +
    +
    +
      +
    • array of the integrals of AO_i * x^2 AO_j
    • +
    • array of the integrals of AO_i * y^2 AO_j
    • +
    • array of the integrals of AO_i * z^2 AO_j
    • +
    +

    Needs:

    +
    +
      +
    • ao_num
    • +
    • ao_power
    • +
    +
    +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +ao_spread_y
    +

    File : ao_one_e_ints/spread_dipole_ao.irp.f

    +
    double precision, allocatable   :: ao_spread_x  (ao_num,ao_num)
    +double precision, allocatable   :: ao_spread_y  (ao_num,ao_num)
    +double precision, allocatable   :: ao_spread_z  (ao_num,ao_num)
    +
    +
    +
      +
    • array of the integrals of AO_i * x^2 AO_j
    • +
    • array of the integrals of AO_i * y^2 AO_j
    • +
    • array of the integrals of AO_i * z^2 AO_j
    • +
    +

    Needs:

    +
    +
      +
    • ao_num
    • +
    • ao_power
    • +
    +
    +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +ao_spread_z
    +

    File : ao_one_e_ints/spread_dipole_ao.irp.f

    +
    double precision, allocatable   :: ao_spread_x  (ao_num,ao_num)
    +double precision, allocatable   :: ao_spread_y  (ao_num,ao_num)
    +double precision, allocatable   :: ao_spread_z  (ao_num,ao_num)
    +
    +
    +
      +
    • array of the integrals of AO_i * x^2 AO_j
    • +
    • array of the integrals of AO_i * y^2 AO_j
    • +
    • array of the integrals of AO_i * z^2 AO_j
    • +
    +

    Needs:

    +
    +
      +
    • ao_num
    • +
    • ao_power
    • +
    +
    +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +give_polynomial_mult_center_one_e_erf:()
    +

    File : ao_one_e_ints/pot_ao_erf_ints.irp.f

    +
      subroutine give_polynomial_mult_center_one_e_erf(A_center,B_center,alpha,beta,&
    +power_A,power_B,C_center,n_pt_in,d,n_pt_out,mu_in)
    +
    +
    +

    Returns the explicit polynomial in terms of the $t$ variable of the following polynomial:

    +

    $I_{x1}(a_x, d_x,p,q) times I_{x1}(a_y, d_y,p,q) times I_{x1}(a_z, d_z,p,q)$.

    +

    Calls:

    +
      +
    • i_x1_pol_mult_one_e()
    • +
    +
      +
    • multiply_poly()
    • +
    +
      +
    +
    +
    + +
    +
    +give_polynomial_mult_center_one_e_erf_opt:()
    +

    File : ao_one_e_ints/pot_ao_erf_ints.irp.f

    +
      subroutine give_polynomial_mult_center_one_e_erf_opt(A_center,B_center,alpha,beta,&
    +power_A,power_B,C_center,n_pt_in,d,n_pt_out,mu_in,p,p_inv,p_inv_2,p_new,P_center)
    +
    +
    +

    Returns the explicit polynomial in terms of the $t$ variable of the following polynomial:

    +

    $I_{x1}(a_x, d_x,p,q) times I_{x1}(a_y, d_y,p,q) times I_{x1}(a_z, d_z,p,q)$.

    +

    Called by:

    +
      +
    • nai_pol_mult_erf()
    • +
    +
      +
    +
      +
    +
    +

    Calls:

    +
      +
    • i_x1_pol_mult_one_e()
    • +
    +
      +
    • multiply_poly()
    • +
    +
      +
    +
    +
    + +
    +
    +i_x1_pol_mult_one_e:()
    +

    File : ao_one_e_ints/pot_ao_ints.irp.f

    +
    recursive subroutine I_x1_pol_mult_one_e(a,c,R1x,R1xp,R2x,d,nd,n_pt_in)
    +
    +
    +

    Recursive routine involved in the electron-nucleus potential

    +

    Called by:

    +
      +
    • give_polynomial_mult_center_one_e()
    • +
    • give_polynomial_mult_center_one_e_erf()
    • +
    +
      +
    • give_polynomial_mult_center_one_e_erf_opt()
    • +
    • i_x1_pol_mult_one_e()
    • +
    +
      +
    • i_x2_pol_mult_one_e()
    • +
    +
    +

    Calls:

    +
      +
    • i_x1_pol_mult_one_e()
    • +
    +
      +
    • i_x2_pol_mult_one_e()
    • +
    +
      +
    • multiply_poly()
    • +
    +
    +
    + +
    +
    +i_x2_pol_mult_one_e:()
    +

    File : ao_one_e_ints/pot_ao_ints.irp.f

    +
    recursive subroutine I_x2_pol_mult_one_e(c,R1x,R1xp,R2x,d,nd,dim)
    +
    +
    +

    Recursive routine involved in the electron-nucleus potential

    +

    Called by:

    +
      +
    • i_x1_pol_mult_one_e()
    • +
    +
      +
    +
      +
    +
    +

    Calls:

    +
      +
    • i_x1_pol_mult_one_e()
    • +
    +
      +
    • multiply_poly()
    • +
    +
      +
    +
    +
    + +
    +
    +pseudo_dz_k_transp
    +

    File : ao_one_e_ints/pot_ao_pseudo_ints.irp.f

    +
    double precision, allocatable   :: pseudo_v_k_transp    (pseudo_klocmax,nucl_num)
    +integer, allocatable    :: pseudo_n_k_transp    (pseudo_klocmax,nucl_num)
    +double precision, allocatable   :: pseudo_dz_k_transp   (pseudo_klocmax,nucl_num)
    +
    +
    +

    Transposed arrays for pseudopotentials

    +

    Needs:

    +
      +
    • nucl_num
    • +
    • pseudo_dz_k
    • +
    +
      +
    • pseudo_klocmax
    • +
    • pseudo_n_k
    • +
    +
      +
    • pseudo_v_k
    • +
    +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +pseudo_dz_kl_transp
    +

    File : ao_one_e_ints/pot_ao_pseudo_ints.irp.f

    +
    double precision, allocatable   :: pseudo_v_kl_transp   (pseudo_kmax,0:pseudo_lmax,nucl_num)
    +integer, allocatable    :: pseudo_n_kl_transp   (pseudo_kmax,0:pseudo_lmax,nucl_num)
    +double precision, allocatable   :: pseudo_dz_kl_transp  (pseudo_kmax,0:pseudo_lmax,nucl_num)
    +
    +
    +

    Transposed arrays for pseudopotentials

    +

    Needs:

    +
      +
    • nucl_num
    • +
    • pseudo_dz_kl
    • +
    +
      +
    • pseudo_kmax
    • +
    • pseudo_lmax
    • +
    +
      +
    • pseudo_n_kl
    • +
    • pseudo_v_kl
    • +
    +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +pseudo_n_k_transp
    +

    File : ao_one_e_ints/pot_ao_pseudo_ints.irp.f

    +
    double precision, allocatable   :: pseudo_v_k_transp    (pseudo_klocmax,nucl_num)
    +integer, allocatable    :: pseudo_n_k_transp    (pseudo_klocmax,nucl_num)
    +double precision, allocatable   :: pseudo_dz_k_transp   (pseudo_klocmax,nucl_num)
    +
    +
    +

    Transposed arrays for pseudopotentials

    +

    Needs:

    +
      +
    • nucl_num
    • +
    • pseudo_dz_k
    • +
    +
      +
    • pseudo_klocmax
    • +
    • pseudo_n_k
    • +
    +
      +
    • pseudo_v_k
    • +
    +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +pseudo_n_kl_transp
    +

    File : ao_one_e_ints/pot_ao_pseudo_ints.irp.f

    +
    double precision, allocatable   :: pseudo_v_kl_transp   (pseudo_kmax,0:pseudo_lmax,nucl_num)
    +integer, allocatable    :: pseudo_n_kl_transp   (pseudo_kmax,0:pseudo_lmax,nucl_num)
    +double precision, allocatable   :: pseudo_dz_kl_transp  (pseudo_kmax,0:pseudo_lmax,nucl_num)
    +
    +
    +

    Transposed arrays for pseudopotentials

    +

    Needs:

    +
      +
    • nucl_num
    • +
    • pseudo_dz_kl
    • +
    +
      +
    • pseudo_kmax
    • +
    • pseudo_lmax
    • +
    +
      +
    • pseudo_n_kl
    • +
    • pseudo_v_kl
    • +
    +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +pseudo_v_k_transp
    +

    File : ao_one_e_ints/pot_ao_pseudo_ints.irp.f

    +
    double precision, allocatable   :: pseudo_v_k_transp    (pseudo_klocmax,nucl_num)
    +integer, allocatable    :: pseudo_n_k_transp    (pseudo_klocmax,nucl_num)
    +double precision, allocatable   :: pseudo_dz_k_transp   (pseudo_klocmax,nucl_num)
    +
    +
    +

    Transposed arrays for pseudopotentials

    +

    Needs:

    +
      +
    • nucl_num
    • +
    • pseudo_dz_k
    • +
    +
      +
    • pseudo_klocmax
    • +
    • pseudo_n_k
    • +
    +
      +
    • pseudo_v_k
    • +
    +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +pseudo_v_kl_transp
    +

    File : ao_one_e_ints/pot_ao_pseudo_ints.irp.f

    +
    double precision, allocatable   :: pseudo_v_kl_transp   (pseudo_kmax,0:pseudo_lmax,nucl_num)
    +integer, allocatable    :: pseudo_n_kl_transp   (pseudo_kmax,0:pseudo_lmax,nucl_num)
    +double precision, allocatable   :: pseudo_dz_kl_transp  (pseudo_kmax,0:pseudo_lmax,nucl_num)
    +
    +
    +

    Transposed arrays for pseudopotentials

    +

    Needs:

    +
      +
    • nucl_num
    • +
    • pseudo_dz_kl
    • +
    +
      +
    • pseudo_kmax
    • +
    • pseudo_lmax
    • +
    +
      +
    • pseudo_n_kl
    • +
    • pseudo_v_kl
    • +
    +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +s_half
    +

    File : ao_one_e_ints/ao_overlap.irp.f

    +
    double precision, allocatable   :: s_half       (ao_num,ao_num)
    +
    +
    +

    \(S^{1/2}\)

    +

    Needs:

    +
      +
    • ao_num
    • +
    +
    +
      +
    +
    +
    + +
    +
    +s_half_inv
    +

    File : ao_one_e_ints/ao_overlap.irp.f

    +
    double precision, allocatable   :: s_half_inv   (AO_num,AO_num)
    +
    +
    +

    \(X = S^{-1/2}\) obtained by SVD

    +

    Needs:

    +
      +
    • ao_num
    • +
    +
    +
      +
    +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +s_inv
    +

    File : ao_one_e_ints/ao_overlap.irp.f

    +
    double precision, allocatable   :: s_inv        (ao_num,ao_num)
    +
    +
    +

    Inverse of the overlap matrix

    +

    Needs:

    +
      +
    • ao_num
    • +
    +
    +
      +
    +
    +
    + +
    +
    +

    Subroutines / functions

    +
    +
    +give_all_erf_kl_ao:()
    +

    File : ao_one_e_ints/pot_ao_erf_ints.irp.f

    +
    subroutine give_all_erf_kl_ao(integrals_ao,mu_in,C_center)
    +
    +
    +

    Subroutine that returns all integrals over $r$ of type +$frac{ erf(mu * |r-R_C|) }{ |r-R_C| }$

    +

    Needs:

    +
      +
    • ao_num
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +give_polynomial_mult_center_one_e:()
    +

    File : ao_one_e_ints/pot_ao_ints.irp.f

    +
    subroutine give_polynomial_mult_center_one_e(A_center,B_center,alpha,beta,power_A,power_B,C_center,n_pt_in,d,n_pt_out)
    +
    +
    +

    Returns the explicit polynomial in terms of the “t” variable of the following

    +

    $I_{x1}(a_x, d_x,p,q) times I_{x1}(a_y, d_y,p,q) times I_{x1}(a_z, d_z,p,q)$.

    +

    Called by:

    +
      +
    • nai_pol_mult()
    • +
    +
      +
    +
      +
    +
    +

    Calls:

    +
      +
    • i_x1_pol_mult_one_e()
    • +
    +
      +
    • multiply_poly()
    • +
    +
      +
    +
    +
    + +
    +
    +int_gaus_pol:()
    +

    File : ao_one_e_ints/pot_ao_ints.irp.f

    +
    double precision function int_gaus_pol(alpha,n)
    +
    +
    +

    Computes the integral:

    +

    $int_{-infty}^{infty} x^n exp(-alpha x^2) dx$.

    +
    + +
    +
    +nai_pol_mult:()
    +

    File : ao_one_e_ints/pot_ao_ints.irp.f

    +
    double precision function NAI_pol_mult(A_center,B_center,power_A,power_B,alpha,beta,C_center,n_pt_in)
    +
    +
    +

    Computes the electron-nucleus attraction with two primitves.

    +

    \(\langle g_i | \frac{1}{|r-R_c|} | g_j \rangle\)

    +

    Calls:

    +
      +
    • give_polynomial_mult_center_one_e()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +nai_pol_mult_erf:()
    +

    File : ao_one_e_ints/pot_ao_erf_ints.irp.f

    +
    double precision function NAI_pol_mult_erf(A_center,B_center,power_A,power_B,alpha,beta,C_center,n_pt_in,mu_in)
    +
    +
    +

    Computes the following integral : +$int dr (x-A_x)^a (x-B_x)^b exp(-alpha (x-A_x)^2 - beta (x-B_x)^2 )

    +
    +
    frac{erf(mu |r-R_C|)}{|r-R_c|}$.
    +

    Calls:

    +
      +
    • give_polynomial_mult_center_one_e_erf_opt()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +nai_pol_mult_erf_ao:()
    +

    File : ao_one_e_ints/pot_ao_erf_ints.irp.f

    +
    double precision function NAI_pol_mult_erf_ao(i_ao,j_ao,mu_in,C_center)
    +
    +
    +

    Computes the following integral : +$int_{-infty}^{infty} dr chi_i(r) chi_j(r) frac{erf(mu |r-R_C|)}{|r-R_C|}$.

    +

    Needs:

    +
    + + +
    +
    + +
    +
    +overlap_bourrin_deriv_x:()
    +

    File : ao_one_e_ints/spread_dipole_ao.irp.f

    +
    subroutine overlap_bourrin_deriv_x(i_component,A_center,B_center,alpha,beta,power_A,power_B,dx,lower_exp_val,overlap_x,nx)
    +
    +
    +

    Called by:

    +
    +
      +
    +
      +
    +
    +

    Calls:

    +
      +
    • overlap_bourrin_x()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +overlap_bourrin_dipole:()
    +

    File : ao_one_e_ints/spread_dipole_ao.irp.f

    +
    subroutine overlap_bourrin_dipole(A_center,B_center,alpha,beta,power_A,power_B,overlap_x,lower_exp_val,dx,nx)
    +
    +
    +

    Called by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +overlap_bourrin_spread:()
    +

    File : ao_one_e_ints/spread_dipole_ao.irp.f

    +
    subroutine overlap_bourrin_spread(A_center,B_center,alpha,beta,power_A,power_B,overlap_x,lower_exp_val,dx,nx)
    +
    +
    +
    +
    Computes the following integral :
    +
    int [-infty ; +infty] of [(x-A_center)^(power_A) * (x-B_center)^power_B * exp(-alpha(x-A_center)^2) * exp(-beta(x-B_center)^2) * x ] +needed for the dipole and those things
    +
    +

    Called by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +overlap_bourrin_x:()
    +

    File : ao_one_e_ints/spread_dipole_ao.irp.f

    +
    subroutine overlap_bourrin_x(A_center,B_center,alpha,beta,power_A,power_B,overlap_x,lower_exp_val,dx,nx)
    +
    +
    +

    Called by:

    +
      +
    • overlap_bourrin_deriv_x()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +v_e_n:()
    +

    File : ao_one_e_ints/pot_ao_ints.irp.f

    +
    double precision function V_e_n(a_x,a_y,a_z,b_x,b_y,b_z,alpha,beta)
    +
    +
    +

    Primitve nuclear attraction between the two primitves centered on the same atom.

    +

    $p_1 = x^{a_x} y^{a_y} z^{a_z} exp(-alpha r^2)$

    +

    $p_2 = x^{b_x} y^{b_y} z^{b_z} exp(-beta r^2)$

    +
    + +
    +
    +v_phi:()
    +

    File : ao_one_e_ints/pot_ao_ints.irp.f

    +
    double precision function V_phi(n,m)
    +
    +
    +

    Computes the angular $phi$ part of the nuclear attraction integral:

    +

    $int_{0}^{2 pi} cos(phi)^n sin(phi)^m dphi$.

    +
    + +
    +
    +v_r:()
    +

    File : ao_one_e_ints/pot_ao_ints.irp.f

    +
    double precision function V_r(n,alpha)
    +
    +
    +

    Computes the radial part of the nuclear attraction integral:

    +

    $int_{0}^{infty} r^n exp(-alpha r^2) dr$

    +
    + +
    +
    +v_theta:()
    +

    File : ao_one_e_ints/pot_ao_ints.irp.f

    +
    double precision function V_theta(n,m)
    +
    +
    +

    Computes the angular $theta$ part of the nuclear attraction integral:

    +

    $int_{0}^{pi} cos(theta)^n sin(theta)^m dtheta$

    +
    + +
    +
    +wallis:()
    +

    File : ao_one_e_ints/pot_ao_ints.irp.f

    +
    double precision function Wallis(n)
    +
    +
    +

    Wallis integral:

    +

    $int_{0}^{pi} cos(theta)^n dtheta$.

    +
    + +
    +
    + + +
    + +
    + + +
    +
    + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/doc/modules/ao_two_e_erf_ints.html b/doc/modules/ao_two_e_erf_ints.html new file mode 100644 index 00000000..6fb82e5f --- /dev/null +++ b/doc/modules/ao_two_e_erf_ints.html @@ -0,0 +1,1233 @@ + + + + + + + + + + + ao_two_e_erf_ints — Quantum Package 2.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + +
    + + + + + +
    + +
    + + + + + + + + + + + + + + + + + +
    + + + + +
    +
    +
    +
    + +
    +

    ao_two_e_erf_ints

    +

    Here, all two-electron integrals (\(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 utils/map_module.f90.

    +

    The main parameter of this module is 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

    +
    +
    +io_ao_two_e_integrals_erf
    +

    Read/Write AO integrals with the long range interaction from/to disk [ Write | Read | None ]

    +

    Default: None

    +
    + +
    +
    +mu_erf
    +

    cutting of the interaction in the range separated model

    +

    Default: 0.5

    +
    + +
    +
    +

    Providers

    +
    +
    +ao_integrals_erf_cache
    +

    File : ao_two_e_erf_ints/map_integrals_erf.irp.f

    +
    double precision, allocatable   :: ao_integrals_erf_cache       (0:64*64*64*64)
    +
    +
    +

    Cache of AO integrals for fast access

    +

    Needs:

    +
    + + +
    +
    + +
    +
    +ao_integrals_erf_cache_max
    +

    File : ao_two_e_erf_ints/map_integrals_erf.irp.f

    +
    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:

    +
      +
    • ao_num
    • +
    +
      +
    +
      +
    +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +ao_integrals_erf_cache_min
    +

    File : ao_two_e_erf_ints/map_integrals_erf.irp.f

    +
    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:

    +
      +
    • ao_num
    • +
    +
      +
    +
      +
    +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +ao_integrals_erf_map
    +

    File : ao_two_e_erf_ints/map_integrals_erf.irp.f

    +
    type(map_type)  :: ao_integrals_erf_map
    +
    +
    +

    AO integrals

    +

    Needs:

    +
      +
    • ao_num
    • +
    +
      +
    +
      +
    +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +ao_two_e_integral_erf_schwartz
    +

    File : ao_two_e_erf_ints/providers_ao_erf.irp.f

    +
    double precision, allocatable   :: ao_two_e_integral_erf_schwartz       (ao_num,ao_num)
    +
    +
    +

    Needed to compute Schwartz inequalities

    +

    Needs:

    +
    +
      +
    • ao_num
    • +
    • ao_power
    • +
    • ao_prim_num
    • +
    +
    +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +ao_two_e_integrals_erf_in_map
    +

    File : ao_two_e_erf_ints/providers_ao_erf.irp.f

    +
    logical :: ao_two_e_integrals_erf_in_map
    +
    +
    +
    +
    Map of Atomic integrals
    +
    i(r1) j(r2) 1/r12 k(r1) l(r2)
    +
    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +general_primitive_integral_erf:()
    +

    File : ao_two_e_erf_ints/two_e_integrals_erf.irp.f

    +
      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:

    +
      +
    • mu_erf
    • +
    +
      +
    +
      +
    +
    +

    Calls:

    +
      +
    • add_poly_multiply()
    • +
    +
      +
    • give_polynom_mult_center_x()
    • +
    +
      +
    • multiply_poly()
    • +
    +
    +
    + +
    +
    +

    Subroutines / functions

    +
    +
    +ao_two_e_integral_erf:()
    +

    File : ao_two_e_erf_ints/two_e_integrals_erf.irp.f

    +
    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:

    +
    + + +
    +

    Calls:

    +
      +
    • give_explicit_poly_and_gaussian()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +ao_two_e_integral_schwartz_accel_erf:()
    +

    File : ao_two_e_erf_ints/two_e_integrals_erf.irp.f

    +
    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:

    +
    + + +
    +

    Calls:

    +
      +
    • give_explicit_poly_and_gaussian()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +ao_two_e_integrals_erf_in_map_collector:()
    +

    File : ao_two_e_erf_ints/integrals_erf_in_map_slave.irp.f

    +
    subroutine ao_two_e_integrals_erf_in_map_collector(zmq_socket_pull)
    +
    +
    +

    Collects results from the AO integral calculation

    +

    Needs:

    +
    +
      +
    • ao_num
    • +
    +
      +
    +
    +

    Called by:

    +
    +
      +
    +
      +
    +
    +

    Calls:

    +
      +
    • end_zmq_to_qp_run_socket()
    • +
    +
      +
    • insert_into_ao_integrals_erf_map()
    • +
    +
      +
    +
    +
    + +
    +
    +ao_two_e_integrals_erf_in_map_slave:()
    +

    File : ao_two_e_erf_ints/integrals_erf_in_map_slave.irp.f

    +
    subroutine ao_two_e_integrals_erf_in_map_slave(thread,iproc)
    +
    +
    +

    Computes a buffer of integrals

    +

    Needs:

    +
      +
    • ao_num
    • +
    +
      +
    +
      +
    +
    +

    Called by:

    +
      +
    • ao_two_e_integrals_erf_in_map_slave_inproc()
    • +
    +
      +
    • ao_two_e_integrals_erf_in_map_slave_tcp()
    • +
    +
      +
    +
    +

    Calls:

    +
      +
    • compute_ao_integrals_erf_jl()
    • +
    • end_zmq_push_socket()
    • +
    +
      +
    • end_zmq_to_qp_run_socket()
    • +
    +
      +
    • push_integrals()
    • +
    +
    +
    + +
    +
    +ao_two_e_integrals_erf_in_map_slave_inproc:()
    +

    File : ao_two_e_erf_ints/integrals_erf_in_map_slave.irp.f

    +
    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:

    +
    +
      +
    +
      +
    +
    +

    Calls:

    +
      +
    • ao_two_e_integrals_erf_in_map_slave()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +ao_two_e_integrals_erf_in_map_slave_tcp:()
    +

    File : ao_two_e_erf_ints/integrals_erf_in_map_slave.irp.f

    +
    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:

    +
      +
    • ao_two_e_integrals_erf_in_map_slave()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +clear_ao_erf_map:()
    +

    File : ao_two_e_erf_ints/map_integrals_erf.irp.f

    +
    subroutine clear_ao_erf_map
    +
    +
    +

    Frees the memory of the AO map

    +

    Needs:

    +
    +
      +
    +
      +
    +
    +

    Calls:

    +
      +
    • map_deinit()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +compute_ao_integrals_erf_jl:()
    +

    File : ao_two_e_erf_ints/two_e_integrals_erf.irp.f

    +
    subroutine compute_ao_integrals_erf_jl(j,l,n_integrals,buffer_i,buffer_value)
    +
    +
    +

    Parallel client for AO integrals

    +

    Needs:

    +
    +
      +
    • ao_integrals_threshold
    • +
    +
    +
    +

    Called by:

    +
      +
    • ao_two_e_integrals_erf_in_map_slave()
    • +
    +
      +
    +
      +
    +
    +

    Calls:

    +
      +
    • two_e_integrals_index()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +compute_ao_two_e_integrals_erf:()
    +

    File : ao_two_e_erf_ints/two_e_integrals_erf.irp.f

    +
    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:

    +
    +
      +
    • ao_num
    • +
    +
    +
    +

    Called by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +dump_ao_integrals_erf:()
    +

    File : ao_two_e_erf_ints/map_integrals_erf.irp.f

    +
    subroutine dump_ao_integrals_erf(filename)
    +
    +
    +

    Save to disk the AO erf integrals

    +

    Needs:

    +
    +
      +
    +
      +
    +
    +

    Calls:

    +
      +
    • ezfio_set_work_empty()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +eri_erf:()
    +

    File : ao_two_e_erf_ints/two_e_integrals_erf.irp.f

    +
    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:

    +
      +
    • mu_erf
    • +
    +
      +
    +
      +
    +
    +

    Calls:

    +
      +
    • integrale_new_erf()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +get_ao_erf_map_size:()
    +

    File : ao_two_e_erf_ints/map_integrals_erf.irp.f

    +
    function get_ao_erf_map_size()
    +
    +
    +

    Returns the number of elements in the AO map

    +

    Needs:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +get_ao_two_e_integral_erf:()
    +

    File : ao_two_e_erf_ints/map_integrals_erf.irp.f

    +
    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:

    +
    + + +
    +

    Calls:

    +
      +
    • map_get()
    • +
    +
      +
    • two_e_integrals_index()
    • +
    +
      +
    +
    +
    + +
    +
    +get_ao_two_e_integrals_erf:()
    +

    File : ao_two_e_erf_ints/map_integrals_erf.irp.f

    +
    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:

    +
    +
      +
    • ao_integrals_threshold
    • +
    +
    +
    +

    Called by:

    +
      +
    • add_integrals_to_map_erf()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +get_ao_two_e_integrals_erf_non_zero:()
    +

    File : ao_two_e_erf_ints/map_integrals_erf.irp.f

    +
    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:

    +
    + + +
    +

    Called by:

    +
    +
      +
    +
      +
    +
    +

    Calls:

    +
      +
    • map_get()
    • +
    +
      +
    • two_e_integrals_index()
    • +
    +
      +
    +
    +
    + +
    +
    +insert_into_ao_integrals_erf_map:()
    +

    File : ao_two_e_erf_ints/map_integrals_erf.irp.f

    +
    subroutine insert_into_ao_integrals_erf_map(n_integrals,buffer_i, buffer_values)
    +
    +
    +

    Create new entry into AO map

    +

    Needs:

    +
    +
      +
    +
      +
    +
    +

    Called by:

    +
      +
    • ao_two_e_integrals_erf_in_map_collector()
    • +
    +
      +
    +
      +
    +
    +

    Calls:

    +
      +
    • map_append()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +integrale_new_erf:()
    +

    File : ao_two_e_erf_ints/two_e_integrals_erf.irp.f

    +
    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:

    +
      +
    • mu_erf
    • +
    +
    + +
    +

    Called by:

    +
      +
    • eri_erf()
    • +
    +
      +
    +
      +
    +
    +

    Calls:

    +
      +
    • i_x1_new()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +load_ao_integrals_erf:()
    +

    File : ao_two_e_erf_ints/map_integrals_erf.irp.f

    +
    integer function load_ao_integrals_erf(filename)
    +
    +
    +

    Read from disk the AO erf integrals

    +

    Needs:

    +
    +
      +
    +
      +
    +
    +

    Calls:

    +
      +
    • cache_map_reallocate()
    • +
    +
      +
    • map_deinit()
    • +
    +
      +
    • map_sort()
    • +
    +
    +
    + +
    +
    +save_erf_two_e_integrals_ao:()
    +

    File : ao_two_e_erf_ints/routines_save_integrals_erf.irp.f

    +
    subroutine save_erf_two_e_integrals_ao
    +
    +
    +

    Needs:

    +
    + + +
    +

    Called by:

    +
      +
    • routine()
    • +
    +
      +
    +
      +
    +
    +

    Calls:

    +
      +
    • ezfio_set_ao_two_e_erf_ints_io_ao_two_e_integrals_erf()
    • +
    +
      +
    • ezfio_set_work_empty()
    • +
    +
      +
    • map_save_to_disk()
    • +
    +
    +
    + +
    +
    +save_erf_two_e_ints_ao_into_ints_ao:()
    +

    File : ao_two_e_erf_ints/routines_save_integrals_erf.irp.f

    +
    subroutine save_erf_two_e_ints_ao_into_ints_ao
    +
    +
    +

    Needs:

    +
    + + +
    +

    Calls:

    +
      +
    • ezfio_set_ao_two_e_ints_io_ao_two_e_integrals()
    • +
    +
      +
    • ezfio_set_work_empty()
    • +
    +
      +
    • map_save_to_disk()
    • +
    +
    +
    + +
    +
    + + +
    + +
    + + +
    +
    + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/doc/modules/ao_two_e_ints.html b/doc/modules/ao_two_e_ints.html new file mode 100644 index 00000000..ee9470a9 --- /dev/null +++ b/doc/modules/ao_two_e_ints.html @@ -0,0 +1,1612 @@ + + + + + + + + + + + ao_two_e_ints — Quantum Package 2.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + +
    + + + + + +
    + +
    + + + + + + + + + + + + + + + + + +
    + + + + +
    +
    +
    +
    + +
    +

    ao_two_e_ints

    +

    Here, all two-electron integrals (\(1/r_{12}\)) are computed. +As they have 4 indices and many are zero, they are stored in a map, as defined +in utils/map_module.f90.

    +

    To fetch an AO integral, use the +get_ao_two_e_integral(i,j,k,l,ao_integrals_map) function.

    +

    The conventions are: +* For AO integrals : (ij|kl) = (11|22) = <ik|jl> = <12|12>

    +
    +

    EZFIO parameters

    +
    +
    +io_ao_two_e_integrals
    +

    Read/Write AO integrals from/to disk [ Write | Read | None ]

    +

    Default: None

    +
    + +
    +
    +ao_integrals_threshold
    +

    If | (pq|rs) | < ao_integrals_threshold then (pq|rs) is zero

    +

    Default: 1.e-15

    +
    + +
    +
    +do_direct_integrals
    +

    Compute integrals on the fly (very slow, only for debugging)

    +

    Default: False

    +
    + +
    +
    +

    Providers

    +
    +
    +ao_integrals_cache
    +

    File : ao_two_e_ints/map_integrals.irp.f

    +
    double precision, allocatable   :: ao_integrals_cache   (0:64*64*64*64)
    +
    +
    +

    Cache of AO integrals for fast access

    +

    Needs:

    +
    + + +
    +
    + +
    +
    +ao_integrals_cache_max
    +

    File : ao_two_e_ints/map_integrals.irp.f

    +
    integer :: ao_integrals_cache_min
    +integer :: ao_integrals_cache_max
    +
    +
    +

    Min and max values of the AOs for which the integrals are in the cache

    +

    Needs:

    +
      +
    • ao_num
    • +
    +
      +
    +
      +
    +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +ao_integrals_cache_min
    +

    File : ao_two_e_ints/map_integrals.irp.f

    +
    integer :: ao_integrals_cache_min
    +integer :: ao_integrals_cache_max
    +
    +
    +

    Min and max values of the AOs for which the integrals are in the cache

    +

    Needs:

    +
      +
    • ao_num
    • +
    +
      +
    +
      +
    +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +ao_integrals_map
    +

    File : ao_two_e_ints/map_integrals.irp.f

    +
    type(map_type)  :: ao_integrals_map
    +
    +
    +

    AO integrals

    +

    Needs:

    +
      +
    • ao_num
    • +
    +
      +
    +
      +
    +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +ao_two_e_integral_schwartz
    +

    File : ao_two_e_ints/two_e_integrals.irp.f

    +
    double precision, allocatable   :: ao_two_e_integral_schwartz   (ao_num,ao_num)
    +
    +
    +

    Needed to compute Schwartz inequalities

    +

    Needs:

    +
    +
      +
    • ao_num
    • +
    • ao_power
    • +
    • ao_prim_num
    • +
    +
    +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +ao_two_e_integrals_in_map
    +

    File : ao_two_e_ints/two_e_integrals.irp.f

    +
    logical :: ao_two_e_integrals_in_map
    +
    +
    +
    +
    Map of Atomic integrals
    +
    i(r1) j(r2) 1/r12 k(r1) l(r2)
    +
    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +gauleg_t2
    +

    File : ao_two_e_ints/gauss_legendre.irp.f

    +
    double precision, allocatable   :: gauleg_t2    (n_pt_max_integrals,n_pt_max_integrals/2)
    +double precision, allocatable   :: gauleg_w     (n_pt_max_integrals,n_pt_max_integrals/2)
    +
    +
    +

    t_w(i,1,k) = w(i) +t_w(i,2,k) = t(i)

    +

    Needs:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +gauleg_w
    +

    File : ao_two_e_ints/gauss_legendre.irp.f

    +
    double precision, allocatable   :: gauleg_t2    (n_pt_max_integrals,n_pt_max_integrals/2)
    +double precision, allocatable   :: gauleg_w     (n_pt_max_integrals,n_pt_max_integrals/2)
    +
    +
    +

    t_w(i,1,k) = w(i) +t_w(i,2,k) = t(i)

    +

    Needs:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +general_primitive_integral:()
    +

    File : ao_two_e_ints/two_e_integrals.irp.f

    +
      double precision function general_primitive_integral(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

    +

    Calls:

    +
      +
    • add_poly_multiply()
    • +
    +
      +
    • give_polynom_mult_center_x()
    • +
    +
      +
    • multiply_poly()
    • +
    +
    +
    + +
    +
    +i_x1_new:()
    +

    File : ao_two_e_ints/two_e_integrals.irp.f

    +
    recursive subroutine I_x1_new(a,c,B_10,B_01,B_00,res,n_pt)
    +
    +
    +

    recursive function involved in the two-electron integral

    +

    Needs:

    +
    +
      +
    +
      +
    +
    +

    Called by:

    +
      +
    • i_x1_new()
    • +
    • i_x2_new()
    • +
    +
      +
    • integrale_new()
    • +
    +
      +
    • integrale_new_erf()
    • +
    +
    +

    Calls:

    +
      +
    • i_x1_new()
    • +
    +
      +
    • i_x2_new()
    • +
    +
      +
    +
    +
    + +
    +
    +i_x1_pol_mult_a1:()
    +

    File : ao_two_e_ints/two_e_integrals.irp.f

    +
    recursive subroutine I_x1_pol_mult_a1(c,B_10,B_01,B_00,C_00,D_00,d,nd,n_pt_in)
    +
    +
    +

    recursive function involved in the two-electron integral

    +

    Called by:

    +
      +
    • i_x1_pol_mult()
    • +
    +
      +
    • i_x1_pol_mult_a2()
    • +
    +
      +
    • i_x1_pol_mult_recurs()
    • +
    +
    +

    Calls:

    +
      +
    • i_x2_pol_mult()
    • +
    +
      +
    • multiply_poly()
    • +
    +
      +
    +
    +
    + +
    +
    +i_x1_pol_mult_a2:()
    +

    File : ao_two_e_ints/two_e_integrals.irp.f

    +
    recursive subroutine I_x1_pol_mult_a2(c,B_10,B_01,B_00,C_00,D_00,d,nd,n_pt_in)
    +
    +
    +

    recursive function involved in the two-electron integral

    +

    Called by:

    +
      +
    • i_x1_pol_mult()
    • +
    +
      +
    • i_x1_pol_mult_recurs()
    • +
    +
      +
    +
    +

    Calls:

    +
      +
    • i_x1_pol_mult_a1()
    • +
    +
      +
    • i_x2_pol_mult()
    • +
    +
      +
    • multiply_poly()
    • +
    +
    +
    + +
    +
    +i_x1_pol_mult_recurs:()
    +

    File : ao_two_e_ints/two_e_integrals.irp.f

    +
    recursive subroutine I_x1_pol_mult_recurs(a,c,B_10,B_01,B_00,C_00,D_00,d,nd,n_pt_in)
    +
    +
    +

    recursive function involved in the two-electron integral

    +

    Called by:

    +
      +
    • i_x1_pol_mult()
    • +
    +
      +
    • i_x1_pol_mult_recurs()
    • +
    +
      +
    +
    +

    Calls:

    +
      +
    • i_x1_pol_mult_a1()
    • +
    • i_x1_pol_mult_a2()
    • +
    +
      +
    • i_x1_pol_mult_recurs()
    • +
    +
      +
    • multiply_poly()
    • +
    +
    +
    + +
    +
    +i_x2_new:()
    +

    File : ao_two_e_ints/two_e_integrals.irp.f

    +
    recursive subroutine I_x2_new(c,B_10,B_01,B_00,res,n_pt)
    +
    +
    +

    recursive function involved in the two-electron integral

    +

    Needs:

    +
    +
      +
    +
      +
    +
    +

    Called by:

    +
      +
    • i_x1_new()
    • +
    +
      +
    +
      +
    +
    +

    Calls:

    +
      +
    • i_x1_new()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +i_x2_pol_mult:()
    +

    File : ao_two_e_ints/two_e_integrals.irp.f

    +
    recursive subroutine I_x2_pol_mult(c,B_10,B_01,B_00,C_00,D_00,d,nd,dim)
    +
    +
    +

    recursive function involved in the two-electron integral

    +

    Called by:

    +
      +
    • i_x1_pol_mult()
    • +
    • i_x1_pol_mult_a1()
    • +
    +
      +
    • i_x1_pol_mult_a2()
    • +
    +
      +
    • i_x2_pol_mult()
    • +
    +
    +

    Calls:

    +
      +
    • i_x2_pol_mult()
    • +
    +
      +
    • multiply_poly()
    • +
    +
      +
    +
    +
    + +
    +
    +

    Subroutines / functions

    +
    +
    +ao_l4:()
    +

    File : ao_two_e_ints/two_e_integrals.irp.f

    +
    integer function ao_l4(i,j,k,l)
    +
    +
    +

    Computes the product of l values of i,j,k,and l

    +

    Needs:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +ao_two_e_integral:()
    +

    File : ao_two_e_ints/two_e_integrals.irp.f

    +
    double precision function ao_two_e_integral(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:

    +
    + + +
    +

    Calls:

    +
      +
    • give_explicit_poly_and_gaussian()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +ao_two_e_integral_schwartz_accel:()
    +

    File : ao_two_e_ints/two_e_integrals.irp.f

    +
    double precision function ao_two_e_integral_schwartz_accel(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:

    +
    + + +
    +

    Calls:

    +
      +
    • give_explicit_poly_and_gaussian()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +ao_two_e_integrals_in_map_collector:()
    +

    File : ao_two_e_ints/integrals_in_map_slave.irp.f

    +
    subroutine ao_two_e_integrals_in_map_collector(zmq_socket_pull)
    +
    +
    +

    Collects results from the AO integral calculation

    +

    Needs:

    +
    +
      +
    • ao_num
    • +
    +
      +
    +
    +

    Called by:

    +
    +
      +
    +
      +
    +
    +

    Calls:

    +
      +
    • end_zmq_to_qp_run_socket()
    • +
    +
      +
    • insert_into_ao_integrals_map()
    • +
    +
      +
    +
    +
    + +
    +
    +ao_two_e_integrals_in_map_slave:()
    +

    File : ao_two_e_ints/integrals_in_map_slave.irp.f

    +
    subroutine ao_two_e_integrals_in_map_slave(thread,iproc)
    +
    +
    +

    Computes a buffer of integrals

    +

    Needs:

    +
      +
    • ao_num
    • +
    +
      +
    +
      +
    +
    +

    Called by:

    +
      +
    • ao_two_e_integrals_in_map_slave_inproc()
    • +
    +
      +
    • ao_two_e_integrals_in_map_slave_tcp()
    • +
    +
      +
    +
    +

    Calls:

    +
      +
    • compute_ao_integrals_jl()
    • +
    • end_zmq_push_socket()
    • +
    +
      +
    • end_zmq_to_qp_run_socket()
    • +
    +
      +
    • push_integrals()
    • +
    +
    +
    + +
    +
    +ao_two_e_integrals_in_map_slave_inproc:()
    +

    File : ao_two_e_ints/integrals_in_map_slave.irp.f

    +
    subroutine ao_two_e_integrals_in_map_slave_inproc(i)
    +
    +
    +

    Computes a buffer of integrals. i is the ID of the current thread.

    +

    Called by:

    +
    +
      +
    +
      +
    +
    +

    Calls:

    +
      +
    • ao_two_e_integrals_in_map_slave()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +ao_two_e_integrals_in_map_slave_tcp:()
    +

    File : ao_two_e_ints/integrals_in_map_slave.irp.f

    +
    subroutine ao_two_e_integrals_in_map_slave_tcp(i)
    +
    +
    +

    Computes a buffer of integrals. i is the ID of the current thread.

    +

    Calls:

    +
      +
    • ao_two_e_integrals_in_map_slave()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +clear_ao_map:()
    +

    File : ao_two_e_ints/map_integrals.irp.f

    +
    subroutine clear_ao_map
    +
    +
    +

    Frees the memory of the AO map

    +

    Needs:

    +
    +
      +
    +
      +
    +
    +

    Calls:

    +
      +
    • map_deinit()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +compute_ao_integrals_jl:()
    +

    File : ao_two_e_ints/two_e_integrals.irp.f

    +
    subroutine compute_ao_integrals_jl(j,l,n_integrals,buffer_i,buffer_value)
    +
    +
    +

    Parallel client for AO integrals

    +

    Needs:

    +
    +
      +
    • ao_integrals_threshold
    • +
    +
    +
    +

    Called by:

    +
      +
    • ao_two_e_integrals_in_map_slave()
    • +
    +
      +
    +
      +
    +
    +

    Calls:

    +
      +
    • two_e_integrals_index()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +compute_ao_two_e_integrals:()
    +

    File : ao_two_e_ints/two_e_integrals.irp.f

    +
    subroutine compute_ao_two_e_integrals(j,k,l,sze,buffer_value)
    +
    +
    +

    Compute AO 1/r12 integrals for all i and fixed j,k,l

    +

    Needs:

    +
    +
      +
    • ao_num
    • +
    +
    +
    +

    Called by:

    +
    + +
      +
    +
    +
    + +
    +
    +dump_ao_integrals:()
    +

    File : ao_two_e_ints/map_integrals.irp.f

    +
    subroutine dump_ao_integrals(filename)
    +
    +
    +

    Save to disk the AO integrals

    +

    Needs:

    +
    + +
      +
    +
    +

    Calls:

    +
      +
    • ezfio_set_work_empty()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +eri:()
    +

    File : ao_two_e_ints/two_e_integrals.irp.f

    +
    double precision function ERI(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)
    +
    +

    Calls:

    +
      +
    • integrale_new()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +gauleg:()
    +

    File : ao_two_e_ints/gauss_legendre.irp.f

    +
    subroutine gauleg(x1,x2,x,w,n)
    +
    +
    +

    Gauss-Legendre

    +

    Called by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +get_ao_map_size:()
    +

    File : ao_two_e_ints/map_integrals.irp.f

    +
    function get_ao_map_size()
    +
    +
    +

    Returns the number of elements in the AO map

    +

    Needs:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +get_ao_two_e_integral:()
    +

    File : ao_two_e_ints/map_integrals.irp.f

    +
    double precision function get_ao_two_e_integral(i,j,k,l,map) result(result)
    +
    +
    +

    Gets one AO bi-electronic integral from the AO map

    +

    Needs:

    +
    + + +
    +

    Calls:

    +
      +
    • map_get()
    • +
    +
      +
    • two_e_integrals_index()
    • +
    +
      +
    +
    +
    + +
    +
    +get_ao_two_e_integrals:()
    +

    File : ao_two_e_ints/map_integrals.irp.f

    +
    subroutine get_ao_two_e_integrals(j,k,l,sze,out_val)
    +
    +
    +

    Gets multiple AO bi-electronic integral from the AO map . +All i are retrieved for j,k,l fixed.

    +

    Needs:

    +
    +
      +
    • ao_integrals_threshold
    • +
    +
    +
    +

    Called by:

    +
      +
    • add_integrals_to_map()
    • +
    +
      +
    • add_integrals_to_map_no_exit_34()
    • +
    +
      +
    • add_integrals_to_map_three_indices()
    • +
    +
    +
    + +
    +
    +get_ao_two_e_integrals_non_zero:()
    +

    File : ao_two_e_ints/map_integrals.irp.f

    +
    subroutine get_ao_two_e_integrals_non_zero(j,k,l,sze,out_val,out_val_index,non_zero_int)
    +
    +
    +

    Gets multiple AO bi-electronic integral from the AO map . +All non-zero i are retrieved for j,k,l fixed.

    +

    Needs:

    +
    + + +
    +

    Called by:

    +
    + +
      +
    +
    +

    Calls:

    +
      +
    • map_get()
    • +
    +
      +
    • two_e_integrals_index()
    • +
    +
      +
    +
    +
    + +
    +
    +give_polynom_mult_center_x:()
    +

    File : ao_two_e_ints/two_e_integrals.irp.f

    +
    subroutine give_polynom_mult_center_x(P_center,Q_center,a_x,d_x,p,q,n_pt_in,pq_inv,pq_inv_2,p10_1,p01_1,p10_2,p01_2,d,n_pt_out)
    +
    +
    +

    subroutine that returns the explicit polynom in term of the “t” +variable of the following polynomw :

    +
    +
    I_x1(a_x, d_x,p,q) * I_x1(a_y, d_y,p,q) * I_x1(a_z, d_z,p,q)
    +

    Called by:

    +
      +
    • general_primitive_integral()
    • +
    +
      +
    • general_primitive_integral_erf()
    • +
    +
      +
    +
    +

    Calls:

    +
      +
    • i_x1_pol_mult()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +i_x1_pol_mult:()
    +

    File : ao_two_e_ints/two_e_integrals.irp.f

    +
    subroutine I_x1_pol_mult(a,c,B_10,B_01,B_00,C_00,D_00,d,nd,n_pt_in)
    +
    +
    +

    recursive function involved in the two-electron integral

    +

    Called by:

    +
      +
    • give_polynom_mult_center_x()
    • +
    +
      +
    +
      +
    +
    +

    Calls:

    +
      +
    • i_x1_pol_mult_a1()
    • +
    • i_x1_pol_mult_a2()
    • +
    +
      +
    • i_x1_pol_mult_recurs()
    • +
    +
      +
    • i_x2_pol_mult()
    • +
    +
    +
    + +
    +
    +insert_into_ao_integrals_map:()
    +

    File : ao_two_e_ints/map_integrals.irp.f

    +
    subroutine insert_into_ao_integrals_map(n_integrals,buffer_i, buffer_values)
    +
    +
    +

    Create new entry into AO map

    +

    Needs:

    +
    +
      +
    +
      +
    +
    +

    Called by:

    +
      +
    • ao_two_e_integrals_in_map_collector()
    • +
    +
      +
    +
      +
    +
    +

    Calls:

    +
      +
    • map_append()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +integrale_new:()
    +

    File : ao_two_e_ints/two_e_integrals.irp.f

    +
    subroutine integrale_new(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:

    +
    + +
      +
    +
    +

    Called by:

    +
      +
    • eri()
    • +
    +
      +
    +
      +
    +
    +

    Calls:

    +
      +
    • i_x1_new()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +load_ao_integrals:()
    +

    File : ao_two_e_ints/map_integrals.irp.f

    +
    integer function load_ao_integrals(filename)
    +
    +
    +

    Read from disk the AO integrals

    +

    Needs:

    +
    +
      +
    +
      +
    +
    +

    Calls:

    +
      +
    • cache_map_reallocate()
    • +
    +
      +
    • map_deinit()
    • +
    +
      +
    • map_sort()
    • +
    +
    +
    + +
    +
    +n_pt_sup:()
    +

    File : ao_two_e_ints/two_e_integrals.irp.f

    +
    integer function n_pt_sup(a_x,b_x,c_x,d_x,a_y,b_y,c_y,d_y,a_z,b_z,c_z,d_z)
    +
    +
    +

    Returns the upper boundary of the degree of the polynomial involved in the +bielctronic integral :

    +
    +
    Ix(a_x,b_x,c_x,d_x) * Iy(a_y,b_y,c_y,d_y) * Iz(a_z,b_z,c_z,d_z)
    +
    + +
    +
    +push_integrals:()
    +

    File : ao_two_e_ints/integrals_in_map_slave.irp.f

    +
    subroutine push_integrals(zmq_socket_push, n_integrals, buffer_i, buffer_value, task_id)
    +
    +
    +

    Push integrals in the push socket

    +

    Called by:

    +
      +
    • ao_two_e_integrals_erf_in_map_slave()
    • +
    +
      +
    • ao_two_e_integrals_in_map_slave()
    • +
    +
      +
    +
    +
    + +
    +
    +two_e_integrals_index:()
    +

    File : ao_two_e_ints/map_integrals.irp.f

    +
    subroutine two_e_integrals_index(i,j,k,l,i1)
    +
    +
    +

    Called by:

    +
    +
      +
    • get_ao_two_e_integrals_non_zero()
    • +
    • get_mo_two_e_integral_erf()
    • +
    • get_mo_two_e_integrals_coulomb_ii()
    • +
    • get_mo_two_e_integrals_erf()
    • +
    • get_mo_two_e_integrals_erf_coulomb_ii()
    • +
    • get_mo_two_e_integrals_erf_exch_ii()
    • +
    • get_mo_two_e_integrals_erf_i1j1()
    • +
    • get_mo_two_e_integrals_erf_ij()
    • +
    • get_mo_two_e_integrals_exch_ii()
    • +
    +
    +
    +
    + +
    +
    +two_e_integrals_index_reverse:()
    +

    File : ao_two_e_ints/map_integrals.irp.f

    +
    subroutine two_e_integrals_index_reverse(i,j,k,l,i1)
    +
    +
    +

    Called by:

    +
    +
      +
    +
      +
    +
    +

    Calls:

    +
      +
    • two_e_integrals_index()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    + + +
    + +
    + + +
    +
    + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/doc/modules/aux_quantities.html b/doc/modules/aux_quantities.html new file mode 100644 index 00000000..db2ef27e --- /dev/null +++ b/doc/modules/aux_quantities.html @@ -0,0 +1,346 @@ + + + + + + + + + + + aux_quantities — Quantum Package 2.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + +
    + + + + + +
    + +
    + + + + + + + + + + + + + + + + + +
    + + + + +
    +
    +
    +
    + +
    +

    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:

    + +

    Thanks to these providers you can use any density matrix that does not +necessary corresponds to that of the current wave function.

    +
    +

    EZFIO parameters

    +
    +
    +data_energy_var
    +

    Variational energy computed with the wave function

    +
    + +
    +
    +data_energy_proj
    +

    Projected energy computed with the wave function

    +
    + +
    +
    +data_one_e_dm_alpha_mo
    +

    Alpha one body density matrix on the MO basis computed with the wave function

    +
    + +
    +
    +data_one_e_dm_beta_mo
    +

    Beta one body density matrix on the MO basis computed with the wave function

    +
    + +
    +
    + + +
    + +
    + + +
    +
    + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/doc/modules/becke_numerical_grid.html b/doc/modules/becke_numerical_grid.html new file mode 100644 index 00000000..4fd7062c --- /dev/null +++ b/doc/modules/becke_numerical_grid.html @@ -0,0 +1,1107 @@ + + + + + + + + + + + becke_numerical_grid — Quantum Package 2.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + +
    + + + + + +
    + +
    + + + + + + + + + + + + + + + + + +
    + + + + +
    +
    +
    +
    + +
    +

    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:

    +
      +
    • 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 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 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.

    +
    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

    +
    +
    +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

    +
    +
    +alpha_knowles
    +

    File : becke_numerical_grid/integration_radial.irp.f

    +
    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:

    +
    + +
      +
    +
    +
    + +
    +
    +angular_quadrature_points
    +

    File : becke_numerical_grid/grid_becke.irp.f

    +
    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:

    +
    +
      +
    +
      +
    +
    +

    Needed by:

    +
    + +
      +
    +
    +
    + +
    +
    +dr_radial_integral
    +

    File : becke_numerical_grid/grid_becke.irp.f

    +
    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:

    +
    +
      +
    +
      +
    +
    +

    Needed by:

    +
    + +
      +
    +
    +
    + +
    +
    +final_grid_points
    +

    File : becke_numerical_grid/grid_becke_vector.irp.f

    +
       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:

    +
    + +
      +
    • nucl_num
    • +
    +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +final_weight_at_r
    +

    File : becke_numerical_grid/grid_becke.irp.f

    +
    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:

    +
    + + +
    +

    Needed by:

    +
    + +
      +
    +
    +
    + +
    +
    +final_weight_at_r_vector
    +

    File : becke_numerical_grid/grid_becke_vector.irp.f

    +
       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:

    +
    + +
      +
    • nucl_num
    • +
    +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +grid_points_per_atom
    +

    File : becke_numerical_grid/grid_becke.irp.f

    +
    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:

    +
    + + +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +grid_points_radial
    +

    File : becke_numerical_grid/grid_becke.irp.f

    +
    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:

    +
    +
      +
    +
      +
    +
    +

    Needed by:

    +
    + +
      +
    +
    +
    + +
    +
    +index_final_points
    +

    File : becke_numerical_grid/grid_becke_vector.irp.f

    +
       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:

    +
    + +
      +
    • nucl_num
    • +
    +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +index_final_points_reverse
    +

    File : becke_numerical_grid/grid_becke_vector.irp.f

    +
       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:

    +
    + +
      +
    • nucl_num
    • +
    +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +m_knowles
    +

    File : becke_numerical_grid/grid_becke.irp.f

    +
    integer :: m_knowles
    +
    +
    +

    value of the “m” parameter in the equation (7) of the paper of Knowles (JCP, 104, 1996)

    +

    Needed by:

    +
    + +
      +
    +
    +
    + +
    +
    +n_points_final_grid
    +

    File : becke_numerical_grid/grid_becke_vector.irp.f

    +
    integer :: n_points_final_grid
    +
    +
    +

    Number of points which are non zero

    +

    Needs:

    +
    + +
      +
    • nucl_num
    • +
    +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +n_points_grid_per_atom
    +

    File : becke_numerical_grid/grid_becke.irp.f

    +
    integer :: n_points_grid_per_atom
    +
    +
    +

    Number of grid points per atom

    +

    Needs:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +n_points_integration_angular
    +

    File : becke_numerical_grid/grid_becke.irp.f

    +
    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:

    +
      +
    • grid_type_sgn
    • +
    +
      +
    +
      +
    +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +n_points_radial_grid
    +

    File : becke_numerical_grid/grid_becke.irp.f

    +
    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:

    +
      +
    • grid_type_sgn
    • +
    +
      +
    +
      +
    +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +weight_at_r
    +

    File : becke_numerical_grid/grid_becke.irp.f

    +
    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:

    +
    + + +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +weights_angular_points
    +

    File : becke_numerical_grid/grid_becke.irp.f

    +
    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:

    +
    +
      +
    +
      +
    +
    +

    Needed by:

    +
    + +
      +
    +
    +
    + +
    +
    +

    Subroutines / functions

    +
    +
    +cell_function_becke:()
    +

    File : becke_numerical_grid/step_function_becke.irp.f

    +
    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:

    +
    + +
      +
    • nucl_num
    • +
    +
    +
    + +
    +
    +derivative_knowles_function:()
    +

    File : becke_numerical_grid/integration_radial.irp.f

    +
    double precision function derivative_knowles_function(alpha,m,x)
    +
    +
    +

    Derivative of the function proposed by Knowles (JCP, 104, 1996) for distributing the radial points

    +
    + +
    +
    +example_becke_numerical_grid:()
    +

    File : becke_numerical_grid/example.irp.f

    +
    subroutine example_becke_numerical_grid
    +
    +
    +

    subroutine that illustrates the main features available in becke_numerical_grid

    +

    Needs:

    +
    + + +
    +
    + +
    +
    +f_function_becke:()
    +

    File : becke_numerical_grid/step_function_becke.irp.f

    +
    double precision function f_function_becke(x)
    +
    +
    +
    + +
    +
    +knowles_function:()
    +

    File : becke_numerical_grid/integration_radial.irp.f

    +
    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 )

    +
    + +
    +
    +step_function_becke:()
    +

    File : becke_numerical_grid/step_function_becke.irp.f

    +
    double precision function step_function_becke(x)
    +
    +
    +

    Step function of the Becke paper (1988, JCP,88(4))

    +
    + +
    +
    + + +
    + +
    + + +
    +
    + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/doc/modules/bitmask.html b/doc/modules/bitmask.html new file mode 100644 index 00000000..083f8a5c --- /dev/null +++ b/doc/modules/bitmask.html @@ -0,0 +1,3723 @@ + + + + + + + + + + + bitmask module — Quantum Package 2.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + +
    + + + + + +
    + +
    + + + + + + + + + + + + + + + + + +
    + + + + +
    +
    +
    +
    + +
    +

    bitmask module

    +

    The central part of this module is the bitmasks_module.f90 file. It contains +the constants that will be used to define on which kind of integer the bitmasks +will be defined.

    +

    In the program, to represent a determinant as a pair of bitstrings, +the determinant should be defined as

    +
    use bitmasks
    +integer(bit_kind)  :: determinant(N_int,2)
    +
    +
    +

    bitmasks_routines.irp.f contains helper routines to manipulate bitmask, like +transforming a bit string to a list of integers for example.

    +

    bit_kind_shift, bit_kind_size and bit_kind are supposed to be consistent:

    +
    2**bit_kind_shift = bit_kind_size
    +bit_kind = bit_kind_size / 8
    +
    +
    +

    For an example of how to use the bitmaks, see the file example.irp.f.

    +
    +

    Providers

    +
    +
    +act_bitmask
    +

    File : bitmask/core_inact_act_virt.irp.f

    +
    integer, allocatable    :: list_inact   (dim_list_inact_orb)
    +integer, allocatable    :: list_virt    (dim_list_virt_orb)
    +integer, allocatable    :: list_inact_reverse   (mo_num)
    +integer, allocatable    :: list_virt_reverse    (mo_num)
    +integer, allocatable    :: list_del_reverse     (mo_num)
    +integer, allocatable    :: list_del     (mo_num)
    +integer, allocatable    :: list_core    (dim_list_core_orb)
    +integer, allocatable    :: list_core_reverse    (mo_num)
    +integer, allocatable    :: list_act     (dim_list_act_orb)
    +integer, allocatable    :: list_act_reverse     (mo_num)
    +integer(bit_kind), allocatable  :: core_bitmask (N_int,2)
    +integer(bit_kind), allocatable  :: inact_bitmask        (N_int,2)
    +integer(bit_kind), allocatable  :: act_bitmask  (N_int,2)
    +integer(bit_kind), allocatable  :: virt_bitmask (N_int,2)
    +integer(bit_kind), allocatable  :: del_bitmask  (N_int,2)
    +
    +
    +

    inact_bitmask : Bitmask of the inactive orbitals which are supposed to be doubly excited +in post CAS methods +n_inact_orb : Number of inactive orbitals +virt_bitmask : Bitmaks of vritual orbitals which are supposed to be recieve electrons +in post CAS methods +n_virt_orb : Number of virtual orbitals +list_inact : List of the inactive orbitals which are supposed to be doubly excited +in post CAS methods +list_virt : List of vritual orbitals which are supposed to be recieve electrons +in post CAS methods +list_inact_reverse : reverse list of inactive orbitals +list_inact_reverse(i) = 0 ::> not an inactive +list_inact_reverse(i) = k ::> IS the kth inactive +list_virt_reverse : reverse list of virtual orbitals +list_virt_reverse(i) = 0 ::> not an virtual +list_virt_reverse(i) = k ::> IS the kth virtual +list_act(i) = index of the ith active orbital

    +

    list_act_reverse : reverse list of active orbitals +list_act_reverse(i) = 0 ::> not an active +list_act_reverse(i) = k ::> IS the kth active orbital

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +cas_bitmask
    +

    File : bitmask/bitmasks.irp.f

    +
    integer(bit_kind), allocatable  :: cas_bitmask  (N_int,2,N_cas_bitmask)
    +
    +
    +

    Bitmasks for CAS reference determinants. (N_int, alpha/beta, CAS reference)

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +closed_shell_ref_bitmask
    +

    File : bitmask/bitmasks.irp.f

    +
    integer(bit_kind), allocatable  :: closed_shell_ref_bitmask     (N_int,2)
    +
    +
    +

    Needs:

    +
    + + +
    +
    + +
    +
    +core_bitmask
    +

    File : bitmask/core_inact_act_virt.irp.f

    +
    integer, allocatable    :: list_inact   (dim_list_inact_orb)
    +integer, allocatable    :: list_virt    (dim_list_virt_orb)
    +integer, allocatable    :: list_inact_reverse   (mo_num)
    +integer, allocatable    :: list_virt_reverse    (mo_num)
    +integer, allocatable    :: list_del_reverse     (mo_num)
    +integer, allocatable    :: list_del     (mo_num)
    +integer, allocatable    :: list_core    (dim_list_core_orb)
    +integer, allocatable    :: list_core_reverse    (mo_num)
    +integer, allocatable    :: list_act     (dim_list_act_orb)
    +integer, allocatable    :: list_act_reverse     (mo_num)
    +integer(bit_kind), allocatable  :: core_bitmask (N_int,2)
    +integer(bit_kind), allocatable  :: inact_bitmask        (N_int,2)
    +integer(bit_kind), allocatable  :: act_bitmask  (N_int,2)
    +integer(bit_kind), allocatable  :: virt_bitmask (N_int,2)
    +integer(bit_kind), allocatable  :: del_bitmask  (N_int,2)
    +
    +
    +

    inact_bitmask : Bitmask of the inactive orbitals which are supposed to be doubly excited +in post CAS methods +n_inact_orb : Number of inactive orbitals +virt_bitmask : Bitmaks of vritual orbitals which are supposed to be recieve electrons +in post CAS methods +n_virt_orb : Number of virtual orbitals +list_inact : List of the inactive orbitals which are supposed to be doubly excited +in post CAS methods +list_virt : List of vritual orbitals which are supposed to be recieve electrons +in post CAS methods +list_inact_reverse : reverse list of inactive orbitals +list_inact_reverse(i) = 0 ::> not an inactive +list_inact_reverse(i) = k ::> IS the kth inactive +list_virt_reverse : reverse list of virtual orbitals +list_virt_reverse(i) = 0 ::> not an virtual +list_virt_reverse(i) = k ::> IS the kth virtual +list_act(i) = index of the ith active orbital

    +

    list_act_reverse : reverse list of active orbitals +list_act_reverse(i) = 0 ::> not an active +list_act_reverse(i) = k ::> IS the kth active orbital

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +core_inact_act_bitmask_4
    +

    File : bitmask/bitmasks.irp.f

    +
    integer(bit_kind), allocatable  :: core_inact_act_bitmask_4     (N_int,4)
    +
    +
    +

    Needs:

    +
    + +
      +
    +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +core_inact_virt_bitmask
    +

    File : bitmask/bitmasks.irp.f

    +
    integer(bit_kind), allocatable  :: inact_virt_bitmask   (N_int,2)
    +integer(bit_kind), allocatable  :: core_inact_virt_bitmask      (N_int,2)
    +
    +
    +

    Reunion of the inactive and virtual bitmasks

    +

    Needs:

    +
    + +
      +
    +
    +
    + +
    +
    +del_bitmask
    +

    File : bitmask/core_inact_act_virt.irp.f

    +
    integer, allocatable    :: list_inact   (dim_list_inact_orb)
    +integer, allocatable    :: list_virt    (dim_list_virt_orb)
    +integer, allocatable    :: list_inact_reverse   (mo_num)
    +integer, allocatable    :: list_virt_reverse    (mo_num)
    +integer, allocatable    :: list_del_reverse     (mo_num)
    +integer, allocatable    :: list_del     (mo_num)
    +integer, allocatable    :: list_core    (dim_list_core_orb)
    +integer, allocatable    :: list_core_reverse    (mo_num)
    +integer, allocatable    :: list_act     (dim_list_act_orb)
    +integer, allocatable    :: list_act_reverse     (mo_num)
    +integer(bit_kind), allocatable  :: core_bitmask (N_int,2)
    +integer(bit_kind), allocatable  :: inact_bitmask        (N_int,2)
    +integer(bit_kind), allocatable  :: act_bitmask  (N_int,2)
    +integer(bit_kind), allocatable  :: virt_bitmask (N_int,2)
    +integer(bit_kind), allocatable  :: del_bitmask  (N_int,2)
    +
    +
    +

    inact_bitmask : Bitmask of the inactive orbitals which are supposed to be doubly excited +in post CAS methods +n_inact_orb : Number of inactive orbitals +virt_bitmask : Bitmaks of vritual orbitals which are supposed to be recieve electrons +in post CAS methods +n_virt_orb : Number of virtual orbitals +list_inact : List of the inactive orbitals which are supposed to be doubly excited +in post CAS methods +list_virt : List of vritual orbitals which are supposed to be recieve electrons +in post CAS methods +list_inact_reverse : reverse list of inactive orbitals +list_inact_reverse(i) = 0 ::> not an inactive +list_inact_reverse(i) = k ::> IS the kth inactive +list_virt_reverse : reverse list of virtual orbitals +list_virt_reverse(i) = 0 ::> not an virtual +list_virt_reverse(i) = k ::> IS the kth virtual +list_act(i) = index of the ith active orbital

    +

    list_act_reverse : reverse list of active orbitals +list_act_reverse(i) = 0 ::> not an active +list_act_reverse(i) = k ::> IS the kth active orbital

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +dim_list_act_orb
    +

    File : bitmask/core_inact_act_virt.irp.f

    +
    integer :: dim_list_core_orb
    +integer :: dim_list_inact_orb
    +integer :: dim_list_virt_orb
    +integer :: dim_list_act_orb
    +integer :: dim_list_del_orb
    +
    +
    +

    dimensions for the allocation of list_inact, list_virt, list_core and list_act +it is at least 1

    +

    Needs:

    +
    +
      +
    +
      +
    +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +dim_list_core_orb
    +

    File : bitmask/core_inact_act_virt.irp.f

    +
    integer :: dim_list_core_orb
    +integer :: dim_list_inact_orb
    +integer :: dim_list_virt_orb
    +integer :: dim_list_act_orb
    +integer :: dim_list_del_orb
    +
    +
    +

    dimensions for the allocation of list_inact, list_virt, list_core and list_act +it is at least 1

    +

    Needs:

    +
    +
      +
    +
      +
    +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +dim_list_del_orb
    +

    File : bitmask/core_inact_act_virt.irp.f

    +
    integer :: dim_list_core_orb
    +integer :: dim_list_inact_orb
    +integer :: dim_list_virt_orb
    +integer :: dim_list_act_orb
    +integer :: dim_list_del_orb
    +
    +
    +

    dimensions for the allocation of list_inact, list_virt, list_core and list_act +it is at least 1

    +

    Needs:

    +
    +
      +
    +
      +
    +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +dim_list_inact_orb
    +

    File : bitmask/core_inact_act_virt.irp.f

    +
    integer :: dim_list_core_orb
    +integer :: dim_list_inact_orb
    +integer :: dim_list_virt_orb
    +integer :: dim_list_act_orb
    +integer :: dim_list_del_orb
    +
    +
    +

    dimensions for the allocation of list_inact, list_virt, list_core and list_act +it is at least 1

    +

    Needs:

    +
    +
      +
    +
      +
    +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +dim_list_virt_orb
    +

    File : bitmask/core_inact_act_virt.irp.f

    +
    integer :: dim_list_core_orb
    +integer :: dim_list_inact_orb
    +integer :: dim_list_virt_orb
    +integer :: dim_list_act_orb
    +integer :: dim_list_del_orb
    +
    +
    +

    dimensions for the allocation of list_inact, list_virt, list_core and list_act +it is at least 1

    +

    Needs:

    +
    +
      +
    +
      +
    +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +full_ijkl_bitmask
    +

    File : bitmask/bitmasks.irp.f

    +
    integer(bit_kind), allocatable  :: full_ijkl_bitmask    (N_int)
    +
    +
    +

    Bitmask to include all possible MOs

    +

    Needs:

    +
      +
    • mo_class
    • +
    +
    + +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +full_ijkl_bitmask_4
    +

    File : bitmask/bitmasks.irp.f

    +
    integer(bit_kind), allocatable  :: full_ijkl_bitmask_4  (N_int,4)
    +
    +
    +

    Needs:

    +
    + +
      +
    +
    +

    Needed by:

    +
    + +
      +
    +
    +
    + +
    +
    +generators_bitmask
    +

    File : bitmask/bitmasks.irp.f

    +
    integer(bit_kind), allocatable  :: generators_bitmask   (N_int,2,6,N_generators_bitmask)
    +
    +
    +

    Bitmasks for generator determinants. +(N_int, alpha/beta, hole/particle, generator).

    +

    3rd index is :

    +
      +
    • 1 : hole for single exc
    • +
    • 2 : particle for single exc
    • +
    • 3 : hole for 1st exc of double
    • +
    • 4 : particle for 1st exc of double
    • +
    • 5 : hole for 2nd exc of double
    • +
    • 6 : particle for 2nd exc of double
    • +
    +

    Needs:

    +
    + + +
    +
    + +
    +
    +generators_bitmask_restart
    +

    File : bitmask/bitmasks.irp.f

    +
    integer(bit_kind), allocatable  :: generators_bitmask_restart   (N_int,2,6,N_generators_bitmask_restart)
    +
    +
    +

    Bitmasks for generator determinants. +(N_int, alpha/beta, hole/particle, generator).

    +

    3rd index is :

    +
      +
    • 1 : hole for single exc
    • +
    • 2 : particle for single exc
    • +
    • 3 : hole for 1st exc of double
    • +
    • 4 : particle for 1st exc of double
    • +
    • 5 : hole for 2nd exc of double
    • +
    • 6 : particle for 2nd exc of double
    • +
    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +hf_bitmask
    +

    File : bitmask/bitmasks.irp.f

    +
    integer(bit_kind), allocatable  :: hf_bitmask   (N_int,2)
    +
    +
    +

    Hartree Fock bit mask

    +

    Needs:

    +
      +
    • elec_alpha_num
    • +
    +
      +
    • elec_beta_num
    • +
    +
    +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +i_bitmask_gen
    +

    File : bitmask/bitmasks.irp.f

    +
    integer :: i_bitmask_gen
    +
    +
    +

    Current bitmask for the generators

    +
    + +
    +
    +inact_bitmask
    +

    File : bitmask/core_inact_act_virt.irp.f

    +
    integer, allocatable    :: list_inact   (dim_list_inact_orb)
    +integer, allocatable    :: list_virt    (dim_list_virt_orb)
    +integer, allocatable    :: list_inact_reverse   (mo_num)
    +integer, allocatable    :: list_virt_reverse    (mo_num)
    +integer, allocatable    :: list_del_reverse     (mo_num)
    +integer, allocatable    :: list_del     (mo_num)
    +integer, allocatable    :: list_core    (dim_list_core_orb)
    +integer, allocatable    :: list_core_reverse    (mo_num)
    +integer, allocatable    :: list_act     (dim_list_act_orb)
    +integer, allocatable    :: list_act_reverse     (mo_num)
    +integer(bit_kind), allocatable  :: core_bitmask (N_int,2)
    +integer(bit_kind), allocatable  :: inact_bitmask        (N_int,2)
    +integer(bit_kind), allocatable  :: act_bitmask  (N_int,2)
    +integer(bit_kind), allocatable  :: virt_bitmask (N_int,2)
    +integer(bit_kind), allocatable  :: del_bitmask  (N_int,2)
    +
    +
    +

    inact_bitmask : Bitmask of the inactive orbitals which are supposed to be doubly excited +in post CAS methods +n_inact_orb : Number of inactive orbitals +virt_bitmask : Bitmaks of vritual orbitals which are supposed to be recieve electrons +in post CAS methods +n_virt_orb : Number of virtual orbitals +list_inact : List of the inactive orbitals which are supposed to be doubly excited +in post CAS methods +list_virt : List of vritual orbitals which are supposed to be recieve electrons +in post CAS methods +list_inact_reverse : reverse list of inactive orbitals +list_inact_reverse(i) = 0 ::> not an inactive +list_inact_reverse(i) = k ::> IS the kth inactive +list_virt_reverse : reverse list of virtual orbitals +list_virt_reverse(i) = 0 ::> not an virtual +list_virt_reverse(i) = k ::> IS the kth virtual +list_act(i) = index of the ith active orbital

    +

    list_act_reverse : reverse list of active orbitals +list_act_reverse(i) = 0 ::> not an active +list_act_reverse(i) = k ::> IS the kth active orbital

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +inact_virt_bitmask
    +

    File : bitmask/bitmasks.irp.f

    +
    integer(bit_kind), allocatable  :: inact_virt_bitmask   (N_int,2)
    +integer(bit_kind), allocatable  :: core_inact_virt_bitmask      (N_int,2)
    +
    +
    +

    Reunion of the inactive and virtual bitmasks

    +

    Needs:

    +
    + +
      +
    +
    +
    + +
    +
    +index_holes_bitmask
    +

    File : bitmask/modify_bitmasks.irp.f

    +
    integer, allocatable    :: index_holes_bitmask  (3)
    +
    +
    +

    Index of the holes in the generators_bitmasks

    +
    + +
    +
    +index_particl_bitmask
    +

    File : bitmask/modify_bitmasks.irp.f

    +
    integer, allocatable    :: index_particl_bitmask        (3)
    +
    +
    +

    Index of the holes in the generators_bitmasks

    +
    + +
    +
    +list_act
    +

    File : bitmask/core_inact_act_virt.irp.f

    +
    integer, allocatable    :: list_inact   (dim_list_inact_orb)
    +integer, allocatable    :: list_virt    (dim_list_virt_orb)
    +integer, allocatable    :: list_inact_reverse   (mo_num)
    +integer, allocatable    :: list_virt_reverse    (mo_num)
    +integer, allocatable    :: list_del_reverse     (mo_num)
    +integer, allocatable    :: list_del     (mo_num)
    +integer, allocatable    :: list_core    (dim_list_core_orb)
    +integer, allocatable    :: list_core_reverse    (mo_num)
    +integer, allocatable    :: list_act     (dim_list_act_orb)
    +integer, allocatable    :: list_act_reverse     (mo_num)
    +integer(bit_kind), allocatable  :: core_bitmask (N_int,2)
    +integer(bit_kind), allocatable  :: inact_bitmask        (N_int,2)
    +integer(bit_kind), allocatable  :: act_bitmask  (N_int,2)
    +integer(bit_kind), allocatable  :: virt_bitmask (N_int,2)
    +integer(bit_kind), allocatable  :: del_bitmask  (N_int,2)
    +
    +
    +

    inact_bitmask : Bitmask of the inactive orbitals which are supposed to be doubly excited +in post CAS methods +n_inact_orb : Number of inactive orbitals +virt_bitmask : Bitmaks of vritual orbitals which are supposed to be recieve electrons +in post CAS methods +n_virt_orb : Number of virtual orbitals +list_inact : List of the inactive orbitals which are supposed to be doubly excited +in post CAS methods +list_virt : List of vritual orbitals which are supposed to be recieve electrons +in post CAS methods +list_inact_reverse : reverse list of inactive orbitals +list_inact_reverse(i) = 0 ::> not an inactive +list_inact_reverse(i) = k ::> IS the kth inactive +list_virt_reverse : reverse list of virtual orbitals +list_virt_reverse(i) = 0 ::> not an virtual +list_virt_reverse(i) = k ::> IS the kth virtual +list_act(i) = index of the ith active orbital

    +

    list_act_reverse : reverse list of active orbitals +list_act_reverse(i) = 0 ::> not an active +list_act_reverse(i) = k ::> IS the kth active orbital

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +list_act_reverse
    +

    File : bitmask/core_inact_act_virt.irp.f

    +
    integer, allocatable    :: list_inact   (dim_list_inact_orb)
    +integer, allocatable    :: list_virt    (dim_list_virt_orb)
    +integer, allocatable    :: list_inact_reverse   (mo_num)
    +integer, allocatable    :: list_virt_reverse    (mo_num)
    +integer, allocatable    :: list_del_reverse     (mo_num)
    +integer, allocatable    :: list_del     (mo_num)
    +integer, allocatable    :: list_core    (dim_list_core_orb)
    +integer, allocatable    :: list_core_reverse    (mo_num)
    +integer, allocatable    :: list_act     (dim_list_act_orb)
    +integer, allocatable    :: list_act_reverse     (mo_num)
    +integer(bit_kind), allocatable  :: core_bitmask (N_int,2)
    +integer(bit_kind), allocatable  :: inact_bitmask        (N_int,2)
    +integer(bit_kind), allocatable  :: act_bitmask  (N_int,2)
    +integer(bit_kind), allocatable  :: virt_bitmask (N_int,2)
    +integer(bit_kind), allocatable  :: del_bitmask  (N_int,2)
    +
    +
    +

    inact_bitmask : Bitmask of the inactive orbitals which are supposed to be doubly excited +in post CAS methods +n_inact_orb : Number of inactive orbitals +virt_bitmask : Bitmaks of vritual orbitals which are supposed to be recieve electrons +in post CAS methods +n_virt_orb : Number of virtual orbitals +list_inact : List of the inactive orbitals which are supposed to be doubly excited +in post CAS methods +list_virt : List of vritual orbitals which are supposed to be recieve electrons +in post CAS methods +list_inact_reverse : reverse list of inactive orbitals +list_inact_reverse(i) = 0 ::> not an inactive +list_inact_reverse(i) = k ::> IS the kth inactive +list_virt_reverse : reverse list of virtual orbitals +list_virt_reverse(i) = 0 ::> not an virtual +list_virt_reverse(i) = k ::> IS the kth virtual +list_act(i) = index of the ith active orbital

    +

    list_act_reverse : reverse list of active orbitals +list_act_reverse(i) = 0 ::> not an active +list_act_reverse(i) = k ::> IS the kth active orbital

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +list_core
    +

    File : bitmask/core_inact_act_virt.irp.f

    +
    integer, allocatable    :: list_inact   (dim_list_inact_orb)
    +integer, allocatable    :: list_virt    (dim_list_virt_orb)
    +integer, allocatable    :: list_inact_reverse   (mo_num)
    +integer, allocatable    :: list_virt_reverse    (mo_num)
    +integer, allocatable    :: list_del_reverse     (mo_num)
    +integer, allocatable    :: list_del     (mo_num)
    +integer, allocatable    :: list_core    (dim_list_core_orb)
    +integer, allocatable    :: list_core_reverse    (mo_num)
    +integer, allocatable    :: list_act     (dim_list_act_orb)
    +integer, allocatable    :: list_act_reverse     (mo_num)
    +integer(bit_kind), allocatable  :: core_bitmask (N_int,2)
    +integer(bit_kind), allocatable  :: inact_bitmask        (N_int,2)
    +integer(bit_kind), allocatable  :: act_bitmask  (N_int,2)
    +integer(bit_kind), allocatable  :: virt_bitmask (N_int,2)
    +integer(bit_kind), allocatable  :: del_bitmask  (N_int,2)
    +
    +
    +

    inact_bitmask : Bitmask of the inactive orbitals which are supposed to be doubly excited +in post CAS methods +n_inact_orb : Number of inactive orbitals +virt_bitmask : Bitmaks of vritual orbitals which are supposed to be recieve electrons +in post CAS methods +n_virt_orb : Number of virtual orbitals +list_inact : List of the inactive orbitals which are supposed to be doubly excited +in post CAS methods +list_virt : List of vritual orbitals which are supposed to be recieve electrons +in post CAS methods +list_inact_reverse : reverse list of inactive orbitals +list_inact_reverse(i) = 0 ::> not an inactive +list_inact_reverse(i) = k ::> IS the kth inactive +list_virt_reverse : reverse list of virtual orbitals +list_virt_reverse(i) = 0 ::> not an virtual +list_virt_reverse(i) = k ::> IS the kth virtual +list_act(i) = index of the ith active orbital

    +

    list_act_reverse : reverse list of active orbitals +list_act_reverse(i) = 0 ::> not an active +list_act_reverse(i) = k ::> IS the kth active orbital

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +list_core_inact_act
    +

    File : bitmask/bitmasks.irp.f

    +
    integer, allocatable    :: list_core_inact_act  (n_core_inact_act_orb)
    +integer, allocatable    :: list_core_inact_act_reverse  (mo_num)
    +
    +
    +

    Needs:

    +
    + + +
    +
    + +
    +
    +list_core_inact_act_reverse
    +

    File : bitmask/bitmasks.irp.f

    +
    integer, allocatable    :: list_core_inact_act  (n_core_inact_act_orb)
    +integer, allocatable    :: list_core_inact_act_reverse  (mo_num)
    +
    +
    +

    Needs:

    +
    + + +
    +
    + +
    +
    +list_core_reverse
    +

    File : bitmask/core_inact_act_virt.irp.f

    +
    integer, allocatable    :: list_inact   (dim_list_inact_orb)
    +integer, allocatable    :: list_virt    (dim_list_virt_orb)
    +integer, allocatable    :: list_inact_reverse   (mo_num)
    +integer, allocatable    :: list_virt_reverse    (mo_num)
    +integer, allocatable    :: list_del_reverse     (mo_num)
    +integer, allocatable    :: list_del     (mo_num)
    +integer, allocatable    :: list_core    (dim_list_core_orb)
    +integer, allocatable    :: list_core_reverse    (mo_num)
    +integer, allocatable    :: list_act     (dim_list_act_orb)
    +integer, allocatable    :: list_act_reverse     (mo_num)
    +integer(bit_kind), allocatable  :: core_bitmask (N_int,2)
    +integer(bit_kind), allocatable  :: inact_bitmask        (N_int,2)
    +integer(bit_kind), allocatable  :: act_bitmask  (N_int,2)
    +integer(bit_kind), allocatable  :: virt_bitmask (N_int,2)
    +integer(bit_kind), allocatable  :: del_bitmask  (N_int,2)
    +
    +
    +

    inact_bitmask : Bitmask of the inactive orbitals which are supposed to be doubly excited +in post CAS methods +n_inact_orb : Number of inactive orbitals +virt_bitmask : Bitmaks of vritual orbitals which are supposed to be recieve electrons +in post CAS methods +n_virt_orb : Number of virtual orbitals +list_inact : List of the inactive orbitals which are supposed to be doubly excited +in post CAS methods +list_virt : List of vritual orbitals which are supposed to be recieve electrons +in post CAS methods +list_inact_reverse : reverse list of inactive orbitals +list_inact_reverse(i) = 0 ::> not an inactive +list_inact_reverse(i) = k ::> IS the kth inactive +list_virt_reverse : reverse list of virtual orbitals +list_virt_reverse(i) = 0 ::> not an virtual +list_virt_reverse(i) = k ::> IS the kth virtual +list_act(i) = index of the ith active orbital

    +

    list_act_reverse : reverse list of active orbitals +list_act_reverse(i) = 0 ::> not an active +list_act_reverse(i) = k ::> IS the kth active orbital

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +list_del
    +

    File : bitmask/core_inact_act_virt.irp.f

    +
    integer, allocatable    :: list_inact   (dim_list_inact_orb)
    +integer, allocatable    :: list_virt    (dim_list_virt_orb)
    +integer, allocatable    :: list_inact_reverse   (mo_num)
    +integer, allocatable    :: list_virt_reverse    (mo_num)
    +integer, allocatable    :: list_del_reverse     (mo_num)
    +integer, allocatable    :: list_del     (mo_num)
    +integer, allocatable    :: list_core    (dim_list_core_orb)
    +integer, allocatable    :: list_core_reverse    (mo_num)
    +integer, allocatable    :: list_act     (dim_list_act_orb)
    +integer, allocatable    :: list_act_reverse     (mo_num)
    +integer(bit_kind), allocatable  :: core_bitmask (N_int,2)
    +integer(bit_kind), allocatable  :: inact_bitmask        (N_int,2)
    +integer(bit_kind), allocatable  :: act_bitmask  (N_int,2)
    +integer(bit_kind), allocatable  :: virt_bitmask (N_int,2)
    +integer(bit_kind), allocatable  :: del_bitmask  (N_int,2)
    +
    +
    +

    inact_bitmask : Bitmask of the inactive orbitals which are supposed to be doubly excited +in post CAS methods +n_inact_orb : Number of inactive orbitals +virt_bitmask : Bitmaks of vritual orbitals which are supposed to be recieve electrons +in post CAS methods +n_virt_orb : Number of virtual orbitals +list_inact : List of the inactive orbitals which are supposed to be doubly excited +in post CAS methods +list_virt : List of vritual orbitals which are supposed to be recieve electrons +in post CAS methods +list_inact_reverse : reverse list of inactive orbitals +list_inact_reverse(i) = 0 ::> not an inactive +list_inact_reverse(i) = k ::> IS the kth inactive +list_virt_reverse : reverse list of virtual orbitals +list_virt_reverse(i) = 0 ::> not an virtual +list_virt_reverse(i) = k ::> IS the kth virtual +list_act(i) = index of the ith active orbital

    +

    list_act_reverse : reverse list of active orbitals +list_act_reverse(i) = 0 ::> not an active +list_act_reverse(i) = k ::> IS the kth active orbital

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +list_del_reverse
    +

    File : bitmask/core_inact_act_virt.irp.f

    +
    integer, allocatable    :: list_inact   (dim_list_inact_orb)
    +integer, allocatable    :: list_virt    (dim_list_virt_orb)
    +integer, allocatable    :: list_inact_reverse   (mo_num)
    +integer, allocatable    :: list_virt_reverse    (mo_num)
    +integer, allocatable    :: list_del_reverse     (mo_num)
    +integer, allocatable    :: list_del     (mo_num)
    +integer, allocatable    :: list_core    (dim_list_core_orb)
    +integer, allocatable    :: list_core_reverse    (mo_num)
    +integer, allocatable    :: list_act     (dim_list_act_orb)
    +integer, allocatable    :: list_act_reverse     (mo_num)
    +integer(bit_kind), allocatable  :: core_bitmask (N_int,2)
    +integer(bit_kind), allocatable  :: inact_bitmask        (N_int,2)
    +integer(bit_kind), allocatable  :: act_bitmask  (N_int,2)
    +integer(bit_kind), allocatable  :: virt_bitmask (N_int,2)
    +integer(bit_kind), allocatable  :: del_bitmask  (N_int,2)
    +
    +
    +

    inact_bitmask : Bitmask of the inactive orbitals which are supposed to be doubly excited +in post CAS methods +n_inact_orb : Number of inactive orbitals +virt_bitmask : Bitmaks of vritual orbitals which are supposed to be recieve electrons +in post CAS methods +n_virt_orb : Number of virtual orbitals +list_inact : List of the inactive orbitals which are supposed to be doubly excited +in post CAS methods +list_virt : List of vritual orbitals which are supposed to be recieve electrons +in post CAS methods +list_inact_reverse : reverse list of inactive orbitals +list_inact_reverse(i) = 0 ::> not an inactive +list_inact_reverse(i) = k ::> IS the kth inactive +list_virt_reverse : reverse list of virtual orbitals +list_virt_reverse(i) = 0 ::> not an virtual +list_virt_reverse(i) = k ::> IS the kth virtual +list_act(i) = index of the ith active orbital

    +

    list_act_reverse : reverse list of active orbitals +list_act_reverse(i) = 0 ::> not an active +list_act_reverse(i) = k ::> IS the kth active orbital

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +list_inact
    +

    File : bitmask/core_inact_act_virt.irp.f

    +
    integer, allocatable    :: list_inact   (dim_list_inact_orb)
    +integer, allocatable    :: list_virt    (dim_list_virt_orb)
    +integer, allocatable    :: list_inact_reverse   (mo_num)
    +integer, allocatable    :: list_virt_reverse    (mo_num)
    +integer, allocatable    :: list_del_reverse     (mo_num)
    +integer, allocatable    :: list_del     (mo_num)
    +integer, allocatable    :: list_core    (dim_list_core_orb)
    +integer, allocatable    :: list_core_reverse    (mo_num)
    +integer, allocatable    :: list_act     (dim_list_act_orb)
    +integer, allocatable    :: list_act_reverse     (mo_num)
    +integer(bit_kind), allocatable  :: core_bitmask (N_int,2)
    +integer(bit_kind), allocatable  :: inact_bitmask        (N_int,2)
    +integer(bit_kind), allocatable  :: act_bitmask  (N_int,2)
    +integer(bit_kind), allocatable  :: virt_bitmask (N_int,2)
    +integer(bit_kind), allocatable  :: del_bitmask  (N_int,2)
    +
    +
    +

    inact_bitmask : Bitmask of the inactive orbitals which are supposed to be doubly excited +in post CAS methods +n_inact_orb : Number of inactive orbitals +virt_bitmask : Bitmaks of vritual orbitals which are supposed to be recieve electrons +in post CAS methods +n_virt_orb : Number of virtual orbitals +list_inact : List of the inactive orbitals which are supposed to be doubly excited +in post CAS methods +list_virt : List of vritual orbitals which are supposed to be recieve electrons +in post CAS methods +list_inact_reverse : reverse list of inactive orbitals +list_inact_reverse(i) = 0 ::> not an inactive +list_inact_reverse(i) = k ::> IS the kth inactive +list_virt_reverse : reverse list of virtual orbitals +list_virt_reverse(i) = 0 ::> not an virtual +list_virt_reverse(i) = k ::> IS the kth virtual +list_act(i) = index of the ith active orbital

    +

    list_act_reverse : reverse list of active orbitals +list_act_reverse(i) = 0 ::> not an active +list_act_reverse(i) = k ::> IS the kth active orbital

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +list_inact_reverse
    +

    File : bitmask/core_inact_act_virt.irp.f

    +
    integer, allocatable    :: list_inact   (dim_list_inact_orb)
    +integer, allocatable    :: list_virt    (dim_list_virt_orb)
    +integer, allocatable    :: list_inact_reverse   (mo_num)
    +integer, allocatable    :: list_virt_reverse    (mo_num)
    +integer, allocatable    :: list_del_reverse     (mo_num)
    +integer, allocatable    :: list_del     (mo_num)
    +integer, allocatable    :: list_core    (dim_list_core_orb)
    +integer, allocatable    :: list_core_reverse    (mo_num)
    +integer, allocatable    :: list_act     (dim_list_act_orb)
    +integer, allocatable    :: list_act_reverse     (mo_num)
    +integer(bit_kind), allocatable  :: core_bitmask (N_int,2)
    +integer(bit_kind), allocatable  :: inact_bitmask        (N_int,2)
    +integer(bit_kind), allocatable  :: act_bitmask  (N_int,2)
    +integer(bit_kind), allocatable  :: virt_bitmask (N_int,2)
    +integer(bit_kind), allocatable  :: del_bitmask  (N_int,2)
    +
    +
    +

    inact_bitmask : Bitmask of the inactive orbitals which are supposed to be doubly excited +in post CAS methods +n_inact_orb : Number of inactive orbitals +virt_bitmask : Bitmaks of vritual orbitals which are supposed to be recieve electrons +in post CAS methods +n_virt_orb : Number of virtual orbitals +list_inact : List of the inactive orbitals which are supposed to be doubly excited +in post CAS methods +list_virt : List of vritual orbitals which are supposed to be recieve electrons +in post CAS methods +list_inact_reverse : reverse list of inactive orbitals +list_inact_reverse(i) = 0 ::> not an inactive +list_inact_reverse(i) = k ::> IS the kth inactive +list_virt_reverse : reverse list of virtual orbitals +list_virt_reverse(i) = 0 ::> not an virtual +list_virt_reverse(i) = k ::> IS the kth virtual +list_act(i) = index of the ith active orbital

    +

    list_act_reverse : reverse list of active orbitals +list_act_reverse(i) = 0 ::> not an active +list_act_reverse(i) = k ::> IS the kth active orbital

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +list_virt
    +

    File : bitmask/core_inact_act_virt.irp.f

    +
    integer, allocatable    :: list_inact   (dim_list_inact_orb)
    +integer, allocatable    :: list_virt    (dim_list_virt_orb)
    +integer, allocatable    :: list_inact_reverse   (mo_num)
    +integer, allocatable    :: list_virt_reverse    (mo_num)
    +integer, allocatable    :: list_del_reverse     (mo_num)
    +integer, allocatable    :: list_del     (mo_num)
    +integer, allocatable    :: list_core    (dim_list_core_orb)
    +integer, allocatable    :: list_core_reverse    (mo_num)
    +integer, allocatable    :: list_act     (dim_list_act_orb)
    +integer, allocatable    :: list_act_reverse     (mo_num)
    +integer(bit_kind), allocatable  :: core_bitmask (N_int,2)
    +integer(bit_kind), allocatable  :: inact_bitmask        (N_int,2)
    +integer(bit_kind), allocatable  :: act_bitmask  (N_int,2)
    +integer(bit_kind), allocatable  :: virt_bitmask (N_int,2)
    +integer(bit_kind), allocatable  :: del_bitmask  (N_int,2)
    +
    +
    +

    inact_bitmask : Bitmask of the inactive orbitals which are supposed to be doubly excited +in post CAS methods +n_inact_orb : Number of inactive orbitals +virt_bitmask : Bitmaks of vritual orbitals which are supposed to be recieve electrons +in post CAS methods +n_virt_orb : Number of virtual orbitals +list_inact : List of the inactive orbitals which are supposed to be doubly excited +in post CAS methods +list_virt : List of vritual orbitals which are supposed to be recieve electrons +in post CAS methods +list_inact_reverse : reverse list of inactive orbitals +list_inact_reverse(i) = 0 ::> not an inactive +list_inact_reverse(i) = k ::> IS the kth inactive +list_virt_reverse : reverse list of virtual orbitals +list_virt_reverse(i) = 0 ::> not an virtual +list_virt_reverse(i) = k ::> IS the kth virtual +list_act(i) = index of the ith active orbital

    +

    list_act_reverse : reverse list of active orbitals +list_act_reverse(i) = 0 ::> not an active +list_act_reverse(i) = k ::> IS the kth active orbital

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +list_virt_reverse
    +

    File : bitmask/core_inact_act_virt.irp.f

    +
    integer, allocatable    :: list_inact   (dim_list_inact_orb)
    +integer, allocatable    :: list_virt    (dim_list_virt_orb)
    +integer, allocatable    :: list_inact_reverse   (mo_num)
    +integer, allocatable    :: list_virt_reverse    (mo_num)
    +integer, allocatable    :: list_del_reverse     (mo_num)
    +integer, allocatable    :: list_del     (mo_num)
    +integer, allocatable    :: list_core    (dim_list_core_orb)
    +integer, allocatable    :: list_core_reverse    (mo_num)
    +integer, allocatable    :: list_act     (dim_list_act_orb)
    +integer, allocatable    :: list_act_reverse     (mo_num)
    +integer(bit_kind), allocatable  :: core_bitmask (N_int,2)
    +integer(bit_kind), allocatable  :: inact_bitmask        (N_int,2)
    +integer(bit_kind), allocatable  :: act_bitmask  (N_int,2)
    +integer(bit_kind), allocatable  :: virt_bitmask (N_int,2)
    +integer(bit_kind), allocatable  :: del_bitmask  (N_int,2)
    +
    +
    +

    inact_bitmask : Bitmask of the inactive orbitals which are supposed to be doubly excited +in post CAS methods +n_inact_orb : Number of inactive orbitals +virt_bitmask : Bitmaks of vritual orbitals which are supposed to be recieve electrons +in post CAS methods +n_virt_orb : Number of virtual orbitals +list_inact : List of the inactive orbitals which are supposed to be doubly excited +in post CAS methods +list_virt : List of vritual orbitals which are supposed to be recieve electrons +in post CAS methods +list_inact_reverse : reverse list of inactive orbitals +list_inact_reverse(i) = 0 ::> not an inactive +list_inact_reverse(i) = k ::> IS the kth inactive +list_virt_reverse : reverse list of virtual orbitals +list_virt_reverse(i) = 0 ::> not an virtual +list_virt_reverse(i) = k ::> IS the kth virtual +list_act(i) = index of the ith active orbital

    +

    list_act_reverse : reverse list of active orbitals +list_act_reverse(i) = 0 ::> not an active +list_act_reverse(i) = k ::> IS the kth active orbital

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +mpi_bit_kind
    +

    File : bitmask/mpi.irp.f

    +
    integer :: mpi_bit_kind
    +
    +
    +

    MPI bit kind type

    +
    + +
    +
    +n_act_orb
    +

    File : bitmask/core_inact_act_virt.irp.f

    +
    integer :: n_core_orb
    +integer :: n_inact_orb
    +integer :: n_act_orb
    +integer :: n_virt_orb
    +integer :: n_del_orb
    +
    +
    +

    inact_bitmask : Bitmask of the inactive orbitals which are supposed to be doubly excited +in post CAS methods +n_inact_orb : Number of inactive orbitals +virt_bitmask : Bitmaks of vritual orbitals which are supposed to be recieve electrons +in post CAS methods +n_virt_orb : Number of virtual orbitals +list_inact : List of the inactive orbitals which are supposed to be doubly excited +in post CAS methods +list_virt : List of vritual orbitals which are supposed to be recieve electrons +in post CAS methods +list_inact_reverse : reverse list of inactive orbitals +list_inact_reverse(i) = 0 ::> not an inactive +list_inact_reverse(i) = k ::> IS the kth inactive +list_virt_reverse : reverse list of virtual orbitals +list_virt_reverse(i) = 0 ::> not an virtual +list_virt_reverse(i) = k ::> IS the kth virtual +list_act(i) = index of the ith active orbital

    +

    list_act_reverse : reverse list of active orbitals +list_act_reverse(i) = 0 ::> not an active +list_act_reverse(i) = k ::> IS the kth active orbital

    +

    Needs:

    +
      +
    • mo_class
    • +
    +
    + +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +n_cas_bitmask
    +

    File : bitmask/bitmasks.irp.f

    +
    integer :: n_cas_bitmask
    +
    +
    +

    Number of bitmasks for CAS

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    + +
      +
    +
    +
    + +
    +
    +n_core_inact_act_orb
    +

    File : bitmask/bitmasks.irp.f

    +
    integer(bit_kind), allocatable  :: reunion_of_core_inact_act_bitmask    (N_int,2)
    +integer :: n_core_inact_act_orb
    +
    +
    +

    Reunion of the core, inactive and active bitmasks

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    + +
      +
    +
    +
    + +
    +
    +n_core_inact_orb
    +

    File : bitmask/bitmasks.irp.f

    +
    integer :: n_core_inact_orb
    +
    +
    +

    Needs:

    +
    + +
      +
    +
    +
    + +
    +
    +n_core_orb
    +

    File : bitmask/core_inact_act_virt.irp.f

    +
    integer :: n_core_orb
    +integer :: n_inact_orb
    +integer :: n_act_orb
    +integer :: n_virt_orb
    +integer :: n_del_orb
    +
    +
    +

    inact_bitmask : Bitmask of the inactive orbitals which are supposed to be doubly excited +in post CAS methods +n_inact_orb : Number of inactive orbitals +virt_bitmask : Bitmaks of vritual orbitals which are supposed to be recieve electrons +in post CAS methods +n_virt_orb : Number of virtual orbitals +list_inact : List of the inactive orbitals which are supposed to be doubly excited +in post CAS methods +list_virt : List of vritual orbitals which are supposed to be recieve electrons +in post CAS methods +list_inact_reverse : reverse list of inactive orbitals +list_inact_reverse(i) = 0 ::> not an inactive +list_inact_reverse(i) = k ::> IS the kth inactive +list_virt_reverse : reverse list of virtual orbitals +list_virt_reverse(i) = 0 ::> not an virtual +list_virt_reverse(i) = k ::> IS the kth virtual +list_act(i) = index of the ith active orbital

    +

    list_act_reverse : reverse list of active orbitals +list_act_reverse(i) = 0 ::> not an active +list_act_reverse(i) = k ::> IS the kth active orbital

    +

    Needs:

    +
      +
    • mo_class
    • +
    +
    + +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +n_core_orb_allocate
    +

    File : bitmask/bitmasks.irp.f

    +
    integer :: n_core_orb_allocate
    +
    +
    +

    Needs:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +n_del_orb
    +

    File : bitmask/core_inact_act_virt.irp.f

    +
    integer :: n_core_orb
    +integer :: n_inact_orb
    +integer :: n_act_orb
    +integer :: n_virt_orb
    +integer :: n_del_orb
    +
    +
    +

    inact_bitmask : Bitmask of the inactive orbitals which are supposed to be doubly excited +in post CAS methods +n_inact_orb : Number of inactive orbitals +virt_bitmask : Bitmaks of vritual orbitals which are supposed to be recieve electrons +in post CAS methods +n_virt_orb : Number of virtual orbitals +list_inact : List of the inactive orbitals which are supposed to be doubly excited +in post CAS methods +list_virt : List of vritual orbitals which are supposed to be recieve electrons +in post CAS methods +list_inact_reverse : reverse list of inactive orbitals +list_inact_reverse(i) = 0 ::> not an inactive +list_inact_reverse(i) = k ::> IS the kth inactive +list_virt_reverse : reverse list of virtual orbitals +list_virt_reverse(i) = 0 ::> not an virtual +list_virt_reverse(i) = k ::> IS the kth virtual +list_act(i) = index of the ith active orbital

    +

    list_act_reverse : reverse list of active orbitals +list_act_reverse(i) = 0 ::> not an active +list_act_reverse(i) = k ::> IS the kth active orbital

    +

    Needs:

    +
      +
    • mo_class
    • +
    +
    + +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +n_generators_bitmask
    +

    File : bitmask/bitmasks.irp.f

    +
    integer :: n_generators_bitmask
    +
    +
    +

    Number of bitmasks for generators

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +n_generators_bitmask_restart
    +

    File : bitmask/bitmasks.irp.f

    +
    integer :: n_generators_bitmask_restart
    +
    +
    +

    Number of bitmasks for generators

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +n_inact_orb
    +

    File : bitmask/core_inact_act_virt.irp.f

    +
    integer :: n_core_orb
    +integer :: n_inact_orb
    +integer :: n_act_orb
    +integer :: n_virt_orb
    +integer :: n_del_orb
    +
    +
    +

    inact_bitmask : Bitmask of the inactive orbitals which are supposed to be doubly excited +in post CAS methods +n_inact_orb : Number of inactive orbitals +virt_bitmask : Bitmaks of vritual orbitals which are supposed to be recieve electrons +in post CAS methods +n_virt_orb : Number of virtual orbitals +list_inact : List of the inactive orbitals which are supposed to be doubly excited +in post CAS methods +list_virt : List of vritual orbitals which are supposed to be recieve electrons +in post CAS methods +list_inact_reverse : reverse list of inactive orbitals +list_inact_reverse(i) = 0 ::> not an inactive +list_inact_reverse(i) = k ::> IS the kth inactive +list_virt_reverse : reverse list of virtual orbitals +list_virt_reverse(i) = 0 ::> not an virtual +list_virt_reverse(i) = k ::> IS the kth virtual +list_act(i) = index of the ith active orbital

    +

    list_act_reverse : reverse list of active orbitals +list_act_reverse(i) = 0 ::> not an active +list_act_reverse(i) = k ::> IS the kth active orbital

    +

    Needs:

    +
      +
    • mo_class
    • +
    +
    + +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +n_inact_orb_allocate
    +

    File : bitmask/bitmasks.irp.f

    +
    integer :: n_inact_orb_allocate
    +
    +
    +

    Needs:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +n_int
    +

    File : bitmask/bitmasks.irp.f

    +
    integer :: n_int
    +
    +
    +

    Number of 64-bit integers needed to represent determinants as binary strings

    +

    Needs:

    +
    + +
      +
    +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +n_virt_orb
    +

    File : bitmask/core_inact_act_virt.irp.f

    +
    integer :: n_core_orb
    +integer :: n_inact_orb
    +integer :: n_act_orb
    +integer :: n_virt_orb
    +integer :: n_del_orb
    +
    +
    +

    inact_bitmask : Bitmask of the inactive orbitals which are supposed to be doubly excited +in post CAS methods +n_inact_orb : Number of inactive orbitals +virt_bitmask : Bitmaks of vritual orbitals which are supposed to be recieve electrons +in post CAS methods +n_virt_orb : Number of virtual orbitals +list_inact : List of the inactive orbitals which are supposed to be doubly excited +in post CAS methods +list_virt : List of vritual orbitals which are supposed to be recieve electrons +in post CAS methods +list_inact_reverse : reverse list of inactive orbitals +list_inact_reverse(i) = 0 ::> not an inactive +list_inact_reverse(i) = k ::> IS the kth inactive +list_virt_reverse : reverse list of virtual orbitals +list_virt_reverse(i) = 0 ::> not an virtual +list_virt_reverse(i) = k ::> IS the kth virtual +list_act(i) = index of the ith active orbital

    +

    list_act_reverse : reverse list of active orbitals +list_act_reverse(i) = 0 ::> not an active +list_act_reverse(i) = k ::> IS the kth active orbital

    +

    Needs:

    +
      +
    • mo_class
    • +
    +
    + +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +n_virt_orb_allocate
    +

    File : bitmask/bitmasks.irp.f

    +
    integer :: n_virt_orb_allocate
    +
    +
    +

    Needs:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +ref_bitmask
    +

    File : bitmask/bitmasks.irp.f

    +
    integer(bit_kind), allocatable  :: ref_bitmask  (N_int,2)
    +
    +
    +

    Reference bit mask, used in Slater rules, chosen as Hartree-Fock bitmask

    +

    Needs:

    +
    + +
      +
    +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +reunion_of_bitmask
    +

    File : bitmask/bitmasks.irp.f

    +
    integer(bit_kind), allocatable  :: reunion_of_bitmask   (N_int,2)
    +
    +
    +

    Reunion of the inactive, active and virtual bitmasks

    +

    Needs:

    +
    + + +
    +
    + +
    +
    +reunion_of_cas_inact_bitmask
    +

    File : bitmask/bitmasks.irp.f

    +
    integer(bit_kind), allocatable  :: reunion_of_cas_inact_bitmask (N_int,2)
    +
    +
    +

    Reunion of the inactive, active and virtual bitmasks

    +

    Needs:

    +
    + + +
    +
    + +
    +
    +reunion_of_core_inact_act_bitmask
    +

    File : bitmask/bitmasks.irp.f

    +
    integer(bit_kind), allocatable  :: reunion_of_core_inact_act_bitmask    (N_int,2)
    +integer :: n_core_inact_act_orb
    +
    +
    +

    Reunion of the core, inactive and active bitmasks

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    + +
      +
    +
    +
    + +
    +
    +reunion_of_core_inact_bitmask
    +

    File : bitmask/bitmasks.irp.f

    +
    integer(bit_kind), allocatable  :: reunion_of_core_inact_bitmask        (N_int,2)
    +
    +
    +

    Reunion of the core and inactive and virtual bitmasks

    +

    Needs:

    +
    + +
      +
    +
    +

    Needed by:

    +
    + +
      +
    +
    +
    + +
    +
    +unpaired_alpha_electrons
    +

    File : bitmask/bitmasks.irp.f

    +
    integer(bit_kind), allocatable  :: unpaired_alpha_electrons     (N_int)
    +
    +
    +

    Bitmask reprenting the unpaired alpha electrons in the HF_bitmask

    +

    Needs:

    +
    + +
      +
    +
    +
    + +
    +
    +virt_bitmask
    +

    File : bitmask/core_inact_act_virt.irp.f

    +
    integer, allocatable    :: list_inact   (dim_list_inact_orb)
    +integer, allocatable    :: list_virt    (dim_list_virt_orb)
    +integer, allocatable    :: list_inact_reverse   (mo_num)
    +integer, allocatable    :: list_virt_reverse    (mo_num)
    +integer, allocatable    :: list_del_reverse     (mo_num)
    +integer, allocatable    :: list_del     (mo_num)
    +integer, allocatable    :: list_core    (dim_list_core_orb)
    +integer, allocatable    :: list_core_reverse    (mo_num)
    +integer, allocatable    :: list_act     (dim_list_act_orb)
    +integer, allocatable    :: list_act_reverse     (mo_num)
    +integer(bit_kind), allocatable  :: core_bitmask (N_int,2)
    +integer(bit_kind), allocatable  :: inact_bitmask        (N_int,2)
    +integer(bit_kind), allocatable  :: act_bitmask  (N_int,2)
    +integer(bit_kind), allocatable  :: virt_bitmask (N_int,2)
    +integer(bit_kind), allocatable  :: del_bitmask  (N_int,2)
    +
    +
    +

    inact_bitmask : Bitmask of the inactive orbitals which are supposed to be doubly excited +in post CAS methods +n_inact_orb : Number of inactive orbitals +virt_bitmask : Bitmaks of vritual orbitals which are supposed to be recieve electrons +in post CAS methods +n_virt_orb : Number of virtual orbitals +list_inact : List of the inactive orbitals which are supposed to be doubly excited +in post CAS methods +list_virt : List of vritual orbitals which are supposed to be recieve electrons +in post CAS methods +list_inact_reverse : reverse list of inactive orbitals +list_inact_reverse(i) = 0 ::> not an inactive +list_inact_reverse(i) = k ::> IS the kth inactive +list_virt_reverse : reverse list of virtual orbitals +list_virt_reverse(i) = 0 ::> not an virtual +list_virt_reverse(i) = k ::> IS the kth virtual +list_act(i) = index of the ith active orbital

    +

    list_act_reverse : reverse list of active orbitals +list_act_reverse(i) = 0 ::> not an active +list_act_reverse(i) = k ::> IS the kth active orbital

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +virt_bitmask_4
    +

    File : bitmask/bitmasks.irp.f

    +
    integer(bit_kind), allocatable  :: virt_bitmask_4       (N_int,4)
    +
    +
    +

    Needs:

    +
    + +
      +
    +
    +
    + +
    +
    +

    Subroutines / functions

    +
    +
    +bitstring_to_hexa:()
    +

    File : bitmask/bitmasks_routines.irp.f

    +
    subroutine bitstring_to_hexa( output, string, Nint )
    +
    +
    +

    Transform a bit string to a string in hexadecimal format for printing

    +

    Called by:

    +
      +
    • debug_det()
    • +
    +
      +
    • debug_spindet()
    • +
    +
      +
    +
    +
    + +
    +
    +bitstring_to_list:()
    +

    File : bitmask/bitmasks_routines.irp.f

    +
    subroutine bitstring_to_list( string, list, n_elements, Nint)
    +
    +
    +

    Gives the inidices(+1) of the bits set to 1 in the bit string

    +

    Called by:

    +
      +
    • add_integrals_to_map()
    • +
    • add_integrals_to_map_erf()
    • +
    • add_integrals_to_map_no_exit_34()
    • +
    +
      +
    • add_integrals_to_map_three_indices()
    • +
    • create_microlist()
    • +
    • example_bitmask()
    • +
    +
    +
    +
    + +
    +
    +bitstring_to_str:()
    +

    File : bitmask/bitmasks_routines.irp.f

    +
    subroutine bitstring_to_str( output, string, Nint )
    +
    +
    +

    Transform a bit string to a string for printing

    +

    Called by:

    +
      +
    • add_integrals_to_map()
    • +
    • add_integrals_to_map_erf()
    • +
    +
      +
    • add_integrals_to_map_three_indices()
    • +
    • example_bitmask()
    • +
    +
      +
    • print_det()
    • +
    • print_spindet()
    • +
    +
    +
    + +
    +
    +broadcast_chunks_bit_kind:()
    +

    File : bitmask/mpi.irp.f

    +
    subroutine broadcast_chunks_bit_kind(A, LDA)
    +
    +
    +

    Broadcast with chunks of ~2GB

    +
    + +
    +
    +clear_bit_to_integer:()
    +

    File : bitmask/bitmasks_routines.irp.f

    +
    subroutine clear_bit_to_integer(i_physical,key,Nint)
    +
    +
    +

    set to 0 the bit number i_physical in the bitstring key

    +

    Called by:

    +
      +
    • example_bitmask()
    • +
    +
    +
      +
    +
    +
    + +
    +
    +debug_det:()
    +

    File : bitmask/bitmasks_routines.irp.f

    +
    subroutine debug_det(string,Nint)
    +
    +
    +

    Subroutine to print the content of a determinant in ‘+-‘ notation and +hexadecimal representation.

    +

    Called by:

    +
      +
    • build_fock_tmp()
    • +
    • example_determinants()
    • +
    +
      +
    • get_excitation_degree_vector_mono_or_exchange_verbose()
    • +
    • number_of_holes_verbose()
    • +
    +
      +
    • number_of_particles_verbose()
    • +
    • routine_example_psi_det()
    • +
    +
    +

    Calls:

    +
      +
    • bitstring_to_hexa()
    • +
    +
      +
    • print_det()
    • +
    +
      +
    +
    +
    + +
    +
    +debug_spindet:()
    +

    File : bitmask/bitmasks_routines.irp.f

    +
    subroutine debug_spindet(string,Nint)
    +
    +
    +

    Subroutine to print the content of a determinant in ‘+-‘ notation and +hexadecimal representation.

    +

    Calls:

    +
      +
    • bitstring_to_hexa()
    • +
    +
      +
    • print_spindet()
    • +
    +
      +
    +
    +
    + +
    +
    +example_bitmask:()
    +

    File : bitmask/example.irp.f

    +
    subroutine example_bitmask
    +
    +
    +

    subroutine that illustrates the main features available in bitmask

    +

    Needs:

    +
    + + +
    +

    Calls:

    +
      +
    • bitstring_to_list()
    • +
    • bitstring_to_str()
    • +
    +
      +
    • clear_bit_to_integer()
    • +
    +
      +
    • set_bit_to_integer()
    • +
    +
    +
    + +
    +
    +initialize_bitmask_to_restart_ones:()
    +

    File : bitmask/modify_bitmasks.irp.f

    +
    subroutine initialize_bitmask_to_restart_ones
    +
    +
    +

    Initialization of the generators_bitmask to the restart bitmask

    +

    Needs:

    +
    + + +
    +
    + +
    +
    +is_a_1h:()
    +

    File : bitmask/bitmask_cas_routines.irp.f

    +
    logical function is_a_1h(key_in)
    +
    +
    +

    Needs:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +is_a_1h1p:()
    +

    File : bitmask/bitmask_cas_routines.irp.f

    +
    logical function is_a_1h1p(key_in)
    +
    +
    +

    Needs:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +is_a_1h2p:()
    +

    File : bitmask/bitmask_cas_routines.irp.f

    +
    logical function is_a_1h2p(key_in)
    +
    +
    +

    Needs:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +is_a_1p:()
    +

    File : bitmask/bitmask_cas_routines.irp.f

    +
    logical function is_a_1p(key_in)
    +
    +
    +

    Needs:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +is_a_2h:()
    +

    File : bitmask/bitmask_cas_routines.irp.f

    +
    logical function is_a_2h(key_in)
    +
    +
    +

    Needs:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +is_a_2h1p:()
    +

    File : bitmask/bitmask_cas_routines.irp.f

    +
    logical function is_a_2h1p(key_in)
    +
    +
    +

    Needs:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +is_a_2p:()
    +

    File : bitmask/bitmask_cas_routines.irp.f

    +
    logical function is_a_2p(key_in)
    +
    +
    +

    Needs:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +is_a_two_holes_two_particles:()
    +

    File : bitmask/bitmask_cas_routines.irp.f

    +
    logical function is_a_two_holes_two_particles(key_in)
    +
    +
    +

    logical function that returns True if the determinant ‘key_in’ +belongs to the 2h-2p excitation class of the DDCI space +this is calculated using the CAS_bitmask that defines the active +orbital space, the inact_bitmasl that defines the inactive oribital space +and the virt_bitmask that defines the virtual orbital space

    +

    Needs:

    +
    + + +
    +
    + +
    +
    +is_i_in_virtual:()
    +

    File : bitmask/bitmask_cas_routines.irp.f

    +
    logical function is_i_in_virtual(i)
    +
    +
    +

    Needs:

    +
    + +
      +
    +
    +
    + +
    +
    +is_the_hole_in_det:()
    +

    File : bitmask/find_hole.irp.f

    +
    logical function is_the_hole_in_det(key_in,ispin,i_hole)
    +
    +
    +

    Needs:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +is_the_particl_in_det:()
    +

    File : bitmask/find_hole.irp.f

    +
    logical function is_the_particl_in_det(key_in,ispin,i_particl)
    +
    +
    +

    Needs:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +list_to_bitstring:()
    +

    File : bitmask/bitmasks_routines.irp.f

    +
    subroutine list_to_bitstring( string, list, n_elements, Nint)
    +
    +
    +

    Returns the physical string “string(N_int,2)” from the array of +occupations “list(N_int*bit_kind_size,2)

    +

    Called by:

    +
    + +
      +
    +
    +
    + +
    +
    +modify_bitmasks_for_hole:()
    +

    File : bitmask/modify_bitmasks.irp.f

    +
    subroutine modify_bitmasks_for_hole(i_hole)
    +
    +
    +

    modify the generators_bitmask in order that one can only excite +the electrons occupying i_hole

    +

    Needs:

    +
    + + +
    +
    + +
    +
    +modify_bitmasks_for_hole_in_out:()
    +

    File : bitmask/modify_bitmasks.irp.f

    +
    subroutine modify_bitmasks_for_hole_in_out(i_hole)
    +
    +
    +

    modify the generators_bitmask in order that one can only excite +the electrons occupying i_hole

    +

    Needs:

    +
    + + +
    +
    + +
    +
    +modify_bitmasks_for_particl:()
    +

    File : bitmask/modify_bitmasks.irp.f

    +
    subroutine modify_bitmasks_for_particl(i_part)
    +
    +
    +

    modify the generators_bitmask in order that one can only excite +the electrons to the orbital i_part

    +

    Needs:

    +
    + + +
    +
    + +
    +
    +number_of_holes:()
    +

    File : bitmask/bitmask_cas_routines.irp.f

    +
    integer function number_of_holes(key_in)
    +
    +
    +

    Function that returns the number of holes in the inact space

    +

    Needs:

    +
    + + +
    +
    + +
    +
    +number_of_holes_verbose:()
    +

    File : bitmask/bitmask_cas_routines.irp.f

    +
    integer function number_of_holes_verbose(key_in)
    +
    +
    +

    function that returns the number of holes in the inact space

    +

    Needs:

    +
    + + +
    +

    Calls:

    +
      +
    • debug_det()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +number_of_particles:()
    +

    File : bitmask/bitmask_cas_routines.irp.f

    +
    integer function number_of_particles(key_in)
    +
    +
    +

    function that returns the number of particles in the virtual space

    +

    Needs:

    +
    + + +
    +
    + +
    +
    +number_of_particles_verbose:()
    +

    File : bitmask/bitmask_cas_routines.irp.f

    +
    integer function number_of_particles_verbose(key_in)
    +
    +
    +

    function that returns the number of particles in the inact space

    +

    Needs:

    +
    + + +
    +

    Calls:

    +
      +
    • debug_det()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +print_det:()
    +

    File : bitmask/bitmasks_routines.irp.f

    +
    subroutine print_det(string,Nint)
    +
    +
    +

    Subroutine to print the content of a determinant using the ‘+-‘ notation

    +

    Called by:

    +
      +
    • debug_det()
    • +
    • example_determinants()
    • +
    +
      +
    • print_generators_bitmasks_holes()
    • +
    • print_generators_bitmasks_holes_for_one_generator()
    • +
    +
      +
    • print_generators_bitmasks_particles()
    • +
    • print_generators_bitmasks_particles_for_one_generator()
    • +
    +
    +

    Calls:

    +
      +
    • bitstring_to_str()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +print_generators_bitmasks_holes:()
    +

    File : bitmask/modify_bitmasks.irp.f

    +
    subroutine print_generators_bitmasks_holes
    +
    +
    +

    Needs:

    +
    + + +
    +

    Calls:

    +
      +
    • print_det()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +print_generators_bitmasks_holes_for_one_generator:()
    +

    File : bitmask/modify_bitmasks.irp.f

    +
    subroutine print_generators_bitmasks_holes_for_one_generator(i_gen)
    +
    +
    +

    Needs:

    +
    + + +
    +

    Calls:

    +
      +
    • print_det()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +print_generators_bitmasks_particles:()
    +

    File : bitmask/modify_bitmasks.irp.f

    +
    subroutine print_generators_bitmasks_particles
    +
    +
    +

    Needs:

    +
    + + +
    +

    Calls:

    +
      +
    • print_det()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +print_generators_bitmasks_particles_for_one_generator:()
    +

    File : bitmask/modify_bitmasks.irp.f

    +
    subroutine print_generators_bitmasks_particles_for_one_generator(i_gen)
    +
    +
    +

    Needs:

    +
    + + +
    +

    Calls:

    +
      +
    • print_det()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +print_spindet:()
    +

    File : bitmask/bitmasks_routines.irp.f

    +
    subroutine print_spindet(string,Nint)
    +
    +
    +

    Subroutine to print the content of a determinant using the ‘+-‘ notation

    +

    Called by:

    +
      +
    • debug_spindet()
    • +
    +
      +
    +
      +
    +
    +

    Calls:

    +
      +
    • bitstring_to_str()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +set_bit_to_integer:()
    +

    File : bitmask/bitmasks_routines.irp.f

    +
    subroutine set_bit_to_integer(i_physical,key,Nint)
    +
    +
    +

    set to 1 the bit number i_physical in the bitstring key

    +

    Called by:

    +
      +
    • example_bitmask()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +set_bitmask_hole_as_input:()
    +

    File : bitmask/modify_bitmasks.irp.f

    +
    subroutine set_bitmask_hole_as_input(input_bimask)
    +
    +
    +

    set the generators_bitmask for the holes +as the input_bimask

    +

    Needs:

    +
    + + +
    +

    Touches:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +set_bitmask_particl_as_input:()
    +

    File : bitmask/modify_bitmasks.irp.f

    +
    subroutine set_bitmask_particl_as_input(input_bimask)
    +
    +
    +

    set the generators_bitmask for the particles +as the input_bimask

    +

    Needs:

    +
    + + +
    +

    Touches:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    + + +
    + +
    + + +
    +
    + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/doc/modules/cipsi.html b/doc/modules/cipsi.html new file mode 100644 index 00000000..f7755a1d --- /dev/null +++ b/doc/modules/cipsi.html @@ -0,0 +1,2613 @@ + + + + + + + + + + + cipsi — Quantum Package 2.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + +
    + + + + + +
    + +
    + + + + + + + + + + + + + + + + + +
    + + + + +
    +
    +
    +
    + +
    +

    cipsi

    +

    CIPSI algorithm.

    +

    The run_stochastic_cipsi() and run_cipsi() subroutines start with a single +determinant, or with the wave function in the EZFIO database if +determinants read_wf is true.

    +

    The run_cipsi() subroutine iteratively:

    +
      +
    • Selects the most important determinants from the external space and adds them to the +internal space
    • +
    • If determinants s2_eig is true, it adds all the necessary +determinants to allow the eigenstates of \(\hat H\) to be eigenstates of \(\widehat{S^2}\)
    • +
    • Diagonalizes \(\hat H\) in the enlarged internal space
    • +
    • Computes the PT2 contribution to the energy stochastically [13] +or deterministically, depending on perturbation do_pt2
    • +
    • Extrapolates the variational energy by fitting +\(E=E_\text{FCI} - \alpha\, E_\text{PT2}\)
    • +
    +

    The difference between run_stochastic_cipsi() and run_cipsi() is that +run_stochastic_cipsi() selects the determinants on the fly with the computation +of the stochastic PT2 [13]. Hence, it is a semi-stochastic selection. It

    +
      +
    • Selects the most important determinants from the external space and adds them to the +internal space, on the fly with the computation of the PT2 with the stochastic algorithm +presented in [13].
    • +
    • If determinants s2_eig is true, it adds all the necessary +determinants to allow the eigenstates of \(\hat H\) to be eigenstates of \(\widehat{S^2}\)
    • +
    • Extrapolates the variational energy by fitting +\(E=E_\text{FCI} - \alpha\, E_\text{PT2}\)
    • +
    • Diagonalizes \(\hat H\) in the enlarged internal space
    • +
    +

    The number of selected determinants at each iteration will be such that the +size of the wave function will double at every iteration. If determinants +s2_eig is true, then the number of selected determinants will be 1.5x the +current number, and then all the additional determinants will be added.

    +

    By default, the program will stop when more than one million determinants have +been selected, or when the PT2 energy is below \(10^{-4}\).

    +

    The variational and PT2 energies of the iterations are stored in the +EZFIO database, in the iterations module.

    +
    +

    Computation of the PT2 energy

    +

    At each iteration, the PT2 energy is computed considering the Epstein-Nesbet +zeroth-order Hamiltonian:

    +
    +\[E_{\text{PT2}} = \sum_{ \alpha } + \frac{|\langle \Psi_S | \hat{H} | \alpha \rangle|^2} + {E - \langle \alpha | \hat{H} | \alpha \rangle}\]
    +

    where the \(|\alpha \rangle\) determinants are generated by applying all the single and +double excitation operators to all the determinants of the wave function +\(\Psi_G\).

    +

    When the hybrid-deterministic/stochastic algorithm is chosen +(default), \(Psi_G = \Psi_S = \Psi\), the full wavefunction expanded in the +internal space. +When the deterministic algorithm is chosen (perturbation do_pt2 +is set to false), \(Psi_G\) is a truncation of \(|\Psi \rangle\) using +determinants threshold_generators, and \(Psi_S\) is a truncation +of \(|\Psi \rangle\) using determinants threshold_selectors, and re-weighted +by \(1/\langle \Psi_s | \Psi_s \rangle\).

    +

    At every iteration, while computing the PT2, the variance of the wave +function is also computed:

    +
    +\[\begin{split}\sigma^2 & = \langle \Psi | \hat{H}^2 | \Psi \rangle - + \langle \Psi | \hat{H} | \Psi \rangle^2 \\ + & = \sum_{i \in \text{FCI}} + \langle \Psi | \hat{H} | i \rangle + \langle i | \hat{H} | \Psi \rangle - + \langle \Psi | \hat{H} | \Psi \rangle^2 \\ + & = \sum_{ \alpha } + \langle |\Psi | \hat{H} | \alpha \rangle|^2.\end{split}\]
    +

    The expression of the variance is the same as the expression of the PT2, with +a denominator of 1. It measures how far the wave function is from the FCI +solution. Note that the absence of denominator in the Heat-Bath selected CI +method is selection method by minimization of the variance, whereas CIPSI is +a selection method by minimization of the energy.

    +

    If perturbation do_pt2 is set to false, then the stochastic +PT2 is not computed, and an approximate value is obtained from the CIPSI +selection. The calculation is faster, but the extrapolated FCI value is +less accurate. This way of running the code should be used when the only +goal is to generate a wave function, as for using CIPSI wave functions as +trial wave functions of QMC calculations for example.

    +

    The PT2 program reads the wave function of the EZFIO database +and computes the energy and the PT2 contribution.

    +
    +
    +

    State-averaging

    +
    +
    +

    Extrapolated FCI energy

    +

    An estimate of the FCI energy is computed by extrapolating

    +
    +\[E=E_\text{FCI} - \alpha\, E_\text{PT2}\]
    +

    This extrapolation is done for all the requested states, and excitation +energies are printed as energy differences between the extrapolated +energies of the excited states and the extrapolated energy of the ground +state.

    +

    The extrapolations are given considering the 2 last points, the 3 last points, …, +the 7 last points. The extrapolated value should be chosen such that the extrpolated +value is stable with the number of points.

    +
    +
    +

    Providers

    +
    +
    +initialize_pt2_e0_denominator
    +

    File : cipsi/energy.irp.f

    +
    logical :: initialize_pt2_e0_denominator
    +
    +
    +

    If true, initialize pt2_E0_denominator

    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +nthreads_pt2
    +

    File : cipsi/environment.irp.f

    +
    integer :: nthreads_pt2
    +
    +
    +

    Number of threads for Davidson

    +

    Needs:

    +
    + +
      +
    +
    +
    + +
    +
    +pt2_collector:()
    +
    +

    File : cipsi/pt2_stoch_routines.irp.f

    +
    subroutine pt2_collector(zmq_socket_pull, E, relative_error, pt2, error,  &
    +
    +
    +
    +

    variance, norm, b, N_)

    +
    +

    Needs:

    +
    + + +
    +

    Called by:

    +
      +
    • zmq_pt2()
    • +
    +
      +
    +
      +
    +
    +

    Calls:

    +
      +
    • add_to_selection_buffer()
    • +
    • check_mem()
    • +
    • create_selection_buffer()
    • +
    +
      +
    • delete_selection_buffer()
    • +
    • end_zmq_to_qp_run_socket()
    • +
    • pull_pt2_results()
    • +
    +
      +
    • sleep()
    • +
    • sort_selection_buffer()
    • +
    • wall_time()
    • +
    +
    +
    +
    + +
    +
    +pt2_cw
    +

    File : cipsi/pt2_stoch_routines.irp.f

    +
    double precision, allocatable   :: pt2_w        (N_det_generators)
    +double precision, allocatable   :: pt2_cw       (0:N_det_generators)
    +double precision        :: pt2_w_t
    +double precision        :: pt2_u_0
    +integer, allocatable    :: pt2_n_0      (pt2_N_teeth+1)
    +
    +
    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +pt2_e0_denominator
    +

    File : cipsi/energy.irp.f

    +
    double precision, allocatable   :: pt2_e0_denominator   (N_states)
    +
    +
    +

    E0 in the denominator of the PT2

    +

    Needs:

    +
    + + +
    +
    + +
    +
    +pt2_f
    +

    File : cipsi/pt2_stoch_routines.irp.f

    +
    integer, allocatable    :: pt2_f        (N_det_generators)
    +integer :: pt2_n_tasks_max
    +
    +
    +

    Needs:

    +
    + + +
    +
    + +
    +
    +pt2_j
    +

    File : cipsi/pt2_stoch_routines.irp.f

    +
    integer, allocatable    :: pt2_j        (N_det_generators)
    +integer, allocatable    :: pt2_r        (N_det_generators)
    +
    +
    +

    Needs:

    +
    + + +
    +
    + +
    +
    +pt2_mindetinfirstteeth
    +

    File : cipsi/pt2_stoch_routines.irp.f

    +
    integer :: pt2_n_teeth
    +integer :: pt2_mindetinfirstteeth
    +
    +
    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    + +
      +
    +
    +
    + +
    +
    +pt2_n_0
    +

    File : cipsi/pt2_stoch_routines.irp.f

    +
    double precision, allocatable   :: pt2_w        (N_det_generators)
    +double precision, allocatable   :: pt2_cw       (0:N_det_generators)
    +double precision        :: pt2_w_t
    +double precision        :: pt2_u_0
    +integer, allocatable    :: pt2_n_0      (pt2_N_teeth+1)
    +
    +
    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +pt2_n_tasks
    +

    File : cipsi/pt2_stoch_routines.irp.f

    +
    integer :: pt2_n_tasks
    +
    +
    +

    Number of parallel tasks for the Monte Carlo

    +

    Needs:

    +
    +
      +
    +
      +
    +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +pt2_n_tasks_max
    +

    File : cipsi/pt2_stoch_routines.irp.f

    +
    integer, allocatable    :: pt2_f        (N_det_generators)
    +integer :: pt2_n_tasks_max
    +
    +
    +

    Needs:

    +
    + + +
    +
    + +
    +
    +pt2_n_teeth
    +

    File : cipsi/pt2_stoch_routines.irp.f

    +
    integer :: pt2_n_teeth
    +integer :: pt2_mindetinfirstteeth
    +
    +
    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    + +
      +
    +
    +
    + +
    +
    +pt2_r
    +

    File : cipsi/pt2_stoch_routines.irp.f

    +
    integer, allocatable    :: pt2_j        (N_det_generators)
    +integer, allocatable    :: pt2_r        (N_det_generators)
    +
    +
    +

    Needs:

    +
    + + +
    +
    + +
    +
    +pt2_stoch_istate
    +

    File : cipsi/pt2_stoch_routines.irp.f

    +
    integer :: pt2_stoch_istate
    +
    +
    +

    State for stochatsic PT2

    +

    Needed by:

    +
    + +
      +
    +
    +
    + +
    +
    +pt2_u
    +

    File : cipsi/pt2_stoch_routines.irp.f

    +
    double precision, allocatable   :: pt2_u        (N_det_generators)
    +
    +
    +

    Needs:

    +
    +
      +
    +
      +
    +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +pt2_u_0
    +

    File : cipsi/pt2_stoch_routines.irp.f

    +
    double precision, allocatable   :: pt2_w        (N_det_generators)
    +double precision, allocatable   :: pt2_cw       (0:N_det_generators)
    +double precision        :: pt2_w_t
    +double precision        :: pt2_u_0
    +integer, allocatable    :: pt2_n_0      (pt2_N_teeth+1)
    +
    +
    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +pt2_w
    +

    File : cipsi/pt2_stoch_routines.irp.f

    +
    double precision, allocatable   :: pt2_w        (N_det_generators)
    +double precision, allocatable   :: pt2_cw       (0:N_det_generators)
    +double precision        :: pt2_w_t
    +double precision        :: pt2_u_0
    +integer, allocatable    :: pt2_n_0      (pt2_N_teeth+1)
    +
    +
    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +pt2_w_t
    +

    File : cipsi/pt2_stoch_routines.irp.f

    +
    double precision, allocatable   :: pt2_w        (N_det_generators)
    +double precision, allocatable   :: pt2_cw       (0:N_det_generators)
    +double precision        :: pt2_w_t
    +double precision        :: pt2_u_0
    +integer, allocatable    :: pt2_n_0      (pt2_N_teeth+1)
    +
    +
    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +selection_weight
    +

    File : cipsi/selection.irp.f

    +
    double precision, allocatable   :: selection_weight     (N_states)
    +
    +
    +

    Weights used in the selection criterion

    +

    Needs:

    +
    +
      +
    • n_states
    • +
    +
      +
    +
    +
    + +
    +
    +

    Subroutines / functions

    +
    +
    +add_to_selection_buffer:()
    +

    File : cipsi/selection_buffer.irp.f

    +
    subroutine add_to_selection_buffer(b, det, val)
    +
    +
    +

    Needs:

    +
    +
      +
    +
      +
    +
    +

    Called by:

    +
      +
    • fill_buffer_double()
    • +
    +
      +
    • pt2_collector()
    • +
    +
      +
    • selection_collector()
    • +
    +
    +

    Calls:

    +
      +
    • sort_selection_buffer()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +bitstring_to_list_in_selection:()
    +

    File : cipsi/selection.irp.f

    +
    subroutine bitstring_to_list_in_selection( string, list, n_elements, Nint)
    +
    +
    +

    Gives the inidices(+1) of the bits set to 1 in the bit string

    +

    Called by:

    +
      +
    • splash_pq()
    • +
    +
      +
    • spot_isinwf()
    • +
    +
      +
    +
    +
    + +
    +
    +create_selection_buffer:()
    +

    File : cipsi/selection_buffer.irp.f

    +
    subroutine create_selection_buffer(N, siz_, res)
    +
    +
    +

    Needs:

    +
    +
      +
    +
      +
    +
    +

    Called by:

    +
      +
    • pt2_collector()
    • +
    • run_pt2_slave()
    • +
    +
      +
    • run_selection_slave()
    • +
    • selection_collector()
    • +
    +
      +
    • zmq_pt2()
    • +
    • zmq_selection()
    • +
    +
    +

    Calls:

    +
      +
    • check_mem()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +delete_selection_buffer:()
    +

    File : cipsi/selection_buffer.irp.f

    +
    subroutine delete_selection_buffer(b)
    +
    +
    +

    Called by:

    +
      +
    • pt2_collector()
    • +
    • run_pt2_slave()
    • +
    +
      +
    • run_selection_slave()
    • +
    • selection_collector()
    • +
    +
      +
    • zmq_pt2()
    • +
    • zmq_selection()
    • +
    +
    +
    + +
    +
    +fill_buffer_double:()
    +

    File : cipsi/selection.irp.f

    +
    subroutine fill_buffer_double(i_generator, sp, h1, h2, bannedOrb, banned, fock_diag_tmp, E0, pt2, variance, norm, mat, buf)
    +
    +
    +

    Needs:

    +
    + + +
    +

    Called by:

    +
      +
    • select_singles_and_doubles()
    • +
    +
      +
    +
      +
    +
    +

    Calls:

    +
      +
    • add_to_selection_buffer()
    • +
    +
      +
    • apply_holes()
    • +
    +
      +
    • apply_particles()
    • +
    +
    +
    + +
    +
    +get_d0:()
    +

    File : cipsi/selection.irp.f

    +
    subroutine get_d0(gen, phasemask, bannedOrb, banned, mat, mask, h, p, sp, coefs)
    +
    +
    +

    Needs:

    +
    + + +
    +

    Called by:

    +
      +
    • splash_pq()
    • +
    +
      +
    +
      +
    +
    +

    Calls:

    +
      +
    • apply_particles()
    • +
    +
      +
    • get_mo_two_e_integrals()
    • +
    +
      +
    • i_h_j()
    • +
    +
    +
    + +
    +
    +get_d1:()
    +

    File : cipsi/selection.irp.f

    +
    subroutine get_d1(gen, phasemask, bannedOrb, banned, mat, mask, h, p, sp, coefs)
    +
    +
    +

    Needs:

    +
    + + +
    +

    Called by:

    +
      +
    • splash_pq()
    • +
    +
      +
    +
      +
    +
    +

    Calls:

    +
      +
    • apply_particles()
    • +
    +
      +
    • get_mo_two_e_integrals()
    • +
    +
      +
    • i_h_j()
    • +
    +
    +
    + +
    +
    +get_d2:()
    +

    File : cipsi/selection.irp.f

    +
    subroutine get_d2(gen, phasemask, bannedOrb, banned, mat, mask, h, p, sp, coefs)
    +
    +
    +

    Needs:

    +
      +
    • n_states
    • +
    +
    + +
    +

    Called by:

    +
      +
    • splash_pq()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +get_mask_phase:()
    +

    File : cipsi/selection.irp.f

    +
    subroutine get_mask_phase(det1, pm, Nint)
    +
    +
    +

    Called by:

    +
      +
    • splash_pq()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +get_phase_bi:()
    +

    File : cipsi/selection.irp.f

    +
    double precision function get_phase_bi(phasemask, s1, s2, h1, p1, h2, p2, Nint)
    +
    +
    +
    + +
    +
    +make_selection_buffer_s2:()
    +

    File : cipsi/selection_buffer.irp.f

    +
    subroutine make_selection_buffer_s2(b)
    +
    +
    +

    Needs:

    +
      +
    • elec_alpha_num
    • +
    +
    +
      +
    +
    +

    Called by:

    +
      +
    • zmq_pt2()
    • +
    +
      +
    • zmq_selection()
    • +
    +
      +
    +
    +

    Calls:

    +
      +
    • check_mem()
    • +
    • dsort()
    • +
    +
      +
    • i8sort()
    • +
    • occ_pattern_to_dets()
    • +
    +
      +
    • occ_pattern_to_dets_size()
    • +
    +
    +
    + +
    +
    +merge_selection_buffers:()
    +

    File : cipsi/selection_buffer.irp.f

    +
    subroutine merge_selection_buffers(b1, b2)
    +
    +
    +

    Merges the selection buffers b1 and b2 into b2

    +

    Needs:

    +
    +
      +
    +
      +
    +
    +

    Called by:

    +
      +
    • run_pt2_slave()
    • +
    +
      +
    • run_selection_slave()
    • +
    +
      +
    +
    +

    Calls:

    +
      +
    • check_mem()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +past_d1:()
    +

    File : cipsi/selection.irp.f

    +
    subroutine past_d1(bannedOrb, p)
    +
    +
    +

    Needs:

    +
    +
      +
    +
      +
    +
    +

    Called by:

    +
      +
    • splash_pq()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +past_d2:()
    +

    File : cipsi/selection.irp.f

    +
    subroutine past_d2(banned, p, sp)
    +
    +
    +

    Needs:

    +
    +
      +
    +
      +
    +
    +

    Called by:

    +
      +
    • splash_pq()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +provide_everything:()
    +

    File : cipsi/slave_cipsi.irp.f

    +
    subroutine provide_everything
    +
    +
    +

    Needs:

    +
    + + +
    +

    Called by:

    +
      +
    • run_slave_cipsi()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +pt2_find_sample:()
    +

    File : cipsi/pt2_stoch_routines.irp.f

    +
    integer function pt2_find_sample(v, w)
    +
    +
    +

    Needs:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +pt2_find_sample_lr:()
    +

    File : cipsi/pt2_stoch_routines.irp.f

    +
    integer function pt2_find_sample_lr(v, w, l_in, r_in)
    +
    +
    +

    Needs:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +pt2_slave_inproc:()
    +

    File : cipsi/pt2_stoch_routines.irp.f

    +
    subroutine pt2_slave_inproc(i)
    +
    +
    +

    Needs:

    +
    +
      +
    +
      +
    +
    +

    Called by:

    +
      +
    • zmq_pt2()
    • +
    +
      +
    +
      +
    +
    +

    Calls:

    +
      +
    • run_pt2_slave()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +pull_pt2_results:()
    +

    File : cipsi/run_pt2_slave.irp.f

    +
    subroutine pull_pt2_results(zmq_socket_pull, index, pt2, variance, norm, task_id, n_tasks, b)
    +
    +
    +

    Needs:

    +
      +
    • n_states
    • +
    +
    +
      +
    +
    +

    Called by:

    +
      +
    • pt2_collector()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +pull_selection_results:()
    +

    File : cipsi/run_selection_slave.irp.f

    +
    subroutine pull_selection_results(zmq_socket_pull, pt2, variance, norm, val, det, N, task_id, ntask)
    +
    +
    +

    Needs:

    +
      +
    • n_states
    • +
    +
    +
      +
    +
    +

    Called by:

    +
      +
    • selection_collector()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +push_pt2_results:()
    +

    File : cipsi/run_pt2_slave.irp.f

    +
    subroutine push_pt2_results(zmq_socket_push, index, pt2, variance, norm, b, task_id, n_tasks)
    +
    +
    +

    Needs:

    +
      +
    • n_states
    • +
    +
    +
      +
    +
    +

    Called by:

    +
      +
    • run_pt2_slave()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +push_selection_results:()
    +

    File : cipsi/run_selection_slave.irp.f

    +
    subroutine push_selection_results(zmq_socket_push, pt2, variance, norm, b, task_id, ntask)
    +
    +
    +

    Needs:

    +
      +
    • n_states
    • +
    +
    +
      +
    +
    +

    Called by:

    +
      +
    • run_selection_slave()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +remove_duplicates_in_selection_buffer:()
    +

    File : cipsi/selection_buffer.irp.f

    +
    subroutine remove_duplicates_in_selection_buffer(b)
    +
    +
    +

    Needs:

    +
    +
      +
    +
      +
    +
    +

    Called by:

    +
      +
    • zmq_pt2()
    • +
    +
      +
    +
      +
    +
    +

    Calls:

    +
      +
    • check_mem()
    • +
    +
      +
    • i8sort()
    • +
    +
      +
    +
    +
    + +
    +
    +run_cipsi:()
    +

    File : cipsi/cipsi.irp.f

    +
    subroutine run_cipsi
    +
    +
    +

    Selected Full Configuration Interaction with deterministic selection and +stochastic PT2.

    +

    Needs:

    +
    + + +
    +

    Called by:

    +
      +
    • fci()
    • +
    +
      +
    +
      +
    +
    +

    Calls:

    +
      +
    • check_mem()
    • +
    • diagonalize_ci()
    • +
    • ezfio_get_hartree_fock_energy()
    • +
    • ezfio_has_hartree_fock_energy()
    • +
    • make_s2_eigenfunction()
    • +
    +
      +
    • print_extrapolated_energy()
    • +
    • print_summary()
    • +
    • save_energy()
    • +
    • save_iterations()
    • +
    +
      +
    • save_wavefunction()
    • +
    • write_double()
    • +
    • zmq_pt2()
    • +
    • zmq_selection()
    • +
    +
    +

    Touches:

    +
    + + +
    +
    + +
    +
    +run_pt2_slave:()
    +

    File : cipsi/run_pt2_slave.irp.f

    +
    subroutine run_pt2_slave(thread,iproc,energy)
    +
    +
    +

    Needs:

    +
    + + +
    +

    Called by:

    +
      +
    • pt2_slave_inproc()
    • +
    +
      +
    • run_slave_main()
    • +
    +
      +
    +
    +

    Calls:

    +
      +
    • check_mem()
    • +
    • create_selection_buffer()
    • +
    • delete_selection_buffer()
    • +
    • end_zmq_push_socket()
    • +
    +
      +
    • end_zmq_to_qp_run_socket()
    • +
    • merge_selection_buffers()
    • +
    • push_pt2_results()
    • +
    • select_connected()
    • +
    +
      +
    • sleep()
    • +
    • sort_selection_buffer()
    • +
    • wall_time()
    • +
    +
    +
    + +
    +
    +run_selection_slave:()
    +

    File : cipsi/run_selection_slave.irp.f

    +
    subroutine run_selection_slave(thread,iproc,energy)
    +
    +
    +

    Needs:

    +
    + + +
    +

    Called by:

    +
      +
    • run_slave_main()
    • +
    +
      +
    • selection_slave_inproc()
    • +
    +
      +
    +
    +

    Calls:

    +
      +
    • create_selection_buffer()
    • +
    • delete_selection_buffer()
    • +
    • end_zmq_push_socket()
    • +
    +
      +
    • end_zmq_to_qp_run_socket()
    • +
    • merge_selection_buffers()
    • +
    • push_selection_results()
    • +
    +
      +
    • select_connected()
    • +
    • sleep()
    • +
    • sort_selection_buffer()
    • +
    +
    +
    + +
    +
    +run_slave_cipsi:()
    +

    File : cipsi/slave_cipsi.irp.f

    +
    subroutine run_slave_cipsi
    +
    +
    +

    Helper program for distributed parallelism

    +

    Needs:

    +
      +
    • read_wf
    • +
    +
      +
    • distributed_davidson
    • +
    +
      +
    +
    +

    Called by:

    +
      +
    • fci()
    • +
    +
      +
    • pt2()
    • +
    +
      +
    +
    +

    Calls:

    +
      +
    • omp_set_nested()
    • +
    • provide_everything()
    • +
    +
      +
    • run_slave_main()
    • +
    +
      +
    • switch_qp_run_to_master()
    • +
    +
    +

    Touches:

    +
    + + +
    +
    + +
    +
    +run_slave_main:()
    +

    File : cipsi/slave_cipsi.irp.f

    +
    subroutine run_slave_main
    +
    +
    +

    Needs:

    +
    + + +
    +

    Called by:

    +
      +
    • run_slave_cipsi()
    • +
    +
      +
    +
      +
    +
    +

    Calls:

    +
      +
    • davidson_slave_tcp()
    • +
    • mpi_print()
    • +
    • omp_set_nested()
    • +
    +
      +
    • run_pt2_slave()
    • +
    • run_selection_slave()
    • +
    • sleep()
    • +
    +
      +
    • wait_for_states()
    • +
    • wall_time()
    • +
    • write_double()
    • +
    +
    +

    Touches:

    +
    + +
      +
    • threshold_generators
    • +
    +
    +
    + +
    +
    +run_stochastic_cipsi:()
    +

    File : cipsi/stochastic_cipsi.irp.f

    +
    subroutine run_stochastic_cipsi
    +
    +
    +

    Selected Full Configuration Interaction with Stochastic selection and PT2.

    +

    Needs:

    +
    + + +
    +

    Called by:

    +
      +
    • fci()
    • +
    +
      +
    +
      +
    +
    +

    Calls:

    +
      +
    • check_mem()
    • +
    • copy_h_apply_buffer_to_wf()
    • +
    • diagonalize_ci()
    • +
    • ezfio_get_hartree_fock_energy()
    • +
    • ezfio_has_hartree_fock_energy()
    • +
    +
      +
    • make_s2_eigenfunction()
    • +
    • print_extrapolated_energy()
    • +
    • print_summary()
    • +
    • save_energy()
    • +
    +
      +
    • save_iterations()
    • +
    • save_wavefunction()
    • +
    • write_double()
    • +
    • zmq_pt2()
    • +
    +
    +

    Touches:

    +
    + + +
    +
    + +
    +
    +select_connected:()
    +

    File : cipsi/selection.irp.f

    +
    subroutine select_connected(i_generator,E0,pt2,variance,norm,b,subset,csubset)
    +
    +
    +

    Needs:

    +
    + + +
    +

    Called by:

    +
      +
    • run_pt2_slave()
    • +
    +
      +
    • run_selection_slave()
    • +
    +
      +
    +
    +

    Calls:

    +
      +
    • build_fock_tmp()
    • +
    +
      +
    • select_singles_and_doubles()
    • +
    +
      +
    +
    +
    + +
    +
    +select_singles_and_doubles:()
    +

    File : cipsi/selection.irp.f

    +
    subroutine select_singles_and_doubles(i_generator,hole_mask,particle_mask,fock_diag_tmp,E0,pt2,variance,norm,buf,subset,csubset)
    +
    +
    +

    WARNING /!: It is assumed that the generators and selectors are psi_det_sorted

    +

    Needs:

    +
    + + +
    +

    Called by:

    +
      +
    • select_connected()
    • +
    +
      +
    +
      +
    +
    +

    Calls:

    +
      +
    • apply_hole()
    • +
    • bitstring_to_list_ab()
    • +
    • check_mem()
    • +
    +
      +
    • fill_buffer_double()
    • +
    • get_excitation_degree_spin()
    • +
    • isort()
    • +
    +
      +
    • splash_pq()
    • +
    • spot_isinwf()
    • +
    +
    +
    + +
    +
    +selection_collector:()
    +

    File : cipsi/zmq_selection.irp.f

    +
    subroutine selection_collector(zmq_socket_pull, b, N, pt2, variance, norm)
    +
    +
    +

    Needs:

    +
    +
      +
    • n_states
    • +
    +
      +
    +
    +

    Called by:

    +
      +
    • zmq_selection()
    • +
    +
      +
    +
      +
    +
    +

    Calls:

    +
      +
    • add_to_selection_buffer()
    • +
    • check_mem()
    • +
    • create_selection_buffer()
    • +
    +
      +
    • delete_selection_buffer()
    • +
    • end_zmq_to_qp_run_socket()
    • +
    +
      +
    • pull_selection_results()
    • +
    • sort_selection_buffer()
    • +
    +
    +
    + +
    +
    +selection_slave_inproc:()
    +

    File : cipsi/zmq_selection.irp.f

    +
    subroutine selection_slave_inproc(i)
    +
    +
    +

    Needs:

    +
    +
      +
    +
      +
    +
    +

    Called by:

    +
      +
    • zmq_selection()
    • +
    +
      +
    +
      +
    +
    +

    Calls:

    +
      +
    • run_selection_slave()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +sort_selection_buffer:()
    +

    File : cipsi/selection_buffer.irp.f

    +
    subroutine sort_selection_buffer(b)
    +
    +
    +

    Needs:

    +
    +
      +
    +
      +
    +
    +

    Called by:

    +
      +
    • add_to_selection_buffer()
    • +
    • pt2_collector()
    • +
    +
      +
    • run_pt2_slave()
    • +
    • run_selection_slave()
    • +
    +
      +
    • selection_collector()
    • +
    +
    +

    Calls:

    +
      +
    • check_mem()
    • +
    +
      +
    • dsort()
    • +
    +
      +
    +
    +
    + +
    +
    +splash_pq:()
    +

    File : cipsi/selection.irp.f

    +
    subroutine splash_pq(mask, sp, det, i_gen, N_sel, bannedOrb, banned, mat, interesting)
    +
    +
    +

    Needs:

    +
    + + +
    +

    Called by:

    +
      +
    • select_singles_and_doubles()
    • +
    +
      +
    +
      +
    +
    +

    Calls:

    +
      +
    • bitstring_to_list_in_selection()
    • +
    • get_d0()
    • +
    • get_d1()
    • +
    +
      +
    • get_d2()
    • +
    • get_mask_phase()
    • +
    +
      +
    • past_d1()
    • +
    • past_d2()
    • +
    +
    +
    + +
    +
    +spot_isinwf:()
    +

    File : cipsi/selection.irp.f

    +
    subroutine spot_isinwf(mask, det, i_gen, N, banned, fullMatch, interesting)
    +
    +
    +

    Needs:

    +
    + +
      +
    +
    +

    Called by:

    +
      +
    • select_singles_and_doubles()
    • +
    +
      +
    +
      +
    +
    +

    Calls:

    +
      +
    • bitstring_to_list_in_selection()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +testteethbuilding:()
    +

    File : cipsi/pt2_stoch_routines.irp.f

    +
    logical function testTeethBuilding(minF, N)
    +
    +
    +

    Needs:

    +
    + + +
    +

    Calls:

    +
      +
    • check_mem()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +zmq_pt2:()
    +

    File : cipsi/pt2_stoch_routines.irp.f

    +
    subroutine ZMQ_pt2(E, pt2,relative_error, error, variance, norm, N_in)
    +
    +
    +

    Needs:

    +
    + + +
    +

    Called by:

    +
      +
    • run_cipsi()
    • +
    +
      +
    • run_stochastic_cipsi()
    • +
    +
      +
    +
    +

    Calls:

    +
      +
    • check_mem()
    • +
    • create_selection_buffer()
    • +
    • delete_selection_buffer()
    • +
    • end_parallel_job()
    • +
    • fill_h_apply_buffer_no_selection()
    • +
    +
      +
    • make_selection_buffer_s2()
    • +
    • new_parallel_job()
    • +
    • omp_set_nested()
    • +
    • pt2_collector()
    • +
    • pt2_slave_inproc()
    • +
    +
      +
    • remove_duplicates_in_selection_buffer()
    • +
    • resident_memory()
    • +
    • write_double()
    • +
    • write_int()
    • +
    • zmq_selection()
    • +
    +
    +

    Touches:

    +
    + + +
    +
    + +
    +
    +zmq_selection:()
    +

    File : cipsi/zmq_selection.irp.f

    +
    subroutine ZMQ_selection(N_in, pt2, variance, norm)
    +
    +
    +

    Needs:

    +
    + + +
    +

    Called by:

    +
      +
    • run_cipsi()
    • +
    +
      +
    • zmq_pt2()
    • +
    +
      +
    +
    +

    Calls:

    +
      +
    • copy_h_apply_buffer_to_wf()
    • +
    • create_selection_buffer()
    • +
    • delete_selection_buffer()
    • +
    • end_parallel_job()
    • +
    +
      +
    • fill_h_apply_buffer_no_selection()
    • +
    • make_selection_buffer_s2()
    • +
    • new_parallel_job()
    • +
    • save_wavefunction()
    • +
    +
      +
    • selection_collector()
    • +
    • selection_slave_inproc()
    • +
    • write_double()
    • +
    +
    +

    Touches:

    +
    + + +
    +
    + +
    +
    + + +
    + +
    + + +
    +
    + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/doc/modules/cis.html b/doc/modules/cis.html new file mode 100644 index 00000000..eb2996a1 --- /dev/null +++ b/doc/modules/cis.html @@ -0,0 +1,580 @@ + + + + + + + + + + + cis — Quantum Package 2.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + +
    + + + + + +
    + +
    + + + + + + + + + + + + + + + + + +
    + + + + +
    +
    +
    +
    + +
    +

    cis

    +

    This module contains a CIS program.

    +
    +

    The user point of view

    +

    The 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 scf() program gave the lowest SCF solution. In combination with save_natorb() it can produce new MOs in order to reperform an scf() optimization.
    • +
    • Excited states calculations: generate guess for all the determinants n_states wave functions, that will be used by the fci() program.
    • +
    +

    The main keywords/options to be used are:

    + +
    +
    +

    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

    +
    +
    +energy
    +

    Variational CIS energy

    +
    + +
    +
    +

    Programs

    +
    +
    +
    +
    +
    +

    Subroutines / functions

    +
    +
    +h_apply_cis:()
    +

    File : h_apply.irp.f_shell_8

    +
    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:

    +
    + + +
    +

    Calls:

    +
      +
    • build_fock_tmp()
    • +
    • copy_h_apply_buffer_to_wf()
    • +
    • dsort()
    • +
    +
      +
    • h_apply_cis_diexc()
    • +
    • h_apply_cis_monoexc()
    • +
    +
      +
    • make_s2_eigenfunction()
    • +
    • wall_time()
    • +
    +
    +

    Touches:

    +
    + + +
    +
    + +
    +
    +h_apply_cis_diexc:()
    +

    File : h_apply.irp.f_shell_8

    +
    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:

    +
    + + +
    +

    Called by:

    +
      +
    • h_apply_cis()
    • +
    +
      +
    +
      +
    +
    +

    Calls:

    +
      +
    • h_apply_cis_diexcp()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +h_apply_cis_diexcorg:()
    +

    File : h_apply.irp.f_shell_8

    +
    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:

    +
    +
      +
    • elec_alpha_num
    • +
    +
    +
    +

    Called by:

    +
      +
    • h_apply_cis_diexcp()
    • +
    +
      +
    +
      +
    +
    +

    Calls:

    +
      +
    • bitstring_to_list_ab()
    • +
    +
      +
    • fill_h_apply_buffer_no_selection()
    • +
    +
      +
    +
    +
    + +
    +
    +h_apply_cis_diexcp:()
    +

    File : h_apply.irp.f_shell_8

    +
    subroutine H_apply_cis_diexcP(key_in, fs1, fh1, particl_1, fs2, fh2, particl_2, fock_diag_tmp, i_generator, iproc_in  )
    +
    +
    +

    Needs:

    +
    + + +
    +

    Called by:

    +
      +
    • h_apply_cis_diexc()
    • +
    +
      +
    +
      +
    +
    +

    Calls:

    +
      +
    • h_apply_cis_diexcorg()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +h_apply_cis_monoexc:()
    +

    File : h_apply.irp.f_shell_8

    +
    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:

    +
    +
      +
    • elec_alpha_num
    • +
    +
    +
    +

    Called by:

    +
      +
    • h_apply_cis()
    • +
    +
      +
    +
      +
    +
    +

    Calls:

    +
      +
    • bitstring_to_list_ab()
    • +
    +
      +
    • fill_h_apply_buffer_no_selection()
    • +
    +
      +
    +
    +
    + +
    +
    + + +
    + +
    + + +
    +
    + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/doc/modules/cisd.html b/doc/modules/cisd.html new file mode 100644 index 00000000..dc2a62bb --- /dev/null +++ b/doc/modules/cisd.html @@ -0,0 +1,580 @@ + + + + + + + + + + + cisd — Quantum Package 2.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + +
    + + + + + +
    + +
    + + + + + + + + + + + + + + + + + +
    + + + + +
    +
    +
    +
    + +
    +

    cisd

    +

    This module contains a CI of single and double excitations.

    +
    +

    The user point of view

    +

    The 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 scf() program gave the lowest SCF solution. In combination with save_natorb() it can produce new MOs in order to reperform an scf() optimization.
    • +
    • Excited states calculations: generate guess for all the determinants n_states wave functions, that will be used by the fci() program.
    • +
    +

    The main keywords/options to be used are:

    + +
    +
    +

    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

    +
    +
    +energy
    +

    Variational CISD energy

    +
    + +
    +
    +

    Programs

    +
    +
    +
    +
    +
    +

    Subroutines / functions

    +
    +
    +h_apply_cisd:()
    +

    File : h_apply.irp.f_shell_8

    +
    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:

    +
    + + +
    +

    Calls:

    +
      +
    • build_fock_tmp()
    • +
    • copy_h_apply_buffer_to_wf()
    • +
    • dsort()
    • +
    +
      +
    • h_apply_cisd_diexc()
    • +
    • h_apply_cisd_monoexc()
    • +
    +
      +
    • make_s2_eigenfunction()
    • +
    • wall_time()
    • +
    +
    +

    Touches:

    +
    + + +
    +
    + +
    +
    +h_apply_cisd_diexc:()
    +

    File : h_apply.irp.f_shell_8

    +
    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:

    +
    + + +
    +

    Called by:

    +
      +
    • h_apply_cisd()
    • +
    +
      +
    +
      +
    +
    +

    Calls:

    +
      +
    • h_apply_cisd_diexcp()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +h_apply_cisd_diexcorg:()
    +

    File : h_apply.irp.f_shell_8

    +
    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:

    +
    +
      +
    • elec_alpha_num
    • +
    +
    +
    +

    Called by:

    +
      +
    • h_apply_cisd_diexcp()
    • +
    +
      +
    +
      +
    +
    +

    Calls:

    +
      +
    • bitstring_to_list_ab()
    • +
    +
      +
    • fill_h_apply_buffer_no_selection()
    • +
    +
      +
    +
    +
    + +
    +
    +h_apply_cisd_diexcp:()
    +

    File : h_apply.irp.f_shell_8

    +
    subroutine H_apply_cisd_diexcP(key_in, fs1, fh1, particl_1, fs2, fh2, particl_2, fock_diag_tmp, i_generator, iproc_in  )
    +
    +
    +

    Needs:

    +
    + + +
    +

    Called by:

    +
      +
    • h_apply_cisd_diexc()
    • +
    +
      +
    +
      +
    +
    +

    Calls:

    +
      +
    • h_apply_cisd_diexcorg()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +h_apply_cisd_monoexc:()
    +

    File : h_apply.irp.f_shell_8

    +
    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:

    +
    +
      +
    • elec_alpha_num
    • +
    +
    +
    +

    Called by:

    +
      +
    • h_apply_cisd()
    • +
    +
      +
    +
      +
    +
    +

    Calls:

    +
      +
    • bitstring_to_list_ab()
    • +
    +
      +
    • fill_h_apply_buffer_no_selection()
    • +
    +
      +
    +
    +
    + +
    +
    + + +
    + +
    + + +
    +
    + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/doc/modules/davidson.html b/doc/modules/davidson.html new file mode 100644 index 00000000..3880fcdc --- /dev/null +++ b/doc/modules/davidson.html @@ -0,0 +1,2177 @@ + + + + + + + + + + + davidson — Quantum Package 2.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + +
    + + + + + +
    + +
    + + + + + + + + + + + + + + + + + +
    + + + + +
    +
    +
    +
    + +
    +

    davidson

    +

    Abstract module for Davidson’s diagonalization. +It contains everything required for the Davidson algorithm, dressed or not. If +a dressing is used, the dressing column should be defined and the +davidson_dressed module should be used. If no dressing is required, +the davidson module should be used, and it has a default zero dressing vector.

    +

    The important providers for that module are:

    +

    # psi_energy which is the expectation value over the wave function (psi_det, psi_coef) of the Hamiltonian, dressed or not. It uses the general subroutine u_0_H_u_0. +# psi_energy_two_e which is the expectation value over the wave function (psi_det, psi_coef) of the standard two-electrons coulomb operator. It uses the general routine u_0_H_u_0_two_e.

    +
    +

    EZFIO parameters

    +
    +
    +threshold_davidson
    +

    Thresholds of Davidson’s algorithm

    +

    Default: 1.e-10

    +
    + +
    +
    +n_states_diag
    +

    Number of states to consider during the Davdison diagonalization

    +

    Default: 4

    +
    + +
    +
    +davidson_sze_max
    +

    Number of micro-iterations before re-contracting

    +

    Default: 8

    +
    + +
    +
    +state_following
    +

    If true, the states are re-ordered to match the input states

    +

    Default: False

    +
    + +
    +
    +disk_based_davidson
    +

    If true, a memory-mapped file may be used to store the W and S2 vectors if not enough RAM is available

    +

    Default: True

    +
    + +
    +
    +distributed_davidson
    +

    If true, use the distributed algorithm

    +

    Default: True

    +
    + +
    +
    +only_expected_s2
    +

    If true, use filter out all vectors with bad \(\widehat{S^2}\) values

    +

    Default: True

    +
    + +
    +
    +

    Providers

    +
    +
    +ci_eigenvectors
    +

    File : davidson/diagonalize_ci.irp.f

    +
    double precision, allocatable   :: ci_electronic_energy (N_states_diag)
    +double precision, allocatable   :: ci_eigenvectors      (N_det,N_states_diag)
    +double precision, allocatable   :: ci_s2        (N_states_diag)
    +
    +
    +

    Eigenvectors/values of the CI matrix

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +ci_electronic_energy
    +

    File : davidson/diagonalize_ci.irp.f

    +
    double precision, allocatable   :: ci_electronic_energy (N_states_diag)
    +double precision, allocatable   :: ci_eigenvectors      (N_det,N_states_diag)
    +double precision, allocatable   :: ci_s2        (N_states_diag)
    +
    +
    +

    Eigenvectors/values of the CI matrix

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +ci_energy
    +

    File : davidson/diagonalize_ci.irp.f

    +
    double precision, allocatable   :: ci_energy    (N_states_diag)
    +
    +
    +

    n_states lowest eigenvalues of the CI matrix

    +

    Needs:

    +
    + + +
    +
    + +
    +
    +ci_s2
    +

    File : davidson/diagonalize_ci.irp.f

    +
    double precision, allocatable   :: ci_electronic_energy (N_states_diag)
    +double precision, allocatable   :: ci_eigenvectors      (N_det,N_states_diag)
    +double precision, allocatable   :: ci_s2        (N_states_diag)
    +
    +
    +

    Eigenvectors/values of the CI matrix

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +davidson_criterion
    +

    File : davidson/parameters.irp.f

    +
    character(64)   :: davidson_criterion
    +
    +
    +

    Can be : [ energy | residual | both | wall_time | cpu_time | iterations ]

    +
    + +
    +
    +dressed_column_idx
    +

    File : davidson/diagonalization_hs2_dressed.irp.f

    +
    integer, allocatable    :: dressed_column_idx   (N_states)
    +
    +
    +

    Index of the dressed columns

    +

    Needs:

    +
    +
      +
    • n_states
    • +
    +
    +
    +
    + +
    +
    +n_states_diag
    +

    File : davidson/input.irp.f

    +
    integer :: n_states_diag
    +
    +
    +

    Number of states to consider during the Davdison diagonalization

    +

    Needs:

    +
    +
      +
    • n_states
    • +
    +
    +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +nthreads_davidson
    +

    File : davidson/davidson_parallel.irp.f

    +
    integer :: nthreads_davidson
    +
    +
    +

    Number of threads for Davidson

    +

    Needs:

    +
    + +
      +
    +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +psi_energy
    +

    File : davidson/u0_h_u0.irp.f

    +
    double precision, allocatable   :: psi_energy   (N_states)
    +double precision, allocatable   :: psi_s2       (N_states)
    +
    +
    +

    psi_energy(i) = \(\langle \Psi_i | H | \Psi_i \rangle\)

    +

    psi_s2(i) = \(\langle \Psi_i | S^2 | \Psi_i \rangle\)

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +psi_energy_two_e
    +

    File : davidson/u0_wee_u0.irp.f

    +
    double precision, allocatable   :: psi_energy_two_e     (N_states)
    +
    +
    +

    Energy of the current wave function

    +

    Needs:

    +
    + + +
    +
    + +
    +
    +psi_energy_with_nucl_rep
    +

    File : davidson/u0_h_u0.irp.f

    +
    double precision, allocatable   :: psi_energy_with_nucl_rep     (N_states)
    +
    +
    +

    Energy of the wave function with the nuclear repulsion energy.

    +

    Needs:

    +
      +
    • n_states
    • +
    +
    + +
    +
    + +
    +
    +psi_s2
    +

    File : davidson/u0_h_u0.irp.f

    +
    double precision, allocatable   :: psi_energy   (N_states)
    +double precision, allocatable   :: psi_s2       (N_states)
    +
    +
    +

    psi_energy(i) = \(\langle \Psi_i | H | \Psi_i \rangle\)

    +

    psi_s2(i) = \(\langle \Psi_i | S^2 | \Psi_i \rangle\)

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +

    Subroutines / functions

    +
    +
    +davidson_collector:()
    +

    File : davidson/davidson_parallel.irp.f

    +
    subroutine davidson_collector(zmq_to_qp_run_socket, zmq_socket_pull, v0, s0, sze, N_st)
    +
    +
    +

    Routine collecting the results of the workers in Davidson’s algorithm.

    +

    Needs:

    +
    +
      +
    +
      +
    +
    +

    Called by:

    +
      +
    • h_s2_u_0_nstates_zmq()
    • +
    +
      +
    +
      +
    +
    +

    Calls:

    +
      +
    • davidson_pull_results()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +davidson_converged:()
    +

    File : davidson/parameters.irp.f

    +
    subroutine davidson_converged(energy,residual,wall,iterations,cpu,N_st,converged)
    +
    +
    +

    True if the Davidson algorithm is converged

    +

    Needs:

    +
      +
    • threshold_davidson
    • +
    +
    +
      +
    +
    +

    Called by:

    +
      +
    • davidson_diag_hjj_sjj()
    • +
    +
      +
    +
      +
    +
    +

    Calls:

    +
      +
    • cpu_time()
    • +
    +
      +
    • wall_time()
    • +
    +
      +
    +
    +
    + +
    +
    +davidson_diag_hjj_sjj:()
    +

    File : davidson/diagonalization_hs2_dressed.irp.f

    +
    subroutine davidson_diag_hjj_sjj(dets_in,u_in,H_jj,s2_out,energies,dim_in,sze,N_st,N_st_diag_in,Nint,dressing_state,converged)
    +
    +
    +

    Davidson diagonalization with specific diagonal elements of the H matrix

    +

    H_jj : specific diagonal H matrix elements to diagonalize de Davidson

    +

    S2_out : Output : s^2

    +

    dets_in : bitmasks corresponding to determinants

    +
    +
    u_in : guess coefficients on the various states. Overwritten
    +
    on exit
    +
    +

    dim_in : leftmost dimension of u_in

    +

    sze : Number of determinants

    +

    N_st : Number of eigenstates

    +

    N_st_diag_in : Number of states in which H is diagonalized. Assumed > sze

    +

    Initial guess vectors are not necessarily orthonormal

    +

    Needs:

    +
    + + +
    +

    Called by:

    +
      +
    • davidson_diag_hs2()
    • +
    +
      +
    +
      +
    +
    +

    Calls:

    +
      +
    • c_f_pointer()
    • +
    • check_mem()
    • +
    • cpu_time()
    • +
    • davidson_converged()
    • +
    • dgemm()
    • +
    • dswap()
    • +
    • h_s2_u_0_nstates_openmp()
    • +
    +
      +
    • h_s2_u_0_nstates_zmq()
    • +
    • lapack_diag()
    • +
    • mmap()
    • +
    • munmap()
    • +
    • normalize()
    • +
    • ortho_qr()
    • +
    • random_number()
    • +
    +
      +
    • resident_memory()
    • +
    • sgemm()
    • +
    • wall_time()
    • +
    • write_double()
    • +
    • write_int()
    • +
    • write_time()
    • +
    +
    +

    Touches:

    +
    + +
      +
    +
    +
    + +
    +
    +davidson_diag_hs2:()
    +

    File : davidson/diagonalization_hs2_dressed.irp.f

    +
    subroutine davidson_diag_hs2(dets_in,u_in,s2_out,dim_in,energies,sze,N_st,N_st_diag,Nint,dressing_state,converged)
    +
    +
    +

    Davidson diagonalization.

    +

    dets_in : bitmasks corresponding to determinants

    +
    +
    u_in : guess coefficients on the various states. Overwritten
    +
    on exit
    +
    +

    dim_in : leftmost dimension of u_in

    +

    sze : Number of determinants

    +

    N_st : Number of eigenstates

    +

    Initial guess vectors are not necessarily orthonormal

    +

    Needs:

    +
    + +
      +
    +
    +

    Called by:

    +
    +
      +
    +
      +
    +
    +

    Calls:

    +
      +
    • davidson_diag_hjj_sjj()
    • +
    +
      +
    +
      +
    +
    +

    Touches:

    +
    + +
      +
    +
    +
    + +
    +
    +davidson_pull_results:()
    +

    File : davidson/davidson_parallel.irp.f

    +
    subroutine davidson_pull_results(zmq_socket_pull, v_t, s_t, imin, imax, task_id)
    +
    +
    +

    Pull the results of $H|U rangle$ on the master.

    +

    Needs:

    +
    + +
      +
    +
    +

    Called by:

    +
      +
    • davidson_collector()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +davidson_push_results:()
    +

    File : davidson/davidson_parallel.irp.f

    +
    subroutine davidson_push_results(zmq_socket_push, v_t, s_t, imin, imax, task_id)
    +
    +
    +

    Push the results of $H|U rangle$ from a worker to the master.

    +

    Needs:

    +
    + +
      +
    +
    +

    Called by:

    +
      +
    • davidson_slave_work()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +davidson_run_slave:()
    +

    File : davidson/davidson_parallel.irp.f

    +
    subroutine davidson_run_slave(thread,iproc)
    +
    +
    +

    Slave routine for Davidson’s diagonalization.

    +

    Needs:

    +
    + +
      +
    +
    +

    Called by:

    +
      +
    • davidson_slave_inproc()
    • +
    +
      +
    • davidson_slave_tcp()
    • +
    +
      +
    +
    +

    Calls:

    +
      +
    • davidson_slave_work()
    • +
    • end_zmq_push_socket()
    • +
    +
      +
    • end_zmq_to_qp_run_socket()
    • +
    +
      +
    • sleep()
    • +
    +
    +
    + +
    +
    +davidson_slave_inproc:()
    +

    File : davidson/davidson_parallel.irp.f

    +
    subroutine davidson_slave_inproc(i)
    +
    +
    +

    Called by:

    +
      +
    • h_s2_u_0_nstates_zmq()
    • +
    +
      +
    +
      +
    +
    +

    Calls:

    +
      +
    • davidson_run_slave()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +davidson_slave_tcp:()
    +

    File : davidson/davidson_parallel.irp.f

    +
    subroutine davidson_slave_tcp(i)
    +
    +
    +

    Called by:

    +
      +
    • run_slave_main()
    • +
    +
      +
    +
      +
    +
    +

    Calls:

    +
      +
    • davidson_run_slave()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +davidson_slave_work:()
    +

    File : davidson/davidson_parallel.irp.f

    +
    subroutine davidson_slave_work(zmq_to_qp_run_socket, zmq_socket_push, N_st, sze, worker_id)
    +
    +
    +

    Needs:

    +
    + + +
    +

    Called by:

    +
      +
    • davidson_run_slave()
    • +
    +
      +
    +
      +
    +
    +

    Calls:

    +
      +
    • davidson_push_results()
    • +
    +
      +
    • h_s2_u_0_nstates_openmp_work()
    • +
    +
      +
    • sleep()
    • +
    +
    +
    + +
    +
    +diagonalize_ci:()
    +

    File : davidson/diagonalize_ci.irp.f

    +
    subroutine diagonalize_CI
    +
    +
    +

    Replace the coefficients of the CI states by the coefficients of the +eigenstates of the CI matrix.

    +

    Needs:

    +
    + + +
    +

    Called by:

    +
      +
    • remove_small_contributions()
    • +
    +
      +
    • run_cipsi()
    • +
    +
      +
    • run_stochastic_cipsi()
    • +
    +
    +

    Touches:

    +
    + + +
    +
    + +
    +
    +h_s2_u_0_nstates_openmp:()
    +

    File : davidson/u0_h_u0.irp.f

    +
    subroutine H_S2_u_0_nstates_openmp(v_0,s_0,u_0,N_st,sze)
    +
    +
    +

    Computes $v_0 = H|u_0rangle$ and $s_0 = S^2 |u_0rangle$.

    +

    Assumes that the determinants are in psi_det

    +

    istart, iend, ishift, istep are used in ZMQ parallelization.

    +

    Needs:

    +
    + + +
    +

    Called by:

    +
      +
    • davidson_diag_hjj_sjj()
    • +
    +
      +
    • u_0_h_u_0()
    • +
    +
      +
    +
    +

    Calls:

    +
      +
    • dset_order()
    • +
    +
      +
    • dtranspose()
    • +
    +
      +
    • h_s2_u_0_nstates_openmp_work()
    • +
    +
    +
    + +
    +
    +h_s2_u_0_nstates_openmp_work:()
    +

    File : davidson/u0_h_u0.irp.f

    +
    subroutine H_S2_u_0_nstates_openmp_work(v_t,s_t,u_t,N_st,sze,istart,iend,ishift,istep)
    +
    +
    +

    Computes $v_t = H|u_trangle$ and $s_t = S^2 |u_trangle$

    +

    Default should be 1,N_det,0,1

    +

    Needs:

    +
    + + +
    +

    Called by:

    +
      +
    • davidson_slave_work()
    • +
    +
      +
    • h_s2_u_0_nstates_openmp()
    • +
    +
      +
    +
    +

    Calls:

    +
      +
    • h_s2_u_0_nstates_openmp_work_1()
    • +
    • h_s2_u_0_nstates_openmp_work_2()
    • +
    +
      +
    • h_s2_u_0_nstates_openmp_work_3()
    • +
    • h_s2_u_0_nstates_openmp_work_4()
    • +
    +
      +
    • h_s2_u_0_nstates_openmp_work_n_int()
    • +
    +
    +
    + +
    +
    +h_s2_u_0_nstates_openmp_work_1:()
    +

    File : davidson/u0_h_u0.irp.f_template_631

    +
    subroutine H_S2_u_0_nstates_openmp_work_1(v_t,s_t,u_t,N_st,sze,istart,iend,ishift,istep)
    +
    +
    +

    Computes $v_t = H|u_t

    +
    + +

    angle$ and $s_t = S^2 |u_t +angle$

    +
    +

    Default should be 1,N_det,0,1

    +

    Needs:

    +
    + + +
    +

    Called by:

    +
      +
    • h_s2_u_0_nstates_openmp_work()
    • +
    +
      +
    +
      +
    +
    +

    Calls:

    +
      +
    • get_all_spin_singles_1()
    • +
    • get_all_spin_singles_and_doubles_1()
    • +
    +
      +
    • get_s2()
    • +
    • i_h_j_double_alpha_beta()
    • +
    +
      +
    • i_h_j_double_spin()
    • +
    • i_h_j_mono_spin()
    • +
    +
    +
    +
    +
    +h_s2_u_0_nstates_openmp_work_2:()
    +

    File : davidson/u0_h_u0.irp.f_template_631

    +
    subroutine H_S2_u_0_nstates_openmp_work_2(v_t,s_t,u_t,N_st,sze,istart,iend,ishift,istep)
    +
    +
    +

    Computes $v_t = H|u_t

    +
    + +

    angle$ and $s_t = S^2 |u_t +angle$

    +
    +

    Default should be 1,N_det,0,1

    +

    Needs:

    +
    + + +
    +

    Called by:

    +
      +
    • h_s2_u_0_nstates_openmp_work()
    • +
    +
      +
    +
      +
    +
    +

    Calls:

    +
      +
    • get_all_spin_singles_2()
    • +
    • get_all_spin_singles_and_doubles_2()
    • +
    +
      +
    • get_s2()
    • +
    • i_h_j_double_alpha_beta()
    • +
    +
      +
    • i_h_j_double_spin()
    • +
    • i_h_j_mono_spin()
    • +
    +
    +
    +
    +
    +h_s2_u_0_nstates_openmp_work_3:()
    +

    File : davidson/u0_h_u0.irp.f_template_631

    +
    subroutine H_S2_u_0_nstates_openmp_work_3(v_t,s_t,u_t,N_st,sze,istart,iend,ishift,istep)
    +
    +
    +

    Computes $v_t = H|u_t

    +
    + +

    angle$ and $s_t = S^2 |u_t +angle$

    +
    +

    Default should be 1,N_det,0,1

    +

    Needs:

    +
    + + +
    +

    Called by:

    +
      +
    • h_s2_u_0_nstates_openmp_work()
    • +
    +
      +
    +
      +
    +
    +

    Calls:

    +
      +
    • get_all_spin_singles_3()
    • +
    • get_all_spin_singles_and_doubles_3()
    • +
    +
      +
    • get_s2()
    • +
    • i_h_j_double_alpha_beta()
    • +
    +
      +
    • i_h_j_double_spin()
    • +
    • i_h_j_mono_spin()
    • +
    +
    +
    +
    +
    +h_s2_u_0_nstates_openmp_work_4:()
    +

    File : davidson/u0_h_u0.irp.f_template_631

    +
    subroutine H_S2_u_0_nstates_openmp_work_4(v_t,s_t,u_t,N_st,sze,istart,iend,ishift,istep)
    +
    +
    +

    Computes $v_t = H|u_t

    +
    + +

    angle$ and $s_t = S^2 |u_t +angle$

    +
    +

    Default should be 1,N_det,0,1

    +

    Needs:

    +
    + + +
    +

    Called by:

    +
      +
    • h_s2_u_0_nstates_openmp_work()
    • +
    +
      +
    +
      +
    +
    +

    Calls:

    +
      +
    • get_all_spin_singles_4()
    • +
    • get_all_spin_singles_and_doubles_4()
    • +
    +
      +
    • get_s2()
    • +
    • i_h_j_double_alpha_beta()
    • +
    +
      +
    • i_h_j_double_spin()
    • +
    • i_h_j_mono_spin()
    • +
    +
    +
    +
    +
    +h_s2_u_0_nstates_openmp_work_n_int:()
    +

    File : davidson/u0_h_u0.irp.f_template_631

    +
    subroutine H_S2_u_0_nstates_openmp_work_N_int(v_t,s_t,u_t,N_st,sze,istart,iend,ishift,istep)
    +
    +
    +

    Computes $v_t = H|u_t

    +
    + +

    angle$ and $s_t = S^2 |u_t +angle$

    +
    +

    Default should be 1,N_det,0,1

    +

    Needs:

    +
    + + +
    +

    Called by:

    +
      +
    • h_s2_u_0_nstates_openmp_work()
    • +
    +
      +
    +
      +
    +
    +

    Calls:

    +
      +
    • get_all_spin_singles_and_doubles_n_int()
    • +
    • get_all_spin_singles_n_int()
    • +
    +
      +
    • get_s2()
    • +
    • i_h_j_double_alpha_beta()
    • +
    +
      +
    • i_h_j_double_spin()
    • +
    • i_h_j_mono_spin()
    • +
    +
    +
    +
    +
    +h_s2_u_0_nstates_zmq:()
    +

    File : davidson/davidson_parallel.irp.f

    +
    subroutine H_S2_u_0_nstates_zmq(v_0,s_0,u_0,N_st,sze)
    +
    +
    +

    Computes $v_0 = H|u_0rangle$ and $s_0 = S^2 |u_0rangle$

    +

    n : number of determinants

    +

    H_jj : array of $langle j|H|j rangle$

    +

    S2_jj : array of $langle j|S^2|j rangle$

    +

    Needs:

    +
    + + +
    +

    Called by:

    +
      +
    • davidson_diag_hjj_sjj()
    • +
    +
      +
    • u_0_h_u_0()
    • +
    +
      +
    +
    +

    Calls:

    +
      +
    • davidson_collector()
    • +
    • davidson_slave_inproc()
    • +
    • dset_order()
    • +
    +
      +
    • dtranspose()
    • +
    • end_parallel_job()
    • +
    +
      +
    • new_parallel_job()
    • +
    • omp_set_nested()
    • +
    +
    +

    Touches:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +h_s2_u_0_two_e_nstates_openmp:()
    +

    File : davidson/u0_wee_u0.irp.f

    +
    subroutine H_S2_u_0_two_e_nstates_openmp(v_0,s_0,u_0,N_st,sze)
    +
    +
    +

    Computes $v_0 = H|u_0rangle$ and $s_0 = S^2 |u_0rangle$

    +

    Assumes that the determinants are in psi_det

    +

    istart, iend, ishift, istep are used in ZMQ parallelization.

    +

    Needs:

    +
    + + +
    +

    Called by:

    +
      +
    • u_0_h_u_0_two_e()
    • +
    +
      +
    +
      +
    +
    +

    Calls:

    +
      +
    • dset_order()
    • +
    +
      +
    • dtranspose()
    • +
    +
      +
    • h_s2_u_0_two_e_nstates_openmp_work()
    • +
    +
    +
    + +
    +
    +h_s2_u_0_two_e_nstates_openmp_work:()
    +

    File : davidson/u0_wee_u0.irp.f

    +
    subroutine H_S2_u_0_two_e_nstates_openmp_work(v_t,s_t,u_t,N_st,sze,istart,iend,ishift,istep)
    +
    +
    +

    Computes $v_t = H|u_trangle$ and $s_t = S^2 |u_trangle$

    +

    Default should be 1,N_det,0,1

    +

    Needs:

    +
    + + +
    +

    Called by:

    +
      +
    • h_s2_u_0_two_e_nstates_openmp()
    • +
    +
      +
    +
      +
    +
    +

    Calls:

    +
      +
    • h_s2_u_0_two_e_nstates_openmp_work_1()
    • +
    • h_s2_u_0_two_e_nstates_openmp_work_2()
    • +
    +
      +
    • h_s2_u_0_two_e_nstates_openmp_work_3()
    • +
    • h_s2_u_0_two_e_nstates_openmp_work_4()
    • +
    +
      +
    • h_s2_u_0_two_e_nstates_openmp_work_n_int()
    • +
    +
    +
    + +
    +
    +h_s2_u_0_two_e_nstates_openmp_work_1:()
    +

    File : davidson/u0_wee_u0.irp.f_template_457

    +
    subroutine H_S2_u_0_two_e_nstates_openmp_work_1(v_t,s_t,u_t,N_st,sze,istart,iend,ishift,istep)
    +
    +
    +

    Computes $v_t = H|u_t

    +
    + +

    angle$ and $s_t = S^2 |u_t +angle$

    +
    +

    Default should be 1,N_det,0,1

    +

    Needs:

    +
    + + +
    +

    Called by:

    +
      +
    • h_s2_u_0_two_e_nstates_openmp_work()
    • +
    +
      +
    +
      +
    +
    +

    Calls:

    +
      +
    • get_all_spin_singles_1()
    • +
    • get_all_spin_singles_and_doubles_1()
    • +
    +
      +
    • get_s2()
    • +
    • i_h_j_double_alpha_beta()
    • +
    +
      +
    • i_h_j_double_spin()
    • +
    • i_wee_j_mono()
    • +
    +
    +
    +
    +
    +h_s2_u_0_two_e_nstates_openmp_work_2:()
    +

    File : davidson/u0_wee_u0.irp.f_template_457

    +
    subroutine H_S2_u_0_two_e_nstates_openmp_work_2(v_t,s_t,u_t,N_st,sze,istart,iend,ishift,istep)
    +
    +
    +

    Computes $v_t = H|u_t

    +
    + +

    angle$ and $s_t = S^2 |u_t +angle$

    +
    +

    Default should be 1,N_det,0,1

    +

    Needs:

    +
    + + +
    +

    Called by:

    +
      +
    • h_s2_u_0_two_e_nstates_openmp_work()
    • +
    +
      +
    +
      +
    +
    +

    Calls:

    +
      +
    • get_all_spin_singles_2()
    • +
    • get_all_spin_singles_and_doubles_2()
    • +
    +
      +
    • get_s2()
    • +
    • i_h_j_double_alpha_beta()
    • +
    +
      +
    • i_h_j_double_spin()
    • +
    • i_wee_j_mono()
    • +
    +
    +
    +
    +
    +h_s2_u_0_two_e_nstates_openmp_work_3:()
    +

    File : davidson/u0_wee_u0.irp.f_template_457

    +
    subroutine H_S2_u_0_two_e_nstates_openmp_work_3(v_t,s_t,u_t,N_st,sze,istart,iend,ishift,istep)
    +
    +
    +

    Computes $v_t = H|u_t

    +
    + +

    angle$ and $s_t = S^2 |u_t +angle$

    +
    +

    Default should be 1,N_det,0,1

    +

    Needs:

    +
    + + +
    +

    Called by:

    +
      +
    • h_s2_u_0_two_e_nstates_openmp_work()
    • +
    +
      +
    +
      +
    +
    +

    Calls:

    +
      +
    • get_all_spin_singles_3()
    • +
    • get_all_spin_singles_and_doubles_3()
    • +
    +
      +
    • get_s2()
    • +
    • i_h_j_double_alpha_beta()
    • +
    +
      +
    • i_h_j_double_spin()
    • +
    • i_wee_j_mono()
    • +
    +
    +
    +
    +
    +h_s2_u_0_two_e_nstates_openmp_work_4:()
    +

    File : davidson/u0_wee_u0.irp.f_template_457

    +
    subroutine H_S2_u_0_two_e_nstates_openmp_work_4(v_t,s_t,u_t,N_st,sze,istart,iend,ishift,istep)
    +
    +
    +

    Computes $v_t = H|u_t

    +
    + +

    angle$ and $s_t = S^2 |u_t +angle$

    +
    +

    Default should be 1,N_det,0,1

    +

    Needs:

    +
    + + +
    +

    Called by:

    +
      +
    • h_s2_u_0_two_e_nstates_openmp_work()
    • +
    +
      +
    +
      +
    +
    +

    Calls:

    +
      +
    • get_all_spin_singles_4()
    • +
    • get_all_spin_singles_and_doubles_4()
    • +
    +
      +
    • get_s2()
    • +
    • i_h_j_double_alpha_beta()
    • +
    +
      +
    • i_h_j_double_spin()
    • +
    • i_wee_j_mono()
    • +
    +
    +
    +
    +
    +h_s2_u_0_two_e_nstates_openmp_work_n_int:()
    +

    File : davidson/u0_wee_u0.irp.f_template_457

    +
    subroutine H_S2_u_0_two_e_nstates_openmp_work_N_int(v_t,s_t,u_t,N_st,sze,istart,iend,ishift,istep)
    +
    +
    +

    Computes $v_t = H|u_t

    +
    + +

    angle$ and $s_t = S^2 |u_t +angle$

    +
    +

    Default should be 1,N_det,0,1

    +

    Needs:

    +
    + + +
    +

    Called by:

    +
      +
    • h_s2_u_0_two_e_nstates_openmp_work()
    • +
    +
      +
    +
      +
    +
    +

    Calls:

    +
      +
    • get_all_spin_singles_and_doubles_n_int()
    • +
    • get_all_spin_singles_n_int()
    • +
    +
      +
    • get_s2()
    • +
    • i_h_j_double_alpha_beta()
    • +
    +
      +
    • i_h_j_double_spin()
    • +
    • i_wee_j_mono()
    • +
    +
    +
    +
    +
    +u_0_h_u_0:()
    +

    File : davidson/u0_h_u0.irp.f

    +
    subroutine u_0_H_u_0(e_0,s_0,u_0,n,keys_tmp,Nint,N_st,sze)
    +
    +
    +

    Computes $E_0 = frac{langle u_0|H|u_0 rangle}{langle u_0|u_0 rangle}$

    +

    and $S_0 = frac{langle u_0|S^2|u_0 rangle}{langle u_0|u_0 rangle}$

    +

    n : number of determinants

    +

    Needs:

    +
    +
      +
    • n_states
    • +
    +
      +
    • distributed_davidson
    • +
    +
    +

    Called by:

    +
    +
      +
    +
      +
    +
    +

    Calls:

    +
      +
    • h_s2_u_0_nstates_openmp()
    • +
    +
      +
    • h_s2_u_0_nstates_zmq()
    • +
    +
      +
    +
    +

    Touches:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +u_0_h_u_0_two_e:()
    +

    File : davidson/u0_wee_u0.irp.f

    +
    subroutine u_0_H_u_0_two_e(e_0,u_0,n,keys_tmp,Nint,N_st,sze)
    +
    +
    +

    Computes $E_0 = frac{ langle u_0|H|u_0rangle}{langle u_0|u_0 rangle}$.

    +

    n : number of determinants

    +

    Called by:

    +
    +
      +
    +
      +
    +
    +

    Calls:

    +
      +
    • h_s2_u_0_two_e_nstates_openmp()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +zmq_get_n_states_diag:()
    +

    File : davidson/davidson_parallel.irp.f

    +
    integer function zmq_get_N_states_diag(zmq_to_qp_run_socket, worker_id)
    +
    +
    +

    Get N_states_diag from the qp_run scheduler

    +

    Needs:

    +
    + + +
    +

    Touches:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +zmq_put_n_states_diag:()
    +

    File : davidson/davidson_parallel.irp.f

    +
    integer function zmq_put_N_states_diag(zmq_to_qp_run_socket,worker_id)
    +
    +
    +

    Put N_states_diag on the qp_run scheduler

    +

    Needs:

    +
    + +
      +
    +
    +
    + +
    +
    + + +
    + +
    + + +
    +
    + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/doc/modules/davidson_dressed.html b/doc/modules/davidson_dressed.html new file mode 100644 index 00000000..81578ae5 --- /dev/null +++ b/doc/modules/davidson_dressed.html @@ -0,0 +1,303 @@ + + + + + + + + + + + davidson_dressed — Quantum Package 2.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + +
    + + + + + +
    + +
    + + + + + + + + + + + + + + + + + +
    + + + + +
    +
    +
    +
    + +
    +

    davidson_dressed

    +

    Davidson with single-column dressing.

    +
    + + +
    + +
    + + +
    +
    + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/doc/modules/davidson_undressed.html b/doc/modules/davidson_undressed.html new file mode 100644 index 00000000..c9f2e526 --- /dev/null +++ b/doc/modules/davidson_undressed.html @@ -0,0 +1,369 @@ + + + + + + + + + + + davidson_undressed — Quantum Package 2.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + +
    + + + + + +
    + +
    + + + + + + + + + + + + + + + + + +
    + + + + +
    +
    +
    +
    + +
    +

    davidson_undressed

    +

    Module for main files Davidson’s algorithm with no dressing.

    +
    +

    Providers

    +
    +
    +dressing_column_h
    +

    File : davidson_undressed/null_dressing_vector.irp.f

    +
    double precision, allocatable   :: dressing_column_h    (N_det,N_states)
    +double precision, allocatable   :: dressing_column_s    (N_det,N_states)
    +
    +
    +

    Null dressing vectors

    +

    Needs:

    +
    +
      +
    • n_states
    • +
    +
      +
    +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +dressing_column_s
    +

    File : davidson_undressed/null_dressing_vector.irp.f

    +
    double precision, allocatable   :: dressing_column_h    (N_det,N_states)
    +double precision, allocatable   :: dressing_column_s    (N_det,N_states)
    +
    +
    +

    Null dressing vectors

    +

    Needs:

    +
    +
      +
    • n_states
    • +
    +
      +
    +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    + + +
    + +
    + + +
    +
    + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/doc/modules/density_for_dft.html b/doc/modules/density_for_dft.html new file mode 100644 index 00000000..923225ce --- /dev/null +++ b/doc/modules/density_for_dft.html @@ -0,0 +1,608 @@ + + + + + + + + + + + density_for_dft — Quantum Package 2.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + +
    + + + + + +
    + +
    + + + + + + + + + + + + + + + + + +
    + + + + +
    +
    +
    +
    + +
    +

    density_for_dft

    +

    This module defines the provider of the density used for the DFT related calculations. +This definition is done through the keyword 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 density_for_dft damping_for_rs_dft
    • +
    +
    +

    EZFIO parameters

    +
    +
    +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

    +
    + +
    +
    +damping_for_rs_dft
    +

    damping factor for the density used in RSFT.

    +

    Default: 0.5

    +
    + +
    +
    +

    Providers

    +
    +
    +one_body_dm_mo_alpha_one_det
    +

    File : density_for_dft/density_for_dft.irp.f

    +
    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:

    +
      +
    • elec_alpha_num
    • +
    • elec_beta_num
    • +
    +
    +
      +
    • n_states
    • +
    +
    +

    Needed by:

    +
    + +
      +
    +
    +
    + +
    +
    +one_body_dm_mo_beta_one_det
    +

    File : density_for_dft/density_for_dft.irp.f

    +
    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:

    +
      +
    • elec_alpha_num
    • +
    • elec_beta_num
    • +
    +
    +
      +
    • n_states
    • +
    +
    +

    Needed by:

    +
    + +
      +
    +
    +
    + +
    +
    +one_e_dm_alpha_ao_for_dft
    +

    File : density_for_dft/density_for_dft.irp.f

    +
    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:

    +
    + + +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +one_e_dm_average_mo_for_dft
    +

    File : density_for_dft/density_for_dft.irp.f

    +
    double precision, allocatable   :: one_e_dm_average_mo_for_dft  (mo_num,mo_num)
    +
    +
    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +one_e_dm_beta_ao_for_dft
    +

    File : density_for_dft/density_for_dft.irp.f

    +
    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:

    +
    + + +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +one_e_dm_mo_alpha_for_dft
    +

    File : density_for_dft/density_for_dft.irp.f

    +
    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:

    +
      +
    • damping_for_rs_dft
    • +
    • data_one_e_dm_alpha_mo
    • +
    • density_for_dft
    • +
    +
    + +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +one_e_dm_mo_beta_for_dft
    +

    File : density_for_dft/density_for_dft.irp.f

    +
    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:

    +
      +
    • damping_for_rs_dft
    • +
    • data_one_e_dm_beta_mo
    • +
    • density_for_dft
    • +
    +
    + +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +one_e_dm_mo_for_dft
    +

    File : density_for_dft/density_for_dft.irp.f

    +
    double precision, allocatable   :: one_e_dm_mo_for_dft  (mo_num,mo_num,N_states)
    +
    +
    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    + +
      +
    +
    +
    + +
    +
    + + +
    + +
    + + +
    +
    + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/doc/modules/determinants.html b/doc/modules/determinants.html new file mode 100644 index 00000000..ac8afb6d --- /dev/null +++ b/doc/modules/determinants.html @@ -0,0 +1,8110 @@ + + + + + + + + + + + determinants — Quantum Package 2.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + +
    + + + + + +
    + +
    + + + + + + + + + + + + + + + + + +
    + + + + +
    +
    +
    +
    + +
    +

    determinants

    +

    Contains everything for the computation of the Hamiltonian matrix elements in the basis of orthogonal Slater determinants built on a restricted spin-orbitals basis.

    +

    The main providers for this module are:

    + +

    The main routines for this module are:

    +
      +
    • i_H_j: computes the Hamiltonian matrix element between two arbitrary Slater determinants.
    • +
    • i_H_j_s2: computes the Hamiltonian and (\(S^2\)) matrix element between two arbitrary Slater determinants.
    • +
    • i_H_j_verbose: returns the decomposition in terms of one- and two-body components of the Hamiltonian matrix elements between two arbitrary Slater determinants. Also return the fermionic phase factor.
    • +
    • i_H_psi: computes the Hamiltonian matrix element between an arbitrary Slater determinant and a wave function composed of a sum of arbitrary Slater determinants.
    • +
    +

    For an example of how to use these routines and providers, take a look at example.irp.f.

    +
    +

    EZFIO parameters

    +
    +
    +n_det_max
    +

    Maximum number of determinants in the wave function

    +

    Default: 1000000

    +
    + +
    +
    +n_det_print_wf
    +

    Maximum number of determinants to be printed with the program print_wf

    +

    Default: 10000

    +
    + +
    +
    +n_det_max_full
    +

    Maximum number of determinants where \(\hat H\) is fully diagonalized

    +

    Default: 1000

    +
    + +
    +
    +n_states
    +

    Number of states to consider

    +

    Default: 1

    +
    + +
    +
    +read_wf
    +

    If true, read the wave function from the EZFIO file

    +

    Default: False

    +
    + +
    +
    +s2_eig
    +

    Force the wave function to be an eigenfunction of \(\widehat{S^2}\)

    +

    Default: True

    +
    + +
    +
    +used_weight
    +

    Weight used in the calculation of the one-electron density matrix. 0: 1./(c_0^2), 1: 1/N_states, 2: input state-average weight, 3: 1/(Norm_L3(Psi))

    +

    Default: 1

    +
    + +
    +
    +threshold_generators
    +

    Thresholds on generators (fraction of the square of the norm)

    +

    Default: 0.99

    +
    + +
    +
    +n_int
    +

    Number of integers required to represent bitstrings (set in module bitmask)

    +
    + +
    +
    +bit_kind
    +

    (set in module bitmask)

    +
    + +
    +
    +mo_label
    +

    Label of the MOs on which the determinants are expressed

    +
    + +
    +
    +n_det
    +

    Number of determinants in the current wave function

    +
    + +
    +
    +psi_coef
    +

    Coefficients of the wave function

    +
    + +
    +
    +psi_det
    +

    Determinants of the variational space

    +
    + +
    +
    +expected_s2
    +

    Expected value of \(\widehat{S^2}\)

    +
    + +
    +
    +target_energy
    +

    Energy that should be obtained when truncating the wave function (optional)

    +

    Default: 0.

    +
    + +
    +
    +state_average_weight
    +

    Weight of the states in state-average calculations.

    +
    + +
    +
    +

    Providers

    +
    +
    +abs_psi_coef_max
    +

    File : determinants/determinants.irp.f

    +
    double precision, allocatable   :: psi_coef_max (N_states)
    +double precision, allocatable   :: psi_coef_min (N_states)
    +double precision, allocatable   :: abs_psi_coef_max     (N_states)
    +double precision, allocatable   :: abs_psi_coef_min     (N_states)
    +
    +
    +

    Max and min values of the coefficients

    +

    Needs:

    +
    +
      +
    • n_states
    • +
    +
    +
    +
    + +
    +
    +abs_psi_coef_min
    +

    File : determinants/determinants.irp.f

    +
    double precision, allocatable   :: psi_coef_max (N_states)
    +double precision, allocatable   :: psi_coef_min (N_states)
    +double precision, allocatable   :: abs_psi_coef_max     (N_states)
    +double precision, allocatable   :: abs_psi_coef_min     (N_states)
    +
    +
    +

    Max and min values of the coefficients

    +

    Needs:

    +
    +
      +
    • n_states
    • +
    +
    +
    +
    + +
    +
    +barycentric_electronic_energy
    +

    File : determinants/energy.irp.f

    +
    double precision, allocatable   :: barycentric_electronic_energy        (N_states)
    +
    +
    +

    \(E_n = \sum_i {c_i^{(n)}}^2 H_{ii}\)

    +

    Needs:

    +
    +
      +
    • n_states
    • +
    +
    +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +c0_weight
    +

    File : determinants/density_matrix.irp.f

    +
    double precision, allocatable   :: c0_weight    (N_states)
    +
    +
    +

    Weight of the states in the selection : \(\frac{1}{c_0^2}\) .

    +

    Needs:

    +
      +
    • n_states
    • +
    +
    +
      +
    +
    +

    Needed by:

    +
    + +
      +
    +
    +
    + +
    +
    +det_alpha_norm
    +

    File : determinants/spindeterminants.irp.f

    +
    double precision, allocatable   :: det_alpha_norm       (N_det_alpha_unique)
    +double precision, allocatable   :: det_beta_norm        (N_det_beta_unique)
    +
    +
    +

    Norm of the \(\alpha\) and \(\beta\) spin determinants in the wave function:

    +

    \(||D_\alpha||_i = \sum_j C_{ij}^2\)

    +

    Needs:

    +
    + + +
    +
    + +
    +
    +det_beta_norm
    +

    File : determinants/spindeterminants.irp.f

    +
    double precision, allocatable   :: det_alpha_norm       (N_det_alpha_unique)
    +double precision, allocatable   :: det_beta_norm        (N_det_beta_unique)
    +
    +
    +

    Norm of the \(\alpha\) and \(\beta\) spin determinants in the wave function:

    +

    \(||D_\alpha||_i = \sum_j C_{ij}^2\)

    +

    Needs:

    +
    + + +
    +
    + +
    +
    +det_to_occ_pattern
    +

    File : determinants/occ_pattern.irp.f

    +
    integer, allocatable    :: det_to_occ_pattern   (N_det)
    +
    +
    +

    Returns the index of the occupation pattern for each determinant

    +

    Needs:

    +
      +
    • elec_alpha_num
    • +
    • n_det
    • +
    +
    + +
    +

    Needed by:

    +
    + +
      +
    +
    +
    + +
    +
    +diag_algorithm
    +

    File : determinants/determinants.irp.f

    +
    character*(64)  :: diag_algorithm
    +
    +
    +

    Diagonalization algorithm (Davidson or Lapack)

    +

    Needs:

    +
    +
      +
    • n_det_max_full
    • +
    +
      +
    • n_states
    • +
    +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +diagonal_h_matrix_on_psi_det
    +

    File : determinants/energy.irp.f

    +
    double precision, allocatable   :: diagonal_h_matrix_on_psi_det (N_det)
    +
    +
    +

    Diagonal of the Hamiltonian ordered as psi_det

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +double_exc_bitmask
    +

    File : determinants/determinants_bitmasks.irp.f

    +
    integer(bit_kind), allocatable  :: double_exc_bitmask   (N_int,4,N_double_exc_bitmasks)
    +
    +
    +

    double_exc_bitmask(:,1,i) is the bitmask for holes of excitation 1

    +

    double_exc_bitmask(:,2,i) is the bitmask for particles of excitation 1

    +

    double_exc_bitmask(:,3,i) is the bitmask for holes of excitation 2

    +

    double_exc_bitmask(:,4,i) is the bitmask for particles of excitation 2

    +

    for a given couple of hole/particle excitations i.

    +

    Needs:

    +
    + + +
    +
    + +
    +
    +expected_s2
    +

    File : determinants/s2.irp.f

    +
    double precision        :: expected_s2
    +
    +
    +

    Expected value of \(\widehat{S^2}\) : S*(S+1)

    +

    Needs:

    +
      +
    • elec_alpha_num
    • +
    +
      +
    • elec_beta_num
    • +
    +
      +
    +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +fock_operator_closed_shell_ref_bitmask
    +

    File : determinants/single_excitations.irp.f

    +
    double precision, allocatable   :: fock_operator_closed_shell_ref_bitmask       (mo_num,mo_num)
    +
    +
    +

    Needs:

    +
    + + +
    +
    + +
    +
    +fock_wee_closed_shell
    +

    File : determinants/mono_excitations_bielec.irp.f

    +
    double precision, allocatable   :: fock_wee_closed_shell        (mo_num,mo_num)
    +
    +
    +

    Needs:

    +
    + + +
    +
    + +
    +
    +h_apply_buffer_allocated
    +

    File : determinants/h_apply.irp.f

    +
    logical :: h_apply_buffer_allocated
    +integer(omp_lock_kind), allocatable     :: h_apply_buffer_lock  (64,0:nproc-1)
    +
    +
    +

    Buffer of determinants/coefficients/perturbative energy for H_apply. +Uninitialized. Filled by H_apply subroutines.

    +

    Needs:

    +
    +
      +
    • n_states
    • +
    +
    +
    +
    + +
    +
    +h_apply_buffer_lock
    +

    File : determinants/h_apply.irp.f

    +
    logical :: h_apply_buffer_allocated
    +integer(omp_lock_kind), allocatable     :: h_apply_buffer_lock  (64,0:nproc-1)
    +
    +
    +

    Buffer of determinants/coefficients/perturbative energy for H_apply. +Uninitialized. Filled by H_apply subroutines.

    +

    Needs:

    +
    +
      +
    • n_states
    • +
    +
    +
    +
    + +
    +
    +h_matrix_all_dets
    +

    File : determinants/utils.irp.f

    +
    double precision, allocatable   :: h_matrix_all_dets    (N_det,N_det)
    +
    +
    +

    \(\hat H\) matrix on the basis of the Slater determinants defined by psi_det

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +h_matrix_cas
    +

    File : determinants/psi_cas.irp.f

    +
    double precision, allocatable   :: h_matrix_cas (N_det_cas,N_det_cas)
    +
    +
    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    + +
      +
    +
    +
    + +
    +
    +idx_cas
    +

    File : determinants/psi_cas.irp.f

    +
    integer(bit_kind), allocatable  :: psi_cas      (N_int,2,psi_det_size)
    +double precision, allocatable   :: psi_cas_coef (psi_det_size,n_states)
    +integer, allocatable    :: idx_cas      (psi_det_size)
    +integer :: n_det_cas
    +
    +
    +

    CAS wave function, defined from the application of the CAS bitmask on the +determinants. idx_cas gives the indice of the CAS determinant in psi_det.

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +idx_non_cas
    +

    File : determinants/psi_cas.irp.f

    +
    integer(bit_kind), allocatable  :: psi_non_cas  (N_int,2,psi_det_size)
    +double precision, allocatable   :: psi_non_cas_coef     (psi_det_size,n_states)
    +integer, allocatable    :: idx_non_cas  (psi_det_size)
    +integer :: n_det_non_cas
    +
    +
    +

    Set of determinants which are not part of the CAS, defined from the application +of the CAS bitmask on the determinants. +idx_non_cas gives the indice of the determinant in psi_det.

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +max_degree_exc
    +

    File : determinants/determinants.irp.f

    +
    integer :: max_degree_exc
    +
    +
    +

    Maximum degree of excitation in the wave function with respect to the Hartree-Fock +determinant.

    +

    Needs:

    +
    + + +
    +
    + +
    +
    +n_det
    +

    File : determinants/determinants.irp.f

    +
    integer :: n_det
    +
    +
    +

    Number of determinants in the wave function

    +

    Needs:

    +
    + +
      +
    • read_wf
    • +
    +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +n_det_alpha_unique
    +

    File : determinants/spindeterminants.irp.f_template_144

    +
    integer(bit_kind), allocatable  :: psi_det_alpha_unique (N_int,psi_det_size)
    +integer :: n_det_alpha_unique
    +
    +
    +

    Unique \(\alpha\) determinants

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +n_det_beta_unique
    +

    File : determinants/spindeterminants.irp.f_template_144

    +
    integer(bit_kind), allocatable  :: psi_det_beta_unique  (N_int,psi_det_size)
    +integer :: n_det_beta_unique
    +
    +
    +

    Unique \(\beta\) determinants

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +n_det_cas
    +

    File : determinants/psi_cas.irp.f

    +
    integer(bit_kind), allocatable  :: psi_cas      (N_int,2,psi_det_size)
    +double precision, allocatable   :: psi_cas_coef (psi_det_size,n_states)
    +integer, allocatable    :: idx_cas      (psi_det_size)
    +integer :: n_det_cas
    +
    +
    +

    CAS wave function, defined from the application of the CAS bitmask on the +determinants. idx_cas gives the indice of the CAS determinant in psi_det.

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +n_det_non_cas
    +

    File : determinants/psi_cas.irp.f

    +
    integer(bit_kind), allocatable  :: psi_non_cas  (N_int,2,psi_det_size)
    +double precision, allocatable   :: psi_non_cas_coef     (psi_det_size,n_states)
    +integer, allocatable    :: idx_non_cas  (psi_det_size)
    +integer :: n_det_non_cas
    +
    +
    +

    Set of determinants which are not part of the CAS, defined from the application +of the CAS bitmask on the determinants. +idx_non_cas gives the indice of the determinant in psi_det.

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +n_double_exc_bitmasks
    +

    File : determinants/determinants_bitmasks.irp.f

    +
    integer :: n_double_exc_bitmasks
    +
    +
    +

    Number of double excitation bitmasks

    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +n_occ_pattern
    +

    File : determinants/occ_pattern.irp.f

    +
    integer(bit_kind), allocatable  :: psi_occ_pattern      (N_int,2,psi_det_size)
    +integer :: n_occ_pattern
    +
    +
    +

    Array of the occ_patterns present in the wave function.

    +

    psi_occ_pattern(:,1,j) = j-th occ_pattern of the wave function : represents all the single occupations

    +

    psi_occ_pattern(:,2,j) = j-th occ_pattern of the wave function : represents all the double occupations

    +

    The occ patterns are sorted by occ_pattern_search_key()

    +

    Needs:

    +
      +
    • elec_alpha_num
    • +
    • n_det
    • +
    +
    + +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +n_single_exc_bitmasks
    +

    File : determinants/determinants_bitmasks.irp.f

    +
    integer :: n_single_exc_bitmasks
    +
    +
    +

    Number of single excitation bitmasks

    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +one_e_dm_ao_alpha
    +

    File : determinants/density_matrix.irp.f

    +
    double precision, allocatable   :: one_e_dm_ao_alpha    (ao_num,ao_num)
    +double precision, allocatable   :: one_e_dm_ao_beta     (ao_num,ao_num)
    +
    +
    +

    One body density matrix on the AO basis : \(\rho_{AO}(\alpha), \rho_{AO}(\beta)\) .

    +

    Needs:

    +
    + + +
    +
    + +
    +
    +one_e_dm_ao_beta
    +

    File : determinants/density_matrix.irp.f

    +
    double precision, allocatable   :: one_e_dm_ao_alpha    (ao_num,ao_num)
    +double precision, allocatable   :: one_e_dm_ao_beta     (ao_num,ao_num)
    +
    +
    +

    One body density matrix on the AO basis : \(\rho_{AO}(\alpha), \rho_{AO}(\beta)\) .

    +

    Needs:

    +
    + + +
    +
    + +
    +
    +one_e_dm_dagger_mo_spin_index
    +

    File : determinants/density_matrix.irp.f

    +
    double precision, allocatable   :: one_e_dm_dagger_mo_spin_index        (mo_num,mo_num,N_states,2)
    +
    +
    +

    Needs:

    +
    +
      +
    • n_states
    • +
    +
    +
    +
    + +
    +
    +one_e_dm_mo
    +

    File : determinants/density_matrix.irp.f

    +
    double precision, allocatable   :: one_e_dm_mo  (mo_num,mo_num)
    +
    +
    +

    One-body density matrix

    +

    Needs:

    +
    + +
      +
    +
    +
    + +
    +
    +one_e_dm_mo_alpha
    +

    File : determinants/density_matrix.irp.f

    +
    double precision, allocatable   :: one_e_dm_mo_alpha    (mo_num,mo_num,N_states)
    +double precision, allocatable   :: one_e_dm_mo_beta     (mo_num,mo_num,N_states)
    +
    +
    +

    \(\alpha\) and \(\beta\) one-body density matrix for each state

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +one_e_dm_mo_alpha_average
    +

    File : determinants/density_matrix.irp.f

    +
    double precision, allocatable   :: one_e_dm_mo_alpha_average    (mo_num,mo_num)
    +double precision, allocatable   :: one_e_dm_mo_beta_average     (mo_num,mo_num)
    +
    +
    +

    \(\alpha\) and \(\beta\) one-body density matrix for each state

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +one_e_dm_mo_beta
    +

    File : determinants/density_matrix.irp.f

    +
    double precision, allocatable   :: one_e_dm_mo_alpha    (mo_num,mo_num,N_states)
    +double precision, allocatable   :: one_e_dm_mo_beta     (mo_num,mo_num,N_states)
    +
    +
    +

    \(\alpha\) and \(\beta\) one-body density matrix for each state

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +one_e_dm_mo_beta_average
    +

    File : determinants/density_matrix.irp.f

    +
    double precision, allocatable   :: one_e_dm_mo_alpha_average    (mo_num,mo_num)
    +double precision, allocatable   :: one_e_dm_mo_beta_average     (mo_num,mo_num)
    +
    +
    +

    \(\alpha\) and \(\beta\) one-body density matrix for each state

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +one_e_dm_mo_diff
    +

    File : determinants/density_matrix.irp.f

    +
    double precision, allocatable   :: one_e_dm_mo_diff     (mo_num,mo_num,2:N_states)
    +
    +
    +

    Difference of the one-body density matrix with respect to the ground state

    +

    Needs:

    +
    +
      +
    • n_states
    • +
    +
    +
    +
    + +
    +
    +one_e_dm_mo_spin_index
    +

    File : determinants/density_matrix.irp.f

    +
    double precision, allocatable   :: one_e_dm_mo_spin_index       (mo_num,mo_num,N_states,2)
    +
    +
    +

    Needs:

    +
    +
      +
    • n_states
    • +
    +
    +
    +
    + +
    +
    +one_e_spin_density_ao
    +

    File : determinants/density_matrix.irp.f

    +
    double precision, allocatable   :: one_e_spin_density_ao        (ao_num,ao_num)
    +
    +
    +

    One body spin density matrix on the AO basis : \(\rho_{AO}(\alpha) - \rho_{AO}(\beta)\)

    +

    Needs:

    +
    + + +
    +
    + +
    +
    +one_e_spin_density_mo
    +

    File : determinants/density_matrix.irp.f

    +
    double precision, allocatable   :: one_e_spin_density_mo        (mo_num,mo_num)
    +
    +
    +

    \(\rho(\alpha) - \rho(\beta)\)

    +

    Needs:

    +
    + +
      +
    +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +psi_average_norm_contrib
    +

    File : determinants/determinants.irp.f

    +
    double precision, allocatable   :: psi_average_norm_contrib     (psi_det_size)
    +
    +
    +

    Contribution of determinants to the state-averaged density.

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +psi_average_norm_contrib_sorted
    +

    File : determinants/determinants.irp.f

    +
    integer(bit_kind), allocatable  :: psi_det_sorted       (N_int,2,psi_det_size)
    +double precision, allocatable   :: psi_coef_sorted      (psi_det_size,N_states)
    +double precision, allocatable   :: psi_average_norm_contrib_sorted      (psi_det_size)
    +integer, allocatable    :: psi_det_sorted_order (psi_det_size)
    +
    +
    +

    Wave function sorted by determinants contribution to the norm (state-averaged)

    +

    psi_det_sorted_order(i) -> k : index in psi_det

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +psi_bilinear_matrix
    +

    File : determinants/spindeterminants.irp.f

    +
    double precision, allocatable   :: psi_bilinear_matrix  (N_det_alpha_unique,N_det_beta_unique,N_states)
    +
    +
    +

    Coefficient matrix if the wave function is expressed in a bilinear form :

    +

    \(D_\alpha^\dagger.C.D_\beta\)

    +

    Needs:

    +
    + + +
    +
    + +
    +
    +psi_bilinear_matrix_columns
    +

    File : determinants/spindeterminants.irp.f

    +
    double precision, allocatable   :: psi_bilinear_matrix_values   (N_det,N_states)
    +integer, allocatable    :: psi_bilinear_matrix_rows     (N_det)
    +integer, allocatable    :: psi_bilinear_matrix_columns  (N_det)
    +integer, allocatable    :: psi_bilinear_matrix_order    (N_det)
    +
    +
    +
    +
    Sparse coefficient matrix if the wave function is expressed in a bilinear form :
    +
    \(D_\alpha^\dagger.C.D_\beta\)
    +
    +

    Rows are \(\alpha\) determinants and columns are \(\beta\) .

    +

    Order refers to psi_det

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +psi_bilinear_matrix_columns_loc
    +

    File : determinants/spindeterminants.irp.f

    +
    integer, allocatable    :: psi_bilinear_matrix_columns_loc      (N_det_beta_unique+1)
    +
    +
    +

    Sparse coefficient matrix if the wave function is expressed in a bilinear form :

    +

    \(D_\alpha^\dagger.C.D_\beta\)

    +

    Rows are \(\alpha\) determinants and columns are \(\beta\) .

    +

    Order refers to psi_det

    +

    Needs:

    +
    + + +
    +
    + +
    +
    +psi_bilinear_matrix_order
    +

    File : determinants/spindeterminants.irp.f

    +
    double precision, allocatable   :: psi_bilinear_matrix_values   (N_det,N_states)
    +integer, allocatable    :: psi_bilinear_matrix_rows     (N_det)
    +integer, allocatable    :: psi_bilinear_matrix_columns  (N_det)
    +integer, allocatable    :: psi_bilinear_matrix_order    (N_det)
    +
    +
    +
    +
    Sparse coefficient matrix if the wave function is expressed in a bilinear form :
    +
    \(D_\alpha^\dagger.C.D_\beta\)
    +
    +

    Rows are \(\alpha\) determinants and columns are \(\beta\) .

    +

    Order refers to psi_det

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +psi_bilinear_matrix_order_reverse
    +

    File : determinants/spindeterminants.irp.f

    +
    integer, allocatable    :: psi_bilinear_matrix_order_reverse    (N_det)
    +
    +
    +

    Order which allows to go from psi_bilinear_matrix to psi_det

    +

    Needs:

    +
    + +
      +
    +
    +
    + +
    +
    +psi_bilinear_matrix_order_transp_reverse
    +

    File : determinants/spindeterminants.irp.f

    +
    integer, allocatable    :: psi_bilinear_matrix_order_transp_reverse     (N_det)
    +
    +
    +

    Order which allows to go from psi_bilinear_matrix_order_transp to +psi_bilinear_matrix

    +

    Needs:

    +
    + +
      +
    +
    +
    + +
    +
    +psi_bilinear_matrix_rows
    +

    File : determinants/spindeterminants.irp.f

    +
    double precision, allocatable   :: psi_bilinear_matrix_values   (N_det,N_states)
    +integer, allocatable    :: psi_bilinear_matrix_rows     (N_det)
    +integer, allocatable    :: psi_bilinear_matrix_columns  (N_det)
    +integer, allocatable    :: psi_bilinear_matrix_order    (N_det)
    +
    +
    +
    +
    Sparse coefficient matrix if the wave function is expressed in a bilinear form :
    +
    \(D_\alpha^\dagger.C.D_\beta\)
    +
    +

    Rows are \(\alpha\) determinants and columns are \(\beta\) .

    +

    Order refers to psi_det

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +psi_bilinear_matrix_transp_columns
    +

    File : determinants/spindeterminants.irp.f

    +
    double precision, allocatable   :: psi_bilinear_matrix_transp_values    (N_det,N_states)
    +integer, allocatable    :: psi_bilinear_matrix_transp_rows      (N_det)
    +integer, allocatable    :: psi_bilinear_matrix_transp_columns   (N_det)
    +integer, allocatable    :: psi_bilinear_matrix_transp_order     (N_det)
    +
    +
    +

    Transpose of psi_bilinear_matrix

    +

    \(D_\beta^\dagger.C^\dagger.D_\alpha\)

    +

    Rows are \(\alpha\) determinants and columns are \(\beta\) , but the matrix is stored in row major +format.

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +psi_bilinear_matrix_transp_order
    +

    File : determinants/spindeterminants.irp.f

    +
    double precision, allocatable   :: psi_bilinear_matrix_transp_values    (N_det,N_states)
    +integer, allocatable    :: psi_bilinear_matrix_transp_rows      (N_det)
    +integer, allocatable    :: psi_bilinear_matrix_transp_columns   (N_det)
    +integer, allocatable    :: psi_bilinear_matrix_transp_order     (N_det)
    +
    +
    +

    Transpose of psi_bilinear_matrix

    +

    \(D_\beta^\dagger.C^\dagger.D_\alpha\)

    +

    Rows are \(\alpha\) determinants and columns are \(\beta\) , but the matrix is stored in row major +format.

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +psi_bilinear_matrix_transp_rows
    +

    File : determinants/spindeterminants.irp.f

    +
    double precision, allocatable   :: psi_bilinear_matrix_transp_values    (N_det,N_states)
    +integer, allocatable    :: psi_bilinear_matrix_transp_rows      (N_det)
    +integer, allocatable    :: psi_bilinear_matrix_transp_columns   (N_det)
    +integer, allocatable    :: psi_bilinear_matrix_transp_order     (N_det)
    +
    +
    +

    Transpose of psi_bilinear_matrix

    +

    \(D_\beta^\dagger.C^\dagger.D_\alpha\)

    +

    Rows are \(\alpha\) determinants and columns are \(\beta\) , but the matrix is stored in row major +format.

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +psi_bilinear_matrix_transp_rows_loc
    +

    File : determinants/spindeterminants.irp.f

    +
    integer, allocatable    :: psi_bilinear_matrix_transp_rows_loc  (N_det_alpha_unique+1)
    +
    +
    +

    Location of the columns in the psi_bilinear_matrix

    +

    Needs:

    +
    + + +
    +
    + +
    +
    +psi_bilinear_matrix_transp_values
    +

    File : determinants/spindeterminants.irp.f

    +
    double precision, allocatable   :: psi_bilinear_matrix_transp_values    (N_det,N_states)
    +integer, allocatable    :: psi_bilinear_matrix_transp_rows      (N_det)
    +integer, allocatable    :: psi_bilinear_matrix_transp_columns   (N_det)
    +integer, allocatable    :: psi_bilinear_matrix_transp_order     (N_det)
    +
    +
    +

    Transpose of psi_bilinear_matrix

    +

    \(D_\beta^\dagger.C^\dagger.D_\alpha\)

    +

    Rows are \(\alpha\) determinants and columns are \(\beta\) , but the matrix is stored in row major +format.

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +psi_bilinear_matrix_values
    +

    File : determinants/spindeterminants.irp.f

    +
    double precision, allocatable   :: psi_bilinear_matrix_values   (N_det,N_states)
    +integer, allocatable    :: psi_bilinear_matrix_rows     (N_det)
    +integer, allocatable    :: psi_bilinear_matrix_columns  (N_det)
    +integer, allocatable    :: psi_bilinear_matrix_order    (N_det)
    +
    +
    +
    +
    Sparse coefficient matrix if the wave function is expressed in a bilinear form :
    +
    \(D_\alpha^\dagger.C.D_\beta\)
    +
    +

    Rows are \(\alpha\) determinants and columns are \(\beta\) .

    +

    Order refers to psi_det

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +psi_cas
    +

    File : determinants/psi_cas.irp.f

    +
    integer(bit_kind), allocatable  :: psi_cas      (N_int,2,psi_det_size)
    +double precision, allocatable   :: psi_cas_coef (psi_det_size,n_states)
    +integer, allocatable    :: idx_cas      (psi_det_size)
    +integer :: n_det_cas
    +
    +
    +

    CAS wave function, defined from the application of the CAS bitmask on the +determinants. idx_cas gives the indice of the CAS determinant in psi_det.

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +psi_cas_coef
    +

    File : determinants/psi_cas.irp.f

    +
    integer(bit_kind), allocatable  :: psi_cas      (N_int,2,psi_det_size)
    +double precision, allocatable   :: psi_cas_coef (psi_det_size,n_states)
    +integer, allocatable    :: idx_cas      (psi_det_size)
    +integer :: n_det_cas
    +
    +
    +

    CAS wave function, defined from the application of the CAS bitmask on the +determinants. idx_cas gives the indice of the CAS determinant in psi_det.

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +psi_cas_coef_sorted_bit
    +

    File : determinants/psi_cas.irp.f

    +
    integer(bit_kind), allocatable  :: psi_cas_sorted_bit   (N_int,2,psi_det_size)
    +double precision, allocatable   :: psi_cas_coef_sorted_bit      (psi_det_size,N_states)
    +
    +
    +

    CAS determinants sorted to accelerate the search of a random determinant in the wave +function.

    +

    Needs:

    +
    + + +
    +
    + +
    +
    +psi_cas_energy
    +

    File : determinants/psi_cas.irp.f

    +
    double precision, allocatable   :: psi_cas_energy       (N_states)
    +
    +
    +

    Variational energy of \(\Psi_{CAS}\) , where \(\Psi_{CAS} = \sum_{I \in CAS} \I \rangle \langle I | \Psi \rangle\) .

    +

    Needs:

    +
    +
      +
    • n_states
    • +
    +
    +
    +
    + +
    +
    +psi_cas_energy_diagonalized
    +

    File : determinants/psi_cas.irp.f

    +
    double precision, allocatable   :: psi_coef_cas_diagonalized    (N_det_cas,N_states)
    +double precision, allocatable   :: psi_cas_energy_diagonalized  (N_states)
    +
    +
    +

    Needs:

    +
    +
      +
    • n_states
    • +
    +
    +
    +
    + +
    +
    +psi_cas_sorted_bit
    +

    File : determinants/psi_cas.irp.f

    +
    integer(bit_kind), allocatable  :: psi_cas_sorted_bit   (N_int,2,psi_det_size)
    +double precision, allocatable   :: psi_cas_coef_sorted_bit      (psi_det_size,N_states)
    +
    +
    +

    CAS determinants sorted to accelerate the search of a random determinant in the wave +function.

    +

    Needs:

    +
    + + +
    +
    + +
    +
    +psi_coef
    +

    File : determinants/determinants.irp.f

    +
    double precision, allocatable   :: psi_coef     (psi_det_size,N_states)
    +
    +
    +

    The wave function coefficients. Initialized with Hartree-Fock if the EZFIO file +is empty.

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +psi_coef_cas_diagonalized
    +

    File : determinants/psi_cas.irp.f

    +
    double precision, allocatable   :: psi_coef_cas_diagonalized    (N_det_cas,N_states)
    +double precision, allocatable   :: psi_cas_energy_diagonalized  (N_states)
    +
    +
    +

    Needs:

    +
    +
      +
    • n_states
    • +
    +
    +
    +
    + +
    +
    +psi_coef_max
    +

    File : determinants/determinants.irp.f

    +
    double precision, allocatable   :: psi_coef_max (N_states)
    +double precision, allocatable   :: psi_coef_min (N_states)
    +double precision, allocatable   :: abs_psi_coef_max     (N_states)
    +double precision, allocatable   :: abs_psi_coef_min     (N_states)
    +
    +
    +

    Max and min values of the coefficients

    +

    Needs:

    +
    +
      +
    • n_states
    • +
    +
    +
    +
    + +
    +
    +psi_coef_min
    +

    File : determinants/determinants.irp.f

    +
    double precision, allocatable   :: psi_coef_max (N_states)
    +double precision, allocatable   :: psi_coef_min (N_states)
    +double precision, allocatable   :: abs_psi_coef_max     (N_states)
    +double precision, allocatable   :: abs_psi_coef_min     (N_states)
    +
    +
    +

    Max and min values of the coefficients

    +

    Needs:

    +
    +
      +
    • n_states
    • +
    +
    +
    +
    + +
    +
    +psi_coef_sorted
    +

    File : determinants/determinants.irp.f

    +
    integer(bit_kind), allocatable  :: psi_det_sorted       (N_int,2,psi_det_size)
    +double precision, allocatable   :: psi_coef_sorted      (psi_det_size,N_states)
    +double precision, allocatable   :: psi_average_norm_contrib_sorted      (psi_det_size)
    +integer, allocatable    :: psi_det_sorted_order (psi_det_size)
    +
    +
    +

    Wave function sorted by determinants contribution to the norm (state-averaged)

    +

    psi_det_sorted_order(i) -> k : index in psi_det

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +psi_coef_sorted_bit
    +

    File : determinants/determinants.irp.f

    +
    integer(bit_kind), allocatable  :: psi_det_sorted_bit   (N_int,2,psi_det_size)
    +double precision, allocatable   :: psi_coef_sorted_bit  (psi_det_size,N_states)
    +
    +
    +

    Determinants on which we apply \(\langle i|H|psi \rangle\) for perturbation. +They are sorted by determinants interpreted as integers. Useful +to accelerate the search of a random determinant in the wave +function.

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    + +
      +
    +
    +
    + +
    +
    +psi_det
    +

    File : determinants/determinants.irp.f

    +
    integer(bit_kind), allocatable  :: psi_det      (N_int,2,psi_det_size)
    +
    +
    +

    The determinants of the wave function. Initialized with Hartree-Fock if the EZFIO file +is empty.

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +psi_det_alpha
    +

    File : determinants/spindeterminants.irp.f

    +
    integer(bit_kind), allocatable  :: psi_det_alpha        (N_int,psi_det_size)
    +
    +
    +

    List of \(\alpha\) determinants of psi_det

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +psi_det_alpha_unique
    +

    File : determinants/spindeterminants.irp.f_template_144

    +
    integer(bit_kind), allocatable  :: psi_det_alpha_unique (N_int,psi_det_size)
    +integer :: n_det_alpha_unique
    +
    +
    +

    Unique \(\alpha\) determinants

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +psi_det_beta
    +

    File : determinants/spindeterminants.irp.f

    +
    integer(bit_kind), allocatable  :: psi_det_beta (N_int,psi_det_size)
    +
    +
    +

    List of \(\beta\) determinants of psi_det

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +psi_det_beta_unique
    +

    File : determinants/spindeterminants.irp.f_template_144

    +
    integer(bit_kind), allocatable  :: psi_det_beta_unique  (N_int,psi_det_size)
    +integer :: n_det_beta_unique
    +
    +
    +

    Unique \(\beta\) determinants

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +psi_det_hii
    +

    File : determinants/determinants.irp.f

    +
    double precision, allocatable   :: psi_det_hii  (N_det)
    +
    +
    +

    \(\langle i|h|i \rangle\) for all determinants.

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +psi_det_size
    +

    File : determinants/determinants.irp.f

    +
    integer :: psi_det_size
    +
    +
    +

    Size of the psi_det and psi_coef arrays

    +

    Needs:

    +
    + +
      +
    +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +psi_det_sorted
    +

    File : determinants/determinants.irp.f

    +
    integer(bit_kind), allocatable  :: psi_det_sorted       (N_int,2,psi_det_size)
    +double precision, allocatable   :: psi_coef_sorted      (psi_det_size,N_states)
    +double precision, allocatable   :: psi_average_norm_contrib_sorted      (psi_det_size)
    +integer, allocatable    :: psi_det_sorted_order (psi_det_size)
    +
    +
    +

    Wave function sorted by determinants contribution to the norm (state-averaged)

    +

    psi_det_sorted_order(i) -> k : index in psi_det

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +psi_det_sorted_bit
    +

    File : determinants/determinants.irp.f

    +
    integer(bit_kind), allocatable  :: psi_det_sorted_bit   (N_int,2,psi_det_size)
    +double precision, allocatable   :: psi_coef_sorted_bit  (psi_det_size,N_states)
    +
    +
    +

    Determinants on which we apply \(\langle i|H|psi \rangle\) for perturbation. +They are sorted by determinants interpreted as integers. Useful +to accelerate the search of a random determinant in the wave +function.

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    + +
      +
    +
    +
    + +
    +
    +psi_det_sorted_order
    +

    File : determinants/determinants.irp.f

    +
    integer(bit_kind), allocatable  :: psi_det_sorted       (N_int,2,psi_det_size)
    +double precision, allocatable   :: psi_coef_sorted      (psi_det_size,N_states)
    +double precision, allocatable   :: psi_average_norm_contrib_sorted      (psi_det_size)
    +integer, allocatable    :: psi_det_sorted_order (psi_det_size)
    +
    +
    +

    Wave function sorted by determinants contribution to the norm (state-averaged)

    +

    psi_det_sorted_order(i) -> k : index in psi_det

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +psi_energy_h_core
    +

    File : determinants/psi_energy_mono_elec.irp.f

    +
    double precision, allocatable   :: psi_energy_h_core    (N_states)
    +
    +
    +

    psi_energy_h_core = \(\langle \Psi | h_{core} |\Psi \rangle\)

    +

    computed using the one_e_dm_mo_alpha + +one_e_dm_mo_beta and mo_one_e_integrals

    +

    Needs:

    +
      +
    • elec_alpha_num
    • +
    • elec_beta_num
    • +
    +
    + +
    +
    + +
    +
    +psi_non_cas
    +

    File : determinants/psi_cas.irp.f

    +
    integer(bit_kind), allocatable  :: psi_non_cas  (N_int,2,psi_det_size)
    +double precision, allocatable   :: psi_non_cas_coef     (psi_det_size,n_states)
    +integer, allocatable    :: idx_non_cas  (psi_det_size)
    +integer :: n_det_non_cas
    +
    +
    +

    Set of determinants which are not part of the CAS, defined from the application +of the CAS bitmask on the determinants. +idx_non_cas gives the indice of the determinant in psi_det.

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +psi_non_cas_coef
    +

    File : determinants/psi_cas.irp.f

    +
    integer(bit_kind), allocatable  :: psi_non_cas  (N_int,2,psi_det_size)
    +double precision, allocatable   :: psi_non_cas_coef     (psi_det_size,n_states)
    +integer, allocatable    :: idx_non_cas  (psi_det_size)
    +integer :: n_det_non_cas
    +
    +
    +

    Set of determinants which are not part of the CAS, defined from the application +of the CAS bitmask on the determinants. +idx_non_cas gives the indice of the determinant in psi_det.

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +psi_non_cas_coef_sorted_bit
    +

    File : determinants/psi_cas.irp.f

    +
    integer(bit_kind), allocatable  :: psi_non_cas_sorted_bit       (N_int,2,psi_det_size)
    +double precision, allocatable   :: psi_non_cas_coef_sorted_bit  (psi_det_size,N_states)
    +
    +
    +

    CAS determinants sorted to accelerate the search of a random determinant in the wave +function.

    +

    Needs:

    +
    + + +
    +
    + +
    +
    +psi_non_cas_sorted_bit
    +

    File : determinants/psi_cas.irp.f

    +
    integer(bit_kind), allocatable  :: psi_non_cas_sorted_bit       (N_int,2,psi_det_size)
    +double precision, allocatable   :: psi_non_cas_coef_sorted_bit  (psi_det_size,N_states)
    +
    +
    +

    CAS determinants sorted to accelerate the search of a random determinant in the wave +function.

    +

    Needs:

    +
    + + +
    +
    + +
    +
    +psi_occ_pattern
    +

    File : determinants/occ_pattern.irp.f

    +
    integer(bit_kind), allocatable  :: psi_occ_pattern      (N_int,2,psi_det_size)
    +integer :: n_occ_pattern
    +
    +
    +

    Array of the occ_patterns present in the wave function.

    +

    psi_occ_pattern(:,1,j) = j-th occ_pattern of the wave function : represents all the single occupations

    +

    psi_occ_pattern(:,2,j) = j-th occ_pattern of the wave function : represents all the double occupations

    +

    The occ patterns are sorted by occ_pattern_search_key()

    +

    Needs:

    +
      +
    • elec_alpha_num
    • +
    • n_det
    • +
    +
    + +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +psi_occ_pattern_hii
    +

    File : determinants/occ_pattern.irp.f

    +
    double precision, allocatable   :: psi_occ_pattern_hii  (N_occ_pattern)
    +
    +
    +

    \(\langle I|H|I \rangle\) where \(|I\rangle\) is an occupation pattern. +This is the minimum \(H_{ii}\) , where the \(|i\rangle\) are the +determinants of \(|I\rangle\) .

    +

    Needs:

    +
    + + +
    +
    + +
    +
    +ref_bitmask_e_n_energy
    +

    File : determinants/ref_bitmask.irp.f

    +
    double precision        :: ref_bitmask_energy
    +double precision        :: ref_bitmask_one_e_energy
    +double precision        :: ref_bitmask_kinetic_energy
    +double precision        :: ref_bitmask_e_n_energy
    +double precision        :: ref_bitmask_two_e_energy
    +
    +
    +

    Energy of the reference bitmask used in Slater rules

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +ref_bitmask_energy
    +

    File : determinants/ref_bitmask.irp.f

    +
    double precision        :: ref_bitmask_energy
    +double precision        :: ref_bitmask_one_e_energy
    +double precision        :: ref_bitmask_kinetic_energy
    +double precision        :: ref_bitmask_e_n_energy
    +double precision        :: ref_bitmask_two_e_energy
    +
    +
    +

    Energy of the reference bitmask used in Slater rules

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +ref_bitmask_kinetic_energy
    +

    File : determinants/ref_bitmask.irp.f

    +
    double precision        :: ref_bitmask_energy
    +double precision        :: ref_bitmask_one_e_energy
    +double precision        :: ref_bitmask_kinetic_energy
    +double precision        :: ref_bitmask_e_n_energy
    +double precision        :: ref_bitmask_two_e_energy
    +
    +
    +

    Energy of the reference bitmask used in Slater rules

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +ref_bitmask_one_e_energy
    +

    File : determinants/ref_bitmask.irp.f

    +
    double precision        :: ref_bitmask_energy
    +double precision        :: ref_bitmask_one_e_energy
    +double precision        :: ref_bitmask_kinetic_energy
    +double precision        :: ref_bitmask_e_n_energy
    +double precision        :: ref_bitmask_two_e_energy
    +
    +
    +

    Energy of the reference bitmask used in Slater rules

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +ref_bitmask_two_e_energy
    +

    File : determinants/ref_bitmask.irp.f

    +
    double precision        :: ref_bitmask_energy
    +double precision        :: ref_bitmask_one_e_energy
    +double precision        :: ref_bitmask_kinetic_energy
    +double precision        :: ref_bitmask_e_n_energy
    +double precision        :: ref_bitmask_two_e_energy
    +
    +
    +

    Energy of the reference bitmask used in Slater rules

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +ref_closed_shell_bitmask
    +

    File : determinants/single_excitations.irp.f

    +
    integer(bit_kind), allocatable  :: ref_closed_shell_bitmask     (N_int,2)
    +
    +
    +

    Needs:

    +
      +
    • elec_alpha_num
    • +
    • elec_beta_num
    • +
    +
    + +
    +

    Needed by:

    +
    + +
      +
    +
    +
    + +
    +
    +s2_matrix_all_dets
    +

    File : determinants/utils.irp.f

    +
    double precision, allocatable   :: s2_matrix_all_dets   (N_det,N_det)
    +
    +
    +

    \(\widehat{S^2}\) matrix on the basis of the Slater determinants defined by psi_det

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +s2_values
    +

    File : determinants/s2.irp.f

    +
    double precision, allocatable   :: s2_values    (N_states)
    +
    +
    +

    array of the averaged values of the S^2 operator on the various states

    +

    Needs:

    +
    + + +
    +
    + +
    +
    +s_z
    +

    File : determinants/s2.irp.f

    +
    double precision        :: s_z
    +double precision        :: s_z2_sz
    +
    +
    +

    z component of the Spin

    +

    Needs:

    +
      +
    • elec_alpha_num
    • +
    +
      +
    • elec_beta_num
    • +
    +
      +
    +
    +

    Needed by:

    +
    + +
      +
    +
    +
    + +
    +
    +s_z2_sz
    +

    File : determinants/s2.irp.f

    +
    double precision        :: s_z
    +double precision        :: s_z2_sz
    +
    +
    +

    z component of the Spin

    +

    Needs:

    +
      +
    • elec_alpha_num
    • +
    +
      +
    • elec_beta_num
    • +
    +
      +
    +
    +

    Needed by:

    +
    + +
      +
    +
    +
    + +
    +
    +single_exc_bitmask
    +

    File : determinants/determinants_bitmasks.irp.f

    +
    integer(bit_kind), allocatable  :: single_exc_bitmask   (N_int,2,N_single_exc_bitmasks)
    +
    +
    +

    single_exc_bitmask(:,1,i) is the bitmask for holes

    +

    single_exc_bitmask(:,2,i) is the bitmask for particles

    +

    for a given couple of hole/particle excitations i.

    +

    Needs:

    +
    + + +
    +
    + +
    +
    +singles_alpha_csc
    +

    File : determinants/spindeterminants.irp.f

    +
    integer, allocatable    :: singles_alpha_csc    (singles_alpha_csc_size)
    +
    +
    +

    Indices of all single excitations

    +

    Needs:

    +
    + + +
    +
    + +
    +
    +singles_alpha_csc_idx
    +

    File : determinants/spindeterminants.irp.f

    +
    integer*8, allocatable  :: singles_alpha_csc_idx        (N_det_alpha_unique+1)
    +integer*8       :: singles_alpha_csc_size
    +
    +
    +

    singles_alpha_csc_size : Dimension of the singles_alpha_csc array

    +

    singles_alpha_csc_idx : Index where the single excitations of determinant i start

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +singles_alpha_csc_size
    +

    File : determinants/spindeterminants.irp.f

    +
    integer*8, allocatable  :: singles_alpha_csc_idx        (N_det_alpha_unique+1)
    +integer*8       :: singles_alpha_csc_size
    +
    +
    +

    singles_alpha_csc_size : Dimension of the singles_alpha_csc array

    +

    singles_alpha_csc_idx : Index where the single excitations of determinant i start

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +singles_beta_csc
    +

    File : determinants/spindeterminants.irp.f

    +
    integer, allocatable    :: singles_beta_csc     (singles_beta_csc_size)
    +
    +
    +

    Indices of all single excitations

    +

    Needs:

    +
    + + +
    +
    + +
    +
    +singles_beta_csc_idx
    +

    File : determinants/spindeterminants.irp.f

    +
    integer*8, allocatable  :: singles_beta_csc_idx (N_det_beta_unique+1)
    +integer*8       :: singles_beta_csc_size
    +
    +
    +

    singles_beta_csc_size : Dimension of the singles_beta_csc array

    +

    singles_beta_csc_idx : Index where the single excitations of determinant i start

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +singles_beta_csc_size
    +

    File : determinants/spindeterminants.irp.f

    +
    integer*8, allocatable  :: singles_beta_csc_idx (N_det_beta_unique+1)
    +integer*8       :: singles_beta_csc_size
    +
    +
    +

    singles_beta_csc_size : Dimension of the singles_beta_csc array

    +

    singles_beta_csc_idx : Index where the single excitations of determinant i start

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +state_average_weight
    +

    File : determinants/density_matrix.irp.f

    +
    double precision, allocatable   :: state_average_weight (N_states)
    +
    +
    +

    Weights in the state-average calculation of the density matrix

    +

    Needs:

    +
    +
      +
    • n_states
    • +
    +
      +
    • used_weight
    • +
    +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +weight_occ_pattern
    +

    File : determinants/occ_pattern.irp.f

    +
    double precision, allocatable   :: weight_occ_pattern   (N_occ_pattern,N_states)
    +
    +
    +

    Weight of the occupation patterns in the wave function

    +

    Needs:

    +
    + + +
    +
    + +
    +
    +

    Subroutines / functions

    +
    +
    +a_operator:()
    +

    File : determinants/slater_rules.irp.f

    +
    subroutine a_operator(iorb,ispin,key,hjj,Nint,na,nb)
    +
    +
    +

    Needed for diag_H_mat_elem().

    +

    Needs:

    +
    + +
      +
    +
    +

    Called by:

    +
      +
    • diag_h_mat_elem()
    • +
    +
      +
    +
      +
    +
    +

    Calls:

    +
      +
    • bitstring_to_list_ab()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +a_operator_two_e:()
    +

    File : determinants/slater_rules_wee_mono.irp.f

    +
    subroutine a_operator_two_e(iorb,ispin,key,hjj,Nint,na,nb)
    +
    +
    +

    Needed for diag_Wee_mat_elem().

    +

    Needs:

    +
    +
      +
    +
      +
    +
    +

    Called by:

    +
      +
    • diag_wee_mat_elem()
    • +
    +
      +
    +
      +
    +
    +

    Calls:

    +
      +
    • bitstring_to_list_ab()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +ac_operator:()
    +

    File : determinants/slater_rules.irp.f

    +
    subroutine ac_operator(iorb,ispin,key,hjj,Nint,na,nb)
    +
    +
    +

    Needed for diag_H_mat_elem().

    +

    Needs:

    +
    + +
      +
    +
    +

    Called by:

    +
      +
    • diag_h_mat_elem()
    • +
    +
      +
    +
      +
    +
    +

    Calls:

    +
      +
    • bitstring_to_list_ab()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +ac_operator_two_e:()
    +

    File : determinants/slater_rules_wee_mono.irp.f

    +
    subroutine ac_operator_two_e(iorb,ispin,key,hjj,Nint,na,nb)
    +
    +
    +

    Needed for diag_Wee_mat_elem().

    +

    Needs:

    +
    +
      +
    +
      +
    +
    +

    Called by:

    +
      +
    • diag_wee_mat_elem()
    • +
    +
      +
    +
      +
    +
    +

    Calls:

    +
      +
    • bitstring_to_list_ab()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +apply_excitation:()
    +

    File : determinants/determinants.irp.f

    +
    subroutine apply_excitation(det, exc, res, ok, Nint)
    +
    +
    +
    + +
    +
    +apply_hole:()
    +

    File : determinants/determinants.irp.f

    +
    subroutine apply_hole(det, s1, h1, res, ok, Nint)
    +
    +
    +

    Called by:

    +
      +
    • select_singles_and_doubles()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +apply_holes:()
    +

    File : determinants/determinants.irp.f

    +
    subroutine apply_holes(det, s1, h1, s2, h2, res, ok, Nint)
    +
    +
    +

    Called by:

    +
      +
    • fill_buffer_double()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +apply_particle:()
    +

    File : determinants/determinants.irp.f

    +
    subroutine apply_particle(det, s1, p1, res, ok, Nint)
    +
    +
    +
    + +
    +
    +apply_particles:()
    +

    File : determinants/determinants.irp.f

    +
    subroutine apply_particles(det, s1, p1, s2, p2, res, ok, Nint)
    +
    +
    +

    Called by:

    +
      +
    • fill_buffer_double()
    • +
    +
      +
    • get_d0()
    • +
    +
      +
    • get_d1()
    • +
    +
    +
    + +
    +
    +bitstring_to_list_ab:()
    +

    File : determinants/slater_rules.irp.f

    +
    subroutine bitstring_to_list_ab( string, list, n_elements, Nint)
    +
    +
    +

    Gives the inidices(+1) of the bits set to 1 in the bit string +For alpha/beta determinants.

    +

    Called by:

    +
      +
    • a_operator()
    • +
    • a_operator_two_e()
    • +
    • ac_operator()
    • +
    • ac_operator_two_e()
    • +
    • build_fock_tmp()
    • +
    • diag_h_mat_elem()
    • +
    • diag_h_mat_elem_one_e()
    • +
    +
    + +
    +
    + +
    +
    +build_fock_tmp:()
    +

    File : determinants/fock_diag.irp.f

    +
    subroutine build_fock_tmp(fock_diag_tmp,det_ref,Nint)
    +
    +
    +

    Build the diagonal of the Fock matrix corresponding to a generator +determinant. $F_{00}$ is $langle i|H|i rangle = E_0$.

    +

    Needs:

    +
    + + +
    +

    Called by:

    +
      +
    • select_connected()
    • +
    +
      +
    +
      +
    +
    +

    Calls:

    +
      +
    • bitstring_to_list_ab()
    • +
    +
      +
    • debug_det()
    • +
    +
      +
    +
    +
    + +
    +
    +connected_to_ref:()
    +

    File : determinants/connected_to_ref.irp.f

    +
    integer function connected_to_ref(key,keys,Nint,N_past_in,Ndet)
    +
    +
    +

    input : key : a given Slater determinant

    +
    +

    : keys: a list of Slater determinants

    +

    : Ndet: the number of Slater determinants in keys

    +

    : N_past_in the number of Slater determinants for the connectivity research

    +
    +

    output : 0 : key not connected to the N_past_in first Slater determinants in keys

    +
    +
    +
    i : key is connected to determinant i of keys
    +

    -i : key is the ith determinant of the reference wf keys

    +
    +
    + +
    +
    +connected_to_ref_by_mono:()
    +

    File : determinants/connected_to_ref.irp.f

    +
    integer function connected_to_ref_by_mono(key,keys,Nint,N_past_in,Ndet)
    +
    +
    +

    Returns true is key is connected to the reference by a single excitation. +input : key : a given Slater determinant

    +
    +

    : keys: a list of Slater determinants

    +

    : Ndet: the number of Slater determinants in keys

    +

    : N_past_in the number of Slater determinants for the connectivity research

    +
    +

    output : 0 : key not connected by a MONO EXCITATION to the N_past_in first Slater determinants in keys

    +
    +
    +
    i : key is connected by a MONO EXCITATION to determinant i of keys
    +

    -i : key is the ith determinant of the reference wf keys

    +
    +
    + +
    +
    +copy_h_apply_buffer_to_wf:()
    +

    File : determinants/h_apply.irp.f

    +
    subroutine copy_H_apply_buffer_to_wf
    +
    +
    +

    Copies the H_apply buffer to psi_coef. +After calling this subroutine, N_det, psi_det and psi_coef need to be touched

    +

    Needs:

    +
    + + +
    +

    Called by:

    +
      +
    • generate_all_alpha_beta_det_products()
    • +
    • make_s2_eigenfunction()
    • +
    +
      +
    • run_stochastic_cipsi()
    • +
    +
      +
    • zmq_selection()
    • +
    +
    +

    Calls:

    +
      +
    • normalize()
    • +
    +
      +
    • remove_duplicates_in_psi_det()
    • +
    +
      +
    +
    +

    Touches:

    +
    + + +
    +
    + +
    +
    +copy_psi_bilinear_to_psi:()
    +

    File : determinants/spindeterminants.irp.f

    +
    subroutine copy_psi_bilinear_to_psi(psi, isize)
    +
    +
    +

    Overwrites psi_det and psi_coef with the wave function +in bilinear order

    +

    Needs:

    +
    + + +
    +
    + +
    +
    +create_microlist:()
    +

    File : determinants/filter_connected.irp.f

    +
    subroutine create_microlist(minilist, N_minilist, key_mask, microlist, idx_microlist, N_microlist, ptr_microlist, Nint)
    +
    +
    +

    Needs:

    +
    +
      +
    +
      +
    +
    +

    Called by:

    +
      +
    • perturb_buffer_dummy()
    • +
    • perturb_buffer_epstein_nesbet()
    • +
    +
      +
    • perturb_buffer_epstein_nesbet_2x2()
    • +
    • perturb_buffer_epstein_nesbet_2x2_no_ci_diag()
    • +
    +
      +
    • perturb_buffer_moller_plesset()
    • +
    • perturb_buffer_qdpt()
    • +
    +
    +

    Calls:

    +
      +
    • bitstring_to_list()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +create_minilist:()
    +

    File : determinants/slater_rules.irp.f

    +
    subroutine create_minilist(key_mask, fullList, miniList, idx_miniList, N_fullList, N_miniList, Nint)
    +
    +
    +

    Called by:

    +
      +
    • perturb_buffer_by_mono_dummy()
    • +
    • perturb_buffer_by_mono_epstein_nesbet()
    • +
    • perturb_buffer_by_mono_epstein_nesbet_2x2()
    • +
    • perturb_buffer_by_mono_epstein_nesbet_2x2_no_ci_diag()
    • +
    +
      +
    • perturb_buffer_by_mono_moller_plesset()
    • +
    • perturb_buffer_by_mono_qdpt()
    • +
    • perturb_buffer_dummy()
    • +
    • perturb_buffer_epstein_nesbet()
    • +
    +
      +
    • perturb_buffer_epstein_nesbet_2x2()
    • +
    • perturb_buffer_epstein_nesbet_2x2_no_ci_diag()
    • +
    • perturb_buffer_moller_plesset()
    • +
    • perturb_buffer_qdpt()
    • +
    +
    +
    + +
    +
    +create_minilist_find_previous:()
    +

    File : determinants/slater_rules.irp.f

    +
    subroutine create_minilist_find_previous(key_mask, fullList, miniList, N_fullList, N_miniList, fullMatch, Nint)
    +
    +
    +

    Called by:

    +
      +
    • perturb_buffer_by_mono_dummy()
    • +
    • perturb_buffer_by_mono_epstein_nesbet()
    • +
    • perturb_buffer_by_mono_epstein_nesbet_2x2()
    • +
    • perturb_buffer_by_mono_epstein_nesbet_2x2_no_ci_diag()
    • +
    +
      +
    • perturb_buffer_by_mono_moller_plesset()
    • +
    • perturb_buffer_by_mono_qdpt()
    • +
    • perturb_buffer_dummy()
    • +
    • perturb_buffer_epstein_nesbet()
    • +
    +
      +
    • perturb_buffer_epstein_nesbet_2x2()
    • +
    • perturb_buffer_epstein_nesbet_2x2_no_ci_diag()
    • +
    • perturb_buffer_moller_plesset()
    • +
    • perturb_buffer_qdpt()
    • +
    +
    +
    + +
    +
    +create_wf_of_psi_bilinear_matrix:()
    +

    File : determinants/spindeterminants.irp.f

    +
    subroutine create_wf_of_psi_bilinear_matrix(truncate)
    +
    +
    +

    Generates a wave function containing all possible products +of $alpha$ and $beta$ determinants

    +

    Needs:

    +
    + + +
    +

    Calls:

    +
      +
    • generate_all_alpha_beta_det_products()
    • +
    +
      +
    +
      +
    +
    +

    Touches:

    +
    + + +
    +
    + +
    +
    +decode_exc:()
    +

    File : determinants/slater_rules.irp.f

    +
    subroutine decode_exc(exc,degree,h1,p1,h2,p2,s1,s2)
    +
    +
    +

    Decodes the exc arrays returned by get_excitation. +h1,h2 : Holes +p1,p2 : Particles +s1,s2 : Spins (1:alpha, 2:beta) +degree : Degree of excitation

    +

    Called by:

    +
      +
    • diag_h_mat_elem_fock()
    • +
    +
      +
    • example_determinants()
    • +
    +
      +
    • pt2_moller_plesset()
    • +
    +
    +
    + +
    +
    +decode_exc_spin:()
    +

    File : determinants/slater_rules.irp.f

    +
    subroutine decode_exc_spin(exc,h1,p1,h2,p2)
    +
    +
    +

    Decodes the exc arrays returned by get_excitation.

    +

    h1,h2 : Holes

    +

    p1,p2 : Particles

    +

    Called by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +det_inf:()
    +

    File : determinants/sort_dets_ab.irp.f

    +
    logical function det_inf(key1, key2, Nint)
    +
    +
    +

    Ordering function for determinants.

    +
    + +
    +
    +det_search_key:()
    +

    File : determinants/connected_to_ref.irp.f

    +
    integer*8 function det_search_key(det,Nint)
    +
    +
    +

    Return an integer*8 corresponding to a determinant index for searching

    +

    Needs:

    +
      +
    • elec_alpha_num
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +detcmp:()
    +

    File : determinants/determinants.irp.f

    +
    integer function detCmp(a,b,Nint)
    +
    +
    +
    + +
    +
    +deteq:()
    +

    File : determinants/determinants.irp.f

    +
    logical function detEq(a,b,Nint)
    +
    +
    +
    + +
    +
    +diag_h_mat_elem:()
    +

    File : determinants/slater_rules.irp.f

    +
    double precision function diag_H_mat_elem(det_in,Nint)
    +
    +
    +

    Computes $langle i|H|i rangle$.

    +

    Needs:

    +
    + + +
    +

    Calls:

    +
      +
    • a_operator()
    • +
    +
      +
    • ac_operator()
    • +
    +
      +
    • bitstring_to_list_ab()
    • +
    +
    +
    + +
    +
    +diag_h_mat_elem_fock:()
    +

    File : determinants/slater_rules.irp.f

    +
    double precision function diag_H_mat_elem_fock(det_ref,det_pert,fock_diag_tmp,Nint)
    +
    +
    +

    Computes $langle i|H|i rangle$ when $i$ is at most a double excitation from +a reference.

    +

    Needs:

    +
    + +
      +
    +
    +

    Calls:

    +
      +
    • decode_exc()
    • +
    • get_double_excitation()
    • +
    +
      +
    • get_excitation_degree()
    • +
    +
      +
    • get_mono_excitation()
    • +
    +
    +
    + +
    +
    +diag_h_mat_elem_one_e:()
    +

    File : determinants/slater_rules_wee_mono.irp.f

    +
    double precision function diag_H_mat_elem_one_e(det_in,Nint)
    +
    +
    +

    Computes $langle i|H|i rangle$.

    +

    Needs:

    +
    +
      +
    +
      +
    +
    +

    Calls:

    +
      +
    • bitstring_to_list_ab()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +diag_s_mat_elem:()
    +

    File : determinants/s2.irp.f

    +
    double precision function diag_S_mat_elem(key_i,Nint)
    +
    +
    +

    Returns <i|S^2|i>

    +
    + +
    +
    +diag_wee_mat_elem:()
    +

    File : determinants/slater_rules_wee_mono.irp.f

    +
    double precision function diag_wee_mat_elem(det_in,Nint)
    +
    +
    +

    Computes $langle i|H|i rangle$.

    +

    Needs:

    +
    + + +
    +

    Calls:

    +
      +
    • a_operator_two_e()
    • +
    +
      +
    • ac_operator_two_e()
    • +
    +
      +
    • bitstring_to_list_ab()
    • +
    +
    +
    + +
    +
    +do_mono_excitation:()
    +

    File : determinants/create_excitations.irp.f

    +
    subroutine do_mono_excitation(key_in,i_hole,i_particle,ispin,i_ok)
    +
    +
    +

    Apply the single excitation operator : a^{dager}_(i_particle) a_(i_hole) of spin = ispin +on key_in +ispin = 1 == alpha +ispin = 2 == beta +i_ok = 1 == the excitation is possible +i_ok = -1 == the excitation is not possible

    +

    Needs:

    +
    + +
      +
    +
    +

    Called by:

    +
      +
    • example_determinants()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +example_determinants:()
    +

    File : determinants/example.irp.f

    +
    subroutine example_determinants
    +
    +
    +

    subroutine that illustrates the main features available in determinants

    +

    Needs:

    +
    +
      +
    • elec_alpha_num
    • +
    +
    +
    +

    Calls:

    +
      +
    • bitstring_to_list_ab()
    • +
    • debug_det()
    • +
    • decode_exc()
    • +
    +
      +
    • do_mono_excitation()
    • +
    • get_excitation()
    • +
    • get_excitation_degree()
    • +
    +
      +
    • i_h_j()
    • +
    • print_det()
    • +
    +
    +
    + +
    +
    +example_determinants_psi_det:()
    +

    File : determinants/example.irp.f

    +
    subroutine example_determinants_psi_det
    +
    +
    +

    subroutine that illustrates the main features available in determinants using the psi_det/psi_coef

    +

    Needs:

    +
      +
    • read_wf
    • +
    +
      +
    +
      +
    +
    +

    Calls:

    +
      +
    • routine_example_psi_det()
    • +
    +
      +
    +
      +
    +
    +

    Touches:

    +
      +
    • read_wf
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +fill_h_apply_buffer_no_selection:()
    +

    File : determinants/h_apply.irp.f

    +
    subroutine fill_H_apply_buffer_no_selection(n_selected,det_buffer,Nint,iproc)
    +
    +
    +

    Fill the H_apply buffer with determiants for CISD

    +

    Needs:

    +
    + + +
    +

    Called by:

    +
      +
    • generate_all_alpha_beta_det_products()
    • +
    • make_s2_eigenfunction()
    • +
    +
      +
    • zmq_pt2()
    • +
    +
      +
    • zmq_selection()
    • +
    +
    +

    Calls:

    +
      +
    • omp_set_lock()
    • +
    +
      +
    • omp_unset_lock()
    • +
    +
      +
    • resize_h_apply_buffer()
    • +
    +
    +
    + +
    +
    +filter_connected:()
    +

    File : determinants/filter_connected.irp.f

    +
    subroutine filter_connected(key1,key2,Nint,sze,idx)
    +
    +
    +

    Filters out the determinants that are not connected by H

    +

    returns the array idx which contains the index of the

    +

    determinants in the array key1 that interact

    +

    via the H operator with key2.

    +

    idx(0) is the number of determinants that interact with key1

    +

    Called by:

    +
      +
    • get_uj_s2_ui()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +filter_connected_i_h_psi0:()
    +

    File : determinants/filter_connected.irp.f

    +
    subroutine filter_connected_i_H_psi0(key1,key2,Nint,sze,idx)
    +
    +
    +

    Returns the array idx which contains the index of the

    +

    determinants in the array key1 that interact

    +

    via the H operator with key2.

    +

    idx(0) is the number of determinants that interact with key1

    +

    Called by:

    +
      +
    • i_h_psi()
    • +
    +
      +
    • i_h_psi_minilist()
    • +
    +
      +
    • i_s2_psi_minilist()
    • +
    +
    +
    + +
    +
    +filter_not_connected:()
    +

    File : determinants/filter_connected.irp.f

    +
    subroutine filter_not_connected(key1,key2,Nint,sze,idx)
    +
    +
    +

    Returns the array idx which contains the index of the

    +

    determinants in the array key1 that DO NOT interact

    +

    via the H operator with key2.

    +

    idx(0) is the number of determinants that DO NOT interact with key1

    +
    + +
    +
    +generate_all_alpha_beta_det_products:()
    +

    File : determinants/spindeterminants.irp.f

    +
    subroutine generate_all_alpha_beta_det_products
    +
    +
    +

    Creates a wave function from all possible $alpha times beta$ determinants

    +

    Needs:

    +
    + + +
    +

    Called by:

    +
      +
    • create_wf_of_psi_bilinear_matrix()
    • +
    +
      +
    +
      +
    +
    +

    Calls:

    +
      +
    • copy_h_apply_buffer_to_wf()
    • +
    +
      +
    • fill_h_apply_buffer_no_selection()
    • +
    +
      +
    +
    +

    Touches:

    +
    + + +
    +
    + +
    +
    +get_all_spin_doubles:()
    +

    File : determinants/spindeterminants.irp.f

    +
    subroutine get_all_spin_doubles(buffer, idx, spindet, Nint, size_buffer, doubles, n_doubles)
    +
    +
    +

    Returns the indices of all the double excitations in the list of +unique $alpha$ determinants.

    +

    Needs:

    +
    +
      +
    +
      +
    +
    +

    Calls:

    +
      +
    • get_all_spin_doubles_1()
    • +
    • get_all_spin_doubles_2()
    • +
    +
      +
    • get_all_spin_doubles_3()
    • +
    • get_all_spin_doubles_4()
    • +
    +
      +
    • get_all_spin_doubles_n_int()
    • +
    +
    +
    + +
    +
    +get_all_spin_doubles_1:()
    +

    File : determinants/spindeterminants.irp.f

    +
    subroutine get_all_spin_doubles_1(buffer, idx, spindet, size_buffer, doubles, n_doubles)
    +
    +
    +

    Returns the indices of all the double excitations in the list of +unique $alpha$ determinants.

    +

    Called by:

    +
      +
    • get_all_spin_doubles()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +get_all_spin_doubles_2:()
    +

    File : determinants/spindeterminants.irp.f_template_1291

    +
    subroutine get_all_spin_doubles_2(buffer, idx, spindet, size_buffer, doubles, n_doubles)
    +
    +
    +

    Returns the indices of all the double excitations in the list of +unique $lpha$ determinants.

    +

    Called by:

    +
      +
    • get_all_spin_doubles()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +get_all_spin_doubles_3:()
    +

    File : determinants/spindeterminants.irp.f_template_1291

    +
    subroutine get_all_spin_doubles_3(buffer, idx, spindet, size_buffer, doubles, n_doubles)
    +
    +
    +

    Returns the indices of all the double excitations in the list of +unique $lpha$ determinants.

    +

    Called by:

    +
      +
    • get_all_spin_doubles()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +get_all_spin_doubles_4:()
    +

    File : determinants/spindeterminants.irp.f_template_1291

    +
    subroutine get_all_spin_doubles_4(buffer, idx, spindet, size_buffer, doubles, n_doubles)
    +
    +
    +

    Returns the indices of all the double excitations in the list of +unique $lpha$ determinants.

    +

    Called by:

    +
      +
    • get_all_spin_doubles()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +get_all_spin_doubles_n_int:()
    +

    File : determinants/spindeterminants.irp.f_template_1291

    +
    subroutine get_all_spin_doubles_N_int(buffer, idx, spindet, size_buffer, doubles, n_doubles)
    +
    +
    +

    Returns the indices of all the double excitations in the list of +unique $lpha$ determinants.

    +

    Needs:

    +
    +
      +
    +
      +
    +
    +

    Called by:

    +
      +
    • get_all_spin_doubles()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +get_all_spin_singles:()
    +

    File : determinants/spindeterminants.irp.f

    +
    subroutine get_all_spin_singles(buffer, idx, spindet, Nint, size_buffer, singles, n_singles)
    +
    +
    +

    Returns the indices of all the single excitations in the list of +unique $alpha$ determinants.

    +

    Needs:

    +
    +
      +
    +
      +
    +
    +

    Called by:

    +
    + + +
    +

    Calls:

    +
      +
    • get_all_spin_singles_1()
    • +
    • get_all_spin_singles_2()
    • +
    +
      +
    • get_all_spin_singles_3()
    • +
    • get_all_spin_singles_4()
    • +
    +
      +
    • get_all_spin_singles_n_int()
    • +
    +
    +
    + +
    +
    +get_all_spin_singles_1:()
    +

    File : determinants/spindeterminants.irp.f

    +
    subroutine get_all_spin_singles_1(buffer, idx, spindet, size_buffer, singles, n_singles)
    +
    +
    +

    Returns the indices of all the single excitations in the list of +unique $alpha$ determinants.

    +

    Called by:

    +
      +
    • get_all_spin_singles()
    • +
    +
      +
    • h_s2_u_0_nstates_openmp_work_1()
    • +
    +
      +
    • h_s2_u_0_two_e_nstates_openmp_work_1()
    • +
    +
    +
    + +
    +
    +get_all_spin_singles_2:()
    +

    File : determinants/spindeterminants.irp.f_template_1291

    +
    subroutine get_all_spin_singles_2(buffer, idx, spindet, size_buffer, singles, n_singles)
    +
    +
    +

    Returns the indices of all the single excitations in the list of +unique $lpha$ determinants.

    +

    Called by:

    +
      +
    • get_all_spin_singles()
    • +
    +
      +
    • h_s2_u_0_nstates_openmp_work_2()
    • +
    +
      +
    • h_s2_u_0_two_e_nstates_openmp_work_2()
    • +
    +
    +
    + +
    +
    +get_all_spin_singles_3:()
    +

    File : determinants/spindeterminants.irp.f_template_1291

    +
    subroutine get_all_spin_singles_3(buffer, idx, spindet, size_buffer, singles, n_singles)
    +
    +
    +

    Returns the indices of all the single excitations in the list of +unique $lpha$ determinants.

    +

    Called by:

    +
      +
    • get_all_spin_singles()
    • +
    +
      +
    • h_s2_u_0_nstates_openmp_work_3()
    • +
    +
      +
    • h_s2_u_0_two_e_nstates_openmp_work_3()
    • +
    +
    +
    + +
    +
    +get_all_spin_singles_4:()
    +

    File : determinants/spindeterminants.irp.f_template_1291

    +
    subroutine get_all_spin_singles_4(buffer, idx, spindet, size_buffer, singles, n_singles)
    +
    +
    +

    Returns the indices of all the single excitations in the list of +unique $lpha$ determinants.

    +

    Called by:

    +
      +
    • get_all_spin_singles()
    • +
    +
      +
    • h_s2_u_0_nstates_openmp_work_4()
    • +
    +
      +
    • h_s2_u_0_two_e_nstates_openmp_work_4()
    • +
    +
    +
    + +
    +
    +get_all_spin_singles_and_doubles:()
    +

    File : determinants/spindeterminants.irp.f

    +
    subroutine get_all_spin_singles_and_doubles(buffer, idx, spindet, Nint, size_buffer, singles, doubles, n_singles, n_doubles)
    +
    +
    +

    Returns the indices of all the single and double excitations in the list of +unique $alpha$ determinants.

    +

    Warning: The buffer is transposed.

    +

    Calls:

    +
      +
    • get_all_spin_singles_and_doubles_1()
    • +
    • get_all_spin_singles_and_doubles_2()
    • +
    +
      +
    • get_all_spin_singles_and_doubles_3()
    • +
    • get_all_spin_singles_and_doubles_4()
    • +
    +
      +
    • get_all_spin_singles_and_doubles_n_int()
    • +
    +
    +
    + +
    +
    +get_all_spin_singles_and_doubles_1:()
    +

    File : determinants/spindeterminants.irp.f

    +
    subroutine get_all_spin_singles_and_doubles_1(buffer, idx, spindet, size_buffer, singles, doubles, n_singles, n_doubles)
    +
    +
    +

    Returns the indices of all the single and double excitations in the list of +unique $alpha$ determinants.

    +

    /!: The buffer is transposed !

    +

    Called by:

    +
      +
    • get_all_spin_singles_and_doubles()
    • +
    +
      +
    • h_s2_u_0_nstates_openmp_work_1()
    • +
    +
      +
    • h_s2_u_0_two_e_nstates_openmp_work_1()
    • +
    +
    +
    + +
    +
    +get_all_spin_singles_and_doubles_2:()
    +

    File : determinants/spindeterminants.irp.f_template_1291

    +
    subroutine get_all_spin_singles_and_doubles_2(buffer, idx, spindet, size_buffer, singles, doubles, n_singles, n_doubles)
    +
    +
    +

    Returns the indices of all the single and double excitations in the list of +unique $lpha$ determinants.

    +

    /!: The buffer is transposed !

    +

    Called by:

    +
      +
    • get_all_spin_singles_and_doubles()
    • +
    +
      +
    • h_s2_u_0_nstates_openmp_work_2()
    • +
    +
      +
    • h_s2_u_0_two_e_nstates_openmp_work_2()
    • +
    +
    +
    + +
    +
    +get_all_spin_singles_and_doubles_3:()
    +

    File : determinants/spindeterminants.irp.f_template_1291

    +
    subroutine get_all_spin_singles_and_doubles_3(buffer, idx, spindet, size_buffer, singles, doubles, n_singles, n_doubles)
    +
    +
    +

    Returns the indices of all the single and double excitations in the list of +unique $lpha$ determinants.

    +

    /!: The buffer is transposed !

    +

    Called by:

    +
      +
    • get_all_spin_singles_and_doubles()
    • +
    +
      +
    • h_s2_u_0_nstates_openmp_work_3()
    • +
    +
      +
    • h_s2_u_0_two_e_nstates_openmp_work_3()
    • +
    +
    +
    + +
    +
    +get_all_spin_singles_and_doubles_4:()
    +

    File : determinants/spindeterminants.irp.f_template_1291

    +
    subroutine get_all_spin_singles_and_doubles_4(buffer, idx, spindet, size_buffer, singles, doubles, n_singles, n_doubles)
    +
    +
    +

    Returns the indices of all the single and double excitations in the list of +unique $lpha$ determinants.

    +

    /!: The buffer is transposed !

    +

    Called by:

    +
      +
    • get_all_spin_singles_and_doubles()
    • +
    +
      +
    • h_s2_u_0_nstates_openmp_work_4()
    • +
    +
      +
    • h_s2_u_0_two_e_nstates_openmp_work_4()
    • +
    +
    +
    + +
    +
    +get_all_spin_singles_and_doubles_n_int:()
    +

    File : determinants/spindeterminants.irp.f_template_1291

    +
    subroutine get_all_spin_singles_and_doubles_N_int(buffer, idx, spindet, size_buffer, singles, doubles, n_singles, n_doubles)
    +
    +
    +

    Returns the indices of all the single and double excitations in the list of +unique $lpha$ determinants.

    +

    /!: The buffer is transposed !

    +

    Needs:

    +
    +
      +
    +
      +
    +
    +

    Called by:

    +
      +
    • get_all_spin_singles_and_doubles()
    • +
    +
      +
    • h_s2_u_0_nstates_openmp_work_n_int()
    • +
    +
      +
    • h_s2_u_0_two_e_nstates_openmp_work_n_int()
    • +
    +
    +
    + +
    +
    +get_all_spin_singles_n_int:()
    +

    File : determinants/spindeterminants.irp.f_template_1291

    +
    subroutine get_all_spin_singles_N_int(buffer, idx, spindet, size_buffer, singles, n_singles)
    +
    +
    +

    Returns the indices of all the single excitations in the list of +unique $lpha$ determinants.

    +

    Needs:

    +
    +
      +
    +
      +
    +
    +

    Called by:

    +
      +
    • get_all_spin_singles()
    • +
    +
      +
    • h_s2_u_0_nstates_openmp_work_n_int()
    • +
    +
      +
    • h_s2_u_0_two_e_nstates_openmp_work_n_int()
    • +
    +
    +
    + +
    +
    +get_double_excitation:()
    +

    File : determinants/slater_rules.irp.f

    +
    subroutine get_double_excitation(det1,det2,exc,phase,Nint)
    +
    +
    +

    Returns the two excitation operators between two doubly excited determinants and the phase.

    +

    Called by:

    +
      +
    • diag_h_mat_elem_fock()
    • +
    • get_excitation()
    • +
    • get_s2()
    • +
    +
      +
    • i_h_j()
    • +
    • i_h_j_s2()
    • +
    +
      +
    • i_h_j_two_e()
    • +
    • i_h_j_verbose()
    • +
    +
    +
    + +
    +
    +get_double_excitation_spin:()
    +

    File : determinants/slater_rules.irp.f

    +
    subroutine get_double_excitation_spin(det1,det2,exc,phase,Nint)
    +
    +
    +

    Returns the two excitation operators between two doubly excited spin-determinants +and the phase.

    +

    Called by:

    +
      +
    • get_excitation_spin()
    • +
    +
      +
    • i_h_j_double_spin()
    • +
    +
      +
    +
    +
    + +
    +
    +get_excitation:()
    +

    File : determinants/slater_rules.irp.f

    +
    subroutine get_excitation(det1,det2,exc,degree,phase,Nint)
    +
    +
    +

    Returns the excitation operators between two determinants and the phase.

    +

    Called by:

    +
      +
    • example_determinants()
    • +
    +
      +
    • get_phase()
    • +
    +
      +
    • pt2_moller_plesset()
    • +
    +
    +

    Calls:

    +
      +
    • get_double_excitation()
    • +
    +
      +
    • get_excitation_degree()
    • +
    +
      +
    • get_mono_excitation()
    • +
    +
    +
    + +
    +
    +get_excitation_degree:()
    +

    File : determinants/slater_rules.irp.f

    +
    subroutine get_excitation_degree(key1,key2,degree,Nint)
    +
    +
    +

    Returns the excitation degree between two determinants.

    +

    Called by:

    +
    +
      +
    • get_s2()
    • +
    • i_h_j()
    • +
    • i_h_j_one_e()
    • +
    • i_h_j_s2()
    • +
    • i_h_j_two_e()
    • +
    +
    +
    +
    + +
    +
    +get_excitation_degree_spin:()
    +

    File : determinants/slater_rules.irp.f

    +
    subroutine get_excitation_degree_spin(key1,key2,degree,Nint)
    +
    +
    +

    Returns the excitation degree between two determinants.

    +

    Called by:

    +
      +
    • get_excitation_spin()
    • +
    +
    +
      +
    • select_singles_and_doubles()
    • +
    +
    +
    + +
    +
    +get_excitation_degree_vector:()
    +

    File : determinants/slater_rules.irp.f

    +
    subroutine get_excitation_degree_vector(key1,key2,degree,Nint,sze,idx)
    +
    +
    +

    Applies get_excitation_degree to an array of determinants.

    +

    Called by:

    +
      +
    • routine_example_psi_det()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +get_excitation_degree_vector_double_alpha_beta:()
    +

    File : determinants/slater_rules.irp.f

    +
    subroutine get_excitation_degree_vector_double_alpha_beta(key1,key2,degree,Nint,sze,idx)
    +
    +
    +

    Applies get_excitation_degree to an array of determinants and return only the +single excitations and the connections through exchange integrals.

    +
    + +
    +
    +get_excitation_degree_vector_mono:()
    +

    File : determinants/slater_rules.irp.f

    +
    subroutine get_excitation_degree_vector_mono(key1,key2,degree,Nint,sze,idx)
    +
    +
    +

    Applies get_excitation_degree to an array of determinants and returns only +the single excitations.

    +
    + +
    +
    +get_excitation_degree_vector_mono_or_exchange:()
    +

    File : determinants/slater_rules.irp.f

    +
    subroutine get_excitation_degree_vector_mono_or_exchange(key1,key2,degree,Nint,sze,idx)
    +
    +
    +

    Applies get_excitation_degree to an array of determinants and return only the +single excitations and the connections through exchange integrals.

    +
    + +
    +
    +get_excitation_degree_vector_mono_or_exchange_verbose:()
    +

    File : determinants/slater_rules.irp.f

    +
    subroutine get_excitation_degree_vector_mono_or_exchange_verbose(key1,key2,degree,Nint,sze,idx)
    +
    +
    +

    Applies get_excitation_degree to an array of determinants and return only the single +excitations and the connections through exchange integrals.

    +

    Needs:

    +
    +
      +
    +
      +
    +
    +

    Calls:

    +
      +
    • debug_det()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +get_excitation_spin:()
    +

    File : determinants/slater_rules.irp.f

    +
    subroutine get_excitation_spin(det1,det2,exc,degree,phase,Nint)
    +
    +
    +

    Returns the excitation operators between two determinants and the phase.

    +

    Calls:

    +
      +
    • get_double_excitation_spin()
    • +
    +
      +
    • get_excitation_degree_spin()
    • +
    +
      +
    • get_mono_excitation_spin()
    • +
    +
    +
    + +
    +
    +get_index_in_psi_det_alpha_unique:()
    +

    File : determinants/spindeterminants.irp.f

    +
    integer function get_index_in_psi_det_alpha_unique(key,Nint)
    +
    +
    +

    Returns the index of the determinant in the psi_det_alpha_unique array

    +

    Needs:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +get_index_in_psi_det_beta_unique:()
    +

    File : determinants/spindeterminants.irp.f

    +
    integer function get_index_in_psi_det_beta_unique(key,Nint)
    +
    +
    +

    Returns the index of the determinant in the psi_det_beta_unique array

    +

    Needs:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +get_index_in_psi_det_sorted_bit:()
    +

    File : determinants/connected_to_ref.irp.f

    +
    integer function get_index_in_psi_det_sorted_bit(key,Nint)
    +
    +
    +

    Returns the index of the determinant in the psi_det_sorted_bit array

    +

    Needs:

    +
    + +
      +
    +
    +
    + +
    +
    +get_mono_excitation:()
    +

    File : determinants/slater_rules.irp.f

    +
    subroutine get_mono_excitation(det1,det2,exc,phase,Nint)
    +
    +
    +

    Returns the excitation operator between two singly excited determinants and the phase.

    +

    Called by:

    +
      +
    • diag_h_mat_elem_fock()
    • +
    • get_excitation()
    • +
    • i_h_j()
    • +
    +
      +
    • i_h_j_one_e()
    • +
    • i_h_j_s2()
    • +
    +
      +
    • i_h_j_two_e()
    • +
    • i_h_j_verbose()
    • +
    +
    +
    + +
    +
    +get_mono_excitation_from_fock:()
    +

    File : determinants/single_excitations.irp.f

    +
    subroutine get_mono_excitation_from_fock(det_1,det_2,h,p,spin,phase,hij)
    +
    +
    +

    Needs:

    +
    + + +
    +

    Called by:

    +
      +
    • i_h_j()
    • +
    +
      +
    • i_h_j_mono_spin()
    • +
    +
      +
    • i_h_j_s2()
    • +
    +
    +

    Calls:

    +
      +
    • bitstring_to_list_ab()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +get_mono_excitation_spin:()
    +

    File : determinants/slater_rules.irp.f

    +
    subroutine get_mono_excitation_spin(det1,det2,exc,phase,Nint)
    +
    +
    +

    Returns the excitation operator between two singly excited determinants and the phase.

    +

    Called by:

    +
      +
    • get_excitation_spin()
    • +
    • i_h_j_double_alpha_beta()
    • +
    +
      +
    • i_h_j_mono_spin()
    • +
    • i_h_j_mono_spin_one_e()
    • +
    +
    +
    +
    + +
    +
    +get_occupation_from_dets:()
    +

    File : determinants/density_matrix.irp.f

    +
    subroutine get_occupation_from_dets(istate,occupation)
    +
    +
    +

    Returns the average occupation of the MOs

    +

    Needs:

    +
    + + +
    +

    Calls:

    +
      +
    • bitstring_to_list_ab()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +get_phase:()
    +

    File : determinants/slater_rules.irp.f

    +
    subroutine get_phase(key1,key2,phase,Nint)
    +
    +
    +

    Returns the phase between key1 and key2.

    +

    Calls:

    +
      +
    • get_excitation()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +get_phasemask_bit:()
    +

    File : determinants/slater_rules.irp.f

    +
    subroutine get_phasemask_bit(det1, pm, Nint)
    +
    +
    +
    + +
    +
    +get_s2:()
    +

    File : determinants/s2.irp.f

    +
    subroutine get_s2(key_i,key_j,Nint,s2)
    +
    +
    +

    Returns <S^2>

    +

    Called by:

    +
      +
    • get_uj_s2_ui()
    • +
    • h_s2_u_0_nstates_openmp_work_1()
    • +
    • h_s2_u_0_nstates_openmp_work_2()
    • +
    • h_s2_u_0_nstates_openmp_work_3()
    • +
    • h_s2_u_0_nstates_openmp_work_4()
    • +
    +
      +
    • h_s2_u_0_nstates_openmp_work_n_int()
    • +
    • h_s2_u_0_two_e_nstates_openmp_work_1()
    • +
    • h_s2_u_0_two_e_nstates_openmp_work_2()
    • +
    • h_s2_u_0_two_e_nstates_openmp_work_3()
    • +
    • h_s2_u_0_two_e_nstates_openmp_work_4()
    • +
    +
      +
    • h_s2_u_0_two_e_nstates_openmp_work_n_int()
    • +
    • i_s2_psi_minilist()
    • +
    • s2_matrix_all_dets
    • +
    • s2_u_0_nstates()
    • +
    +
    +

    Calls:

    +
      +
    • get_double_excitation()
    • +
    +
      +
    • get_excitation_degree()
    • +
    +
      +
    +
    +
    + +
    +
    +get_uj_s2_ui:()
    +

    File : determinants/s2.irp.f

    +
    subroutine get_uJ_s2_uI(psi_keys_tmp,psi_coefs_tmp,n,nmax_coefs,nmax_keys,s2,nstates)
    +
    +
    +

    returns the matrix elements of S^2 “s2(i,j)” between the “nstates” states +psi_coefs_tmp(:,i) and psi_coefs_tmp(:,j)

    +

    Needs:

    +
    +
      +
    +
      +
    +
    +

    Calls:

    +
      +
    • filter_connected()
    • +
    +
      +
    • get_s2()
    • +
    +
      +
    +
    +
    + +
    +
    +getmobiles:()
    +

    File : determinants/filter_connected.irp.f

    +
    subroutine getMobiles(key,key_mask, mobiles,Nint)
    +
    +
    +

    Needs:

    +
    +
      +
    +
      +
    +
    +

    Called by:

    +
      +
    • perturb_buffer_dummy()
    • +
    • perturb_buffer_epstein_nesbet()
    • +
    +
      +
    • perturb_buffer_epstein_nesbet_2x2()
    • +
    • perturb_buffer_epstein_nesbet_2x2_no_ci_diag()
    • +
    +
      +
    • perturb_buffer_moller_plesset()
    • +
    • perturb_buffer_qdpt()
    • +
    +
    +

    Calls:

    +
      +
    • bitstring_to_list()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +i_h_j:()
    +

    File : determinants/slater_rules.irp.f

    +
    subroutine i_H_j(key_i,key_j,Nint,hij)
    +
    +
    +

    Returns $langle i|H|j rangle$ where $i$ and $j$ are determinants.

    +

    Needs:

    +
    + + +
    +

    Called by:

    +
    + +
      +
    • i_h_psi_minilist()
    • +
    • pt2_qdpt()
    • +
    • routine_example_psi_det()
    • +
    +
    +

    Calls:

    +
      +
    • bitstring_to_list_ab()
    • +
    • get_double_excitation()
    • +
    +
      +
    • get_excitation_degree()
    • +
    • get_mono_excitation()
    • +
    +
      +
    • get_mono_excitation_from_fock()
    • +
    +
    +
    + +
    +
    +i_h_j_double_alpha_beta:()
    +

    File : determinants/slater_rules.irp.f

    +
    subroutine i_H_j_double_alpha_beta(key_i,key_j,Nint,hij)
    +
    +
    +

    Returns $langle i|H|j rangle$ where $i$ and $j$ are determinants differing by +an opposite-spin double excitation.

    +

    Needs:

    +
    + + +
    +

    Called by:

    +
      +
    • h_s2_u_0_nstates_openmp_work_1()
    • +
    • h_s2_u_0_nstates_openmp_work_2()
    • +
    • h_s2_u_0_nstates_openmp_work_3()
    • +
    • h_s2_u_0_nstates_openmp_work_4()
    • +
    +
      +
    • h_s2_u_0_nstates_openmp_work_n_int()
    • +
    • h_s2_u_0_two_e_nstates_openmp_work_1()
    • +
    • h_s2_u_0_two_e_nstates_openmp_work_2()
    • +
    +
      +
    • h_s2_u_0_two_e_nstates_openmp_work_3()
    • +
    • h_s2_u_0_two_e_nstates_openmp_work_4()
    • +
    • h_s2_u_0_two_e_nstates_openmp_work_n_int()
    • +
    +
    +

    Calls:

    +
      +
    • get_mono_excitation_spin()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +i_h_j_double_spin:()
    +

    File : determinants/slater_rules.irp.f

    +
    subroutine i_H_j_double_spin(key_i,key_j,Nint,hij)
    +
    +
    +

    Returns $langle i|H|j rangle$ where $i$ and $j$ are determinants differing by +a same-spin double excitation.

    +

    Needs:

    +
    + + +
    +

    Called by:

    +
      +
    • h_s2_u_0_nstates_openmp_work_1()
    • +
    • h_s2_u_0_nstates_openmp_work_2()
    • +
    • h_s2_u_0_nstates_openmp_work_3()
    • +
    • h_s2_u_0_nstates_openmp_work_4()
    • +
    +
      +
    • h_s2_u_0_nstates_openmp_work_n_int()
    • +
    • h_s2_u_0_two_e_nstates_openmp_work_1()
    • +
    • h_s2_u_0_two_e_nstates_openmp_work_2()
    • +
    +
      +
    • h_s2_u_0_two_e_nstates_openmp_work_3()
    • +
    • h_s2_u_0_two_e_nstates_openmp_work_4()
    • +
    • h_s2_u_0_two_e_nstates_openmp_work_n_int()
    • +
    +
    +

    Calls:

    +
      +
    • get_double_excitation_spin()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +i_h_j_mono_spin:()
    +

    File : determinants/slater_rules.irp.f

    +
    subroutine i_H_j_mono_spin(key_i,key_j,Nint,spin,hij)
    +
    +
    +

    Returns $langle i|H|j rangle$ where $i$ and $j$ are determinants differing by +a single excitation.

    +

    Needs:

    +
    + +
      +
    +
    +

    Called by:

    +
      +
    • h_s2_u_0_nstates_openmp_work_1()
    • +
    • h_s2_u_0_nstates_openmp_work_2()
    • +
    +
      +
    • h_s2_u_0_nstates_openmp_work_3()
    • +
    • h_s2_u_0_nstates_openmp_work_4()
    • +
    +
      +
    • h_s2_u_0_nstates_openmp_work_n_int()
    • +
    +
    +

    Calls:

    +
      +
    • get_mono_excitation_from_fock()
    • +
    +
      +
    • get_mono_excitation_spin()
    • +
    +
      +
    +
    +
    + +
    +
    +i_h_j_mono_spin_one_e:()
    +

    File : determinants/slater_rules_wee_mono.irp.f

    +
    subroutine i_H_j_mono_spin_one_e(key_i,key_j,Nint,spin,hij)
    +
    +
    +

    Returns $langle i|H|j rangle$ where $i$ and $j$ are determinants differing by +a single excitation.

    +

    Needs:

    +
    +
      +
    +
      +
    +
    +

    Calls:

    +
      +
    • get_mono_excitation_spin()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +i_h_j_one_e:()
    +

    File : determinants/slater_rules_wee_mono.irp.f

    +
    subroutine i_H_j_one_e(key_i,key_j,Nint,hij)
    +
    +
    +

    Returns $langle i|H|j rangle$ where $i$ and $j$ are determinants.

    +

    Needs:

    +
    + +
      +
    +
    +

    Calls:

    +
      +
    • get_excitation_degree()
    • +
    +
      +
    • get_mono_excitation()
    • +
    +
      +
    +
    +
    + +
    +
    +i_h_j_s2:()
    +

    File : determinants/slater_rules.irp.f

    +
    subroutine i_H_j_s2(key_i,key_j,Nint,hij,s2)
    +
    +
    +

    Returns $langle i|H|j rangle$ and $langle i|S^2|j rangle$ +where $i$ and $j$ are determinants.

    +

    Needs:

    +
    + + +
    +

    Calls:

    +
      +
    • bitstring_to_list_ab()
    • +
    • get_double_excitation()
    • +
    +
      +
    • get_excitation_degree()
    • +
    • get_mono_excitation()
    • +
    +
      +
    • get_mono_excitation_from_fock()
    • +
    +
    +
    + +
    +
    +i_h_j_two_e:()
    +

    File : determinants/slater_rules_wee_mono.irp.f

    +
    subroutine i_H_j_two_e(key_i,key_j,Nint,hij)
    +
    +
    +

    Returns $langle i|H|j rangle$ where $i$ and $j$ are determinants.

    +

    Needs:

    +
    + + +
    +

    Calls:

    +
      +
    • bitstring_to_list_ab()
    • +
    • get_double_excitation()
    • +
    +
      +
    • get_excitation_degree()
    • +
    • get_mono_excitation()
    • +
    +
      +
    • mono_excitation_wee()
    • +
    +
    +
    + +
    +
    +i_h_j_verbose:()
    +

    File : determinants/slater_rules.irp.f

    +
    subroutine i_H_j_verbose(key_i,key_j,Nint,hij,hmono,hdouble,phase)
    +
    +
    +

    Returns $langle i|H|j rangle$ where $i$ and $j$ are determinants.

    +

    Needs:

    +
    + + +
    +

    Calls:

    +
      +
    • bitstring_to_list_ab()
    • +
    • get_double_excitation()
    • +
    +
      +
    • get_excitation_degree()
    • +
    +
      +
    • get_mono_excitation()
    • +
    +
    +
    + +
    +
    +i_h_psi:()
    +

    File : determinants/slater_rules.irp.f

    +
    subroutine i_H_psi(key,keys,coef,Nint,Ndet,Ndet_max,Nstate,i_H_psi_array)
    +
    +
    +

    Computes $langle i|H|Psi rangle = sum_J c_J langle i | H | J rangle$.

    +

    Uses filter_connected_i_H_psi0 to get all the $|J rangle$ to which $|i rangle$ +is connected. +The i_H_psi_minilist is much faster but requires to build the +minilists.

    +

    Called by:

    +
      +
    • pt2_epstein_nesbet_2x2()
    • +
    +
      +
    • pt2_epstein_nesbet_2x2_no_ci_diag()
    • +
    +
      +
    • remove_small_contributions()
    • +
    +
    +

    Calls:

    +
      +
    • filter_connected_i_h_psi0()
    • +
    +
      +
    • i_h_j()
    • +
    +
      +
    +
    +
    + +
    +
    +i_h_psi_minilist:()
    +

    File : determinants/slater_rules.irp.f

    +
    subroutine i_H_psi_minilist(key,keys,idx_key,N_minilist,coef,Nint,Ndet,Ndet_max,Nstate,i_H_psi_array)
    +
    +
    +

    Computes $langle i|H|Psi rangle = sum_J c_J langle i|H|Jrangle$.

    +

    Uses filter_connected_i_H_psi0 to get all the $|J rangle$ to which $|i rangle$ +is connected. The $|Jrangle$ are searched in short pre-computed lists.

    +

    Called by:

    +
      +
    • pt2_dummy()
    • +
    • pt2_epstein_nesbet()
    • +
    +
      +
    • pt2_moller_plesset()
    • +
    +
      +
    • pt2_qdpt()
    • +
    +
    +

    Calls:

    +
      +
    • filter_connected_i_h_psi0()
    • +
    +
      +
    • i_h_j()
    • +
    +
      +
    +
    +
    + +
    +
    +i_s2_psi_minilist:()
    +

    File : determinants/s2.irp.f

    +
    subroutine i_S2_psi_minilist(key,keys,idx_key,N_minilist,coef,Nint,Ndet,Ndet_max,Nstate,i_S2_psi_array)
    +
    +
    +

    Computes $langle i|S^2|Psi rangle = sum_J c_J langle i|S^2|J rangle$.

    +

    Uses filter_connected_i_H_psi0 to get all the $|Jrangle$ to which $|irangle$ +is connected. The $|Jrangle$ are searched in short pre-computed lists.

    +

    Calls:

    +
      +
    • filter_connected_i_h_psi0()
    • +
    +
      +
    • get_s2()
    • +
    +
      +
    +
    +
    + +
    +
    +i_wee_j_mono:()
    +

    File : determinants/slater_rules_wee_mono.irp.f

    +
    subroutine i_Wee_j_mono(key_i,key_j,Nint,spin,hij)
    +
    +
    +

    Returns $langle i|H|j rangle$ where $i$ and $j$ are determinants differing by a +single excitation.

    +

    Needs:

    +
    + +
      +
    +
    +

    Called by:

    +
      +
    • h_s2_u_0_two_e_nstates_openmp_work_1()
    • +
    • h_s2_u_0_two_e_nstates_openmp_work_2()
    • +
    +
      +
    • h_s2_u_0_two_e_nstates_openmp_work_3()
    • +
    • h_s2_u_0_two_e_nstates_openmp_work_4()
    • +
    +
      +
    • h_s2_u_0_two_e_nstates_openmp_work_n_int()
    • +
    +
    +

    Calls:

    +
      +
    • get_mono_excitation_spin()
    • +
    +
      +
    • mono_excitation_wee()
    • +
    +
      +
    +
    +
    + +
    +
    +is_connected_to:()
    +

    File : determinants/connected_to_ref.irp.f

    +
    logical function is_connected_to(key,keys,Nint,Ndet)
    +
    +
    +

    Returns true if determinant key is connected to keys

    +
    + +
    +
    +is_connected_to_by_mono:()
    +

    File : determinants/connected_to_ref.irp.f

    +
    logical function is_connected_to_by_mono(key,keys,Nint,Ndet)
    +
    +
    +

    Returns true is key is connected to keys by a single excitation.

    +
    + +
    +
    +is_in_wavefunction:()
    +

    File : determinants/connected_to_ref.irp.f

    +
    logical function is_in_wavefunction(key,Nint)
    +
    +
    +

    true if the determinant det is in the wave function

    +
    + +
    +
    +is_spin_flip_possible:()
    +

    File : determinants/create_excitations.irp.f

    +
    logical function is_spin_flip_possible(key_in,i_flip,ispin)
    +
    +
    +

    returns true if the spin-flip of spin ispin in the orbital i_flip is possible +on key_in

    +

    Needs:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +make_s2_eigenfunction:()
    +

    File : determinants/occ_pattern.irp.f

    +
    subroutine make_s2_eigenfunction
    +
    +
    +

    Needs:

    +
    +
      +
    • elec_alpha_num
    • +
    • n_det
    • +
    +
    +
    +

    Called by:

    +
      +
    • run_cipsi()
    • +
    +
      +
    • run_stochastic_cipsi()
    • +
    +
      +
    +
    +

    Calls:

    +
      +
    • copy_h_apply_buffer_to_wf()
    • +
    • fill_h_apply_buffer_no_selection()
    • +
    +
      +
    • occ_pattern_to_dets()
    • +
    • occ_pattern_to_dets_size()
    • +
    +
      +
    • write_int()
    • +
    • write_time()
    • +
    +
    +

    Touches:

    +
    + + +
    +
    + +
    +
    +mono_excitation_wee:()
    +

    File : determinants/mono_excitations_bielec.irp.f

    +
    subroutine mono_excitation_wee(det_1,det_2,h,p,spin,phase,hij)
    +
    +
    +

    Needs:

    +
    + + +
    +

    Called by:

    +
      +
    • i_h_j_two_e()
    • +
    +
      +
    • i_wee_j_mono()
    • +
    +
      +
    +
    +

    Calls:

    +
      +
    • bitstring_to_list_ab()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +occ_pattern_of_det:()
    +

    File : determinants/occ_pattern.irp.f

    +
    subroutine occ_pattern_of_det(d,o,Nint)
    +
    +
    +

    Transforms a determinant to an occupation pattern

    +

    occ(:,1) : Single occupations

    +

    occ(:,2) : Double occupations

    +
    + +
    +
    +occ_pattern_search_key:()
    +

    File : determinants/connected_to_ref.irp.f

    +
    integer*8 function occ_pattern_search_key(det,Nint)
    +
    +
    +

    Return an integer*8 corresponding to a determinant index for searching

    +

    Needs:

    +
      +
    • elec_alpha_num
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +occ_pattern_to_dets:()
    +

    File : determinants/occ_pattern.irp.f

    +
    subroutine occ_pattern_to_dets(o,d,sze,n_alpha,Nint)
    +
    +
    +

    Generate all possible determinants for a give occ_pattern

    +

    Needs:

    +
    +
      +
    +
      +
    +
    +

    Called by:

    +
      +
    • make_s2_eigenfunction()
    • +
    +
      +
    • make_selection_buffer_s2()
    • +
    +
      +
    +
    +
    + +
    +
    +occ_pattern_to_dets_size:()
    +

    File : determinants/occ_pattern.irp.f

    +
    subroutine occ_pattern_to_dets_size(o,sze,n_alpha,Nint)
    +
    +
    +

    Number of possible determinants for a given occ_pattern

    +

    Needs:

    +
    +
      +
    +
      +
    +
    +

    Called by:

    +
      +
    • make_s2_eigenfunction()
    • +
    +
      +
    • make_selection_buffer_s2()
    • +
    +
      +
    +
    +
    + +
    +
    +pull_pt2:()
    +

    File : determinants/h_apply.irp.f

    +
    subroutine pull_pt2(zmq_socket_pull,pt2,norm_pert,H_pert_diag,i_generator,N_st,n,task_id)
    +
    +
    +

    Pull PT2 calculation in the collector

    +
    + +
    +
    +push_pt2:()
    +

    File : determinants/h_apply.irp.f

    +
    subroutine push_pt2(zmq_socket_push,pt2,norm_pert,H_pert_diag,i_generator,N_st,task_id)
    +
    +
    +

    Push PT2 calculation to the collector

    +
    + +
    +
    +read_dets:()
    +

    File : determinants/determinants.irp.f

    +
    subroutine read_dets(det,Nint,Ndet)
    +
    +
    +

    Reads the determinants from the EZFIO file

    +

    Called by:

    +
    +
      +
    +
      +
    +
    +

    Calls:

    +
      +
    • ezfio_get_determinants_bit_kind()
    • +
    +
      +
    • ezfio_get_determinants_n_int()
    • +
    +
      +
    • ezfio_get_determinants_psi_det()
    • +
    +
    +
    + +
    +
    +remove_duplicates_in_psi_det:()
    +

    File : determinants/h_apply.irp.f

    +
    subroutine remove_duplicates_in_psi_det(found_duplicates)
    +
    +
    +

    Removes duplicate determinants in the wave function.

    +

    Needs:

    +
    + + +
    +

    Called by:

    +
      +
    • copy_h_apply_buffer_to_wf()
    • +
    +
      +
    +
      +
    +
    +

    Touches:

    +
    + + +
    +
    + +
    +
    +resize_h_apply_buffer:()
    +

    File : determinants/h_apply.irp.f

    +
    subroutine resize_H_apply_buffer(new_size,iproc)
    +
    +
    +

    Resizes the H_apply buffer of proc iproc. The buffer lock should +be set before calling this function.

    +

    Needs:

    +
    + + +
    +

    Called by:

    +
      +
    • fill_h_apply_buffer_no_selection()
    • +
    +
      +
    • fill_h_apply_buffer_selection()
    • +
    +
      +
    +
    +
    + +
    +
    +routine_example_psi_det:()
    +

    File : determinants/example.irp.f

    +
    subroutine routine_example_psi_det
    +
    +
    +

    subroutine that illustrates the main features available in determinants using many determinants

    +

    Needs:

    +
    + + +
    +

    Called by:

    +
      +
    • example_determinants_psi_det()
    • +
    +
      +
    +
      +
    +
    +

    Calls:

    +
      +
    • debug_det()
    • +
    +
      +
    • get_excitation_degree_vector()
    • +
    +
      +
    • i_h_j()
    • +
    +
    +
    + +
    +
    +s2_u_0:()
    +

    File : determinants/s2.irp.f

    +
    subroutine S2_u_0(v_0,u_0,n,keys_tmp,Nint)
    +
    +
    +

    Computes v_0 = S^2|u_0>

    +

    n : number of determinants

    +

    Calls:

    +
      +
    • s2_u_0_nstates()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +s2_u_0_nstates:()
    +

    File : determinants/s2.irp.f

    +
    subroutine S2_u_0_nstates(v_0,u_0,n,keys_tmp,Nint,N_st,sze_8)
    +
    +
    +

    Computes v_0 = S^2|u_0>

    +

    n : number of determinants

    +

    Needs:

    +
    +
      +
    +
      +
    +
    +

    Called by:

    +
      +
    • s2_u_0()
    • +
    +
      +
    • u_0_s2_u_0()
    • +
    +
      +
    +
    +

    Calls:

    +
      +
    • get_s2()
    • +
    +
      +
    • sort_dets_ab_v()
    • +
    +
      +
    • sort_dets_ba_v()
    • +
    +
    +
    + +
    +
    +save_natural_mos:()
    +

    File : determinants/density_matrix.irp.f

    +
    subroutine save_natural_mos
    +
    +
    +

    Save natural orbitals, obtained by diagonalization of the one-body density matrix in +the MO basis

    +

    Called by:

    +
      +
    • save_natorb()
    • +
    +
      +
    +
      +
    +
    +

    Calls:

    +
      +
    • save_mos()
    • +
    +
      +
    • set_natural_mos()
    • +
    +
      +
    +
    +

    Touches:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +save_ref_determinant:()
    +

    File : determinants/determinants.irp.f

    +
    subroutine save_ref_determinant
    +
    +
    +

    Needs:

    +
      +
    • n_states
    • +
    +
    +
      +
    +
    +

    Called by:

    +
      +
    • save_natorb()
    • +
    +
      +
    +
      +
    +
    +

    Calls:

    +
      +
    • save_wavefunction_general()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +save_wavefunction:()
    +

    File : determinants/determinants.irp.f

    +
    subroutine save_wavefunction
    +
    +
    +

    Save the wave function into the EZFIO file

    +

    Needs:

    +
      +
    • read_wf
    • +
    • n_states
    • +
    +
    + +
    +

    Called by:

    +
      +
    • run_cipsi()
    • +
    +
      +
    • run_stochastic_cipsi()
    • +
    +
      +
    • zmq_selection()
    • +
    +
    +

    Calls:

    +
      +
    • save_wavefunction_general()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +save_wavefunction_general:()
    +

    File : determinants/determinants.irp.f

    +
    subroutine save_wavefunction_general(ndet,nstates,psidet,dim_psicoef,psicoef)
    +
    +
    +

    Save the wave function into the EZFIO file

    +

    Needs:

    +
    + + +
    +

    Called by:

    +
      +
    • save_ref_determinant()
    • +
    • save_wavefunction()
    • +
    +
      +
    • save_wavefunction_truncated()
    • +
    +
      +
    • save_wavefunction_unsorted()
    • +
    +
    +

    Calls:

    +
      +
    • ezfio_set_determinants_bit_kind()
    • +
    • ezfio_set_determinants_mo_label()
    • +
    • ezfio_set_determinants_n_det()
    • +
    +
      +
    • ezfio_set_determinants_n_int()
    • +
    • ezfio_set_determinants_n_states()
    • +
    • ezfio_set_determinants_psi_coef()
    • +
    +
      +
    • ezfio_set_determinants_psi_det()
    • +
    • normalize()
    • +
    • write_int()
    • +
    +
    +
    + +
    +
    +save_wavefunction_specified:()
    +

    File : determinants/determinants.irp.f

    +
    subroutine save_wavefunction_specified(ndet,nstates,psidet,psicoef,ndetsave,index_det_save)
    +
    +
    +

    Save the wave function into the EZFIO file

    +

    Needs:

    +
    + +
      +
    +
    +

    Calls:

    +
      +
    • ezfio_set_determinants_bit_kind()
    • +
    • ezfio_set_determinants_mo_label()
    • +
    • ezfio_set_determinants_n_det()
    • +
    +
      +
    • ezfio_set_determinants_n_int()
    • +
    • ezfio_set_determinants_n_states()
    • +
    • ezfio_set_determinants_psi_coef()
    • +
    +
      +
    • ezfio_set_determinants_psi_det()
    • +
    • write_int()
    • +
    +
    +
    + +
    +
    +save_wavefunction_truncated:()
    +

    File : determinants/determinants.irp.f

    +
    subroutine save_wavefunction_truncated(thr)
    +
    +
    +

    Save the wave function into the EZFIO file

    +

    Needs:

    +
    + + +
    +

    Calls:

    +
      +
    • save_wavefunction_general()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +save_wavefunction_unsorted:()
    +

    File : determinants/determinants.irp.f

    +
    subroutine save_wavefunction_unsorted
    +
    +
    +

    Save the wave function into the EZFIO file

    +

    Needs:

    +
    + + +
    +

    Calls:

    +
      +
    • save_wavefunction_general()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +set_natural_mos:()
    +

    File : determinants/density_matrix.irp.f

    +
    subroutine set_natural_mos
    +
    +
    +

    Set natural orbitals, obtained by diagonalization of the one-body density matrix +in the MO basis

    +

    Needs:

    +
    + + +
    +

    Called by:

    +
      +
    • save_natural_mos()
    • +
    +
      +
    +
      +
    +
    +

    Calls:

    +
      +
    • mo_as_svd_vectors_of_mo_matrix_eig()
    • +
    +
      +
    +
      +
    +
    +

    Touches:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +sort_dets_ab:()
    +

    File : determinants/sort_dets_ab.irp.f

    +
    subroutine sort_dets_ab(key, idx, shortcut, N_key, Nint)
    +
    +
    +

    Deprecated routine

    +

    Calls:

    +
      +
    • tamiser()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +sort_dets_ab_v:()
    +

    File : determinants/sort_dets_ab.irp.f

    +
    subroutine sort_dets_ab_v(key_in, key_out, idx, shortcut, version, N_key, Nint)
    +
    +
    +

    Deprecated routine

    +

    Called by:

    +
      +
    • s2_u_0_nstates()
    • +
    +
      +
    • sort_dets_ba_v()
    • +
    +
      +
    +
    +

    Calls:

    +
      +
    • tamiser()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +sort_dets_ba_v:()
    +

    File : determinants/sort_dets_ab.irp.f

    +
    subroutine sort_dets_ba_v(key_in, key_out, idx, shortcut, version, N_key, Nint)
    +
    +
    +

    Deprecated routine

    +

    Called by:

    +
      +
    • s2_u_0_nstates()
    • +
    +
      +
    +
      +
    +
    +

    Calls:

    +
      +
    • sort_dets_ab_v()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +sort_dets_by_det_search_key:()
    +

    File : determinants/determinants.irp.f

    +
    subroutine sort_dets_by_det_search_key(Ndet, det_in, coef_in, sze, det_out, coef_out, N_st)
    +
    +
    +

    Determinants are sorted according to their det_search_key(). +Useful to accelerate the search of a random determinant in the wave +function.

    +

    /!The first dimension of coef_out and coef_in need to be psi_det_size

    +

    Needs:

    +
    +
      +
    +
      +
    +
    +

    Called by:

    +
    + + +
    +

    Calls:

    +
      +
    • i8sort()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +spin_det_search_key:()
    +

    File : determinants/spindeterminants.irp.f

    +
    integer*8 function spin_det_search_key(det,Nint)
    +
    +
    +

    Returns an integer(8) corresponding to a determinant index for searching

    +
    + +
    +
    +tamiser:()
    +

    File : determinants/sort_dets_ab.irp.f

    +
    subroutine tamiser(key, idx, no, n, Nint, N_key)
    +
    +
    +

    Called by:

    +
      +
    • sort_dets_ab()
    • +
    +
      +
    • sort_dets_ab_v()
    • +
    +
      +
    +
    +
    + +
    +
    +u_0_s2_u_0:()
    +

    File : determinants/s2.irp.f

    +
    subroutine u_0_S2_u_0(e_0,u_0,n,keys_tmp,Nint,N_st,sze_8)
    +
    +
    +

    Computes e_0 = <u_0|S2|u_0>/<u_0|u_0>

    +

    n : number of determinants

    +

    Needs:

    +
    +
      +
    +
      +
    +
    +

    Called by:

    +
    + +
      +
    +
    +

    Calls:

    +
      +
    • s2_u_0_nstates()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +wf_of_psi_bilinear_matrix:()
    +

    File : determinants/spindeterminants.irp.f

    +
    subroutine wf_of_psi_bilinear_matrix(truncate)
    +
    +
    +

    Generate a wave function containing all possible products +of $alpha$ and $beta$ determinants

    +

    Needs:

    +
    + + +
    +

    Touches:

    +
    + + +
    +
    + +
    +
    +write_spindeterminants:()
    +

    File : determinants/spindeterminants.irp.f

    +
    subroutine write_spindeterminants
    +
    +
    +

    Needs:

    +
    + + +
    +

    Calls:

    +
      +
    • ezfio_set_spindeterminants_bit_kind()
    • +
    • ezfio_set_spindeterminants_n_det()
    • +
    • ezfio_set_spindeterminants_n_det_alpha()
    • +
    • ezfio_set_spindeterminants_n_det_beta()
    • +
    +
      +
    • ezfio_set_spindeterminants_n_int()
    • +
    • ezfio_set_spindeterminants_n_states()
    • +
    • ezfio_set_spindeterminants_psi_coef_matrix_columns()
    • +
    • ezfio_set_spindeterminants_psi_coef_matrix_rows()
    • +
    +
      +
    • ezfio_set_spindeterminants_psi_coef_matrix_values()
    • +
    • ezfio_set_spindeterminants_psi_det_alpha()
    • +
    • ezfio_set_spindeterminants_psi_det_beta()
    • +
    +
    +
    + +
    +
    +zmq_get_n_det:()
    +

    File : determinants/zmq.irp.f_template_379

    +
    integer function zmq_get_N_det(zmq_to_qp_run_socket, worker_id)
    +
    +
    +

    Get N_det from the qp_run scheduler

    +

    Needs:

    +
    + + +
    +
    + +
    +
    +zmq_get_n_det_alpha_unique:()
    +

    File : determinants/zmq.irp.f_template_379

    +
    integer function zmq_get_N_det_alpha_unique(zmq_to_qp_run_socket, worker_id)
    +
    +
    +

    Get N_det_alpha_unique from the qp_run scheduler

    +

    Needs:

    +
    + + +
    +
    + +
    +
    +zmq_get_n_det_beta_unique:()
    +

    File : determinants/zmq.irp.f_template_379

    +
    integer function zmq_get_N_det_beta_unique(zmq_to_qp_run_socket, worker_id)
    +
    +
    +

    Get N_det_beta_unique from the qp_run scheduler

    +

    Needs:

    +
    + + +
    +
    + +
    +
    +zmq_get_n_states:()
    +

    File : determinants/zmq.irp.f_template_379

    +
    integer function zmq_get_N_states(zmq_to_qp_run_socket, worker_id)
    +
    +
    +

    Get N_states from the qp_run scheduler

    +

    Needs:

    +
      +
    • n_states
    • +
    +
    + +
    +
    + +
    +
    +zmq_get_psi:()
    +

    File : determinants/zmq.irp.f

    +
    integer function zmq_get_psi(zmq_to_qp_run_socket, worker_id)
    +
    +
    +

    Get the wave function from the qp_run scheduler

    +

    Needs:

    +
    + + +
    +

    Touches:

    +
    + + +
    +
    + +
    +
    +zmq_get_psi_bilinear:()
    +

    File : determinants/zmq.irp.f

    +
    integer function zmq_get_psi_bilinear(zmq_to_qp_run_socket, worker_id)
    +
    +
    +

    Get the wave function from the qp_run scheduler

    +

    Needs:

    +
    + + +
    +

    Touches:

    +
    + + +
    +
    + +
    +
    +zmq_get_psi_bilinear_matrix_columns:()
    +

    File : determinants/zmq.irp.f_template_500

    +
    integer*8 function zmq_get_psi_bilinear_matrix_columns(zmq_to_qp_run_socket,worker_id)
    +
    +
    +

    Get psi_bilinear_matrix_columns on the qp_run scheduler

    +

    Needs:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +zmq_get_psi_bilinear_matrix_order:()
    +

    File : determinants/zmq.irp.f_template_500

    +
    integer*8 function zmq_get_psi_bilinear_matrix_order(zmq_to_qp_run_socket,worker_id)
    +
    +
    +

    Get psi_bilinear_matrix_order on the qp_run scheduler

    +

    Needs:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +zmq_get_psi_bilinear_matrix_rows:()
    +

    File : determinants/zmq.irp.f_template_500

    +
    integer*8 function zmq_get_psi_bilinear_matrix_rows(zmq_to_qp_run_socket,worker_id)
    +
    +
    +

    Get psi_bilinear_matrix_rows on the qp_run scheduler

    +

    Needs:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +zmq_get_psi_bilinear_matrix_values:()
    +

    File : determinants/zmq.irp.f_template_564

    +
    integer*8 function zmq_get_psi_bilinear_matrix_values(zmq_to_qp_run_socket,worker_id)
    +
    +
    +

    get psi_bilinear_matrix_values on the qp_run scheduler

    +

    Needs:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +zmq_get_psi_coef:()
    +

    File : determinants/zmq.irp.f_template_564

    +
    integer*8 function zmq_get_psi_coef(zmq_to_qp_run_socket,worker_id)
    +
    +
    +

    get psi_coef on the qp_run scheduler

    +

    Needs:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +zmq_get_psi_det:()
    +

    File : determinants/zmq.irp.f_template_440

    +
    integer*8 function zmq_get_psi_det(zmq_to_qp_run_socket,worker_id)
    +
    +
    +

    Get psi_det on the qp_run scheduler

    +

    Needs:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +zmq_get_psi_det_alpha_unique:()
    +

    File : determinants/zmq.irp.f_template_440

    +
    integer*8 function zmq_get_psi_det_alpha_unique(zmq_to_qp_run_socket,worker_id)
    +
    +
    +

    Get psi_det_alpha_unique on the qp_run scheduler

    +

    Needs:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +zmq_get_psi_det_beta_unique:()
    +

    File : determinants/zmq.irp.f_template_440

    +
    integer*8 function zmq_get_psi_det_beta_unique(zmq_to_qp_run_socket,worker_id)
    +
    +
    +

    Get psi_det_beta_unique on the qp_run scheduler

    +

    Needs:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +zmq_get_psi_det_size:()
    +

    File : determinants/zmq.irp.f_template_379

    +
    integer function zmq_get_psi_det_size(zmq_to_qp_run_socket, worker_id)
    +
    +
    +

    Get psi_det_size from the qp_run scheduler

    +

    Needs:

    +
    + + +
    +
    + +
    +
    +zmq_get_psi_notouch:()
    +

    File : determinants/zmq.irp.f

    +
    integer function zmq_get_psi_notouch(zmq_to_qp_run_socket, worker_id)
    +
    +
    +

    Get the wave function from the qp_run scheduler

    +

    Needs:

    +
    + + +
    +
    + +
    +
    +zmq_put_n_det:()
    +

    File : determinants/zmq.irp.f_template_379

    +
    integer function zmq_put_N_det(zmq_to_qp_run_socket,worker_id)
    +
    +
    +

    Put N_det on the qp_run scheduler

    +

    Needs:

    +
    + +
      +
    +
    +
    + +
    +
    +zmq_put_n_det_alpha_unique:()
    +

    File : determinants/zmq.irp.f_template_379

    +
    integer function zmq_put_N_det_alpha_unique(zmq_to_qp_run_socket,worker_id)
    +
    +
    +

    Put N_det_alpha_unique on the qp_run scheduler

    +

    Needs:

    +
    + +
      +
    +
    +
    + +
    +
    +zmq_put_n_det_beta_unique:()
    +

    File : determinants/zmq.irp.f_template_379

    +
    integer function zmq_put_N_det_beta_unique(zmq_to_qp_run_socket,worker_id)
    +
    +
    +

    Put N_det_beta_unique on the qp_run scheduler

    +

    Needs:

    +
    + +
      +
    +
    +
    + +
    +
    +zmq_put_n_states:()
    +

    File : determinants/zmq.irp.f_template_379

    +
    integer function zmq_put_N_states(zmq_to_qp_run_socket,worker_id)
    +
    +
    +

    Put N_states on the qp_run scheduler

    +

    Needs:

    +
      +
    • n_states
    • +
    +
    +
      +
    +
    +
    + +
    +
    +zmq_put_psi:()
    +

    File : determinants/zmq.irp.f

    +
    integer function zmq_put_psi(zmq_to_qp_run_socket,worker_id)
    +
    +
    +

    Put the wave function on the qp_run scheduler

    +
    + +
    +
    +zmq_put_psi_bilinear:()
    +

    File : determinants/zmq.irp.f

    +
    integer function zmq_put_psi_bilinear(zmq_to_qp_run_socket,worker_id)
    +
    +
    +

    Put the wave function on the qp_run scheduler

    +
    + +
    +
    +zmq_put_psi_bilinear_matrix_columns:()
    +

    File : determinants/zmq.irp.f_template_500

    +
    integer*8 function zmq_put_psi_bilinear_matrix_columns(zmq_to_qp_run_socket,worker_id)
    +
    +
    +

    Put psi_bilinear_matrix_columns on the qp_run scheduler

    +

    Needs:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +zmq_put_psi_bilinear_matrix_order:()
    +

    File : determinants/zmq.irp.f_template_500

    +
    integer*8 function zmq_put_psi_bilinear_matrix_order(zmq_to_qp_run_socket,worker_id)
    +
    +
    +

    Put psi_bilinear_matrix_order on the qp_run scheduler

    +

    Needs:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +zmq_put_psi_bilinear_matrix_rows:()
    +

    File : determinants/zmq.irp.f_template_500

    +
    integer*8 function zmq_put_psi_bilinear_matrix_rows(zmq_to_qp_run_socket,worker_id)
    +
    +
    +

    Put psi_bilinear_matrix_rows on the qp_run scheduler

    +

    Needs:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +zmq_put_psi_bilinear_matrix_values:()
    +

    File : determinants/zmq.irp.f_template_564

    +
    integer*8 function zmq_put_psi_bilinear_matrix_values(zmq_to_qp_run_socket,worker_id)
    +
    +
    +

    Put psi_bilinear_matrix_values on the qp_run scheduler

    +

    Needs:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +zmq_put_psi_coef:()
    +

    File : determinants/zmq.irp.f_template_564

    +
    integer*8 function zmq_put_psi_coef(zmq_to_qp_run_socket,worker_id)
    +
    +
    +

    Put psi_coef on the qp_run scheduler

    +

    Needs:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +zmq_put_psi_det:()
    +

    File : determinants/zmq.irp.f_template_440

    +
    integer*8 function zmq_put_psi_det(zmq_to_qp_run_socket,worker_id)
    +
    +
    +

    Put psi_det on the qp_run scheduler

    +

    Needs:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +zmq_put_psi_det_alpha_unique:()
    +

    File : determinants/zmq.irp.f_template_440

    +
    integer*8 function zmq_put_psi_det_alpha_unique(zmq_to_qp_run_socket,worker_id)
    +
    +
    +

    Put psi_det_alpha_unique on the qp_run scheduler

    +

    Needs:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +zmq_put_psi_det_beta_unique:()
    +

    File : determinants/zmq.irp.f_template_440

    +
    integer*8 function zmq_put_psi_det_beta_unique(zmq_to_qp_run_socket,worker_id)
    +
    +
    +

    Put psi_det_beta_unique on the qp_run scheduler

    +

    Needs:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +zmq_put_psi_det_size:()
    +

    File : determinants/zmq.irp.f_template_379

    +
    integer function zmq_put_psi_det_size(zmq_to_qp_run_socket,worker_id)
    +
    +
    +

    Put psi_det_size on the qp_run scheduler

    +

    Needs:

    +
    + +
      +
    +
    +
    + +
    +
    + + +
    + +
    + + +
    +
    + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/doc/modules/dft_keywords.html b/doc/modules/dft_keywords.html new file mode 100644 index 00000000..703bbf1d --- /dev/null +++ b/doc/modules/dft_keywords.html @@ -0,0 +1,361 @@ + + + + + + + + + + + dft_keywords — Quantum Package 2.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + +
    + + + + + +
    + +
    + + + + + + + + + + + + + + + + + +
    + + + + +
    +
    +
    +
    + +
    +

    dft_keywords

    +

    This module contains the main keywords related to a DFT calculation or RS-DFT calculation, such as:

    + +

    The keyword for the range separation parameter \(\mu\) is the 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 density_for_dft density_for_dft keyword.

    +
    +

    EZFIO parameters

    +
    +
    +exchange_functional
    +

    name of the exchange functional

    +

    Default: short_range_LDA

    +
    + +
    +
    +correlation_functional
    +

    name of the correlation functional

    +

    Default: short_range_LDA

    +
    + +
    +
    +HF_exchange
    +

    Percentage of HF exchange in the DFT model

    +

    Default: 0.

    +
    + +
    +
    +

    Providers

    +
    +
    +dft_type
    +

    File : dft_keywords/keywords.irp.f

    +
    character*(32)  :: dft_type
    +
    +
    +

    defines the type of DFT applied: LDA, GGA etc …

    +

    Needs:

    +
      +
    • correlation_functional
    • +
    +
      +
    • exchange_functional
    • +
    +
      +
    +
    +
    + +
    +
    + + +
    + +
    + + +
    +
    + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/doc/modules/dft_utils_in_r.html b/doc/modules/dft_utils_in_r.html new file mode 100644 index 00000000..6d87af88 --- /dev/null +++ b/doc/modules/dft_utils_in_r.html @@ -0,0 +1,1158 @@ + + + + + + + + + + + dft_utils_in_r — Quantum Package 2.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + +
    + + + + + +
    + +
    + + + + + + + + + + + + + + + + + +
    + + + + +
    +
    +
    +
    + +
    +

    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

    +
    +
    +aos_grad_in_r_array
    +

    File : dft_utils_in_r/ao_in_r.irp.f

    +
    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:

    +
    + + +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +aos_grad_in_r_array_transp
    +

    File : dft_utils_in_r/ao_in_r.irp.f

    +
    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:

    +
    + + +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +aos_grad_in_r_array_transp_xyz
    +

    File : dft_utils_in_r/ao_in_r.irp.f

    +
    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:

    +
    + + +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +aos_in_r_array
    +

    File : dft_utils_in_r/ao_in_r.irp.f

    +
    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:

    +
    + + +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +aos_in_r_array_transp
    +

    File : dft_utils_in_r/ao_in_r.irp.f

    +
    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:

    +
    + + +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +aos_lapl_in_r_array
    +

    File : dft_utils_in_r/ao_in_r.irp.f

    +
    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:

    +
    + + +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +aos_lapl_in_r_array_transp
    +

    File : dft_utils_in_r/ao_in_r.irp.f

    +
    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:

    +
    + + +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +mos_grad_in_r_array
    +

    File : dft_utils_in_r/mo_in_r.irp.f

    +
    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:

    +
    + + +
    +
    + +
    +
    +mos_in_r_array
    +

    File : dft_utils_in_r/mo_in_r.irp.f

    +
    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:

    +
    + + +
    +
    + +
    +
    +mos_in_r_array_transp
    +

    File : dft_utils_in_r/mo_in_r.irp.f

    +
    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:

    +
    + + +
    +
    + +
    +
    +mos_lapl_in_r_array
    +

    File : dft_utils_in_r/mo_in_r.irp.f

    +
    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:

    +
    + + +
    +
    + +
    +
    +one_e_dm_alpha_at_r
    +

    File : dft_utils_in_r/dm_in_r.irp.f

    +
    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:

    +
    + + +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +one_e_dm_alpha_in_r
    +

    File : dft_utils_in_r/dm_in_r.irp.f

    +
    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:

    +
    + + +
    +
    + +
    +
    +one_e_dm_and_grad_alpha_in_r
    +

    File : dft_utils_in_r/dm_in_r.irp.f

    +
    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) = ddx n_alpha(r_i,istate) +one_e_dm_and_grad_alpha_in_r(2,i,i_state) = ddy n_alpha(r_i,istate) +one_e_dm_and_grad_alpha_in_r(3,i,i_state) = ddz 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) = ddx n_alpha(r_i,istate)^2 + ddy n_alpha(r_i,istate)^2 + ddz n_alpha(r_i,istate)^2 +where r_i is the ith point of the grid and istate is the state number

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +one_e_dm_and_grad_beta_in_r
    +

    File : dft_utils_in_r/dm_in_r.irp.f

    +
    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) = ddx n_alpha(r_i,istate) +one_e_dm_and_grad_alpha_in_r(2,i,i_state) = ddy n_alpha(r_i,istate) +one_e_dm_and_grad_alpha_in_r(3,i,i_state) = ddz 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) = ddx n_alpha(r_i,istate)^2 + ddy n_alpha(r_i,istate)^2 + ddz n_alpha(r_i,istate)^2 +where r_i is the ith point of the grid and istate is the state number

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +one_e_dm_beta_at_r
    +

    File : dft_utils_in_r/dm_in_r.irp.f

    +
    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:

    +
    + + +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +one_e_dm_beta_in_r
    +

    File : dft_utils_in_r/dm_in_r.irp.f

    +
    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:

    +
    + + +
    +
    + +
    +
    +one_e_grad_2_dm_alpha_at_r
    +

    File : dft_utils_in_r/dm_in_r.irp.f

    +
    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) = ddx n_alpha(r_i,istate) +one_e_dm_and_grad_alpha_in_r(2,i,i_state) = ddy n_alpha(r_i,istate) +one_e_dm_and_grad_alpha_in_r(3,i,i_state) = ddz 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) = ddx n_alpha(r_i,istate)^2 + ddy n_alpha(r_i,istate)^2 + ddz n_alpha(r_i,istate)^2 +where r_i is the ith point of the grid and istate is the state number

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +one_e_grad_2_dm_beta_at_r
    +

    File : dft_utils_in_r/dm_in_r.irp.f

    +
    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) = ddx n_alpha(r_i,istate) +one_e_dm_and_grad_alpha_in_r(2,i,i_state) = ddy n_alpha(r_i,istate) +one_e_dm_and_grad_alpha_in_r(3,i,i_state) = ddz 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) = ddx n_alpha(r_i,istate)^2 + ddy n_alpha(r_i,istate)^2 + ddz n_alpha(r_i,istate)^2 +where r_i is the ith point of the grid and istate is the state number

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +

    Subroutines / functions

    +
    +
    +density_and_grad_alpha_beta_and_all_aos_and_grad_aos_at_r:()
    +

    File : dft_utils_in_r/dm_in_r.irp.f

    +
    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:

    +
      +
    • ao_num
    • +
    +
    +
      +
    • n_states
    • +
    +
    +

    Called by:

    +
    +
      +
    +
      +
    +
    +

    Calls:

    +
      +
    • dsymv()
    • +
    +
      +
    • give_all_aos_and_grad_at_r()
    • +
    +
      +
    +
    +
    + +
    +
    +dm_dft_alpha_beta_and_all_aos_at_r:()
    +

    File : dft_utils_in_r/dm_in_r.irp.f

    +
    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:

    +
      +
    • ao_num
    • +
    +
    +
      +
    • n_states
    • +
    +
    +

    Calls:

    +
      +
    • dsymv()
    • +
    +
      +
    • give_all_aos_at_r()
    • +
    +
      +
    +
    +
    + +
    +
    +dm_dft_alpha_beta_at_r:()
    +

    File : dft_utils_in_r/dm_in_r.irp.f

    +
    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:

    +
      +
    • ao_num
    • +
    +
    +
      +
    • n_states
    • +
    +
    +

    Called by:

    +
    + +
      +
    +
    +

    Calls:

    +
      +
    • dgemv()
    • +
    +
      +
    • give_all_aos_at_r()
    • +
    +
      +
    +
    +
    + +
    +
    + + +
    + +
    + + +
    +
    + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/doc/modules/dft_utils_one_e.html b/doc/modules/dft_utils_one_e.html new file mode 100644 index 00000000..c1244170 --- /dev/null +++ b/doc/modules/dft_utils_one_e.html @@ -0,0 +1,4038 @@ + + + + + + + + + + + dft_utils_one_e — Quantum Package 2.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + +
    + + + + + +
    + +
    + + + + + + + + + + + + + + + + + +
    + + + + +
    +
    +
    +
    + +
    +

    dft_utils_one_e

    +

    This module contains all the one-body related quantities needed to perform DFT or RS-DFT calculations. +Therefore, it contains most of the properties which depends on the one-body density and density matrix.

    +

    The most important files and variables are:

    +
      +
    • The general providers for the x/c energies in e_xc_general.irp.f
    • +
    • The general providers for the x/c potentials in pot_general.irp.f
    • +
    • The short-range hartree operator and all related quantities in sr_coulomb.irp.f
    • +
    +

    These providers will be used in many DFT-related programs, such as ks_scf.irp.f or rs_ks_scf.irp.f. +It is also needed to compute the effective one-body operator needed in multi-determinant RS-DFT (see plugins by eginer).

    +

    Some other interesting quantities:

    +
      +
    • The LDA and PBE providers for the x/c energies in e_xc.irp.f and sr_exc.irp.f
    • +
    • The LDA and PBE providers for the x/c potentials on the AO basis in pot_ao.irp.f and sr_pot_ao.irp.f
    • +
    • The \(h_{core}\) energy computed directly with the one-body density matrix in one_e_energy_dft.irp.f
    • +
    • LDA and PBE short-range functionals subroutines in exc_sr_lda.irp.f and exc_sr_pbe.irp.f
    • +
    +
    +

    Providers

    +
    +
    +ao_effective_one_e_potential
    +

    File : dft_utils_one_e/effective_pot.irp.f

    +
    double precision, allocatable   :: ao_effective_one_e_potential (ao_num,ao_num,N_states)
    +double precision, allocatable   :: ao_effective_one_e_potential_without_kin     (ao_num,ao_num,N_states)
    +
    +
    +

    ao_effective_one_e_potential(i,j) = \(\rangle i_{AO}| v_{H}^{sr} |j_{AO}\rangle + \rangle i_{AO}| h_{core} |j_{AO}\rangle + \rangle i_{AO}|v_{xc} |j_{AO}\rangle\)

    +

    Needs:

    +
    + +
      +
    • n_states
    • +
    +
    +
    + +
    +
    +ao_effective_one_e_potential_without_kin
    +

    File : dft_utils_one_e/effective_pot.irp.f

    +
    double precision, allocatable   :: ao_effective_one_e_potential (ao_num,ao_num,N_states)
    +double precision, allocatable   :: ao_effective_one_e_potential_without_kin     (ao_num,ao_num,N_states)
    +
    +
    +

    ao_effective_one_e_potential(i,j) = \(\rangle i_{AO}| v_{H}^{sr} |j_{AO}\rangle + \rangle i_{AO}| h_{core} |j_{AO}\rangle + \rangle i_{AO}|v_{xc} |j_{AO}\rangle\)

    +

    Needs:

    +
    + +
      +
    • n_states
    • +
    +
    +
    + +
    +
    +aos_dsr_vc_alpha_pbe_w
    +

    File : dft_utils_one_e/sr_pot_ao.irp.f

    +
    double precision, allocatable   :: aos_sr_vc_alpha_pbe_w        (ao_num,n_points_final_grid,N_states)
    +double precision, allocatable   :: aos_sr_vc_beta_pbe_w (ao_num,n_points_final_grid,N_states)
    +double precision, allocatable   :: aos_sr_vx_alpha_pbe_w        (ao_num,n_points_final_grid,N_states)
    +double precision, allocatable   :: aos_sr_vx_beta_pbe_w (ao_num,n_points_final_grid,N_states)
    +double precision, allocatable   :: aos_dsr_vc_alpha_pbe_w       (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: aos_dsr_vc_beta_pbe_w        (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: aos_dsr_vx_alpha_pbe_w       (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: aos_dsr_vx_beta_pbe_w        (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: grad_aos_dsr_vc_alpha_pbe_w  (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: grad_aos_dsr_vc_beta_pbe_w   (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: grad_aos_dsr_vx_alpha_pbe_w  (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: grad_aos_dsr_vx_beta_pbe_w   (ao_num,n_points_final_grid,3,N_states)
    +
    +
    +

    aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j)

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +aos_dsr_vc_beta_pbe_w
    +

    File : dft_utils_one_e/sr_pot_ao.irp.f

    +
    double precision, allocatable   :: aos_sr_vc_alpha_pbe_w        (ao_num,n_points_final_grid,N_states)
    +double precision, allocatable   :: aos_sr_vc_beta_pbe_w (ao_num,n_points_final_grid,N_states)
    +double precision, allocatable   :: aos_sr_vx_alpha_pbe_w        (ao_num,n_points_final_grid,N_states)
    +double precision, allocatable   :: aos_sr_vx_beta_pbe_w (ao_num,n_points_final_grid,N_states)
    +double precision, allocatable   :: aos_dsr_vc_alpha_pbe_w       (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: aos_dsr_vc_beta_pbe_w        (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: aos_dsr_vx_alpha_pbe_w       (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: aos_dsr_vx_beta_pbe_w        (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: grad_aos_dsr_vc_alpha_pbe_w  (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: grad_aos_dsr_vc_beta_pbe_w   (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: grad_aos_dsr_vx_alpha_pbe_w  (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: grad_aos_dsr_vx_beta_pbe_w   (ao_num,n_points_final_grid,3,N_states)
    +
    +
    +

    aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j)

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +aos_dsr_vx_alpha_pbe_w
    +

    File : dft_utils_one_e/sr_pot_ao.irp.f

    +
    double precision, allocatable   :: aos_sr_vc_alpha_pbe_w        (ao_num,n_points_final_grid,N_states)
    +double precision, allocatable   :: aos_sr_vc_beta_pbe_w (ao_num,n_points_final_grid,N_states)
    +double precision, allocatable   :: aos_sr_vx_alpha_pbe_w        (ao_num,n_points_final_grid,N_states)
    +double precision, allocatable   :: aos_sr_vx_beta_pbe_w (ao_num,n_points_final_grid,N_states)
    +double precision, allocatable   :: aos_dsr_vc_alpha_pbe_w       (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: aos_dsr_vc_beta_pbe_w        (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: aos_dsr_vx_alpha_pbe_w       (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: aos_dsr_vx_beta_pbe_w        (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: grad_aos_dsr_vc_alpha_pbe_w  (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: grad_aos_dsr_vc_beta_pbe_w   (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: grad_aos_dsr_vx_alpha_pbe_w  (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: grad_aos_dsr_vx_beta_pbe_w   (ao_num,n_points_final_grid,3,N_states)
    +
    +
    +

    aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j)

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +aos_dsr_vx_beta_pbe_w
    +

    File : dft_utils_one_e/sr_pot_ao.irp.f

    +
    double precision, allocatable   :: aos_sr_vc_alpha_pbe_w        (ao_num,n_points_final_grid,N_states)
    +double precision, allocatable   :: aos_sr_vc_beta_pbe_w (ao_num,n_points_final_grid,N_states)
    +double precision, allocatable   :: aos_sr_vx_alpha_pbe_w        (ao_num,n_points_final_grid,N_states)
    +double precision, allocatable   :: aos_sr_vx_beta_pbe_w (ao_num,n_points_final_grid,N_states)
    +double precision, allocatable   :: aos_dsr_vc_alpha_pbe_w       (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: aos_dsr_vc_beta_pbe_w        (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: aos_dsr_vx_alpha_pbe_w       (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: aos_dsr_vx_beta_pbe_w        (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: grad_aos_dsr_vc_alpha_pbe_w  (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: grad_aos_dsr_vc_beta_pbe_w   (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: grad_aos_dsr_vx_alpha_pbe_w  (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: grad_aos_dsr_vx_beta_pbe_w   (ao_num,n_points_final_grid,3,N_states)
    +
    +
    +

    aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j)

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +aos_dvc_alpha_pbe_w
    +

    File : dft_utils_one_e/pot_ao.irp.f

    +
    double precision, allocatable   :: aos_vc_alpha_pbe_w   (ao_num,n_points_final_grid,N_states)
    +double precision, allocatable   :: aos_vc_beta_pbe_w    (ao_num,n_points_final_grid,N_states)
    +double precision, allocatable   :: aos_vx_alpha_pbe_w   (ao_num,n_points_final_grid,N_states)
    +double precision, allocatable   :: aos_vx_beta_pbe_w    (ao_num,n_points_final_grid,N_states)
    +double precision, allocatable   :: aos_dvc_alpha_pbe_w  (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: aos_dvc_beta_pbe_w   (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: aos_dvx_alpha_pbe_w  (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: aos_dvx_beta_pbe_w   (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: grad_aos_dvc_alpha_pbe_w     (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: grad_aos_dvc_beta_pbe_w      (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: grad_aos_dvx_alpha_pbe_w     (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: grad_aos_dvx_beta_pbe_w      (ao_num,n_points_final_grid,3,N_states)
    +
    +
    +

    aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j)

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +aos_dvc_beta_pbe_w
    +

    File : dft_utils_one_e/pot_ao.irp.f

    +
    double precision, allocatable   :: aos_vc_alpha_pbe_w   (ao_num,n_points_final_grid,N_states)
    +double precision, allocatable   :: aos_vc_beta_pbe_w    (ao_num,n_points_final_grid,N_states)
    +double precision, allocatable   :: aos_vx_alpha_pbe_w   (ao_num,n_points_final_grid,N_states)
    +double precision, allocatable   :: aos_vx_beta_pbe_w    (ao_num,n_points_final_grid,N_states)
    +double precision, allocatable   :: aos_dvc_alpha_pbe_w  (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: aos_dvc_beta_pbe_w   (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: aos_dvx_alpha_pbe_w  (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: aos_dvx_beta_pbe_w   (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: grad_aos_dvc_alpha_pbe_w     (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: grad_aos_dvc_beta_pbe_w      (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: grad_aos_dvx_alpha_pbe_w     (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: grad_aos_dvx_beta_pbe_w      (ao_num,n_points_final_grid,3,N_states)
    +
    +
    +

    aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j)

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +aos_dvx_alpha_pbe_w
    +

    File : dft_utils_one_e/pot_ao.irp.f

    +
    double precision, allocatable   :: aos_vc_alpha_pbe_w   (ao_num,n_points_final_grid,N_states)
    +double precision, allocatable   :: aos_vc_beta_pbe_w    (ao_num,n_points_final_grid,N_states)
    +double precision, allocatable   :: aos_vx_alpha_pbe_w   (ao_num,n_points_final_grid,N_states)
    +double precision, allocatable   :: aos_vx_beta_pbe_w    (ao_num,n_points_final_grid,N_states)
    +double precision, allocatable   :: aos_dvc_alpha_pbe_w  (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: aos_dvc_beta_pbe_w   (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: aos_dvx_alpha_pbe_w  (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: aos_dvx_beta_pbe_w   (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: grad_aos_dvc_alpha_pbe_w     (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: grad_aos_dvc_beta_pbe_w      (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: grad_aos_dvx_alpha_pbe_w     (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: grad_aos_dvx_beta_pbe_w      (ao_num,n_points_final_grid,3,N_states)
    +
    +
    +

    aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j)

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +aos_dvx_beta_pbe_w
    +

    File : dft_utils_one_e/pot_ao.irp.f

    +
    double precision, allocatable   :: aos_vc_alpha_pbe_w   (ao_num,n_points_final_grid,N_states)
    +double precision, allocatable   :: aos_vc_beta_pbe_w    (ao_num,n_points_final_grid,N_states)
    +double precision, allocatable   :: aos_vx_alpha_pbe_w   (ao_num,n_points_final_grid,N_states)
    +double precision, allocatable   :: aos_vx_beta_pbe_w    (ao_num,n_points_final_grid,N_states)
    +double precision, allocatable   :: aos_dvc_alpha_pbe_w  (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: aos_dvc_beta_pbe_w   (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: aos_dvx_alpha_pbe_w  (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: aos_dvx_beta_pbe_w   (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: grad_aos_dvc_alpha_pbe_w     (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: grad_aos_dvc_beta_pbe_w      (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: grad_aos_dvx_alpha_pbe_w     (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: grad_aos_dvx_beta_pbe_w      (ao_num,n_points_final_grid,3,N_states)
    +
    +
    +

    aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j)

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +aos_sr_vc_alpha_lda_w
    +

    File : dft_utils_one_e/sr_pot_ao.irp.f

    +
    double precision, allocatable   :: aos_sr_vc_alpha_lda_w        (n_points_final_grid,ao_num,N_states)
    +double precision, allocatable   :: aos_sr_vc_beta_lda_w (n_points_final_grid,ao_num,N_states)
    +double precision, allocatable   :: aos_sr_vx_alpha_lda_w        (n_points_final_grid,ao_num,N_states)
    +double precision, allocatable   :: aos_sr_vx_beta_lda_w (n_points_final_grid,ao_num,N_states)
    +
    +
    +

    aos_sr_vxc_alpha_LDA_w(j,i) = ao_i(r_j) * (sr_v^x_alpha(r_j) + sr_v^c_alpha(r_j)) * W(r_j)

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    + +
      +
    +
    +
    + +
    +
    +aos_sr_vc_alpha_pbe_w
    +

    File : dft_utils_one_e/sr_pot_ao.irp.f

    +
    double precision, allocatable   :: aos_sr_vc_alpha_pbe_w        (ao_num,n_points_final_grid,N_states)
    +double precision, allocatable   :: aos_sr_vc_beta_pbe_w (ao_num,n_points_final_grid,N_states)
    +double precision, allocatable   :: aos_sr_vx_alpha_pbe_w        (ao_num,n_points_final_grid,N_states)
    +double precision, allocatable   :: aos_sr_vx_beta_pbe_w (ao_num,n_points_final_grid,N_states)
    +double precision, allocatable   :: aos_dsr_vc_alpha_pbe_w       (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: aos_dsr_vc_beta_pbe_w        (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: aos_dsr_vx_alpha_pbe_w       (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: aos_dsr_vx_beta_pbe_w        (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: grad_aos_dsr_vc_alpha_pbe_w  (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: grad_aos_dsr_vc_beta_pbe_w   (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: grad_aos_dsr_vx_alpha_pbe_w  (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: grad_aos_dsr_vx_beta_pbe_w   (ao_num,n_points_final_grid,3,N_states)
    +
    +
    +

    aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j)

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +aos_sr_vc_beta_lda_w
    +

    File : dft_utils_one_e/sr_pot_ao.irp.f

    +
    double precision, allocatable   :: aos_sr_vc_alpha_lda_w        (n_points_final_grid,ao_num,N_states)
    +double precision, allocatable   :: aos_sr_vc_beta_lda_w (n_points_final_grid,ao_num,N_states)
    +double precision, allocatable   :: aos_sr_vx_alpha_lda_w        (n_points_final_grid,ao_num,N_states)
    +double precision, allocatable   :: aos_sr_vx_beta_lda_w (n_points_final_grid,ao_num,N_states)
    +
    +
    +

    aos_sr_vxc_alpha_LDA_w(j,i) = ao_i(r_j) * (sr_v^x_alpha(r_j) + sr_v^c_alpha(r_j)) * W(r_j)

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    + +
      +
    +
    +
    + +
    +
    +aos_sr_vc_beta_pbe_w
    +

    File : dft_utils_one_e/sr_pot_ao.irp.f

    +
    double precision, allocatable   :: aos_sr_vc_alpha_pbe_w        (ao_num,n_points_final_grid,N_states)
    +double precision, allocatable   :: aos_sr_vc_beta_pbe_w (ao_num,n_points_final_grid,N_states)
    +double precision, allocatable   :: aos_sr_vx_alpha_pbe_w        (ao_num,n_points_final_grid,N_states)
    +double precision, allocatable   :: aos_sr_vx_beta_pbe_w (ao_num,n_points_final_grid,N_states)
    +double precision, allocatable   :: aos_dsr_vc_alpha_pbe_w       (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: aos_dsr_vc_beta_pbe_w        (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: aos_dsr_vx_alpha_pbe_w       (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: aos_dsr_vx_beta_pbe_w        (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: grad_aos_dsr_vc_alpha_pbe_w  (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: grad_aos_dsr_vc_beta_pbe_w   (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: grad_aos_dsr_vx_alpha_pbe_w  (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: grad_aos_dsr_vx_beta_pbe_w   (ao_num,n_points_final_grid,3,N_states)
    +
    +
    +

    aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j)

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +aos_sr_vx_alpha_lda_w
    +

    File : dft_utils_one_e/sr_pot_ao.irp.f

    +
    double precision, allocatable   :: aos_sr_vc_alpha_lda_w        (n_points_final_grid,ao_num,N_states)
    +double precision, allocatable   :: aos_sr_vc_beta_lda_w (n_points_final_grid,ao_num,N_states)
    +double precision, allocatable   :: aos_sr_vx_alpha_lda_w        (n_points_final_grid,ao_num,N_states)
    +double precision, allocatable   :: aos_sr_vx_beta_lda_w (n_points_final_grid,ao_num,N_states)
    +
    +
    +

    aos_sr_vxc_alpha_LDA_w(j,i) = ao_i(r_j) * (sr_v^x_alpha(r_j) + sr_v^c_alpha(r_j)) * W(r_j)

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    + +
      +
    +
    +
    + +
    +
    +aos_sr_vx_alpha_pbe_w
    +

    File : dft_utils_one_e/sr_pot_ao.irp.f

    +
    double precision, allocatable   :: aos_sr_vc_alpha_pbe_w        (ao_num,n_points_final_grid,N_states)
    +double precision, allocatable   :: aos_sr_vc_beta_pbe_w (ao_num,n_points_final_grid,N_states)
    +double precision, allocatable   :: aos_sr_vx_alpha_pbe_w        (ao_num,n_points_final_grid,N_states)
    +double precision, allocatable   :: aos_sr_vx_beta_pbe_w (ao_num,n_points_final_grid,N_states)
    +double precision, allocatable   :: aos_dsr_vc_alpha_pbe_w       (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: aos_dsr_vc_beta_pbe_w        (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: aos_dsr_vx_alpha_pbe_w       (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: aos_dsr_vx_beta_pbe_w        (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: grad_aos_dsr_vc_alpha_pbe_w  (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: grad_aos_dsr_vc_beta_pbe_w   (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: grad_aos_dsr_vx_alpha_pbe_w  (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: grad_aos_dsr_vx_beta_pbe_w   (ao_num,n_points_final_grid,3,N_states)
    +
    +
    +

    aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j)

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +aos_sr_vx_beta_lda_w
    +

    File : dft_utils_one_e/sr_pot_ao.irp.f

    +
    double precision, allocatable   :: aos_sr_vc_alpha_lda_w        (n_points_final_grid,ao_num,N_states)
    +double precision, allocatable   :: aos_sr_vc_beta_lda_w (n_points_final_grid,ao_num,N_states)
    +double precision, allocatable   :: aos_sr_vx_alpha_lda_w        (n_points_final_grid,ao_num,N_states)
    +double precision, allocatable   :: aos_sr_vx_beta_lda_w (n_points_final_grid,ao_num,N_states)
    +
    +
    +

    aos_sr_vxc_alpha_LDA_w(j,i) = ao_i(r_j) * (sr_v^x_alpha(r_j) + sr_v^c_alpha(r_j)) * W(r_j)

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    + +
      +
    +
    +
    + +
    +
    +aos_sr_vx_beta_pbe_w
    +

    File : dft_utils_one_e/sr_pot_ao.irp.f

    +
    double precision, allocatable   :: aos_sr_vc_alpha_pbe_w        (ao_num,n_points_final_grid,N_states)
    +double precision, allocatable   :: aos_sr_vc_beta_pbe_w (ao_num,n_points_final_grid,N_states)
    +double precision, allocatable   :: aos_sr_vx_alpha_pbe_w        (ao_num,n_points_final_grid,N_states)
    +double precision, allocatable   :: aos_sr_vx_beta_pbe_w (ao_num,n_points_final_grid,N_states)
    +double precision, allocatable   :: aos_dsr_vc_alpha_pbe_w       (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: aos_dsr_vc_beta_pbe_w        (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: aos_dsr_vx_alpha_pbe_w       (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: aos_dsr_vx_beta_pbe_w        (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: grad_aos_dsr_vc_alpha_pbe_w  (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: grad_aos_dsr_vc_beta_pbe_w   (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: grad_aos_dsr_vx_alpha_pbe_w  (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: grad_aos_dsr_vx_beta_pbe_w   (ao_num,n_points_final_grid,3,N_states)
    +
    +
    +

    aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j)

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +aos_vc_alpha_lda_w
    +

    File : dft_utils_one_e/pot_ao.irp.f

    +
    double precision, allocatable   :: aos_vc_alpha_lda_w   (n_points_final_grid,ao_num,N_states)
    +double precision, allocatable   :: aos_vc_beta_lda_w    (n_points_final_grid,ao_num,N_states)
    +double precision, allocatable   :: aos_vx_alpha_lda_w   (n_points_final_grid,ao_num,N_states)
    +double precision, allocatable   :: aos_vx_beta_lda_w    (n_points_final_grid,ao_num,N_states)
    +
    +
    +

    aos_vxc_alpha_LDA_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j)

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +aos_vc_alpha_pbe_w
    +

    File : dft_utils_one_e/pot_ao.irp.f

    +
    double precision, allocatable   :: aos_vc_alpha_pbe_w   (ao_num,n_points_final_grid,N_states)
    +double precision, allocatable   :: aos_vc_beta_pbe_w    (ao_num,n_points_final_grid,N_states)
    +double precision, allocatable   :: aos_vx_alpha_pbe_w   (ao_num,n_points_final_grid,N_states)
    +double precision, allocatable   :: aos_vx_beta_pbe_w    (ao_num,n_points_final_grid,N_states)
    +double precision, allocatable   :: aos_dvc_alpha_pbe_w  (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: aos_dvc_beta_pbe_w   (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: aos_dvx_alpha_pbe_w  (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: aos_dvx_beta_pbe_w   (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: grad_aos_dvc_alpha_pbe_w     (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: grad_aos_dvc_beta_pbe_w      (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: grad_aos_dvx_alpha_pbe_w     (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: grad_aos_dvx_beta_pbe_w      (ao_num,n_points_final_grid,3,N_states)
    +
    +
    +

    aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j)

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +aos_vc_beta_lda_w
    +

    File : dft_utils_one_e/pot_ao.irp.f

    +
    double precision, allocatable   :: aos_vc_alpha_lda_w   (n_points_final_grid,ao_num,N_states)
    +double precision, allocatable   :: aos_vc_beta_lda_w    (n_points_final_grid,ao_num,N_states)
    +double precision, allocatable   :: aos_vx_alpha_lda_w   (n_points_final_grid,ao_num,N_states)
    +double precision, allocatable   :: aos_vx_beta_lda_w    (n_points_final_grid,ao_num,N_states)
    +
    +
    +

    aos_vxc_alpha_LDA_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j)

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +aos_vc_beta_pbe_w
    +

    File : dft_utils_one_e/pot_ao.irp.f

    +
    double precision, allocatable   :: aos_vc_alpha_pbe_w   (ao_num,n_points_final_grid,N_states)
    +double precision, allocatable   :: aos_vc_beta_pbe_w    (ao_num,n_points_final_grid,N_states)
    +double precision, allocatable   :: aos_vx_alpha_pbe_w   (ao_num,n_points_final_grid,N_states)
    +double precision, allocatable   :: aos_vx_beta_pbe_w    (ao_num,n_points_final_grid,N_states)
    +double precision, allocatable   :: aos_dvc_alpha_pbe_w  (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: aos_dvc_beta_pbe_w   (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: aos_dvx_alpha_pbe_w  (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: aos_dvx_beta_pbe_w   (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: grad_aos_dvc_alpha_pbe_w     (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: grad_aos_dvc_beta_pbe_w      (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: grad_aos_dvx_alpha_pbe_w     (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: grad_aos_dvx_beta_pbe_w      (ao_num,n_points_final_grid,3,N_states)
    +
    +
    +

    aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j)

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +aos_vx_alpha_lda_w
    +

    File : dft_utils_one_e/pot_ao.irp.f

    +
    double precision, allocatable   :: aos_vc_alpha_lda_w   (n_points_final_grid,ao_num,N_states)
    +double precision, allocatable   :: aos_vc_beta_lda_w    (n_points_final_grid,ao_num,N_states)
    +double precision, allocatable   :: aos_vx_alpha_lda_w   (n_points_final_grid,ao_num,N_states)
    +double precision, allocatable   :: aos_vx_beta_lda_w    (n_points_final_grid,ao_num,N_states)
    +
    +
    +

    aos_vxc_alpha_LDA_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j)

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +aos_vx_alpha_pbe_w
    +

    File : dft_utils_one_e/pot_ao.irp.f

    +
    double precision, allocatable   :: aos_vc_alpha_pbe_w   (ao_num,n_points_final_grid,N_states)
    +double precision, allocatable   :: aos_vc_beta_pbe_w    (ao_num,n_points_final_grid,N_states)
    +double precision, allocatable   :: aos_vx_alpha_pbe_w   (ao_num,n_points_final_grid,N_states)
    +double precision, allocatable   :: aos_vx_beta_pbe_w    (ao_num,n_points_final_grid,N_states)
    +double precision, allocatable   :: aos_dvc_alpha_pbe_w  (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: aos_dvc_beta_pbe_w   (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: aos_dvx_alpha_pbe_w  (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: aos_dvx_beta_pbe_w   (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: grad_aos_dvc_alpha_pbe_w     (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: grad_aos_dvc_beta_pbe_w      (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: grad_aos_dvx_alpha_pbe_w     (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: grad_aos_dvx_beta_pbe_w      (ao_num,n_points_final_grid,3,N_states)
    +
    +
    +

    aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j)

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +aos_vx_beta_lda_w
    +

    File : dft_utils_one_e/pot_ao.irp.f

    +
    double precision, allocatable   :: aos_vc_alpha_lda_w   (n_points_final_grid,ao_num,N_states)
    +double precision, allocatable   :: aos_vc_beta_lda_w    (n_points_final_grid,ao_num,N_states)
    +double precision, allocatable   :: aos_vx_alpha_lda_w   (n_points_final_grid,ao_num,N_states)
    +double precision, allocatable   :: aos_vx_beta_lda_w    (n_points_final_grid,ao_num,N_states)
    +
    +
    +

    aos_vxc_alpha_LDA_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j)

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +aos_vx_beta_pbe_w
    +

    File : dft_utils_one_e/pot_ao.irp.f

    +
    double precision, allocatable   :: aos_vc_alpha_pbe_w   (ao_num,n_points_final_grid,N_states)
    +double precision, allocatable   :: aos_vc_beta_pbe_w    (ao_num,n_points_final_grid,N_states)
    +double precision, allocatable   :: aos_vx_alpha_pbe_w   (ao_num,n_points_final_grid,N_states)
    +double precision, allocatable   :: aos_vx_beta_pbe_w    (ao_num,n_points_final_grid,N_states)
    +double precision, allocatable   :: aos_dvc_alpha_pbe_w  (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: aos_dvc_beta_pbe_w   (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: aos_dvx_alpha_pbe_w  (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: aos_dvx_beta_pbe_w   (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: grad_aos_dvc_alpha_pbe_w     (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: grad_aos_dvc_beta_pbe_w      (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: grad_aos_dvx_alpha_pbe_w     (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: grad_aos_dvx_beta_pbe_w      (ao_num,n_points_final_grid,3,N_states)
    +
    +
    +

    aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j)

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +effective_one_e_potential
    +

    File : dft_utils_one_e/effective_pot.irp.f

    +
    double precision, allocatable   :: effective_one_e_potential    (mo_num,mo_num,N_states)
    +double precision, allocatable   :: effective_one_e_potential_without_kin        (mo_num,mo_num,N_states)
    +
    +
    +

    Effective_one_e_potential(i,j) = \(\rangle i_{MO}| v_{H}^{sr} |j_{MO}\rangle + \rangle i_{MO}| h_{core} |j_{MO}\rangle + \rangle i_{MO}|v_{xc} |j_{MO}\rangle\)

    +

    on the MO basis +Taking the expectation value does not provide any energy, but +effective_one_e_potential(i,j) is the potential coupling DFT and WFT part to +be used in any WFT calculation.

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +effective_one_e_potential_without_kin
    +

    File : dft_utils_one_e/effective_pot.irp.f

    +
    double precision, allocatable   :: effective_one_e_potential    (mo_num,mo_num,N_states)
    +double precision, allocatable   :: effective_one_e_potential_without_kin        (mo_num,mo_num,N_states)
    +
    +
    +

    Effective_one_e_potential(i,j) = \(\rangle i_{MO}| v_{H}^{sr} |j_{MO}\rangle + \rangle i_{MO}| h_{core} |j_{MO}\rangle + \rangle i_{MO}|v_{xc} |j_{MO}\rangle\)

    +

    on the MO basis +Taking the expectation value does not provide any energy, but +effective_one_e_potential(i,j) is the potential coupling DFT and WFT part to +be used in any WFT calculation.

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +energy_c
    +

    File : dft_utils_one_e/e_xc_general.irp.f

    +
    double precision, allocatable   :: energy_x     (N_states)
    +double precision, allocatable   :: energy_c     (N_states)
    +
    +
    +

    correlation and exchange energies general providers.

    +

    Needs:

    +
    + +
      +
    • n_states
    • +
    +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +energy_c_lda
    +

    File : dft_utils_one_e/e_xc.irp.f

    +
    double precision, allocatable   :: energy_x_lda (N_states)
    +double precision, allocatable   :: energy_c_lda (N_states)
    +
    +
    +

    exchange/correlation energy with the short range LDA functional

    +

    Needs:

    +
    +
      +
    • n_states
    • +
    +
    +
    +
    + +
    +
    +energy_c_pbe
    +

    File : dft_utils_one_e/e_xc.irp.f

    +
    double precision, allocatable   :: energy_x_pbe (N_states)
    +double precision, allocatable   :: energy_c_pbe (N_states)
    +
    +
    +

    exchange/correlation energy with the short range PBE functional

    +

    Needs:

    +
      +
    • correlation_functional
    • +
    • exchange_functional
    • +
    +
    + +
    +
    + +
    +
    +energy_sr_c_lda
    +

    File : dft_utils_one_e/sr_exc.irp.f

    +
    double precision, allocatable   :: energy_sr_x_lda      (N_states)
    +double precision, allocatable   :: energy_sr_c_lda      (N_states)
    +
    +
    +

    exchange/correlation energy with the short range LDA functional

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +energy_sr_c_pbe
    +

    File : dft_utils_one_e/sr_exc.irp.f

    +
    double precision, allocatable   :: energy_sr_x_pbe      (N_states)
    +double precision, allocatable   :: energy_sr_c_pbe      (N_states)
    +
    +
    +

    exchange/correlation energy with the short range PBE functional

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +energy_sr_x_lda
    +

    File : dft_utils_one_e/sr_exc.irp.f

    +
    double precision, allocatable   :: energy_sr_x_lda      (N_states)
    +double precision, allocatable   :: energy_sr_c_lda      (N_states)
    +
    +
    +

    exchange/correlation energy with the short range LDA functional

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +energy_sr_x_pbe
    +

    File : dft_utils_one_e/sr_exc.irp.f

    +
    double precision, allocatable   :: energy_sr_x_pbe      (N_states)
    +double precision, allocatable   :: energy_sr_c_pbe      (N_states)
    +
    +
    +

    exchange/correlation energy with the short range PBE functional

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +energy_x
    +

    File : dft_utils_one_e/e_xc_general.irp.f

    +
    double precision, allocatable   :: energy_x     (N_states)
    +double precision, allocatable   :: energy_c     (N_states)
    +
    +
    +

    correlation and exchange energies general providers.

    +

    Needs:

    +
    + +
      +
    • n_states
    • +
    +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +energy_x_lda
    +

    File : dft_utils_one_e/e_xc.irp.f

    +
    double precision, allocatable   :: energy_x_lda (N_states)
    +double precision, allocatable   :: energy_c_lda (N_states)
    +
    +
    +

    exchange/correlation energy with the short range LDA functional

    +

    Needs:

    +
    +
      +
    • n_states
    • +
    +
    +
    +
    + +
    +
    +energy_x_pbe
    +

    File : dft_utils_one_e/e_xc.irp.f

    +
    double precision, allocatable   :: energy_x_pbe (N_states)
    +double precision, allocatable   :: energy_c_pbe (N_states)
    +
    +
    +

    exchange/correlation energy with the short range PBE functional

    +

    Needs:

    +
      +
    • correlation_functional
    • +
    • exchange_functional
    • +
    +
    + +
    +
    + +
    +
    +gga_sr_type_functionals:()
    +

    File : dft_utils_one_e/utils.irp.f

    +
    subroutine GGA_sr_type_functionals(r,rho_a,rho_b,grad_rho_a_2,grad_rho_b_2,grad_rho_a_b, &
    +                        ex,vx_rho_a,vx_rho_b,vx_grad_rho_a_2,vx_grad_rho_b_2,vx_grad_rho_a_b, &
    +                        ec,vc_rho_a,vc_rho_b,vc_grad_rho_a_2,vc_grad_rho_b_2,vc_grad_rho_a_b )
    +
    +
    +

    routine that helps in building the x/c potentials on the AO basis for a GGA functional with a short-range interaction

    +

    Needs:

    +
    +
      +
    • correlation_functional
    • +
    +
      +
    • n_states
    • +
    +
    +

    Called by:

    +
    + +
      +
    +
    +

    Calls:

    +
      +
    • ec_pbe_sr()
    • +
    • ex_pbe_sr()
    • +
    +
      +
    • grad_rho_ab_to_grad_rho_oc()
    • +
    • rho_ab_to_rho_oc()
    • +
    +
      +
    • v_grad_rho_oc_to_v_grad_rho_ab()
    • +
    • v_rho_oc_to_v_rho_ab()
    • +
    +
    +
    + +
    +
    +gga_type_functionals:()
    +

    File : dft_utils_one_e/utils.irp.f

    +
    subroutine GGA_type_functionals(r,rho_a,rho_b,grad_rho_a_2,grad_rho_b_2,grad_rho_a_b, &
    +                        ex,vx_rho_a,vx_rho_b,vx_grad_rho_a_2,vx_grad_rho_b_2,vx_grad_rho_a_b, &
    +                        ec,vc_rho_a,vc_rho_b,vc_grad_rho_a_2,vc_grad_rho_b_2,vc_grad_rho_a_b )
    +
    +
    +

    routine that helps in building the x/c potentials on the AO basis for a GGA functional

    +

    Needs:

    +
      +
    • n_states
    • +
    +
      +
    • exchange_functional
    • +
    +
      +
    • correlation_functional
    • +
    +
    +

    Called by:

    +
    + +
      +
    +
    +

    Calls:

    +
      +
    • ec_pbe_sr()
    • +
    • ex_pbe_sr()
    • +
    +
      +
    • grad_rho_ab_to_grad_rho_oc()
    • +
    • rho_ab_to_rho_oc()
    • +
    +
      +
    • v_grad_rho_oc_to_v_grad_rho_ab()
    • +
    • v_rho_oc_to_v_rho_ab()
    • +
    +
    +
    + +
    +
    +grad_aos_dsr_vc_alpha_pbe_w
    +

    File : dft_utils_one_e/sr_pot_ao.irp.f

    +
    double precision, allocatable   :: aos_sr_vc_alpha_pbe_w        (ao_num,n_points_final_grid,N_states)
    +double precision, allocatable   :: aos_sr_vc_beta_pbe_w (ao_num,n_points_final_grid,N_states)
    +double precision, allocatable   :: aos_sr_vx_alpha_pbe_w        (ao_num,n_points_final_grid,N_states)
    +double precision, allocatable   :: aos_sr_vx_beta_pbe_w (ao_num,n_points_final_grid,N_states)
    +double precision, allocatable   :: aos_dsr_vc_alpha_pbe_w       (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: aos_dsr_vc_beta_pbe_w        (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: aos_dsr_vx_alpha_pbe_w       (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: aos_dsr_vx_beta_pbe_w        (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: grad_aos_dsr_vc_alpha_pbe_w  (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: grad_aos_dsr_vc_beta_pbe_w   (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: grad_aos_dsr_vx_alpha_pbe_w  (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: grad_aos_dsr_vx_beta_pbe_w   (ao_num,n_points_final_grid,3,N_states)
    +
    +
    +

    aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j)

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +grad_aos_dsr_vc_beta_pbe_w
    +

    File : dft_utils_one_e/sr_pot_ao.irp.f

    +
    double precision, allocatable   :: aos_sr_vc_alpha_pbe_w        (ao_num,n_points_final_grid,N_states)
    +double precision, allocatable   :: aos_sr_vc_beta_pbe_w (ao_num,n_points_final_grid,N_states)
    +double precision, allocatable   :: aos_sr_vx_alpha_pbe_w        (ao_num,n_points_final_grid,N_states)
    +double precision, allocatable   :: aos_sr_vx_beta_pbe_w (ao_num,n_points_final_grid,N_states)
    +double precision, allocatable   :: aos_dsr_vc_alpha_pbe_w       (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: aos_dsr_vc_beta_pbe_w        (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: aos_dsr_vx_alpha_pbe_w       (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: aos_dsr_vx_beta_pbe_w        (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: grad_aos_dsr_vc_alpha_pbe_w  (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: grad_aos_dsr_vc_beta_pbe_w   (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: grad_aos_dsr_vx_alpha_pbe_w  (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: grad_aos_dsr_vx_beta_pbe_w   (ao_num,n_points_final_grid,3,N_states)
    +
    +
    +

    aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j)

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +grad_aos_dsr_vx_alpha_pbe_w
    +

    File : dft_utils_one_e/sr_pot_ao.irp.f

    +
    double precision, allocatable   :: aos_sr_vc_alpha_pbe_w        (ao_num,n_points_final_grid,N_states)
    +double precision, allocatable   :: aos_sr_vc_beta_pbe_w (ao_num,n_points_final_grid,N_states)
    +double precision, allocatable   :: aos_sr_vx_alpha_pbe_w        (ao_num,n_points_final_grid,N_states)
    +double precision, allocatable   :: aos_sr_vx_beta_pbe_w (ao_num,n_points_final_grid,N_states)
    +double precision, allocatable   :: aos_dsr_vc_alpha_pbe_w       (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: aos_dsr_vc_beta_pbe_w        (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: aos_dsr_vx_alpha_pbe_w       (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: aos_dsr_vx_beta_pbe_w        (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: grad_aos_dsr_vc_alpha_pbe_w  (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: grad_aos_dsr_vc_beta_pbe_w   (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: grad_aos_dsr_vx_alpha_pbe_w  (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: grad_aos_dsr_vx_beta_pbe_w   (ao_num,n_points_final_grid,3,N_states)
    +
    +
    +

    aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j)

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +grad_aos_dsr_vx_beta_pbe_w
    +

    File : dft_utils_one_e/sr_pot_ao.irp.f

    +
    double precision, allocatable   :: aos_sr_vc_alpha_pbe_w        (ao_num,n_points_final_grid,N_states)
    +double precision, allocatable   :: aos_sr_vc_beta_pbe_w (ao_num,n_points_final_grid,N_states)
    +double precision, allocatable   :: aos_sr_vx_alpha_pbe_w        (ao_num,n_points_final_grid,N_states)
    +double precision, allocatable   :: aos_sr_vx_beta_pbe_w (ao_num,n_points_final_grid,N_states)
    +double precision, allocatable   :: aos_dsr_vc_alpha_pbe_w       (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: aos_dsr_vc_beta_pbe_w        (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: aos_dsr_vx_alpha_pbe_w       (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: aos_dsr_vx_beta_pbe_w        (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: grad_aos_dsr_vc_alpha_pbe_w  (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: grad_aos_dsr_vc_beta_pbe_w   (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: grad_aos_dsr_vx_alpha_pbe_w  (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: grad_aos_dsr_vx_beta_pbe_w   (ao_num,n_points_final_grid,3,N_states)
    +
    +
    +

    aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j)

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +grad_aos_dvc_alpha_pbe_w
    +

    File : dft_utils_one_e/pot_ao.irp.f

    +
    double precision, allocatable   :: aos_vc_alpha_pbe_w   (ao_num,n_points_final_grid,N_states)
    +double precision, allocatable   :: aos_vc_beta_pbe_w    (ao_num,n_points_final_grid,N_states)
    +double precision, allocatable   :: aos_vx_alpha_pbe_w   (ao_num,n_points_final_grid,N_states)
    +double precision, allocatable   :: aos_vx_beta_pbe_w    (ao_num,n_points_final_grid,N_states)
    +double precision, allocatable   :: aos_dvc_alpha_pbe_w  (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: aos_dvc_beta_pbe_w   (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: aos_dvx_alpha_pbe_w  (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: aos_dvx_beta_pbe_w   (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: grad_aos_dvc_alpha_pbe_w     (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: grad_aos_dvc_beta_pbe_w      (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: grad_aos_dvx_alpha_pbe_w     (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: grad_aos_dvx_beta_pbe_w      (ao_num,n_points_final_grid,3,N_states)
    +
    +
    +

    aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j)

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +grad_aos_dvc_beta_pbe_w
    +

    File : dft_utils_one_e/pot_ao.irp.f

    +
    double precision, allocatable   :: aos_vc_alpha_pbe_w   (ao_num,n_points_final_grid,N_states)
    +double precision, allocatable   :: aos_vc_beta_pbe_w    (ao_num,n_points_final_grid,N_states)
    +double precision, allocatable   :: aos_vx_alpha_pbe_w   (ao_num,n_points_final_grid,N_states)
    +double precision, allocatable   :: aos_vx_beta_pbe_w    (ao_num,n_points_final_grid,N_states)
    +double precision, allocatable   :: aos_dvc_alpha_pbe_w  (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: aos_dvc_beta_pbe_w   (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: aos_dvx_alpha_pbe_w  (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: aos_dvx_beta_pbe_w   (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: grad_aos_dvc_alpha_pbe_w     (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: grad_aos_dvc_beta_pbe_w      (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: grad_aos_dvx_alpha_pbe_w     (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: grad_aos_dvx_beta_pbe_w      (ao_num,n_points_final_grid,3,N_states)
    +
    +
    +

    aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j)

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +grad_aos_dvx_alpha_pbe_w
    +

    File : dft_utils_one_e/pot_ao.irp.f

    +
    double precision, allocatable   :: aos_vc_alpha_pbe_w   (ao_num,n_points_final_grid,N_states)
    +double precision, allocatable   :: aos_vc_beta_pbe_w    (ao_num,n_points_final_grid,N_states)
    +double precision, allocatable   :: aos_vx_alpha_pbe_w   (ao_num,n_points_final_grid,N_states)
    +double precision, allocatable   :: aos_vx_beta_pbe_w    (ao_num,n_points_final_grid,N_states)
    +double precision, allocatable   :: aos_dvc_alpha_pbe_w  (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: aos_dvc_beta_pbe_w   (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: aos_dvx_alpha_pbe_w  (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: aos_dvx_beta_pbe_w   (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: grad_aos_dvc_alpha_pbe_w     (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: grad_aos_dvc_beta_pbe_w      (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: grad_aos_dvx_alpha_pbe_w     (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: grad_aos_dvx_beta_pbe_w      (ao_num,n_points_final_grid,3,N_states)
    +
    +
    +

    aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j)

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +grad_aos_dvx_beta_pbe_w
    +

    File : dft_utils_one_e/pot_ao.irp.f

    +
    double precision, allocatable   :: aos_vc_alpha_pbe_w   (ao_num,n_points_final_grid,N_states)
    +double precision, allocatable   :: aos_vc_beta_pbe_w    (ao_num,n_points_final_grid,N_states)
    +double precision, allocatable   :: aos_vx_alpha_pbe_w   (ao_num,n_points_final_grid,N_states)
    +double precision, allocatable   :: aos_vx_beta_pbe_w    (ao_num,n_points_final_grid,N_states)
    +double precision, allocatable   :: aos_dvc_alpha_pbe_w  (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: aos_dvc_beta_pbe_w   (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: aos_dvx_alpha_pbe_w  (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: aos_dvx_beta_pbe_w   (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: grad_aos_dvc_alpha_pbe_w     (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: grad_aos_dvc_beta_pbe_w      (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: grad_aos_dvx_alpha_pbe_w     (ao_num,n_points_final_grid,3,N_states)
    +double precision, allocatable   :: grad_aos_dvx_beta_pbe_w      (ao_num,n_points_final_grid,3,N_states)
    +
    +
    +

    aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j)

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +mu_erf_dft
    +

    File : dft_utils_one_e/mu_erf_dft.irp.f

    +
    double precision        :: mu_erf_dft
    +
    +
    +

    range separation parameter used in RS-DFT. It is set to mu_erf in order to be consistent with the two electrons integrals erf

    +

    Needs:

    +
      +
    • mu_erf
    • +
    +
      +
    +
      +
    +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +potential_c_alpha_ao
    +

    File : dft_utils_one_e/pot_general.irp.f

    +
    double precision, allocatable   :: potential_x_alpha_ao (ao_num,ao_num,N_states)
    +double precision, allocatable   :: potential_x_beta_ao  (ao_num,ao_num,N_states)
    +double precision, allocatable   :: potential_c_alpha_ao (ao_num,ao_num,N_states)
    +double precision, allocatable   :: potential_c_beta_ao  (ao_num,ao_num,N_states)
    +
    +
    +

    general providers for the alpha/beta exchange/correlation potentials on the AO basis

    +

    Needs:

    +
      +
    • ao_num
    • +
    • correlation_functional
    • +
    • exchange_functional
    • +
    +
    + +
    +

    Needed by:

    +
    + +
      +
    +
    +
    + +
    +
    +potential_c_alpha_ao_lda
    +

    File : dft_utils_one_e/pot_ao.irp.f

    +
    double precision, allocatable   :: potential_x_alpha_ao_lda     (ao_num,ao_num,N_states)
    +double precision, allocatable   :: potential_x_beta_ao_lda      (ao_num,ao_num,N_states)
    +double precision, allocatable   :: potential_c_alpha_ao_lda     (ao_num,ao_num,N_states)
    +double precision, allocatable   :: potential_c_beta_ao_lda      (ao_num,ao_num,N_states)
    +
    +
    +

    short range exchange/correlation alpha/beta potentials with LDA functional on the AO basis

    +

    Needs:

    +
    + +
      +
    • n_states
    • +
    +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +potential_c_alpha_ao_pbe
    +

    File : dft_utils_one_e/pot_ao.irp.f

    +
    double precision, allocatable   :: potential_x_alpha_ao_pbe     (ao_num,ao_num,N_states)
    +double precision, allocatable   :: potential_x_beta_ao_pbe      (ao_num,ao_num,N_states)
    +double precision, allocatable   :: potential_c_alpha_ao_pbe     (ao_num,ao_num,N_states)
    +double precision, allocatable   :: potential_c_beta_ao_pbe      (ao_num,ao_num,N_states)
    +
    +
    +

    exchange/correlation alpha/beta potentials with the short range PBE functional on the AO basis

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +potential_c_alpha_mo
    +

    File : dft_utils_one_e/pot_general.irp.f

    +
    double precision, allocatable   :: potential_x_alpha_mo (mo_num,mo_num,N_states)
    +double precision, allocatable   :: potential_x_beta_mo  (mo_num,mo_num,N_states)
    +double precision, allocatable   :: potential_c_alpha_mo (mo_num,mo_num,N_states)
    +double precision, allocatable   :: potential_c_beta_mo  (mo_num,mo_num,N_states)
    +
    +
    +

    general providers for the alpha/beta exchange/correlation potentials on the MO basis

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    + +
      +
    +
    +
    + +
    +
    +potential_c_beta_ao
    +

    File : dft_utils_one_e/pot_general.irp.f

    +
    double precision, allocatable   :: potential_x_alpha_ao (ao_num,ao_num,N_states)
    +double precision, allocatable   :: potential_x_beta_ao  (ao_num,ao_num,N_states)
    +double precision, allocatable   :: potential_c_alpha_ao (ao_num,ao_num,N_states)
    +double precision, allocatable   :: potential_c_beta_ao  (ao_num,ao_num,N_states)
    +
    +
    +

    general providers for the alpha/beta exchange/correlation potentials on the AO basis

    +

    Needs:

    +
      +
    • ao_num
    • +
    • correlation_functional
    • +
    • exchange_functional
    • +
    +
    + +
    +

    Needed by:

    +
    + +
      +
    +
    +
    + +
    +
    +potential_c_beta_ao_lda
    +

    File : dft_utils_one_e/pot_ao.irp.f

    +
    double precision, allocatable   :: potential_x_alpha_ao_lda     (ao_num,ao_num,N_states)
    +double precision, allocatable   :: potential_x_beta_ao_lda      (ao_num,ao_num,N_states)
    +double precision, allocatable   :: potential_c_alpha_ao_lda     (ao_num,ao_num,N_states)
    +double precision, allocatable   :: potential_c_beta_ao_lda      (ao_num,ao_num,N_states)
    +
    +
    +

    short range exchange/correlation alpha/beta potentials with LDA functional on the AO basis

    +

    Needs:

    +
    + +
      +
    • n_states
    • +
    +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +potential_c_beta_ao_pbe
    +

    File : dft_utils_one_e/pot_ao.irp.f

    +
    double precision, allocatable   :: potential_x_alpha_ao_pbe     (ao_num,ao_num,N_states)
    +double precision, allocatable   :: potential_x_beta_ao_pbe      (ao_num,ao_num,N_states)
    +double precision, allocatable   :: potential_c_alpha_ao_pbe     (ao_num,ao_num,N_states)
    +double precision, allocatable   :: potential_c_beta_ao_pbe      (ao_num,ao_num,N_states)
    +
    +
    +

    exchange/correlation alpha/beta potentials with the short range PBE functional on the AO basis

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +potential_c_beta_mo
    +

    File : dft_utils_one_e/pot_general.irp.f

    +
    double precision, allocatable   :: potential_x_alpha_mo (mo_num,mo_num,N_states)
    +double precision, allocatable   :: potential_x_beta_mo  (mo_num,mo_num,N_states)
    +double precision, allocatable   :: potential_c_alpha_mo (mo_num,mo_num,N_states)
    +double precision, allocatable   :: potential_c_beta_mo  (mo_num,mo_num,N_states)
    +
    +
    +

    general providers for the alpha/beta exchange/correlation potentials on the MO basis

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    + +
      +
    +
    +
    + +
    +
    +potential_sr_c_alpha_ao_lda
    +

    File : dft_utils_one_e/sr_pot_ao.irp.f

    +
    double precision, allocatable   :: potential_sr_c_alpha_ao_lda  (ao_num,ao_num,N_states)
    +double precision, allocatable   :: potential_sr_c_beta_ao_lda   (ao_num,ao_num,N_states)
    +
    +
    +

    short range correlation alpha/beta potentials with LDA functional on the AO basis

    +

    Needs:

    +
    + +
      +
    • n_states
    • +
    +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +potential_sr_c_alpha_ao_pbe
    +

    File : dft_utils_one_e/sr_pot_ao.irp.f

    +
    double precision, allocatable   :: potential_sr_x_alpha_ao_pbe  (ao_num,ao_num,N_states)
    +double precision, allocatable   :: potential_sr_x_beta_ao_pbe   (ao_num,ao_num,N_states)
    +double precision, allocatable   :: potential_sr_c_alpha_ao_pbe  (ao_num,ao_num,N_states)
    +double precision, allocatable   :: potential_sr_c_beta_ao_pbe   (ao_num,ao_num,N_states)
    +
    +
    +

    exchange/correlation alpha/beta potentials with the short range PBE functional on the AO basis

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +potential_sr_c_beta_ao_lda
    +

    File : dft_utils_one_e/sr_pot_ao.irp.f

    +
    double precision, allocatable   :: potential_sr_c_alpha_ao_lda  (ao_num,ao_num,N_states)
    +double precision, allocatable   :: potential_sr_c_beta_ao_lda   (ao_num,ao_num,N_states)
    +
    +
    +

    short range correlation alpha/beta potentials with LDA functional on the AO basis

    +

    Needs:

    +
    + +
      +
    • n_states
    • +
    +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +potential_sr_c_beta_ao_pbe
    +

    File : dft_utils_one_e/sr_pot_ao.irp.f

    +
    double precision, allocatable   :: potential_sr_x_alpha_ao_pbe  (ao_num,ao_num,N_states)
    +double precision, allocatable   :: potential_sr_x_beta_ao_pbe   (ao_num,ao_num,N_states)
    +double precision, allocatable   :: potential_sr_c_alpha_ao_pbe  (ao_num,ao_num,N_states)
    +double precision, allocatable   :: potential_sr_c_beta_ao_pbe   (ao_num,ao_num,N_states)
    +
    +
    +

    exchange/correlation alpha/beta potentials with the short range PBE functional on the AO basis

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +potential_sr_x_alpha_ao_lda
    +

    File : dft_utils_one_e/sr_pot_ao.irp.f

    +
    double precision, allocatable   :: potential_sr_x_alpha_ao_lda  (ao_num,ao_num,N_states)
    +double precision, allocatable   :: potential_sr_x_beta_ao_lda   (ao_num,ao_num,N_states)
    +
    +
    +

    short range exchange alpha/beta potentials with LDA functional on the AO basis

    +

    Needs:

    +
    + +
      +
    • n_states
    • +
    +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +potential_sr_x_alpha_ao_pbe
    +

    File : dft_utils_one_e/sr_pot_ao.irp.f

    +
    double precision, allocatable   :: potential_sr_x_alpha_ao_pbe  (ao_num,ao_num,N_states)
    +double precision, allocatable   :: potential_sr_x_beta_ao_pbe   (ao_num,ao_num,N_states)
    +double precision, allocatable   :: potential_sr_c_alpha_ao_pbe  (ao_num,ao_num,N_states)
    +double precision, allocatable   :: potential_sr_c_beta_ao_pbe   (ao_num,ao_num,N_states)
    +
    +
    +

    exchange/correlation alpha/beta potentials with the short range PBE functional on the AO basis

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +potential_sr_x_beta_ao_lda
    +

    File : dft_utils_one_e/sr_pot_ao.irp.f

    +
    double precision, allocatable   :: potential_sr_x_alpha_ao_lda  (ao_num,ao_num,N_states)
    +double precision, allocatable   :: potential_sr_x_beta_ao_lda   (ao_num,ao_num,N_states)
    +
    +
    +

    short range exchange alpha/beta potentials with LDA functional on the AO basis

    +

    Needs:

    +
    + +
      +
    • n_states
    • +
    +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +potential_sr_x_beta_ao_pbe
    +

    File : dft_utils_one_e/sr_pot_ao.irp.f

    +
    double precision, allocatable   :: potential_sr_x_alpha_ao_pbe  (ao_num,ao_num,N_states)
    +double precision, allocatable   :: potential_sr_x_beta_ao_pbe   (ao_num,ao_num,N_states)
    +double precision, allocatable   :: potential_sr_c_alpha_ao_pbe  (ao_num,ao_num,N_states)
    +double precision, allocatable   :: potential_sr_c_beta_ao_pbe   (ao_num,ao_num,N_states)
    +
    +
    +

    exchange/correlation alpha/beta potentials with the short range PBE functional on the AO basis

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +potential_x_alpha_ao
    +

    File : dft_utils_one_e/pot_general.irp.f

    +
    double precision, allocatable   :: potential_x_alpha_ao (ao_num,ao_num,N_states)
    +double precision, allocatable   :: potential_x_beta_ao  (ao_num,ao_num,N_states)
    +double precision, allocatable   :: potential_c_alpha_ao (ao_num,ao_num,N_states)
    +double precision, allocatable   :: potential_c_beta_ao  (ao_num,ao_num,N_states)
    +
    +
    +

    general providers for the alpha/beta exchange/correlation potentials on the AO basis

    +

    Needs:

    +
      +
    • ao_num
    • +
    • correlation_functional
    • +
    • exchange_functional
    • +
    +
    + +
    +

    Needed by:

    +
    + +
      +
    +
    +
    + +
    +
    +potential_x_alpha_ao_lda
    +

    File : dft_utils_one_e/pot_ao.irp.f

    +
    double precision, allocatable   :: potential_x_alpha_ao_lda     (ao_num,ao_num,N_states)
    +double precision, allocatable   :: potential_x_beta_ao_lda      (ao_num,ao_num,N_states)
    +double precision, allocatable   :: potential_c_alpha_ao_lda     (ao_num,ao_num,N_states)
    +double precision, allocatable   :: potential_c_beta_ao_lda      (ao_num,ao_num,N_states)
    +
    +
    +

    short range exchange/correlation alpha/beta potentials with LDA functional on the AO basis

    +

    Needs:

    +
    + +
      +
    • n_states
    • +
    +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +potential_x_alpha_ao_pbe
    +

    File : dft_utils_one_e/pot_ao.irp.f

    +
    double precision, allocatable   :: potential_x_alpha_ao_pbe     (ao_num,ao_num,N_states)
    +double precision, allocatable   :: potential_x_beta_ao_pbe      (ao_num,ao_num,N_states)
    +double precision, allocatable   :: potential_c_alpha_ao_pbe     (ao_num,ao_num,N_states)
    +double precision, allocatable   :: potential_c_beta_ao_pbe      (ao_num,ao_num,N_states)
    +
    +
    +

    exchange/correlation alpha/beta potentials with the short range PBE functional on the AO basis

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +potential_x_alpha_mo
    +

    File : dft_utils_one_e/pot_general.irp.f

    +
    double precision, allocatable   :: potential_x_alpha_mo (mo_num,mo_num,N_states)
    +double precision, allocatable   :: potential_x_beta_mo  (mo_num,mo_num,N_states)
    +double precision, allocatable   :: potential_c_alpha_mo (mo_num,mo_num,N_states)
    +double precision, allocatable   :: potential_c_beta_mo  (mo_num,mo_num,N_states)
    +
    +
    +

    general providers for the alpha/beta exchange/correlation potentials on the MO basis

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    + +
      +
    +
    +
    + +
    +
    +potential_x_beta_ao
    +

    File : dft_utils_one_e/pot_general.irp.f

    +
    double precision, allocatable   :: potential_x_alpha_ao (ao_num,ao_num,N_states)
    +double precision, allocatable   :: potential_x_beta_ao  (ao_num,ao_num,N_states)
    +double precision, allocatable   :: potential_c_alpha_ao (ao_num,ao_num,N_states)
    +double precision, allocatable   :: potential_c_beta_ao  (ao_num,ao_num,N_states)
    +
    +
    +

    general providers for the alpha/beta exchange/correlation potentials on the AO basis

    +

    Needs:

    +
      +
    • ao_num
    • +
    • correlation_functional
    • +
    • exchange_functional
    • +
    +
    + +
    +

    Needed by:

    +
    + +
      +
    +
    +
    + +
    +
    +potential_x_beta_ao_lda
    +

    File : dft_utils_one_e/pot_ao.irp.f

    +
    double precision, allocatable   :: potential_x_alpha_ao_lda     (ao_num,ao_num,N_states)
    +double precision, allocatable   :: potential_x_beta_ao_lda      (ao_num,ao_num,N_states)
    +double precision, allocatable   :: potential_c_alpha_ao_lda     (ao_num,ao_num,N_states)
    +double precision, allocatable   :: potential_c_beta_ao_lda      (ao_num,ao_num,N_states)
    +
    +
    +

    short range exchange/correlation alpha/beta potentials with LDA functional on the AO basis

    +

    Needs:

    +
    + +
      +
    • n_states
    • +
    +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +potential_x_beta_ao_pbe
    +

    File : dft_utils_one_e/pot_ao.irp.f

    +
    double precision, allocatable   :: potential_x_alpha_ao_pbe     (ao_num,ao_num,N_states)
    +double precision, allocatable   :: potential_x_beta_ao_pbe      (ao_num,ao_num,N_states)
    +double precision, allocatable   :: potential_c_alpha_ao_pbe     (ao_num,ao_num,N_states)
    +double precision, allocatable   :: potential_c_beta_ao_pbe      (ao_num,ao_num,N_states)
    +
    +
    +

    exchange/correlation alpha/beta potentials with the short range PBE functional on the AO basis

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +potential_x_beta_mo
    +

    File : dft_utils_one_e/pot_general.irp.f

    +
    double precision, allocatable   :: potential_x_alpha_mo (mo_num,mo_num,N_states)
    +double precision, allocatable   :: potential_x_beta_mo  (mo_num,mo_num,N_states)
    +double precision, allocatable   :: potential_c_alpha_mo (mo_num,mo_num,N_states)
    +double precision, allocatable   :: potential_c_beta_mo  (mo_num,mo_num,N_states)
    +
    +
    +

    general providers for the alpha/beta exchange/correlation potentials on the MO basis

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    + +
      +
    +
    +
    + +
    +
    +psi_dft_energy_h_core
    +

    File : dft_utils_one_e/one_e_energy_dft.irp.f

    +
    double precision, allocatable   :: psi_dft_energy_kinetic       (N_states)
    +double precision, allocatable   :: psi_dft_energy_nuclear_elec  (N_states)
    +double precision, allocatable   :: psi_dft_energy_h_core        (N_states)
    +
    +
    +

    kinetic, electron-nuclear and total h_core energy computed with the density matrix one_e_dm_mo_beta_for_dft+one_e_dm_mo_alpha_for_dft

    +

    Needs:

    +
    + + +
    +
    + +
    +
    +psi_dft_energy_kinetic
    +

    File : dft_utils_one_e/one_e_energy_dft.irp.f

    +
    double precision, allocatable   :: psi_dft_energy_kinetic       (N_states)
    +double precision, allocatable   :: psi_dft_energy_nuclear_elec  (N_states)
    +double precision, allocatable   :: psi_dft_energy_h_core        (N_states)
    +
    +
    +

    kinetic, electron-nuclear and total h_core energy computed with the density matrix one_e_dm_mo_beta_for_dft+one_e_dm_mo_alpha_for_dft

    +

    Needs:

    +
    + + +
    +
    + +
    +
    +psi_dft_energy_nuclear_elec
    +

    File : dft_utils_one_e/one_e_energy_dft.irp.f

    +
    double precision, allocatable   :: psi_dft_energy_kinetic       (N_states)
    +double precision, allocatable   :: psi_dft_energy_nuclear_elec  (N_states)
    +double precision, allocatable   :: psi_dft_energy_h_core        (N_states)
    +
    +
    +

    kinetic, electron-nuclear and total h_core energy computed with the density matrix one_e_dm_mo_beta_for_dft+one_e_dm_mo_alpha_for_dft

    +

    Needs:

    +
    + + +
    +
    + +
    +
    +shifting_constant
    +

    File : dft_utils_one_e/shifted_potential.irp.f

    +
    double precision, allocatable   :: shifting_constant    (N_states)
    +
    +
    +

    shifting_constant = (E_{Hxc} - <Psi | V_{Hxc} | Psi>) / N_elec +constant to add to the potential in order to obtain the variational energy as +the eigenvalue of the effective long-range Hamiltonian +(see original paper of Levy PRL 113, 113002 (2014), equation (17) )

    +

    Needs:

    +
    + + +
    +
    + +
    +
    +short_range_hartree
    +

    File : dft_utils_one_e/sr_coulomb.irp.f

    +
    double precision, allocatable   :: short_range_hartree_operator (mo_num,mo_num,N_states)
    +double precision, allocatable   :: short_range_hartree  (N_states)
    +
    +
    +

    short_range_Hartree_operator(i,j) = \(\int dr i(r)j(r) \int r' \rho(r') W_{ee}^{sr}\)

    +

    short_range_Hartree = \(1/2 \sum_{i,j} \rho_{ij} \mathtt{short_range_Hartree_operator}(i,j)\)

    +
    +
    = \(1/2 \int dr \int r' \rho(r) \rho(r') W_{ee}^{sr}\)
    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +short_range_hartree_operator
    +

    File : dft_utils_one_e/sr_coulomb.irp.f

    +
    double precision, allocatable   :: short_range_hartree_operator (mo_num,mo_num,N_states)
    +double precision, allocatable   :: short_range_hartree  (N_states)
    +
    +
    +

    short_range_Hartree_operator(i,j) = \(\int dr i(r)j(r) \int r' \rho(r') W_{ee}^{sr}\)

    +

    short_range_Hartree = \(1/2 \sum_{i,j} \rho_{ij} \mathtt{short_range_Hartree_operator}(i,j)\)

    +
    +
    = \(1/2 \int dr \int r' \rho(r) \rho(r') W_{ee}^{sr}\)
    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +trace_v_h
    +

    File : dft_utils_one_e/pot_general.irp.f

    +
    double precision, allocatable   :: trace_v_xc   (N_states)
    +double precision, allocatable   :: trace_v_h    (N_states)
    +double precision, allocatable   :: trace_v_hxc  (N_states)
    +
    +
    +

    Trace_v_xc = sum_{i,j} (rho_{ij}_alpha v^{xc}_{ij}^alpha + rho_{ij}_beta v^{xc}_{ij}^beta) +Trace_v_Hxc = sum_{i,j} v^{H}_{ij} (rho_{ij}_alpha + rho_{ij}_beta) +Trace_v_Hxc = sum_{i,j} rho_{ij} v^{Hxc}_{ij}

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +trace_v_hxc
    +

    File : dft_utils_one_e/pot_general.irp.f

    +
    double precision, allocatable   :: trace_v_xc   (N_states)
    +double precision, allocatable   :: trace_v_h    (N_states)
    +double precision, allocatable   :: trace_v_hxc  (N_states)
    +
    +
    +

    Trace_v_xc = sum_{i,j} (rho_{ij}_alpha v^{xc}_{ij}^alpha + rho_{ij}_beta v^{xc}_{ij}^beta) +Trace_v_Hxc = sum_{i,j} v^{H}_{ij} (rho_{ij}_alpha + rho_{ij}_beta) +Trace_v_Hxc = sum_{i,j} rho_{ij} v^{Hxc}_{ij}

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +trace_v_xc
    +

    File : dft_utils_one_e/pot_general.irp.f

    +
    double precision, allocatable   :: trace_v_xc   (N_states)
    +double precision, allocatable   :: trace_v_h    (N_states)
    +double precision, allocatable   :: trace_v_hxc  (N_states)
    +
    +
    +

    Trace_v_xc = sum_{i,j} (rho_{ij}_alpha v^{xc}_{ij}^alpha + rho_{ij}_beta v^{xc}_{ij}^beta) +Trace_v_Hxc = sum_{i,j} v^{H}_{ij} (rho_{ij}_alpha + rho_{ij}_beta) +Trace_v_Hxc = sum_{i,j} rho_{ij} v^{Hxc}_{ij}

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +

    Subroutines / functions

    +
    +
    +berf:()
    +

    File : dft_utils_one_e/exc_sr_lda.irp.f

    +
    function berf(a)
    +
    +
    +
    + +
    +
    +dberfda:()
    +

    File : dft_utils_one_e/exc_sr_lda.irp.f

    +
    function dberfda(a)
    +
    +
    +
    + +
    +
    +dpol:()
    +

    File : dft_utils_one_e/exc_sr_lda.irp.f

    +
    double precision function dpol(rs)
    +
    +
    +
    + +
    +
    +dpold:()
    +

    File : dft_utils_one_e/exc_sr_lda.irp.f

    +
    double precision function dpold(rs)
    +
    +
    +
    + +
    +
    +dpoldd:()
    +

    File : dft_utils_one_e/exc_sr_lda.irp.f

    +
    double precision function dpoldd(rs)
    +
    +
    +
    + +
    +
    +ec_lda:()
    +

    File : dft_utils_one_e/exc_sr_lda.irp.f

    +
    subroutine ec_lda(rho_a,rho_b,ec,vc_a,vc_b)
    +
    +
    +

    Called by:

    +
      +
    • ec_pbe_only()
    • +
    +
      +
    • ec_pbe_sr()
    • +
    +
    +
    +

    Calls:

    +
      +
    • ecpw()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +ec_lda_sr:()
    +

    File : dft_utils_one_e/exc_sr_lda.irp.f

    +
    subroutine ec_lda_sr(mu,rho_a,rho_b,ec,vc_a,vc_b)
    +
    +
    +

    Called by:

    +
    +
      +
    • ec_pbe_only()
    • +
    • ec_pbe_sr()
    • +
    +
    +
    +

    Calls:

    +
      +
    • ecorrlr()
    • +
    +
      +
    • ecpw()
    • +
    +
      +
    • vcorrlr()
    • +
    +
    +
    + +
    +
    +ec_only_lda_sr:()
    +

    File : dft_utils_one_e/exc_sr_lda.irp.f

    +
    subroutine ec_only_lda_sr(mu,rho_a,rho_b,ec)
    +
    +
    +

    Calls:

    +
      +
    • ecorrlr()
    • +
    +
      +
    • ecpw()
    • +
    +
      +
    +
    +
    + +
    +
    +ec_pbe_only:()
    +

    File : dft_utils_one_e/exc_sr_pbe.irp.f

    +
    subroutine ec_pbe_only(mu,rhoc,rhoo,sigmacc,sigmaco,sigmaoo,ec)
    +
    +
    +

    Short-range PBE correlation energy functional for erf interaction

    +

    input : ==========

    +

    mu = range separated parameter

    +

    rhoc, rhoo = total density and spin density

    +

    sigmacc = square of the gradient of the total density

    +

    sigmaco = square of the gradient of the spin density

    +

    sigmaoo = scalar product between the gradient of the total density and the one of the spin density

    +

    output: ==========

    +

    ec = correlation energy

    +

    Calls:

    +
      +
    • ec_lda()
    • +
    +
      +
    • ec_lda_sr()
    • +
    +
      +
    +
    +
    + +
    +
    +ec_pbe_sr:()
    +

    File : dft_utils_one_e/exc_sr_pbe.irp.f

    +
    subroutine ec_pbe_sr(mu,rhoc,rhoo,sigmacc,sigmaco,sigmaoo,ec,vrhoc,vrhoo,vsigmacc,vsigmaco,vsigmaoo)
    +
    +
    +

    Short-range PBE correlation energy functional for erf interaction

    +

    input : ==========

    +

    mu = range separated parameter

    +

    rhoc, rhoo = total density and spin density

    +

    sigmacc = square of the gradient of the total density

    +

    sigmaco = square of the gradient of the spin density

    +

    sigmaoo = scalar product between the gradient of the total density and the one of the spin density

    +

    output: ==========

    +

    ec = correlation energy

    +

    all variables v** are energy derivatives with respect to components of the density

    +

    vrhoc = derivative with respect to the total density

    +

    vrhoo = derivative with respect to spin density

    +

    vsigmacc = derivative with respect to the square of the gradient of the total density

    +

    vsigmaco = derivative with respect to scalar product between the gradients of total and spin densities

    +

    vsigmaoo = derivative with respect to the square of the gradient of the psin density

    +

    Called by:

    +
      +
    • gga_sr_type_functionals()
    • +
    +
      +
    • gga_type_functionals()
    • +
    +
      +
    +
    +

    Calls:

    +
      +
    • ec_lda()
    • +
    +
      +
    • ec_lda_sr()
    • +
    +
      +
    +
    +
    + +
    +
    +ecorrlr:()
    +

    File : dft_utils_one_e/exc_sr_lda.irp.f

    +
    subroutine ecorrlr(rs,z,mu,eclr)
    +
    +
    +

    Called by:

    +
      +
    • ec_lda_sr()
    • +
    +
      +
    • ec_only_lda_sr()
    • +
    +
      +
    +
    +

    Calls:

    +
      +
    • ecpw()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +ecpw:()
    +

    File : dft_utils_one_e/exc_sr_lda.irp.f

    +
    subroutine ecPW(x,y,ec,ecd,ecz,ecdd,eczd)
    +
    +
    +

    Called by:

    +
      +
    • ec_lda()
    • +
    • ec_lda_sr()
    • +
    +
      +
    • ec_only_lda_sr()
    • +
    • ecorrlr()
    • +
    +
      +
    • vcorrlr()
    • +
    +
    +

    Calls:

    +
      +
    • gpw()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +ex_lda:()
    +

    File : dft_utils_one_e/exc_sr_lda.irp.f

    +
    subroutine ex_lda(rho_a,rho_b,ex,vx_a,vx_b)
    +
    +
    +

    Called by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +ex_lda_sr:()
    +

    File : dft_utils_one_e/exc_sr_lda.irp.f

    +
    subroutine ex_lda_sr(mu,rho_a,rho_b,ex,vx_a,vx_b)
    +
    +
    +

    Called by:

    +
    + +
      +
    • ex_pbe_sr_only()
    • +
    +
    +
    + +
    +
    +ex_pbe_sr:()
    +

    File : dft_utils_one_e/exc_sr_pbe.irp.f

    +
    subroutine ex_pbe_sr(mu,rho_a,rho_b,grd_rho_a_2,grd_rho_b_2,grd_rho_a_b,ex,vx_rho_a,vx_rho_b,vx_grd_rho_a_2,vx_grd_rho_b_2,vx_grd_rho_a_b)
    +
    +
    +

    mu = range separation parameter +rho_a = density alpha +rho_b = density beta +grd_rho_a_2 = (gradient rho_a)^2 +grd_rho_b_2 = (gradient rho_b)^2 +grd_rho_a_b = (gradient rho_a).(gradient rho_b) +ex = exchange energy density at the density and corresponding gradients of the density +vx_rho_a = d ex / d rho_a +vx_rho_b = d ex / d rho_b +vx_grd_rho_a_2 = d ex / d grd_rho_a_2 +vx_grd_rho_b_2 = d ex / d grd_rho_b_2 +vx_grd_rho_a_b = d ex / d grd_rho_a_b

    +

    Called by:

    +
      +
    • gga_sr_type_functionals()
    • +
    +
      +
    • gga_type_functionals()
    • +
    +
      +
    +
    +

    Calls:

    +
      +
    • ex_lda_sr()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +ex_pbe_sr_only:()
    +

    File : dft_utils_one_e/exc_sr_pbe.irp.f

    +
    subroutine ex_pbe_sr_only(mu,rho_a,rho_b,grd_rho_a_2,grd_rho_b_2,grd_rho_a_b,ex)
    +
    +
    +

    rho_a = density alpha +rho_b = density beta +grd_rho_a_2 = (gradient rho_a)^2 +grd_rho_b_2 = (gradient rho_b)^2 +grd_rho_a_b = (gradient rho_a).(gradient rho_b) +ex = exchange energy density at point r

    +

    Calls:

    +
      +
    • ex_lda_sr()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +g0d:()
    +

    File : dft_utils_one_e/exc_sr_lda.irp.f

    +
    double precision function g0d(rs)
    +
    +
    +
    + +
    +
    +g0dd:()
    +

    File : dft_utils_one_e/exc_sr_lda.irp.f

    +
    double precision function g0dd(rs)
    +
    +
    +
    + +
    +
    +g0f:()
    +

    File : dft_utils_one_e/exc_sr_lda.irp.f

    +
    double precision function g0f(x)
    +
    +
    +
    + +
    +
    +gpw:()
    +

    File : dft_utils_one_e/exc_sr_lda.irp.f

    +
    subroutine GPW(x,Ac,alfa1,beta1,beta2,beta3,beta4,G,Gd,Gdd)
    +
    +
    +

    Called by:

    +
      +
    • ecpw()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +grad_rho_ab_to_grad_rho_oc:()
    +

    File : dft_utils_one_e/rho_ab_to_rho_tot.irp.f

    +
    subroutine grad_rho_ab_to_grad_rho_oc(grad_rho_a_2,grad_rho_b_2,grad_rho_a_b,grad_rho_o_2,grad_rho_c_2,grad_rho_o_c)
    +
    +
    +

    Called by:

    +
      +
    • gga_sr_type_functionals()
    • +
    +
      +
    • gga_type_functionals()
    • +
    +
      +
    +
    +
    + +
    +
    +qrpa:()
    +

    File : dft_utils_one_e/exc_sr_lda.irp.f

    +
    double precision function Qrpa(x)
    +
    +
    +
    + +
    +
    +qrpad:()
    +

    File : dft_utils_one_e/exc_sr_lda.irp.f

    +
    double precision function Qrpad(x)
    +
    +
    +
    + +
    +
    +qrpadd:()
    +

    File : dft_utils_one_e/exc_sr_lda.irp.f

    +
    double precision function Qrpadd(x)
    +
    +
    +
    + +
    +
    +rho_ab_to_rho_oc:()
    +

    File : dft_utils_one_e/rho_ab_to_rho_tot.irp.f

    +
    subroutine rho_ab_to_rho_oc(rho_a,rho_b,rho_o,rho_c)
    +
    +
    +

    Called by:

    +
      +
    • gga_sr_type_functionals()
    • +
    +
      +
    • gga_type_functionals()
    • +
    +
      +
    +
    +
    + +
    +
    +rho_oc_to_rho_ab:()
    +

    File : dft_utils_one_e/rho_ab_to_rho_tot.irp.f

    +
    subroutine rho_oc_to_rho_ab(rho_o,rho_c,rho_a,rho_b)
    +
    +
    +
    + +
    +
    +v_grad_rho_oc_to_v_grad_rho_ab:()
    +

    File : dft_utils_one_e/rho_ab_to_rho_tot.irp.f

    +
    subroutine v_grad_rho_oc_to_v_grad_rho_ab(v_grad_rho_o_2,v_grad_rho_c_2,v_grad_rho_o_c,v_grad_rho_a_2,v_grad_rho_b_2,v_grad_rho_a_b)
    +
    +
    +

    Called by:

    +
      +
    • gga_sr_type_functionals()
    • +
    +
      +
    • gga_type_functionals()
    • +
    +
      +
    +
    +
    + +
    +
    +v_rho_ab_to_v_rho_oc:()
    +

    File : dft_utils_one_e/rho_ab_to_rho_tot.irp.f

    +
    subroutine v_rho_ab_to_v_rho_oc(v_rho_a,v_rho_b,v_rho_o,v_rho_c)
    +
    +
    +
    + +
    +
    +v_rho_oc_to_v_rho_ab:()
    +

    File : dft_utils_one_e/rho_ab_to_rho_tot.irp.f

    +
    subroutine v_rho_oc_to_v_rho_ab(v_rho_o,v_rho_c,v_rho_a,v_rho_b)
    +
    +
    +

    Called by:

    +
      +
    • gga_sr_type_functionals()
    • +
    +
      +
    • gga_type_functionals()
    • +
    +
      +
    +
    +
    + +
    +
    +vcorrlr:()
    +

    File : dft_utils_one_e/exc_sr_lda.irp.f

    +
    subroutine vcorrlr(rs,z,mu,vclrup,vclrdown,vclrupd,vclrdownd)
    +
    +
    +

    Called by:

    +
      +
    • ec_lda_sr()
    • +
    +
      +
    +
      +
    +
    +

    Calls:

    +
      +
    • ecpw()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    + + +
    + +
    + + +
    +
    + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/doc/modules/dressing.html b/doc/modules/dressing.html new file mode 100644 index 00000000..7f6ea672 --- /dev/null +++ b/doc/modules/dressing.html @@ -0,0 +1,331 @@ + + + + + + + + + + + dress_zmq — Quantum Package 2.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + +
    + + + + + +
    + +
    + + + + + + + + + + + + + + + + + +
    + + + + +
    +
    +
    +
    + +
    +

    dress_zmq

    +

    Module to facilitate the construction of modules using dressed +Hamiltonians, parallelized with ZeroMQ.

    +
    +

    EZFIO parameters

    +
    +
    +thresh_dressed_ci
    +

    Threshold on the convergence of the dressed CI energy

    +

    Default: 1.e-5

    +
    + +
    +
    +n_it_max_dressed_ci
    +

    Maximum number of dressed CI iterations

    +

    Default: 10

    +
    + +
    +
    +dress_relative_error
    +

    Stop stochastic dressing when the relative error is smaller than perturbation PT2_relative_error

    +

    Default: 0.001

    +
    + +
    +
    + + +
    + +
    + + +
    +
    + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/doc/modules/electrons.html b/doc/modules/electrons.html new file mode 100644 index 00000000..3314b5e6 --- /dev/null +++ b/doc/modules/electrons.html @@ -0,0 +1,409 @@ + + + + + + + + + + + electrons — Quantum Package 2.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + +
    + + + + + +
    + +
    + + + + + + + + + + + + + + + + + +
    + + + + +
    +
    +
    +
    + +
    +

    electrons

    +

    Describes the electrons. For the moment, only the number of alpha +and beta electrons are provided by this module.

    +
    +

    Assumptions

    + +
    +

    EZFIO parameters

    +
    +
    +elec_alpha_num
    +

    Numbers of electrons alpha (“up”)

    +
    + +
    +
    +elec_beta_num
    +

    Numbers of electrons beta (“down”)

    +
    + +
    +
    +elec_num
    +

    Numbers total of electrons (alpha + beta)

    +

    Default: = electrons.elec_alpha_num + electrons.elec_beta_num

    +
    + +
    +
    +

    Providers

    +
    +
    +elec_num
    +

    File : electrons/electrons.irp.f

    +
    integer :: elec_num
    +integer, allocatable    :: elec_num_tab (2)
    +
    +
    +

    Numbers of alpha (“up”) , beta (“down”) and total electrons

    +

    Needs:

    +
      +
    • elec_alpha_num
    • +
    +
      +
    • elec_beta_num
    • +
    +
    +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +elec_num_tab
    +

    File : electrons/electrons.irp.f

    +
    integer :: elec_num
    +integer, allocatable    :: elec_num_tab (2)
    +
    +
    +

    Numbers of alpha (“up”) , beta (“down”) and total electrons

    +

    Needs:

    +
      +
    • elec_alpha_num
    • +
    +
      +
    • elec_beta_num
    • +
    +
    +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +
    + + +
    + +
    + + +
    +
    + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/doc/modules/ezfio_files.html b/doc/modules/ezfio_files.html new file mode 100644 index 00000000..a6bd7539 --- /dev/null +++ b/doc/modules/ezfio_files.html @@ -0,0 +1,1043 @@ + + + + + + + + + + + ezfio_files — Quantum Package 2.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + +
    + + + + + +
    + +
    + + + + + + + + + + + + + + + + + +
    + + + + +
    +
    +
    +
    + +
    +

    ezfio_files

    +

    This modules essentially contains the name of the EZFIO directory in the +ezfio_filename variable. This is read as the first argument of the +command-line, or as the QP_INPUT environment variable.

    +
    +

    Providers

    +
    +
    +ezfio_filename
    +

    File : ezfio_files/ezfio.irp.f

    +
    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:

    +
    +
      +
    +
      +
    +
    +

    Needed by:

    +
      +
    • ao_cartesian
    • +
    • ao_coef
    • +
    • ao_expo
    • +
    • ao_integrals_threshold
    • +
    • ao_md5
    • +
    • ao_nucl
    • +
    • ao_num
    • +
    • ao_power
    • +
    • ao_prim_num
    • +
    • ao_two_e_integrals_erf_in_map
    • +
    • ao_two_e_integrals_in_map
    • +
    • cas_bitmask
    • +
    • correlation_energy_ratio_max
    • +
    • data_energy_proj
    • +
    • data_energy_var
    • +
    • data_one_e_dm_alpha_mo
    • +
    • data_one_e_dm_beta_mo
    • +
    • davidson_sze_max
    • +
    • disk_access_nuclear_repulsion
    • +
    • disk_based_davidson
    • +
    • distributed_davidson
    • +
    • do_direct_integrals
    • +
    • do_pseudo
    • +
    • do_pt2
    • +
    • elec_alpha_num
    • +
    • elec_beta_num
    • +
    • elec_num
    • +
    • energy_iterations
    • +
    • ezfio_work_dir
    • +
    • frozen_orb_scf
    • +
    • generators_bitmask
    • +
    • generators_bitmask_restart
    • +
    • io_ao_integrals_e_n
    • +
    • io_ao_integrals_kinetic
    • +
    • io_ao_integrals_overlap
    • +
    • io_ao_integrals_pseudo
    • +
    +
    +
      +
    • no_vvvv_integrals
    • +
    • nucl_charge
    • +
    • nucl_charge_remove
    • +
    • nucl_coord
    • +
    • nucl_label
    • +
    • nucl_num
    • +
    • only_expected_s2
    • +
    • pseudo_dz_k
    • +
    • pseudo_dz_kl
    • +
    • pseudo_grid_rmax
    • +
    • pseudo_grid_size
    • +
    • pseudo_klocmax
    • +
    • pseudo_kmax
    • +
    • pseudo_lmax
    • +
    • pseudo_n_k
    • +
    • pseudo_n_kl
    • +
    • pseudo_v_k
    • +
    • pseudo_v_kl
    • +
    • psi_coef
    • +
    • psi_det
    • +
    • psi_det_size
    • +
    • pt2_iterations
    • +
    • pt2_max
    • +
    • pt2_relative_error
    • +
    • qp_stop_filename
    • +
    • read_wf
    • +
    • s2_eig
    • +
    • scf_algorithm
    • +
    • state_following
    • +
    • target_energy
    • +
    • thresh_scf
    • +
    • threshold_davidson
    • +
    • threshold_diis
    • +
    • threshold_generators
    • +
    • used_weight
    • +
    +
    +
    + +
    +
    +ezfio_work_dir
    +

    File : ezfio_files/ezfio.irp.f

    +
    character*(128) :: ezfio_work_dir
    +
    +
    +

    EZFIO/work/

    +

    Needs:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +file_lock
    +

    File : ezfio_files/lock.irp.f

    +
    integer(omp_lock_kind)  :: file_lock
    +
    +
    +

    OpenMP Lock for I/O

    +
    + +
    +
    +output_cpu_time_0
    +

    File : ezfio_files/output.irp.f

    +
    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:

    +
      +
    • ao_cartesian
    • +
    • ao_coef
    • +
    • ao_expo
    • +
    • ao_integrals_threshold
    • +
    • ao_md5
    • +
    • ao_nucl
    • +
    • ao_num
    • +
    • ao_power
    • +
    • ao_prim_num
    • +
    • ci_energy
    • +
    • correlation_energy_ratio_max
    • +
    • data_energy_proj
    • +
    • data_energy_var
    • +
    • data_one_e_dm_alpha_mo
    • +
    • data_one_e_dm_beta_mo
    • +
    • davidson_sze_max
    • +
    • disk_access_nuclear_repulsion
    • +
    • disk_based_davidson
    • +
    • distributed_davidson
    • +
    • do_direct_integrals
    • +
    • do_pseudo
    • +
    • do_pt2
    • +
    • elec_alpha_num
    • +
    • elec_beta_num
    • +
    • energy_iterations
    • +
    • frozen_orb_scf
    • +
    • io_ao_integrals_e_n
    • +
    • io_ao_integrals_kinetic
    • +
    • io_ao_integrals_overlap
    • +
    • io_ao_integrals_pseudo
    • +
    +
      +
    • io_ao_one_e_integrals
    • +
    • io_ao_two_e_integrals
    • +
    • io_ao_two_e_integrals_erf
    • +
    • io_mo_integrals_e_n
    • +
    • io_mo_integrals_kinetic
    • +
    • io_mo_integrals_pseudo
    • +
    • io_mo_one_e_integrals
    • +
    • io_mo_two_e_integrals
    • +
    • io_mo_two_e_integrals_erf
    • +
    • level_shift
    • +
    • max_dim_diis
    • +
    • mo_class
    • +
    • mo_guess_type
    • +
    • mo_integrals_threshold
    • +
    • mu_erf
    • +
    • n_det_generators
    • +
    • n_det_iterations
    • +
    • n_det_max
    • +
    • n_det_max_full
    • +
    • n_det_print_wf
    • +
    • n_det_selectors
    • +
    • n_it_scf_max
    • +
    • n_iter
    • +
    • n_states
    • +
    • n_states_diag
    • +
    • no_ivvv_integrals
    • +
    • no_vvv_integrals
    • +
    • no_vvvv_integrals
    • +
    • nucl_charge
    • +
    • nucl_charge_remove
    • +
    +
      +
    • nucl_coord
    • +
    • nucl_label
    • +
    • nucl_num
    • +
    • nuclear_repulsion
    • +
    • only_expected_s2
    • +
    • pseudo_dz_k
    • +
    • pseudo_dz_kl
    • +
    • pseudo_grid_rmax
    • +
    • pseudo_grid_size
    • +
    • pseudo_klocmax
    • +
    • pseudo_kmax
    • +
    • pseudo_lmax
    • +
    • pseudo_n_k
    • +
    • pseudo_n_kl
    • +
    • pseudo_v_k
    • +
    • pseudo_v_kl
    • +
    • pt2_iterations
    • +
    • pt2_max
    • +
    • pt2_relative_error
    • +
    • read_wf
    • +
    • s2_eig
    • +
    • scf_algorithm
    • +
    • state_following
    • +
    • target_energy
    • +
    • thresh_scf
    • +
    • threshold_davidson
    • +
    • threshold_diis
    • +
    • threshold_generators
    • +
    • used_weight
    • +
    +
    +
    + +
    +
    +output_wall_time_0
    +

    File : ezfio_files/output.irp.f

    +
    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:

    +
      +
    • ao_cartesian
    • +
    • ao_coef
    • +
    • ao_expo
    • +
    • ao_integrals_threshold
    • +
    • ao_md5
    • +
    • ao_nucl
    • +
    • ao_num
    • +
    • ao_power
    • +
    • ao_prim_num
    • +
    • ci_energy
    • +
    • correlation_energy_ratio_max
    • +
    • data_energy_proj
    • +
    • data_energy_var
    • +
    • data_one_e_dm_alpha_mo
    • +
    • data_one_e_dm_beta_mo
    • +
    • davidson_sze_max
    • +
    • disk_access_nuclear_repulsion
    • +
    • disk_based_davidson
    • +
    • distributed_davidson
    • +
    • do_direct_integrals
    • +
    • do_pseudo
    • +
    • do_pt2
    • +
    • elec_alpha_num
    • +
    • elec_beta_num
    • +
    • energy_iterations
    • +
    • frozen_orb_scf
    • +
    • io_ao_integrals_e_n
    • +
    • io_ao_integrals_kinetic
    • +
    • io_ao_integrals_overlap
    • +
    • io_ao_integrals_pseudo
    • +
    +
      +
    • io_ao_one_e_integrals
    • +
    • io_ao_two_e_integrals
    • +
    • io_ao_two_e_integrals_erf
    • +
    • io_mo_integrals_e_n
    • +
    • io_mo_integrals_kinetic
    • +
    • io_mo_integrals_pseudo
    • +
    • io_mo_one_e_integrals
    • +
    • io_mo_two_e_integrals
    • +
    • io_mo_two_e_integrals_erf
    • +
    • level_shift
    • +
    • max_dim_diis
    • +
    • mo_class
    • +
    • mo_guess_type
    • +
    • mo_integrals_threshold
    • +
    • mu_erf
    • +
    • n_det_generators
    • +
    • n_det_iterations
    • +
    • n_det_max
    • +
    • n_det_max_full
    • +
    • n_det_print_wf
    • +
    • n_det_selectors
    • +
    • n_it_scf_max
    • +
    • n_iter
    • +
    • n_states
    • +
    • n_states_diag
    • +
    • no_ivvv_integrals
    • +
    • no_vvv_integrals
    • +
    • no_vvvv_integrals
    • +
    • nucl_charge
    • +
    • nucl_charge_remove
    • +
    +
      +
    • nucl_coord
    • +
    • nucl_label
    • +
    • nucl_num
    • +
    • nuclear_repulsion
    • +
    • only_expected_s2
    • +
    • pseudo_dz_k
    • +
    • pseudo_dz_kl
    • +
    • pseudo_grid_rmax
    • +
    • pseudo_grid_size
    • +
    • pseudo_klocmax
    • +
    • pseudo_kmax
    • +
    • pseudo_lmax
    • +
    • pseudo_n_k
    • +
    • pseudo_n_kl
    • +
    • pseudo_v_k
    • +
    • pseudo_v_kl
    • +
    • pt2_iterations
    • +
    • pt2_max
    • +
    • pt2_relative_error
    • +
    • read_wf
    • +
    • s2_eig
    • +
    • scf_algorithm
    • +
    • state_following
    • +
    • target_energy
    • +
    • thresh_scf
    • +
    • threshold_davidson
    • +
    • threshold_diis
    • +
    • threshold_generators
    • +
    • used_weight
    • +
    +
    +
    + +
    +
    +qp_kill_filename
    +

    File : ezfio_files/qp_stop.irp.f

    +
    character*(128) :: qp_stop_filename
    +character*(128) :: qp_kill_filename
    +integer :: qp_stop_variable
    +
    +
    +

    Name of the file to check for qp stop

    +

    Needs:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +qp_stop_filename
    +

    File : ezfio_files/qp_stop.irp.f

    +
    character*(128) :: qp_stop_filename
    +character*(128) :: qp_kill_filename
    +integer :: qp_stop_variable
    +
    +
    +

    Name of the file to check for qp stop

    +

    Needs:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +qp_stop_variable
    +

    File : ezfio_files/qp_stop.irp.f

    +
    character*(128) :: qp_stop_filename
    +character*(128) :: qp_kill_filename
    +integer :: qp_stop_variable
    +
    +
    +

    Name of the file to check for qp stop

    +

    Needs:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +

    Subroutines / functions

    +
    +
    +getunitandopen:()
    +

    File : ezfio_files/get_unit_and_open.irp.f

    +
    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
    +
    + +
    +
    +qp_stop:()
    +

    File : ezfio_files/qp_stop.irp.f

    +
    logical function qp_stop()
    +
    +
    +

    Checks if the qp_stop command was invoked for the clean termination of the program

    +

    Needs:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +write_bool:()
    +

    File : ezfio_files/output.irp.f

    +
    subroutine write_bool(iunit,value,label)
    +
    +
    +

    Write an logical value in output

    +

    Needs:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +write_double:()
    +

    File : ezfio_files/output.irp.f

    +
    subroutine write_double(iunit,value,label)
    +
    +
    +

    Write a double precision value in output

    +

    Needs:

    +
    +
      +
    +
      +
    +
    +

    Called by:

    +
    + +
      +
    • run_slave_main()
    • +
    • run_stochastic_cipsi()
    • +
    • zmq_pt2()
    • +
    • zmq_selection()
    • +
    +
    +
    + +
    +
    +write_int:()
    +

    File : ezfio_files/output.irp.f

    +
    subroutine write_int(iunit,value,label)
    +
    +
    +

    Write an integer value in output

    +

    Needs:

    +
    +
      +
    +
      +
    +
    +

    Called by:

    +
    + + +
    +
    + +
    +
    +write_time:()
    +

    File : ezfio_files/output.irp.f

    +
    subroutine write_time(iunit)
    +
    +
    +

    Write a time stamp in the output for chronological reconstruction

    +

    Needs:

    +
    + +
      +
    +
    +

    Called by:

    +
      +
    • ao_cartesian
    • +
    • ao_coef
    • +
    • ao_expo
    • +
    • ao_integrals_threshold
    • +
    • ao_md5
    • +
    • ao_nucl
    • +
    • ao_num
    • +
    • ao_power
    • +
    • ao_prim_num
    • +
    • ci_energy
    • +
    • correlation_energy_ratio_max
    • +
    • damping_scf()
    • +
    • data_energy_proj
    • +
    • data_energy_var
    • +
    • data_one_e_dm_alpha_mo
    • +
    • data_one_e_dm_beta_mo
    • +
    • davidson_diag_hjj_sjj()
    • +
    • davidson_sze_max
    • +
    • disk_access_nuclear_repulsion
    • +
    • disk_based_davidson
    • +
    • distributed_davidson
    • +
    • do_direct_integrals
    • +
    • do_pseudo
    • +
    • do_pt2
    • +
    • elec_alpha_num
    • +
    • elec_beta_num
    • +
    • energy_iterations
    • +
    • frozen_orb_scf
    • +
    • io_ao_integrals_e_n
    • +
    • io_ao_integrals_kinetic
    • +
    • io_ao_integrals_overlap
    • +
    • io_ao_integrals_pseudo
    • +
    +
      +
    • io_ao_one_e_integrals
    • +
    • io_ao_two_e_integrals
    • +
    • io_ao_two_e_integrals_erf
    • +
    • io_mo_integrals_e_n
    • +
    • io_mo_integrals_kinetic
    • +
    • io_mo_integrals_pseudo
    • +
    • io_mo_one_e_integrals
    • +
    • io_mo_two_e_integrals
    • +
    • io_mo_two_e_integrals_erf
    • +
    • level_shift
    • +
    • make_s2_eigenfunction()
    • +
    • max_dim_diis
    • +
    • mo_as_eigvectors_of_mo_matrix()
    • +
    • mo_as_svd_vectors_of_mo_matrix()
    • +
    • mo_as_svd_vectors_of_mo_matrix_eig()
    • +
    • mo_class
    • +
    • mo_guess_type
    • +
    • mo_integrals_threshold
    • +
    • mu_erf
    • +
    • n_det_generators
    • +
    • n_det_iterations
    • +
    • n_det_max
    • +
    • n_det_max_full
    • +
    • n_det_print_wf
    • +
    • n_det_selectors
    • +
    • n_it_scf_max
    • +
    • n_iter
    • +
    • n_states
    • +
    • n_states_diag
    • +
    • no_ivvv_integrals
    • +
    • no_vvv_integrals
    • +
    • no_vvvv_integrals
    • +
    +
      +
    • nucl_charge
    • +
    • nucl_charge_remove
    • +
    • nucl_coord
    • +
    • nucl_label
    • +
    • nucl_num
    • +
    • nuclear_repulsion
    • +
    • only_expected_s2
    • +
    • pseudo_dz_k
    • +
    • pseudo_dz_kl
    • +
    • pseudo_grid_rmax
    • +
    • pseudo_grid_size
    • +
    • pseudo_klocmax
    • +
    • pseudo_kmax
    • +
    • pseudo_lmax
    • +
    • pseudo_n_k
    • +
    • pseudo_n_kl
    • +
    • pseudo_v_k
    • +
    • pseudo_v_kl
    • +
    • pt2_iterations
    • +
    • pt2_max
    • +
    • pt2_relative_error
    • +
    • read_wf
    • +
    • roothaan_hall_scf()
    • +
    • s2_eig
    • +
    • scf_algorithm
    • +
    • state_following
    • +
    • target_energy
    • +
    • thresh_scf
    • +
    • threshold_davidson
    • +
    • threshold_diis
    • +
    • threshold_generators
    • +
    • used_weight
    • +
    +
    +

    Calls:

    +
      +
    • cpu_time()
    • +
    +
      +
    • print_memory_usage()
    • +
    +
      +
    • wall_time()
    • +
    +
    +
    + +
    +
    + + +
    + +
    + + +
    +
    + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/doc/modules/fci.html b/doc/modules/fci.html new file mode 100644 index 00000000..ac2cea36 --- /dev/null +++ b/doc/modules/fci.html @@ -0,0 +1,441 @@ + + + + + + + + + + + fci — Quantum Package 2.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + +
    + + + + + +
    + +
    + + + + + + + + + + + + + + + + + +
    + + + + +
    +
    +
    +
    + +
    +

    fci

    +

    CIPSI algorithm in the full configuration interaction space.

    +
    +

    The user point of view

    +
      +
    • fci() performs CIPSI calculations using a stochastic scheme for both the selection and the PT2 contribution,
    • +
    • pt2() computes the PT2 contribution using the wave function stored in the EZFIO +database.
    • +
    +

    The main keywords/options for this module are:

    + +
    +

    Note

    +

    For a multi-state calculation, it is recommended to start with cis() or cisd() +wave functions as a guess.

    +
    + +
    +

    Note

    +

    For a multi-state calculation, it is recommended to start with cis() or cisd() +wave functions as a guess.

    +
    + +
    +
    +

    The programmer point of view

    +

    This module have been created with the cipsi module.

    +
    +

    See also

    +

    The documentation of the cipsi module.

    +
    +
    +
    +

    EZFIO parameters

    +
    +
    +energy
    +

    Calculated Selected FCI energy

    +
    + +
    +
    +energy_pt2
    +

    Calculated FCI energy + PT2

    +
    + +
    +
    +

    Programs

    +
    +
    +
    +
    +
    +

    Providers

    +
    +
    +do_ddci
    +

    File : fci/class.irp.f

    +
    logical :: do_only_1h1p
    +logical :: do_ddci
    +
    +
    +

    In the FCI case, all those are always false

    +
    + +
    +
    +do_only_1h1p
    +

    File : fci/class.irp.f

    +
    logical :: do_only_1h1p
    +logical :: do_ddci
    +
    +
    +

    In the FCI case, all those are always false

    +
    + +
    +
    +

    Subroutines / functions

    +
    +
    +save_energy:()
    +

    File : fci/save_energy.irp.f

    +
    subroutine save_energy(E,pt2)
    +
    +
    +

    Saves the energy in EZFIO.

    +

    Needs:

    +
      +
    • n_states
    • +
    +
      +
    +
      +
    +
    +

    Called by:

    +
      +
    • run_cipsi()
    • +
    +
      +
    • run_stochastic_cipsi()
    • +
    +
      +
    +
    +

    Calls:

    +
      +
    • ezfio_set_fci_energy()
    • +
    +
      +
    • ezfio_set_fci_energy_pt2()
    • +
    +
      +
    +
    +
    + +
    +
    + + +
    + +
    + + +
    +
    + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/doc/modules/generators_cas.html b/doc/modules/generators_cas.html new file mode 100644 index 00000000..968fd8c0 --- /dev/null +++ b/doc/modules/generators_cas.html @@ -0,0 +1,307 @@ + + + + + + + + + + + generators_cas — Quantum Package 2.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + +
    + + + + + +
    + +
    + + + + + + + + + + + + + + + + + +
    + + + + +
    +
    +
    +
    + +
    +

    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 qp_set_mo_class command.

    +

    This module is intended to be included in the NEED file to define +the generators as the CAS determinants, which can be useful to define post-CAS approaches (see cassd module for instance).

    +
    + + +
    + +
    + + +
    +
    + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/doc/modules/generators_full.html b/doc/modules/generators_full.html new file mode 100644 index 00000000..1780eae9 --- /dev/null +++ b/doc/modules/generators_full.html @@ -0,0 +1,588 @@ + + + + + + + + + + + generators_full — Quantum Package 2.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + +
    + + + + + +
    + +
    + + + + + + + + + + + + + + + + + +
    + + + + +
    +
    +
    +
    + +
    +

    generators_full

    +

    Module defining the generator determinants as all the determinants of the +variational space.

    +

    This module is intended to be included in the NEED file to define +a full set of generators.

    +
    +

    Providers

    +
    +
    +degree_max_generators
    +

    File : generators_full/generators.irp.f

    +
    integer :: degree_max_generators
    +
    +
    +

    Max degree of excitation (respect to HF) of the generators

    +

    Needs:

    +
    + + +
    +
    + +
    +
    +n_det_generators
    +

    File : generators_full/generators.irp.f

    +
    integer :: n_det_generators
    +
    +
    +

    For Single reference wave functions, the number of generators is 1 : the +Hartree-Fock determinant

    +

    Needs:

    +
    + +
      +
    • threshold_generators
    • +
    +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +psi_coef_generators
    +

    File : generators_full/generators.irp.f

    +
    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:

    +
    + + +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +psi_coef_sorted_gen
    +

    File : generators_full/generators.irp.f

    +
    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:

    +
    + + +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +psi_det_generators
    +

    File : generators_full/generators.irp.f

    +
    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:

    +
    + + +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +psi_det_sorted_gen
    +

    File : generators_full/generators.irp.f

    +
    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:

    +
    + + +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +psi_det_sorted_gen_order
    +

    File : generators_full/generators.irp.f

    +
    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:

    +
    + + +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +select_max
    +

    File : generators_full/generators.irp.f

    +
    double precision, allocatable   :: select_max   (size_select_max)
    +
    +
    +

    Memo to skip useless selectors

    +

    Needs:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +size_select_max
    +

    File : generators_full/generators.irp.f

    +
    integer :: size_select_max
    +
    +
    +

    Size of the select_max array

    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    + + +
    + +
    + + +
    +
    + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/doc/modules/hartree_fock.html b/doc/modules/hartree_fock.html new file mode 100644 index 00000000..1a55e7dd --- /dev/null +++ b/doc/modules/hartree_fock.html @@ -0,0 +1,703 @@ + + + + + + + + + + + hartree_fock — Quantum Package 2.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + +
    + + + + + +
    + +
    + + + + + + + + + + + + + + + + + +
    + + + + +
    +
    +
    +
    + +
    +

    hartree_fock

    +

    The 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 +module_scf_utils` module.

    +

    The Fock matrix is defined in hartree_fock fock_matrix_hf.irp.f.

    +
    +

    EZFIO parameters

    +
    +
    +energy
    +

    Energy HF

    +
    + +
    +
    +

    Programs

    +
    +
    +
    +
    +
    +

    Providers

    +
    +
    +ao_two_e_integral_alpha
    +

    File : hartree_fock/fock_matrix_hf.irp.f

    +
    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:

    +
    + + +
    +

    Needed by:

    +
    + +
      +
    +
    +
    + +
    +
    +ao_two_e_integral_beta
    +

    File : hartree_fock/fock_matrix_hf.irp.f

    +
    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:

    +
    + + +
    +

    Needed by:

    +
    + +
      +
    +
    +
    + +
    +
    +extra_e_contrib_density
    +

    File : hartree_fock/hf_energy.irp.f

    +
    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:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +fock_matrix_ao_alpha
    +

    File : hartree_fock/fock_matrix_hf.irp.f

    +
    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:

    +
      +
    • ao_num
    • +
    +
    + +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +fock_matrix_ao_beta
    +

    File : hartree_fock/fock_matrix_hf.irp.f

    +
    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:

    +
      +
    • ao_num
    • +
    +
    + +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +hf_energy
    +

    File : hartree_fock/hf_energy.irp.f

    +
    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:

    +
    + + +
    +
    + +
    +
    +hf_one_electron_energy
    +

    File : hartree_fock/hf_energy.irp.f

    +
    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:

    +
    + + +
    +
    + +
    +
    +hf_two_electron_energy
    +

    File : hartree_fock/hf_energy.irp.f

    +
    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:

    +
    + + +
    +
    + +
    +
    +

    Subroutines / functions

    +
    +
    +create_guess:()
    +

    File : hartree_fock/scf.irp.f

    +
    subroutine create_guess
    +
    +
    +

    Create a MO guess if no MOs are present in the EZFIO directory

    +

    Needs:

    +
    + + +
    +

    Called by:

    +
      +
    • scf()
    • +
    +
      +
    +
      +
    +
    +

    Calls:

    +
      +
    • ezfio_has_mo_basis_mo_coef()
    • +
    +
      +
    • huckel_guess()
    • +
    +
      +
    • mo_as_eigvectors_of_mo_matrix()
    • +
    +
    +

    Touches:

    +
    + + +
    +
    + +
    +
    +run:()
    +

    File : hartree_fock/scf.irp.f

    +
    subroutine run
    +
    +
    +

    Run SCF calculation

    +

    Needs:

    +
    + +
      +
    +
    +

    Called by:

    +
      +
    • pt2()
    • +
    +
      +
    • scf()
    • +
    +
      +
    +
    +

    Calls:

    +
      +
    • ezfio_set_hartree_fock_energy()
    • +
    +
      +
    • roothaan_hall_scf()
    • +
    +
      +
    +
    +

    Touches:

    +
    + + +
    +
    + +
    +
    + + +
    + +
    + + +
    +
    + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/doc/modules/iterations.html b/doc/modules/iterations.html new file mode 100644 index 00000000..4c459112 --- /dev/null +++ b/doc/modules/iterations.html @@ -0,0 +1,505 @@ + + + + + + + + + + + iterations — Quantum Package 2.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + +
    + + + + + +
    + +
    + + + + + + + + + + + + + + + + + +
    + + + + +
    +
    +
    +
    + +
    +

    iterations

    +

    Module which saves the computed energies for an extrapolation to +the FCI limit.

    +
    +

    EZFIO parameters

    +
    +
    +n_iter
    +

    Number of saved iterations

    +

    Default: 1

    +
    + +
    +
    +n_det_iterations
    +

    Number of determinants at each iteration

    +
    + +
    +
    +energy_iterations
    +

    The variational energy at each iteration

    +
    + +
    +
    +pt2_iterations
    +

    The PT2 correction at each iteration

    +
    + +
    +
    +

    Providers

    +
    +
    +extrapolated_energy
    +

    File : iterations/iterations.irp.f

    +
    double precision, allocatable   :: extrapolated_energy  (N_iter,N_states)
    +
    +
    +

    Extrapolated energy, using E_var = f(PT2) where PT2=0

    +

    Needs:

    +
      +
    • energy_iterations
    • +
    • n_det
    • +
    +
    +
      +
    • pt2_iterations
    • +
    +
    +
    + +
    +
    +n_iter
    +

    File : iterations/io.irp.f

    +
    integer :: n_iter
    +
    +
    +

    number of iterations

    +

    Needs:

    +
    +
      +
    • n_states
    • +
    +
    +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +

    Subroutines / functions

    +
    +
    +print_extrapolated_energy:()
    +

    File : iterations/print_extrapolation.irp.f

    +
    subroutine print_extrapolated_energy
    +
    +
    +

    Print the extrapolated energy in the output

    +

    Needs:

    +
    +
      +
    • n_det
    • +
    • pt2_iterations
    • +
    +
    +
    +

    Called by:

    +
      +
    • run_cipsi()
    • +
    +
      +
    • run_stochastic_cipsi()
    • +
    +
      +
    +
    +
    + +
    +
    +print_summary:()
    +

    File : iterations/print_summary.irp.f

    +
    subroutine print_summary(e_,pt2_,error_,variance_,norm_,n_det_,n_occ_pattern_,n_st,s2_)
    +
    +
    +

    Print the extrapolated energy in the output

    +

    Needs:

    +
      +
    • do_pt2
    • +
    +
      +
    • s2_eig
    • +
    +
      +
    +
    +

    Called by:

    +
      +
    • run_cipsi()
    • +
    +
      +
    • run_stochastic_cipsi()
    • +
    +
      +
    +
    +
    + +
    +
    +save_iterations:()
    +

    File : iterations/iterations.irp.f

    +
    subroutine save_iterations(e_, pt2_,n_)
    +
    +
    +

    Update the energy in the EZFIO file.

    +

    Needs:

    +
    +
      +
    • n_states
    • +
    • pt2_iterations
    • +
    +
      +
    • n_det_iterations
    • +
    +
    +

    Called by:

    +
      +
    • run_cipsi()
    • +
    +
      +
    • run_stochastic_cipsi()
    • +
    +
      +
    +
    +

    Calls:

    +
      +
    • ezfio_set_iterations_energy_iterations()
    • +
    • ezfio_set_iterations_n_det_iterations()
    • +
    +
      +
    • ezfio_set_iterations_n_iter()
    • +
    +
      +
    • ezfio_set_iterations_pt2_iterations()
    • +
    +
    +
    + +
    +
    + + +
    + +
    + + +
    +
    + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/doc/modules/kohn_sham.html b/doc/modules/kohn_sham.html new file mode 100644 index 00000000..65a174a6 --- /dev/null +++ b/doc/modules/kohn_sham.html @@ -0,0 +1,386 @@ + + + + + + + + + + + kohn_sham — Quantum Package 2.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + +
    + + + + + +
    + +
    + + + + + + + + + + + + + + + + + +
    + + + + +
    +
    +
    +
    + +
    +

    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:

    +
      +
    1. Compute/Read all the one- and two-electron integrals, and store them in memory
    2. +
    3. 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.
    4. +
    5. Perform the SCF iterations
    6. +
    +

    The definition of the Fock matrix is in 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:

    +
      +
    1. scf_utils thresh_scf
    2. +
    3. scf_utils level_shift
    4. +
    +

    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 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.

    +
    +

    Programs

    +
    +
    +
    +
    +
    +

    Providers

    +
    +
    +ks_energy
    +

    File : ks_enery.irp.f

    +
    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:

    +
    + + +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +

    Subroutines / functions

    +
    +
    + + +
    + +
    + + +
    +
    + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/doc/modules/kohn_sham_rs.html b/doc/modules/kohn_sham_rs.html new file mode 100644 index 00000000..0cbf7858 --- /dev/null +++ b/doc/modules/kohn_sham_rs.html @@ -0,0 +1,765 @@ + + + + + + + + + + + kohn_sham_rs — Quantum Package 2.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + +
    + + + + + +
    + +
    + + + + + + + + + + + + + + + + + +
    + + + + +
    +
    +
    +
    + +
    +

    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 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:

    +
      +
    1. Compute/Read all the one- and two-electron integrals, and store them in memory
    2. +
    3. 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.
    4. +
    5. Perform the SCF iterations
    6. +
    +

    The definition of the Fock matrix is in 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: +# scf_utils thresh_scf +# 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 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.

    +
    +

    EZFIO parameters

    +
    +
    +energy
    +

    Energy range separated hybrid

    +
    + +
    +
    +

    Programs

    +
    +
    +
    +
    +
    +

    Providers

    +
    +
    +ao_potential_alpha_xc
    +

    File : pot_functionals.irp.f

    +
    double precision, allocatable   :: ao_potential_alpha_xc        (ao_num,ao_num)
    +double precision, allocatable   :: ao_potential_beta_xc (ao_num,ao_num)
    +
    +
    +

    Needs:

    +
      +
    • ao_num
    • +
    +
    +
      +
    +
    +

    Needed by:

    +
    + +
      +
    +
    +
    + +
    +
    +ao_potential_beta_xc
    +

    File : pot_functionals.irp.f

    +
    double precision, allocatable   :: ao_potential_alpha_xc        (ao_num,ao_num)
    +double precision, allocatable   :: ao_potential_beta_xc (ao_num,ao_num)
    +
    +
    +

    Needs:

    +
      +
    • ao_num
    • +
    +
    +
      +
    +
    +

    Needed by:

    +
    + +
      +
    +
    +
    + +
    +
    +e_correlation_dft
    +

    File : pot_functionals.irp.f

    +
    double precision        :: e_correlation_dft
    +
    +
    +

    Needs:

    +
    +
      +
    +
      +
    +
    +

    Needed by:

    +
    + +
      +
    +
    +
    + +
    +
    +e_exchange_dft
    +

    File : pot_functionals.irp.f

    +
    double precision        :: e_exchange_dft
    +
    +
    +

    Needs:

    +
    +
      +
    +
      +
    +
    +

    Needed by:

    +
    + +
      +
    +
    +
    + +
    +
    +fock_matrix_alpha_no_xc_ao
    +

    File : fock_matrix_rs_ks.irp.f

    +
    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:

    +
      +
    • ao_num
    • +
    +
    + +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +fock_matrix_beta_no_xc_ao
    +

    File : fock_matrix_rs_ks.irp.f

    +
    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:

    +
      +
    • ao_num
    • +
    +
    + +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +fock_matrix_energy
    +

    File : rs_ks_energy.irp.f

    +
    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:

    +
    + + +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +one_e_energy
    +

    File : rs_ks_energy.irp.f

    +
    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:

    +
    + + +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +rs_ks_energy
    +

    File : rs_ks_energy.irp.f

    +
    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:

    +
    + + +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +trace_potential_xc
    +

    File : rs_ks_energy.irp.f

    +
    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:

    +
    + + +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +two_e_energy
    +

    File : rs_ks_energy.irp.f

    +
    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:

    +
    + + +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +

    Subroutines / functions

    +
    +
    +check_coherence_functional:()
    +

    File : rs_ks_scf.irp.f

    +
    subroutine check_coherence_functional
    +
    +
    +

    Needs:

    +
      +
    • exchange_functional
    • +
    +
      +
    • correlation_functional
    • +
    +
      +
    +
    +

    Called by:

    +
      +
    • rs_ks_scf()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    + + +
    + +
    + + +
    +
    + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/doc/modules/mo_basis.html b/doc/modules/mo_basis.html new file mode 100644 index 00000000..8411d8a1 --- /dev/null +++ b/doc/modules/mo_basis.html @@ -0,0 +1,1114 @@ + + + + + + + + + + + mo_basis — Quantum Package 2.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + +
    + + + + + +
    + +
    + + + + + + + + + + + + + + + + + +
    + + + + +
    +
    +
    +
    + +
    +

    mo_basis

    +

    Molecular orbitals are expressed as

    +
    +\[\phi_k({\bf r}) = \sum_i C_{ik} \chi_k({\bf r})\]
    +

    where \(\chi_k\) are normalized atomic basis functions.

    +

    The current set of MOs has a label mo_label. +When the orbitals are modified, the label should also be updated to keep +everything consistent.

    +

    When saving the MOs, the mo_basis directory of the EZFIO database +is copied in the save directory, named by the current mo_label. All +this is done with the script named save_current_mos.sh in the +$QP_ROOT/scripts directory.

    +
    +

    EZFIO parameters

    +
    +
    +mo_num
    +

    Total number of MOs

    +
    + +
    +
    +mo_coef
    +

    Coefficient of the i-th AO on the j-th MO

    +
    + +
    +
    +mo_label
    +

    Label characterizing the MOS (Local, Canonical, Natural, etc)

    +
    + +
    +
    +mo_occ
    +

    MO occupation numbers

    +
    + +
    +
    +mo_class
    +

    [ Core | Inactive | Active | Virtual | Deleted ], as defined by qp_set_mo_class

    +
    + +
    +
    +ao_md5
    +

    MD5 checksum characterizing the AO basis set.

    +
    + +
    +
    +

    Providers

    +
    +
    +mo_coef
    +

    File : mo_basis/mos.irp.f

    +
    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:

    +
    + + +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +mo_coef_begin_iteration
    +

    File : mo_basis/track_orb.irp.f

    +
    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:

    +
      +
    • ao_num
    • +
    +
    +
      +
    +
    +
    + +
    +
    +mo_coef_in_ao_ortho_basis
    +

    File : mo_basis/mos.irp.f

    +
    double precision, allocatable   :: mo_coef_in_ao_ortho_basis    (ao_num,mo_num)
    +
    +
    +

    MO coefficients in orthogonalized AO basis

    +

    \(C^{-1}.C_{mo}\)

    +

    Needs:

    +
    + + +
    +
    + +
    +
    +mo_coef_transp
    +

    File : mo_basis/mos.irp.f

    +
    double precision, allocatable   :: mo_coef_transp       (mo_num,ao_num)
    +
    +
    +

    MO coefficients on AO basis set

    +

    Needs:

    +
      +
    • ao_num
    • +
    +
    + +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +mo_label
    +

    File : mo_basis/mos.irp.f

    +
    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:

    +
    + +
      +
    +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +mo_num
    +

    File : mo_basis/mos.irp.f

    +
    integer :: mo_num
    +
    +
    +

    Number of MOs

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +mo_occ
    +

    File : mo_basis/mos.irp.f

    +
    double precision, allocatable   :: mo_occ       (mo_num)
    +
    +
    +

    MO occupation numbers

    +

    Needs:

    +
      +
    • elec_alpha_num
    • +
    • elec_beta_num
    • +
    +
    + +
    +
    + +
    +
    +

    Subroutines / functions

    +
    +
    +ao_ortho_cano_to_ao:()
    +

    File : mo_basis/mos.irp.f

    +
    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:

    +
      +
    • ao_num
    • +
    +
    +
      +
    +
    +

    Calls:

    +
      +
    • dgemm()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +ao_to_mo:()
    +

    File : mo_basis/mos.irp.f

    +
    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:

    +
      +
    • ao_num
    • +
    +
    + +
    +

    Called by:

    +
    + + +
    +

    Calls:

    +
      +
    • dgemm()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +give_all_mos_and_grad_and_lapl_at_r:()
    +

    File : mo_basis/mos_in_r.irp.f

    +
    subroutine give_all_mos_and_grad_and_lapl_at_r(r,mos_array,mos_grad_array,mos_lapl_array)
    +
    +
    +

    Needs:

    +
      +
    • ao_num
    • +
    +
    + +
    +

    Calls:

    +
      +
    • give_all_aos_and_grad_and_lapl_at_r()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +give_all_mos_and_grad_at_r:()
    +

    File : mo_basis/mos_in_r.irp.f

    +
    subroutine give_all_mos_and_grad_at_r(r,mos_array,mos_grad_array)
    +
    +
    +

    Needs:

    +
      +
    • ao_num
    • +
    +
    + +
    +

    Calls:

    +
      +
    • give_all_aos_and_grad_at_r()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +give_all_mos_at_r:()
    +

    File : mo_basis/mos_in_r.irp.f

    +
    subroutine give_all_mos_at_r(r,mos_array)
    +
    +
    +

    Needs:

    +
      +
    • ao_num
    • +
    +
    + +
    +

    Calls:

    +
      +
    • dgemv()
    • +
    +
      +
    • give_all_aos_at_r()
    • +
    +
      +
    +
    +
    + +
    +
    +initialize_mo_coef_begin_iteration:()
    +

    File : mo_basis/track_orb.irp.f

    +
    subroutine initialize_mo_coef_begin_iteration
    +
    +
    +

    Initialize mo_coef_begin_iteration to the current mo_coef

    +

    Needs:

    +
    + +
      +
    +
    +

    Called by:

    +
      +
    • damping_scf()
    • +
    +
      +
    • roothaan_hall_scf()
    • +
    +
      +
    +
    +
    + +
    +
    +mix_mo_jk:()
    +

    File : mo_basis/mos.irp.f

    +
    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}} (|jrangle + |krangle)$
    • +
    • $- = frac{1}{sqrt{2}} (|jrangle - |krangle)$
    • +
    +

    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:

    +
      +
    • ao_num
    • +
    +
    +
      +
    +
    +
    + +
    +
    +mo_as_eigvectors_of_mo_matrix:()
    +

    File : mo_basis/utils.irp.f

    +
    subroutine mo_as_eigvectors_of_mo_matrix(matrix,n,m,label,sign,output)
    +
    +
    +

    Needs:

    +
    + + +
    +

    Called by:

    +
      +
    • create_guess()
    • +
    • damping_scf()
    • +
    +
      +
    • hcore_guess()
    • +
    +
      +
    • roothaan_hall_scf()
    • +
    +
    +

    Calls:

    +
      +
    • dgemm()
    • +
    +
      +
    • lapack_diag()
    • +
    +
      +
    • write_time()
    • +
    +
    +
    + +
    +
    +mo_as_svd_vectors_of_mo_matrix:()
    +

    File : mo_basis/utils.irp.f

    +
    subroutine mo_as_svd_vectors_of_mo_matrix(matrix,lda,m,n,label)
    +
    +
    +

    Needs:

    +
    + + +
    +

    Calls:

    +
      +
    • dgemm()
    • +
    +
      +
    • svd()
    • +
    +
      +
    • write_time()
    • +
    +
    +
    + +
    +
    +mo_as_svd_vectors_of_mo_matrix_eig:()
    +

    File : mo_basis/utils.irp.f

    +
    subroutine mo_as_svd_vectors_of_mo_matrix_eig(matrix,lda,m,n,eig,label)
    +
    +
    +

    Needs:

    +
    + + +
    +

    Called by:

    +
      +
    • set_natural_mos()
    • +
    +
      +
    +
      +
    +
    +

    Calls:

    +
      +
    • dgemm()
    • +
    +
      +
    • svd()
    • +
    +
      +
    • write_time()
    • +
    +
    +
    + +
    +
    +reorder_core_orb:()
    +

    File : mo_basis/track_orb.irp.f

    +
    subroutine reorder_core_orb
    +
    +
    +

    routines that takes the current mo_coef and reorder the core orbitals (see list_core and n_core_orb) according to the overlap with mo_coef_begin_iteration

    +

    Needs:

    +
    + + +
    +

    Called by:

    +
      +
    • damping_scf()
    • +
    +
      +
    • roothaan_hall_scf()
    • +
    +
      +
    +
    +

    Calls:

    +
      +
    • dsort()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +save_mos:()
    +

    File : mo_basis/utils.irp.f

    +
    subroutine save_mos
    +
    +
    +

    Needs:

    +
    + + +
    +

    Called by:

    +
      +
    • damping_scf()
    • +
    • hcore_guess()
    • +
    +
      +
    • huckel_guess()
    • +
    • roothaan_hall_scf()
    • +
    +
      +
    • save_natural_mos()
    • +
    • save_ortho_mos()
    • +
    +
    +

    Calls:

    +
      +
    • ezfio_set_mo_basis_ao_md5()
    • +
    • ezfio_set_mo_basis_mo_coef()
    • +
    +
      +
    • ezfio_set_mo_basis_mo_label()
    • +
    • ezfio_set_mo_basis_mo_num()
    • +
    +
      +
    • ezfio_set_mo_basis_mo_occ()
    • +
    • system()
    • +
    +
    +
    + +
    +
    +save_mos_truncated:()
    +

    File : mo_basis/utils.irp.f

    +
    subroutine save_mos_truncated(n)
    +
    +
    +

    Needs:

    +
    + + +
    +

    Calls:

    +
      +
    • ezfio_set_mo_basis_ao_md5()
    • +
    • ezfio_set_mo_basis_mo_coef()
    • +
    +
      +
    • ezfio_set_mo_basis_mo_label()
    • +
    • ezfio_set_mo_basis_mo_num()
    • +
    +
      +
    • ezfio_set_mo_basis_mo_occ()
    • +
    • system()
    • +
    +
    +
    + +
    +
    + + +
    + +
    + + +
    +
    + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/doc/modules/mo_guess.html b/doc/modules/mo_guess.html new file mode 100644 index 00000000..e1acaa32 --- /dev/null +++ b/doc/modules/mo_guess.html @@ -0,0 +1,450 @@ + + + + + + + + + + + mo_guess — Quantum Package 2.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + +
    + + + + + +
    + +
    + + + + + + + + + + + + + + + + + +
    + + + + +
    +
    +
    +
    + +
    +

    mo_guess

    +

    Guess for MOs.

    +
    +

    Providers

    +
    +
    +ao_ortho_canonical_nucl_elec_integrals
    +

    File : mo_guess/pot_mo_ortho_canonical_ints.irp.f

    +
    double precision, allocatable   :: ao_ortho_canonical_nucl_elec_integrals       (mo_num,mo_num)
    +
    +
    +

    Needs:

    +
    + + +
    +
    + +
    +
    +ao_ortho_lowdin_coef
    +

    File : mo_guess/mo_ortho_lowdin.irp.f

    +
    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:

    +
      +
    • ao_num
    • +
    +
    +
      +
    +
    +

    Needed by:

    +
    + +
      +
    +
    +
    + +
    +
    +ao_ortho_lowdin_nucl_elec_integrals
    +

    File : mo_guess/pot_mo_ortho_lowdin_ints.irp.f

    +
    double precision, allocatable   :: ao_ortho_lowdin_nucl_elec_integrals  (mo_num,mo_num)
    +
    +
    +

    Needs:

    +
    + + +
    +
    + +
    +
    +ao_ortho_lowdin_overlap
    +

    File : mo_guess/mo_ortho_lowdin.irp.f

    +
    double precision, allocatable   :: ao_ortho_lowdin_overlap      (ao_num,ao_num)
    +
    +
    +

    overlap matrix of the ao_ortho_lowdin +supposed to be the Identity

    +

    Needs:

    +
      +
    • ao_num
    • +
    +
    + +
    +
    + +
    +
    +

    Subroutines / functions

    +
    +
    +hcore_guess:()
    +

    File : mo_guess/h_core_guess_routine.irp.f

    +
    subroutine hcore_guess
    +
    +
    +

    Produce H_core MO orbital

    +

    Needs:

    +
    + + +
    +

    Calls:

    +
      +
    • mo_as_eigvectors_of_mo_matrix()
    • +
    +
      +
    • save_mos()
    • +
    +
      +
    +
    +

    Touches:

    +
    + +
      +
    +
    +
    + +
    +
    + + +
    + +
    + + +
    +
    + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/doc/modules/mo_one_e_ints.html b/doc/modules/mo_one_e_ints.html new file mode 100644 index 00000000..95bb4d3e --- /dev/null +++ b/doc/modules/mo_one_e_ints.html @@ -0,0 +1,868 @@ + + + + + + + + + + + mo_one_e_integrals — Quantum Package 2.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + +
    + + + + + +
    + +
    + + + + + + + + + + + + + + + + + +
    + + + + +
    +
    +
    +
    + +
    +

    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 kin_mo_ints.irp.f)
    • +
    • mo_integrals_n_e which are the nuclear-elctron operator integrals on the AO basis (see pot_mo_ints.irp.f)
    • +
    • mo_one_e_integrals which are the the h_core operator integrals on the AO basis (see mo_mono_ints.irp.f)
    • +
    +

    Note that you can find other interesting integrals related to the position operator in spread_dipole_mo.irp.f.

    +
    +

    EZFIO parameters

    +
    +
    +mo_integrals_e_n
    +

    Nucleus-electron integrals in MO basis set

    +
    + +
    +
    +io_mo_integrals_e_n
    +

    Read/Write MO electron-nucleus attraction integrals from/to disk [ Write | Read | None ]

    +

    Default: None

    +
    + +
    +
    +mo_integrals_kinetic
    +

    Kinetic energy integrals in MO basis set

    +
    + +
    +
    +io_mo_integrals_kinetic
    +

    Read/Write MO one-electron kinetic integrals from/to disk [ Write | Read | None ]

    +

    Default: None

    +
    + +
    +
    +mo_integrals_pseudo
    +

    Pseudopotential integrals in MO basis set

    +
    + +
    +
    +io_mo_integrals_pseudo
    +

    Read/Write MO pseudopotential integrals from/to disk [ Write | Read | None ]

    +

    Default: None

    +
    + +
    +
    +mo_one_e_integrals
    +

    One-electron integrals in MO basis set

    +
    + +
    +
    +io_mo_one_e_integrals
    +

    Read/Write MO one-electron integrals from/to disk [ Write | Read | None ]

    +

    Default: None

    +
    + +
    +
    +

    Providers

    +
    +
    +mo_dipole_x
    +

    File : mo_one_e_ints/spread_dipole_mo.irp.f

    +
    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:

    +
    + + +
    +
    + +
    +
    +mo_dipole_y
    +

    File : mo_one_e_ints/spread_dipole_mo.irp.f

    +
    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:

    +
    + + +
    +
    + +
    +
    +mo_dipole_z
    +

    File : mo_one_e_ints/spread_dipole_mo.irp.f

    +
    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:

    +
    + + +
    +
    + +
    +
    +mo_integrals_n_e
    +

    File : mo_one_e_ints/pot_mo_ints.irp.f

    +
    double precision, allocatable   :: mo_integrals_n_e     (mo_num,mo_num)
    +
    +
    +

    Nucleus-electron interaction on the MO basis

    +

    Needs:

    +
    + +
      +
    • read_mo_integrals_e_n
    • +
    +
    +

    Needed by:

    +
    + +
      +
    +
    +
    + +
    +
    +mo_integrals_n_e_per_atom
    +

    File : mo_one_e_ints/pot_mo_ints.irp.f

    +
    double precision, allocatable   :: mo_integrals_n_e_per_atom    (mo_num,mo_num,nucl_num)
    +
    +
    +

    mo_integrals_n_e_per_atom(i,j,k) = +\(\langle \phi_i| -\frac{1}{|r-R_k|} | \phi_j \rangle\) . +where R_k is the coordinate of the k-th nucleus.

    +

    Needs:

    +
    + +
      +
    • nucl_num
    • +
    +
    +
    + +
    +
    +mo_kinetic_integrals
    +

    File : mo_one_e_ints/kin_mo_ints.irp.f

    +
    double precision, allocatable   :: mo_kinetic_integrals (mo_num,mo_num)
    +
    +
    +

    Kinetic energy integrals in the MO basis

    +

    Needs:

    +
    + +
      +
    • read_mo_integrals_kinetic
    • +
    +
    +

    Needed by:

    +
    + +
      +
    +
    +
    + +
    +
    +mo_one_e_integrals
    +

    File : mo_one_e_ints/mo_one_e_ints.irp.f

    +
    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:

    +
    + + +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +mo_overlap
    +

    File : mo_one_e_ints/mo_overlap.irp.f

    +
    double precision, allocatable   :: mo_overlap   (mo_num,mo_num)
    +
    +
    +

    Provider to check that the MOs are indeed orthonormal.

    +

    Needs:

    +
    + + +
    +
    + +
    +
    +mo_pseudo_integrals
    +

    File : mo_one_e_ints/pot_mo_pseudo_ints.irp.f

    +
    double precision, allocatable   :: mo_pseudo_integrals  (mo_num,mo_num)
    +
    +
    +

    Pseudopotential integrals in MO basis

    +

    Needs:

    +
    + +
      +
    • mo_num
    • +
    • read_mo_integrals_pseudo
    • +
    +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +mo_spread_x
    +

    File : mo_one_e_ints/spread_dipole_mo.irp.f

    +
    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:

    +
    + + +
    +
    + +
    +
    +mo_spread_y
    +

    File : mo_one_e_ints/spread_dipole_mo.irp.f

    +
    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:

    +
    + + +
    +
    + +
    +
    +mo_spread_z
    +

    File : mo_one_e_ints/spread_dipole_mo.irp.f

    +
    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:

    +
    + + +
    +
    + +
    +
    +s_mo_coef
    +

    File : mo_one_e_ints/ao_to_mo.irp.f

    +
    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:

    +
    + + +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +

    Subroutines / functions

    +
    +
    +mo_to_ao:()
    +

    File : mo_one_e_ints/ao_to_mo.irp.f

    +
    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:

    +
      +
    • ao_num
    • +
    +
    + +
    +

    Called by:

    +
    +
      +
    +
      +
    +
    +

    Calls:

    +
      +
    • dgemm()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +mo_to_ao_no_overlap:()
    +

    File : mo_one_e_ints/ao_to_mo.irp.f

    +
    subroutine mo_to_ao_no_overlap(A_mo,LDA_mo,A_ao,LDA_ao)
    +
    +
    +

    $C.A_{mo}.C^dagger$

    +

    Needs:

    +
      +
    • ao_num
    • +
    +
    + +
    +

    Calls:

    +
      +
    • dgemm()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +orthonormalize_mos:()
    +

    File : mo_one_e_ints/orthonormalize.irp.f

    +
    subroutine orthonormalize_mos
    +
    +
    +

    Needs:

    +
    + + +
    +

    Called by:

    +
      +
    • save_ortho_mos()
    • +
    +
      +
    • scf()
    • +
    +
      +
    +
    +

    Calls:

    +
      +
    • ortho_lowdin()
    • +
    +
      +
    +
      +
    +
    +

    Touches:

    +
    + +
      +
    +
    +
    + +
    +
    + + +
    + +
    + + +
    +
    + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/doc/modules/mo_two_e_erf_ints.html b/doc/modules/mo_two_e_erf_ints.html new file mode 100644 index 00000000..1fd3469e --- /dev/null +++ b/doc/modules/mo_two_e_erf_ints.html @@ -0,0 +1,1291 @@ + + + + + + + + + + + mo_two_e_erf_ints — Quantum Package 2.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + +
    + + + + + +
    + +
    + + + + + + + + + + + + + + + + + +
    + + + + +
    +
    +
    +
    + +
    +

    mo_two_e_erf_ints

    +

    Here, all two-electron integrals (\(erf({\mu}_{erf} * r_{12})/r_{12}\)) are computed. +As they have 4 indices and many are zero, they are stored in a map, as defined +in Utils/map_module.f90.

    +

    The range separation parameter \({\mu}_{erf}\) is the variable ao_two_e_erf_ints mu_erf.

    +

    To fetch an MO integral, use +get_mo_two_e_integral_erf(i,j,k,l,mo_integrals_map_erf)

    +

    The conventions are:

    +
      +
    • For MO integrals : <ij|kl> = <12|12>
    • +
    +

    Be aware that it might not be the same conventions for MO and AO integrals.

    +
    +

    EZFIO parameters

    +
    +
    +io_mo_two_e_integrals_erf
    +

    Read/Write MO integrals with the long range interaction from/to disk [ Write | Read | None ]

    +

    Default: None

    +
    + +
    +
    +

    Providers

    +
    +
    +core_energy_erf
    +

    File : mo_two_e_erf_ints/core_quantities_erf.irp.f

    +
    double precision        :: core_energy_erf
    +
    +
    +

    energy from the core : contains all core-core contributionswith the erf interaction

    +

    Needs:

    +
    + + +
    +
    + +
    +
    +core_fock_operator_erf
    +

    File : mo_two_e_erf_ints/core_quantities_erf.irp.f

    +
    double precision, allocatable   :: core_fock_operator_erf       (mo_num,mo_num)
    +
    +
    +

    this is the contribution to the Fock operator from the core electrons with the erf interaction

    +

    Needs:

    +
    + + +
    +
    + +
    +
    +insert_into_mo_integrals_erf_map:()
    +

    File : mo_two_e_erf_ints/map_integrals_erf.irp.f

    +
      subroutine insert_into_mo_integrals_erf_map(n_integrals,                 &
    +buffer_i, buffer_values, thr)
    +
    +
    +

    Create new entry into MO map, or accumulate in an existing entry

    +

    Needs:

    +
    +
      +
    +
      +
    +
    +

    Called by:

    +
      +
    • add_integrals_to_map_erf()
    • +
    +
      +
    +
      +
    +
    +

    Calls:

    +
      +
    • map_update()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +int_erf_3_index
    +

    File : mo_two_e_erf_ints/ints_erf_3_index.irp.f

    +
    double precision, allocatable   :: int_erf_3_index      (mo_num,mo_num,mo_num)
    +double precision, allocatable   :: int_erf_3_index_exc  (mo_num,mo_num,mo_num)
    +
    +
    +

    int_erf_3_index(i,j) = <ij|ij> = (ii|jj) with the erf interaction

    +

    int_erf_3_index_exc(i,j) = <ij|ji> = (ij|ij) with the erf interaction

    +

    Needs:

    +
    + + +
    +
    + +
    +
    +int_erf_3_index_exc
    +

    File : mo_two_e_erf_ints/ints_erf_3_index.irp.f

    +
    double precision, allocatable   :: int_erf_3_index      (mo_num,mo_num,mo_num)
    +double precision, allocatable   :: int_erf_3_index_exc  (mo_num,mo_num,mo_num)
    +
    +
    +

    int_erf_3_index(i,j) = <ij|ij> = (ii|jj) with the erf interaction

    +

    int_erf_3_index_exc(i,j) = <ij|ji> = (ij|ij) with the erf interaction

    +

    Needs:

    +
    + + +
    +
    + +
    +
    +mo_integrals_erf_cache
    +

    File : mo_two_e_erf_ints/map_integrals_erf.irp.f

    +
    double precision, allocatable   :: mo_integrals_erf_cache       (0:64*64*64*64)
    +
    +
    +

    Cache of MO integrals for fast access

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +mo_integrals_erf_cache_max
    +

    File : mo_two_e_erf_ints/map_integrals_erf.irp.f

    +
    integer :: mo_integrals_erf_cache_min
    +integer :: mo_integrals_erf_cache_max
    +
    +
    +

    Min and max values of the MOs for which the integrals are in the cache

    +

    Needs:

    +
      +
    • elec_alpha_num
    • +
    +
    +
      +
    +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +mo_integrals_erf_cache_min
    +

    File : mo_two_e_erf_ints/map_integrals_erf.irp.f

    +
    integer :: mo_integrals_erf_cache_min
    +integer :: mo_integrals_erf_cache_max
    +
    +
    +

    Min and max values of the MOs for which the integrals are in the cache

    +

    Needs:

    +
      +
    • elec_alpha_num
    • +
    +
    +
      +
    +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +mo_integrals_erf_map
    +

    File : mo_two_e_erf_ints/map_integrals_erf.irp.f

    +
    type(map_type)  :: mo_integrals_erf_map
    +
    +
    +

    MO integrals

    +

    Needs:

    +
    +
      +
    +
      +
    +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +mo_two_e_int_erf_jj
    +

    File : mo_two_e_erf_ints/mo_bi_integrals_erf.irp.f

    +
    double precision, allocatable   :: mo_two_e_int_erf_jj  (mo_num,mo_num)
    +double precision, allocatable   :: mo_two_e_int_erf_jj_exchange (mo_num,mo_num)
    +double precision, allocatable   :: mo_two_e_int_erf_jj_anti     (mo_num,mo_num)
    +
    +
    +

    mo_two_e_integrals_jj(i,j) = J_ij +mo_two_e_integrals_jj_exchange(i,j) = K_ij +mo_two_e_integrals_jj_anti(i,j) = J_ij - K_ij

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +mo_two_e_int_erf_jj_anti
    +

    File : mo_two_e_erf_ints/mo_bi_integrals_erf.irp.f

    +
    double precision, allocatable   :: mo_two_e_int_erf_jj  (mo_num,mo_num)
    +double precision, allocatable   :: mo_two_e_int_erf_jj_exchange (mo_num,mo_num)
    +double precision, allocatable   :: mo_two_e_int_erf_jj_anti     (mo_num,mo_num)
    +
    +
    +

    mo_two_e_integrals_jj(i,j) = J_ij +mo_two_e_integrals_jj_exchange(i,j) = K_ij +mo_two_e_integrals_jj_anti(i,j) = J_ij - K_ij

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +mo_two_e_int_erf_jj_anti_from_ao
    +

    File : mo_two_e_erf_ints/mo_bi_integrals_erf.irp.f

    +
    double precision, allocatable   :: mo_two_e_int_erf_jj_from_ao  (mo_num,mo_num)
    +double precision, allocatable   :: mo_two_e_int_erf_jj_exchange_from_ao (mo_num,mo_num)
    +double precision, allocatable   :: mo_two_e_int_erf_jj_anti_from_ao     (mo_num,mo_num)
    +
    +
    +

    mo_two_e_integral_jj_from_ao(i,j) = J_ij +mo_two_e_integrals_jj_exchange_from_ao(i,j) = J_ij +mo_two_e_integrals_jj_anti_from_ao(i,j) = J_ij - K_ij

    +

    Needs:

    +
    + + +
    +
    + +
    +
    +mo_two_e_int_erf_jj_exchange
    +

    File : mo_two_e_erf_ints/mo_bi_integrals_erf.irp.f

    +
    double precision, allocatable   :: mo_two_e_int_erf_jj  (mo_num,mo_num)
    +double precision, allocatable   :: mo_two_e_int_erf_jj_exchange (mo_num,mo_num)
    +double precision, allocatable   :: mo_two_e_int_erf_jj_anti     (mo_num,mo_num)
    +
    +
    +

    mo_two_e_integrals_jj(i,j) = J_ij +mo_two_e_integrals_jj_exchange(i,j) = K_ij +mo_two_e_integrals_jj_anti(i,j) = J_ij - K_ij

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +mo_two_e_int_erf_jj_exchange_from_ao
    +

    File : mo_two_e_erf_ints/mo_bi_integrals_erf.irp.f

    +
    double precision, allocatable   :: mo_two_e_int_erf_jj_from_ao  (mo_num,mo_num)
    +double precision, allocatable   :: mo_two_e_int_erf_jj_exchange_from_ao (mo_num,mo_num)
    +double precision, allocatable   :: mo_two_e_int_erf_jj_anti_from_ao     (mo_num,mo_num)
    +
    +
    +

    mo_two_e_integral_jj_from_ao(i,j) = J_ij +mo_two_e_integrals_jj_exchange_from_ao(i,j) = J_ij +mo_two_e_integrals_jj_anti_from_ao(i,j) = J_ij - K_ij

    +

    Needs:

    +
    + + +
    +
    + +
    +
    +mo_two_e_int_erf_jj_from_ao
    +

    File : mo_two_e_erf_ints/mo_bi_integrals_erf.irp.f

    +
    double precision, allocatable   :: mo_two_e_int_erf_jj_from_ao  (mo_num,mo_num)
    +double precision, allocatable   :: mo_two_e_int_erf_jj_exchange_from_ao (mo_num,mo_num)
    +double precision, allocatable   :: mo_two_e_int_erf_jj_anti_from_ao     (mo_num,mo_num)
    +
    +
    +

    mo_two_e_integral_jj_from_ao(i,j) = J_ij +mo_two_e_integrals_jj_exchange_from_ao(i,j) = J_ij +mo_two_e_integrals_jj_anti_from_ao(i,j) = J_ij - K_ij

    +

    Needs:

    +
    + + +
    +
    + +
    +
    +mo_two_e_integrals_erf_in_map
    +

    File : mo_two_e_erf_ints/mo_bi_integrals_erf.irp.f

    +
    logical :: mo_two_e_integrals_erf_in_map
    +
    +
    +

    If True, the map of MO two-electron integrals is provided

    +

    Needs:

    +
    + +
      +
    • mo_integrals_threshold
    • +
    • mo_num
    • +
    • n_int
    • +
    • read_mo_two_e_integrals_erf
    • +
    +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +

    Subroutines / functions

    +
    +
    +add_integrals_to_map_erf:()
    +

    File : mo_two_e_erf_ints/mo_bi_integrals_erf.irp.f

    +
    subroutine add_integrals_to_map_erf(mask_ijkl)
    +
    +
    +

    Adds integrals to tha MO map according to some bitmask

    +

    Needs:

    +
    + + +
    +

    Called by:

    +
    +
      +
    +
      +
    +
    +

    Calls:

    +
      +
    • bitstring_to_list()
    • +
    • bitstring_to_str()
    • +
    • cpu_time()
    • +
    +
      +
    • get_ao_two_e_integrals_erf()
    • +
    • insert_into_mo_integrals_erf_map()
    • +
    • map_merge()
    • +
    +
      +
    • mo_two_e_integrals_index()
    • +
    • wall_time()
    • +
    +
    +
    + +
    +
    +clear_mo_erf_map:()
    +

    File : mo_two_e_erf_ints/mo_bi_integrals_erf.irp.f

    +
    subroutine clear_mo_erf_map
    +
    +
    +

    Frees the memory of the MO map

    +

    Needs:

    +
    +
      +
    +
      +
    +
    +

    Calls:

    +
      +
    • map_deinit()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +get_mo_erf_map_size:()
    +

    File : mo_two_e_erf_ints/map_integrals_erf.irp.f

    +
    integer*8 function get_mo_erf_map_size()
    +
    +
    +

    Returns the number of elements in the MO map

    +

    Needs:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +get_mo_two_e_integral_erf:()
    +

    File : mo_two_e_erf_ints/map_integrals_erf.irp.f

    +
    double precision function get_mo_two_e_integral_erf(i,j,k,l,map)
    +
    +
    +

    Returns one integral $langle ij|kl rangle$ in the MO basis

    +

    Needs:

    +
    + + +
    +

    Calls:

    +
      +
    • map_get()
    • +
    +
      +
    • two_e_integrals_index()
    • +
    +
      +
    +
    +
    + +
    +
    +get_mo_two_e_integrals_erf:()
    +

    File : mo_two_e_erf_ints/map_integrals_erf.irp.f

    +
    subroutine get_mo_two_e_integrals_erf(j,k,l,sze,out_val,map)
    +
    +
    +

    Returns multiple integrals $langle ij|kl rangle$ in the MO basis, all +i for j,k,l fixed.

    +

    Needs:

    +
    +
      +
    +
      +
    +
    +

    Calls:

    +
      +
    • map_get_many()
    • +
    +
      +
    • two_e_integrals_index()
    • +
    +
      +
    +
    +
    + +
    +
    +get_mo_two_e_integrals_erf_coulomb_ii:()
    +

    File : mo_two_e_erf_ints/map_integrals_erf.irp.f

    +
    subroutine get_mo_two_e_integrals_erf_coulomb_ii(k,l,sze,out_val,map)
    +
    +
    +

    Returns multiple integrals $langle ki|li rangle$

    +

    k(1)i(2) 1/r12 l(1)i(2) :: out_val(i1) +for k,l fixed.

    +

    Needs:

    +
    +
      +
    +
      +
    +
    +

    Calls:

    +
      +
    • map_get_many()
    • +
    +
      +
    • two_e_integrals_index()
    • +
    +
      +
    +
    +
    + +
    +
    +get_mo_two_e_integrals_erf_exch_ii:()
    +

    File : mo_two_e_erf_ints/map_integrals_erf.irp.f

    +
    subroutine get_mo_two_e_integrals_erf_exch_ii(k,l,sze,out_val,map)
    +
    +
    +

    Returns multiple integrals $langle ki|il rangle$

    +

    $int k(1)i(2) frac{1}{r_{12}} i(1)l(2)$ :: out_val(i1) +for k,l fixed.

    +

    Needs:

    +
    +
      +
    +
      +
    +
    +

    Calls:

    +
      +
    • map_get_many()
    • +
    +
      +
    • two_e_integrals_index()
    • +
    +
      +
    +
    +
    + +
    +
    +get_mo_two_e_integrals_erf_i1j1:()
    +

    File : mo_two_e_erf_ints/map_integrals_erf.irp.f

    +
    subroutine get_mo_two_e_integrals_erf_i1j1(k,l,sze,out_array,map)
    +
    +
    +

    Returns multiple integrals $langle ik|jl rangle$ in the MO basis, all +$int i(1)j(1) frac{erf(mu * r_{12})}{r_{12}} k(2)l(2)$ +i, j for k,l fixed.

    +

    Needs:

    +
    + +
      +
    +
    +

    Calls:

    +
      +
    • i2radix_sort()
    • +
    • i8radix_sort()
    • +
    +
      +
    • iradix_sort()
    • +
    • map_get_many()
    • +
    +
      +
    • two_e_integrals_index()
    • +
    +
    +
    + +
    +
    +get_mo_two_e_integrals_erf_ij:()
    +

    File : mo_two_e_erf_ints/map_integrals_erf.irp.f

    +
    subroutine get_mo_two_e_integrals_erf_ij(k,l,sze,out_array,map)
    +
    +
    +

    Returns multiple integrals $langle ij|kl rangle$ in the MO basis, all +$int i(1)j(2) frac{1}{r_{12}} k(1)l(2)$ +i, j for k,l fixed.

    +

    Needs:

    +
    + +
      +
    +
    +

    Calls:

    +
      +
    • i2radix_sort()
    • +
    • i8radix_sort()
    • +
    +
      +
    • iradix_sort()
    • +
    • map_get_many()
    • +
    +
      +
    • two_e_integrals_index()
    • +
    +
    +
    + +
    +
    +load_mo_integrals_erf:()
    +

    File : mo_two_e_erf_ints/map_integrals_erf.irp.f

    +
    integer function load_mo_integrals_erf(filename)
    +
    +
    +

    Read from disk the MO erf integrals

    +

    Needs:

    +
    +
      +
    +
      +
    +
    +

    Calls:

    +
      +
    • cache_map_reallocate()
    • +
    +
      +
    • map_deinit()
    • +
    +
      +
    • map_sort()
    • +
    +
    +
    + +
    +
    +mo_two_e_integral_erf:()
    +

    File : mo_two_e_erf_ints/map_integrals_erf.irp.f

    +
    double precision function mo_two_e_integral_erf(i,j,k,l)
    +
    +
    +

    Returns one integral $langle ij|kl rangle$ in the MO basis

    +

    Needs:

    +
    + + +
    +
    + +
    +
    +mo_two_e_integrals_erf_index:()
    +

    File : mo_two_e_erf_ints/mo_bi_integrals_erf.irp.f

    +
    subroutine mo_two_e_integrals_erf_index(i,j,k,l,i1)
    +
    +
    +

    Computes an unique index for i,j,k,l integrals

    +
    + +
    +
    +provide_all_mo_integrals_erf:()
    +

    File : mo_two_e_erf_ints/mo_bi_integrals_erf.irp.f

    +
    subroutine provide_all_mo_integrals_erf
    +
    +
    +

    Needs:

    +
    + + +
    +
    + +
    +
    +save_erf_two_e_integrals_mo:()
    +

    File : mo_two_e_erf_ints/routines_save_integrals_erf.irp.f

    +
    subroutine save_erf_two_e_integrals_mo
    +
    +
    +

    Needs:

    +
    + + +
    +

    Called by:

    +
      +
    • routine()
    • +
    +
      +
    +
      +
    +
    +

    Calls:

    +
      +
    • ezfio_set_mo_two_e_erf_ints_io_mo_two_e_integrals_erf()
    • +
    +
      +
    • ezfio_set_work_empty()
    • +
    +
      +
    • map_save_to_disk()
    • +
    +
    +
    + +
    +
    +save_erf_two_e_ints_mo_into_ints_mo:()
    +

    File : mo_two_e_erf_ints/routines_save_integrals_erf.irp.f

    +
    subroutine save_erf_two_e_ints_mo_into_ints_mo
    +
    +
    +

    Needs:

    +
    + + +
    +

    Calls:

    +
      +
    • ezfio_set_mo_two_e_ints_io_mo_two_e_integrals()
    • +
    +
      +
    • ezfio_set_work_empty()
    • +
    +
      +
    • map_save_to_disk()
    • +
    +
    +
    + +
    +
    + + +
    + +
    + + +
    +
    + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/doc/modules/mo_two_e_ints.html b/doc/modules/mo_two_e_ints.html new file mode 100644 index 00000000..01685ce4 --- /dev/null +++ b/doc/modules/mo_two_e_ints.html @@ -0,0 +1,1624 @@ + + + + + + + + + + + mo_two_e_ints — Quantum Package 2.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + +
    + + + + + +
    + +
    + + + + + + + + + + + + + + + + + +
    + + + + +
    +
    +
    +
    + +
    +

    mo_two_e_ints

    +

    Here, all two-electron integrals (\(1/r_{12}\)) are computed. +As they have 4 indices and many are zero, they are stored in a map, as defined +in Utils/map_module.f90.

    +

    To fetch an AO integral, use the +get_ao_two_e_integral(i,j,k,l,ao_integrals_map) function, and +to fetch an MO integral, use +get_two_e_integral(i,j,k,l,mo_integrals_map) or +mo_two_e_integral(i,j,k,l).

    +

    The conventions are:

    +
      +
    • For AO integrals : (ik|jl) = (11|22)
    • +
    • For MO integrals : <ij|kl> = <12|12>
    • +
    +
    +

    EZFIO parameters

    +
    +
    +io_mo_two_e_integrals
    +

    Read/Write MO integrals from/to disk [ Write | Read | None ]

    +

    Default: None

    +
    + +
    +
    +mo_integrals_threshold
    +

    If | <ij|kl> | < mo_integrals_threshold then <ij|kl> is zero

    +

    Default: 1.e-15

    +
    + +
    +
    +no_vvvv_integrals
    +

    If True, computes all integrals except for the integrals having 4 virtual indices

    +

    Default: False

    +
    + +
    +
    +no_ivvv_integrals
    +

    Can be switched on only if no_vvvv_integrals is True, then does not compute the integrals with 3 virtual indices and 1 belonging to the core inactive active orbitals

    +

    Default: False

    +
    + +
    +
    +no_vvv_integrals
    +

    Can be switched on only if no_vvvv_integrals is True, then does not compute the integrals with 3 virtual orbitals

    +

    Default: False

    +
    + +
    +
    +

    Providers

    +
    +
    +big_array_coulomb_integrals
    +

    File : mo_two_e_ints/integrals_3_index.irp.f

    +
    double precision, allocatable   :: big_array_coulomb_integrals  (mo_num,mo_num,mo_num)
    +double precision, allocatable   :: big_array_exchange_integrals (mo_num,mo_num,mo_num)
    +
    +
    +

    big_array_coulomb_integrals(i,j) = <ij|ij> = (ii|jj)

    +

    big_array_exchange_integrals(i,j) = <ij|ji> = (ij|ij)

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +big_array_exchange_integrals
    +

    File : mo_two_e_ints/integrals_3_index.irp.f

    +
    double precision, allocatable   :: big_array_coulomb_integrals  (mo_num,mo_num,mo_num)
    +double precision, allocatable   :: big_array_exchange_integrals (mo_num,mo_num,mo_num)
    +
    +
    +

    big_array_coulomb_integrals(i,j) = <ij|ij> = (ii|jj)

    +

    big_array_exchange_integrals(i,j) = <ij|ji> = (ij|ij)

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +core_energy
    +

    File : mo_two_e_ints/core_quantities.irp.f

    +
    double precision        :: core_energy
    +
    +
    +

    energy from the core : contains all core-core contributions

    +

    Needs:

    +
    + + +
    +
    + +
    +
    +core_fock_operator
    +

    File : mo_two_e_ints/core_quantities.irp.f

    +
    double precision, allocatable   :: core_fock_operator   (mo_num,mo_num)
    +
    +
    +

    this is the contribution to the Fock operator from the core electrons

    +

    Needs:

    +
    + + +
    +
    + +
    +
    +insert_into_mo_integrals_map:()
    +

    File : mo_two_e_ints/map_integrals.irp.f

    +
      subroutine insert_into_mo_integrals_map(n_integrals,                 &
    +buffer_i, buffer_values, thr)
    +
    +
    +

    Create new entry into MO map, or accumulate in an existing entry

    +

    Needs:

    +
    +
      +
    +
      +
    +
    +

    Called by:

    +
      +
    • add_integrals_to_map()
    • +
    +
      +
    • add_integrals_to_map_no_exit_34()
    • +
    +
      +
    • add_integrals_to_map_three_indices()
    • +
    +
    +

    Calls:

    +
      +
    • map_update()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +mo_integrals_cache
    +

    File : mo_two_e_ints/map_integrals.irp.f

    +
    double precision, allocatable   :: mo_integrals_cache   (0_8:128_8*128_8*128_8*128_8)
    +
    +
    +

    Cache of MO integrals for fast access

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +mo_integrals_cache_max
    +

    File : mo_two_e_ints/map_integrals.irp.f

    +
    integer*4       :: mo_integrals_cache_min
    +integer*4       :: mo_integrals_cache_max
    +integer*8       :: mo_integrals_cache_min_8
    +integer*8       :: mo_integrals_cache_max_8
    +
    +
    +

    Min and max values of the MOs for which the integrals are in the cache

    +

    Needs:

    +
      +
    • elec_alpha_num
    • +
    +
    +
      +
    +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +mo_integrals_cache_max_8
    +

    File : mo_two_e_ints/map_integrals.irp.f

    +
    integer*4       :: mo_integrals_cache_min
    +integer*4       :: mo_integrals_cache_max
    +integer*8       :: mo_integrals_cache_min_8
    +integer*8       :: mo_integrals_cache_max_8
    +
    +
    +

    Min and max values of the MOs for which the integrals are in the cache

    +

    Needs:

    +
      +
    • elec_alpha_num
    • +
    +
    +
      +
    +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +mo_integrals_cache_min
    +

    File : mo_two_e_ints/map_integrals.irp.f

    +
    integer*4       :: mo_integrals_cache_min
    +integer*4       :: mo_integrals_cache_max
    +integer*8       :: mo_integrals_cache_min_8
    +integer*8       :: mo_integrals_cache_max_8
    +
    +
    +

    Min and max values of the MOs for which the integrals are in the cache

    +

    Needs:

    +
      +
    • elec_alpha_num
    • +
    +
    +
      +
    +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +mo_integrals_cache_min_8
    +

    File : mo_two_e_ints/map_integrals.irp.f

    +
    integer*4       :: mo_integrals_cache_min
    +integer*4       :: mo_integrals_cache_max
    +integer*8       :: mo_integrals_cache_min_8
    +integer*8       :: mo_integrals_cache_max_8
    +
    +
    +

    Min and max values of the MOs for which the integrals are in the cache

    +

    Needs:

    +
      +
    • elec_alpha_num
    • +
    +
    +
      +
    +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +mo_integrals_map
    +

    File : mo_two_e_ints/map_integrals.irp.f

    +
    type(map_type)  :: mo_integrals_map
    +
    +
    +

    MO integrals

    +

    Needs:

    +
    +
      +
    +
      +
    +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +mo_two_e_integral_jj_from_ao
    +

    File : mo_two_e_ints/mo_bi_integrals.irp.f

    +
    double precision, allocatable   :: mo_two_e_integral_jj_from_ao (mo_num,mo_num)
    +double precision, allocatable   :: mo_two_e_integrals_jj_exchange_from_ao       (mo_num,mo_num)
    +double precision, allocatable   :: mo_two_e_integrals_jj_anti_from_ao   (mo_num,mo_num)
    +
    +
    +

    mo_two_e_integral_jj_from_ao(i,j) = J_ij +mo_two_e_integrals_jj_exchange_from_ao(i,j) = J_ij +mo_two_e_integrals_jj_anti_from_ao(i,j) = J_ij - K_ij

    +

    Needs:

    +
    + + +
    +
    + +
    +
    +mo_two_e_integrals_in_map
    +

    File : mo_two_e_ints/mo_bi_integrals.irp.f

    +
    logical :: mo_two_e_integrals_in_map
    +
    +
    +

    If True, the map of MO two-electron integrals is provided

    +

    Needs:

    +
    + +
      +
    • mpi_master
    • +
    • n_int
    • +
    • no_ivvv_integrals
    • +
    • no_vvv_integrals
    • +
    • no_vvvv_integrals
    • +
    • read_mo_two_e_integrals
    • +
    +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +mo_two_e_integrals_jj
    +

    File : mo_two_e_ints/mo_bi_integrals.irp.f

    +
    double precision, allocatable   :: mo_two_e_integrals_jj        (mo_num,mo_num)
    +double precision, allocatable   :: mo_two_e_integrals_jj_exchange       (mo_num,mo_num)
    +double precision, allocatable   :: mo_two_e_integrals_jj_anti   (mo_num,mo_num)
    +
    +
    +

    mo_two_e_integrals_jj(i,j) = J_ij +mo_two_e_integrals_jj_exchange(i,j) = K_ij +mo_two_e_integrals_jj_anti(i,j) = J_ij - K_ij

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    + +
      +
    +
    +
    + +
    +
    +mo_two_e_integrals_jj_anti
    +

    File : mo_two_e_ints/mo_bi_integrals.irp.f

    +
    double precision, allocatable   :: mo_two_e_integrals_jj        (mo_num,mo_num)
    +double precision, allocatable   :: mo_two_e_integrals_jj_exchange       (mo_num,mo_num)
    +double precision, allocatable   :: mo_two_e_integrals_jj_anti   (mo_num,mo_num)
    +
    +
    +

    mo_two_e_integrals_jj(i,j) = J_ij +mo_two_e_integrals_jj_exchange(i,j) = K_ij +mo_two_e_integrals_jj_anti(i,j) = J_ij - K_ij

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    + +
      +
    +
    +
    + +
    +
    +mo_two_e_integrals_jj_anti_from_ao
    +

    File : mo_two_e_ints/mo_bi_integrals.irp.f

    +
    double precision, allocatable   :: mo_two_e_integral_jj_from_ao (mo_num,mo_num)
    +double precision, allocatable   :: mo_two_e_integrals_jj_exchange_from_ao       (mo_num,mo_num)
    +double precision, allocatable   :: mo_two_e_integrals_jj_anti_from_ao   (mo_num,mo_num)
    +
    +
    +

    mo_two_e_integral_jj_from_ao(i,j) = J_ij +mo_two_e_integrals_jj_exchange_from_ao(i,j) = J_ij +mo_two_e_integrals_jj_anti_from_ao(i,j) = J_ij - K_ij

    +

    Needs:

    +
    + + +
    +
    + +
    +
    +mo_two_e_integrals_jj_exchange
    +

    File : mo_two_e_ints/mo_bi_integrals.irp.f

    +
    double precision, allocatable   :: mo_two_e_integrals_jj        (mo_num,mo_num)
    +double precision, allocatable   :: mo_two_e_integrals_jj_exchange       (mo_num,mo_num)
    +double precision, allocatable   :: mo_two_e_integrals_jj_anti   (mo_num,mo_num)
    +
    +
    +

    mo_two_e_integrals_jj(i,j) = J_ij +mo_two_e_integrals_jj_exchange(i,j) = K_ij +mo_two_e_integrals_jj_anti(i,j) = J_ij - K_ij

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    + +
      +
    +
    +
    + +
    +
    +mo_two_e_integrals_jj_exchange_from_ao
    +

    File : mo_two_e_ints/mo_bi_integrals.irp.f

    +
    double precision, allocatable   :: mo_two_e_integral_jj_from_ao (mo_num,mo_num)
    +double precision, allocatable   :: mo_two_e_integrals_jj_exchange_from_ao       (mo_num,mo_num)
    +double precision, allocatable   :: mo_two_e_integrals_jj_anti_from_ao   (mo_num,mo_num)
    +
    +
    +

    mo_two_e_integral_jj_from_ao(i,j) = J_ij +mo_two_e_integrals_jj_exchange_from_ao(i,j) = J_ij +mo_two_e_integrals_jj_anti_from_ao(i,j) = J_ij - K_ij

    +

    Needs:

    +
    + + +
    +
    + +
    +
    +mo_two_e_integrals_vv_anti_from_ao
    +

    File : mo_two_e_ints/mo_bi_integrals.irp.f

    +
    double precision, allocatable   :: mo_two_e_integrals_vv_from_ao        (mo_num,mo_num)
    +double precision, allocatable   :: mo_two_e_integrals_vv_exchange_from_ao       (mo_num,mo_num)
    +double precision, allocatable   :: mo_two_e_integrals_vv_anti_from_ao   (mo_num,mo_num)
    +
    +
    +

    mo_two_e_integrals_vv_from_ao(i,j) = J_ij +mo_two_e_integrals_vv_exchange_from_ao(i,j) = J_ij +mo_two_e_integrals_vv_anti_from_ao(i,j) = J_ij - K_ij +but only for the virtual orbitals

    +

    Needs:

    +
    + + +
    +
    + +
    +
    +mo_two_e_integrals_vv_exchange_from_ao
    +

    File : mo_two_e_ints/mo_bi_integrals.irp.f

    +
    double precision, allocatable   :: mo_two_e_integrals_vv_from_ao        (mo_num,mo_num)
    +double precision, allocatable   :: mo_two_e_integrals_vv_exchange_from_ao       (mo_num,mo_num)
    +double precision, allocatable   :: mo_two_e_integrals_vv_anti_from_ao   (mo_num,mo_num)
    +
    +
    +

    mo_two_e_integrals_vv_from_ao(i,j) = J_ij +mo_two_e_integrals_vv_exchange_from_ao(i,j) = J_ij +mo_two_e_integrals_vv_anti_from_ao(i,j) = J_ij - K_ij +but only for the virtual orbitals

    +

    Needs:

    +
    + + +
    +
    + +
    +
    +mo_two_e_integrals_vv_from_ao
    +

    File : mo_two_e_ints/mo_bi_integrals.irp.f

    +
    double precision, allocatable   :: mo_two_e_integrals_vv_from_ao        (mo_num,mo_num)
    +double precision, allocatable   :: mo_two_e_integrals_vv_exchange_from_ao       (mo_num,mo_num)
    +double precision, allocatable   :: mo_two_e_integrals_vv_anti_from_ao   (mo_num,mo_num)
    +
    +
    +

    mo_two_e_integrals_vv_from_ao(i,j) = J_ij +mo_two_e_integrals_vv_exchange_from_ao(i,j) = J_ij +mo_two_e_integrals_vv_anti_from_ao(i,j) = J_ij - K_ij +but only for the virtual orbitals

    +

    Needs:

    +
    + + +
    +
    + +
    +
    +

    Subroutines / functions

    +
    +
    +add_integrals_to_map:()
    +

    File : mo_two_e_ints/mo_bi_integrals.irp.f

    +
    subroutine add_integrals_to_map(mask_ijkl)
    +
    +
    +

    Adds integrals to tha MO map according to some bitmask

    +

    Needs:

    +
    + + +
    +

    Called by:

    +
    +
      +
    +
      +
    +
    +

    Calls:

    +
      +
    • bitstring_to_list()
    • +
    • bitstring_to_str()
    • +
    • cpu_time()
    • +
    +
      +
    • get_ao_two_e_integrals()
    • +
    • insert_into_mo_integrals_map()
    • +
    • map_merge()
    • +
    +
      +
    • mo_two_e_integrals_index()
    • +
    • wall_time()
    • +
    +
    +
    + +
    +
    +add_integrals_to_map_no_exit_34:()
    +

    File : mo_two_e_ints/mo_bi_integrals.irp.f

    +
    subroutine add_integrals_to_map_no_exit_34(mask_ijkl)
    +
    +
    +

    Adds integrals to tha MO map according to some bitmask

    +

    Needs:

    +
    + + +
    +

    Called by:

    +
    +
      +
    +
      +
    +
    +

    Calls:

    +
      +
    • bitstring_to_list()
    • +
    • cpu_time()
    • +
    • get_ao_two_e_integrals()
    • +
    +
      +
    • insert_into_mo_integrals_map()
    • +
    • map_merge()
    • +
    +
      +
    • mo_two_e_integrals_index()
    • +
    • wall_time()
    • +
    +
    +
    + +
    +
    +add_integrals_to_map_three_indices:()
    +

    File : mo_two_e_ints/mo_bi_integrals.irp.f

    +
    subroutine add_integrals_to_map_three_indices(mask_ijk)
    +
    +
    +

    Adds integrals to tha MO map according to some bitmask

    +

    Needs:

    +
    + + +
    +

    Called by:

    +
    +
      +
    +
      +
    +
    +

    Calls:

    +
      +
    • bitstring_to_list()
    • +
    • bitstring_to_str()
    • +
    • cpu_time()
    • +
    +
      +
    • get_ao_two_e_integrals()
    • +
    • insert_into_mo_integrals_map()
    • +
    • map_merge()
    • +
    +
      +
    • mo_two_e_integrals_index()
    • +
    • wall_time()
    • +
    +
    +
    + +
    +
    +clear_mo_map:()
    +

    File : mo_two_e_ints/mo_bi_integrals.irp.f

    +
    subroutine clear_mo_map
    +
    +
    +

    Frees the memory of the MO map

    +

    Needs:

    +
    +
      +
    +
      +
    +
    +

    Calls:

    +
      +
    • map_deinit()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +dump_mo_integrals:()
    +

    File : mo_two_e_ints/map_integrals.irp.f

    +
    subroutine dump_mo_integrals(filename)
    +
    +
    +

    Save to disk the MO integrals

    +

    Needs:

    +
    + +
      +
    +
    +

    Calls:

    +
      +
    • ezfio_set_work_empty()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +get_mo_map_size:()
    +

    File : mo_two_e_ints/map_integrals.irp.f

    +
    integer*8 function get_mo_map_size()
    +
    +
    +

    Return the number of elements in the MO map

    +

    Needs:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +get_mo_two_e_integrals:()
    +

    File : mo_two_e_ints/map_integrals.irp.f

    +
    subroutine get_mo_two_e_integrals(j,k,l,sze,out_val,map)
    +
    +
    +

    Returns multiple integrals <ij|kl> in the MO basis, all +i for j,k,l fixed.

    +

    Needs:

    +
    + + +
    +

    Called by:

    +
      +
    • get_d0()
    • +
    +
      +
    • get_d1()
    • +
    +
      +
    +
    +

    Calls:

    +
      +
    • map_get()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +get_mo_two_e_integrals_coulomb_ii:()
    +

    File : mo_two_e_ints/map_integrals.irp.f

    +
    subroutine get_mo_two_e_integrals_coulomb_ii(k,l,sze,out_val,map)
    +
    +
    +

    Returns multiple integrals <ki|li> +k(1)i(2) 1/r12 l(1)i(2) :: out_val(i1) +for k,l fixed.

    +

    Needs:

    +
    +
      +
    +
      +
    +
    +

    Called by:

    +
    + +
      +
    +
    +

    Calls:

    +
      +
    • map_get_many()
    • +
    +
      +
    • two_e_integrals_index()
    • +
    +
      +
    +
    +
    + +
    +
    +get_mo_two_e_integrals_exch_ii:()
    +

    File : mo_two_e_ints/map_integrals.irp.f

    +
    subroutine get_mo_two_e_integrals_exch_ii(k,l,sze,out_val,map)
    +
    +
    +

    Returns multiple integrals <ki|il> +k(1)i(2) 1/r12 i(1)l(2) :: out_val(i1) +for k,l fixed.

    +

    Needs:

    +
    +
      +
    +
      +
    +
    +

    Called by:

    +
    + +
      +
    +
    +

    Calls:

    +
      +
    • map_get_many()
    • +
    +
      +
    • two_e_integrals_index()
    • +
    +
      +
    +
    +
    + +
    +
    +get_mo_two_e_integrals_i1j1:()
    +

    File : mo_two_e_ints/map_integrals.irp.f

    +
    subroutine get_mo_two_e_integrals_i1j1(k,l,sze,out_array,map)
    +
    +
    +

    Returns multiple integrals <ik|jl> in the MO basis, all +i(1)j(1) 1/r12 k(2)l(2) +i, j for k,l fixed.

    +

    Needs:

    +
    + +
      +
    +
    +

    Calls:

    +
      +
    • i2radix_sort()
    • +
    • i8radix_sort()
    • +
    +
      +
    • iradix_sort()
    • +
    • map_get_many()
    • +
    +
      +
    • two_e_integrals_index()
    • +
    +
    +
    + +
    +
    +get_mo_two_e_integrals_ij:()
    +

    File : mo_two_e_ints/map_integrals.irp.f

    +
    subroutine get_mo_two_e_integrals_ij(k,l,sze,out_array,map)
    +
    +
    +

    Returns multiple integrals <ij|kl> in the MO basis, all +i(1)j(2) 1/r12 k(1)l(2) +i, j for k,l fixed.

    +

    Needs:

    +
    + +
      +
    +
    +

    Calls:

    +
      +
    • i2radix_sort()
    • +
    • i8radix_sort()
    • +
    +
      +
    • iradix_sort()
    • +
    • map_get_many()
    • +
    +
      +
    • two_e_integrals_index()
    • +
    +
    +
    + +
    +
    +get_two_e_integral:()
    +

    File : mo_two_e_ints/map_integrals.irp.f

    +
    double precision function get_two_e_integral(i,j,k,l,map)
    +
    +
    +

    Returns one integral <ij|kl> in the MO basis

    +

    Needs:

    +
    + + +
    +

    Calls:

    +
      +
    • map_get()
    • +
    +
      +
    • two_e_integrals_index()
    • +
    +
      +
    +
    +
    + +
    +
    +load_mo_integrals:()
    +

    File : mo_two_e_ints/map_integrals.irp.f

    +
    integer function load_mo_integrals(filename)
    +
    +
    +

    Read from disk the MO integrals

    +

    Needs:

    +
    +
      +
    +
      +
    +
    +

    Calls:

    +
      +
    • cache_map_reallocate()
    • +
    +
      +
    • map_deinit()
    • +
    +
      +
    • map_sort()
    • +
    +
    +
    + +
    +
    +mo_two_e_integral:()
    +

    File : mo_two_e_ints/map_integrals.irp.f

    +
    double precision function mo_two_e_integral(i,j,k,l)
    +
    +
    +

    Returns one integral <ij|kl> in the MO basis

    +

    Needs:

    +
    + + +
    +
    + +
    +
    +mo_two_e_integrals_index:()
    +

    File : mo_two_e_ints/mo_bi_integrals.irp.f

    +
    subroutine mo_two_e_integrals_index(i,j,k,l,i1)
    +
    +
    +

    Computes an unique index for i,j,k,l integrals

    +

    Called by:

    +
      +
    • add_integrals_to_map()
    • +
    • add_integrals_to_map_erf()
    • +
    +
      +
    • add_integrals_to_map_no_exit_34()
    • +
    +
      +
    • add_integrals_to_map_three_indices()
    • +
    +
    +
    + +
    +
    + + +
    + +
    + + +
    +
    + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/doc/modules/mpi.html b/doc/modules/mpi.html new file mode 100644 index 00000000..5508595a --- /dev/null +++ b/doc/modules/mpi.html @@ -0,0 +1,574 @@ + + + + + + + + + + + mpi — Quantum Package 2.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + +
    + + + + + +
    + +
    + + + + + + + + + + + + + + + + + +
    + + + + +
    +
    +
    +
    + +
    +

    mpi

    +

    Contains all the functions and providers for parallelization with MPI.

    +
    +

    Providers

    +
    +
    +mpi_initialized
    +

    File : mpi/mpi.irp.f

    +
    logical :: mpi_initialized
    +
    +
    +

    Always true. Initialized MPI

    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +mpi_master
    +

    File : mpi/mpi.irp.f

    +
    logical :: mpi_master
    +
    +
    +

    If true, rank is zero

    +

    Needs:

    +
    +
      +
    +
      +
    +
    +

    Needed by:

    +
      +
    • ao_cartesian
    • +
    • ao_coef
    • +
    • ao_expo
    • +
    • ao_integrals_threshold
    • +
    • ao_md5
    • +
    • ao_nucl
    • +
    • ao_num
    • +
    • ao_power
    • +
    • ao_prim_num
    • +
    • ao_two_e_integrals_in_map
    • +
    • cas_bitmask
    • +
    • ci_energy
    • +
    • correlation_energy_ratio_max
    • +
    • data_energy_proj
    • +
    • data_energy_var
    • +
    • data_one_e_dm_alpha_mo
    • +
    • data_one_e_dm_beta_mo
    • +
    • davidson_sze_max
    • +
    • disk_access_nuclear_repulsion
    • +
    • disk_based_davidson
    • +
    • distributed_davidson
    • +
    • do_direct_integrals
    • +
    • do_pseudo
    • +
    • do_pt2
    • +
    • elec_alpha_num
    • +
    • elec_beta_num
    • +
    • element_name
    • +
    • energy_iterations
    • +
    • frozen_orb_scf
    • +
    • generators_bitmask
    • +
    • generators_bitmask_restart
    • +
    • io_ao_integrals_e_n
    • +
    • io_ao_integrals_kinetic
    • +
    • io_ao_integrals_overlap
    • +
    • io_ao_integrals_pseudo
    • +
    • io_ao_one_e_integrals
    • +
    • io_ao_two_e_integrals
    • +
    • io_ao_two_e_integrals_erf
    • +
    • io_mo_integrals_e_n
    • +
    +
    + +
    +
    + +
    +
    +mpi_rank
    +

    File : mpi/mpi.irp.f

    +
    integer :: mpi_rank
    +integer :: mpi_size
    +
    +
    +

    Rank of MPI process and number of MPI processes

    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +mpi_size
    +

    File : mpi/mpi.irp.f

    +
    integer :: mpi_rank
    +integer :: mpi_size
    +
    +
    +

    Rank of MPI process and number of MPI processes

    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +

    Subroutines / functions

    +
    +
    +broadcast_chunks_double:()
    +

    File : mpi/mpi.irp.f_template_97

    +
    subroutine broadcast_chunks_double(A, LDA)
    +
    +
    +

    Broadcast with chunks of ~2GB

    +
    + +
    +
    +broadcast_chunks_integer:()
    +

    File : mpi/mpi.irp.f_template_97

    +
    subroutine broadcast_chunks_integer(A, LDA)
    +
    +
    +

    Broadcast with chunks of ~2GB

    +
    + +
    +
    +broadcast_chunks_integer8:()
    +

    File : mpi/mpi.irp.f_template_97

    +
    subroutine broadcast_chunks_integer8(A, LDA)
    +
    +
    +

    Broadcast with chunks of ~2GB

    +
    + +
    +
    +mpi_print:()
    +

    File : mpi/mpi.irp.f

    +
    subroutine mpi_print(string)
    +
    +
    +

    Print string to stdout if the MPI rank is zero.

    +

    Needs:

    +
    +
      +
    +
      +
    +
    +

    Called by:

    +
      +
    • run_slave_main()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    + + +
    + +
    + + +
    +
    + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/doc/modules/nuclei.html b/doc/modules/nuclei.html new file mode 100644 index 00000000..71c11f64 --- /dev/null +++ b/doc/modules/nuclei.html @@ -0,0 +1,965 @@ + + + + + + + + + + + nuclei — Quantum Package 2.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + +
    + + + + + +
    + +
    + + + + + + + + + + + + + + + + + +
    + + + + +
    +
    +
    +
    + +
    +

    nuclei

    +

    This module contains data relative to the nuclei (coordinates, charge, +nuclear repulsion energy, etc). +The coordinates are expressed in atomic units.

    +
    +

    EZFIO parameters

    +
    +
    +nucl_num
    +

    Number of nuclei

    +
    + +
    +
    +nucl_label
    +

    Nuclear labels

    +
    + +
    +
    +nucl_charge
    +

    Nuclear charges

    +
    + +
    +
    +nucl_coord
    +

    Nuclear coordinates in the format (:, {x,y,z})

    +
    + +
    +
    +disk_access_nuclear_repulsion
    +

    Read/Write Nuclear Repulsion from/to disk [ Write | Read | None ]

    +

    Default: None

    +
    + +
    +
    +nuclear_repulsion
    +

    Nuclear repulsion (Computed automaticaly or Read in the EZFIO)

    +
    + +
    +
    +

    Providers

    +
    +
    +center_of_mass
    +

    File : nuclei/nuclei.irp.f

    +
    double precision, allocatable   :: center_of_mass       (3)
    +
    +
    +

    Center of mass of the molecule

    +

    Needs:

    +
    + +
      +
    • nucl_num
    • +
    +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +element_mass
    +

    File : nuclei/nuclei.irp.f

    +
    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:

    +
    +
      +
    +
      +
    +
    +

    Needed by:

    +
    + +
      +
    +
    +
    + +
    +
    +element_name
    +

    File : nuclei/nuclei.irp.f

    +
    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:

    +
    +
      +
    +
      +
    +
    +

    Needed by:

    +
    + +
      +
    +
    +
    + +
    +
    +inertia_tensor
    +

    File : nuclei/inertia.irp.f

    +
    double precision, allocatable   :: inertia_tensor       (3,3)
    +
    +
    +

    Inertia tensor

    +

    Needs:

    +
    + +
      +
    • nucl_num
    • +
    +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +inertia_tensor_eigenvalues
    +

    File : nuclei/inertia.irp.f

    +
    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:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +inertia_tensor_eigenvectors
    +

    File : nuclei/inertia.irp.f

    +
    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:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +nucl_coord
    +

    File : nuclei/nuclei.irp.f

    +
    double precision, allocatable   :: nucl_coord   (nucl_num,3)
    +
    +
    +

    Nuclear coordinates in the format (:, {x,y,z})

    +

    Needs:

    +
    +
      +
    • nucl_charge
    • +
    • nucl_label
    • +
    +
    +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +nucl_coord_transp
    +

    File : nuclei/nuclei.irp.f

    +
    double precision, allocatable   :: nucl_coord_transp    (3,nucl_num)
    +
    +
    +

    Transposed array of nucl_coord

    +

    Needs:

    +
    +
      +
    • nucl_num
    • +
    +
      +
    +
    +
    + +
    +
    +nucl_dist
    +

    File : nuclei/nuclei.irp.f

    +
    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:

    +
    +
      +
    • nucl_num
    • +
    +
      +
    +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +nucl_dist_2
    +

    File : nuclei/nuclei.irp.f

    +
    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:

    +
    +
      +
    • nucl_num
    • +
    +
      +
    +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +nucl_dist_inv
    +

    File : nuclei/nuclei.irp.f

    +
    double precision, allocatable   :: nucl_dist_inv        (nucl_num,nucl_num)
    +
    +
    +

    Inverse of the distance between nucleus I and nucleus J

    +

    Needs:

    +
    +
      +
    • nucl_num
    • +
    +
      +
    +
    +
    + +
    +
    +nucl_dist_vec_x
    +

    File : nuclei/nuclei.irp.f

    +
    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:

    +
    +
      +
    • nucl_num
    • +
    +
      +
    +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +nucl_dist_vec_y
    +

    File : nuclei/nuclei.irp.f

    +
    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:

    +
    +
      +
    • nucl_num
    • +
    +
      +
    +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +nucl_dist_vec_z
    +

    File : nuclei/nuclei.irp.f

    +
    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:

    +
    +
      +
    • nucl_num
    • +
    +
      +
    +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +nuclear_repulsion
    +

    File : nuclei/nuclei.irp.f

    +
    double precision        :: nuclear_repulsion
    +
    +
    +

    Nuclear repulsion energy

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +slater_bragg_radii
    +

    File : nuclei/atomic_radii.irp.f

    +
    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:

    +
    + +
      +
    +
    +
    + +
    +
    +slater_bragg_radii_per_atom
    +

    File : nuclei/atomic_radii.irp.f

    +
    double precision, allocatable   :: slater_bragg_radii_per_atom  (nucl_num)
    +
    +
    +

    Needs:

    +
      +
    • nucl_charge
    • +
    +
      +
    • nucl_num
    • +
    +
    +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +slater_bragg_radii_per_atom_ua
    +

    File : nuclei/atomic_radii.irp.f

    +
    double precision, allocatable   :: slater_bragg_radii_per_atom_ua       (nucl_num)
    +
    +
    +

    Needs:

    +
      +
    • nucl_charge
    • +
    +
      +
    • nucl_num
    • +
    +
    +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +slater_bragg_radii_ua
    +

    File : nuclei/atomic_radii.irp.f

    +
    double precision, allocatable   :: slater_bragg_radii_ua        (100)
    +
    +
    +

    Needs:

    +
    +
      +
    +
      +
    +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +slater_bragg_type_inter_distance
    +

    File : nuclei/atomic_radii.irp.f

    +
    double precision, allocatable   :: slater_bragg_type_inter_distance     (nucl_num,nucl_num)
    +
    +
    +

    Needs:

    +
      +
    • nucl_num
    • +
    +
    +
      +
    +
    +
    + +
    +
    +slater_bragg_type_inter_distance_ua
    +

    File : nuclei/atomic_radii.irp.f

    +
    double precision, allocatable   :: slater_bragg_type_inter_distance_ua  (nucl_num,nucl_num)
    +
    +
    +

    Needs:

    +
      +
    • nucl_num
    • +
    +
    +
      +
    +
    +
    + +
    +
    + + +
    + +
    + + +
    +
    + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/doc/modules/perturbation.html b/doc/modules/perturbation.html new file mode 100644 index 00000000..4f66dc3d --- /dev/null +++ b/doc/modules/perturbation.html @@ -0,0 +1,1310 @@ + + + + + + + + + + + perturbation — Quantum Package 2.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + +
    + + + + + +
    + +
    + + + + + + + + + + + + + + + + + +
    + + + + +
    +
    +
    +
    + +
    +

    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:

    +
    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 \(\hat H\) matrix element of the perturber
    +
    Nint
    +
    Should be equal to N_int
    +
    Ndet
    +
    Number of determinants i in \(|\Psi \rangle\) on which we apply <det_pert | \(\hat H\) | i>
    +
    N_st
    +
    Number of states
    +
    +
    +

    EZFIO parameters

    +
    +
    +do_pt2
    +

    If True, compute the PT2 contribution

    +

    Default: True

    +
    + +
    +
    +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

    +
    + +
    +
    +pt2_relative_error
    +

    Stop stochastic PT2 when the relative error is smaller than PT2_relative_error

    +

    Default: 0.002

    +
    + +
    +
    +correlation_energy_ratio_max
    +

    The selection process stops at a fixed correlation ratio (useful for getting same accuracy between molecules).

    +

    Defined as \({E_{CI}-E_{HF}}/{E_{CI}+E_{PT2} - E_{HF}}\).

    +

    Default: 1.00

    +
    + +
    +
    +

    Providers

    +
    +
    +fill_h_apply_buffer_selection:()
    +
    +

    File : perturbation/selection.irp.f

    +
    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:

    +
    + + +
    +

    Calls:

    +
      +
    • omp_set_lock()
    • +
    +
      +
    • omp_unset_lock()
    • +
    +
      +
    • resize_h_apply_buffer()
    • +
    +
    +
    +
    + +
    +
    +h0_type
    +

    File : perturbation/h0_type.irp.f

    +
    character*32    :: h0_type
    +
    +
    +

    Type of zeroth-order Hamiltonian

    +

    Needs:

    +
      +
    • s2_eig
    • +
    +
      +
    +
      +
    +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +max_exc_pert
    +

    File : perturbation/exc_max.irp.f

    +
    integer :: max_exc_pert
    +
    +
    +
    + +
    +
    +selection_criterion
    +

    File : perturbation/selection.irp.f

    +
    double precision        :: selection_criterion
    +double precision        :: selection_criterion_min
    +double precision        :: selection_criterion_factor
    +
    +
    +

    Threshold to select determinants. Set by selection routines.

    +
    + +
    +
    +selection_criterion_factor
    +

    File : perturbation/selection.irp.f

    +
    double precision        :: selection_criterion
    +double precision        :: selection_criterion_min
    +double precision        :: selection_criterion_factor
    +
    +
    +

    Threshold to select determinants. Set by selection routines.

    +
    + +
    +
    +selection_criterion_min
    +

    File : perturbation/selection.irp.f

    +
    double precision        :: selection_criterion
    +double precision        :: selection_criterion_min
    +double precision        :: selection_criterion_factor
    +
    +
    +

    Threshold to select determinants. Set by selection routines.

    +
    + +
    +
    +var_pt2_ratio
    +

    File : perturbation/var_pt2_ratio_provider.irp.f

    +
    double precision        :: var_pt2_ratio
    +
    +
    +

    The selection process stops when the energy ratio variational/(variational+PT2) +is equal to var_pt2_ratio

    +

    Needs:

    +
      +
    • correlation_energy_ratio_max
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +

    Subroutines / functions

    +
    +
    +perturb_buffer_by_mono_dummy:()
    +

    File : perturbation/perturbation.irp.f_shell_13

    +
       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:

    +
    + + +
    +

    Calls:

    +
      +
    • create_minilist()
    • +
    +
      +
    • create_minilist_find_previous()
    • +
    +
      +
    • pt2_dummy()
    • +
    +
    +
    + +
    +
    +perturb_buffer_by_mono_epstein_nesbet:()
    +

    File : perturbation/perturbation.irp.f_shell_13

    +
       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:

    +
    + + +
    +

    Calls:

    +
      +
    • create_minilist()
    • +
    +
      +
    • create_minilist_find_previous()
    • +
    +
      +
    • pt2_epstein_nesbet()
    • +
    +
    +
    + +
    +
    +perturb_buffer_by_mono_epstein_nesbet_2x2:()
    +

    File : perturbation/perturbation.irp.f_shell_13

    +
       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:

    +
    + + +
    +

    Calls:

    +
      +
    • create_minilist()
    • +
    +
      +
    • create_minilist_find_previous()
    • +
    +
      +
    • pt2_epstein_nesbet_2x2()
    • +
    +
    +
    + +
    +
    +perturb_buffer_by_mono_epstein_nesbet_2x2_no_ci_diag:()
    +

    File : perturbation/perturbation.irp.f_shell_13

    +
       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:

    +
    + + +
    +

    Calls:

    +
      +
    • create_minilist()
    • +
    +
      +
    • create_minilist_find_previous()
    • +
    +
      +
    • pt2_epstein_nesbet_2x2_no_ci_diag()
    • +
    +
    +
    + +
    +
    +perturb_buffer_by_mono_moller_plesset:()
    +

    File : perturbation/perturbation.irp.f_shell_13

    +
       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:

    +
    + + +
    +

    Calls:

    +
      +
    • create_minilist()
    • +
    +
      +
    • create_minilist_find_previous()
    • +
    +
      +
    • pt2_moller_plesset()
    • +
    +
    +
    + +
    +
    +perturb_buffer_by_mono_qdpt:()
    +

    File : perturbation/perturbation.irp.f_shell_13

    +
       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:

    +
    + + +
    +

    Calls:

    +
      +
    • create_minilist()
    • +
    +
      +
    • create_minilist_find_previous()
    • +
    +
      +
    • pt2_qdpt()
    • +
    +
    +
    + +
    +
    +perturb_buffer_dummy:()
    +

    File : perturbation/perturbation.irp.f_shell_13

    +
       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:

    +
    + + +
    +

    Calls:

    +
      +
    • create_microlist()
    • +
    • create_minilist()
    • +
    +
      +
    • create_minilist_find_previous()
    • +
    • getmobiles()
    • +
    +
      +
    • pt2_dummy()
    • +
    +
    +
    + +
    +
    +perturb_buffer_epstein_nesbet:()
    +

    File : perturbation/perturbation.irp.f_shell_13

    +
       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:

    +
    + + +
    +

    Calls:

    +
      +
    • create_microlist()
    • +
    • create_minilist()
    • +
    +
      +
    • create_minilist_find_previous()
    • +
    • getmobiles()
    • +
    +
      +
    • pt2_epstein_nesbet()
    • +
    +
    +
    + +
    +
    +perturb_buffer_epstein_nesbet_2x2:()
    +

    File : perturbation/perturbation.irp.f_shell_13

    +
       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:

    +
    + + +
    +

    Calls:

    +
      +
    • create_microlist()
    • +
    • create_minilist()
    • +
    +
      +
    • create_minilist_find_previous()
    • +
    • getmobiles()
    • +
    +
      +
    • pt2_epstein_nesbet_2x2()
    • +
    +
    +
    + +
    +
    +perturb_buffer_epstein_nesbet_2x2_no_ci_diag:()
    +

    File : perturbation/perturbation.irp.f_shell_13

    +
       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:

    +
    + + +
    +

    Calls:

    +
      +
    • create_microlist()
    • +
    • create_minilist()
    • +
    +
      +
    • create_minilist_find_previous()
    • +
    • getmobiles()
    • +
    +
      +
    • pt2_epstein_nesbet_2x2_no_ci_diag()
    • +
    +
    +
    + +
    +
    +perturb_buffer_moller_plesset:()
    +

    File : perturbation/perturbation.irp.f_shell_13

    +
       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:

    +
    + + +
    +

    Calls:

    +
      +
    • create_microlist()
    • +
    • create_minilist()
    • +
    +
      +
    • create_minilist_find_previous()
    • +
    • getmobiles()
    • +
    +
      +
    • pt2_moller_plesset()
    • +
    +
    +
    + +
    +
    +perturb_buffer_qdpt:()
    +

    File : perturbation/perturbation.irp.f_shell_13

    +
       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:

    +
    + + +
    +

    Calls:

    +
      +
    • create_microlist()
    • +
    • create_minilist()
    • +
    +
      +
    • create_minilist_find_previous()
    • +
    • getmobiles()
    • +
    +
      +
    • pt2_qdpt()
    • +
    +
    +
    + +
    +
    +pt2_dummy:()
    +

    File : perturbation/pt2_equations.irp.f_template_305

    +
    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:

    +
    + + +
    +

    Called by:

    +
      +
    • perturb_buffer_by_mono_dummy()
    • +
    +
      +
    • perturb_buffer_dummy()
    • +
    +
      +
    +
    +

    Calls:

    +
      +
    • i_h_psi_minilist()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +pt2_epstein_nesbet:()
    +

    File : perturbation/pt2_equations.irp.f_template_305

    +
    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:

    +
    + + +
    +

    Called by:

    +
      +
    • perturb_buffer_by_mono_epstein_nesbet()
    • +
    +
      +
    • perturb_buffer_epstein_nesbet()
    • +
    +
      +
    +
    +

    Calls:

    +
      +
    • i_h_psi_minilist()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +pt2_epstein_nesbet_2x2:()
    +

    File : perturbation/pt2_equations.irp.f_template_305

    +
    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:

    +
    + + +
    +

    Called by:

    +
      +
    • perturb_buffer_by_mono_epstein_nesbet_2x2()
    • +
    +
      +
    • perturb_buffer_epstein_nesbet_2x2()
    • +
    +
      +
    +
    +

    Calls:

    +
      +
    • i_h_psi()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +pt2_epstein_nesbet_2x2_no_ci_diag:()
    +

    File : perturbation/pt2_equations.irp.f_template_305

    +
    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:

    +
    + + +
    +

    Called by:

    +
      +
    • perturb_buffer_by_mono_epstein_nesbet_2x2_no_ci_diag()
    • +
    +
      +
    • perturb_buffer_epstein_nesbet_2x2_no_ci_diag()
    • +
    +
      +
    +
    +

    Calls:

    +
      +
    • i_h_psi()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +pt2_moller_plesset:()
    +

    File : perturbation/pt2_equations.irp.f_template_305

    +
    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:

    +
    + + +
    +

    Called by:

    +
      +
    • perturb_buffer_by_mono_moller_plesset()
    • +
    +
      +
    • perturb_buffer_moller_plesset()
    • +
    +
      +
    +
    +

    Calls:

    +
      +
    • decode_exc()
    • +
    +
      +
    • get_excitation()
    • +
    +
      +
    • i_h_psi_minilist()
    • +
    +
    +
    + +
    +
    +pt2_qdpt:()
    +

    File : perturbation/pt2_equations.irp.f_template_305

    +
    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:

    +
    + + +
    +

    Called by:

    +
      +
    • perturb_buffer_by_mono_qdpt()
    • +
    +
      +
    • perturb_buffer_qdpt()
    • +
    +
      +
    +
    +

    Calls:

    +
      +
    • get_excitation_degree()
    • +
    +
      +
    • i_h_j()
    • +
    +
      +
    • i_h_psi_minilist()
    • +
    +
    +
    + +
    +
    +remove_small_contributions:()
    +

    File : perturbation/selection.irp.f

    +
    subroutine remove_small_contributions
    +
    +
    +

    Remove determinants with small contributions. N_states is assumed to be +provided.

    +

    Needs:

    +
    + + +
    +

    Calls:

    +
      +
    • diagonalize_ci()
    • +
    +
      +
    • i_h_psi()
    • +
    +
      +
    • write_int()
    • +
    +
    +

    Touches:

    +
    + + +
    +
    + +
    +
    + + +
    + +
    + + +
    +
    + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/doc/modules/pseudo.html b/doc/modules/pseudo.html new file mode 100644 index 00000000..1767ffe7 --- /dev/null +++ b/doc/modules/pseudo.html @@ -0,0 +1,402 @@ + + + + + + + + + + + pseudo — Quantum Package 2.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + +
    + + + + + +
    + +
    + + + + + + + + + + + + + + + + + +
    + + + + +
    +
    +
    +
    + +
    +

    pseudo

    +

    This module defines the EZFIO parameters of the effective core potentials.

    +
    +

    EZFIO parameters

    +
    +
    +nucl_charge_remove
    +

    Nuclear charges removed per atom

    +
    + +
    +
    +pseudo_klocmax
    +

    Maximum value of k for the local component

    +
    + +
    +
    +pseudo_n_k
    +

    Number of gaussians in the local component

    +
    + +
    +
    +pseudo_v_k
    +

    Coefficients in the local component

    +
    + +
    +
    +pseudo_dz_k
    +

    Exponents in the local component

    +
    + +
    +
    +pseudo_lmax
    +

    Maximum angular momentum

    +
    + +
    +
    +pseudo_kmax
    +

    Maximum number of functions in the non-local component

    +
    + +
    +
    +pseudo_n_kl
    +

    Number of functions in the non-local component

    +
    + +
    +
    +pseudo_v_kl
    +

    Coefficients in the non-local component

    +
    + +
    +
    +pseudo_dz_kl
    +

    Exponents in the non-local component

    +
    + +
    +
    +do_pseudo
    +

    If True, pseudo-potentials are used.

    +

    Default: False

    +
    + +
    +
    +pseudo_grid_size
    +

    Nb of points of the grid for the QMC interfaces

    +

    Default: 1000

    +
    + +
    +
    +pseudo_grid_rmax
    +

    R_max of the QMC grid

    +

    Default: 10.0

    +
    + +
    +
    +ao_pseudo_grid
    +

    Grid for the QMC interface

    +
    + +
    +
    +mo_pseudo_grid
    +

    Grid for the QMC interface

    +
    + +
    +
    + + +
    + +
    + + +
    +
    + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/doc/modules/psiref_cas.html b/doc/modules/psiref_cas.html new file mode 100644 index 00000000..23d6cfb2 --- /dev/null +++ b/doc/modules/psiref_cas.html @@ -0,0 +1,304 @@ + + + + + + + + + + + psiref_cas — Quantum Package 2.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + +
    + + + + + +
    + +
    + + + + + + + + + + + + + + + + + +
    + + + + +
    +
    +
    +
    + +
    +

    psiref_cas

    +

    Reference wave function is defined as a CAS wave function. +This module is required for CAS-SD, MRPT or MRCC.

    +
    + + +
    + +
    + + +
    +
    + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/doc/modules/psiref_utils.html b/doc/modules/psiref_utils.html new file mode 100644 index 00000000..f40b6f41 --- /dev/null +++ b/doc/modules/psiref_utils.html @@ -0,0 +1,304 @@ + + + + + + + + + + + psiref_utils — Quantum Package 2.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + +
    + + + + + +
    + +
    + + + + + + + + + + + + + + + + + +
    + + + + +
    +
    +
    +
    + +
    +

    psiref_utils

    +

    Utilities related to the use of a reference wave function. This module +needs to be loaded with any psi_ref_* module.

    +
    + + +
    + +
    + + +
    +
    + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/doc/modules/scf_utils.html b/doc/modules/scf_utils.html new file mode 100644 index 00000000..401025e2 --- /dev/null +++ b/doc/modules/scf_utils.html @@ -0,0 +1,1095 @@ + + + + + + + + + + + scf_utils — Quantum Package 2.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + +
    + + + + + +
    + +
    + + + + + + + + + + + + + + + + + +
    + + + + +
    +
    +
    +
    + +
    +

    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 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 hartree_fock fock_matrix_hf.irp.f for an example).

    +

    All SCF programs perform the following actions:

    +
      +
    1. Compute/Read all the one- and two-electron integrals, and store them in memory
    2. +
    3. 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.
    4. +
    5. Perform the SCF iterations based on the definition of the Fock matrix
    6. +
    +

    The main keywords/options are:

    + +

    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 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.

    +
    +

    EZFIO parameters

    +
    +
    +max_dim_diis
    +

    Maximum size of the DIIS extrapolation procedure

    +

    Default: 15

    +
    + +
    +
    +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.

    +
    + +
    +
    +thresh_scf
    +

    Threshold on the convergence of the Hartree Fock energy.

    +

    Default: 1.e-10

    +
    + +
    +
    +n_it_scf_max
    +

    Maximum number of SCF iterations

    +

    Default: 500

    +
    + +
    +
    +level_shift
    +

    Energy shift on the virtual MOs to improve SCF convergence

    +

    Default: 0.

    +
    + +
    +
    +scf_algorithm
    +

    Type of SCF algorithm used. Possible choices are [ Simple | DIIS]

    +

    Default: DIIS

    +
    + +
    +
    +mo_guess_type
    +

    Initial MO guess. Can be [ Huckel | HCore ]

    +

    Default: Huckel

    +
    + +
    +
    +energy
    +

    Calculated HF energy

    +
    + +
    +
    +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

    +
    +
    +eigenvalues_fock_matrix_ao
    +

    File : scf_utils/diis.irp.f

    +
    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:

    +
      +
    • ao_num
    • +
    +
    + +
    +
    + +
    +
    +eigenvectors_fock_matrix_ao
    +

    File : scf_utils/diis.irp.f

    +
    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:

    +
      +
    • ao_num
    • +
    +
    + +
    +
    + +
    +
    +eigenvectors_fock_matrix_mo
    +

    File : scf_utils/diagonalize_fock.irp.f

    +
    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:

    +
    + + +
    +
    + +
    +
    +extrapolate_fock_matrix:()
    +
    +

    File : scf_utils/roothaan_hall_scf.irp.f

    +
    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:

    +
      +
    • max_dim_diis
    • +
    +
      +
    • ao_num
    • +
    +
      +
    +
    +

    Called by:

    +
      +
    • roothaan_hall_scf()
    • +
    +
      +
    +
      +
    +
    +

    Calls:

    +
      +
    • dgemm()
    • +
    +
      +
    • dsysvx()
    • +
    +
      +
    +
    +
    +
    +
    +fock_matrix_ao
    +

    File : scf_utils/fock_matrix.irp.f

    +
    double precision, allocatable   :: fock_matrix_ao       (ao_num,ao_num)
    +
    +
    +

    Fock matrix in AO basis set

    +

    Needs:

    +
      +
    • ao_num
    • +
    • elec_alpha_num
    • +
    • elec_beta_num
    • +
    +
    + +
    +

    Needed by:

    +
    + +
      +
    +
    +
    + +
    +
    +fock_matrix_diag_mo
    +

    File : scf_utils/fock_matrix.irp.f

    +
    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:

    +
    + + +
    +

    Needed by:

    +
    + +
      +
    +
    +
    + +
    +
    +fock_matrix_mo
    +

    File : scf_utils/fock_matrix.irp.f

    +
    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:

    +
    + + +
    +

    Needed by:

    +
    + +
      +
    +
    +
    + +
    +
    +fock_matrix_mo_alpha
    +

    File : scf_utils/fock_matrix.irp.f

    +
    double precision, allocatable   :: fock_matrix_mo_alpha (mo_num,mo_num)
    +
    +
    +

    Fock matrix on the MO basis

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +fock_matrix_mo_beta
    +

    File : scf_utils/fock_matrix.irp.f

    +
    double precision, allocatable   :: fock_matrix_mo_beta  (mo_num,mo_num)
    +
    +
    +

    Fock matrix on the MO basis

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +fps_spf_matrix_ao
    +

    File : scf_utils/diis.irp.f

    +
    double precision, allocatable   :: fps_spf_matrix_ao    (AO_num,AO_num)
    +
    +
    +

    Commutator FPS - SPF

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +fps_spf_matrix_mo
    +

    File : scf_utils/diis.irp.f

    +
    double precision, allocatable   :: fps_spf_matrix_mo    (mo_num,mo_num)
    +
    +
    +

    Commutator FPS - SPF in MO basis

    +

    Needs:

    +
    + + +
    +
    + +
    +
    +scf_density_matrix_ao
    +

    File : scf_utils/scf_density_matrix_ao.irp.f

    +
    double precision, allocatable   :: scf_density_matrix_ao        (ao_num,ao_num)
    +
    +
    +

    S^{-1}.P.S^{-1} where P = C.C^t

    +

    Needs:

    +
      +
    • ao_num
    • +
    • elec_alpha_num
    • +
    +
    + +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +scf_density_matrix_ao_alpha
    +

    File : scf_utils/scf_density_matrix_ao.irp.f

    +
    double precision, allocatable   :: scf_density_matrix_ao_alpha  (ao_num,ao_num)
    +
    +
    +

    S^{-1}.P_alpha.S^{-1}

    +

    Needs:

    +
      +
    • ao_num
    • +
    +
      +
    • elec_alpha_num
    • +
    +
    +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +scf_density_matrix_ao_beta
    +

    File : scf_utils/scf_density_matrix_ao.irp.f

    +
    double precision, allocatable   :: scf_density_matrix_ao_beta   (ao_num,ao_num)
    +
    +
    +

    S^{-1}.P_beta.S^{-1}

    +

    Needs:

    +
      +
    • ao_num
    • +
    +
      +
    • elec_beta_num
    • +
    +
    +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +scf_energy
    +

    File : scf_utils/fock_matrix.irp.f

    +
    double precision        :: scf_energy
    +
    +
    +

    Hartree-Fock energy

    +

    Needs:

    +
    + + +
    +
    + +
    +
    +threshold_diis_nonzero
    +

    File : scf_utils/diis.irp.f

    +
    double precision        :: threshold_diis_nonzero
    +
    +
    +

    If threshold_DIIS is zero, choose sqrt(thresh_scf)

    +

    Needs:

    +
      +
    • thresh_scf
    • +
    +
      +
    • threshold_diis
    • +
    +
      +
    +
    +
    + +
    +
    +

    Subroutines / functions

    +
    +
    +damping_scf:()
    +

    File : scf_utils/damping_scf.irp.f

    +
    subroutine damping_SCF
    +
    +
    +

    Needs:

    +
    + +
      +
    • mo_label
    • +
    • n_it_scf_max
    • +
    • thresh_scf
    • +
    • frozen_orb_scf
    • +
    +
    +

    Calls:

    +
      +
    • ezfio_set_hartree_fock_energy()
    • +
    • initialize_mo_coef_begin_iteration()
    • +
    • mo_as_eigvectors_of_mo_matrix()
    • +
    +
      +
    • reorder_core_orb()
    • +
    • save_mos()
    • +
    +
      +
    • write_double()
    • +
    • write_time()
    • +
    +
    +

    Touches:

    +
    + + +
    +
    + +
    +
    +huckel_guess:()
    +

    File : scf_utils/huckel.irp.f

    +
    subroutine huckel_guess
    +
    +
    +

    Build the MOs using the extended Huckel model

    +

    Needs:

    +
    + + +
    +

    Called by:

    +
      +
    • create_guess()
    • +
    +
      +
    +
      +
    +
    +

    Calls:

    +
      +
    • save_mos()
    • +
    +
      +
    +
      +
    +
    +

    Touches:

    +
    + + +
    +
    + +
    +
    +roothaan_hall_scf:()
    +

    File : scf_utils/roothaan_hall_scf.irp.f

    +
    subroutine Roothaan_Hall_SCF
    +
    +
    +

    Roothaan-Hall algorithm for SCF Hartree-Fock calculation

    +

    Needs:

    +
    + + +
    +

    Called by:

    +
      +
    • run()
    • +
    +
      +
    +
      +
    +
    +

    Calls:

    +
      +
    • extrapolate_fock_matrix()
    • +
    • initialize_mo_coef_begin_iteration()
    • +
    • mo_as_eigvectors_of_mo_matrix()
    • +
    +
      +
    • reorder_core_orb()
    • +
    • save_mos()
    • +
    +
      +
    • write_double()
    • +
    • write_time()
    • +
    +
    +

    Touches:

    +
    + + +
    +
    + +
    +
    + + +
    + +
    + + +
    +
    + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/doc/modules/selectors_cassd.html b/doc/modules/selectors_cassd.html new file mode 100644 index 00000000..60b328df --- /dev/null +++ b/doc/modules/selectors_cassd.html @@ -0,0 +1,304 @@ + + + + + + + + + + + selectors_cassd — Quantum Package 2.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + +
    + + + + + +
    + +
    + + + + + + + + + + + + + + + + + +
    + + + + +
    +
    +
    +
    + +
    +

    selectors_cassd

    +

    Selectors for CAS-SD calculations. The selectors are defined as first the +generators from Generators_CAS, and then the rest of the wave function.

    +
    + + +
    + +
    + + +
    +
    + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/doc/modules/selectors_full.html b/doc/modules/selectors_full.html new file mode 100644 index 00000000..3783cfe1 --- /dev/null +++ b/doc/modules/selectors_full.html @@ -0,0 +1,450 @@ + + + + + + + + + + + selectors_full — Quantum Package 2.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + +
    + + + + + +
    + +
    + + + + + + + + + + + + + + + + + +
    + + + + +
    +
    +
    +
    + +
    +

    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 determinants +threshold_selectors flag.

    +
    +

    Providers

    +
    +
    +n_det_selectors
    +

    File : selectors_full/selectors.irp.f

    +
    integer :: n_det_selectors
    +
    +
    +

    For Single reference wave functions, the number of selectors is 1 : the +Hartree-Fock determinant

    +

    Needs:

    +
    + + +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +psi_selectors
    +

    File : selectors_full/selectors.irp.f

    +
    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:

    +
    + + +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +psi_selectors_coef
    +

    File : selectors_full/selectors.irp.f

    +
    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:

    +
    + + +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +threshold_selectors
    +

    File : selectors_full/selectors.irp.f

    +
    double precision        :: threshold_selectors
    +
    +
    +

    Thresholds on selectors (fraction of the square of the norm)

    +

    Needs:

    +
      +
    • threshold_generators
    • +
    +
      +
    +
      +
    +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    + + +
    + +
    + + +
    +
    + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/doc/modules/selectors_utils.html b/doc/modules/selectors_utils.html new file mode 100644 index 00000000..af974804 --- /dev/null +++ b/doc/modules/selectors_utils.html @@ -0,0 +1,891 @@ + + + + + + + + + + + selectors_utils — Quantum Package 2.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + +
    + + + + + +
    + +
    + + + + + + + + + + + + + + + + + +
    + + + + +
    +
    +
    +
    + +
    +

    selectors_utils

    +

    Helper functions for selectors.

    +
    +

    Providers

    +
    +
    +coef_hf_selector
    +

    File : selectors_utils/e_corr_selectors.irp.f

    +
    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) = \(\langle D_i | H | \text{HF}\rangle c(D_i)/c(HF)\) if \(| 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:

    +
    + + +
    +
    + +
    +
    +delta_e_per_selector
    +

    File : selectors_utils/e_corr_selectors.irp.f

    +
    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) = \(\langle D_i | H | \text{HF}\rangle c(D_i)/c(HF)\) if \(| 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:

    +
    + + +
    +
    + +
    +
    +double_index_selectors
    +

    File : selectors_utils/e_corr_selectors.irp.f

    +
    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:

    +
    + + +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +e_corr_double_only
    +

    File : selectors_utils/e_corr_selectors.irp.f

    +
    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) = \(\langle D_i | H | \text{HF}\rangle c(D_i)/c(HF)\) if \(| 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:

    +
    + + +
    +
    + +
    +
    +e_corr_per_selectors
    +

    File : selectors_utils/e_corr_selectors.irp.f

    +
    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) = \(\langle D_i | H | \text{HF}\rangle c(D_i)/c(HF)\) if \(| 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:

    +
    + + +
    +
    + +
    +
    +e_corr_second_order
    +

    File : selectors_utils/e_corr_selectors.irp.f

    +
    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) = \(\langle D_i | H | \text{HF}\rangle c(D_i)/c(HF)\) if \(| 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:

    +
    + + +
    +
    + +
    +
    +exc_degree_per_selectors
    +

    File : selectors_utils/e_corr_selectors.irp.f

    +
    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:

    +
    + + +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +i_h_hf_per_selectors
    +

    File : selectors_utils/e_corr_selectors.irp.f

    +
    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) = \(\langle D_i | H | \text{HF}\rangle c(D_i)/c(HF)\) if \(| 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:

    +
    + + +
    +
    + +
    +
    +inv_selectors_coef_hf
    +

    File : selectors_utils/e_corr_selectors.irp.f

    +
    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) = \(\langle D_i | H | \text{HF}\rangle c(D_i)/c(HF)\) if \(| 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:

    +
    + + +
    +
    + +
    +
    +inv_selectors_coef_hf_squared
    +

    File : selectors_utils/e_corr_selectors.irp.f

    +
    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) = \(\langle D_i | H | \text{HF}\rangle c(D_i)/c(HF)\) if \(| 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:

    +
    + + +
    +
    + +
    +
    +n_double_selectors
    +

    File : selectors_utils/e_corr_selectors.irp.f

    +
    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:

    +
    + + +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +psi_selectors_coef_transp
    +

    File : selectors_utils/selectors.irp.f

    +
    double precision, allocatable   :: psi_selectors_coef_transp    (N_states,psi_selectors_size)
    +
    +
    +

    Transposed psi_selectors

    +

    Needs:

    +
    + + +
    +
    + +
    +
    +psi_selectors_diag_h_mat
    +

    File : selectors_utils/selectors.irp.f

    +
    double precision, allocatable   :: psi_selectors_diag_h_mat     (psi_selectors_size)
    +
    +
    +

    Diagonal elements of the H matrix for each selectors

    +

    Needs:

    +
    + + +
    +
    + +
    +
    +psi_selectors_size
    +

    File : selectors_utils/selectors.irp.f

    +
    integer :: psi_selectors_size
    +
    +
    +

    Needs:

    +
    +
      +
    +
      +
    +
    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +

    Subroutines / functions

    +
    +
    +zmq_get_n_det_generators:()
    +

    File : selectors_utils/zmq.irp.f_template_102

    +
    integer function zmq_get_N_det_generators(zmq_to_qp_run_socket, worker_id)
    +
    +
    +

    Get N_det_generators from the qp_run scheduler

    +

    Needs:

    +
    + + +
    +
    + +
    +
    +zmq_get_n_det_selectors:()
    +

    File : selectors_utils/zmq.irp.f_template_102

    +
    integer function zmq_get_N_det_selectors(zmq_to_qp_run_socket, worker_id)
    +
    +
    +

    Get N_det_selectors from the qp_run scheduler

    +

    Needs:

    +
    + + +
    +
    + +
    +
    +zmq_put_n_det_generators:()
    +

    File : selectors_utils/zmq.irp.f_template_102

    +
    integer function zmq_put_N_det_generators(zmq_to_qp_run_socket,worker_id)
    +
    +
    +

    Put N_det_generators on the qp_run scheduler

    +

    Needs:

    +
    + +
      +
    +
    +
    + +
    +
    +zmq_put_n_det_selectors:()
    +

    File : selectors_utils/zmq.irp.f_template_102

    +
    integer function zmq_put_N_det_selectors(zmq_to_qp_run_socket,worker_id)
    +
    +
    +

    Put N_det_selectors on the qp_run scheduler

    +

    Needs:

    +
    + +
      +
    +
    +
    + +
    +
    + + +
    + +
    + + +
    +
    + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/doc/modules/single_ref_method.html b/doc/modules/single_ref_method.html new file mode 100644 index 00000000..5e42caa8 --- /dev/null +++ b/doc/modules/single_ref_method.html @@ -0,0 +1,304 @@ + + + + + + + + + + + single_ref_method — Quantum Package 2.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + +
    + + + + + +
    + +
    + + + + + + + + + + + + + + + + + +
    + + + + +
    +
    +
    +
    + +
    +

    single_ref_method

    +

    Include this module for single reference methods. +Using this module, the only generator determinant is the Hartree-Fock determinant.

    +
    + + +
    + +
    + + +
    +
    + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/doc/modules/tools.html b/doc/modules/tools.html new file mode 100644 index 00000000..25d6334f --- /dev/null +++ b/doc/modules/tools.html @@ -0,0 +1,552 @@ + + + + + + + + + + + tools — Quantum Package 2.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + +
    + + + + + +
    + +
    + + + + + + + + + + + + + + + + + +
    + + + + +
    +
    +
    +
    + +
    +

    tools

    +

    Useful tools are grouped in this module.

    + +
    +

    Subroutines / functions

    +
    +
    +routine:()
    +

    File : write_integrals_erf.irp.f

    +
    subroutine routine
    +
    +
    +

    Called by:

    +
      +
    • diagonalize_h()
    • +
    +
      +
    • print_wf()
    • +
    +
      +
    • write_integrals_erf()
    • +
    +
    +

    Calls:

    +
      +
    • save_erf_two_e_integrals_ao()
    • +
    +
      +
    • save_erf_two_e_integrals_mo()
    • +
    +
      +
    +
    +
    + +
    +
    +routine_e_conv:()
    +

    File : print_e_conv.irp.f

    +
    subroutine routine_e_conv
    +
    +
    +

    routine called by print_e_conv()

    +

    Needs:

    +
      +
    • n_states
    • +
    +
    +
      +
    +
    +

    Called by:

    +
      +
    • print_e_conv()
    • +
    +
      +
    +
      +
    +
    +

    Calls:

    +
      +
    • ezfio_get_iterations_energy_iterations()
    • +
    • ezfio_get_iterations_n_det_iterations()
    • +
    +
      +
    • ezfio_get_iterations_n_iter()
    • +
    +
      +
    • ezfio_get_iterations_pt2_iterations()
    • +
    +
    +
    + +
    +
    +routine_save_one_e_dm:()
    +

    File : save_one_e_dm.irp.f

    +
    subroutine routine_save_one_e_dm
    +
    +
    +

    routine called by save_one_e_dm()

    +

    Needs:

    +
    +
      +
    +
      +
    +
    +

    Called by:

    +
      +
    • save_one_e_dm()
    • +
    +
      +
    +
      +
    +
    +

    Calls:

    +
      +
    • ezfio_set_aux_quantities_data_one_e_dm_alpha_mo()
    • +
    +
      +
    • ezfio_set_aux_quantities_data_one_e_dm_beta_mo()
    • +
    +
      +
    +
    +
    + +
    +
    +write_ao_basis:()
    +

    File : molden.irp.f

    +
    subroutine write_Ao_basis(i_unit_output)
    +
    +
    +

    Needs:

    +
    +
      +
    • ao_prim_num
    • +
    • nucl_charge
    • +
    • ao_l
    • +
    +
    +
    +

    Called by:

    +
      +
    • molden()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +write_geometry:()
    +

    File : molden.irp.f

    +
    subroutine write_geometry(i_unit_output)
    +
    +
    +

    Needs:

    +
    + +
      +
    • nucl_num
    • +
    +
    +

    Called by:

    +
      +
    • molden()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +write_intro_gamess:()
    +

    File : molden.irp.f

    +
    subroutine write_intro_gamess(i_unit_output)
    +
    +
    +

    Called by:

    +
      +
    • molden()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +write_mo_basis:()
    +

    File : molden.irp.f

    +
    subroutine write_Mo_basis(i_unit_output)
    +
    +
    +

    Needs:

    +
    + + +
    +

    Called by:

    +
      +
    • molden()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    + + +
    + +
    + + +
    +
    + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/doc/modules/utils.html b/doc/modules/utils.html new file mode 100644 index 00000000..d13722d1 --- /dev/null +++ b/doc/modules/utils.html @@ -0,0 +1,3138 @@ + + + + + + + + + + + utils — Quantum Package 2.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + +
    + + + + + +
    + +
    + + + + + + + + + + + + + + + + + +
    + + + + +
    +
    +
    +
    + +
    +

    utils

    +

    Contains general purpose utilities (sorting, maps, etc).

    +
    +

    Providers

    +
    +
    +binom
    +

    File : utils/util.irp.f

    +
    double precision, allocatable   :: binom        (0:40,0:40)
    +double precision, allocatable   :: binom_transp (0:40,0:40)
    +
    +
    +

    Binomial coefficients

    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +binom_int
    +

    File : utils/util.irp.f

    +
    integer*8, allocatable  :: binom_int    (0:40,0:40)
    +integer*8, allocatable  :: binom_int_transp     (0:40,0:40)
    +
    +
    +

    Binomial coefficients, as integers*8

    +

    Needs:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +binom_int_transp
    +

    File : utils/util.irp.f

    +
    integer*8, allocatable  :: binom_int    (0:40,0:40)
    +integer*8, allocatable  :: binom_int_transp     (0:40,0:40)
    +
    +
    +

    Binomial coefficients, as integers*8

    +

    Needs:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +binom_transp
    +

    File : utils/util.irp.f

    +
    double precision, allocatable   :: binom        (0:40,0:40)
    +double precision, allocatable   :: binom_transp (0:40,0:40)
    +
    +
    +

    Binomial coefficients

    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +degree_max_integration_lebedev
    +

    File : utils/angular_integration.irp.f

    +
    integer :: degree_max_integration_lebedev
    +
    +
    +

    integrate correctly a polynom of order “degree_max_integration_lebedev” +needed for the angular integration according to LEBEDEV formulae

    +

    Needed by:

    +
    + +
      +
    +
    +
    + +
    +
    +dtranspose:()
    +

    File : utils/transpose.irp.f

    +
    recursive subroutine dtranspose(A,LDA,B,LDB,d1,d2)
    +
    +
    +

    Transpose input matrix A into output matrix B

    +

    Called by:

    +
      +
    • dtranspose()
    • +
    • h_s2_u_0_nstates_openmp()
    • +
    +
      +
    • h_s2_u_0_nstates_zmq()
    • +
    +
      +
    • h_s2_u_0_two_e_nstates_openmp()
    • +
    +
    +

    Calls:

    +
      +
    • dtranspose()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +fact_inv
    +

    File : utils/util.irp.f

    +
    double precision, allocatable   :: fact_inv     (128)
    +
    +
    +

    1/n!

    +
    + +
    +
    +i2radix_sort:()
    +

    File : utils/sort.irp.f_template_644

    +
    recursive subroutine i2radix_sort(x,iorder,isize,iradix)
    +
    +
    +

    Sort integer array x(isize) using the radix sort algorithm. +iorder in input should be (1,2,3,…,isize), and in output +contains the new order of the elements. +iradix should be -1 in input.

    +

    Called by:

    +
      +
    • get_mo_two_e_integrals_erf_i1j1()
    • +
    • get_mo_two_e_integrals_erf_ij()
    • +
    +
      +
    • get_mo_two_e_integrals_i1j1()
    • +
    • get_mo_two_e_integrals_ij()
    • +
    +
      +
    • i2radix_sort()
    • +
    +
    +

    Calls:

    +
      +
    • i2radix_sort()
    • +
    +
      +
    • insertion_i2sort()
    • +
    +
      +
    +
    +
    + +
    +
    +i8radix_sort:()
    +

    File : utils/sort.irp.f_template_644

    +
    recursive subroutine i8radix_sort(x,iorder,isize,iradix)
    +
    +
    +

    Sort integer array x(isize) using the radix sort algorithm. +iorder in input should be (1,2,3,…,isize), and in output +contains the new order of the elements. +iradix should be -1 in input.

    +

    Called by:

    +
      +
    • get_mo_two_e_integrals_erf_i1j1()
    • +
    • get_mo_two_e_integrals_erf_ij()
    • +
    +
      +
    • get_mo_two_e_integrals_i1j1()
    • +
    • get_mo_two_e_integrals_ij()
    • +
    +
    +
    +

    Calls:

    +
      +
    • i8radix_sort()
    • +
    +
      +
    • insertion_i8sort()
    • +
    +
      +
    +
    +
    + +
    +
    +i8radix_sort_big:()
    +

    File : utils/sort.irp.f_template_644

    +
    recursive subroutine i8radix_sort_big(x,iorder,isize,iradix)
    +
    +
    +

    Sort integer array x(isize) using the radix sort algorithm. +iorder in input should be (1,2,3,…,isize), and in output +contains the new order of the elements. +iradix should be -1 in input.

    +

    Called by:

    +
      +
    • i8radix_sort_big()
    • +
    +
      +
    +
      +
    +
    +

    Calls:

    +
      +
    • i8radix_sort_big()
    • +
    +
      +
    • insertion_i8sort_big()
    • +
    +
      +
    +
    +
    + +
    +
    +inv_int
    +

    File : utils/util.irp.f

    +
    double precision, allocatable   :: inv_int      (128)
    +
    +
    +

    1/i

    +
    + +
    +
    +iradix_sort:()
    +

    File : utils/sort.irp.f_template_644

    +
    recursive subroutine iradix_sort(x,iorder,isize,iradix)
    +
    +
    +

    Sort integer array x(isize) using the radix sort algorithm. +iorder in input should be (1,2,3,…,isize), and in output +contains the new order of the elements. +iradix should be -1 in input.

    +

    Called by:

    +
      +
    • get_mo_two_e_integrals_erf_i1j1()
    • +
    • get_mo_two_e_integrals_erf_ij()
    • +
    +
      +
    • get_mo_two_e_integrals_i1j1()
    • +
    • get_mo_two_e_integrals_ij()
    • +
    +
      +
    • iradix_sort()
    • +
    +
    +

    Calls:

    +
      +
    • insertion_isort()
    • +
    +
      +
    • iradix_sort()
    • +
    +
      +
    +
    +
    + +
    +
    +iradix_sort_big:()
    +

    File : utils/sort.irp.f_template_644

    +
    recursive subroutine iradix_sort_big(x,iorder,isize,iradix)
    +
    +
    +

    Sort integer array x(isize) using the radix sort algorithm. +iorder in input should be (1,2,3,…,isize), and in output +contains the new order of the elements. +iradix should be -1 in input.

    +

    Called by:

    +
      +
    • iradix_sort_big()
    • +
    +
      +
    +
      +
    +
    +

    Calls:

    +
      +
    • insertion_isort_big()
    • +
    +
      +
    • iradix_sort_big()
    • +
    +
      +
    +
    +
    + +
    +
    +n_points_integration_angular_lebedev
    +

    File : utils/angular_integration.irp.f

    +
    integer :: n_points_integration_angular_lebedev
    +
    +
    +

    Number of points needed for the angular integral

    +

    Needs:

    +
    +
      +
    +
      +
    +
    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +nproc
    +

    File : utils/util.irp.f

    +
    integer :: nproc
    +
    +
    +

    Number of current OpenMP threads

    +

    Needed by:

    +
    + + +
    +
    + +
    +
    +overlap_gaussian_xyz:()
    +

    File : utils/one_e_integration.irp.f

    +
      subroutine overlap_gaussian_xyz(A_center,B_center,alpha,beta,power_A,&
    +power_B,overlap_x,overlap_y,overlap_z,overlap,dim)
    +
    +
    +
    +\[\begin{split}S_x = \int (x-A_x)^{a_x} exp(-\alpha(x-A_x)^2) (x-B_x)^{b_x} exp(-beta(x-B_x)^2) dx \\ +S = S_x S_y S_z\end{split}\]
    +

    Called by:

    +
    + + +
    +

    Calls:

    +
      +
    • gaussian_product_x()
    • +
    +
      +
    • give_explicit_poly_and_gaussian()
    • +
    +
      +
    +
    +
    + +
    +
    +phi_angular_integration_lebedev
    +

    File : utils/angular_integration.irp.f

    +
    double precision, allocatable   :: theta_angular_integration_lebedev    (n_points_integration_angular_lebedev)
    +double precision, allocatable   :: phi_angular_integration_lebedev      (n_points_integration_angular_lebedev)
    +double precision, allocatable   :: weights_angular_integration_lebedev  (n_points_integration_angular_lebedev)
    +
    +
    +

    Theta phi values together with the weights values for the angular integration : +integral [dphi,dtheta] f(x,y,z) = 4 * pi * sum (1<i<n_points_integration_angular_lebedev) f(xi,yi,zi) +Note that theta and phi are in DEGREES !!

    +

    Needs:

    +
    + +
      +
    +
    +
    + +
    +
    +qp_max_mem
    +

    File : utils/memory.irp.f

    +
    integer :: qp_max_mem
    +
    +
    +

    Maximum memory in Gb

    +

    Needs:

    +
    +
      +
    +
      +
    +
    +

    Needed by:

    +
    + +
      +
    +
    +
    + +
    +
    +rec__quicksort:()
    +

    File : utils/sort.irp.f_template_261

    +
    recursive subroutine rec__quicksort(x, iorder, isize, first, last, level)
    +
    +
    +

    Called by:

    +
      +
    • quick_sort()
    • +
    +
      +
    • rec__quicksort()
    • +
    +
      +
    +
    +

    Calls:

    +
      +
    • rec__quicksort()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +rec_d_quicksort:()
    +

    File : utils/sort.irp.f_template_261

    +
    recursive subroutine rec_d_quicksort(x, iorder, isize, first, last, level)
    +
    +
    +

    Called by:

    +
      +
    • quick_dsort()
    • +
    +
      +
    • rec_d_quicksort()
    • +
    +
      +
    +
    +

    Calls:

    +
      +
    • rec_d_quicksort()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +rec_i2_quicksort:()
    +

    File : utils/sort.irp.f_template_261

    +
    recursive subroutine rec_i2_quicksort(x, iorder, isize, first, last, level)
    +
    +
    +

    Called by:

    +
      +
    • quick_i2sort()
    • +
    +
      +
    • rec_i2_quicksort()
    • +
    +
      +
    +
    +

    Calls:

    +
      +
    • rec_i2_quicksort()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +rec_i8_quicksort:()
    +

    File : utils/sort.irp.f_template_261

    +
    recursive subroutine rec_i8_quicksort(x, iorder, isize, first, last, level)
    +
    +
    +

    Called by:

    +
      +
    • quick_i8sort()
    • +
    +
      +
    • rec_i8_quicksort()
    • +
    +
      +
    +
    +

    Calls:

    +
      +
    • rec_i8_quicksort()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +rec_i_quicksort:()
    +

    File : utils/sort.irp.f_template_261

    +
    recursive subroutine rec_i_quicksort(x, iorder, isize, first, last, level)
    +
    +
    +

    Called by:

    +
      +
    • quick_isort()
    • +
    +
      +
    • rec_i_quicksort()
    • +
    +
      +
    +
    +

    Calls:

    +
      +
    • rec_i_quicksort()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +theta_angular_integration_lebedev
    +

    File : utils/angular_integration.irp.f

    +
    double precision, allocatable   :: theta_angular_integration_lebedev    (n_points_integration_angular_lebedev)
    +double precision, allocatable   :: phi_angular_integration_lebedev      (n_points_integration_angular_lebedev)
    +double precision, allocatable   :: weights_angular_integration_lebedev  (n_points_integration_angular_lebedev)
    +
    +
    +

    Theta phi values together with the weights values for the angular integration : +integral [dphi,dtheta] f(x,y,z) = 4 * pi * sum (1<i<n_points_integration_angular_lebedev) f(xi,yi,zi) +Note that theta and phi are in DEGREES !!

    +

    Needs:

    +
    + +
      +
    +
    +
    + +
    +
    +transpose:()
    +

    File : utils/transpose.irp.f

    +
    recursive subroutine transpose(A,LDA,B,LDB,d1,d2)
    +
    +
    +

    Transpose input matrix A into output matrix B

    +

    Called by:

    +
      +
    • transpose()
    • +
    +
      +
    +
      +
    +
    +

    Calls:

    +
      +
    • transpose()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +weights_angular_integration_lebedev
    +

    File : utils/angular_integration.irp.f

    +
    double precision, allocatable   :: theta_angular_integration_lebedev    (n_points_integration_angular_lebedev)
    +double precision, allocatable   :: phi_angular_integration_lebedev      (n_points_integration_angular_lebedev)
    +double precision, allocatable   :: weights_angular_integration_lebedev  (n_points_integration_angular_lebedev)
    +
    +
    +

    Theta phi values together with the weights values for the angular integration : +integral [dphi,dtheta] f(x,y,z) = 4 * pi * sum (1<i<n_points_integration_angular_lebedev) f(xi,yi,zi) +Note that theta and phi are in DEGREES !!

    +

    Needs:

    +
    + +
      +
    +
    +
    + +
    +
    +

    Subroutines / functions

    +
    +
    +a_coef:()
    +

    File : utils/need.irp.f

    +
    double precision function a_coef(n)
    +
    +
    +
    + +
    +
    +add_poly:()
    +

    File : utils/integration.irp.f

    +
    subroutine add_poly(b,nb,c,nc,d,nd)
    +
    +
    +

    Add two polynomials +D(t) =! D(t) +( B(t)+C(t))

    +
    + +
    +
    +add_poly_multiply:()
    +

    File : utils/integration.irp.f

    +
    subroutine add_poly_multiply(b,nb,cst,d,nd)
    +
    +
    +

    Add a polynomial multiplied by a constant +D(t) =! D(t) +( cst * B(t))

    +

    Called by:

    +
      +
    • general_primitive_integral()
    • +
    +
      +
    • general_primitive_integral_erf()
    • +
    +
      +
    +
    +
    + +
    +
    +apply_rotation:()
    +

    File : utils/linear_algebra.irp.f

    +
    subroutine apply_rotation(A,LDA,R,LDR,B,LDB,m,n)
    +
    +
    +

    Apply the rotation found by find_rotation

    +

    Calls:

    +
      +
    • dgemm()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +approx_dble:()
    +

    File : utils/util.irp.f

    +
    double precision function approx_dble(a,n)
    +
    +
    +
    + +
    +
    +b_coef:()
    +

    File : utils/need.irp.f

    +
    double precision function b_coef(n,u)
    +
    +
    +
    + +
    +
    +binom_func:()
    +

    File : utils/util.irp.f

    +
    double precision function binom_func(i,j)
    +
    +
    +
    + +
    +
    +check_mem:()
    +

    File : utils/memory.irp.f

    +
    subroutine check_mem(rss_in,routine)
    +
    +
    +

    Checks if n gigabytes can be allocated. If not, exit the run.

    +

    Needs:

    +
    +
      +
    +
      +
    +
    +

    Called by:

    +
      +
    • create_selection_buffer()
    • +
    • davidson_diag_hjj_sjj()
    • +
    • make_selection_buffer_s2()
    • +
    • merge_selection_buffers()
    • +
    • pt2_collector()
    • +
    • pt2_j
    • +
    +
      +
    • pt2_w
    • +
    • remove_duplicates_in_selection_buffer()
    • +
    • run_cipsi()
    • +
    • run_pt2_slave()
    • +
    • run_stochastic_cipsi()
    • +
    +
      +
    • select_singles_and_doubles()
    • +
    • selection_collector()
    • +
    • sort_selection_buffer()
    • +
    • testteethbuilding()
    • +
    • zmq_pt2()
    • +
    +
    +

    Calls:

    +
      +
    • resident_memory()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +dble_fact:()
    +

    File : utils/util.irp.f

    +
    double precision function dble_fact(n)
    +
    +
    +
    + +
    +
    +dble_fact_even:()
    +

    File : utils/util.irp.f

    +
    double precision function dble_fact_even(n) result(fact2)
    +
    +
    +

    n!!

    +
    + +
    +
    +dble_fact_odd:()
    +

    File : utils/util.irp.f

    +
    double precision function dble_fact_odd(n) result(fact2)
    +
    +
    +

    n!!

    +
    + +
    +
    +dble_logfact:()
    +

    File : utils/util.irp.f

    +
    double precision function dble_logfact(n) result(logfact2)
    +
    +
    +

    n!!

    +
    + +
    +
    +ddfact2:()
    +

    File : utils/need.irp.f

    +
    double precision function ddfact2(n)
    +
    +
    +
    + +
    +
    +dset_order:()
    +

    File : utils/sort.irp.f_template_347

    +
    subroutine dset_order(x,iorder,isize)
    +
    +
    +

    array A has already been sorted, and iorder has contains the new order of +elements of A. This subroutine changes the order of x to match the new order of A.

    +

    Called by:

    +
    +
      +
    • h_s2_u_0_nstates_zmq()
    • +
    • h_s2_u_0_two_e_nstates_openmp()
    • +
    +
    +
    +
    + +
    +
    +dset_order_big:()
    +

    File : utils/sort.irp.f_template_412

    +
    subroutine dset_order_big(x,iorder,isize)
    +
    +
    +

    array A has already been sorted, and iorder has contains the new order of +elements of A. This subroutine changes the order of x to match the new order of A. +This is a version for very large arrays where the indices need +to be in integer*8 format

    +
    + +
    +
    +dsort:()
    +

    File : utils/sort.irp.f_template_293

    +
    subroutine dsort(x,iorder,isize)
    +
    +
    +

    Sort array x(isize). +iorder in input should be (1,2,3,…,isize), and in output +contains the new order of the elements.

    +

    Called by:

    +
    + +
      +
    • sort_selection_buffer()
    • +
    +
    +

    Calls:

    +
      +
    • insertion_dsort()
    • +
    +
      +
    • quick_dsort()
    • +
    +
      +
    +
    +
    + +
    +
    +erf0:()
    +

    File : utils/need.irp.f

    +
    double precision function erf0(x)
    +
    +
    +
    + +
    +
    +extrapolate_data:()
    +

    File : utils/extrapolation.irp.f

    +
    subroutine extrapolate_data(N_data, data, pt2, output)
    +
    +
    +

    Extrapolate the data to the FCI limit

    +

    Called by:

    +
    +
      +
    +
      +
    +
    +

    Calls:

    +
      +
    • get_pseudo_inverse()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +f_integral:()
    +

    File : utils/integration.irp.f

    +
    double precision function F_integral(n,p)
    +
    +
    +

    function that calculates the following integral +int_{-infty}^{+infty} x^n exp(-p x^2) dx

    +
    + +
    +
    +fact:()
    +

    File : utils/util.irp.f

    +
    double precision function fact(n)
    +
    +
    +

    n!

    +
    + +
    +
    +find_rotation:()
    +

    File : utils/linear_algebra.irp.f

    +
    subroutine find_rotation(A,LDA,B,m,C,n)
    +
    +
    +

    Find A.C = B

    +

    Calls:

    +
      +
    • dgemm()
    • +
    +
      +
    • get_pseudo_inverse()
    • +
    +
      +
    +
    +
    + +
    +
    +gammln:()
    +

    File : utils/need.irp.f

    +
    double precision function gammln(xx)
    +
    +
    +
    + +
    +
    +gammp:()
    +

    File : utils/need.irp.f

    +
    double precision function gammp(a,x)
    +
    +
    +

    Calls:

    +
      +
    • gcf()
    • +
    +
      +
    • gser()
    • +
    +
      +
    +
    +
    + +
    +
    +gaussian_product:()
    +

    File : utils/integration.irp.f

    +
    subroutine gaussian_product(a,xa,b,xb,k,p,xp)
    +
    +
    +

    Gaussian product in 1D. +e^{-a (x-x_A)^2} e^{-b (x-x_B)^2} = K_{ab}^x e^{-p (x-x_P)^2}

    +

    Called by:

    +
      +
    • give_explicit_poly_and_gaussian()
    • +
    +
      +
    • give_explicit_poly_and_gaussian_double()
    • +
    +
      +
    +
    +
    + +
    +
    +gaussian_product_x:()
    +

    File : utils/integration.irp.f

    +
    subroutine gaussian_product_x(a,xa,b,xb,k,p,xp)
    +
    +
    +

    Gaussian product in 1D. +e^{-a (x-x_A)^2} e^{-b (x-x_B)^2} = K_{ab}^x e^{-p (x-x_P)^2}

    +

    Called by:

    +
      +
    • overlap_gaussian_xyz()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +gcf:()
    +

    File : utils/need.irp.f

    +
    subroutine gcf(gammcf,a,x,gln)
    +
    +
    +

    Called by:

    +
      +
    • gammp()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +get_inverse:()
    +

    File : utils/linear_algebra.irp.f

    +
    subroutine get_inverse(A,LDA,m,C,LDC)
    +
    +
    +

    Returns the inverse of the square matrix A

    +

    Called by:

    +
    +
      +
    +
      +
    +
    +

    Calls:

    +
      +
    • dgetrf()
    • +
    +
      +
    • dgetri()
    • +
    +
      +
    +
    +
    + +
    +
    +get_pseudo_inverse:()
    +

    File : utils/linear_algebra.irp.f

    +
    subroutine get_pseudo_inverse(A,LDA,m,n,C,LDC)
    +
    +
    +

    Find C = A^-1

    +

    Called by:

    +
    +
      +
    • find_rotation()
    • +
    +
    +
    +

    Calls:

    +
      +
    • dgesvd()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +give_explicit_poly_and_gaussian:()
    +

    File : utils/integration.irp.f

    +
    subroutine give_explicit_poly_and_gaussian(P_new,P_center,p,fact_k,iorder,alpha,beta,a,b,A_center,B_center,dim)
    +
    +
    +
    +
    Transforms the product of
    +
    (x-x_A)^a(1) (x-x_B)^b(1) (x-x_A)^a(2) (y-y_B)^b(2) (z-z_A)^a(3) (z-z_B)^b(3) exp(-(r-A)^2 alpha) exp(-(r-B)^2 beta)
    +
    into
    +
    +
    fact_k * [ sum (l_x = 0,i_order(1)) P_new(l_x,1) * (x-P_center(1))^l_x ] exp (- p (x-P_center(1))^2 )
    +
      +
    • [ sum (l_y = 0,i_order(2)) P_new(l_y,2) * (y-P_center(2))^l_y ] exp (- p (y-P_center(2))^2 )
    • +
    • [ sum (l_z = 0,i_order(3)) P_new(l_z,3) * (z-P_center(3))^l_z ] exp (- p (z-P_center(3))^2 )
    • +
    +
    +
    +
    +
    +

    Called by:

    +
      +
    • ao_two_e_integral()
    • +
    • ao_two_e_integral_erf()
    • +
    +
      +
    • ao_two_e_integral_schwartz_accel()
    • +
    • ao_two_e_integral_schwartz_accel_erf()
    • +
    +
      +
    • give_explicit_poly_and_gaussian_double()
    • +
    • overlap_gaussian_xyz()
    • +
    +
    +

    Calls:

    +
      +
    • gaussian_product()
    • +
    +
      +
    • multiply_poly()
    • +
    +
      +
    • recentered_poly2()
    • +
    +
    +
    + +
    +
    +give_explicit_poly_and_gaussian_double:()
    +

    File : utils/integration.irp.f

    +
    subroutine give_explicit_poly_and_gaussian_double(P_new,P_center,p,fact_k,iorder,alpha,beta,gama,a,b,A_center,B_center,Nucl_center,dim)
    +
    +
    +
    +
    Transforms the product of
    +
    (x-x_A)^a(1) (x-x_B)^b(1) (x-x_A)^a(2) (y-y_B)^b(2) (z-z_A)^a(3) (z-z_B)^b(3) +exp(-(r-A)^2 alpha) exp(-(r-B)^2 beta) exp(-(r-Nucl_center)^2 gama
    +
    into
    +
    +
    fact_k * [ sum (l_x = 0,i_order(1)) P_new(l_x,1) * (x-P_center(1))^l_x ] exp (- p (x-P_center(1))^2 )
    +
      +
    • [ sum (l_y = 0,i_order(2)) P_new(l_y,2) * (y-P_center(2))^l_y ] exp (- p (y-P_center(2))^2 )
    • +
    • [ sum (l_z = 0,i_order(3)) P_new(l_z,3) * (z-P_center(3))^l_z ] exp (- p (z-P_center(3))^2 )
    • +
    +
    +
    +
    +
    +

    Calls:

    +
      +
    • gaussian_product()
    • +
    +
      +
    • give_explicit_poly_and_gaussian()
    • +
    +
      +
    +
    +
    + +
    +
    +give_explicit_poly_and_gaussian_x:()
    +

    File : utils/integration.irp.f

    +
    subroutine give_explicit_poly_and_gaussian_x(P_new,P_center,p,fact_k,iorder,alpha,beta,a,b,A_center,B_center,dim)
    +
    +
    +
    +
    Transform the product of
    +
    (x-x_A)^a(1) (x-x_B)^b(1) (x-x_A)^a(2) (y-y_B)^b(2) (z-z_A)^a(3) (z-z_B)^b(3) exp(-(r-A)^2 alpha) exp(-(r-B)^2 beta)
    +
    into
    +
    fact_k (x-x_P)^iorder(1) (y-y_P)^iorder(2) (z-z_P)^iorder(3) exp(-p(r-P)^2)
    +
    +

    Called by:

    +
      +
    • overlap_gaussian_x()
    • +
    +
      +
    +
      +
    +
    +

    Calls:

    +
      +
    • multiply_poly()
    • +
    +
      +
    • recentered_poly2()
    • +
    +
      +
    +
    +
    + +
    +
    +gser:()
    +

    File : utils/need.irp.f

    +
    subroutine gser(gamser,a,x,gln)
    +
    +
    +

    Called by:

    +
      +
    • gammp()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +heap_dsort:()
    +

    File : utils/sort.irp.f_template_261

    +
    subroutine heap_dsort(x,iorder,isize)
    +
    +
    +

    Sort array x(isize) using the heap sort algorithm. +iorder in input should be (1,2,3,…,isize), and in output +contains the new order of the elements.

    +
    + +
    +
    +heap_dsort_big:()
    +

    File : utils/sort.irp.f_template_261

    +
    subroutine heap_dsort_big(x,iorder,isize)
    +
    +
    +

    Sort array x(isize) using the heap sort algorithm. +iorder in input should be (1,2,3,…,isize), and in output +contains the new order of the elements. +This is a version for very large arrays where the indices need +to be in integer*8 format

    +
    + +
    +
    +heap_i2sort:()
    +

    File : utils/sort.irp.f_template_261

    +
    subroutine heap_i2sort(x,iorder,isize)
    +
    +
    +

    Sort array x(isize) using the heap sort algorithm. +iorder in input should be (1,2,3,…,isize), and in output +contains the new order of the elements.

    +
    + +
    +
    +heap_i2sort_big:()
    +

    File : utils/sort.irp.f_template_261

    +
    subroutine heap_i2sort_big(x,iorder,isize)
    +
    +
    +

    Sort array x(isize) using the heap sort algorithm. +iorder in input should be (1,2,3,…,isize), and in output +contains the new order of the elements. +This is a version for very large arrays where the indices need +to be in integer*8 format

    +
    + +
    +
    +heap_i8sort:()
    +

    File : utils/sort.irp.f_template_261

    +
    subroutine heap_i8sort(x,iorder,isize)
    +
    +
    +

    Sort array x(isize) using the heap sort algorithm. +iorder in input should be (1,2,3,…,isize), and in output +contains the new order of the elements.

    +
    + +
    +
    +heap_i8sort_big:()
    +

    File : utils/sort.irp.f_template_261

    +
    subroutine heap_i8sort_big(x,iorder,isize)
    +
    +
    +

    Sort array x(isize) using the heap sort algorithm. +iorder in input should be (1,2,3,…,isize), and in output +contains the new order of the elements. +This is a version for very large arrays where the indices need +to be in integer*8 format

    +
    + +
    +
    +heap_isort:()
    +

    File : utils/sort.irp.f_template_261

    +
    subroutine heap_isort(x,iorder,isize)
    +
    +
    +

    Sort array x(isize) using the heap sort algorithm. +iorder in input should be (1,2,3,…,isize), and in output +contains the new order of the elements.

    +
    + +
    +
    +heap_isort_big:()
    +

    File : utils/sort.irp.f_template_261

    +
    subroutine heap_isort_big(x,iorder,isize)
    +
    +
    +

    Sort array x(isize) using the heap sort algorithm. +iorder in input should be (1,2,3,…,isize), and in output +contains the new order of the elements. +This is a version for very large arrays where the indices need +to be in integer*8 format

    +
    + +
    +
    +heap_sort:()
    +

    File : utils/sort.irp.f_template_261

    +
    subroutine heap_sort(x,iorder,isize)
    +
    +
    +

    Sort array x(isize) using the heap sort algorithm. +iorder in input should be (1,2,3,…,isize), and in output +contains the new order of the elements.

    +
    + +
    +
    +heap_sort_big:()
    +

    File : utils/sort.irp.f_template_261

    +
    subroutine heap_sort_big(x,iorder,isize)
    +
    +
    +

    Sort array x(isize) using the heap sort algorithm. +iorder in input should be (1,2,3,…,isize), and in output +contains the new order of the elements. +This is a version for very large arrays where the indices need +to be in integer*8 format

    +
    + +
    +
    +hermite:()
    +

    File : utils/integration.irp.f

    +
    double precision function hermite(n,x)
    +
    +
    +

    Hermite polynomial

    +
    + +
    +
    +i2set_order:()
    +

    File : utils/sort.irp.f_template_347

    +
    subroutine i2set_order(x,iorder,isize)
    +
    +
    +

    array A has already been sorted, and iorder has contains the new order of +elements of A. This subroutine changes the order of x to match the new order of A.

    +
    + +
    +
    +i2set_order_big:()
    +

    File : utils/sort.irp.f_template_412

    +
    subroutine i2set_order_big(x,iorder,isize)
    +
    +
    +

    array A has already been sorted, and iorder has contains the new order of +elements of A. This subroutine changes the order of x to match the new order of A. +This is a version for very large arrays where the indices need +to be in integer*8 format

    +
    + +
    +
    +i2sort:()
    +

    File : utils/sort.irp.f_template_315

    +
    subroutine i2sort(x,iorder,isize)
    +
    +
    +

    Sort array x(isize). +iorder in input should be (1,2,3,…,isize), and in output +contains the new order of the elements.

    +

    Calls:

    +
      +
    • quick_i2sort()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +i8set_order:()
    +

    File : utils/sort.irp.f_template_347

    +
    subroutine i8set_order(x,iorder,isize)
    +
    +
    +

    array A has already been sorted, and iorder has contains the new order of +elements of A. This subroutine changes the order of x to match the new order of A.

    +
    + +
    +
    +i8set_order_big:()
    +

    File : utils/sort.irp.f_template_412

    +
    subroutine i8set_order_big(x,iorder,isize)
    +
    +
    +

    array A has already been sorted, and iorder has contains the new order of +elements of A. This subroutine changes the order of x to match the new order of A. +This is a version for very large arrays where the indices need +to be in integer*8 format

    +
    + +
    +
    +i8sort:()
    +

    File : utils/sort.irp.f_template_315

    +
    subroutine i8sort(x,iorder,isize)
    +
    +
    +

    Sort array x(isize). +iorder in input should be (1,2,3,…,isize), and in output +contains the new order of the elements.

    +

    Called by:

    +
    + +
      +
    • remove_duplicates_in_selection_buffer()
    • +
    • sort_dets_by_det_search_key()
    • +
    +
    +

    Calls:

    +
      +
    • quick_i8sort()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +insertion_dsort:()
    +

    File : utils/sort.irp.f_template_261

    +
    subroutine insertion_dsort (x,iorder,isize)
    +
    +
    +

    Sort array x(isize) using the insertion sort algorithm. +iorder in input should be (1,2,3,…,isize), and in output +contains the new order of the elements.

    +

    Called by:

    +
      +
    • dsort()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +insertion_dsort_big:()
    +

    File : utils/sort.irp.f_template_412

    +
    subroutine insertion_dsort_big (x,iorder,isize)
    +
    +
    +

    Sort array x(isize) using the insertion sort algorithm. +iorder in input should be (1,2,3,…,isize), and in output +contains the new order of the elements. +This is a version for very large arrays where the indices need +to be in integer*8 format

    +
    + +
    +
    +insertion_i2sort:()
    +

    File : utils/sort.irp.f_template_261

    +
    subroutine insertion_i2sort (x,iorder,isize)
    +
    +
    +

    Sort array x(isize) using the insertion sort algorithm. +iorder in input should be (1,2,3,…,isize), and in output +contains the new order of the elements.

    +

    Called by:

    +
      +
    • i2radix_sort()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +insertion_i2sort_big:()
    +

    File : utils/sort.irp.f_template_412

    +
    subroutine insertion_i2sort_big (x,iorder,isize)
    +
    +
    +

    Sort array x(isize) using the insertion sort algorithm. +iorder in input should be (1,2,3,…,isize), and in output +contains the new order of the elements. +This is a version for very large arrays where the indices need +to be in integer*8 format

    +
    + +
    +
    +insertion_i8sort:()
    +

    File : utils/sort.irp.f_template_261

    +
    subroutine insertion_i8sort (x,iorder,isize)
    +
    +
    +

    Sort array x(isize) using the insertion sort algorithm. +iorder in input should be (1,2,3,…,isize), and in output +contains the new order of the elements.

    +

    Called by:

    +
      +
    • i8radix_sort()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +insertion_i8sort_big:()
    +

    File : utils/sort.irp.f_template_412

    +
    subroutine insertion_i8sort_big (x,iorder,isize)
    +
    +
    +

    Sort array x(isize) using the insertion sort algorithm. +iorder in input should be (1,2,3,…,isize), and in output +contains the new order of the elements. +This is a version for very large arrays where the indices need +to be in integer*8 format

    +

    Called by:

    +
      +
    • i8radix_sort_big()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +insertion_isort:()
    +

    File : utils/sort.irp.f_template_261

    +
    subroutine insertion_isort (x,iorder,isize)
    +
    +
    +

    Sort array x(isize) using the insertion sort algorithm. +iorder in input should be (1,2,3,…,isize), and in output +contains the new order of the elements.

    +

    Called by:

    +
      +
    • iradix_sort()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +insertion_isort_big:()
    +

    File : utils/sort.irp.f_template_412

    +
    subroutine insertion_isort_big (x,iorder,isize)
    +
    +
    +

    Sort array x(isize) using the insertion sort algorithm. +iorder in input should be (1,2,3,…,isize), and in output +contains the new order of the elements. +This is a version for very large arrays where the indices need +to be in integer*8 format

    +

    Called by:

    +
      +
    • iradix_sort_big()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +insertion_sort:()
    +

    File : utils/sort.irp.f_template_261

    +
    subroutine insertion_sort (x,iorder,isize)
    +
    +
    +

    Sort array x(isize) using the insertion sort algorithm. +iorder in input should be (1,2,3,…,isize), and in output +contains the new order of the elements.

    +

    Called by:

    +
      +
    • sort()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +insertion_sort_big:()
    +

    File : utils/sort.irp.f_template_412

    +
    subroutine insertion_sort_big (x,iorder,isize)
    +
    +
    +

    Sort array x(isize) using the insertion sort algorithm. +iorder in input should be (1,2,3,…,isize), and in output +contains the new order of the elements. +This is a version for very large arrays where the indices need +to be in integer*8 format

    +
    + +
    +
    +iset_order:()
    +

    File : utils/sort.irp.f_template_347

    +
    subroutine iset_order(x,iorder,isize)
    +
    +
    +

    array A has already been sorted, and iorder has contains the new order of +elements of A. This subroutine changes the order of x to match the new order of A.

    +

    Called by:

    +
    + +
      +
    +
    +
    + +
    +
    +iset_order_big:()
    +

    File : utils/sort.irp.f_template_412

    +
    subroutine iset_order_big(x,iorder,isize)
    +
    +
    +

    array A has already been sorted, and iorder has contains the new order of +elements of A. This subroutine changes the order of x to match the new order of A. +This is a version for very large arrays where the indices need +to be in integer*8 format

    +
    + +
    +
    +isort:()
    +

    File : utils/sort.irp.f_template_315

    +
    subroutine isort(x,iorder,isize)
    +
    +
    +

    Sort array x(isize). +iorder in input should be (1,2,3,…,isize), and in output +contains the new order of the elements.

    +

    Called by:

    +
      +
    • select_singles_and_doubles()
    • +
    +
      +
    +
      +
    +
    +

    Calls:

    +
      +
    • quick_isort()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +lapack_diag:()
    +

    File : utils/linear_algebra.irp.f

    +
    subroutine lapack_diag(eigvalues,eigvectors,H,nmax,n)
    +
    +
    +

    Diagonalize matrix H

    +

    H is untouched between input and ouptut

    +

    eigevalues(i) = ith lowest eigenvalue of the H matrix

    +

    eigvectors(i,j) = <i|psi_j> where i is the basis function and psi_j is the j th eigenvector

    +

    Called by:

    +
    +
      +
    • mo_as_eigvectors_of_mo_matrix()
    • +
    +
    +
    +

    Calls:

    +
      +
    • dsyev()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +lapack_diagd:()
    +

    File : utils/linear_algebra.irp.f

    +
    subroutine lapack_diagd(eigvalues,eigvectors,H,nmax,n)
    +
    +
    +

    Diagonalize matrix H

    +

    H is untouched between input and ouptut

    +

    eigevalues(i) = ith lowest eigenvalue of the H matrix

    +

    eigvectors(i,j) = <i|psi_j> where i is the basis function and psi_j is the j th eigenvector

    +

    Called by:

    +
    +
      +
    +
      +
    +
    +

    Calls:

    +
      +
    • dsyevd()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +logfact:()
    +

    File : utils/util.irp.f

    +
    double precision function logfact(n)
    +
    +
    +

    n!

    +
    + +
    +
    +lowercase:()
    +

    File : utils/util.irp.f

    +
    subroutine lowercase(txt,n)
    +
    +
    +

    Transform to lower case

    +

    Called by:

    +
      +
    • end_parallel_job()
    • +
    +
      +
    • new_parallel_job()
    • +
    +
      +
    +
    +
    + +
    +
    +map_load_from_disk:()
    +

    File : utils/map_functions.irp.f

    +
    subroutine map_load_from_disk(filename,map)
    +
    +
    +

    Called by:

    +
    + + +
    +

    Calls:

    +
      +
    • c_f_pointer()
    • +
    +
      +
    • mmap()
    • +
    +
      +
    +
    +
    + +
    +
    +map_save_to_disk:()
    +

    File : utils/map_functions.irp.f

    +
    subroutine map_save_to_disk(filename,map)
    +
    +
    +

    Called by:

    +
    + +
      +
    • save_erf_two_e_ints_ao_into_ints_ao()
    • +
    • save_erf_two_e_ints_mo_into_ints_mo()
    • +
    +
    +

    Calls:

    +
      +
    • c_f_pointer()
    • +
    • map_sort()
    • +
    +
      +
    • mmap()
    • +
    +
      +
    • msync()
    • +
    +
    +
    + +
    +
    +memory_of_double:()
    +

    File : utils/memory.irp.f

    +
    double precision function memory_of_double(n)
    +
    +
    +

    Computes the memory required for n double precision elements in gigabytes.

    +
    + +
    +
    +memory_of_int:()
    +

    File : utils/memory.irp.f

    +
    double precision function memory_of_int(n)
    +
    +
    +

    Computes the memory required for n double precision elements in gigabytes.

    +
    + +
    +
    +multiply_poly:()
    +

    File : utils/integration.irp.f

    +
    subroutine multiply_poly(b,nb,c,nc,d,nd)
    +
    +
    +

    Multiply two polynomials +D(t) =! D(t) +( B(t)*C(t))

    +

    Called by:

    +
      +
    • general_primitive_integral()
    • +
    • general_primitive_integral_erf()
    • +
    • give_explicit_poly_and_gaussian()
    • +
    • give_explicit_poly_and_gaussian_x()
    • +
    • give_polynomial_mult_center_one_e()
    • +
    +
      +
    • give_polynomial_mult_center_one_e_erf()
    • +
    • give_polynomial_mult_center_one_e_erf_opt()
    • +
    • i_x1_pol_mult_a1()
    • +
    • i_x1_pol_mult_a2()
    • +
    +
      +
    • i_x1_pol_mult_one_e()
    • +
    • i_x1_pol_mult_recurs()
    • +
    • i_x2_pol_mult()
    • +
    • i_x2_pol_mult_one_e()
    • +
    +
    +
    + +
    +
    +normalize:()
    +

    File : utils/util.irp.f

    +
    subroutine normalize(u,sze)
    +
    +
    +

    Normalizes vector u

    +

    Called by:

    +
      +
    • copy_h_apply_buffer_to_wf()
    • +
    +
      +
    • davidson_diag_hjj_sjj()
    • +
    +
      +
    • save_wavefunction_general()
    • +
    +
    +

    Calls:

    +
      +
    • dscal()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +ortho_canonical:()
    +

    File : utils/linear_algebra.irp.f

    +
    subroutine ortho_canonical(overlap,LDA,N,C,LDC,m)
    +
    +
    +

    Compute C_new=C_old.U.s^-1/2 canonical orthogonalization.

    +

    overlap : overlap matrix

    +

    LDA : leftmost dimension of overlap array

    +

    N : Overlap matrix is NxN (array is (LDA,N) )

    +
    +
    C : Coefficients of the vectors to orthogonalize. On exit,
    +
    orthogonal vectors
    +
    +

    LDC : leftmost dimension of C

    +

    m : Coefficients matrix is MxN, ( array is (LDC,N) )

    +

    Called by:

    +
    +
      +
    +
      +
    +
    +

    Calls:

    +
      +
    • dgemm()
    • +
    +
      +
    • svd()
    • +
    +
      +
    +
    +
    + +
    +
    +ortho_lowdin:()
    +

    File : utils/linear_algebra.irp.f

    +
    subroutine ortho_lowdin(overlap,LDA,N,C,LDC,m)
    +
    +
    +

    Compute C_new=C_old.S^-1/2 orthogonalization.

    +

    overlap : overlap matrix

    +

    LDA : leftmost dimension of overlap array

    +

    N : Overlap matrix is NxN (array is (LDA,N) )

    +
    +
    C : Coefficients of the vectors to orthogonalize. On exit,
    +
    orthogonal vectors
    +
    +

    LDC : leftmost dimension of C

    +

    M : Coefficients matrix is MxN, ( array is (LDC,N) )

    +

    Called by:

    +
    +
      +
    • orthonormalize_mos()
    • +
    +
      +
    +
    +

    Calls:

    +
      +
    • dgemm()
    • +
    +
      +
    • svd()
    • +
    +
      +
    +
    +
    + +
    +
    +ortho_qr:()
    +

    File : utils/linear_algebra.irp.f

    +
    subroutine ortho_qr(A,LDA,m,n)
    +
    +
    +

    Orthogonalization using Q.R factorization

    +

    A : matrix to orthogonalize

    +

    LDA : leftmost dimension of A

    +

    n : Number of rows of A

    +

    m : Number of columns of A

    +

    Called by:

    +
      +
    • davidson_diag_hjj_sjj()
    • +
    +
      +
    +
      +
    +
    +

    Calls:

    +
      +
    • dgeqrf()
    • +
    +
      +
    • dorgqr()
    • +
    +
      +
    +
    +
    + +
    +
    +ortho_qr_unblocked:()
    +

    File : utils/linear_algebra.irp.f

    +
    subroutine ortho_qr_unblocked(A,LDA,m,n)
    +
    +
    +

    Orthogonalization using Q.R factorization

    +

    A : matrix to orthogonalize

    +

    LDA : leftmost dimension of A

    +

    n : Number of rows of A

    +

    m : Number of columns of A

    +

    Calls:

    +
      +
    • dgeqr2()
    • +
    +
      +
    • dorg2r()
    • +
    +
      +
    +
    +
    + +
    +
    +overlap_gaussian_x:()
    +

    File : utils/one_e_integration.irp.f

    +
    double precision function overlap_gaussian_x(A_center,B_center,alpha,beta,power_A,power_B,dim)
    +
    +
    +
    +\[\sum_{-infty}^{+infty} (x-A_x)^ax (x-B_x)^bx exp(-alpha(x-A_x)^2) exp(-beta(x-B_X)^2) dx\]
    +

    Calls:

    +
      +
    • give_explicit_poly_and_gaussian_x()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +overlap_x_abs:()
    +

    File : utils/one_e_integration.irp.f

    +
    subroutine overlap_x_abs(A_center,B_center,alpha,beta,power_A,power_B,overlap_x,lower_exp_val,dx,nx)
    +
    +
    +

    Called by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +print_memory_usage:()
    +

    File : utils/memory.irp.f

    +
    subroutine print_memory_usage()
    +
    +
    +

    Prints the memory usage in the output

    +

    Called by:

    +
      +
    • write_time()
    • +
    +
      +
    +
      +
    +
    +

    Calls:

    +
      +
    • resident_memory()
    • +
    +
      +
    • total_memory()
    • +
    +
      +
    +
    +
    + +
    +
    +quick_dsort:()
    +

    File : utils/sort.irp.f_template_261

    +
    subroutine quick_dsort(x, iorder, isize)
    +
    +
    +

    Sort array x(isize) using the quicksort algorithm. +iorder in input should be (1,2,3,…,isize), and in output +contains the new order of the elements.

    +

    Needs:

    +
    +
      +
    +
      +
    +
    +

    Called by:

    +
      +
    • dsort()
    • +
    +
      +
    +
      +
    +
    +

    Calls:

    +
      +
    • rec_d_quicksort()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +quick_i2sort:()
    +

    File : utils/sort.irp.f_template_261

    +
    subroutine quick_i2sort(x, iorder, isize)
    +
    +
    +

    Sort array x(isize) using the quicksort algorithm. +iorder in input should be (1,2,3,…,isize), and in output +contains the new order of the elements.

    +

    Needs:

    +
    +
      +
    +
      +
    +
    +

    Called by:

    +
      +
    • i2sort()
    • +
    +
      +
    +
      +
    +
    +

    Calls:

    +
      +
    • rec_i2_quicksort()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +quick_i8sort:()
    +

    File : utils/sort.irp.f_template_261

    +
    subroutine quick_i8sort(x, iorder, isize)
    +
    +
    +

    Sort array x(isize) using the quicksort algorithm. +iorder in input should be (1,2,3,…,isize), and in output +contains the new order of the elements.

    +

    Needs:

    +
    +
      +
    +
      +
    +
    +

    Called by:

    +
      +
    • i8sort()
    • +
    +
      +
    +
      +
    +
    +

    Calls:

    +
      +
    • rec_i8_quicksort()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +quick_isort:()
    +

    File : utils/sort.irp.f_template_261

    +
    subroutine quick_isort(x, iorder, isize)
    +
    +
    +

    Sort array x(isize) using the quicksort algorithm. +iorder in input should be (1,2,3,…,isize), and in output +contains the new order of the elements.

    +

    Needs:

    +
    +
      +
    +
      +
    +
    +

    Called by:

    +
      +
    • isort()
    • +
    +
      +
    +
      +
    +
    +

    Calls:

    +
      +
    • rec_i_quicksort()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +quick_sort:()
    +

    File : utils/sort.irp.f_template_261

    +
    subroutine quick_sort(x, iorder, isize)
    +
    +
    +

    Sort array x(isize) using the quicksort algorithm. +iorder in input should be (1,2,3,…,isize), and in output +contains the new order of the elements.

    +

    Needs:

    +
    +
      +
    +
      +
    +
    +

    Called by:

    +
      +
    • sort()
    • +
    +
      +
    +
      +
    +
    +

    Calls:

    +
      +
    • rec__quicksort()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +recentered_poly2:()
    +

    File : utils/integration.irp.f

    +
    subroutine recentered_poly2(P_new,x_A,x_P,a,P_new2,x_B,x_Q,b)
    +
    +
    +

    Recenter two polynomials

    +

    Needs:

    +
    +
      +
    +
      +
    +
    +

    Called by:

    +
      +
    • give_explicit_poly_and_gaussian()
    • +
    +
      +
    • give_explicit_poly_and_gaussian_x()
    • +
    +
      +
    +
    +
    + +
    +
    +resident_memory:()
    +

    File : utils/memory.irp.f

    +
    subroutine resident_memory(value)
    +
    +
    +

    Returns the current used memory in gigabytes used by the current process.

    +

    Needs:

    +
    +
      +
    +
      +
    +
    +

    Called by:

    +
      +
    • check_mem()
    • +
    • davidson_diag_hjj_sjj()
    • +
    +
      +
    • print_memory_usage()
    • +
    +
      +
    • zmq_pt2()
    • +
    +
    +

    Calls:

    +
      +
    • omp_set_lock()
    • +
    +
      +
    • omp_unset_lock()
    • +
    +
      +
    +
    +
    + +
    +
    +rint:()
    +

    File : utils/integration.irp.f

    +
    double precision function rint(n,rho)
    +
    +
    +
    +\[\int_0^1 dx \exp(-p x^2) x^n\]
    +
    + +
    +
    +rint1:()
    +

    File : utils/integration.irp.f

    +
    double precision function rint1(n,rho)
    +
    +
    +

    Standard version of rint

    +

    Needs:

    +
    + +
      +
    +
    +
    + +
    +
    +rint_large_n:()
    +

    File : utils/integration.irp.f

    +
    double precision function rint_large_n(n,rho)
    +
    +
    +

    Version of rint for large values of n

    +
    + +
    +
    +rint_sum:()
    +

    File : utils/integration.irp.f

    +
    double precision function rint_sum(n_pt_out,rho,d1)
    +
    +
    +

    Needed for the calculation of two-electron integrals.

    +
    + +
    +
    +rinteg:()
    +

    File : utils/need.irp.f

    +
    double precision function rinteg(n,u)
    +
    +
    +
    + +
    +
    +rintgauss:()
    +

    File : utils/need.irp.f

    +
    double precision function rintgauss(n)
    +
    +
    +
    + +
    +
    +sabpartial:()
    +

    File : utils/need.irp.f

    +
    double precision function SABpartial(zA,zB,A,B,nA,nB,gamA,gamB,l)
    +
    +
    +

    Needs:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +set_order:()
    +

    File : utils/sort.irp.f_template_347

    +
    subroutine set_order(x,iorder,isize)
    +
    +
    +

    array A has already been sorted, and iorder has contains the new order of +elements of A. This subroutine changes the order of x to match the new order of A.

    +
    + +
    +
    +set_order_big:()
    +

    File : utils/sort.irp.f_template_412

    +
    subroutine set_order_big(x,iorder,isize)
    +
    +
    +

    array A has already been sorted, and iorder has contains the new order of +elements of A. This subroutine changes the order of x to match the new order of A. +This is a version for very large arrays where the indices need +to be in integer*8 format

    +
    + +
    +
    +sort:()
    +

    File : utils/sort.irp.f_template_293

    +
    subroutine sort(x,iorder,isize)
    +
    +
    +

    Sort array x(isize). +iorder in input should be (1,2,3,…,isize), and in output +contains the new order of the elements.

    +

    Calls:

    +
      +
    • insertion_sort()
    • +
    +
      +
    • quick_sort()
    • +
    +
      +
    +
    +
    + +
    +
    +sorted_dnumber:()
    +

    File : utils/sort.irp.f_template_261

    +
    subroutine sorted_dnumber(x,isize,n)
    +
    +
    +

    Returns the number of sorted elements

    +
    + +
    +
    +sorted_i2number:()
    +

    File : utils/sort.irp.f_template_261

    +
    subroutine sorted_i2number(x,isize,n)
    +
    +
    +

    Returns the number of sorted elements

    +
    + +
    +
    +sorted_i8number:()
    +

    File : utils/sort.irp.f_template_261

    +
    subroutine sorted_i8number(x,isize,n)
    +
    +
    +

    Returns the number of sorted elements

    +
    + +
    +
    +sorted_inumber:()
    +

    File : utils/sort.irp.f_template_261

    +
    subroutine sorted_inumber(x,isize,n)
    +
    +
    +

    Returns the number of sorted elements

    +
    + +
    +
    +sorted_number:()
    +

    File : utils/sort.irp.f_template_261

    +
    subroutine sorted_number(x,isize,n)
    +
    +
    +

    Returns the number of sorted elements

    +
    + +
    +
    +svd:()
    +

    File : utils/linear_algebra.irp.f

    +
    subroutine svd(A,LDA,U,LDU,D,Vt,LDVt,m,n)
    +
    +
    +

    Compute A = U.D.Vt

    +

    LDx : leftmost dimension of x

    +

    Dimsneion of A is m x n

    +

    Called by:

    +
      +
    • mo_as_svd_vectors_of_mo_matrix()
    • +
    • mo_as_svd_vectors_of_mo_matrix_eig()
    • +
    +
      +
    • ortho_canonical()
    • +
    • ortho_lowdin()
    • +
    +
    +
    +

    Calls:

    +
      +
    • dgesvd()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +total_memory:()
    +

    File : utils/memory.irp.f

    +
    subroutine total_memory(value)
    +
    +
    +

    Returns the current used memory in gigabytes used by the current process.

    +

    Called by:

    +
      +
    • print_memory_usage()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +u_dot_u:()
    +

    File : utils/util.irp.f

    +
    double precision function u_dot_u(u,sze)
    +
    +
    +

    Compute <u|u>

    +
    + +
    +
    +u_dot_v:()
    +

    File : utils/util.irp.f

    +
    double precision function u_dot_v(u,v,sze)
    +
    +
    +

    Compute <u|v>

    +
    + +
    +
    +wall_time:()
    +

    File : utils/util.irp.f

    +
    subroutine wall_time(t)
    +
    +
    +

    The equivalent of cpu_time, but for the wall time.

    +

    Called by:

    +
      +
    • add_integrals_to_map()
    • +
    • add_integrals_to_map_erf()
    • +
    • add_integrals_to_map_no_exit_34()
    • +
    • add_integrals_to_map_three_indices()
    • +
    • ao_pseudo_integrals_local
    • +
    +
    + +
    +

    Calls:

    +
      +
    • system_clock()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +write_git_log:()
    +

    File : utils/util.irp.f

    +
    subroutine write_git_log(iunit)
    +
    +
    +

    Write the last git commit in file iunit.

    +
    + +
    +
    + + +
    + +
    + + +
    +
    + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/doc/modules/zmq.html b/doc/modules/zmq.html new file mode 100644 index 00000000..51b9dbcc --- /dev/null +++ b/doc/modules/zmq.html @@ -0,0 +1,1788 @@ + + + + + + + + + + + zmq — Quantum Package 2.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + +
    + + + + + +
    + +
    + + + + + + + + + + + + + + + + + +
    + + + + +
    +
    +
    +
    + +
    +

    zmq

    +

    Definition of ZeroMQ sockets and messages.

    +
    +

    Providers

    +
    +
    +is_zmq_slave
    +

    File : zmq/utils.irp.f

    +
    logical :: is_zmq_slave
    +
    +
    +

    If true, the current process is a ZeroMQ slave.

    +
    + +
    +
    +qp_run_address
    +

    File : zmq/utils.irp.f

    +
    character*(128) :: qp_run_address
    +integer :: zmq_port_start
    +
    +
    +

    Address of the qp_run socket +Example : tcp://130.120.229.139:12345

    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +zmq_context
    +

    File : zmq/utils.irp.f

    +
    integer(ZMQ_PTR)        :: zmq_context
    +integer(omp_lock_kind)  :: zmq_lock
    +
    +
    +

    Context for the ZeroMQ library

    +

    Needed by:

    +
    + +
      +
    +
    +
    + +
    +
    +zmq_lock
    +

    File : zmq/utils.irp.f

    +
    integer(ZMQ_PTR)        :: zmq_context
    +integer(omp_lock_kind)  :: zmq_lock
    +
    +
    +

    Context for the ZeroMQ library

    +

    Needed by:

    +
    + +
      +
    +
    +
    + +
    +
    +zmq_port_start
    +

    File : zmq/utils.irp.f

    +
    character*(128) :: qp_run_address
    +integer :: zmq_port_start
    +
    +
    +

    Address of the qp_run socket +Example : tcp://130.120.229.139:12345

    +

    Needed by:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +zmq_socket_pair_inproc_address
    +

    File : zmq/utils.irp.f

    +
    character*(128) :: zmq_socket_pull_tcp_address
    +character*(128) :: zmq_socket_pair_inproc_address
    +character*(128) :: zmq_socket_push_tcp_address
    +character*(128) :: zmq_socket_pull_inproc_address
    +character*(128) :: zmq_socket_push_inproc_address
    +character*(128) :: zmq_socket_sub_tcp_address
    +
    +
    +

    Socket which pulls the results (2)

    +

    Needs:

    +
    +
      +
    +
      +
    +
    +

    Needed by:

    +
    + +
      +
    +
    +
    + +
    +
    +zmq_socket_pull_inproc_address
    +

    File : zmq/utils.irp.f

    +
    character*(128) :: zmq_socket_pull_tcp_address
    +character*(128) :: zmq_socket_pair_inproc_address
    +character*(128) :: zmq_socket_push_tcp_address
    +character*(128) :: zmq_socket_pull_inproc_address
    +character*(128) :: zmq_socket_push_inproc_address
    +character*(128) :: zmq_socket_sub_tcp_address
    +
    +
    +

    Socket which pulls the results (2)

    +

    Needs:

    +
    +
      +
    +
      +
    +
    +

    Needed by:

    +
    + +
      +
    +
    +
    + +
    +
    +zmq_socket_pull_tcp_address
    +

    File : zmq/utils.irp.f

    +
    character*(128) :: zmq_socket_pull_tcp_address
    +character*(128) :: zmq_socket_pair_inproc_address
    +character*(128) :: zmq_socket_push_tcp_address
    +character*(128) :: zmq_socket_pull_inproc_address
    +character*(128) :: zmq_socket_push_inproc_address
    +character*(128) :: zmq_socket_sub_tcp_address
    +
    +
    +

    Socket which pulls the results (2)

    +

    Needs:

    +
    +
      +
    +
      +
    +
    +

    Needed by:

    +
    + +
      +
    +
    +
    + +
    +
    +zmq_socket_push_inproc_address
    +

    File : zmq/utils.irp.f

    +
    character*(128) :: zmq_socket_pull_tcp_address
    +character*(128) :: zmq_socket_pair_inproc_address
    +character*(128) :: zmq_socket_push_tcp_address
    +character*(128) :: zmq_socket_pull_inproc_address
    +character*(128) :: zmq_socket_push_inproc_address
    +character*(128) :: zmq_socket_sub_tcp_address
    +
    +
    +

    Socket which pulls the results (2)

    +

    Needs:

    +
    +
      +
    +
      +
    +
    +

    Needed by:

    +
    + +
      +
    +
    +
    + +
    +
    +zmq_socket_push_tcp_address
    +

    File : zmq/utils.irp.f

    +
    character*(128) :: zmq_socket_pull_tcp_address
    +character*(128) :: zmq_socket_pair_inproc_address
    +character*(128) :: zmq_socket_push_tcp_address
    +character*(128) :: zmq_socket_pull_inproc_address
    +character*(128) :: zmq_socket_push_inproc_address
    +character*(128) :: zmq_socket_sub_tcp_address
    +
    +
    +

    Socket which pulls the results (2)

    +

    Needs:

    +
    +
      +
    +
      +
    +
    +

    Needed by:

    +
    + +
      +
    +
    +
    + +
    +
    +zmq_socket_sub_tcp_address
    +

    File : zmq/utils.irp.f

    +
    character*(128) :: zmq_socket_pull_tcp_address
    +character*(128) :: zmq_socket_pair_inproc_address
    +character*(128) :: zmq_socket_push_tcp_address
    +character*(128) :: zmq_socket_pull_inproc_address
    +character*(128) :: zmq_socket_push_inproc_address
    +character*(128) :: zmq_socket_sub_tcp_address
    +
    +
    +

    Socket which pulls the results (2)

    +

    Needs:

    +
    +
      +
    +
      +
    +
    +

    Needed by:

    +
    + +
      +
    +
    +
    + +
    +
    +zmq_state
    +

    File : zmq/utils.irp.f

    +
    character*(128) :: zmq_state
    +
    +
    +

    Threads executing work through the ZeroMQ interface

    +

    Needed by:

    +
    + +
      +
    +
    +
    + +
    +
    +

    Subroutines / functions

    +
    +
    +add_task_to_taskserver:()
    +

    File : zmq/utils.irp.f

    +
    integer function add_task_to_taskserver(zmq_to_qp_run_socket,task)
    +
    +
    +

    Get a task from the task server

    +

    Needs:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +connect_to_taskserver:()
    +

    File : zmq/utils.irp.f

    +
    integer function connect_to_taskserver(zmq_to_qp_run_socket,worker_id,thread)
    +
    +
    +

    Connect to the task server and obtain the worker ID

    +

    Needs:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +disconnect_from_taskserver:()
    +

    File : zmq/utils.irp.f

    +
    integer function disconnect_from_taskserver(zmq_to_qp_run_socket, worker_id)
    +
    +
    +

    Disconnect from the task server

    +

    Needs:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +disconnect_from_taskserver_state:()
    +

    File : zmq/utils.irp.f

    +
    integer function disconnect_from_taskserver_state(zmq_to_qp_run_socket, worker_id, state)
    +
    +
    +

    Disconnect from the task server

    +

    Needs:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +end_parallel_job:()
    +

    File : zmq/utils.irp.f

    +
    subroutine end_parallel_job(zmq_to_qp_run_socket,zmq_socket_pull,name_in)
    +
    +
    +

    End a new parallel job with name ‘name’. The slave tasks execute subroutine ‘slave’

    +

    Needs:

    +
    + +
      +
    +
    +

    Called by:

    +
    +
      +
    • h_s2_u_0_nstates_zmq()
    • +
    • zmq_pt2()
    • +
    +
      +
    • zmq_selection()
    • +
    +
    +

    Calls:

    +
      +
    • end_zmq_pull_socket()
    • +
    • end_zmq_to_qp_run_socket()
    • +
    +
      +
    • lowercase()
    • +
    • omp_set_lock()
    • +
    +
      +
    • omp_unset_lock()
    • +
    • sleep()
    • +
    +
    +
    + +
    +
    +end_zmq_pair_socket:()
    +

    File : zmq/utils.irp.f

    +
    subroutine end_zmq_pair_socket(zmq_socket_pair)
    +
    +
    +

    Terminate socket on which the results are sent.

    +

    Needs:

    +
    +
      +
    +
      +
    +
    +

    Calls:

    +
      +
    • omp_set_lock()
    • +
    +
      +
    • omp_unset_lock()
    • +
    +
      +
    +
    +
    + +
    +
    +end_zmq_pull_socket:()
    +

    File : zmq/utils.irp.f

    +
    subroutine end_zmq_pull_socket(zmq_socket_pull)
    +
    +
    +

    Terminate socket on which the results are sent.

    +

    Needs:

    +
    +
      +
    +
      +
    +
    +

    Called by:

    +
      +
    • end_parallel_job()
    • +
    +
      +
    +
      +
    +
    +

    Calls:

    +
      +
    • omp_set_lock()
    • +
    +
      +
    • omp_unset_lock()
    • +
    +
      +
    +
    +
    + +
    +
    +end_zmq_push_socket:()
    +

    File : zmq/utils.irp.f

    +
    subroutine end_zmq_push_socket(zmq_socket_push,thread)
    +
    +
    +

    Terminate socket on which the results are sent.

    +

    Needs:

    +
    +
      +
    +
      +
    +
    +

    Called by:

    +
      +
    • ao_two_e_integrals_erf_in_map_slave()
    • +
    • ao_two_e_integrals_in_map_slave()
    • +
    +
      +
    • davidson_run_slave()
    • +
    • run_pt2_slave()
    • +
    +
      +
    • run_selection_slave()
    • +
    +
    +

    Calls:

    +
      +
    • omp_set_lock()
    • +
    +
      +
    • omp_unset_lock()
    • +
    +
      +
    +
    +
    + +
    +
    +end_zmq_sub_socket:()
    +

    File : zmq/utils.irp.f

    +
    subroutine end_zmq_sub_socket(zmq_socket_sub)
    +
    +
    +

    Terminate socket on which the results are sent.

    +

    Needs:

    +
    +
      +
    +
      +
    +
    +

    Called by:

    +
      +
    • wait_for_next_state()
    • +
    +
      +
    • wait_for_state()
    • +
    +
      +
    • wait_for_states()
    • +
    +
    +

    Calls:

    +
      +
    • omp_set_lock()
    • +
    +
      +
    • omp_unset_lock()
    • +
    +
      +
    +
    +
    + +
    +
    +end_zmq_to_qp_run_socket:()
    +

    File : zmq/utils.irp.f

    +
    subroutine end_zmq_to_qp_run_socket(zmq_to_qp_run_socket)
    +
    +
    +

    Terminate the socket from the application to qp_run

    +

    Called by:

    +
      +
    • ao_two_e_integrals_erf_in_map_collector()
    • +
    • ao_two_e_integrals_erf_in_map_slave()
    • +
    • ao_two_e_integrals_in_map_collector()
    • +
    • ao_two_e_integrals_in_map_slave()
    • +
    +
      +
    • davidson_run_slave()
    • +
    • end_parallel_job()
    • +
    • pt2_collector()
    • +
    +
      +
    • run_pt2_slave()
    • +
    • run_selection_slave()
    • +
    • selection_collector()
    • +
    +
    +
    + +
    +
    +get_task_from_taskserver:()
    +

    File : zmq/utils.irp.f

    +
    integer function get_task_from_taskserver(zmq_to_qp_run_socket,worker_id,task_id,task)
    +
    +
    +

    Get a task from the task server

    +

    Needs:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +get_tasks_from_taskserver:()
    +

    File : zmq/utils.irp.f

    +
    integer function get_tasks_from_taskserver(zmq_to_qp_run_socket,worker_id,task_id,task,n_tasks)
    +
    +
    +

    Get multiple tasks from the task server

    +

    Needs:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +new_parallel_job:()
    +

    File : zmq/utils.irp.f

    +
    subroutine new_parallel_job(zmq_to_qp_run_socket,zmq_socket_pull,name_in)
    +
    +
    +

    Start a new parallel job with name ‘name’. The slave tasks execute subroutine ‘slave’

    +

    Needs:

    +
    + + +
    +

    Called by:

    +
    +
      +
    • h_s2_u_0_nstates_zmq()
    • +
    • zmq_pt2()
    • +
    +
      +
    • zmq_selection()
    • +
    +
    +

    Calls:

    +
      +
    • lowercase()
    • +
    +
      +
    • omp_set_lock()
    • +
    +
      +
    • omp_unset_lock()
    • +
    +
    +
    + +
    +
    +new_zmq_pair_socket:()
    +

    File : zmq/utils.irp.f

    +
    function new_zmq_pair_socket(bind)
    +
    +
    +

    Socket on which the collector and the main communicate

    +

    Needs:

    +
    + +
      +
    +
    +

    Calls:

    +
      +
    • omp_set_lock()
    • +
    +
      +
    • omp_unset_lock()
    • +
    +
      +
    +
    +
    + +
    +
    +new_zmq_pull_socket:()
    +

    File : zmq/utils.irp.f

    +
    function new_zmq_pull_socket()
    +
    +
    +

    Socket on which the results are sent. If thread is 1, use inproc

    +

    Needs:

    +
    + + +
    +

    Calls:

    +
      +
    • omp_set_lock()
    • +
    +
      +
    • omp_unset_lock()
    • +
    +
      +
    • sleep()
    • +
    +
    +
    + +
    +
    +new_zmq_push_socket:()
    +

    File : zmq/utils.irp.f

    +
    function new_zmq_push_socket(thread)
    +
    +
    +

    Socket on which the results are sent. If thread is 1, use inproc

    +

    Needs:

    +
    + +
      +
    +
    +

    Calls:

    +
      +
    • omp_set_lock()
    • +
    +
      +
    • omp_unset_lock()
    • +
    +
      +
    +
    +
    + +
    +
    +new_zmq_sub_socket:()
    +

    File : zmq/utils.irp.f

    +
    function new_zmq_sub_socket()
    +
    +
    +

    Socket to read the state published by the Task server

    +

    Needs:

    +
    + +
      +
    +
    +

    Calls:

    +
      +
    • omp_set_lock()
    • +
    +
      +
    • omp_unset_lock()
    • +
    +
      +
    +
    +
    + +
    +
    +new_zmq_to_qp_run_socket:()
    +

    File : zmq/utils.irp.f

    +
    function new_zmq_to_qp_run_socket()
    +
    +
    +

    Socket on which the qp_run process replies

    +

    Needs:

    +
    + +
      +
    +
    +

    Calls:

    +
      +
    • omp_set_lock()
    • +
    +
      +
    • omp_unset_lock()
    • +
    +
      +
    +
    +
    + +
    +
    +reset_zmq_addresses:()
    +

    File : zmq/utils.irp.f

    +
    subroutine reset_zmq_addresses
    +
    +
    +

    Socket which pulls the results (2)

    +

    Needs:

    +
    + +
      +
    +
    +

    Called by:

    +
      +
    • switch_qp_run_to_master()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +switch_qp_run_to_master:()
    +

    File : zmq/utils.irp.f

    +
    subroutine switch_qp_run_to_master
    +
    +
    +

    Address of the master qp_run socket +Example : tcp://130.120.229.139:12345

    +

    Needs:

    +
    + +
      +
    +
    +

    Called by:

    +
      +
    • run_slave_cipsi()
    • +
    +
      +
    +
      +
    +
    +

    Calls:

    +
      +
    • getenv()
    • +
    +
      +
    • reset_zmq_addresses()
    • +
    +
      +
    +
    +
    + +
    +
    +task_done_to_taskserver:()
    +

    File : zmq/utils.irp.f

    +
    integer function task_done_to_taskserver(zmq_to_qp_run_socket, worker_id, task_id)
    +
    +
    +

    Get a task from the task server

    +

    Needs:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +tasks_done_to_taskserver:()
    +

    File : zmq/utils.irp.f

    +
    integer function tasks_done_to_taskserver(zmq_to_qp_run_socket, worker_id, task_id, n_tasks)
    +
    +
    +

    Get a task from the task server

    +

    Needs:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +wait_for_next_state:()
    +

    File : zmq/utils.irp.f

    +
    subroutine wait_for_next_state(state)
    +
    +
    +

    Calls:

    +
      +
    • end_zmq_sub_socket()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +wait_for_state:()
    +

    File : zmq/utils.irp.f

    +
    subroutine wait_for_state(state_wait,state)
    +
    +
    +

    Wait for the ZMQ state to be ready

    +

    Calls:

    +
      +
    • end_zmq_sub_socket()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +wait_for_states:()
    +

    File : zmq/utils.irp.f

    +
    subroutine wait_for_states(state_wait,state,n)
    +
    +
    +

    Wait for the ZMQ state to be ready

    +

    Called by:

    +
      +
    • run_slave_main()
    • +
    +
      +
    +
      +
    +
    +

    Calls:

    +
      +
    • end_zmq_sub_socket()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +zmq_abort:()
    +

    File : zmq/utils.irp.f

    +
    integer function zmq_abort(zmq_to_qp_run_socket)
    +
    +
    +

    Aborts a running parallel computation

    +

    Calls:

    +
      +
    • sleep()
    • +
    +
      +
    +
      +
    +
    +
    + +
    +
    +zmq_delete_task:()
    +

    File : zmq/utils.irp.f

    +
    integer function zmq_delete_task(zmq_to_qp_run_socket,zmq_socket_pull,task_id,more)
    +
    +
    +

    When a task is done, it has to be removed from the list of tasks on the qp_run +queue. This guarantees that the results have been received in the pull.

    +

    Needs:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +zmq_delete_tasks:()
    +

    File : zmq/utils.irp.f

    +
    integer function zmq_delete_tasks(zmq_to_qp_run_socket,zmq_socket_pull,task_id,n_tasks,more)
    +
    +
    +

    When a task is done, it has to be removed from the list of tasks on the qp_run +queue. This guarantees that the results have been received in the pull.

    +

    Needs:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +zmq_delete_tasks_async_recv:()
    +

    File : zmq/utils.irp.f

    +
    integer function zmq_delete_tasks_async_recv(zmq_to_qp_run_socket,zmq_socket_pull,task_id,n_tasks,more)
    +
    +
    +

    When a task is done, it has to be removed from the list of tasks on the qp_run +queue. This guarantees that the results have been received in the pull.

    +
    + +
    +
    +zmq_delete_tasks_async_send:()
    +

    File : zmq/utils.irp.f

    +
    integer function zmq_delete_tasks_async_send(zmq_to_qp_run_socket,zmq_socket_pull,task_id,n_tasks,more)
    +
    +
    +

    When a task is done, it has to be removed from the list of tasks on the qp_run +queue. This guarantees that the results have been received in the pull.

    +

    Needs:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +zmq_get8_dvector:()
    +

    File : zmq/put_get.irp.f

    +
    integer function zmq_get8_dvector(zmq_to_qp_run_socket, worker_id, name, x, size_x)
    +
    +
    +

    Get a float vector from the qp_run scheduler

    +

    Needs:

    +
    + +
      +
    +
    +
    + +
    +
    +zmq_get8_ivector:()
    +

    File : zmq/put_get.irp.f

    +
    integer function zmq_get8_ivector(zmq_to_qp_run_socket, worker_id, name, x, size_x)
    +
    +
    +

    Get a vector of integers from the qp_run scheduler

    +

    Needs:

    +
    + +
      +
    +
    +
    + +
    +
    +zmq_get_dmatrix:()
    +

    File : zmq/put_get.irp.f

    +
    integer function zmq_get_dmatrix(zmq_to_qp_run_socket, worker_id, name, x, size_x1, size_x2, sze)
    +
    +
    +

    Get a float vector from the qp_run scheduler

    +

    Needs:

    +
    + +
      +
    +
    +
    + +
    +
    +zmq_get_dvector:()
    +

    File : zmq/put_get.irp.f

    +
    integer function zmq_get_dvector(zmq_to_qp_run_socket, worker_id, name, x, size_x)
    +
    +
    +

    Get a float vector from the qp_run scheduler

    +

    Needs:

    +
    + +
      +
    +
    +
    + +
    +
    +zmq_get_i8matrix:()
    +

    File : zmq/put_get.irp.f

    +
    integer function zmq_get_i8matrix(zmq_to_qp_run_socket, worker_id, name, x, size_x1, size_x2, sze)
    +
    +
    +

    Get a float vector from the qp_run scheduler

    +

    Needs:

    +
    + +
      +
    +
    +
    + +
    +
    +zmq_get_imatrix:()
    +

    File : zmq/put_get.irp.f

    +
    integer function zmq_get_imatrix(zmq_to_qp_run_socket, worker_id, name, x, size_x1, size_x2, sze)
    +
    +
    +

    Get a float vector from the qp_run scheduler

    +

    Needs:

    +
    + +
      +
    +
    +
    + +
    +
    +zmq_get_int:()
    +

    File : zmq/put_get.irp.f

    +
    integer function zmq_get_int(zmq_to_qp_run_socket, worker_id, name, x)
    +
    +
    +

    Get a vector of integers from the qp_run scheduler

    +

    Needs:

    +
    + +
      +
    +
    +
    + +
    +
    +zmq_get_int_nompi:()
    +

    File : zmq/put_get.irp.f

    +
    integer function zmq_get_int_nompi(zmq_to_qp_run_socket, worker_id, name, x)
    +
    +
    +

    Get a vector of integers from the qp_run scheduler

    +

    Needs:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +zmq_get_ivector:()
    +

    File : zmq/put_get.irp.f

    +
    integer function zmq_get_ivector(zmq_to_qp_run_socket, worker_id, name, x, size_x)
    +
    +
    +

    Get a vector of integers from the qp_run scheduler

    +

    Needs:

    +
    + +
      +
    +
    +
    + +
    +
    +zmq_port:()
    +

    File : zmq/utils.irp.f

    +
    function zmq_port(ishift)
    +
    +
    +

    Return the value of the ZMQ port from the corresponding integer

    +

    Needs:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +zmq_put8_dvector:()
    +

    File : zmq/put_get.irp.f

    +
    integer function zmq_put8_dvector(zmq_to_qp_run_socket, worker_id, name, x, size_x)
    +
    +
    +

    Put a float vector on the qp_run scheduler

    +

    Needs:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +zmq_put8_ivector:()
    +

    File : zmq/put_get.irp.f

    +
    integer function zmq_put8_ivector(zmq_to_qp_run_socket, worker_id, name, x, size_x)
    +
    +
    +

    Put a vector of integers on the qp_run scheduler

    +

    Needs:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +zmq_put_dmatrix:()
    +

    File : zmq/put_get.irp.f

    +
    integer function zmq_put_dmatrix(zmq_to_qp_run_socket, worker_id, name, x, size_x1, size_x2, sze)
    +
    +
    +

    Put a float vector on the qp_run scheduler

    +

    Needs:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +zmq_put_dvector:()
    +

    File : zmq/put_get.irp.f

    +
    integer function zmq_put_dvector(zmq_to_qp_run_socket, worker_id, name, x, size_x)
    +
    +
    +

    Put a float vector on the qp_run scheduler

    +

    Needs:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +zmq_put_i8matrix:()
    +

    File : zmq/put_get.irp.f

    +
    integer function zmq_put_i8matrix(zmq_to_qp_run_socket, worker_id, name, x, size_x1, size_x2, sze)
    +
    +
    +

    Put a float vector on the qp_run scheduler

    +

    Needs:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +zmq_put_imatrix:()
    +

    File : zmq/put_get.irp.f

    +
    integer function zmq_put_imatrix(zmq_to_qp_run_socket, worker_id, name, x, size_x1, size_x2, sze)
    +
    +
    +

    Put a float vector on the qp_run scheduler

    +

    Needs:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +zmq_put_int:()
    +

    File : zmq/put_get.irp.f

    +
    integer function zmq_put_int(zmq_to_qp_run_socket, worker_id, name, x)
    +
    +
    +

    Put a vector of integers on the qp_run scheduler

    +

    Needs:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +zmq_put_ivector:()
    +

    File : zmq/put_get.irp.f

    +
    integer function zmq_put_ivector(zmq_to_qp_run_socket, worker_id, name, x, size_x)
    +
    +
    +

    Put a vector of integers on the qp_run scheduler

    +

    Needs:

    +
    +
      +
    +
      +
    +
    +
    + +
    +
    +zmq_set_running:()
    +

    File : zmq/utils.irp.f

    +
    integer function zmq_set_running(zmq_to_qp_run_socket)
    +
    +
    +

    Set the job to Running in QP-run

    +
    + +
    +
    + + +
    + +
    + + +
    +
    + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/doc/objects.inv b/doc/objects.inv new file mode 100644 index 00000000..e38e6f69 Binary files /dev/null and b/doc/objects.inv differ diff --git a/doc/programmers_guide/conventions.html b/doc/programmers_guide/conventions.html new file mode 100644 index 00000000..f2a372cb --- /dev/null +++ b/doc/programmers_guide/conventions.html @@ -0,0 +1,390 @@ + + + + + + + + + + + Coding conventions — Quantum Package 2.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + +
    + + + + + +
    + +
    + + + + + + + + + + + + + + + + + +
    + + + + +
    +
    +
    +
    + +
    +

    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 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 file command can +be used. In addition, all the shell scripts should be under +$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

      +
      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.

    +

    pylint should be used to increase the quality of the source code.

    +
    +
    +
    +

    IRPF90

    +

    The code can be automatically indented with 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 fci program, we have

    +
    program fci
    +
    +
    +

    and the file is named fci.irp.f.

    +
    +
    + + +
    + +
    + + +
    +
    + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/doc/programmers_guide/ezfio.html b/doc/programmers_guide/ezfio.html new file mode 100644 index 00000000..7be58648 --- /dev/null +++ b/doc/programmers_guide/ezfio.html @@ -0,0 +1,359 @@ + + + + + + + + + + + EZFIO — Quantum Package 2.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + +
    + + + + + +
    + +
    + + + + + + + + + + + + + + + + + +
    + + + + +
    +
    +
    +
    + +
    +

    EZFIO

    +
    +

    EZFIO.cfg

    +

    The simplest way to add control parameters in the EZFIO directory is to create a +EZFIO.cfg file in the module. An example can be found in existing modules +such as 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

    +
    +
    +[<provider_name>]
    +

    The name of the provider in irp.f90 and in the EZFIO lib

    +
    + +
    +
    +doc:<str>
    +

    The plain text documentation

    +
    + +
    +
    +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
    +
    +
    +
    + +
    +
    +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

    +
    +
    +default:<str>
    +

    The default value needed if ocaml is in interface list. +No default can be set for arrays.

    +
    + +
    +
    +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)

    +
    +
    + +
    +
    +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 +bitmask module.

    +
    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)
    +
    +
    +
    +
    + + +
    + +
    + + +
    +
    + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/doc/programmers_guide/index.html b/doc/programmers_guide/index.html new file mode 100644 index 00000000..f0b04b01 --- /dev/null +++ b/doc/programmers_guide/index.html @@ -0,0 +1,1764 @@ + + + + + + + + + + + Index for programmers — Quantum Package 2.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + +
    + + + + + +
    + +
    + + + + + + + + + + + + + + + + + +
    + + + + +
    +
    +
    +
    + +
    +

    Index for programmers

    + +
    +

    Index of Providers

    + +
    +
    +

    Index of Subroutines/Functions

    +
      +
    • a_coef()
    • +
    • a_operator()
    • +
    • a_operator_two_e()
    • +
    • ac_operator()
    • +
    • ac_operator_two_e()
    • +
    • add_integrals_to_map()
    • +
    • add_integrals_to_map_erf()
    • +
    • add_integrals_to_map_no_exit_34()
    • +
    • add_integrals_to_map_three_indices()
    • +
    • add_poly()
    • +
    • add_poly_multiply()
    • +
    • add_task_to_taskserver()
    • +
    • add_to_selection_buffer()
    • +
    • ao_l4()
    • +
    • ao_ortho_cano_to_ao()
    • +
    • ao_power_index()
    • +
    • ao_to_mo()
    • +
    • ao_two_e_integral()
    • +
    • ao_two_e_integral_erf()
    • +
    • ao_two_e_integral_schwartz_accel()
    • +
    • ao_two_e_integral_schwartz_accel_erf()
    • +
    • ao_two_e_integrals_erf_in_map_collector()
    • +
    • ao_two_e_integrals_erf_in_map_slave()
    • +
    • ao_two_e_integrals_erf_in_map_slave_inproc()
    • +
    • ao_two_e_integrals_erf_in_map_slave_tcp()
    • +
    • ao_two_e_integrals_in_map_collector()
    • +
    • ao_two_e_integrals_in_map_slave()
    • +
    • ao_two_e_integrals_in_map_slave_inproc()
    • +
    • ao_two_e_integrals_in_map_slave_tcp()
    • +
    • ao_value()
    • +
    • apply_excitation()
    • +
    • apply_hole()
    • +
    • apply_holes()
    • +
    • apply_particle()
    • +
    • apply_particles()
    • +
    • apply_rotation()
    • +
    • approx_dble()
    • +
    • b_coef()
    • +
    • berf()
    • +
    • binom_func()
    • +
    • bitstring_to_hexa()
    • +
    • bitstring_to_list()
    • +
    • bitstring_to_list_ab()
    • +
    • bitstring_to_list_in_selection()
    • +
    • bitstring_to_str()
    • +
    • broadcast_chunks_bit_kind()
    • +
    • broadcast_chunks_double()
    • +
    • broadcast_chunks_integer()
    • +
    • broadcast_chunks_integer8()
    • +
    • build_fock_tmp()
    • +
    • cell_function_becke()
    • +
    • check_coherence_functional()
    • +
    • check_mem()
    • +
    • cis()
    • +
    • cisd()
    • +
    • clear_ao_erf_map()
    • +
    • clear_ao_map()
    • +
    • clear_bit_to_integer()
    • +
    • clear_mo_erf_map()
    • +
    • clear_mo_map()
    • +
    • compute_ao_integrals_erf_jl()
    • +
    • compute_ao_integrals_jl()
    • +
    • compute_ao_two_e_integrals()
    • +
    • compute_ao_two_e_integrals_erf()
    • +
    • connect_to_taskserver()
    • +
    • connected_to_ref()
    • +
    • connected_to_ref_by_mono()
    • +
    • copy_h_apply_buffer_to_wf()
    • +
    • copy_psi_bilinear_to_psi()
    • +
    • create_guess()
    • +
    • create_microlist()
    • +
    • create_minilist()
    • +
    • create_minilist_find_previous()
    • +
    • create_selection_buffer()
    • +
    • create_wf_of_psi_bilinear_matrix()
    • +
    • damping_scf()
    • +
    • davidson_collector()
    • +
    • davidson_converged()
    • +
    • davidson_diag_hjj_sjj()
    • +
    • davidson_diag_hs2()
    • +
    • davidson_pull_results()
    • +
    • davidson_push_results()
    • +
    • davidson_run_slave()
    • +
    • davidson_slave_inproc()
    • +
    • davidson_slave_tcp()
    • +
    • davidson_slave_work()
    • +
    • dberfda()
    • +
    • dble_fact()
    • +
    • dble_fact_even()
    • +
    • dble_fact_odd()
    • +
    • dble_logfact()
    • +
    • ddfact2()
    • +
    • debug_det()
    • +
    • debug_spindet()
    • +
    • decode_exc()
    • +
    • decode_exc_spin()
    • +
    • delete_selection_buffer()
    • +
    • density_and_grad_alpha_beta_and_all_aos_and_grad_aos_at_r()
    • +
    • derivative_knowles_function()
    • +
    • det_inf()
    • +
    • det_search_key()
    • +
    • detcmp()
    • +
    • deteq()
    • +
    • diag_h_mat_elem()
    • +
    • diag_h_mat_elem_fock()
    • +
    • diag_h_mat_elem_one_e()
    • +
    • diag_s_mat_elem()
    • +
    • diag_wee_mat_elem()
    • +
    • diagonalize_ci()
    • +
    • diagonalize_h()
    • +
    • disconnect_from_taskserver()
    • +
    • disconnect_from_taskserver_state()
    • +
    • dm_dft_alpha_beta_and_all_aos_at_r()
    • +
    • dm_dft_alpha_beta_at_r()
    • +
    • do_mono_excitation()
    • +
    • dpol()
    • +
    • dpold()
    • +
    • dpoldd()
    • +
    • dset_order()
    • +
    • dset_order_big()
    • +
    • dsort()
    • +
    • dump_ao_integrals()
    • +
    • dump_ao_integrals_erf()
    • +
    • dump_mo_integrals()
    • +
    • ec_lda()
    • +
    • ec_lda_sr()
    • +
    • ec_only_lda_sr()
    • +
    • ec_pbe_only()
    • +
    • ec_pbe_sr()
    • +
    • ecorrlr()
    • +
    • ecpw()
    • +
    • end_parallel_job()
    • +
    • end_zmq_pair_socket()
    • +
    • end_zmq_pull_socket()
    • +
    • end_zmq_push_socket()
    • +
    • end_zmq_sub_socket()
    • +
    • end_zmq_to_qp_run_socket()
    • +
    • erf0()
    • +
    • eri()
    • +
    • eri_erf()
    • +
    • ex_lda()
    • +
    • ex_lda_sr()
    • +
    • ex_pbe_sr()
    • +
    • ex_pbe_sr_only()
    • +
    • example_becke_numerical_grid()
    • +
    • example_bitmask()
    • +
    • example_determinants()
    • +
    • example_determinants_psi_det()
    • +
    • extrapolate_data()
    • +
    • f_function_becke()
    • +
    • f_integral()
    • +
    • fact()
    • +
    • fci()
    • +
    • fcidump()
    • +
    • fill_buffer_double()
    • +
    • fill_h_apply_buffer_no_selection()
    • +
    • filter_connected()
    • +
    • filter_connected_i_h_psi0()
    • +
    • filter_not_connected()
    • +
    • find_rotation()
    • +
    • four_idx_transform()
    • +
    • g0d()
    • +
    • g0dd()
    • +
    • g0f()
    • +
    • gammln()
    • +
    • gammp()
    • +
    • gauleg()
    • +
    • gaussian_product()
    • +
    • gaussian_product_x()
    • +
    • gcf()
    • +
    • generate_all_alpha_beta_det_products()
    • +
    • get_all_spin_doubles()
    • +
    • get_all_spin_doubles_1()
    • +
    • get_all_spin_doubles_2()
    • +
    • get_all_spin_doubles_3()
    • +
    • get_all_spin_doubles_4()
    • +
    • get_all_spin_doubles_n_int()
    • +
    • get_all_spin_singles()
    • +
    • get_all_spin_singles_1()
    • +
    • get_all_spin_singles_2()
    • +
    • get_all_spin_singles_3()
    • +
    • get_all_spin_singles_4()
    • +
    • get_all_spin_singles_and_doubles()
    • +
    • get_all_spin_singles_and_doubles_1()
    • +
    • get_all_spin_singles_and_doubles_2()
    • +
    • get_all_spin_singles_and_doubles_3()
    • +
    • get_all_spin_singles_and_doubles_4()
    • +
    • get_all_spin_singles_and_doubles_n_int()
    • +
    • get_all_spin_singles_n_int()
    • +
    • get_ao_erf_map_size()
    • +
    • get_ao_map_size()
    • +
    • get_ao_two_e_integral()
    • +
    • get_ao_two_e_integral_erf()
    • +
    • get_ao_two_e_integrals()
    • +
    • get_ao_two_e_integrals_erf()
    • +
    • get_ao_two_e_integrals_erf_non_zero()
    • +
    • get_ao_two_e_integrals_non_zero()
    • +
    • get_d0()
    • +
    • get_d1()
    • +
    • get_d2()
    • +
    • get_double_excitation()
    • +
    • get_double_excitation_spin()
    • +
    • get_excitation()
    • +
    • get_excitation_degree()
    • +
    • get_excitation_degree_spin()
    • +
    • get_excitation_degree_vector()
    • +
    • get_excitation_degree_vector_double_alpha_beta()
    • +
    • get_excitation_degree_vector_mono()
    • +
    • get_excitation_degree_vector_mono_or_exchange()
    • +
    • get_excitation_degree_vector_mono_or_exchange_verbose()
    • +
    • get_excitation_spin()
    • +
    • get_index_in_psi_det_alpha_unique()
    • +
    • get_index_in_psi_det_beta_unique()
    • +
    • get_index_in_psi_det_sorted_bit()
    • +
    • get_inverse()
    • +
    • get_mask_phase()
    • +
    • get_mo_erf_map_size()
    • +
    • get_mo_map_size()
    • +
    • get_mo_two_e_integral_erf()
    • +
    • get_mo_two_e_integrals()
    • +
    • get_mo_two_e_integrals_coulomb_ii()
    • +
    • get_mo_two_e_integrals_erf()
    • +
    • get_mo_two_e_integrals_erf_coulomb_ii()
    • +
    • get_mo_two_e_integrals_erf_exch_ii()
    • +
    • get_mo_two_e_integrals_erf_i1j1()
    • +
    • get_mo_two_e_integrals_erf_ij()
    • +
    • get_mo_two_e_integrals_exch_ii()
    • +
    • get_mo_two_e_integrals_i1j1()
    • +
    • get_mo_two_e_integrals_ij()
    • +
    • get_mono_excitation()
    • +
    • get_mono_excitation_from_fock()
    • +
    • get_mono_excitation_spin()
    • +
    • get_occupation_from_dets()
    • +
    • get_phase()
    • +
    • get_phase_bi()
    • +
    • get_phasemask_bit()
    • +
    • get_pseudo_inverse()
    • +
    • get_s2()
    • +
    • get_task_from_taskserver()
    • +
    • get_tasks_from_taskserver()
    • +
    • get_two_e_integral()
    • +
    • get_uj_s2_ui()
    • +
    • getmobiles()
    • +
    • getunitandopen()
    • +
    • give_all_aos_and_grad_and_lapl_at_r()
    • +
    • give_all_aos_and_grad_at_r()
    • +
    • give_all_aos_at_r()
    • +
    • give_all_aos_at_r_old()
    • +
    • give_all_erf_kl_ao()
    • +
    • give_all_mos_and_grad_and_lapl_at_r()
    • +
    • give_all_mos_and_grad_at_r()
    • +
    • give_all_mos_at_r()
    • +
    • give_explicit_poly_and_gaussian()
    • +
    • give_explicit_poly_and_gaussian_double()
    • +
    • give_explicit_poly_and_gaussian_x()
    • +
    • give_polynom_mult_center_x()
    • +
    • give_polynomial_mult_center_one_e()
    • +
    • gpw()
    • +
    • grad_rho_ab_to_grad_rho_oc()
    • +
    • gser()
    • +
    • h_apply_cis()
    • +
    • h_apply_cis_diexc()
    • +
    • h_apply_cis_diexcorg()
    • +
    • h_apply_cis_diexcp()
    • +
    • h_apply_cis_monoexc()
    • +
    • h_apply_cisd()
    • +
    • h_apply_cisd_diexc()
    • +
    • h_apply_cisd_diexcorg()
    • +
    • h_apply_cisd_diexcp()
    • +
    • h_apply_cisd_monoexc()
    • +
    • h_s2_u_0_nstates_openmp()
    • +
    • h_s2_u_0_nstates_openmp_work()
    • +
    • h_s2_u_0_nstates_openmp_work_1()
    • +
    • h_s2_u_0_nstates_openmp_work_2()
    • +
    • h_s2_u_0_nstates_openmp_work_3()
    • +
    • h_s2_u_0_nstates_openmp_work_4()
    • +
    • h_s2_u_0_nstates_openmp_work_n_int()
    • +
    • h_s2_u_0_nstates_zmq()
    • +
    • h_s2_u_0_two_e_nstates_openmp()
    • +
    • h_s2_u_0_two_e_nstates_openmp_work()
    • +
    • h_s2_u_0_two_e_nstates_openmp_work_1()
    • +
    • h_s2_u_0_two_e_nstates_openmp_work_2()
    • +
    • h_s2_u_0_two_e_nstates_openmp_work_3()
    • +
    • h_s2_u_0_two_e_nstates_openmp_work_4()
    • +
    • h_s2_u_0_two_e_nstates_openmp_work_n_int()
    • +
    • hcore_guess()
    • +
    • heap_dsort()
    • +
    • heap_dsort_big()
    • +
    • heap_i2sort()
    • +
    • heap_i2sort_big()
    • +
    • heap_i8sort()
    • +
    • heap_i8sort_big()
    • +
    • heap_isort()
    • +
    • heap_isort_big()
    • +
    • heap_sort()
    • +
    • heap_sort_big()
    • +
    • hermite()
    • +
    • huckel_guess()
    • +
    • i2set_order()
    • +
    • i2set_order_big()
    • +
    • i2sort()
    • +
    • i8set_order()
    • +
    • i8set_order_big()
    • +
    • i8sort()
    • +
    • i_h_j()
    • +
    • i_h_j_double_alpha_beta()
    • +
    • i_h_j_double_spin()
    • +
    • i_h_j_mono_spin()
    • +
    • i_h_j_mono_spin_one_e()
    • +
    • i_h_j_one_e()
    • +
    • i_h_j_s2()
    • +
    • i_h_j_two_e()
    • +
    • i_h_j_verbose()
    • +
    • i_h_psi()
    • +
    • i_h_psi_minilist()
    • +
    • i_s2_psi_minilist()
    • +
    • i_wee_j_mono()
    • +
    • i_x1_pol_mult()
    • +
    • initialize_bitmask_to_restart_ones()
    • +
    • initialize_mo_coef_begin_iteration()
    • +
    • insert_into_ao_integrals_erf_map()
    • +
    • insert_into_ao_integrals_map()
    • +
    • insertion_dsort()
    • +
    • insertion_dsort_big()
    • +
    • insertion_i2sort()
    • +
    • insertion_i2sort_big()
    • +
    • insertion_i8sort()
    • +
    • insertion_i8sort_big()
    • +
    • insertion_isort()
    • +
    • insertion_isort_big()
    • +
    • insertion_sort()
    • +
    • insertion_sort_big()
    • +
    • int_gaus_pol()
    • +
    • integrale_new()
    • +
    • integrale_new_erf()
    • +
    • is_a_1h()
    • +
    • is_a_1h1p()
    • +
    • is_a_1h2p()
    • +
    • is_a_1p()
    • +
    • is_a_2h()
    • +
    • is_a_2h1p()
    • +
    • is_a_2p()
    • +
    • is_a_two_holes_two_particles()
    • +
    • is_connected_to()
    • +
    • is_connected_to_by_mono()
    • +
    • is_i_in_virtual()
    • +
    • is_in_wavefunction()
    • +
    • is_spin_flip_possible()
    • +
    • is_the_hole_in_det()
    • +
    • is_the_particl_in_det()
    • +
    • iset_order()
    • +
    • iset_order_big()
    • +
    • isort()
    • +
    • knowles_function()
    • +
    • ks_scf()
    • +
    • lapack_diag()
    • +
    • lapack_diagd()
    • +
    • list_to_bitstring()
    • +
    • load_ao_integrals()
    • +
    • load_ao_integrals_erf()
    • +
    • load_mo_integrals()
    • +
    • load_mo_integrals_erf()
    • +
    • logfact()
    • +
    • lowercase()
    • +
    • make_s2_eigenfunction()
    • +
    • make_selection_buffer_s2()
    • +
    • map_load_from_disk()
    • +
    • map_save_to_disk()
    • +
    • memory_of_double()
    • +
    • memory_of_int()
    • +
    • merge_selection_buffers()
    • +
    • mix_mo_jk()
    • +
    • mo_as_eigvectors_of_mo_matrix()
    • +
    • mo_as_svd_vectors_of_mo_matrix()
    • +
    • mo_as_svd_vectors_of_mo_matrix_eig()
    • +
    • mo_to_ao()
    • +
    • mo_to_ao_no_overlap()
    • +
    • mo_two_e_integral()
    • +
    • mo_two_e_integral_erf()
    • +
    • mo_two_e_integrals_erf_index()
    • +
    • mo_two_e_integrals_index()
    • +
    • modify_bitmasks_for_hole()
    • +
    • modify_bitmasks_for_hole_in_out()
    • +
    • modify_bitmasks_for_particl()
    • +
    • molden()
    • +
    • mono_excitation_wee()
    • +
    • mpi_print()
    • +
    • multiply_poly()
    • +
    • n_pt_sup()
    • +
    • nai_pol_mult()
    • +
    • nai_pol_mult_erf()
    • +
    • nai_pol_mult_erf_ao()
    • +
    • new_parallel_job()
    • +
    • new_zmq_pair_socket()
    • +
    • new_zmq_pull_socket()
    • +
    • new_zmq_push_socket()
    • +
    • new_zmq_sub_socket()
    • +
    • new_zmq_to_qp_run_socket()
    • +
    • normalize()
    • +
    • number_of_holes()
    • +
    • number_of_holes_verbose()
    • +
    • number_of_particles()
    • +
    • number_of_particles_verbose()
    • +
    • occ_pattern_of_det()
    • +
    • occ_pattern_search_key()
    • +
    • occ_pattern_to_dets()
    • +
    • occ_pattern_to_dets_size()
    • +
    • ortho_canonical()
    • +
    • ortho_lowdin()
    • +
    • ortho_qr()
    • +
    • ortho_qr_unblocked()
    • +
    • orthonormalize_mos()
    • +
    • overlap_bourrin_deriv_x()
    • +
    • overlap_bourrin_dipole()
    • +
    • overlap_bourrin_spread()
    • +
    • overlap_bourrin_x()
    • +
    • overlap_gaussian_x()
    • +
    • overlap_x_abs()
    • +
    • past_d1()
    • +
    • past_d2()
    • +
    • perturb_buffer_by_mono_dummy()
    • +
    • perturb_buffer_by_mono_epstein_nesbet()
    • +
    • perturb_buffer_by_mono_epstein_nesbet_2x2()
    • +
    • perturb_buffer_by_mono_epstein_nesbet_2x2_no_ci_diag()
    • +
    • perturb_buffer_by_mono_moller_plesset()
    • +
    • perturb_buffer_by_mono_qdpt()
    • +
    • perturb_buffer_dummy()
    • +
    • perturb_buffer_epstein_nesbet()
    • +
    • perturb_buffer_epstein_nesbet_2x2()
    • +
    • perturb_buffer_epstein_nesbet_2x2_no_ci_diag()
    • +
    • perturb_buffer_moller_plesset()
    • +
    • perturb_buffer_qdpt()
    • +
    • primitive_value()
    • +
    • print_det()
    • +
    • print_e_conv()
    • +
    • print_extrapolated_energy()
    • +
    • print_generators_bitmasks_holes()
    • +
    • print_generators_bitmasks_holes_for_one_generator()
    • +
    • print_generators_bitmasks_particles()
    • +
    • print_generators_bitmasks_particles_for_one_generator()
    • +
    • print_memory_usage()
    • +
    • print_spindet()
    • +
    • print_summary()
    • +
    • print_wf()
    • +
    • provide_all_mo_integrals_erf()
    • +
    • provide_everything()
    • +
    • pt2()
    • +
    • pt2_dummy()
    • +
    • pt2_epstein_nesbet()
    • +
    • pt2_epstein_nesbet_2x2()
    • +
    • pt2_epstein_nesbet_2x2_no_ci_diag()
    • +
    • pt2_find_sample()
    • +
    • pt2_find_sample_lr()
    • +
    • pt2_moller_plesset()
    • +
    • pt2_qdpt()
    • +
    • pt2_slave_inproc()
    • +
    • pull_pt2()
    • +
    • pull_pt2_results()
    • +
    • pull_selection_results()
    • +
    • push_integrals()
    • +
    • push_pt2()
    • +
    • push_pt2_results()
    • +
    • push_selection_results()
    • +
    • qp_stop()
    • +
    • qrpa()
    • +
    • qrpad()
    • +
    • qrpadd()
    • +
    • quick_dsort()
    • +
    • quick_i2sort()
    • +
    • quick_i8sort()
    • +
    • quick_isort()
    • +
    • quick_sort()
    • +
    • read_dets()
    • +
    • recentered_poly2()
    • +
    • remove_duplicates_in_psi_det()
    • +
    • remove_duplicates_in_selection_buffer()
    • +
    • remove_small_contributions()
    • +
    • reorder_core_orb()
    • +
    • reset_zmq_addresses()
    • +
    • resident_memory()
    • +
    • resize_h_apply_buffer()
    • +
    • rho_ab_to_rho_oc()
    • +
    • rho_oc_to_rho_ab()
    • +
    • rint()
    • +
    • rint1()
    • +
    • rint_large_n()
    • +
    • rint_sum()
    • +
    • rinteg()
    • +
    • rintgauss()
    • +
    • roothaan_hall_scf()
    • +
    • routine()
    • +
    • routine_e_conv()
    • +
    • routine_example_psi_det()
    • +
    • routine_save_one_e_dm()
    • +
    • rs_ks_scf()
    • +
    • run()
    • +
    • run_cipsi()
    • +
    • run_pt2_slave()
    • +
    • run_selection_slave()
    • +
    • run_slave_cipsi()
    • +
    • run_slave_main()
    • +
    • run_stochastic_cipsi()
    • +
    • s2_u_0()
    • +
    • s2_u_0_nstates()
    • +
    • sabpartial()
    • +
    • save_energy()
    • +
    • save_erf_two_e_integrals_ao()
    • +
    • save_erf_two_e_integrals_mo()
    • +
    • save_erf_two_e_ints_ao_into_ints_ao()
    • +
    • save_erf_two_e_ints_mo_into_ints_mo()
    • +
    • save_iterations()
    • +
    • save_mos()
    • +
    • save_mos_truncated()
    • +
    • save_natorb()
    • +
    • save_natural_mos()
    • +
    • save_one_e_dm()
    • +
    • save_ortho_mos()
    • +
    • save_ref_determinant()
    • +
    • save_wavefunction()
    • +
    • save_wavefunction_general()
    • +
    • save_wavefunction_specified()
    • +
    • save_wavefunction_truncated()
    • +
    • save_wavefunction_unsorted()
    • +
    • scf()
    • +
    • select_connected()
    • +
    • select_singles_and_doubles()
    • +
    • selection_collector()
    • +
    • selection_slave_inproc()
    • +
    • set_bit_to_integer()
    • +
    • set_bitmask_hole_as_input()
    • +
    • set_bitmask_particl_as_input()
    • +
    • set_natural_mos()
    • +
    • set_order()
    • +
    • set_order_big()
    • +
    • sort()
    • +
    • sort_dets_ab()
    • +
    • sort_dets_ab_v()
    • +
    • sort_dets_ba_v()
    • +
    • sort_dets_by_det_search_key()
    • +
    • sort_selection_buffer()
    • +
    • sorted_dnumber()
    • +
    • sorted_i2number()
    • +
    • sorted_i8number()
    • +
    • sorted_inumber()
    • +
    • sorted_number()
    • +
    • spin_det_search_key()
    • +
    • splash_pq()
    • +
    • spot_isinwf()
    • +
    • step_function_becke()
    • +
    • svd()
    • +
    • switch_qp_run_to_master()
    • +
    • tamiser()
    • +
    • task_done_to_taskserver()
    • +
    • tasks_done_to_taskserver()
    • +
    • testteethbuilding()
    • +
    • total_memory()
    • +
    • two_e_integrals_index()
    • +
    • two_e_integrals_index_reverse()
    • +
    • u_0_h_u_0()
    • +
    • u_0_h_u_0_two_e()
    • +
    • u_0_s2_u_0()
    • +
    • u_dot_u()
    • +
    • u_dot_v()
    • +
    • v_e_n()
    • +
    • v_grad_rho_oc_to_v_grad_rho_ab()
    • +
    • v_phi()
    • +
    • v_r()
    • +
    • v_rho_ab_to_v_rho_oc()
    • +
    • v_rho_oc_to_v_rho_ab()
    • +
    • v_theta()
    • +
    • vcorrlr()
    • +
    • wait_for_next_state()
    • +
    • wait_for_state()
    • +
    • wait_for_states()
    • +
    • wall_time()
    • +
    • wallis()
    • +
    • wf_of_psi_bilinear_matrix()
    • +
    • write_ao_basis()
    • +
    • write_bool()
    • +
    • write_double()
    • +
    • write_geometry()
    • +
    • write_git_log()
    • +
    • write_int()
    • +
    • write_integrals_erf()
    • +
    • write_intro_gamess()
    • +
    • write_mo_basis()
    • +
    • write_spindeterminants()
    • +
    • write_time()
    • +
    • zmq_abort()
    • +
    • zmq_delete_task()
    • +
    • zmq_delete_tasks()
    • +
    • zmq_delete_tasks_async_recv()
    • +
    • zmq_delete_tasks_async_send()
    • +
    • zmq_get8_dvector()
    • +
    • zmq_get8_ivector()
    • +
    • zmq_get_dmatrix()
    • +
    • zmq_get_dvector()
    • +
    • zmq_get_i8matrix()
    • +
    • zmq_get_imatrix()
    • +
    • zmq_get_int()
    • +
    • zmq_get_int_nompi()
    • +
    • zmq_get_ivector()
    • +
    • zmq_get_n_det()
    • +
    • zmq_get_n_det_alpha_unique()
    • +
    • zmq_get_n_det_beta_unique()
    • +
    • zmq_get_n_det_generators()
    • +
    • zmq_get_n_det_selectors()
    • +
    • zmq_get_n_states()
    • +
    • zmq_get_n_states_diag()
    • +
    • zmq_get_psi()
    • +
    • zmq_get_psi_bilinear()
    • +
    • zmq_get_psi_bilinear_matrix_columns()
    • +
    • zmq_get_psi_bilinear_matrix_order()
    • +
    • zmq_get_psi_bilinear_matrix_rows()
    • +
    • zmq_get_psi_bilinear_matrix_values()
    • +
    • zmq_get_psi_coef()
    • +
    • zmq_get_psi_det()
    • +
    • zmq_get_psi_det_alpha_unique()
    • +
    • zmq_get_psi_det_beta_unique()
    • +
    • zmq_get_psi_det_size()
    • +
    • zmq_get_psi_notouch()
    • +
    • zmq_port()
    • +
    • zmq_pt2()
    • +
    • zmq_put8_dvector()
    • +
    • zmq_put8_ivector()
    • +
    • zmq_put_dmatrix()
    • +
    • zmq_put_dvector()
    • +
    • zmq_put_i8matrix()
    • +
    • zmq_put_imatrix()
    • +
    • zmq_put_int()
    • +
    • zmq_put_ivector()
    • +
    • zmq_put_n_det()
    • +
    • zmq_put_n_det_alpha_unique()
    • +
    • zmq_put_n_det_beta_unique()
    • +
    • zmq_put_n_det_generators()
    • +
    • zmq_put_n_det_selectors()
    • +
    • zmq_put_n_states()
    • +
    • zmq_put_n_states_diag()
    • +
    • zmq_put_psi()
    • +
    • zmq_put_psi_bilinear()
    • +
    • zmq_put_psi_bilinear_matrix_columns()
    • +
    • zmq_put_psi_bilinear_matrix_order()
    • +
    • zmq_put_psi_bilinear_matrix_rows()
    • +
    • zmq_put_psi_bilinear_matrix_values()
    • +
    • zmq_put_psi_coef()
    • +
    • zmq_put_psi_det()
    • +
    • zmq_put_psi_det_alpha_unique()
    • +
    • zmq_put_psi_det_beta_unique()
    • +
    • zmq_put_psi_det_size()
    • +
    • zmq_selection()
    • +
    • zmq_set_running()
    • +
    +
    +
    + + +
    + +
    + + +
    +
    + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/doc/programmers_guide/index_providers.html b/doc/programmers_guide/index_providers.html new file mode 100644 index 00000000..721af02d --- /dev/null +++ b/doc/programmers_guide/index_providers.html @@ -0,0 +1,1636 @@ + + + + + + + + + + + Index of Providers — Quantum Package 2.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + +
    + + + + + +
    + +
    + + + + + + + + + + + + + + + + + +
    + + + + +
    +
    +
    +
    + +
    +

    Index of Providers

    + +
    +
    +

    Index of Subroutines/Functions

    +
      +
    • a_coef()
    • +
    • a_operator()
    • +
    • a_operator_two_e()
    • +
    • ac_operator()
    • +
    • ac_operator_two_e()
    • +
    • add_integrals_to_map()
    • +
    • add_integrals_to_map_erf()
    • +
    • add_integrals_to_map_no_exit_34()
    • +
    • add_integrals_to_map_three_indices()
    • +
    • add_poly()
    • +
    • add_poly_multiply()
    • +
    • add_task_to_taskserver()
    • +
    • add_to_selection_buffer()
    • +
    • ao_l4()
    • +
    • ao_ortho_cano_to_ao()
    • +
    • ao_power_index()
    • +
    • ao_to_mo()
    • +
    • ao_two_e_integral()
    • +
    • ao_two_e_integral_erf()
    • +
    • ao_two_e_integral_schwartz_accel()
    • +
    • ao_two_e_integral_schwartz_accel_erf()
    • +
    • ao_two_e_integrals_erf_in_map_collector()
    • +
    • ao_two_e_integrals_erf_in_map_slave()
    • +
    • ao_two_e_integrals_erf_in_map_slave_inproc()
    • +
    • ao_two_e_integrals_erf_in_map_slave_tcp()
    • +
    • ao_two_e_integrals_in_map_collector()
    • +
    • ao_two_e_integrals_in_map_slave()
    • +
    • ao_two_e_integrals_in_map_slave_inproc()
    • +
    • ao_two_e_integrals_in_map_slave_tcp()
    • +
    • ao_value()
    • +
    • apply_excitation()
    • +
    • apply_hole()
    • +
    • apply_holes()
    • +
    • apply_particle()
    • +
    • apply_particles()
    • +
    • apply_rotation()
    • +
    • approx_dble()
    • +
    • b_coef()
    • +
    • berf()
    • +
    • binom_func()
    • +
    • bitstring_to_hexa()
    • +
    • bitstring_to_list()
    • +
    • bitstring_to_list_ab()
    • +
    • bitstring_to_list_in_selection()
    • +
    • bitstring_to_str()
    • +
    • broadcast_chunks_bit_kind()
    • +
    • broadcast_chunks_double()
    • +
    • broadcast_chunks_integer()
    • +
    • broadcast_chunks_integer8()
    • +
    • build_fock_tmp()
    • +
    • cell_function_becke()
    • +
    • check_coherence_functional()
    • +
    • check_mem()
    • +
    • cis()
    • +
    • cisd()
    • +
    • clear_ao_erf_map()
    • +
    • clear_ao_map()
    • +
    • clear_bit_to_integer()
    • +
    • clear_mo_erf_map()
    • +
    • clear_mo_map()
    • +
    • compute_ao_integrals_erf_jl()
    • +
    • compute_ao_integrals_jl()
    • +
    • compute_ao_two_e_integrals()
    • +
    • compute_ao_two_e_integrals_erf()
    • +
    • connect_to_taskserver()
    • +
    • connected_to_ref()
    • +
    • connected_to_ref_by_mono()
    • +
    • copy_h_apply_buffer_to_wf()
    • +
    • copy_psi_bilinear_to_psi()
    • +
    • create_guess()
    • +
    • create_microlist()
    • +
    • create_minilist()
    • +
    • create_minilist_find_previous()
    • +
    • create_selection_buffer()
    • +
    • create_wf_of_psi_bilinear_matrix()
    • +
    • damping_scf()
    • +
    • davidson_collector()
    • +
    • davidson_converged()
    • +
    • davidson_diag_hjj_sjj()
    • +
    • davidson_diag_hs2()
    • +
    • davidson_pull_results()
    • +
    • davidson_push_results()
    • +
    • davidson_run_slave()
    • +
    • davidson_slave_inproc()
    • +
    • davidson_slave_tcp()
    • +
    • davidson_slave_work()
    • +
    • dberfda()
    • +
    • dble_fact()
    • +
    • dble_fact_even()
    • +
    • dble_fact_odd()
    • +
    • dble_logfact()
    • +
    • ddfact2()
    • +
    • debug_det()
    • +
    • debug_spindet()
    • +
    • decode_exc()
    • +
    • decode_exc_spin()
    • +
    • delete_selection_buffer()
    • +
    • density_and_grad_alpha_beta_and_all_aos_and_grad_aos_at_r()
    • +
    • derivative_knowles_function()
    • +
    • det_inf()
    • +
    • det_search_key()
    • +
    • detcmp()
    • +
    • deteq()
    • +
    • diag_h_mat_elem()
    • +
    • diag_h_mat_elem_fock()
    • +
    • diag_h_mat_elem_one_e()
    • +
    • diag_s_mat_elem()
    • +
    • diag_wee_mat_elem()
    • +
    • diagonalize_ci()
    • +
    • diagonalize_h()
    • +
    • disconnect_from_taskserver()
    • +
    • disconnect_from_taskserver_state()
    • +
    • dm_dft_alpha_beta_and_all_aos_at_r()
    • +
    • dm_dft_alpha_beta_at_r()
    • +
    • do_mono_excitation()
    • +
    • dpol()
    • +
    • dpold()
    • +
    • dpoldd()
    • +
    • dset_order()
    • +
    • dset_order_big()
    • +
    • dsort()
    • +
    • dump_ao_integrals()
    • +
    • dump_ao_integrals_erf()
    • +
    • dump_mo_integrals()
    • +
    • ec_lda()
    • +
    • ec_lda_sr()
    • +
    • ec_only_lda_sr()
    • +
    • ec_pbe_only()
    • +
    • ec_pbe_sr()
    • +
    • ecorrlr()
    • +
    • ecpw()
    • +
    • end_parallel_job()
    • +
    • end_zmq_pair_socket()
    • +
    • end_zmq_pull_socket()
    • +
    • end_zmq_push_socket()
    • +
    • end_zmq_sub_socket()
    • +
    • end_zmq_to_qp_run_socket()
    • +
    • erf0()
    • +
    • eri()
    • +
    • eri_erf()
    • +
    • ex_lda()
    • +
    • ex_lda_sr()
    • +
    • ex_pbe_sr()
    • +
    • ex_pbe_sr_only()
    • +
    • example_becke_numerical_grid()
    • +
    • example_bitmask()
    • +
    • example_determinants()
    • +
    • example_determinants_psi_det()
    • +
    • extrapolate_data()
    • +
    • f_function_becke()
    • +
    • f_integral()
    • +
    • fact()
    • +
    • fci()
    • +
    • fcidump()
    • +
    • fill_buffer_double()
    • +
    • fill_h_apply_buffer_no_selection()
    • +
    • filter_connected()
    • +
    • filter_connected_i_h_psi0()
    • +
    • filter_not_connected()
    • +
    • find_rotation()
    • +
    • four_idx_transform()
    • +
    • g0d()
    • +
    • g0dd()
    • +
    • g0f()
    • +
    • gammln()
    • +
    • gammp()
    • +
    • gauleg()
    • +
    • gaussian_product()
    • +
    • gaussian_product_x()
    • +
    • gcf()
    • +
    • generate_all_alpha_beta_det_products()
    • +
    • get_all_spin_doubles()
    • +
    • get_all_spin_doubles_1()
    • +
    • get_all_spin_doubles_2()
    • +
    • get_all_spin_doubles_3()
    • +
    • get_all_spin_doubles_4()
    • +
    • get_all_spin_doubles_n_int()
    • +
    • get_all_spin_singles()
    • +
    • get_all_spin_singles_1()
    • +
    • get_all_spin_singles_2()
    • +
    • get_all_spin_singles_3()
    • +
    • get_all_spin_singles_4()
    • +
    • get_all_spin_singles_and_doubles()
    • +
    • get_all_spin_singles_and_doubles_1()
    • +
    • get_all_spin_singles_and_doubles_2()
    • +
    • get_all_spin_singles_and_doubles_3()
    • +
    • get_all_spin_singles_and_doubles_4()
    • +
    • get_all_spin_singles_and_doubles_n_int()
    • +
    • get_all_spin_singles_n_int()
    • +
    • get_ao_erf_map_size()
    • +
    • get_ao_map_size()
    • +
    • get_ao_two_e_integral()
    • +
    • get_ao_two_e_integral_erf()
    • +
    • get_ao_two_e_integrals()
    • +
    • get_ao_two_e_integrals_erf()
    • +
    • get_ao_two_e_integrals_erf_non_zero()
    • +
    • get_ao_two_e_integrals_non_zero()
    • +
    • get_d0()
    • +
    • get_d1()
    • +
    • get_d2()
    • +
    • get_double_excitation()
    • +
    • get_double_excitation_spin()
    • +
    • get_excitation()
    • +
    • get_excitation_degree()
    • +
    • get_excitation_degree_spin()
    • +
    • get_excitation_degree_vector()
    • +
    • get_excitation_degree_vector_double_alpha_beta()
    • +
    • get_excitation_degree_vector_mono()
    • +
    • get_excitation_degree_vector_mono_or_exchange()
    • +
    • get_excitation_degree_vector_mono_or_exchange_verbose()
    • +
    • get_excitation_spin()
    • +
    • get_index_in_psi_det_alpha_unique()
    • +
    • get_index_in_psi_det_beta_unique()
    • +
    • get_index_in_psi_det_sorted_bit()
    • +
    • get_inverse()
    • +
    • get_mask_phase()
    • +
    • get_mo_erf_map_size()
    • +
    • get_mo_map_size()
    • +
    • get_mo_two_e_integral_erf()
    • +
    • get_mo_two_e_integrals()
    • +
    • get_mo_two_e_integrals_coulomb_ii()
    • +
    • get_mo_two_e_integrals_erf()
    • +
    • get_mo_two_e_integrals_erf_coulomb_ii()
    • +
    • get_mo_two_e_integrals_erf_exch_ii()
    • +
    • get_mo_two_e_integrals_erf_i1j1()
    • +
    • get_mo_two_e_integrals_erf_ij()
    • +
    • get_mo_two_e_integrals_exch_ii()
    • +
    • get_mo_two_e_integrals_i1j1()
    • +
    • get_mo_two_e_integrals_ij()
    • +
    • get_mono_excitation()
    • +
    • get_mono_excitation_from_fock()
    • +
    • get_mono_excitation_spin()
    • +
    • get_occupation_from_dets()
    • +
    • get_phase()
    • +
    • get_phase_bi()
    • +
    • get_phasemask_bit()
    • +
    • get_pseudo_inverse()
    • +
    • get_s2()
    • +
    • get_task_from_taskserver()
    • +
    • get_tasks_from_taskserver()
    • +
    • get_two_e_integral()
    • +
    • get_uj_s2_ui()
    • +
    • getmobiles()
    • +
    • getunitandopen()
    • +
    • give_all_aos_and_grad_and_lapl_at_r()
    • +
    • give_all_aos_and_grad_at_r()
    • +
    • give_all_aos_at_r()
    • +
    • give_all_aos_at_r_old()
    • +
    • give_all_erf_kl_ao()
    • +
    • give_all_mos_and_grad_and_lapl_at_r()
    • +
    • give_all_mos_and_grad_at_r()
    • +
    • give_all_mos_at_r()
    • +
    • give_explicit_poly_and_gaussian()
    • +
    • give_explicit_poly_and_gaussian_double()
    • +
    • give_explicit_poly_and_gaussian_x()
    • +
    • give_polynom_mult_center_x()
    • +
    • give_polynomial_mult_center_one_e()
    • +
    • gpw()
    • +
    • grad_rho_ab_to_grad_rho_oc()
    • +
    • gser()
    • +
    • h_apply_cis()
    • +
    • h_apply_cis_diexc()
    • +
    • h_apply_cis_diexcorg()
    • +
    • h_apply_cis_diexcp()
    • +
    • h_apply_cis_monoexc()
    • +
    • h_apply_cisd()
    • +
    • h_apply_cisd_diexc()
    • +
    • h_apply_cisd_diexcorg()
    • +
    • h_apply_cisd_diexcp()
    • +
    • h_apply_cisd_monoexc()
    • +
    • h_s2_u_0_nstates_openmp()
    • +
    • h_s2_u_0_nstates_openmp_work()
    • +
    • h_s2_u_0_nstates_openmp_work_1()
    • +
    • h_s2_u_0_nstates_openmp_work_2()
    • +
    • h_s2_u_0_nstates_openmp_work_3()
    • +
    • h_s2_u_0_nstates_openmp_work_4()
    • +
    • h_s2_u_0_nstates_openmp_work_n_int()
    • +
    • h_s2_u_0_nstates_zmq()
    • +
    • h_s2_u_0_two_e_nstates_openmp()
    • +
    • h_s2_u_0_two_e_nstates_openmp_work()
    • +
    • h_s2_u_0_two_e_nstates_openmp_work_1()
    • +
    • h_s2_u_0_two_e_nstates_openmp_work_2()
    • +
    • h_s2_u_0_two_e_nstates_openmp_work_3()
    • +
    • h_s2_u_0_two_e_nstates_openmp_work_4()
    • +
    • h_s2_u_0_two_e_nstates_openmp_work_n_int()
    • +
    • hcore_guess()
    • +
    • heap_dsort()
    • +
    • heap_dsort_big()
    • +
    • heap_i2sort()
    • +
    • heap_i2sort_big()
    • +
    • heap_i8sort()
    • +
    • heap_i8sort_big()
    • +
    • heap_isort()
    • +
    • heap_isort_big()
    • +
    • heap_sort()
    • +
    • heap_sort_big()
    • +
    • hermite()
    • +
    • huckel_guess()
    • +
    • i2set_order()
    • +
    • i2set_order_big()
    • +
    • i2sort()
    • +
    • i8set_order()
    • +
    • i8set_order_big()
    • +
    • i8sort()
    • +
    • i_h_j()
    • +
    • i_h_j_double_alpha_beta()
    • +
    • i_h_j_double_spin()
    • +
    • i_h_j_mono_spin()
    • +
    • i_h_j_mono_spin_one_e()
    • +
    • i_h_j_one_e()
    • +
    • i_h_j_s2()
    • +
    • i_h_j_two_e()
    • +
    • i_h_j_verbose()
    • +
    • i_h_psi()
    • +
    • i_h_psi_minilist()
    • +
    • i_s2_psi_minilist()
    • +
    • i_wee_j_mono()
    • +
    • i_x1_pol_mult()
    • +
    • initialize_bitmask_to_restart_ones()
    • +
    • initialize_mo_coef_begin_iteration()
    • +
    • insert_into_ao_integrals_erf_map()
    • +
    • insert_into_ao_integrals_map()
    • +
    • insertion_dsort()
    • +
    • insertion_dsort_big()
    • +
    • insertion_i2sort()
    • +
    • insertion_i2sort_big()
    • +
    • insertion_i8sort()
    • +
    • insertion_i8sort_big()
    • +
    • insertion_isort()
    • +
    • insertion_isort_big()
    • +
    • insertion_sort()
    • +
    • insertion_sort_big()
    • +
    • int_gaus_pol()
    • +
    • integrale_new()
    • +
    • integrale_new_erf()
    • +
    • is_a_1h()
    • +
    • is_a_1h1p()
    • +
    • is_a_1h2p()
    • +
    • is_a_1p()
    • +
    • is_a_2h()
    • +
    • is_a_2h1p()
    • +
    • is_a_2p()
    • +
    • is_a_two_holes_two_particles()
    • +
    • is_connected_to()
    • +
    • is_connected_to_by_mono()
    • +
    • is_i_in_virtual()
    • +
    • is_in_wavefunction()
    • +
    • is_spin_flip_possible()
    • +
    • is_the_hole_in_det()
    • +
    • is_the_particl_in_det()
    • +
    • iset_order()
    • +
    • iset_order_big()
    • +
    • isort()
    • +
    • knowles_function()
    • +
    • ks_scf()
    • +
    • lapack_diag()
    • +
    • lapack_diagd()
    • +
    • list_to_bitstring()
    • +
    • load_ao_integrals()
    • +
    • load_ao_integrals_erf()
    • +
    • load_mo_integrals()
    • +
    • load_mo_integrals_erf()
    • +
    • logfact()
    • +
    • lowercase()
    • +
    • make_s2_eigenfunction()
    • +
    • make_selection_buffer_s2()
    • +
    • map_load_from_disk()
    • +
    • map_save_to_disk()
    • +
    • memory_of_double()
    • +
    • memory_of_int()
    • +
    • merge_selection_buffers()
    • +
    • mix_mo_jk()
    • +
    • mo_as_eigvectors_of_mo_matrix()
    • +
    • mo_as_svd_vectors_of_mo_matrix()
    • +
    • mo_as_svd_vectors_of_mo_matrix_eig()
    • +
    • mo_to_ao()
    • +
    • mo_to_ao_no_overlap()
    • +
    • mo_two_e_integral()
    • +
    • mo_two_e_integral_erf()
    • +
    • mo_two_e_integrals_erf_index()
    • +
    • mo_two_e_integrals_index()
    • +
    • modify_bitmasks_for_hole()
    • +
    • modify_bitmasks_for_hole_in_out()
    • +
    • modify_bitmasks_for_particl()
    • +
    • molden()
    • +
    • mono_excitation_wee()
    • +
    • mpi_print()
    • +
    • multiply_poly()
    • +
    • n_pt_sup()
    • +
    • nai_pol_mult()
    • +
    • nai_pol_mult_erf()
    • +
    • nai_pol_mult_erf_ao()
    • +
    • new_parallel_job()
    • +
    • new_zmq_pair_socket()
    • +
    • new_zmq_pull_socket()
    • +
    • new_zmq_push_socket()
    • +
    • new_zmq_sub_socket()
    • +
    • new_zmq_to_qp_run_socket()
    • +
    • normalize()
    • +
    • number_of_holes()
    • +
    • number_of_holes_verbose()
    • +
    • number_of_particles()
    • +
    • number_of_particles_verbose()
    • +
    • occ_pattern_of_det()
    • +
    • occ_pattern_search_key()
    • +
    • occ_pattern_to_dets()
    • +
    • occ_pattern_to_dets_size()
    • +
    • ortho_canonical()
    • +
    • ortho_lowdin()
    • +
    • ortho_qr()
    • +
    • ortho_qr_unblocked()
    • +
    • orthonormalize_mos()
    • +
    • overlap_bourrin_deriv_x()
    • +
    • overlap_bourrin_dipole()
    • +
    • overlap_bourrin_spread()
    • +
    • overlap_bourrin_x()
    • +
    • overlap_gaussian_x()
    • +
    • overlap_x_abs()
    • +
    • past_d1()
    • +
    • past_d2()
    • +
    • perturb_buffer_by_mono_dummy()
    • +
    • perturb_buffer_by_mono_epstein_nesbet()
    • +
    • perturb_buffer_by_mono_epstein_nesbet_2x2()
    • +
    • perturb_buffer_by_mono_epstein_nesbet_2x2_no_ci_diag()
    • +
    • perturb_buffer_by_mono_moller_plesset()
    • +
    • perturb_buffer_by_mono_qdpt()
    • +
    • perturb_buffer_dummy()
    • +
    • perturb_buffer_epstein_nesbet()
    • +
    • perturb_buffer_epstein_nesbet_2x2()
    • +
    • perturb_buffer_epstein_nesbet_2x2_no_ci_diag()
    • +
    • perturb_buffer_moller_plesset()
    • +
    • perturb_buffer_qdpt()
    • +
    • primitive_value()
    • +
    • print_det()
    • +
    • print_e_conv()
    • +
    • print_extrapolated_energy()
    • +
    • print_generators_bitmasks_holes()
    • +
    • print_generators_bitmasks_holes_for_one_generator()
    • +
    • print_generators_bitmasks_particles()
    • +
    • print_generators_bitmasks_particles_for_one_generator()
    • +
    • print_memory_usage()
    • +
    • print_spindet()
    • +
    • print_summary()
    • +
    • print_wf()
    • +
    • provide_all_mo_integrals_erf()
    • +
    • provide_everything()
    • +
    • pt2()
    • +
    • pt2_dummy()
    • +
    • pt2_epstein_nesbet()
    • +
    • pt2_epstein_nesbet_2x2()
    • +
    • pt2_epstein_nesbet_2x2_no_ci_diag()
    • +
    • pt2_find_sample()
    • +
    • pt2_find_sample_lr()
    • +
    • pt2_moller_plesset()
    • +
    • pt2_qdpt()
    • +
    • pt2_slave_inproc()
    • +
    • pull_pt2()
    • +
    • pull_pt2_results()
    • +
    • pull_selection_results()
    • +
    • push_integrals()
    • +
    • push_pt2()
    • +
    • push_pt2_results()
    • +
    • push_selection_results()
    • +
    • qp_stop()
    • +
    • qrpa()
    • +
    • qrpad()
    • +
    • qrpadd()
    • +
    • quick_dsort()
    • +
    • quick_i2sort()
    • +
    • quick_i8sort()
    • +
    • quick_isort()
    • +
    • quick_sort()
    • +
    • read_dets()
    • +
    • recentered_poly2()
    • +
    • remove_duplicates_in_psi_det()
    • +
    • remove_duplicates_in_selection_buffer()
    • +
    • remove_small_contributions()
    • +
    • reorder_core_orb()
    • +
    • reset_zmq_addresses()
    • +
    • resident_memory()
    • +
    • resize_h_apply_buffer()
    • +
    • rho_ab_to_rho_oc()
    • +
    • rho_oc_to_rho_ab()
    • +
    • rint()
    • +
    • rint1()
    • +
    • rint_large_n()
    • +
    • rint_sum()
    • +
    • rinteg()
    • +
    • rintgauss()
    • +
    • roothaan_hall_scf()
    • +
    • routine()
    • +
    • routine_e_conv()
    • +
    • routine_example_psi_det()
    • +
    • routine_save_one_e_dm()
    • +
    • rs_ks_scf()
    • +
    • run()
    • +
    • run_cipsi()
    • +
    • run_pt2_slave()
    • +
    • run_selection_slave()
    • +
    • run_slave_cipsi()
    • +
    • run_slave_main()
    • +
    • run_stochastic_cipsi()
    • +
    • s2_u_0()
    • +
    • s2_u_0_nstates()
    • +
    • sabpartial()
    • +
    • save_energy()
    • +
    • save_erf_two_e_integrals_ao()
    • +
    • save_erf_two_e_integrals_mo()
    • +
    • save_erf_two_e_ints_ao_into_ints_ao()
    • +
    • save_erf_two_e_ints_mo_into_ints_mo()
    • +
    • save_iterations()
    • +
    • save_mos()
    • +
    • save_mos_truncated()
    • +
    • save_natorb()
    • +
    • save_natural_mos()
    • +
    • save_one_e_dm()
    • +
    • save_ortho_mos()
    • +
    • save_ref_determinant()
    • +
    • save_wavefunction()
    • +
    • save_wavefunction_general()
    • +
    • save_wavefunction_specified()
    • +
    • save_wavefunction_truncated()
    • +
    • save_wavefunction_unsorted()
    • +
    • scf()
    • +
    • select_connected()
    • +
    • select_singles_and_doubles()
    • +
    • selection_collector()
    • +
    • selection_slave_inproc()
    • +
    • set_bit_to_integer()
    • +
    • set_bitmask_hole_as_input()
    • +
    • set_bitmask_particl_as_input()
    • +
    • set_natural_mos()
    • +
    • set_order()
    • +
    • set_order_big()
    • +
    • sort()
    • +
    • sort_dets_ab()
    • +
    • sort_dets_ab_v()
    • +
    • sort_dets_ba_v()
    • +
    • sort_dets_by_det_search_key()
    • +
    • sort_selection_buffer()
    • +
    • sorted_dnumber()
    • +
    • sorted_i2number()
    • +
    • sorted_i8number()
    • +
    • sorted_inumber()
    • +
    • sorted_number()
    • +
    • spin_det_search_key()
    • +
    • splash_pq()
    • +
    • spot_isinwf()
    • +
    • step_function_becke()
    • +
    • svd()
    • +
    • switch_qp_run_to_master()
    • +
    • tamiser()
    • +
    • task_done_to_taskserver()
    • +
    • tasks_done_to_taskserver()
    • +
    • testteethbuilding()
    • +
    • total_memory()
    • +
    • two_e_integrals_index()
    • +
    • two_e_integrals_index_reverse()
    • +
    • u_0_h_u_0()
    • +
    • u_0_h_u_0_two_e()
    • +
    • u_0_s2_u_0()
    • +
    • u_dot_u()
    • +
    • u_dot_v()
    • +
    • v_e_n()
    • +
    • v_grad_rho_oc_to_v_grad_rho_ab()
    • +
    • v_phi()
    • +
    • v_r()
    • +
    • v_rho_ab_to_v_rho_oc()
    • +
    • v_rho_oc_to_v_rho_ab()
    • +
    • v_theta()
    • +
    • vcorrlr()
    • +
    • wait_for_next_state()
    • +
    • wait_for_state()
    • +
    • wait_for_states()
    • +
    • wall_time()
    • +
    • wallis()
    • +
    • wf_of_psi_bilinear_matrix()
    • +
    • write_ao_basis()
    • +
    • write_bool()
    • +
    • write_double()
    • +
    • write_geometry()
    • +
    • write_git_log()
    • +
    • write_int()
    • +
    • write_integrals_erf()
    • +
    • write_intro_gamess()
    • +
    • write_mo_basis()
    • +
    • write_spindeterminants()
    • +
    • write_time()
    • +
    • zmq_abort()
    • +
    • zmq_delete_task()
    • +
    • zmq_delete_tasks()
    • +
    • zmq_delete_tasks_async_recv()
    • +
    • zmq_delete_tasks_async_send()
    • +
    • zmq_get8_dvector()
    • +
    • zmq_get8_ivector()
    • +
    • zmq_get_dmatrix()
    • +
    • zmq_get_dvector()
    • +
    • zmq_get_i8matrix()
    • +
    • zmq_get_imatrix()
    • +
    • zmq_get_int()
    • +
    • zmq_get_int_nompi()
    • +
    • zmq_get_ivector()
    • +
    • zmq_get_n_det()
    • +
    • zmq_get_n_det_alpha_unique()
    • +
    • zmq_get_n_det_beta_unique()
    • +
    • zmq_get_n_det_generators()
    • +
    • zmq_get_n_det_selectors()
    • +
    • zmq_get_n_states()
    • +
    • zmq_get_n_states_diag()
    • +
    • zmq_get_psi()
    • +
    • zmq_get_psi_bilinear()
    • +
    • zmq_get_psi_bilinear_matrix_columns()
    • +
    • zmq_get_psi_bilinear_matrix_order()
    • +
    • zmq_get_psi_bilinear_matrix_rows()
    • +
    • zmq_get_psi_bilinear_matrix_values()
    • +
    • zmq_get_psi_coef()
    • +
    • zmq_get_psi_det()
    • +
    • zmq_get_psi_det_alpha_unique()
    • +
    • zmq_get_psi_det_beta_unique()
    • +
    • zmq_get_psi_det_size()
    • +
    • zmq_get_psi_notouch()
    • +
    • zmq_port()
    • +
    • zmq_pt2()
    • +
    • zmq_put8_dvector()
    • +
    • zmq_put8_ivector()
    • +
    • zmq_put_dmatrix()
    • +
    • zmq_put_dvector()
    • +
    • zmq_put_i8matrix()
    • +
    • zmq_put_imatrix()
    • +
    • zmq_put_int()
    • +
    • zmq_put_ivector()
    • +
    • zmq_put_n_det()
    • +
    • zmq_put_n_det_alpha_unique()
    • +
    • zmq_put_n_det_beta_unique()
    • +
    • zmq_put_n_det_generators()
    • +
    • zmq_put_n_det_selectors()
    • +
    • zmq_put_n_states()
    • +
    • zmq_put_n_states_diag()
    • +
    • zmq_put_psi()
    • +
    • zmq_put_psi_bilinear()
    • +
    • zmq_put_psi_bilinear_matrix_columns()
    • +
    • zmq_put_psi_bilinear_matrix_order()
    • +
    • zmq_put_psi_bilinear_matrix_rows()
    • +
    • zmq_put_psi_bilinear_matrix_values()
    • +
    • zmq_put_psi_coef()
    • +
    • zmq_put_psi_det()
    • +
    • zmq_put_psi_det_alpha_unique()
    • +
    • zmq_put_psi_det_beta_unique()
    • +
    • zmq_put_psi_det_size()
    • +
    • zmq_selection()
    • +
    • zmq_set_running()
    • +
    +
    + + +
    + +
    +
    + + +
    + +
    +

    + © Copyright 2018, A. Scemama, E. Giner + +

    +
    + Built with Sphinx using a theme provided by Read the Docs. + +
    + +
    +
    + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/doc/programmers_guide/plugins.html b/doc/programmers_guide/plugins.html new file mode 100644 index 00000000..c85204dc --- /dev/null +++ b/doc/programmers_guide/plugins.html @@ -0,0 +1,270 @@ + + + + + + + + + + + Developing plugins — Quantum Package 2.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + +
    + + + + + +
    + +
    + + + + + + + + + + + + + + + + + +
    + + + + +
    +
    +
    +
    + +
    +

    Developing plugins

    +
    +

    Creating a repository of plugins

    +

    The purpose of $QP_ROOT/plugins is to contain local copies of +external repositories of plugins.

    +

    Create a repository, for example qp_plugins_user, hosted somewhere +(GitLab, GitHub, etc…), and clone the repository in the +$QP_ROOT/plugins directory.

    +
    +
    +

    Creating new plugins

    +

    To create a new plugin named 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
    +
    +
    +
    +
    + + +
    + +
    + + +
    +
    + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/doc/programmers_guide/programming.html b/doc/programmers_guide/programming.html new file mode 100644 index 00000000..9102556b --- /dev/null +++ b/doc/programmers_guide/programming.html @@ -0,0 +1,303 @@ + + + + + + + + + + + Programming in the Quantum Package — Quantum Package 2.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + +
    + + + + + +
    + +
    + + + + + + + + + + + + + + + + + +
    + + + + +
    +
    +
    +
    + +
    +

    Programming in the Quantum Package

    +

    To program in the Quantum Package, it is required that you are familiar with the IRPF90 +code generator. A GitBook can be found here, +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:

    +
    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 +hf_energy. A detailed list of all the providers, subroutines +and functions of the Quantum Package 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 Quantum Package 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 Quantum Package makes calculations reproducible.

    +
    +

    The computational part Quantum Package is organized in modules. A module is a +directory which contains multiple IRPF90 files, a README.rst and a NEED file.

    +

    The README.rst file contains documentation about the module, that is +automatically included in the documentation of the Quantum Package. The documentation is +generated by the Sphinx documentation builder, +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 ninja inside a module will compile only the +module, and running ninja at the root of the Quantum Package will build all the +modules, as well as the tools.

    +http://craniointernational.com/wp-content/uploads/2018/01/work-in-progress.jpg +
    +
    + + +
    + +
    + + +
    +
    + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/doc/programmers_guide/qp_name.html b/doc/programmers_guide/qp_name.html new file mode 100644 index 00000000..03fdb982 --- /dev/null +++ b/doc/programmers_guide/qp_name.html @@ -0,0 +1,331 @@ + + + + + + + + + + + qp_name — Quantum Package 2.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + +
    + + + + + +
    + +
    + + + + + + + + + + + + + + + + + +
    + + + + +
    +
    +
    +
    + +
    +

    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

    +
    qp_name <name> [-r <new_name> | --rename=<new_name>]
    +
    +
    +
    +
    +-h
    +

    Prints the help message.

    +
    + +
    +
    +-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.

    +
    +
    +
    + + +
    + +
    + + +
    +
    + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/doc/programmers_guide/qp_test.html b/doc/programmers_guide/qp_test.html new file mode 100644 index 00000000..ea40dae7 --- /dev/null +++ b/doc/programmers_guide/qp_test.html @@ -0,0 +1,331 @@ + + + + + + + + + + + qp_test — Quantum Package 2.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + +
    + + + + + +
    + +
    + + + + + + + + + + + + + + + + + +
    + + + + +
    +
    +
    +
    + +
    +

    qp_test

    +

    This command runs the consistency test of Quantum Package. +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

    +
    qp_test [FLAGS] [TEST]
    +Flags :
    +  [-a]          Run all the tests
    +  [-v]          Verbose mode: shows the output of the runs
    +
    +
    +
    +
    +-a
    +

    Runs all the tests. By default, run only the tests of the current +directory, and the directories below.

    +
    + +
    +
    +-v
    +

    Verbose mode. Print the output of the running executions of Quantum Package.

    +
    + +
    +
    + + +
    + +
    + + +
    +
    + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/doc/programs/cis.html b/doc/programs/cis.html new file mode 100644 index 00000000..0fe9e339 --- /dev/null +++ b/doc/programs/cis.html @@ -0,0 +1,330 @@ + + + + + + + + + + + cis — Quantum Package 2.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + +
    + + + + + +
    + +
    + + + + + + + + + + + + + + + + + +
    + + + + +
    +
    +
    +
    + +
    +

    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 determinants n_states)

    +

    This program can be useful in many cases:

    +

    To be sure to have the lowest SCF solution, perform an scf +(see the hartree_fock module), then a cis, save +the natural orbitals (see save_natorb) and re-run an +scf optimization from this MO guess.

    +

    The lowest excited states are much likely to be dominated by +single-excitations. Therefore, running a 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 determinants read_wf +is set to true before running the fci +executable.

    +

    If determinants s2_eig is set to true, the CIS +will only retain states having the expected \(\widehat{S^2}\) value (see +determinants expected_s2). Otherwise, the CIS will take +the lowest determinants n_states, whatever multiplicity +they are.

    +
    +

    Note

    +

    To discard some orbitals, use the 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:

    +
      +
    • read_wf
    • +
    +
      +
    +
      +
    +
    +

    Calls:

    +
      +
    • run()
    • +
    +
      +
    +
      +
    +
    +

    Touches:

    +
    + + +
    +
    +
    + + +
    + +
    + + +
    +
    + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/doc/programs/cisd.html b/doc/programs/cisd.html new file mode 100644 index 00000000..66bbefef --- /dev/null +++ b/doc/programs/cisd.html @@ -0,0 +1,332 @@ + + + + + + + + + + + cisd — Quantum Package 2.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + +
    + + + + + +
    + +
    + + + + + + + + + + + + + + + + + +
    + + + + +
    +
    +
    +
    + +
    +

    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 determinants n_states).

    +

    This program can be useful in many cases:

    +
      +
    • GROUND STATE CALCULATION: if even after a cis() calculation, natural +orbitals (see save_natorb()) and then scf() optimization, you are not sure to have the lowest scf +solution, +do the same strategy with the cisd() executable instead of the cis() exectuable to generate the natural +orbitals as a guess for the scf().

      +
    • +
    • EXCITED STATES CALCULATIONS: the lowest excited states are much likely to +be dominanted by single- or double-excitations. +Therefore, running a 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 determinants read_wf). +Also, if you specify “s2_eig” = True, the cisd will only retain states +having the good value \(S^2\) value +(see determinants expected_s2 and 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 +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:

    +
      +
    • read_wf
    • +
    +
      +
    +
      +
    +
    +

    Calls:

    +
      +
    • run()
    • +
    +
      +
    +
      +
    +
    +

    Touches:

    +
    + + +
    +
    +
    + + +
    + +
    + + +
    +
    + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/doc/programs/diagonalize_h.html b/doc/programs/diagonalize_h.html new file mode 100644 index 00000000..d68a3e02 --- /dev/null +++ b/doc/programs/diagonalize_h.html @@ -0,0 +1,296 @@ + + + + + + + + + + + diagonalize_h — Quantum Package 2.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + +
    + + + + + +
    + +
    + + + + + + + + + + + + + + + + + +
    + + + + +
    +
    +
    +
    + +
    +

    diagonalize_h

    +
    +

    Program that extracts the determinants n_states lowest states of the Hamiltonian within the set of Slater determinants stored in the EZFIO folder.

    +

    If determinants s2_eig = True, it will retain only states

    +

    which corresponds to the desired value of determinants expected_s2.

    +

    Needs:

    +
      +
    • read_wf
    • +
    +
      +
    +
      +
    +
    +

    Calls:

    +
      +
    • routine()
    • +
    +
      +
    +
      +
    +
    +

    Touches:

    +
      +
    • read_wf
    • +
    +
      +
    +
      +
    +
    +
    +
    + + +
    + +
    + + +
    +
    + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/doc/programs/fci.html b/doc/programs/fci.html new file mode 100644 index 00000000..c0f5d6a8 --- /dev/null +++ b/doc/programs/fci.html @@ -0,0 +1,347 @@ + + + + + + + + + + + fci — Quantum Package 2.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + +
    + + + + + +
    + +
    + + + + + + + + + + + + + + + + + +
    + + + + +
    +
    +
    +
    + +
    +

    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 determinants n_states). The +FCI program will stop when reaching at least one the two following +conditions:

    + +

    The following other options can be of interest:

    +
    +
    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).
    +
    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 \(\widehat{S^2}\) value corresponding to +determinants expected_s2.
    +
    +

    For excited states calculations, it is recommended to start with +.cis. or .cisd. guess wave functions, eventually in +a restricted set of MOs, and to set determinants s2_eig +to true.

    +

    Needs:

    +
    + + +
    +

    Calls:

    +
      +
    • run_cipsi()
    • +
    +
      +
    • run_slave_cipsi()
    • +
    +
      +
    • run_stochastic_cipsi()
    • +
    +
    +

    Touches:

    +
    + + +
    +
    +
    + + +
    + +
    + + +
    +
    + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/doc/programs/fcidump.html b/doc/programs/fcidump.html new file mode 100644 index 00000000..de4c34d2 --- /dev/null +++ b/doc/programs/fcidump.html @@ -0,0 +1,294 @@ + + + + + + + + + + + fcidump — Quantum Package 2.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + +
    + + + + + +
    + +
    + + + + + + + + + + + + + + + + + +
    + + + + +
    +
    +
    +
    + +
    +

    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 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:

    +
    + + +
    +
    +
    + + +
    + +
    + + +
    +
    + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/doc/programs/four_idx_transform.html b/doc/programs/four_idx_transform.html new file mode 100644 index 00000000..2d8cb618 --- /dev/null +++ b/doc/programs/four_idx_transform.html @@ -0,0 +1,288 @@ + + + + + + + + + + + four_idx_transform — Quantum Package 2.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + +
    + + + + + +
    + +
    + + + + + + + + + + + + + + + + + +
    + + + + +
    +
    +
    +
    + +
    +

    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:

    +
      +
    • io_mo_two_e_integrals
    • +
    +
    +
      +
    +
    +

    Touches:

    +
      +
    • io_mo_two_e_integrals
    • +
    +
      +
    +
      +
    +
    +
    +
    + + +
    + +
    + + +
    +
    + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/doc/programs/ks_scf.html b/doc/programs/ks_scf.html new file mode 100644 index 00000000..4bcd0dd3 --- /dev/null +++ b/doc/programs/ks_scf.html @@ -0,0 +1,313 @@ + + + + + + + + + + + ks_scf — Quantum Package 2.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + +
    + + + + + +
    + +
    + + + + + + + + + + + + + + + + + +
    + + + + +
    +
    +
    +
    + +
    +

    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:

    +
    +
      +
    • density_for_dft
    • +
    +
      +
    • io_ao_one_e_integrals
    • +
    +
    +

    Calls:

    +
      +
    • check_coherence_functional()
    • +
    • create_guess()
    • +
    +
      +
    • orthonormalize_mos()
    • +
    +
      +
    • run()
    • +
    +
    +

    Touches:

    +
    +
      +
    • mo_coef
    • +
    • density_for_dft
    • +
    • io_ao_one_e_integrals
    • +
    • io_mo_one_e_integrals
    • +
    +
    +
    +
    +
    + + +
    + +
    + + +
    +
    + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/doc/programs/molden.html b/doc/programs/molden.html new file mode 100644 index 00000000..0d41308a --- /dev/null +++ b/doc/programs/molden.html @@ -0,0 +1,288 @@ + + + + + + + + + + + molden — Quantum Package 2.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + +
    + + + + + +
    + +
    + + + + + + + + + + + + + + + + + +
    + + + + +
    +
    +
    +
    + +
    +

    molden

    +
    +

    Produce a Molden file

    +

    Needs:

    +
    +
      +
    +
      +
    +
    +

    Calls:

    +
      +
    • write_ao_basis()
    • +
    • write_geometry()
    • +
    +
      +
    • write_intro_gamess()
    • +
    +
      +
    • write_mo_basis()
    • +
    +
    +
    +
    + + +
    + +
    + + +
    +
    + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/doc/programs/print_e_conv.html b/doc/programs/print_e_conv.html new file mode 100644 index 00000000..17fdfa53 --- /dev/null +++ b/doc/programs/print_e_conv.html @@ -0,0 +1,290 @@ + + + + + + + + + + + print_e_conv — Quantum Package 2.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + +
    + + + + + +
    + +
    + + + + + + + + + + + + + + + + + +
    + + + + +
    +
    +
    +
    + + + + +
    + +
    + + +
    +
    + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/doc/programs/print_wf.html b/doc/programs/print_wf.html new file mode 100644 index 00000000..28a6c38e --- /dev/null +++ b/doc/programs/print_wf.html @@ -0,0 +1,297 @@ + + + + + + + + + + + print_wf — Quantum Package 2.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + +
    + + + + + +
    + +
    + + + + + + + + + + + + + + + + + +
    + + + + +
    +
    +
    +
    + + + + +
    + +
    + + +
    +
    + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/doc/programs/pt2.html b/doc/programs/pt2.html new file mode 100644 index 00000000..bcf09ebc --- /dev/null +++ b/doc/programs/pt2.html @@ -0,0 +1,312 @@ + + + + + + + + + + + pt2 — Quantum Package 2.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + +
    + + + + + +
    + +
    + + + + + + + + + + + + + + + + + +
    + + + + +
    +
    +
    +
    + +
    +

    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 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 perturbation pt2_relative_error)

    +

    Needs:

    +
    + +
      +
    • read_wf
    • +
    +
    +

    Calls:

    +
      +
    • run()
    • +
    +
      +
    • run_slave_cipsi()
    • +
    +
      +
    +
    +

    Touches:

    +
    + + +
    +
    +
    + + +
    + +
    + + +
    +
    + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/doc/programs/rs_ks_scf.html b/doc/programs/rs_ks_scf.html new file mode 100644 index 00000000..88aea6b2 --- /dev/null +++ b/doc/programs/rs_ks_scf.html @@ -0,0 +1,314 @@ + + + + + + + + + + + rs_ks_scf — Quantum Package 2.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + +
    + + + + + +
    + +
    + + + + + + + + + + + + + + + + + +
    + + + + +
    +
    +
    +
    + +
    +

    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:

    +
    +
      +
    • density_for_dft
    • +
    • io_ao_one_e_integrals
    • +
    +
      +
    • read_wf
    • +
    +
    +

    Calls:

    +
      +
    • check_coherence_functional()
    • +
    • create_guess()
    • +
    +
      +
    • orthonormalize_mos()
    • +
    +
      +
    • run()
    • +
    +
    +

    Touches:

    +
    +
      +
    • mo_coef
    • +
    • density_for_dft
    • +
    • io_ao_one_e_integrals
    • +
    • io_mo_one_e_integrals
    • +
    +
    +
    +
    +
    + + +
    + +
    + + +
    +
    + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/doc/programs/save_natorb.html b/doc/programs/save_natorb.html new file mode 100644 index 00000000..26d718a1 --- /dev/null +++ b/doc/programs/save_natorb.html @@ -0,0 +1,305 @@ + + + + + + + + + + + save_natorb — Quantum Package 2.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + +
    + + + + + +
    + +
    + + + + + + + + + + + + + + + + + +
    + + + + +
    +
    +
    +
    + +
    +

    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:

    +
      +
    • read_wf
    • +
    +
      +
    +
      +
    +
    +

    Calls:

    +
      +
    • ezfio_set_mo_one_e_ints_io_mo_integrals_e_n()
    • +
    • ezfio_set_mo_one_e_ints_io_mo_integrals_kinetic()
    • +
    • ezfio_set_mo_one_e_ints_io_mo_integrals_pseudo()
    • +
    +
      +
    • ezfio_set_mo_one_e_ints_io_mo_one_e_integrals()
    • +
    • ezfio_set_mo_two_e_ints_io_mo_two_e_integrals()
    • +
    +
      +
    • save_natural_mos()
    • +
    • save_ref_determinant()
    • +
    +
    +

    Touches:

    +
    +
      +
    • read_wf
    • +
    +
      +
    +
    +
    +
    + + +
    + +
    + + +
    +
    + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/doc/programs/save_one_e_dm.html b/doc/programs/save_one_e_dm.html new file mode 100644 index 00000000..ffc3902b --- /dev/null +++ b/doc/programs/save_one_e_dm.html @@ -0,0 +1,297 @@ + + + + + + + + + + + save_one_e_dm — Quantum Package 2.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + +
    + + + + + +
    + +
    + + + + + + + + + + + + + + + + + +
    + + + + +
    +
    +
    +
    + +
    +

    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:

    +
      +
    • read_wf
    • +
    +
      +
    +
      +
    +
    +

    Calls:

    +
      +
    • routine_save_one_e_dm()
    • +
    +
      +
    +
      +
    +
    +

    Touches:

    +
      +
    • read_wf
    • +
    +
      +
    +
      +
    +
    +
    +
    + + +
    + +
    + + +
    +
    + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/doc/programs/save_ortho_mos.html b/doc/programs/save_ortho_mos.html new file mode 100644 index 00000000..e02c8cfc --- /dev/null +++ b/doc/programs/save_ortho_mos.html @@ -0,0 +1,290 @@ + + + + + + + + + + + save_ortho_mos — Quantum Package 2.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + +
    + + + + + +
    + +
    + + + + + + + + + + + + + + + + + +
    + + + + +
    +
    +
    +
    + +
    +

    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 : \(MO_{new} = S^{-1/2} MO_{guess}\).

    +

    Thanks to the Lowdin orthonormalization, the new MOs are the most similar to the guess MOs.

    +

    Calls:

    +
      +
    • orthonormalize_mos()
    • +
    +
      +
    • save_mos()
    • +
    +
      +
    +
    +

    Touches:

    +
    + +
      +
    +
    +
    +
    + + +
    + +
    + + +
    +
    + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/doc/programs/scf.html b/doc/programs/scf.html new file mode 100644 index 00000000..774fc8ef --- /dev/null +++ b/doc/programs/scf.html @@ -0,0 +1,316 @@ + + + + + + + + + + + scf — Quantum Package 2.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + +
    + + + + + +
    + +
    + + + + + + + + + + + + + + + + + +
    + + + + +
    +
    +
    +
    + +
    +

    scf

    +
    +

    The 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:

    +
      +
    1. Compute/Read all the one- and two-electron integrals, and store them +in memory
    2. +
    3. 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.
    4. +
    5. Perform the SCF iterations
    6. +
    +

    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 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 +level_shift.

    +

    Calls:

    +
      +
    • create_guess()
    • +
    +
      +
    • orthonormalize_mos()
    • +
    +
      +
    • run()
    • +
    +
    +

    Touches:

    +
    + + +
    +
    +
    + + +
    + +
    + + +
    +
    + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/doc/programs/write_integrals_erf.html b/doc/programs/write_integrals_erf.html new file mode 100644 index 00000000..5d044581 --- /dev/null +++ b/doc/programs/write_integrals_erf.html @@ -0,0 +1,296 @@ + + + + + + + + + + + write_integrals_erf — Quantum Package 2.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + +
    + + + + + +
    + +
    + + + + + + + + + + + + + + + + + +
    + + + + +
    +
    +
    +
    + +
    +

    write_integrals_erf

    +
    +

    Saves the two-electron integrals with the \(erf(\mu r_{12})/r_{12}\) oprerator into the EZFIO folder

    +

    Needs:

    +
      +
    • io_mo_two_e_integrals
    • +
    +
      +
    • io_ao_two_e_integrals
    • +
    +
      +
    +
    +

    Calls:

    +
      +
    • routine()
    • +
    +
      +
    +
      +
    +
    +

    Touches:

    +
      +
    • io_ao_two_e_integrals
    • +
    +
      +
    • io_mo_two_e_integrals
    • +
    +
      +
    +
    +
    +
    + + +
    + +
    + + +
    +
    + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/doc/search.html b/doc/search.html new file mode 100644 index 00000000..57110cb6 --- /dev/null +++ b/doc/search.html @@ -0,0 +1,247 @@ + + + + + + + + + + + Search — Quantum Package 2.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + +
    + + + + + +
    + +
    + + + + + + + + + + + + + + + + + +
    + +
      + +
    • Docs »
    • + +
    • Search
    • + + +
    • + + + +
    • + +
    + + +
    +
    +
    +
    + + + + +
    + +
    + +
    + +
    +
    + + +
    + +
    +

    + © Copyright 2018, A. Scemama, E. Giner + +

    +
    + Built with Sphinx using a theme provided by Read the Docs. + +
    + +
    +
    + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/doc/searchindex.js b/doc/searchindex.js new file mode 100644 index 00000000..e3d14825 --- /dev/null +++ b/doc/searchindex.js @@ -0,0 +1 @@ +Search.setIndex({docnames:["appendix/benchmarks","appendix/contributors","appendix/license","appendix/research","index","intro/install","intro/intro","intro/selected_ci","modules/ao_basis","modules/ao_one_e_ints","modules/ao_two_e_erf_ints","modules/ao_two_e_ints","modules/aux_quantities","modules/becke_numerical_grid","modules/bitmask","modules/cipsi","modules/cis","modules/cisd","modules/davidson","modules/davidson_dressed","modules/davidson_undressed","modules/density_for_dft","modules/determinants","modules/dft_keywords","modules/dft_utils_in_r","modules/dft_utils_one_e","modules/dressing","modules/electrons","modules/ezfio_files","modules/fci","modules/generators_cas","modules/generators_full","modules/hartree_fock","modules/iterations","modules/kohn_sham","modules/kohn_sham_rs","modules/mo_basis","modules/mo_guess","modules/mo_one_e_ints","modules/mo_two_e_erf_ints","modules/mo_two_e_ints","modules/mpi","modules/nuclei","modules/perturbation","modules/pseudo","modules/psiref_cas","modules/psiref_utils","modules/scf_utils","modules/selectors_cassd","modules/selectors_full","modules/selectors_utils","modules/single_ref_method","modules/tools","modules/utils","modules/zmq","programmers_guide/conventions","programmers_guide/ezfio","programmers_guide/index","programmers_guide/index_providers","programmers_guide/plugins","programmers_guide/programming","programmers_guide/qp_name","programmers_guide/qp_test","programs/cis","programs/cisd","programs/diagonalize_h","programs/fci","programs/fcidump","programs/four_idx_transform","programs/ks_scf","programs/molden","programs/print_e_conv","programs/print_wf","programs/pt2","programs/rs_ks_scf","programs/save_natorb","programs/save_one_e_dm","programs/save_ortho_mos","programs/scf","programs/write_integrals_erf","users_guide/configure","users_guide/excited_states","users_guide/index","users_guide/interfaces","users_guide/natural_orbitals","users_guide/plugins","users_guide/printing","users_guide/qp_convert_output_to_ezfio","users_guide/qp_create_ezfio_from_xyz","users_guide/qp_edit","users_guide/qp_export_as_tgz","users_guide/qp_plugins","users_guide/qp_run","users_guide/qp_set_frozen_core","users_guide/qp_set_mo_class","users_guide/qp_stop","users_guide/qp_update","users_guide/qpsh","users_guide/quickstart","work"],envversion:{"sphinx.domains.c":1,"sphinx.domains.changeset":1,"sphinx.domains.cpp":1,"sphinx.domains.javascript":1,"sphinx.domains.math":1,"sphinx.domains.python":1,"sphinx.domains.rst":1,"sphinx.domains.std":1,sphinx:55},filenames:["appendix/benchmarks.rst","appendix/contributors.rst","appendix/license.rst","appendix/research.rst","index.rst","intro/install.rst","intro/intro.rst","intro/selected_ci.rst","modules/ao_basis.rst","modules/ao_one_e_ints.rst","modules/ao_two_e_erf_ints.rst","modules/ao_two_e_ints.rst","modules/aux_quantities.rst","modules/becke_numerical_grid.rst","modules/bitmask.rst","modules/cipsi.rst","modules/cis.rst","modules/cisd.rst","modules/davidson.rst","modules/davidson_dressed.rst","modules/davidson_undressed.rst","modules/density_for_dft.rst","modules/determinants.rst","modules/dft_keywords.rst","modules/dft_utils_in_r.rst","modules/dft_utils_one_e.rst","modules/dressing.rst","modules/electrons.rst","modules/ezfio_files.rst","modules/fci.rst","modules/generators_cas.rst","modules/generators_full.rst","modules/hartree_fock.rst","modules/iterations.rst","modules/kohn_sham.rst","modules/kohn_sham_rs.rst","modules/mo_basis.rst","modules/mo_guess.rst","modules/mo_one_e_ints.rst","modules/mo_two_e_erf_ints.rst","modules/mo_two_e_ints.rst","modules/mpi.rst","modules/nuclei.rst","modules/perturbation.rst","modules/pseudo.rst","modules/psiref_cas.rst","modules/psiref_utils.rst","modules/scf_utils.rst","modules/selectors_cassd.rst","modules/selectors_full.rst","modules/selectors_utils.rst","modules/single_ref_method.rst","modules/tools.rst","modules/utils.rst","modules/zmq.rst","programmers_guide/conventions.rst","programmers_guide/ezfio.rst","programmers_guide/index.rst","programmers_guide/index_providers.rst","programmers_guide/plugins.rst","programmers_guide/programming.rst","programmers_guide/qp_name.rst","programmers_guide/qp_test.rst","programs/cis.rst","programs/cisd.rst","programs/diagonalize_h.rst","programs/fci.rst","programs/fcidump.rst","programs/four_idx_transform.rst","programs/ks_scf.rst","programs/molden.rst","programs/print_e_conv.rst","programs/print_wf.rst","programs/pt2.rst","programs/rs_ks_scf.rst","programs/save_natorb.rst","programs/save_one_e_dm.rst","programs/save_ortho_mos.rst","programs/scf.rst","programs/write_integrals_erf.rst","users_guide/configure.rst","users_guide/excited_states.rst","users_guide/index.rst","users_guide/interfaces.rst","users_guide/natural_orbitals.rst","users_guide/plugins.rst","users_guide/printing.rst","users_guide/qp_convert_output_to_ezfio.rst","users_guide/qp_create_ezfio_from_xyz.rst","users_guide/qp_edit.rst","users_guide/qp_export_as_tgz.rst","users_guide/qp_plugins.rst","users_guide/qp_run.rst","users_guide/qp_set_frozen_core.rst","users_guide/qp_set_mo_class.rst","users_guide/qp_stop.rst","users_guide/qp_update.rst","users_guide/qpsh.rst","users_guide/quickstart.rst","work.rst"],objects:{"":{"[<provider_name>]":[56,2,1,"cmdoption-arg-provider-name"],"a_coef:":[53,0,1,"c.a_coef:"],"a_operator:":[22,0,1,"c.a_operator:"],"a_operator_two_e:":[22,0,1,"c.a_operator_two_e:"],"ac_operator:":[22,0,1,"c.ac_operator:"],"ac_operator_two_e:":[22,0,1,"c.ac_operator_two_e:"],"add_integrals_to_map:":[40,0,1,"c.add_integrals_to_map:"],"add_integrals_to_map_erf:":[39,0,1,"c.add_integrals_to_map_erf:"],"add_integrals_to_map_no_exit_34:":[40,0,1,"c.add_integrals_to_map_no_exit_34:"],"add_integrals_to_map_three_indices:":[40,0,1,"c.add_integrals_to_map_three_indices:"],"add_poly:":[53,0,1,"c.add_poly:"],"add_poly_multiply:":[53,0,1,"c.add_poly_multiply:"],"add_task_to_taskserver:":[54,0,1,"c.add_task_to_taskserver:"],"add_to_selection_buffer:":[15,0,1,"c.add_to_selection_buffer:"],"ao_l4:":[11,0,1,"c.ao_l4:"],"ao_ortho_cano_to_ao:":[36,0,1,"c.ao_ortho_cano_to_ao:"],"ao_power_index:":[8,0,1,"c.ao_power_index:"],"ao_to_mo:":[36,0,1,"c.ao_to_mo:"],"ao_two_e_integral:":[11,0,1,"c.ao_two_e_integral:"],"ao_two_e_integral_erf:":[10,0,1,"c.ao_two_e_integral_erf:"],"ao_two_e_integral_schwartz_accel:":[11,0,1,"c.ao_two_e_integral_schwartz_accel:"],"ao_two_e_integral_schwartz_accel_erf:":[10,0,1,"c.ao_two_e_integral_schwartz_accel_erf:"],"ao_two_e_integrals_erf_in_map_collector:":[10,0,1,"c.ao_two_e_integrals_erf_in_map_collector:"],"ao_two_e_integrals_erf_in_map_slave:":[10,0,1,"c.ao_two_e_integrals_erf_in_map_slave:"],"ao_two_e_integrals_erf_in_map_slave_inproc:":[10,0,1,"c.ao_two_e_integrals_erf_in_map_slave_inproc:"],"ao_two_e_integrals_erf_in_map_slave_tcp:":[10,0,1,"c.ao_two_e_integrals_erf_in_map_slave_tcp:"],"ao_two_e_integrals_in_map_collector:":[11,0,1,"c.ao_two_e_integrals_in_map_collector:"],"ao_two_e_integrals_in_map_slave:":[11,0,1,"c.ao_two_e_integrals_in_map_slave:"],"ao_two_e_integrals_in_map_slave_inproc:":[11,0,1,"c.ao_two_e_integrals_in_map_slave_inproc:"],"ao_two_e_integrals_in_map_slave_tcp:":[11,0,1,"c.ao_two_e_integrals_in_map_slave_tcp:"],"ao_value:":[8,0,1,"c.ao_value:"],"apply_excitation:":[22,0,1,"c.apply_excitation:"],"apply_hole:":[22,0,1,"c.apply_hole:"],"apply_holes:":[22,0,1,"c.apply_holes:"],"apply_particle:":[22,0,1,"c.apply_particle:"],"apply_particles:":[22,0,1,"c.apply_particles:"],"apply_rotation:":[53,0,1,"c.apply_rotation:"],"approx_dble:":[53,0,1,"c.approx_dble:"],"b_coef:":[53,0,1,"c.b_coef:"],"berf:":[25,0,1,"c.berf:"],"binom_func:":[53,0,1,"c.binom_func:"],"bitstring_to_hexa:":[14,0,1,"c.bitstring_to_hexa:"],"bitstring_to_list:":[14,0,1,"c.bitstring_to_list:"],"bitstring_to_list_ab:":[22,0,1,"c.bitstring_to_list_ab:"],"bitstring_to_list_in_selection:":[15,0,1,"c.bitstring_to_list_in_selection:"],"bitstring_to_str:":[14,0,1,"c.bitstring_to_str:"],"broadcast_chunks_bit_kind:":[14,0,1,"c.broadcast_chunks_bit_kind:"],"broadcast_chunks_double:":[41,0,1,"c.broadcast_chunks_double:"],"broadcast_chunks_integer8:":[41,0,1,"c.broadcast_chunks_integer8:"],"broadcast_chunks_integer:":[41,0,1,"c.broadcast_chunks_integer:"],"build_fock_tmp:":[22,0,1,"c.build_fock_tmp:"],"cell_function_becke:":[13,0,1,"c.cell_function_becke:"],"check_coherence_functional:":[35,0,1,"c.check_coherence_functional:"],"check_mem:":[53,0,1,"c.check_mem:"],"clear_ao_erf_map:":[10,0,1,"c.clear_ao_erf_map:"],"clear_ao_map:":[11,0,1,"c.clear_ao_map:"],"clear_bit_to_integer:":[14,0,1,"c.clear_bit_to_integer:"],"clear_mo_erf_map:":[39,0,1,"c.clear_mo_erf_map:"],"clear_mo_map:":[40,0,1,"c.clear_mo_map:"],"compute_ao_integrals_erf_jl:":[10,0,1,"c.compute_ao_integrals_erf_jl:"],"compute_ao_integrals_jl:":[11,0,1,"c.compute_ao_integrals_jl:"],"compute_ao_two_e_integrals:":[11,0,1,"c.compute_ao_two_e_integrals:"],"compute_ao_two_e_integrals_erf:":[10,0,1,"c.compute_ao_two_e_integrals_erf:"],"connect_to_taskserver:":[54,0,1,"c.connect_to_taskserver:"],"connected_to_ref:":[22,0,1,"c.connected_to_ref:"],"connected_to_ref_by_mono:":[22,0,1,"c.connected_to_ref_by_mono:"],"copy_h_apply_buffer_to_wf:":[22,0,1,"c.copy_h_apply_buffer_to_wf:"],"copy_psi_bilinear_to_psi:":[22,0,1,"c.copy_psi_bilinear_to_psi:"],"create_guess:":[32,0,1,"c.create_guess:"],"create_microlist:":[22,0,1,"c.create_microlist:"],"create_minilist:":[22,0,1,"c.create_minilist:"],"create_minilist_find_previous:":[22,0,1,"c.create_minilist_find_previous:"],"create_selection_buffer:":[15,0,1,"c.create_selection_buffer:"],"create_wf_of_psi_bilinear_matrix:":[22,0,1,"c.create_wf_of_psi_bilinear_matrix:"],"damping_scf:":[47,0,1,"c.damping_scf:"],"davidson_collector:":[18,0,1,"c.davidson_collector:"],"davidson_converged:":[18,0,1,"c.davidson_converged:"],"davidson_diag_hjj_sjj:":[18,0,1,"c.davidson_diag_hjj_sjj:"],"davidson_diag_hs2:":[18,0,1,"c.davidson_diag_hs2:"],"davidson_pull_results:":[18,0,1,"c.davidson_pull_results:"],"davidson_push_results:":[18,0,1,"c.davidson_push_results:"],"davidson_run_slave:":[18,0,1,"c.davidson_run_slave:"],"davidson_slave_inproc:":[18,0,1,"c.davidson_slave_inproc:"],"davidson_slave_tcp:":[18,0,1,"c.davidson_slave_tcp:"],"davidson_slave_work:":[18,0,1,"c.davidson_slave_work:"],"dberfda:":[25,0,1,"c.dberfda:"],"dble_fact:":[53,0,1,"c.dble_fact:"],"dble_fact_even:":[53,0,1,"c.dble_fact_even:"],"dble_fact_odd:":[53,0,1,"c.dble_fact_odd:"],"dble_logfact:":[53,0,1,"c.dble_logfact:"],"ddfact2:":[53,0,1,"c.ddfact2:"],"debug_det:":[14,0,1,"c.debug_det:"],"debug_spindet:":[14,0,1,"c.debug_spindet:"],"decode_exc:":[22,0,1,"c.decode_exc:"],"decode_exc_spin:":[22,0,1,"c.decode_exc_spin:"],"default:<str>":[56,2,1,"cmdoption-arg-default-str"],"delete_selection_buffer:":[15,0,1,"c.delete_selection_buffer:"],"density_and_grad_alpha_beta_and_all_aos_and_grad_aos_at_r:":[24,0,1,"c.density_and_grad_alpha_beta_and_all_aos_and_grad_aos_at_r:"],"derivative_knowles_function:":[13,0,1,"c.derivative_knowles_function:"],"det_inf:":[22,0,1,"c.det_inf:"],"det_search_key:":[22,0,1,"c.det_search_key:"],"detcmp:":[22,0,1,"c.detcmp:"],"deteq:":[22,0,1,"c.deteq:"],"diag_h_mat_elem:":[22,0,1,"c.diag_h_mat_elem:"],"diag_h_mat_elem_fock:":[22,0,1,"c.diag_h_mat_elem_fock:"],"diag_h_mat_elem_one_e:":[22,0,1,"c.diag_h_mat_elem_one_e:"],"diag_s_mat_elem:":[22,0,1,"c.diag_s_mat_elem:"],"diag_wee_mat_elem:":[22,0,1,"c.diag_wee_mat_elem:"],"diagonalize_ci:":[18,0,1,"c.diagonalize_ci:"],"disconnect_from_taskserver:":[54,0,1,"c.disconnect_from_taskserver:"],"disconnect_from_taskserver_state:":[54,0,1,"c.disconnect_from_taskserver_state:"],"dm_dft_alpha_beta_and_all_aos_at_r:":[24,0,1,"c.dm_dft_alpha_beta_and_all_aos_at_r:"],"dm_dft_alpha_beta_at_r:":[24,0,1,"c.dm_dft_alpha_beta_at_r:"],"do_mono_excitation:":[22,0,1,"c.do_mono_excitation:"],"doc:<str>":[56,2,1,"cmdoption-arg-doc-str"],"dpol:":[25,0,1,"c.dpol:"],"dpold:":[25,0,1,"c.dpold:"],"dpoldd:":[25,0,1,"c.dpoldd:"],"dset_order:":[53,0,1,"c.dset_order:"],"dset_order_big:":[53,0,1,"c.dset_order_big:"],"dsort:":[53,0,1,"c.dsort:"],"dtranspose:":[53,0,1,"c.dtranspose:"],"dump_ao_integrals:":[11,0,1,"c.dump_ao_integrals:"],"dump_ao_integrals_erf:":[10,0,1,"c.dump_ao_integrals_erf:"],"dump_mo_integrals:":[40,0,1,"c.dump_mo_integrals:"],"ec_lda:":[25,0,1,"c.ec_lda:"],"ec_lda_sr:":[25,0,1,"c.ec_lda_sr:"],"ec_only_lda_sr:":[25,0,1,"c.ec_only_lda_sr:"],"ec_pbe_only:":[25,0,1,"c.ec_pbe_only:"],"ec_pbe_sr:":[25,0,1,"c.ec_pbe_sr:"],"ecorrlr:":[25,0,1,"c.ecorrlr:"],"ecpw:":[25,0,1,"c.ecpw:"],"end_parallel_job:":[54,0,1,"c.end_parallel_job:"],"end_zmq_pair_socket:":[54,0,1,"c.end_zmq_pair_socket:"],"end_zmq_pull_socket:":[54,0,1,"c.end_zmq_pull_socket:"],"end_zmq_push_socket:":[54,0,1,"c.end_zmq_push_socket:"],"end_zmq_sub_socket:":[54,0,1,"c.end_zmq_sub_socket:"],"end_zmq_to_qp_run_socket:":[54,0,1,"c.end_zmq_to_qp_run_socket:"],"erf0:":[53,0,1,"c.erf0:"],"eri:":[11,0,1,"c.eri:"],"eri_erf:":[10,0,1,"c.eri_erf:"],"ex_lda:":[25,0,1,"c.ex_lda:"],"ex_lda_sr:":[25,0,1,"c.ex_lda_sr:"],"ex_pbe_sr:":[25,0,1,"c.ex_pbe_sr:"],"ex_pbe_sr_only:":[25,0,1,"c.ex_pbe_sr_only:"],"example_becke_numerical_grid:":[13,0,1,"c.example_becke_numerical_grid:"],"example_bitmask:":[14,0,1,"c.example_bitmask:"],"example_determinants:":[22,0,1,"c.example_determinants:"],"example_determinants_psi_det:":[22,0,1,"c.example_determinants_psi_det:"],"extrapolate_data:":[53,0,1,"c.extrapolate_data:"],"extrapolate_fock_matrix:":[47,0,1,"c.extrapolate_fock_matrix:"],"ezfio_name:<str>":[56,2,1,"cmdoption-arg-ezfio-name-str"],"f_function_becke:":[13,0,1,"c.f_function_becke:"],"f_integral:":[53,0,1,"c.f_integral:"],"fact:":[53,0,1,"c.fact:"],"fill_buffer_double:":[15,0,1,"c.fill_buffer_double:"],"fill_h_apply_buffer_no_selection:":[22,0,1,"c.fill_h_apply_buffer_no_selection:"],"fill_h_apply_buffer_selection:":[43,0,1,"c.fill_h_apply_buffer_selection:"],"filter_connected:":[22,0,1,"c.filter_connected:"],"filter_connected_i_h_psi0:":[22,0,1,"c.filter_connected_i_h_psi0:"],"filter_not_connected:":[22,0,1,"c.filter_not_connected:"],"find_rotation:":[53,0,1,"c.find_rotation:"],"g0d:":[25,0,1,"c.g0d:"],"g0dd:":[25,0,1,"c.g0dd:"],"g0f:":[25,0,1,"c.g0f:"],"gammln:":[53,0,1,"c.gammln:"],"gammp:":[53,0,1,"c.gammp:"],"gauleg:":[11,0,1,"c.gauleg:"],"gaussian_product:":[53,0,1,"c.gaussian_product:"],"gaussian_product_x:":[53,0,1,"c.gaussian_product_x:"],"gcf:":[53,0,1,"c.gcf:"],"general_primitive_integral:":[11,0,1,"c.general_primitive_integral:"],"general_primitive_integral_erf:":[10,0,1,"c.general_primitive_integral_erf:"],"generate_all_alpha_beta_det_products:":[22,0,1,"c.generate_all_alpha_beta_det_products:"],"get_all_spin_doubles:":[22,0,1,"c.get_all_spin_doubles:"],"get_all_spin_doubles_1:":[22,0,1,"c.get_all_spin_doubles_1:"],"get_all_spin_doubles_2:":[22,0,1,"c.get_all_spin_doubles_2:"],"get_all_spin_doubles_3:":[22,0,1,"c.get_all_spin_doubles_3:"],"get_all_spin_doubles_4:":[22,0,1,"c.get_all_spin_doubles_4:"],"get_all_spin_doubles_n_int:":[22,0,1,"c.get_all_spin_doubles_n_int:"],"get_all_spin_singles:":[22,0,1,"c.get_all_spin_singles:"],"get_all_spin_singles_1:":[22,0,1,"c.get_all_spin_singles_1:"],"get_all_spin_singles_2:":[22,0,1,"c.get_all_spin_singles_2:"],"get_all_spin_singles_3:":[22,0,1,"c.get_all_spin_singles_3:"],"get_all_spin_singles_4:":[22,0,1,"c.get_all_spin_singles_4:"],"get_all_spin_singles_and_doubles:":[22,0,1,"c.get_all_spin_singles_and_doubles:"],"get_all_spin_singles_and_doubles_1:":[22,0,1,"c.get_all_spin_singles_and_doubles_1:"],"get_all_spin_singles_and_doubles_2:":[22,0,1,"c.get_all_spin_singles_and_doubles_2:"],"get_all_spin_singles_and_doubles_3:":[22,0,1,"c.get_all_spin_singles_and_doubles_3:"],"get_all_spin_singles_and_doubles_4:":[22,0,1,"c.get_all_spin_singles_and_doubles_4:"],"get_all_spin_singles_and_doubles_n_int:":[22,0,1,"c.get_all_spin_singles_and_doubles_n_int:"],"get_all_spin_singles_n_int:":[22,0,1,"c.get_all_spin_singles_n_int:"],"get_ao_erf_map_size:":[10,0,1,"c.get_ao_erf_map_size:"],"get_ao_map_size:":[11,0,1,"c.get_ao_map_size:"],"get_ao_two_e_integral:":[11,0,1,"c.get_ao_two_e_integral:"],"get_ao_two_e_integral_erf:":[10,0,1,"c.get_ao_two_e_integral_erf:"],"get_ao_two_e_integrals:":[11,0,1,"c.get_ao_two_e_integrals:"],"get_ao_two_e_integrals_erf:":[10,0,1,"c.get_ao_two_e_integrals_erf:"],"get_ao_two_e_integrals_erf_non_zero:":[10,0,1,"c.get_ao_two_e_integrals_erf_non_zero:"],"get_ao_two_e_integrals_non_zero:":[11,0,1,"c.get_ao_two_e_integrals_non_zero:"],"get_d0:":[15,0,1,"c.get_d0:"],"get_d1:":[15,0,1,"c.get_d1:"],"get_d2:":[15,0,1,"c.get_d2:"],"get_double_excitation:":[22,0,1,"c.get_double_excitation:"],"get_double_excitation_spin:":[22,0,1,"c.get_double_excitation_spin:"],"get_excitation:":[22,0,1,"c.get_excitation:"],"get_excitation_degree:":[22,0,1,"c.get_excitation_degree:"],"get_excitation_degree_spin:":[22,0,1,"c.get_excitation_degree_spin:"],"get_excitation_degree_vector:":[22,0,1,"c.get_excitation_degree_vector:"],"get_excitation_degree_vector_double_alpha_beta:":[22,0,1,"c.get_excitation_degree_vector_double_alpha_beta:"],"get_excitation_degree_vector_mono:":[22,0,1,"c.get_excitation_degree_vector_mono:"],"get_excitation_degree_vector_mono_or_exchange:":[22,0,1,"c.get_excitation_degree_vector_mono_or_exchange:"],"get_excitation_degree_vector_mono_or_exchange_verbose:":[22,0,1,"c.get_excitation_degree_vector_mono_or_exchange_verbose:"],"get_excitation_spin:":[22,0,1,"c.get_excitation_spin:"],"get_index_in_psi_det_alpha_unique:":[22,0,1,"c.get_index_in_psi_det_alpha_unique:"],"get_index_in_psi_det_beta_unique:":[22,0,1,"c.get_index_in_psi_det_beta_unique:"],"get_index_in_psi_det_sorted_bit:":[22,0,1,"c.get_index_in_psi_det_sorted_bit:"],"get_inverse:":[53,0,1,"c.get_inverse:"],"get_mask_phase:":[15,0,1,"c.get_mask_phase:"],"get_mo_erf_map_size:":[39,0,1,"c.get_mo_erf_map_size:"],"get_mo_map_size:":[40,0,1,"c.get_mo_map_size:"],"get_mo_two_e_integral_erf:":[39,0,1,"c.get_mo_two_e_integral_erf:"],"get_mo_two_e_integrals:":[40,0,1,"c.get_mo_two_e_integrals:"],"get_mo_two_e_integrals_coulomb_ii:":[40,0,1,"c.get_mo_two_e_integrals_coulomb_ii:"],"get_mo_two_e_integrals_erf:":[39,0,1,"c.get_mo_two_e_integrals_erf:"],"get_mo_two_e_integrals_erf_coulomb_ii:":[39,0,1,"c.get_mo_two_e_integrals_erf_coulomb_ii:"],"get_mo_two_e_integrals_erf_exch_ii:":[39,0,1,"c.get_mo_two_e_integrals_erf_exch_ii:"],"get_mo_two_e_integrals_erf_i1j1:":[39,0,1,"c.get_mo_two_e_integrals_erf_i1j1:"],"get_mo_two_e_integrals_erf_ij:":[39,0,1,"c.get_mo_two_e_integrals_erf_ij:"],"get_mo_two_e_integrals_exch_ii:":[40,0,1,"c.get_mo_two_e_integrals_exch_ii:"],"get_mo_two_e_integrals_i1j1:":[40,0,1,"c.get_mo_two_e_integrals_i1j1:"],"get_mo_two_e_integrals_ij:":[40,0,1,"c.get_mo_two_e_integrals_ij:"],"get_mono_excitation:":[22,0,1,"c.get_mono_excitation:"],"get_mono_excitation_from_fock:":[22,0,1,"c.get_mono_excitation_from_fock:"],"get_mono_excitation_spin:":[22,0,1,"c.get_mono_excitation_spin:"],"get_occupation_from_dets:":[22,0,1,"c.get_occupation_from_dets:"],"get_phase:":[22,0,1,"c.get_phase:"],"get_phase_bi:":[15,0,1,"c.get_phase_bi:"],"get_phasemask_bit:":[22,0,1,"c.get_phasemask_bit:"],"get_pseudo_inverse:":[53,0,1,"c.get_pseudo_inverse:"],"get_s2:":[22,0,1,"c.get_s2:"],"get_task_from_taskserver:":[54,0,1,"c.get_task_from_taskserver:"],"get_tasks_from_taskserver:":[54,0,1,"c.get_tasks_from_taskserver:"],"get_two_e_integral:":[40,0,1,"c.get_two_e_integral:"],"get_uj_s2_ui:":[22,0,1,"c.get_uj_s2_ui:"],"getmobiles:":[22,0,1,"c.getmobiles:"],"getunitandopen:":[28,0,1,"c.getunitandopen:"],"gga_sr_type_functionals:":[25,0,1,"c.gga_sr_type_functionals:"],"gga_type_functionals:":[25,0,1,"c.gga_type_functionals:"],"give_all_aos_and_grad_and_lapl_at_r:":[8,0,1,"c.give_all_aos_and_grad_and_lapl_at_r:"],"give_all_aos_and_grad_at_r:":[8,0,1,"c.give_all_aos_and_grad_at_r:"],"give_all_aos_at_r:":[8,0,1,"c.give_all_aos_at_r:"],"give_all_aos_at_r_old:":[8,0,1,"c.give_all_aos_at_r_old:"],"give_all_erf_kl_ao:":[9,0,1,"c.give_all_erf_kl_ao:"],"give_all_mos_and_grad_and_lapl_at_r:":[36,0,1,"c.give_all_mos_and_grad_and_lapl_at_r:"],"give_all_mos_and_grad_at_r:":[36,0,1,"c.give_all_mos_and_grad_at_r:"],"give_all_mos_at_r:":[36,0,1,"c.give_all_mos_at_r:"],"give_explicit_poly_and_gaussian:":[53,0,1,"c.give_explicit_poly_and_gaussian:"],"give_explicit_poly_and_gaussian_double:":[53,0,1,"c.give_explicit_poly_and_gaussian_double:"],"give_explicit_poly_and_gaussian_x:":[53,0,1,"c.give_explicit_poly_and_gaussian_x:"],"give_polynom_mult_center_x:":[11,0,1,"c.give_polynom_mult_center_x:"],"give_polynomial_mult_center_one_e:":[9,0,1,"c.give_polynomial_mult_center_one_e:"],"give_polynomial_mult_center_one_e_erf:":[9,0,1,"c.give_polynomial_mult_center_one_e_erf:"],"give_polynomial_mult_center_one_e_erf_opt:":[9,0,1,"c.give_polynomial_mult_center_one_e_erf_opt:"],"gpw:":[25,0,1,"c.gpw:"],"grad_rho_ab_to_grad_rho_oc:":[25,0,1,"c.grad_rho_ab_to_grad_rho_oc:"],"gser:":[53,0,1,"c.gser:"],"h_apply_cis:":[16,0,1,"c.h_apply_cis:"],"h_apply_cis_diexc:":[16,0,1,"c.h_apply_cis_diexc:"],"h_apply_cis_diexcorg:":[16,0,1,"c.h_apply_cis_diexcorg:"],"h_apply_cis_diexcp:":[16,0,1,"c.h_apply_cis_diexcp:"],"h_apply_cis_monoexc:":[16,0,1,"c.h_apply_cis_monoexc:"],"h_apply_cisd:":[17,0,1,"c.h_apply_cisd:"],"h_apply_cisd_diexc:":[17,0,1,"c.h_apply_cisd_diexc:"],"h_apply_cisd_diexcorg:":[17,0,1,"c.h_apply_cisd_diexcorg:"],"h_apply_cisd_diexcp:":[17,0,1,"c.h_apply_cisd_diexcp:"],"h_apply_cisd_monoexc:":[17,0,1,"c.h_apply_cisd_monoexc:"],"h_s2_u_0_nstates_openmp:":[18,0,1,"c.h_s2_u_0_nstates_openmp:"],"h_s2_u_0_nstates_openmp_work:":[18,0,1,"c.h_s2_u_0_nstates_openmp_work:"],"h_s2_u_0_nstates_openmp_work_1:":[18,0,1,"c.h_s2_u_0_nstates_openmp_work_1:"],"h_s2_u_0_nstates_openmp_work_2:":[18,0,1,"c.h_s2_u_0_nstates_openmp_work_2:"],"h_s2_u_0_nstates_openmp_work_3:":[18,0,1,"c.h_s2_u_0_nstates_openmp_work_3:"],"h_s2_u_0_nstates_openmp_work_4:":[18,0,1,"c.h_s2_u_0_nstates_openmp_work_4:"],"h_s2_u_0_nstates_openmp_work_n_int:":[18,0,1,"c.h_s2_u_0_nstates_openmp_work_n_int:"],"h_s2_u_0_nstates_zmq:":[18,0,1,"c.h_s2_u_0_nstates_zmq:"],"h_s2_u_0_two_e_nstates_openmp:":[18,0,1,"c.h_s2_u_0_two_e_nstates_openmp:"],"h_s2_u_0_two_e_nstates_openmp_work:":[18,0,1,"c.h_s2_u_0_two_e_nstates_openmp_work:"],"h_s2_u_0_two_e_nstates_openmp_work_1:":[18,0,1,"c.h_s2_u_0_two_e_nstates_openmp_work_1:"],"h_s2_u_0_two_e_nstates_openmp_work_2:":[18,0,1,"c.h_s2_u_0_two_e_nstates_openmp_work_2:"],"h_s2_u_0_two_e_nstates_openmp_work_3:":[18,0,1,"c.h_s2_u_0_two_e_nstates_openmp_work_3:"],"h_s2_u_0_two_e_nstates_openmp_work_4:":[18,0,1,"c.h_s2_u_0_two_e_nstates_openmp_work_4:"],"h_s2_u_0_two_e_nstates_openmp_work_n_int:":[18,0,1,"c.h_s2_u_0_two_e_nstates_openmp_work_n_int:"],"hcore_guess:":[37,0,1,"c.hcore_guess:"],"heap_dsort:":[53,0,1,"c.heap_dsort:"],"heap_dsort_big:":[53,0,1,"c.heap_dsort_big:"],"heap_i2sort:":[53,0,1,"c.heap_i2sort:"],"heap_i2sort_big:":[53,0,1,"c.heap_i2sort_big:"],"heap_i8sort:":[53,0,1,"c.heap_i8sort:"],"heap_i8sort_big:":[53,0,1,"c.heap_i8sort_big:"],"heap_isort:":[53,0,1,"c.heap_isort:"],"heap_isort_big:":[53,0,1,"c.heap_isort_big:"],"heap_sort:":[53,0,1,"c.heap_sort:"],"heap_sort_big:":[53,0,1,"c.heap_sort_big:"],"hermite:":[53,0,1,"c.hermite:"],"huckel_guess:":[47,0,1,"c.huckel_guess:"],"i2radix_sort:":[53,0,1,"c.i2radix_sort:"],"i2set_order:":[53,0,1,"c.i2set_order:"],"i2set_order_big:":[53,0,1,"c.i2set_order_big:"],"i2sort:":[53,0,1,"c.i2sort:"],"i8radix_sort:":[53,0,1,"c.i8radix_sort:"],"i8radix_sort_big:":[53,0,1,"c.i8radix_sort_big:"],"i8set_order:":[53,0,1,"c.i8set_order:"],"i8set_order_big:":[53,0,1,"c.i8set_order_big:"],"i8sort:":[53,0,1,"c.i8sort:"],"i_h_j:":[22,0,1,"c.i_h_j:"],"i_h_j_double_alpha_beta:":[22,0,1,"c.i_h_j_double_alpha_beta:"],"i_h_j_double_spin:":[22,0,1,"c.i_h_j_double_spin:"],"i_h_j_mono_spin:":[22,0,1,"c.i_h_j_mono_spin:"],"i_h_j_mono_spin_one_e:":[22,0,1,"c.i_h_j_mono_spin_one_e:"],"i_h_j_one_e:":[22,0,1,"c.i_h_j_one_e:"],"i_h_j_s2:":[22,0,1,"c.i_h_j_s2:"],"i_h_j_two_e:":[22,0,1,"c.i_h_j_two_e:"],"i_h_j_verbose:":[22,0,1,"c.i_h_j_verbose:"],"i_h_psi:":[22,0,1,"c.i_h_psi:"],"i_h_psi_minilist:":[22,0,1,"c.i_h_psi_minilist:"],"i_s2_psi_minilist:":[22,0,1,"c.i_s2_psi_minilist:"],"i_wee_j_mono:":[22,0,1,"c.i_wee_j_mono:"],"i_x1_new:":[11,0,1,"c.i_x1_new:"],"i_x1_pol_mult:":[11,0,1,"c.i_x1_pol_mult:"],"i_x1_pol_mult_a1:":[11,0,1,"c.i_x1_pol_mult_a1:"],"i_x1_pol_mult_a2:":[11,0,1,"c.i_x1_pol_mult_a2:"],"i_x1_pol_mult_one_e:":[9,0,1,"c.i_x1_pol_mult_one_e:"],"i_x1_pol_mult_recurs:":[11,0,1,"c.i_x1_pol_mult_recurs:"],"i_x2_new:":[11,0,1,"c.i_x2_new:"],"i_x2_pol_mult:":[11,0,1,"c.i_x2_pol_mult:"],"i_x2_pol_mult_one_e:":[9,0,1,"c.i_x2_pol_mult_one_e:"],"initialize_bitmask_to_restart_ones:":[14,0,1,"c.initialize_bitmask_to_restart_ones:"],"initialize_mo_coef_begin_iteration:":[36,0,1,"c.initialize_mo_coef_begin_iteration:"],"insert_into_ao_integrals_erf_map:":[10,0,1,"c.insert_into_ao_integrals_erf_map:"],"insert_into_ao_integrals_map:":[11,0,1,"c.insert_into_ao_integrals_map:"],"insert_into_mo_integrals_erf_map:":[39,0,1,"c.insert_into_mo_integrals_erf_map:"],"insert_into_mo_integrals_map:":[40,0,1,"c.insert_into_mo_integrals_map:"],"insertion_dsort:":[53,0,1,"c.insertion_dsort:"],"insertion_dsort_big:":[53,0,1,"c.insertion_dsort_big:"],"insertion_i2sort:":[53,0,1,"c.insertion_i2sort:"],"insertion_i2sort_big:":[53,0,1,"c.insertion_i2sort_big:"],"insertion_i8sort:":[53,0,1,"c.insertion_i8sort:"],"insertion_i8sort_big:":[53,0,1,"c.insertion_i8sort_big:"],"insertion_isort:":[53,0,1,"c.insertion_isort:"],"insertion_isort_big:":[53,0,1,"c.insertion_isort_big:"],"insertion_sort:":[53,0,1,"c.insertion_sort:"],"insertion_sort_big:":[53,0,1,"c.insertion_sort_big:"],"int_gaus_pol:":[9,0,1,"c.int_gaus_pol:"],"integrale_new:":[11,0,1,"c.integrale_new:"],"integrale_new_erf:":[10,0,1,"c.integrale_new_erf:"],"interface:<str>":[56,2,1,"cmdoption-arg-interface-str"],"iradix_sort:":[53,0,1,"c.iradix_sort:"],"iradix_sort_big:":[53,0,1,"c.iradix_sort_big:"],"is_a_1h1p:":[14,0,1,"c.is_a_1h1p:"],"is_a_1h2p:":[14,0,1,"c.is_a_1h2p:"],"is_a_1h:":[14,0,1,"c.is_a_1h:"],"is_a_1p:":[14,0,1,"c.is_a_1p:"],"is_a_2h1p:":[14,0,1,"c.is_a_2h1p:"],"is_a_2h:":[14,0,1,"c.is_a_2h:"],"is_a_2p:":[14,0,1,"c.is_a_2p:"],"is_a_two_holes_two_particles:":[14,0,1,"c.is_a_two_holes_two_particles:"],"is_connected_to:":[22,0,1,"c.is_connected_to:"],"is_connected_to_by_mono:":[22,0,1,"c.is_connected_to_by_mono:"],"is_i_in_virtual:":[14,0,1,"c.is_i_in_virtual:"],"is_in_wavefunction:":[22,0,1,"c.is_in_wavefunction:"],"is_spin_flip_possible:":[22,0,1,"c.is_spin_flip_possible:"],"is_the_hole_in_det:":[14,0,1,"c.is_the_hole_in_det:"],"is_the_particl_in_det:":[14,0,1,"c.is_the_particl_in_det:"],"iset_order:":[53,0,1,"c.iset_order:"],"iset_order_big:":[53,0,1,"c.iset_order_big:"],"isort:":[53,0,1,"c.isort:"],"knowles_function:":[13,0,1,"c.knowles_function:"],"lapack_diag:":[53,0,1,"c.lapack_diag:"],"lapack_diagd:":[53,0,1,"c.lapack_diagd:"],"list_to_bitstring:":[14,0,1,"c.list_to_bitstring:"],"load_ao_integrals:":[11,0,1,"c.load_ao_integrals:"],"load_ao_integrals_erf:":[10,0,1,"c.load_ao_integrals_erf:"],"load_mo_integrals:":[40,0,1,"c.load_mo_integrals:"],"load_mo_integrals_erf:":[39,0,1,"c.load_mo_integrals_erf:"],"logfact:":[53,0,1,"c.logfact:"],"lowercase:":[53,0,1,"c.lowercase:"],"make_s2_eigenfunction:":[22,0,1,"c.make_s2_eigenfunction:"],"make_selection_buffer_s2:":[15,0,1,"c.make_selection_buffer_s2:"],"map_load_from_disk:":[53,0,1,"c.map_load_from_disk:"],"map_save_to_disk:":[53,0,1,"c.map_save_to_disk:"],"memory_of_double:":[53,0,1,"c.memory_of_double:"],"memory_of_int:":[53,0,1,"c.memory_of_int:"],"merge_selection_buffers:":[15,0,1,"c.merge_selection_buffers:"],"mix_mo_jk:":[36,0,1,"c.mix_mo_jk:"],"mo_as_eigvectors_of_mo_matrix:":[36,0,1,"c.mo_as_eigvectors_of_mo_matrix:"],"mo_as_svd_vectors_of_mo_matrix:":[36,0,1,"c.mo_as_svd_vectors_of_mo_matrix:"],"mo_as_svd_vectors_of_mo_matrix_eig:":[36,0,1,"c.mo_as_svd_vectors_of_mo_matrix_eig:"],"mo_to_ao:":[38,0,1,"c.mo_to_ao:"],"mo_to_ao_no_overlap:":[38,0,1,"c.mo_to_ao_no_overlap:"],"mo_two_e_integral:":[40,0,1,"c.mo_two_e_integral:"],"mo_two_e_integral_erf:":[39,0,1,"c.mo_two_e_integral_erf:"],"mo_two_e_integrals_erf_index:":[39,0,1,"c.mo_two_e_integrals_erf_index:"],"mo_two_e_integrals_index:":[40,0,1,"c.mo_two_e_integrals_index:"],"modify_bitmasks_for_hole:":[14,0,1,"c.modify_bitmasks_for_hole:"],"modify_bitmasks_for_hole_in_out:":[14,0,1,"c.modify_bitmasks_for_hole_in_out:"],"modify_bitmasks_for_particl:":[14,0,1,"c.modify_bitmasks_for_particl:"],"mono_excitation_wee:":[22,0,1,"c.mono_excitation_wee:"],"mpi_print:":[41,0,1,"c.mpi_print:"],"multiply_poly:":[53,0,1,"c.multiply_poly:"],"n_pt_sup:":[11,0,1,"c.n_pt_sup:"],"nai_pol_mult:":[9,0,1,"c.nai_pol_mult:"],"nai_pol_mult_erf:":[9,0,1,"c.nai_pol_mult_erf:"],"nai_pol_mult_erf_ao:":[9,0,1,"c.nai_pol_mult_erf_ao:"],"new_parallel_job:":[54,0,1,"c.new_parallel_job:"],"new_zmq_pair_socket:":[54,0,1,"c.new_zmq_pair_socket:"],"new_zmq_pull_socket:":[54,0,1,"c.new_zmq_pull_socket:"],"new_zmq_push_socket:":[54,0,1,"c.new_zmq_push_socket:"],"new_zmq_sub_socket:":[54,0,1,"c.new_zmq_sub_socket:"],"new_zmq_to_qp_run_socket:":[54,0,1,"c.new_zmq_to_qp_run_socket:"],"normalize:":[53,0,1,"c.normalize:"],"number_of_holes:":[14,0,1,"c.number_of_holes:"],"number_of_holes_verbose:":[14,0,1,"c.number_of_holes_verbose:"],"number_of_particles:":[14,0,1,"c.number_of_particles:"],"number_of_particles_verbose:":[14,0,1,"c.number_of_particles_verbose:"],"occ_pattern_of_det:":[22,0,1,"c.occ_pattern_of_det:"],"occ_pattern_search_key:":[22,0,1,"c.occ_pattern_search_key:"],"occ_pattern_to_dets:":[22,0,1,"c.occ_pattern_to_dets:"],"occ_pattern_to_dets_size:":[22,0,1,"c.occ_pattern_to_dets_size:"],"ortho_canonical:":[53,0,1,"c.ortho_canonical:"],"ortho_lowdin:":[53,0,1,"c.ortho_lowdin:"],"ortho_qr:":[53,0,1,"c.ortho_qr:"],"ortho_qr_unblocked:":[53,0,1,"c.ortho_qr_unblocked:"],"orthonormalize_mos:":[38,0,1,"c.orthonormalize_mos:"],"overlap_bourrin_deriv_x:":[9,0,1,"c.overlap_bourrin_deriv_x:"],"overlap_bourrin_dipole:":[9,0,1,"c.overlap_bourrin_dipole:"],"overlap_bourrin_spread:":[9,0,1,"c.overlap_bourrin_spread:"],"overlap_bourrin_x:":[9,0,1,"c.overlap_bourrin_x:"],"overlap_gaussian_x:":[53,0,1,"c.overlap_gaussian_x:"],"overlap_gaussian_xyz:":[53,0,1,"c.overlap_gaussian_xyz:"],"overlap_x_abs:":[53,0,1,"c.overlap_x_abs:"],"past_d1:":[15,0,1,"c.past_d1:"],"past_d2:":[15,0,1,"c.past_d2:"],"perturb_buffer_by_mono_dummy:":[43,0,1,"c.perturb_buffer_by_mono_dummy:"],"perturb_buffer_by_mono_epstein_nesbet:":[43,0,1,"c.perturb_buffer_by_mono_epstein_nesbet:"],"perturb_buffer_by_mono_epstein_nesbet_2x2:":[43,0,1,"c.perturb_buffer_by_mono_epstein_nesbet_2x2:"],"perturb_buffer_by_mono_epstein_nesbet_2x2_no_ci_diag:":[43,0,1,"c.perturb_buffer_by_mono_epstein_nesbet_2x2_no_ci_diag:"],"perturb_buffer_by_mono_moller_plesset:":[43,0,1,"c.perturb_buffer_by_mono_moller_plesset:"],"perturb_buffer_by_mono_qdpt:":[43,0,1,"c.perturb_buffer_by_mono_qdpt:"],"perturb_buffer_dummy:":[43,0,1,"c.perturb_buffer_dummy:"],"perturb_buffer_epstein_nesbet:":[43,0,1,"c.perturb_buffer_epstein_nesbet:"],"perturb_buffer_epstein_nesbet_2x2:":[43,0,1,"c.perturb_buffer_epstein_nesbet_2x2:"],"perturb_buffer_epstein_nesbet_2x2_no_ci_diag:":[43,0,1,"c.perturb_buffer_epstein_nesbet_2x2_no_ci_diag:"],"perturb_buffer_moller_plesset:":[43,0,1,"c.perturb_buffer_moller_plesset:"],"perturb_buffer_qdpt:":[43,0,1,"c.perturb_buffer_qdpt:"],"primitive_value:":[8,0,1,"c.primitive_value:"],"print_det:":[14,0,1,"c.print_det:"],"print_extrapolated_energy:":[33,0,1,"c.print_extrapolated_energy:"],"print_generators_bitmasks_holes:":[14,0,1,"c.print_generators_bitmasks_holes:"],"print_generators_bitmasks_holes_for_one_generator:":[14,0,1,"c.print_generators_bitmasks_holes_for_one_generator:"],"print_generators_bitmasks_particles:":[14,0,1,"c.print_generators_bitmasks_particles:"],"print_generators_bitmasks_particles_for_one_generator:":[14,0,1,"c.print_generators_bitmasks_particles_for_one_generator:"],"print_memory_usage:":[53,0,1,"c.print_memory_usage:"],"print_spindet:":[14,0,1,"c.print_spindet:"],"print_summary:":[33,0,1,"c.print_summary:"],"provide_all_mo_integrals_erf:":[39,0,1,"c.provide_all_mo_integrals_erf:"],"provide_everything:":[15,0,1,"c.provide_everything:"],"pt2_collector:":[15,0,1,"c.pt2_collector:"],"pt2_dummy:":[43,0,1,"c.pt2_dummy:"],"pt2_epstein_nesbet:":[43,0,1,"c.pt2_epstein_nesbet:"],"pt2_epstein_nesbet_2x2:":[43,0,1,"c.pt2_epstein_nesbet_2x2:"],"pt2_epstein_nesbet_2x2_no_ci_diag:":[43,0,1,"c.pt2_epstein_nesbet_2x2_no_ci_diag:"],"pt2_find_sample:":[15,0,1,"c.pt2_find_sample:"],"pt2_find_sample_lr:":[15,0,1,"c.pt2_find_sample_lr:"],"pt2_moller_plesset:":[43,0,1,"c.pt2_moller_plesset:"],"pt2_qdpt:":[43,0,1,"c.pt2_qdpt:"],"pt2_slave_inproc:":[15,0,1,"c.pt2_slave_inproc:"],"pull_pt2:":[22,0,1,"c.pull_pt2:"],"pull_pt2_results:":[15,0,1,"c.pull_pt2_results:"],"pull_selection_results:":[15,0,1,"c.pull_selection_results:"],"push_integrals:":[11,0,1,"c.push_integrals:"],"push_pt2:":[22,0,1,"c.push_pt2:"],"push_pt2_results:":[15,0,1,"c.push_pt2_results:"],"push_selection_results:":[15,0,1,"c.push_selection_results:"],"qp_stop:":[28,0,1,"c.qp_stop:"],"qrpa:":[25,0,1,"c.qrpa:"],"qrpad:":[25,0,1,"c.qrpad:"],"qrpadd:":[25,0,1,"c.qrpadd:"],"quick_dsort:":[53,0,1,"c.quick_dsort:"],"quick_i2sort:":[53,0,1,"c.quick_i2sort:"],"quick_i8sort:":[53,0,1,"c.quick_i8sort:"],"quick_isort:":[53,0,1,"c.quick_isort:"],"quick_sort:":[53,0,1,"c.quick_sort:"],"read_dets:":[22,0,1,"c.read_dets:"],"rec__quicksort:":[53,0,1,"c.rec__quicksort:"],"rec_d_quicksort:":[53,0,1,"c.rec_d_quicksort:"],"rec_i2_quicksort:":[53,0,1,"c.rec_i2_quicksort:"],"rec_i8_quicksort:":[53,0,1,"c.rec_i8_quicksort:"],"rec_i_quicksort:":[53,0,1,"c.rec_i_quicksort:"],"recentered_poly2:":[53,0,1,"c.recentered_poly2:"],"remove_duplicates_in_psi_det:":[22,0,1,"c.remove_duplicates_in_psi_det:"],"remove_duplicates_in_selection_buffer:":[15,0,1,"c.remove_duplicates_in_selection_buffer:"],"remove_small_contributions:":[43,0,1,"c.remove_small_contributions:"],"reorder_core_orb:":[36,0,1,"c.reorder_core_orb:"],"reset_zmq_addresses:":[54,0,1,"c.reset_zmq_addresses:"],"resident_memory:":[53,0,1,"c.resident_memory:"],"resize_h_apply_buffer:":[22,0,1,"c.resize_h_apply_buffer:"],"rho_ab_to_rho_oc:":[25,0,1,"c.rho_ab_to_rho_oc:"],"rho_oc_to_rho_ab:":[25,0,1,"c.rho_oc_to_rho_ab:"],"rint1:":[53,0,1,"c.rint1:"],"rint:":[53,0,1,"c.rint:"],"rint_large_n:":[53,0,1,"c.rint_large_n:"],"rint_sum:":[53,0,1,"c.rint_sum:"],"rinteg:":[53,0,1,"c.rinteg:"],"rintgauss:":[53,0,1,"c.rintgauss:"],"roothaan_hall_scf:":[47,0,1,"c.roothaan_hall_scf:"],"routine:":[52,0,1,"c.routine:"],"routine_e_conv:":[52,0,1,"c.routine_e_conv:"],"routine_example_psi_det:":[22,0,1,"c.routine_example_psi_det:"],"routine_save_one_e_dm:":[52,0,1,"c.routine_save_one_e_dm:"],"run:":[32,0,1,"c.run:"],"run_cipsi:":[15,0,1,"c.run_cipsi:"],"run_pt2_slave:":[15,0,1,"c.run_pt2_slave:"],"run_selection_slave:":[15,0,1,"c.run_selection_slave:"],"run_slave_cipsi:":[15,0,1,"c.run_slave_cipsi:"],"run_slave_main:":[15,0,1,"c.run_slave_main:"],"run_stochastic_cipsi:":[15,0,1,"c.run_stochastic_cipsi:"],"s2_u_0:":[22,0,1,"c.s2_u_0:"],"s2_u_0_nstates:":[22,0,1,"c.s2_u_0_nstates:"],"sabpartial:":[53,0,1,"c.sabpartial:"],"save_energy:":[29,0,1,"c.save_energy:"],"save_erf_two_e_integrals_ao:":[10,0,1,"c.save_erf_two_e_integrals_ao:"],"save_erf_two_e_integrals_mo:":[39,0,1,"c.save_erf_two_e_integrals_mo:"],"save_erf_two_e_ints_ao_into_ints_ao:":[10,0,1,"c.save_erf_two_e_ints_ao_into_ints_ao:"],"save_erf_two_e_ints_mo_into_ints_mo:":[39,0,1,"c.save_erf_two_e_ints_mo_into_ints_mo:"],"save_iterations:":[33,0,1,"c.save_iterations:"],"save_mos:":[36,0,1,"c.save_mos:"],"save_mos_truncated:":[36,0,1,"c.save_mos_truncated:"],"save_natural_mos:":[22,0,1,"c.save_natural_mos:"],"save_ref_determinant:":[22,0,1,"c.save_ref_determinant:"],"save_wavefunction:":[22,0,1,"c.save_wavefunction:"],"save_wavefunction_general:":[22,0,1,"c.save_wavefunction_general:"],"save_wavefunction_specified:":[22,0,1,"c.save_wavefunction_specified:"],"save_wavefunction_truncated:":[22,0,1,"c.save_wavefunction_truncated:"],"save_wavefunction_unsorted:":[22,0,1,"c.save_wavefunction_unsorted:"],"select_connected:":[15,0,1,"c.select_connected:"],"select_singles_and_doubles:":[15,0,1,"c.select_singles_and_doubles:"],"selection_collector:":[15,0,1,"c.selection_collector:"],"selection_slave_inproc:":[15,0,1,"c.selection_slave_inproc:"],"set_bit_to_integer:":[14,0,1,"c.set_bit_to_integer:"],"set_bitmask_hole_as_input:":[14,0,1,"c.set_bitmask_hole_as_input:"],"set_bitmask_particl_as_input:":[14,0,1,"c.set_bitmask_particl_as_input:"],"set_natural_mos:":[22,0,1,"c.set_natural_mos:"],"set_order:":[53,0,1,"c.set_order:"],"set_order_big:":[53,0,1,"c.set_order_big:"],"size:<str>":[56,2,1,"cmdoption-arg-size-str"],"sort:":[53,0,1,"c.sort:"],"sort_dets_ab:":[22,0,1,"c.sort_dets_ab:"],"sort_dets_ab_v:":[22,0,1,"c.sort_dets_ab_v:"],"sort_dets_ba_v:":[22,0,1,"c.sort_dets_ba_v:"],"sort_dets_by_det_search_key:":[22,0,1,"c.sort_dets_by_det_search_key:"],"sort_selection_buffer:":[15,0,1,"c.sort_selection_buffer:"],"sorted_dnumber:":[53,0,1,"c.sorted_dnumber:"],"sorted_i2number:":[53,0,1,"c.sorted_i2number:"],"sorted_i8number:":[53,0,1,"c.sorted_i8number:"],"sorted_inumber:":[53,0,1,"c.sorted_inumber:"],"sorted_number:":[53,0,1,"c.sorted_number:"],"spin_det_search_key:":[22,0,1,"c.spin_det_search_key:"],"splash_pq:":[15,0,1,"c.splash_pq:"],"spot_isinwf:":[15,0,1,"c.spot_isinwf:"],"step_function_becke:":[13,0,1,"c.step_function_becke:"],"svd:":[53,0,1,"c.svd:"],"switch_qp_run_to_master:":[54,0,1,"c.switch_qp_run_to_master:"],"tamiser:":[22,0,1,"c.tamiser:"],"task_done_to_taskserver:":[54,0,1,"c.task_done_to_taskserver:"],"tasks_done_to_taskserver:":[54,0,1,"c.tasks_done_to_taskserver:"],"testteethbuilding:":[15,0,1,"c.testteethbuilding:"],"total_memory:":[53,0,1,"c.total_memory:"],"transpose:":[53,0,1,"c.transpose:"],"two_e_integrals_index:":[11,0,1,"c.two_e_integrals_index:"],"two_e_integrals_index_reverse:":[11,0,1,"c.two_e_integrals_index_reverse:"],"type:<str>":[56,2,1,"cmdoption-arg-type-str"],"u_0_h_u_0:":[18,0,1,"c.u_0_h_u_0:"],"u_0_h_u_0_two_e:":[18,0,1,"c.u_0_h_u_0_two_e:"],"u_0_s2_u_0:":[22,0,1,"c.u_0_s2_u_0:"],"u_dot_u:":[53,0,1,"c.u_dot_u:"],"u_dot_v:":[53,0,1,"c.u_dot_v:"],"v_e_n:":[9,0,1,"c.v_e_n:"],"v_grad_rho_oc_to_v_grad_rho_ab:":[25,0,1,"c.v_grad_rho_oc_to_v_grad_rho_ab:"],"v_phi:":[9,0,1,"c.v_phi:"],"v_r:":[9,0,1,"c.v_r:"],"v_rho_ab_to_v_rho_oc:":[25,0,1,"c.v_rho_ab_to_v_rho_oc:"],"v_rho_oc_to_v_rho_ab:":[25,0,1,"c.v_rho_oc_to_v_rho_ab:"],"v_theta:":[9,0,1,"c.v_theta:"],"vcorrlr:":[25,0,1,"c.vcorrlr:"],"wait_for_next_state:":[54,0,1,"c.wait_for_next_state:"],"wait_for_state:":[54,0,1,"c.wait_for_state:"],"wait_for_states:":[54,0,1,"c.wait_for_states:"],"wall_time:":[53,0,1,"c.wall_time:"],"wallis:":[9,0,1,"c.wallis:"],"wf_of_psi_bilinear_matrix:":[22,0,1,"c.wf_of_psi_bilinear_matrix:"],"write_ao_basis:":[52,0,1,"c.write_ao_basis:"],"write_bool:":[28,0,1,"c.write_bool:"],"write_double:":[28,0,1,"c.write_double:"],"write_geometry:":[52,0,1,"c.write_geometry:"],"write_git_log:":[53,0,1,"c.write_git_log:"],"write_int:":[28,0,1,"c.write_int:"],"write_intro_gamess:":[52,0,1,"c.write_intro_gamess:"],"write_mo_basis:":[52,0,1,"c.write_mo_basis:"],"write_spindeterminants:":[22,0,1,"c.write_spindeterminants:"],"write_time:":[28,0,1,"c.write_time:"],"zmq_abort:":[54,0,1,"c.zmq_abort:"],"zmq_delete_task:":[54,0,1,"c.zmq_delete_task:"],"zmq_delete_tasks:":[54,0,1,"c.zmq_delete_tasks:"],"zmq_delete_tasks_async_recv:":[54,0,1,"c.zmq_delete_tasks_async_recv:"],"zmq_delete_tasks_async_send:":[54,0,1,"c.zmq_delete_tasks_async_send:"],"zmq_get8_dvector:":[54,0,1,"c.zmq_get8_dvector:"],"zmq_get8_ivector:":[54,0,1,"c.zmq_get8_ivector:"],"zmq_get_dmatrix:":[54,0,1,"c.zmq_get_dmatrix:"],"zmq_get_dvector:":[54,0,1,"c.zmq_get_dvector:"],"zmq_get_i8matrix:":[54,0,1,"c.zmq_get_i8matrix:"],"zmq_get_imatrix:":[54,0,1,"c.zmq_get_imatrix:"],"zmq_get_int:":[54,0,1,"c.zmq_get_int:"],"zmq_get_int_nompi:":[54,0,1,"c.zmq_get_int_nompi:"],"zmq_get_ivector:":[54,0,1,"c.zmq_get_ivector:"],"zmq_get_n_det:":[22,0,1,"c.zmq_get_n_det:"],"zmq_get_n_det_alpha_unique:":[22,0,1,"c.zmq_get_n_det_alpha_unique:"],"zmq_get_n_det_beta_unique:":[22,0,1,"c.zmq_get_n_det_beta_unique:"],"zmq_get_n_det_generators:":[50,0,1,"c.zmq_get_n_det_generators:"],"zmq_get_n_det_selectors:":[50,0,1,"c.zmq_get_n_det_selectors:"],"zmq_get_n_states:":[22,0,1,"c.zmq_get_n_states:"],"zmq_get_n_states_diag:":[18,0,1,"c.zmq_get_n_states_diag:"],"zmq_get_psi:":[22,0,1,"c.zmq_get_psi:"],"zmq_get_psi_bilinear:":[22,0,1,"c.zmq_get_psi_bilinear:"],"zmq_get_psi_bilinear_matrix_columns:":[22,0,1,"c.zmq_get_psi_bilinear_matrix_columns:"],"zmq_get_psi_bilinear_matrix_order:":[22,0,1,"c.zmq_get_psi_bilinear_matrix_order:"],"zmq_get_psi_bilinear_matrix_rows:":[22,0,1,"c.zmq_get_psi_bilinear_matrix_rows:"],"zmq_get_psi_bilinear_matrix_values:":[22,0,1,"c.zmq_get_psi_bilinear_matrix_values:"],"zmq_get_psi_coef:":[22,0,1,"c.zmq_get_psi_coef:"],"zmq_get_psi_det:":[22,0,1,"c.zmq_get_psi_det:"],"zmq_get_psi_det_alpha_unique:":[22,0,1,"c.zmq_get_psi_det_alpha_unique:"],"zmq_get_psi_det_beta_unique:":[22,0,1,"c.zmq_get_psi_det_beta_unique:"],"zmq_get_psi_det_size:":[22,0,1,"c.zmq_get_psi_det_size:"],"zmq_get_psi_notouch:":[22,0,1,"c.zmq_get_psi_notouch:"],"zmq_port:":[54,0,1,"c.zmq_port:"],"zmq_pt2:":[15,0,1,"c.zmq_pt2:"],"zmq_put8_dvector:":[54,0,1,"c.zmq_put8_dvector:"],"zmq_put8_ivector:":[54,0,1,"c.zmq_put8_ivector:"],"zmq_put_dmatrix:":[54,0,1,"c.zmq_put_dmatrix:"],"zmq_put_dvector:":[54,0,1,"c.zmq_put_dvector:"],"zmq_put_i8matrix:":[54,0,1,"c.zmq_put_i8matrix:"],"zmq_put_imatrix:":[54,0,1,"c.zmq_put_imatrix:"],"zmq_put_int:":[54,0,1,"c.zmq_put_int:"],"zmq_put_ivector:":[54,0,1,"c.zmq_put_ivector:"],"zmq_put_n_det:":[22,0,1,"c.zmq_put_n_det:"],"zmq_put_n_det_alpha_unique:":[22,0,1,"c.zmq_put_n_det_alpha_unique:"],"zmq_put_n_det_beta_unique:":[22,0,1,"c.zmq_put_n_det_beta_unique:"],"zmq_put_n_det_generators:":[50,0,1,"c.zmq_put_n_det_generators:"],"zmq_put_n_det_selectors:":[50,0,1,"c.zmq_put_n_det_selectors:"],"zmq_put_n_states:":[22,0,1,"c.zmq_put_n_states:"],"zmq_put_n_states_diag:":[18,0,1,"c.zmq_put_n_states_diag:"],"zmq_put_psi:":[22,0,1,"c.zmq_put_psi:"],"zmq_put_psi_bilinear:":[22,0,1,"c.zmq_put_psi_bilinear:"],"zmq_put_psi_bilinear_matrix_columns:":[22,0,1,"c.zmq_put_psi_bilinear_matrix_columns:"],"zmq_put_psi_bilinear_matrix_order:":[22,0,1,"c.zmq_put_psi_bilinear_matrix_order:"],"zmq_put_psi_bilinear_matrix_rows:":[22,0,1,"c.zmq_put_psi_bilinear_matrix_rows:"],"zmq_put_psi_bilinear_matrix_values:":[22,0,1,"c.zmq_put_psi_bilinear_matrix_values:"],"zmq_put_psi_coef:":[22,0,1,"c.zmq_put_psi_coef:"],"zmq_put_psi_det:":[22,0,1,"c.zmq_put_psi_det:"],"zmq_put_psi_det_alpha_unique:":[22,0,1,"c.zmq_put_psi_det_alpha_unique:"],"zmq_put_psi_det_beta_unique:":[22,0,1,"c.zmq_put_psi_det_beta_unique:"],"zmq_put_psi_det_size:":[22,0,1,"c.zmq_put_psi_det_size:"],"zmq_selection:":[15,0,1,"c.zmq_selection:"],"zmq_set_running:":[54,0,1,"c.zmq_set_running:"],abs_psi_coef_max:[22,1,1,"c.abs_psi_coef_max"],abs_psi_coef_min:[22,1,1,"c.abs_psi_coef_min"],act_bitmask:[14,1,1,"c.act_bitmask"],alpha_knowles:[13,1,1,"c.alpha_knowles"],angular_quadrature_points:[13,1,1,"c.angular_quadrature_points"],ao_cart_to_sphe_coef:[9,1,1,"c.ao_cart_to_sphe_coef"],ao_cart_to_sphe_inv:[9,1,1,"c.ao_cart_to_sphe_inv"],ao_cart_to_sphe_num:[9,1,1,"c.ao_cart_to_sphe_num"],ao_cart_to_sphe_overlap:[9,1,1,"c.ao_cart_to_sphe_overlap"],ao_coef_normalization_factor:[8,1,1,"c.ao_coef_normalization_factor"],ao_coef_normalization_libint_factor:[8,1,1,"c.ao_coef_normalization_libint_factor"],ao_coef_normalized:[8,1,1,"c.ao_coef_normalized"],ao_coef_normalized_ordered:[8,1,1,"c.ao_coef_normalized_ordered"],ao_coef_normalized_ordered_transp:[8,1,1,"c.ao_coef_normalized_ordered_transp"],ao_coef_normalized_ordered_transp_per_nucl:[8,1,1,"c.ao_coef_normalized_ordered_transp_per_nucl"],ao_deriv2_x:[9,1,1,"c.ao_deriv2_x"],ao_deriv2_y:[9,1,1,"c.ao_deriv2_y"],ao_deriv2_z:[9,1,1,"c.ao_deriv2_z"],ao_deriv_1_x:[9,1,1,"c.ao_deriv_1_x"],ao_deriv_1_y:[9,1,1,"c.ao_deriv_1_y"],ao_deriv_1_z:[9,1,1,"c.ao_deriv_1_z"],ao_dipole_x:[9,1,1,"c.ao_dipole_x"],ao_dipole_y:[9,1,1,"c.ao_dipole_y"],ao_dipole_z:[9,1,1,"c.ao_dipole_z"],ao_effective_one_e_potential:[25,1,1,"c.ao_effective_one_e_potential"],ao_effective_one_e_potential_without_kin:[25,1,1,"c.ao_effective_one_e_potential_without_kin"],ao_expo_ordered:[8,1,1,"c.ao_expo_ordered"],ao_expo_ordered_transp:[8,1,1,"c.ao_expo_ordered_transp"],ao_expo_ordered_transp_per_nucl:[8,1,1,"c.ao_expo_ordered_transp_per_nucl"],ao_integrals_cache:[11,1,1,"c.ao_integrals_cache"],ao_integrals_cache_max:[11,1,1,"c.ao_integrals_cache_max"],ao_integrals_cache_min:[11,1,1,"c.ao_integrals_cache_min"],ao_integrals_erf_cache:[10,1,1,"c.ao_integrals_erf_cache"],ao_integrals_erf_cache_max:[10,1,1,"c.ao_integrals_erf_cache_max"],ao_integrals_erf_cache_min:[10,1,1,"c.ao_integrals_erf_cache_min"],ao_integrals_erf_map:[10,1,1,"c.ao_integrals_erf_map"],ao_integrals_map:[11,1,1,"c.ao_integrals_map"],ao_integrals_n_e:[9,1,1,"c.ao_integrals_n_e"],ao_integrals_n_e_per_atom:[9,1,1,"c.ao_integrals_n_e_per_atom"],ao_kinetic_integrals:[9,1,1,"c.ao_kinetic_integrals"],ao_l:[8,1,1,"c.ao_l"],ao_l_char:[8,1,1,"c.ao_l_char"],ao_l_char_space:[8,1,1,"c.ao_l_char_space"],ao_l_max:[8,1,1,"c.ao_l_max"],ao_one_e_integrals:[9,1,1,"c.ao_one_e_integrals"],ao_one_e_integrals_diag:[9,1,1,"c.ao_one_e_integrals_diag"],ao_ortho_canonical_coef:[9,1,1,"c.ao_ortho_canonical_coef"],ao_ortho_canonical_coef_inv:[9,1,1,"c.ao_ortho_canonical_coef_inv"],ao_ortho_canonical_nucl_elec_integrals:[37,1,1,"c.ao_ortho_canonical_nucl_elec_integrals"],ao_ortho_canonical_num:[9,1,1,"c.ao_ortho_canonical_num"],ao_ortho_canonical_overlap:[9,1,1,"c.ao_ortho_canonical_overlap"],ao_ortho_lowdin_coef:[37,1,1,"c.ao_ortho_lowdin_coef"],ao_ortho_lowdin_nucl_elec_integrals:[37,1,1,"c.ao_ortho_lowdin_nucl_elec_integrals"],ao_ortho_lowdin_overlap:[37,1,1,"c.ao_ortho_lowdin_overlap"],ao_overlap:[9,1,1,"c.ao_overlap"],ao_overlap_abs:[9,1,1,"c.ao_overlap_abs"],ao_overlap_x:[9,1,1,"c.ao_overlap_x"],ao_overlap_y:[9,1,1,"c.ao_overlap_y"],ao_overlap_z:[9,1,1,"c.ao_overlap_z"],ao_potential_alpha_xc:[35,1,1,"c.ao_potential_alpha_xc"],ao_potential_beta_xc:[35,1,1,"c.ao_potential_beta_xc"],ao_power_ordered_transp_per_nucl:[8,1,1,"c.ao_power_ordered_transp_per_nucl"],ao_prim_num_max:[8,1,1,"c.ao_prim_num_max"],ao_pseudo_integrals:[9,1,1,"c.ao_pseudo_integrals"],ao_pseudo_integrals_local:[9,1,1,"c.ao_pseudo_integrals_local"],ao_pseudo_integrals_non_local:[9,1,1,"c.ao_pseudo_integrals_non_local"],ao_spread_x:[9,1,1,"c.ao_spread_x"],ao_spread_y:[9,1,1,"c.ao_spread_y"],ao_spread_z:[9,1,1,"c.ao_spread_z"],ao_two_e_integral_alpha:[32,1,1,"c.ao_two_e_integral_alpha"],ao_two_e_integral_beta:[32,1,1,"c.ao_two_e_integral_beta"],ao_two_e_integral_erf_schwartz:[10,1,1,"c.ao_two_e_integral_erf_schwartz"],ao_two_e_integral_schwartz:[11,1,1,"c.ao_two_e_integral_schwartz"],ao_two_e_integrals_erf_in_map:[10,1,1,"c.ao_two_e_integrals_erf_in_map"],ao_two_e_integrals_in_map:[11,1,1,"c.ao_two_e_integrals_in_map"],aos_dsr_vc_alpha_pbe_w:[25,1,1,"c.aos_dsr_vc_alpha_pbe_w"],aos_dsr_vc_beta_pbe_w:[25,1,1,"c.aos_dsr_vc_beta_pbe_w"],aos_dsr_vx_alpha_pbe_w:[25,1,1,"c.aos_dsr_vx_alpha_pbe_w"],aos_dsr_vx_beta_pbe_w:[25,1,1,"c.aos_dsr_vx_beta_pbe_w"],aos_dvc_alpha_pbe_w:[25,1,1,"c.aos_dvc_alpha_pbe_w"],aos_dvc_beta_pbe_w:[25,1,1,"c.aos_dvc_beta_pbe_w"],aos_dvx_alpha_pbe_w:[25,1,1,"c.aos_dvx_alpha_pbe_w"],aos_dvx_beta_pbe_w:[25,1,1,"c.aos_dvx_beta_pbe_w"],aos_grad_in_r_array:[24,1,1,"c.aos_grad_in_r_array"],aos_grad_in_r_array_transp:[24,1,1,"c.aos_grad_in_r_array_transp"],aos_grad_in_r_array_transp_xyz:[24,1,1,"c.aos_grad_in_r_array_transp_xyz"],aos_in_r_array:[24,1,1,"c.aos_in_r_array"],aos_in_r_array_transp:[24,1,1,"c.aos_in_r_array_transp"],aos_lapl_in_r_array:[24,1,1,"c.aos_lapl_in_r_array"],aos_lapl_in_r_array_transp:[24,1,1,"c.aos_lapl_in_r_array_transp"],aos_sr_vc_alpha_lda_w:[25,1,1,"c.aos_sr_vc_alpha_lda_w"],aos_sr_vc_alpha_pbe_w:[25,1,1,"c.aos_sr_vc_alpha_pbe_w"],aos_sr_vc_beta_lda_w:[25,1,1,"c.aos_sr_vc_beta_lda_w"],aos_sr_vc_beta_pbe_w:[25,1,1,"c.aos_sr_vc_beta_pbe_w"],aos_sr_vx_alpha_lda_w:[25,1,1,"c.aos_sr_vx_alpha_lda_w"],aos_sr_vx_alpha_pbe_w:[25,1,1,"c.aos_sr_vx_alpha_pbe_w"],aos_sr_vx_beta_lda_w:[25,1,1,"c.aos_sr_vx_beta_lda_w"],aos_sr_vx_beta_pbe_w:[25,1,1,"c.aos_sr_vx_beta_pbe_w"],aos_vc_alpha_lda_w:[25,1,1,"c.aos_vc_alpha_lda_w"],aos_vc_alpha_pbe_w:[25,1,1,"c.aos_vc_alpha_pbe_w"],aos_vc_beta_lda_w:[25,1,1,"c.aos_vc_beta_lda_w"],aos_vc_beta_pbe_w:[25,1,1,"c.aos_vc_beta_pbe_w"],aos_vx_alpha_lda_w:[25,1,1,"c.aos_vx_alpha_lda_w"],aos_vx_alpha_pbe_w:[25,1,1,"c.aos_vx_alpha_pbe_w"],aos_vx_beta_lda_w:[25,1,1,"c.aos_vx_beta_lda_w"],aos_vx_beta_pbe_w:[25,1,1,"c.aos_vx_beta_pbe_w"],barycentric_electronic_energy:[22,1,1,"c.barycentric_electronic_energy"],big_array_coulomb_integrals:[40,1,1,"c.big_array_coulomb_integrals"],big_array_exchange_integrals:[40,1,1,"c.big_array_exchange_integrals"],binom:[53,1,1,"c.binom"],binom_int:[53,1,1,"c.binom_int"],binom_int_transp:[53,1,1,"c.binom_int_transp"],binom_transp:[53,1,1,"c.binom_transp"],c0_weight:[22,1,1,"c.c0_weight"],cart_to_sphe_0:[8,1,1,"c.cart_to_sphe_0"],cart_to_sphe_1:[8,1,1,"c.cart_to_sphe_1"],cart_to_sphe_2:[8,1,1,"c.cart_to_sphe_2"],cart_to_sphe_3:[8,1,1,"c.cart_to_sphe_3"],cart_to_sphe_4:[8,1,1,"c.cart_to_sphe_4"],cart_to_sphe_5:[8,1,1,"c.cart_to_sphe_5"],cart_to_sphe_6:[8,1,1,"c.cart_to_sphe_6"],cart_to_sphe_7:[8,1,1,"c.cart_to_sphe_7"],cart_to_sphe_8:[8,1,1,"c.cart_to_sphe_8"],cart_to_sphe_9:[8,1,1,"c.cart_to_sphe_9"],cas_bitmask:[14,1,1,"c.cas_bitmask"],center_of_mass:[42,1,1,"c.center_of_mass"],ci_eigenvectors:[18,1,1,"c.ci_eigenvectors"],ci_electronic_energy:[18,1,1,"c.ci_electronic_energy"],ci_energy:[18,1,1,"c.ci_energy"],ci_s2:[18,1,1,"c.ci_s2"],closed_shell_ref_bitmask:[14,1,1,"c.closed_shell_ref_bitmask"],coef_hf_selector:[50,1,1,"c.coef_hf_selector"],core_bitmask:[14,1,1,"c.core_bitmask"],core_energy:[40,1,1,"c.core_energy"],core_energy_erf:[39,1,1,"c.core_energy_erf"],core_fock_operator:[40,1,1,"c.core_fock_operator"],core_fock_operator_erf:[39,1,1,"c.core_fock_operator_erf"],core_inact_act_bitmask_4:[14,1,1,"c.core_inact_act_bitmask_4"],core_inact_virt_bitmask:[14,1,1,"c.core_inact_virt_bitmask"],davidson_criterion:[18,1,1,"c.davidson_criterion"],degree_max_generators:[31,1,1,"c.degree_max_generators"],degree_max_integration_lebedev:[53,1,1,"c.degree_max_integration_lebedev"],del_bitmask:[14,1,1,"c.del_bitmask"],delta_e_per_selector:[50,1,1,"c.delta_e_per_selector"],det_alpha_norm:[22,1,1,"c.det_alpha_norm"],det_beta_norm:[22,1,1,"c.det_beta_norm"],det_to_occ_pattern:[22,1,1,"c.det_to_occ_pattern"],dft_type:[23,1,1,"c.dft_type"],diag_algorithm:[22,1,1,"c.diag_algorithm"],diagonal_h_matrix_on_psi_det:[22,1,1,"c.diagonal_h_matrix_on_psi_det"],dim_list_act_orb:[14,1,1,"c.dim_list_act_orb"],dim_list_core_orb:[14,1,1,"c.dim_list_core_orb"],dim_list_del_orb:[14,1,1,"c.dim_list_del_orb"],dim_list_inact_orb:[14,1,1,"c.dim_list_inact_orb"],dim_list_virt_orb:[14,1,1,"c.dim_list_virt_orb"],do_ddci:[29,1,1,"c.do_ddci"],do_only_1h1p:[29,1,1,"c.do_only_1h1p"],double_exc_bitmask:[22,1,1,"c.double_exc_bitmask"],double_index_selectors:[50,1,1,"c.double_index_selectors"],dr_radial_integral:[13,1,1,"c.dr_radial_integral"],dressed_column_idx:[18,1,1,"c.dressed_column_idx"],dressing_column_h:[20,1,1,"c.dressing_column_h"],dressing_column_s:[20,1,1,"c.dressing_column_s"],e_corr_double_only:[50,1,1,"c.e_corr_double_only"],e_corr_per_selectors:[50,1,1,"c.e_corr_per_selectors"],e_corr_second_order:[50,1,1,"c.e_corr_second_order"],e_correlation_dft:[35,1,1,"c.e_correlation_dft"],e_exchange_dft:[35,1,1,"c.e_exchange_dft"],effective_one_e_potential:[25,1,1,"c.effective_one_e_potential"],effective_one_e_potential_without_kin:[25,1,1,"c.effective_one_e_potential_without_kin"],eigenvalues_fock_matrix_ao:[47,1,1,"c.eigenvalues_fock_matrix_ao"],eigenvectors_fock_matrix_ao:[47,1,1,"c.eigenvectors_fock_matrix_ao"],eigenvectors_fock_matrix_mo:[47,1,1,"c.eigenvectors_fock_matrix_mo"],elec_num:[27,1,1,"c.elec_num"],elec_num_tab:[27,1,1,"c.elec_num_tab"],element_mass:[42,1,1,"c.element_mass"],element_name:[42,1,1,"c.element_name"],energy_c:[25,1,1,"c.energy_c"],energy_c_lda:[25,1,1,"c.energy_c_lda"],energy_c_pbe:[25,1,1,"c.energy_c_pbe"],energy_sr_c_lda:[25,1,1,"c.energy_sr_c_lda"],energy_sr_c_pbe:[25,1,1,"c.energy_sr_c_pbe"],energy_sr_x_lda:[25,1,1,"c.energy_sr_x_lda"],energy_sr_x_pbe:[25,1,1,"c.energy_sr_x_pbe"],energy_x:[25,1,1,"c.energy_x"],energy_x_lda:[25,1,1,"c.energy_x_lda"],energy_x_pbe:[25,1,1,"c.energy_x_pbe"],exc_degree_per_selectors:[50,1,1,"c.exc_degree_per_selectors"],expected_s2:[22,1,1,"c.expected_s2"],extra_e_contrib_density:[32,1,1,"c.extra_e_contrib_density"],extrapolated_energy:[33,1,1,"c.extrapolated_energy"],ezfio_filename:[28,1,1,"c.ezfio_filename"],ezfio_work_dir:[28,1,1,"c.ezfio_work_dir"],fact_inv:[53,1,1,"c.fact_inv"],file_lock:[28,1,1,"c.file_lock"],final_grid_points:[13,1,1,"c.final_grid_points"],final_weight_at_r:[13,1,1,"c.final_weight_at_r"],final_weight_at_r_vector:[13,1,1,"c.final_weight_at_r_vector"],fock_matrix_alpha_no_xc_ao:[35,1,1,"c.fock_matrix_alpha_no_xc_ao"],fock_matrix_ao:[47,1,1,"c.fock_matrix_ao"],fock_matrix_ao_alpha:[32,1,1,"c.fock_matrix_ao_alpha"],fock_matrix_ao_beta:[32,1,1,"c.fock_matrix_ao_beta"],fock_matrix_beta_no_xc_ao:[35,1,1,"c.fock_matrix_beta_no_xc_ao"],fock_matrix_diag_mo:[47,1,1,"c.fock_matrix_diag_mo"],fock_matrix_energy:[35,1,1,"c.fock_matrix_energy"],fock_matrix_mo:[47,1,1,"c.fock_matrix_mo"],fock_matrix_mo_alpha:[47,1,1,"c.fock_matrix_mo_alpha"],fock_matrix_mo_beta:[47,1,1,"c.fock_matrix_mo_beta"],fock_operator_closed_shell_ref_bitmask:[22,1,1,"c.fock_operator_closed_shell_ref_bitmask"],fock_wee_closed_shell:[22,1,1,"c.fock_wee_closed_shell"],fps_spf_matrix_ao:[47,1,1,"c.fps_spf_matrix_ao"],fps_spf_matrix_mo:[47,1,1,"c.fps_spf_matrix_mo"],full_ijkl_bitmask:[14,1,1,"c.full_ijkl_bitmask"],full_ijkl_bitmask_4:[14,1,1,"c.full_ijkl_bitmask_4"],gauleg_t2:[11,1,1,"c.gauleg_t2"],gauleg_w:[11,1,1,"c.gauleg_w"],generators_bitmask:[14,1,1,"c.generators_bitmask"],generators_bitmask_restart:[14,1,1,"c.generators_bitmask_restart"],grad_aos_dsr_vc_alpha_pbe_w:[25,1,1,"c.grad_aos_dsr_vc_alpha_pbe_w"],grad_aos_dsr_vc_beta_pbe_w:[25,1,1,"c.grad_aos_dsr_vc_beta_pbe_w"],grad_aos_dsr_vx_alpha_pbe_w:[25,1,1,"c.grad_aos_dsr_vx_alpha_pbe_w"],grad_aos_dsr_vx_beta_pbe_w:[25,1,1,"c.grad_aos_dsr_vx_beta_pbe_w"],grad_aos_dvc_alpha_pbe_w:[25,1,1,"c.grad_aos_dvc_alpha_pbe_w"],grad_aos_dvc_beta_pbe_w:[25,1,1,"c.grad_aos_dvc_beta_pbe_w"],grad_aos_dvx_alpha_pbe_w:[25,1,1,"c.grad_aos_dvx_alpha_pbe_w"],grad_aos_dvx_beta_pbe_w:[25,1,1,"c.grad_aos_dvx_beta_pbe_w"],grid_points_per_atom:[13,1,1,"c.grid_points_per_atom"],grid_points_radial:[13,1,1,"c.grid_points_radial"],h0_type:[43,1,1,"c.h0_type"],h_apply_buffer_allocated:[22,1,1,"c.h_apply_buffer_allocated"],h_apply_buffer_lock:[22,1,1,"c.h_apply_buffer_lock"],h_matrix_all_dets:[22,1,1,"c.h_matrix_all_dets"],h_matrix_cas:[22,1,1,"c.h_matrix_cas"],hf_bitmask:[14,1,1,"c.hf_bitmask"],hf_energy:[32,1,1,"c.hf_energy"],hf_one_electron_energy:[32,1,1,"c.hf_one_electron_energy"],hf_two_electron_energy:[32,1,1,"c.hf_two_electron_energy"],i_bitmask_gen:[14,1,1,"c.i_bitmask_gen"],i_h_hf_per_selectors:[50,1,1,"c.i_h_hf_per_selectors"],idx_cas:[22,1,1,"c.idx_cas"],idx_non_cas:[22,1,1,"c.idx_non_cas"],inact_bitmask:[14,1,1,"c.inact_bitmask"],inact_virt_bitmask:[14,1,1,"c.inact_virt_bitmask"],index_final_points:[13,1,1,"c.index_final_points"],index_final_points_reverse:[13,1,1,"c.index_final_points_reverse"],index_holes_bitmask:[14,1,1,"c.index_holes_bitmask"],index_particl_bitmask:[14,1,1,"c.index_particl_bitmask"],inertia_tensor:[42,1,1,"c.inertia_tensor"],inertia_tensor_eigenvalues:[42,1,1,"c.inertia_tensor_eigenvalues"],inertia_tensor_eigenvectors:[42,1,1,"c.inertia_tensor_eigenvectors"],initialize_pt2_e0_denominator:[15,1,1,"c.initialize_pt2_e0_denominator"],int_erf_3_index:[39,1,1,"c.int_erf_3_index"],int_erf_3_index_exc:[39,1,1,"c.int_erf_3_index_exc"],inv_int:[53,1,1,"c.inv_int"],inv_selectors_coef_hf:[50,1,1,"c.inv_selectors_coef_hf"],inv_selectors_coef_hf_squared:[50,1,1,"c.inv_selectors_coef_hf_squared"],is_zmq_slave:[54,1,1,"c.is_zmq_slave"],ks_energy:[34,1,1,"c.ks_energy"],l_to_charater:[8,1,1,"c.l_to_charater"],list_act:[14,1,1,"c.list_act"],list_act_reverse:[14,1,1,"c.list_act_reverse"],list_core:[14,1,1,"c.list_core"],list_core_inact_act:[14,1,1,"c.list_core_inact_act"],list_core_inact_act_reverse:[14,1,1,"c.list_core_inact_act_reverse"],list_core_reverse:[14,1,1,"c.list_core_reverse"],list_del:[14,1,1,"c.list_del"],list_del_reverse:[14,1,1,"c.list_del_reverse"],list_inact:[14,1,1,"c.list_inact"],list_inact_reverse:[14,1,1,"c.list_inact_reverse"],list_virt:[14,1,1,"c.list_virt"],list_virt_reverse:[14,1,1,"c.list_virt_reverse"],m_knowles:[13,1,1,"c.m_knowles"],max_degree_exc:[22,1,1,"c.max_degree_exc"],max_exc_pert:[43,1,1,"c.max_exc_pert"],mo_coef:[36,1,1,"c.mo_coef"],mo_coef_begin_iteration:[36,1,1,"c.mo_coef_begin_iteration"],mo_coef_in_ao_ortho_basis:[36,1,1,"c.mo_coef_in_ao_ortho_basis"],mo_coef_transp:[36,1,1,"c.mo_coef_transp"],mo_dipole_x:[38,1,1,"c.mo_dipole_x"],mo_dipole_y:[38,1,1,"c.mo_dipole_y"],mo_dipole_z:[38,1,1,"c.mo_dipole_z"],mo_integrals_cache:[40,1,1,"c.mo_integrals_cache"],mo_integrals_cache_max:[40,1,1,"c.mo_integrals_cache_max"],mo_integrals_cache_max_8:[40,1,1,"c.mo_integrals_cache_max_8"],mo_integrals_cache_min:[40,1,1,"c.mo_integrals_cache_min"],mo_integrals_cache_min_8:[40,1,1,"c.mo_integrals_cache_min_8"],mo_integrals_erf_cache:[39,1,1,"c.mo_integrals_erf_cache"],mo_integrals_erf_cache_max:[39,1,1,"c.mo_integrals_erf_cache_max"],mo_integrals_erf_cache_min:[39,1,1,"c.mo_integrals_erf_cache_min"],mo_integrals_erf_map:[39,1,1,"c.mo_integrals_erf_map"],mo_integrals_map:[40,1,1,"c.mo_integrals_map"],mo_integrals_n_e:[38,1,1,"c.mo_integrals_n_e"],mo_integrals_n_e_per_atom:[38,1,1,"c.mo_integrals_n_e_per_atom"],mo_kinetic_integrals:[38,1,1,"c.mo_kinetic_integrals"],mo_label:[36,1,1,"c.mo_label"],mo_num:[36,1,1,"c.mo_num"],mo_occ:[36,1,1,"c.mo_occ"],mo_one_e_integrals:[38,1,1,"c.mo_one_e_integrals"],mo_overlap:[38,1,1,"c.mo_overlap"],mo_pseudo_integrals:[38,1,1,"c.mo_pseudo_integrals"],mo_spread_x:[38,1,1,"c.mo_spread_x"],mo_spread_y:[38,1,1,"c.mo_spread_y"],mo_spread_z:[38,1,1,"c.mo_spread_z"],mo_two_e_int_erf_jj:[39,1,1,"c.mo_two_e_int_erf_jj"],mo_two_e_int_erf_jj_anti:[39,1,1,"c.mo_two_e_int_erf_jj_anti"],mo_two_e_int_erf_jj_anti_from_ao:[39,1,1,"c.mo_two_e_int_erf_jj_anti_from_ao"],mo_two_e_int_erf_jj_exchange:[39,1,1,"c.mo_two_e_int_erf_jj_exchange"],mo_two_e_int_erf_jj_exchange_from_ao:[39,1,1,"c.mo_two_e_int_erf_jj_exchange_from_ao"],mo_two_e_int_erf_jj_from_ao:[39,1,1,"c.mo_two_e_int_erf_jj_from_ao"],mo_two_e_integral_jj_from_ao:[40,1,1,"c.mo_two_e_integral_jj_from_ao"],mo_two_e_integrals_erf_in_map:[39,1,1,"c.mo_two_e_integrals_erf_in_map"],mo_two_e_integrals_in_map:[40,1,1,"c.mo_two_e_integrals_in_map"],mo_two_e_integrals_jj:[40,1,1,"c.mo_two_e_integrals_jj"],mo_two_e_integrals_jj_anti:[40,1,1,"c.mo_two_e_integrals_jj_anti"],mo_two_e_integrals_jj_anti_from_ao:[40,1,1,"c.mo_two_e_integrals_jj_anti_from_ao"],mo_two_e_integrals_jj_exchange:[40,1,1,"c.mo_two_e_integrals_jj_exchange"],mo_two_e_integrals_jj_exchange_from_ao:[40,1,1,"c.mo_two_e_integrals_jj_exchange_from_ao"],mo_two_e_integrals_vv_anti_from_ao:[40,1,1,"c.mo_two_e_integrals_vv_anti_from_ao"],mo_two_e_integrals_vv_exchange_from_ao:[40,1,1,"c.mo_two_e_integrals_vv_exchange_from_ao"],mo_two_e_integrals_vv_from_ao:[40,1,1,"c.mo_two_e_integrals_vv_from_ao"],mos_grad_in_r_array:[24,1,1,"c.mos_grad_in_r_array"],mos_in_r_array:[24,1,1,"c.mos_in_r_array"],mos_in_r_array_transp:[24,1,1,"c.mos_in_r_array_transp"],mos_lapl_in_r_array:[24,1,1,"c.mos_lapl_in_r_array"],mpi_bit_kind:[14,1,1,"c.mpi_bit_kind"],mpi_initialized:[41,1,1,"c.mpi_initialized"],mpi_master:[41,1,1,"c.mpi_master"],mpi_rank:[41,1,1,"c.mpi_rank"],mpi_size:[41,1,1,"c.mpi_size"],mu_erf_dft:[25,1,1,"c.mu_erf_dft"],n_act_orb:[14,1,1,"c.n_act_orb"],n_aos_max:[8,1,1,"c.n_aos_max"],n_cas_bitmask:[14,1,1,"c.n_cas_bitmask"],n_core_inact_act_orb:[14,1,1,"c.n_core_inact_act_orb"],n_core_inact_orb:[14,1,1,"c.n_core_inact_orb"],n_core_orb:[14,1,1,"c.n_core_orb"],n_core_orb_allocate:[14,1,1,"c.n_core_orb_allocate"],n_del_orb:[14,1,1,"c.n_del_orb"],n_det:[22,1,1,"c.n_det"],n_det_alpha_unique:[22,1,1,"c.n_det_alpha_unique"],n_det_beta_unique:[22,1,1,"c.n_det_beta_unique"],n_det_cas:[22,1,1,"c.n_det_cas"],n_det_generators:[31,1,1,"c.n_det_generators"],n_det_non_cas:[22,1,1,"c.n_det_non_cas"],n_det_selectors:[49,1,1,"c.n_det_selectors"],n_double_exc_bitmasks:[22,1,1,"c.n_double_exc_bitmasks"],n_double_selectors:[50,1,1,"c.n_double_selectors"],n_generators_bitmask:[14,1,1,"c.n_generators_bitmask"],n_generators_bitmask_restart:[14,1,1,"c.n_generators_bitmask_restart"],n_inact_orb:[14,1,1,"c.n_inact_orb"],n_inact_orb_allocate:[14,1,1,"c.n_inact_orb_allocate"],n_int:[14,1,1,"c.n_int"],n_iter:[33,1,1,"c.n_iter"],n_occ_pattern:[22,1,1,"c.n_occ_pattern"],n_points_final_grid:[13,1,1,"c.n_points_final_grid"],n_points_grid_per_atom:[13,1,1,"c.n_points_grid_per_atom"],n_points_integration_angular:[13,1,1,"c.n_points_integration_angular"],n_points_integration_angular_lebedev:[53,1,1,"c.n_points_integration_angular_lebedev"],n_points_radial_grid:[13,1,1,"c.n_points_radial_grid"],n_pt_max_i_x:[8,1,1,"c.n_pt_max_i_x"],n_pt_max_integrals:[8,1,1,"c.n_pt_max_integrals"],n_single_exc_bitmasks:[22,1,1,"c.n_single_exc_bitmasks"],n_states_diag:[18,1,1,"c.n_states_diag"],n_virt_orb:[14,1,1,"c.n_virt_orb"],n_virt_orb_allocate:[14,1,1,"c.n_virt_orb_allocate"],nproc:[53,1,1,"c.nproc"],nthreads_davidson:[18,1,1,"c.nthreads_davidson"],nthreads_pt2:[15,1,1,"c.nthreads_pt2"],nucl_aos:[8,1,1,"c.nucl_aos"],nucl_aos_transposed:[8,1,1,"c.nucl_aos_transposed"],nucl_coord:[42,1,1,"c.nucl_coord"],nucl_coord_transp:[42,1,1,"c.nucl_coord_transp"],nucl_dist:[42,1,1,"c.nucl_dist"],nucl_dist_2:[42,1,1,"c.nucl_dist_2"],nucl_dist_inv:[42,1,1,"c.nucl_dist_inv"],nucl_dist_vec_x:[42,1,1,"c.nucl_dist_vec_x"],nucl_dist_vec_y:[42,1,1,"c.nucl_dist_vec_y"],nucl_dist_vec_z:[42,1,1,"c.nucl_dist_vec_z"],nucl_list_shell_aos:[8,1,1,"c.nucl_list_shell_aos"],nucl_n_aos:[8,1,1,"c.nucl_n_aos"],nucl_num_shell_aos:[8,1,1,"c.nucl_num_shell_aos"],nuclear_repulsion:[42,1,1,"c.nuclear_repulsion"],one_body_dm_mo_alpha_one_det:[21,1,1,"c.one_body_dm_mo_alpha_one_det"],one_body_dm_mo_beta_one_det:[21,1,1,"c.one_body_dm_mo_beta_one_det"],one_e_dm_alpha_ao_for_dft:[21,1,1,"c.one_e_dm_alpha_ao_for_dft"],one_e_dm_alpha_at_r:[24,1,1,"c.one_e_dm_alpha_at_r"],one_e_dm_alpha_in_r:[24,1,1,"c.one_e_dm_alpha_in_r"],one_e_dm_and_grad_alpha_in_r:[24,1,1,"c.one_e_dm_and_grad_alpha_in_r"],one_e_dm_and_grad_beta_in_r:[24,1,1,"c.one_e_dm_and_grad_beta_in_r"],one_e_dm_ao_alpha:[22,1,1,"c.one_e_dm_ao_alpha"],one_e_dm_ao_beta:[22,1,1,"c.one_e_dm_ao_beta"],one_e_dm_average_mo_for_dft:[21,1,1,"c.one_e_dm_average_mo_for_dft"],one_e_dm_beta_ao_for_dft:[21,1,1,"c.one_e_dm_beta_ao_for_dft"],one_e_dm_beta_at_r:[24,1,1,"c.one_e_dm_beta_at_r"],one_e_dm_beta_in_r:[24,1,1,"c.one_e_dm_beta_in_r"],one_e_dm_dagger_mo_spin_index:[22,1,1,"c.one_e_dm_dagger_mo_spin_index"],one_e_dm_mo:[22,1,1,"c.one_e_dm_mo"],one_e_dm_mo_alpha:[22,1,1,"c.one_e_dm_mo_alpha"],one_e_dm_mo_alpha_average:[22,1,1,"c.one_e_dm_mo_alpha_average"],one_e_dm_mo_alpha_for_dft:[21,1,1,"c.one_e_dm_mo_alpha_for_dft"],one_e_dm_mo_beta:[22,1,1,"c.one_e_dm_mo_beta"],one_e_dm_mo_beta_average:[22,1,1,"c.one_e_dm_mo_beta_average"],one_e_dm_mo_beta_for_dft:[21,1,1,"c.one_e_dm_mo_beta_for_dft"],one_e_dm_mo_diff:[22,1,1,"c.one_e_dm_mo_diff"],one_e_dm_mo_for_dft:[21,1,1,"c.one_e_dm_mo_for_dft"],one_e_dm_mo_spin_index:[22,1,1,"c.one_e_dm_mo_spin_index"],one_e_energy:[35,1,1,"c.one_e_energy"],one_e_grad_2_dm_alpha_at_r:[24,1,1,"c.one_e_grad_2_dm_alpha_at_r"],one_e_grad_2_dm_beta_at_r:[24,1,1,"c.one_e_grad_2_dm_beta_at_r"],one_e_spin_density_ao:[22,1,1,"c.one_e_spin_density_ao"],one_e_spin_density_mo:[22,1,1,"c.one_e_spin_density_mo"],output_cpu_time_0:[28,1,1,"c.output_cpu_time_0"],output_wall_time_0:[28,1,1,"c.output_wall_time_0"],phi_angular_integration_lebedev:[53,1,1,"c.phi_angular_integration_lebedev"],potential_c_alpha_ao:[25,1,1,"c.potential_c_alpha_ao"],potential_c_alpha_ao_lda:[25,1,1,"c.potential_c_alpha_ao_lda"],potential_c_alpha_ao_pbe:[25,1,1,"c.potential_c_alpha_ao_pbe"],potential_c_alpha_mo:[25,1,1,"c.potential_c_alpha_mo"],potential_c_beta_ao:[25,1,1,"c.potential_c_beta_ao"],potential_c_beta_ao_lda:[25,1,1,"c.potential_c_beta_ao_lda"],potential_c_beta_ao_pbe:[25,1,1,"c.potential_c_beta_ao_pbe"],potential_c_beta_mo:[25,1,1,"c.potential_c_beta_mo"],potential_sr_c_alpha_ao_lda:[25,1,1,"c.potential_sr_c_alpha_ao_lda"],potential_sr_c_alpha_ao_pbe:[25,1,1,"c.potential_sr_c_alpha_ao_pbe"],potential_sr_c_beta_ao_lda:[25,1,1,"c.potential_sr_c_beta_ao_lda"],potential_sr_c_beta_ao_pbe:[25,1,1,"c.potential_sr_c_beta_ao_pbe"],potential_sr_x_alpha_ao_lda:[25,1,1,"c.potential_sr_x_alpha_ao_lda"],potential_sr_x_alpha_ao_pbe:[25,1,1,"c.potential_sr_x_alpha_ao_pbe"],potential_sr_x_beta_ao_lda:[25,1,1,"c.potential_sr_x_beta_ao_lda"],potential_sr_x_beta_ao_pbe:[25,1,1,"c.potential_sr_x_beta_ao_pbe"],potential_x_alpha_ao:[25,1,1,"c.potential_x_alpha_ao"],potential_x_alpha_ao_lda:[25,1,1,"c.potential_x_alpha_ao_lda"],potential_x_alpha_ao_pbe:[25,1,1,"c.potential_x_alpha_ao_pbe"],potential_x_alpha_mo:[25,1,1,"c.potential_x_alpha_mo"],potential_x_beta_ao:[25,1,1,"c.potential_x_beta_ao"],potential_x_beta_ao_lda:[25,1,1,"c.potential_x_beta_ao_lda"],potential_x_beta_ao_pbe:[25,1,1,"c.potential_x_beta_ao_pbe"],potential_x_beta_mo:[25,1,1,"c.potential_x_beta_mo"],pseudo_dz_k_transp:[9,1,1,"c.pseudo_dz_k_transp"],pseudo_dz_kl_transp:[9,1,1,"c.pseudo_dz_kl_transp"],pseudo_n_k_transp:[9,1,1,"c.pseudo_n_k_transp"],pseudo_n_kl_transp:[9,1,1,"c.pseudo_n_kl_transp"],pseudo_v_k_transp:[9,1,1,"c.pseudo_v_k_transp"],pseudo_v_kl_transp:[9,1,1,"c.pseudo_v_kl_transp"],psi_average_norm_contrib:[22,1,1,"c.psi_average_norm_contrib"],psi_average_norm_contrib_sorted:[22,1,1,"c.psi_average_norm_contrib_sorted"],psi_bilinear_matrix:[22,1,1,"c.psi_bilinear_matrix"],psi_bilinear_matrix_columns:[22,1,1,"c.psi_bilinear_matrix_columns"],psi_bilinear_matrix_columns_loc:[22,1,1,"c.psi_bilinear_matrix_columns_loc"],psi_bilinear_matrix_order:[22,1,1,"c.psi_bilinear_matrix_order"],psi_bilinear_matrix_order_reverse:[22,1,1,"c.psi_bilinear_matrix_order_reverse"],psi_bilinear_matrix_order_transp_reverse:[22,1,1,"c.psi_bilinear_matrix_order_transp_reverse"],psi_bilinear_matrix_rows:[22,1,1,"c.psi_bilinear_matrix_rows"],psi_bilinear_matrix_transp_columns:[22,1,1,"c.psi_bilinear_matrix_transp_columns"],psi_bilinear_matrix_transp_order:[22,1,1,"c.psi_bilinear_matrix_transp_order"],psi_bilinear_matrix_transp_rows:[22,1,1,"c.psi_bilinear_matrix_transp_rows"],psi_bilinear_matrix_transp_rows_loc:[22,1,1,"c.psi_bilinear_matrix_transp_rows_loc"],psi_bilinear_matrix_transp_values:[22,1,1,"c.psi_bilinear_matrix_transp_values"],psi_bilinear_matrix_values:[22,1,1,"c.psi_bilinear_matrix_values"],psi_cas:[22,1,1,"c.psi_cas"],psi_cas_coef:[22,1,1,"c.psi_cas_coef"],psi_cas_coef_sorted_bit:[22,1,1,"c.psi_cas_coef_sorted_bit"],psi_cas_energy:[22,1,1,"c.psi_cas_energy"],psi_cas_energy_diagonalized:[22,1,1,"c.psi_cas_energy_diagonalized"],psi_cas_sorted_bit:[22,1,1,"c.psi_cas_sorted_bit"],psi_coef:[22,1,1,"c.psi_coef"],psi_coef_cas_diagonalized:[22,1,1,"c.psi_coef_cas_diagonalized"],psi_coef_generators:[31,1,1,"c.psi_coef_generators"],psi_coef_max:[22,1,1,"c.psi_coef_max"],psi_coef_min:[22,1,1,"c.psi_coef_min"],psi_coef_sorted:[22,1,1,"c.psi_coef_sorted"],psi_coef_sorted_bit:[22,1,1,"c.psi_coef_sorted_bit"],psi_coef_sorted_gen:[31,1,1,"c.psi_coef_sorted_gen"],psi_det:[22,1,1,"c.psi_det"],psi_det_alpha:[22,1,1,"c.psi_det_alpha"],psi_det_alpha_unique:[22,1,1,"c.psi_det_alpha_unique"],psi_det_beta:[22,1,1,"c.psi_det_beta"],psi_det_beta_unique:[22,1,1,"c.psi_det_beta_unique"],psi_det_generators:[31,1,1,"c.psi_det_generators"],psi_det_hii:[22,1,1,"c.psi_det_hii"],psi_det_size:[22,1,1,"c.psi_det_size"],psi_det_sorted:[22,1,1,"c.psi_det_sorted"],psi_det_sorted_bit:[22,1,1,"c.psi_det_sorted_bit"],psi_det_sorted_gen:[31,1,1,"c.psi_det_sorted_gen"],psi_det_sorted_gen_order:[31,1,1,"c.psi_det_sorted_gen_order"],psi_det_sorted_order:[22,1,1,"c.psi_det_sorted_order"],psi_dft_energy_h_core:[25,1,1,"c.psi_dft_energy_h_core"],psi_dft_energy_kinetic:[25,1,1,"c.psi_dft_energy_kinetic"],psi_dft_energy_nuclear_elec:[25,1,1,"c.psi_dft_energy_nuclear_elec"],psi_energy:[18,1,1,"c.psi_energy"],psi_energy_h_core:[22,1,1,"c.psi_energy_h_core"],psi_energy_two_e:[18,1,1,"c.psi_energy_two_e"],psi_energy_with_nucl_rep:[18,1,1,"c.psi_energy_with_nucl_rep"],psi_non_cas:[22,1,1,"c.psi_non_cas"],psi_non_cas_coef:[22,1,1,"c.psi_non_cas_coef"],psi_non_cas_coef_sorted_bit:[22,1,1,"c.psi_non_cas_coef_sorted_bit"],psi_non_cas_sorted_bit:[22,1,1,"c.psi_non_cas_sorted_bit"],psi_occ_pattern:[22,1,1,"c.psi_occ_pattern"],psi_occ_pattern_hii:[22,1,1,"c.psi_occ_pattern_hii"],psi_s2:[18,1,1,"c.psi_s2"],psi_selectors:[49,1,1,"c.psi_selectors"],psi_selectors_coef:[49,1,1,"c.psi_selectors_coef"],psi_selectors_coef_transp:[50,1,1,"c.psi_selectors_coef_transp"],psi_selectors_diag_h_mat:[50,1,1,"c.psi_selectors_diag_h_mat"],psi_selectors_size:[50,1,1,"c.psi_selectors_size"],pt2_cw:[15,1,1,"c.pt2_cw"],pt2_e0_denominator:[15,1,1,"c.pt2_e0_denominator"],pt2_f:[15,1,1,"c.pt2_f"],pt2_j:[15,1,1,"c.pt2_j"],pt2_mindetinfirstteeth:[15,1,1,"c.pt2_mindetinfirstteeth"],pt2_n_0:[15,1,1,"c.pt2_n_0"],pt2_n_tasks:[15,1,1,"c.pt2_n_tasks"],pt2_n_tasks_max:[15,1,1,"c.pt2_n_tasks_max"],pt2_n_teeth:[15,1,1,"c.pt2_n_teeth"],pt2_r:[15,1,1,"c.pt2_r"],pt2_stoch_istate:[15,1,1,"c.pt2_stoch_istate"],pt2_u:[15,1,1,"c.pt2_u"],pt2_u_0:[15,1,1,"c.pt2_u_0"],pt2_w:[15,1,1,"c.pt2_w"],pt2_w_t:[15,1,1,"c.pt2_w_t"],qp_kill_filename:[28,1,1,"c.qp_kill_filename"],qp_max_mem:[53,1,1,"c.qp_max_mem"],qp_run_address:[54,1,1,"c.qp_run_address"],qp_stop_filename:[28,1,1,"c.qp_stop_filename"],qp_stop_variable:[28,1,1,"c.qp_stop_variable"],ref_bitmask:[14,1,1,"c.ref_bitmask"],ref_bitmask_e_n_energy:[22,1,1,"c.ref_bitmask_e_n_energy"],ref_bitmask_energy:[22,1,1,"c.ref_bitmask_energy"],ref_bitmask_kinetic_energy:[22,1,1,"c.ref_bitmask_kinetic_energy"],ref_bitmask_one_e_energy:[22,1,1,"c.ref_bitmask_one_e_energy"],ref_bitmask_two_e_energy:[22,1,1,"c.ref_bitmask_two_e_energy"],ref_closed_shell_bitmask:[22,1,1,"c.ref_closed_shell_bitmask"],reunion_of_bitmask:[14,1,1,"c.reunion_of_bitmask"],reunion_of_cas_inact_bitmask:[14,1,1,"c.reunion_of_cas_inact_bitmask"],reunion_of_core_inact_act_bitmask:[14,1,1,"c.reunion_of_core_inact_act_bitmask"],reunion_of_core_inact_bitmask:[14,1,1,"c.reunion_of_core_inact_bitmask"],rs_ks_energy:[35,1,1,"c.rs_ks_energy"],s2_matrix_all_dets:[22,1,1,"c.s2_matrix_all_dets"],s2_values:[22,1,1,"c.s2_values"],s_half:[9,1,1,"c.s_half"],s_half_inv:[9,1,1,"c.s_half_inv"],s_inv:[9,1,1,"c.s_inv"],s_mo_coef:[38,1,1,"c.s_mo_coef"],s_z2_sz:[22,1,1,"c.s_z2_sz"],s_z:[22,1,1,"c.s_z"],scf_density_matrix_ao:[47,1,1,"c.scf_density_matrix_ao"],scf_density_matrix_ao_alpha:[47,1,1,"c.scf_density_matrix_ao_alpha"],scf_density_matrix_ao_beta:[47,1,1,"c.scf_density_matrix_ao_beta"],scf_energy:[47,1,1,"c.scf_energy"],select_max:[31,1,1,"c.select_max"],selection_criterion:[43,1,1,"c.selection_criterion"],selection_criterion_factor:[43,1,1,"c.selection_criterion_factor"],selection_criterion_min:[43,1,1,"c.selection_criterion_min"],selection_weight:[15,1,1,"c.selection_weight"],shifting_constant:[25,1,1,"c.shifting_constant"],short_range_hartree:[25,1,1,"c.short_range_hartree"],short_range_hartree_operator:[25,1,1,"c.short_range_hartree_operator"],single_exc_bitmask:[22,1,1,"c.single_exc_bitmask"],singles_alpha_csc:[22,1,1,"c.singles_alpha_csc"],singles_alpha_csc_idx:[22,1,1,"c.singles_alpha_csc_idx"],singles_alpha_csc_size:[22,1,1,"c.singles_alpha_csc_size"],singles_beta_csc:[22,1,1,"c.singles_beta_csc"],singles_beta_csc_idx:[22,1,1,"c.singles_beta_csc_idx"],singles_beta_csc_size:[22,1,1,"c.singles_beta_csc_size"],size_select_max:[31,1,1,"c.size_select_max"],slater_bragg_radii:[42,1,1,"c.slater_bragg_radii"],slater_bragg_radii_per_atom:[42,1,1,"c.slater_bragg_radii_per_atom"],slater_bragg_radii_per_atom_ua:[42,1,1,"c.slater_bragg_radii_per_atom_ua"],slater_bragg_radii_ua:[42,1,1,"c.slater_bragg_radii_ua"],slater_bragg_type_inter_distance:[42,1,1,"c.slater_bragg_type_inter_distance"],slater_bragg_type_inter_distance_ua:[42,1,1,"c.slater_bragg_type_inter_distance_ua"],state_average_weight:[22,1,1,"c.state_average_weight"],theta_angular_integration_lebedev:[53,1,1,"c.theta_angular_integration_lebedev"],threshold_diis_nonzero:[47,1,1,"c.threshold_diis_nonzero"],threshold_selectors:[49,1,1,"c.threshold_selectors"],trace_potential_xc:[35,1,1,"c.trace_potential_xc"],trace_v_h:[25,1,1,"c.trace_v_h"],trace_v_hxc:[25,1,1,"c.trace_v_hxc"],trace_v_xc:[25,1,1,"c.trace_v_xc"],two_e_energy:[35,1,1,"c.two_e_energy"],unpaired_alpha_electrons:[14,1,1,"c.unpaired_alpha_electrons"],var_pt2_ratio:[43,1,1,"c.var_pt2_ratio"],virt_bitmask:[14,1,1,"c.virt_bitmask"],virt_bitmask_4:[14,1,1,"c.virt_bitmask_4"],weight_at_r:[13,1,1,"c.weight_at_r"],weight_occ_pattern:[22,1,1,"c.weight_occ_pattern"],weights_angular_integration_lebedev:[53,1,1,"c.weights_angular_integration_lebedev"],weights_angular_points:[13,1,1,"c.weights_angular_points"],zmq_context:[54,1,1,"c.zmq_context"],zmq_lock:[54,1,1,"c.zmq_lock"],zmq_port_start:[54,1,1,"c.zmq_port_start"],zmq_socket_pair_inproc_address:[54,1,1,"c.zmq_socket_pair_inproc_address"],zmq_socket_pull_inproc_address:[54,1,1,"c.zmq_socket_pull_inproc_address"],zmq_socket_pull_tcp_address:[54,1,1,"c.zmq_socket_pull_tcp_address"],zmq_socket_push_inproc_address:[54,1,1,"c.zmq_socket_push_inproc_address"],zmq_socket_push_tcp_address:[54,1,1,"c.zmq_socket_push_tcp_address"],zmq_socket_sub_tcp_address:[54,1,1,"c.zmq_socket_sub_tcp_address"],zmq_state:[54,1,1,"c.zmq_state"]},ao_basis:{ao_basis:[8,2,1,"cmdoption-ao-basis-arg-ao-basis"],ao_cartesian:[8,2,1,"cmdoption-ao-basis-arg-ao-cartesian"],ao_coef:[8,2,1,"cmdoption-ao-basis-arg-ao-coef"],ao_expo:[8,2,1,"cmdoption-ao-basis-arg-ao-expo"],ao_md5:[8,2,1,"cmdoption-ao-basis-arg-ao-md5"],ao_nucl:[8,2,1,"cmdoption-ao-basis-arg-ao-nucl"],ao_num:[8,2,1,"cmdoption-ao-basis-arg-ao-num"],ao_power:[8,2,1,"cmdoption-ao-basis-arg-ao-power"],ao_prim_num:[8,2,1,"cmdoption-ao-basis-arg-ao-prim-num"],ao_prim_num_max:[8,2,1,"cmdoption-ao-basis-arg-ao-prim-num-max"]},ao_one_e_ints:{ao_integrals_e_n:[9,2,1,"cmdoption-ao-one-e-ints-arg-ao-integrals-e-n"],ao_integrals_kinetic:[9,2,1,"cmdoption-ao-one-e-ints-arg-ao-integrals-kinetic"],ao_integrals_overlap:[9,2,1,"cmdoption-ao-one-e-ints-arg-ao-integrals-overlap"],ao_integrals_pseudo:[9,2,1,"cmdoption-ao-one-e-ints-arg-ao-integrals-pseudo"],ao_one_e_integrals:[9,2,1,"cmdoption-ao-one-e-ints-arg-ao-one-e-integrals"],io_ao_integrals_e_n:[9,2,1,"cmdoption-ao-one-e-ints-arg-io-ao-integrals-e-n"],io_ao_integrals_kinetic:[9,2,1,"cmdoption-ao-one-e-ints-arg-io-ao-integrals-kinetic"],io_ao_integrals_overlap:[9,2,1,"cmdoption-ao-one-e-ints-arg-io-ao-integrals-overlap"],io_ao_integrals_pseudo:[9,2,1,"cmdoption-ao-one-e-ints-arg-io-ao-integrals-pseudo"],io_ao_one_e_integrals:[9,2,1,"cmdoption-ao-one-e-ints-arg-io-ao-one-e-integrals"]},ao_two_e_erf_ints:{io_ao_two_e_integrals_erf:[10,2,1,"cmdoption-ao-two-e-erf-ints-arg-io-ao-two-e-integrals-erf"],mu_erf:[10,2,1,"cmdoption-ao-two-e-erf-ints-arg-mu-erf"]},ao_two_e_ints:{ao_integrals_threshold:[11,2,1,"cmdoption-ao-two-e-ints-arg-ao-integrals-threshold"],do_direct_integrals:[11,2,1,"cmdoption-ao-two-e-ints-arg-do-direct-integrals"],io_ao_two_e_integrals:[11,2,1,"cmdoption-ao-two-e-ints-arg-io-ao-two-e-integrals"]},aux_quantities:{data_energy_proj:[12,2,1,"cmdoption-aux-quantities-arg-data-energy-proj"],data_energy_var:[12,2,1,"cmdoption-aux-quantities-arg-data-energy-var"],data_one_e_dm_alpha_mo:[12,2,1,"cmdoption-aux-quantities-arg-data-one-e-dm-alpha-mo"],data_one_e_dm_beta_mo:[12,2,1,"cmdoption-aux-quantities-arg-data-one-e-dm-beta-mo"]},becke_numerical_grid:{grid_type_sgn:[13,2,1,"cmdoption-becke-numerical-grid-arg-grid-type-sgn"]},cis:{energy:[16,2,1,"cmdoption-cis-arg-energy"]},cisd:{energy:[17,2,1,"cmdoption-cisd-arg-energy"]},configure:{"--config":[80,2,1,"cmdoption-configure-c"],"--help":[80,2,1,"cmdoption-configure-h"],"--install":[80,2,1,"cmdoption-configure-i"],"-c":[80,2,1,"cmdoption-configure-c"],"-h":[80,2,1,"cmdoption-configure-h"],"-i":[80,2,1,"cmdoption-configure-i"]},davidson:{davidson_sze_max:[18,2,1,"cmdoption-davidson-arg-davidson-sze-max"],disk_based_davidson:[18,2,1,"cmdoption-davidson-arg-disk-based-davidson"],distributed_davidson:[18,2,1,"cmdoption-davidson-arg-distributed-davidson"],n_states_diag:[18,2,1,"cmdoption-davidson-arg-n-states-diag"],only_expected_s2:[18,2,1,"cmdoption-davidson-arg-only-expected-s2"],state_following:[18,2,1,"cmdoption-davidson-arg-state-following"],threshold_davidson:[18,2,1,"cmdoption-davidson-arg-threshold-davidson"]},density_for_dft:{damping_for_rs_dft:[21,2,1,"cmdoption-density-for-dft-arg-damping-for-rs-dft"],density_for_dft:[21,2,1,"cmdoption-density-for-dft-arg-density-for-dft"]},determinants:{bit_kind:[22,2,1,"cmdoption-determinants-arg-bit-kind"],expected_s2:[22,2,1,"cmdoption-determinants-arg-expected-s2"],mo_label:[22,2,1,"cmdoption-determinants-arg-mo-label"],n_det:[22,2,1,"cmdoption-determinants-arg-n-det"],n_det_max:[22,2,1,"cmdoption-determinants-arg-n-det-max"],n_det_max_full:[22,2,1,"cmdoption-determinants-arg-n-det-max-full"],n_det_print_wf:[22,2,1,"cmdoption-determinants-arg-n-det-print-wf"],n_int:[22,2,1,"cmdoption-determinants-arg-n-int"],n_states:[22,2,1,"cmdoption-determinants-arg-n-states"],psi_coef:[22,2,1,"cmdoption-determinants-arg-psi-coef"],psi_det:[22,2,1,"cmdoption-determinants-arg-psi-det"],read_wf:[22,2,1,"cmdoption-determinants-arg-read-wf"],s2_eig:[22,2,1,"cmdoption-determinants-arg-s2-eig"],state_average_weight:[22,2,1,"cmdoption-determinants-arg-state-average-weight"],target_energy:[22,2,1,"cmdoption-determinants-arg-target-energy"],threshold_generators:[22,2,1,"cmdoption-determinants-arg-threshold-generators"],used_weight:[22,2,1,"cmdoption-determinants-arg-used-weight"]},dft_keywords:{HF_exchange:[23,2,1,"cmdoption-dft-keywords-arg-hf-exchange"],correlation_functional:[23,2,1,"cmdoption-dft-keywords-arg-correlation-functional"],exchange_functional:[23,2,1,"cmdoption-dft-keywords-arg-exchange-functional"]},dressing:{dress_relative_error:[26,2,1,"cmdoption-dressing-arg-dress-relative-error"],n_it_max_dressed_ci:[26,2,1,"cmdoption-dressing-arg-n-it-max-dressed-ci"],thresh_dressed_ci:[26,2,1,"cmdoption-dressing-arg-thresh-dressed-ci"]},electrons:{elec_alpha_num:[27,2,1,"cmdoption-electrons-arg-elec-alpha-num"],elec_beta_num:[27,2,1,"cmdoption-electrons-arg-elec-beta-num"],elec_num:[27,2,1,"cmdoption-electrons-arg-elec-num"]},fci:{energy:[29,2,1,"cmdoption-fci-arg-energy"],energy_pt2:[29,2,1,"cmdoption-fci-arg-energy-pt2"]},hartree_fock:{energy:[32,2,1,"cmdoption-hartree-fock-arg-energy"]},iterations:{energy_iterations:[33,2,1,"cmdoption-iterations-arg-energy-iterations"],n_det_iterations:[33,2,1,"cmdoption-iterations-arg-n-det-iterations"],n_iter:[33,2,1,"cmdoption-iterations-arg-n-iter"],pt2_iterations:[33,2,1,"cmdoption-iterations-arg-pt2-iterations"]},kohn_sham_rs:{energy:[35,2,1,"cmdoption-kohn-sham-rs-arg-energy"]},mo_basis:{ao_md5:[36,2,1,"cmdoption-mo-basis-arg-ao-md5"],mo_class:[36,2,1,"cmdoption-mo-basis-arg-mo-class"],mo_coef:[36,2,1,"cmdoption-mo-basis-arg-mo-coef"],mo_label:[36,2,1,"cmdoption-mo-basis-arg-mo-label"],mo_num:[36,2,1,"cmdoption-mo-basis-arg-mo-num"],mo_occ:[36,2,1,"cmdoption-mo-basis-arg-mo-occ"]},mo_one_e_ints:{io_mo_integrals_e_n:[38,2,1,"cmdoption-mo-one-e-ints-arg-io-mo-integrals-e-n"],io_mo_integrals_kinetic:[38,2,1,"cmdoption-mo-one-e-ints-arg-io-mo-integrals-kinetic"],io_mo_integrals_pseudo:[38,2,1,"cmdoption-mo-one-e-ints-arg-io-mo-integrals-pseudo"],io_mo_one_e_integrals:[38,2,1,"cmdoption-mo-one-e-ints-arg-io-mo-one-e-integrals"],mo_integrals_e_n:[38,2,1,"cmdoption-mo-one-e-ints-arg-mo-integrals-e-n"],mo_integrals_kinetic:[38,2,1,"cmdoption-mo-one-e-ints-arg-mo-integrals-kinetic"],mo_integrals_pseudo:[38,2,1,"cmdoption-mo-one-e-ints-arg-mo-integrals-pseudo"],mo_one_e_integrals:[38,2,1,"cmdoption-mo-one-e-ints-arg-mo-one-e-integrals"]},mo_two_e_erf_ints:{io_mo_two_e_integrals_erf:[39,2,1,"cmdoption-mo-two-e-erf-ints-arg-io-mo-two-e-integrals-erf"]},mo_two_e_ints:{io_mo_two_e_integrals:[40,2,1,"cmdoption-mo-two-e-ints-arg-io-mo-two-e-integrals"],mo_integrals_threshold:[40,2,1,"cmdoption-mo-two-e-ints-arg-mo-integrals-threshold"],no_ivvv_integrals:[40,2,1,"cmdoption-mo-two-e-ints-arg-no-ivvv-integrals"],no_vvv_integrals:[40,2,1,"cmdoption-mo-two-e-ints-arg-no-vvv-integrals"],no_vvvv_integrals:[40,2,1,"cmdoption-mo-two-e-ints-arg-no-vvvv-integrals"]},nuclei:{disk_access_nuclear_repulsion:[42,2,1,"cmdoption-nuclei-arg-disk-access-nuclear-repulsion"],nucl_charge:[42,2,1,"cmdoption-nuclei-arg-nucl-charge"],nucl_coord:[42,2,1,"cmdoption-nuclei-arg-nucl-coord"],nucl_label:[42,2,1,"cmdoption-nuclei-arg-nucl-label"],nucl_num:[42,2,1,"cmdoption-nuclei-arg-nucl-num"],nuclear_repulsion:[42,2,1,"cmdoption-nuclei-arg-nuclear-repulsion"]},perturbation:{correlation_energy_ratio_max:[43,2,1,"cmdoption-perturbation-arg-correlation-energy-ratio-max"],do_pt2:[43,2,1,"cmdoption-perturbation-arg-do-pt2"],pt2_max:[43,2,1,"cmdoption-perturbation-arg-pt2-max"],pt2_relative_error:[43,2,1,"cmdoption-perturbation-arg-pt2-relative-error"]},pseudo:{ao_pseudo_grid:[44,2,1,"cmdoption-pseudo-arg-ao-pseudo-grid"],do_pseudo:[44,2,1,"cmdoption-pseudo-arg-do-pseudo"],mo_pseudo_grid:[44,2,1,"cmdoption-pseudo-arg-mo-pseudo-grid"],nucl_charge_remove:[44,2,1,"cmdoption-pseudo-arg-nucl-charge-remove"],pseudo_dz_k:[44,2,1,"cmdoption-pseudo-arg-pseudo-dz-k"],pseudo_dz_kl:[44,2,1,"cmdoption-pseudo-arg-pseudo-dz-kl"],pseudo_grid_rmax:[44,2,1,"cmdoption-pseudo-arg-pseudo-grid-rmax"],pseudo_grid_size:[44,2,1,"cmdoption-pseudo-arg-pseudo-grid-size"],pseudo_klocmax:[44,2,1,"cmdoption-pseudo-arg-pseudo-klocmax"],pseudo_kmax:[44,2,1,"cmdoption-pseudo-arg-pseudo-kmax"],pseudo_lmax:[44,2,1,"cmdoption-pseudo-arg-pseudo-lmax"],pseudo_n_k:[44,2,1,"cmdoption-pseudo-arg-pseudo-n-k"],pseudo_n_kl:[44,2,1,"cmdoption-pseudo-arg-pseudo-n-kl"],pseudo_v_k:[44,2,1,"cmdoption-pseudo-arg-pseudo-v-k"],pseudo_v_kl:[44,2,1,"cmdoption-pseudo-arg-pseudo-v-kl"]},qp:{convert_output_to_ezfio:[97,2,1,"cmdoption-qp-arg-convert-output-to-ezfio"],create_ezfio:[97,2,1,"cmdoption-qp-arg-create-ezfio"],get:[97,2,1,"cmdoption-qp-arg-get"],has:[97,2,1,"cmdoption-qp-arg-has"],man:[97,2,1,"cmdoption-qp-arg-man"],plugins:[97,2,1,"cmdoption-qp-arg-plugins"],reset:[97,2,1,"cmdoption-qp-arg-reset"],run:[97,2,1,"cmdoption-qp-arg-run"],set:[97,2,1,"cmdoption-qp-arg-set"],set_file:[97,2,1,"cmdoption-qp-arg-set-file"],set_frozen_core:[97,2,1,"cmdoption-qp-arg-set-frozen-core"],set_mo_class:[97,2,1,"cmdoption-qp-arg-set-mo-class"],stop:[97,2,1,"cmdoption-qp-arg-stop"],unset_file:[97,2,1,"cmdoption-qp-arg-unset-file"],update:[97,2,1,"cmdoption-qp-arg-update"]},qp_convert_output_to_ezfio:{"--output":[87,2,1,"cmdoption-qp-convert-output-to-ezfio-o"],"-o":[87,2,1,"cmdoption-qp-convert-output-to-ezfio-o"]},qp_create_ezfio:{"--au":[88,2,1,"cmdoption-qp-create-ezfio-a"],"--basis":[88,2,1,"cmdoption-qp-create-ezfio-b"],"--cart":[88,2,1,"cmdoption-qp-create-ezfio-x"],"--charge":[88,2,1,"cmdoption-qp-create-ezfio-c"],"--dummy":[88,2,1,"cmdoption-qp-create-ezfio-d"],"--help":[88,2,1,"cmdoption-qp-create-ezfio-h"],"--multiplicity":[88,2,1,"cmdoption-qp-create-ezfio-m"],"--output":[88,2,1,"cmdoption-qp-create-ezfio-o"],"--pseudo":[88,2,1,"cmdoption-qp-create-ezfio-p"],"-a":[88,2,1,"cmdoption-qp-create-ezfio-a"],"-b":[88,2,1,"cmdoption-qp-create-ezfio-b"],"-c":[88,2,1,"cmdoption-qp-create-ezfio-c"],"-d":[88,2,1,"cmdoption-qp-create-ezfio-d"],"-h":[88,2,1,"cmdoption-qp-create-ezfio-h"],"-m":[88,2,1,"cmdoption-qp-create-ezfio-m"],"-o":[88,2,1,"cmdoption-qp-create-ezfio-o"],"-p":[88,2,1,"cmdoption-qp-create-ezfio-p"],"-x":[88,2,1,"cmdoption-qp-create-ezfio-x"]},qp_edit:{"--check":[89,2,1,"cmdoption-qp-edit-c"],"--help":[89,2,1,"cmdoption-qp-edit-h"],"--ndet":[89,2,1,"cmdoption-qp-edit-n"],"--state":[89,2,1,"cmdoption-qp-edit-s"],"-c":[89,2,1,"cmdoption-qp-edit-c"],"-h":[89,2,1,"cmdoption-qp-edit-h"],"-n":[89,2,1,"cmdoption-qp-edit-n"],"-s":[89,2,1,"cmdoption-qp-edit-s"]},qp_export_as_tgz:{"--help":[90,2,1,"cmdoption-qp-export-as-tgz-h"],"-h":[90,2,1,"cmdoption-qp-export-as-tgz-h"]},qp_name:{"-h":[61,2,1,"cmdoption-qp-name-h"],"-r":[61,2,1,"cmdoption-qp-name-r"]},qp_plugins:{"--installed":[91,2,1,"cmdoption-qp-plugins-i"],"--name":[91,2,1,"cmdoption-qp-plugins-n"],"--repositories":[91,2,1,"cmdoption-qp-plugins-q"],"--repository":[91,2,1,"cmdoption-qp-plugins-r"],"--uninstalled":[91,2,1,"cmdoption-qp-plugins-u"],"-i":[91,2,1,"cmdoption-qp-plugins-i"],"-n":[91,2,1,"cmdoption-qp-plugins-n"],"-q":[91,2,1,"cmdoption-qp-plugins-q"],"-r":[91,2,1,"cmdoption-qp-plugins-r"],"-u":[91,2,1,"cmdoption-qp-plugins-u"],download:[91,2,1,"cmdoption-qp-plugins-arg-download"],install:[91,2,1,"cmdoption-qp-plugins-arg-install"],list:[91,2,1,"cmdoption-qp-plugins-arg-list"],uninstall:[91,2,1,"cmdoption-qp-plugins-arg-uninstall"]},qp_run:{"--help":[92,2,1,"cmdoption-qp-run-h"],"--prefix":[92,2,1,"cmdoption-qp-run-p"],"--slave":[92,2,1,"cmdoption-qp-run-s"],"-h":[92,2,1,"cmdoption-qp-run-h"],"-p":[92,2,1,"cmdoption-qp-run-p"],"-s":[92,2,1,"cmdoption-qp-run-s"]},qp_set_frozen_core:{"-q":[93,2,1,"cmdoption-qp-set-frozen-core-q"]},qp_set_mo_class:{"--act":[94,2,1,"cmdoption-qp-set-mo-class-a"],"--core":[94,2,1,"cmdoption-qp-set-mo-class-c"],"--del":[94,2,1,"cmdoption-qp-set-mo-class-d"],"--inact":[94,2,1,"cmdoption-qp-set-mo-class-i"],"--query":[94,2,1,"cmdoption-qp-set-mo-class-q"],"--virt":[94,2,1,"cmdoption-qp-set-mo-class-v"],"-a":[94,2,1,"cmdoption-qp-set-mo-class-a"],"-c":[94,2,1,"cmdoption-qp-set-mo-class-c"],"-d":[94,2,1,"cmdoption-qp-set-mo-class-d"],"-i":[94,2,1,"cmdoption-qp-set-mo-class-i"],"-q":[94,2,1,"cmdoption-qp-set-mo-class-q"],"-v":[94,2,1,"cmdoption-qp-set-mo-class-v"]},qp_stop:{"--cancel":[95,2,1,"cmdoption-qp-stop-c"],"--query":[95,2,1,"cmdoption-qp-stop-q"],"-c":[95,2,1,"cmdoption-qp-stop-c"],"-q":[95,2,1,"cmdoption-qp-stop-q"]},qp_test:{"-a":[62,2,1,"cmdoption-qp-test-a"],"-v":[62,2,1,"cmdoption-qp-test-v"]},scf_utils:{energy:[47,2,1,"cmdoption-scf-utils-arg-energy"],frozen_orb_scf:[47,2,1,"cmdoption-scf-utils-arg-frozen-orb-scf"],level_shift:[47,2,1,"cmdoption-scf-utils-arg-level-shift"],max_dim_diis:[47,2,1,"cmdoption-scf-utils-arg-max-dim-diis"],mo_guess_type:[47,2,1,"cmdoption-scf-utils-arg-mo-guess-type"],n_it_scf_max:[47,2,1,"cmdoption-scf-utils-arg-n-it-scf-max"],scf_algorithm:[47,2,1,"cmdoption-scf-utils-arg-scf-algorithm"],thresh_scf:[47,2,1,"cmdoption-scf-utils-arg-thresh-scf"],threshold_diis:[47,2,1,"cmdoption-scf-utils-arg-threshold-diis"]}},objnames:{"0":["c","function","C function"],"1":["c","var","C variable"],"2":["std","cmdoption","program option"]},objtypes:{"0":"c:function","1":"c:var","2":"std:cmdoption"},terms:{"10f":[8,88],"131st":13,"1st":[0,14,28],"2f0301":7,"2f1":[3,7],"2fac":3,"2fbk":3,"2fcjc":3,"2fct5004252":3,"2fj":[3,7],"2gb":[14,41],"2nd":14,"2x18":0,"2x2":43,"2x24":0,"31g":[88,98],"3ghz":0,"3rd":14,"59th":13,"631g":98,"6b00827":3,"7b01250":3,"7ghz":0,"8b00393":3,"8b00406":3,"8b00591":3,"\u0131":3,"abstract":[18,47],"barth\u00e9l\u00e9mi":1,"break":7,"case":[2,3,29,43,53,63,64,98],"class":[7,14,29,67,94],"default":[7,8,9,10,11,13,15,18,21,22,23,26,27,33,38,39,40,42,43,44,47,56,62,86,87,88,89,91,98],"export":5,"ferr\u00e9":3,"final":[2,91],"float":[54,88],"fran\u00e7oi":1,"function":[0,3,4,6,7,12,21,23,31,44,45,46,48,49,55,60,61,63,64,66,71,72,73,75,76,83,84,89,95],"gr\u00e9goir":1,"import":[9,15,18,25,38,66,98],"int":[8,9,25,39,53,88,89],"long":[2,7,10,12,13,25,35,39,55],"mika\u00ebl":1,"new":[2,3,4,6,7,10,11,16,17,36,39,40,53,54,60,75,77,84,91],"null":20,"public":[2,13],"return":[8,9,10,11,14,22,39,40,53,54,97],"short":[2,22,25,35,55],"switch":40,"true":[2,8,14,15,18,22,29,39,40,41,43,44,47,54,63,64,65,66,81],"try":[5,34,35,47,55,78,80],"universit\u00e9":1,"v\u00e9ril":1,"var":71,"void":[2,36],"while":[15,55],ACS:3,AND:2,AOs:[8,10,11,24,87,88],And:[2,7],BEING:2,BUT:2,But:[2,93],CAS:[4,6,7,14,22,30,45,48,83,87],CIS:[4,6,16,63,81],FOR:2,FPS:47,FeS:3,For:[2,4,6,7,10,11,13,14,22,27,29,31,32,34,35,39,40,47,49,55,56,60,66,78,85,88,93,94],HAS:2,MOS:36,MOs:[0,8,14,16,17,22,24,30,32,34,35,36,37,38,39,40,47,66,67,75,77,78,81,83,84,87,93,94,98],NOT:[2,22],One:[9,21,22,38],SUCH:2,Such:2,THE:[2,8],THERE:2,The:[0,1,2,3,5,7,8,9,10,11,12,13,14,15,18,21,22,23,24,25,30,32,33,34,35,36,38,39,40,42,43,47,48,53,54,55,56,59,60,62,63,66,67,73,78,81,84,85,86,87,88,89,90,91,94,97,98],Then:[76,86,91],There:[7,90,92],These:[2,7,8,13,16,17,25,83,84],USE:2,Use:[55,80],Used:42,Useful:[22,52],Uses:22,Using:[3,51,83],WILL:2,WITH:2,With:61,_alpha:25,_beta:25,a_ao:[36,38],a_cent:[9,53],a_coef:[53,57,58],a_i:[9,10,11],a_mo:[36,38],a_oper:[22,57,58],a_operator_two_:[22,57,58],a_x:[9,10,11,53],a_z:[9,10,11],abort:54,about:60,abov:2,abs:[3,7],abs_psi_coef_max:[22,57,58],abs_psi_coef_min:[22,57,58],absenc:[2,15],absolut:[2,9,29,43],ac_oper:[22,57,58],ac_operator_two_:[22,57,58],acad:13,acceler:[5,7,8,22,92],accept:2,access:[2,10,11,39,40,60,85,90,98],accompani:2,accord:[2,13,22,36,39,40,53],account:[13,81],accumul:[39,40],accur:[3,7,15],accuraci:[13,43],achiev:2,acs:3,act:[2,63,64,67,94,98],act_bitmask:[14,57,58],action:[2,34,35,47,78],activ:[0,2,7,14,30,36,40,47,67,93,94,98],adapt:[3,4,6],add:[2,7,15,25,29,39,40,43,53,55,56,66,88,98],add_integrals_to_map:[11,14,40,53,57,58],add_integrals_to_map_erf:[10,14,39,40,53,57,58],add_integrals_to_map_no_exit_34:[11,14,40,53,57,58],add_integrals_to_map_three_indic:[11,14,40,53,57,58],add_poli:[53,57,58],add_poly_multipli:[10,11,53,57,58],add_task_to_taskserv:[54,57,58],add_to_selection_buff:[15,57,58],added:[7,15,56,88],addit:[2,15,55],address:[2,54],advanc:60,advis:2,after:[22,55,64,89],afterward:[63,64],again:[4,6,34,35,47,78],aggreg:2,ago:7,agre:2,agreement:2,alavi:3,alejandro:3,alfa1:25,algebra:13,algorithm:[4,6,15,18,20,22,29,32,34,35,47,53,66,71,78,81,98],ali:3,all:[2,4,5,6,7,9,10,11,13,14,15,16,17,18,21,22,25,29,31,34,35,36,38,39,40,41,43,47,49,50,55,60,61,62,63,64,66,71,73,78,81,84,87,88,89,91,93,94,97,98],alleg:2,alloc:[14,53],allocat:[8,9,10,11,13,14,15,18,20,21,22,24,25,27,31,32,33,35,36,37,38,39,40,42,47,49,50,53],allow:[2,4,6,7,15,22,43,55,81,98],alon:[4,6],along:2,alpha:[7,9,10,11,12,13,14,15,21,22,24,25,27,32,34,35,43,47,53,76,78,84,98],alpha_knowl:[13,57,58],alphabet:1,alreadi:[16,17,53,60,98],also:[2,4,5,6,7,8,15,22,25,29,36,64,72,84,86,98],alter:2,altern:[2,3,86],alwai:[29,41,43,55,63,64,67,94],american:3,among:[2,7],amplitud:3,analysi:[7,72],anderson:7,andrea:3,ang:3,angl:18,angstrom:42,angular:[9,13,44,53],angular_integr:53,angular_quadrature_point:[13,57,58],ani:[2,4,6,7,12,13,25,34,35,46,47,78,85,94,98],anl:1,announc:2,anoth:[2,7,90,92],anouar:[1,3],answer:[5,60],anthoni:[1,3,7],anyon:2,anyth:[2,5],ao_basi:[56,57,98],ao_cart_to_sphe_coef:[8,9,57,58],ao_cart_to_sphe_inv:[9,53,57,58],ao_cart_to_sphe_num:[9,57,58],ao_cart_to_sphe_overlap:[9,57,58],ao_cartesian:[8,9,28,41,57,58],ao_coef:[8,28,41,52,57,58],ao_coef_norm:[8,53,57,58],ao_coef_normalization_factor:[8,57,58],ao_coef_normalization_libint_factor:[8,53,57,58],ao_coef_normalized_ord:[8,53,57,58],ao_coef_normalized_ordered_transp:[8,9,10,11,32,57,58],ao_coef_normalized_ordered_transp_per_nucl:[8,24,57,58],ao_deriv2_i:[9,57,58],ao_deriv2_x:[8,9,42,53,57,58],ao_deriv2_z:[9,57,58],ao_deriv_1_i:[9,57,58],ao_deriv_1_x:[8,9,42,53,57,58],ao_deriv_1_z:[9,57,58],ao_dipole_i:[9,57,58],ao_dipole_x:[8,9,38,42,53,57,58],ao_dipole_z:[9,57,58],ao_effective_one_e_potenti:[25,57,58],ao_effective_one_e_potential_without_kin:[25,57,58],ao_expo:[8,28,41,52,57,58],ao_expo_ord:[8,57,58],ao_expo_ordered_transp:[8,9,10,11,32,57,58],ao_expo_ordered_transp_per_nucl:[8,24,57,58],ao_i:[9,25],ao_in_r:24,ao_integrals_cach:[11,57,58],ao_integrals_cache_max:[11,57,58],ao_integrals_cache_min:[11,57,58],ao_integrals_e_n:9,ao_integrals_erf_cach:[10,11,57,58],ao_integrals_erf_cache_max:[10,57,58],ao_integrals_erf_cache_min:[10,57,58],ao_integrals_erf_map:[10,11,39,57,58],ao_integrals_kinet:9,ao_integrals_map:[11,32,40,57,58],ao_integrals_n_:[8,9,37,38,42,57,58],ao_integrals_n_e_per_atom:[8,9,38,42,57,58],ao_integrals_overlap:9,ao_integrals_pseudo:9,ao_integrals_threshold:[10,11,28,32,39,40,41,57,58],ao_j:9,ao_kinetic_integr:[9,38,57,58],ao_l4:[11,57,58],ao_l:[8,9,11,52,57,58],ao_l_char:[8,57,58],ao_l_char_spac:[8,52,57,58],ao_l_max:[8,57,58],ao_md5:[8,28,36,41,47,57,58,69,74],ao_mono_int:9,ao_nucl:[8,9,10,11,28,32,41,52,57,58],ao_nucl_elec_integr:9,ao_num:[8,9,10,11,21,22,24,25,28,32,34,35,36,37,38,39,40,41,47,52,56,57,58],ao_one_e_int:9,ao_one_e_integr:[32,34,35,47,57,58],ao_one_e_integrals_diag:[9,57,58],ao_ortho_cano_to_ao:[36,57,58],ao_ortho_canon:9,ao_ortho_canonical_coef:[9,36,37,53,57,58],ao_ortho_canonical_coef_inv:[9,36,53,57,58],ao_ortho_canonical_nucl_elec_integr:[9,36,37,57,58],ao_ortho_canonical_num:[9,57,58],ao_ortho_canonical_overlap:[9,57,58],ao_ortho_lowdin:37,ao_ortho_lowdin_coef:[9,32,37,53,57,58],ao_ortho_lowdin_nucl_elec_integr:[9,36,37,57,58],ao_ortho_lowdin_overlap:[9,37,57,58],ao_overlap:[8,9,36,37,38,42,47,53,57,58],ao_overlap_ab:[8,9,10,11,32,39,40,42,53,57,58],ao_overlap_i:[9,57,58],ao_overlap_x:[9,57,58],ao_overlap_z:[9,57,58],ao_potential_alpha_xc:[25,34,35,57,58],ao_potential_beta_xc:[35,57,58],ao_pow:[8,9,10,11,28,32,41,57,58],ao_power_index:[8,57,58],ao_power_ordered_transp_per_nucl:[8,24,57,58],ao_prim_num:[8,9,10,11,24,28,32,41,52,57,58],ao_prim_num_max:[8,57,58],ao_pseudo_grid:44,ao_pseudo_integr:[9,38,57,58],ao_pseudo_integrals_loc:[8,9,42,53,57,58],ao_pseudo_integrals_non_loc:[8,9,42,53,57,58],ao_spread_i:[9,57,58],ao_spread_x:[8,9,38,42,53,57,58],ao_spread_z:[9,57,58],ao_to_mo:[36,38,57,58],ao_two_e_erf_int:[23,35,39,57],ao_two_e_int:57,ao_two_e_integr:[4,6,11,53,57,58],ao_two_e_integral_alpha:[8,9,11,32,34,35,42,47,57,58],ao_two_e_integral_beta:[32,57,58],ao_two_e_integral_erf:[10,53,57,58],ao_two_e_integral_erf_schwartz:[8,10,39,42,57,58],ao_two_e_integral_schwartz:[8,11,32,40,42,57,58],ao_two_e_integral_schwartz_accel:[11,53,57,58],ao_two_e_integral_schwartz_accel_erf:[10,53,57,58],ao_two_e_integrals_erf_in_map:[8,10,28,39,42,53,54,57,58],ao_two_e_integrals_erf_in_map_collector:[10,54,57,58],ao_two_e_integrals_erf_in_map_slav:[10,11,54,57,58],ao_two_e_integrals_erf_in_map_slave_inproc:[10,57,58],ao_two_e_integrals_erf_in_map_slave_tcp:[10,57,58],ao_two_e_integrals_in_map:[8,11,28,32,39,40,41,42,53,54,57,58],ao_two_e_integrals_in_map_collector:[11,54,57,58],ao_two_e_integrals_in_map_slav:[11,54,57,58],ao_two_e_integrals_in_map_slave_inproc:[11,57,58],ao_two_e_integrals_in_map_slave_tcp:[11,57,58],ao_valu:[8,57,58],aos:[8,9,24,37],aos_arrai:[8,24],aos_dsr_vc_alpha_pbe_w:[25,57,58],aos_dsr_vc_beta_pbe_w:[25,57,58],aos_dsr_vx_alpha_pbe_w:[25,57,58],aos_dsr_vx_beta_pbe_w:[25,57,58],aos_dvc_alpha_pbe_w:[25,57,58],aos_dvc_beta_pbe_w:[25,57,58],aos_dvx_alpha_pbe_w:[25,57,58],aos_dvx_beta_pbe_w:[25,57,58],aos_grad_arrai:8,aos_grad_in_r_arrai:[13,24,25,57,58],aos_grad_in_r_array_transp:[24,57,58],aos_grad_in_r_array_transp_xyz:[24,57,58],aos_in_r_arrai:[13,24,25,57,58],aos_in_r_array_transp:[24,57,58],aos_lapl_arrai:8,aos_lapl_in_r_arrai:[13,24,57,58],aos_lapl_in_r_array_transp:[24,57,58],aos_sr_vc_alpha_lda_w:[13,24,25,57,58],aos_sr_vc_alpha_pbe_w:[13,24,25,57,58],aos_sr_vc_beta_lda_w:[25,57,58],aos_sr_vc_beta_pbe_w:[25,57,58],aos_sr_vx_alpha_lda_w:[25,57,58],aos_sr_vx_alpha_pbe_w:[25,57,58],aos_sr_vx_beta_lda_w:[25,57,58],aos_sr_vx_beta_pbe_w:[25,57,58],aos_sr_vxc_alpha_lda_w:25,aos_transp:8,aos_valu:8,aos_vc_alpha_lda_w:[13,24,25,57,58],aos_vc_alpha_pbe_w:[13,24,25,57,58],aos_vc_beta_lda_w:[25,57,58],aos_vc_beta_pbe_w:[25,57,58],aos_vx_alpha_lda_w:[25,57,58],aos_vx_alpha_pbe_w:[25,57,58],aos_vx_beta_lda_w:[25,57,58],aos_vx_beta_pbe_w:[25,57,58],aos_vxc_alpha_lda_w:25,aos_vxc_alpha_pbe_w:25,api:[56,98],appear:1,append:28,appendix:60,applencourt:[1,3],appli:[2,7,15,22,23,43,49,53],applic:[2,22,54,92],applli:43,apply_excit:[22,57,58],apply_hol:[15,22,57,58],apply_particl:[15,22,57,58],apply_rot:[53,57,58],approach:[3,4,6,7,30],appropri:[2,35],approx:[5,7],approx_dbl:[53,57,58],approxim:15,apr:3,april:2,apt:5,arbitrari:[4,6,22],architectur:[5,86],archiv:[5,92],aren:7,argonn:1,argument:[28,43,55,61],aris:2,around:13,arrai:[9,13,14,18,22,31,38,42,53,56],arxiv:[3,7],ask:[2,5,13,92,95],assaraf:3,assign:55,associ:[2,7,13,91],assum:[2,15,16,17,18,43],asynchron:5,atom:[3,4,6,8,9,10,11,13,36,42,44,93,98],atom_numb:13,atomic_radii:42,attach:[2,8],attempt:2,attract:[9,38],aug:[0,3],author:2,auto:[16,17,97],autoconf:5,autom:60,automat:[2,13,55,60,76,84,93,98],automaticali:42,aux_quant:[21,57,76],avail:[4,6,13,14,18,22,83,85,88,91,92],averag:[22,75,81,84],avoid:[2,7,84,89,94],avx2:5,avx:5,awai:2,awar:39,axi:8,ayer:7,aymer:3,b_00:11,b_01:11,b_10:11,b_center:[9,53],b_coef:[53,57,58],b_x:[9,10,11,53],b_y:[9,10,11],b_z:[9,10,11],back:91,backtick:55,backup:5,bad:18,balanc:2,ban:15,bannedorb:15,bar:7,barri:1,barth:3,barycentric_electronic_energi:[15,22,57,58],base:[2,3,4,6,7,21,32,34,35,47],basenam:55,bash:[5,97,98],basi:[0,3,4,6,8,9,10,11,12,21,22,24,25,32,35,36,38,39,40,47,53,68,76,77,84,87,98],basic:[4,6,47,98],bat:[5,62],bath:[15,83],becaus:[2,55,60,90],beck:[13,42],becke_numerical_grid:[24,57],been:[2,4,5,6,7,15,16,17,29,53,54,91,98],befor:[5,18,22,61,63,64,73,92,98],begin:[36,60],begin_doc:[55,60],behavior:60,believ:2,belong:[7,14,30,40],below:[2,5,15,62,89,98],benali:[1,3],benchmark:3,bender:7,bennet:1,berf:[25,57,58],besid:[4,6],best:[2,7],beta1:25,beta2:25,beta3:25,beta4:25,beta:[9,10,11,12,14,21,22,24,25,27,32,34,35,47,53,76,78,84],better:84,between:[3,9,10,11,15,21,22,25,35,42,43,53,55,88],bias:7,bielctron:11,big_array_coulomb_integr:[22,36,40,50,57,58],big_array_exchange_integr:[40,57,58],bilinear:22,bin:[5,55],binari:[2,5,14,55,90],bind:[54,56],binom:[53,57,58],binom_func:[53,57,58],binom_int:[22,53,57,58],binom_int_transp:[53,57,58],binom_transp:[53,57,58],binomi:53,bit:[14,15,16,17,22],bit_kind:[14,22,31,43,49,56],bit_kind_s:14,bit_kind_shift:14,bitmak:14,bitmask:[18,22,39,40,56,57],bitmask_cas_routin:14,bitmasks_bit_kind:56,bitmasks_modul:14,bitmasks_n_int:56,bitmasks_n_mask_ca:56,bitmasks_n_mask_gen:56,bitmasks_routin:14,bitstr:[14,22,43],bitstring_to_hexa:[14,57,58],bitstring_to_list:[14,22,39,40,57,58],bitstring_to_list_ab:[15,16,17,22,57,58],bitstring_to_list_in_select:[15,57,58],bitstring_to_str:[14,39,40,57,58],bla:5,blank:[55,88],block:55,blondel:3,bodi:[2,12,21,22,25,32,76,84],boggio:3,bond:3,boron:88,boston:2,both:[0,2,7,18,29,66,71],bottleneck:[4,6],boundari:11,box:85,bring:2,broadcast:[14,41],broadcast_chunks_bit_kind:[14,57,58],broadcast_chunks_doubl:[41,57,58],broadcast_chunks_integ:[41,57,58],broadcast_chunks_integer8:[41,57,58],buf:15,buffer:[10,11,15,22,43],buffer_i:[10,11,39,40],buffer_s:43,buffer_valu:[10,11,39,40],build:[5,13,22,25,47,56,60],build_fock_tmp:[14,15,16,17,22,57,58],builder:60,built:[4,6,13,16,17,22],bytauta:7,c0_weight:[15,16,17,22,57,58,66],c_00:11,c_0:22,c_alpha:25,c_center:9,c_f_pointer:[18,53],c_i:[7,22],c_j:22,c_new:53,c_old:53,c_pert:43,c_x:[10,11],c_y:[10,11],c_z:[10,11],cach:[10,11,39,40],cache_map_realloc:[10,11,39,40],caffarel:[1,3,7],calcul:[3,4,6,7,8,9,10,11,12,14,15,16,17,21,22,23,25,29,32,34,35,38,47,48,53,56,60,63,64,66,67,75,76,78,81,83,84,92,94],call:[2,7,8,9,10,11,14,15,16,17,18,22,24,25,28,29,32,33,35,36,37,38,39,40,41,43,47,52,53,54,63,64,65,66,69,70,71,72,73,74,75,76,77,78,79,92,93],calmip:0,can:[2,4,5,6,7,9,12,13,14,16,17,18,21,30,34,35,38,40,47,53,55,56,60,61,63,64,66,68,76,78,80,83,84,85,86,88,89,90,91,92,94,97,98],canadian:3,cancel:95,cannot:[2,13],canon:[9,36,37,53],carbon:93,care:55,carlo:[3,15],carri:2,cart:88,cart_to_sphe_0:[8,57,58],cart_to_sphe_1:[8,9,57,58],cart_to_sphe_2:[8,9,57,58],cart_to_sphe_3:[8,9,57,58],cart_to_sphe_4:[8,9,57,58],cart_to_sphe_5:[8,9,57,58],cart_to_sphe_6:[8,9,57,58],cart_to_sphe_7:[8,9,57,58],cart_to_sphe_8:[8,9,57,58],cart_to_sphe_9:[8,9,57,58],cartesian:[8,9,88],cas:56,cas_bitmask:[14,22,28,41,57,58],cassd:30,caus:2,ccl:13,ccsd:[4,6],celestino:3,cell:13,cell_function_beck:[13,57,58],center:[8,9,13,42],center_of_mass:[42,57,58],central:14,certain:[2,13],cfg:[5,80],ch002:3,champ:83,chandler:1,chang:[2,7,53,61,84,86,89],charact:[8,18,22,23,28,36,42,43,54,55],character:[7,36],charg:[2,13,42,44,88,91],charl:7,check:[28,34,35,38,47,53,55,61,78,89],check_coherence_funct:[35,57,58,69,74],check_mem:[15,18,53,57,58],checksum:36,chem:[3,7,83],chemic:[3,7,88],chemistri:[3,4,6,7,9,38],chemphi:7,chi:8,chi_i:[8,9],chi_j:9,chi_k:36,chimi:1,choic:[2,47],choos:[2,47,81],chosen:[7,14,15,47,56,93],chq:95,christoph:13,chronolog:28,chunk:[14,41],ci_eigenvector:[18,57,58],ci_electronic_energi:[14,15,18,20,22,40,43,53,57,58,66],ci_energi:[15,18,22,28,41,42,43,57,58,66],ci_s2:[18,57,58],cid:7,cipsi:[3,4,6,7,29,57,66,71],circumst:2,cis:[29,57,58,64,66,81,82],cisd:[4,6,7,22,29,57,58,66,82],citat:13,cjc:3,claim:2,claudia:3,clean:[28,92,95],clear:2,clear_ao_erf_map:[10,57,58],clear_ao_map:[11,57,58],clear_bit_to_integ:[14,57,58],clear_mo_erf_map:[39,57,58],clear_mo_map:[40,57,58],click:2,client:[10,11],clock:0,clone:[5,59],close:[88,89],closed_shell_ref_bitmask:[14,57,58],closer:86,cluster:[3,4,6],cnr:1,code:[2,4,5,6,13,15,57,60,83,91],coef:[8,15,22],coef_hf_selector:[14,22,40,49,50,57,58],coef_in:22,coef_out:22,coef_pert_buff:43,coeffici:[8,9,18,22,36,37,43,44,50,53],coher:84,collabor:[4,6],collect:[2,10,11,18,60],collector:[22,54],color:89,column:[7,18,19,22,53],com:[4,5,6,91],combin:[9,16,17],come:[2,32,81,97],comma:55,command:[2,5,28,30,55,60,62,63,78,85,86,88,89,90,91,92,94,96,98],commit:[2,53,61],common:[32,34,35,47,78],commun:[3,54],commut:47,comp:[5,7],compar:[3,7,81],comparison:7,compel:2,compil:[2,5,56,59,60,80,85,90,91],complet:[2,4,6,56,87,97],complex:3,complianc:2,compon:[2,22,24,25,32,34,35,44],compos:22,compound:3,compress:5,comptc:[3,7],comput:[0,1,3,9,10,11,12,13,18,21,22,25,29,33,34,35,39,40,42,43,47,53,54,60,63,64,66,68,76,77,78,81,88,98],computation:[3,7],compute_ao_integrals_erf_jl:[10,11,57,58],compute_ao_integrals_jl:[11,57,58],compute_ao_two_e_integr:[11,57,58],compute_ao_two_e_integrals_erf:[10,57,58],concentr:13,concern:2,condit:[2,66],condon:[3,7],config:[5,80],configur:[3,4,6,15,23,29,56,63,64,66,82],conflict:90,connect:[16,17,22,43,54],connect_to_taskserv:[54,57,58],connected_to_ref:[22,57,58],connected_to_ref_by_mono:[22,57,58],consequ:[2,7],consequenti:2,consid:[2,4,6,15,16,17,18,22,29],consider:[4,6],consist:[2,14,25,36,55,62],conspicu:2,constant:[3,8,14,25,53],constantli:2,constitut:2,constraint:87,construct:[3,26],contact:2,contain:[2,4,5,6,8,12,13,14,16,17,18,22,23,24,25,28,32,34,35,39,40,41,42,47,53,55,56,59,60,71,73,85,86,88,89,90,91,92,98],content:[2,14,89],contest:2,context:54,contract:18,contradict:2,contrari:7,contrast:2,contribut:[1,2,3,7,13,15,22,29,32,39,40,43,49,98],contributionswith:39,control:[2,3,13,56,60],conv:[71,98],convei:2,convent:[4,6,8,10,11,36,39,40,57,88,89],converg:[3,7,12,18,26,34,35,47,56,71,78,81,98],convers:13,convert:8,convert_output_to_ezfio:97,coon:2,coordin:[8,9,13,38,42,98],coordinant:13,copi:[2,5,22,36,59,85,90,91],copy_h_apply_buffer_to_wf:[15,16,17,22,53,57,58],copy_psi_bilinear_to_psi:[22,57,58],copyright:2,core:[0,4,5,6,14,22,25,36,39,40,44,47,63,64,67,88,91,93,94,98],core_bitmask:[14,57,58],core_energi:[14,38,40,42,57,58,67],core_energy_erf:[14,38,39,42,57,58],core_fock_oper:[14,36,40,57,58,67],core_fock_operator_erf:[14,36,39,57,58],core_inact_act_bitmask_4:[14,40,57,58],core_inact_act_virt:14,core_inact_virt_bitmask:[14,57,58],core_quant:40,core_quantities_erf:39,correct:[2,4,6,33,66,73],correctli:53,correl:[3,7,23,25,32,43,50,84],correlation_energy_ratio_max:[15,28,41,43,57,58],correlation_funct:[23,25,35,57,58],correspond:[2,5,7,8,12,18,22,25,54,56,65,66,75,77,84,89,91],cos:9,cost:[2,7],could:[2,7],coulomb:[18,35],count:2,countri:2,coupl:[3,4,6,22,25],cours:[2,7],court:2,cov:88,coval:88,cover:2,cpu:[18,28],cpu_tim:[18,28,39,40,53],crash:[34,35,47,78],creat:[5,10,11,22,29,32,34,35,39,40,47,56,60,61,78,88,89,90,91],create_excit:22,create_ezfio:97,create_guess:[32,36,47,57,58,69,74,78],create_microlist:[14,22,43,57,58],create_minilist:[22,43,57,58],create_minilist_find_previ:[22,43,57,58],create_selection_buff:[15,53,57,58],create_wf_of_psi_bilinear_matrix:[22,57,58],criteria:81,criterion:[7,15,81],cryptokit:5,cst:53,csubset:15,ct5004252:3,cu2:3,cucl2:3,cucl4:3,cup:7,cure:3,current:[4,6,7,9,10,11,12,13,14,15,18,22,29,36,43,53,54,56,60,62,77,84,95,97,98],curs:7,curv:[0,3],customarili:2,cut:10,d_00:11,d_i:[7,50],d_x:[9,10,11],d_y:[9,10,11],d_z:[9,10,11],dager:22,dagger:[22,36,38,84],damag:2,damp:[12,21,76],damping_for_rs_dft:[21,57,58],damping_rs_dft:21,damping_scf:[28,36,47,57,58],danger:2,dash:3,data:[2,42,53,60,87,89,92,98],data_energy_proj:[12,28,41,57,58],data_energy_var:[12,28,41,57,58],data_one_e_dm_alpha_mo:[12,21,28,36,41,57,58,76],data_one_e_dm_beta_mo:[12,21,28,36,41,57,58,76],databas:[15,29,34,35,36,47,60,78,84,86,87,88],date:2,daudei:7,davdison:18,david:[1,3],davidson:[7,15,19,20,22,57,81,95,98],davidson_collector:[18,57,58],davidson_converg:[18,53,57,58],davidson_criterion:[18,57,58],davidson_diag_hjj_sjj:[18,28,53,57,58],davidson_diag_hs2:[18,57,58],davidson_dress:[18,57],davidson_parallel:18,davidson_pull_result:[18,57,58],davidson_push_result:[18,57,58],davidson_run_slav:[18,54,57,58],davidson_slave_inproc:[18,57,58],davidson_slave_tcp:[15,18,57,58],davidson_slave_work:[18,57,58],davidson_sze_max:[18,28,41,57,58],davidson_undress:57,dberfda:[25,57,58],dble_fact:[53,57,58],dble_fact_even:[53,57,58],dble_fact_odd:[53,57,58],dble_logfact:[53,57,58],ddci:[7,14],ddfact2:[53,57,58],ddx:24,ddy:24,ddz:24,deadwood:7,deal:91,debug:11,debug_det:[14,22,57,58],debug_spindet:[14,57,58],dec:[3,7],decid:2,decis:2,declar:55,decod:22,decode_exc:[22,43,57,58],decode_exc_spin:[22,57,58],decomposit:22,decreas:7,dedic:[4,6],defect:2,defin:[5,7,10,11,14,18,21,22,23,30,31,32,36,38,39,40,42,43,44,45,47,48,80,84,86,88,89],definit:[2,3,7,21,34,35,47,54],degre:[11,22,31,50,53],degree_max_gener:[14,22,31,57,58],degree_max_integration_lebedev:[53,57,58],del:[63,64,67,94],del_bitmask:[14,57,58],delet:[36,94],delete_selection_buff:[15,57,58],deloc:3,delta:[10,11],delta_:[71,84],delta_e_per_selector:[50,57,58],deni:[2,3],denomin:15,densiti:[3,4,6,12,21,22,23,24,25,32,75,76,84],density_and_grad_alpha_beta_and_all_aos_and_grad_aos_at_r:[24,57,58],density_for_dft:[23,57,58,69,74,76],density_matrix:22,depend:[2,15,25,55,80],deprec:22,deriv:[2,9,13,24,25],derivative_knowles_funct:[13,57,58],describ:[8,13,27],descript:[2,5,7,80,87],design:[2,4,6],desir:[7,16,17,29,65],det1:[15,22],det2:22,det:[0,15,22],det_1:22,det_2:22,det_alpha_norm:[22,57,58],det_beta_norm:[22,57,58],det_buff:[22,43],det_in:22,det_inf:[22,57,58],det_out:22,det_pert:[22,43],det_ref:[22,43],det_search_kei:[22,57,58],det_to_occ_pattern:[14,15,22,57,58],detail:[2,13,60,85],detcmp:[22,57,58],deteq:[22,57,58],determi:[22,43],determin:[0,3,4,6,7,12,14,15,16,17,18,21,25,29,30,31,33,35,43,47,49,50,51,56,57,63,64,65,66,72,73,81,84,86,89,95,98],determinants_bitmask:22,determinist:[3,4,6,15],dets_in:18,develop:[2,4,6,7,91],developp:[4,6],deviat:72,dft:[4,6,13,21,23,24,25,35,76,87],dft_keyword:57,dft_type:[23,57,58],dft_utils_in_r:57,dft_utils_one_:57,dgemm:[18,36,38,47,53],dgemv:[24,36],dgeqr2:53,dgeqrf:53,dgesvd:53,dgetrf:53,dgetri:53,diag_algorithm:[18,22,57,58],diag_h_mat_elem:[22,57,58],diag_h_mat_elem_fock:[22,57,58],diag_h_mat_elem_one_:[22,57,58],diag_s_mat_elem:[22,57,58],diag_wee_mat_elem:[22,57,58],diagon:[7,15,18,22,43,50,53,81,84,95,98],diagonal_h_matrix_on_psi_det:[14,22,27,57,58],diagonalization_hs2_dress:18,diagonalize_ci:[15,18,43,57,58],diagonalize_fock:47,diagonalize_h:[52,57,58,82],diatom:7,dice:83,diff:61,differ:[2,4,6,12,15,22,43,55,60,71,81],difficulti:81,diffus:3,dii:[34,35,47,56,78],dim:[9,10,11,53],dim_dii:47,dim_in:18,dim_list_act_orb:[14,57,58],dim_list_core_orb:[14,57,58],dim_list_del_orb:[14,57,58],dim_list_inact_orb:[14,57,58],dim_list_virt_orb:[14,57,58],dim_psicoef:22,dimens:[7,13,14,18,22,53],dimensions_integr:8,dimsneion:53,dipol:9,directli:[2,8,25,56,86],directori:[5,28,32,34,35,36,43,47,56,59,60,62,63,66,73,78,85,87,88,89,91,92,94,97,98],disabl:5,discard:[63,64],disclaim:2,disconnect:[7,54],disconnect_from_taskserv:[54,57,58],disconnect_from_taskserver_st:[54,57,58],discret:13,disk:[9,10,11,38,39,40,42],disk_access_nuclear_repuls:[28,41,42,57,58],disk_based_davidson:[18,28,41,57,58],displai:[0,2,61,88,89,92,97],disregard:[63,64],distanc:[42,88],distinguish:2,distribut:[0,2,3,13,15,18,90],distributed_davidson:[15,18,28,41,57,58,66,73],dm_a:24,dm_b:24,dm_dft_alpha_beta_and_all_aos_at_r:[24,57,58],dm_dft_alpha_beta_at_r:[24,57,58],dm_in_r:24,dmitri:13,do_ddci:[29,57,58],do_direct_integr:[11,28,32,39,40,41,57,58],do_mono_excit:[22,57,58],do_only_1h1p:[15,29,57,58],do_pseudo:[9,28,38,41,44,57,58],do_pt2:[15,28,33,41,43,57,58,66],doc:[56,75],document:[2,29,56,60,81,84,86,89,98],doe:[2,5,12,25,34,35,40,47,78,98],doesn:[60,81],doi:[3,7],doing:[5,7],dokl:13,dokladi:13,domin:[63,64],don:[1,55],done:[7,12,13,15,21,36,54,60,98],donor:2,dorg2r:53,dorgqr:53,doubl:[3,7,8,9,10,11,13,14,15,16,17,18,20,21,22,24,25,28,31,32,33,34,35,36,37,38,39,40,42,43,47,49,50,53,55,64],double_exc_bitmask:[14,22,57,58],double_index_selector:[50,57,58],doubli:[14,22,63,64,67,94],down:27,download:[5,80,85,91],downsid:7,dphi:[9,53],dpol:[25,57,58],dpold:[25,57,58],dpoldd:[25,57,58],dr_radial_integr:[13,57,58],dress:[3,18,19,20,26],dress_relative_error:26,dress_zmq:57,dressed_column_idx:[18,22,57,58],dressing_column_:[20,57,58],dressing_column_h:[18,20,22,57,58],dressing_st:18,driven:[4,6,7],driver:98,dscal:53,dset_ord:[18,53,57,58],dset_order_big:[53,57,58],dsort:[15,16,17,36,53,57,58],dswap:18,dsyev:53,dsyevd:53,dsymv:24,dsysvx:47,dtheta:[9,53],dtranspos:[18,53,57,58],due:[4,6,81,90],dummi:[43,88],dump_ao_integr:[11,57,58],dump_ao_integrals_erf:[10,57,58],dump_mo_integr:[40,57,58],duplic:22,dure:[18,47,56,60],dynam:3,e_0:[18,22],e_2_pert:43,e_2_pert_buff:43,e_corr_double_onli:[50,57,58],e_corr_per_selector:[50,57,58],e_corr_second_ord:[50,57,58],e_corr_selector:50,e_correlation_dft:[25,34,35,57,58],e_exchange_dft:[25,34,35,57,58],e_n:[22,43],e_ref:43,e_var:33,e_xc:25,e_xc_gener:25,each:[2,8,13,15,22,24,33,34,35,47,50,60,75,78,81,88,89],easi:[5,7],easili:[4,6,7,55],ec_lda:[25,57,58],ec_lda_sr:[25,57,58],ec_only_lda_sr:[25,57,58],ec_pbe_onli:[25,57,58],ec_pbe_sr:[25,57,58],ecd:25,ecdd:25,echo:[5,55],echo_err:55,eclr:25,ecorrlr:[25,57,58],ecpw:[25,57,58],ecz:25,eczd:25,edit:86,editor:[86,89,98],effect:[2,3,4,6,25,44,95],effective_one_e_potenti:[25,57,58],effective_one_e_potential_without_kin:[25,57,58],effective_pot:25,effici:[3,4,6,7],egin:[4,6,25,91],ei_handl:56,eig:36,eigenfunct:22,eigenst:[4,6,15,18,63,64,98],eigenvalu:[18,25,42,47,53],eigenvalues_fock_matrix_ao:[9,47,57,58],eigenvector:[18,42,47,53,98],eigenvectors_fock_matrix_ao:[47,57,58],eigenvectors_fock_matrix_mo:[14,36,47,57,58],eigevalu:53,eigvalu:53,eigvector:53,either:[2,63,64,80],elctron:[9,38],elec_alpha_num:[14,15,16,17,21,22,25,27,28,36,39,40,41,47,57,58,67],elec_beta_num:[14,21,22,25,27,28,36,41,47,57,58,67],elec_num:[15,22,25,27,28,50,57,58,67],elec_num_tab:[27,57,58],electron:[0,2,3,4,6,7,8,9,10,11,14,18,21,22,25,34,35,38,39,40,47,53,57,63,64,67,68,76,78,79,84,88,93,98],electronic_energi:43,element:[7,9,10,11,18,22,39,40,42,43,50,53,84,88,93],element_mass:[42,57,58],element_nam:[41,42,52,57,58],els:2,emmanuel:[1,3],emphasi:5,employ:2,empti:22,enabl:5,encourag:[4,6,60],end:[2,54,60,92],end_doc:[55,60],end_parallel_job:[15,18,53,54,57,58],end_zmq_pair_socket:[54,57,58],end_zmq_pull_socket:[54,57,58],end_zmq_push_socket:[10,11,15,18,54,57,58],end_zmq_sub_socket:[54,57,58],end_zmq_to_qp_run_socket:[10,11,15,18,54,57,58],energet:43,energi:[3,7,9,12,16,17,18,22,25,26,29,32,33,34,35,38,39,40,42,43,47,50,56,60,69,71,74,81,86,98],energy_c:[25,57,58],energy_c_lda:[25,57,58],energy_c_pb:[25,57,58],energy_iter:[28,33,41,57,58],energy_pt2:29,energy_sr_c_lda:[25,57,58],energy_sr_c_pb:[25,57,58],energy_sr_x_lda:[13,24,25,57,58],energy_sr_x_pb:[13,24,25,57,58],energy_x:[25,35,57,58],energy_x_lda:[13,24,25,57,58],energy_x_pb:[13,24,25,57,58],enforc:2,enlarg:[15,98],enough:[7,18],enter:[5,81,98],entir:[2,7],entiti:60,entri:[10,11,39,40],env:[5,55],environ:[4,5,6,15,28,62,86,89,90],eps:98,epstein:[4,6,7,15,43],epstein_nesbet:43,epstein_nesbet_2x2:43,epstein_nesbet_2x2_no_ci_diag:43,equal:[7,43,81],equat:[7,13,25],equival:[2,53,97],erf0:[53,57,58],erf:[9,10,25,39,79],eri:[11,57,58],eri_erf:[10,57,58],eric:3,ernest:7,error:[3,7,15,26,43,47,55,56,73,94],error_:33,error_matrix_dii:47,especi:[4,6],essenti:[7,28],estim:[7,15,98],etc:[5,23,36,42,53,59,87],eval:5,evalu:[8,24],evangelisti:7,even:[2,7,64],event:2,eventu:66,ever:2,everi:[2,15],everyon:2,everyth:[18,22,36,47,98],everywher:55,eviron:97,ex_lda:[25,57,58],ex_lda_sr:[25,57,58],ex_pbe_sr:[25,57,58],ex_pbe_sr_onli:[25,57,58],exact:[13,35],exampl:[2,5,7,13,14,15,22,47,54,55,56,59,60,85,88,93,94,98],example_becke_numerical_grid:[13,57,58],example_bitmask:[14,57,58],example_determin:[14,22,57,58],example_determinants_psi_det:[22,57,58],example_repositori:91,exc:[14,22],exc_degree_per_selector:[14,22,49,50,57,58],exc_max:43,exc_sr_lda:25,exc_sr_pb:25,exce:29,except:[2,7,40,89,93],exchang:[2,22,23,25,32,35],exchange_funct:[23,25,35,57,58],excit:[0,3,4,6,7,14,15,16,17,22,31,50,63,64,66,72],exclud:2,exclus:2,excus:2,execpt:42,exectu:64,execut:[2,47,54,55,62,63,64,85,91],exercis:2,exist:[4,6,39,40,55,56,60,88],exit:[7,18,53,55,88,89,95],exp:[9,10,11,53],expand:15,expans:55,expect:[9,18,22,25,29,63,93,98],expected_s2:[16,17,18,22,29,57,58,63,64,65,66,81],expens:[7,68],explain:60,explan:[13,85],explicit:[2,7,9,11],explicitli:[35,55],expon:[8,44],express:[2,4,5,6,8,15,22,36,42],expressli:2,ext_modul:85,ext_repo:85,extend:[2,47],extens:55,extent:2,extern:[7,15,59,80,83,91,98],extra:[7,32,55],extra_e_contrib_dens:[32,34,35,47,57,58],extract:[5,7,65,75,89],extrapol:[33,47,53,56,98],extrapolate_data:[53,57,58],extrapolate_fock_matrix:[47,57,58],extrapolated_energi:[22,33,53,57,58],extrpol:15,ezfio:[15,28,34,60,63,64,65,66,67,68,71,72,73,75,76,77,78,79,84,86,87,88,89,92,94],ezfio_dir:[87,88,89,92,93,94,95,97],ezfio_fil:57,ezfio_filenam:[10,11,14,18,22,27,28,32,33,36,39,40,41,42,52,57,58,67,70,71],ezfio_get_determinants_bit_kind:22,ezfio_get_determinants_n_int:22,ezfio_get_determinants_psi_det:22,ezfio_get_hartree_fock_energi:15,ezfio_get_iterations_energy_iter:52,ezfio_get_iterations_n_det_iter:52,ezfio_get_iterations_n_it:52,ezfio_get_iterations_pt2_iter:52,ezfio_has_hartree_fock_energi:15,ezfio_has_mo_basis_mo_coef:32,ezfio_interfac:56,ezfio_nam:56,ezfio_set_ao_two_e_erf_ints_io_ao_two_e_integrals_erf:10,ezfio_set_ao_two_e_ints_io_ao_two_e_integr:10,ezfio_set_aux_quantities_data_one_e_dm_alpha_mo:52,ezfio_set_aux_quantities_data_one_e_dm_beta_mo:52,ezfio_set_determinants_bit_kind:22,ezfio_set_determinants_mo_label:22,ezfio_set_determinants_n_det:22,ezfio_set_determinants_n_int:22,ezfio_set_determinants_n_st:22,ezfio_set_determinants_psi_coef:22,ezfio_set_determinants_psi_det:22,ezfio_set_fci_energi:29,ezfio_set_fci_energy_pt2:29,ezfio_set_hartree_fock_energi:[32,47],ezfio_set_iterations_energy_iter:33,ezfio_set_iterations_n_det_iter:33,ezfio_set_iterations_n_it:33,ezfio_set_iterations_pt2_iter:33,ezfio_set_mo_basis_ao_md5:36,ezfio_set_mo_basis_mo_coef:36,ezfio_set_mo_basis_mo_label:36,ezfio_set_mo_basis_mo_num:36,ezfio_set_mo_basis_mo_occ:36,ezfio_set_mo_one_e_ints_io_mo_integrals_e_n:75,ezfio_set_mo_one_e_ints_io_mo_integrals_kinet:75,ezfio_set_mo_one_e_ints_io_mo_integrals_pseudo:75,ezfio_set_mo_one_e_ints_io_mo_one_e_integr:75,ezfio_set_mo_two_e_erf_ints_io_mo_two_e_integrals_erf:39,ezfio_set_mo_two_e_ints_io_mo_two_e_integr:[39,75],ezfio_set_spindeterminants_bit_kind:22,ezfio_set_spindeterminants_n_det:22,ezfio_set_spindeterminants_n_det_alpha:22,ezfio_set_spindeterminants_n_det_beta:22,ezfio_set_spindeterminants_n_int:22,ezfio_set_spindeterminants_n_st:22,ezfio_set_spindeterminants_psi_coef_matrix_column:22,ezfio_set_spindeterminants_psi_coef_matrix_row:22,ezfio_set_spindeterminants_psi_coef_matrix_valu:22,ezfio_set_spindeterminants_psi_det_alpha:22,ezfio_set_spindeterminants_psi_det_beta:22,ezfio_set_work_empti:[10,11,39,40],ezfio_work_dir:[18,28,57,58],f77_zmq:5,f77_zmq_free:5,f77zmq:5,f90:[10,11,14,39,40,56],f_function_beck:[13,57,58],f_integr:[53,57,58],f_shell_13:43,f_shell_8:[16,17],f_template_102:50,f_template_1291:22,f_template_144:22,f_template_261:53,f_template_293:53,f_template_305:43,f_template_315:53,f_template_347:53,f_template_379:22,f_template_412:53,f_template_440:22,f_template_457:18,f_template_500:22,f_template_564:22,f_template_631:18,f_template_644:53,f_template_97:41,facil:[1,90],facilit:26,fact2:53,fact:[7,53,57,58],fact_inv:[53,57,58],fact_k:53,fact_p:[10,11],fact_q:[10,11],factor:[8,21,22,53],failur:2,faith:55,fals:[8,11,15,18,22,29,40,44,47,64,66],familiar:60,far:15,farnaz:7,fast:[4,6,7,10,11,39,40],faster:[15,22,81],fci:[0,4,6,7,16,17,33,53,55,57,58,63,64,81,82,83,84,92,98],fci_natorb:86,fcidump:[52,57,58,82,83],featur:[4,6,13,14,22],feb:[3,7],fee:2,fermion:22,fert:3,fetch:[10,11,39,40],few:[83,85],fh1:[16,17],fh2:[16,17],fifth:2,file:[1,2,5,8,9,10,11,13,14,15,16,17,18,20,21,22,23,24,25,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,47,49,50,52,53,54,55,56,60,61,67,70,71,80,84,86,87,88,89,90,91,92,98],file_lock:[28,53,57,58],filenam:[10,11,39,40,53],filippi:3,fill:[22,43,87],fill_buffer_doubl:[15,22,57,58],fill_h_apply_buffer_no_select:[15,16,17,22,57,58],fill_h_apply_buffer_select:[22,43,57,58],filter:[7,18,22],filter_connect:[22,57,58],filter_connected_i_h_psi0:[22,57,58],filter_not_connect:[22,57,58],final_grid_point:[13,24,25,57,58],final_weight_at_r:[13,57,58],final_weight_at_r_vector:[13,57,58],find:[9,34,35,38,42,53,78,93],find_hol:14,find_rot:[53,57,58],first:[4,6,7,22,28,43,48,53,72,86,88,91,93,98],fit:[2,15,55,98],fix:[3,10,11,39,40,43],flag:[49,61,62,81],flip:22,floor:2,flore:3,fluorin:3,fly:[7,11,15],fock:[3,4,6,14,16,17,22,31,32,34,35,39,40,47,49,50,51,56,60,78],fock_diag:22,fock_diag_tmp:[15,16,17,22,43],fock_matrix:47,fock_matrix_alpha_no_xc_ao:[35,57,58],fock_matrix_ao:[32,36,38,47,57,58],fock_matrix_ao_:47,fock_matrix_ao_alpha:[9,32,34,35,47,57,58,63,64,69,73,74,78],fock_matrix_ao_beta:[32,57,58],fock_matrix_beta_no_xc_ao:[35,57,58],fock_matrix_diag_mo:[47,57,58],fock_matrix_dii:47,fock_matrix_energi:[34,35,57,58],fock_matrix_hf:[32,47],fock_matrix_k:34,fock_matrix_mo:[14,36,43,47,57,58],fock_matrix_mo_alpha:[32,36,47,57,58],fock_matrix_mo_beta:[32,36,47,57,58],fock_matrix_rs_k:35,fock_operator_closed_shell_ref_bitmask:[14,22,36,38,40,57,58],fock_wee_closed_shel:[14,22,36,40,57,58],focu:5,folder:[12,21,29,64,65,67,68,72,73,75,76,79,86],follow:[1,2,5,7,9,11,16,17,34,35,47,53,56,66,78,85,87,88,97],forbid:2,forbidden:55,forc:[16,17,22,81],form:[2,22,90],formal:3,formaldehyd:7,format:[14,22,28,42,53,55,60,71,88,98],formul:[4,6,7],formula:[13,53,55],fortran77:13,fortran:[13,55,60,98],found:[2,53,56,60],found_dupl:22,foundat:2,four_idx_transform:[52,57,58,82],fps_spf_matrix_ao:[9,47,57,58],fps_spf_matrix_mo:[36,47,57,58],frac:[7,8,9,15,18,22,36,38,39,43],fraction:[22,49],framework:[4,6],fran:[3,7],franc:1,franklin:2,free:[2,10,11,39,40],freedom:[2,4,6],fresg:60,fresh:[5,78],friendli:86,from:[2,3,4,6,7,8,9,10,11,12,13,14,15,18,22,28,32,34,35,36,38,39,40,42,47,48,50,54,63,64,67,68,72,75,76,81,84,87,88,89,91,97,98],frozen:[0,94,98],frozen_orb_scf:[28,41,47,57,58],fs1:[16,17],fs2:[16,17],fsf:2,full:[2,4,6,7,15,29,31,60,66,87,88,98],full_ijkl_bitmask:[14,22,36,57,58],full_ijkl_bitmask_4:[14,39,40,57,58],fulli:[3,22,60],fulllist:22,fullmatch:[15,22],fullnam:2,functgion:87,fundament:24,funni:72,further:[2,63,64,76],futur:84,g0d:[25,57,58],g0dd:[25,57,58],g0f:[25,57,58],g_i:9,g_j:9,galbraith:1,gama:[10,11,53],gamb:53,gamess:[4,6,83,87,88],gamma_:8,gammcf:53,gammln:[53,57,58],gammp:[53,57,58],gamser:53,garniron:[1,3,7],gasperich:[1,3],gather:87,gau:87,gauleg:[11,57,58],gauleg_t2:[8,10,11,57,58],gauleg_w:[11,57,58],gauss:[11,13],gauss_legendr:11,gaussian:[10,11,44,53,83,87,88],gaussian_product:[53,57,58],gaussian_product_x:[53,57,58],gave:[16,17],gcf:[53,57,58],gdb:92,gdd:25,gen:[15,88],genci:0,gener:[2,4,5,6,7,9,13,14,15,16,17,18,22,25,30,31,37,43,48,51,53,56,60,64,84,98],general_primitive_integr:[11,53,57,58],general_primitive_integral_erf:[10,11,53,57,58],generate_all_alpha_beta_det_product:[22,57,58],generate_h_appli:[16,17],generators_bitmask:[14,15,16,17,28,41,57,58],generators_bitmask_restart:[14,28,41,57,58],generators_ca:[48,57],generators_ful:57,geograph:2,geometri:[3,83,87,88],get:[2,10,11,18,22,43,50,54,98],get_all_spin_doubl:[22,57,58],get_all_spin_doubles_1:[22,57,58],get_all_spin_doubles_2:[22,57,58],get_all_spin_doubles_3:[22,57,58],get_all_spin_doubles_4:[22,57,58],get_all_spin_doubles_n_int:[22,57,58],get_all_spin_singl:[22,57,58],get_all_spin_singles_1:[18,22,57,58],get_all_spin_singles_2:[18,22,57,58],get_all_spin_singles_3:[18,22,57,58],get_all_spin_singles_4:[18,22,57,58],get_all_spin_singles_and_doubl:[22,57,58],get_all_spin_singles_and_doubles_1:[18,22,57,58],get_all_spin_singles_and_doubles_2:[18,22,57,58],get_all_spin_singles_and_doubles_3:[18,22,57,58],get_all_spin_singles_and_doubles_4:[18,22,57,58],get_all_spin_singles_and_doubles_n_int:[18,22,57,58],get_all_spin_singles_n_int:[18,22,57,58],get_ao_erf_map_s:[10,57,58],get_ao_map_s:[11,57,58],get_ao_two_e_integr:[11,40,57,58],get_ao_two_e_integral_erf:[10,11,57,58],get_ao_two_e_integrals_erf:[10,39,57,58],get_ao_two_e_integrals_erf_non_zero:[10,11,57,58],get_ao_two_e_integrals_non_zero:[11,57,58],get_d0:[15,22,40,57,58],get_d1:[15,22,40,57,58],get_d2:[15,57,58],get_double_excit:[22,57,58],get_double_excitation_spin:[22,57,58],get_excit:[22,43,57,58],get_excitation_degre:[22,43,57,58],get_excitation_degree_spin:[15,22,57,58],get_excitation_degree_vector:[22,57,58],get_excitation_degree_vector_double_alpha_beta:[22,57,58],get_excitation_degree_vector_mono:[22,57,58],get_excitation_degree_vector_mono_or_exchang:[22,57,58],get_excitation_degree_vector_mono_or_exchange_verbos:[14,22,57,58],get_excitation_spin:[22,57,58],get_index_in_psi_det_alpha_uniqu:[22,57,58],get_index_in_psi_det_beta_uniqu:[22,57,58],get_index_in_psi_det_sorted_bit:[22,57,58],get_invers:[53,57,58],get_mask_phas:[15,57,58],get_mo_erf_map_s:[39,57,58],get_mo_map_s:[40,57,58],get_mo_two_e_integr:[15,40,57,58],get_mo_two_e_integral_erf:[11,39,57,58],get_mo_two_e_integrals_coulomb_ii:[11,40,57,58],get_mo_two_e_integrals_erf:[11,39,57,58],get_mo_two_e_integrals_erf_coulomb_ii:[11,39,57,58],get_mo_two_e_integrals_erf_exch_ii:[11,39,57,58],get_mo_two_e_integrals_erf_i1j1:[11,39,53,57,58],get_mo_two_e_integrals_erf_ij:[11,39,53,57,58],get_mo_two_e_integrals_exch_ii:[11,40,57,58],get_mo_two_e_integrals_i1j1:[11,40,53,57,58],get_mo_two_e_integrals_ij:[11,40,53,57,58],get_mono_excit:[22,57,58],get_mono_excitation_from_fock:[22,57,58],get_mono_excitation_spin:[22,57,58],get_occupation_from_det:[22,57,58],get_phas:[22,57,58],get_phase_bi:[15,57,58],get_phasemask_bit:[22,57,58],get_pseudo_invers:[53,57,58],get_s2:[18,22,57,58],get_task_from_taskserv:[54,57,58],get_tasks_from_taskserv:[54,57,58],get_two_e_integr:[11,40,57,58],get_uj_s2_ui:[22,57,58],get_unit_and_open:28,getenv:54,getmobil:[14,22,43,57,58],getopt:[5,55],getunitandopen:[28,57,58],gfortran:[5,80],gfprint:87,gga:[23,25],gga_sr_type_funct:[25,57,58],gga_type_funct:[25,57,58],gigabyt:53,giner:[1,3,7],git:[5,53,61,91],gitbook:60,github:[5,59],githubusercont:5,gitlab:[4,5,6,59,91],give:[2,4,6,8,13,14,15,22,36],give_all_aos_and_grad_and_lapl_at_r:[8,36,57,58],give_all_aos_and_grad_at_r:[8,24,36,57,58],give_all_aos_at_r:[8,24,36,57,58],give_all_aos_at_r_old:[8,57,58],give_all_erf_kl_ao:[9,57,58],give_all_mos_and_grad_and_lapl_at_r:[8,36,57,58],give_all_mos_and_grad_at_r:[8,36,57,58],give_all_mos_at_r:[8,36,57,58],give_explicit_poly_and_gaussian:[10,11,53,57,58],give_explicit_poly_and_gaussian_doubl:[53,57,58],give_explicit_poly_and_gaussian_x:[53,57,58],give_polynom_mult_center_x:[10,11,57,58],give_polynomial_mult_center_one_:[9,53,57,58],give_polynomial_mult_center_one_e_erf:[9,53,57,58],give_polynomial_mult_center_one_e_erf_opt:[9,53,57,58],given:[2,8,15,22,47,61,88,94,97],glibc:90,gln:53,global:[12,76,91],gnomovis:2,gnu:[2,5,55],gnuplot:98,goal:[2,4,6,15],going:[72,91],good:[29,64,81],gov:1,gpw:[25,57,58],gqj:55,grad_aos_arrai:24,grad_aos_dsr_vc_alpha_pbe_w:[25,57,58],grad_aos_dsr_vc_beta_pbe_w:[25,57,58],grad_aos_dsr_vx_alpha_pbe_w:[25,57,58],grad_aos_dsr_vx_beta_pbe_w:[25,57,58],grad_aos_dvc_alpha_pbe_w:[25,57,58],grad_aos_dvc_beta_pbe_w:[25,57,58],grad_aos_dvx_alpha_pbe_w:[25,57,58],grad_aos_dvx_beta_pbe_w:[25,57,58],grad_dm_a:24,grad_dm_b:24,grad_rho_a_2:25,grad_rho_a_b:25,grad_rho_ab_to_grad_rho_oc:[25,57,58],grad_rho_b_2:25,grad_rho_c_2:25,grad_rho_o_2:25,grad_rho_o_c:25,gradienst:24,gradient:[8,24,25],grant:2,grati:2,grd_rho_a_2:25,grd_rho_a_b:25,grd_rho_b_2:25,greatest:2,grid:[13,24,44],grid_beck:13,grid_becke_vector:13,grid_points_per_atom:[13,24,57,58],grid_points_radi:[13,57,58],grid_type_sgn:[13,57,58],ground:[0,3,4,6,7,15,16,17,22,64,71,72],group:[13,52],gser:[53,57,58],guarante:[2,54],guess:[16,17,18,29,32,34,35,37,47,63,64,66,77,78],guid:2,gzip:5,h0_type:[15,43,57,58],h2o:[87,92],h_appli:[16,17,22,43],h_apply_buffer_alloc:[14,15,16,17,22,43,53,57,58],h_apply_buffer_lock:[22,57,58],h_apply_ci:[16,57,58],h_apply_cis_diexc:[16,57,58],h_apply_cis_diexcorg:[16,57,58],h_apply_cis_diexcp:[16,57,58],h_apply_cis_monoexc:[16,57,58],h_apply_cisd:[17,57,58],h_apply_cisd_diexc:[17,57,58],h_apply_cisd_diexcorg:[17,57,58],h_apply_cisd_diexcp:[17,57,58],h_apply_cisd_monoexc:[17,57,58],h_core:[9,25,37,38],h_core_guess_routin:37,h_jj:18,h_matrix_all_det:[14,18,22,40,57,58],h_matrix_ca:[14,22,40,57,58],h_pert_diag:[22,43],h_s2_u_0_nstates_openmp:[18,53,57,58],h_s2_u_0_nstates_openmp_work:[18,57,58],h_s2_u_0_nstates_openmp_work_1:[18,22,57,58],h_s2_u_0_nstates_openmp_work_2:[18,22,57,58],h_s2_u_0_nstates_openmp_work_3:[18,22,57,58],h_s2_u_0_nstates_openmp_work_4:[18,22,57,58],h_s2_u_0_nstates_openmp_work_n_int:[18,22,57,58],h_s2_u_0_nstates_zmq:[18,53,54,57,58],h_s2_u_0_two_e_nstates_openmp:[18,53,57,58],h_s2_u_0_two_e_nstates_openmp_work:[18,57,58],h_s2_u_0_two_e_nstates_openmp_work_1:[18,22,57,58],h_s2_u_0_two_e_nstates_openmp_work_2:[18,22,57,58],h_s2_u_0_two_e_nstates_openmp_work_3:[18,22,57,58],h_s2_u_0_two_e_nstates_openmp_work_4:[18,22,57,58],h_s2_u_0_two_e_nstates_openmp_work_n_int:[18,22,57,58],hacker:2,hackmey:7,hall:47,hamiltonian:[3,4,6,9,15,18,22,25,26,38,43,65],hand:[60,86],handi:7,handl:[55,98],hartre:[3,4,6,14,16,17,22,25,31,32,47,49,50,51,56,60,78],hartree_fock:[47,56,57,63,98],has:[2,4,6,7,18,36,53,54,55,61,81,84,85,89,97,98],hat:[7,9,15,22,43,98],have:[0,1,2,4,5,6,7,10,11,13,15,16,17,29,39,40,54,55,60,63,64,66,67,81,84,91,93,95,98],hcn:98,hcore:47,hcore_guess:[36,37,57,58],hdoubl:22,heap:53,heap_dsort:[53,57,58],heap_dsort_big:[53,57,58],heap_i2sort:[53,57,58],heap_i2sort_big:[53,57,58],heap_i8sort:[53,57,58],heap_i8sort_big:[53,57,58],heap_isort:[53,57,58],heap_isort_big:[53,57,58],heap_sort:[53,57,58],heap_sort_big:[53,57,58],heat:[15,83],heidar:7,held:2,help:[4,6,25,61,80,88,89,90,92],helper:[14,15,50],henc:[15,34,35,47,78],here:[2,5,7,9,10,11,38,39,40,60,88],herebi:2,herein:2,hereinaft:2,hermit:[53,57,58],hexadecim:14,hf_bitmask:[14,22,31,57,58],hf_energi:[9,32,42,47,57,58,60],hf_exchang:[23,57,58],hf_one_electron_energi:[32,57,58],hf_two_electron_energi:[32,57,58],hierarch:98,hierarchi:98,high:5,higher:[34,35,47,78],highest:36,highli:3,hij:22,hjj:22,hmono:22,holder:2,hole:[7,14,16,17,22,94],hole_1:[16,17],hole_2:[16,17],hole_mask:15,home:89,hope:2,host:[59,85],how:[2,4,5,6,13,14,15,22],howev:[2,7],hpc:90,http:[2,3,4,5,6,7,13,85,91],hub:97,huckel:47,huckel_guess:[32,36,47,57,58],human:[71,86],huron:7,hxc:25,hybrid:[3,4,6,7,15,35],hydrid:7,hydrogen:[42,88],hyperfin:3,hypothet:2,i2radix_sort:[39,40,53,57,58],i2set_ord:[53,57,58],i2set_order_big:[53,57,58],i2sort:[53,57,58],i8radix_sort:[39,40,53,57,58],i8radix_sort_big:[53,57,58],i8set_ord:[53,57,58],i8set_order_big:[53,57,58],i8sort:[15,22,53,57,58],i_ao:9,i_bitmask_gen:[14,16,17,57,58],i_compon:9,i_f:[10,11],i_flip:22,i_gen:[14,15],i_gener:[15,16,17,22,43],i_h_hf_per_selector:[50,57,58],i_h_j:[15,22,43,57,58],i_h_j_double_alpha_beta:[18,22,57,58],i_h_j_double_spin:[18,22,57,58],i_h_j_mono_spin:[18,22,57,58],i_h_j_mono_spin_one_:[22,57,58],i_h_j_one_:[22,57,58],i_h_j_s2:[22,57,58],i_h_j_two_:[22,57,58],i_h_j_verbos:[22,57,58],i_h_psi:[22,43,57,58],i_h_psi_arrai:22,i_h_psi_minilist:[22,43,57,58],i_hol:[14,22],i_ok:22,i_ord:53,i_part:14,i_particl:[14,22],i_phys:14,i_s2_psi_arrai:22,i_s2_psi_minilist:[22,57,58],i_stat:24,i_unit_output:52,i_wee_j_mono:[18,22,57,58],i_x1:[10,11],i_x1_new:[10,11,57,58],i_x1_pol_mult:[11,57,58],i_x1_pol_mult_a1:[11,53,57,58],i_x1_pol_mult_a2:[11,53,57,58],i_x1_pol_mult_one_:[9,53,57,58],i_x1_pol_mult_recur:[11,53,57,58],i_x2_new:[11,57,58],i_x2_pol_mult:[11,53,57,58],i_x2_pol_mult_one_:[9,53,57,58],ian:87,ibm:5,idea:7,ident:[9,37],identif:7,identifi:2,idx:22,idx_ca:[22,57,58],idx_kei:22,idx_microlist:22,idx_minilist:[22,43],idx_non_ca:[22,57,58],iend:18,illustr:[13,14,22,98],imax:18,imin:18,immedi:7,implement:[2,3,4,6,7,34,35,47,78],impli:2,implicit:[5,60],impos:2,improv:[3,7,47,55],inabl:2,inaccur:2,inact:[14,36,40,94],inact_bitmask:[14,57,58],inact_bitmasl:14,inact_virt_bitmask:[14,57,58],inc:2,incident:2,includ:[2,4,5,6,8,13,14,16,17,30,31,47,51,60,81],incompat:84,incorpor:[2,3],increas:[8,13,55,81,98],inde:[38,60],indent:55,independ:2,index:[7,8,13,14,15,18,22,36,39,40,50,68],index_det_sav:22,index_final_point:[13,57,58],index_final_points_revers:[13,57,58],index_holes_bitmask:[14,57,58],index_particl_bitmask:[14,57,58],indic:[2,10,11,13,22,39,40,53,91],indirectli:2,individu:2,induc:[2,4,6],inequ:[10,11],inertia:42,inertia_tensor:[42,57,58],inertia_tensor_eigenvalu:[42,57,58],inertia_tensor_eigenvector:[42,53,57,58],inform:[2,24,60,72],infring:2,infti:[9,13,53],ingredi:[4,6],inidic:[14,15,22],init:5,initi:[14,15,18,22,28,34,35,36,41,47,78],initialize_bitmask_to_restart_on:[14,57,58],initialize_mo_coef_begin_iter:[36,47,57,58],initialize_pt2_e0_denomin:[15,57,58],inproc:54,input:[5,8,18,22,24,25,53,60,88,89,91,97],input_bimask:14,input_dens:21,insert:53,insert_into_ao_integrals_erf_map:[10,57,58],insert_into_ao_integrals_map:[11,57,58],insert_into_mo_integrals_erf_map:[39,57,58],insert_into_mo_integrals_map:[40,57,58],insertion_dsort:[53,57,58],insertion_dsort_big:[53,57,58],insertion_i2sort:[53,57,58],insertion_i2sort_big:[53,57,58],insertion_i8sort:[53,57,58],insertion_i8sort_big:[53,57,58],insertion_isort:[53,57,58],insertion_isort_big:[53,57,58],insertion_sort:[53,57,58],insertion_sort_big:[53,57,58],insid:[7,60],insight:3,instal:[2,59,80,85,90,91],instanc:[4,6,13,30,92],instead:[2,7,47,55,64],instruct:[5,60,97],int_0:53,int_:[9,53],int_erf_3_index:[36,39,57,58],int_erf_3_index_exc:[39,57,58],int_gaus_pol:[9,57,58],intact:2,integ:[8,9,10,11,13,14,15,18,22,27,28,31,33,36,39,40,41,42,43,49,50,53,54,56,88],integr:[2,4,6,7,8,9,10,11,13,22,25,34,35,38,39,40,47,53,68,78,79,84],integrale_new:[11,57,58],integrale_new_erf:[10,11,57,58],integrals_3_index:40,integrals_ao:9,integrals_erf_in_map_slav:10,integrals_in_map_slav:11,integration_radi:13,intel:[5,55],intend:[2,30,31],intens:7,intent:[2,43],inter:60,interact:[2,3,4,6,9,10,15,22,25,29,35,38,39,63,64,66,86],interchang:2,interest:[2,9,15,25,38,66],interfac:[2,5,8,44,54,56],intermedi:[3,72],intern:[7,15,98],internet:90,interplai:3,interpret:22,introduc:[2,7],ints_erf_3_index:39,inv_int:[53,57,58],inv_selectors_coef_hf:[50,57,58],inv_selectors_coef_hf_squar:[50,57,58],invalid:[2,84],invari:13,invers:[9,13,42,53],invert:89,invok:28,involv:[9,11],io_ao_integrals_e_n:[9,28,41,57,58],io_ao_integrals_kinet:[9,28,41,57,58],io_ao_integrals_overlap:[9,28,41,57,58],io_ao_integrals_pseudo:[9,28,41,57,58],io_ao_one_e_integr:[9,28,41,57,58,69,74],io_ao_two_e_integr:[11,28,41,57,58,79],io_ao_two_e_integrals_erf:[10,28,41,57,58],io_mo_integrals_e_n:[28,38,41,57,58],io_mo_integrals_kinet:[28,38,41,57,58],io_mo_integrals_pseudo:[28,38,41,57,58],io_mo_one_e_integr:[28,38,41,57,58,69,74],io_mo_two_e_integr:[28,40,41,57,58,68,79],io_mo_two_e_integrals_erf:[28,39,41,57,58],iorb:22,iorder:53,iorder_p:[10,11],iorder_q:[10,11],iproc:[10,11,15,18,22,43],iproc_in:[16,17],iradix:53,iradix_sort:[39,40,53,57,58],iradix_sort_big:[53,57,58],irangl:22,irp:[5,8,9,10,11,13,14,15,16,17,18,20,21,22,23,24,25,27,28,29,31,32,33,34,35,36,37,38,39,40,41,42,43,47,49,50,52,53,54,55,56],irp_ind:55,irpf90:[4,6,60],irpf90_path:5,irsamc:1,is_a_1h1p:[14,57,58],is_a_1h2p:[14,57,58],is_a_1h:[14,57,58],is_a_1p:[14,57,58],is_a_2h1p:[14,57,58],is_a_2h:[14,57,58],is_a_2p:[14,57,58],is_a_two_holes_two_particl:[14,57,58],is_connected_to:[22,57,58],is_connected_to_by_mono:[22,57,58],is_i_in_virtu:[14,57,58],is_in_wavefunct:[22,57,58],is_spin_flip_poss:[22,57,58],is_the_hole_in_det:[14,57,58],is_the_particl_in_det:[14,57,58],is_zmq_slav:[54,57,58,66,73],iset_ord:[53,57,58],iset_order_big:[53,57,58],ishift:[18,54],isiz:[22,53],isort:[15,53,57,58],isotrop:3,ispin:[14,22],issu:2,istart:18,istat:[22,24,71],istep:18,item:2,iter:[0,7,15,18,26,34,35,36,47,57,78,98],iteration_scf:47,ith:[8,9,13,14,22,24,37,53],its:[2,7,24,32,61,62],itself:[2,7,68],iunit:[28,53],j_ao:9,j_ij:[39,40],jacquemin:3,jame:[2,7],jan:3,jastrow:3,jcp:[13,42],jctc:3,jean:[3,7],jeziorski:[3,4,6],job:[54,92],journal:[3,7,13],jrangl:[22,36],jth:[8,9,13,24,36,37],judgment:2,jul:[3,7],julien:[1,3],jun:[3,7],june:2,jussieu:1,just:[5,84,86,91,98],k_ij:[39,40],keep:[2,7,36,98],kei:[8,14,22,97],kept:[7,49],kernel:2,kevin:[1,3],key1:22,key2:22,key_i:22,key_in:[14,16,17,22],key_j:22,key_mask:[16,17,22,43],key_out:22,key_prev:[16,17],keys_tmp:[18,22],keyword:[13,16,17,21,23,29,34,35,47,78,84,86,87,91],kin_ao_int:9,kin_mo_int:38,kind:[2,7,14],kindli:13,kinet:[9,25,38],klau:7,know:[2,7,55,60],knowl:[7,13],knowles_funct:[13,57,58],known:[7,84],kohn:[4,6,32,34,35],kohn_sham:[47,57,69,74],kohn_sham_r:57,krangl:36,ks_energi:[34,57,58],ks_eneri:34,ks_scf:[21,25,34,57,58,82],kth:[14,24],l_in:15,l_to_charat:[8,57,58],l_x:53,l_y:53,l_z:53,label:[13,22,28,36,42],laboratoir:1,laikov:13,laimuti:7,langl:[7,9,15,18,22,38,39,43,50,84],languag:[2,5,55],lapack:[5,22],lapack_diag:[18,36,53,57,58],lapack_diagd:[53,57,58],laplacian:24,larg:[4,6,53,86,89,92],larger:7,largest:[7,43,49],last:[13,15,53],late:7,later:2,latest:[5,96],latex:55,law:2,lcpq:5,lct:1,lda:[14,23,25,36,41,53],lda_ao:[36,38],lda_mo:[36,38],ldb:53,ldc:53,ldr:53,ldu:53,ldvt:53,ldx:53,leadership:1,least:[2,14,66],leav:47,lebedev:[13,53],left:[8,84,93],leftmost:[18,53],legal:2,legendr:11,lemi:3,length:55,less:[4,6,7,15,86,88],lesser:2,let:91,letter:7,level:[34,35,47,53,78],level_shift:[28,32,34,35,41,47,57,58,63,64,69,73,74,78],levi:25,liabl:2,lib:[5,56],libf77zmq:5,libint:8,librari:[2,4,5,6,54,60,83,87,90],libsodium:5,libzmq:5,license:2,licensor:2,life:[4,6],ligand:3,like:[2,5,7,14,16,17,29,63,64,66,92,94],limit:[2,4,6,33,53,90,92],line:[2,5,28,55,60,62,88,97],linear_algebra:53,link:[2,60,85,91],linux:5,list:[1,7,8,14,15,22,50,54,56,60,85,88,91,92],list_act:[14,57,58],list_act_revers:[14,57,58],list_cor:[14,36,57,58],list_core_inact_act:[14,36,57,58],list_core_inact_act_revers:[14,57,58],list_core_revers:[14,57,58],list_del:[14,57,58],list_del_revers:[14,57,58],list_inact:[14,36,39,40,47,57,58,67],list_inact_revers:[14,57,58],list_supported_typ:56,list_to_bitstr:[14,57,58],list_virt:[14,57,58],list_virt_revers:[14,57,58],lithium:93,lmax:88,load:[5,46,97],load_ao_integr:[11,57,58],load_ao_integrals_erf:[10,57,58],load_mo_integr:[40,57,58],load_mo_integrals_erf:[39,57,58],local:[9,36,44,55,59,88,91],locat:[5,22,91],lock:[22,28],log:13,logfact2:53,logfact:[53,57,58],logic:[10,11,14,15,22,28,29,39,40,41,54],longer:55,loo:[1,3,7],look:[22,86],loop:7,lorenzo:[1,3],loss:2,lot:[5,7,72],low:7,lowdin:77,lower:[43,53],lower_exp_v:[9,53],lowercas:[53,54,55,57,58],lowest:[16,17,18,36,53,63,64,65,66],lpha:22,m_knowl:[13,57,58],machin:[2,89,90],made:[2,94],madelin:1,magnitud:7,mai:[2,5,18,60,81],mail:2,main:[4,6,10,12,13,14,16,17,20,22,23,24,29,34,35,47,54,55],maintain:1,major:[2,22],make:[2,4,5,6,7,60,81,83,86,96,98],make_s2_eigenfunct:[15,16,17,22,28,57,58],make_selection_buffer_s2:[15,22,53,57,58],malrieu:[3,7],man:97,manag:5,mandatori:88,mani:[2,10,11,22,25,39,40,63,64,84,91],manipul:14,manual:[13,60],map:[7,10,11,13,18,39,40,53],map_append:[10,11],map_deinit:[10,11,39,40],map_funct:53,map_get:[10,11,39,40],map_get_mani:[39,40],map_integr:[11,40],map_integrals_erf:[10,39],map_load_from_disk:[53,57,58],map_merg:[39,40],map_modul:[10,11,39,40],map_save_to_disk:[10,39,53,57,58],map_sort:[10,11,39,40,53],map_typ:[10,11,39,40],map_upd:[39,40],mar:3,markov:13,martial:3,mask:[14,15,16,17],mask_ijk:40,mask_ijkl:[39,40],mass:42,massiv:[4,6],master:[5,18,54],mat:15,match:[18,53],math:[8,9,13],mathemat:[13,55],mathrm:88,mathtt:25,matric:[12,75],matrix:[7,8,9,12,18,21,22,25,32,34,35,36,37,38,43,47,50,53,63,64,75,77,84,88],max:[8,10,11,22,31,36,39,40],max_degree_exc:[14,22,57,58],max_dim_dii:[28,41,47,56,57,58],max_exc_pert:[43,57,58],maximum:[8,22,26,29,44,47,53,55,56,81],maxval:8,md5:[8,36],mean:[2,60,86,91],meant:47,measur:[0,15],medium:2,meet:2,melvyn:7,memo:31,memori:[4,6,7,10,11,18,34,35,39,40,47,53,78],memory_of_doubl:[53,57,58],memory_of_int:[53,57,58],mention:55,menu:2,merchant:2,mere:2,merg:15,merge_selection_buff:[15,53,57,58],messag:[5,54,55,61,80,90],meta:55,metal:3,method:[4,5,6,7,12,14,15,16,17,34,35,47,51,78,98],methodolog:[4,6],michel:[1,3,7],micro:18,microlist:22,might:[24,39,91],million:[15,98],min:[10,11,22,36,39,40],minf:15,minilist:[22,43],minim:[5,15],minimum:[13,22],minut:5,miss:[5,7],mix_mo_jk:[36,57,58],mmap:[18,53],mo_:77,mo_as_eigvectors_of_mo_matrix:[28,32,36,37,47,53,57,58],mo_as_svd_vectors_of_mo_matrix:[28,36,53,57,58],mo_as_svd_vectors_of_mo_matrix_eig:[22,28,36,53,57,58],mo_basi:[34,35,47,57,69,74],mo_bi_integr:40,mo_bi_integrals_erf:39,mo_class:[14,28,36,40,41,57,58,67],mo_coef:[9,21,22,25,28,32,36,37,38,39,40,41,47,52,57,58,63,64,69,73,74,77,78],mo_coef_begin_iter:[36,57,58],mo_coef_in_ao_ortho_basi:[9,36,57,58],mo_coef_transp:[24,36,39,40,57,58],mo_dipole_i:[38,57,58],mo_dipole_x:[9,36,38,57,58],mo_dipole_z:[38,57,58],mo_guess:57,mo_guess_typ:[28,32,41,47,57,58],mo_i:38,mo_in_r:24,mo_integrals_cach:[11,40,57,58],mo_integrals_cache_max:[40,57,58],mo_integrals_cache_max_8:[40,57,58],mo_integrals_cache_min:[36,40,57,58],mo_integrals_cache_min_8:[40,57,58],mo_integrals_e_n:38,mo_integrals_erf_cach:[11,39,57,58],mo_integrals_erf_cache_max:[39,57,58],mo_integrals_erf_cache_min:[36,39,57,58],mo_integrals_erf_map:[11,25,36,39,57,58],mo_integrals_kinet:38,mo_integrals_map:[11,15,22,25,36,40,50,57,58,67],mo_integrals_map_erf:39,mo_integrals_n_:[9,22,25,36,38,57,58],mo_integrals_n_e_per_atom:[9,36,38,57,58],mo_integrals_pseudo:38,mo_integrals_threshold:[28,39,40,41,57,58,67],mo_j:38,mo_kinetic_integr:[9,22,25,36,38,57,58],mo_label:[22,28,32,36,37,38,41,47,57,58,69,74,77,78],mo_mono_int:38,mo_num:[9,14,15,16,17,21,22,24,25,28,36,37,38,39,40,41,43,47,52,57,58,69,74],mo_occ:[22,28,36,41,47,57,58,69,74,75],mo_one_e_int:38,mo_one_e_integr:[15,22,32,36,37,39,40,57,58,67],mo_ortho_lowdin:37,mo_overlap:[9,36,38,57,58],mo_pseudo_grid:44,mo_pseudo_integr:[9,36,38,57,58],mo_spread_i:[38,57,58],mo_spread_x:[9,36,38,57,58],mo_spread_z:[38,57,58],mo_to_ao:[38,57,58],mo_to_ao_no_overlap:[38,57,58],mo_two_e_erf_int:57,mo_two_e_int:57,mo_two_e_int_erf_jj:[36,39,57,58],mo_two_e_int_erf_jj_anti:[39,57,58],mo_two_e_int_erf_jj_anti_from_ao:[39,57,58],mo_two_e_int_erf_jj_exchang:[39,57,58],mo_two_e_int_erf_jj_exchange_from_ao:[39,57,58],mo_two_e_int_erf_jj_from_ao:[9,10,36,39,57,58],mo_two_e_integr:[4,6,40,57,58],mo_two_e_integral_erf:[39,57,58],mo_two_e_integral_jj_from_ao:[9,11,36,39,40,57,58],mo_two_e_integrals_erf_in_map:[10,11,14,25,28,36,39,53,57,58],mo_two_e_integrals_erf_index:[39,57,58],mo_two_e_integrals_in_map:[11,14,15,16,17,18,22,25,28,36,40,41,50,53,57,58,66,67,68,73],mo_two_e_integrals_index:[39,40,57,58],mo_two_e_integrals_jj:[22,36,39,40,57,58],mo_two_e_integrals_jj_anti:[39,40,57,58],mo_two_e_integrals_jj_anti_from_ao:[39,40,57,58],mo_two_e_integrals_jj_exchang:[39,40,57,58],mo_two_e_integrals_jj_exchange_from_ao:[39,40,57,58],mo_two_e_integrals_vv_anti_from_ao:[40,57,58],mo_two_e_integrals_vv_exchange_from_ao:[40,57,58],mo_two_e_integrals_vv_from_ao:[9,11,14,36,40,57,58],mobil:22,mode:[2,28,62,86],model:[10,23,47],modif:2,modifi:[1,2,5,14,36,60,89,97,98],modify_bitmask:14,modify_bitmasks_for_hol:[14,57,58],modify_bitmasks_for_hole_in_out:[14,57,58],modify_bitmasks_for_particl:[14,57,58],modul:[2,4,5,6,8,10,12,13,15,16,17,18,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,42,44,45,46,47,51,52,56,60,63,76,85,89,91,97,98],module_scf_util:32,molden:[52,57,58,82,83],molecul:[0,3,7,42,43,88,98],molecular:[4,6,36,83,87],moller:43,moller_plesset:43,moment:27,momentum:44,monika:3,monkhorst:[3,4,6],mono:[22,35,38],mono_excitation_we:[22,57,58],mono_excitations_bielec:22,mont:[3,15],moor:1,more:[2,7,13,15,24,54,85,89,98],moroni:3,mos:[9,36,37,67],mos_arrai:36,mos_grad_arrai:36,mos_grad_in_r_arrai:[13,24,57,58],mos_grad_in_r_array_transp:24,mos_in_r:36,mos_in_r_arrai:[13,24,57,58],mos_in_r_array_transp:[24,57,58],mos_lapl_arrai:36,mos_lapl_in_r_arrai:[13,24,57,58],mos_lapl_in_r_array_transp:24,most:[2,9,15,22,24,25,38,77,85,97,98],mostli:[13,60],mountain:3,mous:2,move:5,mp2:[4,6],mpi:[14,57],mpi_bit_kind:[14,57,58],mpi_initi:[18,28,41,57,58],mpi_mast:[11,14,15,18,22,28,31,33,36,40,41,42,49,50,53,54,57,58],mpi_print:[15,41,57,58],mpi_rank:[15,41,57,58],mpi_siz:[41,57,58],mpirun:97,mrcc:45,mrpt:[4,6,45],msync:53,mu_erf:[10,23,25,28,35,39,41,57,58],mu_erf_dft:[25,57,58,69,74],mu_in:9,much:[7,22,63,64],multi:[3,4,6,21,23,25,29,63,64,75,81],multiconfigur:7,multipl:[4,6,10,11,29,39,40,54,60,63,64,81,88],multipli:53,multiply_poli:[9,10,11,53,57,58],multirefer:[3,7],munmap:18,must:[2,47,55],mxn:53,my_plugin:59,n_act_orb:[14,57,58],n_alpha:[22,24],n_aos_max:[8,57,58],n_beta:24,n_cas_bitmask:[14,22,28,41,57,58],n_core_inact_act_orb:[14,57,58],n_core_inact_orb:[14,57,58],n_core_orb:[14,15,28,36,39,40,41,47,57,58,67],n_core_orb_alloc:[14,57,58],n_data:53,n_del_orb:[14,57,58],n_det:[15,16,17,18,20,22,28,31,33,36,41,43,49,53,56,57,58,66,71],n_det_:33,n_det_alpha_uniqu:[22,57,58],n_det_beta_uniqu:[22,57,58],n_det_ca:[22,57,58],n_det_gener:[15,16,17,22,28,31,41,43,49,50,57,58],n_det_iter:[28,33,41,57,58],n_det_max:[15,22,28,29,41,57,58,66],n_det_max_ful:[22,28,41,57,58],n_det_non_ca:[22,57,58],n_det_print_wf:[22,28,41,57,58,86],n_det_selector:[15,22,28,31,41,43,49,50,57,58],n_doubl:22,n_double_exc_bitmask:[22,57,58],n_double_selector:[50,57,58],n_elec:25,n_element:[14,15,22],n_fulllist:22,n_generators_bitmask:[14,15,28,41,57,58],n_generators_bitmask_restart:[14,28,41,57,58],n_in:15,n_inact_orb:[14,57,58],n_inact_orb_alloc:[14,57,58],n_int:[14,15,16,17,18,22,28,31,36,39,40,41,43,49,50,56,57,58],n_integr:[10,11,39,40],n_it_max_dressed_ci:26,n_it_scf_max:[28,41,47,57,58],n_iter:[15,28,33,41,57,58],n_kei:22,n_mask_ca:56,n_mask_gen:56,n_microlist:22,n_minilist:[22,43],n_occ_pattern:[22,57,58],n_occ_pattern_:33,n_past_in:22,n_points_final_grid:[13,24,25,57,58],n_points_grid_per_atom:[13,57,58],n_points_integration_angular:[13,24,57,58],n_points_integration_angular_lebedev:[53,57,58],n_points_radial_grid:[13,24,57,58],n_pt:[10,11],n_pt_in:[9,11],n_pt_max_i_x:[8,57,58],n_pt_max_integr:[8,9,10,11,32,57,58],n_pt_out:[9,11,53],n_pt_sup:[11,57,58],n_sel:15,n_select:[22,43],n_singl:22,n_single_exc_bitmask:[22,57,58],n_st:[18,22,33,43],n_st_diag:18,n_st_diag_in:18,n_state:[15,16,17,18,20,21,22,24,25,28,29,31,33,41,43,49,50,52,57,58,63,64,65,66,73,81],n_states_diag:[15,18,28,41,57,58,81],n_task:[15,54],n_virt_orb:[14,57,58],n_virt_orb_alloc:[14,57,58],n_x:8,n_z:8,nai_pol_mult:[9,57,58],nai_pol_mult_erf:[9,57,58],nai_pol_mult_erf_ao:[9,57,58],name:[2,8,23,28,36,42,54,55,56,59,60,61,62,87,88,91,92],name_in:54,natur:[7,22,36,63,64,75,81],ndet:[22,43,89],ndet_max:22,ndetsav:22,necessari:[2,12,13,15,66,87,98],necessarili:18,neci:83,need:[2,5,8,9,10,11,13,14,15,16,17,18,20,21,22,23,24,25,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,46,47,49,50,52,53,54,56,59,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,79,85,87,92,98],needed_modul:91,neg:86,nesbet:[4,6,7,15,43],nest:55,net:[5,13],network:5,neuscamman:3,never:[55,60,63,64,67,94],nevertheless:13,new_nam:61,new_parallel_job:[15,18,53,54,57,58],new_siz:22,new_zmq_pair_socket:[54,57,58],new_zmq_pull_socket:[54,57,58],new_zmq_push_socket:[54,57,58],new_zmq_sub_socket:[54,57,58],new_zmq_to_qp_run_socket:[54,57,58],next:13,nh2:0,nichola:7,nicola:3,ninja:[60,85,91],nint:[14,15,18,22,43],ninth:13,nmax:53,nmax_coef:22,nmax_kei:22,no_ivvv_integr:[28,40,41,57,58],no_vvv_integr:[28,40,41,57,58],no_vvvv_integr:[28,40,41,57,58],nodal:3,node:[0,3,13],nois:81,non:[9,10,11,13,44,90],non_zero_int:[10,11],noncommerci:2,none:[9,10,11,38,39,40,42,60,84],nonetheless:7,nonrelativist:3,norm:[7,15,22,49],norm_:33,norm_l3:22,norm_pert:22,normal:[2,5,8,18,22,36,42,53,57,58,72],notat:14,note:[7,9,13,15,38,53,64,81],noth:[2,7],notic:[2,7],notin:7,notion:7,nov:3,novemb:7,now:[59,85,91,98],nproc:[10,11,15,18,22,53,57,58],nstate:22,ntask:15,nthreads_davidson:[18,28,41,53,57,58],nthreads_pt2:[15,28,41,53,57,58],nucl_ao:[8,57,58],nucl_aos_transpos:[8,24,57,58],nucl_cent:53,nucl_charg:[9,13,28,41,42,52,57,58],nucl_charge_remov:[28,41,44,57,58],nucl_coord:[8,9,10,11,13,24,28,32,41,42,52,57,58],nucl_coord_transp:[13,42,57,58],nucl_dist:[42,57,58],nucl_dist_2:[42,57,58],nucl_dist_inv:[13,42,57,58],nucl_dist_vec:42,nucl_dist_vec_i:[42,57,58],nucl_dist_vec_x:[42,57,58],nucl_dist_vec_z:[42,57,58],nucl_label:[28,41,42,57,58],nucl_list_shell_ao:[8,52,57,58],nucl_n_ao:[8,24,57,58],nucl_num:[8,9,13,24,28,38,41,42,52,57,58],nucl_num_shell_ao:[8,57,58],nuclear:[9,13,18,25,32,34,35,38,42,44,98],nuclear_repuls:[15,18,28,32,34,35,39,40,41,42,47,57,58],nuclei:[13,57,98],nucleu:[8,9,38,42],null_dressing_vector:20,number:[0,2,7,8,10,11,13,14,15,16,17,18,22,24,26,27,29,31,33,36,39,40,41,42,43,44,47,49,50,53,62,66,67,81,86,88,89,93,94],number_of_hol:[14,57,58],number_of_holes_verbos:[14,57,58],number_of_particl:[14,57,58],number_of_particles_verbos:[14,57,58],numer:[8,13,81],nwchem:[4,6],nxn:53,obei:[13,56],object:2,oblig:2,obtain:[2,7,9,12,15,22,25,28,47,54,56,75,84,86,88,98],ocaml:[56,90,98],ocamlbuild:5,occ:22,occ_pattern:22,occ_pattern_of_det:[22,57,58],occ_pattern_search_kei:[22,57,58],occ_pattern_to_det:[15,22,57,58],occ_pattern_to_dets_s:[15,22,57,58],occup:[7,14,22,36,63,64,84],occupi:[14,63,64,67,94],occur:61,oct:[3,7],octahedron:13,offer:2,ois:[3,7],oldest:90,omp_lock_kind:[22,28,54],omp_set_lock:[22,43,53,54],omp_set_nest:[15,18],omp_unset_lock:[22,43,53,54],onc:[4,6,29,84,86],ondens:84,one:[0,2,4,6,7,9,10,11,12,14,15,16,17,21,22,25,32,34,35,38,39,40,47,55,56,66,76,78,84,86,90,98],one_body_dm_mo_alpha_one_det:[21,57,58],one_body_dm_mo_beta_one_det:[21,57,58],one_e_dm_alpha_ao_for_dft:[21,24,57,58],one_e_dm_alpha_at_r:[13,21,24,25,57,58],one_e_dm_alpha_in_r:[13,21,24,57,58],one_e_dm_and_grad_alpha_in_r:[13,21,24,25,57,58],one_e_dm_and_grad_beta_in_r:[24,57,58],one_e_dm_ao_alpha:[22,36,57,58],one_e_dm_ao_beta:[22,57,58],one_e_dm_average_mo_for_dft:[21,25,57,58],one_e_dm_beta_ao_for_dft:[21,57,58],one_e_dm_beta_at_r:[24,57,58],one_e_dm_beta_in_r:[24,57,58],one_e_dm_dagger_mo_spin_index:[22,36,57,58],one_e_dm_mo:[22,36,57,58],one_e_dm_mo_alpha:[14,21,22,36,52,57,58],one_e_dm_mo_alpha_averag:[22,36,57,58],one_e_dm_mo_alpha_for_dft:[21,25,57,58],one_e_dm_mo_beta:[22,57,58],one_e_dm_mo_beta_averag:[22,57,58],one_e_dm_mo_beta_for_dft:[21,25,57,58],one_e_dm_mo_diff:[22,36,57,58],one_e_dm_mo_for_dft:[21,25,57,58],one_e_dm_mo_spin_index:[22,36,57,58],one_e_energi:[34,35,57,58],one_e_energy_dft:25,one_e_grad_2_dm_alpha_at_r:[24,57,58],one_e_grad_2_dm_beta_at_r:[24,57,58],one_e_integr:53,one_e_spin_density_ao:[22,36,57,58],one_e_spin_density_mo:[22,36,57,58],ones:93,onli:[2,5,7,11,14,15,16,17,22,23,27,29,40,49,51,55,60,62,63,64,65,81,94],only_expected_s2:[18,28,41,57,58],onorbit:84,onquant:84,opam:5,opam_instal:5,opamroot:5,open:[3,4,6,47,89,98],openmp:[28,53],oper:[2,5,7,9,15,18,22,25,38,39,40,60,72],opposit:22,oprer:79,optim:[3,4,6,16,17,47,63,64],option:[2,5,16,17,22,29,34,35,47,55,66,69,73,74,78,80,87,88,92,97],orbit:[3,4,6,8,9,14,22,36,37,40,43,47,63,64,67,69,74,75,83,87,94,98],order:[1,2,3,4,5,6,7,12,13,14,15,16,17,18,22,25,43,53,60,66,72,73,84,95,98],ordinari:2,org:[2,3,7],organ:[60,98],oribit:14,orient:42,origin:[2,13,25],ortho_canon:[53,57,58],ortho_lowdin:[38,53,57,58],ortho_qr:[18,53,57,58],ortho_qr_unblock:[53,57,58],orthogon:[3,22,36,53],orthonorm:[9,18,37,38,77],orthonormalize_mo:[38,53,57,58,69,74,77,78],other:[2,9,13,25,38,43,60,66,98],otherwis:[2,5,34,35,47,63,78,81,88,97],ouptut:53,our:2,out:[2,18,22,43,81,85,86,87,98],out_arrai:[39,40],out_val:[10,11,39,40],out_val_index:[10,11],output:[2,5,8,14,18,22,24,25,28,33,36,53,60,62,69,74,87,88,93],output_cpu_time_0:[28,57,58],output_wall_time_0:[18,28,31,33,42,49,53,57,58],outsid:[2,7],over:[7,9,18,47,55,85],overlap:[9,36,37,38,53,77],overlap_bourrin_deriv_x:[9,57,58],overlap_bourrin_dipol:[9,57,58],overlap_bourrin_spread:[9,57,58],overlap_bourrin_x:[9,57,58],overlap_gaussian_x:[53,57,58],overlap_gaussian_xyz:[53,57,58],overlap_i:53,overlap_x:[9,53],overlap_x_ab:[53,57,58],overlap_z:53,overwrit:22,overwritten:18,own:[4,6,80],p01_1:11,p01_2:11,p10_1:11,p10_2:11,p_1:9,p_2:9,p_alpha:47,p_beta:47,p_center:[9,10,11,53],p_inv:[9,10,11],p_inv_2:9,p_new2:53,p_new:[9,10,11,53],packag:[1,5,7,22,61,62,80,81,85,88,89,90,91,92,96,98],page:[3,7,97],pain:90,pair:14,paper:[2,13,25],paquier:1,paradigm:[4,6],parallel:[0,5,10,11,15,18,26,41,54,98],paramet:[5,25,56,87,89,97,98],pari:1,part:[2,9,13,14,22,25,32,34,35,47,60,78,91],parti:2,partial:[9,35],particl:[7,14,16,17,22,94],particl_1:[16,17],particl_2:[16,17],particle_mask:15,particular:[2,7],pasqua:3,pass:2,past_d1:[15,57,58],past_d2:[15,57,58],patch:5,patent:2,path:[4,5,6],pattern:22,paul:[1,3,7],pbe:25,pcvdz:88,peopl:[1,2],per:[8,9,13,44,50,55],percentag:23,perform:[2,5,12,16,17,25,29,32,34,35,47,63,64,66,76,77,78,98],period:93,permiss:2,permit:[2,55],persist:60,person:91,pertin:2,pertubr:43,perturb:[3,4,6,7,15,16,17,22,26,29,49,57,66,72,73,98],perturb_buffer_by_mono_dummi:[22,43,57,58],perturb_buffer_by_mono_epstein_nesbet:[22,43,57,58],perturb_buffer_by_mono_epstein_nesbet_2x2:[22,43,57,58],perturb_buffer_by_mono_epstein_nesbet_2x2_no_ci_diag:[22,43,57,58],perturb_buffer_by_mono_moller_plesset:[22,43,57,58],perturb_buffer_by_mono_qdpt:[22,43,57,58],perturb_buffer_dummi:[22,43,57,58],perturb_buffer_epstein_nesbet:[22,43,57,58],perturb_buffer_epstein_nesbet_2x2:[22,43,57,58],perturb_buffer_epstein_nesbet_2x2_no_ci_diag:[22,43,57,58],perturb_buffer_moller_plesset:[22,43,57,58],perturb_buffer_qdpt:[22,43,57,58],peter:7,phase:22,phasemask:15,phi:[9,53],phi_angular_integration_lebedev:[53,57,58],phi_i:38,phi_j:38,phi_k:36,phy:[3,7],physic:[2,3,7,13,14],physiqu:1,physrev:7,pictur:98,piec:2,pierr:[1,3,7],pineda:3,pip2:5,pip:5,pipelin:55,place:[2,12],plain:[56,98],planar:3,pleas:[1,5],plesset:43,plot:[0,83,98],plt:98,plu:2,plugin:[4,6,25,83,91,97],plugin_nam:91,pmid:3,point:[4,6,8,13,15,24,25,44,53,87,91],pointer:2,polici:13,polyatom:7,polynom:[10,11,53],polynomi:[9,11,53],polynomw:11,pop:87,popcnt:5,port:54,portion:2,posit:[9,13,38],possibl:[2,5,7,13,14,22,47,49,56,81],post:[3,14,30,98],pot_ao:25,pot_ao_erf_int:9,pot_ao_int:9,pot_ao_pseudo_int:9,pot_funct:35,pot_gener:25,pot_mo_int:38,pot_mo_ortho_canonical_int:37,pot_mo_ortho_lowdin_int:37,pot_mo_pseudo_int:38,potenti:[3,9,21,25,32,38,44,83,93],potential_c_alpha_ao:[25,57,58],potential_c_alpha_ao_lda:[25,57,58],potential_c_alpha_ao_pb:[25,57,58],potential_c_alpha_mo:[25,57,58],potential_c_beta_ao:[25,57,58],potential_c_beta_ao_lda:[25,57,58],potential_c_beta_ao_pb:[25,57,58],potential_c_beta_mo:[25,57,58],potential_sr_c_alpha_ao_lda:[13,24,25,57,58],potential_sr_c_alpha_ao_pb:[25,57,58],potential_sr_c_beta_ao_lda:[25,57,58],potential_sr_c_beta_ao_pb:[25,57,58],potential_sr_x_alpha_ao_lda:[13,24,25,57,58],potential_sr_x_alpha_ao_pb:[13,24,25,57,58],potential_sr_x_beta_ao_lda:[25,57,58],potential_sr_x_beta_ao_pb:[25,57,58],potential_x_alpha_ao:[25,35,57,58],potential_x_alpha_ao_lda:[13,24,25,57,58],potential_x_alpha_ao_pb:[13,24,25,57,58],potential_x_alpha_mo:[25,57,58],potential_x_beta_ao:[25,57,58],potential_x_beta_ao_lda:[25,57,58],potential_x_beta_ao_pb:[25,57,58],potential_x_beta_mo:[25,57,58],power:[8,97],power_a:[9,53],power_b:[9,53],ppx_deriv:5,ppx_sexp_conv:5,pq_inv:11,pq_inv_2:11,practic:[2,12,60,81],pradin:[1,3],pre:22,preambl:2,precis:[2,8,9,10,11,13,15,18,20,21,22,24,25,28,31,32,33,34,35,36,37,38,39,40,42,43,47,49,50,53],predefin:7,prefer:[2,7,55],prefix:[5,55,92],preliminari:81,present:[0,2,7,15,22,32,43,55,87,88,89],preserv:2,presid:2,press:[5,55,97],prevent:[2,7],previou:7,previous:21,price:2,primit:[8,10,11],primitive_1:[10,11],primitive_2:[10,11],primitive_3:[10,11],primitive_4:[10,11],primitive_valu:[8,57,58],primitv:9,primtiv:[10,11],principl:[3,7],print:[2,14,15,22,28,33,41,53,60,61,62,71,72,80,88,89,90,93,94],print_det:[14,22,57,58],print_e_conv:[52,57,58,82],print_extrapol:33,print_extrapolated_energi:[15,33,57,58],print_generators_bitmasks_hol:[14,57,58],print_generators_bitmasks_holes_for_one_gener:[14,57,58],print_generators_bitmasks_particl:[14,57,58],print_generators_bitmasks_particles_for_one_gener:[14,57,58],print_hf_energi:60,print_memory_usag:[28,53,57,58],print_spindet:[14,57,58],print_summari:[15,33,57,58],print_wf:[22,52,57,58,82,86],priori:7,prl:25,problem:[2,60,89],proc:22,procedur:[7,34,35,47,56,78,95],process:[41,43,53,54,60],produc:[7,16,17,37,47,60,67,69,70,71,74,75,84],product:[4,6,11,22,25,38,53],program:[2,4,5,6,7,14,15,21,22,23,25,28,47,55,63,64,65,66,67,68,71,73,75,76,77,78,80,81,83,84,86,92,95,98],programm:[2,4,6,13,60],prohibit:2,project:12,promin:2,promot:2,prompt:97,properti:[2,25,84],propos:[3,4,5,6,7,13],proposit:5,proprietari:2,protect:2,prove:2,provid:[2,12,16,17,55,56,60,61,83,98],provide_all_mo_integrals_erf:[39,57,58],provide_everyth:[15,57,58],provider_nam:56,providers_ao_erf:10,prune:13,pseudo:[9,38,57,83,93,98],pseudo_dz_k:[9,28,41,44,57,58],pseudo_dz_k_transp:[9,57,58],pseudo_dz_kl:[9,28,41,44,57,58],pseudo_dz_kl_transp:[9,57,58],pseudo_grid_rmax:[28,41,44,57,58],pseudo_grid_s:[28,41,44,57,58],pseudo_klocmax:[9,28,41,44,57,58],pseudo_kmax:[9,28,41,44,57,58],pseudo_lmax:[9,28,41,44,57,58],pseudo_n_k:[9,28,41,44,57,58],pseudo_n_k_transp:[9,57,58],pseudo_n_kl:[9,28,41,44,57,58],pseudo_n_kl_transp:[9,57,58],pseudo_v_k:[9,28,41,44,57,58],pseudo_v_k_transp:[9,57,58],pseudo_v_kl:[9,28,41,44,57,58],pseudo_v_kl_transp:[9,57,58],pseudopotenti:[9,38],psi:[7,15,22,25,43,49,84],psi_:[15,22],psi_average_norm_contrib:[22,57,58],psi_average_norm_contrib_sort:[22,57,58],psi_bilinear_matrix:[22,57,58],psi_bilinear_matrix_column:[22,57,58],psi_bilinear_matrix_columns_loc:[15,18,22,57,58],psi_bilinear_matrix_ord:[22,57,58],psi_bilinear_matrix_order_revers:[18,22,57,58],psi_bilinear_matrix_order_transp:22,psi_bilinear_matrix_order_transp_revers:[18,22,57,58],psi_bilinear_matrix_row:[22,57,58],psi_bilinear_matrix_transp_column:[22,57,58],psi_bilinear_matrix_transp_ord:[22,57,58],psi_bilinear_matrix_transp_row:[22,57,58],psi_bilinear_matrix_transp_rows_loc:[15,18,22,57,58],psi_bilinear_matrix_transp_valu:[15,18,22,53,57,58],psi_bilinear_matrix_valu:[14,15,18,22,53,57,58],psi_ca:[14,22,28,41,57,58],psi_cas_coef:[22,57,58],psi_cas_coef_sorted_bit:[22,57,58],psi_cas_energi:[22,57,58],psi_cas_energy_diagon:[22,57,58],psi_cas_sorted_bit:[14,22,57,58],psi_coef:[15,16,17,18,21,22,28,36,41,43,57,58,66],psi_coef_cas_diagon:[22,53,57,58],psi_coef_gener:[31,57,58],psi_coef_max:[22,28,41,57,58],psi_coef_min:[22,57,58],psi_coef_sort:[22,57,58],psi_coef_sorted_bit:[22,57,58],psi_coef_sorted_gen:[31,57,58],psi_coefs_tmp:22,psi_det:[14,15,16,17,18,21,22,28,36,41,43,57,58,66],psi_det_alpha:[14,22,57,58],psi_det_alpha_uniqu:[14,15,18,22,28,41,53,57,58],psi_det_beta:[14,22,57,58],psi_det_beta_uniqu:[14,15,18,22,28,41,53,57,58],psi_det_gener:[14,15,16,17,22,31,43,57,58],psi_det_hii:[14,15,22,27,57,58],psi_det_s:[15,16,17,18,22,28,31,41,43,50,57,58,66],psi_det_sort:[14,15,22,31,43,49,53,57,58],psi_det_sorted_bit:[14,15,16,17,22,57,58,66],psi_det_sorted_gen:[14,15,22,31,57,58],psi_det_sorted_gen_ord:[31,57,58],psi_det_sorted_ord:[22,57,58],psi_dft_energy_h_cor:[25,57,58],psi_dft_energy_kinet:[21,25,57,58],psi_dft_energy_nuclear_elec:[25,57,58],psi_energi:[14,15,18,22,43,57,58,73],psi_energy_h_cor:[22,36,38,57,58],psi_energy_mono_elec:22,psi_energy_two_:[14,18,22,57,58],psi_energy_with_nucl_rep:[15,18,42,57,58],psi_g:15,psi_i:18,psi_j:53,psi_keys_tmp:22,psi_non_ca:[14,22,57,58],psi_non_cas_coef:[22,57,58],psi_non_cas_coef_sorted_bit:[22,57,58],psi_non_cas_sorted_bit:[14,22,57,58],psi_occ_pattern:[14,15,16,17,22,53,57,58,66],psi_occ_pattern_hii:[15,22,57,58],psi_ref:43,psi_ref_:46,psi_ref_coef:43,psi_s2:[18,57,58],psi_selector:[14,15,22,43,49,50,57,58],psi_selectors_coef:[49,57,58],psi_selectors_coef_transp:[15,49,50,57,58],psi_selectors_diag_h_mat:[14,22,27,49,50,57,58],psi_selectors_s:[22,43,49,50,57,58],psicoef:22,psidet:22,psin:25,psiref_ca:57,psiref_util:57,pt2:[4,6,22,29,32,33,43,53,57,58,66,71,82,98],pt2_:[33,43],pt2_collector:[15,53,54,57,58],pt2_cw:[15,57,58],pt2_dummi:[22,43,57,58],pt2_e0_denomin:[15,18,22,28,41,42,43,57,58,66,73],pt2_epstein_nesbet:[22,43,57,58],pt2_epstein_nesbet_2x2:[22,43,57,58],pt2_epstein_nesbet_2x2_no_ci_diag:[22,43,57,58],pt2_equat:43,pt2_f:[14,15,27,31,49,57,58],pt2_find_sampl:[15,57,58],pt2_find_sample_lr:[15,57,58],pt2_iter:[28,33,41,57,58],pt2_j:[15,31,53,57,58],pt2_max:[15,28,29,41,43,57,58,66],pt2_mindetinfirstteeth:[15,57,58],pt2_moller_plesset:[22,43,57,58],pt2_n_0:[15,57,58],pt2_n_task:[15,31,57,58],pt2_n_tasks_max:[15,57,58],pt2_n_teeth:[15,28,31,41,57,58],pt2_qdpt:[22,43,57,58],pt2_r:[15,57,58],pt2_relative_error:[15,26,28,41,43,57,58,73],pt2_slave_inproc:[15,57,58],pt2_stoch_ist:[15,57,58,66,73],pt2_stoch_routin:15,pt2_u:[15,31,57,58],pt2_u_0:[15,57,58],pt2_w:[15,31,53,57,58],pt2_w_t:[15,57,58],ptr_microlist:22,publish:[2,54],pull:[1,18,22,54],pull_pt2:[22,57,58],pull_pt2_result:[15,57,58],pull_selection_result:[15,57,58],pure:[4,6,29,66],purpos:[2,4,5,6,53,59],push:[11,18,22],push_integr:[10,11,57,58],push_pt2:[22,57,58],push_pt2_result:[15,57,58],push_selection_result:[15,57,58],put:[18,22,50,54,55,87,89],put_get:54,pvdz:[0,88],pvtz:88,pylint:55,python2:[5,55],python3:55,python:[5,83,87,98],q_center:[10,11],q_inv:[10,11],q_new:[10,11],qdpt:43,qmc:[15,44,83],qmcpack:83,qp_:97,qp_command:97,qp_convert_output_to_ezfio:[82,97],qp_create_ezfio:[82,97,98],qp_e_conv_fci:98,qp_edit:[82,86,98],qp_export_as_tgz:82,qp_input:28,qp_kill_filenam:[28,57,58],qp_max_mem:[15,18,28,41,53,57,58],qp_mpirun:97,qp_name:57,qp_plugin:[59,82,85,97],qp_plugins_egin:[4,6,91],qp_plugins_us:59,qp_reset:[78,97],qp_root:[5,36,55,59,80,85,91],qp_run:[18,22,50,54,82,84,86,91,97,98],qp_run_address:[54,57,58],qp_set_frozen_cor:[82,94,97,98],qp_set_mo_class:[30,36,47,63,64,67,82,89,93,97,98],qp_srun:97,qp_stop:[28,57,58,82,92,97],qp_stop_filenam:[28,57,58],qp_stop_vari:[28,57,58],qp_test:57,qp_updat:[82,97],qpackage_input:28,qpsh:82,qrpa:[25,57,58],qrpad:[25,57,58],qrpadd:[25,57,58],quadratur:13,qualiti:[2,4,6,55,81],quantiqu:1,quantiti:[13,24,25,34,35,84],quantum:[1,5,7,9,22,38,61,62,81,85,88,89,90,91,92,96,98],quantum_packag:[5,98],queri:[94,95],queue:54,quick_dsort:[53,57,58],quick_i2sort:[53,57,58],quick_i8sort:[53,57,58],quick_isort:[53,57,58],quick_sort:[53,57,58],quickli:94,quicksort:53,quickstart:[4,6],quot:55,r12:[10,11,39,40],r1x:9,r1xp:9,r2x:9,r_a:9,r_c:9,r_i:24,r_in:15,r_j:25,r_k:38,r_max:44,radial:[9,13],radii:[42,88],radix:53,rainbow:85,ram:[3,18],rancurel:7,random:[22,60],random_numb:18,rang:[2,4,6,10,23,25,32,35,39,89,94],range_separated_kohn_sham:74,rangl:[7,9,15,18,22,25,38,39,43,50,84],rank:41,rapidli:7,rather:[2,7,60],ratio:43,ration:3,raw:5,reach:[4,6,66,73],read:[2,8,9,10,11,12,15,22,28,34,35,38,39,40,42,47,54,55,60,75,76,77,78,83,84,86,88,89,97],read_ao_integrals_e_n:[9,57,58],read_ao_integrals_kinet:[9,57,58],read_ao_integrals_overlap:[9,57,58],read_ao_integrals_pseudo:[9,57,58],read_ao_one_e_integr:[9,57,58],read_ao_two_e_integr:[11,57,58],read_ao_two_e_integrals_erf:[10,57,58],read_det:[22,57,58],read_mo_integrals_e_n:[38,57,58],read_mo_integrals_kinet:[38,57,58],read_mo_integrals_pseudo:[38,57,58],read_mo_one_e_integr:[38,57,58],read_mo_two_e_integr:[40,57,58],read_mo_two_e_integrals_erf:[39,57,58],read_nuclear_repuls:[57,58],read_wf:[15,22,28,29,41,57,58,63,64,65,66,72,73,74,75,76,81],readabl:[2,55,71],readi:54,readm:60,real:24,realiz:7,reason:[2,34,35,47,55,78,90],rec__quicksort:[53,57,58],rec_d_quicksort:[53,57,58],rec_i2_quicksort:[53,57,58],rec_i8_quicksort:[53,57,58],rec_i_quicksort:[53,57,58],receiv:[2,54],recent:53,recentered_poly2:[53,57,58],reciev:14,recipi:2,recommend:[4,6,13,29,66,92],recompil:91,recomput:7,reconstruct:28,recurs:[9,11,53],redistribut:2,redistributor:2,ref_bitmask:[14,22,43,50,57,58],ref_bitmask_e_n_energi:[22,57,58],ref_bitmask_energi:[14,15,18,22,38,40,50,57,58],ref_bitmask_kinetic_energi:[22,57,58],ref_bitmask_one_e_energi:[22,57,58],ref_bitmask_two_e_energi:[22,57,58],ref_closed_shell_bitmask:[14,22,57,58],refer:[2,3,4,5,6,13,14,16,17,22,31,45,46,49,51,63,64,72],reflect:2,reformat:55,refrain:2,regard:72,regardless:2,region:13,regular:67,rel:[4,6,26,42,43,73,97,98],relat:[9,21,23,25,34,35,38,46,78,84],relative_error:15,releas:5,relev:23,reli:7,relianc:2,remain:2,remot:85,remov:[22,34,35,43,44,47,54,84,85,88,89,92],remove_duplicates_in_psi_det:[22,57,58],remove_duplicates_in_selection_buff:[15,53,57,58],remove_small_contribut:[18,22,28,43,57,58],renam:[5,61,87],render:2,reorder:36,reorder_core_orb:[36,47,53,57,58],repair:2,reperform:[16,17],replac:[18,84],repli:54,repo:91,repositori:[5,56,85,91],reprent:14,repres:[0,8,13,14,22],represent:[14,24],reproduc:60,repuls:[18,32,34,35,42],reput:2,request:[1,15,81,92,95],requir:[0,2,18,22,45,53,55,60,97,98],res:[11,15,22],research:[22,86],reset:[78,97],reset_zmq_address:[54,57,58],resident_memori:[15,18,53,57,58],residu:18,resiz:22,resize_h_apply_buff:[22,43,57,58],respect:[7,22,25,31,50],respons:2,rest:[2,48],restart:[14,34,35,47,78,81],restrict:[2,22,32,34,35,47,66,78],restructur:89,result:[10,11,18,53,54,89],resultsfil:[5,83,87],retain:[63,64,65],retriev:[7,10,11],reunion:[13,14],reunion_of_bitmask:[14,57,58],reunion_of_cas_inact_bitmask:[14,57,58],reunion_of_core_inact_act_bitmask:[14,57,58],reunion_of_core_inact_bitmask:[14,57,58],reus:2,rev:7,revers:14,revis:2,rez:3,rho:[22,25,53],rho_:[22,25,84],rho_a:25,rho_ab_to_rho_oc:[25,57,58],rho_ab_to_rho_tot:25,rho_b:25,rho_c:25,rho_o:25,rho_oc_to_rho_ab:[25,57,58],rhoc:25,rhoo:25,right:[2,8,84,93],rint1:[53,57,58],rint:[53,57,58],rint_large_n:[53,57,58],rint_sum:[53,57,58],rinteg:[53,57,58],rintgauss:[53,57,58],risk:[2,80],rohf:[16,17,29,47,63,64,66],roland:3,role:[4,6],root:[47,56,60,90,91],roothaan:47,roothaan_hall_scf:[28,32,36,47,57,58],rotat:[36,53],routin:[9,10,14,18,22,25,36,39,43,52,53,57,58,65,72,79,91],routine_e_conv:[52,57,58,71],routine_example_psi_det:[14,22,57,58],routine_save_one_e_dm:[52,57,58,76],routines_save_integrals_erf:[10,39],row:[7,22,53],royalti:2,rs_ks_energi:[35,57,58],rs_ks_scf:[21,23,25,35,57,58,82],rsdft:[4,6,12],rsdft_cipsi:91,rsft:21,rsh:[4,6],rss_in:53,rst:[60,89],ruedenberg:7,rule:[3,7,13,14,16,17,22,56],run:[2,4,5,6,7,15,32,34,35,47,53,54,57,58,59,60,62,63,64,69,73,74,78,81,84,85,86,87,92],run_cipsi:[15,18,22,28,29,33,53,57,58,66],run_pt2_slav:[15,53,54,57,58],run_selection_slav:[15,54,57,58],run_slave_cipsi:[15,54,57,58,66,73],run_slave_main:[15,18,28,41,53,54,57,58],run_stochastic_cipsi:[15,18,22,28,29,33,53,57,58,66],russian:13,s2_:33,s2_eig:[15,16,17,18,22,28,29,33,41,43,57,58,63,64,65,66,81],s2_jj:18,s2_matrix_all_det:[14,18,22,57,58],s2_out:18,s2_u_0:[22,57,58],s2_u_0_nstat:[22,57,58],s2_valu:[14,22,57,58],s_0:18,s_half:[9,53,57,58],s_half_inv:[9,47,53,57,58],s_inv:[9,53,57,58],s_mo_coef:[9,36,38,47,57,58],s_t:18,s_x:53,s_y:53,s_z2_sz:[22,57,58],s_z:[18,22,53,57,58],sabati:1,sabparti:[53,57,58],safe:[5,61],safest:2,safeti:5,sai:2,sake:84,same:[2,7,9,12,15,16,17,22,34,35,39,43,47,55,60,64,78,88,89],sampl:[2,73],sandbox:5,satisfi:2,save:[10,11,22,29,33,34,35,36,40,47,63,64,75,76,77,78,79,89,95],save_current_mo:36,save_energi:[15,29,57,58],save_erf_two_e_integrals_ao:[10,52,53,57,58],save_erf_two_e_integrals_mo:[39,52,53,57,58],save_erf_two_e_ints_ao_into_ints_ao:[10,53,57,58],save_erf_two_e_ints_mo_into_ints_mo:[39,53,57,58],save_iter:[15,33,57,58],save_mo:[22,36,37,47,57,58,77],save_mos_trunc:[36,57,58],save_natorb:[16,17,22,52,57,58,63,64,82,84],save_natural_mo:[22,36,57,58,75],save_one_e_dm:[52,57,58,82],save_ortho_mo:[36,38,52,57,58,82],save_ref_determin:[22,57,58,75],save_wavefunct:[15,22,57,58],save_wavefunction_gener:[22,28,53,57,58],save_wavefunction_specifi:[22,28,57,58],save_wavefunction_trunc:[22,57,58],save_wavefunction_unsort:[22,57,58],saverio:3,savin:3,sbatch:92,scalar:[25,56],scemama:[1,3,5,7],scf:[4,6,16,17,32,34,35,36,38,47,57,58,63,64,81,82,83,87,95,98],scf_algorithm:[28,41,47,57,58],scf_density_matrix_ao:[47,57,58],scf_density_matrix_ao_alpha:[32,34,35,36,47,57,58],scf_density_matrix_ao_beta:[32,34,35,36,47,57,58],scf_energi:[9,32,42,47,57,58],scf_util:[34,35,57,78],schedul:[18,22,50,54],scheme:[13,29,66],school:2,schroding:7,schwartz:[10,11],sci:[4,6,13],scope:2,scratch:[34,35,47,92],script:[2,5,16,17,36,60,87,91,92,94],search:22,second:[0,3,7,9,43,73,88,92,98],section:[2,13,55,89],secur:90,see:[2,4,6,9,13,14,21,24,25,30,34,35,36,38,47,63,64,66,67,73,75,76,78,80,85,89,91],seen:85,select:[0,3,4,6,15,16,17,22,29,43,66,81,85,89,95,98],select_connect:[15,22,57,58],select_max:[31,57,58],select_max_out:43,select_singles_and_doubl:[15,22,53,57,58],selection_buff:15,selection_collector:[15,53,54,57,58],selection_criterion:[43,57,58],selection_criterion_factor:[43,57,58],selection_criterion_min:[43,57,58],selection_slave_inproc:[15,57,58],selection_weight:[15,22,57,58],selector:[7,15,31,48,49,50],selectors_cassd:57,selectors_ful:57,selectors_util:57,self:90,semi:[15,83],send:92,sent:[54,92],sep:3,separ:[2,4,6,10,23,25,32,35,39,56,88],sepear:56,sequenc:60,sequenti:60,sergio:3,seri:3,server:54,servic:2,set:[0,3,4,5,6,7,8,9,13,14,15,16,17,21,22,25,28,30,31,32,34,35,36,38,43,47,54,55,56,63,65,66,67,75,78,81,84,87,89,92,93,94,97,98],set_bit_to_integ:[14,57,58],set_bitmask_hole_as_input:[14,57,58],set_bitmask_particl_as_input:[14,57,58],set_fil:97,set_frozen_cor:97,set_mo_class:97,set_natural_mo:[22,36,57,58],set_ord:[53,57,58],set_order_big:[53,57,58],setup:94,seventeenth:13,sexplib:5,sgemm:18,sham:[4,6,32,34,35],share:2,she:2,shell:[3,4,5,6,8,47,62,97,98],shift:[4,6,34,35,47,78],shifted_potenti:25,shifting_const:[25,57,58],short_range_hartre:[25,57,58],short_range_hartree_oper:[21,25,57,58],short_range_lda:23,shortcut:22,should:[2,4,5,6,8,14,15,18,22,36,43,53,55,56,60,88,90,91,94,98],show:[2,62,88],siberian:13,sigma:15,sigmacc:25,sigmaco:25,sigmaoo:25,sign:[2,36],signal:92,signatur:2,significantli:7,similar:[2,77],simpl:[3,4,6,13,47,60,81,98],simplest:[34,35,47,56],simplifi:[4,6],simultan:2,sin:9,sinc:[2,7],singl:[14,15,16,17,19,21,22,31,47,49,51,55,63,64,84,87,88,98],single_exc_bitmask:[14,22,57,58],single_excit:22,single_ref_method:57,singles_alpha_csc:[14,22,57,58],singles_alpha_csc_idx:[14,22,36,57,58],singles_alpha_csc_s:[22,57,58],singles_beta_csc:[14,18,22,57,58],singles_beta_csc_idx:[14,18,22,36,57,58],singles_beta_csc_s:[22,57,58],singli:[16,22],site:91,siz_:15,size:[15,22,29,31,47,56,86],size_buff:22,size_fock_matrix_ao:47,size_select_max:[31,57,58],size_x1:54,size_x2:54,size_x:54,skip:31,skorokhodov:13,skylak:0,slater:[3,7,14,22,29,42,63,64,65,66,84,86],slater_bragg_radii:[42,57,58],slater_bragg_radii_per_atom:[42,57,58],slater_bragg_radii_per_atom_ua:[42,57,58],slater_bragg_radii_ua:[42,57,58],slater_bragg_type_inter_dist:[42,57,58],slater_bragg_type_inter_distance_ua:[13,42,57,58],slater_rul:22,slater_rules_wee_mono:22,slave:[18,54,92],slave_cipsi:15,sleep:[15,18,54],slow:[7,11],slurm:[92,94],small:[7,43,93],smaller:[7,26,43],societi:3,socket:[0,11,54],softwar:2,sol:3,sole:2,solut:[15,16,17,63,64],some:[2,5,7,12,13,25,36,39,40,55,63,64,87,89,90,91],someon:2,someth:[2,72],sometim:[2,90],somewher:[59,85],sorbonn:1,sort:[7,8,22,42,53,57,58],sort_dets_ab:[22,57,58],sort_dets_ab_v:[22,57,58],sort_dets_ba_v:[22,57,58],sort_dets_by_det_search_kei:[22,53,57,58],sort_selection_buff:[15,53,57,58],sorted_dnumb:[53,57,58],sorted_i2numb:[53,57,58],sorted_i8numb:[53,57,58],sorted_inumb:[53,57,58],sorted_numb:[53,57,58],sould:55,sourc:[2,4,5,6,55,98],space:[0,4,6,13,14,15,22,24,29,31,55,63,64,66,67],spars:22,spatial:[32,34,35,47,63,64,78],speak:2,special:2,specif:[3,4,6,8,13,18,47,55,85,88,91],specifi:[2,62,63,64,67,91,97,98],spectroscopi:3,speed:[5,12],speedup:0,spf:47,sphere:13,spheric:[8,9,13],spherical_to_cartesian:8,sphinx:60,spin:[3,4,6,22,25,29,66,81,84,88],spin_det_search_kei:[22,57,58],spindet:22,spindetermin:22,spinorbit:[32,34,35,47,78],spirit:2,splash_pq:[15,57,58],split:[35,55],spot_isinwf:[15,57,58],spread_dipole_ao:9,spread_dipole_mo:38,sqrt:[36,43,47],squar:[7,22,25,42,47,49,53,56],sr_coulomb:25,sr_exc:25,sr_pot_ao:25,sr_v:25,src:[5,85],srun:[92,97],sse4:5,stabl:[5,15,91,96],stai:55,stamp:28,stand:[4,6],standard:[4,6,13,18,43,53,55,60,88,93,97],star:7,start:[2,15,22,29,34,35,43,47,54,55,66,78],state:[0,2,3,4,6,7,16,17,18,22,24,29,43,54,60,63,64,65,66,71,72,75,84,89],state_average_weight:[15,21,22,57,58,66,73,75],state_follow:[18,28,41,57,58],state_wait:54,statement:55,statist:7,statu:2,stdout:41,stefano:7,step:[2,7,13,68],step_function_beck:[13,57,58],sto:88,stochast:[3,4,6,15,26,29,43,66,73,83,98],stochastic_cipsi:15,stochats:15,stop:[15,26,28,29,43,66,73,95,97,98],stor:[4,6],storag:2,store:[10,11,12,15,18,21,22,24,29,34,35,36,39,40,47,60,65,66,67,68,72,73,75,76,78,84,86,98],str:56,strategi:[3,64],street:2,strictli:13,string:[8,14,15,22,41,55,56,88,92],strongli:72,structur:[34,35],stuck:89,studi:[3,7],subject:2,sublicens:2,submit:1,subroutin:[2,55,60,61],subsect:2,subset:[7,15],subspac:7,substitut:55,succe:5,success:55,suffix:56,suit:2,sum:[7,22,38,53,56,88],sum_:[7,15,22,25,53],sum_a:9,sum_e_2_pert:43,sum_h_pert_diag:43,sum_i:[22,36],sum_j:22,sum_k:8,sum_norm_pert:43,supercomput:0,support:[5,55,56,67],suppos:[14,37],sure:[2,16,17,63,64,84],surfac:3,surrend:2,sustain:2,svd:[9,36,53,57,58],switch_qp_run_to_mast:[15,54,57,58],symbol:[55,60,85,88],symmetri:[16,17,63,64,81,98],symposium:3,syntax:56,system:[2,3,4,5,6,36,60,98],system_clock:53,systemat:[3,7,29,66],sze:[10,11,18,22,39,40,53,54],sze_8:22,t_te:89,t_ti:89,t_w:11,tab:[55,97],tabl:[42,93],tag:5,take:[2,5,8,13,22,25,36,63,64,81,86],taken:88,tamis:[22,57,58],tapplencourt:1,tar:[5,90,91],target:[4,6,7,89],target_energi:[22,28,41,57,58],task:[15,54],task_done_to_taskserv:[54,57,58],task_id:[11,15,18,22,54],tasks_done_to_taskserv:[54,57,58],tcp:54,teach:98,tee:[86,98],tell:[2,5],temporari:89,tensor:42,tenti:[1,3],term:[2,9,11,22],termin:[2,28,54,89,92,95],test:[3,4,6,55,62,89],testteethbuild:[15,53,57,58],tew:3,text:[15,43,50,56,60,86,88,89,98],tha:[39,40],than:[2,4,6,7,12,15,26,43,55,60,84,86,88,89,98],thank:[12,77],thei:[2,10,11,12,22,39,40,55,63,64,84],them:[2,15,34,35,47,75,78,98],themselv:2,theoret:[3,7],theori:[3,4,6,7],theoriqu:1,therefor:[2,4,6,7,25,32,34,35,63,64,91],thereof:2,theta:[9,53],theta_angular_integration_lebedev:[53,57,58],thi:[0,1,2,4,5,6,7,8,10,12,13,14,15,16,17,21,22,23,24,25,27,28,29,30,31,34,35,36,39,40,42,44,45,46,47,51,52,53,54,56,59,60,62,63,64,66,68,71,73,75,76,77,81,83,85,86,87,88,89,90,91,92,94,95,96,97,98],thing:[2,7,9],third:2,thoma:[1,3],thoroughli:2,those:[2,4,6,8,9,29,30],though:2,thousand:[4,6],thr:[22,39,40],thread:[10,11,15,18,53,54],threaten:2,three:2,thresh_dressed_ci:26,thresh_scf:[28,34,35,41,47,56,57,58],threshold:[7,18,22,26,43,47,49,56],threshold_davidson:[18,28,41,57,58],threshold_dii:[28,41,47,56,57,58],threshold_diis_nonzero:[47,57,58],threshold_gener:[7,15,22,28,31,41,49,57,58,66,73],threshold_selector:[7,15,49,57,58],through:[2,13,21,22,54,86],thu:[2,4,6],tild:8,time:[0,2,9,22,28,43,53,85,88,92],tlse:1,todo:98,togeth:[4,6,53,60,98],too:[2,7,86,89],took:42,tool:[13,57,60,86,98],top:[16,17,63,64],total:[7,13,25,27,36,88,98],total_memori:[53,57,58],touch:[14,15,16,17,18,22,32,37,38,43,47,63,64,65,66,68,69,72,73,74,75,76,77,78,79],toulous:[1,3],toward:3,trace:32,trace_potential_xc:[34,35,57,58],trace_v_h:[25,57,58],trace_v_hxc:[25,57,58],trace_v_xc:[21,25,57,58],track:[29,36],track_orb:36,tradit:7,transfer:2,transform:[8,9,14,22,36,37,38,53,68],transit:3,translat:[2,13],transpos:[8,9,22,42,50,53,57,58],treat:[7,35],treatment:3,trial:[3,15,83],trick:81,triplet:8,truncat:[7,15,22,89],tutori:98,twice:60,two:[0,2,4,6,7,8,9,10,11,13,18,22,25,32,34,35,36,39,40,47,53,66,68,78,79,84,88,98],two_e_energi:[34,35,57,58],two_e_integr:11,two_e_integrals_erf:10,two_e_integrals_index:[10,11,39,40,57,58],two_e_integrals_index_revers:[11,57,58],txt:53,type:[2,8,9,10,11,13,14,21,23,39,40,43,47,56,67],typic:7,u0_h_u0:18,u0_wee_u0:18,u_0:[18,22],u_0_h_u_0:[18,57,58],u_0_h_u_0_two_:[18,57,58],u_0_s2_u_0:[22,57,58],u_0rangl:18,u_dot_u:[53,57,58],u_dot_v:[53,57,58],u_in:18,u_t:18,u_trangl:18,unbias:7,uncontract:3,under:[2,13,55],understand:2,unenforc:2,unexpect:[34,35,47,78],unformat:28,uniniti:22,uninstal:[85,91],uniqu:[8,22,39,40],unit:[13,42,88],unless:[2,55],unpair:14,unpaired_alpha_electron:[14,57,58],unquot:55,unset:97,unset_fil:97,untouch:[47,53],unzip:5,updat:[5,33,36,89,96,97],upon:55,upper:11,ups:1,url:[3,7,91],usa:[1,2],usag:53,use:[2,4,5,6,7,8,10,11,12,13,14,18,22,39,40,46,54,55,63,64,81,84,86,91,98],used:[2,5,7,8,12,13,14,15,16,17,18,21,22,23,24,25,44,47,53,55,56,60,61,63,64,76,83,88,89,92,93,94,97,98],used_weight:[22,28,41,57,58],useful:[2,16,17,30,36,43,63,64,68,83],useless:31,user:[2,4,5,6,13,60,90,91],users_guid:[4,6],uses:[7,13,18,21,60,87,98],using:[2,3,5,7,13,14,15,16,17,22,26,29,33,35,43,47,53,60,61,66,81,85,86,89,97,98],usr1:92,usr:55,usual:[7,9,38,81,84,85,91],util:[10,11,22,25,36,39,40,46,54,57],v_0:[18,22],v_e_n:[9,57,58],v_grad_rho_a_2:25,v_grad_rho_a_b:25,v_grad_rho_b_2:25,v_grad_rho_c_2:25,v_grad_rho_o_2:25,v_grad_rho_o_c:25,v_grad_rho_oc_to_v_grad_rho_ab:[25,57,58],v_phi:[9,57,58],v_r:[9,57,58],v_rho_a:25,v_rho_ab_to_v_rho_oc:[25,57,58],v_rho_b:25,v_rho_c:25,v_rho_o:25,v_rho_oc_to_v_rho_ab:[25,57,58],v_t:18,v_theta:[9,57,58],v_xc:32,val:15,valenc:[3,98],valgrind:92,valid:2,valu:[8,9,10,11,13,15,16,17,18,22,24,25,28,29,34,35,39,40,42,43,44,47,53,54,56,63,64,65,66,78,81,97],van:13,var_pt2_ratio:[43,57,58],var_pt2_ratio_provid:43,vari:67,variabl:[5,9,11,12,13,21,25,28,39,55,56,76,86,89,91,97],varianc:15,variance_:33,variant:7,variat:[4,6,7,12,15,16,17,22,25,31,33,43,66,71,98],variou:[18,22,24,34,35,43,47],vc_a:25,vc_b:25,vc_grad_rho_a_2:25,vc_grad_rho_a_b:25,vc_grad_rho_b_2:25,vc_rho_a:25,vc_rho_b:25,vclrdown:25,vclrdownd:25,vclrup:25,vclrupd:25,vcorrlr:[25,57,58],vector:[18,20,42,47,53,54,56,81],verbatim:2,verbos:62,veri:[4,6,7,11,16,17,53,60,85,88,90],version:[2,3,5,7,22,53,90,96],via:[22,85],vice:2,view:[2,4,6],vim:55,vimrc:89,virt:94,virt_bitmask:[14,57,58],virt_bitmask_4:[14,57,58],virtual:[7,14,36,40,47,86,94],visit:60,vol:13,volum:2,voronoi:13,vrhoc:25,vrhoo:25,vritual:14,vsigmacc:25,vsigmaco:25,vsigmaoo:25,vx_a:25,vx_b:25,vx_grad_rho_a_2:25,vx_grad_rho_a_b:25,vx_grad_rho_b_2:25,vx_grd_rho_a_2:25,vx_grd_rho_a_b:25,vx_grd_rho_b_2:25,vx_rho_a:25,vx_rho_b:25,w_n:13,wai:[2,7,15,34,35,47,56,60],wait:[54,92],wait_for_next_st:[54,57,58],wait_for_st:[15,54,57,58],wall:[0,18,28,53],wall_tim:[15,16,17,18,28,39,40,53,57,58],walli:[9,57,58],want:[2,55,86],warn:[8,13,15,22],warranti:2,water:3,wave:[0,3,4,6,7,12,15,16,17,18,21,22,23,29,31,45,46,47,48,49,50,63,64,66,72,73,75,76,83,84,87,89,95],wavefunct:[3,7,15,89],weight:[13,15,22,53],weight_at_r:[13,57,58],weight_occ_pattern:[22,57,58],weights_angular_integration_lebedev:[53,57,58],weights_angular_point:[13,57,58],welcom:2,well:[7,34,35,47,60,78,84],were:[4,6,30,91],wf_of_psi_bilinear_matrix:[22,57,58],wft:[4,6,21,25],what:[2,7,55,61],whatev:[2,13,63,64,86],when:[2,5,7,15,22,26,28,29,36,43,54,60,66,81,86,88,89,91,97,98],where:[2,5,7,10,11,15,22,24,33,34,35,36,38,42,47,49,53,60,63,64,78,84,88,89],wherea:15,whether:[2,7],which:[2,4,5,6,7,8,9,10,11,12,13,14,18,22,25,30,33,38,39,40,43,47,49,54,56,60,61,63,64,65,67,73,84,89,90,91,92,93,94,98],whitten:7,who:2,whole:[2,61],whose:2,why:60,wide:2,widehat:[4,6,15,18,22,63,66,81,98],willing:2,wish:2,within:[3,63,64,65,97],without:[0,2,5,8,83,97],word:86,work:[2,7,28,54,92,93],worker:[18,54],worker_id:[18,22,50,54],would:[2,7,64],write:[2,9,10,11,28,38,39,40,42,53,60],write_ao_basi:[52,57,58,70],write_ao_integrals_e_n:[57,58],write_ao_integrals_kinet:[57,58],write_ao_integrals_overlap:[57,58],write_ao_integrals_pseudo:[57,58],write_ao_one_e_integr:[57,58],write_ao_two_e_integr:[57,58],write_ao_two_e_integrals_erf:[57,58],write_bool:[28,57,58],write_doubl:[15,18,28,47,57,58],write_geometri:[52,57,58,70],write_git_log:[53,57,58],write_int:[15,18,22,28,43,57,58],write_integrals_erf:[52,57,58,82],write_intro_gamess:[52,57,58,70],write_mo_basi:[52,57,58,70],write_mo_integrals_e_n:[57,58],write_mo_integrals_kinet:[57,58],write_mo_integrals_pseudo:[57,58],write_mo_one_e_integr:[57,58],write_mo_two_e_integr:[57,58],write_mo_two_e_integrals_erf:[57,58],write_nuclear_repuls:[57,58],write_spindetermin:[22,57,58],write_tim:[18,22,28,36,47,53,57,58],written:[2,13,55,60],wrote:2,wuellen:13,www:[5,13],x_a:[8,53],x_alpha:25,x_b:53,x_p:53,x_q:53,xyz:[88,98],y_a:8,y_b:53,y_p:53,yann:[1,3,7],year:2,yet:55,you:[1,2,5,9,12,34,35,38,55,60,64,78,86,91,92,98],your:[2,5,80,89],your_quantum_package_directori:5,yoyodyn:2,yum:5,z_a:[8,53],z_b:53,z_p:53,zadeh:7,zero:[10,11,13,18,39,40,41,47,93],zeromq:[26,54],zeroth:[7,15,43],zip:5,zmq:[5,18,22,50,57],zmq_abort:[54,57,58],zmq_context:[10,11,15,54,57,58],zmq_delete_task:[54,57,58],zmq_delete_tasks_async_recv:[54,57,58],zmq_delete_tasks_async_send:[54,57,58],zmq_get8_dvector:[54,57,58],zmq_get8_ivector:[54,57,58],zmq_get_dmatrix:[54,57,58],zmq_get_dvector:[54,57,58],zmq_get_i8matrix:[54,57,58],zmq_get_imatrix:[54,57,58],zmq_get_int:[54,57,58],zmq_get_int_nompi:[54,57,58],zmq_get_ivector:[54,57,58],zmq_get_n_det:[22,57,58],zmq_get_n_det_alpha_uniqu:[22,57,58],zmq_get_n_det_beta_uniqu:[22,57,58],zmq_get_n_det_gener:[50,57,58],zmq_get_n_det_selector:[50,57,58],zmq_get_n_stat:[22,57,58],zmq_get_n_states_diag:[18,57,58],zmq_get_psi:[22,57,58],zmq_get_psi_bilinear:[22,57,58],zmq_get_psi_bilinear_matrix_column:[22,57,58],zmq_get_psi_bilinear_matrix_ord:[22,57,58],zmq_get_psi_bilinear_matrix_row:[22,57,58],zmq_get_psi_bilinear_matrix_valu:[22,57,58],zmq_get_psi_coef:[22,57,58],zmq_get_psi_det:[22,57,58],zmq_get_psi_det_alpha_uniqu:[22,57,58],zmq_get_psi_det_beta_uniqu:[22,57,58],zmq_get_psi_det_s:[22,57,58],zmq_get_psi_notouch:[22,57,58],zmq_h:5,zmq_lock:[54,57,58],zmq_port:[54,57,58],zmq_port_start:[54,57,58],zmq_pt2:[15,22,28,53,54,57,58],zmq_ptr:54,zmq_put8_dvector:[54,57,58],zmq_put8_ivector:[54,57,58],zmq_put_dmatrix:[54,57,58],zmq_put_dvector:[54,57,58],zmq_put_i8matrix:[54,57,58],zmq_put_imatrix:[54,57,58],zmq_put_int:[54,57,58],zmq_put_ivector:[54,57,58],zmq_put_n_det:[22,57,58],zmq_put_n_det_alpha_uniqu:[22,57,58],zmq_put_n_det_beta_uniqu:[22,57,58],zmq_put_n_det_gener:[50,57,58],zmq_put_n_det_selector:[50,57,58],zmq_put_n_stat:[22,57,58],zmq_put_n_states_diag:[18,57,58],zmq_put_psi:[22,57,58],zmq_put_psi_bilinear:[22,57,58],zmq_put_psi_bilinear_matrix_column:[22,57,58],zmq_put_psi_bilinear_matrix_ord:[22,57,58],zmq_put_psi_bilinear_matrix_row:[22,57,58],zmq_put_psi_bilinear_matrix_valu:[22,57,58],zmq_put_psi_coef:[22,57,58],zmq_put_psi_det:[22,57,58],zmq_put_psi_det_alpha_uniqu:[22,57,58],zmq_put_psi_det_beta_uniqu:[22,57,58],zmq_put_psi_det_s:[22,57,58],zmq_select:[15,22,28,54,57,58],zmq_set_run:[54,57,58],zmq_socket_pair:54,zmq_socket_pair_inproc_address:[54,57,58],zmq_socket_pul:[10,11,15,18,22,54],zmq_socket_pull_inproc_address:[54,57,58],zmq_socket_pull_tcp_address:[10,11,54,57,58],zmq_socket_push:[11,15,18,22,54],zmq_socket_push_inproc_address:[54,57,58],zmq_socket_push_tcp_address:[54,57,58],zmq_socket_sub:54,zmq_socket_sub_tcp_address:[54,57,58],zmq_state:[10,11,15,18,22,50,54,57,58],zmq_to_qp_run_socket:[18,22,50,54]},titles:["Benchmarks","Contributors","License","Some research made with the Quantum Package","The Quantum Package","Installation","The Quantum Package","Selected Configuration Interaction","ao_basis","ao_one_e_integrals","ao_two_e_erf_ints","ao_two_e_ints","aux_quantities","becke_numerical_grid","bitmask module","cipsi","cis","cisd","davidson","davidson_dressed","davidson_undressed","density_for_dft","determinants","dft_keywords","dft_utils_in_r","dft_utils_one_e","dress_zmq","electrons","ezfio_files","fci","generators_cas","generators_full","hartree_fock","iterations","kohn_sham","kohn_sham_rs","mo_basis","mo_guess","mo_one_e_integrals","mo_two_e_erf_ints","mo_two_e_ints","mpi","nuclei","perturbation","pseudo","psiref_cas","psiref_utils","scf_utils","selectors_cassd","selectors_full","selectors_utils","single_ref_method","tools","utils","zmq","Coding conventions","EZFIO","Index for programmers","Index of Providers","Developing plugins","Programming in the Quantum Package","qp_name","qp_test","cis","cisd","diagonalize_h","fci","fcidump","four_idx_transform","ks_scf","molden","print_e_conv","print_wf","pt2","rs_ks_scf","save_natorb","save_one_e_dm","save_ortho_mos","scf","write_integrals_erf","configure","Excited states","Index of commands","Interfaces","Natural orbitals","Working with external plugins","Printing the near-FCI wave function","qp_convert_output_to_ezfio","qp_create_ezfio","qp_edit","qp_export_as_tgz","qp_plugins","qp_run","qp_set_frozen_core","qp_set_mo_class","qp_stop","qp_update","qpsh","Quick-start guide","<no title>"],titleterms:{"function":[8,9,10,11,13,14,15,16,17,18,22,24,25,28,29,32,33,34,35,36,37,38,39,40,41,43,47,50,52,53,54,57,58,86],"new":59,The:[4,6,16,17,29],Using:[5,88],access:97,algorithm:7,ao_basi:8,ao_one_e_integr:9,ao_two_e_erf_int:10,ao_two_e_int:11,applic:[4,6],approxim:7,architectur:60,assumpt:27,atom:88,aux_quant:12,averag:15,bash:55,basi:88,becke_numerical_grid:13,benchmark:0,bind:5,bitmask:14,calcul:98,cfg:56,choos:98,cipsi:[15,98],cis:[16,63],cisd:[17,64],code:55,command:[82,97],comput:[7,15],configur:[5,7,80],contributor:1,convent:55,converg:0,correct:0,creat:[59,98],custom:88,databas:98,davidson:[0,18],davidson_dress:19,davidson_undress:20,demo:98,density_for_dft:21,depend:5,determin:22,determinist:7,develop:59,dft_keyword:23,dft_utils_in_r:24,dft_utils_one_:25,diagon:0,diagonalize_h:65,docopt:5,dress_zmq:26,electron:27,energi:[0,15],exampl:[4,6,80,87,89,91,92],excit:81,execut:5,extern:[5,85],extract:84,extrapol:15,ezfio:[5,8,9,10,11,12,13,16,17,18,21,22,23,26,27,29,32,33,35,36,38,39,40,42,43,44,47,56,97,98],ezfio_config:56,ezfio_fil:28,fail:5,fci:[15,29,66,86],fcidump:67,few:[4,6],fock:98,fortran:5,four_idx_transform:68,gener:55,generators_ca:30,generators_ful:31,get:97,guid:98,hand:[84,98],hartre:98,hartree_fock:32,help:[5,97],index:[57,58,82],instal:5,interact:7,interfac:83,iren:0,irpf90:[5,55],iter:33,its:5,kohn_sham:34,kohn_sham_r:35,ks_scf:69,licens:2,made:3,mo_basi:36,mo_guess:37,mo_one_e_integr:38,mo_two_e_erf_int:39,mo_two_e_int:40,modifi:7,modul:[14,57],molden:70,mpi:41,natur:84,ninja:5,nuclei:42,ocaml:5,olymp:0,option:56,orbit:84,packag:[3,4,6,60,83,97],paramet:[8,9,10,11,12,13,16,17,18,21,22,23,26,27,29,32,33,35,36,38,39,40,42,43,44,47],perturb:43,plugin:[59,85],point:[16,17,29],potenti:88,print:86,print_e_conv:71,print_wf:72,program:[16,17,29,32,34,35,52,60,82,97],programm:[16,17,29,57],provid:[8,9,10,11,13,14,15,18,20,21,22,23,24,25,27,28,29,31,32,33,34,35,36,37,38,39,40,41,42,43,47,49,50,53,54,57,58],pseudo:[44,88],psiref_ca:45,psiref_util:46,pt2:[0,7,15,73],python:55,qp_convert_output_to_ezfio:87,qp_create_ezfio:88,qp_edit:89,qp_export_as_tgz:90,qp_name:61,qp_plugin:91,qp_run:92,qp_set_frozen_cor:93,qp_set_mo_class:94,qp_stop:95,qp_test:62,qp_updat:96,qpsh:97,quantum:[3,4,6,60,83,97],quick:98,repositori:59,requir:[5,56],research:3,rs_ks_scf:74,run:[97,98],save_natorb:75,save_one_e_dm:76,save_ortho_mo:77,scf:78,scf_util:47,script:55,select:7,selectors_cassd:48,selectors_ful:49,selectors_util:50,set:88,shell:55,simpl:7,single_ref_method:51,some:3,space:[7,98],specif:5,start:98,state:[15,81],stochast:7,subroutin:[8,9,10,11,13,14,15,16,17,18,22,24,25,28,29,32,33,34,35,36,37,38,39,40,41,43,47,50,52,53,54,57,58],summari:84,target:98,text:7,tool:52,usag:[61,62,80,87,88,89,90,91,92,93,94,95,96],user:[16,17,29],util:53,variat:0,video:98,view:[16,17,29],wave:86,what:[4,6],work:85,write_integrals_erf:79,zeromq:5,zlib:5,zmq:54}}) \ No newline at end of file diff --git a/doc/users_guide/configure.html b/doc/users_guide/configure.html new file mode 100644 index 00000000..31f782fa --- /dev/null +++ b/doc/users_guide/configure.html @@ -0,0 +1,296 @@ + + + + + + + + + + + configure — Quantum Package 2.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + +
    + + + + + +
    + +
    + + + + + + + + + + + + + + + + + +
    + + + + +
    +
    +
    +
    + +
    +

    configure

    +

    Program that can either configure the compilations options or download/install +external dependencies (see the installation description).

    +
    +

    Usage

    +
    ./configure [-h | -c <file> | -i <package>]
    +
    +
    +
    +
    +-c <file>, --config <file>
    +

    Define a configuration file, in :file`${QP_ROOT}/config/`

    +
    + +
    +
    +-h, --help
    +

    Print the help message

    +
    + +
    +
    +-i <package>, --install <package>
    +

    Try to install <package>. Use at your own risk.

    +
    + +
    +
    +

    Example

    +
    ./configure
    +./configure -c config/gfortran.cfg
    +
    +
    +
    +
    + + +
    + +
    + + +
    +
    + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/doc/users_guide/excited_states.html b/doc/users_guide/excited_states.html new file mode 100644 index 00000000..0d7d3ea4 --- /dev/null +++ b/doc/users_guide/excited_states.html @@ -0,0 +1,270 @@ + + + + + + + + + + + Excited states — Quantum Package 2.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + +
    + + + + + +
    + +
    + + + + + + + + + + + + + + + + + +
    + + + + +
    +
    +
    +
    + +
    +

    Excited states

    +

    It is possible to run excited states calculations with the quantum +package. To do this, set 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 davidson n_states_diag +value.

    +

    When computing multiple states, it is good to have the +determinants s2_eig flag true. This will force the Davidson +algorithm to choose only vectors with a value of \(\widehat{S^2}\) equal to +determinants expected_s2. Otherwise, different spin states +will come out in the diagonalization.

    +

    The Quantum Package 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 cis +program, and then running the selected FCI restarting from the CIS +states, setting 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.

    +
    +

    See also

    +

    The documentation of the scf(), cis() and +fci() programs.

    +
    +
    + + +
    + +
    + + +
    +
    + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/doc/users_guide/index.html b/doc/users_guide/index.html new file mode 100644 index 00000000..0877ea0d --- /dev/null +++ b/doc/users_guide/index.html @@ -0,0 +1,316 @@ + + + + + + + + + + + Index of commands — Quantum Package 2.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + +
    + + + + + +
    + +
    + + + + + + + + + + + + + + + + + +
    + + + + +
    +
    + + + +
    +
    + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/doc/users_guide/interfaces.html b/doc/users_guide/interfaces.html new file mode 100644 index 00000000..ca71e0a2 --- /dev/null +++ b/doc/users_guide/interfaces.html @@ -0,0 +1,270 @@ + + + + + + + + + + + Interfaces — Quantum Package 2.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + +
    + + + + + +
    + +
    + + + + + + + + + + + + + + + + + +
    + + + + +
    +
    +
    +
    + +
    +

    Interfaces

    +

    A few interfaces to external codes are available.

    +
    +

    * -> Quantum Package

    +
    +
    GAMESS / Gaussian
    +
    Using the resultsFile Python library, the geometry and MOs can be read. +This is useful to make calculations with CAS - SCF orbitals
    +
    +
    +
    +

    Quantum Package -> *

    +
    +
    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 / +QMC=Chem +Trial wave functions can be used for QMC, with or without pseudo-potentials. +These interfaces are provided as external plugins.

    +
    +
    + + +
    + +
    + + +
    +
    + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/doc/users_guide/natural_orbitals.html b/doc/users_guide/natural_orbitals.html new file mode 100644 index 00000000..777269c5 --- /dev/null +++ b/doc/users_guide/natural_orbitals.html @@ -0,0 +1,299 @@ + + + + + + + + + + + Natural orbitals — Quantum Package 2.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + +
    + + + + + +
    + +
    + + + + + + + + + + + + + + + + + +
    + + + + +
    +
    +
    +
    + +
    +

    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:

    +
    +
    +\[\rho_{ij} = \delta_{ij}\]
    +
    +

    where the element of the one-body density matrix \(\rho_{ij}\) is +define as:

    +
    +
    +\[\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:

    +
    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.

    +
    +
    +

    See also

    +

    The documentation of the save_natorb() program.

    +
    +
    +
    + + +
    + +
    + + +
    +
    + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/doc/users_guide/plugins.html b/doc/users_guide/plugins.html new file mode 100644 index 00000000..5db33025 --- /dev/null +++ b/doc/users_guide/plugins.html @@ -0,0 +1,275 @@ + + + + + + + + + + + Working with external plugins — Quantum Package 2.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + +
    + + + + + +
    + +
    + + + + + + + + + + + + + + + + + +
    + + + + +
    +
    +
    +
    + +
    +

    Working with external plugins

    +

    Quantum Package has very few executables out of the box. Most of the time, +external plugins need to be downloaded and installed in the +$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:

    +
    qp_plugins download http://somewhere/over/the/rainbow/ext_repo
    +
    +
    +

    This downloads a copy of the repository of external plugins ext_repo +in $QP_ROOT/plugins.

    +

    The list of available uninstalled plugins can be seen using:

    +
    qp_plugins list -u
    +
    +
    +

    Now, the specific plugin ext_module contained in the repository +ext_repo can be installed using:

    +
    qp_plugins install ext_module
    +
    +
    +

    The module is now accessible via a symbolic link in $QP_ROOT/src, +and can be compiled as any module, running Ninja.

    +

    To remove the module, run

    +
    qp_plugins uninstall ext_module
    +
    +
    +
    +

    See also

    +

    For a more detailed explanation and an example, see qp_plugins.

    +
    +
    + + +
    + +
    + + +
    +
    + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/doc/users_guide/printing.html b/doc/users_guide/printing.html new file mode 100644 index 00000000..2c34df16 --- /dev/null +++ b/doc/users_guide/printing.html @@ -0,0 +1,274 @@ + + + + + + + + + + + Printing the near-FCI wave function — Quantum Package 2.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + +
    + + + + + +
    + +
    + + + + + + + + + + + + + + + + + +
    + + + + +
    +
    +
    +
    + +
    +

    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 \(10^4\) determinants, you can directly read it +with the qp_edit command. Just run

    +
    qp_edit file.ezfio
    +
    +
    +
    +

    Important

    +

    The qp_edit mode virtually makes human-friendly the +architecture of the EZFIO database through the use of a +the text editor defined by the EDITOR environment +variable.

    +
    +

    Then, look for the word hand when you are in the 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 qp_edit mode. An alternative is to use the +print_wf command:

    +
    qp_run print_wf file.ezfio | tee file.ezfio.fci_natorb.wf
    +
    +
    +

    This program will, by default, print out the first \(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 determinants n_det_print_wf +keyword using the qp_edit tool.

    +
    +

    See also

    +

    The documentation of the print_wf program.

    +
    +
    + + +
    + +
    + + +
    +
    + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/doc/users_guide/qp_convert_output_to_ezfio.html b/doc/users_guide/qp_convert_output_to_ezfio.html new file mode 100644 index 00000000..75cf7f81 --- /dev/null +++ b/doc/users_guide/qp_convert_output_to_ezfio.html @@ -0,0 +1,297 @@ + + + + + + + + + + + qp_convert_output_to_ezfio — Quantum Package 2.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + +
    + + + + + +
    + +
    + + + + + + + + + + + + + + + + + +
    + + + + +
    +
    +
    +
    + +
    +

    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

    +
    qp_convert_output_to_ezfio [-o EZFIO_DIR] FILE
    +
    +
    +
    +
    +-o, --output=EZFIO_DIR
    +

    Renames the EZFIO directory. If this option is not present, the +default name fill be 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

    +
    qp_convert_output_to_ezfio h2o.out -o h2o
    +
    +
    +
    +
    + + +
    + +
    + + +
    +
    + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/doc/users_guide/qp_create_ezfio_from_xyz.html b/doc/users_guide/qp_create_ezfio_from_xyz.html new file mode 100644 index 00000000..8a29126f --- /dev/null +++ b/doc/users_guide/qp_create_ezfio_from_xyz.html @@ -0,0 +1,427 @@ + + + + + + + + + + + qp_create_ezfio — Quantum Package 2.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + +
    + + + + + +
    + +
    + + + + + + + + + + + + + + + + + +
    + + + + +
    +
    +
    +
    + +
    +

    qp_create_ezfio

    +

    This command creates an EZFIO directory from a standard xyz file or +from a z-matrix file in Gaussian format.

    +
    +

    Usage

    +
    qp_create_ezfio [-a] -b <string> [-c <int>] [-d <float>]
    +   [-h] [-m <int>] [-o EZFIO_DIR] [-p <string>] [-x] [--] FILE
    +
    +
    +
    +
    +-a, --au
    +

    If present, input geometry is in atomic units.

    +
    + +
    +
    +-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. +Quantum Package This option is mandatory .

    +

    If <string> is set to show, the list of all available basis +sets is displayed.

    +
    + +
    +
    +-c, --charge=<int>
    +

    Total charge of the molecule. Default is 0.

    +
    + +
    +
    +-d, --dummy=<float>
    +

    Add dummy atoms (X) between atoms when the distance between two atoms +is less than \(x \times \sum R_\mathrm{cov}\), the covalent radii +of the atoms. The default is x=0, so no dummy atom is added.

    +
    + +
    +
    +-h, --help
    +

    Print the help text and exit

    +
    + +
    +
    +-m, --multiplicity=<int>
    +

    Spin multiplicity \(2S+1\) of the molecule. Default is 1.

    +
    + +
    +
    +-o, --output=EZFIO_DIR
    +

    Name of the created EZFIO directory.

    +
    + +
    +
    +-p <string>, --pseudo=<string>
    +

    Name of the pseudo-potential. Follows the same conventions as the basis set.

    +
    + +
    +
    +-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

    +
    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
    +
    +
    +
    +
    + + +
    + +
    + + +
    +
    + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/doc/users_guide/qp_edit.html b/doc/users_guide/qp_edit.html new file mode 100644 index 00000000..aecff2d3 --- /dev/null +++ b/doc/users_guide/qp_edit.html @@ -0,0 +1,328 @@ + + + + + + + + + + + qp_edit — Quantum Package 2.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + +
    + + + + + +
    + +
    + + + + + + + + + + + + + + + + + +
    + + + + +
    +
    +
    +
    + +
    +

    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 Quantum Package 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 EDITOR +environment variable. If this variable is not set, the 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 $HOME/.vimrc:

    +
    set t_ti=
    +set t_te=
    +
    +
    +
    +
    +

    Usage

    +
    qp_edit [-c] [-h] [-n <int>] [-s <range>] [--] EZFIO_DIR
    +
    +
    +
    +
    +-c, --check
    +

    Checks the input data

    +
    + +
    +
    +-h, --help
    +

    Print the help text and exits

    +
    + +
    +
    +-n, --ndet=<int>
    +

    Truncates the wavefunction to the target number of determinants

    +
    + +
    +
    +-s, --state=<range>
    +

    Select the states to extract from the EZFIO directory, using the same conventions +as qp_set_mo_class. See example below.

    +
    + +
    +
    +

    Example

    +
    qp_edit --state="[1,3-5]" test.ezfio
    +
    +
    +

    Removes all states except states 1,3,4 and 5 from test.ezfio. +The resulting EZFIO directory has 4 states.

    +
    +
    + + +
    + +
    + + +
    +
    + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/doc/users_guide/qp_export_as_tgz.html b/doc/users_guide/qp_export_as_tgz.html new file mode 100644 index 00000000..3eaba8b2 --- /dev/null +++ b/doc/users_guide/qp_export_as_tgz.html @@ -0,0 +1,285 @@ + + + + + + + + + + + qp_export_as_tgz — Quantum Package 2.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + +
    + + + + + +
    + +
    + + + + + + + + + + + + + + + + + +
    + + + + +
    +
    +
    +
    + +
    +

    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 Quantum Package 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

    +
    qp_export_as_tgz [-h|--help]
    +
    +
    +
    +
    +-h, --help
    +

    Prints the help message

    +
    + +
    +

    Note

    +

    There can be conflicts due to the version of glibc. The machine on which Quantum Package is +compiled should be the oldest one.

    +
    +
    +
    + + +
    + +
    + + +
    +
    + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/doc/users_guide/qp_plugins.html b/doc/users_guide/qp_plugins.html new file mode 100644 index 00000000..e7718b1f --- /dev/null +++ b/doc/users_guide/qp_plugins.html @@ -0,0 +1,374 @@ + + + + + + + + + + + qp_plugins — Quantum Package 2.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + +
    + + + + + +
    + +
    + + + + + + + + + + + + + + + + + +
    + + + + +
    +
    +
    +
    + +
    +

    qp_plugins

    +

    This command deals with all external plugins of Quantum Package. Plugin +repositories can be downloaded, and the plugins in these repositories +can be installed/uninstalled or created.

    +
    +

    Usage

    +
    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>...]
    +
    +
    +
    +
    +list
    +

    List all the available plugins.

    +
    + +
    +
    +-i, --installed
    +

    List all the installed plugins.

    +
    + +
    +
    +-u, --uninstalled
    +

    List all the uninstalled plugins.

    +
    + +
    +
    +-q, --repositories
    +

    List all the downloaded repositories.

    +
    + +
    +
    +download <url>
    +

    Download an external repository. The URL points to a tar.gz file or a +git repository, for example:

    + +
    + +
    +
    +install <plugin_name>
    +

    Install the plugin plugin_name.

    +
    + +
    +
    +uninstall <plugin_name>
    +

    Uninstall the plugin plugin_name.

    +
    + +
    +
    +-n, --name=<plugin_name>
    +

    Create a new plugin named plugin_name (in local repository by default).

    +
    + +
    +
    +-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 Quantum Package and execute:

    +
    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/

    +
    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 Quantum Package.

    +

    Now let us install the plugin rsdft_cipsi:

    +
    qp_plugins install rsdft_cipsi
    +
    +
    +

    This will link this directory to the Quantum Package 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 Quantum Package.

    +

    Then, to compile the new plugin, just recompile the Quantum Package as usual by +going at the root of the Quantum Package directory:

    +
    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.

    +
    +
    + + +
    + +
    + + +
    +
    + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/doc/users_guide/qp_run.html b/doc/users_guide/qp_run.html new file mode 100644 index 00000000..96486b9d --- /dev/null +++ b/doc/users_guide/qp_run.html @@ -0,0 +1,311 @@ + + + + + + + + + + + qp_run — Quantum Package 2.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + +
    + + + + + +
    + +
    + + + + + + + + + + + + + + + + + +
    + + + + +
    +
    +
    +
    + +
    +

    qp_run

    +

    Command used to run a calculation.

    +

    If the USR1 signal is sent to qp_run, the application will +call 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 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 work directory.

    +
    +

    Usage

    +
    qp_run [-h] [-p <string>] [-s] [--] PROGRAM EZFIO_DIR
    +
    +
    +

    PROGRAM is the name of the Quantum Package program to be run, and EZFIO_DIR +is the name of the EZFIO directory containing the data.

    +
    +
    +-h, --help
    +

    Displays the list of available Quantum Package programs.

    +
    + +
    +
    +-p <string>, --prefix=<string>
    +

    Prefix before running the program. This option is used to run +programs like like gdb or valgrind.

    +
    + +
    +
    +-s, --slave
    +

    This option needs to be set to run a slave job for PROGRAM, to +accelerate another running instance of the Quantum Package.

    +
    + +
    +
    +

    Example

    +
    qp_run fci h2o.ezfio &
    +srun qp_run --slave fci h2o.ezfio
    +wait
    +
    +
    +
    +
    + + +
    + +
    + + +
    +
    + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/doc/users_guide/qp_set_frozen_core.html b/doc/users_guide/qp_set_frozen_core.html new file mode 100644 index 00000000..c15b49b3 --- /dev/null +++ b/doc/users_guide/qp_set_frozen_core.html @@ -0,0 +1,282 @@ + + + + + + + + + + + qp_set_frozen_core — Quantum Package 2.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + +
    + + + + + +
    + +
    + + + + + + + + + + + + + + + + + +
    + + + + +
    +
    +
    +
    + +
    +

    qp_set_frozen_core

    +

    Automatically finds n, the number of core electrons. Calls +qp_set_mo_class setting all MOs as Active, except the +\(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

    +
    qp_set_frozen_core [-q]  EZFIO_DIR
    +
    +
    +
    +
    +-q
    +

    Prints in the standard output the number of core electrons.

    +
    + +
    +
    + + +
    + +
    + + +
    +
    + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/doc/users_guide/qp_set_mo_class.html b/doc/users_guide/qp_set_mo_class.html new file mode 100644 index 00000000..61caf04c --- /dev/null +++ b/doc/users_guide/qp_set_mo_class.html @@ -0,0 +1,326 @@ + + + + + + + + + + + qp_set_mo_class — Quantum Package 2.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + +
    + + + + + +
    + +
    + + + + + + + + + + + + + + + + + +
    + + + + +
    +
    +
    +
    + +
    +

    qp_set_mo_class

    +

    This command sets the orbital classes in an EZFIO directory.

    +
    +
    Core
    +
    MOs which are always doubly occupied
    +
    Deleted
    +
    MOs which are never occupied
    +
    Active
    +
    MOs in which any number of holes/particles can be made
    +
    Inactive
    +
    MOs in which only holes can be made
    +
    Virtual
    +
    MOs in which only particles can be made
    +
    +

    To avoid errors, all the MOs should be given a class. +The range of MOs are given like the ranges in SLURM commands. For example, +"[36-53,72-107,126-131]".

    +
    +

    Tip

    +

    To quickly setup a frozen core calculation, the script qp_set_frozen_core +can be used.

    +
    +
    +

    Usage

    +
    qp_set_mo_class [-a <range>] [-c <range>] [-d <range>] [-h] [-i <range>]
    +    [-q] [-v <range>] [--] EZFIO_DIR
    +
    +
    +
    +
    +-a, --act=<range>
    +

    Range of active orbitals

    +
    + +
    +
    +-c, --core=<range>
    +

    Range of core orbitals

    +
    + +
    +
    +-d, --del=<range>
    +

    Range of deleted orbitals

    +
    + +
    +
    +-i, --inact=<range>
    +

    Range of inactive orbitals

    +
    + +
    +
    +-q, --query
    +

    Print the MO classes

    +
    + +
    +
    +-v, --virt=<range>
    +

    Range of virtual orbitals

    +
    + +
    +
    + + +
    + +
    + + +
    +
    + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/doc/users_guide/qp_stop.html b/doc/users_guide/qp_stop.html new file mode 100644 index 00000000..2bb4ec6b --- /dev/null +++ b/doc/users_guide/qp_stop.html @@ -0,0 +1,284 @@ + + + + + + + + + + + qp_stop — Quantum Package 2.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + +
    + + + + + +
    + +
    + + + + + + + + + + + + + + + + + +
    + + + + +
    +
    +
    +
    + +
    +

    qp_stop

    +

    Requests for a clean termination of the program.

    +

    This will have the effect to exit the Davidson diagonalization, the +SCF procedure or the determinant selection to save the current wave +function and exit the program.

    +
    +

    Usage

    +
    qp_stop [-chq] EZFIO_DIR
    +
    +
    +
    +
    +-c, --cancel
    +

    Cancel the qp_stop order.

    +
    + +
    +
    +-q, --query
    +

    Ask if EZFIO_DIR was requested to stop.

    +
    + +
    +
    + + +
    + +
    + + +
    +
    + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/doc/users_guide/qp_update.html b/doc/users_guide/qp_update.html new file mode 100644 index 00000000..82785b47 --- /dev/null +++ b/doc/users_guide/qp_update.html @@ -0,0 +1,269 @@ + + + + + + + + + + + qp_update — Quantum Package 2.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + +
    + + + + + +
    + +
    + + + + + + + + + + + + + + + + + +
    + + + + +
    +
    +
    +
    + +
    +

    qp_update

    +

    This command makes an update of the Quantum Package to the latest stable version.

    +
    +

    Usage

    +
    qp_update [-h]
    +
    +
    +
    +
    + + +
    + +
    + + +
    +
    + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/doc/users_guide/qpsh.html b/doc/users_guide/qpsh.html new file mode 100644 index 00000000..50764fa0 --- /dev/null +++ b/doc/users_guide/qpsh.html @@ -0,0 +1,415 @@ + + + + + + + + + + + qpsh — Quantum Package 2.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + +
    + + + + + +
    + +
    + + + + + + + + + + + + + + + + + +
    + + + + +
    +
    +
    +
    + +
    +

    qpsh

    +

    qpsh is the Quantum Package shell. It is a Bash shell with all the +required evironment variables loaded, a modified prompt, and the +qp command.

    +
    +

    qp

    +

    This command is a hub to the most used command within Quantum Package. The power +of the qpsh shell is the auto-completion that comes when the +<Tab> key is pressed with the qp command.

    +
    +

    EZFIO access

    +
    +
    +set_file
    +
    qp set_file EZFIO_DIR
    +
    +
    +

    Sets the current EZFIO directory. All the following instruction will be +relative to this directory.

    +

    This command is equivalent to ezfio set_file EZFIO_DIR.

    +
    + +
    +
    +unset_file
    +
    qp unset_file
    +
    +
    +

    Unsets the current EZFIO directory.

    +

    This command is equivalent to ezfio unset_file.

    +
    + +
    +
    +has
    +
    qp has <module> <parameter>
    +
    +
    +

    If the <module>/<parameter> is set in the EZFIO directory, returns 1. +Otherwise returns 0.

    +

    This command is equivalent to ezfio has <module> <parameter>.

    +
    + +
    +
    +get
    +
    qp get <module> <parameter>
    +
    +
    +

    Returns the value of <module>/<parameter>.

    +

    This command is equivalent to ezfio get <module> <parameter>.

    +
    + +
    +
    +set
    +
    qp set <module> <parameter> [<value>]
    +
    +
    +

    Sets the value of <module>/<parameter>. If the value is not given in +the command line it is read from the standard input.

    +

    This command is equivalent to +ezfio set <module> <parameter> [<value>].

    +
    + +
    +
    +

    Running programs

    +
    +
    +run
    +
    +
    qp (run|srun|mpirun) [options] <program>
    +
    +
    +
    +

    Runs qp_run, qp_srun, or qp_mpirun using the current +EZFIO directory.

    +
    + +
    +
    +stop
    +

    qp stop : runs qp_stop

    +
    + +
    +
    +

    Getting help

    +
    +
    +man
    +
    +
    qp man (<program>|<qp_command>)
    +
    +
    +
    +

    Displays a man page for a Quantum Package program or a Quantum Package command.

    +
    + +
    +
    +

    Running quantum package commands

    +

    The qp_ commands can be run without specifying the EZFIO directory:

    +
    +
    +convert_output_to_ezfio
    +

    qp convert_output_to_ezfio : runs qp_convert_output_to_ezfio

    +
    + +
    +
    +create_ezfio
    +

    qp create_ezfio : runs qp_create_ezfio

    +
    + +
    +
    +plugins
    +

    qp plugins : runs qp_plugins

    +
    + +
    +
    +reset
    +

    qp reset : runs qp_reset

    +
    + +
    +
    +set_frozen_core
    +

    qp set_frozen_core : runs qp_set_frozen_core

    +
    + +
    +
    +set_mo_class
    +

    qp set_mo_class : runs qp_set_mo_class

    +
    + +
    +
    +update
    +

    qp update : runs qp_update

    +
    + +
    +
    +
    + + +
    + +
    + + +
    +
    + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/doc/users_guide/quickstart.html b/doc/users_guide/quickstart.html new file mode 100644 index 00000000..ae292cc0 --- /dev/null +++ b/doc/users_guide/quickstart.html @@ -0,0 +1,371 @@ + + + + + + + + + + + Quick-start guide — Quantum Package 2.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + +
    + + + + + +
    + +
    + + + + + + + + + + + + + + + + + +
    + + + + +
    +
    +
    +
    + +
    +

    Quick-start guide

    +

    This tutorial should teach you everything you need to get started with +the the basics of the Quantum Package. As an example, we will run a frozen core +CIPSI calculation on the HCN molecule in the 631-G basis set.

    +
    +

    Demo video

    +
    +
    +

    Hands on

    +
    +

    Important

    +

    Before using the Quantum Package, it is required to source the file +quantum_package.rc if it has not been done already in the +current shell.

    +
    +
    +

    Create the EZFIO database

    +

    The data relative to calculations are stored in an EZFIO database. +EZFIO is a hierarchical data format which uses the hierarchy of the +file system to organize the data, as files stored in a directory. The +data in the EZFIO directory are stored as plain text files, so it can +be opened with any text editor. +To access the data of the EZFIO database, the APIs (Fortran, Python, +OCaml or Bash) provided by EZFIO should be used, or tools using +these APIs such as qp_edit provided with the Quantum Package.

    +

    First, create an xyz file containing the coordinates of the molecule. +The file hcn.xyz contains:

    +
    3
    +HCN molecule
    +C    0.0    0.0    0.0
    +H    0.0    0.0    1.064
    +N    0.0    0.0    -1.156
    +
    +
    +

    This xyz file is now used with the qp_create_ezfio command to +create an EZFIO database with the 6-31G basis set:

    +
    qp_create_ezfio -b "6-31G" hcn.xyz -o hcn
    +
    +
    +

    The EZFIO database now contains data relative to the nuclear coordinates +and the atomic basis set:

    +
    $ ls hcn
    +ao_basis/  electrons/  ezfio/  nuclei/  pseudo/
    +
    +
    +
    +
    +

    Run a Hartree-Fock calculation

    +

    The program qp_run is the driver program of the Quantum Package. To run a +SCF calculation, just run

    +
    qp_run scf hcn
    +
    +
    +

    The expected energy is -92.827856698 au.

    +
    +

    See also

    +

    The documentation of the hartree_fock module and that of the scf() program.

    +
    +

    This creates the MOs in the EZFIO database that will be used to +perform any other post-SCF method. The Quantum Package does not handle symmetry and +the MOs are stored by increasing order of Fock energies.

    +
    +
    +

    Choose the target MO space

    +

    Now, modify to EZFIO database to make CIPSI calculation in the +full set of valence MOs, keeping the core MOs frozen. The simple +command qp_set_frozen_core does this automatically:

    +
    qp_set_frozen_core hcn
    +
    +
    +

    The general command to specify core and active orbitals is qp_set_mo_class. +In the case of HCN molecule in the 631G basis, one has 20 MOs in total and the two first orbitals are frozen:

    +
    qp_set_mo_class -core "[1-2]" -act "[3-20]" hcn
    +
    +
    +
    +
    +

    Run the CIPSI calculation

    +

    We will now use the CIPSI algorithm to estimate the FCI energy.

    +
    qp_run fci hcn | tee hcn.fci.out
    +
    +
    +

    The program will start with a single determinant and will iteratively:

    +
      +
    • Select the most important determinants from the external space and add them to the +internal space
    • +
    • Add all the necessary determinants to allow the eigenvector of \(\hat H\) to be +also an eigenstate of \(\widehat{S^2}\)
    • +
    • Diagonalize \(\hat H\) in the enlarged internal space
    • +
    • Compute (stochastically) the second-order perturbative contribution to the energy
    • +
    • Extrapolate the variational energy by fitting +\(E=E_\text{FCI} - \alpha\, E_\text{PT2}\)
    • +
    +

    By default, the program will stop when more than one million determinants have +entered in the internal space, or when the PT2 energy is below \(10^{-4}\).

    +

    To have a pictural illustration of the convergence of the CIPSI algorithm, just run

    +
    qp_e_conv_fci hcn.fci.out
    +
    +
    +

    This will create the files “hcn.fci.out.conv” containing the data of the convergence of the energy that can be plotted, together with the file “hcn.fci.out.conv.1.eps” which is obtained from the gnuplot plot file “hcn.fci.out.conv.plt”.

    +

    The estimated FCI energy of HCN is -93.0501 au.

    +
    +

    See also

    +

    The documentation of the fci module and that of the fci() program.

    +
    +
    +

    TODO

    +
    +

    Important

    +

    TODO

    +http://craniointernational.com/wp-content/uploads/2018/01/work-in-progress.jpg +
      +
    • Parameters for Hartree-Fock
    • +
    • Parameters for Davidson
    • +
    • Running in parallel
    • +
    +
    +
    +
    +
    + + +
    + +
    + + +
    +
    + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/doc/work.html b/doc/work.html new file mode 100644 index 00000000..91ae577c --- /dev/null +++ b/doc/work.html @@ -0,0 +1,230 @@ + + + + + + + + + + + <no title> — Quantum Package 2.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + +
    + + + + + +
    + +
    + + + + + + + + + + + + + + + + + +
    + + + + +
    +
    +
    +
    + + http://craniointernational.com/wp-content/uploads/2018/01/work-in-progress.jpg + + +
    + +
    +
    + + +
    + +
    +

    + © Copyright 2018, A. Scemama, E. Giner + +

    +
    + Built with Sphinx using a theme provided by Read the Docs. + +
    + +
    +
    + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/index.html b/index.html index 7e7af426..5a42f0d6 100644 --- a/index.html +++ b/index.html @@ -64,7 +64,7 @@ From the user point of view, Quantum Package proposes a stand-alone path to use
  • - Documentation + Documentation
  • @@ -171,7 +171,7 @@ systems.

    diff --git a/page/index.html b/page/index.html index b4ced776..9fd19f74 100644 --- a/page/index.html +++ b/page/index.html @@ -57,7 +57,7 @@
  • - Documentation + Documentation
  • diff --git a/page/try/index.html b/page/try/index.html index 24073c23..2386c550 100644 --- a/page/try/index.html +++ b/page/try/index.html @@ -67,7 +67,7 @@ export EDITOR=vim Here is an example of a few commands …">
  • - Documentation + Documentation
  • diff --git a/page/tutorials/index.html b/page/tutorials/index.html index c53cf548..a2e52796 100644 --- a/page/tutorials/index.html +++ b/page/tutorials/index.html @@ -60,7 +60,7 @@
  • - Documentation + Documentation
  • diff --git a/src/config.toml b/src/config.toml index f7cd57a8..30aff603 100644 --- a/src/config.toml +++ b/src/config.toml @@ -59,6 +59,6 @@ pygmentCodeFences = true [[menu.main]] name = "Documentation" - url = "https://quantum-package-scemamamaster.readthedocs.io/" + url = "/doc/index" weight = 2 diff --git a/src/content/_index.md b/src/content/_index.md index 0018b386..fc4e6f01 100644 --- a/src/content/_index.md +++ b/src/content/_index.md @@ -10,7 +10,7 @@ systems. * [Download the source code](http://github.com/QuantumPackage/qp2) -* [Read the documentation](https://quantum-package-scemamamaster.readthedocs.io/) +* [Read the documentation](/doc/index) * [Try it now in your web browser](/page/try) diff --git a/tags/index.html b/tags/index.html index b921d333..18e7da4c 100644 --- a/tags/index.html +++ b/tags/index.html @@ -57,7 +57,7 @@
  • - Documentation + Documentation