From 7fc9d2540fb1f0446a1c790bd1371a22ee9414d7 Mon Sep 17 00:00:00 2001 From: Anthony Scemama Date: Mon, 28 Jan 2019 22:01:50 +0100 Subject: [PATCH 1/4] Fixing travis --- src/davidson/davidson_parallel.irp.f | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/davidson/davidson_parallel.irp.f b/src/davidson/davidson_parallel.irp.f index 54550c50..bd31af17 100644 --- a/src/davidson/davidson_parallel.irp.f +++ b/src/davidson/davidson_parallel.irp.f @@ -53,7 +53,7 @@ subroutine davidson_run_slave(thread,iproc) endif doexit = receive IRP_ENDIF - if (doexit) then + if (doexit>0) then call end_zmq_to_qp_run_socket(zmq_to_qp_run_socket) return endif From f4bff28cd1cff9a1187ba774e91988afa3611248 Mon Sep 17 00:00:00 2001 From: Anthony Scemama Date: Tue, 29 Jan 2019 15:40:00 +0100 Subject: [PATCH 2/4] Warnings in documentation --- docs/source/_static/links.rst | 14 +- docs/source/conf.py | 2 +- docs/source/intro/selected_ci.rst | 2 - docs/source/modules/ao_basis.rst | 1245 --- docs/source/modules/ao_one_e_ints.rst | 2015 ----- docs/source/modules/ao_two_e_erf_ints.rst | 901 -- docs/source/modules/ao_two_e_ints.rst | 1282 --- docs/source/modules/aux_quantities.rst | 52 - docs/source/modules/becke_numerical_grid.rst | 833 -- docs/source/modules/bitmask.rst | 3489 -------- docs/source/modules/cipsi.rst | 2259 ----- docs/source/modules/cis.rst | 275 - docs/source/modules/cisd.rst | 273 - docs/source/modules/davidson.rst | 1799 ---- docs/source/modules/davidson_dressed.rst | 13 - docs/source/modules/davidson_undressed.rst | 75 - docs/source/modules/density_for_dft.rst | 306 - docs/source/modules/determinants.rst | 7922 ----------------- docs/source/modules/dft_keywords.rst | 68 - docs/source/modules/dft_utils_in_r.rst | 876 -- docs/source/modules/dft_utils_one_e.rst | 3765 -------- docs/source/modules/dressing.rst | 36 - docs/source/modules/electrons.rst | 114 - docs/source/modules/ezfio_files.rst | 760 -- docs/source/modules/fci.rst | 151 - docs/source/modules/generators_cas.rst | 19 - docs/source/modules/generators_full.rst | 295 - docs/source/modules/hartree_fock.rst | 406 - docs/source/modules/iterations.rst | 204 - docs/source/modules/kohn_sham.rst | 101 - docs/source/modules/kohn_sham_rs.rst | 468 - docs/source/modules/mo_basis.rst | 815 -- docs/source/modules/mo_guess.rst | 160 - docs/source/modules/mo_one_e_ints.rst | 571 -- docs/source/modules/mo_two_e_erf_ints.rst | 1000 --- docs/source/modules/mo_two_e_ints.rst | 1312 --- docs/source/modules/mpi.rst | 291 - docs/source/modules/nuclei.rst | 666 -- docs/source/modules/perturbation.rst | 999 --- docs/source/modules/pseudo.rst | 94 - docs/source/modules/psiref_cas.rst | 14 - docs/source/modules/psiref_utils.rst | 16 - docs/source/modules/scf_utils.rst | 795 -- docs/source/modules/selectors_cassd.rst | 13 - docs/source/modules/selectors_full.rst | 153 - docs/source/modules/selectors_utils.rst | 649 -- docs/source/modules/single_ref_method.rst | 14 - docs/source/modules/tools.rst | 246 - docs/source/modules/utils.rst | 3024 ------- docs/source/modules/zmq.rst | 1513 ---- docs/source/programmers_guide/conventions.rst | 2 +- docs/source/programmers_guide/ezfio.rst | 4 +- .../programmers_guide/index_providers.rst | 4 +- docs/source/programs/cis.rst | 27 +- docs/source/programs/cisd.rst | 1 + docs/source/programs/fci.rst | 4 +- docs/source/programs/molden.rst | 2 +- docs/source/programs/write_integrals_erf.rst | 3 +- docs/source/users_guide/interfaces.rst | 2 +- docs/source/users_guide/qp_reset.rst | 32 + docs/source/users_guide/qpsh.rst | 2 +- docs/source/users_guide/quickstart.rst | 5 +- man/cis.1 | 23 +- man/cisd.1 | 2 +- man/configure.1 | 2 +- man/diagonalize_h.1 | 2 +- man/excited_states.1 | 2 +- man/fci.1 | 6 +- man/fcidump.1 | 2 +- man/four_idx_transform.1 | 2 +- man/interfaces.1 | 2 +- man/ks_scf.1 | 2 +- man/molden.1 | 4 +- man/natural_orbitals.1 | 2 +- man/plugins.1 | 2 +- man/print_e_conv.1 | 2 +- man/print_wf.1 | 2 +- man/printing.1 | 2 +- man/pt2.1 | 2 +- man/qp_convert_output_to_ezfio.1 | 2 +- man/qp_create_ezfio_from_xyz.1 | 2 +- man/qp_edit.1 | 2 +- man/qp_export_as_tgz.1 | 2 +- man/qp_plugins.1 | 2 +- man/qp_run.1 | 2 +- man/qp_set_frozen_core.1 | 2 +- man/qp_set_mo_class.1 | 2 +- man/qp_stop.1 | 2 +- man/qp_update.1 | 2 +- man/qpsh.1 | 4 +- man/rs_ks_scf.1 | 2 +- man/save_natorb.1 | 2 +- man/save_one_e_dm.1 | 2 +- man/save_ortho_mos.1 | 2 +- man/scf.1 | 2 +- man/write_integrals_erf.1 | 5 +- src/ao_basis/README.rst | 10 +- src/ao_basis/aos_value.irp.f | 31 +- src/ao_one_e_ints/kin_ao_ints.irp.f | 9 +- src/ao_one_e_ints/pot_ao_erf_ints.irp.f | 19 +- .../two_e_integrals_erf.irp.f | 20 +- src/ao_two_e_ints/two_e_integrals.irp.f | 25 +- src/cipsi/README.rst | 2 +- src/cipsi/pt2_stoch_routines.irp.f | 3 +- src/cis/README.rst | 27 +- src/cis/cis.irp.f | 95 +- src/davidson/README.rst | 19 +- src/davidson/davidson_parallel.irp.f | 10 +- src/davidson/u0_h_u0.irp.f | 10 +- src/davidson/u0_wee_u0.irp.f | 8 +- src/determinants/EZFIO.cfg | 4 +- src/determinants/README.rst | 12 +- src/dft_utils_in_r/dm_in_r.irp.f | 20 +- src/fci/README.rst | 47 +- src/fci/fci.irp.f | 4 +- src/hartree_fock/README.rst | 4 +- src/mo_basis/mos.irp.f | 4 +- src/perturbation/perturbation.template.f | 4 +- src/perturbation/selection.irp.f | 3 +- src/scf_utils/roothaan_hall_scf.irp.f | 10 +- src/selectors_cassd/README.rst | 2 +- src/tools/molden.irp.f | 2 +- src/tools/write_integrals_erf.irp.f | 3 +- 123 files changed, 350 insertions(+), 42610 deletions(-) delete mode 100644 docs/source/modules/ao_basis.rst delete mode 100644 docs/source/modules/ao_one_e_ints.rst delete mode 100644 docs/source/modules/ao_two_e_erf_ints.rst delete mode 100644 docs/source/modules/ao_two_e_ints.rst delete mode 100644 docs/source/modules/aux_quantities.rst delete mode 100644 docs/source/modules/becke_numerical_grid.rst delete mode 100644 docs/source/modules/bitmask.rst delete mode 100644 docs/source/modules/cipsi.rst delete mode 100644 docs/source/modules/cis.rst delete mode 100644 docs/source/modules/cisd.rst delete mode 100644 docs/source/modules/davidson.rst delete mode 100644 docs/source/modules/davidson_dressed.rst delete mode 100644 docs/source/modules/davidson_undressed.rst delete mode 100644 docs/source/modules/density_for_dft.rst delete mode 100644 docs/source/modules/determinants.rst delete mode 100644 docs/source/modules/dft_keywords.rst delete mode 100644 docs/source/modules/dft_utils_in_r.rst delete mode 100644 docs/source/modules/dft_utils_one_e.rst delete mode 100644 docs/source/modules/dressing.rst delete mode 100644 docs/source/modules/electrons.rst delete mode 100644 docs/source/modules/ezfio_files.rst delete mode 100644 docs/source/modules/fci.rst delete mode 100644 docs/source/modules/generators_cas.rst delete mode 100644 docs/source/modules/generators_full.rst delete mode 100644 docs/source/modules/hartree_fock.rst delete mode 100644 docs/source/modules/iterations.rst delete mode 100644 docs/source/modules/kohn_sham.rst delete mode 100644 docs/source/modules/kohn_sham_rs.rst delete mode 100644 docs/source/modules/mo_basis.rst delete mode 100644 docs/source/modules/mo_guess.rst delete mode 100644 docs/source/modules/mo_one_e_ints.rst delete mode 100644 docs/source/modules/mo_two_e_erf_ints.rst delete mode 100644 docs/source/modules/mo_two_e_ints.rst delete mode 100644 docs/source/modules/mpi.rst delete mode 100644 docs/source/modules/nuclei.rst delete mode 100644 docs/source/modules/perturbation.rst delete mode 100644 docs/source/modules/pseudo.rst delete mode 100644 docs/source/modules/psiref_cas.rst delete mode 100644 docs/source/modules/psiref_utils.rst delete mode 100644 docs/source/modules/scf_utils.rst delete mode 100644 docs/source/modules/selectors_cassd.rst delete mode 100644 docs/source/modules/selectors_full.rst delete mode 100644 docs/source/modules/selectors_utils.rst delete mode 100644 docs/source/modules/single_ref_method.rst delete mode 100644 docs/source/modules/tools.rst delete mode 100644 docs/source/modules/utils.rst delete mode 100644 docs/source/modules/zmq.rst create mode 100644 docs/source/users_guide/qp_reset.rst diff --git a/docs/source/_static/links.rst b/docs/source/_static/links.rst index f95e3e70..96393b79 100644 --- a/docs/source/_static/links.rst +++ b/docs/source/_static/links.rst @@ -12,7 +12,6 @@ .. _Irene: http://www-hpc.cea.fr/en/complexe/tgcc-Irene.htm .. _IRPF90: http://irpf90.ups-tlse.fr .. _LAPACK: http://www.netlib.org/lapack/ -.. _Molden: http://cheminf.cmbi.ru.nl/molden/ .. _NECI: https://github.com/ghb24/NECI_STABLE .. _Ninja: https://ninja-build.org/ .. _NWChem: http://www.nwchem-sw.org/ @@ -53,12 +52,15 @@ .. |CIPSI| replace:: :abbr:`CIPSI (Configuration Interaction using a Perturbative Selection)` .. |CI| replace:: :abbr:`CI (Configuration Interaction)` .. |CISD| replace:: :abbr:`CISD (Configuration Interaction with Single and Double Excitations)` +.. |CASSCF| replace:: |CAS| - |SCF| .. |CIS| replace:: :abbr:`CIS (Configuration Interaction with Single Excitations)` -.. |DFT| replace:: :abbr:`DFT (Density Functional Theory)` .. |DDCI| replace:: :abbr:`DDCI (Difference Dedicated Configuration Interaction)` +.. |DFT| replace:: :abbr:`DFT (Density Functional Theory)` .. |DIIS| replace:: :abbr:`DIIS (Direct Inversion of the Iterative Subspace)` +.. |FCIQMC| replace:: |FCI| - |QMC| .. |FCI| replace:: :abbr:`FCI (Full Configuration Interaction)` .. |HF| replace:: :abbr:`HF (Hartree-Fock)` +.. |KS-DFT| replace:: :abbr:`KS-DFT (Kohn-Sham Density Functional Theory)` .. |MO| replace:: :abbr:`MO (Molecular Orbital)` .. |MOs| replace:: :abbr:`MOs (Molecular Orbitals)` .. |MP2| replace:: :abbr:`MP2 (Moller-Plesset second order perturbative correction)` @@ -67,15 +69,13 @@ .. |MRPT| replace:: :abbr:`MRPT (Multi-Reference Perturbation Theory)` .. |PT2| replace:: :abbr:`PT2 (Second order perturbative correction)` .. |QMC| replace:: :abbr:`QMC (Quantum Monte Carlo)` +.. |ROHF| replace:: :abbr:`ROHF (Restricted Open-Shell Hartree-Fock)` +.. |RSDFT| replace:: :abbr:`RSDFT (Range Separated Density Functional Theory)` +.. |RSH| replace:: :abbr:`RSH (Range Separated Hybrids)` .. |rst| replace:: :abbr:`RST (ReStructured Text)` .. |SCF| replace:: :abbr:`SCF (Self Consistent Field)` -.. |RSH| replace:: :abbr:`RSH (Range Separated Hybrids)` -.. |RSDFT| replace:: :abbr:`RSDFT (Range Separated Density Functional Theory)` -.. |KS-DFT| replace:: :abbr:`KS-DFT (Kohn-Sham Density Functional Theory)` .. |sCI| replace:: :abbr:`sCI (Selected-CI)` .. |WFT| replace:: :abbr:`WFT (Wave Function Theory)` -.. |CASSCF| replace:: |CAS| - |SCF| -.. |FCIQMC| replace:: |FCI| - |QMC| .. |kalpha| replace:: :math:`|\alpha \rangle` .. |H| replace:: :math:`\hat H` diff --git a/docs/source/conf.py b/docs/source/conf.py index 939793cd..8d6a023e 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -171,7 +171,7 @@ for f in os.listdir("users_guide"): for f in os.listdir("programs"): name = f.split('.')[0] - if name not in []: + if name not in [""]: filename = os.path.join("programs",name) man_pages.append( (filename, name, qpdoc, [author], 1) ) diff --git a/docs/source/intro/selected_ci.rst b/docs/source/intro/selected_ci.rst index 443a678f..21062e62 100644 --- a/docs/source/intro/selected_ci.rst +++ b/docs/source/intro/selected_ci.rst @@ -55,8 +55,6 @@ Simple Algorithm .. |SetDI| replace:: `\{|D_I\rangle\}^{(n)}` .. |Psi_n| replace:: `|\Psi^{(n)}\rangle` -.. |H| replace:: `\hat H` -.. |kalpha| replace:: `|\alpha\rangle` .. |kalpha_star| replace:: `\{ |\alpha \rangle \}_\star ^{(n)}` .. |ealpha| replace:: `e_\alpha` .. |EPT| replace:: `E_\text{PT2}` diff --git a/docs/source/modules/ao_basis.rst b/docs/source/modules/ao_basis.rst deleted file mode 100644 index f61e99e8..00000000 --- a/docs/source/modules/ao_basis.rst +++ /dev/null @@ -1,1245 +0,0 @@ -.. _module_ao_basis: - -.. program:: ao_basis - -.. default-role:: option - -======== -ao_basis -======== - -This module describes the atomic orbitals basis set. - -An |AO| :math:`\chi` centered on nucleus A is represented as: - -.. math:: - - \chi_i({\bf r}) = (x-X_A)^a (y-Y_A)^b (z-Z_A)^c \sum_k c_{ki} e^{-\gamma_{ki} |{\bf r} - {\bf R}_A|^2} - - -The |AO| coefficients are normalized as: - -.. math:: - - {\tilde c}_{ki} = \frac{c_{ki}}{ \int \left( (x-X_A)^a (y-Y_A)^b (z-Z_A)^c e^{-\gamma_{ki} |{\bf r} - {\bf R}_A|^2} \right)^2 dr} - -Warning: `ao_coef` contains the |AO| coefficients given in input. These do not -include the normalization constant of the |AO|. The `ao_coef_normalized` provider includes -this normalization factor. - -The |AOs| are also sorted by increasing exponent to accelerate the calculation of -the two electron integrals. - - - - - - -EZFIO parameters ----------------- - -.. option:: ao_basis - - Name of the |AO| basis set - - -.. option:: ao_num - - Number of |AOs| - - -.. option:: ao_prim_num - - Number of primitives per |AO| - - -.. option:: ao_prim_num_max - - Maximum number of primitives - - Default: =maxval(ao_basis.ao_prim_num) - -.. option:: ao_nucl - - Index of the nucleus on which the |AO| is centered - - -.. option:: ao_power - - Powers of x, y and z for each |AO| - - -.. option:: ao_coef - - Primitive coefficients, read from input. Those should not be used directly, as the MOs are expressed on the basis of **normalized** AOs. - - -.. option:: ao_expo - - Exponents for each primitive of each |AO| - - -.. option:: ao_md5 - - MD5 key, specific of the |AO| basis - - -.. option:: ao_cartesian - - If |true|, use |AOs| in Cartesian coordinates (6d,10f,...) - - Default: false - - -Providers ---------- - -.. c:var:: ao_coef_normalization_factor - - - File : :file:`ao_basis/aos.irp.f` - - .. code:: fortran - - double precision, allocatable :: ao_coef_normalized (ao_num,ao_prim_num_max) - double precision, allocatable :: ao_coef_normalization_factor (ao_num) - - - Coefficients including the |AO| normalization - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_coef` - * :c:data:`ao_expo` - * :c:data:`ao_num` - * :c:data:`ao_power` - * :c:data:`ao_prim_num` - * :c:data:`ao_prim_num_max` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_coef_normalization_libint_factor` - * :c:data:`ao_coef_normalized_ordered` - - -.. c:var:: ao_coef_normalization_libint_factor - - - File : :file:`ao_basis/aos.irp.f` - - .. code:: fortran - - double precision, allocatable :: ao_coef_normalization_libint_factor (ao_num) - - - |AO| normalization for interfacing with libint - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_coef_normalized` - * :c:data:`ao_expo` - * :c:data:`ao_l` - * :c:data:`ao_num` - * :c:data:`ao_prim_num` - - - -.. c:var:: ao_coef_normalized - - - File : :file:`ao_basis/aos.irp.f` - - .. code:: fortran - - double precision, allocatable :: ao_coef_normalized (ao_num,ao_prim_num_max) - double precision, allocatable :: ao_coef_normalization_factor (ao_num) - - - Coefficients including the |AO| normalization - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_coef` - * :c:data:`ao_expo` - * :c:data:`ao_num` - * :c:data:`ao_power` - * :c:data:`ao_prim_num` - * :c:data:`ao_prim_num_max` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_coef_normalization_libint_factor` - * :c:data:`ao_coef_normalized_ordered` - - -.. c:var:: ao_coef_normalized_ordered - - - File : :file:`ao_basis/aos.irp.f` - - .. code:: fortran - - double precision, allocatable :: ao_coef_normalized_ordered (ao_num,ao_prim_num_max) - double precision, allocatable :: ao_expo_ordered (ao_num,ao_prim_num_max) - - - Sorted primitives to accelerate 4 index |MO| transformation - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_coef_normalized` - * :c:data:`ao_expo` - * :c:data:`ao_num` - * :c:data:`ao_prim_num` - * :c:data:`ao_prim_num_max` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_coef_normalized_ordered_transp` - * :c:data:`ao_expo_ordered_transp` - - -.. c:var:: ao_coef_normalized_ordered_transp - - - File : :file:`ao_basis/aos.irp.f` - - .. code:: fortran - - double precision, allocatable :: ao_coef_normalized_ordered_transp (ao_prim_num_max,ao_num) - - - Transposed :c:data:`ao_coef_normalized_ordered` - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_coef_normalized_ordered` - * :c:data:`ao_num` - * :c:data:`ao_prim_num_max` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_coef_normalized_ordered_transp_per_nucl` - * :c:data:`ao_deriv2_x` - * :c:data:`ao_deriv_1_x` - * :c:data:`ao_dipole_x` - * :c:data:`ao_integrals_n_e` - * :c:data:`ao_integrals_n_e_per_atom` - * :c:data:`ao_overlap` - * :c:data:`ao_overlap_abs` - * :c:data:`ao_pseudo_integrals_local` - * :c:data:`ao_pseudo_integrals_non_local` - * :c:data:`ao_spread_x` - * :c:data:`ao_two_e_integral_alpha` - * :c:data:`ao_two_e_integral_erf_schwartz` - * :c:data:`ao_two_e_integral_schwartz` - * :c:data:`ao_two_e_integrals_erf_in_map` - * :c:data:`ao_two_e_integrals_in_map` - - -.. c:var:: ao_coef_normalized_ordered_transp_per_nucl - - - File : :file:`ao_basis/aos_transp.irp.f` - - .. code:: fortran - - double precision, allocatable :: ao_coef_normalized_ordered_transp_per_nucl (ao_prim_num_max,N_AOs_max,nucl_num) - - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_coef_normalized_ordered_transp` - * :c:data:`ao_prim_num` - * :c:data:`ao_prim_num_max` - * :c:data:`nucl_aos_transposed` - * :c:data:`nucl_n_aos` - * :c:data:`nucl_num` - - - -.. c:var:: ao_expo_ordered - - - File : :file:`ao_basis/aos.irp.f` - - .. code:: fortran - - double precision, allocatable :: ao_coef_normalized_ordered (ao_num,ao_prim_num_max) - double precision, allocatable :: ao_expo_ordered (ao_num,ao_prim_num_max) - - - Sorted primitives to accelerate 4 index |MO| transformation - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_coef_normalized` - * :c:data:`ao_expo` - * :c:data:`ao_num` - * :c:data:`ao_prim_num` - * :c:data:`ao_prim_num_max` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_coef_normalized_ordered_transp` - * :c:data:`ao_expo_ordered_transp` - - -.. c:var:: ao_expo_ordered_transp - - - File : :file:`ao_basis/aos.irp.f` - - .. code:: fortran - - double precision, allocatable :: ao_expo_ordered_transp (ao_prim_num_max,ao_num) - - - Transposed :c:data:`ao_expo_ordered` - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_coef_normalized_ordered` - * :c:data:`ao_num` - * :c:data:`ao_prim_num_max` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_deriv2_x` - * :c:data:`ao_deriv_1_x` - * :c:data:`ao_dipole_x` - * :c:data:`ao_expo_ordered_transp_per_nucl` - * :c:data:`ao_integrals_n_e` - * :c:data:`ao_integrals_n_e_per_atom` - * :c:data:`ao_overlap` - * :c:data:`ao_overlap_abs` - * :c:data:`ao_pseudo_integrals_local` - * :c:data:`ao_pseudo_integrals_non_local` - * :c:data:`ao_spread_x` - * :c:data:`ao_two_e_integral_alpha` - * :c:data:`ao_two_e_integral_erf_schwartz` - * :c:data:`ao_two_e_integral_schwartz` - * :c:data:`ao_two_e_integrals_erf_in_map` - * :c:data:`ao_two_e_integrals_in_map` - - -.. c:var:: ao_expo_ordered_transp_per_nucl - - - File : :file:`ao_basis/aos_transp.irp.f` - - .. code:: fortran - - double precision, allocatable :: ao_expo_ordered_transp_per_nucl (ao_prim_num_max,N_AOs_max,nucl_num) - - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_expo_ordered_transp` - * :c:data:`ao_prim_num` - * :c:data:`ao_prim_num_max` - * :c:data:`nucl_aos_transposed` - * :c:data:`nucl_n_aos` - * :c:data:`nucl_num` - - - -.. c:var:: ao_l - - - File : :file:`ao_basis/aos.irp.f` - - .. code:: fortran - - integer, allocatable :: ao_l (ao_num) - integer :: ao_l_max - character*(128), allocatable :: ao_l_char (ao_num) - - - :math:`l` value of the |AO|: :math`a+b+c` in :math:`x^a y^b z^c` - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`ao_power` - * :c:data:`l_to_charater` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_cart_to_sphe_coef` - * :c:data:`ao_coef_normalization_libint_factor` - * :c:data:`ao_l_char_space` - * :c:data:`nucl_list_shell_aos` - - -.. c:var:: ao_l_char - - - File : :file:`ao_basis/aos.irp.f` - - .. code:: fortran - - integer, allocatable :: ao_l (ao_num) - integer :: ao_l_max - character*(128), allocatable :: ao_l_char (ao_num) - - - :math:`l` value of the |AO|: :math`a+b+c` in :math:`x^a y^b z^c` - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`ao_power` - * :c:data:`l_to_charater` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_cart_to_sphe_coef` - * :c:data:`ao_coef_normalization_libint_factor` - * :c:data:`ao_l_char_space` - * :c:data:`nucl_list_shell_aos` - - -.. c:var:: ao_l_char_space - - - File : :file:`ao_basis/aos.irp.f` - - .. code:: fortran - - character*(4), allocatable :: ao_l_char_space (ao_num) - - - Converts an l value to a string - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_l` - * :c:data:`ao_num` - * :c:data:`ao_power` - - - -.. c:var:: ao_l_max - - - File : :file:`ao_basis/aos.irp.f` - - .. code:: fortran - - integer, allocatable :: ao_l (ao_num) - integer :: ao_l_max - character*(128), allocatable :: ao_l_char (ao_num) - - - :math:`l` value of the |AO|: :math`a+b+c` in :math:`x^a y^b z^c` - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`ao_power` - * :c:data:`l_to_charater` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_cart_to_sphe_coef` - * :c:data:`ao_coef_normalization_libint_factor` - * :c:data:`ao_l_char_space` - * :c:data:`nucl_list_shell_aos` - - -.. c:var:: ao_power_ordered_transp_per_nucl - - - File : :file:`ao_basis/aos_transp.irp.f` - - .. code:: fortran - - integer, allocatable :: ao_power_ordered_transp_per_nucl (3,N_AOs_max,nucl_num) - - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_power` - * :c:data:`nucl_aos_transposed` - * :c:data:`nucl_n_aos` - * :c:data:`nucl_num` - - - -.. c:var:: ao_prim_num_max - - - File : :file:`ao_basis/aos.irp.f` - - .. code:: fortran - - integer :: ao_prim_num_max - - - Max number of primitives. - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_prim_num` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_coef` - * :c:data:`ao_coef_normalized` - * :c:data:`ao_coef_normalized_ordered` - * :c:data:`ao_coef_normalized_ordered_transp` - * :c:data:`ao_coef_normalized_ordered_transp_per_nucl` - * :c:data:`ao_expo` - * :c:data:`ao_expo_ordered_transp` - * :c:data:`ao_expo_ordered_transp_per_nucl` - - -.. c:var:: cart_to_sphe_0 - - - File : :file:`ao_basis/spherical_to_cartesian.irp.f` - - .. code:: fortran - - double precision, allocatable :: cart_to_sphe_0 (1,1) - - - Spherical -> Cartesian Transformation matrix for l=0 - - - -.. c:var:: cart_to_sphe_1 - - - File : :file:`ao_basis/spherical_to_cartesian.irp.f` - - .. code:: fortran - - double precision, allocatable :: cart_to_sphe_1 (3,3) - - - Spherical -> Cartesian Transformation matrix for l=1 - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_cart_to_sphe_coef` - - -.. c:var:: cart_to_sphe_2 - - - File : :file:`ao_basis/spherical_to_cartesian.irp.f` - - .. code:: fortran - - double precision, allocatable :: cart_to_sphe_2 (6,5) - - - Spherical -> Cartesian Transformation matrix for l=2 - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_cart_to_sphe_coef` - - -.. c:var:: cart_to_sphe_3 - - - File : :file:`ao_basis/spherical_to_cartesian.irp.f` - - .. code:: fortran - - double precision, allocatable :: cart_to_sphe_3 (10,7) - - - Spherical -> Cartesian Transformation matrix for l=3 - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_cart_to_sphe_coef` - - -.. c:var:: cart_to_sphe_4 - - - File : :file:`ao_basis/spherical_to_cartesian.irp.f` - - .. code:: fortran - - double precision, allocatable :: cart_to_sphe_4 (15,9) - - - Spherical -> Cartesian Transformation matrix for l=4 - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_cart_to_sphe_coef` - - -.. c:var:: cart_to_sphe_5 - - - File : :file:`ao_basis/spherical_to_cartesian.irp.f` - - .. code:: fortran - - double precision, allocatable :: cart_to_sphe_5 (21,11) - - - Spherical -> Cartesian Transformation matrix for l=5 - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_cart_to_sphe_coef` - - -.. c:var:: cart_to_sphe_6 - - - File : :file:`ao_basis/spherical_to_cartesian.irp.f` - - .. code:: fortran - - double precision, allocatable :: cart_to_sphe_6 (28,13) - - - Spherical -> Cartesian Transformation matrix for l=6 - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_cart_to_sphe_coef` - - -.. c:var:: cart_to_sphe_7 - - - File : :file:`ao_basis/spherical_to_cartesian.irp.f` - - .. code:: fortran - - double precision, allocatable :: cart_to_sphe_7 (36,15) - - - Spherical -> Cartesian Transformation matrix for l=7 - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_cart_to_sphe_coef` - - -.. c:var:: cart_to_sphe_8 - - - File : :file:`ao_basis/spherical_to_cartesian.irp.f` - - .. code:: fortran - - double precision, allocatable :: cart_to_sphe_8 (45,17) - - - Spherical -> Cartesian Transformation matrix for l=8 - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_cart_to_sphe_coef` - - -.. c:var:: cart_to_sphe_9 - - - File : :file:`ao_basis/spherical_to_cartesian.irp.f` - - .. code:: fortran - - double precision, allocatable :: cart_to_sphe_9 (55,19) - - - Spherical -> Cartesian Transformation matrix for l=9 - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_cart_to_sphe_coef` - - -.. c:var:: l_to_charater - - - File : :file:`ao_basis/aos.irp.f` - - .. code:: fortran - - character*(128), allocatable :: l_to_charater (0:7) - - - Character corresponding to the "l" value of an |AO| - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_l` - - -.. c:var:: n_aos_max - - - File : :file:`ao_basis/aos.irp.f` - - .. code:: fortran - - integer, allocatable :: nucl_n_aos (nucl_num) - integer :: n_aos_max - - - Number of |AOs| per atom - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_nucl` - * :c:data:`ao_num` - * :c:data:`nucl_num` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_coef_normalized_ordered_transp_per_nucl` - * :c:data:`ao_expo_ordered_transp_per_nucl` - * :c:data:`ao_power_ordered_transp_per_nucl` - * :c:data:`nucl_aos` - * :c:data:`nucl_aos_transposed` - * :c:data:`nucl_list_shell_aos` - - -.. c:var:: n_pt_max_i_x - - - File : :file:`ao_basis/dimensions_integrals.irp.f` - - .. code:: fortran - - integer :: n_pt_max_integrals - integer :: n_pt_max_i_x - - - Number of points used in the numerical integrations. - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_power` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_integrals_n_e` - * :c:data:`ao_integrals_n_e_per_atom` - * :c:data:`ao_two_e_integral_alpha` - * :c:data:`ao_two_e_integral_erf_schwartz` - * :c:data:`ao_two_e_integral_schwartz` - * :c:data:`ao_two_e_integrals_erf_in_map` - * :c:data:`ao_two_e_integrals_in_map` - * :c:data:`gauleg_t2` - - -.. c:var:: n_pt_max_integrals - - - File : :file:`ao_basis/dimensions_integrals.irp.f` - - .. code:: fortran - - integer :: n_pt_max_integrals - integer :: n_pt_max_i_x - - - Number of points used in the numerical integrations. - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_power` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_integrals_n_e` - * :c:data:`ao_integrals_n_e_per_atom` - * :c:data:`ao_two_e_integral_alpha` - * :c:data:`ao_two_e_integral_erf_schwartz` - * :c:data:`ao_two_e_integral_schwartz` - * :c:data:`ao_two_e_integrals_erf_in_map` - * :c:data:`ao_two_e_integrals_in_map` - * :c:data:`gauleg_t2` - - -.. c:var:: nucl_aos - - - File : :file:`ao_basis/aos.irp.f` - - .. code:: fortran - - integer, allocatable :: nucl_aos (nucl_num,N_AOs_max) - - - List of |AOs| centered on each atom - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_nucl` - * :c:data:`ao_num` - * :c:data:`nucl_n_aos` - * :c:data:`nucl_num` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`nucl_aos_transposed` - * :c:data:`nucl_list_shell_aos` - - -.. c:var:: nucl_aos_transposed - - - File : :file:`ao_basis/aos_transp.irp.f` - - .. code:: fortran - - integer, allocatable :: nucl_aos_transposed (N_AOs_max,nucl_num) - - - List of AOs attached on each atom - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_nucl` - * :c:data:`ao_num` - * :c:data:`nucl_aos` - * :c:data:`nucl_n_aos` - * :c:data:`nucl_num` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_coef_normalized_ordered_transp_per_nucl` - * :c:data:`ao_expo_ordered_transp_per_nucl` - * :c:data:`ao_power_ordered_transp_per_nucl` - - -.. c:var:: nucl_list_shell_aos - - - File : :file:`ao_basis/aos.irp.f` - - .. code:: fortran - - integer, allocatable :: nucl_list_shell_aos (nucl_num,N_AOs_max) - integer, allocatable :: nucl_num_shell_aos (nucl_num) - - - Index of the shell type |AOs| and of the corresponding |AOs| - By convention, for p,d,f and g |AOs|, we take the index - of the |AO| with the the corresponding power in the x axis - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_l` - * :c:data:`ao_power` - * :c:data:`nucl_aos` - * :c:data:`nucl_n_aos` - * :c:data:`nucl_num` - - - -.. c:var:: nucl_n_aos - - - File : :file:`ao_basis/aos.irp.f` - - .. code:: fortran - - integer, allocatable :: nucl_n_aos (nucl_num) - integer :: n_aos_max - - - Number of |AOs| per atom - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_nucl` - * :c:data:`ao_num` - * :c:data:`nucl_num` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_coef_normalized_ordered_transp_per_nucl` - * :c:data:`ao_expo_ordered_transp_per_nucl` - * :c:data:`ao_power_ordered_transp_per_nucl` - * :c:data:`nucl_aos` - * :c:data:`nucl_aos_transposed` - * :c:data:`nucl_list_shell_aos` - - -.. c:var:: nucl_num_shell_aos - - - File : :file:`ao_basis/aos.irp.f` - - .. code:: fortran - - integer, allocatable :: nucl_list_shell_aos (nucl_num,N_AOs_max) - integer, allocatable :: nucl_num_shell_aos (nucl_num) - - - Index of the shell type |AOs| and of the corresponding |AOs| - By convention, for p,d,f and g |AOs|, we take the index - of the |AO| with the the corresponding power in the x axis - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_l` - * :c:data:`ao_power` - * :c:data:`nucl_aos` - * :c:data:`nucl_n_aos` - * :c:data:`nucl_num` - - - - -Subroutines / functions ------------------------ - -.. c:function:: ao_power_index: - - - File : :file:`ao_basis/aos.irp.f` - - .. code:: fortran - - integer function ao_power_index(nx,ny,nz) - - - Unique index given to a triplet of powers: - - :math:`\frac{1}{2} (l-n_x) (l-n_x+1) + n_z + 1` - - -.. c:function:: ao_value: - - - File : :file:`ao_basis/aos_value.irp.f` - - .. code:: fortran - - double precision function ao_value(i,r) - - - return the value of the ith ao at point r - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_coef_normalized_ordered_transp` - * :c:data:`ao_power` - * :c:data:`ao_expo_ordered_transp` - * :c:data:`ao_prim_num` - * :c:data:`ao_nucl` - * :c:data:`nucl_coord` - - -.. c:function:: give_all_aos_and_grad_and_lapl_at_r: - - - File : :file:`ao_basis/aos_value.irp.f` - - .. code:: fortran - - subroutine give_all_aos_and_grad_and_lapl_at_r(r,aos_array,aos_grad_array,aos_lapl_array) - - - input : r(1) ==> r(1) = x, r(2) = y, r(3) = z - output : aos_array(i) = ao(i) evaluated at r - : aos_grad_array(1,i) = gradient X of the ao(i) evaluated at r - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_expo_ordered_transp_per_nucl` - * :c:data:`ao_power_ordered_transp_per_nucl` - * :c:data:`nucl_n_aos` - * :c:data:`ao_num` - * :c:data:`ao_prim_num` - * :c:data:`ao_coef_normalized_ordered_transp_per_nucl` - * :c:data:`nucl_aos_transposed` - * :c:data:`nucl_coord` - * :c:data:`nucl_num` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`give_all_mos_and_grad_and_lapl_at_r` - - -.. c:function:: give_all_aos_and_grad_at_r: - - - File : :file:`ao_basis/aos_value.irp.f` - - .. code:: fortran - - subroutine give_all_aos_and_grad_at_r(r,aos_array,aos_grad_array) - - - input : r(1) ==> r(1) = x, r(2) = y, r(3) = z - output : aos_array(i) = ao(i) evaluated at r - : aos_grad_array(1,i) = gradient X of the ao(i) evaluated at r - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_expo_ordered_transp_per_nucl` - * :c:data:`ao_power_ordered_transp_per_nucl` - * :c:data:`nucl_n_aos` - * :c:data:`ao_num` - * :c:data:`ao_prim_num` - * :c:data:`ao_coef_normalized_ordered_transp_per_nucl` - * :c:data:`nucl_aos_transposed` - * :c:data:`nucl_coord` - * :c:data:`nucl_num` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`give_all_mos_and_grad_at_r` - - -.. c:function:: give_all_aos_at_r: - - - File : :file:`ao_basis/aos_value.irp.f` - - .. code:: fortran - - subroutine give_all_aos_at_r(r,aos_array) - - - input : r == r(1) = x and so on - aos_array(i) = aos(i) evaluated in r - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_expo_ordered_transp_per_nucl` - * :c:data:`ao_power_ordered_transp_per_nucl` - * :c:data:`nucl_n_aos` - * :c:data:`ao_num` - * :c:data:`ao_prim_num` - * :c:data:`ao_coef_normalized_ordered_transp_per_nucl` - * :c:data:`nucl_aos_transposed` - * :c:data:`nucl_coord` - * :c:data:`nucl_num` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`give_all_mos_at_r` - - -.. c:function:: give_all_aos_at_r_old: - - - File : :file:`ao_basis/aos_value.irp.f` - - .. code:: fortran - - subroutine give_all_aos_at_r_old(r,aos_array) - - - gives the values of aos at a given point r - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - - -.. c:function:: primitive_value: - - - File : :file:`ao_basis/aos_value.irp.f` - - .. code:: fortran - - double precision function primitive_value(i,j,r) - - - return the value of the jth primitive of ith ao at point r WITHOUT THE COEF - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_expo_ordered_transp` - * :c:data:`ao_nucl` - * :c:data:`nucl_coord` - * :c:data:`ao_power` - diff --git a/docs/source/modules/ao_one_e_ints.rst b/docs/source/modules/ao_one_e_ints.rst deleted file mode 100644 index 53f5844c..00000000 --- a/docs/source/modules/ao_one_e_ints.rst +++ /dev/null @@ -1,2015 +0,0 @@ -.. _module_ao_one_e_ints: - -.. program:: ao_one_e_ints - -.. default-role:: option - -================== -ao_one_e_integrals -================== - -All the one-electron integrals in the |AO| basis are here. - -The most important providers for usual quantum-chemistry calculation are: - -* `ao_kinetic_integral` which are the kinetic operator integrals on the |AO| basis (see :file:`kin_ao_ints.irp.f`) -* `ao_nucl_elec_integral` which are the nuclear-elctron operator integrals on the |AO| basis (see :file:`pot_ao_ints.irp.f`) -* `ao_one_e_integrals` which are the the h_core operator integrals on the |AO| basis (see :file:`ao_mono_ints.irp.f`) - - -Note that you can find other interesting integrals related to the position operator in :file:`spread_dipole_ao.irp.f`. - - - -EZFIO parameters ----------------- - -.. option:: ao_integrals_e_n - - Nucleus-electron integrals in |AO| basis set - - -.. option:: io_ao_integrals_e_n - - Read/Write |AO| nucleus-electron attraction integrals from/to disk [ Write | Read | None ] - - Default: None - -.. option:: ao_integrals_kinetic - - Kinetic energy integrals in |AO| basis set - - -.. option:: io_ao_integrals_kinetic - - Read/Write |AO| kinetic integrals from/to disk [ Write | Read | None ] - - Default: None - -.. option:: ao_integrals_pseudo - - Pseudopotential integrals in |AO| basis set - - -.. option:: io_ao_integrals_pseudo - - Read/Write |AO| pseudopotential integrals from/to disk [ Write | Read | None ] - - Default: None - -.. option:: ao_integrals_overlap - - Overlap integrals in |AO| basis set - - -.. option:: io_ao_integrals_overlap - - Read/Write |AO| overlap integrals from/to disk [ Write | Read | None ] - - Default: None - -.. option:: ao_one_e_integrals - - Combined integrals in |AO| basis set - - -.. option:: io_ao_one_e_integrals - - Read/Write |AO| one-electron integrals from/to disk [ Write | Read | None ] - - Default: None - - -Providers ---------- - -.. c:var:: ao_cart_to_sphe_coef - - - File : :file:`ao_one_e_ints/ao_ortho_canonical.irp.f` - - .. code:: fortran - - double precision, allocatable :: ao_cart_to_sphe_coef (ao_num,ao_num) - integer :: ao_cart_to_sphe_num - - - Coefficients to go from cartesian to spherical coordinates in the current - basis set - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_l` - * :c:data:`ao_num` - * :c:data:`ao_power` - * :c:data:`cart_to_sphe_1` - * :c:data:`cart_to_sphe_2` - * :c:data:`cart_to_sphe_3` - * :c:data:`cart_to_sphe_4` - * :c:data:`cart_to_sphe_5` - * :c:data:`cart_to_sphe_6` - * :c:data:`cart_to_sphe_7` - * :c:data:`cart_to_sphe_8` - * :c:data:`cart_to_sphe_9` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_cart_to_sphe_inv` - * :c:data:`ao_cart_to_sphe_overlap` - * :c:data:`ao_ortho_canonical_coef` - - -.. c:var:: ao_cart_to_sphe_inv - - - File : :file:`ao_one_e_ints/ao_ortho_canonical.irp.f` - - .. code:: fortran - - double precision, allocatable :: ao_cart_to_sphe_inv (ao_cart_to_sphe_num,ao_num) - - - Inverse of :c:data:`ao_cart_to_sphe_coef` - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_cart_to_sphe_coef` - * :c:data:`ao_num` - - - -.. c:var:: ao_cart_to_sphe_num - - - File : :file:`ao_one_e_ints/ao_ortho_canonical.irp.f` - - .. code:: fortran - - double precision, allocatable :: ao_cart_to_sphe_coef (ao_num,ao_num) - integer :: ao_cart_to_sphe_num - - - Coefficients to go from cartesian to spherical coordinates in the current - basis set - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_l` - * :c:data:`ao_num` - * :c:data:`ao_power` - * :c:data:`cart_to_sphe_1` - * :c:data:`cart_to_sphe_2` - * :c:data:`cart_to_sphe_3` - * :c:data:`cart_to_sphe_4` - * :c:data:`cart_to_sphe_5` - * :c:data:`cart_to_sphe_6` - * :c:data:`cart_to_sphe_7` - * :c:data:`cart_to_sphe_8` - * :c:data:`cart_to_sphe_9` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_cart_to_sphe_inv` - * :c:data:`ao_cart_to_sphe_overlap` - * :c:data:`ao_ortho_canonical_coef` - - -.. c:var:: ao_cart_to_sphe_overlap - - - File : :file:`ao_one_e_ints/ao_ortho_canonical.irp.f` - - .. code:: fortran - - double precision, allocatable :: ao_cart_to_sphe_overlap (ao_cart_to_sphe_num,ao_cart_to_sphe_num) - - - |AO| overlap matrix in the spherical basis set - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_cart_to_sphe_coef` - * :c:data:`ao_num` - * :c:data:`ao_overlap` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_ortho_canonical_coef` - - -.. c:var:: ao_deriv2_x - - - File : :file:`ao_one_e_ints/kin_ao_ints.irp.f` - - .. code:: fortran - - double precision, allocatable :: ao_deriv2_x (ao_num,ao_num) - double precision, allocatable :: ao_deriv2_y (ao_num,ao_num) - double precision, allocatable :: ao_deriv2_z (ao_num,ao_num) - - - Second derivative matrix elements in the |AO| basis. - - :math:`{\tt ao\_deriv2\_x} = - \langle \chi_i(x,y,z) | \frac{\partial^2}{\partial x^2} |\chi_j (x,y,z) \rangle` - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_coef_normalized_ordered_transp` - * :c:data:`ao_expo_ordered_transp` - * :c:data:`ao_nucl` - * :c:data:`ao_num` - * :c:data:`ao_power` - * :c:data:`ao_prim_num` - * :c:data:`nucl_coord` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_kinetic_integrals` - - -.. c:var:: ao_deriv2_y - - - File : :file:`ao_one_e_ints/kin_ao_ints.irp.f` - - .. code:: fortran - - double precision, allocatable :: ao_deriv2_x (ao_num,ao_num) - double precision, allocatable :: ao_deriv2_y (ao_num,ao_num) - double precision, allocatable :: ao_deriv2_z (ao_num,ao_num) - - - Second derivative matrix elements in the |AO| basis. - - :math:`{\tt ao\_deriv2\_x} = - \langle \chi_i(x,y,z) | \frac{\partial^2}{\partial x^2} |\chi_j (x,y,z) \rangle` - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_coef_normalized_ordered_transp` - * :c:data:`ao_expo_ordered_transp` - * :c:data:`ao_nucl` - * :c:data:`ao_num` - * :c:data:`ao_power` - * :c:data:`ao_prim_num` - * :c:data:`nucl_coord` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_kinetic_integrals` - - -.. c:var:: ao_deriv2_z - - - File : :file:`ao_one_e_ints/kin_ao_ints.irp.f` - - .. code:: fortran - - double precision, allocatable :: ao_deriv2_x (ao_num,ao_num) - double precision, allocatable :: ao_deriv2_y (ao_num,ao_num) - double precision, allocatable :: ao_deriv2_z (ao_num,ao_num) - - - Second derivative matrix elements in the |AO| basis. - - :math:`{\tt ao\_deriv2\_x} = - \langle \chi_i(x,y,z) | \frac{\partial^2}{\partial x^2} |\chi_j (x,y,z) \rangle` - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_coef_normalized_ordered_transp` - * :c:data:`ao_expo_ordered_transp` - * :c:data:`ao_nucl` - * :c:data:`ao_num` - * :c:data:`ao_power` - * :c:data:`ao_prim_num` - * :c:data:`nucl_coord` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_kinetic_integrals` - - -.. c:var:: ao_deriv_1_x - - - File : :file:`ao_one_e_ints/spread_dipole_ao.irp.f` - - .. code:: fortran - - double precision, allocatable :: ao_deriv_1_x (ao_num,ao_num) - double precision, allocatable :: ao_deriv_1_y (ao_num,ao_num) - double precision, allocatable :: ao_deriv_1_z (ao_num,ao_num) - - - * array of the integrals of AO_i * d/dx AO_j - - * array of the integrals of AO_i * d/dy AO_j - - * array of the integrals of AO_i * d/dz AO_j - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_coef_normalized_ordered_transp` - * :c:data:`ao_expo_ordered_transp` - * :c:data:`ao_nucl` - * :c:data:`ao_num` - * :c:data:`ao_power` - * :c:data:`ao_prim_num` - * :c:data:`nucl_coord` - - - -.. c:var:: ao_deriv_1_y - - - File : :file:`ao_one_e_ints/spread_dipole_ao.irp.f` - - .. code:: fortran - - double precision, allocatable :: ao_deriv_1_x (ao_num,ao_num) - double precision, allocatable :: ao_deriv_1_y (ao_num,ao_num) - double precision, allocatable :: ao_deriv_1_z (ao_num,ao_num) - - - * array of the integrals of AO_i * d/dx AO_j - - * array of the integrals of AO_i * d/dy AO_j - - * array of the integrals of AO_i * d/dz AO_j - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_coef_normalized_ordered_transp` - * :c:data:`ao_expo_ordered_transp` - * :c:data:`ao_nucl` - * :c:data:`ao_num` - * :c:data:`ao_power` - * :c:data:`ao_prim_num` - * :c:data:`nucl_coord` - - - -.. c:var:: ao_deriv_1_z - - - File : :file:`ao_one_e_ints/spread_dipole_ao.irp.f` - - .. code:: fortran - - double precision, allocatable :: ao_deriv_1_x (ao_num,ao_num) - double precision, allocatable :: ao_deriv_1_y (ao_num,ao_num) - double precision, allocatable :: ao_deriv_1_z (ao_num,ao_num) - - - * array of the integrals of AO_i * d/dx AO_j - - * array of the integrals of AO_i * d/dy AO_j - - * array of the integrals of AO_i * d/dz AO_j - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_coef_normalized_ordered_transp` - * :c:data:`ao_expo_ordered_transp` - * :c:data:`ao_nucl` - * :c:data:`ao_num` - * :c:data:`ao_power` - * :c:data:`ao_prim_num` - * :c:data:`nucl_coord` - - - -.. c:var:: ao_dipole_x - - - File : :file:`ao_one_e_ints/spread_dipole_ao.irp.f` - - .. code:: fortran - - double precision, allocatable :: ao_dipole_x (ao_num,ao_num) - double precision, allocatable :: ao_dipole_y (ao_num,ao_num) - double precision, allocatable :: ao_dipole_z (ao_num,ao_num) - - - * array of the integrals of AO_i * x AO_j - - * array of the integrals of AO_i * y AO_j - - * array of the integrals of AO_i * z AO_j - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_coef_normalized_ordered_transp` - * :c:data:`ao_expo_ordered_transp` - * :c:data:`ao_nucl` - * :c:data:`ao_num` - * :c:data:`ao_power` - * :c:data:`ao_prim_num` - * :c:data:`nucl_coord` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`mo_dipole_x` - - -.. c:var:: ao_dipole_y - - - File : :file:`ao_one_e_ints/spread_dipole_ao.irp.f` - - .. code:: fortran - - double precision, allocatable :: ao_dipole_x (ao_num,ao_num) - double precision, allocatable :: ao_dipole_y (ao_num,ao_num) - double precision, allocatable :: ao_dipole_z (ao_num,ao_num) - - - * array of the integrals of AO_i * x AO_j - - * array of the integrals of AO_i * y AO_j - - * array of the integrals of AO_i * z AO_j - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_coef_normalized_ordered_transp` - * :c:data:`ao_expo_ordered_transp` - * :c:data:`ao_nucl` - * :c:data:`ao_num` - * :c:data:`ao_power` - * :c:data:`ao_prim_num` - * :c:data:`nucl_coord` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`mo_dipole_x` - - -.. c:var:: ao_dipole_z - - - File : :file:`ao_one_e_ints/spread_dipole_ao.irp.f` - - .. code:: fortran - - double precision, allocatable :: ao_dipole_x (ao_num,ao_num) - double precision, allocatable :: ao_dipole_y (ao_num,ao_num) - double precision, allocatable :: ao_dipole_z (ao_num,ao_num) - - - * array of the integrals of AO_i * x AO_j - - * array of the integrals of AO_i * y AO_j - - * array of the integrals of AO_i * z AO_j - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_coef_normalized_ordered_transp` - * :c:data:`ao_expo_ordered_transp` - * :c:data:`ao_nucl` - * :c:data:`ao_num` - * :c:data:`ao_power` - * :c:data:`ao_prim_num` - * :c:data:`nucl_coord` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`mo_dipole_x` - - -.. c:var:: ao_integrals_n_e - - - File : :file:`ao_one_e_ints/pot_ao_ints.irp.f` - - .. code:: fortran - - double precision, allocatable :: ao_integrals_n_e (ao_num,ao_num) - - - Nucleus-electron interaction, in the |AO| basis set. - - :math:`\langle \chi_i | -\sum_A \frac{1}{|r-R_A|} | \chi_j \rangle` - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_coef_normalized_ordered_transp` - * :c:data:`ao_expo_ordered_transp` - * :c:data:`ao_nucl` - * :c:data:`ao_num` - * :c:data:`ao_power` - * :c:data:`ao_prim_num` - * :c:data:`n_pt_max_integrals` - * :c:data:`nucl_charge` - * :c:data:`nucl_coord` - * :c:data:`nucl_num` - * :c:data:`read_ao_integrals_e_n` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_one_e_integrals` - * :c:data:`ao_ortho_canonical_nucl_elec_integrals` - * :c:data:`ao_ortho_lowdin_nucl_elec_integrals` - * :c:data:`mo_integrals_n_e` - - -.. c:var:: ao_integrals_n_e_per_atom - - - File : :file:`ao_one_e_ints/pot_ao_ints.irp.f` - - .. code:: fortran - - double precision, allocatable :: ao_integrals_n_e_per_atom (ao_num,ao_num,nucl_num) - - - Nucleus-electron interaction in the |AO| basis set, per atom A. - - :math:`\langle \chi_i | -\frac{1}{|r-R_A|} | \chi_j \rangle` - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_coef_normalized_ordered_transp` - * :c:data:`ao_expo_ordered_transp` - * :c:data:`ao_nucl` - * :c:data:`ao_num` - * :c:data:`ao_power` - * :c:data:`ao_prim_num` - * :c:data:`n_pt_max_integrals` - * :c:data:`nucl_coord` - * :c:data:`nucl_num` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`mo_integrals_n_e_per_atom` - - -.. c:var:: ao_kinetic_integrals - - - File : :file:`ao_one_e_ints/kin_ao_ints.irp.f` - - .. code:: fortran - - double precision, allocatable :: ao_kinetic_integrals (ao_num,ao_num) - - - Kinetic energy integrals in the |AO| basis. - - :math:`\langle \chi_i |\hat{T}| \chi_j \rangle` - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_deriv2_x` - * :c:data:`ao_num` - * :c:data:`read_ao_integrals_kinetic` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_one_e_integrals` - * :c:data:`mo_kinetic_integrals` - - -.. c:var:: ao_one_e_integrals - - - File : :file:`ao_one_e_ints/ao_one_e_ints.irp.f` - - .. code:: fortran - - double precision, allocatable :: ao_one_e_integrals (ao_num,ao_num) - double precision, allocatable :: ao_one_e_integrals_diag (ao_num) - - - One-electron Hamiltonian in the |AO| basis. - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_integrals_n_e` - * :c:data:`ao_kinetic_integrals` - * :c:data:`ao_num` - * :c:data:`ao_pseudo_integrals` - * :c:data:`do_pseudo` - * :c:data:`read_ao_one_e_integrals` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`fock_matrix_ao_alpha` - * :c:data:`hf_energy` - * :c:data:`scf_energy` - - -.. c:var:: ao_one_e_integrals_diag - - - File : :file:`ao_one_e_ints/ao_one_e_ints.irp.f` - - .. code:: fortran - - double precision, allocatable :: ao_one_e_integrals (ao_num,ao_num) - double precision, allocatable :: ao_one_e_integrals_diag (ao_num) - - - One-electron Hamiltonian in the |AO| basis. - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_integrals_n_e` - * :c:data:`ao_kinetic_integrals` - * :c:data:`ao_num` - * :c:data:`ao_pseudo_integrals` - * :c:data:`do_pseudo` - * :c:data:`read_ao_one_e_integrals` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`fock_matrix_ao_alpha` - * :c:data:`hf_energy` - * :c:data:`scf_energy` - - -.. c:var:: ao_ortho_canonical_coef - - - File : :file:`ao_one_e_ints/ao_ortho_canonical.irp.f` - - .. code:: fortran - - double precision, allocatable :: ao_ortho_canonical_coef (ao_num,ao_num) - integer :: ao_ortho_canonical_num - - - matrix of the coefficients of the mos generated by the - orthonormalization by the S^{-1/2} canonical transformation of the aos - ao_ortho_canonical_coef(i,j) = coefficient of the ith ao on the jth ao_ortho_canonical orbital - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_cart_to_sphe_coef` - * :c:data:`ao_cart_to_sphe_overlap` - * :c:data:`ao_cartesian` - * :c:data:`ao_num` - * :c:data:`ao_overlap` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_ortho_canonical_coef_inv` - * :c:data:`ao_ortho_canonical_nucl_elec_integrals` - * :c:data:`ao_ortho_canonical_overlap` - * :c:data:`mo_coef` - * :c:data:`mo_num` - - -.. c:var:: ao_ortho_canonical_coef_inv - - - File : :file:`ao_one_e_ints/ao_ortho_canonical.irp.f` - - .. code:: fortran - - double precision, allocatable :: ao_ortho_canonical_coef_inv (ao_num,ao_num) - - - ao_ortho_canonical_coef^(-1) - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`ao_ortho_canonical_coef` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`mo_coef_in_ao_ortho_basis` - - -.. c:var:: ao_ortho_canonical_num - - - File : :file:`ao_one_e_ints/ao_ortho_canonical.irp.f` - - .. code:: fortran - - double precision, allocatable :: ao_ortho_canonical_coef (ao_num,ao_num) - integer :: ao_ortho_canonical_num - - - matrix of the coefficients of the mos generated by the - orthonormalization by the S^{-1/2} canonical transformation of the aos - ao_ortho_canonical_coef(i,j) = coefficient of the ith ao on the jth ao_ortho_canonical orbital - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_cart_to_sphe_coef` - * :c:data:`ao_cart_to_sphe_overlap` - * :c:data:`ao_cartesian` - * :c:data:`ao_num` - * :c:data:`ao_overlap` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_ortho_canonical_coef_inv` - * :c:data:`ao_ortho_canonical_nucl_elec_integrals` - * :c:data:`ao_ortho_canonical_overlap` - * :c:data:`mo_coef` - * :c:data:`mo_num` - - -.. c:var:: ao_ortho_canonical_overlap - - - File : :file:`ao_one_e_ints/ao_ortho_canonical.irp.f` - - .. code:: fortran - - double precision, allocatable :: ao_ortho_canonical_overlap (ao_ortho_canonical_num,ao_ortho_canonical_num) - - - overlap matrix of the ao_ortho_canonical. - Expected to be the Identity - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`ao_ortho_canonical_coef` - * :c:data:`ao_overlap` - - - -.. c:var:: ao_overlap - - - File : :file:`ao_one_e_ints/ao_overlap.irp.f` - - .. code:: fortran - - double precision, allocatable :: ao_overlap (ao_num,ao_num) - double precision, allocatable :: ao_overlap_x (ao_num,ao_num) - double precision, allocatable :: ao_overlap_y (ao_num,ao_num) - double precision, allocatable :: ao_overlap_z (ao_num,ao_num) - - - Overlap between atomic basis functions: - - :math:`\int \chi_i(r) \chi_j(r) dr` - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_coef_normalized_ordered_transp` - * :c:data:`ao_expo_ordered_transp` - * :c:data:`ao_nucl` - * :c:data:`ao_num` - * :c:data:`ao_power` - * :c:data:`ao_prim_num` - * :c:data:`nucl_coord` - * :c:data:`read_ao_integrals_overlap` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_cart_to_sphe_overlap` - * :c:data:`ao_ortho_canonical_coef` - * :c:data:`ao_ortho_canonical_overlap` - * :c:data:`ao_ortho_lowdin_coef` - * :c:data:`ao_ortho_lowdin_overlap` - * :c:data:`fps_spf_matrix_ao` - * :c:data:`mo_overlap` - * :c:data:`s_half` - * :c:data:`s_half_inv` - * :c:data:`s_inv` - * :c:data:`s_mo_coef` - - -.. c:var:: ao_overlap_abs - - - File : :file:`ao_one_e_ints/ao_overlap.irp.f` - - .. code:: fortran - - double precision, allocatable :: ao_overlap_abs (ao_num,ao_num) - - - Overlap between absolute values of atomic basis functions: - - :math:`\int |\chi_i(r)| |\chi_j(r)| dr` - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_coef_normalized_ordered_transp` - * :c:data:`ao_expo_ordered_transp` - * :c:data:`ao_nucl` - * :c:data:`ao_num` - * :c:data:`ao_power` - * :c:data:`ao_prim_num` - * :c:data:`nucl_coord` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_two_e_integral_alpha` - * :c:data:`mo_two_e_int_erf_jj_from_ao` - * :c:data:`mo_two_e_integral_jj_from_ao` - * :c:data:`mo_two_e_integrals_vv_from_ao` - - -.. c:var:: ao_overlap_x - - - File : :file:`ao_one_e_ints/ao_overlap.irp.f` - - .. code:: fortran - - double precision, allocatable :: ao_overlap (ao_num,ao_num) - double precision, allocatable :: ao_overlap_x (ao_num,ao_num) - double precision, allocatable :: ao_overlap_y (ao_num,ao_num) - double precision, allocatable :: ao_overlap_z (ao_num,ao_num) - - - Overlap between atomic basis functions: - - :math:`\int \chi_i(r) \chi_j(r) dr` - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_coef_normalized_ordered_transp` - * :c:data:`ao_expo_ordered_transp` - * :c:data:`ao_nucl` - * :c:data:`ao_num` - * :c:data:`ao_power` - * :c:data:`ao_prim_num` - * :c:data:`nucl_coord` - * :c:data:`read_ao_integrals_overlap` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_cart_to_sphe_overlap` - * :c:data:`ao_ortho_canonical_coef` - * :c:data:`ao_ortho_canonical_overlap` - * :c:data:`ao_ortho_lowdin_coef` - * :c:data:`ao_ortho_lowdin_overlap` - * :c:data:`fps_spf_matrix_ao` - * :c:data:`mo_overlap` - * :c:data:`s_half` - * :c:data:`s_half_inv` - * :c:data:`s_inv` - * :c:data:`s_mo_coef` - - -.. c:var:: ao_overlap_y - - - File : :file:`ao_one_e_ints/ao_overlap.irp.f` - - .. code:: fortran - - double precision, allocatable :: ao_overlap (ao_num,ao_num) - double precision, allocatable :: ao_overlap_x (ao_num,ao_num) - double precision, allocatable :: ao_overlap_y (ao_num,ao_num) - double precision, allocatable :: ao_overlap_z (ao_num,ao_num) - - - Overlap between atomic basis functions: - - :math:`\int \chi_i(r) \chi_j(r) dr` - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_coef_normalized_ordered_transp` - * :c:data:`ao_expo_ordered_transp` - * :c:data:`ao_nucl` - * :c:data:`ao_num` - * :c:data:`ao_power` - * :c:data:`ao_prim_num` - * :c:data:`nucl_coord` - * :c:data:`read_ao_integrals_overlap` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_cart_to_sphe_overlap` - * :c:data:`ao_ortho_canonical_coef` - * :c:data:`ao_ortho_canonical_overlap` - * :c:data:`ao_ortho_lowdin_coef` - * :c:data:`ao_ortho_lowdin_overlap` - * :c:data:`fps_spf_matrix_ao` - * :c:data:`mo_overlap` - * :c:data:`s_half` - * :c:data:`s_half_inv` - * :c:data:`s_inv` - * :c:data:`s_mo_coef` - - -.. c:var:: ao_overlap_z - - - File : :file:`ao_one_e_ints/ao_overlap.irp.f` - - .. code:: fortran - - double precision, allocatable :: ao_overlap (ao_num,ao_num) - double precision, allocatable :: ao_overlap_x (ao_num,ao_num) - double precision, allocatable :: ao_overlap_y (ao_num,ao_num) - double precision, allocatable :: ao_overlap_z (ao_num,ao_num) - - - Overlap between atomic basis functions: - - :math:`\int \chi_i(r) \chi_j(r) dr` - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_coef_normalized_ordered_transp` - * :c:data:`ao_expo_ordered_transp` - * :c:data:`ao_nucl` - * :c:data:`ao_num` - * :c:data:`ao_power` - * :c:data:`ao_prim_num` - * :c:data:`nucl_coord` - * :c:data:`read_ao_integrals_overlap` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_cart_to_sphe_overlap` - * :c:data:`ao_ortho_canonical_coef` - * :c:data:`ao_ortho_canonical_overlap` - * :c:data:`ao_ortho_lowdin_coef` - * :c:data:`ao_ortho_lowdin_overlap` - * :c:data:`fps_spf_matrix_ao` - * :c:data:`mo_overlap` - * :c:data:`s_half` - * :c:data:`s_half_inv` - * :c:data:`s_inv` - * :c:data:`s_mo_coef` - - -.. c:var:: ao_pseudo_integrals - - - File : :file:`ao_one_e_ints/pot_ao_pseudo_ints.irp.f` - - .. code:: fortran - - double precision, allocatable :: ao_pseudo_integrals (ao_num,ao_num) - - - Pseudo-potential integrals in the |AO| basis set. - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`ao_pseudo_integrals_local` - * :c:data:`ao_pseudo_integrals_non_local` - * :c:data:`do_pseudo` - * :c:data:`pseudo_klocmax` - * :c:data:`pseudo_kmax` - * :c:data:`read_ao_integrals_pseudo` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_one_e_integrals` - * :c:data:`mo_pseudo_integrals` - - -.. c:var:: ao_pseudo_integrals_local - - - File : :file:`ao_one_e_ints/pot_ao_pseudo_ints.irp.f` - - .. code:: fortran - - double precision, allocatable :: ao_pseudo_integrals_local (ao_num,ao_num) - - - Local pseudo-potential - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_coef_normalized_ordered_transp` - * :c:data:`ao_expo_ordered_transp` - * :c:data:`ao_nucl` - * :c:data:`ao_num` - * :c:data:`ao_power` - * :c:data:`ao_prim_num` - * :c:data:`nucl_charge` - * :c:data:`nucl_coord` - * :c:data:`nucl_num` - * :c:data:`pseudo_klocmax` - * :c:data:`pseudo_v_k_transp` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_pseudo_integrals` - - -.. c:var:: ao_pseudo_integrals_non_local - - - File : :file:`ao_one_e_ints/pot_ao_pseudo_ints.irp.f` - - .. code:: fortran - - double precision, allocatable :: ao_pseudo_integrals_non_local (ao_num,ao_num) - - - Non-local pseudo-potential - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_coef_normalized_ordered_transp` - * :c:data:`ao_expo_ordered_transp` - * :c:data:`ao_nucl` - * :c:data:`ao_num` - * :c:data:`ao_power` - * :c:data:`ao_prim_num` - * :c:data:`nucl_charge` - * :c:data:`nucl_coord` - * :c:data:`nucl_num` - * :c:data:`pseudo_kmax` - * :c:data:`pseudo_lmax` - * :c:data:`pseudo_v_kl_transp` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_pseudo_integrals` - - -.. c:var:: ao_spread_x - - - File : :file:`ao_one_e_ints/spread_dipole_ao.irp.f` - - .. code:: fortran - - double precision, allocatable :: ao_spread_x (ao_num,ao_num) - double precision, allocatable :: ao_spread_y (ao_num,ao_num) - double precision, allocatable :: ao_spread_z (ao_num,ao_num) - - - * array of the integrals of AO_i * x^2 AO_j - - * array of the integrals of AO_i * y^2 AO_j - - * array of the integrals of AO_i * z^2 AO_j - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_coef_normalized_ordered_transp` - * :c:data:`ao_expo_ordered_transp` - * :c:data:`ao_nucl` - * :c:data:`ao_num` - * :c:data:`ao_power` - * :c:data:`ao_prim_num` - * :c:data:`nucl_coord` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`mo_spread_x` - - -.. c:var:: ao_spread_y - - - File : :file:`ao_one_e_ints/spread_dipole_ao.irp.f` - - .. code:: fortran - - double precision, allocatable :: ao_spread_x (ao_num,ao_num) - double precision, allocatable :: ao_spread_y (ao_num,ao_num) - double precision, allocatable :: ao_spread_z (ao_num,ao_num) - - - * array of the integrals of AO_i * x^2 AO_j - - * array of the integrals of AO_i * y^2 AO_j - - * array of the integrals of AO_i * z^2 AO_j - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_coef_normalized_ordered_transp` - * :c:data:`ao_expo_ordered_transp` - * :c:data:`ao_nucl` - * :c:data:`ao_num` - * :c:data:`ao_power` - * :c:data:`ao_prim_num` - * :c:data:`nucl_coord` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`mo_spread_x` - - -.. c:var:: ao_spread_z - - - File : :file:`ao_one_e_ints/spread_dipole_ao.irp.f` - - .. code:: fortran - - double precision, allocatable :: ao_spread_x (ao_num,ao_num) - double precision, allocatable :: ao_spread_y (ao_num,ao_num) - double precision, allocatable :: ao_spread_z (ao_num,ao_num) - - - * array of the integrals of AO_i * x^2 AO_j - - * array of the integrals of AO_i * y^2 AO_j - - * array of the integrals of AO_i * z^2 AO_j - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_coef_normalized_ordered_transp` - * :c:data:`ao_expo_ordered_transp` - * :c:data:`ao_nucl` - * :c:data:`ao_num` - * :c:data:`ao_power` - * :c:data:`ao_prim_num` - * :c:data:`nucl_coord` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`mo_spread_x` - - -.. c:function:: give_polynomial_mult_center_one_e_erf: - - - File : :file:`ao_one_e_ints/pot_ao_erf_ints.irp.f` - - .. code:: fortran - - subroutine give_polynomial_mult_center_one_e_erf(A_center,B_center,alpha,beta,& - power_A,power_B,C_center,n_pt_in,d,n_pt_out,mu_in) - - - Returns the explicit polynomial in terms of the $t$ variable of the following polynomial: - - $I_{x1}(a_x, d_x,p,q) \times I_{x1}(a_y, d_y,p,q) \times I_{x1}(a_z, d_z,p,q)$. - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`i_x1_pol_mult_one_e` - * :c:func:`multiply_poly` - - -.. c:function:: give_polynomial_mult_center_one_e_erf_opt: - - - File : :file:`ao_one_e_ints/pot_ao_erf_ints.irp.f` - - .. code:: fortran - - subroutine give_polynomial_mult_center_one_e_erf_opt(A_center,B_center,alpha,beta,& - power_A,power_B,C_center,n_pt_in,d,n_pt_out,mu_in,p,p_inv,p_inv_2,p_new,P_center) - - - Returns the explicit polynomial in terms of the $t$ variable of the following polynomial: - - $I_{x1}(a_x, d_x,p,q) \times I_{x1}(a_y, d_y,p,q) \times I_{x1}(a_z, d_z,p,q)$. - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`nai_pol_mult_erf` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`i_x1_pol_mult_one_e` - * :c:func:`multiply_poly` - - -.. c:function:: i_x1_pol_mult_one_e: - - - File : :file:`ao_one_e_ints/pot_ao_ints.irp.f` - - .. code:: fortran - - recursive subroutine I_x1_pol_mult_one_e(a,c,R1x,R1xp,R2x,d,nd,n_pt_in) - - - Recursive routine involved in the electron-nucleus potential - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`give_polynomial_mult_center_one_e` - * :c:func:`give_polynomial_mult_center_one_e_erf` - * :c:func:`give_polynomial_mult_center_one_e_erf_opt` - * :c:func:`i_x1_pol_mult_one_e` - * :c:func:`i_x2_pol_mult_one_e` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`i_x1_pol_mult_one_e` - * :c:func:`i_x2_pol_mult_one_e` - * :c:func:`multiply_poly` - - -.. c:function:: i_x2_pol_mult_one_e: - - - File : :file:`ao_one_e_ints/pot_ao_ints.irp.f` - - .. code:: fortran - - recursive subroutine I_x2_pol_mult_one_e(c,R1x,R1xp,R2x,d,nd,dim) - - - Recursive routine involved in the electron-nucleus potential - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`i_x1_pol_mult_one_e` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`i_x1_pol_mult_one_e` - * :c:func:`multiply_poly` - - -.. c:var:: pseudo_dz_k_transp - - - File : :file:`ao_one_e_ints/pot_ao_pseudo_ints.irp.f` - - .. code:: fortran - - double precision, allocatable :: pseudo_v_k_transp (pseudo_klocmax,nucl_num) - integer, allocatable :: pseudo_n_k_transp (pseudo_klocmax,nucl_num) - double precision, allocatable :: pseudo_dz_k_transp (pseudo_klocmax,nucl_num) - - - Transposed arrays for pseudopotentials - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`nucl_num` - * :c:data:`pseudo_dz_k` - * :c:data:`pseudo_klocmax` - * :c:data:`pseudo_n_k` - * :c:data:`pseudo_v_k` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_pseudo_integrals_local` - - -.. c:var:: pseudo_dz_kl_transp - - - File : :file:`ao_one_e_ints/pot_ao_pseudo_ints.irp.f` - - .. code:: fortran - - double precision, allocatable :: pseudo_v_kl_transp (pseudo_kmax,0:pseudo_lmax,nucl_num) - integer, allocatable :: pseudo_n_kl_transp (pseudo_kmax,0:pseudo_lmax,nucl_num) - double precision, allocatable :: pseudo_dz_kl_transp (pseudo_kmax,0:pseudo_lmax,nucl_num) - - - Transposed arrays for pseudopotentials - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`nucl_num` - * :c:data:`pseudo_dz_kl` - * :c:data:`pseudo_kmax` - * :c:data:`pseudo_lmax` - * :c:data:`pseudo_n_kl` - * :c:data:`pseudo_v_kl` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_pseudo_integrals_non_local` - - -.. c:var:: pseudo_n_k_transp - - - File : :file:`ao_one_e_ints/pot_ao_pseudo_ints.irp.f` - - .. code:: fortran - - double precision, allocatable :: pseudo_v_k_transp (pseudo_klocmax,nucl_num) - integer, allocatable :: pseudo_n_k_transp (pseudo_klocmax,nucl_num) - double precision, allocatable :: pseudo_dz_k_transp (pseudo_klocmax,nucl_num) - - - Transposed arrays for pseudopotentials - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`nucl_num` - * :c:data:`pseudo_dz_k` - * :c:data:`pseudo_klocmax` - * :c:data:`pseudo_n_k` - * :c:data:`pseudo_v_k` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_pseudo_integrals_local` - - -.. c:var:: pseudo_n_kl_transp - - - File : :file:`ao_one_e_ints/pot_ao_pseudo_ints.irp.f` - - .. code:: fortran - - double precision, allocatable :: pseudo_v_kl_transp (pseudo_kmax,0:pseudo_lmax,nucl_num) - integer, allocatable :: pseudo_n_kl_transp (pseudo_kmax,0:pseudo_lmax,nucl_num) - double precision, allocatable :: pseudo_dz_kl_transp (pseudo_kmax,0:pseudo_lmax,nucl_num) - - - Transposed arrays for pseudopotentials - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`nucl_num` - * :c:data:`pseudo_dz_kl` - * :c:data:`pseudo_kmax` - * :c:data:`pseudo_lmax` - * :c:data:`pseudo_n_kl` - * :c:data:`pseudo_v_kl` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_pseudo_integrals_non_local` - - -.. c:var:: pseudo_v_k_transp - - - File : :file:`ao_one_e_ints/pot_ao_pseudo_ints.irp.f` - - .. code:: fortran - - double precision, allocatable :: pseudo_v_k_transp (pseudo_klocmax,nucl_num) - integer, allocatable :: pseudo_n_k_transp (pseudo_klocmax,nucl_num) - double precision, allocatable :: pseudo_dz_k_transp (pseudo_klocmax,nucl_num) - - - Transposed arrays for pseudopotentials - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`nucl_num` - * :c:data:`pseudo_dz_k` - * :c:data:`pseudo_klocmax` - * :c:data:`pseudo_n_k` - * :c:data:`pseudo_v_k` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_pseudo_integrals_local` - - -.. c:var:: pseudo_v_kl_transp - - - File : :file:`ao_one_e_ints/pot_ao_pseudo_ints.irp.f` - - .. code:: fortran - - double precision, allocatable :: pseudo_v_kl_transp (pseudo_kmax,0:pseudo_lmax,nucl_num) - integer, allocatable :: pseudo_n_kl_transp (pseudo_kmax,0:pseudo_lmax,nucl_num) - double precision, allocatable :: pseudo_dz_kl_transp (pseudo_kmax,0:pseudo_lmax,nucl_num) - - - Transposed arrays for pseudopotentials - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`nucl_num` - * :c:data:`pseudo_dz_kl` - * :c:data:`pseudo_kmax` - * :c:data:`pseudo_lmax` - * :c:data:`pseudo_n_kl` - * :c:data:`pseudo_v_kl` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_pseudo_integrals_non_local` - - -.. c:var:: s_half - - - File : :file:`ao_one_e_ints/ao_overlap.irp.f` - - .. code:: fortran - - double precision, allocatable :: s_half (ao_num,ao_num) - - - :math:`S^{1/2}` - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`ao_overlap` - - - -.. c:var:: s_half_inv - - - File : :file:`ao_one_e_ints/ao_overlap.irp.f` - - .. code:: fortran - - double precision, allocatable :: s_half_inv (AO_num,AO_num) - - - :math:`X = S^{-1/2}` obtained by SVD - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`ao_overlap` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`eigenvalues_fock_matrix_ao` - - -.. c:var:: s_inv - - - File : :file:`ao_one_e_ints/ao_overlap.irp.f` - - .. code:: fortran - - double precision, allocatable :: s_inv (ao_num,ao_num) - - - Inverse of the overlap matrix - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`ao_overlap` - - - - -Subroutines / functions ------------------------ - -.. c:function:: give_all_erf_kl_ao: - - - File : :file:`ao_one_e_ints/pot_ao_erf_ints.irp.f` - - .. code:: fortran - - subroutine give_all_erf_kl_ao(integrals_ao,mu_in,C_center) - - - Subroutine that returns all integrals over $r$ of type - $\frac{ \erf(\mu * |r-R_C|) }{ |r-R_C| }$ - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - - -.. c:function:: give_polynomial_mult_center_one_e: - - - File : :file:`ao_one_e_ints/pot_ao_ints.irp.f` - - .. code:: fortran - - subroutine give_polynomial_mult_center_one_e(A_center,B_center,alpha,beta,power_A,power_B,C_center,n_pt_in,d,n_pt_out) - - - Returns the explicit polynomial in terms of the "t" variable of the following - - $I_{x1}(a_x, d_x,p,q) \times I_{x1}(a_y, d_y,p,q) \times I_{x1}(a_z, d_z,p,q)$. - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`nai_pol_mult` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`i_x1_pol_mult_one_e` - * :c:func:`multiply_poly` - - -.. c:function:: int_gaus_pol: - - - File : :file:`ao_one_e_ints/pot_ao_ints.irp.f` - - .. code:: fortran - - double precision function int_gaus_pol(alpha,n) - - - Computes the integral: - - $\int_{-\infty}^{\infty} x^n \exp(-\alpha x^2) dx$. - - -.. c:function:: nai_pol_mult: - - - File : :file:`ao_one_e_ints/pot_ao_ints.irp.f` - - .. code:: fortran - - double precision function NAI_pol_mult(A_center,B_center,power_A,power_B,alpha,beta,C_center,n_pt_in) - - - Computes the electron-nucleus attraction with two primitves. - - :math:`\langle g_i | \frac{1}{|r-R_c|} | g_j \rangle` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`give_polynomial_mult_center_one_e` - - -.. c:function:: nai_pol_mult_erf: - - - File : :file:`ao_one_e_ints/pot_ao_erf_ints.irp.f` - - .. code:: fortran - - double precision function NAI_pol_mult_erf(A_center,B_center,power_A,power_B,alpha,beta,C_center,n_pt_in,mu_in) - - - Computes the following integral : - $\int dr (x-A_x)^a (x-B_x)^b \exp(-\alpha (x-A_x)^2 - \beta (x-B_x)^2 ) - \frac{\erf(\mu |r-R_C|)}{|r-R_c|}$. - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`give_polynomial_mult_center_one_e_erf_opt` - - -.. c:function:: nai_pol_mult_erf_ao: - - - File : :file:`ao_one_e_ints/pot_ao_erf_ints.irp.f` - - .. code:: fortran - - double precision function NAI_pol_mult_erf_ao(i_ao,j_ao,mu_in,C_center) - - - Computes the following integral : - $\int_{-\infty}^{infty} dr \chi_i(r) \chi_j(r) \frac{\erf(\mu |r-R_C|)}{|r-R_C|}$. - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`n_pt_max_integrals` - * :c:data:`ao_coef_normalized_ordered_transp` - * :c:data:`ao_power` - * :c:data:`ao_expo_ordered_transp` - * :c:data:`ao_prim_num` - * :c:data:`ao_nucl` - * :c:data:`nucl_coord` - - -.. c:function:: overlap_bourrin_deriv_x: - - - File : :file:`ao_one_e_ints/spread_dipole_ao.irp.f` - - .. code:: fortran - - subroutine overlap_bourrin_deriv_x(i_component,A_center,B_center,alpha,beta,power_A,power_B,dx,lower_exp_val,overlap_x,nx) - - - - Called by: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_deriv_1_x` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`overlap_bourrin_x` - - -.. c:function:: overlap_bourrin_dipole: - - - File : :file:`ao_one_e_ints/spread_dipole_ao.irp.f` - - .. code:: fortran - - subroutine overlap_bourrin_dipole(A_center,B_center,alpha,beta,power_A,power_B,overlap_x,lower_exp_val,dx,nx) - - - - Called by: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_dipole_x` - - -.. c:function:: overlap_bourrin_spread: - - - File : :file:`ao_one_e_ints/spread_dipole_ao.irp.f` - - .. code:: fortran - - subroutine overlap_bourrin_spread(A_center,B_center,alpha,beta,power_A,power_B,overlap_x,lower_exp_val,dx,nx) - - - Computes the following integral : - int [-infty ; +infty] of [(x-A_center)^(power_A) * (x-B_center)^power_B * exp(-alpha(x-A_center)^2) * exp(-beta(x-B_center)^2) * x ] - needed for the dipole and those things - - Called by: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_spread_x` - - -.. c:function:: overlap_bourrin_x: - - - File : :file:`ao_one_e_ints/spread_dipole_ao.irp.f` - - .. code:: fortran - - subroutine overlap_bourrin_x(A_center,B_center,alpha,beta,power_A,power_B,overlap_x,lower_exp_val,dx,nx) - - - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`overlap_bourrin_deriv_x` - - -.. c:function:: v_e_n: - - - File : :file:`ao_one_e_ints/pot_ao_ints.irp.f` - - .. code:: fortran - - double precision function V_e_n(a_x,a_y,a_z,b_x,b_y,b_z,alpha,beta) - - - Primitve nuclear attraction between the two primitves centered on the same atom. - - $p_1 = x^{a_x} y^{a_y} z^{a_z} \exp(-\alpha r^2)$ - - $p_2 = x^{b_x} y^{b_y} z^{b_z} \exp(-\beta r^2)$ - - -.. c:function:: v_phi: - - - File : :file:`ao_one_e_ints/pot_ao_ints.irp.f` - - .. code:: fortran - - double precision function V_phi(n,m) - - - Computes the angular $\phi$ part of the nuclear attraction integral: - - $\int_{0}^{2 \pi} \cos(\phi)^n \sin(\phi)^m d\phi$. - - -.. c:function:: v_r: - - - File : :file:`ao_one_e_ints/pot_ao_ints.irp.f` - - .. code:: fortran - - double precision function V_r(n,alpha) - - - Computes the radial part of the nuclear attraction integral: - - $\int_{0}^{\infty} r^n \exp(-\alpha r^2) dr$ - - - -.. c:function:: v_theta: - - - File : :file:`ao_one_e_ints/pot_ao_ints.irp.f` - - .. code:: fortran - - double precision function V_theta(n,m) - - - Computes the angular $\theta$ part of the nuclear attraction integral: - - $\int_{0}^{\pi} \cos(\theta)^n \sin(\theta)^m d\theta$ - - -.. c:function:: wallis: - - - File : :file:`ao_one_e_ints/pot_ao_ints.irp.f` - - .. code:: fortran - - double precision function Wallis(n) - - - Wallis integral: - - $\int_{0}^{\pi} \cos(\theta)^n d\theta$. - diff --git a/docs/source/modules/ao_two_e_erf_ints.rst b/docs/source/modules/ao_two_e_erf_ints.rst deleted file mode 100644 index 4e35de17..00000000 --- a/docs/source/modules/ao_two_e_erf_ints.rst +++ /dev/null @@ -1,901 +0,0 @@ -.. _module_ao_two_e_erf_ints: - -.. program:: ao_two_e_erf_ints - -.. default-role:: option - -====================== -ao_two_e_erf_ints -====================== - -Here, all two-electron integrals (:math:`erf(\mu r_{12})/r_{12}`) are computed. -As they have 4 indices and many are zero, they are stored in a map, as defined -in :file:`utils/map_module.f90`. - -The main parameter of this module is :option:`ao_two_e_erf_ints mu_erf` which is the range-separation parameter. - -To fetch an |AO| integral, use the -`get_ao_two_e_integral_erf(i,j,k,l,ao_integrals_erf_map)` function. - - -The conventions are: -* For |AO| integrals : (ij|kl) = (11|22) = = <12|12> - - - - - - -EZFIO parameters ----------------- - -.. option:: io_ao_two_e_integrals_erf - - Read/Write |AO| integrals with the long range interaction from/to disk [ Write | Read | None ] - - Default: None - -.. option:: mu_erf - - cutting of the interaction in the range separated model - - Default: 0.5 - - -Providers ---------- - -.. c:var:: ao_integrals_erf_cache - - - File : :file:`ao_two_e_erf_ints/map_integrals_erf.irp.f` - - .. code:: fortran - - double precision, allocatable :: ao_integrals_erf_cache (0:64*64*64*64) - - - Cache of |AO| integrals for fast access - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_integrals_erf_cache_min` - * :c:data:`ao_integrals_erf_map` - * :c:data:`ao_two_e_integrals_erf_in_map` - - - -.. c:var:: ao_integrals_erf_cache_max - - - File : :file:`ao_two_e_erf_ints/map_integrals_erf.irp.f` - - .. code:: fortran - - integer :: ao_integrals_erf_cache_min - integer :: ao_integrals_erf_cache_max - - - Min and max values of the AOs for which the integrals are in the cache - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_integrals_erf_cache` - - -.. c:var:: ao_integrals_erf_cache_min - - - File : :file:`ao_two_e_erf_ints/map_integrals_erf.irp.f` - - .. code:: fortran - - integer :: ao_integrals_erf_cache_min - integer :: ao_integrals_erf_cache_max - - - Min and max values of the AOs for which the integrals are in the cache - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_integrals_erf_cache` - - -.. c:var:: ao_integrals_erf_map - - - File : :file:`ao_two_e_erf_ints/map_integrals_erf.irp.f` - - .. code:: fortran - - type(map_type) :: ao_integrals_erf_map - - - |AO| integrals - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_integrals_erf_cache` - * :c:data:`ao_two_e_integrals_erf_in_map` - * :c:data:`mo_two_e_int_erf_jj_from_ao` - - -.. c:var:: ao_two_e_integral_erf_schwartz - - - File : :file:`ao_two_e_erf_ints/providers_ao_erf.irp.f` - - .. code:: fortran - - double precision, allocatable :: ao_two_e_integral_erf_schwartz (ao_num,ao_num) - - - Needed to compute Schwartz inequalities - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_coef_normalized_ordered_transp` - * :c:data:`ao_expo_ordered_transp` - * :c:data:`ao_nucl` - * :c:data:`ao_num` - * :c:data:`ao_power` - * :c:data:`ao_prim_num` - * :c:data:`n_pt_max_integrals` - * :c:data:`nucl_coord` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`mo_two_e_int_erf_jj_from_ao` - - -.. c:var:: ao_two_e_integrals_erf_in_map - - - File : :file:`ao_two_e_erf_ints/providers_ao_erf.irp.f` - - .. code:: fortran - - logical :: ao_two_e_integrals_erf_in_map - - - Map of Atomic integrals - i(r1) j(r2) 1/r12 k(r1) l(r2) - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_coef_normalized_ordered_transp` - * :c:data:`ao_expo_ordered_transp` - * :c:data:`ao_integrals_erf_map` - * :c:data:`ao_nucl` - * :c:data:`ao_num` - * :c:data:`ao_power` - * :c:data:`ao_prim_num` - * :c:data:`ezfio_filename` - * :c:data:`io_ao_two_e_integrals_erf` - * :c:data:`n_pt_max_integrals` - * :c:data:`nproc` - * :c:data:`nucl_coord` - * :c:data:`read_ao_two_e_integrals_erf` - * :c:data:`zmq_context` - * :c:data:`zmq_socket_pull_tcp_address` - * :c:data:`zmq_state` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_integrals_erf_cache` - * :c:data:`mo_two_e_int_erf_jj_from_ao` - * :c:data:`mo_two_e_integrals_erf_in_map` - - -.. c:function:: general_primitive_integral_erf: - - - File : :file:`ao_two_e_erf_ints/two_e_integrals_erf.irp.f` - - .. code:: fortran - - double precision function general_primitive_integral_erf(dim, & - P_new,P_center,fact_p,p,p_inv,iorder_p, & - Q_new,Q_center,fact_q,q,q_inv,iorder_q) - - - Computes the integral where p,q,r,s are Gaussian primitives - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`mu_erf` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`add_poly_multiply` - * :c:func:`give_polynom_mult_center_x` - * :c:func:`multiply_poly` - - - -Subroutines / functions ------------------------ - -.. c:function:: ao_two_e_integral_erf: - - - File : :file:`ao_two_e_erf_ints/two_e_integrals_erf.irp.f` - - .. code:: fortran - - double precision function ao_two_e_integral_erf(i,j,k,l) - - - integral of the AO basis or (ij|kl) - i(r1) j(r1) 1/r12 k(r2) l(r2) - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`n_pt_max_integrals` - * :c:data:`ao_coef_normalized_ordered_transp` - * :c:data:`ao_power` - * :c:data:`ao_expo_ordered_transp` - * :c:data:`ao_prim_num` - * :c:data:`ao_nucl` - * :c:data:`nucl_coord` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`give_explicit_poly_and_gaussian` - - -.. c:function:: ao_two_e_integral_schwartz_accel_erf: - - - File : :file:`ao_two_e_erf_ints/two_e_integrals_erf.irp.f` - - .. code:: fortran - - double precision function ao_two_e_integral_schwartz_accel_erf(i,j,k,l) - - - integral of the AO basis or (ij|kl) - i(r1) j(r1) 1/r12 k(r2) l(r2) - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`n_pt_max_integrals` - * :c:data:`ao_integrals_threshold` - * :c:data:`ao_coef_normalized_ordered_transp` - * :c:data:`ao_power` - * :c:data:`ao_expo_ordered_transp` - * :c:data:`ao_prim_num` - * :c:data:`ao_nucl` - * :c:data:`nucl_coord` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`give_explicit_poly_and_gaussian` - - -.. c:function:: ao_two_e_integrals_erf_in_map_collector: - - - File : :file:`ao_two_e_erf_ints/integrals_erf_in_map_slave.irp.f` - - .. code:: fortran - - subroutine ao_two_e_integrals_erf_in_map_collector(zmq_socket_pull) - - - Collects results from the AO integral calculation - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_integrals_erf_map` - * :c:data:`ao_num` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_two_e_integrals_erf_in_map` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`end_zmq_to_qp_run_socket` - * :c:func:`insert_into_ao_integrals_erf_map` - - -.. c:function:: ao_two_e_integrals_erf_in_map_slave: - - - File : :file:`ao_two_e_erf_ints/integrals_erf_in_map_slave.irp.f` - - .. code:: fortran - - subroutine ao_two_e_integrals_erf_in_map_slave(thread,iproc) - - - Computes a buffer of integrals - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`ao_two_e_integrals_erf_in_map_slave_inproc` - * :c:func:`ao_two_e_integrals_erf_in_map_slave_tcp` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`compute_ao_integrals_erf_jl` - * :c:func:`end_zmq_push_socket` - * :c:func:`end_zmq_to_qp_run_socket` - * :c:func:`push_integrals` - - -.. c:function:: ao_two_e_integrals_erf_in_map_slave_inproc: - - - File : :file:`ao_two_e_erf_ints/integrals_erf_in_map_slave.irp.f` - - .. code:: fortran - - subroutine ao_two_e_integrals_erf_in_map_slave_inproc(i) - - - Computes a buffer of integrals. i is the ID of the current thread. - - Called by: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_two_e_integrals_erf_in_map` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`ao_two_e_integrals_erf_in_map_slave` - - -.. c:function:: ao_two_e_integrals_erf_in_map_slave_tcp: - - - File : :file:`ao_two_e_erf_ints/integrals_erf_in_map_slave.irp.f` - - .. code:: fortran - - subroutine ao_two_e_integrals_erf_in_map_slave_tcp(i) - - - Computes a buffer of integrals. i is the ID of the current thread. - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`ao_two_e_integrals_erf_in_map_slave` - - -.. c:function:: clear_ao_erf_map: - - - File : :file:`ao_two_e_erf_ints/map_integrals_erf.irp.f` - - .. code:: fortran - - subroutine clear_ao_erf_map - - - Frees the memory of the |AO| map - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_integrals_erf_map` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`map_deinit` - - -.. c:function:: compute_ao_integrals_erf_jl: - - - File : :file:`ao_two_e_erf_ints/two_e_integrals_erf.irp.f` - - .. code:: fortran - - subroutine compute_ao_integrals_erf_jl(j,l,n_integrals,buffer_i,buffer_value) - - - Parallel client for AO integrals - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_overlap_abs` - * :c:data:`ao_num` - * :c:data:`ao_integrals_threshold` - * :c:data:`ao_two_e_integral_erf_schwartz` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`ao_two_e_integrals_erf_in_map_slave` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`two_e_integrals_index` - - -.. c:function:: compute_ao_two_e_integrals_erf: - - - File : :file:`ao_two_e_erf_ints/two_e_integrals_erf.irp.f` - - .. code:: fortran - - subroutine compute_ao_two_e_integrals_erf(j,k,l,sze,buffer_value) - - - Compute AO 1/r12 integrals for all i and fixed j,k,l - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_overlap_abs` - * :c:data:`ao_num` - * :c:data:`ao_two_e_integral_erf_schwartz` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:data:`mo_two_e_int_erf_jj_from_ao` - - -.. c:function:: dump_ao_integrals_erf: - - - File : :file:`ao_two_e_erf_ints/map_integrals_erf.irp.f` - - .. code:: fortran - - subroutine dump_ao_integrals_erf(filename) - - - Save to disk the |AO| erf integrals - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_integrals_erf_map` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`ezfio_set_work_empty` - - -.. c:function:: eri_erf: - - - File : :file:`ao_two_e_erf_ints/two_e_integrals_erf.irp.f` - - .. code:: fortran - - double precision function ERI_erf(alpha,beta,delta,gama,a_x,b_x,c_x,d_x,a_y,b_y,c_y,d_y,a_z,b_z,c_z,d_z) - - - ATOMIC PRIMTIVE two-electron integral between the 4 primitives :: - primitive_1 = x1**(a_x) y1**(a_y) z1**(a_z) exp(-alpha * r1**2) - primitive_2 = x1**(b_x) y1**(b_y) z1**(b_z) exp(- beta * r1**2) - primitive_3 = x2**(c_x) y2**(c_y) z2**(c_z) exp(-delta * r2**2) - primitive_4 = x2**(d_x) y2**(d_y) z2**(d_z) exp(- gama * r2**2) - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`mu_erf` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`integrale_new_erf` - - -.. c:function:: get_ao_erf_map_size: - - - File : :file:`ao_two_e_erf_ints/map_integrals_erf.irp.f` - - .. code:: fortran - - function get_ao_erf_map_size() - - - Returns the number of elements in the |AO| map - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_integrals_erf_map` - - -.. c:function:: get_ao_two_e_integral_erf: - - - File : :file:`ao_two_e_erf_ints/map_integrals_erf.irp.f` - - .. code:: fortran - - double precision function get_ao_two_e_integral_erf(i,j,k,l,map) result(result) - - - Gets one |AO| two-electron integral from the |AO| map - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_integrals_erf_cache_min` - * :c:data:`ao_overlap_abs` - * :c:data:`ao_integrals_threshold` - * :c:data:`ao_integrals_erf_cache` - * :c:data:`ao_two_e_integral_erf_schwartz` - * :c:data:`ao_two_e_integrals_erf_in_map` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`map_get` - * :c:func:`two_e_integrals_index` - - -.. c:function:: get_ao_two_e_integrals_erf: - - - File : :file:`ao_two_e_erf_ints/map_integrals_erf.irp.f` - - .. code:: fortran - - subroutine get_ao_two_e_integrals_erf(j,k,l,sze,out_val) - - - Gets multiple |AO| two-electron integral from the |AO| map . - All i are retrieved for j,k,l fixed. - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_integrals_erf_map` - * :c:data:`ao_overlap_abs` - * :c:data:`ao_integrals_threshold` - * :c:data:`ao_two_e_integrals_erf_in_map` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`add_integrals_to_map_erf` - - -.. c:function:: get_ao_two_e_integrals_erf_non_zero: - - - File : :file:`ao_two_e_erf_ints/map_integrals_erf.irp.f` - - .. code:: fortran - - subroutine get_ao_two_e_integrals_erf_non_zero(j,k,l,sze,out_val,out_val_index,non_zero_int) - - - Gets multiple |AO| two-electron integrals from the |AO| map . - All non-zero i are retrieved for j,k,l fixed. - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_integrals_erf_map` - * :c:data:`ao_overlap_abs` - * :c:data:`ao_integrals_threshold` - * :c:data:`ao_two_e_integral_erf_schwartz` - * :c:data:`ao_two_e_integrals_erf_in_map` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:data:`mo_two_e_int_erf_jj_from_ao` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`map_get` - * :c:func:`two_e_integrals_index` - - -.. c:function:: insert_into_ao_integrals_erf_map: - - - File : :file:`ao_two_e_erf_ints/map_integrals_erf.irp.f` - - .. code:: fortran - - subroutine insert_into_ao_integrals_erf_map(n_integrals,buffer_i, buffer_values) - - - Create new entry into |AO| map - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_integrals_erf_map` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`ao_two_e_integrals_erf_in_map_collector` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`map_append` - - -.. c:function:: integrale_new_erf: - - - File : :file:`ao_two_e_erf_ints/two_e_integrals_erf.irp.f` - - .. code:: fortran - - subroutine integrale_new_erf(I_f,a_x,b_x,c_x,d_x,a_y,b_y,c_y,d_y,a_z,b_z,c_z,d_z,p,q,n_pt) - - - calculate the integral of the polynom :: - I_x1(a_x+b_x, c_x+d_x,p,q) * I_x1(a_y+b_y, c_y+d_y,p,q) * I_x1(a_z+b_z, c_z+d_z,p,q) - between ( 0 ; 1) - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`mu_erf` - * :c:data:`n_pt_max_integrals` - * :c:data:`gauleg_t2` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`eri_erf` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`i_x1_new` - - -.. c:function:: load_ao_integrals_erf: - - - File : :file:`ao_two_e_erf_ints/map_integrals_erf.irp.f` - - .. code:: fortran - - integer function load_ao_integrals_erf(filename) - - - Read from disk the |AO| erf integrals - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_integrals_erf_map` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`cache_map_reallocate` - * :c:func:`map_deinit` - * :c:func:`map_sort` - - -.. c:function:: save_erf_two_e_integrals_ao: - - - File : :file:`ao_two_e_erf_ints/routines_save_integrals_erf.irp.f` - - .. code:: fortran - - subroutine save_erf_two_e_integrals_ao - - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_integrals_erf_map` - * :c:data:`ezfio_filename` - * :c:data:`ao_two_e_integrals_erf_in_map` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`routine` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`ezfio_set_ao_two_e_erf_ints_io_ao_two_e_integrals_erf` - * :c:func:`ezfio_set_work_empty` - * :c:func:`map_save_to_disk` - - -.. c:function:: save_erf_two_e_ints_ao_into_ints_ao: - - - File : :file:`ao_two_e_erf_ints/routines_save_integrals_erf.irp.f` - - .. code:: fortran - - subroutine save_erf_two_e_ints_ao_into_ints_ao - - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_integrals_erf_map` - * :c:data:`ezfio_filename` - * :c:data:`ao_two_e_integrals_erf_in_map` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`ezfio_set_ao_two_e_ints_io_ao_two_e_integrals` - * :c:func:`ezfio_set_work_empty` - * :c:func:`map_save_to_disk` - diff --git a/docs/source/modules/ao_two_e_ints.rst b/docs/source/modules/ao_two_e_ints.rst deleted file mode 100644 index 9121ed30..00000000 --- a/docs/source/modules/ao_two_e_ints.rst +++ /dev/null @@ -1,1282 +0,0 @@ -.. _module_ao_two_e_ints: - -.. program:: ao_two_e_ints - -.. default-role:: option - -================== -ao_two_e_ints -================== - -Here, all two-electron integrals (:math:`1/r_{12}`) are computed. -As they have 4 indices and many are zero, they are stored in a map, as defined -in :file:`utils/map_module.f90`. - -To fetch an |AO| integral, use the -`get_ao_two_e_integral(i,j,k,l,ao_integrals_map)` function. - - -The conventions are: -* For |AO| integrals : (ij|kl) = (11|22) = = <12|12> - - - - - - -EZFIO parameters ----------------- - -.. option:: io_ao_two_e_integrals - - Read/Write |AO| integrals from/to disk [ Write | Read | None ] - - Default: None - -.. option:: ao_integrals_threshold - - If | (pq|rs) | < `ao_integrals_threshold` then (pq|rs) is zero - - Default: 1.e-15 - -.. option:: do_direct_integrals - - Compute integrals on the fly (very slow, only for debugging) - - Default: False - - -Providers ---------- - -.. c:var:: ao_integrals_cache - - - File : :file:`ao_two_e_ints/map_integrals.irp.f` - - .. code:: fortran - - double precision, allocatable :: ao_integrals_cache (0:64*64*64*64) - - - Cache of AO integrals for fast access - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_integrals_cache_min` - * :c:data:`ao_integrals_map` - * :c:data:`ao_two_e_integrals_in_map` - - - -.. c:var:: ao_integrals_cache_max - - - File : :file:`ao_two_e_ints/map_integrals.irp.f` - - .. code:: fortran - - integer :: ao_integrals_cache_min - integer :: ao_integrals_cache_max - - - Min and max values of the AOs for which the integrals are in the cache - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_integrals_cache` - - -.. c:var:: ao_integrals_cache_min - - - File : :file:`ao_two_e_ints/map_integrals.irp.f` - - .. code:: fortran - - integer :: ao_integrals_cache_min - integer :: ao_integrals_cache_max - - - Min and max values of the AOs for which the integrals are in the cache - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_integrals_cache` - - -.. c:var:: ao_integrals_map - - - File : :file:`ao_two_e_ints/map_integrals.irp.f` - - .. code:: fortran - - type(map_type) :: ao_integrals_map - - - AO integrals - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_integrals_cache` - * :c:data:`ao_two_e_integral_alpha` - * :c:data:`ao_two_e_integrals_in_map` - * :c:data:`mo_two_e_integral_jj_from_ao` - * :c:data:`mo_two_e_integrals_vv_from_ao` - - -.. c:var:: ao_two_e_integral_schwartz - - - File : :file:`ao_two_e_ints/two_e_integrals.irp.f` - - .. code:: fortran - - double precision, allocatable :: ao_two_e_integral_schwartz (ao_num,ao_num) - - - Needed to compute Schwartz inequalities - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_coef_normalized_ordered_transp` - * :c:data:`ao_expo_ordered_transp` - * :c:data:`ao_nucl` - * :c:data:`ao_num` - * :c:data:`ao_power` - * :c:data:`ao_prim_num` - * :c:data:`n_pt_max_integrals` - * :c:data:`nucl_coord` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_two_e_integral_alpha` - * :c:data:`mo_two_e_integral_jj_from_ao` - * :c:data:`mo_two_e_integrals_vv_from_ao` - - -.. c:var:: ao_two_e_integrals_in_map - - - File : :file:`ao_two_e_ints/two_e_integrals.irp.f` - - .. code:: fortran - - logical :: ao_two_e_integrals_in_map - - - Map of Atomic integrals - i(r1) j(r2) 1/r12 k(r1) l(r2) - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_coef_normalized_ordered_transp` - * :c:data:`ao_expo_ordered_transp` - * :c:data:`ao_integrals_map` - * :c:data:`ao_nucl` - * :c:data:`ao_num` - * :c:data:`ao_power` - * :c:data:`ao_prim_num` - * :c:data:`ezfio_filename` - * :c:data:`io_ao_two_e_integrals` - * :c:data:`mpi_master` - * :c:data:`n_pt_max_integrals` - * :c:data:`nproc` - * :c:data:`nucl_coord` - * :c:data:`read_ao_two_e_integrals` - * :c:data:`zmq_context` - * :c:data:`zmq_socket_pull_tcp_address` - * :c:data:`zmq_state` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_integrals_cache` - * :c:data:`ao_two_e_integral_alpha` - * :c:data:`mo_two_e_integral_jj_from_ao` - * :c:data:`mo_two_e_integrals_erf_in_map` - * :c:data:`mo_two_e_integrals_in_map` - * :c:data:`mo_two_e_integrals_vv_from_ao` - - -.. c:var:: gauleg_t2 - - - File : :file:`ao_two_e_ints/gauss_legendre.irp.f` - - .. code:: fortran - - double precision, allocatable :: gauleg_t2 (n_pt_max_integrals,n_pt_max_integrals/2) - double precision, allocatable :: gauleg_w (n_pt_max_integrals,n_pt_max_integrals/2) - - - t_w(i,1,k) = w(i) - t_w(i,2,k) = t(i) - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`n_pt_max_integrals` - - - -.. c:var:: gauleg_w - - - File : :file:`ao_two_e_ints/gauss_legendre.irp.f` - - .. code:: fortran - - double precision, allocatable :: gauleg_t2 (n_pt_max_integrals,n_pt_max_integrals/2) - double precision, allocatable :: gauleg_w (n_pt_max_integrals,n_pt_max_integrals/2) - - - t_w(i,1,k) = w(i) - t_w(i,2,k) = t(i) - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`n_pt_max_integrals` - - - -.. c:function:: general_primitive_integral: - - - File : :file:`ao_two_e_ints/two_e_integrals.irp.f` - - .. code:: fortran - - double precision function general_primitive_integral(dim, & - P_new,P_center,fact_p,p,p_inv,iorder_p, & - Q_new,Q_center,fact_q,q,q_inv,iorder_q) - - - Computes the integral where p,q,r,s are Gaussian primitives - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`add_poly_multiply` - * :c:func:`give_polynom_mult_center_x` - * :c:func:`multiply_poly` - - -.. c:function:: i_x1_new: - - - File : :file:`ao_two_e_ints/two_e_integrals.irp.f` - - .. code:: fortran - - recursive subroutine I_x1_new(a,c,B_10,B_01,B_00,res,n_pt) - - - recursive function involved in the two-electron integral - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`n_pt_max_integrals` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`i_x1_new` - * :c:func:`i_x2_new` - * :c:func:`integrale_new` - * :c:func:`integrale_new_erf` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`i_x1_new` - * :c:func:`i_x2_new` - - -.. c:function:: i_x1_pol_mult_a1: - - - File : :file:`ao_two_e_ints/two_e_integrals.irp.f` - - .. code:: fortran - - recursive subroutine I_x1_pol_mult_a1(c,B_10,B_01,B_00,C_00,D_00,d,nd,n_pt_in) - - - recursive function involved in the two-electron integral - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`i_x1_pol_mult` - * :c:func:`i_x1_pol_mult_a2` - * :c:func:`i_x1_pol_mult_recurs` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`i_x2_pol_mult` - * :c:func:`multiply_poly` - - -.. c:function:: i_x1_pol_mult_a2: - - - File : :file:`ao_two_e_ints/two_e_integrals.irp.f` - - .. code:: fortran - - recursive subroutine I_x1_pol_mult_a2(c,B_10,B_01,B_00,C_00,D_00,d,nd,n_pt_in) - - - recursive function involved in the two-electron integral - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`i_x1_pol_mult` - * :c:func:`i_x1_pol_mult_recurs` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`i_x1_pol_mult_a1` - * :c:func:`i_x2_pol_mult` - * :c:func:`multiply_poly` - - -.. c:function:: i_x1_pol_mult_recurs: - - - File : :file:`ao_two_e_ints/two_e_integrals.irp.f` - - .. code:: fortran - - recursive subroutine I_x1_pol_mult_recurs(a,c,B_10,B_01,B_00,C_00,D_00,d,nd,n_pt_in) - - - recursive function involved in the two-electron integral - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`i_x1_pol_mult` - * :c:func:`i_x1_pol_mult_recurs` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`i_x1_pol_mult_a1` - * :c:func:`i_x1_pol_mult_a2` - * :c:func:`i_x1_pol_mult_recurs` - * :c:func:`multiply_poly` - - -.. c:function:: i_x2_new: - - - File : :file:`ao_two_e_ints/two_e_integrals.irp.f` - - .. code:: fortran - - recursive subroutine I_x2_new(c,B_10,B_01,B_00,res,n_pt) - - - recursive function involved in the two-electron integral - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`n_pt_max_integrals` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`i_x1_new` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`i_x1_new` - - -.. c:function:: i_x2_pol_mult: - - - File : :file:`ao_two_e_ints/two_e_integrals.irp.f` - - .. code:: fortran - - recursive subroutine I_x2_pol_mult(c,B_10,B_01,B_00,C_00,D_00,d,nd,dim) - - - recursive function involved in the two-electron integral - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`i_x1_pol_mult` - * :c:func:`i_x1_pol_mult_a1` - * :c:func:`i_x1_pol_mult_a2` - * :c:func:`i_x2_pol_mult` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`i_x2_pol_mult` - * :c:func:`multiply_poly` - - - -Subroutines / functions ------------------------ - -.. c:function:: ao_l4: - - - File : :file:`ao_two_e_ints/two_e_integrals.irp.f` - - .. code:: fortran - - integer function ao_l4(i,j,k,l) - - - Computes the product of l values of i,j,k,and l - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_l` - - -.. c:function:: ao_two_e_integral: - - - File : :file:`ao_two_e_ints/two_e_integrals.irp.f` - - .. code:: fortran - - double precision function ao_two_e_integral(i,j,k,l) - - - integral of the AO basis or (ij|kl) - i(r1) j(r1) 1/r12 k(r2) l(r2) - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`n_pt_max_integrals` - * :c:data:`ao_coef_normalized_ordered_transp` - * :c:data:`ao_power` - * :c:data:`ao_expo_ordered_transp` - * :c:data:`ao_prim_num` - * :c:data:`ao_nucl` - * :c:data:`nucl_coord` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`give_explicit_poly_and_gaussian` - - -.. c:function:: ao_two_e_integral_schwartz_accel: - - - File : :file:`ao_two_e_ints/two_e_integrals.irp.f` - - .. code:: fortran - - double precision function ao_two_e_integral_schwartz_accel(i,j,k,l) - - - integral of the AO basis or (ij|kl) - i(r1) j(r1) 1/r12 k(r2) l(r2) - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`n_pt_max_integrals` - * :c:data:`ao_integrals_threshold` - * :c:data:`ao_coef_normalized_ordered_transp` - * :c:data:`ao_power` - * :c:data:`ao_expo_ordered_transp` - * :c:data:`ao_prim_num` - * :c:data:`ao_nucl` - * :c:data:`nucl_coord` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`give_explicit_poly_and_gaussian` - - -.. c:function:: ao_two_e_integrals_in_map_collector: - - - File : :file:`ao_two_e_ints/integrals_in_map_slave.irp.f` - - .. code:: fortran - - subroutine ao_two_e_integrals_in_map_collector(zmq_socket_pull) - - - Collects results from the AO integral calculation - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_integrals_map` - * :c:data:`ao_num` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_two_e_integrals_in_map` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`end_zmq_to_qp_run_socket` - * :c:func:`insert_into_ao_integrals_map` - - -.. c:function:: ao_two_e_integrals_in_map_slave: - - - File : :file:`ao_two_e_ints/integrals_in_map_slave.irp.f` - - .. code:: fortran - - subroutine ao_two_e_integrals_in_map_slave(thread,iproc) - - - Computes a buffer of integrals - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`ao_two_e_integrals_in_map_slave_inproc` - * :c:func:`ao_two_e_integrals_in_map_slave_tcp` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`compute_ao_integrals_jl` - * :c:func:`end_zmq_push_socket` - * :c:func:`end_zmq_to_qp_run_socket` - * :c:func:`push_integrals` - - -.. c:function:: ao_two_e_integrals_in_map_slave_inproc: - - - File : :file:`ao_two_e_ints/integrals_in_map_slave.irp.f` - - .. code:: fortran - - subroutine ao_two_e_integrals_in_map_slave_inproc(i) - - - Computes a buffer of integrals. i is the ID of the current thread. - - Called by: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_two_e_integrals_in_map` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`ao_two_e_integrals_in_map_slave` - - -.. c:function:: ao_two_e_integrals_in_map_slave_tcp: - - - File : :file:`ao_two_e_ints/integrals_in_map_slave.irp.f` - - .. code:: fortran - - subroutine ao_two_e_integrals_in_map_slave_tcp(i) - - - Computes a buffer of integrals. i is the ID of the current thread. - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`ao_two_e_integrals_in_map_slave` - - -.. c:function:: clear_ao_map: - - - File : :file:`ao_two_e_ints/map_integrals.irp.f` - - .. code:: fortran - - subroutine clear_ao_map - - - Frees the memory of the AO map - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_integrals_map` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`map_deinit` - - -.. c:function:: compute_ao_integrals_jl: - - - File : :file:`ao_two_e_ints/two_e_integrals.irp.f` - - .. code:: fortran - - subroutine compute_ao_integrals_jl(j,l,n_integrals,buffer_i,buffer_value) - - - Parallel client for AO integrals - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_overlap_abs` - * :c:data:`ao_num` - * :c:data:`ao_integrals_threshold` - * :c:data:`ao_two_e_integral_schwartz` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`ao_two_e_integrals_in_map_slave` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`two_e_integrals_index` - - -.. c:function:: compute_ao_two_e_integrals: - - - File : :file:`ao_two_e_ints/two_e_integrals.irp.f` - - .. code:: fortran - - subroutine compute_ao_two_e_integrals(j,k,l,sze,buffer_value) - - - Compute AO 1/r12 integrals for all i and fixed j,k,l - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_overlap_abs` - * :c:data:`ao_num` - * :c:data:`ao_two_e_integral_schwartz` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:data:`mo_two_e_integral_jj_from_ao` - * :c:data:`mo_two_e_integrals_vv_from_ao` - - -.. c:function:: dump_ao_integrals: - - - File : :file:`ao_two_e_ints/map_integrals.irp.f` - - .. code:: fortran - - subroutine dump_ao_integrals(filename) - - - Save to disk the |AO| integrals - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_integrals_map` - * :c:data:`mpi_master` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`ezfio_set_work_empty` - - -.. c:function:: eri: - - - File : :file:`ao_two_e_ints/two_e_integrals.irp.f` - - .. code:: fortran - - double precision function ERI(alpha,beta,delta,gama,a_x,b_x,c_x,d_x,a_y,b_y,c_y,d_y,a_z,b_z,c_z,d_z) - - - ATOMIC PRIMTIVE two-electron integral between the 4 primitives :: - primitive_1 = x1**(a_x) y1**(a_y) z1**(a_z) exp(-alpha * r1**2) - primitive_2 = x1**(b_x) y1**(b_y) z1**(b_z) exp(- beta * r1**2) - primitive_3 = x2**(c_x) y2**(c_y) z2**(c_z) exp(-delta * r2**2) - primitive_4 = x2**(d_x) y2**(d_y) z2**(d_z) exp(- gama * r2**2) - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`integrale_new` - - -.. c:function:: gauleg: - - - File : :file:`ao_two_e_ints/gauss_legendre.irp.f` - - .. code:: fortran - - subroutine gauleg(x1,x2,x,w,n) - - - Gauss-Legendre - - Called by: - - .. hlist:: - :columns: 3 - - * :c:data:`gauleg_t2` - - -.. c:function:: get_ao_map_size: - - - File : :file:`ao_two_e_ints/map_integrals.irp.f` - - .. code:: fortran - - function get_ao_map_size() - - - Returns the number of elements in the AO map - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_integrals_map` - - -.. c:function:: get_ao_two_e_integral: - - - File : :file:`ao_two_e_ints/map_integrals.irp.f` - - .. code:: fortran - - double precision function get_ao_two_e_integral(i,j,k,l,map) result(result) - - - Gets one AO bi-electronic integral from the AO map - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_overlap_abs` - * :c:data:`ao_integrals_threshold` - * :c:data:`ao_two_e_integral_schwartz` - * :c:data:`ao_integrals_cache` - * :c:data:`ao_integrals_cache_min` - * :c:data:`ao_two_e_integrals_in_map` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`map_get` - * :c:func:`two_e_integrals_index` - - -.. c:function:: get_ao_two_e_integrals: - - - File : :file:`ao_two_e_ints/map_integrals.irp.f` - - .. code:: fortran - - subroutine get_ao_two_e_integrals(j,k,l,sze,out_val) - - - Gets multiple AO bi-electronic integral from the AO map . - All i are retrieved for j,k,l fixed. - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_integrals_map` - * :c:data:`ao_overlap_abs` - * :c:data:`ao_integrals_threshold` - * :c:data:`ao_two_e_integrals_in_map` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`add_integrals_to_map` - * :c:func:`add_integrals_to_map_no_exit_34` - * :c:func:`add_integrals_to_map_three_indices` - - -.. c:function:: get_ao_two_e_integrals_non_zero: - - - File : :file:`ao_two_e_ints/map_integrals.irp.f` - - .. code:: fortran - - subroutine get_ao_two_e_integrals_non_zero(j,k,l,sze,out_val,out_val_index,non_zero_int) - - - Gets multiple AO bi-electronic integral from the AO map . - All non-zero i are retrieved for j,k,l fixed. - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_integrals_map` - * :c:data:`ao_overlap_abs` - * :c:data:`ao_integrals_threshold` - * :c:data:`ao_two_e_integral_schwartz` - * :c:data:`ao_two_e_integrals_in_map` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:data:`mo_two_e_integral_jj_from_ao` - * :c:data:`mo_two_e_integrals_vv_from_ao` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`map_get` - * :c:func:`two_e_integrals_index` - - -.. c:function:: give_polynom_mult_center_x: - - - File : :file:`ao_two_e_ints/two_e_integrals.irp.f` - - .. code:: fortran - - subroutine give_polynom_mult_center_x(P_center,Q_center,a_x,d_x,p,q,n_pt_in,pq_inv,pq_inv_2,p10_1,p01_1,p10_2,p01_2,d,n_pt_out) - - - subroutine that returns the explicit polynom in term of the "t" - variable of the following polynomw : - I_x1(a_x, d_x,p,q) * I_x1(a_y, d_y,p,q) * I_x1(a_z, d_z,p,q) - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`general_primitive_integral` - * :c:func:`general_primitive_integral_erf` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`i_x1_pol_mult` - - -.. c:function:: i_x1_pol_mult: - - - File : :file:`ao_two_e_ints/two_e_integrals.irp.f` - - .. code:: fortran - - subroutine I_x1_pol_mult(a,c,B_10,B_01,B_00,C_00,D_00,d,nd,n_pt_in) - - - recursive function involved in the two-electron integral - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`give_polynom_mult_center_x` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`i_x1_pol_mult_a1` - * :c:func:`i_x1_pol_mult_a2` - * :c:func:`i_x1_pol_mult_recurs` - * :c:func:`i_x2_pol_mult` - - -.. c:function:: insert_into_ao_integrals_map: - - - File : :file:`ao_two_e_ints/map_integrals.irp.f` - - .. code:: fortran - - subroutine insert_into_ao_integrals_map(n_integrals,buffer_i, buffer_values) - - - Create new entry into AO map - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_integrals_map` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`ao_two_e_integrals_in_map_collector` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`map_append` - - -.. c:function:: integrale_new: - - - File : :file:`ao_two_e_ints/two_e_integrals.irp.f` - - .. code:: fortran - - subroutine integrale_new(I_f,a_x,b_x,c_x,d_x,a_y,b_y,c_y,d_y,a_z,b_z,c_z,d_z,p,q,n_pt) - - - calculate the integral of the polynom :: - I_x1(a_x+b_x, c_x+d_x,p,q) * I_x1(a_y+b_y, c_y+d_y,p,q) * I_x1(a_z+b_z, c_z+d_z,p,q) - between ( 0 ; 1) - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`n_pt_max_integrals` - * :c:data:`gauleg_t2` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`eri` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`i_x1_new` - - -.. c:function:: load_ao_integrals: - - - File : :file:`ao_two_e_ints/map_integrals.irp.f` - - .. code:: fortran - - integer function load_ao_integrals(filename) - - - Read from disk the |AO| integrals - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_integrals_map` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`cache_map_reallocate` - * :c:func:`map_deinit` - * :c:func:`map_sort` - - -.. c:function:: n_pt_sup: - - - File : :file:`ao_two_e_ints/two_e_integrals.irp.f` - - .. code:: fortran - - integer function n_pt_sup(a_x,b_x,c_x,d_x,a_y,b_y,c_y,d_y,a_z,b_z,c_z,d_z) - - - Returns the upper boundary of the degree of the polynomial involved in the - bielctronic integral : - Ix(a_x,b_x,c_x,d_x) * Iy(a_y,b_y,c_y,d_y) * Iz(a_z,b_z,c_z,d_z) - - -.. c:function:: push_integrals: - - - File : :file:`ao_two_e_ints/integrals_in_map_slave.irp.f` - - .. code:: fortran - - subroutine push_integrals(zmq_socket_push, n_integrals, buffer_i, buffer_value, task_id) - - - Push integrals in the push socket - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`ao_two_e_integrals_erf_in_map_slave` - * :c:func:`ao_two_e_integrals_in_map_slave` - - -.. c:function:: two_e_integrals_index: - - - File : :file:`ao_two_e_ints/map_integrals.irp.f` - - .. code:: fortran - - subroutine two_e_integrals_index(i,j,k,l,i1) - - - - Called by: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_integrals_cache` - * :c:data:`ao_integrals_erf_cache` - * :c:data:`ao_integrals_erf_map` - * :c:data:`ao_integrals_map` - * :c:func:`compute_ao_integrals_erf_jl` - * :c:func:`compute_ao_integrals_jl` - * :c:func:`get_ao_two_e_integral` - * :c:func:`get_ao_two_e_integral_erf` - * :c:func:`get_ao_two_e_integrals_erf_non_zero` - * :c:func:`get_ao_two_e_integrals_non_zero` - * :c:func:`get_mo_two_e_integral_erf` - * :c:func:`get_mo_two_e_integrals_coulomb_ii` - * :c:func:`get_mo_two_e_integrals_erf` - * :c:func:`get_mo_two_e_integrals_erf_coulomb_ii` - * :c:func:`get_mo_two_e_integrals_erf_exch_ii` - * :c:func:`get_mo_two_e_integrals_erf_i1j1` - * :c:func:`get_mo_two_e_integrals_erf_ij` - * :c:func:`get_mo_two_e_integrals_exch_ii` - * :c:func:`get_mo_two_e_integrals_i1j1` - * :c:func:`get_mo_two_e_integrals_ij` - * :c:func:`get_two_e_integral` - * :c:data:`mo_integrals_cache` - * :c:data:`mo_integrals_erf_cache` - * :c:data:`mo_integrals_erf_map` - * :c:data:`mo_integrals_map` - * :c:func:`two_e_integrals_index_reverse` - - -.. c:function:: two_e_integrals_index_reverse: - - - File : :file:`ao_two_e_ints/map_integrals.irp.f` - - .. code:: fortran - - subroutine two_e_integrals_index_reverse(i,j,k,l,i1) - - - - Called by: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_two_e_integral_alpha` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`two_e_integrals_index` - diff --git a/docs/source/modules/aux_quantities.rst b/docs/source/modules/aux_quantities.rst deleted file mode 100644 index 3ded29f8..00000000 --- a/docs/source/modules/aux_quantities.rst +++ /dev/null @@ -1,52 +0,0 @@ -.. _module_aux_quantities: - -.. program:: aux_quantities - -.. default-role:: option - -============== -aux_quantities -============== - - -This module contains some global variables (such as densities and energies) -which are stored in the EZFIO folder in a different place than determinants. -This is used in practice to store density matrices which can be obtained from -any methods, as long as they are stored in the same MO basis which is used for -the calculations. In |RSDFT| calculations, this can be done to perform damping -on the density in order to speed up convergence. - -The main providers of that module are: - -* `data_one_e_dm_alpha_mo` and `data_one_e_dm_beta_mo` which are the - one-body alpha and beta densities which are necessary read from the EZFIO - folder. - - -Thanks to these providers you can use any density matrix that does not -necessary corresponds to that of the current wave function. - - - -EZFIO parameters ----------------- - -.. option:: data_energy_var - - Variational energy computed with the wave function - - -.. option:: data_energy_proj - - Projected energy computed with the wave function - - -.. option:: data_one_e_dm_alpha_mo - - Alpha one body density matrix on the |MO| basis computed with the wave function - - -.. option:: data_one_e_dm_beta_mo - - Beta one body density matrix on the |MO| basis computed with the wave function - diff --git a/docs/source/modules/becke_numerical_grid.rst b/docs/source/modules/becke_numerical_grid.rst deleted file mode 100644 index 5f97851d..00000000 --- a/docs/source/modules/becke_numerical_grid.rst +++ /dev/null @@ -1,833 +0,0 @@ -.. _module_becke_numerical_grid: - -.. program:: becke_numerical_grid - -.. default-role:: option - -==================== -becke_numerical_grid -==================== - -This module contains all quantities needed to build Becke's grid used in general for DFT integration. Note that it can be used for whatever integration in R^3 as long as the functions to be integrated are mostly concentrated near the atomic regions. - -This grid is built as the reunion of a spherical grid around each atom. Each spherical grid contains -a certain number of radial and angular points. No pruning is done on the angular part of the grid. - -The main keyword for that module is: - -* :option:`becke_numerical_grid grid_type_sgn` which controls the precision of the grid according the standard **SG-n** grids. This keyword controls the two providers `n_points_integration_angular` `n_points_radial_grid`. - -The main providers of that module are: - -* `n_points_integration_angular` which is the number of angular integration points. WARNING: it obeys to specific rules so it cannot be any integer number. Some of the possible values are [ 50 | 74 | 170 | 194 | 266 | 302 | 590 | 1202 | 2030 | 5810 ] for instance. See :file:`angular.f` for more details. -* `n_points_radial_grid` which is the number of radial angular points. This can be any strictly positive integer. Nevertheless, a minimum of 50 is in general necessary. -* `final_grid_points` which are the (x,y,z) coordinates of the grid points. -* `final_weight_at_r_vector` which are the weights at each grid point - - -For a simple example of how to use the grid, see :file:`example.irp.f`. - -The spherical integration uses Lebedev-Laikov grids, which was used from the code distributed through CCL (http://www.ccl.net/). -See next section for explanations and citation policies. - -.. code-block:: text - - This subroutine is part of a set of subroutines that generate - Lebedev grids [1-6] for integration on a sphere. The original - C-code [1] was kindly provided by Dr. Dmitri N. Laikov and - translated into fortran by Dr. Christoph van Wuellen. - This subroutine was translated using a C to fortran77 conversion - tool written by Dr. Christoph van Wuellen. - - Users of this code are asked to include reference [1] in their - publications, and in the user- and programmers-manuals - describing their codes. - - This code was distributed through CCL (http://www.ccl.net/). - - [1] V.I. Lebedev, and D.N. Laikov - "A quadrature formula for the sphere of the 131st - algebraic order of accuracy" - Doklady Mathematics, Vol. 59, No. 3, 1999, pp. 477-481. - - [2] V.I. Lebedev - "A quadrature formula for the sphere of 59th algebraic - order of accuracy" - Russian Acad. Sci. Dokl. Math., Vol. 50, 1995, pp. 283-286. - - [3] V.I. Lebedev, and A.L. Skorokhodov - "Quadrature formulas of orders 41, 47, and 53 for the sphere" - Russian Acad. Sci. Dokl. Math., Vol. 45, 1992, pp. 587-592. - - [4] V.I. Lebedev - "Spherical quadrature formulas exact to orders 25-29" - Siberian Mathematical Journal, Vol. 18, 1977, pp. 99-107. - - [5] V.I. Lebedev - "Quadratures on a sphere" - Computational Mathematics and Mathematical Physics, Vol. 16, - 1976, pp. 10-24. - - [6] V.I. Lebedev - "Values of the nodes and weights of ninth to seventeenth - order Gauss-Markov quadrature formulae invariant under the - octahedron group with inversion" - Computational Mathematics and Mathematical Physics, Vol. 15, - 1975, pp. 44-51. - - - - - -EZFIO parameters ----------------- - -.. option:: grid_type_sgn - - Type of grid used for the Becke's numerical grid. Can be, by increasing accuracy: [ 0 | 1 | 2 | 3 ] - - Default: 2 - - -Providers ---------- - -.. c:var:: alpha_knowles - - - File : :file:`becke_numerical_grid/integration_radial.irp.f` - - .. code:: fortran - - double precision, allocatable :: alpha_knowles (100) - - - Recommended values for the alpha parameters according to the paper of Knowles (JCP, 104, 1996) - as a function of the nuclear charge - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`final_weight_at_r` - * :c:data:`grid_points_per_atom` - - -.. c:var:: angular_quadrature_points - - - File : :file:`becke_numerical_grid/grid_becke.irp.f` - - .. code:: fortran - - double precision, allocatable :: angular_quadrature_points (n_points_integration_angular,3) - double precision, allocatable :: weights_angular_points (n_points_integration_angular) - - - weights and grid points for the integration on the angular variables on - the unit sphere centered on (0,0,0) - According to the LEBEDEV scheme - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`n_points_radial_grid` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`final_weight_at_r` - * :c:data:`grid_points_per_atom` - - -.. c:var:: dr_radial_integral - - - File : :file:`becke_numerical_grid/grid_becke.irp.f` - - .. code:: fortran - - double precision, allocatable :: grid_points_radial (n_points_radial_grid) - double precision :: dr_radial_integral - - - points in [0,1] to map the radial integral [0,\infty] - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`n_points_radial_grid` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`final_weight_at_r` - * :c:data:`grid_points_per_atom` - - -.. c:var:: final_grid_points - - - File : :file:`becke_numerical_grid/grid_becke_vector.irp.f` - - .. code:: fortran - - double precision, allocatable :: final_grid_points (3,n_points_final_grid) - double precision, allocatable :: final_weight_at_r_vector (n_points_final_grid) - integer, allocatable :: index_final_points (3,n_points_final_grid) - integer, allocatable :: index_final_points_reverse (n_points_integration_angular,n_points_radial_grid,nucl_num) - - - final_grid_points(1:3,j) = (/ x, y, z /) of the jth grid point - - final_weight_at_r_vector(i) = Total weight function of the ith grid point which contains the Lebedev, Voronoi and radial weights contributions - - index_final_points(1:3,i) = gives the angular, radial and atomic indices associated to the ith grid point - - index_final_points_reverse(i,j,k) = index of the grid point having i as angular, j as radial and l as atomic indices - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`final_weight_at_r` - * :c:data:`grid_points_per_atom` - * :c:data:`n_points_final_grid` - * :c:data:`n_points_radial_grid` - * :c:data:`nucl_num` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`aos_grad_in_r_array` - * :c:data:`aos_in_r_array` - * :c:data:`aos_lapl_in_r_array` - * :c:data:`aos_sr_vc_alpha_lda_w` - * :c:data:`aos_sr_vc_alpha_pbe_w` - * :c:data:`aos_vc_alpha_lda_w` - * :c:data:`aos_vc_alpha_pbe_w` - * :c:data:`energy_sr_x_lda` - * :c:data:`energy_sr_x_pbe` - * :c:data:`energy_x_lda` - * :c:data:`energy_x_pbe` - * :c:data:`mos_in_r_array` - * :c:data:`one_e_dm_alpha_at_r` - * :c:data:`one_e_dm_and_grad_alpha_in_r` - - -.. c:var:: final_weight_at_r - - - File : :file:`becke_numerical_grid/grid_becke.irp.f` - - .. code:: fortran - - double precision, allocatable :: final_weight_at_r (n_points_integration_angular,n_points_radial_grid,nucl_num) - - - Total weight on each grid point which takes into account all Lebedev, Voronoi and radial weights. - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`alpha_knowles` - * :c:data:`angular_quadrature_points` - * :c:data:`grid_points_radial` - * :c:data:`m_knowles` - * :c:data:`n_points_radial_grid` - * :c:data:`nucl_charge` - * :c:data:`nucl_num` - * :c:data:`weight_at_r` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`final_grid_points` - * :c:data:`n_points_final_grid` - - -.. c:var:: final_weight_at_r_vector - - - File : :file:`becke_numerical_grid/grid_becke_vector.irp.f` - - .. code:: fortran - - double precision, allocatable :: final_grid_points (3,n_points_final_grid) - double precision, allocatable :: final_weight_at_r_vector (n_points_final_grid) - integer, allocatable :: index_final_points (3,n_points_final_grid) - integer, allocatable :: index_final_points_reverse (n_points_integration_angular,n_points_radial_grid,nucl_num) - - - final_grid_points(1:3,j) = (/ x, y, z /) of the jth grid point - - final_weight_at_r_vector(i) = Total weight function of the ith grid point which contains the Lebedev, Voronoi and radial weights contributions - - index_final_points(1:3,i) = gives the angular, radial and atomic indices associated to the ith grid point - - index_final_points_reverse(i,j,k) = index of the grid point having i as angular, j as radial and l as atomic indices - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`final_weight_at_r` - * :c:data:`grid_points_per_atom` - * :c:data:`n_points_final_grid` - * :c:data:`n_points_radial_grid` - * :c:data:`nucl_num` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`aos_grad_in_r_array` - * :c:data:`aos_in_r_array` - * :c:data:`aos_lapl_in_r_array` - * :c:data:`aos_sr_vc_alpha_lda_w` - * :c:data:`aos_sr_vc_alpha_pbe_w` - * :c:data:`aos_vc_alpha_lda_w` - * :c:data:`aos_vc_alpha_pbe_w` - * :c:data:`energy_sr_x_lda` - * :c:data:`energy_sr_x_pbe` - * :c:data:`energy_x_lda` - * :c:data:`energy_x_pbe` - * :c:data:`mos_in_r_array` - * :c:data:`one_e_dm_alpha_at_r` - * :c:data:`one_e_dm_and_grad_alpha_in_r` - - -.. c:var:: grid_points_per_atom - - - File : :file:`becke_numerical_grid/grid_becke.irp.f` - - .. code:: fortran - - double precision, allocatable :: grid_points_per_atom (3,n_points_integration_angular,n_points_radial_grid,nucl_num) - - - x,y,z coordinates of grid points used for integration in 3d space - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`alpha_knowles` - * :c:data:`angular_quadrature_points` - * :c:data:`grid_points_radial` - * :c:data:`m_knowles` - * :c:data:`n_points_radial_grid` - * :c:data:`nucl_charge` - * :c:data:`nucl_coord` - * :c:data:`nucl_num` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`final_grid_points` - * :c:data:`one_e_dm_alpha_in_r` - * :c:data:`weight_at_r` - - -.. c:var:: grid_points_radial - - - File : :file:`becke_numerical_grid/grid_becke.irp.f` - - .. code:: fortran - - double precision, allocatable :: grid_points_radial (n_points_radial_grid) - double precision :: dr_radial_integral - - - points in [0,1] to map the radial integral [0,\infty] - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`n_points_radial_grid` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`final_weight_at_r` - * :c:data:`grid_points_per_atom` - - -.. c:var:: index_final_points - - - File : :file:`becke_numerical_grid/grid_becke_vector.irp.f` - - .. code:: fortran - - double precision, allocatable :: final_grid_points (3,n_points_final_grid) - double precision, allocatable :: final_weight_at_r_vector (n_points_final_grid) - integer, allocatable :: index_final_points (3,n_points_final_grid) - integer, allocatable :: index_final_points_reverse (n_points_integration_angular,n_points_radial_grid,nucl_num) - - - final_grid_points(1:3,j) = (/ x, y, z /) of the jth grid point - - final_weight_at_r_vector(i) = Total weight function of the ith grid point which contains the Lebedev, Voronoi and radial weights contributions - - index_final_points(1:3,i) = gives the angular, radial and atomic indices associated to the ith grid point - - index_final_points_reverse(i,j,k) = index of the grid point having i as angular, j as radial and l as atomic indices - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`final_weight_at_r` - * :c:data:`grid_points_per_atom` - * :c:data:`n_points_final_grid` - * :c:data:`n_points_radial_grid` - * :c:data:`nucl_num` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`aos_grad_in_r_array` - * :c:data:`aos_in_r_array` - * :c:data:`aos_lapl_in_r_array` - * :c:data:`aos_sr_vc_alpha_lda_w` - * :c:data:`aos_sr_vc_alpha_pbe_w` - * :c:data:`aos_vc_alpha_lda_w` - * :c:data:`aos_vc_alpha_pbe_w` - * :c:data:`energy_sr_x_lda` - * :c:data:`energy_sr_x_pbe` - * :c:data:`energy_x_lda` - * :c:data:`energy_x_pbe` - * :c:data:`mos_in_r_array` - * :c:data:`one_e_dm_alpha_at_r` - * :c:data:`one_e_dm_and_grad_alpha_in_r` - - -.. c:var:: index_final_points_reverse - - - File : :file:`becke_numerical_grid/grid_becke_vector.irp.f` - - .. code:: fortran - - double precision, allocatable :: final_grid_points (3,n_points_final_grid) - double precision, allocatable :: final_weight_at_r_vector (n_points_final_grid) - integer, allocatable :: index_final_points (3,n_points_final_grid) - integer, allocatable :: index_final_points_reverse (n_points_integration_angular,n_points_radial_grid,nucl_num) - - - final_grid_points(1:3,j) = (/ x, y, z /) of the jth grid point - - final_weight_at_r_vector(i) = Total weight function of the ith grid point which contains the Lebedev, Voronoi and radial weights contributions - - index_final_points(1:3,i) = gives the angular, radial and atomic indices associated to the ith grid point - - index_final_points_reverse(i,j,k) = index of the grid point having i as angular, j as radial and l as atomic indices - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`final_weight_at_r` - * :c:data:`grid_points_per_atom` - * :c:data:`n_points_final_grid` - * :c:data:`n_points_radial_grid` - * :c:data:`nucl_num` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`aos_grad_in_r_array` - * :c:data:`aos_in_r_array` - * :c:data:`aos_lapl_in_r_array` - * :c:data:`aos_sr_vc_alpha_lda_w` - * :c:data:`aos_sr_vc_alpha_pbe_w` - * :c:data:`aos_vc_alpha_lda_w` - * :c:data:`aos_vc_alpha_pbe_w` - * :c:data:`energy_sr_x_lda` - * :c:data:`energy_sr_x_pbe` - * :c:data:`energy_x_lda` - * :c:data:`energy_x_pbe` - * :c:data:`mos_in_r_array` - * :c:data:`one_e_dm_alpha_at_r` - * :c:data:`one_e_dm_and_grad_alpha_in_r` - - -.. c:var:: m_knowles - - - File : :file:`becke_numerical_grid/grid_becke.irp.f` - - .. code:: fortran - - integer :: m_knowles - - - value of the "m" parameter in the equation (7) of the paper of Knowles (JCP, 104, 1996) - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`final_weight_at_r` - * :c:data:`grid_points_per_atom` - - -.. c:var:: n_points_final_grid - - - File : :file:`becke_numerical_grid/grid_becke_vector.irp.f` - - .. code:: fortran - - integer :: n_points_final_grid - - - Number of points which are non zero - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`final_weight_at_r` - * :c:data:`n_points_radial_grid` - * :c:data:`nucl_num` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`aos_grad_in_r_array` - * :c:data:`aos_in_r_array` - * :c:data:`aos_lapl_in_r_array` - * :c:data:`aos_sr_vc_alpha_lda_w` - * :c:data:`aos_sr_vc_alpha_pbe_w` - * :c:data:`aos_vc_alpha_lda_w` - * :c:data:`aos_vc_alpha_pbe_w` - * :c:data:`energy_sr_x_lda` - * :c:data:`energy_sr_x_pbe` - * :c:data:`energy_x_lda` - * :c:data:`energy_x_pbe` - * :c:data:`final_grid_points` - * :c:data:`mos_grad_in_r_array` - * :c:data:`mos_in_r_array` - * :c:data:`mos_lapl_in_r_array` - * :c:data:`one_e_dm_alpha_at_r` - * :c:data:`one_e_dm_and_grad_alpha_in_r` - * :c:data:`potential_sr_c_alpha_ao_lda` - * :c:data:`potential_sr_x_alpha_ao_lda` - * :c:data:`potential_sr_x_alpha_ao_pbe` - * :c:data:`potential_x_alpha_ao_lda` - * :c:data:`potential_x_alpha_ao_pbe` - - -.. c:var:: n_points_grid_per_atom - - - File : :file:`becke_numerical_grid/grid_becke.irp.f` - - .. code:: fortran - - integer :: n_points_grid_per_atom - - - Number of grid points per atom - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`n_points_radial_grid` - - - -.. c:var:: n_points_integration_angular - - - File : :file:`becke_numerical_grid/grid_becke.irp.f` - - .. code:: fortran - - integer :: n_points_radial_grid - integer :: n_points_integration_angular - - - n_points_radial_grid = number of radial grid points per atom - - n_points_integration_angular = number of angular grid points per atom - - These numbers are automatically set by setting the grid_type_sgn parameter - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`grid_type_sgn` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`angular_quadrature_points` - * :c:data:`final_grid_points` - * :c:data:`final_weight_at_r` - * :c:data:`grid_points_per_atom` - * :c:data:`grid_points_radial` - * :c:data:`n_points_final_grid` - * :c:data:`n_points_grid_per_atom` - * :c:data:`one_e_dm_alpha_in_r` - * :c:data:`weight_at_r` - - -.. c:var:: n_points_radial_grid - - - File : :file:`becke_numerical_grid/grid_becke.irp.f` - - .. code:: fortran - - integer :: n_points_radial_grid - integer :: n_points_integration_angular - - - n_points_radial_grid = number of radial grid points per atom - - n_points_integration_angular = number of angular grid points per atom - - These numbers are automatically set by setting the grid_type_sgn parameter - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`grid_type_sgn` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`angular_quadrature_points` - * :c:data:`final_grid_points` - * :c:data:`final_weight_at_r` - * :c:data:`grid_points_per_atom` - * :c:data:`grid_points_radial` - * :c:data:`n_points_final_grid` - * :c:data:`n_points_grid_per_atom` - * :c:data:`one_e_dm_alpha_in_r` - * :c:data:`weight_at_r` - - -.. c:var:: weight_at_r - - - File : :file:`becke_numerical_grid/grid_becke.irp.f` - - .. code:: fortran - - double precision, allocatable :: weight_at_r (n_points_integration_angular,n_points_radial_grid,nucl_num) - - - Weight function at grid points : w_n(r) according to the equation (22) - of Becke original paper (JCP, 88, 1988) - - The "n" discrete variable represents the nucleis which in this array is - represented by the last dimension and the points are labelled by the - other dimensions. - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`grid_points_per_atom` - * :c:data:`n_points_radial_grid` - * :c:data:`nucl_coord_transp` - * :c:data:`nucl_dist_inv` - * :c:data:`nucl_num` - * :c:data:`slater_bragg_type_inter_distance_ua` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`final_weight_at_r` - - -.. c:var:: weights_angular_points - - - File : :file:`becke_numerical_grid/grid_becke.irp.f` - - .. code:: fortran - - double precision, allocatable :: angular_quadrature_points (n_points_integration_angular,3) - double precision, allocatable :: weights_angular_points (n_points_integration_angular) - - - weights and grid points for the integration on the angular variables on - the unit sphere centered on (0,0,0) - According to the LEBEDEV scheme - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`n_points_radial_grid` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`final_weight_at_r` - * :c:data:`grid_points_per_atom` - - - -Subroutines / functions ------------------------ - -.. c:function:: cell_function_becke: - - - File : :file:`becke_numerical_grid/step_function_becke.irp.f` - - .. code:: fortran - - double precision function cell_function_becke(r,atom_number) - - - atom_number :: atom on which the cell function of Becke (1988, JCP,88(4)) - r(1:3) :: x,y,z coordinantes of the current point - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`nucl_dist_inv` - * :c:data:`slater_bragg_type_inter_distance_ua` - * :c:data:`nucl_coord_transp` - * :c:data:`nucl_num` - - -.. c:function:: derivative_knowles_function: - - - File : :file:`becke_numerical_grid/integration_radial.irp.f` - - .. code:: fortran - - double precision function derivative_knowles_function(alpha,m,x) - - - Derivative of the function proposed by Knowles (JCP, 104, 1996) for distributing the radial points - - -.. c:function:: example_becke_numerical_grid: - - - File : :file:`becke_numerical_grid/example.irp.f` - - .. code:: fortran - - subroutine example_becke_numerical_grid - - - subroutine that illustrates the main features available in becke_numerical_grid - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`n_points_final_grid` - * :c:data:`final_weight_at_r` - * :c:data:`n_points_radial_grid` - * :c:data:`grid_points_per_atom` - * :c:data:`final_grid_points` - * :c:data:`nucl_coord` - * :c:data:`nucl_num` - - -.. c:function:: f_function_becke: - - - File : :file:`becke_numerical_grid/step_function_becke.irp.f` - - .. code:: fortran - - double precision function f_function_becke(x) - - - - -.. c:function:: knowles_function: - - - File : :file:`becke_numerical_grid/integration_radial.irp.f` - - .. code:: fortran - - double precision function knowles_function(alpha,m,x) - - - Function proposed by Knowles (JCP, 104, 1996) for distributing the radial points : - the Log "m" function ( equation (7) in the paper ) - - -.. c:function:: step_function_becke: - - - File : :file:`becke_numerical_grid/step_function_becke.irp.f` - - .. code:: fortran - - double precision function step_function_becke(x) - - - Step function of the Becke paper (1988, JCP,88(4)) - diff --git a/docs/source/modules/bitmask.rst b/docs/source/modules/bitmask.rst deleted file mode 100644 index 530eb096..00000000 --- a/docs/source/modules/bitmask.rst +++ /dev/null @@ -1,3489 +0,0 @@ -.. _module_bitmask: - -.. program:: bitmask - -.. default-role:: option - -============== -bitmask module -============== - -The central part of this module is the :file:`bitmasks_module.f90` file. It contains -the constants that will be used to define on which kind of integer the bitmasks -will be defined. - -In the program, to represent a determinant as a pair of bitstrings, -the determinant should be defined as - -.. code-block:: fortran - - use bitmasks - integer(bit_kind) :: determinant(N_int,2) - - -:file:`bitmasks_routines.irp.f` contains helper routines to manipulate bitmask, like -transforming a bit string to a list of integers for example. - - -`bit_kind_shift`, `bit_kind_size` and `bit_kind` are supposed to be consistent:: - - 2**bit_kind_shift = bit_kind_size - bit_kind = bit_kind_size / 8 - - -For an example of how to use the bitmaks, see the file :file:`example.irp.f`. - - - -Providers ---------- - -.. c:var:: act_bitmask - - - File : :file:`bitmask/core_inact_act_virt.irp.f` - - .. code:: fortran - - integer, allocatable :: list_inact (dim_list_inact_orb) - integer, allocatable :: list_virt (dim_list_virt_orb) - integer, allocatable :: list_inact_reverse (mo_num) - integer, allocatable :: list_virt_reverse (mo_num) - integer, allocatable :: list_del_reverse (mo_num) - integer, allocatable :: list_del (mo_num) - integer, allocatable :: list_core (dim_list_core_orb) - integer, allocatable :: list_core_reverse (mo_num) - integer, allocatable :: list_act (dim_list_act_orb) - integer, allocatable :: list_act_reverse (mo_num) - integer(bit_kind), allocatable :: core_bitmask (N_int,2) - integer(bit_kind), allocatable :: inact_bitmask (N_int,2) - integer(bit_kind), allocatable :: act_bitmask (N_int,2) - integer(bit_kind), allocatable :: virt_bitmask (N_int,2) - integer(bit_kind), allocatable :: del_bitmask (N_int,2) - - - inact_bitmask : Bitmask of the inactive orbitals which are supposed to be doubly excited - in post CAS methods - n_inact_orb : Number of inactive orbitals - virt_bitmask : Bitmaks of vritual orbitals which are supposed to be recieve electrons - in post CAS methods - n_virt_orb : Number of virtual orbitals - list_inact : List of the inactive orbitals which are supposed to be doubly excited - in post CAS methods - list_virt : List of vritual orbitals which are supposed to be recieve electrons - in post CAS methods - list_inact_reverse : reverse list of inactive orbitals - list_inact_reverse(i) = 0 ::> not an inactive - list_inact_reverse(i) = k ::> IS the kth inactive - list_virt_reverse : reverse list of virtual orbitals - list_virt_reverse(i) = 0 ::> not an virtual - list_virt_reverse(i) = k ::> IS the kth virtual - list_act(i) = index of the ith active orbital - - list_act_reverse : reverse list of active orbitals - list_act_reverse(i) = 0 ::> not an active - list_act_reverse(i) = k ::> IS the kth active orbital - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`dim_list_core_orb` - * :c:data:`mo_class` - * :c:data:`mo_num` - * :c:data:`n_core_orb` - * :c:data:`n_int` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`core_energy` - * :c:data:`core_energy_erf` - * :c:data:`core_fock_operator` - * :c:data:`core_fock_operator_erf` - * :c:data:`eigenvectors_fock_matrix_mo` - * :c:data:`fock_matrix_mo` - * :c:data:`inact_virt_bitmask` - * :c:data:`list_core_inact_act` - * :c:data:`mo_two_e_integrals_in_map` - * :c:data:`mo_two_e_integrals_vv_from_ao` - * :c:data:`reunion_of_bitmask` - * :c:data:`reunion_of_cas_inact_bitmask` - * :c:data:`reunion_of_core_inact_bitmask` - * :c:data:`virt_bitmask_4` - - -.. c:var:: cas_bitmask - - - File : :file:`bitmask/bitmasks.irp.f` - - .. code:: fortran - - integer(bit_kind), allocatable :: cas_bitmask (N_int,2,N_cas_bitmask) - - - Bitmasks for CAS reference determinants. (N_int, alpha/beta, CAS reference) - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ezfio_filename` - * :c:data:`full_ijkl_bitmask` - * :c:data:`generators_bitmask_restart` - * :c:data:`hf_bitmask` - * :c:data:`mpi_master` - * :c:data:`n_cas_bitmask` - * :c:data:`n_generators_bitmask` - * :c:data:`n_int` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`closed_shell_ref_bitmask` - * :c:data:`psi_cas` - * :c:data:`reunion_of_bitmask` - * :c:data:`reunion_of_cas_inact_bitmask` - * :c:data:`reunion_of_core_inact_act_bitmask` - - -.. c:var:: closed_shell_ref_bitmask - - - File : :file:`bitmask/bitmasks.irp.f` - - .. code:: fortran - - integer(bit_kind), allocatable :: closed_shell_ref_bitmask (N_int,2) - - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`cas_bitmask` - * :c:data:`n_int` - * :c:data:`ref_bitmask` - - - -.. c:var:: core_bitmask - - - File : :file:`bitmask/core_inact_act_virt.irp.f` - - .. code:: fortran - - integer, allocatable :: list_inact (dim_list_inact_orb) - integer, allocatable :: list_virt (dim_list_virt_orb) - integer, allocatable :: list_inact_reverse (mo_num) - integer, allocatable :: list_virt_reverse (mo_num) - integer, allocatable :: list_del_reverse (mo_num) - integer, allocatable :: list_del (mo_num) - integer, allocatable :: list_core (dim_list_core_orb) - integer, allocatable :: list_core_reverse (mo_num) - integer, allocatable :: list_act (dim_list_act_orb) - integer, allocatable :: list_act_reverse (mo_num) - integer(bit_kind), allocatable :: core_bitmask (N_int,2) - integer(bit_kind), allocatable :: inact_bitmask (N_int,2) - integer(bit_kind), allocatable :: act_bitmask (N_int,2) - integer(bit_kind), allocatable :: virt_bitmask (N_int,2) - integer(bit_kind), allocatable :: del_bitmask (N_int,2) - - - inact_bitmask : Bitmask of the inactive orbitals which are supposed to be doubly excited - in post CAS methods - n_inact_orb : Number of inactive orbitals - virt_bitmask : Bitmaks of vritual orbitals which are supposed to be recieve electrons - in post CAS methods - n_virt_orb : Number of virtual orbitals - list_inact : List of the inactive orbitals which are supposed to be doubly excited - in post CAS methods - list_virt : List of vritual orbitals which are supposed to be recieve electrons - in post CAS methods - list_inact_reverse : reverse list of inactive orbitals - list_inact_reverse(i) = 0 ::> not an inactive - list_inact_reverse(i) = k ::> IS the kth inactive - list_virt_reverse : reverse list of virtual orbitals - list_virt_reverse(i) = 0 ::> not an virtual - list_virt_reverse(i) = k ::> IS the kth virtual - list_act(i) = index of the ith active orbital - - list_act_reverse : reverse list of active orbitals - list_act_reverse(i) = 0 ::> not an active - list_act_reverse(i) = k ::> IS the kth active orbital - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`dim_list_core_orb` - * :c:data:`mo_class` - * :c:data:`mo_num` - * :c:data:`n_core_orb` - * :c:data:`n_int` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`core_energy` - * :c:data:`core_energy_erf` - * :c:data:`core_fock_operator` - * :c:data:`core_fock_operator_erf` - * :c:data:`eigenvectors_fock_matrix_mo` - * :c:data:`fock_matrix_mo` - * :c:data:`inact_virt_bitmask` - * :c:data:`list_core_inact_act` - * :c:data:`mo_two_e_integrals_in_map` - * :c:data:`mo_two_e_integrals_vv_from_ao` - * :c:data:`reunion_of_bitmask` - * :c:data:`reunion_of_cas_inact_bitmask` - * :c:data:`reunion_of_core_inact_bitmask` - * :c:data:`virt_bitmask_4` - - -.. c:var:: core_inact_act_bitmask_4 - - - File : :file:`bitmask/bitmasks.irp.f` - - .. code:: fortran - - integer(bit_kind), allocatable :: core_inact_act_bitmask_4 (N_int,4) - - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`n_int` - * :c:data:`reunion_of_core_inact_act_bitmask` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`mo_two_e_integrals_in_map` - - -.. c:var:: core_inact_virt_bitmask - - - File : :file:`bitmask/bitmasks.irp.f` - - .. code:: fortran - - integer(bit_kind), allocatable :: inact_virt_bitmask (N_int,2) - integer(bit_kind), allocatable :: core_inact_virt_bitmask (N_int,2) - - - Reunion of the inactive and virtual bitmasks - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`list_inact` - * :c:data:`n_int` - - - -.. c:var:: del_bitmask - - - File : :file:`bitmask/core_inact_act_virt.irp.f` - - .. code:: fortran - - integer, allocatable :: list_inact (dim_list_inact_orb) - integer, allocatable :: list_virt (dim_list_virt_orb) - integer, allocatable :: list_inact_reverse (mo_num) - integer, allocatable :: list_virt_reverse (mo_num) - integer, allocatable :: list_del_reverse (mo_num) - integer, allocatable :: list_del (mo_num) - integer, allocatable :: list_core (dim_list_core_orb) - integer, allocatable :: list_core_reverse (mo_num) - integer, allocatable :: list_act (dim_list_act_orb) - integer, allocatable :: list_act_reverse (mo_num) - integer(bit_kind), allocatable :: core_bitmask (N_int,2) - integer(bit_kind), allocatable :: inact_bitmask (N_int,2) - integer(bit_kind), allocatable :: act_bitmask (N_int,2) - integer(bit_kind), allocatable :: virt_bitmask (N_int,2) - integer(bit_kind), allocatable :: del_bitmask (N_int,2) - - - inact_bitmask : Bitmask of the inactive orbitals which are supposed to be doubly excited - in post CAS methods - n_inact_orb : Number of inactive orbitals - virt_bitmask : Bitmaks of vritual orbitals which are supposed to be recieve electrons - in post CAS methods - n_virt_orb : Number of virtual orbitals - list_inact : List of the inactive orbitals which are supposed to be doubly excited - in post CAS methods - list_virt : List of vritual orbitals which are supposed to be recieve electrons - in post CAS methods - list_inact_reverse : reverse list of inactive orbitals - list_inact_reverse(i) = 0 ::> not an inactive - list_inact_reverse(i) = k ::> IS the kth inactive - list_virt_reverse : reverse list of virtual orbitals - list_virt_reverse(i) = 0 ::> not an virtual - list_virt_reverse(i) = k ::> IS the kth virtual - list_act(i) = index of the ith active orbital - - list_act_reverse : reverse list of active orbitals - list_act_reverse(i) = 0 ::> not an active - list_act_reverse(i) = k ::> IS the kth active orbital - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`dim_list_core_orb` - * :c:data:`mo_class` - * :c:data:`mo_num` - * :c:data:`n_core_orb` - * :c:data:`n_int` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`core_energy` - * :c:data:`core_energy_erf` - * :c:data:`core_fock_operator` - * :c:data:`core_fock_operator_erf` - * :c:data:`eigenvectors_fock_matrix_mo` - * :c:data:`fock_matrix_mo` - * :c:data:`inact_virt_bitmask` - * :c:data:`list_core_inact_act` - * :c:data:`mo_two_e_integrals_in_map` - * :c:data:`mo_two_e_integrals_vv_from_ao` - * :c:data:`reunion_of_bitmask` - * :c:data:`reunion_of_cas_inact_bitmask` - * :c:data:`reunion_of_core_inact_bitmask` - * :c:data:`virt_bitmask_4` - - -.. c:var:: dim_list_act_orb - - - File : :file:`bitmask/core_inact_act_virt.irp.f` - - .. code:: fortran - - integer :: dim_list_core_orb - integer :: dim_list_inact_orb - integer :: dim_list_virt_orb - integer :: dim_list_act_orb - integer :: dim_list_del_orb - - - dimensions for the allocation of list_inact, list_virt, list_core and list_act - it is at least 1 - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`n_core_orb` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`list_inact` - - -.. c:var:: dim_list_core_orb - - - File : :file:`bitmask/core_inact_act_virt.irp.f` - - .. code:: fortran - - integer :: dim_list_core_orb - integer :: dim_list_inact_orb - integer :: dim_list_virt_orb - integer :: dim_list_act_orb - integer :: dim_list_del_orb - - - dimensions for the allocation of list_inact, list_virt, list_core and list_act - it is at least 1 - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`n_core_orb` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`list_inact` - - -.. c:var:: dim_list_del_orb - - - File : :file:`bitmask/core_inact_act_virt.irp.f` - - .. code:: fortran - - integer :: dim_list_core_orb - integer :: dim_list_inact_orb - integer :: dim_list_virt_orb - integer :: dim_list_act_orb - integer :: dim_list_del_orb - - - dimensions for the allocation of list_inact, list_virt, list_core and list_act - it is at least 1 - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`n_core_orb` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`list_inact` - - -.. c:var:: dim_list_inact_orb - - - File : :file:`bitmask/core_inact_act_virt.irp.f` - - .. code:: fortran - - integer :: dim_list_core_orb - integer :: dim_list_inact_orb - integer :: dim_list_virt_orb - integer :: dim_list_act_orb - integer :: dim_list_del_orb - - - dimensions for the allocation of list_inact, list_virt, list_core and list_act - it is at least 1 - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`n_core_orb` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`list_inact` - - -.. c:var:: dim_list_virt_orb - - - File : :file:`bitmask/core_inact_act_virt.irp.f` - - .. code:: fortran - - integer :: dim_list_core_orb - integer :: dim_list_inact_orb - integer :: dim_list_virt_orb - integer :: dim_list_act_orb - integer :: dim_list_del_orb - - - dimensions for the allocation of list_inact, list_virt, list_core and list_act - it is at least 1 - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`n_core_orb` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`list_inact` - - -.. c:var:: full_ijkl_bitmask - - - File : :file:`bitmask/bitmasks.irp.f` - - .. code:: fortran - - integer(bit_kind), allocatable :: full_ijkl_bitmask (N_int) - - - Bitmask to include all possible MOs - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`mo_class` - * :c:data:`mo_num` - * :c:data:`n_int` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`cas_bitmask` - * :c:data:`fock_operator_closed_shell_ref_bitmask` - * :c:data:`fock_wee_closed_shell` - * :c:data:`full_ijkl_bitmask_4` - * :c:data:`generators_bitmask` - * :c:data:`generators_bitmask_restart` - - -.. c:var:: full_ijkl_bitmask_4 - - - File : :file:`bitmask/bitmasks.irp.f` - - .. code:: fortran - - integer(bit_kind), allocatable :: full_ijkl_bitmask_4 (N_int,4) - - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`full_ijkl_bitmask` - * :c:data:`n_int` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`mo_two_e_integrals_erf_in_map` - * :c:data:`mo_two_e_integrals_in_map` - - -.. c:var:: generators_bitmask - - - File : :file:`bitmask/bitmasks.irp.f` - - .. code:: fortran - - integer(bit_kind), allocatable :: generators_bitmask (N_int,2,6,N_generators_bitmask) - - - Bitmasks for generator determinants. - (N_int, alpha/beta, hole/particle, generator). - - 3rd index is : - - * 1 : hole for single exc - - * 2 : particle for single exc - - * 3 : hole for 1st exc of double - - * 4 : particle for 1st exc of double - - * 5 : hole for 2nd exc of double - - * 6 : particle for 2nd exc of double - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ezfio_filename` - * :c:data:`full_ijkl_bitmask` - * :c:data:`mpi_master` - * :c:data:`n_generators_bitmask` - * :c:data:`n_int` - - - -.. c:var:: generators_bitmask_restart - - - File : :file:`bitmask/bitmasks.irp.f` - - .. code:: fortran - - integer(bit_kind), allocatable :: generators_bitmask_restart (N_int,2,6,N_generators_bitmask_restart) - - - Bitmasks for generator determinants. - (N_int, alpha/beta, hole/particle, generator). - - 3rd index is : - - * 1 : hole for single exc - - * 2 : particle for single exc - - * 3 : hole for 1st exc of double - - * 4 : particle for 1st exc of double - - * 5 : hole for 2nd exc of double - - * 6 : particle for 2nd exc of double - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ezfio_filename` - * :c:data:`full_ijkl_bitmask` - * :c:data:`mpi_master` - * :c:data:`n_generators_bitmask` - * :c:data:`n_generators_bitmask_restart` - * :c:data:`n_int` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`cas_bitmask` - - -.. c:var:: hf_bitmask - - - File : :file:`bitmask/bitmasks.irp.f` - - .. code:: fortran - - integer(bit_kind), allocatable :: hf_bitmask (N_int,2) - - - Hartree Fock bit mask - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`elec_alpha_num` - * :c:data:`elec_beta_num` - * :c:data:`n_int` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`cas_bitmask` - * :c:data:`degree_max_generators` - * :c:data:`double_exc_bitmask` - * :c:data:`max_degree_exc` - * :c:data:`psi_cas` - * :c:data:`psi_det` - * :c:data:`ref_bitmask` - * :c:data:`single_exc_bitmask` - * :c:data:`unpaired_alpha_electrons` - - -.. c:var:: i_bitmask_gen - - - File : :file:`bitmask/bitmasks.irp.f` - - .. code:: fortran - - integer :: i_bitmask_gen - - - Current bitmask for the generators - - - -.. c:var:: inact_bitmask - - - File : :file:`bitmask/core_inact_act_virt.irp.f` - - .. code:: fortran - - integer, allocatable :: list_inact (dim_list_inact_orb) - integer, allocatable :: list_virt (dim_list_virt_orb) - integer, allocatable :: list_inact_reverse (mo_num) - integer, allocatable :: list_virt_reverse (mo_num) - integer, allocatable :: list_del_reverse (mo_num) - integer, allocatable :: list_del (mo_num) - integer, allocatable :: list_core (dim_list_core_orb) - integer, allocatable :: list_core_reverse (mo_num) - integer, allocatable :: list_act (dim_list_act_orb) - integer, allocatable :: list_act_reverse (mo_num) - integer(bit_kind), allocatable :: core_bitmask (N_int,2) - integer(bit_kind), allocatable :: inact_bitmask (N_int,2) - integer(bit_kind), allocatable :: act_bitmask (N_int,2) - integer(bit_kind), allocatable :: virt_bitmask (N_int,2) - integer(bit_kind), allocatable :: del_bitmask (N_int,2) - - - inact_bitmask : Bitmask of the inactive orbitals which are supposed to be doubly excited - in post CAS methods - n_inact_orb : Number of inactive orbitals - virt_bitmask : Bitmaks of vritual orbitals which are supposed to be recieve electrons - in post CAS methods - n_virt_orb : Number of virtual orbitals - list_inact : List of the inactive orbitals which are supposed to be doubly excited - in post CAS methods - list_virt : List of vritual orbitals which are supposed to be recieve electrons - in post CAS methods - list_inact_reverse : reverse list of inactive orbitals - list_inact_reverse(i) = 0 ::> not an inactive - list_inact_reverse(i) = k ::> IS the kth inactive - list_virt_reverse : reverse list of virtual orbitals - list_virt_reverse(i) = 0 ::> not an virtual - list_virt_reverse(i) = k ::> IS the kth virtual - list_act(i) = index of the ith active orbital - - list_act_reverse : reverse list of active orbitals - list_act_reverse(i) = 0 ::> not an active - list_act_reverse(i) = k ::> IS the kth active orbital - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`dim_list_core_orb` - * :c:data:`mo_class` - * :c:data:`mo_num` - * :c:data:`n_core_orb` - * :c:data:`n_int` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`core_energy` - * :c:data:`core_energy_erf` - * :c:data:`core_fock_operator` - * :c:data:`core_fock_operator_erf` - * :c:data:`eigenvectors_fock_matrix_mo` - * :c:data:`fock_matrix_mo` - * :c:data:`inact_virt_bitmask` - * :c:data:`list_core_inact_act` - * :c:data:`mo_two_e_integrals_in_map` - * :c:data:`mo_two_e_integrals_vv_from_ao` - * :c:data:`reunion_of_bitmask` - * :c:data:`reunion_of_cas_inact_bitmask` - * :c:data:`reunion_of_core_inact_bitmask` - * :c:data:`virt_bitmask_4` - - -.. c:var:: inact_virt_bitmask - - - File : :file:`bitmask/bitmasks.irp.f` - - .. code:: fortran - - integer(bit_kind), allocatable :: inact_virt_bitmask (N_int,2) - integer(bit_kind), allocatable :: core_inact_virt_bitmask (N_int,2) - - - Reunion of the inactive and virtual bitmasks - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`list_inact` - * :c:data:`n_int` - - - -.. c:var:: index_holes_bitmask - - - File : :file:`bitmask/modify_bitmasks.irp.f` - - .. code:: fortran - - integer, allocatable :: index_holes_bitmask (3) - - - Index of the holes in the generators_bitmasks - - - -.. c:var:: index_particl_bitmask - - - File : :file:`bitmask/modify_bitmasks.irp.f` - - .. code:: fortran - - integer, allocatable :: index_particl_bitmask (3) - - - Index of the holes in the generators_bitmasks - - - -.. c:var:: list_act - - - File : :file:`bitmask/core_inact_act_virt.irp.f` - - .. code:: fortran - - integer, allocatable :: list_inact (dim_list_inact_orb) - integer, allocatable :: list_virt (dim_list_virt_orb) - integer, allocatable :: list_inact_reverse (mo_num) - integer, allocatable :: list_virt_reverse (mo_num) - integer, allocatable :: list_del_reverse (mo_num) - integer, allocatable :: list_del (mo_num) - integer, allocatable :: list_core (dim_list_core_orb) - integer, allocatable :: list_core_reverse (mo_num) - integer, allocatable :: list_act (dim_list_act_orb) - integer, allocatable :: list_act_reverse (mo_num) - integer(bit_kind), allocatable :: core_bitmask (N_int,2) - integer(bit_kind), allocatable :: inact_bitmask (N_int,2) - integer(bit_kind), allocatable :: act_bitmask (N_int,2) - integer(bit_kind), allocatable :: virt_bitmask (N_int,2) - integer(bit_kind), allocatable :: del_bitmask (N_int,2) - - - inact_bitmask : Bitmask of the inactive orbitals which are supposed to be doubly excited - in post CAS methods - n_inact_orb : Number of inactive orbitals - virt_bitmask : Bitmaks of vritual orbitals which are supposed to be recieve electrons - in post CAS methods - n_virt_orb : Number of virtual orbitals - list_inact : List of the inactive orbitals which are supposed to be doubly excited - in post CAS methods - list_virt : List of vritual orbitals which are supposed to be recieve electrons - in post CAS methods - list_inact_reverse : reverse list of inactive orbitals - list_inact_reverse(i) = 0 ::> not an inactive - list_inact_reverse(i) = k ::> IS the kth inactive - list_virt_reverse : reverse list of virtual orbitals - list_virt_reverse(i) = 0 ::> not an virtual - list_virt_reverse(i) = k ::> IS the kth virtual - list_act(i) = index of the ith active orbital - - list_act_reverse : reverse list of active orbitals - list_act_reverse(i) = 0 ::> not an active - list_act_reverse(i) = k ::> IS the kth active orbital - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`dim_list_core_orb` - * :c:data:`mo_class` - * :c:data:`mo_num` - * :c:data:`n_core_orb` - * :c:data:`n_int` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`core_energy` - * :c:data:`core_energy_erf` - * :c:data:`core_fock_operator` - * :c:data:`core_fock_operator_erf` - * :c:data:`eigenvectors_fock_matrix_mo` - * :c:data:`fock_matrix_mo` - * :c:data:`inact_virt_bitmask` - * :c:data:`list_core_inact_act` - * :c:data:`mo_two_e_integrals_in_map` - * :c:data:`mo_two_e_integrals_vv_from_ao` - * :c:data:`reunion_of_bitmask` - * :c:data:`reunion_of_cas_inact_bitmask` - * :c:data:`reunion_of_core_inact_bitmask` - * :c:data:`virt_bitmask_4` - - -.. c:var:: list_act_reverse - - - File : :file:`bitmask/core_inact_act_virt.irp.f` - - .. code:: fortran - - integer, allocatable :: list_inact (dim_list_inact_orb) - integer, allocatable :: list_virt (dim_list_virt_orb) - integer, allocatable :: list_inact_reverse (mo_num) - integer, allocatable :: list_virt_reverse (mo_num) - integer, allocatable :: list_del_reverse (mo_num) - integer, allocatable :: list_del (mo_num) - integer, allocatable :: list_core (dim_list_core_orb) - integer, allocatable :: list_core_reverse (mo_num) - integer, allocatable :: list_act (dim_list_act_orb) - integer, allocatable :: list_act_reverse (mo_num) - integer(bit_kind), allocatable :: core_bitmask (N_int,2) - integer(bit_kind), allocatable :: inact_bitmask (N_int,2) - integer(bit_kind), allocatable :: act_bitmask (N_int,2) - integer(bit_kind), allocatable :: virt_bitmask (N_int,2) - integer(bit_kind), allocatable :: del_bitmask (N_int,2) - - - inact_bitmask : Bitmask of the inactive orbitals which are supposed to be doubly excited - in post CAS methods - n_inact_orb : Number of inactive orbitals - virt_bitmask : Bitmaks of vritual orbitals which are supposed to be recieve electrons - in post CAS methods - n_virt_orb : Number of virtual orbitals - list_inact : List of the inactive orbitals which are supposed to be doubly excited - in post CAS methods - list_virt : List of vritual orbitals which are supposed to be recieve electrons - in post CAS methods - list_inact_reverse : reverse list of inactive orbitals - list_inact_reverse(i) = 0 ::> not an inactive - list_inact_reverse(i) = k ::> IS the kth inactive - list_virt_reverse : reverse list of virtual orbitals - list_virt_reverse(i) = 0 ::> not an virtual - list_virt_reverse(i) = k ::> IS the kth virtual - list_act(i) = index of the ith active orbital - - list_act_reverse : reverse list of active orbitals - list_act_reverse(i) = 0 ::> not an active - list_act_reverse(i) = k ::> IS the kth active orbital - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`dim_list_core_orb` - * :c:data:`mo_class` - * :c:data:`mo_num` - * :c:data:`n_core_orb` - * :c:data:`n_int` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`core_energy` - * :c:data:`core_energy_erf` - * :c:data:`core_fock_operator` - * :c:data:`core_fock_operator_erf` - * :c:data:`eigenvectors_fock_matrix_mo` - * :c:data:`fock_matrix_mo` - * :c:data:`inact_virt_bitmask` - * :c:data:`list_core_inact_act` - * :c:data:`mo_two_e_integrals_in_map` - * :c:data:`mo_two_e_integrals_vv_from_ao` - * :c:data:`reunion_of_bitmask` - * :c:data:`reunion_of_cas_inact_bitmask` - * :c:data:`reunion_of_core_inact_bitmask` - * :c:data:`virt_bitmask_4` - - -.. c:var:: list_core - - - File : :file:`bitmask/core_inact_act_virt.irp.f` - - .. code:: fortran - - integer, allocatable :: list_inact (dim_list_inact_orb) - integer, allocatable :: list_virt (dim_list_virt_orb) - integer, allocatable :: list_inact_reverse (mo_num) - integer, allocatable :: list_virt_reverse (mo_num) - integer, allocatable :: list_del_reverse (mo_num) - integer, allocatable :: list_del (mo_num) - integer, allocatable :: list_core (dim_list_core_orb) - integer, allocatable :: list_core_reverse (mo_num) - integer, allocatable :: list_act (dim_list_act_orb) - integer, allocatable :: list_act_reverse (mo_num) - integer(bit_kind), allocatable :: core_bitmask (N_int,2) - integer(bit_kind), allocatable :: inact_bitmask (N_int,2) - integer(bit_kind), allocatable :: act_bitmask (N_int,2) - integer(bit_kind), allocatable :: virt_bitmask (N_int,2) - integer(bit_kind), allocatable :: del_bitmask (N_int,2) - - - inact_bitmask : Bitmask of the inactive orbitals which are supposed to be doubly excited - in post CAS methods - n_inact_orb : Number of inactive orbitals - virt_bitmask : Bitmaks of vritual orbitals which are supposed to be recieve electrons - in post CAS methods - n_virt_orb : Number of virtual orbitals - list_inact : List of the inactive orbitals which are supposed to be doubly excited - in post CAS methods - list_virt : List of vritual orbitals which are supposed to be recieve electrons - in post CAS methods - list_inact_reverse : reverse list of inactive orbitals - list_inact_reverse(i) = 0 ::> not an inactive - list_inact_reverse(i) = k ::> IS the kth inactive - list_virt_reverse : reverse list of virtual orbitals - list_virt_reverse(i) = 0 ::> not an virtual - list_virt_reverse(i) = k ::> IS the kth virtual - list_act(i) = index of the ith active orbital - - list_act_reverse : reverse list of active orbitals - list_act_reverse(i) = 0 ::> not an active - list_act_reverse(i) = k ::> IS the kth active orbital - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`dim_list_core_orb` - * :c:data:`mo_class` - * :c:data:`mo_num` - * :c:data:`n_core_orb` - * :c:data:`n_int` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`core_energy` - * :c:data:`core_energy_erf` - * :c:data:`core_fock_operator` - * :c:data:`core_fock_operator_erf` - * :c:data:`eigenvectors_fock_matrix_mo` - * :c:data:`fock_matrix_mo` - * :c:data:`inact_virt_bitmask` - * :c:data:`list_core_inact_act` - * :c:data:`mo_two_e_integrals_in_map` - * :c:data:`mo_two_e_integrals_vv_from_ao` - * :c:data:`reunion_of_bitmask` - * :c:data:`reunion_of_cas_inact_bitmask` - * :c:data:`reunion_of_core_inact_bitmask` - * :c:data:`virt_bitmask_4` - - -.. c:var:: list_core_inact_act - - - File : :file:`bitmask/bitmasks.irp.f` - - .. code:: fortran - - integer, allocatable :: list_core_inact_act (n_core_inact_act_orb) - integer, allocatable :: list_core_inact_act_reverse (mo_num) - - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`list_inact` - * :c:data:`mo_num` - * :c:data:`n_int` - * :c:data:`reunion_of_core_inact_act_bitmask` - - - -.. c:var:: list_core_inact_act_reverse - - - File : :file:`bitmask/bitmasks.irp.f` - - .. code:: fortran - - integer, allocatable :: list_core_inact_act (n_core_inact_act_orb) - integer, allocatable :: list_core_inact_act_reverse (mo_num) - - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`list_inact` - * :c:data:`mo_num` - * :c:data:`n_int` - * :c:data:`reunion_of_core_inact_act_bitmask` - - - -.. c:var:: list_core_reverse - - - File : :file:`bitmask/core_inact_act_virt.irp.f` - - .. code:: fortran - - integer, allocatable :: list_inact (dim_list_inact_orb) - integer, allocatable :: list_virt (dim_list_virt_orb) - integer, allocatable :: list_inact_reverse (mo_num) - integer, allocatable :: list_virt_reverse (mo_num) - integer, allocatable :: list_del_reverse (mo_num) - integer, allocatable :: list_del (mo_num) - integer, allocatable :: list_core (dim_list_core_orb) - integer, allocatable :: list_core_reverse (mo_num) - integer, allocatable :: list_act (dim_list_act_orb) - integer, allocatable :: list_act_reverse (mo_num) - integer(bit_kind), allocatable :: core_bitmask (N_int,2) - integer(bit_kind), allocatable :: inact_bitmask (N_int,2) - integer(bit_kind), allocatable :: act_bitmask (N_int,2) - integer(bit_kind), allocatable :: virt_bitmask (N_int,2) - integer(bit_kind), allocatable :: del_bitmask (N_int,2) - - - inact_bitmask : Bitmask of the inactive orbitals which are supposed to be doubly excited - in post CAS methods - n_inact_orb : Number of inactive orbitals - virt_bitmask : Bitmaks of vritual orbitals which are supposed to be recieve electrons - in post CAS methods - n_virt_orb : Number of virtual orbitals - list_inact : List of the inactive orbitals which are supposed to be doubly excited - in post CAS methods - list_virt : List of vritual orbitals which are supposed to be recieve electrons - in post CAS methods - list_inact_reverse : reverse list of inactive orbitals - list_inact_reverse(i) = 0 ::> not an inactive - list_inact_reverse(i) = k ::> IS the kth inactive - list_virt_reverse : reverse list of virtual orbitals - list_virt_reverse(i) = 0 ::> not an virtual - list_virt_reverse(i) = k ::> IS the kth virtual - list_act(i) = index of the ith active orbital - - list_act_reverse : reverse list of active orbitals - list_act_reverse(i) = 0 ::> not an active - list_act_reverse(i) = k ::> IS the kth active orbital - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`dim_list_core_orb` - * :c:data:`mo_class` - * :c:data:`mo_num` - * :c:data:`n_core_orb` - * :c:data:`n_int` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`core_energy` - * :c:data:`core_energy_erf` - * :c:data:`core_fock_operator` - * :c:data:`core_fock_operator_erf` - * :c:data:`eigenvectors_fock_matrix_mo` - * :c:data:`fock_matrix_mo` - * :c:data:`inact_virt_bitmask` - * :c:data:`list_core_inact_act` - * :c:data:`mo_two_e_integrals_in_map` - * :c:data:`mo_two_e_integrals_vv_from_ao` - * :c:data:`reunion_of_bitmask` - * :c:data:`reunion_of_cas_inact_bitmask` - * :c:data:`reunion_of_core_inact_bitmask` - * :c:data:`virt_bitmask_4` - - -.. c:var:: list_del - - - File : :file:`bitmask/core_inact_act_virt.irp.f` - - .. code:: fortran - - integer, allocatable :: list_inact (dim_list_inact_orb) - integer, allocatable :: list_virt (dim_list_virt_orb) - integer, allocatable :: list_inact_reverse (mo_num) - integer, allocatable :: list_virt_reverse (mo_num) - integer, allocatable :: list_del_reverse (mo_num) - integer, allocatable :: list_del (mo_num) - integer, allocatable :: list_core (dim_list_core_orb) - integer, allocatable :: list_core_reverse (mo_num) - integer, allocatable :: list_act (dim_list_act_orb) - integer, allocatable :: list_act_reverse (mo_num) - integer(bit_kind), allocatable :: core_bitmask (N_int,2) - integer(bit_kind), allocatable :: inact_bitmask (N_int,2) - integer(bit_kind), allocatable :: act_bitmask (N_int,2) - integer(bit_kind), allocatable :: virt_bitmask (N_int,2) - integer(bit_kind), allocatable :: del_bitmask (N_int,2) - - - inact_bitmask : Bitmask of the inactive orbitals which are supposed to be doubly excited - in post CAS methods - n_inact_orb : Number of inactive orbitals - virt_bitmask : Bitmaks of vritual orbitals which are supposed to be recieve electrons - in post CAS methods - n_virt_orb : Number of virtual orbitals - list_inact : List of the inactive orbitals which are supposed to be doubly excited - in post CAS methods - list_virt : List of vritual orbitals which are supposed to be recieve electrons - in post CAS methods - list_inact_reverse : reverse list of inactive orbitals - list_inact_reverse(i) = 0 ::> not an inactive - list_inact_reverse(i) = k ::> IS the kth inactive - list_virt_reverse : reverse list of virtual orbitals - list_virt_reverse(i) = 0 ::> not an virtual - list_virt_reverse(i) = k ::> IS the kth virtual - list_act(i) = index of the ith active orbital - - list_act_reverse : reverse list of active orbitals - list_act_reverse(i) = 0 ::> not an active - list_act_reverse(i) = k ::> IS the kth active orbital - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`dim_list_core_orb` - * :c:data:`mo_class` - * :c:data:`mo_num` - * :c:data:`n_core_orb` - * :c:data:`n_int` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`core_energy` - * :c:data:`core_energy_erf` - * :c:data:`core_fock_operator` - * :c:data:`core_fock_operator_erf` - * :c:data:`eigenvectors_fock_matrix_mo` - * :c:data:`fock_matrix_mo` - * :c:data:`inact_virt_bitmask` - * :c:data:`list_core_inact_act` - * :c:data:`mo_two_e_integrals_in_map` - * :c:data:`mo_two_e_integrals_vv_from_ao` - * :c:data:`reunion_of_bitmask` - * :c:data:`reunion_of_cas_inact_bitmask` - * :c:data:`reunion_of_core_inact_bitmask` - * :c:data:`virt_bitmask_4` - - -.. c:var:: list_del_reverse - - - File : :file:`bitmask/core_inact_act_virt.irp.f` - - .. code:: fortran - - integer, allocatable :: list_inact (dim_list_inact_orb) - integer, allocatable :: list_virt (dim_list_virt_orb) - integer, allocatable :: list_inact_reverse (mo_num) - integer, allocatable :: list_virt_reverse (mo_num) - integer, allocatable :: list_del_reverse (mo_num) - integer, allocatable :: list_del (mo_num) - integer, allocatable :: list_core (dim_list_core_orb) - integer, allocatable :: list_core_reverse (mo_num) - integer, allocatable :: list_act (dim_list_act_orb) - integer, allocatable :: list_act_reverse (mo_num) - integer(bit_kind), allocatable :: core_bitmask (N_int,2) - integer(bit_kind), allocatable :: inact_bitmask (N_int,2) - integer(bit_kind), allocatable :: act_bitmask (N_int,2) - integer(bit_kind), allocatable :: virt_bitmask (N_int,2) - integer(bit_kind), allocatable :: del_bitmask (N_int,2) - - - inact_bitmask : Bitmask of the inactive orbitals which are supposed to be doubly excited - in post CAS methods - n_inact_orb : Number of inactive orbitals - virt_bitmask : Bitmaks of vritual orbitals which are supposed to be recieve electrons - in post CAS methods - n_virt_orb : Number of virtual orbitals - list_inact : List of the inactive orbitals which are supposed to be doubly excited - in post CAS methods - list_virt : List of vritual orbitals which are supposed to be recieve electrons - in post CAS methods - list_inact_reverse : reverse list of inactive orbitals - list_inact_reverse(i) = 0 ::> not an inactive - list_inact_reverse(i) = k ::> IS the kth inactive - list_virt_reverse : reverse list of virtual orbitals - list_virt_reverse(i) = 0 ::> not an virtual - list_virt_reverse(i) = k ::> IS the kth virtual - list_act(i) = index of the ith active orbital - - list_act_reverse : reverse list of active orbitals - list_act_reverse(i) = 0 ::> not an active - list_act_reverse(i) = k ::> IS the kth active orbital - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`dim_list_core_orb` - * :c:data:`mo_class` - * :c:data:`mo_num` - * :c:data:`n_core_orb` - * :c:data:`n_int` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`core_energy` - * :c:data:`core_energy_erf` - * :c:data:`core_fock_operator` - * :c:data:`core_fock_operator_erf` - * :c:data:`eigenvectors_fock_matrix_mo` - * :c:data:`fock_matrix_mo` - * :c:data:`inact_virt_bitmask` - * :c:data:`list_core_inact_act` - * :c:data:`mo_two_e_integrals_in_map` - * :c:data:`mo_two_e_integrals_vv_from_ao` - * :c:data:`reunion_of_bitmask` - * :c:data:`reunion_of_cas_inact_bitmask` - * :c:data:`reunion_of_core_inact_bitmask` - * :c:data:`virt_bitmask_4` - - -.. c:var:: list_inact - - - File : :file:`bitmask/core_inact_act_virt.irp.f` - - .. code:: fortran - - integer, allocatable :: list_inact (dim_list_inact_orb) - integer, allocatable :: list_virt (dim_list_virt_orb) - integer, allocatable :: list_inact_reverse (mo_num) - integer, allocatable :: list_virt_reverse (mo_num) - integer, allocatable :: list_del_reverse (mo_num) - integer, allocatable :: list_del (mo_num) - integer, allocatable :: list_core (dim_list_core_orb) - integer, allocatable :: list_core_reverse (mo_num) - integer, allocatable :: list_act (dim_list_act_orb) - integer, allocatable :: list_act_reverse (mo_num) - integer(bit_kind), allocatable :: core_bitmask (N_int,2) - integer(bit_kind), allocatable :: inact_bitmask (N_int,2) - integer(bit_kind), allocatable :: act_bitmask (N_int,2) - integer(bit_kind), allocatable :: virt_bitmask (N_int,2) - integer(bit_kind), allocatable :: del_bitmask (N_int,2) - - - inact_bitmask : Bitmask of the inactive orbitals which are supposed to be doubly excited - in post CAS methods - n_inact_orb : Number of inactive orbitals - virt_bitmask : Bitmaks of vritual orbitals which are supposed to be recieve electrons - in post CAS methods - n_virt_orb : Number of virtual orbitals - list_inact : List of the inactive orbitals which are supposed to be doubly excited - in post CAS methods - list_virt : List of vritual orbitals which are supposed to be recieve electrons - in post CAS methods - list_inact_reverse : reverse list of inactive orbitals - list_inact_reverse(i) = 0 ::> not an inactive - list_inact_reverse(i) = k ::> IS the kth inactive - list_virt_reverse : reverse list of virtual orbitals - list_virt_reverse(i) = 0 ::> not an virtual - list_virt_reverse(i) = k ::> IS the kth virtual - list_act(i) = index of the ith active orbital - - list_act_reverse : reverse list of active orbitals - list_act_reverse(i) = 0 ::> not an active - list_act_reverse(i) = k ::> IS the kth active orbital - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`dim_list_core_orb` - * :c:data:`mo_class` - * :c:data:`mo_num` - * :c:data:`n_core_orb` - * :c:data:`n_int` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`core_energy` - * :c:data:`core_energy_erf` - * :c:data:`core_fock_operator` - * :c:data:`core_fock_operator_erf` - * :c:data:`eigenvectors_fock_matrix_mo` - * :c:data:`fock_matrix_mo` - * :c:data:`inact_virt_bitmask` - * :c:data:`list_core_inact_act` - * :c:data:`mo_two_e_integrals_in_map` - * :c:data:`mo_two_e_integrals_vv_from_ao` - * :c:data:`reunion_of_bitmask` - * :c:data:`reunion_of_cas_inact_bitmask` - * :c:data:`reunion_of_core_inact_bitmask` - * :c:data:`virt_bitmask_4` - - -.. c:var:: list_inact_reverse - - - File : :file:`bitmask/core_inact_act_virt.irp.f` - - .. code:: fortran - - integer, allocatable :: list_inact (dim_list_inact_orb) - integer, allocatable :: list_virt (dim_list_virt_orb) - integer, allocatable :: list_inact_reverse (mo_num) - integer, allocatable :: list_virt_reverse (mo_num) - integer, allocatable :: list_del_reverse (mo_num) - integer, allocatable :: list_del (mo_num) - integer, allocatable :: list_core (dim_list_core_orb) - integer, allocatable :: list_core_reverse (mo_num) - integer, allocatable :: list_act (dim_list_act_orb) - integer, allocatable :: list_act_reverse (mo_num) - integer(bit_kind), allocatable :: core_bitmask (N_int,2) - integer(bit_kind), allocatable :: inact_bitmask (N_int,2) - integer(bit_kind), allocatable :: act_bitmask (N_int,2) - integer(bit_kind), allocatable :: virt_bitmask (N_int,2) - integer(bit_kind), allocatable :: del_bitmask (N_int,2) - - - inact_bitmask : Bitmask of the inactive orbitals which are supposed to be doubly excited - in post CAS methods - n_inact_orb : Number of inactive orbitals - virt_bitmask : Bitmaks of vritual orbitals which are supposed to be recieve electrons - in post CAS methods - n_virt_orb : Number of virtual orbitals - list_inact : List of the inactive orbitals which are supposed to be doubly excited - in post CAS methods - list_virt : List of vritual orbitals which are supposed to be recieve electrons - in post CAS methods - list_inact_reverse : reverse list of inactive orbitals - list_inact_reverse(i) = 0 ::> not an inactive - list_inact_reverse(i) = k ::> IS the kth inactive - list_virt_reverse : reverse list of virtual orbitals - list_virt_reverse(i) = 0 ::> not an virtual - list_virt_reverse(i) = k ::> IS the kth virtual - list_act(i) = index of the ith active orbital - - list_act_reverse : reverse list of active orbitals - list_act_reverse(i) = 0 ::> not an active - list_act_reverse(i) = k ::> IS the kth active orbital - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`dim_list_core_orb` - * :c:data:`mo_class` - * :c:data:`mo_num` - * :c:data:`n_core_orb` - * :c:data:`n_int` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`core_energy` - * :c:data:`core_energy_erf` - * :c:data:`core_fock_operator` - * :c:data:`core_fock_operator_erf` - * :c:data:`eigenvectors_fock_matrix_mo` - * :c:data:`fock_matrix_mo` - * :c:data:`inact_virt_bitmask` - * :c:data:`list_core_inact_act` - * :c:data:`mo_two_e_integrals_in_map` - * :c:data:`mo_two_e_integrals_vv_from_ao` - * :c:data:`reunion_of_bitmask` - * :c:data:`reunion_of_cas_inact_bitmask` - * :c:data:`reunion_of_core_inact_bitmask` - * :c:data:`virt_bitmask_4` - - -.. c:var:: list_virt - - - File : :file:`bitmask/core_inact_act_virt.irp.f` - - .. code:: fortran - - integer, allocatable :: list_inact (dim_list_inact_orb) - integer, allocatable :: list_virt (dim_list_virt_orb) - integer, allocatable :: list_inact_reverse (mo_num) - integer, allocatable :: list_virt_reverse (mo_num) - integer, allocatable :: list_del_reverse (mo_num) - integer, allocatable :: list_del (mo_num) - integer, allocatable :: list_core (dim_list_core_orb) - integer, allocatable :: list_core_reverse (mo_num) - integer, allocatable :: list_act (dim_list_act_orb) - integer, allocatable :: list_act_reverse (mo_num) - integer(bit_kind), allocatable :: core_bitmask (N_int,2) - integer(bit_kind), allocatable :: inact_bitmask (N_int,2) - integer(bit_kind), allocatable :: act_bitmask (N_int,2) - integer(bit_kind), allocatable :: virt_bitmask (N_int,2) - integer(bit_kind), allocatable :: del_bitmask (N_int,2) - - - inact_bitmask : Bitmask of the inactive orbitals which are supposed to be doubly excited - in post CAS methods - n_inact_orb : Number of inactive orbitals - virt_bitmask : Bitmaks of vritual orbitals which are supposed to be recieve electrons - in post CAS methods - n_virt_orb : Number of virtual orbitals - list_inact : List of the inactive orbitals which are supposed to be doubly excited - in post CAS methods - list_virt : List of vritual orbitals which are supposed to be recieve electrons - in post CAS methods - list_inact_reverse : reverse list of inactive orbitals - list_inact_reverse(i) = 0 ::> not an inactive - list_inact_reverse(i) = k ::> IS the kth inactive - list_virt_reverse : reverse list of virtual orbitals - list_virt_reverse(i) = 0 ::> not an virtual - list_virt_reverse(i) = k ::> IS the kth virtual - list_act(i) = index of the ith active orbital - - list_act_reverse : reverse list of active orbitals - list_act_reverse(i) = 0 ::> not an active - list_act_reverse(i) = k ::> IS the kth active orbital - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`dim_list_core_orb` - * :c:data:`mo_class` - * :c:data:`mo_num` - * :c:data:`n_core_orb` - * :c:data:`n_int` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`core_energy` - * :c:data:`core_energy_erf` - * :c:data:`core_fock_operator` - * :c:data:`core_fock_operator_erf` - * :c:data:`eigenvectors_fock_matrix_mo` - * :c:data:`fock_matrix_mo` - * :c:data:`inact_virt_bitmask` - * :c:data:`list_core_inact_act` - * :c:data:`mo_two_e_integrals_in_map` - * :c:data:`mo_two_e_integrals_vv_from_ao` - * :c:data:`reunion_of_bitmask` - * :c:data:`reunion_of_cas_inact_bitmask` - * :c:data:`reunion_of_core_inact_bitmask` - * :c:data:`virt_bitmask_4` - - -.. c:var:: list_virt_reverse - - - File : :file:`bitmask/core_inact_act_virt.irp.f` - - .. code:: fortran - - integer, allocatable :: list_inact (dim_list_inact_orb) - integer, allocatable :: list_virt (dim_list_virt_orb) - integer, allocatable :: list_inact_reverse (mo_num) - integer, allocatable :: list_virt_reverse (mo_num) - integer, allocatable :: list_del_reverse (mo_num) - integer, allocatable :: list_del (mo_num) - integer, allocatable :: list_core (dim_list_core_orb) - integer, allocatable :: list_core_reverse (mo_num) - integer, allocatable :: list_act (dim_list_act_orb) - integer, allocatable :: list_act_reverse (mo_num) - integer(bit_kind), allocatable :: core_bitmask (N_int,2) - integer(bit_kind), allocatable :: inact_bitmask (N_int,2) - integer(bit_kind), allocatable :: act_bitmask (N_int,2) - integer(bit_kind), allocatable :: virt_bitmask (N_int,2) - integer(bit_kind), allocatable :: del_bitmask (N_int,2) - - - inact_bitmask : Bitmask of the inactive orbitals which are supposed to be doubly excited - in post CAS methods - n_inact_orb : Number of inactive orbitals - virt_bitmask : Bitmaks of vritual orbitals which are supposed to be recieve electrons - in post CAS methods - n_virt_orb : Number of virtual orbitals - list_inact : List of the inactive orbitals which are supposed to be doubly excited - in post CAS methods - list_virt : List of vritual orbitals which are supposed to be recieve electrons - in post CAS methods - list_inact_reverse : reverse list of inactive orbitals - list_inact_reverse(i) = 0 ::> not an inactive - list_inact_reverse(i) = k ::> IS the kth inactive - list_virt_reverse : reverse list of virtual orbitals - list_virt_reverse(i) = 0 ::> not an virtual - list_virt_reverse(i) = k ::> IS the kth virtual - list_act(i) = index of the ith active orbital - - list_act_reverse : reverse list of active orbitals - list_act_reverse(i) = 0 ::> not an active - list_act_reverse(i) = k ::> IS the kth active orbital - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`dim_list_core_orb` - * :c:data:`mo_class` - * :c:data:`mo_num` - * :c:data:`n_core_orb` - * :c:data:`n_int` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`core_energy` - * :c:data:`core_energy_erf` - * :c:data:`core_fock_operator` - * :c:data:`core_fock_operator_erf` - * :c:data:`eigenvectors_fock_matrix_mo` - * :c:data:`fock_matrix_mo` - * :c:data:`inact_virt_bitmask` - * :c:data:`list_core_inact_act` - * :c:data:`mo_two_e_integrals_in_map` - * :c:data:`mo_two_e_integrals_vv_from_ao` - * :c:data:`reunion_of_bitmask` - * :c:data:`reunion_of_cas_inact_bitmask` - * :c:data:`reunion_of_core_inact_bitmask` - * :c:data:`virt_bitmask_4` - - -.. c:var:: mpi_bit_kind - - - File : :file:`bitmask/mpi.irp.f` - - .. code:: fortran - - integer :: mpi_bit_kind - - - MPI bit kind type - - - -.. c:var:: n_act_orb - - - File : :file:`bitmask/core_inact_act_virt.irp.f` - - .. code:: fortran - - integer :: n_core_orb - integer :: n_inact_orb - integer :: n_act_orb - integer :: n_virt_orb - integer :: n_del_orb - - - inact_bitmask : Bitmask of the inactive orbitals which are supposed to be doubly excited - in post CAS methods - n_inact_orb : Number of inactive orbitals - virt_bitmask : Bitmaks of vritual orbitals which are supposed to be recieve electrons - in post CAS methods - n_virt_orb : Number of virtual orbitals - list_inact : List of the inactive orbitals which are supposed to be doubly excited - in post CAS methods - list_virt : List of vritual orbitals which are supposed to be recieve electrons - in post CAS methods - list_inact_reverse : reverse list of inactive orbitals - list_inact_reverse(i) = 0 ::> not an inactive - list_inact_reverse(i) = k ::> IS the kth inactive - list_virt_reverse : reverse list of virtual orbitals - list_virt_reverse(i) = 0 ::> not an virtual - list_virt_reverse(i) = k ::> IS the kth virtual - list_act(i) = index of the ith active orbital - - list_act_reverse : reverse list of active orbitals - list_act_reverse(i) = 0 ::> not an active - list_act_reverse(i) = k ::> IS the kth active orbital - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`mo_class` - * :c:data:`mo_num` - * :c:data:`mpi_master` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`core_energy` - * :c:data:`core_energy_erf` - * :c:data:`core_fock_operator` - * :c:data:`core_fock_operator_erf` - * :c:data:`dim_list_core_orb` - * :c:data:`eigenvectors_fock_matrix_mo` - * :c:data:`fock_matrix_mo` - * :c:data:`list_inact` - * :c:data:`mo_two_e_integrals_vv_from_ao` - * :c:data:`n_core_orb_allocate` - * :c:data:`n_inact_orb_allocate` - * :c:data:`n_virt_orb_allocate` - * :c:data:`pt2_f` - - -.. c:var:: n_cas_bitmask - - - File : :file:`bitmask/bitmasks.irp.f` - - .. code:: fortran - - integer :: n_cas_bitmask - - - Number of bitmasks for CAS - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ezfio_filename` - * :c:data:`mpi_master` - * :c:data:`n_int` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`cas_bitmask` - * :c:data:`psi_cas` - - -.. c:var:: n_core_inact_act_orb - - - File : :file:`bitmask/bitmasks.irp.f` - - .. code:: fortran - - integer(bit_kind), allocatable :: reunion_of_core_inact_act_bitmask (N_int,2) - integer :: n_core_inact_act_orb - - - Reunion of the core, inactive and active bitmasks - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`cas_bitmask` - * :c:data:`n_int` - * :c:data:`reunion_of_core_inact_bitmask` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`core_inact_act_bitmask_4` - * :c:data:`list_core_inact_act` - - -.. c:var:: n_core_inact_orb - - - File : :file:`bitmask/bitmasks.irp.f` - - .. code:: fortran - - integer :: n_core_inact_orb - - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`n_int` - * :c:data:`reunion_of_core_inact_bitmask` - - - -.. c:var:: n_core_orb - - - File : :file:`bitmask/core_inact_act_virt.irp.f` - - .. code:: fortran - - integer :: n_core_orb - integer :: n_inact_orb - integer :: n_act_orb - integer :: n_virt_orb - integer :: n_del_orb - - - inact_bitmask : Bitmask of the inactive orbitals which are supposed to be doubly excited - in post CAS methods - n_inact_orb : Number of inactive orbitals - virt_bitmask : Bitmaks of vritual orbitals which are supposed to be recieve electrons - in post CAS methods - n_virt_orb : Number of virtual orbitals - list_inact : List of the inactive orbitals which are supposed to be doubly excited - in post CAS methods - list_virt : List of vritual orbitals which are supposed to be recieve electrons - in post CAS methods - list_inact_reverse : reverse list of inactive orbitals - list_inact_reverse(i) = 0 ::> not an inactive - list_inact_reverse(i) = k ::> IS the kth inactive - list_virt_reverse : reverse list of virtual orbitals - list_virt_reverse(i) = 0 ::> not an virtual - list_virt_reverse(i) = k ::> IS the kth virtual - list_act(i) = index of the ith active orbital - - list_act_reverse : reverse list of active orbitals - list_act_reverse(i) = 0 ::> not an active - list_act_reverse(i) = k ::> IS the kth active orbital - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`mo_class` - * :c:data:`mo_num` - * :c:data:`mpi_master` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`core_energy` - * :c:data:`core_energy_erf` - * :c:data:`core_fock_operator` - * :c:data:`core_fock_operator_erf` - * :c:data:`dim_list_core_orb` - * :c:data:`eigenvectors_fock_matrix_mo` - * :c:data:`fock_matrix_mo` - * :c:data:`list_inact` - * :c:data:`mo_two_e_integrals_vv_from_ao` - * :c:data:`n_core_orb_allocate` - * :c:data:`n_inact_orb_allocate` - * :c:data:`n_virt_orb_allocate` - * :c:data:`pt2_f` - - -.. c:var:: n_core_orb_allocate - - - File : :file:`bitmask/bitmasks.irp.f` - - .. code:: fortran - - integer :: n_core_orb_allocate - - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`n_core_orb` - - - -.. c:var:: n_del_orb - - - File : :file:`bitmask/core_inact_act_virt.irp.f` - - .. code:: fortran - - integer :: n_core_orb - integer :: n_inact_orb - integer :: n_act_orb - integer :: n_virt_orb - integer :: n_del_orb - - - inact_bitmask : Bitmask of the inactive orbitals which are supposed to be doubly excited - in post CAS methods - n_inact_orb : Number of inactive orbitals - virt_bitmask : Bitmaks of vritual orbitals which are supposed to be recieve electrons - in post CAS methods - n_virt_orb : Number of virtual orbitals - list_inact : List of the inactive orbitals which are supposed to be doubly excited - in post CAS methods - list_virt : List of vritual orbitals which are supposed to be recieve electrons - in post CAS methods - list_inact_reverse : reverse list of inactive orbitals - list_inact_reverse(i) = 0 ::> not an inactive - list_inact_reverse(i) = k ::> IS the kth inactive - list_virt_reverse : reverse list of virtual orbitals - list_virt_reverse(i) = 0 ::> not an virtual - list_virt_reverse(i) = k ::> IS the kth virtual - list_act(i) = index of the ith active orbital - - list_act_reverse : reverse list of active orbitals - list_act_reverse(i) = 0 ::> not an active - list_act_reverse(i) = k ::> IS the kth active orbital - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`mo_class` - * :c:data:`mo_num` - * :c:data:`mpi_master` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`core_energy` - * :c:data:`core_energy_erf` - * :c:data:`core_fock_operator` - * :c:data:`core_fock_operator_erf` - * :c:data:`dim_list_core_orb` - * :c:data:`eigenvectors_fock_matrix_mo` - * :c:data:`fock_matrix_mo` - * :c:data:`list_inact` - * :c:data:`mo_two_e_integrals_vv_from_ao` - * :c:data:`n_core_orb_allocate` - * :c:data:`n_inact_orb_allocate` - * :c:data:`n_virt_orb_allocate` - * :c:data:`pt2_f` - - -.. c:var:: n_generators_bitmask - - - File : :file:`bitmask/bitmasks.irp.f` - - .. code:: fortran - - integer :: n_generators_bitmask - - - Number of bitmasks for generators - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ezfio_filename` - * :c:data:`mpi_master` - * :c:data:`n_int` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`cas_bitmask` - * :c:data:`generators_bitmask` - * :c:data:`generators_bitmask_restart` - - -.. c:var:: n_generators_bitmask_restart - - - File : :file:`bitmask/bitmasks.irp.f` - - .. code:: fortran - - integer :: n_generators_bitmask_restart - - - Number of bitmasks for generators - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ezfio_filename` - * :c:data:`mpi_master` - * :c:data:`n_int` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`generators_bitmask_restart` - - -.. c:var:: n_inact_orb - - - File : :file:`bitmask/core_inact_act_virt.irp.f` - - .. code:: fortran - - integer :: n_core_orb - integer :: n_inact_orb - integer :: n_act_orb - integer :: n_virt_orb - integer :: n_del_orb - - - inact_bitmask : Bitmask of the inactive orbitals which are supposed to be doubly excited - in post CAS methods - n_inact_orb : Number of inactive orbitals - virt_bitmask : Bitmaks of vritual orbitals which are supposed to be recieve electrons - in post CAS methods - n_virt_orb : Number of virtual orbitals - list_inact : List of the inactive orbitals which are supposed to be doubly excited - in post CAS methods - list_virt : List of vritual orbitals which are supposed to be recieve electrons - in post CAS methods - list_inact_reverse : reverse list of inactive orbitals - list_inact_reverse(i) = 0 ::> not an inactive - list_inact_reverse(i) = k ::> IS the kth inactive - list_virt_reverse : reverse list of virtual orbitals - list_virt_reverse(i) = 0 ::> not an virtual - list_virt_reverse(i) = k ::> IS the kth virtual - list_act(i) = index of the ith active orbital - - list_act_reverse : reverse list of active orbitals - list_act_reverse(i) = 0 ::> not an active - list_act_reverse(i) = k ::> IS the kth active orbital - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`mo_class` - * :c:data:`mo_num` - * :c:data:`mpi_master` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`core_energy` - * :c:data:`core_energy_erf` - * :c:data:`core_fock_operator` - * :c:data:`core_fock_operator_erf` - * :c:data:`dim_list_core_orb` - * :c:data:`eigenvectors_fock_matrix_mo` - * :c:data:`fock_matrix_mo` - * :c:data:`list_inact` - * :c:data:`mo_two_e_integrals_vv_from_ao` - * :c:data:`n_core_orb_allocate` - * :c:data:`n_inact_orb_allocate` - * :c:data:`n_virt_orb_allocate` - * :c:data:`pt2_f` - - -.. c:var:: n_inact_orb_allocate - - - File : :file:`bitmask/bitmasks.irp.f` - - .. code:: fortran - - integer :: n_inact_orb_allocate - - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`n_core_orb` - - - -.. c:var:: n_int - - - File : :file:`bitmask/bitmasks.irp.f` - - .. code:: fortran - - integer :: n_int - - - Number of 64-bit integers needed to represent determinants as binary strings - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`mo_num` - * :c:data:`mpi_master` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`cas_bitmask` - * :c:data:`ci_electronic_energy` - * :c:data:`closed_shell_ref_bitmask` - * :c:data:`coef_hf_selector` - * :c:data:`core_inact_act_bitmask_4` - * :c:data:`degree_max_generators` - * :c:data:`det_to_occ_pattern` - * :c:data:`diagonal_h_matrix_on_psi_det` - * :c:data:`double_exc_bitmask` - * :c:data:`exc_degree_per_selectors` - * :c:data:`fock_operator_closed_shell_ref_bitmask` - * :c:data:`fock_wee_closed_shell` - * :c:data:`full_ijkl_bitmask` - * :c:data:`full_ijkl_bitmask_4` - * :c:data:`generators_bitmask` - * :c:data:`generators_bitmask_restart` - * :c:data:`h_apply_buffer_allocated` - * :c:data:`h_matrix_all_dets` - * :c:data:`h_matrix_cas` - * :c:data:`hf_bitmask` - * :c:data:`inact_virt_bitmask` - * :c:data:`list_core_inact_act` - * :c:data:`list_inact` - * :c:data:`max_degree_exc` - * :c:data:`mo_two_e_integrals_erf_in_map` - * :c:data:`mo_two_e_integrals_in_map` - * :c:data:`n_cas_bitmask` - * :c:data:`n_core_inact_orb` - * :c:data:`n_generators_bitmask` - * :c:data:`n_generators_bitmask_restart` - * :c:data:`one_e_dm_mo_alpha` - * :c:data:`psi_bilinear_matrix_values` - * :c:data:`psi_cas` - * :c:data:`psi_cas_sorted_bit` - * :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_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` - * :c:data:`psi_selectors_diag_h_mat` - * :c:data:`ref_bitmask` - * :c:data:`ref_bitmask_energy` - * :c:data:`ref_closed_shell_bitmask` - * :c:data:`reunion_of_bitmask` - * :c:data:`reunion_of_cas_inact_bitmask` - * :c:data:`reunion_of_core_inact_act_bitmask` - * :c:data:`reunion_of_core_inact_bitmask` - * :c:data:`s2_matrix_all_dets` - * :c:data:`s2_values` - * :c:data:`single_exc_bitmask` - * :c:data:`singles_alpha_csc` - * :c:data:`singles_alpha_csc_idx` - * :c:data:`singles_beta_csc` - * :c:data:`singles_beta_csc_idx` - * :c:data:`unpaired_alpha_electrons` - * :c:data:`virt_bitmask_4` - - -.. c:var:: n_virt_orb - - - File : :file:`bitmask/core_inact_act_virt.irp.f` - - .. code:: fortran - - integer :: n_core_orb - integer :: n_inact_orb - integer :: n_act_orb - integer :: n_virt_orb - integer :: n_del_orb - - - inact_bitmask : Bitmask of the inactive orbitals which are supposed to be doubly excited - in post CAS methods - n_inact_orb : Number of inactive orbitals - virt_bitmask : Bitmaks of vritual orbitals which are supposed to be recieve electrons - in post CAS methods - n_virt_orb : Number of virtual orbitals - list_inact : List of the inactive orbitals which are supposed to be doubly excited - in post CAS methods - list_virt : List of vritual orbitals which are supposed to be recieve electrons - in post CAS methods - list_inact_reverse : reverse list of inactive orbitals - list_inact_reverse(i) = 0 ::> not an inactive - list_inact_reverse(i) = k ::> IS the kth inactive - list_virt_reverse : reverse list of virtual orbitals - list_virt_reverse(i) = 0 ::> not an virtual - list_virt_reverse(i) = k ::> IS the kth virtual - list_act(i) = index of the ith active orbital - - list_act_reverse : reverse list of active orbitals - list_act_reverse(i) = 0 ::> not an active - list_act_reverse(i) = k ::> IS the kth active orbital - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`mo_class` - * :c:data:`mo_num` - * :c:data:`mpi_master` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`core_energy` - * :c:data:`core_energy_erf` - * :c:data:`core_fock_operator` - * :c:data:`core_fock_operator_erf` - * :c:data:`dim_list_core_orb` - * :c:data:`eigenvectors_fock_matrix_mo` - * :c:data:`fock_matrix_mo` - * :c:data:`list_inact` - * :c:data:`mo_two_e_integrals_vv_from_ao` - * :c:data:`n_core_orb_allocate` - * :c:data:`n_inact_orb_allocate` - * :c:data:`n_virt_orb_allocate` - * :c:data:`pt2_f` - - -.. c:var:: n_virt_orb_allocate - - - File : :file:`bitmask/bitmasks.irp.f` - - .. code:: fortran - - integer :: n_virt_orb_allocate - - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`n_core_orb` - - - -.. c:var:: ref_bitmask - - - File : :file:`bitmask/bitmasks.irp.f` - - .. code:: fortran - - integer(bit_kind), allocatable :: ref_bitmask (N_int,2) - - - Reference bit mask, used in Slater rules, chosen as Hartree-Fock bitmask - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`hf_bitmask` - * :c:data:`n_int` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`closed_shell_ref_bitmask` - * :c:data:`coef_hf_selector` - * :c:data:`diagonal_h_matrix_on_psi_det` - * :c:data:`exc_degree_per_selectors` - * :c:data:`psi_det_hii` - * :c:data:`psi_selectors_diag_h_mat` - * :c:data:`ref_bitmask_energy` - * :c:data:`ref_closed_shell_bitmask` - - -.. c:var:: reunion_of_bitmask - - - File : :file:`bitmask/bitmasks.irp.f` - - .. code:: fortran - - integer(bit_kind), allocatable :: reunion_of_bitmask (N_int,2) - - - Reunion of the inactive, active and virtual bitmasks - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`cas_bitmask` - * :c:data:`list_inact` - * :c:data:`n_int` - - - -.. c:var:: reunion_of_cas_inact_bitmask - - - File : :file:`bitmask/bitmasks.irp.f` - - .. code:: fortran - - integer(bit_kind), allocatable :: reunion_of_cas_inact_bitmask (N_int,2) - - - Reunion of the inactive, active and virtual bitmasks - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`cas_bitmask` - * :c:data:`list_inact` - * :c:data:`n_int` - - - -.. c:var:: reunion_of_core_inact_act_bitmask - - - File : :file:`bitmask/bitmasks.irp.f` - - .. code:: fortran - - integer(bit_kind), allocatable :: reunion_of_core_inact_act_bitmask (N_int,2) - integer :: n_core_inact_act_orb - - - Reunion of the core, inactive and active bitmasks - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`cas_bitmask` - * :c:data:`n_int` - * :c:data:`reunion_of_core_inact_bitmask` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`core_inact_act_bitmask_4` - * :c:data:`list_core_inact_act` - - -.. c:var:: reunion_of_core_inact_bitmask - - - File : :file:`bitmask/bitmasks.irp.f` - - .. code:: fortran - - integer(bit_kind), allocatable :: reunion_of_core_inact_bitmask (N_int,2) - - - Reunion of the core and inactive and virtual bitmasks - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`list_inact` - * :c:data:`n_int` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`n_core_inact_orb` - * :c:data:`reunion_of_core_inact_act_bitmask` - - -.. c:var:: unpaired_alpha_electrons - - - File : :file:`bitmask/bitmasks.irp.f` - - .. code:: fortran - - integer(bit_kind), allocatable :: unpaired_alpha_electrons (N_int) - - - Bitmask reprenting the unpaired alpha electrons in the HF_bitmask - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`hf_bitmask` - * :c:data:`n_int` - - - -.. c:var:: virt_bitmask - - - File : :file:`bitmask/core_inact_act_virt.irp.f` - - .. code:: fortran - - integer, allocatable :: list_inact (dim_list_inact_orb) - integer, allocatable :: list_virt (dim_list_virt_orb) - integer, allocatable :: list_inact_reverse (mo_num) - integer, allocatable :: list_virt_reverse (mo_num) - integer, allocatable :: list_del_reverse (mo_num) - integer, allocatable :: list_del (mo_num) - integer, allocatable :: list_core (dim_list_core_orb) - integer, allocatable :: list_core_reverse (mo_num) - integer, allocatable :: list_act (dim_list_act_orb) - integer, allocatable :: list_act_reverse (mo_num) - integer(bit_kind), allocatable :: core_bitmask (N_int,2) - integer(bit_kind), allocatable :: inact_bitmask (N_int,2) - integer(bit_kind), allocatable :: act_bitmask (N_int,2) - integer(bit_kind), allocatable :: virt_bitmask (N_int,2) - integer(bit_kind), allocatable :: del_bitmask (N_int,2) - - - inact_bitmask : Bitmask of the inactive orbitals which are supposed to be doubly excited - in post CAS methods - n_inact_orb : Number of inactive orbitals - virt_bitmask : Bitmaks of vritual orbitals which are supposed to be recieve electrons - in post CAS methods - n_virt_orb : Number of virtual orbitals - list_inact : List of the inactive orbitals which are supposed to be doubly excited - in post CAS methods - list_virt : List of vritual orbitals which are supposed to be recieve electrons - in post CAS methods - list_inact_reverse : reverse list of inactive orbitals - list_inact_reverse(i) = 0 ::> not an inactive - list_inact_reverse(i) = k ::> IS the kth inactive - list_virt_reverse : reverse list of virtual orbitals - list_virt_reverse(i) = 0 ::> not an virtual - list_virt_reverse(i) = k ::> IS the kth virtual - list_act(i) = index of the ith active orbital - - list_act_reverse : reverse list of active orbitals - list_act_reverse(i) = 0 ::> not an active - list_act_reverse(i) = k ::> IS the kth active orbital - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`dim_list_core_orb` - * :c:data:`mo_class` - * :c:data:`mo_num` - * :c:data:`n_core_orb` - * :c:data:`n_int` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`core_energy` - * :c:data:`core_energy_erf` - * :c:data:`core_fock_operator` - * :c:data:`core_fock_operator_erf` - * :c:data:`eigenvectors_fock_matrix_mo` - * :c:data:`fock_matrix_mo` - * :c:data:`inact_virt_bitmask` - * :c:data:`list_core_inact_act` - * :c:data:`mo_two_e_integrals_in_map` - * :c:data:`mo_two_e_integrals_vv_from_ao` - * :c:data:`reunion_of_bitmask` - * :c:data:`reunion_of_cas_inact_bitmask` - * :c:data:`reunion_of_core_inact_bitmask` - * :c:data:`virt_bitmask_4` - - -.. c:var:: virt_bitmask_4 - - - File : :file:`bitmask/bitmasks.irp.f` - - .. code:: fortran - - integer(bit_kind), allocatable :: virt_bitmask_4 (N_int,4) - - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`list_inact` - * :c:data:`n_int` - - - - -Subroutines / functions ------------------------ - -.. c:function:: bitstring_to_hexa: - - - File : :file:`bitmask/bitmasks_routines.irp.f` - - .. code:: fortran - - subroutine bitstring_to_hexa( output, string, Nint ) - - - Transform a bit string to a string in hexadecimal format for printing - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`debug_det` - * :c:func:`debug_spindet` - - -.. c:function:: bitstring_to_list: - - - File : :file:`bitmask/bitmasks_routines.irp.f` - - .. code:: fortran - - subroutine bitstring_to_list( string, list, n_elements, Nint) - - - Gives the inidices(+1) of the bits set to 1 in the bit string - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`add_integrals_to_map` - * :c:func:`add_integrals_to_map_erf` - * :c:func:`add_integrals_to_map_no_exit_34` - * :c:func:`add_integrals_to_map_three_indices` - * :c:func:`create_microlist` - * :c:func:`example_bitmask` - * :c:func:`getmobiles` - * :c:data:`list_core_inact_act` - * :c:data:`ref_bitmask_energy` - - -.. c:function:: bitstring_to_str: - - - File : :file:`bitmask/bitmasks_routines.irp.f` - - .. code:: fortran - - subroutine bitstring_to_str( output, string, Nint ) - - - Transform a bit string to a string for printing - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`add_integrals_to_map` - * :c:func:`add_integrals_to_map_erf` - * :c:func:`add_integrals_to_map_three_indices` - * :c:func:`example_bitmask` - * :c:func:`print_det` - * :c:func:`print_spindet` - - -.. c:function:: broadcast_chunks_bit_kind: - - - File : :file:`bitmask/mpi.irp.f` - - .. code:: fortran - - subroutine broadcast_chunks_bit_kind(A, LDA) - - - Broadcast with chunks of ~2GB - - -.. c:function:: clear_bit_to_integer: - - - File : :file:`bitmask/bitmasks_routines.irp.f` - - .. code:: fortran - - subroutine clear_bit_to_integer(i_physical,key,Nint) - - - set to 0 the bit number i_physical in the bitstring key - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`example_bitmask` - * :c:data:`ref_closed_shell_bitmask` - - -.. c:function:: debug_det: - - - File : :file:`bitmask/bitmasks_routines.irp.f` - - .. code:: fortran - - subroutine debug_det(string,Nint) - - - Subroutine to print the content of a determinant in '+-' notation and - hexadecimal representation. - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`build_fock_tmp` - * :c:func:`example_determinants` - * :c:func:`get_excitation_degree_vector_mono_or_exchange_verbose` - * :c:func:`number_of_holes_verbose` - * :c:func:`number_of_particles_verbose` - * :c:func:`routine_example_psi_det` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`bitstring_to_hexa` - * :c:func:`print_det` - - -.. c:function:: debug_spindet: - - - File : :file:`bitmask/bitmasks_routines.irp.f` - - .. code:: fortran - - subroutine debug_spindet(string,Nint) - - - Subroutine to print the content of a determinant in '+-' notation and - hexadecimal representation. - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`bitstring_to_hexa` - * :c:func:`print_spindet` - - -.. c:function:: example_bitmask: - - - File : :file:`bitmask/example.irp.f` - - .. code:: fortran - - subroutine example_bitmask - - - subroutine that illustrates the main features available in bitmask - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`n_core_orb` - * :c:data:`list_inact` - * :c:data:`n_int` - * :c:data:`mo_num` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`bitstring_to_list` - * :c:func:`bitstring_to_str` - * :c:func:`clear_bit_to_integer` - * :c:func:`set_bit_to_integer` - - -.. c:function:: initialize_bitmask_to_restart_ones: - - - File : :file:`bitmask/modify_bitmasks.irp.f` - - .. code:: fortran - - subroutine initialize_bitmask_to_restart_ones - - - Initialization of the generators_bitmask to the restart bitmask - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`generators_bitmask_restart` - * :c:data:`n_generators_bitmask` - * :c:data:`generators_bitmask` - * :c:data:`n_int` - - -.. c:function:: is_a_1h: - - - File : :file:`bitmask/bitmask_cas_routines.irp.f` - - .. code:: fortran - - logical function is_a_1h(key_in) - - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`n_int` - - -.. c:function:: is_a_1h1p: - - - File : :file:`bitmask/bitmask_cas_routines.irp.f` - - .. code:: fortran - - logical function is_a_1h1p(key_in) - - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`n_int` - - -.. c:function:: is_a_1h2p: - - - File : :file:`bitmask/bitmask_cas_routines.irp.f` - - .. code:: fortran - - logical function is_a_1h2p(key_in) - - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`n_int` - - -.. c:function:: is_a_1p: - - - File : :file:`bitmask/bitmask_cas_routines.irp.f` - - .. code:: fortran - - logical function is_a_1p(key_in) - - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`n_int` - - -.. c:function:: is_a_2h: - - - File : :file:`bitmask/bitmask_cas_routines.irp.f` - - .. code:: fortran - - logical function is_a_2h(key_in) - - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`n_int` - - -.. c:function:: is_a_2h1p: - - - File : :file:`bitmask/bitmask_cas_routines.irp.f` - - .. code:: fortran - - logical function is_a_2h1p(key_in) - - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`n_int` - - -.. c:function:: is_a_2p: - - - File : :file:`bitmask/bitmask_cas_routines.irp.f` - - .. code:: fortran - - logical function is_a_2p(key_in) - - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`n_int` - - -.. c:function:: is_a_two_holes_two_particles: - - - File : :file:`bitmask/bitmask_cas_routines.irp.f` - - .. code:: fortran - - logical function is_a_two_holes_two_particles(key_in) - - - logical function that returns True if the determinant 'key_in' - belongs to the 2h-2p excitation class of the DDCI space - this is calculated using the CAS_bitmask that defines the active - orbital space, the inact_bitmasl that defines the inactive oribital space - and the virt_bitmask that defines the virtual orbital space - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`cas_bitmask` - * :c:data:`reunion_of_core_inact_bitmask` - * :c:data:`list_inact` - * :c:data:`n_int` - - -.. c:function:: is_i_in_virtual: - - - File : :file:`bitmask/bitmask_cas_routines.irp.f` - - .. code:: fortran - - logical function is_i_in_virtual(i) - - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`list_inact` - * :c:data:`n_int` - - -.. c:function:: is_the_hole_in_det: - - - File : :file:`bitmask/find_hole.irp.f` - - .. code:: fortran - - logical function is_the_hole_in_det(key_in,ispin,i_hole) - - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`n_int` - - -.. c:function:: is_the_particl_in_det: - - - File : :file:`bitmask/find_hole.irp.f` - - .. code:: fortran - - logical function is_the_particl_in_det(key_in,ispin,i_particl) - - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`n_int` - - -.. c:function:: list_to_bitstring: - - - File : :file:`bitmask/bitmasks_routines.irp.f` - - .. code:: fortran - - subroutine list_to_bitstring( string, list, n_elements, Nint) - - - Returns the physical string "string(N_int,2)" from the array of - occupations "list(N_int*bit_kind_size,2) - - Called by: - - .. hlist:: - :columns: 3 - - * :c:data:`hf_bitmask` - * :c:data:`list_inact` - - -.. c:function:: modify_bitmasks_for_hole: - - - File : :file:`bitmask/modify_bitmasks.irp.f` - - .. code:: fortran - - subroutine modify_bitmasks_for_hole(i_hole) - - - modify the generators_bitmask in order that one can only excite - the electrons occupying i_hole - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`n_generators_bitmask` - * :c:data:`generators_bitmask` - * :c:data:`n_int` - * :c:data:`index_holes_bitmask` - - -.. c:function:: modify_bitmasks_for_hole_in_out: - - - File : :file:`bitmask/modify_bitmasks.irp.f` - - .. code:: fortran - - subroutine modify_bitmasks_for_hole_in_out(i_hole) - - - modify the generators_bitmask in order that one can only excite - the electrons occupying i_hole - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`n_generators_bitmask` - * :c:data:`generators_bitmask` - * :c:data:`index_holes_bitmask` - - -.. c:function:: modify_bitmasks_for_particl: - - - File : :file:`bitmask/modify_bitmasks.irp.f` - - .. code:: fortran - - subroutine modify_bitmasks_for_particl(i_part) - - - modify the generators_bitmask in order that one can only excite - the electrons to the orbital i_part - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`index_particl_bitmask` - * :c:data:`n_generators_bitmask` - * :c:data:`generators_bitmask` - * :c:data:`n_int` - - -.. c:function:: number_of_holes: - - - File : :file:`bitmask/bitmask_cas_routines.irp.f` - - .. code:: fortran - - integer function number_of_holes(key_in) - - - Function that returns the number of holes in the inact space - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`cas_bitmask` - * :c:data:`reunion_of_core_inact_bitmask` - * :c:data:`n_int` - - -.. c:function:: number_of_holes_verbose: - - - File : :file:`bitmask/bitmask_cas_routines.irp.f` - - .. code:: fortran - - integer function number_of_holes_verbose(key_in) - - - function that returns the number of holes in the inact space - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`cas_bitmask` - * :c:data:`reunion_of_core_inact_bitmask` - * :c:data:`n_int` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`debug_det` - - -.. c:function:: number_of_particles: - - - File : :file:`bitmask/bitmask_cas_routines.irp.f` - - .. code:: fortran - - integer function number_of_particles(key_in) - - - function that returns the number of particles in the virtual space - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`cas_bitmask` - * :c:data:`list_inact` - * :c:data:`n_int` - - -.. c:function:: number_of_particles_verbose: - - - File : :file:`bitmask/bitmask_cas_routines.irp.f` - - .. code:: fortran - - integer function number_of_particles_verbose(key_in) - - - function that returns the number of particles in the inact space - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`cas_bitmask` - * :c:data:`list_inact` - * :c:data:`n_int` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`debug_det` - - -.. c:function:: print_det: - - - File : :file:`bitmask/bitmasks_routines.irp.f` - - .. code:: fortran - - subroutine print_det(string,Nint) - - - Subroutine to print the content of a determinant using the '+-' notation - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`debug_det` - * :c:func:`example_determinants` - * :c:func:`print_generators_bitmasks_holes` - * :c:func:`print_generators_bitmasks_holes_for_one_generator` - * :c:func:`print_generators_bitmasks_particles` - * :c:func:`print_generators_bitmasks_particles_for_one_generator` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`bitstring_to_str` - - -.. c:function:: print_generators_bitmasks_holes: - - - File : :file:`bitmask/modify_bitmasks.irp.f` - - .. code:: fortran - - subroutine print_generators_bitmasks_holes - - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`generators_bitmask` - * :c:data:`n_int` - * :c:data:`index_holes_bitmask` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`print_det` - - -.. c:function:: print_generators_bitmasks_holes_for_one_generator: - - - File : :file:`bitmask/modify_bitmasks.irp.f` - - .. code:: fortran - - subroutine print_generators_bitmasks_holes_for_one_generator(i_gen) - - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`generators_bitmask` - * :c:data:`n_int` - * :c:data:`index_holes_bitmask` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`print_det` - - -.. c:function:: print_generators_bitmasks_particles: - - - File : :file:`bitmask/modify_bitmasks.irp.f` - - .. code:: fortran - - subroutine print_generators_bitmasks_particles - - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`index_particl_bitmask` - * :c:data:`generators_bitmask` - * :c:data:`n_int` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`print_det` - - -.. c:function:: print_generators_bitmasks_particles_for_one_generator: - - - File : :file:`bitmask/modify_bitmasks.irp.f` - - .. code:: fortran - - subroutine print_generators_bitmasks_particles_for_one_generator(i_gen) - - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`index_particl_bitmask` - * :c:data:`generators_bitmask` - * :c:data:`n_int` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`print_det` - - -.. c:function:: print_spindet: - - - File : :file:`bitmask/bitmasks_routines.irp.f` - - .. code:: fortran - - subroutine print_spindet(string,Nint) - - - Subroutine to print the content of a determinant using the '+-' notation - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`debug_spindet` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`bitstring_to_str` - - -.. c:function:: set_bit_to_integer: - - - File : :file:`bitmask/bitmasks_routines.irp.f` - - .. code:: fortran - - subroutine set_bit_to_integer(i_physical,key,Nint) - - - set to 1 the bit number i_physical in the bitstring key - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`example_bitmask` - - -.. c:function:: set_bitmask_hole_as_input: - - - File : :file:`bitmask/modify_bitmasks.irp.f` - - .. code:: fortran - - subroutine set_bitmask_hole_as_input(input_bimask) - - - set the generators_bitmask for the holes - as the input_bimask - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`n_generators_bitmask` - * :c:data:`generators_bitmask` - * :c:data:`n_int` - * :c:data:`index_holes_bitmask` - - Touches: - - .. hlist:: - :columns: 3 - - * :c:data:`generators_bitmask` - - -.. c:function:: set_bitmask_particl_as_input: - - - File : :file:`bitmask/modify_bitmasks.irp.f` - - .. code:: fortran - - subroutine set_bitmask_particl_as_input(input_bimask) - - - set the generators_bitmask for the particles - as the input_bimask - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`index_particl_bitmask` - * :c:data:`n_generators_bitmask` - * :c:data:`generators_bitmask` - * :c:data:`n_int` - - Touches: - - .. hlist:: - :columns: 3 - - * :c:data:`generators_bitmask` - diff --git a/docs/source/modules/cipsi.rst b/docs/source/modules/cipsi.rst deleted file mode 100644 index 3e0d1aef..00000000 --- a/docs/source/modules/cipsi.rst +++ /dev/null @@ -1,2259 +0,0 @@ -.. _module_cipsi: - -.. program:: cipsi - -.. default-role:: option - -===== -cipsi -===== - -|CIPSI| algorithm. - -The :c:func:`run_stochastic_cipsi` and :c:func:`run_cipsi` subroutines start with a single -determinant, or with the wave function in the |EZFIO| database if -:option:`determinants read_wf` is |true|. - -The :c:func:`run_cipsi` subroutine iteratively: - -* Selects the most important determinants from the external space and adds them to the - internal space -* If :option:`determinants s2_eig` is |true|, it adds all the necessary - determinants to allow the eigenstates of |H| to be eigenstates of |S^2| -* Diagonalizes |H| in the enlarged internal space -* Computes the |PT2| contribution to the energy stochastically :cite:`Garniron_2017.2` - or deterministically, depending on :option:`perturbation do_pt2` -* Extrapolates the variational energy by fitting - :math:`E=E_\text{FCI} - \alpha\, E_\text{PT2}` - -The difference between :c:func:`run_stochastic_cipsi` and :c:func:`run_cipsi` is that -:c:func:`run_stochastic_cipsi` selects the determinants on the fly with the computation -of the stochastic |PT2| :cite:`Garniron_2017.2`. Hence, it is a semi-stochastic selection. It - -* Selects the most important determinants from the external space and adds them to the - internal space, on the fly with the computation of the PT2 with the stochastic algorithm - presented in :cite:`Garniron_2017.2`. -* If :option:`determinants s2_eig` is |true|, it adds all the necessary - determinants to allow the eigenstates of |H| to be eigenstates of |S^2| -* Extrapolates the variational energy by fitting - :math:`E=E_\text{FCI} - \alpha\, E_\text{PT2}` -* Diagonalizes |H| in the enlarged internal space - - -The number of selected determinants at each iteration will be such that the -size of the wave function will double at every iteration. If :option:`determinants -s2_eig` is |true|, then the number of selected determinants will be 1.5x the -current number, and then all the additional determinants will be added. - -By default, the program will stop when more than one million determinants have -been selected, or when the |PT2| energy is below :math:`10^{-4}`. - -The variational and |PT2| energies of the iterations are stored in the -|EZFIO| database, in the :ref:`iterations` module. - - - -Computation of the |PT2| energy -------------------------------- - -At each iteration, the |PT2| energy is computed considering the Epstein-Nesbet -zeroth-order Hamiltonian: - -.. math:: - - E_{\text{PT2}} = \sum_{ \alpha } - \frac{|\langle \Psi_S | \hat{H} | \alpha \rangle|^2} - {E - \langle \alpha | \hat{H} | \alpha \rangle} - -where the |kalpha| determinants are generated by applying all the single and -double excitation operators to all the determinants of the wave function -:math:`\Psi_G`. - -When the hybrid-deterministic/stochastic algorithm is chosen -(default), :math:`Psi_G = \Psi_S = \Psi`, the full wavefunction expanded in the -internal space. -When the deterministic algorithm is chosen (:option:`perturbation do_pt2` -is set to |false|), :math:`Psi_G` is a truncation of |Psi| using -:option:`determinants threshold_generators`, and :math:`Psi_S` is a truncation -of |Psi| using :option:`determinants threshold_selectors`, and re-weighted -by :math:`1/\langle \Psi_s | \Psi_s \rangle`. - -At every iteration, while computing the |PT2|, the variance of the wave -function is also computed: - -.. math:: - - \sigma^2 & = \langle \Psi | \hat{H}^2 | \Psi \rangle - - \langle \Psi | \hat{H} | \Psi \rangle^2 \\ - & = \sum_{i \in \text{FCI}} - \langle \Psi | \hat{H} | i \rangle - \langle i | \hat{H} | \Psi \rangle - - \langle \Psi | \hat{H} | \Psi \rangle^2 \\ - & = \sum_{ \alpha } - \langle |\Psi | \hat{H} | \alpha \rangle|^2. - -The expression of the variance is the same as the expression of the |PT2|, with -a denominator of 1. It measures how far the wave function is from the |FCI| -solution. Note that the absence of denominator in the Heat-Bath selected |CI| -method is selection method by minimization of the variance, whereas |CIPSI| is -a selection method by minimization of the energy. - - -If :option:`perturbation do_pt2` is set to |false|, then the stochastic -|PT2| is not computed, and an approximate value is obtained from the |CIPSI| -selection. The calculation is faster, but the extrapolated |FCI| value is -less accurate. This way of running the code should be used when the only -goal is to generate a wave function, as for using |CIPSI| wave functions as -trial wave functions of |QMC| calculations for example. - - -The :command:`PT2` program reads the wave function of the |EZFIO| database -and computes the energy and the |PT2| contribution. - - -State-averaging ---------------- - -Extrapolated |FCI| energy -------------------------- - -An estimate of the |FCI| energy is computed by extrapolating - -.. math:: - - E=E_\text{FCI} - \alpha\, E_\text{PT2} - -This extrapolation is done for all the requested states, and excitation -energies are printed as energy differences between the extrapolated -energies of the excited states and the extrapolated energy of the ground -state. - -The extrapolations are given considering the 2 last points, the 3 last points, ..., -the 7 last points. The extrapolated value should be chosen such that the extrpolated -value is stable with the number of points. - - - - -Providers ---------- - -.. c:var:: initialize_pt2_e0_denominator - - - File : :file:`cipsi/energy.irp.f` - - .. code:: fortran - - logical :: initialize_pt2_e0_denominator - - - If true, initialize pt2_E0_denominator - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`pt2_e0_denominator` - - -.. c:var:: nthreads_pt2 - - - File : :file:`cipsi/environment.irp.f` - - .. code:: fortran - - integer :: nthreads_pt2 - - - Number of threads for Davidson - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`mpi_master` - * :c:data:`nproc` - - - -.. c:function:: pt2_collector: - - - File : :file:`cipsi/pt2_stoch_routines.irp.f` - - .. code:: fortran - - subroutine pt2_collector(zmq_socket_pull, E, relative_error, pt2, error, & - variance, norm, b, N_) - - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`pt2_j` - * :c:data:`pt2_stoch_istate` - * :c:data:`n_states` - * :c:data:`pt2_f` - * :c:data:`pt2_w` - * :c:data:`n_det_generators` - * :c:data:`pt2_n_teeth` - * :c:data:`pt2_u` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`zmq_pt2` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`add_to_selection_buffer` - * :c:func:`check_mem` - * :c:func:`create_selection_buffer` - * :c:func:`delete_selection_buffer` - * :c:func:`end_zmq_to_qp_run_socket` - * :c:func:`pull_pt2_results` - * :c:func:`sleep` - * :c:func:`sort_selection_buffer` - * :c:func:`wall_time` - - -.. c:var:: pt2_cw - - - File : :file:`cipsi/pt2_stoch_routines.irp.f` - - .. code:: fortran - - double precision, allocatable :: pt2_w (N_det_generators) - double precision, allocatable :: pt2_cw (0:N_det_generators) - double precision :: pt2_w_t - double precision :: pt2_u_0 - integer, allocatable :: pt2_n_0 (pt2_N_teeth+1) - - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`n_det_generators` - * :c:data:`psi_det_sorted_gen` - * :c:data:`pt2_n_teeth` - * :c:data:`pt2_stoch_istate` - * :c:data:`qp_max_mem` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`pt2_j` - - -.. c:var:: pt2_e0_denominator - - - File : :file:`cipsi/energy.irp.f` - - .. code:: fortran - - double precision, allocatable :: pt2_e0_denominator (N_states) - - - E0 in the denominator of the PT2 - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`barycentric_electronic_energy` - * :c:data:`h0_type` - * :c:data:`initialize_pt2_e0_denominator` - * :c:data:`mpi_master` - * :c:data:`n_states` - * :c:data:`nuclear_repulsion` - * :c:data:`psi_energy` - - - -.. c:var:: pt2_f - - - File : :file:`cipsi/pt2_stoch_routines.irp.f` - - .. code:: fortran - - integer, allocatable :: pt2_f (N_det_generators) - integer :: pt2_n_tasks_max - - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`elec_num` - * :c:data:`n_core_orb` - * :c:data:`n_det_generators` - * :c:data:`n_det_selectors` - * :c:data:`n_states` - * :c:data:`psi_det_sorted_gen` - - - -.. c:var:: pt2_j - - - File : :file:`cipsi/pt2_stoch_routines.irp.f` - - .. code:: fortran - - integer, allocatable :: pt2_j (N_det_generators) - integer, allocatable :: pt2_r (N_det_generators) - - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`n_det_generators` - * :c:data:`pt2_n_tasks` - * :c:data:`pt2_n_teeth` - * :c:data:`pt2_u` - * :c:data:`pt2_w` - * :c:data:`qp_max_mem` - - - -.. c:var:: pt2_mindetinfirstteeth - - - File : :file:`cipsi/pt2_stoch_routines.irp.f` - - .. code:: fortran - - integer :: pt2_n_teeth - integer :: pt2_mindetinfirstteeth - - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`mpi_master` - * :c:data:`n_det_generators` - * :c:data:`psi_det_sorted_gen` - * :c:data:`pt2_stoch_istate` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`pt2_j` - * :c:data:`pt2_w` - - -.. c:var:: pt2_n_0 - - - File : :file:`cipsi/pt2_stoch_routines.irp.f` - - .. code:: fortran - - double precision, allocatable :: pt2_w (N_det_generators) - double precision, allocatable :: pt2_cw (0:N_det_generators) - double precision :: pt2_w_t - double precision :: pt2_u_0 - integer, allocatable :: pt2_n_0 (pt2_N_teeth+1) - - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`n_det_generators` - * :c:data:`psi_det_sorted_gen` - * :c:data:`pt2_n_teeth` - * :c:data:`pt2_stoch_istate` - * :c:data:`qp_max_mem` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`pt2_j` - - -.. c:var:: pt2_n_tasks - - - File : :file:`cipsi/pt2_stoch_routines.irp.f` - - .. code:: fortran - - integer :: pt2_n_tasks - - - Number of parallel tasks for the Monte Carlo - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`n_det_generators` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`pt2_j` - - -.. c:var:: pt2_n_tasks_max - - - File : :file:`cipsi/pt2_stoch_routines.irp.f` - - .. code:: fortran - - integer, allocatable :: pt2_f (N_det_generators) - integer :: pt2_n_tasks_max - - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`elec_num` - * :c:data:`n_core_orb` - * :c:data:`n_det_generators` - * :c:data:`n_det_selectors` - * :c:data:`n_states` - * :c:data:`psi_det_sorted_gen` - - - -.. c:var:: pt2_n_teeth - - - File : :file:`cipsi/pt2_stoch_routines.irp.f` - - .. code:: fortran - - integer :: pt2_n_teeth - integer :: pt2_mindetinfirstteeth - - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`mpi_master` - * :c:data:`n_det_generators` - * :c:data:`psi_det_sorted_gen` - * :c:data:`pt2_stoch_istate` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`pt2_j` - * :c:data:`pt2_w` - - -.. c:var:: pt2_r - - - File : :file:`cipsi/pt2_stoch_routines.irp.f` - - .. code:: fortran - - integer, allocatable :: pt2_j (N_det_generators) - integer, allocatable :: pt2_r (N_det_generators) - - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`n_det_generators` - * :c:data:`pt2_n_tasks` - * :c:data:`pt2_n_teeth` - * :c:data:`pt2_u` - * :c:data:`pt2_w` - * :c:data:`qp_max_mem` - - - -.. c:var:: pt2_stoch_istate - - - File : :file:`cipsi/pt2_stoch_routines.irp.f` - - .. code:: fortran - - integer :: pt2_stoch_istate - - - State for stochatsic PT2 - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`pt2_n_teeth` - * :c:data:`pt2_w` - - -.. c:var:: pt2_u - - - File : :file:`cipsi/pt2_stoch_routines.irp.f` - - .. code:: fortran - - double precision, allocatable :: pt2_u (N_det_generators) - - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`n_det_generators` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`pt2_j` - - -.. c:var:: pt2_u_0 - - - File : :file:`cipsi/pt2_stoch_routines.irp.f` - - .. code:: fortran - - double precision, allocatable :: pt2_w (N_det_generators) - double precision, allocatable :: pt2_cw (0:N_det_generators) - double precision :: pt2_w_t - double precision :: pt2_u_0 - integer, allocatable :: pt2_n_0 (pt2_N_teeth+1) - - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`n_det_generators` - * :c:data:`psi_det_sorted_gen` - * :c:data:`pt2_n_teeth` - * :c:data:`pt2_stoch_istate` - * :c:data:`qp_max_mem` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`pt2_j` - - -.. c:var:: pt2_w - - - File : :file:`cipsi/pt2_stoch_routines.irp.f` - - .. code:: fortran - - double precision, allocatable :: pt2_w (N_det_generators) - double precision, allocatable :: pt2_cw (0:N_det_generators) - double precision :: pt2_w_t - double precision :: pt2_u_0 - integer, allocatable :: pt2_n_0 (pt2_N_teeth+1) - - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`n_det_generators` - * :c:data:`psi_det_sorted_gen` - * :c:data:`pt2_n_teeth` - * :c:data:`pt2_stoch_istate` - * :c:data:`qp_max_mem` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`pt2_j` - - -.. c:var:: pt2_w_t - - - File : :file:`cipsi/pt2_stoch_routines.irp.f` - - .. code:: fortran - - double precision, allocatable :: pt2_w (N_det_generators) - double precision, allocatable :: pt2_cw (0:N_det_generators) - double precision :: pt2_w_t - double precision :: pt2_u_0 - integer, allocatable :: pt2_n_0 (pt2_N_teeth+1) - - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`n_det_generators` - * :c:data:`psi_det_sorted_gen` - * :c:data:`pt2_n_teeth` - * :c:data:`pt2_stoch_istate` - * :c:data:`qp_max_mem` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`pt2_j` - - -.. c:var:: selection_weight - - - File : :file:`cipsi/selection.irp.f` - - .. code:: fortran - - double precision, allocatable :: selection_weight (N_states) - - - Weights used in the selection criterion - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`c0_weight` - * :c:data:`n_states` - - - - -Subroutines / functions ------------------------ - -.. c:function:: add_to_selection_buffer: - - - File : :file:`cipsi/selection_buffer.irp.f` - - .. code:: fortran - - subroutine add_to_selection_buffer(b, det, val) - - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`n_int` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`fill_buffer_double` - * :c:func:`pt2_collector` - * :c:func:`selection_collector` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`sort_selection_buffer` - - -.. c:function:: bitstring_to_list_in_selection: - - - File : :file:`cipsi/selection.irp.f` - - .. code:: fortran - - subroutine bitstring_to_list_in_selection( string, list, n_elements, Nint) - - - Gives the inidices(+1) of the bits set to 1 in the bit string - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`splash_pq` - * :c:func:`spot_isinwf` - - -.. c:function:: create_selection_buffer: - - - File : :file:`cipsi/selection_buffer.irp.f` - - .. code:: fortran - - subroutine create_selection_buffer(N, siz_, res) - - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`n_int` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`pt2_collector` - * :c:func:`run_pt2_slave` - * :c:func:`run_selection_slave` - * :c:func:`selection_collector` - * :c:func:`zmq_pt2` - * :c:func:`zmq_selection` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`check_mem` - - -.. c:function:: delete_selection_buffer: - - - File : :file:`cipsi/selection_buffer.irp.f` - - .. code:: fortran - - subroutine delete_selection_buffer(b) - - - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`pt2_collector` - * :c:func:`run_pt2_slave` - * :c:func:`run_selection_slave` - * :c:func:`selection_collector` - * :c:func:`zmq_pt2` - * :c:func:`zmq_selection` - - -.. c:function:: fill_buffer_double: - - - File : :file:`cipsi/selection.irp.f` - - .. code:: fortran - - subroutine fill_buffer_double(i_generator, sp, h1, h2, bannedOrb, banned, fock_diag_tmp, E0, pt2, variance, norm, mat, buf) - - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`psi_occ_pattern_hii` - * :c:data:`det_to_occ_pattern` - * :c:data:`selection_weight` - * :c:data:`mo_num` - * :c:data:`n_states` - * :c:data:`n_int` - * :c:data:`psi_det_hii` - * :c:data:`do_only_1h1p` - * :c:data:`h0_type` - * :c:data:`psi_det_generators` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`select_singles_and_doubles` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`add_to_selection_buffer` - * :c:func:`apply_holes` - * :c:func:`apply_particles` - - -.. c:function:: get_d0: - - - File : :file:`cipsi/selection.irp.f` - - .. code:: fortran - - subroutine get_d0(gen, phasemask, bannedOrb, banned, mat, mask, h, p, sp, coefs) - - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`n_states` - * :c:data:`n_int` - * :c:data:`mo_integrals_map` - * :c:data:`mo_num` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`splash_pq` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`apply_particles` - * :c:func:`get_mo_two_e_integrals` - * :c:func:`i_h_j` - - -.. c:function:: get_d1: - - - File : :file:`cipsi/selection.irp.f` - - .. code:: fortran - - subroutine get_d1(gen, phasemask, bannedOrb, banned, mat, mask, h, p, sp, coefs) - - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`n_states` - * :c:data:`n_int` - * :c:data:`mo_integrals_map` - * :c:data:`mo_num` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`splash_pq` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`apply_particles` - * :c:func:`get_mo_two_e_integrals` - * :c:func:`i_h_j` - - -.. c:function:: get_d2: - - - File : :file:`cipsi/selection.irp.f` - - .. code:: fortran - - subroutine get_d2(gen, phasemask, bannedOrb, banned, mat, mask, h, p, sp, coefs) - - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`n_states` - * :c:data:`n_int` - * :c:data:`mo_num` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`splash_pq` - - -.. c:function:: get_mask_phase: - - - File : :file:`cipsi/selection.irp.f` - - .. code:: fortran - - subroutine get_mask_phase(det1, pm, Nint) - - - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`splash_pq` - - -.. c:function:: get_phase_bi: - - - File : :file:`cipsi/selection.irp.f` - - .. code:: fortran - - double precision function get_phase_bi(phasemask, s1, s2, h1, p1, h2, p2, Nint) - - - - -.. c:function:: make_selection_buffer_s2: - - - File : :file:`cipsi/selection_buffer.irp.f` - - .. code:: fortran - - subroutine make_selection_buffer_s2(b) - - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`elec_alpha_num` - * :c:data:`n_int` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`zmq_pt2` - * :c:func:`zmq_selection` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`check_mem` - * :c:func:`dsort` - * :c:func:`i8sort` - * :c:func:`occ_pattern_to_dets` - * :c:func:`occ_pattern_to_dets_size` - - -.. c:function:: merge_selection_buffers: - - - File : :file:`cipsi/selection_buffer.irp.f` - - .. code:: fortran - - subroutine merge_selection_buffers(b1, b2) - - - Merges the selection buffers b1 and b2 into b2 - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`n_int` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`run_pt2_slave` - * :c:func:`run_selection_slave` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`check_mem` - - -.. c:function:: past_d1: - - - File : :file:`cipsi/selection.irp.f` - - .. code:: fortran - - subroutine past_d1(bannedOrb, p) - - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`mo_num` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`splash_pq` - - -.. c:function:: past_d2: - - - File : :file:`cipsi/selection.irp.f` - - .. code:: fortran - - subroutine past_d2(banned, p, sp) - - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`mo_num` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`splash_pq` - - -.. c:function:: provide_everything: - - - File : :file:`cipsi/slave_cipsi.irp.f` - - .. code:: fortran - - subroutine provide_everything - - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`generators_bitmask` - * :c:data:`pt2_stoch_istate` - * :c:data:`psi_selectors` - * :c:data:`psi_det` - * :c:data:`zmq_state` - * :c:data:`psi_coef` - * :c:data:`mpi_master` - * :c:data:`n_det` - * :c:data:`zmq_context` - * :c:data:`n_det_selectors` - * :c:data:`state_average_weight` - * :c:data:`mo_num` - * :c:data:`mo_two_e_integrals_in_map` - * :c:data:`pt2_e0_denominator` - * :c:data:`ci_energy` - * :c:data:`n_states_diag` - * :c:data:`threshold_generators` - * :c:data:`psi_det_sorted_bit` - * :c:data:`n_states` - * :c:data:`h_apply_buffer_allocated` - * :c:data:`n_det_generators` - * :c:data:`psi_det_generators` - * :c:data:`n_int` - * :c:data:`psi_det_generators` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`run_slave_cipsi` - - -.. c:function:: pt2_find_sample: - - - File : :file:`cipsi/pt2_stoch_routines.irp.f` - - .. code:: fortran - - integer function pt2_find_sample(v, w) - - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`n_det_generators` - - -.. c:function:: pt2_find_sample_lr: - - - File : :file:`cipsi/pt2_stoch_routines.irp.f` - - .. code:: fortran - - integer function pt2_find_sample_lr(v, w, l_in, r_in) - - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`n_det_generators` - - -.. c:function:: pt2_slave_inproc: - - - File : :file:`cipsi/pt2_stoch_routines.irp.f` - - .. code:: fortran - - subroutine pt2_slave_inproc(i) - - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`pt2_e0_denominator` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`zmq_pt2` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`run_pt2_slave` - - -.. c:function:: pull_pt2_results: - - - File : :file:`cipsi/run_pt2_slave.irp.f` - - .. code:: fortran - - subroutine pull_pt2_results(zmq_socket_pull, index, pt2, variance, norm, task_id, n_tasks, b) - - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`n_states` - * :c:data:`n_int` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`pt2_collector` - - -.. c:function:: pull_selection_results: - - - File : :file:`cipsi/run_selection_slave.irp.f` - - .. code:: fortran - - subroutine pull_selection_results(zmq_socket_pull, pt2, variance, norm, val, det, N, task_id, ntask) - - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`n_states` - * :c:data:`n_int` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`selection_collector` - - -.. c:function:: push_pt2_results: - - - File : :file:`cipsi/run_pt2_slave.irp.f` - - .. code:: fortran - - subroutine push_pt2_results(zmq_socket_push, index, pt2, variance, norm, b, task_id, n_tasks) - - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`n_states` - * :c:data:`n_int` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`run_pt2_slave` - - -.. c:function:: push_selection_results: - - - File : :file:`cipsi/run_selection_slave.irp.f` - - .. code:: fortran - - subroutine push_selection_results(zmq_socket_push, pt2, variance, norm, b, task_id, ntask) - - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`n_states` - * :c:data:`n_int` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`run_selection_slave` - - -.. c:function:: remove_duplicates_in_selection_buffer: - - - File : :file:`cipsi/selection_buffer.irp.f` - - .. code:: fortran - - subroutine remove_duplicates_in_selection_buffer(b) - - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`n_int` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`zmq_pt2` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`check_mem` - * :c:func:`i8sort` - - -.. c:function:: run_cipsi: - - - File : :file:`cipsi/cipsi.irp.f` - - .. code:: fortran - - subroutine run_cipsi - - - Selected Full Configuration Interaction with deterministic selection and - stochastic PT2. - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`correlation_energy_ratio_max` - * :c:data:`n_iter` - * :c:data:`psi_energy_with_nucl_rep` - * :c:data:`psi_occ_pattern` - * :c:data:`n_det_max` - * :c:data:`n_states` - * :c:data:`h_apply_buffer_allocated` - * :c:data:`n_det` - * :c:data:`s2_eig` - * :c:data:`do_pt2` - * :c:data:`psi_energy` - * :c:data:`pt2_relative_error` - * :c:data:`ref_bitmask_energy` - * :c:data:`psi_det` - * :c:data:`n_states_diag` - * :c:data:`psi_coef` - * :c:data:`psi_det_sorted` - * :c:data:`pt2_max` - * :c:data:`threshold_generators` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`fci` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`check_mem` - * :c:func:`diagonalize_ci` - * :c:func:`ezfio_get_hartree_fock_energy` - * :c:func:`ezfio_has_hartree_fock_energy` - * :c:func:`make_s2_eigenfunction` - * :c:func:`print_extrapolated_energy` - * :c:func:`print_summary` - * :c:func:`save_energy` - * :c:func:`save_iterations` - * :c:func:`save_wavefunction` - * :c:func:`write_double` - * :c:func:`zmq_pt2` - * :c:func:`zmq_selection` - - Touches: - - .. hlist:: - :columns: 3 - - * :c:data:`ci_electronic_energy` - * :c:data:`ci_electronic_energy` - * :c:data:`ci_energy` - * :c:data:`ci_electronic_energy` - * :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:data:`pt2_stoch_istate` - * :c:data:`state_average_weight` - * :c:data:`threshold_generators` - - -.. c:function:: run_pt2_slave: - - - File : :file:`cipsi/run_pt2_slave.irp.f` - - .. code:: fortran - - subroutine run_pt2_slave(thread,iproc,energy) - - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`n_states_diag` - * :c:data:`n_states` - * :c:data:`pt2_f` - * :c:data:`nproc` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`pt2_slave_inproc` - * :c:func:`run_slave_main` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`check_mem` - * :c:func:`create_selection_buffer` - * :c:func:`delete_selection_buffer` - * :c:func:`end_zmq_push_socket` - * :c:func:`end_zmq_to_qp_run_socket` - * :c:func:`merge_selection_buffers` - * :c:func:`push_pt2_results` - * :c:func:`select_connected` - * :c:func:`sleep` - * :c:func:`sort_selection_buffer` - * :c:func:`wall_time` - - -.. c:function:: run_selection_slave: - - - File : :file:`cipsi/run_selection_slave.irp.f` - - .. code:: fortran - - subroutine run_selection_slave(thread,iproc,energy) - - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`psi_det_beta_unique` - * :c:data:`psi_bilinear_matrix_values` - * :c:data:`psi_bilinear_matrix_transp_values` - * :c:data:`psi_bilinear_matrix_transp_rows_loc` - * :c:data:`n_states` - * :c:data:`pt2_f` - * :c:data:`psi_bilinear_matrix_values` - * :c:data:`psi_bilinear_matrix_transp_values` - * :c:data:`n_int` - * :c:data:`psi_det_alpha_unique` - * :c:data:`psi_det_sorted` - * :c:data:`psi_det_sorted` - * :c:data:`psi_bilinear_matrix_columns_loc` - * :c:data:`psi_selectors_coef_transp` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`run_slave_main` - * :c:func:`selection_slave_inproc` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`create_selection_buffer` - * :c:func:`delete_selection_buffer` - * :c:func:`end_zmq_push_socket` - * :c:func:`end_zmq_to_qp_run_socket` - * :c:func:`merge_selection_buffers` - * :c:func:`push_selection_results` - * :c:func:`select_connected` - * :c:func:`sleep` - * :c:func:`sort_selection_buffer` - - -.. c:function:: run_slave_cipsi: - - - File : :file:`cipsi/slave_cipsi.irp.f` - - .. code:: fortran - - subroutine run_slave_cipsi - - - Helper program for distributed parallelism - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`read_wf` - * :c:data:`distributed_davidson` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`fci` - * :c:func:`pt2` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`omp_set_nested` - * :c:func:`provide_everything` - * :c:func:`run_slave_main` - * :c:func:`switch_qp_run_to_master` - - Touches: - - .. hlist:: - :columns: 3 - - * :c:data:`distributed_davidson` - * :c:data:`pt2_e0_denominator` - * :c:data:`pt2_stoch_istate` - * :c:data:`read_wf` - * :c:data:`state_average_weight` - * :c:data:`threshold_generators` - - -.. c:function:: run_slave_main: - - - File : :file:`cipsi/slave_cipsi.irp.f` - - .. code:: fortran - - subroutine run_slave_main - - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`psi_coef` - * :c:data:`mpi_rank` - * :c:data:`zmq_state` - * :c:data:`state_average_weight` - * :c:data:`mpi_master` - * :c:data:`pt2_stoch_istate` - * :c:data:`n_states` - * :c:data:`n_det` - * :c:data:`pt2_e0_denominator` - * :c:data:`n_det_selectors` - * :c:data:`n_det_generators` - * :c:data:`psi_det` - * :c:data:`n_states_diag` - * :c:data:`zmq_context` - * :c:data:`threshold_generators` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`run_slave_cipsi` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`davidson_slave_tcp` - * :c:func:`mpi_print` - * :c:func:`omp_set_nested` - * :c:func:`run_pt2_slave` - * :c:func:`run_selection_slave` - * :c:func:`sleep` - * :c:func:`wait_for_states` - * :c:func:`wall_time` - * :c:func:`write_double` - - Touches: - - .. hlist:: - :columns: 3 - - * :c:data:`pt2_e0_denominator` - * :c:data:`pt2_stoch_istate` - * :c:data:`state_average_weight` - * :c:data:`threshold_generators` - - -.. c:function:: run_stochastic_cipsi: - - - File : :file:`cipsi/stochastic_cipsi.irp.f` - - .. code:: fortran - - subroutine run_stochastic_cipsi - - - Selected Full Configuration Interaction with Stochastic selection and PT2. - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`correlation_energy_ratio_max` - * :c:data:`n_iter` - * :c:data:`psi_energy_with_nucl_rep` - * :c:data:`psi_occ_pattern` - * :c:data:`n_det_max` - * :c:data:`n_states` - * :c:data:`h_apply_buffer_allocated` - * :c:data:`n_det` - * :c:data:`s2_eig` - * :c:data:`psi_energy` - * :c:data:`pt2_relative_error` - * :c:data:`ref_bitmask_energy` - * :c:data:`psi_det` - * :c:data:`n_states_diag` - * :c:data:`psi_coef` - * :c:data:`psi_det_sorted` - * :c:data:`pt2_max` - * :c:data:`threshold_generators` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`fci` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`check_mem` - * :c:func:`copy_h_apply_buffer_to_wf` - * :c:func:`diagonalize_ci` - * :c:func:`ezfio_get_hartree_fock_energy` - * :c:func:`ezfio_has_hartree_fock_energy` - * :c:func:`make_s2_eigenfunction` - * :c:func:`print_extrapolated_energy` - * :c:func:`print_summary` - * :c:func:`save_energy` - * :c:func:`save_iterations` - * :c:func:`save_wavefunction` - * :c:func:`write_double` - * :c:func:`zmq_pt2` - - Touches: - - .. hlist:: - :columns: 3 - - * :c:data:`ci_electronic_energy` - * :c:data:`ci_electronic_energy` - * :c:data:`ci_energy` - * :c:data:`ci_electronic_energy` - * :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:data:`pt2_stoch_istate` - * :c:data:`state_average_weight` - * :c:data:`threshold_generators` - - -.. c:function:: select_connected: - - - File : :file:`cipsi/selection.irp.f` - - .. code:: fortran - - subroutine select_connected(i_generator,E0,pt2,variance,norm,b,subset,csubset) - - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`generators_bitmask` - * :c:data:`mo_num` - * :c:data:`n_states` - * :c:data:`n_int` - * :c:data:`n_generators_bitmask` - * :c:data:`psi_det_generators` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`run_pt2_slave` - * :c:func:`run_selection_slave` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`build_fock_tmp` - * :c:func:`select_singles_and_doubles` - - -.. c:function:: select_singles_and_doubles: - - - File : :file:`cipsi/selection.irp.f` - - .. code:: fortran - - subroutine select_singles_and_doubles(i_generator,hole_mask,particle_mask,fock_diag_tmp,E0,pt2,variance,norm,buf,subset,csubset) - - - WARNING /!\ : It is assumed that the generators and selectors are psi_det_sorted - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`psi_det_beta_unique` - * :c:data:`psi_bilinear_matrix_values` - * :c:data:`psi_bilinear_matrix_transp_values` - * :c:data:`mo_num` - * :c:data:`psi_bilinear_matrix_transp_rows_loc` - * :c:data:`n_states` - * :c:data:`n_det` - * :c:data:`psi_bilinear_matrix_transp_values` - * :c:data:`elec_alpha_num` - * :c:data:`n_det_selectors` - * :c:data:`psi_bilinear_matrix_transp_values` - * :c:data:`psi_bilinear_matrix_values` - * :c:data:`n_int` - * :c:data:`psi_det_generators` - * :c:data:`psi_bilinear_matrix_values` - * :c:data:`psi_det_alpha_unique` - * :c:data:`psi_det_sorted` - * :c:data:`psi_det_sorted` - * :c:data:`psi_bilinear_matrix_columns_loc` - * :c:data:`psi_selectors_coef_transp` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`select_connected` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`apply_hole` - * :c:func:`bitstring_to_list_ab` - * :c:func:`check_mem` - * :c:func:`fill_buffer_double` - * :c:func:`get_excitation_degree_spin` - * :c:func:`isort` - * :c:func:`splash_pq` - * :c:func:`spot_isinwf` - - -.. c:function:: selection_collector: - - - File : :file:`cipsi/zmq_selection.irp.f` - - .. code:: fortran - - subroutine selection_collector(zmq_socket_pull, b, N, pt2, variance, norm) - - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`n_det_generators` - * :c:data:`n_states` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`zmq_selection` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`add_to_selection_buffer` - * :c:func:`check_mem` - * :c:func:`create_selection_buffer` - * :c:func:`delete_selection_buffer` - * :c:func:`end_zmq_to_qp_run_socket` - * :c:func:`pull_selection_results` - * :c:func:`sort_selection_buffer` - - -.. c:function:: selection_slave_inproc: - - - File : :file:`cipsi/zmq_selection.irp.f` - - .. code:: fortran - - subroutine selection_slave_inproc(i) - - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`pt2_e0_denominator` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`zmq_selection` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`run_selection_slave` - - -.. c:function:: sort_selection_buffer: - - - File : :file:`cipsi/selection_buffer.irp.f` - - .. code:: fortran - - subroutine sort_selection_buffer(b) - - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`n_int` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`add_to_selection_buffer` - * :c:func:`pt2_collector` - * :c:func:`run_pt2_slave` - * :c:func:`run_selection_slave` - * :c:func:`selection_collector` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`check_mem` - * :c:func:`dsort` - - -.. c:function:: splash_pq: - - - File : :file:`cipsi/selection.irp.f` - - .. code:: fortran - - subroutine splash_pq(mask, sp, det, i_gen, N_sel, bannedOrb, banned, mat, interesting) - - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`psi_selectors_coef_transp` - * :c:data:`n_states` - * :c:data:`psi_det_sorted` - * :c:data:`n_int` - * :c:data:`mo_num` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`select_singles_and_doubles` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`bitstring_to_list_in_selection` - * :c:func:`get_d0` - * :c:func:`get_d1` - * :c:func:`get_d2` - * :c:func:`get_mask_phase` - * :c:func:`past_d1` - * :c:func:`past_d2` - - -.. c:function:: spot_isinwf: - - - File : :file:`cipsi/selection.irp.f` - - .. code:: fortran - - subroutine spot_isinwf(mask, det, i_gen, N, banned, fullMatch, interesting) - - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`n_int` - * :c:data:`mo_num` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`select_singles_and_doubles` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`bitstring_to_list_in_selection` - - -.. c:function:: testteethbuilding: - - - File : :file:`cipsi/pt2_stoch_routines.irp.f` - - .. code:: fortran - - logical function testTeethBuilding(minF, N) - - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`pt2_stoch_istate` - * :c:data:`n_det_generators` - * :c:data:`psi_det_sorted_gen` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`check_mem` - - -.. c:function:: zmq_pt2: - - - File : :file:`cipsi/pt2_stoch_routines.irp.f` - - .. code:: fortran - - subroutine ZMQ_pt2(E, pt2,relative_error, error, variance, norm, N_in) - - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`psi_det_sorted` - * :c:data:`pt2_stoch_istate` - * :c:data:`psi_selectors` - * :c:data:`psi_bilinear_matrix_values` - * :c:data:`psi_det_alpha_unique` - * :c:data:`pt2_e0_denominator` - * :c:data:`pt2_n_teeth` - * :c:data:`psi_selectors_coef_transp` - * :c:data:`n_det` - * :c:data:`s2_eig` - * :c:data:`pt2_j` - * :c:data:`mo_two_e_integrals_in_map` - * :c:data:`psi_bilinear_matrix_transp_values` - * :c:data:`state_average_weight` - * :c:data:`mo_num` - * :c:data:`nthreads_pt2` - * :c:data:`psi_bilinear_matrix_values` - * :c:data:`mo_one_e_integrals` - * :c:data:`elec_alpha_num` - * :c:data:`nproc` - * :c:data:`psi_bilinear_matrix_columns_loc` - * :c:data:`threshold_generators` - * :c:data:`psi_det_beta_unique` - * :c:data:`qp_max_mem` - * :c:data:`psi_bilinear_matrix_transp_rows_loc` - * :c:data:`n_states` - * :c:data:`pt2_f` - * :c:data:`n_det_generators` - * :c:data:`psi_bilinear_matrix_transp_values` - * :c:data:`n_int` - * :c:data:`pt2_j` - * :c:data:`psi_det_sorted` - * :c:data:`pt2_w` - * :c:data:`pt2_u` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`run_cipsi` - * :c:func:`run_stochastic_cipsi` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`check_mem` - * :c:func:`create_selection_buffer` - * :c:func:`delete_selection_buffer` - * :c:func:`end_parallel_job` - * :c:func:`fill_h_apply_buffer_no_selection` - * :c:func:`make_selection_buffer_s2` - * :c:func:`new_parallel_job` - * :c:func:`omp_set_nested` - * :c:func:`pt2_collector` - * :c:func:`pt2_slave_inproc` - * :c:func:`remove_duplicates_in_selection_buffer` - * :c:func:`resident_memory` - * :c:func:`write_double` - * :c:func:`write_int` - * :c:func:`zmq_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:data:`pt2_stoch_istate` - * :c:data:`state_average_weight` - - -.. c:function:: zmq_selection: - - - File : :file:`cipsi/zmq_selection.irp.f` - - .. code:: fortran - - subroutine ZMQ_selection(N_in, pt2, variance, norm) - - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`psi_det_sorted` - * :c:data:`psi_selectors` - * :c:data:`psi_bilinear_matrix_values` - * :c:data:`n_det` - * :c:data:`psi_bilinear_matrix_columns_loc` - * :c:data:`n_det_selectors` - * :c:data:`psi_det_alpha_unique` - * :c:data:`psi_bilinear_matrix_transp_values` - * :c:data:`state_average_weight` - * :c:data:`psi_bilinear_matrix_values` - * :c:data:`pt2_e0_denominator` - * :c:data:`do_pt2` - * :c:data:`nproc` - * :c:data:`s2_eig` - * :c:data:`threshold_generators` - * :c:data:`psi_det_beta_unique` - * :c:data:`qp_max_mem` - * :c:data:`psi_bilinear_matrix_transp_rows_loc` - * :c:data:`n_states` - * :c:data:`pt2_f` - * :c:data:`n_det_generators` - * :c:data:`psi_bilinear_matrix_transp_values` - * :c:data:`n_int` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`run_cipsi` - * :c:func:`zmq_pt2` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`copy_h_apply_buffer_to_wf` - * :c:func:`create_selection_buffer` - * :c:func:`delete_selection_buffer` - * :c:func:`end_parallel_job` - * :c:func:`fill_h_apply_buffer_no_selection` - * :c:func:`make_selection_buffer_s2` - * :c:func:`new_parallel_job` - * :c:func:`save_wavefunction` - * :c:func:`selection_collector` - * :c:func:`selection_slave_inproc` - * :c:func:`write_double` - - 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` - diff --git a/docs/source/modules/cis.rst b/docs/source/modules/cis.rst deleted file mode 100644 index 10700afb..00000000 --- a/docs/source/modules/cis.rst +++ /dev/null @@ -1,275 +0,0 @@ -.. _module_cis: - -.. program:: cis - -.. default-role:: option - -=== -cis -=== - -This module contains a CIS program. - -The user point of view ----------------------- - -The :command:`cis` program performs the CI of the ROHF-like + all single excitations on top of it. -This program can be very useful to : - -* **Ground state calculations**: generate a guess for the ground state wave function if one is not sure that the :c:func:`scf` program gave the lowest SCF solution. In combination with :c:func:`save_natorb` it can produce new |MOs| in order to reperform an :c:func:`scf` optimization. - -* **Excited states calculations**: generate guess for all the :option:`determinants n_states` wave functions, that will be used by the :c:func:`fci` program. - - -The main keywords/options to be used are: - -* :option:`determinants n_states` : number of states to consider for the |CIS| calculation - -* :option:`determinants s2_eig` : force all states to have the desired value of :math:`S^2` - -* :option:`determinants expected_s2` : desired value of :math:`S^2` - - - - -The programmer point of view ----------------------------- - -This module have been built by setting the following rules: - -* The only generator determinant is the Hartree-Fock (single-reference method) -* All generated singly excited determinants are included in the wave function (no perturbative - selection) - -These rules are set in the ``H_apply.irp.f`` file. - - - - - -EZFIO parameters ----------------- - -.. option:: energy - - Variational |CIS| energy - - - -Programs --------- - - * :ref:`cis` - -Subroutines / functions ------------------------ - -.. c:function:: h_apply_cis: - - - File : :file:`h_apply.irp.f_shell_8` - - .. code:: fortran - - subroutine H_apply_cis() - - - Calls H_apply on the |HF| determinant and selects all connected single and double - excitations (of the same symmetry). Auto-generated by the ``generate_h_apply`` script. - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`psi_coef` - * :c:data:`n_states` - * :c:data:`generators_bitmask` - * :c:data:`mo_num` - * :c:data:`mo_two_e_integrals_in_map` - * :c:data:`h_apply_buffer_allocated` - * :c:data:`n_det` - * :c:data:`s2_eig` - * :c:data:`n_det_generators` - * :c:data:`i_bitmask_gen` - * :c:data:`n_int` - * :c:data:`psi_det` - * :c:data:`psi_det_generators` - * :c:data:`psi_det_generators` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`build_fock_tmp` - * :c:func:`copy_h_apply_buffer_to_wf` - * :c:func:`dsort` - * :c:func:`h_apply_cis_diexc` - * :c:func:`h_apply_cis_monoexc` - * :c:func:`make_s2_eigenfunction` - * :c:func:`wall_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:: h_apply_cis_diexc: - - - File : :file:`h_apply.irp.f_shell_8` - - .. code:: fortran - - subroutine H_apply_cis_diexc(key_in, key_prev, hole_1,particl_1, hole_2, particl_2, fock_diag_tmp, i_generator, iproc_in ) - - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`n_int` - * :c:data:`n_det` - * :c:data:`mo_num` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`h_apply_cis` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`h_apply_cis_diexcp` - - -.. c:function:: h_apply_cis_diexcorg: - - - File : :file:`h_apply.irp.f_shell_8` - - .. code:: fortran - - subroutine H_apply_cis_diexcOrg(key_in,key_mask,hole_1,particl_1,hole_2, particl_2, fock_diag_tmp, i_generator, iproc_in ) - - - Generate all double excitations of key_in using the bit masks of holes and - particles. - Assume N_int is already provided. - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`n_int` - * :c:data:`elec_alpha_num` - * :c:data:`mo_num` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`h_apply_cis_diexcp` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`bitstring_to_list_ab` - * :c:func:`fill_h_apply_buffer_no_selection` - - -.. c:function:: h_apply_cis_diexcp: - - - File : :file:`h_apply.irp.f_shell_8` - - .. code:: fortran - - subroutine H_apply_cis_diexcP(key_in, fs1, fh1, particl_1, fs2, fh2, particl_2, fock_diag_tmp, i_generator, iproc_in ) - - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`n_int` - * :c:data:`n_det` - * :c:data:`mo_num` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`h_apply_cis_diexc` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`h_apply_cis_diexcorg` - - -.. c:function:: h_apply_cis_monoexc: - - - File : :file:`h_apply.irp.f_shell_8` - - .. code:: fortran - - subroutine H_apply_cis_monoexc(key_in, hole_1,particl_1,fock_diag_tmp,i_generator,iproc_in ) - - - Generate all single excitations of key_in using the bit masks of holes and - particles. - Assume N_int is already provided. - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`n_int` - * :c:data:`elec_alpha_num` - * :c:data:`mo_num` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`h_apply_cis` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`bitstring_to_list_ab` - * :c:func:`fill_h_apply_buffer_no_selection` - diff --git a/docs/source/modules/cisd.rst b/docs/source/modules/cisd.rst deleted file mode 100644 index 7816de30..00000000 --- a/docs/source/modules/cisd.rst +++ /dev/null @@ -1,273 +0,0 @@ -.. _module_cisd: - -.. program:: cisd - -.. default-role:: option - -==== -cisd -==== - -This module contains a CI of single and double excitations. - -The user point of view ----------------------- - -The :command:`cisd` program performs the CI of the ROHF-like + all single and double excitations on top of it. -This program can be very useful to : - -* **Ground state calculations**: generate a guess for the ground state wave function if one is not sure that the :c:func:`scf` program gave the lowest SCF solution. In combination with :c:func:`save_natorb` it can produce new |MOs| in order to reperform an :c:func:`scf` optimization. - -* **Excited states calculations**: generate guess for all the :option:`determinants n_states` wave functions, that will be used by the :c:func:`fci` program. - - -The main keywords/options to be used are: - -* :option:`determinants n_states` : number of states to consider for the |cisd| calculation - -* :option:`determinants s2_eig` : force all states to have the desired value of :math:`S^2` - -* :option:`determinants expected_s2` : desired value of :math:`S^2` - -The programmer point of view ----------------------------- - -This module have been built by setting the following rules: - - -* The only generator determinant is the Hartree-Fock (single-reference method) -* All generated determinants are included in the wave function (no perturbative - selection) - -These rules are set in the ``H_apply.irp.f`` file. - - - - - -EZFIO parameters ----------------- - -.. option:: energy - - Variational |CISD| energy - - - -Programs --------- - - * :ref:`cisd` - -Subroutines / functions ------------------------ - -.. c:function:: h_apply_cisd: - - - File : :file:`h_apply.irp.f_shell_8` - - .. code:: fortran - - subroutine H_apply_cisd() - - - Calls H_apply on the |HF| determinant and selects all connected single and double - excitations (of the same symmetry). Auto-generated by the ``generate_h_apply`` script. - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`psi_coef` - * :c:data:`n_states` - * :c:data:`generators_bitmask` - * :c:data:`mo_num` - * :c:data:`mo_two_e_integrals_in_map` - * :c:data:`h_apply_buffer_allocated` - * :c:data:`n_det` - * :c:data:`s2_eig` - * :c:data:`n_det_generators` - * :c:data:`i_bitmask_gen` - * :c:data:`n_int` - * :c:data:`psi_det` - * :c:data:`psi_det_generators` - * :c:data:`psi_det_generators` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`build_fock_tmp` - * :c:func:`copy_h_apply_buffer_to_wf` - * :c:func:`dsort` - * :c:func:`h_apply_cisd_diexc` - * :c:func:`h_apply_cisd_monoexc` - * :c:func:`make_s2_eigenfunction` - * :c:func:`wall_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:: h_apply_cisd_diexc: - - - File : :file:`h_apply.irp.f_shell_8` - - .. code:: fortran - - subroutine H_apply_cisd_diexc(key_in, key_prev, hole_1,particl_1, hole_2, particl_2, fock_diag_tmp, i_generator, iproc_in ) - - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`n_int` - * :c:data:`n_det` - * :c:data:`mo_num` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`h_apply_cisd` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`h_apply_cisd_diexcp` - - -.. c:function:: h_apply_cisd_diexcorg: - - - File : :file:`h_apply.irp.f_shell_8` - - .. code:: fortran - - subroutine H_apply_cisd_diexcOrg(key_in,key_mask,hole_1,particl_1,hole_2, particl_2, fock_diag_tmp, i_generator, iproc_in ) - - - Generate all double excitations of key_in using the bit masks of holes and - particles. - Assume N_int is already provided. - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`n_int` - * :c:data:`elec_alpha_num` - * :c:data:`mo_num` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`h_apply_cisd_diexcp` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`bitstring_to_list_ab` - * :c:func:`fill_h_apply_buffer_no_selection` - - -.. c:function:: h_apply_cisd_diexcp: - - - File : :file:`h_apply.irp.f_shell_8` - - .. code:: fortran - - subroutine H_apply_cisd_diexcP(key_in, fs1, fh1, particl_1, fs2, fh2, particl_2, fock_diag_tmp, i_generator, iproc_in ) - - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`n_int` - * :c:data:`n_det` - * :c:data:`mo_num` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`h_apply_cisd_diexc` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`h_apply_cisd_diexcorg` - - -.. c:function:: h_apply_cisd_monoexc: - - - File : :file:`h_apply.irp.f_shell_8` - - .. code:: fortran - - subroutine H_apply_cisd_monoexc(key_in, hole_1,particl_1,fock_diag_tmp,i_generator,iproc_in ) - - - Generate all single excitations of key_in using the bit masks of holes and - particles. - Assume N_int is already provided. - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`n_int` - * :c:data:`elec_alpha_num` - * :c:data:`mo_num` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`h_apply_cisd` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`bitstring_to_list_ab` - * :c:func:`fill_h_apply_buffer_no_selection` - diff --git a/docs/source/modules/davidson.rst b/docs/source/modules/davidson.rst deleted file mode 100644 index b29d42ff..00000000 --- a/docs/source/modules/davidson.rst +++ /dev/null @@ -1,1799 +0,0 @@ -.. _module_davidson: - -.. program:: davidson - -.. default-role:: option - -======== -davidson -======== - -Abstract module for Davidson's diagonalization. -It contains everything required for the Davidson algorithm, dressed or not. If -a dressing is used, the dressing column should be defined and the -:ref:`davidson_dressed` module should be used. If no dressing is required, -the :ref:`davidson` module should be used, and it has a default zero dressing vector. - -The important providers for that module are: - -# `psi_energy` which is the expectation value over the wave function (`psi_det`, `psi_coef`) of the Hamiltonian, dressed or not. It uses the general subroutine `u_0_H_u_0`. -# `psi_energy_two_e` which is the expectation value over the wave function (`psi_det`, `psi_coef`) of the standard two-electrons coulomb operator. It uses the general routine `u_0_H_u_0_two_e`. - - - -EZFIO parameters ----------------- - -.. option:: threshold_davidson - - Thresholds of Davidson's algorithm - - Default: 1.e-10 - -.. option:: n_states_diag - - Number of states to consider during the Davdison diagonalization - - Default: 4 - -.. option:: davidson_sze_max - - Number of micro-iterations before re-contracting - - Default: 8 - -.. option:: state_following - - If |true|, the states are re-ordered to match the input states - - Default: False - -.. option:: disk_based_davidson - - If |true|, a memory-mapped file may be used to store the W and S2 vectors if not enough RAM is available - - Default: True - -.. option:: distributed_davidson - - If |true|, use the distributed algorithm - - Default: True - -.. option:: only_expected_s2 - - If |true|, use filter out all vectors with bad |S^2| values - - Default: True - - -Providers ---------- - -.. c:var:: ci_eigenvectors - - - File : :file:`davidson/diagonalize_ci.irp.f` - - .. code:: fortran - - double precision, allocatable :: ci_electronic_energy (N_states_diag) - double precision, allocatable :: ci_eigenvectors (N_det,N_states_diag) - double precision, allocatable :: ci_s2 (N_states_diag) - - - Eigenvectors/values of the |CI| matrix - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`diag_algorithm` - * :c:data:`dressing_column_h` - * :c:data:`expected_s2` - * :c:data:`h_matrix_all_dets` - * :c:data:`mo_two_e_integrals_in_map` - * :c:data:`n_det` - * :c:data:`n_int` - * :c:data:`n_states` - * :c:data:`n_states_diag` - * :c:data:`nthreads_davidson` - * :c:data:`psi_coef` - * :c:data:`psi_det` - * :c:data:`s2_eig` - * :c:data:`s2_matrix_all_dets` - * :c:data:`s_z` - * :c:data:`threshold_davidson` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`ci_energy` - - -.. c:var:: ci_electronic_energy - - - File : :file:`davidson/diagonalize_ci.irp.f` - - .. code:: fortran - - double precision, allocatable :: ci_electronic_energy (N_states_diag) - double precision, allocatable :: ci_eigenvectors (N_det,N_states_diag) - double precision, allocatable :: ci_s2 (N_states_diag) - - - Eigenvectors/values of the |CI| matrix - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`diag_algorithm` - * :c:data:`dressing_column_h` - * :c:data:`expected_s2` - * :c:data:`h_matrix_all_dets` - * :c:data:`mo_two_e_integrals_in_map` - * :c:data:`n_det` - * :c:data:`n_int` - * :c:data:`n_states` - * :c:data:`n_states_diag` - * :c:data:`nthreads_davidson` - * :c:data:`psi_coef` - * :c:data:`psi_det` - * :c:data:`s2_eig` - * :c:data:`s2_matrix_all_dets` - * :c:data:`s_z` - * :c:data:`threshold_davidson` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`ci_energy` - - -.. c:var:: ci_energy - - - File : :file:`davidson/diagonalize_ci.irp.f` - - .. code:: fortran - - double precision, allocatable :: ci_energy (N_states_diag) - - - :c:data:`n_states` lowest eigenvalues of the |CI| matrix - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ci_electronic_energy` - * :c:data:`mpi_master` - * :c:data:`n_det` - * :c:data:`n_states` - * :c:data:`n_states_diag` - * :c:data:`nuclear_repulsion` - * :c:data:`output_wall_time_0` - - - -.. c:var:: ci_s2 - - - File : :file:`davidson/diagonalize_ci.irp.f` - - .. code:: fortran - - double precision, allocatable :: ci_electronic_energy (N_states_diag) - double precision, allocatable :: ci_eigenvectors (N_det,N_states_diag) - double precision, allocatable :: ci_s2 (N_states_diag) - - - Eigenvectors/values of the |CI| matrix - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`diag_algorithm` - * :c:data:`dressing_column_h` - * :c:data:`expected_s2` - * :c:data:`h_matrix_all_dets` - * :c:data:`mo_two_e_integrals_in_map` - * :c:data:`n_det` - * :c:data:`n_int` - * :c:data:`n_states` - * :c:data:`n_states_diag` - * :c:data:`nthreads_davidson` - * :c:data:`psi_coef` - * :c:data:`psi_det` - * :c:data:`s2_eig` - * :c:data:`s2_matrix_all_dets` - * :c:data:`s_z` - * :c:data:`threshold_davidson` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`ci_energy` - - -.. c:var:: davidson_criterion - - - File : :file:`davidson/parameters.irp.f` - - .. code:: fortran - - character(64) :: davidson_criterion - - - Can be : [ energy | residual | both | wall_time | cpu_time | iterations ] - - - -.. c:var:: dressed_column_idx - - - File : :file:`davidson/diagonalization_hs2_dressed.irp.f` - - .. code:: fortran - - integer, allocatable :: dressed_column_idx (N_states) - - - Index of the dressed columns - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`n_det` - * :c:data:`n_states` - * :c:data:`psi_coef` - - - -.. c:var:: n_states_diag - - - File : :file:`davidson/input.irp.f` - - .. code:: fortran - - integer :: n_states_diag - - - Number of states to consider during the Davdison diagonalization - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ezfio_filename` - * :c:data:`mpi_master` - * :c:data:`n_states` - * :c:data:`output_wall_time_0` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`ci_electronic_energy` - * :c:data:`ci_energy` - * :c:data:`psi_energy` - - -.. c:var:: nthreads_davidson - - - File : :file:`davidson/davidson_parallel.irp.f` - - .. code:: fortran - - integer :: nthreads_davidson - - - Number of threads for Davidson - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`mpi_master` - * :c:data:`nproc` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`ci_electronic_energy` - - -.. c:var:: psi_energy - - - File : :file:`davidson/u0_h_u0.irp.f` - - .. code:: fortran - - double precision, allocatable :: psi_energy (N_states) - double precision, allocatable :: psi_s2 (N_states) - - - psi_energy(i) = :math:`\langle \Psi_i | H | \Psi_i \rangle` - - psi_s2(i) = :math:`\langle \Psi_i | S^2 | \Psi_i \rangle` - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`distributed_davidson` - * :c:data:`n_det` - * :c:data:`n_int` - * :c:data:`n_states` - * :c:data:`n_states_diag` - * :c:data:`psi_coef` - * :c:data:`psi_det` - * :c:data:`psi_det_size` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`psi_energy_two_e` - * :c:data:`psi_energy_with_nucl_rep` - * :c:data:`pt2_e0_denominator` - - -.. c:var:: psi_energy_two_e - - - File : :file:`davidson/u0_wee_u0.irp.f` - - .. code:: fortran - - double precision, allocatable :: psi_energy_two_e (N_states) - - - Energy of the current 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` - * :c:data:`psi_energy` - - - -.. c:var:: psi_energy_with_nucl_rep - - - File : :file:`davidson/u0_h_u0.irp.f` - - .. code:: fortran - - double precision, allocatable :: psi_energy_with_nucl_rep (N_states) - - - Energy of the wave function with the nuclear repulsion energy. - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`n_states` - * :c:data:`nuclear_repulsion` - * :c:data:`psi_energy` - - - -.. c:var:: psi_s2 - - - File : :file:`davidson/u0_h_u0.irp.f` - - .. code:: fortran - - double precision, allocatable :: psi_energy (N_states) - double precision, allocatable :: psi_s2 (N_states) - - - psi_energy(i) = :math:`\langle \Psi_i | H | \Psi_i \rangle` - - psi_s2(i) = :math:`\langle \Psi_i | S^2 | \Psi_i \rangle` - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`distributed_davidson` - * :c:data:`n_det` - * :c:data:`n_int` - * :c:data:`n_states` - * :c:data:`n_states_diag` - * :c:data:`psi_coef` - * :c:data:`psi_det` - * :c:data:`psi_det_size` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`psi_energy_two_e` - * :c:data:`psi_energy_with_nucl_rep` - * :c:data:`pt2_e0_denominator` - - - -Subroutines / functions ------------------------ - -.. c:function:: davidson_collector: - - - File : :file:`davidson/davidson_parallel.irp.f` - - .. code:: fortran - - subroutine davidson_collector(zmq_to_qp_run_socket, zmq_socket_pull, v0, s0, sze, N_st) - - - Routine collecting the results of the workers in Davidson's algorithm. - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`n_det` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`h_s2_u_0_nstates_zmq` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`davidson_pull_results` - - -.. c:function:: davidson_converged: - - - File : :file:`davidson/parameters.irp.f` - - .. code:: fortran - - subroutine davidson_converged(energy,residual,wall,iterations,cpu,N_st,converged) - - - True if the Davidson algorithm is converged - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`threshold_davidson` - * :c:data:`davidson_criterion` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`davidson_diag_hjj_sjj` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`cpu_time` - * :c:func:`wall_time` - - -.. c:function:: davidson_diag_hjj_sjj: - - - File : :file:`davidson/diagonalization_hs2_dressed.irp.f` - - .. code:: fortran - - subroutine davidson_diag_hjj_sjj(dets_in,u_in,H_jj,s2_out,energies,dim_in,sze,N_st,N_st_diag_in,Nint,dressing_state,converged) - - - Davidson diagonalization with specific diagonal elements of the H matrix - - H_jj : specific diagonal H matrix elements to diagonalize de Davidson - - S2_out : Output : s^2 - - dets_in : bitmasks corresponding to determinants - - u_in : guess coefficients on the various states. Overwritten - on exit - - dim_in : leftmost dimension of u_in - - sze : Number of determinants - - N_st : Number of eigenstates - - N_st_diag_in : Number of states in which H is diagonalized. Assumed > sze - - Initial guess vectors are not necessarily orthonormal - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`psi_bilinear_matrix_order_reverse` - * :c:data:`psi_bilinear_matrix_values` - * :c:data:`nthreads_davidson` - * :c:data:`psi_coef` - * :c:data:`dressed_column_idx` - * :c:data:`expected_s2` - * :c:data:`s_z` - * :c:data:`n_det` - * :c:data:`dressing_column_h` - * :c:data:`ezfio_work_dir` - * :c:data:`davidson_sze_max` - * :c:data:`state_following` - * :c:data:`psi_det_alpha_unique` - * :c:data:`nuclear_repulsion` - * :c:data:`nproc` - * :c:data:`qp_max_mem` - * :c:data:`disk_based_davidson` - * :c:data:`s2_eig` - * :c:data:`psi_det_beta_unique` - * :c:data:`only_expected_s2` - * :c:data:`distributed_davidson` - * :c:data:`n_states` - * :c:data:`n_int` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`davidson_diag_hs2` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`c_f_pointer` - * :c:func:`check_mem` - * :c:func:`cpu_time` - * :c:func:`davidson_converged` - * :c:func:`dgemm` - * :c:func:`dswap` - * :c:func:`h_s2_u_0_nstates_openmp` - * :c:func:`h_s2_u_0_nstates_zmq` - * :c:func:`lapack_diag` - * :c:func:`mmap` - * :c:func:`munmap` - * :c:func:`normalize` - * :c:func:`ortho_qr` - * :c:func:`random_number` - * :c:func:`resident_memory` - * :c:func:`sgemm` - * :c:func:`wall_time` - * :c:func:`write_double` - * :c:func:`write_int` - * :c:func:`write_time` - - Touches: - - .. hlist:: - :columns: 3 - - * :c:data:`n_states_diag` - * :c:data:`nthreads_davidson` - - -.. c:function:: davidson_diag_hs2: - - - File : :file:`davidson/diagonalization_hs2_dressed.irp.f` - - .. code:: fortran - - subroutine davidson_diag_hs2(dets_in,u_in,s2_out,dim_in,energies,sze,N_st,N_st_diag,Nint,dressing_state,converged) - - - Davidson diagonalization. - - dets_in : bitmasks corresponding to determinants - - u_in : guess coefficients on the various states. Overwritten - on exit - - dim_in : leftmost dimension of u_in - - sze : Number of determinants - - N_st : Number of eigenstates - - Initial guess vectors are not necessarily orthonormal - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`dressing_column_h` - * :c:data:`mo_two_e_integrals_in_map` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:data:`ci_electronic_energy` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`davidson_diag_hjj_sjj` - - Touches: - - .. hlist:: - :columns: 3 - - * :c:data:`n_states_diag` - * :c:data:`nthreads_davidson` - - -.. c:function:: davidson_pull_results: - - - File : :file:`davidson/davidson_parallel.irp.f` - - .. code:: fortran - - subroutine davidson_pull_results(zmq_socket_pull, v_t, s_t, imin, imax, task_id) - - - Pull the results of $H|U \rangle$ on the master. - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`n_states_diag` - * :c:data:`n_det` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`davidson_collector` - - -.. c:function:: davidson_push_results: - - - File : :file:`davidson/davidson_parallel.irp.f` - - .. code:: fortran - - subroutine davidson_push_results(zmq_socket_push, v_t, s_t, imin, imax, task_id) - - - Push the results of $H|U \rangle$ from a worker to the master. - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`n_states_diag` - * :c:data:`n_det` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`davidson_slave_work` - - -.. c:function:: davidson_run_slave: - - - File : :file:`davidson/davidson_parallel.irp.f` - - .. code:: fortran - - subroutine davidson_run_slave(thread,iproc) - - - Slave routine for Davidson's diagonalization. - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`n_states_diag` - * :c:data:`n_det` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`davidson_slave_inproc` - * :c:func:`davidson_slave_tcp` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`davidson_slave_work` - * :c:func:`end_zmq_push_socket` - * :c:func:`end_zmq_to_qp_run_socket` - * :c:func:`sleep` - - -.. c:function:: davidson_slave_inproc: - - - File : :file:`davidson/davidson_parallel.irp.f` - - .. code:: fortran - - subroutine davidson_slave_inproc(i) - - - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`h_s2_u_0_nstates_zmq` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`davidson_run_slave` - - -.. c:function:: davidson_slave_tcp: - - - File : :file:`davidson/davidson_parallel.irp.f` - - .. code:: fortran - - subroutine davidson_slave_tcp(i) - - - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`run_slave_main` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`davidson_run_slave` - - -.. c:function:: davidson_slave_work: - - - File : :file:`davidson/davidson_parallel.irp.f` - - .. code:: fortran - - subroutine davidson_slave_work(zmq_to_qp_run_socket, zmq_socket_push, N_st, sze, worker_id) - - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`psi_det_beta_unique` - * :c:data:`psi_bilinear_matrix_order_transp_reverse` - * :c:data:`psi_det_alpha_unique` - * :c:data:`mpi_initialized` - * :c:data:`n_det` - * :c:data:`psi_bilinear_matrix_transp_values` - * :c:data:`psi_bilinear_matrix_values` - * :c:data:`nproc` - * :c:data:`ref_bitmask_energy` - * :c:data:`psi_bilinear_matrix_columns_loc` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`davidson_run_slave` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`davidson_push_results` - * :c:func:`h_s2_u_0_nstates_openmp_work` - * :c:func:`sleep` - - -.. c:function:: diagonalize_ci: - - - File : :file:`davidson/diagonalize_ci.irp.f` - - .. code:: fortran - - subroutine diagonalize_CI - - - Replace the coefficients of the |CI| states by the coefficients of the - eigenstates of the |CI| matrix. - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`psi_coef` - * :c:data:`ci_electronic_energy` - * :c:data:`n_states` - * :c:data:`n_det` - * :c:data:`ci_electronic_energy` - * :c:data:`ci_energy` - * :c:data:`ci_electronic_energy` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`remove_small_contributions` - * :c:func:`run_cipsi` - * :c:func:`run_stochastic_cipsi` - - Touches: - - .. hlist:: - :columns: 3 - - * :c:data:`ci_electronic_energy` - * :c:data:`ci_electronic_energy` - * :c:data:`ci_energy` - * :c:data:`ci_electronic_energy` - * :c:data:`psi_coef` - - -.. c:function:: h_s2_u_0_nstates_openmp: - - - File : :file:`davidson/u0_h_u0.irp.f` - - .. code:: fortran - - subroutine H_S2_u_0_nstates_openmp(v_0,s_0,u_0,N_st,sze) - - - Computes $v_0 = H|u_0\rangle$ and $s_0 = S^2 |u_0\rangle$. - - Assumes that the determinants are in psi_det - - istart, iend, ishift, istep are used in ZMQ parallelization. - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`psi_bilinear_matrix_order_reverse` - * :c:data:`psi_bilinear_matrix_values` - * :c:data:`n_det` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`davidson_diag_hjj_sjj` - * :c:func:`u_0_h_u_0` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`dset_order` - * :c:func:`dtranspose` - * :c:func:`h_s2_u_0_nstates_openmp_work` - - -.. c:function:: h_s2_u_0_nstates_openmp_work: - - - File : :file:`davidson/u0_h_u0.irp.f` - - .. code:: fortran - - subroutine H_S2_u_0_nstates_openmp_work(v_t,s_t,u_t,N_st,sze,istart,iend,ishift,istep) - - - Computes $v_t = H|u_t\rangle$ and $s_t = S^2 |u_t\rangle$ - - Default should be 1,N_det,0,1 - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ref_bitmask_energy` - * :c:data:`n_det` - * :c:data:`n_int` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`davidson_slave_work` - * :c:func:`h_s2_u_0_nstates_openmp` - - Calls: - - .. 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:function:: h_s2_u_0_nstates_openmp_work_1: - - - File : :file:`davidson/u0_h_u0.irp.f_template_631` - - .. code:: fortran - - subroutine H_S2_u_0_nstates_openmp_work_1(v_t,s_t,u_t,N_st,sze,istart,iend,ishift,istep) - - - Computes $v_t = H|u_t angle$ and $s_t = S^2 |u_t angle$ - - Default should be 1,N_det,0,1 - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`psi_det_beta_unique` - * :c:data:`psi_bilinear_matrix_order_transp_reverse` - * :c:data:`psi_det_alpha_unique` - * :c:data:`psi_bilinear_matrix_transp_rows_loc` - * :c:data:`singles_beta_csc` - * :c:data:`n_det` - * :c:data:`psi_bilinear_matrix_transp_values` - * :c:data:`nthreads_davidson` - * :c:data:`psi_bilinear_matrix_values` - * :c:data:`n_int` - * :c:data:`singles_beta_csc_idx` - * :c:data:`psi_bilinear_matrix_columns_loc` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`h_s2_u_0_nstates_openmp_work` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`get_all_spin_singles_1` - * :c:func:`get_all_spin_singles_and_doubles_1` - * :c:func:`get_s2` - * :c:func:`i_h_j_double_alpha_beta` - * :c:func:`i_h_j_double_spin` - * :c:func:`i_h_j_mono_spin` - - -.. c:function:: h_s2_u_0_nstates_openmp_work_2: - - - File : :file:`davidson/u0_h_u0.irp.f_template_631` - - .. code:: fortran - - subroutine H_S2_u_0_nstates_openmp_work_2(v_t,s_t,u_t,N_st,sze,istart,iend,ishift,istep) - - - Computes $v_t = H|u_t angle$ and $s_t = S^2 |u_t angle$ - - Default should be 1,N_det,0,1 - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`psi_det_beta_unique` - * :c:data:`psi_bilinear_matrix_order_transp_reverse` - * :c:data:`psi_det_alpha_unique` - * :c:data:`psi_bilinear_matrix_transp_rows_loc` - * :c:data:`singles_beta_csc` - * :c:data:`n_det` - * :c:data:`psi_bilinear_matrix_transp_values` - * :c:data:`nthreads_davidson` - * :c:data:`psi_bilinear_matrix_values` - * :c:data:`n_int` - * :c:data:`singles_beta_csc_idx` - * :c:data:`psi_bilinear_matrix_columns_loc` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`h_s2_u_0_nstates_openmp_work` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`get_all_spin_singles_2` - * :c:func:`get_all_spin_singles_and_doubles_2` - * :c:func:`get_s2` - * :c:func:`i_h_j_double_alpha_beta` - * :c:func:`i_h_j_double_spin` - * :c:func:`i_h_j_mono_spin` - - -.. c:function:: h_s2_u_0_nstates_openmp_work_3: - - - File : :file:`davidson/u0_h_u0.irp.f_template_631` - - .. code:: fortran - - subroutine H_S2_u_0_nstates_openmp_work_3(v_t,s_t,u_t,N_st,sze,istart,iend,ishift,istep) - - - Computes $v_t = H|u_t angle$ and $s_t = S^2 |u_t angle$ - - Default should be 1,N_det,0,1 - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`psi_det_beta_unique` - * :c:data:`psi_bilinear_matrix_order_transp_reverse` - * :c:data:`psi_det_alpha_unique` - * :c:data:`psi_bilinear_matrix_transp_rows_loc` - * :c:data:`singles_beta_csc` - * :c:data:`n_det` - * :c:data:`psi_bilinear_matrix_transp_values` - * :c:data:`nthreads_davidson` - * :c:data:`psi_bilinear_matrix_values` - * :c:data:`n_int` - * :c:data:`singles_beta_csc_idx` - * :c:data:`psi_bilinear_matrix_columns_loc` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`h_s2_u_0_nstates_openmp_work` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`get_all_spin_singles_3` - * :c:func:`get_all_spin_singles_and_doubles_3` - * :c:func:`get_s2` - * :c:func:`i_h_j_double_alpha_beta` - * :c:func:`i_h_j_double_spin` - * :c:func:`i_h_j_mono_spin` - - -.. c:function:: h_s2_u_0_nstates_openmp_work_4: - - - File : :file:`davidson/u0_h_u0.irp.f_template_631` - - .. code:: fortran - - subroutine H_S2_u_0_nstates_openmp_work_4(v_t,s_t,u_t,N_st,sze,istart,iend,ishift,istep) - - - Computes $v_t = H|u_t angle$ and $s_t = S^2 |u_t angle$ - - Default should be 1,N_det,0,1 - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`psi_det_beta_unique` - * :c:data:`psi_bilinear_matrix_order_transp_reverse` - * :c:data:`psi_det_alpha_unique` - * :c:data:`psi_bilinear_matrix_transp_rows_loc` - * :c:data:`singles_beta_csc` - * :c:data:`n_det` - * :c:data:`psi_bilinear_matrix_transp_values` - * :c:data:`nthreads_davidson` - * :c:data:`psi_bilinear_matrix_values` - * :c:data:`n_int` - * :c:data:`singles_beta_csc_idx` - * :c:data:`psi_bilinear_matrix_columns_loc` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`h_s2_u_0_nstates_openmp_work` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`get_all_spin_singles_4` - * :c:func:`get_all_spin_singles_and_doubles_4` - * :c:func:`get_s2` - * :c:func:`i_h_j_double_alpha_beta` - * :c:func:`i_h_j_double_spin` - * :c:func:`i_h_j_mono_spin` - - -.. c:function:: h_s2_u_0_nstates_openmp_work_n_int: - - - File : :file:`davidson/u0_h_u0.irp.f_template_631` - - .. code:: fortran - - subroutine H_S2_u_0_nstates_openmp_work_N_int(v_t,s_t,u_t,N_st,sze,istart,iend,ishift,istep) - - - Computes $v_t = H|u_t angle$ and $s_t = S^2 |u_t angle$ - - Default should be 1,N_det,0,1 - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`psi_det_beta_unique` - * :c:data:`psi_bilinear_matrix_order_transp_reverse` - * :c:data:`psi_det_alpha_unique` - * :c:data:`psi_bilinear_matrix_transp_rows_loc` - * :c:data:`singles_beta_csc` - * :c:data:`n_det` - * :c:data:`psi_bilinear_matrix_transp_values` - * :c:data:`nthreads_davidson` - * :c:data:`psi_bilinear_matrix_values` - * :c:data:`n_int` - * :c:data:`singles_beta_csc_idx` - * :c:data:`psi_bilinear_matrix_columns_loc` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`h_s2_u_0_nstates_openmp_work` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`get_all_spin_singles_and_doubles_n_int` - * :c:func:`get_all_spin_singles_n_int` - * :c:func:`get_s2` - * :c:func:`i_h_j_double_alpha_beta` - * :c:func:`i_h_j_double_spin` - * :c:func:`i_h_j_mono_spin` - - -.. c:function:: h_s2_u_0_nstates_zmq: - - - File : :file:`davidson/davidson_parallel.irp.f` - - .. code:: fortran - - subroutine H_S2_u_0_nstates_zmq(v_0,s_0,u_0,N_st,sze) - - - Computes $v_0 = H|u_0\rangle$ and $s_0 = S^2 |u_0\rangle$ - - n : number of determinants - - H_jj : array of $\langle j|H|j \rangle$ - - S2_jj : array of $\langle j|S^2|j \rangle$ - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`psi_det_beta_unique` - * :c:data:`psi_bilinear_matrix_order_transp_reverse` - * :c:data:`psi_det_alpha_unique` - * :c:data:`psi_bilinear_matrix_order_reverse` - * :c:data:`mpi_initialized` - * :c:data:`n_det` - * :c:data:`psi_bilinear_matrix_transp_values` - * :c:data:`psi_bilinear_matrix_values` - * :c:data:`nproc` - * :c:data:`ref_bitmask_energy` - * :c:data:`n_states_diag` - * :c:data:`psi_bilinear_matrix_columns_loc` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`davidson_diag_hjj_sjj` - * :c:func:`u_0_h_u_0` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`davidson_collector` - * :c:func:`davidson_slave_inproc` - * :c:func:`dset_order` - * :c:func:`dtranspose` - * :c:func:`end_parallel_job` - * :c:func:`new_parallel_job` - * :c:func:`omp_set_nested` - - Touches: - - .. hlist:: - :columns: 3 - - * :c:data:`n_states_diag` - - -.. c:function:: h_s2_u_0_two_e_nstates_openmp: - - - File : :file:`davidson/u0_wee_u0.irp.f` - - .. code:: fortran - - subroutine H_S2_u_0_two_e_nstates_openmp(v_0,s_0,u_0,N_st,sze) - - - Computes $v_0 = H|u_0\rangle$ and $s_0 = S^2 |u_0\rangle$ - - Assumes that the determinants are in psi_det - - istart, iend, ishift, istep are used in ZMQ parallelization. - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`psi_bilinear_matrix_order_reverse` - * :c:data:`psi_bilinear_matrix_values` - * :c:data:`n_det` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`u_0_h_u_0_two_e` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`dset_order` - * :c:func:`dtranspose` - * :c:func:`h_s2_u_0_two_e_nstates_openmp_work` - - -.. c:function:: h_s2_u_0_two_e_nstates_openmp_work: - - - File : :file:`davidson/u0_wee_u0.irp.f` - - .. code:: fortran - - subroutine H_S2_u_0_two_e_nstates_openmp_work(v_t,s_t,u_t,N_st,sze,istart,iend,ishift,istep) - - - Computes $v_t = H|u_t\rangle$ and $s_t = S^2 |u_t\rangle$ - - Default should be 1,N_det,0,1 - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ref_bitmask_energy` - * :c:data:`n_det` - * :c:data:`n_int` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`h_s2_u_0_two_e_nstates_openmp` - - Calls: - - .. 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` - - -.. c:function:: h_s2_u_0_two_e_nstates_openmp_work_1: - - - File : :file:`davidson/u0_wee_u0.irp.f_template_457` - - .. code:: fortran - - subroutine H_S2_u_0_two_e_nstates_openmp_work_1(v_t,s_t,u_t,N_st,sze,istart,iend,ishift,istep) - - - Computes $v_t = H|u_t angle$ and $s_t = S^2 |u_t angle$ - - Default should be 1,N_det,0,1 - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`psi_det_beta_unique` - * :c:data:`psi_bilinear_matrix_order_transp_reverse` - * :c:data:`psi_det_alpha_unique` - * :c:data:`psi_bilinear_matrix_transp_rows_loc` - * :c:data:`n_det` - * :c:data:`psi_bilinear_matrix_transp_values` - * :c:data:`nthreads_davidson` - * :c:data:`psi_bilinear_matrix_values` - * :c:data:`n_int` - * :c:data:`psi_bilinear_matrix_columns_loc` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`h_s2_u_0_two_e_nstates_openmp_work` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`get_all_spin_singles_1` - * :c:func:`get_all_spin_singles_and_doubles_1` - * :c:func:`get_s2` - * :c:func:`i_h_j_double_alpha_beta` - * :c:func:`i_h_j_double_spin` - * :c:func:`i_wee_j_mono` - - -.. c:function:: h_s2_u_0_two_e_nstates_openmp_work_2: - - - File : :file:`davidson/u0_wee_u0.irp.f_template_457` - - .. code:: fortran - - subroutine H_S2_u_0_two_e_nstates_openmp_work_2(v_t,s_t,u_t,N_st,sze,istart,iend,ishift,istep) - - - Computes $v_t = H|u_t angle$ and $s_t = S^2 |u_t angle$ - - Default should be 1,N_det,0,1 - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`psi_det_beta_unique` - * :c:data:`psi_bilinear_matrix_order_transp_reverse` - * :c:data:`psi_det_alpha_unique` - * :c:data:`psi_bilinear_matrix_transp_rows_loc` - * :c:data:`n_det` - * :c:data:`psi_bilinear_matrix_transp_values` - * :c:data:`nthreads_davidson` - * :c:data:`psi_bilinear_matrix_values` - * :c:data:`n_int` - * :c:data:`psi_bilinear_matrix_columns_loc` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`h_s2_u_0_two_e_nstates_openmp_work` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`get_all_spin_singles_2` - * :c:func:`get_all_spin_singles_and_doubles_2` - * :c:func:`get_s2` - * :c:func:`i_h_j_double_alpha_beta` - * :c:func:`i_h_j_double_spin` - * :c:func:`i_wee_j_mono` - - -.. c:function:: h_s2_u_0_two_e_nstates_openmp_work_3: - - - File : :file:`davidson/u0_wee_u0.irp.f_template_457` - - .. code:: fortran - - subroutine H_S2_u_0_two_e_nstates_openmp_work_3(v_t,s_t,u_t,N_st,sze,istart,iend,ishift,istep) - - - Computes $v_t = H|u_t angle$ and $s_t = S^2 |u_t angle$ - - Default should be 1,N_det,0,1 - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`psi_det_beta_unique` - * :c:data:`psi_bilinear_matrix_order_transp_reverse` - * :c:data:`psi_det_alpha_unique` - * :c:data:`psi_bilinear_matrix_transp_rows_loc` - * :c:data:`n_det` - * :c:data:`psi_bilinear_matrix_transp_values` - * :c:data:`nthreads_davidson` - * :c:data:`psi_bilinear_matrix_values` - * :c:data:`n_int` - * :c:data:`psi_bilinear_matrix_columns_loc` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`h_s2_u_0_two_e_nstates_openmp_work` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`get_all_spin_singles_3` - * :c:func:`get_all_spin_singles_and_doubles_3` - * :c:func:`get_s2` - * :c:func:`i_h_j_double_alpha_beta` - * :c:func:`i_h_j_double_spin` - * :c:func:`i_wee_j_mono` - - -.. c:function:: h_s2_u_0_two_e_nstates_openmp_work_4: - - - File : :file:`davidson/u0_wee_u0.irp.f_template_457` - - .. code:: fortran - - subroutine H_S2_u_0_two_e_nstates_openmp_work_4(v_t,s_t,u_t,N_st,sze,istart,iend,ishift,istep) - - - Computes $v_t = H|u_t angle$ and $s_t = S^2 |u_t angle$ - - Default should be 1,N_det,0,1 - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`psi_det_beta_unique` - * :c:data:`psi_bilinear_matrix_order_transp_reverse` - * :c:data:`psi_det_alpha_unique` - * :c:data:`psi_bilinear_matrix_transp_rows_loc` - * :c:data:`n_det` - * :c:data:`psi_bilinear_matrix_transp_values` - * :c:data:`nthreads_davidson` - * :c:data:`psi_bilinear_matrix_values` - * :c:data:`n_int` - * :c:data:`psi_bilinear_matrix_columns_loc` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`h_s2_u_0_two_e_nstates_openmp_work` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`get_all_spin_singles_4` - * :c:func:`get_all_spin_singles_and_doubles_4` - * :c:func:`get_s2` - * :c:func:`i_h_j_double_alpha_beta` - * :c:func:`i_h_j_double_spin` - * :c:func:`i_wee_j_mono` - - -.. c:function:: h_s2_u_0_two_e_nstates_openmp_work_n_int: - - - File : :file:`davidson/u0_wee_u0.irp.f_template_457` - - .. code:: fortran - - subroutine H_S2_u_0_two_e_nstates_openmp_work_N_int(v_t,s_t,u_t,N_st,sze,istart,iend,ishift,istep) - - - Computes $v_t = H|u_t angle$ and $s_t = S^2 |u_t angle$ - - Default should be 1,N_det,0,1 - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`psi_det_beta_unique` - * :c:data:`psi_bilinear_matrix_order_transp_reverse` - * :c:data:`psi_det_alpha_unique` - * :c:data:`psi_bilinear_matrix_transp_rows_loc` - * :c:data:`n_det` - * :c:data:`psi_bilinear_matrix_transp_values` - * :c:data:`nthreads_davidson` - * :c:data:`psi_bilinear_matrix_values` - * :c:data:`n_int` - * :c:data:`psi_bilinear_matrix_columns_loc` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`h_s2_u_0_two_e_nstates_openmp_work` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`get_all_spin_singles_and_doubles_n_int` - * :c:func:`get_all_spin_singles_n_int` - * :c:func:`get_s2` - * :c:func:`i_h_j_double_alpha_beta` - * :c:func:`i_h_j_double_spin` - * :c:func:`i_wee_j_mono` - - -.. c:function:: u_0_h_u_0: - - - File : :file:`davidson/u0_h_u0.irp.f` - - .. code:: fortran - - subroutine u_0_H_u_0(e_0,s_0,u_0,n,keys_tmp,Nint,N_st,sze) - - - Computes $E_0 = \frac{\langle u_0|H|u_0 \rangle}{\langle u_0|u_0 \rangle}$ - - and $S_0 = \frac{\langle u_0|S^2|u_0 \rangle}{\langle u_0|u_0 \rangle}$ - - n : number of determinants - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`n_states_diag` - * :c:data:`n_states` - * :c:data:`distributed_davidson` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:data:`psi_energy` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`h_s2_u_0_nstates_openmp` - * :c:func:`h_s2_u_0_nstates_zmq` - - Touches: - - .. hlist:: - :columns: 3 - - * :c:data:`n_states_diag` - - -.. c:function:: u_0_h_u_0_two_e: - - - File : :file:`davidson/u0_wee_u0.irp.f` - - .. code:: fortran - - subroutine u_0_H_u_0_two_e(e_0,u_0,n,keys_tmp,Nint,N_st,sze) - - - Computes $E_0 = \frac{ \langle u_0|H|u_0\rangle}{\langle u_0|u_0 \rangle}$. - - n : number of determinants - - - Called by: - - .. hlist:: - :columns: 3 - - * :c:data:`psi_energy_two_e` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`h_s2_u_0_two_e_nstates_openmp` - - -.. c:function:: zmq_get_n_states_diag: - - - File : :file:`davidson/davidson_parallel.irp.f` - - .. code:: fortran - - integer function zmq_get_N_states_diag(zmq_to_qp_run_socket, worker_id) - - - Get N_states_diag from the qp_run scheduler - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`n_states_diag` - * :c:data:`zmq_state` - * :c:data:`mpi_master` - - Touches: - - .. hlist:: - :columns: 3 - - * :c:data:`n_states_diag` - - -.. c:function:: zmq_put_n_states_diag: - - - File : :file:`davidson/davidson_parallel.irp.f` - - .. code:: fortran - - integer function zmq_put_N_states_diag(zmq_to_qp_run_socket,worker_id) - - - Put N_states_diag on the qp_run scheduler - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`n_states_diag` - * :c:data:`zmq_state` - diff --git a/docs/source/modules/davidson_dressed.rst b/docs/source/modules/davidson_dressed.rst deleted file mode 100644 index 38d8fc1e..00000000 --- a/docs/source/modules/davidson_dressed.rst +++ /dev/null @@ -1,13 +0,0 @@ -.. _module_davidson_dressed: - -.. program:: davidson_dressed - -.. default-role:: option - -================ -davidson_dressed -================ - -Davidson with single-column dressing. - - diff --git a/docs/source/modules/davidson_undressed.rst b/docs/source/modules/davidson_undressed.rst deleted file mode 100644 index 326f48d9..00000000 --- a/docs/source/modules/davidson_undressed.rst +++ /dev/null @@ -1,75 +0,0 @@ -.. _module_davidson_undressed: - -.. program:: davidson_undressed - -.. default-role:: option - -================== -davidson_undressed -================== - -Module for main files Davidson's algorithm with no dressing. - - - - -Providers ---------- - -.. c:var:: dressing_column_h - - - File : :file:`davidson_undressed/null_dressing_vector.irp.f` - - .. code:: fortran - - double precision, allocatable :: dressing_column_h (N_det,N_states) - double precision, allocatable :: dressing_column_s (N_det,N_states) - - - Null dressing vectors - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`n_det` - * :c:data:`n_states` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`ci_electronic_energy` - - -.. c:var:: dressing_column_s - - - File : :file:`davidson_undressed/null_dressing_vector.irp.f` - - .. code:: fortran - - double precision, allocatable :: dressing_column_h (N_det,N_states) - double precision, allocatable :: dressing_column_s (N_det,N_states) - - - Null dressing vectors - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`n_det` - * :c:data:`n_states` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`ci_electronic_energy` - diff --git a/docs/source/modules/density_for_dft.rst b/docs/source/modules/density_for_dft.rst deleted file mode 100644 index 28708f69..00000000 --- a/docs/source/modules/density_for_dft.rst +++ /dev/null @@ -1,306 +0,0 @@ -.. _module_density_for_dft: - -.. program:: density_for_dft - -.. default-role:: option - -=============== -density_for_dft -=============== - - -This module defines the *provider* of the density used for the DFT related calculations. -This definition is done through the keyword :option:`density_for_dft density_for_dft`. -The density can be: - -* WFT : the density is computed with a potentially multi determinant wave function (see variables `psi_det` and `psi_det`)# input_density : the density is set to a density previously stored in the |EZFIO| folder (see ``aux_quantities``) -* damping_rs_dft : the density is damped between the input_density and the WFT density, with a damping factor of :option:`density_for_dft damping_for_rs_dft` - - - - -EZFIO parameters ----------------- - -.. option:: density_for_dft - - Type of density used for DFT calculation. If set to WFT , it uses the density of the wave function stored in (psi_det,psi_coef). If set to input_density it uses the one-body dm stored in aux_quantities/ . If set to damping_rs_dft it uses the damped density between WFT and input_density. In the ks_scf and rs_ks_scf programs, it is set to WFT. - - Default: WFT - -.. option:: damping_for_rs_dft - - damping factor for the density used in RSFT. - - Default: 0.5 - - -Providers ---------- - -.. c:var:: one_body_dm_mo_alpha_one_det - - - File : :file:`density_for_dft/density_for_dft.irp.f` - - .. code:: fortran - - double precision, allocatable :: one_body_dm_mo_alpha_one_det (mo_num,mo_num,N_states) - double precision, allocatable :: one_body_dm_mo_beta_one_det (mo_num,mo_num,N_states) - - - One body density matrix on the |MO| basis for a single determinant - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`elec_alpha_num` - * :c:data:`elec_beta_num` - * :c:data:`mo_num` - * :c:data:`n_states` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`one_e_dm_mo_alpha_for_dft` - * :c:data:`one_e_dm_mo_beta_for_dft` - - -.. c:var:: one_body_dm_mo_beta_one_det - - - File : :file:`density_for_dft/density_for_dft.irp.f` - - .. code:: fortran - - double precision, allocatable :: one_body_dm_mo_alpha_one_det (mo_num,mo_num,N_states) - double precision, allocatable :: one_body_dm_mo_beta_one_det (mo_num,mo_num,N_states) - - - One body density matrix on the |MO| basis for a single determinant - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`elec_alpha_num` - * :c:data:`elec_beta_num` - * :c:data:`mo_num` - * :c:data:`n_states` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`one_e_dm_mo_alpha_for_dft` - * :c:data:`one_e_dm_mo_beta_for_dft` - - -.. c:var:: one_e_dm_alpha_ao_for_dft - - - File : :file:`density_for_dft/density_for_dft.irp.f` - - .. code:: fortran - - double precision, allocatable :: one_e_dm_alpha_ao_for_dft (ao_num,ao_num,N_states) - double precision, allocatable :: one_e_dm_beta_ao_for_dft (ao_num,ao_num,N_states) - - - one body density matrix on the AO basis based on one_e_dm_mo_alpha_for_dft - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`mo_coef` - * :c:data:`mo_num` - * :c:data:`n_states` - * :c:data:`one_e_dm_mo_alpha_for_dft` - * :c:data:`one_e_dm_mo_beta_for_dft` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`one_e_dm_alpha_at_r` - * :c:data:`one_e_dm_alpha_in_r` - * :c:data:`one_e_dm_and_grad_alpha_in_r` - - -.. c:var:: one_e_dm_average_mo_for_dft - - - File : :file:`density_for_dft/density_for_dft.irp.f` - - .. code:: fortran - - double precision, allocatable :: one_e_dm_average_mo_for_dft (mo_num,mo_num) - - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`mo_num` - * :c:data:`n_states` - * :c:data:`one_e_dm_mo_for_dft` - * :c:data:`state_average_weight` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`short_range_hartree_operator` - - -.. c:var:: one_e_dm_beta_ao_for_dft - - - File : :file:`density_for_dft/density_for_dft.irp.f` - - .. code:: fortran - - double precision, allocatable :: one_e_dm_alpha_ao_for_dft (ao_num,ao_num,N_states) - double precision, allocatable :: one_e_dm_beta_ao_for_dft (ao_num,ao_num,N_states) - - - one body density matrix on the AO basis based on one_e_dm_mo_alpha_for_dft - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`mo_coef` - * :c:data:`mo_num` - * :c:data:`n_states` - * :c:data:`one_e_dm_mo_alpha_for_dft` - * :c:data:`one_e_dm_mo_beta_for_dft` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`one_e_dm_alpha_at_r` - * :c:data:`one_e_dm_alpha_in_r` - * :c:data:`one_e_dm_and_grad_alpha_in_r` - - -.. c:var:: one_e_dm_mo_alpha_for_dft - - - File : :file:`density_for_dft/density_for_dft.irp.f` - - .. code:: fortran - - double precision, allocatable :: one_e_dm_mo_alpha_for_dft (mo_num,mo_num,N_states) - - - density matrix for alpha electrons in the MO basis used for all DFT calculations based on the density - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`damping_for_rs_dft` - * :c:data:`data_one_e_dm_alpha_mo` - * :c:data:`density_for_dft` - * :c:data:`mo_coef` - * :c:data:`mo_num` - * :c:data:`n_states` - * :c:data:`one_body_dm_mo_alpha_one_det` - * :c:data:`one_e_dm_mo_alpha` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`one_e_dm_alpha_ao_for_dft` - * :c:data:`one_e_dm_mo_for_dft` - * :c:data:`psi_dft_energy_kinetic` - * :c:data:`trace_v_xc` - - -.. c:var:: one_e_dm_mo_beta_for_dft - - - File : :file:`density_for_dft/density_for_dft.irp.f` - - .. code:: fortran - - double precision, allocatable :: one_e_dm_mo_beta_for_dft (mo_num,mo_num,N_states) - - - density matrix for beta electrons in the MO basis used for all DFT calculations based on the density - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`damping_for_rs_dft` - * :c:data:`data_one_e_dm_beta_mo` - * :c:data:`density_for_dft` - * :c:data:`mo_coef` - * :c:data:`mo_num` - * :c:data:`n_states` - * :c:data:`one_body_dm_mo_alpha_one_det` - * :c:data:`one_e_dm_mo_alpha` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`one_e_dm_alpha_ao_for_dft` - * :c:data:`one_e_dm_mo_for_dft` - * :c:data:`psi_dft_energy_kinetic` - * :c:data:`trace_v_xc` - - -.. c:var:: one_e_dm_mo_for_dft - - - File : :file:`density_for_dft/density_for_dft.irp.f` - - .. code:: fortran - - double precision, allocatable :: one_e_dm_mo_for_dft (mo_num,mo_num,N_states) - - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`mo_num` - * :c:data:`n_states` - * :c:data:`one_e_dm_mo_alpha_for_dft` - * :c:data:`one_e_dm_mo_beta_for_dft` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`one_e_dm_average_mo_for_dft` - * :c:data:`short_range_hartree_operator` - diff --git a/docs/source/modules/determinants.rst b/docs/source/modules/determinants.rst deleted file mode 100644 index e6f1ddd7..00000000 --- a/docs/source/modules/determinants.rst +++ /dev/null @@ -1,7922 +0,0 @@ -.. _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 - - -.. 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 - - 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 = / - - 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` - diff --git a/docs/source/modules/dft_keywords.rst b/docs/source/modules/dft_keywords.rst deleted file mode 100644 index a2ad749a..00000000 --- a/docs/source/modules/dft_keywords.rst +++ /dev/null @@ -1,68 +0,0 @@ -.. _module_dft_keywords: - -.. program:: dft_keywords - -.. default-role:: option - -============ -dft_keywords -============ - -This module contains the main keywords related to a DFT calculation or RS-DFT calculation, such as: - -* :option:`dft_keywords exchange_functional` -* :option:`dft_keywords correlation_functional` -* :option:`dft_keywords HF_exchange` : only relevent for the :c:func:`rs_ks_scf` program - -The keyword for the **range separation parameter** :math:`\mu` is the :option:`ao_two_e_erf_ints mu_erf` keyword. - -The keyword for the type of density used in RS-DFT calculation with a multi-configurational wave function is the :option:`density_for_dft density_for_dft` keyword. - - - -EZFIO parameters ----------------- - -.. option:: exchange_functional - - name of the exchange functional - - Default: short_range_LDA - -.. option:: correlation_functional - - name of the correlation functional - - Default: short_range_LDA - -.. option:: HF_exchange - - Percentage of HF exchange in the DFT model - - Default: 0. - - -Providers ---------- - -.. c:var:: dft_type - - - File : :file:`dft_keywords/keywords.irp.f` - - .. code:: fortran - - character*(32) :: dft_type - - - defines the type of DFT applied: LDA, GGA etc ... - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`correlation_functional` - * :c:data:`exchange_functional` - - diff --git a/docs/source/modules/dft_utils_in_r.rst b/docs/source/modules/dft_utils_in_r.rst deleted file mode 100644 index 4a011cc8..00000000 --- a/docs/source/modules/dft_utils_in_r.rst +++ /dev/null @@ -1,876 +0,0 @@ -.. _module_dft_utils_in_r: - -.. program:: dft_utils_in_r - -.. default-role:: option - -============== -dft_utils_in_r -============== - -This module contains most of the fundamental quantities (AOs, MOs or density derivatives) evaluated in real-space representation that are needed for the various DFT modules. - -As these quantities might be used and re-used, the values at each point of the grid are stored (see ``becke_numerical_grid`` for more information on the grid). - -The main providers for this module are: - -* `aos_in_r_array`: values of the |AO| basis on the grid point. -* `mos_in_r_array`: values of the |MO| basis on the grid point. -* `one_e_dm_and_grad_alpha_in_r`: values of the density and its gradienst on the grid points. - - - - -Providers ---------- - -.. c:var:: aos_grad_in_r_array - - - File : :file:`dft_utils_in_r/ao_in_r.irp.f` - - .. code:: fortran - - double precision, allocatable :: aos_grad_in_r_array (ao_num,n_points_final_grid,3) - double precision, allocatable :: aos_grad_in_r_array_transp (n_points_final_grid,ao_num,3) - double precision, allocatable :: aos_grad_in_r_array_transp_xyz (3,n_points_final_grid,ao_num) - - - aos_grad_in_r_array(i,j,k) = value of the kth component of the gradient of ith ao on the jth grid point - - aos_grad_in_r_array_transp(i,j,k) = value of the kth component of the gradient of jth ao on the ith grid point - - k = 1 : x, k= 2, y, k 3, z - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_coef_normalized_ordered_transp_per_nucl` - * :c:data:`ao_expo_ordered_transp_per_nucl` - * :c:data:`ao_num` - * :c:data:`ao_power_ordered_transp_per_nucl` - * :c:data:`ao_prim_num` - * :c:data:`final_grid_points` - * :c:data:`n_points_final_grid` - * :c:data:`nucl_aos_transposed` - * :c:data:`nucl_coord` - * :c:data:`nucl_n_aos` - * :c:data:`nucl_num` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`aos_sr_vc_alpha_pbe_w` - * :c:data:`aos_vc_alpha_pbe_w` - * :c:data:`mos_grad_in_r_array` - * :c:data:`potential_sr_x_alpha_ao_pbe` - * :c:data:`potential_x_alpha_ao_pbe` - - -.. c:var:: aos_grad_in_r_array_transp - - - File : :file:`dft_utils_in_r/ao_in_r.irp.f` - - .. code:: fortran - - double precision, allocatable :: aos_grad_in_r_array (ao_num,n_points_final_grid,3) - double precision, allocatable :: aos_grad_in_r_array_transp (n_points_final_grid,ao_num,3) - double precision, allocatable :: aos_grad_in_r_array_transp_xyz (3,n_points_final_grid,ao_num) - - - aos_grad_in_r_array(i,j,k) = value of the kth component of the gradient of ith ao on the jth grid point - - aos_grad_in_r_array_transp(i,j,k) = value of the kth component of the gradient of jth ao on the ith grid point - - k = 1 : x, k= 2, y, k 3, z - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_coef_normalized_ordered_transp_per_nucl` - * :c:data:`ao_expo_ordered_transp_per_nucl` - * :c:data:`ao_num` - * :c:data:`ao_power_ordered_transp_per_nucl` - * :c:data:`ao_prim_num` - * :c:data:`final_grid_points` - * :c:data:`n_points_final_grid` - * :c:data:`nucl_aos_transposed` - * :c:data:`nucl_coord` - * :c:data:`nucl_n_aos` - * :c:data:`nucl_num` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`aos_sr_vc_alpha_pbe_w` - * :c:data:`aos_vc_alpha_pbe_w` - * :c:data:`mos_grad_in_r_array` - * :c:data:`potential_sr_x_alpha_ao_pbe` - * :c:data:`potential_x_alpha_ao_pbe` - - -.. c:var:: aos_grad_in_r_array_transp_xyz - - - File : :file:`dft_utils_in_r/ao_in_r.irp.f` - - .. code:: fortran - - double precision, allocatable :: aos_grad_in_r_array (ao_num,n_points_final_grid,3) - double precision, allocatable :: aos_grad_in_r_array_transp (n_points_final_grid,ao_num,3) - double precision, allocatable :: aos_grad_in_r_array_transp_xyz (3,n_points_final_grid,ao_num) - - - aos_grad_in_r_array(i,j,k) = value of the kth component of the gradient of ith ao on the jth grid point - - aos_grad_in_r_array_transp(i,j,k) = value of the kth component of the gradient of jth ao on the ith grid point - - k = 1 : x, k= 2, y, k 3, z - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_coef_normalized_ordered_transp_per_nucl` - * :c:data:`ao_expo_ordered_transp_per_nucl` - * :c:data:`ao_num` - * :c:data:`ao_power_ordered_transp_per_nucl` - * :c:data:`ao_prim_num` - * :c:data:`final_grid_points` - * :c:data:`n_points_final_grid` - * :c:data:`nucl_aos_transposed` - * :c:data:`nucl_coord` - * :c:data:`nucl_n_aos` - * :c:data:`nucl_num` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`aos_sr_vc_alpha_pbe_w` - * :c:data:`aos_vc_alpha_pbe_w` - * :c:data:`mos_grad_in_r_array` - * :c:data:`potential_sr_x_alpha_ao_pbe` - * :c:data:`potential_x_alpha_ao_pbe` - - -.. c:var:: aos_in_r_array - - - File : :file:`dft_utils_in_r/ao_in_r.irp.f` - - .. code:: fortran - - double precision, allocatable :: aos_in_r_array (ao_num,n_points_final_grid) - double precision, allocatable :: aos_in_r_array_transp (n_points_final_grid,ao_num) - - - aos_in_r_array(i,j) = value of the ith ao on the jth grid point - - aos_in_r_array_transp(i,j) = value of the jth ao on the ith grid point - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_coef_normalized_ordered_transp_per_nucl` - * :c:data:`ao_expo_ordered_transp_per_nucl` - * :c:data:`ao_num` - * :c:data:`ao_power_ordered_transp_per_nucl` - * :c:data:`ao_prim_num` - * :c:data:`final_grid_points` - * :c:data:`n_points_final_grid` - * :c:data:`nucl_aos_transposed` - * :c:data:`nucl_coord` - * :c:data:`nucl_n_aos` - * :c:data:`nucl_num` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`aos_sr_vc_alpha_lda_w` - * :c:data:`aos_sr_vc_alpha_pbe_w` - * :c:data:`aos_vc_alpha_lda_w` - * :c:data:`aos_vc_alpha_pbe_w` - * :c:data:`potential_sr_c_alpha_ao_lda` - * :c:data:`potential_sr_x_alpha_ao_lda` - * :c:data:`potential_sr_x_alpha_ao_pbe` - * :c:data:`potential_x_alpha_ao_lda` - * :c:data:`potential_x_alpha_ao_pbe` - - -.. c:var:: aos_in_r_array_transp - - - File : :file:`dft_utils_in_r/ao_in_r.irp.f` - - .. code:: fortran - - double precision, allocatable :: aos_in_r_array (ao_num,n_points_final_grid) - double precision, allocatable :: aos_in_r_array_transp (n_points_final_grid,ao_num) - - - aos_in_r_array(i,j) = value of the ith ao on the jth grid point - - aos_in_r_array_transp(i,j) = value of the jth ao on the ith grid point - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_coef_normalized_ordered_transp_per_nucl` - * :c:data:`ao_expo_ordered_transp_per_nucl` - * :c:data:`ao_num` - * :c:data:`ao_power_ordered_transp_per_nucl` - * :c:data:`ao_prim_num` - * :c:data:`final_grid_points` - * :c:data:`n_points_final_grid` - * :c:data:`nucl_aos_transposed` - * :c:data:`nucl_coord` - * :c:data:`nucl_n_aos` - * :c:data:`nucl_num` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`aos_sr_vc_alpha_lda_w` - * :c:data:`aos_sr_vc_alpha_pbe_w` - * :c:data:`aos_vc_alpha_lda_w` - * :c:data:`aos_vc_alpha_pbe_w` - * :c:data:`potential_sr_c_alpha_ao_lda` - * :c:data:`potential_sr_x_alpha_ao_lda` - * :c:data:`potential_sr_x_alpha_ao_pbe` - * :c:data:`potential_x_alpha_ao_lda` - * :c:data:`potential_x_alpha_ao_pbe` - - -.. c:var:: aos_lapl_in_r_array - - - File : :file:`dft_utils_in_r/ao_in_r.irp.f` - - .. code:: fortran - - double precision, allocatable :: aos_lapl_in_r_array (ao_num,n_points_final_grid,3) - double precision, allocatable :: aos_lapl_in_r_array_transp (n_points_final_grid,ao_num,3) - - - aos_lapl_in_r_array(i,j,k) = value of the kth component of the laplacian of ith ao on the jth grid point - - aos_lapl_in_r_array_transp(i,j,k) = value of the kth component of the laplacian of jth ao on the ith grid point - - k = 1 : x, k= 2, y, k 3, z - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_coef_normalized_ordered_transp_per_nucl` - * :c:data:`ao_expo_ordered_transp_per_nucl` - * :c:data:`ao_num` - * :c:data:`ao_power_ordered_transp_per_nucl` - * :c:data:`ao_prim_num` - * :c:data:`final_grid_points` - * :c:data:`n_points_final_grid` - * :c:data:`nucl_aos_transposed` - * :c:data:`nucl_coord` - * :c:data:`nucl_n_aos` - * :c:data:`nucl_num` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`mos_lapl_in_r_array` - - -.. c:var:: aos_lapl_in_r_array_transp - - - File : :file:`dft_utils_in_r/ao_in_r.irp.f` - - .. code:: fortran - - double precision, allocatable :: aos_lapl_in_r_array (ao_num,n_points_final_grid,3) - double precision, allocatable :: aos_lapl_in_r_array_transp (n_points_final_grid,ao_num,3) - - - aos_lapl_in_r_array(i,j,k) = value of the kth component of the laplacian of ith ao on the jth grid point - - aos_lapl_in_r_array_transp(i,j,k) = value of the kth component of the laplacian of jth ao on the ith grid point - - k = 1 : x, k= 2, y, k 3, z - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_coef_normalized_ordered_transp_per_nucl` - * :c:data:`ao_expo_ordered_transp_per_nucl` - * :c:data:`ao_num` - * :c:data:`ao_power_ordered_transp_per_nucl` - * :c:data:`ao_prim_num` - * :c:data:`final_grid_points` - * :c:data:`n_points_final_grid` - * :c:data:`nucl_aos_transposed` - * :c:data:`nucl_coord` - * :c:data:`nucl_n_aos` - * :c:data:`nucl_num` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`mos_lapl_in_r_array` - - -.. c:var:: mos_grad_in_r_array - - - File : :file:`dft_utils_in_r/mo_in_r.irp.f` - - .. code:: fortran - - double precision, allocatable :: mos_grad_in_r_array (mo_num,n_points_final_grid,3) - - - mos_grad_in_r_array(i,j,k) = value of the kth component of the gradient of ith mo on the jth grid point - - mos_grad_in_r_array_transp(i,j,k) = value of the kth component of the gradient of jth mo on the ith grid point - - k = 1 : x, k= 2, y, k 3, z - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`aos_grad_in_r_array` - * :c:data:`mo_coef_transp` - * :c:data:`mo_num` - * :c:data:`n_points_final_grid` - - - -.. c:var:: mos_in_r_array - - - File : :file:`dft_utils_in_r/mo_in_r.irp.f` - - .. code:: fortran - - double precision, allocatable :: mos_in_r_array (mo_num,n_points_final_grid) - double precision, allocatable :: mos_in_r_array_transp (n_points_final_grid,mo_num) - - - mos_in_r_array(i,j) = value of the ith mo on the jth grid point - - mos_in_r_array_transp(i,j) = value of the jth mo on the ith grid point - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`final_grid_points` - * :c:data:`mo_coef_transp` - * :c:data:`mo_num` - * :c:data:`n_points_final_grid` - - - -.. c:var:: mos_in_r_array_transp - - - File : :file:`dft_utils_in_r/mo_in_r.irp.f` - - .. code:: fortran - - double precision, allocatable :: mos_in_r_array (mo_num,n_points_final_grid) - double precision, allocatable :: mos_in_r_array_transp (n_points_final_grid,mo_num) - - - mos_in_r_array(i,j) = value of the ith mo on the jth grid point - - mos_in_r_array_transp(i,j) = value of the jth mo on the ith grid point - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`final_grid_points` - * :c:data:`mo_coef_transp` - * :c:data:`mo_num` - * :c:data:`n_points_final_grid` - - - -.. c:var:: mos_lapl_in_r_array - - - File : :file:`dft_utils_in_r/mo_in_r.irp.f` - - .. code:: fortran - - double precision, allocatable :: mos_lapl_in_r_array (mo_num,n_points_final_grid,3) - - - mos_lapl_in_r_array(i,j,k) = value of the kth component of the laplacian of ith mo on the jth grid point - - mos_lapl_in_r_array_transp(i,j,k) = value of the kth component of the laplacian of jth mo on the ith grid point - - k = 1 : x, k= 2, y, k 3, z - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`aos_lapl_in_r_array` - * :c:data:`mo_coef_transp` - * :c:data:`mo_num` - * :c:data:`n_points_final_grid` - - - -.. c:var:: one_e_dm_alpha_at_r - - - File : :file:`dft_utils_in_r/dm_in_r.irp.f` - - .. code:: fortran - - double precision, allocatable :: one_e_dm_alpha_at_r (n_points_final_grid,N_states) - double precision, allocatable :: one_e_dm_beta_at_r (n_points_final_grid,N_states) - - - one_e_dm_alpha_at_r(i,istate) = n_alpha(r_i,istate) - one_e_dm_beta_at_r(i,istate) = n_beta(r_i,istate) - where r_i is the ith point of the grid and istate is the state number - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`final_grid_points` - * :c:data:`n_points_final_grid` - * :c:data:`n_states` - * :c:data:`one_e_dm_alpha_ao_for_dft` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`aos_sr_vc_alpha_lda_w` - * :c:data:`aos_vc_alpha_lda_w` - * :c:data:`energy_sr_x_lda` - * :c:data:`energy_x_lda` - - -.. c:var:: one_e_dm_alpha_in_r - - - File : :file:`dft_utils_in_r/dm_in_r.irp.f` - - .. code:: fortran - - double precision, allocatable :: one_e_dm_alpha_in_r (n_points_integration_angular,n_points_radial_grid,nucl_num,N_states) - double precision, allocatable :: one_e_dm_beta_in_r (n_points_integration_angular,n_points_radial_grid,nucl_num,N_states) - - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`grid_points_per_atom` - * :c:data:`mo_num` - * :c:data:`n_points_radial_grid` - * :c:data:`n_states` - * :c:data:`nucl_num` - * :c:data:`one_e_dm_alpha_ao_for_dft` - - - -.. c:var:: one_e_dm_and_grad_alpha_in_r - - - File : :file:`dft_utils_in_r/dm_in_r.irp.f` - - .. code:: fortran - - double precision, allocatable :: one_e_dm_and_grad_alpha_in_r (4,n_points_final_grid,N_states) - double precision, allocatable :: one_e_dm_and_grad_beta_in_r (4,n_points_final_grid,N_states) - double precision, allocatable :: one_e_grad_2_dm_alpha_at_r (n_points_final_grid,N_states) - double precision, allocatable :: one_e_grad_2_dm_beta_at_r (n_points_final_grid,N_states) - - - one_e_dm_and_grad_alpha_in_r(1,i,i_state) = d\dx n_alpha(r_i,istate) - one_e_dm_and_grad_alpha_in_r(2,i,i_state) = d\dy n_alpha(r_i,istate) - one_e_dm_and_grad_alpha_in_r(3,i,i_state) = d\dz n_alpha(r_i,istate) - one_e_dm_and_grad_alpha_in_r(4,i,i_state) = n_alpha(r_i,istate) - one_e_grad_2_dm_alpha_at_r(i,istate) = d\dx n_alpha(r_i,istate)^2 + d\dy n_alpha(r_i,istate)^2 + d\dz n_alpha(r_i,istate)^2 - where r_i is the ith point of the grid and istate is the state number - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`final_grid_points` - * :c:data:`n_points_final_grid` - * :c:data:`n_states` - * :c:data:`one_e_dm_alpha_ao_for_dft` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`aos_sr_vc_alpha_pbe_w` - * :c:data:`aos_vc_alpha_pbe_w` - * :c:data:`energy_sr_x_pbe` - * :c:data:`energy_x_pbe` - - -.. c:var:: one_e_dm_and_grad_beta_in_r - - - File : :file:`dft_utils_in_r/dm_in_r.irp.f` - - .. code:: fortran - - double precision, allocatable :: one_e_dm_and_grad_alpha_in_r (4,n_points_final_grid,N_states) - double precision, allocatable :: one_e_dm_and_grad_beta_in_r (4,n_points_final_grid,N_states) - double precision, allocatable :: one_e_grad_2_dm_alpha_at_r (n_points_final_grid,N_states) - double precision, allocatable :: one_e_grad_2_dm_beta_at_r (n_points_final_grid,N_states) - - - one_e_dm_and_grad_alpha_in_r(1,i,i_state) = d\dx n_alpha(r_i,istate) - one_e_dm_and_grad_alpha_in_r(2,i,i_state) = d\dy n_alpha(r_i,istate) - one_e_dm_and_grad_alpha_in_r(3,i,i_state) = d\dz n_alpha(r_i,istate) - one_e_dm_and_grad_alpha_in_r(4,i,i_state) = n_alpha(r_i,istate) - one_e_grad_2_dm_alpha_at_r(i,istate) = d\dx n_alpha(r_i,istate)^2 + d\dy n_alpha(r_i,istate)^2 + d\dz n_alpha(r_i,istate)^2 - where r_i is the ith point of the grid and istate is the state number - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`final_grid_points` - * :c:data:`n_points_final_grid` - * :c:data:`n_states` - * :c:data:`one_e_dm_alpha_ao_for_dft` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`aos_sr_vc_alpha_pbe_w` - * :c:data:`aos_vc_alpha_pbe_w` - * :c:data:`energy_sr_x_pbe` - * :c:data:`energy_x_pbe` - - -.. c:var:: one_e_dm_beta_at_r - - - File : :file:`dft_utils_in_r/dm_in_r.irp.f` - - .. code:: fortran - - double precision, allocatable :: one_e_dm_alpha_at_r (n_points_final_grid,N_states) - double precision, allocatable :: one_e_dm_beta_at_r (n_points_final_grid,N_states) - - - one_e_dm_alpha_at_r(i,istate) = n_alpha(r_i,istate) - one_e_dm_beta_at_r(i,istate) = n_beta(r_i,istate) - where r_i is the ith point of the grid and istate is the state number - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`final_grid_points` - * :c:data:`n_points_final_grid` - * :c:data:`n_states` - * :c:data:`one_e_dm_alpha_ao_for_dft` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`aos_sr_vc_alpha_lda_w` - * :c:data:`aos_vc_alpha_lda_w` - * :c:data:`energy_sr_x_lda` - * :c:data:`energy_x_lda` - - -.. c:var:: one_e_dm_beta_in_r - - - File : :file:`dft_utils_in_r/dm_in_r.irp.f` - - .. code:: fortran - - double precision, allocatable :: one_e_dm_alpha_in_r (n_points_integration_angular,n_points_radial_grid,nucl_num,N_states) - double precision, allocatable :: one_e_dm_beta_in_r (n_points_integration_angular,n_points_radial_grid,nucl_num,N_states) - - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`grid_points_per_atom` - * :c:data:`mo_num` - * :c:data:`n_points_radial_grid` - * :c:data:`n_states` - * :c:data:`nucl_num` - * :c:data:`one_e_dm_alpha_ao_for_dft` - - - -.. c:var:: one_e_grad_2_dm_alpha_at_r - - - File : :file:`dft_utils_in_r/dm_in_r.irp.f` - - .. code:: fortran - - double precision, allocatable :: one_e_dm_and_grad_alpha_in_r (4,n_points_final_grid,N_states) - double precision, allocatable :: one_e_dm_and_grad_beta_in_r (4,n_points_final_grid,N_states) - double precision, allocatable :: one_e_grad_2_dm_alpha_at_r (n_points_final_grid,N_states) - double precision, allocatable :: one_e_grad_2_dm_beta_at_r (n_points_final_grid,N_states) - - - one_e_dm_and_grad_alpha_in_r(1,i,i_state) = d\dx n_alpha(r_i,istate) - one_e_dm_and_grad_alpha_in_r(2,i,i_state) = d\dy n_alpha(r_i,istate) - one_e_dm_and_grad_alpha_in_r(3,i,i_state) = d\dz n_alpha(r_i,istate) - one_e_dm_and_grad_alpha_in_r(4,i,i_state) = n_alpha(r_i,istate) - one_e_grad_2_dm_alpha_at_r(i,istate) = d\dx n_alpha(r_i,istate)^2 + d\dy n_alpha(r_i,istate)^2 + d\dz n_alpha(r_i,istate)^2 - where r_i is the ith point of the grid and istate is the state number - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`final_grid_points` - * :c:data:`n_points_final_grid` - * :c:data:`n_states` - * :c:data:`one_e_dm_alpha_ao_for_dft` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`aos_sr_vc_alpha_pbe_w` - * :c:data:`aos_vc_alpha_pbe_w` - * :c:data:`energy_sr_x_pbe` - * :c:data:`energy_x_pbe` - - -.. c:var:: one_e_grad_2_dm_beta_at_r - - - File : :file:`dft_utils_in_r/dm_in_r.irp.f` - - .. code:: fortran - - double precision, allocatable :: one_e_dm_and_grad_alpha_in_r (4,n_points_final_grid,N_states) - double precision, allocatable :: one_e_dm_and_grad_beta_in_r (4,n_points_final_grid,N_states) - double precision, allocatable :: one_e_grad_2_dm_alpha_at_r (n_points_final_grid,N_states) - double precision, allocatable :: one_e_grad_2_dm_beta_at_r (n_points_final_grid,N_states) - - - one_e_dm_and_grad_alpha_in_r(1,i,i_state) = d\dx n_alpha(r_i,istate) - one_e_dm_and_grad_alpha_in_r(2,i,i_state) = d\dy n_alpha(r_i,istate) - one_e_dm_and_grad_alpha_in_r(3,i,i_state) = d\dz n_alpha(r_i,istate) - one_e_dm_and_grad_alpha_in_r(4,i,i_state) = n_alpha(r_i,istate) - one_e_grad_2_dm_alpha_at_r(i,istate) = d\dx n_alpha(r_i,istate)^2 + d\dy n_alpha(r_i,istate)^2 + d\dz n_alpha(r_i,istate)^2 - where r_i is the ith point of the grid and istate is the state number - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`final_grid_points` - * :c:data:`n_points_final_grid` - * :c:data:`n_states` - * :c:data:`one_e_dm_alpha_ao_for_dft` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`aos_sr_vc_alpha_pbe_w` - * :c:data:`aos_vc_alpha_pbe_w` - * :c:data:`energy_sr_x_pbe` - * :c:data:`energy_x_pbe` - - - -Subroutines / functions ------------------------ - -.. c:function:: density_and_grad_alpha_beta_and_all_aos_and_grad_aos_at_r: - - - File : :file:`dft_utils_in_r/dm_in_r.irp.f` - - .. code:: fortran - - subroutine density_and_grad_alpha_beta_and_all_aos_and_grad_aos_at_r(r,dm_a,dm_b, grad_dm_a, grad_dm_b, aos_array, grad_aos_array) - - - input : r(1) ==> r(1) = x, r(2) = y, r(3) = z - output : dm_a = alpha density evaluated at r - : dm_b = beta density evaluated at r - : aos_array(i) = ao(i) evaluated at r - : grad_dm_a(1) = X gradient of the alpha density evaluated in r - : grad_dm_a(1) = X gradient of the beta density evaluated in r - : grad_aos_array(1) = X gradient of the aos(i) evaluated at r - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`one_e_dm_alpha_ao_for_dft` - * :c:data:`n_states` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:data:`one_e_dm_and_grad_alpha_in_r` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`dsymv` - * :c:func:`give_all_aos_and_grad_at_r` - - -.. c:function:: dm_dft_alpha_beta_and_all_aos_at_r: - - - File : :file:`dft_utils_in_r/dm_in_r.irp.f` - - .. code:: fortran - - subroutine dm_dft_alpha_beta_and_all_aos_at_r(r,dm_a,dm_b,aos_array) - - - input: r(1) ==> r(1) = x, r(2) = y, r(3) = z - output : dm_a = alpha density evaluated at r - output : dm_b = beta density evaluated at r - output : aos_array(i) = ao(i) evaluated at r - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`one_e_dm_alpha_ao_for_dft` - * :c:data:`n_states` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`dsymv` - * :c:func:`give_all_aos_at_r` - - -.. c:function:: dm_dft_alpha_beta_at_r: - - - File : :file:`dft_utils_in_r/dm_in_r.irp.f` - - .. code:: fortran - - subroutine dm_dft_alpha_beta_at_r(r,dm_a,dm_b) - - - input: r(1) ==> r(1) = x, r(2) = y, r(3) = z - output : dm_a = alpha density evaluated at r(3) - output : dm_b = beta density evaluated at r(3) - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`one_e_dm_alpha_ao_for_dft` - * :c:data:`n_states` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:data:`one_e_dm_alpha_at_r` - * :c:data:`one_e_dm_alpha_in_r` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`dgemv` - * :c:func:`give_all_aos_at_r` - diff --git a/docs/source/modules/dft_utils_one_e.rst b/docs/source/modules/dft_utils_one_e.rst deleted file mode 100644 index 3124a68a..00000000 --- a/docs/source/modules/dft_utils_one_e.rst +++ /dev/null @@ -1,3765 +0,0 @@ -.. _module_dft_utils_one_e: - -.. program:: dft_utils_one_e - -.. default-role:: option - -=============== -dft_utils_one_e -=============== - -This module contains all the one-body related quantities needed to perform DFT or RS-DFT calculations. -Therefore, it contains most of the properties which depends on the one-body density and density matrix. - -The most important files and variables are: - -* The general *providers* for the x/c energies in :file:`e_xc_general.irp.f` -* The general *providers* for the x/c potentials in :file:`pot_general.irp.f` -* The short-range hartree operator and all related quantities in :file:`sr_coulomb.irp.f` - -These *providers* will be used in many DFT-related programs, such as :file:`ks_scf.irp.f` or :file:`rs_ks_scf.irp.f`. -It is also needed to compute the effective one-body operator needed in multi-determinant RS-DFT (see plugins by eginer). - -Some other interesting quantities: - -* The LDA and PBE *providers* for the x/c energies in :file:`e_xc.irp.f` and :file:`sr_exc.irp.f` -* The LDA and PBE *providers* for the x/c potentials on the AO basis in :file:`pot_ao.irp.f` and :file:`sr_pot_ao.irp.f` -* The :math:`h_{core}` energy computed directly with the one-body density matrix in :file:`one_e_energy_dft.irp.f` -* LDA and PBE short-range functionals *subroutines* in :file:`exc_sr_lda.irp.f` and :file:`exc_sr_pbe.irp.f` - - - - - -Providers ---------- - -.. c:var:: ao_effective_one_e_potential - - - File : :file:`dft_utils_one_e/effective_pot.irp.f` - - .. code:: fortran - - double precision, allocatable :: ao_effective_one_e_potential (ao_num,ao_num,N_states) - double precision, allocatable :: ao_effective_one_e_potential_without_kin (ao_num,ao_num,N_states) - - - ao_effective_one_e_potential(i,j) = :math:`\rangle i_{AO}| v_{H}^{sr} |j_{AO}\rangle + \rangle i_{AO}| h_{core} |j_{AO}\rangle + \rangle i_{AO}|v_{xc} |j_{AO}\rangle` - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`effective_one_e_potential` - * :c:data:`mo_coef` - * :c:data:`mo_num` - * :c:data:`n_states` - - - -.. c:var:: ao_effective_one_e_potential_without_kin - - - File : :file:`dft_utils_one_e/effective_pot.irp.f` - - .. code:: fortran - - double precision, allocatable :: ao_effective_one_e_potential (ao_num,ao_num,N_states) - double precision, allocatable :: ao_effective_one_e_potential_without_kin (ao_num,ao_num,N_states) - - - ao_effective_one_e_potential(i,j) = :math:`\rangle i_{AO}| v_{H}^{sr} |j_{AO}\rangle + \rangle i_{AO}| h_{core} |j_{AO}\rangle + \rangle i_{AO}|v_{xc} |j_{AO}\rangle` - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`effective_one_e_potential` - * :c:data:`mo_coef` - * :c:data:`mo_num` - * :c:data:`n_states` - - - -.. c:var:: aos_dsr_vc_alpha_pbe_w - - - File : :file:`dft_utils_one_e/sr_pot_ao.irp.f` - - .. code:: fortran - - double precision, allocatable :: aos_sr_vc_alpha_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_sr_vc_beta_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_sr_vx_alpha_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_sr_vx_beta_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_dsr_vc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dsr_vc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dsr_vx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dsr_vx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dsr_vc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dsr_vc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dsr_vx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dsr_vx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - - - aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`aos_grad_in_r_array` - * :c:data:`aos_in_r_array` - * :c:data:`correlation_functional` - * :c:data:`exchange_functional` - * :c:data:`final_grid_points` - * :c:data:`mu_erf_dft` - * :c:data:`n_points_final_grid` - * :c:data:`n_states` - * :c:data:`one_e_dm_and_grad_alpha_in_r` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`potential_sr_x_alpha_ao_pbe` - - -.. c:var:: aos_dsr_vc_beta_pbe_w - - - File : :file:`dft_utils_one_e/sr_pot_ao.irp.f` - - .. code:: fortran - - double precision, allocatable :: aos_sr_vc_alpha_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_sr_vc_beta_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_sr_vx_alpha_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_sr_vx_beta_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_dsr_vc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dsr_vc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dsr_vx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dsr_vx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dsr_vc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dsr_vc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dsr_vx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dsr_vx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - - - aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`aos_grad_in_r_array` - * :c:data:`aos_in_r_array` - * :c:data:`correlation_functional` - * :c:data:`exchange_functional` - * :c:data:`final_grid_points` - * :c:data:`mu_erf_dft` - * :c:data:`n_points_final_grid` - * :c:data:`n_states` - * :c:data:`one_e_dm_and_grad_alpha_in_r` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`potential_sr_x_alpha_ao_pbe` - - -.. c:var:: aos_dsr_vx_alpha_pbe_w - - - File : :file:`dft_utils_one_e/sr_pot_ao.irp.f` - - .. code:: fortran - - double precision, allocatable :: aos_sr_vc_alpha_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_sr_vc_beta_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_sr_vx_alpha_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_sr_vx_beta_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_dsr_vc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dsr_vc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dsr_vx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dsr_vx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dsr_vc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dsr_vc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dsr_vx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dsr_vx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - - - aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`aos_grad_in_r_array` - * :c:data:`aos_in_r_array` - * :c:data:`correlation_functional` - * :c:data:`exchange_functional` - * :c:data:`final_grid_points` - * :c:data:`mu_erf_dft` - * :c:data:`n_points_final_grid` - * :c:data:`n_states` - * :c:data:`one_e_dm_and_grad_alpha_in_r` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`potential_sr_x_alpha_ao_pbe` - - -.. c:var:: aos_dsr_vx_beta_pbe_w - - - File : :file:`dft_utils_one_e/sr_pot_ao.irp.f` - - .. code:: fortran - - double precision, allocatable :: aos_sr_vc_alpha_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_sr_vc_beta_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_sr_vx_alpha_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_sr_vx_beta_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_dsr_vc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dsr_vc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dsr_vx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dsr_vx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dsr_vc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dsr_vc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dsr_vx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dsr_vx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - - - aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`aos_grad_in_r_array` - * :c:data:`aos_in_r_array` - * :c:data:`correlation_functional` - * :c:data:`exchange_functional` - * :c:data:`final_grid_points` - * :c:data:`mu_erf_dft` - * :c:data:`n_points_final_grid` - * :c:data:`n_states` - * :c:data:`one_e_dm_and_grad_alpha_in_r` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`potential_sr_x_alpha_ao_pbe` - - -.. c:var:: aos_dvc_alpha_pbe_w - - - File : :file:`dft_utils_one_e/pot_ao.irp.f` - - .. code:: fortran - - double precision, allocatable :: aos_vc_alpha_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_vc_beta_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_vx_alpha_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_vx_beta_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_dvc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dvc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dvx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dvx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dvc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dvc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dvx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dvx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - - - aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`aos_grad_in_r_array` - * :c:data:`aos_in_r_array` - * :c:data:`correlation_functional` - * :c:data:`exchange_functional` - * :c:data:`final_grid_points` - * :c:data:`n_points_final_grid` - * :c:data:`n_states` - * :c:data:`one_e_dm_and_grad_alpha_in_r` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`potential_x_alpha_ao_pbe` - - -.. c:var:: aos_dvc_beta_pbe_w - - - File : :file:`dft_utils_one_e/pot_ao.irp.f` - - .. code:: fortran - - double precision, allocatable :: aos_vc_alpha_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_vc_beta_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_vx_alpha_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_vx_beta_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_dvc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dvc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dvx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dvx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dvc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dvc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dvx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dvx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - - - aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`aos_grad_in_r_array` - * :c:data:`aos_in_r_array` - * :c:data:`correlation_functional` - * :c:data:`exchange_functional` - * :c:data:`final_grid_points` - * :c:data:`n_points_final_grid` - * :c:data:`n_states` - * :c:data:`one_e_dm_and_grad_alpha_in_r` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`potential_x_alpha_ao_pbe` - - -.. c:var:: aos_dvx_alpha_pbe_w - - - File : :file:`dft_utils_one_e/pot_ao.irp.f` - - .. code:: fortran - - double precision, allocatable :: aos_vc_alpha_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_vc_beta_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_vx_alpha_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_vx_beta_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_dvc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dvc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dvx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dvx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dvc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dvc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dvx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dvx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - - - aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`aos_grad_in_r_array` - * :c:data:`aos_in_r_array` - * :c:data:`correlation_functional` - * :c:data:`exchange_functional` - * :c:data:`final_grid_points` - * :c:data:`n_points_final_grid` - * :c:data:`n_states` - * :c:data:`one_e_dm_and_grad_alpha_in_r` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`potential_x_alpha_ao_pbe` - - -.. c:var:: aos_dvx_beta_pbe_w - - - File : :file:`dft_utils_one_e/pot_ao.irp.f` - - .. code:: fortran - - double precision, allocatable :: aos_vc_alpha_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_vc_beta_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_vx_alpha_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_vx_beta_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_dvc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dvc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dvx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dvx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dvc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dvc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dvx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dvx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - - - aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`aos_grad_in_r_array` - * :c:data:`aos_in_r_array` - * :c:data:`correlation_functional` - * :c:data:`exchange_functional` - * :c:data:`final_grid_points` - * :c:data:`n_points_final_grid` - * :c:data:`n_states` - * :c:data:`one_e_dm_and_grad_alpha_in_r` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`potential_x_alpha_ao_pbe` - - -.. c:var:: aos_sr_vc_alpha_lda_w - - - File : :file:`dft_utils_one_e/sr_pot_ao.irp.f` - - .. code:: fortran - - double precision, allocatable :: aos_sr_vc_alpha_lda_w (n_points_final_grid,ao_num,N_states) - double precision, allocatable :: aos_sr_vc_beta_lda_w (n_points_final_grid,ao_num,N_states) - double precision, allocatable :: aos_sr_vx_alpha_lda_w (n_points_final_grid,ao_num,N_states) - double precision, allocatable :: aos_sr_vx_beta_lda_w (n_points_final_grid,ao_num,N_states) - - - aos_sr_vxc_alpha_LDA_w(j,i) = ao_i(r_j) * (sr_v^x_alpha(r_j) + sr_v^c_alpha(r_j)) * W(r_j) - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`aos_in_r_array` - * :c:data:`final_grid_points` - * :c:data:`mu_erf_dft` - * :c:data:`n_points_final_grid` - * :c:data:`n_states` - * :c:data:`one_e_dm_alpha_at_r` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`potential_sr_c_alpha_ao_lda` - * :c:data:`potential_sr_x_alpha_ao_lda` - - -.. c:var:: aos_sr_vc_alpha_pbe_w - - - File : :file:`dft_utils_one_e/sr_pot_ao.irp.f` - - .. code:: fortran - - double precision, allocatable :: aos_sr_vc_alpha_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_sr_vc_beta_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_sr_vx_alpha_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_sr_vx_beta_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_dsr_vc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dsr_vc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dsr_vx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dsr_vx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dsr_vc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dsr_vc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dsr_vx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dsr_vx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - - - aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`aos_grad_in_r_array` - * :c:data:`aos_in_r_array` - * :c:data:`correlation_functional` - * :c:data:`exchange_functional` - * :c:data:`final_grid_points` - * :c:data:`mu_erf_dft` - * :c:data:`n_points_final_grid` - * :c:data:`n_states` - * :c:data:`one_e_dm_and_grad_alpha_in_r` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`potential_sr_x_alpha_ao_pbe` - - -.. c:var:: aos_sr_vc_beta_lda_w - - - File : :file:`dft_utils_one_e/sr_pot_ao.irp.f` - - .. code:: fortran - - double precision, allocatable :: aos_sr_vc_alpha_lda_w (n_points_final_grid,ao_num,N_states) - double precision, allocatable :: aos_sr_vc_beta_lda_w (n_points_final_grid,ao_num,N_states) - double precision, allocatable :: aos_sr_vx_alpha_lda_w (n_points_final_grid,ao_num,N_states) - double precision, allocatable :: aos_sr_vx_beta_lda_w (n_points_final_grid,ao_num,N_states) - - - aos_sr_vxc_alpha_LDA_w(j,i) = ao_i(r_j) * (sr_v^x_alpha(r_j) + sr_v^c_alpha(r_j)) * W(r_j) - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`aos_in_r_array` - * :c:data:`final_grid_points` - * :c:data:`mu_erf_dft` - * :c:data:`n_points_final_grid` - * :c:data:`n_states` - * :c:data:`one_e_dm_alpha_at_r` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`potential_sr_c_alpha_ao_lda` - * :c:data:`potential_sr_x_alpha_ao_lda` - - -.. c:var:: aos_sr_vc_beta_pbe_w - - - File : :file:`dft_utils_one_e/sr_pot_ao.irp.f` - - .. code:: fortran - - double precision, allocatable :: aos_sr_vc_alpha_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_sr_vc_beta_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_sr_vx_alpha_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_sr_vx_beta_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_dsr_vc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dsr_vc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dsr_vx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dsr_vx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dsr_vc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dsr_vc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dsr_vx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dsr_vx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - - - aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`aos_grad_in_r_array` - * :c:data:`aos_in_r_array` - * :c:data:`correlation_functional` - * :c:data:`exchange_functional` - * :c:data:`final_grid_points` - * :c:data:`mu_erf_dft` - * :c:data:`n_points_final_grid` - * :c:data:`n_states` - * :c:data:`one_e_dm_and_grad_alpha_in_r` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`potential_sr_x_alpha_ao_pbe` - - -.. c:var:: aos_sr_vx_alpha_lda_w - - - File : :file:`dft_utils_one_e/sr_pot_ao.irp.f` - - .. code:: fortran - - double precision, allocatable :: aos_sr_vc_alpha_lda_w (n_points_final_grid,ao_num,N_states) - double precision, allocatable :: aos_sr_vc_beta_lda_w (n_points_final_grid,ao_num,N_states) - double precision, allocatable :: aos_sr_vx_alpha_lda_w (n_points_final_grid,ao_num,N_states) - double precision, allocatable :: aos_sr_vx_beta_lda_w (n_points_final_grid,ao_num,N_states) - - - aos_sr_vxc_alpha_LDA_w(j,i) = ao_i(r_j) * (sr_v^x_alpha(r_j) + sr_v^c_alpha(r_j)) * W(r_j) - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`aos_in_r_array` - * :c:data:`final_grid_points` - * :c:data:`mu_erf_dft` - * :c:data:`n_points_final_grid` - * :c:data:`n_states` - * :c:data:`one_e_dm_alpha_at_r` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`potential_sr_c_alpha_ao_lda` - * :c:data:`potential_sr_x_alpha_ao_lda` - - -.. c:var:: aos_sr_vx_alpha_pbe_w - - - File : :file:`dft_utils_one_e/sr_pot_ao.irp.f` - - .. code:: fortran - - double precision, allocatable :: aos_sr_vc_alpha_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_sr_vc_beta_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_sr_vx_alpha_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_sr_vx_beta_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_dsr_vc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dsr_vc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dsr_vx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dsr_vx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dsr_vc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dsr_vc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dsr_vx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dsr_vx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - - - aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`aos_grad_in_r_array` - * :c:data:`aos_in_r_array` - * :c:data:`correlation_functional` - * :c:data:`exchange_functional` - * :c:data:`final_grid_points` - * :c:data:`mu_erf_dft` - * :c:data:`n_points_final_grid` - * :c:data:`n_states` - * :c:data:`one_e_dm_and_grad_alpha_in_r` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`potential_sr_x_alpha_ao_pbe` - - -.. c:var:: aos_sr_vx_beta_lda_w - - - File : :file:`dft_utils_one_e/sr_pot_ao.irp.f` - - .. code:: fortran - - double precision, allocatable :: aos_sr_vc_alpha_lda_w (n_points_final_grid,ao_num,N_states) - double precision, allocatable :: aos_sr_vc_beta_lda_w (n_points_final_grid,ao_num,N_states) - double precision, allocatable :: aos_sr_vx_alpha_lda_w (n_points_final_grid,ao_num,N_states) - double precision, allocatable :: aos_sr_vx_beta_lda_w (n_points_final_grid,ao_num,N_states) - - - aos_sr_vxc_alpha_LDA_w(j,i) = ao_i(r_j) * (sr_v^x_alpha(r_j) + sr_v^c_alpha(r_j)) * W(r_j) - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`aos_in_r_array` - * :c:data:`final_grid_points` - * :c:data:`mu_erf_dft` - * :c:data:`n_points_final_grid` - * :c:data:`n_states` - * :c:data:`one_e_dm_alpha_at_r` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`potential_sr_c_alpha_ao_lda` - * :c:data:`potential_sr_x_alpha_ao_lda` - - -.. c:var:: aos_sr_vx_beta_pbe_w - - - File : :file:`dft_utils_one_e/sr_pot_ao.irp.f` - - .. code:: fortran - - double precision, allocatable :: aos_sr_vc_alpha_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_sr_vc_beta_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_sr_vx_alpha_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_sr_vx_beta_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_dsr_vc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dsr_vc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dsr_vx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dsr_vx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dsr_vc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dsr_vc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dsr_vx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dsr_vx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - - - aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`aos_grad_in_r_array` - * :c:data:`aos_in_r_array` - * :c:data:`correlation_functional` - * :c:data:`exchange_functional` - * :c:data:`final_grid_points` - * :c:data:`mu_erf_dft` - * :c:data:`n_points_final_grid` - * :c:data:`n_states` - * :c:data:`one_e_dm_and_grad_alpha_in_r` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`potential_sr_x_alpha_ao_pbe` - - -.. c:var:: aos_vc_alpha_lda_w - - - File : :file:`dft_utils_one_e/pot_ao.irp.f` - - .. code:: fortran - - double precision, allocatable :: aos_vc_alpha_lda_w (n_points_final_grid,ao_num,N_states) - double precision, allocatable :: aos_vc_beta_lda_w (n_points_final_grid,ao_num,N_states) - double precision, allocatable :: aos_vx_alpha_lda_w (n_points_final_grid,ao_num,N_states) - double precision, allocatable :: aos_vx_beta_lda_w (n_points_final_grid,ao_num,N_states) - - - aos_vxc_alpha_LDA_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`aos_in_r_array` - * :c:data:`final_grid_points` - * :c:data:`n_points_final_grid` - * :c:data:`n_states` - * :c:data:`one_e_dm_alpha_at_r` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`potential_x_alpha_ao_lda` - - -.. c:var:: aos_vc_alpha_pbe_w - - - File : :file:`dft_utils_one_e/pot_ao.irp.f` - - .. code:: fortran - - double precision, allocatable :: aos_vc_alpha_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_vc_beta_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_vx_alpha_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_vx_beta_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_dvc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dvc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dvx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dvx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dvc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dvc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dvx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dvx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - - - aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`aos_grad_in_r_array` - * :c:data:`aos_in_r_array` - * :c:data:`correlation_functional` - * :c:data:`exchange_functional` - * :c:data:`final_grid_points` - * :c:data:`n_points_final_grid` - * :c:data:`n_states` - * :c:data:`one_e_dm_and_grad_alpha_in_r` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`potential_x_alpha_ao_pbe` - - -.. c:var:: aos_vc_beta_lda_w - - - File : :file:`dft_utils_one_e/pot_ao.irp.f` - - .. code:: fortran - - double precision, allocatable :: aos_vc_alpha_lda_w (n_points_final_grid,ao_num,N_states) - double precision, allocatable :: aos_vc_beta_lda_w (n_points_final_grid,ao_num,N_states) - double precision, allocatable :: aos_vx_alpha_lda_w (n_points_final_grid,ao_num,N_states) - double precision, allocatable :: aos_vx_beta_lda_w (n_points_final_grid,ao_num,N_states) - - - aos_vxc_alpha_LDA_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`aos_in_r_array` - * :c:data:`final_grid_points` - * :c:data:`n_points_final_grid` - * :c:data:`n_states` - * :c:data:`one_e_dm_alpha_at_r` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`potential_x_alpha_ao_lda` - - -.. c:var:: aos_vc_beta_pbe_w - - - File : :file:`dft_utils_one_e/pot_ao.irp.f` - - .. code:: fortran - - double precision, allocatable :: aos_vc_alpha_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_vc_beta_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_vx_alpha_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_vx_beta_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_dvc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dvc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dvx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dvx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dvc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dvc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dvx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dvx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - - - aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`aos_grad_in_r_array` - * :c:data:`aos_in_r_array` - * :c:data:`correlation_functional` - * :c:data:`exchange_functional` - * :c:data:`final_grid_points` - * :c:data:`n_points_final_grid` - * :c:data:`n_states` - * :c:data:`one_e_dm_and_grad_alpha_in_r` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`potential_x_alpha_ao_pbe` - - -.. c:var:: aos_vx_alpha_lda_w - - - File : :file:`dft_utils_one_e/pot_ao.irp.f` - - .. code:: fortran - - double precision, allocatable :: aos_vc_alpha_lda_w (n_points_final_grid,ao_num,N_states) - double precision, allocatable :: aos_vc_beta_lda_w (n_points_final_grid,ao_num,N_states) - double precision, allocatable :: aos_vx_alpha_lda_w (n_points_final_grid,ao_num,N_states) - double precision, allocatable :: aos_vx_beta_lda_w (n_points_final_grid,ao_num,N_states) - - - aos_vxc_alpha_LDA_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`aos_in_r_array` - * :c:data:`final_grid_points` - * :c:data:`n_points_final_grid` - * :c:data:`n_states` - * :c:data:`one_e_dm_alpha_at_r` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`potential_x_alpha_ao_lda` - - -.. c:var:: aos_vx_alpha_pbe_w - - - File : :file:`dft_utils_one_e/pot_ao.irp.f` - - .. code:: fortran - - double precision, allocatable :: aos_vc_alpha_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_vc_beta_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_vx_alpha_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_vx_beta_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_dvc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dvc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dvx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dvx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dvc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dvc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dvx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dvx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - - - aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`aos_grad_in_r_array` - * :c:data:`aos_in_r_array` - * :c:data:`correlation_functional` - * :c:data:`exchange_functional` - * :c:data:`final_grid_points` - * :c:data:`n_points_final_grid` - * :c:data:`n_states` - * :c:data:`one_e_dm_and_grad_alpha_in_r` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`potential_x_alpha_ao_pbe` - - -.. c:var:: aos_vx_beta_lda_w - - - File : :file:`dft_utils_one_e/pot_ao.irp.f` - - .. code:: fortran - - double precision, allocatable :: aos_vc_alpha_lda_w (n_points_final_grid,ao_num,N_states) - double precision, allocatable :: aos_vc_beta_lda_w (n_points_final_grid,ao_num,N_states) - double precision, allocatable :: aos_vx_alpha_lda_w (n_points_final_grid,ao_num,N_states) - double precision, allocatable :: aos_vx_beta_lda_w (n_points_final_grid,ao_num,N_states) - - - aos_vxc_alpha_LDA_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`aos_in_r_array` - * :c:data:`final_grid_points` - * :c:data:`n_points_final_grid` - * :c:data:`n_states` - * :c:data:`one_e_dm_alpha_at_r` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`potential_x_alpha_ao_lda` - - -.. c:var:: aos_vx_beta_pbe_w - - - File : :file:`dft_utils_one_e/pot_ao.irp.f` - - .. code:: fortran - - double precision, allocatable :: aos_vc_alpha_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_vc_beta_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_vx_alpha_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_vx_beta_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_dvc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dvc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dvx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dvx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dvc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dvc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dvx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dvx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - - - aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`aos_grad_in_r_array` - * :c:data:`aos_in_r_array` - * :c:data:`correlation_functional` - * :c:data:`exchange_functional` - * :c:data:`final_grid_points` - * :c:data:`n_points_final_grid` - * :c:data:`n_states` - * :c:data:`one_e_dm_and_grad_alpha_in_r` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`potential_x_alpha_ao_pbe` - - -.. c:var:: effective_one_e_potential - - - File : :file:`dft_utils_one_e/effective_pot.irp.f` - - .. code:: fortran - - double precision, allocatable :: effective_one_e_potential (mo_num,mo_num,N_states) - double precision, allocatable :: effective_one_e_potential_without_kin (mo_num,mo_num,N_states) - - - Effective_one_e_potential(i,j) = :math:`\rangle i_{MO}| v_{H}^{sr} |j_{MO}\rangle + \rangle i_{MO}| h_{core} |j_{MO}\rangle + \rangle i_{MO}|v_{xc} |j_{MO}\rangle` - - on the |MO| basis - Taking the expectation value does not provide any energy, but - effective_one_e_potential(i,j) is the potential coupling DFT and WFT part to - be used in any WFT calculation. - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`mo_integrals_n_e` - * :c:data:`mo_kinetic_integrals` - * :c:data:`mo_num` - * :c:data:`n_states` - * :c:data:`potential_x_alpha_mo` - * :c:data:`short_range_hartree_operator` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_effective_one_e_potential` - - -.. c:var:: effective_one_e_potential_without_kin - - - File : :file:`dft_utils_one_e/effective_pot.irp.f` - - .. code:: fortran - - double precision, allocatable :: effective_one_e_potential (mo_num,mo_num,N_states) - double precision, allocatable :: effective_one_e_potential_without_kin (mo_num,mo_num,N_states) - - - Effective_one_e_potential(i,j) = :math:`\rangle i_{MO}| v_{H}^{sr} |j_{MO}\rangle + \rangle i_{MO}| h_{core} |j_{MO}\rangle + \rangle i_{MO}|v_{xc} |j_{MO}\rangle` - - on the |MO| basis - Taking the expectation value does not provide any energy, but - effective_one_e_potential(i,j) is the potential coupling DFT and WFT part to - be used in any WFT calculation. - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`mo_integrals_n_e` - * :c:data:`mo_kinetic_integrals` - * :c:data:`mo_num` - * :c:data:`n_states` - * :c:data:`potential_x_alpha_mo` - * :c:data:`short_range_hartree_operator` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_effective_one_e_potential` - - -.. c:var:: energy_c - - - File : :file:`dft_utils_one_e/e_xc_general.irp.f` - - .. code:: fortran - - double precision, allocatable :: energy_x (N_states) - double precision, allocatable :: energy_c (N_states) - - - correlation and exchange energies general providers. - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`correlation_functional` - * :c:data:`energy_sr_x_lda` - * :c:data:`energy_sr_x_pbe` - * :c:data:`exchange_functional` - * :c:data:`n_states` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`e_correlation_dft` - * :c:data:`e_exchange_dft` - * :c:data:`shifting_constant` - - -.. c:var:: energy_c_lda - - - File : :file:`dft_utils_one_e/e_xc.irp.f` - - .. code:: fortran - - double precision, allocatable :: energy_x_lda (N_states) - double precision, allocatable :: energy_c_lda (N_states) - - - exchange/correlation energy with the short range LDA functional - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`final_grid_points` - * :c:data:`n_points_final_grid` - * :c:data:`n_states` - * :c:data:`one_e_dm_alpha_at_r` - - - -.. c:var:: energy_c_pbe - - - File : :file:`dft_utils_one_e/e_xc.irp.f` - - .. code:: fortran - - double precision, allocatable :: energy_x_pbe (N_states) - double precision, allocatable :: energy_c_pbe (N_states) - - - exchange/correlation energy with the short range PBE functional - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`correlation_functional` - * :c:data:`exchange_functional` - * :c:data:`final_grid_points` - * :c:data:`n_points_final_grid` - * :c:data:`n_states` - * :c:data:`one_e_dm_and_grad_alpha_in_r` - - - -.. c:var:: energy_sr_c_lda - - - File : :file:`dft_utils_one_e/sr_exc.irp.f` - - .. code:: fortran - - double precision, allocatable :: energy_sr_x_lda (N_states) - double precision, allocatable :: energy_sr_c_lda (N_states) - - - exchange/correlation energy with the short range LDA functional - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`final_grid_points` - * :c:data:`mu_erf_dft` - * :c:data:`n_points_final_grid` - * :c:data:`n_states` - * :c:data:`one_e_dm_alpha_at_r` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`energy_x` - - -.. c:var:: energy_sr_c_pbe - - - File : :file:`dft_utils_one_e/sr_exc.irp.f` - - .. code:: fortran - - double precision, allocatable :: energy_sr_x_pbe (N_states) - double precision, allocatable :: energy_sr_c_pbe (N_states) - - - exchange/correlation energy with the short range PBE functional - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`correlation_functional` - * :c:data:`exchange_functional` - * :c:data:`final_grid_points` - * :c:data:`mu_erf_dft` - * :c:data:`n_points_final_grid` - * :c:data:`n_states` - * :c:data:`one_e_dm_and_grad_alpha_in_r` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`energy_x` - - -.. c:var:: energy_sr_x_lda - - - File : :file:`dft_utils_one_e/sr_exc.irp.f` - - .. code:: fortran - - double precision, allocatable :: energy_sr_x_lda (N_states) - double precision, allocatable :: energy_sr_c_lda (N_states) - - - exchange/correlation energy with the short range LDA functional - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`final_grid_points` - * :c:data:`mu_erf_dft` - * :c:data:`n_points_final_grid` - * :c:data:`n_states` - * :c:data:`one_e_dm_alpha_at_r` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`energy_x` - - -.. c:var:: energy_sr_x_pbe - - - File : :file:`dft_utils_one_e/sr_exc.irp.f` - - .. code:: fortran - - double precision, allocatable :: energy_sr_x_pbe (N_states) - double precision, allocatable :: energy_sr_c_pbe (N_states) - - - exchange/correlation energy with the short range PBE functional - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`correlation_functional` - * :c:data:`exchange_functional` - * :c:data:`final_grid_points` - * :c:data:`mu_erf_dft` - * :c:data:`n_points_final_grid` - * :c:data:`n_states` - * :c:data:`one_e_dm_and_grad_alpha_in_r` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`energy_x` - - -.. c:var:: energy_x - - - File : :file:`dft_utils_one_e/e_xc_general.irp.f` - - .. code:: fortran - - double precision, allocatable :: energy_x (N_states) - double precision, allocatable :: energy_c (N_states) - - - correlation and exchange energies general providers. - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`correlation_functional` - * :c:data:`energy_sr_x_lda` - * :c:data:`energy_sr_x_pbe` - * :c:data:`exchange_functional` - * :c:data:`n_states` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`e_correlation_dft` - * :c:data:`e_exchange_dft` - * :c:data:`shifting_constant` - - -.. c:var:: energy_x_lda - - - File : :file:`dft_utils_one_e/e_xc.irp.f` - - .. code:: fortran - - double precision, allocatable :: energy_x_lda (N_states) - double precision, allocatable :: energy_c_lda (N_states) - - - exchange/correlation energy with the short range LDA functional - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`final_grid_points` - * :c:data:`n_points_final_grid` - * :c:data:`n_states` - * :c:data:`one_e_dm_alpha_at_r` - - - -.. c:var:: energy_x_pbe - - - File : :file:`dft_utils_one_e/e_xc.irp.f` - - .. code:: fortran - - double precision, allocatable :: energy_x_pbe (N_states) - double precision, allocatable :: energy_c_pbe (N_states) - - - exchange/correlation energy with the short range PBE functional - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`correlation_functional` - * :c:data:`exchange_functional` - * :c:data:`final_grid_points` - * :c:data:`n_points_final_grid` - * :c:data:`n_states` - * :c:data:`one_e_dm_and_grad_alpha_in_r` - - - -.. c:function:: gga_sr_type_functionals: - - - File : :file:`dft_utils_one_e/utils.irp.f` - - .. code:: fortran - - subroutine GGA_sr_type_functionals(r,rho_a,rho_b,grad_rho_a_2,grad_rho_b_2,grad_rho_a_b, & - ex,vx_rho_a,vx_rho_b,vx_grad_rho_a_2,vx_grad_rho_b_2,vx_grad_rho_a_b, & - ec,vc_rho_a,vc_rho_b,vc_grad_rho_a_2,vc_grad_rho_b_2,vc_grad_rho_a_b ) - - - routine that helps in building the x/c potentials on the AO basis for a GGA functional with a short-range interaction - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`mu_erf_dft` - * :c:data:`exchange_functional` - * :c:data:`correlation_functional` - * :c:data:`n_states` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:data:`aos_sr_vc_alpha_pbe_w` - * :c:data:`energy_sr_x_pbe` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`ec_pbe_sr` - * :c:func:`ex_pbe_sr` - * :c:func:`grad_rho_ab_to_grad_rho_oc` - * :c:func:`rho_ab_to_rho_oc` - * :c:func:`v_grad_rho_oc_to_v_grad_rho_ab` - * :c:func:`v_rho_oc_to_v_rho_ab` - - -.. c:function:: gga_type_functionals: - - - File : :file:`dft_utils_one_e/utils.irp.f` - - .. code:: fortran - - subroutine GGA_type_functionals(r,rho_a,rho_b,grad_rho_a_2,grad_rho_b_2,grad_rho_a_b, & - ex,vx_rho_a,vx_rho_b,vx_grad_rho_a_2,vx_grad_rho_b_2,vx_grad_rho_a_b, & - ec,vc_rho_a,vc_rho_b,vc_grad_rho_a_2,vc_grad_rho_b_2,vc_grad_rho_a_b ) - - - routine that helps in building the x/c potentials on the AO basis for a GGA functional - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`n_states` - * :c:data:`exchange_functional` - * :c:data:`correlation_functional` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:data:`aos_vc_alpha_pbe_w` - * :c:data:`energy_x_pbe` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`ec_pbe_sr` - * :c:func:`ex_pbe_sr` - * :c:func:`grad_rho_ab_to_grad_rho_oc` - * :c:func:`rho_ab_to_rho_oc` - * :c:func:`v_grad_rho_oc_to_v_grad_rho_ab` - * :c:func:`v_rho_oc_to_v_rho_ab` - - -.. c:var:: grad_aos_dsr_vc_alpha_pbe_w - - - File : :file:`dft_utils_one_e/sr_pot_ao.irp.f` - - .. code:: fortran - - double precision, allocatable :: aos_sr_vc_alpha_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_sr_vc_beta_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_sr_vx_alpha_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_sr_vx_beta_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_dsr_vc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dsr_vc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dsr_vx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dsr_vx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dsr_vc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dsr_vc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dsr_vx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dsr_vx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - - - aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`aos_grad_in_r_array` - * :c:data:`aos_in_r_array` - * :c:data:`correlation_functional` - * :c:data:`exchange_functional` - * :c:data:`final_grid_points` - * :c:data:`mu_erf_dft` - * :c:data:`n_points_final_grid` - * :c:data:`n_states` - * :c:data:`one_e_dm_and_grad_alpha_in_r` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`potential_sr_x_alpha_ao_pbe` - - -.. c:var:: grad_aos_dsr_vc_beta_pbe_w - - - File : :file:`dft_utils_one_e/sr_pot_ao.irp.f` - - .. code:: fortran - - double precision, allocatable :: aos_sr_vc_alpha_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_sr_vc_beta_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_sr_vx_alpha_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_sr_vx_beta_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_dsr_vc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dsr_vc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dsr_vx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dsr_vx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dsr_vc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dsr_vc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dsr_vx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dsr_vx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - - - aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`aos_grad_in_r_array` - * :c:data:`aos_in_r_array` - * :c:data:`correlation_functional` - * :c:data:`exchange_functional` - * :c:data:`final_grid_points` - * :c:data:`mu_erf_dft` - * :c:data:`n_points_final_grid` - * :c:data:`n_states` - * :c:data:`one_e_dm_and_grad_alpha_in_r` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`potential_sr_x_alpha_ao_pbe` - - -.. c:var:: grad_aos_dsr_vx_alpha_pbe_w - - - File : :file:`dft_utils_one_e/sr_pot_ao.irp.f` - - .. code:: fortran - - double precision, allocatable :: aos_sr_vc_alpha_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_sr_vc_beta_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_sr_vx_alpha_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_sr_vx_beta_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_dsr_vc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dsr_vc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dsr_vx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dsr_vx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dsr_vc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dsr_vc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dsr_vx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dsr_vx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - - - aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`aos_grad_in_r_array` - * :c:data:`aos_in_r_array` - * :c:data:`correlation_functional` - * :c:data:`exchange_functional` - * :c:data:`final_grid_points` - * :c:data:`mu_erf_dft` - * :c:data:`n_points_final_grid` - * :c:data:`n_states` - * :c:data:`one_e_dm_and_grad_alpha_in_r` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`potential_sr_x_alpha_ao_pbe` - - -.. c:var:: grad_aos_dsr_vx_beta_pbe_w - - - File : :file:`dft_utils_one_e/sr_pot_ao.irp.f` - - .. code:: fortran - - double precision, allocatable :: aos_sr_vc_alpha_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_sr_vc_beta_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_sr_vx_alpha_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_sr_vx_beta_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_dsr_vc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dsr_vc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dsr_vx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dsr_vx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dsr_vc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dsr_vc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dsr_vx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dsr_vx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - - - aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`aos_grad_in_r_array` - * :c:data:`aos_in_r_array` - * :c:data:`correlation_functional` - * :c:data:`exchange_functional` - * :c:data:`final_grid_points` - * :c:data:`mu_erf_dft` - * :c:data:`n_points_final_grid` - * :c:data:`n_states` - * :c:data:`one_e_dm_and_grad_alpha_in_r` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`potential_sr_x_alpha_ao_pbe` - - -.. c:var:: grad_aos_dvc_alpha_pbe_w - - - File : :file:`dft_utils_one_e/pot_ao.irp.f` - - .. code:: fortran - - double precision, allocatable :: aos_vc_alpha_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_vc_beta_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_vx_alpha_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_vx_beta_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_dvc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dvc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dvx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dvx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dvc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dvc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dvx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dvx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - - - aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`aos_grad_in_r_array` - * :c:data:`aos_in_r_array` - * :c:data:`correlation_functional` - * :c:data:`exchange_functional` - * :c:data:`final_grid_points` - * :c:data:`n_points_final_grid` - * :c:data:`n_states` - * :c:data:`one_e_dm_and_grad_alpha_in_r` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`potential_x_alpha_ao_pbe` - - -.. c:var:: grad_aos_dvc_beta_pbe_w - - - File : :file:`dft_utils_one_e/pot_ao.irp.f` - - .. code:: fortran - - double precision, allocatable :: aos_vc_alpha_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_vc_beta_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_vx_alpha_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_vx_beta_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_dvc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dvc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dvx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dvx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dvc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dvc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dvx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dvx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - - - aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`aos_grad_in_r_array` - * :c:data:`aos_in_r_array` - * :c:data:`correlation_functional` - * :c:data:`exchange_functional` - * :c:data:`final_grid_points` - * :c:data:`n_points_final_grid` - * :c:data:`n_states` - * :c:data:`one_e_dm_and_grad_alpha_in_r` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`potential_x_alpha_ao_pbe` - - -.. c:var:: grad_aos_dvx_alpha_pbe_w - - - File : :file:`dft_utils_one_e/pot_ao.irp.f` - - .. code:: fortran - - double precision, allocatable :: aos_vc_alpha_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_vc_beta_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_vx_alpha_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_vx_beta_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_dvc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dvc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dvx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dvx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dvc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dvc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dvx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dvx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - - - aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`aos_grad_in_r_array` - * :c:data:`aos_in_r_array` - * :c:data:`correlation_functional` - * :c:data:`exchange_functional` - * :c:data:`final_grid_points` - * :c:data:`n_points_final_grid` - * :c:data:`n_states` - * :c:data:`one_e_dm_and_grad_alpha_in_r` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`potential_x_alpha_ao_pbe` - - -.. c:var:: grad_aos_dvx_beta_pbe_w - - - File : :file:`dft_utils_one_e/pot_ao.irp.f` - - .. code:: fortran - - double precision, allocatable :: aos_vc_alpha_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_vc_beta_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_vx_alpha_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_vx_beta_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_dvc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dvc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dvx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dvx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dvc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dvc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dvx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dvx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - - - aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`aos_grad_in_r_array` - * :c:data:`aos_in_r_array` - * :c:data:`correlation_functional` - * :c:data:`exchange_functional` - * :c:data:`final_grid_points` - * :c:data:`n_points_final_grid` - * :c:data:`n_states` - * :c:data:`one_e_dm_and_grad_alpha_in_r` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`potential_x_alpha_ao_pbe` - - -.. c:var:: mu_erf_dft - - - File : :file:`dft_utils_one_e/mu_erf_dft.irp.f` - - .. code:: fortran - - double precision :: mu_erf_dft - - - range separation parameter used in RS-DFT. It is set to mu_erf in order to be consistent with the two electrons integrals erf - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`mu_erf` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`aos_sr_vc_alpha_lda_w` - * :c:data:`aos_sr_vc_alpha_pbe_w` - * :c:data:`energy_sr_x_lda` - * :c:data:`energy_sr_x_pbe` - - -.. c:var:: potential_c_alpha_ao - - - File : :file:`dft_utils_one_e/pot_general.irp.f` - - .. code:: fortran - - double precision, allocatable :: potential_x_alpha_ao (ao_num,ao_num,N_states) - double precision, allocatable :: potential_x_beta_ao (ao_num,ao_num,N_states) - double precision, allocatable :: potential_c_alpha_ao (ao_num,ao_num,N_states) - double precision, allocatable :: potential_c_beta_ao (ao_num,ao_num,N_states) - - - general providers for the alpha/beta exchange/correlation potentials on the AO basis - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`correlation_functional` - * :c:data:`exchange_functional` - * :c:data:`n_states` - * :c:data:`potential_sr_c_alpha_ao_lda` - * :c:data:`potential_sr_x_alpha_ao_lda` - * :c:data:`potential_sr_x_alpha_ao_pbe` - * :c:data:`potential_x_alpha_ao_lda` - * :c:data:`potential_x_alpha_ao_pbe` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_potential_alpha_xc` - * :c:data:`potential_x_alpha_mo` - - -.. c:var:: potential_c_alpha_ao_lda - - - File : :file:`dft_utils_one_e/pot_ao.irp.f` - - .. code:: fortran - - double precision, allocatable :: potential_x_alpha_ao_lda (ao_num,ao_num,N_states) - double precision, allocatable :: potential_x_beta_ao_lda (ao_num,ao_num,N_states) - double precision, allocatable :: potential_c_alpha_ao_lda (ao_num,ao_num,N_states) - double precision, allocatable :: potential_c_beta_ao_lda (ao_num,ao_num,N_states) - - - short range exchange/correlation alpha/beta potentials with LDA functional on the AO basis - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`aos_in_r_array` - * :c:data:`aos_vc_alpha_lda_w` - * :c:data:`n_points_final_grid` - * :c:data:`n_states` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`potential_x_alpha_ao` - - -.. c:var:: potential_c_alpha_ao_pbe - - - File : :file:`dft_utils_one_e/pot_ao.irp.f` - - .. code:: fortran - - double precision, allocatable :: potential_x_alpha_ao_pbe (ao_num,ao_num,N_states) - double precision, allocatable :: potential_x_beta_ao_pbe (ao_num,ao_num,N_states) - double precision, allocatable :: potential_c_alpha_ao_pbe (ao_num,ao_num,N_states) - double precision, allocatable :: potential_c_beta_ao_pbe (ao_num,ao_num,N_states) - - - exchange/correlation alpha/beta potentials with the short range PBE functional on the AO basis - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`aos_grad_in_r_array` - * :c:data:`aos_in_r_array` - * :c:data:`aos_vc_alpha_pbe_w` - * :c:data:`n_points_final_grid` - * :c:data:`n_states` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`potential_x_alpha_ao` - - -.. c:var:: potential_c_alpha_mo - - - File : :file:`dft_utils_one_e/pot_general.irp.f` - - .. code:: fortran - - double precision, allocatable :: potential_x_alpha_mo (mo_num,mo_num,N_states) - double precision, allocatable :: potential_x_beta_mo (mo_num,mo_num,N_states) - double precision, allocatable :: potential_c_alpha_mo (mo_num,mo_num,N_states) - double precision, allocatable :: potential_c_beta_mo (mo_num,mo_num,N_states) - - - general providers for the alpha/beta exchange/correlation potentials on the MO basis - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`mo_coef` - * :c:data:`mo_num` - * :c:data:`n_states` - * :c:data:`potential_x_alpha_ao` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`effective_one_e_potential` - * :c:data:`trace_v_xc` - - -.. c:var:: potential_c_beta_ao - - - File : :file:`dft_utils_one_e/pot_general.irp.f` - - .. code:: fortran - - double precision, allocatable :: potential_x_alpha_ao (ao_num,ao_num,N_states) - double precision, allocatable :: potential_x_beta_ao (ao_num,ao_num,N_states) - double precision, allocatable :: potential_c_alpha_ao (ao_num,ao_num,N_states) - double precision, allocatable :: potential_c_beta_ao (ao_num,ao_num,N_states) - - - general providers for the alpha/beta exchange/correlation potentials on the AO basis - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`correlation_functional` - * :c:data:`exchange_functional` - * :c:data:`n_states` - * :c:data:`potential_sr_c_alpha_ao_lda` - * :c:data:`potential_sr_x_alpha_ao_lda` - * :c:data:`potential_sr_x_alpha_ao_pbe` - * :c:data:`potential_x_alpha_ao_lda` - * :c:data:`potential_x_alpha_ao_pbe` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_potential_alpha_xc` - * :c:data:`potential_x_alpha_mo` - - -.. c:var:: potential_c_beta_ao_lda - - - File : :file:`dft_utils_one_e/pot_ao.irp.f` - - .. code:: fortran - - double precision, allocatable :: potential_x_alpha_ao_lda (ao_num,ao_num,N_states) - double precision, allocatable :: potential_x_beta_ao_lda (ao_num,ao_num,N_states) - double precision, allocatable :: potential_c_alpha_ao_lda (ao_num,ao_num,N_states) - double precision, allocatable :: potential_c_beta_ao_lda (ao_num,ao_num,N_states) - - - short range exchange/correlation alpha/beta potentials with LDA functional on the AO basis - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`aos_in_r_array` - * :c:data:`aos_vc_alpha_lda_w` - * :c:data:`n_points_final_grid` - * :c:data:`n_states` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`potential_x_alpha_ao` - - -.. c:var:: potential_c_beta_ao_pbe - - - File : :file:`dft_utils_one_e/pot_ao.irp.f` - - .. code:: fortran - - double precision, allocatable :: potential_x_alpha_ao_pbe (ao_num,ao_num,N_states) - double precision, allocatable :: potential_x_beta_ao_pbe (ao_num,ao_num,N_states) - double precision, allocatable :: potential_c_alpha_ao_pbe (ao_num,ao_num,N_states) - double precision, allocatable :: potential_c_beta_ao_pbe (ao_num,ao_num,N_states) - - - exchange/correlation alpha/beta potentials with the short range PBE functional on the AO basis - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`aos_grad_in_r_array` - * :c:data:`aos_in_r_array` - * :c:data:`aos_vc_alpha_pbe_w` - * :c:data:`n_points_final_grid` - * :c:data:`n_states` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`potential_x_alpha_ao` - - -.. c:var:: potential_c_beta_mo - - - File : :file:`dft_utils_one_e/pot_general.irp.f` - - .. code:: fortran - - double precision, allocatable :: potential_x_alpha_mo (mo_num,mo_num,N_states) - double precision, allocatable :: potential_x_beta_mo (mo_num,mo_num,N_states) - double precision, allocatable :: potential_c_alpha_mo (mo_num,mo_num,N_states) - double precision, allocatable :: potential_c_beta_mo (mo_num,mo_num,N_states) - - - general providers for the alpha/beta exchange/correlation potentials on the MO basis - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`mo_coef` - * :c:data:`mo_num` - * :c:data:`n_states` - * :c:data:`potential_x_alpha_ao` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`effective_one_e_potential` - * :c:data:`trace_v_xc` - - -.. c:var:: potential_sr_c_alpha_ao_lda - - - File : :file:`dft_utils_one_e/sr_pot_ao.irp.f` - - .. code:: fortran - - double precision, allocatable :: potential_sr_c_alpha_ao_lda (ao_num,ao_num,N_states) - double precision, allocatable :: potential_sr_c_beta_ao_lda (ao_num,ao_num,N_states) - - - short range correlation alpha/beta potentials with LDA functional on the |AO| basis - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`aos_in_r_array` - * :c:data:`aos_sr_vc_alpha_lda_w` - * :c:data:`n_points_final_grid` - * :c:data:`n_states` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`potential_x_alpha_ao` - - -.. c:var:: potential_sr_c_alpha_ao_pbe - - - File : :file:`dft_utils_one_e/sr_pot_ao.irp.f` - - .. code:: fortran - - double precision, allocatable :: potential_sr_x_alpha_ao_pbe (ao_num,ao_num,N_states) - double precision, allocatable :: potential_sr_x_beta_ao_pbe (ao_num,ao_num,N_states) - double precision, allocatable :: potential_sr_c_alpha_ao_pbe (ao_num,ao_num,N_states) - double precision, allocatable :: potential_sr_c_beta_ao_pbe (ao_num,ao_num,N_states) - - - exchange/correlation alpha/beta potentials with the short range PBE functional on the AO basis - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`aos_grad_in_r_array` - * :c:data:`aos_in_r_array` - * :c:data:`aos_sr_vc_alpha_pbe_w` - * :c:data:`n_points_final_grid` - * :c:data:`n_states` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`potential_x_alpha_ao` - - -.. c:var:: potential_sr_c_beta_ao_lda - - - File : :file:`dft_utils_one_e/sr_pot_ao.irp.f` - - .. code:: fortran - - double precision, allocatable :: potential_sr_c_alpha_ao_lda (ao_num,ao_num,N_states) - double precision, allocatable :: potential_sr_c_beta_ao_lda (ao_num,ao_num,N_states) - - - short range correlation alpha/beta potentials with LDA functional on the |AO| basis - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`aos_in_r_array` - * :c:data:`aos_sr_vc_alpha_lda_w` - * :c:data:`n_points_final_grid` - * :c:data:`n_states` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`potential_x_alpha_ao` - - -.. c:var:: potential_sr_c_beta_ao_pbe - - - File : :file:`dft_utils_one_e/sr_pot_ao.irp.f` - - .. code:: fortran - - double precision, allocatable :: potential_sr_x_alpha_ao_pbe (ao_num,ao_num,N_states) - double precision, allocatable :: potential_sr_x_beta_ao_pbe (ao_num,ao_num,N_states) - double precision, allocatable :: potential_sr_c_alpha_ao_pbe (ao_num,ao_num,N_states) - double precision, allocatable :: potential_sr_c_beta_ao_pbe (ao_num,ao_num,N_states) - - - exchange/correlation alpha/beta potentials with the short range PBE functional on the AO basis - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`aos_grad_in_r_array` - * :c:data:`aos_in_r_array` - * :c:data:`aos_sr_vc_alpha_pbe_w` - * :c:data:`n_points_final_grid` - * :c:data:`n_states` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`potential_x_alpha_ao` - - -.. c:var:: potential_sr_x_alpha_ao_lda - - - File : :file:`dft_utils_one_e/sr_pot_ao.irp.f` - - .. code:: fortran - - double precision, allocatable :: potential_sr_x_alpha_ao_lda (ao_num,ao_num,N_states) - double precision, allocatable :: potential_sr_x_beta_ao_lda (ao_num,ao_num,N_states) - - - short range exchange alpha/beta potentials with LDA functional on the |AO| basis - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`aos_in_r_array` - * :c:data:`aos_sr_vc_alpha_lda_w` - * :c:data:`n_points_final_grid` - * :c:data:`n_states` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`potential_x_alpha_ao` - - -.. c:var:: potential_sr_x_alpha_ao_pbe - - - File : :file:`dft_utils_one_e/sr_pot_ao.irp.f` - - .. code:: fortran - - double precision, allocatable :: potential_sr_x_alpha_ao_pbe (ao_num,ao_num,N_states) - double precision, allocatable :: potential_sr_x_beta_ao_pbe (ao_num,ao_num,N_states) - double precision, allocatable :: potential_sr_c_alpha_ao_pbe (ao_num,ao_num,N_states) - double precision, allocatable :: potential_sr_c_beta_ao_pbe (ao_num,ao_num,N_states) - - - exchange/correlation alpha/beta potentials with the short range PBE functional on the AO basis - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`aos_grad_in_r_array` - * :c:data:`aos_in_r_array` - * :c:data:`aos_sr_vc_alpha_pbe_w` - * :c:data:`n_points_final_grid` - * :c:data:`n_states` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`potential_x_alpha_ao` - - -.. c:var:: potential_sr_x_beta_ao_lda - - - File : :file:`dft_utils_one_e/sr_pot_ao.irp.f` - - .. code:: fortran - - double precision, allocatable :: potential_sr_x_alpha_ao_lda (ao_num,ao_num,N_states) - double precision, allocatable :: potential_sr_x_beta_ao_lda (ao_num,ao_num,N_states) - - - short range exchange alpha/beta potentials with LDA functional on the |AO| basis - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`aos_in_r_array` - * :c:data:`aos_sr_vc_alpha_lda_w` - * :c:data:`n_points_final_grid` - * :c:data:`n_states` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`potential_x_alpha_ao` - - -.. c:var:: potential_sr_x_beta_ao_pbe - - - File : :file:`dft_utils_one_e/sr_pot_ao.irp.f` - - .. code:: fortran - - double precision, allocatable :: potential_sr_x_alpha_ao_pbe (ao_num,ao_num,N_states) - double precision, allocatable :: potential_sr_x_beta_ao_pbe (ao_num,ao_num,N_states) - double precision, allocatable :: potential_sr_c_alpha_ao_pbe (ao_num,ao_num,N_states) - double precision, allocatable :: potential_sr_c_beta_ao_pbe (ao_num,ao_num,N_states) - - - exchange/correlation alpha/beta potentials with the short range PBE functional on the AO basis - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`aos_grad_in_r_array` - * :c:data:`aos_in_r_array` - * :c:data:`aos_sr_vc_alpha_pbe_w` - * :c:data:`n_points_final_grid` - * :c:data:`n_states` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`potential_x_alpha_ao` - - -.. c:var:: potential_x_alpha_ao - - - File : :file:`dft_utils_one_e/pot_general.irp.f` - - .. code:: fortran - - double precision, allocatable :: potential_x_alpha_ao (ao_num,ao_num,N_states) - double precision, allocatable :: potential_x_beta_ao (ao_num,ao_num,N_states) - double precision, allocatable :: potential_c_alpha_ao (ao_num,ao_num,N_states) - double precision, allocatable :: potential_c_beta_ao (ao_num,ao_num,N_states) - - - general providers for the alpha/beta exchange/correlation potentials on the AO basis - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`correlation_functional` - * :c:data:`exchange_functional` - * :c:data:`n_states` - * :c:data:`potential_sr_c_alpha_ao_lda` - * :c:data:`potential_sr_x_alpha_ao_lda` - * :c:data:`potential_sr_x_alpha_ao_pbe` - * :c:data:`potential_x_alpha_ao_lda` - * :c:data:`potential_x_alpha_ao_pbe` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_potential_alpha_xc` - * :c:data:`potential_x_alpha_mo` - - -.. c:var:: potential_x_alpha_ao_lda - - - File : :file:`dft_utils_one_e/pot_ao.irp.f` - - .. code:: fortran - - double precision, allocatable :: potential_x_alpha_ao_lda (ao_num,ao_num,N_states) - double precision, allocatable :: potential_x_beta_ao_lda (ao_num,ao_num,N_states) - double precision, allocatable :: potential_c_alpha_ao_lda (ao_num,ao_num,N_states) - double precision, allocatable :: potential_c_beta_ao_lda (ao_num,ao_num,N_states) - - - short range exchange/correlation alpha/beta potentials with LDA functional on the AO basis - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`aos_in_r_array` - * :c:data:`aos_vc_alpha_lda_w` - * :c:data:`n_points_final_grid` - * :c:data:`n_states` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`potential_x_alpha_ao` - - -.. c:var:: potential_x_alpha_ao_pbe - - - File : :file:`dft_utils_one_e/pot_ao.irp.f` - - .. code:: fortran - - double precision, allocatable :: potential_x_alpha_ao_pbe (ao_num,ao_num,N_states) - double precision, allocatable :: potential_x_beta_ao_pbe (ao_num,ao_num,N_states) - double precision, allocatable :: potential_c_alpha_ao_pbe (ao_num,ao_num,N_states) - double precision, allocatable :: potential_c_beta_ao_pbe (ao_num,ao_num,N_states) - - - exchange/correlation alpha/beta potentials with the short range PBE functional on the AO basis - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`aos_grad_in_r_array` - * :c:data:`aos_in_r_array` - * :c:data:`aos_vc_alpha_pbe_w` - * :c:data:`n_points_final_grid` - * :c:data:`n_states` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`potential_x_alpha_ao` - - -.. c:var:: potential_x_alpha_mo - - - File : :file:`dft_utils_one_e/pot_general.irp.f` - - .. code:: fortran - - double precision, allocatable :: potential_x_alpha_mo (mo_num,mo_num,N_states) - double precision, allocatable :: potential_x_beta_mo (mo_num,mo_num,N_states) - double precision, allocatable :: potential_c_alpha_mo (mo_num,mo_num,N_states) - double precision, allocatable :: potential_c_beta_mo (mo_num,mo_num,N_states) - - - general providers for the alpha/beta exchange/correlation potentials on the MO basis - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`mo_coef` - * :c:data:`mo_num` - * :c:data:`n_states` - * :c:data:`potential_x_alpha_ao` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`effective_one_e_potential` - * :c:data:`trace_v_xc` - - -.. c:var:: potential_x_beta_ao - - - File : :file:`dft_utils_one_e/pot_general.irp.f` - - .. code:: fortran - - double precision, allocatable :: potential_x_alpha_ao (ao_num,ao_num,N_states) - double precision, allocatable :: potential_x_beta_ao (ao_num,ao_num,N_states) - double precision, allocatable :: potential_c_alpha_ao (ao_num,ao_num,N_states) - double precision, allocatable :: potential_c_beta_ao (ao_num,ao_num,N_states) - - - general providers for the alpha/beta exchange/correlation potentials on the AO basis - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`correlation_functional` - * :c:data:`exchange_functional` - * :c:data:`n_states` - * :c:data:`potential_sr_c_alpha_ao_lda` - * :c:data:`potential_sr_x_alpha_ao_lda` - * :c:data:`potential_sr_x_alpha_ao_pbe` - * :c:data:`potential_x_alpha_ao_lda` - * :c:data:`potential_x_alpha_ao_pbe` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_potential_alpha_xc` - * :c:data:`potential_x_alpha_mo` - - -.. c:var:: potential_x_beta_ao_lda - - - File : :file:`dft_utils_one_e/pot_ao.irp.f` - - .. code:: fortran - - double precision, allocatable :: potential_x_alpha_ao_lda (ao_num,ao_num,N_states) - double precision, allocatable :: potential_x_beta_ao_lda (ao_num,ao_num,N_states) - double precision, allocatable :: potential_c_alpha_ao_lda (ao_num,ao_num,N_states) - double precision, allocatable :: potential_c_beta_ao_lda (ao_num,ao_num,N_states) - - - short range exchange/correlation alpha/beta potentials with LDA functional on the AO basis - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`aos_in_r_array` - * :c:data:`aos_vc_alpha_lda_w` - * :c:data:`n_points_final_grid` - * :c:data:`n_states` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`potential_x_alpha_ao` - - -.. c:var:: potential_x_beta_ao_pbe - - - File : :file:`dft_utils_one_e/pot_ao.irp.f` - - .. code:: fortran - - double precision, allocatable :: potential_x_alpha_ao_pbe (ao_num,ao_num,N_states) - double precision, allocatable :: potential_x_beta_ao_pbe (ao_num,ao_num,N_states) - double precision, allocatable :: potential_c_alpha_ao_pbe (ao_num,ao_num,N_states) - double precision, allocatable :: potential_c_beta_ao_pbe (ao_num,ao_num,N_states) - - - exchange/correlation alpha/beta potentials with the short range PBE functional on the AO basis - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`aos_grad_in_r_array` - * :c:data:`aos_in_r_array` - * :c:data:`aos_vc_alpha_pbe_w` - * :c:data:`n_points_final_grid` - * :c:data:`n_states` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`potential_x_alpha_ao` - - -.. c:var:: potential_x_beta_mo - - - File : :file:`dft_utils_one_e/pot_general.irp.f` - - .. code:: fortran - - double precision, allocatable :: potential_x_alpha_mo (mo_num,mo_num,N_states) - double precision, allocatable :: potential_x_beta_mo (mo_num,mo_num,N_states) - double precision, allocatable :: potential_c_alpha_mo (mo_num,mo_num,N_states) - double precision, allocatable :: potential_c_beta_mo (mo_num,mo_num,N_states) - - - general providers for the alpha/beta exchange/correlation potentials on the MO basis - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`mo_coef` - * :c:data:`mo_num` - * :c:data:`n_states` - * :c:data:`potential_x_alpha_ao` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`effective_one_e_potential` - * :c:data:`trace_v_xc` - - -.. c:var:: psi_dft_energy_h_core - - - File : :file:`dft_utils_one_e/one_e_energy_dft.irp.f` - - .. code:: fortran - - double precision, allocatable :: psi_dft_energy_kinetic (N_states) - double precision, allocatable :: psi_dft_energy_nuclear_elec (N_states) - double precision, allocatable :: psi_dft_energy_h_core (N_states) - - - kinetic, electron-nuclear and total h_core energy computed with the density matrix one_e_dm_mo_beta_for_dft+one_e_dm_mo_alpha_for_dft - - 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_num` - * :c:data:`n_states` - * :c:data:`one_e_dm_mo_alpha_for_dft` - * :c:data:`one_e_dm_mo_beta_for_dft` - - - -.. c:var:: psi_dft_energy_kinetic - - - File : :file:`dft_utils_one_e/one_e_energy_dft.irp.f` - - .. code:: fortran - - double precision, allocatable :: psi_dft_energy_kinetic (N_states) - double precision, allocatable :: psi_dft_energy_nuclear_elec (N_states) - double precision, allocatable :: psi_dft_energy_h_core (N_states) - - - kinetic, electron-nuclear and total h_core energy computed with the density matrix one_e_dm_mo_beta_for_dft+one_e_dm_mo_alpha_for_dft - - 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_num` - * :c:data:`n_states` - * :c:data:`one_e_dm_mo_alpha_for_dft` - * :c:data:`one_e_dm_mo_beta_for_dft` - - - -.. c:var:: psi_dft_energy_nuclear_elec - - - File : :file:`dft_utils_one_e/one_e_energy_dft.irp.f` - - .. code:: fortran - - double precision, allocatable :: psi_dft_energy_kinetic (N_states) - double precision, allocatable :: psi_dft_energy_nuclear_elec (N_states) - double precision, allocatable :: psi_dft_energy_h_core (N_states) - - - kinetic, electron-nuclear and total h_core energy computed with the density matrix one_e_dm_mo_beta_for_dft+one_e_dm_mo_alpha_for_dft - - 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_num` - * :c:data:`n_states` - * :c:data:`one_e_dm_mo_alpha_for_dft` - * :c:data:`one_e_dm_mo_beta_for_dft` - - - -.. c:var:: shifting_constant - - - File : :file:`dft_utils_one_e/shifted_potential.irp.f` - - .. code:: fortran - - double precision, allocatable :: shifting_constant (N_states) - - - shifting_constant = (E_{Hxc} - <\Psi | V_{Hxc} | \Psi>) / N_elec - constant to add to the potential in order to obtain the variational energy as - the eigenvalue of the effective long-range Hamiltonian - (see original paper of Levy PRL 113, 113002 (2014), equation (17) ) - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`elec_num` - * :c:data:`energy_x` - * :c:data:`n_states` - * :c:data:`short_range_hartree_operator` - * :c:data:`trace_v_xc` - - - -.. c:var:: short_range_hartree - - - File : :file:`dft_utils_one_e/sr_coulomb.irp.f` - - .. code:: fortran - - double precision, allocatable :: short_range_hartree_operator (mo_num,mo_num,N_states) - double precision, allocatable :: short_range_hartree (N_states) - - - short_range_Hartree_operator(i,j) = :math:`\int dr i(r)j(r) \int r' \rho(r') W_{ee}^{sr}` - - short_range_Hartree = :math:`1/2 \sum_{i,j} \rho_{ij} \mathtt{short_range_Hartree_operator}(i,j)` - - = :math:`1/2 \int dr \int r' \rho(r) \rho(r') W_{ee}^{sr}` - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`mo_integrals_erf_map` - * :c:data:`mo_integrals_map` - * :c:data:`mo_num` - * :c:data:`mo_two_e_integrals_erf_in_map` - * :c:data:`mo_two_e_integrals_in_map` - * :c:data:`n_states` - * :c:data:`one_e_dm_average_mo_for_dft` - * :c:data:`one_e_dm_mo_for_dft` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`effective_one_e_potential` - * :c:data:`shifting_constant` - * :c:data:`trace_v_xc` - - -.. c:var:: short_range_hartree_operator - - - File : :file:`dft_utils_one_e/sr_coulomb.irp.f` - - .. code:: fortran - - double precision, allocatable :: short_range_hartree_operator (mo_num,mo_num,N_states) - double precision, allocatable :: short_range_hartree (N_states) - - - short_range_Hartree_operator(i,j) = :math:`\int dr i(r)j(r) \int r' \rho(r') W_{ee}^{sr}` - - short_range_Hartree = :math:`1/2 \sum_{i,j} \rho_{ij} \mathtt{short_range_Hartree_operator}(i,j)` - - = :math:`1/2 \int dr \int r' \rho(r) \rho(r') W_{ee}^{sr}` - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`mo_integrals_erf_map` - * :c:data:`mo_integrals_map` - * :c:data:`mo_num` - * :c:data:`mo_two_e_integrals_erf_in_map` - * :c:data:`mo_two_e_integrals_in_map` - * :c:data:`n_states` - * :c:data:`one_e_dm_average_mo_for_dft` - * :c:data:`one_e_dm_mo_for_dft` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`effective_one_e_potential` - * :c:data:`shifting_constant` - * :c:data:`trace_v_xc` - - -.. c:var:: trace_v_h - - - File : :file:`dft_utils_one_e/pot_general.irp.f` - - .. code:: fortran - - double precision, allocatable :: trace_v_xc (N_states) - double precision, allocatable :: trace_v_h (N_states) - double precision, allocatable :: trace_v_hxc (N_states) - - - Trace_v_xc = \sum_{i,j} (rho_{ij}_\alpha v^{xc}_{ij}^\alpha + rho_{ij}_\beta v^{xc}_{ij}^\beta) - Trace_v_Hxc = \sum_{i,j} v^{H}_{ij} (rho_{ij}_\alpha + rho_{ij}_\beta) - Trace_v_Hxc = \sum_{i,j} rho_{ij} v^{Hxc}_{ij} - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`mo_num` - * :c:data:`n_states` - * :c:data:`one_e_dm_mo_alpha_for_dft` - * :c:data:`one_e_dm_mo_beta_for_dft` - * :c:data:`potential_x_alpha_mo` - * :c:data:`short_range_hartree_operator` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`shifting_constant` - - -.. c:var:: trace_v_hxc - - - File : :file:`dft_utils_one_e/pot_general.irp.f` - - .. code:: fortran - - double precision, allocatable :: trace_v_xc (N_states) - double precision, allocatable :: trace_v_h (N_states) - double precision, allocatable :: trace_v_hxc (N_states) - - - Trace_v_xc = \sum_{i,j} (rho_{ij}_\alpha v^{xc}_{ij}^\alpha + rho_{ij}_\beta v^{xc}_{ij}^\beta) - Trace_v_Hxc = \sum_{i,j} v^{H}_{ij} (rho_{ij}_\alpha + rho_{ij}_\beta) - Trace_v_Hxc = \sum_{i,j} rho_{ij} v^{Hxc}_{ij} - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`mo_num` - * :c:data:`n_states` - * :c:data:`one_e_dm_mo_alpha_for_dft` - * :c:data:`one_e_dm_mo_beta_for_dft` - * :c:data:`potential_x_alpha_mo` - * :c:data:`short_range_hartree_operator` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`shifting_constant` - - -.. c:var:: trace_v_xc - - - File : :file:`dft_utils_one_e/pot_general.irp.f` - - .. code:: fortran - - double precision, allocatable :: trace_v_xc (N_states) - double precision, allocatable :: trace_v_h (N_states) - double precision, allocatable :: trace_v_hxc (N_states) - - - Trace_v_xc = \sum_{i,j} (rho_{ij}_\alpha v^{xc}_{ij}^\alpha + rho_{ij}_\beta v^{xc}_{ij}^\beta) - Trace_v_Hxc = \sum_{i,j} v^{H}_{ij} (rho_{ij}_\alpha + rho_{ij}_\beta) - Trace_v_Hxc = \sum_{i,j} rho_{ij} v^{Hxc}_{ij} - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`mo_num` - * :c:data:`n_states` - * :c:data:`one_e_dm_mo_alpha_for_dft` - * :c:data:`one_e_dm_mo_beta_for_dft` - * :c:data:`potential_x_alpha_mo` - * :c:data:`short_range_hartree_operator` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`shifting_constant` - - - -Subroutines / functions ------------------------ - -.. c:function:: berf: - - - File : :file:`dft_utils_one_e/exc_sr_lda.irp.f` - - .. code:: fortran - - function berf(a) - - - - -.. c:function:: dberfda: - - - File : :file:`dft_utils_one_e/exc_sr_lda.irp.f` - - .. code:: fortran - - function dberfda(a) - - - - -.. c:function:: dpol: - - - File : :file:`dft_utils_one_e/exc_sr_lda.irp.f` - - .. code:: fortran - - double precision function dpol(rs) - - - - -.. c:function:: dpold: - - - File : :file:`dft_utils_one_e/exc_sr_lda.irp.f` - - .. code:: fortran - - double precision function dpold(rs) - - - - -.. c:function:: dpoldd: - - - File : :file:`dft_utils_one_e/exc_sr_lda.irp.f` - - .. code:: fortran - - double precision function dpoldd(rs) - - - - -.. c:function:: ec_lda: - - - File : :file:`dft_utils_one_e/exc_sr_lda.irp.f` - - .. code:: fortran - - subroutine ec_lda(rho_a,rho_b,ec,vc_a,vc_b) - - - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`ec_pbe_only` - * :c:func:`ec_pbe_sr` - * :c:data:`energy_x_lda` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`ecpw` - - -.. c:function:: ec_lda_sr: - - - File : :file:`dft_utils_one_e/exc_sr_lda.irp.f` - - .. code:: fortran - - subroutine ec_lda_sr(mu,rho_a,rho_b,ec,vc_a,vc_b) - - - - Called by: - - .. hlist:: - :columns: 3 - - * :c:data:`aos_sr_vc_alpha_lda_w` - * :c:data:`aos_vc_alpha_lda_w` - * :c:func:`ec_pbe_only` - * :c:func:`ec_pbe_sr` - * :c:data:`energy_sr_x_lda` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`ecorrlr` - * :c:func:`ecpw` - * :c:func:`vcorrlr` - - -.. c:function:: ec_only_lda_sr: - - - File : :file:`dft_utils_one_e/exc_sr_lda.irp.f` - - .. code:: fortran - - subroutine ec_only_lda_sr(mu,rho_a,rho_b,ec) - - - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`ecorrlr` - * :c:func:`ecpw` - - -.. c:function:: ec_pbe_only: - - - File : :file:`dft_utils_one_e/exc_sr_pbe.irp.f` - - .. code:: fortran - - subroutine ec_pbe_only(mu,rhoc,rhoo,sigmacc,sigmaco,sigmaoo,ec) - - - Short-range PBE correlation energy functional for erf interaction - - input : ========== - - mu = range separated parameter - - rhoc, rhoo = total density and spin density - - sigmacc = square of the gradient of the total density - - sigmaco = square of the gradient of the spin density - - sigmaoo = scalar product between the gradient of the total density and the one of the spin density - - output: ========== - - ec = correlation energy - - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`ec_lda` - * :c:func:`ec_lda_sr` - - -.. c:function:: ec_pbe_sr: - - - File : :file:`dft_utils_one_e/exc_sr_pbe.irp.f` - - .. code:: fortran - - subroutine ec_pbe_sr(mu,rhoc,rhoo,sigmacc,sigmaco,sigmaoo,ec,vrhoc,vrhoo,vsigmacc,vsigmaco,vsigmaoo) - - - Short-range PBE correlation energy functional for erf interaction - - input : ========== - - mu = range separated parameter - - rhoc, rhoo = total density and spin density - - sigmacc = square of the gradient of the total density - - sigmaco = square of the gradient of the spin density - - sigmaoo = scalar product between the gradient of the total density and the one of the spin density - - output: ========== - - ec = correlation energy - - all variables v** are energy derivatives with respect to components of the density - - vrhoc = derivative with respect to the total density - - vrhoo = derivative with respect to spin density - - vsigmacc = derivative with respect to the square of the gradient of the total density - - vsigmaco = derivative with respect to scalar product between the gradients of total and spin densities - - vsigmaoo = derivative with respect to the square of the gradient of the psin density - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`gga_sr_type_functionals` - * :c:func:`gga_type_functionals` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`ec_lda` - * :c:func:`ec_lda_sr` - - -.. c:function:: ecorrlr: - - - File : :file:`dft_utils_one_e/exc_sr_lda.irp.f` - - .. code:: fortran - - subroutine ecorrlr(rs,z,mu,eclr) - - - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`ec_lda_sr` - * :c:func:`ec_only_lda_sr` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`ecpw` - - -.. c:function:: ecpw: - - - File : :file:`dft_utils_one_e/exc_sr_lda.irp.f` - - .. code:: fortran - - subroutine ecPW(x,y,ec,ecd,ecz,ecdd,eczd) - - - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`ec_lda` - * :c:func:`ec_lda_sr` - * :c:func:`ec_only_lda_sr` - * :c:func:`ecorrlr` - * :c:func:`vcorrlr` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`gpw` - - -.. c:function:: ex_lda: - - - File : :file:`dft_utils_one_e/exc_sr_lda.irp.f` - - .. code:: fortran - - subroutine ex_lda(rho_a,rho_b,ex,vx_a,vx_b) - - - - Called by: - - .. hlist:: - :columns: 3 - - * :c:data:`energy_x_lda` - - -.. c:function:: ex_lda_sr: - - - File : :file:`dft_utils_one_e/exc_sr_lda.irp.f` - - .. code:: fortran - - subroutine ex_lda_sr(mu,rho_a,rho_b,ex,vx_a,vx_b) - - - - Called by: - - .. hlist:: - :columns: 3 - - * :c:data:`aos_sr_vc_alpha_lda_w` - * :c:data:`aos_vc_alpha_lda_w` - * :c:data:`energy_sr_x_lda` - * :c:func:`ex_pbe_sr` - * :c:func:`ex_pbe_sr_only` - - -.. c:function:: ex_pbe_sr: - - - File : :file:`dft_utils_one_e/exc_sr_pbe.irp.f` - - .. code:: fortran - - subroutine ex_pbe_sr(mu,rho_a,rho_b,grd_rho_a_2,grd_rho_b_2,grd_rho_a_b,ex,vx_rho_a,vx_rho_b,vx_grd_rho_a_2,vx_grd_rho_b_2,vx_grd_rho_a_b) - - - mu = range separation parameter - rho_a = density alpha - rho_b = density beta - grd_rho_a_2 = (gradient rho_a)^2 - grd_rho_b_2 = (gradient rho_b)^2 - grd_rho_a_b = (gradient rho_a).(gradient rho_b) - ex = exchange energy density at the density and corresponding gradients of the density - vx_rho_a = d ex / d rho_a - vx_rho_b = d ex / d rho_b - vx_grd_rho_a_2 = d ex / d grd_rho_a_2 - vx_grd_rho_b_2 = d ex / d grd_rho_b_2 - vx_grd_rho_a_b = d ex / d grd_rho_a_b - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`gga_sr_type_functionals` - * :c:func:`gga_type_functionals` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`ex_lda_sr` - - -.. c:function:: ex_pbe_sr_only: - - - File : :file:`dft_utils_one_e/exc_sr_pbe.irp.f` - - .. code:: fortran - - subroutine ex_pbe_sr_only(mu,rho_a,rho_b,grd_rho_a_2,grd_rho_b_2,grd_rho_a_b,ex) - - - rho_a = density alpha - rho_b = density beta - grd_rho_a_2 = (gradient rho_a)^2 - grd_rho_b_2 = (gradient rho_b)^2 - grd_rho_a_b = (gradient rho_a).(gradient rho_b) - ex = exchange energy density at point r - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`ex_lda_sr` - - -.. c:function:: g0d: - - - File : :file:`dft_utils_one_e/exc_sr_lda.irp.f` - - .. code:: fortran - - double precision function g0d(rs) - - - - -.. c:function:: g0dd: - - - File : :file:`dft_utils_one_e/exc_sr_lda.irp.f` - - .. code:: fortran - - double precision function g0dd(rs) - - - - -.. c:function:: g0f: - - - File : :file:`dft_utils_one_e/exc_sr_lda.irp.f` - - .. code:: fortran - - double precision function g0f(x) - - - - -.. c:function:: gpw: - - - File : :file:`dft_utils_one_e/exc_sr_lda.irp.f` - - .. code:: fortran - - subroutine GPW(x,Ac,alfa1,beta1,beta2,beta3,beta4,G,Gd,Gdd) - - - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`ecpw` - - -.. c:function:: grad_rho_ab_to_grad_rho_oc: - - - File : :file:`dft_utils_one_e/rho_ab_to_rho_tot.irp.f` - - .. code:: fortran - - subroutine grad_rho_ab_to_grad_rho_oc(grad_rho_a_2,grad_rho_b_2,grad_rho_a_b,grad_rho_o_2,grad_rho_c_2,grad_rho_o_c) - - - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`gga_sr_type_functionals` - * :c:func:`gga_type_functionals` - - -.. c:function:: qrpa: - - - File : :file:`dft_utils_one_e/exc_sr_lda.irp.f` - - .. code:: fortran - - double precision function Qrpa(x) - - - - -.. c:function:: qrpad: - - - File : :file:`dft_utils_one_e/exc_sr_lda.irp.f` - - .. code:: fortran - - double precision function Qrpad(x) - - - - -.. c:function:: qrpadd: - - - File : :file:`dft_utils_one_e/exc_sr_lda.irp.f` - - .. code:: fortran - - double precision function Qrpadd(x) - - - - -.. c:function:: rho_ab_to_rho_oc: - - - File : :file:`dft_utils_one_e/rho_ab_to_rho_tot.irp.f` - - .. code:: fortran - - subroutine rho_ab_to_rho_oc(rho_a,rho_b,rho_o,rho_c) - - - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`gga_sr_type_functionals` - * :c:func:`gga_type_functionals` - - -.. c:function:: rho_oc_to_rho_ab: - - - File : :file:`dft_utils_one_e/rho_ab_to_rho_tot.irp.f` - - .. code:: fortran - - subroutine rho_oc_to_rho_ab(rho_o,rho_c,rho_a,rho_b) - - - - -.. c:function:: v_grad_rho_oc_to_v_grad_rho_ab: - - - File : :file:`dft_utils_one_e/rho_ab_to_rho_tot.irp.f` - - .. code:: fortran - - subroutine v_grad_rho_oc_to_v_grad_rho_ab(v_grad_rho_o_2,v_grad_rho_c_2,v_grad_rho_o_c,v_grad_rho_a_2,v_grad_rho_b_2,v_grad_rho_a_b) - - - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`gga_sr_type_functionals` - * :c:func:`gga_type_functionals` - - -.. c:function:: v_rho_ab_to_v_rho_oc: - - - File : :file:`dft_utils_one_e/rho_ab_to_rho_tot.irp.f` - - .. code:: fortran - - subroutine v_rho_ab_to_v_rho_oc(v_rho_a,v_rho_b,v_rho_o,v_rho_c) - - - - -.. c:function:: v_rho_oc_to_v_rho_ab: - - - File : :file:`dft_utils_one_e/rho_ab_to_rho_tot.irp.f` - - .. code:: fortran - - subroutine v_rho_oc_to_v_rho_ab(v_rho_o,v_rho_c,v_rho_a,v_rho_b) - - - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`gga_sr_type_functionals` - * :c:func:`gga_type_functionals` - - -.. c:function:: vcorrlr: - - - File : :file:`dft_utils_one_e/exc_sr_lda.irp.f` - - .. code:: fortran - - subroutine vcorrlr(rs,z,mu,vclrup,vclrdown,vclrupd,vclrdownd) - - - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`ec_lda_sr` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`ecpw` - diff --git a/docs/source/modules/dressing.rst b/docs/source/modules/dressing.rst deleted file mode 100644 index 17695be4..00000000 --- a/docs/source/modules/dressing.rst +++ /dev/null @@ -1,36 +0,0 @@ -.. _module_dressing: - -.. program:: dressing - -.. default-role:: option - -========= -dress_zmq -========= - -Module to facilitate the construction of modules using dressed -Hamiltonians, parallelized with |ZeroMQ|. - - - - -EZFIO parameters ----------------- - -.. option:: thresh_dressed_ci - - Threshold on the convergence of the dressed |CI| energy - - Default: 1.e-5 - -.. option:: n_it_max_dressed_ci - - Maximum number of dressed |CI| iterations - - Default: 10 - -.. option:: dress_relative_error - - Stop stochastic dressing when the relative error is smaller than :option:`perturbation PT2_relative_error` - - Default: 0.001 diff --git a/docs/source/modules/electrons.rst b/docs/source/modules/electrons.rst deleted file mode 100644 index 17fc993f..00000000 --- a/docs/source/modules/electrons.rst +++ /dev/null @@ -1,114 +0,0 @@ -.. _module_electrons: - -.. program:: electrons - -.. default-role:: option - -========= -electrons -========= - -Describes the electrons. For the moment, only the number of alpha -and beta electrons are provided by this module. - - -Assumptions -=========== - -* `elec_num` >= 0 -* `elec_alpha_num` >= 0 -* `elec_beta_num` >= 0 -* `elec_alpha_num` >= `elec_beta_num` - - - - - -EZFIO parameters ----------------- - -.. option:: elec_alpha_num - - Numbers of electrons alpha ("up") - - -.. option:: elec_beta_num - - Numbers of electrons beta ("down") - - -.. option:: elec_num - - Numbers total of electrons (alpha + beta) - - Default: = electrons.elec_alpha_num + electrons.elec_beta_num - - -Providers ---------- - -.. c:var:: elec_num - - - File : :file:`electrons/electrons.irp.f` - - .. code:: fortran - - integer :: elec_num - integer, allocatable :: elec_num_tab (2) - - - Numbers of alpha ("up") , beta ("down") and total electrons - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`elec_alpha_num` - * :c:data:`elec_beta_num` - * :c:data:`ezfio_filename` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`diagonal_h_matrix_on_psi_det` - * :c:data:`psi_det_hii` - * :c:data:`psi_selectors_diag_h_mat` - * :c:data:`pt2_f` - - -.. c:var:: elec_num_tab - - - File : :file:`electrons/electrons.irp.f` - - .. code:: fortran - - integer :: elec_num - integer, allocatable :: elec_num_tab (2) - - - Numbers of alpha ("up") , beta ("down") and total electrons - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`elec_alpha_num` - * :c:data:`elec_beta_num` - * :c:data:`ezfio_filename` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`diagonal_h_matrix_on_psi_det` - * :c:data:`psi_det_hii` - * :c:data:`psi_selectors_diag_h_mat` - * :c:data:`pt2_f` - diff --git a/docs/source/modules/ezfio_files.rst b/docs/source/modules/ezfio_files.rst deleted file mode 100644 index 18cae0b6..00000000 --- a/docs/source/modules/ezfio_files.rst +++ /dev/null @@ -1,760 +0,0 @@ -.. _module_ezfio_files: - -.. program:: ezfio_files - -.. default-role:: option - -=========== -ezfio_files -=========== - -This modules essentially contains the name of the |EZFIO| directory in the -:c:data:`ezfio_filename` variable. This is read as the first argument of the -command-line, or as the :envvar:`QP_INPUT` environment variable. - - - - -Providers ---------- - -.. c:var:: ezfio_filename - - - File : :file:`ezfio_files/ezfio.irp.f` - - .. code:: fortran - - character*(128) :: ezfio_filename - - - Name of EZFIO file. It is obtained from the QPACKAGE_INPUT environment - variable if it is set, or as the 1st argument of the command line. - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`mpi_initialized` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_cartesian` - * :c:data:`ao_coef` - * :c:data:`ao_expo` - * :c:data:`ao_integrals_threshold` - * :c:data:`ao_md5` - * :c:data:`ao_nucl` - * :c:data:`ao_num` - * :c:data:`ao_power` - * :c:data:`ao_prim_num` - * :c:data:`ao_two_e_integrals_erf_in_map` - * :c:data:`ao_two_e_integrals_in_map` - * :c:data:`cas_bitmask` - * :c:data:`correlation_energy_ratio_max` - * :c:data:`data_energy_proj` - * :c:data:`data_energy_var` - * :c:data:`data_one_e_dm_alpha_mo` - * :c:data:`data_one_e_dm_beta_mo` - * :c:data:`davidson_sze_max` - * :c:data:`disk_access_nuclear_repulsion` - * :c:data:`disk_based_davidson` - * :c:data:`distributed_davidson` - * :c:data:`do_direct_integrals` - * :c:data:`do_pseudo` - * :c:data:`do_pt2` - * :c:data:`elec_alpha_num` - * :c:data:`elec_beta_num` - * :c:data:`elec_num` - * :c:data:`energy_iterations` - * :c:data:`ezfio_work_dir` - * :c:data:`frozen_orb_scf` - * :c:data:`generators_bitmask` - * :c:data:`generators_bitmask_restart` - * :c:data:`io_ao_integrals_e_n` - * :c:data:`io_ao_integrals_kinetic` - * :c:data:`io_ao_integrals_overlap` - * :c:data:`io_ao_integrals_pseudo` - * :c:data:`io_ao_one_e_integrals` - * :c:data:`io_ao_two_e_integrals` - * :c:data:`io_ao_two_e_integrals_erf` - * :c:data:`io_mo_integrals_e_n` - * :c:data:`io_mo_integrals_kinetic` - * :c:data:`io_mo_integrals_pseudo` - * :c:data:`io_mo_one_e_integrals` - * :c:data:`io_mo_two_e_integrals` - * :c:data:`io_mo_two_e_integrals_erf` - * :c:data:`level_shift` - * :c:data:`max_dim_diis` - * :c:data:`mo_class` - * :c:data:`mo_coef` - * :c:data:`mo_guess_type` - * :c:data:`mo_integrals_threshold` - * :c:data:`mo_label` - * :c:data:`mo_num` - * :c:data:`mo_occ` - * :c:data:`mo_two_e_integrals_erf_in_map` - * :c:data:`mo_two_e_integrals_in_map` - * :c:data:`mu_erf` - * :c:data:`n_cas_bitmask` - * :c:data:`n_det` - * :c:data:`n_det_iterations` - * :c:data:`n_det_max` - * :c:data:`n_det_max_full` - * :c:data:`n_det_print_wf` - * :c:data:`n_generators_bitmask` - * :c:data:`n_generators_bitmask_restart` - * :c:data:`n_it_scf_max` - * :c:data:`n_iter` - * :c:data:`n_states` - * :c:data:`n_states_diag` - * :c:data:`no_ivvv_integrals` - * :c:data:`no_vvv_integrals` - * :c:data:`no_vvvv_integrals` - * :c:data:`nucl_charge` - * :c:data:`nucl_charge_remove` - * :c:data:`nucl_coord` - * :c:data:`nucl_label` - * :c:data:`nucl_num` - * :c:data:`only_expected_s2` - * :c:data:`pseudo_dz_k` - * :c:data:`pseudo_dz_kl` - * :c:data:`pseudo_grid_rmax` - * :c:data:`pseudo_grid_size` - * :c:data:`pseudo_klocmax` - * :c:data:`pseudo_kmax` - * :c:data:`pseudo_lmax` - * :c:data:`pseudo_n_k` - * :c:data:`pseudo_n_kl` - * :c:data:`pseudo_v_k` - * :c:data:`pseudo_v_kl` - * :c:data:`psi_coef` - * :c:data:`psi_det` - * :c:data:`psi_det_size` - * :c:data:`pt2_iterations` - * :c:data:`pt2_max` - * :c:data:`pt2_relative_error` - * :c:data:`qp_stop_filename` - * :c:data:`read_wf` - * :c:data:`s2_eig` - * :c:data:`scf_algorithm` - * :c:data:`state_following` - * :c:data:`target_energy` - * :c:data:`thresh_scf` - * :c:data:`threshold_davidson` - * :c:data:`threshold_diis` - * :c:data:`threshold_generators` - * :c:data:`used_weight` - - -.. c:var:: ezfio_work_dir - - - File : :file:`ezfio_files/ezfio.irp.f` - - .. code:: fortran - - character*(128) :: ezfio_work_dir - - - EZFIO/work/ - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ezfio_filename` - - - -.. c:var:: file_lock - - - File : :file:`ezfio_files/lock.irp.f` - - .. code:: fortran - - integer(omp_lock_kind) :: file_lock - - - OpenMP Lock for I/O - - - -.. c:var:: output_cpu_time_0 - - - File : :file:`ezfio_files/output.irp.f` - - .. code:: fortran - - double precision :: output_wall_time_0 - double precision :: output_cpu_time_0 - - - Initial CPU and wall times when printing in the output files - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_cartesian` - * :c:data:`ao_coef` - * :c:data:`ao_expo` - * :c:data:`ao_integrals_threshold` - * :c:data:`ao_md5` - * :c:data:`ao_nucl` - * :c:data:`ao_num` - * :c:data:`ao_power` - * :c:data:`ao_prim_num` - * :c:data:`ci_energy` - * :c:data:`correlation_energy_ratio_max` - * :c:data:`data_energy_proj` - * :c:data:`data_energy_var` - * :c:data:`data_one_e_dm_alpha_mo` - * :c:data:`data_one_e_dm_beta_mo` - * :c:data:`davidson_sze_max` - * :c:data:`disk_access_nuclear_repulsion` - * :c:data:`disk_based_davidson` - * :c:data:`distributed_davidson` - * :c:data:`do_direct_integrals` - * :c:data:`do_pseudo` - * :c:data:`do_pt2` - * :c:data:`elec_alpha_num` - * :c:data:`elec_beta_num` - * :c:data:`energy_iterations` - * :c:data:`frozen_orb_scf` - * :c:data:`io_ao_integrals_e_n` - * :c:data:`io_ao_integrals_kinetic` - * :c:data:`io_ao_integrals_overlap` - * :c:data:`io_ao_integrals_pseudo` - * :c:data:`io_ao_one_e_integrals` - * :c:data:`io_ao_two_e_integrals` - * :c:data:`io_ao_two_e_integrals_erf` - * :c:data:`io_mo_integrals_e_n` - * :c:data:`io_mo_integrals_kinetic` - * :c:data:`io_mo_integrals_pseudo` - * :c:data:`io_mo_one_e_integrals` - * :c:data:`io_mo_two_e_integrals` - * :c:data:`io_mo_two_e_integrals_erf` - * :c:data:`level_shift` - * :c:data:`max_dim_diis` - * :c:data:`mo_class` - * :c:data:`mo_guess_type` - * :c:data:`mo_integrals_threshold` - * :c:data:`mu_erf` - * :c:data:`n_det_generators` - * :c:data:`n_det_iterations` - * :c:data:`n_det_max` - * :c:data:`n_det_max_full` - * :c:data:`n_det_print_wf` - * :c:data:`n_det_selectors` - * :c:data:`n_it_scf_max` - * :c:data:`n_iter` - * :c:data:`n_states` - * :c:data:`n_states_diag` - * :c:data:`no_ivvv_integrals` - * :c:data:`no_vvv_integrals` - * :c:data:`no_vvvv_integrals` - * :c:data:`nucl_charge` - * :c:data:`nucl_charge_remove` - * :c:data:`nucl_coord` - * :c:data:`nucl_label` - * :c:data:`nucl_num` - * :c:data:`nuclear_repulsion` - * :c:data:`only_expected_s2` - * :c:data:`pseudo_dz_k` - * :c:data:`pseudo_dz_kl` - * :c:data:`pseudo_grid_rmax` - * :c:data:`pseudo_grid_size` - * :c:data:`pseudo_klocmax` - * :c:data:`pseudo_kmax` - * :c:data:`pseudo_lmax` - * :c:data:`pseudo_n_k` - * :c:data:`pseudo_n_kl` - * :c:data:`pseudo_v_k` - * :c:data:`pseudo_v_kl` - * :c:data:`pt2_iterations` - * :c:data:`pt2_max` - * :c:data:`pt2_relative_error` - * :c:data:`read_wf` - * :c:data:`s2_eig` - * :c:data:`scf_algorithm` - * :c:data:`state_following` - * :c:data:`target_energy` - * :c:data:`thresh_scf` - * :c:data:`threshold_davidson` - * :c:data:`threshold_diis` - * :c:data:`threshold_generators` - * :c:data:`used_weight` - - -.. c:var:: output_wall_time_0 - - - File : :file:`ezfio_files/output.irp.f` - - .. code:: fortran - - double precision :: output_wall_time_0 - double precision :: output_cpu_time_0 - - - Initial CPU and wall times when printing in the output files - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_cartesian` - * :c:data:`ao_coef` - * :c:data:`ao_expo` - * :c:data:`ao_integrals_threshold` - * :c:data:`ao_md5` - * :c:data:`ao_nucl` - * :c:data:`ao_num` - * :c:data:`ao_power` - * :c:data:`ao_prim_num` - * :c:data:`ci_energy` - * :c:data:`correlation_energy_ratio_max` - * :c:data:`data_energy_proj` - * :c:data:`data_energy_var` - * :c:data:`data_one_e_dm_alpha_mo` - * :c:data:`data_one_e_dm_beta_mo` - * :c:data:`davidson_sze_max` - * :c:data:`disk_access_nuclear_repulsion` - * :c:data:`disk_based_davidson` - * :c:data:`distributed_davidson` - * :c:data:`do_direct_integrals` - * :c:data:`do_pseudo` - * :c:data:`do_pt2` - * :c:data:`elec_alpha_num` - * :c:data:`elec_beta_num` - * :c:data:`energy_iterations` - * :c:data:`frozen_orb_scf` - * :c:data:`io_ao_integrals_e_n` - * :c:data:`io_ao_integrals_kinetic` - * :c:data:`io_ao_integrals_overlap` - * :c:data:`io_ao_integrals_pseudo` - * :c:data:`io_ao_one_e_integrals` - * :c:data:`io_ao_two_e_integrals` - * :c:data:`io_ao_two_e_integrals_erf` - * :c:data:`io_mo_integrals_e_n` - * :c:data:`io_mo_integrals_kinetic` - * :c:data:`io_mo_integrals_pseudo` - * :c:data:`io_mo_one_e_integrals` - * :c:data:`io_mo_two_e_integrals` - * :c:data:`io_mo_two_e_integrals_erf` - * :c:data:`level_shift` - * :c:data:`max_dim_diis` - * :c:data:`mo_class` - * :c:data:`mo_guess_type` - * :c:data:`mo_integrals_threshold` - * :c:data:`mu_erf` - * :c:data:`n_det_generators` - * :c:data:`n_det_iterations` - * :c:data:`n_det_max` - * :c:data:`n_det_max_full` - * :c:data:`n_det_print_wf` - * :c:data:`n_det_selectors` - * :c:data:`n_it_scf_max` - * :c:data:`n_iter` - * :c:data:`n_states` - * :c:data:`n_states_diag` - * :c:data:`no_ivvv_integrals` - * :c:data:`no_vvv_integrals` - * :c:data:`no_vvvv_integrals` - * :c:data:`nucl_charge` - * :c:data:`nucl_charge_remove` - * :c:data:`nucl_coord` - * :c:data:`nucl_label` - * :c:data:`nucl_num` - * :c:data:`nuclear_repulsion` - * :c:data:`only_expected_s2` - * :c:data:`pseudo_dz_k` - * :c:data:`pseudo_dz_kl` - * :c:data:`pseudo_grid_rmax` - * :c:data:`pseudo_grid_size` - * :c:data:`pseudo_klocmax` - * :c:data:`pseudo_kmax` - * :c:data:`pseudo_lmax` - * :c:data:`pseudo_n_k` - * :c:data:`pseudo_n_kl` - * :c:data:`pseudo_v_k` - * :c:data:`pseudo_v_kl` - * :c:data:`pt2_iterations` - * :c:data:`pt2_max` - * :c:data:`pt2_relative_error` - * :c:data:`read_wf` - * :c:data:`s2_eig` - * :c:data:`scf_algorithm` - * :c:data:`state_following` - * :c:data:`target_energy` - * :c:data:`thresh_scf` - * :c:data:`threshold_davidson` - * :c:data:`threshold_diis` - * :c:data:`threshold_generators` - * :c:data:`used_weight` - - -.. c:var:: qp_kill_filename - - - File : :file:`ezfio_files/qp_stop.irp.f` - - .. code:: fortran - - character*(128) :: qp_stop_filename - character*(128) :: qp_kill_filename - integer :: qp_stop_variable - - - Name of the file to check for qp stop - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ezfio_filename` - - - -.. c:var:: qp_stop_filename - - - File : :file:`ezfio_files/qp_stop.irp.f` - - .. code:: fortran - - character*(128) :: qp_stop_filename - character*(128) :: qp_kill_filename - integer :: qp_stop_variable - - - Name of the file to check for qp stop - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ezfio_filename` - - - -.. c:var:: qp_stop_variable - - - File : :file:`ezfio_files/qp_stop.irp.f` - - .. code:: fortran - - character*(128) :: qp_stop_filename - character*(128) :: qp_kill_filename - integer :: qp_stop_variable - - - Name of the file to check for qp stop - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ezfio_filename` - - - - -Subroutines / functions ------------------------ - -.. c:function:: getunitandopen: - - - File : :file:`ezfio_files/get_unit_and_open.irp.f` - - .. code:: fortran - - integer function getUnitAndOpen(f,mode) - - - :f: - file name - - :mode: - 'R' : READ, UNFORMATTED - 'W' : WRITE, UNFORMATTED - 'r' : READ, FORMATTED - 'w' : WRITE, FORMATTED - 'a' : APPEND, FORMATTED - 'x' : READ/WRITE, FORMATTED - - - -.. c:function:: qp_stop: - - - File : :file:`ezfio_files/qp_stop.irp.f` - - .. code:: fortran - - logical function qp_stop() - - - Checks if the qp_stop command was invoked for the clean termination of the program - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`qp_stop_filename` - - -.. c:function:: write_bool: - - - File : :file:`ezfio_files/output.irp.f` - - .. code:: fortran - - subroutine write_bool(iunit,value,label) - - - Write an logical value in output - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`mpi_master` - - -.. c:function:: write_double: - - - File : :file:`ezfio_files/output.irp.f` - - .. code:: fortran - - subroutine write_double(iunit,value,label) - - - Write a double precision value in output - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`mpi_master` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:data:`ci_energy` - * :c:func:`damping_scf` - * :c:func:`davidson_diag_hjj_sjj` - * :c:data:`nuclear_repulsion` - * :c:data:`psi_coef_max` - * :c:data:`pt2_e0_denominator` - * :c:func:`roothaan_hall_scf` - * :c:func:`run_cipsi` - * :c:func:`run_slave_main` - * :c:func:`run_stochastic_cipsi` - * :c:func:`zmq_pt2` - * :c:func:`zmq_selection` - - -.. c:function:: write_int: - - - File : :file:`ezfio_files/output.irp.f` - - .. code:: fortran - - subroutine write_int(iunit,value,label) - - - Write an integer value in output - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`mpi_master` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`davidson_diag_hjj_sjj` - * :c:func:`make_s2_eigenfunction` - * :c:data:`mo_num` - * :c:data:`n_cas_bitmask` - * :c:data:`n_core_orb` - * :c:data:`n_det` - * :c:data:`n_det_generators` - * :c:data:`n_det_selectors` - * :c:data:`n_generators_bitmask` - * :c:data:`n_generators_bitmask_restart` - * :c:data:`n_int` - * :c:data:`nthreads_davidson` - * :c:data:`nthreads_pt2` - * :c:data:`psi_cas` - * :c:data:`psi_det_alpha_unique` - * :c:data:`psi_det_beta_unique` - * :c:data:`psi_det_size` - * :c:data:`pt2_n_teeth` - * :c:data:`qp_max_mem` - * :c:func:`remove_small_contributions` - * :c:func:`save_wavefunction_general` - * :c:func:`save_wavefunction_specified` - * :c:func:`zmq_pt2` - - -.. c:function:: write_time: - - - File : :file:`ezfio_files/output.irp.f` - - .. code:: fortran - - subroutine write_time(iunit) - - - Write a time stamp in the output for chronological reconstruction - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`output_wall_time_0` - * :c:data:`mpi_master` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_cartesian` - * :c:data:`ao_coef` - * :c:data:`ao_expo` - * :c:data:`ao_integrals_threshold` - * :c:data:`ao_md5` - * :c:data:`ao_nucl` - * :c:data:`ao_num` - * :c:data:`ao_power` - * :c:data:`ao_prim_num` - * :c:data:`ci_energy` - * :c:data:`correlation_energy_ratio_max` - * :c:func:`damping_scf` - * :c:data:`data_energy_proj` - * :c:data:`data_energy_var` - * :c:data:`data_one_e_dm_alpha_mo` - * :c:data:`data_one_e_dm_beta_mo` - * :c:func:`davidson_diag_hjj_sjj` - * :c:data:`davidson_sze_max` - * :c:data:`disk_access_nuclear_repulsion` - * :c:data:`disk_based_davidson` - * :c:data:`distributed_davidson` - * :c:data:`do_direct_integrals` - * :c:data:`do_pseudo` - * :c:data:`do_pt2` - * :c:data:`elec_alpha_num` - * :c:data:`elec_beta_num` - * :c:data:`energy_iterations` - * :c:data:`frozen_orb_scf` - * :c:data:`io_ao_integrals_e_n` - * :c:data:`io_ao_integrals_kinetic` - * :c:data:`io_ao_integrals_overlap` - * :c:data:`io_ao_integrals_pseudo` - * :c:data:`io_ao_one_e_integrals` - * :c:data:`io_ao_two_e_integrals` - * :c:data:`io_ao_two_e_integrals_erf` - * :c:data:`io_mo_integrals_e_n` - * :c:data:`io_mo_integrals_kinetic` - * :c:data:`io_mo_integrals_pseudo` - * :c:data:`io_mo_one_e_integrals` - * :c:data:`io_mo_two_e_integrals` - * :c:data:`io_mo_two_e_integrals_erf` - * :c:data:`level_shift` - * :c:func:`make_s2_eigenfunction` - * :c:data:`max_dim_diis` - * :c:func:`mo_as_eigvectors_of_mo_matrix` - * :c:func:`mo_as_svd_vectors_of_mo_matrix` - * :c:func:`mo_as_svd_vectors_of_mo_matrix_eig` - * :c:data:`mo_class` - * :c:data:`mo_guess_type` - * :c:data:`mo_integrals_threshold` - * :c:data:`mu_erf` - * :c:data:`n_det_generators` - * :c:data:`n_det_iterations` - * :c:data:`n_det_max` - * :c:data:`n_det_max_full` - * :c:data:`n_det_print_wf` - * :c:data:`n_det_selectors` - * :c:data:`n_it_scf_max` - * :c:data:`n_iter` - * :c:data:`n_states` - * :c:data:`n_states_diag` - * :c:data:`no_ivvv_integrals` - * :c:data:`no_vvv_integrals` - * :c:data:`no_vvvv_integrals` - * :c:data:`nucl_charge` - * :c:data:`nucl_charge_remove` - * :c:data:`nucl_coord` - * :c:data:`nucl_label` - * :c:data:`nucl_num` - * :c:data:`nuclear_repulsion` - * :c:data:`only_expected_s2` - * :c:data:`pseudo_dz_k` - * :c:data:`pseudo_dz_kl` - * :c:data:`pseudo_grid_rmax` - * :c:data:`pseudo_grid_size` - * :c:data:`pseudo_klocmax` - * :c:data:`pseudo_kmax` - * :c:data:`pseudo_lmax` - * :c:data:`pseudo_n_k` - * :c:data:`pseudo_n_kl` - * :c:data:`pseudo_v_k` - * :c:data:`pseudo_v_kl` - * :c:data:`pt2_iterations` - * :c:data:`pt2_max` - * :c:data:`pt2_relative_error` - * :c:data:`read_wf` - * :c:func:`roothaan_hall_scf` - * :c:data:`s2_eig` - * :c:data:`scf_algorithm` - * :c:data:`state_following` - * :c:data:`target_energy` - * :c:data:`thresh_scf` - * :c:data:`threshold_davidson` - * :c:data:`threshold_diis` - * :c:data:`threshold_generators` - * :c:data:`used_weight` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`cpu_time` - * :c:func:`print_memory_usage` - * :c:func:`wall_time` - diff --git a/docs/source/modules/fci.rst b/docs/source/modules/fci.rst deleted file mode 100644 index 2631511b..00000000 --- a/docs/source/modules/fci.rst +++ /dev/null @@ -1,151 +0,0 @@ -.. _module_fci: - -.. program:: fci - -.. default-role:: option - -=== -fci -=== - - -|CIPSI| algorithm in the full configuration interaction space. - - -The user point of view ----------------------- - -* :c:func:`fci` performs |CIPSI| calculations using a stochastic scheme for both the selection and the |PT2| contribution, -* :c:func:`pt2` computes the |PT2| contribution using the wave function stored in the |EZFIO| - database. - - -The main keywords/options for this module are: - -* :option:`determinants n_det_max` : maximum number of Slater determinants in the CIPSI wave function. The :command:`fci` program will stop when the size of the CIPSI wave function will exceed :option:`determinants n_det_max`. - -* :option:`perturbation pt2_max` : absolute value of the |PT2| to stop the CIPSI calculation. Once the |PT2| :math:`<` :option:`perturbation pt2_max`, the CIPSI calculation stops. - -* :option:`determinants n_states` : number of states to consider in the CIPSI calculation. - -* :option:`determinants read_wf` : if False, starts with a ROHF-like determinant, if True, starts with the current wave function(s) stored in the |EZFIO| folder. - -.. note:: - For a multi-state calculation, it is recommended to start with :c:func:`cis` or :c:func:`cisd` - wave functions as a guess. - -* :option:`determinants s2_eig` : if True, systematically add all the determinants needed to have a pure value of :math:`S^2`. Also, if True, it tracks only the states having the good :option:`determinants expected_s2`. - -.. note:: - For a multi-state calculation, it is recommended to start with :c:func:`cis` or :c:func:`cisd` - wave functions as a guess. - -* :option:`determinants expected_s2` : expected value of :math:`S^2` for the desired spin multiplicity. - - - -The programmer point of view ----------------------------- - -This module have been created with the :ref:`cipsi` module. - -.. seealso:: - - The documentation of the :ref:`cipsi` module. - - - - - -EZFIO parameters ----------------- - -.. option:: energy - - Calculated Selected |FCI| energy - - -.. option:: energy_pt2 - - Calculated |FCI| energy + |PT2| - - - -Programs --------- - - * :ref:`fci` - * :ref:`pt2` - -Providers ---------- - -.. c:var:: do_ddci - - - File : :file:`fci/class.irp.f` - - .. code:: fortran - - logical :: do_only_1h1p - logical :: do_ddci - - - In the FCI case, all those are always false - - - -.. c:var:: do_only_1h1p - - - File : :file:`fci/class.irp.f` - - .. code:: fortran - - logical :: do_only_1h1p - logical :: do_ddci - - - In the FCI case, all those are always false - - - - -Subroutines / functions ------------------------ - -.. c:function:: save_energy: - - - File : :file:`fci/save_energy.irp.f` - - .. code:: fortran - - subroutine save_energy(E,pt2) - - - Saves the energy in |EZFIO|. - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`n_states` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`run_cipsi` - * :c:func:`run_stochastic_cipsi` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`ezfio_set_fci_energy` - * :c:func:`ezfio_set_fci_energy_pt2` - diff --git a/docs/source/modules/generators_cas.rst b/docs/source/modules/generators_cas.rst deleted file mode 100644 index e4452aca..00000000 --- a/docs/source/modules/generators_cas.rst +++ /dev/null @@ -1,19 +0,0 @@ -.. _module_generators_cas: - -.. program:: generators_cas - -.. default-role:: option - -============== -generators_cas -============== - -Module defining the generator determinants as those belonging to a |CAS|. -The |MOs| belonging to the |CAS| are those which were set as active with -the :ref:`qp_set_mo_class` command. - -This module is intended to be included in the :file:`NEED` file to define -the generators as the |CAS| determinants, which can be useful to define post-CAS approaches (see cassd module for instance). - - - diff --git a/docs/source/modules/generators_full.rst b/docs/source/modules/generators_full.rst deleted file mode 100644 index 3af33dde..00000000 --- a/docs/source/modules/generators_full.rst +++ /dev/null @@ -1,295 +0,0 @@ -.. _module_generators_full: - -.. program:: generators_full - -.. default-role:: option - -=============== -generators_full -=============== - -Module defining the generator determinants as all the determinants of the -variational space. - -This module is intended to be included in the :file:`NEED` file to define -a full set of generators. - - - -Providers ---------- - -.. c:var:: degree_max_generators - - - File : :file:`generators_full/generators.irp.f` - - .. code:: fortran - - integer :: degree_max_generators - - - Max degree of excitation (respect to HF) of the generators - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`hf_bitmask` - * :c:data:`n_det_generators` - * :c:data:`n_int` - * :c:data:`psi_det_generators` - - - -.. c:var:: n_det_generators - - - File : :file:`generators_full/generators.irp.f` - - .. code:: fortran - - integer :: n_det_generators - - - For Single reference wave functions, the number of generators is 1 : the - Hartree-Fock determinant - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`mpi_master` - * :c:data:`n_det` - * :c:data:`output_wall_time_0` - * :c:data:`psi_det_sorted` - * :c:data:`threshold_generators` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`degree_max_generators` - * :c:data:`n_det_selectors` - * :c:data:`pt2_f` - * :c:data:`pt2_j` - * :c:data:`pt2_n_tasks` - * :c:data:`pt2_n_teeth` - * :c:data:`pt2_u` - * :c:data:`pt2_w` - - -.. c:var:: psi_coef_generators - - - File : :file:`generators_full/generators.irp.f` - - .. code:: fortran - - integer(bit_kind), allocatable :: psi_det_generators (N_int,2,psi_det_size) - double precision, allocatable :: psi_coef_generators (psi_det_size,N_states) - - - For Single reference wave functions, the generator is the - Hartree-Fock determinant - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`n_det` - * :c:data:`n_int` - * :c:data:`n_states` - * :c:data:`psi_det_size` - * :c:data:`psi_det_sorted` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`degree_max_generators` - - -.. c:var:: psi_coef_sorted_gen - - - File : :file:`generators_full/generators.irp.f` - - .. code:: fortran - - integer(bit_kind), allocatable :: psi_det_sorted_gen (N_int,2,psi_det_size) - double precision, allocatable :: psi_coef_sorted_gen (psi_det_size,N_states) - integer, allocatable :: psi_det_sorted_gen_order (psi_det_size) - - - For Single reference wave functions, the generator is the - Hartree-Fock determinant - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`n_int` - * :c:data:`n_states` - * :c:data:`psi_det_size` - * :c:data:`psi_det_sorted` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`pt2_f` - * :c:data:`pt2_n_teeth` - * :c:data:`pt2_w` - - -.. c:var:: psi_det_generators - - - File : :file:`generators_full/generators.irp.f` - - .. code:: fortran - - integer(bit_kind), allocatable :: psi_det_generators (N_int,2,psi_det_size) - double precision, allocatable :: psi_coef_generators (psi_det_size,N_states) - - - For Single reference wave functions, the generator is the - Hartree-Fock determinant - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`n_det` - * :c:data:`n_int` - * :c:data:`n_states` - * :c:data:`psi_det_size` - * :c:data:`psi_det_sorted` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`degree_max_generators` - - -.. c:var:: psi_det_sorted_gen - - - File : :file:`generators_full/generators.irp.f` - - .. code:: fortran - - integer(bit_kind), allocatable :: psi_det_sorted_gen (N_int,2,psi_det_size) - double precision, allocatable :: psi_coef_sorted_gen (psi_det_size,N_states) - integer, allocatable :: psi_det_sorted_gen_order (psi_det_size) - - - For Single reference wave functions, the generator is the - Hartree-Fock determinant - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`n_int` - * :c:data:`n_states` - * :c:data:`psi_det_size` - * :c:data:`psi_det_sorted` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`pt2_f` - * :c:data:`pt2_n_teeth` - * :c:data:`pt2_w` - - -.. c:var:: psi_det_sorted_gen_order - - - File : :file:`generators_full/generators.irp.f` - - .. code:: fortran - - integer(bit_kind), allocatable :: psi_det_sorted_gen (N_int,2,psi_det_size) - double precision, allocatable :: psi_coef_sorted_gen (psi_det_size,N_states) - integer, allocatable :: psi_det_sorted_gen_order (psi_det_size) - - - For Single reference wave functions, the generator is the - Hartree-Fock determinant - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`n_int` - * :c:data:`n_states` - * :c:data:`psi_det_size` - * :c:data:`psi_det_sorted` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`pt2_f` - * :c:data:`pt2_n_teeth` - * :c:data:`pt2_w` - - -.. c:var:: select_max - - - File : :file:`generators_full/generators.irp.f` - - .. code:: fortran - - double precision, allocatable :: select_max (size_select_max) - - - Memo to skip useless selectors - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`size_select_max` - - - -.. c:var:: size_select_max - - - File : :file:`generators_full/generators.irp.f` - - .. code:: fortran - - integer :: size_select_max - - - Size of the select_max array - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`select_max` - diff --git a/docs/source/modules/hartree_fock.rst b/docs/source/modules/hartree_fock.rst deleted file mode 100644 index 9f818166..00000000 --- a/docs/source/modules/hartree_fock.rst +++ /dev/null @@ -1,406 +0,0 @@ -.. _module_hartree_fock: - -.. program:: hartree_fock - -.. default-role:: option - -============ -hartree_fock -============ - - -The :ref:`scf` program performs *Restricted* Hartree-Fock -calculations (the spatial part of the |MOs| is common for alpha and beta -spinorbitals). - -The Hartree-Fock algorithm is a |SCF| and therefore is based on the -:ref:`module_scf_utils`` module. - -The Fock matrix is defined in :file:`hartree_fock fock_matrix_hf.irp.f`. - - - - - - -EZFIO parameters ----------------- - -.. option:: energy - - Energy HF - - - -Programs --------- - - * :ref:`scf` - -Providers ---------- - -.. c:var:: ao_two_e_integral_alpha - - - File : :file:`hartree_fock/fock_matrix_hf.irp.f` - - .. code:: fortran - - double precision, allocatable :: ao_two_e_integral_alpha (ao_num,ao_num) - double precision, allocatable :: ao_two_e_integral_beta (ao_num,ao_num) - - - Alpha Fock matrix in AO basis set - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_coef_normalized_ordered_transp` - * :c:data:`ao_expo_ordered_transp` - * :c:data:`ao_integrals_map` - * :c:data:`ao_integrals_threshold` - * :c:data:`ao_nucl` - * :c:data:`ao_num` - * :c:data:`ao_overlap_abs` - * :c:data:`ao_power` - * :c:data:`ao_prim_num` - * :c:data:`ao_two_e_integral_schwartz` - * :c:data:`ao_two_e_integrals_in_map` - * :c:data:`do_direct_integrals` - * :c:data:`n_pt_max_integrals` - * :c:data:`nucl_coord` - * :c:data:`scf_density_matrix_ao_alpha` - * :c:data:`scf_density_matrix_ao_beta` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`fock_matrix_ao_alpha` - * :c:data:`hf_energy` - - -.. c:var:: ao_two_e_integral_beta - - - File : :file:`hartree_fock/fock_matrix_hf.irp.f` - - .. code:: fortran - - double precision, allocatable :: ao_two_e_integral_alpha (ao_num,ao_num) - double precision, allocatable :: ao_two_e_integral_beta (ao_num,ao_num) - - - Alpha Fock matrix in AO basis set - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_coef_normalized_ordered_transp` - * :c:data:`ao_expo_ordered_transp` - * :c:data:`ao_integrals_map` - * :c:data:`ao_integrals_threshold` - * :c:data:`ao_nucl` - * :c:data:`ao_num` - * :c:data:`ao_overlap_abs` - * :c:data:`ao_power` - * :c:data:`ao_prim_num` - * :c:data:`ao_two_e_integral_schwartz` - * :c:data:`ao_two_e_integrals_in_map` - * :c:data:`do_direct_integrals` - * :c:data:`n_pt_max_integrals` - * :c:data:`nucl_coord` - * :c:data:`scf_density_matrix_ao_alpha` - * :c:data:`scf_density_matrix_ao_beta` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`fock_matrix_ao_alpha` - * :c:data:`hf_energy` - - -.. c:var:: extra_e_contrib_density - - - File : :file:`hartree_fock/hf_energy.irp.f` - - .. code:: fortran - - double precision :: extra_e_contrib_density - - - Extra contribution to the SCF energy coming from the density. - - For a Hartree-Fock calculation: extra_e_contrib_density = 0 - - For a Kohn-Sham or Range-separated Kohn-Sham: the exchange/correlation - trace of the V_xc potential - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`scf_energy` - - -.. c:var:: fock_matrix_ao_alpha - - - File : :file:`hartree_fock/fock_matrix_hf.irp.f` - - .. code:: fortran - - double precision, allocatable :: fock_matrix_ao_alpha (ao_num,ao_num) - double precision, allocatable :: fock_matrix_ao_beta (ao_num,ao_num) - - - Alpha Fock matrix in AO basis set - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`ao_one_e_integrals` - * :c:data:`ao_two_e_integral_alpha` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`fock_matrix_ao` - * :c:data:`fock_matrix_mo_alpha` - * :c:data:`fock_matrix_mo_beta` - * :c:data:`scf_energy` - - -.. c:var:: fock_matrix_ao_beta - - - File : :file:`hartree_fock/fock_matrix_hf.irp.f` - - .. code:: fortran - - double precision, allocatable :: fock_matrix_ao_alpha (ao_num,ao_num) - double precision, allocatable :: fock_matrix_ao_beta (ao_num,ao_num) - - - Alpha Fock matrix in AO basis set - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`ao_one_e_integrals` - * :c:data:`ao_two_e_integral_alpha` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`fock_matrix_ao` - * :c:data:`fock_matrix_mo_alpha` - * :c:data:`fock_matrix_mo_beta` - * :c:data:`scf_energy` - - -.. c:var:: hf_energy - - - File : :file:`hartree_fock/hf_energy.irp.f` - - .. code:: fortran - - double precision :: hf_energy - double precision :: hf_two_electron_energy - double precision :: hf_one_electron_energy - - - Hartree-Fock energy containing the nuclear repulsion, and its one- and two-body components. - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`ao_one_e_integrals` - * :c:data:`ao_two_e_integral_alpha` - * :c:data:`nuclear_repulsion` - * :c:data:`scf_density_matrix_ao_alpha` - * :c:data:`scf_density_matrix_ao_beta` - - - -.. c:var:: hf_one_electron_energy - - - File : :file:`hartree_fock/hf_energy.irp.f` - - .. code:: fortran - - double precision :: hf_energy - double precision :: hf_two_electron_energy - double precision :: hf_one_electron_energy - - - Hartree-Fock energy containing the nuclear repulsion, and its one- and two-body components. - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`ao_one_e_integrals` - * :c:data:`ao_two_e_integral_alpha` - * :c:data:`nuclear_repulsion` - * :c:data:`scf_density_matrix_ao_alpha` - * :c:data:`scf_density_matrix_ao_beta` - - - -.. c:var:: hf_two_electron_energy - - - File : :file:`hartree_fock/hf_energy.irp.f` - - .. code:: fortran - - double precision :: hf_energy - double precision :: hf_two_electron_energy - double precision :: hf_one_electron_energy - - - Hartree-Fock energy containing the nuclear repulsion, and its one- and two-body components. - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`ao_one_e_integrals` - * :c:data:`ao_two_e_integral_alpha` - * :c:data:`nuclear_repulsion` - * :c:data:`scf_density_matrix_ao_alpha` - * :c:data:`scf_density_matrix_ao_beta` - - - - -Subroutines / functions ------------------------ - -.. c:function:: create_guess: - - - File : :file:`hartree_fock/scf.irp.f` - - .. code:: fortran - - subroutine create_guess - - - Create a MO guess if no MOs are present in the EZFIO directory - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ezfio_filename` - * :c:data:`mo_coef` - * :c:data:`mo_guess_type` - * :c:data:`mo_one_e_integrals` - * :c:data:`ao_ortho_lowdin_coef` - * :c:data:`mo_label` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`scf` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`ezfio_has_mo_basis_mo_coef` - * :c:func:`huckel_guess` - * :c:func:`mo_as_eigvectors_of_mo_matrix` - - Touches: - - .. hlist:: - :columns: 3 - - * :c:data:`fock_matrix_ao_alpha` - * :c:data:`fock_matrix_ao_alpha` - * :c:data:`mo_coef` - * :c:data:`mo_label` - - -.. c:function:: run: - - - File : :file:`hartree_fock/scf.irp.f` - - .. code:: fortran - - subroutine run - - - Run SCF calculation - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`scf_energy` - * :c:data:`mo_label` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`pt2` - * :c:func:`scf` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`ezfio_set_hartree_fock_energy` - * :c:func:`roothaan_hall_scf` - - Touches: - - .. hlist:: - :columns: 3 - - * :c:data:`fock_matrix_ao_alpha` - * :c:data:`fock_matrix_ao_alpha` - * :c:data:`mo_coef` - * :c:data:`level_shift` - * :c:data:`mo_coef` - diff --git a/docs/source/modules/iterations.rst b/docs/source/modules/iterations.rst deleted file mode 100644 index d8358b27..00000000 --- a/docs/source/modules/iterations.rst +++ /dev/null @@ -1,204 +0,0 @@ -.. _module_iterations: - -.. program:: iterations - -.. default-role:: option - -========== -iterations -========== - -Module which saves the computed energies for an extrapolation to -the |FCI| limit. - - - -EZFIO parameters ----------------- - -.. option:: n_iter - - Number of saved iterations - - Default: 1 - -.. option:: n_det_iterations - - Number of determinants at each iteration - - -.. option:: energy_iterations - - The variational energy at each iteration - - -.. option:: pt2_iterations - - The |PT2| correction at each iteration - - - -Providers ---------- - -.. c:var:: extrapolated_energy - - - File : :file:`iterations/iterations.irp.f` - - .. code:: fortran - - double precision, allocatable :: extrapolated_energy (N_iter,N_states) - - - Extrapolated energy, using E_var = f(PT2) where PT2=0 - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`energy_iterations` - * :c:data:`n_det` - * :c:data:`n_iter` - * :c:data:`n_states` - * :c:data:`pt2_iterations` - - - -.. c:var:: n_iter - - - File : :file:`iterations/io.irp.f` - - .. code:: fortran - - integer :: n_iter - - - number of iterations - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ezfio_filename` - * :c:data:`mpi_master` - * :c:data:`n_states` - * :c:data:`output_wall_time_0` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`extrapolated_energy` - - - -Subroutines / functions ------------------------ - -.. c:function:: print_extrapolated_energy: - - - File : :file:`iterations/print_extrapolation.irp.f` - - .. code:: fortran - - subroutine print_extrapolated_energy - - - Print the extrapolated energy in the output - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`extrapolated_energy` - * :c:data:`n_states` - * :c:data:`n_det` - * :c:data:`pt2_iterations` - * :c:data:`n_iter` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`run_cipsi` - * :c:func:`run_stochastic_cipsi` - - -.. c:function:: print_summary: - - - File : :file:`iterations/print_summary.irp.f` - - .. code:: fortran - - subroutine print_summary(e_,pt2_,error_,variance_,norm_,n_det_,n_occ_pattern_,n_st,s2_) - - - Print the extrapolated energy in the output - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`do_pt2` - * :c:data:`s2_eig` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`run_cipsi` - * :c:func:`run_stochastic_cipsi` - - -.. c:function:: save_iterations: - - - File : :file:`iterations/iterations.irp.f` - - .. code:: fortran - - subroutine save_iterations(e_, pt2_,n_) - - - Update the energy in the EZFIO file. - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`n_iter` - * :c:data:`energy_iterations` - * :c:data:`n_states` - * :c:data:`pt2_iterations` - * :c:data:`n_det_iterations` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`run_cipsi` - * :c:func:`run_stochastic_cipsi` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`ezfio_set_iterations_energy_iterations` - * :c:func:`ezfio_set_iterations_n_det_iterations` - * :c:func:`ezfio_set_iterations_n_iter` - * :c:func:`ezfio_set_iterations_pt2_iterations` - diff --git a/docs/source/modules/kohn_sham.rst b/docs/source/modules/kohn_sham.rst deleted file mode 100644 index 955a25b7..00000000 --- a/docs/source/modules/kohn_sham.rst +++ /dev/null @@ -1,101 +0,0 @@ -.. _module_kohn_sham: - -.. program:: kohn_sham - -.. default-role:: option - -========= -kohn_sham -========= - - -The Kohn-Sham module performs *Restricted* Kohn-Sham calculations (the -spatial part of the |MOs| is common for alpha and beta spinorbitals). - -The Kohn-Sham in an SCF and therefore is based on the ``scf_utils`` structure. -It performs the following actions: - -#. Compute/Read all the one- and two-electron integrals, and store them in memory -#. Check in the |EZFIO| database if there is a set of |MOs|. If there is, it - will read them as initial guess. Otherwise, it will create a guess. -#. Perform the |SCF| iterations - -The definition of the Fock matrix is in :file:`kohn_sham fock_matrix_ks.irp.f` -For the keywords related to the |SCF| procedure, see the ``scf_utils`` directory where you will find all options. -The main are: - -#. :option:`scf_utils thresh_scf` -#. :option:`scf_utils level_shift` - -At each iteration, the |MOs| are saved in the |EZFIO| database. Hence, if the calculation -crashes for any unexpected reason, the calculation can be restarted by running again -the |SCF| with the same |EZFIO| database. - -The `DIIS`_ algorithm is implemented, as well as the `level-shifting`_ method. -If the |SCF| does not converge, try again with a higher value of :option:`level_shift`. - -To start a calculation from scratch, the simplest way is to remove the -``mo_basis`` directory from the |EZFIO| database, and run the |SCF| again. - - - - -.. _DIIS: https://en.wikipedia.org/w/index.php?title=DIIS -.. _level-shifting: https://doi.org/10.1002/qua.560070407 - - - - - - -Programs --------- - - * :ref:`ks_scf` - -Providers ---------- - -.. c:var:: ks_energy - - - File : :file:`ks_enery.irp.f` - - .. code:: fortran - - double precision :: ks_energy - double precision :: two_e_energy - double precision :: one_e_energy - double precision :: fock_matrix_energy - double precision :: trace_potential_xc - - - Kohn-Sham energy containing the nuclear repulsion energy, and the various components of this quantity. - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`ao_one_e_integrals` - * :c:data:`ao_potential_alpha_xc` - * :c:data:`ao_two_e_integral_alpha` - * :c:data:`e_correlation_dft` - * :c:data:`e_exchange_dft` - * :c:data:`fock_matrix_ao_alpha` - * :c:data:`nuclear_repulsion` - * :c:data:`scf_density_matrix_ao_alpha` - * :c:data:`scf_density_matrix_ao_beta` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`extra_e_contrib_density` - - - -Subroutines / functions ------------------------ diff --git a/docs/source/modules/kohn_sham_rs.rst b/docs/source/modules/kohn_sham_rs.rst deleted file mode 100644 index 02322304..00000000 --- a/docs/source/modules/kohn_sham_rs.rst +++ /dev/null @@ -1,468 +0,0 @@ -.. _module_kohn_sham_rs: - -.. program:: kohn_sham_rs - -.. default-role:: option - -============ -kohn_sham_rs -============ - - -The Range-separated Kohn-Sham module performs *Restricted* Kohn-Sham calculations (the -spatial part of the |MOs| is common for alpha and beta spinorbitals) where the coulomb interaction is partially treated using exact exchange. -The splitting of the interaction between long- and short-range is determined by the range-separation parameter :option:`ao_two_e_erf_ints mu_erf`. The long-range part of the interaction is explicitly treated with exact exchange, and the short-range part of the interaction is treated with appropriate DFT functionals. - -The Range-separated Kohn-Sham in an SCF and therefore is based on the ``scf_utils`` structure. -It performs the following actions: - -#. Compute/Read all the one- and two-electron integrals, and store them in memory -#. Check in the |EZFIO| database if there is a set of |MOs|. If there is, it - will read them as initial guess. Otherwise, it will create a guess. -#. Perform the |SCF| iterations - -The definition of the Fock matrix is in :file:`kohn_sham_rs fock_matrix_rs_ks.irp.f` -For the keywords related to the |SCF| procedure, see the ``scf_utils`` directory where you will find all options. -The main are: -# :option:`scf_utils thresh_scf` -# :option:`scf_utils level_shift` - - -At each iteration, the |MOs| are saved in the |EZFIO| database. Hence, if the calculation -crashes for any unexpected reason, the calculation can be restarted by running again -the |SCF| with the same |EZFIO| database. - -The `DIIS`_ algorithm is implemented, as well as the `level-shifting`_ method. -If the |SCF| does not converge, try again with a higher value of :option:`level_shift`. - -To start a calculation from scratch, the simplest way is to remove the -``mo_basis`` directory from the |EZFIO| database, and run the |SCF| again. - - -.. _DIIS: https://en.wikipedia.org/w/index.php?title=DIIS -.. _level-shifting: https://doi.org/10.1002/qua.560070407 - - - - - - -EZFIO parameters ----------------- - -.. option:: energy - - Energy range separated hybrid - - - -Programs --------- - - * :ref:`rs_ks_scf` - -Providers ---------- - -.. c:var:: ao_potential_alpha_xc - - - File : :file:`pot_functionals.irp.f` - - .. code:: fortran - - double precision, allocatable :: ao_potential_alpha_xc (ao_num,ao_num) - double precision, allocatable :: ao_potential_beta_xc (ao_num,ao_num) - - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`potential_x_alpha_ao` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`fock_matrix_ao_alpha` - * :c:data:`rs_ks_energy` - - -.. c:var:: ao_potential_beta_xc - - - File : :file:`pot_functionals.irp.f` - - .. code:: fortran - - double precision, allocatable :: ao_potential_alpha_xc (ao_num,ao_num) - double precision, allocatable :: ao_potential_beta_xc (ao_num,ao_num) - - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`potential_x_alpha_ao` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`fock_matrix_ao_alpha` - * :c:data:`rs_ks_energy` - - -.. c:var:: e_correlation_dft - - - File : :file:`pot_functionals.irp.f` - - .. code:: fortran - - double precision :: e_correlation_dft - - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`energy_x` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`extra_e_contrib_density` - * :c:data:`rs_ks_energy` - - -.. c:var:: e_exchange_dft - - - File : :file:`pot_functionals.irp.f` - - .. code:: fortran - - double precision :: e_exchange_dft - - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`energy_x` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`extra_e_contrib_density` - * :c:data:`rs_ks_energy` - - -.. c:var:: fock_matrix_alpha_no_xc_ao - - - File : :file:`fock_matrix_rs_ks.irp.f` - - .. code:: fortran - - double precision, allocatable :: fock_matrix_alpha_no_xc_ao (ao_num,ao_num) - double precision, allocatable :: fock_matrix_beta_no_xc_ao (ao_num,ao_num) - - - Mono electronic an Coulomb matrix in AO basis set - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`ao_one_e_integrals` - * :c:data:`ao_two_e_integral_alpha` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`fock_matrix_ao_alpha` - - -.. c:var:: fock_matrix_beta_no_xc_ao - - - File : :file:`fock_matrix_rs_ks.irp.f` - - .. code:: fortran - - double precision, allocatable :: fock_matrix_alpha_no_xc_ao (ao_num,ao_num) - double precision, allocatable :: fock_matrix_beta_no_xc_ao (ao_num,ao_num) - - - Mono electronic an Coulomb matrix in AO basis set - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`ao_one_e_integrals` - * :c:data:`ao_two_e_integral_alpha` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`fock_matrix_ao_alpha` - - -.. c:var:: fock_matrix_energy - - - File : :file:`rs_ks_energy.irp.f` - - .. code:: fortran - - double precision :: rs_ks_energy - double precision :: two_e_energy - double precision :: one_e_energy - double precision :: fock_matrix_energy - double precision :: trace_potential_xc - - - Range-separated Kohn-Sham energy containing the nuclear repulsion energy, and the various components of this quantity. - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`ao_one_e_integrals` - * :c:data:`ao_potential_alpha_xc` - * :c:data:`ao_two_e_integral_alpha` - * :c:data:`e_correlation_dft` - * :c:data:`e_exchange_dft` - * :c:data:`fock_matrix_ao_alpha` - * :c:data:`nuclear_repulsion` - * :c:data:`scf_density_matrix_ao_alpha` - * :c:data:`scf_density_matrix_ao_beta` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`extra_e_contrib_density` - - -.. c:var:: one_e_energy - - - File : :file:`rs_ks_energy.irp.f` - - .. code:: fortran - - double precision :: rs_ks_energy - double precision :: two_e_energy - double precision :: one_e_energy - double precision :: fock_matrix_energy - double precision :: trace_potential_xc - - - Range-separated Kohn-Sham energy containing the nuclear repulsion energy, and the various components of this quantity. - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`ao_one_e_integrals` - * :c:data:`ao_potential_alpha_xc` - * :c:data:`ao_two_e_integral_alpha` - * :c:data:`e_correlation_dft` - * :c:data:`e_exchange_dft` - * :c:data:`fock_matrix_ao_alpha` - * :c:data:`nuclear_repulsion` - * :c:data:`scf_density_matrix_ao_alpha` - * :c:data:`scf_density_matrix_ao_beta` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`extra_e_contrib_density` - - -.. c:var:: rs_ks_energy - - - File : :file:`rs_ks_energy.irp.f` - - .. code:: fortran - - double precision :: rs_ks_energy - double precision :: two_e_energy - double precision :: one_e_energy - double precision :: fock_matrix_energy - double precision :: trace_potential_xc - - - Range-separated Kohn-Sham energy containing the nuclear repulsion energy, and the various components of this quantity. - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`ao_one_e_integrals` - * :c:data:`ao_potential_alpha_xc` - * :c:data:`ao_two_e_integral_alpha` - * :c:data:`e_correlation_dft` - * :c:data:`e_exchange_dft` - * :c:data:`fock_matrix_ao_alpha` - * :c:data:`nuclear_repulsion` - * :c:data:`scf_density_matrix_ao_alpha` - * :c:data:`scf_density_matrix_ao_beta` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`extra_e_contrib_density` - - -.. c:var:: trace_potential_xc - - - File : :file:`rs_ks_energy.irp.f` - - .. code:: fortran - - double precision :: rs_ks_energy - double precision :: two_e_energy - double precision :: one_e_energy - double precision :: fock_matrix_energy - double precision :: trace_potential_xc - - - Range-separated Kohn-Sham energy containing the nuclear repulsion energy, and the various components of this quantity. - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`ao_one_e_integrals` - * :c:data:`ao_potential_alpha_xc` - * :c:data:`ao_two_e_integral_alpha` - * :c:data:`e_correlation_dft` - * :c:data:`e_exchange_dft` - * :c:data:`fock_matrix_ao_alpha` - * :c:data:`nuclear_repulsion` - * :c:data:`scf_density_matrix_ao_alpha` - * :c:data:`scf_density_matrix_ao_beta` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`extra_e_contrib_density` - - -.. c:var:: two_e_energy - - - File : :file:`rs_ks_energy.irp.f` - - .. code:: fortran - - double precision :: rs_ks_energy - double precision :: two_e_energy - double precision :: one_e_energy - double precision :: fock_matrix_energy - double precision :: trace_potential_xc - - - Range-separated Kohn-Sham energy containing the nuclear repulsion energy, and the various components of this quantity. - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`ao_one_e_integrals` - * :c:data:`ao_potential_alpha_xc` - * :c:data:`ao_two_e_integral_alpha` - * :c:data:`e_correlation_dft` - * :c:data:`e_exchange_dft` - * :c:data:`fock_matrix_ao_alpha` - * :c:data:`nuclear_repulsion` - * :c:data:`scf_density_matrix_ao_alpha` - * :c:data:`scf_density_matrix_ao_beta` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`extra_e_contrib_density` - - - -Subroutines / functions ------------------------ - -.. c:function:: check_coherence_functional: - - - File : :file:`rs_ks_scf.irp.f` - - .. code:: fortran - - subroutine check_coherence_functional - - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`exchange_functional` - * :c:data:`correlation_functional` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`rs_ks_scf` - diff --git a/docs/source/modules/mo_basis.rst b/docs/source/modules/mo_basis.rst deleted file mode 100644 index 2038ca3a..00000000 --- a/docs/source/modules/mo_basis.rst +++ /dev/null @@ -1,815 +0,0 @@ -.. _module_mo_basis: - -.. program:: mo_basis - -.. default-role:: option - -======== -mo_basis -======== - -Molecular orbitals are expressed as - -.. math:: - - \phi_k({\bf r}) = \sum_i C_{ik} \chi_k({\bf r}) - - -where :math:`\chi_k` are *normalized* atomic basis functions. - -The current set of |MOs| has a label `mo_label`. -When the orbitals are modified, the label should also be updated to keep -everything consistent. - -When saving the |MOs|, the :file:`mo_basis` directory of the |EZFIO| database -is copied in the :file:`save` directory, named by the current `mo_label`. All -this is done with the script named :file:`save_current_mos.sh` in the -:file:`$QP_ROOT/scripts` directory. - - - - - - -EZFIO parameters ----------------- - -.. option:: mo_num - - Total number of |MOs| - - -.. option:: mo_coef - - Coefficient of the i-th |AO| on the j-th |MO| - - -.. option:: mo_label - - Label characterizing the MOS (Local, Canonical, Natural, *etc*) - - -.. option:: mo_occ - - |MO| occupation numbers - - -.. option:: mo_class - - [ Core | Inactive | Active | Virtual | Deleted ], as defined by :ref:`qp_set_mo_class` - - -.. option:: ao_md5 - - MD5 checksum characterizing the |AO| basis set. - - - -Providers ---------- - -.. c:var:: mo_coef - - - File : :file:`mo_basis/mos.irp.f` - - .. code:: fortran - - double precision, allocatable :: mo_coef (ao_num,mo_num) - - - Molecular orbital coefficients on |AO| basis set - - mo_coef(i,j) = coefficient of the i-th |AO| on the jth mo - - mo_label : Label characterizing the MOS (local, canonical, natural, etc) - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`ao_ortho_canonical_coef` - * :c:data:`ezfio_filename` - * :c:data:`mo_num` - * :c:data:`mpi_master` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`eigenvectors_fock_matrix_mo` - * :c:data:`fock_matrix_mo_alpha` - * :c:data:`fock_matrix_mo_beta` - * :c:data:`fps_spf_matrix_mo` - * :c:data:`mo_coef_in_ao_ortho_basis` - * :c:data:`mo_coef_transp` - * :c:data:`mo_dipole_x` - * :c:data:`mo_integrals_n_e` - * :c:data:`mo_integrals_n_e_per_atom` - * :c:data:`mo_kinetic_integrals` - * :c:data:`mo_overlap` - * :c:data:`mo_pseudo_integrals` - * :c:data:`mo_spread_x` - * :c:data:`mo_two_e_int_erf_jj_from_ao` - * :c:data:`mo_two_e_integral_jj_from_ao` - * :c:data:`mo_two_e_integrals_erf_in_map` - * :c:data:`mo_two_e_integrals_in_map` - * :c:data:`mo_two_e_integrals_vv_from_ao` - * :c:data:`one_e_dm_ao_alpha` - * :c:data:`one_e_spin_density_ao` - * :c:data:`psi_det` - * :c:data:`s_mo_coef` - * :c:data:`scf_density_matrix_ao_alpha` - * :c:data:`scf_density_matrix_ao_beta` - - -.. c:var:: mo_coef_begin_iteration - - - File : :file:`mo_basis/track_orb.irp.f` - - .. code:: fortran - - double precision, allocatable :: mo_coef_begin_iteration (ao_num,mo_num) - - - Void provider to store the coefficients of the |MO| basis at the beginning of the SCF iteration - - Usefull to track some orbitals - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`mo_num` - - - -.. c:var:: mo_coef_in_ao_ortho_basis - - - File : :file:`mo_basis/mos.irp.f` - - .. code:: fortran - - double precision, allocatable :: mo_coef_in_ao_ortho_basis (ao_num,mo_num) - - - |MO| coefficients in orthogonalized |AO| basis - - :math:`C^{-1}.C_{mo}` - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`ao_ortho_canonical_coef_inv` - * :c:data:`mo_coef` - * :c:data:`mo_num` - - - -.. c:var:: mo_coef_transp - - - File : :file:`mo_basis/mos.irp.f` - - .. code:: fortran - - double precision, allocatable :: mo_coef_transp (mo_num,ao_num) - - - |MO| coefficients on |AO| basis set - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`mo_coef` - * :c:data:`mo_num` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`mo_two_e_int_erf_jj_from_ao` - * :c:data:`mo_two_e_integral_jj_from_ao` - * :c:data:`mo_two_e_integrals_erf_in_map` - * :c:data:`mo_two_e_integrals_in_map` - * :c:data:`mo_two_e_integrals_vv_from_ao` - - -.. c:var:: mo_label - - - File : :file:`mo_basis/mos.irp.f` - - .. code:: fortran - - character*(64) :: mo_label - - - |MO| coefficients on |AO| basis set - - mo_coef(i,j) = coefficient of the i-th |AO| on the j-th |MO| - - mo_label : Label characterizing the |MOs| (local, canonical, natural, etc) - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ezfio_filename` - * :c:data:`mpi_master` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`n_det` - * :c:data:`psi_coef` - * :c:data:`psi_det` - - -.. c:var:: mo_num - - - File : :file:`mo_basis/mos.irp.f` - - .. code:: fortran - - integer :: mo_num - - - Number of MOs - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_ortho_canonical_coef` - * :c:data:`ezfio_filename` - * :c:data:`mpi_master` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_ortho_canonical_nucl_elec_integrals` - * :c:data:`ao_ortho_lowdin_nucl_elec_integrals` - * :c:data:`big_array_coulomb_integrals` - * :c:data:`core_fock_operator` - * :c:data:`core_fock_operator_erf` - * :c:data:`data_one_e_dm_alpha_mo` - * :c:data:`data_one_e_dm_beta_mo` - * :c:data:`eigenvectors_fock_matrix_mo` - * :c:data:`fock_matrix_ao` - * :c:data:`fock_matrix_mo` - * :c:data:`fock_matrix_mo_alpha` - * :c:data:`fock_matrix_mo_beta` - * :c:data:`fock_operator_closed_shell_ref_bitmask` - * :c:data:`fock_wee_closed_shell` - * :c:data:`fps_spf_matrix_mo` - * :c:data:`full_ijkl_bitmask` - * :c:data:`int_erf_3_index` - * :c:data:`list_core_inact_act` - * :c:data:`list_inact` - * :c:data:`mo_class` - * :c:data:`mo_coef` - * :c:data:`mo_coef_begin_iteration` - * :c:data:`mo_coef_in_ao_ortho_basis` - * :c:data:`mo_coef_transp` - * :c:data:`mo_dipole_x` - * :c:data:`mo_integrals_cache_min` - * :c:data:`mo_integrals_erf_cache_min` - * :c:data:`mo_integrals_erf_map` - * :c:data:`mo_integrals_map` - * :c:data:`mo_integrals_n_e` - * :c:data:`mo_integrals_n_e_per_atom` - * :c:data:`mo_kinetic_integrals` - * :c:data:`mo_occ` - * :c:data:`mo_one_e_integrals` - * :c:data:`mo_overlap` - * :c:data:`mo_pseudo_integrals` - * :c:data:`mo_spread_x` - * :c:data:`mo_two_e_int_erf_jj` - * :c:data:`mo_two_e_int_erf_jj_from_ao` - * :c:data:`mo_two_e_integral_jj_from_ao` - * :c:data:`mo_two_e_integrals_erf_in_map` - * :c:data:`mo_two_e_integrals_in_map` - * :c:data:`mo_two_e_integrals_jj` - * :c:data:`mo_two_e_integrals_vv_from_ao` - * :c:data:`n_core_orb` - * :c:data:`n_int` - * :c:data:`one_e_dm_ao_alpha` - * :c:data:`one_e_dm_dagger_mo_spin_index` - * :c:data:`one_e_dm_mo` - * :c:data:`one_e_dm_mo_alpha` - * :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:`one_e_spin_density_ao` - * :c:data:`one_e_spin_density_mo` - * :c:data:`psi_energy_h_core` - * :c:data:`s_mo_coef` - * :c:data:`singles_alpha_csc_idx` - * :c:data:`singles_beta_csc_idx` - - -.. c:var:: mo_occ - - - File : :file:`mo_basis/mos.irp.f` - - .. code:: fortran - - double precision, allocatable :: mo_occ (mo_num) - - - |MO| occupation numbers - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`elec_alpha_num` - * :c:data:`elec_beta_num` - * :c:data:`ezfio_filename` - * :c:data:`mo_num` - * :c:data:`mpi_master` - - - - -Subroutines / functions ------------------------ - -.. c:function:: ao_ortho_cano_to_ao: - - - File : :file:`mo_basis/mos.irp.f` - - .. code:: fortran - - subroutine ao_ortho_cano_to_ao(A_ao,LDA_ao,A,LDA) - - - Transform A from the |AO| basis to the orthogonal |AO| basis - - $C^{-1}.A_{ao}.C^{\dagger-1}$ - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`ao_ortho_canonical_coef_inv` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`dgemm` - - -.. c:function:: ao_to_mo: - - - File : :file:`mo_basis/mos.irp.f` - - .. code:: fortran - - subroutine ao_to_mo(A_ao,LDA_ao,A_mo,LDA_mo) - - - Transform A from the |AO| basis to the |MO| basis - - $C^\dagger.A_{ao}.C$ - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`mo_num` - * :c:data:`mo_coef` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:data:`fock_matrix_mo_alpha` - * :c:data:`fock_matrix_mo_beta` - * :c:data:`fps_spf_matrix_mo` - * :c:data:`mo_dipole_x` - * :c:data:`mo_integrals_n_e` - * :c:data:`mo_integrals_n_e_per_atom` - * :c:data:`mo_kinetic_integrals` - * :c:data:`mo_pseudo_integrals` - * :c:data:`mo_spread_x` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`dgemm` - - -.. c:function:: give_all_mos_and_grad_and_lapl_at_r: - - - File : :file:`mo_basis/mos_in_r.irp.f` - - .. code:: fortran - - subroutine give_all_mos_and_grad_and_lapl_at_r(r,mos_array,mos_grad_array,mos_lapl_array) - - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`mo_num` - * :c:data:`mo_coef` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`give_all_aos_and_grad_and_lapl_at_r` - - -.. c:function:: give_all_mos_and_grad_at_r: - - - File : :file:`mo_basis/mos_in_r.irp.f` - - .. code:: fortran - - subroutine give_all_mos_and_grad_at_r(r,mos_array,mos_grad_array) - - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`mo_num` - * :c:data:`mo_coef` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`give_all_aos_and_grad_at_r` - - -.. c:function:: give_all_mos_at_r: - - - File : :file:`mo_basis/mos_in_r.irp.f` - - .. code:: fortran - - subroutine give_all_mos_at_r(r,mos_array) - - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`mo_num` - * :c:data:`mo_coef_transp` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`dgemv` - * :c:func:`give_all_aos_at_r` - - -.. c:function:: initialize_mo_coef_begin_iteration: - - - File : :file:`mo_basis/track_orb.irp.f` - - .. code:: fortran - - subroutine initialize_mo_coef_begin_iteration - - - - Initialize :c:data:`mo_coef_begin_iteration` to the current :c:data:`mo_coef` - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`mo_coef_begin_iteration` - * :c:data:`mo_coef` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`damping_scf` - * :c:func:`roothaan_hall_scf` - - -.. c:function:: mix_mo_jk: - - - File : :file:`mo_basis/mos.irp.f` - - .. code:: fortran - - subroutine mix_mo_jk(j,k) - - - Rotates the j-th |MO| with the k-th |MO| to give two new |MOs| that are - - * $+ = \frac{1}{\sqrt{2}} (|j\rangle + |k\rangle)$ - - * $- = \frac{1}{\sqrt{2}} (|j\rangle - |k\rangle)$ - - by convention, the '+' |MO| is in the lowest index (min(j,k)) - by convention, the '-' |MO| is in the highest index (max(j,k)) - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`mo_coef` - - -.. c:function:: mo_as_eigvectors_of_mo_matrix: - - - File : :file:`mo_basis/utils.irp.f` - - .. code:: fortran - - subroutine mo_as_eigvectors_of_mo_matrix(matrix,n,m,label,sign,output) - - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`mo_label` - * :c:data:`ao_num` - * :c:data:`mo_num` - * :c:data:`mo_coef` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`create_guess` - * :c:func:`damping_scf` - * :c:func:`hcore_guess` - * :c:func:`roothaan_hall_scf` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`dgemm` - * :c:func:`lapack_diag` - * :c:func:`write_time` - - -.. c:function:: mo_as_svd_vectors_of_mo_matrix: - - - File : :file:`mo_basis/utils.irp.f` - - .. code:: fortran - - subroutine mo_as_svd_vectors_of_mo_matrix(matrix,lda,m,n,label) - - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`mo_label` - * :c:data:`ao_num` - * :c:data:`mo_num` - * :c:data:`mo_coef` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`dgemm` - * :c:func:`svd` - * :c:func:`write_time` - - -.. c:function:: mo_as_svd_vectors_of_mo_matrix_eig: - - - File : :file:`mo_basis/utils.irp.f` - - .. code:: fortran - - subroutine mo_as_svd_vectors_of_mo_matrix_eig(matrix,lda,m,n,eig,label) - - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`mo_label` - * :c:data:`ao_num` - * :c:data:`mo_num` - * :c:data:`mo_coef` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`set_natural_mos` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`dgemm` - * :c:func:`svd` - * :c:func:`write_time` - - -.. c:function:: reorder_core_orb: - - - File : :file:`mo_basis/track_orb.irp.f` - - .. code:: fortran - - subroutine reorder_core_orb - - - routines that takes the current :c:data:`mo_coef` and reorder the core orbitals (see :c:data:`list_core` and :c:data:`n_core_orb`) according to the overlap with :c:data:`mo_coef_begin_iteration` - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`mo_num` - * :c:data:`mo_coef_begin_iteration` - * :c:data:`mo_coef` - * :c:data:`ao_overlap` - * :c:data:`n_core_orb` - * :c:data:`ao_num` - * :c:data:`list_inact` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`damping_scf` - * :c:func:`roothaan_hall_scf` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`dsort` - - -.. c:function:: save_mos: - - - File : :file:`mo_basis/utils.irp.f` - - .. code:: fortran - - subroutine save_mos - - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`mo_occ` - * :c:data:`ao_md5` - * :c:data:`ezfio_filename` - * :c:data:`mo_num` - * :c:data:`mo_coef` - * :c:data:`ao_num` - * :c:data:`mo_label` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`damping_scf` - * :c:func:`hcore_guess` - * :c:func:`huckel_guess` - * :c:func:`roothaan_hall_scf` - * :c:func:`save_natural_mos` - * :c:func:`save_ortho_mos` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`ezfio_set_mo_basis_ao_md5` - * :c:func:`ezfio_set_mo_basis_mo_coef` - * :c:func:`ezfio_set_mo_basis_mo_label` - * :c:func:`ezfio_set_mo_basis_mo_num` - * :c:func:`ezfio_set_mo_basis_mo_occ` - * :c:func:`system` - - -.. c:function:: save_mos_truncated: - - - File : :file:`mo_basis/utils.irp.f` - - .. code:: fortran - - subroutine save_mos_truncated(n) - - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`mo_occ` - * :c:data:`ao_md5` - * :c:data:`ezfio_filename` - * :c:data:`mo_coef` - * :c:data:`ao_num` - * :c:data:`mo_label` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`ezfio_set_mo_basis_ao_md5` - * :c:func:`ezfio_set_mo_basis_mo_coef` - * :c:func:`ezfio_set_mo_basis_mo_label` - * :c:func:`ezfio_set_mo_basis_mo_num` - * :c:func:`ezfio_set_mo_basis_mo_occ` - * :c:func:`system` - diff --git a/docs/source/modules/mo_guess.rst b/docs/source/modules/mo_guess.rst deleted file mode 100644 index 25c9acde..00000000 --- a/docs/source/modules/mo_guess.rst +++ /dev/null @@ -1,160 +0,0 @@ -.. _module_mo_guess: - -.. program:: mo_guess - -.. default-role:: option - -======== -mo_guess -======== - -Guess for |MOs|. - - - - -Providers ---------- - -.. c:var:: ao_ortho_canonical_nucl_elec_integrals - - - File : :file:`mo_guess/pot_mo_ortho_canonical_ints.irp.f` - - .. code:: fortran - - double precision, allocatable :: ao_ortho_canonical_nucl_elec_integrals (mo_num,mo_num) - - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_integrals_n_e` - * :c:data:`ao_num` - * :c:data:`ao_ortho_canonical_coef` - * :c:data:`mo_num` - - - -.. c:var:: ao_ortho_lowdin_coef - - - File : :file:`mo_guess/mo_ortho_lowdin.irp.f` - - .. code:: fortran - - double precision, allocatable :: ao_ortho_lowdin_coef (ao_num,ao_num) - - - matrix of the coefficients of the mos generated by the - orthonormalization by the S^{-1/2} canonical transformation of the aos - ao_ortho_lowdin_coef(i,j) = coefficient of the ith ao on the jth ao_ortho_lowdin orbital - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`ao_overlap` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_ortho_lowdin_nucl_elec_integrals` - * :c:data:`ao_ortho_lowdin_overlap` - - -.. c:var:: ao_ortho_lowdin_nucl_elec_integrals - - - File : :file:`mo_guess/pot_mo_ortho_lowdin_ints.irp.f` - - .. code:: fortran - - double precision, allocatable :: ao_ortho_lowdin_nucl_elec_integrals (mo_num,mo_num) - - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_integrals_n_e` - * :c:data:`ao_num` - * :c:data:`ao_ortho_lowdin_coef` - * :c:data:`mo_num` - - - -.. c:var:: ao_ortho_lowdin_overlap - - - File : :file:`mo_guess/mo_ortho_lowdin.irp.f` - - .. code:: fortran - - double precision, allocatable :: ao_ortho_lowdin_overlap (ao_num,ao_num) - - - overlap matrix of the ao_ortho_lowdin - supposed to be the Identity - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`ao_ortho_lowdin_coef` - * :c:data:`ao_overlap` - - - - -Subroutines / functions ------------------------ - -.. c:function:: hcore_guess: - - - File : :file:`mo_guess/h_core_guess_routine.irp.f` - - .. code:: fortran - - subroutine hcore_guess - - - Produce `H_core` MO orbital - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`mo_label` - * :c:data:`mo_one_e_integrals` - * :c:data:`mo_coef` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`mo_as_eigvectors_of_mo_matrix` - * :c:func:`save_mos` - - Touches: - - .. hlist:: - :columns: 3 - - * :c:data:`mo_coef` - * :c:data:`mo_label` - diff --git a/docs/source/modules/mo_one_e_ints.rst b/docs/source/modules/mo_one_e_ints.rst deleted file mode 100644 index c882bb6f..00000000 --- a/docs/source/modules/mo_one_e_ints.rst +++ /dev/null @@ -1,571 +0,0 @@ -.. _module_mo_one_e_ints: - -.. program:: mo_one_e_ints - -.. default-role:: option - -================== -mo_one_e_integrals -================== - -All the one-electron integrals in |MO| basis are defined here. - -The most important providers for usual quantum-chemistry calculation are: - -* `mo_kinetic_integrals` which are the kinetic operator integrals on the |AO| basis (see :file:`kin_mo_ints.irp.f`) -* `mo_integrals_n_e` which are the nuclear-elctron operator integrals on the |AO| basis (see :file:`pot_mo_ints.irp.f`) -* `mo_one_e_integrals` which are the the h_core operator integrals on the |AO| basis (see :file:`mo_mono_ints.irp.f`) - -Note that you can find other interesting integrals related to the position operator in :file:`spread_dipole_mo.irp.f`. - - - -EZFIO parameters ----------------- - -.. option:: mo_integrals_e_n - - Nucleus-electron integrals in |MO| basis set - - -.. option:: io_mo_integrals_e_n - - Read/Write |MO| electron-nucleus attraction integrals from/to disk [ Write | Read | None ] - - Default: None - -.. option:: mo_integrals_kinetic - - Kinetic energy integrals in |MO| basis set - - -.. option:: io_mo_integrals_kinetic - - Read/Write |MO| one-electron kinetic integrals from/to disk [ Write | Read | None ] - - Default: None - -.. option:: mo_integrals_pseudo - - Pseudopotential integrals in |MO| basis set - - -.. option:: io_mo_integrals_pseudo - - Read/Write |MO| pseudopotential integrals from/to disk [ Write | Read | None ] - - Default: None - -.. option:: mo_one_e_integrals - - One-electron integrals in |MO| basis set - - -.. option:: io_mo_one_e_integrals - - Read/Write |MO| one-electron integrals from/to disk [ Write | Read | None ] - - Default: None - - -Providers ---------- - -.. c:var:: mo_dipole_x - - - File : :file:`mo_one_e_ints/spread_dipole_mo.irp.f` - - .. code:: fortran - - double precision, allocatable :: mo_dipole_x (mo_num,mo_num) - double precision, allocatable :: mo_dipole_y (mo_num,mo_num) - double precision, allocatable :: mo_dipole_z (mo_num,mo_num) - - - array of the integrals of MO_i * x MO_j - array of the integrals of MO_i * y MO_j - array of the integrals of MO_i * z MO_j - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_dipole_x` - * :c:data:`ao_num` - * :c:data:`mo_coef` - * :c:data:`mo_num` - - - -.. c:var:: mo_dipole_y - - - File : :file:`mo_one_e_ints/spread_dipole_mo.irp.f` - - .. code:: fortran - - double precision, allocatable :: mo_dipole_x (mo_num,mo_num) - double precision, allocatable :: mo_dipole_y (mo_num,mo_num) - double precision, allocatable :: mo_dipole_z (mo_num,mo_num) - - - array of the integrals of MO_i * x MO_j - array of the integrals of MO_i * y MO_j - array of the integrals of MO_i * z MO_j - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_dipole_x` - * :c:data:`ao_num` - * :c:data:`mo_coef` - * :c:data:`mo_num` - - - -.. c:var:: mo_dipole_z - - - File : :file:`mo_one_e_ints/spread_dipole_mo.irp.f` - - .. code:: fortran - - double precision, allocatable :: mo_dipole_x (mo_num,mo_num) - double precision, allocatable :: mo_dipole_y (mo_num,mo_num) - double precision, allocatable :: mo_dipole_z (mo_num,mo_num) - - - array of the integrals of MO_i * x MO_j - array of the integrals of MO_i * y MO_j - array of the integrals of MO_i * z MO_j - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_dipole_x` - * :c:data:`ao_num` - * :c:data:`mo_coef` - * :c:data:`mo_num` - - - -.. c:var:: mo_integrals_n_e - - - File : :file:`mo_one_e_ints/pot_mo_ints.irp.f` - - .. code:: fortran - - double precision, allocatable :: mo_integrals_n_e (mo_num,mo_num) - - - Nucleus-electron interaction on the |MO| basis - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_integrals_n_e` - * :c:data:`ao_num` - * :c:data:`mo_coef` - * :c:data:`mo_num` - * :c:data:`read_mo_integrals_e_n` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`mo_one_e_integrals` - * :c:data:`ref_bitmask_energy` - - -.. c:var:: mo_integrals_n_e_per_atom - - - File : :file:`mo_one_e_ints/pot_mo_ints.irp.f` - - .. code:: fortran - - double precision, allocatable :: mo_integrals_n_e_per_atom (mo_num,mo_num,nucl_num) - - - mo_integrals_n_e_per_atom(i,j,k) = - :math:`\langle \phi_i| -\frac{1}{|r-R_k|} | \phi_j \rangle` . - where R_k is the coordinate of the k-th nucleus. - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_integrals_n_e_per_atom` - * :c:data:`ao_num` - * :c:data:`mo_coef` - * :c:data:`mo_num` - * :c:data:`nucl_num` - - - -.. c:var:: mo_kinetic_integrals - - - File : :file:`mo_one_e_ints/kin_mo_ints.irp.f` - - .. code:: fortran - - double precision, allocatable :: mo_kinetic_integrals (mo_num,mo_num) - - - Kinetic energy integrals in the MO basis - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_kinetic_integrals` - * :c:data:`ao_num` - * :c:data:`mo_coef` - * :c:data:`mo_num` - * :c:data:`read_mo_integrals_kinetic` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`mo_one_e_integrals` - * :c:data:`ref_bitmask_energy` - - -.. c:var:: mo_one_e_integrals - - - File : :file:`mo_one_e_ints/mo_one_e_ints.irp.f` - - .. code:: fortran - - double precision, allocatable :: mo_one_e_integrals (mo_num,mo_num) - - - array of the mono electronic hamiltonian on the MOs basis : - sum of the kinetic and nuclear electronic potential (and pseudo potential if needed) - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`do_pseudo` - * :c:data:`mo_integrals_n_e` - * :c:data:`mo_kinetic_integrals` - * :c:data:`mo_num` - * :c:data:`mo_pseudo_integrals` - * :c:data:`read_mo_one_e_integrals` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`core_energy` - * :c:data:`core_energy_erf` - * :c:data:`fock_operator_closed_shell_ref_bitmask` - * :c:data:`psi_energy_h_core` - * :c:data:`ref_bitmask_energy` - - -.. c:var:: mo_overlap - - - File : :file:`mo_one_e_ints/mo_overlap.irp.f` - - .. code:: fortran - - double precision, allocatable :: mo_overlap (mo_num,mo_num) - - - Provider to check that the MOs are indeed orthonormal. - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`ao_overlap` - * :c:data:`mo_coef` - * :c:data:`mo_num` - - - -.. c:var:: mo_pseudo_integrals - - - File : :file:`mo_one_e_ints/pot_mo_pseudo_ints.irp.f` - - .. code:: fortran - - double precision, allocatable :: mo_pseudo_integrals (mo_num,mo_num) - - - Pseudopotential integrals in |MO| basis - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`ao_pseudo_integrals` - * :c:data:`do_pseudo` - * :c:data:`mo_coef` - * :c:data:`mo_num` - * :c:data:`read_mo_integrals_pseudo` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`mo_one_e_integrals` - - -.. c:var:: mo_spread_x - - - File : :file:`mo_one_e_ints/spread_dipole_mo.irp.f` - - .. code:: fortran - - double precision, allocatable :: mo_spread_x (mo_num,mo_num) - double precision, allocatable :: mo_spread_y (mo_num,mo_num) - double precision, allocatable :: mo_spread_z (mo_num,mo_num) - - - array of the integrals of MO_i * x^2 MO_j - array of the integrals of MO_i * y^2 MO_j - array of the integrals of MO_i * z^2 MO_j - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`ao_spread_x` - * :c:data:`mo_coef` - * :c:data:`mo_num` - - - -.. c:var:: mo_spread_y - - - File : :file:`mo_one_e_ints/spread_dipole_mo.irp.f` - - .. code:: fortran - - double precision, allocatable :: mo_spread_x (mo_num,mo_num) - double precision, allocatable :: mo_spread_y (mo_num,mo_num) - double precision, allocatable :: mo_spread_z (mo_num,mo_num) - - - array of the integrals of MO_i * x^2 MO_j - array of the integrals of MO_i * y^2 MO_j - array of the integrals of MO_i * z^2 MO_j - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`ao_spread_x` - * :c:data:`mo_coef` - * :c:data:`mo_num` - - - -.. c:var:: mo_spread_z - - - File : :file:`mo_one_e_ints/spread_dipole_mo.irp.f` - - .. code:: fortran - - double precision, allocatable :: mo_spread_x (mo_num,mo_num) - double precision, allocatable :: mo_spread_y (mo_num,mo_num) - double precision, allocatable :: mo_spread_z (mo_num,mo_num) - - - array of the integrals of MO_i * x^2 MO_j - array of the integrals of MO_i * y^2 MO_j - array of the integrals of MO_i * z^2 MO_j - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`ao_spread_x` - * :c:data:`mo_coef` - * :c:data:`mo_num` - - - -.. c:var:: s_mo_coef - - - File : :file:`mo_one_e_ints/ao_to_mo.irp.f` - - .. code:: fortran - - double precision, allocatable :: s_mo_coef (ao_num,mo_num) - - - Product S.C where S is the overlap matrix in the AO basis and C the mo_coef matrix. - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`ao_overlap` - * :c:data:`mo_coef` - * :c:data:`mo_num` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`fock_matrix_ao` - - - -Subroutines / functions ------------------------ - -.. c:function:: mo_to_ao: - - - File : :file:`mo_one_e_ints/ao_to_mo.irp.f` - - .. code:: fortran - - subroutine mo_to_ao(A_mo,LDA_mo,A_ao,LDA_ao) - - - Transform A from the MO basis to the AO basis - - $(S.C).A_{mo}.(S.C)^\dagger$ - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`s_mo_coef` - * :c:data:`mo_num` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:data:`fock_matrix_ao` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`dgemm` - - -.. c:function:: mo_to_ao_no_overlap: - - - File : :file:`mo_one_e_ints/ao_to_mo.irp.f` - - .. code:: fortran - - subroutine mo_to_ao_no_overlap(A_mo,LDA_mo,A_ao,LDA_ao) - - - $C.A_{mo}.C^\dagger$ - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`mo_num` - * :c:data:`mo_coef` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`dgemm` - - -.. c:function:: orthonormalize_mos: - - - File : :file:`mo_one_e_ints/orthonormalize.irp.f` - - .. code:: fortran - - subroutine orthonormalize_mos - - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`mo_label` - * :c:data:`ao_num` - * :c:data:`mo_overlap` - * :c:data:`mo_num` - * :c:data:`mo_coef` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`save_ortho_mos` - * :c:func:`scf` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`ortho_lowdin` - - Touches: - - .. hlist:: - :columns: 3 - - * :c:data:`mo_coef` - * :c:data:`mo_label` - diff --git a/docs/source/modules/mo_two_e_erf_ints.rst b/docs/source/modules/mo_two_e_erf_ints.rst deleted file mode 100644 index 7e85039b..00000000 --- a/docs/source/modules/mo_two_e_erf_ints.rst +++ /dev/null @@ -1,1000 +0,0 @@ -.. _module_mo_two_e_erf_ints: - -.. program:: mo_two_e_erf_ints - -.. default-role:: option - -====================== -mo_two_e_erf_ints -====================== - -Here, all two-electron integrals (:math:`erf({\mu}_{erf} * r_{12})/r_{12}`) are computed. -As they have 4 indices and many are zero, they are stored in a map, as defined -in :file:`Utils/map_module.f90`. - -The range separation parameter :math:`{\mu}_{erf}` is the variable :option:`ao_two_e_erf_ints mu_erf`. - -To fetch an |MO| integral, use -`get_mo_two_e_integral_erf(i,j,k,l,mo_integrals_map_erf)` - -The conventions are: - -* For |MO| integrals : = <12|12> - -Be aware that it might not be the same conventions for |MO| and |AO| integrals. - - - - - -EZFIO parameters ----------------- - -.. option:: io_mo_two_e_integrals_erf - - Read/Write MO integrals with the long range interaction from/to disk [ Write | Read | None ] - - Default: None - - -Providers ---------- - -.. c:var:: core_energy_erf - - - File : :file:`mo_two_e_erf_ints/core_quantities_erf.irp.f` - - .. code:: fortran - - double precision :: core_energy_erf - - - energy from the core : contains all core-core contributionswith the erf interaction - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`list_inact` - * :c:data:`mo_one_e_integrals` - * :c:data:`mo_two_e_int_erf_jj` - * :c:data:`n_core_orb` - * :c:data:`nuclear_repulsion` - - - -.. c:var:: core_fock_operator_erf - - - File : :file:`mo_two_e_erf_ints/core_quantities_erf.irp.f` - - .. code:: fortran - - double precision, allocatable :: core_fock_operator_erf (mo_num,mo_num) - - - this is the contribution to the Fock operator from the core electrons with the erf interaction - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`list_inact` - * :c:data:`mo_integrals_erf_cache` - * :c:data:`mo_integrals_erf_cache_min` - * :c:data:`mo_integrals_erf_map` - * :c:data:`mo_num` - * :c:data:`mo_two_e_integrals_erf_in_map` - * :c:data:`n_core_orb` - - - -.. c:function:: insert_into_mo_integrals_erf_map: - - - File : :file:`mo_two_e_erf_ints/map_integrals_erf.irp.f` - - .. code:: fortran - - subroutine insert_into_mo_integrals_erf_map(n_integrals, & - buffer_i, buffer_values, thr) - - - Create new entry into |MO| map, or accumulate in an existing entry - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`mo_integrals_erf_map` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`add_integrals_to_map_erf` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`map_update` - - -.. c:var:: int_erf_3_index - - - File : :file:`mo_two_e_erf_ints/ints_erf_3_index.irp.f` - - .. code:: fortran - - double precision, allocatable :: int_erf_3_index (mo_num,mo_num,mo_num) - double precision, allocatable :: int_erf_3_index_exc (mo_num,mo_num,mo_num) - - - int_erf_3_index(i,j) = = (ii|jj) with the erf interaction - - int_erf_3_index_exc(i,j) = = (ij|ij) with the erf interaction - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`mo_integrals_erf_cache` - * :c:data:`mo_integrals_erf_cache_min` - * :c:data:`mo_integrals_erf_map` - * :c:data:`mo_num` - * :c:data:`mo_two_e_integrals_erf_in_map` - - - -.. c:var:: int_erf_3_index_exc - - - File : :file:`mo_two_e_erf_ints/ints_erf_3_index.irp.f` - - .. code:: fortran - - double precision, allocatable :: int_erf_3_index (mo_num,mo_num,mo_num) - double precision, allocatable :: int_erf_3_index_exc (mo_num,mo_num,mo_num) - - - int_erf_3_index(i,j) = = (ii|jj) with the erf interaction - - int_erf_3_index_exc(i,j) = = (ij|ij) with the erf interaction - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`mo_integrals_erf_cache` - * :c:data:`mo_integrals_erf_cache_min` - * :c:data:`mo_integrals_erf_map` - * :c:data:`mo_num` - * :c:data:`mo_two_e_integrals_erf_in_map` - - - -.. c:var:: mo_integrals_erf_cache - - - File : :file:`mo_two_e_erf_ints/map_integrals_erf.irp.f` - - .. code:: fortran - - double precision, allocatable :: mo_integrals_erf_cache (0:64*64*64*64) - - - Cache of |MO| integrals for fast access - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`mo_integrals_erf_cache_min` - * :c:data:`mo_integrals_erf_map` - * :c:data:`mo_two_e_integrals_erf_in_map` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`core_fock_operator_erf` - * :c:data:`int_erf_3_index` - * :c:data:`mo_two_e_int_erf_jj` - - -.. c:var:: mo_integrals_erf_cache_max - - - File : :file:`mo_two_e_erf_ints/map_integrals_erf.irp.f` - - .. code:: fortran - - integer :: mo_integrals_erf_cache_min - integer :: mo_integrals_erf_cache_max - - - Min and max values of the MOs for which the integrals are in the cache - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`elec_alpha_num` - * :c:data:`mo_num` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`core_fock_operator_erf` - * :c:data:`int_erf_3_index` - * :c:data:`mo_integrals_erf_cache` - * :c:data:`mo_two_e_int_erf_jj` - - -.. c:var:: mo_integrals_erf_cache_min - - - File : :file:`mo_two_e_erf_ints/map_integrals_erf.irp.f` - - .. code:: fortran - - integer :: mo_integrals_erf_cache_min - integer :: mo_integrals_erf_cache_max - - - Min and max values of the MOs for which the integrals are in the cache - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`elec_alpha_num` - * :c:data:`mo_num` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`core_fock_operator_erf` - * :c:data:`int_erf_3_index` - * :c:data:`mo_integrals_erf_cache` - * :c:data:`mo_two_e_int_erf_jj` - - -.. c:var:: mo_integrals_erf_map - - - File : :file:`mo_two_e_erf_ints/map_integrals_erf.irp.f` - - .. code:: fortran - - type(map_type) :: mo_integrals_erf_map - - - |MO| integrals - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`mo_num` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`core_fock_operator_erf` - * :c:data:`int_erf_3_index` - * :c:data:`mo_integrals_erf_cache` - * :c:data:`mo_two_e_int_erf_jj` - * :c:data:`mo_two_e_integrals_erf_in_map` - - -.. c:var:: mo_two_e_int_erf_jj - - - File : :file:`mo_two_e_erf_ints/mo_bi_integrals_erf.irp.f` - - .. code:: fortran - - double precision, allocatable :: mo_two_e_int_erf_jj (mo_num,mo_num) - double precision, allocatable :: mo_two_e_int_erf_jj_exchange (mo_num,mo_num) - double precision, allocatable :: mo_two_e_int_erf_jj_anti (mo_num,mo_num) - - - mo_two_e_integrals_jj(i,j) = J_ij - mo_two_e_integrals_jj_exchange(i,j) = K_ij - mo_two_e_integrals_jj_anti(i,j) = J_ij - K_ij - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`mo_integrals_erf_cache` - * :c:data:`mo_integrals_erf_cache_min` - * :c:data:`mo_integrals_erf_map` - * :c:data:`mo_num` - * :c:data:`mo_two_e_integrals_erf_in_map` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`core_energy_erf` - - -.. c:var:: mo_two_e_int_erf_jj_anti - - - File : :file:`mo_two_e_erf_ints/mo_bi_integrals_erf.irp.f` - - .. code:: fortran - - double precision, allocatable :: mo_two_e_int_erf_jj (mo_num,mo_num) - double precision, allocatable :: mo_two_e_int_erf_jj_exchange (mo_num,mo_num) - double precision, allocatable :: mo_two_e_int_erf_jj_anti (mo_num,mo_num) - - - mo_two_e_integrals_jj(i,j) = J_ij - mo_two_e_integrals_jj_exchange(i,j) = K_ij - mo_two_e_integrals_jj_anti(i,j) = J_ij - K_ij - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`mo_integrals_erf_cache` - * :c:data:`mo_integrals_erf_cache_min` - * :c:data:`mo_integrals_erf_map` - * :c:data:`mo_num` - * :c:data:`mo_two_e_integrals_erf_in_map` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`core_energy_erf` - - -.. c:var:: mo_two_e_int_erf_jj_anti_from_ao - - - File : :file:`mo_two_e_erf_ints/mo_bi_integrals_erf.irp.f` - - .. code:: fortran - - double precision, allocatable :: mo_two_e_int_erf_jj_from_ao (mo_num,mo_num) - double precision, allocatable :: mo_two_e_int_erf_jj_exchange_from_ao (mo_num,mo_num) - double precision, allocatable :: mo_two_e_int_erf_jj_anti_from_ao (mo_num,mo_num) - - - mo_two_e_integral_jj_from_ao(i,j) = J_ij - mo_two_e_integrals_jj_exchange_from_ao(i,j) = J_ij - mo_two_e_integrals_jj_anti_from_ao(i,j) = J_ij - K_ij - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_integrals_erf_map` - * :c:data:`ao_integrals_threshold` - * :c:data:`ao_num` - * :c:data:`ao_overlap_abs` - * :c:data:`ao_two_e_integral_erf_schwartz` - * :c:data:`ao_two_e_integrals_erf_in_map` - * :c:data:`do_direct_integrals` - * :c:data:`mo_coef` - * :c:data:`mo_coef_transp` - * :c:data:`mo_num` - - - -.. c:var:: mo_two_e_int_erf_jj_exchange - - - File : :file:`mo_two_e_erf_ints/mo_bi_integrals_erf.irp.f` - - .. code:: fortran - - double precision, allocatable :: mo_two_e_int_erf_jj (mo_num,mo_num) - double precision, allocatable :: mo_two_e_int_erf_jj_exchange (mo_num,mo_num) - double precision, allocatable :: mo_two_e_int_erf_jj_anti (mo_num,mo_num) - - - mo_two_e_integrals_jj(i,j) = J_ij - mo_two_e_integrals_jj_exchange(i,j) = K_ij - mo_two_e_integrals_jj_anti(i,j) = J_ij - K_ij - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`mo_integrals_erf_cache` - * :c:data:`mo_integrals_erf_cache_min` - * :c:data:`mo_integrals_erf_map` - * :c:data:`mo_num` - * :c:data:`mo_two_e_integrals_erf_in_map` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`core_energy_erf` - - -.. c:var:: mo_two_e_int_erf_jj_exchange_from_ao - - - File : :file:`mo_two_e_erf_ints/mo_bi_integrals_erf.irp.f` - - .. code:: fortran - - double precision, allocatable :: mo_two_e_int_erf_jj_from_ao (mo_num,mo_num) - double precision, allocatable :: mo_two_e_int_erf_jj_exchange_from_ao (mo_num,mo_num) - double precision, allocatable :: mo_two_e_int_erf_jj_anti_from_ao (mo_num,mo_num) - - - mo_two_e_integral_jj_from_ao(i,j) = J_ij - mo_two_e_integrals_jj_exchange_from_ao(i,j) = J_ij - mo_two_e_integrals_jj_anti_from_ao(i,j) = J_ij - K_ij - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_integrals_erf_map` - * :c:data:`ao_integrals_threshold` - * :c:data:`ao_num` - * :c:data:`ao_overlap_abs` - * :c:data:`ao_two_e_integral_erf_schwartz` - * :c:data:`ao_two_e_integrals_erf_in_map` - * :c:data:`do_direct_integrals` - * :c:data:`mo_coef` - * :c:data:`mo_coef_transp` - * :c:data:`mo_num` - - - -.. c:var:: mo_two_e_int_erf_jj_from_ao - - - File : :file:`mo_two_e_erf_ints/mo_bi_integrals_erf.irp.f` - - .. code:: fortran - - double precision, allocatable :: mo_two_e_int_erf_jj_from_ao (mo_num,mo_num) - double precision, allocatable :: mo_two_e_int_erf_jj_exchange_from_ao (mo_num,mo_num) - double precision, allocatable :: mo_two_e_int_erf_jj_anti_from_ao (mo_num,mo_num) - - - mo_two_e_integral_jj_from_ao(i,j) = J_ij - mo_two_e_integrals_jj_exchange_from_ao(i,j) = J_ij - mo_two_e_integrals_jj_anti_from_ao(i,j) = J_ij - K_ij - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_integrals_erf_map` - * :c:data:`ao_integrals_threshold` - * :c:data:`ao_num` - * :c:data:`ao_overlap_abs` - * :c:data:`ao_two_e_integral_erf_schwartz` - * :c:data:`ao_two_e_integrals_erf_in_map` - * :c:data:`do_direct_integrals` - * :c:data:`mo_coef` - * :c:data:`mo_coef_transp` - * :c:data:`mo_num` - - - -.. c:var:: mo_two_e_integrals_erf_in_map - - - File : :file:`mo_two_e_erf_ints/mo_bi_integrals_erf.irp.f` - - .. code:: fortran - - logical :: mo_two_e_integrals_erf_in_map - - - If True, the map of MO two-electron integrals is provided - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`ao_two_e_integrals_erf_in_map` - * :c:data:`ao_two_e_integrals_in_map` - * :c:data:`ezfio_filename` - * :c:data:`full_ijkl_bitmask_4` - * :c:data:`mo_coef` - * :c:data:`mo_coef_transp` - * :c:data:`mo_integrals_erf_map` - * :c:data:`mo_integrals_threshold` - * :c:data:`mo_num` - * :c:data:`n_int` - * :c:data:`read_mo_two_e_integrals_erf` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`core_fock_operator_erf` - * :c:data:`int_erf_3_index` - * :c:data:`mo_integrals_erf_cache` - * :c:data:`mo_two_e_int_erf_jj` - - - -Subroutines / functions ------------------------ - -.. c:function:: add_integrals_to_map_erf: - - - File : :file:`mo_two_e_erf_ints/mo_bi_integrals_erf.irp.f` - - .. code:: fortran - - subroutine add_integrals_to_map_erf(mask_ijkl) - - - Adds integrals to tha MO map according to some bitmask - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`mo_coef` - * :c:data:`mo_integrals_threshold` - * :c:data:`mo_coef_transp` - * :c:data:`ao_num` - * :c:data:`n_int` - * :c:data:`mo_num` - * :c:data:`ao_two_e_integrals_in_map` - * :c:data:`mo_integrals_erf_map` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:data:`mo_two_e_integrals_erf_in_map` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`bitstring_to_list` - * :c:func:`bitstring_to_str` - * :c:func:`cpu_time` - * :c:func:`get_ao_two_e_integrals_erf` - * :c:func:`insert_into_mo_integrals_erf_map` - * :c:func:`map_merge` - * :c:func:`mo_two_e_integrals_index` - * :c:func:`wall_time` - - -.. c:function:: clear_mo_erf_map: - - - File : :file:`mo_two_e_erf_ints/mo_bi_integrals_erf.irp.f` - - .. code:: fortran - - subroutine clear_mo_erf_map - - - Frees the memory of the MO map - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`mo_integrals_erf_map` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`map_deinit` - - -.. c:function:: get_mo_erf_map_size: - - - File : :file:`mo_two_e_erf_ints/map_integrals_erf.irp.f` - - .. code:: fortran - - integer*8 function get_mo_erf_map_size() - - - Returns the number of elements in the |MO| map - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`mo_integrals_erf_map` - - -.. c:function:: get_mo_two_e_integral_erf: - - - File : :file:`mo_two_e_erf_ints/map_integrals_erf.irp.f` - - .. code:: fortran - - double precision function get_mo_two_e_integral_erf(i,j,k,l,map) - - - Returns one integral $\langle ij|kl \rangle$ in the |MO| basis - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`mo_integrals_erf_cache` - * :c:data:`mo_integrals_erf_cache_min` - * :c:data:`mo_two_e_integrals_erf_in_map` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`map_get` - * :c:func:`two_e_integrals_index` - - -.. c:function:: get_mo_two_e_integrals_erf: - - - File : :file:`mo_two_e_erf_ints/map_integrals_erf.irp.f` - - .. code:: fortran - - subroutine get_mo_two_e_integrals_erf(j,k,l,sze,out_val,map) - - - Returns multiple integrals $\langle ij|kl \rangle$ in the |MO| basis, all - i for j,k,l fixed. - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`mo_two_e_integrals_erf_in_map` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`map_get_many` - * :c:func:`two_e_integrals_index` - - -.. c:function:: get_mo_two_e_integrals_erf_coulomb_ii: - - - File : :file:`mo_two_e_erf_ints/map_integrals_erf.irp.f` - - .. code:: fortran - - subroutine get_mo_two_e_integrals_erf_coulomb_ii(k,l,sze,out_val,map) - - - Returns multiple integrals $\langle ki|li \rangle$ - - k(1)i(2) 1/r12 l(1)i(2) :: out_val(i1) - for k,l fixed. - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`mo_two_e_integrals_erf_in_map` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`map_get_many` - * :c:func:`two_e_integrals_index` - - -.. c:function:: get_mo_two_e_integrals_erf_exch_ii: - - - File : :file:`mo_two_e_erf_ints/map_integrals_erf.irp.f` - - .. code:: fortran - - subroutine get_mo_two_e_integrals_erf_exch_ii(k,l,sze,out_val,map) - - - Returns multiple integrals $\langle ki|il \rangle$ - - $\int k(1)i(2) \frac{1}{r_{12}} i(1)l(2)$ :: out_val(i1) - for k,l fixed. - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`mo_two_e_integrals_erf_in_map` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`map_get_many` - * :c:func:`two_e_integrals_index` - - -.. c:function:: get_mo_two_e_integrals_erf_i1j1: - - - File : :file:`mo_two_e_erf_ints/map_integrals_erf.irp.f` - - .. code:: fortran - - subroutine get_mo_two_e_integrals_erf_i1j1(k,l,sze,out_array,map) - - - Returns multiple integrals $\langle ik|jl \rangle$ in the |MO| basis, all - $\int i(1)j(1) \frac{\erf(\mu * r_{12})}{r_{12}} k(2)l(2)$ - i, j for k,l fixed. - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`mo_two_e_integrals_erf_in_map` - * :c:data:`mo_integrals_erf_map` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`i2radix_sort` - * :c:func:`i8radix_sort` - * :c:func:`iradix_sort` - * :c:func:`map_get_many` - * :c:func:`two_e_integrals_index` - - -.. c:function:: get_mo_two_e_integrals_erf_ij: - - - File : :file:`mo_two_e_erf_ints/map_integrals_erf.irp.f` - - .. code:: fortran - - subroutine get_mo_two_e_integrals_erf_ij(k,l,sze,out_array,map) - - - Returns multiple integrals $\langle ij|kl \rangle$ in the |MO| basis, all - $\int i(1)j(2) \frac{1}{r_{12}} k(1)l(2)$ - i, j for k,l fixed. - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`mo_two_e_integrals_erf_in_map` - * :c:data:`mo_integrals_erf_map` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`i2radix_sort` - * :c:func:`i8radix_sort` - * :c:func:`iradix_sort` - * :c:func:`map_get_many` - * :c:func:`two_e_integrals_index` - - -.. c:function:: load_mo_integrals_erf: - - - File : :file:`mo_two_e_erf_ints/map_integrals_erf.irp.f` - - .. code:: fortran - - integer function load_mo_integrals_erf(filename) - - - Read from disk the |MO| erf integrals - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`mo_integrals_erf_map` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`cache_map_reallocate` - * :c:func:`map_deinit` - * :c:func:`map_sort` - - -.. c:function:: mo_two_e_integral_erf: - - - File : :file:`mo_two_e_erf_ints/map_integrals_erf.irp.f` - - .. code:: fortran - - double precision function mo_two_e_integral_erf(i,j,k,l) - - - Returns one integral $\langle ij|kl \rangle$ in the |MO| basis - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`mo_integrals_erf_cache` - * :c:data:`mo_integrals_erf_map` - * :c:data:`mo_two_e_integrals_erf_in_map` - - -.. c:function:: mo_two_e_integrals_erf_index: - - - File : :file:`mo_two_e_erf_ints/mo_bi_integrals_erf.irp.f` - - .. code:: fortran - - subroutine mo_two_e_integrals_erf_index(i,j,k,l,i1) - - - Computes an unique index for i,j,k,l integrals - - -.. c:function:: provide_all_mo_integrals_erf: - - - File : :file:`mo_two_e_erf_ints/mo_bi_integrals_erf.irp.f` - - .. code:: fortran - - subroutine provide_all_mo_integrals_erf - - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`mo_two_e_integrals_erf_in_map` - * :c:data:`mo_two_e_int_erf_jj` - * :c:data:`mo_two_e_int_erf_jj` - * :c:data:`mo_integrals_erf_map` - * :c:data:`mo_two_e_int_erf_jj` - - -.. c:function:: save_erf_two_e_integrals_mo: - - - File : :file:`mo_two_e_erf_ints/routines_save_integrals_erf.irp.f` - - .. code:: fortran - - subroutine save_erf_two_e_integrals_mo - - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`mo_two_e_integrals_erf_in_map` - * :c:data:`ezfio_filename` - * :c:data:`mo_integrals_erf_map` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`routine` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`ezfio_set_mo_two_e_erf_ints_io_mo_two_e_integrals_erf` - * :c:func:`ezfio_set_work_empty` - * :c:func:`map_save_to_disk` - - -.. c:function:: save_erf_two_e_ints_mo_into_ints_mo: - - - File : :file:`mo_two_e_erf_ints/routines_save_integrals_erf.irp.f` - - .. code:: fortran - - subroutine save_erf_two_e_ints_mo_into_ints_mo - - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`mo_two_e_integrals_erf_in_map` - * :c:data:`ezfio_filename` - * :c:data:`mo_integrals_erf_map` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`ezfio_set_mo_two_e_ints_io_mo_two_e_integrals` - * :c:func:`ezfio_set_work_empty` - * :c:func:`map_save_to_disk` - diff --git a/docs/source/modules/mo_two_e_ints.rst b/docs/source/modules/mo_two_e_ints.rst deleted file mode 100644 index bb860e59..00000000 --- a/docs/source/modules/mo_two_e_ints.rst +++ /dev/null @@ -1,1312 +0,0 @@ -.. _module_mo_two_e_ints: - -.. program:: mo_two_e_ints - -.. default-role:: option - -================== -mo_two_e_ints -================== - -Here, all two-electron integrals (:math:`1/r_{12}`) are computed. -As they have 4 indices and many are zero, they are stored in a map, as defined -in :file:`Utils/map_module.f90`. - -To fetch an |AO| integral, use the -`get_ao_two_e_integral(i,j,k,l,ao_integrals_map)` function, and -to fetch an |MO| integral, use -`get_two_e_integral(i,j,k,l,mo_integrals_map)` or -`mo_two_e_integral(i,j,k,l)`. - -The conventions are: - -* For |AO| integrals : (ik|jl) = (11|22) -* For |MO| integrals : = <12|12> - - - - - - -EZFIO parameters ----------------- - -.. option:: io_mo_two_e_integrals - - Read/Write |MO| integrals from/to disk [ Write | Read | None ] - - Default: None - -.. option:: mo_integrals_threshold - - If | | < `mo_integrals_threshold` then is zero - - Default: 1.e-15 - -.. option:: no_vvvv_integrals - - If `True`, computes all integrals except for the integrals having 4 virtual indices - - Default: False - -.. option:: no_ivvv_integrals - - Can be switched on only if `no_vvvv_integrals` is `True`, then does not compute the integrals with 3 virtual indices and 1 belonging to the core inactive active orbitals - - Default: False - -.. option:: no_vvv_integrals - - Can be switched on only if `no_vvvv_integrals` is `True`, then does not compute the integrals with 3 virtual orbitals - - Default: False - - -Providers ---------- - -.. c:var:: big_array_coulomb_integrals - - - File : :file:`mo_two_e_ints/integrals_3_index.irp.f` - - .. code:: fortran - - double precision, allocatable :: big_array_coulomb_integrals (mo_num,mo_num,mo_num) - double precision, allocatable :: big_array_exchange_integrals (mo_num,mo_num,mo_num) - - - big_array_coulomb_integrals(i,j) = = (ii|jj) - - big_array_exchange_integrals(i,j) = = (ij|ij) - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`mo_integrals_cache` - * :c:data:`mo_integrals_cache_min` - * :c:data:`mo_integrals_map` - * :c:data:`mo_num` - * :c:data:`mo_two_e_integrals_in_map` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`coef_hf_selector` - * :c:data:`h_matrix_all_dets` - * :c:data:`h_matrix_cas` - - -.. c:var:: big_array_exchange_integrals - - - File : :file:`mo_two_e_ints/integrals_3_index.irp.f` - - .. code:: fortran - - double precision, allocatable :: big_array_coulomb_integrals (mo_num,mo_num,mo_num) - double precision, allocatable :: big_array_exchange_integrals (mo_num,mo_num,mo_num) - - - big_array_coulomb_integrals(i,j) = = (ii|jj) - - big_array_exchange_integrals(i,j) = = (ij|ij) - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`mo_integrals_cache` - * :c:data:`mo_integrals_cache_min` - * :c:data:`mo_integrals_map` - * :c:data:`mo_num` - * :c:data:`mo_two_e_integrals_in_map` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`coef_hf_selector` - * :c:data:`h_matrix_all_dets` - * :c:data:`h_matrix_cas` - - -.. c:var:: core_energy - - - File : :file:`mo_two_e_ints/core_quantities.irp.f` - - .. code:: fortran - - double precision :: core_energy - - - energy from the core : contains all core-core contributions - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`list_inact` - * :c:data:`mo_one_e_integrals` - * :c:data:`mo_two_e_integrals_jj` - * :c:data:`n_core_orb` - * :c:data:`nuclear_repulsion` - - - -.. c:var:: core_fock_operator - - - File : :file:`mo_two_e_ints/core_quantities.irp.f` - - .. code:: fortran - - double precision, allocatable :: core_fock_operator (mo_num,mo_num) - - - this is the contribution to the Fock operator from the core electrons - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`list_inact` - * :c:data:`mo_integrals_cache` - * :c:data:`mo_integrals_cache_min` - * :c:data:`mo_integrals_map` - * :c:data:`mo_num` - * :c:data:`mo_two_e_integrals_in_map` - * :c:data:`n_core_orb` - - - -.. c:function:: insert_into_mo_integrals_map: - - - File : :file:`mo_two_e_ints/map_integrals.irp.f` - - .. code:: fortran - - subroutine insert_into_mo_integrals_map(n_integrals, & - buffer_i, buffer_values, thr) - - - Create new entry into MO map, or accumulate in an existing entry - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`mo_integrals_map` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`add_integrals_to_map` - * :c:func:`add_integrals_to_map_no_exit_34` - * :c:func:`add_integrals_to_map_three_indices` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`map_update` - - -.. c:var:: mo_integrals_cache - - - File : :file:`mo_two_e_ints/map_integrals.irp.f` - - .. code:: fortran - - double precision, allocatable :: mo_integrals_cache (0_8:128_8*128_8*128_8*128_8) - - - Cache of MO integrals for fast access - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`mo_integrals_cache_min` - * :c:data:`mo_integrals_map` - * :c:data:`mo_two_e_integrals_in_map` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`big_array_coulomb_integrals` - * :c:data:`core_fock_operator` - * :c:data:`mo_two_e_integrals_jj` - - -.. c:var:: mo_integrals_cache_max - - - File : :file:`mo_two_e_ints/map_integrals.irp.f` - - .. code:: fortran - - integer*4 :: mo_integrals_cache_min - integer*4 :: mo_integrals_cache_max - integer*8 :: mo_integrals_cache_min_8 - integer*8 :: mo_integrals_cache_max_8 - - - Min and max values of the MOs for which the integrals are in the cache - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`elec_alpha_num` - * :c:data:`mo_num` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`big_array_coulomb_integrals` - * :c:data:`core_fock_operator` - * :c:data:`mo_integrals_cache` - * :c:data:`mo_two_e_integrals_jj` - - -.. c:var:: mo_integrals_cache_max_8 - - - File : :file:`mo_two_e_ints/map_integrals.irp.f` - - .. code:: fortran - - integer*4 :: mo_integrals_cache_min - integer*4 :: mo_integrals_cache_max - integer*8 :: mo_integrals_cache_min_8 - integer*8 :: mo_integrals_cache_max_8 - - - Min and max values of the MOs for which the integrals are in the cache - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`elec_alpha_num` - * :c:data:`mo_num` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`big_array_coulomb_integrals` - * :c:data:`core_fock_operator` - * :c:data:`mo_integrals_cache` - * :c:data:`mo_two_e_integrals_jj` - - -.. c:var:: mo_integrals_cache_min - - - File : :file:`mo_two_e_ints/map_integrals.irp.f` - - .. code:: fortran - - integer*4 :: mo_integrals_cache_min - integer*4 :: mo_integrals_cache_max - integer*8 :: mo_integrals_cache_min_8 - integer*8 :: mo_integrals_cache_max_8 - - - Min and max values of the MOs for which the integrals are in the cache - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`elec_alpha_num` - * :c:data:`mo_num` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`big_array_coulomb_integrals` - * :c:data:`core_fock_operator` - * :c:data:`mo_integrals_cache` - * :c:data:`mo_two_e_integrals_jj` - - -.. c:var:: mo_integrals_cache_min_8 - - - File : :file:`mo_two_e_ints/map_integrals.irp.f` - - .. code:: fortran - - integer*4 :: mo_integrals_cache_min - integer*4 :: mo_integrals_cache_max - integer*8 :: mo_integrals_cache_min_8 - integer*8 :: mo_integrals_cache_max_8 - - - Min and max values of the MOs for which the integrals are in the cache - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`elec_alpha_num` - * :c:data:`mo_num` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`big_array_coulomb_integrals` - * :c:data:`core_fock_operator` - * :c:data:`mo_integrals_cache` - * :c:data:`mo_two_e_integrals_jj` - - -.. c:var:: mo_integrals_map - - - File : :file:`mo_two_e_ints/map_integrals.irp.f` - - .. code:: fortran - - type(map_type) :: mo_integrals_map - - - MO integrals - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`mo_num` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`big_array_coulomb_integrals` - * :c:data:`coef_hf_selector` - * :c:data:`core_fock_operator` - * :c:data:`fock_operator_closed_shell_ref_bitmask` - * :c:data:`fock_wee_closed_shell` - * :c:data:`h_matrix_all_dets` - * :c:data:`h_matrix_cas` - * :c:data:`mo_integrals_cache` - * :c:data:`mo_two_e_integrals_in_map` - * :c:data:`mo_two_e_integrals_jj` - - -.. c:var:: mo_two_e_integral_jj_from_ao - - - File : :file:`mo_two_e_ints/mo_bi_integrals.irp.f` - - .. code:: fortran - - double precision, allocatable :: mo_two_e_integral_jj_from_ao (mo_num,mo_num) - double precision, allocatable :: mo_two_e_integrals_jj_exchange_from_ao (mo_num,mo_num) - double precision, allocatable :: mo_two_e_integrals_jj_anti_from_ao (mo_num,mo_num) - - - mo_two_e_integral_jj_from_ao(i,j) = J_ij - mo_two_e_integrals_jj_exchange_from_ao(i,j) = J_ij - mo_two_e_integrals_jj_anti_from_ao(i,j) = J_ij - K_ij - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_integrals_map` - * :c:data:`ao_integrals_threshold` - * :c:data:`ao_num` - * :c:data:`ao_overlap_abs` - * :c:data:`ao_two_e_integral_schwartz` - * :c:data:`ao_two_e_integrals_in_map` - * :c:data:`do_direct_integrals` - * :c:data:`mo_coef` - * :c:data:`mo_coef_transp` - * :c:data:`mo_num` - - - -.. c:var:: mo_two_e_integrals_in_map - - - File : :file:`mo_two_e_ints/mo_bi_integrals.irp.f` - - .. code:: fortran - - logical :: mo_two_e_integrals_in_map - - - If True, the map of MO two-electron integrals is provided - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`ao_two_e_integrals_in_map` - * :c:data:`core_inact_act_bitmask_4` - * :c:data:`ezfio_filename` - * :c:data:`full_ijkl_bitmask_4` - * :c:data:`list_inact` - * :c:data:`mo_class` - * :c:data:`mo_coef` - * :c:data:`mo_coef_transp` - * :c:data:`mo_integrals_map` - * :c:data:`mo_integrals_threshold` - * :c:data:`mo_num` - * :c:data:`mpi_master` - * :c:data:`n_int` - * :c:data:`no_ivvv_integrals` - * :c:data:`no_vvv_integrals` - * :c:data:`no_vvvv_integrals` - * :c:data:`read_mo_two_e_integrals` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`big_array_coulomb_integrals` - * :c:data:`ci_electronic_energy` - * :c:data:`coef_hf_selector` - * :c:data:`core_fock_operator` - * :c:data:`fock_operator_closed_shell_ref_bitmask` - * :c:data:`fock_wee_closed_shell` - * :c:data:`h_matrix_all_dets` - * :c:data:`h_matrix_cas` - * :c:data:`mo_integrals_cache` - * :c:data:`mo_two_e_integrals_jj` - - -.. c:var:: mo_two_e_integrals_jj - - - File : :file:`mo_two_e_ints/mo_bi_integrals.irp.f` - - .. code:: fortran - - double precision, allocatable :: mo_two_e_integrals_jj (mo_num,mo_num) - double precision, allocatable :: mo_two_e_integrals_jj_exchange (mo_num,mo_num) - double precision, allocatable :: mo_two_e_integrals_jj_anti (mo_num,mo_num) - - - mo_two_e_integrals_jj(i,j) = J_ij - mo_two_e_integrals_jj_exchange(i,j) = K_ij - mo_two_e_integrals_jj_anti(i,j) = J_ij - K_ij - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`mo_integrals_cache` - * :c:data:`mo_integrals_cache_min` - * :c:data:`mo_integrals_map` - * :c:data:`mo_num` - * :c:data:`mo_two_e_integrals_in_map` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`core_energy` - * :c:data:`ref_bitmask_energy` - - -.. c:var:: mo_two_e_integrals_jj_anti - - - File : :file:`mo_two_e_ints/mo_bi_integrals.irp.f` - - .. code:: fortran - - double precision, allocatable :: mo_two_e_integrals_jj (mo_num,mo_num) - double precision, allocatable :: mo_two_e_integrals_jj_exchange (mo_num,mo_num) - double precision, allocatable :: mo_two_e_integrals_jj_anti (mo_num,mo_num) - - - mo_two_e_integrals_jj(i,j) = J_ij - mo_two_e_integrals_jj_exchange(i,j) = K_ij - mo_two_e_integrals_jj_anti(i,j) = J_ij - K_ij - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`mo_integrals_cache` - * :c:data:`mo_integrals_cache_min` - * :c:data:`mo_integrals_map` - * :c:data:`mo_num` - * :c:data:`mo_two_e_integrals_in_map` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`core_energy` - * :c:data:`ref_bitmask_energy` - - -.. c:var:: mo_two_e_integrals_jj_anti_from_ao - - - File : :file:`mo_two_e_ints/mo_bi_integrals.irp.f` - - .. code:: fortran - - double precision, allocatable :: mo_two_e_integral_jj_from_ao (mo_num,mo_num) - double precision, allocatable :: mo_two_e_integrals_jj_exchange_from_ao (mo_num,mo_num) - double precision, allocatable :: mo_two_e_integrals_jj_anti_from_ao (mo_num,mo_num) - - - mo_two_e_integral_jj_from_ao(i,j) = J_ij - mo_two_e_integrals_jj_exchange_from_ao(i,j) = J_ij - mo_two_e_integrals_jj_anti_from_ao(i,j) = J_ij - K_ij - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_integrals_map` - * :c:data:`ao_integrals_threshold` - * :c:data:`ao_num` - * :c:data:`ao_overlap_abs` - * :c:data:`ao_two_e_integral_schwartz` - * :c:data:`ao_two_e_integrals_in_map` - * :c:data:`do_direct_integrals` - * :c:data:`mo_coef` - * :c:data:`mo_coef_transp` - * :c:data:`mo_num` - - - -.. c:var:: mo_two_e_integrals_jj_exchange - - - File : :file:`mo_two_e_ints/mo_bi_integrals.irp.f` - - .. code:: fortran - - double precision, allocatable :: mo_two_e_integrals_jj (mo_num,mo_num) - double precision, allocatable :: mo_two_e_integrals_jj_exchange (mo_num,mo_num) - double precision, allocatable :: mo_two_e_integrals_jj_anti (mo_num,mo_num) - - - mo_two_e_integrals_jj(i,j) = J_ij - mo_two_e_integrals_jj_exchange(i,j) = K_ij - mo_two_e_integrals_jj_anti(i,j) = J_ij - K_ij - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`mo_integrals_cache` - * :c:data:`mo_integrals_cache_min` - * :c:data:`mo_integrals_map` - * :c:data:`mo_num` - * :c:data:`mo_two_e_integrals_in_map` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`core_energy` - * :c:data:`ref_bitmask_energy` - - -.. c:var:: mo_two_e_integrals_jj_exchange_from_ao - - - File : :file:`mo_two_e_ints/mo_bi_integrals.irp.f` - - .. code:: fortran - - double precision, allocatable :: mo_two_e_integral_jj_from_ao (mo_num,mo_num) - double precision, allocatable :: mo_two_e_integrals_jj_exchange_from_ao (mo_num,mo_num) - double precision, allocatable :: mo_two_e_integrals_jj_anti_from_ao (mo_num,mo_num) - - - mo_two_e_integral_jj_from_ao(i,j) = J_ij - mo_two_e_integrals_jj_exchange_from_ao(i,j) = J_ij - mo_two_e_integrals_jj_anti_from_ao(i,j) = J_ij - K_ij - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_integrals_map` - * :c:data:`ao_integrals_threshold` - * :c:data:`ao_num` - * :c:data:`ao_overlap_abs` - * :c:data:`ao_two_e_integral_schwartz` - * :c:data:`ao_two_e_integrals_in_map` - * :c:data:`do_direct_integrals` - * :c:data:`mo_coef` - * :c:data:`mo_coef_transp` - * :c:data:`mo_num` - - - -.. c:var:: mo_two_e_integrals_vv_anti_from_ao - - - File : :file:`mo_two_e_ints/mo_bi_integrals.irp.f` - - .. code:: fortran - - double precision, allocatable :: mo_two_e_integrals_vv_from_ao (mo_num,mo_num) - double precision, allocatable :: mo_two_e_integrals_vv_exchange_from_ao (mo_num,mo_num) - double precision, allocatable :: mo_two_e_integrals_vv_anti_from_ao (mo_num,mo_num) - - - mo_two_e_integrals_vv_from_ao(i,j) = J_ij - mo_two_e_integrals_vv_exchange_from_ao(i,j) = J_ij - mo_two_e_integrals_vv_anti_from_ao(i,j) = J_ij - K_ij - but only for the virtual orbitals - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_integrals_map` - * :c:data:`ao_integrals_threshold` - * :c:data:`ao_num` - * :c:data:`ao_overlap_abs` - * :c:data:`ao_two_e_integral_schwartz` - * :c:data:`ao_two_e_integrals_in_map` - * :c:data:`do_direct_integrals` - * :c:data:`list_inact` - * :c:data:`mo_coef` - * :c:data:`mo_coef_transp` - * :c:data:`mo_num` - * :c:data:`n_core_orb` - - - -.. c:var:: mo_two_e_integrals_vv_exchange_from_ao - - - File : :file:`mo_two_e_ints/mo_bi_integrals.irp.f` - - .. code:: fortran - - double precision, allocatable :: mo_two_e_integrals_vv_from_ao (mo_num,mo_num) - double precision, allocatable :: mo_two_e_integrals_vv_exchange_from_ao (mo_num,mo_num) - double precision, allocatable :: mo_two_e_integrals_vv_anti_from_ao (mo_num,mo_num) - - - mo_two_e_integrals_vv_from_ao(i,j) = J_ij - mo_two_e_integrals_vv_exchange_from_ao(i,j) = J_ij - mo_two_e_integrals_vv_anti_from_ao(i,j) = J_ij - K_ij - but only for the virtual orbitals - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_integrals_map` - * :c:data:`ao_integrals_threshold` - * :c:data:`ao_num` - * :c:data:`ao_overlap_abs` - * :c:data:`ao_two_e_integral_schwartz` - * :c:data:`ao_two_e_integrals_in_map` - * :c:data:`do_direct_integrals` - * :c:data:`list_inact` - * :c:data:`mo_coef` - * :c:data:`mo_coef_transp` - * :c:data:`mo_num` - * :c:data:`n_core_orb` - - - -.. c:var:: mo_two_e_integrals_vv_from_ao - - - File : :file:`mo_two_e_ints/mo_bi_integrals.irp.f` - - .. code:: fortran - - double precision, allocatable :: mo_two_e_integrals_vv_from_ao (mo_num,mo_num) - double precision, allocatable :: mo_two_e_integrals_vv_exchange_from_ao (mo_num,mo_num) - double precision, allocatable :: mo_two_e_integrals_vv_anti_from_ao (mo_num,mo_num) - - - mo_two_e_integrals_vv_from_ao(i,j) = J_ij - mo_two_e_integrals_vv_exchange_from_ao(i,j) = J_ij - mo_two_e_integrals_vv_anti_from_ao(i,j) = J_ij - K_ij - but only for the virtual orbitals - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_integrals_map` - * :c:data:`ao_integrals_threshold` - * :c:data:`ao_num` - * :c:data:`ao_overlap_abs` - * :c:data:`ao_two_e_integral_schwartz` - * :c:data:`ao_two_e_integrals_in_map` - * :c:data:`do_direct_integrals` - * :c:data:`list_inact` - * :c:data:`mo_coef` - * :c:data:`mo_coef_transp` - * :c:data:`mo_num` - * :c:data:`n_core_orb` - - - - -Subroutines / functions ------------------------ - -.. c:function:: add_integrals_to_map: - - - File : :file:`mo_two_e_ints/mo_bi_integrals.irp.f` - - .. code:: fortran - - subroutine add_integrals_to_map(mask_ijkl) - - - Adds integrals to tha MO map according to some bitmask - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`mo_coef` - * :c:data:`mo_integrals_threshold` - * :c:data:`mo_coef_transp` - * :c:data:`ao_num` - * :c:data:`mo_integrals_map` - * :c:data:`mo_num` - * :c:data:`ao_two_e_integrals_in_map` - * :c:data:`n_int` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:data:`mo_two_e_integrals_in_map` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`bitstring_to_list` - * :c:func:`bitstring_to_str` - * :c:func:`cpu_time` - * :c:func:`get_ao_two_e_integrals` - * :c:func:`insert_into_mo_integrals_map` - * :c:func:`map_merge` - * :c:func:`mo_two_e_integrals_index` - * :c:func:`wall_time` - - -.. c:function:: add_integrals_to_map_no_exit_34: - - - File : :file:`mo_two_e_ints/mo_bi_integrals.irp.f` - - .. code:: fortran - - subroutine add_integrals_to_map_no_exit_34(mask_ijkl) - - - Adds integrals to tha MO map according to some bitmask - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`mo_coef` - * :c:data:`mo_integrals_threshold` - * :c:data:`mo_coef_transp` - * :c:data:`ao_num` - * :c:data:`mo_integrals_map` - * :c:data:`mo_num` - * :c:data:`ao_two_e_integrals_in_map` - * :c:data:`n_int` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:data:`mo_two_e_integrals_in_map` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`bitstring_to_list` - * :c:func:`cpu_time` - * :c:func:`get_ao_two_e_integrals` - * :c:func:`insert_into_mo_integrals_map` - * :c:func:`map_merge` - * :c:func:`mo_two_e_integrals_index` - * :c:func:`wall_time` - - -.. c:function:: add_integrals_to_map_three_indices: - - - File : :file:`mo_two_e_ints/mo_bi_integrals.irp.f` - - .. code:: fortran - - subroutine add_integrals_to_map_three_indices(mask_ijk) - - - Adds integrals to tha MO map according to some bitmask - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`mo_coef` - * :c:data:`mo_integrals_threshold` - * :c:data:`mo_coef_transp` - * :c:data:`ao_num` - * :c:data:`mo_integrals_map` - * :c:data:`mo_num` - * :c:data:`ao_two_e_integrals_in_map` - * :c:data:`n_int` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:data:`mo_two_e_integrals_in_map` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`bitstring_to_list` - * :c:func:`bitstring_to_str` - * :c:func:`cpu_time` - * :c:func:`get_ao_two_e_integrals` - * :c:func:`insert_into_mo_integrals_map` - * :c:func:`map_merge` - * :c:func:`mo_two_e_integrals_index` - * :c:func:`wall_time` - - -.. c:function:: clear_mo_map: - - - File : :file:`mo_two_e_ints/mo_bi_integrals.irp.f` - - .. code:: fortran - - subroutine clear_mo_map - - - Frees the memory of the MO map - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`mo_integrals_map` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`map_deinit` - - -.. c:function:: dump_mo_integrals: - - - File : :file:`mo_two_e_ints/map_integrals.irp.f` - - .. code:: fortran - - subroutine dump_mo_integrals(filename) - - - Save to disk the |MO| integrals - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`mo_integrals_map` - * :c:data:`mpi_master` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`ezfio_set_work_empty` - - -.. c:function:: get_mo_map_size: - - - File : :file:`mo_two_e_ints/map_integrals.irp.f` - - .. code:: fortran - - integer*8 function get_mo_map_size() - - - Return the number of elements in the MO map - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`mo_integrals_map` - - -.. c:function:: get_mo_two_e_integrals: - - - File : :file:`mo_two_e_ints/map_integrals.irp.f` - - .. code:: fortran - - subroutine get_mo_two_e_integrals(j,k,l,sze,out_val,map) - - - Returns multiple integrals in the MO basis, all - i for j,k,l fixed. - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`mo_two_e_integrals_in_map` - * :c:data:`mo_integrals_cache` - * :c:data:`mo_integrals_cache_min` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`get_d0` - * :c:func:`get_d1` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`map_get` - - -.. c:function:: get_mo_two_e_integrals_coulomb_ii: - - - File : :file:`mo_two_e_ints/map_integrals.irp.f` - - .. code:: fortran - - subroutine get_mo_two_e_integrals_coulomb_ii(k,l,sze,out_val,map) - - - Returns multiple integrals - k(1)i(2) 1/r12 l(1)i(2) :: out_val(i1) - for k,l fixed. - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`mo_two_e_integrals_in_map` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:data:`fock_operator_closed_shell_ref_bitmask` - * :c:data:`fock_wee_closed_shell` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`map_get_many` - * :c:func:`two_e_integrals_index` - - -.. c:function:: get_mo_two_e_integrals_exch_ii: - - - File : :file:`mo_two_e_ints/map_integrals.irp.f` - - .. code:: fortran - - subroutine get_mo_two_e_integrals_exch_ii(k,l,sze,out_val,map) - - - Returns multiple integrals - k(1)i(2) 1/r12 i(1)l(2) :: out_val(i1) - for k,l fixed. - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`mo_two_e_integrals_in_map` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:data:`fock_operator_closed_shell_ref_bitmask` - * :c:data:`fock_wee_closed_shell` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`map_get_many` - * :c:func:`two_e_integrals_index` - - -.. c:function:: get_mo_two_e_integrals_i1j1: - - - File : :file:`mo_two_e_ints/map_integrals.irp.f` - - .. code:: fortran - - subroutine get_mo_two_e_integrals_i1j1(k,l,sze,out_array,map) - - - Returns multiple integrals in the MO basis, all - i(1)j(1) 1/r12 k(2)l(2) - i, j for k,l fixed. - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`mo_two_e_integrals_in_map` - * :c:data:`mo_integrals_map` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`i2radix_sort` - * :c:func:`i8radix_sort` - * :c:func:`iradix_sort` - * :c:func:`map_get_many` - * :c:func:`two_e_integrals_index` - - -.. c:function:: get_mo_two_e_integrals_ij: - - - File : :file:`mo_two_e_ints/map_integrals.irp.f` - - .. code:: fortran - - subroutine get_mo_two_e_integrals_ij(k,l,sze,out_array,map) - - - Returns multiple integrals in the MO basis, all - i(1)j(2) 1/r12 k(1)l(2) - i, j for k,l fixed. - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`mo_two_e_integrals_in_map` - * :c:data:`mo_integrals_map` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`i2radix_sort` - * :c:func:`i8radix_sort` - * :c:func:`iradix_sort` - * :c:func:`map_get_many` - * :c:func:`two_e_integrals_index` - - -.. c:function:: get_two_e_integral: - - - File : :file:`mo_two_e_ints/map_integrals.irp.f` - - .. code:: fortran - - double precision function get_two_e_integral(i,j,k,l,map) - - - Returns one integral in the MO basis - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`mo_two_e_integrals_in_map` - * :c:data:`mo_integrals_cache` - * :c:data:`mo_integrals_cache_min` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`map_get` - * :c:func:`two_e_integrals_index` - - -.. c:function:: load_mo_integrals: - - - File : :file:`mo_two_e_ints/map_integrals.irp.f` - - .. code:: fortran - - integer function load_mo_integrals(filename) - - - Read from disk the |MO| integrals - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`mo_integrals_map` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`cache_map_reallocate` - * :c:func:`map_deinit` - * :c:func:`map_sort` - - -.. c:function:: mo_two_e_integral: - - - File : :file:`mo_two_e_ints/map_integrals.irp.f` - - .. code:: fortran - - double precision function mo_two_e_integral(i,j,k,l) - - - Returns one integral in the MO basis - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`mo_integrals_cache` - * :c:data:`mo_integrals_map` - * :c:data:`mo_two_e_integrals_in_map` - - -.. c:function:: mo_two_e_integrals_index: - - - File : :file:`mo_two_e_ints/mo_bi_integrals.irp.f` - - .. code:: fortran - - subroutine mo_two_e_integrals_index(i,j,k,l,i1) - - - Computes an unique index for i,j,k,l integrals - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`add_integrals_to_map` - * :c:func:`add_integrals_to_map_erf` - * :c:func:`add_integrals_to_map_no_exit_34` - * :c:func:`add_integrals_to_map_three_indices` - diff --git a/docs/source/modules/mpi.rst b/docs/source/modules/mpi.rst deleted file mode 100644 index 21608559..00000000 --- a/docs/source/modules/mpi.rst +++ /dev/null @@ -1,291 +0,0 @@ -.. _module_mpi: - -.. program:: mpi - -.. default-role:: option - -=== -mpi -=== - -Contains all the functions and providers for parallelization with |MPI|. - - - -Providers ---------- - -.. c:var:: mpi_initialized - - - File : :file:`mpi/mpi.irp.f` - - .. code:: fortran - - logical :: mpi_initialized - - - Always true. Initialized MPI - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`ezfio_filename` - - -.. c:var:: mpi_master - - - File : :file:`mpi/mpi.irp.f` - - .. code:: fortran - - logical :: mpi_master - - - If true, rank is zero - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`mpi_rank` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_cartesian` - * :c:data:`ao_coef` - * :c:data:`ao_expo` - * :c:data:`ao_integrals_threshold` - * :c:data:`ao_md5` - * :c:data:`ao_nucl` - * :c:data:`ao_num` - * :c:data:`ao_power` - * :c:data:`ao_prim_num` - * :c:data:`ao_two_e_integrals_in_map` - * :c:data:`cas_bitmask` - * :c:data:`ci_energy` - * :c:data:`correlation_energy_ratio_max` - * :c:data:`data_energy_proj` - * :c:data:`data_energy_var` - * :c:data:`data_one_e_dm_alpha_mo` - * :c:data:`data_one_e_dm_beta_mo` - * :c:data:`davidson_sze_max` - * :c:data:`disk_access_nuclear_repulsion` - * :c:data:`disk_based_davidson` - * :c:data:`distributed_davidson` - * :c:data:`do_direct_integrals` - * :c:data:`do_pseudo` - * :c:data:`do_pt2` - * :c:data:`elec_alpha_num` - * :c:data:`elec_beta_num` - * :c:data:`element_name` - * :c:data:`energy_iterations` - * :c:data:`frozen_orb_scf` - * :c:data:`generators_bitmask` - * :c:data:`generators_bitmask_restart` - * :c:data:`io_ao_integrals_e_n` - * :c:data:`io_ao_integrals_kinetic` - * :c:data:`io_ao_integrals_overlap` - * :c:data:`io_ao_integrals_pseudo` - * :c:data:`io_ao_one_e_integrals` - * :c:data:`io_ao_two_e_integrals` - * :c:data:`io_ao_two_e_integrals_erf` - * :c:data:`io_mo_integrals_e_n` - * :c:data:`io_mo_integrals_kinetic` - * :c:data:`io_mo_integrals_pseudo` - * :c:data:`io_mo_one_e_integrals` - * :c:data:`io_mo_two_e_integrals` - * :c:data:`io_mo_two_e_integrals_erf` - * :c:data:`level_shift` - * :c:data:`max_dim_diis` - * :c:data:`mo_class` - * :c:data:`mo_coef` - * :c:data:`mo_guess_type` - * :c:data:`mo_integrals_threshold` - * :c:data:`mo_label` - * :c:data:`mo_num` - * :c:data:`mo_occ` - * :c:data:`mo_two_e_integrals_in_map` - * :c:data:`mu_erf` - * :c:data:`n_cas_bitmask` - * :c:data:`n_core_orb` - * :c:data:`n_det` - * :c:data:`n_det_generators` - * :c:data:`n_det_iterations` - * :c:data:`n_det_max` - * :c:data:`n_det_max_full` - * :c:data:`n_det_print_wf` - * :c:data:`n_det_selectors` - * :c:data:`n_generators_bitmask` - * :c:data:`n_generators_bitmask_restart` - * :c:data:`n_int` - * :c:data:`n_it_scf_max` - * :c:data:`n_iter` - * :c:data:`n_states` - * :c:data:`n_states_diag` - * :c:data:`no_ivvv_integrals` - * :c:data:`no_vvv_integrals` - * :c:data:`no_vvvv_integrals` - * :c:data:`nthreads_davidson` - * :c:data:`nthreads_pt2` - * :c:data:`nucl_charge` - * :c:data:`nucl_charge_remove` - * :c:data:`nucl_coord` - * :c:data:`nucl_label` - * :c:data:`nucl_num` - * :c:data:`nuclear_repulsion` - * :c:data:`only_expected_s2` - * :c:data:`pseudo_dz_k` - * :c:data:`pseudo_dz_kl` - * :c:data:`pseudo_grid_rmax` - * :c:data:`pseudo_grid_size` - * :c:data:`pseudo_klocmax` - * :c:data:`pseudo_kmax` - * :c:data:`pseudo_lmax` - * :c:data:`pseudo_n_k` - * :c:data:`pseudo_n_kl` - * :c:data:`pseudo_v_k` - * :c:data:`pseudo_v_kl` - * :c:data:`psi_cas` - * :c:data:`psi_coef` - * :c:data:`psi_coef_max` - * :c:data:`psi_det` - * :c:data:`psi_det_alpha_unique` - * :c:data:`psi_det_beta_unique` - * :c:data:`psi_det_size` - * :c:data:`pt2_e0_denominator` - * :c:data:`pt2_iterations` - * :c:data:`pt2_max` - * :c:data:`pt2_n_teeth` - * :c:data:`pt2_relative_error` - * :c:data:`qp_max_mem` - * :c:data:`read_wf` - * :c:data:`s2_eig` - * :c:data:`scf_algorithm` - * :c:data:`state_following` - * :c:data:`target_energy` - * :c:data:`thresh_scf` - * :c:data:`threshold_davidson` - * :c:data:`threshold_diis` - * :c:data:`threshold_generators` - * :c:data:`used_weight` - - -.. c:var:: mpi_rank - - - File : :file:`mpi/mpi.irp.f` - - .. code:: fortran - - integer :: mpi_rank - integer :: mpi_size - - - Rank of MPI process and number of MPI processes - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`mpi_master` - - -.. c:var:: mpi_size - - - File : :file:`mpi/mpi.irp.f` - - .. code:: fortran - - integer :: mpi_rank - integer :: mpi_size - - - Rank of MPI process and number of MPI processes - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`mpi_master` - - - -Subroutines / functions ------------------------ - -.. c:function:: broadcast_chunks_double: - - - File : :file:`mpi/mpi.irp.f_template_97` - - .. code:: fortran - - subroutine broadcast_chunks_double(A, LDA) - - - Broadcast with chunks of ~2GB - - -.. c:function:: broadcast_chunks_integer: - - - File : :file:`mpi/mpi.irp.f_template_97` - - .. code:: fortran - - subroutine broadcast_chunks_integer(A, LDA) - - - Broadcast with chunks of ~2GB - - -.. c:function:: broadcast_chunks_integer8: - - - File : :file:`mpi/mpi.irp.f_template_97` - - .. code:: fortran - - subroutine broadcast_chunks_integer8(A, LDA) - - - Broadcast with chunks of ~2GB - - -.. c:function:: mpi_print: - - - File : :file:`mpi/mpi.irp.f` - - .. code:: fortran - - subroutine mpi_print(string) - - - Print string to stdout if the MPI rank is zero. - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`mpi_master` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`run_slave_main` - diff --git a/docs/source/modules/nuclei.rst b/docs/source/modules/nuclei.rst deleted file mode 100644 index 0bd4b325..00000000 --- a/docs/source/modules/nuclei.rst +++ /dev/null @@ -1,666 +0,0 @@ -.. _module_nuclei: - -.. program:: nuclei - -.. default-role:: option - -====== -nuclei -====== - -This module contains data relative to the nuclei (coordinates, charge, -nuclear repulsion energy, etc). -The coordinates are expressed in atomic units. - - - - -EZFIO parameters ----------------- - -.. option:: nucl_num - - Number of nuclei - - -.. option:: nucl_label - - Nuclear labels - - -.. option:: nucl_charge - - Nuclear charges - - -.. option:: nucl_coord - - Nuclear coordinates in the format (:, {x,y,z}) - - -.. option:: disk_access_nuclear_repulsion - - Read/Write Nuclear Repulsion from/to disk [ Write | Read | None ] - - Default: None - -.. option:: nuclear_repulsion - - Nuclear repulsion (Computed automaticaly or Read in the |EZFIO|) - - - -Providers ---------- - -.. c:var:: center_of_mass - - - File : :file:`nuclei/nuclei.irp.f` - - .. code:: fortran - - double precision, allocatable :: center_of_mass (3) - - - Center of mass of the molecule - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`element_name` - * :c:data:`nucl_charge` - * :c:data:`nucl_coord` - * :c:data:`nucl_num` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`inertia_tensor` - - -.. c:var:: element_mass - - - File : :file:`nuclei/nuclei.irp.f` - - .. code:: fortran - - character*(4), allocatable :: element_name (0:127) - double precision, allocatable :: element_mass (0:127) - - - Array of the name of element, sorted by nuclear charge (integer) - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`mpi_master` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`center_of_mass` - * :c:data:`inertia_tensor` - - -.. c:var:: element_name - - - File : :file:`nuclei/nuclei.irp.f` - - .. code:: fortran - - character*(4), allocatable :: element_name (0:127) - double precision, allocatable :: element_mass (0:127) - - - Array of the name of element, sorted by nuclear charge (integer) - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`mpi_master` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`center_of_mass` - * :c:data:`inertia_tensor` - - -.. c:var:: inertia_tensor - - - File : :file:`nuclei/inertia.irp.f` - - .. code:: fortran - - double precision, allocatable :: inertia_tensor (3,3) - - - Inertia tensor - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`center_of_mass` - * :c:data:`element_name` - * :c:data:`nucl_charge` - * :c:data:`nucl_coord` - * :c:data:`nucl_num` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`inertia_tensor_eigenvectors` - - -.. c:var:: inertia_tensor_eigenvalues - - - File : :file:`nuclei/inertia.irp.f` - - .. code:: fortran - - double precision, allocatable :: inertia_tensor_eigenvectors (3,3) - double precision, allocatable :: inertia_tensor_eigenvalues (3) - - - Eigenvectors/eigenvalues of the inertia_tensor. Used to find normal orientation. - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`inertia_tensor` - - - -.. c:var:: inertia_tensor_eigenvectors - - - File : :file:`nuclei/inertia.irp.f` - - .. code:: fortran - - double precision, allocatable :: inertia_tensor_eigenvectors (3,3) - double precision, allocatable :: inertia_tensor_eigenvalues (3) - - - Eigenvectors/eigenvalues of the inertia_tensor. Used to find normal orientation. - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`inertia_tensor` - - - -.. c:var:: nucl_coord - - - File : :file:`nuclei/nuclei.irp.f` - - .. code:: fortran - - double precision, allocatable :: nucl_coord (nucl_num,3) - - - Nuclear coordinates in the format (:, {x,y,z}) - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ezfio_filename` - * :c:data:`mpi_master` - * :c:data:`nucl_charge` - * :c:data:`nucl_label` - * :c:data:`nucl_num` - * :c:data:`output_wall_time_0` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_deriv2_x` - * :c:data:`ao_deriv_1_x` - * :c:data:`ao_dipole_x` - * :c:data:`ao_integrals_n_e` - * :c:data:`ao_integrals_n_e_per_atom` - * :c:data:`ao_overlap` - * :c:data:`ao_overlap_abs` - * :c:data:`ao_pseudo_integrals_local` - * :c:data:`ao_pseudo_integrals_non_local` - * :c:data:`ao_spread_x` - * :c:data:`ao_two_e_integral_alpha` - * :c:data:`ao_two_e_integral_erf_schwartz` - * :c:data:`ao_two_e_integral_schwartz` - * :c:data:`ao_two_e_integrals_erf_in_map` - * :c:data:`ao_two_e_integrals_in_map` - * :c:data:`center_of_mass` - * :c:data:`inertia_tensor` - * :c:data:`nucl_coord_transp` - * :c:data:`nucl_dist_2` - * :c:data:`nuclear_repulsion` - - -.. c:var:: nucl_coord_transp - - - File : :file:`nuclei/nuclei.irp.f` - - .. code:: fortran - - double precision, allocatable :: nucl_coord_transp (3,nucl_num) - - - Transposed array of nucl_coord - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`nucl_coord` - * :c:data:`nucl_num` - - - -.. c:var:: nucl_dist - - - File : :file:`nuclei/nuclei.irp.f` - - .. code:: fortran - - double precision, allocatable :: nucl_dist_2 (nucl_num,nucl_num) - double precision, allocatable :: nucl_dist_vec_x (nucl_num,nucl_num) - double precision, allocatable :: nucl_dist_vec_y (nucl_num,nucl_num) - double precision, allocatable :: nucl_dist_vec_z (nucl_num,nucl_num) - double precision, allocatable :: nucl_dist (nucl_num,nucl_num) - - - nucl_dist : Nucleus-nucleus distances - nucl_dist_2 : Nucleus-nucleus distances squared - nucl_dist_vec : Nucleus-nucleus distances vectors - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`nucl_coord` - * :c:data:`nucl_num` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`nucl_dist_inv` - - -.. c:var:: nucl_dist_2 - - - File : :file:`nuclei/nuclei.irp.f` - - .. code:: fortran - - double precision, allocatable :: nucl_dist_2 (nucl_num,nucl_num) - double precision, allocatable :: nucl_dist_vec_x (nucl_num,nucl_num) - double precision, allocatable :: nucl_dist_vec_y (nucl_num,nucl_num) - double precision, allocatable :: nucl_dist_vec_z (nucl_num,nucl_num) - double precision, allocatable :: nucl_dist (nucl_num,nucl_num) - - - nucl_dist : Nucleus-nucleus distances - nucl_dist_2 : Nucleus-nucleus distances squared - nucl_dist_vec : Nucleus-nucleus distances vectors - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`nucl_coord` - * :c:data:`nucl_num` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`nucl_dist_inv` - - -.. c:var:: nucl_dist_inv - - - File : :file:`nuclei/nuclei.irp.f` - - .. code:: fortran - - double precision, allocatable :: nucl_dist_inv (nucl_num,nucl_num) - - - Inverse of the distance between nucleus I and nucleus J - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`nucl_dist_2` - * :c:data:`nucl_num` - - - -.. c:var:: nucl_dist_vec_x - - - File : :file:`nuclei/nuclei.irp.f` - - .. code:: fortran - - double precision, allocatable :: nucl_dist_2 (nucl_num,nucl_num) - double precision, allocatable :: nucl_dist_vec_x (nucl_num,nucl_num) - double precision, allocatable :: nucl_dist_vec_y (nucl_num,nucl_num) - double precision, allocatable :: nucl_dist_vec_z (nucl_num,nucl_num) - double precision, allocatable :: nucl_dist (nucl_num,nucl_num) - - - nucl_dist : Nucleus-nucleus distances - nucl_dist_2 : Nucleus-nucleus distances squared - nucl_dist_vec : Nucleus-nucleus distances vectors - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`nucl_coord` - * :c:data:`nucl_num` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`nucl_dist_inv` - - -.. c:var:: nucl_dist_vec_y - - - File : :file:`nuclei/nuclei.irp.f` - - .. code:: fortran - - double precision, allocatable :: nucl_dist_2 (nucl_num,nucl_num) - double precision, allocatable :: nucl_dist_vec_x (nucl_num,nucl_num) - double precision, allocatable :: nucl_dist_vec_y (nucl_num,nucl_num) - double precision, allocatable :: nucl_dist_vec_z (nucl_num,nucl_num) - double precision, allocatable :: nucl_dist (nucl_num,nucl_num) - - - nucl_dist : Nucleus-nucleus distances - nucl_dist_2 : Nucleus-nucleus distances squared - nucl_dist_vec : Nucleus-nucleus distances vectors - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`nucl_coord` - * :c:data:`nucl_num` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`nucl_dist_inv` - - -.. c:var:: nucl_dist_vec_z - - - File : :file:`nuclei/nuclei.irp.f` - - .. code:: fortran - - double precision, allocatable :: nucl_dist_2 (nucl_num,nucl_num) - double precision, allocatable :: nucl_dist_vec_x (nucl_num,nucl_num) - double precision, allocatable :: nucl_dist_vec_y (nucl_num,nucl_num) - double precision, allocatable :: nucl_dist_vec_z (nucl_num,nucl_num) - double precision, allocatable :: nucl_dist (nucl_num,nucl_num) - - - nucl_dist : Nucleus-nucleus distances - nucl_dist_2 : Nucleus-nucleus distances squared - nucl_dist_vec : Nucleus-nucleus distances vectors - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`nucl_coord` - * :c:data:`nucl_num` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`nucl_dist_inv` - - -.. c:var:: nuclear_repulsion - - - File : :file:`nuclei/nuclei.irp.f` - - .. code:: fortran - - double precision :: nuclear_repulsion - - - Nuclear repulsion energy - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`disk_access_nuclear_repulsion` - * :c:data:`mpi_master` - * :c:data:`nucl_charge` - * :c:data:`nucl_coord` - * :c:data:`nucl_num` - * :c:data:`output_wall_time_0` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`ci_energy` - * :c:data:`core_energy` - * :c:data:`core_energy_erf` - * :c:data:`hf_energy` - * :c:data:`psi_energy_with_nucl_rep` - * :c:data:`pt2_e0_denominator` - * :c:data:`scf_energy` - - -.. c:var:: slater_bragg_radii - - - File : :file:`nuclei/atomic_radii.irp.f` - - .. code:: fortran - - double precision, allocatable :: slater_bragg_radii (100) - - - atomic radii in Angstrom defined in table I of JCP 41, 3199 (1964) Slater - execpt for the Hydrogen atom where we took the value of Becke (1988, JCP) - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`slater_bragg_radii_per_atom` - * :c:data:`slater_bragg_radii_ua` - - -.. c:var:: slater_bragg_radii_per_atom - - - File : :file:`nuclei/atomic_radii.irp.f` - - .. code:: fortran - - double precision, allocatable :: slater_bragg_radii_per_atom (nucl_num) - - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`nucl_charge` - * :c:data:`nucl_num` - * :c:data:`slater_bragg_radii` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`slater_bragg_type_inter_distance` - - -.. c:var:: slater_bragg_radii_per_atom_ua - - - File : :file:`nuclei/atomic_radii.irp.f` - - .. code:: fortran - - double precision, allocatable :: slater_bragg_radii_per_atom_ua (nucl_num) - - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`nucl_charge` - * :c:data:`nucl_num` - * :c:data:`slater_bragg_radii_ua` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`slater_bragg_type_inter_distance_ua` - - -.. c:var:: slater_bragg_radii_ua - - - File : :file:`nuclei/atomic_radii.irp.f` - - .. code:: fortran - - double precision, allocatable :: slater_bragg_radii_ua (100) - - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`slater_bragg_radii` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`slater_bragg_radii_per_atom_ua` - - -.. c:var:: slater_bragg_type_inter_distance - - - File : :file:`nuclei/atomic_radii.irp.f` - - .. code:: fortran - - double precision, allocatable :: slater_bragg_type_inter_distance (nucl_num,nucl_num) - - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`nucl_num` - * :c:data:`slater_bragg_radii_per_atom` - - - -.. c:var:: slater_bragg_type_inter_distance_ua - - - File : :file:`nuclei/atomic_radii.irp.f` - - .. code:: fortran - - double precision, allocatable :: slater_bragg_type_inter_distance_ua (nucl_num,nucl_num) - - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`nucl_num` - * :c:data:`slater_bragg_radii_per_atom_ua` - - diff --git a/docs/source/modules/perturbation.rst b/docs/source/modules/perturbation.rst deleted file mode 100644 index fb144639..00000000 --- a/docs/source/modules/perturbation.rst +++ /dev/null @@ -1,999 +0,0 @@ -.. _module_perturbation: - -.. program:: perturbation - -.. default-role:: option - -============ -perturbation -============ - - -All subroutines in ``*.irp.f`` starting with `pt2_` in the current directory are -perturbation computed using the routine `i_H_psi`. Other cases are not allowed. -The arguments of the `pt2_` are always: - -.. code-block:: fortran - - subroutine pt2_...( & - psi_ref, & - psi_ref_coefs, & - E_refs, & - det_pert, & - c_pert, & - e_2_pert, & - H_pert_diag, & - Nint, & - Ndet, & - N_st ) - - - integer , intent(in) :: Nint,Ndet,N_st - integer(bit_kind), intent(in) :: psi_ref(Nint,2,Ndet) - double precision , intent(in) :: psi_ref_coefs(Ndet,N_st) - double precision , intent(in) :: E_refs(N_st) - integer(bit_kind), intent(in) :: det_pert(Nint,2) - double precision , intent(out) :: c_pert(N_st),e_2_pert(N_st),H_pert_diag - - -`psi_ref` - bitstring of the determinants present in the various `N_st` states - -`psi_ref_coefs` - coefficients of the determinants on the various `N_st` states - -`E_refs` - Energy of the various `N_st` states - -`det_pert` - Perturber determinant - -`c_pert` - Perturbative coefficients for the various states - -`e_2_pert` - Perturbative energetic contribution for the various states - -`H_pert_diag` - Diagonal |H| matrix element of the perturber - -`Nint` - Should be equal to `N_int` - -`Ndet` - Number of determinants `i` in |Psi| on which we apply - -`N_st` - Number of states - - - - - - -EZFIO parameters ----------------- - -.. option:: do_pt2 - - If `True`, compute the |PT2| contribution - - Default: True - -.. option:: pt2_max - - The selection process stops when the largest |PT2| (for all the state) is lower - - than `pt2_max` in absolute value - - Default: 0.0001 - -.. option:: pt2_relative_error - - Stop stochastic |PT2| when the relative error is smaller than `PT2_relative_error` - - Default: 0.002 - -.. option:: correlation_energy_ratio_max - - The selection process stops at a fixed correlation ratio (useful for getting same accuracy between molecules). - - Defined as :math:`{E_{CI}-E_{HF}}/{E_{CI}+E_{PT2} - E_{HF}}`. - - Default: 1.00 - - -Providers ---------- - -.. c:function:: fill_h_apply_buffer_selection: - - - File : :file:`perturbation/selection.irp.f` - - .. code:: fortran - - subroutine fill_H_apply_buffer_selection(n_selected,det_buffer,e_2_pert_buffer,coef_pert_buffer, & - N_st,Nint,iproc,select_max_out) - - - Fill the H_apply buffer with determiants for the selection - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`selection_criterion` - * :c:data:`h_apply_buffer_allocated` - * :c:data:`n_det` - * :c:data:`n_int` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`omp_set_lock` - * :c:func:`omp_unset_lock` - * :c:func:`resize_h_apply_buffer` - - -.. c:var:: h0_type - - - File : :file:`perturbation/h0_type.irp.f` - - .. code:: fortran - - character*32 :: h0_type - - - Type of zeroth-order Hamiltonian - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`s2_eig` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`pt2_e0_denominator` - - -.. c:var:: max_exc_pert - - - File : :file:`perturbation/exc_max.irp.f` - - .. code:: fortran - - integer :: max_exc_pert - - - - - -.. c:var:: selection_criterion - - - File : :file:`perturbation/selection.irp.f` - - .. code:: fortran - - double precision :: selection_criterion - double precision :: selection_criterion_min - double precision :: selection_criterion_factor - - - Threshold to select determinants. Set by selection routines. - - - -.. c:var:: selection_criterion_factor - - - File : :file:`perturbation/selection.irp.f` - - .. code:: fortran - - double precision :: selection_criterion - double precision :: selection_criterion_min - double precision :: selection_criterion_factor - - - Threshold to select determinants. Set by selection routines. - - - -.. c:var:: selection_criterion_min - - - File : :file:`perturbation/selection.irp.f` - - .. code:: fortran - - double precision :: selection_criterion - double precision :: selection_criterion_min - double precision :: selection_criterion_factor - - - Threshold to select determinants. Set by selection routines. - - - -.. c:var:: var_pt2_ratio - - - File : :file:`perturbation/var_pt2_ratio_provider.irp.f` - - .. code:: fortran - - double precision :: var_pt2_ratio - - - The selection process stops when the energy ratio variational/(variational+PT2) - is equal to var_pt2_ratio - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`correlation_energy_ratio_max` - - - - -Subroutines / functions ------------------------ - -.. c:function:: perturb_buffer_by_mono_dummy: - - - File : :file:`perturbation/perturbation.irp.f_shell_13` - - .. code:: fortran - - subroutine perturb_buffer_by_mono_dummy(i_generator,buffer,buffer_size,e_2_pert_buffer,coef_pert_buffer,sum_e_2_pert,sum_norm_pert,sum_H_pert_diag,N_st,Nint,key_mask,fock_diag_tmp,electronic_energy) - - - Applly pertubration ``dummy`` to the buffer of determinants generated in the H_apply - routine. - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`mo_num` - * :c:data:`psi_selectors` - * :c:data:`n_det` - * :c:data:`n_det_selectors` - * :c:data:`n_det_generators` - * :c:data:`psi_det_generators` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`create_minilist` - * :c:func:`create_minilist_find_previous` - * :c:func:`pt2_dummy` - - -.. c:function:: perturb_buffer_by_mono_epstein_nesbet: - - - File : :file:`perturbation/perturbation.irp.f_shell_13` - - .. code:: fortran - - subroutine perturb_buffer_by_mono_epstein_nesbet(i_generator,buffer,buffer_size,e_2_pert_buffer,coef_pert_buffer,sum_e_2_pert,sum_norm_pert,sum_H_pert_diag,N_st,Nint,key_mask,fock_diag_tmp,electronic_energy) - - - Applly pertubration ``epstein_nesbet`` to the buffer of determinants generated in the H_apply - routine. - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`mo_num` - * :c:data:`psi_selectors` - * :c:data:`n_det` - * :c:data:`n_det_selectors` - * :c:data:`n_det_generators` - * :c:data:`psi_det_generators` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`create_minilist` - * :c:func:`create_minilist_find_previous` - * :c:func:`pt2_epstein_nesbet` - - -.. c:function:: perturb_buffer_by_mono_epstein_nesbet_2x2: - - - File : :file:`perturbation/perturbation.irp.f_shell_13` - - .. code:: fortran - - subroutine perturb_buffer_by_mono_epstein_nesbet_2x2(i_generator,buffer,buffer_size,e_2_pert_buffer,coef_pert_buffer,sum_e_2_pert,sum_norm_pert,sum_H_pert_diag,N_st,Nint,key_mask,fock_diag_tmp,electronic_energy) - - - Applly pertubration ``epstein_nesbet_2x2`` to the buffer of determinants generated in the H_apply - routine. - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`mo_num` - * :c:data:`psi_selectors` - * :c:data:`n_det` - * :c:data:`n_det_selectors` - * :c:data:`n_det_generators` - * :c:data:`psi_det_generators` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`create_minilist` - * :c:func:`create_minilist_find_previous` - * :c:func:`pt2_epstein_nesbet_2x2` - - -.. c:function:: perturb_buffer_by_mono_epstein_nesbet_2x2_no_ci_diag: - - - File : :file:`perturbation/perturbation.irp.f_shell_13` - - .. code:: fortran - - subroutine perturb_buffer_by_mono_epstein_nesbet_2x2_no_ci_diag(i_generator,buffer,buffer_size,e_2_pert_buffer,coef_pert_buffer,sum_e_2_pert,sum_norm_pert,sum_H_pert_diag,N_st,Nint,key_mask,fock_diag_tmp,electronic_energy) - - - Applly pertubration ``epstein_nesbet_2x2_no_ci_diag`` to the buffer of determinants generated in the H_apply - routine. - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`mo_num` - * :c:data:`psi_selectors` - * :c:data:`n_det` - * :c:data:`n_det_selectors` - * :c:data:`n_det_generators` - * :c:data:`psi_det_generators` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`create_minilist` - * :c:func:`create_minilist_find_previous` - * :c:func:`pt2_epstein_nesbet_2x2_no_ci_diag` - - -.. c:function:: perturb_buffer_by_mono_moller_plesset: - - - File : :file:`perturbation/perturbation.irp.f_shell_13` - - .. code:: fortran - - subroutine perturb_buffer_by_mono_moller_plesset(i_generator,buffer,buffer_size,e_2_pert_buffer,coef_pert_buffer,sum_e_2_pert,sum_norm_pert,sum_H_pert_diag,N_st,Nint,key_mask,fock_diag_tmp,electronic_energy) - - - Applly pertubration ``moller_plesset`` to the buffer of determinants generated in the H_apply - routine. - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`mo_num` - * :c:data:`psi_selectors` - * :c:data:`n_det` - * :c:data:`n_det_selectors` - * :c:data:`n_det_generators` - * :c:data:`psi_det_generators` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`create_minilist` - * :c:func:`create_minilist_find_previous` - * :c:func:`pt2_moller_plesset` - - -.. c:function:: perturb_buffer_by_mono_qdpt: - - - File : :file:`perturbation/perturbation.irp.f_shell_13` - - .. code:: fortran - - subroutine perturb_buffer_by_mono_qdpt(i_generator,buffer,buffer_size,e_2_pert_buffer,coef_pert_buffer,sum_e_2_pert,sum_norm_pert,sum_H_pert_diag,N_st,Nint,key_mask,fock_diag_tmp,electronic_energy) - - - Applly pertubration ``qdpt`` to the buffer of determinants generated in the H_apply - routine. - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`mo_num` - * :c:data:`psi_selectors` - * :c:data:`n_det` - * :c:data:`n_det_selectors` - * :c:data:`n_det_generators` - * :c:data:`psi_det_generators` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`create_minilist` - * :c:func:`create_minilist_find_previous` - * :c:func:`pt2_qdpt` - - -.. c:function:: perturb_buffer_dummy: - - - File : :file:`perturbation/perturbation.irp.f_shell_13` - - .. code:: fortran - - subroutine perturb_buffer_dummy(i_generator,buffer,buffer_size,e_2_pert_buffer,coef_pert_buffer,sum_e_2_pert,sum_norm_pert,sum_H_pert_diag,N_st,Nint,key_mask,fock_diag_tmp,electronic_energy) - - - Applly pertubration ``dummy`` to the buffer of determinants generated in the H_apply - routine. - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`n_det_selectors` - * :c:data:`n_det_generators` - * :c:data:`psi_selectors` - * :c:data:`psi_det_generators` - * :c:data:`mo_num` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`create_microlist` - * :c:func:`create_minilist` - * :c:func:`create_minilist_find_previous` - * :c:func:`getmobiles` - * :c:func:`pt2_dummy` - - -.. c:function:: perturb_buffer_epstein_nesbet: - - - File : :file:`perturbation/perturbation.irp.f_shell_13` - - .. code:: fortran - - subroutine perturb_buffer_epstein_nesbet(i_generator,buffer,buffer_size,e_2_pert_buffer,coef_pert_buffer,sum_e_2_pert,sum_norm_pert,sum_H_pert_diag,N_st,Nint,key_mask,fock_diag_tmp,electronic_energy) - - - Applly pertubration ``epstein_nesbet`` to the buffer of determinants generated in the H_apply - routine. - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`n_det_selectors` - * :c:data:`n_det_generators` - * :c:data:`psi_selectors` - * :c:data:`psi_det_generators` - * :c:data:`mo_num` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`create_microlist` - * :c:func:`create_minilist` - * :c:func:`create_minilist_find_previous` - * :c:func:`getmobiles` - * :c:func:`pt2_epstein_nesbet` - - -.. c:function:: perturb_buffer_epstein_nesbet_2x2: - - - File : :file:`perturbation/perturbation.irp.f_shell_13` - - .. code:: fortran - - subroutine perturb_buffer_epstein_nesbet_2x2(i_generator,buffer,buffer_size,e_2_pert_buffer,coef_pert_buffer,sum_e_2_pert,sum_norm_pert,sum_H_pert_diag,N_st,Nint,key_mask,fock_diag_tmp,electronic_energy) - - - Applly pertubration ``epstein_nesbet_2x2`` to the buffer of determinants generated in the H_apply - routine. - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`n_det_selectors` - * :c:data:`n_det_generators` - * :c:data:`psi_selectors` - * :c:data:`psi_det_generators` - * :c:data:`mo_num` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`create_microlist` - * :c:func:`create_minilist` - * :c:func:`create_minilist_find_previous` - * :c:func:`getmobiles` - * :c:func:`pt2_epstein_nesbet_2x2` - - -.. c:function:: perturb_buffer_epstein_nesbet_2x2_no_ci_diag: - - - File : :file:`perturbation/perturbation.irp.f_shell_13` - - .. code:: fortran - - subroutine perturb_buffer_epstein_nesbet_2x2_no_ci_diag(i_generator,buffer,buffer_size,e_2_pert_buffer,coef_pert_buffer,sum_e_2_pert,sum_norm_pert,sum_H_pert_diag,N_st,Nint,key_mask,fock_diag_tmp,electronic_energy) - - - Applly pertubration ``epstein_nesbet_2x2_no_ci_diag`` to the buffer of determinants generated in the H_apply - routine. - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`n_det_selectors` - * :c:data:`n_det_generators` - * :c:data:`psi_selectors` - * :c:data:`psi_det_generators` - * :c:data:`mo_num` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`create_microlist` - * :c:func:`create_minilist` - * :c:func:`create_minilist_find_previous` - * :c:func:`getmobiles` - * :c:func:`pt2_epstein_nesbet_2x2_no_ci_diag` - - -.. c:function:: perturb_buffer_moller_plesset: - - - File : :file:`perturbation/perturbation.irp.f_shell_13` - - .. code:: fortran - - subroutine perturb_buffer_moller_plesset(i_generator,buffer,buffer_size,e_2_pert_buffer,coef_pert_buffer,sum_e_2_pert,sum_norm_pert,sum_H_pert_diag,N_st,Nint,key_mask,fock_diag_tmp,electronic_energy) - - - Applly pertubration ``moller_plesset`` to the buffer of determinants generated in the H_apply - routine. - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`n_det_selectors` - * :c:data:`n_det_generators` - * :c:data:`psi_selectors` - * :c:data:`psi_det_generators` - * :c:data:`mo_num` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`create_microlist` - * :c:func:`create_minilist` - * :c:func:`create_minilist_find_previous` - * :c:func:`getmobiles` - * :c:func:`pt2_moller_plesset` - - -.. c:function:: perturb_buffer_qdpt: - - - File : :file:`perturbation/perturbation.irp.f_shell_13` - - .. code:: fortran - - subroutine perturb_buffer_qdpt(i_generator,buffer,buffer_size,e_2_pert_buffer,coef_pert_buffer,sum_e_2_pert,sum_norm_pert,sum_H_pert_diag,N_st,Nint,key_mask,fock_diag_tmp,electronic_energy) - - - Applly pertubration ``qdpt`` to the buffer of determinants generated in the H_apply - routine. - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`n_det_selectors` - * :c:data:`n_det_generators` - * :c:data:`psi_selectors` - * :c:data:`psi_det_generators` - * :c:data:`mo_num` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`create_microlist` - * :c:func:`create_minilist` - * :c:func:`create_minilist_find_previous` - * :c:func:`getmobiles` - * :c:func:`pt2_qdpt` - - -.. c:function:: pt2_dummy: - - - File : :file:`perturbation/pt2_equations.irp.f_template_305` - - .. code:: fortran - - subroutine pt2_dummy (electronic_energy,det_ref,det_pert,fock_diag_tmp,c_pert,e_2_pert,H_pert_diag,Nint,ndet,N_st,minilist,idx_minilist,N_minilist) - - - Dummy perturbation to add all connected determinants. - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`n_det_selectors` - * :c:data:`selection_criterion` - * :c:data:`psi_selectors` - * :c:data:`psi_selectors_size` - * :c:data:`mo_num` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`perturb_buffer_by_mono_dummy` - * :c:func:`perturb_buffer_dummy` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`i_h_psi_minilist` - - -.. c:function:: pt2_epstein_nesbet: - - - File : :file:`perturbation/pt2_equations.irp.f_template_305` - - .. code:: fortran - - subroutine pt2_epstein_nesbet (electronic_energy,det_ref,det_pert,fock_diag_tmp,c_pert,e_2_pert,H_pert_diag,Nint,ndet,N_st,minilist,idx_minilist,N_minilist) - - - Compute the standard Epstein-Nesbet perturbative first order coefficient and - second order energetic contribution for the various N_st states. - - `c_pert(i)` = $\frac{\langle i|H|\alpha \rangle}{ E_n - \langle \alpha|H|\alpha \rangle }$. - - `e_2_pert(i)` = $\frac{\langle i|H|\alpha \rangle^2}{ E_n - \langle \alpha|H|\alpha \rangle }$. - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`n_det_selectors` - * :c:data:`selection_criterion` - * :c:data:`psi_selectors` - * :c:data:`psi_selectors_size` - * :c:data:`mo_num` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`perturb_buffer_by_mono_epstein_nesbet` - * :c:func:`perturb_buffer_epstein_nesbet` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`i_h_psi_minilist` - - -.. c:function:: pt2_epstein_nesbet_2x2: - - - File : :file:`perturbation/pt2_equations.irp.f_template_305` - - .. code:: fortran - - subroutine pt2_epstein_nesbet_2x2 (electronic_energy,det_ref,det_pert,fock_diag_tmp,c_pert,e_2_pert,H_pert_diag,Nint,ndet,N_st,minilist,idx_minilist,N_minilist) - - - Computes the Epstein-Nesbet 2x2 diagonalization coefficient and energetic contribution - for the various N_st states. - - `e_2_pert(i)` = $\frac{1}{2} ( \langle \alpha|H|\alpha \rangle - E_n) - \sqrt{ (\langle \alpha|H|\alpha \rangle - E_n)^2 + 4 \langle i|H|\alpha \rangle^2 }$. - - `c_pert(i)` = `e_2_pert(i)` $\times \frac{1}{ \langle i|H|\alpha \rangle}$. - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`n_det_selectors` - * :c:data:`psi_selectors` - * :c:data:`psi_selectors_size` - * :c:data:`mo_num` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`perturb_buffer_by_mono_epstein_nesbet_2x2` - * :c:func:`perturb_buffer_epstein_nesbet_2x2` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`i_h_psi` - - -.. c:function:: pt2_epstein_nesbet_2x2_no_ci_diag: - - - File : :file:`perturbation/pt2_equations.irp.f_template_305` - - .. code:: fortran - - subroutine pt2_epstein_nesbet_2x2_no_ci_diag(electronic_energy,det_ref,det_pert,fock_diag_tmp,c_pert,e_2_pert,H_pert_diag,Nint,ndet,N_st,minilist,idx_minilist,N_minilist) - - - compute the Epstein-Nesbet 2x2 diagonalization coefficient and energetic contribution - - for the various N_st states. - - e_2_pert(i) = 0.5 * (( - E(i) ) - sqrt( ( - E(i)) ^2 + 4 ^2 ) - - c_pert(i) = e_2_pert(i)/ - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`n_det_selectors` - * :c:data:`psi_selectors` - * :c:data:`psi_selectors_size` - * :c:data:`psi_energy` - * :c:data:`mo_num` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`perturb_buffer_by_mono_epstein_nesbet_2x2_no_ci_diag` - * :c:func:`perturb_buffer_epstein_nesbet_2x2_no_ci_diag` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`i_h_psi` - - -.. c:function:: pt2_moller_plesset: - - - File : :file:`perturbation/pt2_equations.irp.f_template_305` - - .. code:: fortran - - subroutine pt2_moller_plesset (electronic_energy,det_ref,det_pert,fock_diag_tmp,c_pert,e_2_pert,H_pert_diag,Nint,ndet,N_st,minilist,idx_minilist,N_minilist) - - - Computes the standard Moller-Plesset perturbative first order coefficient and second - order energetic contribution for the various N_st states. - - `c_pert(i)` = $\frac{\langle i|H|\alpha \rangle}{\text{difference of orbital energies}}$. - - `e_2_pert(i)` = $\frac{\langle i|H|\alpha \rangle^2}{\text{difference of orbital energies}}$. - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ref_bitmask` - * :c:data:`psi_selectors_size` - * :c:data:`psi_selectors` - * :c:data:`mo_num` - * :c:data:`n_det_selectors` - * :c:data:`fock_matrix_mo` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`perturb_buffer_by_mono_moller_plesset` - * :c:func:`perturb_buffer_moller_plesset` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`decode_exc` - * :c:func:`get_excitation` - * :c:func:`i_h_psi_minilist` - - -.. c:function:: pt2_qdpt: - - - File : :file:`perturbation/pt2_equations.irp.f_template_305` - - .. code:: fortran - - subroutine pt2_qdpt (electronic_energy,det_ref,det_pert,fock_diag_tmp,c_pert,e_2_pert,H_pert_diag,Nint,ndet,N_st,minilist,idx_minilist,N_minilist) - - - Computes the QDPT first order coefficient and second order energetic contribution - for the various N_st states. - - `c_pert(i)` = $\frac{\langle i|H|\alpha \rangle}{\langle i|H|i \rangle - \langle \alpha|H|\alpha \rangle}$. - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`n_det_selectors` - * :c:data:`selection_criterion` - * :c:data:`psi_selectors` - * :c:data:`psi_selectors_size` - * :c:data:`mo_num` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`perturb_buffer_by_mono_qdpt` - * :c:func:`perturb_buffer_qdpt` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`get_excitation_degree` - * :c:func:`i_h_j` - * :c:func:`i_h_psi_minilist` - - -.. c:function:: remove_small_contributions: - - - File : :file:`perturbation/selection.irp.f` - - .. code:: fortran - - subroutine remove_small_contributions - - - Remove determinants with small contributions. N_states is assumed to be - provided. - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`psi_coef` - * :c:data:`selection_criterion` - * :c:data:`n_states` - * :c:data:`n_det` - * :c:data:`psi_det_size` - * :c:data:`n_det_generators` - * :c:data:`n_int` - * :c:data:`psi_det_sorted` - * :c:data:`psi_det` - * :c:data:`psi_det_sorted` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`diagonalize_ci` - * :c:func:`i_h_psi` - * :c:func:`write_int` - - Touches: - - .. hlist:: - :columns: 3 - - * :c:data:`ci_electronic_energy` - * :c:data:`ci_electronic_energy` - * :c:data:`ci_energy` - * :c:data:`ci_electronic_energy` - * :c:data:`n_det` - * :c:data:`psi_coef` - * :c:data:`psi_det` - diff --git a/docs/source/modules/pseudo.rst b/docs/source/modules/pseudo.rst deleted file mode 100644 index 8a48aa9f..00000000 --- a/docs/source/modules/pseudo.rst +++ /dev/null @@ -1,94 +0,0 @@ -.. _module_pseudo: - -.. program:: pseudo - -.. default-role:: option - -====== -pseudo -====== - -This module defines the |EZFIO| parameters of the effective core potentials. - - - -EZFIO parameters ----------------- - -.. option:: nucl_charge_remove - - Nuclear charges removed per atom - - -.. option:: pseudo_klocmax - - Maximum value of k for the local component - - -.. option:: pseudo_n_k - - Number of gaussians in the local component - - -.. option:: pseudo_v_k - - Coefficients in the local component - - -.. option:: pseudo_dz_k - - Exponents in the local component - - -.. option:: pseudo_lmax - - Maximum angular momentum - - -.. option:: pseudo_kmax - - Maximum number of functions in the non-local component - - -.. option:: pseudo_n_kl - - Number of functions in the non-local component - - -.. option:: pseudo_v_kl - - Coefficients in the non-local component - - -.. option:: pseudo_dz_kl - - Exponents in the non-local component - - -.. option:: do_pseudo - - If `True`, pseudo-potentials are used. - - Default: False - -.. option:: pseudo_grid_size - - Nb of points of the grid for the QMC interfaces - - Default: 1000 - -.. option:: pseudo_grid_rmax - - R_max of the QMC grid - - Default: 10.0 - -.. option:: ao_pseudo_grid - - Grid for the QMC interface - - -.. option:: mo_pseudo_grid - - Grid for the QMC interface - diff --git a/docs/source/modules/psiref_cas.rst b/docs/source/modules/psiref_cas.rst deleted file mode 100644 index c57198fe..00000000 --- a/docs/source/modules/psiref_cas.rst +++ /dev/null @@ -1,14 +0,0 @@ -.. _module_psiref_cas: - -.. program:: psiref_cas - -.. default-role:: option - -========== -psiref_cas -========== - -Reference wave function is defined as a |CAS| wave function. -This module is required for |CAS-SD|, |MRPT| or |MRCC|. - - diff --git a/docs/source/modules/psiref_utils.rst b/docs/source/modules/psiref_utils.rst deleted file mode 100644 index 541fc2c4..00000000 --- a/docs/source/modules/psiref_utils.rst +++ /dev/null @@ -1,16 +0,0 @@ -.. _module_psiref_utils: - -.. program:: psiref_utils - -.. default-role:: option - -============ -psiref_utils -============ - - -Utilities related to the use of a reference wave function. This module -needs to be loaded with any `psi_ref_*` module. - - - diff --git a/docs/source/modules/scf_utils.rst b/docs/source/modules/scf_utils.rst deleted file mode 100644 index 5b06d6d0..00000000 --- a/docs/source/modules/scf_utils.rst +++ /dev/null @@ -1,795 +0,0 @@ -.. _module_scf_utils: - -.. program:: scf_utils - -.. default-role:: option - -========= -scf_utils -========= - - - -The scf_utils module is an abstract module which contains the basics to perform *Restricted* SCF calculations (the -spatial part of the |MOs| is common for alpha and beta spinorbitals) based on a single-determinant wave function. - -This module does not produce any executable *and must not do*, but instead it contains everything one needs to perform an orbital optimization based on an Fock matrix. -The ``scf_utils`` module is meant to be included in the :file:`NEED` of the various single determinant SCF procedures, such as ``hartree_fock`` or ``kohn_sham``, where a specific definition of the Fock matrix is given (see :file:`hartree_fock fock_matrix_hf.irp.f` for an example). - -All SCF programs perform the following actions: - - -#. Compute/Read all the one- and two-electron integrals, and store them in memory - -#. Check in the |EZFIO| database if there is a set of |MOs|. If there is, it - will read them as initial guess. Otherwise, it will create a guess. -#. Perform the |SCF| iterations based on the definition of the Fock matrix - - -The main keywords/options are: - -* :option:`scf_utils thresh_scf` -* :option:`scf_utils level_shift` - -At each iteration, the |MOs| are saved in the |EZFIO| database. Hence, if the calculation -crashes for any unexpected reason, the calculation can be restarted by running again -the |SCF| with the same |EZFIO| database. - -The `DIIS`_ algorithm is implemented, as well as the `level-shifting`_ method. -If the |SCF| does not converge, try again with a higher value of :option:`level_shift`. - -To start a calculation from scratch, the simplest way is to remove the -``mo_basis`` directory from the |EZFIO| database, and run the |SCF| again. - -.. _DIIS: https://en.wikipedia.org/w/index.php?title=DIIS -.. _level-shifting: https://doi.org/10.1002/qua.560070407 - - - - -EZFIO parameters ----------------- - -.. option:: max_dim_diis - - Maximum size of the DIIS extrapolation procedure - - Default: 15 - -.. option:: threshold_diis - - Threshold on the convergence of the DIIS error vector during a Hartree-Fock calculation. If 0. is chosen, the square root of thresh_scf will be used. - - Default: 0. - -.. option:: thresh_scf - - Threshold on the convergence of the Hartree Fock energy. - - Default: 1.e-10 - -.. option:: n_it_scf_max - - Maximum number of SCF iterations - - Default: 500 - -.. option:: level_shift - - Energy shift on the virtual MOs to improve SCF convergence - - Default: 0. - -.. option:: scf_algorithm - - Type of SCF algorithm used. Possible choices are [ Simple | DIIS] - - Default: DIIS - -.. option:: mo_guess_type - - Initial MO guess. Can be [ Huckel | HCore ] - - Default: Huckel - -.. option:: energy - - Calculated HF energy - - -.. option:: frozen_orb_scf - - If true, leave untouched all the orbitals defined as core and optimize all the orbitals defined as active with qp_set_mo_class - - Default: False - - -Providers ---------- - -.. c:var:: eigenvalues_fock_matrix_ao - - - File : :file:`scf_utils/diis.irp.f` - - .. code:: fortran - - double precision, allocatable :: eigenvalues_fock_matrix_ao (AO_num) - double precision, allocatable :: eigenvectors_fock_matrix_ao (AO_num,AO_num) - - - Eigenvalues and eigenvectors of the Fock matrix over the AO basis - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`fock_matrix_ao` - * :c:data:`s_half_inv` - - - -.. c:var:: eigenvectors_fock_matrix_ao - - - File : :file:`scf_utils/diis.irp.f` - - .. code:: fortran - - double precision, allocatable :: eigenvalues_fock_matrix_ao (AO_num) - double precision, allocatable :: eigenvectors_fock_matrix_ao (AO_num,AO_num) - - - Eigenvalues and eigenvectors of the Fock matrix over the AO basis - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`fock_matrix_ao` - * :c:data:`s_half_inv` - - - -.. c:var:: eigenvectors_fock_matrix_mo - - - File : :file:`scf_utils/diagonalize_fock.irp.f` - - .. code:: fortran - - double precision, allocatable :: eigenvectors_fock_matrix_mo (ao_num,mo_num) - - - Eigenvector of the Fock matrix in the MO basis obtained with level shift. - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`elec_alpha_num` - * :c:data:`elec_beta_num` - * :c:data:`fock_matrix_mo` - * :c:data:`frozen_orb_scf` - * :c:data:`level_shift` - * :c:data:`list_inact` - * :c:data:`mo_coef` - * :c:data:`mo_num` - * :c:data:`n_core_orb` - - - -.. c:function:: extrapolate_fock_matrix: - - - File : :file:`scf_utils/roothaan_hall_scf.irp.f` - - .. code:: fortran - - subroutine extrapolate_Fock_matrix( & - error_matrix_DIIS,Fock_matrix_DIIS, & - Fock_matrix_AO_,size_Fock_matrix_AO, & - iteration_SCF,dim_DIIS & -) - - - Compute the extrapolated Fock matrix using the DIIS procedure - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`max_dim_diis` - * :c:data:`ao_num` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`roothaan_hall_scf` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`dgemm` - * :c:func:`dsysvx` - - -.. c:var:: fock_matrix_ao - - - File : :file:`scf_utils/fock_matrix.irp.f` - - .. code:: fortran - - double precision, allocatable :: fock_matrix_ao (ao_num,ao_num) - - - Fock matrix in AO basis set - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`elec_alpha_num` - * :c:data:`elec_beta_num` - * :c:data:`fock_matrix_ao_alpha` - * :c:data:`fock_matrix_mo` - * :c:data:`frozen_orb_scf` - * :c:data:`level_shift` - * :c:data:`mo_num` - * :c:data:`s_mo_coef` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`eigenvalues_fock_matrix_ao` - * :c:data:`fps_spf_matrix_ao` - - -.. c:var:: fock_matrix_diag_mo - - - File : :file:`scf_utils/fock_matrix.irp.f` - - .. code:: fortran - - double precision, allocatable :: fock_matrix_mo (mo_num,mo_num) - double precision, allocatable :: fock_matrix_diag_mo (mo_num) - - - Fock matrix on the MO basis. - For open shells, the ROHF Fock Matrix is :: - - | F-K | F + K/2 | F | - |---------------------------------| - | F + K/2 | F | F - K/2 | - |---------------------------------| - | F | F - K/2 | F + K | - - - F = 1/2 (Fa + Fb) - - K = Fb - Fa - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`elec_alpha_num` - * :c:data:`elec_beta_num` - * :c:data:`fock_matrix_mo_alpha` - * :c:data:`fock_matrix_mo_beta` - * :c:data:`frozen_orb_scf` - * :c:data:`list_inact` - * :c:data:`mo_num` - * :c:data:`n_core_orb` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`eigenvectors_fock_matrix_mo` - * :c:data:`fock_matrix_ao` - - -.. c:var:: fock_matrix_mo - - - File : :file:`scf_utils/fock_matrix.irp.f` - - .. code:: fortran - - double precision, allocatable :: fock_matrix_mo (mo_num,mo_num) - double precision, allocatable :: fock_matrix_diag_mo (mo_num) - - - Fock matrix on the MO basis. - For open shells, the ROHF Fock Matrix is :: - - | F-K | F + K/2 | F | - |---------------------------------| - | F + K/2 | F | F - K/2 | - |---------------------------------| - | F | F - K/2 | F + K | - - - F = 1/2 (Fa + Fb) - - K = Fb - Fa - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`elec_alpha_num` - * :c:data:`elec_beta_num` - * :c:data:`fock_matrix_mo_alpha` - * :c:data:`fock_matrix_mo_beta` - * :c:data:`frozen_orb_scf` - * :c:data:`list_inact` - * :c:data:`mo_num` - * :c:data:`n_core_orb` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`eigenvectors_fock_matrix_mo` - * :c:data:`fock_matrix_ao` - - -.. c:var:: fock_matrix_mo_alpha - - - File : :file:`scf_utils/fock_matrix.irp.f` - - .. code:: fortran - - double precision, allocatable :: fock_matrix_mo_alpha (mo_num,mo_num) - - - Fock matrix on the MO basis - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`fock_matrix_ao_alpha` - * :c:data:`mo_coef` - * :c:data:`mo_num` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`fock_matrix_mo` - - -.. c:var:: fock_matrix_mo_beta - - - File : :file:`scf_utils/fock_matrix.irp.f` - - .. code:: fortran - - double precision, allocatable :: fock_matrix_mo_beta (mo_num,mo_num) - - - Fock matrix on the MO basis - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`fock_matrix_ao_alpha` - * :c:data:`mo_coef` - * :c:data:`mo_num` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`fock_matrix_mo` - - -.. c:var:: fps_spf_matrix_ao - - - File : :file:`scf_utils/diis.irp.f` - - .. code:: fortran - - double precision, allocatable :: fps_spf_matrix_ao (AO_num,AO_num) - - - Commutator FPS - SPF - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`ao_overlap` - * :c:data:`fock_matrix_ao` - * :c:data:`scf_density_matrix_ao` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`fps_spf_matrix_mo` - - -.. c:var:: fps_spf_matrix_mo - - - File : :file:`scf_utils/diis.irp.f` - - .. code:: fortran - - double precision, allocatable :: fps_spf_matrix_mo (mo_num,mo_num) - - - Commutator FPS - SPF in MO basis - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`fps_spf_matrix_ao` - * :c:data:`mo_coef` - * :c:data:`mo_num` - - - -.. c:var:: scf_density_matrix_ao - - - File : :file:`scf_utils/scf_density_matrix_ao.irp.f` - - .. code:: fortran - - double precision, allocatable :: scf_density_matrix_ao (ao_num,ao_num) - - - S^{-1}.P.S^{-1} where P = C.C^t - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`elec_alpha_num` - * :c:data:`elec_beta_num` - * :c:data:`scf_density_matrix_ao_alpha` - * :c:data:`scf_density_matrix_ao_beta` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`fps_spf_matrix_ao` - - -.. c:var:: scf_density_matrix_ao_alpha - - - File : :file:`scf_utils/scf_density_matrix_ao.irp.f` - - .. code:: fortran - - double precision, allocatable :: scf_density_matrix_ao_alpha (ao_num,ao_num) - - - S^{-1}.P_alpha.S^{-1} - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`elec_alpha_num` - * :c:data:`mo_coef` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_two_e_integral_alpha` - * :c:data:`hf_energy` - * :c:data:`scf_density_matrix_ao` - * :c:data:`scf_energy` - - -.. c:var:: scf_density_matrix_ao_beta - - - File : :file:`scf_utils/scf_density_matrix_ao.irp.f` - - .. code:: fortran - - double precision, allocatable :: scf_density_matrix_ao_beta (ao_num,ao_num) - - - S^{-1}.P_beta.S^{-1} - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`elec_beta_num` - * :c:data:`mo_coef` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_two_e_integral_alpha` - * :c:data:`hf_energy` - * :c:data:`scf_density_matrix_ao` - * :c:data:`scf_energy` - - -.. c:var:: scf_energy - - - File : :file:`scf_utils/fock_matrix.irp.f` - - .. code:: fortran - - double precision :: scf_energy - - - Hartree-Fock energy - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`ao_one_e_integrals` - * :c:data:`extra_e_contrib_density` - * :c:data:`fock_matrix_ao_alpha` - * :c:data:`nuclear_repulsion` - * :c:data:`scf_density_matrix_ao_alpha` - * :c:data:`scf_density_matrix_ao_beta` - - - -.. c:var:: threshold_diis_nonzero - - - File : :file:`scf_utils/diis.irp.f` - - .. code:: fortran - - double precision :: threshold_diis_nonzero - - - If threshold_DIIS is zero, choose sqrt(thresh_scf) - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`thresh_scf` - * :c:data:`threshold_diis` - - - - -Subroutines / functions ------------------------ - -.. c:function:: damping_scf: - - - File : :file:`scf_utils/damping_scf.irp.f` - - .. code:: fortran - - subroutine damping_SCF - - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`mo_coef` - * :c:data:`eigenvectors_fock_matrix_mo` - * :c:data:`scf_energy` - * :c:data:`scf_density_matrix_ao_beta` - * :c:data:`fock_matrix_mo` - * :c:data:`ao_num` - * :c:data:`scf_density_matrix_ao_alpha` - * :c:data:`fock_matrix_ao` - * :c:data:`mo_label` - * :c:data:`n_it_scf_max` - * :c:data:`thresh_scf` - * :c:data:`frozen_orb_scf` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`ezfio_set_hartree_fock_energy` - * :c:func:`initialize_mo_coef_begin_iteration` - * :c:func:`mo_as_eigvectors_of_mo_matrix` - * :c:func:`reorder_core_orb` - * :c:func:`save_mos` - * :c:func:`write_double` - * :c:func:`write_time` - - Touches: - - .. hlist:: - :columns: 3 - - * :c:data:`scf_density_matrix_ao_alpha` - * :c:data:`scf_density_matrix_ao_beta` - * :c:data:`mo_coef` - - -.. c:function:: huckel_guess: - - - File : :file:`scf_utils/huckel.irp.f` - - .. code:: fortran - - subroutine huckel_guess - - - Build the MOs using the extended Huckel model - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_one_e_integrals` - * :c:data:`mo_coef` - * :c:data:`eigenvectors_fock_matrix_mo` - * :c:data:`ao_overlap` - * :c:data:`ao_num` - * :c:data:`ao_two_e_integral_alpha` - * :c:data:`fock_matrix_ao_alpha` - * :c:data:`fock_matrix_ao_alpha` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`create_guess` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`save_mos` - - Touches: - - .. hlist:: - :columns: 3 - - * :c:data:`fock_matrix_ao_alpha` - * :c:data:`fock_matrix_ao_alpha` - * :c:data:`mo_coef` - - -.. c:function:: roothaan_hall_scf: - - - File : :file:`scf_utils/roothaan_hall_scf.irp.f` - - .. code:: fortran - - subroutine Roothaan_Hall_SCF - - - Roothaan-Hall algorithm for SCF Hartree-Fock calculation - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`max_dim_diis` - * :c:data:`mo_occ` - * :c:data:`ao_md5` - * :c:data:`mo_coef` - * :c:data:`level_shift` - * :c:data:`fps_spf_matrix_mo` - * :c:data:`eigenvectors_fock_matrix_mo` - * :c:data:`scf_energy` - * :c:data:`mo_num` - * :c:data:`thresh_scf` - * :c:data:`scf_algorithm` - * :c:data:`fock_matrix_mo` - * :c:data:`ao_num` - * :c:data:`fock_matrix_ao` - * :c:data:`mo_label` - * :c:data:`n_it_scf_max` - * :c:data:`threshold_diis_nonzero` - * :c:data:`frozen_orb_scf` - * :c:data:`fock_matrix_ao_alpha` - * :c:data:`fock_matrix_ao_alpha` - * :c:data:`fps_spf_matrix_ao` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`run` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`extrapolate_fock_matrix` - * :c:func:`initialize_mo_coef_begin_iteration` - * :c:func:`mo_as_eigvectors_of_mo_matrix` - * :c:func:`reorder_core_orb` - * :c:func:`save_mos` - * :c:func:`write_double` - * :c:func:`write_time` - - Touches: - - .. hlist:: - :columns: 3 - - * :c:data:`fock_matrix_ao_alpha` - * :c:data:`fock_matrix_ao_alpha` - * :c:data:`mo_coef` - * :c:data:`level_shift` - * :c:data:`mo_coef` - diff --git a/docs/source/modules/selectors_cassd.rst b/docs/source/modules/selectors_cassd.rst deleted file mode 100644 index 57704d5c..00000000 --- a/docs/source/modules/selectors_cassd.rst +++ /dev/null @@ -1,13 +0,0 @@ -.. _module_selectors_cassd: - -.. program:: selectors_cassd - -.. default-role:: option - -=============== -selectors_cassd -=============== - -Selectors for |CAS-SD| calculations. The selectors are defined as first the -generators from :ref:`Generators_CAS`, and then the rest of the wave function. - diff --git a/docs/source/modules/selectors_full.rst b/docs/source/modules/selectors_full.rst deleted file mode 100644 index 98dd62d9..00000000 --- a/docs/source/modules/selectors_full.rst +++ /dev/null @@ -1,153 +0,0 @@ -.. _module_selectors_full: - -.. program:: selectors_full - -.. default-role:: option - -============== -selectors_full -============== - -All the determinants are possible selectors. Only the largest contributions are kept, where -a threshold is applied to the squared norm of the wave function, with the :option:`determinants -threshold_selectors` flag. - - - -Providers ---------- - -.. c:var:: n_det_selectors - - - File : :file:`selectors_full/selectors.irp.f` - - .. code:: fortran - - integer :: n_det_selectors - - - For Single reference wave functions, the number of selectors is 1 : the - Hartree-Fock determinant - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`mpi_master` - * :c:data:`n_det` - * :c:data:`n_det_generators` - * :c:data:`output_wall_time_0` - * :c:data:`psi_det_sorted` - * :c:data:`threshold_selectors` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`coef_hf_selector` - * :c:data:`exc_degree_per_selectors` - * :c:data:`psi_selectors` - * :c:data:`psi_selectors_coef_transp` - * :c:data:`psi_selectors_diag_h_mat` - * :c:data:`pt2_f` - - -.. c:var:: psi_selectors - - - File : :file:`selectors_full/selectors.irp.f` - - .. code:: fortran - - integer(bit_kind), allocatable :: psi_selectors (N_int,2,psi_selectors_size) - double precision, allocatable :: psi_selectors_coef (psi_selectors_size,N_states) - - - Determinants on which we apply for perturbation. - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`n_det_selectors` - * :c:data:`n_int` - * :c:data:`n_states` - * :c:data:`psi_det_sorted` - * :c:data:`psi_selectors_size` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`coef_hf_selector` - * :c:data:`exc_degree_per_selectors` - * :c:data:`psi_selectors_coef_transp` - * :c:data:`psi_selectors_diag_h_mat` - - -.. c:var:: psi_selectors_coef - - - File : :file:`selectors_full/selectors.irp.f` - - .. code:: fortran - - integer(bit_kind), allocatable :: psi_selectors (N_int,2,psi_selectors_size) - double precision, allocatable :: psi_selectors_coef (psi_selectors_size,N_states) - - - Determinants on which we apply for perturbation. - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`n_det_selectors` - * :c:data:`n_int` - * :c:data:`n_states` - * :c:data:`psi_det_sorted` - * :c:data:`psi_selectors_size` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`coef_hf_selector` - * :c:data:`exc_degree_per_selectors` - * :c:data:`psi_selectors_coef_transp` - * :c:data:`psi_selectors_diag_h_mat` - - -.. c:var:: threshold_selectors - - - File : :file:`selectors_full/selectors.irp.f` - - .. code:: fortran - - double precision :: threshold_selectors - - - Thresholds on selectors (fraction of the square of the norm) - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`threshold_generators` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`n_det_selectors` - diff --git a/docs/source/modules/selectors_utils.rst b/docs/source/modules/selectors_utils.rst deleted file mode 100644 index 9c4b3bd4..00000000 --- a/docs/source/modules/selectors_utils.rst +++ /dev/null @@ -1,649 +0,0 @@ -.. _module_selectors_utils: - -.. program:: selectors_utils - -.. default-role:: option - -=============== -selectors_utils -=============== - -Helper functions for selectors. - - - - -Providers ---------- - -.. c:var:: coef_hf_selector - - - File : :file:`selectors_utils/e_corr_selectors.irp.f` - - .. code:: fortran - - double precision :: coef_hf_selector - double precision :: inv_selectors_coef_hf - double precision :: inv_selectors_coef_hf_squared - double precision, allocatable :: e_corr_per_selectors (N_det_selectors) - double precision, allocatable :: i_h_hf_per_selectors (N_det_selectors) - double precision, allocatable :: delta_e_per_selector (N_det_selectors) - double precision :: e_corr_double_only - double precision :: e_corr_second_order - - - Correlation energy per determinant with respect to the Hartree-Fock determinant - for the all the double excitations in the selectors determinants. - - E_corr_per_selectors(i) = :math:`\langle D_i | H | \text{HF}\rangle c(D_i)/c(HF)` if :math:`| D_i \rangle` is a double excitation. - - E_corr_per_selectors(i) = -1000.d0 if it is not a double excitation - - coef_hf_selector = coefficient of the Hartree Fock determinant in the selectors determinants - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`big_array_coulomb_integrals` - * :c:data:`big_array_coulomb_integrals` - * :c:data:`exc_degree_per_selectors` - * :c:data:`mo_integrals_map` - * :c:data:`mo_two_e_integrals_in_map` - * :c:data:`n_det_selectors` - * :c:data:`n_int` - * :c:data:`psi_selectors` - * :c:data:`ref_bitmask` - * :c:data:`ref_bitmask_energy` - - - -.. c:var:: delta_e_per_selector - - - File : :file:`selectors_utils/e_corr_selectors.irp.f` - - .. code:: fortran - - double precision :: coef_hf_selector - double precision :: inv_selectors_coef_hf - double precision :: inv_selectors_coef_hf_squared - double precision, allocatable :: e_corr_per_selectors (N_det_selectors) - double precision, allocatable :: i_h_hf_per_selectors (N_det_selectors) - double precision, allocatable :: delta_e_per_selector (N_det_selectors) - double precision :: e_corr_double_only - double precision :: e_corr_second_order - - - Correlation energy per determinant with respect to the Hartree-Fock determinant - for the all the double excitations in the selectors determinants. - - E_corr_per_selectors(i) = :math:`\langle D_i | H | \text{HF}\rangle c(D_i)/c(HF)` if :math:`| D_i \rangle` is a double excitation. - - E_corr_per_selectors(i) = -1000.d0 if it is not a double excitation - - coef_hf_selector = coefficient of the Hartree Fock determinant in the selectors determinants - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`big_array_coulomb_integrals` - * :c:data:`big_array_coulomb_integrals` - * :c:data:`exc_degree_per_selectors` - * :c:data:`mo_integrals_map` - * :c:data:`mo_two_e_integrals_in_map` - * :c:data:`n_det_selectors` - * :c:data:`n_int` - * :c:data:`psi_selectors` - * :c:data:`ref_bitmask` - * :c:data:`ref_bitmask_energy` - - - -.. c:var:: double_index_selectors - - - File : :file:`selectors_utils/e_corr_selectors.irp.f` - - .. code:: fortran - - integer, allocatable :: exc_degree_per_selectors (N_det_selectors) - integer, allocatable :: double_index_selectors (N_det_selectors) - integer :: n_double_selectors - - - Degree of excitation respect to Hartree Fock for the wave function - for the all the selectors determinants. - - double_index_selectors = list of the index of the double excitations - - n_double_selectors = number of double excitations in the selectors determinants - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`n_det_selectors` - * :c:data:`n_int` - * :c:data:`psi_selectors` - * :c:data:`ref_bitmask` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`coef_hf_selector` - - -.. c:var:: e_corr_double_only - - - File : :file:`selectors_utils/e_corr_selectors.irp.f` - - .. code:: fortran - - double precision :: coef_hf_selector - double precision :: inv_selectors_coef_hf - double precision :: inv_selectors_coef_hf_squared - double precision, allocatable :: e_corr_per_selectors (N_det_selectors) - double precision, allocatable :: i_h_hf_per_selectors (N_det_selectors) - double precision, allocatable :: delta_e_per_selector (N_det_selectors) - double precision :: e_corr_double_only - double precision :: e_corr_second_order - - - Correlation energy per determinant with respect to the Hartree-Fock determinant - for the all the double excitations in the selectors determinants. - - E_corr_per_selectors(i) = :math:`\langle D_i | H | \text{HF}\rangle c(D_i)/c(HF)` if :math:`| D_i \rangle` is a double excitation. - - E_corr_per_selectors(i) = -1000.d0 if it is not a double excitation - - coef_hf_selector = coefficient of the Hartree Fock determinant in the selectors determinants - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`big_array_coulomb_integrals` - * :c:data:`big_array_coulomb_integrals` - * :c:data:`exc_degree_per_selectors` - * :c:data:`mo_integrals_map` - * :c:data:`mo_two_e_integrals_in_map` - * :c:data:`n_det_selectors` - * :c:data:`n_int` - * :c:data:`psi_selectors` - * :c:data:`ref_bitmask` - * :c:data:`ref_bitmask_energy` - - - -.. c:var:: e_corr_per_selectors - - - File : :file:`selectors_utils/e_corr_selectors.irp.f` - - .. code:: fortran - - double precision :: coef_hf_selector - double precision :: inv_selectors_coef_hf - double precision :: inv_selectors_coef_hf_squared - double precision, allocatable :: e_corr_per_selectors (N_det_selectors) - double precision, allocatable :: i_h_hf_per_selectors (N_det_selectors) - double precision, allocatable :: delta_e_per_selector (N_det_selectors) - double precision :: e_corr_double_only - double precision :: e_corr_second_order - - - Correlation energy per determinant with respect to the Hartree-Fock determinant - for the all the double excitations in the selectors determinants. - - E_corr_per_selectors(i) = :math:`\langle D_i | H | \text{HF}\rangle c(D_i)/c(HF)` if :math:`| D_i \rangle` is a double excitation. - - E_corr_per_selectors(i) = -1000.d0 if it is not a double excitation - - coef_hf_selector = coefficient of the Hartree Fock determinant in the selectors determinants - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`big_array_coulomb_integrals` - * :c:data:`big_array_coulomb_integrals` - * :c:data:`exc_degree_per_selectors` - * :c:data:`mo_integrals_map` - * :c:data:`mo_two_e_integrals_in_map` - * :c:data:`n_det_selectors` - * :c:data:`n_int` - * :c:data:`psi_selectors` - * :c:data:`ref_bitmask` - * :c:data:`ref_bitmask_energy` - - - -.. c:var:: e_corr_second_order - - - File : :file:`selectors_utils/e_corr_selectors.irp.f` - - .. code:: fortran - - double precision :: coef_hf_selector - double precision :: inv_selectors_coef_hf - double precision :: inv_selectors_coef_hf_squared - double precision, allocatable :: e_corr_per_selectors (N_det_selectors) - double precision, allocatable :: i_h_hf_per_selectors (N_det_selectors) - double precision, allocatable :: delta_e_per_selector (N_det_selectors) - double precision :: e_corr_double_only - double precision :: e_corr_second_order - - - Correlation energy per determinant with respect to the Hartree-Fock determinant - for the all the double excitations in the selectors determinants. - - E_corr_per_selectors(i) = :math:`\langle D_i | H | \text{HF}\rangle c(D_i)/c(HF)` if :math:`| D_i \rangle` is a double excitation. - - E_corr_per_selectors(i) = -1000.d0 if it is not a double excitation - - coef_hf_selector = coefficient of the Hartree Fock determinant in the selectors determinants - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`big_array_coulomb_integrals` - * :c:data:`big_array_coulomb_integrals` - * :c:data:`exc_degree_per_selectors` - * :c:data:`mo_integrals_map` - * :c:data:`mo_two_e_integrals_in_map` - * :c:data:`n_det_selectors` - * :c:data:`n_int` - * :c:data:`psi_selectors` - * :c:data:`ref_bitmask` - * :c:data:`ref_bitmask_energy` - - - -.. c:var:: exc_degree_per_selectors - - - File : :file:`selectors_utils/e_corr_selectors.irp.f` - - .. code:: fortran - - integer, allocatable :: exc_degree_per_selectors (N_det_selectors) - integer, allocatable :: double_index_selectors (N_det_selectors) - integer :: n_double_selectors - - - Degree of excitation respect to Hartree Fock for the wave function - for the all the selectors determinants. - - double_index_selectors = list of the index of the double excitations - - n_double_selectors = number of double excitations in the selectors determinants - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`n_det_selectors` - * :c:data:`n_int` - * :c:data:`psi_selectors` - * :c:data:`ref_bitmask` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`coef_hf_selector` - - -.. c:var:: i_h_hf_per_selectors - - - File : :file:`selectors_utils/e_corr_selectors.irp.f` - - .. code:: fortran - - double precision :: coef_hf_selector - double precision :: inv_selectors_coef_hf - double precision :: inv_selectors_coef_hf_squared - double precision, allocatable :: e_corr_per_selectors (N_det_selectors) - double precision, allocatable :: i_h_hf_per_selectors (N_det_selectors) - double precision, allocatable :: delta_e_per_selector (N_det_selectors) - double precision :: e_corr_double_only - double precision :: e_corr_second_order - - - Correlation energy per determinant with respect to the Hartree-Fock determinant - for the all the double excitations in the selectors determinants. - - E_corr_per_selectors(i) = :math:`\langle D_i | H | \text{HF}\rangle c(D_i)/c(HF)` if :math:`| D_i \rangle` is a double excitation. - - E_corr_per_selectors(i) = -1000.d0 if it is not a double excitation - - coef_hf_selector = coefficient of the Hartree Fock determinant in the selectors determinants - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`big_array_coulomb_integrals` - * :c:data:`big_array_coulomb_integrals` - * :c:data:`exc_degree_per_selectors` - * :c:data:`mo_integrals_map` - * :c:data:`mo_two_e_integrals_in_map` - * :c:data:`n_det_selectors` - * :c:data:`n_int` - * :c:data:`psi_selectors` - * :c:data:`ref_bitmask` - * :c:data:`ref_bitmask_energy` - - - -.. c:var:: inv_selectors_coef_hf - - - File : :file:`selectors_utils/e_corr_selectors.irp.f` - - .. code:: fortran - - double precision :: coef_hf_selector - double precision :: inv_selectors_coef_hf - double precision :: inv_selectors_coef_hf_squared - double precision, allocatable :: e_corr_per_selectors (N_det_selectors) - double precision, allocatable :: i_h_hf_per_selectors (N_det_selectors) - double precision, allocatable :: delta_e_per_selector (N_det_selectors) - double precision :: e_corr_double_only - double precision :: e_corr_second_order - - - Correlation energy per determinant with respect to the Hartree-Fock determinant - for the all the double excitations in the selectors determinants. - - E_corr_per_selectors(i) = :math:`\langle D_i | H | \text{HF}\rangle c(D_i)/c(HF)` if :math:`| D_i \rangle` is a double excitation. - - E_corr_per_selectors(i) = -1000.d0 if it is not a double excitation - - coef_hf_selector = coefficient of the Hartree Fock determinant in the selectors determinants - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`big_array_coulomb_integrals` - * :c:data:`big_array_coulomb_integrals` - * :c:data:`exc_degree_per_selectors` - * :c:data:`mo_integrals_map` - * :c:data:`mo_two_e_integrals_in_map` - * :c:data:`n_det_selectors` - * :c:data:`n_int` - * :c:data:`psi_selectors` - * :c:data:`ref_bitmask` - * :c:data:`ref_bitmask_energy` - - - -.. c:var:: inv_selectors_coef_hf_squared - - - File : :file:`selectors_utils/e_corr_selectors.irp.f` - - .. code:: fortran - - double precision :: coef_hf_selector - double precision :: inv_selectors_coef_hf - double precision :: inv_selectors_coef_hf_squared - double precision, allocatable :: e_corr_per_selectors (N_det_selectors) - double precision, allocatable :: i_h_hf_per_selectors (N_det_selectors) - double precision, allocatable :: delta_e_per_selector (N_det_selectors) - double precision :: e_corr_double_only - double precision :: e_corr_second_order - - - Correlation energy per determinant with respect to the Hartree-Fock determinant - for the all the double excitations in the selectors determinants. - - E_corr_per_selectors(i) = :math:`\langle D_i | H | \text{HF}\rangle c(D_i)/c(HF)` if :math:`| D_i \rangle` is a double excitation. - - E_corr_per_selectors(i) = -1000.d0 if it is not a double excitation - - coef_hf_selector = coefficient of the Hartree Fock determinant in the selectors determinants - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`big_array_coulomb_integrals` - * :c:data:`big_array_coulomb_integrals` - * :c:data:`exc_degree_per_selectors` - * :c:data:`mo_integrals_map` - * :c:data:`mo_two_e_integrals_in_map` - * :c:data:`n_det_selectors` - * :c:data:`n_int` - * :c:data:`psi_selectors` - * :c:data:`ref_bitmask` - * :c:data:`ref_bitmask_energy` - - - -.. c:var:: n_double_selectors - - - File : :file:`selectors_utils/e_corr_selectors.irp.f` - - .. code:: fortran - - integer, allocatable :: exc_degree_per_selectors (N_det_selectors) - integer, allocatable :: double_index_selectors (N_det_selectors) - integer :: n_double_selectors - - - Degree of excitation respect to Hartree Fock for the wave function - for the all the selectors determinants. - - double_index_selectors = list of the index of the double excitations - - n_double_selectors = number of double excitations in the selectors determinants - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`n_det_selectors` - * :c:data:`n_int` - * :c:data:`psi_selectors` - * :c:data:`ref_bitmask` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`coef_hf_selector` - - -.. c:var:: psi_selectors_coef_transp - - - File : :file:`selectors_utils/selectors.irp.f` - - .. code:: fortran - - double precision, allocatable :: psi_selectors_coef_transp (N_states,psi_selectors_size) - - - Transposed psi_selectors - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`n_det_selectors` - * :c:data:`n_states` - * :c:data:`psi_selectors` - * :c:data:`psi_selectors_size` - - - -.. c:var:: psi_selectors_diag_h_mat - - - File : :file:`selectors_utils/selectors.irp.f` - - .. code:: fortran - - double precision, allocatable :: psi_selectors_diag_h_mat (psi_selectors_size) - - - Diagonal elements of the H matrix for each selectors - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`elec_num` - * :c:data:`n_det_selectors` - * :c:data:`n_int` - * :c:data:`psi_selectors` - * :c:data:`psi_selectors_size` - * :c:data:`ref_bitmask` - * :c:data:`ref_bitmask_energy` - - - -.. c:var:: psi_selectors_size - - - File : :file:`selectors_utils/selectors.irp.f` - - .. code:: fortran - - integer :: psi_selectors_size - - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`psi_det_size` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`psi_selectors` - * :c:data:`psi_selectors_coef_transp` - * :c:data:`psi_selectors_diag_h_mat` - - - -Subroutines / functions ------------------------ - -.. c:function:: zmq_get_n_det_generators: - - - File : :file:`selectors_utils/zmq.irp.f_template_102` - - .. code:: fortran - - integer function zmq_get_N_det_generators(zmq_to_qp_run_socket, worker_id) - - - Get N_det_generators from the qp_run scheduler - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`n_det_generators` - * :c:data:`zmq_state` - * :c:data:`mpi_master` - - -.. c:function:: zmq_get_n_det_selectors: - - - File : :file:`selectors_utils/zmq.irp.f_template_102` - - .. code:: fortran - - integer function zmq_get_N_det_selectors(zmq_to_qp_run_socket, worker_id) - - - Get N_det_selectors from the qp_run scheduler - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`n_det_selectors` - * :c:data:`zmq_state` - * :c:data:`mpi_master` - - -.. c:function:: zmq_put_n_det_generators: - - - File : :file:`selectors_utils/zmq.irp.f_template_102` - - .. code:: fortran - - integer function zmq_put_N_det_generators(zmq_to_qp_run_socket,worker_id) - - - Put N_det_generators on the qp_run scheduler - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`n_det_generators` - * :c:data:`zmq_state` - - -.. c:function:: zmq_put_n_det_selectors: - - - File : :file:`selectors_utils/zmq.irp.f_template_102` - - .. code:: fortran - - integer function zmq_put_N_det_selectors(zmq_to_qp_run_socket,worker_id) - - - Put N_det_selectors on the qp_run scheduler - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`n_det_selectors` - * :c:data:`zmq_state` - diff --git a/docs/source/modules/single_ref_method.rst b/docs/source/modules/single_ref_method.rst deleted file mode 100644 index e0d17a00..00000000 --- a/docs/source/modules/single_ref_method.rst +++ /dev/null @@ -1,14 +0,0 @@ -.. _module_single_ref_method: - -.. program:: single_ref_method - -.. default-role:: option - -================= -single_ref_method -================= - -Include this module for single reference methods. -Using this module, the only generator determinant is the Hartree-Fock determinant. - - diff --git a/docs/source/modules/tools.rst b/docs/source/modules/tools.rst deleted file mode 100644 index dfe746cc..00000000 --- a/docs/source/modules/tools.rst +++ /dev/null @@ -1,246 +0,0 @@ -.. _module_tools: - -.. program:: tools - -.. default-role:: option - -===== -tools -===== - -Useful tools are grouped in this module. - - - -Programs --------- - - * :ref:`diagonalize_h` - * :ref:`fcidump` - * :ref:`four_idx_transform` - * :ref:`molden` - * :ref:`print_e_conv` - * :ref:`print_wf` - * :ref:`save_natorb` - * :ref:`save_one_e_dm` - * :ref:`save_ortho_mos` - * :ref:`write_integrals_erf` - -Subroutines / functions ------------------------ - -.. c:function:: routine: - - - File : :file:`write_integrals_erf.irp.f` - - .. code:: fortran - - subroutine routine - - - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`diagonalize_h` - * :c:func:`print_wf` - * :c:func:`write_integrals_erf` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`save_erf_two_e_integrals_ao` - * :c:func:`save_erf_two_e_integrals_mo` - - -.. c:function:: routine_e_conv: - - - File : :file:`print_e_conv.irp.f` - - .. code:: fortran - - subroutine routine_e_conv - - - routine called by :c:func:`print_e_conv` - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`n_states` - * :c:data:`ezfio_filename` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`print_e_conv` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`ezfio_get_iterations_energy_iterations` - * :c:func:`ezfio_get_iterations_n_det_iterations` - * :c:func:`ezfio_get_iterations_n_iter` - * :c:func:`ezfio_get_iterations_pt2_iterations` - - -.. c:function:: routine_save_one_e_dm: - - - File : :file:`save_one_e_dm.irp.f` - - .. code:: fortran - - subroutine routine_save_one_e_dm - - - routine called by :c:func:`save_one_e_dm` - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`one_e_dm_mo_alpha` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`save_one_e_dm` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`ezfio_set_aux_quantities_data_one_e_dm_alpha_mo` - * :c:func:`ezfio_set_aux_quantities_data_one_e_dm_beta_mo` - - -.. c:function:: write_ao_basis: - - - File : :file:`molden.irp.f` - - .. code:: fortran - - subroutine write_Ao_basis(i_unit_output) - - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`nucl_list_shell_aos` - * :c:data:`ao_coef` - * :c:data:`ao_num` - * :c:data:`ao_prim_num` - * :c:data:`nucl_charge` - * :c:data:`ao_l` - * :c:data:`ao_expo` - * :c:data:`element_name` - * :c:data:`nucl_num` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`molden` - - -.. c:function:: write_geometry: - - - File : :file:`molden.irp.f` - - .. code:: fortran - - subroutine write_geometry(i_unit_output) - - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`nucl_coord` - * :c:data:`nucl_charge` - * :c:data:`element_name` - * :c:data:`nucl_num` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`molden` - - -.. c:function:: write_intro_gamess: - - - File : :file:`molden.irp.f` - - .. code:: fortran - - subroutine write_intro_gamess(i_unit_output) - - - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`molden` - - -.. c:function:: write_mo_basis: - - - File : :file:`molden.irp.f` - - .. code:: fortran - - subroutine write_Mo_basis(i_unit_output) - - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`mo_num` - * :c:data:`mo_coef` - * :c:data:`ao_num` - * :c:data:`ao_l_char_space` - * :c:data:`nucl_charge` - * :c:data:`ao_nucl` - * :c:data:`element_name` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`molden` - diff --git a/docs/source/modules/utils.rst b/docs/source/modules/utils.rst deleted file mode 100644 index d2c76ba2..00000000 --- a/docs/source/modules/utils.rst +++ /dev/null @@ -1,3024 +0,0 @@ -.. _module_utils: - -.. program:: utils - -.. default-role:: option - -===== -utils -===== - -Contains general purpose utilities (sorting, maps, etc). - - - - -Providers ---------- - -.. c:var:: binom - - - File : :file:`utils/util.irp.f` - - .. code:: fortran - - double precision, allocatable :: binom (0:40,0:40) - double precision, allocatable :: binom_transp (0:40,0:40) - - - Binomial coefficients - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`binom_int` - - -.. c:var:: binom_int - - - File : :file:`utils/util.irp.f` - - .. code:: fortran - - integer*8, allocatable :: binom_int (0:40,0:40) - integer*8, allocatable :: binom_int_transp (0:40,0:40) - - - Binomial coefficients, as integers*8 - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`binom` - - - -.. c:var:: binom_int_transp - - - File : :file:`utils/util.irp.f` - - .. code:: fortran - - integer*8, allocatable :: binom_int (0:40,0:40) - integer*8, allocatable :: binom_int_transp (0:40,0:40) - - - Binomial coefficients, as integers*8 - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`binom` - - - -.. c:var:: binom_transp - - - File : :file:`utils/util.irp.f` - - .. code:: fortran - - double precision, allocatable :: binom (0:40,0:40) - double precision, allocatable :: binom_transp (0:40,0:40) - - - Binomial coefficients - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`binom_int` - - -.. c:var:: degree_max_integration_lebedev - - - File : :file:`utils/angular_integration.irp.f` - - .. code:: fortran - - integer :: degree_max_integration_lebedev - - - integrate correctly a polynom of order "degree_max_integration_lebedev" - needed for the angular integration according to LEBEDEV formulae - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`n_points_integration_angular_lebedev` - * :c:data:`theta_angular_integration_lebedev` - - -.. c:function:: dtranspose: - - - File : :file:`utils/transpose.irp.f` - - .. code:: fortran - - recursive subroutine dtranspose(A,LDA,B,LDB,d1,d2) - - - Transpose input matrix A into output matrix B - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`dtranspose` - * :c:func:`h_s2_u_0_nstates_openmp` - * :c:func:`h_s2_u_0_nstates_zmq` - * :c:func:`h_s2_u_0_two_e_nstates_openmp` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`dtranspose` - - -.. c:var:: fact_inv - - - File : :file:`utils/util.irp.f` - - .. code:: fortran - - double precision, allocatable :: fact_inv (128) - - - 1/n! - - - -.. c:function:: i2radix_sort: - - - File : :file:`utils/sort.irp.f_template_644` - - .. code:: fortran - - recursive subroutine i2radix_sort(x,iorder,isize,iradix) - - - Sort integer array x(isize) using the radix sort algorithm. - iorder in input should be (1,2,3,...,isize), and in output - contains the new order of the elements. - iradix should be -1 in input. - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`get_mo_two_e_integrals_erf_i1j1` - * :c:func:`get_mo_two_e_integrals_erf_ij` - * :c:func:`get_mo_two_e_integrals_i1j1` - * :c:func:`get_mo_two_e_integrals_ij` - * :c:func:`i2radix_sort` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`i2radix_sort` - * :c:func:`insertion_i2sort` - - -.. c:function:: i8radix_sort: - - - File : :file:`utils/sort.irp.f_template_644` - - .. code:: fortran - - recursive subroutine i8radix_sort(x,iorder,isize,iradix) - - - Sort integer array x(isize) using the radix sort algorithm. - iorder in input should be (1,2,3,...,isize), and in output - contains the new order of the elements. - iradix should be -1 in input. - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`get_mo_two_e_integrals_erf_i1j1` - * :c:func:`get_mo_two_e_integrals_erf_ij` - * :c:func:`get_mo_two_e_integrals_i1j1` - * :c:func:`get_mo_two_e_integrals_ij` - * :c:func:`i8radix_sort` - * :c:data:`psi_bilinear_matrix_transp_values` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`i8radix_sort` - * :c:func:`insertion_i8sort` - - -.. c:function:: i8radix_sort_big: - - - File : :file:`utils/sort.irp.f_template_644` - - .. code:: fortran - - recursive subroutine i8radix_sort_big(x,iorder,isize,iradix) - - - Sort integer array x(isize) using the radix sort algorithm. - iorder in input should be (1,2,3,...,isize), and in output - contains the new order of the elements. - iradix should be -1 in input. - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`i8radix_sort_big` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`i8radix_sort_big` - * :c:func:`insertion_i8sort_big` - - -.. c:var:: inv_int - - - File : :file:`utils/util.irp.f` - - .. code:: fortran - - double precision, allocatable :: inv_int (128) - - - 1/i - - - -.. c:function:: iradix_sort: - - - File : :file:`utils/sort.irp.f_template_644` - - .. code:: fortran - - recursive subroutine iradix_sort(x,iorder,isize,iradix) - - - Sort integer array x(isize) using the radix sort algorithm. - iorder in input should be (1,2,3,...,isize), and in output - contains the new order of the elements. - iradix should be -1 in input. - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`get_mo_two_e_integrals_erf_i1j1` - * :c:func:`get_mo_two_e_integrals_erf_ij` - * :c:func:`get_mo_two_e_integrals_i1j1` - * :c:func:`get_mo_two_e_integrals_ij` - * :c:func:`iradix_sort` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`insertion_isort` - * :c:func:`iradix_sort` - - -.. c:function:: iradix_sort_big: - - - File : :file:`utils/sort.irp.f_template_644` - - .. code:: fortran - - recursive subroutine iradix_sort_big(x,iorder,isize,iradix) - - - Sort integer array x(isize) using the radix sort algorithm. - iorder in input should be (1,2,3,...,isize), and in output - contains the new order of the elements. - iradix should be -1 in input. - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`iradix_sort_big` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`insertion_isort_big` - * :c:func:`iradix_sort_big` - - -.. c:var:: n_points_integration_angular_lebedev - - - File : :file:`utils/angular_integration.irp.f` - - .. code:: fortran - - integer :: n_points_integration_angular_lebedev - - - Number of points needed for the angular integral - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`degree_max_integration_lebedev` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`theta_angular_integration_lebedev` - - -.. c:var:: nproc - - - File : :file:`utils/util.irp.f` - - .. code:: fortran - - integer :: nproc - - - Number of current OpenMP threads - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_two_e_integrals_erf_in_map` - * :c:data:`ao_two_e_integrals_in_map` - * :c:data:`h_apply_buffer_allocated` - * :c:data:`n_det` - * :c:data:`nthreads_davidson` - * :c:data:`nthreads_pt2` - - -.. c:function:: overlap_gaussian_xyz: - - - File : :file:`utils/one_e_integration.irp.f` - - .. code:: fortran - - subroutine overlap_gaussian_xyz(A_center,B_center,alpha,beta,power_A,& - power_B,overlap_x,overlap_y,overlap_z,overlap,dim) - - - .. math:: - - S_x = \int (x-A_x)^{a_x} exp(-\alpha(x-A_x)^2) (x-B_x)^{b_x} exp(-beta(x-B_x)^2) dx \\ - S = S_x S_y S_z - - - Called by: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_coef_normalization_libint_factor` - * :c:data:`ao_coef_normalized` - * :c:data:`ao_deriv2_x` - * :c:data:`ao_deriv_1_x` - * :c:data:`ao_dipole_x` - * :c:data:`ao_overlap` - * :c:data:`ao_spread_x` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`gaussian_product_x` - * :c:func:`give_explicit_poly_and_gaussian` - - -.. c:var:: phi_angular_integration_lebedev - - - File : :file:`utils/angular_integration.irp.f` - - .. code:: fortran - - double precision, allocatable :: theta_angular_integration_lebedev (n_points_integration_angular_lebedev) - double precision, allocatable :: phi_angular_integration_lebedev (n_points_integration_angular_lebedev) - double precision, allocatable :: weights_angular_integration_lebedev (n_points_integration_angular_lebedev) - - - Theta phi values together with the weights values for the angular integration : - integral [dphi,dtheta] f(x,y,z) = 4 * pi * sum (1 where i is the basis function and psi_j is the j th eigenvector - - - Called by: - - .. hlist:: - :columns: 3 - - * :c:data:`ci_electronic_energy` - * :c:func:`davidson_diag_hjj_sjj` - * :c:func:`mo_as_eigvectors_of_mo_matrix` - * :c:data:`psi_coef_cas_diagonalized` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`dsyev` - - -.. c:function:: lapack_diagd: - - - File : :file:`utils/linear_algebra.irp.f` - - .. code:: fortran - - subroutine lapack_diagd(eigvalues,eigvectors,H,nmax,n) - - - Diagonalize matrix H - - H is untouched between input and ouptut - - eigevalues(i) = ith lowest eigenvalue of the H matrix - - eigvectors(i,j) = where i is the basis function and psi_j is the j th eigenvector - - - Called by: - - .. hlist:: - :columns: 3 - - * :c:data:`inertia_tensor_eigenvectors` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`dsyevd` - - -.. c:function:: logfact: - - - File : :file:`utils/util.irp.f` - - .. code:: fortran - - double precision function logfact(n) - - - n! - - -.. c:function:: lowercase: - - - File : :file:`utils/util.irp.f` - - .. code:: fortran - - subroutine lowercase(txt,n) - - - Transform to lower case - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`end_parallel_job` - * :c:func:`new_parallel_job` - - -.. c:function:: map_load_from_disk: - - - File : :file:`utils/map_functions.irp.f` - - .. code:: fortran - - subroutine map_load_from_disk(filename,map) - - - - Called by: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_two_e_integrals_erf_in_map` - * :c:data:`ao_two_e_integrals_in_map` - * :c:data:`mo_two_e_integrals_erf_in_map` - * :c:data:`mo_two_e_integrals_in_map` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`c_f_pointer` - * :c:func:`mmap` - - -.. c:function:: map_save_to_disk: - - - File : :file:`utils/map_functions.irp.f` - - .. code:: fortran - - subroutine map_save_to_disk(filename,map) - - - - Called by: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_two_e_integrals_erf_in_map` - * :c:data:`ao_two_e_integrals_in_map` - * :c:data:`mo_two_e_integrals_erf_in_map` - * :c:data:`mo_two_e_integrals_in_map` - * :c:func:`save_erf_two_e_integrals_ao` - * :c:func:`save_erf_two_e_integrals_mo` - * :c:func:`save_erf_two_e_ints_ao_into_ints_ao` - * :c:func:`save_erf_two_e_ints_mo_into_ints_mo` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`c_f_pointer` - * :c:func:`map_sort` - * :c:func:`mmap` - * :c:func:`msync` - - -.. c:function:: memory_of_double: - - - File : :file:`utils/memory.irp.f` - - .. code:: fortran - - double precision function memory_of_double(n) - - - Computes the memory required for n double precision elements in gigabytes. - - -.. c:function:: memory_of_int: - - - File : :file:`utils/memory.irp.f` - - .. code:: fortran - - double precision function memory_of_int(n) - - - Computes the memory required for n double precision elements in gigabytes. - - -.. c:function:: multiply_poly: - - - File : :file:`utils/integration.irp.f` - - .. code:: fortran - - subroutine multiply_poly(b,nb,c,nc,d,nd) - - - Multiply two polynomials - D(t) =! D(t) +( B(t)*C(t)) - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`general_primitive_integral` - * :c:func:`general_primitive_integral_erf` - * :c:func:`give_explicit_poly_and_gaussian` - * :c:func:`give_explicit_poly_and_gaussian_x` - * :c:func:`give_polynomial_mult_center_one_e` - * :c:func:`give_polynomial_mult_center_one_e_erf` - * :c:func:`give_polynomial_mult_center_one_e_erf_opt` - * :c:func:`i_x1_pol_mult_a1` - * :c:func:`i_x1_pol_mult_a2` - * :c:func:`i_x1_pol_mult_one_e` - * :c:func:`i_x1_pol_mult_recurs` - * :c:func:`i_x2_pol_mult` - * :c:func:`i_x2_pol_mult_one_e` - - -.. c:function:: normalize: - - - File : :file:`utils/util.irp.f` - - .. code:: fortran - - subroutine normalize(u,sze) - - - Normalizes vector u - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`copy_h_apply_buffer_to_wf` - * :c:func:`davidson_diag_hjj_sjj` - * :c:func:`save_wavefunction_general` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`dscal` - - -.. c:function:: ortho_canonical: - - - File : :file:`utils/linear_algebra.irp.f` - - .. code:: fortran - - subroutine ortho_canonical(overlap,LDA,N,C,LDC,m) - - - Compute C_new=C_old.U.s^-1/2 canonical orthogonalization. - - overlap : overlap matrix - - LDA : leftmost dimension of overlap array - - N : Overlap matrix is NxN (array is (LDA,N) ) - - C : Coefficients of the vectors to orthogonalize. On exit, - orthogonal vectors - - LDC : leftmost dimension of C - - m : Coefficients matrix is MxN, ( array is (LDC,N) ) - - - Called by: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_ortho_canonical_coef` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`dgemm` - * :c:func:`svd` - - -.. c:function:: ortho_lowdin: - - - File : :file:`utils/linear_algebra.irp.f` - - .. code:: fortran - - subroutine ortho_lowdin(overlap,LDA,N,C,LDC,m) - - - Compute C_new=C_old.S^-1/2 orthogonalization. - - overlap : overlap matrix - - LDA : leftmost dimension of overlap array - - N : Overlap matrix is NxN (array is (LDA,N) ) - - C : Coefficients of the vectors to orthogonalize. On exit, - orthogonal vectors - - LDC : leftmost dimension of C - - M : Coefficients matrix is MxN, ( array is (LDC,N) ) - - - Called by: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_ortho_lowdin_coef` - * :c:func:`orthonormalize_mos` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`dgemm` - * :c:func:`svd` - - -.. c:function:: ortho_qr: - - - File : :file:`utils/linear_algebra.irp.f` - - .. code:: fortran - - subroutine ortho_qr(A,LDA,m,n) - - - Orthogonalization using Q.R factorization - - A : matrix to orthogonalize - - LDA : leftmost dimension of A - - n : Number of rows of A - - m : Number of columns of A - - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`davidson_diag_hjj_sjj` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`dgeqrf` - * :c:func:`dorgqr` - - -.. c:function:: ortho_qr_unblocked: - - - File : :file:`utils/linear_algebra.irp.f` - - .. code:: fortran - - subroutine ortho_qr_unblocked(A,LDA,m,n) - - - Orthogonalization using Q.R factorization - - A : matrix to orthogonalize - - LDA : leftmost dimension of A - - n : Number of rows of A - - m : Number of columns of A - - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`dgeqr2` - * :c:func:`dorg2r` - - -.. c:function:: overlap_gaussian_x: - - - File : :file:`utils/one_e_integration.irp.f` - - .. code:: fortran - - double precision function overlap_gaussian_x(A_center,B_center,alpha,beta,power_A,power_B,dim) - - - .. math:: - - \sum_{-infty}^{+infty} (x-A_x)^ax (x-B_x)^bx exp(-alpha(x-A_x)^2) exp(-beta(x-B_X)^2) dx - - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`give_explicit_poly_and_gaussian_x` - - -.. c:function:: overlap_x_abs: - - - File : :file:`utils/one_e_integration.irp.f` - - .. code:: fortran - - subroutine overlap_x_abs(A_center,B_center,alpha,beta,power_A,power_B,overlap_x,lower_exp_val,dx,nx) - - - .. math :: - - \int_{-infty}^{+infty} (x-A_center)^(power_A) * (x-B_center)^power_B * exp(-alpha(x-A_center)^2) * exp(-beta(x-B_center)^2) dx - - - Called by: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_overlap_abs` - - -.. c:function:: print_memory_usage: - - - File : :file:`utils/memory.irp.f` - - .. code:: fortran - - subroutine print_memory_usage() - - - Prints the memory usage in the output - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`write_time` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`resident_memory` - * :c:func:`total_memory` - - -.. c:function:: quick_dsort: - - - File : :file:`utils/sort.irp.f_template_261` - - .. code:: fortran - - subroutine quick_dsort(x, iorder, isize) - - - Sort array x(isize) using the quicksort algorithm. - iorder in input should be (1,2,3,...,isize), and in output - contains the new order of the elements. - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`nproc` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`dsort` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`rec_d_quicksort` - - -.. c:function:: quick_i2sort: - - - File : :file:`utils/sort.irp.f_template_261` - - .. code:: fortran - - subroutine quick_i2sort(x, iorder, isize) - - - Sort array x(isize) using the quicksort algorithm. - iorder in input should be (1,2,3,...,isize), and in output - contains the new order of the elements. - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`nproc` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`i2sort` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`rec_i2_quicksort` - - -.. c:function:: quick_i8sort: - - - File : :file:`utils/sort.irp.f_template_261` - - .. code:: fortran - - subroutine quick_i8sort(x, iorder, isize) - - - Sort array x(isize) using the quicksort algorithm. - iorder in input should be (1,2,3,...,isize), and in output - contains the new order of the elements. - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`nproc` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`i8sort` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`rec_i8_quicksort` - - -.. c:function:: quick_isort: - - - File : :file:`utils/sort.irp.f_template_261` - - .. code:: fortran - - subroutine quick_isort(x, iorder, isize) - - - Sort array x(isize) using the quicksort algorithm. - iorder in input should be (1,2,3,...,isize), and in output - contains the new order of the elements. - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`nproc` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`isort` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`rec_i_quicksort` - - -.. c:function:: quick_sort: - - - File : :file:`utils/sort.irp.f_template_261` - - .. code:: fortran - - subroutine quick_sort(x, iorder, isize) - - - Sort array x(isize) using the quicksort algorithm. - iorder in input should be (1,2,3,...,isize), and in output - contains the new order of the elements. - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`nproc` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`sort` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`rec__quicksort` - - -.. c:function:: recentered_poly2: - - - File : :file:`utils/integration.irp.f` - - .. code:: fortran - - subroutine recentered_poly2(P_new,x_A,x_P,a,P_new2,x_B,x_Q,b) - - - Recenter two polynomials - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`binom` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`give_explicit_poly_and_gaussian` - * :c:func:`give_explicit_poly_and_gaussian_x` - - -.. c:function:: resident_memory: - - - File : :file:`utils/memory.irp.f` - - .. code:: fortran - - subroutine resident_memory(value) - - - Returns the current used memory in gigabytes used by the current process. - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`file_lock` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`check_mem` - * :c:func:`davidson_diag_hjj_sjj` - * :c:func:`print_memory_usage` - * :c:func:`zmq_pt2` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`omp_set_lock` - * :c:func:`omp_unset_lock` - - -.. c:function:: rint: - - - File : :file:`utils/integration.irp.f` - - .. code:: fortran - - double precision function rint(n,rho) - - - .. math:: - - \int_0^1 dx \exp(-p x^2) x^n - - - -.. c:function:: rint1: - - - File : :file:`utils/integration.irp.f` - - .. code:: fortran - - double precision function rint1(n,rho) - - - Standard version of rint - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`inv_int` - * :c:data:`fact_inv` - - -.. c:function:: rint_large_n: - - - File : :file:`utils/integration.irp.f` - - .. code:: fortran - - double precision function rint_large_n(n,rho) - - - Version of rint for large values of n - - -.. c:function:: rint_sum: - - - File : :file:`utils/integration.irp.f` - - .. code:: fortran - - double precision function rint_sum(n_pt_out,rho,d1) - - - Needed for the calculation of two-electron integrals. - - -.. c:function:: rinteg: - - - File : :file:`utils/need.irp.f` - - .. code:: fortran - - double precision function rinteg(n,u) - - - - -.. c:function:: rintgauss: - - - File : :file:`utils/need.irp.f` - - .. code:: fortran - - double precision function rintgauss(n) - - - - -.. c:function:: sabpartial: - - - File : :file:`utils/need.irp.f` - - .. code:: fortran - - double precision function SABpartial(zA,zB,A,B,nA,nB,gamA,gamB,l) - - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`binom` - - -.. c:function:: set_order: - - - File : :file:`utils/sort.irp.f_template_347` - - .. code:: fortran - - subroutine set_order(x,iorder,isize) - - - array A has already been sorted, and iorder has contains the new order of - elements of A. This subroutine changes the order of x to match the new order of A. - - -.. c:function:: set_order_big: - - - File : :file:`utils/sort.irp.f_template_412` - - .. code:: fortran - - subroutine set_order_big(x,iorder,isize) - - - array A has already been sorted, and iorder has contains the new order of - elements of A. This subroutine changes the order of x to match the new order of A. - This is a version for very large arrays where the indices need - to be in integer*8 format - - -.. c:function:: sort: - - - File : :file:`utils/sort.irp.f_template_293` - - .. code:: fortran - - subroutine sort(x,iorder,isize) - - - Sort array x(isize). - iorder in input should be (1,2,3,...,isize), and in output - contains the new order of the elements. - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`insertion_sort` - * :c:func:`quick_sort` - - -.. c:function:: sorted_dnumber: - - - File : :file:`utils/sort.irp.f_template_261` - - .. code:: fortran - - subroutine sorted_dnumber(x,isize,n) - - - Returns the number of sorted elements - - -.. c:function:: sorted_i2number: - - - File : :file:`utils/sort.irp.f_template_261` - - .. code:: fortran - - subroutine sorted_i2number(x,isize,n) - - - Returns the number of sorted elements - - -.. c:function:: sorted_i8number: - - - File : :file:`utils/sort.irp.f_template_261` - - .. code:: fortran - - subroutine sorted_i8number(x,isize,n) - - - Returns the number of sorted elements - - -.. c:function:: sorted_inumber: - - - File : :file:`utils/sort.irp.f_template_261` - - .. code:: fortran - - subroutine sorted_inumber(x,isize,n) - - - Returns the number of sorted elements - - -.. c:function:: sorted_number: - - - File : :file:`utils/sort.irp.f_template_261` - - .. code:: fortran - - subroutine sorted_number(x,isize,n) - - - Returns the number of sorted elements - - -.. c:function:: svd: - - - File : :file:`utils/linear_algebra.irp.f` - - .. code:: fortran - - subroutine svd(A,LDA,U,LDU,D,Vt,LDVt,m,n) - - - Compute A = U.D.Vt - - LDx : leftmost dimension of x - - Dimsneion of A is m x n - - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`mo_as_svd_vectors_of_mo_matrix` - * :c:func:`mo_as_svd_vectors_of_mo_matrix_eig` - * :c:func:`ortho_canonical` - * :c:func:`ortho_lowdin` - * :c:data:`s_half` - * :c:data:`s_half_inv` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`dgesvd` - - -.. c:function:: total_memory: - - - File : :file:`utils/memory.irp.f` - - .. code:: fortran - - subroutine total_memory(value) - - - Returns the current used memory in gigabytes used by the current process. - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`print_memory_usage` - - -.. c:function:: u_dot_u: - - - File : :file:`utils/util.irp.f` - - .. code:: fortran - - double precision function u_dot_u(u,sze) - - - Compute - - -.. c:function:: u_dot_v: - - - File : :file:`utils/util.irp.f` - - .. code:: fortran - - double precision function u_dot_v(u,v,sze) - - - Compute - - -.. c:function:: wall_time: - - - File : :file:`utils/util.irp.f` - - .. code:: fortran - - subroutine wall_time(t) - - - The equivalent of cpu_time, but for the wall time. - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`add_integrals_to_map` - * :c:func:`add_integrals_to_map_erf` - * :c:func:`add_integrals_to_map_no_exit_34` - * :c:func:`add_integrals_to_map_three_indices` - * :c:data:`ao_pseudo_integrals_local` - * :c:data:`ao_pseudo_integrals_non_local` - * :c:data:`ao_two_e_integrals_erf_in_map` - * :c:data:`ao_two_e_integrals_in_map` - * :c:func:`davidson_converged` - * :c:func:`davidson_diag_hjj_sjj` - * :c:data:`output_wall_time_0` - * :c:func:`pt2_collector` - * :c:func:`run_pt2_slave` - * :c:func:`run_slave_main` - * :c:func:`write_time` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`system_clock` - - -.. c:function:: write_git_log: - - - File : :file:`utils/util.irp.f` - - .. code:: fortran - - subroutine write_git_log(iunit) - - - Write the last git commit in file iunit. - diff --git a/docs/source/modules/zmq.rst b/docs/source/modules/zmq.rst deleted file mode 100644 index 92a2fe6a..00000000 --- a/docs/source/modules/zmq.rst +++ /dev/null @@ -1,1513 +0,0 @@ -.. _module_zmq: - -.. program:: zmq - -.. default-role:: option - -=== -zmq -=== - -Definition of |ZeroMQ| sockets and messages. - - - - - -Providers ---------- - -.. c:var:: is_zmq_slave - - - File : :file:`zmq/utils.irp.f` - - .. code:: fortran - - logical :: is_zmq_slave - - - If |true|, the current process is a |ZeroMQ| slave. - - - -.. c:var:: qp_run_address - - - File : :file:`zmq/utils.irp.f` - - .. code:: fortran - - character*(128) :: qp_run_address - integer :: zmq_port_start - - - Address of the qp_run socket - Example : tcp://130.120.229.139:12345 - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`zmq_socket_pull_tcp_address` - - -.. c:var:: zmq_context - - - File : :file:`zmq/utils.irp.f` - - .. code:: fortran - - integer(ZMQ_PTR) :: zmq_context - integer(omp_lock_kind) :: zmq_lock - - - Context for the ZeroMQ library - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_two_e_integrals_erf_in_map` - * :c:data:`ao_two_e_integrals_in_map` - - -.. c:var:: zmq_lock - - - File : :file:`zmq/utils.irp.f` - - .. code:: fortran - - integer(ZMQ_PTR) :: zmq_context - integer(omp_lock_kind) :: zmq_lock - - - Context for the ZeroMQ library - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_two_e_integrals_erf_in_map` - * :c:data:`ao_two_e_integrals_in_map` - - -.. c:var:: zmq_port_start - - - File : :file:`zmq/utils.irp.f` - - .. code:: fortran - - character*(128) :: qp_run_address - integer :: zmq_port_start - - - Address of the qp_run socket - Example : tcp://130.120.229.139:12345 - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`zmq_socket_pull_tcp_address` - - -.. c:var:: zmq_socket_pair_inproc_address - - - File : :file:`zmq/utils.irp.f` - - .. code:: fortran - - character*(128) :: zmq_socket_pull_tcp_address - character*(128) :: zmq_socket_pair_inproc_address - character*(128) :: zmq_socket_push_tcp_address - character*(128) :: zmq_socket_pull_inproc_address - character*(128) :: zmq_socket_push_inproc_address - character*(128) :: zmq_socket_sub_tcp_address - - - Socket which pulls the results (2) - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`qp_run_address` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_two_e_integrals_erf_in_map` - * :c:data:`ao_two_e_integrals_in_map` - - -.. c:var:: zmq_socket_pull_inproc_address - - - File : :file:`zmq/utils.irp.f` - - .. code:: fortran - - character*(128) :: zmq_socket_pull_tcp_address - character*(128) :: zmq_socket_pair_inproc_address - character*(128) :: zmq_socket_push_tcp_address - character*(128) :: zmq_socket_pull_inproc_address - character*(128) :: zmq_socket_push_inproc_address - character*(128) :: zmq_socket_sub_tcp_address - - - Socket which pulls the results (2) - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`qp_run_address` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_two_e_integrals_erf_in_map` - * :c:data:`ao_two_e_integrals_in_map` - - -.. c:var:: zmq_socket_pull_tcp_address - - - File : :file:`zmq/utils.irp.f` - - .. code:: fortran - - character*(128) :: zmq_socket_pull_tcp_address - character*(128) :: zmq_socket_pair_inproc_address - character*(128) :: zmq_socket_push_tcp_address - character*(128) :: zmq_socket_pull_inproc_address - character*(128) :: zmq_socket_push_inproc_address - character*(128) :: zmq_socket_sub_tcp_address - - - Socket which pulls the results (2) - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`qp_run_address` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_two_e_integrals_erf_in_map` - * :c:data:`ao_two_e_integrals_in_map` - - -.. c:var:: zmq_socket_push_inproc_address - - - File : :file:`zmq/utils.irp.f` - - .. code:: fortran - - character*(128) :: zmq_socket_pull_tcp_address - character*(128) :: zmq_socket_pair_inproc_address - character*(128) :: zmq_socket_push_tcp_address - character*(128) :: zmq_socket_pull_inproc_address - character*(128) :: zmq_socket_push_inproc_address - character*(128) :: zmq_socket_sub_tcp_address - - - Socket which pulls the results (2) - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`qp_run_address` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_two_e_integrals_erf_in_map` - * :c:data:`ao_two_e_integrals_in_map` - - -.. c:var:: zmq_socket_push_tcp_address - - - File : :file:`zmq/utils.irp.f` - - .. code:: fortran - - character*(128) :: zmq_socket_pull_tcp_address - character*(128) :: zmq_socket_pair_inproc_address - character*(128) :: zmq_socket_push_tcp_address - character*(128) :: zmq_socket_pull_inproc_address - character*(128) :: zmq_socket_push_inproc_address - character*(128) :: zmq_socket_sub_tcp_address - - - Socket which pulls the results (2) - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`qp_run_address` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_two_e_integrals_erf_in_map` - * :c:data:`ao_two_e_integrals_in_map` - - -.. c:var:: zmq_socket_sub_tcp_address - - - File : :file:`zmq/utils.irp.f` - - .. code:: fortran - - character*(128) :: zmq_socket_pull_tcp_address - character*(128) :: zmq_socket_pair_inproc_address - character*(128) :: zmq_socket_push_tcp_address - character*(128) :: zmq_socket_pull_inproc_address - character*(128) :: zmq_socket_push_inproc_address - character*(128) :: zmq_socket_sub_tcp_address - - - Socket which pulls the results (2) - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`qp_run_address` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_two_e_integrals_erf_in_map` - * :c:data:`ao_two_e_integrals_in_map` - - -.. c:var:: zmq_state - - - File : :file:`zmq/utils.irp.f` - - .. code:: fortran - - character*(128) :: zmq_state - - - Threads executing work through the ZeroMQ interface - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_two_e_integrals_erf_in_map` - * :c:data:`ao_two_e_integrals_in_map` - - - -Subroutines / functions ------------------------ - -.. c:function:: add_task_to_taskserver: - - - File : :file:`zmq/utils.irp.f` - - .. code:: fortran - - integer function add_task_to_taskserver(zmq_to_qp_run_socket,task) - - - Get a task from the task server - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`zmq_state` - - -.. c:function:: connect_to_taskserver: - - - File : :file:`zmq/utils.irp.f` - - .. code:: fortran - - integer function connect_to_taskserver(zmq_to_qp_run_socket,worker_id,thread) - - - Connect to the task server and obtain the worker ID - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`zmq_state` - - -.. c:function:: disconnect_from_taskserver: - - - File : :file:`zmq/utils.irp.f` - - .. code:: fortran - - integer function disconnect_from_taskserver(zmq_to_qp_run_socket, worker_id) - - - Disconnect from the task server - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`zmq_state` - - -.. c:function:: disconnect_from_taskserver_state: - - - File : :file:`zmq/utils.irp.f` - - .. code:: fortran - - integer function disconnect_from_taskserver_state(zmq_to_qp_run_socket, worker_id, state) - - - Disconnect from the task server - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`zmq_state` - - -.. c:function:: end_parallel_job: - - - File : :file:`zmq/utils.irp.f` - - .. code:: fortran - - subroutine end_parallel_job(zmq_to_qp_run_socket,zmq_socket_pull,name_in) - - - End a new parallel job with name 'name'. The slave tasks execute subroutine 'slave' - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`zmq_state` - * :c:data:`zmq_context` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_two_e_integrals_erf_in_map` - * :c:data:`ao_two_e_integrals_in_map` - * :c:func:`h_s2_u_0_nstates_zmq` - * :c:func:`zmq_pt2` - * :c:func:`zmq_selection` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`end_zmq_pull_socket` - * :c:func:`end_zmq_to_qp_run_socket` - * :c:func:`lowercase` - * :c:func:`omp_set_lock` - * :c:func:`omp_unset_lock` - * :c:func:`sleep` - - -.. c:function:: end_zmq_pair_socket: - - - File : :file:`zmq/utils.irp.f` - - .. code:: fortran - - subroutine end_zmq_pair_socket(zmq_socket_pair) - - - Terminate socket on which the results are sent. - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`zmq_context` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`omp_set_lock` - * :c:func:`omp_unset_lock` - - -.. c:function:: end_zmq_pull_socket: - - - File : :file:`zmq/utils.irp.f` - - .. code:: fortran - - subroutine end_zmq_pull_socket(zmq_socket_pull) - - - Terminate socket on which the results are sent. - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`zmq_context` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`end_parallel_job` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`omp_set_lock` - * :c:func:`omp_unset_lock` - - -.. c:function:: end_zmq_push_socket: - - - File : :file:`zmq/utils.irp.f` - - .. code:: fortran - - subroutine end_zmq_push_socket(zmq_socket_push,thread) - - - Terminate socket on which the results are sent. - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`zmq_context` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`ao_two_e_integrals_erf_in_map_slave` - * :c:func:`ao_two_e_integrals_in_map_slave` - * :c:func:`davidson_run_slave` - * :c:func:`run_pt2_slave` - * :c:func:`run_selection_slave` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`omp_set_lock` - * :c:func:`omp_unset_lock` - - -.. c:function:: end_zmq_sub_socket: - - - File : :file:`zmq/utils.irp.f` - - .. code:: fortran - - subroutine end_zmq_sub_socket(zmq_socket_sub) - - - Terminate socket on which the results are sent. - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`zmq_context` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`wait_for_next_state` - * :c:func:`wait_for_state` - * :c:func:`wait_for_states` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`omp_set_lock` - * :c:func:`omp_unset_lock` - - -.. c:function:: end_zmq_to_qp_run_socket: - - - File : :file:`zmq/utils.irp.f` - - .. code:: fortran - - subroutine end_zmq_to_qp_run_socket(zmq_to_qp_run_socket) - - - Terminate the socket from the application to qp_run - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`ao_two_e_integrals_erf_in_map_collector` - * :c:func:`ao_two_e_integrals_erf_in_map_slave` - * :c:func:`ao_two_e_integrals_in_map_collector` - * :c:func:`ao_two_e_integrals_in_map_slave` - * :c:func:`davidson_run_slave` - * :c:func:`end_parallel_job` - * :c:func:`pt2_collector` - * :c:func:`run_pt2_slave` - * :c:func:`run_selection_slave` - * :c:func:`selection_collector` - - -.. c:function:: get_task_from_taskserver: - - - File : :file:`zmq/utils.irp.f` - - .. code:: fortran - - integer function get_task_from_taskserver(zmq_to_qp_run_socket,worker_id,task_id,task) - - - Get a task from the task server - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`zmq_state` - - -.. c:function:: get_tasks_from_taskserver: - - - File : :file:`zmq/utils.irp.f` - - .. code:: fortran - - integer function get_tasks_from_taskserver(zmq_to_qp_run_socket,worker_id,task_id,task,n_tasks) - - - Get multiple tasks from the task server - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`zmq_state` - - -.. c:function:: new_parallel_job: - - - File : :file:`zmq/utils.irp.f` - - .. code:: fortran - - subroutine new_parallel_job(zmq_to_qp_run_socket,zmq_socket_pull,name_in) - - - Start a new parallel job with name 'name'. The slave tasks execute subroutine 'slave' - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`zmq_state` - * :c:data:`zmq_socket_pull_tcp_address` - * :c:data:`zmq_context` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_two_e_integrals_erf_in_map` - * :c:data:`ao_two_e_integrals_in_map` - * :c:func:`h_s2_u_0_nstates_zmq` - * :c:func:`zmq_pt2` - * :c:func:`zmq_selection` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`lowercase` - * :c:func:`omp_set_lock` - * :c:func:`omp_unset_lock` - - -.. c:function:: new_zmq_pair_socket: - - - File : :file:`zmq/utils.irp.f` - - .. code:: fortran - - function new_zmq_pair_socket(bind) - - - Socket on which the collector and the main communicate - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`zmq_socket_pull_tcp_address` - * :c:data:`zmq_context` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`omp_set_lock` - * :c:func:`omp_unset_lock` - - -.. c:function:: new_zmq_pull_socket: - - - File : :file:`zmq/utils.irp.f` - - .. code:: fortran - - function new_zmq_pull_socket() - - - Socket on which the results are sent. If thread is 1, use inproc - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`qp_run_address` - * :c:data:`zmq_socket_pull_tcp_address` - * :c:data:`zmq_context` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`omp_set_lock` - * :c:func:`omp_unset_lock` - * :c:func:`sleep` - - -.. c:function:: new_zmq_push_socket: - - - File : :file:`zmq/utils.irp.f` - - .. code:: fortran - - function new_zmq_push_socket(thread) - - - Socket on which the results are sent. If thread is 1, use inproc - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`zmq_socket_pull_tcp_address` - * :c:data:`zmq_context` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`omp_set_lock` - * :c:func:`omp_unset_lock` - - -.. c:function:: new_zmq_sub_socket: - - - File : :file:`zmq/utils.irp.f` - - .. code:: fortran - - function new_zmq_sub_socket() - - - Socket to read the state published by the Task server - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`zmq_socket_pull_tcp_address` - * :c:data:`zmq_context` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`omp_set_lock` - * :c:func:`omp_unset_lock` - - -.. c:function:: new_zmq_to_qp_run_socket: - - - File : :file:`zmq/utils.irp.f` - - .. code:: fortran - - function new_zmq_to_qp_run_socket() - - - Socket on which the qp_run process replies - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`qp_run_address` - * :c:data:`zmq_context` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`omp_set_lock` - * :c:func:`omp_unset_lock` - - -.. c:function:: reset_zmq_addresses: - - - File : :file:`zmq/utils.irp.f` - - .. code:: fortran - - subroutine reset_zmq_addresses - - - Socket which pulls the results (2) - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`qp_run_address` - * :c:data:`zmq_socket_pull_tcp_address` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`switch_qp_run_to_master` - - -.. c:function:: switch_qp_run_to_master: - - - File : :file:`zmq/utils.irp.f` - - .. code:: fortran - - subroutine switch_qp_run_to_master - - - Address of the master qp_run socket - Example : tcp://130.120.229.139:12345 - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`is_zmq_slave` - * :c:data:`qp_run_address` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`run_slave_cipsi` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`getenv` - * :c:func:`reset_zmq_addresses` - - -.. c:function:: task_done_to_taskserver: - - - File : :file:`zmq/utils.irp.f` - - .. code:: fortran - - integer function task_done_to_taskserver(zmq_to_qp_run_socket, worker_id, task_id) - - - Get a task from the task server - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`zmq_state` - - -.. c:function:: tasks_done_to_taskserver: - - - File : :file:`zmq/utils.irp.f` - - .. code:: fortran - - integer function tasks_done_to_taskserver(zmq_to_qp_run_socket, worker_id, task_id, n_tasks) - - - Get a task from the task server - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`zmq_state` - - -.. c:function:: wait_for_next_state: - - - File : :file:`zmq/utils.irp.f` - - .. code:: fortran - - subroutine wait_for_next_state(state) - - - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`end_zmq_sub_socket` - - -.. c:function:: wait_for_state: - - - File : :file:`zmq/utils.irp.f` - - .. code:: fortran - - subroutine wait_for_state(state_wait,state) - - - Wait for the ZMQ state to be ready - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`end_zmq_sub_socket` - - -.. c:function:: wait_for_states: - - - File : :file:`zmq/utils.irp.f` - - .. code:: fortran - - subroutine wait_for_states(state_wait,state,n) - - - Wait for the ZMQ state to be ready - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`run_slave_main` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`end_zmq_sub_socket` - - -.. c:function:: zmq_abort: - - - File : :file:`zmq/utils.irp.f` - - .. code:: fortran - - integer function zmq_abort(zmq_to_qp_run_socket) - - - Aborts a running parallel computation - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`sleep` - - -.. c:function:: zmq_delete_task: - - - File : :file:`zmq/utils.irp.f` - - .. code:: fortran - - integer function zmq_delete_task(zmq_to_qp_run_socket,zmq_socket_pull,task_id,more) - - - When a task is done, it has to be removed from the list of tasks on the qp_run - queue. This guarantees that the results have been received in the pull. - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`zmq_state` - - -.. c:function:: zmq_delete_tasks: - - - File : :file:`zmq/utils.irp.f` - - .. code:: fortran - - integer function zmq_delete_tasks(zmq_to_qp_run_socket,zmq_socket_pull,task_id,n_tasks,more) - - - When a task is done, it has to be removed from the list of tasks on the qp_run - queue. This guarantees that the results have been received in the pull. - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`zmq_state` - - -.. c:function:: zmq_delete_tasks_async_recv: - - - File : :file:`zmq/utils.irp.f` - - .. code:: fortran - - integer function zmq_delete_tasks_async_recv(zmq_to_qp_run_socket,zmq_socket_pull,task_id,n_tasks,more) - - - When a task is done, it has to be removed from the list of tasks on the qp_run - queue. This guarantees that the results have been received in the pull. - - -.. c:function:: zmq_delete_tasks_async_send: - - - File : :file:`zmq/utils.irp.f` - - .. code:: fortran - - integer function zmq_delete_tasks_async_send(zmq_to_qp_run_socket,zmq_socket_pull,task_id,n_tasks,more) - - - When a task is done, it has to be removed from the list of tasks on the qp_run - queue. This guarantees that the results have been received in the pull. - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`zmq_state` - - -.. c:function:: zmq_get8_dvector: - - - File : :file:`zmq/put_get.irp.f` - - .. code:: fortran - - integer function zmq_get8_dvector(zmq_to_qp_run_socket, worker_id, name, x, size_x) - - - Get a float vector from the qp_run scheduler - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`zmq_state` - * :c:data:`mpi_master` - - -.. c:function:: zmq_get8_ivector: - - - File : :file:`zmq/put_get.irp.f` - - .. code:: fortran - - integer function zmq_get8_ivector(zmq_to_qp_run_socket, worker_id, name, x, size_x) - - - Get a vector of integers from the qp_run scheduler - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`zmq_state` - * :c:data:`mpi_master` - - -.. c:function:: zmq_get_dmatrix: - - - File : :file:`zmq/put_get.irp.f` - - .. code:: fortran - - integer function zmq_get_dmatrix(zmq_to_qp_run_socket, worker_id, name, x, size_x1, size_x2, sze) - - - Get a float vector from the qp_run scheduler - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`zmq_state` - * :c:data:`mpi_master` - - -.. c:function:: zmq_get_dvector: - - - File : :file:`zmq/put_get.irp.f` - - .. code:: fortran - - integer function zmq_get_dvector(zmq_to_qp_run_socket, worker_id, name, x, size_x) - - - Get a float vector from the qp_run scheduler - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`zmq_state` - * :c:data:`mpi_master` - - -.. c:function:: zmq_get_i8matrix: - - - File : :file:`zmq/put_get.irp.f` - - .. code:: fortran - - integer function zmq_get_i8matrix(zmq_to_qp_run_socket, worker_id, name, x, size_x1, size_x2, sze) - - - Get a float vector from the qp_run scheduler - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`zmq_state` - * :c:data:`mpi_master` - - -.. c:function:: zmq_get_imatrix: - - - File : :file:`zmq/put_get.irp.f` - - .. code:: fortran - - integer function zmq_get_imatrix(zmq_to_qp_run_socket, worker_id, name, x, size_x1, size_x2, sze) - - - Get a float vector from the qp_run scheduler - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`zmq_state` - * :c:data:`mpi_master` - - -.. c:function:: zmq_get_int: - - - File : :file:`zmq/put_get.irp.f` - - .. code:: fortran - - integer function zmq_get_int(zmq_to_qp_run_socket, worker_id, name, x) - - - Get a vector of integers from the qp_run scheduler - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`zmq_state` - * :c:data:`mpi_master` - - -.. c:function:: zmq_get_int_nompi: - - - File : :file:`zmq/put_get.irp.f` - - .. code:: fortran - - integer function zmq_get_int_nompi(zmq_to_qp_run_socket, worker_id, name, x) - - - Get a vector of integers from the qp_run scheduler - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`zmq_state` - - -.. c:function:: zmq_get_ivector: - - - File : :file:`zmq/put_get.irp.f` - - .. code:: fortran - - integer function zmq_get_ivector(zmq_to_qp_run_socket, worker_id, name, x, size_x) - - - Get a vector of integers from the qp_run scheduler - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`zmq_state` - * :c:data:`mpi_master` - - -.. c:function:: zmq_port: - - - File : :file:`zmq/utils.irp.f` - - .. code:: fortran - - function zmq_port(ishift) - - - Return the value of the ZMQ port from the corresponding integer - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`qp_run_address` - - -.. c:function:: zmq_put8_dvector: - - - File : :file:`zmq/put_get.irp.f` - - .. code:: fortran - - integer function zmq_put8_dvector(zmq_to_qp_run_socket, worker_id, name, x, size_x) - - - Put a float vector on the qp_run scheduler - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`zmq_state` - - -.. c:function:: zmq_put8_ivector: - - - File : :file:`zmq/put_get.irp.f` - - .. code:: fortran - - integer function zmq_put8_ivector(zmq_to_qp_run_socket, worker_id, name, x, size_x) - - - Put a vector of integers on the qp_run scheduler - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`zmq_state` - - -.. c:function:: zmq_put_dmatrix: - - - File : :file:`zmq/put_get.irp.f` - - .. code:: fortran - - integer function zmq_put_dmatrix(zmq_to_qp_run_socket, worker_id, name, x, size_x1, size_x2, sze) - - - Put a float vector on the qp_run scheduler - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`zmq_state` - - -.. c:function:: zmq_put_dvector: - - - File : :file:`zmq/put_get.irp.f` - - .. code:: fortran - - integer function zmq_put_dvector(zmq_to_qp_run_socket, worker_id, name, x, size_x) - - - Put a float vector on the qp_run scheduler - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`zmq_state` - - -.. c:function:: zmq_put_i8matrix: - - - File : :file:`zmq/put_get.irp.f` - - .. code:: fortran - - integer function zmq_put_i8matrix(zmq_to_qp_run_socket, worker_id, name, x, size_x1, size_x2, sze) - - - Put a float vector on the qp_run scheduler - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`zmq_state` - - -.. c:function:: zmq_put_imatrix: - - - File : :file:`zmq/put_get.irp.f` - - .. code:: fortran - - integer function zmq_put_imatrix(zmq_to_qp_run_socket, worker_id, name, x, size_x1, size_x2, sze) - - - Put a float vector on the qp_run scheduler - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`zmq_state` - - -.. c:function:: zmq_put_int: - - - File : :file:`zmq/put_get.irp.f` - - .. code:: fortran - - integer function zmq_put_int(zmq_to_qp_run_socket, worker_id, name, x) - - - Put a vector of integers on the qp_run scheduler - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`zmq_state` - - -.. c:function:: zmq_put_ivector: - - - File : :file:`zmq/put_get.irp.f` - - .. code:: fortran - - integer function zmq_put_ivector(zmq_to_qp_run_socket, worker_id, name, x, size_x) - - - Put a vector of integers on the qp_run scheduler - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`zmq_state` - - -.. c:function:: zmq_set_running: - - - File : :file:`zmq/utils.irp.f` - - .. code:: fortran - - integer function zmq_set_running(zmq_to_qp_run_socket) - - - Set the job to Running in QP-run - diff --git a/docs/source/programmers_guide/conventions.rst b/docs/source/programmers_guide/conventions.rst index ecd6d6b0..33fd810a 100644 --- a/docs/source/programmers_guide/conventions.rst +++ b/docs/source/programmers_guide/conventions.rst @@ -107,7 +107,7 @@ Only standard Fortran is allowed : Intel or GNU extensions are forbidden. The name of a program should be the same as the name of the file. For example, for the :ref:`fci` program, we have -.. code-block:: fortan +.. code-block:: fortran program fci diff --git a/docs/source/programmers_guide/ezfio.rst b/docs/source/programmers_guide/ezfio.rst index e96883bb..1eece851 100644 --- a/docs/source/programmers_guide/ezfio.rst +++ b/docs/source/programmers_guide/ezfio.rst @@ -8,7 +8,7 @@ EZFIO.cfg The simplest way to add control parameters in the |EZFIO| directory is to create a :file:`EZFIO.cfg` file in the module. An example can be found in existing modules -such as :ref:`hartree_fock`:: +such as :ref:`module_hartree_fock`:: [max_dim_diis] type: integer @@ -92,7 +92,7 @@ Optional It is possible to directly add to the current module |EZFIO| configuration files, named with the ``.ezfio_config`` suffix. An example is in the -:ref:`bitmask` module. +:ref:`module_bitmask` module. .. code:: text diff --git a/docs/source/programmers_guide/index_providers.rst b/docs/source/programmers_guide/index_providers.rst index 1b296fff..c9d65302 100644 --- a/docs/source/programmers_guide/index_providers.rst +++ b/docs/source/programmers_guide/index_providers.rst @@ -226,7 +226,6 @@ Index of Providers * :c:data:`ezfio_work_dir` * :c:data:`fact_inv` * :c:data:`file_lock` -* :c:data:`fill_h_apply_buffer_selection` * :c:data:`final_grid_points` * :c:data:`final_weight_at_r` * :c:data:`final_weight_at_r_vector` @@ -606,7 +605,6 @@ Index of Providers * :c:data:`psi_selectors_coef_transp` * :c:data:`psi_selectors_diag_h_mat` * :c:data:`psi_selectors_size` -* :c:data:`pt2_collector` * :c:data:`pt2_cw` * :c:data:`pt2_e0_denominator` * :c:data:`pt2_f` @@ -907,6 +905,7 @@ Index of Subroutines/Functions * :c:func:`fcidump` * :c:func:`fill_buffer_double` * :c:func:`fill_h_apply_buffer_no_selection` +* :c:func:`fill_h_apply_buffer_selection` * :c:func:`filter_connected` * :c:func:`filter_connected_i_h_psi0` * :c:func:`filter_not_connected` @@ -1198,6 +1197,7 @@ Index of Subroutines/Functions * :c:func:`provide_all_mo_integrals_erf` * :c:func:`provide_everything` * :c:func:`pt2` +* :c:func:`pt2_collector` * :c:func:`pt2_dummy` * :c:func:`pt2_epstein_nesbet` * :c:func:`pt2_epstein_nesbet_2x2` diff --git a/docs/source/programs/cis.rst b/docs/source/programs/cis.rst index ffbadf5f..4f496254 100644 --- a/docs/source/programs/cis.rst +++ b/docs/source/programs/cis.rst @@ -20,25 +20,22 @@ cis This program can be useful in many cases: - Ground state calculation - ------------------------ + 1. Ground state calculation - To be sure to have the lowest |SCF| solution, perform an :ref:`scf` - (see the :ref:`hartree_fock` module), then a :ref:`cis`, save - the natural orbitals (see :ref:`save_natorb`) and re-run an - :ref:`scf` optimization from this |MO| guess. + To be sure to have the lowest |SCF| solution, perform an :ref:`scf` + (see the :ref:`module_hartree_fock` module), then a :ref:`cis`, save the + natural orbitals (see :ref:`save_natorb`) and re-run an :ref:`scf` + optimization from this |MO| guess. - Excited states calculations - --------------------------- + 2. Excited states calculations - The lowest excited states are much likely to be dominated by - single-excitations. Therefore, running a :ref:`cis` will save - the `n_states` lowest states within the |CIS| space in the |EZFIO| - directory, which can afterwards be used as guess wave functions for - a further multi-state |FCI| calculation if :option:`determinants read_wf` - is set to |true| before running the :ref:`fci` - executable. + The lowest excited states are much likely to be dominated by + single-excitations. Therefore, running a :ref:`cis` will save the + `n_states` lowest states within the |CIS| space in the |EZFIO| + directory, which can afterwards be used as guess wave functions for + a further multi-state |FCI| calculation if :option:`determinants + read_wf` is set to |true| before running the :ref:`fci` executable. If :option:`determinants s2_eig` is set to |true|, the |CIS| diff --git a/docs/source/programs/cisd.rst b/docs/source/programs/cisd.rst index 8208dd06..21da9b98 100644 --- a/docs/source/programs/cisd.rst +++ b/docs/source/programs/cisd.rst @@ -50,6 +50,7 @@ cisd * "act" orbitals where an electron can be either excited from or to * "del" orbitals which will be never occupied + Needs: diff --git a/docs/source/programs/fci.rst b/docs/source/programs/fci.rst index f4b8b268..5ebd7da9 100644 --- a/docs/source/programs/fci.rst +++ b/docs/source/programs/fci.rst @@ -21,7 +21,7 @@ fci conditions: * number of Slater determinants > :option:`determinants n_det_max` - * |PT2| < :option:`perturbation pt2_max` + * abs(|PT2|) less than :option:`perturbation pt2_max` The following other options can be of interest: @@ -38,7 +38,7 @@ fci :option:`determinants expected_s2`. For excited states calculations, it is recommended to start with - :ref:`.cis.` or :ref:`.cisd.` guess wave functions, eventually in + :ref:`cis` or :ref:`cisd` guess wave functions, eventually in a restricted set of |MOs|, and to set :option:`determinants s2_eig` to |true|. diff --git a/docs/source/programs/molden.rst b/docs/source/programs/molden.rst index 23830392..9611bac0 100644 --- a/docs/source/programs/molden.rst +++ b/docs/source/programs/molden.rst @@ -9,7 +9,7 @@ molden - Produce a Molden file + Produces a Molden file Needs: diff --git a/docs/source/programs/write_integrals_erf.rst b/docs/source/programs/write_integrals_erf.rst index b940e8b4..43cf853d 100644 --- a/docs/source/programs/write_integrals_erf.rst +++ b/docs/source/programs/write_integrals_erf.rst @@ -9,7 +9,8 @@ write_integrals_erf - Saves the two-electron integrals with the :math:`erf(\mu r_{12})/r_{12}` oprerator into the EZFIO folder + Saves the two-electron integrals with the $erf(\mu r_{12})/r_{12}$ + oprerator into the EZFIO directory. Needs: diff --git a/docs/source/users_guide/interfaces.rst b/docs/source/users_guide/interfaces.rst index c00b165e..dc443346 100644 --- a/docs/source/users_guide/interfaces.rst +++ b/docs/source/users_guide/interfaces.rst @@ -15,7 +15,7 @@ A few interfaces to external codes are available. |qp| -> \* ---------- -`Molden`_ +`Molden `_ 3D plots of Molecular Orbitals FCIDUMP diff --git a/docs/source/users_guide/qp_reset.rst b/docs/source/users_guide/qp_reset.rst new file mode 100644 index 00000000..c92f2791 --- /dev/null +++ b/docs/source/users_guide/qp_reset.rst @@ -0,0 +1,32 @@ +.. _qp_reset: + +======== +qp_reset +======== + +.. program:: qp_reset + +This command resets parts of the |EZFIO| directory. + + +Usage +----- + +.. code:: bash + + qp_reset [-adhm] EZFIO_DIR + +.. option:: -a, --all + + Reset to the state in which the directory is after after running :ref:`qp_create_ezfio`. + +.. option:: -d, --dets + + Deletes the determinants and CI coefficients. + +.. option:: -m, --mos + + Deletes the |MOs|, and consequently the determinants and CI coefficients. + + + diff --git a/docs/source/users_guide/qpsh.rst b/docs/source/users_guide/qpsh.rst index 4cf1a612..7a1a874c 100644 --- a/docs/source/users_guide/qpsh.rst +++ b/docs/source/users_guide/qpsh.rst @@ -95,7 +95,7 @@ Running programs qp (run|srun|mpirun) [options] - Runs :ref:`qp_run`, :ref:`qp_srun`, or :ref:`qp_mpirun` using the current + Runs :ref:`qp_run`, :command:`qp_srun`, or :command:`qp_mpirun` using the current |EZFIO| directory. .. option:: stop diff --git a/docs/source/users_guide/quickstart.rst b/docs/source/users_guide/quickstart.rst index 2c04cbcb..d2de32c9 100644 --- a/docs/source/users_guide/quickstart.rst +++ b/docs/source/users_guide/quickstart.rst @@ -74,7 +74,8 @@ The expected energy is ``-92.827856698`` au. .. seealso:: - The documentation of the :ref:`hartree_fock` module and that of the :c:func:`scf` program. + The documentation of the :ref:`module_hartree_fock` module and that of the + :ref:`scf` program. This creates the |MOs| in the |EZFIO| database that will be used to perform any other post-SCF method. The |qp| does not handle symmetry and @@ -138,7 +139,7 @@ The estimated |FCI| energy of HCN is ``-93.0501`` au. .. seealso:: - The documentation of the :ref:`fci` module and that of the :c:func:`fci` program. + The documentation of the :ref:`module_fci` module and that of the :ref:`fci` program. --------------------------- diff --git a/man/cis.1 b/man/cis.1 index 07e3260b..7ecc6ace 100644 --- a/man/cis.1 +++ b/man/cis.1 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "CIS" "1" "Jan 25, 2019" "2.0" "Quantum Package" +.TH "CIS" "1" "Jan 29, 2019" "2.0" "Quantum Package" .SH NAME cis \- | Quantum Package > . @@ -40,19 +40,24 @@ Disregarding spatial symmetry, it computes the \fIn_states\fP lowest eigenstates of that CI matrix. (see \fBdeterminants n_states\fP) .sp This program can be useful in many cases: +.INDENT 0.0 +.IP 1. 3 +Ground state calculation .sp To be sure to have the lowest SCF solution, perform an scf -(see the hartree_fock module), then a \fI\%cis\fP, save -the natural orbitals (see save_natorb) and re\-run an -scf optimization from this MO guess. +(see the module_hartree_fock module), then a \fI\%cis\fP, save the +natural orbitals (see save_natorb) and re\-run an scf +optimization from this MO guess. +.IP 2. 3 +Excited states calculations .sp The lowest excited states are much likely to be dominated by -single\-excitations. Therefore, running a \fI\%cis\fP will save -the \fIn_states\fP lowest states within the CIS space in the \fI\%EZFIO\fP +single\-excitations. Therefore, running a \fI\%cis\fP will save the +\fIn_states\fP lowest states within the CIS space in the \fI\%EZFIO\fP directory, which can afterwards be used as guess wave functions for -a further multi\-state FCI calculation if \fBdeterminants read_wf\fP -is set to \fBtrue\fP before running the fci -executable. +a further multi\-state FCI calculation if \fBdeterminants +read_wf\fP is set to \fBtrue\fP before running the fci executable. +.UNINDENT .sp If \fBdeterminants s2_eig\fP is set to \fBtrue\fP, the CIS will only retain states having the expected \ewidehat{S^2} value (see diff --git a/man/cisd.1 b/man/cisd.1 index 79bb7ae1..7a962b7c 100644 --- a/man/cisd.1 +++ b/man/cisd.1 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "CISD" "1" "Jan 25, 2019" "2.0" "Quantum Package" +.TH "CISD" "1" "Jan 29, 2019" "2.0" "Quantum Package" .SH NAME cisd \- | Quantum Package > . diff --git a/man/configure.1 b/man/configure.1 index 402f4cff..2bd704ed 100644 --- a/man/configure.1 +++ b/man/configure.1 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "CONFIGURE" "1" "Jan 25, 2019" "2.0" "Quantum Package" +.TH "CONFIGURE" "1" "Jan 29, 2019" "2.0" "Quantum Package" .SH NAME configure \- | Quantum Package > . diff --git a/man/diagonalize_h.1 b/man/diagonalize_h.1 index 0579b2f0..be760d5f 100644 --- a/man/diagonalize_h.1 +++ b/man/diagonalize_h.1 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "DIAGONALIZE_H" "1" "Jan 25, 2019" "2.0" "Quantum Package" +.TH "DIAGONALIZE_H" "1" "Jan 29, 2019" "2.0" "Quantum Package" .SH NAME diagonalize_h \- | Quantum Package > . diff --git a/man/excited_states.1 b/man/excited_states.1 index c35acce8..f96ab6f2 100644 --- a/man/excited_states.1 +++ b/man/excited_states.1 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "EXCITED_STATES" "1" "Jan 25, 2019" "2.0" "Quantum Package" +.TH "EXCITED_STATES" "1" "Jan 29, 2019" "2.0" "Quantum Package" .SH NAME excited_states \- | Quantum Package > . diff --git a/man/fci.1 b/man/fci.1 index 0121e2ae..97975d6a 100644 --- a/man/fci.1 +++ b/man/fci.1 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "FCI" "1" "Jan 25, 2019" "2.0" "Quantum Package" +.TH "FCI" "1" "Jan 29, 2019" "2.0" "Quantum Package" .SH NAME fci \- | Quantum Package > . @@ -46,7 +46,7 @@ conditions: .IP \(bu 2 number of Slater determinants > \fBdeterminants n_det_max\fP .IP \(bu 2 -PT2 < \fBperturbation pt2_max\fP +abs(PT2) less than \fBperturbation pt2_max\fP .UNINDENT .sp The following other options can be of interest: @@ -66,7 +66,7 @@ function with an \ewidehat{S^2} value corresponding to .UNINDENT .sp For excited states calculations, it is recommended to start with -\&.cis. or \&.cisd. guess wave functions, eventually in +cis or cisd guess wave functions, eventually in a restricted set of MOs, and to set \fBdeterminants s2_eig\fP to \fBtrue\fP\&. .sp diff --git a/man/fcidump.1 b/man/fcidump.1 index 6df57772..c63f86f0 100644 --- a/man/fcidump.1 +++ b/man/fcidump.1 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "FCIDUMP" "1" "Jan 25, 2019" "2.0" "Quantum Package" +.TH "FCIDUMP" "1" "Jan 29, 2019" "2.0" "Quantum Package" .SH NAME fcidump \- | Quantum Package > . diff --git a/man/four_idx_transform.1 b/man/four_idx_transform.1 index cc610f5a..43bc294a 100644 --- a/man/four_idx_transform.1 +++ b/man/four_idx_transform.1 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "FOUR_IDX_TRANSFORM" "1" "Jan 25, 2019" "2.0" "Quantum Package" +.TH "FOUR_IDX_TRANSFORM" "1" "Jan 29, 2019" "2.0" "Quantum Package" .SH NAME four_idx_transform \- | Quantum Package > . diff --git a/man/interfaces.1 b/man/interfaces.1 index 6b61eb4e..f9cadd99 100644 --- a/man/interfaces.1 +++ b/man/interfaces.1 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "INTERFACES" "1" "Jan 25, 2019" "2.0" "Quantum Package" +.TH "INTERFACES" "1" "Jan 29, 2019" "2.0" "Quantum Package" .SH NAME interfaces \- | Quantum Package > . diff --git a/man/ks_scf.1 b/man/ks_scf.1 index e9eb6d53..00b42a45 100644 --- a/man/ks_scf.1 +++ b/man/ks_scf.1 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "KS_SCF" "1" "Jan 25, 2019" "2.0" "Quantum Package" +.TH "KS_SCF" "1" "Jan 29, 2019" "2.0" "Quantum Package" .SH NAME ks_scf \- | Quantum Package > . diff --git a/man/molden.1 b/man/molden.1 index 09ce8921..1ceae1ab 100644 --- a/man/molden.1 +++ b/man/molden.1 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "MOLDEN" "1" "Jan 25, 2019" "2.0" "Quantum Package" +.TH "MOLDEN" "1" "Jan 29, 2019" "2.0" "Quantum Package" .SH NAME molden \- | Quantum Package > . @@ -32,7 +32,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .. .INDENT 0.0 .INDENT 3.5 -Produce a Molden file +Produces a Molden file .sp Needs: .INDENT 0.0 diff --git a/man/natural_orbitals.1 b/man/natural_orbitals.1 index 8f8cf279..35b0980c 100644 --- a/man/natural_orbitals.1 +++ b/man/natural_orbitals.1 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "NATURAL_ORBITALS" "1" "Jan 25, 2019" "2.0" "Quantum Package" +.TH "NATURAL_ORBITALS" "1" "Jan 29, 2019" "2.0" "Quantum Package" .SH NAME natural_orbitals \- | Quantum Package > . diff --git a/man/plugins.1 b/man/plugins.1 index 8107c596..018cf648 100644 --- a/man/plugins.1 +++ b/man/plugins.1 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "PLUGINS" "1" "Jan 25, 2019" "2.0" "Quantum Package" +.TH "PLUGINS" "1" "Jan 29, 2019" "2.0" "Quantum Package" .SH NAME plugins \- | Quantum Package > . diff --git a/man/print_e_conv.1 b/man/print_e_conv.1 index 2df9cc2d..21a083f1 100644 --- a/man/print_e_conv.1 +++ b/man/print_e_conv.1 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "PRINT_E_CONV" "1" "Jan 25, 2019" "2.0" "Quantum Package" +.TH "PRINT_E_CONV" "1" "Jan 29, 2019" "2.0" "Quantum Package" .SH NAME print_e_conv \- | Quantum Package > . diff --git a/man/print_wf.1 b/man/print_wf.1 index e0278254..53c1dc26 100644 --- a/man/print_wf.1 +++ b/man/print_wf.1 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "PRINT_WF" "1" "Jan 25, 2019" "2.0" "Quantum Package" +.TH "PRINT_WF" "1" "Jan 29, 2019" "2.0" "Quantum Package" .SH NAME print_wf \- | Quantum Package > . diff --git a/man/printing.1 b/man/printing.1 index 2c9d32f1..b5ec89da 100644 --- a/man/printing.1 +++ b/man/printing.1 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "PRINTING" "1" "Jan 25, 2019" "2.0" "Quantum Package" +.TH "PRINTING" "1" "Jan 29, 2019" "2.0" "Quantum Package" .SH NAME printing \- | Quantum Package > . diff --git a/man/pt2.1 b/man/pt2.1 index 743cbfed..3c59e81d 100644 --- a/man/pt2.1 +++ b/man/pt2.1 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "PT2" "1" "Jan 25, 2019" "2.0" "Quantum Package" +.TH "PT2" "1" "Jan 29, 2019" "2.0" "Quantum Package" .SH NAME pt2 \- | Quantum Package > . diff --git a/man/qp_convert_output_to_ezfio.1 b/man/qp_convert_output_to_ezfio.1 index 250852fc..43c10485 100644 --- a/man/qp_convert_output_to_ezfio.1 +++ b/man/qp_convert_output_to_ezfio.1 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "QP_CONVERT_OUTPUT_TO_EZFIO" "1" "Jan 25, 2019" "2.0" "Quantum Package" +.TH "QP_CONVERT_OUTPUT_TO_EZFIO" "1" "Jan 29, 2019" "2.0" "Quantum Package" .SH NAME qp_convert_output_to_ezfio \- | Quantum Package > . diff --git a/man/qp_create_ezfio_from_xyz.1 b/man/qp_create_ezfio_from_xyz.1 index 06e8a21c..de6a6da8 100644 --- a/man/qp_create_ezfio_from_xyz.1 +++ b/man/qp_create_ezfio_from_xyz.1 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "QP_CREATE_EZFIO_FROM_XYZ" "1" "Jan 25, 2019" "2.0" "Quantum Package" +.TH "QP_CREATE_EZFIO_FROM_XYZ" "1" "Jan 29, 2019" "2.0" "Quantum Package" .SH NAME qp_create_ezfio_from_xyz \- | Quantum Package > . diff --git a/man/qp_edit.1 b/man/qp_edit.1 index d1cded7f..3e222910 100644 --- a/man/qp_edit.1 +++ b/man/qp_edit.1 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "QP_EDIT" "1" "Jan 25, 2019" "2.0" "Quantum Package" +.TH "QP_EDIT" "1" "Jan 29, 2019" "2.0" "Quantum Package" .SH NAME qp_edit \- | Quantum Package > . diff --git a/man/qp_export_as_tgz.1 b/man/qp_export_as_tgz.1 index 0363eebb..0950a030 100644 --- a/man/qp_export_as_tgz.1 +++ b/man/qp_export_as_tgz.1 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "QP_EXPORT_AS_TGZ" "1" "Jan 25, 2019" "2.0" "Quantum Package" +.TH "QP_EXPORT_AS_TGZ" "1" "Jan 29, 2019" "2.0" "Quantum Package" .SH NAME qp_export_as_tgz \- | Quantum Package > . diff --git a/man/qp_plugins.1 b/man/qp_plugins.1 index 2a63d809..7e5db588 100644 --- a/man/qp_plugins.1 +++ b/man/qp_plugins.1 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "QP_PLUGINS" "1" "Jan 25, 2019" "2.0" "Quantum Package" +.TH "QP_PLUGINS" "1" "Jan 29, 2019" "2.0" "Quantum Package" .SH NAME qp_plugins \- | Quantum Package > . diff --git a/man/qp_run.1 b/man/qp_run.1 index 976a7318..7ec33303 100644 --- a/man/qp_run.1 +++ b/man/qp_run.1 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "QP_RUN" "1" "Jan 25, 2019" "2.0" "Quantum Package" +.TH "QP_RUN" "1" "Jan 29, 2019" "2.0" "Quantum Package" .SH NAME qp_run \- | Quantum Package > . diff --git a/man/qp_set_frozen_core.1 b/man/qp_set_frozen_core.1 index 24f87b09..7077976e 100644 --- a/man/qp_set_frozen_core.1 +++ b/man/qp_set_frozen_core.1 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "QP_SET_FROZEN_CORE" "1" "Jan 25, 2019" "2.0" "Quantum Package" +.TH "QP_SET_FROZEN_CORE" "1" "Jan 29, 2019" "2.0" "Quantum Package" .SH NAME qp_set_frozen_core \- | Quantum Package > . diff --git a/man/qp_set_mo_class.1 b/man/qp_set_mo_class.1 index a97f50e3..01c71fe6 100644 --- a/man/qp_set_mo_class.1 +++ b/man/qp_set_mo_class.1 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "QP_SET_MO_CLASS" "1" "Jan 25, 2019" "2.0" "Quantum Package" +.TH "QP_SET_MO_CLASS" "1" "Jan 29, 2019" "2.0" "Quantum Package" .SH NAME qp_set_mo_class \- | Quantum Package > . diff --git a/man/qp_stop.1 b/man/qp_stop.1 index 35fa3082..47cc7559 100644 --- a/man/qp_stop.1 +++ b/man/qp_stop.1 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "QP_STOP" "1" "Jan 25, 2019" "2.0" "Quantum Package" +.TH "QP_STOP" "1" "Jan 29, 2019" "2.0" "Quantum Package" .SH NAME qp_stop \- | Quantum Package > . diff --git a/man/qp_update.1 b/man/qp_update.1 index 4ee9654c..5acad761 100644 --- a/man/qp_update.1 +++ b/man/qp_update.1 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "QP_UPDATE" "1" "Jan 25, 2019" "2.0" "Quantum Package" +.TH "QP_UPDATE" "1" "Jan 29, 2019" "2.0" "Quantum Package" .SH NAME qp_update \- | Quantum Package > . diff --git a/man/qpsh.1 b/man/qpsh.1 index c445c006..e7f22a8c 100644 --- a/man/qpsh.1 +++ b/man/qpsh.1 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "QPSH" "1" "Jan 25, 2019" "2.0" "Quantum Package" +.TH "QPSH" "1" "Jan 29, 2019" "2.0" "Quantum Package" .SH NAME qpsh \- | Quantum Package > . @@ -153,7 +153,7 @@ qp (run|srun|mpirun) [options] .UNINDENT .UNINDENT .sp -Runs qp_run, qp_srun, or qp_mpirun using the current +Runs qp_run, \fBqp_srun\fP, or \fBqp_mpirun\fP using the current \fI\%EZFIO\fP directory. .UNINDENT .INDENT 0.0 diff --git a/man/rs_ks_scf.1 b/man/rs_ks_scf.1 index 2c7a715e..1fc27949 100644 --- a/man/rs_ks_scf.1 +++ b/man/rs_ks_scf.1 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "RS_KS_SCF" "1" "Jan 25, 2019" "2.0" "Quantum Package" +.TH "RS_KS_SCF" "1" "Jan 29, 2019" "2.0" "Quantum Package" .SH NAME rs_ks_scf \- | Quantum Package > . diff --git a/man/save_natorb.1 b/man/save_natorb.1 index b46fdad8..e4e368a2 100644 --- a/man/save_natorb.1 +++ b/man/save_natorb.1 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "SAVE_NATORB" "1" "Jan 25, 2019" "2.0" "Quantum Package" +.TH "SAVE_NATORB" "1" "Jan 29, 2019" "2.0" "Quantum Package" .SH NAME save_natorb \- | Quantum Package > . diff --git a/man/save_one_e_dm.1 b/man/save_one_e_dm.1 index 80fb6ff2..4ce589ab 100644 --- a/man/save_one_e_dm.1 +++ b/man/save_one_e_dm.1 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "SAVE_ONE_E_DM" "1" "Jan 25, 2019" "2.0" "Quantum Package" +.TH "SAVE_ONE_E_DM" "1" "Jan 29, 2019" "2.0" "Quantum Package" .SH NAME save_one_e_dm \- | Quantum Package > . diff --git a/man/save_ortho_mos.1 b/man/save_ortho_mos.1 index 0cdfc0ce..a3183723 100644 --- a/man/save_ortho_mos.1 +++ b/man/save_ortho_mos.1 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "SAVE_ORTHO_MOS" "1" "Jan 25, 2019" "2.0" "Quantum Package" +.TH "SAVE_ORTHO_MOS" "1" "Jan 29, 2019" "2.0" "Quantum Package" .SH NAME save_ortho_mos \- | Quantum Package > . diff --git a/man/scf.1 b/man/scf.1 index cc0d3b14..9ff63737 100644 --- a/man/scf.1 +++ b/man/scf.1 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "SCF" "1" "Jan 25, 2019" "2.0" "Quantum Package" +.TH "SCF" "1" "Jan 29, 2019" "2.0" "Quantum Package" .SH NAME scf \- | Quantum Package > . diff --git a/man/write_integrals_erf.1 b/man/write_integrals_erf.1 index 45689b7b..71b989c6 100644 --- a/man/write_integrals_erf.1 +++ b/man/write_integrals_erf.1 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "WRITE_INTEGRALS_ERF" "1" "Jan 25, 2019" "2.0" "Quantum Package" +.TH "WRITE_INTEGRALS_ERF" "1" "Jan 29, 2019" "2.0" "Quantum Package" .SH NAME write_integrals_erf \- | Quantum Package > . @@ -32,7 +32,8 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .. .INDENT 0.0 .INDENT 3.5 -Saves the two\-electron integrals with the erf(\emu r_{12})/r_{12} oprerator into the EZFIO folder +Saves the two\-electron integrals with the $erf(mu r_{12})/r_{12}$ +oprerator into the EZFIO directory. .sp Needs: .INDENT 0.0 diff --git a/src/ao_basis/README.rst b/src/ao_basis/README.rst index 753dd12b..6adfdd82 100644 --- a/src/ao_basis/README.rst +++ b/src/ao_basis/README.rst @@ -17,9 +17,13 @@ The |AO| coefficients are normalized as: {\tilde c}_{ki} = \frac{c_{ki}}{ \int \left( (x-X_A)^a (y-Y_A)^b (z-Z_A)^c e^{-\gamma_{ki} |{\bf r} - {\bf R}_A|^2} \right)^2 dr} -Warning: `ao_coef` contains the |AO| coefficients given in input. These do not -include the normalization constant of the |AO|. The `ao_coef_normalized` provider includes -this normalization factor. + +.. warning:: + + `ao_coef` contains the |AO| coefficients given in input. These do not + include the normalization constant of the |AO|. The `ao_coef_normalized` + provider includes this normalization factor. + The |AOs| are also sorted by increasing exponent to accelerate the calculation of the two electron integrals. diff --git a/src/ao_basis/aos_value.irp.f b/src/ao_basis/aos_value.irp.f index dba696a2..31dfd204 100644 --- a/src/ao_basis/aos_value.irp.f +++ b/src/ao_basis/aos_value.irp.f @@ -1,7 +1,7 @@ double precision function ao_value(i,r) implicit none BEGIN_DOC -! return the value of the ith ao at point r +! Returns the value of the i-th ao at point $\textbf{r}$ END_DOC double precision, intent(in) :: r(3) integer, intent(in) :: i @@ -35,7 +35,8 @@ end double precision function primitive_value(i,j,r) implicit none BEGIN_DOC -! return the value of the jth primitive of ith ao at point r WITHOUT THE COEF +! Returns the value of the j-th primitive of the i-th |AO| at point $\textbf{r} +! **without the coefficient** END_DOC double precision, intent(in) :: r(3) integer, intent(in) :: i,j @@ -68,7 +69,7 @@ end subroutine give_all_aos_at_r_old(r,aos_array) implicit none BEGIN_dOC -! gives the values of aos at a given point r +! Gives the values of |AOs| at a given point $\textbf{r}$ END_DOC double precision, intent(in) :: r(3) double precision, intent(out) :: aos_array(ao_num) @@ -83,8 +84,9 @@ end subroutine give_all_aos_at_r(r,aos_array) implicit none BEGIN_dOC -! input : r == r(1) = x and so on -! aos_array(i) = aos(i) evaluated in r +! input : r == r(1) = x and so on +! +! output : aos_array(i) = aos(i) evaluated in $\textbf{r}$ END_DOC double precision, intent(in) :: r(3) double precision, intent(out) :: aos_array(ao_num) @@ -121,9 +123,13 @@ end subroutine give_all_aos_and_grad_at_r(r,aos_array,aos_grad_array) implicit none BEGIN_DOC -! input : r(1) ==> r(1) = x, r(2) = y, r(3) = z -! output : aos_array(i) = ao(i) evaluated at r -! : aos_grad_array(1,i) = gradient X of the ao(i) evaluated at r +! input : r(1) ==> r(1) = x, r(2) = y, r(3) = z +! +! output : +! +! * aos_array(i) = ao(i) evaluated at ro +! * aos_grad_array(1,i) = gradient X of the ao(i) evaluated at $\textbf{r}$ +! END_DOC double precision, intent(in) :: r(3) double precision, intent(out) :: aos_array(ao_num) @@ -187,9 +193,12 @@ end subroutine give_all_aos_and_grad_and_lapl_at_r(r,aos_array,aos_grad_array,aos_lapl_array) implicit none BEGIN_DOC -! input : r(1) ==> r(1) = x, r(2) = y, r(3) = z -! output : aos_array(i) = ao(i) evaluated at r -! : aos_grad_array(1,i) = gradient X of the ao(i) evaluated at r +! input : r(1) ==> r(1) = x, r(2) = y, r(3) = z +! +! output : +! +! * aos_array(i) = ao(i) evaluated at $\textbf{r}$ +! * aos_grad_array(1,i) = $\nabla_x$ of the ao(i) evaluated at $\textbf{r}$ END_DOC double precision, intent(in) :: r(3) double precision, intent(out) :: aos_array(ao_num) diff --git a/src/ao_one_e_ints/kin_ao_ints.irp.f b/src/ao_one_e_ints/kin_ao_ints.irp.f index 8e981d77..b87e2a22 100644 --- a/src/ao_one_e_ints/kin_ao_ints.irp.f +++ b/src/ao_one_e_ints/kin_ao_ints.irp.f @@ -5,8 +5,10 @@ BEGIN_DOC ! Second derivative matrix elements in the |AO| basis. ! - ! :math:`{\tt ao\_deriv2\_x} = - ! \langle \chi_i(x,y,z) | \frac{\partial^2}{\partial x^2} |\chi_j (x,y,z) \rangle` + ! .. math:: + ! + ! {\tt ao\_deriv2\_x} = + ! \langle \chi_i(x,y,z) | \frac{\partial^2}{\partial x^2} |\chi_j (x,y,z) \rangle ! END_DOC integer :: i,j,n,l @@ -122,7 +124,8 @@ BEGIN_PROVIDER [double precision, ao_kinetic_integrals, (ao_num,ao_num)] BEGIN_DOC ! Kinetic energy integrals in the |AO| basis. ! - ! :math:`\langle \chi_i |\hat{T}| \chi_j \rangle` + ! $\langle \chi_i |\hat{T}| \chi_j \rangle$ + ! END_DOC integer :: i,j,k,l diff --git a/src/ao_one_e_ints/pot_ao_erf_ints.irp.f b/src/ao_one_e_ints/pot_ao_erf_ints.irp.f index 66637420..42505194 100644 --- a/src/ao_one_e_ints/pot_ao_erf_ints.irp.f +++ b/src/ao_one_e_ints/pot_ao_erf_ints.irp.f @@ -2,7 +2,7 @@ subroutine give_all_erf_kl_ao(integrals_ao,mu_in,C_center) implicit none BEGIN_DOC ! Subroutine that returns all integrals over $r$ of type - ! $\frac{ \erf(\mu * |r-R_C|) }{ |r-R_C| }$ + ! $\frac{ \erf(\mu * | r - R_C | ) }{ | r - R_C | }$ END_DOC double precision, intent(in) :: mu_in,C_center(3) double precision, intent(out) :: integrals_ao(ao_num,ao_num) @@ -20,7 +20,7 @@ double precision function NAI_pol_mult_erf_ao(i_ao,j_ao,mu_in,C_center) implicit none BEGIN_DOC ! Computes the following integral : - ! $\int_{-\infty}^{infty} dr \chi_i(r) \chi_j(r) \frac{\erf(\mu |r-R_C|)}{|r-R_C|}$. + ! $\int_{-\infty}^{infty} dr \chi_i(r) \chi_j(r) \frac{\erf(\mu | r - R_C | )}{ | r - R_C | }$. END_DOC integer, intent(in) :: i_ao,j_ao double precision, intent(in) :: mu_in, C_center(3) @@ -51,8 +51,12 @@ end double precision function NAI_pol_mult_erf(A_center,B_center,power_A,power_B,alpha,beta,C_center,n_pt_in,mu_in) BEGIN_DOC ! Computes the following integral : - ! $\int dr (x-A_x)^a (x-B_x)^b \exp(-\alpha (x-A_x)^2 - \beta (x-B_x)^2 ) - ! \frac{\erf(\mu |r-R_C|)}{|r-R_c|}$. + ! + ! .. math:: + ! + ! \int dr (x-A_x)^a (x-B_x)^b \exp(-\alpha (x-A_x)^2 - \beta (x-B_x)^2 ) + ! \frac{\erf(\mu | r - R_C | )}{ | r - R_C | }$. + ! END_DOC implicit none @@ -126,7 +130,8 @@ end subroutine give_polynomial_mult_center_one_e_erf_opt(A_center,B_center,alpha,beta,& power_A,power_B,C_center,n_pt_in,d,n_pt_out,mu_in,p,p_inv,p_inv_2,p_new,P_center) BEGIN_DOC - ! Returns the explicit polynomial in terms of the $t$ variable of the following polynomial: + ! Returns the explicit polynomial in terms of the $t$ variable of the + ! following polynomial: ! ! $I_{x1}(a_x, d_x,p,q) \times I_{x1}(a_y, d_y,p,q) \times I_{x1}(a_z, d_z,p,q)$. END_DOC @@ -244,7 +249,8 @@ end subroutine give_polynomial_mult_center_one_e_erf(A_center,B_center,alpha,beta,& power_A,power_B,C_center,n_pt_in,d,n_pt_out,mu_in) BEGIN_DOC - ! Returns the explicit polynomial in terms of the $t$ variable of the following polynomial: + ! Returns the explicit polynomial in terms of the $t$ variable of the + ! following polynomial: ! ! $I_{x1}(a_x, d_x,p,q) \times I_{x1}(a_y, d_y,p,q) \times I_{x1}(a_z, d_z,p,q)$. END_DOC @@ -262,7 +268,6 @@ subroutine give_polynomial_mult_center_one_e_erf(A_center,B_center,alpha,beta,& double precision :: accu, pq_inv, p10_1, p10_2, p01_1, p01_2 double precision :: p,P_center(3),rho,p_inv,p_inv_2 accu = 0.d0 - !COMPTEUR irp_rdtsc1 = irp_rdtsc() ASSERT (n_pt_in > 1) p = alpha+beta p_inv = 1.d0/p diff --git a/src/ao_two_e_erf_ints/two_e_integrals_erf.irp.f b/src/ao_two_e_erf_ints/two_e_integrals_erf.irp.f index 24a48e32..4433690f 100644 --- a/src/ao_two_e_erf_ints/two_e_integrals_erf.irp.f +++ b/src/ao_two_e_erf_ints/two_e_integrals_erf.irp.f @@ -458,11 +458,13 @@ end double precision function ERI_erf(alpha,beta,delta,gama,a_x,b_x,c_x,d_x,a_y,b_y,c_y,d_y,a_z,b_z,c_z,d_z) implicit none BEGIN_DOC - ! ATOMIC PRIMTIVE two-electron integral between the 4 primitives :: - ! primitive_1 = x1**(a_x) y1**(a_y) z1**(a_z) exp(-alpha * r1**2) - ! primitive_2 = x1**(b_x) y1**(b_y) z1**(b_z) exp(- beta * r1**2) - ! primitive_3 = x2**(c_x) y2**(c_y) z2**(c_z) exp(-delta * r2**2) - ! primitive_4 = x2**(d_x) y2**(d_y) z2**(d_z) exp(- gama * r2**2) + ! Atomic primtive two-electron integral between the 4 primitives : + ! + ! * primitive 1 : $x_1^{a_x} y_1^{a_y} z_1^{a_z} \exp(-\alpha * r1^2)$ + ! * primitive 2 : $x_1^{b_x} y_1^{b_y} z_1^{b_z} \exp(- \beta * r1^2)$ + ! * primitive 3 : $x_2^{c_x} y_2^{c_y} z_2^{c_z} \exp(-\delta * r2^2)$ + ! * primitive 4 : $x_2^{d_x} y_2^{d_y} z_2^{d_z} \exp(-\gamma * r2^2)$ + ! END_DOC double precision, intent(in) :: delta,gama,alpha,beta integer, intent(in) :: a_x,b_x,c_x,d_x,a_y,b_y,c_y,d_y,a_z,b_z,c_z,d_z @@ -517,9 +519,11 @@ end subroutine integrale_new_erf(I_f,a_x,b_x,c_x,d_x,a_y,b_y,c_y,d_y,a_z,b_z,c_z,d_z,p,q,n_pt) BEGIN_DOC - ! calculate the integral of the polynom :: - ! I_x1(a_x+b_x, c_x+d_x,p,q) * I_x1(a_y+b_y, c_y+d_y,p,q) * I_x1(a_z+b_z, c_z+d_z,p,q) - ! between ( 0 ; 1) + ! Calculate the integral of the polynomial : + ! + ! $I_x1(a_x+b_x, c_x+d_x,p,q) \, I_x1(a_y+b_y, c_y+d_y,p,q) \, I_x1(a_z+b_z, c_z+d_z,p,q)$ + ! + ! between $( 0 ; 1)$ END_DOC diff --git a/src/ao_two_e_ints/two_e_integrals.irp.f b/src/ao_two_e_ints/two_e_integrals.irp.f index ca3b950d..3ecdbbb2 100644 --- a/src/ao_two_e_ints/two_e_integrals.irp.f +++ b/src/ao_two_e_ints/two_e_integrals.irp.f @@ -641,9 +641,10 @@ end subroutine integrale_new(I_f,a_x,b_x,c_x,d_x,a_y,b_y,c_y,d_y,a_z,b_z,c_z,d_z,p,q,n_pt) BEGIN_DOC - ! calculate the integral of the polynom :: - ! I_x1(a_x+b_x, c_x+d_x,p,q) * I_x1(a_y+b_y, c_y+d_y,p,q) * I_x1(a_z+b_z, c_z+d_z,p,q) - ! between ( 0 ; 1) + ! Calculates the integral of the polynomial : + ! + ! $I_{x_1}(a_x+b_x,c_x+d_x,p,q) \, I_{x_1}(a_y+b_y,c_y+d_y,p,q) \, I_{x_1}(a_z+b_z,c_z+d_z,p,q)$ + ! in $( 0 ; 1)$ END_DOC @@ -775,8 +776,9 @@ integer function n_pt_sup(a_x,b_x,c_x,d_x,a_y,b_y,c_y,d_y,a_z,b_z,c_z,d_z) implicit none BEGIN_DOC ! Returns the upper boundary of the degree of the polynomial involved in the - ! bielctronic integral : - ! Ix(a_x,b_x,c_x,d_x) * Iy(a_y,b_y,c_y,d_y) * Iz(a_z,b_z,c_z,d_z) + ! two-electron integral : + ! + ! $I_x(a_x,b_x,c_x,d_x) \, I_y(a_y,b_y,c_y,d_y) \, I_z(a_z,b_z,c_z,d_z)$ END_DOC integer :: a_x,b_x,c_x,d_x,a_y,b_y,c_y,d_y,a_z,b_z,c_z,d_z n_pt_sup = shiftl( a_x+b_x+c_x+d_x + a_y+b_y+c_y+d_y + a_z+b_z+c_z+d_z,1 ) @@ -790,7 +792,8 @@ subroutine give_polynom_mult_center_x(P_center,Q_center,a_x,d_x,p,q,n_pt_in,pq_i BEGIN_DOC ! subroutine that returns the explicit polynom in term of the "t" ! variable of the following polynomw : - ! I_x1(a_x, d_x,p,q) * I_x1(a_y, d_y,p,q) * I_x1(a_z, d_z,p,q) + ! + ! $I_{x_1}(a_x,d_x,p,q) \, I_{x_1}(a_y,d_y,p,q) \ I_{x_1}(a_z,d_z,p,q)$ END_DOC integer, intent(in) :: n_pt_in integer,intent(out) :: n_pt_out @@ -851,7 +854,7 @@ end subroutine I_x1_pol_mult(a,c,B_10,B_01,B_00,C_00,D_00,d,nd,n_pt_in) implicit none BEGIN_DOC - ! recursive function involved in the two-electron integral + ! Recursive function involved in the two-electron integral END_DOC integer , intent(in) :: n_pt_in include 'utils/constants.include.F' @@ -885,7 +888,7 @@ end recursive subroutine I_x1_pol_mult_recurs(a,c,B_10,B_01,B_00,C_00,D_00,d,nd,n_pt_in) implicit none BEGIN_DOC - ! recursive function involved in the two-electron integral + ! Recursive function involved in the two-electron integral END_DOC integer , intent(in) :: n_pt_in include 'utils/constants.include.F' @@ -966,7 +969,7 @@ end recursive subroutine I_x1_pol_mult_a1(c,B_10,B_01,B_00,C_00,D_00,d,nd,n_pt_in) implicit none BEGIN_DOC - ! recursive function involved in the two-electron integral + ! Recursive function involved in the two-electron integral END_DOC integer , intent(in) :: n_pt_in include 'utils/constants.include.F' @@ -1017,7 +1020,7 @@ end recursive subroutine I_x1_pol_mult_a2(c,B_10,B_01,B_00,C_00,D_00,d,nd,n_pt_in) implicit none BEGIN_DOC - ! recursive function involved in the two-electron integral + ! Recursive function involved in the two-electron integral END_DOC integer , intent(in) :: n_pt_in include 'utils/constants.include.F' @@ -1075,7 +1078,7 @@ end recursive subroutine I_x2_pol_mult(c,B_10,B_01,B_00,C_00,D_00,d,nd,dim) implicit none BEGIN_DOC - ! recursive function involved in the two-electron integral + ! Recursive function involved in the two-electron integral END_DOC integer , intent(in) :: dim include 'utils/constants.include.F' diff --git a/src/cipsi/README.rst b/src/cipsi/README.rst index 401c0cc6..054f938f 100644 --- a/src/cipsi/README.rst +++ b/src/cipsi/README.rst @@ -43,7 +43,7 @@ By default, the program will stop when more than one million determinants have been selected, or when the |PT2| energy is below :math:`10^{-4}`. The variational and |PT2| energies of the iterations are stored in the -|EZFIO| database, in the :ref:`iterations` module. +|EZFIO| database, in the :ref:`module_iterations` module. diff --git a/src/cipsi/pt2_stoch_routines.irp.f b/src/cipsi/pt2_stoch_routines.irp.f index a994d331..d93d977a 100644 --- a/src/cipsi/pt2_stoch_routines.irp.f +++ b/src/cipsi/pt2_stoch_routines.irp.f @@ -330,8 +330,7 @@ subroutine pt2_slave_inproc(i) end -subroutine pt2_collector(zmq_socket_pull, E, relative_error, pt2, error, & - variance, norm, b, N_) +subroutine pt2_collector(zmq_socket_pull, E, relative_error, pt2, error, variance, norm, b, N_) use f77_zmq use selection_types use bitmasks diff --git a/src/cis/README.rst b/src/cis/README.rst index b1e3e2e1..61077e69 100644 --- a/src/cis/README.rst +++ b/src/cis/README.rst @@ -2,34 +2,39 @@ cis === -This module contains a CIS program. +This module contains a |CIS| program. The user point of view ---------------------- -The :command:`cis` program performs the CI of the ROHF-like + all single excitations on top of it. -This program can be very useful to : +The :ref:`cis` program performs the CI to obtain the ROHF reference + all +single excitations on top of it. This program can be very useful to: -* **Ground state calculations**: generate a guess for the ground state wave function if one is not sure that the :c:func:`scf` program gave the lowest SCF solution. In combination with :c:func:`save_natorb` it can produce new |MOs| in order to reperform an :c:func:`scf` optimization. +* **Ground state calculations**: generate a guess for the ground state wave + function if one is not sure that the :ref:`scf` program gave the lowest |SCF| + solution. In combination with :ref:`save_natorb` it can produce new |MOs| in + order to reperform an :ref:`scf` optimization. -* **Excited states calculations**: generate guess for all the :option:`determinants n_states` wave functions, that will be used by the :c:func:`fci` program. +* **Excited states calculations**: generate guesses for all the + :option:`determinants n_states` wave functions, that will be used by the + :ref:`fci` program. The main keywords/options to be used are: -* :option:`determinants n_states` : number of states to consider for the |CIS| calculation +* :option:`determinants n_states`: number of states to consider for the |CIS| calculation -* :option:`determinants s2_eig` : force all states to have the desired value of :math:`S^2` +* :option:`determinants s2_eig`: force all states to have the desired value of |S^2| -* :option:`determinants expected_s2` : desired value of :math:`S^2` +* :option:`determinants expected_s2`: desired value of |S^2| -The programmer point of view ----------------------------- +The programmer's point of view +------------------------------ -This module have been built by setting the following rules: +This module was built by setting the following rules: * The only generator determinant is the Hartree-Fock (single-reference method) * All generated singly excited determinants are included in the wave function (no perturbative diff --git a/src/cis/cis.irp.f b/src/cis/cis.irp.f index 6ab2e7e9..48f0b9e5 100644 --- a/src/cis/cis.irp.f +++ b/src/cis/cis.irp.f @@ -1,55 +1,52 @@ program cis implicit none BEGIN_DOC - ! - ! Configuration Interaction with Single excitations. - ! - ! This program takes a reference Slater determinant of ROHF-like - ! occupancy, and performs all single excitations on top of it. - ! Disregarding spatial symmetry, it computes the `n_states` lowest - ! eigenstates of that CI matrix. (see :option:`determinants n_states`) - ! - ! This program can be useful in many cases: - ! - ! - ! Ground state calculation - ! ------------------------ - ! - ! To be sure to have the lowest |SCF| solution, perform an :ref:`scf` - ! (see the :ref:`hartree_fock` module), then a :ref:`cis`, save - ! the natural orbitals (see :ref:`save_natorb`) and re-run an - ! :ref:`scf` optimization from this |MO| guess. - ! - ! - ! Excited states calculations - ! --------------------------- - ! - ! The lowest excited states are much likely to be dominated by - ! single-excitations. Therefore, running a :ref:`cis` will save - ! the `n_states` lowest states within the |CIS| space in the |EZFIO| - ! directory, which can afterwards be used as guess wave functions for - ! a further multi-state |FCI| calculation if :option:`determinants read_wf` - ! is set to |true| before running the :ref:`fci` - ! executable. - ! - ! - ! If :option:`determinants s2_eig` is set to |true|, the |CIS| - ! will only retain states having the expected |S^2| value (see - ! :option:`determinants expected_s2`). Otherwise, the |CIS| will take - ! the lowest :option:`determinants n_states`, whatever multiplicity - ! they are. - ! - ! .. note:: - ! - ! To discard some orbitals, use the :ref:`qp_set_mo_class` - ! command to specify: - ! - ! * *core* orbitals which will be always doubly occupied - ! - ! * *act* orbitals where an electron can be either excited from or to - ! - ! * *del* orbitals which will be never occupied - ! +! +! Configuration Interaction with Single excitations. +! +! This program takes a reference Slater determinant of ROHF-like +! occupancy, and performs all single excitations on top of it. +! Disregarding spatial symmetry, it computes the `n_states` lowest +! eigenstates of that CI matrix. (see :option:`determinants n_states`) +! +! This program can be useful in many cases: +! +! +! 1. Ground state calculation +! +! To be sure to have the lowest |SCF| solution, perform an :ref:`scf` +! (see the :ref:`module_hartree_fock` module), then a :ref:`cis`, save the +! natural orbitals (see :ref:`save_natorb`) and re-run an :ref:`scf` +! optimization from this |MO| guess. +! +! +! 2. Excited states calculations +! +! The lowest excited states are much likely to be dominated by +! single-excitations. Therefore, running a :ref:`cis` will save the +! `n_states` lowest states within the |CIS| space in the |EZFIO| +! directory, which can afterwards be used as guess wave functions for +! a further multi-state |FCI| calculation if :option:`determinants +! read_wf` is set to |true| before running the :ref:`fci` executable. +! +! +! If :option:`determinants s2_eig` is set to |true|, the |CIS| +! will only retain states having the expected |S^2| value (see +! :option:`determinants expected_s2`). Otherwise, the |CIS| will take +! the lowest :option:`determinants n_states`, whatever multiplicity +! they are. +! +! .. note:: +! +! To discard some orbitals, use the :ref:`qp_set_mo_class` +! command to specify: +! +! * *core* orbitals which will be always doubly occupied +! +! * *act* orbitals where an electron can be either excited from or to +! +! * *del* orbitals which will be never occupied +! END_DOC read_wf = .False. SOFT_TOUCH read_wf diff --git a/src/davidson/README.rst b/src/davidson/README.rst index 596abca0..1df5f343 100644 --- a/src/davidson/README.rst +++ b/src/davidson/README.rst @@ -3,12 +3,19 @@ davidson ======== Abstract module for Davidson's diagonalization. -It contains everything required for the Davidson algorithm, dressed or not. If -a dressing is used, the dressing column should be defined and the -:ref:`davidson_dressed` module should be used. If no dressing is required, -the :ref:`davidson` module should be used, and it has a default zero dressing vector. +It contains everything required for the Davidson algorithm, dressed or +not. If a dressing is used, the dressing column should be defined and +the :ref:`module_davidson_dressed` module should be used. If no dressing +is required, the :ref:`module_davidson` module should be used, and it +has a default zero dressing vector. The important providers for that module are: -# `psi_energy` which is the expectation value over the wave function (`psi_det`, `psi_coef`) of the Hamiltonian, dressed or not. It uses the general subroutine `u_0_H_u_0`. -# `psi_energy_two_e` which is the expectation value over the wave function (`psi_det`, `psi_coef`) of the standard two-electrons coulomb operator. It uses the general routine `u_0_H_u_0_two_e`. +#. :c:data:`psi_energy` which is the expectation value over the wave + function (:c:data:`psi_det`, :c:data:`psi_coef`) of the Hamiltonian, + dressed or not. It uses the general subroutine :c:func:`u_0_H_u_0`. + +#. :c:data:`psi_energy_two_e` which is the expectation value over the + wave function (:c:data:`psi_det`, :c:data:`psi_coef`) of the standard + two-electron Coulomb operator. It uses the general routine + :c:func:`u_0_H_u_0_two_e`. diff --git a/src/davidson/davidson_parallel.irp.f b/src/davidson/davidson_parallel.irp.f index bd31af17..b4cb3c7d 100644 --- a/src/davidson/davidson_parallel.irp.f +++ b/src/davidson/davidson_parallel.irp.f @@ -170,7 +170,7 @@ subroutine davidson_push_results(zmq_socket_push, v_t, s_t, imin, imax, task_id) use f77_zmq implicit none BEGIN_DOC -! Push the results of $H|U \rangle$ from a worker to the master. +! Push the results of $H | U \rangle$ from a worker to the master. END_DOC integer(ZMQ_PTR) ,intent(in) :: zmq_socket_push @@ -216,7 +216,7 @@ subroutine davidson_pull_results(zmq_socket_pull, v_t, s_t, imin, imax, task_id) use f77_zmq implicit none BEGIN_DOC -! Pull the results of $H|U \rangle$ on the master. +! Pull the results of $H | U \rangle$ on the master. END_DOC integer(ZMQ_PTR) ,intent(in) :: zmq_socket_pull @@ -307,13 +307,13 @@ subroutine H_S2_u_0_nstates_zmq(v_0,s_0,u_0,N_st,sze) use f77_zmq implicit none BEGIN_DOC - ! Computes $v_0 = H|u_0\rangle$ and $s_0 = S^2 |u_0\rangle$ + ! Computes $v_0 = H | u_0\rangle$ and $s_0 = S^2 | u_0\rangle$ ! ! n : number of determinants ! - ! H_jj : array of $\langle j|H|j \rangle$ + ! H_jj : array of $\langle j | H | j \rangle$ ! - ! S2_jj : array of $\langle j|S^2|j \rangle$ + ! S2_jj : array of $\langle j | S^2 | j \rangle$ END_DOC integer, intent(in) :: N_st, sze double precision, intent(out) :: v_0(sze,N_st), s_0(sze,N_st) diff --git a/src/davidson/u0_h_u0.irp.f b/src/davidson/u0_h_u0.irp.f index f2f87b84..c55cb631 100644 --- a/src/davidson/u0_h_u0.irp.f +++ b/src/davidson/u0_h_u0.irp.f @@ -27,9 +27,9 @@ subroutine u_0_H_u_0(e_0,s_0,u_0,n,keys_tmp,Nint,N_st,sze) use bitmasks implicit none BEGIN_DOC - ! Computes $E_0 = \frac{\langle u_0|H|u_0 \rangle}{\langle u_0|u_0 \rangle}$ + ! Computes $E_0 = \frac{\langle u_0 | H | u_0 \rangle}{\langle u_0 | u_0 \rangle}$ ! - ! and $S_0 = \frac{\langle u_0|S^2|u_0 \rangle}{\langle u_0|u_0 \rangle}$ + ! and $S_0 = \frac{\langle u_0 | S^2 | u_0 \rangle}{\langle u_0 | u_0 \rangle}$ ! ! n : number of determinants ! @@ -80,7 +80,7 @@ subroutine H_S2_u_0_nstates_openmp(v_0,s_0,u_0,N_st,sze) use bitmasks implicit none BEGIN_DOC - ! Computes $v_0 = H|u_0\rangle$ and $s_0 = S^2 |u_0\rangle$. + ! Computes $v_0 = H | u_0\rangle$ and $s_0 = S^2 | u_0\rangle$. ! ! Assumes that the determinants are in psi_det ! @@ -135,7 +135,7 @@ subroutine H_S2_u_0_nstates_openmp_work(v_t,s_t,u_t,N_st,sze,istart,iend,ishift, use bitmasks implicit none BEGIN_DOC - ! Computes $v_t = H|u_t\rangle$ and $s_t = S^2 |u_t\rangle$ + ! Computes $v_t = H | u_t\rangle$ and $s_t = S^2 | u_t\rangle$ ! ! Default should be 1,N_det,0,1 END_DOC @@ -165,7 +165,7 @@ subroutine H_S2_u_0_nstates_openmp_work_$N_int(v_t,s_t,u_t,N_st,sze,istart,iend, use bitmasks implicit none BEGIN_DOC - ! Computes $v_t = H|u_t\rangle$ and $s_t = S^2 |u_t\rangle$ + ! Computes $v_t = H | u_t \\rangle$ and $s_t = S^2 | u_t\\rangle$ ! ! Default should be 1,N_det,0,1 END_DOC diff --git a/src/davidson/u0_wee_u0.irp.f b/src/davidson/u0_wee_u0.irp.f index 8b071629..1b16bfa1 100644 --- a/src/davidson/u0_wee_u0.irp.f +++ b/src/davidson/u0_wee_u0.irp.f @@ -15,7 +15,7 @@ subroutine H_S2_u_0_two_e_nstates_openmp(v_0,s_0,u_0,N_st,sze) use bitmasks implicit none BEGIN_DOC - ! Computes $v_0 = H|u_0\rangle$ and $s_0 = S^2 |u_0\rangle$ + ! Computes $v_0 = H | u_0\rangle$ and $s_0 = S^2 | u_0\rangle$ ! ! Assumes that the determinants are in psi_det ! @@ -69,7 +69,7 @@ subroutine H_S2_u_0_two_e_nstates_openmp_work(v_t,s_t,u_t,N_st,sze,istart,iend,i use bitmasks implicit none BEGIN_DOC - ! Computes $v_t = H|u_t\rangle$ and $s_t = S^2 |u_t\rangle$ + ! Computes $v_t = H | u_t\rangle$ and $s_t = S^2 | u_t\rangle$ ! ! Default should be 1,N_det,0,1 END_DOC @@ -99,7 +99,7 @@ subroutine H_S2_u_0_two_e_nstates_openmp_work_$N_int(v_t,s_t,u_t,N_st,sze,istart use bitmasks implicit none BEGIN_DOC - ! Computes $v_t = H|u_t\rangle$ and $s_t = S^2 |u_t\rangle$ + ! Computes $v_t = H | u_t \\rangle$ and $s_t = S^2 | u_t \\rangle$ ! ! Default should be 1,N_det,0,1 END_DOC @@ -461,7 +461,7 @@ subroutine u_0_H_u_0_two_e(e_0,u_0,n,keys_tmp,Nint,N_st,sze) use bitmasks implicit none BEGIN_DOC - ! Computes $E_0 = \frac{ \langle u_0|H|u_0\rangle}{\langle u_0|u_0 \rangle}$. + ! Computes $E_0 = \frac{ \langle u_0 | H | u_0\rangle}{\langle u_0 | u_0 \rangle}$. ! ! n : number of determinants ! diff --git a/src/determinants/EZFIO.cfg b/src/determinants/EZFIO.cfg index 85c0203d..79cf29eb 100644 --- a/src/determinants/EZFIO.cfg +++ b/src/determinants/EZFIO.cfg @@ -48,12 +48,12 @@ default: 0.99 [n_int] interface: ezfio -doc: Number of integers required to represent bitstrings (set in module :ref:`bitmask`) +doc: Number of integers required to represent bitstrings (set in module :ref:`module_bitmask`) type: N_int_number [bit_kind] interface: ezfio -doc: (set in module :ref:`bitmask`) +doc: (set in module :ref:`module_bitmask`) type: Bit_kind [mo_label] diff --git a/src/determinants/README.rst b/src/determinants/README.rst index 244913b8..df7a2d8e 100644 --- a/src/determinants/README.rst +++ b/src/determinants/README.rst @@ -7,15 +7,15 @@ Contains everything for the computation of the Hamiltonian matrix elements in th 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. +* :c:data:`psi_det`: list of determinants in the wave function used in many routines/providers of the |QP|. +* :c:data:`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. +* :c:func:`i_H_j`: computes the Hamiltonian matrix element between two arbitrary Slater determinants. +* :c:func:`i_H_j_s2`: computes the Hamiltonian and (|S^2|) matrix element between two arbitrary Slater determinants. +* :c:func:`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. +* :c:func:`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`. diff --git a/src/dft_utils_in_r/dm_in_r.irp.f b/src/dft_utils_in_r/dm_in_r.irp.f index 777f7ede..8d277453 100644 --- a/src/dft_utils_in_r/dm_in_r.irp.f +++ b/src/dft_utils_in_r/dm_in_r.irp.f @@ -54,13 +54,19 @@ end subroutine density_and_grad_alpha_beta_and_all_aos_and_grad_aos_at_r(r,dm_a,dm_b, grad_dm_a, grad_dm_b, aos_array, grad_aos_array) implicit none BEGIN_DOC -! input : r(1) ==> r(1) = x, r(2) = y, r(3) = z -! output : dm_a = alpha density evaluated at r -! : dm_b = beta density evaluated at r -! : aos_array(i) = ao(i) evaluated at r -! : grad_dm_a(1) = X gradient of the alpha density evaluated in r -! : grad_dm_a(1) = X gradient of the beta density evaluated in r -! : grad_aos_array(1) = X gradient of the aos(i) evaluated at r +! input: +! +! * r(1) ==> r(1) = x, r(2) = y, r(3) = z +! +! output: +! +! * dm_a = alpha density evaluated at r +! * dm_b = beta density evaluated at r +! * aos_array(i) = ao(i) evaluated at r +! * grad_dm_a(1) = X gradient of the alpha density evaluated in r +! * grad_dm_a(1) = X gradient of the beta density evaluated in r +! * grad_aos_array(1) = X gradient of the aos(i) evaluated at r +! END_DOC double precision, intent(in) :: r(3) double precision, intent(out) :: dm_a(N_states),dm_b(N_states) diff --git a/src/fci/README.rst b/src/fci/README.rst index 603d492c..a6a1f962 100644 --- a/src/fci/README.rst +++ b/src/fci/README.rst @@ -9,42 +9,51 @@ fci The user point of view ---------------------- -* :c:func:`fci` performs |CIPSI| calculations using a stochastic scheme for both the selection and the |PT2| contribution, -* :c:func:`pt2` computes the |PT2| contribution using the wave function stored in the |EZFIO| - database. +* :ref:`fci` performs |CIPSI| calculations using a stochastic scheme for both + the selection and the |PT2| contribution, + +* :ref:`pt2` computes the |PT2| contribution using the wave function stored in + the |EZFIO| database. The main keywords/options for this module are: -* :option:`determinants n_det_max` : maximum number of Slater determinants in the CIPSI wave function. The :command:`fci` program will stop when the size of the CIPSI wave function will exceed :option:`determinants n_det_max`. +* :option:`determinants n_det_max` : maximum number of Slater determinants in + the |CIPSI| wave function. The :ref:`fci` program will stop when the size of + the |CIPSI| wave function will exceed :option:`determinants n_det_max`. -* :option:`perturbation pt2_max` : absolute value of the |PT2| to stop the CIPSI calculation. Once the |PT2| :math:`<` :option:`perturbation pt2_max`, the CIPSI calculation stops. +* :option:`perturbation pt2_max` : absolute value of the |PT2| to stop the + |CIPSI| calculation. Once the abs(|PT2|) :math:`<` :option:`perturbation pt2_max`, + the |CIPSI| calculation stops. -* :option:`determinants n_states` : number of states to consider in the CIPSI calculation. +* :option:`determinants n_states` : number of states to consider in the |CIPSI| + calculation. -* :option:`determinants read_wf` : if False, starts with a ROHF-like determinant, if True, starts with the current wave function(s) stored in the |EZFIO| folder. +* :option:`determinants read_wf` : if |false|, starts with a |ROHF|-like + determinant, if |true|, starts with the current wave function(s) stored in + the |EZFIO| directory. .. note:: - For a multi-state calculation, it is recommended to start with :c:func:`cis` or :c:func:`cisd` - wave functions as a guess. + For a multi-state calculation, it is recommended to start with :ref:`cis` + or :ref:`cisd` wave functions as a guess. -* :option:`determinants s2_eig` : if True, systematically add all the determinants needed to have a pure value of :math:`S^2`. Also, if True, it tracks only the states having the good :option:`determinants expected_s2`. +* :option:`determinants expected_s2` : expected value of |S^2| for the + desired spin multiplicity. -.. note:: - For a multi-state calculation, it is recommended to start with :c:func:`cis` or :c:func:`cisd` - wave functions as a guess. - -* :option:`determinants expected_s2` : expected value of :math:`S^2` for the desired spin multiplicity. +* :option:`determinants s2_eig` : if |true|, systematically add all the + determinants needed to have a pure value of |S^2|. Also, if |true|, it + tracks only the states having the good :option:`determinants expected_s2`. -The programmer point of view ----------------------------- -This module have been created with the :ref:`cipsi` module. +The programmer's point of view +------------------------------ + +This module was created with the :ref:`module_cipsi` module. .. seealso:: - The documentation of the :ref:`cipsi` module. + The documentation of the :ref:`module_cipsi` module. diff --git a/src/fci/fci.irp.f b/src/fci/fci.irp.f index 40f683b2..5c747081 100644 --- a/src/fci/fci.irp.f +++ b/src/fci/fci.irp.f @@ -13,7 +13,7 @@ program fci ! conditions: ! ! * number of Slater determinants > :option:`determinants n_det_max` - ! * |PT2| < :option:`perturbation pt2_max` + ! * abs(|PT2|) less than :option:`perturbation pt2_max` ! ! The following other options can be of interest: ! @@ -30,7 +30,7 @@ program fci ! :option:`determinants expected_s2`. ! ! For excited states calculations, it is recommended to start with - ! :ref:`.cis.` or :ref:`.cisd.` guess wave functions, eventually in + ! :ref:`cis` or :ref:`cisd` guess wave functions, eventually in ! a restricted set of |MOs|, and to set :option:`determinants s2_eig` ! to |true|. ! diff --git a/src/hartree_fock/README.rst b/src/hartree_fock/README.rst index 213ae209..38018eb5 100644 --- a/src/hartree_fock/README.rst +++ b/src/hartree_fock/README.rst @@ -8,9 +8,9 @@ calculations (the spatial part of the |MOs| is common for alpha and beta spinorbitals). The Hartree-Fock algorithm is a |SCF| and therefore is based on the -:ref:`module_scf_utils`` module. +:ref:`module_scf_utils` module. -The Fock matrix is defined in :file:`hartree_fock fock_matrix_hf.irp.f`. +The Fock matrix is defined in :file:`fock_matrix_hf.irp.f`. diff --git a/src/mo_basis/mos.irp.f b/src/mo_basis/mos.irp.f index 1380ee09..5547de0c 100644 --- a/src/mo_basis/mos.irp.f +++ b/src/mo_basis/mos.irp.f @@ -236,9 +236,9 @@ subroutine mix_mo_jk(j,k) BEGIN_DOC ! Rotates the j-th |MO| with the k-th |MO| to give two new |MOs| that are ! - ! * $+ = \frac{1}{\sqrt{2}} (|j\rangle + |k\rangle)$ + ! * $+ = \frac{1}{\sqrt{2}} ( | j\rangle + | k\rangle)$ ! - ! * $- = \frac{1}{\sqrt{2}} (|j\rangle - |k\rangle)$ + ! * $- = \frac{1}{\sqrt{2}} ( | j\rangle - | k\rangle)$ ! ! by convention, the '+' |MO| is in the lowest index (min(j,k)) ! by convention, the '-' |MO| is in the highest index (max(j,k)) diff --git a/src/perturbation/perturbation.template.f b/src/perturbation/perturbation.template.f index e9f5f8fd..88c2160a 100644 --- a/src/perturbation/perturbation.template.f +++ b/src/perturbation/perturbation.template.f @@ -6,7 +6,7 @@ END_SHELL subroutine perturb_buffer_$PERT(i_generator,buffer,buffer_size,e_2_pert_buffer,coef_pert_buffer,sum_e_2_pert,sum_norm_pert,sum_H_pert_diag,N_st,Nint,key_mask,fock_diag_tmp,electronic_energy) implicit none BEGIN_DOC - ! Applly pertubration ``$PERT`` to the buffer of determinants generated in the H_apply + ! Apply pertubration ``$PERT`` to the buffer of determinants generated in the H_apply ! routine. END_DOC @@ -185,7 +185,7 @@ end subroutine perturb_buffer_by_mono_$PERT(i_generator,buffer,buffer_size,e_2_pert_buffer,coef_pert_buffer,sum_e_2_pert,sum_norm_pert,sum_H_pert_diag,N_st,Nint,key_mask,fock_diag_tmp,electronic_energy) implicit none BEGIN_DOC - ! Applly pertubration ``$PERT`` to the buffer of determinants generated in the H_apply + ! Apply pertubration ``$PERT`` to the buffer of determinants generated in the H_apply ! routine. END_DOC diff --git a/src/perturbation/selection.irp.f b/src/perturbation/selection.irp.f index 2d00f35f..f3f03673 100644 --- a/src/perturbation/selection.irp.f +++ b/src/perturbation/selection.irp.f @@ -1,5 +1,4 @@ -subroutine fill_H_apply_buffer_selection(n_selected,det_buffer,e_2_pert_buffer,coef_pert_buffer, & - N_st,Nint,iproc,select_max_out) +subroutine fill_H_apply_buffer_selection(n_selected,det_buffer,e_2_pert_buffer,coef_pert_buffer, N_st,Nint,iproc,select_max_out) use bitmasks implicit none BEGIN_DOC diff --git a/src/scf_utils/roothaan_hall_scf.irp.f b/src/scf_utils/roothaan_hall_scf.irp.f index c0337d7d..faf23a51 100644 --- a/src/scf_utils/roothaan_hall_scf.irp.f +++ b/src/scf_utils/roothaan_hall_scf.irp.f @@ -174,11 +174,11 @@ END_DOC end -subroutine extrapolate_Fock_matrix( & - error_matrix_DIIS,Fock_matrix_DIIS, & - Fock_matrix_AO_,size_Fock_matrix_AO, & - iteration_SCF,dim_DIIS & -) +subroutine extrapolate_Fock_matrix( & + error_matrix_DIIS,Fock_matrix_DIIS, & + Fock_matrix_AO_,size_Fock_matrix_AO, & + iteration_SCF,dim_DIIS & + ) BEGIN_DOC ! Compute the extrapolated Fock matrix using the DIIS procedure diff --git a/src/selectors_cassd/README.rst b/src/selectors_cassd/README.rst index e359ef8e..d4a648d3 100644 --- a/src/selectors_cassd/README.rst +++ b/src/selectors_cassd/README.rst @@ -3,4 +3,4 @@ selectors_cassd =============== Selectors for |CAS-SD| calculations. The selectors are defined as first the -generators from :ref:`Generators_CAS`, and then the rest of the wave function. +generators from :ref:`module_generators_cas`, and then the rest of the wave function. diff --git a/src/tools/molden.irp.f b/src/tools/molden.irp.f index f22592f6..081e74db 100644 --- a/src/tools/molden.irp.f +++ b/src/tools/molden.irp.f @@ -1,7 +1,7 @@ program molden implicit none BEGIN_DOC - ! Produce a Molden file + ! Produces a Molden file END_DOC character*(128) :: output integer :: i_unit_output,getUnitAndOpen diff --git a/src/tools/write_integrals_erf.irp.f b/src/tools/write_integrals_erf.irp.f index b527576d..89c818f6 100644 --- a/src/tools/write_integrals_erf.irp.f +++ b/src/tools/write_integrals_erf.irp.f @@ -1,7 +1,8 @@ program write_integrals_erf implicit none BEGIN_DOC - ! Saves the two-electron integrals with the :math:`erf(\mu r_{12})/r_{12}` oprerator into the EZFIO folder + ! Saves the two-electron integrals with the $erf(\mu r_{12})/r_{12}$ + ! oprerator into the EZFIO directory. END_DOC io_mo_two_e_integrals = 'None' touch io_mo_two_e_integrals From 8e6603c85ac8e82675029926fad9cdebddcc3310 Mon Sep 17 00:00:00 2001 From: Anthony Scemama Date: Tue, 29 Jan 2019 18:27:54 +0100 Subject: [PATCH 3/4] Forgot files --- docs/source/modules/ao_basis.rst | 1258 +++ docs/source/modules/ao_one_e_ints.rst | 2028 +++++ docs/source/modules/ao_two_e_erf_ints.rst | 905 ++ docs/source/modules/ao_two_e_ints.rst | 1285 +++ docs/source/modules/aux_quantities.rst | 52 + docs/source/modules/becke_numerical_grid.rst | 833 ++ docs/source/modules/bitmask.rst | 3489 ++++++++ docs/source/modules/cipsi.rst | 2269 +++++ docs/source/modules/cis.rst | 280 + docs/source/modules/cisd.rst | 273 + docs/source/modules/davidson.rst | 1788 ++++ docs/source/modules/davidson_dressed.rst | 13 + docs/source/modules/davidson_undressed.rst | 75 + docs/source/modules/density_for_dft.rst | 306 + docs/source/modules/determinants.rst | 7922 ++++++++++++++++++ docs/source/modules/dft_keywords.rst | 68 + docs/source/modules/dft_utils_in_r.rst | 882 ++ docs/source/modules/dft_utils_one_e.rst | 3765 +++++++++ docs/source/modules/dressing.rst | 36 + docs/source/modules/electrons.rst | 114 + docs/source/modules/ezfio_files.rst | 760 ++ docs/source/modules/fci.rst | 160 + docs/source/modules/generators_cas.rst | 19 + docs/source/modules/generators_full.rst | 295 + docs/source/modules/hartree_fock.rst | 406 + docs/source/modules/iterations.rst | 204 + docs/source/modules/kohn_sham.rst | 101 + docs/source/modules/kohn_sham_rs.rst | 468 ++ docs/source/modules/mo_basis.rst | 815 ++ docs/source/modules/mo_guess.rst | 160 + docs/source/modules/mo_one_e_ints.rst | 571 ++ docs/source/modules/mo_two_e_erf_ints.rst | 1000 +++ docs/source/modules/mo_two_e_ints.rst | 1312 +++ docs/source/modules/mpi.rst | 291 + docs/source/modules/nuclei.rst | 666 ++ docs/source/modules/perturbation.rst | 998 +++ docs/source/modules/pseudo.rst | 94 + docs/source/modules/psiref_cas.rst | 14 + docs/source/modules/psiref_utils.rst | 16 + docs/source/modules/scf_utils.rst | 795 ++ docs/source/modules/selectors_cassd.rst | 13 + docs/source/modules/selectors_full.rst | 153 + docs/source/modules/selectors_utils.rst | 649 ++ docs/source/modules/single_ref_method.rst | 14 + docs/source/modules/tools.rst | 246 + docs/source/modules/utils.rst | 3025 +++++++ docs/source/modules/zmq.rst | 1513 ++++ man/qp_reset.1 | 66 + 48 files changed, 42465 insertions(+) create mode 100644 docs/source/modules/ao_basis.rst create mode 100644 docs/source/modules/ao_one_e_ints.rst create mode 100644 docs/source/modules/ao_two_e_erf_ints.rst create mode 100644 docs/source/modules/ao_two_e_ints.rst create mode 100644 docs/source/modules/aux_quantities.rst create mode 100644 docs/source/modules/becke_numerical_grid.rst create mode 100644 docs/source/modules/bitmask.rst create mode 100644 docs/source/modules/cipsi.rst create mode 100644 docs/source/modules/cis.rst create mode 100644 docs/source/modules/cisd.rst create mode 100644 docs/source/modules/davidson.rst create mode 100644 docs/source/modules/davidson_dressed.rst create mode 100644 docs/source/modules/davidson_undressed.rst create mode 100644 docs/source/modules/density_for_dft.rst create mode 100644 docs/source/modules/determinants.rst create mode 100644 docs/source/modules/dft_keywords.rst create mode 100644 docs/source/modules/dft_utils_in_r.rst create mode 100644 docs/source/modules/dft_utils_one_e.rst create mode 100644 docs/source/modules/dressing.rst create mode 100644 docs/source/modules/electrons.rst create mode 100644 docs/source/modules/ezfio_files.rst create mode 100644 docs/source/modules/fci.rst create mode 100644 docs/source/modules/generators_cas.rst create mode 100644 docs/source/modules/generators_full.rst create mode 100644 docs/source/modules/hartree_fock.rst create mode 100644 docs/source/modules/iterations.rst create mode 100644 docs/source/modules/kohn_sham.rst create mode 100644 docs/source/modules/kohn_sham_rs.rst create mode 100644 docs/source/modules/mo_basis.rst create mode 100644 docs/source/modules/mo_guess.rst create mode 100644 docs/source/modules/mo_one_e_ints.rst create mode 100644 docs/source/modules/mo_two_e_erf_ints.rst create mode 100644 docs/source/modules/mo_two_e_ints.rst create mode 100644 docs/source/modules/mpi.rst create mode 100644 docs/source/modules/nuclei.rst create mode 100644 docs/source/modules/perturbation.rst create mode 100644 docs/source/modules/pseudo.rst create mode 100644 docs/source/modules/psiref_cas.rst create mode 100644 docs/source/modules/psiref_utils.rst create mode 100644 docs/source/modules/scf_utils.rst create mode 100644 docs/source/modules/selectors_cassd.rst create mode 100644 docs/source/modules/selectors_full.rst create mode 100644 docs/source/modules/selectors_utils.rst create mode 100644 docs/source/modules/single_ref_method.rst create mode 100644 docs/source/modules/tools.rst create mode 100644 docs/source/modules/utils.rst create mode 100644 docs/source/modules/zmq.rst create mode 100644 man/qp_reset.1 diff --git a/docs/source/modules/ao_basis.rst b/docs/source/modules/ao_basis.rst new file mode 100644 index 00000000..240f31d1 --- /dev/null +++ b/docs/source/modules/ao_basis.rst @@ -0,0 +1,1258 @@ +.. _module_ao_basis: + +.. program:: ao_basis + +.. default-role:: option + +======== +ao_basis +======== + +This module describes the atomic orbitals basis set. + +An |AO| :math:`\chi` centered on nucleus A is represented as: + +.. math:: + + \chi_i({\bf r}) = (x-X_A)^a (y-Y_A)^b (z-Z_A)^c \sum_k c_{ki} e^{-\gamma_{ki} |{\bf r} - {\bf R}_A|^2} + + +The |AO| coefficients are normalized as: + +.. math:: + + {\tilde c}_{ki} = \frac{c_{ki}}{ \int \left( (x-X_A)^a (y-Y_A)^b (z-Z_A)^c e^{-\gamma_{ki} |{\bf r} - {\bf R}_A|^2} \right)^2 dr} + + +.. warning:: + + `ao_coef` contains the |AO| coefficients given in input. These do not + include the normalization constant of the |AO|. The `ao_coef_normalized` + provider includes this normalization factor. + + +The |AOs| are also sorted by increasing exponent to accelerate the calculation of +the two electron integrals. + + + + + + +EZFIO parameters +---------------- + +.. option:: ao_basis + + Name of the |AO| basis set + + +.. option:: ao_num + + Number of |AOs| + + +.. option:: ao_prim_num + + Number of primitives per |AO| + + +.. option:: ao_prim_num_max + + Maximum number of primitives + + Default: =maxval(ao_basis.ao_prim_num) + +.. option:: ao_nucl + + Index of the nucleus on which the |AO| is centered + + +.. option:: ao_power + + Powers of x, y and z for each |AO| + + +.. option:: ao_coef + + Primitive coefficients, read from input. Those should not be used directly, as the MOs are expressed on the basis of **normalized** AOs. + + +.. option:: ao_expo + + Exponents for each primitive of each |AO| + + +.. option:: ao_md5 + + MD5 key, specific of the |AO| basis + + +.. option:: ao_cartesian + + If |true|, use |AOs| in Cartesian coordinates (6d,10f,...) + + Default: false + + +Providers +--------- + +.. c:var:: ao_coef_normalization_factor + + + File : :file:`ao_basis/aos.irp.f` + + .. code:: fortran + + double precision, allocatable :: ao_coef_normalized (ao_num,ao_prim_num_max) + double precision, allocatable :: ao_coef_normalization_factor (ao_num) + + + Coefficients including the |AO| normalization + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_coef` + * :c:data:`ao_expo` + * :c:data:`ao_num` + * :c:data:`ao_power` + * :c:data:`ao_prim_num` + * :c:data:`ao_prim_num_max` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_coef_normalization_libint_factor` + * :c:data:`ao_coef_normalized_ordered` + + +.. c:var:: ao_coef_normalization_libint_factor + + + File : :file:`ao_basis/aos.irp.f` + + .. code:: fortran + + double precision, allocatable :: ao_coef_normalization_libint_factor (ao_num) + + + |AO| normalization for interfacing with libint + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_coef_normalized` + * :c:data:`ao_expo` + * :c:data:`ao_l` + * :c:data:`ao_num` + * :c:data:`ao_prim_num` + + + +.. c:var:: ao_coef_normalized + + + File : :file:`ao_basis/aos.irp.f` + + .. code:: fortran + + double precision, allocatable :: ao_coef_normalized (ao_num,ao_prim_num_max) + double precision, allocatable :: ao_coef_normalization_factor (ao_num) + + + Coefficients including the |AO| normalization + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_coef` + * :c:data:`ao_expo` + * :c:data:`ao_num` + * :c:data:`ao_power` + * :c:data:`ao_prim_num` + * :c:data:`ao_prim_num_max` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_coef_normalization_libint_factor` + * :c:data:`ao_coef_normalized_ordered` + + +.. c:var:: ao_coef_normalized_ordered + + + File : :file:`ao_basis/aos.irp.f` + + .. code:: fortran + + double precision, allocatable :: ao_coef_normalized_ordered (ao_num,ao_prim_num_max) + double precision, allocatable :: ao_expo_ordered (ao_num,ao_prim_num_max) + + + Sorted primitives to accelerate 4 index |MO| transformation + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_coef_normalized` + * :c:data:`ao_expo` + * :c:data:`ao_num` + * :c:data:`ao_prim_num` + * :c:data:`ao_prim_num_max` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_coef_normalized_ordered_transp` + * :c:data:`ao_expo_ordered_transp` + + +.. c:var:: ao_coef_normalized_ordered_transp + + + File : :file:`ao_basis/aos.irp.f` + + .. code:: fortran + + double precision, allocatable :: ao_coef_normalized_ordered_transp (ao_prim_num_max,ao_num) + + + Transposed :c:data:`ao_coef_normalized_ordered` + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_coef_normalized_ordered` + * :c:data:`ao_num` + * :c:data:`ao_prim_num_max` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_coef_normalized_ordered_transp_per_nucl` + * :c:data:`ao_deriv2_x` + * :c:data:`ao_deriv_1_x` + * :c:data:`ao_dipole_x` + * :c:data:`ao_integrals_n_e` + * :c:data:`ao_integrals_n_e_per_atom` + * :c:data:`ao_overlap` + * :c:data:`ao_overlap_abs` + * :c:data:`ao_pseudo_integrals_local` + * :c:data:`ao_pseudo_integrals_non_local` + * :c:data:`ao_spread_x` + * :c:data:`ao_two_e_integral_alpha` + * :c:data:`ao_two_e_integral_erf_schwartz` + * :c:data:`ao_two_e_integral_schwartz` + * :c:data:`ao_two_e_integrals_erf_in_map` + * :c:data:`ao_two_e_integrals_in_map` + + +.. c:var:: ao_coef_normalized_ordered_transp_per_nucl + + + File : :file:`ao_basis/aos_transp.irp.f` + + .. code:: fortran + + double precision, allocatable :: ao_coef_normalized_ordered_transp_per_nucl (ao_prim_num_max,N_AOs_max,nucl_num) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_coef_normalized_ordered_transp` + * :c:data:`ao_prim_num` + * :c:data:`ao_prim_num_max` + * :c:data:`nucl_aos_transposed` + * :c:data:`nucl_n_aos` + * :c:data:`nucl_num` + + + +.. c:var:: ao_expo_ordered + + + File : :file:`ao_basis/aos.irp.f` + + .. code:: fortran + + double precision, allocatable :: ao_coef_normalized_ordered (ao_num,ao_prim_num_max) + double precision, allocatable :: ao_expo_ordered (ao_num,ao_prim_num_max) + + + Sorted primitives to accelerate 4 index |MO| transformation + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_coef_normalized` + * :c:data:`ao_expo` + * :c:data:`ao_num` + * :c:data:`ao_prim_num` + * :c:data:`ao_prim_num_max` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_coef_normalized_ordered_transp` + * :c:data:`ao_expo_ordered_transp` + + +.. c:var:: ao_expo_ordered_transp + + + File : :file:`ao_basis/aos.irp.f` + + .. code:: fortran + + double precision, allocatable :: ao_expo_ordered_transp (ao_prim_num_max,ao_num) + + + Transposed :c:data:`ao_expo_ordered` + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_coef_normalized_ordered` + * :c:data:`ao_num` + * :c:data:`ao_prim_num_max` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_deriv2_x` + * :c:data:`ao_deriv_1_x` + * :c:data:`ao_dipole_x` + * :c:data:`ao_expo_ordered_transp_per_nucl` + * :c:data:`ao_integrals_n_e` + * :c:data:`ao_integrals_n_e_per_atom` + * :c:data:`ao_overlap` + * :c:data:`ao_overlap_abs` + * :c:data:`ao_pseudo_integrals_local` + * :c:data:`ao_pseudo_integrals_non_local` + * :c:data:`ao_spread_x` + * :c:data:`ao_two_e_integral_alpha` + * :c:data:`ao_two_e_integral_erf_schwartz` + * :c:data:`ao_two_e_integral_schwartz` + * :c:data:`ao_two_e_integrals_erf_in_map` + * :c:data:`ao_two_e_integrals_in_map` + + +.. c:var:: ao_expo_ordered_transp_per_nucl + + + File : :file:`ao_basis/aos_transp.irp.f` + + .. code:: fortran + + double precision, allocatable :: ao_expo_ordered_transp_per_nucl (ao_prim_num_max,N_AOs_max,nucl_num) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_expo_ordered_transp` + * :c:data:`ao_prim_num` + * :c:data:`ao_prim_num_max` + * :c:data:`nucl_aos_transposed` + * :c:data:`nucl_n_aos` + * :c:data:`nucl_num` + + + +.. c:var:: ao_l + + + File : :file:`ao_basis/aos.irp.f` + + .. code:: fortran + + integer, allocatable :: ao_l (ao_num) + integer :: ao_l_max + character*(128), allocatable :: ao_l_char (ao_num) + + + :math:`l` value of the |AO|: :math`a+b+c` in :math:`x^a y^b z^c` + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`ao_power` + * :c:data:`l_to_charater` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_cart_to_sphe_coef` + * :c:data:`ao_coef_normalization_libint_factor` + * :c:data:`ao_l_char_space` + * :c:data:`nucl_list_shell_aos` + + +.. c:var:: ao_l_char + + + File : :file:`ao_basis/aos.irp.f` + + .. code:: fortran + + integer, allocatable :: ao_l (ao_num) + integer :: ao_l_max + character*(128), allocatable :: ao_l_char (ao_num) + + + :math:`l` value of the |AO|: :math`a+b+c` in :math:`x^a y^b z^c` + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`ao_power` + * :c:data:`l_to_charater` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_cart_to_sphe_coef` + * :c:data:`ao_coef_normalization_libint_factor` + * :c:data:`ao_l_char_space` + * :c:data:`nucl_list_shell_aos` + + +.. c:var:: ao_l_char_space + + + File : :file:`ao_basis/aos.irp.f` + + .. code:: fortran + + character*(4), allocatable :: ao_l_char_space (ao_num) + + + Converts an l value to a string + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_l` + * :c:data:`ao_num` + * :c:data:`ao_power` + + + +.. c:var:: ao_l_max + + + File : :file:`ao_basis/aos.irp.f` + + .. code:: fortran + + integer, allocatable :: ao_l (ao_num) + integer :: ao_l_max + character*(128), allocatable :: ao_l_char (ao_num) + + + :math:`l` value of the |AO|: :math`a+b+c` in :math:`x^a y^b z^c` + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`ao_power` + * :c:data:`l_to_charater` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_cart_to_sphe_coef` + * :c:data:`ao_coef_normalization_libint_factor` + * :c:data:`ao_l_char_space` + * :c:data:`nucl_list_shell_aos` + + +.. c:var:: ao_power_ordered_transp_per_nucl + + + File : :file:`ao_basis/aos_transp.irp.f` + + .. code:: fortran + + integer, allocatable :: ao_power_ordered_transp_per_nucl (3,N_AOs_max,nucl_num) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_power` + * :c:data:`nucl_aos_transposed` + * :c:data:`nucl_n_aos` + * :c:data:`nucl_num` + + + +.. c:var:: ao_prim_num_max + + + File : :file:`ao_basis/aos.irp.f` + + .. code:: fortran + + integer :: ao_prim_num_max + + + Max number of primitives. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_prim_num` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_coef` + * :c:data:`ao_coef_normalized` + * :c:data:`ao_coef_normalized_ordered` + * :c:data:`ao_coef_normalized_ordered_transp` + * :c:data:`ao_coef_normalized_ordered_transp_per_nucl` + * :c:data:`ao_expo` + * :c:data:`ao_expo_ordered_transp` + * :c:data:`ao_expo_ordered_transp_per_nucl` + + +.. c:var:: cart_to_sphe_0 + + + File : :file:`ao_basis/spherical_to_cartesian.irp.f` + + .. code:: fortran + + double precision, allocatable :: cart_to_sphe_0 (1,1) + + + Spherical -> Cartesian Transformation matrix for l=0 + + + +.. c:var:: cart_to_sphe_1 + + + File : :file:`ao_basis/spherical_to_cartesian.irp.f` + + .. code:: fortran + + double precision, allocatable :: cart_to_sphe_1 (3,3) + + + Spherical -> Cartesian Transformation matrix for l=1 + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_cart_to_sphe_coef` + + +.. c:var:: cart_to_sphe_2 + + + File : :file:`ao_basis/spherical_to_cartesian.irp.f` + + .. code:: fortran + + double precision, allocatable :: cart_to_sphe_2 (6,5) + + + Spherical -> Cartesian Transformation matrix for l=2 + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_cart_to_sphe_coef` + + +.. c:var:: cart_to_sphe_3 + + + File : :file:`ao_basis/spherical_to_cartesian.irp.f` + + .. code:: fortran + + double precision, allocatable :: cart_to_sphe_3 (10,7) + + + Spherical -> Cartesian Transformation matrix for l=3 + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_cart_to_sphe_coef` + + +.. c:var:: cart_to_sphe_4 + + + File : :file:`ao_basis/spherical_to_cartesian.irp.f` + + .. code:: fortran + + double precision, allocatable :: cart_to_sphe_4 (15,9) + + + Spherical -> Cartesian Transformation matrix for l=4 + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_cart_to_sphe_coef` + + +.. c:var:: cart_to_sphe_5 + + + File : :file:`ao_basis/spherical_to_cartesian.irp.f` + + .. code:: fortran + + double precision, allocatable :: cart_to_sphe_5 (21,11) + + + Spherical -> Cartesian Transformation matrix for l=5 + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_cart_to_sphe_coef` + + +.. c:var:: cart_to_sphe_6 + + + File : :file:`ao_basis/spherical_to_cartesian.irp.f` + + .. code:: fortran + + double precision, allocatable :: cart_to_sphe_6 (28,13) + + + Spherical -> Cartesian Transformation matrix for l=6 + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_cart_to_sphe_coef` + + +.. c:var:: cart_to_sphe_7 + + + File : :file:`ao_basis/spherical_to_cartesian.irp.f` + + .. code:: fortran + + double precision, allocatable :: cart_to_sphe_7 (36,15) + + + Spherical -> Cartesian Transformation matrix for l=7 + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_cart_to_sphe_coef` + + +.. c:var:: cart_to_sphe_8 + + + File : :file:`ao_basis/spherical_to_cartesian.irp.f` + + .. code:: fortran + + double precision, allocatable :: cart_to_sphe_8 (45,17) + + + Spherical -> Cartesian Transformation matrix for l=8 + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_cart_to_sphe_coef` + + +.. c:var:: cart_to_sphe_9 + + + File : :file:`ao_basis/spherical_to_cartesian.irp.f` + + .. code:: fortran + + double precision, allocatable :: cart_to_sphe_9 (55,19) + + + Spherical -> Cartesian Transformation matrix for l=9 + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_cart_to_sphe_coef` + + +.. c:var:: l_to_charater + + + File : :file:`ao_basis/aos.irp.f` + + .. code:: fortran + + character*(128), allocatable :: l_to_charater (0:7) + + + Character corresponding to the "l" value of an |AO| + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_l` + + +.. c:var:: n_aos_max + + + File : :file:`ao_basis/aos.irp.f` + + .. code:: fortran + + integer, allocatable :: nucl_n_aos (nucl_num) + integer :: n_aos_max + + + Number of |AOs| per atom + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_nucl` + * :c:data:`ao_num` + * :c:data:`nucl_num` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_coef_normalized_ordered_transp_per_nucl` + * :c:data:`ao_expo_ordered_transp_per_nucl` + * :c:data:`ao_power_ordered_transp_per_nucl` + * :c:data:`nucl_aos` + * :c:data:`nucl_aos_transposed` + * :c:data:`nucl_list_shell_aos` + + +.. c:var:: n_pt_max_i_x + + + File : :file:`ao_basis/dimensions_integrals.irp.f` + + .. code:: fortran + + integer :: n_pt_max_integrals + integer :: n_pt_max_i_x + + + Number of points used in the numerical integrations. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_power` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_integrals_n_e` + * :c:data:`ao_integrals_n_e_per_atom` + * :c:data:`ao_two_e_integral_alpha` + * :c:data:`ao_two_e_integral_erf_schwartz` + * :c:data:`ao_two_e_integral_schwartz` + * :c:data:`ao_two_e_integrals_erf_in_map` + * :c:data:`ao_two_e_integrals_in_map` + * :c:data:`gauleg_t2` + + +.. c:var:: n_pt_max_integrals + + + File : :file:`ao_basis/dimensions_integrals.irp.f` + + .. code:: fortran + + integer :: n_pt_max_integrals + integer :: n_pt_max_i_x + + + Number of points used in the numerical integrations. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_power` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_integrals_n_e` + * :c:data:`ao_integrals_n_e_per_atom` + * :c:data:`ao_two_e_integral_alpha` + * :c:data:`ao_two_e_integral_erf_schwartz` + * :c:data:`ao_two_e_integral_schwartz` + * :c:data:`ao_two_e_integrals_erf_in_map` + * :c:data:`ao_two_e_integrals_in_map` + * :c:data:`gauleg_t2` + + +.. c:var:: nucl_aos + + + File : :file:`ao_basis/aos.irp.f` + + .. code:: fortran + + integer, allocatable :: nucl_aos (nucl_num,N_AOs_max) + + + List of |AOs| centered on each atom + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_nucl` + * :c:data:`ao_num` + * :c:data:`nucl_n_aos` + * :c:data:`nucl_num` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`nucl_aos_transposed` + * :c:data:`nucl_list_shell_aos` + + +.. c:var:: nucl_aos_transposed + + + File : :file:`ao_basis/aos_transp.irp.f` + + .. code:: fortran + + integer, allocatable :: nucl_aos_transposed (N_AOs_max,nucl_num) + + + List of AOs attached on each atom + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_nucl` + * :c:data:`ao_num` + * :c:data:`nucl_aos` + * :c:data:`nucl_n_aos` + * :c:data:`nucl_num` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_coef_normalized_ordered_transp_per_nucl` + * :c:data:`ao_expo_ordered_transp_per_nucl` + * :c:data:`ao_power_ordered_transp_per_nucl` + + +.. c:var:: nucl_list_shell_aos + + + File : :file:`ao_basis/aos.irp.f` + + .. code:: fortran + + integer, allocatable :: nucl_list_shell_aos (nucl_num,N_AOs_max) + integer, allocatable :: nucl_num_shell_aos (nucl_num) + + + Index of the shell type |AOs| and of the corresponding |AOs| + By convention, for p,d,f and g |AOs|, we take the index + of the |AO| with the the corresponding power in the x axis + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_l` + * :c:data:`ao_power` + * :c:data:`nucl_aos` + * :c:data:`nucl_n_aos` + * :c:data:`nucl_num` + + + +.. c:var:: nucl_n_aos + + + File : :file:`ao_basis/aos.irp.f` + + .. code:: fortran + + integer, allocatable :: nucl_n_aos (nucl_num) + integer :: n_aos_max + + + Number of |AOs| per atom + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_nucl` + * :c:data:`ao_num` + * :c:data:`nucl_num` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_coef_normalized_ordered_transp_per_nucl` + * :c:data:`ao_expo_ordered_transp_per_nucl` + * :c:data:`ao_power_ordered_transp_per_nucl` + * :c:data:`nucl_aos` + * :c:data:`nucl_aos_transposed` + * :c:data:`nucl_list_shell_aos` + + +.. c:var:: nucl_num_shell_aos + + + File : :file:`ao_basis/aos.irp.f` + + .. code:: fortran + + integer, allocatable :: nucl_list_shell_aos (nucl_num,N_AOs_max) + integer, allocatable :: nucl_num_shell_aos (nucl_num) + + + Index of the shell type |AOs| and of the corresponding |AOs| + By convention, for p,d,f and g |AOs|, we take the index + of the |AO| with the the corresponding power in the x axis + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_l` + * :c:data:`ao_power` + * :c:data:`nucl_aos` + * :c:data:`nucl_n_aos` + * :c:data:`nucl_num` + + + + +Subroutines / functions +----------------------- + +.. c:function:: ao_power_index: + + + File : :file:`ao_basis/aos.irp.f` + + .. code:: fortran + + integer function ao_power_index(nx,ny,nz) + + + Unique index given to a triplet of powers: + + :math:`\frac{1}{2} (l-n_x) (l-n_x+1) + n_z + 1` + + +.. c:function:: ao_value: + + + File : :file:`ao_basis/aos_value.irp.f` + + .. code:: fortran + + double precision function ao_value(i,r) + + + Returns the value of the i-th ao at point $\textbf{r}$ + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_coef_normalized_ordered_transp` + * :c:data:`ao_power` + * :c:data:`ao_expo_ordered_transp` + * :c:data:`ao_prim_num` + * :c:data:`ao_nucl` + * :c:data:`nucl_coord` + + +.. c:function:: give_all_aos_and_grad_and_lapl_at_r: + + + File : :file:`ao_basis/aos_value.irp.f` + + .. code:: fortran + + subroutine give_all_aos_and_grad_and_lapl_at_r(r,aos_array,aos_grad_array,aos_lapl_array) + + + input : r(1) ==> r(1) = x, r(2) = y, r(3) = z + + output : + + * aos_array(i) = ao(i) evaluated at $\textbf{r}$ + * aos_grad_array(1,i) = $\nabla_x$ of the ao(i) evaluated at $\textbf{r}$ + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_expo_ordered_transp_per_nucl` + * :c:data:`ao_power_ordered_transp_per_nucl` + * :c:data:`nucl_n_aos` + * :c:data:`ao_num` + * :c:data:`ao_prim_num` + * :c:data:`ao_coef_normalized_ordered_transp_per_nucl` + * :c:data:`nucl_aos_transposed` + * :c:data:`nucl_coord` + * :c:data:`nucl_num` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`give_all_mos_and_grad_and_lapl_at_r` + + +.. c:function:: give_all_aos_and_grad_at_r: + + + File : :file:`ao_basis/aos_value.irp.f` + + .. code:: fortran + + subroutine give_all_aos_and_grad_at_r(r,aos_array,aos_grad_array) + + + input : r(1) ==> r(1) = x, r(2) = y, r(3) = z + + output : + + * aos_array(i) = ao(i) evaluated at ro + * aos_grad_array(1,i) = gradient X of the ao(i) evaluated at $\textbf{r}$ + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_expo_ordered_transp_per_nucl` + * :c:data:`ao_power_ordered_transp_per_nucl` + * :c:data:`nucl_n_aos` + * :c:data:`ao_num` + * :c:data:`ao_prim_num` + * :c:data:`ao_coef_normalized_ordered_transp_per_nucl` + * :c:data:`nucl_aos_transposed` + * :c:data:`nucl_coord` + * :c:data:`nucl_num` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`give_all_mos_and_grad_at_r` + + +.. c:function:: give_all_aos_at_r: + + + File : :file:`ao_basis/aos_value.irp.f` + + .. code:: fortran + + subroutine give_all_aos_at_r(r,aos_array) + + + input : r == r(1) = x and so on + + output : aos_array(i) = aos(i) evaluated in $\textbf{r}$ + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_expo_ordered_transp_per_nucl` + * :c:data:`ao_power_ordered_transp_per_nucl` + * :c:data:`nucl_n_aos` + * :c:data:`ao_num` + * :c:data:`ao_prim_num` + * :c:data:`ao_coef_normalized_ordered_transp_per_nucl` + * :c:data:`nucl_aos_transposed` + * :c:data:`nucl_coord` + * :c:data:`nucl_num` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`give_all_mos_at_r` + + +.. c:function:: give_all_aos_at_r_old: + + + File : :file:`ao_basis/aos_value.irp.f` + + .. code:: fortran + + subroutine give_all_aos_at_r_old(r,aos_array) + + + Gives the values of |AOs| at a given point $\textbf{r}$ + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + + +.. c:function:: primitive_value: + + + File : :file:`ao_basis/aos_value.irp.f` + + .. code:: fortran + + double precision function primitive_value(i,j,r) + + + Returns the value of the j-th primitive of the i-th |AO| at point $\textbf{r} + **without the coefficient** + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_expo_ordered_transp` + * :c:data:`ao_nucl` + * :c:data:`nucl_coord` + * :c:data:`ao_power` + diff --git a/docs/source/modules/ao_one_e_ints.rst b/docs/source/modules/ao_one_e_ints.rst new file mode 100644 index 00000000..ae8bda04 --- /dev/null +++ b/docs/source/modules/ao_one_e_ints.rst @@ -0,0 +1,2028 @@ +.. _module_ao_one_e_ints: + +.. program:: ao_one_e_ints + +.. default-role:: option + +================== +ao_one_e_integrals +================== + +All the one-electron integrals in the |AO| basis are here. + +The most important providers for usual quantum-chemistry calculation are: + +* `ao_kinetic_integral` which are the kinetic operator integrals on the |AO| basis (see :file:`kin_ao_ints.irp.f`) +* `ao_nucl_elec_integral` which are the nuclear-elctron operator integrals on the |AO| basis (see :file:`pot_ao_ints.irp.f`) +* `ao_one_e_integrals` which are the the h_core operator integrals on the |AO| basis (see :file:`ao_mono_ints.irp.f`) + + +Note that you can find other interesting integrals related to the position operator in :file:`spread_dipole_ao.irp.f`. + + + +EZFIO parameters +---------------- + +.. option:: ao_integrals_e_n + + Nucleus-electron integrals in |AO| basis set + + +.. option:: io_ao_integrals_e_n + + Read/Write |AO| nucleus-electron attraction integrals from/to disk [ Write | Read | None ] + + Default: None + +.. option:: ao_integrals_kinetic + + Kinetic energy integrals in |AO| basis set + + +.. option:: io_ao_integrals_kinetic + + Read/Write |AO| kinetic integrals from/to disk [ Write | Read | None ] + + Default: None + +.. option:: ao_integrals_pseudo + + Pseudopotential integrals in |AO| basis set + + +.. option:: io_ao_integrals_pseudo + + Read/Write |AO| pseudopotential integrals from/to disk [ Write | Read | None ] + + Default: None + +.. option:: ao_integrals_overlap + + Overlap integrals in |AO| basis set + + +.. option:: io_ao_integrals_overlap + + Read/Write |AO| overlap integrals from/to disk [ Write | Read | None ] + + Default: None + +.. option:: ao_one_e_integrals + + Combined integrals in |AO| basis set + + +.. option:: io_ao_one_e_integrals + + Read/Write |AO| one-electron integrals from/to disk [ Write | Read | None ] + + Default: None + + +Providers +--------- + +.. c:var:: ao_cart_to_sphe_coef + + + File : :file:`ao_one_e_ints/ao_ortho_canonical.irp.f` + + .. code:: fortran + + double precision, allocatable :: ao_cart_to_sphe_coef (ao_num,ao_num) + integer :: ao_cart_to_sphe_num + + + Coefficients to go from cartesian to spherical coordinates in the current + basis set + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_l` + * :c:data:`ao_num` + * :c:data:`ao_power` + * :c:data:`cart_to_sphe_1` + * :c:data:`cart_to_sphe_2` + * :c:data:`cart_to_sphe_3` + * :c:data:`cart_to_sphe_4` + * :c:data:`cart_to_sphe_5` + * :c:data:`cart_to_sphe_6` + * :c:data:`cart_to_sphe_7` + * :c:data:`cart_to_sphe_8` + * :c:data:`cart_to_sphe_9` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_cart_to_sphe_inv` + * :c:data:`ao_cart_to_sphe_overlap` + * :c:data:`ao_ortho_canonical_coef` + + +.. c:var:: ao_cart_to_sphe_inv + + + File : :file:`ao_one_e_ints/ao_ortho_canonical.irp.f` + + .. code:: fortran + + double precision, allocatable :: ao_cart_to_sphe_inv (ao_cart_to_sphe_num,ao_num) + + + Inverse of :c:data:`ao_cart_to_sphe_coef` + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_cart_to_sphe_coef` + * :c:data:`ao_num` + + + +.. c:var:: ao_cart_to_sphe_num + + + File : :file:`ao_one_e_ints/ao_ortho_canonical.irp.f` + + .. code:: fortran + + double precision, allocatable :: ao_cart_to_sphe_coef (ao_num,ao_num) + integer :: ao_cart_to_sphe_num + + + Coefficients to go from cartesian to spherical coordinates in the current + basis set + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_l` + * :c:data:`ao_num` + * :c:data:`ao_power` + * :c:data:`cart_to_sphe_1` + * :c:data:`cart_to_sphe_2` + * :c:data:`cart_to_sphe_3` + * :c:data:`cart_to_sphe_4` + * :c:data:`cart_to_sphe_5` + * :c:data:`cart_to_sphe_6` + * :c:data:`cart_to_sphe_7` + * :c:data:`cart_to_sphe_8` + * :c:data:`cart_to_sphe_9` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_cart_to_sphe_inv` + * :c:data:`ao_cart_to_sphe_overlap` + * :c:data:`ao_ortho_canonical_coef` + + +.. c:var:: ao_cart_to_sphe_overlap + + + File : :file:`ao_one_e_ints/ao_ortho_canonical.irp.f` + + .. code:: fortran + + double precision, allocatable :: ao_cart_to_sphe_overlap (ao_cart_to_sphe_num,ao_cart_to_sphe_num) + + + |AO| overlap matrix in the spherical basis set + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_cart_to_sphe_coef` + * :c:data:`ao_num` + * :c:data:`ao_overlap` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_ortho_canonical_coef` + + +.. c:var:: ao_deriv2_x + + + File : :file:`ao_one_e_ints/kin_ao_ints.irp.f` + + .. code:: fortran + + double precision, allocatable :: ao_deriv2_x (ao_num,ao_num) + double precision, allocatable :: ao_deriv2_y (ao_num,ao_num) + double precision, allocatable :: ao_deriv2_z (ao_num,ao_num) + + + Second derivative matrix elements in the |AO| basis. + + .. math:: + + {\tt ao\_deriv2\_x} = + \langle \chi_i(x,y,z) | \frac{\partial^2}{\partial x^2} |\chi_j (x,y,z) \rangle + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_coef_normalized_ordered_transp` + * :c:data:`ao_expo_ordered_transp` + * :c:data:`ao_nucl` + * :c:data:`ao_num` + * :c:data:`ao_power` + * :c:data:`ao_prim_num` + * :c:data:`nucl_coord` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_kinetic_integrals` + + +.. c:var:: ao_deriv2_y + + + File : :file:`ao_one_e_ints/kin_ao_ints.irp.f` + + .. code:: fortran + + double precision, allocatable :: ao_deriv2_x (ao_num,ao_num) + double precision, allocatable :: ao_deriv2_y (ao_num,ao_num) + double precision, allocatable :: ao_deriv2_z (ao_num,ao_num) + + + Second derivative matrix elements in the |AO| basis. + + .. math:: + + {\tt ao\_deriv2\_x} = + \langle \chi_i(x,y,z) | \frac{\partial^2}{\partial x^2} |\chi_j (x,y,z) \rangle + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_coef_normalized_ordered_transp` + * :c:data:`ao_expo_ordered_transp` + * :c:data:`ao_nucl` + * :c:data:`ao_num` + * :c:data:`ao_power` + * :c:data:`ao_prim_num` + * :c:data:`nucl_coord` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_kinetic_integrals` + + +.. c:var:: ao_deriv2_z + + + File : :file:`ao_one_e_ints/kin_ao_ints.irp.f` + + .. code:: fortran + + double precision, allocatable :: ao_deriv2_x (ao_num,ao_num) + double precision, allocatable :: ao_deriv2_y (ao_num,ao_num) + double precision, allocatable :: ao_deriv2_z (ao_num,ao_num) + + + Second derivative matrix elements in the |AO| basis. + + .. math:: + + {\tt ao\_deriv2\_x} = + \langle \chi_i(x,y,z) | \frac{\partial^2}{\partial x^2} |\chi_j (x,y,z) \rangle + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_coef_normalized_ordered_transp` + * :c:data:`ao_expo_ordered_transp` + * :c:data:`ao_nucl` + * :c:data:`ao_num` + * :c:data:`ao_power` + * :c:data:`ao_prim_num` + * :c:data:`nucl_coord` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_kinetic_integrals` + + +.. c:var:: ao_deriv_1_x + + + File : :file:`ao_one_e_ints/spread_dipole_ao.irp.f` + + .. code:: fortran + + double precision, allocatable :: ao_deriv_1_x (ao_num,ao_num) + double precision, allocatable :: ao_deriv_1_y (ao_num,ao_num) + double precision, allocatable :: ao_deriv_1_z (ao_num,ao_num) + + + * array of the integrals of AO_i * d/dx AO_j + + * array of the integrals of AO_i * d/dy AO_j + + * array of the integrals of AO_i * d/dz AO_j + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_coef_normalized_ordered_transp` + * :c:data:`ao_expo_ordered_transp` + * :c:data:`ao_nucl` + * :c:data:`ao_num` + * :c:data:`ao_power` + * :c:data:`ao_prim_num` + * :c:data:`nucl_coord` + + + +.. c:var:: ao_deriv_1_y + + + File : :file:`ao_one_e_ints/spread_dipole_ao.irp.f` + + .. code:: fortran + + double precision, allocatable :: ao_deriv_1_x (ao_num,ao_num) + double precision, allocatable :: ao_deriv_1_y (ao_num,ao_num) + double precision, allocatable :: ao_deriv_1_z (ao_num,ao_num) + + + * array of the integrals of AO_i * d/dx AO_j + + * array of the integrals of AO_i * d/dy AO_j + + * array of the integrals of AO_i * d/dz AO_j + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_coef_normalized_ordered_transp` + * :c:data:`ao_expo_ordered_transp` + * :c:data:`ao_nucl` + * :c:data:`ao_num` + * :c:data:`ao_power` + * :c:data:`ao_prim_num` + * :c:data:`nucl_coord` + + + +.. c:var:: ao_deriv_1_z + + + File : :file:`ao_one_e_ints/spread_dipole_ao.irp.f` + + .. code:: fortran + + double precision, allocatable :: ao_deriv_1_x (ao_num,ao_num) + double precision, allocatable :: ao_deriv_1_y (ao_num,ao_num) + double precision, allocatable :: ao_deriv_1_z (ao_num,ao_num) + + + * array of the integrals of AO_i * d/dx AO_j + + * array of the integrals of AO_i * d/dy AO_j + + * array of the integrals of AO_i * d/dz AO_j + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_coef_normalized_ordered_transp` + * :c:data:`ao_expo_ordered_transp` + * :c:data:`ao_nucl` + * :c:data:`ao_num` + * :c:data:`ao_power` + * :c:data:`ao_prim_num` + * :c:data:`nucl_coord` + + + +.. c:var:: ao_dipole_x + + + File : :file:`ao_one_e_ints/spread_dipole_ao.irp.f` + + .. code:: fortran + + double precision, allocatable :: ao_dipole_x (ao_num,ao_num) + double precision, allocatable :: ao_dipole_y (ao_num,ao_num) + double precision, allocatable :: ao_dipole_z (ao_num,ao_num) + + + * array of the integrals of AO_i * x AO_j + + * array of the integrals of AO_i * y AO_j + + * array of the integrals of AO_i * z AO_j + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_coef_normalized_ordered_transp` + * :c:data:`ao_expo_ordered_transp` + * :c:data:`ao_nucl` + * :c:data:`ao_num` + * :c:data:`ao_power` + * :c:data:`ao_prim_num` + * :c:data:`nucl_coord` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_dipole_x` + + +.. c:var:: ao_dipole_y + + + File : :file:`ao_one_e_ints/spread_dipole_ao.irp.f` + + .. code:: fortran + + double precision, allocatable :: ao_dipole_x (ao_num,ao_num) + double precision, allocatable :: ao_dipole_y (ao_num,ao_num) + double precision, allocatable :: ao_dipole_z (ao_num,ao_num) + + + * array of the integrals of AO_i * x AO_j + + * array of the integrals of AO_i * y AO_j + + * array of the integrals of AO_i * z AO_j + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_coef_normalized_ordered_transp` + * :c:data:`ao_expo_ordered_transp` + * :c:data:`ao_nucl` + * :c:data:`ao_num` + * :c:data:`ao_power` + * :c:data:`ao_prim_num` + * :c:data:`nucl_coord` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_dipole_x` + + +.. c:var:: ao_dipole_z + + + File : :file:`ao_one_e_ints/spread_dipole_ao.irp.f` + + .. code:: fortran + + double precision, allocatable :: ao_dipole_x (ao_num,ao_num) + double precision, allocatable :: ao_dipole_y (ao_num,ao_num) + double precision, allocatable :: ao_dipole_z (ao_num,ao_num) + + + * array of the integrals of AO_i * x AO_j + + * array of the integrals of AO_i * y AO_j + + * array of the integrals of AO_i * z AO_j + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_coef_normalized_ordered_transp` + * :c:data:`ao_expo_ordered_transp` + * :c:data:`ao_nucl` + * :c:data:`ao_num` + * :c:data:`ao_power` + * :c:data:`ao_prim_num` + * :c:data:`nucl_coord` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_dipole_x` + + +.. c:var:: ao_integrals_n_e + + + File : :file:`ao_one_e_ints/pot_ao_ints.irp.f` + + .. code:: fortran + + double precision, allocatable :: ao_integrals_n_e (ao_num,ao_num) + + + Nucleus-electron interaction, in the |AO| basis set. + + :math:`\langle \chi_i | -\sum_A \frac{1}{|r-R_A|} | \chi_j \rangle` + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_coef_normalized_ordered_transp` + * :c:data:`ao_expo_ordered_transp` + * :c:data:`ao_nucl` + * :c:data:`ao_num` + * :c:data:`ao_power` + * :c:data:`ao_prim_num` + * :c:data:`n_pt_max_integrals` + * :c:data:`nucl_charge` + * :c:data:`nucl_coord` + * :c:data:`nucl_num` + * :c:data:`read_ao_integrals_e_n` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_one_e_integrals` + * :c:data:`ao_ortho_canonical_nucl_elec_integrals` + * :c:data:`ao_ortho_lowdin_nucl_elec_integrals` + * :c:data:`mo_integrals_n_e` + + +.. c:var:: ao_integrals_n_e_per_atom + + + File : :file:`ao_one_e_ints/pot_ao_ints.irp.f` + + .. code:: fortran + + double precision, allocatable :: ao_integrals_n_e_per_atom (ao_num,ao_num,nucl_num) + + + Nucleus-electron interaction in the |AO| basis set, per atom A. + + :math:`\langle \chi_i | -\frac{1}{|r-R_A|} | \chi_j \rangle` + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_coef_normalized_ordered_transp` + * :c:data:`ao_expo_ordered_transp` + * :c:data:`ao_nucl` + * :c:data:`ao_num` + * :c:data:`ao_power` + * :c:data:`ao_prim_num` + * :c:data:`n_pt_max_integrals` + * :c:data:`nucl_coord` + * :c:data:`nucl_num` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_integrals_n_e_per_atom` + + +.. c:var:: ao_kinetic_integrals + + + File : :file:`ao_one_e_ints/kin_ao_ints.irp.f` + + .. code:: fortran + + double precision, allocatable :: ao_kinetic_integrals (ao_num,ao_num) + + + Kinetic energy integrals in the |AO| basis. + + :math:`\langle \chi_i |\hat{T}| \chi_j \rangle` + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_deriv2_x` + * :c:data:`ao_num` + * :c:data:`read_ao_integrals_kinetic` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_one_e_integrals` + * :c:data:`mo_kinetic_integrals` + + +.. c:var:: ao_one_e_integrals + + + File : :file:`ao_one_e_ints/ao_one_e_ints.irp.f` + + .. code:: fortran + + double precision, allocatable :: ao_one_e_integrals (ao_num,ao_num) + double precision, allocatable :: ao_one_e_integrals_diag (ao_num) + + + One-electron Hamiltonian in the |AO| basis. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_integrals_n_e` + * :c:data:`ao_kinetic_integrals` + * :c:data:`ao_num` + * :c:data:`ao_pseudo_integrals` + * :c:data:`do_pseudo` + * :c:data:`read_ao_one_e_integrals` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`fock_matrix_ao_alpha` + * :c:data:`hf_energy` + * :c:data:`scf_energy` + + +.. c:var:: ao_one_e_integrals_diag + + + File : :file:`ao_one_e_ints/ao_one_e_ints.irp.f` + + .. code:: fortran + + double precision, allocatable :: ao_one_e_integrals (ao_num,ao_num) + double precision, allocatable :: ao_one_e_integrals_diag (ao_num) + + + One-electron Hamiltonian in the |AO| basis. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_integrals_n_e` + * :c:data:`ao_kinetic_integrals` + * :c:data:`ao_num` + * :c:data:`ao_pseudo_integrals` + * :c:data:`do_pseudo` + * :c:data:`read_ao_one_e_integrals` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`fock_matrix_ao_alpha` + * :c:data:`hf_energy` + * :c:data:`scf_energy` + + +.. c:var:: ao_ortho_canonical_coef + + + File : :file:`ao_one_e_ints/ao_ortho_canonical.irp.f` + + .. code:: fortran + + double precision, allocatable :: ao_ortho_canonical_coef (ao_num,ao_num) + integer :: ao_ortho_canonical_num + + + matrix of the coefficients of the mos generated by the + orthonormalization by the S^{-1/2} canonical transformation of the aos + ao_ortho_canonical_coef(i,j) = coefficient of the ith ao on the jth ao_ortho_canonical orbital + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_cart_to_sphe_coef` + * :c:data:`ao_cart_to_sphe_overlap` + * :c:data:`ao_cartesian` + * :c:data:`ao_num` + * :c:data:`ao_overlap` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_ortho_canonical_coef_inv` + * :c:data:`ao_ortho_canonical_nucl_elec_integrals` + * :c:data:`ao_ortho_canonical_overlap` + * :c:data:`mo_coef` + * :c:data:`mo_num` + + +.. c:var:: ao_ortho_canonical_coef_inv + + + File : :file:`ao_one_e_ints/ao_ortho_canonical.irp.f` + + .. code:: fortran + + double precision, allocatable :: ao_ortho_canonical_coef_inv (ao_num,ao_num) + + + ao_ortho_canonical_coef^(-1) + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`ao_ortho_canonical_coef` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_coef_in_ao_ortho_basis` + + +.. c:var:: ao_ortho_canonical_num + + + File : :file:`ao_one_e_ints/ao_ortho_canonical.irp.f` + + .. code:: fortran + + double precision, allocatable :: ao_ortho_canonical_coef (ao_num,ao_num) + integer :: ao_ortho_canonical_num + + + matrix of the coefficients of the mos generated by the + orthonormalization by the S^{-1/2} canonical transformation of the aos + ao_ortho_canonical_coef(i,j) = coefficient of the ith ao on the jth ao_ortho_canonical orbital + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_cart_to_sphe_coef` + * :c:data:`ao_cart_to_sphe_overlap` + * :c:data:`ao_cartesian` + * :c:data:`ao_num` + * :c:data:`ao_overlap` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_ortho_canonical_coef_inv` + * :c:data:`ao_ortho_canonical_nucl_elec_integrals` + * :c:data:`ao_ortho_canonical_overlap` + * :c:data:`mo_coef` + * :c:data:`mo_num` + + +.. c:var:: ao_ortho_canonical_overlap + + + File : :file:`ao_one_e_ints/ao_ortho_canonical.irp.f` + + .. code:: fortran + + double precision, allocatable :: ao_ortho_canonical_overlap (ao_ortho_canonical_num,ao_ortho_canonical_num) + + + overlap matrix of the ao_ortho_canonical. + Expected to be the Identity + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`ao_ortho_canonical_coef` + * :c:data:`ao_overlap` + + + +.. c:var:: ao_overlap + + + File : :file:`ao_one_e_ints/ao_overlap.irp.f` + + .. code:: fortran + + double precision, allocatable :: ao_overlap (ao_num,ao_num) + double precision, allocatable :: ao_overlap_x (ao_num,ao_num) + double precision, allocatable :: ao_overlap_y (ao_num,ao_num) + double precision, allocatable :: ao_overlap_z (ao_num,ao_num) + + + Overlap between atomic basis functions: + + :math:`\int \chi_i(r) \chi_j(r) dr` + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_coef_normalized_ordered_transp` + * :c:data:`ao_expo_ordered_transp` + * :c:data:`ao_nucl` + * :c:data:`ao_num` + * :c:data:`ao_power` + * :c:data:`ao_prim_num` + * :c:data:`nucl_coord` + * :c:data:`read_ao_integrals_overlap` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_cart_to_sphe_overlap` + * :c:data:`ao_ortho_canonical_coef` + * :c:data:`ao_ortho_canonical_overlap` + * :c:data:`ao_ortho_lowdin_coef` + * :c:data:`ao_ortho_lowdin_overlap` + * :c:data:`fps_spf_matrix_ao` + * :c:data:`mo_overlap` + * :c:data:`s_half` + * :c:data:`s_half_inv` + * :c:data:`s_inv` + * :c:data:`s_mo_coef` + + +.. c:var:: ao_overlap_abs + + + File : :file:`ao_one_e_ints/ao_overlap.irp.f` + + .. code:: fortran + + double precision, allocatable :: ao_overlap_abs (ao_num,ao_num) + + + Overlap between absolute values of atomic basis functions: + + :math:`\int |\chi_i(r)| |\chi_j(r)| dr` + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_coef_normalized_ordered_transp` + * :c:data:`ao_expo_ordered_transp` + * :c:data:`ao_nucl` + * :c:data:`ao_num` + * :c:data:`ao_power` + * :c:data:`ao_prim_num` + * :c:data:`nucl_coord` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_two_e_integral_alpha` + * :c:data:`mo_two_e_int_erf_jj_from_ao` + * :c:data:`mo_two_e_integral_jj_from_ao` + * :c:data:`mo_two_e_integrals_vv_from_ao` + + +.. c:var:: ao_overlap_x + + + File : :file:`ao_one_e_ints/ao_overlap.irp.f` + + .. code:: fortran + + double precision, allocatable :: ao_overlap (ao_num,ao_num) + double precision, allocatable :: ao_overlap_x (ao_num,ao_num) + double precision, allocatable :: ao_overlap_y (ao_num,ao_num) + double precision, allocatable :: ao_overlap_z (ao_num,ao_num) + + + Overlap between atomic basis functions: + + :math:`\int \chi_i(r) \chi_j(r) dr` + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_coef_normalized_ordered_transp` + * :c:data:`ao_expo_ordered_transp` + * :c:data:`ao_nucl` + * :c:data:`ao_num` + * :c:data:`ao_power` + * :c:data:`ao_prim_num` + * :c:data:`nucl_coord` + * :c:data:`read_ao_integrals_overlap` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_cart_to_sphe_overlap` + * :c:data:`ao_ortho_canonical_coef` + * :c:data:`ao_ortho_canonical_overlap` + * :c:data:`ao_ortho_lowdin_coef` + * :c:data:`ao_ortho_lowdin_overlap` + * :c:data:`fps_spf_matrix_ao` + * :c:data:`mo_overlap` + * :c:data:`s_half` + * :c:data:`s_half_inv` + * :c:data:`s_inv` + * :c:data:`s_mo_coef` + + +.. c:var:: ao_overlap_y + + + File : :file:`ao_one_e_ints/ao_overlap.irp.f` + + .. code:: fortran + + double precision, allocatable :: ao_overlap (ao_num,ao_num) + double precision, allocatable :: ao_overlap_x (ao_num,ao_num) + double precision, allocatable :: ao_overlap_y (ao_num,ao_num) + double precision, allocatable :: ao_overlap_z (ao_num,ao_num) + + + Overlap between atomic basis functions: + + :math:`\int \chi_i(r) \chi_j(r) dr` + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_coef_normalized_ordered_transp` + * :c:data:`ao_expo_ordered_transp` + * :c:data:`ao_nucl` + * :c:data:`ao_num` + * :c:data:`ao_power` + * :c:data:`ao_prim_num` + * :c:data:`nucl_coord` + * :c:data:`read_ao_integrals_overlap` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_cart_to_sphe_overlap` + * :c:data:`ao_ortho_canonical_coef` + * :c:data:`ao_ortho_canonical_overlap` + * :c:data:`ao_ortho_lowdin_coef` + * :c:data:`ao_ortho_lowdin_overlap` + * :c:data:`fps_spf_matrix_ao` + * :c:data:`mo_overlap` + * :c:data:`s_half` + * :c:data:`s_half_inv` + * :c:data:`s_inv` + * :c:data:`s_mo_coef` + + +.. c:var:: ao_overlap_z + + + File : :file:`ao_one_e_ints/ao_overlap.irp.f` + + .. code:: fortran + + double precision, allocatable :: ao_overlap (ao_num,ao_num) + double precision, allocatable :: ao_overlap_x (ao_num,ao_num) + double precision, allocatable :: ao_overlap_y (ao_num,ao_num) + double precision, allocatable :: ao_overlap_z (ao_num,ao_num) + + + Overlap between atomic basis functions: + + :math:`\int \chi_i(r) \chi_j(r) dr` + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_coef_normalized_ordered_transp` + * :c:data:`ao_expo_ordered_transp` + * :c:data:`ao_nucl` + * :c:data:`ao_num` + * :c:data:`ao_power` + * :c:data:`ao_prim_num` + * :c:data:`nucl_coord` + * :c:data:`read_ao_integrals_overlap` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_cart_to_sphe_overlap` + * :c:data:`ao_ortho_canonical_coef` + * :c:data:`ao_ortho_canonical_overlap` + * :c:data:`ao_ortho_lowdin_coef` + * :c:data:`ao_ortho_lowdin_overlap` + * :c:data:`fps_spf_matrix_ao` + * :c:data:`mo_overlap` + * :c:data:`s_half` + * :c:data:`s_half_inv` + * :c:data:`s_inv` + * :c:data:`s_mo_coef` + + +.. c:var:: ao_pseudo_integrals + + + File : :file:`ao_one_e_ints/pot_ao_pseudo_ints.irp.f` + + .. code:: fortran + + double precision, allocatable :: ao_pseudo_integrals (ao_num,ao_num) + + + Pseudo-potential integrals in the |AO| basis set. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`ao_pseudo_integrals_local` + * :c:data:`ao_pseudo_integrals_non_local` + * :c:data:`do_pseudo` + * :c:data:`pseudo_klocmax` + * :c:data:`pseudo_kmax` + * :c:data:`read_ao_integrals_pseudo` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_one_e_integrals` + * :c:data:`mo_pseudo_integrals` + + +.. c:var:: ao_pseudo_integrals_local + + + File : :file:`ao_one_e_ints/pot_ao_pseudo_ints.irp.f` + + .. code:: fortran + + double precision, allocatable :: ao_pseudo_integrals_local (ao_num,ao_num) + + + Local pseudo-potential + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_coef_normalized_ordered_transp` + * :c:data:`ao_expo_ordered_transp` + * :c:data:`ao_nucl` + * :c:data:`ao_num` + * :c:data:`ao_power` + * :c:data:`ao_prim_num` + * :c:data:`nucl_charge` + * :c:data:`nucl_coord` + * :c:data:`nucl_num` + * :c:data:`pseudo_klocmax` + * :c:data:`pseudo_v_k_transp` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_pseudo_integrals` + + +.. c:var:: ao_pseudo_integrals_non_local + + + File : :file:`ao_one_e_ints/pot_ao_pseudo_ints.irp.f` + + .. code:: fortran + + double precision, allocatable :: ao_pseudo_integrals_non_local (ao_num,ao_num) + + + Non-local pseudo-potential + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_coef_normalized_ordered_transp` + * :c:data:`ao_expo_ordered_transp` + * :c:data:`ao_nucl` + * :c:data:`ao_num` + * :c:data:`ao_power` + * :c:data:`ao_prim_num` + * :c:data:`nucl_charge` + * :c:data:`nucl_coord` + * :c:data:`nucl_num` + * :c:data:`pseudo_kmax` + * :c:data:`pseudo_lmax` + * :c:data:`pseudo_v_kl_transp` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_pseudo_integrals` + + +.. c:var:: ao_spread_x + + + File : :file:`ao_one_e_ints/spread_dipole_ao.irp.f` + + .. code:: fortran + + double precision, allocatable :: ao_spread_x (ao_num,ao_num) + double precision, allocatable :: ao_spread_y (ao_num,ao_num) + double precision, allocatable :: ao_spread_z (ao_num,ao_num) + + + * array of the integrals of AO_i * x^2 AO_j + + * array of the integrals of AO_i * y^2 AO_j + + * array of the integrals of AO_i * z^2 AO_j + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_coef_normalized_ordered_transp` + * :c:data:`ao_expo_ordered_transp` + * :c:data:`ao_nucl` + * :c:data:`ao_num` + * :c:data:`ao_power` + * :c:data:`ao_prim_num` + * :c:data:`nucl_coord` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_spread_x` + + +.. c:var:: ao_spread_y + + + File : :file:`ao_one_e_ints/spread_dipole_ao.irp.f` + + .. code:: fortran + + double precision, allocatable :: ao_spread_x (ao_num,ao_num) + double precision, allocatable :: ao_spread_y (ao_num,ao_num) + double precision, allocatable :: ao_spread_z (ao_num,ao_num) + + + * array of the integrals of AO_i * x^2 AO_j + + * array of the integrals of AO_i * y^2 AO_j + + * array of the integrals of AO_i * z^2 AO_j + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_coef_normalized_ordered_transp` + * :c:data:`ao_expo_ordered_transp` + * :c:data:`ao_nucl` + * :c:data:`ao_num` + * :c:data:`ao_power` + * :c:data:`ao_prim_num` + * :c:data:`nucl_coord` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_spread_x` + + +.. c:var:: ao_spread_z + + + File : :file:`ao_one_e_ints/spread_dipole_ao.irp.f` + + .. code:: fortran + + double precision, allocatable :: ao_spread_x (ao_num,ao_num) + double precision, allocatable :: ao_spread_y (ao_num,ao_num) + double precision, allocatable :: ao_spread_z (ao_num,ao_num) + + + * array of the integrals of AO_i * x^2 AO_j + + * array of the integrals of AO_i * y^2 AO_j + + * array of the integrals of AO_i * z^2 AO_j + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_coef_normalized_ordered_transp` + * :c:data:`ao_expo_ordered_transp` + * :c:data:`ao_nucl` + * :c:data:`ao_num` + * :c:data:`ao_power` + * :c:data:`ao_prim_num` + * :c:data:`nucl_coord` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_spread_x` + + +.. c:function:: give_polynomial_mult_center_one_e_erf: + + + File : :file:`ao_one_e_ints/pot_ao_erf_ints.irp.f` + + .. code:: fortran + + subroutine give_polynomial_mult_center_one_e_erf(A_center,B_center,alpha,beta,& + power_A,power_B,C_center,n_pt_in,d,n_pt_out,mu_in) + + + Returns the explicit polynomial in terms of the $t$ variable of the + following polynomial: + + $I_{x1}(a_x, d_x,p,q) \times I_{x1}(a_y, d_y,p,q) \times I_{x1}(a_z, d_z,p,q)$. + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`i_x1_pol_mult_one_e` + * :c:func:`multiply_poly` + + +.. c:function:: give_polynomial_mult_center_one_e_erf_opt: + + + File : :file:`ao_one_e_ints/pot_ao_erf_ints.irp.f` + + .. code:: fortran + + subroutine give_polynomial_mult_center_one_e_erf_opt(A_center,B_center,alpha,beta,& + power_A,power_B,C_center,n_pt_in,d,n_pt_out,mu_in,p,p_inv,p_inv_2,p_new,P_center) + + + Returns the explicit polynomial in terms of the $t$ variable of the + following polynomial: + + $I_{x1}(a_x, d_x,p,q) \times I_{x1}(a_y, d_y,p,q) \times I_{x1}(a_z, d_z,p,q)$. + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`nai_pol_mult_erf` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`i_x1_pol_mult_one_e` + * :c:func:`multiply_poly` + + +.. c:function:: i_x1_pol_mult_one_e: + + + File : :file:`ao_one_e_ints/pot_ao_ints.irp.f` + + .. code:: fortran + + recursive subroutine I_x1_pol_mult_one_e(a,c,R1x,R1xp,R2x,d,nd,n_pt_in) + + + Recursive routine involved in the electron-nucleus potential + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`give_polynomial_mult_center_one_e` + * :c:func:`give_polynomial_mult_center_one_e_erf` + * :c:func:`give_polynomial_mult_center_one_e_erf_opt` + * :c:func:`i_x1_pol_mult_one_e` + * :c:func:`i_x2_pol_mult_one_e` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`i_x1_pol_mult_one_e` + * :c:func:`i_x2_pol_mult_one_e` + * :c:func:`multiply_poly` + + +.. c:function:: i_x2_pol_mult_one_e: + + + File : :file:`ao_one_e_ints/pot_ao_ints.irp.f` + + .. code:: fortran + + recursive subroutine I_x2_pol_mult_one_e(c,R1x,R1xp,R2x,d,nd,dim) + + + Recursive routine involved in the electron-nucleus potential + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`i_x1_pol_mult_one_e` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`i_x1_pol_mult_one_e` + * :c:func:`multiply_poly` + + +.. c:var:: pseudo_dz_k_transp + + + File : :file:`ao_one_e_ints/pot_ao_pseudo_ints.irp.f` + + .. code:: fortran + + double precision, allocatable :: pseudo_v_k_transp (pseudo_klocmax,nucl_num) + integer, allocatable :: pseudo_n_k_transp (pseudo_klocmax,nucl_num) + double precision, allocatable :: pseudo_dz_k_transp (pseudo_klocmax,nucl_num) + + + Transposed arrays for pseudopotentials + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`nucl_num` + * :c:data:`pseudo_dz_k` + * :c:data:`pseudo_klocmax` + * :c:data:`pseudo_n_k` + * :c:data:`pseudo_v_k` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_pseudo_integrals_local` + + +.. c:var:: pseudo_dz_kl_transp + + + File : :file:`ao_one_e_ints/pot_ao_pseudo_ints.irp.f` + + .. code:: fortran + + double precision, allocatable :: pseudo_v_kl_transp (pseudo_kmax,0:pseudo_lmax,nucl_num) + integer, allocatable :: pseudo_n_kl_transp (pseudo_kmax,0:pseudo_lmax,nucl_num) + double precision, allocatable :: pseudo_dz_kl_transp (pseudo_kmax,0:pseudo_lmax,nucl_num) + + + Transposed arrays for pseudopotentials + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`nucl_num` + * :c:data:`pseudo_dz_kl` + * :c:data:`pseudo_kmax` + * :c:data:`pseudo_lmax` + * :c:data:`pseudo_n_kl` + * :c:data:`pseudo_v_kl` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_pseudo_integrals_non_local` + + +.. c:var:: pseudo_n_k_transp + + + File : :file:`ao_one_e_ints/pot_ao_pseudo_ints.irp.f` + + .. code:: fortran + + double precision, allocatable :: pseudo_v_k_transp (pseudo_klocmax,nucl_num) + integer, allocatable :: pseudo_n_k_transp (pseudo_klocmax,nucl_num) + double precision, allocatable :: pseudo_dz_k_transp (pseudo_klocmax,nucl_num) + + + Transposed arrays for pseudopotentials + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`nucl_num` + * :c:data:`pseudo_dz_k` + * :c:data:`pseudo_klocmax` + * :c:data:`pseudo_n_k` + * :c:data:`pseudo_v_k` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_pseudo_integrals_local` + + +.. c:var:: pseudo_n_kl_transp + + + File : :file:`ao_one_e_ints/pot_ao_pseudo_ints.irp.f` + + .. code:: fortran + + double precision, allocatable :: pseudo_v_kl_transp (pseudo_kmax,0:pseudo_lmax,nucl_num) + integer, allocatable :: pseudo_n_kl_transp (pseudo_kmax,0:pseudo_lmax,nucl_num) + double precision, allocatable :: pseudo_dz_kl_transp (pseudo_kmax,0:pseudo_lmax,nucl_num) + + + Transposed arrays for pseudopotentials + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`nucl_num` + * :c:data:`pseudo_dz_kl` + * :c:data:`pseudo_kmax` + * :c:data:`pseudo_lmax` + * :c:data:`pseudo_n_kl` + * :c:data:`pseudo_v_kl` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_pseudo_integrals_non_local` + + +.. c:var:: pseudo_v_k_transp + + + File : :file:`ao_one_e_ints/pot_ao_pseudo_ints.irp.f` + + .. code:: fortran + + double precision, allocatable :: pseudo_v_k_transp (pseudo_klocmax,nucl_num) + integer, allocatable :: pseudo_n_k_transp (pseudo_klocmax,nucl_num) + double precision, allocatable :: pseudo_dz_k_transp (pseudo_klocmax,nucl_num) + + + Transposed arrays for pseudopotentials + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`nucl_num` + * :c:data:`pseudo_dz_k` + * :c:data:`pseudo_klocmax` + * :c:data:`pseudo_n_k` + * :c:data:`pseudo_v_k` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_pseudo_integrals_local` + + +.. c:var:: pseudo_v_kl_transp + + + File : :file:`ao_one_e_ints/pot_ao_pseudo_ints.irp.f` + + .. code:: fortran + + double precision, allocatable :: pseudo_v_kl_transp (pseudo_kmax,0:pseudo_lmax,nucl_num) + integer, allocatable :: pseudo_n_kl_transp (pseudo_kmax,0:pseudo_lmax,nucl_num) + double precision, allocatable :: pseudo_dz_kl_transp (pseudo_kmax,0:pseudo_lmax,nucl_num) + + + Transposed arrays for pseudopotentials + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`nucl_num` + * :c:data:`pseudo_dz_kl` + * :c:data:`pseudo_kmax` + * :c:data:`pseudo_lmax` + * :c:data:`pseudo_n_kl` + * :c:data:`pseudo_v_kl` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_pseudo_integrals_non_local` + + +.. c:var:: s_half + + + File : :file:`ao_one_e_ints/ao_overlap.irp.f` + + .. code:: fortran + + double precision, allocatable :: s_half (ao_num,ao_num) + + + :math:`S^{1/2}` + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`ao_overlap` + + + +.. c:var:: s_half_inv + + + File : :file:`ao_one_e_ints/ao_overlap.irp.f` + + .. code:: fortran + + double precision, allocatable :: s_half_inv (AO_num,AO_num) + + + :math:`X = S^{-1/2}` obtained by SVD + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`ao_overlap` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`eigenvalues_fock_matrix_ao` + + +.. c:var:: s_inv + + + File : :file:`ao_one_e_ints/ao_overlap.irp.f` + + .. code:: fortran + + double precision, allocatable :: s_inv (ao_num,ao_num) + + + Inverse of the overlap matrix + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`ao_overlap` + + + + +Subroutines / functions +----------------------- + +.. c:function:: give_all_erf_kl_ao: + + + File : :file:`ao_one_e_ints/pot_ao_erf_ints.irp.f` + + .. code:: fortran + + subroutine give_all_erf_kl_ao(integrals_ao,mu_in,C_center) + + + Subroutine that returns all integrals over $r$ of type + $\frac{ \erf(\mu * | r - R_C | ) }{ | r - R_C | }$ + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + + +.. c:function:: give_polynomial_mult_center_one_e: + + + File : :file:`ao_one_e_ints/pot_ao_ints.irp.f` + + .. code:: fortran + + subroutine give_polynomial_mult_center_one_e(A_center,B_center,alpha,beta,power_A,power_B,C_center,n_pt_in,d,n_pt_out) + + + Returns the explicit polynomial in terms of the "t" variable of the following + + $I_{x1}(a_x, d_x,p,q) \times I_{x1}(a_y, d_y,p,q) \times I_{x1}(a_z, d_z,p,q)$. + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`nai_pol_mult` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`i_x1_pol_mult_one_e` + * :c:func:`multiply_poly` + + +.. c:function:: int_gaus_pol: + + + File : :file:`ao_one_e_ints/pot_ao_ints.irp.f` + + .. code:: fortran + + double precision function int_gaus_pol(alpha,n) + + + Computes the integral: + + $\int_{-\infty}^{\infty} x^n \exp(-\alpha x^2) dx$. + + +.. c:function:: nai_pol_mult: + + + File : :file:`ao_one_e_ints/pot_ao_ints.irp.f` + + .. code:: fortran + + double precision function NAI_pol_mult(A_center,B_center,power_A,power_B,alpha,beta,C_center,n_pt_in) + + + Computes the electron-nucleus attraction with two primitves. + + :math:`\langle g_i | \frac{1}{|r-R_c|} | g_j \rangle` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`give_polynomial_mult_center_one_e` + + +.. c:function:: nai_pol_mult_erf: + + + File : :file:`ao_one_e_ints/pot_ao_erf_ints.irp.f` + + .. code:: fortran + + double precision function NAI_pol_mult_erf(A_center,B_center,power_A,power_B,alpha,beta,C_center,n_pt_in,mu_in) + + + Computes the following integral : + + .. math:: + + \int dr (x-A_x)^a (x-B_x)^b \exp(-\alpha (x-A_x)^2 - \beta (x-B_x)^2 ) + \frac{\erf(\mu | r - R_C | )}{ | r - R_C | }$. + + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`give_polynomial_mult_center_one_e_erf_opt` + + +.. c:function:: nai_pol_mult_erf_ao: + + + File : :file:`ao_one_e_ints/pot_ao_erf_ints.irp.f` + + .. code:: fortran + + double precision function NAI_pol_mult_erf_ao(i_ao,j_ao,mu_in,C_center) + + + Computes the following integral : + $\int_{-\infty}^{infty} dr \chi_i(r) \chi_j(r) \frac{\erf(\mu | r - R_C | )}{ | r - R_C | }$. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_pt_max_integrals` + * :c:data:`ao_coef_normalized_ordered_transp` + * :c:data:`ao_power` + * :c:data:`ao_expo_ordered_transp` + * :c:data:`ao_prim_num` + * :c:data:`ao_nucl` + * :c:data:`nucl_coord` + + +.. c:function:: overlap_bourrin_deriv_x: + + + File : :file:`ao_one_e_ints/spread_dipole_ao.irp.f` + + .. code:: fortran + + subroutine overlap_bourrin_deriv_x(i_component,A_center,B_center,alpha,beta,power_A,power_B,dx,lower_exp_val,overlap_x,nx) + + + + Called by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_deriv_1_x` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`overlap_bourrin_x` + + +.. c:function:: overlap_bourrin_dipole: + + + File : :file:`ao_one_e_ints/spread_dipole_ao.irp.f` + + .. code:: fortran + + subroutine overlap_bourrin_dipole(A_center,B_center,alpha,beta,power_A,power_B,overlap_x,lower_exp_val,dx,nx) + + + + Called by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_dipole_x` + + +.. c:function:: overlap_bourrin_spread: + + + File : :file:`ao_one_e_ints/spread_dipole_ao.irp.f` + + .. code:: fortran + + subroutine overlap_bourrin_spread(A_center,B_center,alpha,beta,power_A,power_B,overlap_x,lower_exp_val,dx,nx) + + + Computes the following integral : + int [-infty ; +infty] of [(x-A_center)^(power_A) * (x-B_center)^power_B * exp(-alpha(x-A_center)^2) * exp(-beta(x-B_center)^2) * x ] + needed for the dipole and those things + + Called by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_spread_x` + + +.. c:function:: overlap_bourrin_x: + + + File : :file:`ao_one_e_ints/spread_dipole_ao.irp.f` + + .. code:: fortran + + subroutine overlap_bourrin_x(A_center,B_center,alpha,beta,power_A,power_B,overlap_x,lower_exp_val,dx,nx) + + + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`overlap_bourrin_deriv_x` + + +.. c:function:: v_e_n: + + + File : :file:`ao_one_e_ints/pot_ao_ints.irp.f` + + .. code:: fortran + + double precision function V_e_n(a_x,a_y,a_z,b_x,b_y,b_z,alpha,beta) + + + Primitve nuclear attraction between the two primitves centered on the same atom. + + $p_1 = x^{a_x} y^{a_y} z^{a_z} \exp(-\alpha r^2)$ + + $p_2 = x^{b_x} y^{b_y} z^{b_z} \exp(-\beta r^2)$ + + +.. c:function:: v_phi: + + + File : :file:`ao_one_e_ints/pot_ao_ints.irp.f` + + .. code:: fortran + + double precision function V_phi(n,m) + + + Computes the angular $\phi$ part of the nuclear attraction integral: + + $\int_{0}^{2 \pi} \cos(\phi)^n \sin(\phi)^m d\phi$. + + +.. c:function:: v_r: + + + File : :file:`ao_one_e_ints/pot_ao_ints.irp.f` + + .. code:: fortran + + double precision function V_r(n,alpha) + + + Computes the radial part of the nuclear attraction integral: + + $\int_{0}^{\infty} r^n \exp(-\alpha r^2) dr$ + + + +.. c:function:: v_theta: + + + File : :file:`ao_one_e_ints/pot_ao_ints.irp.f` + + .. code:: fortran + + double precision function V_theta(n,m) + + + Computes the angular $\theta$ part of the nuclear attraction integral: + + $\int_{0}^{\pi} \cos(\theta)^n \sin(\theta)^m d\theta$ + + +.. c:function:: wallis: + + + File : :file:`ao_one_e_ints/pot_ao_ints.irp.f` + + .. code:: fortran + + double precision function Wallis(n) + + + Wallis integral: + + $\int_{0}^{\pi} \cos(\theta)^n d\theta$. + diff --git a/docs/source/modules/ao_two_e_erf_ints.rst b/docs/source/modules/ao_two_e_erf_ints.rst new file mode 100644 index 00000000..7ee24a88 --- /dev/null +++ b/docs/source/modules/ao_two_e_erf_ints.rst @@ -0,0 +1,905 @@ +.. _module_ao_two_e_erf_ints: + +.. program:: ao_two_e_erf_ints + +.. default-role:: option + +====================== +ao_two_e_erf_ints +====================== + +Here, all two-electron integrals (:math:`erf(\mu r_{12})/r_{12}`) are computed. +As they have 4 indices and many are zero, they are stored in a map, as defined +in :file:`utils/map_module.f90`. + +The main parameter of this module is :option:`ao_two_e_erf_ints mu_erf` which is the range-separation parameter. + +To fetch an |AO| integral, use the +`get_ao_two_e_integral_erf(i,j,k,l,ao_integrals_erf_map)` function. + + +The conventions are: +* For |AO| integrals : (ij|kl) = (11|22) = = <12|12> + + + + + + +EZFIO parameters +---------------- + +.. option:: io_ao_two_e_integrals_erf + + Read/Write |AO| integrals with the long range interaction from/to disk [ Write | Read | None ] + + Default: None + +.. option:: mu_erf + + cutting of the interaction in the range separated model + + Default: 0.5 + + +Providers +--------- + +.. c:var:: ao_integrals_erf_cache + + + File : :file:`ao_two_e_erf_ints/map_integrals_erf.irp.f` + + .. code:: fortran + + double precision, allocatable :: ao_integrals_erf_cache (0:64*64*64*64) + + + Cache of |AO| integrals for fast access + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_integrals_erf_cache_min` + * :c:data:`ao_integrals_erf_map` + * :c:data:`ao_two_e_integrals_erf_in_map` + + + +.. c:var:: ao_integrals_erf_cache_max + + + File : :file:`ao_two_e_erf_ints/map_integrals_erf.irp.f` + + .. code:: fortran + + integer :: ao_integrals_erf_cache_min + integer :: ao_integrals_erf_cache_max + + + Min and max values of the AOs for which the integrals are in the cache + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_integrals_erf_cache` + + +.. c:var:: ao_integrals_erf_cache_min + + + File : :file:`ao_two_e_erf_ints/map_integrals_erf.irp.f` + + .. code:: fortran + + integer :: ao_integrals_erf_cache_min + integer :: ao_integrals_erf_cache_max + + + Min and max values of the AOs for which the integrals are in the cache + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_integrals_erf_cache` + + +.. c:var:: ao_integrals_erf_map + + + File : :file:`ao_two_e_erf_ints/map_integrals_erf.irp.f` + + .. code:: fortran + + type(map_type) :: ao_integrals_erf_map + + + |AO| integrals + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_integrals_erf_cache` + * :c:data:`ao_two_e_integrals_erf_in_map` + * :c:data:`mo_two_e_int_erf_jj_from_ao` + + +.. c:var:: ao_two_e_integral_erf_schwartz + + + File : :file:`ao_two_e_erf_ints/providers_ao_erf.irp.f` + + .. code:: fortran + + double precision, allocatable :: ao_two_e_integral_erf_schwartz (ao_num,ao_num) + + + Needed to compute Schwartz inequalities + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_coef_normalized_ordered_transp` + * :c:data:`ao_expo_ordered_transp` + * :c:data:`ao_nucl` + * :c:data:`ao_num` + * :c:data:`ao_power` + * :c:data:`ao_prim_num` + * :c:data:`n_pt_max_integrals` + * :c:data:`nucl_coord` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_two_e_int_erf_jj_from_ao` + + +.. c:var:: ao_two_e_integrals_erf_in_map + + + File : :file:`ao_two_e_erf_ints/providers_ao_erf.irp.f` + + .. code:: fortran + + logical :: ao_two_e_integrals_erf_in_map + + + Map of Atomic integrals + i(r1) j(r2) 1/r12 k(r1) l(r2) + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_coef_normalized_ordered_transp` + * :c:data:`ao_expo_ordered_transp` + * :c:data:`ao_integrals_erf_map` + * :c:data:`ao_nucl` + * :c:data:`ao_num` + * :c:data:`ao_power` + * :c:data:`ao_prim_num` + * :c:data:`ezfio_filename` + * :c:data:`io_ao_two_e_integrals_erf` + * :c:data:`n_pt_max_integrals` + * :c:data:`nproc` + * :c:data:`nucl_coord` + * :c:data:`read_ao_two_e_integrals_erf` + * :c:data:`zmq_context` + * :c:data:`zmq_socket_pull_tcp_address` + * :c:data:`zmq_state` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_integrals_erf_cache` + * :c:data:`mo_two_e_int_erf_jj_from_ao` + * :c:data:`mo_two_e_integrals_erf_in_map` + + +.. c:function:: general_primitive_integral_erf: + + + File : :file:`ao_two_e_erf_ints/two_e_integrals_erf.irp.f` + + .. code:: fortran + + double precision function general_primitive_integral_erf(dim, & + P_new,P_center,fact_p,p,p_inv,iorder_p, & + Q_new,Q_center,fact_q,q,q_inv,iorder_q) + + + Computes the integral where p,q,r,s are Gaussian primitives + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mu_erf` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`add_poly_multiply` + * :c:func:`give_polynom_mult_center_x` + * :c:func:`multiply_poly` + + + +Subroutines / functions +----------------------- + +.. c:function:: ao_two_e_integral_erf: + + + File : :file:`ao_two_e_erf_ints/two_e_integrals_erf.irp.f` + + .. code:: fortran + + double precision function ao_two_e_integral_erf(i,j,k,l) + + + integral of the AO basis or (ij|kl) + i(r1) j(r1) 1/r12 k(r2) l(r2) + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_pt_max_integrals` + * :c:data:`ao_coef_normalized_ordered_transp` + * :c:data:`ao_power` + * :c:data:`ao_expo_ordered_transp` + * :c:data:`ao_prim_num` + * :c:data:`ao_nucl` + * :c:data:`nucl_coord` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`give_explicit_poly_and_gaussian` + + +.. c:function:: ao_two_e_integral_schwartz_accel_erf: + + + File : :file:`ao_two_e_erf_ints/two_e_integrals_erf.irp.f` + + .. code:: fortran + + double precision function ao_two_e_integral_schwartz_accel_erf(i,j,k,l) + + + integral of the AO basis or (ij|kl) + i(r1) j(r1) 1/r12 k(r2) l(r2) + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_pt_max_integrals` + * :c:data:`ao_integrals_threshold` + * :c:data:`ao_coef_normalized_ordered_transp` + * :c:data:`ao_power` + * :c:data:`ao_expo_ordered_transp` + * :c:data:`ao_prim_num` + * :c:data:`ao_nucl` + * :c:data:`nucl_coord` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`give_explicit_poly_and_gaussian` + + +.. c:function:: ao_two_e_integrals_erf_in_map_collector: + + + File : :file:`ao_two_e_erf_ints/integrals_erf_in_map_slave.irp.f` + + .. code:: fortran + + subroutine ao_two_e_integrals_erf_in_map_collector(zmq_socket_pull) + + + Collects results from the AO integral calculation + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_integrals_erf_map` + * :c:data:`ao_num` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_two_e_integrals_erf_in_map` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`end_zmq_to_qp_run_socket` + * :c:func:`insert_into_ao_integrals_erf_map` + + +.. c:function:: ao_two_e_integrals_erf_in_map_slave: + + + File : :file:`ao_two_e_erf_ints/integrals_erf_in_map_slave.irp.f` + + .. code:: fortran + + subroutine ao_two_e_integrals_erf_in_map_slave(thread,iproc) + + + Computes a buffer of integrals + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`ao_two_e_integrals_erf_in_map_slave_inproc` + * :c:func:`ao_two_e_integrals_erf_in_map_slave_tcp` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`compute_ao_integrals_erf_jl` + * :c:func:`end_zmq_push_socket` + * :c:func:`end_zmq_to_qp_run_socket` + * :c:func:`push_integrals` + + +.. c:function:: ao_two_e_integrals_erf_in_map_slave_inproc: + + + File : :file:`ao_two_e_erf_ints/integrals_erf_in_map_slave.irp.f` + + .. code:: fortran + + subroutine ao_two_e_integrals_erf_in_map_slave_inproc(i) + + + Computes a buffer of integrals. i is the ID of the current thread. + + Called by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_two_e_integrals_erf_in_map` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`ao_two_e_integrals_erf_in_map_slave` + + +.. c:function:: ao_two_e_integrals_erf_in_map_slave_tcp: + + + File : :file:`ao_two_e_erf_ints/integrals_erf_in_map_slave.irp.f` + + .. code:: fortran + + subroutine ao_two_e_integrals_erf_in_map_slave_tcp(i) + + + Computes a buffer of integrals. i is the ID of the current thread. + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`ao_two_e_integrals_erf_in_map_slave` + + +.. c:function:: clear_ao_erf_map: + + + File : :file:`ao_two_e_erf_ints/map_integrals_erf.irp.f` + + .. code:: fortran + + subroutine clear_ao_erf_map + + + Frees the memory of the |AO| map + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_integrals_erf_map` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`map_deinit` + + +.. c:function:: compute_ao_integrals_erf_jl: + + + File : :file:`ao_two_e_erf_ints/two_e_integrals_erf.irp.f` + + .. code:: fortran + + subroutine compute_ao_integrals_erf_jl(j,l,n_integrals,buffer_i,buffer_value) + + + Parallel client for AO integrals + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_overlap_abs` + * :c:data:`ao_num` + * :c:data:`ao_integrals_threshold` + * :c:data:`ao_two_e_integral_erf_schwartz` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`ao_two_e_integrals_erf_in_map_slave` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`two_e_integrals_index` + + +.. c:function:: compute_ao_two_e_integrals_erf: + + + File : :file:`ao_two_e_erf_ints/two_e_integrals_erf.irp.f` + + .. code:: fortran + + subroutine compute_ao_two_e_integrals_erf(j,k,l,sze,buffer_value) + + + Compute AO 1/r12 integrals for all i and fixed j,k,l + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_overlap_abs` + * :c:data:`ao_num` + * :c:data:`ao_two_e_integral_erf_schwartz` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_two_e_int_erf_jj_from_ao` + + +.. c:function:: dump_ao_integrals_erf: + + + File : :file:`ao_two_e_erf_ints/map_integrals_erf.irp.f` + + .. code:: fortran + + subroutine dump_ao_integrals_erf(filename) + + + Save to disk the |AO| erf integrals + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_integrals_erf_map` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`ezfio_set_work_empty` + + +.. c:function:: eri_erf: + + + File : :file:`ao_two_e_erf_ints/two_e_integrals_erf.irp.f` + + .. code:: fortran + + double precision function ERI_erf(alpha,beta,delta,gama,a_x,b_x,c_x,d_x,a_y,b_y,c_y,d_y,a_z,b_z,c_z,d_z) + + + Atomic primtive two-electron integral between the 4 primitives : + + * primitive 1 : $x_1^{a_x} y_1^{a_y} z_1^{a_z} \exp(-\alpha * r1^2)$ + * primitive 2 : $x_1^{b_x} y_1^{b_y} z_1^{b_z} \exp(- \beta * r1^2)$ + * primitive 3 : $x_2^{c_x} y_2^{c_y} z_2^{c_z} \exp(-\delta * r2^2)$ + * primitive 4 : $x_2^{d_x} y_2^{d_y} z_2^{d_z} \exp(-\gamma * r2^2)$ + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mu_erf` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`integrale_new_erf` + + +.. c:function:: get_ao_erf_map_size: + + + File : :file:`ao_two_e_erf_ints/map_integrals_erf.irp.f` + + .. code:: fortran + + function get_ao_erf_map_size() + + + Returns the number of elements in the |AO| map + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_integrals_erf_map` + + +.. c:function:: get_ao_two_e_integral_erf: + + + File : :file:`ao_two_e_erf_ints/map_integrals_erf.irp.f` + + .. code:: fortran + + double precision function get_ao_two_e_integral_erf(i,j,k,l,map) result(result) + + + Gets one |AO| two-electron integral from the |AO| map + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_integrals_erf_cache_min` + * :c:data:`ao_overlap_abs` + * :c:data:`ao_integrals_threshold` + * :c:data:`ao_integrals_erf_cache` + * :c:data:`ao_two_e_integral_erf_schwartz` + * :c:data:`ao_two_e_integrals_erf_in_map` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`map_get` + * :c:func:`two_e_integrals_index` + + +.. c:function:: get_ao_two_e_integrals_erf: + + + File : :file:`ao_two_e_erf_ints/map_integrals_erf.irp.f` + + .. code:: fortran + + subroutine get_ao_two_e_integrals_erf(j,k,l,sze,out_val) + + + Gets multiple |AO| two-electron integral from the |AO| map . + All i are retrieved for j,k,l fixed. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_integrals_erf_map` + * :c:data:`ao_overlap_abs` + * :c:data:`ao_integrals_threshold` + * :c:data:`ao_two_e_integrals_erf_in_map` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`add_integrals_to_map_erf` + + +.. c:function:: get_ao_two_e_integrals_erf_non_zero: + + + File : :file:`ao_two_e_erf_ints/map_integrals_erf.irp.f` + + .. code:: fortran + + subroutine get_ao_two_e_integrals_erf_non_zero(j,k,l,sze,out_val,out_val_index,non_zero_int) + + + Gets multiple |AO| two-electron integrals from the |AO| map . + All non-zero i are retrieved for j,k,l fixed. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_integrals_erf_map` + * :c:data:`ao_overlap_abs` + * :c:data:`ao_integrals_threshold` + * :c:data:`ao_two_e_integral_erf_schwartz` + * :c:data:`ao_two_e_integrals_erf_in_map` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_two_e_int_erf_jj_from_ao` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`map_get` + * :c:func:`two_e_integrals_index` + + +.. c:function:: insert_into_ao_integrals_erf_map: + + + File : :file:`ao_two_e_erf_ints/map_integrals_erf.irp.f` + + .. code:: fortran + + subroutine insert_into_ao_integrals_erf_map(n_integrals,buffer_i, buffer_values) + + + Create new entry into |AO| map + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_integrals_erf_map` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`ao_two_e_integrals_erf_in_map_collector` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`map_append` + + +.. c:function:: integrale_new_erf: + + + File : :file:`ao_two_e_erf_ints/two_e_integrals_erf.irp.f` + + .. code:: fortran + + subroutine integrale_new_erf(I_f,a_x,b_x,c_x,d_x,a_y,b_y,c_y,d_y,a_z,b_z,c_z,d_z,p,q,n_pt) + + + Calculate the integral of the polynomial : + + $I_x1(a_x+b_x, c_x+d_x,p,q) \, I_x1(a_y+b_y, c_y+d_y,p,q) \, I_x1(a_z+b_z, c_z+d_z,p,q)$ + + between $( 0 ; 1)$ + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mu_erf` + * :c:data:`n_pt_max_integrals` + * :c:data:`gauleg_t2` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`eri_erf` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`i_x1_new` + + +.. c:function:: load_ao_integrals_erf: + + + File : :file:`ao_two_e_erf_ints/map_integrals_erf.irp.f` + + .. code:: fortran + + integer function load_ao_integrals_erf(filename) + + + Read from disk the |AO| erf integrals + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_integrals_erf_map` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`cache_map_reallocate` + * :c:func:`map_deinit` + * :c:func:`map_sort` + + +.. c:function:: save_erf_two_e_integrals_ao: + + + File : :file:`ao_two_e_erf_ints/routines_save_integrals_erf.irp.f` + + .. code:: fortran + + subroutine save_erf_two_e_integrals_ao + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_integrals_erf_map` + * :c:data:`ezfio_filename` + * :c:data:`ao_two_e_integrals_erf_in_map` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`routine` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`ezfio_set_ao_two_e_erf_ints_io_ao_two_e_integrals_erf` + * :c:func:`ezfio_set_work_empty` + * :c:func:`map_save_to_disk` + + +.. c:function:: save_erf_two_e_ints_ao_into_ints_ao: + + + File : :file:`ao_two_e_erf_ints/routines_save_integrals_erf.irp.f` + + .. code:: fortran + + subroutine save_erf_two_e_ints_ao_into_ints_ao + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_integrals_erf_map` + * :c:data:`ezfio_filename` + * :c:data:`ao_two_e_integrals_erf_in_map` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`ezfio_set_ao_two_e_ints_io_ao_two_e_integrals` + * :c:func:`ezfio_set_work_empty` + * :c:func:`map_save_to_disk` + diff --git a/docs/source/modules/ao_two_e_ints.rst b/docs/source/modules/ao_two_e_ints.rst new file mode 100644 index 00000000..3c833a90 --- /dev/null +++ b/docs/source/modules/ao_two_e_ints.rst @@ -0,0 +1,1285 @@ +.. _module_ao_two_e_ints: + +.. program:: ao_two_e_ints + +.. default-role:: option + +================== +ao_two_e_ints +================== + +Here, all two-electron integrals (:math:`1/r_{12}`) are computed. +As they have 4 indices and many are zero, they are stored in a map, as defined +in :file:`utils/map_module.f90`. + +To fetch an |AO| integral, use the +`get_ao_two_e_integral(i,j,k,l,ao_integrals_map)` function. + + +The conventions are: +* For |AO| integrals : (ij|kl) = (11|22) = = <12|12> + + + + + + +EZFIO parameters +---------------- + +.. option:: io_ao_two_e_integrals + + Read/Write |AO| integrals from/to disk [ Write | Read | None ] + + Default: None + +.. option:: ao_integrals_threshold + + If | (pq|rs) | < `ao_integrals_threshold` then (pq|rs) is zero + + Default: 1.e-15 + +.. option:: do_direct_integrals + + Compute integrals on the fly (very slow, only for debugging) + + Default: False + + +Providers +--------- + +.. c:var:: ao_integrals_cache + + + File : :file:`ao_two_e_ints/map_integrals.irp.f` + + .. code:: fortran + + double precision, allocatable :: ao_integrals_cache (0:64*64*64*64) + + + Cache of AO integrals for fast access + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_integrals_cache_min` + * :c:data:`ao_integrals_map` + * :c:data:`ao_two_e_integrals_in_map` + + + +.. c:var:: ao_integrals_cache_max + + + File : :file:`ao_two_e_ints/map_integrals.irp.f` + + .. code:: fortran + + integer :: ao_integrals_cache_min + integer :: ao_integrals_cache_max + + + Min and max values of the AOs for which the integrals are in the cache + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_integrals_cache` + + +.. c:var:: ao_integrals_cache_min + + + File : :file:`ao_two_e_ints/map_integrals.irp.f` + + .. code:: fortran + + integer :: ao_integrals_cache_min + integer :: ao_integrals_cache_max + + + Min and max values of the AOs for which the integrals are in the cache + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_integrals_cache` + + +.. c:var:: ao_integrals_map + + + File : :file:`ao_two_e_ints/map_integrals.irp.f` + + .. code:: fortran + + type(map_type) :: ao_integrals_map + + + AO integrals + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_integrals_cache` + * :c:data:`ao_two_e_integral_alpha` + * :c:data:`ao_two_e_integrals_in_map` + * :c:data:`mo_two_e_integral_jj_from_ao` + * :c:data:`mo_two_e_integrals_vv_from_ao` + + +.. c:var:: ao_two_e_integral_schwartz + + + File : :file:`ao_two_e_ints/two_e_integrals.irp.f` + + .. code:: fortran + + double precision, allocatable :: ao_two_e_integral_schwartz (ao_num,ao_num) + + + Needed to compute Schwartz inequalities + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_coef_normalized_ordered_transp` + * :c:data:`ao_expo_ordered_transp` + * :c:data:`ao_nucl` + * :c:data:`ao_num` + * :c:data:`ao_power` + * :c:data:`ao_prim_num` + * :c:data:`n_pt_max_integrals` + * :c:data:`nucl_coord` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_two_e_integral_alpha` + * :c:data:`mo_two_e_integral_jj_from_ao` + * :c:data:`mo_two_e_integrals_vv_from_ao` + + +.. c:var:: ao_two_e_integrals_in_map + + + File : :file:`ao_two_e_ints/two_e_integrals.irp.f` + + .. code:: fortran + + logical :: ao_two_e_integrals_in_map + + + Map of Atomic integrals + i(r1) j(r2) 1/r12 k(r1) l(r2) + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_coef_normalized_ordered_transp` + * :c:data:`ao_expo_ordered_transp` + * :c:data:`ao_integrals_map` + * :c:data:`ao_nucl` + * :c:data:`ao_num` + * :c:data:`ao_power` + * :c:data:`ao_prim_num` + * :c:data:`ezfio_filename` + * :c:data:`io_ao_two_e_integrals` + * :c:data:`mpi_master` + * :c:data:`n_pt_max_integrals` + * :c:data:`nproc` + * :c:data:`nucl_coord` + * :c:data:`read_ao_two_e_integrals` + * :c:data:`zmq_context` + * :c:data:`zmq_socket_pull_tcp_address` + * :c:data:`zmq_state` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_integrals_cache` + * :c:data:`ao_two_e_integral_alpha` + * :c:data:`mo_two_e_integral_jj_from_ao` + * :c:data:`mo_two_e_integrals_erf_in_map` + * :c:data:`mo_two_e_integrals_in_map` + * :c:data:`mo_two_e_integrals_vv_from_ao` + + +.. c:var:: gauleg_t2 + + + File : :file:`ao_two_e_ints/gauss_legendre.irp.f` + + .. code:: fortran + + double precision, allocatable :: gauleg_t2 (n_pt_max_integrals,n_pt_max_integrals/2) + double precision, allocatable :: gauleg_w (n_pt_max_integrals,n_pt_max_integrals/2) + + + t_w(i,1,k) = w(i) + t_w(i,2,k) = t(i) + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_pt_max_integrals` + + + +.. c:var:: gauleg_w + + + File : :file:`ao_two_e_ints/gauss_legendre.irp.f` + + .. code:: fortran + + double precision, allocatable :: gauleg_t2 (n_pt_max_integrals,n_pt_max_integrals/2) + double precision, allocatable :: gauleg_w (n_pt_max_integrals,n_pt_max_integrals/2) + + + t_w(i,1,k) = w(i) + t_w(i,2,k) = t(i) + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_pt_max_integrals` + + + +.. c:function:: general_primitive_integral: + + + File : :file:`ao_two_e_ints/two_e_integrals.irp.f` + + .. code:: fortran + + double precision function general_primitive_integral(dim, & + P_new,P_center,fact_p,p,p_inv,iorder_p, & + Q_new,Q_center,fact_q,q,q_inv,iorder_q) + + + Computes the integral where p,q,r,s are Gaussian primitives + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`add_poly_multiply` + * :c:func:`give_polynom_mult_center_x` + * :c:func:`multiply_poly` + + +.. c:function:: i_x1_new: + + + File : :file:`ao_two_e_ints/two_e_integrals.irp.f` + + .. code:: fortran + + recursive subroutine I_x1_new(a,c,B_10,B_01,B_00,res,n_pt) + + + recursive function involved in the two-electron integral + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_pt_max_integrals` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`i_x1_new` + * :c:func:`i_x2_new` + * :c:func:`integrale_new` + * :c:func:`integrale_new_erf` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`i_x1_new` + * :c:func:`i_x2_new` + + +.. c:function:: i_x1_pol_mult_a1: + + + File : :file:`ao_two_e_ints/two_e_integrals.irp.f` + + .. code:: fortran + + recursive subroutine I_x1_pol_mult_a1(c,B_10,B_01,B_00,C_00,D_00,d,nd,n_pt_in) + + + Recursive function involved in the two-electron integral + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`i_x1_pol_mult` + * :c:func:`i_x1_pol_mult_a2` + * :c:func:`i_x1_pol_mult_recurs` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`i_x2_pol_mult` + * :c:func:`multiply_poly` + + +.. c:function:: i_x1_pol_mult_a2: + + + File : :file:`ao_two_e_ints/two_e_integrals.irp.f` + + .. code:: fortran + + recursive subroutine I_x1_pol_mult_a2(c,B_10,B_01,B_00,C_00,D_00,d,nd,n_pt_in) + + + Recursive function involved in the two-electron integral + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`i_x1_pol_mult` + * :c:func:`i_x1_pol_mult_recurs` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`i_x1_pol_mult_a1` + * :c:func:`i_x2_pol_mult` + * :c:func:`multiply_poly` + + +.. c:function:: i_x1_pol_mult_recurs: + + + File : :file:`ao_two_e_ints/two_e_integrals.irp.f` + + .. code:: fortran + + recursive subroutine I_x1_pol_mult_recurs(a,c,B_10,B_01,B_00,C_00,D_00,d,nd,n_pt_in) + + + Recursive function involved in the two-electron integral + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`i_x1_pol_mult` + * :c:func:`i_x1_pol_mult_recurs` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`i_x1_pol_mult_a1` + * :c:func:`i_x1_pol_mult_a2` + * :c:func:`i_x1_pol_mult_recurs` + * :c:func:`multiply_poly` + + +.. c:function:: i_x2_new: + + + File : :file:`ao_two_e_ints/two_e_integrals.irp.f` + + .. code:: fortran + + recursive subroutine I_x2_new(c,B_10,B_01,B_00,res,n_pt) + + + recursive function involved in the two-electron integral + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_pt_max_integrals` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`i_x1_new` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`i_x1_new` + + +.. c:function:: i_x2_pol_mult: + + + File : :file:`ao_two_e_ints/two_e_integrals.irp.f` + + .. code:: fortran + + recursive subroutine I_x2_pol_mult(c,B_10,B_01,B_00,C_00,D_00,d,nd,dim) + + + Recursive function involved in the two-electron integral + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`i_x1_pol_mult` + * :c:func:`i_x1_pol_mult_a1` + * :c:func:`i_x1_pol_mult_a2` + * :c:func:`i_x2_pol_mult` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`i_x2_pol_mult` + * :c:func:`multiply_poly` + + + +Subroutines / functions +----------------------- + +.. c:function:: ao_l4: + + + File : :file:`ao_two_e_ints/two_e_integrals.irp.f` + + .. code:: fortran + + integer function ao_l4(i,j,k,l) + + + Computes the product of l values of i,j,k,and l + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_l` + + +.. c:function:: ao_two_e_integral: + + + File : :file:`ao_two_e_ints/two_e_integrals.irp.f` + + .. code:: fortran + + double precision function ao_two_e_integral(i,j,k,l) + + + integral of the AO basis or (ij|kl) + i(r1) j(r1) 1/r12 k(r2) l(r2) + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_pt_max_integrals` + * :c:data:`ao_coef_normalized_ordered_transp` + * :c:data:`ao_power` + * :c:data:`ao_expo_ordered_transp` + * :c:data:`ao_prim_num` + * :c:data:`ao_nucl` + * :c:data:`nucl_coord` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`give_explicit_poly_and_gaussian` + + +.. c:function:: ao_two_e_integral_schwartz_accel: + + + File : :file:`ao_two_e_ints/two_e_integrals.irp.f` + + .. code:: fortran + + double precision function ao_two_e_integral_schwartz_accel(i,j,k,l) + + + integral of the AO basis or (ij|kl) + i(r1) j(r1) 1/r12 k(r2) l(r2) + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_pt_max_integrals` + * :c:data:`ao_integrals_threshold` + * :c:data:`ao_coef_normalized_ordered_transp` + * :c:data:`ao_power` + * :c:data:`ao_expo_ordered_transp` + * :c:data:`ao_prim_num` + * :c:data:`ao_nucl` + * :c:data:`nucl_coord` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`give_explicit_poly_and_gaussian` + + +.. c:function:: ao_two_e_integrals_in_map_collector: + + + File : :file:`ao_two_e_ints/integrals_in_map_slave.irp.f` + + .. code:: fortran + + subroutine ao_two_e_integrals_in_map_collector(zmq_socket_pull) + + + Collects results from the AO integral calculation + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_integrals_map` + * :c:data:`ao_num` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_two_e_integrals_in_map` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`end_zmq_to_qp_run_socket` + * :c:func:`insert_into_ao_integrals_map` + + +.. c:function:: ao_two_e_integrals_in_map_slave: + + + File : :file:`ao_two_e_ints/integrals_in_map_slave.irp.f` + + .. code:: fortran + + subroutine ao_two_e_integrals_in_map_slave(thread,iproc) + + + Computes a buffer of integrals + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`ao_two_e_integrals_in_map_slave_inproc` + * :c:func:`ao_two_e_integrals_in_map_slave_tcp` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`compute_ao_integrals_jl` + * :c:func:`end_zmq_push_socket` + * :c:func:`end_zmq_to_qp_run_socket` + * :c:func:`push_integrals` + + +.. c:function:: ao_two_e_integrals_in_map_slave_inproc: + + + File : :file:`ao_two_e_ints/integrals_in_map_slave.irp.f` + + .. code:: fortran + + subroutine ao_two_e_integrals_in_map_slave_inproc(i) + + + Computes a buffer of integrals. i is the ID of the current thread. + + Called by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_two_e_integrals_in_map` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`ao_two_e_integrals_in_map_slave` + + +.. c:function:: ao_two_e_integrals_in_map_slave_tcp: + + + File : :file:`ao_two_e_ints/integrals_in_map_slave.irp.f` + + .. code:: fortran + + subroutine ao_two_e_integrals_in_map_slave_tcp(i) + + + Computes a buffer of integrals. i is the ID of the current thread. + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`ao_two_e_integrals_in_map_slave` + + +.. c:function:: clear_ao_map: + + + File : :file:`ao_two_e_ints/map_integrals.irp.f` + + .. code:: fortran + + subroutine clear_ao_map + + + Frees the memory of the AO map + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_integrals_map` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`map_deinit` + + +.. c:function:: compute_ao_integrals_jl: + + + File : :file:`ao_two_e_ints/two_e_integrals.irp.f` + + .. code:: fortran + + subroutine compute_ao_integrals_jl(j,l,n_integrals,buffer_i,buffer_value) + + + Parallel client for AO integrals + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_overlap_abs` + * :c:data:`ao_num` + * :c:data:`ao_integrals_threshold` + * :c:data:`ao_two_e_integral_schwartz` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`ao_two_e_integrals_in_map_slave` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`two_e_integrals_index` + + +.. c:function:: compute_ao_two_e_integrals: + + + File : :file:`ao_two_e_ints/two_e_integrals.irp.f` + + .. code:: fortran + + subroutine compute_ao_two_e_integrals(j,k,l,sze,buffer_value) + + + Compute AO 1/r12 integrals for all i and fixed j,k,l + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_overlap_abs` + * :c:data:`ao_num` + * :c:data:`ao_two_e_integral_schwartz` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_two_e_integral_jj_from_ao` + * :c:data:`mo_two_e_integrals_vv_from_ao` + + +.. c:function:: dump_ao_integrals: + + + File : :file:`ao_two_e_ints/map_integrals.irp.f` + + .. code:: fortran + + subroutine dump_ao_integrals(filename) + + + Save to disk the |AO| integrals + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_integrals_map` + * :c:data:`mpi_master` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`ezfio_set_work_empty` + + +.. c:function:: eri: + + + File : :file:`ao_two_e_ints/two_e_integrals.irp.f` + + .. code:: fortran + + double precision function ERI(alpha,beta,delta,gama,a_x,b_x,c_x,d_x,a_y,b_y,c_y,d_y,a_z,b_z,c_z,d_z) + + + ATOMIC PRIMTIVE two-electron integral between the 4 primitives :: + primitive_1 = x1**(a_x) y1**(a_y) z1**(a_z) exp(-alpha * r1**2) + primitive_2 = x1**(b_x) y1**(b_y) z1**(b_z) exp(- beta * r1**2) + primitive_3 = x2**(c_x) y2**(c_y) z2**(c_z) exp(-delta * r2**2) + primitive_4 = x2**(d_x) y2**(d_y) z2**(d_z) exp(- gama * r2**2) + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`integrale_new` + + +.. c:function:: gauleg: + + + File : :file:`ao_two_e_ints/gauss_legendre.irp.f` + + .. code:: fortran + + subroutine gauleg(x1,x2,x,w,n) + + + Gauss-Legendre + + Called by: + + .. hlist:: + :columns: 3 + + * :c:data:`gauleg_t2` + + +.. c:function:: get_ao_map_size: + + + File : :file:`ao_two_e_ints/map_integrals.irp.f` + + .. code:: fortran + + function get_ao_map_size() + + + Returns the number of elements in the AO map + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_integrals_map` + + +.. c:function:: get_ao_two_e_integral: + + + File : :file:`ao_two_e_ints/map_integrals.irp.f` + + .. code:: fortran + + double precision function get_ao_two_e_integral(i,j,k,l,map) result(result) + + + Gets one AO bi-electronic integral from the AO map + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_overlap_abs` + * :c:data:`ao_integrals_threshold` + * :c:data:`ao_two_e_integral_schwartz` + * :c:data:`ao_integrals_cache` + * :c:data:`ao_integrals_cache_min` + * :c:data:`ao_two_e_integrals_in_map` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`map_get` + * :c:func:`two_e_integrals_index` + + +.. c:function:: get_ao_two_e_integrals: + + + File : :file:`ao_two_e_ints/map_integrals.irp.f` + + .. code:: fortran + + subroutine get_ao_two_e_integrals(j,k,l,sze,out_val) + + + Gets multiple AO bi-electronic integral from the AO map . + All i are retrieved for j,k,l fixed. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_integrals_map` + * :c:data:`ao_overlap_abs` + * :c:data:`ao_integrals_threshold` + * :c:data:`ao_two_e_integrals_in_map` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`add_integrals_to_map` + * :c:func:`add_integrals_to_map_no_exit_34` + * :c:func:`add_integrals_to_map_three_indices` + + +.. c:function:: get_ao_two_e_integrals_non_zero: + + + File : :file:`ao_two_e_ints/map_integrals.irp.f` + + .. code:: fortran + + subroutine get_ao_two_e_integrals_non_zero(j,k,l,sze,out_val,out_val_index,non_zero_int) + + + Gets multiple AO bi-electronic integral from the AO map . + All non-zero i are retrieved for j,k,l fixed. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_integrals_map` + * :c:data:`ao_overlap_abs` + * :c:data:`ao_integrals_threshold` + * :c:data:`ao_two_e_integral_schwartz` + * :c:data:`ao_two_e_integrals_in_map` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_two_e_integral_jj_from_ao` + * :c:data:`mo_two_e_integrals_vv_from_ao` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`map_get` + * :c:func:`two_e_integrals_index` + + +.. c:function:: give_polynom_mult_center_x: + + + File : :file:`ao_two_e_ints/two_e_integrals.irp.f` + + .. code:: fortran + + subroutine give_polynom_mult_center_x(P_center,Q_center,a_x,d_x,p,q,n_pt_in,pq_inv,pq_inv_2,p10_1,p01_1,p10_2,p01_2,d,n_pt_out) + + + subroutine that returns the explicit polynom in term of the "t" + variable of the following polynomw : + + $I_{x_1}(a_x,d_x,p,q) \, I_{x_1}(a_y,d_y,p,q) \ I_{x_1}(a_z,d_z,p,q)$ + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`general_primitive_integral` + * :c:func:`general_primitive_integral_erf` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`i_x1_pol_mult` + + +.. c:function:: i_x1_pol_mult: + + + File : :file:`ao_two_e_ints/two_e_integrals.irp.f` + + .. code:: fortran + + subroutine I_x1_pol_mult(a,c,B_10,B_01,B_00,C_00,D_00,d,nd,n_pt_in) + + + Recursive function involved in the two-electron integral + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`give_polynom_mult_center_x` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`i_x1_pol_mult_a1` + * :c:func:`i_x1_pol_mult_a2` + * :c:func:`i_x1_pol_mult_recurs` + * :c:func:`i_x2_pol_mult` + + +.. c:function:: insert_into_ao_integrals_map: + + + File : :file:`ao_two_e_ints/map_integrals.irp.f` + + .. code:: fortran + + subroutine insert_into_ao_integrals_map(n_integrals,buffer_i, buffer_values) + + + Create new entry into AO map + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_integrals_map` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`ao_two_e_integrals_in_map_collector` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`map_append` + + +.. c:function:: integrale_new: + + + File : :file:`ao_two_e_ints/two_e_integrals.irp.f` + + .. code:: fortran + + subroutine integrale_new(I_f,a_x,b_x,c_x,d_x,a_y,b_y,c_y,d_y,a_z,b_z,c_z,d_z,p,q,n_pt) + + + Calculates the integral of the polynomial : + + $I_{x_1}(a_x+b_x,c_x+d_x,p,q) \, I_{x_1}(a_y+b_y,c_y+d_y,p,q) \, I_{x_1}(a_z+b_z,c_z+d_z,p,q)$ + in $( 0 ; 1)$ + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_pt_max_integrals` + * :c:data:`gauleg_t2` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`eri` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`i_x1_new` + + +.. c:function:: load_ao_integrals: + + + File : :file:`ao_two_e_ints/map_integrals.irp.f` + + .. code:: fortran + + integer function load_ao_integrals(filename) + + + Read from disk the |AO| integrals + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_integrals_map` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`cache_map_reallocate` + * :c:func:`map_deinit` + * :c:func:`map_sort` + + +.. c:function:: n_pt_sup: + + + File : :file:`ao_two_e_ints/two_e_integrals.irp.f` + + .. code:: fortran + + integer function n_pt_sup(a_x,b_x,c_x,d_x,a_y,b_y,c_y,d_y,a_z,b_z,c_z,d_z) + + + Returns the upper boundary of the degree of the polynomial involved in the + two-electron integral : + + $I_x(a_x,b_x,c_x,d_x) \, I_y(a_y,b_y,c_y,d_y) \, I_z(a_z,b_z,c_z,d_z)$ + + +.. c:function:: push_integrals: + + + File : :file:`ao_two_e_ints/integrals_in_map_slave.irp.f` + + .. code:: fortran + + subroutine push_integrals(zmq_socket_push, n_integrals, buffer_i, buffer_value, task_id) + + + Push integrals in the push socket + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`ao_two_e_integrals_erf_in_map_slave` + * :c:func:`ao_two_e_integrals_in_map_slave` + + +.. c:function:: two_e_integrals_index: + + + File : :file:`ao_two_e_ints/map_integrals.irp.f` + + .. code:: fortran + + subroutine two_e_integrals_index(i,j,k,l,i1) + + + + Called by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_integrals_cache` + * :c:data:`ao_integrals_erf_cache` + * :c:data:`ao_integrals_erf_map` + * :c:data:`ao_integrals_map` + * :c:func:`compute_ao_integrals_erf_jl` + * :c:func:`compute_ao_integrals_jl` + * :c:func:`get_ao_two_e_integral` + * :c:func:`get_ao_two_e_integral_erf` + * :c:func:`get_ao_two_e_integrals_erf_non_zero` + * :c:func:`get_ao_two_e_integrals_non_zero` + * :c:func:`get_mo_two_e_integral_erf` + * :c:func:`get_mo_two_e_integrals_coulomb_ii` + * :c:func:`get_mo_two_e_integrals_erf` + * :c:func:`get_mo_two_e_integrals_erf_coulomb_ii` + * :c:func:`get_mo_two_e_integrals_erf_exch_ii` + * :c:func:`get_mo_two_e_integrals_erf_i1j1` + * :c:func:`get_mo_two_e_integrals_erf_ij` + * :c:func:`get_mo_two_e_integrals_exch_ii` + * :c:func:`get_mo_two_e_integrals_i1j1` + * :c:func:`get_mo_two_e_integrals_ij` + * :c:func:`get_two_e_integral` + * :c:data:`mo_integrals_cache` + * :c:data:`mo_integrals_erf_cache` + * :c:data:`mo_integrals_erf_map` + * :c:data:`mo_integrals_map` + * :c:func:`two_e_integrals_index_reverse` + + +.. c:function:: two_e_integrals_index_reverse: + + + File : :file:`ao_two_e_ints/map_integrals.irp.f` + + .. code:: fortran + + subroutine two_e_integrals_index_reverse(i,j,k,l,i1) + + + + Called by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_two_e_integral_alpha` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`two_e_integrals_index` + diff --git a/docs/source/modules/aux_quantities.rst b/docs/source/modules/aux_quantities.rst new file mode 100644 index 00000000..3ded29f8 --- /dev/null +++ b/docs/source/modules/aux_quantities.rst @@ -0,0 +1,52 @@ +.. _module_aux_quantities: + +.. program:: aux_quantities + +.. default-role:: option + +============== +aux_quantities +============== + + +This module contains some global variables (such as densities and energies) +which are stored in the EZFIO folder in a different place than determinants. +This is used in practice to store density matrices which can be obtained from +any methods, as long as they are stored in the same MO basis which is used for +the calculations. In |RSDFT| calculations, this can be done to perform damping +on the density in order to speed up convergence. + +The main providers of that module are: + +* `data_one_e_dm_alpha_mo` and `data_one_e_dm_beta_mo` which are the + one-body alpha and beta densities which are necessary read from the EZFIO + folder. + + +Thanks to these providers you can use any density matrix that does not +necessary corresponds to that of the current wave function. + + + +EZFIO parameters +---------------- + +.. option:: data_energy_var + + Variational energy computed with the wave function + + +.. option:: data_energy_proj + + Projected energy computed with the wave function + + +.. option:: data_one_e_dm_alpha_mo + + Alpha one body density matrix on the |MO| basis computed with the wave function + + +.. option:: data_one_e_dm_beta_mo + + Beta one body density matrix on the |MO| basis computed with the wave function + diff --git a/docs/source/modules/becke_numerical_grid.rst b/docs/source/modules/becke_numerical_grid.rst new file mode 100644 index 00000000..5f97851d --- /dev/null +++ b/docs/source/modules/becke_numerical_grid.rst @@ -0,0 +1,833 @@ +.. _module_becke_numerical_grid: + +.. program:: becke_numerical_grid + +.. default-role:: option + +==================== +becke_numerical_grid +==================== + +This module contains all quantities needed to build Becke's grid used in general for DFT integration. Note that it can be used for whatever integration in R^3 as long as the functions to be integrated are mostly concentrated near the atomic regions. + +This grid is built as the reunion of a spherical grid around each atom. Each spherical grid contains +a certain number of radial and angular points. No pruning is done on the angular part of the grid. + +The main keyword for that module is: + +* :option:`becke_numerical_grid grid_type_sgn` which controls the precision of the grid according the standard **SG-n** grids. This keyword controls the two providers `n_points_integration_angular` `n_points_radial_grid`. + +The main providers of that module are: + +* `n_points_integration_angular` which is the number of angular integration points. WARNING: it obeys to specific rules so it cannot be any integer number. Some of the possible values are [ 50 | 74 | 170 | 194 | 266 | 302 | 590 | 1202 | 2030 | 5810 ] for instance. See :file:`angular.f` for more details. +* `n_points_radial_grid` which is the number of radial angular points. This can be any strictly positive integer. Nevertheless, a minimum of 50 is in general necessary. +* `final_grid_points` which are the (x,y,z) coordinates of the grid points. +* `final_weight_at_r_vector` which are the weights at each grid point + + +For a simple example of how to use the grid, see :file:`example.irp.f`. + +The spherical integration uses Lebedev-Laikov grids, which was used from the code distributed through CCL (http://www.ccl.net/). +See next section for explanations and citation policies. + +.. code-block:: text + + This subroutine is part of a set of subroutines that generate + Lebedev grids [1-6] for integration on a sphere. The original + C-code [1] was kindly provided by Dr. Dmitri N. Laikov and + translated into fortran by Dr. Christoph van Wuellen. + This subroutine was translated using a C to fortran77 conversion + tool written by Dr. Christoph van Wuellen. + + Users of this code are asked to include reference [1] in their + publications, and in the user- and programmers-manuals + describing their codes. + + This code was distributed through CCL (http://www.ccl.net/). + + [1] V.I. Lebedev, and D.N. Laikov + "A quadrature formula for the sphere of the 131st + algebraic order of accuracy" + Doklady Mathematics, Vol. 59, No. 3, 1999, pp. 477-481. + + [2] V.I. Lebedev + "A quadrature formula for the sphere of 59th algebraic + order of accuracy" + Russian Acad. Sci. Dokl. Math., Vol. 50, 1995, pp. 283-286. + + [3] V.I. Lebedev, and A.L. Skorokhodov + "Quadrature formulas of orders 41, 47, and 53 for the sphere" + Russian Acad. Sci. Dokl. Math., Vol. 45, 1992, pp. 587-592. + + [4] V.I. Lebedev + "Spherical quadrature formulas exact to orders 25-29" + Siberian Mathematical Journal, Vol. 18, 1977, pp. 99-107. + + [5] V.I. Lebedev + "Quadratures on a sphere" + Computational Mathematics and Mathematical Physics, Vol. 16, + 1976, pp. 10-24. + + [6] V.I. Lebedev + "Values of the nodes and weights of ninth to seventeenth + order Gauss-Markov quadrature formulae invariant under the + octahedron group with inversion" + Computational Mathematics and Mathematical Physics, Vol. 15, + 1975, pp. 44-51. + + + + + +EZFIO parameters +---------------- + +.. option:: grid_type_sgn + + Type of grid used for the Becke's numerical grid. Can be, by increasing accuracy: [ 0 | 1 | 2 | 3 ] + + Default: 2 + + +Providers +--------- + +.. c:var:: alpha_knowles + + + File : :file:`becke_numerical_grid/integration_radial.irp.f` + + .. code:: fortran + + double precision, allocatable :: alpha_knowles (100) + + + Recommended values for the alpha parameters according to the paper of Knowles (JCP, 104, 1996) + as a function of the nuclear charge + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`final_weight_at_r` + * :c:data:`grid_points_per_atom` + + +.. c:var:: angular_quadrature_points + + + File : :file:`becke_numerical_grid/grid_becke.irp.f` + + .. code:: fortran + + double precision, allocatable :: angular_quadrature_points (n_points_integration_angular,3) + double precision, allocatable :: weights_angular_points (n_points_integration_angular) + + + weights and grid points for the integration on the angular variables on + the unit sphere centered on (0,0,0) + According to the LEBEDEV scheme + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_points_radial_grid` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`final_weight_at_r` + * :c:data:`grid_points_per_atom` + + +.. c:var:: dr_radial_integral + + + File : :file:`becke_numerical_grid/grid_becke.irp.f` + + .. code:: fortran + + double precision, allocatable :: grid_points_radial (n_points_radial_grid) + double precision :: dr_radial_integral + + + points in [0,1] to map the radial integral [0,\infty] + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_points_radial_grid` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`final_weight_at_r` + * :c:data:`grid_points_per_atom` + + +.. c:var:: final_grid_points + + + File : :file:`becke_numerical_grid/grid_becke_vector.irp.f` + + .. code:: fortran + + double precision, allocatable :: final_grid_points (3,n_points_final_grid) + double precision, allocatable :: final_weight_at_r_vector (n_points_final_grid) + integer, allocatable :: index_final_points (3,n_points_final_grid) + integer, allocatable :: index_final_points_reverse (n_points_integration_angular,n_points_radial_grid,nucl_num) + + + final_grid_points(1:3,j) = (/ x, y, z /) of the jth grid point + + final_weight_at_r_vector(i) = Total weight function of the ith grid point which contains the Lebedev, Voronoi and radial weights contributions + + index_final_points(1:3,i) = gives the angular, radial and atomic indices associated to the ith grid point + + index_final_points_reverse(i,j,k) = index of the grid point having i as angular, j as radial and l as atomic indices + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`final_weight_at_r` + * :c:data:`grid_points_per_atom` + * :c:data:`n_points_final_grid` + * :c:data:`n_points_radial_grid` + * :c:data:`nucl_num` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`aos_grad_in_r_array` + * :c:data:`aos_in_r_array` + * :c:data:`aos_lapl_in_r_array` + * :c:data:`aos_sr_vc_alpha_lda_w` + * :c:data:`aos_sr_vc_alpha_pbe_w` + * :c:data:`aos_vc_alpha_lda_w` + * :c:data:`aos_vc_alpha_pbe_w` + * :c:data:`energy_sr_x_lda` + * :c:data:`energy_sr_x_pbe` + * :c:data:`energy_x_lda` + * :c:data:`energy_x_pbe` + * :c:data:`mos_in_r_array` + * :c:data:`one_e_dm_alpha_at_r` + * :c:data:`one_e_dm_and_grad_alpha_in_r` + + +.. c:var:: final_weight_at_r + + + File : :file:`becke_numerical_grid/grid_becke.irp.f` + + .. code:: fortran + + double precision, allocatable :: final_weight_at_r (n_points_integration_angular,n_points_radial_grid,nucl_num) + + + Total weight on each grid point which takes into account all Lebedev, Voronoi and radial weights. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`alpha_knowles` + * :c:data:`angular_quadrature_points` + * :c:data:`grid_points_radial` + * :c:data:`m_knowles` + * :c:data:`n_points_radial_grid` + * :c:data:`nucl_charge` + * :c:data:`nucl_num` + * :c:data:`weight_at_r` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`final_grid_points` + * :c:data:`n_points_final_grid` + + +.. c:var:: final_weight_at_r_vector + + + File : :file:`becke_numerical_grid/grid_becke_vector.irp.f` + + .. code:: fortran + + double precision, allocatable :: final_grid_points (3,n_points_final_grid) + double precision, allocatable :: final_weight_at_r_vector (n_points_final_grid) + integer, allocatable :: index_final_points (3,n_points_final_grid) + integer, allocatable :: index_final_points_reverse (n_points_integration_angular,n_points_radial_grid,nucl_num) + + + final_grid_points(1:3,j) = (/ x, y, z /) of the jth grid point + + final_weight_at_r_vector(i) = Total weight function of the ith grid point which contains the Lebedev, Voronoi and radial weights contributions + + index_final_points(1:3,i) = gives the angular, radial and atomic indices associated to the ith grid point + + index_final_points_reverse(i,j,k) = index of the grid point having i as angular, j as radial and l as atomic indices + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`final_weight_at_r` + * :c:data:`grid_points_per_atom` + * :c:data:`n_points_final_grid` + * :c:data:`n_points_radial_grid` + * :c:data:`nucl_num` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`aos_grad_in_r_array` + * :c:data:`aos_in_r_array` + * :c:data:`aos_lapl_in_r_array` + * :c:data:`aos_sr_vc_alpha_lda_w` + * :c:data:`aos_sr_vc_alpha_pbe_w` + * :c:data:`aos_vc_alpha_lda_w` + * :c:data:`aos_vc_alpha_pbe_w` + * :c:data:`energy_sr_x_lda` + * :c:data:`energy_sr_x_pbe` + * :c:data:`energy_x_lda` + * :c:data:`energy_x_pbe` + * :c:data:`mos_in_r_array` + * :c:data:`one_e_dm_alpha_at_r` + * :c:data:`one_e_dm_and_grad_alpha_in_r` + + +.. c:var:: grid_points_per_atom + + + File : :file:`becke_numerical_grid/grid_becke.irp.f` + + .. code:: fortran + + double precision, allocatable :: grid_points_per_atom (3,n_points_integration_angular,n_points_radial_grid,nucl_num) + + + x,y,z coordinates of grid points used for integration in 3d space + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`alpha_knowles` + * :c:data:`angular_quadrature_points` + * :c:data:`grid_points_radial` + * :c:data:`m_knowles` + * :c:data:`n_points_radial_grid` + * :c:data:`nucl_charge` + * :c:data:`nucl_coord` + * :c:data:`nucl_num` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`final_grid_points` + * :c:data:`one_e_dm_alpha_in_r` + * :c:data:`weight_at_r` + + +.. c:var:: grid_points_radial + + + File : :file:`becke_numerical_grid/grid_becke.irp.f` + + .. code:: fortran + + double precision, allocatable :: grid_points_radial (n_points_radial_grid) + double precision :: dr_radial_integral + + + points in [0,1] to map the radial integral [0,\infty] + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_points_radial_grid` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`final_weight_at_r` + * :c:data:`grid_points_per_atom` + + +.. c:var:: index_final_points + + + File : :file:`becke_numerical_grid/grid_becke_vector.irp.f` + + .. code:: fortran + + double precision, allocatable :: final_grid_points (3,n_points_final_grid) + double precision, allocatable :: final_weight_at_r_vector (n_points_final_grid) + integer, allocatable :: index_final_points (3,n_points_final_grid) + integer, allocatable :: index_final_points_reverse (n_points_integration_angular,n_points_radial_grid,nucl_num) + + + final_grid_points(1:3,j) = (/ x, y, z /) of the jth grid point + + final_weight_at_r_vector(i) = Total weight function of the ith grid point which contains the Lebedev, Voronoi and radial weights contributions + + index_final_points(1:3,i) = gives the angular, radial and atomic indices associated to the ith grid point + + index_final_points_reverse(i,j,k) = index of the grid point having i as angular, j as radial and l as atomic indices + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`final_weight_at_r` + * :c:data:`grid_points_per_atom` + * :c:data:`n_points_final_grid` + * :c:data:`n_points_radial_grid` + * :c:data:`nucl_num` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`aos_grad_in_r_array` + * :c:data:`aos_in_r_array` + * :c:data:`aos_lapl_in_r_array` + * :c:data:`aos_sr_vc_alpha_lda_w` + * :c:data:`aos_sr_vc_alpha_pbe_w` + * :c:data:`aos_vc_alpha_lda_w` + * :c:data:`aos_vc_alpha_pbe_w` + * :c:data:`energy_sr_x_lda` + * :c:data:`energy_sr_x_pbe` + * :c:data:`energy_x_lda` + * :c:data:`energy_x_pbe` + * :c:data:`mos_in_r_array` + * :c:data:`one_e_dm_alpha_at_r` + * :c:data:`one_e_dm_and_grad_alpha_in_r` + + +.. c:var:: index_final_points_reverse + + + File : :file:`becke_numerical_grid/grid_becke_vector.irp.f` + + .. code:: fortran + + double precision, allocatable :: final_grid_points (3,n_points_final_grid) + double precision, allocatable :: final_weight_at_r_vector (n_points_final_grid) + integer, allocatable :: index_final_points (3,n_points_final_grid) + integer, allocatable :: index_final_points_reverse (n_points_integration_angular,n_points_radial_grid,nucl_num) + + + final_grid_points(1:3,j) = (/ x, y, z /) of the jth grid point + + final_weight_at_r_vector(i) = Total weight function of the ith grid point which contains the Lebedev, Voronoi and radial weights contributions + + index_final_points(1:3,i) = gives the angular, radial and atomic indices associated to the ith grid point + + index_final_points_reverse(i,j,k) = index of the grid point having i as angular, j as radial and l as atomic indices + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`final_weight_at_r` + * :c:data:`grid_points_per_atom` + * :c:data:`n_points_final_grid` + * :c:data:`n_points_radial_grid` + * :c:data:`nucl_num` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`aos_grad_in_r_array` + * :c:data:`aos_in_r_array` + * :c:data:`aos_lapl_in_r_array` + * :c:data:`aos_sr_vc_alpha_lda_w` + * :c:data:`aos_sr_vc_alpha_pbe_w` + * :c:data:`aos_vc_alpha_lda_w` + * :c:data:`aos_vc_alpha_pbe_w` + * :c:data:`energy_sr_x_lda` + * :c:data:`energy_sr_x_pbe` + * :c:data:`energy_x_lda` + * :c:data:`energy_x_pbe` + * :c:data:`mos_in_r_array` + * :c:data:`one_e_dm_alpha_at_r` + * :c:data:`one_e_dm_and_grad_alpha_in_r` + + +.. c:var:: m_knowles + + + File : :file:`becke_numerical_grid/grid_becke.irp.f` + + .. code:: fortran + + integer :: m_knowles + + + value of the "m" parameter in the equation (7) of the paper of Knowles (JCP, 104, 1996) + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`final_weight_at_r` + * :c:data:`grid_points_per_atom` + + +.. c:var:: n_points_final_grid + + + File : :file:`becke_numerical_grid/grid_becke_vector.irp.f` + + .. code:: fortran + + integer :: n_points_final_grid + + + Number of points which are non zero + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`final_weight_at_r` + * :c:data:`n_points_radial_grid` + * :c:data:`nucl_num` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`aos_grad_in_r_array` + * :c:data:`aos_in_r_array` + * :c:data:`aos_lapl_in_r_array` + * :c:data:`aos_sr_vc_alpha_lda_w` + * :c:data:`aos_sr_vc_alpha_pbe_w` + * :c:data:`aos_vc_alpha_lda_w` + * :c:data:`aos_vc_alpha_pbe_w` + * :c:data:`energy_sr_x_lda` + * :c:data:`energy_sr_x_pbe` + * :c:data:`energy_x_lda` + * :c:data:`energy_x_pbe` + * :c:data:`final_grid_points` + * :c:data:`mos_grad_in_r_array` + * :c:data:`mos_in_r_array` + * :c:data:`mos_lapl_in_r_array` + * :c:data:`one_e_dm_alpha_at_r` + * :c:data:`one_e_dm_and_grad_alpha_in_r` + * :c:data:`potential_sr_c_alpha_ao_lda` + * :c:data:`potential_sr_x_alpha_ao_lda` + * :c:data:`potential_sr_x_alpha_ao_pbe` + * :c:data:`potential_x_alpha_ao_lda` + * :c:data:`potential_x_alpha_ao_pbe` + + +.. c:var:: n_points_grid_per_atom + + + File : :file:`becke_numerical_grid/grid_becke.irp.f` + + .. code:: fortran + + integer :: n_points_grid_per_atom + + + Number of grid points per atom + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_points_radial_grid` + + + +.. c:var:: n_points_integration_angular + + + File : :file:`becke_numerical_grid/grid_becke.irp.f` + + .. code:: fortran + + integer :: n_points_radial_grid + integer :: n_points_integration_angular + + + n_points_radial_grid = number of radial grid points per atom + + n_points_integration_angular = number of angular grid points per atom + + These numbers are automatically set by setting the grid_type_sgn parameter + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`grid_type_sgn` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`angular_quadrature_points` + * :c:data:`final_grid_points` + * :c:data:`final_weight_at_r` + * :c:data:`grid_points_per_atom` + * :c:data:`grid_points_radial` + * :c:data:`n_points_final_grid` + * :c:data:`n_points_grid_per_atom` + * :c:data:`one_e_dm_alpha_in_r` + * :c:data:`weight_at_r` + + +.. c:var:: n_points_radial_grid + + + File : :file:`becke_numerical_grid/grid_becke.irp.f` + + .. code:: fortran + + integer :: n_points_radial_grid + integer :: n_points_integration_angular + + + n_points_radial_grid = number of radial grid points per atom + + n_points_integration_angular = number of angular grid points per atom + + These numbers are automatically set by setting the grid_type_sgn parameter + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`grid_type_sgn` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`angular_quadrature_points` + * :c:data:`final_grid_points` + * :c:data:`final_weight_at_r` + * :c:data:`grid_points_per_atom` + * :c:data:`grid_points_radial` + * :c:data:`n_points_final_grid` + * :c:data:`n_points_grid_per_atom` + * :c:data:`one_e_dm_alpha_in_r` + * :c:data:`weight_at_r` + + +.. c:var:: weight_at_r + + + File : :file:`becke_numerical_grid/grid_becke.irp.f` + + .. code:: fortran + + double precision, allocatable :: weight_at_r (n_points_integration_angular,n_points_radial_grid,nucl_num) + + + Weight function at grid points : w_n(r) according to the equation (22) + of Becke original paper (JCP, 88, 1988) + + The "n" discrete variable represents the nucleis which in this array is + represented by the last dimension and the points are labelled by the + other dimensions. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`grid_points_per_atom` + * :c:data:`n_points_radial_grid` + * :c:data:`nucl_coord_transp` + * :c:data:`nucl_dist_inv` + * :c:data:`nucl_num` + * :c:data:`slater_bragg_type_inter_distance_ua` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`final_weight_at_r` + + +.. c:var:: weights_angular_points + + + File : :file:`becke_numerical_grid/grid_becke.irp.f` + + .. code:: fortran + + double precision, allocatable :: angular_quadrature_points (n_points_integration_angular,3) + double precision, allocatable :: weights_angular_points (n_points_integration_angular) + + + weights and grid points for the integration on the angular variables on + the unit sphere centered on (0,0,0) + According to the LEBEDEV scheme + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_points_radial_grid` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`final_weight_at_r` + * :c:data:`grid_points_per_atom` + + + +Subroutines / functions +----------------------- + +.. c:function:: cell_function_becke: + + + File : :file:`becke_numerical_grid/step_function_becke.irp.f` + + .. code:: fortran + + double precision function cell_function_becke(r,atom_number) + + + atom_number :: atom on which the cell function of Becke (1988, JCP,88(4)) + r(1:3) :: x,y,z coordinantes of the current point + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`nucl_dist_inv` + * :c:data:`slater_bragg_type_inter_distance_ua` + * :c:data:`nucl_coord_transp` + * :c:data:`nucl_num` + + +.. c:function:: derivative_knowles_function: + + + File : :file:`becke_numerical_grid/integration_radial.irp.f` + + .. code:: fortran + + double precision function derivative_knowles_function(alpha,m,x) + + + Derivative of the function proposed by Knowles (JCP, 104, 1996) for distributing the radial points + + +.. c:function:: example_becke_numerical_grid: + + + File : :file:`becke_numerical_grid/example.irp.f` + + .. code:: fortran + + subroutine example_becke_numerical_grid + + + subroutine that illustrates the main features available in becke_numerical_grid + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_points_final_grid` + * :c:data:`final_weight_at_r` + * :c:data:`n_points_radial_grid` + * :c:data:`grid_points_per_atom` + * :c:data:`final_grid_points` + * :c:data:`nucl_coord` + * :c:data:`nucl_num` + + +.. c:function:: f_function_becke: + + + File : :file:`becke_numerical_grid/step_function_becke.irp.f` + + .. code:: fortran + + double precision function f_function_becke(x) + + + + +.. c:function:: knowles_function: + + + File : :file:`becke_numerical_grid/integration_radial.irp.f` + + .. code:: fortran + + double precision function knowles_function(alpha,m,x) + + + Function proposed by Knowles (JCP, 104, 1996) for distributing the radial points : + the Log "m" function ( equation (7) in the paper ) + + +.. c:function:: step_function_becke: + + + File : :file:`becke_numerical_grid/step_function_becke.irp.f` + + .. code:: fortran + + double precision function step_function_becke(x) + + + Step function of the Becke paper (1988, JCP,88(4)) + diff --git a/docs/source/modules/bitmask.rst b/docs/source/modules/bitmask.rst new file mode 100644 index 00000000..530eb096 --- /dev/null +++ b/docs/source/modules/bitmask.rst @@ -0,0 +1,3489 @@ +.. _module_bitmask: + +.. program:: bitmask + +.. default-role:: option + +============== +bitmask module +============== + +The central part of this module is the :file:`bitmasks_module.f90` file. It contains +the constants that will be used to define on which kind of integer the bitmasks +will be defined. + +In the program, to represent a determinant as a pair of bitstrings, +the determinant should be defined as + +.. code-block:: fortran + + use bitmasks + integer(bit_kind) :: determinant(N_int,2) + + +:file:`bitmasks_routines.irp.f` contains helper routines to manipulate bitmask, like +transforming a bit string to a list of integers for example. + + +`bit_kind_shift`, `bit_kind_size` and `bit_kind` are supposed to be consistent:: + + 2**bit_kind_shift = bit_kind_size + bit_kind = bit_kind_size / 8 + + +For an example of how to use the bitmaks, see the file :file:`example.irp.f`. + + + +Providers +--------- + +.. c:var:: act_bitmask + + + File : :file:`bitmask/core_inact_act_virt.irp.f` + + .. code:: fortran + + integer, allocatable :: list_inact (dim_list_inact_orb) + integer, allocatable :: list_virt (dim_list_virt_orb) + integer, allocatable :: list_inact_reverse (mo_num) + integer, allocatable :: list_virt_reverse (mo_num) + integer, allocatable :: list_del_reverse (mo_num) + integer, allocatable :: list_del (mo_num) + integer, allocatable :: list_core (dim_list_core_orb) + integer, allocatable :: list_core_reverse (mo_num) + integer, allocatable :: list_act (dim_list_act_orb) + integer, allocatable :: list_act_reverse (mo_num) + integer(bit_kind), allocatable :: core_bitmask (N_int,2) + integer(bit_kind), allocatable :: inact_bitmask (N_int,2) + integer(bit_kind), allocatable :: act_bitmask (N_int,2) + integer(bit_kind), allocatable :: virt_bitmask (N_int,2) + integer(bit_kind), allocatable :: del_bitmask (N_int,2) + + + inact_bitmask : Bitmask of the inactive orbitals which are supposed to be doubly excited + in post CAS methods + n_inact_orb : Number of inactive orbitals + virt_bitmask : Bitmaks of vritual orbitals which are supposed to be recieve electrons + in post CAS methods + n_virt_orb : Number of virtual orbitals + list_inact : List of the inactive orbitals which are supposed to be doubly excited + in post CAS methods + list_virt : List of vritual orbitals which are supposed to be recieve electrons + in post CAS methods + list_inact_reverse : reverse list of inactive orbitals + list_inact_reverse(i) = 0 ::> not an inactive + list_inact_reverse(i) = k ::> IS the kth inactive + list_virt_reverse : reverse list of virtual orbitals + list_virt_reverse(i) = 0 ::> not an virtual + list_virt_reverse(i) = k ::> IS the kth virtual + list_act(i) = index of the ith active orbital + + list_act_reverse : reverse list of active orbitals + list_act_reverse(i) = 0 ::> not an active + list_act_reverse(i) = k ::> IS the kth active orbital + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`dim_list_core_orb` + * :c:data:`mo_class` + * :c:data:`mo_num` + * :c:data:`n_core_orb` + * :c:data:`n_int` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`core_energy` + * :c:data:`core_energy_erf` + * :c:data:`core_fock_operator` + * :c:data:`core_fock_operator_erf` + * :c:data:`eigenvectors_fock_matrix_mo` + * :c:data:`fock_matrix_mo` + * :c:data:`inact_virt_bitmask` + * :c:data:`list_core_inact_act` + * :c:data:`mo_two_e_integrals_in_map` + * :c:data:`mo_two_e_integrals_vv_from_ao` + * :c:data:`reunion_of_bitmask` + * :c:data:`reunion_of_cas_inact_bitmask` + * :c:data:`reunion_of_core_inact_bitmask` + * :c:data:`virt_bitmask_4` + + +.. c:var:: cas_bitmask + + + File : :file:`bitmask/bitmasks.irp.f` + + .. code:: fortran + + integer(bit_kind), allocatable :: cas_bitmask (N_int,2,N_cas_bitmask) + + + Bitmasks for CAS reference determinants. (N_int, alpha/beta, CAS reference) + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ezfio_filename` + * :c:data:`full_ijkl_bitmask` + * :c:data:`generators_bitmask_restart` + * :c:data:`hf_bitmask` + * :c:data:`mpi_master` + * :c:data:`n_cas_bitmask` + * :c:data:`n_generators_bitmask` + * :c:data:`n_int` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`closed_shell_ref_bitmask` + * :c:data:`psi_cas` + * :c:data:`reunion_of_bitmask` + * :c:data:`reunion_of_cas_inact_bitmask` + * :c:data:`reunion_of_core_inact_act_bitmask` + + +.. c:var:: closed_shell_ref_bitmask + + + File : :file:`bitmask/bitmasks.irp.f` + + .. code:: fortran + + integer(bit_kind), allocatable :: closed_shell_ref_bitmask (N_int,2) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`cas_bitmask` + * :c:data:`n_int` + * :c:data:`ref_bitmask` + + + +.. c:var:: core_bitmask + + + File : :file:`bitmask/core_inact_act_virt.irp.f` + + .. code:: fortran + + integer, allocatable :: list_inact (dim_list_inact_orb) + integer, allocatable :: list_virt (dim_list_virt_orb) + integer, allocatable :: list_inact_reverse (mo_num) + integer, allocatable :: list_virt_reverse (mo_num) + integer, allocatable :: list_del_reverse (mo_num) + integer, allocatable :: list_del (mo_num) + integer, allocatable :: list_core (dim_list_core_orb) + integer, allocatable :: list_core_reverse (mo_num) + integer, allocatable :: list_act (dim_list_act_orb) + integer, allocatable :: list_act_reverse (mo_num) + integer(bit_kind), allocatable :: core_bitmask (N_int,2) + integer(bit_kind), allocatable :: inact_bitmask (N_int,2) + integer(bit_kind), allocatable :: act_bitmask (N_int,2) + integer(bit_kind), allocatable :: virt_bitmask (N_int,2) + integer(bit_kind), allocatable :: del_bitmask (N_int,2) + + + inact_bitmask : Bitmask of the inactive orbitals which are supposed to be doubly excited + in post CAS methods + n_inact_orb : Number of inactive orbitals + virt_bitmask : Bitmaks of vritual orbitals which are supposed to be recieve electrons + in post CAS methods + n_virt_orb : Number of virtual orbitals + list_inact : List of the inactive orbitals which are supposed to be doubly excited + in post CAS methods + list_virt : List of vritual orbitals which are supposed to be recieve electrons + in post CAS methods + list_inact_reverse : reverse list of inactive orbitals + list_inact_reverse(i) = 0 ::> not an inactive + list_inact_reverse(i) = k ::> IS the kth inactive + list_virt_reverse : reverse list of virtual orbitals + list_virt_reverse(i) = 0 ::> not an virtual + list_virt_reverse(i) = k ::> IS the kth virtual + list_act(i) = index of the ith active orbital + + list_act_reverse : reverse list of active orbitals + list_act_reverse(i) = 0 ::> not an active + list_act_reverse(i) = k ::> IS the kth active orbital + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`dim_list_core_orb` + * :c:data:`mo_class` + * :c:data:`mo_num` + * :c:data:`n_core_orb` + * :c:data:`n_int` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`core_energy` + * :c:data:`core_energy_erf` + * :c:data:`core_fock_operator` + * :c:data:`core_fock_operator_erf` + * :c:data:`eigenvectors_fock_matrix_mo` + * :c:data:`fock_matrix_mo` + * :c:data:`inact_virt_bitmask` + * :c:data:`list_core_inact_act` + * :c:data:`mo_two_e_integrals_in_map` + * :c:data:`mo_two_e_integrals_vv_from_ao` + * :c:data:`reunion_of_bitmask` + * :c:data:`reunion_of_cas_inact_bitmask` + * :c:data:`reunion_of_core_inact_bitmask` + * :c:data:`virt_bitmask_4` + + +.. c:var:: core_inact_act_bitmask_4 + + + File : :file:`bitmask/bitmasks.irp.f` + + .. code:: fortran + + integer(bit_kind), allocatable :: core_inact_act_bitmask_4 (N_int,4) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_int` + * :c:data:`reunion_of_core_inact_act_bitmask` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_two_e_integrals_in_map` + + +.. c:var:: core_inact_virt_bitmask + + + File : :file:`bitmask/bitmasks.irp.f` + + .. code:: fortran + + integer(bit_kind), allocatable :: inact_virt_bitmask (N_int,2) + integer(bit_kind), allocatable :: core_inact_virt_bitmask (N_int,2) + + + Reunion of the inactive and virtual bitmasks + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`list_inact` + * :c:data:`n_int` + + + +.. c:var:: del_bitmask + + + File : :file:`bitmask/core_inact_act_virt.irp.f` + + .. code:: fortran + + integer, allocatable :: list_inact (dim_list_inact_orb) + integer, allocatable :: list_virt (dim_list_virt_orb) + integer, allocatable :: list_inact_reverse (mo_num) + integer, allocatable :: list_virt_reverse (mo_num) + integer, allocatable :: list_del_reverse (mo_num) + integer, allocatable :: list_del (mo_num) + integer, allocatable :: list_core (dim_list_core_orb) + integer, allocatable :: list_core_reverse (mo_num) + integer, allocatable :: list_act (dim_list_act_orb) + integer, allocatable :: list_act_reverse (mo_num) + integer(bit_kind), allocatable :: core_bitmask (N_int,2) + integer(bit_kind), allocatable :: inact_bitmask (N_int,2) + integer(bit_kind), allocatable :: act_bitmask (N_int,2) + integer(bit_kind), allocatable :: virt_bitmask (N_int,2) + integer(bit_kind), allocatable :: del_bitmask (N_int,2) + + + inact_bitmask : Bitmask of the inactive orbitals which are supposed to be doubly excited + in post CAS methods + n_inact_orb : Number of inactive orbitals + virt_bitmask : Bitmaks of vritual orbitals which are supposed to be recieve electrons + in post CAS methods + n_virt_orb : Number of virtual orbitals + list_inact : List of the inactive orbitals which are supposed to be doubly excited + in post CAS methods + list_virt : List of vritual orbitals which are supposed to be recieve electrons + in post CAS methods + list_inact_reverse : reverse list of inactive orbitals + list_inact_reverse(i) = 0 ::> not an inactive + list_inact_reverse(i) = k ::> IS the kth inactive + list_virt_reverse : reverse list of virtual orbitals + list_virt_reverse(i) = 0 ::> not an virtual + list_virt_reverse(i) = k ::> IS the kth virtual + list_act(i) = index of the ith active orbital + + list_act_reverse : reverse list of active orbitals + list_act_reverse(i) = 0 ::> not an active + list_act_reverse(i) = k ::> IS the kth active orbital + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`dim_list_core_orb` + * :c:data:`mo_class` + * :c:data:`mo_num` + * :c:data:`n_core_orb` + * :c:data:`n_int` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`core_energy` + * :c:data:`core_energy_erf` + * :c:data:`core_fock_operator` + * :c:data:`core_fock_operator_erf` + * :c:data:`eigenvectors_fock_matrix_mo` + * :c:data:`fock_matrix_mo` + * :c:data:`inact_virt_bitmask` + * :c:data:`list_core_inact_act` + * :c:data:`mo_two_e_integrals_in_map` + * :c:data:`mo_two_e_integrals_vv_from_ao` + * :c:data:`reunion_of_bitmask` + * :c:data:`reunion_of_cas_inact_bitmask` + * :c:data:`reunion_of_core_inact_bitmask` + * :c:data:`virt_bitmask_4` + + +.. c:var:: dim_list_act_orb + + + File : :file:`bitmask/core_inact_act_virt.irp.f` + + .. code:: fortran + + integer :: dim_list_core_orb + integer :: dim_list_inact_orb + integer :: dim_list_virt_orb + integer :: dim_list_act_orb + integer :: dim_list_del_orb + + + dimensions for the allocation of list_inact, list_virt, list_core and list_act + it is at least 1 + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_core_orb` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`list_inact` + + +.. c:var:: dim_list_core_orb + + + File : :file:`bitmask/core_inact_act_virt.irp.f` + + .. code:: fortran + + integer :: dim_list_core_orb + integer :: dim_list_inact_orb + integer :: dim_list_virt_orb + integer :: dim_list_act_orb + integer :: dim_list_del_orb + + + dimensions for the allocation of list_inact, list_virt, list_core and list_act + it is at least 1 + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_core_orb` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`list_inact` + + +.. c:var:: dim_list_del_orb + + + File : :file:`bitmask/core_inact_act_virt.irp.f` + + .. code:: fortran + + integer :: dim_list_core_orb + integer :: dim_list_inact_orb + integer :: dim_list_virt_orb + integer :: dim_list_act_orb + integer :: dim_list_del_orb + + + dimensions for the allocation of list_inact, list_virt, list_core and list_act + it is at least 1 + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_core_orb` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`list_inact` + + +.. c:var:: dim_list_inact_orb + + + File : :file:`bitmask/core_inact_act_virt.irp.f` + + .. code:: fortran + + integer :: dim_list_core_orb + integer :: dim_list_inact_orb + integer :: dim_list_virt_orb + integer :: dim_list_act_orb + integer :: dim_list_del_orb + + + dimensions for the allocation of list_inact, list_virt, list_core and list_act + it is at least 1 + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_core_orb` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`list_inact` + + +.. c:var:: dim_list_virt_orb + + + File : :file:`bitmask/core_inact_act_virt.irp.f` + + .. code:: fortran + + integer :: dim_list_core_orb + integer :: dim_list_inact_orb + integer :: dim_list_virt_orb + integer :: dim_list_act_orb + integer :: dim_list_del_orb + + + dimensions for the allocation of list_inact, list_virt, list_core and list_act + it is at least 1 + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_core_orb` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`list_inact` + + +.. c:var:: full_ijkl_bitmask + + + File : :file:`bitmask/bitmasks.irp.f` + + .. code:: fortran + + integer(bit_kind), allocatable :: full_ijkl_bitmask (N_int) + + + Bitmask to include all possible MOs + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_class` + * :c:data:`mo_num` + * :c:data:`n_int` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`cas_bitmask` + * :c:data:`fock_operator_closed_shell_ref_bitmask` + * :c:data:`fock_wee_closed_shell` + * :c:data:`full_ijkl_bitmask_4` + * :c:data:`generators_bitmask` + * :c:data:`generators_bitmask_restart` + + +.. c:var:: full_ijkl_bitmask_4 + + + File : :file:`bitmask/bitmasks.irp.f` + + .. code:: fortran + + integer(bit_kind), allocatable :: full_ijkl_bitmask_4 (N_int,4) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`full_ijkl_bitmask` + * :c:data:`n_int` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_two_e_integrals_erf_in_map` + * :c:data:`mo_two_e_integrals_in_map` + + +.. c:var:: generators_bitmask + + + File : :file:`bitmask/bitmasks.irp.f` + + .. code:: fortran + + integer(bit_kind), allocatable :: generators_bitmask (N_int,2,6,N_generators_bitmask) + + + Bitmasks for generator determinants. + (N_int, alpha/beta, hole/particle, generator). + + 3rd index is : + + * 1 : hole for single exc + + * 2 : particle for single exc + + * 3 : hole for 1st exc of double + + * 4 : particle for 1st exc of double + + * 5 : hole for 2nd exc of double + + * 6 : particle for 2nd exc of double + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ezfio_filename` + * :c:data:`full_ijkl_bitmask` + * :c:data:`mpi_master` + * :c:data:`n_generators_bitmask` + * :c:data:`n_int` + + + +.. c:var:: generators_bitmask_restart + + + File : :file:`bitmask/bitmasks.irp.f` + + .. code:: fortran + + integer(bit_kind), allocatable :: generators_bitmask_restart (N_int,2,6,N_generators_bitmask_restart) + + + Bitmasks for generator determinants. + (N_int, alpha/beta, hole/particle, generator). + + 3rd index is : + + * 1 : hole for single exc + + * 2 : particle for single exc + + * 3 : hole for 1st exc of double + + * 4 : particle for 1st exc of double + + * 5 : hole for 2nd exc of double + + * 6 : particle for 2nd exc of double + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ezfio_filename` + * :c:data:`full_ijkl_bitmask` + * :c:data:`mpi_master` + * :c:data:`n_generators_bitmask` + * :c:data:`n_generators_bitmask_restart` + * :c:data:`n_int` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`cas_bitmask` + + +.. c:var:: hf_bitmask + + + File : :file:`bitmask/bitmasks.irp.f` + + .. code:: fortran + + integer(bit_kind), allocatable :: hf_bitmask (N_int,2) + + + Hartree Fock bit mask + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`elec_alpha_num` + * :c:data:`elec_beta_num` + * :c:data:`n_int` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`cas_bitmask` + * :c:data:`degree_max_generators` + * :c:data:`double_exc_bitmask` + * :c:data:`max_degree_exc` + * :c:data:`psi_cas` + * :c:data:`psi_det` + * :c:data:`ref_bitmask` + * :c:data:`single_exc_bitmask` + * :c:data:`unpaired_alpha_electrons` + + +.. c:var:: i_bitmask_gen + + + File : :file:`bitmask/bitmasks.irp.f` + + .. code:: fortran + + integer :: i_bitmask_gen + + + Current bitmask for the generators + + + +.. c:var:: inact_bitmask + + + File : :file:`bitmask/core_inact_act_virt.irp.f` + + .. code:: fortran + + integer, allocatable :: list_inact (dim_list_inact_orb) + integer, allocatable :: list_virt (dim_list_virt_orb) + integer, allocatable :: list_inact_reverse (mo_num) + integer, allocatable :: list_virt_reverse (mo_num) + integer, allocatable :: list_del_reverse (mo_num) + integer, allocatable :: list_del (mo_num) + integer, allocatable :: list_core (dim_list_core_orb) + integer, allocatable :: list_core_reverse (mo_num) + integer, allocatable :: list_act (dim_list_act_orb) + integer, allocatable :: list_act_reverse (mo_num) + integer(bit_kind), allocatable :: core_bitmask (N_int,2) + integer(bit_kind), allocatable :: inact_bitmask (N_int,2) + integer(bit_kind), allocatable :: act_bitmask (N_int,2) + integer(bit_kind), allocatable :: virt_bitmask (N_int,2) + integer(bit_kind), allocatable :: del_bitmask (N_int,2) + + + inact_bitmask : Bitmask of the inactive orbitals which are supposed to be doubly excited + in post CAS methods + n_inact_orb : Number of inactive orbitals + virt_bitmask : Bitmaks of vritual orbitals which are supposed to be recieve electrons + in post CAS methods + n_virt_orb : Number of virtual orbitals + list_inact : List of the inactive orbitals which are supposed to be doubly excited + in post CAS methods + list_virt : List of vritual orbitals which are supposed to be recieve electrons + in post CAS methods + list_inact_reverse : reverse list of inactive orbitals + list_inact_reverse(i) = 0 ::> not an inactive + list_inact_reverse(i) = k ::> IS the kth inactive + list_virt_reverse : reverse list of virtual orbitals + list_virt_reverse(i) = 0 ::> not an virtual + list_virt_reverse(i) = k ::> IS the kth virtual + list_act(i) = index of the ith active orbital + + list_act_reverse : reverse list of active orbitals + list_act_reverse(i) = 0 ::> not an active + list_act_reverse(i) = k ::> IS the kth active orbital + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`dim_list_core_orb` + * :c:data:`mo_class` + * :c:data:`mo_num` + * :c:data:`n_core_orb` + * :c:data:`n_int` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`core_energy` + * :c:data:`core_energy_erf` + * :c:data:`core_fock_operator` + * :c:data:`core_fock_operator_erf` + * :c:data:`eigenvectors_fock_matrix_mo` + * :c:data:`fock_matrix_mo` + * :c:data:`inact_virt_bitmask` + * :c:data:`list_core_inact_act` + * :c:data:`mo_two_e_integrals_in_map` + * :c:data:`mo_two_e_integrals_vv_from_ao` + * :c:data:`reunion_of_bitmask` + * :c:data:`reunion_of_cas_inact_bitmask` + * :c:data:`reunion_of_core_inact_bitmask` + * :c:data:`virt_bitmask_4` + + +.. c:var:: inact_virt_bitmask + + + File : :file:`bitmask/bitmasks.irp.f` + + .. code:: fortran + + integer(bit_kind), allocatable :: inact_virt_bitmask (N_int,2) + integer(bit_kind), allocatable :: core_inact_virt_bitmask (N_int,2) + + + Reunion of the inactive and virtual bitmasks + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`list_inact` + * :c:data:`n_int` + + + +.. c:var:: index_holes_bitmask + + + File : :file:`bitmask/modify_bitmasks.irp.f` + + .. code:: fortran + + integer, allocatable :: index_holes_bitmask (3) + + + Index of the holes in the generators_bitmasks + + + +.. c:var:: index_particl_bitmask + + + File : :file:`bitmask/modify_bitmasks.irp.f` + + .. code:: fortran + + integer, allocatable :: index_particl_bitmask (3) + + + Index of the holes in the generators_bitmasks + + + +.. c:var:: list_act + + + File : :file:`bitmask/core_inact_act_virt.irp.f` + + .. code:: fortran + + integer, allocatable :: list_inact (dim_list_inact_orb) + integer, allocatable :: list_virt (dim_list_virt_orb) + integer, allocatable :: list_inact_reverse (mo_num) + integer, allocatable :: list_virt_reverse (mo_num) + integer, allocatable :: list_del_reverse (mo_num) + integer, allocatable :: list_del (mo_num) + integer, allocatable :: list_core (dim_list_core_orb) + integer, allocatable :: list_core_reverse (mo_num) + integer, allocatable :: list_act (dim_list_act_orb) + integer, allocatable :: list_act_reverse (mo_num) + integer(bit_kind), allocatable :: core_bitmask (N_int,2) + integer(bit_kind), allocatable :: inact_bitmask (N_int,2) + integer(bit_kind), allocatable :: act_bitmask (N_int,2) + integer(bit_kind), allocatable :: virt_bitmask (N_int,2) + integer(bit_kind), allocatable :: del_bitmask (N_int,2) + + + inact_bitmask : Bitmask of the inactive orbitals which are supposed to be doubly excited + in post CAS methods + n_inact_orb : Number of inactive orbitals + virt_bitmask : Bitmaks of vritual orbitals which are supposed to be recieve electrons + in post CAS methods + n_virt_orb : Number of virtual orbitals + list_inact : List of the inactive orbitals which are supposed to be doubly excited + in post CAS methods + list_virt : List of vritual orbitals which are supposed to be recieve electrons + in post CAS methods + list_inact_reverse : reverse list of inactive orbitals + list_inact_reverse(i) = 0 ::> not an inactive + list_inact_reverse(i) = k ::> IS the kth inactive + list_virt_reverse : reverse list of virtual orbitals + list_virt_reverse(i) = 0 ::> not an virtual + list_virt_reverse(i) = k ::> IS the kth virtual + list_act(i) = index of the ith active orbital + + list_act_reverse : reverse list of active orbitals + list_act_reverse(i) = 0 ::> not an active + list_act_reverse(i) = k ::> IS the kth active orbital + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`dim_list_core_orb` + * :c:data:`mo_class` + * :c:data:`mo_num` + * :c:data:`n_core_orb` + * :c:data:`n_int` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`core_energy` + * :c:data:`core_energy_erf` + * :c:data:`core_fock_operator` + * :c:data:`core_fock_operator_erf` + * :c:data:`eigenvectors_fock_matrix_mo` + * :c:data:`fock_matrix_mo` + * :c:data:`inact_virt_bitmask` + * :c:data:`list_core_inact_act` + * :c:data:`mo_two_e_integrals_in_map` + * :c:data:`mo_two_e_integrals_vv_from_ao` + * :c:data:`reunion_of_bitmask` + * :c:data:`reunion_of_cas_inact_bitmask` + * :c:data:`reunion_of_core_inact_bitmask` + * :c:data:`virt_bitmask_4` + + +.. c:var:: list_act_reverse + + + File : :file:`bitmask/core_inact_act_virt.irp.f` + + .. code:: fortran + + integer, allocatable :: list_inact (dim_list_inact_orb) + integer, allocatable :: list_virt (dim_list_virt_orb) + integer, allocatable :: list_inact_reverse (mo_num) + integer, allocatable :: list_virt_reverse (mo_num) + integer, allocatable :: list_del_reverse (mo_num) + integer, allocatable :: list_del (mo_num) + integer, allocatable :: list_core (dim_list_core_orb) + integer, allocatable :: list_core_reverse (mo_num) + integer, allocatable :: list_act (dim_list_act_orb) + integer, allocatable :: list_act_reverse (mo_num) + integer(bit_kind), allocatable :: core_bitmask (N_int,2) + integer(bit_kind), allocatable :: inact_bitmask (N_int,2) + integer(bit_kind), allocatable :: act_bitmask (N_int,2) + integer(bit_kind), allocatable :: virt_bitmask (N_int,2) + integer(bit_kind), allocatable :: del_bitmask (N_int,2) + + + inact_bitmask : Bitmask of the inactive orbitals which are supposed to be doubly excited + in post CAS methods + n_inact_orb : Number of inactive orbitals + virt_bitmask : Bitmaks of vritual orbitals which are supposed to be recieve electrons + in post CAS methods + n_virt_orb : Number of virtual orbitals + list_inact : List of the inactive orbitals which are supposed to be doubly excited + in post CAS methods + list_virt : List of vritual orbitals which are supposed to be recieve electrons + in post CAS methods + list_inact_reverse : reverse list of inactive orbitals + list_inact_reverse(i) = 0 ::> not an inactive + list_inact_reverse(i) = k ::> IS the kth inactive + list_virt_reverse : reverse list of virtual orbitals + list_virt_reverse(i) = 0 ::> not an virtual + list_virt_reverse(i) = k ::> IS the kth virtual + list_act(i) = index of the ith active orbital + + list_act_reverse : reverse list of active orbitals + list_act_reverse(i) = 0 ::> not an active + list_act_reverse(i) = k ::> IS the kth active orbital + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`dim_list_core_orb` + * :c:data:`mo_class` + * :c:data:`mo_num` + * :c:data:`n_core_orb` + * :c:data:`n_int` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`core_energy` + * :c:data:`core_energy_erf` + * :c:data:`core_fock_operator` + * :c:data:`core_fock_operator_erf` + * :c:data:`eigenvectors_fock_matrix_mo` + * :c:data:`fock_matrix_mo` + * :c:data:`inact_virt_bitmask` + * :c:data:`list_core_inact_act` + * :c:data:`mo_two_e_integrals_in_map` + * :c:data:`mo_two_e_integrals_vv_from_ao` + * :c:data:`reunion_of_bitmask` + * :c:data:`reunion_of_cas_inact_bitmask` + * :c:data:`reunion_of_core_inact_bitmask` + * :c:data:`virt_bitmask_4` + + +.. c:var:: list_core + + + File : :file:`bitmask/core_inact_act_virt.irp.f` + + .. code:: fortran + + integer, allocatable :: list_inact (dim_list_inact_orb) + integer, allocatable :: list_virt (dim_list_virt_orb) + integer, allocatable :: list_inact_reverse (mo_num) + integer, allocatable :: list_virt_reverse (mo_num) + integer, allocatable :: list_del_reverse (mo_num) + integer, allocatable :: list_del (mo_num) + integer, allocatable :: list_core (dim_list_core_orb) + integer, allocatable :: list_core_reverse (mo_num) + integer, allocatable :: list_act (dim_list_act_orb) + integer, allocatable :: list_act_reverse (mo_num) + integer(bit_kind), allocatable :: core_bitmask (N_int,2) + integer(bit_kind), allocatable :: inact_bitmask (N_int,2) + integer(bit_kind), allocatable :: act_bitmask (N_int,2) + integer(bit_kind), allocatable :: virt_bitmask (N_int,2) + integer(bit_kind), allocatable :: del_bitmask (N_int,2) + + + inact_bitmask : Bitmask of the inactive orbitals which are supposed to be doubly excited + in post CAS methods + n_inact_orb : Number of inactive orbitals + virt_bitmask : Bitmaks of vritual orbitals which are supposed to be recieve electrons + in post CAS methods + n_virt_orb : Number of virtual orbitals + list_inact : List of the inactive orbitals which are supposed to be doubly excited + in post CAS methods + list_virt : List of vritual orbitals which are supposed to be recieve electrons + in post CAS methods + list_inact_reverse : reverse list of inactive orbitals + list_inact_reverse(i) = 0 ::> not an inactive + list_inact_reverse(i) = k ::> IS the kth inactive + list_virt_reverse : reverse list of virtual orbitals + list_virt_reverse(i) = 0 ::> not an virtual + list_virt_reverse(i) = k ::> IS the kth virtual + list_act(i) = index of the ith active orbital + + list_act_reverse : reverse list of active orbitals + list_act_reverse(i) = 0 ::> not an active + list_act_reverse(i) = k ::> IS the kth active orbital + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`dim_list_core_orb` + * :c:data:`mo_class` + * :c:data:`mo_num` + * :c:data:`n_core_orb` + * :c:data:`n_int` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`core_energy` + * :c:data:`core_energy_erf` + * :c:data:`core_fock_operator` + * :c:data:`core_fock_operator_erf` + * :c:data:`eigenvectors_fock_matrix_mo` + * :c:data:`fock_matrix_mo` + * :c:data:`inact_virt_bitmask` + * :c:data:`list_core_inact_act` + * :c:data:`mo_two_e_integrals_in_map` + * :c:data:`mo_two_e_integrals_vv_from_ao` + * :c:data:`reunion_of_bitmask` + * :c:data:`reunion_of_cas_inact_bitmask` + * :c:data:`reunion_of_core_inact_bitmask` + * :c:data:`virt_bitmask_4` + + +.. c:var:: list_core_inact_act + + + File : :file:`bitmask/bitmasks.irp.f` + + .. code:: fortran + + integer, allocatable :: list_core_inact_act (n_core_inact_act_orb) + integer, allocatable :: list_core_inact_act_reverse (mo_num) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`list_inact` + * :c:data:`mo_num` + * :c:data:`n_int` + * :c:data:`reunion_of_core_inact_act_bitmask` + + + +.. c:var:: list_core_inact_act_reverse + + + File : :file:`bitmask/bitmasks.irp.f` + + .. code:: fortran + + integer, allocatable :: list_core_inact_act (n_core_inact_act_orb) + integer, allocatable :: list_core_inact_act_reverse (mo_num) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`list_inact` + * :c:data:`mo_num` + * :c:data:`n_int` + * :c:data:`reunion_of_core_inact_act_bitmask` + + + +.. c:var:: list_core_reverse + + + File : :file:`bitmask/core_inact_act_virt.irp.f` + + .. code:: fortran + + integer, allocatable :: list_inact (dim_list_inact_orb) + integer, allocatable :: list_virt (dim_list_virt_orb) + integer, allocatable :: list_inact_reverse (mo_num) + integer, allocatable :: list_virt_reverse (mo_num) + integer, allocatable :: list_del_reverse (mo_num) + integer, allocatable :: list_del (mo_num) + integer, allocatable :: list_core (dim_list_core_orb) + integer, allocatable :: list_core_reverse (mo_num) + integer, allocatable :: list_act (dim_list_act_orb) + integer, allocatable :: list_act_reverse (mo_num) + integer(bit_kind), allocatable :: core_bitmask (N_int,2) + integer(bit_kind), allocatable :: inact_bitmask (N_int,2) + integer(bit_kind), allocatable :: act_bitmask (N_int,2) + integer(bit_kind), allocatable :: virt_bitmask (N_int,2) + integer(bit_kind), allocatable :: del_bitmask (N_int,2) + + + inact_bitmask : Bitmask of the inactive orbitals which are supposed to be doubly excited + in post CAS methods + n_inact_orb : Number of inactive orbitals + virt_bitmask : Bitmaks of vritual orbitals which are supposed to be recieve electrons + in post CAS methods + n_virt_orb : Number of virtual orbitals + list_inact : List of the inactive orbitals which are supposed to be doubly excited + in post CAS methods + list_virt : List of vritual orbitals which are supposed to be recieve electrons + in post CAS methods + list_inact_reverse : reverse list of inactive orbitals + list_inact_reverse(i) = 0 ::> not an inactive + list_inact_reverse(i) = k ::> IS the kth inactive + list_virt_reverse : reverse list of virtual orbitals + list_virt_reverse(i) = 0 ::> not an virtual + list_virt_reverse(i) = k ::> IS the kth virtual + list_act(i) = index of the ith active orbital + + list_act_reverse : reverse list of active orbitals + list_act_reverse(i) = 0 ::> not an active + list_act_reverse(i) = k ::> IS the kth active orbital + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`dim_list_core_orb` + * :c:data:`mo_class` + * :c:data:`mo_num` + * :c:data:`n_core_orb` + * :c:data:`n_int` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`core_energy` + * :c:data:`core_energy_erf` + * :c:data:`core_fock_operator` + * :c:data:`core_fock_operator_erf` + * :c:data:`eigenvectors_fock_matrix_mo` + * :c:data:`fock_matrix_mo` + * :c:data:`inact_virt_bitmask` + * :c:data:`list_core_inact_act` + * :c:data:`mo_two_e_integrals_in_map` + * :c:data:`mo_two_e_integrals_vv_from_ao` + * :c:data:`reunion_of_bitmask` + * :c:data:`reunion_of_cas_inact_bitmask` + * :c:data:`reunion_of_core_inact_bitmask` + * :c:data:`virt_bitmask_4` + + +.. c:var:: list_del + + + File : :file:`bitmask/core_inact_act_virt.irp.f` + + .. code:: fortran + + integer, allocatable :: list_inact (dim_list_inact_orb) + integer, allocatable :: list_virt (dim_list_virt_orb) + integer, allocatable :: list_inact_reverse (mo_num) + integer, allocatable :: list_virt_reverse (mo_num) + integer, allocatable :: list_del_reverse (mo_num) + integer, allocatable :: list_del (mo_num) + integer, allocatable :: list_core (dim_list_core_orb) + integer, allocatable :: list_core_reverse (mo_num) + integer, allocatable :: list_act (dim_list_act_orb) + integer, allocatable :: list_act_reverse (mo_num) + integer(bit_kind), allocatable :: core_bitmask (N_int,2) + integer(bit_kind), allocatable :: inact_bitmask (N_int,2) + integer(bit_kind), allocatable :: act_bitmask (N_int,2) + integer(bit_kind), allocatable :: virt_bitmask (N_int,2) + integer(bit_kind), allocatable :: del_bitmask (N_int,2) + + + inact_bitmask : Bitmask of the inactive orbitals which are supposed to be doubly excited + in post CAS methods + n_inact_orb : Number of inactive orbitals + virt_bitmask : Bitmaks of vritual orbitals which are supposed to be recieve electrons + in post CAS methods + n_virt_orb : Number of virtual orbitals + list_inact : List of the inactive orbitals which are supposed to be doubly excited + in post CAS methods + list_virt : List of vritual orbitals which are supposed to be recieve electrons + in post CAS methods + list_inact_reverse : reverse list of inactive orbitals + list_inact_reverse(i) = 0 ::> not an inactive + list_inact_reverse(i) = k ::> IS the kth inactive + list_virt_reverse : reverse list of virtual orbitals + list_virt_reverse(i) = 0 ::> not an virtual + list_virt_reverse(i) = k ::> IS the kth virtual + list_act(i) = index of the ith active orbital + + list_act_reverse : reverse list of active orbitals + list_act_reverse(i) = 0 ::> not an active + list_act_reverse(i) = k ::> IS the kth active orbital + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`dim_list_core_orb` + * :c:data:`mo_class` + * :c:data:`mo_num` + * :c:data:`n_core_orb` + * :c:data:`n_int` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`core_energy` + * :c:data:`core_energy_erf` + * :c:data:`core_fock_operator` + * :c:data:`core_fock_operator_erf` + * :c:data:`eigenvectors_fock_matrix_mo` + * :c:data:`fock_matrix_mo` + * :c:data:`inact_virt_bitmask` + * :c:data:`list_core_inact_act` + * :c:data:`mo_two_e_integrals_in_map` + * :c:data:`mo_two_e_integrals_vv_from_ao` + * :c:data:`reunion_of_bitmask` + * :c:data:`reunion_of_cas_inact_bitmask` + * :c:data:`reunion_of_core_inact_bitmask` + * :c:data:`virt_bitmask_4` + + +.. c:var:: list_del_reverse + + + File : :file:`bitmask/core_inact_act_virt.irp.f` + + .. code:: fortran + + integer, allocatable :: list_inact (dim_list_inact_orb) + integer, allocatable :: list_virt (dim_list_virt_orb) + integer, allocatable :: list_inact_reverse (mo_num) + integer, allocatable :: list_virt_reverse (mo_num) + integer, allocatable :: list_del_reverse (mo_num) + integer, allocatable :: list_del (mo_num) + integer, allocatable :: list_core (dim_list_core_orb) + integer, allocatable :: list_core_reverse (mo_num) + integer, allocatable :: list_act (dim_list_act_orb) + integer, allocatable :: list_act_reverse (mo_num) + integer(bit_kind), allocatable :: core_bitmask (N_int,2) + integer(bit_kind), allocatable :: inact_bitmask (N_int,2) + integer(bit_kind), allocatable :: act_bitmask (N_int,2) + integer(bit_kind), allocatable :: virt_bitmask (N_int,2) + integer(bit_kind), allocatable :: del_bitmask (N_int,2) + + + inact_bitmask : Bitmask of the inactive orbitals which are supposed to be doubly excited + in post CAS methods + n_inact_orb : Number of inactive orbitals + virt_bitmask : Bitmaks of vritual orbitals which are supposed to be recieve electrons + in post CAS methods + n_virt_orb : Number of virtual orbitals + list_inact : List of the inactive orbitals which are supposed to be doubly excited + in post CAS methods + list_virt : List of vritual orbitals which are supposed to be recieve electrons + in post CAS methods + list_inact_reverse : reverse list of inactive orbitals + list_inact_reverse(i) = 0 ::> not an inactive + list_inact_reverse(i) = k ::> IS the kth inactive + list_virt_reverse : reverse list of virtual orbitals + list_virt_reverse(i) = 0 ::> not an virtual + list_virt_reverse(i) = k ::> IS the kth virtual + list_act(i) = index of the ith active orbital + + list_act_reverse : reverse list of active orbitals + list_act_reverse(i) = 0 ::> not an active + list_act_reverse(i) = k ::> IS the kth active orbital + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`dim_list_core_orb` + * :c:data:`mo_class` + * :c:data:`mo_num` + * :c:data:`n_core_orb` + * :c:data:`n_int` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`core_energy` + * :c:data:`core_energy_erf` + * :c:data:`core_fock_operator` + * :c:data:`core_fock_operator_erf` + * :c:data:`eigenvectors_fock_matrix_mo` + * :c:data:`fock_matrix_mo` + * :c:data:`inact_virt_bitmask` + * :c:data:`list_core_inact_act` + * :c:data:`mo_two_e_integrals_in_map` + * :c:data:`mo_two_e_integrals_vv_from_ao` + * :c:data:`reunion_of_bitmask` + * :c:data:`reunion_of_cas_inact_bitmask` + * :c:data:`reunion_of_core_inact_bitmask` + * :c:data:`virt_bitmask_4` + + +.. c:var:: list_inact + + + File : :file:`bitmask/core_inact_act_virt.irp.f` + + .. code:: fortran + + integer, allocatable :: list_inact (dim_list_inact_orb) + integer, allocatable :: list_virt (dim_list_virt_orb) + integer, allocatable :: list_inact_reverse (mo_num) + integer, allocatable :: list_virt_reverse (mo_num) + integer, allocatable :: list_del_reverse (mo_num) + integer, allocatable :: list_del (mo_num) + integer, allocatable :: list_core (dim_list_core_orb) + integer, allocatable :: list_core_reverse (mo_num) + integer, allocatable :: list_act (dim_list_act_orb) + integer, allocatable :: list_act_reverse (mo_num) + integer(bit_kind), allocatable :: core_bitmask (N_int,2) + integer(bit_kind), allocatable :: inact_bitmask (N_int,2) + integer(bit_kind), allocatable :: act_bitmask (N_int,2) + integer(bit_kind), allocatable :: virt_bitmask (N_int,2) + integer(bit_kind), allocatable :: del_bitmask (N_int,2) + + + inact_bitmask : Bitmask of the inactive orbitals which are supposed to be doubly excited + in post CAS methods + n_inact_orb : Number of inactive orbitals + virt_bitmask : Bitmaks of vritual orbitals which are supposed to be recieve electrons + in post CAS methods + n_virt_orb : Number of virtual orbitals + list_inact : List of the inactive orbitals which are supposed to be doubly excited + in post CAS methods + list_virt : List of vritual orbitals which are supposed to be recieve electrons + in post CAS methods + list_inact_reverse : reverse list of inactive orbitals + list_inact_reverse(i) = 0 ::> not an inactive + list_inact_reverse(i) = k ::> IS the kth inactive + list_virt_reverse : reverse list of virtual orbitals + list_virt_reverse(i) = 0 ::> not an virtual + list_virt_reverse(i) = k ::> IS the kth virtual + list_act(i) = index of the ith active orbital + + list_act_reverse : reverse list of active orbitals + list_act_reverse(i) = 0 ::> not an active + list_act_reverse(i) = k ::> IS the kth active orbital + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`dim_list_core_orb` + * :c:data:`mo_class` + * :c:data:`mo_num` + * :c:data:`n_core_orb` + * :c:data:`n_int` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`core_energy` + * :c:data:`core_energy_erf` + * :c:data:`core_fock_operator` + * :c:data:`core_fock_operator_erf` + * :c:data:`eigenvectors_fock_matrix_mo` + * :c:data:`fock_matrix_mo` + * :c:data:`inact_virt_bitmask` + * :c:data:`list_core_inact_act` + * :c:data:`mo_two_e_integrals_in_map` + * :c:data:`mo_two_e_integrals_vv_from_ao` + * :c:data:`reunion_of_bitmask` + * :c:data:`reunion_of_cas_inact_bitmask` + * :c:data:`reunion_of_core_inact_bitmask` + * :c:data:`virt_bitmask_4` + + +.. c:var:: list_inact_reverse + + + File : :file:`bitmask/core_inact_act_virt.irp.f` + + .. code:: fortran + + integer, allocatable :: list_inact (dim_list_inact_orb) + integer, allocatable :: list_virt (dim_list_virt_orb) + integer, allocatable :: list_inact_reverse (mo_num) + integer, allocatable :: list_virt_reverse (mo_num) + integer, allocatable :: list_del_reverse (mo_num) + integer, allocatable :: list_del (mo_num) + integer, allocatable :: list_core (dim_list_core_orb) + integer, allocatable :: list_core_reverse (mo_num) + integer, allocatable :: list_act (dim_list_act_orb) + integer, allocatable :: list_act_reverse (mo_num) + integer(bit_kind), allocatable :: core_bitmask (N_int,2) + integer(bit_kind), allocatable :: inact_bitmask (N_int,2) + integer(bit_kind), allocatable :: act_bitmask (N_int,2) + integer(bit_kind), allocatable :: virt_bitmask (N_int,2) + integer(bit_kind), allocatable :: del_bitmask (N_int,2) + + + inact_bitmask : Bitmask of the inactive orbitals which are supposed to be doubly excited + in post CAS methods + n_inact_orb : Number of inactive orbitals + virt_bitmask : Bitmaks of vritual orbitals which are supposed to be recieve electrons + in post CAS methods + n_virt_orb : Number of virtual orbitals + list_inact : List of the inactive orbitals which are supposed to be doubly excited + in post CAS methods + list_virt : List of vritual orbitals which are supposed to be recieve electrons + in post CAS methods + list_inact_reverse : reverse list of inactive orbitals + list_inact_reverse(i) = 0 ::> not an inactive + list_inact_reverse(i) = k ::> IS the kth inactive + list_virt_reverse : reverse list of virtual orbitals + list_virt_reverse(i) = 0 ::> not an virtual + list_virt_reverse(i) = k ::> IS the kth virtual + list_act(i) = index of the ith active orbital + + list_act_reverse : reverse list of active orbitals + list_act_reverse(i) = 0 ::> not an active + list_act_reverse(i) = k ::> IS the kth active orbital + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`dim_list_core_orb` + * :c:data:`mo_class` + * :c:data:`mo_num` + * :c:data:`n_core_orb` + * :c:data:`n_int` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`core_energy` + * :c:data:`core_energy_erf` + * :c:data:`core_fock_operator` + * :c:data:`core_fock_operator_erf` + * :c:data:`eigenvectors_fock_matrix_mo` + * :c:data:`fock_matrix_mo` + * :c:data:`inact_virt_bitmask` + * :c:data:`list_core_inact_act` + * :c:data:`mo_two_e_integrals_in_map` + * :c:data:`mo_two_e_integrals_vv_from_ao` + * :c:data:`reunion_of_bitmask` + * :c:data:`reunion_of_cas_inact_bitmask` + * :c:data:`reunion_of_core_inact_bitmask` + * :c:data:`virt_bitmask_4` + + +.. c:var:: list_virt + + + File : :file:`bitmask/core_inact_act_virt.irp.f` + + .. code:: fortran + + integer, allocatable :: list_inact (dim_list_inact_orb) + integer, allocatable :: list_virt (dim_list_virt_orb) + integer, allocatable :: list_inact_reverse (mo_num) + integer, allocatable :: list_virt_reverse (mo_num) + integer, allocatable :: list_del_reverse (mo_num) + integer, allocatable :: list_del (mo_num) + integer, allocatable :: list_core (dim_list_core_orb) + integer, allocatable :: list_core_reverse (mo_num) + integer, allocatable :: list_act (dim_list_act_orb) + integer, allocatable :: list_act_reverse (mo_num) + integer(bit_kind), allocatable :: core_bitmask (N_int,2) + integer(bit_kind), allocatable :: inact_bitmask (N_int,2) + integer(bit_kind), allocatable :: act_bitmask (N_int,2) + integer(bit_kind), allocatable :: virt_bitmask (N_int,2) + integer(bit_kind), allocatable :: del_bitmask (N_int,2) + + + inact_bitmask : Bitmask of the inactive orbitals which are supposed to be doubly excited + in post CAS methods + n_inact_orb : Number of inactive orbitals + virt_bitmask : Bitmaks of vritual orbitals which are supposed to be recieve electrons + in post CAS methods + n_virt_orb : Number of virtual orbitals + list_inact : List of the inactive orbitals which are supposed to be doubly excited + in post CAS methods + list_virt : List of vritual orbitals which are supposed to be recieve electrons + in post CAS methods + list_inact_reverse : reverse list of inactive orbitals + list_inact_reverse(i) = 0 ::> not an inactive + list_inact_reverse(i) = k ::> IS the kth inactive + list_virt_reverse : reverse list of virtual orbitals + list_virt_reverse(i) = 0 ::> not an virtual + list_virt_reverse(i) = k ::> IS the kth virtual + list_act(i) = index of the ith active orbital + + list_act_reverse : reverse list of active orbitals + list_act_reverse(i) = 0 ::> not an active + list_act_reverse(i) = k ::> IS the kth active orbital + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`dim_list_core_orb` + * :c:data:`mo_class` + * :c:data:`mo_num` + * :c:data:`n_core_orb` + * :c:data:`n_int` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`core_energy` + * :c:data:`core_energy_erf` + * :c:data:`core_fock_operator` + * :c:data:`core_fock_operator_erf` + * :c:data:`eigenvectors_fock_matrix_mo` + * :c:data:`fock_matrix_mo` + * :c:data:`inact_virt_bitmask` + * :c:data:`list_core_inact_act` + * :c:data:`mo_two_e_integrals_in_map` + * :c:data:`mo_two_e_integrals_vv_from_ao` + * :c:data:`reunion_of_bitmask` + * :c:data:`reunion_of_cas_inact_bitmask` + * :c:data:`reunion_of_core_inact_bitmask` + * :c:data:`virt_bitmask_4` + + +.. c:var:: list_virt_reverse + + + File : :file:`bitmask/core_inact_act_virt.irp.f` + + .. code:: fortran + + integer, allocatable :: list_inact (dim_list_inact_orb) + integer, allocatable :: list_virt (dim_list_virt_orb) + integer, allocatable :: list_inact_reverse (mo_num) + integer, allocatable :: list_virt_reverse (mo_num) + integer, allocatable :: list_del_reverse (mo_num) + integer, allocatable :: list_del (mo_num) + integer, allocatable :: list_core (dim_list_core_orb) + integer, allocatable :: list_core_reverse (mo_num) + integer, allocatable :: list_act (dim_list_act_orb) + integer, allocatable :: list_act_reverse (mo_num) + integer(bit_kind), allocatable :: core_bitmask (N_int,2) + integer(bit_kind), allocatable :: inact_bitmask (N_int,2) + integer(bit_kind), allocatable :: act_bitmask (N_int,2) + integer(bit_kind), allocatable :: virt_bitmask (N_int,2) + integer(bit_kind), allocatable :: del_bitmask (N_int,2) + + + inact_bitmask : Bitmask of the inactive orbitals which are supposed to be doubly excited + in post CAS methods + n_inact_orb : Number of inactive orbitals + virt_bitmask : Bitmaks of vritual orbitals which are supposed to be recieve electrons + in post CAS methods + n_virt_orb : Number of virtual orbitals + list_inact : List of the inactive orbitals which are supposed to be doubly excited + in post CAS methods + list_virt : List of vritual orbitals which are supposed to be recieve electrons + in post CAS methods + list_inact_reverse : reverse list of inactive orbitals + list_inact_reverse(i) = 0 ::> not an inactive + list_inact_reverse(i) = k ::> IS the kth inactive + list_virt_reverse : reverse list of virtual orbitals + list_virt_reverse(i) = 0 ::> not an virtual + list_virt_reverse(i) = k ::> IS the kth virtual + list_act(i) = index of the ith active orbital + + list_act_reverse : reverse list of active orbitals + list_act_reverse(i) = 0 ::> not an active + list_act_reverse(i) = k ::> IS the kth active orbital + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`dim_list_core_orb` + * :c:data:`mo_class` + * :c:data:`mo_num` + * :c:data:`n_core_orb` + * :c:data:`n_int` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`core_energy` + * :c:data:`core_energy_erf` + * :c:data:`core_fock_operator` + * :c:data:`core_fock_operator_erf` + * :c:data:`eigenvectors_fock_matrix_mo` + * :c:data:`fock_matrix_mo` + * :c:data:`inact_virt_bitmask` + * :c:data:`list_core_inact_act` + * :c:data:`mo_two_e_integrals_in_map` + * :c:data:`mo_two_e_integrals_vv_from_ao` + * :c:data:`reunion_of_bitmask` + * :c:data:`reunion_of_cas_inact_bitmask` + * :c:data:`reunion_of_core_inact_bitmask` + * :c:data:`virt_bitmask_4` + + +.. c:var:: mpi_bit_kind + + + File : :file:`bitmask/mpi.irp.f` + + .. code:: fortran + + integer :: mpi_bit_kind + + + MPI bit kind type + + + +.. c:var:: n_act_orb + + + File : :file:`bitmask/core_inact_act_virt.irp.f` + + .. code:: fortran + + integer :: n_core_orb + integer :: n_inact_orb + integer :: n_act_orb + integer :: n_virt_orb + integer :: n_del_orb + + + inact_bitmask : Bitmask of the inactive orbitals which are supposed to be doubly excited + in post CAS methods + n_inact_orb : Number of inactive orbitals + virt_bitmask : Bitmaks of vritual orbitals which are supposed to be recieve electrons + in post CAS methods + n_virt_orb : Number of virtual orbitals + list_inact : List of the inactive orbitals which are supposed to be doubly excited + in post CAS methods + list_virt : List of vritual orbitals which are supposed to be recieve electrons + in post CAS methods + list_inact_reverse : reverse list of inactive orbitals + list_inact_reverse(i) = 0 ::> not an inactive + list_inact_reverse(i) = k ::> IS the kth inactive + list_virt_reverse : reverse list of virtual orbitals + list_virt_reverse(i) = 0 ::> not an virtual + list_virt_reverse(i) = k ::> IS the kth virtual + list_act(i) = index of the ith active orbital + + list_act_reverse : reverse list of active orbitals + list_act_reverse(i) = 0 ::> not an active + list_act_reverse(i) = k ::> IS the kth active orbital + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_class` + * :c:data:`mo_num` + * :c:data:`mpi_master` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`core_energy` + * :c:data:`core_energy_erf` + * :c:data:`core_fock_operator` + * :c:data:`core_fock_operator_erf` + * :c:data:`dim_list_core_orb` + * :c:data:`eigenvectors_fock_matrix_mo` + * :c:data:`fock_matrix_mo` + * :c:data:`list_inact` + * :c:data:`mo_two_e_integrals_vv_from_ao` + * :c:data:`n_core_orb_allocate` + * :c:data:`n_inact_orb_allocate` + * :c:data:`n_virt_orb_allocate` + * :c:data:`pt2_f` + + +.. c:var:: n_cas_bitmask + + + File : :file:`bitmask/bitmasks.irp.f` + + .. code:: fortran + + integer :: n_cas_bitmask + + + Number of bitmasks for CAS + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ezfio_filename` + * :c:data:`mpi_master` + * :c:data:`n_int` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`cas_bitmask` + * :c:data:`psi_cas` + + +.. c:var:: n_core_inact_act_orb + + + File : :file:`bitmask/bitmasks.irp.f` + + .. code:: fortran + + integer(bit_kind), allocatable :: reunion_of_core_inact_act_bitmask (N_int,2) + integer :: n_core_inact_act_orb + + + Reunion of the core, inactive and active bitmasks + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`cas_bitmask` + * :c:data:`n_int` + * :c:data:`reunion_of_core_inact_bitmask` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`core_inact_act_bitmask_4` + * :c:data:`list_core_inact_act` + + +.. c:var:: n_core_inact_orb + + + File : :file:`bitmask/bitmasks.irp.f` + + .. code:: fortran + + integer :: n_core_inact_orb + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_int` + * :c:data:`reunion_of_core_inact_bitmask` + + + +.. c:var:: n_core_orb + + + File : :file:`bitmask/core_inact_act_virt.irp.f` + + .. code:: fortran + + integer :: n_core_orb + integer :: n_inact_orb + integer :: n_act_orb + integer :: n_virt_orb + integer :: n_del_orb + + + inact_bitmask : Bitmask of the inactive orbitals which are supposed to be doubly excited + in post CAS methods + n_inact_orb : Number of inactive orbitals + virt_bitmask : Bitmaks of vritual orbitals which are supposed to be recieve electrons + in post CAS methods + n_virt_orb : Number of virtual orbitals + list_inact : List of the inactive orbitals which are supposed to be doubly excited + in post CAS methods + list_virt : List of vritual orbitals which are supposed to be recieve electrons + in post CAS methods + list_inact_reverse : reverse list of inactive orbitals + list_inact_reverse(i) = 0 ::> not an inactive + list_inact_reverse(i) = k ::> IS the kth inactive + list_virt_reverse : reverse list of virtual orbitals + list_virt_reverse(i) = 0 ::> not an virtual + list_virt_reverse(i) = k ::> IS the kth virtual + list_act(i) = index of the ith active orbital + + list_act_reverse : reverse list of active orbitals + list_act_reverse(i) = 0 ::> not an active + list_act_reverse(i) = k ::> IS the kth active orbital + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_class` + * :c:data:`mo_num` + * :c:data:`mpi_master` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`core_energy` + * :c:data:`core_energy_erf` + * :c:data:`core_fock_operator` + * :c:data:`core_fock_operator_erf` + * :c:data:`dim_list_core_orb` + * :c:data:`eigenvectors_fock_matrix_mo` + * :c:data:`fock_matrix_mo` + * :c:data:`list_inact` + * :c:data:`mo_two_e_integrals_vv_from_ao` + * :c:data:`n_core_orb_allocate` + * :c:data:`n_inact_orb_allocate` + * :c:data:`n_virt_orb_allocate` + * :c:data:`pt2_f` + + +.. c:var:: n_core_orb_allocate + + + File : :file:`bitmask/bitmasks.irp.f` + + .. code:: fortran + + integer :: n_core_orb_allocate + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_core_orb` + + + +.. c:var:: n_del_orb + + + File : :file:`bitmask/core_inact_act_virt.irp.f` + + .. code:: fortran + + integer :: n_core_orb + integer :: n_inact_orb + integer :: n_act_orb + integer :: n_virt_orb + integer :: n_del_orb + + + inact_bitmask : Bitmask of the inactive orbitals which are supposed to be doubly excited + in post CAS methods + n_inact_orb : Number of inactive orbitals + virt_bitmask : Bitmaks of vritual orbitals which are supposed to be recieve electrons + in post CAS methods + n_virt_orb : Number of virtual orbitals + list_inact : List of the inactive orbitals which are supposed to be doubly excited + in post CAS methods + list_virt : List of vritual orbitals which are supposed to be recieve electrons + in post CAS methods + list_inact_reverse : reverse list of inactive orbitals + list_inact_reverse(i) = 0 ::> not an inactive + list_inact_reverse(i) = k ::> IS the kth inactive + list_virt_reverse : reverse list of virtual orbitals + list_virt_reverse(i) = 0 ::> not an virtual + list_virt_reverse(i) = k ::> IS the kth virtual + list_act(i) = index of the ith active orbital + + list_act_reverse : reverse list of active orbitals + list_act_reverse(i) = 0 ::> not an active + list_act_reverse(i) = k ::> IS the kth active orbital + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_class` + * :c:data:`mo_num` + * :c:data:`mpi_master` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`core_energy` + * :c:data:`core_energy_erf` + * :c:data:`core_fock_operator` + * :c:data:`core_fock_operator_erf` + * :c:data:`dim_list_core_orb` + * :c:data:`eigenvectors_fock_matrix_mo` + * :c:data:`fock_matrix_mo` + * :c:data:`list_inact` + * :c:data:`mo_two_e_integrals_vv_from_ao` + * :c:data:`n_core_orb_allocate` + * :c:data:`n_inact_orb_allocate` + * :c:data:`n_virt_orb_allocate` + * :c:data:`pt2_f` + + +.. c:var:: n_generators_bitmask + + + File : :file:`bitmask/bitmasks.irp.f` + + .. code:: fortran + + integer :: n_generators_bitmask + + + Number of bitmasks for generators + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ezfio_filename` + * :c:data:`mpi_master` + * :c:data:`n_int` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`cas_bitmask` + * :c:data:`generators_bitmask` + * :c:data:`generators_bitmask_restart` + + +.. c:var:: n_generators_bitmask_restart + + + File : :file:`bitmask/bitmasks.irp.f` + + .. code:: fortran + + integer :: n_generators_bitmask_restart + + + Number of bitmasks for generators + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ezfio_filename` + * :c:data:`mpi_master` + * :c:data:`n_int` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`generators_bitmask_restart` + + +.. c:var:: n_inact_orb + + + File : :file:`bitmask/core_inact_act_virt.irp.f` + + .. code:: fortran + + integer :: n_core_orb + integer :: n_inact_orb + integer :: n_act_orb + integer :: n_virt_orb + integer :: n_del_orb + + + inact_bitmask : Bitmask of the inactive orbitals which are supposed to be doubly excited + in post CAS methods + n_inact_orb : Number of inactive orbitals + virt_bitmask : Bitmaks of vritual orbitals which are supposed to be recieve electrons + in post CAS methods + n_virt_orb : Number of virtual orbitals + list_inact : List of the inactive orbitals which are supposed to be doubly excited + in post CAS methods + list_virt : List of vritual orbitals which are supposed to be recieve electrons + in post CAS methods + list_inact_reverse : reverse list of inactive orbitals + list_inact_reverse(i) = 0 ::> not an inactive + list_inact_reverse(i) = k ::> IS the kth inactive + list_virt_reverse : reverse list of virtual orbitals + list_virt_reverse(i) = 0 ::> not an virtual + list_virt_reverse(i) = k ::> IS the kth virtual + list_act(i) = index of the ith active orbital + + list_act_reverse : reverse list of active orbitals + list_act_reverse(i) = 0 ::> not an active + list_act_reverse(i) = k ::> IS the kth active orbital + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_class` + * :c:data:`mo_num` + * :c:data:`mpi_master` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`core_energy` + * :c:data:`core_energy_erf` + * :c:data:`core_fock_operator` + * :c:data:`core_fock_operator_erf` + * :c:data:`dim_list_core_orb` + * :c:data:`eigenvectors_fock_matrix_mo` + * :c:data:`fock_matrix_mo` + * :c:data:`list_inact` + * :c:data:`mo_two_e_integrals_vv_from_ao` + * :c:data:`n_core_orb_allocate` + * :c:data:`n_inact_orb_allocate` + * :c:data:`n_virt_orb_allocate` + * :c:data:`pt2_f` + + +.. c:var:: n_inact_orb_allocate + + + File : :file:`bitmask/bitmasks.irp.f` + + .. code:: fortran + + integer :: n_inact_orb_allocate + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_core_orb` + + + +.. c:var:: n_int + + + File : :file:`bitmask/bitmasks.irp.f` + + .. code:: fortran + + integer :: n_int + + + Number of 64-bit integers needed to represent determinants as binary strings + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_num` + * :c:data:`mpi_master` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`cas_bitmask` + * :c:data:`ci_electronic_energy` + * :c:data:`closed_shell_ref_bitmask` + * :c:data:`coef_hf_selector` + * :c:data:`core_inact_act_bitmask_4` + * :c:data:`degree_max_generators` + * :c:data:`det_to_occ_pattern` + * :c:data:`diagonal_h_matrix_on_psi_det` + * :c:data:`double_exc_bitmask` + * :c:data:`exc_degree_per_selectors` + * :c:data:`fock_operator_closed_shell_ref_bitmask` + * :c:data:`fock_wee_closed_shell` + * :c:data:`full_ijkl_bitmask` + * :c:data:`full_ijkl_bitmask_4` + * :c:data:`generators_bitmask` + * :c:data:`generators_bitmask_restart` + * :c:data:`h_apply_buffer_allocated` + * :c:data:`h_matrix_all_dets` + * :c:data:`h_matrix_cas` + * :c:data:`hf_bitmask` + * :c:data:`inact_virt_bitmask` + * :c:data:`list_core_inact_act` + * :c:data:`list_inact` + * :c:data:`max_degree_exc` + * :c:data:`mo_two_e_integrals_erf_in_map` + * :c:data:`mo_two_e_integrals_in_map` + * :c:data:`n_cas_bitmask` + * :c:data:`n_core_inact_orb` + * :c:data:`n_generators_bitmask` + * :c:data:`n_generators_bitmask_restart` + * :c:data:`one_e_dm_mo_alpha` + * :c:data:`psi_bilinear_matrix_values` + * :c:data:`psi_cas` + * :c:data:`psi_cas_sorted_bit` + * :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_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` + * :c:data:`psi_selectors_diag_h_mat` + * :c:data:`ref_bitmask` + * :c:data:`ref_bitmask_energy` + * :c:data:`ref_closed_shell_bitmask` + * :c:data:`reunion_of_bitmask` + * :c:data:`reunion_of_cas_inact_bitmask` + * :c:data:`reunion_of_core_inact_act_bitmask` + * :c:data:`reunion_of_core_inact_bitmask` + * :c:data:`s2_matrix_all_dets` + * :c:data:`s2_values` + * :c:data:`single_exc_bitmask` + * :c:data:`singles_alpha_csc` + * :c:data:`singles_alpha_csc_idx` + * :c:data:`singles_beta_csc` + * :c:data:`singles_beta_csc_idx` + * :c:data:`unpaired_alpha_electrons` + * :c:data:`virt_bitmask_4` + + +.. c:var:: n_virt_orb + + + File : :file:`bitmask/core_inact_act_virt.irp.f` + + .. code:: fortran + + integer :: n_core_orb + integer :: n_inact_orb + integer :: n_act_orb + integer :: n_virt_orb + integer :: n_del_orb + + + inact_bitmask : Bitmask of the inactive orbitals which are supposed to be doubly excited + in post CAS methods + n_inact_orb : Number of inactive orbitals + virt_bitmask : Bitmaks of vritual orbitals which are supposed to be recieve electrons + in post CAS methods + n_virt_orb : Number of virtual orbitals + list_inact : List of the inactive orbitals which are supposed to be doubly excited + in post CAS methods + list_virt : List of vritual orbitals which are supposed to be recieve electrons + in post CAS methods + list_inact_reverse : reverse list of inactive orbitals + list_inact_reverse(i) = 0 ::> not an inactive + list_inact_reverse(i) = k ::> IS the kth inactive + list_virt_reverse : reverse list of virtual orbitals + list_virt_reverse(i) = 0 ::> not an virtual + list_virt_reverse(i) = k ::> IS the kth virtual + list_act(i) = index of the ith active orbital + + list_act_reverse : reverse list of active orbitals + list_act_reverse(i) = 0 ::> not an active + list_act_reverse(i) = k ::> IS the kth active orbital + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_class` + * :c:data:`mo_num` + * :c:data:`mpi_master` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`core_energy` + * :c:data:`core_energy_erf` + * :c:data:`core_fock_operator` + * :c:data:`core_fock_operator_erf` + * :c:data:`dim_list_core_orb` + * :c:data:`eigenvectors_fock_matrix_mo` + * :c:data:`fock_matrix_mo` + * :c:data:`list_inact` + * :c:data:`mo_two_e_integrals_vv_from_ao` + * :c:data:`n_core_orb_allocate` + * :c:data:`n_inact_orb_allocate` + * :c:data:`n_virt_orb_allocate` + * :c:data:`pt2_f` + + +.. c:var:: n_virt_orb_allocate + + + File : :file:`bitmask/bitmasks.irp.f` + + .. code:: fortran + + integer :: n_virt_orb_allocate + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_core_orb` + + + +.. c:var:: ref_bitmask + + + File : :file:`bitmask/bitmasks.irp.f` + + .. code:: fortran + + integer(bit_kind), allocatable :: ref_bitmask (N_int,2) + + + Reference bit mask, used in Slater rules, chosen as Hartree-Fock bitmask + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`hf_bitmask` + * :c:data:`n_int` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`closed_shell_ref_bitmask` + * :c:data:`coef_hf_selector` + * :c:data:`diagonal_h_matrix_on_psi_det` + * :c:data:`exc_degree_per_selectors` + * :c:data:`psi_det_hii` + * :c:data:`psi_selectors_diag_h_mat` + * :c:data:`ref_bitmask_energy` + * :c:data:`ref_closed_shell_bitmask` + + +.. c:var:: reunion_of_bitmask + + + File : :file:`bitmask/bitmasks.irp.f` + + .. code:: fortran + + integer(bit_kind), allocatable :: reunion_of_bitmask (N_int,2) + + + Reunion of the inactive, active and virtual bitmasks + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`cas_bitmask` + * :c:data:`list_inact` + * :c:data:`n_int` + + + +.. c:var:: reunion_of_cas_inact_bitmask + + + File : :file:`bitmask/bitmasks.irp.f` + + .. code:: fortran + + integer(bit_kind), allocatable :: reunion_of_cas_inact_bitmask (N_int,2) + + + Reunion of the inactive, active and virtual bitmasks + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`cas_bitmask` + * :c:data:`list_inact` + * :c:data:`n_int` + + + +.. c:var:: reunion_of_core_inact_act_bitmask + + + File : :file:`bitmask/bitmasks.irp.f` + + .. code:: fortran + + integer(bit_kind), allocatable :: reunion_of_core_inact_act_bitmask (N_int,2) + integer :: n_core_inact_act_orb + + + Reunion of the core, inactive and active bitmasks + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`cas_bitmask` + * :c:data:`n_int` + * :c:data:`reunion_of_core_inact_bitmask` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`core_inact_act_bitmask_4` + * :c:data:`list_core_inact_act` + + +.. c:var:: reunion_of_core_inact_bitmask + + + File : :file:`bitmask/bitmasks.irp.f` + + .. code:: fortran + + integer(bit_kind), allocatable :: reunion_of_core_inact_bitmask (N_int,2) + + + Reunion of the core and inactive and virtual bitmasks + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`list_inact` + * :c:data:`n_int` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`n_core_inact_orb` + * :c:data:`reunion_of_core_inact_act_bitmask` + + +.. c:var:: unpaired_alpha_electrons + + + File : :file:`bitmask/bitmasks.irp.f` + + .. code:: fortran + + integer(bit_kind), allocatable :: unpaired_alpha_electrons (N_int) + + + Bitmask reprenting the unpaired alpha electrons in the HF_bitmask + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`hf_bitmask` + * :c:data:`n_int` + + + +.. c:var:: virt_bitmask + + + File : :file:`bitmask/core_inact_act_virt.irp.f` + + .. code:: fortran + + integer, allocatable :: list_inact (dim_list_inact_orb) + integer, allocatable :: list_virt (dim_list_virt_orb) + integer, allocatable :: list_inact_reverse (mo_num) + integer, allocatable :: list_virt_reverse (mo_num) + integer, allocatable :: list_del_reverse (mo_num) + integer, allocatable :: list_del (mo_num) + integer, allocatable :: list_core (dim_list_core_orb) + integer, allocatable :: list_core_reverse (mo_num) + integer, allocatable :: list_act (dim_list_act_orb) + integer, allocatable :: list_act_reverse (mo_num) + integer(bit_kind), allocatable :: core_bitmask (N_int,2) + integer(bit_kind), allocatable :: inact_bitmask (N_int,2) + integer(bit_kind), allocatable :: act_bitmask (N_int,2) + integer(bit_kind), allocatable :: virt_bitmask (N_int,2) + integer(bit_kind), allocatable :: del_bitmask (N_int,2) + + + inact_bitmask : Bitmask of the inactive orbitals which are supposed to be doubly excited + in post CAS methods + n_inact_orb : Number of inactive orbitals + virt_bitmask : Bitmaks of vritual orbitals which are supposed to be recieve electrons + in post CAS methods + n_virt_orb : Number of virtual orbitals + list_inact : List of the inactive orbitals which are supposed to be doubly excited + in post CAS methods + list_virt : List of vritual orbitals which are supposed to be recieve electrons + in post CAS methods + list_inact_reverse : reverse list of inactive orbitals + list_inact_reverse(i) = 0 ::> not an inactive + list_inact_reverse(i) = k ::> IS the kth inactive + list_virt_reverse : reverse list of virtual orbitals + list_virt_reverse(i) = 0 ::> not an virtual + list_virt_reverse(i) = k ::> IS the kth virtual + list_act(i) = index of the ith active orbital + + list_act_reverse : reverse list of active orbitals + list_act_reverse(i) = 0 ::> not an active + list_act_reverse(i) = k ::> IS the kth active orbital + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`dim_list_core_orb` + * :c:data:`mo_class` + * :c:data:`mo_num` + * :c:data:`n_core_orb` + * :c:data:`n_int` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`core_energy` + * :c:data:`core_energy_erf` + * :c:data:`core_fock_operator` + * :c:data:`core_fock_operator_erf` + * :c:data:`eigenvectors_fock_matrix_mo` + * :c:data:`fock_matrix_mo` + * :c:data:`inact_virt_bitmask` + * :c:data:`list_core_inact_act` + * :c:data:`mo_two_e_integrals_in_map` + * :c:data:`mo_two_e_integrals_vv_from_ao` + * :c:data:`reunion_of_bitmask` + * :c:data:`reunion_of_cas_inact_bitmask` + * :c:data:`reunion_of_core_inact_bitmask` + * :c:data:`virt_bitmask_4` + + +.. c:var:: virt_bitmask_4 + + + File : :file:`bitmask/bitmasks.irp.f` + + .. code:: fortran + + integer(bit_kind), allocatable :: virt_bitmask_4 (N_int,4) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`list_inact` + * :c:data:`n_int` + + + + +Subroutines / functions +----------------------- + +.. c:function:: bitstring_to_hexa: + + + File : :file:`bitmask/bitmasks_routines.irp.f` + + .. code:: fortran + + subroutine bitstring_to_hexa( output, string, Nint ) + + + Transform a bit string to a string in hexadecimal format for printing + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`debug_det` + * :c:func:`debug_spindet` + + +.. c:function:: bitstring_to_list: + + + File : :file:`bitmask/bitmasks_routines.irp.f` + + .. code:: fortran + + subroutine bitstring_to_list( string, list, n_elements, Nint) + + + Gives the inidices(+1) of the bits set to 1 in the bit string + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`add_integrals_to_map` + * :c:func:`add_integrals_to_map_erf` + * :c:func:`add_integrals_to_map_no_exit_34` + * :c:func:`add_integrals_to_map_three_indices` + * :c:func:`create_microlist` + * :c:func:`example_bitmask` + * :c:func:`getmobiles` + * :c:data:`list_core_inact_act` + * :c:data:`ref_bitmask_energy` + + +.. c:function:: bitstring_to_str: + + + File : :file:`bitmask/bitmasks_routines.irp.f` + + .. code:: fortran + + subroutine bitstring_to_str( output, string, Nint ) + + + Transform a bit string to a string for printing + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`add_integrals_to_map` + * :c:func:`add_integrals_to_map_erf` + * :c:func:`add_integrals_to_map_three_indices` + * :c:func:`example_bitmask` + * :c:func:`print_det` + * :c:func:`print_spindet` + + +.. c:function:: broadcast_chunks_bit_kind: + + + File : :file:`bitmask/mpi.irp.f` + + .. code:: fortran + + subroutine broadcast_chunks_bit_kind(A, LDA) + + + Broadcast with chunks of ~2GB + + +.. c:function:: clear_bit_to_integer: + + + File : :file:`bitmask/bitmasks_routines.irp.f` + + .. code:: fortran + + subroutine clear_bit_to_integer(i_physical,key,Nint) + + + set to 0 the bit number i_physical in the bitstring key + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`example_bitmask` + * :c:data:`ref_closed_shell_bitmask` + + +.. c:function:: debug_det: + + + File : :file:`bitmask/bitmasks_routines.irp.f` + + .. code:: fortran + + subroutine debug_det(string,Nint) + + + Subroutine to print the content of a determinant in '+-' notation and + hexadecimal representation. + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`build_fock_tmp` + * :c:func:`example_determinants` + * :c:func:`get_excitation_degree_vector_mono_or_exchange_verbose` + * :c:func:`number_of_holes_verbose` + * :c:func:`number_of_particles_verbose` + * :c:func:`routine_example_psi_det` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`bitstring_to_hexa` + * :c:func:`print_det` + + +.. c:function:: debug_spindet: + + + File : :file:`bitmask/bitmasks_routines.irp.f` + + .. code:: fortran + + subroutine debug_spindet(string,Nint) + + + Subroutine to print the content of a determinant in '+-' notation and + hexadecimal representation. + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`bitstring_to_hexa` + * :c:func:`print_spindet` + + +.. c:function:: example_bitmask: + + + File : :file:`bitmask/example.irp.f` + + .. code:: fortran + + subroutine example_bitmask + + + subroutine that illustrates the main features available in bitmask + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_core_orb` + * :c:data:`list_inact` + * :c:data:`n_int` + * :c:data:`mo_num` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`bitstring_to_list` + * :c:func:`bitstring_to_str` + * :c:func:`clear_bit_to_integer` + * :c:func:`set_bit_to_integer` + + +.. c:function:: initialize_bitmask_to_restart_ones: + + + File : :file:`bitmask/modify_bitmasks.irp.f` + + .. code:: fortran + + subroutine initialize_bitmask_to_restart_ones + + + Initialization of the generators_bitmask to the restart bitmask + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`generators_bitmask_restart` + * :c:data:`n_generators_bitmask` + * :c:data:`generators_bitmask` + * :c:data:`n_int` + + +.. c:function:: is_a_1h: + + + File : :file:`bitmask/bitmask_cas_routines.irp.f` + + .. code:: fortran + + logical function is_a_1h(key_in) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_int` + + +.. c:function:: is_a_1h1p: + + + File : :file:`bitmask/bitmask_cas_routines.irp.f` + + .. code:: fortran + + logical function is_a_1h1p(key_in) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_int` + + +.. c:function:: is_a_1h2p: + + + File : :file:`bitmask/bitmask_cas_routines.irp.f` + + .. code:: fortran + + logical function is_a_1h2p(key_in) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_int` + + +.. c:function:: is_a_1p: + + + File : :file:`bitmask/bitmask_cas_routines.irp.f` + + .. code:: fortran + + logical function is_a_1p(key_in) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_int` + + +.. c:function:: is_a_2h: + + + File : :file:`bitmask/bitmask_cas_routines.irp.f` + + .. code:: fortran + + logical function is_a_2h(key_in) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_int` + + +.. c:function:: is_a_2h1p: + + + File : :file:`bitmask/bitmask_cas_routines.irp.f` + + .. code:: fortran + + logical function is_a_2h1p(key_in) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_int` + + +.. c:function:: is_a_2p: + + + File : :file:`bitmask/bitmask_cas_routines.irp.f` + + .. code:: fortran + + logical function is_a_2p(key_in) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_int` + + +.. c:function:: is_a_two_holes_two_particles: + + + File : :file:`bitmask/bitmask_cas_routines.irp.f` + + .. code:: fortran + + logical function is_a_two_holes_two_particles(key_in) + + + logical function that returns True if the determinant 'key_in' + belongs to the 2h-2p excitation class of the DDCI space + this is calculated using the CAS_bitmask that defines the active + orbital space, the inact_bitmasl that defines the inactive oribital space + and the virt_bitmask that defines the virtual orbital space + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`cas_bitmask` + * :c:data:`reunion_of_core_inact_bitmask` + * :c:data:`list_inact` + * :c:data:`n_int` + + +.. c:function:: is_i_in_virtual: + + + File : :file:`bitmask/bitmask_cas_routines.irp.f` + + .. code:: fortran + + logical function is_i_in_virtual(i) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`list_inact` + * :c:data:`n_int` + + +.. c:function:: is_the_hole_in_det: + + + File : :file:`bitmask/find_hole.irp.f` + + .. code:: fortran + + logical function is_the_hole_in_det(key_in,ispin,i_hole) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_int` + + +.. c:function:: is_the_particl_in_det: + + + File : :file:`bitmask/find_hole.irp.f` + + .. code:: fortran + + logical function is_the_particl_in_det(key_in,ispin,i_particl) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_int` + + +.. c:function:: list_to_bitstring: + + + File : :file:`bitmask/bitmasks_routines.irp.f` + + .. code:: fortran + + subroutine list_to_bitstring( string, list, n_elements, Nint) + + + Returns the physical string "string(N_int,2)" from the array of + occupations "list(N_int*bit_kind_size,2) + + Called by: + + .. hlist:: + :columns: 3 + + * :c:data:`hf_bitmask` + * :c:data:`list_inact` + + +.. c:function:: modify_bitmasks_for_hole: + + + File : :file:`bitmask/modify_bitmasks.irp.f` + + .. code:: fortran + + subroutine modify_bitmasks_for_hole(i_hole) + + + modify the generators_bitmask in order that one can only excite + the electrons occupying i_hole + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_generators_bitmask` + * :c:data:`generators_bitmask` + * :c:data:`n_int` + * :c:data:`index_holes_bitmask` + + +.. c:function:: modify_bitmasks_for_hole_in_out: + + + File : :file:`bitmask/modify_bitmasks.irp.f` + + .. code:: fortran + + subroutine modify_bitmasks_for_hole_in_out(i_hole) + + + modify the generators_bitmask in order that one can only excite + the electrons occupying i_hole + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_generators_bitmask` + * :c:data:`generators_bitmask` + * :c:data:`index_holes_bitmask` + + +.. c:function:: modify_bitmasks_for_particl: + + + File : :file:`bitmask/modify_bitmasks.irp.f` + + .. code:: fortran + + subroutine modify_bitmasks_for_particl(i_part) + + + modify the generators_bitmask in order that one can only excite + the electrons to the orbital i_part + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`index_particl_bitmask` + * :c:data:`n_generators_bitmask` + * :c:data:`generators_bitmask` + * :c:data:`n_int` + + +.. c:function:: number_of_holes: + + + File : :file:`bitmask/bitmask_cas_routines.irp.f` + + .. code:: fortran + + integer function number_of_holes(key_in) + + + Function that returns the number of holes in the inact space + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`cas_bitmask` + * :c:data:`reunion_of_core_inact_bitmask` + * :c:data:`n_int` + + +.. c:function:: number_of_holes_verbose: + + + File : :file:`bitmask/bitmask_cas_routines.irp.f` + + .. code:: fortran + + integer function number_of_holes_verbose(key_in) + + + function that returns the number of holes in the inact space + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`cas_bitmask` + * :c:data:`reunion_of_core_inact_bitmask` + * :c:data:`n_int` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`debug_det` + + +.. c:function:: number_of_particles: + + + File : :file:`bitmask/bitmask_cas_routines.irp.f` + + .. code:: fortran + + integer function number_of_particles(key_in) + + + function that returns the number of particles in the virtual space + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`cas_bitmask` + * :c:data:`list_inact` + * :c:data:`n_int` + + +.. c:function:: number_of_particles_verbose: + + + File : :file:`bitmask/bitmask_cas_routines.irp.f` + + .. code:: fortran + + integer function number_of_particles_verbose(key_in) + + + function that returns the number of particles in the inact space + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`cas_bitmask` + * :c:data:`list_inact` + * :c:data:`n_int` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`debug_det` + + +.. c:function:: print_det: + + + File : :file:`bitmask/bitmasks_routines.irp.f` + + .. code:: fortran + + subroutine print_det(string,Nint) + + + Subroutine to print the content of a determinant using the '+-' notation + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`debug_det` + * :c:func:`example_determinants` + * :c:func:`print_generators_bitmasks_holes` + * :c:func:`print_generators_bitmasks_holes_for_one_generator` + * :c:func:`print_generators_bitmasks_particles` + * :c:func:`print_generators_bitmasks_particles_for_one_generator` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`bitstring_to_str` + + +.. c:function:: print_generators_bitmasks_holes: + + + File : :file:`bitmask/modify_bitmasks.irp.f` + + .. code:: fortran + + subroutine print_generators_bitmasks_holes + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`generators_bitmask` + * :c:data:`n_int` + * :c:data:`index_holes_bitmask` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`print_det` + + +.. c:function:: print_generators_bitmasks_holes_for_one_generator: + + + File : :file:`bitmask/modify_bitmasks.irp.f` + + .. code:: fortran + + subroutine print_generators_bitmasks_holes_for_one_generator(i_gen) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`generators_bitmask` + * :c:data:`n_int` + * :c:data:`index_holes_bitmask` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`print_det` + + +.. c:function:: print_generators_bitmasks_particles: + + + File : :file:`bitmask/modify_bitmasks.irp.f` + + .. code:: fortran + + subroutine print_generators_bitmasks_particles + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`index_particl_bitmask` + * :c:data:`generators_bitmask` + * :c:data:`n_int` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`print_det` + + +.. c:function:: print_generators_bitmasks_particles_for_one_generator: + + + File : :file:`bitmask/modify_bitmasks.irp.f` + + .. code:: fortran + + subroutine print_generators_bitmasks_particles_for_one_generator(i_gen) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`index_particl_bitmask` + * :c:data:`generators_bitmask` + * :c:data:`n_int` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`print_det` + + +.. c:function:: print_spindet: + + + File : :file:`bitmask/bitmasks_routines.irp.f` + + .. code:: fortran + + subroutine print_spindet(string,Nint) + + + Subroutine to print the content of a determinant using the '+-' notation + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`debug_spindet` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`bitstring_to_str` + + +.. c:function:: set_bit_to_integer: + + + File : :file:`bitmask/bitmasks_routines.irp.f` + + .. code:: fortran + + subroutine set_bit_to_integer(i_physical,key,Nint) + + + set to 1 the bit number i_physical in the bitstring key + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`example_bitmask` + + +.. c:function:: set_bitmask_hole_as_input: + + + File : :file:`bitmask/modify_bitmasks.irp.f` + + .. code:: fortran + + subroutine set_bitmask_hole_as_input(input_bimask) + + + set the generators_bitmask for the holes + as the input_bimask + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_generators_bitmask` + * :c:data:`generators_bitmask` + * :c:data:`n_int` + * :c:data:`index_holes_bitmask` + + Touches: + + .. hlist:: + :columns: 3 + + * :c:data:`generators_bitmask` + + +.. c:function:: set_bitmask_particl_as_input: + + + File : :file:`bitmask/modify_bitmasks.irp.f` + + .. code:: fortran + + subroutine set_bitmask_particl_as_input(input_bimask) + + + set the generators_bitmask for the particles + as the input_bimask + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`index_particl_bitmask` + * :c:data:`n_generators_bitmask` + * :c:data:`generators_bitmask` + * :c:data:`n_int` + + Touches: + + .. hlist:: + :columns: 3 + + * :c:data:`generators_bitmask` + diff --git a/docs/source/modules/cipsi.rst b/docs/source/modules/cipsi.rst new file mode 100644 index 00000000..7b5c82fd --- /dev/null +++ b/docs/source/modules/cipsi.rst @@ -0,0 +1,2269 @@ +.. _module_cipsi: + +.. program:: cipsi + +.. default-role:: option + +===== +cipsi +===== + +|CIPSI| algorithm. + +The :c:func:`run_stochastic_cipsi` and :c:func:`run_cipsi` subroutines start with a single +determinant, or with the wave function in the |EZFIO| database if +:option:`determinants read_wf` is |true|. + +The :c:func:`run_cipsi` subroutine iteratively: + +* Selects the most important determinants from the external space and adds them to the + internal space +* If :option:`determinants s2_eig` is |true|, it adds all the necessary + determinants to allow the eigenstates of |H| to be eigenstates of |S^2| +* Diagonalizes |H| in the enlarged internal space +* Computes the |PT2| contribution to the energy stochastically :cite:`Garniron_2017.2` + or deterministically, depending on :option:`perturbation do_pt2` +* Extrapolates the variational energy by fitting + :math:`E=E_\text{FCI} - \alpha\, E_\text{PT2}` + +The difference between :c:func:`run_stochastic_cipsi` and :c:func:`run_cipsi` is that +:c:func:`run_stochastic_cipsi` selects the determinants on the fly with the computation +of the stochastic |PT2| :cite:`Garniron_2017.2`. Hence, it is a semi-stochastic selection. It + +* Selects the most important determinants from the external space and adds them to the + internal space, on the fly with the computation of the PT2 with the stochastic algorithm + presented in :cite:`Garniron_2017.2`. +* If :option:`determinants s2_eig` is |true|, it adds all the necessary + determinants to allow the eigenstates of |H| to be eigenstates of |S^2| +* Extrapolates the variational energy by fitting + :math:`E=E_\text{FCI} - \alpha\, E_\text{PT2}` +* Diagonalizes |H| in the enlarged internal space + + +The number of selected determinants at each iteration will be such that the +size of the wave function will double at every iteration. If :option:`determinants +s2_eig` is |true|, then the number of selected determinants will be 1.5x the +current number, and then all the additional determinants will be added. + +By default, the program will stop when more than one million determinants have +been selected, or when the |PT2| energy is below :math:`10^{-4}`. + +The variational and |PT2| energies of the iterations are stored in the +|EZFIO| database, in the :ref:`module_iterations` module. + + + +Computation of the |PT2| energy +------------------------------- + +At each iteration, the |PT2| energy is computed considering the Epstein-Nesbet +zeroth-order Hamiltonian: + +.. math:: + + E_{\text{PT2}} = \sum_{ \alpha } + \frac{|\langle \Psi_S | \hat{H} | \alpha \rangle|^2} + {E - \langle \alpha | \hat{H} | \alpha \rangle} + +where the |kalpha| determinants are generated by applying all the single and +double excitation operators to all the determinants of the wave function +:math:`\Psi_G`. + +When the hybrid-deterministic/stochastic algorithm is chosen +(default), :math:`Psi_G = \Psi_S = \Psi`, the full wavefunction expanded in the +internal space. +When the deterministic algorithm is chosen (:option:`perturbation do_pt2` +is set to |false|), :math:`Psi_G` is a truncation of |Psi| using +:option:`determinants threshold_generators`, and :math:`Psi_S` is a truncation +of |Psi| using :option:`determinants threshold_selectors`, and re-weighted +by :math:`1/\langle \Psi_s | \Psi_s \rangle`. + +At every iteration, while computing the |PT2|, the variance of the wave +function is also computed: + +.. math:: + + \sigma^2 & = \langle \Psi | \hat{H}^2 | \Psi \rangle - + \langle \Psi | \hat{H} | \Psi \rangle^2 \\ + & = \sum_{i \in \text{FCI}} + \langle \Psi | \hat{H} | i \rangle + \langle i | \hat{H} | \Psi \rangle - + \langle \Psi | \hat{H} | \Psi \rangle^2 \\ + & = \sum_{ \alpha } + \langle |\Psi | \hat{H} | \alpha \rangle|^2. + +The expression of the variance is the same as the expression of the |PT2|, with +a denominator of 1. It measures how far the wave function is from the |FCI| +solution. Note that the absence of denominator in the Heat-Bath selected |CI| +method is selection method by minimization of the variance, whereas |CIPSI| is +a selection method by minimization of the energy. + + +If :option:`perturbation do_pt2` is set to |false|, then the stochastic +|PT2| is not computed, and an approximate value is obtained from the |CIPSI| +selection. The calculation is faster, but the extrapolated |FCI| value is +less accurate. This way of running the code should be used when the only +goal is to generate a wave function, as for using |CIPSI| wave functions as +trial wave functions of |QMC| calculations for example. + + +The :command:`PT2` program reads the wave function of the |EZFIO| database +and computes the energy and the |PT2| contribution. + + +State-averaging +--------------- + +Extrapolated |FCI| energy +------------------------- + +An estimate of the |FCI| energy is computed by extrapolating + +.. math:: + + E=E_\text{FCI} - \alpha\, E_\text{PT2} + +This extrapolation is done for all the requested states, and excitation +energies are printed as energy differences between the extrapolated +energies of the excited states and the extrapolated energy of the ground +state. + +The extrapolations are given considering the 2 last points, the 3 last points, ..., +the 7 last points. The extrapolated value should be chosen such that the extrpolated +value is stable with the number of points. + + + + +Providers +--------- + +.. c:var:: initialize_pt2_e0_denominator + + + File : :file:`cipsi/energy.irp.f` + + .. code:: fortran + + logical :: initialize_pt2_e0_denominator + + + If true, initialize pt2_E0_denominator + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`pt2_e0_denominator` + + +.. c:var:: nthreads_pt2 + + + File : :file:`cipsi/environment.irp.f` + + .. code:: fortran + + integer :: nthreads_pt2 + + + Number of threads for Davidson + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mpi_master` + * :c:data:`nproc` + + + +.. c:var:: pt2_cw + + + File : :file:`cipsi/pt2_stoch_routines.irp.f` + + .. code:: fortran + + double precision, allocatable :: pt2_w (N_det_generators) + double precision, allocatable :: pt2_cw (0:N_det_generators) + double precision :: pt2_w_t + double precision :: pt2_u_0 + integer, allocatable :: pt2_n_0 (pt2_N_teeth+1) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_det_generators` + * :c:data:`psi_det_sorted_gen` + * :c:data:`pt2_n_teeth` + * :c:data:`pt2_stoch_istate` + * :c:data:`qp_max_mem` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`pt2_j` + + +.. c:var:: pt2_e0_denominator + + + File : :file:`cipsi/energy.irp.f` + + .. code:: fortran + + double precision, allocatable :: pt2_e0_denominator (N_states) + + + E0 in the denominator of the PT2 + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`barycentric_electronic_energy` + * :c:data:`h0_type` + * :c:data:`initialize_pt2_e0_denominator` + * :c:data:`mpi_master` + * :c:data:`n_states` + * :c:data:`nuclear_repulsion` + * :c:data:`psi_energy` + + + +.. c:var:: pt2_f + + + File : :file:`cipsi/pt2_stoch_routines.irp.f` + + .. code:: fortran + + integer, allocatable :: pt2_f (N_det_generators) + integer :: pt2_n_tasks_max + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`elec_num` + * :c:data:`n_core_orb` + * :c:data:`n_det_generators` + * :c:data:`n_det_selectors` + * :c:data:`psi_det_sorted_gen` + + + +.. c:var:: pt2_j + + + File : :file:`cipsi/pt2_stoch_routines.irp.f` + + .. code:: fortran + + integer, allocatable :: pt2_j (N_det_generators) + integer, allocatable :: pt2_r (N_det_generators) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_det_generators` + * :c:data:`pt2_n_tasks` + * :c:data:`pt2_n_teeth` + * :c:data:`pt2_u` + * :c:data:`pt2_w` + * :c:data:`qp_max_mem` + + + +.. c:var:: pt2_mindetinfirstteeth + + + File : :file:`cipsi/pt2_stoch_routines.irp.f` + + .. code:: fortran + + integer :: pt2_n_teeth + integer :: pt2_mindetinfirstteeth + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mpi_master` + * :c:data:`n_det_generators` + * :c:data:`psi_det_sorted_gen` + * :c:data:`pt2_stoch_istate` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`pt2_j` + * :c:data:`pt2_w` + + +.. c:var:: pt2_n_0 + + + File : :file:`cipsi/pt2_stoch_routines.irp.f` + + .. code:: fortran + + double precision, allocatable :: pt2_w (N_det_generators) + double precision, allocatable :: pt2_cw (0:N_det_generators) + double precision :: pt2_w_t + double precision :: pt2_u_0 + integer, allocatable :: pt2_n_0 (pt2_N_teeth+1) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_det_generators` + * :c:data:`psi_det_sorted_gen` + * :c:data:`pt2_n_teeth` + * :c:data:`pt2_stoch_istate` + * :c:data:`qp_max_mem` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`pt2_j` + + +.. c:var:: pt2_n_tasks + + + File : :file:`cipsi/pt2_stoch_routines.irp.f` + + .. code:: fortran + + integer :: pt2_n_tasks + + + Number of parallel tasks for the Monte Carlo + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_det_generators` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`pt2_j` + + +.. c:var:: pt2_n_tasks_max + + + File : :file:`cipsi/pt2_stoch_routines.irp.f` + + .. code:: fortran + + integer, allocatable :: pt2_f (N_det_generators) + integer :: pt2_n_tasks_max + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`elec_num` + * :c:data:`n_core_orb` + * :c:data:`n_det_generators` + * :c:data:`n_det_selectors` + * :c:data:`psi_det_sorted_gen` + + + +.. c:var:: pt2_n_teeth + + + File : :file:`cipsi/pt2_stoch_routines.irp.f` + + .. code:: fortran + + integer :: pt2_n_teeth + integer :: pt2_mindetinfirstteeth + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mpi_master` + * :c:data:`n_det_generators` + * :c:data:`psi_det_sorted_gen` + * :c:data:`pt2_stoch_istate` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`pt2_j` + * :c:data:`pt2_w` + + +.. c:var:: pt2_r + + + File : :file:`cipsi/pt2_stoch_routines.irp.f` + + .. code:: fortran + + integer, allocatable :: pt2_j (N_det_generators) + integer, allocatable :: pt2_r (N_det_generators) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_det_generators` + * :c:data:`pt2_n_tasks` + * :c:data:`pt2_n_teeth` + * :c:data:`pt2_u` + * :c:data:`pt2_w` + * :c:data:`qp_max_mem` + + + +.. c:var:: pt2_stoch_istate + + + File : :file:`cipsi/pt2_stoch_routines.irp.f` + + .. code:: fortran + + integer :: pt2_stoch_istate + + + State for stochatsic PT2 + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`pt2_n_teeth` + * :c:data:`pt2_w` + + +.. c:var:: pt2_u + + + File : :file:`cipsi/pt2_stoch_routines.irp.f` + + .. code:: fortran + + double precision, allocatable :: pt2_u (N_det_generators) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_det_generators` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`pt2_j` + + +.. c:var:: pt2_u_0 + + + File : :file:`cipsi/pt2_stoch_routines.irp.f` + + .. code:: fortran + + double precision, allocatable :: pt2_w (N_det_generators) + double precision, allocatable :: pt2_cw (0:N_det_generators) + double precision :: pt2_w_t + double precision :: pt2_u_0 + integer, allocatable :: pt2_n_0 (pt2_N_teeth+1) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_det_generators` + * :c:data:`psi_det_sorted_gen` + * :c:data:`pt2_n_teeth` + * :c:data:`pt2_stoch_istate` + * :c:data:`qp_max_mem` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`pt2_j` + + +.. c:var:: pt2_w + + + File : :file:`cipsi/pt2_stoch_routines.irp.f` + + .. code:: fortran + + double precision, allocatable :: pt2_w (N_det_generators) + double precision, allocatable :: pt2_cw (0:N_det_generators) + double precision :: pt2_w_t + double precision :: pt2_u_0 + integer, allocatable :: pt2_n_0 (pt2_N_teeth+1) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_det_generators` + * :c:data:`psi_det_sorted_gen` + * :c:data:`pt2_n_teeth` + * :c:data:`pt2_stoch_istate` + * :c:data:`qp_max_mem` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`pt2_j` + + +.. c:var:: pt2_w_t + + + File : :file:`cipsi/pt2_stoch_routines.irp.f` + + .. code:: fortran + + double precision, allocatable :: pt2_w (N_det_generators) + double precision, allocatable :: pt2_cw (0:N_det_generators) + double precision :: pt2_w_t + double precision :: pt2_u_0 + integer, allocatable :: pt2_n_0 (pt2_N_teeth+1) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_det_generators` + * :c:data:`psi_det_sorted_gen` + * :c:data:`pt2_n_teeth` + * :c:data:`pt2_stoch_istate` + * :c:data:`qp_max_mem` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`pt2_j` + + +.. c:var:: selection_weight + + + File : :file:`cipsi/selection.irp.f` + + .. code:: fortran + + double precision, allocatable :: selection_weight (N_states) + + + Weights used in the selection criterion + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`c0_weight` + * :c:data:`n_states` + + + + +Subroutines / functions +----------------------- + +.. c:function:: add_to_selection_buffer: + + + File : :file:`cipsi/selection_buffer.irp.f` + + .. code:: fortran + + subroutine add_to_selection_buffer(b, det, val) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_int` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`fill_buffer_double` + * :c:func:`pt2_collector` + * :c:func:`selection_collector` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`sort_selection_buffer` + + +.. c:function:: bitstring_to_list_in_selection: + + + File : :file:`cipsi/selection.irp.f` + + .. code:: fortran + + subroutine bitstring_to_list_in_selection( string, list, n_elements, Nint) + + + Gives the inidices(+1) of the bits set to 1 in the bit string + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`splash_pq` + * :c:func:`spot_isinwf` + + +.. c:function:: create_selection_buffer: + + + File : :file:`cipsi/selection_buffer.irp.f` + + .. code:: fortran + + subroutine create_selection_buffer(N, siz_, res) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_int` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`pt2_collector` + * :c:func:`run_pt2_slave` + * :c:func:`run_selection_slave` + * :c:func:`selection_collector` + * :c:func:`zmq_pt2` + * :c:func:`zmq_selection` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`check_mem` + + +.. c:function:: delete_selection_buffer: + + + File : :file:`cipsi/selection_buffer.irp.f` + + .. code:: fortran + + subroutine delete_selection_buffer(b) + + + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`pt2_collector` + * :c:func:`run_pt2_slave` + * :c:func:`run_selection_slave` + * :c:func:`selection_collector` + * :c:func:`zmq_pt2` + * :c:func:`zmq_selection` + + +.. c:function:: fill_buffer_double: + + + File : :file:`cipsi/selection.irp.f` + + .. code:: fortran + + subroutine fill_buffer_double(i_generator, sp, h1, h2, bannedOrb, banned, fock_diag_tmp, E0, pt2, variance, norm, mat, buf) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`psi_occ_pattern_hii` + * :c:data:`det_to_occ_pattern` + * :c:data:`selection_weight` + * :c:data:`mo_num` + * :c:data:`n_states` + * :c:data:`n_int` + * :c:data:`psi_det_hii` + * :c:data:`do_only_1h1p` + * :c:data:`h0_type` + * :c:data:`psi_det_generators` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`select_singles_and_doubles` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`add_to_selection_buffer` + * :c:func:`apply_holes` + * :c:func:`apply_particles` + + +.. c:function:: get_d0: + + + File : :file:`cipsi/selection.irp.f` + + .. code:: fortran + + subroutine get_d0(gen, phasemask, bannedOrb, banned, mat, mask, h, p, sp, coefs) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_states` + * :c:data:`n_int` + * :c:data:`mo_integrals_map` + * :c:data:`mo_num` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`splash_pq` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`apply_particles` + * :c:func:`get_mo_two_e_integrals` + * :c:func:`i_h_j` + + +.. c:function:: get_d1: + + + File : :file:`cipsi/selection.irp.f` + + .. code:: fortran + + subroutine get_d1(gen, phasemask, bannedOrb, banned, mat, mask, h, p, sp, coefs) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_states` + * :c:data:`n_int` + * :c:data:`mo_integrals_map` + * :c:data:`mo_num` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`splash_pq` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`apply_particles` + * :c:func:`get_mo_two_e_integrals` + * :c:func:`i_h_j` + + +.. c:function:: get_d2: + + + File : :file:`cipsi/selection.irp.f` + + .. code:: fortran + + subroutine get_d2(gen, phasemask, bannedOrb, banned, mat, mask, h, p, sp, coefs) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_states` + * :c:data:`n_int` + * :c:data:`mo_num` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`splash_pq` + + +.. c:function:: get_mask_phase: + + + File : :file:`cipsi/selection.irp.f` + + .. code:: fortran + + subroutine get_mask_phase(det1, pm, Nint) + + + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`splash_pq` + + +.. c:function:: get_phase_bi: + + + File : :file:`cipsi/selection.irp.f` + + .. code:: fortran + + double precision function get_phase_bi(phasemask, s1, s2, h1, p1, h2, p2, Nint) + + + + +.. c:function:: make_selection_buffer_s2: + + + File : :file:`cipsi/selection_buffer.irp.f` + + .. code:: fortran + + subroutine make_selection_buffer_s2(b) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`elec_alpha_num` + * :c:data:`n_int` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`zmq_pt2` + * :c:func:`zmq_selection` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`check_mem` + * :c:func:`dsort` + * :c:func:`i8sort` + * :c:func:`occ_pattern_to_dets` + * :c:func:`occ_pattern_to_dets_size` + + +.. c:function:: merge_selection_buffers: + + + File : :file:`cipsi/selection_buffer.irp.f` + + .. code:: fortran + + subroutine merge_selection_buffers(b1, b2) + + + Merges the selection buffers b1 and b2 into b2 + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_int` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`run_pt2_slave` + * :c:func:`run_selection_slave` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`check_mem` + + +.. c:function:: past_d1: + + + File : :file:`cipsi/selection.irp.f` + + .. code:: fortran + + subroutine past_d1(bannedOrb, p) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_num` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`splash_pq` + + +.. c:function:: past_d2: + + + File : :file:`cipsi/selection.irp.f` + + .. code:: fortran + + subroutine past_d2(banned, p, sp) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_num` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`splash_pq` + + +.. c:function:: provide_everything: + + + File : :file:`cipsi/slave_cipsi.irp.f` + + .. code:: fortran + + subroutine provide_everything + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`generators_bitmask` + * :c:data:`pt2_stoch_istate` + * :c:data:`psi_selectors` + * :c:data:`psi_det` + * :c:data:`zmq_state` + * :c:data:`psi_coef` + * :c:data:`mpi_master` + * :c:data:`n_det` + * :c:data:`zmq_context` + * :c:data:`n_det_selectors` + * :c:data:`state_average_weight` + * :c:data:`mo_num` + * :c:data:`mo_two_e_integrals_in_map` + * :c:data:`pt2_e0_denominator` + * :c:data:`ci_energy` + * :c:data:`n_states_diag` + * :c:data:`threshold_generators` + * :c:data:`psi_det_sorted_bit` + * :c:data:`n_states` + * :c:data:`h_apply_buffer_allocated` + * :c:data:`n_det_generators` + * :c:data:`psi_det_generators` + * :c:data:`n_int` + * :c:data:`psi_det_generators` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`run_slave_cipsi` + + +.. c:function:: pt2_collector: + + + File : :file:`cipsi/pt2_stoch_routines.irp.f` + + .. code:: fortran + + subroutine pt2_collector(zmq_socket_pull, E, relative_error, pt2, error, variance, norm, b, N_) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`pt2_j` + * :c:data:`pt2_stoch_istate` + * :c:data:`n_states` + * :c:data:`pt2_f` + * :c:data:`pt2_w` + * :c:data:`n_det_generators` + * :c:data:`pt2_n_teeth` + * :c:data:`pt2_u` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`zmq_pt2` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`add_to_selection_buffer` + * :c:func:`check_mem` + * :c:func:`create_selection_buffer` + * :c:func:`delete_selection_buffer` + * :c:func:`end_zmq_to_qp_run_socket` + * :c:func:`pull_pt2_results` + * :c:func:`sleep` + * :c:func:`sort_selection_buffer` + * :c:func:`wall_time` + + +.. c:function:: pt2_find_sample: + + + File : :file:`cipsi/pt2_stoch_routines.irp.f` + + .. code:: fortran + + integer function pt2_find_sample(v, w) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_det_generators` + + +.. c:function:: pt2_find_sample_lr: + + + File : :file:`cipsi/pt2_stoch_routines.irp.f` + + .. code:: fortran + + integer function pt2_find_sample_lr(v, w, l_in, r_in) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_det_generators` + + +.. c:function:: pt2_slave_inproc: + + + File : :file:`cipsi/pt2_stoch_routines.irp.f` + + .. code:: fortran + + subroutine pt2_slave_inproc(i) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`pt2_e0_denominator` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`zmq_pt2` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`run_pt2_slave` + + +.. c:function:: pull_pt2_results: + + + File : :file:`cipsi/run_pt2_slave.irp.f` + + .. code:: fortran + + subroutine pull_pt2_results(zmq_socket_pull, index, pt2, variance, norm, task_id, n_tasks, b) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_states` + * :c:data:`n_int` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`pt2_collector` + + +.. c:function:: pull_selection_results: + + + File : :file:`cipsi/run_selection_slave.irp.f` + + .. code:: fortran + + subroutine pull_selection_results(zmq_socket_pull, pt2, variance, norm, val, det, N, task_id, ntask) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_states` + * :c:data:`n_int` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`selection_collector` + + +.. c:function:: push_pt2_results: + + + File : :file:`cipsi/run_pt2_slave.irp.f` + + .. code:: fortran + + subroutine push_pt2_results(zmq_socket_push, index, pt2, variance, norm, b, task_id, n_tasks) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_states` + * :c:data:`n_int` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`run_pt2_slave` + + +.. c:function:: push_selection_results: + + + File : :file:`cipsi/run_selection_slave.irp.f` + + .. code:: fortran + + subroutine push_selection_results(zmq_socket_push, pt2, variance, norm, b, task_id, ntask) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_states` + * :c:data:`n_int` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`run_selection_slave` + + +.. c:function:: remove_duplicates_in_selection_buffer: + + + File : :file:`cipsi/selection_buffer.irp.f` + + .. code:: fortran + + subroutine remove_duplicates_in_selection_buffer(b) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_int` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`zmq_pt2` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`check_mem` + * :c:func:`i8sort` + + +.. c:function:: run_cipsi: + + + File : :file:`cipsi/cipsi.irp.f` + + .. code:: fortran + + subroutine run_cipsi + + + Selected Full Configuration Interaction with deterministic selection and + stochastic PT2. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`correlation_energy_ratio_max` + * :c:data:`n_iter` + * :c:data:`psi_energy_with_nucl_rep` + * :c:data:`psi_occ_pattern` + * :c:data:`n_det_max` + * :c:data:`n_states` + * :c:data:`h_apply_buffer_allocated` + * :c:data:`n_det` + * :c:data:`s2_eig` + * :c:data:`do_pt2` + * :c:data:`psi_energy` + * :c:data:`pt2_relative_error` + * :c:data:`ref_bitmask_energy` + * :c:data:`psi_det` + * :c:data:`n_states_diag` + * :c:data:`psi_coef` + * :c:data:`psi_det_sorted` + * :c:data:`pt2_max` + * :c:data:`threshold_generators` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`fci` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`check_mem` + * :c:func:`diagonalize_ci` + * :c:func:`ezfio_get_hartree_fock_energy` + * :c:func:`ezfio_has_hartree_fock_energy` + * :c:func:`make_s2_eigenfunction` + * :c:func:`print_extrapolated_energy` + * :c:func:`print_summary` + * :c:func:`save_energy` + * :c:func:`save_iterations` + * :c:func:`save_wavefunction` + * :c:func:`write_double` + * :c:func:`zmq_pt2` + * :c:func:`zmq_selection` + + Touches: + + .. hlist:: + :columns: 3 + + * :c:data:`ci_electronic_energy` + * :c:data:`ci_electronic_energy` + * :c:data:`ci_energy` + * :c:data:`ci_electronic_energy` + * :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:data:`pt2_stoch_istate` + * :c:data:`state_average_weight` + * :c:data:`threshold_generators` + + +.. c:function:: run_pt2_slave: + + + File : :file:`cipsi/run_pt2_slave.irp.f` + + .. code:: fortran + + subroutine run_pt2_slave(thread,iproc,energy) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_states_diag` + * :c:data:`n_states` + * :c:data:`pt2_f` + * :c:data:`nproc` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`pt2_slave_inproc` + * :c:func:`run_slave_main` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`check_mem` + * :c:func:`create_selection_buffer` + * :c:func:`delete_selection_buffer` + * :c:func:`end_zmq_push_socket` + * :c:func:`end_zmq_to_qp_run_socket` + * :c:func:`merge_selection_buffers` + * :c:func:`push_pt2_results` + * :c:func:`select_connected` + * :c:func:`sleep` + * :c:func:`sort_selection_buffer` + * :c:func:`wall_time` + + +.. c:function:: run_selection_slave: + + + File : :file:`cipsi/run_selection_slave.irp.f` + + .. code:: fortran + + subroutine run_selection_slave(thread,iproc,energy) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`psi_det_beta_unique` + * :c:data:`psi_bilinear_matrix_values` + * :c:data:`psi_bilinear_matrix_transp_values` + * :c:data:`psi_bilinear_matrix_transp_rows_loc` + * :c:data:`n_states` + * :c:data:`pt2_f` + * :c:data:`psi_bilinear_matrix_values` + * :c:data:`psi_bilinear_matrix_transp_values` + * :c:data:`n_int` + * :c:data:`psi_det_alpha_unique` + * :c:data:`psi_det_sorted` + * :c:data:`psi_det_sorted` + * :c:data:`psi_bilinear_matrix_columns_loc` + * :c:data:`psi_selectors_coef_transp` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`run_slave_main` + * :c:func:`selection_slave_inproc` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`create_selection_buffer` + * :c:func:`delete_selection_buffer` + * :c:func:`end_zmq_push_socket` + * :c:func:`end_zmq_to_qp_run_socket` + * :c:func:`merge_selection_buffers` + * :c:func:`push_selection_results` + * :c:func:`select_connected` + * :c:func:`sleep` + * :c:func:`sort_selection_buffer` + + +.. c:function:: run_slave_cipsi: + + + File : :file:`cipsi/slave_cipsi.irp.f` + + .. code:: fortran + + subroutine run_slave_cipsi + + + Helper program for distributed parallelism + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`read_wf` + * :c:data:`distributed_davidson` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`fci` + * :c:func:`pt2` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`omp_set_nested` + * :c:func:`provide_everything` + * :c:func:`run_slave_main` + * :c:func:`switch_qp_run_to_master` + + Touches: + + .. hlist:: + :columns: 3 + + * :c:data:`distributed_davidson` + * :c:data:`pt2_e0_denominator` + * :c:data:`pt2_stoch_istate` + * :c:data:`read_wf` + * :c:data:`state_average_weight` + * :c:data:`threshold_generators` + + +.. c:function:: run_slave_main: + + + File : :file:`cipsi/slave_cipsi.irp.f` + + .. code:: fortran + + subroutine run_slave_main + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`pt2_stoch_istate` + * :c:data:`psi_det` + * :c:data:`zmq_state` + * :c:data:`psi_coef` + * :c:data:`mpi_rank` + * :c:data:`mpi_master` + * :c:data:`n_det` + * :c:data:`zmq_context` + * :c:data:`n_det_selectors` + * :c:data:`psi_occ_pattern_hii` + * :c:data:`state_average_weight` + * :c:data:`mo_num` + * :c:data:`nthreads_pt2` + * :c:data:`elec_alpha_num` + * :c:data:`pt2_e0_denominator` + * :c:data:`qp_max_mem` + * :c:data:`n_states_diag` + * :c:data:`s2_eig` + * :c:data:`threshold_generators` + * :c:data:`det_to_occ_pattern` + * :c:data:`n_states` + * :c:data:`pt2_f` + * :c:data:`n_det_generators` + * :c:data:`n_int` + * :c:data:`psi_det_hii` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`run_slave_cipsi` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`check_mem` + * :c:func:`davidson_slave_tcp` + * :c:func:`mpi_print` + * :c:func:`omp_set_nested` + * :c:func:`resident_memory` + * :c:func:`run_pt2_slave` + * :c:func:`run_selection_slave` + * :c:func:`sleep` + * :c:func:`wait_for_states` + * :c:func:`wall_time` + * :c:func:`write_double` + + Touches: + + .. hlist:: + :columns: 3 + + * :c:data:`pt2_e0_denominator` + * :c:data:`pt2_stoch_istate` + * :c:data:`state_average_weight` + * :c:data:`threshold_generators` + + +.. c:function:: run_stochastic_cipsi: + + + File : :file:`cipsi/stochastic_cipsi.irp.f` + + .. code:: fortran + + subroutine run_stochastic_cipsi + + + Selected Full Configuration Interaction with Stochastic selection and PT2. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`correlation_energy_ratio_max` + * :c:data:`n_iter` + * :c:data:`psi_energy_with_nucl_rep` + * :c:data:`psi_occ_pattern` + * :c:data:`n_det_max` + * :c:data:`n_states` + * :c:data:`h_apply_buffer_allocated` + * :c:data:`n_det` + * :c:data:`s2_eig` + * :c:data:`psi_energy` + * :c:data:`pt2_relative_error` + * :c:data:`ref_bitmask_energy` + * :c:data:`psi_det` + * :c:data:`n_states_diag` + * :c:data:`psi_coef` + * :c:data:`psi_det_sorted` + * :c:data:`pt2_max` + * :c:data:`threshold_generators` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`fci` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`check_mem` + * :c:func:`copy_h_apply_buffer_to_wf` + * :c:func:`diagonalize_ci` + * :c:func:`ezfio_get_hartree_fock_energy` + * :c:func:`ezfio_has_hartree_fock_energy` + * :c:func:`make_s2_eigenfunction` + * :c:func:`print_extrapolated_energy` + * :c:func:`print_summary` + * :c:func:`save_energy` + * :c:func:`save_iterations` + * :c:func:`save_wavefunction` + * :c:func:`write_double` + * :c:func:`zmq_pt2` + + Touches: + + .. hlist:: + :columns: 3 + + * :c:data:`ci_electronic_energy` + * :c:data:`ci_electronic_energy` + * :c:data:`ci_energy` + * :c:data:`ci_electronic_energy` + * :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:data:`pt2_stoch_istate` + * :c:data:`state_average_weight` + * :c:data:`threshold_generators` + + +.. c:function:: select_connected: + + + File : :file:`cipsi/selection.irp.f` + + .. code:: fortran + + subroutine select_connected(i_generator,E0,pt2,variance,norm,b,subset,csubset) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`generators_bitmask` + * :c:data:`mo_num` + * :c:data:`n_states` + * :c:data:`n_int` + * :c:data:`n_generators_bitmask` + * :c:data:`psi_det_generators` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`run_pt2_slave` + * :c:func:`run_selection_slave` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`build_fock_tmp` + * :c:func:`select_singles_and_doubles` + + +.. c:function:: select_singles_and_doubles: + + + File : :file:`cipsi/selection.irp.f` + + .. code:: fortran + + subroutine select_singles_and_doubles(i_generator,hole_mask,particle_mask,fock_diag_tmp,E0,pt2,variance,norm,buf,subset,csubset) + + + WARNING /!\ : It is assumed that the generators and selectors are psi_det_sorted + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`psi_det_beta_unique` + * :c:data:`psi_bilinear_matrix_values` + * :c:data:`psi_bilinear_matrix_transp_values` + * :c:data:`mo_num` + * :c:data:`psi_bilinear_matrix_transp_rows_loc` + * :c:data:`n_states` + * :c:data:`n_det` + * :c:data:`psi_bilinear_matrix_transp_values` + * :c:data:`psi_bilinear_matrix_values` + * :c:data:`n_det_selectors` + * :c:data:`psi_bilinear_matrix_transp_values` + * :c:data:`psi_bilinear_matrix_values` + * :c:data:`n_int` + * :c:data:`psi_det_generators` + * :c:data:`psi_det_alpha_unique` + * :c:data:`psi_det_sorted` + * :c:data:`psi_det_sorted` + * :c:data:`psi_bilinear_matrix_columns_loc` + * :c:data:`psi_selectors_coef_transp` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`select_connected` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`apply_hole` + * :c:func:`bitstring_to_list_ab` + * :c:func:`fill_buffer_double` + * :c:func:`get_excitation_degree_spin` + * :c:func:`isort` + * :c:func:`splash_pq` + * :c:func:`spot_isinwf` + + +.. c:function:: selection_collector: + + + File : :file:`cipsi/zmq_selection.irp.f` + + .. code:: fortran + + subroutine selection_collector(zmq_socket_pull, b, N, pt2, variance, norm) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_det_generators` + * :c:data:`n_states` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`zmq_selection` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`add_to_selection_buffer` + * :c:func:`check_mem` + * :c:func:`create_selection_buffer` + * :c:func:`delete_selection_buffer` + * :c:func:`end_zmq_to_qp_run_socket` + * :c:func:`pull_selection_results` + * :c:func:`sort_selection_buffer` + + +.. c:function:: selection_slave_inproc: + + + File : :file:`cipsi/zmq_selection.irp.f` + + .. code:: fortran + + subroutine selection_slave_inproc(i) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`pt2_e0_denominator` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`zmq_selection` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`run_selection_slave` + + +.. c:function:: sort_selection_buffer: + + + File : :file:`cipsi/selection_buffer.irp.f` + + .. code:: fortran + + subroutine sort_selection_buffer(b) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_int` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`add_to_selection_buffer` + * :c:func:`pt2_collector` + * :c:func:`run_pt2_slave` + * :c:func:`run_selection_slave` + * :c:func:`selection_collector` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`check_mem` + * :c:func:`dsort` + + +.. c:function:: splash_pq: + + + File : :file:`cipsi/selection.irp.f` + + .. code:: fortran + + subroutine splash_pq(mask, sp, det, i_gen, N_sel, bannedOrb, banned, mat, interesting) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`psi_selectors_coef_transp` + * :c:data:`n_states` + * :c:data:`psi_det_sorted` + * :c:data:`n_int` + * :c:data:`mo_num` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`select_singles_and_doubles` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`bitstring_to_list_in_selection` + * :c:func:`get_d0` + * :c:func:`get_d1` + * :c:func:`get_d2` + * :c:func:`get_mask_phase` + * :c:func:`past_d1` + * :c:func:`past_d2` + + +.. c:function:: spot_isinwf: + + + File : :file:`cipsi/selection.irp.f` + + .. code:: fortran + + subroutine spot_isinwf(mask, det, i_gen, N, banned, fullMatch, interesting) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_int` + * :c:data:`mo_num` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`select_singles_and_doubles` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`bitstring_to_list_in_selection` + + +.. c:function:: testteethbuilding: + + + File : :file:`cipsi/pt2_stoch_routines.irp.f` + + .. code:: fortran + + logical function testTeethBuilding(minF, N) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`pt2_stoch_istate` + * :c:data:`n_det_generators` + * :c:data:`psi_det_sorted_gen` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`check_mem` + + +.. c:function:: zmq_pt2: + + + File : :file:`cipsi/pt2_stoch_routines.irp.f` + + .. code:: fortran + + subroutine ZMQ_pt2(E, pt2,relative_error, error, variance, norm, N_in) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`psi_det_sorted` + * :c:data:`pt2_stoch_istate` + * :c:data:`psi_selectors` + * :c:data:`psi_bilinear_matrix_values` + * :c:data:`psi_occ_pattern_hii` + * :c:data:`pt2_e0_denominator` + * :c:data:`pt2_n_teeth` + * :c:data:`psi_selectors_coef_transp` + * :c:data:`n_det` + * :c:data:`mo_two_e_integrals_in_map` + * :c:data:`s2_eig` + * :c:data:`pt2_j` + * :c:data:`psi_det_alpha_unique` + * :c:data:`psi_bilinear_matrix_transp_values` + * :c:data:`state_average_weight` + * :c:data:`mo_num` + * :c:data:`nthreads_pt2` + * :c:data:`psi_bilinear_matrix_values` + * :c:data:`mo_one_e_integrals` + * :c:data:`elec_alpha_num` + * :c:data:`nproc` + * :c:data:`qp_max_mem` + * :c:data:`psi_bilinear_matrix_columns_loc` + * :c:data:`threshold_generators` + * :c:data:`psi_det_beta_unique` + * :c:data:`det_to_occ_pattern` + * :c:data:`psi_bilinear_matrix_transp_rows_loc` + * :c:data:`n_states` + * :c:data:`pt2_f` + * :c:data:`n_det_generators` + * :c:data:`psi_bilinear_matrix_transp_values` + * :c:data:`n_int` + * :c:data:`psi_det_hii` + * :c:data:`pt2_j` + * :c:data:`psi_det_sorted` + * :c:data:`pt2_w` + * :c:data:`pt2_u` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`run_cipsi` + * :c:func:`run_stochastic_cipsi` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`check_mem` + * :c:func:`create_selection_buffer` + * :c:func:`delete_selection_buffer` + * :c:func:`end_parallel_job` + * :c:func:`fill_h_apply_buffer_no_selection` + * :c:func:`make_selection_buffer_s2` + * :c:func:`new_parallel_job` + * :c:func:`omp_set_nested` + * :c:func:`pt2_collector` + * :c:func:`pt2_slave_inproc` + * :c:func:`remove_duplicates_in_selection_buffer` + * :c:func:`resident_memory` + * :c:func:`write_double` + * :c:func:`write_int` + * :c:func:`zmq_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:data:`pt2_stoch_istate` + * :c:data:`state_average_weight` + + +.. c:function:: zmq_selection: + + + File : :file:`cipsi/zmq_selection.irp.f` + + .. code:: fortran + + subroutine ZMQ_selection(N_in, pt2, variance, norm) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`psi_det_sorted` + * :c:data:`psi_selectors` + * :c:data:`psi_bilinear_matrix_values` + * :c:data:`n_det` + * :c:data:`psi_bilinear_matrix_columns_loc` + * :c:data:`n_det_selectors` + * :c:data:`psi_det_alpha_unique` + * :c:data:`psi_bilinear_matrix_transp_values` + * :c:data:`state_average_weight` + * :c:data:`psi_bilinear_matrix_values` + * :c:data:`pt2_e0_denominator` + * :c:data:`do_pt2` + * :c:data:`nproc` + * :c:data:`s2_eig` + * :c:data:`threshold_generators` + * :c:data:`psi_det_beta_unique` + * :c:data:`qp_max_mem` + * :c:data:`psi_bilinear_matrix_transp_rows_loc` + * :c:data:`n_states` + * :c:data:`pt2_f` + * :c:data:`n_det_generators` + * :c:data:`psi_bilinear_matrix_transp_values` + * :c:data:`n_int` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`run_cipsi` + * :c:func:`zmq_pt2` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`copy_h_apply_buffer_to_wf` + * :c:func:`create_selection_buffer` + * :c:func:`delete_selection_buffer` + * :c:func:`end_parallel_job` + * :c:func:`fill_h_apply_buffer_no_selection` + * :c:func:`make_selection_buffer_s2` + * :c:func:`new_parallel_job` + * :c:func:`save_wavefunction` + * :c:func:`selection_collector` + * :c:func:`selection_slave_inproc` + * :c:func:`write_double` + + 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` + diff --git a/docs/source/modules/cis.rst b/docs/source/modules/cis.rst new file mode 100644 index 00000000..7943d7ce --- /dev/null +++ b/docs/source/modules/cis.rst @@ -0,0 +1,280 @@ +.. _module_cis: + +.. program:: cis + +.. default-role:: option + +=== +cis +=== + +This module contains a |CIS| program. + +The user point of view +---------------------- + +The :ref:`cis` program performs the CI to obtain the ROHF reference + all +single excitations on top of it. This program can be very useful to: + +* **Ground state calculations**: generate a guess for the ground state wave + function if one is not sure that the :ref:`scf` program gave the lowest |SCF| + solution. In combination with :ref:`save_natorb` it can produce new |MOs| in + order to reperform an :ref:`scf` optimization. + +* **Excited states calculations**: generate guesses for all the + :option:`determinants n_states` wave functions, that will be used by the + :ref:`fci` program. + + +The main keywords/options to be used are: + +* :option:`determinants n_states`: number of states to consider for the |CIS| calculation + +* :option:`determinants s2_eig`: force all states to have the desired value of |S^2| + +* :option:`determinants expected_s2`: desired value of |S^2| + + + + +The programmer's point of view +------------------------------ + +This module was built by setting the following rules: + +* The only generator determinant is the Hartree-Fock (single-reference method) +* All generated singly excited determinants are included in the wave function (no perturbative + selection) + +These rules are set in the ``H_apply.irp.f`` file. + + + + + +EZFIO parameters +---------------- + +.. option:: energy + + Variational |CIS| energy + + + +Programs +-------- + + * :ref:`cis` + +Subroutines / functions +----------------------- + +.. c:function:: h_apply_cis: + + + File : :file:`h_apply.irp.f_shell_8` + + .. code:: fortran + + subroutine H_apply_cis() + + + Calls H_apply on the |HF| determinant and selects all connected single and double + excitations (of the same symmetry). Auto-generated by the ``generate_h_apply`` script. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`psi_coef` + * :c:data:`n_states` + * :c:data:`generators_bitmask` + * :c:data:`mo_num` + * :c:data:`mo_two_e_integrals_in_map` + * :c:data:`h_apply_buffer_allocated` + * :c:data:`n_det` + * :c:data:`s2_eig` + * :c:data:`n_det_generators` + * :c:data:`i_bitmask_gen` + * :c:data:`n_int` + * :c:data:`psi_det` + * :c:data:`psi_det_generators` + * :c:data:`psi_det_generators` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`build_fock_tmp` + * :c:func:`copy_h_apply_buffer_to_wf` + * :c:func:`dsort` + * :c:func:`h_apply_cis_diexc` + * :c:func:`h_apply_cis_monoexc` + * :c:func:`make_s2_eigenfunction` + * :c:func:`wall_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:: h_apply_cis_diexc: + + + File : :file:`h_apply.irp.f_shell_8` + + .. code:: fortran + + subroutine H_apply_cis_diexc(key_in, key_prev, hole_1,particl_1, hole_2, particl_2, fock_diag_tmp, i_generator, iproc_in ) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_int` + * :c:data:`n_det` + * :c:data:`mo_num` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`h_apply_cis` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`h_apply_cis_diexcp` + + +.. c:function:: h_apply_cis_diexcorg: + + + File : :file:`h_apply.irp.f_shell_8` + + .. code:: fortran + + subroutine H_apply_cis_diexcOrg(key_in,key_mask,hole_1,particl_1,hole_2, particl_2, fock_diag_tmp, i_generator, iproc_in ) + + + Generate all double excitations of key_in using the bit masks of holes and + particles. + Assume N_int is already provided. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_int` + * :c:data:`elec_alpha_num` + * :c:data:`mo_num` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`h_apply_cis_diexcp` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`bitstring_to_list_ab` + * :c:func:`fill_h_apply_buffer_no_selection` + + +.. c:function:: h_apply_cis_diexcp: + + + File : :file:`h_apply.irp.f_shell_8` + + .. code:: fortran + + subroutine H_apply_cis_diexcP(key_in, fs1, fh1, particl_1, fs2, fh2, particl_2, fock_diag_tmp, i_generator, iproc_in ) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_int` + * :c:data:`n_det` + * :c:data:`mo_num` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`h_apply_cis_diexc` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`h_apply_cis_diexcorg` + + +.. c:function:: h_apply_cis_monoexc: + + + File : :file:`h_apply.irp.f_shell_8` + + .. code:: fortran + + subroutine H_apply_cis_monoexc(key_in, hole_1,particl_1,fock_diag_tmp,i_generator,iproc_in ) + + + Generate all single excitations of key_in using the bit masks of holes and + particles. + Assume N_int is already provided. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_int` + * :c:data:`elec_alpha_num` + * :c:data:`mo_num` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`h_apply_cis` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`bitstring_to_list_ab` + * :c:func:`fill_h_apply_buffer_no_selection` + diff --git a/docs/source/modules/cisd.rst b/docs/source/modules/cisd.rst new file mode 100644 index 00000000..7816de30 --- /dev/null +++ b/docs/source/modules/cisd.rst @@ -0,0 +1,273 @@ +.. _module_cisd: + +.. program:: cisd + +.. default-role:: option + +==== +cisd +==== + +This module contains a CI of single and double excitations. + +The user point of view +---------------------- + +The :command:`cisd` program performs the CI of the ROHF-like + all single and double excitations on top of it. +This program can be very useful to : + +* **Ground state calculations**: generate a guess for the ground state wave function if one is not sure that the :c:func:`scf` program gave the lowest SCF solution. In combination with :c:func:`save_natorb` it can produce new |MOs| in order to reperform an :c:func:`scf` optimization. + +* **Excited states calculations**: generate guess for all the :option:`determinants n_states` wave functions, that will be used by the :c:func:`fci` program. + + +The main keywords/options to be used are: + +* :option:`determinants n_states` : number of states to consider for the |cisd| calculation + +* :option:`determinants s2_eig` : force all states to have the desired value of :math:`S^2` + +* :option:`determinants expected_s2` : desired value of :math:`S^2` + +The programmer point of view +---------------------------- + +This module have been built by setting the following rules: + + +* The only generator determinant is the Hartree-Fock (single-reference method) +* All generated determinants are included in the wave function (no perturbative + selection) + +These rules are set in the ``H_apply.irp.f`` file. + + + + + +EZFIO parameters +---------------- + +.. option:: energy + + Variational |CISD| energy + + + +Programs +-------- + + * :ref:`cisd` + +Subroutines / functions +----------------------- + +.. c:function:: h_apply_cisd: + + + File : :file:`h_apply.irp.f_shell_8` + + .. code:: fortran + + subroutine H_apply_cisd() + + + Calls H_apply on the |HF| determinant and selects all connected single and double + excitations (of the same symmetry). Auto-generated by the ``generate_h_apply`` script. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`psi_coef` + * :c:data:`n_states` + * :c:data:`generators_bitmask` + * :c:data:`mo_num` + * :c:data:`mo_two_e_integrals_in_map` + * :c:data:`h_apply_buffer_allocated` + * :c:data:`n_det` + * :c:data:`s2_eig` + * :c:data:`n_det_generators` + * :c:data:`i_bitmask_gen` + * :c:data:`n_int` + * :c:data:`psi_det` + * :c:data:`psi_det_generators` + * :c:data:`psi_det_generators` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`build_fock_tmp` + * :c:func:`copy_h_apply_buffer_to_wf` + * :c:func:`dsort` + * :c:func:`h_apply_cisd_diexc` + * :c:func:`h_apply_cisd_monoexc` + * :c:func:`make_s2_eigenfunction` + * :c:func:`wall_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:: h_apply_cisd_diexc: + + + File : :file:`h_apply.irp.f_shell_8` + + .. code:: fortran + + subroutine H_apply_cisd_diexc(key_in, key_prev, hole_1,particl_1, hole_2, particl_2, fock_diag_tmp, i_generator, iproc_in ) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_int` + * :c:data:`n_det` + * :c:data:`mo_num` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`h_apply_cisd` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`h_apply_cisd_diexcp` + + +.. c:function:: h_apply_cisd_diexcorg: + + + File : :file:`h_apply.irp.f_shell_8` + + .. code:: fortran + + subroutine H_apply_cisd_diexcOrg(key_in,key_mask,hole_1,particl_1,hole_2, particl_2, fock_diag_tmp, i_generator, iproc_in ) + + + Generate all double excitations of key_in using the bit masks of holes and + particles. + Assume N_int is already provided. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_int` + * :c:data:`elec_alpha_num` + * :c:data:`mo_num` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`h_apply_cisd_diexcp` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`bitstring_to_list_ab` + * :c:func:`fill_h_apply_buffer_no_selection` + + +.. c:function:: h_apply_cisd_diexcp: + + + File : :file:`h_apply.irp.f_shell_8` + + .. code:: fortran + + subroutine H_apply_cisd_diexcP(key_in, fs1, fh1, particl_1, fs2, fh2, particl_2, fock_diag_tmp, i_generator, iproc_in ) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_int` + * :c:data:`n_det` + * :c:data:`mo_num` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`h_apply_cisd_diexc` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`h_apply_cisd_diexcorg` + + +.. c:function:: h_apply_cisd_monoexc: + + + File : :file:`h_apply.irp.f_shell_8` + + .. code:: fortran + + subroutine H_apply_cisd_monoexc(key_in, hole_1,particl_1,fock_diag_tmp,i_generator,iproc_in ) + + + Generate all single excitations of key_in using the bit masks of holes and + particles. + Assume N_int is already provided. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_int` + * :c:data:`elec_alpha_num` + * :c:data:`mo_num` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`h_apply_cisd` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`bitstring_to_list_ab` + * :c:func:`fill_h_apply_buffer_no_selection` + diff --git a/docs/source/modules/davidson.rst b/docs/source/modules/davidson.rst new file mode 100644 index 00000000..9a4eab1e --- /dev/null +++ b/docs/source/modules/davidson.rst @@ -0,0 +1,1788 @@ +.. _module_davidson: + +.. program:: davidson + +.. default-role:: option + +======== +davidson +======== + +Abstract module for Davidson's diagonalization. +It contains everything required for the Davidson algorithm, dressed or +not. If a dressing is used, the dressing column should be defined and +the :ref:`module_davidson_dressed` module should be used. If no dressing +is required, the :ref:`module_davidson` module should be used, and it +has a default zero dressing vector. + +The important providers for that module are: + +#. :c:data:`psi_energy` which is the expectation value over the wave + function (:c:data:`psi_det`, :c:data:`psi_coef`) of the Hamiltonian, + dressed or not. It uses the general subroutine :c:func:`u_0_H_u_0`. + +#. :c:data:`psi_energy_two_e` which is the expectation value over the + wave function (:c:data:`psi_det`, :c:data:`psi_coef`) of the standard + two-electron Coulomb operator. It uses the general routine + :c:func:`u_0_H_u_0_two_e`. + + + +EZFIO parameters +---------------- + +.. option:: threshold_davidson + + Thresholds of Davidson's algorithm + + Default: 1.e-10 + +.. option:: n_states_diag + + Number of states to consider during the Davdison diagonalization + + Default: 4 + +.. option:: davidson_sze_max + + Number of micro-iterations before re-contracting + + Default: 15 + +.. option:: state_following + + If |true|, the states are re-ordered to match the input states + + Default: False + +.. option:: disk_based_davidson + + If |true|, a memory-mapped file may be used to store the W and S2 vectors if not enough RAM is available + + Default: True + +.. option:: distributed_davidson + + If |true|, use the distributed algorithm + + Default: True + +.. option:: only_expected_s2 + + If |true|, use filter out all vectors with bad |S^2| values + + Default: True + + +Providers +--------- + +.. c:var:: ci_eigenvectors + + + File : :file:`davidson/diagonalize_ci.irp.f` + + .. code:: fortran + + double precision, allocatable :: ci_electronic_energy (N_states_diag) + double precision, allocatable :: ci_eigenvectors (N_det,N_states_diag) + double precision, allocatable :: ci_s2 (N_states_diag) + + + Eigenvectors/values of the |CI| matrix + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`diag_algorithm` + * :c:data:`dressing_column_h` + * :c:data:`expected_s2` + * :c:data:`h_matrix_all_dets` + * :c:data:`mo_two_e_integrals_in_map` + * :c:data:`n_det` + * :c:data:`n_int` + * :c:data:`n_states` + * :c:data:`n_states_diag` + * :c:data:`nthreads_davidson` + * :c:data:`psi_coef` + * :c:data:`psi_det` + * :c:data:`s2_eig` + * :c:data:`s2_matrix_all_dets` + * :c:data:`s_z` + * :c:data:`threshold_davidson` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ci_energy` + + +.. c:var:: ci_electronic_energy + + + File : :file:`davidson/diagonalize_ci.irp.f` + + .. code:: fortran + + double precision, allocatable :: ci_electronic_energy (N_states_diag) + double precision, allocatable :: ci_eigenvectors (N_det,N_states_diag) + double precision, allocatable :: ci_s2 (N_states_diag) + + + Eigenvectors/values of the |CI| matrix + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`diag_algorithm` + * :c:data:`dressing_column_h` + * :c:data:`expected_s2` + * :c:data:`h_matrix_all_dets` + * :c:data:`mo_two_e_integrals_in_map` + * :c:data:`n_det` + * :c:data:`n_int` + * :c:data:`n_states` + * :c:data:`n_states_diag` + * :c:data:`nthreads_davidson` + * :c:data:`psi_coef` + * :c:data:`psi_det` + * :c:data:`s2_eig` + * :c:data:`s2_matrix_all_dets` + * :c:data:`s_z` + * :c:data:`threshold_davidson` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ci_energy` + + +.. c:var:: ci_energy + + + File : :file:`davidson/diagonalize_ci.irp.f` + + .. code:: fortran + + double precision, allocatable :: ci_energy (N_states_diag) + + + :c:data:`n_states` lowest eigenvalues of the |CI| matrix + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ci_electronic_energy` + * :c:data:`mpi_master` + * :c:data:`n_det` + * :c:data:`n_states` + * :c:data:`n_states_diag` + * :c:data:`nuclear_repulsion` + * :c:data:`output_wall_time_0` + + + +.. c:var:: ci_s2 + + + File : :file:`davidson/diagonalize_ci.irp.f` + + .. code:: fortran + + double precision, allocatable :: ci_electronic_energy (N_states_diag) + double precision, allocatable :: ci_eigenvectors (N_det,N_states_diag) + double precision, allocatable :: ci_s2 (N_states_diag) + + + Eigenvectors/values of the |CI| matrix + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`diag_algorithm` + * :c:data:`dressing_column_h` + * :c:data:`expected_s2` + * :c:data:`h_matrix_all_dets` + * :c:data:`mo_two_e_integrals_in_map` + * :c:data:`n_det` + * :c:data:`n_int` + * :c:data:`n_states` + * :c:data:`n_states_diag` + * :c:data:`nthreads_davidson` + * :c:data:`psi_coef` + * :c:data:`psi_det` + * :c:data:`s2_eig` + * :c:data:`s2_matrix_all_dets` + * :c:data:`s_z` + * :c:data:`threshold_davidson` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ci_energy` + + +.. c:var:: davidson_criterion + + + File : :file:`davidson/parameters.irp.f` + + .. code:: fortran + + character(64) :: davidson_criterion + + + Can be : [ energy | residual | both | wall_time | cpu_time | iterations ] + + + +.. c:var:: dressed_column_idx + + + File : :file:`davidson/diagonalization_hs2_dressed.irp.f` + + .. code:: fortran + + integer, allocatable :: dressed_column_idx (N_states) + + + Index of the dressed columns + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_det` + * :c:data:`n_states` + * :c:data:`psi_coef` + + + +.. c:var:: n_states_diag + + + File : :file:`davidson/input.irp.f` + + .. code:: fortran + + integer :: n_states_diag + + + Number of states to consider during the Davdison diagonalization + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ezfio_filename` + * :c:data:`mpi_master` + * :c:data:`n_states` + * :c:data:`output_wall_time_0` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ci_electronic_energy` + * :c:data:`ci_energy` + * :c:data:`psi_energy` + + +.. c:var:: nthreads_davidson + + + File : :file:`davidson/davidson_parallel.irp.f` + + .. code:: fortran + + integer :: nthreads_davidson + + + Number of threads for Davidson + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mpi_master` + * :c:data:`nproc` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ci_electronic_energy` + + +.. c:var:: psi_energy + + + File : :file:`davidson/u0_h_u0.irp.f` + + .. code:: fortran + + double precision, allocatable :: psi_energy (N_states) + double precision, allocatable :: psi_s2 (N_states) + + + psi_energy(i) = :math:`\langle \Psi_i | H | \Psi_i \rangle` + + psi_s2(i) = :math:`\langle \Psi_i | S^2 | \Psi_i \rangle` + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`distributed_davidson` + * :c:data:`n_det` + * :c:data:`n_int` + * :c:data:`n_states` + * :c:data:`n_states_diag` + * :c:data:`psi_coef` + * :c:data:`psi_det` + * :c:data:`psi_det_size` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`psi_energy_two_e` + * :c:data:`psi_energy_with_nucl_rep` + * :c:data:`pt2_e0_denominator` + + +.. c:var:: psi_energy_two_e + + + File : :file:`davidson/u0_wee_u0.irp.f` + + .. code:: fortran + + double precision, allocatable :: psi_energy_two_e (N_states) + + + Energy of the current 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` + * :c:data:`psi_energy` + + + +.. c:var:: psi_energy_with_nucl_rep + + + File : :file:`davidson/u0_h_u0.irp.f` + + .. code:: fortran + + double precision, allocatable :: psi_energy_with_nucl_rep (N_states) + + + Energy of the wave function with the nuclear repulsion energy. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_states` + * :c:data:`nuclear_repulsion` + * :c:data:`psi_energy` + + + +.. c:var:: psi_s2 + + + File : :file:`davidson/u0_h_u0.irp.f` + + .. code:: fortran + + double precision, allocatable :: psi_energy (N_states) + double precision, allocatable :: psi_s2 (N_states) + + + psi_energy(i) = :math:`\langle \Psi_i | H | \Psi_i \rangle` + + psi_s2(i) = :math:`\langle \Psi_i | S^2 | \Psi_i \rangle` + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`distributed_davidson` + * :c:data:`n_det` + * :c:data:`n_int` + * :c:data:`n_states` + * :c:data:`n_states_diag` + * :c:data:`psi_coef` + * :c:data:`psi_det` + * :c:data:`psi_det_size` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`psi_energy_two_e` + * :c:data:`psi_energy_with_nucl_rep` + * :c:data:`pt2_e0_denominator` + + + +Subroutines / functions +----------------------- + +.. c:function:: davidson_collector: + + + File : :file:`davidson/davidson_parallel.irp.f` + + .. code:: fortran + + subroutine davidson_collector(zmq_to_qp_run_socket, zmq_socket_pull, v0, s0, sze, N_st) + + + Routine collecting the results of the workers in Davidson's algorithm. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_det` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`h_s2_u_0_nstates_zmq` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`davidson_pull_results` + + +.. c:function:: davidson_converged: + + + File : :file:`davidson/parameters.irp.f` + + .. code:: fortran + + subroutine davidson_converged(energy,residual,wall,iterations,cpu,N_st,converged) + + + True if the Davidson algorithm is converged + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`threshold_davidson` + * :c:data:`davidson_criterion` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`davidson_diag_hjj_sjj` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`cpu_time` + * :c:func:`wall_time` + + +.. c:function:: davidson_diag_hjj_sjj: + + + File : :file:`davidson/diagonalization_hs2_dressed.irp.f` + + .. code:: fortran + + subroutine davidson_diag_hjj_sjj(dets_in,u_in,H_jj,s2_out,energies,dim_in,sze,N_st,N_st_diag_in,Nint,dressing_state,converged) + + + Davidson diagonalization with specific diagonal elements of the H matrix + + H_jj : specific diagonal H matrix elements to diagonalize de Davidson + + S2_out : Output : s^2 + + dets_in : bitmasks corresponding to determinants + + u_in : guess coefficients on the various states. Overwritten + on exit + + dim_in : leftmost dimension of u_in + + sze : Number of determinants + + N_st : Number of eigenstates + + N_st_diag_in : Number of states in which H is diagonalized. Assumed > sze + + Initial guess vectors are not necessarily orthonormal + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`psi_bilinear_matrix_order_reverse` + * :c:data:`psi_bilinear_matrix_values` + * :c:data:`nthreads_davidson` + * :c:data:`psi_coef` + * :c:data:`dressed_column_idx` + * :c:data:`expected_s2` + * :c:data:`s_z` + * :c:data:`n_det` + * :c:data:`dressing_column_h` + * :c:data:`ezfio_work_dir` + * :c:data:`davidson_sze_max` + * :c:data:`state_following` + * :c:data:`psi_det_alpha_unique` + * :c:data:`nuclear_repulsion` + * :c:data:`nproc` + * :c:data:`qp_max_mem` + * :c:data:`disk_based_davidson` + * :c:data:`s2_eig` + * :c:data:`psi_det_beta_unique` + * :c:data:`only_expected_s2` + * :c:data:`distributed_davidson` + * :c:data:`n_int` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`davidson_diag_hs2` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`c_f_pointer` + * :c:func:`check_mem` + * :c:func:`cpu_time` + * :c:func:`davidson_converged` + * :c:func:`dgemm` + * :c:func:`dswap` + * :c:func:`h_s2_u_0_nstates_openmp` + * :c:func:`h_s2_u_0_nstates_zmq` + * :c:func:`lapack_diag` + * :c:func:`mmap` + * :c:func:`munmap` + * :c:func:`normalize` + * :c:func:`ortho_qr` + * :c:func:`random_number` + * :c:func:`resident_memory` + * :c:func:`sgemm` + * :c:func:`wall_time` + * :c:func:`write_double` + * :c:func:`write_int` + * :c:func:`write_time` + + Touches: + + .. hlist:: + :columns: 3 + + * :c:data:`nthreads_davidson` + + +.. c:function:: davidson_diag_hs2: + + + File : :file:`davidson/diagonalization_hs2_dressed.irp.f` + + .. code:: fortran + + subroutine davidson_diag_hs2(dets_in,u_in,s2_out,dim_in,energies,sze,N_st,N_st_diag,Nint,dressing_state,converged) + + + Davidson diagonalization. + + dets_in : bitmasks corresponding to determinants + + u_in : guess coefficients on the various states. Overwritten + on exit + + dim_in : leftmost dimension of u_in + + sze : Number of determinants + + N_st : Number of eigenstates + + Initial guess vectors are not necessarily orthonormal + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`dressing_column_h` + * :c:data:`mo_two_e_integrals_in_map` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:data:`ci_electronic_energy` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`davidson_diag_hjj_sjj` + + Touches: + + .. hlist:: + :columns: 3 + + * :c:data:`nthreads_davidson` + + +.. c:function:: davidson_pull_results: + + + File : :file:`davidson/davidson_parallel.irp.f` + + .. code:: fortran + + subroutine davidson_pull_results(zmq_socket_pull, v_t, s_t, imin, imax, task_id) + + + Pull the results of $H | U \rangle$ on the master. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_states_diag` + * :c:data:`n_det` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`davidson_collector` + + +.. c:function:: davidson_push_results: + + + File : :file:`davidson/davidson_parallel.irp.f` + + .. code:: fortran + + subroutine davidson_push_results(zmq_socket_push, v_t, s_t, imin, imax, task_id) + + + Push the results of $H | U \rangle$ from a worker to the master. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_states_diag` + * :c:data:`n_det` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`davidson_slave_work` + + +.. c:function:: davidson_run_slave: + + + File : :file:`davidson/davidson_parallel.irp.f` + + .. code:: fortran + + subroutine davidson_run_slave(thread,iproc) + + + Slave routine for Davidson's diagonalization. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_states_diag` + * :c:data:`n_det` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`davidson_slave_inproc` + * :c:func:`davidson_slave_tcp` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`davidson_slave_work` + * :c:func:`end_zmq_push_socket` + * :c:func:`end_zmq_to_qp_run_socket` + * :c:func:`sleep` + + +.. c:function:: davidson_slave_inproc: + + + File : :file:`davidson/davidson_parallel.irp.f` + + .. code:: fortran + + subroutine davidson_slave_inproc(i) + + + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`h_s2_u_0_nstates_zmq` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`davidson_run_slave` + + +.. c:function:: davidson_slave_tcp: + + + File : :file:`davidson/davidson_parallel.irp.f` + + .. code:: fortran + + subroutine davidson_slave_tcp(i) + + + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`run_slave_main` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`davidson_run_slave` + + +.. c:function:: davidson_slave_work: + + + File : :file:`davidson/davidson_parallel.irp.f` + + .. code:: fortran + + subroutine davidson_slave_work(zmq_to_qp_run_socket, zmq_socket_push, N_st, sze, worker_id) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`psi_det_beta_unique` + * :c:data:`mpi_rank` + * :c:data:`psi_bilinear_matrix_order_transp_reverse` + * :c:data:`psi_det_alpha_unique` + * :c:data:`mpi_initialized` + * :c:data:`n_det` + * :c:data:`psi_bilinear_matrix_transp_values` + * :c:data:`psi_bilinear_matrix_values` + * :c:data:`nproc` + * :c:data:`ref_bitmask_energy` + * :c:data:`n_states_diag` + * :c:data:`psi_bilinear_matrix_columns_loc` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`davidson_run_slave` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`davidson_push_results` + * :c:func:`h_s2_u_0_nstates_openmp_work` + + +.. c:function:: diagonalize_ci: + + + File : :file:`davidson/diagonalize_ci.irp.f` + + .. code:: fortran + + subroutine diagonalize_CI + + + Replace the coefficients of the |CI| states by the coefficients of the + eigenstates of the |CI| matrix. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`psi_coef` + * :c:data:`ci_electronic_energy` + * :c:data:`n_states` + * :c:data:`n_det` + * :c:data:`ci_electronic_energy` + * :c:data:`ci_energy` + * :c:data:`ci_electronic_energy` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`remove_small_contributions` + * :c:func:`run_cipsi` + * :c:func:`run_stochastic_cipsi` + + Touches: + + .. hlist:: + :columns: 3 + + * :c:data:`ci_electronic_energy` + * :c:data:`ci_electronic_energy` + * :c:data:`ci_energy` + * :c:data:`ci_electronic_energy` + * :c:data:`psi_coef` + + +.. c:function:: h_s2_u_0_nstates_openmp: + + + File : :file:`davidson/u0_h_u0.irp.f` + + .. code:: fortran + + subroutine H_S2_u_0_nstates_openmp(v_0,s_0,u_0,N_st,sze) + + + Computes $v_0 = H | u_0\rangle$ and $s_0 = S^2 | u_0\rangle$. + + Assumes that the determinants are in psi_det + + istart, iend, ishift, istep are used in ZMQ parallelization. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`psi_bilinear_matrix_order_reverse` + * :c:data:`psi_bilinear_matrix_values` + * :c:data:`n_det` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`davidson_diag_hjj_sjj` + * :c:func:`u_0_h_u_0` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`dset_order` + * :c:func:`dtranspose` + * :c:func:`h_s2_u_0_nstates_openmp_work` + + +.. c:function:: h_s2_u_0_nstates_openmp_work: + + + File : :file:`davidson/u0_h_u0.irp.f` + + .. code:: fortran + + subroutine H_S2_u_0_nstates_openmp_work(v_t,s_t,u_t,N_st,sze,istart,iend,ishift,istep) + + + Computes $v_t = H | u_t\rangle$ and $s_t = S^2 | u_t\rangle$ + + Default should be 1,N_det,0,1 + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ref_bitmask_energy` + * :c:data:`n_det` + * :c:data:`n_int` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`davidson_slave_work` + * :c:func:`h_s2_u_0_nstates_openmp` + + Calls: + + .. 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:function:: h_s2_u_0_nstates_openmp_work_1: + + + File : :file:`davidson/u0_h_u0.irp.f_template_631` + + .. code:: fortran + + subroutine H_S2_u_0_nstates_openmp_work_1(v_t,s_t,u_t,N_st,sze,istart,iend,ishift,istep) + + + Computes $v_t = H | u_t \rangle$ and $s_t = S^2 | u_t\rangle$ + + Default should be 1,N_det,0,1 + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`psi_det_beta_unique` + * :c:data:`psi_bilinear_matrix_order_transp_reverse` + * :c:data:`psi_det_alpha_unique` + * :c:data:`psi_bilinear_matrix_transp_rows_loc` + * :c:data:`singles_beta_csc` + * :c:data:`n_det` + * :c:data:`psi_bilinear_matrix_transp_values` + * :c:data:`nthreads_davidson` + * :c:data:`psi_bilinear_matrix_values` + * :c:data:`n_int` + * :c:data:`singles_beta_csc_idx` + * :c:data:`psi_bilinear_matrix_columns_loc` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`h_s2_u_0_nstates_openmp_work` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`get_all_spin_singles_1` + * :c:func:`get_all_spin_singles_and_doubles_1` + * :c:func:`get_s2` + * :c:func:`i_h_j_double_alpha_beta` + * :c:func:`i_h_j_double_spin` + * :c:func:`i_h_j_mono_spin` + + +.. c:function:: h_s2_u_0_nstates_openmp_work_2: + + + File : :file:`davidson/u0_h_u0.irp.f_template_631` + + .. code:: fortran + + subroutine H_S2_u_0_nstates_openmp_work_2(v_t,s_t,u_t,N_st,sze,istart,iend,ishift,istep) + + + Computes $v_t = H | u_t \rangle$ and $s_t = S^2 | u_t\rangle$ + + Default should be 1,N_det,0,1 + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`psi_det_beta_unique` + * :c:data:`psi_bilinear_matrix_order_transp_reverse` + * :c:data:`psi_det_alpha_unique` + * :c:data:`psi_bilinear_matrix_transp_rows_loc` + * :c:data:`singles_beta_csc` + * :c:data:`n_det` + * :c:data:`psi_bilinear_matrix_transp_values` + * :c:data:`nthreads_davidson` + * :c:data:`psi_bilinear_matrix_values` + * :c:data:`n_int` + * :c:data:`singles_beta_csc_idx` + * :c:data:`psi_bilinear_matrix_columns_loc` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`h_s2_u_0_nstates_openmp_work` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`get_all_spin_singles_2` + * :c:func:`get_all_spin_singles_and_doubles_2` + * :c:func:`get_s2` + * :c:func:`i_h_j_double_alpha_beta` + * :c:func:`i_h_j_double_spin` + * :c:func:`i_h_j_mono_spin` + + +.. c:function:: h_s2_u_0_nstates_openmp_work_3: + + + File : :file:`davidson/u0_h_u0.irp.f_template_631` + + .. code:: fortran + + subroutine H_S2_u_0_nstates_openmp_work_3(v_t,s_t,u_t,N_st,sze,istart,iend,ishift,istep) + + + Computes $v_t = H | u_t \rangle$ and $s_t = S^2 | u_t\rangle$ + + Default should be 1,N_det,0,1 + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`psi_det_beta_unique` + * :c:data:`psi_bilinear_matrix_order_transp_reverse` + * :c:data:`psi_det_alpha_unique` + * :c:data:`psi_bilinear_matrix_transp_rows_loc` + * :c:data:`singles_beta_csc` + * :c:data:`n_det` + * :c:data:`psi_bilinear_matrix_transp_values` + * :c:data:`nthreads_davidson` + * :c:data:`psi_bilinear_matrix_values` + * :c:data:`n_int` + * :c:data:`singles_beta_csc_idx` + * :c:data:`psi_bilinear_matrix_columns_loc` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`h_s2_u_0_nstates_openmp_work` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`get_all_spin_singles_3` + * :c:func:`get_all_spin_singles_and_doubles_3` + * :c:func:`get_s2` + * :c:func:`i_h_j_double_alpha_beta` + * :c:func:`i_h_j_double_spin` + * :c:func:`i_h_j_mono_spin` + + +.. c:function:: h_s2_u_0_nstates_openmp_work_4: + + + File : :file:`davidson/u0_h_u0.irp.f_template_631` + + .. code:: fortran + + subroutine H_S2_u_0_nstates_openmp_work_4(v_t,s_t,u_t,N_st,sze,istart,iend,ishift,istep) + + + Computes $v_t = H | u_t \rangle$ and $s_t = S^2 | u_t\rangle$ + + Default should be 1,N_det,0,1 + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`psi_det_beta_unique` + * :c:data:`psi_bilinear_matrix_order_transp_reverse` + * :c:data:`psi_det_alpha_unique` + * :c:data:`psi_bilinear_matrix_transp_rows_loc` + * :c:data:`singles_beta_csc` + * :c:data:`n_det` + * :c:data:`psi_bilinear_matrix_transp_values` + * :c:data:`nthreads_davidson` + * :c:data:`psi_bilinear_matrix_values` + * :c:data:`n_int` + * :c:data:`singles_beta_csc_idx` + * :c:data:`psi_bilinear_matrix_columns_loc` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`h_s2_u_0_nstates_openmp_work` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`get_all_spin_singles_4` + * :c:func:`get_all_spin_singles_and_doubles_4` + * :c:func:`get_s2` + * :c:func:`i_h_j_double_alpha_beta` + * :c:func:`i_h_j_double_spin` + * :c:func:`i_h_j_mono_spin` + + +.. c:function:: h_s2_u_0_nstates_openmp_work_n_int: + + + File : :file:`davidson/u0_h_u0.irp.f_template_631` + + .. code:: fortran + + subroutine H_S2_u_0_nstates_openmp_work_N_int(v_t,s_t,u_t,N_st,sze,istart,iend,ishift,istep) + + + Computes $v_t = H | u_t \rangle$ and $s_t = S^2 | u_t\rangle$ + + Default should be 1,N_det,0,1 + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`psi_det_beta_unique` + * :c:data:`psi_bilinear_matrix_order_transp_reverse` + * :c:data:`psi_det_alpha_unique` + * :c:data:`psi_bilinear_matrix_transp_rows_loc` + * :c:data:`singles_beta_csc` + * :c:data:`n_det` + * :c:data:`psi_bilinear_matrix_transp_values` + * :c:data:`nthreads_davidson` + * :c:data:`psi_bilinear_matrix_values` + * :c:data:`n_int` + * :c:data:`singles_beta_csc_idx` + * :c:data:`psi_bilinear_matrix_columns_loc` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`h_s2_u_0_nstates_openmp_work` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`get_all_spin_singles_and_doubles_n_int` + * :c:func:`get_all_spin_singles_n_int` + * :c:func:`get_s2` + * :c:func:`i_h_j_double_alpha_beta` + * :c:func:`i_h_j_double_spin` + * :c:func:`i_h_j_mono_spin` + + +.. c:function:: h_s2_u_0_nstates_zmq: + + + File : :file:`davidson/davidson_parallel.irp.f` + + .. code:: fortran + + subroutine H_S2_u_0_nstates_zmq(v_0,s_0,u_0,N_st,sze) + + + Computes $v_0 = H | u_0\rangle$ and $s_0 = S^2 | u_0\rangle$ + + n : number of determinants + + H_jj : array of $\langle j | H | j \rangle$ + + S2_jj : array of $\langle j | S^2 | j \rangle$ + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`psi_det_beta_unique` + * :c:data:`psi_bilinear_matrix_order_transp_reverse` + * :c:data:`psi_det_alpha_unique` + * :c:data:`psi_bilinear_matrix_order_reverse` + * :c:data:`mpi_initialized` + * :c:data:`n_det` + * :c:data:`psi_bilinear_matrix_transp_values` + * :c:data:`psi_bilinear_matrix_values` + * :c:data:`nproc` + * :c:data:`ref_bitmask_energy` + * :c:data:`psi_bilinear_matrix_columns_loc` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`davidson_diag_hjj_sjj` + * :c:func:`u_0_h_u_0` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`davidson_collector` + * :c:func:`davidson_slave_inproc` + * :c:func:`dset_order` + * :c:func:`dtranspose` + * :c:func:`end_parallel_job` + * :c:func:`new_parallel_job` + * :c:func:`omp_set_nested` + + +.. c:function:: h_s2_u_0_two_e_nstates_openmp: + + + File : :file:`davidson/u0_wee_u0.irp.f` + + .. code:: fortran + + subroutine H_S2_u_0_two_e_nstates_openmp(v_0,s_0,u_0,N_st,sze) + + + Computes $v_0 = H | u_0\rangle$ and $s_0 = S^2 | u_0\rangle$ + + Assumes that the determinants are in psi_det + + istart, iend, ishift, istep are used in ZMQ parallelization. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`psi_bilinear_matrix_order_reverse` + * :c:data:`psi_bilinear_matrix_values` + * :c:data:`n_det` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`u_0_h_u_0_two_e` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`dset_order` + * :c:func:`dtranspose` + * :c:func:`h_s2_u_0_two_e_nstates_openmp_work` + + +.. c:function:: h_s2_u_0_two_e_nstates_openmp_work: + + + File : :file:`davidson/u0_wee_u0.irp.f` + + .. code:: fortran + + subroutine H_S2_u_0_two_e_nstates_openmp_work(v_t,s_t,u_t,N_st,sze,istart,iend,ishift,istep) + + + Computes $v_t = H | u_t\rangle$ and $s_t = S^2 | u_t\rangle$ + + Default should be 1,N_det,0,1 + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ref_bitmask_energy` + * :c:data:`n_det` + * :c:data:`n_int` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`h_s2_u_0_two_e_nstates_openmp` + + Calls: + + .. 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` + + +.. c:function:: h_s2_u_0_two_e_nstates_openmp_work_1: + + + File : :file:`davidson/u0_wee_u0.irp.f_template_457` + + .. code:: fortran + + subroutine H_S2_u_0_two_e_nstates_openmp_work_1(v_t,s_t,u_t,N_st,sze,istart,iend,ishift,istep) + + + Computes $v_t = H | u_t \rangle$ and $s_t = S^2 | u_t \rangle$ + + Default should be 1,N_det,0,1 + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`psi_det_beta_unique` + * :c:data:`psi_bilinear_matrix_order_transp_reverse` + * :c:data:`psi_det_alpha_unique` + * :c:data:`psi_bilinear_matrix_transp_rows_loc` + * :c:data:`n_det` + * :c:data:`psi_bilinear_matrix_transp_values` + * :c:data:`nthreads_davidson` + * :c:data:`psi_bilinear_matrix_values` + * :c:data:`n_int` + * :c:data:`psi_bilinear_matrix_columns_loc` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`h_s2_u_0_two_e_nstates_openmp_work` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`get_all_spin_singles_1` + * :c:func:`get_all_spin_singles_and_doubles_1` + * :c:func:`get_s2` + * :c:func:`i_h_j_double_alpha_beta` + * :c:func:`i_h_j_double_spin` + * :c:func:`i_wee_j_mono` + + +.. c:function:: h_s2_u_0_two_e_nstates_openmp_work_2: + + + File : :file:`davidson/u0_wee_u0.irp.f_template_457` + + .. code:: fortran + + subroutine H_S2_u_0_two_e_nstates_openmp_work_2(v_t,s_t,u_t,N_st,sze,istart,iend,ishift,istep) + + + Computes $v_t = H | u_t \rangle$ and $s_t = S^2 | u_t \rangle$ + + Default should be 1,N_det,0,1 + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`psi_det_beta_unique` + * :c:data:`psi_bilinear_matrix_order_transp_reverse` + * :c:data:`psi_det_alpha_unique` + * :c:data:`psi_bilinear_matrix_transp_rows_loc` + * :c:data:`n_det` + * :c:data:`psi_bilinear_matrix_transp_values` + * :c:data:`nthreads_davidson` + * :c:data:`psi_bilinear_matrix_values` + * :c:data:`n_int` + * :c:data:`psi_bilinear_matrix_columns_loc` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`h_s2_u_0_two_e_nstates_openmp_work` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`get_all_spin_singles_2` + * :c:func:`get_all_spin_singles_and_doubles_2` + * :c:func:`get_s2` + * :c:func:`i_h_j_double_alpha_beta` + * :c:func:`i_h_j_double_spin` + * :c:func:`i_wee_j_mono` + + +.. c:function:: h_s2_u_0_two_e_nstates_openmp_work_3: + + + File : :file:`davidson/u0_wee_u0.irp.f_template_457` + + .. code:: fortran + + subroutine H_S2_u_0_two_e_nstates_openmp_work_3(v_t,s_t,u_t,N_st,sze,istart,iend,ishift,istep) + + + Computes $v_t = H | u_t \rangle$ and $s_t = S^2 | u_t \rangle$ + + Default should be 1,N_det,0,1 + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`psi_det_beta_unique` + * :c:data:`psi_bilinear_matrix_order_transp_reverse` + * :c:data:`psi_det_alpha_unique` + * :c:data:`psi_bilinear_matrix_transp_rows_loc` + * :c:data:`n_det` + * :c:data:`psi_bilinear_matrix_transp_values` + * :c:data:`nthreads_davidson` + * :c:data:`psi_bilinear_matrix_values` + * :c:data:`n_int` + * :c:data:`psi_bilinear_matrix_columns_loc` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`h_s2_u_0_two_e_nstates_openmp_work` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`get_all_spin_singles_3` + * :c:func:`get_all_spin_singles_and_doubles_3` + * :c:func:`get_s2` + * :c:func:`i_h_j_double_alpha_beta` + * :c:func:`i_h_j_double_spin` + * :c:func:`i_wee_j_mono` + + +.. c:function:: h_s2_u_0_two_e_nstates_openmp_work_4: + + + File : :file:`davidson/u0_wee_u0.irp.f_template_457` + + .. code:: fortran + + subroutine H_S2_u_0_two_e_nstates_openmp_work_4(v_t,s_t,u_t,N_st,sze,istart,iend,ishift,istep) + + + Computes $v_t = H | u_t \rangle$ and $s_t = S^2 | u_t \rangle$ + + Default should be 1,N_det,0,1 + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`psi_det_beta_unique` + * :c:data:`psi_bilinear_matrix_order_transp_reverse` + * :c:data:`psi_det_alpha_unique` + * :c:data:`psi_bilinear_matrix_transp_rows_loc` + * :c:data:`n_det` + * :c:data:`psi_bilinear_matrix_transp_values` + * :c:data:`nthreads_davidson` + * :c:data:`psi_bilinear_matrix_values` + * :c:data:`n_int` + * :c:data:`psi_bilinear_matrix_columns_loc` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`h_s2_u_0_two_e_nstates_openmp_work` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`get_all_spin_singles_4` + * :c:func:`get_all_spin_singles_and_doubles_4` + * :c:func:`get_s2` + * :c:func:`i_h_j_double_alpha_beta` + * :c:func:`i_h_j_double_spin` + * :c:func:`i_wee_j_mono` + + +.. c:function:: h_s2_u_0_two_e_nstates_openmp_work_n_int: + + + File : :file:`davidson/u0_wee_u0.irp.f_template_457` + + .. code:: fortran + + subroutine H_S2_u_0_two_e_nstates_openmp_work_N_int(v_t,s_t,u_t,N_st,sze,istart,iend,ishift,istep) + + + Computes $v_t = H | u_t \rangle$ and $s_t = S^2 | u_t \rangle$ + + Default should be 1,N_det,0,1 + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`psi_det_beta_unique` + * :c:data:`psi_bilinear_matrix_order_transp_reverse` + * :c:data:`psi_det_alpha_unique` + * :c:data:`psi_bilinear_matrix_transp_rows_loc` + * :c:data:`n_det` + * :c:data:`psi_bilinear_matrix_transp_values` + * :c:data:`nthreads_davidson` + * :c:data:`psi_bilinear_matrix_values` + * :c:data:`n_int` + * :c:data:`psi_bilinear_matrix_columns_loc` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`h_s2_u_0_two_e_nstates_openmp_work` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`get_all_spin_singles_and_doubles_n_int` + * :c:func:`get_all_spin_singles_n_int` + * :c:func:`get_s2` + * :c:func:`i_h_j_double_alpha_beta` + * :c:func:`i_h_j_double_spin` + * :c:func:`i_wee_j_mono` + + +.. c:function:: u_0_h_u_0: + + + File : :file:`davidson/u0_h_u0.irp.f` + + .. code:: fortran + + subroutine u_0_H_u_0(e_0,s_0,u_0,n,keys_tmp,Nint,N_st,sze) + + + Computes $E_0 = \frac{\langle u_0 | H | u_0 \rangle}{\langle u_0 | u_0 \rangle}$ + + and $S_0 = \frac{\langle u_0 | S^2 | u_0 \rangle}{\langle u_0 | u_0 \rangle}$ + + n : number of determinants + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_states_diag` + * :c:data:`distributed_davidson` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:data:`psi_energy` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`h_s2_u_0_nstates_openmp` + * :c:func:`h_s2_u_0_nstates_zmq` + + +.. c:function:: u_0_h_u_0_two_e: + + + File : :file:`davidson/u0_wee_u0.irp.f` + + .. code:: fortran + + subroutine u_0_H_u_0_two_e(e_0,u_0,n,keys_tmp,Nint,N_st,sze) + + + Computes $E_0 = \frac{ \langle u_0 | H | u_0\rangle}{\langle u_0 | u_0 \rangle}$. + + n : number of determinants + + + Called by: + + .. hlist:: + :columns: 3 + + * :c:data:`psi_energy_two_e` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`h_s2_u_0_two_e_nstates_openmp` + + +.. c:function:: zmq_get_n_states_diag: + + + File : :file:`davidson/davidson_parallel.irp.f` + + .. code:: fortran + + integer function zmq_get_N_states_diag(zmq_to_qp_run_socket, worker_id) + + + Get N_states_diag from the qp_run scheduler + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_states_diag` + * :c:data:`zmq_state` + * :c:data:`mpi_master` + + Touches: + + .. hlist:: + :columns: 3 + + * :c:data:`n_states_diag` + + +.. c:function:: zmq_put_n_states_diag: + + + File : :file:`davidson/davidson_parallel.irp.f` + + .. code:: fortran + + integer function zmq_put_N_states_diag(zmq_to_qp_run_socket,worker_id) + + + Put N_states_diag on the qp_run scheduler + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_states_diag` + * :c:data:`zmq_state` + diff --git a/docs/source/modules/davidson_dressed.rst b/docs/source/modules/davidson_dressed.rst new file mode 100644 index 00000000..38d8fc1e --- /dev/null +++ b/docs/source/modules/davidson_dressed.rst @@ -0,0 +1,13 @@ +.. _module_davidson_dressed: + +.. program:: davidson_dressed + +.. default-role:: option + +================ +davidson_dressed +================ + +Davidson with single-column dressing. + + diff --git a/docs/source/modules/davidson_undressed.rst b/docs/source/modules/davidson_undressed.rst new file mode 100644 index 00000000..326f48d9 --- /dev/null +++ b/docs/source/modules/davidson_undressed.rst @@ -0,0 +1,75 @@ +.. _module_davidson_undressed: + +.. program:: davidson_undressed + +.. default-role:: option + +================== +davidson_undressed +================== + +Module for main files Davidson's algorithm with no dressing. + + + + +Providers +--------- + +.. c:var:: dressing_column_h + + + File : :file:`davidson_undressed/null_dressing_vector.irp.f` + + .. code:: fortran + + double precision, allocatable :: dressing_column_h (N_det,N_states) + double precision, allocatable :: dressing_column_s (N_det,N_states) + + + Null dressing vectors + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_det` + * :c:data:`n_states` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ci_electronic_energy` + + +.. c:var:: dressing_column_s + + + File : :file:`davidson_undressed/null_dressing_vector.irp.f` + + .. code:: fortran + + double precision, allocatable :: dressing_column_h (N_det,N_states) + double precision, allocatable :: dressing_column_s (N_det,N_states) + + + Null dressing vectors + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_det` + * :c:data:`n_states` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ci_electronic_energy` + diff --git a/docs/source/modules/density_for_dft.rst b/docs/source/modules/density_for_dft.rst new file mode 100644 index 00000000..28708f69 --- /dev/null +++ b/docs/source/modules/density_for_dft.rst @@ -0,0 +1,306 @@ +.. _module_density_for_dft: + +.. program:: density_for_dft + +.. default-role:: option + +=============== +density_for_dft +=============== + + +This module defines the *provider* of the density used for the DFT related calculations. +This definition is done through the keyword :option:`density_for_dft density_for_dft`. +The density can be: + +* WFT : the density is computed with a potentially multi determinant wave function (see variables `psi_det` and `psi_det`)# input_density : the density is set to a density previously stored in the |EZFIO| folder (see ``aux_quantities``) +* damping_rs_dft : the density is damped between the input_density and the WFT density, with a damping factor of :option:`density_for_dft damping_for_rs_dft` + + + + +EZFIO parameters +---------------- + +.. option:: density_for_dft + + Type of density used for DFT calculation. If set to WFT , it uses the density of the wave function stored in (psi_det,psi_coef). If set to input_density it uses the one-body dm stored in aux_quantities/ . If set to damping_rs_dft it uses the damped density between WFT and input_density. In the ks_scf and rs_ks_scf programs, it is set to WFT. + + Default: WFT + +.. option:: damping_for_rs_dft + + damping factor for the density used in RSFT. + + Default: 0.5 + + +Providers +--------- + +.. c:var:: one_body_dm_mo_alpha_one_det + + + File : :file:`density_for_dft/density_for_dft.irp.f` + + .. code:: fortran + + double precision, allocatable :: one_body_dm_mo_alpha_one_det (mo_num,mo_num,N_states) + double precision, allocatable :: one_body_dm_mo_beta_one_det (mo_num,mo_num,N_states) + + + One body density matrix on the |MO| basis for a single determinant + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`elec_alpha_num` + * :c:data:`elec_beta_num` + * :c:data:`mo_num` + * :c:data:`n_states` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`one_e_dm_mo_alpha_for_dft` + * :c:data:`one_e_dm_mo_beta_for_dft` + + +.. c:var:: one_body_dm_mo_beta_one_det + + + File : :file:`density_for_dft/density_for_dft.irp.f` + + .. code:: fortran + + double precision, allocatable :: one_body_dm_mo_alpha_one_det (mo_num,mo_num,N_states) + double precision, allocatable :: one_body_dm_mo_beta_one_det (mo_num,mo_num,N_states) + + + One body density matrix on the |MO| basis for a single determinant + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`elec_alpha_num` + * :c:data:`elec_beta_num` + * :c:data:`mo_num` + * :c:data:`n_states` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`one_e_dm_mo_alpha_for_dft` + * :c:data:`one_e_dm_mo_beta_for_dft` + + +.. c:var:: one_e_dm_alpha_ao_for_dft + + + File : :file:`density_for_dft/density_for_dft.irp.f` + + .. code:: fortran + + double precision, allocatable :: one_e_dm_alpha_ao_for_dft (ao_num,ao_num,N_states) + double precision, allocatable :: one_e_dm_beta_ao_for_dft (ao_num,ao_num,N_states) + + + one body density matrix on the AO basis based on one_e_dm_mo_alpha_for_dft + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`mo_coef` + * :c:data:`mo_num` + * :c:data:`n_states` + * :c:data:`one_e_dm_mo_alpha_for_dft` + * :c:data:`one_e_dm_mo_beta_for_dft` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`one_e_dm_alpha_at_r` + * :c:data:`one_e_dm_alpha_in_r` + * :c:data:`one_e_dm_and_grad_alpha_in_r` + + +.. c:var:: one_e_dm_average_mo_for_dft + + + File : :file:`density_for_dft/density_for_dft.irp.f` + + .. code:: fortran + + double precision, allocatable :: one_e_dm_average_mo_for_dft (mo_num,mo_num) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_num` + * :c:data:`n_states` + * :c:data:`one_e_dm_mo_for_dft` + * :c:data:`state_average_weight` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`short_range_hartree_operator` + + +.. c:var:: one_e_dm_beta_ao_for_dft + + + File : :file:`density_for_dft/density_for_dft.irp.f` + + .. code:: fortran + + double precision, allocatable :: one_e_dm_alpha_ao_for_dft (ao_num,ao_num,N_states) + double precision, allocatable :: one_e_dm_beta_ao_for_dft (ao_num,ao_num,N_states) + + + one body density matrix on the AO basis based on one_e_dm_mo_alpha_for_dft + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`mo_coef` + * :c:data:`mo_num` + * :c:data:`n_states` + * :c:data:`one_e_dm_mo_alpha_for_dft` + * :c:data:`one_e_dm_mo_beta_for_dft` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`one_e_dm_alpha_at_r` + * :c:data:`one_e_dm_alpha_in_r` + * :c:data:`one_e_dm_and_grad_alpha_in_r` + + +.. c:var:: one_e_dm_mo_alpha_for_dft + + + File : :file:`density_for_dft/density_for_dft.irp.f` + + .. code:: fortran + + double precision, allocatable :: one_e_dm_mo_alpha_for_dft (mo_num,mo_num,N_states) + + + density matrix for alpha electrons in the MO basis used for all DFT calculations based on the density + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`damping_for_rs_dft` + * :c:data:`data_one_e_dm_alpha_mo` + * :c:data:`density_for_dft` + * :c:data:`mo_coef` + * :c:data:`mo_num` + * :c:data:`n_states` + * :c:data:`one_body_dm_mo_alpha_one_det` + * :c:data:`one_e_dm_mo_alpha` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`one_e_dm_alpha_ao_for_dft` + * :c:data:`one_e_dm_mo_for_dft` + * :c:data:`psi_dft_energy_kinetic` + * :c:data:`trace_v_xc` + + +.. c:var:: one_e_dm_mo_beta_for_dft + + + File : :file:`density_for_dft/density_for_dft.irp.f` + + .. code:: fortran + + double precision, allocatable :: one_e_dm_mo_beta_for_dft (mo_num,mo_num,N_states) + + + density matrix for beta electrons in the MO basis used for all DFT calculations based on the density + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`damping_for_rs_dft` + * :c:data:`data_one_e_dm_beta_mo` + * :c:data:`density_for_dft` + * :c:data:`mo_coef` + * :c:data:`mo_num` + * :c:data:`n_states` + * :c:data:`one_body_dm_mo_alpha_one_det` + * :c:data:`one_e_dm_mo_alpha` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`one_e_dm_alpha_ao_for_dft` + * :c:data:`one_e_dm_mo_for_dft` + * :c:data:`psi_dft_energy_kinetic` + * :c:data:`trace_v_xc` + + +.. c:var:: one_e_dm_mo_for_dft + + + File : :file:`density_for_dft/density_for_dft.irp.f` + + .. code:: fortran + + double precision, allocatable :: one_e_dm_mo_for_dft (mo_num,mo_num,N_states) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_num` + * :c:data:`n_states` + * :c:data:`one_e_dm_mo_alpha_for_dft` + * :c:data:`one_e_dm_mo_beta_for_dft` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`one_e_dm_average_mo_for_dft` + * :c:data:`short_range_hartree_operator` + diff --git a/docs/source/modules/determinants.rst b/docs/source/modules/determinants.rst new file mode 100644 index 00000000..f3636982 --- /dev/null +++ b/docs/source/modules/determinants.rst @@ -0,0 +1,7922 @@ +.. _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 +* :c:data:`psi_det`: list of determinants in the wave function used in many routines/providers of the |QP|. +* :c:data:`psi_coef`: list of coefficients, for all :option:`determinants n_states` states, and all determinants. + +The main routines for this module are: + +* :c:func:`i_H_j`: computes the Hamiltonian matrix element between two arbitrary Slater determinants. +* :c:func:`i_H_j_s2`: computes the Hamiltonian and (|S^2|) matrix element between two arbitrary Slater determinants. +* :c:func:`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. +* :c:func:`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:`module_bitmask`) + + +.. option:: bit_kind + + (set in module :ref:`module_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 + + +.. 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 + + 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 = / + + 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` + diff --git a/docs/source/modules/dft_keywords.rst b/docs/source/modules/dft_keywords.rst new file mode 100644 index 00000000..a2ad749a --- /dev/null +++ b/docs/source/modules/dft_keywords.rst @@ -0,0 +1,68 @@ +.. _module_dft_keywords: + +.. program:: dft_keywords + +.. default-role:: option + +============ +dft_keywords +============ + +This module contains the main keywords related to a DFT calculation or RS-DFT calculation, such as: + +* :option:`dft_keywords exchange_functional` +* :option:`dft_keywords correlation_functional` +* :option:`dft_keywords HF_exchange` : only relevent for the :c:func:`rs_ks_scf` program + +The keyword for the **range separation parameter** :math:`\mu` is the :option:`ao_two_e_erf_ints mu_erf` keyword. + +The keyword for the type of density used in RS-DFT calculation with a multi-configurational wave function is the :option:`density_for_dft density_for_dft` keyword. + + + +EZFIO parameters +---------------- + +.. option:: exchange_functional + + name of the exchange functional + + Default: short_range_LDA + +.. option:: correlation_functional + + name of the correlation functional + + Default: short_range_LDA + +.. option:: HF_exchange + + Percentage of HF exchange in the DFT model + + Default: 0. + + +Providers +--------- + +.. c:var:: dft_type + + + File : :file:`dft_keywords/keywords.irp.f` + + .. code:: fortran + + character*(32) :: dft_type + + + defines the type of DFT applied: LDA, GGA etc ... + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`correlation_functional` + * :c:data:`exchange_functional` + + diff --git a/docs/source/modules/dft_utils_in_r.rst b/docs/source/modules/dft_utils_in_r.rst new file mode 100644 index 00000000..3e3fd5f1 --- /dev/null +++ b/docs/source/modules/dft_utils_in_r.rst @@ -0,0 +1,882 @@ +.. _module_dft_utils_in_r: + +.. program:: dft_utils_in_r + +.. default-role:: option + +============== +dft_utils_in_r +============== + +This module contains most of the fundamental quantities (AOs, MOs or density derivatives) evaluated in real-space representation that are needed for the various DFT modules. + +As these quantities might be used and re-used, the values at each point of the grid are stored (see ``becke_numerical_grid`` for more information on the grid). + +The main providers for this module are: + +* `aos_in_r_array`: values of the |AO| basis on the grid point. +* `mos_in_r_array`: values of the |MO| basis on the grid point. +* `one_e_dm_and_grad_alpha_in_r`: values of the density and its gradienst on the grid points. + + + + +Providers +--------- + +.. c:var:: aos_grad_in_r_array + + + File : :file:`dft_utils_in_r/ao_in_r.irp.f` + + .. code:: fortran + + double precision, allocatable :: aos_grad_in_r_array (ao_num,n_points_final_grid,3) + double precision, allocatable :: aos_grad_in_r_array_transp (n_points_final_grid,ao_num,3) + double precision, allocatable :: aos_grad_in_r_array_transp_xyz (3,n_points_final_grid,ao_num) + + + aos_grad_in_r_array(i,j,k) = value of the kth component of the gradient of ith ao on the jth grid point + + aos_grad_in_r_array_transp(i,j,k) = value of the kth component of the gradient of jth ao on the ith grid point + + k = 1 : x, k= 2, y, k 3, z + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_coef_normalized_ordered_transp_per_nucl` + * :c:data:`ao_expo_ordered_transp_per_nucl` + * :c:data:`ao_num` + * :c:data:`ao_power_ordered_transp_per_nucl` + * :c:data:`ao_prim_num` + * :c:data:`final_grid_points` + * :c:data:`n_points_final_grid` + * :c:data:`nucl_aos_transposed` + * :c:data:`nucl_coord` + * :c:data:`nucl_n_aos` + * :c:data:`nucl_num` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`aos_sr_vc_alpha_pbe_w` + * :c:data:`aos_vc_alpha_pbe_w` + * :c:data:`mos_grad_in_r_array` + * :c:data:`potential_sr_x_alpha_ao_pbe` + * :c:data:`potential_x_alpha_ao_pbe` + + +.. c:var:: aos_grad_in_r_array_transp + + + File : :file:`dft_utils_in_r/ao_in_r.irp.f` + + .. code:: fortran + + double precision, allocatable :: aos_grad_in_r_array (ao_num,n_points_final_grid,3) + double precision, allocatable :: aos_grad_in_r_array_transp (n_points_final_grid,ao_num,3) + double precision, allocatable :: aos_grad_in_r_array_transp_xyz (3,n_points_final_grid,ao_num) + + + aos_grad_in_r_array(i,j,k) = value of the kth component of the gradient of ith ao on the jth grid point + + aos_grad_in_r_array_transp(i,j,k) = value of the kth component of the gradient of jth ao on the ith grid point + + k = 1 : x, k= 2, y, k 3, z + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_coef_normalized_ordered_transp_per_nucl` + * :c:data:`ao_expo_ordered_transp_per_nucl` + * :c:data:`ao_num` + * :c:data:`ao_power_ordered_transp_per_nucl` + * :c:data:`ao_prim_num` + * :c:data:`final_grid_points` + * :c:data:`n_points_final_grid` + * :c:data:`nucl_aos_transposed` + * :c:data:`nucl_coord` + * :c:data:`nucl_n_aos` + * :c:data:`nucl_num` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`aos_sr_vc_alpha_pbe_w` + * :c:data:`aos_vc_alpha_pbe_w` + * :c:data:`mos_grad_in_r_array` + * :c:data:`potential_sr_x_alpha_ao_pbe` + * :c:data:`potential_x_alpha_ao_pbe` + + +.. c:var:: aos_grad_in_r_array_transp_xyz + + + File : :file:`dft_utils_in_r/ao_in_r.irp.f` + + .. code:: fortran + + double precision, allocatable :: aos_grad_in_r_array (ao_num,n_points_final_grid,3) + double precision, allocatable :: aos_grad_in_r_array_transp (n_points_final_grid,ao_num,3) + double precision, allocatable :: aos_grad_in_r_array_transp_xyz (3,n_points_final_grid,ao_num) + + + aos_grad_in_r_array(i,j,k) = value of the kth component of the gradient of ith ao on the jth grid point + + aos_grad_in_r_array_transp(i,j,k) = value of the kth component of the gradient of jth ao on the ith grid point + + k = 1 : x, k= 2, y, k 3, z + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_coef_normalized_ordered_transp_per_nucl` + * :c:data:`ao_expo_ordered_transp_per_nucl` + * :c:data:`ao_num` + * :c:data:`ao_power_ordered_transp_per_nucl` + * :c:data:`ao_prim_num` + * :c:data:`final_grid_points` + * :c:data:`n_points_final_grid` + * :c:data:`nucl_aos_transposed` + * :c:data:`nucl_coord` + * :c:data:`nucl_n_aos` + * :c:data:`nucl_num` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`aos_sr_vc_alpha_pbe_w` + * :c:data:`aos_vc_alpha_pbe_w` + * :c:data:`mos_grad_in_r_array` + * :c:data:`potential_sr_x_alpha_ao_pbe` + * :c:data:`potential_x_alpha_ao_pbe` + + +.. c:var:: aos_in_r_array + + + File : :file:`dft_utils_in_r/ao_in_r.irp.f` + + .. code:: fortran + + double precision, allocatable :: aos_in_r_array (ao_num,n_points_final_grid) + double precision, allocatable :: aos_in_r_array_transp (n_points_final_grid,ao_num) + + + aos_in_r_array(i,j) = value of the ith ao on the jth grid point + + aos_in_r_array_transp(i,j) = value of the jth ao on the ith grid point + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_coef_normalized_ordered_transp_per_nucl` + * :c:data:`ao_expo_ordered_transp_per_nucl` + * :c:data:`ao_num` + * :c:data:`ao_power_ordered_transp_per_nucl` + * :c:data:`ao_prim_num` + * :c:data:`final_grid_points` + * :c:data:`n_points_final_grid` + * :c:data:`nucl_aos_transposed` + * :c:data:`nucl_coord` + * :c:data:`nucl_n_aos` + * :c:data:`nucl_num` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`aos_sr_vc_alpha_lda_w` + * :c:data:`aos_sr_vc_alpha_pbe_w` + * :c:data:`aos_vc_alpha_lda_w` + * :c:data:`aos_vc_alpha_pbe_w` + * :c:data:`potential_sr_c_alpha_ao_lda` + * :c:data:`potential_sr_x_alpha_ao_lda` + * :c:data:`potential_sr_x_alpha_ao_pbe` + * :c:data:`potential_x_alpha_ao_lda` + * :c:data:`potential_x_alpha_ao_pbe` + + +.. c:var:: aos_in_r_array_transp + + + File : :file:`dft_utils_in_r/ao_in_r.irp.f` + + .. code:: fortran + + double precision, allocatable :: aos_in_r_array (ao_num,n_points_final_grid) + double precision, allocatable :: aos_in_r_array_transp (n_points_final_grid,ao_num) + + + aos_in_r_array(i,j) = value of the ith ao on the jth grid point + + aos_in_r_array_transp(i,j) = value of the jth ao on the ith grid point + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_coef_normalized_ordered_transp_per_nucl` + * :c:data:`ao_expo_ordered_transp_per_nucl` + * :c:data:`ao_num` + * :c:data:`ao_power_ordered_transp_per_nucl` + * :c:data:`ao_prim_num` + * :c:data:`final_grid_points` + * :c:data:`n_points_final_grid` + * :c:data:`nucl_aos_transposed` + * :c:data:`nucl_coord` + * :c:data:`nucl_n_aos` + * :c:data:`nucl_num` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`aos_sr_vc_alpha_lda_w` + * :c:data:`aos_sr_vc_alpha_pbe_w` + * :c:data:`aos_vc_alpha_lda_w` + * :c:data:`aos_vc_alpha_pbe_w` + * :c:data:`potential_sr_c_alpha_ao_lda` + * :c:data:`potential_sr_x_alpha_ao_lda` + * :c:data:`potential_sr_x_alpha_ao_pbe` + * :c:data:`potential_x_alpha_ao_lda` + * :c:data:`potential_x_alpha_ao_pbe` + + +.. c:var:: aos_lapl_in_r_array + + + File : :file:`dft_utils_in_r/ao_in_r.irp.f` + + .. code:: fortran + + double precision, allocatable :: aos_lapl_in_r_array (ao_num,n_points_final_grid,3) + double precision, allocatable :: aos_lapl_in_r_array_transp (n_points_final_grid,ao_num,3) + + + aos_lapl_in_r_array(i,j,k) = value of the kth component of the laplacian of ith ao on the jth grid point + + aos_lapl_in_r_array_transp(i,j,k) = value of the kth component of the laplacian of jth ao on the ith grid point + + k = 1 : x, k= 2, y, k 3, z + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_coef_normalized_ordered_transp_per_nucl` + * :c:data:`ao_expo_ordered_transp_per_nucl` + * :c:data:`ao_num` + * :c:data:`ao_power_ordered_transp_per_nucl` + * :c:data:`ao_prim_num` + * :c:data:`final_grid_points` + * :c:data:`n_points_final_grid` + * :c:data:`nucl_aos_transposed` + * :c:data:`nucl_coord` + * :c:data:`nucl_n_aos` + * :c:data:`nucl_num` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`mos_lapl_in_r_array` + + +.. c:var:: aos_lapl_in_r_array_transp + + + File : :file:`dft_utils_in_r/ao_in_r.irp.f` + + .. code:: fortran + + double precision, allocatable :: aos_lapl_in_r_array (ao_num,n_points_final_grid,3) + double precision, allocatable :: aos_lapl_in_r_array_transp (n_points_final_grid,ao_num,3) + + + aos_lapl_in_r_array(i,j,k) = value of the kth component of the laplacian of ith ao on the jth grid point + + aos_lapl_in_r_array_transp(i,j,k) = value of the kth component of the laplacian of jth ao on the ith grid point + + k = 1 : x, k= 2, y, k 3, z + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_coef_normalized_ordered_transp_per_nucl` + * :c:data:`ao_expo_ordered_transp_per_nucl` + * :c:data:`ao_num` + * :c:data:`ao_power_ordered_transp_per_nucl` + * :c:data:`ao_prim_num` + * :c:data:`final_grid_points` + * :c:data:`n_points_final_grid` + * :c:data:`nucl_aos_transposed` + * :c:data:`nucl_coord` + * :c:data:`nucl_n_aos` + * :c:data:`nucl_num` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`mos_lapl_in_r_array` + + +.. c:var:: mos_grad_in_r_array + + + File : :file:`dft_utils_in_r/mo_in_r.irp.f` + + .. code:: fortran + + double precision, allocatable :: mos_grad_in_r_array (mo_num,n_points_final_grid,3) + + + mos_grad_in_r_array(i,j,k) = value of the kth component of the gradient of ith mo on the jth grid point + + mos_grad_in_r_array_transp(i,j,k) = value of the kth component of the gradient of jth mo on the ith grid point + + k = 1 : x, k= 2, y, k 3, z + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`aos_grad_in_r_array` + * :c:data:`mo_coef_transp` + * :c:data:`mo_num` + * :c:data:`n_points_final_grid` + + + +.. c:var:: mos_in_r_array + + + File : :file:`dft_utils_in_r/mo_in_r.irp.f` + + .. code:: fortran + + double precision, allocatable :: mos_in_r_array (mo_num,n_points_final_grid) + double precision, allocatable :: mos_in_r_array_transp (n_points_final_grid,mo_num) + + + mos_in_r_array(i,j) = value of the ith mo on the jth grid point + + mos_in_r_array_transp(i,j) = value of the jth mo on the ith grid point + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`final_grid_points` + * :c:data:`mo_coef_transp` + * :c:data:`mo_num` + * :c:data:`n_points_final_grid` + + + +.. c:var:: mos_in_r_array_transp + + + File : :file:`dft_utils_in_r/mo_in_r.irp.f` + + .. code:: fortran + + double precision, allocatable :: mos_in_r_array (mo_num,n_points_final_grid) + double precision, allocatable :: mos_in_r_array_transp (n_points_final_grid,mo_num) + + + mos_in_r_array(i,j) = value of the ith mo on the jth grid point + + mos_in_r_array_transp(i,j) = value of the jth mo on the ith grid point + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`final_grid_points` + * :c:data:`mo_coef_transp` + * :c:data:`mo_num` + * :c:data:`n_points_final_grid` + + + +.. c:var:: mos_lapl_in_r_array + + + File : :file:`dft_utils_in_r/mo_in_r.irp.f` + + .. code:: fortran + + double precision, allocatable :: mos_lapl_in_r_array (mo_num,n_points_final_grid,3) + + + mos_lapl_in_r_array(i,j,k) = value of the kth component of the laplacian of ith mo on the jth grid point + + mos_lapl_in_r_array_transp(i,j,k) = value of the kth component of the laplacian of jth mo on the ith grid point + + k = 1 : x, k= 2, y, k 3, z + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`aos_lapl_in_r_array` + * :c:data:`mo_coef_transp` + * :c:data:`mo_num` + * :c:data:`n_points_final_grid` + + + +.. c:var:: one_e_dm_alpha_at_r + + + File : :file:`dft_utils_in_r/dm_in_r.irp.f` + + .. code:: fortran + + double precision, allocatable :: one_e_dm_alpha_at_r (n_points_final_grid,N_states) + double precision, allocatable :: one_e_dm_beta_at_r (n_points_final_grid,N_states) + + + one_e_dm_alpha_at_r(i,istate) = n_alpha(r_i,istate) + one_e_dm_beta_at_r(i,istate) = n_beta(r_i,istate) + where r_i is the ith point of the grid and istate is the state number + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`final_grid_points` + * :c:data:`n_points_final_grid` + * :c:data:`n_states` + * :c:data:`one_e_dm_alpha_ao_for_dft` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`aos_sr_vc_alpha_lda_w` + * :c:data:`aos_vc_alpha_lda_w` + * :c:data:`energy_sr_x_lda` + * :c:data:`energy_x_lda` + + +.. c:var:: one_e_dm_alpha_in_r + + + File : :file:`dft_utils_in_r/dm_in_r.irp.f` + + .. code:: fortran + + double precision, allocatable :: one_e_dm_alpha_in_r (n_points_integration_angular,n_points_radial_grid,nucl_num,N_states) + double precision, allocatable :: one_e_dm_beta_in_r (n_points_integration_angular,n_points_radial_grid,nucl_num,N_states) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`grid_points_per_atom` + * :c:data:`mo_num` + * :c:data:`n_points_radial_grid` + * :c:data:`n_states` + * :c:data:`nucl_num` + * :c:data:`one_e_dm_alpha_ao_for_dft` + + + +.. c:var:: one_e_dm_and_grad_alpha_in_r + + + File : :file:`dft_utils_in_r/dm_in_r.irp.f` + + .. code:: fortran + + double precision, allocatable :: one_e_dm_and_grad_alpha_in_r (4,n_points_final_grid,N_states) + double precision, allocatable :: one_e_dm_and_grad_beta_in_r (4,n_points_final_grid,N_states) + double precision, allocatable :: one_e_grad_2_dm_alpha_at_r (n_points_final_grid,N_states) + double precision, allocatable :: one_e_grad_2_dm_beta_at_r (n_points_final_grid,N_states) + + + one_e_dm_and_grad_alpha_in_r(1,i,i_state) = d\dx n_alpha(r_i,istate) + one_e_dm_and_grad_alpha_in_r(2,i,i_state) = d\dy n_alpha(r_i,istate) + one_e_dm_and_grad_alpha_in_r(3,i,i_state) = d\dz n_alpha(r_i,istate) + one_e_dm_and_grad_alpha_in_r(4,i,i_state) = n_alpha(r_i,istate) + one_e_grad_2_dm_alpha_at_r(i,istate) = d\dx n_alpha(r_i,istate)^2 + d\dy n_alpha(r_i,istate)^2 + d\dz n_alpha(r_i,istate)^2 + where r_i is the ith point of the grid and istate is the state number + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`final_grid_points` + * :c:data:`n_points_final_grid` + * :c:data:`n_states` + * :c:data:`one_e_dm_alpha_ao_for_dft` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`aos_sr_vc_alpha_pbe_w` + * :c:data:`aos_vc_alpha_pbe_w` + * :c:data:`energy_sr_x_pbe` + * :c:data:`energy_x_pbe` + + +.. c:var:: one_e_dm_and_grad_beta_in_r + + + File : :file:`dft_utils_in_r/dm_in_r.irp.f` + + .. code:: fortran + + double precision, allocatable :: one_e_dm_and_grad_alpha_in_r (4,n_points_final_grid,N_states) + double precision, allocatable :: one_e_dm_and_grad_beta_in_r (4,n_points_final_grid,N_states) + double precision, allocatable :: one_e_grad_2_dm_alpha_at_r (n_points_final_grid,N_states) + double precision, allocatable :: one_e_grad_2_dm_beta_at_r (n_points_final_grid,N_states) + + + one_e_dm_and_grad_alpha_in_r(1,i,i_state) = d\dx n_alpha(r_i,istate) + one_e_dm_and_grad_alpha_in_r(2,i,i_state) = d\dy n_alpha(r_i,istate) + one_e_dm_and_grad_alpha_in_r(3,i,i_state) = d\dz n_alpha(r_i,istate) + one_e_dm_and_grad_alpha_in_r(4,i,i_state) = n_alpha(r_i,istate) + one_e_grad_2_dm_alpha_at_r(i,istate) = d\dx n_alpha(r_i,istate)^2 + d\dy n_alpha(r_i,istate)^2 + d\dz n_alpha(r_i,istate)^2 + where r_i is the ith point of the grid and istate is the state number + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`final_grid_points` + * :c:data:`n_points_final_grid` + * :c:data:`n_states` + * :c:data:`one_e_dm_alpha_ao_for_dft` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`aos_sr_vc_alpha_pbe_w` + * :c:data:`aos_vc_alpha_pbe_w` + * :c:data:`energy_sr_x_pbe` + * :c:data:`energy_x_pbe` + + +.. c:var:: one_e_dm_beta_at_r + + + File : :file:`dft_utils_in_r/dm_in_r.irp.f` + + .. code:: fortran + + double precision, allocatable :: one_e_dm_alpha_at_r (n_points_final_grid,N_states) + double precision, allocatable :: one_e_dm_beta_at_r (n_points_final_grid,N_states) + + + one_e_dm_alpha_at_r(i,istate) = n_alpha(r_i,istate) + one_e_dm_beta_at_r(i,istate) = n_beta(r_i,istate) + where r_i is the ith point of the grid and istate is the state number + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`final_grid_points` + * :c:data:`n_points_final_grid` + * :c:data:`n_states` + * :c:data:`one_e_dm_alpha_ao_for_dft` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`aos_sr_vc_alpha_lda_w` + * :c:data:`aos_vc_alpha_lda_w` + * :c:data:`energy_sr_x_lda` + * :c:data:`energy_x_lda` + + +.. c:var:: one_e_dm_beta_in_r + + + File : :file:`dft_utils_in_r/dm_in_r.irp.f` + + .. code:: fortran + + double precision, allocatable :: one_e_dm_alpha_in_r (n_points_integration_angular,n_points_radial_grid,nucl_num,N_states) + double precision, allocatable :: one_e_dm_beta_in_r (n_points_integration_angular,n_points_radial_grid,nucl_num,N_states) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`grid_points_per_atom` + * :c:data:`mo_num` + * :c:data:`n_points_radial_grid` + * :c:data:`n_states` + * :c:data:`nucl_num` + * :c:data:`one_e_dm_alpha_ao_for_dft` + + + +.. c:var:: one_e_grad_2_dm_alpha_at_r + + + File : :file:`dft_utils_in_r/dm_in_r.irp.f` + + .. code:: fortran + + double precision, allocatable :: one_e_dm_and_grad_alpha_in_r (4,n_points_final_grid,N_states) + double precision, allocatable :: one_e_dm_and_grad_beta_in_r (4,n_points_final_grid,N_states) + double precision, allocatable :: one_e_grad_2_dm_alpha_at_r (n_points_final_grid,N_states) + double precision, allocatable :: one_e_grad_2_dm_beta_at_r (n_points_final_grid,N_states) + + + one_e_dm_and_grad_alpha_in_r(1,i,i_state) = d\dx n_alpha(r_i,istate) + one_e_dm_and_grad_alpha_in_r(2,i,i_state) = d\dy n_alpha(r_i,istate) + one_e_dm_and_grad_alpha_in_r(3,i,i_state) = d\dz n_alpha(r_i,istate) + one_e_dm_and_grad_alpha_in_r(4,i,i_state) = n_alpha(r_i,istate) + one_e_grad_2_dm_alpha_at_r(i,istate) = d\dx n_alpha(r_i,istate)^2 + d\dy n_alpha(r_i,istate)^2 + d\dz n_alpha(r_i,istate)^2 + where r_i is the ith point of the grid and istate is the state number + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`final_grid_points` + * :c:data:`n_points_final_grid` + * :c:data:`n_states` + * :c:data:`one_e_dm_alpha_ao_for_dft` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`aos_sr_vc_alpha_pbe_w` + * :c:data:`aos_vc_alpha_pbe_w` + * :c:data:`energy_sr_x_pbe` + * :c:data:`energy_x_pbe` + + +.. c:var:: one_e_grad_2_dm_beta_at_r + + + File : :file:`dft_utils_in_r/dm_in_r.irp.f` + + .. code:: fortran + + double precision, allocatable :: one_e_dm_and_grad_alpha_in_r (4,n_points_final_grid,N_states) + double precision, allocatable :: one_e_dm_and_grad_beta_in_r (4,n_points_final_grid,N_states) + double precision, allocatable :: one_e_grad_2_dm_alpha_at_r (n_points_final_grid,N_states) + double precision, allocatable :: one_e_grad_2_dm_beta_at_r (n_points_final_grid,N_states) + + + one_e_dm_and_grad_alpha_in_r(1,i,i_state) = d\dx n_alpha(r_i,istate) + one_e_dm_and_grad_alpha_in_r(2,i,i_state) = d\dy n_alpha(r_i,istate) + one_e_dm_and_grad_alpha_in_r(3,i,i_state) = d\dz n_alpha(r_i,istate) + one_e_dm_and_grad_alpha_in_r(4,i,i_state) = n_alpha(r_i,istate) + one_e_grad_2_dm_alpha_at_r(i,istate) = d\dx n_alpha(r_i,istate)^2 + d\dy n_alpha(r_i,istate)^2 + d\dz n_alpha(r_i,istate)^2 + where r_i is the ith point of the grid and istate is the state number + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`final_grid_points` + * :c:data:`n_points_final_grid` + * :c:data:`n_states` + * :c:data:`one_e_dm_alpha_ao_for_dft` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`aos_sr_vc_alpha_pbe_w` + * :c:data:`aos_vc_alpha_pbe_w` + * :c:data:`energy_sr_x_pbe` + * :c:data:`energy_x_pbe` + + + +Subroutines / functions +----------------------- + +.. c:function:: density_and_grad_alpha_beta_and_all_aos_and_grad_aos_at_r: + + + File : :file:`dft_utils_in_r/dm_in_r.irp.f` + + .. code:: fortran + + subroutine density_and_grad_alpha_beta_and_all_aos_and_grad_aos_at_r(r,dm_a,dm_b, grad_dm_a, grad_dm_b, aos_array, grad_aos_array) + + + input: + + * r(1) ==> r(1) = x, r(2) = y, r(3) = z + + output: + + * dm_a = alpha density evaluated at r + * dm_b = beta density evaluated at r + * aos_array(i) = ao(i) evaluated at r + * grad_dm_a(1) = X gradient of the alpha density evaluated in r + * grad_dm_a(1) = X gradient of the beta density evaluated in r + * grad_aos_array(1) = X gradient of the aos(i) evaluated at r + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`one_e_dm_alpha_ao_for_dft` + * :c:data:`n_states` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:data:`one_e_dm_and_grad_alpha_in_r` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`dsymv` + * :c:func:`give_all_aos_and_grad_at_r` + + +.. c:function:: dm_dft_alpha_beta_and_all_aos_at_r: + + + File : :file:`dft_utils_in_r/dm_in_r.irp.f` + + .. code:: fortran + + subroutine dm_dft_alpha_beta_and_all_aos_at_r(r,dm_a,dm_b,aos_array) + + + input: r(1) ==> r(1) = x, r(2) = y, r(3) = z + output : dm_a = alpha density evaluated at r + output : dm_b = beta density evaluated at r + output : aos_array(i) = ao(i) evaluated at r + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`one_e_dm_alpha_ao_for_dft` + * :c:data:`n_states` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`dsymv` + * :c:func:`give_all_aos_at_r` + + +.. c:function:: dm_dft_alpha_beta_at_r: + + + File : :file:`dft_utils_in_r/dm_in_r.irp.f` + + .. code:: fortran + + subroutine dm_dft_alpha_beta_at_r(r,dm_a,dm_b) + + + input: r(1) ==> r(1) = x, r(2) = y, r(3) = z + output : dm_a = alpha density evaluated at r(3) + output : dm_b = beta density evaluated at r(3) + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`one_e_dm_alpha_ao_for_dft` + * :c:data:`n_states` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:data:`one_e_dm_alpha_at_r` + * :c:data:`one_e_dm_alpha_in_r` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`dgemv` + * :c:func:`give_all_aos_at_r` + diff --git a/docs/source/modules/dft_utils_one_e.rst b/docs/source/modules/dft_utils_one_e.rst new file mode 100644 index 00000000..3124a68a --- /dev/null +++ b/docs/source/modules/dft_utils_one_e.rst @@ -0,0 +1,3765 @@ +.. _module_dft_utils_one_e: + +.. program:: dft_utils_one_e + +.. default-role:: option + +=============== +dft_utils_one_e +=============== + +This module contains all the one-body related quantities needed to perform DFT or RS-DFT calculations. +Therefore, it contains most of the properties which depends on the one-body density and density matrix. + +The most important files and variables are: + +* The general *providers* for the x/c energies in :file:`e_xc_general.irp.f` +* The general *providers* for the x/c potentials in :file:`pot_general.irp.f` +* The short-range hartree operator and all related quantities in :file:`sr_coulomb.irp.f` + +These *providers* will be used in many DFT-related programs, such as :file:`ks_scf.irp.f` or :file:`rs_ks_scf.irp.f`. +It is also needed to compute the effective one-body operator needed in multi-determinant RS-DFT (see plugins by eginer). + +Some other interesting quantities: + +* The LDA and PBE *providers* for the x/c energies in :file:`e_xc.irp.f` and :file:`sr_exc.irp.f` +* The LDA and PBE *providers* for the x/c potentials on the AO basis in :file:`pot_ao.irp.f` and :file:`sr_pot_ao.irp.f` +* The :math:`h_{core}` energy computed directly with the one-body density matrix in :file:`one_e_energy_dft.irp.f` +* LDA and PBE short-range functionals *subroutines* in :file:`exc_sr_lda.irp.f` and :file:`exc_sr_pbe.irp.f` + + + + + +Providers +--------- + +.. c:var:: ao_effective_one_e_potential + + + File : :file:`dft_utils_one_e/effective_pot.irp.f` + + .. code:: fortran + + double precision, allocatable :: ao_effective_one_e_potential (ao_num,ao_num,N_states) + double precision, allocatable :: ao_effective_one_e_potential_without_kin (ao_num,ao_num,N_states) + + + ao_effective_one_e_potential(i,j) = :math:`\rangle i_{AO}| v_{H}^{sr} |j_{AO}\rangle + \rangle i_{AO}| h_{core} |j_{AO}\rangle + \rangle i_{AO}|v_{xc} |j_{AO}\rangle` + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`effective_one_e_potential` + * :c:data:`mo_coef` + * :c:data:`mo_num` + * :c:data:`n_states` + + + +.. c:var:: ao_effective_one_e_potential_without_kin + + + File : :file:`dft_utils_one_e/effective_pot.irp.f` + + .. code:: fortran + + double precision, allocatable :: ao_effective_one_e_potential (ao_num,ao_num,N_states) + double precision, allocatable :: ao_effective_one_e_potential_without_kin (ao_num,ao_num,N_states) + + + ao_effective_one_e_potential(i,j) = :math:`\rangle i_{AO}| v_{H}^{sr} |j_{AO}\rangle + \rangle i_{AO}| h_{core} |j_{AO}\rangle + \rangle i_{AO}|v_{xc} |j_{AO}\rangle` + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`effective_one_e_potential` + * :c:data:`mo_coef` + * :c:data:`mo_num` + * :c:data:`n_states` + + + +.. c:var:: aos_dsr_vc_alpha_pbe_w + + + File : :file:`dft_utils_one_e/sr_pot_ao.irp.f` + + .. code:: fortran + + double precision, allocatable :: aos_sr_vc_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_sr_vc_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_sr_vx_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_sr_vx_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_dsr_vc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dsr_vc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dsr_vx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dsr_vx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + + + aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`aos_grad_in_r_array` + * :c:data:`aos_in_r_array` + * :c:data:`correlation_functional` + * :c:data:`exchange_functional` + * :c:data:`final_grid_points` + * :c:data:`mu_erf_dft` + * :c:data:`n_points_final_grid` + * :c:data:`n_states` + * :c:data:`one_e_dm_and_grad_alpha_in_r` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`potential_sr_x_alpha_ao_pbe` + + +.. c:var:: aos_dsr_vc_beta_pbe_w + + + File : :file:`dft_utils_one_e/sr_pot_ao.irp.f` + + .. code:: fortran + + double precision, allocatable :: aos_sr_vc_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_sr_vc_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_sr_vx_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_sr_vx_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_dsr_vc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dsr_vc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dsr_vx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dsr_vx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + + + aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`aos_grad_in_r_array` + * :c:data:`aos_in_r_array` + * :c:data:`correlation_functional` + * :c:data:`exchange_functional` + * :c:data:`final_grid_points` + * :c:data:`mu_erf_dft` + * :c:data:`n_points_final_grid` + * :c:data:`n_states` + * :c:data:`one_e_dm_and_grad_alpha_in_r` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`potential_sr_x_alpha_ao_pbe` + + +.. c:var:: aos_dsr_vx_alpha_pbe_w + + + File : :file:`dft_utils_one_e/sr_pot_ao.irp.f` + + .. code:: fortran + + double precision, allocatable :: aos_sr_vc_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_sr_vc_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_sr_vx_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_sr_vx_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_dsr_vc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dsr_vc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dsr_vx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dsr_vx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + + + aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`aos_grad_in_r_array` + * :c:data:`aos_in_r_array` + * :c:data:`correlation_functional` + * :c:data:`exchange_functional` + * :c:data:`final_grid_points` + * :c:data:`mu_erf_dft` + * :c:data:`n_points_final_grid` + * :c:data:`n_states` + * :c:data:`one_e_dm_and_grad_alpha_in_r` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`potential_sr_x_alpha_ao_pbe` + + +.. c:var:: aos_dsr_vx_beta_pbe_w + + + File : :file:`dft_utils_one_e/sr_pot_ao.irp.f` + + .. code:: fortran + + double precision, allocatable :: aos_sr_vc_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_sr_vc_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_sr_vx_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_sr_vx_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_dsr_vc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dsr_vc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dsr_vx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dsr_vx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + + + aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`aos_grad_in_r_array` + * :c:data:`aos_in_r_array` + * :c:data:`correlation_functional` + * :c:data:`exchange_functional` + * :c:data:`final_grid_points` + * :c:data:`mu_erf_dft` + * :c:data:`n_points_final_grid` + * :c:data:`n_states` + * :c:data:`one_e_dm_and_grad_alpha_in_r` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`potential_sr_x_alpha_ao_pbe` + + +.. c:var:: aos_dvc_alpha_pbe_w + + + File : :file:`dft_utils_one_e/pot_ao.irp.f` + + .. code:: fortran + + double precision, allocatable :: aos_vc_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_vc_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_vx_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_vx_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_dvc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dvc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dvx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dvx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + + + aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`aos_grad_in_r_array` + * :c:data:`aos_in_r_array` + * :c:data:`correlation_functional` + * :c:data:`exchange_functional` + * :c:data:`final_grid_points` + * :c:data:`n_points_final_grid` + * :c:data:`n_states` + * :c:data:`one_e_dm_and_grad_alpha_in_r` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`potential_x_alpha_ao_pbe` + + +.. c:var:: aos_dvc_beta_pbe_w + + + File : :file:`dft_utils_one_e/pot_ao.irp.f` + + .. code:: fortran + + double precision, allocatable :: aos_vc_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_vc_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_vx_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_vx_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_dvc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dvc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dvx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dvx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + + + aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`aos_grad_in_r_array` + * :c:data:`aos_in_r_array` + * :c:data:`correlation_functional` + * :c:data:`exchange_functional` + * :c:data:`final_grid_points` + * :c:data:`n_points_final_grid` + * :c:data:`n_states` + * :c:data:`one_e_dm_and_grad_alpha_in_r` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`potential_x_alpha_ao_pbe` + + +.. c:var:: aos_dvx_alpha_pbe_w + + + File : :file:`dft_utils_one_e/pot_ao.irp.f` + + .. code:: fortran + + double precision, allocatable :: aos_vc_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_vc_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_vx_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_vx_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_dvc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dvc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dvx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dvx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + + + aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`aos_grad_in_r_array` + * :c:data:`aos_in_r_array` + * :c:data:`correlation_functional` + * :c:data:`exchange_functional` + * :c:data:`final_grid_points` + * :c:data:`n_points_final_grid` + * :c:data:`n_states` + * :c:data:`one_e_dm_and_grad_alpha_in_r` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`potential_x_alpha_ao_pbe` + + +.. c:var:: aos_dvx_beta_pbe_w + + + File : :file:`dft_utils_one_e/pot_ao.irp.f` + + .. code:: fortran + + double precision, allocatable :: aos_vc_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_vc_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_vx_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_vx_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_dvc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dvc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dvx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dvx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + + + aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`aos_grad_in_r_array` + * :c:data:`aos_in_r_array` + * :c:data:`correlation_functional` + * :c:data:`exchange_functional` + * :c:data:`final_grid_points` + * :c:data:`n_points_final_grid` + * :c:data:`n_states` + * :c:data:`one_e_dm_and_grad_alpha_in_r` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`potential_x_alpha_ao_pbe` + + +.. c:var:: aos_sr_vc_alpha_lda_w + + + File : :file:`dft_utils_one_e/sr_pot_ao.irp.f` + + .. code:: fortran + + double precision, allocatable :: aos_sr_vc_alpha_lda_w (n_points_final_grid,ao_num,N_states) + double precision, allocatable :: aos_sr_vc_beta_lda_w (n_points_final_grid,ao_num,N_states) + double precision, allocatable :: aos_sr_vx_alpha_lda_w (n_points_final_grid,ao_num,N_states) + double precision, allocatable :: aos_sr_vx_beta_lda_w (n_points_final_grid,ao_num,N_states) + + + aos_sr_vxc_alpha_LDA_w(j,i) = ao_i(r_j) * (sr_v^x_alpha(r_j) + sr_v^c_alpha(r_j)) * W(r_j) + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`aos_in_r_array` + * :c:data:`final_grid_points` + * :c:data:`mu_erf_dft` + * :c:data:`n_points_final_grid` + * :c:data:`n_states` + * :c:data:`one_e_dm_alpha_at_r` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`potential_sr_c_alpha_ao_lda` + * :c:data:`potential_sr_x_alpha_ao_lda` + + +.. c:var:: aos_sr_vc_alpha_pbe_w + + + File : :file:`dft_utils_one_e/sr_pot_ao.irp.f` + + .. code:: fortran + + double precision, allocatable :: aos_sr_vc_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_sr_vc_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_sr_vx_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_sr_vx_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_dsr_vc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dsr_vc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dsr_vx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dsr_vx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + + + aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`aos_grad_in_r_array` + * :c:data:`aos_in_r_array` + * :c:data:`correlation_functional` + * :c:data:`exchange_functional` + * :c:data:`final_grid_points` + * :c:data:`mu_erf_dft` + * :c:data:`n_points_final_grid` + * :c:data:`n_states` + * :c:data:`one_e_dm_and_grad_alpha_in_r` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`potential_sr_x_alpha_ao_pbe` + + +.. c:var:: aos_sr_vc_beta_lda_w + + + File : :file:`dft_utils_one_e/sr_pot_ao.irp.f` + + .. code:: fortran + + double precision, allocatable :: aos_sr_vc_alpha_lda_w (n_points_final_grid,ao_num,N_states) + double precision, allocatable :: aos_sr_vc_beta_lda_w (n_points_final_grid,ao_num,N_states) + double precision, allocatable :: aos_sr_vx_alpha_lda_w (n_points_final_grid,ao_num,N_states) + double precision, allocatable :: aos_sr_vx_beta_lda_w (n_points_final_grid,ao_num,N_states) + + + aos_sr_vxc_alpha_LDA_w(j,i) = ao_i(r_j) * (sr_v^x_alpha(r_j) + sr_v^c_alpha(r_j)) * W(r_j) + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`aos_in_r_array` + * :c:data:`final_grid_points` + * :c:data:`mu_erf_dft` + * :c:data:`n_points_final_grid` + * :c:data:`n_states` + * :c:data:`one_e_dm_alpha_at_r` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`potential_sr_c_alpha_ao_lda` + * :c:data:`potential_sr_x_alpha_ao_lda` + + +.. c:var:: aos_sr_vc_beta_pbe_w + + + File : :file:`dft_utils_one_e/sr_pot_ao.irp.f` + + .. code:: fortran + + double precision, allocatable :: aos_sr_vc_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_sr_vc_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_sr_vx_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_sr_vx_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_dsr_vc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dsr_vc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dsr_vx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dsr_vx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + + + aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`aos_grad_in_r_array` + * :c:data:`aos_in_r_array` + * :c:data:`correlation_functional` + * :c:data:`exchange_functional` + * :c:data:`final_grid_points` + * :c:data:`mu_erf_dft` + * :c:data:`n_points_final_grid` + * :c:data:`n_states` + * :c:data:`one_e_dm_and_grad_alpha_in_r` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`potential_sr_x_alpha_ao_pbe` + + +.. c:var:: aos_sr_vx_alpha_lda_w + + + File : :file:`dft_utils_one_e/sr_pot_ao.irp.f` + + .. code:: fortran + + double precision, allocatable :: aos_sr_vc_alpha_lda_w (n_points_final_grid,ao_num,N_states) + double precision, allocatable :: aos_sr_vc_beta_lda_w (n_points_final_grid,ao_num,N_states) + double precision, allocatable :: aos_sr_vx_alpha_lda_w (n_points_final_grid,ao_num,N_states) + double precision, allocatable :: aos_sr_vx_beta_lda_w (n_points_final_grid,ao_num,N_states) + + + aos_sr_vxc_alpha_LDA_w(j,i) = ao_i(r_j) * (sr_v^x_alpha(r_j) + sr_v^c_alpha(r_j)) * W(r_j) + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`aos_in_r_array` + * :c:data:`final_grid_points` + * :c:data:`mu_erf_dft` + * :c:data:`n_points_final_grid` + * :c:data:`n_states` + * :c:data:`one_e_dm_alpha_at_r` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`potential_sr_c_alpha_ao_lda` + * :c:data:`potential_sr_x_alpha_ao_lda` + + +.. c:var:: aos_sr_vx_alpha_pbe_w + + + File : :file:`dft_utils_one_e/sr_pot_ao.irp.f` + + .. code:: fortran + + double precision, allocatable :: aos_sr_vc_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_sr_vc_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_sr_vx_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_sr_vx_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_dsr_vc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dsr_vc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dsr_vx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dsr_vx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + + + aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`aos_grad_in_r_array` + * :c:data:`aos_in_r_array` + * :c:data:`correlation_functional` + * :c:data:`exchange_functional` + * :c:data:`final_grid_points` + * :c:data:`mu_erf_dft` + * :c:data:`n_points_final_grid` + * :c:data:`n_states` + * :c:data:`one_e_dm_and_grad_alpha_in_r` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`potential_sr_x_alpha_ao_pbe` + + +.. c:var:: aos_sr_vx_beta_lda_w + + + File : :file:`dft_utils_one_e/sr_pot_ao.irp.f` + + .. code:: fortran + + double precision, allocatable :: aos_sr_vc_alpha_lda_w (n_points_final_grid,ao_num,N_states) + double precision, allocatable :: aos_sr_vc_beta_lda_w (n_points_final_grid,ao_num,N_states) + double precision, allocatable :: aos_sr_vx_alpha_lda_w (n_points_final_grid,ao_num,N_states) + double precision, allocatable :: aos_sr_vx_beta_lda_w (n_points_final_grid,ao_num,N_states) + + + aos_sr_vxc_alpha_LDA_w(j,i) = ao_i(r_j) * (sr_v^x_alpha(r_j) + sr_v^c_alpha(r_j)) * W(r_j) + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`aos_in_r_array` + * :c:data:`final_grid_points` + * :c:data:`mu_erf_dft` + * :c:data:`n_points_final_grid` + * :c:data:`n_states` + * :c:data:`one_e_dm_alpha_at_r` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`potential_sr_c_alpha_ao_lda` + * :c:data:`potential_sr_x_alpha_ao_lda` + + +.. c:var:: aos_sr_vx_beta_pbe_w + + + File : :file:`dft_utils_one_e/sr_pot_ao.irp.f` + + .. code:: fortran + + double precision, allocatable :: aos_sr_vc_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_sr_vc_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_sr_vx_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_sr_vx_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_dsr_vc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dsr_vc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dsr_vx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dsr_vx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + + + aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`aos_grad_in_r_array` + * :c:data:`aos_in_r_array` + * :c:data:`correlation_functional` + * :c:data:`exchange_functional` + * :c:data:`final_grid_points` + * :c:data:`mu_erf_dft` + * :c:data:`n_points_final_grid` + * :c:data:`n_states` + * :c:data:`one_e_dm_and_grad_alpha_in_r` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`potential_sr_x_alpha_ao_pbe` + + +.. c:var:: aos_vc_alpha_lda_w + + + File : :file:`dft_utils_one_e/pot_ao.irp.f` + + .. code:: fortran + + double precision, allocatable :: aos_vc_alpha_lda_w (n_points_final_grid,ao_num,N_states) + double precision, allocatable :: aos_vc_beta_lda_w (n_points_final_grid,ao_num,N_states) + double precision, allocatable :: aos_vx_alpha_lda_w (n_points_final_grid,ao_num,N_states) + double precision, allocatable :: aos_vx_beta_lda_w (n_points_final_grid,ao_num,N_states) + + + aos_vxc_alpha_LDA_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`aos_in_r_array` + * :c:data:`final_grid_points` + * :c:data:`n_points_final_grid` + * :c:data:`n_states` + * :c:data:`one_e_dm_alpha_at_r` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`potential_x_alpha_ao_lda` + + +.. c:var:: aos_vc_alpha_pbe_w + + + File : :file:`dft_utils_one_e/pot_ao.irp.f` + + .. code:: fortran + + double precision, allocatable :: aos_vc_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_vc_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_vx_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_vx_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_dvc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dvc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dvx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dvx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + + + aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`aos_grad_in_r_array` + * :c:data:`aos_in_r_array` + * :c:data:`correlation_functional` + * :c:data:`exchange_functional` + * :c:data:`final_grid_points` + * :c:data:`n_points_final_grid` + * :c:data:`n_states` + * :c:data:`one_e_dm_and_grad_alpha_in_r` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`potential_x_alpha_ao_pbe` + + +.. c:var:: aos_vc_beta_lda_w + + + File : :file:`dft_utils_one_e/pot_ao.irp.f` + + .. code:: fortran + + double precision, allocatable :: aos_vc_alpha_lda_w (n_points_final_grid,ao_num,N_states) + double precision, allocatable :: aos_vc_beta_lda_w (n_points_final_grid,ao_num,N_states) + double precision, allocatable :: aos_vx_alpha_lda_w (n_points_final_grid,ao_num,N_states) + double precision, allocatable :: aos_vx_beta_lda_w (n_points_final_grid,ao_num,N_states) + + + aos_vxc_alpha_LDA_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`aos_in_r_array` + * :c:data:`final_grid_points` + * :c:data:`n_points_final_grid` + * :c:data:`n_states` + * :c:data:`one_e_dm_alpha_at_r` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`potential_x_alpha_ao_lda` + + +.. c:var:: aos_vc_beta_pbe_w + + + File : :file:`dft_utils_one_e/pot_ao.irp.f` + + .. code:: fortran + + double precision, allocatable :: aos_vc_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_vc_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_vx_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_vx_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_dvc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dvc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dvx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dvx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + + + aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`aos_grad_in_r_array` + * :c:data:`aos_in_r_array` + * :c:data:`correlation_functional` + * :c:data:`exchange_functional` + * :c:data:`final_grid_points` + * :c:data:`n_points_final_grid` + * :c:data:`n_states` + * :c:data:`one_e_dm_and_grad_alpha_in_r` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`potential_x_alpha_ao_pbe` + + +.. c:var:: aos_vx_alpha_lda_w + + + File : :file:`dft_utils_one_e/pot_ao.irp.f` + + .. code:: fortran + + double precision, allocatable :: aos_vc_alpha_lda_w (n_points_final_grid,ao_num,N_states) + double precision, allocatable :: aos_vc_beta_lda_w (n_points_final_grid,ao_num,N_states) + double precision, allocatable :: aos_vx_alpha_lda_w (n_points_final_grid,ao_num,N_states) + double precision, allocatable :: aos_vx_beta_lda_w (n_points_final_grid,ao_num,N_states) + + + aos_vxc_alpha_LDA_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`aos_in_r_array` + * :c:data:`final_grid_points` + * :c:data:`n_points_final_grid` + * :c:data:`n_states` + * :c:data:`one_e_dm_alpha_at_r` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`potential_x_alpha_ao_lda` + + +.. c:var:: aos_vx_alpha_pbe_w + + + File : :file:`dft_utils_one_e/pot_ao.irp.f` + + .. code:: fortran + + double precision, allocatable :: aos_vc_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_vc_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_vx_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_vx_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_dvc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dvc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dvx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dvx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + + + aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`aos_grad_in_r_array` + * :c:data:`aos_in_r_array` + * :c:data:`correlation_functional` + * :c:data:`exchange_functional` + * :c:data:`final_grid_points` + * :c:data:`n_points_final_grid` + * :c:data:`n_states` + * :c:data:`one_e_dm_and_grad_alpha_in_r` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`potential_x_alpha_ao_pbe` + + +.. c:var:: aos_vx_beta_lda_w + + + File : :file:`dft_utils_one_e/pot_ao.irp.f` + + .. code:: fortran + + double precision, allocatable :: aos_vc_alpha_lda_w (n_points_final_grid,ao_num,N_states) + double precision, allocatable :: aos_vc_beta_lda_w (n_points_final_grid,ao_num,N_states) + double precision, allocatable :: aos_vx_alpha_lda_w (n_points_final_grid,ao_num,N_states) + double precision, allocatable :: aos_vx_beta_lda_w (n_points_final_grid,ao_num,N_states) + + + aos_vxc_alpha_LDA_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`aos_in_r_array` + * :c:data:`final_grid_points` + * :c:data:`n_points_final_grid` + * :c:data:`n_states` + * :c:data:`one_e_dm_alpha_at_r` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`potential_x_alpha_ao_lda` + + +.. c:var:: aos_vx_beta_pbe_w + + + File : :file:`dft_utils_one_e/pot_ao.irp.f` + + .. code:: fortran + + double precision, allocatable :: aos_vc_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_vc_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_vx_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_vx_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_dvc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dvc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dvx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dvx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + + + aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`aos_grad_in_r_array` + * :c:data:`aos_in_r_array` + * :c:data:`correlation_functional` + * :c:data:`exchange_functional` + * :c:data:`final_grid_points` + * :c:data:`n_points_final_grid` + * :c:data:`n_states` + * :c:data:`one_e_dm_and_grad_alpha_in_r` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`potential_x_alpha_ao_pbe` + + +.. c:var:: effective_one_e_potential + + + File : :file:`dft_utils_one_e/effective_pot.irp.f` + + .. code:: fortran + + double precision, allocatable :: effective_one_e_potential (mo_num,mo_num,N_states) + double precision, allocatable :: effective_one_e_potential_without_kin (mo_num,mo_num,N_states) + + + Effective_one_e_potential(i,j) = :math:`\rangle i_{MO}| v_{H}^{sr} |j_{MO}\rangle + \rangle i_{MO}| h_{core} |j_{MO}\rangle + \rangle i_{MO}|v_{xc} |j_{MO}\rangle` + + on the |MO| basis + Taking the expectation value does not provide any energy, but + effective_one_e_potential(i,j) is the potential coupling DFT and WFT part to + be used in any WFT calculation. + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_integrals_n_e` + * :c:data:`mo_kinetic_integrals` + * :c:data:`mo_num` + * :c:data:`n_states` + * :c:data:`potential_x_alpha_mo` + * :c:data:`short_range_hartree_operator` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_effective_one_e_potential` + + +.. c:var:: effective_one_e_potential_without_kin + + + File : :file:`dft_utils_one_e/effective_pot.irp.f` + + .. code:: fortran + + double precision, allocatable :: effective_one_e_potential (mo_num,mo_num,N_states) + double precision, allocatable :: effective_one_e_potential_without_kin (mo_num,mo_num,N_states) + + + Effective_one_e_potential(i,j) = :math:`\rangle i_{MO}| v_{H}^{sr} |j_{MO}\rangle + \rangle i_{MO}| h_{core} |j_{MO}\rangle + \rangle i_{MO}|v_{xc} |j_{MO}\rangle` + + on the |MO| basis + Taking the expectation value does not provide any energy, but + effective_one_e_potential(i,j) is the potential coupling DFT and WFT part to + be used in any WFT calculation. + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_integrals_n_e` + * :c:data:`mo_kinetic_integrals` + * :c:data:`mo_num` + * :c:data:`n_states` + * :c:data:`potential_x_alpha_mo` + * :c:data:`short_range_hartree_operator` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_effective_one_e_potential` + + +.. c:var:: energy_c + + + File : :file:`dft_utils_one_e/e_xc_general.irp.f` + + .. code:: fortran + + double precision, allocatable :: energy_x (N_states) + double precision, allocatable :: energy_c (N_states) + + + correlation and exchange energies general providers. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`correlation_functional` + * :c:data:`energy_sr_x_lda` + * :c:data:`energy_sr_x_pbe` + * :c:data:`exchange_functional` + * :c:data:`n_states` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`e_correlation_dft` + * :c:data:`e_exchange_dft` + * :c:data:`shifting_constant` + + +.. c:var:: energy_c_lda + + + File : :file:`dft_utils_one_e/e_xc.irp.f` + + .. code:: fortran + + double precision, allocatable :: energy_x_lda (N_states) + double precision, allocatable :: energy_c_lda (N_states) + + + exchange/correlation energy with the short range LDA functional + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`final_grid_points` + * :c:data:`n_points_final_grid` + * :c:data:`n_states` + * :c:data:`one_e_dm_alpha_at_r` + + + +.. c:var:: energy_c_pbe + + + File : :file:`dft_utils_one_e/e_xc.irp.f` + + .. code:: fortran + + double precision, allocatable :: energy_x_pbe (N_states) + double precision, allocatable :: energy_c_pbe (N_states) + + + exchange/correlation energy with the short range PBE functional + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`correlation_functional` + * :c:data:`exchange_functional` + * :c:data:`final_grid_points` + * :c:data:`n_points_final_grid` + * :c:data:`n_states` + * :c:data:`one_e_dm_and_grad_alpha_in_r` + + + +.. c:var:: energy_sr_c_lda + + + File : :file:`dft_utils_one_e/sr_exc.irp.f` + + .. code:: fortran + + double precision, allocatable :: energy_sr_x_lda (N_states) + double precision, allocatable :: energy_sr_c_lda (N_states) + + + exchange/correlation energy with the short range LDA functional + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`final_grid_points` + * :c:data:`mu_erf_dft` + * :c:data:`n_points_final_grid` + * :c:data:`n_states` + * :c:data:`one_e_dm_alpha_at_r` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`energy_x` + + +.. c:var:: energy_sr_c_pbe + + + File : :file:`dft_utils_one_e/sr_exc.irp.f` + + .. code:: fortran + + double precision, allocatable :: energy_sr_x_pbe (N_states) + double precision, allocatable :: energy_sr_c_pbe (N_states) + + + exchange/correlation energy with the short range PBE functional + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`correlation_functional` + * :c:data:`exchange_functional` + * :c:data:`final_grid_points` + * :c:data:`mu_erf_dft` + * :c:data:`n_points_final_grid` + * :c:data:`n_states` + * :c:data:`one_e_dm_and_grad_alpha_in_r` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`energy_x` + + +.. c:var:: energy_sr_x_lda + + + File : :file:`dft_utils_one_e/sr_exc.irp.f` + + .. code:: fortran + + double precision, allocatable :: energy_sr_x_lda (N_states) + double precision, allocatable :: energy_sr_c_lda (N_states) + + + exchange/correlation energy with the short range LDA functional + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`final_grid_points` + * :c:data:`mu_erf_dft` + * :c:data:`n_points_final_grid` + * :c:data:`n_states` + * :c:data:`one_e_dm_alpha_at_r` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`energy_x` + + +.. c:var:: energy_sr_x_pbe + + + File : :file:`dft_utils_one_e/sr_exc.irp.f` + + .. code:: fortran + + double precision, allocatable :: energy_sr_x_pbe (N_states) + double precision, allocatable :: energy_sr_c_pbe (N_states) + + + exchange/correlation energy with the short range PBE functional + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`correlation_functional` + * :c:data:`exchange_functional` + * :c:data:`final_grid_points` + * :c:data:`mu_erf_dft` + * :c:data:`n_points_final_grid` + * :c:data:`n_states` + * :c:data:`one_e_dm_and_grad_alpha_in_r` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`energy_x` + + +.. c:var:: energy_x + + + File : :file:`dft_utils_one_e/e_xc_general.irp.f` + + .. code:: fortran + + double precision, allocatable :: energy_x (N_states) + double precision, allocatable :: energy_c (N_states) + + + correlation and exchange energies general providers. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`correlation_functional` + * :c:data:`energy_sr_x_lda` + * :c:data:`energy_sr_x_pbe` + * :c:data:`exchange_functional` + * :c:data:`n_states` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`e_correlation_dft` + * :c:data:`e_exchange_dft` + * :c:data:`shifting_constant` + + +.. c:var:: energy_x_lda + + + File : :file:`dft_utils_one_e/e_xc.irp.f` + + .. code:: fortran + + double precision, allocatable :: energy_x_lda (N_states) + double precision, allocatable :: energy_c_lda (N_states) + + + exchange/correlation energy with the short range LDA functional + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`final_grid_points` + * :c:data:`n_points_final_grid` + * :c:data:`n_states` + * :c:data:`one_e_dm_alpha_at_r` + + + +.. c:var:: energy_x_pbe + + + File : :file:`dft_utils_one_e/e_xc.irp.f` + + .. code:: fortran + + double precision, allocatable :: energy_x_pbe (N_states) + double precision, allocatable :: energy_c_pbe (N_states) + + + exchange/correlation energy with the short range PBE functional + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`correlation_functional` + * :c:data:`exchange_functional` + * :c:data:`final_grid_points` + * :c:data:`n_points_final_grid` + * :c:data:`n_states` + * :c:data:`one_e_dm_and_grad_alpha_in_r` + + + +.. c:function:: gga_sr_type_functionals: + + + File : :file:`dft_utils_one_e/utils.irp.f` + + .. code:: fortran + + subroutine GGA_sr_type_functionals(r,rho_a,rho_b,grad_rho_a_2,grad_rho_b_2,grad_rho_a_b, & + ex,vx_rho_a,vx_rho_b,vx_grad_rho_a_2,vx_grad_rho_b_2,vx_grad_rho_a_b, & + ec,vc_rho_a,vc_rho_b,vc_grad_rho_a_2,vc_grad_rho_b_2,vc_grad_rho_a_b ) + + + routine that helps in building the x/c potentials on the AO basis for a GGA functional with a short-range interaction + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mu_erf_dft` + * :c:data:`exchange_functional` + * :c:data:`correlation_functional` + * :c:data:`n_states` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:data:`aos_sr_vc_alpha_pbe_w` + * :c:data:`energy_sr_x_pbe` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`ec_pbe_sr` + * :c:func:`ex_pbe_sr` + * :c:func:`grad_rho_ab_to_grad_rho_oc` + * :c:func:`rho_ab_to_rho_oc` + * :c:func:`v_grad_rho_oc_to_v_grad_rho_ab` + * :c:func:`v_rho_oc_to_v_rho_ab` + + +.. c:function:: gga_type_functionals: + + + File : :file:`dft_utils_one_e/utils.irp.f` + + .. code:: fortran + + subroutine GGA_type_functionals(r,rho_a,rho_b,grad_rho_a_2,grad_rho_b_2,grad_rho_a_b, & + ex,vx_rho_a,vx_rho_b,vx_grad_rho_a_2,vx_grad_rho_b_2,vx_grad_rho_a_b, & + ec,vc_rho_a,vc_rho_b,vc_grad_rho_a_2,vc_grad_rho_b_2,vc_grad_rho_a_b ) + + + routine that helps in building the x/c potentials on the AO basis for a GGA functional + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_states` + * :c:data:`exchange_functional` + * :c:data:`correlation_functional` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:data:`aos_vc_alpha_pbe_w` + * :c:data:`energy_x_pbe` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`ec_pbe_sr` + * :c:func:`ex_pbe_sr` + * :c:func:`grad_rho_ab_to_grad_rho_oc` + * :c:func:`rho_ab_to_rho_oc` + * :c:func:`v_grad_rho_oc_to_v_grad_rho_ab` + * :c:func:`v_rho_oc_to_v_rho_ab` + + +.. c:var:: grad_aos_dsr_vc_alpha_pbe_w + + + File : :file:`dft_utils_one_e/sr_pot_ao.irp.f` + + .. code:: fortran + + double precision, allocatable :: aos_sr_vc_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_sr_vc_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_sr_vx_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_sr_vx_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_dsr_vc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dsr_vc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dsr_vx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dsr_vx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + + + aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`aos_grad_in_r_array` + * :c:data:`aos_in_r_array` + * :c:data:`correlation_functional` + * :c:data:`exchange_functional` + * :c:data:`final_grid_points` + * :c:data:`mu_erf_dft` + * :c:data:`n_points_final_grid` + * :c:data:`n_states` + * :c:data:`one_e_dm_and_grad_alpha_in_r` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`potential_sr_x_alpha_ao_pbe` + + +.. c:var:: grad_aos_dsr_vc_beta_pbe_w + + + File : :file:`dft_utils_one_e/sr_pot_ao.irp.f` + + .. code:: fortran + + double precision, allocatable :: aos_sr_vc_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_sr_vc_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_sr_vx_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_sr_vx_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_dsr_vc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dsr_vc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dsr_vx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dsr_vx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + + + aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`aos_grad_in_r_array` + * :c:data:`aos_in_r_array` + * :c:data:`correlation_functional` + * :c:data:`exchange_functional` + * :c:data:`final_grid_points` + * :c:data:`mu_erf_dft` + * :c:data:`n_points_final_grid` + * :c:data:`n_states` + * :c:data:`one_e_dm_and_grad_alpha_in_r` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`potential_sr_x_alpha_ao_pbe` + + +.. c:var:: grad_aos_dsr_vx_alpha_pbe_w + + + File : :file:`dft_utils_one_e/sr_pot_ao.irp.f` + + .. code:: fortran + + double precision, allocatable :: aos_sr_vc_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_sr_vc_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_sr_vx_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_sr_vx_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_dsr_vc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dsr_vc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dsr_vx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dsr_vx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + + + aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`aos_grad_in_r_array` + * :c:data:`aos_in_r_array` + * :c:data:`correlation_functional` + * :c:data:`exchange_functional` + * :c:data:`final_grid_points` + * :c:data:`mu_erf_dft` + * :c:data:`n_points_final_grid` + * :c:data:`n_states` + * :c:data:`one_e_dm_and_grad_alpha_in_r` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`potential_sr_x_alpha_ao_pbe` + + +.. c:var:: grad_aos_dsr_vx_beta_pbe_w + + + File : :file:`dft_utils_one_e/sr_pot_ao.irp.f` + + .. code:: fortran + + double precision, allocatable :: aos_sr_vc_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_sr_vc_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_sr_vx_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_sr_vx_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_dsr_vc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dsr_vc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dsr_vx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dsr_vx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + + + aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`aos_grad_in_r_array` + * :c:data:`aos_in_r_array` + * :c:data:`correlation_functional` + * :c:data:`exchange_functional` + * :c:data:`final_grid_points` + * :c:data:`mu_erf_dft` + * :c:data:`n_points_final_grid` + * :c:data:`n_states` + * :c:data:`one_e_dm_and_grad_alpha_in_r` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`potential_sr_x_alpha_ao_pbe` + + +.. c:var:: grad_aos_dvc_alpha_pbe_w + + + File : :file:`dft_utils_one_e/pot_ao.irp.f` + + .. code:: fortran + + double precision, allocatable :: aos_vc_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_vc_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_vx_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_vx_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_dvc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dvc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dvx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dvx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + + + aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`aos_grad_in_r_array` + * :c:data:`aos_in_r_array` + * :c:data:`correlation_functional` + * :c:data:`exchange_functional` + * :c:data:`final_grid_points` + * :c:data:`n_points_final_grid` + * :c:data:`n_states` + * :c:data:`one_e_dm_and_grad_alpha_in_r` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`potential_x_alpha_ao_pbe` + + +.. c:var:: grad_aos_dvc_beta_pbe_w + + + File : :file:`dft_utils_one_e/pot_ao.irp.f` + + .. code:: fortran + + double precision, allocatable :: aos_vc_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_vc_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_vx_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_vx_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_dvc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dvc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dvx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dvx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + + + aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`aos_grad_in_r_array` + * :c:data:`aos_in_r_array` + * :c:data:`correlation_functional` + * :c:data:`exchange_functional` + * :c:data:`final_grid_points` + * :c:data:`n_points_final_grid` + * :c:data:`n_states` + * :c:data:`one_e_dm_and_grad_alpha_in_r` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`potential_x_alpha_ao_pbe` + + +.. c:var:: grad_aos_dvx_alpha_pbe_w + + + File : :file:`dft_utils_one_e/pot_ao.irp.f` + + .. code:: fortran + + double precision, allocatable :: aos_vc_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_vc_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_vx_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_vx_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_dvc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dvc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dvx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dvx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + + + aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`aos_grad_in_r_array` + * :c:data:`aos_in_r_array` + * :c:data:`correlation_functional` + * :c:data:`exchange_functional` + * :c:data:`final_grid_points` + * :c:data:`n_points_final_grid` + * :c:data:`n_states` + * :c:data:`one_e_dm_and_grad_alpha_in_r` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`potential_x_alpha_ao_pbe` + + +.. c:var:: grad_aos_dvx_beta_pbe_w + + + File : :file:`dft_utils_one_e/pot_ao.irp.f` + + .. code:: fortran + + double precision, allocatable :: aos_vc_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_vc_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_vx_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_vx_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_dvc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dvc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dvx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dvx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + + + aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`aos_grad_in_r_array` + * :c:data:`aos_in_r_array` + * :c:data:`correlation_functional` + * :c:data:`exchange_functional` + * :c:data:`final_grid_points` + * :c:data:`n_points_final_grid` + * :c:data:`n_states` + * :c:data:`one_e_dm_and_grad_alpha_in_r` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`potential_x_alpha_ao_pbe` + + +.. c:var:: mu_erf_dft + + + File : :file:`dft_utils_one_e/mu_erf_dft.irp.f` + + .. code:: fortran + + double precision :: mu_erf_dft + + + range separation parameter used in RS-DFT. It is set to mu_erf in order to be consistent with the two electrons integrals erf + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mu_erf` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`aos_sr_vc_alpha_lda_w` + * :c:data:`aos_sr_vc_alpha_pbe_w` + * :c:data:`energy_sr_x_lda` + * :c:data:`energy_sr_x_pbe` + + +.. c:var:: potential_c_alpha_ao + + + File : :file:`dft_utils_one_e/pot_general.irp.f` + + .. code:: fortran + + double precision, allocatable :: potential_x_alpha_ao (ao_num,ao_num,N_states) + double precision, allocatable :: potential_x_beta_ao (ao_num,ao_num,N_states) + double precision, allocatable :: potential_c_alpha_ao (ao_num,ao_num,N_states) + double precision, allocatable :: potential_c_beta_ao (ao_num,ao_num,N_states) + + + general providers for the alpha/beta exchange/correlation potentials on the AO basis + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`correlation_functional` + * :c:data:`exchange_functional` + * :c:data:`n_states` + * :c:data:`potential_sr_c_alpha_ao_lda` + * :c:data:`potential_sr_x_alpha_ao_lda` + * :c:data:`potential_sr_x_alpha_ao_pbe` + * :c:data:`potential_x_alpha_ao_lda` + * :c:data:`potential_x_alpha_ao_pbe` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_potential_alpha_xc` + * :c:data:`potential_x_alpha_mo` + + +.. c:var:: potential_c_alpha_ao_lda + + + File : :file:`dft_utils_one_e/pot_ao.irp.f` + + .. code:: fortran + + double precision, allocatable :: potential_x_alpha_ao_lda (ao_num,ao_num,N_states) + double precision, allocatable :: potential_x_beta_ao_lda (ao_num,ao_num,N_states) + double precision, allocatable :: potential_c_alpha_ao_lda (ao_num,ao_num,N_states) + double precision, allocatable :: potential_c_beta_ao_lda (ao_num,ao_num,N_states) + + + short range exchange/correlation alpha/beta potentials with LDA functional on the AO basis + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`aos_in_r_array` + * :c:data:`aos_vc_alpha_lda_w` + * :c:data:`n_points_final_grid` + * :c:data:`n_states` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`potential_x_alpha_ao` + + +.. c:var:: potential_c_alpha_ao_pbe + + + File : :file:`dft_utils_one_e/pot_ao.irp.f` + + .. code:: fortran + + double precision, allocatable :: potential_x_alpha_ao_pbe (ao_num,ao_num,N_states) + double precision, allocatable :: potential_x_beta_ao_pbe (ao_num,ao_num,N_states) + double precision, allocatable :: potential_c_alpha_ao_pbe (ao_num,ao_num,N_states) + double precision, allocatable :: potential_c_beta_ao_pbe (ao_num,ao_num,N_states) + + + exchange/correlation alpha/beta potentials with the short range PBE functional on the AO basis + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`aos_grad_in_r_array` + * :c:data:`aos_in_r_array` + * :c:data:`aos_vc_alpha_pbe_w` + * :c:data:`n_points_final_grid` + * :c:data:`n_states` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`potential_x_alpha_ao` + + +.. c:var:: potential_c_alpha_mo + + + File : :file:`dft_utils_one_e/pot_general.irp.f` + + .. code:: fortran + + double precision, allocatable :: potential_x_alpha_mo (mo_num,mo_num,N_states) + double precision, allocatable :: potential_x_beta_mo (mo_num,mo_num,N_states) + double precision, allocatable :: potential_c_alpha_mo (mo_num,mo_num,N_states) + double precision, allocatable :: potential_c_beta_mo (mo_num,mo_num,N_states) + + + general providers for the alpha/beta exchange/correlation potentials on the MO basis + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`mo_coef` + * :c:data:`mo_num` + * :c:data:`n_states` + * :c:data:`potential_x_alpha_ao` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`effective_one_e_potential` + * :c:data:`trace_v_xc` + + +.. c:var:: potential_c_beta_ao + + + File : :file:`dft_utils_one_e/pot_general.irp.f` + + .. code:: fortran + + double precision, allocatable :: potential_x_alpha_ao (ao_num,ao_num,N_states) + double precision, allocatable :: potential_x_beta_ao (ao_num,ao_num,N_states) + double precision, allocatable :: potential_c_alpha_ao (ao_num,ao_num,N_states) + double precision, allocatable :: potential_c_beta_ao (ao_num,ao_num,N_states) + + + general providers for the alpha/beta exchange/correlation potentials on the AO basis + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`correlation_functional` + * :c:data:`exchange_functional` + * :c:data:`n_states` + * :c:data:`potential_sr_c_alpha_ao_lda` + * :c:data:`potential_sr_x_alpha_ao_lda` + * :c:data:`potential_sr_x_alpha_ao_pbe` + * :c:data:`potential_x_alpha_ao_lda` + * :c:data:`potential_x_alpha_ao_pbe` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_potential_alpha_xc` + * :c:data:`potential_x_alpha_mo` + + +.. c:var:: potential_c_beta_ao_lda + + + File : :file:`dft_utils_one_e/pot_ao.irp.f` + + .. code:: fortran + + double precision, allocatable :: potential_x_alpha_ao_lda (ao_num,ao_num,N_states) + double precision, allocatable :: potential_x_beta_ao_lda (ao_num,ao_num,N_states) + double precision, allocatable :: potential_c_alpha_ao_lda (ao_num,ao_num,N_states) + double precision, allocatable :: potential_c_beta_ao_lda (ao_num,ao_num,N_states) + + + short range exchange/correlation alpha/beta potentials with LDA functional on the AO basis + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`aos_in_r_array` + * :c:data:`aos_vc_alpha_lda_w` + * :c:data:`n_points_final_grid` + * :c:data:`n_states` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`potential_x_alpha_ao` + + +.. c:var:: potential_c_beta_ao_pbe + + + File : :file:`dft_utils_one_e/pot_ao.irp.f` + + .. code:: fortran + + double precision, allocatable :: potential_x_alpha_ao_pbe (ao_num,ao_num,N_states) + double precision, allocatable :: potential_x_beta_ao_pbe (ao_num,ao_num,N_states) + double precision, allocatable :: potential_c_alpha_ao_pbe (ao_num,ao_num,N_states) + double precision, allocatable :: potential_c_beta_ao_pbe (ao_num,ao_num,N_states) + + + exchange/correlation alpha/beta potentials with the short range PBE functional on the AO basis + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`aos_grad_in_r_array` + * :c:data:`aos_in_r_array` + * :c:data:`aos_vc_alpha_pbe_w` + * :c:data:`n_points_final_grid` + * :c:data:`n_states` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`potential_x_alpha_ao` + + +.. c:var:: potential_c_beta_mo + + + File : :file:`dft_utils_one_e/pot_general.irp.f` + + .. code:: fortran + + double precision, allocatable :: potential_x_alpha_mo (mo_num,mo_num,N_states) + double precision, allocatable :: potential_x_beta_mo (mo_num,mo_num,N_states) + double precision, allocatable :: potential_c_alpha_mo (mo_num,mo_num,N_states) + double precision, allocatable :: potential_c_beta_mo (mo_num,mo_num,N_states) + + + general providers for the alpha/beta exchange/correlation potentials on the MO basis + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`mo_coef` + * :c:data:`mo_num` + * :c:data:`n_states` + * :c:data:`potential_x_alpha_ao` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`effective_one_e_potential` + * :c:data:`trace_v_xc` + + +.. c:var:: potential_sr_c_alpha_ao_lda + + + File : :file:`dft_utils_one_e/sr_pot_ao.irp.f` + + .. code:: fortran + + double precision, allocatable :: potential_sr_c_alpha_ao_lda (ao_num,ao_num,N_states) + double precision, allocatable :: potential_sr_c_beta_ao_lda (ao_num,ao_num,N_states) + + + short range correlation alpha/beta potentials with LDA functional on the |AO| basis + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`aos_in_r_array` + * :c:data:`aos_sr_vc_alpha_lda_w` + * :c:data:`n_points_final_grid` + * :c:data:`n_states` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`potential_x_alpha_ao` + + +.. c:var:: potential_sr_c_alpha_ao_pbe + + + File : :file:`dft_utils_one_e/sr_pot_ao.irp.f` + + .. code:: fortran + + double precision, allocatable :: potential_sr_x_alpha_ao_pbe (ao_num,ao_num,N_states) + double precision, allocatable :: potential_sr_x_beta_ao_pbe (ao_num,ao_num,N_states) + double precision, allocatable :: potential_sr_c_alpha_ao_pbe (ao_num,ao_num,N_states) + double precision, allocatable :: potential_sr_c_beta_ao_pbe (ao_num,ao_num,N_states) + + + exchange/correlation alpha/beta potentials with the short range PBE functional on the AO basis + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`aos_grad_in_r_array` + * :c:data:`aos_in_r_array` + * :c:data:`aos_sr_vc_alpha_pbe_w` + * :c:data:`n_points_final_grid` + * :c:data:`n_states` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`potential_x_alpha_ao` + + +.. c:var:: potential_sr_c_beta_ao_lda + + + File : :file:`dft_utils_one_e/sr_pot_ao.irp.f` + + .. code:: fortran + + double precision, allocatable :: potential_sr_c_alpha_ao_lda (ao_num,ao_num,N_states) + double precision, allocatable :: potential_sr_c_beta_ao_lda (ao_num,ao_num,N_states) + + + short range correlation alpha/beta potentials with LDA functional on the |AO| basis + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`aos_in_r_array` + * :c:data:`aos_sr_vc_alpha_lda_w` + * :c:data:`n_points_final_grid` + * :c:data:`n_states` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`potential_x_alpha_ao` + + +.. c:var:: potential_sr_c_beta_ao_pbe + + + File : :file:`dft_utils_one_e/sr_pot_ao.irp.f` + + .. code:: fortran + + double precision, allocatable :: potential_sr_x_alpha_ao_pbe (ao_num,ao_num,N_states) + double precision, allocatable :: potential_sr_x_beta_ao_pbe (ao_num,ao_num,N_states) + double precision, allocatable :: potential_sr_c_alpha_ao_pbe (ao_num,ao_num,N_states) + double precision, allocatable :: potential_sr_c_beta_ao_pbe (ao_num,ao_num,N_states) + + + exchange/correlation alpha/beta potentials with the short range PBE functional on the AO basis + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`aos_grad_in_r_array` + * :c:data:`aos_in_r_array` + * :c:data:`aos_sr_vc_alpha_pbe_w` + * :c:data:`n_points_final_grid` + * :c:data:`n_states` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`potential_x_alpha_ao` + + +.. c:var:: potential_sr_x_alpha_ao_lda + + + File : :file:`dft_utils_one_e/sr_pot_ao.irp.f` + + .. code:: fortran + + double precision, allocatable :: potential_sr_x_alpha_ao_lda (ao_num,ao_num,N_states) + double precision, allocatable :: potential_sr_x_beta_ao_lda (ao_num,ao_num,N_states) + + + short range exchange alpha/beta potentials with LDA functional on the |AO| basis + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`aos_in_r_array` + * :c:data:`aos_sr_vc_alpha_lda_w` + * :c:data:`n_points_final_grid` + * :c:data:`n_states` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`potential_x_alpha_ao` + + +.. c:var:: potential_sr_x_alpha_ao_pbe + + + File : :file:`dft_utils_one_e/sr_pot_ao.irp.f` + + .. code:: fortran + + double precision, allocatable :: potential_sr_x_alpha_ao_pbe (ao_num,ao_num,N_states) + double precision, allocatable :: potential_sr_x_beta_ao_pbe (ao_num,ao_num,N_states) + double precision, allocatable :: potential_sr_c_alpha_ao_pbe (ao_num,ao_num,N_states) + double precision, allocatable :: potential_sr_c_beta_ao_pbe (ao_num,ao_num,N_states) + + + exchange/correlation alpha/beta potentials with the short range PBE functional on the AO basis + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`aos_grad_in_r_array` + * :c:data:`aos_in_r_array` + * :c:data:`aos_sr_vc_alpha_pbe_w` + * :c:data:`n_points_final_grid` + * :c:data:`n_states` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`potential_x_alpha_ao` + + +.. c:var:: potential_sr_x_beta_ao_lda + + + File : :file:`dft_utils_one_e/sr_pot_ao.irp.f` + + .. code:: fortran + + double precision, allocatable :: potential_sr_x_alpha_ao_lda (ao_num,ao_num,N_states) + double precision, allocatable :: potential_sr_x_beta_ao_lda (ao_num,ao_num,N_states) + + + short range exchange alpha/beta potentials with LDA functional on the |AO| basis + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`aos_in_r_array` + * :c:data:`aos_sr_vc_alpha_lda_w` + * :c:data:`n_points_final_grid` + * :c:data:`n_states` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`potential_x_alpha_ao` + + +.. c:var:: potential_sr_x_beta_ao_pbe + + + File : :file:`dft_utils_one_e/sr_pot_ao.irp.f` + + .. code:: fortran + + double precision, allocatable :: potential_sr_x_alpha_ao_pbe (ao_num,ao_num,N_states) + double precision, allocatable :: potential_sr_x_beta_ao_pbe (ao_num,ao_num,N_states) + double precision, allocatable :: potential_sr_c_alpha_ao_pbe (ao_num,ao_num,N_states) + double precision, allocatable :: potential_sr_c_beta_ao_pbe (ao_num,ao_num,N_states) + + + exchange/correlation alpha/beta potentials with the short range PBE functional on the AO basis + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`aos_grad_in_r_array` + * :c:data:`aos_in_r_array` + * :c:data:`aos_sr_vc_alpha_pbe_w` + * :c:data:`n_points_final_grid` + * :c:data:`n_states` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`potential_x_alpha_ao` + + +.. c:var:: potential_x_alpha_ao + + + File : :file:`dft_utils_one_e/pot_general.irp.f` + + .. code:: fortran + + double precision, allocatable :: potential_x_alpha_ao (ao_num,ao_num,N_states) + double precision, allocatable :: potential_x_beta_ao (ao_num,ao_num,N_states) + double precision, allocatable :: potential_c_alpha_ao (ao_num,ao_num,N_states) + double precision, allocatable :: potential_c_beta_ao (ao_num,ao_num,N_states) + + + general providers for the alpha/beta exchange/correlation potentials on the AO basis + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`correlation_functional` + * :c:data:`exchange_functional` + * :c:data:`n_states` + * :c:data:`potential_sr_c_alpha_ao_lda` + * :c:data:`potential_sr_x_alpha_ao_lda` + * :c:data:`potential_sr_x_alpha_ao_pbe` + * :c:data:`potential_x_alpha_ao_lda` + * :c:data:`potential_x_alpha_ao_pbe` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_potential_alpha_xc` + * :c:data:`potential_x_alpha_mo` + + +.. c:var:: potential_x_alpha_ao_lda + + + File : :file:`dft_utils_one_e/pot_ao.irp.f` + + .. code:: fortran + + double precision, allocatable :: potential_x_alpha_ao_lda (ao_num,ao_num,N_states) + double precision, allocatable :: potential_x_beta_ao_lda (ao_num,ao_num,N_states) + double precision, allocatable :: potential_c_alpha_ao_lda (ao_num,ao_num,N_states) + double precision, allocatable :: potential_c_beta_ao_lda (ao_num,ao_num,N_states) + + + short range exchange/correlation alpha/beta potentials with LDA functional on the AO basis + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`aos_in_r_array` + * :c:data:`aos_vc_alpha_lda_w` + * :c:data:`n_points_final_grid` + * :c:data:`n_states` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`potential_x_alpha_ao` + + +.. c:var:: potential_x_alpha_ao_pbe + + + File : :file:`dft_utils_one_e/pot_ao.irp.f` + + .. code:: fortran + + double precision, allocatable :: potential_x_alpha_ao_pbe (ao_num,ao_num,N_states) + double precision, allocatable :: potential_x_beta_ao_pbe (ao_num,ao_num,N_states) + double precision, allocatable :: potential_c_alpha_ao_pbe (ao_num,ao_num,N_states) + double precision, allocatable :: potential_c_beta_ao_pbe (ao_num,ao_num,N_states) + + + exchange/correlation alpha/beta potentials with the short range PBE functional on the AO basis + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`aos_grad_in_r_array` + * :c:data:`aos_in_r_array` + * :c:data:`aos_vc_alpha_pbe_w` + * :c:data:`n_points_final_grid` + * :c:data:`n_states` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`potential_x_alpha_ao` + + +.. c:var:: potential_x_alpha_mo + + + File : :file:`dft_utils_one_e/pot_general.irp.f` + + .. code:: fortran + + double precision, allocatable :: potential_x_alpha_mo (mo_num,mo_num,N_states) + double precision, allocatable :: potential_x_beta_mo (mo_num,mo_num,N_states) + double precision, allocatable :: potential_c_alpha_mo (mo_num,mo_num,N_states) + double precision, allocatable :: potential_c_beta_mo (mo_num,mo_num,N_states) + + + general providers for the alpha/beta exchange/correlation potentials on the MO basis + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`mo_coef` + * :c:data:`mo_num` + * :c:data:`n_states` + * :c:data:`potential_x_alpha_ao` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`effective_one_e_potential` + * :c:data:`trace_v_xc` + + +.. c:var:: potential_x_beta_ao + + + File : :file:`dft_utils_one_e/pot_general.irp.f` + + .. code:: fortran + + double precision, allocatable :: potential_x_alpha_ao (ao_num,ao_num,N_states) + double precision, allocatable :: potential_x_beta_ao (ao_num,ao_num,N_states) + double precision, allocatable :: potential_c_alpha_ao (ao_num,ao_num,N_states) + double precision, allocatable :: potential_c_beta_ao (ao_num,ao_num,N_states) + + + general providers for the alpha/beta exchange/correlation potentials on the AO basis + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`correlation_functional` + * :c:data:`exchange_functional` + * :c:data:`n_states` + * :c:data:`potential_sr_c_alpha_ao_lda` + * :c:data:`potential_sr_x_alpha_ao_lda` + * :c:data:`potential_sr_x_alpha_ao_pbe` + * :c:data:`potential_x_alpha_ao_lda` + * :c:data:`potential_x_alpha_ao_pbe` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_potential_alpha_xc` + * :c:data:`potential_x_alpha_mo` + + +.. c:var:: potential_x_beta_ao_lda + + + File : :file:`dft_utils_one_e/pot_ao.irp.f` + + .. code:: fortran + + double precision, allocatable :: potential_x_alpha_ao_lda (ao_num,ao_num,N_states) + double precision, allocatable :: potential_x_beta_ao_lda (ao_num,ao_num,N_states) + double precision, allocatable :: potential_c_alpha_ao_lda (ao_num,ao_num,N_states) + double precision, allocatable :: potential_c_beta_ao_lda (ao_num,ao_num,N_states) + + + short range exchange/correlation alpha/beta potentials with LDA functional on the AO basis + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`aos_in_r_array` + * :c:data:`aos_vc_alpha_lda_w` + * :c:data:`n_points_final_grid` + * :c:data:`n_states` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`potential_x_alpha_ao` + + +.. c:var:: potential_x_beta_ao_pbe + + + File : :file:`dft_utils_one_e/pot_ao.irp.f` + + .. code:: fortran + + double precision, allocatable :: potential_x_alpha_ao_pbe (ao_num,ao_num,N_states) + double precision, allocatable :: potential_x_beta_ao_pbe (ao_num,ao_num,N_states) + double precision, allocatable :: potential_c_alpha_ao_pbe (ao_num,ao_num,N_states) + double precision, allocatable :: potential_c_beta_ao_pbe (ao_num,ao_num,N_states) + + + exchange/correlation alpha/beta potentials with the short range PBE functional on the AO basis + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`aos_grad_in_r_array` + * :c:data:`aos_in_r_array` + * :c:data:`aos_vc_alpha_pbe_w` + * :c:data:`n_points_final_grid` + * :c:data:`n_states` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`potential_x_alpha_ao` + + +.. c:var:: potential_x_beta_mo + + + File : :file:`dft_utils_one_e/pot_general.irp.f` + + .. code:: fortran + + double precision, allocatable :: potential_x_alpha_mo (mo_num,mo_num,N_states) + double precision, allocatable :: potential_x_beta_mo (mo_num,mo_num,N_states) + double precision, allocatable :: potential_c_alpha_mo (mo_num,mo_num,N_states) + double precision, allocatable :: potential_c_beta_mo (mo_num,mo_num,N_states) + + + general providers for the alpha/beta exchange/correlation potentials on the MO basis + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`mo_coef` + * :c:data:`mo_num` + * :c:data:`n_states` + * :c:data:`potential_x_alpha_ao` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`effective_one_e_potential` + * :c:data:`trace_v_xc` + + +.. c:var:: psi_dft_energy_h_core + + + File : :file:`dft_utils_one_e/one_e_energy_dft.irp.f` + + .. code:: fortran + + double precision, allocatable :: psi_dft_energy_kinetic (N_states) + double precision, allocatable :: psi_dft_energy_nuclear_elec (N_states) + double precision, allocatable :: psi_dft_energy_h_core (N_states) + + + kinetic, electron-nuclear and total h_core energy computed with the density matrix one_e_dm_mo_beta_for_dft+one_e_dm_mo_alpha_for_dft + + 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_num` + * :c:data:`n_states` + * :c:data:`one_e_dm_mo_alpha_for_dft` + * :c:data:`one_e_dm_mo_beta_for_dft` + + + +.. c:var:: psi_dft_energy_kinetic + + + File : :file:`dft_utils_one_e/one_e_energy_dft.irp.f` + + .. code:: fortran + + double precision, allocatable :: psi_dft_energy_kinetic (N_states) + double precision, allocatable :: psi_dft_energy_nuclear_elec (N_states) + double precision, allocatable :: psi_dft_energy_h_core (N_states) + + + kinetic, electron-nuclear and total h_core energy computed with the density matrix one_e_dm_mo_beta_for_dft+one_e_dm_mo_alpha_for_dft + + 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_num` + * :c:data:`n_states` + * :c:data:`one_e_dm_mo_alpha_for_dft` + * :c:data:`one_e_dm_mo_beta_for_dft` + + + +.. c:var:: psi_dft_energy_nuclear_elec + + + File : :file:`dft_utils_one_e/one_e_energy_dft.irp.f` + + .. code:: fortran + + double precision, allocatable :: psi_dft_energy_kinetic (N_states) + double precision, allocatable :: psi_dft_energy_nuclear_elec (N_states) + double precision, allocatable :: psi_dft_energy_h_core (N_states) + + + kinetic, electron-nuclear and total h_core energy computed with the density matrix one_e_dm_mo_beta_for_dft+one_e_dm_mo_alpha_for_dft + + 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_num` + * :c:data:`n_states` + * :c:data:`one_e_dm_mo_alpha_for_dft` + * :c:data:`one_e_dm_mo_beta_for_dft` + + + +.. c:var:: shifting_constant + + + File : :file:`dft_utils_one_e/shifted_potential.irp.f` + + .. code:: fortran + + double precision, allocatable :: shifting_constant (N_states) + + + shifting_constant = (E_{Hxc} - <\Psi | V_{Hxc} | \Psi>) / N_elec + constant to add to the potential in order to obtain the variational energy as + the eigenvalue of the effective long-range Hamiltonian + (see original paper of Levy PRL 113, 113002 (2014), equation (17) ) + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`elec_num` + * :c:data:`energy_x` + * :c:data:`n_states` + * :c:data:`short_range_hartree_operator` + * :c:data:`trace_v_xc` + + + +.. c:var:: short_range_hartree + + + File : :file:`dft_utils_one_e/sr_coulomb.irp.f` + + .. code:: fortran + + double precision, allocatable :: short_range_hartree_operator (mo_num,mo_num,N_states) + double precision, allocatable :: short_range_hartree (N_states) + + + short_range_Hartree_operator(i,j) = :math:`\int dr i(r)j(r) \int r' \rho(r') W_{ee}^{sr}` + + short_range_Hartree = :math:`1/2 \sum_{i,j} \rho_{ij} \mathtt{short_range_Hartree_operator}(i,j)` + + = :math:`1/2 \int dr \int r' \rho(r) \rho(r') W_{ee}^{sr}` + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_integrals_erf_map` + * :c:data:`mo_integrals_map` + * :c:data:`mo_num` + * :c:data:`mo_two_e_integrals_erf_in_map` + * :c:data:`mo_two_e_integrals_in_map` + * :c:data:`n_states` + * :c:data:`one_e_dm_average_mo_for_dft` + * :c:data:`one_e_dm_mo_for_dft` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`effective_one_e_potential` + * :c:data:`shifting_constant` + * :c:data:`trace_v_xc` + + +.. c:var:: short_range_hartree_operator + + + File : :file:`dft_utils_one_e/sr_coulomb.irp.f` + + .. code:: fortran + + double precision, allocatable :: short_range_hartree_operator (mo_num,mo_num,N_states) + double precision, allocatable :: short_range_hartree (N_states) + + + short_range_Hartree_operator(i,j) = :math:`\int dr i(r)j(r) \int r' \rho(r') W_{ee}^{sr}` + + short_range_Hartree = :math:`1/2 \sum_{i,j} \rho_{ij} \mathtt{short_range_Hartree_operator}(i,j)` + + = :math:`1/2 \int dr \int r' \rho(r) \rho(r') W_{ee}^{sr}` + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_integrals_erf_map` + * :c:data:`mo_integrals_map` + * :c:data:`mo_num` + * :c:data:`mo_two_e_integrals_erf_in_map` + * :c:data:`mo_two_e_integrals_in_map` + * :c:data:`n_states` + * :c:data:`one_e_dm_average_mo_for_dft` + * :c:data:`one_e_dm_mo_for_dft` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`effective_one_e_potential` + * :c:data:`shifting_constant` + * :c:data:`trace_v_xc` + + +.. c:var:: trace_v_h + + + File : :file:`dft_utils_one_e/pot_general.irp.f` + + .. code:: fortran + + double precision, allocatable :: trace_v_xc (N_states) + double precision, allocatable :: trace_v_h (N_states) + double precision, allocatable :: trace_v_hxc (N_states) + + + Trace_v_xc = \sum_{i,j} (rho_{ij}_\alpha v^{xc}_{ij}^\alpha + rho_{ij}_\beta v^{xc}_{ij}^\beta) + Trace_v_Hxc = \sum_{i,j} v^{H}_{ij} (rho_{ij}_\alpha + rho_{ij}_\beta) + Trace_v_Hxc = \sum_{i,j} rho_{ij} v^{Hxc}_{ij} + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_num` + * :c:data:`n_states` + * :c:data:`one_e_dm_mo_alpha_for_dft` + * :c:data:`one_e_dm_mo_beta_for_dft` + * :c:data:`potential_x_alpha_mo` + * :c:data:`short_range_hartree_operator` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`shifting_constant` + + +.. c:var:: trace_v_hxc + + + File : :file:`dft_utils_one_e/pot_general.irp.f` + + .. code:: fortran + + double precision, allocatable :: trace_v_xc (N_states) + double precision, allocatable :: trace_v_h (N_states) + double precision, allocatable :: trace_v_hxc (N_states) + + + Trace_v_xc = \sum_{i,j} (rho_{ij}_\alpha v^{xc}_{ij}^\alpha + rho_{ij}_\beta v^{xc}_{ij}^\beta) + Trace_v_Hxc = \sum_{i,j} v^{H}_{ij} (rho_{ij}_\alpha + rho_{ij}_\beta) + Trace_v_Hxc = \sum_{i,j} rho_{ij} v^{Hxc}_{ij} + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_num` + * :c:data:`n_states` + * :c:data:`one_e_dm_mo_alpha_for_dft` + * :c:data:`one_e_dm_mo_beta_for_dft` + * :c:data:`potential_x_alpha_mo` + * :c:data:`short_range_hartree_operator` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`shifting_constant` + + +.. c:var:: trace_v_xc + + + File : :file:`dft_utils_one_e/pot_general.irp.f` + + .. code:: fortran + + double precision, allocatable :: trace_v_xc (N_states) + double precision, allocatable :: trace_v_h (N_states) + double precision, allocatable :: trace_v_hxc (N_states) + + + Trace_v_xc = \sum_{i,j} (rho_{ij}_\alpha v^{xc}_{ij}^\alpha + rho_{ij}_\beta v^{xc}_{ij}^\beta) + Trace_v_Hxc = \sum_{i,j} v^{H}_{ij} (rho_{ij}_\alpha + rho_{ij}_\beta) + Trace_v_Hxc = \sum_{i,j} rho_{ij} v^{Hxc}_{ij} + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_num` + * :c:data:`n_states` + * :c:data:`one_e_dm_mo_alpha_for_dft` + * :c:data:`one_e_dm_mo_beta_for_dft` + * :c:data:`potential_x_alpha_mo` + * :c:data:`short_range_hartree_operator` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`shifting_constant` + + + +Subroutines / functions +----------------------- + +.. c:function:: berf: + + + File : :file:`dft_utils_one_e/exc_sr_lda.irp.f` + + .. code:: fortran + + function berf(a) + + + + +.. c:function:: dberfda: + + + File : :file:`dft_utils_one_e/exc_sr_lda.irp.f` + + .. code:: fortran + + function dberfda(a) + + + + +.. c:function:: dpol: + + + File : :file:`dft_utils_one_e/exc_sr_lda.irp.f` + + .. code:: fortran + + double precision function dpol(rs) + + + + +.. c:function:: dpold: + + + File : :file:`dft_utils_one_e/exc_sr_lda.irp.f` + + .. code:: fortran + + double precision function dpold(rs) + + + + +.. c:function:: dpoldd: + + + File : :file:`dft_utils_one_e/exc_sr_lda.irp.f` + + .. code:: fortran + + double precision function dpoldd(rs) + + + + +.. c:function:: ec_lda: + + + File : :file:`dft_utils_one_e/exc_sr_lda.irp.f` + + .. code:: fortran + + subroutine ec_lda(rho_a,rho_b,ec,vc_a,vc_b) + + + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`ec_pbe_only` + * :c:func:`ec_pbe_sr` + * :c:data:`energy_x_lda` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`ecpw` + + +.. c:function:: ec_lda_sr: + + + File : :file:`dft_utils_one_e/exc_sr_lda.irp.f` + + .. code:: fortran + + subroutine ec_lda_sr(mu,rho_a,rho_b,ec,vc_a,vc_b) + + + + Called by: + + .. hlist:: + :columns: 3 + + * :c:data:`aos_sr_vc_alpha_lda_w` + * :c:data:`aos_vc_alpha_lda_w` + * :c:func:`ec_pbe_only` + * :c:func:`ec_pbe_sr` + * :c:data:`energy_sr_x_lda` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`ecorrlr` + * :c:func:`ecpw` + * :c:func:`vcorrlr` + + +.. c:function:: ec_only_lda_sr: + + + File : :file:`dft_utils_one_e/exc_sr_lda.irp.f` + + .. code:: fortran + + subroutine ec_only_lda_sr(mu,rho_a,rho_b,ec) + + + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`ecorrlr` + * :c:func:`ecpw` + + +.. c:function:: ec_pbe_only: + + + File : :file:`dft_utils_one_e/exc_sr_pbe.irp.f` + + .. code:: fortran + + subroutine ec_pbe_only(mu,rhoc,rhoo,sigmacc,sigmaco,sigmaoo,ec) + + + Short-range PBE correlation energy functional for erf interaction + + input : ========== + + mu = range separated parameter + + rhoc, rhoo = total density and spin density + + sigmacc = square of the gradient of the total density + + sigmaco = square of the gradient of the spin density + + sigmaoo = scalar product between the gradient of the total density and the one of the spin density + + output: ========== + + ec = correlation energy + + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`ec_lda` + * :c:func:`ec_lda_sr` + + +.. c:function:: ec_pbe_sr: + + + File : :file:`dft_utils_one_e/exc_sr_pbe.irp.f` + + .. code:: fortran + + subroutine ec_pbe_sr(mu,rhoc,rhoo,sigmacc,sigmaco,sigmaoo,ec,vrhoc,vrhoo,vsigmacc,vsigmaco,vsigmaoo) + + + Short-range PBE correlation energy functional for erf interaction + + input : ========== + + mu = range separated parameter + + rhoc, rhoo = total density and spin density + + sigmacc = square of the gradient of the total density + + sigmaco = square of the gradient of the spin density + + sigmaoo = scalar product between the gradient of the total density and the one of the spin density + + output: ========== + + ec = correlation energy + + all variables v** are energy derivatives with respect to components of the density + + vrhoc = derivative with respect to the total density + + vrhoo = derivative with respect to spin density + + vsigmacc = derivative with respect to the square of the gradient of the total density + + vsigmaco = derivative with respect to scalar product between the gradients of total and spin densities + + vsigmaoo = derivative with respect to the square of the gradient of the psin density + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`gga_sr_type_functionals` + * :c:func:`gga_type_functionals` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`ec_lda` + * :c:func:`ec_lda_sr` + + +.. c:function:: ecorrlr: + + + File : :file:`dft_utils_one_e/exc_sr_lda.irp.f` + + .. code:: fortran + + subroutine ecorrlr(rs,z,mu,eclr) + + + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`ec_lda_sr` + * :c:func:`ec_only_lda_sr` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`ecpw` + + +.. c:function:: ecpw: + + + File : :file:`dft_utils_one_e/exc_sr_lda.irp.f` + + .. code:: fortran + + subroutine ecPW(x,y,ec,ecd,ecz,ecdd,eczd) + + + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`ec_lda` + * :c:func:`ec_lda_sr` + * :c:func:`ec_only_lda_sr` + * :c:func:`ecorrlr` + * :c:func:`vcorrlr` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`gpw` + + +.. c:function:: ex_lda: + + + File : :file:`dft_utils_one_e/exc_sr_lda.irp.f` + + .. code:: fortran + + subroutine ex_lda(rho_a,rho_b,ex,vx_a,vx_b) + + + + Called by: + + .. hlist:: + :columns: 3 + + * :c:data:`energy_x_lda` + + +.. c:function:: ex_lda_sr: + + + File : :file:`dft_utils_one_e/exc_sr_lda.irp.f` + + .. code:: fortran + + subroutine ex_lda_sr(mu,rho_a,rho_b,ex,vx_a,vx_b) + + + + Called by: + + .. hlist:: + :columns: 3 + + * :c:data:`aos_sr_vc_alpha_lda_w` + * :c:data:`aos_vc_alpha_lda_w` + * :c:data:`energy_sr_x_lda` + * :c:func:`ex_pbe_sr` + * :c:func:`ex_pbe_sr_only` + + +.. c:function:: ex_pbe_sr: + + + File : :file:`dft_utils_one_e/exc_sr_pbe.irp.f` + + .. code:: fortran + + subroutine ex_pbe_sr(mu,rho_a,rho_b,grd_rho_a_2,grd_rho_b_2,grd_rho_a_b,ex,vx_rho_a,vx_rho_b,vx_grd_rho_a_2,vx_grd_rho_b_2,vx_grd_rho_a_b) + + + mu = range separation parameter + rho_a = density alpha + rho_b = density beta + grd_rho_a_2 = (gradient rho_a)^2 + grd_rho_b_2 = (gradient rho_b)^2 + grd_rho_a_b = (gradient rho_a).(gradient rho_b) + ex = exchange energy density at the density and corresponding gradients of the density + vx_rho_a = d ex / d rho_a + vx_rho_b = d ex / d rho_b + vx_grd_rho_a_2 = d ex / d grd_rho_a_2 + vx_grd_rho_b_2 = d ex / d grd_rho_b_2 + vx_grd_rho_a_b = d ex / d grd_rho_a_b + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`gga_sr_type_functionals` + * :c:func:`gga_type_functionals` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`ex_lda_sr` + + +.. c:function:: ex_pbe_sr_only: + + + File : :file:`dft_utils_one_e/exc_sr_pbe.irp.f` + + .. code:: fortran + + subroutine ex_pbe_sr_only(mu,rho_a,rho_b,grd_rho_a_2,grd_rho_b_2,grd_rho_a_b,ex) + + + rho_a = density alpha + rho_b = density beta + grd_rho_a_2 = (gradient rho_a)^2 + grd_rho_b_2 = (gradient rho_b)^2 + grd_rho_a_b = (gradient rho_a).(gradient rho_b) + ex = exchange energy density at point r + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`ex_lda_sr` + + +.. c:function:: g0d: + + + File : :file:`dft_utils_one_e/exc_sr_lda.irp.f` + + .. code:: fortran + + double precision function g0d(rs) + + + + +.. c:function:: g0dd: + + + File : :file:`dft_utils_one_e/exc_sr_lda.irp.f` + + .. code:: fortran + + double precision function g0dd(rs) + + + + +.. c:function:: g0f: + + + File : :file:`dft_utils_one_e/exc_sr_lda.irp.f` + + .. code:: fortran + + double precision function g0f(x) + + + + +.. c:function:: gpw: + + + File : :file:`dft_utils_one_e/exc_sr_lda.irp.f` + + .. code:: fortran + + subroutine GPW(x,Ac,alfa1,beta1,beta2,beta3,beta4,G,Gd,Gdd) + + + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`ecpw` + + +.. c:function:: grad_rho_ab_to_grad_rho_oc: + + + File : :file:`dft_utils_one_e/rho_ab_to_rho_tot.irp.f` + + .. code:: fortran + + subroutine grad_rho_ab_to_grad_rho_oc(grad_rho_a_2,grad_rho_b_2,grad_rho_a_b,grad_rho_o_2,grad_rho_c_2,grad_rho_o_c) + + + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`gga_sr_type_functionals` + * :c:func:`gga_type_functionals` + + +.. c:function:: qrpa: + + + File : :file:`dft_utils_one_e/exc_sr_lda.irp.f` + + .. code:: fortran + + double precision function Qrpa(x) + + + + +.. c:function:: qrpad: + + + File : :file:`dft_utils_one_e/exc_sr_lda.irp.f` + + .. code:: fortran + + double precision function Qrpad(x) + + + + +.. c:function:: qrpadd: + + + File : :file:`dft_utils_one_e/exc_sr_lda.irp.f` + + .. code:: fortran + + double precision function Qrpadd(x) + + + + +.. c:function:: rho_ab_to_rho_oc: + + + File : :file:`dft_utils_one_e/rho_ab_to_rho_tot.irp.f` + + .. code:: fortran + + subroutine rho_ab_to_rho_oc(rho_a,rho_b,rho_o,rho_c) + + + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`gga_sr_type_functionals` + * :c:func:`gga_type_functionals` + + +.. c:function:: rho_oc_to_rho_ab: + + + File : :file:`dft_utils_one_e/rho_ab_to_rho_tot.irp.f` + + .. code:: fortran + + subroutine rho_oc_to_rho_ab(rho_o,rho_c,rho_a,rho_b) + + + + +.. c:function:: v_grad_rho_oc_to_v_grad_rho_ab: + + + File : :file:`dft_utils_one_e/rho_ab_to_rho_tot.irp.f` + + .. code:: fortran + + subroutine v_grad_rho_oc_to_v_grad_rho_ab(v_grad_rho_o_2,v_grad_rho_c_2,v_grad_rho_o_c,v_grad_rho_a_2,v_grad_rho_b_2,v_grad_rho_a_b) + + + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`gga_sr_type_functionals` + * :c:func:`gga_type_functionals` + + +.. c:function:: v_rho_ab_to_v_rho_oc: + + + File : :file:`dft_utils_one_e/rho_ab_to_rho_tot.irp.f` + + .. code:: fortran + + subroutine v_rho_ab_to_v_rho_oc(v_rho_a,v_rho_b,v_rho_o,v_rho_c) + + + + +.. c:function:: v_rho_oc_to_v_rho_ab: + + + File : :file:`dft_utils_one_e/rho_ab_to_rho_tot.irp.f` + + .. code:: fortran + + subroutine v_rho_oc_to_v_rho_ab(v_rho_o,v_rho_c,v_rho_a,v_rho_b) + + + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`gga_sr_type_functionals` + * :c:func:`gga_type_functionals` + + +.. c:function:: vcorrlr: + + + File : :file:`dft_utils_one_e/exc_sr_lda.irp.f` + + .. code:: fortran + + subroutine vcorrlr(rs,z,mu,vclrup,vclrdown,vclrupd,vclrdownd) + + + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`ec_lda_sr` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`ecpw` + diff --git a/docs/source/modules/dressing.rst b/docs/source/modules/dressing.rst new file mode 100644 index 00000000..17695be4 --- /dev/null +++ b/docs/source/modules/dressing.rst @@ -0,0 +1,36 @@ +.. _module_dressing: + +.. program:: dressing + +.. default-role:: option + +========= +dress_zmq +========= + +Module to facilitate the construction of modules using dressed +Hamiltonians, parallelized with |ZeroMQ|. + + + + +EZFIO parameters +---------------- + +.. option:: thresh_dressed_ci + + Threshold on the convergence of the dressed |CI| energy + + Default: 1.e-5 + +.. option:: n_it_max_dressed_ci + + Maximum number of dressed |CI| iterations + + Default: 10 + +.. option:: dress_relative_error + + Stop stochastic dressing when the relative error is smaller than :option:`perturbation PT2_relative_error` + + Default: 0.001 diff --git a/docs/source/modules/electrons.rst b/docs/source/modules/electrons.rst new file mode 100644 index 00000000..17fc993f --- /dev/null +++ b/docs/source/modules/electrons.rst @@ -0,0 +1,114 @@ +.. _module_electrons: + +.. program:: electrons + +.. default-role:: option + +========= +electrons +========= + +Describes the electrons. For the moment, only the number of alpha +and beta electrons are provided by this module. + + +Assumptions +=========== + +* `elec_num` >= 0 +* `elec_alpha_num` >= 0 +* `elec_beta_num` >= 0 +* `elec_alpha_num` >= `elec_beta_num` + + + + + +EZFIO parameters +---------------- + +.. option:: elec_alpha_num + + Numbers of electrons alpha ("up") + + +.. option:: elec_beta_num + + Numbers of electrons beta ("down") + + +.. option:: elec_num + + Numbers total of electrons (alpha + beta) + + Default: = electrons.elec_alpha_num + electrons.elec_beta_num + + +Providers +--------- + +.. c:var:: elec_num + + + File : :file:`electrons/electrons.irp.f` + + .. code:: fortran + + integer :: elec_num + integer, allocatable :: elec_num_tab (2) + + + Numbers of alpha ("up") , beta ("down") and total electrons + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`elec_alpha_num` + * :c:data:`elec_beta_num` + * :c:data:`ezfio_filename` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`diagonal_h_matrix_on_psi_det` + * :c:data:`psi_det_hii` + * :c:data:`psi_selectors_diag_h_mat` + * :c:data:`pt2_f` + + +.. c:var:: elec_num_tab + + + File : :file:`electrons/electrons.irp.f` + + .. code:: fortran + + integer :: elec_num + integer, allocatable :: elec_num_tab (2) + + + Numbers of alpha ("up") , beta ("down") and total electrons + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`elec_alpha_num` + * :c:data:`elec_beta_num` + * :c:data:`ezfio_filename` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`diagonal_h_matrix_on_psi_det` + * :c:data:`psi_det_hii` + * :c:data:`psi_selectors_diag_h_mat` + * :c:data:`pt2_f` + diff --git a/docs/source/modules/ezfio_files.rst b/docs/source/modules/ezfio_files.rst new file mode 100644 index 00000000..18cae0b6 --- /dev/null +++ b/docs/source/modules/ezfio_files.rst @@ -0,0 +1,760 @@ +.. _module_ezfio_files: + +.. program:: ezfio_files + +.. default-role:: option + +=========== +ezfio_files +=========== + +This modules essentially contains the name of the |EZFIO| directory in the +:c:data:`ezfio_filename` variable. This is read as the first argument of the +command-line, or as the :envvar:`QP_INPUT` environment variable. + + + + +Providers +--------- + +.. c:var:: ezfio_filename + + + File : :file:`ezfio_files/ezfio.irp.f` + + .. code:: fortran + + character*(128) :: ezfio_filename + + + Name of EZFIO file. It is obtained from the QPACKAGE_INPUT environment + variable if it is set, or as the 1st argument of the command line. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mpi_initialized` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_cartesian` + * :c:data:`ao_coef` + * :c:data:`ao_expo` + * :c:data:`ao_integrals_threshold` + * :c:data:`ao_md5` + * :c:data:`ao_nucl` + * :c:data:`ao_num` + * :c:data:`ao_power` + * :c:data:`ao_prim_num` + * :c:data:`ao_two_e_integrals_erf_in_map` + * :c:data:`ao_two_e_integrals_in_map` + * :c:data:`cas_bitmask` + * :c:data:`correlation_energy_ratio_max` + * :c:data:`data_energy_proj` + * :c:data:`data_energy_var` + * :c:data:`data_one_e_dm_alpha_mo` + * :c:data:`data_one_e_dm_beta_mo` + * :c:data:`davidson_sze_max` + * :c:data:`disk_access_nuclear_repulsion` + * :c:data:`disk_based_davidson` + * :c:data:`distributed_davidson` + * :c:data:`do_direct_integrals` + * :c:data:`do_pseudo` + * :c:data:`do_pt2` + * :c:data:`elec_alpha_num` + * :c:data:`elec_beta_num` + * :c:data:`elec_num` + * :c:data:`energy_iterations` + * :c:data:`ezfio_work_dir` + * :c:data:`frozen_orb_scf` + * :c:data:`generators_bitmask` + * :c:data:`generators_bitmask_restart` + * :c:data:`io_ao_integrals_e_n` + * :c:data:`io_ao_integrals_kinetic` + * :c:data:`io_ao_integrals_overlap` + * :c:data:`io_ao_integrals_pseudo` + * :c:data:`io_ao_one_e_integrals` + * :c:data:`io_ao_two_e_integrals` + * :c:data:`io_ao_two_e_integrals_erf` + * :c:data:`io_mo_integrals_e_n` + * :c:data:`io_mo_integrals_kinetic` + * :c:data:`io_mo_integrals_pseudo` + * :c:data:`io_mo_one_e_integrals` + * :c:data:`io_mo_two_e_integrals` + * :c:data:`io_mo_two_e_integrals_erf` + * :c:data:`level_shift` + * :c:data:`max_dim_diis` + * :c:data:`mo_class` + * :c:data:`mo_coef` + * :c:data:`mo_guess_type` + * :c:data:`mo_integrals_threshold` + * :c:data:`mo_label` + * :c:data:`mo_num` + * :c:data:`mo_occ` + * :c:data:`mo_two_e_integrals_erf_in_map` + * :c:data:`mo_two_e_integrals_in_map` + * :c:data:`mu_erf` + * :c:data:`n_cas_bitmask` + * :c:data:`n_det` + * :c:data:`n_det_iterations` + * :c:data:`n_det_max` + * :c:data:`n_det_max_full` + * :c:data:`n_det_print_wf` + * :c:data:`n_generators_bitmask` + * :c:data:`n_generators_bitmask_restart` + * :c:data:`n_it_scf_max` + * :c:data:`n_iter` + * :c:data:`n_states` + * :c:data:`n_states_diag` + * :c:data:`no_ivvv_integrals` + * :c:data:`no_vvv_integrals` + * :c:data:`no_vvvv_integrals` + * :c:data:`nucl_charge` + * :c:data:`nucl_charge_remove` + * :c:data:`nucl_coord` + * :c:data:`nucl_label` + * :c:data:`nucl_num` + * :c:data:`only_expected_s2` + * :c:data:`pseudo_dz_k` + * :c:data:`pseudo_dz_kl` + * :c:data:`pseudo_grid_rmax` + * :c:data:`pseudo_grid_size` + * :c:data:`pseudo_klocmax` + * :c:data:`pseudo_kmax` + * :c:data:`pseudo_lmax` + * :c:data:`pseudo_n_k` + * :c:data:`pseudo_n_kl` + * :c:data:`pseudo_v_k` + * :c:data:`pseudo_v_kl` + * :c:data:`psi_coef` + * :c:data:`psi_det` + * :c:data:`psi_det_size` + * :c:data:`pt2_iterations` + * :c:data:`pt2_max` + * :c:data:`pt2_relative_error` + * :c:data:`qp_stop_filename` + * :c:data:`read_wf` + * :c:data:`s2_eig` + * :c:data:`scf_algorithm` + * :c:data:`state_following` + * :c:data:`target_energy` + * :c:data:`thresh_scf` + * :c:data:`threshold_davidson` + * :c:data:`threshold_diis` + * :c:data:`threshold_generators` + * :c:data:`used_weight` + + +.. c:var:: ezfio_work_dir + + + File : :file:`ezfio_files/ezfio.irp.f` + + .. code:: fortran + + character*(128) :: ezfio_work_dir + + + EZFIO/work/ + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ezfio_filename` + + + +.. c:var:: file_lock + + + File : :file:`ezfio_files/lock.irp.f` + + .. code:: fortran + + integer(omp_lock_kind) :: file_lock + + + OpenMP Lock for I/O + + + +.. c:var:: output_cpu_time_0 + + + File : :file:`ezfio_files/output.irp.f` + + .. code:: fortran + + double precision :: output_wall_time_0 + double precision :: output_cpu_time_0 + + + Initial CPU and wall times when printing in the output files + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_cartesian` + * :c:data:`ao_coef` + * :c:data:`ao_expo` + * :c:data:`ao_integrals_threshold` + * :c:data:`ao_md5` + * :c:data:`ao_nucl` + * :c:data:`ao_num` + * :c:data:`ao_power` + * :c:data:`ao_prim_num` + * :c:data:`ci_energy` + * :c:data:`correlation_energy_ratio_max` + * :c:data:`data_energy_proj` + * :c:data:`data_energy_var` + * :c:data:`data_one_e_dm_alpha_mo` + * :c:data:`data_one_e_dm_beta_mo` + * :c:data:`davidson_sze_max` + * :c:data:`disk_access_nuclear_repulsion` + * :c:data:`disk_based_davidson` + * :c:data:`distributed_davidson` + * :c:data:`do_direct_integrals` + * :c:data:`do_pseudo` + * :c:data:`do_pt2` + * :c:data:`elec_alpha_num` + * :c:data:`elec_beta_num` + * :c:data:`energy_iterations` + * :c:data:`frozen_orb_scf` + * :c:data:`io_ao_integrals_e_n` + * :c:data:`io_ao_integrals_kinetic` + * :c:data:`io_ao_integrals_overlap` + * :c:data:`io_ao_integrals_pseudo` + * :c:data:`io_ao_one_e_integrals` + * :c:data:`io_ao_two_e_integrals` + * :c:data:`io_ao_two_e_integrals_erf` + * :c:data:`io_mo_integrals_e_n` + * :c:data:`io_mo_integrals_kinetic` + * :c:data:`io_mo_integrals_pseudo` + * :c:data:`io_mo_one_e_integrals` + * :c:data:`io_mo_two_e_integrals` + * :c:data:`io_mo_two_e_integrals_erf` + * :c:data:`level_shift` + * :c:data:`max_dim_diis` + * :c:data:`mo_class` + * :c:data:`mo_guess_type` + * :c:data:`mo_integrals_threshold` + * :c:data:`mu_erf` + * :c:data:`n_det_generators` + * :c:data:`n_det_iterations` + * :c:data:`n_det_max` + * :c:data:`n_det_max_full` + * :c:data:`n_det_print_wf` + * :c:data:`n_det_selectors` + * :c:data:`n_it_scf_max` + * :c:data:`n_iter` + * :c:data:`n_states` + * :c:data:`n_states_diag` + * :c:data:`no_ivvv_integrals` + * :c:data:`no_vvv_integrals` + * :c:data:`no_vvvv_integrals` + * :c:data:`nucl_charge` + * :c:data:`nucl_charge_remove` + * :c:data:`nucl_coord` + * :c:data:`nucl_label` + * :c:data:`nucl_num` + * :c:data:`nuclear_repulsion` + * :c:data:`only_expected_s2` + * :c:data:`pseudo_dz_k` + * :c:data:`pseudo_dz_kl` + * :c:data:`pseudo_grid_rmax` + * :c:data:`pseudo_grid_size` + * :c:data:`pseudo_klocmax` + * :c:data:`pseudo_kmax` + * :c:data:`pseudo_lmax` + * :c:data:`pseudo_n_k` + * :c:data:`pseudo_n_kl` + * :c:data:`pseudo_v_k` + * :c:data:`pseudo_v_kl` + * :c:data:`pt2_iterations` + * :c:data:`pt2_max` + * :c:data:`pt2_relative_error` + * :c:data:`read_wf` + * :c:data:`s2_eig` + * :c:data:`scf_algorithm` + * :c:data:`state_following` + * :c:data:`target_energy` + * :c:data:`thresh_scf` + * :c:data:`threshold_davidson` + * :c:data:`threshold_diis` + * :c:data:`threshold_generators` + * :c:data:`used_weight` + + +.. c:var:: output_wall_time_0 + + + File : :file:`ezfio_files/output.irp.f` + + .. code:: fortran + + double precision :: output_wall_time_0 + double precision :: output_cpu_time_0 + + + Initial CPU and wall times when printing in the output files + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_cartesian` + * :c:data:`ao_coef` + * :c:data:`ao_expo` + * :c:data:`ao_integrals_threshold` + * :c:data:`ao_md5` + * :c:data:`ao_nucl` + * :c:data:`ao_num` + * :c:data:`ao_power` + * :c:data:`ao_prim_num` + * :c:data:`ci_energy` + * :c:data:`correlation_energy_ratio_max` + * :c:data:`data_energy_proj` + * :c:data:`data_energy_var` + * :c:data:`data_one_e_dm_alpha_mo` + * :c:data:`data_one_e_dm_beta_mo` + * :c:data:`davidson_sze_max` + * :c:data:`disk_access_nuclear_repulsion` + * :c:data:`disk_based_davidson` + * :c:data:`distributed_davidson` + * :c:data:`do_direct_integrals` + * :c:data:`do_pseudo` + * :c:data:`do_pt2` + * :c:data:`elec_alpha_num` + * :c:data:`elec_beta_num` + * :c:data:`energy_iterations` + * :c:data:`frozen_orb_scf` + * :c:data:`io_ao_integrals_e_n` + * :c:data:`io_ao_integrals_kinetic` + * :c:data:`io_ao_integrals_overlap` + * :c:data:`io_ao_integrals_pseudo` + * :c:data:`io_ao_one_e_integrals` + * :c:data:`io_ao_two_e_integrals` + * :c:data:`io_ao_two_e_integrals_erf` + * :c:data:`io_mo_integrals_e_n` + * :c:data:`io_mo_integrals_kinetic` + * :c:data:`io_mo_integrals_pseudo` + * :c:data:`io_mo_one_e_integrals` + * :c:data:`io_mo_two_e_integrals` + * :c:data:`io_mo_two_e_integrals_erf` + * :c:data:`level_shift` + * :c:data:`max_dim_diis` + * :c:data:`mo_class` + * :c:data:`mo_guess_type` + * :c:data:`mo_integrals_threshold` + * :c:data:`mu_erf` + * :c:data:`n_det_generators` + * :c:data:`n_det_iterations` + * :c:data:`n_det_max` + * :c:data:`n_det_max_full` + * :c:data:`n_det_print_wf` + * :c:data:`n_det_selectors` + * :c:data:`n_it_scf_max` + * :c:data:`n_iter` + * :c:data:`n_states` + * :c:data:`n_states_diag` + * :c:data:`no_ivvv_integrals` + * :c:data:`no_vvv_integrals` + * :c:data:`no_vvvv_integrals` + * :c:data:`nucl_charge` + * :c:data:`nucl_charge_remove` + * :c:data:`nucl_coord` + * :c:data:`nucl_label` + * :c:data:`nucl_num` + * :c:data:`nuclear_repulsion` + * :c:data:`only_expected_s2` + * :c:data:`pseudo_dz_k` + * :c:data:`pseudo_dz_kl` + * :c:data:`pseudo_grid_rmax` + * :c:data:`pseudo_grid_size` + * :c:data:`pseudo_klocmax` + * :c:data:`pseudo_kmax` + * :c:data:`pseudo_lmax` + * :c:data:`pseudo_n_k` + * :c:data:`pseudo_n_kl` + * :c:data:`pseudo_v_k` + * :c:data:`pseudo_v_kl` + * :c:data:`pt2_iterations` + * :c:data:`pt2_max` + * :c:data:`pt2_relative_error` + * :c:data:`read_wf` + * :c:data:`s2_eig` + * :c:data:`scf_algorithm` + * :c:data:`state_following` + * :c:data:`target_energy` + * :c:data:`thresh_scf` + * :c:data:`threshold_davidson` + * :c:data:`threshold_diis` + * :c:data:`threshold_generators` + * :c:data:`used_weight` + + +.. c:var:: qp_kill_filename + + + File : :file:`ezfio_files/qp_stop.irp.f` + + .. code:: fortran + + character*(128) :: qp_stop_filename + character*(128) :: qp_kill_filename + integer :: qp_stop_variable + + + Name of the file to check for qp stop + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ezfio_filename` + + + +.. c:var:: qp_stop_filename + + + File : :file:`ezfio_files/qp_stop.irp.f` + + .. code:: fortran + + character*(128) :: qp_stop_filename + character*(128) :: qp_kill_filename + integer :: qp_stop_variable + + + Name of the file to check for qp stop + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ezfio_filename` + + + +.. c:var:: qp_stop_variable + + + File : :file:`ezfio_files/qp_stop.irp.f` + + .. code:: fortran + + character*(128) :: qp_stop_filename + character*(128) :: qp_kill_filename + integer :: qp_stop_variable + + + Name of the file to check for qp stop + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ezfio_filename` + + + + +Subroutines / functions +----------------------- + +.. c:function:: getunitandopen: + + + File : :file:`ezfio_files/get_unit_and_open.irp.f` + + .. code:: fortran + + integer function getUnitAndOpen(f,mode) + + + :f: + file name + + :mode: + 'R' : READ, UNFORMATTED + 'W' : WRITE, UNFORMATTED + 'r' : READ, FORMATTED + 'w' : WRITE, FORMATTED + 'a' : APPEND, FORMATTED + 'x' : READ/WRITE, FORMATTED + + + +.. c:function:: qp_stop: + + + File : :file:`ezfio_files/qp_stop.irp.f` + + .. code:: fortran + + logical function qp_stop() + + + Checks if the qp_stop command was invoked for the clean termination of the program + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`qp_stop_filename` + + +.. c:function:: write_bool: + + + File : :file:`ezfio_files/output.irp.f` + + .. code:: fortran + + subroutine write_bool(iunit,value,label) + + + Write an logical value in output + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mpi_master` + + +.. c:function:: write_double: + + + File : :file:`ezfio_files/output.irp.f` + + .. code:: fortran + + subroutine write_double(iunit,value,label) + + + Write a double precision value in output + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mpi_master` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:data:`ci_energy` + * :c:func:`damping_scf` + * :c:func:`davidson_diag_hjj_sjj` + * :c:data:`nuclear_repulsion` + * :c:data:`psi_coef_max` + * :c:data:`pt2_e0_denominator` + * :c:func:`roothaan_hall_scf` + * :c:func:`run_cipsi` + * :c:func:`run_slave_main` + * :c:func:`run_stochastic_cipsi` + * :c:func:`zmq_pt2` + * :c:func:`zmq_selection` + + +.. c:function:: write_int: + + + File : :file:`ezfio_files/output.irp.f` + + .. code:: fortran + + subroutine write_int(iunit,value,label) + + + Write an integer value in output + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mpi_master` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`davidson_diag_hjj_sjj` + * :c:func:`make_s2_eigenfunction` + * :c:data:`mo_num` + * :c:data:`n_cas_bitmask` + * :c:data:`n_core_orb` + * :c:data:`n_det` + * :c:data:`n_det_generators` + * :c:data:`n_det_selectors` + * :c:data:`n_generators_bitmask` + * :c:data:`n_generators_bitmask_restart` + * :c:data:`n_int` + * :c:data:`nthreads_davidson` + * :c:data:`nthreads_pt2` + * :c:data:`psi_cas` + * :c:data:`psi_det_alpha_unique` + * :c:data:`psi_det_beta_unique` + * :c:data:`psi_det_size` + * :c:data:`pt2_n_teeth` + * :c:data:`qp_max_mem` + * :c:func:`remove_small_contributions` + * :c:func:`save_wavefunction_general` + * :c:func:`save_wavefunction_specified` + * :c:func:`zmq_pt2` + + +.. c:function:: write_time: + + + File : :file:`ezfio_files/output.irp.f` + + .. code:: fortran + + subroutine write_time(iunit) + + + Write a time stamp in the output for chronological reconstruction + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`output_wall_time_0` + * :c:data:`mpi_master` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_cartesian` + * :c:data:`ao_coef` + * :c:data:`ao_expo` + * :c:data:`ao_integrals_threshold` + * :c:data:`ao_md5` + * :c:data:`ao_nucl` + * :c:data:`ao_num` + * :c:data:`ao_power` + * :c:data:`ao_prim_num` + * :c:data:`ci_energy` + * :c:data:`correlation_energy_ratio_max` + * :c:func:`damping_scf` + * :c:data:`data_energy_proj` + * :c:data:`data_energy_var` + * :c:data:`data_one_e_dm_alpha_mo` + * :c:data:`data_one_e_dm_beta_mo` + * :c:func:`davidson_diag_hjj_sjj` + * :c:data:`davidson_sze_max` + * :c:data:`disk_access_nuclear_repulsion` + * :c:data:`disk_based_davidson` + * :c:data:`distributed_davidson` + * :c:data:`do_direct_integrals` + * :c:data:`do_pseudo` + * :c:data:`do_pt2` + * :c:data:`elec_alpha_num` + * :c:data:`elec_beta_num` + * :c:data:`energy_iterations` + * :c:data:`frozen_orb_scf` + * :c:data:`io_ao_integrals_e_n` + * :c:data:`io_ao_integrals_kinetic` + * :c:data:`io_ao_integrals_overlap` + * :c:data:`io_ao_integrals_pseudo` + * :c:data:`io_ao_one_e_integrals` + * :c:data:`io_ao_two_e_integrals` + * :c:data:`io_ao_two_e_integrals_erf` + * :c:data:`io_mo_integrals_e_n` + * :c:data:`io_mo_integrals_kinetic` + * :c:data:`io_mo_integrals_pseudo` + * :c:data:`io_mo_one_e_integrals` + * :c:data:`io_mo_two_e_integrals` + * :c:data:`io_mo_two_e_integrals_erf` + * :c:data:`level_shift` + * :c:func:`make_s2_eigenfunction` + * :c:data:`max_dim_diis` + * :c:func:`mo_as_eigvectors_of_mo_matrix` + * :c:func:`mo_as_svd_vectors_of_mo_matrix` + * :c:func:`mo_as_svd_vectors_of_mo_matrix_eig` + * :c:data:`mo_class` + * :c:data:`mo_guess_type` + * :c:data:`mo_integrals_threshold` + * :c:data:`mu_erf` + * :c:data:`n_det_generators` + * :c:data:`n_det_iterations` + * :c:data:`n_det_max` + * :c:data:`n_det_max_full` + * :c:data:`n_det_print_wf` + * :c:data:`n_det_selectors` + * :c:data:`n_it_scf_max` + * :c:data:`n_iter` + * :c:data:`n_states` + * :c:data:`n_states_diag` + * :c:data:`no_ivvv_integrals` + * :c:data:`no_vvv_integrals` + * :c:data:`no_vvvv_integrals` + * :c:data:`nucl_charge` + * :c:data:`nucl_charge_remove` + * :c:data:`nucl_coord` + * :c:data:`nucl_label` + * :c:data:`nucl_num` + * :c:data:`nuclear_repulsion` + * :c:data:`only_expected_s2` + * :c:data:`pseudo_dz_k` + * :c:data:`pseudo_dz_kl` + * :c:data:`pseudo_grid_rmax` + * :c:data:`pseudo_grid_size` + * :c:data:`pseudo_klocmax` + * :c:data:`pseudo_kmax` + * :c:data:`pseudo_lmax` + * :c:data:`pseudo_n_k` + * :c:data:`pseudo_n_kl` + * :c:data:`pseudo_v_k` + * :c:data:`pseudo_v_kl` + * :c:data:`pt2_iterations` + * :c:data:`pt2_max` + * :c:data:`pt2_relative_error` + * :c:data:`read_wf` + * :c:func:`roothaan_hall_scf` + * :c:data:`s2_eig` + * :c:data:`scf_algorithm` + * :c:data:`state_following` + * :c:data:`target_energy` + * :c:data:`thresh_scf` + * :c:data:`threshold_davidson` + * :c:data:`threshold_diis` + * :c:data:`threshold_generators` + * :c:data:`used_weight` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`cpu_time` + * :c:func:`print_memory_usage` + * :c:func:`wall_time` + diff --git a/docs/source/modules/fci.rst b/docs/source/modules/fci.rst new file mode 100644 index 00000000..2d2bb639 --- /dev/null +++ b/docs/source/modules/fci.rst @@ -0,0 +1,160 @@ +.. _module_fci: + +.. program:: fci + +.. default-role:: option + +=== +fci +=== + + +|CIPSI| algorithm in the full configuration interaction space. + + +The user point of view +---------------------- + +* :ref:`fci` performs |CIPSI| calculations using a stochastic scheme for both + the selection and the |PT2| contribution, + +* :ref:`pt2` computes the |PT2| contribution using the wave function stored in + the |EZFIO| database. + + +The main keywords/options for this module are: + +* :option:`determinants n_det_max` : maximum number of Slater determinants in + the |CIPSI| wave function. The :ref:`fci` program will stop when the size of + the |CIPSI| wave function will exceed :option:`determinants n_det_max`. + +* :option:`perturbation pt2_max` : absolute value of the |PT2| to stop the + |CIPSI| calculation. Once the abs(|PT2|) :math:`<` :option:`perturbation pt2_max`, + the |CIPSI| calculation stops. + +* :option:`determinants n_states` : number of states to consider in the |CIPSI| + calculation. + +* :option:`determinants read_wf` : if |false|, starts with a |ROHF|-like + determinant, if |true|, starts with the current wave function(s) stored in + the |EZFIO| directory. + +.. note:: + For a multi-state calculation, it is recommended to start with :ref:`cis` + or :ref:`cisd` wave functions as a guess. + +* :option:`determinants expected_s2` : expected value of |S^2| for the + desired spin multiplicity. + +* :option:`determinants s2_eig` : if |true|, systematically add all the + determinants needed to have a pure value of |S^2|. Also, if |true|, it + tracks only the states having the good :option:`determinants expected_s2`. + + + + +The programmer's point of view +------------------------------ + +This module was created with the :ref:`module_cipsi` module. + +.. seealso:: + + The documentation of the :ref:`module_cipsi` module. + + + + + +EZFIO parameters +---------------- + +.. option:: energy + + Calculated Selected |FCI| energy + + +.. option:: energy_pt2 + + Calculated |FCI| energy + |PT2| + + + +Programs +-------- + + * :ref:`fci` + * :ref:`pt2` + +Providers +--------- + +.. c:var:: do_ddci + + + File : :file:`fci/class.irp.f` + + .. code:: fortran + + logical :: do_only_1h1p + logical :: do_ddci + + + In the FCI case, all those are always false + + + +.. c:var:: do_only_1h1p + + + File : :file:`fci/class.irp.f` + + .. code:: fortran + + logical :: do_only_1h1p + logical :: do_ddci + + + In the FCI case, all those are always false + + + + +Subroutines / functions +----------------------- + +.. c:function:: save_energy: + + + File : :file:`fci/save_energy.irp.f` + + .. code:: fortran + + subroutine save_energy(E,pt2) + + + Saves the energy in |EZFIO|. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_states` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`run_cipsi` + * :c:func:`run_stochastic_cipsi` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`ezfio_set_fci_energy` + * :c:func:`ezfio_set_fci_energy_pt2` + diff --git a/docs/source/modules/generators_cas.rst b/docs/source/modules/generators_cas.rst new file mode 100644 index 00000000..e4452aca --- /dev/null +++ b/docs/source/modules/generators_cas.rst @@ -0,0 +1,19 @@ +.. _module_generators_cas: + +.. program:: generators_cas + +.. default-role:: option + +============== +generators_cas +============== + +Module defining the generator determinants as those belonging to a |CAS|. +The |MOs| belonging to the |CAS| are those which were set as active with +the :ref:`qp_set_mo_class` command. + +This module is intended to be included in the :file:`NEED` file to define +the generators as the |CAS| determinants, which can be useful to define post-CAS approaches (see cassd module for instance). + + + diff --git a/docs/source/modules/generators_full.rst b/docs/source/modules/generators_full.rst new file mode 100644 index 00000000..3af33dde --- /dev/null +++ b/docs/source/modules/generators_full.rst @@ -0,0 +1,295 @@ +.. _module_generators_full: + +.. program:: generators_full + +.. default-role:: option + +=============== +generators_full +=============== + +Module defining the generator determinants as all the determinants of the +variational space. + +This module is intended to be included in the :file:`NEED` file to define +a full set of generators. + + + +Providers +--------- + +.. c:var:: degree_max_generators + + + File : :file:`generators_full/generators.irp.f` + + .. code:: fortran + + integer :: degree_max_generators + + + Max degree of excitation (respect to HF) of the generators + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`hf_bitmask` + * :c:data:`n_det_generators` + * :c:data:`n_int` + * :c:data:`psi_det_generators` + + + +.. c:var:: n_det_generators + + + File : :file:`generators_full/generators.irp.f` + + .. code:: fortran + + integer :: n_det_generators + + + For Single reference wave functions, the number of generators is 1 : the + Hartree-Fock determinant + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mpi_master` + * :c:data:`n_det` + * :c:data:`output_wall_time_0` + * :c:data:`psi_det_sorted` + * :c:data:`threshold_generators` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`degree_max_generators` + * :c:data:`n_det_selectors` + * :c:data:`pt2_f` + * :c:data:`pt2_j` + * :c:data:`pt2_n_tasks` + * :c:data:`pt2_n_teeth` + * :c:data:`pt2_u` + * :c:data:`pt2_w` + + +.. c:var:: psi_coef_generators + + + File : :file:`generators_full/generators.irp.f` + + .. code:: fortran + + integer(bit_kind), allocatable :: psi_det_generators (N_int,2,psi_det_size) + double precision, allocatable :: psi_coef_generators (psi_det_size,N_states) + + + For Single reference wave functions, the generator is the + Hartree-Fock determinant + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_det` + * :c:data:`n_int` + * :c:data:`n_states` + * :c:data:`psi_det_size` + * :c:data:`psi_det_sorted` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`degree_max_generators` + + +.. c:var:: psi_coef_sorted_gen + + + File : :file:`generators_full/generators.irp.f` + + .. code:: fortran + + integer(bit_kind), allocatable :: psi_det_sorted_gen (N_int,2,psi_det_size) + double precision, allocatable :: psi_coef_sorted_gen (psi_det_size,N_states) + integer, allocatable :: psi_det_sorted_gen_order (psi_det_size) + + + For Single reference wave functions, the generator is the + Hartree-Fock determinant + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_int` + * :c:data:`n_states` + * :c:data:`psi_det_size` + * :c:data:`psi_det_sorted` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`pt2_f` + * :c:data:`pt2_n_teeth` + * :c:data:`pt2_w` + + +.. c:var:: psi_det_generators + + + File : :file:`generators_full/generators.irp.f` + + .. code:: fortran + + integer(bit_kind), allocatable :: psi_det_generators (N_int,2,psi_det_size) + double precision, allocatable :: psi_coef_generators (psi_det_size,N_states) + + + For Single reference wave functions, the generator is the + Hartree-Fock determinant + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_det` + * :c:data:`n_int` + * :c:data:`n_states` + * :c:data:`psi_det_size` + * :c:data:`psi_det_sorted` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`degree_max_generators` + + +.. c:var:: psi_det_sorted_gen + + + File : :file:`generators_full/generators.irp.f` + + .. code:: fortran + + integer(bit_kind), allocatable :: psi_det_sorted_gen (N_int,2,psi_det_size) + double precision, allocatable :: psi_coef_sorted_gen (psi_det_size,N_states) + integer, allocatable :: psi_det_sorted_gen_order (psi_det_size) + + + For Single reference wave functions, the generator is the + Hartree-Fock determinant + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_int` + * :c:data:`n_states` + * :c:data:`psi_det_size` + * :c:data:`psi_det_sorted` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`pt2_f` + * :c:data:`pt2_n_teeth` + * :c:data:`pt2_w` + + +.. c:var:: psi_det_sorted_gen_order + + + File : :file:`generators_full/generators.irp.f` + + .. code:: fortran + + integer(bit_kind), allocatable :: psi_det_sorted_gen (N_int,2,psi_det_size) + double precision, allocatable :: psi_coef_sorted_gen (psi_det_size,N_states) + integer, allocatable :: psi_det_sorted_gen_order (psi_det_size) + + + For Single reference wave functions, the generator is the + Hartree-Fock determinant + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_int` + * :c:data:`n_states` + * :c:data:`psi_det_size` + * :c:data:`psi_det_sorted` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`pt2_f` + * :c:data:`pt2_n_teeth` + * :c:data:`pt2_w` + + +.. c:var:: select_max + + + File : :file:`generators_full/generators.irp.f` + + .. code:: fortran + + double precision, allocatable :: select_max (size_select_max) + + + Memo to skip useless selectors + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`size_select_max` + + + +.. c:var:: size_select_max + + + File : :file:`generators_full/generators.irp.f` + + .. code:: fortran + + integer :: size_select_max + + + Size of the select_max array + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`select_max` + diff --git a/docs/source/modules/hartree_fock.rst b/docs/source/modules/hartree_fock.rst new file mode 100644 index 00000000..f8aa5135 --- /dev/null +++ b/docs/source/modules/hartree_fock.rst @@ -0,0 +1,406 @@ +.. _module_hartree_fock: + +.. program:: hartree_fock + +.. default-role:: option + +============ +hartree_fock +============ + + +The :ref:`scf` program performs *Restricted* Hartree-Fock +calculations (the spatial part of the |MOs| is common for alpha and beta +spinorbitals). + +The Hartree-Fock algorithm is a |SCF| and therefore is based on the +:ref:`module_scf_utils` module. + +The Fock matrix is defined in :file:`fock_matrix_hf.irp.f`. + + + + + + +EZFIO parameters +---------------- + +.. option:: energy + + Energy HF + + + +Programs +-------- + + * :ref:`scf` + +Providers +--------- + +.. c:var:: ao_two_e_integral_alpha + + + File : :file:`hartree_fock/fock_matrix_hf.irp.f` + + .. code:: fortran + + double precision, allocatable :: ao_two_e_integral_alpha (ao_num,ao_num) + double precision, allocatable :: ao_two_e_integral_beta (ao_num,ao_num) + + + Alpha Fock matrix in AO basis set + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_coef_normalized_ordered_transp` + * :c:data:`ao_expo_ordered_transp` + * :c:data:`ao_integrals_map` + * :c:data:`ao_integrals_threshold` + * :c:data:`ao_nucl` + * :c:data:`ao_num` + * :c:data:`ao_overlap_abs` + * :c:data:`ao_power` + * :c:data:`ao_prim_num` + * :c:data:`ao_two_e_integral_schwartz` + * :c:data:`ao_two_e_integrals_in_map` + * :c:data:`do_direct_integrals` + * :c:data:`n_pt_max_integrals` + * :c:data:`nucl_coord` + * :c:data:`scf_density_matrix_ao_alpha` + * :c:data:`scf_density_matrix_ao_beta` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`fock_matrix_ao_alpha` + * :c:data:`hf_energy` + + +.. c:var:: ao_two_e_integral_beta + + + File : :file:`hartree_fock/fock_matrix_hf.irp.f` + + .. code:: fortran + + double precision, allocatable :: ao_two_e_integral_alpha (ao_num,ao_num) + double precision, allocatable :: ao_two_e_integral_beta (ao_num,ao_num) + + + Alpha Fock matrix in AO basis set + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_coef_normalized_ordered_transp` + * :c:data:`ao_expo_ordered_transp` + * :c:data:`ao_integrals_map` + * :c:data:`ao_integrals_threshold` + * :c:data:`ao_nucl` + * :c:data:`ao_num` + * :c:data:`ao_overlap_abs` + * :c:data:`ao_power` + * :c:data:`ao_prim_num` + * :c:data:`ao_two_e_integral_schwartz` + * :c:data:`ao_two_e_integrals_in_map` + * :c:data:`do_direct_integrals` + * :c:data:`n_pt_max_integrals` + * :c:data:`nucl_coord` + * :c:data:`scf_density_matrix_ao_alpha` + * :c:data:`scf_density_matrix_ao_beta` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`fock_matrix_ao_alpha` + * :c:data:`hf_energy` + + +.. c:var:: extra_e_contrib_density + + + File : :file:`hartree_fock/hf_energy.irp.f` + + .. code:: fortran + + double precision :: extra_e_contrib_density + + + Extra contribution to the SCF energy coming from the density. + + For a Hartree-Fock calculation: extra_e_contrib_density = 0 + + For a Kohn-Sham or Range-separated Kohn-Sham: the exchange/correlation - trace of the V_xc potential + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`scf_energy` + + +.. c:var:: fock_matrix_ao_alpha + + + File : :file:`hartree_fock/fock_matrix_hf.irp.f` + + .. code:: fortran + + double precision, allocatable :: fock_matrix_ao_alpha (ao_num,ao_num) + double precision, allocatable :: fock_matrix_ao_beta (ao_num,ao_num) + + + Alpha Fock matrix in AO basis set + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`ao_one_e_integrals` + * :c:data:`ao_two_e_integral_alpha` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`fock_matrix_ao` + * :c:data:`fock_matrix_mo_alpha` + * :c:data:`fock_matrix_mo_beta` + * :c:data:`scf_energy` + + +.. c:var:: fock_matrix_ao_beta + + + File : :file:`hartree_fock/fock_matrix_hf.irp.f` + + .. code:: fortran + + double precision, allocatable :: fock_matrix_ao_alpha (ao_num,ao_num) + double precision, allocatable :: fock_matrix_ao_beta (ao_num,ao_num) + + + Alpha Fock matrix in AO basis set + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`ao_one_e_integrals` + * :c:data:`ao_two_e_integral_alpha` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`fock_matrix_ao` + * :c:data:`fock_matrix_mo_alpha` + * :c:data:`fock_matrix_mo_beta` + * :c:data:`scf_energy` + + +.. c:var:: hf_energy + + + File : :file:`hartree_fock/hf_energy.irp.f` + + .. code:: fortran + + double precision :: hf_energy + double precision :: hf_two_electron_energy + double precision :: hf_one_electron_energy + + + Hartree-Fock energy containing the nuclear repulsion, and its one- and two-body components. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`ao_one_e_integrals` + * :c:data:`ao_two_e_integral_alpha` + * :c:data:`nuclear_repulsion` + * :c:data:`scf_density_matrix_ao_alpha` + * :c:data:`scf_density_matrix_ao_beta` + + + +.. c:var:: hf_one_electron_energy + + + File : :file:`hartree_fock/hf_energy.irp.f` + + .. code:: fortran + + double precision :: hf_energy + double precision :: hf_two_electron_energy + double precision :: hf_one_electron_energy + + + Hartree-Fock energy containing the nuclear repulsion, and its one- and two-body components. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`ao_one_e_integrals` + * :c:data:`ao_two_e_integral_alpha` + * :c:data:`nuclear_repulsion` + * :c:data:`scf_density_matrix_ao_alpha` + * :c:data:`scf_density_matrix_ao_beta` + + + +.. c:var:: hf_two_electron_energy + + + File : :file:`hartree_fock/hf_energy.irp.f` + + .. code:: fortran + + double precision :: hf_energy + double precision :: hf_two_electron_energy + double precision :: hf_one_electron_energy + + + Hartree-Fock energy containing the nuclear repulsion, and its one- and two-body components. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`ao_one_e_integrals` + * :c:data:`ao_two_e_integral_alpha` + * :c:data:`nuclear_repulsion` + * :c:data:`scf_density_matrix_ao_alpha` + * :c:data:`scf_density_matrix_ao_beta` + + + + +Subroutines / functions +----------------------- + +.. c:function:: create_guess: + + + File : :file:`hartree_fock/scf.irp.f` + + .. code:: fortran + + subroutine create_guess + + + Create a MO guess if no MOs are present in the EZFIO directory + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ezfio_filename` + * :c:data:`mo_coef` + * :c:data:`mo_guess_type` + * :c:data:`mo_one_e_integrals` + * :c:data:`ao_ortho_lowdin_coef` + * :c:data:`mo_label` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`scf` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`ezfio_has_mo_basis_mo_coef` + * :c:func:`huckel_guess` + * :c:func:`mo_as_eigvectors_of_mo_matrix` + + Touches: + + .. hlist:: + :columns: 3 + + * :c:data:`fock_matrix_ao_alpha` + * :c:data:`fock_matrix_ao_alpha` + * :c:data:`mo_coef` + * :c:data:`mo_label` + + +.. c:function:: run: + + + File : :file:`hartree_fock/scf.irp.f` + + .. code:: fortran + + subroutine run + + + Run SCF calculation + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`scf_energy` + * :c:data:`mo_label` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`pt2` + * :c:func:`scf` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`ezfio_set_hartree_fock_energy` + * :c:func:`roothaan_hall_scf` + + Touches: + + .. hlist:: + :columns: 3 + + * :c:data:`fock_matrix_ao_alpha` + * :c:data:`fock_matrix_ao_alpha` + * :c:data:`mo_coef` + * :c:data:`level_shift` + * :c:data:`mo_coef` + diff --git a/docs/source/modules/iterations.rst b/docs/source/modules/iterations.rst new file mode 100644 index 00000000..d8358b27 --- /dev/null +++ b/docs/source/modules/iterations.rst @@ -0,0 +1,204 @@ +.. _module_iterations: + +.. program:: iterations + +.. default-role:: option + +========== +iterations +========== + +Module which saves the computed energies for an extrapolation to +the |FCI| limit. + + + +EZFIO parameters +---------------- + +.. option:: n_iter + + Number of saved iterations + + Default: 1 + +.. option:: n_det_iterations + + Number of determinants at each iteration + + +.. option:: energy_iterations + + The variational energy at each iteration + + +.. option:: pt2_iterations + + The |PT2| correction at each iteration + + + +Providers +--------- + +.. c:var:: extrapolated_energy + + + File : :file:`iterations/iterations.irp.f` + + .. code:: fortran + + double precision, allocatable :: extrapolated_energy (N_iter,N_states) + + + Extrapolated energy, using E_var = f(PT2) where PT2=0 + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`energy_iterations` + * :c:data:`n_det` + * :c:data:`n_iter` + * :c:data:`n_states` + * :c:data:`pt2_iterations` + + + +.. c:var:: n_iter + + + File : :file:`iterations/io.irp.f` + + .. code:: fortran + + integer :: n_iter + + + number of iterations + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ezfio_filename` + * :c:data:`mpi_master` + * :c:data:`n_states` + * :c:data:`output_wall_time_0` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`extrapolated_energy` + + + +Subroutines / functions +----------------------- + +.. c:function:: print_extrapolated_energy: + + + File : :file:`iterations/print_extrapolation.irp.f` + + .. code:: fortran + + subroutine print_extrapolated_energy + + + Print the extrapolated energy in the output + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`extrapolated_energy` + * :c:data:`n_states` + * :c:data:`n_det` + * :c:data:`pt2_iterations` + * :c:data:`n_iter` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`run_cipsi` + * :c:func:`run_stochastic_cipsi` + + +.. c:function:: print_summary: + + + File : :file:`iterations/print_summary.irp.f` + + .. code:: fortran + + subroutine print_summary(e_,pt2_,error_,variance_,norm_,n_det_,n_occ_pattern_,n_st,s2_) + + + Print the extrapolated energy in the output + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`do_pt2` + * :c:data:`s2_eig` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`run_cipsi` + * :c:func:`run_stochastic_cipsi` + + +.. c:function:: save_iterations: + + + File : :file:`iterations/iterations.irp.f` + + .. code:: fortran + + subroutine save_iterations(e_, pt2_,n_) + + + Update the energy in the EZFIO file. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_iter` + * :c:data:`energy_iterations` + * :c:data:`n_states` + * :c:data:`pt2_iterations` + * :c:data:`n_det_iterations` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`run_cipsi` + * :c:func:`run_stochastic_cipsi` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`ezfio_set_iterations_energy_iterations` + * :c:func:`ezfio_set_iterations_n_det_iterations` + * :c:func:`ezfio_set_iterations_n_iter` + * :c:func:`ezfio_set_iterations_pt2_iterations` + diff --git a/docs/source/modules/kohn_sham.rst b/docs/source/modules/kohn_sham.rst new file mode 100644 index 00000000..955a25b7 --- /dev/null +++ b/docs/source/modules/kohn_sham.rst @@ -0,0 +1,101 @@ +.. _module_kohn_sham: + +.. program:: kohn_sham + +.. default-role:: option + +========= +kohn_sham +========= + + +The Kohn-Sham module performs *Restricted* Kohn-Sham calculations (the +spatial part of the |MOs| is common for alpha and beta spinorbitals). + +The Kohn-Sham in an SCF and therefore is based on the ``scf_utils`` structure. +It performs the following actions: + +#. Compute/Read all the one- and two-electron integrals, and store them in memory +#. Check in the |EZFIO| database if there is a set of |MOs|. If there is, it + will read them as initial guess. Otherwise, it will create a guess. +#. Perform the |SCF| iterations + +The definition of the Fock matrix is in :file:`kohn_sham fock_matrix_ks.irp.f` +For the keywords related to the |SCF| procedure, see the ``scf_utils`` directory where you will find all options. +The main are: + +#. :option:`scf_utils thresh_scf` +#. :option:`scf_utils level_shift` + +At each iteration, the |MOs| are saved in the |EZFIO| database. Hence, if the calculation +crashes for any unexpected reason, the calculation can be restarted by running again +the |SCF| with the same |EZFIO| database. + +The `DIIS`_ algorithm is implemented, as well as the `level-shifting`_ method. +If the |SCF| does not converge, try again with a higher value of :option:`level_shift`. + +To start a calculation from scratch, the simplest way is to remove the +``mo_basis`` directory from the |EZFIO| database, and run the |SCF| again. + + + + +.. _DIIS: https://en.wikipedia.org/w/index.php?title=DIIS +.. _level-shifting: https://doi.org/10.1002/qua.560070407 + + + + + + +Programs +-------- + + * :ref:`ks_scf` + +Providers +--------- + +.. c:var:: ks_energy + + + File : :file:`ks_enery.irp.f` + + .. code:: fortran + + double precision :: ks_energy + double precision :: two_e_energy + double precision :: one_e_energy + double precision :: fock_matrix_energy + double precision :: trace_potential_xc + + + Kohn-Sham energy containing the nuclear repulsion energy, and the various components of this quantity. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`ao_one_e_integrals` + * :c:data:`ao_potential_alpha_xc` + * :c:data:`ao_two_e_integral_alpha` + * :c:data:`e_correlation_dft` + * :c:data:`e_exchange_dft` + * :c:data:`fock_matrix_ao_alpha` + * :c:data:`nuclear_repulsion` + * :c:data:`scf_density_matrix_ao_alpha` + * :c:data:`scf_density_matrix_ao_beta` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`extra_e_contrib_density` + + + +Subroutines / functions +----------------------- diff --git a/docs/source/modules/kohn_sham_rs.rst b/docs/source/modules/kohn_sham_rs.rst new file mode 100644 index 00000000..02322304 --- /dev/null +++ b/docs/source/modules/kohn_sham_rs.rst @@ -0,0 +1,468 @@ +.. _module_kohn_sham_rs: + +.. program:: kohn_sham_rs + +.. default-role:: option + +============ +kohn_sham_rs +============ + + +The Range-separated Kohn-Sham module performs *Restricted* Kohn-Sham calculations (the +spatial part of the |MOs| is common for alpha and beta spinorbitals) where the coulomb interaction is partially treated using exact exchange. +The splitting of the interaction between long- and short-range is determined by the range-separation parameter :option:`ao_two_e_erf_ints mu_erf`. The long-range part of the interaction is explicitly treated with exact exchange, and the short-range part of the interaction is treated with appropriate DFT functionals. + +The Range-separated Kohn-Sham in an SCF and therefore is based on the ``scf_utils`` structure. +It performs the following actions: + +#. Compute/Read all the one- and two-electron integrals, and store them in memory +#. Check in the |EZFIO| database if there is a set of |MOs|. If there is, it + will read them as initial guess. Otherwise, it will create a guess. +#. Perform the |SCF| iterations + +The definition of the Fock matrix is in :file:`kohn_sham_rs fock_matrix_rs_ks.irp.f` +For the keywords related to the |SCF| procedure, see the ``scf_utils`` directory where you will find all options. +The main are: +# :option:`scf_utils thresh_scf` +# :option:`scf_utils level_shift` + + +At each iteration, the |MOs| are saved in the |EZFIO| database. Hence, if the calculation +crashes for any unexpected reason, the calculation can be restarted by running again +the |SCF| with the same |EZFIO| database. + +The `DIIS`_ algorithm is implemented, as well as the `level-shifting`_ method. +If the |SCF| does not converge, try again with a higher value of :option:`level_shift`. + +To start a calculation from scratch, the simplest way is to remove the +``mo_basis`` directory from the |EZFIO| database, and run the |SCF| again. + + +.. _DIIS: https://en.wikipedia.org/w/index.php?title=DIIS +.. _level-shifting: https://doi.org/10.1002/qua.560070407 + + + + + + +EZFIO parameters +---------------- + +.. option:: energy + + Energy range separated hybrid + + + +Programs +-------- + + * :ref:`rs_ks_scf` + +Providers +--------- + +.. c:var:: ao_potential_alpha_xc + + + File : :file:`pot_functionals.irp.f` + + .. code:: fortran + + double precision, allocatable :: ao_potential_alpha_xc (ao_num,ao_num) + double precision, allocatable :: ao_potential_beta_xc (ao_num,ao_num) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`potential_x_alpha_ao` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`fock_matrix_ao_alpha` + * :c:data:`rs_ks_energy` + + +.. c:var:: ao_potential_beta_xc + + + File : :file:`pot_functionals.irp.f` + + .. code:: fortran + + double precision, allocatable :: ao_potential_alpha_xc (ao_num,ao_num) + double precision, allocatable :: ao_potential_beta_xc (ao_num,ao_num) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`potential_x_alpha_ao` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`fock_matrix_ao_alpha` + * :c:data:`rs_ks_energy` + + +.. c:var:: e_correlation_dft + + + File : :file:`pot_functionals.irp.f` + + .. code:: fortran + + double precision :: e_correlation_dft + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`energy_x` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`extra_e_contrib_density` + * :c:data:`rs_ks_energy` + + +.. c:var:: e_exchange_dft + + + File : :file:`pot_functionals.irp.f` + + .. code:: fortran + + double precision :: e_exchange_dft + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`energy_x` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`extra_e_contrib_density` + * :c:data:`rs_ks_energy` + + +.. c:var:: fock_matrix_alpha_no_xc_ao + + + File : :file:`fock_matrix_rs_ks.irp.f` + + .. code:: fortran + + double precision, allocatable :: fock_matrix_alpha_no_xc_ao (ao_num,ao_num) + double precision, allocatable :: fock_matrix_beta_no_xc_ao (ao_num,ao_num) + + + Mono electronic an Coulomb matrix in AO basis set + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`ao_one_e_integrals` + * :c:data:`ao_two_e_integral_alpha` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`fock_matrix_ao_alpha` + + +.. c:var:: fock_matrix_beta_no_xc_ao + + + File : :file:`fock_matrix_rs_ks.irp.f` + + .. code:: fortran + + double precision, allocatable :: fock_matrix_alpha_no_xc_ao (ao_num,ao_num) + double precision, allocatable :: fock_matrix_beta_no_xc_ao (ao_num,ao_num) + + + Mono electronic an Coulomb matrix in AO basis set + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`ao_one_e_integrals` + * :c:data:`ao_two_e_integral_alpha` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`fock_matrix_ao_alpha` + + +.. c:var:: fock_matrix_energy + + + File : :file:`rs_ks_energy.irp.f` + + .. code:: fortran + + double precision :: rs_ks_energy + double precision :: two_e_energy + double precision :: one_e_energy + double precision :: fock_matrix_energy + double precision :: trace_potential_xc + + + Range-separated Kohn-Sham energy containing the nuclear repulsion energy, and the various components of this quantity. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`ao_one_e_integrals` + * :c:data:`ao_potential_alpha_xc` + * :c:data:`ao_two_e_integral_alpha` + * :c:data:`e_correlation_dft` + * :c:data:`e_exchange_dft` + * :c:data:`fock_matrix_ao_alpha` + * :c:data:`nuclear_repulsion` + * :c:data:`scf_density_matrix_ao_alpha` + * :c:data:`scf_density_matrix_ao_beta` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`extra_e_contrib_density` + + +.. c:var:: one_e_energy + + + File : :file:`rs_ks_energy.irp.f` + + .. code:: fortran + + double precision :: rs_ks_energy + double precision :: two_e_energy + double precision :: one_e_energy + double precision :: fock_matrix_energy + double precision :: trace_potential_xc + + + Range-separated Kohn-Sham energy containing the nuclear repulsion energy, and the various components of this quantity. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`ao_one_e_integrals` + * :c:data:`ao_potential_alpha_xc` + * :c:data:`ao_two_e_integral_alpha` + * :c:data:`e_correlation_dft` + * :c:data:`e_exchange_dft` + * :c:data:`fock_matrix_ao_alpha` + * :c:data:`nuclear_repulsion` + * :c:data:`scf_density_matrix_ao_alpha` + * :c:data:`scf_density_matrix_ao_beta` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`extra_e_contrib_density` + + +.. c:var:: rs_ks_energy + + + File : :file:`rs_ks_energy.irp.f` + + .. code:: fortran + + double precision :: rs_ks_energy + double precision :: two_e_energy + double precision :: one_e_energy + double precision :: fock_matrix_energy + double precision :: trace_potential_xc + + + Range-separated Kohn-Sham energy containing the nuclear repulsion energy, and the various components of this quantity. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`ao_one_e_integrals` + * :c:data:`ao_potential_alpha_xc` + * :c:data:`ao_two_e_integral_alpha` + * :c:data:`e_correlation_dft` + * :c:data:`e_exchange_dft` + * :c:data:`fock_matrix_ao_alpha` + * :c:data:`nuclear_repulsion` + * :c:data:`scf_density_matrix_ao_alpha` + * :c:data:`scf_density_matrix_ao_beta` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`extra_e_contrib_density` + + +.. c:var:: trace_potential_xc + + + File : :file:`rs_ks_energy.irp.f` + + .. code:: fortran + + double precision :: rs_ks_energy + double precision :: two_e_energy + double precision :: one_e_energy + double precision :: fock_matrix_energy + double precision :: trace_potential_xc + + + Range-separated Kohn-Sham energy containing the nuclear repulsion energy, and the various components of this quantity. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`ao_one_e_integrals` + * :c:data:`ao_potential_alpha_xc` + * :c:data:`ao_two_e_integral_alpha` + * :c:data:`e_correlation_dft` + * :c:data:`e_exchange_dft` + * :c:data:`fock_matrix_ao_alpha` + * :c:data:`nuclear_repulsion` + * :c:data:`scf_density_matrix_ao_alpha` + * :c:data:`scf_density_matrix_ao_beta` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`extra_e_contrib_density` + + +.. c:var:: two_e_energy + + + File : :file:`rs_ks_energy.irp.f` + + .. code:: fortran + + double precision :: rs_ks_energy + double precision :: two_e_energy + double precision :: one_e_energy + double precision :: fock_matrix_energy + double precision :: trace_potential_xc + + + Range-separated Kohn-Sham energy containing the nuclear repulsion energy, and the various components of this quantity. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`ao_one_e_integrals` + * :c:data:`ao_potential_alpha_xc` + * :c:data:`ao_two_e_integral_alpha` + * :c:data:`e_correlation_dft` + * :c:data:`e_exchange_dft` + * :c:data:`fock_matrix_ao_alpha` + * :c:data:`nuclear_repulsion` + * :c:data:`scf_density_matrix_ao_alpha` + * :c:data:`scf_density_matrix_ao_beta` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`extra_e_contrib_density` + + + +Subroutines / functions +----------------------- + +.. c:function:: check_coherence_functional: + + + File : :file:`rs_ks_scf.irp.f` + + .. code:: fortran + + subroutine check_coherence_functional + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`exchange_functional` + * :c:data:`correlation_functional` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`rs_ks_scf` + diff --git a/docs/source/modules/mo_basis.rst b/docs/source/modules/mo_basis.rst new file mode 100644 index 00000000..aae2e481 --- /dev/null +++ b/docs/source/modules/mo_basis.rst @@ -0,0 +1,815 @@ +.. _module_mo_basis: + +.. program:: mo_basis + +.. default-role:: option + +======== +mo_basis +======== + +Molecular orbitals are expressed as + +.. math:: + + \phi_k({\bf r}) = \sum_i C_{ik} \chi_k({\bf r}) + + +where :math:`\chi_k` are *normalized* atomic basis functions. + +The current set of |MOs| has a label `mo_label`. +When the orbitals are modified, the label should also be updated to keep +everything consistent. + +When saving the |MOs|, the :file:`mo_basis` directory of the |EZFIO| database +is copied in the :file:`save` directory, named by the current `mo_label`. All +this is done with the script named :file:`save_current_mos.sh` in the +:file:`$QP_ROOT/scripts` directory. + + + + + + +EZFIO parameters +---------------- + +.. option:: mo_num + + Total number of |MOs| + + +.. option:: mo_coef + + Coefficient of the i-th |AO| on the j-th |MO| + + +.. option:: mo_label + + Label characterizing the MOS (Local, Canonical, Natural, *etc*) + + +.. option:: mo_occ + + |MO| occupation numbers + + +.. option:: mo_class + + [ Core | Inactive | Active | Virtual | Deleted ], as defined by :ref:`qp_set_mo_class` + + +.. option:: ao_md5 + + MD5 checksum characterizing the |AO| basis set. + + + +Providers +--------- + +.. c:var:: mo_coef + + + File : :file:`mo_basis/mos.irp.f` + + .. code:: fortran + + double precision, allocatable :: mo_coef (ao_num,mo_num) + + + Molecular orbital coefficients on |AO| basis set + + mo_coef(i,j) = coefficient of the i-th |AO| on the jth mo + + mo_label : Label characterizing the MOS (local, canonical, natural, etc) + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`ao_ortho_canonical_coef` + * :c:data:`ezfio_filename` + * :c:data:`mo_num` + * :c:data:`mpi_master` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`eigenvectors_fock_matrix_mo` + * :c:data:`fock_matrix_mo_alpha` + * :c:data:`fock_matrix_mo_beta` + * :c:data:`fps_spf_matrix_mo` + * :c:data:`mo_coef_in_ao_ortho_basis` + * :c:data:`mo_coef_transp` + * :c:data:`mo_dipole_x` + * :c:data:`mo_integrals_n_e` + * :c:data:`mo_integrals_n_e_per_atom` + * :c:data:`mo_kinetic_integrals` + * :c:data:`mo_overlap` + * :c:data:`mo_pseudo_integrals` + * :c:data:`mo_spread_x` + * :c:data:`mo_two_e_int_erf_jj_from_ao` + * :c:data:`mo_two_e_integral_jj_from_ao` + * :c:data:`mo_two_e_integrals_erf_in_map` + * :c:data:`mo_two_e_integrals_in_map` + * :c:data:`mo_two_e_integrals_vv_from_ao` + * :c:data:`one_e_dm_ao_alpha` + * :c:data:`one_e_spin_density_ao` + * :c:data:`psi_det` + * :c:data:`s_mo_coef` + * :c:data:`scf_density_matrix_ao_alpha` + * :c:data:`scf_density_matrix_ao_beta` + + +.. c:var:: mo_coef_begin_iteration + + + File : :file:`mo_basis/track_orb.irp.f` + + .. code:: fortran + + double precision, allocatable :: mo_coef_begin_iteration (ao_num,mo_num) + + + Void provider to store the coefficients of the |MO| basis at the beginning of the SCF iteration + + Usefull to track some orbitals + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`mo_num` + + + +.. c:var:: mo_coef_in_ao_ortho_basis + + + File : :file:`mo_basis/mos.irp.f` + + .. code:: fortran + + double precision, allocatable :: mo_coef_in_ao_ortho_basis (ao_num,mo_num) + + + |MO| coefficients in orthogonalized |AO| basis + + :math:`C^{-1}.C_{mo}` + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`ao_ortho_canonical_coef_inv` + * :c:data:`mo_coef` + * :c:data:`mo_num` + + + +.. c:var:: mo_coef_transp + + + File : :file:`mo_basis/mos.irp.f` + + .. code:: fortran + + double precision, allocatable :: mo_coef_transp (mo_num,ao_num) + + + |MO| coefficients on |AO| basis set + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`mo_coef` + * :c:data:`mo_num` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_two_e_int_erf_jj_from_ao` + * :c:data:`mo_two_e_integral_jj_from_ao` + * :c:data:`mo_two_e_integrals_erf_in_map` + * :c:data:`mo_two_e_integrals_in_map` + * :c:data:`mo_two_e_integrals_vv_from_ao` + + +.. c:var:: mo_label + + + File : :file:`mo_basis/mos.irp.f` + + .. code:: fortran + + character*(64) :: mo_label + + + |MO| coefficients on |AO| basis set + + mo_coef(i,j) = coefficient of the i-th |AO| on the j-th |MO| + + mo_label : Label characterizing the |MOs| (local, canonical, natural, etc) + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ezfio_filename` + * :c:data:`mpi_master` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`n_det` + * :c:data:`psi_coef` + * :c:data:`psi_det` + + +.. c:var:: mo_num + + + File : :file:`mo_basis/mos.irp.f` + + .. code:: fortran + + integer :: mo_num + + + Number of MOs + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_ortho_canonical_coef` + * :c:data:`ezfio_filename` + * :c:data:`mpi_master` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_ortho_canonical_nucl_elec_integrals` + * :c:data:`ao_ortho_lowdin_nucl_elec_integrals` + * :c:data:`big_array_coulomb_integrals` + * :c:data:`core_fock_operator` + * :c:data:`core_fock_operator_erf` + * :c:data:`data_one_e_dm_alpha_mo` + * :c:data:`data_one_e_dm_beta_mo` + * :c:data:`eigenvectors_fock_matrix_mo` + * :c:data:`fock_matrix_ao` + * :c:data:`fock_matrix_mo` + * :c:data:`fock_matrix_mo_alpha` + * :c:data:`fock_matrix_mo_beta` + * :c:data:`fock_operator_closed_shell_ref_bitmask` + * :c:data:`fock_wee_closed_shell` + * :c:data:`fps_spf_matrix_mo` + * :c:data:`full_ijkl_bitmask` + * :c:data:`int_erf_3_index` + * :c:data:`list_core_inact_act` + * :c:data:`list_inact` + * :c:data:`mo_class` + * :c:data:`mo_coef` + * :c:data:`mo_coef_begin_iteration` + * :c:data:`mo_coef_in_ao_ortho_basis` + * :c:data:`mo_coef_transp` + * :c:data:`mo_dipole_x` + * :c:data:`mo_integrals_cache_min` + * :c:data:`mo_integrals_erf_cache_min` + * :c:data:`mo_integrals_erf_map` + * :c:data:`mo_integrals_map` + * :c:data:`mo_integrals_n_e` + * :c:data:`mo_integrals_n_e_per_atom` + * :c:data:`mo_kinetic_integrals` + * :c:data:`mo_occ` + * :c:data:`mo_one_e_integrals` + * :c:data:`mo_overlap` + * :c:data:`mo_pseudo_integrals` + * :c:data:`mo_spread_x` + * :c:data:`mo_two_e_int_erf_jj` + * :c:data:`mo_two_e_int_erf_jj_from_ao` + * :c:data:`mo_two_e_integral_jj_from_ao` + * :c:data:`mo_two_e_integrals_erf_in_map` + * :c:data:`mo_two_e_integrals_in_map` + * :c:data:`mo_two_e_integrals_jj` + * :c:data:`mo_two_e_integrals_vv_from_ao` + * :c:data:`n_core_orb` + * :c:data:`n_int` + * :c:data:`one_e_dm_ao_alpha` + * :c:data:`one_e_dm_dagger_mo_spin_index` + * :c:data:`one_e_dm_mo` + * :c:data:`one_e_dm_mo_alpha` + * :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:`one_e_spin_density_ao` + * :c:data:`one_e_spin_density_mo` + * :c:data:`psi_energy_h_core` + * :c:data:`s_mo_coef` + * :c:data:`singles_alpha_csc_idx` + * :c:data:`singles_beta_csc_idx` + + +.. c:var:: mo_occ + + + File : :file:`mo_basis/mos.irp.f` + + .. code:: fortran + + double precision, allocatable :: mo_occ (mo_num) + + + |MO| occupation numbers + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`elec_alpha_num` + * :c:data:`elec_beta_num` + * :c:data:`ezfio_filename` + * :c:data:`mo_num` + * :c:data:`mpi_master` + + + + +Subroutines / functions +----------------------- + +.. c:function:: ao_ortho_cano_to_ao: + + + File : :file:`mo_basis/mos.irp.f` + + .. code:: fortran + + subroutine ao_ortho_cano_to_ao(A_ao,LDA_ao,A,LDA) + + + Transform A from the |AO| basis to the orthogonal |AO| basis + + $C^{-1}.A_{ao}.C^{\dagger-1}$ + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`ao_ortho_canonical_coef_inv` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`dgemm` + + +.. c:function:: ao_to_mo: + + + File : :file:`mo_basis/mos.irp.f` + + .. code:: fortran + + subroutine ao_to_mo(A_ao,LDA_ao,A_mo,LDA_mo) + + + Transform A from the |AO| basis to the |MO| basis + + $C^\dagger.A_{ao}.C$ + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`mo_num` + * :c:data:`mo_coef` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:data:`fock_matrix_mo_alpha` + * :c:data:`fock_matrix_mo_beta` + * :c:data:`fps_spf_matrix_mo` + * :c:data:`mo_dipole_x` + * :c:data:`mo_integrals_n_e` + * :c:data:`mo_integrals_n_e_per_atom` + * :c:data:`mo_kinetic_integrals` + * :c:data:`mo_pseudo_integrals` + * :c:data:`mo_spread_x` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`dgemm` + + +.. c:function:: give_all_mos_and_grad_and_lapl_at_r: + + + File : :file:`mo_basis/mos_in_r.irp.f` + + .. code:: fortran + + subroutine give_all_mos_and_grad_and_lapl_at_r(r,mos_array,mos_grad_array,mos_lapl_array) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`mo_num` + * :c:data:`mo_coef` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`give_all_aos_and_grad_and_lapl_at_r` + + +.. c:function:: give_all_mos_and_grad_at_r: + + + File : :file:`mo_basis/mos_in_r.irp.f` + + .. code:: fortran + + subroutine give_all_mos_and_grad_at_r(r,mos_array,mos_grad_array) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`mo_num` + * :c:data:`mo_coef` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`give_all_aos_and_grad_at_r` + + +.. c:function:: give_all_mos_at_r: + + + File : :file:`mo_basis/mos_in_r.irp.f` + + .. code:: fortran + + subroutine give_all_mos_at_r(r,mos_array) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`mo_num` + * :c:data:`mo_coef_transp` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`dgemv` + * :c:func:`give_all_aos_at_r` + + +.. c:function:: initialize_mo_coef_begin_iteration: + + + File : :file:`mo_basis/track_orb.irp.f` + + .. code:: fortran + + subroutine initialize_mo_coef_begin_iteration + + + + Initialize :c:data:`mo_coef_begin_iteration` to the current :c:data:`mo_coef` + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_coef_begin_iteration` + * :c:data:`mo_coef` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`damping_scf` + * :c:func:`roothaan_hall_scf` + + +.. c:function:: mix_mo_jk: + + + File : :file:`mo_basis/mos.irp.f` + + .. code:: fortran + + subroutine mix_mo_jk(j,k) + + + Rotates the j-th |MO| with the k-th |MO| to give two new |MOs| that are + + * $+ = \frac{1}{\sqrt{2}} ( | j\rangle + | k\rangle)$ + + * $- = \frac{1}{\sqrt{2}} ( | j\rangle - | k\rangle)$ + + by convention, the '+' |MO| is in the lowest index (min(j,k)) + by convention, the '-' |MO| is in the highest index (max(j,k)) + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`mo_coef` + + +.. c:function:: mo_as_eigvectors_of_mo_matrix: + + + File : :file:`mo_basis/utils.irp.f` + + .. code:: fortran + + subroutine mo_as_eigvectors_of_mo_matrix(matrix,n,m,label,sign,output) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_label` + * :c:data:`ao_num` + * :c:data:`mo_num` + * :c:data:`mo_coef` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`create_guess` + * :c:func:`damping_scf` + * :c:func:`hcore_guess` + * :c:func:`roothaan_hall_scf` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`dgemm` + * :c:func:`lapack_diag` + * :c:func:`write_time` + + +.. c:function:: mo_as_svd_vectors_of_mo_matrix: + + + File : :file:`mo_basis/utils.irp.f` + + .. code:: fortran + + subroutine mo_as_svd_vectors_of_mo_matrix(matrix,lda,m,n,label) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_label` + * :c:data:`ao_num` + * :c:data:`mo_num` + * :c:data:`mo_coef` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`dgemm` + * :c:func:`svd` + * :c:func:`write_time` + + +.. c:function:: mo_as_svd_vectors_of_mo_matrix_eig: + + + File : :file:`mo_basis/utils.irp.f` + + .. code:: fortran + + subroutine mo_as_svd_vectors_of_mo_matrix_eig(matrix,lda,m,n,eig,label) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_label` + * :c:data:`ao_num` + * :c:data:`mo_num` + * :c:data:`mo_coef` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`set_natural_mos` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`dgemm` + * :c:func:`svd` + * :c:func:`write_time` + + +.. c:function:: reorder_core_orb: + + + File : :file:`mo_basis/track_orb.irp.f` + + .. code:: fortran + + subroutine reorder_core_orb + + + routines that takes the current :c:data:`mo_coef` and reorder the core orbitals (see :c:data:`list_core` and :c:data:`n_core_orb`) according to the overlap with :c:data:`mo_coef_begin_iteration` + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_num` + * :c:data:`mo_coef_begin_iteration` + * :c:data:`mo_coef` + * :c:data:`ao_overlap` + * :c:data:`n_core_orb` + * :c:data:`ao_num` + * :c:data:`list_inact` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`damping_scf` + * :c:func:`roothaan_hall_scf` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`dsort` + + +.. c:function:: save_mos: + + + File : :file:`mo_basis/utils.irp.f` + + .. code:: fortran + + subroutine save_mos + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_occ` + * :c:data:`ao_md5` + * :c:data:`ezfio_filename` + * :c:data:`mo_num` + * :c:data:`mo_coef` + * :c:data:`ao_num` + * :c:data:`mo_label` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`damping_scf` + * :c:func:`hcore_guess` + * :c:func:`huckel_guess` + * :c:func:`roothaan_hall_scf` + * :c:func:`save_natural_mos` + * :c:func:`save_ortho_mos` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`ezfio_set_mo_basis_ao_md5` + * :c:func:`ezfio_set_mo_basis_mo_coef` + * :c:func:`ezfio_set_mo_basis_mo_label` + * :c:func:`ezfio_set_mo_basis_mo_num` + * :c:func:`ezfio_set_mo_basis_mo_occ` + * :c:func:`system` + + +.. c:function:: save_mos_truncated: + + + File : :file:`mo_basis/utils.irp.f` + + .. code:: fortran + + subroutine save_mos_truncated(n) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_occ` + * :c:data:`ao_md5` + * :c:data:`ezfio_filename` + * :c:data:`mo_coef` + * :c:data:`ao_num` + * :c:data:`mo_label` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`ezfio_set_mo_basis_ao_md5` + * :c:func:`ezfio_set_mo_basis_mo_coef` + * :c:func:`ezfio_set_mo_basis_mo_label` + * :c:func:`ezfio_set_mo_basis_mo_num` + * :c:func:`ezfio_set_mo_basis_mo_occ` + * :c:func:`system` + diff --git a/docs/source/modules/mo_guess.rst b/docs/source/modules/mo_guess.rst new file mode 100644 index 00000000..25c9acde --- /dev/null +++ b/docs/source/modules/mo_guess.rst @@ -0,0 +1,160 @@ +.. _module_mo_guess: + +.. program:: mo_guess + +.. default-role:: option + +======== +mo_guess +======== + +Guess for |MOs|. + + + + +Providers +--------- + +.. c:var:: ao_ortho_canonical_nucl_elec_integrals + + + File : :file:`mo_guess/pot_mo_ortho_canonical_ints.irp.f` + + .. code:: fortran + + double precision, allocatable :: ao_ortho_canonical_nucl_elec_integrals (mo_num,mo_num) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_integrals_n_e` + * :c:data:`ao_num` + * :c:data:`ao_ortho_canonical_coef` + * :c:data:`mo_num` + + + +.. c:var:: ao_ortho_lowdin_coef + + + File : :file:`mo_guess/mo_ortho_lowdin.irp.f` + + .. code:: fortran + + double precision, allocatable :: ao_ortho_lowdin_coef (ao_num,ao_num) + + + matrix of the coefficients of the mos generated by the + orthonormalization by the S^{-1/2} canonical transformation of the aos + ao_ortho_lowdin_coef(i,j) = coefficient of the ith ao on the jth ao_ortho_lowdin orbital + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`ao_overlap` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_ortho_lowdin_nucl_elec_integrals` + * :c:data:`ao_ortho_lowdin_overlap` + + +.. c:var:: ao_ortho_lowdin_nucl_elec_integrals + + + File : :file:`mo_guess/pot_mo_ortho_lowdin_ints.irp.f` + + .. code:: fortran + + double precision, allocatable :: ao_ortho_lowdin_nucl_elec_integrals (mo_num,mo_num) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_integrals_n_e` + * :c:data:`ao_num` + * :c:data:`ao_ortho_lowdin_coef` + * :c:data:`mo_num` + + + +.. c:var:: ao_ortho_lowdin_overlap + + + File : :file:`mo_guess/mo_ortho_lowdin.irp.f` + + .. code:: fortran + + double precision, allocatable :: ao_ortho_lowdin_overlap (ao_num,ao_num) + + + overlap matrix of the ao_ortho_lowdin + supposed to be the Identity + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`ao_ortho_lowdin_coef` + * :c:data:`ao_overlap` + + + + +Subroutines / functions +----------------------- + +.. c:function:: hcore_guess: + + + File : :file:`mo_guess/h_core_guess_routine.irp.f` + + .. code:: fortran + + subroutine hcore_guess + + + Produce `H_core` MO orbital + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_label` + * :c:data:`mo_one_e_integrals` + * :c:data:`mo_coef` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`mo_as_eigvectors_of_mo_matrix` + * :c:func:`save_mos` + + Touches: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_coef` + * :c:data:`mo_label` + diff --git a/docs/source/modules/mo_one_e_ints.rst b/docs/source/modules/mo_one_e_ints.rst new file mode 100644 index 00000000..c882bb6f --- /dev/null +++ b/docs/source/modules/mo_one_e_ints.rst @@ -0,0 +1,571 @@ +.. _module_mo_one_e_ints: + +.. program:: mo_one_e_ints + +.. default-role:: option + +================== +mo_one_e_integrals +================== + +All the one-electron integrals in |MO| basis are defined here. + +The most important providers for usual quantum-chemistry calculation are: + +* `mo_kinetic_integrals` which are the kinetic operator integrals on the |AO| basis (see :file:`kin_mo_ints.irp.f`) +* `mo_integrals_n_e` which are the nuclear-elctron operator integrals on the |AO| basis (see :file:`pot_mo_ints.irp.f`) +* `mo_one_e_integrals` which are the the h_core operator integrals on the |AO| basis (see :file:`mo_mono_ints.irp.f`) + +Note that you can find other interesting integrals related to the position operator in :file:`spread_dipole_mo.irp.f`. + + + +EZFIO parameters +---------------- + +.. option:: mo_integrals_e_n + + Nucleus-electron integrals in |MO| basis set + + +.. option:: io_mo_integrals_e_n + + Read/Write |MO| electron-nucleus attraction integrals from/to disk [ Write | Read | None ] + + Default: None + +.. option:: mo_integrals_kinetic + + Kinetic energy integrals in |MO| basis set + + +.. option:: io_mo_integrals_kinetic + + Read/Write |MO| one-electron kinetic integrals from/to disk [ Write | Read | None ] + + Default: None + +.. option:: mo_integrals_pseudo + + Pseudopotential integrals in |MO| basis set + + +.. option:: io_mo_integrals_pseudo + + Read/Write |MO| pseudopotential integrals from/to disk [ Write | Read | None ] + + Default: None + +.. option:: mo_one_e_integrals + + One-electron integrals in |MO| basis set + + +.. option:: io_mo_one_e_integrals + + Read/Write |MO| one-electron integrals from/to disk [ Write | Read | None ] + + Default: None + + +Providers +--------- + +.. c:var:: mo_dipole_x + + + File : :file:`mo_one_e_ints/spread_dipole_mo.irp.f` + + .. code:: fortran + + double precision, allocatable :: mo_dipole_x (mo_num,mo_num) + double precision, allocatable :: mo_dipole_y (mo_num,mo_num) + double precision, allocatable :: mo_dipole_z (mo_num,mo_num) + + + array of the integrals of MO_i * x MO_j + array of the integrals of MO_i * y MO_j + array of the integrals of MO_i * z MO_j + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_dipole_x` + * :c:data:`ao_num` + * :c:data:`mo_coef` + * :c:data:`mo_num` + + + +.. c:var:: mo_dipole_y + + + File : :file:`mo_one_e_ints/spread_dipole_mo.irp.f` + + .. code:: fortran + + double precision, allocatable :: mo_dipole_x (mo_num,mo_num) + double precision, allocatable :: mo_dipole_y (mo_num,mo_num) + double precision, allocatable :: mo_dipole_z (mo_num,mo_num) + + + array of the integrals of MO_i * x MO_j + array of the integrals of MO_i * y MO_j + array of the integrals of MO_i * z MO_j + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_dipole_x` + * :c:data:`ao_num` + * :c:data:`mo_coef` + * :c:data:`mo_num` + + + +.. c:var:: mo_dipole_z + + + File : :file:`mo_one_e_ints/spread_dipole_mo.irp.f` + + .. code:: fortran + + double precision, allocatable :: mo_dipole_x (mo_num,mo_num) + double precision, allocatable :: mo_dipole_y (mo_num,mo_num) + double precision, allocatable :: mo_dipole_z (mo_num,mo_num) + + + array of the integrals of MO_i * x MO_j + array of the integrals of MO_i * y MO_j + array of the integrals of MO_i * z MO_j + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_dipole_x` + * :c:data:`ao_num` + * :c:data:`mo_coef` + * :c:data:`mo_num` + + + +.. c:var:: mo_integrals_n_e + + + File : :file:`mo_one_e_ints/pot_mo_ints.irp.f` + + .. code:: fortran + + double precision, allocatable :: mo_integrals_n_e (mo_num,mo_num) + + + Nucleus-electron interaction on the |MO| basis + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_integrals_n_e` + * :c:data:`ao_num` + * :c:data:`mo_coef` + * :c:data:`mo_num` + * :c:data:`read_mo_integrals_e_n` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_one_e_integrals` + * :c:data:`ref_bitmask_energy` + + +.. c:var:: mo_integrals_n_e_per_atom + + + File : :file:`mo_one_e_ints/pot_mo_ints.irp.f` + + .. code:: fortran + + double precision, allocatable :: mo_integrals_n_e_per_atom (mo_num,mo_num,nucl_num) + + + mo_integrals_n_e_per_atom(i,j,k) = + :math:`\langle \phi_i| -\frac{1}{|r-R_k|} | \phi_j \rangle` . + where R_k is the coordinate of the k-th nucleus. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_integrals_n_e_per_atom` + * :c:data:`ao_num` + * :c:data:`mo_coef` + * :c:data:`mo_num` + * :c:data:`nucl_num` + + + +.. c:var:: mo_kinetic_integrals + + + File : :file:`mo_one_e_ints/kin_mo_ints.irp.f` + + .. code:: fortran + + double precision, allocatable :: mo_kinetic_integrals (mo_num,mo_num) + + + Kinetic energy integrals in the MO basis + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_kinetic_integrals` + * :c:data:`ao_num` + * :c:data:`mo_coef` + * :c:data:`mo_num` + * :c:data:`read_mo_integrals_kinetic` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_one_e_integrals` + * :c:data:`ref_bitmask_energy` + + +.. c:var:: mo_one_e_integrals + + + File : :file:`mo_one_e_ints/mo_one_e_ints.irp.f` + + .. code:: fortran + + double precision, allocatable :: mo_one_e_integrals (mo_num,mo_num) + + + array of the mono electronic hamiltonian on the MOs basis : + sum of the kinetic and nuclear electronic potential (and pseudo potential if needed) + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`do_pseudo` + * :c:data:`mo_integrals_n_e` + * :c:data:`mo_kinetic_integrals` + * :c:data:`mo_num` + * :c:data:`mo_pseudo_integrals` + * :c:data:`read_mo_one_e_integrals` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`core_energy` + * :c:data:`core_energy_erf` + * :c:data:`fock_operator_closed_shell_ref_bitmask` + * :c:data:`psi_energy_h_core` + * :c:data:`ref_bitmask_energy` + + +.. c:var:: mo_overlap + + + File : :file:`mo_one_e_ints/mo_overlap.irp.f` + + .. code:: fortran + + double precision, allocatable :: mo_overlap (mo_num,mo_num) + + + Provider to check that the MOs are indeed orthonormal. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`ao_overlap` + * :c:data:`mo_coef` + * :c:data:`mo_num` + + + +.. c:var:: mo_pseudo_integrals + + + File : :file:`mo_one_e_ints/pot_mo_pseudo_ints.irp.f` + + .. code:: fortran + + double precision, allocatable :: mo_pseudo_integrals (mo_num,mo_num) + + + Pseudopotential integrals in |MO| basis + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`ao_pseudo_integrals` + * :c:data:`do_pseudo` + * :c:data:`mo_coef` + * :c:data:`mo_num` + * :c:data:`read_mo_integrals_pseudo` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_one_e_integrals` + + +.. c:var:: mo_spread_x + + + File : :file:`mo_one_e_ints/spread_dipole_mo.irp.f` + + .. code:: fortran + + double precision, allocatable :: mo_spread_x (mo_num,mo_num) + double precision, allocatable :: mo_spread_y (mo_num,mo_num) + double precision, allocatable :: mo_spread_z (mo_num,mo_num) + + + array of the integrals of MO_i * x^2 MO_j + array of the integrals of MO_i * y^2 MO_j + array of the integrals of MO_i * z^2 MO_j + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`ao_spread_x` + * :c:data:`mo_coef` + * :c:data:`mo_num` + + + +.. c:var:: mo_spread_y + + + File : :file:`mo_one_e_ints/spread_dipole_mo.irp.f` + + .. code:: fortran + + double precision, allocatable :: mo_spread_x (mo_num,mo_num) + double precision, allocatable :: mo_spread_y (mo_num,mo_num) + double precision, allocatable :: mo_spread_z (mo_num,mo_num) + + + array of the integrals of MO_i * x^2 MO_j + array of the integrals of MO_i * y^2 MO_j + array of the integrals of MO_i * z^2 MO_j + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`ao_spread_x` + * :c:data:`mo_coef` + * :c:data:`mo_num` + + + +.. c:var:: mo_spread_z + + + File : :file:`mo_one_e_ints/spread_dipole_mo.irp.f` + + .. code:: fortran + + double precision, allocatable :: mo_spread_x (mo_num,mo_num) + double precision, allocatable :: mo_spread_y (mo_num,mo_num) + double precision, allocatable :: mo_spread_z (mo_num,mo_num) + + + array of the integrals of MO_i * x^2 MO_j + array of the integrals of MO_i * y^2 MO_j + array of the integrals of MO_i * z^2 MO_j + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`ao_spread_x` + * :c:data:`mo_coef` + * :c:data:`mo_num` + + + +.. c:var:: s_mo_coef + + + File : :file:`mo_one_e_ints/ao_to_mo.irp.f` + + .. code:: fortran + + double precision, allocatable :: s_mo_coef (ao_num,mo_num) + + + Product S.C where S is the overlap matrix in the AO basis and C the mo_coef matrix. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`ao_overlap` + * :c:data:`mo_coef` + * :c:data:`mo_num` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`fock_matrix_ao` + + + +Subroutines / functions +----------------------- + +.. c:function:: mo_to_ao: + + + File : :file:`mo_one_e_ints/ao_to_mo.irp.f` + + .. code:: fortran + + subroutine mo_to_ao(A_mo,LDA_mo,A_ao,LDA_ao) + + + Transform A from the MO basis to the AO basis + + $(S.C).A_{mo}.(S.C)^\dagger$ + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`s_mo_coef` + * :c:data:`mo_num` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:data:`fock_matrix_ao` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`dgemm` + + +.. c:function:: mo_to_ao_no_overlap: + + + File : :file:`mo_one_e_ints/ao_to_mo.irp.f` + + .. code:: fortran + + subroutine mo_to_ao_no_overlap(A_mo,LDA_mo,A_ao,LDA_ao) + + + $C.A_{mo}.C^\dagger$ + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`mo_num` + * :c:data:`mo_coef` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`dgemm` + + +.. c:function:: orthonormalize_mos: + + + File : :file:`mo_one_e_ints/orthonormalize.irp.f` + + .. code:: fortran + + subroutine orthonormalize_mos + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_label` + * :c:data:`ao_num` + * :c:data:`mo_overlap` + * :c:data:`mo_num` + * :c:data:`mo_coef` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`save_ortho_mos` + * :c:func:`scf` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`ortho_lowdin` + + Touches: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_coef` + * :c:data:`mo_label` + diff --git a/docs/source/modules/mo_two_e_erf_ints.rst b/docs/source/modules/mo_two_e_erf_ints.rst new file mode 100644 index 00000000..7e85039b --- /dev/null +++ b/docs/source/modules/mo_two_e_erf_ints.rst @@ -0,0 +1,1000 @@ +.. _module_mo_two_e_erf_ints: + +.. program:: mo_two_e_erf_ints + +.. default-role:: option + +====================== +mo_two_e_erf_ints +====================== + +Here, all two-electron integrals (:math:`erf({\mu}_{erf} * r_{12})/r_{12}`) are computed. +As they have 4 indices and many are zero, they are stored in a map, as defined +in :file:`Utils/map_module.f90`. + +The range separation parameter :math:`{\mu}_{erf}` is the variable :option:`ao_two_e_erf_ints mu_erf`. + +To fetch an |MO| integral, use +`get_mo_two_e_integral_erf(i,j,k,l,mo_integrals_map_erf)` + +The conventions are: + +* For |MO| integrals : = <12|12> + +Be aware that it might not be the same conventions for |MO| and |AO| integrals. + + + + + +EZFIO parameters +---------------- + +.. option:: io_mo_two_e_integrals_erf + + Read/Write MO integrals with the long range interaction from/to disk [ Write | Read | None ] + + Default: None + + +Providers +--------- + +.. c:var:: core_energy_erf + + + File : :file:`mo_two_e_erf_ints/core_quantities_erf.irp.f` + + .. code:: fortran + + double precision :: core_energy_erf + + + energy from the core : contains all core-core contributionswith the erf interaction + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`list_inact` + * :c:data:`mo_one_e_integrals` + * :c:data:`mo_two_e_int_erf_jj` + * :c:data:`n_core_orb` + * :c:data:`nuclear_repulsion` + + + +.. c:var:: core_fock_operator_erf + + + File : :file:`mo_two_e_erf_ints/core_quantities_erf.irp.f` + + .. code:: fortran + + double precision, allocatable :: core_fock_operator_erf (mo_num,mo_num) + + + this is the contribution to the Fock operator from the core electrons with the erf interaction + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`list_inact` + * :c:data:`mo_integrals_erf_cache` + * :c:data:`mo_integrals_erf_cache_min` + * :c:data:`mo_integrals_erf_map` + * :c:data:`mo_num` + * :c:data:`mo_two_e_integrals_erf_in_map` + * :c:data:`n_core_orb` + + + +.. c:function:: insert_into_mo_integrals_erf_map: + + + File : :file:`mo_two_e_erf_ints/map_integrals_erf.irp.f` + + .. code:: fortran + + subroutine insert_into_mo_integrals_erf_map(n_integrals, & + buffer_i, buffer_values, thr) + + + Create new entry into |MO| map, or accumulate in an existing entry + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_integrals_erf_map` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`add_integrals_to_map_erf` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`map_update` + + +.. c:var:: int_erf_3_index + + + File : :file:`mo_two_e_erf_ints/ints_erf_3_index.irp.f` + + .. code:: fortran + + double precision, allocatable :: int_erf_3_index (mo_num,mo_num,mo_num) + double precision, allocatable :: int_erf_3_index_exc (mo_num,mo_num,mo_num) + + + int_erf_3_index(i,j) = = (ii|jj) with the erf interaction + + int_erf_3_index_exc(i,j) = = (ij|ij) with the erf interaction + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_integrals_erf_cache` + * :c:data:`mo_integrals_erf_cache_min` + * :c:data:`mo_integrals_erf_map` + * :c:data:`mo_num` + * :c:data:`mo_two_e_integrals_erf_in_map` + + + +.. c:var:: int_erf_3_index_exc + + + File : :file:`mo_two_e_erf_ints/ints_erf_3_index.irp.f` + + .. code:: fortran + + double precision, allocatable :: int_erf_3_index (mo_num,mo_num,mo_num) + double precision, allocatable :: int_erf_3_index_exc (mo_num,mo_num,mo_num) + + + int_erf_3_index(i,j) = = (ii|jj) with the erf interaction + + int_erf_3_index_exc(i,j) = = (ij|ij) with the erf interaction + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_integrals_erf_cache` + * :c:data:`mo_integrals_erf_cache_min` + * :c:data:`mo_integrals_erf_map` + * :c:data:`mo_num` + * :c:data:`mo_two_e_integrals_erf_in_map` + + + +.. c:var:: mo_integrals_erf_cache + + + File : :file:`mo_two_e_erf_ints/map_integrals_erf.irp.f` + + .. code:: fortran + + double precision, allocatable :: mo_integrals_erf_cache (0:64*64*64*64) + + + Cache of |MO| integrals for fast access + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_integrals_erf_cache_min` + * :c:data:`mo_integrals_erf_map` + * :c:data:`mo_two_e_integrals_erf_in_map` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`core_fock_operator_erf` + * :c:data:`int_erf_3_index` + * :c:data:`mo_two_e_int_erf_jj` + + +.. c:var:: mo_integrals_erf_cache_max + + + File : :file:`mo_two_e_erf_ints/map_integrals_erf.irp.f` + + .. code:: fortran + + integer :: mo_integrals_erf_cache_min + integer :: mo_integrals_erf_cache_max + + + Min and max values of the MOs for which the integrals are in the cache + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`elec_alpha_num` + * :c:data:`mo_num` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`core_fock_operator_erf` + * :c:data:`int_erf_3_index` + * :c:data:`mo_integrals_erf_cache` + * :c:data:`mo_two_e_int_erf_jj` + + +.. c:var:: mo_integrals_erf_cache_min + + + File : :file:`mo_two_e_erf_ints/map_integrals_erf.irp.f` + + .. code:: fortran + + integer :: mo_integrals_erf_cache_min + integer :: mo_integrals_erf_cache_max + + + Min and max values of the MOs for which the integrals are in the cache + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`elec_alpha_num` + * :c:data:`mo_num` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`core_fock_operator_erf` + * :c:data:`int_erf_3_index` + * :c:data:`mo_integrals_erf_cache` + * :c:data:`mo_two_e_int_erf_jj` + + +.. c:var:: mo_integrals_erf_map + + + File : :file:`mo_two_e_erf_ints/map_integrals_erf.irp.f` + + .. code:: fortran + + type(map_type) :: mo_integrals_erf_map + + + |MO| integrals + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_num` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`core_fock_operator_erf` + * :c:data:`int_erf_3_index` + * :c:data:`mo_integrals_erf_cache` + * :c:data:`mo_two_e_int_erf_jj` + * :c:data:`mo_two_e_integrals_erf_in_map` + + +.. c:var:: mo_two_e_int_erf_jj + + + File : :file:`mo_two_e_erf_ints/mo_bi_integrals_erf.irp.f` + + .. code:: fortran + + double precision, allocatable :: mo_two_e_int_erf_jj (mo_num,mo_num) + double precision, allocatable :: mo_two_e_int_erf_jj_exchange (mo_num,mo_num) + double precision, allocatable :: mo_two_e_int_erf_jj_anti (mo_num,mo_num) + + + mo_two_e_integrals_jj(i,j) = J_ij + mo_two_e_integrals_jj_exchange(i,j) = K_ij + mo_two_e_integrals_jj_anti(i,j) = J_ij - K_ij + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_integrals_erf_cache` + * :c:data:`mo_integrals_erf_cache_min` + * :c:data:`mo_integrals_erf_map` + * :c:data:`mo_num` + * :c:data:`mo_two_e_integrals_erf_in_map` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`core_energy_erf` + + +.. c:var:: mo_two_e_int_erf_jj_anti + + + File : :file:`mo_two_e_erf_ints/mo_bi_integrals_erf.irp.f` + + .. code:: fortran + + double precision, allocatable :: mo_two_e_int_erf_jj (mo_num,mo_num) + double precision, allocatable :: mo_two_e_int_erf_jj_exchange (mo_num,mo_num) + double precision, allocatable :: mo_two_e_int_erf_jj_anti (mo_num,mo_num) + + + mo_two_e_integrals_jj(i,j) = J_ij + mo_two_e_integrals_jj_exchange(i,j) = K_ij + mo_two_e_integrals_jj_anti(i,j) = J_ij - K_ij + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_integrals_erf_cache` + * :c:data:`mo_integrals_erf_cache_min` + * :c:data:`mo_integrals_erf_map` + * :c:data:`mo_num` + * :c:data:`mo_two_e_integrals_erf_in_map` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`core_energy_erf` + + +.. c:var:: mo_two_e_int_erf_jj_anti_from_ao + + + File : :file:`mo_two_e_erf_ints/mo_bi_integrals_erf.irp.f` + + .. code:: fortran + + double precision, allocatable :: mo_two_e_int_erf_jj_from_ao (mo_num,mo_num) + double precision, allocatable :: mo_two_e_int_erf_jj_exchange_from_ao (mo_num,mo_num) + double precision, allocatable :: mo_two_e_int_erf_jj_anti_from_ao (mo_num,mo_num) + + + mo_two_e_integral_jj_from_ao(i,j) = J_ij + mo_two_e_integrals_jj_exchange_from_ao(i,j) = J_ij + mo_two_e_integrals_jj_anti_from_ao(i,j) = J_ij - K_ij + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_integrals_erf_map` + * :c:data:`ao_integrals_threshold` + * :c:data:`ao_num` + * :c:data:`ao_overlap_abs` + * :c:data:`ao_two_e_integral_erf_schwartz` + * :c:data:`ao_two_e_integrals_erf_in_map` + * :c:data:`do_direct_integrals` + * :c:data:`mo_coef` + * :c:data:`mo_coef_transp` + * :c:data:`mo_num` + + + +.. c:var:: mo_two_e_int_erf_jj_exchange + + + File : :file:`mo_two_e_erf_ints/mo_bi_integrals_erf.irp.f` + + .. code:: fortran + + double precision, allocatable :: mo_two_e_int_erf_jj (mo_num,mo_num) + double precision, allocatable :: mo_two_e_int_erf_jj_exchange (mo_num,mo_num) + double precision, allocatable :: mo_two_e_int_erf_jj_anti (mo_num,mo_num) + + + mo_two_e_integrals_jj(i,j) = J_ij + mo_two_e_integrals_jj_exchange(i,j) = K_ij + mo_two_e_integrals_jj_anti(i,j) = J_ij - K_ij + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_integrals_erf_cache` + * :c:data:`mo_integrals_erf_cache_min` + * :c:data:`mo_integrals_erf_map` + * :c:data:`mo_num` + * :c:data:`mo_two_e_integrals_erf_in_map` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`core_energy_erf` + + +.. c:var:: mo_two_e_int_erf_jj_exchange_from_ao + + + File : :file:`mo_two_e_erf_ints/mo_bi_integrals_erf.irp.f` + + .. code:: fortran + + double precision, allocatable :: mo_two_e_int_erf_jj_from_ao (mo_num,mo_num) + double precision, allocatable :: mo_two_e_int_erf_jj_exchange_from_ao (mo_num,mo_num) + double precision, allocatable :: mo_two_e_int_erf_jj_anti_from_ao (mo_num,mo_num) + + + mo_two_e_integral_jj_from_ao(i,j) = J_ij + mo_two_e_integrals_jj_exchange_from_ao(i,j) = J_ij + mo_two_e_integrals_jj_anti_from_ao(i,j) = J_ij - K_ij + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_integrals_erf_map` + * :c:data:`ao_integrals_threshold` + * :c:data:`ao_num` + * :c:data:`ao_overlap_abs` + * :c:data:`ao_two_e_integral_erf_schwartz` + * :c:data:`ao_two_e_integrals_erf_in_map` + * :c:data:`do_direct_integrals` + * :c:data:`mo_coef` + * :c:data:`mo_coef_transp` + * :c:data:`mo_num` + + + +.. c:var:: mo_two_e_int_erf_jj_from_ao + + + File : :file:`mo_two_e_erf_ints/mo_bi_integrals_erf.irp.f` + + .. code:: fortran + + double precision, allocatable :: mo_two_e_int_erf_jj_from_ao (mo_num,mo_num) + double precision, allocatable :: mo_two_e_int_erf_jj_exchange_from_ao (mo_num,mo_num) + double precision, allocatable :: mo_two_e_int_erf_jj_anti_from_ao (mo_num,mo_num) + + + mo_two_e_integral_jj_from_ao(i,j) = J_ij + mo_two_e_integrals_jj_exchange_from_ao(i,j) = J_ij + mo_two_e_integrals_jj_anti_from_ao(i,j) = J_ij - K_ij + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_integrals_erf_map` + * :c:data:`ao_integrals_threshold` + * :c:data:`ao_num` + * :c:data:`ao_overlap_abs` + * :c:data:`ao_two_e_integral_erf_schwartz` + * :c:data:`ao_two_e_integrals_erf_in_map` + * :c:data:`do_direct_integrals` + * :c:data:`mo_coef` + * :c:data:`mo_coef_transp` + * :c:data:`mo_num` + + + +.. c:var:: mo_two_e_integrals_erf_in_map + + + File : :file:`mo_two_e_erf_ints/mo_bi_integrals_erf.irp.f` + + .. code:: fortran + + logical :: mo_two_e_integrals_erf_in_map + + + If True, the map of MO two-electron integrals is provided + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`ao_two_e_integrals_erf_in_map` + * :c:data:`ao_two_e_integrals_in_map` + * :c:data:`ezfio_filename` + * :c:data:`full_ijkl_bitmask_4` + * :c:data:`mo_coef` + * :c:data:`mo_coef_transp` + * :c:data:`mo_integrals_erf_map` + * :c:data:`mo_integrals_threshold` + * :c:data:`mo_num` + * :c:data:`n_int` + * :c:data:`read_mo_two_e_integrals_erf` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`core_fock_operator_erf` + * :c:data:`int_erf_3_index` + * :c:data:`mo_integrals_erf_cache` + * :c:data:`mo_two_e_int_erf_jj` + + + +Subroutines / functions +----------------------- + +.. c:function:: add_integrals_to_map_erf: + + + File : :file:`mo_two_e_erf_ints/mo_bi_integrals_erf.irp.f` + + .. code:: fortran + + subroutine add_integrals_to_map_erf(mask_ijkl) + + + Adds integrals to tha MO map according to some bitmask + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_coef` + * :c:data:`mo_integrals_threshold` + * :c:data:`mo_coef_transp` + * :c:data:`ao_num` + * :c:data:`n_int` + * :c:data:`mo_num` + * :c:data:`ao_two_e_integrals_in_map` + * :c:data:`mo_integrals_erf_map` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_two_e_integrals_erf_in_map` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`bitstring_to_list` + * :c:func:`bitstring_to_str` + * :c:func:`cpu_time` + * :c:func:`get_ao_two_e_integrals_erf` + * :c:func:`insert_into_mo_integrals_erf_map` + * :c:func:`map_merge` + * :c:func:`mo_two_e_integrals_index` + * :c:func:`wall_time` + + +.. c:function:: clear_mo_erf_map: + + + File : :file:`mo_two_e_erf_ints/mo_bi_integrals_erf.irp.f` + + .. code:: fortran + + subroutine clear_mo_erf_map + + + Frees the memory of the MO map + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_integrals_erf_map` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`map_deinit` + + +.. c:function:: get_mo_erf_map_size: + + + File : :file:`mo_two_e_erf_ints/map_integrals_erf.irp.f` + + .. code:: fortran + + integer*8 function get_mo_erf_map_size() + + + Returns the number of elements in the |MO| map + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_integrals_erf_map` + + +.. c:function:: get_mo_two_e_integral_erf: + + + File : :file:`mo_two_e_erf_ints/map_integrals_erf.irp.f` + + .. code:: fortran + + double precision function get_mo_two_e_integral_erf(i,j,k,l,map) + + + Returns one integral $\langle ij|kl \rangle$ in the |MO| basis + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_integrals_erf_cache` + * :c:data:`mo_integrals_erf_cache_min` + * :c:data:`mo_two_e_integrals_erf_in_map` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`map_get` + * :c:func:`two_e_integrals_index` + + +.. c:function:: get_mo_two_e_integrals_erf: + + + File : :file:`mo_two_e_erf_ints/map_integrals_erf.irp.f` + + .. code:: fortran + + subroutine get_mo_two_e_integrals_erf(j,k,l,sze,out_val,map) + + + Returns multiple integrals $\langle ij|kl \rangle$ in the |MO| basis, all + i for j,k,l fixed. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_two_e_integrals_erf_in_map` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`map_get_many` + * :c:func:`two_e_integrals_index` + + +.. c:function:: get_mo_two_e_integrals_erf_coulomb_ii: + + + File : :file:`mo_two_e_erf_ints/map_integrals_erf.irp.f` + + .. code:: fortran + + subroutine get_mo_two_e_integrals_erf_coulomb_ii(k,l,sze,out_val,map) + + + Returns multiple integrals $\langle ki|li \rangle$ + + k(1)i(2) 1/r12 l(1)i(2) :: out_val(i1) + for k,l fixed. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_two_e_integrals_erf_in_map` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`map_get_many` + * :c:func:`two_e_integrals_index` + + +.. c:function:: get_mo_two_e_integrals_erf_exch_ii: + + + File : :file:`mo_two_e_erf_ints/map_integrals_erf.irp.f` + + .. code:: fortran + + subroutine get_mo_two_e_integrals_erf_exch_ii(k,l,sze,out_val,map) + + + Returns multiple integrals $\langle ki|il \rangle$ + + $\int k(1)i(2) \frac{1}{r_{12}} i(1)l(2)$ :: out_val(i1) + for k,l fixed. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_two_e_integrals_erf_in_map` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`map_get_many` + * :c:func:`two_e_integrals_index` + + +.. c:function:: get_mo_two_e_integrals_erf_i1j1: + + + File : :file:`mo_two_e_erf_ints/map_integrals_erf.irp.f` + + .. code:: fortran + + subroutine get_mo_two_e_integrals_erf_i1j1(k,l,sze,out_array,map) + + + Returns multiple integrals $\langle ik|jl \rangle$ in the |MO| basis, all + $\int i(1)j(1) \frac{\erf(\mu * r_{12})}{r_{12}} k(2)l(2)$ + i, j for k,l fixed. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_two_e_integrals_erf_in_map` + * :c:data:`mo_integrals_erf_map` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`i2radix_sort` + * :c:func:`i8radix_sort` + * :c:func:`iradix_sort` + * :c:func:`map_get_many` + * :c:func:`two_e_integrals_index` + + +.. c:function:: get_mo_two_e_integrals_erf_ij: + + + File : :file:`mo_two_e_erf_ints/map_integrals_erf.irp.f` + + .. code:: fortran + + subroutine get_mo_two_e_integrals_erf_ij(k,l,sze,out_array,map) + + + Returns multiple integrals $\langle ij|kl \rangle$ in the |MO| basis, all + $\int i(1)j(2) \frac{1}{r_{12}} k(1)l(2)$ + i, j for k,l fixed. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_two_e_integrals_erf_in_map` + * :c:data:`mo_integrals_erf_map` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`i2radix_sort` + * :c:func:`i8radix_sort` + * :c:func:`iradix_sort` + * :c:func:`map_get_many` + * :c:func:`two_e_integrals_index` + + +.. c:function:: load_mo_integrals_erf: + + + File : :file:`mo_two_e_erf_ints/map_integrals_erf.irp.f` + + .. code:: fortran + + integer function load_mo_integrals_erf(filename) + + + Read from disk the |MO| erf integrals + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_integrals_erf_map` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`cache_map_reallocate` + * :c:func:`map_deinit` + * :c:func:`map_sort` + + +.. c:function:: mo_two_e_integral_erf: + + + File : :file:`mo_two_e_erf_ints/map_integrals_erf.irp.f` + + .. code:: fortran + + double precision function mo_two_e_integral_erf(i,j,k,l) + + + Returns one integral $\langle ij|kl \rangle$ in the |MO| basis + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_integrals_erf_cache` + * :c:data:`mo_integrals_erf_map` + * :c:data:`mo_two_e_integrals_erf_in_map` + + +.. c:function:: mo_two_e_integrals_erf_index: + + + File : :file:`mo_two_e_erf_ints/mo_bi_integrals_erf.irp.f` + + .. code:: fortran + + subroutine mo_two_e_integrals_erf_index(i,j,k,l,i1) + + + Computes an unique index for i,j,k,l integrals + + +.. c:function:: provide_all_mo_integrals_erf: + + + File : :file:`mo_two_e_erf_ints/mo_bi_integrals_erf.irp.f` + + .. code:: fortran + + subroutine provide_all_mo_integrals_erf + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_two_e_integrals_erf_in_map` + * :c:data:`mo_two_e_int_erf_jj` + * :c:data:`mo_two_e_int_erf_jj` + * :c:data:`mo_integrals_erf_map` + * :c:data:`mo_two_e_int_erf_jj` + + +.. c:function:: save_erf_two_e_integrals_mo: + + + File : :file:`mo_two_e_erf_ints/routines_save_integrals_erf.irp.f` + + .. code:: fortran + + subroutine save_erf_two_e_integrals_mo + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_two_e_integrals_erf_in_map` + * :c:data:`ezfio_filename` + * :c:data:`mo_integrals_erf_map` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`routine` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`ezfio_set_mo_two_e_erf_ints_io_mo_two_e_integrals_erf` + * :c:func:`ezfio_set_work_empty` + * :c:func:`map_save_to_disk` + + +.. c:function:: save_erf_two_e_ints_mo_into_ints_mo: + + + File : :file:`mo_two_e_erf_ints/routines_save_integrals_erf.irp.f` + + .. code:: fortran + + subroutine save_erf_two_e_ints_mo_into_ints_mo + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_two_e_integrals_erf_in_map` + * :c:data:`ezfio_filename` + * :c:data:`mo_integrals_erf_map` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`ezfio_set_mo_two_e_ints_io_mo_two_e_integrals` + * :c:func:`ezfio_set_work_empty` + * :c:func:`map_save_to_disk` + diff --git a/docs/source/modules/mo_two_e_ints.rst b/docs/source/modules/mo_two_e_ints.rst new file mode 100644 index 00000000..bb860e59 --- /dev/null +++ b/docs/source/modules/mo_two_e_ints.rst @@ -0,0 +1,1312 @@ +.. _module_mo_two_e_ints: + +.. program:: mo_two_e_ints + +.. default-role:: option + +================== +mo_two_e_ints +================== + +Here, all two-electron integrals (:math:`1/r_{12}`) are computed. +As they have 4 indices and many are zero, they are stored in a map, as defined +in :file:`Utils/map_module.f90`. + +To fetch an |AO| integral, use the +`get_ao_two_e_integral(i,j,k,l,ao_integrals_map)` function, and +to fetch an |MO| integral, use +`get_two_e_integral(i,j,k,l,mo_integrals_map)` or +`mo_two_e_integral(i,j,k,l)`. + +The conventions are: + +* For |AO| integrals : (ik|jl) = (11|22) +* For |MO| integrals : = <12|12> + + + + + + +EZFIO parameters +---------------- + +.. option:: io_mo_two_e_integrals + + Read/Write |MO| integrals from/to disk [ Write | Read | None ] + + Default: None + +.. option:: mo_integrals_threshold + + If | | < `mo_integrals_threshold` then is zero + + Default: 1.e-15 + +.. option:: no_vvvv_integrals + + If `True`, computes all integrals except for the integrals having 4 virtual indices + + Default: False + +.. option:: no_ivvv_integrals + + Can be switched on only if `no_vvvv_integrals` is `True`, then does not compute the integrals with 3 virtual indices and 1 belonging to the core inactive active orbitals + + Default: False + +.. option:: no_vvv_integrals + + Can be switched on only if `no_vvvv_integrals` is `True`, then does not compute the integrals with 3 virtual orbitals + + Default: False + + +Providers +--------- + +.. c:var:: big_array_coulomb_integrals + + + File : :file:`mo_two_e_ints/integrals_3_index.irp.f` + + .. code:: fortran + + double precision, allocatable :: big_array_coulomb_integrals (mo_num,mo_num,mo_num) + double precision, allocatable :: big_array_exchange_integrals (mo_num,mo_num,mo_num) + + + big_array_coulomb_integrals(i,j) = = (ii|jj) + + big_array_exchange_integrals(i,j) = = (ij|ij) + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_integrals_cache` + * :c:data:`mo_integrals_cache_min` + * :c:data:`mo_integrals_map` + * :c:data:`mo_num` + * :c:data:`mo_two_e_integrals_in_map` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`coef_hf_selector` + * :c:data:`h_matrix_all_dets` + * :c:data:`h_matrix_cas` + + +.. c:var:: big_array_exchange_integrals + + + File : :file:`mo_two_e_ints/integrals_3_index.irp.f` + + .. code:: fortran + + double precision, allocatable :: big_array_coulomb_integrals (mo_num,mo_num,mo_num) + double precision, allocatable :: big_array_exchange_integrals (mo_num,mo_num,mo_num) + + + big_array_coulomb_integrals(i,j) = = (ii|jj) + + big_array_exchange_integrals(i,j) = = (ij|ij) + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_integrals_cache` + * :c:data:`mo_integrals_cache_min` + * :c:data:`mo_integrals_map` + * :c:data:`mo_num` + * :c:data:`mo_two_e_integrals_in_map` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`coef_hf_selector` + * :c:data:`h_matrix_all_dets` + * :c:data:`h_matrix_cas` + + +.. c:var:: core_energy + + + File : :file:`mo_two_e_ints/core_quantities.irp.f` + + .. code:: fortran + + double precision :: core_energy + + + energy from the core : contains all core-core contributions + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`list_inact` + * :c:data:`mo_one_e_integrals` + * :c:data:`mo_two_e_integrals_jj` + * :c:data:`n_core_orb` + * :c:data:`nuclear_repulsion` + + + +.. c:var:: core_fock_operator + + + File : :file:`mo_two_e_ints/core_quantities.irp.f` + + .. code:: fortran + + double precision, allocatable :: core_fock_operator (mo_num,mo_num) + + + this is the contribution to the Fock operator from the core electrons + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`list_inact` + * :c:data:`mo_integrals_cache` + * :c:data:`mo_integrals_cache_min` + * :c:data:`mo_integrals_map` + * :c:data:`mo_num` + * :c:data:`mo_two_e_integrals_in_map` + * :c:data:`n_core_orb` + + + +.. c:function:: insert_into_mo_integrals_map: + + + File : :file:`mo_two_e_ints/map_integrals.irp.f` + + .. code:: fortran + + subroutine insert_into_mo_integrals_map(n_integrals, & + buffer_i, buffer_values, thr) + + + Create new entry into MO map, or accumulate in an existing entry + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_integrals_map` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`add_integrals_to_map` + * :c:func:`add_integrals_to_map_no_exit_34` + * :c:func:`add_integrals_to_map_three_indices` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`map_update` + + +.. c:var:: mo_integrals_cache + + + File : :file:`mo_two_e_ints/map_integrals.irp.f` + + .. code:: fortran + + double precision, allocatable :: mo_integrals_cache (0_8:128_8*128_8*128_8*128_8) + + + Cache of MO integrals for fast access + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_integrals_cache_min` + * :c:data:`mo_integrals_map` + * :c:data:`mo_two_e_integrals_in_map` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`big_array_coulomb_integrals` + * :c:data:`core_fock_operator` + * :c:data:`mo_two_e_integrals_jj` + + +.. c:var:: mo_integrals_cache_max + + + File : :file:`mo_two_e_ints/map_integrals.irp.f` + + .. code:: fortran + + integer*4 :: mo_integrals_cache_min + integer*4 :: mo_integrals_cache_max + integer*8 :: mo_integrals_cache_min_8 + integer*8 :: mo_integrals_cache_max_8 + + + Min and max values of the MOs for which the integrals are in the cache + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`elec_alpha_num` + * :c:data:`mo_num` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`big_array_coulomb_integrals` + * :c:data:`core_fock_operator` + * :c:data:`mo_integrals_cache` + * :c:data:`mo_two_e_integrals_jj` + + +.. c:var:: mo_integrals_cache_max_8 + + + File : :file:`mo_two_e_ints/map_integrals.irp.f` + + .. code:: fortran + + integer*4 :: mo_integrals_cache_min + integer*4 :: mo_integrals_cache_max + integer*8 :: mo_integrals_cache_min_8 + integer*8 :: mo_integrals_cache_max_8 + + + Min and max values of the MOs for which the integrals are in the cache + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`elec_alpha_num` + * :c:data:`mo_num` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`big_array_coulomb_integrals` + * :c:data:`core_fock_operator` + * :c:data:`mo_integrals_cache` + * :c:data:`mo_two_e_integrals_jj` + + +.. c:var:: mo_integrals_cache_min + + + File : :file:`mo_two_e_ints/map_integrals.irp.f` + + .. code:: fortran + + integer*4 :: mo_integrals_cache_min + integer*4 :: mo_integrals_cache_max + integer*8 :: mo_integrals_cache_min_8 + integer*8 :: mo_integrals_cache_max_8 + + + Min and max values of the MOs for which the integrals are in the cache + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`elec_alpha_num` + * :c:data:`mo_num` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`big_array_coulomb_integrals` + * :c:data:`core_fock_operator` + * :c:data:`mo_integrals_cache` + * :c:data:`mo_two_e_integrals_jj` + + +.. c:var:: mo_integrals_cache_min_8 + + + File : :file:`mo_two_e_ints/map_integrals.irp.f` + + .. code:: fortran + + integer*4 :: mo_integrals_cache_min + integer*4 :: mo_integrals_cache_max + integer*8 :: mo_integrals_cache_min_8 + integer*8 :: mo_integrals_cache_max_8 + + + Min and max values of the MOs for which the integrals are in the cache + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`elec_alpha_num` + * :c:data:`mo_num` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`big_array_coulomb_integrals` + * :c:data:`core_fock_operator` + * :c:data:`mo_integrals_cache` + * :c:data:`mo_two_e_integrals_jj` + + +.. c:var:: mo_integrals_map + + + File : :file:`mo_two_e_ints/map_integrals.irp.f` + + .. code:: fortran + + type(map_type) :: mo_integrals_map + + + MO integrals + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_num` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`big_array_coulomb_integrals` + * :c:data:`coef_hf_selector` + * :c:data:`core_fock_operator` + * :c:data:`fock_operator_closed_shell_ref_bitmask` + * :c:data:`fock_wee_closed_shell` + * :c:data:`h_matrix_all_dets` + * :c:data:`h_matrix_cas` + * :c:data:`mo_integrals_cache` + * :c:data:`mo_two_e_integrals_in_map` + * :c:data:`mo_two_e_integrals_jj` + + +.. c:var:: mo_two_e_integral_jj_from_ao + + + File : :file:`mo_two_e_ints/mo_bi_integrals.irp.f` + + .. code:: fortran + + double precision, allocatable :: mo_two_e_integral_jj_from_ao (mo_num,mo_num) + double precision, allocatable :: mo_two_e_integrals_jj_exchange_from_ao (mo_num,mo_num) + double precision, allocatable :: mo_two_e_integrals_jj_anti_from_ao (mo_num,mo_num) + + + mo_two_e_integral_jj_from_ao(i,j) = J_ij + mo_two_e_integrals_jj_exchange_from_ao(i,j) = J_ij + mo_two_e_integrals_jj_anti_from_ao(i,j) = J_ij - K_ij + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_integrals_map` + * :c:data:`ao_integrals_threshold` + * :c:data:`ao_num` + * :c:data:`ao_overlap_abs` + * :c:data:`ao_two_e_integral_schwartz` + * :c:data:`ao_two_e_integrals_in_map` + * :c:data:`do_direct_integrals` + * :c:data:`mo_coef` + * :c:data:`mo_coef_transp` + * :c:data:`mo_num` + + + +.. c:var:: mo_two_e_integrals_in_map + + + File : :file:`mo_two_e_ints/mo_bi_integrals.irp.f` + + .. code:: fortran + + logical :: mo_two_e_integrals_in_map + + + If True, the map of MO two-electron integrals is provided + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`ao_two_e_integrals_in_map` + * :c:data:`core_inact_act_bitmask_4` + * :c:data:`ezfio_filename` + * :c:data:`full_ijkl_bitmask_4` + * :c:data:`list_inact` + * :c:data:`mo_class` + * :c:data:`mo_coef` + * :c:data:`mo_coef_transp` + * :c:data:`mo_integrals_map` + * :c:data:`mo_integrals_threshold` + * :c:data:`mo_num` + * :c:data:`mpi_master` + * :c:data:`n_int` + * :c:data:`no_ivvv_integrals` + * :c:data:`no_vvv_integrals` + * :c:data:`no_vvvv_integrals` + * :c:data:`read_mo_two_e_integrals` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`big_array_coulomb_integrals` + * :c:data:`ci_electronic_energy` + * :c:data:`coef_hf_selector` + * :c:data:`core_fock_operator` + * :c:data:`fock_operator_closed_shell_ref_bitmask` + * :c:data:`fock_wee_closed_shell` + * :c:data:`h_matrix_all_dets` + * :c:data:`h_matrix_cas` + * :c:data:`mo_integrals_cache` + * :c:data:`mo_two_e_integrals_jj` + + +.. c:var:: mo_two_e_integrals_jj + + + File : :file:`mo_two_e_ints/mo_bi_integrals.irp.f` + + .. code:: fortran + + double precision, allocatable :: mo_two_e_integrals_jj (mo_num,mo_num) + double precision, allocatable :: mo_two_e_integrals_jj_exchange (mo_num,mo_num) + double precision, allocatable :: mo_two_e_integrals_jj_anti (mo_num,mo_num) + + + mo_two_e_integrals_jj(i,j) = J_ij + mo_two_e_integrals_jj_exchange(i,j) = K_ij + mo_two_e_integrals_jj_anti(i,j) = J_ij - K_ij + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_integrals_cache` + * :c:data:`mo_integrals_cache_min` + * :c:data:`mo_integrals_map` + * :c:data:`mo_num` + * :c:data:`mo_two_e_integrals_in_map` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`core_energy` + * :c:data:`ref_bitmask_energy` + + +.. c:var:: mo_two_e_integrals_jj_anti + + + File : :file:`mo_two_e_ints/mo_bi_integrals.irp.f` + + .. code:: fortran + + double precision, allocatable :: mo_two_e_integrals_jj (mo_num,mo_num) + double precision, allocatable :: mo_two_e_integrals_jj_exchange (mo_num,mo_num) + double precision, allocatable :: mo_two_e_integrals_jj_anti (mo_num,mo_num) + + + mo_two_e_integrals_jj(i,j) = J_ij + mo_two_e_integrals_jj_exchange(i,j) = K_ij + mo_two_e_integrals_jj_anti(i,j) = J_ij - K_ij + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_integrals_cache` + * :c:data:`mo_integrals_cache_min` + * :c:data:`mo_integrals_map` + * :c:data:`mo_num` + * :c:data:`mo_two_e_integrals_in_map` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`core_energy` + * :c:data:`ref_bitmask_energy` + + +.. c:var:: mo_two_e_integrals_jj_anti_from_ao + + + File : :file:`mo_two_e_ints/mo_bi_integrals.irp.f` + + .. code:: fortran + + double precision, allocatable :: mo_two_e_integral_jj_from_ao (mo_num,mo_num) + double precision, allocatable :: mo_two_e_integrals_jj_exchange_from_ao (mo_num,mo_num) + double precision, allocatable :: mo_two_e_integrals_jj_anti_from_ao (mo_num,mo_num) + + + mo_two_e_integral_jj_from_ao(i,j) = J_ij + mo_two_e_integrals_jj_exchange_from_ao(i,j) = J_ij + mo_two_e_integrals_jj_anti_from_ao(i,j) = J_ij - K_ij + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_integrals_map` + * :c:data:`ao_integrals_threshold` + * :c:data:`ao_num` + * :c:data:`ao_overlap_abs` + * :c:data:`ao_two_e_integral_schwartz` + * :c:data:`ao_two_e_integrals_in_map` + * :c:data:`do_direct_integrals` + * :c:data:`mo_coef` + * :c:data:`mo_coef_transp` + * :c:data:`mo_num` + + + +.. c:var:: mo_two_e_integrals_jj_exchange + + + File : :file:`mo_two_e_ints/mo_bi_integrals.irp.f` + + .. code:: fortran + + double precision, allocatable :: mo_two_e_integrals_jj (mo_num,mo_num) + double precision, allocatable :: mo_two_e_integrals_jj_exchange (mo_num,mo_num) + double precision, allocatable :: mo_two_e_integrals_jj_anti (mo_num,mo_num) + + + mo_two_e_integrals_jj(i,j) = J_ij + mo_two_e_integrals_jj_exchange(i,j) = K_ij + mo_two_e_integrals_jj_anti(i,j) = J_ij - K_ij + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_integrals_cache` + * :c:data:`mo_integrals_cache_min` + * :c:data:`mo_integrals_map` + * :c:data:`mo_num` + * :c:data:`mo_two_e_integrals_in_map` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`core_energy` + * :c:data:`ref_bitmask_energy` + + +.. c:var:: mo_two_e_integrals_jj_exchange_from_ao + + + File : :file:`mo_two_e_ints/mo_bi_integrals.irp.f` + + .. code:: fortran + + double precision, allocatable :: mo_two_e_integral_jj_from_ao (mo_num,mo_num) + double precision, allocatable :: mo_two_e_integrals_jj_exchange_from_ao (mo_num,mo_num) + double precision, allocatable :: mo_two_e_integrals_jj_anti_from_ao (mo_num,mo_num) + + + mo_two_e_integral_jj_from_ao(i,j) = J_ij + mo_two_e_integrals_jj_exchange_from_ao(i,j) = J_ij + mo_two_e_integrals_jj_anti_from_ao(i,j) = J_ij - K_ij + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_integrals_map` + * :c:data:`ao_integrals_threshold` + * :c:data:`ao_num` + * :c:data:`ao_overlap_abs` + * :c:data:`ao_two_e_integral_schwartz` + * :c:data:`ao_two_e_integrals_in_map` + * :c:data:`do_direct_integrals` + * :c:data:`mo_coef` + * :c:data:`mo_coef_transp` + * :c:data:`mo_num` + + + +.. c:var:: mo_two_e_integrals_vv_anti_from_ao + + + File : :file:`mo_two_e_ints/mo_bi_integrals.irp.f` + + .. code:: fortran + + double precision, allocatable :: mo_two_e_integrals_vv_from_ao (mo_num,mo_num) + double precision, allocatable :: mo_two_e_integrals_vv_exchange_from_ao (mo_num,mo_num) + double precision, allocatable :: mo_two_e_integrals_vv_anti_from_ao (mo_num,mo_num) + + + mo_two_e_integrals_vv_from_ao(i,j) = J_ij + mo_two_e_integrals_vv_exchange_from_ao(i,j) = J_ij + mo_two_e_integrals_vv_anti_from_ao(i,j) = J_ij - K_ij + but only for the virtual orbitals + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_integrals_map` + * :c:data:`ao_integrals_threshold` + * :c:data:`ao_num` + * :c:data:`ao_overlap_abs` + * :c:data:`ao_two_e_integral_schwartz` + * :c:data:`ao_two_e_integrals_in_map` + * :c:data:`do_direct_integrals` + * :c:data:`list_inact` + * :c:data:`mo_coef` + * :c:data:`mo_coef_transp` + * :c:data:`mo_num` + * :c:data:`n_core_orb` + + + +.. c:var:: mo_two_e_integrals_vv_exchange_from_ao + + + File : :file:`mo_two_e_ints/mo_bi_integrals.irp.f` + + .. code:: fortran + + double precision, allocatable :: mo_two_e_integrals_vv_from_ao (mo_num,mo_num) + double precision, allocatable :: mo_two_e_integrals_vv_exchange_from_ao (mo_num,mo_num) + double precision, allocatable :: mo_two_e_integrals_vv_anti_from_ao (mo_num,mo_num) + + + mo_two_e_integrals_vv_from_ao(i,j) = J_ij + mo_two_e_integrals_vv_exchange_from_ao(i,j) = J_ij + mo_two_e_integrals_vv_anti_from_ao(i,j) = J_ij - K_ij + but only for the virtual orbitals + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_integrals_map` + * :c:data:`ao_integrals_threshold` + * :c:data:`ao_num` + * :c:data:`ao_overlap_abs` + * :c:data:`ao_two_e_integral_schwartz` + * :c:data:`ao_two_e_integrals_in_map` + * :c:data:`do_direct_integrals` + * :c:data:`list_inact` + * :c:data:`mo_coef` + * :c:data:`mo_coef_transp` + * :c:data:`mo_num` + * :c:data:`n_core_orb` + + + +.. c:var:: mo_two_e_integrals_vv_from_ao + + + File : :file:`mo_two_e_ints/mo_bi_integrals.irp.f` + + .. code:: fortran + + double precision, allocatable :: mo_two_e_integrals_vv_from_ao (mo_num,mo_num) + double precision, allocatable :: mo_two_e_integrals_vv_exchange_from_ao (mo_num,mo_num) + double precision, allocatable :: mo_two_e_integrals_vv_anti_from_ao (mo_num,mo_num) + + + mo_two_e_integrals_vv_from_ao(i,j) = J_ij + mo_two_e_integrals_vv_exchange_from_ao(i,j) = J_ij + mo_two_e_integrals_vv_anti_from_ao(i,j) = J_ij - K_ij + but only for the virtual orbitals + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_integrals_map` + * :c:data:`ao_integrals_threshold` + * :c:data:`ao_num` + * :c:data:`ao_overlap_abs` + * :c:data:`ao_two_e_integral_schwartz` + * :c:data:`ao_two_e_integrals_in_map` + * :c:data:`do_direct_integrals` + * :c:data:`list_inact` + * :c:data:`mo_coef` + * :c:data:`mo_coef_transp` + * :c:data:`mo_num` + * :c:data:`n_core_orb` + + + + +Subroutines / functions +----------------------- + +.. c:function:: add_integrals_to_map: + + + File : :file:`mo_two_e_ints/mo_bi_integrals.irp.f` + + .. code:: fortran + + subroutine add_integrals_to_map(mask_ijkl) + + + Adds integrals to tha MO map according to some bitmask + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_coef` + * :c:data:`mo_integrals_threshold` + * :c:data:`mo_coef_transp` + * :c:data:`ao_num` + * :c:data:`mo_integrals_map` + * :c:data:`mo_num` + * :c:data:`ao_two_e_integrals_in_map` + * :c:data:`n_int` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_two_e_integrals_in_map` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`bitstring_to_list` + * :c:func:`bitstring_to_str` + * :c:func:`cpu_time` + * :c:func:`get_ao_two_e_integrals` + * :c:func:`insert_into_mo_integrals_map` + * :c:func:`map_merge` + * :c:func:`mo_two_e_integrals_index` + * :c:func:`wall_time` + + +.. c:function:: add_integrals_to_map_no_exit_34: + + + File : :file:`mo_two_e_ints/mo_bi_integrals.irp.f` + + .. code:: fortran + + subroutine add_integrals_to_map_no_exit_34(mask_ijkl) + + + Adds integrals to tha MO map according to some bitmask + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_coef` + * :c:data:`mo_integrals_threshold` + * :c:data:`mo_coef_transp` + * :c:data:`ao_num` + * :c:data:`mo_integrals_map` + * :c:data:`mo_num` + * :c:data:`ao_two_e_integrals_in_map` + * :c:data:`n_int` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_two_e_integrals_in_map` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`bitstring_to_list` + * :c:func:`cpu_time` + * :c:func:`get_ao_two_e_integrals` + * :c:func:`insert_into_mo_integrals_map` + * :c:func:`map_merge` + * :c:func:`mo_two_e_integrals_index` + * :c:func:`wall_time` + + +.. c:function:: add_integrals_to_map_three_indices: + + + File : :file:`mo_two_e_ints/mo_bi_integrals.irp.f` + + .. code:: fortran + + subroutine add_integrals_to_map_three_indices(mask_ijk) + + + Adds integrals to tha MO map according to some bitmask + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_coef` + * :c:data:`mo_integrals_threshold` + * :c:data:`mo_coef_transp` + * :c:data:`ao_num` + * :c:data:`mo_integrals_map` + * :c:data:`mo_num` + * :c:data:`ao_two_e_integrals_in_map` + * :c:data:`n_int` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_two_e_integrals_in_map` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`bitstring_to_list` + * :c:func:`bitstring_to_str` + * :c:func:`cpu_time` + * :c:func:`get_ao_two_e_integrals` + * :c:func:`insert_into_mo_integrals_map` + * :c:func:`map_merge` + * :c:func:`mo_two_e_integrals_index` + * :c:func:`wall_time` + + +.. c:function:: clear_mo_map: + + + File : :file:`mo_two_e_ints/mo_bi_integrals.irp.f` + + .. code:: fortran + + subroutine clear_mo_map + + + Frees the memory of the MO map + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_integrals_map` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`map_deinit` + + +.. c:function:: dump_mo_integrals: + + + File : :file:`mo_two_e_ints/map_integrals.irp.f` + + .. code:: fortran + + subroutine dump_mo_integrals(filename) + + + Save to disk the |MO| integrals + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_integrals_map` + * :c:data:`mpi_master` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`ezfio_set_work_empty` + + +.. c:function:: get_mo_map_size: + + + File : :file:`mo_two_e_ints/map_integrals.irp.f` + + .. code:: fortran + + integer*8 function get_mo_map_size() + + + Return the number of elements in the MO map + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_integrals_map` + + +.. c:function:: get_mo_two_e_integrals: + + + File : :file:`mo_two_e_ints/map_integrals.irp.f` + + .. code:: fortran + + subroutine get_mo_two_e_integrals(j,k,l,sze,out_val,map) + + + Returns multiple integrals in the MO basis, all + i for j,k,l fixed. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_two_e_integrals_in_map` + * :c:data:`mo_integrals_cache` + * :c:data:`mo_integrals_cache_min` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`get_d0` + * :c:func:`get_d1` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`map_get` + + +.. c:function:: get_mo_two_e_integrals_coulomb_ii: + + + File : :file:`mo_two_e_ints/map_integrals.irp.f` + + .. code:: fortran + + subroutine get_mo_two_e_integrals_coulomb_ii(k,l,sze,out_val,map) + + + Returns multiple integrals + k(1)i(2) 1/r12 l(1)i(2) :: out_val(i1) + for k,l fixed. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_two_e_integrals_in_map` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:data:`fock_operator_closed_shell_ref_bitmask` + * :c:data:`fock_wee_closed_shell` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`map_get_many` + * :c:func:`two_e_integrals_index` + + +.. c:function:: get_mo_two_e_integrals_exch_ii: + + + File : :file:`mo_two_e_ints/map_integrals.irp.f` + + .. code:: fortran + + subroutine get_mo_two_e_integrals_exch_ii(k,l,sze,out_val,map) + + + Returns multiple integrals + k(1)i(2) 1/r12 i(1)l(2) :: out_val(i1) + for k,l fixed. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_two_e_integrals_in_map` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:data:`fock_operator_closed_shell_ref_bitmask` + * :c:data:`fock_wee_closed_shell` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`map_get_many` + * :c:func:`two_e_integrals_index` + + +.. c:function:: get_mo_two_e_integrals_i1j1: + + + File : :file:`mo_two_e_ints/map_integrals.irp.f` + + .. code:: fortran + + subroutine get_mo_two_e_integrals_i1j1(k,l,sze,out_array,map) + + + Returns multiple integrals in the MO basis, all + i(1)j(1) 1/r12 k(2)l(2) + i, j for k,l fixed. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_two_e_integrals_in_map` + * :c:data:`mo_integrals_map` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`i2radix_sort` + * :c:func:`i8radix_sort` + * :c:func:`iradix_sort` + * :c:func:`map_get_many` + * :c:func:`two_e_integrals_index` + + +.. c:function:: get_mo_two_e_integrals_ij: + + + File : :file:`mo_two_e_ints/map_integrals.irp.f` + + .. code:: fortran + + subroutine get_mo_two_e_integrals_ij(k,l,sze,out_array,map) + + + Returns multiple integrals in the MO basis, all + i(1)j(2) 1/r12 k(1)l(2) + i, j for k,l fixed. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_two_e_integrals_in_map` + * :c:data:`mo_integrals_map` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`i2radix_sort` + * :c:func:`i8radix_sort` + * :c:func:`iradix_sort` + * :c:func:`map_get_many` + * :c:func:`two_e_integrals_index` + + +.. c:function:: get_two_e_integral: + + + File : :file:`mo_two_e_ints/map_integrals.irp.f` + + .. code:: fortran + + double precision function get_two_e_integral(i,j,k,l,map) + + + Returns one integral in the MO basis + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_two_e_integrals_in_map` + * :c:data:`mo_integrals_cache` + * :c:data:`mo_integrals_cache_min` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`map_get` + * :c:func:`two_e_integrals_index` + + +.. c:function:: load_mo_integrals: + + + File : :file:`mo_two_e_ints/map_integrals.irp.f` + + .. code:: fortran + + integer function load_mo_integrals(filename) + + + Read from disk the |MO| integrals + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_integrals_map` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`cache_map_reallocate` + * :c:func:`map_deinit` + * :c:func:`map_sort` + + +.. c:function:: mo_two_e_integral: + + + File : :file:`mo_two_e_ints/map_integrals.irp.f` + + .. code:: fortran + + double precision function mo_two_e_integral(i,j,k,l) + + + Returns one integral in the MO basis + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_integrals_cache` + * :c:data:`mo_integrals_map` + * :c:data:`mo_two_e_integrals_in_map` + + +.. c:function:: mo_two_e_integrals_index: + + + File : :file:`mo_two_e_ints/mo_bi_integrals.irp.f` + + .. code:: fortran + + subroutine mo_two_e_integrals_index(i,j,k,l,i1) + + + Computes an unique index for i,j,k,l integrals + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`add_integrals_to_map` + * :c:func:`add_integrals_to_map_erf` + * :c:func:`add_integrals_to_map_no_exit_34` + * :c:func:`add_integrals_to_map_three_indices` + diff --git a/docs/source/modules/mpi.rst b/docs/source/modules/mpi.rst new file mode 100644 index 00000000..21608559 --- /dev/null +++ b/docs/source/modules/mpi.rst @@ -0,0 +1,291 @@ +.. _module_mpi: + +.. program:: mpi + +.. default-role:: option + +=== +mpi +=== + +Contains all the functions and providers for parallelization with |MPI|. + + + +Providers +--------- + +.. c:var:: mpi_initialized + + + File : :file:`mpi/mpi.irp.f` + + .. code:: fortran + + logical :: mpi_initialized + + + Always true. Initialized MPI + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ezfio_filename` + + +.. c:var:: mpi_master + + + File : :file:`mpi/mpi.irp.f` + + .. code:: fortran + + logical :: mpi_master + + + If true, rank is zero + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mpi_rank` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_cartesian` + * :c:data:`ao_coef` + * :c:data:`ao_expo` + * :c:data:`ao_integrals_threshold` + * :c:data:`ao_md5` + * :c:data:`ao_nucl` + * :c:data:`ao_num` + * :c:data:`ao_power` + * :c:data:`ao_prim_num` + * :c:data:`ao_two_e_integrals_in_map` + * :c:data:`cas_bitmask` + * :c:data:`ci_energy` + * :c:data:`correlation_energy_ratio_max` + * :c:data:`data_energy_proj` + * :c:data:`data_energy_var` + * :c:data:`data_one_e_dm_alpha_mo` + * :c:data:`data_one_e_dm_beta_mo` + * :c:data:`davidson_sze_max` + * :c:data:`disk_access_nuclear_repulsion` + * :c:data:`disk_based_davidson` + * :c:data:`distributed_davidson` + * :c:data:`do_direct_integrals` + * :c:data:`do_pseudo` + * :c:data:`do_pt2` + * :c:data:`elec_alpha_num` + * :c:data:`elec_beta_num` + * :c:data:`element_name` + * :c:data:`energy_iterations` + * :c:data:`frozen_orb_scf` + * :c:data:`generators_bitmask` + * :c:data:`generators_bitmask_restart` + * :c:data:`io_ao_integrals_e_n` + * :c:data:`io_ao_integrals_kinetic` + * :c:data:`io_ao_integrals_overlap` + * :c:data:`io_ao_integrals_pseudo` + * :c:data:`io_ao_one_e_integrals` + * :c:data:`io_ao_two_e_integrals` + * :c:data:`io_ao_two_e_integrals_erf` + * :c:data:`io_mo_integrals_e_n` + * :c:data:`io_mo_integrals_kinetic` + * :c:data:`io_mo_integrals_pseudo` + * :c:data:`io_mo_one_e_integrals` + * :c:data:`io_mo_two_e_integrals` + * :c:data:`io_mo_two_e_integrals_erf` + * :c:data:`level_shift` + * :c:data:`max_dim_diis` + * :c:data:`mo_class` + * :c:data:`mo_coef` + * :c:data:`mo_guess_type` + * :c:data:`mo_integrals_threshold` + * :c:data:`mo_label` + * :c:data:`mo_num` + * :c:data:`mo_occ` + * :c:data:`mo_two_e_integrals_in_map` + * :c:data:`mu_erf` + * :c:data:`n_cas_bitmask` + * :c:data:`n_core_orb` + * :c:data:`n_det` + * :c:data:`n_det_generators` + * :c:data:`n_det_iterations` + * :c:data:`n_det_max` + * :c:data:`n_det_max_full` + * :c:data:`n_det_print_wf` + * :c:data:`n_det_selectors` + * :c:data:`n_generators_bitmask` + * :c:data:`n_generators_bitmask_restart` + * :c:data:`n_int` + * :c:data:`n_it_scf_max` + * :c:data:`n_iter` + * :c:data:`n_states` + * :c:data:`n_states_diag` + * :c:data:`no_ivvv_integrals` + * :c:data:`no_vvv_integrals` + * :c:data:`no_vvvv_integrals` + * :c:data:`nthreads_davidson` + * :c:data:`nthreads_pt2` + * :c:data:`nucl_charge` + * :c:data:`nucl_charge_remove` + * :c:data:`nucl_coord` + * :c:data:`nucl_label` + * :c:data:`nucl_num` + * :c:data:`nuclear_repulsion` + * :c:data:`only_expected_s2` + * :c:data:`pseudo_dz_k` + * :c:data:`pseudo_dz_kl` + * :c:data:`pseudo_grid_rmax` + * :c:data:`pseudo_grid_size` + * :c:data:`pseudo_klocmax` + * :c:data:`pseudo_kmax` + * :c:data:`pseudo_lmax` + * :c:data:`pseudo_n_k` + * :c:data:`pseudo_n_kl` + * :c:data:`pseudo_v_k` + * :c:data:`pseudo_v_kl` + * :c:data:`psi_cas` + * :c:data:`psi_coef` + * :c:data:`psi_coef_max` + * :c:data:`psi_det` + * :c:data:`psi_det_alpha_unique` + * :c:data:`psi_det_beta_unique` + * :c:data:`psi_det_size` + * :c:data:`pt2_e0_denominator` + * :c:data:`pt2_iterations` + * :c:data:`pt2_max` + * :c:data:`pt2_n_teeth` + * :c:data:`pt2_relative_error` + * :c:data:`qp_max_mem` + * :c:data:`read_wf` + * :c:data:`s2_eig` + * :c:data:`scf_algorithm` + * :c:data:`state_following` + * :c:data:`target_energy` + * :c:data:`thresh_scf` + * :c:data:`threshold_davidson` + * :c:data:`threshold_diis` + * :c:data:`threshold_generators` + * :c:data:`used_weight` + + +.. c:var:: mpi_rank + + + File : :file:`mpi/mpi.irp.f` + + .. code:: fortran + + integer :: mpi_rank + integer :: mpi_size + + + Rank of MPI process and number of MPI processes + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`mpi_master` + + +.. c:var:: mpi_size + + + File : :file:`mpi/mpi.irp.f` + + .. code:: fortran + + integer :: mpi_rank + integer :: mpi_size + + + Rank of MPI process and number of MPI processes + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`mpi_master` + + + +Subroutines / functions +----------------------- + +.. c:function:: broadcast_chunks_double: + + + File : :file:`mpi/mpi.irp.f_template_97` + + .. code:: fortran + + subroutine broadcast_chunks_double(A, LDA) + + + Broadcast with chunks of ~2GB + + +.. c:function:: broadcast_chunks_integer: + + + File : :file:`mpi/mpi.irp.f_template_97` + + .. code:: fortran + + subroutine broadcast_chunks_integer(A, LDA) + + + Broadcast with chunks of ~2GB + + +.. c:function:: broadcast_chunks_integer8: + + + File : :file:`mpi/mpi.irp.f_template_97` + + .. code:: fortran + + subroutine broadcast_chunks_integer8(A, LDA) + + + Broadcast with chunks of ~2GB + + +.. c:function:: mpi_print: + + + File : :file:`mpi/mpi.irp.f` + + .. code:: fortran + + subroutine mpi_print(string) + + + Print string to stdout if the MPI rank is zero. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mpi_master` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`run_slave_main` + diff --git a/docs/source/modules/nuclei.rst b/docs/source/modules/nuclei.rst new file mode 100644 index 00000000..0bd4b325 --- /dev/null +++ b/docs/source/modules/nuclei.rst @@ -0,0 +1,666 @@ +.. _module_nuclei: + +.. program:: nuclei + +.. default-role:: option + +====== +nuclei +====== + +This module contains data relative to the nuclei (coordinates, charge, +nuclear repulsion energy, etc). +The coordinates are expressed in atomic units. + + + + +EZFIO parameters +---------------- + +.. option:: nucl_num + + Number of nuclei + + +.. option:: nucl_label + + Nuclear labels + + +.. option:: nucl_charge + + Nuclear charges + + +.. option:: nucl_coord + + Nuclear coordinates in the format (:, {x,y,z}) + + +.. option:: disk_access_nuclear_repulsion + + Read/Write Nuclear Repulsion from/to disk [ Write | Read | None ] + + Default: None + +.. option:: nuclear_repulsion + + Nuclear repulsion (Computed automaticaly or Read in the |EZFIO|) + + + +Providers +--------- + +.. c:var:: center_of_mass + + + File : :file:`nuclei/nuclei.irp.f` + + .. code:: fortran + + double precision, allocatable :: center_of_mass (3) + + + Center of mass of the molecule + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`element_name` + * :c:data:`nucl_charge` + * :c:data:`nucl_coord` + * :c:data:`nucl_num` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`inertia_tensor` + + +.. c:var:: element_mass + + + File : :file:`nuclei/nuclei.irp.f` + + .. code:: fortran + + character*(4), allocatable :: element_name (0:127) + double precision, allocatable :: element_mass (0:127) + + + Array of the name of element, sorted by nuclear charge (integer) + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mpi_master` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`center_of_mass` + * :c:data:`inertia_tensor` + + +.. c:var:: element_name + + + File : :file:`nuclei/nuclei.irp.f` + + .. code:: fortran + + character*(4), allocatable :: element_name (0:127) + double precision, allocatable :: element_mass (0:127) + + + Array of the name of element, sorted by nuclear charge (integer) + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mpi_master` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`center_of_mass` + * :c:data:`inertia_tensor` + + +.. c:var:: inertia_tensor + + + File : :file:`nuclei/inertia.irp.f` + + .. code:: fortran + + double precision, allocatable :: inertia_tensor (3,3) + + + Inertia tensor + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`center_of_mass` + * :c:data:`element_name` + * :c:data:`nucl_charge` + * :c:data:`nucl_coord` + * :c:data:`nucl_num` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`inertia_tensor_eigenvectors` + + +.. c:var:: inertia_tensor_eigenvalues + + + File : :file:`nuclei/inertia.irp.f` + + .. code:: fortran + + double precision, allocatable :: inertia_tensor_eigenvectors (3,3) + double precision, allocatable :: inertia_tensor_eigenvalues (3) + + + Eigenvectors/eigenvalues of the inertia_tensor. Used to find normal orientation. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`inertia_tensor` + + + +.. c:var:: inertia_tensor_eigenvectors + + + File : :file:`nuclei/inertia.irp.f` + + .. code:: fortran + + double precision, allocatable :: inertia_tensor_eigenvectors (3,3) + double precision, allocatable :: inertia_tensor_eigenvalues (3) + + + Eigenvectors/eigenvalues of the inertia_tensor. Used to find normal orientation. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`inertia_tensor` + + + +.. c:var:: nucl_coord + + + File : :file:`nuclei/nuclei.irp.f` + + .. code:: fortran + + double precision, allocatable :: nucl_coord (nucl_num,3) + + + Nuclear coordinates in the format (:, {x,y,z}) + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ezfio_filename` + * :c:data:`mpi_master` + * :c:data:`nucl_charge` + * :c:data:`nucl_label` + * :c:data:`nucl_num` + * :c:data:`output_wall_time_0` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_deriv2_x` + * :c:data:`ao_deriv_1_x` + * :c:data:`ao_dipole_x` + * :c:data:`ao_integrals_n_e` + * :c:data:`ao_integrals_n_e_per_atom` + * :c:data:`ao_overlap` + * :c:data:`ao_overlap_abs` + * :c:data:`ao_pseudo_integrals_local` + * :c:data:`ao_pseudo_integrals_non_local` + * :c:data:`ao_spread_x` + * :c:data:`ao_two_e_integral_alpha` + * :c:data:`ao_two_e_integral_erf_schwartz` + * :c:data:`ao_two_e_integral_schwartz` + * :c:data:`ao_two_e_integrals_erf_in_map` + * :c:data:`ao_two_e_integrals_in_map` + * :c:data:`center_of_mass` + * :c:data:`inertia_tensor` + * :c:data:`nucl_coord_transp` + * :c:data:`nucl_dist_2` + * :c:data:`nuclear_repulsion` + + +.. c:var:: nucl_coord_transp + + + File : :file:`nuclei/nuclei.irp.f` + + .. code:: fortran + + double precision, allocatable :: nucl_coord_transp (3,nucl_num) + + + Transposed array of nucl_coord + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`nucl_coord` + * :c:data:`nucl_num` + + + +.. c:var:: nucl_dist + + + File : :file:`nuclei/nuclei.irp.f` + + .. code:: fortran + + double precision, allocatable :: nucl_dist_2 (nucl_num,nucl_num) + double precision, allocatable :: nucl_dist_vec_x (nucl_num,nucl_num) + double precision, allocatable :: nucl_dist_vec_y (nucl_num,nucl_num) + double precision, allocatable :: nucl_dist_vec_z (nucl_num,nucl_num) + double precision, allocatable :: nucl_dist (nucl_num,nucl_num) + + + nucl_dist : Nucleus-nucleus distances + nucl_dist_2 : Nucleus-nucleus distances squared + nucl_dist_vec : Nucleus-nucleus distances vectors + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`nucl_coord` + * :c:data:`nucl_num` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`nucl_dist_inv` + + +.. c:var:: nucl_dist_2 + + + File : :file:`nuclei/nuclei.irp.f` + + .. code:: fortran + + double precision, allocatable :: nucl_dist_2 (nucl_num,nucl_num) + double precision, allocatable :: nucl_dist_vec_x (nucl_num,nucl_num) + double precision, allocatable :: nucl_dist_vec_y (nucl_num,nucl_num) + double precision, allocatable :: nucl_dist_vec_z (nucl_num,nucl_num) + double precision, allocatable :: nucl_dist (nucl_num,nucl_num) + + + nucl_dist : Nucleus-nucleus distances + nucl_dist_2 : Nucleus-nucleus distances squared + nucl_dist_vec : Nucleus-nucleus distances vectors + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`nucl_coord` + * :c:data:`nucl_num` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`nucl_dist_inv` + + +.. c:var:: nucl_dist_inv + + + File : :file:`nuclei/nuclei.irp.f` + + .. code:: fortran + + double precision, allocatable :: nucl_dist_inv (nucl_num,nucl_num) + + + Inverse of the distance between nucleus I and nucleus J + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`nucl_dist_2` + * :c:data:`nucl_num` + + + +.. c:var:: nucl_dist_vec_x + + + File : :file:`nuclei/nuclei.irp.f` + + .. code:: fortran + + double precision, allocatable :: nucl_dist_2 (nucl_num,nucl_num) + double precision, allocatable :: nucl_dist_vec_x (nucl_num,nucl_num) + double precision, allocatable :: nucl_dist_vec_y (nucl_num,nucl_num) + double precision, allocatable :: nucl_dist_vec_z (nucl_num,nucl_num) + double precision, allocatable :: nucl_dist (nucl_num,nucl_num) + + + nucl_dist : Nucleus-nucleus distances + nucl_dist_2 : Nucleus-nucleus distances squared + nucl_dist_vec : Nucleus-nucleus distances vectors + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`nucl_coord` + * :c:data:`nucl_num` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`nucl_dist_inv` + + +.. c:var:: nucl_dist_vec_y + + + File : :file:`nuclei/nuclei.irp.f` + + .. code:: fortran + + double precision, allocatable :: nucl_dist_2 (nucl_num,nucl_num) + double precision, allocatable :: nucl_dist_vec_x (nucl_num,nucl_num) + double precision, allocatable :: nucl_dist_vec_y (nucl_num,nucl_num) + double precision, allocatable :: nucl_dist_vec_z (nucl_num,nucl_num) + double precision, allocatable :: nucl_dist (nucl_num,nucl_num) + + + nucl_dist : Nucleus-nucleus distances + nucl_dist_2 : Nucleus-nucleus distances squared + nucl_dist_vec : Nucleus-nucleus distances vectors + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`nucl_coord` + * :c:data:`nucl_num` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`nucl_dist_inv` + + +.. c:var:: nucl_dist_vec_z + + + File : :file:`nuclei/nuclei.irp.f` + + .. code:: fortran + + double precision, allocatable :: nucl_dist_2 (nucl_num,nucl_num) + double precision, allocatable :: nucl_dist_vec_x (nucl_num,nucl_num) + double precision, allocatable :: nucl_dist_vec_y (nucl_num,nucl_num) + double precision, allocatable :: nucl_dist_vec_z (nucl_num,nucl_num) + double precision, allocatable :: nucl_dist (nucl_num,nucl_num) + + + nucl_dist : Nucleus-nucleus distances + nucl_dist_2 : Nucleus-nucleus distances squared + nucl_dist_vec : Nucleus-nucleus distances vectors + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`nucl_coord` + * :c:data:`nucl_num` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`nucl_dist_inv` + + +.. c:var:: nuclear_repulsion + + + File : :file:`nuclei/nuclei.irp.f` + + .. code:: fortran + + double precision :: nuclear_repulsion + + + Nuclear repulsion energy + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`disk_access_nuclear_repulsion` + * :c:data:`mpi_master` + * :c:data:`nucl_charge` + * :c:data:`nucl_coord` + * :c:data:`nucl_num` + * :c:data:`output_wall_time_0` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ci_energy` + * :c:data:`core_energy` + * :c:data:`core_energy_erf` + * :c:data:`hf_energy` + * :c:data:`psi_energy_with_nucl_rep` + * :c:data:`pt2_e0_denominator` + * :c:data:`scf_energy` + + +.. c:var:: slater_bragg_radii + + + File : :file:`nuclei/atomic_radii.irp.f` + + .. code:: fortran + + double precision, allocatable :: slater_bragg_radii (100) + + + atomic radii in Angstrom defined in table I of JCP 41, 3199 (1964) Slater + execpt for the Hydrogen atom where we took the value of Becke (1988, JCP) + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`slater_bragg_radii_per_atom` + * :c:data:`slater_bragg_radii_ua` + + +.. c:var:: slater_bragg_radii_per_atom + + + File : :file:`nuclei/atomic_radii.irp.f` + + .. code:: fortran + + double precision, allocatable :: slater_bragg_radii_per_atom (nucl_num) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`nucl_charge` + * :c:data:`nucl_num` + * :c:data:`slater_bragg_radii` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`slater_bragg_type_inter_distance` + + +.. c:var:: slater_bragg_radii_per_atom_ua + + + File : :file:`nuclei/atomic_radii.irp.f` + + .. code:: fortran + + double precision, allocatable :: slater_bragg_radii_per_atom_ua (nucl_num) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`nucl_charge` + * :c:data:`nucl_num` + * :c:data:`slater_bragg_radii_ua` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`slater_bragg_type_inter_distance_ua` + + +.. c:var:: slater_bragg_radii_ua + + + File : :file:`nuclei/atomic_radii.irp.f` + + .. code:: fortran + + double precision, allocatable :: slater_bragg_radii_ua (100) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`slater_bragg_radii` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`slater_bragg_radii_per_atom_ua` + + +.. c:var:: slater_bragg_type_inter_distance + + + File : :file:`nuclei/atomic_radii.irp.f` + + .. code:: fortran + + double precision, allocatable :: slater_bragg_type_inter_distance (nucl_num,nucl_num) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`nucl_num` + * :c:data:`slater_bragg_radii_per_atom` + + + +.. c:var:: slater_bragg_type_inter_distance_ua + + + File : :file:`nuclei/atomic_radii.irp.f` + + .. code:: fortran + + double precision, allocatable :: slater_bragg_type_inter_distance_ua (nucl_num,nucl_num) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`nucl_num` + * :c:data:`slater_bragg_radii_per_atom_ua` + + diff --git a/docs/source/modules/perturbation.rst b/docs/source/modules/perturbation.rst new file mode 100644 index 00000000..b933ca57 --- /dev/null +++ b/docs/source/modules/perturbation.rst @@ -0,0 +1,998 @@ +.. _module_perturbation: + +.. program:: perturbation + +.. default-role:: option + +============ +perturbation +============ + + +All subroutines in ``*.irp.f`` starting with `pt2_` in the current directory are +perturbation computed using the routine `i_H_psi`. Other cases are not allowed. +The arguments of the `pt2_` are always: + +.. code-block:: fortran + + subroutine pt2_...( & + psi_ref, & + psi_ref_coefs, & + E_refs, & + det_pert, & + c_pert, & + e_2_pert, & + H_pert_diag, & + Nint, & + Ndet, & + N_st ) + + + integer , intent(in) :: Nint,Ndet,N_st + integer(bit_kind), intent(in) :: psi_ref(Nint,2,Ndet) + double precision , intent(in) :: psi_ref_coefs(Ndet,N_st) + double precision , intent(in) :: E_refs(N_st) + integer(bit_kind), intent(in) :: det_pert(Nint,2) + double precision , intent(out) :: c_pert(N_st),e_2_pert(N_st),H_pert_diag + + +`psi_ref` + bitstring of the determinants present in the various `N_st` states + +`psi_ref_coefs` + coefficients of the determinants on the various `N_st` states + +`E_refs` + Energy of the various `N_st` states + +`det_pert` + Perturber determinant + +`c_pert` + Perturbative coefficients for the various states + +`e_2_pert` + Perturbative energetic contribution for the various states + +`H_pert_diag` + Diagonal |H| matrix element of the perturber + +`Nint` + Should be equal to `N_int` + +`Ndet` + Number of determinants `i` in |Psi| on which we apply + +`N_st` + Number of states + + + + + + +EZFIO parameters +---------------- + +.. option:: do_pt2 + + If `True`, compute the |PT2| contribution + + Default: True + +.. option:: pt2_max + + The selection process stops when the largest |PT2| (for all the state) is lower + + than `pt2_max` in absolute value + + Default: 0.0001 + +.. option:: pt2_relative_error + + Stop stochastic |PT2| when the relative error is smaller than `PT2_relative_error` + + Default: 0.002 + +.. option:: correlation_energy_ratio_max + + The selection process stops at a fixed correlation ratio (useful for getting same accuracy between molecules). + + Defined as :math:`{E_{CI}-E_{HF}}/{E_{CI}+E_{PT2} - E_{HF}}`. + + Default: 1.00 + + +Providers +--------- + +.. c:var:: h0_type + + + File : :file:`perturbation/h0_type.irp.f` + + .. code:: fortran + + character*32 :: h0_type + + + Type of zeroth-order Hamiltonian + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`s2_eig` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`pt2_e0_denominator` + + +.. c:var:: max_exc_pert + + + File : :file:`perturbation/exc_max.irp.f` + + .. code:: fortran + + integer :: max_exc_pert + + + + + +.. c:var:: selection_criterion + + + File : :file:`perturbation/selection.irp.f` + + .. code:: fortran + + double precision :: selection_criterion + double precision :: selection_criterion_min + double precision :: selection_criterion_factor + + + Threshold to select determinants. Set by selection routines. + + + +.. c:var:: selection_criterion_factor + + + File : :file:`perturbation/selection.irp.f` + + .. code:: fortran + + double precision :: selection_criterion + double precision :: selection_criterion_min + double precision :: selection_criterion_factor + + + Threshold to select determinants. Set by selection routines. + + + +.. c:var:: selection_criterion_min + + + File : :file:`perturbation/selection.irp.f` + + .. code:: fortran + + double precision :: selection_criterion + double precision :: selection_criterion_min + double precision :: selection_criterion_factor + + + Threshold to select determinants. Set by selection routines. + + + +.. c:var:: var_pt2_ratio + + + File : :file:`perturbation/var_pt2_ratio_provider.irp.f` + + .. code:: fortran + + double precision :: var_pt2_ratio + + + The selection process stops when the energy ratio variational/(variational+PT2) + is equal to var_pt2_ratio + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`correlation_energy_ratio_max` + + + + +Subroutines / functions +----------------------- + +.. c:function:: fill_h_apply_buffer_selection: + + + File : :file:`perturbation/selection.irp.f` + + .. code:: fortran + + subroutine fill_H_apply_buffer_selection(n_selected,det_buffer,e_2_pert_buffer,coef_pert_buffer, N_st,Nint,iproc,select_max_out) + + + Fill the H_apply buffer with determiants for the selection + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`selection_criterion` + * :c:data:`h_apply_buffer_allocated` + * :c:data:`n_det` + * :c:data:`n_int` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`omp_set_lock` + * :c:func:`omp_unset_lock` + * :c:func:`resize_h_apply_buffer` + + +.. c:function:: perturb_buffer_by_mono_dummy: + + + File : :file:`perturbation/perturbation.irp.f_shell_13` + + .. code:: fortran + + subroutine perturb_buffer_by_mono_dummy(i_generator,buffer,buffer_size,e_2_pert_buffer,coef_pert_buffer,sum_e_2_pert,sum_norm_pert,sum_H_pert_diag,N_st,Nint,key_mask,fock_diag_tmp,electronic_energy) + + + Apply pertubration ``dummy`` to the buffer of determinants generated in the H_apply + routine. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_num` + * :c:data:`psi_selectors` + * :c:data:`n_det` + * :c:data:`n_det_selectors` + * :c:data:`n_det_generators` + * :c:data:`psi_det_generators` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`create_minilist` + * :c:func:`create_minilist_find_previous` + * :c:func:`pt2_dummy` + + +.. c:function:: perturb_buffer_by_mono_epstein_nesbet: + + + File : :file:`perturbation/perturbation.irp.f_shell_13` + + .. code:: fortran + + subroutine perturb_buffer_by_mono_epstein_nesbet(i_generator,buffer,buffer_size,e_2_pert_buffer,coef_pert_buffer,sum_e_2_pert,sum_norm_pert,sum_H_pert_diag,N_st,Nint,key_mask,fock_diag_tmp,electronic_energy) + + + Apply pertubration ``epstein_nesbet`` to the buffer of determinants generated in the H_apply + routine. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_num` + * :c:data:`psi_selectors` + * :c:data:`n_det` + * :c:data:`n_det_selectors` + * :c:data:`n_det_generators` + * :c:data:`psi_det_generators` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`create_minilist` + * :c:func:`create_minilist_find_previous` + * :c:func:`pt2_epstein_nesbet` + + +.. c:function:: perturb_buffer_by_mono_epstein_nesbet_2x2: + + + File : :file:`perturbation/perturbation.irp.f_shell_13` + + .. code:: fortran + + subroutine perturb_buffer_by_mono_epstein_nesbet_2x2(i_generator,buffer,buffer_size,e_2_pert_buffer,coef_pert_buffer,sum_e_2_pert,sum_norm_pert,sum_H_pert_diag,N_st,Nint,key_mask,fock_diag_tmp,electronic_energy) + + + Apply pertubration ``epstein_nesbet_2x2`` to the buffer of determinants generated in the H_apply + routine. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_num` + * :c:data:`psi_selectors` + * :c:data:`n_det` + * :c:data:`n_det_selectors` + * :c:data:`n_det_generators` + * :c:data:`psi_det_generators` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`create_minilist` + * :c:func:`create_minilist_find_previous` + * :c:func:`pt2_epstein_nesbet_2x2` + + +.. c:function:: perturb_buffer_by_mono_epstein_nesbet_2x2_no_ci_diag: + + + File : :file:`perturbation/perturbation.irp.f_shell_13` + + .. code:: fortran + + subroutine perturb_buffer_by_mono_epstein_nesbet_2x2_no_ci_diag(i_generator,buffer,buffer_size,e_2_pert_buffer,coef_pert_buffer,sum_e_2_pert,sum_norm_pert,sum_H_pert_diag,N_st,Nint,key_mask,fock_diag_tmp,electronic_energy) + + + Apply pertubration ``epstein_nesbet_2x2_no_ci_diag`` to the buffer of determinants generated in the H_apply + routine. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_num` + * :c:data:`psi_selectors` + * :c:data:`n_det` + * :c:data:`n_det_selectors` + * :c:data:`n_det_generators` + * :c:data:`psi_det_generators` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`create_minilist` + * :c:func:`create_minilist_find_previous` + * :c:func:`pt2_epstein_nesbet_2x2_no_ci_diag` + + +.. c:function:: perturb_buffer_by_mono_moller_plesset: + + + File : :file:`perturbation/perturbation.irp.f_shell_13` + + .. code:: fortran + + subroutine perturb_buffer_by_mono_moller_plesset(i_generator,buffer,buffer_size,e_2_pert_buffer,coef_pert_buffer,sum_e_2_pert,sum_norm_pert,sum_H_pert_diag,N_st,Nint,key_mask,fock_diag_tmp,electronic_energy) + + + Apply pertubration ``moller_plesset`` to the buffer of determinants generated in the H_apply + routine. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_num` + * :c:data:`psi_selectors` + * :c:data:`n_det` + * :c:data:`n_det_selectors` + * :c:data:`n_det_generators` + * :c:data:`psi_det_generators` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`create_minilist` + * :c:func:`create_minilist_find_previous` + * :c:func:`pt2_moller_plesset` + + +.. c:function:: perturb_buffer_by_mono_qdpt: + + + File : :file:`perturbation/perturbation.irp.f_shell_13` + + .. code:: fortran + + subroutine perturb_buffer_by_mono_qdpt(i_generator,buffer,buffer_size,e_2_pert_buffer,coef_pert_buffer,sum_e_2_pert,sum_norm_pert,sum_H_pert_diag,N_st,Nint,key_mask,fock_diag_tmp,electronic_energy) + + + Apply pertubration ``qdpt`` to the buffer of determinants generated in the H_apply + routine. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_num` + * :c:data:`psi_selectors` + * :c:data:`n_det` + * :c:data:`n_det_selectors` + * :c:data:`n_det_generators` + * :c:data:`psi_det_generators` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`create_minilist` + * :c:func:`create_minilist_find_previous` + * :c:func:`pt2_qdpt` + + +.. c:function:: perturb_buffer_dummy: + + + File : :file:`perturbation/perturbation.irp.f_shell_13` + + .. code:: fortran + + subroutine perturb_buffer_dummy(i_generator,buffer,buffer_size,e_2_pert_buffer,coef_pert_buffer,sum_e_2_pert,sum_norm_pert,sum_H_pert_diag,N_st,Nint,key_mask,fock_diag_tmp,electronic_energy) + + + Apply pertubration ``dummy`` to the buffer of determinants generated in the H_apply + routine. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_det_selectors` + * :c:data:`n_det_generators` + * :c:data:`psi_selectors` + * :c:data:`psi_det_generators` + * :c:data:`mo_num` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`create_microlist` + * :c:func:`create_minilist` + * :c:func:`create_minilist_find_previous` + * :c:func:`getmobiles` + * :c:func:`pt2_dummy` + + +.. c:function:: perturb_buffer_epstein_nesbet: + + + File : :file:`perturbation/perturbation.irp.f_shell_13` + + .. code:: fortran + + subroutine perturb_buffer_epstein_nesbet(i_generator,buffer,buffer_size,e_2_pert_buffer,coef_pert_buffer,sum_e_2_pert,sum_norm_pert,sum_H_pert_diag,N_st,Nint,key_mask,fock_diag_tmp,electronic_energy) + + + Apply pertubration ``epstein_nesbet`` to the buffer of determinants generated in the H_apply + routine. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_det_selectors` + * :c:data:`n_det_generators` + * :c:data:`psi_selectors` + * :c:data:`psi_det_generators` + * :c:data:`mo_num` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`create_microlist` + * :c:func:`create_minilist` + * :c:func:`create_minilist_find_previous` + * :c:func:`getmobiles` + * :c:func:`pt2_epstein_nesbet` + + +.. c:function:: perturb_buffer_epstein_nesbet_2x2: + + + File : :file:`perturbation/perturbation.irp.f_shell_13` + + .. code:: fortran + + subroutine perturb_buffer_epstein_nesbet_2x2(i_generator,buffer,buffer_size,e_2_pert_buffer,coef_pert_buffer,sum_e_2_pert,sum_norm_pert,sum_H_pert_diag,N_st,Nint,key_mask,fock_diag_tmp,electronic_energy) + + + Apply pertubration ``epstein_nesbet_2x2`` to the buffer of determinants generated in the H_apply + routine. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_det_selectors` + * :c:data:`n_det_generators` + * :c:data:`psi_selectors` + * :c:data:`psi_det_generators` + * :c:data:`mo_num` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`create_microlist` + * :c:func:`create_minilist` + * :c:func:`create_minilist_find_previous` + * :c:func:`getmobiles` + * :c:func:`pt2_epstein_nesbet_2x2` + + +.. c:function:: perturb_buffer_epstein_nesbet_2x2_no_ci_diag: + + + File : :file:`perturbation/perturbation.irp.f_shell_13` + + .. code:: fortran + + subroutine perturb_buffer_epstein_nesbet_2x2_no_ci_diag(i_generator,buffer,buffer_size,e_2_pert_buffer,coef_pert_buffer,sum_e_2_pert,sum_norm_pert,sum_H_pert_diag,N_st,Nint,key_mask,fock_diag_tmp,electronic_energy) + + + Apply pertubration ``epstein_nesbet_2x2_no_ci_diag`` to the buffer of determinants generated in the H_apply + routine. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_det_selectors` + * :c:data:`n_det_generators` + * :c:data:`psi_selectors` + * :c:data:`psi_det_generators` + * :c:data:`mo_num` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`create_microlist` + * :c:func:`create_minilist` + * :c:func:`create_minilist_find_previous` + * :c:func:`getmobiles` + * :c:func:`pt2_epstein_nesbet_2x2_no_ci_diag` + + +.. c:function:: perturb_buffer_moller_plesset: + + + File : :file:`perturbation/perturbation.irp.f_shell_13` + + .. code:: fortran + + subroutine perturb_buffer_moller_plesset(i_generator,buffer,buffer_size,e_2_pert_buffer,coef_pert_buffer,sum_e_2_pert,sum_norm_pert,sum_H_pert_diag,N_st,Nint,key_mask,fock_diag_tmp,electronic_energy) + + + Apply pertubration ``moller_plesset`` to the buffer of determinants generated in the H_apply + routine. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_det_selectors` + * :c:data:`n_det_generators` + * :c:data:`psi_selectors` + * :c:data:`psi_det_generators` + * :c:data:`mo_num` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`create_microlist` + * :c:func:`create_minilist` + * :c:func:`create_minilist_find_previous` + * :c:func:`getmobiles` + * :c:func:`pt2_moller_plesset` + + +.. c:function:: perturb_buffer_qdpt: + + + File : :file:`perturbation/perturbation.irp.f_shell_13` + + .. code:: fortran + + subroutine perturb_buffer_qdpt(i_generator,buffer,buffer_size,e_2_pert_buffer,coef_pert_buffer,sum_e_2_pert,sum_norm_pert,sum_H_pert_diag,N_st,Nint,key_mask,fock_diag_tmp,electronic_energy) + + + Apply pertubration ``qdpt`` to the buffer of determinants generated in the H_apply + routine. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_det_selectors` + * :c:data:`n_det_generators` + * :c:data:`psi_selectors` + * :c:data:`psi_det_generators` + * :c:data:`mo_num` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`create_microlist` + * :c:func:`create_minilist` + * :c:func:`create_minilist_find_previous` + * :c:func:`getmobiles` + * :c:func:`pt2_qdpt` + + +.. c:function:: pt2_dummy: + + + File : :file:`perturbation/pt2_equations.irp.f_template_305` + + .. code:: fortran + + subroutine pt2_dummy (electronic_energy,det_ref,det_pert,fock_diag_tmp,c_pert,e_2_pert,H_pert_diag,Nint,ndet,N_st,minilist,idx_minilist,N_minilist) + + + Dummy perturbation to add all connected determinants. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_det_selectors` + * :c:data:`selection_criterion` + * :c:data:`psi_selectors` + * :c:data:`psi_selectors_size` + * :c:data:`mo_num` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`perturb_buffer_by_mono_dummy` + * :c:func:`perturb_buffer_dummy` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`i_h_psi_minilist` + + +.. c:function:: pt2_epstein_nesbet: + + + File : :file:`perturbation/pt2_equations.irp.f_template_305` + + .. code:: fortran + + subroutine pt2_epstein_nesbet (electronic_energy,det_ref,det_pert,fock_diag_tmp,c_pert,e_2_pert,H_pert_diag,Nint,ndet,N_st,minilist,idx_minilist,N_minilist) + + + Compute the standard Epstein-Nesbet perturbative first order coefficient and + second order energetic contribution for the various N_st states. + + `c_pert(i)` = $\frac{\langle i|H|\alpha \rangle}{ E_n - \langle \alpha|H|\alpha \rangle }$. + + `e_2_pert(i)` = $\frac{\langle i|H|\alpha \rangle^2}{ E_n - \langle \alpha|H|\alpha \rangle }$. + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_det_selectors` + * :c:data:`selection_criterion` + * :c:data:`psi_selectors` + * :c:data:`psi_selectors_size` + * :c:data:`mo_num` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`perturb_buffer_by_mono_epstein_nesbet` + * :c:func:`perturb_buffer_epstein_nesbet` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`i_h_psi_minilist` + + +.. c:function:: pt2_epstein_nesbet_2x2: + + + File : :file:`perturbation/pt2_equations.irp.f_template_305` + + .. code:: fortran + + subroutine pt2_epstein_nesbet_2x2 (electronic_energy,det_ref,det_pert,fock_diag_tmp,c_pert,e_2_pert,H_pert_diag,Nint,ndet,N_st,minilist,idx_minilist,N_minilist) + + + Computes the Epstein-Nesbet 2x2 diagonalization coefficient and energetic contribution + for the various N_st states. + + `e_2_pert(i)` = $\frac{1}{2} ( \langle \alpha|H|\alpha \rangle - E_n) - \sqrt{ (\langle \alpha|H|\alpha \rangle - E_n)^2 + 4 \langle i|H|\alpha \rangle^2 }$. + + `c_pert(i)` = `e_2_pert(i)` $\times \frac{1}{ \langle i|H|\alpha \rangle}$. + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_det_selectors` + * :c:data:`psi_selectors` + * :c:data:`psi_selectors_size` + * :c:data:`mo_num` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`perturb_buffer_by_mono_epstein_nesbet_2x2` + * :c:func:`perturb_buffer_epstein_nesbet_2x2` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`i_h_psi` + + +.. c:function:: pt2_epstein_nesbet_2x2_no_ci_diag: + + + File : :file:`perturbation/pt2_equations.irp.f_template_305` + + .. code:: fortran + + subroutine pt2_epstein_nesbet_2x2_no_ci_diag(electronic_energy,det_ref,det_pert,fock_diag_tmp,c_pert,e_2_pert,H_pert_diag,Nint,ndet,N_st,minilist,idx_minilist,N_minilist) + + + compute the Epstein-Nesbet 2x2 diagonalization coefficient and energetic contribution + + for the various N_st states. + + e_2_pert(i) = 0.5 * (( - E(i) ) - sqrt( ( - E(i)) ^2 + 4 ^2 ) + + c_pert(i) = e_2_pert(i)/ + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_det_selectors` + * :c:data:`psi_selectors` + * :c:data:`psi_selectors_size` + * :c:data:`psi_energy` + * :c:data:`mo_num` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`perturb_buffer_by_mono_epstein_nesbet_2x2_no_ci_diag` + * :c:func:`perturb_buffer_epstein_nesbet_2x2_no_ci_diag` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`i_h_psi` + + +.. c:function:: pt2_moller_plesset: + + + File : :file:`perturbation/pt2_equations.irp.f_template_305` + + .. code:: fortran + + subroutine pt2_moller_plesset (electronic_energy,det_ref,det_pert,fock_diag_tmp,c_pert,e_2_pert,H_pert_diag,Nint,ndet,N_st,minilist,idx_minilist,N_minilist) + + + Computes the standard Moller-Plesset perturbative first order coefficient and second + order energetic contribution for the various N_st states. + + `c_pert(i)` = $\frac{\langle i|H|\alpha \rangle}{\text{difference of orbital energies}}$. + + `e_2_pert(i)` = $\frac{\langle i|H|\alpha \rangle^2}{\text{difference of orbital energies}}$. + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ref_bitmask` + * :c:data:`psi_selectors_size` + * :c:data:`psi_selectors` + * :c:data:`mo_num` + * :c:data:`n_det_selectors` + * :c:data:`fock_matrix_mo` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`perturb_buffer_by_mono_moller_plesset` + * :c:func:`perturb_buffer_moller_plesset` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`decode_exc` + * :c:func:`get_excitation` + * :c:func:`i_h_psi_minilist` + + +.. c:function:: pt2_qdpt: + + + File : :file:`perturbation/pt2_equations.irp.f_template_305` + + .. code:: fortran + + subroutine pt2_qdpt (electronic_energy,det_ref,det_pert,fock_diag_tmp,c_pert,e_2_pert,H_pert_diag,Nint,ndet,N_st,minilist,idx_minilist,N_minilist) + + + Computes the QDPT first order coefficient and second order energetic contribution + for the various N_st states. + + `c_pert(i)` = $\frac{\langle i|H|\alpha \rangle}{\langle i|H|i \rangle - \langle \alpha|H|\alpha \rangle}$. + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_det_selectors` + * :c:data:`selection_criterion` + * :c:data:`psi_selectors` + * :c:data:`psi_selectors_size` + * :c:data:`mo_num` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`perturb_buffer_by_mono_qdpt` + * :c:func:`perturb_buffer_qdpt` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`get_excitation_degree` + * :c:func:`i_h_j` + * :c:func:`i_h_psi_minilist` + + +.. c:function:: remove_small_contributions: + + + File : :file:`perturbation/selection.irp.f` + + .. code:: fortran + + subroutine remove_small_contributions + + + Remove determinants with small contributions. N_states is assumed to be + provided. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`psi_coef` + * :c:data:`selection_criterion` + * :c:data:`n_states` + * :c:data:`n_det` + * :c:data:`psi_det_size` + * :c:data:`n_det_generators` + * :c:data:`n_int` + * :c:data:`psi_det_sorted` + * :c:data:`psi_det` + * :c:data:`psi_det_sorted` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`diagonalize_ci` + * :c:func:`i_h_psi` + * :c:func:`write_int` + + Touches: + + .. hlist:: + :columns: 3 + + * :c:data:`ci_electronic_energy` + * :c:data:`ci_electronic_energy` + * :c:data:`ci_energy` + * :c:data:`ci_electronic_energy` + * :c:data:`n_det` + * :c:data:`psi_coef` + * :c:data:`psi_det` + diff --git a/docs/source/modules/pseudo.rst b/docs/source/modules/pseudo.rst new file mode 100644 index 00000000..8a48aa9f --- /dev/null +++ b/docs/source/modules/pseudo.rst @@ -0,0 +1,94 @@ +.. _module_pseudo: + +.. program:: pseudo + +.. default-role:: option + +====== +pseudo +====== + +This module defines the |EZFIO| parameters of the effective core potentials. + + + +EZFIO parameters +---------------- + +.. option:: nucl_charge_remove + + Nuclear charges removed per atom + + +.. option:: pseudo_klocmax + + Maximum value of k for the local component + + +.. option:: pseudo_n_k + + Number of gaussians in the local component + + +.. option:: pseudo_v_k + + Coefficients in the local component + + +.. option:: pseudo_dz_k + + Exponents in the local component + + +.. option:: pseudo_lmax + + Maximum angular momentum + + +.. option:: pseudo_kmax + + Maximum number of functions in the non-local component + + +.. option:: pseudo_n_kl + + Number of functions in the non-local component + + +.. option:: pseudo_v_kl + + Coefficients in the non-local component + + +.. option:: pseudo_dz_kl + + Exponents in the non-local component + + +.. option:: do_pseudo + + If `True`, pseudo-potentials are used. + + Default: False + +.. option:: pseudo_grid_size + + Nb of points of the grid for the QMC interfaces + + Default: 1000 + +.. option:: pseudo_grid_rmax + + R_max of the QMC grid + + Default: 10.0 + +.. option:: ao_pseudo_grid + + Grid for the QMC interface + + +.. option:: mo_pseudo_grid + + Grid for the QMC interface + diff --git a/docs/source/modules/psiref_cas.rst b/docs/source/modules/psiref_cas.rst new file mode 100644 index 00000000..c57198fe --- /dev/null +++ b/docs/source/modules/psiref_cas.rst @@ -0,0 +1,14 @@ +.. _module_psiref_cas: + +.. program:: psiref_cas + +.. default-role:: option + +========== +psiref_cas +========== + +Reference wave function is defined as a |CAS| wave function. +This module is required for |CAS-SD|, |MRPT| or |MRCC|. + + diff --git a/docs/source/modules/psiref_utils.rst b/docs/source/modules/psiref_utils.rst new file mode 100644 index 00000000..541fc2c4 --- /dev/null +++ b/docs/source/modules/psiref_utils.rst @@ -0,0 +1,16 @@ +.. _module_psiref_utils: + +.. program:: psiref_utils + +.. default-role:: option + +============ +psiref_utils +============ + + +Utilities related to the use of a reference wave function. This module +needs to be loaded with any `psi_ref_*` module. + + + diff --git a/docs/source/modules/scf_utils.rst b/docs/source/modules/scf_utils.rst new file mode 100644 index 00000000..3ab72f78 --- /dev/null +++ b/docs/source/modules/scf_utils.rst @@ -0,0 +1,795 @@ +.. _module_scf_utils: + +.. program:: scf_utils + +.. default-role:: option + +========= +scf_utils +========= + + + +The scf_utils module is an abstract module which contains the basics to perform *Restricted* SCF calculations (the +spatial part of the |MOs| is common for alpha and beta spinorbitals) based on a single-determinant wave function. + +This module does not produce any executable *and must not do*, but instead it contains everything one needs to perform an orbital optimization based on an Fock matrix. +The ``scf_utils`` module is meant to be included in the :file:`NEED` of the various single determinant SCF procedures, such as ``hartree_fock`` or ``kohn_sham``, where a specific definition of the Fock matrix is given (see :file:`hartree_fock fock_matrix_hf.irp.f` for an example). + +All SCF programs perform the following actions: + + +#. Compute/Read all the one- and two-electron integrals, and store them in memory + +#. Check in the |EZFIO| database if there is a set of |MOs|. If there is, it + will read them as initial guess. Otherwise, it will create a guess. +#. Perform the |SCF| iterations based on the definition of the Fock matrix + + +The main keywords/options are: + +* :option:`scf_utils thresh_scf` +* :option:`scf_utils level_shift` + +At each iteration, the |MOs| are saved in the |EZFIO| database. Hence, if the calculation +crashes for any unexpected reason, the calculation can be restarted by running again +the |SCF| with the same |EZFIO| database. + +The `DIIS`_ algorithm is implemented, as well as the `level-shifting`_ method. +If the |SCF| does not converge, try again with a higher value of :option:`level_shift`. + +To start a calculation from scratch, the simplest way is to remove the +``mo_basis`` directory from the |EZFIO| database, and run the |SCF| again. + +.. _DIIS: https://en.wikipedia.org/w/index.php?title=DIIS +.. _level-shifting: https://doi.org/10.1002/qua.560070407 + + + + +EZFIO parameters +---------------- + +.. option:: max_dim_diis + + Maximum size of the DIIS extrapolation procedure + + Default: 15 + +.. option:: threshold_diis + + Threshold on the convergence of the DIIS error vector during a Hartree-Fock calculation. If 0. is chosen, the square root of thresh_scf will be used. + + Default: 0. + +.. option:: thresh_scf + + Threshold on the convergence of the Hartree Fock energy. + + Default: 1.e-10 + +.. option:: n_it_scf_max + + Maximum number of SCF iterations + + Default: 500 + +.. option:: level_shift + + Energy shift on the virtual MOs to improve SCF convergence + + Default: 0. + +.. option:: scf_algorithm + + Type of SCF algorithm used. Possible choices are [ Simple | DIIS] + + Default: DIIS + +.. option:: mo_guess_type + + Initial MO guess. Can be [ Huckel | HCore ] + + Default: Huckel + +.. option:: energy + + Calculated HF energy + + +.. option:: frozen_orb_scf + + If true, leave untouched all the orbitals defined as core and optimize all the orbitals defined as active with qp_set_mo_class + + Default: False + + +Providers +--------- + +.. c:var:: eigenvalues_fock_matrix_ao + + + File : :file:`scf_utils/diis.irp.f` + + .. code:: fortran + + double precision, allocatable :: eigenvalues_fock_matrix_ao (AO_num) + double precision, allocatable :: eigenvectors_fock_matrix_ao (AO_num,AO_num) + + + Eigenvalues and eigenvectors of the Fock matrix over the AO basis + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`fock_matrix_ao` + * :c:data:`s_half_inv` + + + +.. c:var:: eigenvectors_fock_matrix_ao + + + File : :file:`scf_utils/diis.irp.f` + + .. code:: fortran + + double precision, allocatable :: eigenvalues_fock_matrix_ao (AO_num) + double precision, allocatable :: eigenvectors_fock_matrix_ao (AO_num,AO_num) + + + Eigenvalues and eigenvectors of the Fock matrix over the AO basis + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`fock_matrix_ao` + * :c:data:`s_half_inv` + + + +.. c:var:: eigenvectors_fock_matrix_mo + + + File : :file:`scf_utils/diagonalize_fock.irp.f` + + .. code:: fortran + + double precision, allocatable :: eigenvectors_fock_matrix_mo (ao_num,mo_num) + + + Eigenvector of the Fock matrix in the MO basis obtained with level shift. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`elec_alpha_num` + * :c:data:`elec_beta_num` + * :c:data:`fock_matrix_mo` + * :c:data:`frozen_orb_scf` + * :c:data:`level_shift` + * :c:data:`list_inact` + * :c:data:`mo_coef` + * :c:data:`mo_num` + * :c:data:`n_core_orb` + + + +.. c:function:: extrapolate_fock_matrix: + + + File : :file:`scf_utils/roothaan_hall_scf.irp.f` + + .. code:: fortran + + subroutine extrapolate_Fock_matrix( & + error_matrix_DIIS,Fock_matrix_DIIS, & + Fock_matrix_AO_,size_Fock_matrix_AO, & + iteration_SCF,dim_DIIS & + ) + + + Compute the extrapolated Fock matrix using the DIIS procedure + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`max_dim_diis` + * :c:data:`ao_num` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`roothaan_hall_scf` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`dgemm` + * :c:func:`dsysvx` + + +.. c:var:: fock_matrix_ao + + + File : :file:`scf_utils/fock_matrix.irp.f` + + .. code:: fortran + + double precision, allocatable :: fock_matrix_ao (ao_num,ao_num) + + + Fock matrix in AO basis set + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`elec_alpha_num` + * :c:data:`elec_beta_num` + * :c:data:`fock_matrix_ao_alpha` + * :c:data:`fock_matrix_mo` + * :c:data:`frozen_orb_scf` + * :c:data:`level_shift` + * :c:data:`mo_num` + * :c:data:`s_mo_coef` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`eigenvalues_fock_matrix_ao` + * :c:data:`fps_spf_matrix_ao` + + +.. c:var:: fock_matrix_diag_mo + + + File : :file:`scf_utils/fock_matrix.irp.f` + + .. code:: fortran + + double precision, allocatable :: fock_matrix_mo (mo_num,mo_num) + double precision, allocatable :: fock_matrix_diag_mo (mo_num) + + + Fock matrix on the MO basis. + For open shells, the ROHF Fock Matrix is :: + + | F-K | F + K/2 | F | + |---------------------------------| + | F + K/2 | F | F - K/2 | + |---------------------------------| + | F | F - K/2 | F + K | + + + F = 1/2 (Fa + Fb) + + K = Fb - Fa + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`elec_alpha_num` + * :c:data:`elec_beta_num` + * :c:data:`fock_matrix_mo_alpha` + * :c:data:`fock_matrix_mo_beta` + * :c:data:`frozen_orb_scf` + * :c:data:`list_inact` + * :c:data:`mo_num` + * :c:data:`n_core_orb` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`eigenvectors_fock_matrix_mo` + * :c:data:`fock_matrix_ao` + + +.. c:var:: fock_matrix_mo + + + File : :file:`scf_utils/fock_matrix.irp.f` + + .. code:: fortran + + double precision, allocatable :: fock_matrix_mo (mo_num,mo_num) + double precision, allocatable :: fock_matrix_diag_mo (mo_num) + + + Fock matrix on the MO basis. + For open shells, the ROHF Fock Matrix is :: + + | F-K | F + K/2 | F | + |---------------------------------| + | F + K/2 | F | F - K/2 | + |---------------------------------| + | F | F - K/2 | F + K | + + + F = 1/2 (Fa + Fb) + + K = Fb - Fa + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`elec_alpha_num` + * :c:data:`elec_beta_num` + * :c:data:`fock_matrix_mo_alpha` + * :c:data:`fock_matrix_mo_beta` + * :c:data:`frozen_orb_scf` + * :c:data:`list_inact` + * :c:data:`mo_num` + * :c:data:`n_core_orb` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`eigenvectors_fock_matrix_mo` + * :c:data:`fock_matrix_ao` + + +.. c:var:: fock_matrix_mo_alpha + + + File : :file:`scf_utils/fock_matrix.irp.f` + + .. code:: fortran + + double precision, allocatable :: fock_matrix_mo_alpha (mo_num,mo_num) + + + Fock matrix on the MO basis + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`fock_matrix_ao_alpha` + * :c:data:`mo_coef` + * :c:data:`mo_num` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`fock_matrix_mo` + + +.. c:var:: fock_matrix_mo_beta + + + File : :file:`scf_utils/fock_matrix.irp.f` + + .. code:: fortran + + double precision, allocatable :: fock_matrix_mo_beta (mo_num,mo_num) + + + Fock matrix on the MO basis + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`fock_matrix_ao_alpha` + * :c:data:`mo_coef` + * :c:data:`mo_num` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`fock_matrix_mo` + + +.. c:var:: fps_spf_matrix_ao + + + File : :file:`scf_utils/diis.irp.f` + + .. code:: fortran + + double precision, allocatable :: fps_spf_matrix_ao (AO_num,AO_num) + + + Commutator FPS - SPF + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`ao_overlap` + * :c:data:`fock_matrix_ao` + * :c:data:`scf_density_matrix_ao` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`fps_spf_matrix_mo` + + +.. c:var:: fps_spf_matrix_mo + + + File : :file:`scf_utils/diis.irp.f` + + .. code:: fortran + + double precision, allocatable :: fps_spf_matrix_mo (mo_num,mo_num) + + + Commutator FPS - SPF in MO basis + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`fps_spf_matrix_ao` + * :c:data:`mo_coef` + * :c:data:`mo_num` + + + +.. c:var:: scf_density_matrix_ao + + + File : :file:`scf_utils/scf_density_matrix_ao.irp.f` + + .. code:: fortran + + double precision, allocatable :: scf_density_matrix_ao (ao_num,ao_num) + + + S^{-1}.P.S^{-1} where P = C.C^t + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`elec_alpha_num` + * :c:data:`elec_beta_num` + * :c:data:`scf_density_matrix_ao_alpha` + * :c:data:`scf_density_matrix_ao_beta` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`fps_spf_matrix_ao` + + +.. c:var:: scf_density_matrix_ao_alpha + + + File : :file:`scf_utils/scf_density_matrix_ao.irp.f` + + .. code:: fortran + + double precision, allocatable :: scf_density_matrix_ao_alpha (ao_num,ao_num) + + + S^{-1}.P_alpha.S^{-1} + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`elec_alpha_num` + * :c:data:`mo_coef` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_two_e_integral_alpha` + * :c:data:`hf_energy` + * :c:data:`scf_density_matrix_ao` + * :c:data:`scf_energy` + + +.. c:var:: scf_density_matrix_ao_beta + + + File : :file:`scf_utils/scf_density_matrix_ao.irp.f` + + .. code:: fortran + + double precision, allocatable :: scf_density_matrix_ao_beta (ao_num,ao_num) + + + S^{-1}.P_beta.S^{-1} + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`elec_beta_num` + * :c:data:`mo_coef` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_two_e_integral_alpha` + * :c:data:`hf_energy` + * :c:data:`scf_density_matrix_ao` + * :c:data:`scf_energy` + + +.. c:var:: scf_energy + + + File : :file:`scf_utils/fock_matrix.irp.f` + + .. code:: fortran + + double precision :: scf_energy + + + Hartree-Fock energy + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`ao_one_e_integrals` + * :c:data:`extra_e_contrib_density` + * :c:data:`fock_matrix_ao_alpha` + * :c:data:`nuclear_repulsion` + * :c:data:`scf_density_matrix_ao_alpha` + * :c:data:`scf_density_matrix_ao_beta` + + + +.. c:var:: threshold_diis_nonzero + + + File : :file:`scf_utils/diis.irp.f` + + .. code:: fortran + + double precision :: threshold_diis_nonzero + + + If threshold_DIIS is zero, choose sqrt(thresh_scf) + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`thresh_scf` + * :c:data:`threshold_diis` + + + + +Subroutines / functions +----------------------- + +.. c:function:: damping_scf: + + + File : :file:`scf_utils/damping_scf.irp.f` + + .. code:: fortran + + subroutine damping_SCF + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_coef` + * :c:data:`eigenvectors_fock_matrix_mo` + * :c:data:`scf_energy` + * :c:data:`scf_density_matrix_ao_beta` + * :c:data:`fock_matrix_mo` + * :c:data:`ao_num` + * :c:data:`scf_density_matrix_ao_alpha` + * :c:data:`fock_matrix_ao` + * :c:data:`mo_label` + * :c:data:`n_it_scf_max` + * :c:data:`thresh_scf` + * :c:data:`frozen_orb_scf` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`ezfio_set_hartree_fock_energy` + * :c:func:`initialize_mo_coef_begin_iteration` + * :c:func:`mo_as_eigvectors_of_mo_matrix` + * :c:func:`reorder_core_orb` + * :c:func:`save_mos` + * :c:func:`write_double` + * :c:func:`write_time` + + Touches: + + .. hlist:: + :columns: 3 + + * :c:data:`scf_density_matrix_ao_alpha` + * :c:data:`scf_density_matrix_ao_beta` + * :c:data:`mo_coef` + + +.. c:function:: huckel_guess: + + + File : :file:`scf_utils/huckel.irp.f` + + .. code:: fortran + + subroutine huckel_guess + + + Build the MOs using the extended Huckel model + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_one_e_integrals` + * :c:data:`mo_coef` + * :c:data:`eigenvectors_fock_matrix_mo` + * :c:data:`ao_overlap` + * :c:data:`ao_num` + * :c:data:`ao_two_e_integral_alpha` + * :c:data:`fock_matrix_ao_alpha` + * :c:data:`fock_matrix_ao_alpha` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`create_guess` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`save_mos` + + Touches: + + .. hlist:: + :columns: 3 + + * :c:data:`fock_matrix_ao_alpha` + * :c:data:`fock_matrix_ao_alpha` + * :c:data:`mo_coef` + + +.. c:function:: roothaan_hall_scf: + + + File : :file:`scf_utils/roothaan_hall_scf.irp.f` + + .. code:: fortran + + subroutine Roothaan_Hall_SCF + + + Roothaan-Hall algorithm for SCF Hartree-Fock calculation + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`max_dim_diis` + * :c:data:`mo_occ` + * :c:data:`ao_md5` + * :c:data:`mo_coef` + * :c:data:`level_shift` + * :c:data:`fps_spf_matrix_mo` + * :c:data:`eigenvectors_fock_matrix_mo` + * :c:data:`scf_energy` + * :c:data:`mo_num` + * :c:data:`thresh_scf` + * :c:data:`scf_algorithm` + * :c:data:`fock_matrix_mo` + * :c:data:`ao_num` + * :c:data:`fock_matrix_ao` + * :c:data:`mo_label` + * :c:data:`n_it_scf_max` + * :c:data:`threshold_diis_nonzero` + * :c:data:`frozen_orb_scf` + * :c:data:`fock_matrix_ao_alpha` + * :c:data:`fock_matrix_ao_alpha` + * :c:data:`fps_spf_matrix_ao` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`run` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`extrapolate_fock_matrix` + * :c:func:`initialize_mo_coef_begin_iteration` + * :c:func:`mo_as_eigvectors_of_mo_matrix` + * :c:func:`reorder_core_orb` + * :c:func:`save_mos` + * :c:func:`write_double` + * :c:func:`write_time` + + Touches: + + .. hlist:: + :columns: 3 + + * :c:data:`fock_matrix_ao_alpha` + * :c:data:`fock_matrix_ao_alpha` + * :c:data:`mo_coef` + * :c:data:`level_shift` + * :c:data:`mo_coef` + diff --git a/docs/source/modules/selectors_cassd.rst b/docs/source/modules/selectors_cassd.rst new file mode 100644 index 00000000..0740d91e --- /dev/null +++ b/docs/source/modules/selectors_cassd.rst @@ -0,0 +1,13 @@ +.. _module_selectors_cassd: + +.. program:: selectors_cassd + +.. default-role:: option + +=============== +selectors_cassd +=============== + +Selectors for |CAS-SD| calculations. The selectors are defined as first the +generators from :ref:`module_generators_cas`, and then the rest of the wave function. + diff --git a/docs/source/modules/selectors_full.rst b/docs/source/modules/selectors_full.rst new file mode 100644 index 00000000..98dd62d9 --- /dev/null +++ b/docs/source/modules/selectors_full.rst @@ -0,0 +1,153 @@ +.. _module_selectors_full: + +.. program:: selectors_full + +.. default-role:: option + +============== +selectors_full +============== + +All the determinants are possible selectors. Only the largest contributions are kept, where +a threshold is applied to the squared norm of the wave function, with the :option:`determinants +threshold_selectors` flag. + + + +Providers +--------- + +.. c:var:: n_det_selectors + + + File : :file:`selectors_full/selectors.irp.f` + + .. code:: fortran + + integer :: n_det_selectors + + + For Single reference wave functions, the number of selectors is 1 : the + Hartree-Fock determinant + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mpi_master` + * :c:data:`n_det` + * :c:data:`n_det_generators` + * :c:data:`output_wall_time_0` + * :c:data:`psi_det_sorted` + * :c:data:`threshold_selectors` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`coef_hf_selector` + * :c:data:`exc_degree_per_selectors` + * :c:data:`psi_selectors` + * :c:data:`psi_selectors_coef_transp` + * :c:data:`psi_selectors_diag_h_mat` + * :c:data:`pt2_f` + + +.. c:var:: psi_selectors + + + File : :file:`selectors_full/selectors.irp.f` + + .. code:: fortran + + integer(bit_kind), allocatable :: psi_selectors (N_int,2,psi_selectors_size) + double precision, allocatable :: psi_selectors_coef (psi_selectors_size,N_states) + + + Determinants on which we apply for perturbation. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_det_selectors` + * :c:data:`n_int` + * :c:data:`n_states` + * :c:data:`psi_det_sorted` + * :c:data:`psi_selectors_size` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`coef_hf_selector` + * :c:data:`exc_degree_per_selectors` + * :c:data:`psi_selectors_coef_transp` + * :c:data:`psi_selectors_diag_h_mat` + + +.. c:var:: psi_selectors_coef + + + File : :file:`selectors_full/selectors.irp.f` + + .. code:: fortran + + integer(bit_kind), allocatable :: psi_selectors (N_int,2,psi_selectors_size) + double precision, allocatable :: psi_selectors_coef (psi_selectors_size,N_states) + + + Determinants on which we apply for perturbation. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_det_selectors` + * :c:data:`n_int` + * :c:data:`n_states` + * :c:data:`psi_det_sorted` + * :c:data:`psi_selectors_size` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`coef_hf_selector` + * :c:data:`exc_degree_per_selectors` + * :c:data:`psi_selectors_coef_transp` + * :c:data:`psi_selectors_diag_h_mat` + + +.. c:var:: threshold_selectors + + + File : :file:`selectors_full/selectors.irp.f` + + .. code:: fortran + + double precision :: threshold_selectors + + + Thresholds on selectors (fraction of the square of the norm) + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`threshold_generators` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`n_det_selectors` + diff --git a/docs/source/modules/selectors_utils.rst b/docs/source/modules/selectors_utils.rst new file mode 100644 index 00000000..9c4b3bd4 --- /dev/null +++ b/docs/source/modules/selectors_utils.rst @@ -0,0 +1,649 @@ +.. _module_selectors_utils: + +.. program:: selectors_utils + +.. default-role:: option + +=============== +selectors_utils +=============== + +Helper functions for selectors. + + + + +Providers +--------- + +.. c:var:: coef_hf_selector + + + File : :file:`selectors_utils/e_corr_selectors.irp.f` + + .. code:: fortran + + double precision :: coef_hf_selector + double precision :: inv_selectors_coef_hf + double precision :: inv_selectors_coef_hf_squared + double precision, allocatable :: e_corr_per_selectors (N_det_selectors) + double precision, allocatable :: i_h_hf_per_selectors (N_det_selectors) + double precision, allocatable :: delta_e_per_selector (N_det_selectors) + double precision :: e_corr_double_only + double precision :: e_corr_second_order + + + Correlation energy per determinant with respect to the Hartree-Fock determinant + for the all the double excitations in the selectors determinants. + + E_corr_per_selectors(i) = :math:`\langle D_i | H | \text{HF}\rangle c(D_i)/c(HF)` if :math:`| D_i \rangle` is a double excitation. + + E_corr_per_selectors(i) = -1000.d0 if it is not a double excitation + + coef_hf_selector = coefficient of the Hartree Fock determinant in the selectors determinants + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`big_array_coulomb_integrals` + * :c:data:`big_array_coulomb_integrals` + * :c:data:`exc_degree_per_selectors` + * :c:data:`mo_integrals_map` + * :c:data:`mo_two_e_integrals_in_map` + * :c:data:`n_det_selectors` + * :c:data:`n_int` + * :c:data:`psi_selectors` + * :c:data:`ref_bitmask` + * :c:data:`ref_bitmask_energy` + + + +.. c:var:: delta_e_per_selector + + + File : :file:`selectors_utils/e_corr_selectors.irp.f` + + .. code:: fortran + + double precision :: coef_hf_selector + double precision :: inv_selectors_coef_hf + double precision :: inv_selectors_coef_hf_squared + double precision, allocatable :: e_corr_per_selectors (N_det_selectors) + double precision, allocatable :: i_h_hf_per_selectors (N_det_selectors) + double precision, allocatable :: delta_e_per_selector (N_det_selectors) + double precision :: e_corr_double_only + double precision :: e_corr_second_order + + + Correlation energy per determinant with respect to the Hartree-Fock determinant + for the all the double excitations in the selectors determinants. + + E_corr_per_selectors(i) = :math:`\langle D_i | H | \text{HF}\rangle c(D_i)/c(HF)` if :math:`| D_i \rangle` is a double excitation. + + E_corr_per_selectors(i) = -1000.d0 if it is not a double excitation + + coef_hf_selector = coefficient of the Hartree Fock determinant in the selectors determinants + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`big_array_coulomb_integrals` + * :c:data:`big_array_coulomb_integrals` + * :c:data:`exc_degree_per_selectors` + * :c:data:`mo_integrals_map` + * :c:data:`mo_two_e_integrals_in_map` + * :c:data:`n_det_selectors` + * :c:data:`n_int` + * :c:data:`psi_selectors` + * :c:data:`ref_bitmask` + * :c:data:`ref_bitmask_energy` + + + +.. c:var:: double_index_selectors + + + File : :file:`selectors_utils/e_corr_selectors.irp.f` + + .. code:: fortran + + integer, allocatable :: exc_degree_per_selectors (N_det_selectors) + integer, allocatable :: double_index_selectors (N_det_selectors) + integer :: n_double_selectors + + + Degree of excitation respect to Hartree Fock for the wave function + for the all the selectors determinants. + + double_index_selectors = list of the index of the double excitations + + n_double_selectors = number of double excitations in the selectors determinants + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_det_selectors` + * :c:data:`n_int` + * :c:data:`psi_selectors` + * :c:data:`ref_bitmask` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`coef_hf_selector` + + +.. c:var:: e_corr_double_only + + + File : :file:`selectors_utils/e_corr_selectors.irp.f` + + .. code:: fortran + + double precision :: coef_hf_selector + double precision :: inv_selectors_coef_hf + double precision :: inv_selectors_coef_hf_squared + double precision, allocatable :: e_corr_per_selectors (N_det_selectors) + double precision, allocatable :: i_h_hf_per_selectors (N_det_selectors) + double precision, allocatable :: delta_e_per_selector (N_det_selectors) + double precision :: e_corr_double_only + double precision :: e_corr_second_order + + + Correlation energy per determinant with respect to the Hartree-Fock determinant + for the all the double excitations in the selectors determinants. + + E_corr_per_selectors(i) = :math:`\langle D_i | H | \text{HF}\rangle c(D_i)/c(HF)` if :math:`| D_i \rangle` is a double excitation. + + E_corr_per_selectors(i) = -1000.d0 if it is not a double excitation + + coef_hf_selector = coefficient of the Hartree Fock determinant in the selectors determinants + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`big_array_coulomb_integrals` + * :c:data:`big_array_coulomb_integrals` + * :c:data:`exc_degree_per_selectors` + * :c:data:`mo_integrals_map` + * :c:data:`mo_two_e_integrals_in_map` + * :c:data:`n_det_selectors` + * :c:data:`n_int` + * :c:data:`psi_selectors` + * :c:data:`ref_bitmask` + * :c:data:`ref_bitmask_energy` + + + +.. c:var:: e_corr_per_selectors + + + File : :file:`selectors_utils/e_corr_selectors.irp.f` + + .. code:: fortran + + double precision :: coef_hf_selector + double precision :: inv_selectors_coef_hf + double precision :: inv_selectors_coef_hf_squared + double precision, allocatable :: e_corr_per_selectors (N_det_selectors) + double precision, allocatable :: i_h_hf_per_selectors (N_det_selectors) + double precision, allocatable :: delta_e_per_selector (N_det_selectors) + double precision :: e_corr_double_only + double precision :: e_corr_second_order + + + Correlation energy per determinant with respect to the Hartree-Fock determinant + for the all the double excitations in the selectors determinants. + + E_corr_per_selectors(i) = :math:`\langle D_i | H | \text{HF}\rangle c(D_i)/c(HF)` if :math:`| D_i \rangle` is a double excitation. + + E_corr_per_selectors(i) = -1000.d0 if it is not a double excitation + + coef_hf_selector = coefficient of the Hartree Fock determinant in the selectors determinants + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`big_array_coulomb_integrals` + * :c:data:`big_array_coulomb_integrals` + * :c:data:`exc_degree_per_selectors` + * :c:data:`mo_integrals_map` + * :c:data:`mo_two_e_integrals_in_map` + * :c:data:`n_det_selectors` + * :c:data:`n_int` + * :c:data:`psi_selectors` + * :c:data:`ref_bitmask` + * :c:data:`ref_bitmask_energy` + + + +.. c:var:: e_corr_second_order + + + File : :file:`selectors_utils/e_corr_selectors.irp.f` + + .. code:: fortran + + double precision :: coef_hf_selector + double precision :: inv_selectors_coef_hf + double precision :: inv_selectors_coef_hf_squared + double precision, allocatable :: e_corr_per_selectors (N_det_selectors) + double precision, allocatable :: i_h_hf_per_selectors (N_det_selectors) + double precision, allocatable :: delta_e_per_selector (N_det_selectors) + double precision :: e_corr_double_only + double precision :: e_corr_second_order + + + Correlation energy per determinant with respect to the Hartree-Fock determinant + for the all the double excitations in the selectors determinants. + + E_corr_per_selectors(i) = :math:`\langle D_i | H | \text{HF}\rangle c(D_i)/c(HF)` if :math:`| D_i \rangle` is a double excitation. + + E_corr_per_selectors(i) = -1000.d0 if it is not a double excitation + + coef_hf_selector = coefficient of the Hartree Fock determinant in the selectors determinants + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`big_array_coulomb_integrals` + * :c:data:`big_array_coulomb_integrals` + * :c:data:`exc_degree_per_selectors` + * :c:data:`mo_integrals_map` + * :c:data:`mo_two_e_integrals_in_map` + * :c:data:`n_det_selectors` + * :c:data:`n_int` + * :c:data:`psi_selectors` + * :c:data:`ref_bitmask` + * :c:data:`ref_bitmask_energy` + + + +.. c:var:: exc_degree_per_selectors + + + File : :file:`selectors_utils/e_corr_selectors.irp.f` + + .. code:: fortran + + integer, allocatable :: exc_degree_per_selectors (N_det_selectors) + integer, allocatable :: double_index_selectors (N_det_selectors) + integer :: n_double_selectors + + + Degree of excitation respect to Hartree Fock for the wave function + for the all the selectors determinants. + + double_index_selectors = list of the index of the double excitations + + n_double_selectors = number of double excitations in the selectors determinants + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_det_selectors` + * :c:data:`n_int` + * :c:data:`psi_selectors` + * :c:data:`ref_bitmask` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`coef_hf_selector` + + +.. c:var:: i_h_hf_per_selectors + + + File : :file:`selectors_utils/e_corr_selectors.irp.f` + + .. code:: fortran + + double precision :: coef_hf_selector + double precision :: inv_selectors_coef_hf + double precision :: inv_selectors_coef_hf_squared + double precision, allocatable :: e_corr_per_selectors (N_det_selectors) + double precision, allocatable :: i_h_hf_per_selectors (N_det_selectors) + double precision, allocatable :: delta_e_per_selector (N_det_selectors) + double precision :: e_corr_double_only + double precision :: e_corr_second_order + + + Correlation energy per determinant with respect to the Hartree-Fock determinant + for the all the double excitations in the selectors determinants. + + E_corr_per_selectors(i) = :math:`\langle D_i | H | \text{HF}\rangle c(D_i)/c(HF)` if :math:`| D_i \rangle` is a double excitation. + + E_corr_per_selectors(i) = -1000.d0 if it is not a double excitation + + coef_hf_selector = coefficient of the Hartree Fock determinant in the selectors determinants + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`big_array_coulomb_integrals` + * :c:data:`big_array_coulomb_integrals` + * :c:data:`exc_degree_per_selectors` + * :c:data:`mo_integrals_map` + * :c:data:`mo_two_e_integrals_in_map` + * :c:data:`n_det_selectors` + * :c:data:`n_int` + * :c:data:`psi_selectors` + * :c:data:`ref_bitmask` + * :c:data:`ref_bitmask_energy` + + + +.. c:var:: inv_selectors_coef_hf + + + File : :file:`selectors_utils/e_corr_selectors.irp.f` + + .. code:: fortran + + double precision :: coef_hf_selector + double precision :: inv_selectors_coef_hf + double precision :: inv_selectors_coef_hf_squared + double precision, allocatable :: e_corr_per_selectors (N_det_selectors) + double precision, allocatable :: i_h_hf_per_selectors (N_det_selectors) + double precision, allocatable :: delta_e_per_selector (N_det_selectors) + double precision :: e_corr_double_only + double precision :: e_corr_second_order + + + Correlation energy per determinant with respect to the Hartree-Fock determinant + for the all the double excitations in the selectors determinants. + + E_corr_per_selectors(i) = :math:`\langle D_i | H | \text{HF}\rangle c(D_i)/c(HF)` if :math:`| D_i \rangle` is a double excitation. + + E_corr_per_selectors(i) = -1000.d0 if it is not a double excitation + + coef_hf_selector = coefficient of the Hartree Fock determinant in the selectors determinants + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`big_array_coulomb_integrals` + * :c:data:`big_array_coulomb_integrals` + * :c:data:`exc_degree_per_selectors` + * :c:data:`mo_integrals_map` + * :c:data:`mo_two_e_integrals_in_map` + * :c:data:`n_det_selectors` + * :c:data:`n_int` + * :c:data:`psi_selectors` + * :c:data:`ref_bitmask` + * :c:data:`ref_bitmask_energy` + + + +.. c:var:: inv_selectors_coef_hf_squared + + + File : :file:`selectors_utils/e_corr_selectors.irp.f` + + .. code:: fortran + + double precision :: coef_hf_selector + double precision :: inv_selectors_coef_hf + double precision :: inv_selectors_coef_hf_squared + double precision, allocatable :: e_corr_per_selectors (N_det_selectors) + double precision, allocatable :: i_h_hf_per_selectors (N_det_selectors) + double precision, allocatable :: delta_e_per_selector (N_det_selectors) + double precision :: e_corr_double_only + double precision :: e_corr_second_order + + + Correlation energy per determinant with respect to the Hartree-Fock determinant + for the all the double excitations in the selectors determinants. + + E_corr_per_selectors(i) = :math:`\langle D_i | H | \text{HF}\rangle c(D_i)/c(HF)` if :math:`| D_i \rangle` is a double excitation. + + E_corr_per_selectors(i) = -1000.d0 if it is not a double excitation + + coef_hf_selector = coefficient of the Hartree Fock determinant in the selectors determinants + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`big_array_coulomb_integrals` + * :c:data:`big_array_coulomb_integrals` + * :c:data:`exc_degree_per_selectors` + * :c:data:`mo_integrals_map` + * :c:data:`mo_two_e_integrals_in_map` + * :c:data:`n_det_selectors` + * :c:data:`n_int` + * :c:data:`psi_selectors` + * :c:data:`ref_bitmask` + * :c:data:`ref_bitmask_energy` + + + +.. c:var:: n_double_selectors + + + File : :file:`selectors_utils/e_corr_selectors.irp.f` + + .. code:: fortran + + integer, allocatable :: exc_degree_per_selectors (N_det_selectors) + integer, allocatable :: double_index_selectors (N_det_selectors) + integer :: n_double_selectors + + + Degree of excitation respect to Hartree Fock for the wave function + for the all the selectors determinants. + + double_index_selectors = list of the index of the double excitations + + n_double_selectors = number of double excitations in the selectors determinants + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_det_selectors` + * :c:data:`n_int` + * :c:data:`psi_selectors` + * :c:data:`ref_bitmask` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`coef_hf_selector` + + +.. c:var:: psi_selectors_coef_transp + + + File : :file:`selectors_utils/selectors.irp.f` + + .. code:: fortran + + double precision, allocatable :: psi_selectors_coef_transp (N_states,psi_selectors_size) + + + Transposed psi_selectors + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_det_selectors` + * :c:data:`n_states` + * :c:data:`psi_selectors` + * :c:data:`psi_selectors_size` + + + +.. c:var:: psi_selectors_diag_h_mat + + + File : :file:`selectors_utils/selectors.irp.f` + + .. code:: fortran + + double precision, allocatable :: psi_selectors_diag_h_mat (psi_selectors_size) + + + Diagonal elements of the H matrix for each selectors + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`elec_num` + * :c:data:`n_det_selectors` + * :c:data:`n_int` + * :c:data:`psi_selectors` + * :c:data:`psi_selectors_size` + * :c:data:`ref_bitmask` + * :c:data:`ref_bitmask_energy` + + + +.. c:var:: psi_selectors_size + + + File : :file:`selectors_utils/selectors.irp.f` + + .. code:: fortran + + integer :: psi_selectors_size + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`psi_det_size` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`psi_selectors` + * :c:data:`psi_selectors_coef_transp` + * :c:data:`psi_selectors_diag_h_mat` + + + +Subroutines / functions +----------------------- + +.. c:function:: zmq_get_n_det_generators: + + + File : :file:`selectors_utils/zmq.irp.f_template_102` + + .. code:: fortran + + integer function zmq_get_N_det_generators(zmq_to_qp_run_socket, worker_id) + + + Get N_det_generators from the qp_run scheduler + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_det_generators` + * :c:data:`zmq_state` + * :c:data:`mpi_master` + + +.. c:function:: zmq_get_n_det_selectors: + + + File : :file:`selectors_utils/zmq.irp.f_template_102` + + .. code:: fortran + + integer function zmq_get_N_det_selectors(zmq_to_qp_run_socket, worker_id) + + + Get N_det_selectors from the qp_run scheduler + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_det_selectors` + * :c:data:`zmq_state` + * :c:data:`mpi_master` + + +.. c:function:: zmq_put_n_det_generators: + + + File : :file:`selectors_utils/zmq.irp.f_template_102` + + .. code:: fortran + + integer function zmq_put_N_det_generators(zmq_to_qp_run_socket,worker_id) + + + Put N_det_generators on the qp_run scheduler + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_det_generators` + * :c:data:`zmq_state` + + +.. c:function:: zmq_put_n_det_selectors: + + + File : :file:`selectors_utils/zmq.irp.f_template_102` + + .. code:: fortran + + integer function zmq_put_N_det_selectors(zmq_to_qp_run_socket,worker_id) + + + Put N_det_selectors on the qp_run scheduler + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_det_selectors` + * :c:data:`zmq_state` + diff --git a/docs/source/modules/single_ref_method.rst b/docs/source/modules/single_ref_method.rst new file mode 100644 index 00000000..e0d17a00 --- /dev/null +++ b/docs/source/modules/single_ref_method.rst @@ -0,0 +1,14 @@ +.. _module_single_ref_method: + +.. program:: single_ref_method + +.. default-role:: option + +================= +single_ref_method +================= + +Include this module for single reference methods. +Using this module, the only generator determinant is the Hartree-Fock determinant. + + diff --git a/docs/source/modules/tools.rst b/docs/source/modules/tools.rst new file mode 100644 index 00000000..dfe746cc --- /dev/null +++ b/docs/source/modules/tools.rst @@ -0,0 +1,246 @@ +.. _module_tools: + +.. program:: tools + +.. default-role:: option + +===== +tools +===== + +Useful tools are grouped in this module. + + + +Programs +-------- + + * :ref:`diagonalize_h` + * :ref:`fcidump` + * :ref:`four_idx_transform` + * :ref:`molden` + * :ref:`print_e_conv` + * :ref:`print_wf` + * :ref:`save_natorb` + * :ref:`save_one_e_dm` + * :ref:`save_ortho_mos` + * :ref:`write_integrals_erf` + +Subroutines / functions +----------------------- + +.. c:function:: routine: + + + File : :file:`write_integrals_erf.irp.f` + + .. code:: fortran + + subroutine routine + + + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`diagonalize_h` + * :c:func:`print_wf` + * :c:func:`write_integrals_erf` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`save_erf_two_e_integrals_ao` + * :c:func:`save_erf_two_e_integrals_mo` + + +.. c:function:: routine_e_conv: + + + File : :file:`print_e_conv.irp.f` + + .. code:: fortran + + subroutine routine_e_conv + + + routine called by :c:func:`print_e_conv` + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_states` + * :c:data:`ezfio_filename` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`print_e_conv` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`ezfio_get_iterations_energy_iterations` + * :c:func:`ezfio_get_iterations_n_det_iterations` + * :c:func:`ezfio_get_iterations_n_iter` + * :c:func:`ezfio_get_iterations_pt2_iterations` + + +.. c:function:: routine_save_one_e_dm: + + + File : :file:`save_one_e_dm.irp.f` + + .. code:: fortran + + subroutine routine_save_one_e_dm + + + routine called by :c:func:`save_one_e_dm` + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`one_e_dm_mo_alpha` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`save_one_e_dm` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`ezfio_set_aux_quantities_data_one_e_dm_alpha_mo` + * :c:func:`ezfio_set_aux_quantities_data_one_e_dm_beta_mo` + + +.. c:function:: write_ao_basis: + + + File : :file:`molden.irp.f` + + .. code:: fortran + + subroutine write_Ao_basis(i_unit_output) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`nucl_list_shell_aos` + * :c:data:`ao_coef` + * :c:data:`ao_num` + * :c:data:`ao_prim_num` + * :c:data:`nucl_charge` + * :c:data:`ao_l` + * :c:data:`ao_expo` + * :c:data:`element_name` + * :c:data:`nucl_num` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`molden` + + +.. c:function:: write_geometry: + + + File : :file:`molden.irp.f` + + .. code:: fortran + + subroutine write_geometry(i_unit_output) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`nucl_coord` + * :c:data:`nucl_charge` + * :c:data:`element_name` + * :c:data:`nucl_num` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`molden` + + +.. c:function:: write_intro_gamess: + + + File : :file:`molden.irp.f` + + .. code:: fortran + + subroutine write_intro_gamess(i_unit_output) + + + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`molden` + + +.. c:function:: write_mo_basis: + + + File : :file:`molden.irp.f` + + .. code:: fortran + + subroutine write_Mo_basis(i_unit_output) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_num` + * :c:data:`mo_coef` + * :c:data:`ao_num` + * :c:data:`ao_l_char_space` + * :c:data:`nucl_charge` + * :c:data:`ao_nucl` + * :c:data:`element_name` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`molden` + diff --git a/docs/source/modules/utils.rst b/docs/source/modules/utils.rst new file mode 100644 index 00000000..775cfc0d --- /dev/null +++ b/docs/source/modules/utils.rst @@ -0,0 +1,3025 @@ +.. _module_utils: + +.. program:: utils + +.. default-role:: option + +===== +utils +===== + +Contains general purpose utilities (sorting, maps, etc). + + + + +Providers +--------- + +.. c:var:: binom + + + File : :file:`utils/util.irp.f` + + .. code:: fortran + + double precision, allocatable :: binom (0:40,0:40) + double precision, allocatable :: binom_transp (0:40,0:40) + + + Binomial coefficients + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`binom_int` + + +.. c:var:: binom_int + + + File : :file:`utils/util.irp.f` + + .. code:: fortran + + integer*8, allocatable :: binom_int (0:40,0:40) + integer*8, allocatable :: binom_int_transp (0:40,0:40) + + + Binomial coefficients, as integers*8 + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`binom` + + + +.. c:var:: binom_int_transp + + + File : :file:`utils/util.irp.f` + + .. code:: fortran + + integer*8, allocatable :: binom_int (0:40,0:40) + integer*8, allocatable :: binom_int_transp (0:40,0:40) + + + Binomial coefficients, as integers*8 + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`binom` + + + +.. c:var:: binom_transp + + + File : :file:`utils/util.irp.f` + + .. code:: fortran + + double precision, allocatable :: binom (0:40,0:40) + double precision, allocatable :: binom_transp (0:40,0:40) + + + Binomial coefficients + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`binom_int` + + +.. c:var:: degree_max_integration_lebedev + + + File : :file:`utils/angular_integration.irp.f` + + .. code:: fortran + + integer :: degree_max_integration_lebedev + + + integrate correctly a polynom of order "degree_max_integration_lebedev" + needed for the angular integration according to LEBEDEV formulae + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`n_points_integration_angular_lebedev` + * :c:data:`theta_angular_integration_lebedev` + + +.. c:function:: dtranspose: + + + File : :file:`utils/transpose.irp.f` + + .. code:: fortran + + recursive subroutine dtranspose(A,LDA,B,LDB,d1,d2) + + + Transpose input matrix A into output matrix B + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`dtranspose` + * :c:func:`h_s2_u_0_nstates_openmp` + * :c:func:`h_s2_u_0_nstates_zmq` + * :c:func:`h_s2_u_0_two_e_nstates_openmp` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`dtranspose` + + +.. c:var:: fact_inv + + + File : :file:`utils/util.irp.f` + + .. code:: fortran + + double precision, allocatable :: fact_inv (128) + + + 1/n! + + + +.. c:function:: i2radix_sort: + + + File : :file:`utils/sort.irp.f_template_644` + + .. code:: fortran + + recursive subroutine i2radix_sort(x,iorder,isize,iradix) + + + Sort integer array x(isize) using the radix sort algorithm. + iorder in input should be (1,2,3,...,isize), and in output + contains the new order of the elements. + iradix should be -1 in input. + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`get_mo_two_e_integrals_erf_i1j1` + * :c:func:`get_mo_two_e_integrals_erf_ij` + * :c:func:`get_mo_two_e_integrals_i1j1` + * :c:func:`get_mo_two_e_integrals_ij` + * :c:func:`i2radix_sort` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`i2radix_sort` + * :c:func:`insertion_i2sort` + + +.. c:function:: i8radix_sort: + + + File : :file:`utils/sort.irp.f_template_644` + + .. code:: fortran + + recursive subroutine i8radix_sort(x,iorder,isize,iradix) + + + Sort integer array x(isize) using the radix sort algorithm. + iorder in input should be (1,2,3,...,isize), and in output + contains the new order of the elements. + iradix should be -1 in input. + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`get_mo_two_e_integrals_erf_i1j1` + * :c:func:`get_mo_two_e_integrals_erf_ij` + * :c:func:`get_mo_two_e_integrals_i1j1` + * :c:func:`get_mo_two_e_integrals_ij` + * :c:func:`i8radix_sort` + * :c:data:`psi_bilinear_matrix_transp_values` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`i8radix_sort` + * :c:func:`insertion_i8sort` + + +.. c:function:: i8radix_sort_big: + + + File : :file:`utils/sort.irp.f_template_644` + + .. code:: fortran + + recursive subroutine i8radix_sort_big(x,iorder,isize,iradix) + + + Sort integer array x(isize) using the radix sort algorithm. + iorder in input should be (1,2,3,...,isize), and in output + contains the new order of the elements. + iradix should be -1 in input. + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`i8radix_sort_big` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`i8radix_sort_big` + * :c:func:`insertion_i8sort_big` + + +.. c:var:: inv_int + + + File : :file:`utils/util.irp.f` + + .. code:: fortran + + double precision, allocatable :: inv_int (128) + + + 1/i + + + +.. c:function:: iradix_sort: + + + File : :file:`utils/sort.irp.f_template_644` + + .. code:: fortran + + recursive subroutine iradix_sort(x,iorder,isize,iradix) + + + Sort integer array x(isize) using the radix sort algorithm. + iorder in input should be (1,2,3,...,isize), and in output + contains the new order of the elements. + iradix should be -1 in input. + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`get_mo_two_e_integrals_erf_i1j1` + * :c:func:`get_mo_two_e_integrals_erf_ij` + * :c:func:`get_mo_two_e_integrals_i1j1` + * :c:func:`get_mo_two_e_integrals_ij` + * :c:func:`iradix_sort` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`insertion_isort` + * :c:func:`iradix_sort` + + +.. c:function:: iradix_sort_big: + + + File : :file:`utils/sort.irp.f_template_644` + + .. code:: fortran + + recursive subroutine iradix_sort_big(x,iorder,isize,iradix) + + + Sort integer array x(isize) using the radix sort algorithm. + iorder in input should be (1,2,3,...,isize), and in output + contains the new order of the elements. + iradix should be -1 in input. + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`iradix_sort_big` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`insertion_isort_big` + * :c:func:`iradix_sort_big` + + +.. c:var:: n_points_integration_angular_lebedev + + + File : :file:`utils/angular_integration.irp.f` + + .. code:: fortran + + integer :: n_points_integration_angular_lebedev + + + Number of points needed for the angular integral + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`degree_max_integration_lebedev` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`theta_angular_integration_lebedev` + + +.. c:var:: nproc + + + File : :file:`utils/util.irp.f` + + .. code:: fortran + + integer :: nproc + + + Number of current OpenMP threads + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_two_e_integrals_erf_in_map` + * :c:data:`ao_two_e_integrals_in_map` + * :c:data:`h_apply_buffer_allocated` + * :c:data:`n_det` + * :c:data:`nthreads_davidson` + * :c:data:`nthreads_pt2` + + +.. c:function:: overlap_gaussian_xyz: + + + File : :file:`utils/one_e_integration.irp.f` + + .. code:: fortran + + subroutine overlap_gaussian_xyz(A_center,B_center,alpha,beta,power_A,& + power_B,overlap_x,overlap_y,overlap_z,overlap,dim) + + + .. math:: + + S_x = \int (x-A_x)^{a_x} exp(-\alpha(x-A_x)^2) (x-B_x)^{b_x} exp(-beta(x-B_x)^2) dx \\ + S = S_x S_y S_z + + + Called by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_coef_normalization_libint_factor` + * :c:data:`ao_coef_normalized` + * :c:data:`ao_deriv2_x` + * :c:data:`ao_deriv_1_x` + * :c:data:`ao_dipole_x` + * :c:data:`ao_overlap` + * :c:data:`ao_spread_x` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`gaussian_product_x` + * :c:func:`give_explicit_poly_and_gaussian` + + +.. c:var:: phi_angular_integration_lebedev + + + File : :file:`utils/angular_integration.irp.f` + + .. code:: fortran + + double precision, allocatable :: theta_angular_integration_lebedev (n_points_integration_angular_lebedev) + double precision, allocatable :: phi_angular_integration_lebedev (n_points_integration_angular_lebedev) + double precision, allocatable :: weights_angular_integration_lebedev (n_points_integration_angular_lebedev) + + + Theta phi values together with the weights values for the angular integration : + integral [dphi,dtheta] f(x,y,z) = 4 * pi * sum (1 where i is the basis function and psi_j is the j th eigenvector + + + Called by: + + .. hlist:: + :columns: 3 + + * :c:data:`ci_electronic_energy` + * :c:func:`davidson_diag_hjj_sjj` + * :c:func:`mo_as_eigvectors_of_mo_matrix` + * :c:data:`psi_coef_cas_diagonalized` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`dsyev` + + +.. c:function:: lapack_diagd: + + + File : :file:`utils/linear_algebra.irp.f` + + .. code:: fortran + + subroutine lapack_diagd(eigvalues,eigvectors,H,nmax,n) + + + Diagonalize matrix H + + H is untouched between input and ouptut + + eigevalues(i) = ith lowest eigenvalue of the H matrix + + eigvectors(i,j) = where i is the basis function and psi_j is the j th eigenvector + + + Called by: + + .. hlist:: + :columns: 3 + + * :c:data:`inertia_tensor_eigenvectors` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`dsyevd` + + +.. c:function:: logfact: + + + File : :file:`utils/util.irp.f` + + .. code:: fortran + + double precision function logfact(n) + + + n! + + +.. c:function:: lowercase: + + + File : :file:`utils/util.irp.f` + + .. code:: fortran + + subroutine lowercase(txt,n) + + + Transform to lower case + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`end_parallel_job` + * :c:func:`new_parallel_job` + + +.. c:function:: map_load_from_disk: + + + File : :file:`utils/map_functions.irp.f` + + .. code:: fortran + + subroutine map_load_from_disk(filename,map) + + + + Called by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_two_e_integrals_erf_in_map` + * :c:data:`ao_two_e_integrals_in_map` + * :c:data:`mo_two_e_integrals_erf_in_map` + * :c:data:`mo_two_e_integrals_in_map` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`c_f_pointer` + * :c:func:`mmap` + + +.. c:function:: map_save_to_disk: + + + File : :file:`utils/map_functions.irp.f` + + .. code:: fortran + + subroutine map_save_to_disk(filename,map) + + + + Called by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_two_e_integrals_erf_in_map` + * :c:data:`ao_two_e_integrals_in_map` + * :c:data:`mo_two_e_integrals_erf_in_map` + * :c:data:`mo_two_e_integrals_in_map` + * :c:func:`save_erf_two_e_integrals_ao` + * :c:func:`save_erf_two_e_integrals_mo` + * :c:func:`save_erf_two_e_ints_ao_into_ints_ao` + * :c:func:`save_erf_two_e_ints_mo_into_ints_mo` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`c_f_pointer` + * :c:func:`map_sort` + * :c:func:`mmap` + * :c:func:`msync` + + +.. c:function:: memory_of_double: + + + File : :file:`utils/memory.irp.f` + + .. code:: fortran + + double precision function memory_of_double(n) + + + Computes the memory required for n double precision elements in gigabytes. + + +.. c:function:: memory_of_int: + + + File : :file:`utils/memory.irp.f` + + .. code:: fortran + + double precision function memory_of_int(n) + + + Computes the memory required for n double precision elements in gigabytes. + + +.. c:function:: multiply_poly: + + + File : :file:`utils/integration.irp.f` + + .. code:: fortran + + subroutine multiply_poly(b,nb,c,nc,d,nd) + + + Multiply two polynomials + D(t) =! D(t) +( B(t)*C(t)) + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`general_primitive_integral` + * :c:func:`general_primitive_integral_erf` + * :c:func:`give_explicit_poly_and_gaussian` + * :c:func:`give_explicit_poly_and_gaussian_x` + * :c:func:`give_polynomial_mult_center_one_e` + * :c:func:`give_polynomial_mult_center_one_e_erf` + * :c:func:`give_polynomial_mult_center_one_e_erf_opt` + * :c:func:`i_x1_pol_mult_a1` + * :c:func:`i_x1_pol_mult_a2` + * :c:func:`i_x1_pol_mult_one_e` + * :c:func:`i_x1_pol_mult_recurs` + * :c:func:`i_x2_pol_mult` + * :c:func:`i_x2_pol_mult_one_e` + + +.. c:function:: normalize: + + + File : :file:`utils/util.irp.f` + + .. code:: fortran + + subroutine normalize(u,sze) + + + Normalizes vector u + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`copy_h_apply_buffer_to_wf` + * :c:func:`davidson_diag_hjj_sjj` + * :c:func:`save_wavefunction_general` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`dscal` + + +.. c:function:: ortho_canonical: + + + File : :file:`utils/linear_algebra.irp.f` + + .. code:: fortran + + subroutine ortho_canonical(overlap,LDA,N,C,LDC,m) + + + Compute C_new=C_old.U.s^-1/2 canonical orthogonalization. + + overlap : overlap matrix + + LDA : leftmost dimension of overlap array + + N : Overlap matrix is NxN (array is (LDA,N) ) + + C : Coefficients of the vectors to orthogonalize. On exit, + orthogonal vectors + + LDC : leftmost dimension of C + + m : Coefficients matrix is MxN, ( array is (LDC,N) ) + + + Called by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_ortho_canonical_coef` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`dgemm` + * :c:func:`svd` + + +.. c:function:: ortho_lowdin: + + + File : :file:`utils/linear_algebra.irp.f` + + .. code:: fortran + + subroutine ortho_lowdin(overlap,LDA,N,C,LDC,m) + + + Compute C_new=C_old.S^-1/2 orthogonalization. + + overlap : overlap matrix + + LDA : leftmost dimension of overlap array + + N : Overlap matrix is NxN (array is (LDA,N) ) + + C : Coefficients of the vectors to orthogonalize. On exit, + orthogonal vectors + + LDC : leftmost dimension of C + + M : Coefficients matrix is MxN, ( array is (LDC,N) ) + + + Called by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_ortho_lowdin_coef` + * :c:func:`orthonormalize_mos` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`dgemm` + * :c:func:`svd` + + +.. c:function:: ortho_qr: + + + File : :file:`utils/linear_algebra.irp.f` + + .. code:: fortran + + subroutine ortho_qr(A,LDA,m,n) + + + Orthogonalization using Q.R factorization + + A : matrix to orthogonalize + + LDA : leftmost dimension of A + + n : Number of rows of A + + m : Number of columns of A + + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`davidson_diag_hjj_sjj` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`dgeqrf` + * :c:func:`dorgqr` + + +.. c:function:: ortho_qr_unblocked: + + + File : :file:`utils/linear_algebra.irp.f` + + .. code:: fortran + + subroutine ortho_qr_unblocked(A,LDA,m,n) + + + Orthogonalization using Q.R factorization + + A : matrix to orthogonalize + + LDA : leftmost dimension of A + + n : Number of rows of A + + m : Number of columns of A + + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`dgeqr2` + * :c:func:`dorg2r` + + +.. c:function:: overlap_gaussian_x: + + + File : :file:`utils/one_e_integration.irp.f` + + .. code:: fortran + + double precision function overlap_gaussian_x(A_center,B_center,alpha,beta,power_A,power_B,dim) + + + .. math:: + + \sum_{-infty}^{+infty} (x-A_x)^ax (x-B_x)^bx exp(-alpha(x-A_x)^2) exp(-beta(x-B_X)^2) dx + + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`give_explicit_poly_and_gaussian_x` + + +.. c:function:: overlap_x_abs: + + + File : :file:`utils/one_e_integration.irp.f` + + .. code:: fortran + + subroutine overlap_x_abs(A_center,B_center,alpha,beta,power_A,power_B,overlap_x,lower_exp_val,dx,nx) + + + .. math :: + + \int_{-infty}^{+infty} (x-A_center)^(power_A) * (x-B_center)^power_B * exp(-alpha(x-A_center)^2) * exp(-beta(x-B_center)^2) dx + + + Called by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_overlap_abs` + + +.. c:function:: print_memory_usage: + + + File : :file:`utils/memory.irp.f` + + .. code:: fortran + + subroutine print_memory_usage() + + + Prints the memory usage in the output + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`write_time` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`resident_memory` + * :c:func:`total_memory` + + +.. c:function:: quick_dsort: + + + File : :file:`utils/sort.irp.f_template_261` + + .. code:: fortran + + subroutine quick_dsort(x, iorder, isize) + + + Sort array x(isize) using the quicksort algorithm. + iorder in input should be (1,2,3,...,isize), and in output + contains the new order of the elements. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`nproc` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`dsort` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`rec_d_quicksort` + + +.. c:function:: quick_i2sort: + + + File : :file:`utils/sort.irp.f_template_261` + + .. code:: fortran + + subroutine quick_i2sort(x, iorder, isize) + + + Sort array x(isize) using the quicksort algorithm. + iorder in input should be (1,2,3,...,isize), and in output + contains the new order of the elements. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`nproc` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`i2sort` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`rec_i2_quicksort` + + +.. c:function:: quick_i8sort: + + + File : :file:`utils/sort.irp.f_template_261` + + .. code:: fortran + + subroutine quick_i8sort(x, iorder, isize) + + + Sort array x(isize) using the quicksort algorithm. + iorder in input should be (1,2,3,...,isize), and in output + contains the new order of the elements. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`nproc` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`i8sort` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`rec_i8_quicksort` + + +.. c:function:: quick_isort: + + + File : :file:`utils/sort.irp.f_template_261` + + .. code:: fortran + + subroutine quick_isort(x, iorder, isize) + + + Sort array x(isize) using the quicksort algorithm. + iorder in input should be (1,2,3,...,isize), and in output + contains the new order of the elements. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`nproc` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`isort` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`rec_i_quicksort` + + +.. c:function:: quick_sort: + + + File : :file:`utils/sort.irp.f_template_261` + + .. code:: fortran + + subroutine quick_sort(x, iorder, isize) + + + Sort array x(isize) using the quicksort algorithm. + iorder in input should be (1,2,3,...,isize), and in output + contains the new order of the elements. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`nproc` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`sort` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`rec__quicksort` + + +.. c:function:: recentered_poly2: + + + File : :file:`utils/integration.irp.f` + + .. code:: fortran + + subroutine recentered_poly2(P_new,x_A,x_P,a,P_new2,x_B,x_Q,b) + + + Recenter two polynomials + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`binom` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`give_explicit_poly_and_gaussian` + * :c:func:`give_explicit_poly_and_gaussian_x` + + +.. c:function:: resident_memory: + + + File : :file:`utils/memory.irp.f` + + .. code:: fortran + + subroutine resident_memory(value) + + + Returns the current used memory in gigabytes used by the current process. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`file_lock` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`check_mem` + * :c:func:`davidson_diag_hjj_sjj` + * :c:func:`print_memory_usage` + * :c:func:`run_slave_main` + * :c:func:`zmq_pt2` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`omp_set_lock` + * :c:func:`omp_unset_lock` + + +.. c:function:: rint: + + + File : :file:`utils/integration.irp.f` + + .. code:: fortran + + double precision function rint(n,rho) + + + .. math:: + + \int_0^1 dx \exp(-p x^2) x^n + + + +.. c:function:: rint1: + + + File : :file:`utils/integration.irp.f` + + .. code:: fortran + + double precision function rint1(n,rho) + + + Standard version of rint + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`inv_int` + * :c:data:`fact_inv` + + +.. c:function:: rint_large_n: + + + File : :file:`utils/integration.irp.f` + + .. code:: fortran + + double precision function rint_large_n(n,rho) + + + Version of rint for large values of n + + +.. c:function:: rint_sum: + + + File : :file:`utils/integration.irp.f` + + .. code:: fortran + + double precision function rint_sum(n_pt_out,rho,d1) + + + Needed for the calculation of two-electron integrals. + + +.. c:function:: rinteg: + + + File : :file:`utils/need.irp.f` + + .. code:: fortran + + double precision function rinteg(n,u) + + + + +.. c:function:: rintgauss: + + + File : :file:`utils/need.irp.f` + + .. code:: fortran + + double precision function rintgauss(n) + + + + +.. c:function:: sabpartial: + + + File : :file:`utils/need.irp.f` + + .. code:: fortran + + double precision function SABpartial(zA,zB,A,B,nA,nB,gamA,gamB,l) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`binom` + + +.. c:function:: set_order: + + + File : :file:`utils/sort.irp.f_template_347` + + .. code:: fortran + + subroutine set_order(x,iorder,isize) + + + array A has already been sorted, and iorder has contains the new order of + elements of A. This subroutine changes the order of x to match the new order of A. + + +.. c:function:: set_order_big: + + + File : :file:`utils/sort.irp.f_template_412` + + .. code:: fortran + + subroutine set_order_big(x,iorder,isize) + + + array A has already been sorted, and iorder has contains the new order of + elements of A. This subroutine changes the order of x to match the new order of A. + This is a version for very large arrays where the indices need + to be in integer*8 format + + +.. c:function:: sort: + + + File : :file:`utils/sort.irp.f_template_293` + + .. code:: fortran + + subroutine sort(x,iorder,isize) + + + Sort array x(isize). + iorder in input should be (1,2,3,...,isize), and in output + contains the new order of the elements. + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`insertion_sort` + * :c:func:`quick_sort` + + +.. c:function:: sorted_dnumber: + + + File : :file:`utils/sort.irp.f_template_261` + + .. code:: fortran + + subroutine sorted_dnumber(x,isize,n) + + + Returns the number of sorted elements + + +.. c:function:: sorted_i2number: + + + File : :file:`utils/sort.irp.f_template_261` + + .. code:: fortran + + subroutine sorted_i2number(x,isize,n) + + + Returns the number of sorted elements + + +.. c:function:: sorted_i8number: + + + File : :file:`utils/sort.irp.f_template_261` + + .. code:: fortran + + subroutine sorted_i8number(x,isize,n) + + + Returns the number of sorted elements + + +.. c:function:: sorted_inumber: + + + File : :file:`utils/sort.irp.f_template_261` + + .. code:: fortran + + subroutine sorted_inumber(x,isize,n) + + + Returns the number of sorted elements + + +.. c:function:: sorted_number: + + + File : :file:`utils/sort.irp.f_template_261` + + .. code:: fortran + + subroutine sorted_number(x,isize,n) + + + Returns the number of sorted elements + + +.. c:function:: svd: + + + File : :file:`utils/linear_algebra.irp.f` + + .. code:: fortran + + subroutine svd(A,LDA,U,LDU,D,Vt,LDVt,m,n) + + + Compute A = U.D.Vt + + LDx : leftmost dimension of x + + Dimsneion of A is m x n + + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`mo_as_svd_vectors_of_mo_matrix` + * :c:func:`mo_as_svd_vectors_of_mo_matrix_eig` + * :c:func:`ortho_canonical` + * :c:func:`ortho_lowdin` + * :c:data:`s_half` + * :c:data:`s_half_inv` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`dgesvd` + + +.. c:function:: total_memory: + + + File : :file:`utils/memory.irp.f` + + .. code:: fortran + + subroutine total_memory(value) + + + Returns the current used memory in gigabytes used by the current process. + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`print_memory_usage` + + +.. c:function:: u_dot_u: + + + File : :file:`utils/util.irp.f` + + .. code:: fortran + + double precision function u_dot_u(u,sze) + + + Compute + + +.. c:function:: u_dot_v: + + + File : :file:`utils/util.irp.f` + + .. code:: fortran + + double precision function u_dot_v(u,v,sze) + + + Compute + + +.. c:function:: wall_time: + + + File : :file:`utils/util.irp.f` + + .. code:: fortran + + subroutine wall_time(t) + + + The equivalent of cpu_time, but for the wall time. + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`add_integrals_to_map` + * :c:func:`add_integrals_to_map_erf` + * :c:func:`add_integrals_to_map_no_exit_34` + * :c:func:`add_integrals_to_map_three_indices` + * :c:data:`ao_pseudo_integrals_local` + * :c:data:`ao_pseudo_integrals_non_local` + * :c:data:`ao_two_e_integrals_erf_in_map` + * :c:data:`ao_two_e_integrals_in_map` + * :c:func:`davidson_converged` + * :c:func:`davidson_diag_hjj_sjj` + * :c:data:`output_wall_time_0` + * :c:func:`pt2_collector` + * :c:func:`run_pt2_slave` + * :c:func:`run_slave_main` + * :c:func:`write_time` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`system_clock` + + +.. c:function:: write_git_log: + + + File : :file:`utils/util.irp.f` + + .. code:: fortran + + subroutine write_git_log(iunit) + + + Write the last git commit in file iunit. + diff --git a/docs/source/modules/zmq.rst b/docs/source/modules/zmq.rst new file mode 100644 index 00000000..92a2fe6a --- /dev/null +++ b/docs/source/modules/zmq.rst @@ -0,0 +1,1513 @@ +.. _module_zmq: + +.. program:: zmq + +.. default-role:: option + +=== +zmq +=== + +Definition of |ZeroMQ| sockets and messages. + + + + + +Providers +--------- + +.. c:var:: is_zmq_slave + + + File : :file:`zmq/utils.irp.f` + + .. code:: fortran + + logical :: is_zmq_slave + + + If |true|, the current process is a |ZeroMQ| slave. + + + +.. c:var:: qp_run_address + + + File : :file:`zmq/utils.irp.f` + + .. code:: fortran + + character*(128) :: qp_run_address + integer :: zmq_port_start + + + Address of the qp_run socket + Example : tcp://130.120.229.139:12345 + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`zmq_socket_pull_tcp_address` + + +.. c:var:: zmq_context + + + File : :file:`zmq/utils.irp.f` + + .. code:: fortran + + integer(ZMQ_PTR) :: zmq_context + integer(omp_lock_kind) :: zmq_lock + + + Context for the ZeroMQ library + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_two_e_integrals_erf_in_map` + * :c:data:`ao_two_e_integrals_in_map` + + +.. c:var:: zmq_lock + + + File : :file:`zmq/utils.irp.f` + + .. code:: fortran + + integer(ZMQ_PTR) :: zmq_context + integer(omp_lock_kind) :: zmq_lock + + + Context for the ZeroMQ library + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_two_e_integrals_erf_in_map` + * :c:data:`ao_two_e_integrals_in_map` + + +.. c:var:: zmq_port_start + + + File : :file:`zmq/utils.irp.f` + + .. code:: fortran + + character*(128) :: qp_run_address + integer :: zmq_port_start + + + Address of the qp_run socket + Example : tcp://130.120.229.139:12345 + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`zmq_socket_pull_tcp_address` + + +.. c:var:: zmq_socket_pair_inproc_address + + + File : :file:`zmq/utils.irp.f` + + .. code:: fortran + + character*(128) :: zmq_socket_pull_tcp_address + character*(128) :: zmq_socket_pair_inproc_address + character*(128) :: zmq_socket_push_tcp_address + character*(128) :: zmq_socket_pull_inproc_address + character*(128) :: zmq_socket_push_inproc_address + character*(128) :: zmq_socket_sub_tcp_address + + + Socket which pulls the results (2) + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`qp_run_address` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_two_e_integrals_erf_in_map` + * :c:data:`ao_two_e_integrals_in_map` + + +.. c:var:: zmq_socket_pull_inproc_address + + + File : :file:`zmq/utils.irp.f` + + .. code:: fortran + + character*(128) :: zmq_socket_pull_tcp_address + character*(128) :: zmq_socket_pair_inproc_address + character*(128) :: zmq_socket_push_tcp_address + character*(128) :: zmq_socket_pull_inproc_address + character*(128) :: zmq_socket_push_inproc_address + character*(128) :: zmq_socket_sub_tcp_address + + + Socket which pulls the results (2) + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`qp_run_address` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_two_e_integrals_erf_in_map` + * :c:data:`ao_two_e_integrals_in_map` + + +.. c:var:: zmq_socket_pull_tcp_address + + + File : :file:`zmq/utils.irp.f` + + .. code:: fortran + + character*(128) :: zmq_socket_pull_tcp_address + character*(128) :: zmq_socket_pair_inproc_address + character*(128) :: zmq_socket_push_tcp_address + character*(128) :: zmq_socket_pull_inproc_address + character*(128) :: zmq_socket_push_inproc_address + character*(128) :: zmq_socket_sub_tcp_address + + + Socket which pulls the results (2) + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`qp_run_address` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_two_e_integrals_erf_in_map` + * :c:data:`ao_two_e_integrals_in_map` + + +.. c:var:: zmq_socket_push_inproc_address + + + File : :file:`zmq/utils.irp.f` + + .. code:: fortran + + character*(128) :: zmq_socket_pull_tcp_address + character*(128) :: zmq_socket_pair_inproc_address + character*(128) :: zmq_socket_push_tcp_address + character*(128) :: zmq_socket_pull_inproc_address + character*(128) :: zmq_socket_push_inproc_address + character*(128) :: zmq_socket_sub_tcp_address + + + Socket which pulls the results (2) + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`qp_run_address` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_two_e_integrals_erf_in_map` + * :c:data:`ao_two_e_integrals_in_map` + + +.. c:var:: zmq_socket_push_tcp_address + + + File : :file:`zmq/utils.irp.f` + + .. code:: fortran + + character*(128) :: zmq_socket_pull_tcp_address + character*(128) :: zmq_socket_pair_inproc_address + character*(128) :: zmq_socket_push_tcp_address + character*(128) :: zmq_socket_pull_inproc_address + character*(128) :: zmq_socket_push_inproc_address + character*(128) :: zmq_socket_sub_tcp_address + + + Socket which pulls the results (2) + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`qp_run_address` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_two_e_integrals_erf_in_map` + * :c:data:`ao_two_e_integrals_in_map` + + +.. c:var:: zmq_socket_sub_tcp_address + + + File : :file:`zmq/utils.irp.f` + + .. code:: fortran + + character*(128) :: zmq_socket_pull_tcp_address + character*(128) :: zmq_socket_pair_inproc_address + character*(128) :: zmq_socket_push_tcp_address + character*(128) :: zmq_socket_pull_inproc_address + character*(128) :: zmq_socket_push_inproc_address + character*(128) :: zmq_socket_sub_tcp_address + + + Socket which pulls the results (2) + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`qp_run_address` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_two_e_integrals_erf_in_map` + * :c:data:`ao_two_e_integrals_in_map` + + +.. c:var:: zmq_state + + + File : :file:`zmq/utils.irp.f` + + .. code:: fortran + + character*(128) :: zmq_state + + + Threads executing work through the ZeroMQ interface + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_two_e_integrals_erf_in_map` + * :c:data:`ao_two_e_integrals_in_map` + + + +Subroutines / functions +----------------------- + +.. c:function:: add_task_to_taskserver: + + + File : :file:`zmq/utils.irp.f` + + .. code:: fortran + + integer function add_task_to_taskserver(zmq_to_qp_run_socket,task) + + + Get a task from the task server + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`zmq_state` + + +.. c:function:: connect_to_taskserver: + + + File : :file:`zmq/utils.irp.f` + + .. code:: fortran + + integer function connect_to_taskserver(zmq_to_qp_run_socket,worker_id,thread) + + + Connect to the task server and obtain the worker ID + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`zmq_state` + + +.. c:function:: disconnect_from_taskserver: + + + File : :file:`zmq/utils.irp.f` + + .. code:: fortran + + integer function disconnect_from_taskserver(zmq_to_qp_run_socket, worker_id) + + + Disconnect from the task server + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`zmq_state` + + +.. c:function:: disconnect_from_taskserver_state: + + + File : :file:`zmq/utils.irp.f` + + .. code:: fortran + + integer function disconnect_from_taskserver_state(zmq_to_qp_run_socket, worker_id, state) + + + Disconnect from the task server + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`zmq_state` + + +.. c:function:: end_parallel_job: + + + File : :file:`zmq/utils.irp.f` + + .. code:: fortran + + subroutine end_parallel_job(zmq_to_qp_run_socket,zmq_socket_pull,name_in) + + + End a new parallel job with name 'name'. The slave tasks execute subroutine 'slave' + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`zmq_state` + * :c:data:`zmq_context` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_two_e_integrals_erf_in_map` + * :c:data:`ao_two_e_integrals_in_map` + * :c:func:`h_s2_u_0_nstates_zmq` + * :c:func:`zmq_pt2` + * :c:func:`zmq_selection` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`end_zmq_pull_socket` + * :c:func:`end_zmq_to_qp_run_socket` + * :c:func:`lowercase` + * :c:func:`omp_set_lock` + * :c:func:`omp_unset_lock` + * :c:func:`sleep` + + +.. c:function:: end_zmq_pair_socket: + + + File : :file:`zmq/utils.irp.f` + + .. code:: fortran + + subroutine end_zmq_pair_socket(zmq_socket_pair) + + + Terminate socket on which the results are sent. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`zmq_context` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`omp_set_lock` + * :c:func:`omp_unset_lock` + + +.. c:function:: end_zmq_pull_socket: + + + File : :file:`zmq/utils.irp.f` + + .. code:: fortran + + subroutine end_zmq_pull_socket(zmq_socket_pull) + + + Terminate socket on which the results are sent. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`zmq_context` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`end_parallel_job` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`omp_set_lock` + * :c:func:`omp_unset_lock` + + +.. c:function:: end_zmq_push_socket: + + + File : :file:`zmq/utils.irp.f` + + .. code:: fortran + + subroutine end_zmq_push_socket(zmq_socket_push,thread) + + + Terminate socket on which the results are sent. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`zmq_context` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`ao_two_e_integrals_erf_in_map_slave` + * :c:func:`ao_two_e_integrals_in_map_slave` + * :c:func:`davidson_run_slave` + * :c:func:`run_pt2_slave` + * :c:func:`run_selection_slave` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`omp_set_lock` + * :c:func:`omp_unset_lock` + + +.. c:function:: end_zmq_sub_socket: + + + File : :file:`zmq/utils.irp.f` + + .. code:: fortran + + subroutine end_zmq_sub_socket(zmq_socket_sub) + + + Terminate socket on which the results are sent. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`zmq_context` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`wait_for_next_state` + * :c:func:`wait_for_state` + * :c:func:`wait_for_states` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`omp_set_lock` + * :c:func:`omp_unset_lock` + + +.. c:function:: end_zmq_to_qp_run_socket: + + + File : :file:`zmq/utils.irp.f` + + .. code:: fortran + + subroutine end_zmq_to_qp_run_socket(zmq_to_qp_run_socket) + + + Terminate the socket from the application to qp_run + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`ao_two_e_integrals_erf_in_map_collector` + * :c:func:`ao_two_e_integrals_erf_in_map_slave` + * :c:func:`ao_two_e_integrals_in_map_collector` + * :c:func:`ao_two_e_integrals_in_map_slave` + * :c:func:`davidson_run_slave` + * :c:func:`end_parallel_job` + * :c:func:`pt2_collector` + * :c:func:`run_pt2_slave` + * :c:func:`run_selection_slave` + * :c:func:`selection_collector` + + +.. c:function:: get_task_from_taskserver: + + + File : :file:`zmq/utils.irp.f` + + .. code:: fortran + + integer function get_task_from_taskserver(zmq_to_qp_run_socket,worker_id,task_id,task) + + + Get a task from the task server + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`zmq_state` + + +.. c:function:: get_tasks_from_taskserver: + + + File : :file:`zmq/utils.irp.f` + + .. code:: fortran + + integer function get_tasks_from_taskserver(zmq_to_qp_run_socket,worker_id,task_id,task,n_tasks) + + + Get multiple tasks from the task server + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`zmq_state` + + +.. c:function:: new_parallel_job: + + + File : :file:`zmq/utils.irp.f` + + .. code:: fortran + + subroutine new_parallel_job(zmq_to_qp_run_socket,zmq_socket_pull,name_in) + + + Start a new parallel job with name 'name'. The slave tasks execute subroutine 'slave' + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`zmq_state` + * :c:data:`zmq_socket_pull_tcp_address` + * :c:data:`zmq_context` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_two_e_integrals_erf_in_map` + * :c:data:`ao_two_e_integrals_in_map` + * :c:func:`h_s2_u_0_nstates_zmq` + * :c:func:`zmq_pt2` + * :c:func:`zmq_selection` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`lowercase` + * :c:func:`omp_set_lock` + * :c:func:`omp_unset_lock` + + +.. c:function:: new_zmq_pair_socket: + + + File : :file:`zmq/utils.irp.f` + + .. code:: fortran + + function new_zmq_pair_socket(bind) + + + Socket on which the collector and the main communicate + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`zmq_socket_pull_tcp_address` + * :c:data:`zmq_context` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`omp_set_lock` + * :c:func:`omp_unset_lock` + + +.. c:function:: new_zmq_pull_socket: + + + File : :file:`zmq/utils.irp.f` + + .. code:: fortran + + function new_zmq_pull_socket() + + + Socket on which the results are sent. If thread is 1, use inproc + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`qp_run_address` + * :c:data:`zmq_socket_pull_tcp_address` + * :c:data:`zmq_context` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`omp_set_lock` + * :c:func:`omp_unset_lock` + * :c:func:`sleep` + + +.. c:function:: new_zmq_push_socket: + + + File : :file:`zmq/utils.irp.f` + + .. code:: fortran + + function new_zmq_push_socket(thread) + + + Socket on which the results are sent. If thread is 1, use inproc + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`zmq_socket_pull_tcp_address` + * :c:data:`zmq_context` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`omp_set_lock` + * :c:func:`omp_unset_lock` + + +.. c:function:: new_zmq_sub_socket: + + + File : :file:`zmq/utils.irp.f` + + .. code:: fortran + + function new_zmq_sub_socket() + + + Socket to read the state published by the Task server + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`zmq_socket_pull_tcp_address` + * :c:data:`zmq_context` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`omp_set_lock` + * :c:func:`omp_unset_lock` + + +.. c:function:: new_zmq_to_qp_run_socket: + + + File : :file:`zmq/utils.irp.f` + + .. code:: fortran + + function new_zmq_to_qp_run_socket() + + + Socket on which the qp_run process replies + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`qp_run_address` + * :c:data:`zmq_context` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`omp_set_lock` + * :c:func:`omp_unset_lock` + + +.. c:function:: reset_zmq_addresses: + + + File : :file:`zmq/utils.irp.f` + + .. code:: fortran + + subroutine reset_zmq_addresses + + + Socket which pulls the results (2) + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`qp_run_address` + * :c:data:`zmq_socket_pull_tcp_address` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`switch_qp_run_to_master` + + +.. c:function:: switch_qp_run_to_master: + + + File : :file:`zmq/utils.irp.f` + + .. code:: fortran + + subroutine switch_qp_run_to_master + + + Address of the master qp_run socket + Example : tcp://130.120.229.139:12345 + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`is_zmq_slave` + * :c:data:`qp_run_address` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`run_slave_cipsi` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`getenv` + * :c:func:`reset_zmq_addresses` + + +.. c:function:: task_done_to_taskserver: + + + File : :file:`zmq/utils.irp.f` + + .. code:: fortran + + integer function task_done_to_taskserver(zmq_to_qp_run_socket, worker_id, task_id) + + + Get a task from the task server + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`zmq_state` + + +.. c:function:: tasks_done_to_taskserver: + + + File : :file:`zmq/utils.irp.f` + + .. code:: fortran + + integer function tasks_done_to_taskserver(zmq_to_qp_run_socket, worker_id, task_id, n_tasks) + + + Get a task from the task server + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`zmq_state` + + +.. c:function:: wait_for_next_state: + + + File : :file:`zmq/utils.irp.f` + + .. code:: fortran + + subroutine wait_for_next_state(state) + + + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`end_zmq_sub_socket` + + +.. c:function:: wait_for_state: + + + File : :file:`zmq/utils.irp.f` + + .. code:: fortran + + subroutine wait_for_state(state_wait,state) + + + Wait for the ZMQ state to be ready + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`end_zmq_sub_socket` + + +.. c:function:: wait_for_states: + + + File : :file:`zmq/utils.irp.f` + + .. code:: fortran + + subroutine wait_for_states(state_wait,state,n) + + + Wait for the ZMQ state to be ready + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`run_slave_main` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`end_zmq_sub_socket` + + +.. c:function:: zmq_abort: + + + File : :file:`zmq/utils.irp.f` + + .. code:: fortran + + integer function zmq_abort(zmq_to_qp_run_socket) + + + Aborts a running parallel computation + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`sleep` + + +.. c:function:: zmq_delete_task: + + + File : :file:`zmq/utils.irp.f` + + .. code:: fortran + + integer function zmq_delete_task(zmq_to_qp_run_socket,zmq_socket_pull,task_id,more) + + + When a task is done, it has to be removed from the list of tasks on the qp_run + queue. This guarantees that the results have been received in the pull. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`zmq_state` + + +.. c:function:: zmq_delete_tasks: + + + File : :file:`zmq/utils.irp.f` + + .. code:: fortran + + integer function zmq_delete_tasks(zmq_to_qp_run_socket,zmq_socket_pull,task_id,n_tasks,more) + + + When a task is done, it has to be removed from the list of tasks on the qp_run + queue. This guarantees that the results have been received in the pull. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`zmq_state` + + +.. c:function:: zmq_delete_tasks_async_recv: + + + File : :file:`zmq/utils.irp.f` + + .. code:: fortran + + integer function zmq_delete_tasks_async_recv(zmq_to_qp_run_socket,zmq_socket_pull,task_id,n_tasks,more) + + + When a task is done, it has to be removed from the list of tasks on the qp_run + queue. This guarantees that the results have been received in the pull. + + +.. c:function:: zmq_delete_tasks_async_send: + + + File : :file:`zmq/utils.irp.f` + + .. code:: fortran + + integer function zmq_delete_tasks_async_send(zmq_to_qp_run_socket,zmq_socket_pull,task_id,n_tasks,more) + + + When a task is done, it has to be removed from the list of tasks on the qp_run + queue. This guarantees that the results have been received in the pull. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`zmq_state` + + +.. c:function:: zmq_get8_dvector: + + + File : :file:`zmq/put_get.irp.f` + + .. code:: fortran + + integer function zmq_get8_dvector(zmq_to_qp_run_socket, worker_id, name, x, size_x) + + + Get a float vector from the qp_run scheduler + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`zmq_state` + * :c:data:`mpi_master` + + +.. c:function:: zmq_get8_ivector: + + + File : :file:`zmq/put_get.irp.f` + + .. code:: fortran + + integer function zmq_get8_ivector(zmq_to_qp_run_socket, worker_id, name, x, size_x) + + + Get a vector of integers from the qp_run scheduler + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`zmq_state` + * :c:data:`mpi_master` + + +.. c:function:: zmq_get_dmatrix: + + + File : :file:`zmq/put_get.irp.f` + + .. code:: fortran + + integer function zmq_get_dmatrix(zmq_to_qp_run_socket, worker_id, name, x, size_x1, size_x2, sze) + + + Get a float vector from the qp_run scheduler + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`zmq_state` + * :c:data:`mpi_master` + + +.. c:function:: zmq_get_dvector: + + + File : :file:`zmq/put_get.irp.f` + + .. code:: fortran + + integer function zmq_get_dvector(zmq_to_qp_run_socket, worker_id, name, x, size_x) + + + Get a float vector from the qp_run scheduler + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`zmq_state` + * :c:data:`mpi_master` + + +.. c:function:: zmq_get_i8matrix: + + + File : :file:`zmq/put_get.irp.f` + + .. code:: fortran + + integer function zmq_get_i8matrix(zmq_to_qp_run_socket, worker_id, name, x, size_x1, size_x2, sze) + + + Get a float vector from the qp_run scheduler + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`zmq_state` + * :c:data:`mpi_master` + + +.. c:function:: zmq_get_imatrix: + + + File : :file:`zmq/put_get.irp.f` + + .. code:: fortran + + integer function zmq_get_imatrix(zmq_to_qp_run_socket, worker_id, name, x, size_x1, size_x2, sze) + + + Get a float vector from the qp_run scheduler + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`zmq_state` + * :c:data:`mpi_master` + + +.. c:function:: zmq_get_int: + + + File : :file:`zmq/put_get.irp.f` + + .. code:: fortran + + integer function zmq_get_int(zmq_to_qp_run_socket, worker_id, name, x) + + + Get a vector of integers from the qp_run scheduler + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`zmq_state` + * :c:data:`mpi_master` + + +.. c:function:: zmq_get_int_nompi: + + + File : :file:`zmq/put_get.irp.f` + + .. code:: fortran + + integer function zmq_get_int_nompi(zmq_to_qp_run_socket, worker_id, name, x) + + + Get a vector of integers from the qp_run scheduler + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`zmq_state` + + +.. c:function:: zmq_get_ivector: + + + File : :file:`zmq/put_get.irp.f` + + .. code:: fortran + + integer function zmq_get_ivector(zmq_to_qp_run_socket, worker_id, name, x, size_x) + + + Get a vector of integers from the qp_run scheduler + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`zmq_state` + * :c:data:`mpi_master` + + +.. c:function:: zmq_port: + + + File : :file:`zmq/utils.irp.f` + + .. code:: fortran + + function zmq_port(ishift) + + + Return the value of the ZMQ port from the corresponding integer + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`qp_run_address` + + +.. c:function:: zmq_put8_dvector: + + + File : :file:`zmq/put_get.irp.f` + + .. code:: fortran + + integer function zmq_put8_dvector(zmq_to_qp_run_socket, worker_id, name, x, size_x) + + + Put a float vector on the qp_run scheduler + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`zmq_state` + + +.. c:function:: zmq_put8_ivector: + + + File : :file:`zmq/put_get.irp.f` + + .. code:: fortran + + integer function zmq_put8_ivector(zmq_to_qp_run_socket, worker_id, name, x, size_x) + + + Put a vector of integers on the qp_run scheduler + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`zmq_state` + + +.. c:function:: zmq_put_dmatrix: + + + File : :file:`zmq/put_get.irp.f` + + .. code:: fortran + + integer function zmq_put_dmatrix(zmq_to_qp_run_socket, worker_id, name, x, size_x1, size_x2, sze) + + + Put a float vector on the qp_run scheduler + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`zmq_state` + + +.. c:function:: zmq_put_dvector: + + + File : :file:`zmq/put_get.irp.f` + + .. code:: fortran + + integer function zmq_put_dvector(zmq_to_qp_run_socket, worker_id, name, x, size_x) + + + Put a float vector on the qp_run scheduler + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`zmq_state` + + +.. c:function:: zmq_put_i8matrix: + + + File : :file:`zmq/put_get.irp.f` + + .. code:: fortran + + integer function zmq_put_i8matrix(zmq_to_qp_run_socket, worker_id, name, x, size_x1, size_x2, sze) + + + Put a float vector on the qp_run scheduler + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`zmq_state` + + +.. c:function:: zmq_put_imatrix: + + + File : :file:`zmq/put_get.irp.f` + + .. code:: fortran + + integer function zmq_put_imatrix(zmq_to_qp_run_socket, worker_id, name, x, size_x1, size_x2, sze) + + + Put a float vector on the qp_run scheduler + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`zmq_state` + + +.. c:function:: zmq_put_int: + + + File : :file:`zmq/put_get.irp.f` + + .. code:: fortran + + integer function zmq_put_int(zmq_to_qp_run_socket, worker_id, name, x) + + + Put a vector of integers on the qp_run scheduler + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`zmq_state` + + +.. c:function:: zmq_put_ivector: + + + File : :file:`zmq/put_get.irp.f` + + .. code:: fortran + + integer function zmq_put_ivector(zmq_to_qp_run_socket, worker_id, name, x, size_x) + + + Put a vector of integers on the qp_run scheduler + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`zmq_state` + + +.. c:function:: zmq_set_running: + + + File : :file:`zmq/utils.irp.f` + + .. code:: fortran + + integer function zmq_set_running(zmq_to_qp_run_socket) + + + Set the job to Running in QP-run + diff --git a/man/qp_reset.1 b/man/qp_reset.1 new file mode 100644 index 00000000..2b62d8ed --- /dev/null +++ b/man/qp_reset.1 @@ -0,0 +1,66 @@ +.\" Man page generated from reStructuredText. +. +.TH "QP_RESET" "1" "Jan 29, 2019" "2.0" "Quantum Package" +.SH NAME +qp_reset \- | Quantum Package > +. +.nr rst2man-indent-level 0 +. +.de1 rstReportMargin +\\$1 \\n[an-margin] +level \\n[rst2man-indent-level] +level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] +- +\\n[rst2man-indent0] +\\n[rst2man-indent1] +\\n[rst2man-indent2] +.. +.de1 INDENT +.\" .rstReportMargin pre: +. RS \\$1 +. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] +. nr rst2man-indent-level +1 +.\" .rstReportMargin post: +.. +.de UNINDENT +. RE +.\" indent \\n[an-margin] +.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] +.nr rst2man-indent-level -1 +.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] +.in \\n[rst2man-indent\\n[rst2man-indent-level]]u +.. +.sp +This command resets parts of the \fI\%EZFIO\fP directory. +.SH USAGE +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +qp_reset [\-adhm] EZFIO_DIR +.ft P +.fi +.UNINDENT +.UNINDENT +.INDENT 0.0 +.TP +.B \-a, \-\-all +Reset to the state in which the directory is after after running qp_create_ezfio\&. +.UNINDENT +.INDENT 0.0 +.TP +.B \-d, \-\-dets +Deletes the determinants and CI coefficients. +.UNINDENT +.INDENT 0.0 +.TP +.B \-m, \-\-mos +Deletes the MOs, and consequently the determinants and CI coefficients. +.UNINDENT +.SH AUTHOR +A. Scemama, E. Giner +.SH COPYRIGHT +2019, A. Scemama, E. Giner +.\" Generated by docutils manpage writer. +. From 7521d3da468163f8e0c7c33254653b36e08f9da5 Mon Sep 17 00:00:00 2001 From: Anthony Scemama Date: Tue, 29 Jan 2019 23:10:00 +0100 Subject: [PATCH 4/4] Folder -> directory --- docs/source/modules/aux_quantities.rst | 15 ++++++++------- docs/source/modules/density_for_dft.rst | 14 +++++++++----- docs/source/programs/cisd.rst | 6 +++--- docs/source/programs/diagonalize_h.rst | 9 ++++++--- docs/source/programs/fcidump.rst | 17 +++++++++++------ docs/source/programs/four_idx_transform.rst | 10 +++++++--- docs/source/programs/print_wf.rst | 12 +++++++----- docs/source/programs/pt2.rst | 13 +++++++++---- docs/source/programs/save_natorb.rst | 15 ++++++++------- docs/source/programs/save_one_e_dm.rst | 14 +++++++++----- docs/source/users_guide/printing.rst | 2 +- man/cisd.1 | 6 +++--- man/diagonalize_h.1 | 10 ++++++---- man/fcidump.1 | 16 ++++++++++------ man/four_idx_transform.1 | 9 ++++++--- man/print_wf.1 | 12 +++++++----- man/printing.1 | 2 +- man/pt2.1 | 14 +++++++++----- man/save_natorb.1 | 15 ++++++++------- man/save_one_e_dm.1 | 14 +++++++++----- src/aux_quantities/README.rst | 15 ++++++++------- src/cisd/cisd.irp.f | 6 +++--- src/density_for_dft/README.rst | 14 +++++++++----- src/determinants/example.irp.f | 2 +- src/fci/pt2.irp.f | 13 +++++++++---- src/tools/diagonalize_h.irp.f | 9 ++++++--- src/tools/fcidump.irp.f | 17 +++++++++++------ src/tools/four_idx_transform.irp.f | 10 +++++++--- src/tools/print_wf.irp.f | 15 +++++++++------ src/tools/save_natorb.irp.f | 15 ++++++++------- src/tools/save_one_e_dm.irp.f | 15 +++++++++------ 31 files changed, 217 insertions(+), 139 deletions(-) diff --git a/docs/source/modules/aux_quantities.rst b/docs/source/modules/aux_quantities.rst index 3ded29f8..e71dc325 100644 --- a/docs/source/modules/aux_quantities.rst +++ b/docs/source/modules/aux_quantities.rst @@ -10,21 +10,22 @@ aux_quantities This module contains some global variables (such as densities and energies) -which are stored in the EZFIO folder in a different place than determinants. +which are stored in the |EZFIO| directory in a different place than determinants. This is used in practice to store density matrices which can be obtained from -any methods, as long as they are stored in the same MO basis which is used for +any method, as long as they are stored in the same |MO| basis which is used for the calculations. In |RSDFT| calculations, this can be done to perform damping -on the density in order to speed up convergence. +on the density in order to speed up the convergence. The main providers of that module are: -* `data_one_e_dm_alpha_mo` and `data_one_e_dm_beta_mo` which are the - one-body alpha and beta densities which are necessary read from the EZFIO - folder. +* :c:data:`data_one_e_dm_alpha_mo` and :c:data:`data_one_e_dm_beta_mo` which + are the one-body alpha and beta densities which are necessary read from the + |EZFIO| directory. Thanks to these providers you can use any density matrix that does not -necessary corresponds to that of the current wave function. +necessarily corresponds to that of the current wave function. + diff --git a/docs/source/modules/density_for_dft.rst b/docs/source/modules/density_for_dft.rst index 28708f69..ad42369b 100644 --- a/docs/source/modules/density_for_dft.rst +++ b/docs/source/modules/density_for_dft.rst @@ -9,12 +9,16 @@ density_for_dft =============== -This module defines the *provider* of the density used for the DFT related calculations. -This definition is done through the keyword :option:`density_for_dft density_for_dft`. -The density can be: +This module defines the *provider* of the density used for the |DFT| related +calculations. This definition is done through the keyword +:option:`density_for_dft density_for_dft`. The density can be: -* WFT : the density is computed with a potentially multi determinant wave function (see variables `psi_det` and `psi_det`)# input_density : the density is set to a density previously stored in the |EZFIO| folder (see ``aux_quantities``) -* damping_rs_dft : the density is damped between the input_density and the WFT density, with a damping factor of :option:`density_for_dft damping_for_rs_dft` +* `WFT`: the density is computed with a potentially multi determinant wave + function (see variables `psi_det` and `psi_det`)# input_density: the density + is set to a density previously stored in the |EZFIO| directory (see + ``aux_quantities``) +* `damping_rs_dft`: the density is damped between the input_density and the WFT + density, with a damping factor of :option:`density_for_dft damping_for_rs_dft` diff --git a/docs/source/programs/cisd.rst b/docs/source/programs/cisd.rst index 21da9b98..8d3f5ab4 100644 --- a/docs/source/programs/cisd.rst +++ b/docs/source/programs/cisd.rst @@ -19,7 +19,7 @@ cisd This program can be useful in many cases: - * GROUND STATE CALCULATION: if even after a :c:func:`cis` calculation, natural + * **Ground state calculation**: if even after a :c:func:`cis` calculation, natural orbitals (see :c:func:`save_natorb`) and then :c:func:`scf` optimization, you are not sure to have the lowest scf solution, do the same strategy with the :c:func:`cisd` executable instead of the :c:func:`cis` exectuable to generate the natural @@ -27,11 +27,11 @@ cisd - * EXCITED STATES CALCULATIONS: the lowest excited states are much likely to + * **Excited states calculations**: the lowest excited states are much likely to be dominanted by single- or double-excitations. Therefore, running a :c:func:`cisd` will save the "n_states" lowest states within the CISD space - in the EZFIO folder, which can afterward be used as guess wave functions + in the |EZFIO| directory, which can afterward be used as guess wave functions for a further multi-state fci calculation if you specify "read_wf" = True before running the fci executable (see :option:`determinants read_wf`). Also, if you specify "s2_eig" = True, the cisd will only retain states diff --git a/docs/source/programs/diagonalize_h.rst b/docs/source/programs/diagonalize_h.rst index e21da7c0..cd1f9e7b 100644 --- a/docs/source/programs/diagonalize_h.rst +++ b/docs/source/programs/diagonalize_h.rst @@ -9,11 +9,14 @@ diagonalize_h - Program that extracts the :option:`determinants n_states` lowest states of the Hamiltonian within the set of Slater determinants stored in the EZFIO folder. + Program that extracts the :option:`determinants n_states` lowest + states of the Hamiltonian within the set of Slater determinants stored + in the |EZFIO| directory. - If :option:`determinants s2_eig` = True, it will retain only states + If :option:`determinants s2_eig` = |true|, it will retain only states + which correspond to the desired value of + :option:`determinants expected_s2`. - which corresponds to the desired value of :option:`determinants expected_s2`. Needs: diff --git a/docs/source/programs/fcidump.rst b/docs/source/programs/fcidump.rst index b6e2a5b4..4e58a1ff 100644 --- a/docs/source/programs/fcidump.rst +++ b/docs/source/programs/fcidump.rst @@ -9,17 +9,22 @@ fcidump - Produce a regular FCIDUMP file from the |MOs| stored in the |EZFIO| folder. + Produce a regular `FCIDUMP` file from the |MOs| stored in the |EZFIO| + directory. - To specify an active space, the class of the mos have to set in the |EZFIO| folder (see :ref:`qp_set_mo_class`). + To specify an active space, the class of the |MOs| have to set in the + |EZFIO| directory (see :ref:`qp_set_mo_class`). - The fcidump program supports 3 types of MO_class : + The :ref:`fcidump` program supports 3 types of |MO| classes : - * the "core" orbitals which are always doubly occupied in the calculation + * the *core* orbitals which are always doubly occupied in the + calculation - * the "del" orbitals that are never occupied in the calculation + * the *deleted* orbitals that are never occupied in the calculation + + * the *active* orbitals that are occupied with a varying number of + electrons - * the "act" orbitals that will be occupied by a varying number of electrons Needs: diff --git a/docs/source/programs/four_idx_transform.rst b/docs/source/programs/four_idx_transform.rst index 953d7b1d..220433e1 100644 --- a/docs/source/programs/four_idx_transform.rst +++ b/docs/source/programs/four_idx_transform.rst @@ -9,11 +9,15 @@ four_idx_transform - 4-index transformation of two-electron integrals from |AO| to |MO| integrals. + 4-index transformation of two-electron integrals from |AO| to |MO| + integrals. - This program will compute the two-electron integrals on the |MO| basis and store it into the |EZFIO| folder. + This program will compute the two-electron integrals on the |MO| basis + and store it into the |EZFIO| directory. + + This program can be useful if the AO --> MO transformation is an + expensive step by itself. - This program can be useful if the AO --> MO transformation is an expensive step by itself. Needs: diff --git a/docs/source/programs/print_wf.rst b/docs/source/programs/print_wf.rst index 56f5b238..a141be09 100644 --- a/docs/source/programs/print_wf.rst +++ b/docs/source/programs/print_wf.rst @@ -9,13 +9,15 @@ print_wf - Print the ground state wave function stored in the |EZFIO| folder in the intermediate normalization. + Print the ground state wave function stored in the |EZFIO| directory + in the intermediate normalization. - It also prints a lot of information regarding the excitation operators from the reference determinant + It also prints a lot of information regarding the excitation + operators from the reference determinant ! and a first-order + perturbative analysis of the wave function. - and a first-order perturbative analysis of the wave function. - - If the wave function strongly deviates from the first-order analysis, something funny is going on :) + If the wave function strongly deviates from the first-order analysis, + something funny is going on :) Needs: diff --git a/docs/source/programs/pt2.rst b/docs/source/programs/pt2.rst index c18e466b..45726526 100644 --- a/docs/source/programs/pt2.rst +++ b/docs/source/programs/pt2.rst @@ -9,13 +9,18 @@ pt2 - Second order perturbative correction to the wave function contained in the EZFIO directory. + Second order perturbative correction to the wave function contained + in the |EZFIO| directory. - This programs runs the stochastic PT2 correction on all "n_states" wave function stored in the EZFIO folder (see :option:`determinant n_states`). + This programs runs the stochastic |PT2| correction on all + :option:`determinants n_states` wave functions stored in the |EZFIO| + directory. - The option for the PT2 correction are the "pt2_relative_error" which is the relative stochastic + The main option for the |PT2| correction is the + :option:`perturbation pt2_relative_error` which is the relative + stochastic error on the |PT2| to reach before stopping the + sampling. - error on the PT2 to reach before stopping the stochastic sampling. (see :option:`perturbation pt2_relative_error`) Needs: diff --git a/docs/source/programs/save_natorb.rst b/docs/source/programs/save_natorb.rst index 736e4178..852b1583 100644 --- a/docs/source/programs/save_natorb.rst +++ b/docs/source/programs/save_natorb.rst @@ -9,15 +9,16 @@ save_natorb - Save natural MOs into the EZFIO + Save natural |MOs| into the |EZFIO|. - This program reads the wave function stored in the EZFIO folder, + This program reads the wave function stored in the |EZFIO| directory, + extracts the corresponding natural orbitals and setd them as the new + |MOs|. - extracts the corresponding natural orbitals and set them as the new MOs - - If this is a multi-state calculation, the density matrix that produces the natural orbitals - - is obtained from a state-averaged of the density matrices of each state with the corresponding state_average_weight (see the doc of state_average_weight). + If this is a multi-state calculation, the density matrix that produces + the natural orbitals is obtained from an average of the density + matrices of each state with the corresponding + :option:`determinants state_average_weight` Needs: diff --git a/docs/source/programs/save_one_e_dm.rst b/docs/source/programs/save_one_e_dm.rst index bf8ec089..5758aad6 100644 --- a/docs/source/programs/save_one_e_dm.rst +++ b/docs/source/programs/save_one_e_dm.rst @@ -9,12 +9,16 @@ save_one_e_dm - programs that computes the one body density on the mo basis for alpha and beta electrons - from the wave function stored in the EZFIO folder, and then save it into the EZFIO folder aux_quantities. + Program that computes the one body density on the |MO| basis + for $\alpha$ and $\beta$ electrons from the wave function + stored in the |EZFIO| directory, and then saves it into the + :ref:`module_aux_quantities`. - Then, the global variable data_one_e_dm_alpha_mo and data_one_e_dm_beta_mo will automatically read this density in a further calculation. - - This can be used to perform damping on the density in RS-DFT calculation (see the density_for_dft module). + Then, the global variable :option:`aux_quantities data_one_e_dm_alpha_mo` + and :option:`aux_quantities data_one_e_dm_beta_mo` will automatically + read this density in the next calculation. This can be used to perform + damping on the density in |RSDFT| calculations (see + :ref:`module_density_for_dft`). Needs: diff --git a/docs/source/users_guide/printing.rst b/docs/source/users_guide/printing.rst index 8509a2d8..69f2b839 100644 --- a/docs/source/users_guide/printing.rst +++ b/docs/source/users_guide/printing.rst @@ -31,7 +31,7 @@ interactively in :ref:`qp_edit` mode. An alternative is to use the This program will, by default, print out the first :math:`10^4` determinants whatever the size of the wave function stored in the -|EZFIO| folder. If you want to change the number of printed Slater +|EZFIO| directory. If you want to change the number of printed Slater determinants, just change the :option:`determinants n_det_print_wf` keyword using the :ref:`qp_edit` tool. diff --git a/man/cisd.1 b/man/cisd.1 index 7a962b7c..20954d68 100644 --- a/man/cisd.1 +++ b/man/cisd.1 @@ -43,17 +43,17 @@ matrix (see \fBdeterminants n_states\fP). This program can be useful in many cases: .INDENT 0.0 .IP \(bu 2 -GROUND STATE CALCULATION: if even after a \fBcis()\fP calculation, natural +\fBGround state calculation\fP: if even after a \fBcis()\fP calculation, natural orbitals (see \fBsave_natorb()\fP) and then \fBscf()\fP optimization, you are not sure to have the lowest scf solution, do the same strategy with the \fBcisd()\fP executable instead of the \fBcis()\fP\ exectuable to generate the natural orbitals as a guess for the \fBscf()\fP\&. .IP \(bu 2 -EXCITED STATES CALCULATIONS: the lowest excited states are much likely to +\fBExcited states calculations\fP: the lowest excited states are much likely to be dominanted by single\- or double\-excitations. Therefore, running a \fBcisd()\fP will save the “n_states” lowest states within the CISD space -in the EZFIO folder, which can afterward be used as guess wave functions +in the \fI\%EZFIO\fP directory, which can afterward be used as guess wave functions for a further multi\-state fci calculation if you specify “read_wf” = True before running the fci executable (see \fBdeterminants read_wf\fP). Also, if you specify “s2_eig” = True, the cisd will only retain states diff --git a/man/diagonalize_h.1 b/man/diagonalize_h.1 index be760d5f..ed8931ba 100644 --- a/man/diagonalize_h.1 +++ b/man/diagonalize_h.1 @@ -32,11 +32,13 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .. .INDENT 0.0 .INDENT 3.5 -Program that extracts the \fBdeterminants n_states\fP lowest states of the Hamiltonian within the set of Slater determinants stored in the EZFIO folder. +Program that extracts the \fBdeterminants n_states\fP lowest +states of the Hamiltonian within the set of Slater determinants stored +in the \fI\%EZFIO\fP directory. .sp -If \fBdeterminants s2_eig\fP = True, it will retain only states -.sp -which corresponds to the desired value of \fBdeterminants expected_s2\fP\&. +If \fBdeterminants s2_eig\fP = \fBtrue\fP, it will retain only states +which correspond to the desired value of +\fBdeterminants expected_s2\fP\&. .sp Needs: .INDENT 0.0 diff --git a/man/fcidump.1 b/man/fcidump.1 index c63f86f0..c8791248 100644 --- a/man/fcidump.1 +++ b/man/fcidump.1 @@ -32,18 +32,22 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .. .INDENT 0.0 .INDENT 3.5 -Produce a regular FCIDUMP file from the MOs stored in the \fI\%EZFIO\fP folder. +Produce a regular \fIFCIDUMP\fP file from the MOs stored in the \fI\%EZFIO\fP +directory. .sp -To specify an active space, the class of the mos have to set in the \fI\%EZFIO\fP folder (see qp_set_mo_class). +To specify an active space, the class of the MOs have to set in the +\fI\%EZFIO\fP directory (see qp_set_mo_class). .sp -The fcidump program supports 3 types of MO_class : +The \fI\%fcidump\fP program supports 3 types of MO classes : .INDENT 0.0 .IP \(bu 2 -the “core” orbitals which are always doubly occupied in the calculation +the \fIcore\fP orbitals which are always doubly occupied in the +calculation .IP \(bu 2 -the “del” orbitals that are never occupied in the calculation +the \fIdeleted\fP orbitals that are never occupied in the calculation .IP \(bu 2 -the “act” orbitals that will be occupied by a varying number of electrons +the \fIactive\fP orbitals that are occupied with a varying number of +electrons .UNINDENT .sp Needs: diff --git a/man/four_idx_transform.1 b/man/four_idx_transform.1 index 43bc294a..41f89b92 100644 --- a/man/four_idx_transform.1 +++ b/man/four_idx_transform.1 @@ -32,11 +32,14 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .. .INDENT 0.0 .INDENT 3.5 -4\-index transformation of two\-electron integrals from AO to MO integrals. +4\-index transformation of two\-electron integrals from AO to MO +integrals. .sp -This program will compute the two\-electron integrals on the MO basis and store it into the \fI\%EZFIO\fP folder. +This program will compute the two\-electron integrals on the MO basis +and store it into the \fI\%EZFIO\fP directory. .sp -This program can be useful if the AO –> MO transformation is an expensive step by itself. +This program can be useful if the AO –> MO transformation is an +expensive step by itself. .sp Needs: .INDENT 0.0 diff --git a/man/print_wf.1 b/man/print_wf.1 index 53c1dc26..515b8a91 100644 --- a/man/print_wf.1 +++ b/man/print_wf.1 @@ -32,13 +32,15 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .. .INDENT 0.0 .INDENT 3.5 -Print the ground state wave function stored in the \fI\%EZFIO\fP folder in the intermediate normalization. +Print the ground state wave function stored in the \fI\%EZFIO\fP directory +in the intermediate normalization. .sp -It also prints a lot of information regarding the excitation operators from the reference determinant +It also prints a lot of information regarding the excitation +operators from the reference determinant ! and a first\-order +perturbative analysis of the wave function. .sp -and a first\-order perturbative analysis of the wave function. -.sp -If the wave function strongly deviates from the first\-order analysis, something funny is going on :) +If the wave function strongly deviates from the first\-order analysis, +something funny is going on :) .sp Needs: .INDENT 0.0 diff --git a/man/printing.1 b/man/printing.1 index b5ec89da..0ba10e53 100644 --- a/man/printing.1 +++ b/man/printing.1 @@ -74,7 +74,7 @@ qp_run print_wf file.ezfio | tee file.ezfio.fci_natorb.wf .sp This program will, by default, print out the first 10^4 determinants whatever the size of the wave function stored in the -\fI\%EZFIO\fP folder. If you want to change the number of printed Slater +\fI\%EZFIO\fP directory. If you want to change the number of printed Slater determinants, just change the \fBdeterminants n_det_print_wf\fP keyword using the qp_edit tool. .sp diff --git a/man/pt2.1 b/man/pt2.1 index 3c59e81d..91ac2941 100644 --- a/man/pt2.1 +++ b/man/pt2.1 @@ -32,13 +32,17 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .. .INDENT 0.0 .INDENT 3.5 -Second order perturbative correction to the wave function contained in the EZFIO directory. +Second order perturbative correction to the wave function contained +in the \fI\%EZFIO\fP directory. .sp -This programs runs the stochastic PT2 correction on all “n_states” wave function stored in the EZFIO folder (see \fBdeterminant n_states\fP). +This programs runs the stochastic PT2 correction on all +\fBdeterminants n_states\fP wave functions stored in the \fI\%EZFIO\fP +directory. .sp -The option for the PT2 correction are the “pt2_relative_error” which is the relative stochastic -.sp -error on the PT2 to reach before stopping the stochastic sampling. (see \fBperturbation pt2_relative_error\fP) +The main option for the PT2 correction is the +\fBperturbation pt2_relative_error\fP which is the relative +stochastic error on the PT2 to reach before stopping the +sampling. .sp Needs: .INDENT 0.0 diff --git a/man/save_natorb.1 b/man/save_natorb.1 index e4e368a2..1b06061d 100644 --- a/man/save_natorb.1 +++ b/man/save_natorb.1 @@ -32,15 +32,16 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .. .INDENT 0.0 .INDENT 3.5 -Save natural MOs into the EZFIO +Save natural MOs into the \fI\%EZFIO\fP\&. .sp -This program reads the wave function stored in the EZFIO folder, +This program reads the wave function stored in the \fI\%EZFIO\fP directory, +extracts the corresponding natural orbitals and setd them as the new +MOs\&. .sp -extracts the corresponding natural orbitals and set them as the new MOs -.sp -If this is a multi\-state calculation, the density matrix that produces the natural orbitals -.sp -is obtained from a state\-averaged of the density matrices of each state with the corresponding state_average_weight (see the doc of state_average_weight). +If this is a multi\-state calculation, the density matrix that produces +the natural orbitals is obtained from an average of the density +matrices of each state with the corresponding +\fBdeterminants state_average_weight\fP .sp Needs: .INDENT 0.0 diff --git a/man/save_one_e_dm.1 b/man/save_one_e_dm.1 index 4ce589ab..5899cdfb 100644 --- a/man/save_one_e_dm.1 +++ b/man/save_one_e_dm.1 @@ -32,12 +32,16 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .. .INDENT 0.0 .INDENT 3.5 -programs that computes the one body density on the mo basis for alpha and beta electrons -from the wave function stored in the EZFIO folder, and then save it into the EZFIO folder aux_quantities. +Program that computes the one body density on the MO basis +for $alpha$ and $beta$ electrons from the wave function +stored in the \fI\%EZFIO\fP directory, and then saves it into the +module_aux_quantities\&. .sp -Then, the global variable data_one_e_dm_alpha_mo and data_one_e_dm_beta_mo will automatically read this density in a further calculation. -.sp -This can be used to perform damping on the density in RS\-DFT calculation (see the density_for_dft module). +Then, the global variable \fBaux_quantities data_one_e_dm_alpha_mo\fP +and \fBaux_quantities data_one_e_dm_beta_mo\fP will automatically +read this density in the next calculation. This can be used to perform +damping on the density in RSDFT calculations (see +module_density_for_dft). .sp Needs: .INDENT 0.0 diff --git a/src/aux_quantities/README.rst b/src/aux_quantities/README.rst index 62036952..c2b8b5ed 100644 --- a/src/aux_quantities/README.rst +++ b/src/aux_quantities/README.rst @@ -4,18 +4,19 @@ aux_quantities This module contains some global variables (such as densities and energies) -which are stored in the EZFIO folder in a different place than determinants. +which are stored in the |EZFIO| directory in a different place than determinants. This is used in practice to store density matrices which can be obtained from -any methods, as long as they are stored in the same MO basis which is used for +any method, as long as they are stored in the same |MO| basis which is used for the calculations. In |RSDFT| calculations, this can be done to perform damping -on the density in order to speed up convergence. +on the density in order to speed up the convergence. The main providers of that module are: -* `data_one_e_dm_alpha_mo` and `data_one_e_dm_beta_mo` which are the - one-body alpha and beta densities which are necessary read from the EZFIO - folder. +* :c:data:`data_one_e_dm_alpha_mo` and :c:data:`data_one_e_dm_beta_mo` which + are the one-body alpha and beta densities which are necessary read from the + |EZFIO| directory. Thanks to these providers you can use any density matrix that does not -necessary corresponds to that of the current wave function. +necessarily corresponds to that of the current wave function. + diff --git a/src/cisd/cisd.irp.f b/src/cisd/cisd.irp.f index e21423cf..9631f971 100644 --- a/src/cisd/cisd.irp.f +++ b/src/cisd/cisd.irp.f @@ -11,7 +11,7 @@ program cisd ! ! This program can be useful in many cases: ! - ! * GROUND STATE CALCULATION: if even after a :c:func:`cis` calculation, natural + ! * **Ground state calculation**: if even after a :c:func:`cis` calculation, natural ! orbitals (see :c:func:`save_natorb`) and then :c:func:`scf` optimization, you are not sure to have the lowest scf ! solution, ! do the same strategy with the :c:func:`cisd` executable instead of the :c:func:`cis` exectuable to generate the natural @@ -19,11 +19,11 @@ program cisd ! ! ! - ! * EXCITED STATES CALCULATIONS: the lowest excited states are much likely to + ! * **Excited states calculations**: the lowest excited states are much likely to ! be dominanted by single- or double-excitations. ! Therefore, running a :c:func:`cisd` will save the "n_states" lowest states within ! the CISD space - ! in the EZFIO folder, which can afterward be used as guess wave functions + ! in the |EZFIO| directory, which can afterward be used as guess wave functions ! for a further multi-state fci calculation if you specify "read_wf" = True ! before running the fci executable (see :option:`determinants read_wf`). ! Also, if you specify "s2_eig" = True, the cisd will only retain states diff --git a/src/density_for_dft/README.rst b/src/density_for_dft/README.rst index 278a27ef..612d236e 100644 --- a/src/density_for_dft/README.rst +++ b/src/density_for_dft/README.rst @@ -3,10 +3,14 @@ density_for_dft =============== -This module defines the *provider* of the density used for the DFT related calculations. -This definition is done through the keyword :option:`density_for_dft density_for_dft`. -The density can be: +This module defines the *provider* of the density used for the |DFT| related +calculations. This definition is done through the keyword +:option:`density_for_dft density_for_dft`. The density can be: -* WFT : the density is computed with a potentially multi determinant wave function (see variables `psi_det` and `psi_det`)# input_density : the density is set to a density previously stored in the |EZFIO| folder (see ``aux_quantities``) -* damping_rs_dft : the density is damped between the input_density and the WFT density, with a damping factor of :option:`density_for_dft damping_for_rs_dft` +* `WFT`: the density is computed with a potentially multi determinant wave + function (see variables `psi_det` and `psi_det`)# input_density: the density + is set to a density previously stored in the |EZFIO| directory (see + ``aux_quantities``) +* `damping_rs_dft`: the density is damped between the input_density and the WFT + density, with a damping factor of :option:`density_for_dft damping_for_rs_dft` diff --git a/src/determinants/example.irp.f b/src/determinants/example.irp.f index c8571995..97bc5388 100644 --- a/src/determinants/example.irp.f +++ b/src/determinants/example.irp.f @@ -105,7 +105,7 @@ subroutine example_determinants_psi_det END_DOC read_wf = .True. touch read_wf - ! you force the wave function to be set to the one in the EZFIO folder + ! you force the wave function to be set to the one in the EZFIO directory call routine_example_psi_det end diff --git a/src/fci/pt2.irp.f b/src/fci/pt2.irp.f index 4a555d69..45860fb5 100644 --- a/src/fci/pt2.irp.f +++ b/src/fci/pt2.irp.f @@ -1,13 +1,18 @@ program pt2 implicit none BEGIN_DOC - ! Second order perturbative correction to the wave function contained in the EZFIO directory. + ! Second order perturbative correction to the wave function contained + ! in the |EZFIO| directory. ! - ! This programs runs the stochastic PT2 correction on all "n_states" wave function stored in the EZFIO folder (see :option:`determinant n_states`). + ! This programs runs the stochastic |PT2| correction on all + ! :option:`determinants n_states` wave functions stored in the |EZFIO| + ! directory. ! - ! The option for the PT2 correction are the "pt2_relative_error" which is the relative stochastic + ! The main option for the |PT2| correction is the + ! :option:`perturbation pt2_relative_error` which is the relative + ! stochastic error on the |PT2| to reach before stopping the + ! sampling. ! - ! error on the PT2 to reach before stopping the stochastic sampling. (see :option:`perturbation pt2_relative_error`) END_DOC if (.not. is_zmq_slave) then read_wf = .True. diff --git a/src/tools/diagonalize_h.irp.f b/src/tools/diagonalize_h.irp.f index 5b3cbdf5..c9ae2033 100644 --- a/src/tools/diagonalize_h.irp.f +++ b/src/tools/diagonalize_h.irp.f @@ -1,11 +1,14 @@ program diagonalize_h implicit none BEGIN_DOC -! Program that extracts the :option:`determinants n_states` lowest states of the Hamiltonian within the set of Slater determinants stored in the EZFIO folder. +! Program that extracts the :option:`determinants n_states` lowest +! states of the Hamiltonian within the set of Slater determinants stored +! in the |EZFIO| directory. ! -! If :option:`determinants s2_eig` = True, it will retain only states +! If :option:`determinants s2_eig` = |true|, it will retain only states +! which correspond to the desired value of +! :option:`determinants expected_s2`. ! -! which corresponds to the desired value of :option:`determinants expected_s2`. END_DOC read_wf = .True. touch read_wf diff --git a/src/tools/fcidump.irp.f b/src/tools/fcidump.irp.f index f979ac1a..bf4d07fb 100644 --- a/src/tools/fcidump.irp.f +++ b/src/tools/fcidump.irp.f @@ -1,17 +1,22 @@ program fcidump implicit none BEGIN_DOC -! Produce a regular FCIDUMP file from the |MOs| stored in the |EZFIO| folder. +! Produce a regular `FCIDUMP` file from the |MOs| stored in the |EZFIO| +! directory. ! -! To specify an active space, the class of the mos have to set in the |EZFIO| folder (see :ref:`qp_set_mo_class`). +! To specify an active space, the class of the |MOs| have to set in the +! |EZFIO| directory (see :ref:`qp_set_mo_class`). ! -! The fcidump program supports 3 types of MO_class : +! The :ref:`fcidump` program supports 3 types of |MO| classes : ! -! * the "core" orbitals which are always doubly occupied in the calculation +! * the *core* orbitals which are always doubly occupied in the +! calculation ! -! * the "del" orbitals that are never occupied in the calculation +! * the *deleted* orbitals that are never occupied in the calculation +! +! * the *active* orbitals that are occupied with a varying number of +! electrons ! -! * the "act" orbitals that will be occupied by a varying number of electrons END_DOC character*(128) :: output integer :: i_unit_output,getUnitAndOpen diff --git a/src/tools/four_idx_transform.irp.f b/src/tools/four_idx_transform.irp.f index 45198770..92e87cad 100644 --- a/src/tools/four_idx_transform.irp.f +++ b/src/tools/four_idx_transform.irp.f @@ -1,11 +1,15 @@ program four_idx_transform implicit none BEGIN_DOC -! 4-index transformation of two-electron integrals from |AO| to |MO| integrals. +! 4-index transformation of two-electron integrals from |AO| to |MO| +! integrals. ! -! This program will compute the two-electron integrals on the |MO| basis and store it into the |EZFIO| folder. +! This program will compute the two-electron integrals on the |MO| basis +! and store it into the |EZFIO| directory. +! +! This program can be useful if the AO --> MO transformation is an +! expensive step by itself. ! -! This program can be useful if the AO --> MO transformation is an expensive step by itself. END_DOC io_mo_two_e_integrals = 'Write' diff --git a/src/tools/print_wf.irp.f b/src/tools/print_wf.irp.f index 2a8335fc..01fc8948 100644 --- a/src/tools/print_wf.irp.f +++ b/src/tools/print_wf.irp.f @@ -1,17 +1,20 @@ program print_wf implicit none BEGIN_DOC - ! Print the ground state wave function stored in the |EZFIO| folder in the intermediate normalization. + ! Print the ground state wave function stored in the |EZFIO| directory + ! in the intermediate normalization. ! - ! It also prints a lot of information regarding the excitation operators from the reference determinant + ! It also prints a lot of information regarding the excitation + ! operators from the reference determinant ! and a first-order + ! perturbative analysis of the wave function. ! - ! and a first-order perturbative analysis of the wave function. - ! - ! If the wave function strongly deviates from the first-order analysis, something funny is going on :) + ! If the wave function strongly deviates from the first-order analysis, + ! something funny is going on :) END_DOC - ! this has to be done in order to be sure that N_det, psi_det and psi_coef are the wave function stored in the EZFIO folder + ! this has to be done in order to be sure that N_det, psi_det and + ! psi_coef are the wave function stored in the |EZFIO| directory. read_wf = .True. touch read_wf call routine diff --git a/src/tools/save_natorb.irp.f b/src/tools/save_natorb.irp.f index e18309ba..88b28f06 100644 --- a/src/tools/save_natorb.irp.f +++ b/src/tools/save_natorb.irp.f @@ -1,15 +1,16 @@ program save_natorb implicit none BEGIN_DOC -! Save natural MOs into the EZFIO +! Save natural |MOs| into the |EZFIO|. ! -! This program reads the wave function stored in the EZFIO folder, +! This program reads the wave function stored in the |EZFIO| directory, +! extracts the corresponding natural orbitals and setd them as the new +! |MOs|. ! -! extracts the corresponding natural orbitals and set them as the new MOs -! -! If this is a multi-state calculation, the density matrix that produces the natural orbitals -! -! is obtained from a state-averaged of the density matrices of each state with the corresponding state_average_weight (see the doc of state_average_weight). +! If this is a multi-state calculation, the density matrix that produces +! the natural orbitals is obtained from an average of the density +! matrices of each state with the corresponding +! :option:`determinants state_average_weight` END_DOC read_wf = .True. touch read_wf diff --git a/src/tools/save_one_e_dm.irp.f b/src/tools/save_one_e_dm.irp.f index 9bfa6717..e850131e 100644 --- a/src/tools/save_one_e_dm.irp.f +++ b/src/tools/save_one_e_dm.irp.f @@ -1,13 +1,16 @@ program save_one_e_dm implicit none BEGIN_DOC -! programs that computes the one body density on the mo basis for alpha and beta electrons - -! from the wave function stored in the EZFIO folder, and then save it into the EZFIO folder aux_quantities. +! Program that computes the one body density on the |MO| basis +! for $\alpha$ and $\beta$ electrons from the wave function +! stored in the |EZFIO| directory, and then saves it into the +! :ref:`module_aux_quantities`. ! -! Then, the global variable data_one_e_dm_alpha_mo and data_one_e_dm_beta_mo will automatically read this density in a further calculation. -! -! This can be used to perform damping on the density in RS-DFT calculation (see the density_for_dft module). +! Then, the global variable :option:`aux_quantities data_one_e_dm_alpha_mo` +! and :option:`aux_quantities data_one_e_dm_beta_mo` will automatically +! read this density in the next calculation. This can be used to perform +! damping on the density in |RSDFT| calculations (see +! :ref:`module_density_for_dft`). END_DOC read_wf = .True. touch read_wf