10
0
mirror of https://github.com/LCPQ/quantum_package synced 2024-11-18 12:03:57 +01:00
quantum_package/plugins/Perturbation/README.rst

359 lines
12 KiB
ReStructuredText
Raw Normal View History

2014-05-17 14:20:55 +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_....
2015-07-28 16:45:45 +02:00
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>`_
2015-07-28 17:02:00 +02:00
Needed Modules
==============
.. Do not edit this section It was auto-generated
.. by the `update_README.py` script.
.. image:: tree_dependency.png
2015-07-28 17:31:54 +02:00
* `Properties <http://github.com/LCPQ/quantum_package/tree/master/plugins/Properties>`_
* `Hartree_Fock <http://github.com/LCPQ/quantum_package/tree/master/plugins/Hartree_Fock>`_
2016-11-01 23:06:05 +01:00
* `Davidson <http://github.com/LCPQ/quantum_package/tree/master/src/Davidson>`_
2015-07-28 17:02:00 +02:00
Documentation
=============
.. Do not edit this section It was auto-generated
.. by the `update_README.py` script.
2015-07-28 17:31:54 +02:00
`do_pt2_end <http://github.com/LCPQ/quantum_package/tree/master/plugins/Perturbation/ezfio_interface.irp.f#L6>`_
2015-06-04 12:15:54 +02:00
If true, compute the PT2 at the end of the selection
2015-07-28 17:31:54 +02:00
`fill_h_apply_buffer_selection <http://github.com/LCPQ/quantum_package/tree/master/plugins/Perturbation/selection.irp.f#L1>`_
2015-06-04 12:15:54 +02:00
Fill the H_apply buffer with determiants for the selection
2015-07-28 17:31:54 +02:00
`max_exc_pert <http://github.com/LCPQ/quantum_package/tree/master/plugins/Perturbation/exc_max.irp.f#L1>`_
2015-06-04 12:15:54 +02:00
Undocumented
2016-11-01 23:06:05 +01:00
perturb_buffer_by_mono_dipole_moment_z
Applly pertubration ``dipole_moment_z`` to the buffer of determinants generated in the H_apply
2015-06-04 12:15:54 +02:00
routine.
2016-11-01 23:06:05 +01:00
perturb_buffer_by_mono_dummy
Applly pertubration ``dummy`` to the buffer of determinants generated in the H_apply
2015-06-04 12:15:54 +02:00
routine.
2015-11-08 21:37:50 +01:00
perturb_buffer_by_mono_epstein_nesbet
2015-06-04 12:15:54 +02:00
Applly pertubration ``epstein_nesbet`` to the buffer of determinants generated in the H_apply
routine.
2015-11-08 21:37:50 +01:00
perturb_buffer_by_mono_epstein_nesbet_2x2
2015-06-04 12:15:54 +02:00
Applly pertubration ``epstein_nesbet_2x2`` to the buffer of determinants generated in the H_apply
routine.
2015-11-08 21:37:50 +01:00
perturb_buffer_by_mono_epstein_nesbet_sc2
2015-06-04 12:15:54 +02:00
Applly pertubration ``epstein_nesbet_sc2`` to the buffer of determinants generated in the H_apply
routine.
2015-11-08 21:37:50 +01:00
perturb_buffer_by_mono_epstein_nesbet_sc2_no_projected
2015-06-04 12:15:54 +02:00
Applly pertubration ``epstein_nesbet_sc2_no_projected`` to the buffer of determinants generated in the H_apply
routine.
2015-11-08 21:37:50 +01:00
perturb_buffer_by_mono_epstein_nesbet_sc2_projected
2015-06-04 12:15:54 +02:00
Applly pertubration ``epstein_nesbet_sc2_projected`` to the buffer of determinants generated in the H_apply
routine.
2015-11-08 21:37:50 +01:00
perturb_buffer_by_mono_h_core
2015-06-04 12:15:54 +02:00
Applly pertubration ``h_core`` to the buffer of determinants generated in the H_apply
routine.
2015-11-08 21:37:50 +01:00
perturb_buffer_by_mono_moller_plesset
2015-06-04 12:15:54 +02:00
Applly pertubration ``moller_plesset`` to the buffer of determinants generated in the H_apply
routine.
2016-11-01 23:06:05 +01:00
perturb_buffer_dipole_moment_z
Applly pertubration ``dipole_moment_z`` to the buffer of determinants generated in the H_apply
2015-06-04 12:15:54 +02:00
routine.
2016-11-01 23:06:05 +01:00
perturb_buffer_dummy
Applly pertubration ``dummy`` to the buffer of determinants generated in the H_apply
2015-06-04 12:15:54 +02:00
routine.
2015-11-08 21:37:50 +01:00
perturb_buffer_epstein_nesbet
2015-06-04 12:15:54 +02:00
Applly pertubration ``epstein_nesbet`` to the buffer of determinants generated in the H_apply
routine.
2015-11-08 21:37:50 +01:00
perturb_buffer_epstein_nesbet_2x2
2015-06-04 12:15:54 +02:00
Applly pertubration ``epstein_nesbet_2x2`` to the buffer of determinants generated in the H_apply
routine.
2015-11-08 21:37:50 +01:00
perturb_buffer_epstein_nesbet_sc2
2015-06-04 12:15:54 +02:00
Applly pertubration ``epstein_nesbet_sc2`` to the buffer of determinants generated in the H_apply
routine.
2015-11-08 21:37:50 +01:00
perturb_buffer_epstein_nesbet_sc2_no_projected
2015-06-04 12:15:54 +02:00
Applly pertubration ``epstein_nesbet_sc2_no_projected`` to the buffer of determinants generated in the H_apply
routine.
2015-11-08 21:37:50 +01:00
perturb_buffer_epstein_nesbet_sc2_projected
2015-06-04 12:15:54 +02:00
Applly pertubration ``epstein_nesbet_sc2_projected`` to the buffer of determinants generated in the H_apply
routine.
2015-11-08 21:37:50 +01:00
perturb_buffer_h_core
2015-06-04 12:15:54 +02:00
Applly pertubration ``h_core`` to the buffer of determinants generated in the H_apply
routine.
2015-11-08 21:37:50 +01:00
perturb_buffer_moller_plesset
2015-06-04 12:15:54 +02:00
Applly pertubration ``moller_plesset`` to the buffer of determinants generated in the H_apply
routine.
2015-07-28 17:31:54 +02:00
`pt2_dipole_moment_z <http://github.com/LCPQ/quantum_package/tree/master/plugins/Perturbation/dipole_moment.irp.f#L1>`_
2015-06-04 12:15:54 +02:00
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
2016-11-01 23:06:05 +01:00
`pt2_dummy <http://github.com/LCPQ/quantum_package/tree/master/plugins/Perturbation/pt2_equations.irp.f_template_401#L420>`_
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_401#L3>`_
2014-05-21 16:37:54 +02:00
compute the standard Epstein-Nesbet perturbative first order coefficient and second order energetic contribution
.br
for the various N_st states.
2014-05-21 16:37:54 +02:00
.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
2015-06-04 12:15:54 +02:00
2016-11-01 23:06:05 +01:00
`pt2_epstein_nesbet_2x2 <http://github.com/LCPQ/quantum_package/tree/master/plugins/Perturbation/pt2_equations.irp.f_template_401#L60>`_
2014-05-21 16:37:54 +02:00
compute the Epstein-Nesbet 2x2 diagonalization coefficient and energetic contribution
.br
for the various N_st states.
2014-05-21 16:37:54 +02:00
.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
2015-06-04 12:15:54 +02:00
2016-11-01 23:06:05 +01:00
`pt2_epstein_nesbet_sc2 <http://github.com/LCPQ/quantum_package/tree/master/plugins/Perturbation/pt2_equations.irp.f_template_401#L364>`_
2015-06-04 12:15:54 +02:00
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
2016-11-01 23:06:05 +01:00
`pt2_epstein_nesbet_sc2_no_projected <http://github.com/LCPQ/quantum_package/tree/master/plugins/Perturbation/pt2_equations.irp.f_template_401#L285>`_
2015-06-04 12:15:54 +02:00
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
2016-09-22 12:15:20 +02:00
: you repeat all the correlation energy already taken into account in electronic_energy(1)
2015-06-04 12:15:54 +02:00
.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
2016-11-01 23:06:05 +01:00
`pt2_epstein_nesbet_sc2_projected <http://github.com/LCPQ/quantum_package/tree/master/plugins/Perturbation/pt2_equations.irp.f_template_401#L190>`_
2014-06-19 17:58:45 +02:00
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
2016-09-22 12:15:20 +02:00
: you repeat all the correlation energy already taken into account in electronic_energy(1)
2014-06-19 17:58:45 +02:00
.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
2015-07-28 17:31:54 +02:00
`pt2_h_core <http://github.com/LCPQ/quantum_package/tree/master/plugins/Perturbation/pert_single.irp.f#L1>`_
2015-06-04 12:15:54 +02:00
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
2016-11-01 23:06:05 +01:00
`pt2_max <http://github.com/LCPQ/quantum_package/tree/master/plugins/Perturbation/ezfio_interface.irp.f#L25>`_
2015-06-04 12:15:54 +02:00
The selection process stops when the largest PT2 (for all the state) is lower
than pt2_max in absolute value
2014-05-27 17:30:44 +02:00
2015-06-04 12:15:54 +02:00
2016-11-01 23:06:05 +01:00
`pt2_moller_plesset <http://github.com/LCPQ/quantum_package/tree/master/plugins/Perturbation/pt2_equations.irp.f_template_401#L121>`_
2015-06-04 12:15:54 +02:00
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
2016-09-22 12:15:20 +02:00
`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.
2014-05-27 00:21:32 +02:00
2015-06-04 12:15:54 +02:00
2015-11-25 03:05:49 +01:00
`repeat_all_e_corr <http://github.com/LCPQ/quantum_package/tree/master/plugins/Perturbation/pert_sc2.irp.f#L1>`_
2015-06-04 12:15:54 +02:00
Undocumented
2016-09-22 12:15:20 +02:00
`selection_criterion <http://github.com/LCPQ/quantum_package/tree/master/plugins/Perturbation/selection.irp.f#L64>`_
Threshold to select determinants. Set by selection routines.
2015-06-04 12:15:54 +02:00
2016-09-22 12:15:20 +02:00
`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.
2015-06-04 12:15:54 +02:00
2016-09-22 12:15:20 +02:00
`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.
2014-05-17 14:20:55 +02:00
2016-11-01 23:06:05 +01:00
`var_pt2_ratio <http://github.com/LCPQ/quantum_package/tree/master/plugins/Perturbation/ezfio_interface.irp.f#L45>`_
2015-06-04 12:15:54 +02:00
The selection process stops when the energy ratio variational/(variational+PT2)
is equal to var_pt2_ratio
2014-05-17 14:20:55 +02:00