10
0
mirror of https://github.com/LCPQ/quantum_package synced 2024-06-02 11:25:26 +02:00
quantum_package/docs/source/modules/cisd.rst
2019-01-11 19:37:06 +01:00

169 lines
4.8 KiB
ReStructuredText
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

.. _cisd:
.. program:: cisd
.. default-role:: option
====
cisd
====
This module contains a CI of single and double excitations.
The user point of view
----------------------
The :command:`cisd` program performs the CI of the ROHF-like + all single and double excitations on top of it.
This program can be very useful to :
* **Ground state calculations**: generate a guess for the ground state wave function if one is not sure that the :c:func:`scf` program gave the lowest SCF solution. In combination with :c:func:`save_natorb` it can produce new |MOs| in order to reperform an :c:func:`scf` optimization.
* **Excited states calculations**: generate guess for all the :option:`determinants n_states` wave functions, that will be used by the :c:func:`fci` program.
The main keywords/options to be used are:
* :option:`determinants n_states` : number of states to consider for the |cisd| calculation
* :option:`determinants s2_eig` : force all states to have the desired value of :math:`S^2`
* :option:`determinants expected_s2` : desired value of :math:`S^2`
The programmer point of view
----------------------------
This module have been built by setting the following rules:
* The only generator determinant is the Hartree-Fock (single-reference method)
* All generated determinants are included in the wave function (no perturbative
selection)
These rules are set in the ``H_apply.irp.f`` file.
EZFIO parameters
----------------
.. option:: energy
Variational |CISD| energy
Subroutines / functions
-----------------------
.. c:function:: cisd
.. code:: text
subroutine cisd
File: :file:`cisd.irp.f`
Configuration Interaction with Single and Double excitations.
This program takes a reference Slater determinant of ROHF-like occupancy,
and performs all single and double excitations on top of it, disregarding spatial symmetry and compute the "n_states" lowest eigenstates of that CI matrix (see :option:`determinants n_states`).
This program can be useful in many cases:
* GROUND STATE CALCULATION: if even after a :c:func:`cis` calculation, natural orbitals (see :c:func:`save_natorb`) and then :c:func:`scf` optimization, you are not sure to have the lowest scf solution, do the same strategy with the :c:func:`cisd` executable instead of the :c:func:`cis` exectuable to generate the natural orbitals as a guess for the :c:func:`scf`.
* EXCITED STATES CALCULATIONS: the lowest excited states are much likely to be dominanted by single- or double-excitations. Therefore, running a :c:func:`cisd` will save the "n_states" lowest states within the CISD space in the EZFIO folder, which can afterward be used as guess wave functions for a further multi-state fci calculation if you specify "read_wf" = True before running the fci executable (see :option:`determinants read_wf`). Also, if you specify "s2_eig" = True, the cisd will only retain states having the good value :math:`S^2` value (see :option:`determinants expected_s2` and :option:`determinants s2_eig`). If "s2_eig" = False, it will take the lowest n_states, whatever multiplicity they are.
Note: if you would like to discard some orbitals, use :ref:`qp_set_mo_class` to specify:
* "core" orbitals which will be always doubly occupied
* "act" orbitals where an electron can be either excited from or to
* "del" orbitals which will be never occupied
.. c:function:: h_apply_cisd
.. code:: text
subroutine H_apply_cisd()
File: :file:`h_apply.irp.f_shell_8`
Calls H_apply on the |HF| determinant and selects all connected single and double excitations (of the same symmetry). Auto-generated by the ``generate_h_apply`` script.
.. c:function:: h_apply_cisd_diexc
.. code:: text
subroutine H_apply_cisd_diexc(key_in, key_prev, hole_1,particl_1, hole_2, particl_2, fock_diag_tmp, i_generator, iproc_in )
File: :file:`h_apply.irp.f_shell_8`
.. c:function:: h_apply_cisd_diexcorg
.. code:: text
subroutine H_apply_cisd_diexcOrg(key_in,key_mask,hole_1,particl_1,hole_2, particl_2, fock_diag_tmp, i_generator, iproc_in )
File: :file:`h_apply.irp.f_shell_8`
Generate all double excitations of key_in using the bit masks of holes and particles. Assume N_int is already provided.
.. c:function:: h_apply_cisd_diexcp
.. code:: text
subroutine H_apply_cisd_diexcP(key_in, fs1, fh1, particl_1, fs2, fh2, particl_2, fock_diag_tmp, i_generator, iproc_in )
File: :file:`h_apply.irp.f_shell_8`
.. c:function:: h_apply_cisd_monoexc
.. code:: text
subroutine H_apply_cisd_monoexc(key_in, hole_1,particl_1,fock_diag_tmp,i_generator,iproc_in )
File: :file:`h_apply.irp.f_shell_8`
Generate all single excitations of key_in using the bit masks of holes and particles. Assume N_int is already provided.