mirror of
https://github.com/QuantumPackage/qp2.git
synced 2024-12-21 19:13:29 +01:00
650 lines
18 KiB
ReStructuredText
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`
|
|
|