qp2/docs/source/modules/selectors_utils.rst

650 lines
18 KiB
ReStructuredText

.. _module_selectors_utils:
.. program:: selectors_utils
.. default-role:: option
===============
selectors_utils
===============
Helper functions for selectors.
Providers
---------
.. c:var:: coef_hf_selector
File : :file:`selectors_utils/e_corr_selectors.irp.f`
.. code:: fortran
double precision :: coef_hf_selector
double precision :: inv_selectors_coef_hf
double precision :: inv_selectors_coef_hf_squared
double precision, allocatable :: e_corr_per_selectors (N_det_selectors)
double precision, allocatable :: i_h_hf_per_selectors (N_det_selectors)
double precision, allocatable :: delta_e_per_selector (N_det_selectors)
double precision :: e_corr_double_only
double precision :: e_corr_second_order
Correlation energy per determinant with respect to the Hartree-Fock determinant
for the all the double excitations in the selectors determinants.
E_corr_per_selectors(i) = :math:`\langle D_i | H | \text{HF}\rangle c(D_i)/c(HF)` if :math:`| D_i \rangle` is a double excitation.
E_corr_per_selectors(i) = -1000.d0 if it is not a double excitation
coef_hf_selector = coefficient of the Hartree Fock determinant in the selectors determinants
Needs:
.. hlist::
:columns: 3
* :c:data:`big_array_coulomb_integrals`
* :c:data:`big_array_coulomb_integrals`
* :c:data:`exc_degree_per_selectors`
* :c:data:`mo_integrals_map`
* :c:data:`mo_two_e_integrals_in_map`
* :c:data:`n_det_selectors`
* :c:data:`n_int`
* :c:data:`psi_selectors`
* :c:data:`ref_bitmask`
* :c:data:`ref_bitmask_energy`
.. c:var:: delta_e_per_selector
File : :file:`selectors_utils/e_corr_selectors.irp.f`
.. code:: fortran
double precision :: coef_hf_selector
double precision :: inv_selectors_coef_hf
double precision :: inv_selectors_coef_hf_squared
double precision, allocatable :: e_corr_per_selectors (N_det_selectors)
double precision, allocatable :: i_h_hf_per_selectors (N_det_selectors)
double precision, allocatable :: delta_e_per_selector (N_det_selectors)
double precision :: e_corr_double_only
double precision :: e_corr_second_order
Correlation energy per determinant with respect to the Hartree-Fock determinant
for the all the double excitations in the selectors determinants.
E_corr_per_selectors(i) = :math:`\langle D_i | H | \text{HF}\rangle c(D_i)/c(HF)` if :math:`| D_i \rangle` is a double excitation.
E_corr_per_selectors(i) = -1000.d0 if it is not a double excitation
coef_hf_selector = coefficient of the Hartree Fock determinant in the selectors determinants
Needs:
.. hlist::
:columns: 3
* :c:data:`big_array_coulomb_integrals`
* :c:data:`big_array_coulomb_integrals`
* :c:data:`exc_degree_per_selectors`
* :c:data:`mo_integrals_map`
* :c:data:`mo_two_e_integrals_in_map`
* :c:data:`n_det_selectors`
* :c:data:`n_int`
* :c:data:`psi_selectors`
* :c:data:`ref_bitmask`
* :c:data:`ref_bitmask_energy`
.. c:var:: double_index_selectors
File : :file:`selectors_utils/e_corr_selectors.irp.f`
.. code:: fortran
integer, allocatable :: exc_degree_per_selectors (N_det_selectors)
integer, allocatable :: double_index_selectors (N_det_selectors)
integer :: n_double_selectors
Degree of excitation respect to Hartree Fock for the wave function
for the all the selectors determinants.
double_index_selectors = list of the index of the double excitations
n_double_selectors = number of double excitations in the selectors determinants
Needs:
.. hlist::
:columns: 3
* :c:data:`n_det_selectors`
* :c:data:`n_int`
* :c:data:`psi_selectors`
* :c:data:`ref_bitmask`
Needed by:
.. hlist::
:columns: 3
* :c:data:`coef_hf_selector`
.. c:var:: e_corr_double_only
File : :file:`selectors_utils/e_corr_selectors.irp.f`
.. code:: fortran
double precision :: coef_hf_selector
double precision :: inv_selectors_coef_hf
double precision :: inv_selectors_coef_hf_squared
double precision, allocatable :: e_corr_per_selectors (N_det_selectors)
double precision, allocatable :: i_h_hf_per_selectors (N_det_selectors)
double precision, allocatable :: delta_e_per_selector (N_det_selectors)
double precision :: e_corr_double_only
double precision :: e_corr_second_order
Correlation energy per determinant with respect to the Hartree-Fock determinant
for the all the double excitations in the selectors determinants.
E_corr_per_selectors(i) = :math:`\langle D_i | H | \text{HF}\rangle c(D_i)/c(HF)` if :math:`| D_i \rangle` is a double excitation.
E_corr_per_selectors(i) = -1000.d0 if it is not a double excitation
coef_hf_selector = coefficient of the Hartree Fock determinant in the selectors determinants
Needs:
.. hlist::
:columns: 3
* :c:data:`big_array_coulomb_integrals`
* :c:data:`big_array_coulomb_integrals`
* :c:data:`exc_degree_per_selectors`
* :c:data:`mo_integrals_map`
* :c:data:`mo_two_e_integrals_in_map`
* :c:data:`n_det_selectors`
* :c:data:`n_int`
* :c:data:`psi_selectors`
* :c:data:`ref_bitmask`
* :c:data:`ref_bitmask_energy`
.. c:var:: e_corr_per_selectors
File : :file:`selectors_utils/e_corr_selectors.irp.f`
.. code:: fortran
double precision :: coef_hf_selector
double precision :: inv_selectors_coef_hf
double precision :: inv_selectors_coef_hf_squared
double precision, allocatable :: e_corr_per_selectors (N_det_selectors)
double precision, allocatable :: i_h_hf_per_selectors (N_det_selectors)
double precision, allocatable :: delta_e_per_selector (N_det_selectors)
double precision :: e_corr_double_only
double precision :: e_corr_second_order
Correlation energy per determinant with respect to the Hartree-Fock determinant
for the all the double excitations in the selectors determinants.
E_corr_per_selectors(i) = :math:`\langle D_i | H | \text{HF}\rangle c(D_i)/c(HF)` if :math:`| D_i \rangle` is a double excitation.
E_corr_per_selectors(i) = -1000.d0 if it is not a double excitation
coef_hf_selector = coefficient of the Hartree Fock determinant in the selectors determinants
Needs:
.. hlist::
:columns: 3
* :c:data:`big_array_coulomb_integrals`
* :c:data:`big_array_coulomb_integrals`
* :c:data:`exc_degree_per_selectors`
* :c:data:`mo_integrals_map`
* :c:data:`mo_two_e_integrals_in_map`
* :c:data:`n_det_selectors`
* :c:data:`n_int`
* :c:data:`psi_selectors`
* :c:data:`ref_bitmask`
* :c:data:`ref_bitmask_energy`
.. c:var:: e_corr_second_order
File : :file:`selectors_utils/e_corr_selectors.irp.f`
.. code:: fortran
double precision :: coef_hf_selector
double precision :: inv_selectors_coef_hf
double precision :: inv_selectors_coef_hf_squared
double precision, allocatable :: e_corr_per_selectors (N_det_selectors)
double precision, allocatable :: i_h_hf_per_selectors (N_det_selectors)
double precision, allocatable :: delta_e_per_selector (N_det_selectors)
double precision :: e_corr_double_only
double precision :: e_corr_second_order
Correlation energy per determinant with respect to the Hartree-Fock determinant
for the all the double excitations in the selectors determinants.
E_corr_per_selectors(i) = :math:`\langle D_i | H | \text{HF}\rangle c(D_i)/c(HF)` if :math:`| D_i \rangle` is a double excitation.
E_corr_per_selectors(i) = -1000.d0 if it is not a double excitation
coef_hf_selector = coefficient of the Hartree Fock determinant in the selectors determinants
Needs:
.. hlist::
:columns: 3
* :c:data:`big_array_coulomb_integrals`
* :c:data:`big_array_coulomb_integrals`
* :c:data:`exc_degree_per_selectors`
* :c:data:`mo_integrals_map`
* :c:data:`mo_two_e_integrals_in_map`
* :c:data:`n_det_selectors`
* :c:data:`n_int`
* :c:data:`psi_selectors`
* :c:data:`ref_bitmask`
* :c:data:`ref_bitmask_energy`
.. c:var:: exc_degree_per_selectors
File : :file:`selectors_utils/e_corr_selectors.irp.f`
.. code:: fortran
integer, allocatable :: exc_degree_per_selectors (N_det_selectors)
integer, allocatable :: double_index_selectors (N_det_selectors)
integer :: n_double_selectors
Degree of excitation respect to Hartree Fock for the wave function
for the all the selectors determinants.
double_index_selectors = list of the index of the double excitations
n_double_selectors = number of double excitations in the selectors determinants
Needs:
.. hlist::
:columns: 3
* :c:data:`n_det_selectors`
* :c:data:`n_int`
* :c:data:`psi_selectors`
* :c:data:`ref_bitmask`
Needed by:
.. hlist::
:columns: 3
* :c:data:`coef_hf_selector`
.. c:var:: i_h_hf_per_selectors
File : :file:`selectors_utils/e_corr_selectors.irp.f`
.. code:: fortran
double precision :: coef_hf_selector
double precision :: inv_selectors_coef_hf
double precision :: inv_selectors_coef_hf_squared
double precision, allocatable :: e_corr_per_selectors (N_det_selectors)
double precision, allocatable :: i_h_hf_per_selectors (N_det_selectors)
double precision, allocatable :: delta_e_per_selector (N_det_selectors)
double precision :: e_corr_double_only
double precision :: e_corr_second_order
Correlation energy per determinant with respect to the Hartree-Fock determinant
for the all the double excitations in the selectors determinants.
E_corr_per_selectors(i) = :math:`\langle D_i | H | \text{HF}\rangle c(D_i)/c(HF)` if :math:`| D_i \rangle` is a double excitation.
E_corr_per_selectors(i) = -1000.d0 if it is not a double excitation
coef_hf_selector = coefficient of the Hartree Fock determinant in the selectors determinants
Needs:
.. hlist::
:columns: 3
* :c:data:`big_array_coulomb_integrals`
* :c:data:`big_array_coulomb_integrals`
* :c:data:`exc_degree_per_selectors`
* :c:data:`mo_integrals_map`
* :c:data:`mo_two_e_integrals_in_map`
* :c:data:`n_det_selectors`
* :c:data:`n_int`
* :c:data:`psi_selectors`
* :c:data:`ref_bitmask`
* :c:data:`ref_bitmask_energy`
.. c:var:: inv_selectors_coef_hf
File : :file:`selectors_utils/e_corr_selectors.irp.f`
.. code:: fortran
double precision :: coef_hf_selector
double precision :: inv_selectors_coef_hf
double precision :: inv_selectors_coef_hf_squared
double precision, allocatable :: e_corr_per_selectors (N_det_selectors)
double precision, allocatable :: i_h_hf_per_selectors (N_det_selectors)
double precision, allocatable :: delta_e_per_selector (N_det_selectors)
double precision :: e_corr_double_only
double precision :: e_corr_second_order
Correlation energy per determinant with respect to the Hartree-Fock determinant
for the all the double excitations in the selectors determinants.
E_corr_per_selectors(i) = :math:`\langle D_i | H | \text{HF}\rangle c(D_i)/c(HF)` if :math:`| D_i \rangle` is a double excitation.
E_corr_per_selectors(i) = -1000.d0 if it is not a double excitation
coef_hf_selector = coefficient of the Hartree Fock determinant in the selectors determinants
Needs:
.. hlist::
:columns: 3
* :c:data:`big_array_coulomb_integrals`
* :c:data:`big_array_coulomb_integrals`
* :c:data:`exc_degree_per_selectors`
* :c:data:`mo_integrals_map`
* :c:data:`mo_two_e_integrals_in_map`
* :c:data:`n_det_selectors`
* :c:data:`n_int`
* :c:data:`psi_selectors`
* :c:data:`ref_bitmask`
* :c:data:`ref_bitmask_energy`
.. c:var:: inv_selectors_coef_hf_squared
File : :file:`selectors_utils/e_corr_selectors.irp.f`
.. code:: fortran
double precision :: coef_hf_selector
double precision :: inv_selectors_coef_hf
double precision :: inv_selectors_coef_hf_squared
double precision, allocatable :: e_corr_per_selectors (N_det_selectors)
double precision, allocatable :: i_h_hf_per_selectors (N_det_selectors)
double precision, allocatable :: delta_e_per_selector (N_det_selectors)
double precision :: e_corr_double_only
double precision :: e_corr_second_order
Correlation energy per determinant with respect to the Hartree-Fock determinant
for the all the double excitations in the selectors determinants.
E_corr_per_selectors(i) = :math:`\langle D_i | H | \text{HF}\rangle c(D_i)/c(HF)` if :math:`| D_i \rangle` is a double excitation.
E_corr_per_selectors(i) = -1000.d0 if it is not a double excitation
coef_hf_selector = coefficient of the Hartree Fock determinant in the selectors determinants
Needs:
.. hlist::
:columns: 3
* :c:data:`big_array_coulomb_integrals`
* :c:data:`big_array_coulomb_integrals`
* :c:data:`exc_degree_per_selectors`
* :c:data:`mo_integrals_map`
* :c:data:`mo_two_e_integrals_in_map`
* :c:data:`n_det_selectors`
* :c:data:`n_int`
* :c:data:`psi_selectors`
* :c:data:`ref_bitmask`
* :c:data:`ref_bitmask_energy`
.. c:var:: n_double_selectors
File : :file:`selectors_utils/e_corr_selectors.irp.f`
.. code:: fortran
integer, allocatable :: exc_degree_per_selectors (N_det_selectors)
integer, allocatable :: double_index_selectors (N_det_selectors)
integer :: n_double_selectors
Degree of excitation respect to Hartree Fock for the wave function
for the all the selectors determinants.
double_index_selectors = list of the index of the double excitations
n_double_selectors = number of double excitations in the selectors determinants
Needs:
.. hlist::
:columns: 3
* :c:data:`n_det_selectors`
* :c:data:`n_int`
* :c:data:`psi_selectors`
* :c:data:`ref_bitmask`
Needed by:
.. hlist::
:columns: 3
* :c:data:`coef_hf_selector`
.. c:var:: psi_selectors_coef_transp
File : :file:`selectors_utils/selectors.irp.f`
.. code:: fortran
double precision, allocatable :: psi_selectors_coef_transp (N_states,psi_selectors_size)
Transposed psi_selectors
Needs:
.. hlist::
:columns: 3
* :c:data:`n_det_selectors`
* :c:data:`n_states`
* :c:data:`psi_selectors`
* :c:data:`psi_selectors_size`
.. c:var:: psi_selectors_diag_h_mat
File : :file:`selectors_utils/selectors.irp.f`
.. code:: fortran
double precision, allocatable :: psi_selectors_diag_h_mat (psi_selectors_size)
Diagonal elements of the H matrix for each selectors
Needs:
.. hlist::
:columns: 3
* :c:data:`elec_num`
* :c:data:`n_det_selectors`
* :c:data:`n_int`
* :c:data:`psi_selectors`
* :c:data:`psi_selectors_size`
* :c:data:`ref_bitmask`
* :c:data:`ref_bitmask_energy`
.. c:var:: psi_selectors_size
File : :file:`selectors_utils/selectors.irp.f`
.. code:: fortran
integer :: psi_selectors_size
Needs:
.. hlist::
:columns: 3
* :c:data:`psi_det_size`
Needed by:
.. hlist::
:columns: 3
* :c:data:`psi_selectors`
* :c:data:`psi_selectors_coef_transp`
* :c:data:`psi_selectors_diag_h_mat`
Subroutines / functions
-----------------------
.. c:function:: zmq_get_n_det_generators:
File : :file:`selectors_utils/zmq.irp.f_template_102`
.. code:: fortran
integer function zmq_get_N_det_generators(zmq_to_qp_run_socket, worker_id)
Get N_det_generators from the qp_run scheduler
Needs:
.. hlist::
:columns: 3
* :c:data:`n_det_generators`
* :c:data:`zmq_state`
* :c:data:`mpi_master`
.. c:function:: zmq_get_n_det_selectors:
File : :file:`selectors_utils/zmq.irp.f_template_102`
.. code:: fortran
integer function zmq_get_N_det_selectors(zmq_to_qp_run_socket, worker_id)
Get N_det_selectors from the qp_run scheduler
Needs:
.. hlist::
:columns: 3
* :c:data:`n_det_selectors`
* :c:data:`zmq_state`
* :c:data:`mpi_master`
.. c:function:: zmq_put_n_det_generators:
File : :file:`selectors_utils/zmq.irp.f_template_102`
.. code:: fortran
integer function zmq_put_N_det_generators(zmq_to_qp_run_socket,worker_id)
Put N_det_generators on the qp_run scheduler
Needs:
.. hlist::
:columns: 3
* :c:data:`n_det_generators`
* :c:data:`zmq_state`
.. c:function:: zmq_put_n_det_selectors:
File : :file:`selectors_utils/zmq.irp.f_template_102`
.. code:: fortran
integer function zmq_put_N_det_selectors(zmq_to_qp_run_socket,worker_id)
Put N_det_selectors on the qp_run scheduler
Needs:
.. hlist::
:columns: 3
* :c:data:`n_det_selectors`
* :c:data:`zmq_state`