From 062020ffdcc5afcb60ca2436a3584de068dce3e0 Mon Sep 17 00:00:00 2001 From: Emmanuel Giner Date: Fri, 28 Dec 2018 19:41:11 +0100 Subject: [PATCH] Toto (#83) * minor changes in README.rst of many src files * added ROHF_b2.gms.out * modified some scripts * modified README.rst * 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 | 2 +- docs/source/modules/becke_numerical_grid.rst | 58 +-- docs/source/modules/davidson.rst | 2 +- docs/source/modules/determinants.rst | 14 + docs/source/modules/fci.rst | 14 + 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/perturbation.rst | 15 - docs/source/modules/psiref_cas.rst | 163 ------- docs/source/modules/psiref_utils.rst | 366 ---------------- docs/source/modules/slave.rst | 14 - .../programmers_guide/index_providers.rst | 396 ++++++++++-------- src/README.rst | 115 +---- src/mo_two_e_integrals/NEED | 1 + 27 files changed, 562 insertions(+), 2267 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 4b4d764a..02420d50 100644 --- a/docs/source/modules/ao_one_e_integrals.rst +++ b/docs/source/modules/ao_one_e_integrals.rst @@ -896,7 +896,7 @@ Subroutines / functions File: :file:`spread_dipole_ao.irp.f` - + Computes the following integral : int [-infty ; +infty] of [(x-A_center)^(power_A) * (x-B_center)^power_B * exp(-alpha(x-A_center)^2) * exp(-beta(x-B_center)^2) * x ] needed for the dipole and those things diff --git a/docs/source/modules/becke_numerical_grid.rst b/docs/source/modules/becke_numerical_grid.rst index eb934238..c1c102a7 100644 --- a/docs/source/modules/becke_numerical_grid.rst +++ b/docs/source/modules/becke_numerical_grid.rst @@ -139,44 +139,25 @@ Providers .. code:: text double precision, allocatable :: final_grid_points (3,n_points_final_grid) - double precision, allocatable :: final_weight_functions_at_final_grid_points (n_points_final_grid) + double precision, allocatable :: final_weight_at_r_vector (n_points_final_grid) integer, allocatable :: index_final_points (3,n_points_final_grid) integer, allocatable :: index_final_points_reverse (n_points_integration_angular,n_points_radial_grid,nucl_num) File: :file:`grid_becke_vector.irp.f` final_grid_points(1:3,j) = (/ x, y, z /) of the jth grid point - final_weight_functions_at_final_grid_points(i) = Total weight function of the ith grid point which contains the Lebedev, Voronoi and radial weights contributions + final_weight_at_r_vector(i) = Total weight function of the ith grid point which contains the Lebedev, Voronoi and radial weights contributions index_final_points(1:3,i) = gives the angular, radial and atomic indices associated to the ith grid point index_final_points_reverse(i,j,k) = index of the grid point having i as angular, j as radial and l as atomic indices -.. c:var:: final_weight_functions_at_final_grid_points +.. c:var:: final_weight_at_r .. code:: text - double precision, allocatable :: final_grid_points (3,n_points_final_grid) - double precision, allocatable :: final_weight_functions_at_final_grid_points (n_points_final_grid) - integer, allocatable :: index_final_points (3,n_points_final_grid) - integer, allocatable :: index_final_points_reverse (n_points_integration_angular,n_points_radial_grid,nucl_num) - - File: :file:`grid_becke_vector.irp.f` - - final_grid_points(1:3,j) = (/ x, y, z /) of the jth grid point - final_weight_functions_at_final_grid_points(i) = Total weight function of the ith grid point which contains the Lebedev, Voronoi and radial weights contributions - index_final_points(1:3,i) = gives the angular, radial and atomic indices associated to the ith grid point - index_final_points_reverse(i,j,k) = index of the grid point having i as angular, j as radial and l as atomic indices - - - - -.. c:var:: final_weight_functions_at_grid_points - - .. code:: text - - double precision, allocatable :: final_weight_functions_at_grid_points (n_points_integration_angular,n_points_radial_grid,nucl_num) + double precision, allocatable :: final_weight_at_r (n_points_integration_angular,n_points_radial_grid,nucl_num) File: :file:`grid_becke.irp.f` @@ -185,6 +166,25 @@ Providers +.. c:var:: final_weight_at_r_vector + + .. code:: text + + double precision, allocatable :: final_grid_points (3,n_points_final_grid) + double precision, allocatable :: final_weight_at_r_vector (n_points_final_grid) + integer, allocatable :: index_final_points (3,n_points_final_grid) + integer, allocatable :: index_final_points_reverse (n_points_integration_angular,n_points_radial_grid,nucl_num) + + File: :file:`grid_becke_vector.irp.f` + + final_grid_points(1:3,j) = (/ x, y, z /) of the jth grid point + final_weight_at_r_vector(i) = Total weight function of the ith grid point which contains the Lebedev, Voronoi and radial weights contributions + index_final_points(1:3,i) = gives the angular, radial and atomic indices associated to the ith grid point + index_final_points_reverse(i,j,k) = index of the grid point having i as angular, j as radial and l as atomic indices + + + + .. c:var:: grid_points_per_atom .. code:: text @@ -217,14 +217,14 @@ Providers .. code:: text double precision, allocatable :: final_grid_points (3,n_points_final_grid) - double precision, allocatable :: final_weight_functions_at_final_grid_points (n_points_final_grid) + double precision, allocatable :: final_weight_at_r_vector (n_points_final_grid) integer, allocatable :: index_final_points (3,n_points_final_grid) integer, allocatable :: index_final_points_reverse (n_points_integration_angular,n_points_radial_grid,nucl_num) File: :file:`grid_becke_vector.irp.f` final_grid_points(1:3,j) = (/ x, y, z /) of the jth grid point - final_weight_functions_at_final_grid_points(i) = Total weight function of the ith grid point which contains the Lebedev, Voronoi and radial weights contributions + final_weight_at_r_vector(i) = Total weight function of the ith grid point which contains the Lebedev, Voronoi and radial weights contributions index_final_points(1:3,i) = gives the angular, radial and atomic indices associated to the ith grid point index_final_points_reverse(i,j,k) = index of the grid point having i as angular, j as radial and l as atomic indices @@ -236,14 +236,14 @@ Providers .. code:: text double precision, allocatable :: final_grid_points (3,n_points_final_grid) - double precision, allocatable :: final_weight_functions_at_final_grid_points (n_points_final_grid) + double precision, allocatable :: final_weight_at_r_vector (n_points_final_grid) integer, allocatable :: index_final_points (3,n_points_final_grid) integer, allocatable :: index_final_points_reverse (n_points_integration_angular,n_points_radial_grid,nucl_num) File: :file:`grid_becke_vector.irp.f` final_grid_points(1:3,j) = (/ x, y, z /) of the jth grid point - final_weight_functions_at_final_grid_points(i) = Total weight function of the ith grid point which contains the Lebedev, Voronoi and radial weights contributions + final_weight_at_r_vector(i) = Total weight function of the ith grid point which contains the Lebedev, Voronoi and radial weights contributions index_final_points(1:3,i) = gives the angular, radial and atomic indices associated to the ith grid point index_final_points_reverse(i,j,k) = index of the grid point having i as angular, j as radial and l as atomic indices @@ -289,11 +289,11 @@ Providers -.. c:var:: weight_functions_at_grid_points +.. c:var:: weight_at_r .. code:: text - double precision, allocatable :: weight_functions_at_grid_points (n_points_integration_angular,n_points_radial_grid,nucl_num) + double precision, allocatable :: weight_at_r (n_points_integration_angular,n_points_radial_grid,nucl_num) File: :file:`grid_becke.irp.f` diff --git a/docs/source/modules/davidson.rst b/docs/source/modules/davidson.rst index b398a920..4a3755ea 100644 --- a/docs/source/modules/davidson.rst +++ b/docs/source/modules/davidson.rst @@ -189,7 +189,7 @@ Providers File: :file:`u0_h_u0.irp.f` - Energy of the current wave function + Electronic energy of the current wave function diff --git a/docs/source/modules/determinants.rst b/docs/source/modules/determinants.rst index 5c2ff86f..aab901df 100644 --- a/docs/source/modules/determinants.rst +++ b/docs/source/modules/determinants.rst @@ -3149,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/fci.rst b/docs/source/modules/fci.rst index 98b1f8f1..6f36b957 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/hartree_fock.rst b/docs/source/modules/hartree_fock.rst index 04aab811..8610eecc 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 3967e021..d497f7a4 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 7eb3ec6e..58c89250 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/perturbation.rst b/docs/source/modules/perturbation.rst index 09bcc0e8..cf12baf7 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 cf1c5c64..fe4e38ae 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 62c778f0..634ecb61 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/slave.rst b/docs/source/modules/slave.rst index 74b75541..31cbd7f1 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` diff --git a/src/README.rst b/src/README.rst index 7d7560ea..9b987305 100644 --- a/src/README.rst +++ b/src/README.rst @@ -1,112 +1,3 @@ -====================== -Programming guidelines -====================== - -Each module (directory) contains the following: - -* A ``README.rst`` file to document the current module. -* An ``ASSUMPTIONS.rst`` file. This file should document all the implicit - assumptions used in the module. For example, if the atomic orbitals are - assumed to be normalized, this should be mentioned in the - ``AOs/ASSUMPTIONS.rst`` file. -* A ``NEEDED_MODULES`` file which contains the list of modules on which the - current module depends -* A set of ``.irp.f`` files containing provider, subroutines and functions -* A ``Makefile`` that should compile -* Optionally some ``*.ezfio_config`` configuration files for the EZFIO - library - -A new module may be created by invoking the ``create_module.sh`` script. - -Every subroutine, function or provider should be documented using the -BEGIN_DOC ... END_DOC block. The documentation should be written in -ReStructured Text format to enable the automatic generation of the Sphinx -documentation. - -When the current module depends on other modules, the list of modules should -be added in the ``NEEDED_MODULES`` file. - - -Creating a new module -===================== - -Every new module should be created using the interactive ``create_module.sh`` -script located in the ``${QP_ROOT}/scripts`` directory. This will create -all the required files with correct templates. - - -Makefiles -========= - -Use the structure of Makefiles provided by the ``create_module.sh`` script. If -you need to re-create the Makefile, you can use the ``create_Makefile.sh`` -script in the current module directory. - -If you need to add some Fortran or C files that should not be tracked by IRPF90, -you have to add them manually to the Makefile in the ``SRC`` variable. -You also need to add the corresponding ``*.o`` file prefixed by ``IRPF90_temp/``. -For example - -.. code-block:: Makefile - - SRC=map_module.f90 - OBJ=IRPF90_temp/map_module.o - - - -Input data -========== - -Every program is supposed to use an EZFIO database containing all the -persistent data. This database can be modified in using the generated Fortran -functions or the generated Python module. - -The definition of the data needed by the module should be put in the -``*.ezfio_config`` file. - -Input data can also be read from the standard input to enable the use of -a program with a pipe, but the read statements should be present **only** in -the main program. - - -Output data -=========== - -Print to stdout statements should only appear in programs, not in providers, -subroutines or functions. This enables the possibility easily use the programs -with pipes. - -To print, you should write in an output file provided by the ``Output`` -module. Every module has its own output file. Before printing something, -a timestamp should be put in the output with the ``write_time`` function. -This allows an external script to read all the pieces of the output files -and put them in a sequential order. The format of the output should be -in ReStructured Text for easy transformation of the output data to pdf, -HTML, man, etc. - - -Creating a shell script -======================= - -Shell scripts should be located in the ``${QP_ROOT}/scripts`` directory. -Relative paths should be avoided as much as possible, and the result of commands -should be always checked. For example, when creating a directory the existence -of the directory has to be checked. - - -Documentation -============= - -.. Do not edit this section. It was auto-generated from the -.. NEEDED_MODULES file. - - - -Needed Modules -============== - -.. Do not edit this section. It was auto-generated from the -.. NEEDED_MODULES file. - -* `Utils `_ - +========================== +The core modules of the QP +========================== diff --git a/src/mo_two_e_integrals/NEED b/src/mo_two_e_integrals/NEED index b7f0c201..df8ba165 100644 --- a/src/mo_two_e_integrals/NEED +++ b/src/mo_two_e_integrals/NEED @@ -1,4 +1,5 @@ ao_one_e_integrals +mo_one_e_integrals ao_two_e_integrals pseudo bitmask