10
0
mirror of https://github.com/LCPQ/quantum_package synced 2024-12-22 04:14:07 +01:00
quantum_package/plugins/Perturbation
2019-02-05 21:59:26 +01:00
..
dipole_moment.irp.f Changed i_H_psi to i_H_psi_minilist when minilist is used 2015-11-20 09:26:45 +01:00
exc_max.irp.f Move into plugins 2015-06-17 18:23:56 +02:00
EZFIO.cfg Modifs Manus 2017-10-27 12:20:00 +02:00
NEEDED_CHILDREN_MODULES Revert "merge with main branch" 2017-04-20 08:48:06 +02:00
pert_sc2.irp.f Extended template for pt2 2015-11-24 11:40:49 +01:00
pert_single.irp.f simple untested minilist for all perturbations 2015-11-19 17:18:08 +01:00
perturbation.irp.f Move into plugins 2015-06-17 18:23:56 +02:00
perturbation.template.f Normalize in input of Davidson 2016-09-26 20:34:16 +02:00
pt2_equations.irp.f qdpt test 2017-11-28 17:11:44 +01:00
pt2_new.irp.f Revert "merge with main branch" 2017-04-20 08:48:06 +02:00
README.rst Fixed EZFIO 2019-02-05 21:59:26 +01:00
selection.irp.f Removed output variables 2018-01-05 14:38:32 +00:00
tree_dependency.png --amend 2016-09-22 12:15:20 +02:00
var_pt2_ratio_provider.irp.f Forgot file 2017-04-21 23:18:09 +02:00

===================
Perturbation Module
===================


All subroutines in `*.irp.f` starting with ``pt2_`` in the current directory are
perturbation computed using the routine ``i_H_psi``. Other cases are not allowed.
The arguments of the ``pt2_`` are always:

  subroutine pt2_...(                                                &
      psi_ref,                                                       &
      psi_ref_coefs,                                                 &
      E_refs,                                                        &
      det_pert,                                                      &
      c_pert,                                                        &
      e_2_pert,                                                      &
      H_pert_diag,                                                   &
      Nint,                                                          &
      ndet,                                                          &
      n_st )


  integer, intent(in) :: Nint,ndet,n_st
  integer(bit_kind), intent(in)  :: psi_ref(Nint,2,ndet)
  double precision , intent(in)  :: psi_ref_coefs(ndet,n_st)
  double precision , intent(in)  :: E_refs(n_st)
  integer(bit_kind), intent(in)  :: det_pert(Nint,2)
  double precision , intent(out) :: c_pert(n_st),e_2_pert(n_st),H_pert_diag


psi_ref
  bitstring of the determinants present in the various n_st states
 
psi_ref_coefs
  coefficients of the determinants on the various n_st states
 
E_refs
  Energy of the various n_st states
 
det_pert
  Perturber determinant

c_pert
  Pertrubative coefficients for the various states
 
e_2_pert
  Perturbative energetic contribution for the various states

H_pert_diag
  Diagonal H matrix element of the perturber

Nint
  Should be equal to N_int

Ndet
  Number of determinants `i` in Psi on which we apply <det_pert|Hi>

N_st
  Number of states

Assumptions
===========

* This is not allowed:

  subroutine &
    pt2_....


Needed Modules
==============

.. Do not edit this section It was auto-generated
.. by the `update_README.py` script.

.. image:: tree_dependency.png

* `Properties <http://github.com/LCPQ/quantum_package/tree/master/src/Properties>`_
* `Hartree_Fock <http://github.com/LCPQ/quantum_package/tree/master/src/Hartree_Fock>`_

Needed Modules
==============
.. Do not edit this section It was auto-generated
.. by the `update_README.py` script.


.. image:: tree_dependency.png

* `Determinants <http://github.com/LCPQ/quantum_package/tree/master/src/Determinants>`_
* `Properties <http://github.com/LCPQ/quantum_package/tree/master/plugins/Properties>`_
* `Hartree_Fock <http://github.com/LCPQ/quantum_package/tree/master/plugins/Hartree_Fock>`_
* `Davidson <http://github.com/LCPQ/quantum_package/tree/master/src/Davidson>`_
* `MRPT_Utils <http://github.com/LCPQ/quantum_package/tree/master/plugins/MRPT_Utils>`_

Documentation
=============
.. Do not edit this section It was auto-generated
.. by the `update_README.py` script.


`correlation_energy_ratio_max <http://github.com/LCPQ/quantum_package/tree/master/plugins/Perturbation/ezfio_interface.irp.f#L40>`_
  The selection process stops at a fixed correlation ratio (useful for getting same accuracy between molecules)
  Defined as (E_CI-E_HF)/ (E_CI+PT2 - E_HF). (E_HF) is not required.


`do_pt2 <http://github.com/LCPQ/quantum_package/tree/master/plugins/Perturbation/ezfio_interface.irp.f#L178>`_
  If true, compute the PT2


`fill_h_apply_buffer_selection <http://github.com/LCPQ/quantum_package/tree/master/plugins/Perturbation/selection.irp.f#L1>`_
  Fill the H_apply buffer with determiants for the selection


`i_h_psi_pert_new_minilist <http://github.com/LCPQ/quantum_package/tree/master/plugins/Perturbation/pt2_new.irp.f#L1>`_
  Computes <i|H|Psi> = \sum_J c_J <i|H|J>.
  .br
  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.


`max_exc_pert <http://github.com/LCPQ/quantum_package/tree/master/plugins/Perturbation/exc_max.irp.f#L1>`_
  Undocumented


perturb_buffer_by_mono_decontracted
  Applly pertubration ``decontracted`` to the buffer of determinants generated in the H_apply
  routine.


perturb_buffer_by_mono_dipole_moment_z
  Applly pertubration ``dipole_moment_z`` to the buffer of determinants generated in the H_apply
  routine.


perturb_buffer_by_mono_dummy
  Applly pertubration ``dummy`` to the buffer of determinants generated in the H_apply
  routine.


perturb_buffer_by_mono_epstein_nesbet
  Applly pertubration ``epstein_nesbet`` to the buffer of determinants generated in the H_apply
  routine.


perturb_buffer_by_mono_epstein_nesbet_2x2
  Applly pertubration ``epstein_nesbet_2x2`` to the buffer of determinants generated in the H_apply
  routine.


perturb_buffer_by_mono_epstein_nesbet_2x2_no_ci_diag
  Applly pertubration ``epstein_nesbet_2x2_no_ci_diag`` to the buffer of determinants generated in the H_apply
  routine.


perturb_buffer_by_mono_epstein_nesbet_sc2
  Applly pertubration ``epstein_nesbet_sc2`` to the buffer of determinants generated in the H_apply
  routine.


perturb_buffer_by_mono_epstein_nesbet_sc2_no_projected
  Applly pertubration ``epstein_nesbet_sc2_no_projected`` to the buffer of determinants generated in the H_apply
  routine.


perturb_buffer_by_mono_epstein_nesbet_sc2_projected
  Applly pertubration ``epstein_nesbet_sc2_projected`` to the buffer of determinants generated in the H_apply
  routine.


perturb_buffer_by_mono_h_core
  Applly pertubration ``h_core`` to the buffer of determinants generated in the H_apply
  routine.


perturb_buffer_by_mono_moller_plesset
  Applly pertubration ``moller_plesset`` to the buffer of determinants generated in the H_apply
  routine.


perturb_buffer_by_mono_moller_plesset_general
  Applly pertubration ``moller_plesset_general`` to the buffer of determinants generated in the H_apply
  routine.


perturb_buffer_by_mono_qdpt
  Applly pertubration ``qdpt`` to the buffer of determinants generated in the H_apply
  routine.


perturb_buffer_decontracted
  Applly pertubration ``decontracted`` to the buffer of determinants generated in the H_apply
  routine.


perturb_buffer_dipole_moment_z
  Applly pertubration ``dipole_moment_z`` to the buffer of determinants generated in the H_apply
  routine.


perturb_buffer_dummy
  Applly pertubration ``dummy`` to the buffer of determinants generated in the H_apply
  routine.


perturb_buffer_epstein_nesbet
  Applly pertubration ``epstein_nesbet`` to the buffer of determinants generated in the H_apply
  routine.


perturb_buffer_epstein_nesbet_2x2
  Applly pertubration ``epstein_nesbet_2x2`` to the buffer of determinants generated in the H_apply
  routine.


perturb_buffer_epstein_nesbet_2x2_no_ci_diag
  Applly pertubration ``epstein_nesbet_2x2_no_ci_diag`` to the buffer of determinants generated in the H_apply
  routine.


perturb_buffer_epstein_nesbet_sc2
  Applly pertubration ``epstein_nesbet_sc2`` to the buffer of determinants generated in the H_apply
  routine.


perturb_buffer_epstein_nesbet_sc2_no_projected
  Applly pertubration ``epstein_nesbet_sc2_no_projected`` to the buffer of determinants generated in the H_apply
  routine.


perturb_buffer_epstein_nesbet_sc2_projected
  Applly pertubration ``epstein_nesbet_sc2_projected`` to the buffer of determinants generated in the H_apply
  routine.


perturb_buffer_h_core
  Applly pertubration ``h_core`` to the buffer of determinants generated in the H_apply
  routine.


perturb_buffer_moller_plesset
  Applly pertubration ``moller_plesset`` to the buffer of determinants generated in the H_apply
  routine.


perturb_buffer_moller_plesset_general
  Applly pertubration ``moller_plesset_general`` to the buffer of determinants generated in the H_apply
  routine.


perturb_buffer_qdpt
  Applly pertubration ``qdpt`` to the buffer of determinants generated in the H_apply
  routine.


`pt2_absolute_error <http://github.com/LCPQ/quantum_package/tree/master/plugins/Perturbation/ezfio_interface.irp.f#L144>`_
  Stop stochastic PT2 when the statistical error is smaller than PT2_absolute_error


`pt2_decontracted <http://github.com/LCPQ/quantum_package/tree/master/plugins/Perturbation/pt2_equations.irp.f_template_606#L125>`_
  Undocumented


`pt2_dipole_moment_z <http://github.com/LCPQ/quantum_package/tree/master/plugins/Perturbation/dipole_moment.irp.f#L1>`_
  compute the perturbatibe contribution to the dipole moment of one determinant
  .br
  for the various n_st states, at various level of theory.
  .br
  c_pert(i) = <psi(i)|H|det_pert>/(<psi(i)|H|psi(i)> - <det_pert|H|det_pert>)
  .br
  e_2_pert(i) = c_pert(i) * <det_pert|Z|psi(i)>
  .br
  H_pert_diag(i) = c_pert(i)^2 * <det_pert|Z|det_pert>
  .br
  To get the contribution of the first order :
  .br
  <Z_1> = sum(over i)  e_2_pert(i)
  .br
  To get the contribution of the diagonal elements of the second order :
  .br
  [ <Z_0> + <Z_1> + sum(over i)  H_pert_diag(i) ] / [1. + sum(over i) c_pert(i) **2]
  .br


`pt2_dummy <http://github.com/LCPQ/quantum_package/tree/master/plugins/Perturbation/pt2_equations.irp.f_template_606#L673>`_
  Dummy perturbation to add all connected determinants.


`pt2_epstein_nesbet <http://github.com/LCPQ/quantum_package/tree/master/plugins/Perturbation/pt2_equations.irp.f_template_606#L3>`_
  compute the standard Epstein-Nesbet perturbative first order coefficient and second order energetic contribution
  .br
  for the various N_st states.
  .br
  c_pert(i) = <psi(i)|H|det_pert>/( E(i) - <det_pert|H|det_pert> )
  .br
  e_2_pert(i) = <psi(i)|H|det_pert>^2/( E(i) - <det_pert|H|det_pert> )
  .br


`pt2_epstein_nesbet_2x2 <http://github.com/LCPQ/quantum_package/tree/master/plugins/Perturbation/pt2_equations.irp.f_template_606#L167>`_
  compute the Epstein-Nesbet 2x2 diagonalization coefficient and energetic contribution
  .br
  for the various N_st states.
  .br
  e_2_pert(i) = 0.5 * (( <det_pert|H|det_pert> -  E(i) )  - sqrt( ( <det_pert|H|det_pert> -  E(i)) ^2 + 4 <psi(i)|H|det_pert>^2  )
  .br
  c_pert(i) = e_2_pert(i)/ <psi(i)|H|det_pert>
  .br


`pt2_epstein_nesbet_2x2_no_ci_diag <http://github.com/LCPQ/quantum_package/tree/master/plugins/Perturbation/pt2_equations.irp.f_template_606#L247>`_
  compute the Epstein-Nesbet 2x2 diagonalization coefficient and energetic contribution
  .br
  for the various N_st states.
  .br
  e_2_pert(i) = 0.5 * (( <det_pert|H|det_pert> -  E(i) )  - sqrt( ( <det_pert|H|det_pert> -  E(i)) ^2 + 4 <psi(i)|H|det_pert>^2  )
  .br
  c_pert(i) = e_2_pert(i)/ <psi(i)|H|det_pert>
  .br


`pt2_epstein_nesbet_sc2 <http://github.com/LCPQ/quantum_package/tree/master/plugins/Perturbation/pt2_equations.irp.f_template_606#L617>`_
  compute the standard Epstein-Nesbet perturbative first order coefficient and second order energetic contribution
  .br
  for the various N_st states, but with the CISD_SC2 energies and coefficients
  .br
  c_pert(i) = <psi(i)|H|det_pert>/( E(i) - <det_pert|H|det_pert> )
  .br
  e_2_pert(i) = <psi(i)|H|det_pert>^2/( E(i) - <det_pert|H|det_pert> )
  .br


`pt2_epstein_nesbet_sc2_no_projected <http://github.com/LCPQ/quantum_package/tree/master/plugins/Perturbation/pt2_equations.irp.f_template_606#L538>`_
  compute the Epstein-Nesbet perturbative first order coefficient and second order energetic contribution
  .br
  for the various N_st states,
  .br
  but  with the correction in the denominator
  .br
  comming from the interaction of that determinant with all the others determinants
  .br
  that can be repeated by repeating all the double excitations
  .br
  : you repeat all the correlation energy already taken into account in electronic_energy(1)
  .br
  that could be repeated to this determinant.
  .br
  In addition, for the perturbative energetic contribution you have the standard second order
  .br
  e_2_pert = <psi_i|H|det_pert>^2/(Delta_E)
  .br
  and also the purely projected contribution
  .br
  H_pert_diag = <HF|H|det_pert> c_pert


`pt2_epstein_nesbet_sc2_projected <http://github.com/LCPQ/quantum_package/tree/master/plugins/Perturbation/pt2_equations.irp.f_template_606#L443>`_
  compute the Epstein-Nesbet perturbative first order coefficient and second order energetic contribution
  .br
  for the various N_st states,
  .br
  but  with the correction in the denominator
  .br
  comming from the interaction of that determinant with all the others determinants
  .br
  that can be repeated by repeating all the double excitations
  .br
  : you repeat all the correlation energy already taken into account in electronic_energy(1)
  .br
  that could be repeated to this determinant.
  .br
  In addition, for the perturbative energetic contribution you have the standard second order
  .br
  e_2_pert = <psi_i|H|det_pert>^2/(Delta_E)
  .br
  and also the purely projected contribution
  .br
  H_pert_diag = <HF|H|det_pert> c_pert


`pt2_h_core <http://github.com/LCPQ/quantum_package/tree/master/plugins/Perturbation/pert_single.irp.f#L1>`_
  compute the standard Epstein-Nesbet perturbative first order coefficient and second order energetic contribution
  .br
  for the various N_st states.
  .br
  c_pert(i) = <psi(i)|H|det_pert>/( E(i) - <det_pert|H|det_pert> )
  .br
  e_2_pert(i) = <psi(i)|H|det_pert>^2/( E(i) - <det_pert|H|det_pert> )
  .br


`pt2_max <http://github.com/LCPQ/quantum_package/tree/master/plugins/Perturbation/ezfio_interface.irp.f#L75>`_
  The selection process stops when the largest PT2 (for all the state) is lower
  than pt2_max in absolute value


`pt2_moller_plesset <http://github.com/LCPQ/quantum_package/tree/master/plugins/Perturbation/pt2_equations.irp.f_template_606#L311>`_
  compute the standard Moller-Plesset perturbative first order coefficient and second order energetic contribution
  .br
  for the various n_st states.
  .br
  c_pert(i) = <psi(i)|H|det_pert>/(difference of orbital energies)
  .br
  e_2_pert(i) = <psi(i)|H|det_pert>^2/(difference of orbital energies)
  .br


`pt2_moller_plesset_general <http://github.com/LCPQ/quantum_package/tree/master/plugins/Perturbation/pt2_equations.irp.f_template_606#L376>`_
  compute the general Moller-Plesset perturbative first order coefficient and second order energetic contribution
  .br
  for the various n_st states.
  .br
  c_pert(i) = <psi(i)|H|det_pert>/(difference of orbital energies)
  .br
  e_2_pert(i) = <psi(i)|H|det_pert>^2/(difference of orbital energies)
  .br


`pt2_qdpt <http://github.com/LCPQ/quantum_package/tree/master/plugins/Perturbation/pt2_equations.irp.f_template_606#L60>`_
  compute the QDPT first order coefficient and second order energetic contribution
  .br
  for the various N_st states.
  .br
  c_pert(i) = <psi(i)|H|det_pert>/( <psi(i)|H|psi(i)> - <det_pert|H|det_pert> )
  .br


`pt2_relative_error <http://github.com/LCPQ/quantum_package/tree/master/plugins/Perturbation/ezfio_interface.irp.f#L6>`_
  Stop stochastic PT2 when the relative error is smaller than PT2_relative_error


`remove_small_contributions <http://github.com/LCPQ/quantum_package/tree/master/plugins/Perturbation/selection.irp.f#L77>`_
  Remove determinants with small contributions. N_states is assumed to be
  provided.


`repeat_all_e_corr <http://github.com/LCPQ/quantum_package/tree/master/plugins/Perturbation/pert_sc2.irp.f#L1>`_
  Undocumented


`selection_criterion <http://github.com/LCPQ/quantum_package/tree/master/plugins/Perturbation/selection.irp.f#L64>`_
  Threshold to select determinants. Set by selection routines.


`selection_criterion_factor <http://github.com/LCPQ/quantum_package/tree/master/plugins/Perturbation/selection.irp.f#L66>`_
  Threshold to select determinants. Set by selection routines.


`selection_criterion_min <http://github.com/LCPQ/quantum_package/tree/master/plugins/Perturbation/selection.irp.f#L65>`_
  Threshold to select determinants. Set by selection routines.


`threshold_generators_pt2 <http://github.com/LCPQ/quantum_package/tree/master/plugins/Perturbation/ezfio_interface.irp.f#L110>`_
  Thresholds on generators (fraction of the norm) for final PT2 calculation


`threshold_selectors_pt2 <http://github.com/LCPQ/quantum_package/tree/master/plugins/Perturbation/ezfio_interface.irp.f#L212>`_
  Thresholds on selectors (fraction of the norm) for final PT2 calculation


`var_pt2_ratio <http://github.com/LCPQ/quantum_package/tree/master/plugins/Perturbation/var_pt2_ratio_provider.irp.f#L1>`_
  The selection process stops when the energy ratio variational/(variational+PT2)
  is equal to var_pt2_ratio