From 606d20dc0f8b74db5598aaa10cad10fee242071f Mon Sep 17 00:00:00 2001 From: Emmanuel Giner Date: Fri, 28 Dec 2018 19:38:49 +0100 Subject: [PATCH] modifs in docs/intro --- doc/.gitignore | 1 - doc/Makefile | 154 ------- doc/code_architecture/Script.md | 44 -- doc/source/Intro.rst | 156 ------- doc/source/_static/.empty | 0 doc/source/code_doc_intro.rst | 228 ---------- doc/source/conf.py | 285 ------------- doc/source/index.rst | 25 -- doc/source/install.rst | 40 -- doc/source/wavefunction.rst | 169 -------- docs/source/_static/links.rst | 3 + docs/source/intro/intro.rst | 16 +- docs/source/modules/ao_one_e_integrals.rst | 9 +- docs/source/modules/aux_quantities.rst | 13 +- docs/source/modules/becke_numerical_grid.rst | 67 +-- docs/source/modules/davidson.rst | 5 +- docs/source/modules/determinants.rst | 30 ++ docs/source/modules/dft_keywords.rst | 11 +- docs/source/modules/fci.rst | 14 + docs/source/modules/generators_cas.rst | 2 +- docs/source/modules/hartree_fock.rst | 85 ++++ docs/source/modules/kohn_sham.rst | 281 ------------- docs/source/modules/kohn_sham_rs.rst | 182 ++++++++ docs/source/modules/mo_one_e_integrals.rst | 9 +- docs/source/modules/perturbation.rst | 15 - docs/source/modules/psiref_cas.rst | 163 ------- docs/source/modules/psiref_utils.rst | 366 ---------------- docs/source/modules/scf_utils.rst | 4 +- docs/source/modules/slave.rst | 14 - .../programmers_guide/index_providers.rst | 396 ++++++++++-------- 30 files changed, 619 insertions(+), 2168 deletions(-) delete mode 100644 doc/.gitignore delete mode 100644 doc/Makefile delete mode 100644 doc/code_architecture/Script.md delete mode 100644 doc/source/Intro.rst delete mode 100644 doc/source/_static/.empty delete mode 100644 doc/source/code_doc_intro.rst delete mode 100644 doc/source/conf.py delete mode 100644 doc/source/index.rst delete mode 100644 doc/source/install.rst delete mode 100644 doc/source/wavefunction.rst diff --git a/doc/.gitignore b/doc/.gitignore deleted file mode 100644 index 378eac25..00000000 --- a/doc/.gitignore +++ /dev/null @@ -1 +0,0 @@ -build diff --git a/doc/Makefile b/doc/Makefile deleted file mode 100644 index 29a05ba5..00000000 --- a/doc/Makefile +++ /dev/null @@ -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 ' where 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." diff --git a/doc/code_architecture/Script.md b/doc/code_architecture/Script.md deleted file mode 100644 index ba918f78..00000000 --- a/doc/code_architecture/Script.md +++ /dev/null @@ -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. diff --git a/doc/source/Intro.rst b/doc/source/Intro.rst deleted file mode 100644 index 57833a18..00000000 --- a/doc/source/Intro.rst +++ /dev/null @@ -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` - diff --git a/doc/source/_static/.empty b/doc/source/_static/.empty deleted file mode 100644 index e69de29b..00000000 diff --git a/doc/source/code_doc_intro.rst b/doc/source/code_doc_intro.rst deleted file mode 100644 index ef113adc..00000000 --- a/doc/source/code_doc_intro.rst +++ /dev/null @@ -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` - - diff --git a/doc/source/conf.py b/doc/source/conf.py deleted file mode 100644 index e461323a..00000000 --- a/doc/source/conf.py +++ /dev/null @@ -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 -# " v 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 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 diff --git a/doc/source/index.rst b/doc/source/index.rst deleted file mode 100644 index 6e1ace01..00000000 --- a/doc/source/index.rst +++ /dev/null @@ -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` - diff --git a/doc/source/install.rst b/doc/source/install.rst deleted file mode 100644 index 44b86b8a..00000000 --- a/doc/source/install.rst +++ /dev/null @@ -1,40 +0,0 @@ -============ -Installation -============ - -Requirements ------------- - -* `GNU make `_ -* `The Intel Fortran Compiler with MKL `_ -* `IRPF90 `_ -* `EZFIO `_ - -Optional Requirements ---------------------- - -* `Sphinx `_ 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 - diff --git a/doc/source/wavefunction.rst b/doc/source/wavefunction.rst deleted file mode 100644 index a3215e6d..00000000 --- a/doc/source/wavefunction.rst +++ /dev/null @@ -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}} - - - - diff --git a/docs/source/_static/links.rst b/docs/source/_static/links.rst index 976c7950..f1a3a27d 100644 --- a/docs/source/_static/links.rst +++ b/docs/source/_static/links.rst @@ -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| diff --git a/docs/source/intro/intro.rst b/docs/source/intro/intro.rst index 38e99917..45b2db2e 100644 --- a/docs/source/intro/intro.rst +++ b/docs/source/intro/intro.rst @@ -12,13 +12,15 @@ What it is ========== The |qp| is an open-source programming environment for quantum chemistry, -especially for `wave function 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 `_ (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 `_ |KS-DFT| and `range-separated hybrids `_ |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 ``_) +All the programs are developed with the `IRPF90`_ code generator, which simplifies the collaborative development, and the development of new features. diff --git a/docs/source/modules/ao_one_e_integrals.rst b/docs/source/modules/ao_one_e_integrals.rst index 3f158a26..aa7635a1 100644 --- a/docs/source/modules/ao_one_e_integrals.rst +++ b/docs/source/modules/ao_one_e_integrals.rst @@ -10,6 +10,13 @@ AO_one_e_integrals All the one-electron integrals in the |AO| basis are here. +The most important providers for usual quantum-chemistry calculation are: + +# `ao_kinetic_integral` which are the kinetic operator integrals on the |AO| basis (see :file:`kin_ao_ints.irp.f`) +# `ao_nucl_elec_integral` which are the nuclear-elctron operator integrals on the |AO| basis (see :file:`pot_ao_ints.irp.f`) +# `ao_mono_elec_integral` which are the the h_core operator integrals on the |AO| basis (see :file:`ao_mono_ints.irp.f`) + +Note that you can find other interesting integrals related to the position operator in :file:`spread_dipole_ao.irp.f`. @@ -889,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 diff --git a/docs/source/modules/aux_quantities.rst b/docs/source/modules/aux_quantities.rst index 4eded7d9..4e6fde73 100644 --- a/docs/source/modules/aux_quantities.rst +++ b/docs/source/modules/aux_quantities.rst @@ -4,13 +4,20 @@ .. default-role:: option -============ -Data energy and density -============ +============== +aux_quantities +============== This module contains some global variables (such as densities and energies) which are stored in the EZFIO folder in a different place than determinants. This is used in practice to store density matrices which can be obtained from any methods, as long as they are stored in the same MO basis which is used for the calculations. In |RS-DFT| calculations, this can be done to perform damping on the density in order to speed up convergence. +The main providers of that module are: + +# `data_one_body_alpha_dm_mo` and `data_one_body_beta_dm_mo` which are the one-body alpha and beta densities which are necessary read from the EZFIO folder. + + +Thanks to these providers you can use any density matrix that does not necessary corresponds to that of the current wave function. + EZFIO parameters diff --git a/docs/source/modules/becke_numerical_grid.rst b/docs/source/modules/becke_numerical_grid.rst index 8b0ef81f..c1c102a7 100644 --- a/docs/source/modules/becke_numerical_grid.rst +++ b/docs/source/modules/becke_numerical_grid.rst @@ -5,13 +5,20 @@ .. default-role:: option ==================== -Becke Numerical Grid +becke_numerical_grid ==================== This module contains all quantities needed to build the Becke's grid used in general for DFT integration. Note that it can be used for whatever integration in R^3 as long as the functions to be integrated are mostly concentrated near the atomic regions. This grid is built as the reunion of a spherical grid around each atom. Each spherical grid contains a certain number of radial and angular points. +The main providers of that module are: + +# :option:`becke_numerical_grid n_points_integration_angular` which is the number of angular integration points. WARNING: it obeys to specific rules so it cannot be any integer number. Some of the possible values are [ 50 | 74 | 266 | 590 | 1202 | 2030 | 5810 ] for instance. See :file:`angular.f` for more details. +# :option:`becke_numerical_grid n_points_radial_grid` which is the number of radial angular points. This can be any strictly positive integer. Nevertheless, a minimum of 50 is in general necessary. +# `final_grid_points` which are the (x,y,z) coordinates of the grid points. +# `final_weight_at_r_vector` which are the weights at each grid point + For a simple example of how to use the grid, see :file:`example.irp.f`. The spherical integration uses Lebedev-Laikov grids, which was used from the code distributed through CCL (http://www.ccl.net/). @@ -132,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` @@ -178,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 @@ -210,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 @@ -229,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 @@ -282,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` diff --git a/docs/source/modules/davidson.rst b/docs/source/modules/davidson.rst index c7380356..85a9a5c9 100644 --- a/docs/source/modules/davidson.rst +++ b/docs/source/modules/davidson.rst @@ -14,7 +14,10 @@ a dressing is used, the dressing column should be defined and the :ref:`davidsondressed` module should be used. If no dressing is required, the :ref:`davidson` module should be used, and it has a default zero dressing vector. +The important providers for that module are: +# `psi_energy` which is the expectation value over the wave function (`psi_det`, `psi_coef`) of the Hamiltonian, dressed or not. It uses the general subroutine `u_0_H_u_0`. +# `psi_energy_bielec` which is the expectation value over the wave function (`psi_det`, `psi_coef`) of the standard two-electrons coulomb operator. It uses the general routine `u_0_H_u_0_bielec`. @@ -186,7 +189,7 @@ Providers File: :file:`u0_h_u0.irp.f` - Energy of the current wave function + Electronic energy of the current wave function diff --git a/docs/source/modules/determinants.rst b/docs/source/modules/determinants.rst index c23e267b..74d608e4 100644 --- a/docs/source/modules/determinants.rst +++ b/docs/source/modules/determinants.rst @@ -10,6 +10,22 @@ Determinants Contains everything for the computation of the Hamiltonian matrix elements in the basis of orthogonal Slater determinants built on a restricted spin-orbitals basis. +The main providers for this module are: + +# :option:`determinants n_states`: number of states to be computed +# `psi_det`: list of determinants in the wave function used in many routines/providers of the |QP|. +# `psi_coef`: list of coefficients, for all :option:`determinants n_states` states, and all determinants. + +The main routines for this module are: + +# `i_H_j`: computes the Hamiltonian matrix element between two arbitrary Slater determinants. +# `i_H_j_s2`: computes the Hamiltonian and (:math:`S^2`) matrix element between two arbitrary Slater determinants. +# `i_H_j_verbose`: returns the decomposition in terms of one- and two-body components of the Hamiltonian matrix elements between two arbitrary Slater determinants. Also return the fermionic phase factor. +# `i_H_psi`: computes the Hamiltonian matrix element between an arbitrary Slater determinant and a wave function composed of a sum of arbitrary Slater determinants. + + +For an example of how to use these routines and providers, take a look at :file:`example.irp.f`. + EZFIO parameters @@ -3133,6 +3149,20 @@ Subroutines / functions +.. c:function:: pouet + + .. code:: text + + subroutine pouet + + File: :file:`test.irp.f` + + + + + + + .. c:function:: pull_pt2 .. code:: text diff --git a/docs/source/modules/dft_keywords.rst b/docs/source/modules/dft_keywords.rst index 301c983e..ed7f87d2 100644 --- a/docs/source/modules/dft_keywords.rst +++ b/docs/source/modules/dft_keywords.rst @@ -5,18 +5,19 @@ .. default-role:: option ============ -DFT Keywords +dft_keywords ============ This module contains the main keywords related to a DFT calculation or RS-DFT calculation, such as: -# :option:exchange_functional -# :option:correlation_functional -# :option:HF_exchange : only relevent for the :ref:`ks_scf` program -# :option:density_for_dft : mainly relevent for multi-determinant range separated DFT, see the plugins of eginer. +# :option:`dft_keywords exchange_functional` +# :option:`dft_keywords correlation_functional` +# :option:`dft_keywords HF_exchange` : only relevent for the :ref:`ks_scf` program The keyword for the range separation parameter :math:`\mu` is the :option:`ao_two_e_erf_integrals mu_erf` keyword. +The keyword for the type of density used in RS-DFT calculation with a multi-configurational wave function is the :option:`density_for_dft density_for_dft` keyword. + EZFIO parameters diff --git a/docs/source/modules/fci.rst b/docs/source/modules/fci.rst index b67661bd..61194f9b 100644 --- a/docs/source/modules/fci.rst +++ b/docs/source/modules/fci.rst @@ -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 diff --git a/docs/source/modules/generators_cas.rst b/docs/source/modules/generators_cas.rst index 806f4430..9d1e75e0 100644 --- a/docs/source/modules/generators_cas.rst +++ b/docs/source/modules/generators_cas.rst @@ -13,7 +13,7 @@ The |MOs| belonging to the |CAS| are those which were set as active with the :ref:`qp_set_mo_class` command. This module is intended to be included in the :file:`NEED` file to define -generators on a |CAS|. +the generators as the |CAS| determinants, which can be useful to define post-CAS approaches (see cassd module for instance). diff --git a/docs/source/modules/hartree_fock.rst b/docs/source/modules/hartree_fock.rst index 08649720..9031fc75 100644 --- a/docs/source/modules/hartree_fock.rst +++ b/docs/source/modules/hartree_fock.rst @@ -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 diff --git a/docs/source/modules/kohn_sham.rst b/docs/source/modules/kohn_sham.rst index 003715ff..781c0e60 100644 --- a/docs/source/modules/kohn_sham.rst +++ b/docs/source/modules/kohn_sham.rst @@ -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 - - diff --git a/docs/source/modules/kohn_sham_rs.rst b/docs/source/modules/kohn_sham_rs.rst index 666755c8..17dd7fd7 100644 --- a/docs/source/modules/kohn_sham_rs.rst +++ b/docs/source/modules/kohn_sham_rs.rst @@ -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 + + diff --git a/docs/source/modules/mo_one_e_integrals.rst b/docs/source/modules/mo_one_e_integrals.rst index aedd40d6..d4e14b41 100644 --- a/docs/source/modules/mo_one_e_integrals.rst +++ b/docs/source/modules/mo_one_e_integrals.rst @@ -5,11 +5,18 @@ .. default-role:: option ================== -MO_one_e_integrals +mo_one_e_integrals ================== All the one-electron integrals in |MO| basis are defined here. +The most important providers for usual quantum-chemistry calculation are: + +# `mo_kinetic_integral` which are the kinetic operator integrals on the |AO| basis (see :file:`kin_mo_ints.irp.f`) +# `mo_nucl_elec_integral` which are the nuclear-elctron operator integrals on the |AO| basis (see :file:`pot_mo_ints.irp.f`) +# `mo_mono_elec_integral` which are the the h_core operator integrals on the |AO| basis (see :file:`mo_mono_ints.irp.f`) + +Note that you can find other interesting integrals related to the position operator in :file:`spread_dipole_mo.irp.f`. diff --git a/docs/source/modules/perturbation.rst b/docs/source/modules/perturbation.rst index 3226f126..3708b399 100644 --- a/docs/source/modules/perturbation.rst +++ b/docs/source/modules/perturbation.rst @@ -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 = \sum_J c_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 diff --git a/docs/source/modules/psiref_cas.rst b/docs/source/modules/psiref_cas.rst index 9939cf82..f79eba38 100644 --- a/docs/source/modules/psiref_cas.rst +++ b/docs/source/modules/psiref_cas.rst @@ -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. - - diff --git a/docs/source/modules/psiref_utils.rst b/docs/source/modules/psiref_utils.rst index 4c37ff73..b6c195b3 100644 --- a/docs/source/modules/psiref_utils.rst +++ b/docs/source/modules/psiref_utils.rst @@ -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 - - diff --git a/docs/source/modules/scf_utils.rst b/docs/source/modules/scf_utils.rst index 52a411e2..a5aaeb73 100644 --- a/docs/source/modules/scf_utils.rst +++ b/docs/source/modules/scf_utils.rst @@ -10,11 +10,11 @@ scf_utils -The scf_utils module performs *Restricted* SCF calculations (the +The scf_utils module is an abstract module which contains the basics to perform *Restricted* SCF calculations (the spatial part of the |MOs| is common for alpha and beta spinorbitals) based on a single-determinant wave function. This module does not produce any executable *and must not do*, but instead it contains everything one needs to perform an orbital optimization based on an Fock matrix. -The ``scf_utils`` module is included in the :file:`NEED` of the various single determinant SCF procedures, such as ``hartree_fock`` or ``kohn_sham``, where a specific definition of the Fock matrix is given (see :file:`hartree_fock fock_matrix_hf.irp.f` for an example). +The ``scf_utils`` module is meant to be included in the :file:`NEED` of the various single determinant SCF procedures, such as ``hartree_fock`` or ``kohn_sham``, where a specific definition of the Fock matrix is given (see :file:`hartree_fock fock_matrix_hf.irp.f` for an example). All SCF programs perform the following actions: diff --git a/docs/source/modules/slave.rst b/docs/source/modules/slave.rst index 1dcf1c47..85d16f28 100644 --- a/docs/source/modules/slave.rst +++ b/docs/source/modules/slave.rst @@ -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 diff --git a/docs/source/programmers_guide/index_providers.rst b/docs/source/programmers_guide/index_providers.rst index 446cc193..72baecef 100644 --- a/docs/source/programmers_guide/index_providers.rst +++ b/docs/source/programmers_guide/index_providers.rst @@ -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`