10
0
mirror of https://github.com/LCPQ/quantum_package synced 2024-09-27 03:51:01 +02:00
* minor changes in README.rst of many src files

* added ROHF_b2.gms.out

* modified some scripts

* modified README.rst

* modifs in docs/intro
This commit is contained in:
Emmanuel Giner 2018-12-28 19:41:11 +01:00 committed by Anthony Scemama
parent 540c02c4aa
commit 062020ffdc
27 changed files with 562 additions and 2267 deletions

1
doc/.gitignore vendored
View File

@ -1 +0,0 @@
build

View File

@ -1,154 +0,0 @@
# Makefile for Sphinx documentation
#
# You can set these variables from the command line.
SPHINXOPTS =
SPHINXBUILD = sphinx-build
PAPER =
BUILDDIR = build
# Internal variables.
PAPEROPT_a4 = -D latex_paper_size=a4
PAPEROPT_letter = -D latex_paper_size=letter
ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) source
# the i18n builder cannot share the environment and doctrees with the others
I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) source
.PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest gettext default
default: html
help:
@echo "Please use \`make <target>' where <target> is one of"
@echo " html to make standalone HTML files"
@echo " dirhtml to make HTML files named index.html in directories"
@echo " singlehtml to make a single large HTML file"
@echo " pickle to make pickle files"
@echo " json to make JSON files"
@echo " htmlhelp to make HTML files and a HTML help project"
@echo " qthelp to make HTML files and a qthelp project"
@echo " devhelp to make HTML files and a Devhelp project"
@echo " epub to make an epub"
@echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter"
@echo " latexpdf to make LaTeX files and run them through pdflatex"
@echo " text to make text files"
@echo " man to make manual pages"
@echo " texinfo to make Texinfo files"
@echo " info to make Texinfo files and run them through makeinfo"
@echo " gettext to make PO message catalogs"
@echo " changes to make an overview of all changed/added/deprecated items"
@echo " linkcheck to check all external links for integrity"
@echo " doctest to run all doctests embedded in the documentation (if enabled)"
clean:
-rm -rf $(BUILDDIR)/*
html:
$(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html
@echo
@echo "Build finished. The HTML pages are in $(BUILDDIR)/html."
dirhtml:
$(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml
@echo
@echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml."
singlehtml:
$(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml
@echo
@echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml."
pickle:
$(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle
@echo
@echo "Build finished; now you can process the pickle files."
json:
$(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json
@echo
@echo "Build finished; now you can process the JSON files."
htmlhelp:
$(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp
@echo
@echo "Build finished; now you can run HTML Help Workshop with the" \
".hhp project file in $(BUILDDIR)/htmlhelp."
qthelp:
$(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp
@echo
@echo "Build finished; now you can run "qcollectiongenerator" with the" \
".qhcp project file in $(BUILDDIR)/qthelp, like this:"
@echo "# qcollectiongenerator $(BUILDDIR)/qthelp/SelectedCI.qhcp"
@echo "To view the help file:"
@echo "# assistant -collectionFile $(BUILDDIR)/qthelp/SelectedCI.qhc"
devhelp:
$(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp
@echo
@echo "Build finished."
@echo "To view the help file:"
@echo "# mkdir -p $$HOME/.local/share/devhelp/SelectedCI"
@echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/SelectedCI"
@echo "# devhelp"
epub:
$(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub
@echo
@echo "Build finished. The epub file is in $(BUILDDIR)/epub."
latex:
$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
@echo
@echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex."
@echo "Run \`make' in that directory to run these through (pdf)latex" \
"(use \`make latexpdf' here to do that automatically)."
latexpdf:
$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
@echo "Running LaTeX files through pdflatex..."
$(MAKE) -C $(BUILDDIR)/latex all-pdf
@echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."
text:
$(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text
@echo
@echo "Build finished. The text files are in $(BUILDDIR)/text."
man:
$(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man
@echo
@echo "Build finished. The manual pages are in $(BUILDDIR)/man."
texinfo:
$(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
@echo
@echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo."
@echo "Run \`make' in that directory to run these through makeinfo" \
"(use \`make info' here to do that automatically)."
info:
$(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
@echo "Running Texinfo files through makeinfo..."
make -C $(BUILDDIR)/texinfo info
@echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo."
gettext:
$(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale
@echo
@echo "Build finished. The message catalogs are in $(BUILDDIR)/locale."
changes:
$(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes
@echo
@echo "The overview file is in $(BUILDDIR)/changes."
linkcheck:
$(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck
@echo
@echo "Link check complete; look for any errors in the above output " \
"or in $(BUILDDIR)/linkcheck/output.txt."
doctest:
$(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest
@echo "Testing of doctests in the sources finished, look at the " \
"results in $(BUILDDIR)/doctest/output.txt."

View File

@ -1,44 +0,0 @@
# `ei_handler.py`
This script in located in `$QP_ROOT/scripts/ezfio_interface/`.
It provide all the resource need to deal with the `EZFIO.cfg` files :
- The creation of `$MODULE_LOWER_ezfio_config` in `$QP_ROOT/ezfio/config`
- The `ezfio_interface.irp.f` who containt all the provider associate (in `$MODULE/`)
- The `$MODULE_LOWER_ezfio_defaults` in `$QP_ROOT/data/`
- The `Input_$MODULE_LOWER.ml` for the *qp_edit*
For more information you can type `ei_handler.py -h`
# `module_handler.py`
This script in located in `$QP_ROOT/scripts/module/`.
It provide all the resource related to the tree dependency of the modules.
If more useful as a librairy than a cli.
It have some usefull property:
- The list of module
- The dict of the descendant
- The dict of the parent
- The dict of the child
- The dict of the root
- The list reduced tree (For a list of module in input return only the root)
For tree syntax you can check http://en.wikipedia.org/wiki/Tree_%28data_structure%29#Terminologies_used_in_Trees
In the cli mode:
- From a `NEEDED_CHILDREN_MODULE` file you can have all the descendant, and a png
representation who correspond.
# `qp_install_module.py`
This script is located in `$QP_ROOT/scripts/module/`.
It is usefull when you need to install a new module. (From the soon to come repo or from scratch).
# `qp_create_ninja.py`
This script is located in `$QP_ROOT/scripts/compilation/`.
It will create the `build.ninja` file. It will use intersifly the `module_handler.py` module.
To read all the flag for the compilation the module `read_compilation_cfg.py` is used.
You only need to know, that all flag are appending.

View File

@ -1,156 +0,0 @@
============================================================
What is a selected CI caculation ? Some theoretical concepts
============================================================
Generalities
============
The selected CI algorithm can be seen as a way to compute the energies (and various properties) of a given number of eigenstates
of a given :term:`target space` (ex : CISD, CAS-CI, DDCI etc ...),
but by taking the freedom of splitting the wave function of the target space in term
of :term:`internal determinants` treated variationally and :term:`perturbers` treated perturbatively.
Why this freedom ? Because in a given :term:`target space` (except some really special cases) most of the information
is concentrated within a tiny fraction of the :term:`target wave function`, and the remaining part can be reasonabely estimated by perturbtation.
This splitting of the wave function is not done in one shot, it is done iteratively. The iterative procedure needs a :term:`stopping criterion` to end the calculation and to control the quality of the calculation.
This :term:`stopping criterion` can be for example the number of determinants in the :term:`intern space`,
or the value of the :term:`energetic perturbative correction` to estimate the importance of the perturbation, or the convergence of the :term:`estimated target energy`, or anything that can
be defined in terms of available informations during the calculation.
The heart of the selected CI algorithm is based on the CIPSI algorithm (ref Malrieu).
Selected CI in a few words
==========================
First you define a :term:`target space`. Once the target space is defined, you define the :term:`stopping criterion`.
After that, a starting wave function is chosen by the user (HF by default).
This starting wave function is the first :term:`Internal determinants` wave function.
After that, one would like to extend this :term:`Internal determinants` wave function by adding
some :term:`perturbers` determinants.
How do we select the good :term:`perturbers` ?
do while (:term:`stopping criterion` is reached)
1) Generates :term:`perturbers` determinants according to your chosen :term:`target space`.
:math:`\Rightarrow` generates a set of :term:`perturbers` :math:`\{|D_P\rangle\}`
2) The :term:`perturbers` importance are estimated by perturbation thanks to the current :term:`internal determinants`.
3) The most important of the :math:`\{|D_P\rangle\}` are chosen to enter in the :term:`internal determinants`.
4) You rediagonalize the H matrix with the previous set of :term:`internal determinants` and the chosen :term:`perturbers`.
:math:`\Rightarrow` create a new wave function and a new set of the :term:`internal determinants`
5) iterate
Once the iterative procedure is stopped, the :term:`internal determinants` wave function have a :term:`variational energy`,
and by adding the :term:`energetic perturbative correction` one have the :term:`estimated target energy`
which is an approximation of the :term:`target energy`. One should notice that if one takes
a :term:`stopping criterion` such as the all the determinants of the target space are in the :term:`intern space`,
the :term:`estimated target energy` is the :term:`target energy`.
If one is interested of how is built the selected CI wave function into more details, one can read the further section.
What is a selected CI iteration in practice (and some details)
==============================================================
From the previous section we have roughly seen how the selected CI works. Now, getting a bit more into details,
we will see what is done in practice during a selected CI iteration. To illustrate this, a simple CISD example wil be given.
The general picture
^^^^^^^^^^^^^^^^^^^
The :term:`target space` defines entirely the method that is going to be approximated, and the stopping criterion will be the only approximation.
This :term:`target space` can always be defined in terms of application of an :term:`H operator`
(with some :term:`excitation restrictions`) on a given set of determinants that we shall call the :term:`generators` determinants.
We call :term:`restricted H operator` this precise H operator.
The target space intirely defines the :term:`restricted H operator`.
The only flexibility is the perturbation theory to be used to estimate the coeficients of the :term:`perturbers`.
If the target space is just defines in term of a CI matrix to diagonalize, the standard :term:`Diagonalization EN EG` perturbation will be used.
If some other constraints are imposed in addition to the CI matrix
(e.g. some physical conditions of size extensivity such as in the :term:`CISD+SC2` method),
then the perturbation must be adapted to properly respect the :term:`target space`.
CISD : the :term:`target space` is here defined intirely by all the single and double excitations acting on the HF determinant.
So the :term:`generators` subset of determinants here is only the HF determinant and will not change along the iteration.
If some occupied orbitals are chosen to be frozen (no excitations from those orbitals)
or some virtuals are chosen to be deleted (no excitations going to these virtuals orbitals),
this constraint imposes the :term:`excitation restrictions`. So here the :term:`restricted H operator` will be all the single and double excitations except those involving either a frozen core orbital or a deleted virtual orbital.
Different choices of perturbation theory can be made for the CISD, but the standard :term:`Diagonalization EN EG` can be trustly used.
Once the :term:`target space` have been defined, what does in practice a selected CI iteration.
For the sake of simplicity, here we emphasize on the ground state :math:`| \psi_0 \rangle`. At a given iteration, one have a :term:`selected wave function` :math:`|\psi_0\rangle`, and the selected CI algorithm performs :
do G = 1, N_Generators
1) Apply the :term:`restricted H operator` on the :math:`|D_G \rangle` :term:`generators` determinant belonging to :math:`| \psi_0 \rangle`
:math:`\Rightarrow` generates a set of :term:`perturbers` :math:`|D_P\rangle`
2) Estimate the perturbative importance of each perturbers
:math:`\Rightarrow` example for the :term:`EN EG` perturbation theory
.. math::
c_{D_P}^0= \frac{ \sum_{S=1,N_{\rm selectors}} c_S^0 \langle D_S|H|D_P\rangle}{ \langle \psi_0 |H|\psi_0 \rangle - \langle D_P |H|D_P\rangle } \\
e_{D_P}^0= \frac{(\sum_{S=1,N_{\rm selectors}} c_S^0 \langle D_S|H|D_P\rangle) ^2}{\langle \psi_0 |H|\psi_0 \rangle - \langle D_P |H|D_P\rangle}
3) Keep the most important :term:`perturbers` :math:`|D_P \rangle`
:math:`\Rightarrow` they enter in the :term:`intern space`
4) Rediagonalize H within this new subset of determinants
:math:`\Rightarrow` better :term:`selected wave function`
5) Iterate
An important point here is that at a given iteration, the estimation of the perturbative coefficients of the :term:`perturbers`
depends on the quality of the :term:`selected wave function` .
As the iterations go on, the :term:`selected wave function` becomes closer
and closer to the :term:`target wave function`, and so the perturbative estimation of the :term:`perturbers` coefficients or energetic contribution becomes more and more precise.
CISD : At the first iteration, starting from the HF determinant :
1) By applying H on the :term:`generators` (HF) one generates all singles and doubles
2) For each :term:`perturbers` you estimate by perturbation its coefficient of energetic contribution.
i) Here the :term:`selectors` is only the HF determinant.
ii) If the :term:`Brillouin theorem` is respected, all the singles have zero coefficients since the :term:`selectors` here is only the HF determinant.
iii) The most important double excitations entered
iv) The :term:`energetic perturbative correction` is calculated
v) The :term:`estimated target energy` is just the sum of the HF energy and the :term:`energetic perturbative correction`
3) H is rediagonlaized in the new set of determinants : HF + the selected doubles
:math:`\Rightarrow` better :term:`variational energy` and :term:`selected wave function`
4) The :term:`generators` subset does not change.
At the second iteration :
1) By applying H on the :term:`generators` (still HF) one generates all singles and doubles
2) For each :term:`perturbers` you estimate by perturbation its coefficient of energetic contribution.
i) Here the :term:`selectors` is now HF + the previously selected doubles
:math:`\Rightarrow` the :term:`perturbers` now interact with all the previously selected doubles
:math:`\Rightarrow` better estimation of the coefficients of the :term:`perturbers`
:math:`\Rightarrow` the singles have non zero coefficients
ii) The most important :term:`perturbers` enter in the :term:`intern space`
iv) The :term:`energetic perturbative correction` is re estimated
v) The :term:`estimated target energy` is now the sum of the variational energy of the :term:`selected wave function` and the :term:`energetic perturbative correction`
:math:`\Rightarrow` better estimation of the :term:`target energy`
Iterate untill you reached the desired :term:`stopping criterion`

View File

@ -1,228 +0,0 @@
=============================
The Documentation of the code
=============================
The heart of the problem : how do we compute the perturbation ?
===============================================================
In this section we will present the basic ideas of how do we compute any kind of perturbative quantity.
The main problem
^^^^^^^^^^^^^^^^
Consider a simple problem of perturbation theory in which you have a *general* multireference wave function :math:`| \psi \rangle`
(no trivial way to know the kind of relations between those determinants) :
.. math::
| \psi \rangle = \sum_{I=1,N_{det}} c_I | D_I \rangle
and you would like to compute its second order :term:`perturbative energetic correction`, which we can write like this for the sake of simplicity:
.. math::
E_{PT2} = \sum_{P \, \rm{that} \, \rm{are} \, \rm{not} \, \rm{in} \, | \psi \rangle } \frac{\langle \psi | H | D_P \rangle^2}{\Delta E_P}
and the :math:`\Delta E_P` will determine what kind of PT you use. Note that you must not double count a determinant :math:`| D_P \rangle` and that you must not count those which are in :math:`| \psi \rangle`.
What you have to do is to apply the :math:`H` operator on this :math:`| \psi \rangle` that would generate a lot of determinants :math:`|D \rangle`,
and you must find a way to see if :
#) the determinant :math:`|D \rangle` is in :math:`| \psi \rangle`
#) the determinant :math:`|D \rangle` have already been counted
How do we do in practice ? We apply :math:`H` succesively on each determinant of :math:`| \psi \rangle` and each :math:`H` application generates a lot of determinant :math:`|D \rangle`. For each determinants :math:`|D \rangle` we check with a very optimized subroutine if
#) :math:`|D\rangle` was a single or a double excitation respect to all the determinant on which we previously applyed :math:`H`
:math:`\Rightarrow` if it is the case then it have already been computed in the past and so we don't double count it.
#) :math:`|D\rangle` is already in the rest of the :math:`| \psi \rangle`
:math:`\Rightarrow` if it is the case you must not count it.
This subroutine (:samp:`connected_to_ref` ) is called a **HUGE** number of times and so it have been optimized in a proper way.
Its basis is the :samp:`popcnt` hardware instruction that figures in the :samp:`SSE4.2` releases of processors.
It allows to know how many bites are set to one in an integer within a few cycles of CPU.
By manipulation of bits masks you can easily extract the excitation degree between two determinants.
One interesting feature of this approach is that it is easily and efficiently parallelizable (which of cours have been done),
and you can easily reach an parallel efficiency of about :math:`95\%`.
The link between the perturbation and the selection
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
In the selected CI algorithm you have general :math:`| \psi \rangle` multi determinantal wave function and you want to make it better
by proposing some new candidates to enter in this wave function.
Those candidates must of course not be already in :math:`| \psi \rangle` and since their are selected thanks to their perturbative properties (on the energy or on the coefficient), their are generated through some application of the :math:`H` operator. So we see that we have exactly the same kind of feature than in the perturbation.
How do we select the determinant in practice ? Exactly like we do the perturbation !
do G = 1, :term:`N_{Generators}`
#) We apply :math:`H` on one :term:`generators`
:math:`\Rightarrow` :math:`H|D_G \rangle = \sum_D \langle D | H |D_G \rangle |D \rangle`
#) For each determinant :math:`|D \rangle` we check if it could have been generated from previous :term:`generators` :math:`| D_{G'} \rangle`
:math:`\Rightarrow` If it is not the case we check if it belongs to :math:`| \psi \rangle`
#) We compute its perturbative property
#) If it is important we put it in a buffer of the potential candidates to the new set of :term:`internal determinants`
#) go to 1
enddo
So once you have applyed :math:`H` on all the :term:`generators`, you sort all the buffer of the candidates by their importance,
and after you pick up the most important ones, which will enter in the wave function and be diagonalized.
Just to be more precise, what we drescribe here is the standard CIPSI algorithm (which :term:`target space` is always the FCI). In practice, if you replace the :math:`H` operator by the :term:`restricted H operator` defined by the :term:`target` space you have exactly what is emplemented.
The typical feature of an iteration
===================================
An iteration of the selected CI program is always built in the same way. This can be resumed in the following simple tasks.
Iteration :
#) :term:`restricted H operator` applyed on the :term:`generators`
:math:`\Rightarrow` :term:`perturbativ action` (*e.g* Selection of some :term:`perturbers`, calculation of the :math:`E_{PT2}^m`, etc ...)
#) Some update induced by the :term:`perturbative action` (*e.g* diagonalization of the new :math:`H` matrix, etc ...)
#) Check the :term:`stopping criterion`
#) Update the :term:`generators` subset
#) Save restart data if needed
#) Iterate
To go into details we list the various available options for each task.
The :samp:`restricted_H_apply` like subroutines
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Here we enter into details on the part of the subroutines that is responsible for the :term:`restricted H operator` part of the tasks.
The general ideas
^^^^^^^^^^^^^^^^^
This subroutine takes in input a determinant (in term of an integer key) and some bits masks
that are used to restrict the excitations (see the :term:`excitations bits masks` and :term:`excitations restrictions`).
It generates the singles and doubles excitations from the input determinant and these :term:`excitations bits masks`.
This subroutine will be applyed on the :term:`generators` determinants to generate the :term:`perturbers`.
This subroutine in itself does not exist, it is just a skeleton that generates all possible singles and doubles.
As seen in the previsous section, once you apply :math:`H` on a given determinant, you will use the generated determinants
to do a certain number of things that deal with in general a perturbative quantity, this is the :term:`perturbative action`.
A way to resume what is done in the subroutine and to make a mental representation can be explained like this :
.. code-block:: fortran
subroutine restricted_H_apply(key_in)
do i = 1, available_holes(1)
do j = 1, available_holes(2)
do k = 1, available_particles(1)
do l = 1, available_particles(2)
! you generate some excitations on key_in that will generate some key_out
call excitation(i,j,k,l,key_in,key_out)
! you exploit key_out to do some perturbative work
call perturbative_action(key_out)
enddo
enddo
enddo
enddo
end
So we see that here once we have made an excitation on :samp:`key_in` that generates :samp:`key_out`,
we can do some work related to the :term:`perturbative action` on this :samp:`key_out`.
In this simple representation of the subroutine, there are some :samp:`available_holes` and :samp:`available_particle`.
This is due to the :term:`excitation restrictions` that are implicitly defined by the :term:`target space`,
and to the :term:`restricted orbitals` that are defined by the user.
In practice those :term:`excitation restrictions` are just the excitations that are going to be allowed to a given :term:`generator determinant`.
We do this by using some :term:`excitations bits masks`.
The :term:`excitation restrictions` and the :term:`restricted orbitals` are built thanks to the use of :term:`excitations bits masks`.
Available :term:`excitation restrictions`
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The :term:`excitation restrictions` prohibits some kind of excitations because it is in the definition
of the :term:`target space` to avoid a certain class of excitation.
For instance, in the :term:`CAS+DDCI` method, you will apply all the single and double excitations on the top of the :term:`CAS wave function`.
After those :term:`excitation restrictions` defined by the :term:`target space`, there can be some kind of excitations that the user wishes to avoid.
For instance, within a :term:`CISD` or a :term:`CAS+DDCI` you can wish that all the excitations of the core electrons can be neglected,
or that there are some virtuals that are not relevant for a certain kind of correlation effects.
This restrictions are done in the program by defining some classes of orbitals that depend both on the method you would like to use,
and by the specific restrictions you would like to do on the top of that. So we see that there are classes of orbitals that depend on the method,
and other classes that can be defined for any class of method.
This classes are the the :term:`frozen occupied orbitals` and the :term:`deleted virtual orbitals` .
Available :term:`perturbative action`
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
From what we saw previously, when an excitation is performed on a given :term:`generator`,
depending on the method defined by the user, different actions can be performed at that point of the calculation.
Nevertheless, all this actions here deal with the perturbation, that is why we called this step the :term:`perturbative action`.
The :term:`perturbative action` is very flexible. It consists in doing (or not) a certain kind of things.
When a given determinant :samp:`key_out` is generated, you can :
#) check if this determinants have to be taken into account (see :samp:`connected_to_ref` and :samp:`is_in_ref`)
#) compute its :term:`perturbative energetic contribution` and its :term:`perturbative coefficient` (see :term:`perturbation theory`)
#) use those perturbative quantities to do something that deals with it (see :term:`perturbative possibility` )
In principle, for each of those actions one would put a :samp:`if` statement and decline all the possible actions to do.
However, because there can exist a *lot* of possible action and because this loop is really intern, putting a lot of :samp:`if` statement
is not a good idea and will slow the code.
To avoid that we generate with a python script all possible subroutines corresponding to some actions, and the program will use the one
that will be defined by the method desired by the user. In this way there is no unnecessary tests in the intern loop, it done in the input.
The :term:`perturbative possibility`
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Once you have compute the :term:`perturbative energetic contribution` and the :term:`perturbative coefficient` of a given :term:`perturber`,
you must use those quantities. Here is listed what is available :
#) accumulate it :term:`perturbative energetic contribution` to compute the :term:`Energetic perturbative correction`
#) accumulate it :term:`perturbative coefficient` to compute the :term:`first order perturbative norm`
#) put or not the :samp:`key_out` determinant in a buffer to select some new :term:`intenal determinants` see :term:`selection`
#) update the arrays of the :term:`correlation energy by holes and particles` (see :term:`CISD+SC2`)
#) dress all the diagonal matrix elements of the :term:`internal determiants` (see :term:`Dressed MRCI`)
Connected to ref / is in ref
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
This subroutine takes in input a determinant (in term of an integer key), an array of determinants :samp:`keys` (containing :samp:`N_det` determinants)
and an integer :samp:`i_past` which is smaller or equal to :samp:`N_det`.
It checks if the input determinant is connected by the :math:`H` matrix to all the determinants in :samp:`keys` that are before :samp:`i_past`.
It also check if the input determinant is in the whole list of determinants :samp:`keys`.
In output you have an integer :samp:`c_ref` that have the following values :
#) 0 : the input determinant is not in :samp:`keys` and is not connected to any determinant
in :samp:`keys` that is before :samp:`i_past`.
#) +m : the input determinant is connected by the :math:`H` matrix to the *m* th determinant :samp:`keys`.
#) -m : the input determinant is already in :samp:`keys` and it is the *m* th determinant in :samp:`keys`

View File

@ -1,285 +0,0 @@
# -*- coding: utf-8 -*-
#
# Selected CI documentation build configuration file, created by
# sphinx-quickstart on Mon Feb 10 15:53:11 2014.
#
# This file is execfile()d with the current directory set to its containing dir.
#
# Note that not all possible configuration values are present in this
# autogenerated file.
#
# All configuration values have a default; values that are commented out
# serve to show the default.
import sys, os
# If extensions (or modules to document with autodoc) are in another directory,
# add these directories to sys.path here. If the directory is relative to the
# documentation root, use os.path.abspath to make it absolute, like shown here.
#sys.path.insert(0, os.path.abspath('.'))
# -- General configuration -----------------------------------------------------
# If your documentation needs a minimal Sphinx version, state it here.
#needs_sphinx = '1.0'
# Add any Sphinx extension module names here, as strings. They can be extensions
# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
extensions = ['sphinx.ext.autodoc', 'sphinx.ext.doctest', 'sphinx.ext.todo', 'sphinx.ext.mathjax', 'sphinx.ext.viewcode']
# Add any paths that contain templates here, relative to this directory.
templates_path = ['_templates']
# The suffix of source filenames.
source_suffix = '.rst'
# The encoding of source files.
#source_encoding = 'utf-8-sig'
# The master toctree document.
master_doc = 'index'
# General information about the project.
project = u'Selected CI'
copyright = u'2014, Giner Emmanuel , Scemama Anthony'
# The version info for the project you're documenting, acts as replacement for
# |version| and |release|, also used in various other places throughout the
# built documents.
#
# The short X.Y version.
version = '1.0'
# The full version, including alpha/beta/rc tags.
release = version+'.1'
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.
#language = None
# There are two options for replacing |today|: either, you set today to some
# non-false value, then it is used:
#today = ''
# Else, today_fmt is used as the format for a strftime call.
#today_fmt = '%B %d, %Y'
# List of patterns, relative to source directory, that match files and
# directories to ignore when looking for source files.
exclude_patterns = []
# The reST default role (used for this markup: `text`) to use for all documents.
#default_role = None
# If true, '()' will be appended to :func: etc. cross-reference text.
#add_function_parentheses = True
# If true, the current module name will be prepended to all description
# unit titles (such as .. function::).
#add_module_names = True
# If true, sectionauthor and moduleauthor directives will be shown in the
# output. They are ignored by default.
#show_authors = False
# The name of the Pygments (syntax highlighting) style to use.
pygments_style = 'sphinx'
# A list of ignored prefixes for module index sorting.
#modindex_common_prefix = []
# -- Options for HTML output ---------------------------------------------------
# The theme to use for HTML and HTML Help pages. See the documentation for
# a list of builtin themes.
html_theme = 'default'
# Theme options are theme-specific and customize the look and feel of a theme
# further. For a list of options available for each theme, see the
# documentation.
#html_theme_options = {}
# Add any paths that contain custom themes here, relative to this directory.
#html_theme_path = []
# The name for this set of Sphinx documents. If None, it defaults to
# "<project> v<release> documentation".
#html_title = None
# A shorter title for the navigation bar. Default is the same as html_title.
#html_short_title = None
# The name of an image file (relative to this directory) to place at the top
# of the sidebar.
#html_logo = None
# The name of an image file (within the static path) to use as favicon of the
# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32
# pixels large.
#html_favicon = None
# Add any paths that contain custom static files (such as style sheets) here,
# relative to this directory. They are copied after the builtin static files,
# so a file named "default.css" will overwrite the builtin "default.css".
html_static_path = ['_static']
# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
# using the given strftime format.
#html_last_updated_fmt = '%b %d, %Y'
# If true, SmartyPants will be used to convert quotes and dashes to
# typographically correct entities.
#html_use_smartypants = True
# Custom sidebar templates, maps document names to template names.
#html_sidebars = {}
# Additional templates that should be rendered to pages, maps page names to
# template names.
#html_additional_pages = {}
# If false, no module index is generated.
#html_domain_indices = True
# If false, no index is generated.
#html_use_index = True
# If true, the index is split into individual pages for each letter.
#html_split_index = False
# If true, links to the reST sources are added to the pages.
#html_show_sourcelink = True
# If true, "Created using Sphinx" is shown in the HTML footer. Default is True.
#html_show_sphinx = True
# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True.
#html_show_copyright = True
# If true, an OpenSearch description file will be output, and all pages will
# contain a <link> tag referring to it. The value of this option must be the
# base URL from which the finished HTML is served.
#html_use_opensearch = ''
# This is the file name suffix for HTML files (e.g. ".xhtml").
#html_file_suffix = None
# Output file base name for HTML help builder.
htmlhelp_basename = 'SelectedCIdoc'
# -- Options for LaTeX output --------------------------------------------------
latex_elements = {
# The paper size ('letterpaper' or 'a4paper').
#'papersize': 'letterpaper',
# The font size ('10pt', '11pt' or '12pt').
#'pointsize': '10pt',
# Additional stuff for the LaTeX preamble.
#'preamble': '',
}
# Grouping the document tree into LaTeX files. List of tuples
# (source start file, target name, title, author, documentclass [howto/manual]).
latex_documents = [
('index', 'SelectedCI.tex', u'Selected CI Documentation',
u'Giner Emmanuel ', 'manual'),
]
# The name of an image file (relative to this directory) to place at the top of
# the title page.
#latex_logo = None
# For "manual" documents, if this is true, then toplevel headings are parts,
# not chapters.
#latex_use_parts = False
# If true, show page references after internal links.
#latex_show_pagerefs = False
# If true, show URL addresses after external links.
#latex_show_urls = False
# Documents to append as an appendix to all manuals.
#latex_appendices = []
# If false, no module index is generated.
#latex_domain_indices = True
# -- Options for manual page output --------------------------------------------
# One entry per manual page. List of tuples
# (source start file, name, description, authors, manual section).
man_pages = [
('index', 'selectedci', u'Selected CI Documentation',
[u'Giner Emmanuel '], 1)
]
# If true, show URL addresses after external links.
#man_show_urls = False
# -- Options for Texinfo output ------------------------------------------------
# Grouping the document tree into Texinfo files. List of tuples
# (source start file, target name, title, author,
# dir menu entry, description, category)
texinfo_documents = [
('index', 'SelectedCI', u'Selected CI Documentation',
u'Giner Emmanuel ', 'SelectedCI', 'One line description of project.',
'Miscellaneous'),
]
# Documents to append as an appendix to all manuals.
#texinfo_appendices = []
# If false, no module index is generated.
#texinfo_domain_indices = True
# How to display URL addresses: 'footnote', 'no', or 'inline'.
#texinfo_show_urls = 'footnote'
# -- Options for Epub output ---------------------------------------------------
# Bibliographic Dublin Core info.
epub_title = u'Selected CI'
epub_author = u'Giner Emmanuel '
epub_publisher = u'Giner Emmanuel '
epub_copyright = u'2014, Giner Emmanuel '
# The language of the text. It defaults to the language option
# or en if the language is not set.
#epub_language = ''
# The scheme of the identifier. Typical schemes are ISBN or URL.
#epub_scheme = ''
# The unique identifier of the text. This can be a ISBN number
# or the project homepage.
#epub_identifier = ''
# A unique identification for the text.
#epub_uid = ''
# A tuple containing the cover image and cover page html template filenames.
#epub_cover = ()
# HTML files that should be inserted before the pages created by sphinx.
# The format is a list of tuples containing the path and title.
#epub_pre_files = []
# HTML files shat should be inserted after the pages created by sphinx.
# The format is a list of tuples containing the path and title.
#epub_post_files = []
# A list of files that should not be packed into the epub file.
#epub_exclude_files = []
# The depth of the table of contents in toc.ncx.
#epub_tocdepth = 3
# Allow duplicate toc entries.
#epub_tocdup = True

View File

@ -1,25 +0,0 @@
.. Selected CI documentation master file, created by
sphinx-quickstart on Mon Feb 10 15:53:11 2014.
You can adapt this file completely to your liking, but it should at least
contain the root `toctree` directive.
Welcome to Selected CI's documentation!
=======================================
Contents:
.. toctree::
:maxdepth: 1
install
Intro
code_doc_intro
wavefunction
Indices and tables
==================
* :ref:`genindex`
* :ref:`modindex`
* :ref:`search`

View File

@ -1,40 +0,0 @@
============
Installation
============
Requirements
------------
* `GNU make <http://www.gnu.org/software/make>`_
* `The Intel Fortran Compiler with MKL <http://software.intel.com/en-us/fortran-compilers>`_
* `IRPF90 <http://irpf90.ups-tlse.fr>`_
* `EZFIO <http://ezfio.sourceforge.net>`_
Optional Requirements
---------------------
* `Sphinx <http://sphinx-doc.org/>`_ is used to build the documentation
Setup
-----
#) Run the :file:`setup_environment.sh` script. This will create the :file:`sci.rc` file
that contains all the environment variables ::
$ ./setup_environment.sh
#) Source this file into your shell ::
$ source sci.rc
#) Go into the :file:`src` directory and create the :file:`Makefile.config` file using the
:file:`Makefile.config.example` file as a template
#) Build the program ::
$ make
#) Build the documentation ::
$ make doc

View File

@ -1,169 +0,0 @@
=====================================
Selection, perturbation ... keywords
=====================================
.. |CISD| replace:: :abbr:`CISD (Configuration Interaction with Single and Double excitations)`
.. |HF| replace:: :abbr:`HF (Hartree Fock)`
.. |CAS-CI| replace:: :abbr:`CAS-CI (Complete Active Space Configuration Interaction)`
.. |DDCI| replace:: :abbr:`DDCI (Difference Dedicated Configuration Interaction)`
.. glossary::
:sorted:
Energetic perturbative correction
Corresponds to the correction to the energy at the second order of a given perturbtation theory
to a given state m.
By convention it noted :math:`E_{PT2}^m`
Variational energy
Corresponds to the variational energy of the :term:`selected wave function` for a given state .
By convention it noted :math:`E_{Var}^m` for the mth eigenvector.
.. math::
E_{Var}^m = \langle \psi_m |H|\psi_m \rangle
Estimated target energy
Corresponds to the estimation of the target energy for a given :term:`selected wave function` and a given state.
By convention it noted :math:`E_{Target}^m`.
Its mathematical expression is :
.. math::
E_{Target}^m = E_{Var}^m + E_{PT2}^m
Selected wave function
Corresponds to the wave function that have been previously selected for a given state m at a current iteration.
This wave function is defined by the set of the :term:`internal determinants` and by their coefficients
on the state m.
By convention it is noted :math:`|\psi_m\rangle`
.. math::
| \psi_m \rangle = \sum_{I=1,N_{selected}} c_I^m | D_I \rangle
EN EG
Stands for Eipstein Nesbet with EigenValues zeroth order energy perturbation theory.
It is a state specific 2nd order perturbation theory. Here m is the index of the eigenstate.
The :math:`H_0` of this PT is defined as the diagonal part of the Hamiltonian such as
the :math:`E_m` is equal to the average value of the Hamiltonian on the :term:`selected wave function`
and the :math:`E_P` is equal to the average value of the Hamiltonian on the :term:`perturbers`
This perturbation have bad formal properties but some nice numerical features of convergence.
From the definition, one get the first order coefficient and its related second order energetic contribution of a a perturber :
.. math::
c_{D_P}^m= \sum_{S=1,N_{\rm selectors}} \frac{c_S^m \langle D_S|H|D_P\rangle}{ \langle \psi_m |H|\psi_m \rangle - \langle D_P|H| D_P \rangle } \\
e_{D_P}^m= \frac{(\sum_{S=1,N_{\rm selectors}} c_S^m \langle D_S|H|D_P\rangle)^2}{\langle \psi_m |H|\psi_m \rangle - \langle D_P|H| D_P \rangle }
Stopping criterion
Condition decided by the user to stop the calculation.
This criterion might be on the :term:`Energetic perturbative correction`, on the number of :term:`internal determinants` N_selected_max
or on the stability of the :term:`estimated target energy`
The user can also send a Ctrl+C to stop the calculation, and it will kill itself properly, saving the datas that need to be saved.
Target wave function
Wave function of the :term:`target space`
Target space
Target of the CI calculation. Defining a method (CISD, CAS-CI and so on) is equivalent to define the :term:`target space`.
The target space defines the rules to define the :term:`Generators` ,
the rules of the :term:`excitation restrictions`,
and the perturbation theory to be used.
There are two type of methods/:term:`target space` proposed in the code :
#) the CAS-CI type methods where you do not restrict any kind of excitation degree within a given list of orbitals.
#) the singles and doubles excitations on the top of a given reference wave function (:term:`CISD`, :term:`CISD+SC2`, :term:`CAS+SD`, :term:`CAS+DDCI`, :term:`CAS+MRPT2`)
Their is a great difference between those two types of method in the way it is implemented.
In the CAS-CI method, when you have chosen an :term:`active space` (so a list of orbitals and electrons to make a FCI within this active space),
all the :term:`Internal determinants` that have been selected and that form the :term:`selected wave function`
can potentially be part of the :term:`generators`, by mean that the :term:`restricted H operator`
could be potentially applyed on all the :term:`internal determinants` to generate some other :term:`perturbers`.
In the singles and doubles excitation on the top of a given reference wave function, the subset of :term:`generators`
and so the rules to recognize them, is fixed at the begining of the method. Those :term:`generators` are precisely
all the determinants forming the :term:`reference wave function`.
There are the different :term:`target space` that are available :
#) :term:`CISD`
#) :term:`CISD+SC2`
#) :term:`CASCI`
#) :term:`CASCI+S`
#) :term:`CASCI+SD`
#) :term:`CASCI+DDCI`
#) :term:`CASCI+DDCI+(2h-2p)PT2`
#) :term:`CAS-CI+MRPT2`
Target energy
Energy of the target space.
H operator
Hamiltonian operator defined in terms of creation and anihilation operators in the spin orbital space.
Excitation restrictions
Restriction in the :term:`H operator` that the user imposes to define the target sapce.
For example :
1) If one freeze some core orbitals or delete some virtuals, it is an :term:`excitation restrictions`
2) If one prohibits the pure inactive double excitations in a CAS+SD one get a DDCI
3) any kind of restriction in the full application of the :term:`H operator`
Restricted H operator
:term:`H operator` taking into account the :term:`Excitation restrictions`
CISD+SC2
Method developped by JP. Malrieu that can be seen as a cheap approximation of the CCSD.
It makes a CISD size consistant and separable for closed shell systems.
It is based on a CISD calculation
where the diagonal part of the H matrix is dressed by the repeatable correlation energy previsously obtained.
So it is a CISD dressed by the disconnected triples and quadruples.
Generators
Set of generator determinants.
By convention a generator is written as :math:`|D_G\rangle` .
A generator determinant is a determinant on which
the :term:`restricted H operator` is being applied for the selection and/or the perturbation.
Internal determinants
Selected determinants in terms of integers keys.
By convention an Internal determinant is written as :math:`|D_I\rangle` .
By convention, the :term:`Generators` are at the begining of the array.
Intern space
Set of all the :term:`internal determinants`.
Perturbers
Determinants within the :term:`target space` but taht are not already included in the :term:`intern space`.
They are created from the :term:`Generators` that belongs :term:`Intern space` for a given :term:`selected wave function`.
By convention a perturber is written as :math:`|D_P\rangle`.
Selectors
Determinants that are used to compute the perturbative properties of the :term:`perturbers`.
By convention a selector is written as :math:`|D_S\rangle` .
The selectors are a subset of determinant of the total wave function (that is the :term:`Internal determinants`).
This subset contains at least the :term:`Generators` determinants.
The perturbative properties (energy, coefficient or else) of the :term:`perturbers` are calculated on all the :term:`selectors` :math:`|D_S\rangle`
.. math::
c_{D_S}= \sum_{S=1,N_{\rm selectors}} \frac{c_S\langle D_S|H|D_P\rangle}{\Delta E_{P,S}} \\
e_{D_S}= \frac{(\sum_{S=1,N_{\rm selectors}} c_S \langle D_S|H|D_P\rangle) ^2}{\Delta E_{P,S}}

View File

@ -68,6 +68,9 @@
.. |QMC| replace:: :abbr:`QMC (Quantum Monte Carlo)`
.. |rst| replace:: :abbr:`RST (ReStructured Text)`
.. |SCF| replace:: :abbr:`SCF (Self Consistent Field)`
.. |RSH| replace:: :abbr:`RSH (Range-Separated-Hybrids)`
.. |KS-DFT| replace:: :abbr:`KS-DFT (Kohn-Sham Density Functional Theory)`
.. |sCI| replace:: :abbr:`sCI (Selected-CI)`
.. |CASSCF| replace:: |CAS| - |SCF|
.. |FCIQMC| replace:: |FCI| - |QMC|

View File

@ -12,13 +12,15 @@ What it is
==========
The |qp| is an open-source programming environment for quantum chemistry,
especially for `wave function methods <https://en.wikipedia.org/wiki/Ab_initio_quantum_chemistry_methods>`_.
The main goal is the development of selected configuration interaction (sCI)
methods and multi-reference perturbation theory (MR-PT) in the
determinant-driven paradigm. 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. All
the programs are developed with the `IRPF90`_ code generator, which simplifies
especially for `wave function theory <https://en.wikipedia.org/wiki/Ab_initio_quantum_chemistry_methods>`_ (WFT).
The main goal is the development of selected configuration interaction |sCI|
methods and multi-reference perturbation theory |MRPT| in the
determinant-driven paradigm. It also contains the very basics of Kohn-Sham `density functional theory <https://en.wikipedia.org/wiki/Density_functional_theory>`_ |KS-DFT| and `range-separated hybrids <https://aip.scitation.org/doi/10.1063/1.1383587>`_ |RSH|.
Regarding the 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 basics of RSH together with the WFT framework also allow a simple coupling between DFT and WFT calculations (see the plugins of `<https://gitlab.com/eginer/qp_plugins_eginer>`_)
All the programs are developed with the `IRPF90`_ code generator, which simplifies
the collaborative development, and the development of new features.

View File

@ -896,7 +896,7 @@ Subroutines / functions
File: :file:`spread_dipole_ao.irp.f`
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

View File

@ -139,44 +139,25 @@ Providers
.. code:: text
double precision, allocatable :: final_grid_points (3,n_points_final_grid)
double precision, allocatable :: final_weight_functions_at_final_grid_points (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)
File: :file:`grid_becke_vector.irp.f`
final_grid_points(1:3,j) = (/ x, y, z /) of the jth grid point
final_weight_functions_at_final_grid_points(i) = Total weight function of the ith grid point which contains the Lebedev, Voronoi and radial weights contributions
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
.. c:var:: final_weight_functions_at_final_grid_points
.. c:var:: final_weight_at_r
.. code:: text
double precision, allocatable :: final_grid_points (3,n_points_final_grid)
double precision, allocatable :: final_weight_functions_at_final_grid_points (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)
File: :file:`grid_becke_vector.irp.f`
final_grid_points(1:3,j) = (/ x, y, z /) of the jth grid point
final_weight_functions_at_final_grid_points(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
.. c:var:: final_weight_functions_at_grid_points
.. code:: text
double precision, allocatable :: final_weight_functions_at_grid_points (n_points_integration_angular,n_points_radial_grid,nucl_num)
double precision, allocatable :: final_weight_at_r (n_points_integration_angular,n_points_radial_grid,nucl_num)
File: :file:`grid_becke.irp.f`
@ -185,6 +166,25 @@ Providers
.. c:var:: final_weight_at_r_vector
.. code:: text
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)
File: :file:`grid_becke_vector.irp.f`
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
.. c:var:: grid_points_per_atom
.. code:: text
@ -217,14 +217,14 @@ Providers
.. code:: text
double precision, allocatable :: final_grid_points (3,n_points_final_grid)
double precision, allocatable :: final_weight_functions_at_final_grid_points (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)
File: :file:`grid_becke_vector.irp.f`
final_grid_points(1:3,j) = (/ x, y, z /) of the jth grid point
final_weight_functions_at_final_grid_points(i) = Total weight function of the ith grid point which contains the Lebedev, Voronoi and radial weights contributions
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
@ -236,14 +236,14 @@ Providers
.. code:: text
double precision, allocatable :: final_grid_points (3,n_points_final_grid)
double precision, allocatable :: final_weight_functions_at_final_grid_points (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)
File: :file:`grid_becke_vector.irp.f`
final_grid_points(1:3,j) = (/ x, y, z /) of the jth grid point
final_weight_functions_at_final_grid_points(i) = Total weight function of the ith grid point which contains the Lebedev, Voronoi and radial weights contributions
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
@ -289,11 +289,11 @@ Providers
.. c:var:: weight_functions_at_grid_points
.. c:var:: weight_at_r
.. code:: text
double precision, allocatable :: weight_functions_at_grid_points (n_points_integration_angular,n_points_radial_grid,nucl_num)
double precision, allocatable :: weight_at_r (n_points_integration_angular,n_points_radial_grid,nucl_num)
File: :file:`grid_becke.irp.f`

View File

@ -189,7 +189,7 @@ Providers
File: :file:`u0_h_u0.irp.f`
Energy of the current wave function
Electronic energy of the current wave function

View File

@ -3149,6 +3149,20 @@ Subroutines / functions
.. c:function:: pouet
.. code:: text
subroutine pouet
File: :file:`test.irp.f`
.. c:function:: pull_pt2
.. code:: text

View File

@ -754,6 +754,20 @@ Subroutines / functions
.. c:function:: run
.. code:: text
subroutine run
File: :file:`pt2.irp.f`
.. c:function:: run_pt2_slave
.. code:: text

View File

@ -61,6 +61,77 @@ Providers
---------
.. c:var:: ao_bi_elec_integral_alpha
.. code:: text
double precision, allocatable :: ao_bi_elec_integral_alpha (ao_num,ao_num)
double precision, allocatable :: ao_bi_elec_integral_beta (ao_num,ao_num)
File: :file:`fock_matrix_hf.irp.f`
Alpha Fock matrix in AO basis set
.. c:var:: ao_bi_elec_integral_beta
.. code:: text
double precision, allocatable :: ao_bi_elec_integral_alpha (ao_num,ao_num)
double precision, allocatable :: ao_bi_elec_integral_beta (ao_num,ao_num)
File: :file:`fock_matrix_hf.irp.f`
Alpha Fock matrix in AO basis set
.. c:var:: extra_e_contrib_density
.. code:: text
double precision :: extra_e_contrib_density
File: :file:`hf_energy.irp.f`
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
.. c:var:: fock_matrix_ao_alpha
.. code:: text
double precision, allocatable :: fock_matrix_ao_alpha (ao_num,ao_num)
double precision, allocatable :: fock_matrix_ao_beta (ao_num,ao_num)
File: :file:`fock_matrix_hf.irp.f`
Alpha Fock matrix in AO basis set
.. c:var:: fock_matrix_ao_beta
.. code:: text
double precision, allocatable :: fock_matrix_ao_alpha (ao_num,ao_num)
double precision, allocatable :: fock_matrix_ao_beta (ao_num,ao_num)
File: :file:`fock_matrix_hf.irp.f`
Alpha Fock matrix in AO basis set
.. c:var:: hf_energy
.. code:: text
@ -111,6 +182,20 @@ Subroutines / functions
.. c:function:: create_guess
.. code:: text
subroutine create_guess
File: :file:`scf_old.irp.f`
Create a MO guess if no MOs are present in the EZFIO directory
.. c:function:: scf
.. code:: text

View File

@ -51,176 +51,6 @@ Providers
---------
.. c:var:: ao_bi_elec_integral_alpha
.. code:: text
double precision, allocatable :: ao_bi_elec_integral_alpha (ao_num,ao_num)
double precision, allocatable :: ao_bi_elec_integral_beta (ao_num,ao_num)
File: :file:`fock_matrix_ks.irp.f`
Alpha Fock matrix in ao basis set
.. c:var:: ao_bi_elec_integral_beta
.. code:: text
double precision, allocatable :: ao_bi_elec_integral_alpha (ao_num,ao_num)
double precision, allocatable :: ao_bi_elec_integral_beta (ao_num,ao_num)
File: :file:`fock_matrix_ks.irp.f`
Alpha Fock matrix in ao basis set
.. c:var:: ao_potential_alpha_xc
.. code:: text
double precision, allocatable :: ao_potential_alpha_xc (ao_num,ao_num)
double precision, allocatable :: ao_potential_beta_xc (ao_num,ao_num)
File: :file:`pot_functionals.irp.f`
.. c:var:: ao_potential_beta_xc
.. code:: text
double precision, allocatable :: ao_potential_alpha_xc (ao_num,ao_num)
double precision, allocatable :: ao_potential_beta_xc (ao_num,ao_num)
File: :file:`pot_functionals.irp.f`
.. c:var:: e_correlation_dft
.. code:: text
double precision :: e_correlation_dft
File: :file:`pot_functionals.irp.f`
.. c:var:: e_exchange_dft
.. code:: text
double precision :: e_exchange_dft
File: :file:`pot_functionals.irp.f`
.. c:var:: extra_e_contrib_density
.. code:: text
double precision :: extra_e_contrib_density
File: :file:`ks_enery.irp.f`
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 - 1/2 trace of the V_xc potential
.. c:var:: fock_matrix_alpha_no_xc_ao
.. code:: text
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)
File: :file:`fock_matrix_ks.irp.f`
Mono electronic an Coulomb matrix in ao basis set
.. c:var:: fock_matrix_ao_alpha
.. code:: text
double precision, allocatable :: fock_matrix_ao_alpha (ao_num,ao_num)
double precision, allocatable :: fock_matrix_ao_beta (ao_num,ao_num)
File: :file:`fock_matrix_ks.irp.f`
Alpha Fock matrix in ao basis set
.. c:var:: fock_matrix_ao_beta
.. code:: text
double precision, allocatable :: fock_matrix_ao_alpha (ao_num,ao_num)
double precision, allocatable :: fock_matrix_ao_beta (ao_num,ao_num)
File: :file:`fock_matrix_ks.irp.f`
Alpha Fock matrix in ao basis set
.. c:var:: fock_matrix_beta_no_xc_ao
.. code:: text
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)
File: :file:`fock_matrix_ks.irp.f`
Mono electronic an Coulomb matrix in ao basis set
.. c:var:: fock_matrix_energy
.. code:: text
double precision :: ks_energy
double precision :: two_electron_energy
double precision :: one_electron_energy
double precision :: fock_matrix_energy
double precision :: trace_potential_xc
File: :file:`ks_enery.irp.f`
Kohn-Sham energy containing the nuclear repulsion energy, and the various components of this quantity.
.. c:var:: ks_energy
.. code:: text
@ -236,114 +66,3 @@ Providers
Kohn-Sham energy containing the nuclear repulsion energy, and the various components of this quantity.
.. c:var:: one_electron_energy
.. code:: text
double precision :: ks_energy
double precision :: two_electron_energy
double precision :: one_electron_energy
double precision :: fock_matrix_energy
double precision :: trace_potential_xc
File: :file:`ks_enery.irp.f`
Kohn-Sham energy containing the nuclear repulsion energy, and the various components of this quantity.
.. c:var:: trace_potential_xc
.. code:: text
double precision :: ks_energy
double precision :: two_electron_energy
double precision :: one_electron_energy
double precision :: fock_matrix_energy
double precision :: trace_potential_xc
File: :file:`ks_enery.irp.f`
Kohn-Sham energy containing the nuclear repulsion energy, and the various components of this quantity.
.. c:var:: two_electron_energy
.. code:: text
double precision :: ks_energy
double precision :: two_electron_energy
double precision :: one_electron_energy
double precision :: fock_matrix_energy
double precision :: trace_potential_xc
File: :file:`ks_enery.irp.f`
Kohn-Sham energy containing the nuclear repulsion energy, and the various components of this quantity.
Subroutines / functions
-----------------------
.. c:function:: check_coherence_functional
.. code:: text
subroutine check_coherence_functional
File: :file:`ks_scf.irp.f`
.. c:function:: create_guess
.. code:: text
subroutine create_guess
File: :file:`ks_scf.irp.f`
Create a MO guess if no MOs are present in the EZFIO directory
.. c:function:: run
.. code:: text
subroutine run
File: :file:`ks_scf.irp.f`
Run SCF calculation
.. c:function:: srs_ks_cf
.. code:: text
subroutine srs_ks_cf
File: :file:`ks_scf.irp.f`
Produce `Kohn_Sham` MO orbital output: mo_basis.mo_tot_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

View File

@ -51,6 +51,122 @@ Providers
---------
.. c:var:: ao_potential_alpha_xc
.. code:: text
double precision, allocatable :: ao_potential_alpha_xc (ao_num,ao_num)
double precision, allocatable :: ao_potential_beta_xc (ao_num,ao_num)
File: :file:`pot_functionals.irp.f`
.. c:var:: ao_potential_beta_xc
.. code:: text
double precision, allocatable :: ao_potential_alpha_xc (ao_num,ao_num)
double precision, allocatable :: ao_potential_beta_xc (ao_num,ao_num)
File: :file:`pot_functionals.irp.f`
.. c:var:: e_correlation_dft
.. code:: text
double precision :: e_correlation_dft
File: :file:`pot_functionals.irp.f`
.. c:var:: e_exchange_dft
.. code:: text
double precision :: e_exchange_dft
File: :file:`pot_functionals.irp.f`
.. c:var:: fock_matrix_alpha_no_xc_ao
.. code:: text
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)
File: :file:`fock_matrix_rs_ks.irp.f`
Mono electronic an Coulomb matrix in AO basis set
.. c:var:: fock_matrix_beta_no_xc_ao
.. code:: text
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)
File: :file:`fock_matrix_rs_ks.irp.f`
Mono electronic an Coulomb matrix in AO basis set
.. c:var:: fock_matrix_energy
.. code:: text
double precision :: rs_ks_energy
double precision :: two_electron_energy
double precision :: one_electron_energy
double precision :: fock_matrix_energy
double precision :: trace_potential_xc
File: :file:`rs_ks_energy.irp.f`
Range-separated Kohn-Sham energy containing the nuclear repulsion energy, and the various components of this quantity.
.. c:var:: one_electron_energy
.. code:: text
double precision :: rs_ks_energy
double precision :: two_electron_energy
double precision :: one_electron_energy
double precision :: fock_matrix_energy
double precision :: trace_potential_xc
File: :file:`rs_ks_energy.irp.f`
Range-separated Kohn-Sham energy containing the nuclear repulsion energy, and the various components of this quantity.
.. c:var:: rs_ks_energy
.. code:: text
@ -66,3 +182,69 @@ Providers
Range-separated Kohn-Sham energy containing the nuclear repulsion energy, and the various components of this quantity.
.. c:var:: trace_potential_xc
.. code:: text
double precision :: rs_ks_energy
double precision :: two_electron_energy
double precision :: one_electron_energy
double precision :: fock_matrix_energy
double precision :: trace_potential_xc
File: :file:`rs_ks_energy.irp.f`
Range-separated Kohn-Sham energy containing the nuclear repulsion energy, and the various components of this quantity.
.. c:var:: two_electron_energy
.. code:: text
double precision :: rs_ks_energy
double precision :: two_electron_energy
double precision :: one_electron_energy
double precision :: fock_matrix_energy
double precision :: trace_potential_xc
File: :file:`rs_ks_energy.irp.f`
Range-separated Kohn-Sham energy containing the nuclear repulsion energy, and the various components of this quantity.
Subroutines / functions
-----------------------
.. c:function:: check_coherence_functional
.. code:: text
subroutine check_coherence_functional
File: :file:`rs_ks_scf.irp.f`
.. c:function:: srs_ks_cf
.. code:: text
subroutine srs_ks_cf
File: :file:`rs_ks_scf.irp.f`
Produce `Range_separated_Kohn_Sham` MO orbital output: mo_basis.mo_tot_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

View File

@ -203,21 +203,6 @@ Subroutines / functions
.. c:function:: i_h_psi_pert_new_minilist
.. code:: text
subroutine i_H_psi_pert_new_minilist(key,keys,idx_key,N_minilist,coef,Nint,Ndet,Ndet_max,Nstate,i_H_psi_array,coef_pert)
File: :file:`pt2_new.irp.f`
Computes <i|H|Psi> = \sum_J c_J <i|H|J>.
Uses filter_connected_i_H_psi0 to get all the |J> to which |i> is connected. The |J> are searched in short pre-computed lists.
.. c:function:: perturb_buffer_by_mono_decontracted
.. code:: text

View File

@ -12,166 +12,3 @@ Reference wave function is defined as a |CAS| wave function.
This module is required for |CAS-SD|, |MRPT| or |MRCC|.
Providers
---------
.. c:var:: idx_ref
.. code:: text
integer(bit_kind), allocatable :: psi_ref (N_int,2,psi_det_size)
double precision, allocatable :: psi_ref_coef (psi_det_size,n_states)
integer, allocatable :: idx_ref (psi_det_size)
integer :: n_det_ref
File: :file:`psi_ref.irp.f`
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.
.. c:var:: inv_norm_psi_ref
.. code:: text
double precision, allocatable :: norm_psi_ref (N_states)
double precision, allocatable :: inv_norm_psi_ref (N_states)
File: :file:`psi_ref.irp.f`
.. c:var:: n_det_ref
.. code:: text
integer(bit_kind), allocatable :: psi_ref (N_int,2,psi_det_size)
double precision, allocatable :: psi_ref_coef (psi_det_size,n_states)
integer, allocatable :: idx_ref (psi_det_size)
integer :: n_det_ref
File: :file:`psi_ref.irp.f`
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.
.. c:var:: norm_psi_ref
.. code:: text
double precision, allocatable :: norm_psi_ref (N_states)
double precision, allocatable :: inv_norm_psi_ref (N_states)
File: :file:`psi_ref.irp.f`
.. c:var:: psi_non_ref_coef_interm_norm
.. code:: text
double precision, allocatable :: psi_non_ref_coef_interm_norm (N_det_non_ref,N_states)
File: :file:`psi_ref.irp.f`
.. c:var:: psi_ref
.. code:: text
integer(bit_kind), allocatable :: psi_ref (N_int,2,psi_det_size)
double precision, allocatable :: psi_ref_coef (psi_det_size,n_states)
integer, allocatable :: idx_ref (psi_det_size)
integer :: n_det_ref
File: :file:`psi_ref.irp.f`
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.
.. c:var:: psi_ref_coef
.. code:: text
integer(bit_kind), allocatable :: psi_ref (N_int,2,psi_det_size)
double precision, allocatable :: psi_ref_coef (psi_det_size,n_states)
integer, allocatable :: idx_ref (psi_det_size)
integer :: n_det_ref
File: :file:`psi_ref.irp.f`
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.
.. c:var:: psi_ref_coef_interm_norm
.. code:: text
double precision, allocatable :: psi_ref_coef_interm_norm (N_det_ref,N_states)
File: :file:`psi_ref.irp.f`
.. c:var:: psi_ref_coef_inv
.. code:: text
double precision, allocatable :: psi_ref_coef_inv (psi_det_size,n_states)
File: :file:`psi_ref.irp.f`
1/psi_ref_coef
.. c:var:: psi_ref_coef_restart
.. code:: text
integer(bit_kind), allocatable :: psi_ref_restart (N_int,2,psi_det_size)
double precision, allocatable :: psi_ref_coef_restart (psi_det_size,n_states)
File: :file:`psi_ref.irp.f`
Projection of the CAS wave function on the restart wave function.
.. c:var:: psi_ref_restart
.. code:: text
integer(bit_kind), allocatable :: psi_ref_restart (N_int,2,psi_det_size)
double precision, allocatable :: psi_ref_coef_restart (psi_det_size,n_states)
File: :file:`psi_ref.irp.f`
Projection of the CAS wave function on the restart wave function.

View File

@ -14,369 +14,3 @@ needs to be loaded with any `psi_ref_*` module.
Providers
---------
.. c:var:: h_matrix_ref
.. code:: text
double precision, allocatable :: h_matrix_ref (N_det_ref,N_det_ref)
File: :file:`psi_ref_utils.irp.f`
.. c:var:: holes_operators
.. code:: text
integer(bit_kind), allocatable :: holes_operators (N_int,2)
integer(bit_kind), allocatable :: particles_operators (N_int,2)
File: :file:`psi_ref_excitations_operators.irp.f`
holes_operators represents an array of integers where all the holes have been done going from psi_ref to psi_non_ref particles_operators represents an array of integers where all the particles have been done going from psi_ref to psi_non_ref
.. c:var:: idx_non_ref
.. code:: text
integer(bit_kind), allocatable :: psi_non_ref (N_int,2,psi_det_size)
double precision, allocatable :: psi_non_ref_coef (psi_det_size,n_states)
integer, allocatable :: idx_non_ref (psi_det_size)
integer, allocatable :: idx_non_ref_rev (psi_det_size)
integer :: n_det_non_ref
File: :file:`psi_ref_utils.irp.f`
Set of determinants which are not part of the reference, defined from the application of the reference bitmask on the determinants. idx_non_ref gives the indice of the determinant in psi_det. idx_non_ref_rev gives the reverse.
.. c:var:: idx_non_ref_from_sorted
.. code:: text
integer, allocatable :: idx_non_ref_from_sorted (N_det)
File: :file:`psi_ref_utils.irp.f`
.. c:var:: idx_non_ref_rev
.. code:: text
integer(bit_kind), allocatable :: psi_non_ref (N_int,2,psi_det_size)
double precision, allocatable :: psi_non_ref_coef (psi_det_size,n_states)
integer, allocatable :: idx_non_ref (psi_det_size)
integer, allocatable :: idx_non_ref_rev (psi_det_size)
integer :: n_det_non_ref
File: :file:`psi_ref_utils.irp.f`
Set of determinants which are not part of the reference, defined from the application of the reference bitmask on the determinants. idx_non_ref gives the indice of the determinant in psi_det. idx_non_ref_rev gives the reverse.
.. c:var:: n_det_non_ref
.. code:: text
integer(bit_kind), allocatable :: psi_non_ref (N_int,2,psi_det_size)
double precision, allocatable :: psi_non_ref_coef (psi_det_size,n_states)
integer, allocatable :: idx_non_ref (psi_det_size)
integer, allocatable :: idx_non_ref_rev (psi_det_size)
integer :: n_det_non_ref
File: :file:`psi_ref_utils.irp.f`
Set of determinants which are not part of the reference, defined from the application of the reference bitmask on the determinants. idx_non_ref gives the indice of the determinant in psi_det. idx_non_ref_rev gives the reverse.
.. c:var:: particles_operators
.. code:: text
integer(bit_kind), allocatable :: holes_operators (N_int,2)
integer(bit_kind), allocatable :: particles_operators (N_int,2)
File: :file:`psi_ref_excitations_operators.irp.f`
holes_operators represents an array of integers where all the holes have been done going from psi_ref to psi_non_ref particles_operators represents an array of integers where all the particles have been done going from psi_ref to psi_non_ref
.. c:var:: psi_non_ref
.. code:: text
integer(bit_kind), allocatable :: psi_non_ref (N_int,2,psi_det_size)
double precision, allocatable :: psi_non_ref_coef (psi_det_size,n_states)
integer, allocatable :: idx_non_ref (psi_det_size)
integer, allocatable :: idx_non_ref_rev (psi_det_size)
integer :: n_det_non_ref
File: :file:`psi_ref_utils.irp.f`
Set of determinants which are not part of the reference, defined from the application of the reference bitmask on the determinants. idx_non_ref gives the indice of the determinant in psi_det. idx_non_ref_rev gives the reverse.
.. c:var:: psi_non_ref_coef
.. code:: text
integer(bit_kind), allocatable :: psi_non_ref (N_int,2,psi_det_size)
double precision, allocatable :: psi_non_ref_coef (psi_det_size,n_states)
integer, allocatable :: idx_non_ref (psi_det_size)
integer, allocatable :: idx_non_ref_rev (psi_det_size)
integer :: n_det_non_ref
File: :file:`psi_ref_utils.irp.f`
Set of determinants which are not part of the reference, defined from the application of the reference bitmask on the determinants. idx_non_ref gives the indice of the determinant in psi_det. idx_non_ref_rev gives the reverse.
.. c:var:: psi_non_ref_coef_restart
.. code:: text
integer(bit_kind), allocatable :: psi_non_ref_restart (N_int,2,psi_det_size)
double precision, allocatable :: psi_non_ref_coef_restart (psi_det_size,n_states)
File: :file:`psi_ref_utils.irp.f`
Set of determinants which are not part of the reference, defined from the application of the reference bitmask on the determinants. idx_non_ref gives the indice of the determinant in psi_det. But this is with respect to the restart wave function.
.. c:var:: psi_non_ref_coef_sorted_bit
.. code:: text
integer(bit_kind), allocatable :: psi_non_ref_sorted_bit (N_int,2,psi_det_size)
double precision, allocatable :: psi_non_ref_coef_sorted_bit (psi_det_size,N_states)
File: :file:`psi_ref_utils.irp.f`
Reference determinants sorted to accelerate the search of a random determinant in the wave function.
.. c:var:: psi_non_ref_coef_transp
.. code:: text
double precision, allocatable :: psi_non_ref_coef_transp (n_states,psi_det_size)
File: :file:`psi_ref_utils.irp.f`
Transposed psi_non_ref_coef
.. c:var:: psi_non_ref_restart
.. code:: text
integer(bit_kind), allocatable :: psi_non_ref_restart (N_int,2,psi_det_size)
double precision, allocatable :: psi_non_ref_coef_restart (psi_det_size,n_states)
File: :file:`psi_ref_utils.irp.f`
Set of determinants which are not part of the reference, defined from the application of the reference bitmask on the determinants. idx_non_ref gives the indice of the determinant in psi_det. But this is with respect to the restart wave function.
.. c:var:: psi_non_ref_sorted_bit
.. code:: text
integer(bit_kind), allocatable :: psi_non_ref_sorted_bit (N_int,2,psi_det_size)
double precision, allocatable :: psi_non_ref_coef_sorted_bit (psi_det_size,N_states)
File: :file:`psi_ref_utils.irp.f`
Reference determinants sorted to accelerate the search of a random determinant in the wave function.
.. c:var:: psi_ref_coef_diagonalized
.. code:: text
double precision, allocatable :: psi_ref_coef_diagonalized (N_det_ref,N_states)
double precision, allocatable :: psi_ref_energy_diagonalized (N_states)
File: :file:`psi_ref_utils.irp.f`
.. c:var:: psi_ref_coef_normalized
.. code:: text
double precision, allocatable :: psi_ref_coef_normalized (psi_det_size,n_states)
File: :file:`psi_ref_utils.irp.f`
Normalized coefficients of the reference
.. c:var:: psi_ref_coef_sorted_bit
.. code:: text
integer(bit_kind), allocatable :: psi_ref_sorted_bit (N_int,2,psi_det_size)
double precision, allocatable :: psi_ref_coef_sorted_bit (psi_det_size,N_states)
File: :file:`psi_ref_utils.irp.f`
Reference determinants sorted to accelerate the search of a random determinant in the wave function.
.. c:var:: psi_ref_coef_transp
.. code:: text
double precision, allocatable :: psi_ref_coef_transp (n_states,psi_det_size)
File: :file:`psi_ref_utils.irp.f`
Transposed psi_ref_coef
.. c:var:: psi_ref_energy
.. code:: text
double precision, allocatable :: psi_ref_energy (N_states)
File: :file:`psi_ref_utils.irp.f`
.. c:var:: psi_ref_energy_diagonalized
.. code:: text
double precision, allocatable :: psi_ref_coef_diagonalized (N_det_ref,N_states)
double precision, allocatable :: psi_ref_energy_diagonalized (N_states)
File: :file:`psi_ref_utils.irp.f`
.. c:var:: psi_ref_sorted_bit
.. code:: text
integer(bit_kind), allocatable :: psi_ref_sorted_bit (N_int,2,psi_det_size)
double precision, allocatable :: psi_ref_coef_sorted_bit (psi_det_size,N_states)
File: :file:`psi_ref_utils.irp.f`
Reference determinants sorted to accelerate the search of a random determinant in the wave function.
.. c:var:: ref_hamiltonian_matrix
.. code:: text
double precision, allocatable :: ref_hamiltonian_matrix (n_det_ref,n_det_ref)
File: :file:`psi_ref_utils.irp.f`
H matrix in the Reference space
Subroutines / functions
-----------------------
.. c:function:: extract_ref
.. code:: text
subroutine extract_ref
File: :file:`extract_ref.irp.f`
Replaces the total wave function by the normalized projection on the reference
.. c:function:: get_index_in_psi_ref_sorted_bit
.. code:: text
integer function get_index_in_psi_ref_sorted_bit(key,Nint)
File: :file:`psi_ref_utils.irp.f`
Returns the index of the determinant in the ``psi_ref_sorted_bit`` array
.. c:function:: is_in_psi_ref
.. code:: text
logical function is_in_psi_ref(key,Nint)
File: :file:`psi_ref_utils.irp.f`
True if the determinant ``det`` is in the wave function

View File

@ -32,20 +32,6 @@ Subroutines / functions
.. c:function:: qp_ao_ints
.. code:: text
subroutine qp_ao_ints
File: :file:`slave_eri.irp.f`
Slave for electron repulsion integrals
.. c:function:: run_wf
.. code:: text

View File

@ -8,8 +8,10 @@ Index of Providers
* :c:data:`ao_bi_elec_integral_alpha`
* :c:data:`ao_bi_elec_integral_beta`
* :c:data:`ao_bielec_integral_erf_schwartz`
* :c:data:`ao_bielec_integral_ijkl_r3_schwartz`
* :c:data:`ao_bielec_integral_schwartz`
* :c:data:`ao_bielec_integrals_erf_in_map`
* :c:data:`ao_bielec_integrals_ijkl_r3_in_map`
* :c:data:`ao_bielec_integrals_in_map`
* :c:data:`ao_cart_to_sphe_coef`
* :c:data:`ao_cart_to_sphe_inv`
@ -43,6 +45,10 @@ Index of Providers
* :c:data:`ao_integrals_erf_cache_max`
* :c:data:`ao_integrals_erf_cache_min`
* :c:data:`ao_integrals_erf_map`
* :c:data:`ao_integrals_ijkl_r3_cache`
* :c:data:`ao_integrals_ijkl_r3_cache_max`
* :c:data:`ao_integrals_ijkl_r3_cache_min`
* :c:data:`ao_integrals_ijkl_r3_map`
* :c:data:`ao_integrals_map`
* :c:data:`ao_integrals_threshold`
* :c:data:`ao_kinetic_integral`
@ -112,11 +118,17 @@ Index of Providers
* :c:data:`aos_vx_alpha_pbe_w`
* :c:data:`aos_vx_beta_lda_w`
* :c:data:`aos_vx_beta_pbe_w`
* :c:data:`apply_exc_to_psi`
* :c:data:`approx_svd_two_dm`
* :c:data:`approx_svd_two_dm_correl`
* :c:data:`approx_two_dm_map`
* :c:data:`approx_two_dm_map_rev`
* :c:data:`barycentric_electronic_energy`
* :c:data:`bi_elec_ref_bitmask_energy`
* :c:data:`bi_elec_ref_bitmask_energy_erf`
* :c:data:`big_array_coulomb_integrals`
* :c:data:`big_array_coulomb_integrals_ijkl_r3`
* :c:data:`big_array_exchange_integrals`
* :c:data:`big_array_exchange_integrals_ijkl_r3`
* :c:data:`binom`
* :c:data:`binom_int`
* :c:data:`binom_int_transp`
@ -134,12 +146,8 @@ Index of Providers
* :c:data:`cart_to_sphe_9`
* :c:data:`cas_bitmask`
* :c:data:`center_of_mass`
* :c:data:`ci_dressed_pt2_new_eigenvectors`
* :c:data:`ci_dressed_pt2_new_eigenvectors_s2`
* :c:data:`ci_dressed_pt2_new_energy`
* :c:data:`ci_eigenvectors`
* :c:data:`ci_eigenvectors_s2`
* :c:data:`ci_electronic_dressed_pt2_new_energy`
* :c:data:`ci_electronic_energy`
* :c:data:`ci_energy`
* :c:data:`closed_shell_ref_bitmask`
@ -151,7 +159,6 @@ Index of Providers
* :c:data:`core_fock_operator_erf`
* :c:data:`core_inact_act_bitmask_4`
* :c:data:`core_inact_virt_bitmask`
* :c:data:`corr_e_from_1h1p`
* :c:data:`correlation_energy_ratio_max`
* :c:data:`correlation_functional`
* :c:data:`damping_for_rs_dft`
@ -164,7 +171,6 @@ Index of Providers
* :c:data:`degree_max_generators`
* :c:data:`degree_max_integration_lebedev`
* :c:data:`delta_e_per_selector`
* :c:data:`delta_ij_mrpt`
* :c:data:`density_for_dft`
* :c:data:`det_alpha_norm`
* :c:data:`det_beta_norm`
@ -172,9 +178,11 @@ Index of Providers
* :c:data:`dft_type`
* :c:data:`diag_algorithm`
* :c:data:`diagonal_h_matrix_on_psi_det`
* :c:data:`disk_access_ao_ijkl_r3`
* :c:data:`disk_access_ao_integrals`
* :c:data:`disk_access_ao_integrals_erf`
* :c:data:`disk_access_ao_one_integrals`
* :c:data:`disk_access_mo_ijkl_r3`
* :c:data:`disk_access_mo_integrals`
* :c:data:`disk_access_mo_integrals_erf`
* :c:data:`disk_access_mo_one_integrals`
@ -184,7 +192,6 @@ Index of Providers
* :c:data:`do_direct_integrals`
* :c:data:`do_pseudo`
* :c:data:`do_pt2`
* :c:data:`do_third_order_1h1p`
* :c:data:`double_exc_bitmask`
* :c:data:`double_index_selectors`
* :c:data:`dr_radial_integral`
@ -206,13 +213,16 @@ Index of Providers
* :c:data:`elec_beta_num`
* :c:data:`elec_num`
* :c:data:`elec_num_tab`
* :c:data:`electronic_energy_mr_dft`
* :c:data:`element_mass`
* :c:data:`element_name`
* :c:data:`energy_c`
* :c:data:`energy_c_lda`
* :c:data:`energy_c_md_lda`
* :c:data:`energy_c_md_on_top`
* :c:data:`energy_c_md_on_top_pbe_mu_ueg_vector`
* :c:data:`energy_c_md_on_top_pbe_mu_vector`
* :c:data:`energy_c_pbe`
* :c:data:`energy_cas_dyall`
* :c:data:`energy_cas_dyall_no_exchange`
* :c:data:`energy_iterations`
* :c:data:`energy_sr_c_lda`
* :c:data:`energy_sr_c_pbe`
@ -232,12 +242,8 @@ Index of Providers
* :c:data:`fact_inv`
* :c:data:`fill_h_apply_buffer_selection`
* :c:data:`final_grid_points`
* :c:data:`final_weight_functions_at_final_grid_points`
* :c:data:`final_weight_functions_at_grid_points`
* :c:data:`fock_core_inactive`
* :c:data:`fock_core_inactive_from_act`
* :c:data:`fock_core_inactive_total`
* :c:data:`fock_core_inactive_total_spin_trace`
* :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`
@ -248,12 +254,7 @@ Index of Providers
* :c:data:`fock_matrix_mo`
* :c:data:`fock_matrix_mo_alpha`
* :c:data:`fock_matrix_mo_beta`
* :c:data:`fock_operator_active_from_core_inact`
* :c:data:`fock_operator_closed_shell_ref_bitmask`
* :c:data:`fock_virt_from_act`
* :c:data:`fock_virt_from_core_inact`
* :c:data:`fock_virt_total`
* :c:data:`fock_virt_total_spin_trace`
* :c:data:`fock_wee_closed_shell`
* :c:data:`fps_spf_matrix_ao`
* :c:data:`fps_spf_matrix_mo`
@ -261,17 +262,12 @@ Index of Providers
* :c:data:`full_ijkl_bitmask_4`
* :c:data:`gauleg_t2`
* :c:data:`gauleg_w`
* :c:data:`gen_det_ref_idx`
* :c:data:`gen_det_ref_shortcut`
* :c:data:`gen_det_ref_sorted`
* :c:data:`gen_det_ref_version`
* :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_holes_and_particles_in_active_space`
* :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`
@ -287,15 +283,11 @@ Index of Providers
* :c:data:`h_apply_buffer_lock`
* :c:data:`h_matrix_all_dets`
* :c:data:`h_matrix_cas`
* :c:data:`h_matrix_ref`
* :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:`hmatrix_dressed_pt2_new`
* :c:data:`hmatrix_dressed_pt2_new_symmetrized`
* :c:data:`holes_operators`
* :c:data:`i2radix_sort`
* :c:data:`i8radix_sort`
* :c:data:`i8radix_sort_big`
@ -311,10 +303,6 @@ Index of Providers
* :c:data:`i_x2_pol_mult_mono_elec`
* :c:data:`idx_cas`
* :c:data:`idx_non_cas`
* :c:data:`idx_non_ref`
* :c:data:`idx_non_ref_from_sorted`
* :c:data:`idx_non_ref_rev`
* :c:data:`idx_ref`
* :c:data:`inact_bitmask`
* :c:data:`inact_virt_bitmask`
* :c:data:`index_final_points`
@ -326,13 +314,14 @@ Index of Providers
* :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_ijkl_r3_map`
* :c:data:`insert_into_mo_integrals_map`
* :c:data:`int_erf_3_index`
* :c:data:`int_erf_3_index_exc`
* :c:data:`integral_density_alpha_knowles_becke_per_atom`
* :c:data:`integral_density_beta_knowles_becke_per_atom`
* :c:data:`int_on_top_of_r_approx_svd`
* :c:data:`int_on_top_of_r_approx_svd_correl`
* :c:data:`integral_on_top`
* :c:data:`inv_int`
* :c:data:`inv_norm_psi_ref`
* :c:data:`inv_selectors_coef_hf`
* :c:data:`inv_selectors_coef_hf_squared`
* :c:data:`iradix_sort`
@ -341,6 +330,10 @@ Index of Providers
* :c:data:`ks_energy`
* :c:data:`l3_weight`
* :c:data:`l_to_charater`
* :c:data:`l_vec_approx_svd_two_dm`
* :c:data:`l_vec_approx_svd_two_dm_at_r`
* :c:data:`l_vec_approx_svd_two_dm_at_r_correl`
* :c:data:`l_vec_approx_svd_two_dm_correl`
* :c:data:`level_shift`
* :c:data:`list_act`
* :c:data:`list_act_reverse`
@ -358,6 +351,12 @@ Index of Providers
* :c:data:`max_degree_exc`
* :c:data:`max_dim_diis`
* :c:data:`max_exc_pert`
* :c:data:`mo_bielec_integral_ijkl_r3_jj`
* :c:data:`mo_bielec_integral_ijkl_r3_jj_anti`
* :c:data:`mo_bielec_integral_ijkl_r3_jj_anti_from_ao`
* :c:data:`mo_bielec_integral_ijkl_r3_jj_exchange`
* :c:data:`mo_bielec_integral_ijkl_r3_jj_exchange_from_ao`
* :c:data:`mo_bielec_integral_ijkl_r3_jj_from_ao`
* :c:data:`mo_bielec_integral_jj`
* :c:data:`mo_bielec_integral_jj_anti`
* :c:data:`mo_bielec_integral_jj_anti_from_ao`
@ -368,6 +367,7 @@ Index of Providers
* :c:data:`mo_bielec_integral_vv_exchange_from_ao`
* :c:data:`mo_bielec_integral_vv_from_ao`
* :c:data:`mo_bielec_integrals_erf_in_map`
* :c:data:`mo_bielec_integrals_ijkl_r3_in_map`
* :c:data:`mo_bielec_integrals_in_map`
* :c:data:`mo_class`
* :c:data:`mo_coef`
@ -388,6 +388,10 @@ Index of Providers
* :c:data:`mo_integrals_erf_cache_max`
* :c:data:`mo_integrals_erf_cache_min`
* :c:data:`mo_integrals_erf_map`
* :c:data:`mo_integrals_ijkl_r3_cache`
* :c:data:`mo_integrals_ijkl_r3_cache_max`
* :c:data:`mo_integrals_ijkl_r3_cache_min`
* :c:data:`mo_integrals_ijkl_r3_map`
* :c:data:`mo_integrals_map`
* :c:data:`mo_integrals_threshold`
* :c:data:`mo_kinetic_integral`
@ -423,6 +427,8 @@ Index of Providers
* :c:data:`mu_erf_dft`
* :c:data:`n_act_orb`
* :c:data:`n_aos_max`
* :c:data:`n_approx_svd_two_dm`
* :c:data:`n_approx_svd_two_dm_correl`
* :c:data:`n_cas_bitmask`
* :c:data:`n_core_inact_act_orb`
* :c:data:`n_core_inact_orb`
@ -437,8 +443,6 @@ Index of Providers
* :c:data:`n_det_max`
* :c:data:`n_det_max_full`
* :c:data:`n_det_non_cas`
* :c:data:`n_det_non_ref`
* :c:data:`n_det_ref`
* :c:data:`n_det_selectors`
* :c:data:`n_double_exc_bitmasks`
* :c:data:`n_double_selectors`
@ -449,6 +453,8 @@ Index of Providers
* :c:data:`n_int`
* :c:data:`n_it_scf_max`
* :c:data:`n_iter`
* :c:data:`n_max_approx_svd_two_dm`
* :c:data:`n_max_approx_svd_two_dm_correl`
* :c:data:`n_occ_pattern`
* :c:data:`n_points_final_grid`
* :c:data:`n_points_grid_per_atom`
@ -466,7 +472,6 @@ Index of Providers
* :c:data:`no_oa_or_av_opt`
* :c:data:`no_vvv_integrals`
* :c:data:`no_vvvv_integrals`
* :c:data:`norm_psi_ref`
* :c:data:`nproc`
* :c:data:`nthreads_davidson`
* :c:data:`nucl_aos`
@ -488,31 +493,24 @@ Index of Providers
* :c:data:`nucl_num`
* :c:data:`nucl_num_shell_aos`
* :c:data:`nuclear_repulsion`
* :c:data:`one_anhil`
* :c:data:`one_anhil_inact`
* :c:data:`one_anhil_one_creat`
* :c:data:`one_anhil_one_creat_inact_virt`
* :c:data:`one_anhil_one_creat_inact_virt_bis`
* :c:data:`one_anhil_one_creat_inact_virt_norm`
* :c:data:`one_body_dm_alpha_and_grad_at_r`
* :c:data:`on_top_of_r`
* :c:data:`on_top_of_r_approx_svd`
* :c:data:`on_top_of_r_approx_svd_correl`
* :c:data:`on_top_of_r_exact`
* :c:data:`on_top_of_r_vector`
* :c:data:`one_body_dm_alpha_ao_for_dft`
* :c:data:`one_body_dm_alpha_at_r`
* :c:data:`one_body_dm_ao_alpha`
* :c:data:`one_body_dm_ao_beta`
* :c:data:`one_body_dm_average_mo_for_dft`
* :c:data:`one_body_dm_beta_and_grad_at_r`
* :c:data:`one_body_dm_beta_ao_for_dft`
* :c:data:`one_body_dm_beta_at_r`
* :c:data:`one_body_dm_dagger_mo_spin_index`
* :c:data:`one_body_dm_mo`
* :c:data:`one_body_dm_mo_alpha`
* :c:data:`one_body_dm_mo_alpha_and_grad_at_grid_points`
* :c:data:`one_body_dm_mo_alpha_at_grid_points`
* :c:data:`one_body_dm_mo_alpha_average`
* :c:data:`one_body_dm_mo_alpha_for_dft`
* :c:data:`one_body_dm_mo_beta`
* :c:data:`one_body_dm_mo_beta_and_grad_at_grid_points`
* :c:data:`one_body_dm_mo_beta_at_grid_points`
* :c:data:`one_body_dm_mo_beta_average`
* :c:data:`one_body_dm_mo_beta_for_dft`
* :c:data:`one_body_dm_mo_diff`
@ -524,14 +522,16 @@ Index of Providers
* :c:data:`one_body_single_double_dm_mo_beta`
* :c:data:`one_body_spin_density_ao`
* :c:data:`one_body_spin_density_mo`
* :c:data:`one_creat`
* :c:data:`one_creat_virt`
* :c:data:`one_dm_alpha_in_r`
* :c:data:`one_dm_and_grad_alpha_in_r`
* :c:data:`one_dm_and_grad_beta_in_r`
* :c:data:`one_dm_beta_in_r`
* :c:data:`one_electron_energy`
* :c:data:`only_expected_s2`
* :c:data:`ontop_approx`
* :c:data:`output_cpu_time_0`
* :c:data:`output_wall_time_0`
* :c:data:`overlap_gaussian_xyz`
* :c:data:`particles_operators`
* :c:data:`phi_angular_integration_lebedev`
* :c:data:`potential_c_alpha_ao`
* :c:data:`potential_c_alpha_ao_lda`
@ -574,7 +574,6 @@ Index of Providers
* :c:data:`pseudo_v_k_transp`
* :c:data:`pseudo_v_kl`
* :c:data:`pseudo_v_kl_transp`
* :c:data:`psi_active`
* :c:data:`psi_average_norm_contrib`
* :c:data:`psi_average_norm_contrib_sorted`
* :c:data:`psi_bilinear_matrix`
@ -622,36 +621,16 @@ Index of Providers
* :c:data:`psi_dft_energy_nuclear_elec`
* :c:data:`psi_energy`
* :c:data:`psi_energy_bielec`
* :c:data:`psi_energy_erf`
* :c:data:`psi_energy_h_core`
* :c:data:`psi_energy_h_core_and_sr_hartree`
* :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_non_ref`
* :c:data:`psi_non_ref_coef`
* :c:data:`psi_non_ref_coef_interm_norm`
* :c:data:`psi_non_ref_coef_restart`
* :c:data:`psi_non_ref_coef_sorted_bit`
* :c:data:`psi_non_ref_coef_transp`
* :c:data:`psi_non_ref_restart`
* :c:data:`psi_non_ref_sorted_bit`
* :c:data:`psi_occ_pattern`
* :c:data:`psi_occ_pattern_hii`
* :c:data:`psi_ref`
* :c:data:`psi_ref_bis_lock`
* :c:data:`psi_ref_coef`
* :c:data:`psi_ref_coef_diagonalized`
* :c:data:`psi_ref_coef_interm_norm`
* :c:data:`psi_ref_coef_inv`
* :c:data:`psi_ref_coef_normalized`
* :c:data:`psi_ref_coef_restart`
* :c:data:`psi_ref_coef_sorted_bit`
* :c:data:`psi_ref_coef_transp`
* :c:data:`psi_ref_energy`
* :c:data:`psi_ref_energy_diagonalized`
* :c:data:`psi_ref_restart`
* :c:data:`psi_ref_sorted_bit`
* :c:data:`psi_selectors`
* :c:data:`psi_selectors_coef`
* :c:data:`psi_selectors_coef_transp`
@ -677,11 +656,17 @@ Index of Providers
* :c:data:`pt2_w_t`
* :c:data:`qp_max_mem`
* :c:data:`qp_run_address`
* :c:data:`r_vec_approx_svd_two_dm`
* :c:data:`r_vec_approx_svd_two_dm_at_r`
* :c:data:`r_vec_approx_svd_two_dm_at_r_correl`
* :c:data:`r_vec_approx_svd_two_dm_correl`
* :c:data:`read_ao_integrals`
* :c:data:`read_ao_integrals_erf`
* :c:data:`read_ao_integrals_ijkl_r3`
* :c:data:`read_ao_one_integrals`
* :c:data:`read_mo_integrals`
* :c:data:`read_mo_integrals_erf`
* :c:data:`read_mo_integrals_ijkl_r3`
* :c:data:`read_mo_one_integrals`
* :c:data:`read_wf`
* :c:data:`rec__quicksort`
@ -691,8 +676,8 @@ Index of Providers
* :c:data:`rec_i_quicksort`
* :c:data:`ref_bitmask`
* :c:data:`ref_bitmask_energy`
* :c:data:`ref_bitmask_energy_erf`
* :c:data:`ref_closed_shell_bitmask`
* :c:data:`ref_hamiltonian_matrix`
* :c:data:`reunion_of_bitmask`
* :c:data:`reunion_of_cas_inact_bitmask`
* :c:data:`reunion_of_core_inact_act_bitmask`
@ -711,15 +696,6 @@ Index of Providers
* :c:data:`scf_density_matrix_ao_alpha`
* :c:data:`scf_density_matrix_ao_beta`
* :c:data:`scf_energy`
* :c:data:`second_order_pt_new`
* :c:data:`second_order_pt_new_1h`
* :c:data:`second_order_pt_new_1h1p`
* :c:data:`second_order_pt_new_1h2p`
* :c:data:`second_order_pt_new_1p`
* :c:data:`second_order_pt_new_2h`
* :c:data:`second_order_pt_new_2h1p`
* :c:data:`second_order_pt_new_2h2p`
* :c:data:`second_order_pt_new_2p`
* :c:data:`select_max`
* :c:data:`selection_criterion`
* :c:data:`selection_criterion_factor`
@ -743,8 +719,7 @@ Index of Providers
* :c:data:`state_following`
* :c:data:`target_energy`
* :c:data:`theta_angular_integration_lebedev`
* :c:data:`three_anhil`
* :c:data:`three_creat`
* :c:data:`thr_ontop_approx`
* :c:data:`thresh_scf`
* :c:data:`threshold_davidson`
* :c:data:`threshold_diis`
@ -756,25 +731,27 @@ Index of Providers
* :c:data:`trace_v_hxc`
* :c:data:`trace_v_xc`
* :c:data:`transpose`
* :c:data:`two_anhil`
* :c:data:`two_anhil_one_creat`
* :c:data:`two_creat`
* :c:data:`two_creat_one_anhil`
* :c:data:`two_bod_alpha_beta_mo`
* :c:data:`two_bod_alpha_beta_mo_physicist`
* :c:data:`two_elec_energy_dft`
* :c:data:`two_electron_energy`
* :c:data:`unpaired_alpha_electrons`
* :c:data:`used_weight`
* :c:data:`var_pt2_ratio`
* :c:data:`var_rsdft_energy`
* :c:data:`virt_bitmask`
* :c:data:`virt_bitmask_4`
* :c:data:`weight_functions_at_grid_points`
* :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`
* :c:data:`write_ao_integrals_erf`
* :c:data:`write_ao_integrals_ijkl_r3`
* :c:data:`write_ao_one_integrals`
* :c:data:`write_mo_integrals`
* :c:data:`write_mo_integrals_erf`
* :c:data:`write_mo_integrals_ijkl_r3`
* :c:data:`write_mo_one_integrals`
* :c:data:`zmq_context`
* :c:data:`zmq_lock`
@ -797,6 +774,7 @@ Index of Subroutines/Functions
* :c:func:`ac_operator_bielec`
* :c:func:`add_integrals_to_map`
* :c:func:`add_integrals_to_map_erf`
* :c:func:`add_integrals_to_map_ijkl_r3`
* :c:func:`add_integrals_to_map_no_exit_34`
* :c:func:`add_integrals_to_map_three_indices`
* :c:func:`add_poly`
@ -805,12 +783,17 @@ Index of Subroutines/Functions
* :c:func:`add_to_selection_buffer`
* :c:func:`ao_bielec_integral`
* :c:func:`ao_bielec_integral_erf`
* :c:func:`ao_bielec_integral_ijkl_r3`
* :c:func:`ao_bielec_integral_schwartz_accel`
* :c:func:`ao_bielec_integral_schwartz_accel_erf`
* :c:func:`ao_bielec_integrals_erf_in_map_collector`
* :c:func:`ao_bielec_integrals_erf_in_map_slave`
* :c:func:`ao_bielec_integrals_erf_in_map_slave_inproc`
* :c:func:`ao_bielec_integrals_erf_in_map_slave_tcp`
* :c:func:`ao_bielec_integrals_ijkl_r3_in_map_collector`
* :c:func:`ao_bielec_integrals_ijkl_r3_in_map_slave`
* :c:func:`ao_bielec_integrals_ijkl_r3_in_map_slave_inproc`
* :c:func:`ao_bielec_integrals_ijkl_r3_in_map_slave_tcp`
* :c:func:`ao_bielec_integrals_in_map_collector`
* :c:func:`ao_bielec_integrals_in_map_slave`
* :c:func:`ao_bielec_integrals_in_map_slave_inproc`
@ -843,34 +826,90 @@ Index of Subroutines/Functions
* :c:func:`broadcast_chunks_integer`
* :c:func:`broadcast_chunks_integer8`
* :c:func:`build_fock_tmp`
* :c:func:`c2_delta`
* :c:func:`c3t_delta`
* :c:func:`c4_delta`
* :c:func:`c5_delta`
* :c:func:`c5t_delta`
* :c:func:`capital_c4_delta`
* :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_ijkl_r3_map`
* :c:func:`clear_ao_map`
* :c:func:`clear_bit_to_integer`
* :c:func:`clear_mo_erf_map`
* :c:func:`clear_mo_ijkl_r3_map`
* :c:func:`clear_mo_map`
* :c:func:`compute_ao_bielec_integrals`
* :c:func:`compute_ao_bielec_integrals_erf`
* :c:func:`compute_ao_bielec_integrals_ijkl_r3`
* :c:func:`compute_ao_integrals_erf_jl`
* :c:func:`compute_ao_integrals_ijkl_r3_jl`
* :c:func:`compute_ao_integrals_jl`
* :c:func:`connect_to_taskserver`
* :c:func:`connected_to_ref`
* :c:func:`connected_to_ref_by_mono`
* :c:func:`contrib_1h2p_dm_based`
* :c:func:`contrib_2h1p_dm_based`
* :c:func:`copy_h_apply_buffer_to_wf`
* :c:func:`copy_psi_bilinear_to_psi`
* :c:func:`coulomb_value_no_check`
* :c:func:`correction_to_on_top_from_ueg`
* :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:`d0delta`
* :c:func:`d2_delta`
* :c:func:`d3_delta`
* :c:func:`d_1st_deltaterm`
* :c:func:`d_2nd_deltaterm`
* :c:func:`d_3rd_deltaterm`
* :c:func:`d_4th_deltaterm`
* :c:func:`d_5th_deltaterm`
* :c:func:`d_c2_delta`
* :c:func:`d_c3t_delta`
* :c:func:`d_c4_delta`
* :c:func:`d_c5_delta`
* :c:func:`d_c5t_delta`
* :c:func:`d_capital_c4_delta`
* :c:func:`d_d0delta`
* :c:func:`d_d2_delta`
* :c:func:`d_d3_delta`
* :c:func:`d_delta_2`
* :c:func:`d_delta_3`
* :c:func:`d_delta_4`
* :c:func:`d_delta_5`
* :c:func:`d_delta_6`
* :c:func:`d_delta_barth`
* :c:func:`d_denominator_delta`
* :c:func:`d_total_deltarho_rhoa`
* :c:func:`d_total_deltarho_rhob`
* :c:func:`d_wignerseitz_radius`
* :c:func:`d_xi_1st_deltaterm`
* :c:func:`d_xi_2nd_deltaterm`
* :c:func:`d_xi_3rd_deltaterm`
* :c:func:`d_xi_4th_deltaterm`
* :c:func:`d_xi_5th_deltaterm`
* :c:func:`d_xi_c2_delta`
* :c:func:`d_xi_c3t_delta`
* :c:func:`d_xi_c4_delta`
* :c:func:`d_xi_c5_delta`
* :c:func:`d_xi_c5t_delta`
* :c:func:`d_xi_capital_c4_delta`
* :c:func:`d_xi_d0delta`
* :c:func:`d_xi_delta_3`
* :c:func:`d_xi_delta_4`
* :c:func:`d_xi_delta_5`
* :c:func:`d_xi_delta_6`
* :c:func:`d_xi_delta_barth`
* :c:func:`d_xi_denominator_delta`
* :c:func:`d_xi_phi_8_delta`
* :c:func:`d_xi_rhoa`
* :c:func:`d_xi_rhob`
* :c:func:`damping_scf`
* :c:func:`davidson_collector`
* :c:func:`davidson_converged`
@ -893,20 +932,31 @@ Index of Subroutines/Functions
* :c:func:`decode_exc`
* :c:func:`decode_exc_spin`
* :c:func:`delete_selection_buffer`
* :c:func:`delta_2`
* :c:func:`delta_3`
* :c:func:`delta_4`
* :c:func:`delta_5`
* :c:func:`delta_6`
* :c:func:`delta_barth`
* :c:func:`delta_lrsr_ldaerf`
* :c:func:`denominator_delta`
* :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:`dft_utils_ecmd`
* :c:func:`dft_utils_two_body_main`
* :c:func:`diag_h_mat_elem`
* :c:func:`diag_h_mat_elem_au0_h_au0`
* :c:func:`diag_h_mat_elem_erf`
* :c:func:`diag_h_mat_elem_fock`
* :c:func:`diag_h_mat_elem_monoelec`
* :c:func:`diag_h_mat_elem_no_elec_check`
* :c:func:`diag_h_mat_elem_no_elec_check_no_exchange`
* :c:func:`diag_s_mat_elem`
* :c:func:`diag_wee_mat_elem`
* :c:func:`diagonal_contrib_to_all_two_body_dm`
* :c:func:`diagonal_contrib_to_two_body_ab_dm`
* :c:func:`diagonalize_ci`
* :c:func:`diagonalize_h`
* :c:func:`disconnect_from_taskserver`
@ -922,7 +972,9 @@ Index of Subroutines/Functions
* :c:func:`dsort`
* :c:func:`dump_ao_integrals`
* :c:func:`dump_ao_integrals_erf`
* :c:func:`dump_ao_integrals_ijkl_r3`
* :c:func:`dump_mo_integrals`
* :c:func:`dump_mo_integrals_ijkl_r3`
* :c:func:`ec_lda`
* :c:func:`ec_lda_sr`
* :c:func:`ec_only_lda_sr`
@ -939,6 +991,8 @@ Index of Subroutines/Functions
* :c:func:`erf0`
* :c:func:`eri`
* :c:func:`eri_erf`
* :c:func:`esrc_md_ldaerf`
* :c:func:`esrc_md_ldaerf_barth`
* :c:func:`ex_lda`
* :c:func:`ex_lda_sr`
* :c:func:`ex_pbe_sr`
@ -947,7 +1001,6 @@ Index of Subroutines/Functions
* :c:func:`example_bitmask`
* :c:func:`example_determinants`
* :c:func:`example_determinants_psi_det`
* :c:func:`extract_ref`
* :c:func:`extrapolate_data`
* :c:func:`f_function_becke`
* :c:func:`f_integral`
@ -959,12 +1012,14 @@ Index of Subroutines/Functions
* :c:func:`filter_connected`
* :c:func:`filter_connected_i_h_psi0`
* :c:func:`filter_not_connected`
* :c:func:`find_connections_previous`
* :c:func:`find_rotation`
* :c:func:`four_idx_transform`
* :c:func:`g0_ueg_mu`
* :c:func:`g0_ueg_mu_inf`
* :c:func:`g0d`
* :c:func:`g0dd`
* :c:func:`g0f`
* :c:func:`g0s`
* :c:func:`gammln`
* :c:func:`gammp`
* :c:func:`gauleg`
@ -992,17 +1047,19 @@ Index of Subroutines/Functions
* :c:func:`get_all_spin_singles_n_int`
* :c:func:`get_ao_bielec_integral`
* :c:func:`get_ao_bielec_integral_erf`
* :c:func:`get_ao_bielec_integral_ijkl_r3`
* :c:func:`get_ao_bielec_integrals`
* :c:func:`get_ao_bielec_integrals_erf`
* :c:func:`get_ao_bielec_integrals_erf_non_zero`
* :c:func:`get_ao_bielec_integrals_ijkl_r3`
* :c:func:`get_ao_bielec_integrals_ijkl_r3_non_zero`
* :c:func:`get_ao_bielec_integrals_non_zero`
* :c:func:`get_ao_erf_map_size`
* :c:func:`get_ao_ijkl_r3_map_size`
* :c:func:`get_ao_map_size`
* :c:func:`get_d0`
* :c:func:`get_d1`
* :c:func:`get_d2`
* :c:func:`get_delta_e_dyall`
* :c:func:`get_delta_e_dyall_general_mp`
* :c:func:`get_double_excitation`
* :c:func:`get_double_excitation_spin`
* :c:func:`get_excitation`
@ -1017,7 +1074,6 @@ Index of Subroutines/Functions
* :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_index_in_psi_ref_sorted_bit`
* :c:func:`get_inverse`
* :c:func:`get_m0`
* :c:func:`get_m1`
@ -1025,6 +1081,7 @@ Index of Subroutines/Functions
* :c:func:`get_mask_phase`
* :c:func:`get_mo_bielec_integral`
* :c:func:`get_mo_bielec_integral_erf`
* :c:func:`get_mo_bielec_integral_ijkl_r3`
* :c:func:`get_mo_bielec_integrals`
* :c:func:`get_mo_bielec_integrals_coulomb_ii`
* :c:func:`get_mo_bielec_integrals_erf`
@ -1035,7 +1092,12 @@ Index of Subroutines/Functions
* :c:func:`get_mo_bielec_integrals_exch_ii`
* :c:func:`get_mo_bielec_integrals_i1j1`
* :c:func:`get_mo_bielec_integrals_ij`
* :c:func:`get_mo_bielec_integrals_ijkl_r3`
* :c:func:`get_mo_bielec_integrals_ijkl_r3_coulomb_ii`
* :c:func:`get_mo_bielec_integrals_ijkl_r3_exch_ii`
* :c:func:`get_mo_bielec_integrals_ijkl_r3_ij`
* :c:func:`get_mo_erf_map_size`
* :c:func:`get_mo_ijkl_r3_map_size`
* :c:func:`get_mo_map_size`
* :c:func:`get_mono_excitation`
* :c:func:`get_mono_excitation_from_fock`
@ -1050,19 +1112,6 @@ Index of Subroutines/Functions
* :c:func:`get_uj_s2_ui`
* :c:func:`getmobiles`
* :c:func:`getunitandopen`
* :c:func:`give_1h1p_contrib`
* :c:func:`give_1h1p_only_doubles_spin_cross`
* :c:func:`give_1h1p_sec_order_singles_contrib`
* :c:func:`give_1h2p_contrib`
* :c:func:`give_1h2p_contrib_sec_order`
* :c:func:`give_1h2p_new`
* :c:func:`give_1p_sec_order_singles_contrib`
* :c:func:`give_2h1p_contrib`
* :c:func:`give_2h1p_contrib_sec_order`
* :c:func:`give_2h1p_new`
* :c:func:`give_2h2p`
* :c:func:`give_2p_new`
* :c:func:`give_active_part_determinant`
* :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`
@ -1071,21 +1120,19 @@ Index of Subroutines/Functions
* :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_core_inactive_part_determinant`
* :c:func:`give_epsilon_c_md_on_top_pbe_mu_corrected_from_two_dm`
* :c:func:`give_epsilon_c_md_on_top_pbe_mu_corrected_ueg_from_two_dm`
* :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_holes_in_inactive_space`
* :c:func:`give_particles_in_virt_space`
* :c:func:`give_polynom_mult_center_mono_elec`
* :c:func:`give_polynom_mult_center_mono_elec_erf`
* :c:func:`give_polynom_mult_center_mono_elec_erf_opt`
* :c:func:`give_polynom_mult_center_x`
* :c:func:`give_singles_and_partial_doubles_1h1p_contrib`
* :c:func:`give_virt_part_determinant`
* :c:func:`gpw`
* :c:func:`grad_rho_ab_to_grad_rho_oc`
* :c:func:`gser`
* :c:func:`h`
* :c:func:`h_apply_cis`
* :c:func:`h_apply_cis_diexc`
* :c:func:`h_apply_cis_diexcorg`
@ -1096,51 +1143,6 @@ Index of Subroutines/Functions
* :c:func:`h_apply_cisd_diexcorg`
* :c:func:`h_apply_cisd_diexcp`
* :c:func:`h_apply_cisd_monoexc`
* :c:func:`h_apply_mrpt`
* :c:func:`h_apply_mrpt_1h`
* :c:func:`h_apply_mrpt_1h1p`
* :c:func:`h_apply_mrpt_1h1p_diexc`
* :c:func:`h_apply_mrpt_1h1p_diexcorg`
* :c:func:`h_apply_mrpt_1h1p_diexcp`
* :c:func:`h_apply_mrpt_1h1p_monoexc`
* :c:func:`h_apply_mrpt_1h2p`
* :c:func:`h_apply_mrpt_1h2p_diexc`
* :c:func:`h_apply_mrpt_1h2p_diexcorg`
* :c:func:`h_apply_mrpt_1h2p_diexcp`
* :c:func:`h_apply_mrpt_1h2p_monoexc`
* :c:func:`h_apply_mrpt_1h_diexc`
* :c:func:`h_apply_mrpt_1h_diexcorg`
* :c:func:`h_apply_mrpt_1h_diexcp`
* :c:func:`h_apply_mrpt_1h_monoexc`
* :c:func:`h_apply_mrpt_1p`
* :c:func:`h_apply_mrpt_1p_diexc`
* :c:func:`h_apply_mrpt_1p_diexcorg`
* :c:func:`h_apply_mrpt_1p_diexcp`
* :c:func:`h_apply_mrpt_1p_monoexc`
* :c:func:`h_apply_mrpt_2h`
* :c:func:`h_apply_mrpt_2h1p`
* :c:func:`h_apply_mrpt_2h1p_diexc`
* :c:func:`h_apply_mrpt_2h1p_diexcorg`
* :c:func:`h_apply_mrpt_2h1p_diexcp`
* :c:func:`h_apply_mrpt_2h1p_monoexc`
* :c:func:`h_apply_mrpt_2h2p`
* :c:func:`h_apply_mrpt_2h2p_diexc`
* :c:func:`h_apply_mrpt_2h2p_diexcorg`
* :c:func:`h_apply_mrpt_2h2p_diexcp`
* :c:func:`h_apply_mrpt_2h2p_monoexc`
* :c:func:`h_apply_mrpt_2h_diexc`
* :c:func:`h_apply_mrpt_2h_diexcorg`
* :c:func:`h_apply_mrpt_2h_diexcp`
* :c:func:`h_apply_mrpt_2h_monoexc`
* :c:func:`h_apply_mrpt_2p`
* :c:func:`h_apply_mrpt_2p_diexc`
* :c:func:`h_apply_mrpt_2p_diexcorg`
* :c:func:`h_apply_mrpt_2p_diexcp`
* :c:func:`h_apply_mrpt_2p_monoexc`
* :c:func:`h_apply_mrpt_diexc`
* :c:func:`h_apply_mrpt_diexcorg`
* :c:func:`h_apply_mrpt_diexcp`
* :c:func:`h_apply_mrpt_monoexc`
* :c:func:`h_s2_u_0_bielec_nstates_openmp`
* :c:func:`h_s2_u_0_bielec_nstates_openmp_work`
* :c:func:`h_s2_u_0_bielec_nstates_openmp_work_1`
@ -1148,6 +1150,13 @@ Index of Subroutines/Functions
* :c:func:`h_s2_u_0_bielec_nstates_openmp_work_3`
* :c:func:`h_s2_u_0_bielec_nstates_openmp_work_4`
* :c:func:`h_s2_u_0_bielec_nstates_openmp_work_n_int`
* :c:func:`h_s2_u_0_erf_nstates_openmp`
* :c:func:`h_s2_u_0_erf_nstates_openmp_work`
* :c:func:`h_s2_u_0_erf_nstates_openmp_work_1`
* :c:func:`h_s2_u_0_erf_nstates_openmp_work_2`
* :c:func:`h_s2_u_0_erf_nstates_openmp_work_3`
* :c:func:`h_s2_u_0_erf_nstates_openmp_work_4`
* :c:func:`h_s2_u_0_erf_nstates_openmp_work_n_int`
* :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`
@ -1168,6 +1177,8 @@ Index of Subroutines/Functions
* :c:func:`heap_sort`
* :c:func:`heap_sort_big`
* :c:func:`hermite`
* :c:func:`hf_two_body_dm_aa`
* :c:func:`hf_two_body_dm_aa_spherical_laplacian`
* :c:func:`huckel_guess`
* :c:func:`i2set_order`
* :c:func:`i2set_order_big`
@ -1178,23 +1189,25 @@ Index of Subroutines/Functions
* :c:func:`i_h_j`
* :c:func:`i_h_j_bielec`
* :c:func:`i_h_j_double_alpha_beta`
* :c:func:`i_h_j_double_alpha_beta_erf`
* :c:func:`i_h_j_double_spin`
* :c:func:`i_h_j_dyall`
* :c:func:`i_h_j_dyall_no_exchange`
* :c:func:`i_h_j_double_spin_erf`
* :c:func:`i_h_j_erf`
* :c:func:`i_h_j_mono_spin`
* :c:func:`i_h_j_mono_spin_erf`
* :c:func:`i_h_j_mono_spin_monoelec`
* :c:func:`i_h_j_monoelec`
* :c:func:`i_h_j_s2`
* :c:func:`i_h_j_verbose`
* :c:func:`i_h_psi`
* :c:func:`i_h_psi_minilist`
* :c:func:`i_h_psi_pert_new_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_ijkl_r3_map`
* :c:func:`insert_into_ao_integrals_map`
* :c:func:`insertion_dsort`
* :c:func:`insertion_dsort_big`
@ -1207,6 +1220,7 @@ Index of Subroutines/Functions
* :c:func:`insertion_sort`
* :c:func:`insertion_sort_big`
* :c:func:`int_gaus_pol`
* :c:func:`integral_bourrin_mo`
* :c:func:`integrale_new`
* :c:func:`integrale_new_erf`
* :c:func:`is_a_1h`
@ -1221,7 +1235,6 @@ Index of Subroutines/Functions
* :c:func:`is_connected_to_by_mono`
* :c:func:`is_generable_cassd`
* :c:func:`is_i_in_virtual`
* :c:func:`is_in_psi_ref`
* :c:func:`is_in_wavefunction`
* :c:func:`is_spin_flip_possible`
* :c:func:`is_the_hole_in_det`
@ -1235,8 +1248,10 @@ Index of Subroutines/Functions
* :c:func:`list_to_bitstring`
* :c:func:`load_ao_integrals`
* :c:func:`load_ao_integrals_erf`
* :c:func:`load_ao_integrals_ijkl_r3`
* :c:func:`load_mo_integrals`
* :c:func:`load_mo_integrals_erf`
* :c:func:`load_mo_integrals_ijkl_r3`
* :c:func:`logfact`
* :c:func:`lowercase`
* :c:func:`make_s2_eigenfunction`
@ -1252,7 +1267,9 @@ Index of Subroutines/Functions
* :c:func:`mo_as_svd_vectors_of_mo_matrix_eig`
* :c:func:`mo_bielec_integral`
* :c:func:`mo_bielec_integral_erf`
* :c:func:`mo_bielec_integral_ijkl_r3`
* :c:func:`mo_bielec_integrals_erf_index`
* :c:func:`mo_bielec_integrals_ijkl_r3_index`
* :c:func:`mo_bielec_integrals_index`
* :c:func:`mo_to_ao`
* :c:func:`modify_bitmasks_for_hole`
@ -1261,7 +1278,6 @@ Index of Subroutines/Functions
* :c:func:`molden`
* :c:func:`mono_excitation_wee`
* :c:func:`mpi_print`
* :c:func:`mrpt_dress`
* :c:func:`multiply_poly`
* :c:func:`n_pt_sup`
* :c:func:`nai_pol_mult`
@ -1282,6 +1298,13 @@ Index of Subroutines/Functions
* :c:func:`occ_pattern_search_key`
* :c:func:`occ_pattern_to_dets`
* :c:func:`occ_pattern_to_dets_size`
* :c:func:`off_diagonal_double_to_two_body_ab_dm`
* :c:func:`off_diagonal_single_to_two_body_ab_dm`
* :c:func:`on_top_of_r_approx_svd_correl_function`
* :c:func:`on_top_of_r_approx_svd_function`
* :c:func:`on_top_of_r_from_provider`
* :c:func:`on_top_two_dm_in_r_mu_corrected_from_two_dm`
* :c:func:`on_top_two_dm_in_r_mu_corrected_ueg_from_two_dm`
* :c:func:`ortho_canonical`
* :c:func:`ortho_lowdin`
* :c:func:`ortho_qr`
@ -1313,8 +1336,11 @@ Index of Subroutines/Functions
* :c:func:`perturb_buffer_moller_plesset`
* :c:func:`perturb_buffer_moller_plesset_general`
* :c:func:`perturb_buffer_qdpt`
* :c:func:`phi_8_delta`
* :c:func:`pouet`
* :c:func:`primitive_value`
* :c:func:`print_det`
* :c:func:`print_ecmd_var_energy`
* :c:func:`print_extrapolated_energy`
* :c:func:`print_generators_bitmasks_holes`
* :c:func:`print_generators_bitmasks_holes_for_one_generator`
@ -1323,8 +1349,10 @@ Index of Subroutines/Functions
* :c:func:`print_memory_usage`
* :c:func:`print_spindet`
* :c:func:`print_summary`
* :c:func:`print_variational_energy_dft`
* :c:func:`print_wf`
* :c:func:`provide_all_mo_integrals_erf`
* :c:func:`provide_all_mo_integrals_ijkl_r3`
* :c:func:`provide_everything`
* :c:func:`pt2`
* :c:func:`pt2_collector`
@ -1376,6 +1404,9 @@ Index of Subroutines/Functions
* :c:func:`roothaan_hall_scf`
* :c:func:`routine`
* :c:func:`routine_example_psi_det`
* :c:func:`routine_print`
* :c:func:`routines_compute_energy`
* :c:func:`routines_write_int`
* :c:func:`run`
* :c:func:`run_pt2_slave`
* :c:func:`run_selection_slave`
@ -1393,6 +1424,7 @@ Index of Subroutines/Functions
* :c:func:`save_natorb`
* :c:func:`save_natural_mos`
* :c:func:`save_one_body_dm`
* :c:func:`save_one_e_effective_potential`
* :c:func:`save_ortho_mos`
* :c:func:`save_ref_determinant`
* :c:func:`save_wavefunction`
@ -1408,7 +1440,6 @@ Index of Subroutines/Functions
* :c:func:`set_bit_to_integer`
* :c:func:`set_bitmask_hole_as_input`
* :c:func:`set_bitmask_particl_as_input`
* :c:func:`set_generators_bitmasks_as_holes_and_particles`
* :c:func:`set_natural_mos`
* :c:func:`set_order`
* :c:func:`set_order_big`
@ -1424,6 +1455,8 @@ Index of Subroutines/Functions
* :c:func:`sorted_i8number`
* :c:func:`sorted_inumber`
* :c:func:`sorted_number`
* :c:func:`spherical_averaged_two_dm_at_second_order`
* :c:func:`spherical_averaged_two_dm_hf_at_second_order`
* :c:func:`spin_det_search_key`
* :c:func:`splash_pq`
* :c:func:`spot_isinwf`
@ -1436,10 +1469,17 @@ Index of Subroutines/Functions
* :c:func:`tasks_done_to_taskserver`
* :c:func:`testteethbuilding`
* :c:func:`total_memory`
* :c:func:`u0_h_dyall_u0`
* :c:func:`u0_h_dyall_u0_no_exchange`
* :c:func:`two_body_dm_nstates_openmp`
* :c:func:`two_body_dm_nstates_openmp_work`
* :c:func:`two_body_dm_nstates_openmp_work_1`
* :c:func:`two_body_dm_nstates_openmp_work_2`
* :c:func:`two_body_dm_nstates_openmp_work_3`
* :c:func:`two_body_dm_nstates_openmp_work_4`
* :c:func:`two_body_dm_nstates_openmp_work_n_int`
* :c:func:`two_dm_in_r`
* :c:func:`u_0_h_u_0`
* :c:func:`u_0_h_u_0_bielec`
* :c:func:`u_0_h_u_0_erf`
* :c:func:`u_0_s2_u_0`
* :c:func:`u_dot_u`
* :c:func:`u_dot_v`
@ -1457,9 +1497,13 @@ Index of Subroutines/Functions
* :c:func:`wall_time`
* :c:func:`wallis`
* :c:func:`wf_of_psi_bilinear_matrix`
* :c:func:`wignerseitz_radius`
* :c:func:`write_2_body_dm_fci_dump`
* :c:func:`write_all_integrals_for_mrdft`
* :c:func:`write_ao_basis`
* :c:func:`write_bool`
* :c:func:`write_double`
* :c:func:`write_effective_rsdft_hamiltonian`
* :c:func:`write_geometry`
* :c:func:`write_git_log`
* :c:func:`write_int`

View File

@ -1,112 +1,3 @@
======================
Programming guidelines
======================
Each module (directory) contains the following:
* A ``README.rst`` file to document the current module.
* An ``ASSUMPTIONS.rst`` file. This file should document all the implicit
assumptions used in the module. For example, if the atomic orbitals are
assumed to be normalized, this should be mentioned in the
``AOs/ASSUMPTIONS.rst`` file.
* A ``NEEDED_MODULES`` file which contains the list of modules on which the
current module depends
* A set of ``.irp.f`` files containing provider, subroutines and functions
* A ``Makefile`` that should compile
* Optionally some ``*.ezfio_config`` configuration files for the EZFIO
library
A new module may be created by invoking the ``create_module.sh`` script.
Every subroutine, function or provider should be documented using the
BEGIN_DOC ... END_DOC block. The documentation should be written in
ReStructured Text format to enable the automatic generation of the Sphinx
documentation.
When the current module depends on other modules, the list of modules should
be added in the ``NEEDED_MODULES`` file.
Creating a new module
=====================
Every new module should be created using the interactive ``create_module.sh``
script located in the ``${QP_ROOT}/scripts`` directory. This will create
all the required files with correct templates.
Makefiles
=========
Use the structure of Makefiles provided by the ``create_module.sh`` script. If
you need to re-create the Makefile, you can use the ``create_Makefile.sh``
script in the current module directory.
If you need to add some Fortran or C files that should not be tracked by IRPF90,
you have to add them manually to the Makefile in the ``SRC`` variable.
You also need to add the corresponding ``*.o`` file prefixed by ``IRPF90_temp/``.
For example
.. code-block:: Makefile
SRC=map_module.f90
OBJ=IRPF90_temp/map_module.o
Input data
==========
Every program is supposed to use an EZFIO database containing all the
persistent data. This database can be modified in using the generated Fortran
functions or the generated Python module.
The definition of the data needed by the module should be put in the
``*.ezfio_config`` file.
Input data can also be read from the standard input to enable the use of
a program with a pipe, but the read statements should be present **only** in
the main program.
Output data
===========
Print to stdout statements should only appear in programs, not in providers,
subroutines or functions. This enables the possibility easily use the programs
with pipes.
To print, you should write in an output file provided by the ``Output``
module. Every module has its own output file. Before printing something,
a timestamp should be put in the output with the ``write_time`` function.
This allows an external script to read all the pieces of the output files
and put them in a sequential order. The format of the output should be
in ReStructured Text for easy transformation of the output data to pdf,
HTML, man, etc.
Creating a shell script
=======================
Shell scripts should be located in the ``${QP_ROOT}/scripts`` directory.
Relative paths should be avoided as much as possible, and the result of commands
should be always checked. For example, when creating a directory the existence
of the directory has to be checked.
Documentation
=============
.. Do not edit this section. It was auto-generated from the
.. NEEDED_MODULES file.
Needed Modules
==============
.. Do not edit this section. It was auto-generated from the
.. NEEDED_MODULES file.
* `Utils <http://github.com/LCPQ/quantum_package/tree/master/src/Utils>`_
==========================
The core modules of the QP
==========================

View File

@ -1,4 +1,5 @@
ao_one_e_integrals
mo_one_e_integrals
ao_two_e_integrals
pseudo
bitmask