9
1
mirror of https://github.com/QuantumPackage/qp2.git synced 2024-12-30 15:15:38 +01:00
qp2/doc/_sources/modules/determinants.rst.txt
2019-01-25 14:17:34 +01:00

7923 lines
158 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.

.. _module_determinants:
.. program:: determinants
.. default-role:: option
============
determinants
============
Contains everything for the computation of the Hamiltonian matrix elements in the basis of orthogonal Slater determinants built on a restricted spin-orbitals basis.
The main providers for this module are:
* :option:`determinants n_states`: number of states to be computed
* `psi_det`: list of determinants in the wave function used in many routines/providers of the |QP|.
* `psi_coef`: list of coefficients, for all :option:`determinants n_states` states, and all determinants.
The main routines for this module are:
* `i_H_j`: computes the Hamiltonian matrix element between two arbitrary Slater determinants.
* `i_H_j_s2`: computes the Hamiltonian and (:math:`S^2`) matrix element between two arbitrary Slater determinants.
* `i_H_j_verbose`: returns the decomposition in terms of one- and two-body components of the Hamiltonian matrix elements between two arbitrary Slater determinants. Also return the fermionic phase factor.
* `i_H_psi`: computes the Hamiltonian matrix element between an arbitrary Slater determinant and a wave function composed of a sum of arbitrary Slater determinants.
For an example of how to use these routines and providers, take a look at :file:`example.irp.f`.
EZFIO parameters
----------------
.. option:: n_det_max
Maximum number of determinants in the wave function
Default: 1000000
.. option:: n_det_print_wf
Maximum number of determinants to be printed with the program print_wf
Default: 10000
.. option:: n_det_max_full
Maximum number of determinants where |H| is fully diagonalized
Default: 1000
.. option:: n_states
Number of states to consider
Default: 1
.. option:: read_wf
If |true|, read the wave function from the |EZFIO| file
Default: False
.. option:: s2_eig
Force the wave function to be an eigenfunction of |S^2|
Default: True
.. option:: used_weight
Weight used in the calculation of the one-electron density matrix. 0: 1./(c_0^2), 1: 1/N_states, 2: input state-average weight, 3: 1/(Norm_L3(Psi))
Default: 1
.. option:: threshold_generators
Thresholds on generators (fraction of the square of the norm)
Default: 0.99
.. option:: n_int
Number of integers required to represent bitstrings (set in module :ref:`bitmask`)
.. option:: bit_kind
(set in module :ref:`bitmask`)
.. option:: mo_label
Label of the |MOs| on which the determinants are expressed
.. option:: n_det
Number of determinants in the current wave function
.. option:: psi_coef
Coefficients of the wave function
.. option:: psi_det
Determinants of the variational space
.. option:: expected_s2
Expected value of |S^2|
.. option:: target_energy
Energy that should be obtained when truncating the wave function (optional)
Default: 0.
.. option:: state_average_weight
Weight of the states in state-average calculations.
Providers
---------
.. c:var:: abs_psi_coef_max
File : :file:`determinants/determinants.irp.f`
.. code:: fortran
double precision, allocatable :: psi_coef_max (N_states)
double precision, allocatable :: psi_coef_min (N_states)
double precision, allocatable :: abs_psi_coef_max (N_states)
double precision, allocatable :: abs_psi_coef_min (N_states)
Max and min values of the coefficients
Needs:
.. hlist::
:columns: 3
* :c:data:`mpi_master`
* :c:data:`n_states`
* :c:data:`psi_coef`
.. c:var:: abs_psi_coef_min
File : :file:`determinants/determinants.irp.f`
.. code:: fortran
double precision, allocatable :: psi_coef_max (N_states)
double precision, allocatable :: psi_coef_min (N_states)
double precision, allocatable :: abs_psi_coef_max (N_states)
double precision, allocatable :: abs_psi_coef_min (N_states)
Max and min values of the coefficients
Needs:
.. hlist::
:columns: 3
* :c:data:`mpi_master`
* :c:data:`n_states`
* :c:data:`psi_coef`
.. c:var:: barycentric_electronic_energy
File : :file:`determinants/energy.irp.f`
.. code:: fortran
double precision, allocatable :: barycentric_electronic_energy (N_states)
:math:`E_n = \sum_i {c_i^{(n)}}^2 H_{ii}`
Needs:
.. hlist::
:columns: 3
* :c:data:`diagonal_h_matrix_on_psi_det`
* :c:data:`n_det`
* :c:data:`n_states`
* :c:data:`psi_coef`
Needed by:
.. hlist::
:columns: 3
* :c:data:`pt2_e0_denominator`
.. c:var:: c0_weight
File : :file:`determinants/density_matrix.irp.f`
.. code:: fortran
double precision, allocatable :: c0_weight (N_states)
Weight of the states in the selection : :math:`\frac{1}{c_0^2}` .
Needs:
.. hlist::
:columns: 3
* :c:data:`n_states`
* :c:data:`psi_coef`
Needed by:
.. hlist::
:columns: 3
* :c:data:`selection_weight`
* :c:data:`state_average_weight`
.. c:var:: det_alpha_norm
File : :file:`determinants/spindeterminants.irp.f`
.. code:: fortran
double precision, allocatable :: det_alpha_norm (N_det_alpha_unique)
double precision, allocatable :: det_beta_norm (N_det_beta_unique)
Norm of the :math:`\alpha` and :math:`\beta` spin determinants in the wave function:
:math:`||D_\alpha||_i = \sum_j C_{ij}^2`
Needs:
.. hlist::
:columns: 3
* :c:data:`n_det`
* :c:data:`n_states`
* :c:data:`psi_bilinear_matrix_values`
* :c:data:`psi_det_alpha_unique`
* :c:data:`psi_det_beta_unique`
* :c:data:`state_average_weight`
.. c:var:: det_beta_norm
File : :file:`determinants/spindeterminants.irp.f`
.. code:: fortran
double precision, allocatable :: det_alpha_norm (N_det_alpha_unique)
double precision, allocatable :: det_beta_norm (N_det_beta_unique)
Norm of the :math:`\alpha` and :math:`\beta` spin determinants in the wave function:
:math:`||D_\alpha||_i = \sum_j C_{ij}^2`
Needs:
.. hlist::
:columns: 3
* :c:data:`n_det`
* :c:data:`n_states`
* :c:data:`psi_bilinear_matrix_values`
* :c:data:`psi_det_alpha_unique`
* :c:data:`psi_det_beta_unique`
* :c:data:`state_average_weight`
.. c:var:: det_to_occ_pattern
File : :file:`determinants/occ_pattern.irp.f`
.. code:: fortran
integer, allocatable :: det_to_occ_pattern (N_det)
Returns the index of the occupation pattern for each determinant
Needs:
.. hlist::
:columns: 3
* :c:data:`elec_alpha_num`
* :c:data:`n_det`
* :c:data:`n_int`
* :c:data:`psi_det`
* :c:data:`psi_occ_pattern`
Needed by:
.. hlist::
:columns: 3
* :c:data:`psi_occ_pattern_hii`
* :c:data:`weight_occ_pattern`
.. c:var:: diag_algorithm
File : :file:`determinants/determinants.irp.f`
.. code:: fortran
character*(64) :: diag_algorithm
Diagonalization algorithm (Davidson or Lapack)
Needs:
.. hlist::
:columns: 3
* :c:data:`n_det`
* :c:data:`n_det_max_full`
* :c:data:`n_states`
Needed by:
.. hlist::
:columns: 3
* :c:data:`ci_electronic_energy`
.. c:var:: diagonal_h_matrix_on_psi_det
File : :file:`determinants/energy.irp.f`
.. code:: fortran
double precision, allocatable :: diagonal_h_matrix_on_psi_det (N_det)
Diagonal of the Hamiltonian ordered as psi_det
Needs:
.. hlist::
:columns: 3
* :c:data:`elec_num`
* :c:data:`n_det`
* :c:data:`n_int`
* :c:data:`psi_det`
* :c:data:`ref_bitmask`
* :c:data:`ref_bitmask_energy`
Needed by:
.. hlist::
:columns: 3
* :c:data:`barycentric_electronic_energy`
.. c:var:: double_exc_bitmask
File : :file:`determinants/determinants_bitmasks.irp.f`
.. code:: fortran
integer(bit_kind), allocatable :: double_exc_bitmask (N_int,4,N_double_exc_bitmasks)
double_exc_bitmask(:,1,i) is the bitmask for holes of excitation 1
double_exc_bitmask(:,2,i) is the bitmask for particles of excitation 1
double_exc_bitmask(:,3,i) is the bitmask for holes of excitation 2
double_exc_bitmask(:,4,i) is the bitmask for particles of excitation 2
for a given couple of hole/particle excitations i.
Needs:
.. hlist::
:columns: 3
* :c:data:`hf_bitmask`
* :c:data:`n_double_exc_bitmasks`
* :c:data:`n_int`
.. c:var:: expected_s2
File : :file:`determinants/s2.irp.f`
.. code:: fortran
double precision :: expected_s2
Expected value of |S^2| : S*(S+1)
Needs:
.. hlist::
:columns: 3
* :c:data:`elec_alpha_num`
* :c:data:`elec_beta_num`
Needed by:
.. hlist::
:columns: 3
* :c:data:`ci_electronic_energy`
.. c:var:: fock_operator_closed_shell_ref_bitmask
File : :file:`determinants/single_excitations.irp.f`
.. code:: fortran
double precision, allocatable :: fock_operator_closed_shell_ref_bitmask (mo_num,mo_num)
Needs:
.. hlist::
:columns: 3
* :c:data:`full_ijkl_bitmask`
* :c:data:`mo_integrals_map`
* :c:data:`mo_num`
* :c:data:`mo_one_e_integrals`
* :c:data:`mo_two_e_integrals_in_map`
* :c:data:`n_int`
* :c:data:`ref_closed_shell_bitmask`
.. c:var:: fock_wee_closed_shell
File : :file:`determinants/mono_excitations_bielec.irp.f`
.. code:: fortran
double precision, allocatable :: fock_wee_closed_shell (mo_num,mo_num)
Needs:
.. hlist::
:columns: 3
* :c:data:`full_ijkl_bitmask`
* :c:data:`mo_integrals_map`
* :c:data:`mo_num`
* :c:data:`mo_two_e_integrals_in_map`
* :c:data:`n_int`
* :c:data:`ref_closed_shell_bitmask`
.. c:var:: h_apply_buffer_allocated
File : :file:`determinants/h_apply.irp.f`
.. code:: fortran
logical :: h_apply_buffer_allocated
integer(omp_lock_kind), allocatable :: h_apply_buffer_lock (64,0:nproc-1)
Buffer of determinants/coefficients/perturbative energy for H_apply.
Uninitialized. Filled by H_apply subroutines.
Needs:
.. hlist::
:columns: 3
* :c:data:`n_det`
* :c:data:`n_int`
* :c:data:`n_states`
* :c:data:`nproc`
.. c:var:: h_apply_buffer_lock
File : :file:`determinants/h_apply.irp.f`
.. code:: fortran
logical :: h_apply_buffer_allocated
integer(omp_lock_kind), allocatable :: h_apply_buffer_lock (64,0:nproc-1)
Buffer of determinants/coefficients/perturbative energy for H_apply.
Uninitialized. Filled by H_apply subroutines.
Needs:
.. hlist::
:columns: 3
* :c:data:`n_det`
* :c:data:`n_int`
* :c:data:`n_states`
* :c:data:`nproc`
.. c:var:: h_matrix_all_dets
File : :file:`determinants/utils.irp.f`
.. code:: fortran
double precision, allocatable :: h_matrix_all_dets (N_det,N_det)
|H| matrix on the basis of the Slater determinants defined by psi_det
Needs:
.. hlist::
:columns: 3
* :c:data:`big_array_coulomb_integrals`
* :c:data:`big_array_coulomb_integrals`
* :c:data:`mo_integrals_map`
* :c:data:`mo_two_e_integrals_in_map`
* :c:data:`n_det`
* :c:data:`n_int`
* :c:data:`psi_det`
Needed by:
.. hlist::
:columns: 3
* :c:data:`ci_electronic_energy`
.. c:var:: h_matrix_cas
File : :file:`determinants/psi_cas.irp.f`
.. code:: fortran
double precision, allocatable :: h_matrix_cas (N_det_cas,N_det_cas)
Needs:
.. hlist::
:columns: 3
* :c:data:`big_array_coulomb_integrals`
* :c:data:`big_array_coulomb_integrals`
* :c:data:`mo_integrals_map`
* :c:data:`mo_two_e_integrals_in_map`
* :c:data:`n_int`
* :c:data:`psi_cas`
Needed by:
.. hlist::
:columns: 3
* :c:data:`psi_cas_energy`
* :c:data:`psi_coef_cas_diagonalized`
.. c:var:: idx_cas
File : :file:`determinants/psi_cas.irp.f`
.. code:: fortran
integer(bit_kind), allocatable :: psi_cas (N_int,2,psi_det_size)
double precision, allocatable :: psi_cas_coef (psi_det_size,n_states)
integer, allocatable :: idx_cas (psi_det_size)
integer :: n_det_cas
|CAS| wave function, defined from the application of the |CAS| bitmask on the
determinants. idx_cas gives the indice of the |CAS| determinant in psi_det.
Needs:
.. hlist::
:columns: 3
* :c:data:`cas_bitmask`
* :c:data:`hf_bitmask`
* :c:data:`mpi_master`
* :c:data:`n_cas_bitmask`
* :c:data:`n_det`
* :c:data:`n_int`
* :c:data:`n_states`
* :c:data:`psi_coef`
* :c:data:`psi_det`
* :c:data:`psi_det_size`
Needed by:
.. hlist::
:columns: 3
* :c:data:`h_matrix_cas`
* :c:data:`psi_cas_energy`
* :c:data:`psi_cas_sorted_bit`
* :c:data:`psi_coef_cas_diagonalized`
* :c:data:`psi_non_cas`
* :c:data:`psi_non_cas_sorted_bit`
.. c:var:: idx_non_cas
File : :file:`determinants/psi_cas.irp.f`
.. code:: fortran
integer(bit_kind), allocatable :: psi_non_cas (N_int,2,psi_det_size)
double precision, allocatable :: psi_non_cas_coef (psi_det_size,n_states)
integer, allocatable :: idx_non_cas (psi_det_size)
integer :: n_det_non_cas
Set of determinants which are not part of the |CAS|, defined from the application
of the |CAS| bitmask on the determinants.
idx_non_cas gives the indice of the determinant in psi_det.
Needs:
.. hlist::
:columns: 3
* :c:data:`n_det`
* :c:data:`n_int`
* :c:data:`n_states`
* :c:data:`psi_cas`
* :c:data:`psi_coef`
* :c:data:`psi_det`
* :c:data:`psi_det_size`
Needed by:
.. hlist::
:columns: 3
* :c:data:`psi_non_cas_sorted_bit`
.. c:var:: max_degree_exc
File : :file:`determinants/determinants.irp.f`
.. code:: fortran
integer :: max_degree_exc
Maximum degree of excitation in the wave function with respect to the Hartree-Fock
determinant.
Needs:
.. hlist::
:columns: 3
* :c:data:`hf_bitmask`
* :c:data:`n_det`
* :c:data:`n_int`
* :c:data:`psi_det`
.. c:var:: n_det
File : :file:`determinants/determinants.irp.f`
.. code:: fortran
integer :: n_det
Number of determinants in the wave function
Needs:
.. hlist::
:columns: 3
* :c:data:`ezfio_filename`
* :c:data:`mo_label`
* :c:data:`mpi_master`
* :c:data:`nproc`
* :c:data:`read_wf`
Needed by:
.. hlist::
:columns: 3
* :c:data:`barycentric_electronic_energy`
* :c:data:`ci_electronic_energy`
* :c:data:`ci_energy`
* :c:data:`det_alpha_norm`
* :c:data:`det_to_occ_pattern`
* :c:data:`diag_algorithm`
* :c:data:`diagonal_h_matrix_on_psi_det`
* :c:data:`dressed_column_idx`
* :c:data:`dressing_column_h`
* :c:data:`extrapolated_energy`
* :c:data:`h_apply_buffer_allocated`
* :c:data:`h_matrix_all_dets`
* :c:data:`max_degree_exc`
* :c:data:`n_det_generators`
* :c:data:`n_det_selectors`
* :c:data:`one_e_dm_mo_alpha`
* :c:data:`psi_average_norm_contrib`
* :c:data:`psi_bilinear_matrix`
* :c:data:`psi_bilinear_matrix_columns_loc`
* :c:data:`psi_bilinear_matrix_order_reverse`
* :c:data:`psi_bilinear_matrix_order_transp_reverse`
* :c:data:`psi_bilinear_matrix_transp_rows_loc`
* :c:data:`psi_bilinear_matrix_transp_values`
* :c:data:`psi_bilinear_matrix_values`
* :c:data:`psi_cas`
* :c:data:`psi_coef`
* :c:data:`psi_det`
* :c:data:`psi_det_alpha`
* :c:data:`psi_det_alpha_unique`
* :c:data:`psi_det_beta`
* :c:data:`psi_det_beta_unique`
* :c:data:`psi_det_generators`
* :c:data:`psi_det_hii`
* :c:data:`psi_det_sorted`
* :c:data:`psi_det_sorted_bit`
* :c:data:`psi_energy`
* :c:data:`psi_energy_two_e`
* :c:data:`psi_non_cas`
* :c:data:`psi_occ_pattern`
* :c:data:`psi_occ_pattern_hii`
* :c:data:`s2_matrix_all_dets`
* :c:data:`s2_values`
* :c:data:`weight_occ_pattern`
.. c:var:: n_det_alpha_unique
File : :file:`determinants/spindeterminants.irp.f_template_144`
.. code:: fortran
integer(bit_kind), allocatable :: psi_det_alpha_unique (N_int,psi_det_size)
integer :: n_det_alpha_unique
Unique :math:`\alpha` determinants
Needs:
.. hlist::
:columns: 3
* :c:data:`mpi_master`
* :c:data:`n_det`
* :c:data:`n_int`
* :c:data:`psi_det_alpha`
* :c:data:`psi_det_size`
Needed by:
.. hlist::
:columns: 3
* :c:data:`det_alpha_norm`
* :c:data:`one_e_dm_mo_alpha`
* :c:data:`psi_bilinear_matrix`
* :c:data:`psi_bilinear_matrix_transp_rows_loc`
* :c:data:`psi_bilinear_matrix_values`
* :c:data:`singles_alpha_csc`
* :c:data:`singles_alpha_csc_idx`
.. c:var:: n_det_beta_unique
File : :file:`determinants/spindeterminants.irp.f_template_144`
.. code:: fortran
integer(bit_kind), allocatable :: psi_det_beta_unique (N_int,psi_det_size)
integer :: n_det_beta_unique
Unique :math:`\beta` determinants
Needs:
.. hlist::
:columns: 3
* :c:data:`mpi_master`
* :c:data:`n_det`
* :c:data:`n_int`
* :c:data:`psi_det_beta`
* :c:data:`psi_det_size`
Needed by:
.. hlist::
:columns: 3
* :c:data:`det_alpha_norm`
* :c:data:`one_e_dm_mo_alpha`
* :c:data:`psi_bilinear_matrix`
* :c:data:`psi_bilinear_matrix_columns_loc`
* :c:data:`psi_bilinear_matrix_transp_values`
* :c:data:`psi_bilinear_matrix_values`
* :c:data:`singles_beta_csc`
* :c:data:`singles_beta_csc_idx`
.. c:var:: n_det_cas
File : :file:`determinants/psi_cas.irp.f`
.. code:: fortran
integer(bit_kind), allocatable :: psi_cas (N_int,2,psi_det_size)
double precision, allocatable :: psi_cas_coef (psi_det_size,n_states)
integer, allocatable :: idx_cas (psi_det_size)
integer :: n_det_cas
|CAS| wave function, defined from the application of the |CAS| bitmask on the
determinants. idx_cas gives the indice of the |CAS| determinant in psi_det.
Needs:
.. hlist::
:columns: 3
* :c:data:`cas_bitmask`
* :c:data:`hf_bitmask`
* :c:data:`mpi_master`
* :c:data:`n_cas_bitmask`
* :c:data:`n_det`
* :c:data:`n_int`
* :c:data:`n_states`
* :c:data:`psi_coef`
* :c:data:`psi_det`
* :c:data:`psi_det_size`
Needed by:
.. hlist::
:columns: 3
* :c:data:`h_matrix_cas`
* :c:data:`psi_cas_energy`
* :c:data:`psi_cas_sorted_bit`
* :c:data:`psi_coef_cas_diagonalized`
* :c:data:`psi_non_cas`
* :c:data:`psi_non_cas_sorted_bit`
.. c:var:: n_det_non_cas
File : :file:`determinants/psi_cas.irp.f`
.. code:: fortran
integer(bit_kind), allocatable :: psi_non_cas (N_int,2,psi_det_size)
double precision, allocatable :: psi_non_cas_coef (psi_det_size,n_states)
integer, allocatable :: idx_non_cas (psi_det_size)
integer :: n_det_non_cas
Set of determinants which are not part of the |CAS|, defined from the application
of the |CAS| bitmask on the determinants.
idx_non_cas gives the indice of the determinant in psi_det.
Needs:
.. hlist::
:columns: 3
* :c:data:`n_det`
* :c:data:`n_int`
* :c:data:`n_states`
* :c:data:`psi_cas`
* :c:data:`psi_coef`
* :c:data:`psi_det`
* :c:data:`psi_det_size`
Needed by:
.. hlist::
:columns: 3
* :c:data:`psi_non_cas_sorted_bit`
.. c:var:: n_double_exc_bitmasks
File : :file:`determinants/determinants_bitmasks.irp.f`
.. code:: fortran
integer :: n_double_exc_bitmasks
Number of double excitation bitmasks
Needed by:
.. hlist::
:columns: 3
* :c:data:`double_exc_bitmask`
.. c:var:: n_occ_pattern
File : :file:`determinants/occ_pattern.irp.f`
.. code:: fortran
integer(bit_kind), allocatable :: psi_occ_pattern (N_int,2,psi_det_size)
integer :: n_occ_pattern
Array of the occ_patterns present in the wave function.
psi_occ_pattern(:,1,j) = j-th occ_pattern of the wave function : represents all the single occupations
psi_occ_pattern(:,2,j) = j-th occ_pattern of the wave function : represents all the double occupations
The occ patterns are sorted by :c:func:`occ_pattern_search_key`
Needs:
.. hlist::
:columns: 3
* :c:data:`elec_alpha_num`
* :c:data:`n_det`
* :c:data:`n_int`
* :c:data:`psi_det`
* :c:data:`psi_det_size`
Needed by:
.. hlist::
:columns: 3
* :c:data:`det_to_occ_pattern`
* :c:data:`psi_occ_pattern_hii`
* :c:data:`weight_occ_pattern`
.. c:var:: n_single_exc_bitmasks
File : :file:`determinants/determinants_bitmasks.irp.f`
.. code:: fortran
integer :: n_single_exc_bitmasks
Number of single excitation bitmasks
Needed by:
.. hlist::
:columns: 3
* :c:data:`single_exc_bitmask`
.. c:var:: one_e_dm_ao_alpha
File : :file:`determinants/density_matrix.irp.f`
.. code:: fortran
double precision, allocatable :: one_e_dm_ao_alpha (ao_num,ao_num)
double precision, allocatable :: one_e_dm_ao_beta (ao_num,ao_num)
One body density matrix on the |AO| basis : :math:`\rho_{AO}(\alpha), \rho_{AO}(\beta)` .
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`mo_coef`
* :c:data:`mo_num`
* :c:data:`one_e_dm_mo_alpha_average`
.. c:var:: one_e_dm_ao_beta
File : :file:`determinants/density_matrix.irp.f`
.. code:: fortran
double precision, allocatable :: one_e_dm_ao_alpha (ao_num,ao_num)
double precision, allocatable :: one_e_dm_ao_beta (ao_num,ao_num)
One body density matrix on the |AO| basis : :math:`\rho_{AO}(\alpha), \rho_{AO}(\beta)` .
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`mo_coef`
* :c:data:`mo_num`
* :c:data:`one_e_dm_mo_alpha_average`
.. c:var:: one_e_dm_dagger_mo_spin_index
File : :file:`determinants/density_matrix.irp.f`
.. code:: fortran
double precision, allocatable :: one_e_dm_dagger_mo_spin_index (mo_num,mo_num,N_states,2)
Needs:
.. hlist::
:columns: 3
* :c:data:`mo_num`
* :c:data:`n_states`
* :c:data:`one_e_dm_mo_alpha`
.. c:var:: one_e_dm_mo
File : :file:`determinants/density_matrix.irp.f`
.. code:: fortran
double precision, allocatable :: one_e_dm_mo (mo_num,mo_num)
One-body density matrix
Needs:
.. hlist::
:columns: 3
* :c:data:`mo_num`
* :c:data:`one_e_dm_mo_alpha_average`
.. c:var:: one_e_dm_mo_alpha
File : :file:`determinants/density_matrix.irp.f`
.. code:: fortran
double precision, allocatable :: one_e_dm_mo_alpha (mo_num,mo_num,N_states)
double precision, allocatable :: one_e_dm_mo_beta (mo_num,mo_num,N_states)
:math:`\alpha` and :math:`\beta` one-body density matrix for each state
Needs:
.. hlist::
:columns: 3
* :c:data:`elec_alpha_num`
* :c:data:`elec_beta_num`
* :c:data:`mo_num`
* :c:data:`n_det`
* :c:data:`n_int`
* :c:data:`n_states`
* :c:data:`psi_bilinear_matrix_transp_values`
* :c:data:`psi_bilinear_matrix_values`
* :c:data:`psi_det`
* :c:data:`psi_det_alpha_unique`
* :c:data:`psi_det_beta_unique`
Needed by:
.. hlist::
:columns: 3
* :c:data:`one_e_dm_dagger_mo_spin_index`
* :c:data:`one_e_dm_mo_alpha_average`
* :c:data:`one_e_dm_mo_diff`
* :c:data:`one_e_dm_mo_spin_index`
* :c:data:`psi_energy_h_core`
.. c:var:: one_e_dm_mo_alpha_average
File : :file:`determinants/density_matrix.irp.f`
.. code:: fortran
double precision, allocatable :: one_e_dm_mo_alpha_average (mo_num,mo_num)
double precision, allocatable :: one_e_dm_mo_beta_average (mo_num,mo_num)
:math:`\alpha` and :math:`\beta` one-body density matrix for each state
Needs:
.. hlist::
:columns: 3
* :c:data:`mo_num`
* :c:data:`n_states`
* :c:data:`one_e_dm_mo_alpha`
* :c:data:`state_average_weight`
Needed by:
.. hlist::
:columns: 3
* :c:data:`one_e_dm_ao_alpha`
* :c:data:`one_e_dm_mo`
* :c:data:`one_e_spin_density_mo`
.. c:var:: one_e_dm_mo_beta
File : :file:`determinants/density_matrix.irp.f`
.. code:: fortran
double precision, allocatable :: one_e_dm_mo_alpha (mo_num,mo_num,N_states)
double precision, allocatable :: one_e_dm_mo_beta (mo_num,mo_num,N_states)
:math:`\alpha` and :math:`\beta` one-body density matrix for each state
Needs:
.. hlist::
:columns: 3
* :c:data:`elec_alpha_num`
* :c:data:`elec_beta_num`
* :c:data:`mo_num`
* :c:data:`n_det`
* :c:data:`n_int`
* :c:data:`n_states`
* :c:data:`psi_bilinear_matrix_transp_values`
* :c:data:`psi_bilinear_matrix_values`
* :c:data:`psi_det`
* :c:data:`psi_det_alpha_unique`
* :c:data:`psi_det_beta_unique`
Needed by:
.. hlist::
:columns: 3
* :c:data:`one_e_dm_dagger_mo_spin_index`
* :c:data:`one_e_dm_mo_alpha_average`
* :c:data:`one_e_dm_mo_diff`
* :c:data:`one_e_dm_mo_spin_index`
* :c:data:`psi_energy_h_core`
.. c:var:: one_e_dm_mo_beta_average
File : :file:`determinants/density_matrix.irp.f`
.. code:: fortran
double precision, allocatable :: one_e_dm_mo_alpha_average (mo_num,mo_num)
double precision, allocatable :: one_e_dm_mo_beta_average (mo_num,mo_num)
:math:`\alpha` and :math:`\beta` one-body density matrix for each state
Needs:
.. hlist::
:columns: 3
* :c:data:`mo_num`
* :c:data:`n_states`
* :c:data:`one_e_dm_mo_alpha`
* :c:data:`state_average_weight`
Needed by:
.. hlist::
:columns: 3
* :c:data:`one_e_dm_ao_alpha`
* :c:data:`one_e_dm_mo`
* :c:data:`one_e_spin_density_mo`
.. c:var:: one_e_dm_mo_diff
File : :file:`determinants/density_matrix.irp.f`
.. code:: fortran
double precision, allocatable :: one_e_dm_mo_diff (mo_num,mo_num,2:N_states)
Difference of the one-body density matrix with respect to the ground state
Needs:
.. hlist::
:columns: 3
* :c:data:`mo_num`
* :c:data:`n_states`
* :c:data:`one_e_dm_mo_alpha`
.. c:var:: one_e_dm_mo_spin_index
File : :file:`determinants/density_matrix.irp.f`
.. code:: fortran
double precision, allocatable :: one_e_dm_mo_spin_index (mo_num,mo_num,N_states,2)
Needs:
.. hlist::
:columns: 3
* :c:data:`mo_num`
* :c:data:`n_states`
* :c:data:`one_e_dm_mo_alpha`
.. c:var:: one_e_spin_density_ao
File : :file:`determinants/density_matrix.irp.f`
.. code:: fortran
double precision, allocatable :: one_e_spin_density_ao (ao_num,ao_num)
One body spin density matrix on the |AO| basis : :math:`\rho_{AO}(\alpha) - \rho_{AO}(\beta)`
Needs:
.. hlist::
:columns: 3
* :c:data:`ao_num`
* :c:data:`mo_coef`
* :c:data:`mo_num`
* :c:data:`one_e_spin_density_mo`
.. c:var:: one_e_spin_density_mo
File : :file:`determinants/density_matrix.irp.f`
.. code:: fortran
double precision, allocatable :: one_e_spin_density_mo (mo_num,mo_num)
:math:`\rho(\alpha) - \rho(\beta)`
Needs:
.. hlist::
:columns: 3
* :c:data:`mo_num`
* :c:data:`one_e_dm_mo_alpha_average`
Needed by:
.. hlist::
:columns: 3
* :c:data:`one_e_spin_density_ao`
.. c:var:: psi_average_norm_contrib
File : :file:`determinants/determinants.irp.f`
.. code:: fortran
double precision, allocatable :: psi_average_norm_contrib (psi_det_size)
Contribution of determinants to the state-averaged density.
Needs:
.. hlist::
:columns: 3
* :c:data:`n_det`
* :c:data:`n_states`
* :c:data:`psi_coef`
* :c:data:`psi_det_size`
* :c:data:`state_average_weight`
Needed by:
.. hlist::
:columns: 3
* :c:data:`psi_det_sorted`
.. c:var:: psi_average_norm_contrib_sorted
File : :file:`determinants/determinants.irp.f`
.. code:: fortran
integer(bit_kind), allocatable :: psi_det_sorted (N_int,2,psi_det_size)
double precision, allocatable :: psi_coef_sorted (psi_det_size,N_states)
double precision, allocatable :: psi_average_norm_contrib_sorted (psi_det_size)
integer, allocatable :: psi_det_sorted_order (psi_det_size)
Wave function sorted by determinants contribution to the norm (state-averaged)
psi_det_sorted_order(i) -> k : index in psi_det
Needs:
.. hlist::
:columns: 3
* :c:data:`n_det`
* :c:data:`n_int`
* :c:data:`n_states`
* :c:data:`psi_average_norm_contrib`
* :c:data:`psi_coef`
* :c:data:`psi_det`
* :c:data:`psi_det_size`
Needed by:
.. hlist::
:columns: 3
* :c:data:`n_det_generators`
* :c:data:`n_det_selectors`
* :c:data:`psi_det_generators`
* :c:data:`psi_det_sorted_gen`
* :c:data:`psi_selectors`
.. c:var:: psi_bilinear_matrix
File : :file:`determinants/spindeterminants.irp.f`
.. code:: fortran
double precision, allocatable :: psi_bilinear_matrix (N_det_alpha_unique,N_det_beta_unique,N_states)
Coefficient matrix if the wave function is expressed in a bilinear form :
:math:`D_\alpha^\dagger.C.D_\beta`
Needs:
.. hlist::
:columns: 3
* :c:data:`n_det`
* :c:data:`n_states`
* :c:data:`psi_bilinear_matrix_values`
* :c:data:`psi_det_alpha_unique`
* :c:data:`psi_det_beta_unique`
.. c:var:: psi_bilinear_matrix_columns
File : :file:`determinants/spindeterminants.irp.f`
.. code:: fortran
double precision, allocatable :: psi_bilinear_matrix_values (N_det,N_states)
integer, allocatable :: psi_bilinear_matrix_rows (N_det)
integer, allocatable :: psi_bilinear_matrix_columns (N_det)
integer, allocatable :: psi_bilinear_matrix_order (N_det)
Sparse coefficient matrix if the wave function is expressed in a bilinear form :
:math:`D_\alpha^\dagger.C.D_\beta`
Rows are :math:`\alpha` determinants and columns are :math:`\beta` .
Order refers to psi_det
Needs:
.. hlist::
:columns: 3
* :c:data:`n_det`
* :c:data:`n_int`
* :c:data:`n_states`
* :c:data:`psi_coef`
* :c:data:`psi_det_sorted_bit`
* :c:data:`psi_det`
* :c:data:`psi_det_alpha_unique`
* :c:data:`psi_det_beta_unique`
Needed by:
.. hlist::
:columns: 3
* :c:data:`det_alpha_norm`
* :c:data:`one_e_dm_mo_alpha`
* :c:data:`psi_bilinear_matrix`
* :c:data:`psi_bilinear_matrix_columns_loc`
* :c:data:`psi_bilinear_matrix_order_reverse`
* :c:data:`psi_bilinear_matrix_transp_values`
.. c:var:: psi_bilinear_matrix_columns_loc
File : :file:`determinants/spindeterminants.irp.f`
.. code:: fortran
integer, allocatable :: psi_bilinear_matrix_columns_loc (N_det_beta_unique+1)
Sparse coefficient matrix if the wave function is expressed in a bilinear form :
:math:`D_\alpha^\dagger.C.D_\beta`
Rows are :math:`\alpha` determinants and columns are :math:`\beta` .
Order refers to :c:data:`psi_det`
Needs:
.. hlist::
:columns: 3
* :c:data:`n_det`
* :c:data:`psi_bilinear_matrix_values`
* :c:data:`psi_det_beta_unique`
.. c:var:: psi_bilinear_matrix_order
File : :file:`determinants/spindeterminants.irp.f`
.. code:: fortran
double precision, allocatable :: psi_bilinear_matrix_values (N_det,N_states)
integer, allocatable :: psi_bilinear_matrix_rows (N_det)
integer, allocatable :: psi_bilinear_matrix_columns (N_det)
integer, allocatable :: psi_bilinear_matrix_order (N_det)
Sparse coefficient matrix if the wave function is expressed in a bilinear form :
:math:`D_\alpha^\dagger.C.D_\beta`
Rows are :math:`\alpha` determinants and columns are :math:`\beta` .
Order refers to psi_det
Needs:
.. hlist::
:columns: 3
* :c:data:`n_det`
* :c:data:`n_int`
* :c:data:`n_states`
* :c:data:`psi_coef`
* :c:data:`psi_det_sorted_bit`
* :c:data:`psi_det`
* :c:data:`psi_det_alpha_unique`
* :c:data:`psi_det_beta_unique`
Needed by:
.. hlist::
:columns: 3
* :c:data:`det_alpha_norm`
* :c:data:`one_e_dm_mo_alpha`
* :c:data:`psi_bilinear_matrix`
* :c:data:`psi_bilinear_matrix_columns_loc`
* :c:data:`psi_bilinear_matrix_order_reverse`
* :c:data:`psi_bilinear_matrix_transp_values`
.. c:var:: psi_bilinear_matrix_order_reverse
File : :file:`determinants/spindeterminants.irp.f`
.. code:: fortran
integer, allocatable :: psi_bilinear_matrix_order_reverse (N_det)
Order which allows to go from :c:data:`psi_bilinear_matrix` to :c:data:`psi_det`
Needs:
.. hlist::
:columns: 3
* :c:data:`n_det`
* :c:data:`psi_bilinear_matrix_values`
.. c:var:: psi_bilinear_matrix_order_transp_reverse
File : :file:`determinants/spindeterminants.irp.f`
.. code:: fortran
integer, allocatable :: psi_bilinear_matrix_order_transp_reverse (N_det)
Order which allows to go from :c:data:`psi_bilinear_matrix_order_transp` to
:c:data:`psi_bilinear_matrix`
Needs:
.. hlist::
:columns: 3
* :c:data:`n_det`
* :c:data:`psi_bilinear_matrix_transp_values`
.. c:var:: psi_bilinear_matrix_rows
File : :file:`determinants/spindeterminants.irp.f`
.. code:: fortran
double precision, allocatable :: psi_bilinear_matrix_values (N_det,N_states)
integer, allocatable :: psi_bilinear_matrix_rows (N_det)
integer, allocatable :: psi_bilinear_matrix_columns (N_det)
integer, allocatable :: psi_bilinear_matrix_order (N_det)
Sparse coefficient matrix if the wave function is expressed in a bilinear form :
:math:`D_\alpha^\dagger.C.D_\beta`
Rows are :math:`\alpha` determinants and columns are :math:`\beta` .
Order refers to psi_det
Needs:
.. hlist::
:columns: 3
* :c:data:`n_det`
* :c:data:`n_int`
* :c:data:`n_states`
* :c:data:`psi_coef`
* :c:data:`psi_det_sorted_bit`
* :c:data:`psi_det`
* :c:data:`psi_det_alpha_unique`
* :c:data:`psi_det_beta_unique`
Needed by:
.. hlist::
:columns: 3
* :c:data:`det_alpha_norm`
* :c:data:`one_e_dm_mo_alpha`
* :c:data:`psi_bilinear_matrix`
* :c:data:`psi_bilinear_matrix_columns_loc`
* :c:data:`psi_bilinear_matrix_order_reverse`
* :c:data:`psi_bilinear_matrix_transp_values`
.. c:var:: psi_bilinear_matrix_transp_columns
File : :file:`determinants/spindeterminants.irp.f`
.. code:: fortran
double precision, allocatable :: psi_bilinear_matrix_transp_values (N_det,N_states)
integer, allocatable :: psi_bilinear_matrix_transp_rows (N_det)
integer, allocatable :: psi_bilinear_matrix_transp_columns (N_det)
integer, allocatable :: psi_bilinear_matrix_transp_order (N_det)
Transpose of :c:data:`psi_bilinear_matrix`
:math:`D_\beta^\dagger.C^\dagger.D_\alpha`
Rows are :math:`\alpha` determinants and columns are :math:`\beta` , but the matrix is stored in row major
format.
Needs:
.. hlist::
:columns: 3
* :c:data:`n_det`
* :c:data:`n_states`
* :c:data:`psi_bilinear_matrix_values`
* :c:data:`psi_det_sorted_bit`
* :c:data:`psi_det_beta_unique`
Needed by:
.. hlist::
:columns: 3
* :c:data:`one_e_dm_mo_alpha`
* :c:data:`psi_bilinear_matrix_order_transp_reverse`
* :c:data:`psi_bilinear_matrix_transp_rows_loc`
.. c:var:: psi_bilinear_matrix_transp_order
File : :file:`determinants/spindeterminants.irp.f`
.. code:: fortran
double precision, allocatable :: psi_bilinear_matrix_transp_values (N_det,N_states)
integer, allocatable :: psi_bilinear_matrix_transp_rows (N_det)
integer, allocatable :: psi_bilinear_matrix_transp_columns (N_det)
integer, allocatable :: psi_bilinear_matrix_transp_order (N_det)
Transpose of :c:data:`psi_bilinear_matrix`
:math:`D_\beta^\dagger.C^\dagger.D_\alpha`
Rows are :math:`\alpha` determinants and columns are :math:`\beta` , but the matrix is stored in row major
format.
Needs:
.. hlist::
:columns: 3
* :c:data:`n_det`
* :c:data:`n_states`
* :c:data:`psi_bilinear_matrix_values`
* :c:data:`psi_det_sorted_bit`
* :c:data:`psi_det_beta_unique`
Needed by:
.. hlist::
:columns: 3
* :c:data:`one_e_dm_mo_alpha`
* :c:data:`psi_bilinear_matrix_order_transp_reverse`
* :c:data:`psi_bilinear_matrix_transp_rows_loc`
.. c:var:: psi_bilinear_matrix_transp_rows
File : :file:`determinants/spindeterminants.irp.f`
.. code:: fortran
double precision, allocatable :: psi_bilinear_matrix_transp_values (N_det,N_states)
integer, allocatable :: psi_bilinear_matrix_transp_rows (N_det)
integer, allocatable :: psi_bilinear_matrix_transp_columns (N_det)
integer, allocatable :: psi_bilinear_matrix_transp_order (N_det)
Transpose of :c:data:`psi_bilinear_matrix`
:math:`D_\beta^\dagger.C^\dagger.D_\alpha`
Rows are :math:`\alpha` determinants and columns are :math:`\beta` , but the matrix is stored in row major
format.
Needs:
.. hlist::
:columns: 3
* :c:data:`n_det`
* :c:data:`n_states`
* :c:data:`psi_bilinear_matrix_values`
* :c:data:`psi_det_sorted_bit`
* :c:data:`psi_det_beta_unique`
Needed by:
.. hlist::
:columns: 3
* :c:data:`one_e_dm_mo_alpha`
* :c:data:`psi_bilinear_matrix_order_transp_reverse`
* :c:data:`psi_bilinear_matrix_transp_rows_loc`
.. c:var:: psi_bilinear_matrix_transp_rows_loc
File : :file:`determinants/spindeterminants.irp.f`
.. code:: fortran
integer, allocatable :: psi_bilinear_matrix_transp_rows_loc (N_det_alpha_unique+1)
Location of the columns in the :c:data:`psi_bilinear_matrix`
Needs:
.. hlist::
:columns: 3
* :c:data:`n_det`
* :c:data:`psi_bilinear_matrix_transp_values`
* :c:data:`psi_det_alpha_unique`
.. c:var:: psi_bilinear_matrix_transp_values
File : :file:`determinants/spindeterminants.irp.f`
.. code:: fortran
double precision, allocatable :: psi_bilinear_matrix_transp_values (N_det,N_states)
integer, allocatable :: psi_bilinear_matrix_transp_rows (N_det)
integer, allocatable :: psi_bilinear_matrix_transp_columns (N_det)
integer, allocatable :: psi_bilinear_matrix_transp_order (N_det)
Transpose of :c:data:`psi_bilinear_matrix`
:math:`D_\beta^\dagger.C^\dagger.D_\alpha`
Rows are :math:`\alpha` determinants and columns are :math:`\beta` , but the matrix is stored in row major
format.
Needs:
.. hlist::
:columns: 3
* :c:data:`n_det`
* :c:data:`n_states`
* :c:data:`psi_bilinear_matrix_values`
* :c:data:`psi_det_sorted_bit`
* :c:data:`psi_det_beta_unique`
Needed by:
.. hlist::
:columns: 3
* :c:data:`one_e_dm_mo_alpha`
* :c:data:`psi_bilinear_matrix_order_transp_reverse`
* :c:data:`psi_bilinear_matrix_transp_rows_loc`
.. c:var:: psi_bilinear_matrix_values
File : :file:`determinants/spindeterminants.irp.f`
.. code:: fortran
double precision, allocatable :: psi_bilinear_matrix_values (N_det,N_states)
integer, allocatable :: psi_bilinear_matrix_rows (N_det)
integer, allocatable :: psi_bilinear_matrix_columns (N_det)
integer, allocatable :: psi_bilinear_matrix_order (N_det)
Sparse coefficient matrix if the wave function is expressed in a bilinear form :
:math:`D_\alpha^\dagger.C.D_\beta`
Rows are :math:`\alpha` determinants and columns are :math:`\beta` .
Order refers to psi_det
Needs:
.. hlist::
:columns: 3
* :c:data:`n_det`
* :c:data:`n_int`
* :c:data:`n_states`
* :c:data:`psi_coef`
* :c:data:`psi_det_sorted_bit`
* :c:data:`psi_det`
* :c:data:`psi_det_alpha_unique`
* :c:data:`psi_det_beta_unique`
Needed by:
.. hlist::
:columns: 3
* :c:data:`det_alpha_norm`
* :c:data:`one_e_dm_mo_alpha`
* :c:data:`psi_bilinear_matrix`
* :c:data:`psi_bilinear_matrix_columns_loc`
* :c:data:`psi_bilinear_matrix_order_reverse`
* :c:data:`psi_bilinear_matrix_transp_values`
.. c:var:: psi_cas
File : :file:`determinants/psi_cas.irp.f`
.. code:: fortran
integer(bit_kind), allocatable :: psi_cas (N_int,2,psi_det_size)
double precision, allocatable :: psi_cas_coef (psi_det_size,n_states)
integer, allocatable :: idx_cas (psi_det_size)
integer :: n_det_cas
|CAS| wave function, defined from the application of the |CAS| bitmask on the
determinants. idx_cas gives the indice of the |CAS| determinant in psi_det.
Needs:
.. hlist::
:columns: 3
* :c:data:`cas_bitmask`
* :c:data:`hf_bitmask`
* :c:data:`mpi_master`
* :c:data:`n_cas_bitmask`
* :c:data:`n_det`
* :c:data:`n_int`
* :c:data:`n_states`
* :c:data:`psi_coef`
* :c:data:`psi_det`
* :c:data:`psi_det_size`
Needed by:
.. hlist::
:columns: 3
* :c:data:`h_matrix_cas`
* :c:data:`psi_cas_energy`
* :c:data:`psi_cas_sorted_bit`
* :c:data:`psi_coef_cas_diagonalized`
* :c:data:`psi_non_cas`
* :c:data:`psi_non_cas_sorted_bit`
.. c:var:: psi_cas_coef
File : :file:`determinants/psi_cas.irp.f`
.. code:: fortran
integer(bit_kind), allocatable :: psi_cas (N_int,2,psi_det_size)
double precision, allocatable :: psi_cas_coef (psi_det_size,n_states)
integer, allocatable :: idx_cas (psi_det_size)
integer :: n_det_cas
|CAS| wave function, defined from the application of the |CAS| bitmask on the
determinants. idx_cas gives the indice of the |CAS| determinant in psi_det.
Needs:
.. hlist::
:columns: 3
* :c:data:`cas_bitmask`
* :c:data:`hf_bitmask`
* :c:data:`mpi_master`
* :c:data:`n_cas_bitmask`
* :c:data:`n_det`
* :c:data:`n_int`
* :c:data:`n_states`
* :c:data:`psi_coef`
* :c:data:`psi_det`
* :c:data:`psi_det_size`
Needed by:
.. hlist::
:columns: 3
* :c:data:`h_matrix_cas`
* :c:data:`psi_cas_energy`
* :c:data:`psi_cas_sorted_bit`
* :c:data:`psi_coef_cas_diagonalized`
* :c:data:`psi_non_cas`
* :c:data:`psi_non_cas_sorted_bit`
.. c:var:: psi_cas_coef_sorted_bit
File : :file:`determinants/psi_cas.irp.f`
.. code:: fortran
integer(bit_kind), allocatable :: psi_cas_sorted_bit (N_int,2,psi_det_size)
double precision, allocatable :: psi_cas_coef_sorted_bit (psi_det_size,N_states)
|CAS| determinants sorted to accelerate the search of a random determinant in the wave
function.
Needs:
.. hlist::
:columns: 3
* :c:data:`n_int`
* :c:data:`n_states`
* :c:data:`psi_cas`
* :c:data:`psi_det_size`
.. c:var:: psi_cas_energy
File : :file:`determinants/psi_cas.irp.f`
.. code:: fortran
double precision, allocatable :: psi_cas_energy (N_states)
Variational energy of :math:`\Psi_{CAS}` , where :math:`\Psi_{CAS} = \sum_{I \in CAS} \I \rangle \langle I | \Psi \rangle` .
Needs:
.. hlist::
:columns: 3
* :c:data:`h_matrix_cas`
* :c:data:`n_states`
* :c:data:`psi_cas`
.. c:var:: psi_cas_energy_diagonalized
File : :file:`determinants/psi_cas.irp.f`
.. code:: fortran
double precision, allocatable :: psi_coef_cas_diagonalized (N_det_cas,N_states)
double precision, allocatable :: psi_cas_energy_diagonalized (N_states)
Needs:
.. hlist::
:columns: 3
* :c:data:`h_matrix_cas`
* :c:data:`n_states`
* :c:data:`psi_cas`
.. c:var:: psi_cas_sorted_bit
File : :file:`determinants/psi_cas.irp.f`
.. code:: fortran
integer(bit_kind), allocatable :: psi_cas_sorted_bit (N_int,2,psi_det_size)
double precision, allocatable :: psi_cas_coef_sorted_bit (psi_det_size,N_states)
|CAS| determinants sorted to accelerate the search of a random determinant in the wave
function.
Needs:
.. hlist::
:columns: 3
* :c:data:`n_int`
* :c:data:`n_states`
* :c:data:`psi_cas`
* :c:data:`psi_det_size`
.. c:var:: psi_coef
File : :file:`determinants/determinants.irp.f`
.. code:: fortran
double precision, allocatable :: psi_coef (psi_det_size,N_states)
The wave function coefficients. Initialized with Hartree-Fock if the |EZFIO| file
is empty.
Needs:
.. hlist::
:columns: 3
* :c:data:`ezfio_filename`
* :c:data:`mo_label`
* :c:data:`mpi_master`
* :c:data:`n_det`
* :c:data:`n_states`
* :c:data:`psi_det_size`
* :c:data:`read_wf`
Needed by:
.. hlist::
:columns: 3
* :c:data:`barycentric_electronic_energy`
* :c:data:`c0_weight`
* :c:data:`ci_electronic_energy`
* :c:data:`dressed_column_idx`
* :c:data:`psi_average_norm_contrib`
* :c:data:`psi_bilinear_matrix_values`
* :c:data:`psi_cas`
* :c:data:`psi_coef_max`
* :c:data:`psi_det_sorted`
* :c:data:`psi_det_sorted_bit`
* :c:data:`psi_energy`
* :c:data:`psi_energy_two_e`
* :c:data:`psi_non_cas`
* :c:data:`s2_values`
* :c:data:`weight_occ_pattern`
.. c:var:: psi_coef_cas_diagonalized
File : :file:`determinants/psi_cas.irp.f`
.. code:: fortran
double precision, allocatable :: psi_coef_cas_diagonalized (N_det_cas,N_states)
double precision, allocatable :: psi_cas_energy_diagonalized (N_states)
Needs:
.. hlist::
:columns: 3
* :c:data:`h_matrix_cas`
* :c:data:`n_states`
* :c:data:`psi_cas`
.. c:var:: psi_coef_max
File : :file:`determinants/determinants.irp.f`
.. code:: fortran
double precision, allocatable :: psi_coef_max (N_states)
double precision, allocatable :: psi_coef_min (N_states)
double precision, allocatable :: abs_psi_coef_max (N_states)
double precision, allocatable :: abs_psi_coef_min (N_states)
Max and min values of the coefficients
Needs:
.. hlist::
:columns: 3
* :c:data:`mpi_master`
* :c:data:`n_states`
* :c:data:`psi_coef`
.. c:var:: psi_coef_min
File : :file:`determinants/determinants.irp.f`
.. code:: fortran
double precision, allocatable :: psi_coef_max (N_states)
double precision, allocatable :: psi_coef_min (N_states)
double precision, allocatable :: abs_psi_coef_max (N_states)
double precision, allocatable :: abs_psi_coef_min (N_states)
Max and min values of the coefficients
Needs:
.. hlist::
:columns: 3
* :c:data:`mpi_master`
* :c:data:`n_states`
* :c:data:`psi_coef`
.. c:var:: psi_coef_sorted
File : :file:`determinants/determinants.irp.f`
.. code:: fortran
integer(bit_kind), allocatable :: psi_det_sorted (N_int,2,psi_det_size)
double precision, allocatable :: psi_coef_sorted (psi_det_size,N_states)
double precision, allocatable :: psi_average_norm_contrib_sorted (psi_det_size)
integer, allocatable :: psi_det_sorted_order (psi_det_size)
Wave function sorted by determinants contribution to the norm (state-averaged)
psi_det_sorted_order(i) -> k : index in psi_det
Needs:
.. hlist::
:columns: 3
* :c:data:`n_det`
* :c:data:`n_int`
* :c:data:`n_states`
* :c:data:`psi_average_norm_contrib`
* :c:data:`psi_coef`
* :c:data:`psi_det`
* :c:data:`psi_det_size`
Needed by:
.. hlist::
:columns: 3
* :c:data:`n_det_generators`
* :c:data:`n_det_selectors`
* :c:data:`psi_det_generators`
* :c:data:`psi_det_sorted_gen`
* :c:data:`psi_selectors`
.. c:var:: psi_coef_sorted_bit
File : :file:`determinants/determinants.irp.f`
.. code:: fortran
integer(bit_kind), allocatable :: psi_det_sorted_bit (N_int,2,psi_det_size)
double precision, allocatable :: psi_coef_sorted_bit (psi_det_size,N_states)
Determinants on which we apply :math:`\langle i|H|psi \rangle` for perturbation.
They are sorted by determinants interpreted as integers. Useful
to accelerate the search of a random determinant in the wave
function.
Needs:
.. hlist::
:columns: 3
* :c:data:`n_det`
* :c:data:`n_int`
* :c:data:`n_states`
* :c:data:`psi_coef`
* :c:data:`psi_det`
* :c:data:`psi_det_size`
Needed by:
.. hlist::
:columns: 3
* :c:data:`psi_bilinear_matrix_transp_values`
* :c:data:`psi_bilinear_matrix_values`
.. c:var:: psi_det
File : :file:`determinants/determinants.irp.f`
.. code:: fortran
integer(bit_kind), allocatable :: psi_det (N_int,2,psi_det_size)
The determinants of the wave function. Initialized with Hartree-Fock if the |EZFIO| file
is empty.
Needs:
.. hlist::
:columns: 3
* :c:data:`ezfio_filename`
* :c:data:`hf_bitmask`
* :c:data:`mo_coef`
* :c:data:`mo_label`
* :c:data:`mpi_master`
* :c:data:`n_det`
* :c:data:`n_int`
* :c:data:`psi_det_size`
* :c:data:`read_wf`
Needed by:
.. hlist::
:columns: 3
* :c:data:`ci_electronic_energy`
* :c:data:`det_to_occ_pattern`
* :c:data:`diagonal_h_matrix_on_psi_det`
* :c:data:`h_matrix_all_dets`
* :c:data:`max_degree_exc`
* :c:data:`one_e_dm_mo_alpha`
* :c:data:`psi_bilinear_matrix_values`
* :c:data:`psi_cas`
* :c:data:`psi_det_alpha`
* :c:data:`psi_det_beta`
* :c:data:`psi_det_hii`
* :c:data:`psi_det_sorted`
* :c:data:`psi_det_sorted_bit`
* :c:data:`psi_energy`
* :c:data:`psi_energy_two_e`
* :c:data:`psi_non_cas`
* :c:data:`psi_occ_pattern`
* :c:data:`s2_matrix_all_dets`
* :c:data:`s2_values`
.. c:var:: psi_det_alpha
File : :file:`determinants/spindeterminants.irp.f`
.. code:: fortran
integer(bit_kind), allocatable :: psi_det_alpha (N_int,psi_det_size)
List of :math:`\alpha` determinants of psi_det
Needs:
.. hlist::
:columns: 3
* :c:data:`n_det`
* :c:data:`n_int`
* :c:data:`psi_det`
* :c:data:`psi_det_size`
Needed by:
.. hlist::
:columns: 3
* :c:data:`psi_det_alpha_unique`
.. c:var:: psi_det_alpha_unique
File : :file:`determinants/spindeterminants.irp.f_template_144`
.. code:: fortran
integer(bit_kind), allocatable :: psi_det_alpha_unique (N_int,psi_det_size)
integer :: n_det_alpha_unique
Unique :math:`\alpha` determinants
Needs:
.. hlist::
:columns: 3
* :c:data:`mpi_master`
* :c:data:`n_det`
* :c:data:`n_int`
* :c:data:`psi_det_alpha`
* :c:data:`psi_det_size`
Needed by:
.. hlist::
:columns: 3
* :c:data:`det_alpha_norm`
* :c:data:`one_e_dm_mo_alpha`
* :c:data:`psi_bilinear_matrix`
* :c:data:`psi_bilinear_matrix_transp_rows_loc`
* :c:data:`psi_bilinear_matrix_values`
* :c:data:`singles_alpha_csc`
* :c:data:`singles_alpha_csc_idx`
.. c:var:: psi_det_beta
File : :file:`determinants/spindeterminants.irp.f`
.. code:: fortran
integer(bit_kind), allocatable :: psi_det_beta (N_int,psi_det_size)
List of :math:`\beta` determinants of psi_det
Needs:
.. hlist::
:columns: 3
* :c:data:`n_det`
* :c:data:`n_int`
* :c:data:`psi_det`
* :c:data:`psi_det_size`
Needed by:
.. hlist::
:columns: 3
* :c:data:`psi_det_beta_unique`
.. c:var:: psi_det_beta_unique
File : :file:`determinants/spindeterminants.irp.f_template_144`
.. code:: fortran
integer(bit_kind), allocatable :: psi_det_beta_unique (N_int,psi_det_size)
integer :: n_det_beta_unique
Unique :math:`\beta` determinants
Needs:
.. hlist::
:columns: 3
* :c:data:`mpi_master`
* :c:data:`n_det`
* :c:data:`n_int`
* :c:data:`psi_det_beta`
* :c:data:`psi_det_size`
Needed by:
.. hlist::
:columns: 3
* :c:data:`det_alpha_norm`
* :c:data:`one_e_dm_mo_alpha`
* :c:data:`psi_bilinear_matrix`
* :c:data:`psi_bilinear_matrix_columns_loc`
* :c:data:`psi_bilinear_matrix_transp_values`
* :c:data:`psi_bilinear_matrix_values`
* :c:data:`singles_beta_csc`
* :c:data:`singles_beta_csc_idx`
.. c:var:: psi_det_hii
File : :file:`determinants/determinants.irp.f`
.. code:: fortran
double precision, allocatable :: psi_det_hii (N_det)
:math:`\langle i|h|i \rangle` for all determinants.
Needs:
.. hlist::
:columns: 3
* :c:data:`elec_num`
* :c:data:`n_det`
* :c:data:`n_int`
* :c:data:`psi_det`
* :c:data:`ref_bitmask`
* :c:data:`ref_bitmask_energy`
Needed by:
.. hlist::
:columns: 3
* :c:data:`psi_occ_pattern_hii`
.. c:var:: psi_det_size
File : :file:`determinants/determinants.irp.f`
.. code:: fortran
integer :: psi_det_size
Size of the psi_det and psi_coef arrays
Needs:
.. hlist::
:columns: 3
* :c:data:`ezfio_filename`
* :c:data:`mpi_master`
Needed by:
.. hlist::
:columns: 3
* :c:data:`psi_average_norm_contrib`
* :c:data:`psi_cas`
* :c:data:`psi_cas_sorted_bit`
* :c:data:`psi_coef`
* :c:data:`psi_det`
* :c:data:`psi_det_alpha`
* :c:data:`psi_det_alpha_unique`
* :c:data:`psi_det_beta`
* :c:data:`psi_det_beta_unique`
* :c:data:`psi_det_generators`
* :c:data:`psi_det_sorted`
* :c:data:`psi_det_sorted_bit`
* :c:data:`psi_det_sorted_gen`
* :c:data:`psi_energy`
* :c:data:`psi_energy_two_e`
* :c:data:`psi_non_cas`
* :c:data:`psi_non_cas_sorted_bit`
* :c:data:`psi_occ_pattern`
* :c:data:`psi_selectors_size`
* :c:data:`s2_values`
.. c:var:: psi_det_sorted
File : :file:`determinants/determinants.irp.f`
.. code:: fortran
integer(bit_kind), allocatable :: psi_det_sorted (N_int,2,psi_det_size)
double precision, allocatable :: psi_coef_sorted (psi_det_size,N_states)
double precision, allocatable :: psi_average_norm_contrib_sorted (psi_det_size)
integer, allocatable :: psi_det_sorted_order (psi_det_size)
Wave function sorted by determinants contribution to the norm (state-averaged)
psi_det_sorted_order(i) -> k : index in psi_det
Needs:
.. hlist::
:columns: 3
* :c:data:`n_det`
* :c:data:`n_int`
* :c:data:`n_states`
* :c:data:`psi_average_norm_contrib`
* :c:data:`psi_coef`
* :c:data:`psi_det`
* :c:data:`psi_det_size`
Needed by:
.. hlist::
:columns: 3
* :c:data:`n_det_generators`
* :c:data:`n_det_selectors`
* :c:data:`psi_det_generators`
* :c:data:`psi_det_sorted_gen`
* :c:data:`psi_selectors`
.. c:var:: psi_det_sorted_bit
File : :file:`determinants/determinants.irp.f`
.. code:: fortran
integer(bit_kind), allocatable :: psi_det_sorted_bit (N_int,2,psi_det_size)
double precision, allocatable :: psi_coef_sorted_bit (psi_det_size,N_states)
Determinants on which we apply :math:`\langle i|H|psi \rangle` for perturbation.
They are sorted by determinants interpreted as integers. Useful
to accelerate the search of a random determinant in the wave
function.
Needs:
.. hlist::
:columns: 3
* :c:data:`n_det`
* :c:data:`n_int`
* :c:data:`n_states`
* :c:data:`psi_coef`
* :c:data:`psi_det`
* :c:data:`psi_det_size`
Needed by:
.. hlist::
:columns: 3
* :c:data:`psi_bilinear_matrix_transp_values`
* :c:data:`psi_bilinear_matrix_values`
.. c:var:: psi_det_sorted_order
File : :file:`determinants/determinants.irp.f`
.. code:: fortran
integer(bit_kind), allocatable :: psi_det_sorted (N_int,2,psi_det_size)
double precision, allocatable :: psi_coef_sorted (psi_det_size,N_states)
double precision, allocatable :: psi_average_norm_contrib_sorted (psi_det_size)
integer, allocatable :: psi_det_sorted_order (psi_det_size)
Wave function sorted by determinants contribution to the norm (state-averaged)
psi_det_sorted_order(i) -> k : index in psi_det
Needs:
.. hlist::
:columns: 3
* :c:data:`n_det`
* :c:data:`n_int`
* :c:data:`n_states`
* :c:data:`psi_average_norm_contrib`
* :c:data:`psi_coef`
* :c:data:`psi_det`
* :c:data:`psi_det_size`
Needed by:
.. hlist::
:columns: 3
* :c:data:`n_det_generators`
* :c:data:`n_det_selectors`
* :c:data:`psi_det_generators`
* :c:data:`psi_det_sorted_gen`
* :c:data:`psi_selectors`
.. c:var:: psi_energy_h_core
File : :file:`determinants/psi_energy_mono_elec.irp.f`
.. code:: fortran
double precision, allocatable :: psi_energy_h_core (N_states)
psi_energy_h_core = :math:`\langle \Psi | h_{core} |\Psi \rangle`
computed using the :c:data:`one_e_dm_mo_alpha` +
:c:data:`one_e_dm_mo_beta` and :c:data:`mo_one_e_integrals`
Needs:
.. hlist::
:columns: 3
* :c:data:`elec_alpha_num`
* :c:data:`elec_beta_num`
* :c:data:`mo_num`
* :c:data:`mo_one_e_integrals`
* :c:data:`n_states`
* :c:data:`one_e_dm_mo_alpha`
.. c:var:: psi_non_cas
File : :file:`determinants/psi_cas.irp.f`
.. code:: fortran
integer(bit_kind), allocatable :: psi_non_cas (N_int,2,psi_det_size)
double precision, allocatable :: psi_non_cas_coef (psi_det_size,n_states)
integer, allocatable :: idx_non_cas (psi_det_size)
integer :: n_det_non_cas
Set of determinants which are not part of the |CAS|, defined from the application
of the |CAS| bitmask on the determinants.
idx_non_cas gives the indice of the determinant in psi_det.
Needs:
.. hlist::
:columns: 3
* :c:data:`n_det`
* :c:data:`n_int`
* :c:data:`n_states`
* :c:data:`psi_cas`
* :c:data:`psi_coef`
* :c:data:`psi_det`
* :c:data:`psi_det_size`
Needed by:
.. hlist::
:columns: 3
* :c:data:`psi_non_cas_sorted_bit`
.. c:var:: psi_non_cas_coef
File : :file:`determinants/psi_cas.irp.f`
.. code:: fortran
integer(bit_kind), allocatable :: psi_non_cas (N_int,2,psi_det_size)
double precision, allocatable :: psi_non_cas_coef (psi_det_size,n_states)
integer, allocatable :: idx_non_cas (psi_det_size)
integer :: n_det_non_cas
Set of determinants which are not part of the |CAS|, defined from the application
of the |CAS| bitmask on the determinants.
idx_non_cas gives the indice of the determinant in psi_det.
Needs:
.. hlist::
:columns: 3
* :c:data:`n_det`
* :c:data:`n_int`
* :c:data:`n_states`
* :c:data:`psi_cas`
* :c:data:`psi_coef`
* :c:data:`psi_det`
* :c:data:`psi_det_size`
Needed by:
.. hlist::
:columns: 3
* :c:data:`psi_non_cas_sorted_bit`
.. c:var:: psi_non_cas_coef_sorted_bit
File : :file:`determinants/psi_cas.irp.f`
.. code:: fortran
integer(bit_kind), allocatable :: psi_non_cas_sorted_bit (N_int,2,psi_det_size)
double precision, allocatable :: psi_non_cas_coef_sorted_bit (psi_det_size,N_states)
|CAS| determinants sorted to accelerate the search of a random determinant in the wave
function.
Needs:
.. hlist::
:columns: 3
* :c:data:`n_int`
* :c:data:`n_states`
* :c:data:`psi_cas`
* :c:data:`psi_det_size`
* :c:data:`psi_non_cas`
.. c:var:: psi_non_cas_sorted_bit
File : :file:`determinants/psi_cas.irp.f`
.. code:: fortran
integer(bit_kind), allocatable :: psi_non_cas_sorted_bit (N_int,2,psi_det_size)
double precision, allocatable :: psi_non_cas_coef_sorted_bit (psi_det_size,N_states)
|CAS| determinants sorted to accelerate the search of a random determinant in the wave
function.
Needs:
.. hlist::
:columns: 3
* :c:data:`n_int`
* :c:data:`n_states`
* :c:data:`psi_cas`
* :c:data:`psi_det_size`
* :c:data:`psi_non_cas`
.. c:var:: psi_occ_pattern
File : :file:`determinants/occ_pattern.irp.f`
.. code:: fortran
integer(bit_kind), allocatable :: psi_occ_pattern (N_int,2,psi_det_size)
integer :: n_occ_pattern
Array of the occ_patterns present in the wave function.
psi_occ_pattern(:,1,j) = j-th occ_pattern of the wave function : represents all the single occupations
psi_occ_pattern(:,2,j) = j-th occ_pattern of the wave function : represents all the double occupations
The occ patterns are sorted by :c:func:`occ_pattern_search_key`
Needs:
.. hlist::
:columns: 3
* :c:data:`elec_alpha_num`
* :c:data:`n_det`
* :c:data:`n_int`
* :c:data:`psi_det`
* :c:data:`psi_det_size`
Needed by:
.. hlist::
:columns: 3
* :c:data:`det_to_occ_pattern`
* :c:data:`psi_occ_pattern_hii`
* :c:data:`weight_occ_pattern`
.. c:var:: psi_occ_pattern_hii
File : :file:`determinants/occ_pattern.irp.f`
.. code:: fortran
double precision, allocatable :: psi_occ_pattern_hii (N_occ_pattern)
:math:`\langle I|H|I \rangle` where :math:`|I\rangle` is an occupation pattern.
This is the minimum :math:`H_{ii}` , where the :math:`|i\rangle` are the
determinants of :math:`|I\rangle` .
Needs:
.. hlist::
:columns: 3
* :c:data:`det_to_occ_pattern`
* :c:data:`n_det`
* :c:data:`psi_det_hii`
* :c:data:`psi_occ_pattern`
.. c:var:: ref_bitmask_e_n_energy
File : :file:`determinants/ref_bitmask.irp.f`
.. code:: fortran
double precision :: ref_bitmask_energy
double precision :: ref_bitmask_one_e_energy
double precision :: ref_bitmask_kinetic_energy
double precision :: ref_bitmask_e_n_energy
double precision :: ref_bitmask_two_e_energy
Energy of the reference bitmask used in Slater rules
Needs:
.. hlist::
:columns: 3
* :c:data:`elec_alpha_num`
* :c:data:`elec_beta_num`
* :c:data:`mo_integrals_n_e`
* :c:data:`mo_kinetic_integrals`
* :c:data:`mo_one_e_integrals`
* :c:data:`mo_two_e_integrals_jj`
* :c:data:`n_int`
* :c:data:`ref_bitmask`
Needed by:
.. hlist::
:columns: 3
* :c:data:`coef_hf_selector`
* :c:data:`diagonal_h_matrix_on_psi_det`
* :c:data:`psi_det_hii`
* :c:data:`psi_selectors_diag_h_mat`
.. c:var:: ref_bitmask_energy
File : :file:`determinants/ref_bitmask.irp.f`
.. code:: fortran
double precision :: ref_bitmask_energy
double precision :: ref_bitmask_one_e_energy
double precision :: ref_bitmask_kinetic_energy
double precision :: ref_bitmask_e_n_energy
double precision :: ref_bitmask_two_e_energy
Energy of the reference bitmask used in Slater rules
Needs:
.. hlist::
:columns: 3
* :c:data:`elec_alpha_num`
* :c:data:`elec_beta_num`
* :c:data:`mo_integrals_n_e`
* :c:data:`mo_kinetic_integrals`
* :c:data:`mo_one_e_integrals`
* :c:data:`mo_two_e_integrals_jj`
* :c:data:`n_int`
* :c:data:`ref_bitmask`
Needed by:
.. hlist::
:columns: 3
* :c:data:`coef_hf_selector`
* :c:data:`diagonal_h_matrix_on_psi_det`
* :c:data:`psi_det_hii`
* :c:data:`psi_selectors_diag_h_mat`
.. c:var:: ref_bitmask_kinetic_energy
File : :file:`determinants/ref_bitmask.irp.f`
.. code:: fortran
double precision :: ref_bitmask_energy
double precision :: ref_bitmask_one_e_energy
double precision :: ref_bitmask_kinetic_energy
double precision :: ref_bitmask_e_n_energy
double precision :: ref_bitmask_two_e_energy
Energy of the reference bitmask used in Slater rules
Needs:
.. hlist::
:columns: 3
* :c:data:`elec_alpha_num`
* :c:data:`elec_beta_num`
* :c:data:`mo_integrals_n_e`
* :c:data:`mo_kinetic_integrals`
* :c:data:`mo_one_e_integrals`
* :c:data:`mo_two_e_integrals_jj`
* :c:data:`n_int`
* :c:data:`ref_bitmask`
Needed by:
.. hlist::
:columns: 3
* :c:data:`coef_hf_selector`
* :c:data:`diagonal_h_matrix_on_psi_det`
* :c:data:`psi_det_hii`
* :c:data:`psi_selectors_diag_h_mat`
.. c:var:: ref_bitmask_one_e_energy
File : :file:`determinants/ref_bitmask.irp.f`
.. code:: fortran
double precision :: ref_bitmask_energy
double precision :: ref_bitmask_one_e_energy
double precision :: ref_bitmask_kinetic_energy
double precision :: ref_bitmask_e_n_energy
double precision :: ref_bitmask_two_e_energy
Energy of the reference bitmask used in Slater rules
Needs:
.. hlist::
:columns: 3
* :c:data:`elec_alpha_num`
* :c:data:`elec_beta_num`
* :c:data:`mo_integrals_n_e`
* :c:data:`mo_kinetic_integrals`
* :c:data:`mo_one_e_integrals`
* :c:data:`mo_two_e_integrals_jj`
* :c:data:`n_int`
* :c:data:`ref_bitmask`
Needed by:
.. hlist::
:columns: 3
* :c:data:`coef_hf_selector`
* :c:data:`diagonal_h_matrix_on_psi_det`
* :c:data:`psi_det_hii`
* :c:data:`psi_selectors_diag_h_mat`
.. c:var:: ref_bitmask_two_e_energy
File : :file:`determinants/ref_bitmask.irp.f`
.. code:: fortran
double precision :: ref_bitmask_energy
double precision :: ref_bitmask_one_e_energy
double precision :: ref_bitmask_kinetic_energy
double precision :: ref_bitmask_e_n_energy
double precision :: ref_bitmask_two_e_energy
Energy of the reference bitmask used in Slater rules
Needs:
.. hlist::
:columns: 3
* :c:data:`elec_alpha_num`
* :c:data:`elec_beta_num`
* :c:data:`mo_integrals_n_e`
* :c:data:`mo_kinetic_integrals`
* :c:data:`mo_one_e_integrals`
* :c:data:`mo_two_e_integrals_jj`
* :c:data:`n_int`
* :c:data:`ref_bitmask`
Needed by:
.. hlist::
:columns: 3
* :c:data:`coef_hf_selector`
* :c:data:`diagonal_h_matrix_on_psi_det`
* :c:data:`psi_det_hii`
* :c:data:`psi_selectors_diag_h_mat`
.. c:var:: ref_closed_shell_bitmask
File : :file:`determinants/single_excitations.irp.f`
.. code:: fortran
integer(bit_kind), allocatable :: ref_closed_shell_bitmask (N_int,2)
Needs:
.. hlist::
:columns: 3
* :c:data:`elec_alpha_num`
* :c:data:`elec_beta_num`
* :c:data:`n_int`
* :c:data:`ref_bitmask`
Needed by:
.. hlist::
:columns: 3
* :c:data:`fock_operator_closed_shell_ref_bitmask`
* :c:data:`fock_wee_closed_shell`
.. c:var:: s2_matrix_all_dets
File : :file:`determinants/utils.irp.f`
.. code:: fortran
double precision, allocatable :: s2_matrix_all_dets (N_det,N_det)
|S^2| matrix on the basis of the Slater determinants defined by psi_det
Needs:
.. hlist::
:columns: 3
* :c:data:`n_det`
* :c:data:`n_int`
* :c:data:`psi_det`
Needed by:
.. hlist::
:columns: 3
* :c:data:`ci_electronic_energy`
.. c:var:: s2_values
File : :file:`determinants/s2.irp.f`
.. code:: fortran
double precision, allocatable :: s2_values (N_states)
array of the averaged values of the S^2 operator on the various states
Needs:
.. hlist::
:columns: 3
* :c:data:`n_det`
* :c:data:`n_int`
* :c:data:`n_states`
* :c:data:`psi_coef`
* :c:data:`psi_det`
* :c:data:`psi_det_size`
* :c:data:`s_z`
.. c:var:: s_z
File : :file:`determinants/s2.irp.f`
.. code:: fortran
double precision :: s_z
double precision :: s_z2_sz
z component of the Spin
Needs:
.. hlist::
:columns: 3
* :c:data:`elec_alpha_num`
* :c:data:`elec_beta_num`
Needed by:
.. hlist::
:columns: 3
* :c:data:`ci_electronic_energy`
* :c:data:`s2_values`
.. c:var:: s_z2_sz
File : :file:`determinants/s2.irp.f`
.. code:: fortran
double precision :: s_z
double precision :: s_z2_sz
z component of the Spin
Needs:
.. hlist::
:columns: 3
* :c:data:`elec_alpha_num`
* :c:data:`elec_beta_num`
Needed by:
.. hlist::
:columns: 3
* :c:data:`ci_electronic_energy`
* :c:data:`s2_values`
.. c:var:: single_exc_bitmask
File : :file:`determinants/determinants_bitmasks.irp.f`
.. code:: fortran
integer(bit_kind), allocatable :: single_exc_bitmask (N_int,2,N_single_exc_bitmasks)
single_exc_bitmask(:,1,i) is the bitmask for holes
single_exc_bitmask(:,2,i) is the bitmask for particles
for a given couple of hole/particle excitations i.
Needs:
.. hlist::
:columns: 3
* :c:data:`hf_bitmask`
* :c:data:`n_int`
* :c:data:`n_single_exc_bitmasks`
.. c:var:: singles_alpha_csc
File : :file:`determinants/spindeterminants.irp.f`
.. code:: fortran
integer, allocatable :: singles_alpha_csc (singles_alpha_csc_size)
Indices of all single excitations
Needs:
.. hlist::
:columns: 3
* :c:data:`n_int`
* :c:data:`psi_det_alpha_unique`
* :c:data:`singles_alpha_csc_idx`
.. c:var:: singles_alpha_csc_idx
File : :file:`determinants/spindeterminants.irp.f`
.. code:: fortran
integer*8, allocatable :: singles_alpha_csc_idx (N_det_alpha_unique+1)
integer*8 :: singles_alpha_csc_size
singles_alpha_csc_size : Dimension of the :c:data:`singles_alpha_csc` array
singles_alpha_csc_idx : Index where the single excitations of determinant i start
Needs:
.. hlist::
:columns: 3
* :c:data:`elec_alpha_num`
* :c:data:`mo_num`
* :c:data:`n_int`
* :c:data:`psi_det_alpha_unique`
Needed by:
.. hlist::
:columns: 3
* :c:data:`singles_alpha_csc`
.. c:var:: singles_alpha_csc_size
File : :file:`determinants/spindeterminants.irp.f`
.. code:: fortran
integer*8, allocatable :: singles_alpha_csc_idx (N_det_alpha_unique+1)
integer*8 :: singles_alpha_csc_size
singles_alpha_csc_size : Dimension of the :c:data:`singles_alpha_csc` array
singles_alpha_csc_idx : Index where the single excitations of determinant i start
Needs:
.. hlist::
:columns: 3
* :c:data:`elec_alpha_num`
* :c:data:`mo_num`
* :c:data:`n_int`
* :c:data:`psi_det_alpha_unique`
Needed by:
.. hlist::
:columns: 3
* :c:data:`singles_alpha_csc`
.. c:var:: singles_beta_csc
File : :file:`determinants/spindeterminants.irp.f`
.. code:: fortran
integer, allocatable :: singles_beta_csc (singles_beta_csc_size)
Indices of all single excitations
Needs:
.. hlist::
:columns: 3
* :c:data:`n_int`
* :c:data:`psi_det_beta_unique`
* :c:data:`singles_beta_csc_idx`
.. c:var:: singles_beta_csc_idx
File : :file:`determinants/spindeterminants.irp.f`
.. code:: fortran
integer*8, allocatable :: singles_beta_csc_idx (N_det_beta_unique+1)
integer*8 :: singles_beta_csc_size
singles_beta_csc_size : Dimension of the :c:data:`singles_beta_csc` array
singles_beta_csc_idx : Index where the single excitations of determinant i start
Needs:
.. hlist::
:columns: 3
* :c:data:`elec_beta_num`
* :c:data:`mo_num`
* :c:data:`n_int`
* :c:data:`psi_det_beta_unique`
Needed by:
.. hlist::
:columns: 3
* :c:data:`singles_beta_csc`
.. c:var:: singles_beta_csc_size
File : :file:`determinants/spindeterminants.irp.f`
.. code:: fortran
integer*8, allocatable :: singles_beta_csc_idx (N_det_beta_unique+1)
integer*8 :: singles_beta_csc_size
singles_beta_csc_size : Dimension of the :c:data:`singles_beta_csc` array
singles_beta_csc_idx : Index where the single excitations of determinant i start
Needs:
.. hlist::
:columns: 3
* :c:data:`elec_beta_num`
* :c:data:`mo_num`
* :c:data:`n_int`
* :c:data:`psi_det_beta_unique`
Needed by:
.. hlist::
:columns: 3
* :c:data:`singles_beta_csc`
.. c:var:: state_average_weight
File : :file:`determinants/density_matrix.irp.f`
.. code:: fortran
double precision, allocatable :: state_average_weight (N_states)
Weights in the state-average calculation of the density matrix
Needs:
.. hlist::
:columns: 3
* :c:data:`c0_weight`
* :c:data:`n_states`
* :c:data:`used_weight`
Needed by:
.. hlist::
:columns: 3
* :c:data:`det_alpha_norm`
* :c:data:`one_e_dm_mo_alpha_average`
* :c:data:`psi_average_norm_contrib`
.. c:var:: weight_occ_pattern
File : :file:`determinants/occ_pattern.irp.f`
.. code:: fortran
double precision, allocatable :: weight_occ_pattern (N_occ_pattern,N_states)
Weight of the occupation patterns in the wave function
Needs:
.. hlist::
:columns: 3
* :c:data:`det_to_occ_pattern`
* :c:data:`n_det`
* :c:data:`n_states`
* :c:data:`psi_coef`
* :c:data:`psi_occ_pattern`
Subroutines / functions
-----------------------
.. c:function:: a_operator:
File : :file:`determinants/slater_rules.irp.f`
.. code:: fortran
subroutine a_operator(iorb,ispin,key,hjj,Nint,na,nb)
Needed for :c:func:`diag_H_mat_elem`.
Needs:
.. hlist::
:columns: 3
* :c:data:`mo_two_e_integrals_jj`
* :c:data:`mo_one_e_integrals`
Called by:
.. hlist::
:columns: 3
* :c:func:`diag_h_mat_elem`
Calls:
.. hlist::
:columns: 3
* :c:func:`bitstring_to_list_ab`
.. c:function:: a_operator_two_e:
File : :file:`determinants/slater_rules_wee_mono.irp.f`
.. code:: fortran
subroutine a_operator_two_e(iorb,ispin,key,hjj,Nint,na,nb)
Needed for :c:func:`diag_Wee_mat_elem`.
Needs:
.. hlist::
:columns: 3
* :c:data:`mo_two_e_integrals_jj`
Called by:
.. hlist::
:columns: 3
* :c:func:`diag_wee_mat_elem`
Calls:
.. hlist::
:columns: 3
* :c:func:`bitstring_to_list_ab`
.. c:function:: ac_operator:
File : :file:`determinants/slater_rules.irp.f`
.. code:: fortran
subroutine ac_operator(iorb,ispin,key,hjj,Nint,na,nb)
Needed for :c:func:`diag_H_mat_elem`.
Needs:
.. hlist::
:columns: 3
* :c:data:`mo_two_e_integrals_jj`
* :c:data:`mo_one_e_integrals`
Called by:
.. hlist::
:columns: 3
* :c:func:`diag_h_mat_elem`
Calls:
.. hlist::
:columns: 3
* :c:func:`bitstring_to_list_ab`
.. c:function:: ac_operator_two_e:
File : :file:`determinants/slater_rules_wee_mono.irp.f`
.. code:: fortran
subroutine ac_operator_two_e(iorb,ispin,key,hjj,Nint,na,nb)
Needed for :c:func:`diag_Wee_mat_elem`.
Needs:
.. hlist::
:columns: 3
* :c:data:`mo_two_e_integrals_jj`
Called by:
.. hlist::
:columns: 3
* :c:func:`diag_wee_mat_elem`
Calls:
.. hlist::
:columns: 3
* :c:func:`bitstring_to_list_ab`
.. c:function:: apply_excitation:
File : :file:`determinants/determinants.irp.f`
.. code:: fortran
subroutine apply_excitation(det, exc, res, ok, Nint)
.. c:function:: apply_hole:
File : :file:`determinants/determinants.irp.f`
.. code:: fortran
subroutine apply_hole(det, s1, h1, res, ok, Nint)
Called by:
.. hlist::
:columns: 3
* :c:func:`select_singles_and_doubles`
.. c:function:: apply_holes:
File : :file:`determinants/determinants.irp.f`
.. code:: fortran
subroutine apply_holes(det, s1, h1, s2, h2, res, ok, Nint)
Called by:
.. hlist::
:columns: 3
* :c:func:`fill_buffer_double`
.. c:function:: apply_particle:
File : :file:`determinants/determinants.irp.f`
.. code:: fortran
subroutine apply_particle(det, s1, p1, res, ok, Nint)
.. c:function:: apply_particles:
File : :file:`determinants/determinants.irp.f`
.. code:: fortran
subroutine apply_particles(det, s1, p1, s2, p2, res, ok, Nint)
Called by:
.. hlist::
:columns: 3
* :c:func:`fill_buffer_double`
* :c:func:`get_d0`
* :c:func:`get_d1`
.. c:function:: bitstring_to_list_ab:
File : :file:`determinants/slater_rules.irp.f`
.. code:: fortran
subroutine bitstring_to_list_ab( string, list, n_elements, Nint)
Gives the inidices(+1) of the bits set to 1 in the bit string
For alpha/beta determinants.
Called by:
.. hlist::
:columns: 3
* :c:func:`a_operator`
* :c:func:`a_operator_two_e`
* :c:func:`ac_operator`
* :c:func:`ac_operator_two_e`
* :c:func:`build_fock_tmp`
* :c:func:`diag_h_mat_elem`
* :c:func:`diag_h_mat_elem_one_e`
* :c:func:`diag_wee_mat_elem`
* :c:func:`example_determinants`
* :c:data:`fock_operator_closed_shell_ref_bitmask`
* :c:data:`fock_wee_closed_shell`
* :c:func:`get_mono_excitation_from_fock`
* :c:func:`get_occupation_from_dets`
* :c:func:`i_h_j`
* :c:func:`i_h_j_s2`
* :c:func:`i_h_j_two_e`
* :c:func:`i_h_j_verbose`
* :c:func:`mono_excitation_wee`
* :c:data:`one_e_dm_mo_alpha`
* :c:data:`ref_closed_shell_bitmask`
* :c:func:`select_singles_and_doubles`
.. c:function:: build_fock_tmp:
File : :file:`determinants/fock_diag.irp.f`
.. code:: fortran
subroutine build_fock_tmp(fock_diag_tmp,det_ref,Nint)
Build the diagonal of the Fock matrix corresponding to a generator
determinant. $F_{00}$ is $\langle i|H|i \rangle = E_0$.
Needs:
.. hlist::
:columns: 3
* :c:data:`elec_beta_num`
* :c:data:`mo_num`
* :c:data:`mo_one_e_integrals`
* :c:data:`elec_alpha_num`
* :c:data:`mo_two_e_integrals_jj`
* :c:data:`n_int`
Called by:
.. hlist::
:columns: 3
* :c:func:`select_connected`
Calls:
.. hlist::
:columns: 3
* :c:func:`bitstring_to_list_ab`
* :c:func:`debug_det`
.. c:function:: connected_to_ref:
File : :file:`determinants/connected_to_ref.irp.f`
.. code:: fortran
integer function connected_to_ref(key,keys,Nint,N_past_in,Ndet)
input : key : a given Slater determinant
: keys: a list of Slater determinants
: Ndet: the number of Slater determinants in keys
: N_past_in the number of Slater determinants for the connectivity research
output : 0 : key not connected to the N_past_in first Slater determinants in keys
i : key is connected to determinant i of keys
-i : key is the ith determinant of the reference wf keys
.. c:function:: connected_to_ref_by_mono:
File : :file:`determinants/connected_to_ref.irp.f`
.. code:: fortran
integer function connected_to_ref_by_mono(key,keys,Nint,N_past_in,Ndet)
Returns |true| is ``key`` is connected to the reference by a single excitation.
input : key : a given Slater determinant
: keys: a list of Slater determinants
: Ndet: the number of Slater determinants in keys
: N_past_in the number of Slater determinants for the connectivity research
output : 0 : key not connected by a MONO EXCITATION to the N_past_in first Slater determinants in keys
i : key is connected by a MONO EXCITATION to determinant i of keys
-i : key is the ith determinant of the reference wf keys
.. c:function:: copy_h_apply_buffer_to_wf:
File : :file:`determinants/h_apply.irp.f`
.. code:: fortran
subroutine copy_H_apply_buffer_to_wf
Copies the H_apply buffer to psi_coef.
After calling this subroutine, N_det, psi_det and psi_coef need to be touched
Needs:
.. hlist::
:columns: 3
* :c:data:`psi_coef`
* :c:data:`n_states`
* :c:data:`h_apply_buffer_allocated`
* :c:data:`n_det`
* :c:data:`psi_det_size`
* :c:data:`n_int`
* :c:data:`nproc`
* :c:data:`psi_det`
Called by:
.. hlist::
:columns: 3
* :c:func:`generate_all_alpha_beta_det_products`
* :c:func:`make_s2_eigenfunction`
* :c:func:`run_stochastic_cipsi`
* :c:func:`zmq_selection`
Calls:
.. hlist::
:columns: 3
* :c:func:`normalize`
* :c:func:`remove_duplicates_in_psi_det`
Touches:
.. hlist::
:columns: 3
* :c:data:`n_det`
* :c:data:`c0_weight`
* :c:data:`psi_coef`
* :c:data:`psi_det_sorted_bit`
* :c:data:`psi_det`
* :c:data:`psi_det_size`
* :c:data:`psi_det_sorted_bit`
.. c:function:: copy_psi_bilinear_to_psi:
File : :file:`determinants/spindeterminants.irp.f`
.. code:: fortran
subroutine copy_psi_bilinear_to_psi(psi, isize)
Overwrites :c:data:`psi_det` and :c:data:`psi_coef` with the wave function
in bilinear order
Needs:
.. hlist::
:columns: 3
* :c:data:`psi_det_beta_unique`
* :c:data:`psi_det_alpha_unique`
* :c:data:`psi_bilinear_matrix_values`
* :c:data:`n_int`
.. c:function:: create_microlist:
File : :file:`determinants/filter_connected.irp.f`
.. code:: fortran
subroutine create_microlist(minilist, N_minilist, key_mask, microlist, idx_microlist, N_microlist, ptr_microlist, Nint)
Needs:
.. hlist::
:columns: 3
* :c:data:`mo_num`
Called by:
.. hlist::
:columns: 3
* :c:func:`perturb_buffer_dummy`
* :c:func:`perturb_buffer_epstein_nesbet`
* :c:func:`perturb_buffer_epstein_nesbet_2x2`
* :c:func:`perturb_buffer_epstein_nesbet_2x2_no_ci_diag`
* :c:func:`perturb_buffer_moller_plesset`
* :c:func:`perturb_buffer_qdpt`
Calls:
.. hlist::
:columns: 3
* :c:func:`bitstring_to_list`
.. c:function:: create_minilist:
File : :file:`determinants/slater_rules.irp.f`
.. code:: fortran
subroutine create_minilist(key_mask, fullList, miniList, idx_miniList, N_fullList, N_miniList, Nint)
Called by:
.. hlist::
:columns: 3
* :c:func:`perturb_buffer_by_mono_dummy`
* :c:func:`perturb_buffer_by_mono_epstein_nesbet`
* :c:func:`perturb_buffer_by_mono_epstein_nesbet_2x2`
* :c:func:`perturb_buffer_by_mono_epstein_nesbet_2x2_no_ci_diag`
* :c:func:`perturb_buffer_by_mono_moller_plesset`
* :c:func:`perturb_buffer_by_mono_qdpt`
* :c:func:`perturb_buffer_dummy`
* :c:func:`perturb_buffer_epstein_nesbet`
* :c:func:`perturb_buffer_epstein_nesbet_2x2`
* :c:func:`perturb_buffer_epstein_nesbet_2x2_no_ci_diag`
* :c:func:`perturb_buffer_moller_plesset`
* :c:func:`perturb_buffer_qdpt`
.. c:function:: create_minilist_find_previous:
File : :file:`determinants/slater_rules.irp.f`
.. code:: fortran
subroutine create_minilist_find_previous(key_mask, fullList, miniList, N_fullList, N_miniList, fullMatch, Nint)
Called by:
.. hlist::
:columns: 3
* :c:func:`perturb_buffer_by_mono_dummy`
* :c:func:`perturb_buffer_by_mono_epstein_nesbet`
* :c:func:`perturb_buffer_by_mono_epstein_nesbet_2x2`
* :c:func:`perturb_buffer_by_mono_epstein_nesbet_2x2_no_ci_diag`
* :c:func:`perturb_buffer_by_mono_moller_plesset`
* :c:func:`perturb_buffer_by_mono_qdpt`
* :c:func:`perturb_buffer_dummy`
* :c:func:`perturb_buffer_epstein_nesbet`
* :c:func:`perturb_buffer_epstein_nesbet_2x2`
* :c:func:`perturb_buffer_epstein_nesbet_2x2_no_ci_diag`
* :c:func:`perturb_buffer_moller_plesset`
* :c:func:`perturb_buffer_qdpt`
.. c:function:: create_wf_of_psi_bilinear_matrix:
File : :file:`determinants/spindeterminants.irp.f`
.. code:: fortran
subroutine create_wf_of_psi_bilinear_matrix(truncate)
Generates a wave function containing all possible products
of $\alpha$ and $\beta$ determinants
Needs:
.. hlist::
:columns: 3
* :c:data:`psi_coef`
* :c:data:`psi_det_beta_unique`
* :c:data:`psi_det_alpha_unique`
* :c:data:`psi_det_sorted_bit`
* :c:data:`n_states`
* :c:data:`n_det`
* :c:data:`psi_bilinear_matrix`
* :c:data:`n_int`
* :c:data:`psi_det`
* :c:data:`psi_det_sorted`
Calls:
.. hlist::
:columns: 3
* :c:func:`generate_all_alpha_beta_det_products`
Touches:
.. hlist::
:columns: 3
* :c:data:`n_det`
* :c:data:`c0_weight`
* :c:data:`psi_coef`
* :c:data:`psi_det_sorted_bit`
* :c:data:`psi_det`
* :c:data:`psi_det_size`
* :c:data:`psi_det_sorted_bit`
.. c:function:: decode_exc:
File : :file:`determinants/slater_rules.irp.f`
.. code:: fortran
subroutine decode_exc(exc,degree,h1,p1,h2,p2,s1,s2)
Decodes the exc arrays returned by get_excitation.
h1,h2 : Holes
p1,p2 : Particles
s1,s2 : Spins (1:alpha, 2:beta)
degree : Degree of excitation
Called by:
.. hlist::
:columns: 3
* :c:func:`diag_h_mat_elem_fock`
* :c:func:`example_determinants`
* :c:func:`pt2_moller_plesset`
.. c:function:: decode_exc_spin:
File : :file:`determinants/slater_rules.irp.f`
.. code:: fortran
subroutine decode_exc_spin(exc,h1,p1,h2,p2)
Decodes the exc arrays returned by get_excitation.
h1,h2 : Holes
p1,p2 : Particles
Called by:
.. hlist::
:columns: 3
* :c:data:`one_e_dm_mo_alpha`
.. c:function:: det_inf:
File : :file:`determinants/sort_dets_ab.irp.f`
.. code:: fortran
logical function det_inf(key1, key2, Nint)
Ordering function for determinants.
.. c:function:: det_search_key:
File : :file:`determinants/connected_to_ref.irp.f`
.. code:: fortran
integer*8 function det_search_key(det,Nint)
Return an integer*8 corresponding to a determinant index for searching
Needs:
.. hlist::
:columns: 3
* :c:data:`elec_alpha_num`
.. c:function:: detcmp:
File : :file:`determinants/determinants.irp.f`
.. code:: fortran
integer function detCmp(a,b,Nint)
.. c:function:: deteq:
File : :file:`determinants/determinants.irp.f`
.. code:: fortran
logical function detEq(a,b,Nint)
.. c:function:: diag_h_mat_elem:
File : :file:`determinants/slater_rules.irp.f`
.. code:: fortran
double precision function diag_H_mat_elem(det_in,Nint)
Computes $\langle i|H|i \rangle$.
Needs:
.. hlist::
:columns: 3
* :c:data:`ref_bitmask_energy`
* :c:data:`elec_num`
* :c:data:`ref_bitmask`
Calls:
.. hlist::
:columns: 3
* :c:func:`a_operator`
* :c:func:`ac_operator`
* :c:func:`bitstring_to_list_ab`
.. c:function:: diag_h_mat_elem_fock:
File : :file:`determinants/slater_rules.irp.f`
.. code:: fortran
double precision function diag_H_mat_elem_fock(det_ref,det_pert,fock_diag_tmp,Nint)
Computes $\langle i|H|i \rangle$ when $i$ is at most a double excitation from
a reference.
Needs:
.. hlist::
:columns: 3
* :c:data:`mo_two_e_integrals_jj`
* :c:data:`mo_num`
Calls:
.. hlist::
:columns: 3
* :c:func:`decode_exc`
* :c:func:`get_double_excitation`
* :c:func:`get_excitation_degree`
* :c:func:`get_mono_excitation`
.. c:function:: diag_h_mat_elem_one_e:
File : :file:`determinants/slater_rules_wee_mono.irp.f`
.. code:: fortran
double precision function diag_H_mat_elem_one_e(det_in,Nint)
Computes $\langle i|H|i \rangle$.
Needs:
.. hlist::
:columns: 3
* :c:data:`mo_one_e_integrals`
Calls:
.. hlist::
:columns: 3
* :c:func:`bitstring_to_list_ab`
.. c:function:: diag_s_mat_elem:
File : :file:`determinants/s2.irp.f`
.. code:: fortran
double precision function diag_S_mat_elem(key_i,Nint)
Returns <i|S^2|i>
.. c:function:: diag_wee_mat_elem:
File : :file:`determinants/slater_rules_wee_mono.irp.f`
.. code:: fortran
double precision function diag_wee_mat_elem(det_in,Nint)
Computes $\langle i|H|i \rangle$.
Needs:
.. hlist::
:columns: 3
* :c:data:`ref_bitmask_energy`
* :c:data:`elec_num`
* :c:data:`ref_bitmask`
Calls:
.. hlist::
:columns: 3
* :c:func:`a_operator_two_e`
* :c:func:`ac_operator_two_e`
* :c:func:`bitstring_to_list_ab`
.. c:function:: do_mono_excitation:
File : :file:`determinants/create_excitations.irp.f`
.. code:: fortran
subroutine do_mono_excitation(key_in,i_hole,i_particle,ispin,i_ok)
Apply the single excitation operator : a^{dager}_(i_particle) a_(i_hole) of spin = ispin
on key_in
ispin = 1 == alpha
ispin = 2 == beta
i_ok = 1 == the excitation is possible
i_ok = -1 == the excitation is not possible
Needs:
.. hlist::
:columns: 3
* :c:data:`elec_num`
* :c:data:`n_int`
Called by:
.. hlist::
:columns: 3
* :c:func:`example_determinants`
.. c:function:: example_determinants:
File : :file:`determinants/example.irp.f`
.. code:: fortran
subroutine example_determinants
subroutine that illustrates the main features available in determinants
Needs:
.. hlist::
:columns: 3
* :c:data:`ref_bitmask`
* :c:data:`elec_alpha_num`
* :c:data:`n_int`
Calls:
.. hlist::
:columns: 3
* :c:func:`bitstring_to_list_ab`
* :c:func:`debug_det`
* :c:func:`decode_exc`
* :c:func:`do_mono_excitation`
* :c:func:`get_excitation`
* :c:func:`get_excitation_degree`
* :c:func:`i_h_j`
* :c:func:`print_det`
.. c:function:: example_determinants_psi_det:
File : :file:`determinants/example.irp.f`
.. code:: fortran
subroutine example_determinants_psi_det
subroutine that illustrates the main features available in determinants using the psi_det/psi_coef
Needs:
.. hlist::
:columns: 3
* :c:data:`read_wf`
Calls:
.. hlist::
:columns: 3
* :c:func:`routine_example_psi_det`
Touches:
.. hlist::
:columns: 3
* :c:data:`read_wf`
.. c:function:: fill_h_apply_buffer_no_selection:
File : :file:`determinants/h_apply.irp.f`
.. code:: fortran
subroutine fill_H_apply_buffer_no_selection(n_selected,det_buffer,Nint,iproc)
Fill the H_apply buffer with determiants for |CISD|
Needs:
.. hlist::
:columns: 3
* :c:data:`n_states`
* :c:data:`h_apply_buffer_allocated`
* :c:data:`n_det`
* :c:data:`n_int`
Called by:
.. hlist::
:columns: 3
* :c:func:`generate_all_alpha_beta_det_products`
* :c:func:`make_s2_eigenfunction`
* :c:func:`zmq_pt2`
* :c:func:`zmq_selection`
Calls:
.. hlist::
:columns: 3
* :c:func:`omp_set_lock`
* :c:func:`omp_unset_lock`
* :c:func:`resize_h_apply_buffer`
.. c:function:: filter_connected:
File : :file:`determinants/filter_connected.irp.f`
.. code:: fortran
subroutine filter_connected(key1,key2,Nint,sze,idx)
Filters out the determinants that are not connected by H
returns the array idx which contains the index of the
determinants in the array key1 that interact
via the H operator with key2.
idx(0) is the number of determinants that interact with key1
Called by:
.. hlist::
:columns: 3
* :c:func:`get_uj_s2_ui`
.. c:function:: filter_connected_i_h_psi0:
File : :file:`determinants/filter_connected.irp.f`
.. code:: fortran
subroutine filter_connected_i_H_psi0(key1,key2,Nint,sze,idx)
Returns the array idx which contains the index of the
determinants in the array key1 that interact
via the H operator with key2.
idx(0) is the number of determinants that interact with key1
Called by:
.. hlist::
:columns: 3
* :c:func:`i_h_psi`
* :c:func:`i_h_psi_minilist`
* :c:func:`i_s2_psi_minilist`
.. c:function:: filter_not_connected:
File : :file:`determinants/filter_connected.irp.f`
.. code:: fortran
subroutine filter_not_connected(key1,key2,Nint,sze,idx)
Returns the array idx which contains the index of the
determinants in the array key1 that DO NOT interact
via the H operator with key2.
idx(0) is the number of determinants that DO NOT interact with key1
.. c:function:: generate_all_alpha_beta_det_products:
File : :file:`determinants/spindeterminants.irp.f`
.. code:: fortran
subroutine generate_all_alpha_beta_det_products
Creates a wave function from all possible $\alpha \times \beta$ determinants
Needs:
.. hlist::
:columns: 3
* :c:data:`psi_coef`
* :c:data:`psi_det_beta_unique`
* :c:data:`psi_det_alpha_unique`
* :c:data:`h_apply_buffer_allocated`
* :c:data:`n_det`
* :c:data:`n_int`
* :c:data:`psi_det`
Called by:
.. hlist::
:columns: 3
* :c:func:`create_wf_of_psi_bilinear_matrix`
Calls:
.. hlist::
:columns: 3
* :c:func:`copy_h_apply_buffer_to_wf`
* :c:func:`fill_h_apply_buffer_no_selection`
Touches:
.. hlist::
:columns: 3
* :c:data:`n_det`
* :c:data:`c0_weight`
* :c:data:`psi_coef`
* :c:data:`psi_det_sorted_bit`
* :c:data:`psi_det`
* :c:data:`psi_det_size`
* :c:data:`psi_det_sorted_bit`
.. c:function:: get_all_spin_doubles:
File : :file:`determinants/spindeterminants.irp.f`
.. code:: fortran
subroutine get_all_spin_doubles(buffer, idx, spindet, Nint, size_buffer, doubles, n_doubles)
Returns the indices of all the double excitations in the list of
unique $\alpha$ determinants.
Needs:
.. hlist::
:columns: 3
* :c:data:`n_int`
Calls:
.. hlist::
:columns: 3
* :c:func:`get_all_spin_doubles_1`
* :c:func:`get_all_spin_doubles_2`
* :c:func:`get_all_spin_doubles_3`
* :c:func:`get_all_spin_doubles_4`
* :c:func:`get_all_spin_doubles_n_int`
.. c:function:: get_all_spin_doubles_1:
File : :file:`determinants/spindeterminants.irp.f`
.. code:: fortran
subroutine get_all_spin_doubles_1(buffer, idx, spindet, size_buffer, doubles, n_doubles)
Returns the indices of all the double excitations in the list of
unique $\alpha$ determinants.
Called by:
.. hlist::
:columns: 3
* :c:func:`get_all_spin_doubles`
.. c:function:: get_all_spin_doubles_2:
File : :file:`determinants/spindeterminants.irp.f_template_1291`
.. code:: fortran
subroutine get_all_spin_doubles_2(buffer, idx, spindet, size_buffer, doubles, n_doubles)
Returns the indices of all the double excitations in the list of
unique $lpha$ determinants.
Called by:
.. hlist::
:columns: 3
* :c:func:`get_all_spin_doubles`
.. c:function:: get_all_spin_doubles_3:
File : :file:`determinants/spindeterminants.irp.f_template_1291`
.. code:: fortran
subroutine get_all_spin_doubles_3(buffer, idx, spindet, size_buffer, doubles, n_doubles)
Returns the indices of all the double excitations in the list of
unique $lpha$ determinants.
Called by:
.. hlist::
:columns: 3
* :c:func:`get_all_spin_doubles`
.. c:function:: get_all_spin_doubles_4:
File : :file:`determinants/spindeterminants.irp.f_template_1291`
.. code:: fortran
subroutine get_all_spin_doubles_4(buffer, idx, spindet, size_buffer, doubles, n_doubles)
Returns the indices of all the double excitations in the list of
unique $lpha$ determinants.
Called by:
.. hlist::
:columns: 3
* :c:func:`get_all_spin_doubles`
.. c:function:: get_all_spin_doubles_n_int:
File : :file:`determinants/spindeterminants.irp.f_template_1291`
.. code:: fortran
subroutine get_all_spin_doubles_N_int(buffer, idx, spindet, size_buffer, doubles, n_doubles)
Returns the indices of all the double excitations in the list of
unique $lpha$ determinants.
Needs:
.. hlist::
:columns: 3
* :c:data:`n_int`
Called by:
.. hlist::
:columns: 3
* :c:func:`get_all_spin_doubles`
.. c:function:: get_all_spin_singles:
File : :file:`determinants/spindeterminants.irp.f`
.. code:: fortran
subroutine get_all_spin_singles(buffer, idx, spindet, Nint, size_buffer, singles, n_singles)
Returns the indices of all the single excitations in the list of
unique $\alpha$ determinants.
Needs:
.. hlist::
:columns: 3
* :c:data:`n_int`
Called by:
.. hlist::
:columns: 3
* :c:data:`singles_alpha_csc`
* :c:data:`singles_alpha_csc_idx`
* :c:data:`singles_beta_csc`
* :c:data:`singles_beta_csc_idx`
Calls:
.. hlist::
:columns: 3
* :c:func:`get_all_spin_singles_1`
* :c:func:`get_all_spin_singles_2`
* :c:func:`get_all_spin_singles_3`
* :c:func:`get_all_spin_singles_4`
* :c:func:`get_all_spin_singles_n_int`
.. c:function:: get_all_spin_singles_1:
File : :file:`determinants/spindeterminants.irp.f`
.. code:: fortran
subroutine get_all_spin_singles_1(buffer, idx, spindet, size_buffer, singles, n_singles)
Returns the indices of all the single excitations in the list of
unique $\alpha$ determinants.
Called by:
.. hlist::
:columns: 3
* :c:func:`get_all_spin_singles`
* :c:func:`h_s2_u_0_nstates_openmp_work_1`
* :c:func:`h_s2_u_0_two_e_nstates_openmp_work_1`
.. c:function:: get_all_spin_singles_2:
File : :file:`determinants/spindeterminants.irp.f_template_1291`
.. code:: fortran
subroutine get_all_spin_singles_2(buffer, idx, spindet, size_buffer, singles, n_singles)
Returns the indices of all the single excitations in the list of
unique $lpha$ determinants.
Called by:
.. hlist::
:columns: 3
* :c:func:`get_all_spin_singles`
* :c:func:`h_s2_u_0_nstates_openmp_work_2`
* :c:func:`h_s2_u_0_two_e_nstates_openmp_work_2`
.. c:function:: get_all_spin_singles_3:
File : :file:`determinants/spindeterminants.irp.f_template_1291`
.. code:: fortran
subroutine get_all_spin_singles_3(buffer, idx, spindet, size_buffer, singles, n_singles)
Returns the indices of all the single excitations in the list of
unique $lpha$ determinants.
Called by:
.. hlist::
:columns: 3
* :c:func:`get_all_spin_singles`
* :c:func:`h_s2_u_0_nstates_openmp_work_3`
* :c:func:`h_s2_u_0_two_e_nstates_openmp_work_3`
.. c:function:: get_all_spin_singles_4:
File : :file:`determinants/spindeterminants.irp.f_template_1291`
.. code:: fortran
subroutine get_all_spin_singles_4(buffer, idx, spindet, size_buffer, singles, n_singles)
Returns the indices of all the single excitations in the list of
unique $lpha$ determinants.
Called by:
.. hlist::
:columns: 3
* :c:func:`get_all_spin_singles`
* :c:func:`h_s2_u_0_nstates_openmp_work_4`
* :c:func:`h_s2_u_0_two_e_nstates_openmp_work_4`
.. c:function:: get_all_spin_singles_and_doubles:
File : :file:`determinants/spindeterminants.irp.f`
.. code:: fortran
subroutine get_all_spin_singles_and_doubles(buffer, idx, spindet, Nint, size_buffer, singles, doubles, n_singles, n_doubles)
Returns the indices of all the single and double excitations in the list of
unique $\alpha$ determinants.
Warning: The buffer is transposed.
Calls:
.. hlist::
:columns: 3
* :c:func:`get_all_spin_singles_and_doubles_1`
* :c:func:`get_all_spin_singles_and_doubles_2`
* :c:func:`get_all_spin_singles_and_doubles_3`
* :c:func:`get_all_spin_singles_and_doubles_4`
* :c:func:`get_all_spin_singles_and_doubles_n_int`
.. c:function:: get_all_spin_singles_and_doubles_1:
File : :file:`determinants/spindeterminants.irp.f`
.. code:: fortran
subroutine get_all_spin_singles_and_doubles_1(buffer, idx, spindet, size_buffer, singles, doubles, n_singles, n_doubles)
Returns the indices of all the single and double excitations in the list of
unique $\alpha$ determinants.
/!\ : The buffer is transposed !
Called by:
.. hlist::
:columns: 3
* :c:func:`get_all_spin_singles_and_doubles`
* :c:func:`h_s2_u_0_nstates_openmp_work_1`
* :c:func:`h_s2_u_0_two_e_nstates_openmp_work_1`
.. c:function:: get_all_spin_singles_and_doubles_2:
File : :file:`determinants/spindeterminants.irp.f_template_1291`
.. code:: fortran
subroutine get_all_spin_singles_and_doubles_2(buffer, idx, spindet, size_buffer, singles, doubles, n_singles, n_doubles)
Returns the indices of all the single and double excitations in the list of
unique $lpha$ determinants.
/!\ : The buffer is transposed !
Called by:
.. hlist::
:columns: 3
* :c:func:`get_all_spin_singles_and_doubles`
* :c:func:`h_s2_u_0_nstates_openmp_work_2`
* :c:func:`h_s2_u_0_two_e_nstates_openmp_work_2`
.. c:function:: get_all_spin_singles_and_doubles_3:
File : :file:`determinants/spindeterminants.irp.f_template_1291`
.. code:: fortran
subroutine get_all_spin_singles_and_doubles_3(buffer, idx, spindet, size_buffer, singles, doubles, n_singles, n_doubles)
Returns the indices of all the single and double excitations in the list of
unique $lpha$ determinants.
/!\ : The buffer is transposed !
Called by:
.. hlist::
:columns: 3
* :c:func:`get_all_spin_singles_and_doubles`
* :c:func:`h_s2_u_0_nstates_openmp_work_3`
* :c:func:`h_s2_u_0_two_e_nstates_openmp_work_3`
.. c:function:: get_all_spin_singles_and_doubles_4:
File : :file:`determinants/spindeterminants.irp.f_template_1291`
.. code:: fortran
subroutine get_all_spin_singles_and_doubles_4(buffer, idx, spindet, size_buffer, singles, doubles, n_singles, n_doubles)
Returns the indices of all the single and double excitations in the list of
unique $lpha$ determinants.
/!\ : The buffer is transposed !
Called by:
.. hlist::
:columns: 3
* :c:func:`get_all_spin_singles_and_doubles`
* :c:func:`h_s2_u_0_nstates_openmp_work_4`
* :c:func:`h_s2_u_0_two_e_nstates_openmp_work_4`
.. c:function:: get_all_spin_singles_and_doubles_n_int:
File : :file:`determinants/spindeterminants.irp.f_template_1291`
.. code:: fortran
subroutine get_all_spin_singles_and_doubles_N_int(buffer, idx, spindet, size_buffer, singles, doubles, n_singles, n_doubles)
Returns the indices of all the single and double excitations in the list of
unique $lpha$ determinants.
/!\ : The buffer is transposed !
Needs:
.. hlist::
:columns: 3
* :c:data:`n_int`
Called by:
.. hlist::
:columns: 3
* :c:func:`get_all_spin_singles_and_doubles`
* :c:func:`h_s2_u_0_nstates_openmp_work_n_int`
* :c:func:`h_s2_u_0_two_e_nstates_openmp_work_n_int`
.. c:function:: get_all_spin_singles_n_int:
File : :file:`determinants/spindeterminants.irp.f_template_1291`
.. code:: fortran
subroutine get_all_spin_singles_N_int(buffer, idx, spindet, size_buffer, singles, n_singles)
Returns the indices of all the single excitations in the list of
unique $lpha$ determinants.
Needs:
.. hlist::
:columns: 3
* :c:data:`n_int`
Called by:
.. hlist::
:columns: 3
* :c:func:`get_all_spin_singles`
* :c:func:`h_s2_u_0_nstates_openmp_work_n_int`
* :c:func:`h_s2_u_0_two_e_nstates_openmp_work_n_int`
.. c:function:: get_double_excitation:
File : :file:`determinants/slater_rules.irp.f`
.. code:: fortran
subroutine get_double_excitation(det1,det2,exc,phase,Nint)
Returns the two excitation operators between two doubly excited determinants and the phase.
Called by:
.. hlist::
:columns: 3
* :c:func:`diag_h_mat_elem_fock`
* :c:func:`get_excitation`
* :c:func:`get_s2`
* :c:func:`i_h_j`
* :c:func:`i_h_j_s2`
* :c:func:`i_h_j_two_e`
* :c:func:`i_h_j_verbose`
.. c:function:: get_double_excitation_spin:
File : :file:`determinants/slater_rules.irp.f`
.. code:: fortran
subroutine get_double_excitation_spin(det1,det2,exc,phase,Nint)
Returns the two excitation operators between two doubly excited spin-determinants
and the phase.
Called by:
.. hlist::
:columns: 3
* :c:func:`get_excitation_spin`
* :c:func:`i_h_j_double_spin`
.. c:function:: get_excitation:
File : :file:`determinants/slater_rules.irp.f`
.. code:: fortran
subroutine get_excitation(det1,det2,exc,degree,phase,Nint)
Returns the excitation operators between two determinants and the phase.
Called by:
.. hlist::
:columns: 3
* :c:func:`example_determinants`
* :c:func:`get_phase`
* :c:func:`pt2_moller_plesset`
Calls:
.. hlist::
:columns: 3
* :c:func:`get_double_excitation`
* :c:func:`get_excitation_degree`
* :c:func:`get_mono_excitation`
.. c:function:: get_excitation_degree:
File : :file:`determinants/slater_rules.irp.f`
.. code:: fortran
subroutine get_excitation_degree(key1,key2,degree,Nint)
Returns the excitation degree between two determinants.
Called by:
.. hlist::
:columns: 3
* :c:data:`degree_max_generators`
* :c:func:`diag_h_mat_elem_fock`
* :c:func:`example_determinants`
* :c:data:`exc_degree_per_selectors`
* :c:func:`get_excitation`
* :c:func:`get_s2`
* :c:func:`i_h_j`
* :c:func:`i_h_j_one_e`
* :c:func:`i_h_j_s2`
* :c:func:`i_h_j_two_e`
* :c:func:`i_h_j_verbose`
* :c:data:`max_degree_exc`
* :c:data:`psi_non_cas`
* :c:func:`pt2_qdpt`
.. c:function:: get_excitation_degree_spin:
File : :file:`determinants/slater_rules.irp.f`
.. code:: fortran
subroutine get_excitation_degree_spin(key1,key2,degree,Nint)
Returns the excitation degree between two determinants.
Called by:
.. hlist::
:columns: 3
* :c:func:`get_excitation_spin`
* :c:data:`one_e_dm_mo_alpha`
* :c:func:`select_singles_and_doubles`
.. c:function:: get_excitation_degree_vector:
File : :file:`determinants/slater_rules.irp.f`
.. code:: fortran
subroutine get_excitation_degree_vector(key1,key2,degree,Nint,sze,idx)
Applies get_excitation_degree to an array of determinants.
Called by:
.. hlist::
:columns: 3
* :c:func:`routine_example_psi_det`
.. c:function:: get_excitation_degree_vector_double_alpha_beta:
File : :file:`determinants/slater_rules.irp.f`
.. code:: fortran
subroutine get_excitation_degree_vector_double_alpha_beta(key1,key2,degree,Nint,sze,idx)
Applies get_excitation_degree to an array of determinants and return only the
single excitations and the connections through exchange integrals.
.. c:function:: get_excitation_degree_vector_mono:
File : :file:`determinants/slater_rules.irp.f`
.. code:: fortran
subroutine get_excitation_degree_vector_mono(key1,key2,degree,Nint,sze,idx)
Applies get_excitation_degree to an array of determinants and returns only
the single excitations.
.. c:function:: get_excitation_degree_vector_mono_or_exchange:
File : :file:`determinants/slater_rules.irp.f`
.. code:: fortran
subroutine get_excitation_degree_vector_mono_or_exchange(key1,key2,degree,Nint,sze,idx)
Applies get_excitation_degree to an array of determinants and return only the
single excitations and the connections through exchange integrals.
.. c:function:: get_excitation_degree_vector_mono_or_exchange_verbose:
File : :file:`determinants/slater_rules.irp.f`
.. code:: fortran
subroutine get_excitation_degree_vector_mono_or_exchange_verbose(key1,key2,degree,Nint,sze,idx)
Applies get_excitation_degree to an array of determinants and return only the single
excitations and the connections through exchange integrals.
Needs:
.. hlist::
:columns: 3
* :c:data:`n_int`
Calls:
.. hlist::
:columns: 3
* :c:func:`debug_det`
.. c:function:: get_excitation_spin:
File : :file:`determinants/slater_rules.irp.f`
.. code:: fortran
subroutine get_excitation_spin(det1,det2,exc,degree,phase,Nint)
Returns the excitation operators between two determinants and the phase.
Calls:
.. hlist::
:columns: 3
* :c:func:`get_double_excitation_spin`
* :c:func:`get_excitation_degree_spin`
* :c:func:`get_mono_excitation_spin`
.. c:function:: get_index_in_psi_det_alpha_unique:
File : :file:`determinants/spindeterminants.irp.f`
.. code:: fortran
integer function get_index_in_psi_det_alpha_unique(key,Nint)
Returns the index of the determinant in the :c:data:`psi_det_alpha_unique` array
Needs:
.. hlist::
:columns: 3
* :c:data:`psi_det_alpha_unique`
.. c:function:: get_index_in_psi_det_beta_unique:
File : :file:`determinants/spindeterminants.irp.f`
.. code:: fortran
integer function get_index_in_psi_det_beta_unique(key,Nint)
Returns the index of the determinant in the :c:data:`psi_det_beta_unique` array
Needs:
.. hlist::
:columns: 3
* :c:data:`psi_det_beta_unique`
.. c:function:: get_index_in_psi_det_sorted_bit:
File : :file:`determinants/connected_to_ref.irp.f`
.. code:: fortran
integer function get_index_in_psi_det_sorted_bit(key,Nint)
Returns the index of the determinant in the ``psi_det_sorted_bit`` array
Needs:
.. hlist::
:columns: 3
* :c:data:`psi_det_sorted_bit`
* :c:data:`n_det`
.. c:function:: get_mono_excitation:
File : :file:`determinants/slater_rules.irp.f`
.. code:: fortran
subroutine get_mono_excitation(det1,det2,exc,phase,Nint)
Returns the excitation operator between two singly excited determinants and the phase.
Called by:
.. hlist::
:columns: 3
* :c:func:`diag_h_mat_elem_fock`
* :c:func:`get_excitation`
* :c:func:`i_h_j`
* :c:func:`i_h_j_one_e`
* :c:func:`i_h_j_s2`
* :c:func:`i_h_j_two_e`
* :c:func:`i_h_j_verbose`
.. c:function:: get_mono_excitation_from_fock:
File : :file:`determinants/single_excitations.irp.f`
.. code:: fortran
subroutine get_mono_excitation_from_fock(det_1,det_2,h,p,spin,phase,hij)
Needs:
.. hlist::
:columns: 3
* :c:data:`ref_closed_shell_bitmask`
* :c:data:`big_array_coulomb_integrals`
* :c:data:`fock_operator_closed_shell_ref_bitmask`
* :c:data:`n_int`
Called by:
.. hlist::
:columns: 3
* :c:func:`i_h_j`
* :c:func:`i_h_j_mono_spin`
* :c:func:`i_h_j_s2`
Calls:
.. hlist::
:columns: 3
* :c:func:`bitstring_to_list_ab`
.. c:function:: get_mono_excitation_spin:
File : :file:`determinants/slater_rules.irp.f`
.. code:: fortran
subroutine get_mono_excitation_spin(det1,det2,exc,phase,Nint)
Returns the excitation operator between two singly excited determinants and the phase.
Called by:
.. hlist::
:columns: 3
* :c:func:`get_excitation_spin`
* :c:func:`i_h_j_double_alpha_beta`
* :c:func:`i_h_j_mono_spin`
* :c:func:`i_h_j_mono_spin_one_e`
* :c:func:`i_wee_j_mono`
* :c:data:`one_e_dm_mo_alpha`
.. c:function:: get_occupation_from_dets:
File : :file:`determinants/density_matrix.irp.f`
.. code:: fortran
subroutine get_occupation_from_dets(istate,occupation)
Returns the average occupation of the MOs
Needs:
.. hlist::
:columns: 3
* :c:data:`psi_coef`
* :c:data:`psi_det`
* :c:data:`n_int`
* :c:data:`n_det`
* :c:data:`mo_num`
Calls:
.. hlist::
:columns: 3
* :c:func:`bitstring_to_list_ab`
.. c:function:: get_phase:
File : :file:`determinants/slater_rules.irp.f`
.. code:: fortran
subroutine get_phase(key1,key2,phase,Nint)
Returns the phase between key1 and key2.
Calls:
.. hlist::
:columns: 3
* :c:func:`get_excitation`
.. c:function:: get_phasemask_bit:
File : :file:`determinants/slater_rules.irp.f`
.. code:: fortran
subroutine get_phasemask_bit(det1, pm, Nint)
.. c:function:: get_s2:
File : :file:`determinants/s2.irp.f`
.. code:: fortran
subroutine get_s2(key_i,key_j,Nint,s2)
Returns <S^2>
Called by:
.. hlist::
:columns: 3
* :c:func:`get_uj_s2_ui`
* :c:func:`h_s2_u_0_nstates_openmp_work_1`
* :c:func:`h_s2_u_0_nstates_openmp_work_2`
* :c:func:`h_s2_u_0_nstates_openmp_work_3`
* :c:func:`h_s2_u_0_nstates_openmp_work_4`
* :c:func:`h_s2_u_0_nstates_openmp_work_n_int`
* :c:func:`h_s2_u_0_two_e_nstates_openmp_work_1`
* :c:func:`h_s2_u_0_two_e_nstates_openmp_work_2`
* :c:func:`h_s2_u_0_two_e_nstates_openmp_work_3`
* :c:func:`h_s2_u_0_two_e_nstates_openmp_work_4`
* :c:func:`h_s2_u_0_two_e_nstates_openmp_work_n_int`
* :c:func:`i_s2_psi_minilist`
* :c:data:`s2_matrix_all_dets`
* :c:func:`s2_u_0_nstates`
Calls:
.. hlist::
:columns: 3
* :c:func:`get_double_excitation`
* :c:func:`get_excitation_degree`
.. c:function:: get_uj_s2_ui:
File : :file:`determinants/s2.irp.f`
.. code:: fortran
subroutine get_uJ_s2_uI(psi_keys_tmp,psi_coefs_tmp,n,nmax_coefs,nmax_keys,s2,nstates)
returns the matrix elements of S^2 "s2(i,j)" between the "nstates" states
psi_coefs_tmp(:,i) and psi_coefs_tmp(:,j)
Needs:
.. hlist::
:columns: 3
* :c:data:`n_int`
Calls:
.. hlist::
:columns: 3
* :c:func:`filter_connected`
* :c:func:`get_s2`
.. c:function:: getmobiles:
File : :file:`determinants/filter_connected.irp.f`
.. code:: fortran
subroutine getMobiles(key,key_mask, mobiles,Nint)
Needs:
.. hlist::
:columns: 3
* :c:data:`mo_num`
Called by:
.. hlist::
:columns: 3
* :c:func:`perturb_buffer_dummy`
* :c:func:`perturb_buffer_epstein_nesbet`
* :c:func:`perturb_buffer_epstein_nesbet_2x2`
* :c:func:`perturb_buffer_epstein_nesbet_2x2_no_ci_diag`
* :c:func:`perturb_buffer_moller_plesset`
* :c:func:`perturb_buffer_qdpt`
Calls:
.. hlist::
:columns: 3
* :c:func:`bitstring_to_list`
.. c:function:: i_h_j:
File : :file:`determinants/slater_rules.irp.f`
.. code:: fortran
subroutine i_H_j(key_i,key_j,Nint,hij)
Returns $\langle i|H|j \rangle$ where $i$ and $j$ are determinants.
Needs:
.. hlist::
:columns: 3
* :c:data:`big_array_coulomb_integrals`
* :c:data:`mo_two_e_integrals_in_map`
* :c:data:`big_array_coulomb_integrals`
* :c:data:`mo_integrals_map`
Called by:
.. hlist::
:columns: 3
* :c:data:`coef_hf_selector`
* :c:func:`example_determinants`
* :c:func:`get_d0`
* :c:func:`get_d1`
* :c:data:`h_matrix_all_dets`
* :c:data:`h_matrix_cas`
* :c:func:`i_h_psi`
* :c:func:`i_h_psi_minilist`
* :c:func:`pt2_qdpt`
* :c:func:`routine_example_psi_det`
Calls:
.. hlist::
:columns: 3
* :c:func:`bitstring_to_list_ab`
* :c:func:`get_double_excitation`
* :c:func:`get_excitation_degree`
* :c:func:`get_mono_excitation`
* :c:func:`get_mono_excitation_from_fock`
.. c:function:: i_h_j_double_alpha_beta:
File : :file:`determinants/slater_rules.irp.f`
.. code:: fortran
subroutine i_H_j_double_alpha_beta(key_i,key_j,Nint,hij)
Returns $\langle i|H|j \rangle$ where $i$ and $j$ are determinants differing by
an opposite-spin double excitation.
Needs:
.. hlist::
:columns: 3
* :c:data:`big_array_coulomb_integrals`
* :c:data:`mo_two_e_integrals_in_map`
* :c:data:`big_array_coulomb_integrals`
* :c:data:`mo_integrals_map`
Called by:
.. hlist::
:columns: 3
* :c:func:`h_s2_u_0_nstates_openmp_work_1`
* :c:func:`h_s2_u_0_nstates_openmp_work_2`
* :c:func:`h_s2_u_0_nstates_openmp_work_3`
* :c:func:`h_s2_u_0_nstates_openmp_work_4`
* :c:func:`h_s2_u_0_nstates_openmp_work_n_int`
* :c:func:`h_s2_u_0_two_e_nstates_openmp_work_1`
* :c:func:`h_s2_u_0_two_e_nstates_openmp_work_2`
* :c:func:`h_s2_u_0_two_e_nstates_openmp_work_3`
* :c:func:`h_s2_u_0_two_e_nstates_openmp_work_4`
* :c:func:`h_s2_u_0_two_e_nstates_openmp_work_n_int`
Calls:
.. hlist::
:columns: 3
* :c:func:`get_mono_excitation_spin`
.. c:function:: i_h_j_double_spin:
File : :file:`determinants/slater_rules.irp.f`
.. code:: fortran
subroutine i_H_j_double_spin(key_i,key_j,Nint,hij)
Returns $\langle i|H|j \rangle$ where $i$ and $j$ are determinants differing by
a same-spin double excitation.
Needs:
.. hlist::
:columns: 3
* :c:data:`big_array_coulomb_integrals`
* :c:data:`mo_two_e_integrals_in_map`
* :c:data:`mo_integrals_map`
Called by:
.. hlist::
:columns: 3
* :c:func:`h_s2_u_0_nstates_openmp_work_1`
* :c:func:`h_s2_u_0_nstates_openmp_work_2`
* :c:func:`h_s2_u_0_nstates_openmp_work_3`
* :c:func:`h_s2_u_0_nstates_openmp_work_4`
* :c:func:`h_s2_u_0_nstates_openmp_work_n_int`
* :c:func:`h_s2_u_0_two_e_nstates_openmp_work_1`
* :c:func:`h_s2_u_0_two_e_nstates_openmp_work_2`
* :c:func:`h_s2_u_0_two_e_nstates_openmp_work_3`
* :c:func:`h_s2_u_0_two_e_nstates_openmp_work_4`
* :c:func:`h_s2_u_0_two_e_nstates_openmp_work_n_int`
Calls:
.. hlist::
:columns: 3
* :c:func:`get_double_excitation_spin`
.. c:function:: i_h_j_mono_spin:
File : :file:`determinants/slater_rules.irp.f`
.. code:: fortran
subroutine i_H_j_mono_spin(key_i,key_j,Nint,spin,hij)
Returns $\langle i|H|j \rangle$ where $i$ and $j$ are determinants differing by
a single excitation.
Needs:
.. hlist::
:columns: 3
* :c:data:`big_array_coulomb_integrals`
* :c:data:`mo_two_e_integrals_in_map`
Called by:
.. hlist::
:columns: 3
* :c:func:`h_s2_u_0_nstates_openmp_work_1`
* :c:func:`h_s2_u_0_nstates_openmp_work_2`
* :c:func:`h_s2_u_0_nstates_openmp_work_3`
* :c:func:`h_s2_u_0_nstates_openmp_work_4`
* :c:func:`h_s2_u_0_nstates_openmp_work_n_int`
Calls:
.. hlist::
:columns: 3
* :c:func:`get_mono_excitation_from_fock`
* :c:func:`get_mono_excitation_spin`
.. c:function:: i_h_j_mono_spin_one_e:
File : :file:`determinants/slater_rules_wee_mono.irp.f`
.. code:: fortran
subroutine i_H_j_mono_spin_one_e(key_i,key_j,Nint,spin,hij)
Returns $\langle i|H|j \rangle$ where $i$ and $j$ are determinants differing by
a single excitation.
Needs:
.. hlist::
:columns: 3
* :c:data:`mo_one_e_integrals`
Calls:
.. hlist::
:columns: 3
* :c:func:`get_mono_excitation_spin`
.. c:function:: i_h_j_one_e:
File : :file:`determinants/slater_rules_wee_mono.irp.f`
.. code:: fortran
subroutine i_H_j_one_e(key_i,key_j,Nint,hij)
Returns $\langle i|H|j \rangle$ where $i$ and $j$ are determinants.
Needs:
.. hlist::
:columns: 3
* :c:data:`mo_one_e_integrals`
* :c:data:`n_int`
Calls:
.. hlist::
:columns: 3
* :c:func:`get_excitation_degree`
* :c:func:`get_mono_excitation`
.. c:function:: i_h_j_s2:
File : :file:`determinants/slater_rules.irp.f`
.. code:: fortran
subroutine i_H_j_s2(key_i,key_j,Nint,hij,s2)
Returns $\langle i|H|j \rangle$ and $\langle i|S^2|j \rangle$
where $i$ and $j$ are determinants.
Needs:
.. hlist::
:columns: 3
* :c:data:`big_array_coulomb_integrals`
* :c:data:`mo_two_e_integrals_in_map`
* :c:data:`big_array_coulomb_integrals`
* :c:data:`mo_integrals_map`
Calls:
.. hlist::
:columns: 3
* :c:func:`bitstring_to_list_ab`
* :c:func:`get_double_excitation`
* :c:func:`get_excitation_degree`
* :c:func:`get_mono_excitation`
* :c:func:`get_mono_excitation_from_fock`
.. c:function:: i_h_j_two_e:
File : :file:`determinants/slater_rules_wee_mono.irp.f`
.. code:: fortran
subroutine i_H_j_two_e(key_i,key_j,Nint,hij)
Returns $\langle i|H|j \rangle$ where $i$ and $j$ are determinants.
Needs:
.. hlist::
:columns: 3
* :c:data:`ref_bitmask_energy`
* :c:data:`big_array_coulomb_integrals`
* :c:data:`mo_two_e_integrals_in_map`
* :c:data:`big_array_coulomb_integrals`
* :c:data:`mo_integrals_map`
Calls:
.. hlist::
:columns: 3
* :c:func:`bitstring_to_list_ab`
* :c:func:`get_double_excitation`
* :c:func:`get_excitation_degree`
* :c:func:`get_mono_excitation`
* :c:func:`mono_excitation_wee`
.. c:function:: i_h_j_verbose:
File : :file:`determinants/slater_rules.irp.f`
.. code:: fortran
subroutine i_H_j_verbose(key_i,key_j,Nint,hij,hmono,hdouble,phase)
Returns $\langle i|H|j \rangle$ where $i$ and $j$ are determinants.
Needs:
.. hlist::
:columns: 3
* :c:data:`elec_beta_num`
* :c:data:`mo_one_e_integrals`
* :c:data:`mo_two_e_integrals_in_map`
* :c:data:`elec_alpha_num`
* :c:data:`mo_integrals_map`
Calls:
.. hlist::
:columns: 3
* :c:func:`bitstring_to_list_ab`
* :c:func:`get_double_excitation`
* :c:func:`get_excitation_degree`
* :c:func:`get_mono_excitation`
.. c:function:: i_h_psi:
File : :file:`determinants/slater_rules.irp.f`
.. code:: fortran
subroutine i_H_psi(key,keys,coef,Nint,Ndet,Ndet_max,Nstate,i_H_psi_array)
Computes $\langle i|H|Psi \rangle = \sum_J c_J \langle i | H | J \rangle$.
Uses filter_connected_i_H_psi0 to get all the $|J \rangle$ to which $|i \rangle$
is connected.
The i_H_psi_minilist is much faster but requires to build the
minilists.
Called by:
.. hlist::
:columns: 3
* :c:func:`pt2_epstein_nesbet_2x2`
* :c:func:`pt2_epstein_nesbet_2x2_no_ci_diag`
* :c:func:`remove_small_contributions`
Calls:
.. hlist::
:columns: 3
* :c:func:`filter_connected_i_h_psi0`
* :c:func:`i_h_j`
.. c:function:: i_h_psi_minilist:
File : :file:`determinants/slater_rules.irp.f`
.. code:: fortran
subroutine i_H_psi_minilist(key,keys,idx_key,N_minilist,coef,Nint,Ndet,Ndet_max,Nstate,i_H_psi_array)
Computes $\langle i|H|\Psi \rangle = \sum_J c_J \langle i|H|J\rangle$.
Uses filter_connected_i_H_psi0 to get all the $|J \rangle$ to which $|i \rangle$
is connected. The $|J\rangle$ are searched in short pre-computed lists.
Called by:
.. hlist::
:columns: 3
* :c:func:`pt2_dummy`
* :c:func:`pt2_epstein_nesbet`
* :c:func:`pt2_moller_plesset`
* :c:func:`pt2_qdpt`
Calls:
.. hlist::
:columns: 3
* :c:func:`filter_connected_i_h_psi0`
* :c:func:`i_h_j`
.. c:function:: i_s2_psi_minilist:
File : :file:`determinants/s2.irp.f`
.. code:: fortran
subroutine i_S2_psi_minilist(key,keys,idx_key,N_minilist,coef,Nint,Ndet,Ndet_max,Nstate,i_S2_psi_array)
Computes $\langle i|S^2|\Psi \rangle = \sum_J c_J \langle i|S^2|J \rangle$.
Uses filter_connected_i_H_psi0 to get all the $|J\rangle$ to which $|i\rangle$
is connected. The $|J\rangle$ are searched in short pre-computed lists.
Calls:
.. hlist::
:columns: 3
* :c:func:`filter_connected_i_h_psi0`
* :c:func:`get_s2`
.. c:function:: i_wee_j_mono:
File : :file:`determinants/slater_rules_wee_mono.irp.f`
.. code:: fortran
subroutine i_Wee_j_mono(key_i,key_j,Nint,spin,hij)
Returns $\langle i|H|j \rangle$ where $i$ and $j$ are determinants differing by a
single excitation.
Needs:
.. hlist::
:columns: 3
* :c:data:`big_array_coulomb_integrals`
* :c:data:`mo_two_e_integrals_in_map`
Called by:
.. hlist::
:columns: 3
* :c:func:`h_s2_u_0_two_e_nstates_openmp_work_1`
* :c:func:`h_s2_u_0_two_e_nstates_openmp_work_2`
* :c:func:`h_s2_u_0_two_e_nstates_openmp_work_3`
* :c:func:`h_s2_u_0_two_e_nstates_openmp_work_4`
* :c:func:`h_s2_u_0_two_e_nstates_openmp_work_n_int`
Calls:
.. hlist::
:columns: 3
* :c:func:`get_mono_excitation_spin`
* :c:func:`mono_excitation_wee`
.. c:function:: is_connected_to:
File : :file:`determinants/connected_to_ref.irp.f`
.. code:: fortran
logical function is_connected_to(key,keys,Nint,Ndet)
Returns |true| if determinant ``key`` is connected to ``keys``
.. c:function:: is_connected_to_by_mono:
File : :file:`determinants/connected_to_ref.irp.f`
.. code:: fortran
logical function is_connected_to_by_mono(key,keys,Nint,Ndet)
Returns |true| is ``key`` is connected to ``keys`` by a single excitation.
.. c:function:: is_in_wavefunction:
File : :file:`determinants/connected_to_ref.irp.f`
.. code:: fortran
logical function is_in_wavefunction(key,Nint)
|true| if the determinant ``det`` is in the wave function
.. c:function:: is_spin_flip_possible:
File : :file:`determinants/create_excitations.irp.f`
.. code:: fortran
logical function is_spin_flip_possible(key_in,i_flip,ispin)
returns |true| if the spin-flip of spin ispin in the orbital i_flip is possible
on key_in
Needs:
.. hlist::
:columns: 3
* :c:data:`n_int`
.. c:function:: make_s2_eigenfunction:
File : :file:`determinants/occ_pattern.irp.f`
.. code:: fortran
subroutine make_s2_eigenfunction
Needs:
.. hlist::
:columns: 3
* :c:data:`psi_coef`
* :c:data:`psi_occ_pattern`
* :c:data:`psi_occ_pattern`
* :c:data:`elec_alpha_num`
* :c:data:`n_det`
* :c:data:`n_int`
* :c:data:`psi_det`
Called by:
.. hlist::
:columns: 3
* :c:func:`run_cipsi`
* :c:func:`run_stochastic_cipsi`
Calls:
.. hlist::
:columns: 3
* :c:func:`copy_h_apply_buffer_to_wf`
* :c:func:`fill_h_apply_buffer_no_selection`
* :c:func:`occ_pattern_to_dets`
* :c:func:`occ_pattern_to_dets_size`
* :c:func:`write_int`
* :c:func:`write_time`
Touches:
.. hlist::
:columns: 3
* :c:data:`n_det`
* :c:data:`psi_occ_pattern`
* :c:data:`c0_weight`
* :c:data:`psi_coef`
* :c:data:`psi_det_sorted_bit`
* :c:data:`psi_det`
* :c:data:`psi_det_size`
* :c:data:`psi_det_sorted_bit`
* :c:data:`psi_occ_pattern`
.. c:function:: mono_excitation_wee:
File : :file:`determinants/mono_excitations_bielec.irp.f`
.. code:: fortran
subroutine mono_excitation_wee(det_1,det_2,h,p,spin,phase,hij)
Needs:
.. hlist::
:columns: 3
* :c:data:`ref_closed_shell_bitmask`
* :c:data:`fock_wee_closed_shell`
* :c:data:`big_array_coulomb_integrals`
* :c:data:`n_int`
Called by:
.. hlist::
:columns: 3
* :c:func:`i_h_j_two_e`
* :c:func:`i_wee_j_mono`
Calls:
.. hlist::
:columns: 3
* :c:func:`bitstring_to_list_ab`
.. c:function:: occ_pattern_of_det:
File : :file:`determinants/occ_pattern.irp.f`
.. code:: fortran
subroutine occ_pattern_of_det(d,o,Nint)
Transforms a determinant to an occupation pattern
occ(:,1) : Single occupations
occ(:,2) : Double occupations
.. c:function:: occ_pattern_search_key:
File : :file:`determinants/connected_to_ref.irp.f`
.. code:: fortran
integer*8 function occ_pattern_search_key(det,Nint)
Return an integer*8 corresponding to a determinant index for searching
Needs:
.. hlist::
:columns: 3
* :c:data:`elec_alpha_num`
.. c:function:: occ_pattern_to_dets:
File : :file:`determinants/occ_pattern.irp.f`
.. code:: fortran
subroutine occ_pattern_to_dets(o,d,sze,n_alpha,Nint)
Generate all possible determinants for a give occ_pattern
Needs:
.. hlist::
:columns: 3
* :c:data:`binom_int`
Called by:
.. hlist::
:columns: 3
* :c:func:`make_s2_eigenfunction`
* :c:func:`make_selection_buffer_s2`
.. c:function:: occ_pattern_to_dets_size:
File : :file:`determinants/occ_pattern.irp.f`
.. code:: fortran
subroutine occ_pattern_to_dets_size(o,sze,n_alpha,Nint)
Number of possible determinants for a given occ_pattern
Needs:
.. hlist::
:columns: 3
* :c:data:`binom_int`
Called by:
.. hlist::
:columns: 3
* :c:func:`make_s2_eigenfunction`
* :c:func:`make_selection_buffer_s2`
.. c:function:: pull_pt2:
File : :file:`determinants/h_apply.irp.f`
.. code:: fortran
subroutine pull_pt2(zmq_socket_pull,pt2,norm_pert,H_pert_diag,i_generator,N_st,n,task_id)
Pull |PT2| calculation in the collector
.. c:function:: push_pt2:
File : :file:`determinants/h_apply.irp.f`
.. code:: fortran
subroutine push_pt2(zmq_socket_push,pt2,norm_pert,H_pert_diag,i_generator,N_st,task_id)
Push |PT2| calculation to the collector
.. c:function:: read_dets:
File : :file:`determinants/determinants.irp.f`
.. code:: fortran
subroutine read_dets(det,Nint,Ndet)
Reads the determinants from the |EZFIO| file
Called by:
.. hlist::
:columns: 3
* :c:data:`psi_det`
Calls:
.. hlist::
:columns: 3
* :c:func:`ezfio_get_determinants_bit_kind`
* :c:func:`ezfio_get_determinants_n_int`
* :c:func:`ezfio_get_determinants_psi_det`
.. c:function:: remove_duplicates_in_psi_det:
File : :file:`determinants/h_apply.irp.f`
.. code:: fortran
subroutine remove_duplicates_in_psi_det(found_duplicates)
Removes duplicate determinants in the wave function.
Needs:
.. hlist::
:columns: 3
* :c:data:`psi_coef`
* :c:data:`psi_det_sorted_bit`
* :c:data:`c0_weight`
* :c:data:`n_det`
* :c:data:`psi_det_sorted_bit`
* :c:data:`n_int`
* :c:data:`psi_det`
* :c:data:`psi_det_sorted`
Called by:
.. hlist::
:columns: 3
* :c:func:`copy_h_apply_buffer_to_wf`
Touches:
.. hlist::
:columns: 3
* :c:data:`n_det`
* :c:data:`c0_weight`
* :c:data:`psi_coef`
* :c:data:`psi_det_sorted_bit`
* :c:data:`psi_det`
* :c:data:`psi_det_sorted_bit`
.. c:function:: resize_h_apply_buffer:
File : :file:`determinants/h_apply.irp.f`
.. code:: fortran
subroutine resize_H_apply_buffer(new_size,iproc)
Resizes the H_apply buffer of proc iproc. The buffer lock should
be set before calling this function.
Needs:
.. hlist::
:columns: 3
* :c:data:`n_states`
* :c:data:`h_apply_buffer_allocated`
* :c:data:`n_det`
* :c:data:`n_int`
Called by:
.. hlist::
:columns: 3
* :c:func:`fill_h_apply_buffer_no_selection`
* :c:func:`fill_h_apply_buffer_selection`
.. c:function:: routine_example_psi_det:
File : :file:`determinants/example.irp.f`
.. code:: fortran
subroutine routine_example_psi_det
subroutine that illustrates the main features available in determinants using many determinants
Needs:
.. hlist::
:columns: 3
* :c:data:`psi_coef`
* :c:data:`psi_det`
* :c:data:`n_states`
* :c:data:`n_det`
* :c:data:`n_int`
Called by:
.. hlist::
:columns: 3
* :c:func:`example_determinants_psi_det`
Calls:
.. hlist::
:columns: 3
* :c:func:`debug_det`
* :c:func:`get_excitation_degree_vector`
* :c:func:`i_h_j`
.. c:function:: s2_u_0:
File : :file:`determinants/s2.irp.f`
.. code:: fortran
subroutine S2_u_0(v_0,u_0,n,keys_tmp,Nint)
Computes v_0 = S^2|u_0>
n : number of determinants
Calls:
.. hlist::
:columns: 3
* :c:func:`s2_u_0_nstates`
.. c:function:: s2_u_0_nstates:
File : :file:`determinants/s2.irp.f`
.. code:: fortran
subroutine S2_u_0_nstates(v_0,u_0,n,keys_tmp,Nint,N_st,sze_8)
Computes v_0 = S^2|u_0>
n : number of determinants
Needs:
.. hlist::
:columns: 3
* :c:data:`ref_bitmask_energy`
Called by:
.. hlist::
:columns: 3
* :c:func:`s2_u_0`
* :c:func:`u_0_s2_u_0`
Calls:
.. hlist::
:columns: 3
* :c:func:`get_s2`
* :c:func:`sort_dets_ab_v`
* :c:func:`sort_dets_ba_v`
.. c:function:: save_natural_mos:
File : :file:`determinants/density_matrix.irp.f`
.. code:: fortran
subroutine save_natural_mos
Save natural orbitals, obtained by diagonalization of the one-body density matrix in
the |MO| basis
Called by:
.. hlist::
:columns: 3
* :c:func:`save_natorb`
Calls:
.. hlist::
:columns: 3
* :c:func:`save_mos`
* :c:func:`set_natural_mos`
Touches:
.. hlist::
:columns: 3
* :c:data:`mo_occ`
.. c:function:: save_ref_determinant:
File : :file:`determinants/determinants.irp.f`
.. code:: fortran
subroutine save_ref_determinant
Needs:
.. hlist::
:columns: 3
* :c:data:`n_states`
* :c:data:`ref_bitmask`
Called by:
.. hlist::
:columns: 3
* :c:func:`save_natorb`
Calls:
.. hlist::
:columns: 3
* :c:func:`save_wavefunction_general`
.. c:function:: save_wavefunction:
File : :file:`determinants/determinants.irp.f`
.. code:: fortran
subroutine save_wavefunction
Save the wave function into the |EZFIO| file
Needs:
.. hlist::
:columns: 3
* :c:data:`read_wf`
* :c:data:`n_states`
* :c:data:`psi_det_sorted`
* :c:data:`n_det`
* :c:data:`mpi_master`
Called by:
.. hlist::
:columns: 3
* :c:func:`run_cipsi`
* :c:func:`run_stochastic_cipsi`
* :c:func:`zmq_selection`
Calls:
.. hlist::
:columns: 3
* :c:func:`save_wavefunction_general`
.. c:function:: save_wavefunction_general:
File : :file:`determinants/determinants.irp.f`
.. code:: fortran
subroutine save_wavefunction_general(ndet,nstates,psidet,dim_psicoef,psicoef)
Save the wave function into the |EZFIO| file
Needs:
.. hlist::
:columns: 3
* :c:data:`mpi_master`
* :c:data:`n_int`
* :c:data:`mo_label`
Called by:
.. hlist::
:columns: 3
* :c:func:`save_ref_determinant`
* :c:func:`save_wavefunction`
* :c:func:`save_wavefunction_truncated`
* :c:func:`save_wavefunction_unsorted`
Calls:
.. hlist::
:columns: 3
* :c:func:`ezfio_set_determinants_bit_kind`
* :c:func:`ezfio_set_determinants_mo_label`
* :c:func:`ezfio_set_determinants_n_det`
* :c:func:`ezfio_set_determinants_n_int`
* :c:func:`ezfio_set_determinants_n_states`
* :c:func:`ezfio_set_determinants_psi_coef`
* :c:func:`ezfio_set_determinants_psi_det`
* :c:func:`normalize`
* :c:func:`write_int`
.. c:function:: save_wavefunction_specified:
File : :file:`determinants/determinants.irp.f`
.. code:: fortran
subroutine save_wavefunction_specified(ndet,nstates,psidet,psicoef,ndetsave,index_det_save)
Save the wave function into the |EZFIO| file
Needs:
.. hlist::
:columns: 3
* :c:data:`n_int`
* :c:data:`mo_label`
Calls:
.. hlist::
:columns: 3
* :c:func:`ezfio_set_determinants_bit_kind`
* :c:func:`ezfio_set_determinants_mo_label`
* :c:func:`ezfio_set_determinants_n_det`
* :c:func:`ezfio_set_determinants_n_int`
* :c:func:`ezfio_set_determinants_n_states`
* :c:func:`ezfio_set_determinants_psi_coef`
* :c:func:`ezfio_set_determinants_psi_det`
* :c:func:`write_int`
.. c:function:: save_wavefunction_truncated:
File : :file:`determinants/determinants.irp.f`
.. code:: fortran
subroutine save_wavefunction_truncated(thr)
Save the wave function into the |EZFIO| file
Needs:
.. hlist::
:columns: 3
* :c:data:`n_states`
* :c:data:`psi_det_sorted`
* :c:data:`n_det`
* :c:data:`mpi_master`
Calls:
.. hlist::
:columns: 3
* :c:func:`save_wavefunction_general`
.. c:function:: save_wavefunction_unsorted:
File : :file:`determinants/determinants.irp.f`
.. code:: fortran
subroutine save_wavefunction_unsorted
Save the wave function into the |EZFIO| file
Needs:
.. hlist::
:columns: 3
* :c:data:`psi_coef`
* :c:data:`psi_det`
* :c:data:`n_states`
* :c:data:`n_det`
* :c:data:`mpi_master`
Calls:
.. hlist::
:columns: 3
* :c:func:`save_wavefunction_general`
.. c:function:: set_natural_mos:
File : :file:`determinants/density_matrix.irp.f`
.. code:: fortran
subroutine set_natural_mos
Set natural orbitals, obtained by diagonalization of the one-body density matrix
in the |MO| basis
Needs:
.. hlist::
:columns: 3
* :c:data:`mo_occ`
* :c:data:`one_e_dm_mo`
* :c:data:`mo_num`
Called by:
.. hlist::
:columns: 3
* :c:func:`save_natural_mos`
Calls:
.. hlist::
:columns: 3
* :c:func:`mo_as_svd_vectors_of_mo_matrix_eig`
Touches:
.. hlist::
:columns: 3
* :c:data:`mo_occ`
.. c:function:: sort_dets_ab:
File : :file:`determinants/sort_dets_ab.irp.f`
.. code:: fortran
subroutine sort_dets_ab(key, idx, shortcut, N_key, Nint)
Deprecated routine
Calls:
.. hlist::
:columns: 3
* :c:func:`tamiser`
.. c:function:: sort_dets_ab_v:
File : :file:`determinants/sort_dets_ab.irp.f`
.. code:: fortran
subroutine sort_dets_ab_v(key_in, key_out, idx, shortcut, version, N_key, Nint)
Deprecated routine
Called by:
.. hlist::
:columns: 3
* :c:func:`s2_u_0_nstates`
* :c:func:`sort_dets_ba_v`
Calls:
.. hlist::
:columns: 3
* :c:func:`tamiser`
.. c:function:: sort_dets_ba_v:
File : :file:`determinants/sort_dets_ab.irp.f`
.. code:: fortran
subroutine sort_dets_ba_v(key_in, key_out, idx, shortcut, version, N_key, Nint)
Deprecated routine
Called by:
.. hlist::
:columns: 3
* :c:func:`s2_u_0_nstates`
Calls:
.. hlist::
:columns: 3
* :c:func:`sort_dets_ab_v`
.. c:function:: sort_dets_by_det_search_key:
File : :file:`determinants/determinants.irp.f`
.. code:: fortran
subroutine sort_dets_by_det_search_key(Ndet, det_in, coef_in, sze, det_out, coef_out, N_st)
Determinants are sorted according to their :c:func:`det_search_key`.
Useful to accelerate the search of a random determinant in the wave
function.
/!\ The first dimension of coef_out and coef_in need to be psi_det_size
Needs:
.. hlist::
:columns: 3
* :c:data:`n_int`
Called by:
.. hlist::
:columns: 3
* :c:data:`psi_cas_sorted_bit`
* :c:data:`psi_det_sorted_bit`
* :c:data:`psi_non_cas_sorted_bit`
Calls:
.. hlist::
:columns: 3
* :c:func:`i8sort`
.. c:function:: spin_det_search_key:
File : :file:`determinants/spindeterminants.irp.f`
.. code:: fortran
integer*8 function spin_det_search_key(det,Nint)
Returns an integer(8) corresponding to a determinant index for searching
.. c:function:: tamiser:
File : :file:`determinants/sort_dets_ab.irp.f`
.. code:: fortran
subroutine tamiser(key, idx, no, n, Nint, N_key)
Called by:
.. hlist::
:columns: 3
* :c:func:`sort_dets_ab`
* :c:func:`sort_dets_ab_v`
.. c:function:: u_0_s2_u_0:
File : :file:`determinants/s2.irp.f`
.. code:: fortran
subroutine u_0_S2_u_0(e_0,u_0,n,keys_tmp,Nint,N_st,sze_8)
Computes e_0 = <u_0|S2|u_0>/<u_0|u_0>
n : number of determinants
Needs:
.. hlist::
:columns: 3
* :c:data:`s_z`
Called by:
.. hlist::
:columns: 3
* :c:data:`ci_electronic_energy`
* :c:data:`s2_values`
Calls:
.. hlist::
:columns: 3
* :c:func:`s2_u_0_nstates`
.. c:function:: wf_of_psi_bilinear_matrix:
File : :file:`determinants/spindeterminants.irp.f`
.. code:: fortran
subroutine wf_of_psi_bilinear_matrix(truncate)
Generate a wave function containing all possible products
of $\alpha$ and $\beta$ determinants
Needs:
.. hlist::
:columns: 3
* :c:data:`psi_coef`
* :c:data:`psi_det_beta_unique`
* :c:data:`psi_det_alpha_unique`
* :c:data:`n_states`
* :c:data:`n_det`
* :c:data:`psi_bilinear_matrix_values`
* :c:data:`n_int`
* :c:data:`psi_det`
* :c:data:`psi_det_sorted`
Touches:
.. hlist::
:columns: 3
* :c:data:`n_det`
* :c:data:`psi_coef`
* :c:data:`psi_det`
.. c:function:: write_spindeterminants:
File : :file:`determinants/spindeterminants.irp.f`
.. code:: fortran
subroutine write_spindeterminants
Needs:
.. hlist::
:columns: 3
* :c:data:`psi_det_beta_unique`
* :c:data:`psi_det_alpha_unique`
* :c:data:`n_states`
* :c:data:`n_det`
* :c:data:`psi_bilinear_matrix_values`
* :c:data:`n_int`
Calls:
.. hlist::
:columns: 3
* :c:func:`ezfio_set_spindeterminants_bit_kind`
* :c:func:`ezfio_set_spindeterminants_n_det`
* :c:func:`ezfio_set_spindeterminants_n_det_alpha`
* :c:func:`ezfio_set_spindeterminants_n_det_beta`
* :c:func:`ezfio_set_spindeterminants_n_int`
* :c:func:`ezfio_set_spindeterminants_n_states`
* :c:func:`ezfio_set_spindeterminants_psi_coef_matrix_columns`
* :c:func:`ezfio_set_spindeterminants_psi_coef_matrix_rows`
* :c:func:`ezfio_set_spindeterminants_psi_coef_matrix_values`
* :c:func:`ezfio_set_spindeterminants_psi_det_alpha`
* :c:func:`ezfio_set_spindeterminants_psi_det_beta`
.. c:function:: zmq_get_n_det:
File : :file:`determinants/zmq.irp.f_template_379`
.. code:: fortran
integer function zmq_get_N_det(zmq_to_qp_run_socket, worker_id)
Get N_det from the qp_run scheduler
Needs:
.. hlist::
:columns: 3
* :c:data:`zmq_state`
* :c:data:`n_det`
* :c:data:`mpi_master`
.. c:function:: zmq_get_n_det_alpha_unique:
File : :file:`determinants/zmq.irp.f_template_379`
.. code:: fortran
integer function zmq_get_N_det_alpha_unique(zmq_to_qp_run_socket, worker_id)
Get N_det_alpha_unique from the qp_run scheduler
Needs:
.. hlist::
:columns: 3
* :c:data:`psi_det_alpha_unique`
* :c:data:`zmq_state`
* :c:data:`mpi_master`
.. c:function:: zmq_get_n_det_beta_unique:
File : :file:`determinants/zmq.irp.f_template_379`
.. code:: fortran
integer function zmq_get_N_det_beta_unique(zmq_to_qp_run_socket, worker_id)
Get N_det_beta_unique from the qp_run scheduler
Needs:
.. hlist::
:columns: 3
* :c:data:`psi_det_beta_unique`
* :c:data:`zmq_state`
* :c:data:`mpi_master`
.. c:function:: zmq_get_n_states:
File : :file:`determinants/zmq.irp.f_template_379`
.. code:: fortran
integer function zmq_get_N_states(zmq_to_qp_run_socket, worker_id)
Get N_states from the qp_run scheduler
Needs:
.. hlist::
:columns: 3
* :c:data:`n_states`
* :c:data:`zmq_state`
* :c:data:`mpi_master`
.. c:function:: zmq_get_psi:
File : :file:`determinants/zmq.irp.f`
.. code:: fortran
integer function zmq_get_psi(zmq_to_qp_run_socket, worker_id)
Get the wave function from the qp_run scheduler
Needs:
.. hlist::
:columns: 3
* :c:data:`psi_coef`
* :c:data:`psi_det`
* :c:data:`n_states`
* :c:data:`n_det`
* :c:data:`psi_det_size`
Touches:
.. hlist::
:columns: 3
* :c:data:`n_det`
* :c:data:`n_states`
* :c:data:`psi_coef`
* :c:data:`psi_det`
* :c:data:`psi_det_size`
.. c:function:: zmq_get_psi_bilinear:
File : :file:`determinants/zmq.irp.f`
.. code:: fortran
integer function zmq_get_psi_bilinear(zmq_to_qp_run_socket, worker_id)
Get the wave function from the qp_run scheduler
Needs:
.. hlist::
:columns: 3
* :c:data:`psi_coef`
* :c:data:`psi_det_beta_unique`
* :c:data:`psi_bilinear_matrix_values`
* :c:data:`psi_det_alpha_unique`
* :c:data:`n_states`
* :c:data:`psi_bilinear_matrix_values`
* :c:data:`psi_bilinear_matrix_values`
* :c:data:`n_det`
* :c:data:`psi_det_alpha_unique`
* :c:data:`psi_det_beta_unique`
* :c:data:`psi_det_size`
* :c:data:`psi_det`
* :c:data:`psi_bilinear_matrix_values`
Touches:
.. hlist::
:columns: 3
* :c:data:`n_det`
* :c:data:`psi_det_alpha_unique`
* :c:data:`psi_det_beta_unique`
* :c:data:`n_states`
* :c:data:`psi_bilinear_matrix_values`
* :c:data:`psi_bilinear_matrix_values`
* :c:data:`psi_bilinear_matrix_values`
* :c:data:`psi_bilinear_matrix_values`
* :c:data:`psi_coef`
* :c:data:`psi_det`
* :c:data:`psi_det_alpha_unique`
* :c:data:`psi_det_beta_unique`
* :c:data:`psi_det_size`
.. c:function:: zmq_get_psi_bilinear_matrix_columns:
File : :file:`determinants/zmq.irp.f_template_500`
.. code:: fortran
integer*8 function zmq_get_psi_bilinear_matrix_columns(zmq_to_qp_run_socket,worker_id)
Get psi_bilinear_matrix_columns on the qp_run scheduler
Needs:
.. hlist::
:columns: 3
* :c:data:`psi_bilinear_matrix_values`
.. c:function:: zmq_get_psi_bilinear_matrix_order:
File : :file:`determinants/zmq.irp.f_template_500`
.. code:: fortran
integer*8 function zmq_get_psi_bilinear_matrix_order(zmq_to_qp_run_socket,worker_id)
Get psi_bilinear_matrix_order on the qp_run scheduler
Needs:
.. hlist::
:columns: 3
* :c:data:`psi_bilinear_matrix_values`
.. c:function:: zmq_get_psi_bilinear_matrix_rows:
File : :file:`determinants/zmq.irp.f_template_500`
.. code:: fortran
integer*8 function zmq_get_psi_bilinear_matrix_rows(zmq_to_qp_run_socket,worker_id)
Get psi_bilinear_matrix_rows on the qp_run scheduler
Needs:
.. hlist::
:columns: 3
* :c:data:`psi_bilinear_matrix_values`
.. c:function:: zmq_get_psi_bilinear_matrix_values:
File : :file:`determinants/zmq.irp.f_template_564`
.. code:: fortran
integer*8 function zmq_get_psi_bilinear_matrix_values(zmq_to_qp_run_socket,worker_id)
get psi_bilinear_matrix_values on the qp_run scheduler
Needs:
.. hlist::
:columns: 3
* :c:data:`psi_bilinear_matrix_values`
.. c:function:: zmq_get_psi_coef:
File : :file:`determinants/zmq.irp.f_template_564`
.. code:: fortran
integer*8 function zmq_get_psi_coef(zmq_to_qp_run_socket,worker_id)
get psi_coef on the qp_run scheduler
Needs:
.. hlist::
:columns: 3
* :c:data:`psi_coef`
.. c:function:: zmq_get_psi_det:
File : :file:`determinants/zmq.irp.f_template_440`
.. code:: fortran
integer*8 function zmq_get_psi_det(zmq_to_qp_run_socket,worker_id)
Get psi_det on the qp_run scheduler
Needs:
.. hlist::
:columns: 3
* :c:data:`psi_det`
.. c:function:: zmq_get_psi_det_alpha_unique:
File : :file:`determinants/zmq.irp.f_template_440`
.. code:: fortran
integer*8 function zmq_get_psi_det_alpha_unique(zmq_to_qp_run_socket,worker_id)
Get psi_det_alpha_unique on the qp_run scheduler
Needs:
.. hlist::
:columns: 3
* :c:data:`psi_det_alpha_unique`
.. c:function:: zmq_get_psi_det_beta_unique:
File : :file:`determinants/zmq.irp.f_template_440`
.. code:: fortran
integer*8 function zmq_get_psi_det_beta_unique(zmq_to_qp_run_socket,worker_id)
Get psi_det_beta_unique on the qp_run scheduler
Needs:
.. hlist::
:columns: 3
* :c:data:`psi_det_beta_unique`
.. c:function:: zmq_get_psi_det_size:
File : :file:`determinants/zmq.irp.f_template_379`
.. code:: fortran
integer function zmq_get_psi_det_size(zmq_to_qp_run_socket, worker_id)
Get psi_det_size from the qp_run scheduler
Needs:
.. hlist::
:columns: 3
* :c:data:`zmq_state`
* :c:data:`psi_det_size`
* :c:data:`mpi_master`
.. c:function:: zmq_get_psi_notouch:
File : :file:`determinants/zmq.irp.f`
.. code:: fortran
integer function zmq_get_psi_notouch(zmq_to_qp_run_socket, worker_id)
Get the wave function from the qp_run scheduler
Needs:
.. hlist::
:columns: 3
* :c:data:`psi_coef`
* :c:data:`psi_det`
* :c:data:`n_states`
* :c:data:`n_int`
* :c:data:`psi_det_size`
.. c:function:: zmq_put_n_det:
File : :file:`determinants/zmq.irp.f_template_379`
.. code:: fortran
integer function zmq_put_N_det(zmq_to_qp_run_socket,worker_id)
Put N_det on the qp_run scheduler
Needs:
.. hlist::
:columns: 3
* :c:data:`zmq_state`
* :c:data:`n_det`
.. c:function:: zmq_put_n_det_alpha_unique:
File : :file:`determinants/zmq.irp.f_template_379`
.. code:: fortran
integer function zmq_put_N_det_alpha_unique(zmq_to_qp_run_socket,worker_id)
Put N_det_alpha_unique on the qp_run scheduler
Needs:
.. hlist::
:columns: 3
* :c:data:`psi_det_alpha_unique`
* :c:data:`zmq_state`
.. c:function:: zmq_put_n_det_beta_unique:
File : :file:`determinants/zmq.irp.f_template_379`
.. code:: fortran
integer function zmq_put_N_det_beta_unique(zmq_to_qp_run_socket,worker_id)
Put N_det_beta_unique on the qp_run scheduler
Needs:
.. hlist::
:columns: 3
* :c:data:`psi_det_beta_unique`
* :c:data:`zmq_state`
.. c:function:: zmq_put_n_states:
File : :file:`determinants/zmq.irp.f_template_379`
.. code:: fortran
integer function zmq_put_N_states(zmq_to_qp_run_socket,worker_id)
Put N_states on the qp_run scheduler
Needs:
.. hlist::
:columns: 3
* :c:data:`n_states`
* :c:data:`zmq_state`
.. c:function:: zmq_put_psi:
File : :file:`determinants/zmq.irp.f`
.. code:: fortran
integer function zmq_put_psi(zmq_to_qp_run_socket,worker_id)
Put the wave function on the qp_run scheduler
.. c:function:: zmq_put_psi_bilinear:
File : :file:`determinants/zmq.irp.f`
.. code:: fortran
integer function zmq_put_psi_bilinear(zmq_to_qp_run_socket,worker_id)
Put the wave function on the qp_run scheduler
.. c:function:: zmq_put_psi_bilinear_matrix_columns:
File : :file:`determinants/zmq.irp.f_template_500`
.. code:: fortran
integer*8 function zmq_put_psi_bilinear_matrix_columns(zmq_to_qp_run_socket,worker_id)
Put psi_bilinear_matrix_columns on the qp_run scheduler
Needs:
.. hlist::
:columns: 3
* :c:data:`psi_bilinear_matrix_values`
.. c:function:: zmq_put_psi_bilinear_matrix_order:
File : :file:`determinants/zmq.irp.f_template_500`
.. code:: fortran
integer*8 function zmq_put_psi_bilinear_matrix_order(zmq_to_qp_run_socket,worker_id)
Put psi_bilinear_matrix_order on the qp_run scheduler
Needs:
.. hlist::
:columns: 3
* :c:data:`psi_bilinear_matrix_values`
.. c:function:: zmq_put_psi_bilinear_matrix_rows:
File : :file:`determinants/zmq.irp.f_template_500`
.. code:: fortran
integer*8 function zmq_put_psi_bilinear_matrix_rows(zmq_to_qp_run_socket,worker_id)
Put psi_bilinear_matrix_rows on the qp_run scheduler
Needs:
.. hlist::
:columns: 3
* :c:data:`psi_bilinear_matrix_values`
.. c:function:: zmq_put_psi_bilinear_matrix_values:
File : :file:`determinants/zmq.irp.f_template_564`
.. code:: fortran
integer*8 function zmq_put_psi_bilinear_matrix_values(zmq_to_qp_run_socket,worker_id)
Put psi_bilinear_matrix_values on the qp_run scheduler
Needs:
.. hlist::
:columns: 3
* :c:data:`psi_bilinear_matrix_values`
.. c:function:: zmq_put_psi_coef:
File : :file:`determinants/zmq.irp.f_template_564`
.. code:: fortran
integer*8 function zmq_put_psi_coef(zmq_to_qp_run_socket,worker_id)
Put psi_coef on the qp_run scheduler
Needs:
.. hlist::
:columns: 3
* :c:data:`psi_coef`
.. c:function:: zmq_put_psi_det:
File : :file:`determinants/zmq.irp.f_template_440`
.. code:: fortran
integer*8 function zmq_put_psi_det(zmq_to_qp_run_socket,worker_id)
Put psi_det on the qp_run scheduler
Needs:
.. hlist::
:columns: 3
* :c:data:`psi_det`
.. c:function:: zmq_put_psi_det_alpha_unique:
File : :file:`determinants/zmq.irp.f_template_440`
.. code:: fortran
integer*8 function zmq_put_psi_det_alpha_unique(zmq_to_qp_run_socket,worker_id)
Put psi_det_alpha_unique on the qp_run scheduler
Needs:
.. hlist::
:columns: 3
* :c:data:`psi_det_alpha_unique`
.. c:function:: zmq_put_psi_det_beta_unique:
File : :file:`determinants/zmq.irp.f_template_440`
.. code:: fortran
integer*8 function zmq_put_psi_det_beta_unique(zmq_to_qp_run_socket,worker_id)
Put psi_det_beta_unique on the qp_run scheduler
Needs:
.. hlist::
:columns: 3
* :c:data:`psi_det_beta_unique`
.. c:function:: zmq_put_psi_det_size:
File : :file:`determinants/zmq.irp.f_template_379`
.. code:: fortran
integer function zmq_put_psi_det_size(zmq_to_qp_run_socket,worker_id)
Put psi_det_size on the qp_run scheduler
Needs:
.. hlist::
:columns: 3
* :c:data:`zmq_state`
* :c:data:`psi_det_size`