From c0941c5d1df314c60f351415db2da5c93ceb644a Mon Sep 17 00:00:00 2001 From: eginer Date: Wed, 6 Nov 2024 18:12:40 +0100 Subject: [PATCH 01/10] added print_n2_related_stuff.irp.f --- .../local/basis_correction/pbe_on_top.irp.f | 27 ++++++++++++++++++- .../print_n2_related_stuff.irp.f | 17 ++++++++++++ src/cas_based_on_top/cas_based_on_top.irp.f | 1 + src/cas_based_on_top/on_top_cas_prov.irp.f | 14 ++++++++++ 4 files changed, 58 insertions(+), 1 deletion(-) create mode 100644 plugins/local/basis_correction/print_n2_related_stuff.irp.f diff --git a/plugins/local/basis_correction/pbe_on_top.irp.f b/plugins/local/basis_correction/pbe_on_top.irp.f index be3a23d71..96d1ffdc3 100644 --- a/plugins/local/basis_correction/pbe_on_top.irp.f +++ b/plugins/local/basis_correction/pbe_on_top.irp.f @@ -180,4 +180,29 @@ enddo END_PROVIDER - + BEGIN_PROVIDER [ double precision, extrapolated_on_top, (n_points_final_grid,N_states)] +&BEGIN_PROVIDER [ double precision, average_extrapolated_on_top, (N_states)] + implicit none + double precision :: weight,on_top, on_top_extrap, mu_correction_of_on_top,mu + integer :: istate, ipoint + extrapolated_on_top = 0.d0 + average_extrapolated_on_top = 0.d0 + do istate = 1, N_states + do ipoint = 1, n_points_final_grid + weight = final_weight_at_r_vector(ipoint) + mu = mu_of_r_prov(ipoint,istate) + if(mu_of_r_potential == "cas_full")then + ! You take the on-top of the CAS wave function which is computed with mu(r) + on_top = on_top_cas_mu_r(ipoint,istate) + else + ! You take the on-top of the CAS wave function computed separately + on_top = total_cas_on_top_density(ipoint,istate) + endif +! We take the extrapolated on-top pair density + on_top_extrap = mu_correction_of_on_top(mu,on_top) + extrapolated_on_top(ipoint,istate) = on_top_extrap + average_extrapolated_on_top(istate) += on_top_extrap * weight + enddo + enddo + + END_PROVIDER diff --git a/plugins/local/basis_correction/print_n2_related_stuff.irp.f b/plugins/local/basis_correction/print_n2_related_stuff.irp.f new file mode 100644 index 000000000..0967d16ed --- /dev/null +++ b/plugins/local/basis_correction/print_n2_related_stuff.irp.f @@ -0,0 +1,17 @@ +program print_n2_stuffs + implicit none + BEGIN_DOC +! TODO : Put the documentation of the program here + END_DOC + read_wf = .True. + touch read_wf + no_core_density = .True. + touch no_core_density + call routine +end + +subroutine routine + implicit none + print*,'average_extrapolated_on_top = ',average_extrapolated_on_top + print*,'average_on_top = ',average_on_top +end diff --git a/src/cas_based_on_top/cas_based_on_top.irp.f b/src/cas_based_on_top/cas_based_on_top.irp.f index 89516336b..7d9090ce1 100644 --- a/src/cas_based_on_top/cas_based_on_top.irp.f +++ b/src/cas_based_on_top/cas_based_on_top.irp.f @@ -16,4 +16,5 @@ program cas_based_on_top_density subroutine routine implicit none provide total_cas_on_top_density + provide average_on_top end diff --git a/src/cas_based_on_top/on_top_cas_prov.irp.f b/src/cas_based_on_top/on_top_cas_prov.irp.f index 18a7b7d2d..dd93ed40d 100644 --- a/src/cas_based_on_top/on_top_cas_prov.irp.f +++ b/src/cas_based_on_top/on_top_cas_prov.irp.f @@ -74,3 +74,17 @@ subroutine act_on_top_on_grid_pt(ipoint,istate,pure_act_on_top_of_r) END_PROVIDER + + BEGIN_PROVIDER [ double precision, average_on_top, (n_states)] + implicit none + integer :: i_point,istate + double precision :: wall_0,wall_1,core_inact_dm,pure_act_on_top_of_r,weight + average_on_top = 0.d0 + do istate = 1, N_states + do i_point = 1, n_points_final_grid + weight = final_weight_at_r_vector(i_point) + average_on_top(istate) += total_cas_on_top_density(i_point,istate) * weight + enddo + enddo + print*,'Average on top pair density = ',average_on_top + END_PROVIDER From 8f54963655e1c37d1ee6b8ef3e018387df4b6aa1 Mon Sep 17 00:00:00 2001 From: eginer Date: Wed, 20 Nov 2024 18:26:27 +0100 Subject: [PATCH 02/10] moved ao_one_e_integrals_from_mo into mo_one_e_ints --- .../local/basis_correction/print_n2_related_stuff.irp.f | 1 + src/ao_one_e_ints/ao_one_e_ints.irp.f | 9 --------- src/mo_one_e_ints/ao_to_mo.irp.f | 9 +++++++++ 3 files changed, 10 insertions(+), 9 deletions(-) diff --git a/plugins/local/basis_correction/print_n2_related_stuff.irp.f b/plugins/local/basis_correction/print_n2_related_stuff.irp.f index 0967d16ed..453694c7c 100644 --- a/plugins/local/basis_correction/print_n2_related_stuff.irp.f +++ b/plugins/local/basis_correction/print_n2_related_stuff.irp.f @@ -14,4 +14,5 @@ subroutine routine implicit none print*,'average_extrapolated_on_top = ',average_extrapolated_on_top print*,'average_on_top = ',average_on_top + print*,'mu_average_prov = ',mu_average_prov end diff --git a/src/ao_one_e_ints/ao_one_e_ints.irp.f b/src/ao_one_e_ints/ao_one_e_ints.irp.f index 431a75fce..8ab9fe5fc 100644 --- a/src/ao_one_e_ints/ao_one_e_ints.irp.f +++ b/src/ao_one_e_ints/ao_one_e_ints.irp.f @@ -46,12 +46,3 @@ END_PROVIDER -BEGIN_PROVIDER [ double precision, ao_one_e_integrals_from_mo, (ao_num, ao_num)] - implicit none - BEGIN_DOC -! Integrals of the one e hamiltonian obtained from the integrals on the MO basis -! -! WARNING : this is equal to ao_one_e_integrals only if the AO and MO basis have the same number of functions - END_DOC - call mo_to_ao(mo_one_e_integrals,mo_num,ao_one_e_integrals_from_mo,ao_num) -END_PROVIDER diff --git a/src/mo_one_e_ints/ao_to_mo.irp.f b/src/mo_one_e_ints/ao_to_mo.irp.f index a0d8caaa4..7ebc46386 100644 --- a/src/mo_one_e_ints/ao_to_mo.irp.f +++ b/src/mo_one_e_ints/ao_to_mo.irp.f @@ -64,3 +64,12 @@ subroutine mo_to_ao_no_overlap(A_mo,LDA_mo,A_ao,LDA_ao) END_PROVIDER +BEGIN_PROVIDER [ double precision, ao_one_e_integrals_from_mo, (ao_num, ao_num)] + implicit none + BEGIN_DOC +! Integrals of the one e hamiltonian obtained from the integrals on the MO basis +! +! WARNING : this is equal to ao_one_e_integrals only if the AO and MO basis have the same number of functions + END_DOC + call mo_to_ao(mo_one_e_integrals,mo_num,ao_one_e_integrals_from_mo,ao_num) +END_PROVIDER From 91be8820e6fcfd99820cc9fd6f7e56c8d4270ded Mon Sep 17 00:00:00 2001 From: eginer Date: Mon, 25 Nov 2024 17:55:27 +0100 Subject: [PATCH 03/10] moved the use_pw in ao_one_e_ints --- src/ao_one_e_ints/aos_cgtos.irp.f | 20 +++++++++++++++++++ .../two_e_coul_integrals_cgtos.irp.f | 20 ------------------- 2 files changed, 20 insertions(+), 20 deletions(-) diff --git a/src/ao_one_e_ints/aos_cgtos.irp.f b/src/ao_one_e_ints/aos_cgtos.irp.f index 62c312f8e..7b2dde7f6 100644 --- a/src/ao_one_e_ints/aos_cgtos.irp.f +++ b/src/ao_one_e_ints/aos_cgtos.irp.f @@ -282,3 +282,23 @@ +! --- + +BEGIN_PROVIDER [logical, use_pw] + + implicit none + + logical :: exist + + use_pw = .false. + + call ezfio_has_ao_basis_ao_expo_pw(exist) + if(exist) then + PROVIDE ao_expo_pw_ord_transp + if(maxval(dabs(ao_expo_pw_ord_transp(4,:,:))) .gt. 1d-15) use_pw = .true. + endif + +END_PROVIDER + +! --- + diff --git a/src/ao_two_e_ints/two_e_coul_integrals_cgtos.irp.f b/src/ao_two_e_ints/two_e_coul_integrals_cgtos.irp.f index a7521b78f..30e4824a1 100644 --- a/src/ao_two_e_ints/two_e_coul_integrals_cgtos.irp.f +++ b/src/ao_two_e_ints/two_e_coul_integrals_cgtos.irp.f @@ -1672,23 +1672,3 @@ recursive subroutine I_x2_pol_mult_cgtos(c, B_10, B_01, B_00, C_00, D_00, d, nd, end -! --- - -BEGIN_PROVIDER [logical, use_pw] - - implicit none - - logical :: exist - - use_pw = .false. - - call ezfio_has_ao_basis_ao_expo_pw(exist) - if(exist) then - PROVIDE ao_expo_pw_ord_transp - if(maxval(dabs(ao_expo_pw_ord_transp(4,:,:))) .gt. 1d-15) use_pw = .true. - endif - -END_PROVIDER - -! --- - From 0fdaa03d99eea6085667e22c268b23b1eddc1f45 Mon Sep 17 00:00:00 2001 From: eginer Date: Wed, 4 Dec 2024 15:58:59 +0100 Subject: [PATCH 04/10] added extra basis --- docs/source/index.rst | 1 + docs/source/modules/ao_basis.rst | 241 +- docs/source/modules/ao_one_e_ints.rst | 2357 +++++++++-- docs/source/modules/ao_two_e_ints.rst | 2897 +++++++++++--- docs/source/modules/becke_numerical_grid.rst | 18 + docs/source/modules/bitmask.rst | 2540 ++++++------ docs/source/modules/cipsi.rst | 2876 +++----------- docs/source/modules/cis.rst | 8 +- docs/source/modules/cisd.rst | 144 +- docs/source/modules/davidson.rst | 2256 ++++++++--- docs/source/modules/davidson_undressed.rst | 32 + docs/source/modules/density_for_dft.rst | 6 +- docs/source/modules/determinants.rst | 2373 ++++++++---- docs/source/modules/dft_keywords.rst | 10 +- docs/source/modules/dft_one_e.rst | 671 +++- docs/source/modules/dft_utils_in_r.rst | 1384 +++++-- docs/source/modules/electrons.rst | 10 + docs/source/modules/ezfio_files.rst | 641 +-- docs/source/modules/fci.rst | 71 +- docs/source/modules/generators_cas.rst | 331 ++ docs/source/modules/generators_full.rst | 249 -- docs/source/modules/hartree_fock.rst | 280 +- docs/source/modules/iterations.rst | 185 +- docs/source/modules/kohn_sham.rst | 366 ++ docs/source/modules/kohn_sham_rs.rst | 365 -- docs/source/modules/mo_basis.rst | 167 +- docs/source/modules/mo_guess.rst | 6 +- docs/source/modules/mo_one_e_ints.rst | 231 +- docs/source/modules/mo_two_e_ints.rst | 1797 +++++++-- docs/source/modules/mpi.rst | 130 +- docs/source/modules/nuclei.rst | 208 + docs/source/modules/perturbation.rst | 27 +- docs/source/modules/pseudo.rst | 4 +- docs/source/modules/scf_utils.rst | 182 +- docs/source/modules/selectors_utils.rst | 4 +- docs/source/modules/tools.rst | 154 +- docs/source/modules/utils.rst | 3448 ++++++++++++----- docs/source/modules/zmq.rst | 54 +- .../programmers_guide/index_providers.rst | 1247 +++++- docs/source/programs/cisd.rst | 14 +- docs/source/programs/fci.rst | 12 +- docs/source/programs/four_idx_transform.rst | 1 + docs/source/programs/pt2.rst | 8 + docs/source/programs/rs_ks_scf.rst | 1 - docs/source/programs/save_natorb.rst | 1 + docs/source/programs/scf.rst | 4 + plugins/local/ao_extra_basis/EZFIO.cfg | 87 + plugins/local/ao_extra_basis/NEED | 3 + plugins/local/ao_extra_basis/README.rst | 4 + plugins/local/ao_extra_basis/aos.irp.f | 325 ++ .../ao_extra_basis/dimensions_integrals.irp.f | 19 + .../local/ao_extra_basis/extra_basis.irp.f | 15 + plugins/local/ao_extra_basis/install | 23 + .../local/ao_extra_basis/qp_copy_extra_basis | 59 + plugins/local/ao_extra_basis/uninstall | 20 + plugins/local/extra_basis_int/NEED | 2 + plugins/local/extra_basis_int/README.rst | 4 + .../local/extra_basis_int/ao_overlap.irp.f | 136 + .../extra_basis_int/extra_basis_int.irp.f | 7 + plugins/local/extra_nuclei/EZFIO.cfg | 23 + plugins/local/extra_nuclei/NEED | 3 + plugins/local/extra_nuclei/README.rst | 4 + plugins/local/extra_nuclei/extra_nuclei.irp.f | 7 + plugins/local/extra_nuclei/nuclei.irp.f | 122 + plugins/local/tuto_plugins/tuto_I/tuto_I.rst | 2 +- src/cas_based_on_top/cas_based_on_top.irp.f | 2 +- src/casscf_cipsi/get_energy.irp.f | 2 +- src/mu_of_r/test_proj_op.irp.f | 2 +- src/tools/attachement_orb.irp.f | 2 +- src/tools/fcidump_pyscf.irp.f | 2 +- src/tools/hcore_guess.irp.f | 3 - src/tools/huckel_guess.irp.f | 5 - src/tools/print_sorted_wf_coef.irp.f | 2 +- src/tools/save_natorb_no_ov_rot.irp.f | 2 +- src/tools/save_natorb_no_ref.irp.f | 2 +- src/trexio/import_trexio_integrals.irp.f | 2 +- 76 files changed, 19956 insertions(+), 8947 deletions(-) create mode 100644 plugins/local/ao_extra_basis/EZFIO.cfg create mode 100644 plugins/local/ao_extra_basis/NEED create mode 100644 plugins/local/ao_extra_basis/README.rst create mode 100644 plugins/local/ao_extra_basis/aos.irp.f create mode 100644 plugins/local/ao_extra_basis/dimensions_integrals.irp.f create mode 100644 plugins/local/ao_extra_basis/extra_basis.irp.f create mode 100755 plugins/local/ao_extra_basis/install create mode 100755 plugins/local/ao_extra_basis/qp_copy_extra_basis create mode 100755 plugins/local/ao_extra_basis/uninstall create mode 100644 plugins/local/extra_basis_int/NEED create mode 100644 plugins/local/extra_basis_int/README.rst create mode 100644 plugins/local/extra_basis_int/ao_overlap.irp.f create mode 100644 plugins/local/extra_basis_int/extra_basis_int.irp.f create mode 100644 plugins/local/extra_nuclei/EZFIO.cfg create mode 100644 plugins/local/extra_nuclei/NEED create mode 100644 plugins/local/extra_nuclei/README.rst create mode 100644 plugins/local/extra_nuclei/extra_nuclei.irp.f create mode 100644 plugins/local/extra_nuclei/nuclei.irp.f delete mode 100644 src/tools/hcore_guess.irp.f delete mode 100644 src/tools/huckel_guess.irp.f diff --git a/docs/source/index.rst b/docs/source/index.rst index 273582d40..f663d607d 100644 --- a/docs/source/index.rst +++ b/docs/source/index.rst @@ -41,6 +41,7 @@ programmers_guide/plugins programmers_guide/plugins_tuto_intro programmers_guide/plugins_tuto_I + programmers_guide/plugins_tuto_II programmers_guide/new_ks programmers_guide/index diff --git a/docs/source/modules/ao_basis.rst b/docs/source/modules/ao_basis.rst index 3e3821d34..834730fc5 100644 --- a/docs/source/modules/ao_basis.rst +++ b/docs/source/modules/ao_basis.rst @@ -27,7 +27,7 @@ The |AO| coefficients are normalized as: .. warning:: `ao_coef` contains the |AO| coefficients given in input. These do not - include the normalization constant of the |AO|. The `ao_coef_normalized` + include the normalization constant of the |AO|. The `ao_coef_normalized_factor` provider includes this normalization factor. @@ -36,6 +36,19 @@ the two electron integrals. +Complex Gaussian-Type Orbitals (cGTOs) +===================================== + +Complex Gaussian-Type Orbitals (cGTOs) are also supported: + +.. math:: + + \chi_i(\mathbf{r}) = x^a y^b z^c \sum_k c_{ki} \left( e^{-\alpha_{ki} \mathbf{r}^2 - \imath \mathbf{k}_{ki} \cdot \mathbf{r} - \imath \phi_{ki}} + \text{C.C.} \right) + +where: + - :math:`\alpha \in \mathbb{C}` and :math:`\Re(\alpha) > 0` (specified by ``ao_expo`` and ``ao_expo_im``), + - :math:`\mathbf{k} = (k_x, k_y, k_z) \in \mathbb{R}^3` (specified by ``ao_expo_pw``), + - :math:`\phi = \phi_x + \phi_y + \phi_z \in \mathbb{R}` (specified by ``ao_expo_phase``). @@ -94,6 +107,39 @@ EZFIO parameters Default: false +.. option:: ao_normalized + + Use normalized basis functions + + Default: true + +.. option:: primitives_normalized + + Use normalized primitive functions + + Default: true + +.. option:: use_cgtos + + If true, use cgtos for AO integrals + + Default: False + +.. option:: ao_expo_im + + imag part for Exponents for each primitive of each cGTOs |AO| + + +.. option:: ao_expo_pw + + plane wave part for each primitive GTOs |AO| + + +.. option:: ao_expo_phase + + phase shift for each primitive GTOs |AO| + + Providers --------- @@ -130,35 +176,9 @@ Providers .. 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 @@ -191,7 +211,6 @@ Providers .. hlist:: :columns: 3 - * :c:data:`ao_coef_normalization_libint_factor` * :c:data:`ao_coef_normalized_ordered` @@ -260,13 +279,18 @@ Providers * :c:data:`ao_dipole_x` * :c:data:`ao_integrals_n_e` * :c:data:`ao_integrals_n_e_per_atom` + * :c:data:`ao_integrals_pt_chrg` * :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:`cholesky_ao_num` .. c:var:: ao_coef_normalized_ordered_transp_per_nucl @@ -359,13 +383,18 @@ Providers * :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_integrals_pt_chrg` * :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:`cholesky_ao_num` .. c:var:: ao_expo_ordered_transp_per_nucl @@ -393,6 +422,28 @@ Providers +.. c:var:: ao_first_of_shell + + + File : :file:`ao_basis/aos.irp.f` + + .. code:: fortran + + integer, allocatable :: ao_first_of_shell (shell_num) + + + Index of the shell to which the AO corresponds + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`shell_ang_mom` + * :c:data:`shell_num` + + + .. c:var:: ao_l @@ -422,7 +473,6 @@ Providers :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` @@ -456,7 +506,6 @@ Providers :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` @@ -513,7 +562,6 @@ Providers :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` @@ -566,13 +614,43 @@ Providers :columns: 3 * :c:data:`ao_coef` + * :c:data:`ao_coef_cgtos_norm_ord_transp` + * :c:data:`ao_coef_norm_cgtos` + * :c:data:`ao_coef_norm_cgtos_ord` * :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_cgtos_ord_transp` + * :c:data:`ao_expo_im` * :c:data:`ao_expo_ordered_transp` * :c:data:`ao_expo_ordered_transp_per_nucl` + * :c:data:`ao_expo_phase` + * :c:data:`ao_expo_pw` + + +.. c:var:: ao_shell + + + File : :file:`ao_basis/aos.irp.f` + + .. code:: fortran + + integer, allocatable :: ao_shell (ao_num) + + + Index of the shell to which the AO corresponds + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`shell_ang_mom` + * :c:data:`shell_num` + .. c:var:: cart_to_sphe_0 @@ -849,10 +927,17 @@ Providers .. hlist:: :columns: 3 + * :c:data:`ao_2e_cgtos_schwartz` * :c:data:`ao_integrals_n_e` + * :c:data:`ao_integrals_n_e_cgtos` * :c:data:`ao_integrals_n_e_per_atom` + * :c:data:`ao_integrals_pt_chrg` + * :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:`cholesky_ao_num` * :c:data:`gauleg_t2` @@ -881,10 +966,17 @@ Providers .. hlist:: :columns: 3 + * :c:data:`ao_2e_cgtos_schwartz` * :c:data:`ao_integrals_n_e` + * :c:data:`ao_integrals_n_e_cgtos` * :c:data:`ao_integrals_n_e_per_atom` + * :c:data:`ao_integrals_pt_chrg` + * :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:`cholesky_ao_num` * :c:data:`gauleg_t2` @@ -915,7 +1007,6 @@ Providers .. hlist:: :columns: 3 - * :c:data:`nucl_aos_transposed` * :c:data:`nucl_list_shell_aos` @@ -938,7 +1029,6 @@ Providers * :c:data:`ao_nucl` * :c:data:`ao_num` - * :c:data:`nucl_aos` * :c:data:`nucl_n_aos` * :c:data:`nucl_num` @@ -1043,6 +1133,74 @@ Providers +.. c:var:: use_cgtos + + + File : :file:`ao_basis/cgtos.irp.f` + + .. code:: fortran + + logical :: use_cgtos + + + If true, use cgtos for AO integrals + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ezfio_filename` + * :c:data:`mpi_master` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_deriv2_x` + * :c:data:`ao_integrals_n_e` + * :c:data:`ao_overlap` + * :c:data:`ao_two_e_integral_alpha` + * :c:data:`ao_two_e_integral_schwartz` + * :c:data:`ao_two_e_integrals_in_map` + * :c:data:`cholesky_ao_num` + + +.. c:var:: use_cosgtos + + + File : :file:`ao_basis/cosgtos.irp.f` + + .. code:: fortran + + logical :: use_cosgtos + + + If true, use cosgtos for AO integrals + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ezfio_filename` + * :c:data:`mpi_master` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_deriv2_x` + * :c:data:`ao_integrals_n_e` + * :c:data:`ao_overlap` + * :c:data:`ao_two_e_integral_alpha` + * :c:data:`ao_two_e_integral_schwartz` + * :c:data:`ao_two_e_integrals_in_map` + * :c:data:`cholesky_ao_num` + + Subroutines / functions ----------------------- @@ -1069,7 +1227,7 @@ Subroutines / functions .. code:: fortran - double precision function ao_value(i,r) + double precision function ao_value(i, r) Returns the value of the i-th ao at point $\textbf{r}$ @@ -1094,15 +1252,17 @@ Subroutines / functions .. code:: fortran - subroutine give_all_aos_and_grad_and_lapl_at_r(r,aos_array,aos_grad_array,aos_lapl_array) + 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: @@ -1134,9 +1294,10 @@ Subroutines / functions .. code:: fortran - subroutine give_all_aos_and_grad_at_r(r,aos_array,aos_grad_array) + 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 : @@ -1175,12 +1336,14 @@ Subroutines / functions .. code:: fortran - subroutine give_all_aos_at_r(r,aos_array) + subroutine give_all_aos_at_r(r, tmp_array) + input : r == r(1) = x and so on - output : aos_array(i) = aos(i) evaluated in $\textbf{r}$ + output : tmp_array(i) = aos(i) evaluated in $\textbf{r}$ + Needs: @@ -1212,7 +1375,7 @@ Subroutines / functions .. code:: fortran - double precision function primitive_value(i,j,r) + 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} diff --git a/docs/source/modules/ao_one_e_ints.rst b/docs/source/modules/ao_one_e_ints.rst index e0ad5873a..4b6b114d4 100644 --- a/docs/source/modules/ao_one_e_ints.rst +++ b/docs/source/modules/ao_one_e_ints.rst @@ -23,12 +23,17 @@ The most important providers for usual quantum-chemistry calculation are: EZFIO parameters ---------------- -.. option:: ao_integrals_e_n +.. option:: ao_integrals_n_e Nucleus-electron integrals in |AO| basis set -.. option:: io_ao_integrals_e_n +.. option:: ao_integrals_n_e_imag + + Imaginary part of the nucleus-electron integrals in |AO| basis set + + +.. option:: io_ao_integrals_n_e Read/Write |AO| nucleus-electron attraction integrals from/to disk [ Write | Read | None ] @@ -39,6 +44,11 @@ EZFIO parameters Kinetic energy integrals in |AO| basis set +.. option:: ao_integrals_kinetic_imag + + Imaginary part of the kinetic energy integrals in |AO| basis set + + .. option:: io_ao_integrals_kinetic Read/Write |AO| kinetic integrals from/to disk [ Write | Read | None ] @@ -50,6 +60,11 @@ EZFIO parameters Pseudopotential integrals in |AO| basis set +.. option:: ao_integrals_pseudo_imag + + Imaginary part of the pseudopotential integrals in |AO| basis set + + .. option:: io_ao_integrals_pseudo Read/Write |AO| pseudopotential integrals from/to disk [ Write | Read | None ] @@ -61,6 +76,11 @@ EZFIO parameters Overlap integrals in |AO| basis set +.. option:: ao_integrals_overlap_imag + + Imaginary part of the overlap integrals in |AO| basis set + + .. option:: io_ao_integrals_overlap Read/Write |AO| overlap integrals from/to disk [ Write | Read | None ] @@ -72,12 +92,29 @@ EZFIO parameters Combined integrals in |AO| basis set +.. option:: ao_one_e_integrals_imag + + Imaginary part of the 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 +.. option:: lin_dep_cutoff + + Remove linear dependencies when the eigenvalues of the overlap matrix are below this value + + Default: 1.e-6 + +.. option:: ao_one_e_integrals_threshold + + If | (p|q) | < `ao_one_e_integrals_threshold` then (p|q) is zero + + Default: 1.e-15 + Providers --------- @@ -218,253 +255,228 @@ Providers * :c:data:`ao_ortho_canonical_coef` -.. c:var:: ao_deriv2_x +.. c:var:: ao_coef_cgtos_norm_ord_transp - File : :file:`ao_one_e_ints/kin_ao_ints.irp.f` + File : :file:`ao_one_e_ints/aos_cgtos.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) + double precision, allocatable :: ao_coef_cgtos_norm_ord_transp (ao_prim_num_max,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_coef_norm_cgtos_ord` * :c:data:`ao_num` - * :c:data:`ao_power` - * :c:data:`ao_prim_num` - * :c:data:`nucl_coord` + * :c:data:`ao_prim_num_max` Needed by: .. hlist:: :columns: 3 - * :c:data:`ao_kinetic_integrals` + * :c:data:`ao_2e_cgtos_schwartz` + * :c:data:`ao_deriv2_cgtos_x` + * :c:data:`ao_integrals_n_e_cgtos` + * :c:data:`ao_overlap_cgtos` -.. c:var:: ao_deriv2_y +.. c:var:: ao_coef_norm_cgtos - File : :file:`ao_one_e_ints/kin_ao_ints.irp.f` + File : :file:`ao_one_e_ints/aos_cgtos.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) + double precision, allocatable :: ao_coef_norm_cgtos (ao_num,ao_prim_num_max) - 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_coef` + * :c:data:`ao_expo` + * :c:data:`ao_expo_im` + * :c:data:`ao_expo_phase` + * :c:data:`ao_expo_pw` * :c:data:`ao_nucl` * :c:data:`ao_num` * :c:data:`ao_power` * :c:data:`ao_prim_num` + * :c:data:`ao_prim_num_max` * :c:data:`nucl_coord` + * :c:data:`primitives_normalized` Needed by: .. hlist:: :columns: 3 - * :c:data:`ao_kinetic_integrals` + * :c:data:`ao_coef_norm_cgtos_ord` -.. c:var:: ao_deriv2_z +.. c:var:: ao_coef_norm_cgtos_ord - File : :file:`ao_one_e_ints/kin_ao_ints.irp.f` + File : :file:`ao_one_e_ints/aos_cgtos.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) + double precision, allocatable :: ao_coef_norm_cgtos_ord (ao_num,ao_prim_num_max) + complex*16, allocatable :: ao_expo_cgtos_ord (ao_num,ao_prim_num_max) + double precision, allocatable :: ao_expo_pw_ord (4,ao_num,ao_prim_num_max) + double precision, allocatable :: ao_expo_phase_ord (4,ao_num,ao_prim_num_max) - 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_coef_norm_cgtos` + * :c:data:`ao_expo` + * :c:data:`ao_expo_im` + * :c:data:`ao_expo_phase` + * :c:data:`ao_expo_pw` * :c:data:`ao_num` - * :c:data:`ao_power` * :c:data:`ao_prim_num` - * :c:data:`nucl_coord` + * :c:data:`ao_prim_num_max` Needed by: .. hlist:: :columns: 3 - * :c:data:`ao_kinetic_integrals` + * :c:data:`ao_coef_cgtos_norm_ord_transp` + * :c:data:`ao_expo_cgtos_ord_transp` -.. c:var:: ao_deriv_1_x +.. c:var:: ao_coef_norm_cosgtos - File : :file:`ao_one_e_ints/spread_dipole_ao.irp.f` + File : :file:`ao_one_e_ints/aos_cosgtos.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) + double precision, allocatable :: ao_coef_norm_cosgtos (ao_num,ao_prim_num_max) - * 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_coef` + * :c:data:`ao_expo` + * :c:data:`ao_expoim_cosgtos` * :c:data:`ao_num` * :c:data:`ao_power` * :c:data:`ao_prim_num` - * :c:data:`nucl_coord` + * :c:data:`ao_prim_num_max` + * :c:data:`primitives_normalized` + + Needed by: + + .. hlist:: + :columns: 3 + * :c:data:`ao_coef_norm_ord_cosgtos` -.. c:var:: ao_deriv_1_y +.. c:var:: ao_coef_norm_ord_cosgtos - File : :file:`ao_one_e_ints/spread_dipole_ao.irp.f` + File : :file:`ao_one_e_ints/aos_cosgtos.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) + double precision, allocatable :: ao_coef_norm_ord_cosgtos (ao_num,ao_prim_num_max) + complex*16, allocatable :: ao_expo_ord_cosgtos (ao_num,ao_prim_num_max) - * 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_coef_norm_cosgtos` + * :c:data:`ao_expo` + * :c:data:`ao_expoim_cosgtos` * :c:data:`ao_num` - * :c:data:`ao_power` * :c:data:`ao_prim_num` - * :c:data:`nucl_coord` + * :c:data:`ao_prim_num_max` + + Needed by: + + .. hlist:: + :columns: 3 + * :c:data:`ao_coef_norm_ord_transp_cosgtos` + * :c:data:`ao_expo_ord_transp_cosgtos` -.. c:var:: ao_deriv_1_z +.. c:var:: ao_coef_norm_ord_transp_cosgtos - File : :file:`ao_one_e_ints/spread_dipole_ao.irp.f` + File : :file:`ao_one_e_ints/aos_cosgtos.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) + double precision, allocatable :: ao_coef_norm_ord_transp_cosgtos (ao_prim_num_max,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_coef_norm_ord_cosgtos` * :c:data:`ao_num` - * :c:data:`ao_power` - * :c:data:`ao_prim_num` - * :c:data:`nucl_coord` + * :c:data:`ao_prim_num_max` + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_2e_cosgtos_schwartz` + * :c:data:`ao_deriv2_cosgtos_x` + * :c:data:`ao_integrals_n_e_cosgtos` + * :c:data:`ao_overlap_cosgtos` -.. c:var:: ao_dipole_x +.. c:var:: ao_deriv2_cgtos_x - File : :file:`ao_one_e_ints/spread_dipole_ao.irp.f` + File : :file:`ao_one_e_ints/one_e_kin_integrals_cgtos.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) + double precision, allocatable :: ao_deriv2_cgtos_x (ao_num,ao_num) + double precision, allocatable :: ao_deriv2_cgtos_y (ao_num,ao_num) + double precision, allocatable :: ao_deriv2_cgtos_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_coef_cgtos_norm_ord_transp` + * :c:data:`ao_expo_cgtos_ord_transp` * :c:data:`ao_nucl` * :c:data:`ao_num` * :c:data:`ao_power` @@ -476,34 +488,30 @@ Providers .. hlist:: :columns: 3 - * :c:data:`mo_dipole_x` + * :c:data:`ao_deriv2_x` + * :c:data:`ao_kinetic_integrals_cgtos` -.. c:var:: ao_dipole_y +.. c:var:: ao_deriv2_cgtos_y - File : :file:`ao_one_e_ints/spread_dipole_ao.irp.f` + File : :file:`ao_one_e_ints/one_e_kin_integrals_cgtos.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) + double precision, allocatable :: ao_deriv2_cgtos_x (ao_num,ao_num) + double precision, allocatable :: ao_deriv2_cgtos_y (ao_num,ao_num) + double precision, allocatable :: ao_deriv2_cgtos_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_coef_cgtos_norm_ord_transp` + * :c:data:`ao_expo_cgtos_ord_transp` * :c:data:`ao_nucl` * :c:data:`ao_num` * :c:data:`ao_power` @@ -515,34 +523,30 @@ Providers .. hlist:: :columns: 3 - * :c:data:`mo_dipole_x` + * :c:data:`ao_deriv2_x` + * :c:data:`ao_kinetic_integrals_cgtos` -.. c:var:: ao_dipole_z +.. c:var:: ao_deriv2_cgtos_z - File : :file:`ao_one_e_ints/spread_dipole_ao.irp.f` + File : :file:`ao_one_e_ints/one_e_kin_integrals_cgtos.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) + double precision, allocatable :: ao_deriv2_cgtos_x (ao_num,ao_num) + double precision, allocatable :: ao_deriv2_cgtos_y (ao_num,ao_num) + double precision, allocatable :: ao_deriv2_cgtos_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_coef_cgtos_norm_ord_transp` + * :c:data:`ao_expo_cgtos_ord_transp` * :c:data:`ao_nucl` * :c:data:`ao_num` * :c:data:`ao_power` @@ -554,127 +558,133 @@ Providers .. hlist:: :columns: 3 - * :c:data:`mo_dipole_x` + * :c:data:`ao_deriv2_x` + * :c:data:`ao_kinetic_integrals_cgtos` -.. c:var:: ao_integrals_n_e +.. c:var:: ao_deriv2_cosgtos_x - File : :file:`ao_one_e_ints/pot_ao_ints.irp.f` + File : :file:`ao_one_e_ints/one_e_kin_integrals_cosgtos.irp.f` .. code:: fortran - double precision, allocatable :: ao_integrals_n_e (ao_num,ao_num) + double precision, allocatable :: ao_deriv2_cosgtos_x (ao_num,ao_num) + double precision, allocatable :: ao_deriv2_cosgtos_y (ao_num,ao_num) + double precision, allocatable :: ao_deriv2_cosgtos_z (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` - - These integrals also contain the pseudopotential integrals. Needs: .. hlist:: :columns: 3 - * :c:data:`ao_coef_normalized_ordered_transp` - * :c:data:`ao_expo_ordered_transp` + * :c:data:`ao_coef_norm_ord_transp_cosgtos` + * :c:data:`ao_expo_ord_transp_cosgtos` * :c:data:`ao_nucl` * :c:data:`ao_num` * :c:data:`ao_power` * :c:data:`ao_prim_num` - * :c:data:`ao_pseudo_integrals` - * :c:data:`do_pseudo` - * :c:data:`n_pt_max_integrals` - * :c:data:`nucl_charge` * :c:data:`nucl_coord` - * :c:data:`nucl_num` - * :c:data:`read_ao_integrals_n_e` Needed by: .. hlist:: :columns: 3 - * :c:data:`ao_one_e_integrals` - * :c:data:`mo_integrals_n_e` + * :c:data:`ao_deriv2_x` + * :c:data:`ao_kinetic_integrals_cosgtos` -.. c:var:: ao_integrals_n_e_imag +.. c:var:: ao_deriv2_cosgtos_y - File : :file:`ao_one_e_ints/pot_ao_ints.irp.f` + File : :file:`ao_one_e_ints/one_e_kin_integrals_cosgtos.irp.f` .. code:: fortran - double precision, allocatable :: ao_integrals_n_e_imag (ao_num,ao_num) + double precision, allocatable :: ao_deriv2_cosgtos_x (ao_num,ao_num) + double precision, allocatable :: ao_deriv2_cosgtos_y (ao_num,ao_num) + double precision, allocatable :: ao_deriv2_cosgtos_z (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_norm_ord_transp_cosgtos` + * :c:data:`ao_expo_ord_transp_cosgtos` + * :c:data:`ao_nucl` * :c:data:`ao_num` - * :c:data:`read_ao_integrals_n_e` + * :c:data:`ao_power` + * :c:data:`ao_prim_num` + * :c:data:`nucl_coord` + + Needed by: + + .. hlist:: + :columns: 3 + * :c:data:`ao_deriv2_x` + * :c:data:`ao_kinetic_integrals_cosgtos` -.. c:var:: ao_integrals_n_e_per_atom +.. c:var:: ao_deriv2_cosgtos_z - File : :file:`ao_one_e_ints/pot_ao_ints.irp.f` + File : :file:`ao_one_e_ints/one_e_kin_integrals_cosgtos.irp.f` .. code:: fortran - double precision, allocatable :: ao_integrals_n_e_per_atom (ao_num,ao_num,nucl_num) + double precision, allocatable :: ao_deriv2_cosgtos_x (ao_num,ao_num) + double precision, allocatable :: ao_deriv2_cosgtos_y (ao_num,ao_num) + double precision, allocatable :: ao_deriv2_cosgtos_z (ao_num,ao_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_coef_norm_ord_transp_cosgtos` + * :c:data:`ao_expo_ord_transp_cosgtos` * :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:data:`ao_deriv2_x` + * :c:data:`ao_kinetic_integrals_cosgtos` -.. c:var:: ao_kinetic_integrals +.. c:var:: ao_deriv2_x File : :file:`ao_one_e_ints/kin_ao_ints.irp.f` .. code:: fortran - double precision, allocatable :: ao_kinetic_integrals (ao_num,ao_num) + 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) - Kinetic energy integrals in the |AO| basis. + Second derivative matrix elements in the |AO| basis. - :math:`\langle \chi_i |\hat{T}| \chi_j \rangle` + .. math:: + + {\tt ao\_deriv2\_x} = + \langle \chi_i(x,y,z) | \frac{\partial^2}{\partial x^2} |\chi_j (x,y,z) \rangle Needs: @@ -682,53 +692,1040 @@ Providers .. hlist:: :columns: 3 - * :c:data:`ao_deriv2_x` + * :c:data:`ao_coef_normalized_ordered_transp` + * :c:data:`ao_deriv2_cgtos_x` + * :c:data:`ao_expo_ordered_transp` + * :c:data:`ao_nucl` * :c:data:`ao_num` - * :c:data:`read_ao_integrals_kinetic` + * :c:data:`ao_power` + * :c:data:`ao_prim_num` + * :c:data:`nucl_coord` + * :c:data:`use_cgtos` Needed by: .. hlist:: :columns: 3 - * :c:data:`ao_one_e_integrals` - * :c:data:`mo_kinetic_integrals` + * :c:data:`ao_kinetic_integrals` -.. c:var:: ao_kinetic_integrals_imag +.. c:var:: ao_deriv2_y File : :file:`ao_one_e_ints/kin_ao_ints.irp.f` .. code:: fortran - double precision, allocatable :: ao_kinetic_integrals_imag (ao_num,ao_num) + 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) - Kinetic energy integrals in the |AO| basis. + Second derivative matrix elements in the |AO| basis. - :math:`\langle \chi_i |\hat{T}| \chi_j \rangle` + .. 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_deriv2_cgtos_x` + * :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:`use_cgtos` + + 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_deriv2_cgtos_x` + * :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:`use_cgtos` + + 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` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_deriv_1_x` + + +.. 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` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_deriv_1_x` + + +.. 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` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_deriv_1_x` + + +.. 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_expo_cgtos_ord + + + File : :file:`ao_one_e_ints/aos_cgtos.irp.f` + + .. code:: fortran + + double precision, allocatable :: ao_coef_norm_cgtos_ord (ao_num,ao_prim_num_max) + complex*16, allocatable :: ao_expo_cgtos_ord (ao_num,ao_prim_num_max) + double precision, allocatable :: ao_expo_pw_ord (4,ao_num,ao_prim_num_max) + double precision, allocatable :: ao_expo_phase_ord (4,ao_num,ao_prim_num_max) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_coef_norm_cgtos` + * :c:data:`ao_expo` + * :c:data:`ao_expo_im` + * :c:data:`ao_expo_phase` + * :c:data:`ao_expo_pw` + * :c:data:`ao_num` + * :c:data:`ao_prim_num` + * :c:data:`ao_prim_num_max` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_coef_cgtos_norm_ord_transp` + * :c:data:`ao_expo_cgtos_ord_transp` + + +.. c:var:: ao_expo_cgtos_ord_transp + + + File : :file:`ao_one_e_ints/aos_cgtos.irp.f` + + .. code:: fortran + + complex*16, allocatable :: ao_expo_cgtos_ord_transp (ao_prim_num_max,ao_num) + double precision, allocatable :: ao_expo_pw_ord_transp (4,ao_prim_num_max,ao_num) + double precision, allocatable :: ao_expo_phase_ord_transp (4,ao_prim_num_max,ao_num) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_coef_norm_cgtos_ord` + * :c:data:`ao_num` + * :c:data:`ao_prim_num_max` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_2e_cgtos_schwartz` + * :c:data:`ao_deriv2_cgtos_x` + * :c:data:`ao_integrals_n_e_cgtos` + * :c:data:`ao_overlap_cgtos` + * :c:data:`use_pw` + + +.. c:var:: ao_expo_ord_cosgtos + + + File : :file:`ao_one_e_ints/aos_cosgtos.irp.f` + + .. code:: fortran + + double precision, allocatable :: ao_coef_norm_ord_cosgtos (ao_num,ao_prim_num_max) + complex*16, allocatable :: ao_expo_ord_cosgtos (ao_num,ao_prim_num_max) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_coef_norm_cosgtos` + * :c:data:`ao_expo` + * :c:data:`ao_expoim_cosgtos` + * :c:data:`ao_num` + * :c:data:`ao_prim_num` + * :c:data:`ao_prim_num_max` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_coef_norm_ord_transp_cosgtos` + * :c:data:`ao_expo_ord_transp_cosgtos` + + +.. c:var:: ao_expo_ord_transp_cosgtos + + + File : :file:`ao_one_e_ints/aos_cosgtos.irp.f` + + .. code:: fortran + + complex*16, allocatable :: ao_expo_ord_transp_cosgtos (ao_prim_num_max,ao_num) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_coef_norm_ord_cosgtos` + * :c:data:`ao_num` + * :c:data:`ao_prim_num_max` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_2e_cosgtos_schwartz` + * :c:data:`ao_deriv2_cosgtos_x` + * :c:data:`ao_integrals_n_e_cosgtos` + * :c:data:`ao_overlap_cosgtos` + + +.. c:var:: ao_expo_phase_ord + + + File : :file:`ao_one_e_ints/aos_cgtos.irp.f` + + .. code:: fortran + + double precision, allocatable :: ao_coef_norm_cgtos_ord (ao_num,ao_prim_num_max) + complex*16, allocatable :: ao_expo_cgtos_ord (ao_num,ao_prim_num_max) + double precision, allocatable :: ao_expo_pw_ord (4,ao_num,ao_prim_num_max) + double precision, allocatable :: ao_expo_phase_ord (4,ao_num,ao_prim_num_max) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_coef_norm_cgtos` + * :c:data:`ao_expo` + * :c:data:`ao_expo_im` + * :c:data:`ao_expo_phase` + * :c:data:`ao_expo_pw` + * :c:data:`ao_num` + * :c:data:`ao_prim_num` + * :c:data:`ao_prim_num_max` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_coef_cgtos_norm_ord_transp` + * :c:data:`ao_expo_cgtos_ord_transp` + + +.. c:var:: ao_expo_phase_ord_transp + + + File : :file:`ao_one_e_ints/aos_cgtos.irp.f` + + .. code:: fortran + + complex*16, allocatable :: ao_expo_cgtos_ord_transp (ao_prim_num_max,ao_num) + double precision, allocatable :: ao_expo_pw_ord_transp (4,ao_prim_num_max,ao_num) + double precision, allocatable :: ao_expo_phase_ord_transp (4,ao_prim_num_max,ao_num) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_coef_norm_cgtos_ord` + * :c:data:`ao_num` + * :c:data:`ao_prim_num_max` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_2e_cgtos_schwartz` + * :c:data:`ao_deriv2_cgtos_x` + * :c:data:`ao_integrals_n_e_cgtos` + * :c:data:`ao_overlap_cgtos` + * :c:data:`use_pw` + + +.. c:var:: ao_expo_pw_ord + + + File : :file:`ao_one_e_ints/aos_cgtos.irp.f` + + .. code:: fortran + + double precision, allocatable :: ao_coef_norm_cgtos_ord (ao_num,ao_prim_num_max) + complex*16, allocatable :: ao_expo_cgtos_ord (ao_num,ao_prim_num_max) + double precision, allocatable :: ao_expo_pw_ord (4,ao_num,ao_prim_num_max) + double precision, allocatable :: ao_expo_phase_ord (4,ao_num,ao_prim_num_max) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_coef_norm_cgtos` + * :c:data:`ao_expo` + * :c:data:`ao_expo_im` + * :c:data:`ao_expo_phase` + * :c:data:`ao_expo_pw` + * :c:data:`ao_num` + * :c:data:`ao_prim_num` + * :c:data:`ao_prim_num_max` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_coef_cgtos_norm_ord_transp` + * :c:data:`ao_expo_cgtos_ord_transp` + + +.. c:var:: ao_expo_pw_ord_transp + + + File : :file:`ao_one_e_ints/aos_cgtos.irp.f` + + .. code:: fortran + + complex*16, allocatable :: ao_expo_cgtos_ord_transp (ao_prim_num_max,ao_num) + double precision, allocatable :: ao_expo_pw_ord_transp (4,ao_prim_num_max,ao_num) + double precision, allocatable :: ao_expo_phase_ord_transp (4,ao_prim_num_max,ao_num) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_coef_norm_cgtos_ord` + * :c:data:`ao_num` + * :c:data:`ao_prim_num_max` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_2e_cgtos_schwartz` + * :c:data:`ao_deriv2_cgtos_x` + * :c:data:`ao_integrals_n_e_cgtos` + * :c:data:`ao_overlap_cgtos` + * :c:data:`use_pw` + + +.. 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` + + These integrals also contain the pseudopotential integrals. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_coef_normalized_ordered_transp` + * :c:data:`ao_expo_ordered_transp` + * :c:data:`ao_integrals_n_e_cgtos` + * :c:data:`ao_integrals_pt_chrg` + * :c:data:`ao_nucl` + * :c:data:`ao_num` + * :c:data:`ao_power` + * :c:data:`ao_prim_num` + * :c:data:`ao_pseudo_integrals` + * :c:data:`do_pseudo` + * :c:data:`n_pt_max_integrals` + * :c:data:`nucl_charge` + * :c:data:`nucl_coord` + * :c:data:`nucl_num` + * :c:data:`point_charges` + * :c:data:`read_ao_integrals_n_e` + * :c:data:`use_cgtos` + + 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:`hf_kinetic_energy` + * :c:data:`mo_integrals_n_e` + + +.. c:var:: ao_integrals_n_e_cgtos + + + File : :file:`ao_one_e_ints/one_e_coul_integrals_cgtos.irp.f` + + .. code:: fortran + + double precision, allocatable :: ao_integrals_n_e_cgtos (ao_num,ao_num) + + + + Nucleus-electron interaction, in the cgtos |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_cgtos_norm_ord_transp` + * :c:data:`ao_expo_cgtos_ord_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:`use_pw` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_integrals_n_e` + + +.. c:var:: ao_integrals_n_e_cosgtos + + + File : :file:`ao_one_e_ints/one_e_Coul_integrals_cosgtos.irp.f` + + .. code:: fortran + + double precision, allocatable :: ao_integrals_n_e_cosgtos (ao_num,ao_num) + + + + Nucleus-electron interaction, in the cosgtos |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_norm_ord_transp_cosgtos` + * :c:data:`ao_expo_ord_transp_cosgtos` + * :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` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_integrals_n_e` + + +.. c:var:: ao_integrals_n_e_imag + + + File : :file:`ao_one_e_ints/pot_ao_ints.irp.f` + + .. code:: fortran + + double precision, allocatable :: ao_integrals_n_e_imag (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_num` + * :c:data:`read_ao_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_integrals_pt_chrg + + + File : :file:`ao_one_e_ints/pot_pt_charges.irp.f` + + .. code:: fortran + + double precision, allocatable :: ao_integrals_pt_chrg (ao_num,ao_num) + + + Point charge-electron interaction, in the |AO| basis set. + + :math:`\langle \chi_i | -\sum_charge charge * \frac{1}{|r-R_charge|} | \chi_j \rangle` + + Notice the minus sign convention as it is supposed to be for electrons. + + 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:`n_pts_charge` + * :c:data:`nucl_coord` + * :c:data:`pts_charge_coord` + * :c:data:`pts_charge_z` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_integrals_n_e` + + +.. 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:`hf_kinetic_energy` + * :c:data:`mo_kinetic_integrals` + + +.. c:var:: ao_kinetic_integrals_cgtos + + + File : :file:`ao_one_e_ints/one_e_kin_integrals_cgtos.irp.f` + + .. code:: fortran + + double precision, allocatable :: ao_kinetic_integrals_cgtos (ao_num,ao_num) + + + + Kinetic energy integrals in the cgtos |AO| basis. + + :math:`\langle \chi_i |\hat{T}| \chi_j \rangle` + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_deriv2_cgtos_x` + * :c:data:`ao_num` + + + +.. c:var:: ao_kinetic_integrals_cosgtos + + + File : :file:`ao_one_e_ints/one_e_kin_integrals_cosgtos.irp.f` + + .. code:: fortran + + double precision, allocatable :: ao_kinetic_integrals_cosgtos (ao_num,ao_num) + + + + Kinetic energy integrals in the cosgtos |AO| basis. + + :math:`\langle \chi_i |\hat{T}| \chi_j \rangle` + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_deriv2_cosgtos_x` + * :c:data:`ao_num` + + + +.. c:var:: ao_kinetic_integrals_imag + + + File : :file:`ao_one_e_ints/kin_ao_ints.irp.f` + + .. code:: fortran + + double precision, allocatable :: ao_kinetic_integrals_imag (ao_num,ao_num) + + + Kinetic energy integrals in the |AO| basis. + + :math:`\langle \chi_i |\hat{T}| \chi_j \rangle` - Needs: + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`read_ao_integrals_kinetic` + + + +.. 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:`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:`read_ao_one_e_integrals` + + Needed by: .. hlist:: :columns: 3 - * :c:data:`ao_num` - * :c:data:`read_ao_integrals_kinetic` - + * :c:data:`fock_matrix_ao_alpha` + * :c:data:`hf_energy` + * :c:data:`scf_energy` -.. c:var:: ao_one_e_integrals +.. c:var:: ao_one_e_integrals_imag 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) + double precision, allocatable :: ao_one_e_integrals_imag (ao_num,ao_num) One-electron Hamiltonian in the |AO| basis. @@ -738,49 +1735,63 @@ Providers .. hlist:: :columns: 3 - * :c:data:`ao_integrals_n_e` - * :c:data:`ao_kinetic_integrals` * :c:data:`ao_num` * :c:data:`read_ao_one_e_integrals` -.. c:var:: ao_one_e_integrals_diag +.. c:var:: ao_ortho_canonical_coef - File : :file:`ao_one_e_ints/ao_one_e_ints.irp.f` + File : :file:`ao_one_e_ints/ao_ortho_canonical.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) + double precision, allocatable :: ao_ortho_canonical_coef (ao_num,ao_num) + integer :: ao_ortho_canonical_num - One-electron Hamiltonian in the |AO| basis. + 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_integrals_n_e` - * :c:data:`ao_kinetic_integrals` + * :c:data:`ao_cart_to_sphe_coef` + * :c:data:`ao_cart_to_sphe_overlap` + * :c:data:`ao_cartesian` * :c:data:`ao_num` - * :c:data:`read_ao_one_e_integrals` + * :c:data:`ao_overlap` + * :c:data:`lin_dep_cutoff` + * :c:data:`mpi_master` + + 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_coef_aux` + * :c:data:`mo_num` -.. c:var:: ao_one_e_integrals_imag +.. c:var:: ao_ortho_canonical_coef_inv - File : :file:`ao_one_e_ints/ao_one_e_ints.irp.f` + File : :file:`ao_one_e_ints/ao_ortho_canonical.irp.f` .. code:: fortran - double precision, allocatable :: ao_one_e_integrals_imag (ao_num,ao_num) + double precision, allocatable :: ao_ortho_canonical_coef_inv (ao_num,ao_num) - One-electron Hamiltonian in the |AO| basis. + ao_ortho_canonical_coef^(-1) Needs: @@ -788,11 +1799,17 @@ Providers :columns: 3 * :c:data:`ao_num` - * :c:data:`read_ao_one_e_integrals` + * :c:data:`ao_ortho_canonical_coef` + + Needed by: + + .. hlist:: + :columns: 3 + * :c:data:`mo_coef_in_ao_ortho_basis` -.. c:var:: ao_ortho_canonical_coef +.. c:var:: ao_ortho_canonical_num File : :file:`ao_one_e_ints/ao_ortho_canonical.irp.f` @@ -812,222 +1829,449 @@ Providers .. hlist:: :columns: 3 - * :c:data:`ao_cart_to_sphe_coef` - * :c:data:`ao_cart_to_sphe_overlap` - * :c:data:`ao_cartesian` + * :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` + * :c:data:`lin_dep_cutoff` + * :c:data:`mpi_master` + + 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_coef_aux` + * :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_overlap_cgtos` + * :c:data:`ao_power` + * :c:data:`ao_prim_num` + * :c:data:`nucl_coord` + * :c:data:`read_ao_integrals_overlap` + * :c:data:`use_cgtos` + + 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:`ao_overlap_complex` + * :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_overlap_complex` + * :c:data:`ao_power` + * :c:data:`ao_prim_num` + * :c:data:`is_periodic` + * :c:data:`nucl_coord` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_two_e_integral_alpha` + * :c:data:`cholesky_ao_num` + + +.. c:var:: ao_overlap_cgtos + + + File : :file:`ao_one_e_ints/aos_cgtos.irp.f` + + .. code:: fortran + + double precision, allocatable :: ao_overlap_cgtos (ao_num,ao_num) + double precision, allocatable :: ao_overlap_cgtos_x (ao_num,ao_num) + double precision, allocatable :: ao_overlap_cgtos_y (ao_num,ao_num) + double precision, allocatable :: ao_overlap_cgtos_z (ao_num,ao_num) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_coef_cgtos_norm_ord_transp` + * :c:data:`ao_expo_cgtos_ord_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_overlap` + + +.. c:var:: ao_overlap_cgtos_x + + + File : :file:`ao_one_e_ints/aos_cgtos.irp.f` + + .. code:: fortran + + double precision, allocatable :: ao_overlap_cgtos (ao_num,ao_num) + double precision, allocatable :: ao_overlap_cgtos_x (ao_num,ao_num) + double precision, allocatable :: ao_overlap_cgtos_y (ao_num,ao_num) + double precision, allocatable :: ao_overlap_cgtos_z (ao_num,ao_num) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_coef_cgtos_norm_ord_transp` + * :c:data:`ao_expo_cgtos_ord_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_overlap` + + +.. c:var:: ao_overlap_cgtos_y + + + File : :file:`ao_one_e_ints/aos_cgtos.irp.f` + + .. code:: fortran + + double precision, allocatable :: ao_overlap_cgtos (ao_num,ao_num) + double precision, allocatable :: ao_overlap_cgtos_x (ao_num,ao_num) + double precision, allocatable :: ao_overlap_cgtos_y (ao_num,ao_num) + double precision, allocatable :: ao_overlap_cgtos_z (ao_num,ao_num) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_coef_cgtos_norm_ord_transp` + * :c:data:`ao_expo_cgtos_ord_transp` + * :c:data:`ao_nucl` * :c:data:`ao_num` - * :c:data:`ao_overlap` - * :c:data:`lin_dep_cutoff` - * :c:data:`mpi_master` + * :c:data:`ao_power` + * :c:data:`ao_prim_num` + * :c:data:`nucl_coord` Needed by: .. hlist:: :columns: 3 - * :c:data:`ao_ortho_canonical_coef_inv` - * :c:data:`ao_ortho_canonical_overlap` - * :c:data:`mo_coef` - * :c:data:`mo_num` + * :c:data:`ao_overlap` -.. c:var:: ao_ortho_canonical_coef_inv +.. c:var:: ao_overlap_cgtos_z - File : :file:`ao_one_e_ints/ao_ortho_canonical.irp.f` + File : :file:`ao_one_e_ints/aos_cgtos.irp.f` .. code:: fortran - double precision, allocatable :: ao_ortho_canonical_coef_inv (ao_num,ao_num) + double precision, allocatable :: ao_overlap_cgtos (ao_num,ao_num) + double precision, allocatable :: ao_overlap_cgtos_x (ao_num,ao_num) + double precision, allocatable :: ao_overlap_cgtos_y (ao_num,ao_num) + double precision, allocatable :: ao_overlap_cgtos_z (ao_num,ao_num) - ao_ortho_canonical_coef^(-1) Needs: .. hlist:: :columns: 3 + * :c:data:`ao_coef_cgtos_norm_ord_transp` + * :c:data:`ao_expo_cgtos_ord_transp` + * :c:data:`ao_nucl` * :c:data:`ao_num` - * :c:data:`ao_ortho_canonical_coef` + * :c:data:`ao_power` + * :c:data:`ao_prim_num` + * :c:data:`nucl_coord` Needed by: .. hlist:: :columns: 3 - * :c:data:`mo_coef_in_ao_ortho_basis` + * :c:data:`ao_overlap` -.. c:var:: ao_ortho_canonical_num +.. c:var:: ao_overlap_complex - File : :file:`ao_one_e_ints/ao_ortho_canonical.irp.f` + File : :file:`ao_one_e_ints/ao_overlap.irp.f` .. code:: fortran - double precision, allocatable :: ao_ortho_canonical_coef (ao_num,ao_num) - integer :: ao_ortho_canonical_num + complex*16, allocatable :: ao_overlap_complex (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_canonical_coef(i,j) = coefficient of the ith ao on the jth ao_ortho_canonical orbital + Overlap for complex AOs 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` - * :c:data:`lin_dep_cutoff` - * :c:data:`mpi_master` + * :c:data:`ao_overlap_imag` Needed by: .. hlist:: :columns: 3 - * :c:data:`ao_ortho_canonical_coef_inv` - * :c:data:`ao_ortho_canonical_overlap` - * :c:data:`mo_coef` - * :c:data:`mo_num` + * :c:data:`ao_overlap_abs` + * :c:data:`s_inv_complex` -.. c:var:: ao_ortho_canonical_overlap +.. c:var:: ao_overlap_cosgtos - File : :file:`ao_one_e_ints/ao_ortho_canonical.irp.f` + File : :file:`ao_one_e_ints/aos_cosgtos.irp.f` .. code:: fortran - double precision, allocatable :: ao_ortho_canonical_overlap (ao_ortho_canonical_num,ao_ortho_canonical_num) + double precision, allocatable :: ao_overlap_cosgtos (ao_num,ao_num) + double precision, allocatable :: ao_overlap_cosgtos_x (ao_num,ao_num) + double precision, allocatable :: ao_overlap_cosgtos_y (ao_num,ao_num) + double precision, allocatable :: ao_overlap_cosgtos_z (ao_num,ao_num) - overlap matrix of the ao_ortho_canonical. - Expected to be the Identity Needs: .. hlist:: :columns: 3 + * :c:data:`ao_coef_norm_ord_transp_cosgtos` + * :c:data:`ao_expo_ord_transp_cosgtos` + * :c:data:`ao_nucl` * :c:data:`ao_num` - * :c:data:`ao_ortho_canonical_coef` - * :c:data:`ao_overlap` + * :c:data:`ao_power` + * :c:data:`ao_prim_num` + * :c:data:`nucl_coord` + + Needed by: + + .. hlist:: + :columns: 3 + * :c:data:`ao_overlap` -.. c:var:: ao_overlap +.. c:var:: ao_overlap_cosgtos_x - File : :file:`ao_one_e_ints/ao_overlap.irp.f` + File : :file:`ao_one_e_ints/aos_cosgtos.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) + double precision, allocatable :: ao_overlap_cosgtos (ao_num,ao_num) + double precision, allocatable :: ao_overlap_cosgtos_x (ao_num,ao_num) + double precision, allocatable :: ao_overlap_cosgtos_y (ao_num,ao_num) + double precision, allocatable :: ao_overlap_cosgtos_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_coef_norm_ord_transp_cosgtos` + * :c:data:`ao_expo_ord_transp_cosgtos` * :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_overlap_complex` - * :c:data:`mo_overlap` - * :c:data:`s_half` - * :c:data:`s_half_inv` - * :c:data:`s_inv` - * :c:data:`s_mo_coef` + * :c:data:`ao_overlap` -.. c:var:: ao_overlap_abs +.. c:var:: ao_overlap_cosgtos_y - File : :file:`ao_one_e_ints/ao_overlap.irp.f` + File : :file:`ao_one_e_ints/aos_cosgtos.irp.f` .. code:: fortran - double precision, allocatable :: ao_overlap_abs (ao_num,ao_num) + double precision, allocatable :: ao_overlap_cosgtos (ao_num,ao_num) + double precision, allocatable :: ao_overlap_cosgtos_x (ao_num,ao_num) + double precision, allocatable :: ao_overlap_cosgtos_y (ao_num,ao_num) + double precision, allocatable :: ao_overlap_cosgtos_z (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_coef_norm_ord_transp_cosgtos` + * :c:data:`ao_expo_ord_transp_cosgtos` * :c:data:`ao_nucl` * :c:data:`ao_num` - * :c:data:`ao_overlap_complex` * :c:data:`ao_power` * :c:data:`ao_prim_num` - * :c:data:`is_periodic` * :c:data:`nucl_coord` + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_overlap` -.. c:var:: ao_overlap_complex +.. c:var:: ao_overlap_cosgtos_z - File : :file:`ao_one_e_ints/ao_overlap.irp.f` + File : :file:`ao_one_e_ints/aos_cosgtos.irp.f` .. code:: fortran - complex*16, allocatable :: ao_overlap_complex (ao_num,ao_num) + double precision, allocatable :: ao_overlap_cosgtos (ao_num,ao_num) + double precision, allocatable :: ao_overlap_cosgtos_x (ao_num,ao_num) + double precision, allocatable :: ao_overlap_cosgtos_y (ao_num,ao_num) + double precision, allocatable :: ao_overlap_cosgtos_z (ao_num,ao_num) - Overlap for complex AOs Needs: .. hlist:: :columns: 3 + * :c:data:`ao_coef_norm_ord_transp_cosgtos` + * :c:data:`ao_expo_ord_transp_cosgtos` + * :c:data:`ao_nucl` * :c:data:`ao_num` - * :c:data:`ao_overlap` - * :c:data:`ao_overlap_imag` + * :c:data:`ao_power` + * :c:data:`ao_prim_num` + * :c:data:`nucl_coord` Needed by: .. hlist:: :columns: 3 - * :c:data:`ao_overlap_abs` - * :c:data:`s_inv_complex` + * :c:data:`ao_overlap` .. c:var:: ao_overlap_imag @@ -1083,10 +2327,12 @@ Providers * :c:data:`ao_expo_ordered_transp` * :c:data:`ao_nucl` * :c:data:`ao_num` + * :c:data:`ao_overlap_cgtos` * :c:data:`ao_power` * :c:data:`ao_prim_num` * :c:data:`nucl_coord` * :c:data:`read_ao_integrals_overlap` + * :c:data:`use_cgtos` Needed by: @@ -1096,7 +2342,10 @@ Providers * :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:`ao_overlap_complex` + * :c:data:`fps_spf_matrix_ao` * :c:data:`mo_overlap` * :c:data:`s_half` * :c:data:`s_half_inv` @@ -1130,10 +2379,12 @@ Providers * :c:data:`ao_expo_ordered_transp` * :c:data:`ao_nucl` * :c:data:`ao_num` + * :c:data:`ao_overlap_cgtos` * :c:data:`ao_power` * :c:data:`ao_prim_num` * :c:data:`nucl_coord` * :c:data:`read_ao_integrals_overlap` + * :c:data:`use_cgtos` Needed by: @@ -1143,7 +2394,10 @@ Providers * :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:`ao_overlap_complex` + * :c:data:`fps_spf_matrix_ao` * :c:data:`mo_overlap` * :c:data:`s_half` * :c:data:`s_half_inv` @@ -1177,10 +2431,12 @@ Providers * :c:data:`ao_expo_ordered_transp` * :c:data:`ao_nucl` * :c:data:`ao_num` + * :c:data:`ao_overlap_cgtos` * :c:data:`ao_power` * :c:data:`ao_prim_num` * :c:data:`nucl_coord` * :c:data:`read_ao_integrals_overlap` + * :c:data:`use_cgtos` Needed by: @@ -1190,7 +2446,10 @@ Providers * :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:`ao_overlap_complex` + * :c:data:`fps_spf_matrix_ao` * :c:data:`mo_overlap` * :c:data:`s_half` * :c:data:`s_half_inv` @@ -1258,8 +2517,10 @@ Providers * :c:data:`nucl_charge` * :c:data:`nucl_coord` * :c:data:`nucl_num` + * :c:data:`pseudo_v_k_transp` * :c:data:`pseudo_klocmax` * :c:data:`pseudo_v_k_transp` + * :c:data:`pseudo_v_k_transp` Needed by: @@ -1267,6 +2528,7 @@ Providers :columns: 3 * :c:data:`ao_pseudo_integrals` + * :c:data:`mo_pseudo_integrals_local` .. c:var:: ao_pseudo_integrals_non_local @@ -1295,9 +2557,11 @@ Providers * :c:data:`nucl_charge` * :c:data:`nucl_coord` * :c:data:`nucl_num` + * :c:data:`pseudo_v_kl_transp` * :c:data:`pseudo_kmax` * :c:data:`pseudo_lmax` * :c:data:`pseudo_v_kl_transp` + * :c:data:`pseudo_v_kl_transp` Needed by: @@ -1305,6 +2569,7 @@ Providers :columns: 3 * :c:data:`ao_pseudo_integrals` + * :c:data:`mo_pseudo_integrals_non_local` .. c:var:: ao_spread_x @@ -1424,122 +2689,277 @@ Providers * :c:data:`mo_spread_x` -.. c:function:: give_polynomial_mult_center_one_e_erf: +.. c:function:: give_cpolynomial_mult_center_one_e: - File : :file:`ao_one_e_ints/pot_ao_erf_ints.irp.f` + File : :file:`ao_one_e_ints/one_e_coul_integrals_cgtos.irp.f` + + .. code:: fortran + + subroutine give_cpolynomial_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_cgtos` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`i_x1_pol_mult_one_e_cgtos` + * :c:func:`multiply_cpoly` + + +.. 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_c2` + + +.. c:function:: i_x1_pol_mult_one_e_cgtos: + + + File : :file:`ao_one_e_ints/one_e_coul_integrals_cgtos.irp.f` + + .. code:: fortran + + recursive subroutine I_x1_pol_mult_one_e_cgtos(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_cpolynomial_mult_center_one_e` + * :c:func:`i_x1_pol_mult_one_e_cgtos` + * :c:func:`i_x2_pol_mult_one_e_cgtos` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`i_x1_pol_mult_one_e_cgtos` + * :c:func:`i_x2_pol_mult_one_e_cgtos` + * :c:func:`multiply_cpoly` + + +.. c:function:: i_x1_pol_mult_one_e_cosgtos: + + + File : :file:`ao_one_e_ints/one_e_Coul_integrals_cosgtos.irp.f` + + .. code:: fortran + + recursive subroutine I_x1_pol_mult_one_e_cosgtos(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_cpolynomial_mult_center_one_e` + * :c:func:`i_x1_pol_mult_one_e_cosgtos` + * :c:func:`i_x2_pol_mult_one_e_cosgtos` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`i_x1_pol_mult_one_e_cosgtos` + * :c:func:`i_x2_pol_mult_one_e_cosgtos` + * :c:func:`multiply_cpoly` + + +.. 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_c2` + + +.. c:function:: i_x2_pol_mult_one_e_cgtos: + + + File : :file:`ao_one_e_ints/one_e_coul_integrals_cgtos.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) + recursive subroutine I_x2_pol_mult_one_e_cgtos(c, R1x, R1xp, R2x, d, nd, dim) + + + Recursive routine involved in the electron-nucleus potential + + Called by: + .. hlist:: + :columns: 3 - 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)$. + * :c:func:`i_x1_pol_mult_one_e_cgtos` Calls: .. hlist:: :columns: 3 - * :c:func:`i_x1_pol_mult_one_e` - * :c:func:`multiply_poly` + * :c:func:`i_x1_pol_mult_one_e_cgtos` + * :c:func:`multiply_cpoly` -.. c:function:: give_polynomial_mult_center_one_e_erf_opt: +.. c:function:: i_x2_pol_mult_one_e_cosgtos: - File : :file:`ao_one_e_ints/pot_ao_erf_ints.irp.f` + File : :file:`ao_one_e_ints/one_e_Coul_integrals_cosgtos.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) + recursive subroutine I_x2_pol_mult_one_e_cosgtos(c, R1x, R1xp, R2x, d, nd, dim) - 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)$. + Recursive routine involved in the electron-nucleus potential Called by: .. hlist:: :columns: 3 - * :c:func:`nai_pol_mult_erf` + * :c:func:`i_x1_pol_mult_one_e_cosgtos` Calls: .. hlist:: :columns: 3 - * :c:func:`i_x1_pol_mult_one_e` - * :c:func:`multiply_poly` + * :c:func:`i_x1_pol_mult_one_e_cosgtos` + * :c:func:`multiply_cpoly` -.. c:function:: i_x1_pol_mult_one_e: +.. c:function:: nai_pol_mult_cgtos: - File : :file:`ao_one_e_ints/pot_ao_ints.irp.f` + File : :file:`ao_one_e_ints/one_e_coul_integrals_cgtos.irp.f` .. code:: fortran - recursive subroutine I_x1_pol_mult_one_e(a,c,R1x,R1xp,R2x,d,nd,n_pt_in) + complex*16 function NAI_pol_mult_cgtos(Ae_center, Be_center, power_A, power_B, alpha, beta, & + Ap_center, Bp_center, C_center, n_pt_in) - Recursive routine involved in the electron-nucleus potential + + Computes the electron-nucleus attraction with two primitves cgtos. + + :math:`\langle g_i | \frac{1}{|r-R_c|} | g_j \rangle` + - Called by: + Needs: .. 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` + * :c:data:`use_pw` 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:func:`give_cpolynomial_mult_center_one_e` -.. c:function:: i_x2_pol_mult_one_e: +.. c:function:: nai_pol_mult_erf_with1s: - File : :file:`ao_one_e_ints/pot_ao_ints.irp.f` + File : :file:`ao_one_e_ints/pot_ao_erf_ints.irp.f` .. code:: fortran - recursive subroutine I_x2_pol_mult_one_e(c,R1x,R1xp,R2x,d,nd,dim) - + double precision function NAI_pol_mult_erf_with1s( A1_center, A2_center, power_A1, power_A2, alpha1, alpha2 & + , beta, B_center, C_center, n_pt_in, mu_in ) - Recursive routine involved in the electron-nucleus potential - - Called by: - - .. hlist:: - :columns: 3 - * :c:func:`i_x1_pol_mult_one_e` + + Computes the following integral : + + .. math:: + + \int dx (x - A1_x)^a_1 (x - B1_x)^a_2 \exp(-\alpha_1 (x - A1_x)^2 - \alpha_2 (x - A2_x)^2) + \int dy (y - A1_y)^b_1 (y - B1_y)^b_2 \exp(-\alpha_1 (y - A1_y)^2 - \alpha_2 (y - A2_y)^2) + \int dz (x - A1_z)^c_1 (z - B1_z)^c_2 \exp(-\alpha_1 (z - A1_z)^2 - \alpha_2 (z - A2_z)^2) + \exp(-\beta (r - B)^2) + \frac{\erf(\mu |r - R_C|)}{|r - R_C|}$. + Calls: .. hlist:: :columns: 3 - * :c:func:`i_x1_pol_mult_one_e` - * :c:func:`multiply_poly` + * :c:func:`give_polynomial_mult_center_one_e_erf_opt` .. c:var:: pseudo_dz_k_transp @@ -1785,6 +3205,12 @@ Providers * :c:data:`ao_num` * :c:data:`ao_overlap` + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`eigenvalues_fock_matrix_ao` .. c:var:: s_inv @@ -1833,6 +3259,34 @@ Providers +.. c:var:: use_pw + + + File : :file:`ao_one_e_ints/aos_cgtos.irp.f` + + .. code:: fortran + + logical :: use_pw + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_expo_cgtos_ord_transp` + * :c:data:`ao_expo_cgtos_ord_transp` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_2e_cgtos_schwartz` + * :c:data:`ao_integrals_n_e_cgtos` + + Subroutines / functions ----------------------- @@ -1853,10 +3307,11 @@ Subroutines / functions .. hlist:: :columns: 3 - * :c:data:`ao_integrals_threshold` + * :c:data:`ao_one_e_integrals_threshold` * :c:data:`ao_overlap_abs` * :c:data:`io_ao_integrals_overlap` * :c:data:`is_periodic` + * :c:data:`use_cgtos` .. c:function:: give_all_erf_kl_ao: @@ -1910,6 +3365,64 @@ Subroutines / functions * :c:func:`multiply_poly` +.. 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, power_A, power_B, C_center, n_pt_in, d, n_pt_out, 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` + * :c:func:`nai_pol_mult_erf_v` + * :c:func:`nai_pol_mult_erf_with1s` + * :c:func:`nai_pol_mult_erf_with1s_v` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`i_x1_pol_mult_one_e` + * :c:func:`multiply_poly` + + .. c:function:: int_gaus_pol: @@ -1947,6 +3460,30 @@ Subroutines / functions * :c:func:`give_polynomial_mult_center_one_e` +.. c:function:: nai_pol_mult_cosgtos: + + + File : :file:`ao_one_e_ints/one_e_Coul_integrals_cosgtos.irp.f` + + .. code:: fortran + + complex*16 function NAI_pol_mult_cosgtos(A_center, B_center, power_A, power_B, alpha, beta, C_center, n_pt_in) + + + + Computes the electron-nucleus attraction with two primitves cosgtos. + + :math:`\langle g_i | \frac{1}{|r-R_c|} | g_j \rangle` + + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`give_cpolynomial_mult_center_one_e` + + .. c:function:: nai_pol_mult_erf: @@ -1954,15 +3491,16 @@ Subroutines / functions .. 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) + 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 | }$. + \frac{\erf(\mu |r - R_C |)}{| r - R_C |}$. Calls: @@ -1980,11 +3518,42 @@ Subroutines / functions .. code:: fortran - double precision function NAI_pol_mult_erf_ao(i_ao,j_ao,mu_in,C_center) + 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:`ao_coef_normalized_ordered_transp` + * :c:data:`ao_expo_ordered_transp` + * :c:data:`ao_nucl` + * :c:data:`ao_power` + * :c:data:`ao_prim_num` + * :c:data:`n_pt_max_integrals` + * :c:data:`nucl_coord` + + +.. c:function:: nai_pol_mult_erf_ao_with1s: + + + File : :file:`ao_one_e_ints/pot_ao_erf_ints.irp.f` + + .. code:: fortran + + double precision function NAI_pol_mult_erf_ao_with1s(i_ao, j_ao, beta, B_center, 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 | }$. + $\int_{-\infty}^{infty} dr \chi_i(r) \chi_j(r) e^{-\beta (r - B_center)^2} \frac{\erf(\mu |r - R_C|)}{|r - R_C|}$. + Needs: @@ -2000,6 +3569,63 @@ Subroutines / functions * :c:data:`nucl_coord` +.. c:function:: nai_pol_mult_erf_v: + + + File : :file:`ao_one_e_ints/pot_ao_erf_ints.irp.f` + + .. code:: fortran + + subroutine NAI_pol_mult_erf_v(A_center, B_center, power_A, power_B, alpha, beta, C_center, LD_C, n_pt_in, mu_in, res_v, LD_resv, n_points) + + + + 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_with1s_v: + + + File : :file:`ao_one_e_ints/pot_ao_erf_ints.irp.f` + + .. code:: fortran + + subroutine NAI_pol_mult_erf_with1s_v(A1_center, A2_center, power_A1, power_A2, alpha1, alpha2, beta, B_center, LD_B, C_center, LD_C, n_pt_in, mu_in, res_v, LD_resv, n_points) + + + + Computes the following integral : + + .. math :: + + \int dx (x - A1_x)^a_1 (x - B1_x)^a_2 \exp(-\alpha_1 (x - A1_x)^2 - \alpha_2 (x - A2_x)^2) + \int dy (y - A1_y)^b_1 (y - B1_y)^b_2 \exp(-\alpha_1 (y - A1_y)^2 - \alpha_2 (y - A2_y)^2) + \int dz (x - A1_z)^c_1 (z - B1_z)^c_2 \exp(-\alpha_1 (z - A1_z)^2 - \alpha_2 (z - A2_z)^2) + \exp(-\beta (r - B)^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:: overlap_bourrin_deriv_x: @@ -2056,7 +3682,7 @@ Subroutines / functions 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 ] + 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^2 ] needed for the dipole and those things Called by: @@ -2103,19 +3729,38 @@ Subroutines / functions $p_2 = x^{b_x} y^{b_y} z^{b_z} \exp(-\beta r^2)$ -.. c:function:: v_phi: +.. c:function:: v_n_e_cgtos: - File : :file:`ao_one_e_ints/pot_ao_ints.irp.f` + File : :file:`ao_one_e_ints/one_e_coul_integrals_cgtos.irp.f` + + .. code:: fortran + + complex*16 function V_n_e_cgtos(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_n_e_cosgtos: + + + File : :file:`ao_one_e_ints/one_e_Coul_integrals_cosgtos.irp.f` .. code:: fortran - double precision function V_phi(n,m) + complex*16 function V_n_e_cosgtos(a_x, a_y, a_z, b_x, b_y, b_z, alpha, beta) - Computes the angular $\phi$ part of the nuclear attraction integral: + 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)$ - $\int_{0}^{2 \pi} \cos(\phi)^n \sin(\phi)^m d\phi$. + $p_2 = x^{b_x} y^{b_y} z^{b_z} \exp(-\beta r^2)$ .. c:function:: v_r: @@ -2134,32 +3779,34 @@ Subroutines / functions -.. c:function:: v_theta: +.. c:function:: v_r_cgtos: - File : :file:`ao_one_e_ints/pot_ao_ints.irp.f` + File : :file:`ao_one_e_ints/one_e_coul_integrals_cgtos.irp.f` .. code:: fortran - double precision function V_theta(n,m) + complex*16 function V_r_cgtos(n, alpha) - Computes the angular $\theta$ part of the nuclear attraction integral: + Computes the radial part of the nuclear attraction integral: + + $\int_{0}^{\infty} r^n \exp(-\alpha r^2) dr$ - $\int_{0}^{\pi} \cos(\theta)^n \sin(\theta)^m d\theta$ -.. c:function:: wallis: +.. c:function:: v_r_cosgtos: - File : :file:`ao_one_e_ints/pot_ao_ints.irp.f` + File : :file:`ao_one_e_ints/one_e_Coul_integrals_cosgtos.irp.f` .. code:: fortran - double precision function Wallis(n) + complex*16 function V_r_cosgtos(n, alpha) - Wallis integral: + Computes the radial part of the nuclear attraction integral: + + $\int_{0}^{\infty} r^n \exp(-\alpha r^2) dr$ - $\int_{0}^{\pi} \cos(\theta)^n d\theta$. diff --git a/docs/source/modules/ao_two_e_ints.rst b/docs/source/modules/ao_two_e_ints.rst index bc3a0ebf9..bdbc776ad 100644 --- a/docs/source/modules/ao_two_e_ints.rst +++ b/docs/source/modules/ao_two_e_ints.rst @@ -33,15 +33,39 @@ EZFIO parameters Default: None +.. option:: io_ao_cholesky + + Read/Write |AO| Cholesky 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 +.. option:: ao_cholesky_threshold + + If | (ii|jj) | < `ao_cholesky_threshold` then (ii|jj) is zero + + Default: 1.e-12 + +.. option:: do_ao_cholesky + + Perform Cholesky decomposition of AO integrals - Compute integrals on the fly (very slow, only for debugging) + Default: True + +.. option:: io_ao_two_e_integrals_erf + + Read/Write |AO| erf integrals from/to disk [ Write | Read | None ] + + Default: None + +.. option:: use_only_lr + + If true, use only the long range part of the two-electron integrals instead of 1/r12 Default: False @@ -49,6 +73,63 @@ EZFIO parameters Providers --------- +.. c:var:: ao_2e_cgtos_schwartz + + + File : :file:`ao_two_e_ints/two_e_coul_integrals_cgtos.irp.f` + + .. code:: fortran + + double precision, allocatable :: ao_2e_cgtos_schwartz (ao_num,ao_num) + + + Needed to compute Schwartz inequalities + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_coef_cgtos_norm_ord_transp` + * :c:data:`ao_expo_cgtos_ord_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:`use_pw` + + + +.. c:var:: ao_2e_cosgtos_schwartz + + + File : :file:`ao_two_e_ints/two_e_Coul_integrals_cosgtos.irp.f` + + .. code:: fortran + + double precision, allocatable :: ao_2e_cosgtos_schwartz (ao_num,ao_num) + + + Needed to compute Schwartz inequalities + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_coef_norm_ord_transp_cosgtos` + * :c:data:`ao_expo_ord_transp_cosgtos` + * :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:var:: ao_integrals_cache @@ -70,6 +151,12 @@ Providers * :c:data:`ao_integrals_map` * :c:data:`ao_two_e_integrals_in_map` + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`cholesky_ao_num` .. c:var:: ao_integrals_cache_max @@ -99,6 +186,7 @@ Providers * :c:data:`ao_integrals_cache` * :c:data:`ao_integrals_cache_periodic` + * :c:data:`cholesky_ao_num` .. c:var:: ao_integrals_cache_min @@ -128,6 +216,7 @@ Providers * :c:data:`ao_integrals_cache` * :c:data:`ao_integrals_cache_periodic` + * :c:data:`cholesky_ao_num` .. c:var:: ao_integrals_cache_periodic @@ -153,582 +242,2418 @@ Providers -.. c:var:: ao_integrals_map +.. c:var:: ao_integrals_erf_cache - File : :file:`ao_two_e_ints/map_integrals.irp.f` + File : :file:`ao_two_e_ints/map_integrals_erf.irp.f` .. code:: fortran - type(map_type) :: ao_integrals_map + double precision, allocatable :: ao_integrals_erf_cache (0:64*64*64*64) - AO integrals + Cache of |AO| integrals for fast access Needs: .. hlist:: :columns: 3 - * :c:data:`ao_num` - - Needed by: - - .. 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:data:`ao_integrals_cache` - * :c:data:`ao_integrals_cache_periodic` - * :c:data:`ao_two_e_integrals_in_map` - * :c:data:`mo_two_e_integral_jj_from_ao` - * :c:data:`mo_two_e_integrals_in_map` - * :c:data:`mo_two_e_integrals_vv_from_ao` -.. c:var:: ao_two_e_integral_schwartz +.. c:var:: ao_integrals_erf_cache_max - File : :file:`ao_two_e_ints/two_e_integrals.irp.f` + File : :file:`ao_two_e_ints/map_integrals_erf.irp.f` .. code:: fortran - double precision, allocatable :: ao_two_e_integral_schwartz (ao_num,ao_num) + integer :: ao_integrals_erf_cache_min + integer :: ao_integrals_erf_cache_max - Needed to compute Schwartz inequalities + Min and max values of the AOs for which the integrals are in the cache 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_integrals_erf_cache` -.. c:var:: ao_two_e_integrals_in_map +.. c:var:: ao_integrals_erf_cache_min - File : :file:`ao_two_e_ints/two_e_integrals.irp.f` + File : :file:`ao_two_e_ints/map_integrals_erf.irp.f` .. code:: fortran - logical :: ao_two_e_integrals_in_map + integer :: ao_integrals_erf_cache_min + integer :: ao_integrals_erf_cache_max - Map of Atomic integrals - i(r1) j(r2) 1/r12 k(r1) l(r2) + Min and max values of the AOs for which the integrals are in the cache 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_integrals_cache_periodic` - * :c:data:`mo_two_e_integral_jj_from_ao` - * :c:data:`mo_two_e_integrals_in_map` - * :c:data:`mo_two_e_integrals_vv_from_ao` + * :c:data:`ao_integrals_erf_cache` -.. c:var:: gauleg_t2 +.. c:var:: ao_integrals_erf_map - File : :file:`ao_two_e_ints/gauss_legendre.irp.f` + File : :file:`ao_two_e_ints/map_integrals_erf.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) + type(map_type) :: ao_integrals_erf_map - t_w(i,1,k) = w(i) - t_w(i,2,k) = t(i) + |AO| integrals Needs: .. hlist:: :columns: 3 - * :c:data:`n_pt_max_integrals` + * :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:: gauleg_w +.. c:var:: ao_integrals_map - File : :file:`ao_two_e_ints/gauss_legendre.irp.f` + File : :file:`ao_two_e_ints/map_integrals.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) + type(map_type) :: ao_integrals_map - t_w(i,1,k) = w(i) - t_w(i,2,k) = t(i) + AO integrals 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 + * :c:data:`ao_num` - Calls: + Needed by: .. hlist:: :columns: 3 - * :c:func:`add_poly_multiply` - * :c:func:`give_polynom_mult_center_x` - * :c:func:`multiply_poly` + * :c:data:`ao_integrals_cache` + * :c:data:`ao_integrals_cache_periodic` + * :c:data:`ao_two_e_integral_alpha` + * :c:data:`ao_two_e_integrals_in_map` + * :c:data:`cholesky_ao_num` -.. c:function:: i_x1_new: +.. c:var:: ao_two_e_integral_erf_schwartz - File : :file:`ao_two_e_ints/two_e_integrals.irp.f` + File : :file:`ao_two_e_ints/providers_ao_erf.irp.f` .. code:: fortran - recursive subroutine I_x1_new(a,c,B_10,B_01,B_00,res,n_pt) + double precision, allocatable :: ao_two_e_integral_erf_schwartz (ao_num,ao_num) - recursive function involved in the two-electron integral + 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:`mu_erf` * :c:data:`n_pt_max_integrals` + * :c:data:`nucl_coord` - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`i_x1_new` - * :c:func:`i_x2_new` - * :c:func:`integrale_new` - - Calls: + Needed by: .. hlist:: :columns: 3 - * :c:func:`i_x1_new` - * :c:func:`i_x2_new` + * :c:data:`mo_two_e_int_erf_jj_from_ao` -.. c:function:: i_x1_pol_mult_a1: +.. c:var:: ao_two_e_integral_schwartz 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) + double precision, allocatable :: ao_two_e_integral_schwartz (ao_num,ao_num) - Recursive function involved in the two-electron integral + Needed to compute Schwartz inequalities - Called by: + Needs: .. hlist:: :columns: 3 - * :c:func:`i_x1_pol_mult` - * :c:func:`i_x1_pol_mult_a2` - * :c:func:`i_x1_pol_mult_recurs` + * :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:`use_cgtos` + * :c:data:`use_only_lr` - Calls: + Needed by: .. hlist:: :columns: 3 - * :c:func:`i_x2_pol_mult` - * :c:func:`multiply_poly` + * :c:data:`ao_two_e_integral_alpha` + * :c:data:`cholesky_ao_num` -.. c:function:: i_x1_pol_mult_a2: +.. c:var:: ao_two_e_integrals_erf_in_map - File : :file:`ao_two_e_ints/two_e_integrals.irp.f` + File : :file:`ao_two_e_ints/providers_ao_erf.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) + logical :: ao_two_e_integrals_erf_in_map - Recursive function involved in the two-electron integral + Map of Atomic integrals + i(r1) j(r2) 1/r12 k(r1) l(r2) - Called by: + Needs: .. hlist:: :columns: 3 - * :c:func:`i_x1_pol_mult` - * :c:func:`i_x1_pol_mult_recurs` + * :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:`mu_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` - Calls: + Needed by: .. hlist:: :columns: 3 - * :c:func:`i_x1_pol_mult_a1` - * :c:func:`i_x2_pol_mult` - * :c:func:`multiply_poly` + * :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:: i_x1_pol_mult_recurs: +.. c:var:: ao_two_e_integrals_in_map 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) + logical :: ao_two_e_integrals_in_map - Recursive function involved in the two-electron integral + Map of Atomic integrals + i(r1) j(r2) 1/r12 k(r1) l(r2) - Called by: + Needs: .. hlist:: :columns: 3 - * :c:func:`i_x1_pol_mult` + * :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:`use_cgtos` + * :c:data:`use_only_lr` + * :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_integrals_cache_periodic` + * :c:data:`ao_two_e_integral_alpha` + * :c:data:`cholesky_ao_num` + * :c:data:`mo_two_e_integrals_erf_in_map` + * :c:data:`mo_two_e_integrals_in_map` + + +.. c:var:: cholesky_ao + + + File : :file:`ao_two_e_ints/cholesky.irp.f` + + .. code:: fortran + + integer :: cholesky_ao_num + double precision, allocatable :: cholesky_ao (ao_num,ao_num,1) + + + Cholesky vectors in AO basis: (ik|a): + = (ik|jl) = sum_a (ik|a).(a|jl) + + Last dimension of cholesky_ao is cholesky_ao_num + + https://mogp-emulator.readthedocs.io/en/latest/methods/proc/ProcPivotedCholesky.html + + https://doi.org/10.1016/j.apnum.2011.10.001 : Page 4, Algorithm 1 + + https://www.diva-portal.org/smash/get/diva2:396223/FULLTEXT01.pdf + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_cholesky_threshold` + * :c:data:`ao_coef_normalized_ordered_transp` + * :c:data:`ao_expo_ordered_transp` + * :c:data:`ao_integrals_cache` + * :c:data:`ao_integrals_cache_min` + * :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:`elec_num` + * :c:data:`ezfio_work_dir` + * :c:data:`is_periodic` + * :c:data:`n_pt_max_integrals` + * :c:data:`nproc` + * :c:data:`nucl_coord` + * :c:data:`qp_max_mem` + * :c:data:`read_ao_cholesky` + * :c:data:`read_ao_two_e_integrals` + * :c:data:`use_cgtos` + * :c:data:`use_only_lr` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_two_e_integral_alpha_chol` + * :c:data:`cholesky_ao_transp` + * :c:data:`cholesky_mo_num` + * :c:data:`cholesky_mo_transp` + + +.. c:var:: cholesky_ao_num + + + File : :file:`ao_two_e_ints/cholesky.irp.f` + + .. code:: fortran + + integer :: cholesky_ao_num + double precision, allocatable :: cholesky_ao (ao_num,ao_num,1) + + + Cholesky vectors in AO basis: (ik|a): + = (ik|jl) = sum_a (ik|a).(a|jl) + + Last dimension of cholesky_ao is cholesky_ao_num + + https://mogp-emulator.readthedocs.io/en/latest/methods/proc/ProcPivotedCholesky.html + + https://doi.org/10.1016/j.apnum.2011.10.001 : Page 4, Algorithm 1 + + https://www.diva-portal.org/smash/get/diva2:396223/FULLTEXT01.pdf + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_cholesky_threshold` + * :c:data:`ao_coef_normalized_ordered_transp` + * :c:data:`ao_expo_ordered_transp` + * :c:data:`ao_integrals_cache` + * :c:data:`ao_integrals_cache_min` + * :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:`elec_num` + * :c:data:`ezfio_work_dir` + * :c:data:`is_periodic` + * :c:data:`n_pt_max_integrals` + * :c:data:`nproc` + * :c:data:`nucl_coord` + * :c:data:`qp_max_mem` + * :c:data:`read_ao_cholesky` + * :c:data:`read_ao_two_e_integrals` + * :c:data:`use_cgtos` + * :c:data:`use_only_lr` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_two_e_integral_alpha_chol` + * :c:data:`cholesky_ao_transp` + * :c:data:`cholesky_mo_num` + * :c:data:`cholesky_mo_transp` + + +.. c:var:: cholesky_ao_transp + + + File : :file:`ao_two_e_ints/cholesky.irp.f` + + .. code:: fortran + + double precision, allocatable :: cholesky_ao_transp (cholesky_ao_num,ao_num,ao_num) + + + Transposed of the Cholesky vectors in AO basis set + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`cholesky_ao_num` + + + +.. c:var:: do_direct_integrals + + + File : :file:`ao_two_e_ints/direct.irp.f` + + .. code:: fortran + + logical :: do_direct_integrals + + + Compute integrals on the fly + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`do_ao_cholesky` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_two_e_integral_alpha` + * :c:data:`cholesky_ao_num` + * :c:data:`mo_two_e_int_erf_jj_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:function:: general_primitive_integral_cgtos: + + + File : :file:`ao_two_e_ints/two_e_coul_integrals_cgtos.irp.f` + + .. code:: fortran + + complex*16 function general_primitive_integral_cgtos(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 cos-cGTOS primitives + + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`add_cpoly_multiply` + * :c:func:`give_cpolynom_mult_center_x` + * :c:func:`multiply_cpoly` + + +.. c:function:: general_primitive_integral_cosgtos: + + + File : :file:`ao_two_e_ints/two_e_Coul_integrals_cosgtos.irp.f` + + .. code:: fortran + + complex*16 function general_primitive_integral_cosgtos( 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 cos-cGTOS primitives + + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`add_cpoly_multiply` + * :c:func:`give_cpolynom_mult_center_x` + * :c:func:`multiply_cpoly` + + +.. c:function:: general_primitive_integral_erf: + + + File : :file:`ao_two_e_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` + + +.. c:function:: give_cpolynom_mult_center_x: + + + File : :file:`ao_two_e_ints/two_e_coul_integrals_cgtos.irp.f` + + .. code:: fortran + + subroutine give_cpolynom_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 polynoms : + + $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_cgtos` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`i_x1_pol_mult_cgtos` + + +.. 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_new_cgtos: + + + File : :file:`ao_two_e_ints/two_e_coul_integrals_cgtos.irp.f` + + .. code:: fortran + + recursive subroutine I_x1_new_cgtos(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_cgtos` + * :c:func:`i_x2_new_cgtos` + * :c:func:`integrale_new_cgtos` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`i_x1_new_cgtos` + * :c:func:`i_x2_new_cgtos` + + +.. c:function:: i_x1_new_cosgtos: + + + File : :file:`ao_two_e_ints/two_e_Coul_integrals_cosgtos.irp.f` + + .. code:: fortran + + recursive subroutine I_x1_new_cosgtos(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_cosgtos` + * :c:func:`i_x2_new_cosgtos` + * :c:func:`integrale_new_cosgtos` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`i_x1_new_cosgtos` + * :c:func:`i_x2_new_cosgtos` + + +.. 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:function:: i_x1_pol_mult_a1_cgtos: + + + File : :file:`ao_two_e_ints/two_e_coul_integrals_cgtos.irp.f` + + .. code:: fortran + + recursive subroutine I_x1_pol_mult_a1_cgtos(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_a2_cgtos` + * :c:func:`i_x1_pol_mult_cgtos` + * :c:func:`i_x1_pol_mult_recurs_cgtos` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`i_x2_pol_mult_cgtos` + * :c:func:`multiply_cpoly` + + +.. c:function:: i_x1_pol_mult_a1_cosgtos: + + + File : :file:`ao_two_e_ints/two_e_Coul_integrals_cosgtos.irp.f` + + .. code:: fortran + + recursive subroutine I_x1_pol_mult_a1_cosgtos(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_a2_cosgtos` + * :c:func:`i_x1_pol_mult_cosgtos` + * :c:func:`i_x1_pol_mult_recurs_cosgtos` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`i_x2_pol_mult_cosgtos` + * :c:func:`multiply_cpoly` + + +.. 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:function:: i_x1_pol_mult_a2_cgtos: + + + File : :file:`ao_two_e_ints/two_e_coul_integrals_cgtos.irp.f` + + .. code:: fortran + + recursive subroutine I_x1_pol_mult_a2_cgtos(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_cgtos` + * :c:func:`i_x1_pol_mult_recurs_cgtos` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`i_x1_pol_mult_a1_cgtos` + * :c:func:`i_x2_pol_mult_cgtos` + * :c:func:`multiply_cpoly` + + +.. c:function:: i_x1_pol_mult_a2_cosgtos: + + + File : :file:`ao_two_e_ints/two_e_Coul_integrals_cosgtos.irp.f` + + .. code:: fortran + + recursive subroutine I_x1_pol_mult_a2_cosgtos(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_cosgtos` + * :c:func:`i_x1_pol_mult_recurs_cosgtos` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`i_x1_pol_mult_a1_cosgtos` + * :c:func:`i_x2_pol_mult_cosgtos` + * :c:func:`multiply_cpoly` + + +.. 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:function:: i_x1_pol_mult_recurs_cgtos: + + + File : :file:`ao_two_e_ints/two_e_coul_integrals_cgtos.irp.f` + + .. code:: fortran + + recursive subroutine I_x1_pol_mult_recurs_cgtos(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_cgtos` + * :c:func:`i_x1_pol_mult_recurs_cgtos` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`i_x1_pol_mult_a1_cgtos` + * :c:func:`i_x1_pol_mult_a2_cgtos` + * :c:func:`i_x1_pol_mult_recurs_cgtos` + * :c:func:`multiply_cpoly` + + +.. c:function:: i_x1_pol_mult_recurs_cosgtos: + + + File : :file:`ao_two_e_ints/two_e_Coul_integrals_cosgtos.irp.f` + + .. code:: fortran + + recursive subroutine I_x1_pol_mult_recurs_cosgtos(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_cosgtos` + * :c:func:`i_x1_pol_mult_recurs_cosgtos` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`i_x1_pol_mult_a1_cosgtos` + * :c:func:`i_x1_pol_mult_a2_cosgtos` + * :c:func:`i_x1_pol_mult_recurs_cosgtos` + * :c:func:`multiply_cpoly` + + +.. 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_new_cgtos: + + + File : :file:`ao_two_e_ints/two_e_coul_integrals_cgtos.irp.f` + + .. code:: fortran + + recursive subroutine I_x2_new_cgtos(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_cgtos` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`i_x1_new_cgtos` + + +.. c:function:: i_x2_new_cosgtos: + + + File : :file:`ao_two_e_ints/two_e_Coul_integrals_cosgtos.irp.f` + + .. code:: fortran + + recursive subroutine I_x2_new_cosgtos(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_cosgtos` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`i_x1_new_cosgtos` + + +.. 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:function:: i_x2_pol_mult_cgtos: + + + File : :file:`ao_two_e_ints/two_e_coul_integrals_cgtos.irp.f` + + .. code:: fortran + + recursive subroutine I_x2_pol_mult_cgtos(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_a1_cgtos` + * :c:func:`i_x1_pol_mult_a2_cgtos` + * :c:func:`i_x1_pol_mult_cgtos` + * :c:func:`i_x2_pol_mult_cgtos` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`i_x2_pol_mult_cgtos` + * :c:func:`multiply_cpoly` + + +.. c:function:: i_x2_pol_mult_cosgtos: + + + File : :file:`ao_two_e_ints/two_e_Coul_integrals_cosgtos.irp.f` + + .. code:: fortran + + recursive subroutine I_x2_pol_mult_cosgtos(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_a1_cosgtos` + * :c:func:`i_x1_pol_mult_a2_cosgtos` + * :c:func:`i_x1_pol_mult_cosgtos` + * :c:func:`i_x2_pol_mult_cosgtos` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`i_x2_pol_mult_cosgtos` + * :c:func:`multiply_cpoly` + + + +Subroutines / functions +----------------------- + +.. c:function:: ao_2e_cgtos_schwartz_accel: + + + File : :file:`ao_two_e_ints/two_e_coul_integrals_cgtos.irp.f` + + .. code:: fortran + + double precision function ao_2e_cgtos_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:`ao_coef_cgtos_norm_ord_transp` + * :c:data:`ao_expo_cgtos_ord_transp` + * :c:data:`ao_integrals_threshold` + * :c:data:`ao_nucl` + * :c:data:`ao_power` + * :c:data:`ao_prim_num` + * :c:data:`n_pt_max_integrals` + * :c:data:`nucl_coord` + * :c:data:`use_pw` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`give_explicit_cpoly_and_cgaussian` + + +.. c:function:: ao_2e_cosgtos_schwartz_accel: + + + File : :file:`ao_two_e_ints/two_e_Coul_integrals_cosgtos.irp.f` + + .. code:: fortran + + double precision function ao_2e_cosgtos_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:`ao_coef_norm_ord_transp_cosgtos` + * :c:data:`ao_expo_ord_transp_cosgtos` + * :c:data:`ao_integrals_threshold` + * :c:data:`ao_nucl` + * :c:data:`ao_power` + * :c:data:`ao_prim_num` + * :c:data:`n_pt_max_integrals` + * :c:data:`nucl_coord` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`give_explicit_cpoly_and_cgaussian` + + +.. c:function:: ao_idx2_sq: + + + File : :file:`ao_two_e_ints/map_integrals.irp.f` + + .. code:: fortran + + subroutine ao_idx2_sq(i,j,ij) + + + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`two_e_integrals_index_2fold` + + +.. c:function:: ao_idx2_sq_rev: + + + File : :file:`ao_two_e_ints/map_integrals.irp.f` + + .. code:: fortran + + subroutine ao_idx2_sq_rev(i,k,ik) + + + reverse square compound index + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`two_e_integrals_index_reverse_2fold` + + +.. c:function:: ao_idx2_tri_key: + + + File : :file:`ao_two_e_ints/map_integrals.irp.f` + + .. code:: fortran + + subroutine ao_idx2_tri_key(i,j,ij) + + + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`two_e_integrals_index_2fold` + + +.. c:function:: ao_idx2_tri_rev_key: + + + File : :file:`ao_two_e_ints/map_integrals.irp.f` + + .. code:: fortran + + subroutine ao_idx2_tri_rev_key(i,k,ik) + + + return i<=k + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`two_e_integrals_index_reverse_2fold` + + +.. 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:`ao_coef_normalized_ordered_transp` + * :c:data:`ao_expo_ordered_transp` + * :c:data:`ao_nucl` + * :c:data:`ao_power` + * :c:data:`ao_prim_num` + * :c:data:`n_pt_max_integrals` + * :c:data:`nucl_coord` + * :c:data:`use_cgtos` + * :c:data:`use_only_lr` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`give_explicit_poly_and_gaussian` + + +.. c:function:: ao_two_e_integral_cgtos: + + + File : :file:`ao_two_e_ints/two_e_coul_integrals_cgtos.irp.f` + + .. code:: fortran + + double precision function ao_two_e_integral_cgtos(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:`ao_coef_cgtos_norm_ord_transp` + * :c:data:`ao_expo_cgtos_ord_transp` + * :c:data:`ao_nucl` + * :c:data:`ao_power` + * :c:data:`ao_prim_num` + * :c:data:`n_pt_max_integrals` + * :c:data:`nucl_coord` + * :c:data:`use_pw` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`give_explicit_cpoly_and_cgaussian` + + +.. c:function:: ao_two_e_integral_cosgtos: + + + File : :file:`ao_two_e_ints/two_e_Coul_integrals_cosgtos.irp.f` + + .. code:: fortran + + double precision function ao_two_e_integral_cosgtos(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:`ao_coef_norm_ord_transp_cosgtos` + * :c:data:`ao_expo_ord_transp_cosgtos` + * :c:data:`ao_nucl` + * :c:data:`ao_power` + * :c:data:`ao_prim_num` + * :c:data:`n_pt_max_integrals` + * :c:data:`nucl_coord` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`give_explicit_cpoly_and_cgaussian` + + +.. c:function:: ao_two_e_integral_erf: + + + File : :file:`ao_two_e_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:`ao_coef_normalized_ordered_transp` + * :c:data:`ao_expo_ordered_transp` + * :c:data:`ao_nucl` + * :c:data:`ao_power` + * :c:data:`ao_prim_num` + * :c:data:`mu_erf` + * :c:data:`n_pt_max_integrals` + * :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:`ao_coef_normalized_ordered_transp` + * :c:data:`ao_expo_ordered_transp` + * :c:data:`ao_integrals_threshold` + * :c:data:`ao_nucl` + * :c:data:`ao_power` + * :c:data:`ao_prim_num` + * :c:data:`n_pt_max_integrals` + * :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_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:`ao_coef_normalized_ordered_transp` + * :c:data:`ao_expo_ordered_transp` + * :c:data:`ao_integrals_threshold` + * :c:data:`ao_nucl` + * :c:data:`ao_power` + * :c:data:`ao_prim_num` + * :c:data:`n_pt_max_integrals` + * :c:data:`nucl_coord` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`give_explicit_poly_and_gaussian` + + +.. c:function:: ao_two_e_integral_zero: + + + File : :file:`ao_two_e_ints/screening.irp.f` + + .. code:: fortran + + logical function ao_two_e_integral_zero(i,j,k,l) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_integrals_threshold` + * :c:data:`ao_overlap_abs` + * :c:data:`ao_two_e_integral_schwartz` + * :c:data:`is_periodic` + * :c:data:`read_ao_two_e_integrals` + * :c:data:`use_cgtos` + + +.. c:function:: ao_two_e_integrals_erf_in_map_collector: + + + File : :file:`ao_two_e_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_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_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_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:: 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:func:`sscanf_dd` + + +.. 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_erf_map: + + + File : :file:`ao_two_e_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:`i_x1_pol_mult_a1` - * :c:func:`i_x1_pol_mult_a2` - * :c:func:`i_x1_pol_mult_recurs` - * :c:func:`multiply_poly` + * :c:func:`map_deinit` -.. c:function:: i_x2_new: +.. 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_erf_jl: + + + File : :file:`ao_two_e_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_integrals_threshold` + * :c:data:`ao_num` + * :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_integrals_jl: 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) + subroutine compute_ao_integrals_jl(j,l,n_integrals,buffer_i,buffer_value) - recursive function involved in the two-electron integral + Parallel client for AO integrals Needs: .. hlist:: :columns: 3 - * :c:data:`n_pt_max_integrals` + * :c:data:`ao_integrals_threshold` + * :c:data:`ao_num` Called by: .. hlist:: :columns: 3 - * :c:func:`i_x1_new` + * :c:func:`ao_two_e_integrals_in_map_slave` Calls: .. hlist:: :columns: 3 - * :c:func:`i_x1_new` + * :c:func:`two_e_integrals_index` -.. c:function:: i_x2_pol_mult: +.. c:function:: compute_ao_two_e_integrals: 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) + subroutine compute_ao_two_e_integrals(j,k,l,sze,buffer_value) - Recursive function involved in the two-electron integral + Compute AO 1/r12 integrals for all i and fixed j,k,l + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + + +.. c:function:: compute_ao_two_e_integrals_erf: + + + File : :file:`ao_two_e_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_num` + * :c:data:`ao_two_e_integral_erf_schwartz` 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` + * :c:data:`mo_two_e_int_erf_jj_from_ao` + + +.. c:function:: do_schwartz_accel: + + + File : :file:`ao_two_e_ints/two_e_integrals.irp.f` + + .. code:: fortran + + logical function do_schwartz_accel(i,j,k,l) + + + If true, use Schwatrz to accelerate direct integral calculation + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_prim_num` + * :c:data:`do_ao_cholesky` + + +.. c:function:: dump_ao_integrals_erf: + + + File : :file:`ao_two_e_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:`i_x2_pol_mult` - * :c:func:`multiply_poly` + * :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` + -Subroutines / functions ------------------------ +.. c:function:: eri_cgtos: + + + File : :file:`ao_two_e_ints/two_e_coul_integrals_cgtos.irp.f` + + .. code:: fortran + + complex*16 function ERI_cgtos(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_cgtos` + -.. c:function:: ao_idx2_sq: +.. c:function:: eri_cosgtos: - File : :file:`ao_two_e_ints/map_integrals.irp.f` + File : :file:`ao_two_e_ints/two_e_Coul_integrals_cosgtos.irp.f` .. code:: fortran - subroutine ao_idx2_sq(i,j,ij) + complex*16 function ERI_cosgtos(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) - Called by: + Calls: .. hlist:: :columns: 3 - * :c:func:`two_e_integrals_index_2fold` + * :c:func:`integrale_new_cosgtos` -.. c:function:: ao_idx2_sq_rev: +.. c:function:: eri_erf: - File : :file:`ao_two_e_ints/map_integrals.irp.f` + File : :file:`ao_two_e_ints/two_e_integrals_erf.irp.f` .. code:: fortran - subroutine ao_idx2_sq_rev(i,k,ik) + 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) - reverse square compound index + 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)$ + - Called by: + Needs: .. hlist:: :columns: 3 - * :c:func:`two_e_integrals_index_reverse_2fold` + * :c:data:`mu_erf` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`integrale_new_erf` -.. c:function:: ao_idx2_tri_key: +.. c:function:: gauleg: - File : :file:`ao_two_e_ints/map_integrals.irp.f` + File : :file:`ao_two_e_ints/gauss_legendre.irp.f` .. code:: fortran - subroutine ao_idx2_tri_key(i,j,ij) + subroutine gauleg(x1,x2,x,w,n) + Gauss-Legendre Called by: .. hlist:: :columns: 3 - * :c:func:`two_e_integrals_index_2fold` + * :c:data:`gauleg_t2` + + +.. c:function:: get_ao_erf_map_size: + + + File : :file:`ao_two_e_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:: ao_idx2_tri_rev_key: +.. c:function:: get_ao_integ_chol: - File : :file:`ao_two_e_ints/map_integrals.irp.f` + File : :file:`ao_two_e_ints/cholesky.irp.f` .. code:: fortran - subroutine ao_idx2_tri_rev_key(i,k,ik) + double precision function get_ao_integ_chol(i,j,k,l) - return i<=k + CHOLESKY representation of the integral of the AO basis or (ij|kl) + i(r1) j(r1) 1/r12 k(r2) l(r2) - Called by: + Needs: .. hlist:: :columns: 3 - * :c:func:`two_e_integrals_index_reverse_2fold` + * :c:data:`cholesky_ao_num` + * :c:data:`cholesky_ao_transp` -.. c:function:: ao_l4: +.. c:function:: get_ao_map_size: - File : :file:`ao_two_e_ints/two_e_integrals.irp.f` + File : :file:`ao_two_e_ints/map_integrals.irp.f` .. code:: fortran - integer function ao_l4(i,j,k,l) + function get_ao_map_size() - Computes the product of l values of i,j,k,and l + Returns the number of elements in the AO map Needs: .. hlist:: :columns: 3 - * :c:data:`ao_l` + * :c:data:`ao_integrals_map` -.. c:function:: ao_two_e_integral: +.. c:function:: get_ao_two_e_integral: - File : :file:`ao_two_e_ints/two_e_integrals.irp.f` + File : :file:`ao_two_e_ints/map_integrals.irp.f` .. code:: fortran - double precision function ao_two_e_integral(i,j,k,l) + double precision function get_ao_two_e_integral(i, j, k, l, map) result(result) - integral of the AO basis or (ij|kl) - i(r1) j(r1) 1/r12 k(r2) l(r2) + Gets one AO bi-electronic integral from the AO map in PHYSICIST NOTATION + + <1:k, 2:l |1:i, 2: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_power` - * :c:data:`ao_prim_num` - * :c:data:`n_pt_max_integrals` - * :c:data:`nucl_coord` + * :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:`give_explicit_poly_and_gaussian` + * :c:func:`map_get` + * :c:func:`two_e_integrals_index` -.. c:function:: ao_two_e_integral_schwartz_accel: +.. c:function:: get_ao_two_e_integral_erf: - File : :file:`ao_two_e_ints/two_e_integrals.irp.f` + File : :file:`ao_two_e_ints/map_integrals_erf.irp.f` .. code:: fortran - double precision function ao_two_e_integral_schwartz_accel(i,j,k,l) + double precision function get_ao_two_e_integral_erf(i,j,k,l,map) result(result) - integral of the AO basis or (ij|kl) - i(r1) j(r1) 1/r12 k(r2) l(r2) + Gets one |AO| two-electron integral from the |AO| map Needs: .. hlist:: :columns: 3 - * :c:data:`ao_coef_normalized_ordered_transp` - * :c:data:`ao_expo_ordered_transp` + * :c:data:`ao_integrals_erf_cache` + * :c:data:`ao_integrals_erf_cache_min` * :c:data:`ao_integrals_threshold` - * :c:data:`ao_nucl` - * :c:data:`ao_power` - * :c:data:`ao_prim_num` - * :c:data:`n_pt_max_integrals` - * :c:data:`nucl_coord` + * :c:data:`ao_two_e_integral_erf_schwartz` + * :c:data:`ao_two_e_integrals_erf_in_map` Calls: .. hlist:: :columns: 3 - * :c:func:`give_explicit_poly_and_gaussian` + * :c:func:`map_get` + * :c:func:`two_e_integrals_index` -.. c:function:: ao_two_e_integral_zero: +.. c:function:: get_ao_two_e_integral_periodic: - File : :file:`ao_two_e_ints/screening.irp.f` + File : :file:`ao_two_e_ints/map_integrals.irp.f` .. code:: fortran - logical function ao_two_e_integral_zero(i,j,k,l) + complex*16 function get_ao_two_e_integral_periodic(i,j,k,l,map) result(result) + Gets one AO bi-electronic integral from the AO map Needs: .. hlist:: :columns: 3 - * :c:data:`ao_integrals_threshold` - * :c:data:`ao_overlap_abs` - * :c:data:`ao_two_e_integral_schwartz` - * :c:data:`is_periodic` - * :c:data:`read_ao_two_e_integrals` + * :c:data:`ao_integrals_cache_min` + * :c:data:`ao_integrals_cache_periodic` + * :c:data:`ao_integrals_map` + * :c:data:`ao_two_e_integrals_in_map` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`map_get` + * :c:func:`two_e_integrals_index_2fold` -.. c:function:: ao_two_e_integrals_in_map_collector: +.. c:function:: get_ao_two_e_integrals: - File : :file:`ao_two_e_ints/integrals_in_map_slave.irp.f` + File : :file:`ao_two_e_ints/map_integrals.irp.f` .. code:: fortran - subroutine ao_two_e_integrals_in_map_collector(zmq_socket_pull) + subroutine get_ao_two_e_integrals(j,k,l,sze,out_val) - Collects results from the AO integral calculation + Gets multiple AO bi-electronic integral from the AO map . + All i are retrieved for j,k,l fixed. + physicist convention : Needs: @@ -736,120 +2661,130 @@ Subroutines / functions :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: + Called by: .. hlist:: :columns: 3 - * :c:func:`end_zmq_to_qp_run_socket` - * :c:func:`insert_into_ao_integrals_map` + * :c:func:`add_integrals_to_map` + * :c:func:`four_idx_dgemm` -.. c:function:: ao_two_e_integrals_in_map_slave: +.. c:function:: get_ao_two_e_integrals_erf: - File : :file:`ao_two_e_ints/integrals_in_map_slave.irp.f` + File : :file:`ao_two_e_ints/map_integrals_erf.irp.f` .. code:: fortran - subroutine ao_two_e_integrals_in_map_slave(thread,iproc) + subroutine get_ao_two_e_integrals_erf(j,k,l,sze,out_val) - Computes a buffer of integrals + 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_num` + * :c:data:`ao_integrals_erf_map` + * :c:data:`ao_integrals_threshold` + * :c:data:`ao_two_e_integrals_erf_in_map` 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` + * :c:func:`add_integrals_to_map_erf` + * :c:func:`four_idx_dgemm_erf` - Calls: + +.. c:function:: get_ao_two_e_integrals_erf_non_zero: - .. 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` + File : :file:`ao_two_e_ints/map_integrals_erf.irp.f` - -.. c:function:: ao_two_e_integrals_in_map_slave_inproc: + .. code:: fortran + subroutine get_ao_two_e_integrals_erf_non_zero(j,k,l,sze,out_val,out_val_index,non_zero_int) - File : :file:`ao_two_e_ints/integrals_in_map_slave.irp.f` - .. code:: fortran + Gets multiple |AO| two-electron integrals from the |AO| map . + All non-zero i are retrieved for j,k,l fixed. - subroutine ao_two_e_integrals_in_map_slave_inproc(i) + Needs: + .. hlist:: + :columns: 3 - Computes a buffer of integrals. i is the ID of the current thread. + * :c:data:`ao_integrals_erf_map` + * :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:`ao_two_e_integrals_in_map` + * :c:data:`mo_two_e_int_erf_jj_from_ao` Calls: .. hlist:: :columns: 3 - * :c:func:`ao_two_e_integrals_in_map_slave` + * :c:func:`map_get` + * :c:func:`two_e_integrals_index` -.. c:function:: ao_two_e_integrals_in_map_slave_tcp: +.. c:function:: get_ao_two_e_integrals_non_zero: - File : :file:`ao_two_e_ints/integrals_in_map_slave.irp.f` + File : :file:`ao_two_e_ints/map_integrals.irp.f` .. code:: fortran - subroutine ao_two_e_integrals_in_map_slave_tcp(i) + subroutine get_ao_two_e_integrals_non_zero(j,k,l,sze,out_val,out_val_index,non_zero_int) - Computes a buffer of integrals. i is the ID of the current thread. + 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_integrals_threshold` + * :c:data:`ao_two_e_integrals_in_map` Calls: .. hlist:: :columns: 3 - * :c:func:`ao_two_e_integrals_in_map_slave` + * :c:func:`map_get` + * :c:func:`two_e_integrals_index` -.. c:function:: clear_ao_map: +.. c:function:: get_ao_two_e_integrals_non_zero_jl: File : :file:`ao_two_e_ints/map_integrals.irp.f` .. code:: fortran - subroutine clear_ao_map + subroutine get_ao_two_e_integrals_non_zero_jl(j,l,thresh,sze_max,sze,out_val,out_val_index,non_zero_int) - Frees the memory of the AO map + Gets multiple AO bi-electronic integral from the AO map . + All non-zero i are retrieved for j,k,l fixed. Needs: @@ -857,247 +2792,261 @@ Subroutines / functions :columns: 3 * :c:data:`ao_integrals_map` + * :c:data:`ao_two_e_integrals_in_map` Calls: .. hlist:: :columns: 3 - * :c:func:`map_deinit` + * :c:func:`map_get` + * :c:func:`two_e_integrals_index` -.. c:function:: compute_ao_integrals_jl: +.. c:function:: get_ao_two_e_integrals_non_zero_jl_from_list: - File : :file:`ao_two_e_ints/two_e_integrals.irp.f` + File : :file:`ao_two_e_ints/map_integrals.irp.f` .. code:: fortran - subroutine compute_ao_integrals_jl(j,l,n_integrals,buffer_i,buffer_value) + subroutine get_ao_two_e_integrals_non_zero_jl_from_list(j,l,thresh,list,n_list,sze_max,out_val,out_val_index,non_zero_int) - Parallel client for AO integrals + 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_threshold` - * :c:data:`ao_num` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`ao_two_e_integrals_in_map_slave` + * :c:data:`ao_integrals_map` + * :c:data:`ao_two_e_integrals_in_map` Calls: .. hlist:: :columns: 3 + * :c:func:`map_get` * :c:func:`two_e_integrals_index` -.. c:function:: compute_ao_two_e_integrals: +.. c:function:: get_ao_two_e_integrals_periodic: - File : :file:`ao_two_e_ints/two_e_integrals.irp.f` + File : :file:`ao_two_e_ints/map_integrals.irp.f` .. code:: fortran - subroutine compute_ao_two_e_integrals(j,k,l,sze,buffer_value) + subroutine get_ao_two_e_integrals_periodic(j,k,l,sze,out_val) - Compute AO 1/r12 integrals for all i and fixed j,k,l + Gets multiple AO bi-electronic integral from the AO map . + All i are retrieved for j,k,l fixed. + physicist convention : Needs: .. hlist:: :columns: 3 - * :c:data:`ao_num` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:data:`mo_two_e_integral_jj_from_ao` - * :c:data:`mo_two_e_integrals_vv_from_ao` + * :c:data:`ao_integrals_map` + * :c:data:`ao_two_e_integrals_in_map` -.. c:function:: eri: +.. c:function:: give_polynom_mult_center_x: 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) + 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) - 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) + 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:`integrale_new` + * :c:func:`i_x1_pol_mult` -.. c:function:: gauleg: +.. c:function:: i_x1_pol_mult: - File : :file:`ao_two_e_ints/gauss_legendre.irp.f` + File : :file:`ao_two_e_ints/two_e_integrals.irp.f` .. code:: fortran - subroutine gauleg(x1,x2,x,w,n) + subroutine I_x1_pol_mult(a,c,B_10,B_01,B_00,C_00,D_00,d,nd,n_pt_in) - Gauss-Legendre + Recursive function involved in the two-electron integral Called by: .. hlist:: :columns: 3 - * :c:data:`gauleg_t2` + * :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:: get_ao_map_size: +.. c:function:: i_x1_pol_mult_cgtos: - File : :file:`ao_two_e_ints/map_integrals.irp.f` + File : :file:`ao_two_e_ints/two_e_coul_integrals_cgtos.irp.f` .. code:: fortran - function get_ao_map_size() + subroutine I_x1_pol_mult_cgtos(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 - Returns the number of elements in the AO map + * :c:func:`give_cpolynom_mult_center_x` - Needs: + Calls: .. hlist:: :columns: 3 - * :c:data:`ao_integrals_map` + * :c:func:`i_x1_pol_mult_a1_cgtos` + * :c:func:`i_x1_pol_mult_a2_cgtos` + * :c:func:`i_x1_pol_mult_recurs_cgtos` + * :c:func:`i_x2_pol_mult_cgtos` -.. c:function:: get_ao_two_e_integral: +.. c:function:: i_x1_pol_mult_cosgtos: - File : :file:`ao_two_e_ints/map_integrals.irp.f` + File : :file:`ao_two_e_ints/two_e_Coul_integrals_cosgtos.irp.f` .. code:: fortran - double precision function get_ao_two_e_integral(i,j,k,l,map) result(result) + subroutine I_x1_pol_mult_cosgtos(a, c, B_10, B_01, B_00, C_00, D_00, d, nd, n_pt_in) - Gets one AO bi-electronic integral from the AO map + Recursive function involved in the two-electron integral - Needs: + Called by: .. hlist:: :columns: 3 - * :c:data:`ao_integrals_cache` - * :c:data:`ao_integrals_cache_min` - * :c:data:`ao_two_e_integrals_in_map` + * :c:func:`give_cpolynom_mult_center_x` Calls: .. hlist:: :columns: 3 - * :c:func:`map_get` - * :c:func:`two_e_integrals_index` + * :c:func:`i_x1_pol_mult_a1_cosgtos` + * :c:func:`i_x1_pol_mult_a2_cosgtos` + * :c:func:`i_x1_pol_mult_recurs_cosgtos` + * :c:func:`i_x2_pol_mult_cosgtos` -.. c:function:: get_ao_two_e_integral_periodic: +.. c:function:: idx2_tri_int: File : :file:`ao_two_e_ints/map_integrals.irp.f` .. code:: fortran - complex*16 function get_ao_two_e_integral_periodic(i,j,k,l,map) result(result) + subroutine idx2_tri_int(i,j,ij) - Gets one AO bi-electronic integral from the AO map - Needs: + +.. c:function:: idx2_tri_rev_int: - .. hlist:: - :columns: 3 - * :c:data:`ao_integrals_cache_min` - * :c:data:`ao_integrals_cache_periodic` - * :c:data:`ao_integrals_map` - * :c:data:`ao_two_e_integrals_in_map` + File : :file:`ao_two_e_ints/map_integrals.irp.f` - Calls: + .. code:: fortran - .. hlist:: - :columns: 3 + subroutine idx2_tri_rev_int(i,k,ik) - * :c:func:`map_get` - * :c:func:`two_e_integrals_index_2fold` + + return i<=k -.. c:function:: get_ao_two_e_integrals: +.. c:function:: insert_into_ao_integrals_erf_map: - File : :file:`ao_two_e_ints/map_integrals.irp.f` + File : :file:`ao_two_e_ints/map_integrals_erf.irp.f` .. code:: fortran - subroutine get_ao_two_e_integrals(j,k,l,sze,out_val) + subroutine insert_into_ao_integrals_erf_map(n_integrals,buffer_i, buffer_values) - Gets multiple AO bi-electronic integral from the AO map . - All i are retrieved for j,k,l fixed. - physicist convention : + Create new entry into |AO| map Needs: .. hlist:: :columns: 3 - * :c:data:`ao_integrals_map` - * :c:data:`ao_two_e_integrals_in_map` + * :c:data:`ao_integrals_erf_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:func:`ao_two_e_integrals_erf_in_map_collector` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`map_append` -.. c:function:: get_ao_two_e_integrals_non_zero: +.. c:function:: insert_into_ao_integrals_map: 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) + subroutine insert_into_ao_integrals_map(n_integrals,buffer_i, buffer_values) - Gets multiple AO bi-electronic integral from the AO map . - All non-zero i are retrieved for j,k,l fixed. + Create new entry into AO map Needs: @@ -1105,300 +3054,328 @@ Subroutines / functions :columns: 3 * :c:data:`ao_integrals_map` - * :c:data:`ao_integrals_threshold` - * :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` + * :c:func:`ao_two_e_integrals_in_map_collector` Calls: .. hlist:: :columns: 3 - * :c:func:`map_get` - * :c:func:`two_e_integrals_index` + * :c:func:`map_append` -.. c:function:: get_ao_two_e_integrals_non_zero_jl: +.. c:function:: integrale_new: - File : :file:`ao_two_e_ints/map_integrals.irp.f` + File : :file:`ao_two_e_ints/two_e_integrals.irp.f` .. code:: fortran - subroutine get_ao_two_e_integrals_non_zero_jl(j,l,thresh,sze_max,sze,out_val,out_val_index,non_zero_int) + 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) - Gets multiple AO bi-electronic integral from the AO map . - All non-zero i are retrieved for j,k,l fixed. + 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:`ao_integrals_map` - * :c:data:`ao_two_e_integrals_in_map` + * :c:data:`gauleg_t2` + * :c:data:`n_pt_max_integrals` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`eri` Calls: .. hlist:: :columns: 3 - * :c:func:`map_get` - * :c:func:`two_e_integrals_index` + * :c:func:`i_x1_new` -.. c:function:: get_ao_two_e_integrals_non_zero_jl_from_list: +.. c:function:: integrale_new_cgtos: - File : :file:`ao_two_e_ints/map_integrals.irp.f` + File : :file:`ao_two_e_ints/two_e_coul_integrals_cgtos.irp.f` .. code:: fortran - subroutine get_ao_two_e_integrals_non_zero_jl_from_list(j,l,thresh,list,n_list,sze_max,out_val,out_val_index,non_zero_int) + subroutine integrale_new_cgtos(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) - Gets multiple AO two-electron integrals from the AO map . - All non-zero i are retrieved for j,k,l fixed. + 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:`ao_integrals_map` - * :c:data:`ao_two_e_integrals_in_map` + * :c:data:`gauleg_t2` + * :c:data:`n_pt_max_integrals` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`eri_cgtos` Calls: .. hlist:: :columns: 3 - * :c:func:`map_get` - * :c:func:`two_e_integrals_index` + * :c:func:`i_x1_new_cgtos` -.. c:function:: get_ao_two_e_integrals_periodic: +.. c:function:: integrale_new_cosgtos: - File : :file:`ao_two_e_ints/map_integrals.irp.f` + File : :file:`ao_two_e_ints/two_e_Coul_integrals_cosgtos.irp.f` .. code:: fortran - subroutine get_ao_two_e_integrals_periodic(j,k,l,sze,out_val) + subroutine integrale_new_cosgtos(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) - Gets multiple AO bi-electronic integral from the AO map . - All i are retrieved for j,k,l fixed. - physicist convention : + 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:`ao_integrals_map` - * :c:data:`ao_two_e_integrals_in_map` + * :c:data:`gauleg_t2` + * :c:data:`n_pt_max_integrals` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`eri_cosgtos` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`i_x1_new_cosgtos` -.. c:function:: give_polynom_mult_center_x: +.. c:function:: integrale_new_erf: - File : :file:`ao_two_e_ints/two_e_integrals.irp.f` + File : :file:`ao_two_e_ints/two_e_integrals_erf.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 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) - subroutine that returns the explicit polynom in term of the "t" - variable of the following polynomw : + Calculate the integral of the polynomial : - $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)$ + $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:`gauleg_t2` + * :c:data:`mu_erf` + * :c:data:`n_pt_max_integrals` Called by: .. hlist:: :columns: 3 - * :c:func:`general_primitive_integral` + * :c:func:`eri_erf` Calls: .. hlist:: :columns: 3 - * :c:func:`i_x1_pol_mult` + * :c:func:`i_x1_new` -.. c:function:: i_x1_pol_mult: +.. c:function:: load_ao_integrals_erf: - File : :file:`ao_two_e_ints/two_e_integrals.irp.f` + File : :file:`ao_two_e_ints/map_integrals_erf.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) + integer function load_ao_integrals_erf(filename) - Recursive function involved in the two-electron integral + Read from disk the |AO| erf integrals - Called by: + Needs: .. hlist:: :columns: 3 - * :c:func:`give_polynom_mult_center_x` + * :c:data:`ao_integrals_erf_map` 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:func:`cache_map_reallocate` + * :c:func:`map_deinit` + * :c:func:`map_sort` -.. c:function:: idx2_tri_int: +.. c:function:: multiply_poly_c2_inline_2e: - File : :file:`ao_two_e_ints/map_integrals.irp.f` + File : :file:`ao_two_e_ints/two_e_integrals.irp.f` .. code:: fortran - subroutine idx2_tri_int(i,j,ij) + subroutine multiply_poly_c2_inline_2e(b,nb,c,d,nd) + Multiply two polynomials + D(t) =! D(t) +( B(t)*C(t)) -.. c:function:: idx2_tri_rev_int: +.. c:function:: multiply_poly_local: - File : :file:`ao_two_e_ints/map_integrals.irp.f` + File : :file:`ao_two_e_ints/two_e_integrals.irp.f` .. code:: fortran - subroutine idx2_tri_rev_int(i,k,ik) + subroutine multiply_poly_local(b,nb,c,nc,d,nd) - return i<=k + Multiply two polynomials + D(t) =! D(t) +( B(t)*C(t)) -.. c:function:: insert_into_ao_integrals_map: +.. c:function:: n_pt_sup: - File : :file:`ao_two_e_ints/map_integrals.irp.f` + File : :file:`ao_two_e_ints/two_e_integrals.irp.f` .. code:: fortran - subroutine insert_into_ao_integrals_map(n_integrals,buffer_i, buffer_values) + 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) - Create new entry into AO map + 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)$ - Needs: + +.. c:function:: push_integrals: - .. hlist:: - :columns: 3 - * :c:data:`ao_integrals_map` + File : :file:`ao_two_e_ints/integrals_in_map_slave.irp.f` - Called by: + .. code:: fortran - .. hlist:: - :columns: 3 + subroutine push_integrals(zmq_socket_push, n_integrals, buffer_i, buffer_value, task_id) - * :c:func:`ao_two_e_integrals_in_map_collector` - Calls: + Push integrals in the push socket + + Called by: .. hlist:: :columns: 3 - * :c:func:`map_append` + * :c:func:`ao_two_e_integrals_erf_in_map_slave` + * :c:func:`ao_two_e_integrals_in_map_slave` -.. c:function:: integrale_new: +.. c:function:: save_erf_two_e_integrals_ao: - File : :file:`ao_two_e_ints/two_e_integrals.irp.f` + File : :file:`ao_two_e_ints/routines_save_integrals_erf.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) + subroutine save_erf_two_e_integrals_ao - 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:`gauleg_t2` - * :c:data:`n_pt_max_integrals` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`eri` + * :c:data:`ao_integrals_erf_map` + * :c:data:`ao_two_e_integrals_erf_in_map` + * :c:data:`ezfio_filename` Calls: .. hlist:: :columns: 3 - * :c:func:`i_x1_new` + * :c:func:`ezfio_set_ao_two_e_ints_io_ao_two_e_integrals_erf` + * :c:func:`ezfio_set_work_empty` + * :c:func:`map_save_to_disk` -.. c:function:: n_pt_sup: +.. c:function:: save_erf_two_e_ints_ao_into_ints_ao: - File : :file:`ao_two_e_ints/two_e_integrals.irp.f` + File : :file:`ao_two_e_ints/routines_save_integrals_erf.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: + subroutine save_erf_two_e_ints_ao_into_ints_ao - 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) + Needs: + .. hlist:: + :columns: 3 - Push integrals in the push socket + * :c:data:`ao_integrals_erf_map` + * :c:data:`ao_two_e_integrals_erf_in_map` + * :c:data:`ezfio_filename` - Called by: + Calls: .. hlist:: :columns: 3 - * :c:func:`ao_two_e_integrals_in_map_slave` + * :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` .. c:function:: two_e_integrals_index: @@ -1420,16 +3397,27 @@ Subroutines / functions :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:data:`banned_excitation` + * :c:func:`compute_ao_integrals_erf_jl` * :c:func:`compute_ao_integrals_jl` - * :c:func:`four_idx_novvvv` * :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_ao_two_e_integrals_non_zero_jl` * :c:func:`get_ao_two_e_integrals_non_zero_jl_from_list` + * :c:func:`get_mo_two_e_integral_erf` + * :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_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` @@ -1481,6 +3469,13 @@ Subroutines / functions This rule is applied 3 times. First for the symmetry of the pairs (i,k) and (j,l), and then for the symmetry within each pair. + Called by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_two_e_integral_alpha` + .. c:function:: two_e_integrals_index_reverse_2fold: diff --git a/docs/source/modules/becke_numerical_grid.rst b/docs/source/modules/becke_numerical_grid.rst index 27a958776..8ab7b867a 100644 --- a/docs/source/modules/becke_numerical_grid.rst +++ b/docs/source/modules/becke_numerical_grid.rst @@ -366,6 +366,7 @@ Providers * :c:data:`aos_vxc_alpha_lda_w` * :c:data:`aos_vxc_alpha_pbe_w` * :c:data:`aos_vxc_alpha_sr_pbe_w` + * :c:data:`average_on_top` * :c:data:`elec_beta_num_grid_becke` * :c:data:`energy_c_lda` * :c:data:`energy_c_sr_lda` @@ -424,6 +425,7 @@ Providers .. hlist:: :columns: 3 + * :c:data:`aos_grad_in_r_array_extra` * :c:data:`aos_in_r_array_extra` @@ -607,6 +609,7 @@ Providers * :c:data:`aos_vxc_alpha_lda_w` * :c:data:`aos_vxc_alpha_pbe_w` * :c:data:`aos_vxc_alpha_sr_pbe_w` + * :c:data:`average_on_top` * :c:data:`elec_beta_num_grid_becke` * :c:data:`energy_c_lda` * :c:data:`energy_c_sr_lda` @@ -665,6 +668,7 @@ Providers .. hlist:: :columns: 3 + * :c:data:`aos_grad_in_r_array_extra` * :c:data:`aos_in_r_array_extra` @@ -914,6 +918,7 @@ Providers * :c:data:`aos_vxc_alpha_lda_w` * :c:data:`aos_vxc_alpha_pbe_w` * :c:data:`aos_vxc_alpha_sr_pbe_w` + * :c:data:`average_on_top` * :c:data:`elec_beta_num_grid_becke` * :c:data:`energy_c_lda` * :c:data:`energy_c_sr_lda` @@ -972,6 +977,7 @@ Providers .. hlist:: :columns: 3 + * :c:data:`aos_grad_in_r_array_extra` * :c:data:`aos_in_r_array_extra` @@ -1013,6 +1019,7 @@ Providers .. hlist:: :columns: 3 + * :c:data:`aos_grad_in_r_array_extra` * :c:data:`aos_in_r_array_extra` @@ -1126,6 +1133,7 @@ Providers * :c:data:`aos_vxc_alpha_lda_w` * :c:data:`aos_vxc_alpha_pbe_w` * :c:data:`aos_vxc_alpha_sr_pbe_w` + * :c:data:`average_on_top` * :c:data:`elec_beta_num_grid_becke` * :c:data:`energy_c_lda` * :c:data:`energy_c_sr_lda` @@ -1196,6 +1204,7 @@ Providers .. hlist:: :columns: 3 + * :c:data:`aos_grad_in_r_array_extra` * :c:data:`aos_in_r_array_extra` * :c:data:`aos_in_r_array_extra_transp` * :c:data:`final_grid_points_extra` @@ -1356,6 +1365,7 @@ Providers * :c:data:`aos_vxc_alpha_lda_w` * :c:data:`aos_vxc_alpha_pbe_w` * :c:data:`aos_vxc_alpha_sr_pbe_w` + * :c:data:`average_on_top` * :c:data:`basis_mos_in_r_array` * :c:data:`core_density` * :c:data:`core_inact_act_mos_grad_in_r_array` @@ -1371,6 +1381,9 @@ Providers * :c:data:`energy_x_pbe` * :c:data:`energy_x_sr_lda` * :c:data:`energy_x_sr_pbe` + * :c:data:`f_hf_cholesky` + * :c:data:`f_hf_cholesky_sparse` + * :c:data:`f_hf_cholesky_sparse_bis` * :c:data:`f_psi_cas_ab` * :c:data:`f_psi_cas_ab_old` * :c:data:`f_psi_hf_ab` @@ -1393,14 +1406,19 @@ Providers * :c:data:`mos_in_r_array_transp` * :c:data:`mos_lapl_in_r_array` * :c:data:`mos_lapl_in_r_array_tranp` + * :c:data:`mos_times_cholesky_r1` + * :c:data:`mos_times_cholesky_r2` * :c:data:`mu_average_prov` * :c:data:`mu_grad_rho` * :c:data:`mu_of_r_dft` * :c:data:`mu_of_r_dft_average` * :c:data:`mu_of_r_hf` + * :c:data:`mu_of_r_hf_old` + * :c:data:`mu_of_r_hf_sparse` * :c:data:`mu_of_r_prov` * :c:data:`mu_of_r_psi_cas` * :c:data:`mu_rsc_of_r` + * :c:data:`on_top_hf_grid` * :c:data:`one_e_act_density_alpha` * :c:data:`one_e_act_density_beta` * :c:data:`one_e_cas_total_density` diff --git a/docs/source/modules/bitmask.rst b/docs/source/modules/bitmask.rst index f07d5dd9c..494a4be64 100644 --- a/docs/source/modules/bitmask.rst +++ b/docs/source/modules/bitmask.rst @@ -35,6 +35,42 @@ For an example of how to use the bitmaks, see the file :file:`example.irp.f`. +EZFIO parameters +---------------- + +.. option:: n_act_orb + + Number of active |MOs| + + +.. option:: do_ormas + + if |true| restrict selection based on ORMAS rules + + Default: false + +.. option:: ormas_n_space + + Number of active spaces + + Default: 1 + +.. option:: ormas_mstart + + starting orb for each ORMAS space + + +.. option:: ormas_min_e + + min number of electrons in each ORMAS space + + +.. option:: ormas_max_e + + max number of electrons in each ORMAS space + + + Providers --------- @@ -45,103 +81,18 @@ Providers .. 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:`list_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_act_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) + Bitmask identifying the active MOs 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:`list_act` + * :c:data:`n_act_orb` * :c:data:`n_int` Needed by: @@ -150,8 +101,13 @@ Providers :columns: 3 * :c:data:`closed_shell_ref_bitmask` + * :c:data:`n_det_generators` * :c:data:`psi_cas` + * :c:data:`psi_det_generators` + * :c:data:`reunion_of_act_virt_bitmask` * :c:data:`reunion_of_bitmask` + * :c:data:`reunion_of_core_inact_act_bitmask` + * :c:data:`reunion_of_inact_act_bitmask` .. c:var:: closed_shell_ref_bitmask @@ -170,7 +126,7 @@ Providers .. hlist:: :columns: 3 - * :c:data:`cas_bitmask` + * :c:data:`act_bitmask` * :c:data:`n_int` * :c:data:`ref_bitmask` @@ -183,53 +139,17 @@ Providers .. 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 + Bitmask identifying the core MOs Needs: .. hlist:: :columns: 3 - * :c:data:`dim_list_core_orb` - * :c:data:`mo_class` - * :c:data:`mo_num` + * :c:data:`list_core` * :c:data:`n_core_orb` * :c:data:`n_int` @@ -238,22 +158,8 @@ Providers .. 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:`list_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_act_bitmask` * :c:data:`reunion_of_core_inact_bitmask` - * :c:data:`virt_bitmask_4` .. c:var:: core_inact_act_bitmask_4 @@ -275,12 +181,6 @@ Providers * :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 @@ -301,8 +201,10 @@ Providers .. hlist:: :columns: 3 - * :c:data:`list_inact` + * :c:data:`core_bitmask` + * :c:data:`inact_bitmask` * :c:data:`n_int` + * :c:data:`virt_bitmask` @@ -313,94 +215,61 @@ Providers .. 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 + Bitmask identifying the deleted MOs 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:`list_del` + * :c:data:`n_del_orb` * :c:data:`n_int` + + +.. c:var:: dim_list_act_orb + + + File : :file:`bitmask/core_inact_act_virt.irp.f` + + .. code:: fortran + + integer :: dim_list_act_orb + + + dimensions for the allocation of list_act. + it is at least 1 + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_act_orb` + 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:`list_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_act_bitmask` - * :c:data:`reunion_of_core_inact_bitmask` - * :c:data:`virt_bitmask_4` + * :c:data:`list_act` -.. c:var:: dim_list_act_orb +.. c:var:: dim_list_core_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 + integer :: dim_list_core_inact_orb - dimensions for the allocation of list_inact, list_virt, list_core and list_act + dimensions for the allocation of list_core. it is at least 1 Needs: @@ -408,14 +277,14 @@ Providers .. hlist:: :columns: 3 - * :c:data:`n_core_orb` + * :c:data:`n_core_inact_orb` Needed by: .. hlist:: :columns: 3 - * :c:data:`list_inact` + * :c:data:`list_core_inact` .. c:var:: dim_list_core_orb @@ -426,13 +295,9 @@ Providers .. 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 + dimensions for the allocation of list_core. it is at least 1 Needs: @@ -447,7 +312,7 @@ Providers .. hlist:: :columns: 3 - * :c:data:`list_inact` + * :c:data:`list_core` .. c:var:: dim_list_del_orb @@ -457,14 +322,10 @@ Providers .. 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 + dimensions for the allocation of list_del. it is at least 1 Needs: @@ -472,14 +333,14 @@ Providers .. hlist:: :columns: 3 - * :c:data:`n_core_orb` + * :c:data:`n_del_orb` Needed by: .. hlist:: :columns: 3 - * :c:data:`list_inact` + * :c:data:`list_del` .. c:var:: dim_list_inact_orb @@ -489,14 +350,10 @@ Providers .. 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 + dimensions for the allocation of list_inact. it is at least 1 Needs: @@ -504,7 +361,7 @@ Providers .. hlist:: :columns: 3 - * :c:data:`n_core_orb` + * :c:data:`n_inact_orb` Needed by: @@ -521,14 +378,10 @@ Providers .. 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 + dimensions for the allocation of list_virt. it is at least 1 Needs: @@ -536,14 +389,14 @@ Providers .. hlist:: :columns: 3 - * :c:data:`n_core_orb` + * :c:data:`n_virt_orb` Needed by: .. hlist:: :columns: 3 - * :c:data:`list_inact` + * :c:data:`list_virt` .. c:var:: full_ijkl_bitmask @@ -563,7 +416,6 @@ Providers .. hlist:: :columns: 3 - * :c:data:`mo_class` * :c:data:`mo_num` * :c:data:`n_int` @@ -572,12 +424,10 @@ Providers .. 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 @@ -615,7 +465,7 @@ Providers .. code:: fortran - integer(bit_kind), allocatable :: generators_bitmask (N_int,2,6,N_generators_bitmask) + integer(bit_kind), allocatable :: generators_bitmask (N_int,2,6) Bitmasks for generator determinants. @@ -643,50 +493,31 @@ Providers * :c:data:`ezfio_filename` * :c:data:`full_ijkl_bitmask` - * :c:data:`mpi_master` - * :c:data:`n_generators_bitmask` * :c:data:`n_int` + * :c:data:`reunion_of_act_virt_bitmask` + * :c:data:`reunion_of_inact_act_bitmask` -.. c:var:: generators_bitmask_restart +.. c:var:: hf_bitmask File : :file:`bitmask/bitmasks.irp.f` .. code:: fortran - integer(bit_kind), allocatable :: generators_bitmask_restart (N_int,2,6,N_generators_bitmask_restart) + integer(bit_kind), allocatable :: hf_bitmask (N_int,2) - 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 - + Hartree Fock bit mask 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:`elec_alpha_num` + * :c:data:`elec_beta_num` * :c:data:`n_int` Needed by: @@ -694,28 +525,34 @@ Providers .. hlist:: :columns: 3 - * :c:data:`cas_bitmask` + * :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:: hf_bitmask +.. c:var:: inact_bitmask - File : :file:`bitmask/bitmasks.irp.f` + File : :file:`bitmask/core_inact_act_virt.irp.f` .. code:: fortran - integer(bit_kind), allocatable :: hf_bitmask (N_int,2) + integer(bit_kind), allocatable :: inact_bitmask (N_int,2) - Hartree Fock bit mask + Bitmask identifying the inactive MOs Needs: .. hlist:: :columns: 3 - * :c:data:`elec_alpha_num` - * :c:data:`elec_beta_num` + * :c:data:`list_inact` + * :c:data:`n_inact_orb` * :c:data:`n_int` Needed by: @@ -723,112 +560,13 @@ Providers .. 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:data:`inact_virt_bitmask` + * :c:data:`reunion_of_bitmask` + * :c:data:`reunion_of_core_inact_bitmask` + * :c:data:`reunion_of_inact_act_bitmask` -.. 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:`list_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_act_bitmask` - * :c:data:`reunion_of_core_inact_bitmask` - * :c:data:`virt_bitmask_4` - - -.. c:var:: inact_virt_bitmask +.. c:var:: inact_virt_bitmask File : :file:`bitmask/bitmasks.irp.f` @@ -846,8 +584,10 @@ Providers .. hlist:: :columns: 3 - * :c:data:`list_inact` + * :c:data:`core_bitmask` + * :c:data:`inact_bitmask` * :c:data:`n_int` + * :c:data:`virt_bitmask` @@ -886,77 +626,74 @@ Providers .. 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 + List of MO indices which are in the active. Needs: .. hlist:: :columns: 3 - * :c:data:`dim_list_core_orb` + * :c:data:`dim_list_act_orb` * :c:data:`mo_class` * :c:data:`mo_num` - * :c:data:`n_core_orb` - * :c:data:`n_int` + * :c:data:`n_act_orb` Needed by: .. hlist:: :columns: 3 - * :c:data:`core_energy` - * :c:data:`core_energy_erf` + * :c:data:`act_2_rdm_aa_mo` + * :c:data:`act_2_rdm_ab_mo` + * :c:data:`act_2_rdm_bb_mo` + * :c:data:`act_2_rdm_spin_trace_mo` + * :c:data:`act_2_rdm_trans_spin_trace_mo` + * :c:data:`act_bitmask` + * :c:data:`bielec_pqxx_array` + * :c:data:`bielec_pqxx_no_array` + * :c:data:`bielec_pxxq_array` + * :c:data:`bielec_pxxq_no_array` + * :c:data:`bielecci` + * :c:data:`bielecci_no` + * :c:data:`cholesky_no_1_idx_transp` + * :c:data:`cholesky_no_2_idx_transp` + * :c:data:`cholesky_no_total_transp` * :c:data:`core_fock_operator` * :c:data:`core_fock_operator_erf` + * :c:data:`d0tu` + * :c:data:`d0tu_alpha_ao` * :c:data:`eigenvectors_fock_matrix_mo` + * :c:data:`etwo` + * :c:data:`excit` + * :c:data:`fapq` * :c:data:`fock_matrix_mo` - * :c:data:`inact_virt_bitmask` - * :c:data:`list_core_inact_act` - * :c:data:`list_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_act_bitmask` - * :c:data:`reunion_of_core_inact_bitmask` - * :c:data:`virt_bitmask_4` + * :c:data:`full_occ_2_rdm_aa_mo` + * :c:data:`full_occ_2_rdm_ab_mo` + * :c:data:`full_occ_2_rdm_bb_mo` + * :c:data:`full_occ_2_rdm_spin_trace_mo` + * :c:data:`gradvec2` + * :c:data:`hessdiag` + * :c:data:`hessmat` + * :c:data:`hessmat_peter` + * :c:data:`lowest_super_ci_coef_mo` + * :c:data:`mat_tmp_dm_super_ci` + * :c:data:`natorbsci_mos` + * :c:data:`occnum` + * :c:data:`one_ints_no` + * :c:data:`p0tuvx_peter` + * :c:data:`state_av_act_2_rdm_aa_mo` + * :c:data:`state_av_act_2_rdm_ab_mo` + * :c:data:`state_av_act_2_rdm_bb_mo` + * :c:data:`state_av_full_occ_2_rdm_aa_mo` + * :c:data:`state_av_full_occ_2_rdm_ab_mo` + * :c:data:`state_av_full_occ_2_rdm_bb_mo` + * :c:data:`state_av_full_occ_2_rdm_spin_trace_mo` + * :c:data:`super_ci_dm` + * :c:data:`umat` .. c:var:: list_act_reverse @@ -966,77 +703,96 @@ Providers .. 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 + List of MO indices which are in the active. Needs: .. hlist:: :columns: 3 - * :c:data:`dim_list_core_orb` + * :c:data:`dim_list_act_orb` * :c:data:`mo_class` * :c:data:`mo_num` - * :c:data:`n_core_orb` - * :c:data:`n_int` + * :c:data:`n_act_orb` Needed by: .. hlist:: :columns: 3 - * :c:data:`core_energy` - * :c:data:`core_energy_erf` + * :c:data:`act_2_rdm_aa_mo` + * :c:data:`act_2_rdm_ab_mo` + * :c:data:`act_2_rdm_bb_mo` + * :c:data:`act_2_rdm_spin_trace_mo` + * :c:data:`act_2_rdm_trans_spin_trace_mo` + * :c:data:`act_bitmask` + * :c:data:`bielec_pqxx_array` + * :c:data:`bielec_pqxx_no_array` + * :c:data:`bielec_pxxq_array` + * :c:data:`bielec_pxxq_no_array` + * :c:data:`bielecci` + * :c:data:`bielecci_no` + * :c:data:`cholesky_no_1_idx_transp` + * :c:data:`cholesky_no_2_idx_transp` + * :c:data:`cholesky_no_total_transp` * :c:data:`core_fock_operator` * :c:data:`core_fock_operator_erf` + * :c:data:`d0tu` + * :c:data:`d0tu_alpha_ao` * :c:data:`eigenvectors_fock_matrix_mo` + * :c:data:`etwo` + * :c:data:`excit` + * :c:data:`fapq` * :c:data:`fock_matrix_mo` - * :c:data:`inact_virt_bitmask` - * :c:data:`list_core_inact_act` - * :c:data:`list_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_act_bitmask` - * :c:data:`reunion_of_core_inact_bitmask` - * :c:data:`virt_bitmask_4` + * :c:data:`full_occ_2_rdm_aa_mo` + * :c:data:`full_occ_2_rdm_ab_mo` + * :c:data:`full_occ_2_rdm_bb_mo` + * :c:data:`full_occ_2_rdm_spin_trace_mo` + * :c:data:`gradvec2` + * :c:data:`hessdiag` + * :c:data:`hessmat` + * :c:data:`hessmat_peter` + * :c:data:`lowest_super_ci_coef_mo` + * :c:data:`mat_tmp_dm_super_ci` + * :c:data:`natorbsci_mos` + * :c:data:`occnum` + * :c:data:`one_ints_no` + * :c:data:`p0tuvx_peter` + * :c:data:`state_av_act_2_rdm_aa_mo` + * :c:data:`state_av_act_2_rdm_ab_mo` + * :c:data:`state_av_act_2_rdm_bb_mo` + * :c:data:`state_av_full_occ_2_rdm_aa_mo` + * :c:data:`state_av_full_occ_2_rdm_ab_mo` + * :c:data:`state_av_full_occ_2_rdm_bb_mo` + * :c:data:`state_av_full_occ_2_rdm_spin_trace_mo` + * :c:data:`super_ci_dm` + * :c:data:`umat` + + +.. c:var:: list_all_but_del_orb + + + File : :file:`bitmask/core_inact_act_virt.irp.f` + + .. code:: fortran + + integer, allocatable :: list_all_but_del_orb (n_all_but_del_orb) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_class` + * :c:data:`mo_num` + * :c:data:`n_all_but_del_orb` + .. c:var:: list_core @@ -1046,44 +802,11 @@ Providers .. 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 + List of MO indices which are in the core. Needs: @@ -1094,29 +817,78 @@ Providers * :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_bitmask` * :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:`list_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_act_bitmask` + * :c:data:`full_occ_2_rdm_aa_mo` + * :c:data:`full_occ_2_rdm_ab_mo` + * :c:data:`full_occ_2_rdm_bb_mo` + * :c:data:`full_occ_2_rdm_spin_trace_mo` + * :c:data:`one_e_dm_mo_alpha_for_dft` + * :c:data:`one_e_dm_mo_alpha_for_dft_no_core` + * :c:data:`one_e_dm_mo_beta_for_dft` + * :c:data:`one_e_dm_mo_beta_for_dft_no_core` + * :c:data:`state_av_full_occ_2_rdm_aa_mo` + * :c:data:`state_av_full_occ_2_rdm_ab_mo` + * :c:data:`state_av_full_occ_2_rdm_bb_mo` + * :c:data:`state_av_full_occ_2_rdm_spin_trace_mo` + + +.. c:var:: list_core_inact + + + File : :file:`bitmask/core_inact_act_virt.irp.f` + + .. code:: fortran + + integer, allocatable :: list_core_inact (dim_list_core_inact_orb) + integer, allocatable :: list_core_inact_reverse (mo_num) + + + List of indices of the core and inactive MOs + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`dim_list_core_inact_orb` + * :c:data:`mo_num` + * :c:data:`n_core_inact_orb` + * :c:data:`n_int` * :c:data:`reunion_of_core_inact_bitmask` - * :c:data:`virt_bitmask_4` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`bielec_pqxx_array` + * :c:data:`bielec_pxxq_array` + * :c:data:`cholesky_no_total_transp` + * :c:data:`d0tu_alpha_ao` + * :c:data:`etwo` + * :c:data:`excit` + * :c:data:`fipq` + * :c:data:`gradvec2` + * :c:data:`hessdiag` + * :c:data:`hessmat` + * :c:data:`hessmat_peter` + * :c:data:`lowest_super_ci_coef_mo` + * :c:data:`mat_tmp_dm_super_ci` + * :c:data:`occnum` + * :c:data:`super_ci_dm` + * :c:data:`umat` .. c:var:: list_core_inact_act @@ -1127,21 +899,30 @@ Providers .. code:: fortran integer, allocatable :: list_core_inact_act (n_core_inact_act_orb) - integer, allocatable :: list_core_inact_act_reverse (n_core_inact_act_orb) + integer, allocatable :: list_core_inact_act_reverse (mo_num) + List of indices of the core inactive and active MOs Needs: .. hlist:: :columns: 3 - * :c:data:`list_inact` + * :c:data:`mo_num` * :c:data:`n_core_inact_act_orb` - * :c:data:`n_core_orb` * :c:data:`n_int` * :c:data:`reunion_of_core_inact_act_bitmask` + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`etwo` + * :c:data:`fapq` + * :c:data:`fipq` + * :c:data:`two_e_dm_mo` .. c:var:: list_core_inact_act_reverse @@ -1152,148 +933,91 @@ Providers .. code:: fortran integer, allocatable :: list_core_inact_act (n_core_inact_act_orb) - integer, allocatable :: list_core_inact_act_reverse (n_core_inact_act_orb) + integer, allocatable :: list_core_inact_act_reverse (mo_num) + List of indices of the core inactive and active MOs Needs: .. hlist:: :columns: 3 - * :c:data:`list_inact` + * :c:data:`mo_num` * :c:data:`n_core_inact_act_orb` - * :c:data:`n_core_orb` * :c:data:`n_int` * :c:data:`reunion_of_core_inact_act_bitmask` + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`etwo` + * :c:data:`fapq` + * :c:data:`fipq` + * :c:data:`two_e_dm_mo` -.. c:var:: list_core_reverse +.. c:var:: list_core_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) + integer, allocatable :: list_core_inact (dim_list_core_inact_orb) + integer, allocatable :: list_core_inact_reverse (mo_num) - 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 + List of indices of the core and inactive MOs Needs: .. hlist:: :columns: 3 - * :c:data:`dim_list_core_orb` - * :c:data:`mo_class` + * :c:data:`dim_list_core_inact_orb` * :c:data:`mo_num` - * :c:data:`n_core_orb` + * :c:data:`n_core_inact_orb` * :c:data:`n_int` + * :c:data:`reunion_of_core_inact_bitmask` 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:`list_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_act_bitmask` - * :c:data:`reunion_of_core_inact_bitmask` - * :c:data:`virt_bitmask_4` + * :c:data:`bielec_pqxx_array` + * :c:data:`bielec_pxxq_array` + * :c:data:`cholesky_no_total_transp` + * :c:data:`d0tu_alpha_ao` + * :c:data:`etwo` + * :c:data:`excit` + * :c:data:`fipq` + * :c:data:`gradvec2` + * :c:data:`hessdiag` + * :c:data:`hessmat` + * :c:data:`hessmat_peter` + * :c:data:`lowest_super_ci_coef_mo` + * :c:data:`mat_tmp_dm_super_ci` + * :c:data:`occnum` + * :c:data:`super_ci_dm` + * :c:data:`umat` -.. c:var:: list_del +.. 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 + List of MO indices which are in the core. Needs: @@ -1304,29 +1028,62 @@ Providers * :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_bitmask` * :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:`list_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_act_bitmask` - * :c:data:`reunion_of_core_inact_bitmask` - * :c:data:`virt_bitmask_4` + * :c:data:`full_occ_2_rdm_aa_mo` + * :c:data:`full_occ_2_rdm_ab_mo` + * :c:data:`full_occ_2_rdm_bb_mo` + * :c:data:`full_occ_2_rdm_spin_trace_mo` + * :c:data:`one_e_dm_mo_alpha_for_dft` + * :c:data:`one_e_dm_mo_alpha_for_dft_no_core` + * :c:data:`one_e_dm_mo_beta_for_dft` + * :c:data:`one_e_dm_mo_beta_for_dft_no_core` + * :c:data:`state_av_full_occ_2_rdm_aa_mo` + * :c:data:`state_av_full_occ_2_rdm_ab_mo` + * :c:data:`state_av_full_occ_2_rdm_bb_mo` + * :c:data:`state_av_full_occ_2_rdm_spin_trace_mo` + + +.. c:var:: list_del + + + File : :file:`bitmask/core_inact_act_virt.irp.f` + + .. code:: fortran + + integer, allocatable :: list_del (dim_list_del_orb) + integer, allocatable :: list_del_reverse (mo_num) + + + List of MO indices which are deleted. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`dim_list_del_orb` + * :c:data:`mo_class` + * :c:data:`mo_num` + * :c:data:`n_del_orb` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`del_bitmask` .. c:var:: list_del_reverse @@ -1336,77 +1093,28 @@ Providers .. 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 (dim_list_del_orb) 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 + List of MO indices which are deleted. Needs: .. hlist:: :columns: 3 - * :c:data:`dim_list_core_orb` + * :c:data:`dim_list_del_orb` * :c:data:`mo_class` * :c:data:`mo_num` - * :c:data:`n_core_orb` - * :c:data:`n_int` + * :c:data:`n_del_orb` 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:`list_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_act_bitmask` - * :c:data:`reunion_of_core_inact_bitmask` - * :c:data:`virt_bitmask_4` + * :c:data:`del_bitmask` .. c:var:: list_inact @@ -1417,76 +1125,37 @@ Providers .. 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 + List of MO indices which are inactive. Needs: .. hlist:: :columns: 3 - * :c:data:`dim_list_core_orb` + * :c:data:`dim_list_inact_orb` * :c:data:`mo_class` * :c:data:`mo_num` - * :c:data:`n_core_orb` - * :c:data:`n_int` + * :c:data:`n_inact_orb` 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:`list_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_act_bitmask` - * :c:data:`reunion_of_core_inact_bitmask` - * :c:data:`virt_bitmask_4` + * :c:data:`full_occ_2_rdm_aa_mo` + * :c:data:`full_occ_2_rdm_ab_mo` + * :c:data:`full_occ_2_rdm_bb_mo` + * :c:data:`full_occ_2_rdm_spin_trace_mo` + * :c:data:`inact_bitmask` + * :c:data:`state_av_full_occ_2_rdm_aa_mo` + * :c:data:`state_av_full_occ_2_rdm_ab_mo` + * :c:data:`state_av_full_occ_2_rdm_bb_mo` + * :c:data:`state_av_full_occ_2_rdm_spin_trace_mo` .. c:var:: list_inact_act @@ -1497,101 +1166,49 @@ Providers .. code:: fortran integer, allocatable :: list_inact_act (n_inact_act_orb) + integer, allocatable :: list_inact_act_reverse (mo_num) + List of indices of the inactive and active MOs Needs: .. hlist:: :columns: 3 - * :c:data:`list_inact` - * :c:data:`n_core_orb` + * :c:data:`mo_num` * :c:data:`n_inact_act_orb` + * :c:data:`n_int` + * :c:data:`reunion_of_inact_act_bitmask` -.. c:var:: list_inact_reverse +.. c:var:: list_inact_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) + integer, allocatable :: list_inact_act (n_inact_act_orb) + integer, allocatable :: list_inact_act_reverse (mo_num) - 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 + List of indices of the inactive and active MOs 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_inact_act_orb` * :c:data:`n_int` + * :c:data:`reunion_of_inact_act_bitmask` - 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:`list_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_act_bitmask` - * :c:data:`reunion_of_core_inact_bitmask` - * :c:data:`virt_bitmask_4` -.. c:var:: list_virt +.. c:var:: list_inact_reverse File : :file:`bitmask/core_inact_act_virt.irp.f` @@ -1599,353 +1216,259 @@ Providers .. 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 + List of MO indices which are inactive. Needs: .. hlist:: :columns: 3 - * :c:data:`dim_list_core_orb` + * :c:data:`dim_list_inact_orb` * :c:data:`mo_class` * :c:data:`mo_num` - * :c:data:`n_core_orb` - * :c:data:`n_int` + * :c:data:`n_inact_orb` 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:`list_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_act_bitmask` - * :c:data:`reunion_of_core_inact_bitmask` - * :c:data:`virt_bitmask_4` + * :c:data:`full_occ_2_rdm_aa_mo` + * :c:data:`full_occ_2_rdm_ab_mo` + * :c:data:`full_occ_2_rdm_bb_mo` + * :c:data:`full_occ_2_rdm_spin_trace_mo` + * :c:data:`inact_bitmask` + * :c:data:`state_av_full_occ_2_rdm_aa_mo` + * :c:data:`state_av_full_occ_2_rdm_ab_mo` + * :c:data:`state_av_full_occ_2_rdm_bb_mo` + * :c:data:`state_av_full_occ_2_rdm_spin_trace_mo` -.. c:var:: list_virt_reverse +.. 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 + List of MO indices which are virtual Needs: .. hlist:: :columns: 3 - * :c:data:`dim_list_core_orb` + * :c:data:`dim_list_virt_orb` * :c:data:`mo_class` * :c:data:`mo_num` - * :c:data:`n_core_orb` - * :c:data:`n_int` + * :c:data:`n_virt_orb` 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:`cholesky_no_total_transp` * :c:data:`eigenvectors_fock_matrix_mo` + * :c:data:`excit` * :c:data:`fock_matrix_mo` - * :c:data:`inact_virt_bitmask` - * :c:data:`list_core_inact_act` - * :c:data:`list_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_act_bitmask` - * :c:data:`reunion_of_core_inact_bitmask` - * :c:data:`virt_bitmask_4` + * :c:data:`gradvec2` + * :c:data:`hessdiag` + * :c:data:`hessmat` + * :c:data:`hessmat_peter` + * :c:data:`lowest_super_ci_coef_mo` + * :c:data:`mat_tmp_dm_super_ci` + * :c:data:`super_ci_dm` + * :c:data:`umat` + * :c:data:`virt_bitmask` -.. 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 +.. c:var:: list_virt_reverse 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 + integer, allocatable :: list_virt (dim_list_virt_orb) + integer, allocatable :: list_virt_reverse (mo_num) - 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 + List of MO indices which are virtual Needs: .. hlist:: :columns: 3 + * :c:data:`dim_list_virt_orb` * :c:data:`mo_class` * :c:data:`mo_num` - * :c:data:`mpi_master` + * :c:data:`n_virt_orb` 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:`cholesky_no_total_transp` * :c:data:`eigenvectors_fock_matrix_mo` + * :c:data:`excit` * :c:data:`fock_matrix_mo` - * :c:data:`list_core_inact_act` - * :c:data:`list_inact` - * :c:data:`list_inact_act` - * :c:data:`mo_two_e_integrals_vv_from_ao` - * :c:data:`n_core_inact_act_orb` - * :c:data:`n_core_orb_allocate` - * :c:data:`n_inact_act_orb` - * :c:data:`n_inact_orb_allocate` - * :c:data:`n_virt_orb_allocate` - * :c:data:`pt2_f` + * :c:data:`gradvec2` + * :c:data:`hessdiag` + * :c:data:`hessmat` + * :c:data:`hessmat_peter` + * :c:data:`lowest_super_ci_coef_mo` + * :c:data:`mat_tmp_dm_super_ci` + * :c:data:`super_ci_dm` + * :c:data:`umat` + * :c:data:`virt_bitmask` -.. c:var:: n_cas_bitmask +.. c:var:: mo_coef_begin_iteration - File : :file:`bitmask/bitmasks.irp.f` + File : :file:`bitmask/track_orb.irp.f` .. code:: fortran - integer :: n_cas_bitmask + double precision, allocatable :: mo_coef_begin_iteration (ao_num,mo_num) - Number of bitmasks for CAS + Void provider to store the coefficients of the |MO| basis at the beginning of the SCF iteration + + Useful to track some orbitals Needs: .. hlist:: :columns: 3 - * :c:data:`ezfio_filename` - * :c:data:`mpi_master` - * :c:data:`n_int` - - Needed by: - - .. hlist:: - :columns: 3 + * :c:data:`ao_num` + * :c:data:`mo_num` - * :c:data:`cas_bitmask` - * :c:data:`psi_cas` -.. c:var:: n_core_inact_act_orb +.. c:var:: mpi_bit_kind - File : :file:`bitmask/core_inact_act_virt.irp.f` + File : :file:`bitmask/mpi.irp.f` .. code:: fortran - integer :: n_core_inact_act_orb - - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`n_core_orb` + integer :: mpi_bit_kind - Needed by: - .. hlist:: - :columns: 3 + MPI bit kind type - * :c:data:`list_core_inact_act` -.. c:var:: n_core_inact_orb +.. c:var:: n_act_orb - File : :file:`bitmask/bitmasks.irp.f` + File : :file:`bitmask/core_inact_act_virt.irp.f` .. code:: fortran - integer :: n_core_inact_orb + integer :: n_act_orb + Number of active MOs Needs: .. hlist:: :columns: 3 - * :c:data:`n_int` - * :c:data:`reunion_of_core_inact_bitmask` + * :c:data:`mo_class` + * :c:data:`mo_num` + * :c:data:`mpi_master` + Needed by: - -.. c:var:: n_core_orb + .. hlist:: + :columns: 3 + + * :c:data:`act_2_rdm_aa_mo` + * :c:data:`act_2_rdm_ab_mo` + * :c:data:`act_2_rdm_bb_mo` + * :c:data:`act_2_rdm_spin_trace_mo` + * :c:data:`act_2_rdm_trans_spin_trace_mo` + * :c:data:`act_bitmask` + * :c:data:`bielec_pqxx_array` + * :c:data:`bielec_pqxx_no_array` + * :c:data:`bielec_pxxq_array` + * :c:data:`bielec_pxxq_no_array` + * :c:data:`bielecci` + * :c:data:`bielecci_no` + * :c:data:`cholesky_no_1_idx_transp` + * :c:data:`cholesky_no_2_idx_transp` + * :c:data:`cholesky_no_total_transp` + * :c:data:`core_fock_operator` + * :c:data:`core_fock_operator_erf` + * :c:data:`d0tu` + * :c:data:`d0tu_alpha_ao` + * :c:data:`dim_list_act_orb` + * :c:data:`eigenvectors_fock_matrix_mo` + * :c:data:`etwo` + * :c:data:`excit` + * :c:data:`fapq` + * :c:data:`fock_matrix_mo` + * :c:data:`full_occ_2_rdm_aa_mo` + * :c:data:`full_occ_2_rdm_ab_mo` + * :c:data:`full_occ_2_rdm_bb_mo` + * :c:data:`full_occ_2_rdm_spin_trace_mo` + * :c:data:`gradvec2` + * :c:data:`hessdiag` + * :c:data:`hessmat` + * :c:data:`hessmat_peter` + * :c:data:`list_act` + * :c:data:`lowest_super_ci_coef_mo` + * :c:data:`mat_tmp_dm_super_ci` + * :c:data:`n_c_a_prov` + * :c:data:`n_core_inact_act_orb` + * :c:data:`n_inact_act_orb` + * :c:data:`natorbsci` + * :c:data:`natorbsci_mos` + * :c:data:`nmonoex` + * :c:data:`nsomomax` + * :c:data:`occnum` + * :c:data:`one_ints_no` + * :c:data:`p0tuvx` + * :c:data:`p0tuvx_no` + * :c:data:`p0tuvx_peter` + * :c:data:`state_av_act_2_rdm_aa_mo` + * :c:data:`state_av_act_2_rdm_ab_mo` + * :c:data:`state_av_act_2_rdm_bb_mo` + * :c:data:`state_av_act_2_rdm_spin_trace_mo` + * :c:data:`state_av_full_occ_2_rdm_aa_mo` + * :c:data:`state_av_full_occ_2_rdm_ab_mo` + * :c:data:`state_av_full_occ_2_rdm_bb_mo` + * :c:data:`state_av_full_occ_2_rdm_spin_trace_mo` + * :c:data:`super_ci_dm` + * :c:data:`umat` + + +.. c:var:: n_all_but_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 + integer :: n_all_but_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: @@ -1954,179 +1477,186 @@ Providers * :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_core_inact_act` - * :c:data:`list_inact` - * :c:data:`list_inact_act` - * :c:data:`mo_two_e_integrals_vv_from_ao` - * :c:data:`n_core_inact_act_orb` - * :c:data:`n_core_orb_allocate` - * :c:data:`n_inact_act_orb` - * :c:data:`n_inact_orb_allocate` - * :c:data:`n_virt_orb_allocate` - * :c:data:`pt2_f` + * :c:data:`list_all_but_del_orb` -.. c:var:: n_core_orb_allocate +.. c:var:: n_core_inact_act_orb - File : :file:`bitmask/bitmasks.irp.f` + File : :file:`bitmask/core_inact_act_virt.irp.f` .. code:: fortran - integer :: n_core_orb_allocate + integer :: n_core_inact_act_orb + Number of core inactive and active MOs Needs: .. hlist:: :columns: 3 + * :c:data:`n_act_orb` * :c:data:`n_core_orb` + * :c:data:`n_inact_orb` + + Needed by: + + .. hlist:: + :columns: 3 + * :c:data:`bielec_pqxx_array` + * :c:data:`bielec_pqxx_no_array` + * :c:data:`bielec_pxxq_array` + * :c:data:`bielec_pxxq_no_array` + * :c:data:`full_occ_2_rdm_aa_mo` + * :c:data:`full_occ_2_rdm_ab_mo` + * :c:data:`full_occ_2_rdm_bb_mo` + * :c:data:`full_occ_2_rdm_spin_trace_mo` + * :c:data:`list_core_inact_act` + * :c:data:`state_av_full_occ_2_rdm_aa_mo` + * :c:data:`state_av_full_occ_2_rdm_ab_mo` + * :c:data:`state_av_full_occ_2_rdm_bb_mo` + * :c:data:`state_av_full_occ_2_rdm_spin_trace_mo` + * :c:data:`two_e_dm_mo` -.. c:var:: n_del_orb +.. c:var:: n_core_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 + integer :: n_core_inact_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 + n_core + n_inact Needs: .. hlist:: :columns: 3 - * :c:data:`mo_class` - * :c:data:`mo_num` - * :c:data:`mpi_master` + * :c:data:`n_int` + * :c:data:`reunion_of_core_inact_bitmask` 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_core_inact_act` - * :c:data:`list_inact` - * :c:data:`list_inact_act` - * :c:data:`mo_two_e_integrals_vv_from_ao` - * :c:data:`n_core_inact_act_orb` - * :c:data:`n_core_orb_allocate` - * :c:data:`n_inact_act_orb` - * :c:data:`n_inact_orb_allocate` - * :c:data:`n_virt_orb_allocate` - * :c:data:`pt2_f` + * :c:data:`bielec_pqxx_array` + * :c:data:`bielec_pqxx_no_array` + * :c:data:`bielec_pxxq_array` + * :c:data:`bielec_pxxq_no_array` + * :c:data:`cholesky_no_total_transp` + * :c:data:`d0tu_alpha_ao` + * :c:data:`dim_list_core_inact_orb` + * :c:data:`etwo` + * :c:data:`excit` + * :c:data:`fipq` + * :c:data:`gradvec2` + * :c:data:`hessdiag` + * :c:data:`hessmat` + * :c:data:`hessmat_peter` + * :c:data:`list_core_inact` + * :c:data:`lowest_super_ci_coef_mo` + * :c:data:`mat_tmp_dm_super_ci` + * :c:data:`n_c_a_prov` + * :c:data:`nmonoex` + * :c:data:`occnum` + * :c:data:`super_ci_dm` + * :c:data:`umat` -.. c:var:: n_generators_bitmask +.. c:var:: n_core_orb - File : :file:`bitmask/bitmasks.irp.f` + File : :file:`bitmask/core_inact_act_virt.irp.f` .. code:: fortran - integer :: n_generators_bitmask + integer :: n_core_orb - Number of bitmasks for generators + Number of core MOs Needs: .. hlist:: :columns: 3 - * :c:data:`ezfio_filename` + * :c:data:`mo_class` + * :c:data:`mo_num` * :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:data:`core_bitmask` + * :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:`full_occ_2_rdm_aa_mo` + * :c:data:`full_occ_2_rdm_ab_mo` + * :c:data:`full_occ_2_rdm_bb_mo` + * :c:data:`full_occ_2_rdm_spin_trace_mo` + * :c:data:`list_core` + * :c:data:`n_core_inact_act_orb` + * :c:data:`one_e_dm_mo_alpha_for_dft` + * :c:data:`one_e_dm_mo_alpha_for_dft_no_core` + * :c:data:`one_e_dm_mo_beta_for_dft` + * :c:data:`one_e_dm_mo_beta_for_dft_no_core` + * :c:data:`pt2_f` + * :c:data:`state_av_full_occ_2_rdm_aa_mo` + * :c:data:`state_av_full_occ_2_rdm_ab_mo` + * :c:data:`state_av_full_occ_2_rdm_bb_mo` + * :c:data:`state_av_full_occ_2_rdm_spin_trace_mo` -.. c:var:: n_generators_bitmask_restart +.. c:var:: n_del_orb - File : :file:`bitmask/bitmasks.irp.f` + File : :file:`bitmask/core_inact_act_virt.irp.f` .. code:: fortran - integer :: n_generators_bitmask_restart + integer :: n_del_orb - Number of bitmasks for generators + Number of deleted MOs Needs: .. hlist:: :columns: 3 - * :c:data:`ezfio_filename` + * :c:data:`mo_class` + * :c:data:`mo_num` * :c:data:`mpi_master` - * :c:data:`n_int` Needed by: .. hlist:: :columns: 3 - * :c:data:`generators_bitmask_restart` + * :c:data:`del_bitmask` + * :c:data:`dim_list_del_orb` + * :c:data:`list_del` .. c:var:: n_inact_act_orb @@ -2139,13 +1669,15 @@ Providers integer :: n_inact_act_orb + n_inact + n_act Needs: .. hlist:: :columns: 3 - * :c:data:`n_core_orb` + * :c:data:`n_act_orb` + * :c:data:`n_inact_orb` Needed by: @@ -2162,34 +1694,10 @@ Providers .. 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 + Number of inactive MOs Needs: @@ -2205,43 +1713,21 @@ Providers .. 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:`dim_list_inact_orb` * :c:data:`eigenvectors_fock_matrix_mo` * :c:data:`fock_matrix_mo` - * :c:data:`list_core_inact_act` + * :c:data:`full_occ_2_rdm_aa_mo` + * :c:data:`full_occ_2_rdm_ab_mo` + * :c:data:`full_occ_2_rdm_bb_mo` + * :c:data:`full_occ_2_rdm_spin_trace_mo` + * :c:data:`inact_bitmask` * :c:data:`list_inact` - * :c:data:`list_inact_act` - * :c:data:`mo_two_e_integrals_vv_from_ao` * :c:data:`n_core_inact_act_orb` - * :c:data:`n_core_orb_allocate` * :c:data:`n_inact_act_orb` - * :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:data:`state_av_full_occ_2_rdm_aa_mo` + * :c:data:`state_av_full_occ_2_rdm_ab_mo` + * :c:data:`state_av_full_occ_2_rdm_bb_mo` + * :c:data:`state_av_full_occ_2_rdm_spin_trace_mo` .. c:var:: n_int @@ -2269,14 +1755,18 @@ Providers .. hlist:: :columns: 3 - * :c:data:`cas_bitmask` + * :c:data:`act_bitmask` + * :c:data:`cfg_seniority_index` * :c:data:`ci_electronic_energy` * :c:data:`closed_shell_ref_bitmask` * :c:data:`coef_hf_selector` + * :c:data:`core_bitmask` * :c:data:`core_inact_act_bitmask_4` - * :c:data:`degree_max_generators` - * :c:data:`det_to_occ_pattern` + * :c:data:`del_bitmask` + * :c:data:`det_to_configuration` + * :c:data:`dettocsftransformationmatrix` * :c:data:`diagonal_h_matrix_on_psi_det` + * :c:data:`dominant_dets_of_cfgs` * :c:data:`double_exc_bitmask` * :c:data:`exc_degree_per_selectors` * :c:data:`fock_operator_closed_shell_ref_bitmask` @@ -2284,26 +1774,41 @@ Providers * :c:data:`full_ijkl_bitmask` * :c:data:`full_ijkl_bitmask_4` * :c:data:`generators_bitmask` - * :c:data:`generators_bitmask_restart` * :c:data:`global_selection_buffer` + * :c:data:`gradvec_old` * :c:data:`h_apply_buffer_allocated` * :c:data:`h_matrix_all_dets` * :c:data:`h_matrix_cas` + * :c:data:`h_matrix_diag_all_dets` + * :c:data:`hessmat_old` * :c:data:`hf_bitmask` + * :c:data:`inact_bitmask` * :c:data:`inact_virt_bitmask` + * :c:data:`list_core_inact` * :c:data:`list_core_inact_act` - * :c:data:`list_inact` + * :c:data:`list_inact_act` * :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:`multi_s_dipole_moment` * :c:data:`n_core_inact_orb` - * :c:data:`n_generators_bitmask` - * :c:data:`n_generators_bitmask_restart` + * :c:data:`n_det_generators` + * :c:data:`n_dominant_dets_of_cfgs` + * :c:data:`n_elec_alpha_for_psi_configuration` * :c:data:`one_e_dm_mo_alpha` + * :c:data:`one_e_tr_dm_mo` + * :c:data:`one_e_tr_dm_mo_alpha` + * :c:data:`orb_swap` + * :c:data:`ormas_bitmask` + * :c:data:`p0tuvx` + * :c:data:`p0tuvx_peter` * :c:data:`psi_bilinear_matrix_values` * :c:data:`psi_cas` * :c:data:`psi_cas_sorted_bit` + * :c:data:`psi_configuration` + * :c:data:`psi_configuration_sorted` + * :c:data:`psi_configuration_to_psi_det` + * :c:data:`psi_csf_coef` * :c:data:`psi_det` * :c:data:`psi_det_alpha` * :c:data:`psi_det_alpha_unique` @@ -2313,29 +1818,32 @@ Providers * :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_energy_two_e_trans` * :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_act_virt_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:`reunion_of_inact_act_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_alpha_csc_map` * :c:data:`singles_beta_csc` * :c:data:`singles_beta_csc_idx` + * :c:data:`singles_beta_csc_map` * :c:data:`unpaired_alpha_electrons` + * :c:data:`virt_bitmask` * :c:data:`virt_bitmask_4` @@ -2346,34 +1854,10 @@ Providers .. 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 + Number of virtual MOs Needs: @@ -2389,43 +1873,213 @@ Providers .. 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:`cholesky_no_total_transp` + * :c:data:`dim_list_virt_orb` * :c:data:`eigenvectors_fock_matrix_mo` + * :c:data:`excit` * :c:data:`fock_matrix_mo` - * :c:data:`list_core_inact_act` - * :c:data:`list_inact` - * :c:data:`list_inact_act` - * :c:data:`mo_two_e_integrals_vv_from_ao` - * :c:data:`n_core_inact_act_orb` - * :c:data:`n_core_orb_allocate` - * :c:data:`n_inact_act_orb` - * :c:data:`n_inact_orb_allocate` - * :c:data:`n_virt_orb_allocate` - * :c:data:`pt2_f` + * :c:data:`gradvec2` + * :c:data:`hessdiag` + * :c:data:`hessmat` + * :c:data:`hessmat_peter` + * :c:data:`list_virt` + * :c:data:`lowest_super_ci_coef_mo` + * :c:data:`mat_tmp_dm_super_ci` + * :c:data:`n_c_a_prov` + * :c:data:`nmonoex` + * :c:data:`super_ci_dm` + * :c:data:`umat` + * :c:data:`virt_bitmask` -.. c:var:: n_virt_orb_allocate +.. c:var:: ormas_bitmask - File : :file:`bitmask/bitmasks.irp.f` + File : :file:`bitmask/bitmasks_ormas.irp.f` + + .. code:: fortran + + integer(bit_kind), allocatable :: ormas_bitmask (N_int,ormas_n_space) + + + bitmask for each ormas space + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_int` + * :c:data:`ormas_list_orb` + * :c:data:`ormas_n_orb` + * :c:data:`ormas_n_space` + + + +.. c:var:: ormas_list_orb + + + File : :file:`bitmask/bitmasks_ormas.irp.f` + + .. code:: fortran + + integer, allocatable :: ormas_list_orb (ormas_max_n_orb,ormas_n_space) + + + list of orbitals in each ormas space + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ormas_n_orb` + * :c:data:`ormas_n_space` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ormas_bitmask` + + +.. c:var:: ormas_max_e + + + File : :file:`bitmask/bitmasks_ormas.irp.f` + + .. code:: fortran + + integer, allocatable :: ormas_max_e (ormas_n_space) + + + max nelec in each active space + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`elec_num` + * :c:data:`ezfio_filename` + * :c:data:`mpi_master` + * :c:data:`ormas_n_space` + + + +.. c:var:: ormas_max_n_orb + + + File : :file:`bitmask/bitmasks_ormas.irp.f` + + .. code:: fortran + + integer, allocatable :: ormas_n_orb (ormas_n_space) + integer :: ormas_max_n_orb + + + number of orbitals in each ormas space + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_num` + * :c:data:`ormas_mstart` + * :c:data:`ormas_n_space` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ormas_bitmask` + * :c:data:`ormas_list_orb` + + +.. c:var:: ormas_min_e + + + File : :file:`bitmask/bitmasks_ormas.irp.f` + + .. code:: fortran + + integer, allocatable :: ormas_min_e (ormas_n_space) + + + min nelec in each active space + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ezfio_filename` + * :c:data:`mpi_master` + * :c:data:`ormas_n_space` + + + +.. c:var:: ormas_mstart + + + File : :file:`bitmask/bitmasks_ormas.irp.f` + + .. code:: fortran + + integer, allocatable :: ormas_mstart (ormas_n_space) + + + first orbital idx in each active space + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ezfio_filename` + * :c:data:`mpi_master` + * :c:data:`ormas_n_space` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ormas_n_orb` + + +.. c:var:: ormas_n_orb + + + File : :file:`bitmask/bitmasks_ormas.irp.f` .. code:: fortran - integer :: n_virt_orb_allocate + integer, allocatable :: ormas_n_orb (ormas_n_space) + integer :: ormas_max_n_orb + number of orbitals in each ormas space Needs: .. hlist:: :columns: 3 - * :c:data:`n_core_orb` + * :c:data:`mo_num` + * :c:data:`ormas_mstart` + * :c:data:`ormas_n_space` + + Needed by: + .. hlist:: + :columns: 3 + + * :c:data:`ormas_bitmask` + * :c:data:`ormas_list_orb` .. c:var:: ref_bitmask @@ -2463,37 +2117,43 @@ Providers * :c:data:`ref_closed_shell_bitmask` -.. c:var:: reunion_of_bitmask +.. c:var:: reunion_of_act_virt_bitmask File : :file:`bitmask/bitmasks.irp.f` .. code:: fortran - integer(bit_kind), allocatable :: reunion_of_bitmask (N_int,2) + integer(bit_kind), allocatable :: reunion_of_act_virt_bitmask (N_int,2) - Reunion of the inactive, active and virtual bitmasks + Reunion of the inactive and active bitmasks Needs: .. hlist:: :columns: 3 - * :c:data:`cas_bitmask` - * :c:data:`list_inact` + * :c:data:`act_bitmask` * :c:data:`n_int` + * :c:data:`virt_bitmask` + + Needed by: + + .. hlist:: + :columns: 3 + * :c:data:`generators_bitmask` -.. c:var:: reunion_of_cas_inact_bitmask +.. c:var:: reunion_of_bitmask File : :file:`bitmask/bitmasks.irp.f` .. code:: fortran - integer(bit_kind), allocatable :: reunion_of_cas_inact_bitmask (N_int,2) + integer(bit_kind), allocatable :: reunion_of_bitmask (N_int,2) Reunion of the inactive, active and virtual bitmasks @@ -2503,8 +2163,10 @@ Providers .. hlist:: :columns: 3 - * :c:data:`list_inact` + * :c:data:`act_bitmask` + * :c:data:`inact_bitmask` * :c:data:`n_int` + * :c:data:`virt_bitmask` @@ -2525,7 +2187,7 @@ Providers .. hlist:: :columns: 3 - * :c:data:`list_inact` + * :c:data:`act_bitmask` * :c:data:`n_int` * :c:data:`reunion_of_core_inact_bitmask` @@ -2555,7 +2217,8 @@ Providers .. hlist:: :columns: 3 - * :c:data:`list_inact` + * :c:data:`core_bitmask` + * :c:data:`inact_bitmask` * :c:data:`n_int` Needed by: @@ -2563,10 +2226,43 @@ Providers .. hlist:: :columns: 3 + * :c:data:`list_core_inact` * :c:data:`n_core_inact_orb` + * :c:data:`n_det_generators` + * :c:data:`psi_det_generators` * :c:data:`reunion_of_core_inact_act_bitmask` +.. c:var:: reunion_of_inact_act_bitmask + + + File : :file:`bitmask/bitmasks.irp.f` + + .. code:: fortran + + integer(bit_kind), allocatable :: reunion_of_inact_act_bitmask (N_int,2) + + + Reunion of the inactive and active bitmasks + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`act_bitmask` + * :c:data:`inact_bitmask` + * :c:data:`n_int` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`generators_bitmask` + * :c:data:`list_inact_act` + + .. c:var:: unpaired_alpha_electrons @@ -2596,76 +2292,30 @@ Providers .. 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 + Bitmask identifying the virtual MOs 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:`list_virt` * :c:data:`n_int` + * :c:data:`n_virt_orb` 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:`list_inact_act` - * :c:data:`mo_two_e_integrals_in_map` - * :c:data:`mo_two_e_integrals_vv_from_ao` + * :c:data:`n_det_generators` + * :c:data:`psi_det_generators` + * :c:data:`reunion_of_act_virt_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:`virt_bitmask_4` @@ -2685,8 +2335,8 @@ Providers .. hlist:: :columns: 3 - * :c:data:`list_inact` * :c:data:`n_int` + * :c:data:`virt_bitmask` @@ -2711,6 +2361,7 @@ Subroutines / functions .. hlist:: :columns: 3 + * :c:func:`debug_cfg` * :c:func:`debug_det` * :c:func:`debug_spindet` @@ -2725,7 +2376,7 @@ Subroutines / functions subroutine bitstring_to_list( string, list, n_elements, Nint) - Gives the inidices(+1) of the bits set to 1 in the bit string + Gives the indices(+1) of the bits set to 1 in the bit string Called by: @@ -2734,13 +2385,16 @@ Subroutines / functions * :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:`generate_cas_space` * :c:func:`getmobiles` + * :c:data:`list_core_inact` * :c:data:`list_core_inact_act` + * :c:data:`list_inact_act` * :c:data:`ref_bitmask_energy` + * :c:func:`splash_p` + * :c:func:`spot_hasbeen` .. c:function:: bitstring_to_str: @@ -2760,11 +2414,10 @@ Subroutines / functions .. 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_det_one_dimension` * :c:func:`print_spindet` @@ -2802,6 +2455,48 @@ Subroutines / functions * :c:data:`ref_closed_shell_bitmask` +.. c:function:: configuration_to_str: + + + File : :file:`bitmask/bitmasks_routines.irp.f` + + .. code:: fortran + + subroutine configuration_to_str( output, string, Nint ) + + + Transform the bit string of a configuration to a string for printing + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`debug_cfg` + + +.. c:function:: debug_cfg: + + + File : :file:`bitmask/bitmasks_routines.irp.f` + + .. code:: fortran + + subroutine debug_cfg(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:`configuration_to_str` + + .. c:function:: debug_det: @@ -2823,6 +2518,7 @@ Subroutines / functions * :c:func:`build_fock_tmp` * :c:func:`example_determinants` * :c:func:`get_excitation_degree_vector_single_or_exchange_verbose` + * :c:func:`get_particles_general` * :c:func:`number_of_holes_verbose` * :c:func:`number_of_particles_verbose` * :c:func:`routine_example_psi_det` @@ -2858,6 +2554,30 @@ Subroutines / functions * :c:func:`print_spindet` +.. c:function:: det_allowed_ormas: + + + File : :file:`bitmask/bitmasks_ormas.irp.f` + + .. code:: fortran + + logical function det_allowed_ormas(key_in) + + + return true if det has allowable ormas occupations + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_int` + * :c:data:`ormas_bitmask` + * :c:data:`ormas_max_e` + * :c:data:`ormas_min_e` + * :c:data:`ormas_n_space` + + .. c:function:: example_bitmask: @@ -2875,10 +2595,16 @@ Subroutines / functions .. hlist:: :columns: 3 - * :c:data:`n_core_orb` + * :c:data:`list_act` + * :c:data:`list_core` * :c:data:`list_inact` - * :c:data:`n_int` + * :c:data:`list_virt` * :c:data:`mo_num` + * :c:data:`n_act_orb` + * :c:data:`n_core_orb` + * :c:data:`n_inact_orb` + * :c:data:`n_int` + * :c:data:`n_virt_orb` Calls: @@ -2891,27 +2617,34 @@ Subroutines / functions * :c:func:`set_bit_to_integer` -.. c:function:: initialize_bitmask_to_restart_ones: +.. c:function:: initialize_mo_coef_begin_iteration: - File : :file:`bitmask/modify_bitmasks.irp.f` + File : :file:`bitmask/track_orb.irp.f` .. code:: fortran - subroutine initialize_bitmask_to_restart_ones + subroutine initialize_mo_coef_begin_iteration - Initialization of the generators_bitmask to the restart bitmask + + Initialize :c:data:`mo_coef_begin_iteration` to the current :c:data:`mo_coef` Needs: .. hlist:: :columns: 3 - * :c:data:`generators_bitmask_restart` - * :c:data:`n_generators_bitmask` - * :c:data:`generators_bitmask` - * :c:data:`n_int` + * :c:data:`mo_coef` + * :c:data:`mo_coef_begin_iteration` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`damping_scf` + * :c:func:`roothaan_hall_scf` .. c:function:: is_a_1h: @@ -3059,7 +2792,7 @@ Subroutines / functions 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 + this is calculated using the act_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 @@ -3068,10 +2801,10 @@ Subroutines / functions .. hlist:: :columns: 3 - * :c:data:`cas_bitmask` - * :c:data:`reunion_of_core_inact_bitmask` - * :c:data:`list_inact` + * :c:data:`act_bitmask` * :c:data:`n_int` + * :c:data:`reunion_of_core_inact_bitmask` + * :c:data:`virt_bitmask` .. c:function:: is_i_in_virtual: @@ -3090,8 +2823,27 @@ Subroutines / functions .. hlist:: :columns: 3 - * :c:data:`list_inact` * :c:data:`n_int` + * :c:data:`virt_bitmask` + + +.. c:function:: is_integer_in_string: + + + File : :file:`bitmask/bitmasks_routines.irp.f` + + .. code:: fortran + + logical function is_integer_in_string(bite,string,Nint) + + + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`set_bit_to_integer` .. c:function:: is_the_hole_in_det: @@ -3150,8 +2902,29 @@ Subroutines / functions .. hlist:: :columns: 3 + * :c:data:`act_bitmask` + * :c:data:`core_bitmask` + * :c:data:`del_bitmask` + * :c:func:`generate_cas_space` * :c:data:`hf_bitmask` - * :c:data:`list_inact` + * :c:data:`inact_bitmask` + * :c:func:`orb_range_2_rdm_openmp_work_1` + * :c:func:`orb_range_2_rdm_openmp_work_2` + * :c:func:`orb_range_2_rdm_openmp_work_3` + * :c:func:`orb_range_2_rdm_openmp_work_4` + * :c:func:`orb_range_2_rdm_openmp_work_n_int` + * :c:func:`orb_range_2_rdm_state_av_openmp_work_1` + * :c:func:`orb_range_2_rdm_state_av_openmp_work_2` + * :c:func:`orb_range_2_rdm_state_av_openmp_work_3` + * :c:func:`orb_range_2_rdm_state_av_openmp_work_4` + * :c:func:`orb_range_2_rdm_state_av_openmp_work_n_int` + * :c:func:`orb_range_2_trans_rdm_openmp_work_1` + * :c:func:`orb_range_2_trans_rdm_openmp_work_2` + * :c:func:`orb_range_2_trans_rdm_openmp_work_3` + * :c:func:`orb_range_2_trans_rdm_openmp_work_4` + * :c:func:`orb_range_2_trans_rdm_openmp_work_n_int` + * :c:data:`ormas_bitmask` + * :c:data:`virt_bitmask` .. c:function:: modify_bitmasks_for_hole: @@ -3172,10 +2945,9 @@ Subroutines / functions .. hlist:: :columns: 3 - * :c:data:`n_generators_bitmask` * :c:data:`generators_bitmask` - * :c:data:`n_int` * :c:data:`index_holes_bitmask` + * :c:data:`n_int` .. c:function:: modify_bitmasks_for_hole_in_out: @@ -3196,7 +2968,6 @@ Subroutines / functions .. hlist:: :columns: 3 - * :c:data:`n_generators_bitmask` * :c:data:`generators_bitmask` * :c:data:`index_holes_bitmask` @@ -3219,9 +2990,8 @@ Subroutines / functions .. hlist:: :columns: 3 - * :c:data:`index_particl_bitmask` - * :c:data:`n_generators_bitmask` * :c:data:`generators_bitmask` + * :c:data:`index_particl_bitmask` * :c:data:`n_int` @@ -3236,15 +3006,38 @@ Subroutines / functions Function that returns the number of holes in the inact space + + popcnt( + xor( + iand( + reunion_of_core_inact_bitmask(1,1), + xor( + key_in(1,1), + iand( + key_in(1,1), + act_bitmask(1,1)) + ) + ), + reunion_of_core_inact_bitmask(1,1)) ) + + (key_in && act_bitmask) + +---------------------+ + electrons in cas xor key_in + +---------------------------------+ + electrons outside of cas && reunion_of_core_inact_bitmask + +------------------------------------------------------------------+ + electrons in the core/inact space xor reunion_of_core_inact_bitmask + +---------------------------------------------------------------------------------+ + holes Needs: .. hlist:: :columns: 3 - * :c:data:`cas_bitmask` - * :c:data:`reunion_of_core_inact_bitmask` + * :c:data:`act_bitmask` * :c:data:`n_int` + * :c:data:`reunion_of_core_inact_bitmask` .. c:function:: number_of_holes_verbose: @@ -3264,9 +3057,9 @@ Subroutines / functions .. hlist:: :columns: 3 - * :c:data:`cas_bitmask` - * :c:data:`reunion_of_core_inact_bitmask` + * :c:data:`act_bitmask` * :c:data:`n_int` + * :c:data:`reunion_of_core_inact_bitmask` Calls: @@ -3293,9 +3086,9 @@ Subroutines / functions .. hlist:: :columns: 3 - * :c:data:`cas_bitmask` - * :c:data:`list_inact` + * :c:data:`act_bitmask` * :c:data:`n_int` + * :c:data:`virt_bitmask` .. c:function:: number_of_particles_verbose: @@ -3315,9 +3108,9 @@ Subroutines / functions .. hlist:: :columns: 3 - * :c:data:`cas_bitmask` - * :c:data:`list_inact` + * :c:data:`act_bitmask` * :c:data:`n_int` + * :c:data:`virt_bitmask` Calls: @@ -3327,6 +3120,28 @@ Subroutines / functions * :c:func:`debug_det` +.. c:function:: ormas_occ: + + + File : :file:`bitmask/bitmasks_ormas.irp.f` + + .. code:: fortran + + subroutine ormas_occ(key_in, occupancies) + + + number of electrons in each ormas space + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_int` + * :c:data:`ormas_bitmask` + * :c:data:`ormas_n_space` + + .. c:function:: print_det: @@ -3346,10 +3161,7 @@ Subroutines / functions * :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: @@ -3359,42 +3171,34 @@ Subroutines / functions * :c:func:`bitstring_to_str` -.. c:function:: print_generators_bitmasks_holes: +.. c:function:: print_det_one_dimension: - File : :file:`bitmask/modify_bitmasks.irp.f` + File : :file:`bitmask/bitmasks_routines.irp.f` .. code:: fortran - subroutine print_generators_bitmasks_holes - - - - Needs: + subroutine print_det_one_dimension(string,Nint) - .. hlist:: - :columns: 3 - * :c:data:`generators_bitmask` - * :c:data:`n_int` - * :c:data:`index_holes_bitmask` + Subroutine to print the content of a determinant using the '+-' notation Calls: .. hlist:: :columns: 3 - * :c:func:`print_det` + * :c:func:`bitstring_to_str` -.. c:function:: print_generators_bitmasks_holes_for_one_generator: +.. c:function:: print_generators_bitmasks_holes: File : :file:`bitmask/modify_bitmasks.irp.f` .. code:: fortran - subroutine print_generators_bitmasks_holes_for_one_generator(i_gen) + subroutine print_generators_bitmasks_holes @@ -3404,15 +3208,8 @@ Subroutines / functions :columns: 3 * :c:data:`generators_bitmask` - * :c:data:`n_int` * :c:data:`index_holes_bitmask` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`print_det` + * :c:data:`n_int` .. c:function:: print_generators_bitmasks_particles: @@ -3431,8 +3228,8 @@ Subroutines / functions .. hlist:: :columns: 3 - * :c:data:`index_particl_bitmask` * :c:data:`generators_bitmask` + * :c:data:`index_particl_bitmask` * :c:data:`n_int` Calls: @@ -3443,59 +3240,72 @@ Subroutines / functions * :c:func:`print_det` -.. c:function:: print_generators_bitmasks_particles_for_one_generator: +.. c:function:: print_spindet: - File : :file:`bitmask/modify_bitmasks.irp.f` + File : :file:`bitmask/bitmasks_routines.irp.f` .. code:: fortran - subroutine print_generators_bitmasks_particles_for_one_generator(i_gen) + subroutine print_spindet(string,Nint) + Subroutine to print the content of a determinant using the '+-' notation - Needs: + Called by: .. hlist:: :columns: 3 - * :c:data:`index_particl_bitmask` - * :c:data:`generators_bitmask` - * :c:data:`n_int` + * :c:func:`debug_spindet` Calls: .. hlist:: :columns: 3 - * :c:func:`print_det` + * :c:func:`bitstring_to_str` -.. c:function:: print_spindet: +.. c:function:: reorder_core_orb: - File : :file:`bitmask/bitmasks_routines.irp.f` + File : :file:`bitmask/track_orb.irp.f` .. code:: fortran - subroutine print_spindet(string,Nint) + subroutine reorder_core_orb - Subroutine to print the content of a determinant using the '+-' notation + 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:`ao_num` + * :c:data:`ao_overlap` + * :c:data:`list_core` + * :c:data:`mo_coef` + * :c:data:`mo_coef_begin_iteration` + * :c:data:`mo_num` + * :c:data:`n_core_orb` Called by: .. hlist:: :columns: 3 - * :c:func:`debug_spindet` + * :c:func:`damping_scf` + * :c:func:`roothaan_hall_scf` Calls: .. hlist:: :columns: 3 - * :c:func:`bitstring_to_str` + * :c:func:`dsort` .. c:function:: set_bit_to_integer: @@ -3516,6 +3326,8 @@ Subroutines / functions :columns: 3 * :c:func:`example_bitmask` + * :c:func:`is_integer_in_string` + * :c:data:`orb_swap` .. c:function:: set_bitmask_hole_as_input: @@ -3525,21 +3337,20 @@ Subroutines / functions .. code:: fortran - subroutine set_bitmask_hole_as_input(input_bimask) + subroutine set_bitmask_hole_as_input(input_bitmask) set the generators_bitmask for the holes - as the input_bimask + as the input_bitmask Needs: .. hlist:: :columns: 3 - * :c:data:`n_generators_bitmask` * :c:data:`generators_bitmask` - * :c:data:`n_int` * :c:data:`index_holes_bitmask` + * :c:data:`n_int` Touches: @@ -3556,20 +3367,19 @@ Subroutines / functions .. code:: fortran - subroutine set_bitmask_particl_as_input(input_bimask) + subroutine set_bitmask_particl_as_input(input_bitmask) set the generators_bitmask for the particles - as the input_bimask + as the input_bitmask Needs: .. hlist:: :columns: 3 - * :c:data:`index_particl_bitmask` - * :c:data:`n_generators_bitmask` * :c:data:`generators_bitmask` + * :c:data:`index_particl_bitmask` * :c:data:`n_int` Touches: diff --git a/docs/source/modules/cipsi.rst b/docs/source/modules/cipsi.rst index 77212469f..75f3e0ef1 100644 --- a/docs/source/modules/cipsi.rst +++ b/docs/source/modules/cipsi.rst @@ -28,11 +28,11 @@ The :c:func:`run_cipsi` subroutine iteratively: 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 +of the stochastic |PT2| :cite:`Garniron_2017b`. 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`. + presented in :cite:`Garniron_2017b`. * 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 @@ -138,87 +138,134 @@ value is stable with the number of points. EZFIO parameters ---------------- -.. option:: pert_2rdm +.. option:: save_wf_after_selection - If true, computes the one- and two-body rdms with perturbation theory + If true, saves the wave function after the selection, before the diagonalization Default: False +.. option:: seniority_max + + Maximum number of allowed open shells. Using -1 selects all determinants + + Default: -1 + +.. option:: excitation_ref + + 1: Hartree-Fock determinant, 2:All determinants of the dominant configuration + + Default: 1 + +.. option:: excitation_max + + Maximum number of excitation with respect to the Hartree-Fock determinant. Using -1 selects all determinants + + Default: -1 + +.. option:: excitation_alpha_max + + Maximum number of excitation for alpha determinants with respect to the Hartree-Fock determinant. Using -1 selects all determinants + + Default: -1 + +.. option:: excitation_beta_max + + Maximum number of excitation for beta determinants with respect to the Hartree-Fock determinant. Using -1 selects all determinants + + Default: -1 + +.. option:: twice_hierarchy_max + + Twice the maximum hierarchy parameter (excitation degree plus half the seniority number). Using -1 selects all determinants + + Default: -1 + Providers --------- -.. c:var:: global_selection_buffer +.. c:var:: initialize_pt2_e0_denominator - File : :file:`cipsi/run_pt2_slave.irp.f` + File : :file:`cipsi/energy.irp.f` .. code:: fortran - type(selection_buffer) :: global_selection_buffer + logical :: initialize_pt2_e0_denominator - Global buffer for the OpenMP selection + If true, initialize pt2_E0_denominator - Needs: + Needed by: .. hlist:: :columns: 3 - * :c:data:`global_selection_buffer_lock` - * :c:data:`n_det_generators` - * :c:data:`n_int` - + * :c:data:`pt2_e0_denominator` -.. c:var:: global_selection_buffer_lock +.. c:var:: pt2_e0_denominator - File : :file:`cipsi/run_pt2_slave.irp.f` + File : :file:`cipsi/energy.irp.f` .. code:: fortran - integer(omp_lock_kind) :: global_selection_buffer_lock + double precision, allocatable :: pt2_e0_denominator (N_states) - Global buffer for the OpenMP selection + E0 in the denominator of the PT2 - Needed by: + Needs: .. hlist:: :columns: 3 - * :c:data:`global_selection_buffer` + * :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_coef` + * :c:data:`psi_det_hii` + * :c:data:`psi_energy` + -.. c:var:: initialize_pt2_e0_denominator + +Subroutines / functions +----------------------- + +.. c:function:: bitstring_to_list_in_selection: - File : :file:`cipsi/energy.irp.f` + File : :file:`cipsi/selection.irp.f` .. code:: fortran - logical :: initialize_pt2_e0_denominator + subroutine bitstring_to_list_in_selection( string, list, n_elements, Nint) - If true, initialize pt2_E0_denominator + Gives the indices(+1) of the bits set to 1 in the bit string - Needed by: + Called by: .. hlist:: :columns: 3 - * :c:data:`pt2_e0_denominator` + * :c:func:`splash_pq` + * :c:func:`spot_isinwf` -.. c:var:: list_orb_pert_rdm +.. c:function:: fill_buffer_double: - File : :file:`cipsi/pert_rdm_providers.irp.f` + File : :file:`cipsi/selection.irp.f_template_915` .. code:: fortran - integer, allocatable :: list_orb_pert_rdm (n_orb_pert_rdm) + subroutine fill_buffer_double(i_generator, sp, h1, h2, bannedOrb, banned, fock_diag_tmp, E0, pt2_data, mat, buf) @@ -227,40 +274,64 @@ Providers .. hlist:: :columns: 3 - * :c:data:`list_act` - * :c:data:`n_orb_pert_rdm` - - - -.. c:var:: list_orb_reverse_pert_rdm - - - File : :file:`cipsi/pert_rdm_providers.irp.f` - - .. code:: fortran + * :c:data:`c0_weight` + * :c:data:`det_to_configuration` + * :c:data:`do_only_1h1p` + * :c:data:`do_ormas` + * :c:data:`dominant_dets_of_cfgs` + * :c:data:`elec_alpha_num` + * :c:data:`excitation_alpha_max` + * :c:data:`excitation_beta_max` + * :c:data:`excitation_max` + * :c:data:`excitation_ref` + * :c:data:`h0_type` + * :c:data:`hf_bitmask` + * :c:data:`mo_integrals_threshold` + * :c:data:`mo_num` + * :c:data:`n_dominant_dets_of_cfgs` + * :c:data:`n_int` + * :c:data:`n_states` + * :c:data:`pseudo_sym` + * :c:data:`psi_configuration_hii` + * :c:data:`psi_det_generators` + * :c:data:`psi_det_hii` + * :c:data:`selection_weight` + * :c:data:`seniority_max` + * :c:data:`thresh_sym` + * :c:data:`twice_hierarchy_max` + * :c:data:`weight_selection` - integer, allocatable :: list_orb_reverse_pert_rdm (mo_num) + Called by: + .. hlist:: + :columns: 3 + * :c:func:`select_singles_and_doubles` - Needs: + Calls: .. hlist:: :columns: 3 - * :c:data:`list_act` - * :c:data:`mo_num` - + * :c:func:`add_to_selection_buffer` + * :c:func:`apply_hole` + * :c:func:`apply_holes` + * :c:func:`apply_particle` + * :c:func:`apply_particles` + * :c:func:`configuration_to_dets_size` + * :c:func:`dsyev` + * :c:func:`get_excitation_degree` + * :c:func:`get_excitation_degree_spin` -.. c:var:: n_orb_pert_rdm +.. c:function:: fill_buffer_single: - File : :file:`cipsi/pert_rdm_providers.irp.f` + File : :file:`cipsi/selection.irp.f_template_915` .. code:: fortran - integer :: n_orb_pert_rdm + subroutine fill_buffer_single(i_generator, sp, h1, h2, bannedOrb, banned, fock_diag_tmp, E0, pt2_data, mat, buf) @@ -269,60 +340,103 @@ Providers .. hlist:: :columns: 3 - * :c:data:`n_act_orb` + * :c:data:`c0_weight` + * :c:data:`det_to_configuration` + * :c:data:`do_only_1h1p` + * :c:data:`do_ormas` + * :c:data:`dominant_dets_of_cfgs` + * :c:data:`elec_alpha_num` + * :c:data:`excitation_alpha_max` + * :c:data:`excitation_beta_max` + * :c:data:`excitation_max` + * :c:data:`excitation_ref` + * :c:data:`h0_type` + * :c:data:`hf_bitmask` + * :c:data:`mo_integrals_threshold` + * :c:data:`mo_num` + * :c:data:`n_dominant_dets_of_cfgs` + * :c:data:`n_int` + * :c:data:`n_states` + * :c:data:`pseudo_sym` + * :c:data:`psi_configuration_hii` + * :c:data:`psi_det_generators` + * :c:data:`psi_det_hii` + * :c:data:`selection_weight` + * :c:data:`seniority_max` + * :c:data:`thresh_sym` + * :c:data:`twice_hierarchy_max` + * :c:data:`weight_selection` - Needed by: + Called by: .. hlist:: :columns: 3 - * :c:data:`list_orb_pert_rdm` - * :c:data:`pert_2rdm_provider` + * :c:func:`select_singles` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`add_to_selection_buffer` + * :c:func:`apply_hole` + * :c:func:`apply_holes` + * :c:func:`apply_particle` + * :c:func:`apply_particles` + * :c:func:`configuration_to_dets_size` + * :c:func:`dsyev` + * :c:func:`get_excitation_degree` + * :c:func:`get_excitation_degree_spin` -.. c:var:: nthreads_pt2 +.. c:function:: get_d0: - File : :file:`cipsi/environment.irp.f` + File : :file:`cipsi/selection.irp.f` .. code:: fortran - integer :: nthreads_pt2 + subroutine get_d0(gen, phasemask, bannedOrb, banned, mat, mask, h, p, sp, coefs) - Number of threads for Davidson Needs: .. hlist:: :columns: 3 - * :c:data:`mpi_master` - * :c:data:`nproc` - - - -.. c:var:: pert_2rdm_lock - + * :c:data:`mo_integrals_map` + * :c:data:`mo_integrals_threshold` + * :c:data:`mo_num` + * :c:data:`n_int` + * :c:data:`n_states` - File : :file:`cipsi/pert_rdm_providers.irp.f` + Called by: - .. code:: fortran + .. hlist:: + :columns: 3 - integer(omp_lock_kind) :: pert_2rdm_lock + * :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:var:: pert_2rdm_provider +.. c:function:: get_d0_reference: - File : :file:`cipsi/pert_rdm_providers.irp.f` + File : :file:`cipsi/selection_old.irp.f` .. code:: fortran - double precision, allocatable :: pert_2rdm_provider (n_orb_pert_rdm,n_orb_pert_rdm,n_orb_pert_rdm,n_orb_pert_rdm) + subroutine get_d0_reference(gen, phasemask, bannedOrb, banned, mat, mask, h, p, sp, coefs) @@ -331,22 +445,27 @@ Providers .. hlist:: :columns: 3 - * :c:data:`n_orb_pert_rdm` + * :c:data:`mo_num` + * :c:data:`n_int` + * :c:data:`n_states` + + Calls: + + .. hlist:: + :columns: 3 + * :c:func:`apply_particles` + * :c:func:`i_h_j` -.. c:var:: pt2_cw +.. c:function:: get_d1: - File : :file:`cipsi/pt2_stoch_routines.irp.f` + File : :file:`cipsi/selection.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) + subroutine get_d1(gen, phasemask, bannedOrb, banned, mat, mask, h, p, sp, coefs) @@ -355,59 +474,65 @@ Providers .. 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` + * :c:data:`mo_integrals_map` + * :c:data:`mo_num` + * :c:data:`n_int` + * :c:data:`n_states` - Needed by: + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`splash_pq` + + Calls: .. hlist:: :columns: 3 - * :c:data:`pt2_f` - * :c:data:`pt2_j` + * :c:func:`apply_particles` + * :c:func:`get_mo_two_e_integrals` + * :c:func:`i_h_j` -.. c:var:: pt2_e0_denominator +.. c:function:: get_d1_reference: - File : :file:`cipsi/energy.irp.f` + File : :file:`cipsi/selection_old.irp.f` .. code:: fortran - double precision, allocatable :: pt2_e0_denominator (N_states) + subroutine get_d1_reference(gen, phasemask, bannedOrb, banned, mat, mask, h, p, sp, coefs) - 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:`mo_num` + * :c:data:`n_int` * :c:data:`n_states` - * :c:data:`nuclear_repulsion` - * :c:data:`psi_coef` - * :c:data:`psi_det_hii` - * :c:data:`psi_energy` + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`apply_particles` + * :c:func:`i_h_j` -.. c:var:: pt2_f +.. c:function:: get_d2: - File : :file:`cipsi/pt2_stoch_routines.irp.f` + File : :file:`cipsi/selection.irp.f` .. code:: fortran - integer, allocatable :: pt2_f (N_det_generators) - integer :: pt2_n_tasks_max + subroutine get_d2(gen, phasemask, bannedOrb, banned, mat, mask, h, p, sp, coefs) @@ -416,84 +541,84 @@ Providers .. hlist:: :columns: 3 - * :c:data:`elec_alpha_num` - * :c:data:`elec_beta_num` - * :c:data:`mpi_master` - * :c:data:`n_core_orb` - * :c:data:`n_det_generators` - * :c:data:`pt2_min_parallel_tasks` - * :c:data:`pt2_n_teeth` - * :c:data:`pt2_w` + * :c:data:`mo_integrals_threshold` + * :c:data:`mo_num` + * :c:data:`n_int` + * :c:data:`n_states` + + Called by: + + .. hlist:: + :columns: 3 + * :c:func:`splash_pq` -.. c:var:: pt2_j +.. c:function:: get_d2_reference: - File : :file:`cipsi/pt2_stoch_routines.irp.f` + File : :file:`cipsi/selection_old.irp.f` .. code:: fortran - integer, allocatable :: pt2_j (N_det_generators) - integer, allocatable :: pt2_r (N_det_generators) + subroutine get_d2_reference(gen, phasemask, bannedOrb, banned, mat, mask, h, p, sp, coefs) - pt2_J contains the list of generators after ordering them according to the - Monte Carlo sampling. - - pt2_R(i) is the number of combs drawn when determinant i is computed. 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:data:`mo_num` + * :c:data:`n_int` + * :c:data:`n_states` -.. c:var:: pt2_match_weight +.. c:function:: get_m0: - File : :file:`cipsi/selection.irp.f` + File : :file:`cipsi/selection_singles.irp.f` .. code:: fortran - double precision, allocatable :: pt2_match_weight (N_states) + subroutine get_m0(gen, phasemask, bannedOrb, vect, mask, h, p, sp, coefs) - Weights adjusted along the selection to make the PT2 contributions - of each state coincide. Needs: .. hlist:: :columns: 3 + * :c:data:`mo_num` + * :c:data:`n_int` * :c:data:`n_states` - Needed by: + Called by: .. hlist:: :columns: 3 - * :c:data:`selection_weight` + * :c:func:`splash_p` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`apply_particle` + * :c:func:`i_h_j` -.. c:var:: pt2_mindetinfirstteeth +.. c:function:: get_m1: - File : :file:`cipsi/pt2_stoch_routines.irp.f` + File : :file:`cipsi/selection_singles.irp.f` .. code:: fortran - integer :: pt2_n_teeth - integer :: pt2_mindetinfirstteeth + subroutine get_m1(gen, phasemask, bannedOrb, vect, mask, h, p, sp, coefs) @@ -502,1782 +627,34 @@ Providers .. hlist:: :columns: 3 - * :c:data:`mpi_master` - * :c:data:`n_det_generators` - * :c:data:`psi_det_sorted_gen` - * :c:data:`pt2_stoch_istate` + * :c:data:`mo_num` + * :c:data:`n_int` + * :c:data:`n_states` - Needed by: + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`splash_p` + + Calls: .. hlist:: :columns: 3 - * :c:data:`pt2_f` - * :c:data:`pt2_j` - * :c:data:`pt2_w` + * :c:func:`apply_particle` + * :c:func:`i_h_j` -.. c:var:: pt2_n_0 +.. c:function:: get_m2: - File : :file:`cipsi/pt2_stoch_routines.irp.f` + File : :file:`cipsi/selection_singles.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_f` - * :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_alpha_num` - * :c:data:`elec_beta_num` - * :c:data:`mpi_master` - * :c:data:`n_core_orb` - * :c:data:`n_det_generators` - * :c:data:`pt2_min_parallel_tasks` - * :c:data:`pt2_n_teeth` - * :c:data:`pt2_w` - - - -.. 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_f` - * :c:data:`pt2_j` - * :c:data:`pt2_w` - - -.. c:var:: pt2_overlap - - - File : :file:`cipsi/energy.irp.f` - - .. code:: fortran - - double precision, allocatable :: pt2_overlap (N_states,N_states) - - - Overlap between the perturbed wave functions - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`n_states` - - - -.. 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) - - - pt2_J contains the list of generators after ordering them according to the - Monte Carlo sampling. - - pt2_R(i) is the number of combs drawn when determinant i is computed. - - 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_f` - * :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_f` - * :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_f` - * :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` - * :c:data:`pt2_match_weight` - * :c:data:`state_average_weight` - * :c:data:`variance_match_weight` - * :c:data:`weight_selection` - - - -.. c:var:: variance_match_weight - - - File : :file:`cipsi/selection.irp.f` - - .. code:: fortran - - double precision, allocatable :: variance_match_weight (N_states) - - - Weights adjusted along the selection to make the variances - of each state coincide. - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`n_states` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`selection_weight` - - - -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:`fill_buffer_double_rdm` - * :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, size_in, res) - - - Allocates the memory for a selection buffer. - The arrays have dimension size_in and the maximum number of elements is N - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`n_int` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:data:`global_selection_buffer` - * :c:func:`pt2_collector` - * :c:func:`run_pt2_slave_large` - * :c:func:`run_pt2_slave_small` - * :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:data:`global_selection_buffer` - * :c:func:`pt2_collector` - * :c:func:`run_pt2_slave_large` - * :c:func:`run_pt2_slave_small` - * :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_data, mat, buf) - - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`det_to_occ_pattern` - * :c:data:`do_only_1h1p` - * :c:data:`h0_type` - * :c:data:`mo_num` - * :c:data:`n_int` - * :c:data:`n_states` - * :c:data:`pseudo_sym` - * :c:data:`psi_det_generators` - * :c:data:`psi_det_hii` - * :c:data:`psi_occ_pattern_hii` - * :c:data:`selection_weight` - * :c:data:`thresh_sym` - * :c:data:`weight_selection` - - 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:func:`dsyevd` - - -.. c:function:: fill_buffer_double_rdm: - - - File : :file:`cipsi/pert_rdm_providers.irp.f` - - .. code:: fortran - - subroutine fill_buffer_double_rdm(i_generator, sp, h1, h2, bannedOrb, banned, fock_diag_tmp, E0, pt2_data, mat, buf, psi_det_connection, psi_coef_connection_reverse, n_det_connection) - - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`det_to_occ_pattern` - * :c:data:`do_only_1h1p` - * :c:data:`h0_type` - * :c:data:`hf_bitmask` - * :c:data:`mo_num` - * :c:data:`n_int` - * :c:data:`n_orb_pert_rdm` - * :c:data:`n_states` - * :c:data:`pert_2rdm_lock` - * :c:data:`pert_2rdm_provider` - * :c:data:`psi_det_generators` - * :c:data:`psi_det_hii` - * :c:data:`psi_occ_pattern_hii` - * :c:data:`selection_weight` - * :c:data:`weight_selection` - - 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:func:`get_excitation_degree` - * :c:func:`give_2rdm_pert_contrib` - * :c:func:`update_keys_values` - - -.. 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:`mo_integrals_map` - * :c:data:`mo_num` - * :c:data:`n_int` - * :c:data:`n_states` - - 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_d0_reference: - - - File : :file:`cipsi/selection.irp.f` - - .. code:: fortran - - subroutine get_d0_reference(gen, phasemask, bannedOrb, banned, mat, mask, h, p, sp, coefs) - - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`mo_num` - * :c:data:`n_int` - * :c:data:`n_states` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`apply_particles` - * :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:`mo_integrals_map` - * :c:data:`mo_num` - * :c:data:`n_int` - * :c:data:`n_states` - - 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_reference: - - - File : :file:`cipsi/selection.irp.f` - - .. code:: fortran - - subroutine get_d1_reference(gen, phasemask, bannedOrb, banned, mat, mask, h, p, sp, coefs) - - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`mo_num` - * :c:data:`n_int` - * :c:data:`n_states` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`apply_particles` - * :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:`mo_num` - * :c:data:`n_int` - * :c:data:`n_states` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`splash_pq` - - -.. c:function:: get_d2_reference: - - - File : :file:`cipsi/selection.irp.f` - - .. code:: fortran - - subroutine get_d2_reference(gen, phasemask, bannedOrb, banned, mat, mask, h, p, sp, coefs) - - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`mo_num` - * :c:data:`n_int` - * :c:data:`n_states` - - -.. 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:: give_2rdm_pert_contrib: - - - File : :file:`cipsi/update_2rdm.irp.f` - - .. code:: fortran - - subroutine give_2rdm_pert_contrib(det,coef,psi_det_connection,psi_coef_connection_reverse,n_det_connection,nkeys,keys,values,sze_buff) - - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`elec_alpha_num` - * :c:data:`n_int` - * :c:data:`n_orb_pert_rdm` - * :c:data:`n_states` - * :c:data:`pert_2rdm_lock` - * :c:data:`pert_2rdm_provider` - * :c:data:`state_average_weight` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`fill_buffer_double_rdm` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`get_excitation` - * :c:func:`update_buffer_single_exc_rdm` - * :c:func:`update_keys_values` - - -.. 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_large` - - 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:`ci_energy` - * :c:data:`generators_bitmask` - * :c:data:`h_apply_buffer_allocated` - * :c:data:`mo_num` - * :c:data:`mo_two_e_integrals_in_map` - * :c:data:`mpi_master` - * :c:data:`n_det` - * :c:data:`n_det_generators` - * :c:data:`n_det_selectors` - * :c:data:`n_int` - * :c:data:`n_states` - * :c:data:`n_states_diag` - * :c:data:`pseudo_sym` - * :c:data:`psi_coef` - * :c:data:`psi_det_generators` - * :c:data:`psi_det` - * :c:data:`psi_det_generators` - * :c:data:`psi_det_sorted_bit` - * :c:data:`psi_selectors` - * :c:data:`pt2_e0_denominator` - * :c:data:`pt2_stoch_istate` - * :c:data:`selection_weight` - * :c:data:`state_average_weight` - * :c:data:`threshold_generators` - * :c:data:`zmq_context` - * :c:data:`zmq_state` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`run_slave_cipsi` - - -.. c:function:: pt2_add: - - - File : :file:`cipsi/pt2_type.irp.f` - - .. code:: fortran - - subroutine pt2_add(p1, w, p2) - - - p1 =! p1 +( w * p2) - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`pt2_collector` - * :c:func:`selection_collector` - - -.. c:function:: pt2_add2: - - - File : :file:`cipsi/pt2_type.irp.f` - - .. code:: fortran - - subroutine pt2_add2(p1, w, p2) - - - p1 =! p1 +( w * p2**2) - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`pt2_collector` - - -.. c:function:: pt2_addr: - - - File : :file:`cipsi/pt2_type.irp.f` - - .. code:: fortran - - subroutine pt2_addr(p1, a, b, p2) - - - p1 =! p1 +( a / b * p2) - - -.. c:function:: pt2_alloc: - - - File : :file:`cipsi/pt2_type.irp.f` - - .. code:: fortran - - subroutine pt2_alloc(pt2_data,N) - - - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`pt2_collector` - * :c:func:`run_cipsi` - * :c:func:`run_pt2_slave_large` - * :c:func:`run_pt2_slave_small` - * :c:func:`run_selection_slave` - * :c:func:`run_stochastic_cipsi` - * :c:func:`selection_collector` - - -.. c:function:: pt2_collector: - - - File : :file:`cipsi/pt2_stoch_routines.irp.f` - - .. code:: fortran - - subroutine pt2_collector(zmq_socket_pull, E, relative_error, pt2_data, pt2_data_err, b, N_) - - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`n_det_generators` - * :c:data:`n_states` - * :c:data:`pt2_f` - * :c:data:`pt2_j` - * :c:data:`pt2_n_teeth` - * :c:data:`pt2_stoch_istate` - * :c:data:`pt2_u` - * :c:data:`pt2_w` - - 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:`pt2_add` - * :c:func:`pt2_add2` - * :c:func:`pt2_alloc` - * :c:func:`pt2_dealloc` - * :c:func:`pull_pt2_results` - * :c:func:`sleep` - * :c:func:`sort_selection_buffer` - * :c:func:`wall_time` - - -.. c:function:: pt2_dealloc: - - - File : :file:`cipsi/pt2_type.irp.f` - - .. code:: fortran - - subroutine pt2_dealloc(pt2_data) - - - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`pt2_collector` - * :c:func:`run_cipsi` - * :c:func:`run_pt2_slave_large` - * :c:func:`run_pt2_slave_small` - * :c:func:`run_selection_slave` - * :c:func:`run_stochastic_cipsi` - * :c:func:`selection_collector` - - -.. c:function:: pt2_deserialize: - - - File : :file:`cipsi/pt2_type.irp.f` - - .. code:: fortran - - subroutine pt2_deserialize(pt2_data, n, x) - - - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`pull_pt2_results` - * :c:func:`pull_selection_results` - - -.. 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_serialize: - - - File : :file:`cipsi/pt2_type.irp.f` - - .. code:: fortran - - subroutine pt2_serialize(pt2_data, n, x) - - - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`push_pt2_results_async_send` - * :c:func:`push_selection_results` - - -.. 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:`global_selection_buffer` - * :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_data, task_id, n_tasks, b) - - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`n_int` - * :c:data:`n_states` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`pt2_collector` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`pt2_deserialize` - - -.. c:function:: pull_selection_results: - - - File : :file:`cipsi/run_selection_slave.irp.f` - - .. code:: fortran - - subroutine pull_selection_results(zmq_socket_pull, pt2_data, val, det, N, task_id, ntasks) - - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`n_int` - * :c:data:`n_states` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`selection_collector` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`pt2_deserialize` - - -.. c:function:: push_pt2_results: - - - File : :file:`cipsi/run_pt2_slave.irp.f` - - .. code:: fortran - - subroutine push_pt2_results(zmq_socket_push, index, pt2_data, b, task_id, n_tasks) - - - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`run_pt2_slave_small` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`push_pt2_results_async_recv` - * :c:func:`push_pt2_results_async_send` - - -.. c:function:: push_pt2_results_async_recv: - - - File : :file:`cipsi/run_pt2_slave.irp.f` - - .. code:: fortran - - subroutine push_pt2_results_async_recv(zmq_socket_push,mini,sending) - - - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`push_pt2_results` - * :c:func:`run_pt2_slave_large` - - -.. c:function:: push_pt2_results_async_send: - - - File : :file:`cipsi/run_pt2_slave.irp.f` - - .. code:: fortran - - subroutine push_pt2_results_async_send(zmq_socket_push, index, pt2_data, b, task_id, n_tasks, sending) - - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`n_int` - * :c:data:`n_states` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`push_pt2_results` - * :c:func:`run_pt2_slave_large` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`pt2_serialize` - - -.. c:function:: push_selection_results: - - - File : :file:`cipsi/run_selection_slave.irp.f` - - .. code:: fortran - - subroutine push_selection_results(zmq_socket_push, pt2_data, b, task_id, ntasks) - - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`n_int` - * :c:data:`n_states` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`run_selection_slave` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`pt2_serialize` - - -.. 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:`do_pt2` - * :c:data:`h_apply_buffer_allocated` - * :c:data:`n_det` - * :c:data:`n_det_max` - * :c:data:`n_iter` - * :c:data:`n_states` - * :c:data:`n_states_diag` - * :c:data:`psi_coef` - * :c:data:`psi_det` - * :c:data:`psi_det_sorted` - * :c:data:`psi_energy` - * :c:data:`psi_energy_with_nucl_rep` - * :c:data:`psi_occ_pattern` - * :c:data:`pt2_max` - * :c:data:`pt2_relative_error` - * :c:data:`ref_bitmask_energy` - * :c:data:`s2_eig` - * :c:data:`selection_factor` - * :c:data:`threshold_generators` - * :c:data:`variance_max` - - 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:`pt2_alloc` - * :c:func:`pt2_dealloc` - * :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:`n_iter` - * :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_energy` - * :c:data:`psi_occ_pattern` - * :c:data:`psi_energy` - * :c:data:`pt2_match_weight` - * :c:data:`pt2_overlap` - * :c:data:`pt2_stoch_istate` - * :c:data:`selection_weight` - * :c:data:`state_average_weight` - * :c:data:`threshold_davidson_pt2` - * :c:data:`threshold_generators` - * :c:data:`variance_match_weight` - - -.. 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` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`pt2_slave_inproc` - * :c:func:`run_slave_main` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`run_pt2_slave_large` - - -.. c:function:: run_pt2_slave_large: - - - File : :file:`cipsi/run_pt2_slave.irp.f` - - .. code:: fortran - - subroutine run_pt2_slave_large(thread,iproc,energy) - - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`elec_alpha_num` - * :c:data:`global_selection_buffer` - * :c:data:`global_selection_buffer_lock` - * :c:data:`mo_num` - * :c:data:`n_states` - * :c:data:`n_states_diag` - * :c:data:`pt2_f` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`run_pt2_slave` - - 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:`omp_set_lock` - * :c:func:`omp_unset_lock` - * :c:func:`pt2_alloc` - * :c:func:`pt2_dealloc` - * :c:func:`push_pt2_results_async_recv` - * :c:func:`push_pt2_results_async_send` - * :c:func:`select_connected` - * :c:func:`sleep` - * :c:func:`sort_selection_buffer` - * :c:func:`wall_time` - - -.. c:function:: run_pt2_slave_small: - - - File : :file:`cipsi/run_pt2_slave.irp.f` - - .. code:: fortran - - subroutine run_pt2_slave_small(thread,iproc,energy) - - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`elec_alpha_num` - * :c:data:`mo_num` - * :c:data:`n_states` - * :c:data:`n_states_diag` - * :c:data:`nproc` - * :c:data:`pt2_f` - - 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:`pt2_alloc` - * :c:func:`pt2_dealloc` - * :c:func:`push_pt2_results` - * :c:func:`select_connected` - * :c:func:`sort_selection_buffer` - * :c:func:`usleep` - * :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) + subroutine get_m2(gen, phasemask, bannedOrb, vect, mask, h, p, sp, coefs) @@ -2286,108 +663,58 @@ Subroutines / functions .. hlist:: :columns: 3 + * :c:data:`mo_num` * :c:data:`n_int` * :c:data:`n_states` - * :c:data:`pseudo_sym` - * :c:data:`psi_bilinear_matrix_columns_loc` - * :c:data:`psi_bilinear_matrix_values` - * :c:data:`psi_bilinear_matrix_values` - * :c:data:`psi_bilinear_matrix_transp_values` - * :c:data:`psi_bilinear_matrix_transp_values` - * :c:data:`psi_bilinear_matrix_transp_rows_loc` - * :c:data:`psi_det_alpha_unique` - * :c:data:`psi_det_beta_unique` - * :c:data:`psi_det_sorted` - * :c:data:`psi_det_sorted` - * :c:data:`psi_selectors_coef_transp` - * :c:data:`pt2_f` - * :c:data:`weight_selection` 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:`pt2_alloc` - * :c:func:`pt2_dealloc` - * :c:func:`push_selection_results` - * :c:func:`select_connected` - * :c:func:`sort_selection_buffer` - * :c:func:`usleep` + * :c:func:`splash_p` -.. c:function:: run_slave_cipsi: +.. c:function:: get_mask_phase: - File : :file:`cipsi/slave_cipsi.irp.f` + File : :file:`cipsi/selection.irp.f` .. code:: fortran - subroutine run_slave_cipsi - - - Helper program for distributed parallelism - - Needs: + subroutine get_mask_phase(det1, pm, Nint) - .. hlist:: - :columns: 3 - * :c:data:`distributed_davidson` - * :c:data:`read_wf` Called by: .. hlist:: :columns: 3 - * :c:func:`fci` - * :c:func:`pt2` + * :c:func:`splash_p` + * :c:func:`splash_pq` - Calls: + +.. c:function:: get_phase_bi: - .. hlist:: - :columns: 3 - * :c:func:`omp_set_nested` - * :c:func:`provide_everything` - * :c:func:`run_slave_main` - * :c:func:`switch_qp_run_to_master` + File : :file:`cipsi/selection.irp.f` - Touches: + .. code:: fortran + + double precision function get_phase_bi(phasemask, s1, s2, h1, p1, h2, p2, Nint) - .. hlist:: - :columns: 3 - * :c:data:`distributed_davidson` - * :c:data:`pt2_e0_denominator` - * :c:data:`pt2_stoch_istate` - * :c:data:`read_wf` - * :c:data:`selection_weight` - * :c:data:`state_average_weight` - * :c:data:`threshold_generators` -.. c:function:: run_slave_main: +.. c:function:: provide_for_selection_slave: - File : :file:`cipsi/slave_cipsi.irp.f` + File : :file:`cipsi/run_selection_slave.irp.f` .. code:: fortran - subroutine run_slave_main + subroutine provide_for_selection_slave @@ -2396,79 +723,60 @@ Subroutines / functions .. hlist:: :columns: 3 - * :c:data:`det_to_occ_pattern` - * :c:data:`elec_alpha_num` - * :c:data:`global_selection_buffer` - * :c:data:`h0_type` - * :c:data:`mo_num` - * :c:data:`mpi_master` - * :c:data:`mpi_rank` - * :c:data:`n_det` - * :c:data:`n_det_generators` - * :c:data:`n_det_selectors` - * :c:data:`n_int` - * :c:data:`n_states` - * :c:data:`n_states_diag` - * :c:data:`nthreads_pt2` - * :c:data:`psi_coef` - * :c:data:`psi_det` - * :c:data:`pt2_e0_denominator` - * :c:data:`pt2_f` - * :c:data:`pt2_stoch_istate` - * :c:data:`qp_max_mem` - * :c:data:`selection_weight` - * :c:data:`state_average_weight` - * :c:data:`threshold_generators` - * :c:data:`zmq_context` - * :c:data:`zmq_state` + * :c:data:`psi_det_sorted` + * :c:data:`psi_det_sorted` + * :c:data:`psi_selectors_coef_transp` Called by: .. hlist:: :columns: 3 - * :c:func:`run_slave_cipsi` + * :c:func:`run_selection_slave` + + +.. c:function:: provide_for_zmq_pt2: - Calls: + + File : :file:`cipsi/pt2_stoch_routines.irp.f` + + .. code:: fortran + + subroutine provide_for_zmq_pt2 + + + + Needs: .. 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:`usleep` - * :c:func:`wait_for_states` - * :c:func:`wall_time` - * :c:func:`write_double` + * :c:data:`psi_det_hii` + * :c:data:`psi_det_sorted` + * :c:data:`psi_det_sorted` + * :c:data:`psi_selectors_coef_transp` - Touches: + Called by: .. hlist:: :columns: 3 - * :c:data:`pt2_e0_denominator` - * :c:data:`pt2_stoch_istate` - * :c:data:`selection_weight` - * :c:data:`state_average_weight` - * :c:data:`threshold_generators` + * :c:func:`run_slave_main` + * :c:func:`zmq_pt2` -.. c:function:: run_stochastic_cipsi: +.. c:function:: run_cipsi: - File : :file:`cipsi/stochastic_cipsi.irp.f` + File : :file:`cipsi/cipsi.irp.f` .. code:: fortran - subroutine run_stochastic_cipsi + subroutine run_cipsi - Selected Full Configuration Interaction with Stochastic selection and PT2. + Selected Full Configuration Interaction with deterministic selection and + stochastic PT2. Needs: @@ -2476,33 +784,27 @@ Subroutines / functions :columns: 3 * :c:data:`correlation_energy_ratio_max` + * :c:data:`do_pt2` * :c:data:`h_apply_buffer_allocated` * :c:data:`n_det` * :c:data:`n_det_max` - * :c:data:`n_iter` * :c:data:`n_states` * :c:data:`n_states_diag` * :c:data:`psi_coef` + * :c:data:`psi_configuration` * :c:data:`psi_det` * :c:data:`psi_det_sorted` * :c:data:`psi_energy` * :c:data:`psi_energy_with_nucl_rep` - * :c:data:`psi_occ_pattern` * :c:data:`pt2_max` * :c:data:`pt2_relative_error` * :c:data:`ref_bitmask_energy` * :c:data:`s2_eig` + * :c:data:`save_wf_after_selection` * :c:data:`selection_factor` * :c:data:`threshold_generators` * :c:data:`variance_max` - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`fci` - Calls: .. hlist:: @@ -2513,16 +815,19 @@ Subroutines / functions * :c:func:`diagonalize_ci` * :c:func:`ezfio_get_hartree_fock_energy` * :c:func:`ezfio_has_hartree_fock_energy` + * :c:func:`increment_n_iter` * :c:func:`make_s2_eigenfunction` * :c:func:`print_extrapolated_energy` + * :c:func:`print_mol_properties` * :c:func:`print_summary` * :c:func:`pt2_alloc` * :c:func:`pt2_dealloc` * :c:func:`save_energy` - * :c:func:`save_iterations` * :c:func:`save_wavefunction` + * :c:func:`write_cipsi_json` * :c:func:`write_double` * :c:func:`zmq_pt2` + * :c:func:`zmq_selection` Touches: @@ -2533,17 +838,16 @@ Subroutines / functions * :c:data:`ci_electronic_energy` * :c:data:`ci_energy` * :c:data:`ci_electronic_energy` + * :c:data:`psi_configuration` * :c:data:`n_det` - * :c:data:`n_iter` - * :c:data:`psi_occ_pattern` * :c:data:`c0_weight` * :c:data:`psi_coef` * :c:data:`psi_det_sorted_bit` + * :c:data:`psi_configuration` * :c:data:`psi_det` * :c:data:`psi_det_size` * :c:data:`psi_det_sorted_bit` * :c:data:`psi_energy` - * :c:data:`psi_occ_pattern` * :c:data:`psi_energy` * :c:data:`pt2_match_weight` * :c:data:`pt2_overlap` @@ -2555,191 +859,114 @@ Subroutines / functions * :c:data:`variance_match_weight` -.. c:function:: select_connected: - - - File : :file:`cipsi/selection.irp.f` - - .. code:: fortran - - subroutine select_connected(i_generator,E0,pt2_data,b,subset,csubset) - - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`generators_bitmask` - * :c:data:`mo_num` - * :c:data:`n_int` - * :c:data:`n_states` - * :c:data:`psi_det_generators` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`run_pt2_slave_large` - * :c:func:`run_pt2_slave_small` - * :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: +.. c:function:: run_stochastic_cipsi: - File : :file:`cipsi/selection.irp.f` + File : :file:`cipsi/stochastic_cipsi.irp.f` .. code:: fortran - subroutine select_singles_and_doubles(i_generator,hole_mask,particle_mask,fock_diag_tmp,E0,pt2_data,buf,subset,csubset) + subroutine run_stochastic_cipsi(Ev,PT2) - WARNING /!\ : It is assumed that the generators and selectors are psi_det_sorted + Selected Full Configuration Interaction with Stochastic selection and PT2. Needs: .. hlist:: :columns: 3 - * :c:data:`banned_excitation` - * :c:data:`mo_num` + * :c:data:`correlation_energy_ratio_max` + * :c:data:`distributed_davidson` + * :c:data:`h_apply_buffer_allocated` + * :c:data:`mo_two_e_integrals_in_map` * :c:data:`n_det` - * :c:data:`n_det_selectors` - * :c:data:`n_int` + * :c:data:`n_det_max` * :c:data:`n_states` - * :c:data:`pert_2rdm` - * :c:data:`psi_bilinear_matrix_columns_loc` - * :c:data:`psi_bilinear_matrix_values` - * :c:data:`psi_bilinear_matrix_values` - * :c:data:`psi_bilinear_matrix_transp_values` - * :c:data:`psi_bilinear_matrix_transp_values` - * :c:data:`psi_bilinear_matrix_transp_rows_loc` - * :c:data:`psi_bilinear_matrix_transp_values` - * :c:data:`psi_bilinear_matrix_values` - * :c:data:`psi_det_alpha_unique` - * :c:data:`psi_det_beta_unique` - * :c:data:`psi_det_generators` - * :c:data:`psi_det_sorted` + * :c:data:`n_states_diag` + * :c:data:`psi_coef` + * :c:data:`psi_configuration` + * :c:data:`psi_det` * :c:data:`psi_det_sorted` - * :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:`fill_buffer_double_rdm` - * :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_data) - - - - 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:`pt2_add` - * :c:func:`pt2_alloc` - * :c:func:`pt2_dealloc` - * :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) - - + * :c:data:`psi_energy` + * :c:data:`psi_energy_with_nucl_rep` + * :c:data:`pt2_max` + * :c:data:`pt2_relative_error` + * :c:data:`ref_bitmask_energy` + * :c:data:`s2_eig` + * :c:data:`save_wf_after_selection` + * :c:data:`selection_factor` + * :c:data:`threshold_generators` + * :c:data:`variance_max` - Needs: + Called by: .. hlist:: :columns: 3 - * :c:data:`pt2_e0_denominator` + * :c:func:`run_optimization_mos_cipsi` - Called by: + Calls: .. hlist:: :columns: 3 - * :c:func:`zmq_selection` + * :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:`increment_n_iter` + * :c:func:`make_s2_eigenfunction` + * :c:func:`print_extrapolated_energy` + * :c:func:`print_mol_properties` + * :c:func:`print_summary` + * :c:func:`pt2_alloc` + * :c:func:`pt2_dealloc` + * :c:func:`save_energy` + * :c:func:`save_wavefunction` + * :c:func:`write_cipsi_json` + * :c:func:`write_double` + * :c:func:`zmq_pt2` - Calls: + Touches: .. hlist:: :columns: 3 - * :c:func:`run_selection_slave` + * :c:data:`ci_electronic_energy` + * :c:data:`ci_electronic_energy` + * :c:data:`ci_energy` + * :c:data:`ci_electronic_energy` + * :c:data:`psi_configuration` + * :c:data:`n_det` + * :c:data:`c0_weight` + * :c:data:`psi_coef` + * :c:data:`psi_det_sorted_bit` + * :c:data:`psi_configuration` + * :c:data:`psi_det` + * :c:data:`psi_det_size` + * :c:data:`psi_det_sorted_bit` + * :c:data:`psi_energy` + * :c:data:`psi_energy` + * :c:data:`pt2_match_weight` + * :c:data:`pt2_overlap` + * :c:data:`pt2_stoch_istate` + * :c:data:`selection_weight` + * :c:data:`state_average_weight` + * :c:data:`threshold_davidson_pt2` + * :c:data:`threshold_generators` + * :c:data:`variance_match_weight` -.. c:function:: sort_selection_buffer: +.. c:function:: select_connected: - File : :file:`cipsi/selection_buffer.irp.f` + File : :file:`cipsi/selection.irp.f` .. code:: fortran - subroutine sort_selection_buffer(b) + subroutine select_connected(i_generator,E0,pt2_data,b,subset,csubset) @@ -2748,42 +975,42 @@ Subroutines / functions .. hlist:: :columns: 3 + * :c:data:`generators_bitmask` + * :c:data:`mo_num` * :c:data:`n_int` + * :c:data:`n_states` + * :c:data:`psi_det_generators` Called by: .. hlist:: :columns: 3 - * :c:func:`add_to_selection_buffer` - * :c:func:`pt2_collector` * :c:func:`run_pt2_slave_large` * :c:func:`run_pt2_slave_small` * :c:func:`run_selection_slave` - * :c:func:`selection_collector` Calls: .. hlist:: :columns: 3 - * :c:func:`check_mem` - * :c:func:`dsort` + * :c:func:`build_fock_tmp` + * :c:func:`select_singles` + * :c:func:`select_singles_and_doubles` -.. c:function:: splash_pq: +.. c:function:: select_singles: - File : :file:`cipsi/selection.irp.f` + File : :file:`cipsi/selection_singles.irp.f` .. code:: fortran - subroutine splash_pq(mask, sp, det, i_gen, N_sel, bannedOrb, banned, mat, interesting) + subroutine select_singles(i_gen,hole_mask,particle_mask,fock_diag_tmp,E0,pt2_data,buf) - Computes the contributions A(r,s) by - comparing the external determinant to all the internal determinants det(i). - an applying two particles (r,s) to the mask. + Select determinants connected to i_det by H Needs: @@ -2791,9 +1018,13 @@ Subroutines / functions :columns: 3 * :c:data:`mo_num` + * :c:data:`n_det` + * :c:data:`n_det_selectors` * :c:data:`n_int` * :c:data:`n_states` + * :c:data:`psi_det_generators` * :c:data:`psi_det_sorted` + * :c:data:`psi_selectors` * :c:data:`psi_selectors_coef_transp` Called by: @@ -2801,66 +1032,87 @@ Subroutines / functions .. hlist:: :columns: 3 - * :c:func:`select_singles_and_doubles` + * :c:func:`select_connected` 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:func:`apply_hole` + * :c:func:`bitstring_to_list_ab` + * :c:func:`fill_buffer_single` + * :c:func:`splash_p` + * :c:func:`spot_hasbeen` -.. c:function:: spot_isinwf: +.. c:function:: select_singles_and_doubles: File : :file:`cipsi/selection.irp.f` .. code:: fortran - subroutine spot_isinwf(mask, det, i_gen, N, banned, fullMatch, interesting) + subroutine select_singles_and_doubles(i_generator, hole_mask, particle_mask, fock_diag_tmp, E0, pt2_data, buf, subset, csubset) - Identify the determinants in det which are in the internal space. These are - the determinants that can be produced by creating two particles on the mask. + WARNING /!\ : It is assumed that the generators and selectors are psi_det_sorted Needs: .. hlist:: :columns: 3 + * :c:data:`banned_excitation` * :c:data:`mo_num` + * :c:data:`n_det` + * :c:data:`n_det_selectors` * :c:data:`n_int` + * :c:data:`n_states` + * :c:data:`psi_bilinear_matrix_columns_loc` + * :c:data:`psi_bilinear_matrix_values` + * :c:data:`psi_bilinear_matrix_values` + * :c:data:`psi_bilinear_matrix_transp_values` + * :c:data:`psi_bilinear_matrix_transp_values` + * :c:data:`psi_bilinear_matrix_transp_rows_loc` + * :c:data:`psi_bilinear_matrix_transp_values` + * :c:data:`psi_bilinear_matrix_values` + * :c:data:`psi_det_alpha_unique` + * :c:data:`psi_det_beta_unique` + * :c:data:`psi_det_generators` + * :c:data:`psi_det_sorted` + * :c:data:`psi_det_sorted` + * :c:data:`psi_selectors_coef_transp` Called by: .. hlist:: :columns: 3 - * :c:func:`select_singles_and_doubles` + * :c:func:`select_connected` Calls: .. hlist:: :columns: 3 - * :c:func:`bitstring_to_list_in_selection` + * :c:func:`apply_hole` + * :c:func:`bitstring_to_list_ab` + * :c:func:`fill_buffer_double` + * :c:func:`get_excitation_degree_spin` + * :c:func:`isort_noidx` + * :c:func:`splash_pq` + * :c:func:`spot_isinwf` -.. c:function:: testteethbuilding: +.. c:function:: splash_p: - File : :file:`cipsi/pt2_stoch_routines.irp.f` + File : :file:`cipsi/selection_singles.irp.f` .. code:: fortran - logical function testTeethBuilding(minF, N) + subroutine splash_p(mask, sp, det, coefs, N_sel, bannedOrb, vect) @@ -2869,261 +1121,173 @@ Subroutines / functions .. hlist:: :columns: 3 - * :c:data:`n_det_generators` - * :c:data:`psi_det_sorted_gen` - * :c:data:`pt2_stoch_istate` + * :c:data:`mo_num` + * :c:data:`n_int` + * :c:data:`n_states` + * :c:data:`psi_det_sorted` - Calls: + Called by: .. hlist:: :columns: 3 - * :c:func:`check_mem` - - -.. c:function:: update_buffer_double_exc_rdm: - - - File : :file:`cipsi/update_2rdm.irp.f` - - .. code:: fortran - - subroutine update_buffer_double_exc_rdm(exc,phase,contrib,nkeys,keys,values,sze_buff) - - + * :c:func:`select_singles` - Needs: + Calls: .. hlist:: :columns: 3 - * :c:data:`list_orb_reverse_pert_rdm` + * :c:func:`bitstring_to_list` + * :c:func:`get_m0` + * :c:func:`get_m1` + * :c:func:`get_m2` + * :c:func:`get_mask_phase` -.. c:function:: update_buffer_single_exc_rdm: +.. c:function:: splash_pq: - File : :file:`cipsi/update_2rdm.irp.f` + File : :file:`cipsi/selection.irp.f` .. code:: fortran - subroutine update_buffer_single_exc_rdm(det1,det2,exc,phase,contrib,nkeys,keys,values,sze_buff) + subroutine splash_pq(mask, sp, det, i_gen, N_sel, bannedOrb, banned, mat, interesting) + Computes the contributions A(r,s) by + comparing the external determinant to all the internal determinants det(i). + an applying two particles (r,s) to the mask. Needs: .. hlist:: :columns: 3 - * :c:data:`list_orb_reverse_pert_rdm` + * :c:data:`mo_num` * :c:data:`n_int` + * :c:data:`n_states` + * :c:data:`psi_det_sorted` + * :c:data:`psi_selectors_coef_transp` Called by: .. hlist:: :columns: 3 - * :c:func:`give_2rdm_pert_contrib` + * :c:func:`select_singles_and_doubles` Calls: .. hlist:: :columns: 3 - * :c:func:`bitstring_to_list_ab` + * :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:function:: update_pt2_and_variance_weights: +.. c:function:: spot_hasbeen: - File : :file:`cipsi/selection.irp.f` + File : :file:`cipsi/selection_singles.irp.f` .. code:: fortran - subroutine update_pt2_and_variance_weights(pt2_data, N_st) + subroutine spot_hasBeen(mask, sp, det, i_gen, N, banned, fullMatch) - Updates the PT2- and Variance- matching weights. Needs: .. hlist:: :columns: 3 - * :c:data:`n_det` - * :c:data:`n_states` - * :c:data:`pt2_match_weight` - * :c:data:`pt2_relative_error` - * :c:data:`threshold_davidson` - * :c:data:`threshold_davidson_pt2` - * :c:data:`variance_match_weight` + * :c:data:`mo_num` + * :c:data:`n_int` Called by: .. hlist:: :columns: 3 - * :c:func:`zmq_pt2` - * :c:func:`zmq_selection` + * :c:func:`select_singles` - Touches: + Calls: .. hlist:: :columns: 3 - * :c:data:`pt2_match_weight` - * :c:data:`threshold_davidson_pt2` - * :c:data:`variance_match_weight` + * :c:func:`bitstring_to_list` -.. c:function:: zmq_pt2: +.. c:function:: spot_isinwf: - File : :file:`cipsi/pt2_stoch_routines.irp.f` + File : :file:`cipsi/selection.irp.f` .. code:: fortran - subroutine ZMQ_pt2(E, pt2_data, pt2_data_err, relative_error, N_in) + subroutine spot_isinwf(mask, det, i_gen, N, banned, fullMatch, interesting) + Identify the determinants in det that are in the internal space. These are + the determinants that can be produced by creating two particles on the mask. Needs: .. hlist:: :columns: 3 - * :c:data:`det_to_occ_pattern` - * :c:data:`elec_alpha_num` - * :c:data:`global_selection_buffer` - * :c:data:`h0_type` * :c:data:`mo_num` - * :c:data:`mo_one_e_integrals` - * :c:data:`mo_two_e_integrals_in_map` - * :c:data:`n_det` - * :c:data:`n_det_generators` * :c:data:`n_int` - * :c:data:`n_states` - * :c:data:`nproc` - * :c:data:`nthreads_pt2` - * :c:data:`pseudo_sym` - * :c:data:`psi_bilinear_matrix_columns_loc` - * :c:data:`psi_bilinear_matrix_values` - * :c:data:`psi_bilinear_matrix_values` - * :c:data:`psi_bilinear_matrix_transp_values` - * :c:data:`psi_bilinear_matrix_transp_values` - * :c:data:`psi_bilinear_matrix_transp_rows_loc` - * :c:data:`psi_det_alpha_unique` - * :c:data:`psi_det_beta_unique` - * :c:data:`psi_det_hii` - * :c:data:`psi_det_sorted` - * :c:data:`psi_det_sorted` - * :c:data:`psi_occ_pattern_hii` - * :c:data:`psi_selectors` - * :c:data:`psi_selectors_coef_transp` - * :c:data:`pt2_e0_denominator` - * :c:data:`pt2_f` - * :c:data:`pt2_j` - * :c:data:`pt2_n_teeth` - * :c:data:`pt2_overlap` - * :c:data:`pt2_j` - * :c:data:`pt2_stoch_istate` - * :c:data:`pt2_u` - * :c:data:`pt2_w` - * :c:data:`qp_max_mem` - * :c:data:`s2_eig` - * :c:data:`selection_weight` - * :c:data:`state_average_weight` - * :c:data:`threshold_generators` Called by: .. hlist:: :columns: 3 - * :c:func:`run_cipsi` - * :c:func:`run_stochastic_cipsi` + * :c:func:`select_singles_and_doubles` 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:`update_pt2_and_variance_weights` - * :c:func:`write_double` - * :c:func:`write_int` - * :c:func:`zmq_selection` - - Touches: - - .. hlist:: - :columns: 3 - - * :c:data:`pt2_match_weight` - * :c:data:`pt2_overlap` - * :c:data:`pt2_stoch_istate` - * :c:data:`selection_weight` - * :c:data:`state_average_weight` - * :c:data:`threshold_davidson_pt2` - * :c:data:`variance_match_weight` + * :c:func:`bitstring_to_list_in_selection` -.. c:function:: zmq_selection: +.. c:function:: write_cipsi_json: - File : :file:`cipsi/zmq_selection.irp.f` + File : :file:`cipsi/write_cipsi_json.irp.f` .. code:: fortran - subroutine ZMQ_selection(N_in, pt2_data) + subroutine write_cipsi_json(pt2_data, pt2_data_err) + Writes JSON data for CIPSI runs Needs: .. hlist:: :columns: 3 - * :c:data:`do_pt2` - * :c:data:`elec_alpha_num` - * :c:data:`mo_num` + * :c:data:`energy_iterations` + * :c:data:`json_int_fmt` + * :c:data:`json_unit` * :c:data:`n_det` - * :c:data:`n_det_generators` - * :c:data:`n_det_selectors` - * :c:data:`n_int` + * :c:data:`n_iter` * :c:data:`n_states` - * :c:data:`nproc` - * :c:data:`pseudo_sym` - * :c:data:`psi_bilinear_matrix_columns_loc` - * :c:data:`psi_bilinear_matrix_values` - * :c:data:`psi_bilinear_matrix_values` - * :c:data:`psi_bilinear_matrix_transp_values` - * :c:data:`psi_bilinear_matrix_transp_values` - * :c:data:`psi_bilinear_matrix_transp_rows_loc` - * :c:data:`psi_det_alpha_unique` - * :c:data:`psi_det_beta_unique` - * :c:data:`psi_det_sorted` - * :c:data:`psi_selectors` - * :c:data:`pt2_e0_denominator` - * :c:data:`pt2_f` - * :c:data:`pt2_overlap` - * :c:data:`qp_max_mem` + * :c:data:`nsomomax` + * :c:data:`only_expected_s2` + * :c:data:`psi_configuration` + * :c:data:`psi_energy` + * :c:data:`psi_energy_with_nucl_rep` * :c:data:`s2_eig` - * :c:data:`selection_weight` - * :c:data:`state_average_weight` - * :c:data:`threshold_generators` Called by: @@ -3131,31 +1295,13 @@ Subroutines / functions :columns: 3 * :c:func:`run_cipsi` - * :c:func:`zmq_pt2` + * :c:func:`run_stochastic_cipsi` Calls: .. hlist:: :columns: 3 - * :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:`selection_collector` - * :c:func:`selection_slave_inproc` - * :c:func:`update_pt2_and_variance_weights` - * :c:func:`write_double` - - Touches: - - .. hlist:: - :columns: 3 - - * :c:data:`pt2_match_weight` - * :c:data:`pt2_overlap` - * :c:data:`threshold_davidson_pt2` - * :c:data:`variance_match_weight` + * :c:func:`lock_io` + * :c:func:`unlock_io` diff --git a/docs/source/modules/cis.rst b/docs/source/modules/cis.rst index 3c96a6c65..888e3371b 100644 --- a/docs/source/modules/cis.rst +++ b/docs/source/modules/cis.rst @@ -119,15 +119,15 @@ Subroutines / functions .. hlist:: :columns: 3 + * :c:data:`psi_configuration` * :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_configuration` * :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: @@ -328,15 +328,15 @@ Subroutines / functions .. hlist:: :columns: 3 + * :c:data:`psi_configuration` * :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_configuration` * :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_sym_diexc: diff --git a/docs/source/modules/cisd.rst b/docs/source/modules/cisd.rst index b488f3ac5..e0900eb8e 100644 --- a/docs/source/modules/cisd.rst +++ b/docs/source/modules/cisd.rst @@ -53,15 +53,145 @@ EZFIO parameters Variational |CISD| energy +.. option:: lcc_energy + + lccsd energy + + Programs -------- * :ref:`cisd` + * :ref:`lccsd` + +Providers +--------- + +.. c:var:: lccsd_coef + + + File : :file:`lccsd_prov.irp.f` + + .. code:: fortran + + double precision, allocatable :: lccsd_coef (N_det,N_states) + double precision, allocatable :: lccsd_energies (N_states) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`big_array_coulomb_integrals` + * :c:data:`big_array_coulomb_integrals` + * :c:data:`davidson_sze_max` + * :c:data:`disk_based_davidson` + * :c:data:`mo_integrals_map` + * :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:`nproc` + * :c:data:`nthreads_davidson` + * :c:data:`psi_det` + * :c:data:`qp_max_mem` + * :c:data:`ref_bitmask` + * :c:data:`state_following` + * :c:data:`threshold_davidson` + + + +.. c:var:: lccsd_energies + + + File : :file:`lccsd_prov.irp.f` + + .. code:: fortran + + double precision, allocatable :: lccsd_coef (N_det,N_states) + double precision, allocatable :: lccsd_energies (N_states) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`big_array_coulomb_integrals` + * :c:data:`big_array_coulomb_integrals` + * :c:data:`davidson_sze_max` + * :c:data:`disk_based_davidson` + * :c:data:`mo_integrals_map` + * :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:`nproc` + * :c:data:`nthreads_davidson` + * :c:data:`psi_det` + * :c:data:`qp_max_mem` + * :c:data:`ref_bitmask` + * :c:data:`state_following` + * :c:data:`threshold_davidson` + + + Subroutines / functions ----------------------- +.. c:function:: get_lccsd_2: + + + File : :file:`lccsd.irp.f` + + .. code:: fortran + + subroutine get_lccsd_2 + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ha_to_ev` + * :c:data:`lccsd_coef` + * :c:data:`n_det` + * :c:data:`n_states` + * :c:data:`psi_coef` + * :c:data:`save_threshold` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`run` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`ezfio_set_cisd_lcc_energy` + * :c:func:`save_wavefunction_truncated` + + Touches: + + .. hlist:: + :columns: 3 + + * :c:data:`psi_coef` + + .. c:function:: h_apply_cisd: @@ -99,6 +229,7 @@ Subroutines / functions .. hlist:: :columns: 3 + * :c:func:`run` * :c:func:`run_cisd` Calls: @@ -119,15 +250,15 @@ Subroutines / functions .. hlist:: :columns: 3 + * :c:data:`psi_configuration` * :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_configuration` * :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: @@ -315,6 +446,7 @@ Subroutines / functions .. hlist:: :columns: 3 + * :c:func:`run` * :c:func:`run_cisd` Calls: @@ -335,15 +467,15 @@ Subroutines / functions .. hlist:: :columns: 3 + * :c:data:`psi_configuration` * :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_configuration` * :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_sym_diexc: @@ -534,13 +666,13 @@ Subroutines / functions .. hlist:: :columns: 3 + * :c:data:`psi_configuration` * :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_configuration` * :c:data:`psi_det` * :c:data:`psi_det_size` * :c:data:`psi_det_sorted_bit` - * :c:data:`psi_occ_pattern` diff --git a/docs/source/modules/davidson.rst b/docs/source/modules/davidson.rst index 718458bd3..e1ed44582 100644 --- a/docs/source/modules/davidson.rst +++ b/docs/source/modules/davidson.rst @@ -31,53 +31,23 @@ The important providers for that module are: EZFIO parameters ---------------- -.. option:: threshold_davidson +.. option:: csf_based - 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 + If |true|, use the CSF-based algorithm 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 -.. option:: n_det_max_full +.. option:: without_diagonal - Maximum number of determinants where |H| is fully diagonalized + If |true|, don't use denominator - Default: 1000 + Default: False Providers @@ -102,7 +72,9 @@ Providers .. hlist:: :columns: 3 + * :c:data:`csf_based` * :c:data:`diag_algorithm` + * :c:data:`distributed_davidson` * :c:data:`dressing_column_h` * :c:data:`expected_s2` * :c:data:`h_matrix_all_dets` @@ -111,12 +83,14 @@ Providers * :c:data:`n_int` * :c:data:`n_states` * :c:data:`n_states_diag` + * :c:data:`nsomomax` * :c:data:`nthreads_davidson` * :c:data:`only_expected_s2` * :c:data:`psi_coef` * :c:data:`psi_det` * :c:data:`s2_eig` * :c:data:`s2_matrix_all_dets` + * :c:data:`state_following` * :c:data:`threshold_davidson` Needed by: @@ -146,7 +120,9 @@ Providers .. hlist:: :columns: 3 + * :c:data:`csf_based` * :c:data:`diag_algorithm` + * :c:data:`distributed_davidson` * :c:data:`dressing_column_h` * :c:data:`expected_s2` * :c:data:`h_matrix_all_dets` @@ -155,12 +131,14 @@ Providers * :c:data:`n_int` * :c:data:`n_states` * :c:data:`n_states_diag` + * :c:data:`nsomomax` * :c:data:`nthreads_davidson` * :c:data:`only_expected_s2` * :c:data:`psi_coef` * :c:data:`psi_det` * :c:data:`s2_eig` * :c:data:`s2_matrix_all_dets` + * :c:data:`state_following` * :c:data:`threshold_davidson` Needed by: @@ -189,6 +167,7 @@ Providers :columns: 3 * :c:data:`ci_electronic_energy` + * :c:data:`distributed_davidson` * :c:data:`mpi_master` * :c:data:`n_det` * :c:data:`n_states` @@ -217,7 +196,9 @@ Providers .. hlist:: :columns: 3 + * :c:data:`csf_based` * :c:data:`diag_algorithm` + * :c:data:`distributed_davidson` * :c:data:`dressing_column_h` * :c:data:`expected_s2` * :c:data:`h_matrix_all_dets` @@ -226,12 +207,14 @@ Providers * :c:data:`n_int` * :c:data:`n_states` * :c:data:`n_states_diag` + * :c:data:`nsomomax` * :c:data:`nthreads_davidson` * :c:data:`only_expected_s2` * :c:data:`psi_coef` * :c:data:`psi_det` * :c:data:`s2_eig` * :c:data:`s2_matrix_all_dets` + * :c:data:`state_following` * :c:data:`threshold_davidson` Needed by: @@ -294,70 +277,64 @@ Providers -.. c:var:: n_states_diag +.. c:var:: overlap_states - File : :file:`davidson/input.irp.f` + File : :file:`davidson/overlap_states.irp.f` .. code:: fortran - integer :: n_states_diag + double precision, allocatable :: overlap_states (N_states,N_states) + double precision, allocatable :: overlap_states_inv (N_states,N_states) - Number of states to consider during the Davdison diagonalization + + S_kl = ck.T x cl + = psi_coef(:,k).T x psi_coef(:,l) + Needs: .. hlist:: :columns: 3 - * :c:data:`ezfio_filename` - * :c:data:`mpi_master` + * :c:data:`n_det` * :c:data:`n_states` - * :c:data:`output_wall_time_0` - - Needed by: - - .. hlist:: - :columns: 3 + * :c:data:`psi_coef` - * :c:data:`ci_electronic_energy` - * :c:data:`ci_energy` - * :c:data:`psi_energy` -.. c:var:: nthreads_davidson +.. c:var:: overlap_states_inv - File : :file:`davidson/davidson_parallel.irp.f` + File : :file:`davidson/overlap_states.irp.f` .. code:: fortran - integer :: nthreads_davidson + double precision, allocatable :: overlap_states (N_states,N_states) + double precision, allocatable :: overlap_states_inv (N_states,N_states) - Number of threads for Davidson + + S_kl = ck.T x cl + = psi_coef(:,k).T x psi_coef(:,l) + Needs: .. hlist:: :columns: 3 - * :c:data:`mpi_master` - * :c:data:`nproc` - - Needed by: - - .. hlist:: - :columns: 3 + * :c:data:`n_det` + * :c:data:`n_states` + * :c:data:`psi_coef` - * :c:data:`ci_electronic_energy` .. c:var:: psi_energy - File : :file:`davidson/u0_h_u0.irp.f` + File : :file:`davidson/u0_hs2_u0.irp.f` .. code:: fortran @@ -391,7 +368,9 @@ Providers .. hlist:: :columns: 3 + * :c:data:`ci_energy_no_diag` * :c:data:`psi_energy_with_nucl_rep` + * :c:data:`pt2_e0_denominator` .. c:var:: psi_energy_two_e @@ -420,10 +399,40 @@ Providers +.. c:var:: psi_energy_two_e_trans + + + File : :file:`davidson/u0_wee_u0.irp.f` + + .. code:: fortran + + double precision, allocatable :: psi_energy_two_e_trans (N_states,N_states) + + + psi_energy_two_e_trans(istate,jstate) = + + 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:`n_states` + * :c:data:`psi_coef` + * :c:data:`psi_det` + * :c:data:`ref_bitmask_energy` + + + .. c:var:: psi_energy_with_nucl_rep - File : :file:`davidson/u0_h_u0.irp.f` + File : :file:`davidson/u0_hs2_u0.irp.f` .. code:: fortran @@ -446,7 +455,7 @@ Providers .. c:var:: psi_s2 - File : :file:`davidson/u0_h_u0.irp.f` + File : :file:`davidson/u0_hs2_u0.irp.f` .. code:: fortran @@ -480,28 +489,9 @@ Providers .. hlist:: :columns: 3 + * :c:data:`ci_energy_no_diag` * :c:data:`psi_energy_with_nucl_rep` - - -.. c:var:: threshold_davidson_pt2 - - - File : :file:`davidson/diagonalization_hs2_dressed.irp.f` - - .. code:: fortran - - double precision :: threshold_davidson_pt2 - - - Threshold of Davidson's algorithm, using PT2 as a guide - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`threshold_davidson` - + * :c:data:`pt2_e0_denominator` @@ -542,174 +532,93 @@ Subroutines / functions * :c:func:`davidson_pull_results` -.. c:function:: davidson_diag_hjj_sjj: +.. c:function:: davidson_csf_collector: - File : :file:`davidson/diagonalization_hs2_dressed.irp.f` + File : :file:`davidson/davidson_parallel_csf.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) + subroutine davidson_csf_collector(zmq_to_qp_run_socket, zmq_socket_pull, v0, sze, N_st) - 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 + Routine collecting the results of the workers in Davidson's algorithm. Needs: .. hlist:: :columns: 3 - * :c:data:`davidson_sze_max` - * :c:data:`disk_based_davidson` - * :c:data:`distributed_davidson` - * :c:data:`dressed_column_idx` - * :c:data:`dressing_column_h` - * :c:data:`expected_s2` - * :c:data:`ezfio_work_dir` * :c:data:`n_det` - * :c:data:`n_int` - * :c:data:`nproc` - * :c:data:`nthreads_davidson` - * :c:data:`nuclear_repulsion` - * :c:data:`only_expected_s2` - * :c:data:`psi_bilinear_matrix_values` - * :c:data:`psi_bilinear_matrix_order_reverse` - * :c:data:`psi_coef` - * :c:data:`psi_det_alpha_unique` - * :c:data:`psi_det_beta_unique` - * :c:data:`qp_max_mem` - * :c:data:`s2_eig` - * :c:data:`state_following` - * :c:data:`threshold_davidson` - * :c:data:`threshold_davidson_from_pt2` - * :c:data:`threshold_davidson_pt2` - - 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:`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:`nullify_small_elements` - * :c:func:`ortho_qr` - * :c:func:`ortho_qr_unblocked` - * :c:func:`random_number` - * :c:func:`resident_memory` - * :c:func:`sgemm` - * :c:func:`write_double` - * :c:func:`write_int` - * :c:func:`write_time` - - Touches: - - .. hlist:: - :columns: 3 - - * :c:data:`nthreads_davidson` + * :c:func:`davidson_csf_pull_results` -.. c:function:: davidson_diag_hs2: +.. c:function:: davidson_csf_pull_results: - File : :file:`davidson/diagonalization_hs2_dressed.irp.f` + File : :file:`davidson/davidson_parallel_csf.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) + subroutine davidson_csf_pull_results(zmq_socket_pull, v_t, imin, imax, task_id) - 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 + Pull the results of $H | U \rangle$ on the master. Needs: .. hlist:: :columns: 3 - * :c:data:`dressing_column_h` - * :c:data:`mo_two_e_integrals_in_map` - * :c:data:`n_int` + * :c:data:`n_det` + * :c:data:`n_states_diag` Called by: .. hlist:: :columns: 3 - * :c:data:`ci_electronic_energy` + * :c:func:`davidson_csf_collector` - Calls: + +.. c:function:: davidson_csf_push_results: - .. hlist:: - :columns: 3 - * :c:func:`davidson_diag_hjj_sjj` + File : :file:`davidson/davidson_parallel_csf.irp.f` - Touches: + .. code:: fortran + + subroutine davidson_csf_push_results(zmq_socket_push, v_t, imin, imax, task_id) + + + Push the results of $H | U \rangle$ from a worker to the master. + + Needs: .. hlist:: :columns: 3 - * :c:data:`nthreads_davidson` + * :c:data:`n_det` + * :c:data:`n_states_diag` -.. c:function:: davidson_pull_results: +.. c:function:: davidson_csf_push_results_async_send: - File : :file:`davidson/davidson_parallel.irp.f` + File : :file:`davidson/davidson_parallel_csf.irp.f` .. code:: fortran - subroutine davidson_pull_results(zmq_socket_pull, v_t, s_t, imin, imax, task_id) + subroutine davidson_csf_push_results_async_send(zmq_socket_push, v_t, imin, imax, task_id,sending) - Pull the results of $H | U \rangle$ on the master. + Push the results of $H | U \rangle$ from a worker to the master. Needs: @@ -724,20 +633,20 @@ Subroutines / functions .. hlist:: :columns: 3 - * :c:func:`davidson_collector` + * :c:func:`davidson_csf_slave_work` -.. c:function:: davidson_push_results: +.. c:function:: davidson_csf_run_slave: - File : :file:`davidson/davidson_parallel.irp.f` + File : :file:`davidson/davidson_parallel_csf.irp.f` .. code:: fortran - subroutine davidson_push_results(zmq_socket_push, v_t, s_t, imin, imax, task_id) + subroutine davidson_csf_run_slave(thread,iproc) - Push the results of $H | U \rangle$ from a worker to the master. + Slave routine for Davidson's diagonalization. Needs: @@ -747,46 +656,1294 @@ Subroutines / functions * :c:data:`n_det` * :c:data:`n_states_diag` + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`davidson_csf_slave_inproc` + * :c:func:`davidson_csf_slave_tcp` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`davidson_csf_slave_work` + * :c:func:`end_zmq_push_socket` + * :c:func:`end_zmq_to_qp_run_socket` + * :c:func:`sleep` + -.. c:function:: davidson_push_results_async_recv: +.. c:function:: davidson_csf_slave_inproc: - File : :file:`davidson/davidson_parallel.irp.f` + File : :file:`davidson/davidson_parallel_csf.irp.f` .. code:: fortran - subroutine davidson_push_results_async_recv(zmq_socket_push,sending) + subroutine davidson_csf_slave_inproc(i) - Push the results of $H | U \rangle$ from a worker to the master. - Called by: + Calls: .. hlist:: :columns: 3 - * :c:func:`davidson_slave_work` + * :c:func:`davidson_csf_run_slave` -.. c:function:: davidson_push_results_async_send: +.. c:function:: davidson_csf_slave_tcp: - File : :file:`davidson/davidson_parallel.irp.f` + File : :file:`davidson/davidson_parallel_csf.irp.f` .. code:: fortran - subroutine davidson_push_results_async_send(zmq_socket_push, v_t, s_t, imin, imax, task_id,sending) + subroutine davidson_csf_slave_tcp(i) - Push the results of $H | U \rangle$ from a worker to the master. - Needs: + Calls: .. hlist:: :columns: 3 - * :c:data:`n_det` + * :c:func:`davidson_csf_run_slave` + + +.. c:function:: davidson_csf_slave_work: + + + File : :file:`davidson/davidson_parallel_csf.irp.f` + + .. code:: fortran + + subroutine davidson_csf_slave_work(zmq_to_qp_run_socket, zmq_socket_push, N_st, sze, worker_id) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mpi_initialized` + * :c:data:`mpi_rank` + * :c:data:`n_det` + * :c:data:`n_states_diag` + * :c:data:`nproc` + * :c:data:`psi_bilinear_matrix_columns_loc` + * :c:data:`psi_bilinear_matrix_order_transp_reverse` + * :c:data:`psi_bilinear_matrix_transp_values` + * :c:data:`psi_bilinear_matrix_values` + * :c:data:`psi_det_alpha_unique` + * :c:data:`psi_det_beta_unique` + * :c:data:`ref_bitmask_energy` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`davidson_csf_run_slave` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`davidson_csf_push_results_async_send` + * :c:func:`davidson_push_results_async_recv` + * :c:func:`h_u_0_nstates_openmp_work` + + +.. c:function:: davidson_diag_csf_hjj: + + + File : :file:`davidson/diagonalization_hcsf_dressed.irp.f` + + .. code:: fortran + + subroutine davidson_diag_csf_hjj(dets_in,u_in,H_jj,energies,dim_in,sze,sze_csf,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 + + 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 + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`davidson_sze_max` + * :c:data:`disk_based_davidson` + * :c:data:`distributed_davidson` + * :c:data:`dressed_column_idx` + * :c:data:`dressing_column_h` + * :c:data:`expected_s2` + * :c:data:`ezfio_work_dir` + * :c:data:`n_det` + * :c:data:`n_int` + * :c:data:`nproc` + * :c:data:`nthreads_davidson` + * :c:data:`nuclear_repulsion` + * :c:data:`psi_bilinear_matrix_values` + * :c:data:`psi_bilinear_matrix_order_reverse` + * :c:data:`psi_coef` + * :c:data:`psi_det_alpha_unique` + * :c:data:`psi_det_beta_unique` + * :c:data:`qp_max_mem` + * :c:data:`state_following` + * :c:data:`threshold_davidson` + * :c:data:`threshold_davidson_from_pt2` + * :c:data:`threshold_davidson_pt2` + * :c:data:`without_diagonal` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`davidson_diag_h_csf` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`c_f_pointer` + * :c:func:`check_mem` + * :c:func:`convertwffromcsftodet` + * :c:func:`convertwffromdettocsf` + * :c:func:`dgemm` + * :c:func:`dsygv` + * :c:func:`h_u_0_nstates_openmp` + * :c:func:`h_u_0_nstates_zmq` + * :c:func:`mmap` + * :c:func:`munmap` + * :c:func:`normalize` + * :c:func:`nullify_small_elements` + * :c:func:`random_number` + * :c:func:`resident_memory` + * :c:func:`write_double` + * :c:func:`write_int` + * :c:func:`write_time` + + Touches: + + .. hlist:: + :columns: 3 + + * :c:data:`nthreads_davidson` + + +.. c:function:: davidson_diag_h: + + + File : :file:`davidson/diagonalization_h_dressed.irp.f` + + .. code:: fortran + + subroutine davidson_diag_h(dets_in,u_in,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` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`davidson_diag_hjj` + + Touches: + + .. hlist:: + :columns: 3 + + * :c:data:`nthreads_davidson` + + +.. c:function:: davidson_diag_h_csf: + + + File : :file:`davidson/diagonalization_hcsf_dressed.irp.f` + + .. code:: fortran + + subroutine davidson_diag_h_csf(dets_in,u_in,dim_in,energies,sze,sze_csf,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 + + + 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_csf_hjj` + + Touches: + + .. hlist:: + :columns: 3 + + * :c:data:`nthreads_davidson` + + +.. c:function:: davidson_diag_hjj: + + + File : :file:`davidson/diagonalization_h_dressed.irp.f` + + .. code:: fortran + + subroutine davidson_diag_hjj(dets_in,u_in,H_jj,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 + + 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:`davidson_sze_max` + * :c:data:`disk_based_davidson` + * :c:data:`distributed_davidson` + * :c:data:`dressed_column_idx` + * :c:data:`dressing_column_h` + * :c:data:`expected_s2` + * :c:data:`ezfio_work_dir` + * :c:data:`n_det` + * :c:data:`n_int` + * :c:data:`nproc` + * :c:data:`nthreads_davidson` + * :c:data:`nuclear_repulsion` + * :c:data:`psi_bilinear_matrix_values` + * :c:data:`psi_bilinear_matrix_order_reverse` + * :c:data:`psi_coef` + * :c:data:`psi_det_alpha_unique` + * :c:data:`psi_det_beta_unique` + * :c:data:`qp_max_mem` + * :c:data:`state_following` + * :c:data:`threshold_davidson` + * :c:data:`threshold_davidson_from_pt2` + * :c:data:`threshold_davidson_pt2` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`davidson_diag_h` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`c_f_pointer` + * :c:func:`check_mem` + * :c:func:`dgemm` + * :c:func:`dsygv` + * :c:func:`h_u_0_nstates_openmp` + * :c:func:`h_u_0_nstates_zmq` + * :c:func:`mmap` + * :c:func:`munmap` + * :c:func:`normalize` + * :c:func:`nullify_small_elements` + * :c:func:`random_number` + * :c:func:`resident_memory` + * :c:func:`write_double` + * :c:func:`write_int` + * :c:func:`write_time` + + Touches: + + .. hlist:: + :columns: 3 + + * :c:data:`nthreads_davidson` + + +.. 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:`davidson_sze_max` + * :c:data:`disk_based_davidson` + * :c:data:`distributed_davidson` + * :c:data:`dressed_column_idx` + * :c:data:`dressing_column_h` + * :c:data:`expected_s2` + * :c:data:`n_det` + * :c:data:`n_int` + * :c:data:`nproc` + * :c:data:`nthreads_davidson` + * :c:data:`nuclear_repulsion` + * :c:data:`only_expected_s2` + * :c:data:`psi_bilinear_matrix_values` + * :c:data:`psi_bilinear_matrix_order_reverse` + * :c:data:`psi_coef` + * :c:data:`psi_det_alpha_unique` + * :c:data:`psi_det_beta_unique` + * :c:data:`qp_max_mem` + * :c:data:`state_following` + * :c:data:`threshold_davidson` + * :c:data:`threshold_davidson_from_pt2` + * :c:data:`threshold_davidson_pt2` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`davidson_diag_hs2` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`check_mem` + * :c:func:`dgemm` + * :c:func:`dswap` + * :c:func:`dsygv` + * :c:func:`h_s2_u_0_nstates_openmp` + * :c:func:`h_s2_u_0_nstates_zmq` + * :c:func:`mmap_create_d` + * :c:func:`mmap_create_s` + * :c:func:`mmap_destroy` + * :c:func:`normalize` + * :c:func:`nullify_small_elements` + * :c:func:`random_number` + * :c:func:`resident_memory` + * :c:func:`sgemm` + * :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_diag_nonsym_h: + + + File : :file:`davidson/diagonalization_nonsym_h_dressed.irp.f` + + .. code:: fortran + + subroutine davidson_diag_nonsym_h(dets_in, u_in, dim_in, energies, sze, N_st, N_st_diag, Nint, dressing_state, converged) + + + + non-sym 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` + * :c:data:`overlap_states` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`davidson_diag_nonsym_hjj` + + Touches: + + .. hlist:: + :columns: 3 + + * :c:data:`nthreads_davidson` + + +.. c:function:: davidson_diag_nonsym_hjj: + + + File : :file:`davidson/diagonalization_nonsym_h_dressed.irp.f` + + .. code:: fortran + + subroutine davidson_diag_nonsym_hjj(dets_in, u_in, H_jj, energies, dim_in, sze, N_st, N_st_diag_in, Nint, dressing_state, converged) + + + + non-sym Davidson diagonalization with specific diagonal elements of the H matrix + + H_jj : specific diagonal H matrix elements to diagonalize de Davidson + + 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:`davidson_sze_max` + * :c:data:`disk_based_davidson` + * :c:data:`distributed_davidson` + * :c:data:`dressing_column_h` + * :c:data:`expected_s2` + * :c:data:`ezfio_work_dir` + * :c:data:`n_det` + * :c:data:`n_int` + * :c:data:`nproc` + * :c:data:`nthreads_davidson` + * :c:data:`nuclear_repulsion` + * :c:data:`overlap_states` + * :c:data:`psi_bilinear_matrix_values` + * :c:data:`psi_bilinear_matrix_order_reverse` + * :c:data:`psi_coef` + * :c:data:`psi_det_alpha_unique` + * :c:data:`psi_det_beta_unique` + * :c:data:`qp_max_mem` + * :c:data:`state_following` + * :c:data:`threshold_davidson_from_pt2` + * :c:data:`threshold_davidson_pt2` + * :c:data:`threshold_nonsym_davidson` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`davidson_diag_nonsym_h` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`c_f_pointer` + * :c:func:`check_mem` + * :c:func:`dgemm` + * :c:func:`diag_nonsym_right` + * :c:func:`h_u_0_nstates_openmp` + * :c:func:`h_u_0_nstates_zmq` + * :c:func:`mmap` + * :c:func:`munmap` + * :c:func:`normalize` + * :c:func:`nullify_small_elements` + * :c:func:`ortho_qr` + * :c:func:`random_number` + * :c:func:`resident_memory` + * :c:func:`write_double` + * :c:func:`write_int` + * :c:func:`write_time` + + Touches: + + .. hlist:: + :columns: 3 + + * :c:data:`nthreads_davidson` + + +.. c:function:: davidson_nos2_collector: + + + File : :file:`davidson/davidson_parallel_nos2.irp.f` + + .. code:: fortran + + subroutine davidson_nos2_collector(zmq_to_qp_run_socket, zmq_socket_pull, v0, 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_u_0_nstates_zmq` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`davidson_nos2_pull_results` + + +.. c:function:: davidson_nos2_pull_results: + + + File : :file:`davidson/davidson_parallel_nos2.irp.f` + + .. code:: fortran + + subroutine davidson_nos2_pull_results(zmq_socket_pull, v_t, imin, imax, task_id) + + + Pull the results of $H | U \rangle$ on the master. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_det` + * :c:data:`n_states_diag` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`davidson_nos2_collector` + + +.. c:function:: davidson_nos2_push_results: + + + File : :file:`davidson/davidson_parallel_nos2.irp.f` + + .. code:: fortran + + subroutine davidson_nos2_push_results(zmq_socket_push, v_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_det` + * :c:data:`n_states_diag` + + +.. c:function:: davidson_nos2_push_results_async_send: + + + File : :file:`davidson/davidson_parallel_nos2.irp.f` + + .. code:: fortran + + subroutine davidson_nos2_push_results_async_send(zmq_socket_push, v_t, imin, imax, task_id,sending) + + + Push the results of $H | U \rangle$ from a worker to the master. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_det` + * :c:data:`n_states_diag` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`davidson_nos2_slave_work` + + +.. c:function:: davidson_nos2_run_slave: + + + File : :file:`davidson/davidson_parallel_nos2.irp.f` + + .. code:: fortran + + subroutine davidson_nos2_run_slave(thread,iproc) + + + Slave routine for Davidson's diagonalization. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_det` + * :c:data:`n_states_diag` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`davidson_nos2_slave_inproc` + * :c:func:`davidson_nos2_slave_tcp` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`davidson_nos2_slave_work` + * :c:func:`end_zmq_push_socket` + * :c:func:`end_zmq_to_qp_run_socket` + * :c:func:`sleep` + + +.. c:function:: davidson_nos2_slave_inproc: + + + File : :file:`davidson/davidson_parallel_nos2.irp.f` + + .. code:: fortran + + subroutine davidson_nos2_slave_inproc(i) + + + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`h_u_0_nstates_zmq` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`davidson_nos2_run_slave` + + +.. c:function:: davidson_nos2_slave_tcp: + + + File : :file:`davidson/davidson_parallel_nos2.irp.f` + + .. code:: fortran + + subroutine davidson_nos2_slave_tcp(i) + + + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`davidson_nos2_run_slave` + + +.. c:function:: davidson_nos2_slave_work: + + + File : :file:`davidson/davidson_parallel_nos2.irp.f` + + .. code:: fortran + + subroutine davidson_nos2_slave_work(zmq_to_qp_run_socket, zmq_socket_push, N_st, sze, worker_id) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mpi_initialized` + * :c:data:`mpi_rank` + * :c:data:`n_det` + * :c:data:`n_states_diag` + * :c:data:`nproc` + * :c:data:`psi_bilinear_matrix_columns_loc` + * :c:data:`psi_bilinear_matrix_order_transp_reverse` + * :c:data:`psi_bilinear_matrix_transp_values` + * :c:data:`psi_bilinear_matrix_values` + * :c:data:`psi_det_alpha_unique` + * :c:data:`psi_det_beta_unique` + * :c:data:`ref_bitmask_energy` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`davidson_nos2_run_slave` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`davidson_nos2_push_results_async_send` + * :c:func:`davidson_push_results_async_recv` + * :c:func:`h_u_0_nstates_openmp_work` + + +.. 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_det` + * :c:data:`n_states_diag` + + 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_det` + * :c:data:`n_states_diag` + + +.. c:function:: davidson_push_results_async_recv: + + + File : :file:`davidson/davidson_parallel.irp.f` + + .. code:: fortran + + subroutine davidson_push_results_async_recv(zmq_socket_push,sending) + + + Push the results of $H | U \rangle$ from a worker to the master. + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`davidson_csf_slave_work` + * :c:func:`davidson_nos2_slave_work` + * :c:func:`davidson_slave_work` + + +.. c:function:: davidson_push_results_async_send: + + + File : :file:`davidson/davidson_parallel.irp.f` + + .. code:: fortran + + subroutine davidson_push_results_async_send(zmq_socket_push, v_t, s_t, imin, imax, task_id,sending) + + + Push the results of $H | U \rangle$ from a worker to the master. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_det` + * :c:data:`n_states_diag` + + 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_det` + * :c:data:`n_states_diag` + + 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:`mpi_initialized` + * :c:data:`mpi_rank` + * :c:data:`n_det` * :c:data:`n_states_diag` + * :c:data:`nproc` + * :c:data:`psi_bilinear_matrix_columns_loc` + * :c:data:`psi_bilinear_matrix_order_transp_reverse` + * :c:data:`psi_bilinear_matrix_transp_values` + * :c:data:`psi_bilinear_matrix_values` + * :c:data:`psi_det_alpha_unique` + * :c:data:`psi_det_beta_unique` + * :c:data:`ref_bitmask_energy` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`davidson_run_slave` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`davidson_push_results_async_recv` + * :c:func:`davidson_push_results_async_send` + * :c:func:`h_s2_u_0_nstates_openmp_work` + * :c:func:`lock_io` + * :c:func:`unlock_io` + + +.. 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:`ci_electronic_energy` + * :c:data:`ci_electronic_energy` + * :c:data:`ci_energy` + * :c:data:`ci_electronic_energy` + * :c:data:`distributed_davidson` + * :c:data:`n_det` + * :c:data:`n_states` + * :c:data:`psi_coef` + * :c:data:`psi_energy` + * :c:data:`psi_energy` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`remove_small_contributions` + * :c:func:`run_cipsi` + * :c:func:`run_orb_opt_trust_v2` + * :c:func:`run_stochastic_cipsi` + * :c:func:`update_parameters` + + 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:data:`psi_energy` + * :c:data:`psi_energy` + + +.. c:function:: h_s2_u_0_nstates_openmp: + + + File : :file:`davidson/u0_hs2_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:`n_det` + * :c:data:`psi_bilinear_matrix_order_reverse` + * :c:data:`psi_bilinear_matrix_values` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`davidson_diag_hjj_sjj` + * :c:func:`u_0_hs2_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_hs2_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:`n_det` + * :c:data:`n_int` + * :c:data:`ref_bitmask_energy` Called by: @@ -794,19 +1951,87 @@ Subroutines / functions :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_hs2_u0.irp.f_template_807` + + .. 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:`n_det` + * :c:data:`n_int` + * :c:data:`nthreads_davidson` + * :c:data:`psi_bilinear_matrix_columns_loc` + * :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_det_alpha_unique` + * :c:data:`psi_det_beta_unique` + * :c:data:`singles_alpha_csc` + * :c:data:`singles_alpha_csc_idx` + * :c:data:`singles_beta_csc` + * :c:data:`singles_beta_csc_idx` + + 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_single_spin` -.. c:function:: davidson_run_slave: +.. c:function:: h_s2_u_0_nstates_openmp_work_2: - File : :file:`davidson/davidson_parallel.irp.f` + File : :file:`davidson/u0_hs2_u0.irp.f_template_807` .. code:: fortran - subroutine davidson_run_slave(thread,iproc) + subroutine H_S2_u_0_nstates_openmp_work_2(v_t,s_t,u_t,N_st,sze,istart,iend,ishift,istep) - Slave routine for Davidson's diagonalization. + Computes $v_t = H | u_t \rangle$ and $s_t = S^2 | u_t\rangle$ + + Default should be 1,N_det,0,1 Needs: @@ -814,184 +2039,236 @@ Subroutines / functions :columns: 3 * :c:data:`n_det` - * :c:data:`n_states_diag` + * :c:data:`n_int` + * :c:data:`nthreads_davidson` + * :c:data:`psi_bilinear_matrix_columns_loc` + * :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_det_alpha_unique` + * :c:data:`psi_det_beta_unique` + * :c:data:`singles_alpha_csc` + * :c:data:`singles_alpha_csc_idx` + * :c:data:`singles_beta_csc` + * :c:data:`singles_beta_csc_idx` Called by: .. hlist:: :columns: 3 - * :c:func:`davidson_slave_inproc` - * :c:func:`davidson_slave_tcp` + * :c:func:`h_s2_u_0_nstates_openmp_work` 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: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_single_spin` -.. c:function:: davidson_slave_inproc: +.. c:function:: h_s2_u_0_nstates_openmp_work_3: - File : :file:`davidson/davidson_parallel.irp.f` + File : :file:`davidson/u0_hs2_u0.irp.f_template_807` .. code:: fortran - subroutine davidson_slave_inproc(i) + 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 - Called by: + Needs: .. hlist:: :columns: 3 - * :c:func:`h_s2_u_0_nstates_zmq` + * :c:data:`n_det` + * :c:data:`n_int` + * :c:data:`nthreads_davidson` + * :c:data:`psi_bilinear_matrix_columns_loc` + * :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_det_alpha_unique` + * :c:data:`psi_det_beta_unique` + * :c:data:`singles_alpha_csc` + * :c:data:`singles_alpha_csc_idx` + * :c:data:`singles_beta_csc` + * :c:data:`singles_beta_csc_idx` - Calls: + Called by: .. 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) - - + * :c:func:`h_s2_u_0_nstates_openmp_work` Calls: .. hlist:: :columns: 3 - * :c:func:`davidson_run_slave` + * :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_single_spin` -.. c:function:: davidson_slave_work: +.. c:function:: h_s2_u_0_nstates_openmp_work_4: - File : :file:`davidson/davidson_parallel.irp.f` + File : :file:`davidson/u0_hs2_u0.irp.f_template_807` .. code:: fortran - subroutine davidson_slave_work(zmq_to_qp_run_socket, zmq_socket_push, N_st, sze, worker_id) + 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:`mpi_initialized` - * :c:data:`mpi_rank` * :c:data:`n_det` - * :c:data:`n_states_diag` - * :c:data:`nproc` + * :c:data:`n_int` + * :c:data:`nthreads_davidson` * :c:data:`psi_bilinear_matrix_columns_loc` * :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_det_alpha_unique` * :c:data:`psi_det_beta_unique` - * :c:data:`ref_bitmask_energy` + * :c:data:`singles_alpha_csc` + * :c:data:`singles_alpha_csc_idx` + * :c:data:`singles_beta_csc` + * :c:data:`singles_beta_csc_idx` Called by: .. hlist:: :columns: 3 - * :c:func:`davidson_run_slave` + * :c:func:`h_s2_u_0_nstates_openmp_work` Calls: .. hlist:: :columns: 3 - * :c:func:`davidson_push_results_async_recv` - * :c:func:`davidson_push_results_async_send` - * :c:func:`h_s2_u_0_nstates_openmp_work` + * :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_single_spin` -.. c:function:: diagonalize_ci: +.. c:function:: h_s2_u_0_nstates_openmp_work_n_int: - File : :file:`davidson/diagonalize_ci.irp.f` + File : :file:`davidson/u0_hs2_u0.irp.f_template_807` .. code:: fortran - subroutine diagonalize_CI + subroutine H_S2_u_0_nstates_openmp_work_N_int(v_t,s_t,u_t,N_st,sze,istart,iend,ishift,istep) - Replace the coefficients of the |CI| states by the coefficients of the - eigenstates of the |CI| matrix. + 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:`ci_electronic_energy` - * :c:data:`ci_electronic_energy` - * :c:data:`ci_energy` - * :c:data:`ci_electronic_energy` * :c:data:`n_det` - * :c:data:`n_states` - * :c:data:`psi_coef` - * :c:data:`psi_energy` - * :c:data:`psi_energy` + * :c:data:`n_int` + * :c:data:`nthreads_davidson` + * :c:data:`psi_bilinear_matrix_columns_loc` + * :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_det_alpha_unique` + * :c:data:`psi_det_beta_unique` + * :c:data:`singles_alpha_csc` + * :c:data:`singles_alpha_csc_idx` + * :c:data:`singles_beta_csc` + * :c:data:`singles_beta_csc_idx` - Touches: + Called by: .. 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:data:`psi_energy` - * :c:data:`psi_energy` + * :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_single_spin` -.. c:function:: h_s2_u_0_nstates_openmp: +.. c:function:: h_s2_u_0_nstates_zmq: - File : :file:`davidson/u0_h_u0.irp.f` + File : :file:`davidson/davidson_parallel.irp.f` .. code:: fortran - subroutine H_S2_u_0_nstates_openmp(v_0,s_0,u_0,N_st,sze) + 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$. + Computes $v_0 = H | u_0\rangle$ and $s_0 = S^2 | u_0\rangle$ - Assumes that the determinants are in psi_det + n : number of determinants - istart, iend, ishift, istep are used in ZMQ parallelization. + 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:`mpi_initialized` * :c:data:`n_det` + * :c:data:`nproc` + * :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_values` * :c:data:`psi_bilinear_matrix_values` + * :c:data:`psi_det_alpha_unique` + * :c:data:`psi_det_beta_unique` + * :c:data:`ref_bitmask_energy` Called by: @@ -999,31 +2276,37 @@ Subroutines / functions :columns: 3 * :c:func:`davidson_diag_hjj_sjj` - * :c:func:`u_0_h_u_0` + * :c:func:`u_0_hs2_u_0` Calls: .. hlist:: :columns: 3 + * :c:func:`davidson_collector` + * :c:func:`davidson_slave_inproc` * :c:func:`dset_order` * :c:func:`dtranspose` - * :c:func:`h_s2_u_0_nstates_openmp_work` + * :c:func:`end_parallel_job` + * :c:func:`new_parallel_job` + * :c:func:`set_multiple_levels_omp` -.. c:function:: h_s2_u_0_nstates_openmp_work: +.. c:function:: h_s2_u_0_two_e_nstates_openmp: - File : :file:`davidson/u0_h_u0.irp.f` + File : :file:`davidson/u0_wee_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) + subroutine H_S2_u_0_two_e_nstates_openmp(v_0,s_0,u_0,N_st,sze) - Computes $v_t = H | u_t\rangle$ and $s_t = S^2 | u_t\rangle$ + Computes $v_0 = H | u_0\rangle$ and $s_0 = S^2 | u_0\rangle$ - Default should be 1,N_det,0,1 + Assumes that the determinants are in psi_det + + istart, iend, ishift, istep are used in ZMQ parallelization. Needs: @@ -1031,40 +2314,37 @@ Subroutines / functions :columns: 3 * :c:data:`n_det` - * :c:data:`n_int` - * :c:data:`ref_bitmask_energy` + * :c:data:`psi_bilinear_matrix_order_reverse` + * :c:data:`psi_bilinear_matrix_values` Called by: .. hlist:: :columns: 3 - * :c:func:`davidson_slave_work` - * :c:func:`h_s2_u_0_nstates_openmp` + * :c:func:`u_0_h_u_0_two_e` 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:func:`dset_order` + * :c:func:`dtranspose` + * :c:func:`h_s2_u_0_two_e_nstates_openmp_work` -.. c:function:: h_s2_u_0_nstates_openmp_work_1: +.. c:function:: h_s2_u_0_two_e_nstates_openmp_work: - File : :file:`davidson/u0_h_u0.irp.f_template_708` + File : :file:`davidson/u0_wee_u0.irp.f` .. code:: fortran - subroutine H_S2_u_0_nstates_openmp_work_1(v_t,s_t,u_t,N_st,sze,istart,iend,ishift,istep) + 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$ + Computes $v_t = H | u_t\rangle$ and $s_t = S^2 | u_t\rangle$ Default should be 1,N_det,0,1 @@ -1075,48 +2355,38 @@ Subroutines / functions * :c:data:`n_det` * :c:data:`n_int` - * :c:data:`nthreads_davidson` - * :c:data:`psi_bilinear_matrix_columns_loc` - * :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_det_alpha_unique` - * :c:data:`psi_det_beta_unique` - * :c:data:`singles_beta_csc` - * :c:data:`singles_beta_csc_idx` + * :c:data:`ref_bitmask_energy` Called by: .. hlist:: :columns: 3 - * :c:func:`h_s2_u_0_nstates_openmp_work` + * :c:func:`h_s2_u_0_two_e_nstates_openmp` 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_single_spin` + * :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_nstates_openmp_work_2: +.. c:function:: h_s2_u_0_two_e_nstates_openmp_work_1: - File : :file:`davidson/u0_h_u0.irp.f_template_708` + File : :file:`davidson/u0_wee_u0.irp.f_template_457` .. code:: fortran - subroutine H_S2_u_0_nstates_openmp_work_2(v_t,s_t,u_t,N_st,sze,istart,iend,ishift,istep) + 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$ + Computes $v_t = H | u_t \rangle$ and $s_t = S^2 | u_t \rangle$ Default should be 1,N_det,0,1 @@ -1135,40 +2405,38 @@ Subroutines / functions * :c:data:`psi_bilinear_matrix_values` * :c:data:`psi_det_alpha_unique` * :c:data:`psi_det_beta_unique` - * :c:data:`singles_beta_csc` - * :c:data:`singles_beta_csc_idx` Called by: .. hlist:: :columns: 3 - * :c:func:`h_s2_u_0_nstates_openmp_work` + * :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_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_single_spin` + * :c:func:`i_wee_j_single` -.. c:function:: h_s2_u_0_nstates_openmp_work_3: +.. c:function:: h_s2_u_0_two_e_nstates_openmp_work_2: - File : :file:`davidson/u0_h_u0.irp.f_template_708` + File : :file:`davidson/u0_wee_u0.irp.f_template_457` .. code:: fortran - subroutine H_S2_u_0_nstates_openmp_work_3(v_t,s_t,u_t,N_st,sze,istart,iend,ishift,istep) + 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$ + Computes $v_t = H | u_t \rangle$ and $s_t = S^2 | u_t \rangle$ Default should be 1,N_det,0,1 @@ -1187,40 +2455,38 @@ Subroutines / functions * :c:data:`psi_bilinear_matrix_values` * :c:data:`psi_det_alpha_unique` * :c:data:`psi_det_beta_unique` - * :c:data:`singles_beta_csc` - * :c:data:`singles_beta_csc_idx` Called by: .. hlist:: :columns: 3 - * :c:func:`h_s2_u_0_nstates_openmp_work` + * :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_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_single_spin` + * :c:func:`i_wee_j_single` -.. c:function:: h_s2_u_0_nstates_openmp_work_4: +.. c:function:: h_s2_u_0_two_e_nstates_openmp_work_3: - File : :file:`davidson/u0_h_u0.irp.f_template_708` + File : :file:`davidson/u0_wee_u0.irp.f_template_457` .. code:: fortran - subroutine H_S2_u_0_nstates_openmp_work_4(v_t,s_t,u_t,N_st,sze,istart,iend,ishift,istep) + 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$ + Computes $v_t = H | u_t \rangle$ and $s_t = S^2 | u_t \rangle$ Default should be 1,N_det,0,1 @@ -1239,40 +2505,38 @@ Subroutines / functions * :c:data:`psi_bilinear_matrix_values` * :c:data:`psi_det_alpha_unique` * :c:data:`psi_det_beta_unique` - * :c:data:`singles_beta_csc` - * :c:data:`singles_beta_csc_idx` Called by: .. hlist:: :columns: 3 - * :c:func:`h_s2_u_0_nstates_openmp_work` + * :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_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_single_spin` + * :c:func:`i_wee_j_single` -.. c:function:: h_s2_u_0_nstates_openmp_work_n_int: +.. c:function:: h_s2_u_0_two_e_nstates_openmp_work_4: - File : :file:`davidson/u0_h_u0.irp.f_template_708` + File : :file:`davidson/u0_wee_u0.irp.f_template_457` .. 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) + 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$ + Computes $v_t = H | u_t \rangle$ and $s_t = S^2 | u_t \rangle$ Default should be 1,N_det,0,1 @@ -1291,98 +2555,88 @@ Subroutines / functions * :c:data:`psi_bilinear_matrix_values` * :c:data:`psi_det_alpha_unique` * :c:data:`psi_det_beta_unique` - * :c:data:`singles_beta_csc` - * :c:data:`singles_beta_csc_idx` Called by: .. hlist:: :columns: 3 - * :c:func:`h_s2_u_0_nstates_openmp_work` + * :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_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_single_spin` + * :c:func:`i_wee_j_single` -.. c:function:: h_s2_u_0_nstates_zmq: +.. c:function:: h_s2_u_0_two_e_nstates_openmp_work_n_int: - File : :file:`davidson/davidson_parallel.irp.f` + File : :file:`davidson/u0_wee_u0.irp.f_template_457` .. code:: fortran - subroutine H_S2_u_0_nstates_zmq(v_0,s_0,u_0,N_st,sze) + 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_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$ + Computes $v_t = H | u_t \rangle$ and $s_t = S^2 | u_t \rangle$ - S2_jj : array of $\langle j | S^2 | j \rangle$ + Default should be 1,N_det,0,1 Needs: .. hlist:: :columns: 3 - * :c:data:`mpi_initialized` * :c:data:`n_det` - * :c:data:`n_states_diag` - * :c:data:`nproc` + * :c:data:`n_int` + * :c:data:`nthreads_davidson` * :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_det_alpha_unique` * :c:data:`psi_det_beta_unique` - * :c:data:`ref_bitmask_energy` Called by: .. hlist:: :columns: 3 - * :c:func:`davidson_diag_hjj_sjj` - * :c:func:`u_0_h_u_0` + * :c:func:`h_s2_u_0_two_e_nstates_openmp_work` 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: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_single` -.. c:function:: h_s2_u_0_two_e_nstates_openmp: +.. c:function:: h_u_0_nstates_openmp: - File : :file:`davidson/u0_wee_u0.irp.f` + File : :file:`davidson/u0_h_u0.irp.f` .. code:: fortran - subroutine H_S2_u_0_two_e_nstates_openmp(v_0,s_0,u_0,N_st,sze) + subroutine H_u_0_nstates_openmp(v_0,u_0,N_st,sze) - Computes $v_0 = H | u_0\rangle$ and $s_0 = S^2 | u_0\rangle$ + Computes $v_0 = H | u_0\rangle$. Assumes that the determinants are in psi_det @@ -1402,7 +2656,10 @@ Subroutines / functions .. hlist:: :columns: 3 - * :c:func:`u_0_h_u_0_two_e` + * :c:func:`davidson_diag_csf_hjj` + * :c:func:`davidson_diag_hjj` + * :c:func:`davidson_diag_nonsym_hjj` + * :c:func:`u_0_h_u_0` Calls: @@ -1411,20 +2668,20 @@ Subroutines / functions * :c:func:`dset_order` * :c:func:`dtranspose` - * :c:func:`h_s2_u_0_two_e_nstates_openmp_work` + * :c:func:`h_u_0_nstates_openmp_work` -.. c:function:: h_s2_u_0_two_e_nstates_openmp_work: +.. c:function:: h_u_0_nstates_openmp_work: - File : :file:`davidson/u0_wee_u0.irp.f` + File : :file:`davidson/u0_h_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) + subroutine H_u_0_nstates_openmp_work(v_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$ + Computes $v_t = H | u_t\rangle$ Default should be 1,N_det,0,1 @@ -1442,31 +2699,33 @@ Subroutines / functions .. hlist:: :columns: 3 - * :c:func:`h_s2_u_0_two_e_nstates_openmp` + * :c:func:`davidson_csf_slave_work` + * :c:func:`davidson_nos2_slave_work` + * :c:func:`h_u_0_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:func:`h_u_0_nstates_openmp_work_1` + * :c:func:`h_u_0_nstates_openmp_work_2` + * :c:func:`h_u_0_nstates_openmp_work_3` + * :c:func:`h_u_0_nstates_openmp_work_4` + * :c:func:`h_u_0_nstates_openmp_work_n_int` -.. c:function:: h_s2_u_0_two_e_nstates_openmp_work_1: +.. c:function:: h_u_0_nstates_openmp_work_1: - File : :file:`davidson/u0_wee_u0.irp.f_template_457` + File : :file:`davidson/u0_h_u0.irp.f_template_757` .. 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) + subroutine H_u_0_nstates_openmp_work_1(v_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$ + Computes $v_t = H | u_t \rangle$ Default should be 1,N_det,0,1 @@ -1485,13 +2744,17 @@ Subroutines / functions * :c:data:`psi_bilinear_matrix_values` * :c:data:`psi_det_alpha_unique` * :c:data:`psi_det_beta_unique` + * :c:data:`singles_alpha_csc` + * :c:data:`singles_alpha_csc_idx` + * :c:data:`singles_beta_csc` + * :c:data:`singles_beta_csc_idx` Called by: .. hlist:: :columns: 3 - * :c:func:`h_s2_u_0_two_e_nstates_openmp_work` + * :c:func:`h_u_0_nstates_openmp_work` Calls: @@ -1500,23 +2763,22 @@ Subroutines / functions * :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_single` + * :c:func:`i_h_j_single_spin` -.. c:function:: h_s2_u_0_two_e_nstates_openmp_work_2: +.. c:function:: h_u_0_nstates_openmp_work_2: - File : :file:`davidson/u0_wee_u0.irp.f_template_457` + File : :file:`davidson/u0_h_u0.irp.f_template_757` .. 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) + subroutine H_u_0_nstates_openmp_work_2(v_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$ + Computes $v_t = H | u_t \rangle$ Default should be 1,N_det,0,1 @@ -1535,13 +2797,17 @@ Subroutines / functions * :c:data:`psi_bilinear_matrix_values` * :c:data:`psi_det_alpha_unique` * :c:data:`psi_det_beta_unique` + * :c:data:`singles_alpha_csc` + * :c:data:`singles_alpha_csc_idx` + * :c:data:`singles_beta_csc` + * :c:data:`singles_beta_csc_idx` Called by: .. hlist:: :columns: 3 - * :c:func:`h_s2_u_0_two_e_nstates_openmp_work` + * :c:func:`h_u_0_nstates_openmp_work` Calls: @@ -1550,23 +2816,22 @@ Subroutines / functions * :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_single` + * :c:func:`i_h_j_single_spin` -.. c:function:: h_s2_u_0_two_e_nstates_openmp_work_3: +.. c:function:: h_u_0_nstates_openmp_work_3: - File : :file:`davidson/u0_wee_u0.irp.f_template_457` + File : :file:`davidson/u0_h_u0.irp.f_template_757` .. 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) + subroutine H_u_0_nstates_openmp_work_3(v_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$ + Computes $v_t = H | u_t \rangle$ Default should be 1,N_det,0,1 @@ -1585,13 +2850,17 @@ Subroutines / functions * :c:data:`psi_bilinear_matrix_values` * :c:data:`psi_det_alpha_unique` * :c:data:`psi_det_beta_unique` + * :c:data:`singles_alpha_csc` + * :c:data:`singles_alpha_csc_idx` + * :c:data:`singles_beta_csc` + * :c:data:`singles_beta_csc_idx` Called by: .. hlist:: :columns: 3 - * :c:func:`h_s2_u_0_two_e_nstates_openmp_work` + * :c:func:`h_u_0_nstates_openmp_work` Calls: @@ -1600,23 +2869,22 @@ Subroutines / functions * :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_single` + * :c:func:`i_h_j_single_spin` -.. c:function:: h_s2_u_0_two_e_nstates_openmp_work_4: +.. c:function:: h_u_0_nstates_openmp_work_4: - File : :file:`davidson/u0_wee_u0.irp.f_template_457` + File : :file:`davidson/u0_h_u0.irp.f_template_757` .. 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) + subroutine H_u_0_nstates_openmp_work_4(v_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$ + Computes $v_t = H | u_t \rangle$ Default should be 1,N_det,0,1 @@ -1635,13 +2903,17 @@ Subroutines / functions * :c:data:`psi_bilinear_matrix_values` * :c:data:`psi_det_alpha_unique` * :c:data:`psi_det_beta_unique` + * :c:data:`singles_alpha_csc` + * :c:data:`singles_alpha_csc_idx` + * :c:data:`singles_beta_csc` + * :c:data:`singles_beta_csc_idx` Called by: .. hlist:: :columns: 3 - * :c:func:`h_s2_u_0_two_e_nstates_openmp_work` + * :c:func:`h_u_0_nstates_openmp_work` Calls: @@ -1650,23 +2922,22 @@ Subroutines / functions * :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_single` + * :c:func:`i_h_j_single_spin` -.. c:function:: h_s2_u_0_two_e_nstates_openmp_work_n_int: +.. c:function:: h_u_0_nstates_openmp_work_n_int: - File : :file:`davidson/u0_wee_u0.irp.f_template_457` + File : :file:`davidson/u0_h_u0.irp.f_template_757` .. 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) + subroutine H_u_0_nstates_openmp_work_N_int(v_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$ + Computes $v_t = H | u_t \rangle$ Default should be 1,N_det,0,1 @@ -1685,13 +2956,17 @@ Subroutines / functions * :c:data:`psi_bilinear_matrix_values` * :c:data:`psi_det_alpha_unique` * :c:data:`psi_det_beta_unique` + * :c:data:`singles_alpha_csc` + * :c:data:`singles_alpha_csc_idx` + * :c:data:`singles_beta_csc` + * :c:data:`singles_beta_csc_idx` Called by: .. hlist:: :columns: 3 - * :c:func:`h_s2_u_0_two_e_nstates_openmp_work` + * :c:func:`h_u_0_nstates_openmp_work` Calls: @@ -1700,37 +2975,66 @@ Subroutines / functions * :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_single` + * :c:func:`i_h_j_single_spin` -.. c:function:: print_energy_components: +.. c:function:: h_u_0_nstates_zmq: - File : :file:`davidson/print_e_components.irp.f` + File : :file:`davidson/davidson_parallel_nos2.irp.f` .. code:: fortran - subroutine print_energy_components() + subroutine H_u_0_nstates_zmq(v_0,u_0,N_st,sze) - Prints the different components of the energy. + Computes $v_0 = H | u_0\rangle$ + + n : number of determinants + + H_jj : array of $\langle j | H | j \rangle$ Needs: .. hlist:: :columns: 3 - * :c:data:`mo_integrals_n_e` - * :c:data:`mo_kinetic_integrals` - * :c:data:`mo_num` - * :c:data:`mo_pseudo_integrals` - * :c:data:`n_states` - * :c:data:`nuclear_repulsion` - * :c:data:`one_e_dm_mo_alpha` - * :c:data:`psi_energy` + * :c:data:`mpi_initialized` + * :c:data:`n_det` + * :c:data:`nproc` + * :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_values` + * :c:data:`psi_bilinear_matrix_values` + * :c:data:`psi_det_alpha_unique` + * :c:data:`psi_det_beta_unique` + * :c:data:`ref_bitmask_energy` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`davidson_diag_csf_hjj` + * :c:func:`davidson_diag_hjj` + * :c:func:`davidson_diag_nonsym_hjj` + * :c:func:`u_0_h_u_0` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`davidson_nos2_collector` + * :c:func:`davidson_nos2_slave_inproc` + * :c:func:`dset_order` + * :c:func:`dtranspose` + * :c:func:`end_parallel_job` + * :c:func:`new_parallel_job` + * :c:func:`set_multiple_levels_omp` .. c:function:: u_0_h_u_0: @@ -1740,13 +3044,11 @@ Subroutines / functions .. code:: fortran - subroutine u_0_H_u_0(e_0,s_0,u_0,n,keys_tmp,Nint,N_st,sze) + subroutine u_0_H_u_0(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}$ - and $S_0 = \frac{\langle u_0 | S^2 | u_0 \rangle}{\langle u_0 | u_0 \rangle}$ - n : number of determinants @@ -1759,22 +3061,14 @@ Subroutines / functions * :c:data:`h_matrix_all_dets` * :c:data:`n_det_max_full` * :c:data:`n_states_diag` - * :c:data:`s2_matrix_all_dets` - - 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:func:`h_u_0_nstates_openmp` + * :c:func:`h_u_0_nstates_zmq` .. c:function:: u_0_h_u_0_two_e: @@ -1807,6 +3101,50 @@ Subroutines / functions * :c:func:`h_s2_u_0_two_e_nstates_openmp` +.. c:function:: u_0_hs2_u_0: + + + File : :file:`davidson/u0_hs2_u0.irp.f` + + .. code:: fortran + + subroutine u_0_HS2_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:`distributed_davidson` + * :c:data:`h_matrix_all_dets` + * :c:data:`n_det_max_full` + * :c:data:`n_states_diag` + * :c:data:`s2_matrix_all_dets` + + 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:: zmq_get_n_states_diag: diff --git a/docs/source/modules/davidson_undressed.rst b/docs/source/modules/davidson_undressed.rst index 326f48d94..db8bdac36 100644 --- a/docs/source/modules/davidson_undressed.rst +++ b/docs/source/modules/davidson_undressed.rst @@ -25,6 +25,7 @@ Providers double precision, allocatable :: dressing_column_h (N_det,N_states) double precision, allocatable :: dressing_column_s (N_det,N_states) + double precision, allocatable :: dressing_delta (N_det,N_states) Null dressing vectors @@ -54,6 +55,37 @@ Providers double precision, allocatable :: dressing_column_h (N_det,N_states) double precision, allocatable :: dressing_column_s (N_det,N_states) + double precision, allocatable :: dressing_delta (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_delta + + + 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) + double precision, allocatable :: dressing_delta (N_det,N_states) Null dressing vectors diff --git a/docs/source/modules/density_for_dft.rst b/docs/source/modules/density_for_dft.rst index 3520c86ac..33ae10fb5 100644 --- a/docs/source/modules/density_for_dft.rst +++ b/docs/source/modules/density_for_dft.rst @@ -40,13 +40,13 @@ EZFIO parameters .. option:: no_core_density - if [no_core_dm] then all elements of the density matrix involving at least one orbital set as core are set to zero + If [no_core_density] then all elements of the density matrix involving at least one orbital set as core are set to zero. The default is False in order to take all the density. - Default: full_density + Default: False .. option:: normalize_dm - if .True., then you normalize the no_core_dm to elec_alpha_num - n_core_orb and elec_beta_num - n_core_orb + Type of density. If .True., then you normalize the no_core_dm to elec_alpha_num - n_core_orb and elec_beta_num - n_core_orb Default: True diff --git a/docs/source/modules/determinants.rst b/docs/source/modules/determinants.rst index cd548bd82..fa305964a 100644 --- a/docs/source/modules/determinants.rst +++ b/docs/source/modules/determinants.rst @@ -19,7 +19,7 @@ The main providers for this module are: 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:function:`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. @@ -75,9 +75,9 @@ EZFIO parameters .. option:: weight_selection - Weight used in the selection. 0: input state-average weight, 1: 1./(c_0^2), 2: rPT2 matching, 3: variance matching, 4: variance and rPT2 matching, 5: variance minimization and matching, 6: CI coefficients + Weight used in the selection. 0: input state-average weight, 1: 1./(c_0^2), 2: PT2 matching, 3: variance matching, 4: variance and PT2 matching, 5: variance minimization and matching, 6: CI coefficients 7: input state-average multiplied by variance and PT2 matching 8: input state-average multiplied by PT2 matching 9: input state-average multiplied by variance matching - Default: 2 + Default: 1 .. option:: threshold_generators @@ -164,6 +164,12 @@ EZFIO parameters Default: False +.. option:: save_threshold + + Cut-off to apply to the CI coefficients when the wave function is stored + + Default: 1.e-14 + Providers --------- @@ -220,6 +226,56 @@ Providers +.. c:var:: attachment_numbers_sorted + + + File : :file:`determinants/density_matrix.irp.f` + + .. code:: fortran + + double precision, allocatable :: attachment_numbers_sorted (mo_num,N_states) + double precision, allocatable :: dettachment_numbers_sorted (mo_num,N_states) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`difference_dm_eigvect` + * :c:data:`mo_num` + * :c:data:`n_attachment` + * :c:data:`n_states` + + + +.. c:var:: attachment_orbitals + + + File : :file:`determinants/density_matrix.irp.f` + + .. code:: fortran + + double precision, allocatable :: attachment_orbitals (ao_num,mo_num,N_states) + double precision, allocatable :: dettachment_orbitals (ao_num,mo_num,N_states) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`difference_dm_eigvect` + * :c:data:`mo_coef` + * :c:data:`mo_num` + * :c:data:`n_attachment` + * :c:data:`n_states` + + + .. c:var:: barycentric_electronic_energy @@ -242,6 +298,12 @@ Providers * :c:data:`n_states` * :c:data:`psi_coef` + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`pt2_e0_denominator` .. c:var:: c0_weight @@ -269,6 +331,7 @@ Providers .. hlist:: :columns: 3 + * :c:data:`selection_weight` * :c:data:`state_average_weight` @@ -330,38 +393,54 @@ Providers -.. c:var:: det_to_occ_pattern +.. c:var:: dettachment_numbers_sorted - File : :file:`determinants/occ_pattern.irp.f` + File : :file:`determinants/density_matrix.irp.f` .. code:: fortran - integer, allocatable :: det_to_occ_pattern (N_det) + double precision, allocatable :: attachment_numbers_sorted (mo_num,N_states) + double precision, allocatable :: dettachment_numbers_sorted (mo_num,N_states) - 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` + * :c:data:`difference_dm_eigvect` + * :c:data:`mo_num` + * :c:data:`n_attachment` + * :c:data:`n_states` + + + +.. c:var:: dettachment_orbitals + + + File : :file:`determinants/density_matrix.irp.f` + + .. code:: fortran + + double precision, allocatable :: attachment_orbitals (ao_num,mo_num,N_states) + double precision, allocatable :: dettachment_orbitals (ao_num,mo_num,N_states) + - Needed by: + + Needs: .. hlist:: :columns: 3 - * :c:data:`pruned` - * :c:data:`psi_occ_pattern_hii` - * :c:data:`weight_occ_pattern` - * :c:data:`weight_occ_pattern_average` + * :c:data:`ao_num` + * :c:data:`difference_dm_eigvect` + * :c:data:`mo_coef` + * :c:data:`mo_num` + * :c:data:`n_attachment` + * :c:data:`n_states` + .. c:var:: diagonal_h_matrix_on_psi_det @@ -381,8 +460,6 @@ Providers .. hlist:: :columns: 3 - * :c:data:`elec_alpha_num` - * :c:data:`elec_beta_num` * :c:data:`elec_num` * :c:data:`n_det` * :c:data:`n_int` @@ -398,6 +475,128 @@ Providers * :c:data:`barycentric_electronic_energy` +.. c:var:: difference_dm + + + File : :file:`determinants/density_matrix.irp.f` + + .. code:: fortran + + double precision, allocatable :: difference_dm (mo_num,mo_num,N_states) + + + difference_dm(i,j,istate) = dm(i,j,1) - dm(i,j,istate) + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_num` + * :c:data:`n_states` + * :c:data:`one_e_dm_mo_alpha` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`difference_dm_eigvect` + + +.. c:var:: difference_dm_eigval + + + File : :file:`determinants/density_matrix.irp.f` + + .. code:: fortran + + double precision, allocatable :: difference_dm_eigvect (mo_num,mo_num,N_states) + double precision, allocatable :: difference_dm_eigval (mo_num,N_states) + + + eigenvalues and eigevenctors of the difference_dm + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`difference_dm` + * :c:data:`mo_num` + * :c:data:`n_states` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`attachment_numbers_sorted` + * :c:data:`attachment_orbitals` + * :c:data:`n_attachment` + + +.. c:var:: difference_dm_eigvect + + + File : :file:`determinants/density_matrix.irp.f` + + .. code:: fortran + + double precision, allocatable :: difference_dm_eigvect (mo_num,mo_num,N_states) + double precision, allocatable :: difference_dm_eigval (mo_num,N_states) + + + eigenvalues and eigevenctors of the difference_dm + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`difference_dm` + * :c:data:`mo_num` + * :c:data:`n_states` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`attachment_numbers_sorted` + * :c:data:`attachment_orbitals` + * :c:data:`n_attachment` + + +.. c:var:: dominant_det + + + File : :file:`determinants/determinants.irp.f` + + .. code:: fortran + + integer, allocatable :: dominant_det (N_states) + + + Determinant with the largest weight, for each state + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_det` + * :c:data:`n_states` + * :c:data:`psi_coef` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`dominant_cfg` + + .. c:var:: double_exc_bitmask @@ -473,7 +672,11 @@ Providers .. hlist:: :columns: 3 + * :c:data:`cholesky_mo_num` + * :c:data:`cholesky_mo_transp` + * :c:data:`do_mo_cholesky` * :c:data:`full_ijkl_bitmask` + * :c:data:`mo_integrals_cache_min` * :c:data:`mo_integrals_map` * :c:data:`mo_num` * :c:data:`mo_one_e_integrals` @@ -499,7 +702,11 @@ Providers .. hlist:: :columns: 3 + * :c:data:`cholesky_mo_num` + * :c:data:`cholesky_mo_transp` + * :c:data:`do_mo_cholesky` * :c:data:`full_ijkl_bitmask` + * :c:data:`mo_integrals_cache_min` * :c:data:`mo_integrals_map` * :c:data:`mo_num` * :c:data:`mo_two_e_integrals_in_map` @@ -579,8 +786,6 @@ Providers * :c:data:`big_array_coulomb_integrals` * :c:data:`big_array_coulomb_integrals` - * :c:data:`elec_alpha_num` - * :c:data:`elec_beta_num` * :c:data:`mo_integrals_map` * :c:data:`mo_two_e_integrals_in_map` * :c:data:`n_det` @@ -614,8 +819,6 @@ Providers * :c:data:`big_array_coulomb_integrals` * :c:data:`big_array_coulomb_integrals` - * :c:data:`elec_alpha_num` - * :c:data:`elec_beta_num` * :c:data:`mo_integrals_map` * :c:data:`mo_two_e_integrals_in_map` * :c:data:`n_int` @@ -630,6 +833,33 @@ Providers * :c:data:`psi_coef_cas_diagonalized` +.. c:var:: h_matrix_diag_all_dets + + + File : :file:`determinants/utils.irp.f` + + .. code:: fortran + + double precision, allocatable :: h_matrix_diag_all_dets (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` + + + .. c:var:: idx_cas @@ -712,109 +942,221 @@ Providers * :c:data:`psi_non_cas_sorted_bit` -.. c:var:: max_degree_exc +.. c:var:: list_attachment - File : :file:`determinants/determinants.irp.f` + File : :file:`determinants/density_matrix.irp.f` .. code:: fortran - integer :: max_degree_exc + integer, allocatable :: n_attachment (N_states) + integer, allocatable :: n_dettachment (N_states) + integer, allocatable :: list_attachment (mo_num,N_states) + integer, allocatable :: list_dettachment (mo_num,N_states) - 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:data:`difference_dm_eigvect` + * :c:data:`mo_num` + * :c:data:`n_states` + + Needed by: + + .. hlist:: + :columns: 3 + * :c:data:`attachment_numbers_sorted` + * :c:data:`attachment_orbitals` -.. c:var:: n_det +.. c:var:: list_dettachment - File : :file:`determinants/determinants.irp.f` + File : :file:`determinants/density_matrix.irp.f` .. code:: fortran - integer :: n_det + integer, allocatable :: n_attachment (N_states) + integer, allocatable :: n_dettachment (N_states) + integer, allocatable :: list_attachment (mo_num,N_states) + integer, allocatable :: list_dettachment (mo_num,N_states) - 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` + * :c:data:`difference_dm_eigvect` + * :c:data:`mo_num` + * :c:data:`n_states` Needed by: .. hlist:: :columns: 3 - * :c:data:`act_2_rdm_aa_mo` - * :c:data:`act_2_rdm_ab_mo` - * :c:data:`act_2_rdm_bb_mo` - * :c:data:`act_2_rdm_spin_trace_mo` - * :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:`h_apply_buffer_allocated` - * :c:data:`h_matrix_all_dets` - * :c:data:`max_degree_exc` - * :c:data:`n_det_qp_edit` - * :c:data:`one_e_dm_mo_alpha` - * :c:data:`pruned` - * :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:`attachment_numbers_sorted` + * :c:data:`attachment_orbitals` + + +.. 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_attachment + + + File : :file:`determinants/density_matrix.irp.f` + + .. code:: fortran + + integer, allocatable :: n_attachment (N_states) + integer, allocatable :: n_dettachment (N_states) + integer, allocatable :: list_attachment (mo_num,N_states) + integer, allocatable :: list_dettachment (mo_num,N_states) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`difference_dm_eigvect` + * :c:data:`mo_num` + * :c:data:`n_states` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`attachment_numbers_sorted` + * :c:data:`attachment_orbitals` + + +.. 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:`act_2_rdm_aa_mo` + * :c:data:`act_2_rdm_ab_mo` + * :c:data:`act_2_rdm_bb_mo` + * :c:data:`act_2_rdm_spin_trace_mo` + * :c:data:`act_2_rdm_trans_spin_trace_mo` + * :c:data:`barycentric_electronic_energy` + * :c:data:`ci_electronic_energy` + * :c:data:`ci_energy` + * :c:data:`det_alpha_norm` + * :c:data:`det_to_configuration` + * :c:data:`diag_algorithm` + * :c:data:`diagonal_h_matrix_on_psi_det` + * :c:data:`dominant_cfg` + * :c:data:`dominant_det` + * :c:data:`dressed_column_idx` + * :c:data:`dressing_column_h` + * :c:data:`gradvec_old` + * :c:data:`h_apply_buffer_allocated` + * :c:data:`h_matrix_all_dets` + * :c:data:`h_matrix_diag_all_dets` + * :c:data:`hessmat_old` + * :c:data:`max_degree_exc` + * :c:data:`multi_s_dipole_moment` + * :c:data:`n_det_generators` + * :c:data:`n_det_qp_edit` + * :c:data:`n_det_selectors` + * :c:data:`one_e_dm_mo_alpha` + * :c:data:`one_e_tr_dm_mo` + * :c:data:`one_e_tr_dm_mo_alpha` + * :c:data:`overlap_states` + * :c:data:`p0tuvx_peter` + * :c:data:`pruned` + * :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_configuration` + * :c:data:`psi_configuration_hii` + * :c:data:`psi_configuration_to_psi_det` + * :c:data:`psi_csf_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_energy_two_e_trans` * :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:`state_av_act_2_rdm_aa_mo` * :c:data:`state_av_act_2_rdm_ab_mo` * :c:data:`state_av_act_2_rdm_bb_mo` - * :c:data:`state_av_act_2_rdm_spin_trace_mo` - * :c:data:`weight_occ_pattern` - * :c:data:`weight_occ_pattern_average` + * :c:data:`weight_configuration` + * :c:data:`weight_configuration_average` .. c:var:: n_det_alpha_unique @@ -847,13 +1189,16 @@ Providers :columns: 3 * :c:data:`det_alpha_norm` + * :c:data:`multi_s_dipole_moment` * :c:data:`one_e_dm_mo_alpha` + * :c:data:`one_e_tr_dm_mo` + * :c:data:`one_e_tr_dm_mo_alpha` * :c:data:`psi_bilinear_matrix` * :c:data:`psi_bilinear_matrix_transp_rows_loc` - * :c:data:`psi_bilinear_matrix_transp_values` * :c:data:`psi_bilinear_matrix_values` * :c:data:`singles_alpha_csc` * :c:data:`singles_alpha_csc_idx` + * :c:data:`singles_alpha_csc_map` .. c:var:: n_det_beta_unique @@ -886,13 +1231,17 @@ Providers :columns: 3 * :c:data:`det_alpha_norm` + * :c:data:`multi_s_dipole_moment` * :c:data:`one_e_dm_mo_alpha` + * :c:data:`one_e_tr_dm_mo` + * :c:data:`one_e_tr_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:data:`singles_beta_csc_map` .. c:var:: n_det_cas @@ -998,67 +1347,56 @@ Providers -.. c:var:: n_double_exc_bitmasks +.. c:var:: n_dettachment - File : :file:`determinants/determinants_bitmasks.irp.f` + File : :file:`determinants/density_matrix.irp.f` .. code:: fortran - integer :: n_double_exc_bitmasks + integer, allocatable :: n_attachment (N_states) + integer, allocatable :: n_dettachment (N_states) + integer, allocatable :: list_attachment (mo_num,N_states) + integer, allocatable :: list_dettachment (mo_num,N_states) - Number of double excitation bitmasks - Needed by: + Needs: .. hlist:: :columns: 3 - * :c:data:`double_exc_bitmask` + * :c:data:`difference_dm_eigvect` + * :c:data:`mo_num` + * :c:data:`n_states` - -.. c:var:: n_occ_pattern + Needed by: + .. hlist:: + :columns: 3 - File : :file:`determinants/occ_pattern.irp.f` + * :c:data:`attachment_numbers_sorted` + * :c:data:`attachment_orbitals` - .. code:: fortran + +.. c:var:: n_double_exc_bitmasks - integer(bit_kind), allocatable :: psi_occ_pattern (N_int,2,psi_det_size) - integer :: n_occ_pattern + File : :file:`determinants/determinants_bitmasks.irp.f` - 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` + .. code:: fortran - Needs: + integer :: n_double_exc_bitmasks - .. 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` + Number of double excitation bitmasks Needed by: .. hlist:: :columns: 3 - * :c:data:`det_to_occ_pattern` - * :c:data:`pruned` - * :c:data:`psi_occ_pattern_hii` - * :c:data:`psi_occ_pattern_sorted` - * :c:data:`weight_occ_pattern` - * :c:data:`weight_occ_pattern_average` + * :c:data:`double_exc_bitmask` .. c:var:: n_single_exc_bitmasks @@ -1081,6 +1419,28 @@ Providers * :c:data:`single_exc_bitmask` +.. c:var:: one_e_dm_ao + + + File : :file:`determinants/density_matrix.irp.f` + + .. code:: fortran + + double precision, allocatable :: one_e_dm_ao (ao_num,ao_num) + + + one_e_dm_ao = one_e_dm_ao_alpha + one_e_dm_ao_beta + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`one_e_dm_ao_alpha` + + + .. c:var:: one_e_dm_ao_alpha @@ -1104,6 +1464,38 @@ Providers * :c:data:`mo_num` * :c:data:`one_e_dm_mo_alpha_average` + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`one_e_dm_ao` + + +.. c:var:: one_e_dm_ao_alpha_nstates + + + File : :file:`determinants/density_matrix.irp.f` + + .. code:: fortran + + double precision, allocatable :: one_e_dm_ao_alpha_nstates (ao_num,ao_num,N_states) + double precision, allocatable :: one_e_dm_ao_beta_nstates (ao_num,ao_num,N_states) + + + 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:`n_states` + * :c:data:`one_e_dm_mo_alpha` + .. c:var:: one_e_dm_ao_beta @@ -1129,6 +1521,38 @@ Providers * :c:data:`mo_num` * :c:data:`one_e_dm_mo_alpha_average` + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`one_e_dm_ao` + + +.. c:var:: one_e_dm_ao_beta_nstates + + + File : :file:`determinants/density_matrix.irp.f` + + .. code:: fortran + + double precision, allocatable :: one_e_dm_ao_alpha_nstates (ao_num,ao_num,N_states) + double precision, allocatable :: one_e_dm_ao_beta_nstates (ao_num,ao_num,N_states) + + + 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:`n_states` + * :c:data:`one_e_dm_mo_alpha` + .. c:var:: one_e_dm_dagger_mo_spin_index @@ -1210,10 +1634,12 @@ Providers .. hlist:: :columns: 3 + * :c:data:`difference_dm` * :c:data:`full_occ_2_rdm_aa_mo` * :c:data:`full_occ_2_rdm_ab_mo` * :c:data:`full_occ_2_rdm_bb_mo` * :c:data:`full_occ_2_rdm_spin_trace_mo` + * :c:data:`one_e_dm_ao_alpha_nstates` * :c:data:`one_e_dm_dagger_mo_spin_index` * :c:data:`one_e_dm_mo_alpha_average` * :c:data:`one_e_dm_mo_alpha_for_dft` @@ -1221,6 +1647,8 @@ Providers * :c:data:`one_e_dm_mo_diff` * :c:data:`one_e_dm_mo_spin_index` * :c:data:`psi_energy_h_core` + * :c:data:`v_ne_psi_energy` + * :c:data:`z_dipole_moment` .. c:var:: one_e_dm_mo_alpha_average @@ -1251,6 +1679,8 @@ Providers .. hlist:: :columns: 3 + * :c:data:`d0tu` + * :c:data:`d0tu_alpha_ao` * :c:data:`one_e_dm_ao_alpha` * :c:data:`one_e_dm_mo` * :c:data:`one_e_dm_mo_alpha_for_dft` @@ -1297,10 +1727,12 @@ Providers .. hlist:: :columns: 3 + * :c:data:`difference_dm` * :c:data:`full_occ_2_rdm_aa_mo` * :c:data:`full_occ_2_rdm_ab_mo` * :c:data:`full_occ_2_rdm_bb_mo` * :c:data:`full_occ_2_rdm_spin_trace_mo` + * :c:data:`one_e_dm_ao_alpha_nstates` * :c:data:`one_e_dm_dagger_mo_spin_index` * :c:data:`one_e_dm_mo_alpha_average` * :c:data:`one_e_dm_mo_alpha_for_dft` @@ -1308,6 +1740,8 @@ Providers * :c:data:`one_e_dm_mo_diff` * :c:data:`one_e_dm_mo_spin_index` * :c:data:`psi_energy_h_core` + * :c:data:`v_ne_psi_energy` + * :c:data:`z_dipole_moment` .. c:var:: one_e_dm_mo_beta_average @@ -1338,6 +1772,8 @@ Providers .. hlist:: :columns: 3 + * :c:data:`d0tu` + * :c:data:`d0tu_alpha_ao` * :c:data:`one_e_dm_ao_alpha` * :c:data:`one_e_dm_mo` * :c:data:`one_e_dm_mo_alpha_for_dft` @@ -1446,67 +1882,162 @@ Providers * :c:data:`one_e_spin_density_ao` -.. c:var:: pruned +.. c:var:: one_e_tr_dm_mo - File : :file:`determinants/prune_wf.irp.f` + File : :file:`determinants/tr_density_matrix.irp.f` .. code:: fortran - logical, allocatable :: pruned (N_det) + double precision, allocatable :: one_e_tr_dm_mo (mo_num,mo_num,N_states,N_states) - True if determinant is removed by pruning + One body transition density matrix for all pairs of states n and m, < Psi^n | a_i^\dagger a_a | Psi^m > Needs: .. hlist:: :columns: 3 - * :c:data:`det_to_occ_pattern` + * :c:data:`elec_alpha_num` + * :c:data:`elec_beta_num` + * :c:data:`mo_num` * :c:data:`n_det` - * :c:data:`pruning` - * :c:data:`psi_average_norm_contrib` - * :c:data:`psi_det_sorted` - * :c:data:`psi_occ_pattern` - * :c:data:`psi_occ_pattern_sorted` - * :c:data:`s2_eig` + * :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_alpha_unique` + * :c:data:`psi_det_beta_unique` + + Needed by: + + .. hlist:: + :columns: 3 + * :c:data:`multi_s_deriv_1` + * :c:data:`multi_s_dipole_moment` -.. c:var:: psi_average_norm_contrib +.. c:var:: one_e_tr_dm_mo_alpha - File : :file:`determinants/determinants.irp.f` + File : :file:`determinants/tr_density_matrix.irp.f` .. code:: fortran - double precision, allocatable :: psi_average_norm_contrib (psi_det_size) + double precision, allocatable :: one_e_tr_dm_mo_alpha (mo_num,mo_num,N_states,N_states) + double precision, allocatable :: one_e_tr_dm_mo_beta (mo_num,mo_num,N_states,N_states) - Contribution of determinants to the state-averaged density. + :math:`\alpha` and :math:`\beta` one-body transition density matrices for all pairs of states 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_coef` - * :c:data:`psi_det_size` - * :c:data:`state_average_weight` - - Needed by: - - .. hlist:: - :columns: 3 + * :c:data:`psi_bilinear_matrix_transp_values` + * :c:data:`psi_bilinear_matrix_values` + * :c:data:`psi_det_alpha_unique` + * :c:data:`psi_det_beta_unique` - * :c:data:`pruned` - * :c:data:`psi_det_sorted` -.. c:var:: psi_average_norm_contrib_sorted +.. c:var:: one_e_tr_dm_mo_beta + + + File : :file:`determinants/tr_density_matrix.irp.f` + + .. code:: fortran + + double precision, allocatable :: one_e_tr_dm_mo_alpha (mo_num,mo_num,N_states,N_states) + double precision, allocatable :: one_e_tr_dm_mo_beta (mo_num,mo_num,N_states,N_states) + + + :math:`\alpha` and :math:`\beta` one-body transition density matrices for all pairs of states + + 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_alpha_unique` + * :c:data:`psi_det_beta_unique` + + + +.. c:var:: pruned + + + File : :file:`determinants/prune_wf.irp.f` + + .. code:: fortran + + logical, allocatable :: pruned (N_det) + + + True if determinant is removed by pruning + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_det` + * :c:data:`pruning` + * :c:data:`psi_average_norm_contrib` + * :c:data:`psi_det_sorted` + + + +.. 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:`pruned` + * :c:data:`psi_det_sorted` + + +.. c:var:: psi_average_norm_contrib_sorted File : :file:`determinants/determinants.irp.f` @@ -1541,7 +2072,11 @@ Providers .. hlist:: :columns: 3 + * :c:data:`n_det_generators` + * :c:data:`n_det_selectors` * :c:data:`pruned` + * :c:data:`psi_det_generators` + * :c:data:`psi_selectors` .. c:var:: psi_bilinear_matrix @@ -1614,8 +2149,12 @@ Providers * :c:data:`act_2_rdm_ab_mo` * :c:data:`act_2_rdm_bb_mo` * :c:data:`act_2_rdm_spin_trace_mo` + * :c:data:`act_2_rdm_trans_spin_trace_mo` * :c:data:`det_alpha_norm` + * :c:data:`multi_s_dipole_moment` * :c:data:`one_e_dm_mo_alpha` + * :c:data:`one_e_tr_dm_mo` + * :c:data:`one_e_tr_dm_mo_alpha` * :c:data:`psi_bilinear_matrix` * :c:data:`psi_bilinear_matrix_columns_loc` * :c:data:`psi_bilinear_matrix_order_reverse` @@ -1623,7 +2162,6 @@ Providers * :c:data:`state_av_act_2_rdm_aa_mo` * :c:data:`state_av_act_2_rdm_ab_mo` * :c:data:`state_av_act_2_rdm_bb_mo` - * :c:data:`state_av_act_2_rdm_spin_trace_mo` .. c:var:: psi_bilinear_matrix_columns_loc @@ -1698,8 +2236,12 @@ Providers * :c:data:`act_2_rdm_ab_mo` * :c:data:`act_2_rdm_bb_mo` * :c:data:`act_2_rdm_spin_trace_mo` + * :c:data:`act_2_rdm_trans_spin_trace_mo` * :c:data:`det_alpha_norm` + * :c:data:`multi_s_dipole_moment` * :c:data:`one_e_dm_mo_alpha` + * :c:data:`one_e_tr_dm_mo` + * :c:data:`one_e_tr_dm_mo_alpha` * :c:data:`psi_bilinear_matrix` * :c:data:`psi_bilinear_matrix_columns_loc` * :c:data:`psi_bilinear_matrix_order_reverse` @@ -1707,7 +2249,6 @@ Providers * :c:data:`state_av_act_2_rdm_aa_mo` * :c:data:`state_av_act_2_rdm_ab_mo` * :c:data:`state_av_act_2_rdm_bb_mo` - * :c:data:`state_av_act_2_rdm_spin_trace_mo` .. c:var:: psi_bilinear_matrix_order_reverse @@ -1739,10 +2280,10 @@ Providers * :c:data:`act_2_rdm_ab_mo` * :c:data:`act_2_rdm_bb_mo` * :c:data:`act_2_rdm_spin_trace_mo` + * :c:data:`act_2_rdm_trans_spin_trace_mo` * :c:data:`state_av_act_2_rdm_aa_mo` * :c:data:`state_av_act_2_rdm_ab_mo` * :c:data:`state_av_act_2_rdm_bb_mo` - * :c:data:`state_av_act_2_rdm_spin_trace_mo` .. c:var:: psi_bilinear_matrix_order_transp_reverse @@ -1811,8 +2352,12 @@ Providers * :c:data:`act_2_rdm_ab_mo` * :c:data:`act_2_rdm_bb_mo` * :c:data:`act_2_rdm_spin_trace_mo` + * :c:data:`act_2_rdm_trans_spin_trace_mo` * :c:data:`det_alpha_norm` + * :c:data:`multi_s_dipole_moment` * :c:data:`one_e_dm_mo_alpha` + * :c:data:`one_e_tr_dm_mo` + * :c:data:`one_e_tr_dm_mo_alpha` * :c:data:`psi_bilinear_matrix` * :c:data:`psi_bilinear_matrix_columns_loc` * :c:data:`psi_bilinear_matrix_order_reverse` @@ -1820,7 +2365,6 @@ Providers * :c:data:`state_av_act_2_rdm_aa_mo` * :c:data:`state_av_act_2_rdm_ab_mo` * :c:data:`state_av_act_2_rdm_bb_mo` - * :c:data:`state_av_act_2_rdm_spin_trace_mo` .. c:var:: psi_bilinear_matrix_transp_columns @@ -1852,7 +2396,6 @@ Providers * :c:data:`n_states` * :c:data:`psi_bilinear_matrix_values` * :c:data:`psi_det_sorted_bit` - * :c:data:`psi_det_alpha_unique` * :c:data:`psi_det_beta_unique` Needed by: @@ -1860,7 +2403,10 @@ Providers .. hlist:: :columns: 3 + * :c:data:`multi_s_dipole_moment` * :c:data:`one_e_dm_mo_alpha` + * :c:data:`one_e_tr_dm_mo` + * :c:data:`one_e_tr_dm_mo_alpha` * :c:data:`psi_bilinear_matrix_order_transp_reverse` * :c:data:`psi_bilinear_matrix_transp_rows_loc` @@ -1894,7 +2440,6 @@ Providers * :c:data:`n_states` * :c:data:`psi_bilinear_matrix_values` * :c:data:`psi_det_sorted_bit` - * :c:data:`psi_det_alpha_unique` * :c:data:`psi_det_beta_unique` Needed by: @@ -1902,7 +2447,10 @@ Providers .. hlist:: :columns: 3 + * :c:data:`multi_s_dipole_moment` * :c:data:`one_e_dm_mo_alpha` + * :c:data:`one_e_tr_dm_mo` + * :c:data:`one_e_tr_dm_mo_alpha` * :c:data:`psi_bilinear_matrix_order_transp_reverse` * :c:data:`psi_bilinear_matrix_transp_rows_loc` @@ -1936,7 +2484,6 @@ Providers * :c:data:`n_states` * :c:data:`psi_bilinear_matrix_values` * :c:data:`psi_det_sorted_bit` - * :c:data:`psi_det_alpha_unique` * :c:data:`psi_det_beta_unique` Needed by: @@ -1944,7 +2491,10 @@ Providers .. hlist:: :columns: 3 + * :c:data:`multi_s_dipole_moment` * :c:data:`one_e_dm_mo_alpha` + * :c:data:`one_e_tr_dm_mo` + * :c:data:`one_e_tr_dm_mo_alpha` * :c:data:`psi_bilinear_matrix_order_transp_reverse` * :c:data:`psi_bilinear_matrix_transp_rows_loc` @@ -2001,7 +2551,6 @@ Providers * :c:data:`n_states` * :c:data:`psi_bilinear_matrix_values` * :c:data:`psi_det_sorted_bit` - * :c:data:`psi_det_alpha_unique` * :c:data:`psi_det_beta_unique` Needed by: @@ -2009,7 +2558,10 @@ Providers .. hlist:: :columns: 3 + * :c:data:`multi_s_dipole_moment` * :c:data:`one_e_dm_mo_alpha` + * :c:data:`one_e_tr_dm_mo` + * :c:data:`one_e_tr_dm_mo_alpha` * :c:data:`psi_bilinear_matrix_order_transp_reverse` * :c:data:`psi_bilinear_matrix_transp_rows_loc` @@ -2057,8 +2609,12 @@ Providers * :c:data:`act_2_rdm_ab_mo` * :c:data:`act_2_rdm_bb_mo` * :c:data:`act_2_rdm_spin_trace_mo` + * :c:data:`act_2_rdm_trans_spin_trace_mo` * :c:data:`det_alpha_norm` + * :c:data:`multi_s_dipole_moment` * :c:data:`one_e_dm_mo_alpha` + * :c:data:`one_e_tr_dm_mo` + * :c:data:`one_e_tr_dm_mo_alpha` * :c:data:`psi_bilinear_matrix` * :c:data:`psi_bilinear_matrix_columns_loc` * :c:data:`psi_bilinear_matrix_order_reverse` @@ -2066,7 +2622,6 @@ Providers * :c:data:`state_av_act_2_rdm_aa_mo` * :c:data:`state_av_act_2_rdm_ab_mo` * :c:data:`state_av_act_2_rdm_bb_mo` - * :c:data:`state_av_act_2_rdm_spin_trace_mo` .. c:var:: psi_cas @@ -2278,6 +2833,7 @@ Providers * :c:data:`mpi_master` * :c:data:`n_det` * :c:data:`n_states` + * :c:data:`psi_det` * :c:data:`psi_det_size` * :c:data:`read_wf` @@ -2290,26 +2846,35 @@ Providers * :c:data:`act_2_rdm_ab_mo` * :c:data:`act_2_rdm_bb_mo` * :c:data:`act_2_rdm_spin_trace_mo` + * :c:data:`act_2_rdm_trans_spin_trace_mo` * :c:data:`barycentric_electronic_energy` * :c:data:`c0_weight` * :c:data:`ci_electronic_energy` + * :c:data:`dettocsftransformationmatrix` + * :c:data:`dominant_det` * :c:data:`dressed_column_idx` + * :c:data:`gradvec_old` + * :c:data:`hessmat_old` + * :c:data:`overlap_states` + * :c:data:`p0tuvx_peter` * :c:data:`psi_average_norm_contrib` * :c:data:`psi_bilinear_matrix_values` * :c:data:`psi_cas` * :c:data:`psi_coef_max` + * :c:data:`psi_csf_coef` * :c:data:`psi_det_sorted` * :c:data:`psi_det_sorted_bit` * :c:data:`psi_energy` * :c:data:`psi_energy_two_e` + * :c:data:`psi_energy_two_e_trans` * :c:data:`psi_non_cas` + * :c:data:`pt2_e0_denominator` * :c:data:`s2_values` * :c:data:`state_av_act_2_rdm_aa_mo` * :c:data:`state_av_act_2_rdm_ab_mo` * :c:data:`state_av_act_2_rdm_bb_mo` - * :c:data:`state_av_act_2_rdm_spin_trace_mo` - * :c:data:`weight_occ_pattern` - * :c:data:`weight_occ_pattern_average` + * :c:data:`weight_configuration` + * :c:data:`weight_configuration_average` .. c:var:: psi_coef_cas_diagonalized @@ -2422,7 +2987,11 @@ Providers .. hlist:: :columns: 3 + * :c:data:`n_det_generators` + * :c:data:`n_det_selectors` * :c:data:`pruned` + * :c:data:`psi_det_generators` + * :c:data:`psi_selectors` .. c:var:: psi_coef_sorted_bit @@ -2496,13 +3065,23 @@ Providers :columns: 3 * :c:data:`ci_electronic_energy` - * :c:data:`det_to_occ_pattern` + * :c:data:`det_to_configuration` + * :c:data:`dettocsftransformationmatrix` * :c:data:`diagonal_h_matrix_on_psi_det` + * :c:data:`gradvec_old` * :c:data:`h_matrix_all_dets` + * :c:data:`h_matrix_diag_all_dets` + * :c:data:`hessmat_old` * :c:data:`max_degree_exc` + * :c:data:`n_elec_alpha_for_psi_configuration` * :c:data:`one_e_dm_mo_alpha` + * :c:data:`p0tuvx_peter` * :c:data:`psi_bilinear_matrix_values` * :c:data:`psi_cas` + * :c:data:`psi_coef` + * :c:data:`psi_configuration` + * :c:data:`psi_configuration_to_psi_det` + * :c:data:`psi_csf_coef` * :c:data:`psi_det_alpha` * :c:data:`psi_det_beta` * :c:data:`psi_det_hii` @@ -2510,8 +3089,8 @@ Providers * :c:data:`psi_det_sorted_bit` * :c:data:`psi_energy` * :c:data:`psi_energy_two_e` + * :c:data:`psi_energy_two_e_trans` * :c:data:`psi_non_cas` - * :c:data:`psi_occ_pattern` * :c:data:`s2_matrix_all_dets` * :c:data:`s2_values` @@ -2576,13 +3155,16 @@ Providers :columns: 3 * :c:data:`det_alpha_norm` + * :c:data:`multi_s_dipole_moment` * :c:data:`one_e_dm_mo_alpha` + * :c:data:`one_e_tr_dm_mo` + * :c:data:`one_e_tr_dm_mo_alpha` * :c:data:`psi_bilinear_matrix` * :c:data:`psi_bilinear_matrix_transp_rows_loc` - * :c:data:`psi_bilinear_matrix_transp_values` * :c:data:`psi_bilinear_matrix_values` * :c:data:`singles_alpha_csc` * :c:data:`singles_alpha_csc_idx` + * :c:data:`singles_alpha_csc_map` .. c:var:: psi_det_beta @@ -2645,13 +3227,17 @@ Providers :columns: 3 * :c:data:`det_alpha_norm` + * :c:data:`multi_s_dipole_moment` * :c:data:`one_e_dm_mo_alpha` + * :c:data:`one_e_tr_dm_mo` + * :c:data:`one_e_tr_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:data:`singles_beta_csc_map` .. c:var:: psi_det_hii @@ -2671,8 +3257,6 @@ Providers .. hlist:: :columns: 3 - * :c:data:`elec_alpha_num` - * :c:data:`elec_beta_num` * :c:data:`elec_num` * :c:data:`n_det` * :c:data:`n_int` @@ -2685,7 +3269,8 @@ Providers .. hlist:: :columns: 3 - * :c:data:`psi_occ_pattern_hii` + * :c:data:`psi_configuration_hii` + * :c:data:`pt2_e0_denominator` .. c:var:: psi_det_size @@ -2707,6 +3292,7 @@ Providers * :c:data:`ezfio_filename` * :c:data:`mpi_master` + * :c:data:`read_wf` Needed by: @@ -2717,18 +3303,20 @@ Providers * :c:data:`psi_cas` * :c:data:`psi_cas_sorted_bit` * :c:data:`psi_coef` + * :c:data:`psi_configuration` * :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_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` @@ -2767,7 +3355,11 @@ Providers .. hlist:: :columns: 3 + * :c:data:`n_det_generators` + * :c:data:`n_det_selectors` * :c:data:`pruned` + * :c:data:`psi_det_generators` + * :c:data:`psi_selectors` .. c:var:: psi_det_sorted_bit @@ -2842,7 +3434,11 @@ Providers .. hlist:: :columns: 3 + * :c:data:`n_det_generators` + * :c:data:`n_det_selectors` * :c:data:`pruned` + * :c:data:`psi_det_generators` + * :c:data:`psi_selectors` .. c:var:: psi_energy_h_core @@ -3004,171 +3600,6 @@ Providers -.. 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:`pruned` - * :c:data:`psi_occ_pattern_hii` - * :c:data:`psi_occ_pattern_sorted` - * :c:data:`weight_occ_pattern` - * :c:data:`weight_occ_pattern_average` - - -.. 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:: psi_occ_pattern_sorted - - - File : :file:`determinants/occ_pattern.irp.f` - - .. code:: fortran - - integer(bit_kind), allocatable :: psi_occ_pattern_sorted (N_int,2,N_occ_pattern) - double precision, allocatable :: weight_occ_pattern_average_sorted (N_occ_pattern) - integer, allocatable :: psi_occ_pattern_sorted_order (N_occ_pattern) - integer, allocatable :: psi_occ_pattern_sorted_order_reverse (N_occ_pattern) - - - Occupation patterns sorted by weight - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`n_int` - * :c:data:`psi_occ_pattern` - * :c:data:`weight_occ_pattern_average` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`pruned` - - -.. c:var:: psi_occ_pattern_sorted_order - - - File : :file:`determinants/occ_pattern.irp.f` - - .. code:: fortran - - integer(bit_kind), allocatable :: psi_occ_pattern_sorted (N_int,2,N_occ_pattern) - double precision, allocatable :: weight_occ_pattern_average_sorted (N_occ_pattern) - integer, allocatable :: psi_occ_pattern_sorted_order (N_occ_pattern) - integer, allocatable :: psi_occ_pattern_sorted_order_reverse (N_occ_pattern) - - - Occupation patterns sorted by weight - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`n_int` - * :c:data:`psi_occ_pattern` - * :c:data:`weight_occ_pattern_average` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`pruned` - - -.. c:var:: psi_occ_pattern_sorted_order_reverse - - - File : :file:`determinants/occ_pattern.irp.f` - - .. code:: fortran - - integer(bit_kind), allocatable :: psi_occ_pattern_sorted (N_int,2,N_occ_pattern) - double precision, allocatable :: weight_occ_pattern_average_sorted (N_occ_pattern) - integer, allocatable :: psi_occ_pattern_sorted_order (N_occ_pattern) - integer, allocatable :: psi_occ_pattern_sorted_order_reverse (N_occ_pattern) - - - Occupation patterns sorted by weight - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`n_int` - * :c:data:`psi_occ_pattern` - * :c:data:`weight_occ_pattern_average` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`pruned` - - .. c:var:: ref_bitmask_energy @@ -3207,8 +3638,11 @@ Providers .. hlist:: :columns: 3 + * :c:data:`coef_hf_selector` * :c:data:`diagonal_h_matrix_on_psi_det` * :c:data:`psi_det_hii` + * :c:data:`psi_energy_two_e_trans` + * :c:data:`psi_selectors_diag_h_mat` .. c:var:: ref_bitmask_energy_aa @@ -3249,8 +3683,11 @@ Providers .. hlist:: :columns: 3 + * :c:data:`coef_hf_selector` * :c:data:`diagonal_h_matrix_on_psi_det` * :c:data:`psi_det_hii` + * :c:data:`psi_energy_two_e_trans` + * :c:data:`psi_selectors_diag_h_mat` .. c:var:: ref_bitmask_energy_ab @@ -3291,8 +3728,11 @@ Providers .. hlist:: :columns: 3 + * :c:data:`coef_hf_selector` * :c:data:`diagonal_h_matrix_on_psi_det` * :c:data:`psi_det_hii` + * :c:data:`psi_energy_two_e_trans` + * :c:data:`psi_selectors_diag_h_mat` .. c:var:: ref_bitmask_energy_bb @@ -3333,8 +3773,11 @@ Providers .. hlist:: :columns: 3 + * :c:data:`coef_hf_selector` * :c:data:`diagonal_h_matrix_on_psi_det` * :c:data:`psi_det_hii` + * :c:data:`psi_energy_two_e_trans` + * :c:data:`psi_selectors_diag_h_mat` .. c:var:: ref_bitmask_kinetic_energy @@ -3375,8 +3818,11 @@ Providers .. hlist:: :columns: 3 + * :c:data:`coef_hf_selector` * :c:data:`diagonal_h_matrix_on_psi_det` * :c:data:`psi_det_hii` + * :c:data:`psi_energy_two_e_trans` + * :c:data:`psi_selectors_diag_h_mat` .. c:var:: ref_bitmask_n_e_energy @@ -3417,8 +3863,11 @@ Providers .. hlist:: :columns: 3 + * :c:data:`coef_hf_selector` * :c:data:`diagonal_h_matrix_on_psi_det` * :c:data:`psi_det_hii` + * :c:data:`psi_energy_two_e_trans` + * :c:data:`psi_selectors_diag_h_mat` .. c:var:: ref_bitmask_one_e_energy @@ -3459,8 +3908,11 @@ Providers .. hlist:: :columns: 3 + * :c:data:`coef_hf_selector` * :c:data:`diagonal_h_matrix_on_psi_det` * :c:data:`psi_det_hii` + * :c:data:`psi_energy_two_e_trans` + * :c:data:`psi_selectors_diag_h_mat` .. c:var:: ref_bitmask_two_e_energy @@ -3501,8 +3953,11 @@ Providers .. hlist:: :columns: 3 + * :c:data:`coef_hf_selector` * :c:data:`diagonal_h_matrix_on_psi_det` * :c:data:`psi_det_hii` + * :c:data:`psi_energy_two_e_trans` + * :c:data:`psi_selectors_diag_h_mat` .. c:var:: ref_closed_shell_bitmask @@ -3573,6 +4028,34 @@ Providers .. code:: fortran double precision, allocatable :: s2_values (N_states) + double precision, allocatable :: s_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:var:: s_values + + + File : :file:`determinants/s2.irp.f` + + .. code:: fortran + + double precision, allocatable :: s2_values (N_states) + double precision, allocatable :: s_values (N_states) array of the averaged values of the S^2 operator on the various states @@ -3707,8 +4190,6 @@ Providers .. hlist:: :columns: 3 - * :c:data:`elec_alpha_num` - * :c:data:`mo_num` * :c:data:`n_int` * :c:data:`psi_det_alpha_unique` @@ -3718,39 +4199,62 @@ Providers :columns: 3 * :c:data:`singles_alpha_csc` + * :c:data:`singles_alpha_csc_map` -.. c:var:: singles_alpha_csc_size +.. c:var:: singles_alpha_csc_map 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 + type(mmap_type) :: singles_alpha_csc_map - 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 + Indices of all single excitations Needs: .. hlist:: :columns: 3 - * :c:data:`elec_alpha_num` - * :c:data:`mo_num` * :c:data:`n_int` * :c:data:`psi_det_alpha_unique` + * :c:data:`singles_alpha_csc_idx` - Needed by: - .. hlist:: - :columns: 3 + +.. 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:`n_int` + * :c:data:`psi_det_alpha_unique` + + Needed by: + + .. hlist:: + :columns: 3 * :c:data:`singles_alpha_csc` + * :c:data:`singles_alpha_csc_map` .. c:var:: singles_beta_csc @@ -3796,8 +4300,6 @@ Providers .. hlist:: :columns: 3 - * :c:data:`elec_beta_num` - * :c:data:`mo_num` * :c:data:`n_int` * :c:data:`psi_det_beta_unique` @@ -3807,6 +4309,30 @@ Providers :columns: 3 * :c:data:`singles_beta_csc` + * :c:data:`singles_beta_csc_map` + + +.. c:var:: singles_beta_csc_map + + + File : :file:`determinants/spindeterminants.irp.f` + + .. code:: fortran + + type(mmap_type) :: singles_beta_csc_map + + + 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_size @@ -3829,8 +4355,6 @@ Providers .. hlist:: :columns: 3 - * :c:data:`elec_beta_num` - * :c:data:`mo_num` * :c:data:`n_int` * :c:data:`psi_det_beta_unique` @@ -3840,6 +4364,7 @@ Providers :columns: 3 * :c:data:`singles_beta_csc` + * :c:data:`singles_beta_csc_map` .. c:var:: state_average_weight @@ -3873,100 +4398,128 @@ Providers * :c:data:`one_e_dm_average_beta_mo_for_dft` * :c:data:`one_e_dm_mo_alpha_average` * :c:data:`psi_average_norm_contrib` + * :c:data:`selection_weight` * :c:data:`state_av_act_2_rdm_aa_mo` * :c:data:`state_av_act_2_rdm_ab_mo` * :c:data:`state_av_act_2_rdm_bb_mo` * :c:data:`state_av_act_2_rdm_spin_trace_mo` - * :c:data:`weight_occ_pattern_average` + * :c:data:`weight_configuration_average` -.. c:var:: weight_occ_pattern +.. c:var:: v_ne_psi_energy - File : :file:`determinants/occ_pattern.irp.f` + File : :file:`determinants/psi_energy_mono_elec.irp.f` .. code:: fortran - double precision, allocatable :: weight_occ_pattern (N_occ_pattern,N_states) + double precision, allocatable :: v_ne_psi_energy (N_states) - Weight of the occupation patterns in the wave function + v_ne_psi_energy = :math:`\langle \Psi | v_ne |\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:`det_to_occ_pattern` - * :c:data:`n_det` + * :c:data:`elec_alpha_num` + * :c:data:`elec_beta_num` + * :c:data:`mo_integrals_n_e` + * :c:data:`mo_num` * :c:data:`n_states` - * :c:data:`psi_coef` - * :c:data:`psi_occ_pattern` + * :c:data:`one_e_dm_mo_alpha` -.. c:var:: weight_occ_pattern_average +.. c:var:: x_dipole_moment - File : :file:`determinants/occ_pattern.irp.f` + File : :file:`determinants/dipole_moments.irp.f` .. code:: fortran - double precision, allocatable :: weight_occ_pattern_average (N_occ_pattern) + double precision, allocatable :: z_dipole_moment (N_states) + double precision, allocatable :: y_dipole_moment (N_states) + double precision, allocatable :: x_dipole_moment (N_states) - State-average weight of the occupation patterns in the wave function + blablabla Needs: .. hlist:: :columns: 3 - * :c:data:`det_to_occ_pattern` - * :c:data:`n_det` + * :c:data:`mo_dipole_x` + * :c:data:`mo_num` * :c:data:`n_states` - * :c:data:`psi_coef` - * :c:data:`psi_occ_pattern` - * :c:data:`state_average_weight` - - Needed by: - - .. hlist:: - :columns: 3 + * :c:data:`nucl_charge` + * :c:data:`nucl_coord` + * :c:data:`nucl_num` + * :c:data:`one_e_dm_mo_alpha` - * :c:data:`psi_occ_pattern_sorted` -.. c:var:: weight_occ_pattern_average_sorted +.. c:var:: y_dipole_moment - File : :file:`determinants/occ_pattern.irp.f` + File : :file:`determinants/dipole_moments.irp.f` .. code:: fortran - integer(bit_kind), allocatable :: psi_occ_pattern_sorted (N_int,2,N_occ_pattern) - double precision, allocatable :: weight_occ_pattern_average_sorted (N_occ_pattern) - integer, allocatable :: psi_occ_pattern_sorted_order (N_occ_pattern) - integer, allocatable :: psi_occ_pattern_sorted_order_reverse (N_occ_pattern) + double precision, allocatable :: z_dipole_moment (N_states) + double precision, allocatable :: y_dipole_moment (N_states) + double precision, allocatable :: x_dipole_moment (N_states) - Occupation patterns sorted by weight + blablabla Needs: .. hlist:: :columns: 3 - * :c:data:`n_int` - * :c:data:`psi_occ_pattern` - * :c:data:`weight_occ_pattern_average` + * :c:data:`mo_dipole_x` + * :c:data:`mo_num` + * :c:data:`n_states` + * :c:data:`nucl_charge` + * :c:data:`nucl_coord` + * :c:data:`nucl_num` + * :c:data:`one_e_dm_mo_alpha` - Needed by: + + +.. c:var:: z_dipole_moment + + + File : :file:`determinants/dipole_moments.irp.f` + + .. code:: fortran + + double precision, allocatable :: z_dipole_moment (N_states) + double precision, allocatable :: y_dipole_moment (N_states) + double precision, allocatable :: x_dipole_moment (N_states) + + + blablabla + + Needs: .. hlist:: :columns: 3 - * :c:data:`pruned` + * :c:data:`mo_dipole_x` + * :c:data:`mo_num` + * :c:data:`n_states` + * :c:data:`nucl_charge` + * :c:data:`nucl_coord` + * :c:data:`nucl_num` + * :c:data:`one_e_dm_mo_alpha` + @@ -4059,8 +4612,6 @@ Subroutines / functions .. 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:`mo_two_e_integrals_jj` @@ -4097,8 +4648,6 @@ Subroutines / functions .. hlist:: :columns: 3 - * :c:data:`elec_alpha_num` - * :c:data:`elec_beta_num` * :c:data:`mo_two_e_integrals_jj` Called by: @@ -4139,6 +4688,16 @@ Subroutines / functions + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`fill_buffer_double` + * :c:func:`fill_buffer_single` + * :c:func:`select_singles` + * :c:func:`select_singles_and_doubles` + .. c:function:: apply_holes: @@ -4151,6 +4710,14 @@ Subroutines / functions + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`fill_buffer_double` + * :c:func:`fill_buffer_single` + .. c:function:: apply_particle: @@ -4163,6 +4730,16 @@ Subroutines / functions + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`fill_buffer_double` + * :c:func:`fill_buffer_single` + * :c:func:`get_m0` + * :c:func:`get_m1` + .. c:function:: apply_particles: @@ -4175,6 +4752,18 @@ Subroutines / functions + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`fill_buffer_double` + * :c:func:`fill_buffer_single` + * :c:func:`get_d0` + * :c:func:`get_d0_reference` + * :c:func:`get_d1` + * :c:func:`get_d1_reference` + .. c:function:: bitstring_to_list_ab: @@ -4186,7 +4775,7 @@ Subroutines / functions subroutine bitstring_to_list_ab( string, list, n_elements, Nint) - Gives the inidices(+1) of the bits set to 1 in the bit string + Gives the indices(+1) of the bits set to 1 in the bit string For alpha/beta determinants. Called by: @@ -4211,16 +4800,25 @@ Subroutines / functions * :c:func:`i_h_j_s2` * :c:func:`i_h_j_two_e` * :c:func:`i_h_j_verbose` + * :c:data:`multi_s_dipole_moment` * :c:data:`one_e_dm_mo_alpha` + * :c:data:`one_e_tr_dm_mo` + * :c:data:`one_e_tr_dm_mo_alpha` * :c:func:`orb_range_diag_to_all_2_rdm_dm_buffer` * :c:func:`orb_range_diag_to_all_states_2_rdm_dm_buffer` + * :c:func:`orb_range_diag_to_all_states_2_rdm_trans_buffer` * :c:func:`orb_range_off_diag_single_to_2_rdm_aa_dm_buffer` * :c:func:`orb_range_off_diag_single_to_2_rdm_ab_dm_buffer` * :c:func:`orb_range_off_diag_single_to_2_rdm_bb_dm_buffer` * :c:func:`orb_range_off_diag_single_to_all_states_aa_dm_buffer` + * :c:func:`orb_range_off_diag_single_to_all_states_aa_trans_rdm_buffer` * :c:func:`orb_range_off_diag_single_to_all_states_ab_dm_buffer` + * :c:func:`orb_range_off_diag_single_to_all_states_ab_trans_rdm_buffer` * :c:func:`orb_range_off_diag_single_to_all_states_bb_dm_buffer` + * :c:func:`orb_range_off_diag_single_to_all_states_bb_trans_rdm_buffer` * :c:data:`ref_closed_shell_bitmask` + * :c:func:`select_singles` + * :c:func:`select_singles_and_doubles` * :c:func:`single_excitation_wee` @@ -4249,6 +4847,13 @@ Subroutines / functions * :c:data:`mo_two_e_integrals_jj` * :c:data:`n_int` + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`select_connected` + Calls: .. hlist:: @@ -4346,13 +4951,6 @@ Subroutines / functions -i : key is the ith determinant of the reference wf keys - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`n_int` - .. c:function:: connected_to_ref_by_single: @@ -4379,13 +4977,6 @@ Subroutines / functions -i : key is the ith determinant of the reference wf keys - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`n_int` - .. c:function:: copy_h_apply_buffer_to_wf: @@ -4405,8 +4996,6 @@ Subroutines / functions .. hlist:: :columns: 3 - * :c:data:`elec_alpha_num` - * :c:data:`elec_beta_num` * :c:data:`h_apply_buffer_allocated` * :c:data:`n_det` * :c:data:`n_int` @@ -4424,6 +5013,9 @@ Subroutines / functions * :c:func:`generate_all_alpha_beta_det_products` * :c:func:`make_s2_eigenfunction` + * :c:func:`replace_wf` + * :c:func:`run_cipsi` + * :c:func:`run_stochastic_cipsi` Calls: @@ -4489,6 +5081,18 @@ Subroutines / functions * :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:: @@ -4508,6 +5112,24 @@ Subroutines / functions + 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: @@ -4520,6 +5142,24 @@ Subroutines / functions + 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: @@ -4534,28 +5174,13 @@ Subroutines / functions Generates a wave function containing all possible products of $\alpha$ and $\beta$ determinants - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`n_det` - * :c:data:`n_int` - * :c:data:`n_states` - * :c:data:`psi_bilinear_matrix` - * :c:data:`psi_coef` - * :c:data:`psi_det` - * :c:data:`psi_det_alpha_unique` - * :c:data:`psi_det_beta_unique` - * :c:data:`psi_det_sorted` - * :c:data:`psi_det_sorted_bit` - Calls: .. hlist:: :columns: 3 * :c:func:`generate_all_alpha_beta_det_products` + * :c:func:`update_wf_of_psi_bilinear_matrix` Touches: @@ -4563,10 +5188,14 @@ Subroutines / functions :columns: 3 * :c:data:`n_det` + * :c:data:`psi_det_alpha_unique` + * :c:data:`psi_det_beta_unique` * :c:data:`c0_weight` * :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` * :c:data:`psi_det_size` * :c:data:`psi_det_sorted_bit` @@ -4594,6 +5223,7 @@ Subroutines / functions * :c:func:`diag_h_mat_elem_fock` * :c:func:`example_determinants` + * :c:func:`pt2_moller_plesset` .. c:function:: decode_exc_spin: @@ -4617,7 +5247,10 @@ Subroutines / functions .. hlist:: :columns: 3 + * :c:data:`multi_s_dipole_moment` * :c:data:`one_e_dm_mo_alpha` + * :c:data:`one_e_tr_dm_mo` + * :c:data:`one_e_tr_dm_mo_alpha` .. c:function:: det_inf: @@ -4694,8 +5327,6 @@ Subroutines / functions .. hlist:: :columns: 3 - * :c:data:`elec_alpha_num` - * :c:data:`elec_beta_num` * :c:data:`elec_num` * :c:data:`ref_bitmask` * :c:data:`ref_bitmask_energy` @@ -4759,8 +5390,6 @@ Subroutines / functions .. hlist:: :columns: 3 - * :c:data:`elec_alpha_num` - * :c:data:`elec_beta_num` * :c:data:`mo_one_e_integrals` Calls: @@ -4801,8 +5430,6 @@ Subroutines / functions .. hlist:: :columns: 3 - * :c:data:`elec_alpha_num` - * :c:data:`elec_beta_num` * :c:data:`elec_num` * :c:data:`ref_bitmask` * :c:data:`ref_bitmask_energy` @@ -4839,7 +5466,6 @@ Subroutines / functions .. hlist:: :columns: 3 - * :c:data:`mo_num` * :c:data:`n_int` Called by: @@ -4848,7 +5474,10 @@ Subroutines / functions :columns: 3 * :c:func:`build_singly_excited_wavefunction` + * :c:func:`do_signed_mono_excitation` * :c:func:`example_determinants` + * :c:func:`get_excitation_general` + * :c:func:`get_phase_general` .. c:function:: example_determinants: @@ -4938,11 +5567,8 @@ Subroutines / functions .. hlist:: :columns: 3 - * :c:data:`elec_alpha_num` - * :c:data:`elec_beta_num` * :c:data:`h_apply_buffer_allocated` * :c:data:`n_det` - * :c:data:`n_int` * :c:data:`n_states` Called by: @@ -4952,6 +5578,9 @@ Subroutines / functions * :c:func:`generate_all_alpha_beta_det_products` * :c:func:`make_s2_eigenfunction` + * :c:func:`replace_wf` + * :c:func:`zmq_pt2` + * :c:func:`zmq_selection` Calls: @@ -5009,13 +5638,6 @@ Subroutines / functions idx(0) is the number of determinants that interact with key1 - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`n_int` - Called by: .. hlist:: @@ -5064,6 +5686,8 @@ Subroutines / functions * :c:data:`h_apply_buffer_allocated` * :c:data:`n_det` + * :c:data:`psi_det_alpha_unique` + * :c:data:`psi_det_beta_unique` * :c:data:`n_int` * :c:data:`psi_coef` * :c:data:`psi_det` @@ -5076,6 +5700,7 @@ Subroutines / functions :columns: 3 * :c:func:`create_wf_of_psi_bilinear_matrix` + * :c:func:`generate_cas_space` Calls: @@ -5091,56 +5716,86 @@ Subroutines / functions :columns: 3 * :c:data:`n_det` + * :c:data:`psi_det_alpha_unique` + * :c:data:`psi_det_beta_unique` * :c:data:`c0_weight` * :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` * :c:data:`psi_det_size` * :c:data:`psi_det_sorted_bit` -.. c:function:: get_all_spin_doubles: +.. c:function:: generate_cas_space: - File : :file:`determinants/spindeterminants.irp.f` + File : :file:`determinants/generate_cas_space.irp.f` .. code:: fortran - subroutine get_all_spin_doubles(buffer, idx, spindet, Nint, size_buffer, doubles, n_doubles) + subroutine generate_cas_space - - Returns the indices of all the double excitations in the list of - unique $\alpha$ determinants. - + Generates the CAS space Needs: .. hlist:: :columns: 3 + * :c:data:`binom_int` + * :c:data:`elec_alpha_num` + * :c:data:`elec_beta_num` + * :c:data:`list_act` + * :c:data:`list_core_inact` + * :c:data:`n_act_orb` + * :c:data:`n_core_inact_orb` + * :c:data:`n_det` + * :c:data:`psi_det_alpha_unique` + * :c:data:`psi_det_beta_unique` * :c:data:`n_int` + * :c:data:`psi_det_alpha_unique` + * :c:data:`psi_det_beta_unique` 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:func:`bitstring_to_list` + * :c:func:`generate_all_alpha_beta_det_products` + * :c:func:`list_to_bitstring` + + Touches: + + .. hlist:: + :columns: 3 + + * :c:data:`n_det` + * :c:data:`psi_det_alpha_unique` + * :c:data:`psi_det_beta_unique` + * :c:data:`c0_weight` + * :c:data:`psi_det_alpha_unique` + * :c:data:`psi_det_beta_unique` + * :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` + * :c:data:`psi_det_size` + * :c:data:`psi_det_sorted_bit` -.. c:function:: get_all_spin_doubles_1: +.. c:function:: get_all_spin_doubles: File : :file:`determinants/spindeterminants.irp.f` .. code:: fortran - subroutine get_all_spin_doubles_1(buffer, idx, spindet, size_buffer, doubles, n_doubles) + subroutine get_all_spin_doubles(buffer, idx, spindet, Nint, size_buffer, doubles, n_doubles) @@ -5148,18 +5803,52 @@ Subroutines / functions unique $\alpha$ determinants. - Called by: + Needs: .. hlist:: :columns: 3 - * :c:func:`get_all_spin_doubles` + * :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_1316` + File : :file:`determinants/spindeterminants.irp.f_template_1365` .. code:: fortran @@ -5182,7 +5871,7 @@ Subroutines / functions .. c:function:: get_all_spin_doubles_3: - File : :file:`determinants/spindeterminants.irp.f_template_1316` + File : :file:`determinants/spindeterminants.irp.f_template_1365` .. code:: fortran @@ -5205,7 +5894,7 @@ Subroutines / functions .. c:function:: get_all_spin_doubles_4: - File : :file:`determinants/spindeterminants.irp.f_template_1316` + File : :file:`determinants/spindeterminants.irp.f_template_1365` .. code:: fortran @@ -5228,7 +5917,7 @@ Subroutines / functions .. c:function:: get_all_spin_doubles_n_int: - File : :file:`determinants/spindeterminants.irp.f_template_1316` + File : :file:`determinants/spindeterminants.irp.f_template_1365` .. code:: fortran @@ -5284,8 +5973,10 @@ Subroutines / functions * :c:data:`singles_alpha_csc` * :c:data:`singles_alpha_csc_idx` + * :c:data:`singles_alpha_csc_map` * :c:data:`singles_beta_csc` * :c:data:`singles_beta_csc_idx` + * :c:data:`singles_beta_csc_map` Calls: @@ -5322,14 +6013,16 @@ Subroutines / functions * :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:func:`h_u_0_nstates_openmp_work_1` * :c:func:`orb_range_2_rdm_openmp_work_1` * :c:func:`orb_range_2_rdm_state_av_openmp_work_1` + * :c:func:`orb_range_2_trans_rdm_openmp_work_1` .. c:function:: get_all_spin_singles_2: - File : :file:`determinants/spindeterminants.irp.f_template_1316` + File : :file:`determinants/spindeterminants.irp.f_template_1365` .. code:: fortran @@ -5349,14 +6042,16 @@ Subroutines / functions * :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:func:`h_u_0_nstates_openmp_work_2` * :c:func:`orb_range_2_rdm_openmp_work_2` * :c:func:`orb_range_2_rdm_state_av_openmp_work_2` + * :c:func:`orb_range_2_trans_rdm_openmp_work_2` .. c:function:: get_all_spin_singles_3: - File : :file:`determinants/spindeterminants.irp.f_template_1316` + File : :file:`determinants/spindeterminants.irp.f_template_1365` .. code:: fortran @@ -5376,14 +6071,16 @@ Subroutines / functions * :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:func:`h_u_0_nstates_openmp_work_3` * :c:func:`orb_range_2_rdm_openmp_work_3` * :c:func:`orb_range_2_rdm_state_av_openmp_work_3` + * :c:func:`orb_range_2_trans_rdm_openmp_work_3` .. c:function:: get_all_spin_singles_4: - File : :file:`determinants/spindeterminants.irp.f_template_1316` + File : :file:`determinants/spindeterminants.irp.f_template_1365` .. code:: fortran @@ -5403,8 +6100,10 @@ Subroutines / functions * :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:func:`h_u_0_nstates_openmp_work_4` * :c:func:`orb_range_2_rdm_openmp_work_4` * :c:func:`orb_range_2_rdm_state_av_openmp_work_4` + * :c:func:`orb_range_2_trans_rdm_openmp_work_4` .. c:function:: get_all_spin_singles_and_doubles: @@ -5461,14 +6160,16 @@ Subroutines / functions * :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:func:`h_u_0_nstates_openmp_work_1` * :c:func:`orb_range_2_rdm_openmp_work_1` * :c:func:`orb_range_2_rdm_state_av_openmp_work_1` + * :c:func:`orb_range_2_trans_rdm_openmp_work_1` .. c:function:: get_all_spin_singles_and_doubles_2: - File : :file:`determinants/spindeterminants.irp.f_template_1316` + File : :file:`determinants/spindeterminants.irp.f_template_1365` .. code:: fortran @@ -5490,14 +6191,16 @@ Subroutines / functions * :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:func:`h_u_0_nstates_openmp_work_2` * :c:func:`orb_range_2_rdm_openmp_work_2` * :c:func:`orb_range_2_rdm_state_av_openmp_work_2` + * :c:func:`orb_range_2_trans_rdm_openmp_work_2` .. c:function:: get_all_spin_singles_and_doubles_3: - File : :file:`determinants/spindeterminants.irp.f_template_1316` + File : :file:`determinants/spindeterminants.irp.f_template_1365` .. code:: fortran @@ -5519,14 +6222,16 @@ Subroutines / functions * :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:func:`h_u_0_nstates_openmp_work_3` * :c:func:`orb_range_2_rdm_openmp_work_3` * :c:func:`orb_range_2_rdm_state_av_openmp_work_3` + * :c:func:`orb_range_2_trans_rdm_openmp_work_3` .. c:function:: get_all_spin_singles_and_doubles_4: - File : :file:`determinants/spindeterminants.irp.f_template_1316` + File : :file:`determinants/spindeterminants.irp.f_template_1365` .. code:: fortran @@ -5548,14 +6253,16 @@ Subroutines / functions * :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:func:`h_u_0_nstates_openmp_work_4` * :c:func:`orb_range_2_rdm_openmp_work_4` * :c:func:`orb_range_2_rdm_state_av_openmp_work_4` + * :c:func:`orb_range_2_trans_rdm_openmp_work_4` .. c:function:: get_all_spin_singles_and_doubles_n_int: - File : :file:`determinants/spindeterminants.irp.f_template_1316` + File : :file:`determinants/spindeterminants.irp.f_template_1365` .. code:: fortran @@ -5584,14 +6291,16 @@ Subroutines / functions * :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:func:`h_u_0_nstates_openmp_work_n_int` * :c:func:`orb_range_2_rdm_openmp_work_n_int` * :c:func:`orb_range_2_rdm_state_av_openmp_work_n_int` + * :c:func:`orb_range_2_trans_rdm_openmp_work_n_int` .. c:function:: get_all_spin_singles_n_int: - File : :file:`determinants/spindeterminants.irp.f_template_1316` + File : :file:`determinants/spindeterminants.irp.f_template_1365` .. code:: fortran @@ -5618,8 +6327,10 @@ Subroutines / functions * :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:func:`h_u_0_nstates_openmp_work_n_int` * :c:func:`orb_range_2_rdm_openmp_work_n_int` * :c:func:`orb_range_2_rdm_state_av_openmp_work_n_int` + * :c:func:`orb_range_2_trans_rdm_openmp_work_n_int` .. c:function:: get_double_excitation: @@ -5648,6 +6359,7 @@ Subroutines / functions * :c:func:`i_h_j_verbose` * :c:func:`orb_range_off_diag_double_to_2_rdm_ab_dm_buffer` * :c:func:`orb_range_off_diag_double_to_all_states_ab_dm_buffer` + * :c:func:`orb_range_off_diag_double_to_all_states_ab_trans_rdm_buffer` .. c:function:: get_double_excitation_spin: @@ -5673,7 +6385,9 @@ Subroutines / functions * :c:func:`orb_range_off_diag_double_to_2_rdm_aa_dm_buffer` * :c:func:`orb_range_off_diag_double_to_2_rdm_bb_dm_buffer` * :c:func:`orb_range_off_diag_double_to_all_states_aa_dm_buffer` + * :c:func:`orb_range_off_diag_double_to_all_states_aa_trans_rdm_buffer` * :c:func:`orb_range_off_diag_double_to_all_states_bb_dm_buffer` + * :c:func:`orb_range_off_diag_double_to_all_states_trans_rdm_bb_buffer` .. c:function:: get_excitation: @@ -5695,6 +6409,7 @@ Subroutines / functions * :c:func:`example_determinants` * :c:func:`get_phase` + * :c:func:`pt2_moller_plesset` Calls: @@ -5726,6 +6441,9 @@ Subroutines / functions * :c:func:`connected_to_hf` * :c:func:`diag_h_mat_elem_fock` * :c:func:`example_determinants` + * :c:data:`exc_degree_per_selectors` + * :c:func:`fill_buffer_double` + * :c:func:`fill_buffer_single` * :c:func:`get_excitation` * :c:func:`get_s2` * :c:func:`i_h_j` @@ -5734,7 +6452,9 @@ Subroutines / functions * :c:func:`i_h_j_two_e` * :c:func:`i_h_j_verbose` * :c:data:`max_degree_exc` + * :c:data:`psi_configuration_to_psi_det` * :c:data:`psi_non_cas` + * :c:func:`pt2_qdpt` .. c:function:: get_excitation_degree_spin: @@ -5754,8 +6474,14 @@ Subroutines / functions .. hlist:: :columns: 3 + * :c:func:`fill_buffer_double` + * :c:func:`fill_buffer_single` * :c:func:`get_excitation_spin` + * :c:data:`multi_s_dipole_moment` * :c:data:`one_e_dm_mo_alpha` + * :c:data:`one_e_tr_dm_mo` + * :c:data:`one_e_tr_dm_mo_alpha` + * :c:func:`select_singles_and_doubles` .. c:function:: get_excitation_degree_vector: @@ -5848,6 +6574,36 @@ Subroutines / functions * :c:func:`debug_det` +.. c:function:: get_excitation_general: + + + File : :file:`determinants/slater_rules_general.irp.f` + + .. code:: fortran + + subroutine get_excitation_general(key_i,key_j, Nint,degree_array,holes_array, particles_array,phase) + + + returns the array, for each spin, of holes/particles between key_i and key_j + + with the following convention: a^+_{particle} a_{hole}|key_i> = |key_j> + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_int` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`do_single_excitation` + * :c:func:`get_single_excitation` + + .. c:function:: get_excitation_spin: @@ -5870,6 +6626,28 @@ Subroutines / functions * :c:func:`get_single_excitation_spin` +.. c:function:: get_holes_general: + + + File : :file:`determinants/slater_rules_general.irp.f` + + .. code:: fortran + + subroutine get_holes_general(key_i, key_j,Nint, holes_array) + + + returns the array, per spin, of holes between key_i and key_j + + with the following convention: a_{hole}|key_i> --> |key_j> + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_int` + + .. c:function:: get_index_in_psi_det_alpha_unique: @@ -5921,6 +6699,7 @@ Subroutines / functions Returns the index of the determinant in the ``psi_det_sorted_bit`` array + using a binary search Needs: @@ -5951,7 +6730,6 @@ Subroutines / functions * :c:data:`mo_num` * :c:data:`n_det` * :c:data:`n_int` - * :c:data:`n_states` * :c:data:`psi_coef` * :c:data:`psi_det` @@ -5963,6 +6741,35 @@ Subroutines / functions * :c:func:`bitstring_to_list_ab` +.. c:function:: get_particles_general: + + + File : :file:`determinants/slater_rules_general.irp.f` + + .. code:: fortran + + subroutine get_particles_general(key_i, key_j,Nint,particles_array) + + + returns the array, per spin, of particles between key_i and key_j + + with the following convention: a^dagger_{particle}|key_i> --> |key_j> + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_int` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`debug_det` + + .. c:function:: get_phase: @@ -5990,6 +6797,33 @@ Subroutines / functions * :c:func:`get_excitation` +.. c:function:: get_phase_general: + + + File : :file:`determinants/slater_rules_general.irp.f` + + .. code:: fortran + + subroutine get_phase_general(key_i,Nint,degree, holes_array, particles_array,phase) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_int` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`do_single_excitation` + * :c:func:`get_single_excitation` + + .. c:function:: get_phasemask_bit: @@ -6062,7 +6896,10 @@ Subroutines / functions * :c:func:`connected_to_hf` * :c:func:`diag_h_mat_elem_fock` + * :c:func:`do_signed_mono_excitation` * :c:func:`get_excitation` + * :c:func:`get_excitation_general` + * :c:func:`get_phase_general` * :c:func:`i_h_j` * :c:func:`i_h_j_one_e` * :c:func:`i_h_j_s2` @@ -6072,8 +6909,11 @@ Subroutines / functions * :c:func:`orb_range_off_diag_single_to_2_rdm_ab_dm_buffer` * :c:func:`orb_range_off_diag_single_to_2_rdm_bb_dm_buffer` * :c:func:`orb_range_off_diag_single_to_all_states_aa_dm_buffer` + * :c:func:`orb_range_off_diag_single_to_all_states_aa_trans_rdm_buffer` * :c:func:`orb_range_off_diag_single_to_all_states_ab_dm_buffer` + * :c:func:`orb_range_off_diag_single_to_all_states_ab_trans_rdm_buffer` * :c:func:`orb_range_off_diag_single_to_all_states_bb_dm_buffer` + * :c:func:`orb_range_off_diag_single_to_all_states_bb_trans_rdm_buffer` .. c:function:: get_single_excitation_from_fock: @@ -6137,7 +6977,10 @@ Subroutines / functions * :c:func:`i_h_j_mono_spin_one_e` * :c:func:`i_h_j_single_spin` * :c:func:`i_wee_j_single` + * :c:data:`multi_s_dipole_moment` * :c:data:`one_e_dm_mo_alpha` + * :c:data:`one_e_tr_dm_mo` + * :c:data:`one_e_tr_dm_mo_alpha` .. c:function:: get_uj_s2_ui: @@ -6187,6 +7030,18 @@ Subroutines / functions * :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:: @@ -6214,23 +7069,30 @@ Subroutines / functions * :c:data:`big_array_coulomb_integrals` * :c:data:`big_array_coulomb_integrals` - * :c:data:`elec_alpha_num` - * :c:data:`elec_beta_num` * :c:data:`mo_integrals_map` * :c:data:`mo_two_e_integrals_in_map` - * :c:data:`n_int` Called by: .. hlist:: :columns: 3 + * :c:func:`calc_hess_elem` + * :c:data:`coef_hf_selector` * :c:func:`connected_to_hf` * :c:func:`example_determinants` + * :c:func:`get_d0` + * :c:func:`get_d0_reference` + * :c:func:`get_d1` + * :c:func:`get_d1_reference` + * :c:func:`get_m0` + * :c:func:`get_m1` * :c:data:`h_matrix_all_dets` * :c:data:`h_matrix_cas` + * :c:data:`h_matrix_diag_all_dets` * :c:func:`i_h_psi` * :c:func:`i_h_psi_minilist` + * :c:func:`pt2_qdpt` * :c:func:`routine_example_psi_det` Calls: @@ -6283,6 +7145,11 @@ Subroutines / functions * :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:`h_u_0_nstates_openmp_work_1` + * :c:func:`h_u_0_nstates_openmp_work_2` + * :c:func:`h_u_0_nstates_openmp_work_3` + * :c:func:`h_u_0_nstates_openmp_work_4` + * :c:func:`h_u_0_nstates_openmp_work_n_int` Calls: @@ -6329,6 +7196,11 @@ Subroutines / functions * :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:`h_u_0_nstates_openmp_work_1` + * :c:func:`h_u_0_nstates_openmp_work_2` + * :c:func:`h_u_0_nstates_openmp_work_3` + * :c:func:`h_u_0_nstates_openmp_work_4` + * :c:func:`h_u_0_nstates_openmp_work_n_int` Calls: @@ -6415,11 +7287,8 @@ Subroutines / functions * :c:data:`big_array_coulomb_integrals` * :c:data:`big_array_coulomb_integrals` - * :c:data:`elec_alpha_num` - * :c:data:`elec_beta_num` * :c:data:`mo_integrals_map` * :c:data:`mo_two_e_integrals_in_map` - * :c:data:`n_int` Calls: @@ -6464,6 +7333,11 @@ Subroutines / functions * :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_u_0_nstates_openmp_work_1` + * :c:func:`h_u_0_nstates_openmp_work_2` + * :c:func:`h_u_0_nstates_openmp_work_3` + * :c:func:`h_u_0_nstates_openmp_work_4` + * :c:func:`h_u_0_nstates_openmp_work_n_int` Calls: @@ -6493,13 +7367,17 @@ Subroutines / functions * :c:data:`big_array_coulomb_integrals` * :c:data:`big_array_coulomb_integrals` - * :c:data:`elec_alpha_num` - * :c:data:`elec_beta_num` * :c:data:`mo_integrals_map` * :c:data:`mo_two_e_integrals_in_map` - * :c:data:`n_int` * :c:data:`ref_bitmask_energy` + Called by: + + .. hlist:: + :columns: 3 + + * :c:data:`psi_energy_two_e_trans` + Calls: .. hlist:: @@ -6534,7 +7412,6 @@ Subroutines / functions * :c:data:`mo_integrals_map` * :c:data:`mo_one_e_integrals` * :c:data:`mo_two_e_integrals_in_map` - * :c:data:`n_int` Calls: @@ -6564,12 +7441,16 @@ Subroutines / functions The i_H_psi_minilist is much faster but requires to build the minilists. - Needs: + Called by: .. hlist:: :columns: 3 - * :c:data:`n_int` + * :c:func:`calc_grad_elem` + * :c:func:`calc_hess_elem` + * :c:func:`pt2_epstein_nesbet_2x2` + * :c:func:`pt2_epstein_nesbet_2x2_no_ci_diag` + * :c:func:`remove_small_contributions` Calls: @@ -6595,12 +7476,15 @@ Subroutines / functions 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. - Needs: + Called by: .. hlist:: :columns: 3 - * :c:data:`n_int` + * :c:func:`pt2_dummy` + * :c:func:`pt2_epstein_nesbet` + * :c:func:`pt2_moller_plesset` + * :c:func:`pt2_qdpt` Calls: @@ -6626,13 +7510,6 @@ Subroutines / functions 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. - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`n_int` - Calls: .. hlist:: @@ -6695,13 +7572,6 @@ Subroutines / functions Returns |true| if determinant ``key`` is connected to ``keys`` - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`n_int` - .. c:function:: is_connected_to_by_single: @@ -6715,13 +7585,6 @@ Subroutines / functions Returns |true| is ``key`` is connected to ``keys`` by a single excitation. - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`n_int` - .. c:function:: is_in_wavefunction: @@ -6757,14 +7620,14 @@ Subroutines / functions * :c:data:`n_int` -.. c:function:: make_s2_eigenfunction: +.. c:function:: print_dipole_moments: - File : :file:`determinants/occ_pattern.irp.f` + File : :file:`determinants/dipole_moments.irp.f` .. code:: fortran - subroutine make_s2_eigenfunction + subroutine print_dipole_moments @@ -6773,201 +7636,67 @@ Subroutines / functions .. hlist:: :columns: 3 - * :c:data:`elec_alpha_num` - * :c:data:`n_det` - * :c:data:`n_int` - * :c:data:`psi_occ_pattern` - * :c:data:`psi_coef` - * :c:data:`psi_det` - * :c:data:`psi_occ_pattern` - - 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:data:`n_states` + * :c:data:`z_dipole_moment` -.. c:function:: occ_pattern_of_det: +.. c:function:: read_dets: - File : :file:`determinants/occ_pattern.irp.f` + File : :file:`determinants/determinants.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: - + subroutine read_dets(det,Nint,Ndet) - File : :file:`determinants/connected_to_ref.irp.f` - .. code:: fortran + Reads the determinants from the |EZFIO| file - integer*8 function occ_pattern_search_key(det,Nint) + Called by: + .. hlist:: + :columns: 3 - Return an integer*8 corresponding to a determinant index for searching + * :c:data:`psi_det` - Needs: + Calls: .. hlist:: :columns: 3 - * :c:data:`elec_alpha_num` + * :c:func:`ezfio_get_determinants_bit_kind` + * :c:func:`ezfio_get_determinants_n_int` + * :c:func:`ezfio_get_determinants_psi_det` -.. c:function:: occ_pattern_to_dets: +.. c:function:: read_spindeterminants: - File : :file:`determinants/occ_pattern.irp.f` + File : :file:`determinants/spindeterminants.irp.f` .. code:: fortran - subroutine occ_pattern_to_dets(o,d,sze,n_alpha,Nint) + subroutine read_spindeterminants - Generate all possible determinants for a given occ_pattern - - Input : - o : occupation pattern : (doubly occupied, singly occupied) - sze : Number of produced determinants, computed by `occ_pattern_to_dets_size` - n_alpha : Number of $\alpha$ electrons - Nint : N_int - - Output: - d : determinants - Needs: .. hlist:: :columns: 3 - * :c:data:`binom_int` + * :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_det_alpha_unique` + * :c:data:`psi_det_beta_unique` - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`make_s2_eigenfunction` - - -.. 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: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:: read_spindeterminants: - - - File : :file:`determinants/spindeterminants.irp.f` - - .. code:: fortran - - subroutine read_spindeterminants - - - - Needs: - - .. 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_det_alpha_unique` - * :c:data:`psi_det_beta_unique` - - Calls: + Calls: .. hlist:: :columns: 3 @@ -7048,6 +7777,54 @@ Subroutines / functions * :c:data:`psi_det_sorted_bit` +.. c:function:: replace_wf: + + + File : :file:`determinants/h_apply.irp.f` + + .. code:: fortran + + subroutine replace_wf(N_det_new, LDA, psi_coef_new, psi_det_new) + + + Replaces the wave function. + After calling this subroutine, N_det, psi_det and psi_coef need to be touched + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`h_apply_buffer_allocated` + * :c:data:`n_det` + * :c:data:`n_int` + * :c:data:`n_states` + * :c:data:`nproc` + * :c:data:`psi_coef` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`abort` + * :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:: resize_h_apply_buffer: @@ -7066,8 +7843,6 @@ Subroutines / functions .. hlist:: :columns: 3 - * :c:data:`elec_alpha_num` - * :c:data:`elec_beta_num` * :c:data:`h_apply_buffer_allocated` * :c:data:`n_det` * :c:data:`n_int` @@ -7080,6 +7855,14 @@ Subroutines / functions :columns: 3 * :c:func:`fill_h_apply_buffer_no_selection` + * :c:func:`fill_h_apply_buffer_selection` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`abort` .. c:function:: routine_example_psi_det: @@ -7165,7 +7948,6 @@ Subroutines / functions .. hlist:: :columns: 3 - * :c:data:`n_int` * :c:data:`ref_bitmask_energy` Called by: @@ -7227,6 +8009,88 @@ Subroutines / functions * :c:data:`mo_occ` +.. c:function:: save_natural_mos_canon_label: + + + File : :file:`determinants/density_matrix.irp.f` + + .. code:: fortran + + subroutine save_natural_mos_canon_label + + + Save natural orbitals, obtained by diagonalization of the one-body density matrix in + the |MO| basis + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`mo_coef` + * :c:data:`mo_num` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`nullify_small_elements` + * :c:func:`orthonormalize_mos` + * :c:func:`save_mos` + * :c:func:`set_natural_mos_canon_label` + + Touches: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_coef` + * :c:data:`mo_occ` + + +.. c:function:: save_natural_mos_no_ov_rot: + + + File : :file:`determinants/density_matrix.irp.f` + + .. code:: fortran + + subroutine save_natural_mos_no_ov_rot + + + Save natural orbitals, obtained by diagonalization of the one-body density matrix in + the |MO| basis + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`mo_coef` + * :c:data:`mo_num` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`nullify_small_elements` + * :c:func:`orthonormalize_mos` + * :c:func:`save_mos` + * :c:func:`set_natorb_no_ov_rot` + + Touches: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_coef` + * :c:data:`mo_occ` + + .. c:function:: save_ref_determinant: @@ -7277,6 +8141,14 @@ Subroutines / functions * :c:data:`psi_det_sorted` * :c:data:`read_wf` + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`run_cipsi` + * :c:func:`run_stochastic_cipsi` + Calls: .. hlist:: @@ -7336,6 +8208,46 @@ Subroutines / functions * :c:func:`write_int` +.. c:function:: save_wavefunction_general_unormalized: + + + File : :file:`determinants/determinants.irp.f` + + .. code:: fortran + + subroutine save_wavefunction_general_unormalized(ndet,nstates,psidet,dim_psicoef,psicoef) + + + Save the wave function into the |EZFIO| file + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_label` + * :c:data:`mpi_master` + * :c:data:`n_det_qp_edit` + * :c:data:`n_int` + + 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_det_qp_edit` + * :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_coef_qp_edit` + * :c:func:`ezfio_set_determinants_psi_det` + * :c:func:`ezfio_set_determinants_psi_det_qp_edit` + * :c:func:`write_int` + + .. c:function:: save_wavefunction_specified: @@ -7437,6 +8349,14 @@ Subroutines / functions * :c:data:`psi_coef` * :c:data:`psi_det` + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`run_orb_opt_trust_v2` + * :c:func:`update_parameters` + Calls: .. hlist:: @@ -7445,6 +8365,54 @@ Subroutines / functions * :c:func:`save_wavefunction_general` +.. c:function:: set_natorb_no_ov_rot: + + + File : :file:`determinants/density_matrix.irp.f` + + .. code:: fortran + + subroutine set_natorb_no_ov_rot + + + Set natural orbitals, obtained by diagonalization of the one-body density matrix + in the |MO| basis + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`list_core_inact_act` + * :c:data:`list_virt` + * :c:data:`mo_num` + * :c:data:`mo_occ` + * :c:data:`n_core_inact_act_orb` + * :c:data:`n_virt_orb` + * :c:data:`one_e_dm_mo` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`save_natural_mos_no_ov_rot` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`mo_as_svd_vectors_of_mo_matrix_eig` + + Touches: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_occ` + + .. c:function:: set_natural_mos: @@ -7493,6 +8461,54 @@ Subroutines / functions * :c:data:`mo_occ` +.. c:function:: set_natural_mos_canon_label: + + + File : :file:`determinants/density_matrix.irp.f` + + .. code:: fortran + + subroutine set_natural_mos_canon_label + + + Set natural orbitals, obtained by diagonalization of the one-body density matrix + in the |MO| basis + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`list_core_inact_act` + * :c:data:`list_virt` + * :c:data:`mo_num` + * :c:data:`mo_occ` + * :c:data:`n_core_inact_act_orb` + * :c:data:`n_virt_orb` + * :c:data:`one_e_dm_mo` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`save_natural_mos_canon_label` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`mo_as_svd_vectors_of_mo_matrix_eig` + + Touches: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_occ` + + .. c:function:: single_excitation_wee: @@ -7710,6 +8726,57 @@ Subroutines / functions * :c:func:`s2_u_0_nstates` +.. c:function:: update_wf_of_psi_bilinear_matrix: + + + File : :file:`determinants/spindeterminants.irp.f` + + .. code:: fortran + + subroutine update_wf_of_psi_bilinear_matrix(truncate) + + + Updates a wave function when psi_bilinear_matrix was modified + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_det` + * :c:data:`psi_det_alpha_unique` + * :c:data:`psi_det_beta_unique` + * :c:data:`n_int` + * :c:data:`n_states` + * :c:data:`psi_bilinear_matrix` + * :c:data:`psi_coef` + * :c:data:`psi_det` + * :c:data:`psi_det_alpha_unique` + * :c:data:`psi_det_beta_unique` + * :c:data:`psi_det_sorted` + * :c:data:`psi_det_sorted_bit` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`create_wf_of_psi_bilinear_matrix` + + Touches: + + .. hlist:: + :columns: 3 + + * :c:data:`n_det` + * :c:data:`psi_det_alpha_unique` + * :c:data:`psi_det_beta_unique` + * :c:data:`psi_coef` + * :c:data:`psi_det` + * :c:data:`psi_det_alpha_unique` + * :c:data:`psi_det_beta_unique` + + .. c:function:: wf_of_psi_bilinear_matrix: diff --git a/docs/source/modules/dft_keywords.rst b/docs/source/modules/dft_keywords.rst index 95e6b9cca..8a2ea0c1d 100644 --- a/docs/source/modules/dft_keywords.rst +++ b/docs/source/modules/dft_keywords.rst @@ -47,13 +47,13 @@ EZFIO parameters name of the exchange functional - Default: short_range_LDA + Default: sr_pbe .. option:: correlation_functional name of the correlation functional - Default: short_range_LDA + Default: sr_pbe .. option:: HF_exchange @@ -61,6 +61,12 @@ EZFIO parameters Default: 0. +.. option:: mu_dft_type + + type of mu(r) for rsdft [ cst ] + + Default: cst + Providers --------- diff --git a/docs/source/modules/dft_one_e.rst b/docs/source/modules/dft_one_e.rst index a30bcd691..75b8da879 100644 --- a/docs/source/modules/dft_one_e.rst +++ b/docs/source/modules/dft_one_e.rst @@ -39,6 +39,272 @@ In the core modules of the |QP|, two functionals are implemented: Providers --------- +.. c:var:: ao_effective_one_e_potential + + + File : :file:`dft_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) + + + 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` + + on the |MO| basis + + Taking the expectation value does not provide any energy, but + + ao_effective_one_e_potential(i,j) is the potential coupling DFT and WFT parts + + and it is used in any RS-DFT based calculations + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`effective_one_e_potential` + * :c:data:`mo_num` + * :c:data:`n_states` + * :c:data:`s_mo_coef` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_effective_one_e_potential_sa` + + +.. c:var:: ao_effective_one_e_potential_sa + + + File : :file:`dft_one_e/effective_pot.irp.f` + + .. code:: fortran + + double precision, allocatable :: ao_effective_one_e_potential_sa (ao_num,ao_num) + double precision, allocatable :: ao_effective_one_e_potential_without_kin_sa (ao_num,ao_num) + + + State-averaged potential in AO basis + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_effective_one_e_potential` + * :c:data:`ao_num` + * :c:data:`n_states` + * :c:data:`state_average_weight` + + + +.. c:var:: ao_effective_one_e_potential_without_kin + + + File : :file:`dft_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) + + + 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` + + on the |MO| basis + + Taking the expectation value does not provide any energy, but + + ao_effective_one_e_potential(i,j) is the potential coupling DFT and WFT parts + + and it is used in any RS-DFT based calculations + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`effective_one_e_potential` + * :c:data:`mo_num` + * :c:data:`n_states` + * :c:data:`s_mo_coef` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_effective_one_e_potential_sa` + + +.. c:var:: ao_effective_one_e_potential_without_kin_sa + + + File : :file:`dft_one_e/effective_pot.irp.f` + + .. code:: fortran + + double precision, allocatable :: ao_effective_one_e_potential_sa (ao_num,ao_num) + double precision, allocatable :: ao_effective_one_e_potential_without_kin_sa (ao_num,ao_num) + + + State-averaged potential in AO basis + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_effective_one_e_potential` + * :c:data:`ao_num` + * :c:data:`n_states` + * :c:data:`state_average_weight` + + + +.. c:var:: effective_one_e_potential + + + File : :file:`dft_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 parts + + and it is used in any RS-DFT based calculations + + 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_c_alpha_mo` + * :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:data:`effective_one_e_potential_sa` + + +.. c:var:: effective_one_e_potential_sa + + + File : :file:`dft_one_e/effective_pot.irp.f` + + .. code:: fortran + + double precision, allocatable :: effective_one_e_potential_sa (mo_num,mo_num) + double precision, allocatable :: effective_one_e_potential_without_kin_sa (mo_num,mo_num) + + + State-averaged potential in MO basis + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`effective_one_e_potential` + * :c:data:`mo_num` + * :c:data:`n_states` + * :c:data:`state_average_weight` + + + +.. c:var:: effective_one_e_potential_without_kin + + + File : :file:`dft_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 parts + + and it is used in any RS-DFT based calculations + + 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_c_alpha_mo` + * :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:data:`effective_one_e_potential_sa` + + +.. c:var:: effective_one_e_potential_without_kin_sa + + + File : :file:`dft_one_e/effective_pot.irp.f` + + .. code:: fortran + + double precision, allocatable :: effective_one_e_potential_sa (mo_num,mo_num) + double precision, allocatable :: effective_one_e_potential_without_kin_sa (mo_num,mo_num) + + + State-averaged potential in MO basis + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`effective_one_e_potential` + * :c:data:`mo_num` + * :c:data:`n_states` + * :c:data:`state_average_weight` + + + .. c:var:: energy_c @@ -59,8 +325,8 @@ Providers * :c:data:`correlation_functional` * :c:data:`energy_c_lda` * :c:data:`energy_c_none` - * :c:data:`energy_c_pbe` * :c:data:`energy_c_sr_lda` + * :c:data:`energy_x_pbe` * :c:data:`energy_x_sr_pbe` * :c:data:`n_states` @@ -95,6 +361,7 @@ Providers * :c:data:`energy_x_sr_lda` * :c:data:`energy_x_sr_pbe` * :c:data:`exchange_functional` + * :c:data:`hf_exchange` * :c:data:`n_states` Needed by: @@ -105,6 +372,158 @@ Providers * :c:data:`e_exchange_dft` +.. c:var:: mu_erf_dft + + + File : :file:`dft_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 module "hamiltonian" + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mu_erf` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`mu_of_r_dft` + + +.. c:var:: mu_grad_rho + + + File : :file:`dft_one_e/mu_erf_dft.irp.f` + + .. code:: fortran + + double precision, allocatable :: mu_grad_rho (n_points_final_grid) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`final_grid_points` + * :c:data:`mu_erf` + * :c:data:`n_points_final_grid` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`mu_of_r_dft` + + +.. c:var:: mu_of_r_dft + + + File : :file:`dft_one_e/mu_erf_dft.irp.f` + + .. code:: fortran + + double precision, allocatable :: mu_of_r_dft (n_points_final_grid) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mu_dft_type` + * :c:data:`mu_erf_dft` + * :c:data:`mu_grad_rho` + * :c:data:`mu_of_r_hf` + * :c:data:`mu_rsc_of_r` + * :c:data:`n_points_final_grid` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`aos_sr_vc_alpha_lda_w` + * :c:data:`aos_sr_vxc_alpha_lda_w` + * :c:data:`aos_vc_alpha_sr_pbe_w` + * :c:data:`aos_vxc_alpha_sr_pbe_w` + * :c:data:`energy_c_sr_lda` + * :c:data:`energy_x_sr_lda` + * :c:data:`energy_x_sr_pbe` + * :c:data:`mu_of_r_dft_average` + + +.. c:var:: mu_of_r_dft_average + + + File : :file:`dft_one_e/mu_erf_dft.irp.f` + + .. code:: fortran + + double precision :: mu_of_r_dft_average + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`elec_alpha_num` + * :c:data:`elec_beta_num` + * :c:data:`final_grid_points` + * :c:data:`mu_of_r_dft` + * :c:data:`n_points_final_grid` + * :c:data:`n_states` + * :c:data:`one_e_dm_alpha_ao_for_dft` + + + +.. c:var:: mu_rsc_of_r + + + File : :file:`dft_one_e/mu_erf_dft.irp.f` + + .. code:: fortran + + double precision, allocatable :: mu_rsc_of_r (n_points_final_grid) + + + + 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:`mu_of_r_dft` + + .. c:var:: potential_c_alpha_ao @@ -265,6 +684,7 @@ Providers * :c:data:`ao_num` * :c:data:`exchange_functional` + * :c:data:`hf_exchange` * :c:data:`n_states` * :c:data:`potential_x_alpha_ao_lda` * :c:data:`potential_x_alpha_ao_none` @@ -335,6 +755,7 @@ Providers * :c:data:`ao_num` * :c:data:`exchange_functional` + * :c:data:`hf_exchange` * :c:data:`n_states` * :c:data:`potential_x_alpha_ao_lda` * :c:data:`potential_x_alpha_ao_none` @@ -521,6 +942,254 @@ Providers * :c:data:`trace_v_xc_new` +.. c:var:: psi_dft_energy_h_core + + + File : :file:`dft_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_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_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:: regular_range_hartree + + + File : :file:`dft_one_e/sr_coulomb.irp.f` + + .. code:: fortran + + double precision, allocatable :: regular_range_hartree_operator (mo_num,mo_num,N_states) + double precision, allocatable :: regular_range_hartree (N_states) + + + regular_range_Hartree_operator(i,j) = :math:`\int dr i(r)j(r) \int r' \rho(r') W_{ee}^{sr}` + + regular_range_Hartree = :math:`1/2 \sum_{i,j} \rho_{ij} \mathtt{regular_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:`cholesky_mo_num` + * :c:data:`cholesky_mo_transp` + * :c:data:`do_mo_cholesky` + * :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_states` + * :c:data:`one_e_dm_average_mo_for_dft` + * :c:data:`one_e_dm_mo_for_dft` + + + +.. c:var:: regular_range_hartree_operator + + + File : :file:`dft_one_e/sr_coulomb.irp.f` + + .. code:: fortran + + double precision, allocatable :: regular_range_hartree_operator (mo_num,mo_num,N_states) + double precision, allocatable :: regular_range_hartree (N_states) + + + regular_range_Hartree_operator(i,j) = :math:`\int dr i(r)j(r) \int r' \rho(r') W_{ee}^{sr}` + + regular_range_Hartree = :math:`1/2 \sum_{i,j} \rho_{ij} \mathtt{regular_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:`cholesky_mo_num` + * :c:data:`cholesky_mo_transp` + * :c:data:`do_mo_cholesky` + * :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_states` + * :c:data:`one_e_dm_average_mo_for_dft` + * :c:data:`one_e_dm_mo_for_dft` + + + +.. c:var:: short_range_hartree + + + File : :file:`dft_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:`cholesky_mo_num` + * :c:data:`cholesky_mo_transp` + * :c:data:`do_mo_cholesky` + * :c:data:`mo_integrals_cache_min` + * :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:`trace_v_xc` + + +.. c:var:: short_range_hartree_operator + + + File : :file:`dft_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:`cholesky_mo_num` + * :c:data:`cholesky_mo_transp` + * :c:data:`do_mo_cholesky` + * :c:data:`mo_integrals_cache_min` + * :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:`trace_v_xc` + + .. c:var:: trace_v_h diff --git a/docs/source/modules/dft_utils_in_r.rst b/docs/source/modules/dft_utils_in_r.rst index a6630626c..153353bd9 100644 --- a/docs/source/modules/dft_utils_in_r.rst +++ b/docs/source/modules/dft_utils_in_r.rst @@ -24,322 +24,215 @@ The main providers for this module are: Providers --------- -.. c:var:: aos_grad_in_r_array +.. c:var:: alpha_dens_kin_in_r - File : :file:`dft_utils_in_r/ao_in_r.irp.f` + File : :file:`dft_utils_in_r/mo_in_r.irp.f` .. code:: fortran - double precision, allocatable :: aos_grad_in_r_array (ao_num,n_points_final_grid,3) + double precision, allocatable :: alpha_dens_kin_in_r (n_points_final_grid) + double precision, allocatable :: beta_dens_kin_in_r (n_points_final_grid) - aos_grad_in_r_array(i,j,k) = value of the kth component of the gradient of ith ao on the jth 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:`elec_alpha_num` + * :c:data:`elec_beta_num` + * :c:data:`mos_grad_in_r_array_tranp` * :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_grad_in_r_array` -.. c:var:: aos_grad_in_r_array_transp +.. c:var:: ao_abs_int_grid - File : :file:`dft_utils_in_r/ao_in_r.irp.f` + File : :file:`dft_utils_in_r/ao_prod_mlti_pl.irp.f` .. code:: fortran - double precision, allocatable :: aos_grad_in_r_array_transp (n_points_final_grid,ao_num,3) + double precision, allocatable :: ao_abs_int_grid (ao_num) - 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 + ao_abs_int_grid(i) = \int dr |phi_i(r) | 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:`aos_in_r_array` * :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` -.. c:var:: aos_grad_in_r_array_transp_xyz +.. c:var:: ao_overlap_abs_grid - File : :file:`dft_utils_in_r/ao_in_r.irp.f` + File : :file:`dft_utils_in_r/ao_prod_mlti_pl.irp.f` .. code:: fortran - double precision, allocatable :: aos_grad_in_r_array_transp_xyz (3,ao_num,n_points_final_grid) + double precision, allocatable :: ao_overlap_abs_grid (ao_num,ao_num) - aos_grad_in_r_array_transp_xyz(k,i,j) = 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 + ao_overlap_abs_grid(j,i) = \int dr |phi_i(r) phi_j(r)| 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:`aos_in_r_array` * :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_sr_vxc_alpha_pbe_w` - * :c:data:`aos_vc_alpha_pbe_w` - * :c:data:`aos_vxc_alpha_pbe_w` + * :c:data:`ao_prod_center` + * :c:data:`ao_prod_sigma` -.. c:var:: aos_in_r_array +.. c:var:: ao_prod_abs_r - File : :file:`dft_utils_in_r/ao_in_r.irp.f` + File : :file:`dft_utils_in_r/ao_prod_mlti_pl.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) + double precision, allocatable :: ao_prod_abs_r (ao_num,ao_num) - aos_in_r_array(i,j) = value of the ith ao on the jth grid point + ao_prod_abs_r(i,j) = \int |phi_i(r) phi_j(r)| dsqrt((x - <|i|x|j|>)^2 + (y - <|i|y|j|>)^2 +(z - <|i|z|j|>)^2) / \int |phi_i(r) phi_j(r)| - 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:`ao_prod_center` + * :c:data:`aos_in_r_array` * :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_sr_vxc_alpha_lda_w` - * :c:data:`aos_sr_vxc_alpha_pbe_w` - * :c:data:`aos_vc_alpha_lda_w` - * :c:data:`aos_vc_alpha_pbe_w` - * :c:data:`aos_vxc_alpha_lda_w` - * :c:data:`aos_vxc_alpha_pbe_w` - * :c:data:`pot_grad_x_alpha_ao_pbe` - * :c:data:`pot_grad_xc_alpha_ao_pbe` - * :c:data:`pot_scal_x_alpha_ao_pbe` - * :c:data:`pot_scal_xc_alpha_ao_pbe` - * :c:data:`pot_sr_grad_x_alpha_ao_pbe` - * :c:data:`pot_sr_grad_xc_alpha_ao_pbe` - * :c:data:`pot_sr_scal_x_alpha_ao_pbe` - * :c:data:`pot_sr_scal_xc_alpha_ao_pbe` - * :c:data:`potential_c_alpha_ao_lda` - * :c:data:`potential_c_alpha_ao_sr_lda` - * :c:data:`potential_x_alpha_ao_lda` - * :c:data:`potential_x_alpha_ao_sr_lda` - * :c:data:`potential_xc_alpha_ao_lda` - * :c:data:`potential_xc_alpha_ao_sr_lda` + * :c:data:`ao_prod_sigma` -.. c:var:: aos_in_r_array_per_atom +.. c:var:: ao_prod_center - File : :file:`dft_utils_in_r/ao_in_r.irp.f` + File : :file:`dft_utils_in_r/ao_prod_mlti_pl.irp.f` .. code:: fortran - double precision, allocatable :: aos_in_r_array_per_atom (ao_num,n_pts_max_per_atom,nucl_num) - double precision, allocatable :: aos_in_r_array_per_atom_transp (n_pts_max_per_atom,ao_num,nucl_num) + double precision, allocatable :: ao_prod_center (3,ao_num,ao_num) - aos_in_r_array_per_atom(i,j,k) = value of the ith ao on the jth grid point attached on the kth atom + ao_prod_center(1:3,j,i) = \int dr |phi_i(r) phi_j(r)| x/y/z / \int |phi_i(r) phi_j(r)| + + if \int |phi_i(r) phi_j(r)| < 1.d-10 then ao_prod_center = 10000. 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_per_atom` - * :c:data:`n_pts_per_atom` - * :c:data:`nucl_aos_transposed` - * :c:data:`nucl_coord` - * :c:data:`nucl_n_aos` - * :c:data:`nucl_num` + * :c:data:`ao_overlap_abs_grid` + * :c:data:`aos_in_r_array` + * :c:data:`final_grid_points` + * :c:data:`n_points_final_grid` + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_prod_abs_r` + * :c:data:`ao_prod_dist_grid` -.. c:var:: aos_in_r_array_per_atom_transp +.. c:var:: ao_prod_dist_grid - File : :file:`dft_utils_in_r/ao_in_r.irp.f` + File : :file:`dft_utils_in_r/ao_prod_mlti_pl.irp.f` .. code:: fortran - double precision, allocatable :: aos_in_r_array_per_atom (ao_num,n_pts_max_per_atom,nucl_num) - double precision, allocatable :: aos_in_r_array_per_atom_transp (n_pts_max_per_atom,ao_num,nucl_num) + double precision, allocatable :: ao_prod_dist_grid (ao_num,ao_num,n_points_final_grid) - aos_in_r_array_per_atom(i,j,k) = value of the ith ao on the jth grid point attached on the kth atom + ao_prod_dist_grid(j,i,ipoint) = distance between the center of |phi_i(r) phi_j(r)| and the grid point r(ipoint) 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_per_atom` - * :c:data:`n_pts_per_atom` - * :c:data:`nucl_aos_transposed` - * :c:data:`nucl_coord` - * :c:data:`nucl_n_aos` - * :c:data:`nucl_num` + * :c:data:`ao_prod_center` + * :c:data:`final_grid_points` + * :c:data:`n_points_final_grid` -.. c:var:: aos_in_r_array_transp +.. c:var:: ao_prod_sigma - File : :file:`dft_utils_in_r/ao_in_r.irp.f` + File : :file:`dft_utils_in_r/ao_prod_mlti_pl.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) + double precision, allocatable :: ao_prod_sigma (ao_num,ao_num) - aos_in_r_array(i,j) = value of the ith ao on the jth grid point + Gaussian exponent reproducing the product |chi_i(r) chi_j(r)| - aos_in_r_array_transp(i,j) = value of the jth ao on the ith grid point + Therefore |chi_i(r) chi_j(r)| \approx e^{-ao_prod_sigma(j,i) (r - ao_prod_center(1:3,j,i))**2} 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:`ao_overlap_abs_grid` + * :c:data:`ao_prod_abs_r` - * :c:data:`aos_sr_vc_alpha_lda_w` - * :c:data:`aos_sr_vc_alpha_pbe_w` - * :c:data:`aos_sr_vxc_alpha_lda_w` - * :c:data:`aos_sr_vxc_alpha_pbe_w` - * :c:data:`aos_vc_alpha_lda_w` - * :c:data:`aos_vc_alpha_pbe_w` - * :c:data:`aos_vxc_alpha_lda_w` - * :c:data:`aos_vxc_alpha_pbe_w` - * :c:data:`pot_grad_x_alpha_ao_pbe` - * :c:data:`pot_grad_xc_alpha_ao_pbe` - * :c:data:`pot_scal_x_alpha_ao_pbe` - * :c:data:`pot_scal_xc_alpha_ao_pbe` - * :c:data:`pot_sr_grad_x_alpha_ao_pbe` - * :c:data:`pot_sr_grad_xc_alpha_ao_pbe` - * :c:data:`pot_sr_scal_x_alpha_ao_pbe` - * :c:data:`pot_sr_scal_xc_alpha_ao_pbe` - * :c:data:`potential_c_alpha_ao_lda` - * :c:data:`potential_c_alpha_ao_sr_lda` - * :c:data:`potential_x_alpha_ao_lda` - * :c:data:`potential_x_alpha_ao_sr_lda` - * :c:data:`potential_xc_alpha_ao_lda` - * :c:data:`potential_xc_alpha_ao_sr_lda` -.. c:var:: aos_lapl_in_r_array +.. c:var:: aos_grad_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) + double precision, allocatable :: aos_grad_in_r_array (ao_num,n_points_final_grid,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 + aos_grad_in_r_array(i,j,k) = value of the kth component of the gradient of ith ao on the jth grid point k = 1 : x, k= 2, y, k 3, z + Needs: @@ -363,25 +256,22 @@ Providers .. hlist:: :columns: 3 - * :c:data:`mos_lapl_in_r_array` + * :c:data:`aos_grad_in_r_array_transp` + * :c:data:`aos_grad_in_r_array_transp_3` + * :c:data:`aos_grad_in_r_array_transp_bis` + * :c:data:`mos_grad_in_r_array` -.. c:var:: aos_lapl_in_r_array_transp +.. c:var:: aos_grad_in_r_array_extra 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) + double precision, allocatable :: aos_grad_in_r_array_extra (ao_num,n_points_extra_final_grid,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: @@ -393,37 +283,28 @@ Providers * :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:`final_grid_points_extra` + * :c:data:`n_points_extra_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:: elec_alpha_num_grid_becke +.. c:var:: aos_grad_in_r_array_transp - File : :file:`dft_utils_in_r/dm_in_r.irp.f` + File : :file:`dft_utils_in_r/ao_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) - double precision, allocatable :: elec_beta_num_grid_becke (N_states) - double precision, allocatable :: elec_alpha_num_grid_becke (N_states) + double precision, allocatable :: aos_grad_in_r_array_transp (3,ao_num,n_points_final_grid) - 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 + aos_grad_in_r_array_transp(k,i,j) = 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: @@ -431,43 +312,32 @@ Providers :columns: 3 * :c:data:`ao_num` - * :c:data:`final_grid_points` + * :c:data:`aos_grad_in_r_array` * :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_sr_vxc_alpha_lda_w` - * :c:data:`aos_vc_alpha_lda_w` - * :c:data:`aos_vxc_alpha_lda_w` - * :c:data:`energy_c_lda` - * :c:data:`energy_c_sr_lda` - * :c:data:`energy_sr_x_lda` - * :c:data:`energy_x_lda` - * :c:data:`energy_x_sr_lda` + * :c:data:`aos_vc_alpha_pbe_w` + * :c:data:`aos_vc_alpha_sr_pbe_w` + * :c:data:`aos_vxc_alpha_pbe_w` + * :c:data:`aos_vxc_alpha_sr_pbe_w` -.. c:var:: elec_beta_num_grid_becke +.. c:var:: aos_grad_in_r_array_transp_3 - File : :file:`dft_utils_in_r/dm_in_r.irp.f` + File : :file:`dft_utils_in_r/ao_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) - double precision, allocatable :: elec_beta_num_grid_becke (N_states) - double precision, allocatable :: elec_alpha_num_grid_becke (N_states) + double precision, allocatable :: aos_grad_in_r_array_transp_3 (3,n_points_final_grid,ao_num) - 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 + Transposed gradients + Needs: @@ -475,42 +345,23 @@ Providers :columns: 3 * :c:data:`ao_num` - * :c:data:`final_grid_points` + * :c:data:`aos_grad_in_r_array` * :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_sr_vxc_alpha_lda_w` - * :c:data:`aos_vc_alpha_lda_w` - * :c:data:`aos_vxc_alpha_lda_w` - * :c:data:`energy_c_lda` - * :c:data:`energy_c_sr_lda` - * :c:data:`energy_sr_x_lda` - * :c:data:`energy_x_lda` - * :c:data:`energy_x_sr_lda` -.. c:var:: mos_grad_in_r_array +.. c:var:: aos_grad_in_r_array_transp_bis - File : :file:`dft_utils_in_r/mo_in_r.irp.f` + File : :file:`dft_utils_in_r/ao_in_r.irp.f` .. code:: fortran - double precision, allocatable :: mos_grad_in_r_array (mo_num,n_points_final_grid,3) + double precision, allocatable :: aos_grad_in_r_array_transp_bis (n_points_final_grid,ao_num,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 + Transposed gradients - k = 1 : x, k= 2, y, k 3, z Needs: @@ -519,81 +370,444 @@ Providers * :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 +.. c:var:: aos_in_r_array - File : :file:`dft_utils_in_r/mo_in_r.irp.f` + File : :file:`dft_utils_in_r/ao_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) + double precision, allocatable :: aos_in_r_array (ao_num,n_points_final_grid) - 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 + aos_in_r_array(i,j) = value of the ith ao on the jth 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:`mo_coef_transp` - * :c:data:`mo_num` * :c:data:`n_points_final_grid` + * :c:data:`nucl_aos_transposed` + * :c:data:`nucl_coord` + * :c:data:`nucl_n_aos` + * :c:data:`nucl_num` - - -.. 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: + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_abs_int_grid` + * :c:data:`ao_overlap_abs_grid` + * :c:data:`ao_prod_abs_r` + * :c:data:`ao_prod_center` + * :c:data:`aos_in_r_array_transp` + * :c:data:`aos_sr_vc_alpha_lda_w` + * :c:data:`aos_sr_vxc_alpha_lda_w` + * :c:data:`aos_vc_alpha_lda_w` + * :c:data:`aos_vc_alpha_pbe_w` + * :c:data:`aos_vc_alpha_sr_pbe_w` + * :c:data:`aos_vxc_alpha_lda_w` + * :c:data:`aos_vxc_alpha_pbe_w` + * :c:data:`aos_vxc_alpha_sr_pbe_w` + * :c:data:`f_hf_cholesky_sparse_bis` + * :c:data:`pot_scal_x_alpha_ao_pbe` + * :c:data:`pot_scal_x_alpha_ao_sr_pbe` + * :c:data:`pot_scal_xc_alpha_ao_pbe` + * :c:data:`pot_scal_xc_alpha_ao_sr_pbe` + * :c:data:`potential_c_alpha_ao_lda` + * :c:data:`potential_c_alpha_ao_sr_lda` + * :c:data:`potential_x_alpha_ao_lda` + * :c:data:`potential_x_alpha_ao_sr_lda` + * :c:data:`potential_xc_alpha_ao_lda` + * :c:data:`potential_xc_alpha_ao_sr_lda` + + +.. c:var:: aos_in_r_array_extra + + + File : :file:`dft_utils_in_r/ao_in_r.irp.f` + + .. code:: fortran + + double precision, allocatable :: aos_in_r_array_extra (ao_num,n_points_extra_final_grid) + + + aos_in_r_array_extra(i,j) = value of the ith ao on the jth 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_extra` + * :c:data:`n_points_extra_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_in_r_array_extra_transp` + + +.. c:var:: aos_in_r_array_extra_transp + + + File : :file:`dft_utils_in_r/ao_in_r.irp.f` + + .. code:: fortran + + double precision, allocatable :: aos_in_r_array_extra_transp (n_points_extra_final_grid,ao_num) + + + aos_in_r_array_extra_transp(i,j) = value of the jth ao on the ith grid point + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`aos_in_r_array_extra` + * :c:data:`n_points_extra_final_grid` + + + +.. 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_transp (n_points_final_grid,ao_num) + + + aos_in_r_array_transp(i,j) = value of the jth ao on the ith grid point + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`aos_in_r_array` + * :c:data:`n_points_final_grid` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`pot_grad_x_alpha_ao_pbe` + * :c:data:`pot_grad_x_alpha_ao_sr_pbe` + * :c:data:`pot_grad_xc_alpha_ao_pbe` + * :c:data:`pot_grad_xc_alpha_ao_sr_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 (3,ao_num,n_points_final_grid) + + + aos_lapl_in_r_array(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:`aos_lapl_in_r_array_transp` + + +.. 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_transp (ao_num,n_points_final_grid,3) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`aos_lapl_in_r_array` + * :c:data:`n_points_final_grid` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`mos_lapl_in_r_array` + + +.. c:var:: beta_dens_kin_in_r + + + File : :file:`dft_utils_in_r/mo_in_r.irp.f` + + .. code:: fortran + + double precision, allocatable :: alpha_dens_kin_in_r (n_points_final_grid) + double precision, allocatable :: beta_dens_kin_in_r (n_points_final_grid) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`elec_alpha_num` + * :c:data:`elec_beta_num` + * :c:data:`mos_grad_in_r_array_tranp` + * :c:data:`n_points_final_grid` + + + +.. c:var:: elec_alpha_num_grid_becke + + + File : :file:`dft_utils_in_r/dm_in_r.irp.f` + + .. code:: fortran + + double precision, allocatable :: elec_beta_num_grid_becke (N_states) + double precision, allocatable :: elec_alpha_num_grid_becke (N_states) + double precision, allocatable :: elec_num_grid_becke (N_states) + + + number of electrons when the one-e alpha/beta densities are numerically integrated on the DFT grid + + !!!!! WARNING !!!! if no_core_density = .True. then all core electrons are removed + + Needs: + + .. hlist:: + :columns: 3 + + * :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:`mu_average_prov` + + +.. c:var:: elec_beta_num_grid_becke + + + File : :file:`dft_utils_in_r/dm_in_r.irp.f` + + .. code:: fortran + + double precision, allocatable :: elec_beta_num_grid_becke (N_states) + double precision, allocatable :: elec_alpha_num_grid_becke (N_states) + double precision, allocatable :: elec_num_grid_becke (N_states) + + + number of electrons when the one-e alpha/beta densities are numerically integrated on the DFT grid + + !!!!! WARNING !!!! if no_core_density = .True. then all core electrons are removed + + Needs: + + .. hlist:: + :columns: 3 + + * :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:`mu_average_prov` + + +.. c:var:: elec_num_grid_becke + + + File : :file:`dft_utils_in_r/dm_in_r.irp.f` + + .. code:: fortran + + double precision, allocatable :: elec_beta_num_grid_becke (N_states) + double precision, allocatable :: elec_alpha_num_grid_becke (N_states) + double precision, allocatable :: elec_num_grid_becke (N_states) + + + number of electrons when the one-e alpha/beta densities are numerically integrated on the DFT grid + + !!!!! WARNING !!!! if no_core_density = .True. then all core electrons are removed + + Needs: + + .. hlist:: + :columns: 3 + + * :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:`mu_average_prov` + + +.. c:var:: kinetic_density_generalized + + + File : :file:`dft_utils_in_r/kin_dens.irp.f` + + .. code:: fortran + + double precision, allocatable :: kinetic_density_generalized (n_points_final_grid) + + + + Needs: .. hlist:: :columns: 3 - * :c:data:`ao_num` - * :c:data:`final_grid_points` - * :c:data:`mo_coef_transp` * :c:data:`mo_num` + * :c:data:`mos_grad_in_r_array_tranp` * :c:data:`n_points_final_grid` + * :c:data:`one_e_dm_mo_for_dft` -.. c:var:: mos_lapl_in_r_array +.. c:var:: mo_grad_ints + + + File : :file:`dft_utils_in_r/ints_grad.irp.f` + + .. code:: fortran + + double precision, allocatable :: mo_grad_ints (mo_num,mo_num,3) + + + mo_grad_ints(i,j,m) = + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`final_grid_points` + * :c:data:`mo_num` + * :c:data:`mos_grad_in_r_array` + * :c:data:`mos_in_r_array` + * :c:data:`n_points_final_grid` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_grad_ints_transp` + + +.. c:var:: mo_grad_ints_transp + + + File : :file:`dft_utils_in_r/ints_grad.irp.f` + + .. code:: fortran + + double precision, allocatable :: mo_grad_ints_transp (3,mo_num,mo_num) + + + mo_grad_ints(i,j,m) = + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_grad_ints` + * :c:data:`mo_num` + + + +.. c:var:: mos_grad_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) + double precision, allocatable :: mos_grad_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_grad_in_r_array(i,j,k) = value of the kth component of the gradient 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 + 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 @@ -603,29 +817,114 @@ Providers :columns: 3 * :c:data:`ao_num` - * :c:data:`aos_lapl_in_r_array` + * :c:data:`aos_grad_in_r_array` * :c:data:`mo_coef_transp` * :c:data:`mo_num` * :c:data:`n_points_final_grid` + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`core_inact_act_mos_grad_in_r_array` + * :c:data:`mo_grad_ints` + * :c:data:`mos_grad_in_r_array_tranp` + * :c:data:`mos_grad_in_r_array_transp_3` + * :c:data:`mos_grad_in_r_array_transp_bis` -.. c:var:: one_e_dm_alpha_at_r +.. c:var:: mos_grad_in_r_array_tranp - File : :file:`dft_utils_in_r/dm_in_r.irp.f` + File : :file:`dft_utils_in_r/mo_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) - double precision, allocatable :: elec_beta_num_grid_becke (N_states) - double precision, allocatable :: elec_alpha_num_grid_becke (N_states) + double precision, allocatable :: mos_grad_in_r_array_tranp (3,mo_num,n_points_final_grid) - 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 + 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:`mo_num` + * :c:data:`mos_grad_in_r_array` + * :c:data:`n_points_final_grid` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`alpha_dens_kin_in_r` + * :c:data:`kinetic_density_generalized` + + +.. c:var:: mos_grad_in_r_array_transp_3 + + + File : :file:`dft_utils_in_r/mo_in_r.irp.f` + + .. code:: fortran + + double precision, allocatable :: mos_grad_in_r_array_transp_3 (3,n_points_final_grid,mo_num) + + + Transposed gradients + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_num` + * :c:data:`mos_grad_in_r_array` + * :c:data:`n_points_final_grid` + + + +.. c:var:: mos_grad_in_r_array_transp_bis + + + File : :file:`dft_utils_in_r/mo_in_r.irp.f` + + .. code:: fortran + + double precision, allocatable :: mos_grad_in_r_array_transp_bis (n_points_final_grid,mo_num,3) + + + Transposed gradients + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_num` + * :c:data:`mos_grad_in_r_array` + * :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) + + + mos_in_r_array(i,j) = value of the ith mo on the jth grid point Needs: @@ -634,50 +933,143 @@ Providers * :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: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_sr_vxc_alpha_lda_w` - * :c:data:`aos_vc_alpha_lda_w` - * :c:data:`aos_vxc_alpha_lda_w` - * :c:data:`energy_c_lda` - * :c:data:`energy_c_sr_lda` - * :c:data:`energy_sr_x_lda` - * :c:data:`energy_x_lda` - * :c:data:`energy_x_sr_lda` + * :c:data:`basis_mos_in_r_array` + * :c:data:`mo_grad_ints` + + +.. c:var:: mos_in_r_array_omp + + + File : :file:`dft_utils_in_r/mo_in_r.irp.f` + + .. code:: fortran + + double precision, allocatable :: mos_in_r_array_omp (mo_num,n_points_final_grid) + + + mos_in_r_array(i,j) = value of the ith mo on the jth 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` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`f_hf_cholesky_sparse` + * :c:data:`f_hf_cholesky_sparse_bis` + * :c:data:`mos_in_r_array_transp` + * :c:data:`mos_times_cholesky_r1` + * :c:data:`mos_times_cholesky_r2` + * :c:data:`on_top_hf_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_transp (n_points_final_grid,mo_num) + + + mos_in_r_array_transp(i,j) = value of the jth mo on the ith grid point + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_num` + * :c:data:`mos_in_r_array_omp` + * :c:data:`n_points_final_grid` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`act_mos_in_r_array` + * :c:data:`core_inact_act_mos_in_r_array` + * :c:data:`core_mos_in_r_array` + * :c:data:`inact_mos_in_r_array` + * :c:data:`virt_mos_in_r_array` + + +.. 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 + + k = 1 : x, k= 2, y, k 3, z + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`aos_lapl_in_r_array_transp` + * :c:data:`mo_coef_transp` + * :c:data:`mo_num` + * :c:data:`n_points_final_grid` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`mos_lapl_in_r_array_tranp` -.. c:var:: one_e_dm_alpha_in_r +.. c:var:: mos_lapl_in_r_array_tranp - File : :file:`dft_utils_in_r/dm_in_r.irp.f` + File : :file:`dft_utils_in_r/mo_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) + double precision, allocatable :: mos_lapl_in_r_array_tranp (3,mo_num,n_points_final_grid) + mos_lapl_in_r_array_transp(i,j,k) = value of the kth component of the laplient 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:`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:data:`mos_lapl_in_r_array` + * :c:data:`n_points_final_grid` @@ -692,14 +1084,25 @@ Providers 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) + double precision, allocatable :: scal_prod_grad_one_e_dm_ab (n_points_final_grid,N_states) + double precision, allocatable :: one_e_stuff_for_pbe (3,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 + + 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 + + scal_prod_grad_one_e_dm_ab(i,istate) = grad n_alpha(r_i) . grad n_beta(r_i) + where r_i is the ith point of the grid and istate is the state number + + !!!!! WARNING !!!! if no_core_density = .True. then all core electrons are removed Needs: @@ -717,14 +1120,24 @@ Providers .. hlist:: :columns: 3 - * :c:data:`aos_sr_vc_alpha_pbe_w` - * :c:data:`aos_sr_vxc_alpha_pbe_w` + * :c:data:`aos_sr_vc_alpha_lda_w` + * :c:data:`aos_sr_vxc_alpha_lda_w` + * :c:data:`aos_vc_alpha_lda_w` * :c:data:`aos_vc_alpha_pbe_w` + * :c:data:`aos_vc_alpha_sr_pbe_w` + * :c:data:`aos_vxc_alpha_lda_w` * :c:data:`aos_vxc_alpha_pbe_w` - * :c:data:`energy_c_pbe` - * :c:data:`energy_sr_x_pbe` + * :c:data:`aos_vxc_alpha_sr_pbe_w` + * :c:data:`effective_alpha_dm` + * :c:data:`effective_spin_dm` + * :c:data:`elec_beta_num_grid_becke` + * :c:data:`energy_c_lda` + * :c:data:`energy_c_sr_lda` + * :c:data:`energy_x_lda` * :c:data:`energy_x_pbe` + * :c:data:`energy_x_sr_lda` * :c:data:`energy_x_sr_pbe` + * :c:data:`mu_average_prov` .. c:var:: one_e_dm_and_grad_beta_in_r @@ -738,14 +1151,25 @@ Providers 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) + double precision, allocatable :: scal_prod_grad_one_e_dm_ab (n_points_final_grid,N_states) + double precision, allocatable :: one_e_stuff_for_pbe (3,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 + + 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 + + scal_prod_grad_one_e_dm_ab(i,istate) = grad n_alpha(r_i) . grad n_beta(r_i) + where r_i is the ith point of the grid and istate is the state number + + !!!!! WARNING !!!! if no_core_density = .True. then all core electrons are removed Needs: @@ -763,32 +1187,56 @@ Providers .. hlist:: :columns: 3 - * :c:data:`aos_sr_vc_alpha_pbe_w` - * :c:data:`aos_sr_vxc_alpha_pbe_w` + * :c:data:`aos_sr_vc_alpha_lda_w` + * :c:data:`aos_sr_vxc_alpha_lda_w` + * :c:data:`aos_vc_alpha_lda_w` * :c:data:`aos_vc_alpha_pbe_w` + * :c:data:`aos_vc_alpha_sr_pbe_w` + * :c:data:`aos_vxc_alpha_lda_w` * :c:data:`aos_vxc_alpha_pbe_w` - * :c:data:`energy_c_pbe` - * :c:data:`energy_sr_x_pbe` + * :c:data:`aos_vxc_alpha_sr_pbe_w` + * :c:data:`effective_alpha_dm` + * :c:data:`effective_spin_dm` + * :c:data:`elec_beta_num_grid_becke` + * :c:data:`energy_c_lda` + * :c:data:`energy_c_sr_lda` + * :c:data:`energy_x_lda` * :c:data:`energy_x_pbe` + * :c:data:`energy_x_sr_lda` * :c:data:`energy_x_sr_pbe` + * :c:data:`mu_average_prov` -.. c:var:: one_e_dm_beta_at_r +.. 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_alpha_at_r (n_points_final_grid,N_states) - double precision, allocatable :: one_e_dm_beta_at_r (n_points_final_grid,N_states) - double precision, allocatable :: elec_beta_num_grid_becke (N_states) - double precision, allocatable :: elec_alpha_num_grid_becke (N_states) + 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) + double precision, allocatable :: scal_prod_grad_one_e_dm_ab (n_points_final_grid,N_states) + double precision, allocatable :: one_e_stuff_for_pbe (3,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) + 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 + + scal_prod_grad_one_e_dm_ab(i,istate) = grad n_alpha(r_i) . grad n_beta(r_i) + where r_i is the ith point of the grid and istate is the state number + + !!!!! WARNING !!!! if no_core_density = .True. then all core electrons are removed Needs: @@ -809,57 +1257,53 @@ Providers * :c:data:`aos_sr_vc_alpha_lda_w` * :c:data:`aos_sr_vxc_alpha_lda_w` * :c:data:`aos_vc_alpha_lda_w` + * :c:data:`aos_vc_alpha_pbe_w` + * :c:data:`aos_vc_alpha_sr_pbe_w` * :c:data:`aos_vxc_alpha_lda_w` + * :c:data:`aos_vxc_alpha_pbe_w` + * :c:data:`aos_vxc_alpha_sr_pbe_w` + * :c:data:`effective_alpha_dm` + * :c:data:`effective_spin_dm` + * :c:data:`elec_beta_num_grid_becke` * :c:data:`energy_c_lda` * :c:data:`energy_c_sr_lda` - * :c:data:`energy_sr_x_lda` * :c:data:`energy_x_lda` + * :c:data:`energy_x_pbe` * :c:data:`energy_x_sr_lda` + * :c:data:`energy_x_sr_pbe` + * :c:data:`mu_average_prov` -.. 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_dm_no_core_and_grad_alpha_in_r +.. 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_no_core_and_grad_alpha_in_r (4,n_points_final_grid,N_states) - double precision, allocatable :: one_e_dm_no_core_and_grad_beta_in_r (4,n_points_final_grid,N_states) + 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) + double precision, allocatable :: scal_prod_grad_one_e_dm_ab (n_points_final_grid,N_states) + double precision, allocatable :: one_e_stuff_for_pbe (3,n_points_final_grid,N_states) - one_e_dm_no_core_and_grad_alpha_in_r(1,i,i_state) = d\dx n_alpha(r_i,istate) without core orbitals - one_e_dm_no_core_and_grad_alpha_in_r(2,i,i_state) = d\dy n_alpha(r_i,istate) without core orbitals - one_e_dm_no_core_and_grad_alpha_in_r(3,i,i_state) = d\dz n_alpha(r_i,istate) without core orbitals - one_e_dm_no_core_and_grad_alpha_in_r(4,i,i_state) = n_alpha(r_i,istate) without core orbitals + 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 + + scal_prod_grad_one_e_dm_ab(i,istate) = grad n_alpha(r_i) . grad n_beta(r_i) + where r_i is the ith point of the grid and istate is the state number + + !!!!! WARNING !!!! if no_core_density = .True. then all core electrons are removed Needs: @@ -870,41 +1314,34 @@ Providers * :c:data:`final_grid_points` * :c:data:`n_points_final_grid` * :c:data:`n_states` - * :c:data:`one_e_dm_alpha_ao_for_dft_no_core` - - - -.. c:var:: one_e_dm_no_core_and_grad_beta_in_r - - - File : :file:`dft_utils_in_r/dm_in_r.irp.f` - - .. code:: fortran - - double precision, allocatable :: one_e_dm_no_core_and_grad_alpha_in_r (4,n_points_final_grid,N_states) - double precision, allocatable :: one_e_dm_no_core_and_grad_beta_in_r (4,n_points_final_grid,N_states) - - - one_e_dm_no_core_and_grad_alpha_in_r(1,i,i_state) = d\dx n_alpha(r_i,istate) without core orbitals - one_e_dm_no_core_and_grad_alpha_in_r(2,i,i_state) = d\dy n_alpha(r_i,istate) without core orbitals - one_e_dm_no_core_and_grad_alpha_in_r(3,i,i_state) = d\dz n_alpha(r_i,istate) without core orbitals - one_e_dm_no_core_and_grad_alpha_in_r(4,i,i_state) = n_alpha(r_i,istate) without core orbitals - where r_i is the ith point of the grid and istate is the state number + * :c:data:`one_e_dm_alpha_ao_for_dft` - Needs: + Needed by: .. 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_no_core` - + * :c:data:`aos_sr_vc_alpha_lda_w` + * :c:data:`aos_sr_vxc_alpha_lda_w` + * :c:data:`aos_vc_alpha_lda_w` + * :c:data:`aos_vc_alpha_pbe_w` + * :c:data:`aos_vc_alpha_sr_pbe_w` + * :c:data:`aos_vxc_alpha_lda_w` + * :c:data:`aos_vxc_alpha_pbe_w` + * :c:data:`aos_vxc_alpha_sr_pbe_w` + * :c:data:`effective_alpha_dm` + * :c:data:`effective_spin_dm` + * :c:data:`elec_beta_num_grid_becke` + * :c:data:`energy_c_lda` + * :c:data:`energy_c_sr_lda` + * :c:data:`energy_x_lda` + * :c:data:`energy_x_pbe` + * :c:data:`energy_x_sr_lda` + * :c:data:`energy_x_sr_pbe` + * :c:data:`mu_average_prov` -.. c:var:: one_e_grad_2_dm_alpha_at_r +.. c:var:: one_e_stuff_for_pbe File : :file:`dft_utils_in_r/dm_in_r.irp.f` @@ -915,14 +1352,25 @@ Providers 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) + double precision, allocatable :: scal_prod_grad_one_e_dm_ab (n_points_final_grid,N_states) + double precision, allocatable :: one_e_stuff_for_pbe (3,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 + + 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 + + scal_prod_grad_one_e_dm_ab(i,istate) = grad n_alpha(r_i) . grad n_beta(r_i) + where r_i is the ith point of the grid and istate is the state number + + !!!!! WARNING !!!! if no_core_density = .True. then all core electrons are removed Needs: @@ -940,17 +1388,27 @@ Providers .. hlist:: :columns: 3 - * :c:data:`aos_sr_vc_alpha_pbe_w` - * :c:data:`aos_sr_vxc_alpha_pbe_w` + * :c:data:`aos_sr_vc_alpha_lda_w` + * :c:data:`aos_sr_vxc_alpha_lda_w` + * :c:data:`aos_vc_alpha_lda_w` * :c:data:`aos_vc_alpha_pbe_w` + * :c:data:`aos_vc_alpha_sr_pbe_w` + * :c:data:`aos_vxc_alpha_lda_w` * :c:data:`aos_vxc_alpha_pbe_w` - * :c:data:`energy_c_pbe` - * :c:data:`energy_sr_x_pbe` + * :c:data:`aos_vxc_alpha_sr_pbe_w` + * :c:data:`effective_alpha_dm` + * :c:data:`effective_spin_dm` + * :c:data:`elec_beta_num_grid_becke` + * :c:data:`energy_c_lda` + * :c:data:`energy_c_sr_lda` + * :c:data:`energy_x_lda` * :c:data:`energy_x_pbe` + * :c:data:`energy_x_sr_lda` * :c:data:`energy_x_sr_pbe` + * :c:data:`mu_average_prov` -.. c:var:: one_e_grad_2_dm_beta_at_r +.. c:var:: scal_prod_grad_one_e_dm_ab File : :file:`dft_utils_in_r/dm_in_r.irp.f` @@ -961,14 +1419,25 @@ Providers 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) + double precision, allocatable :: scal_prod_grad_one_e_dm_ab (n_points_final_grid,N_states) + double precision, allocatable :: one_e_stuff_for_pbe (3,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 + + 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 + + scal_prod_grad_one_e_dm_ab(i,istate) = grad n_alpha(r_i) . grad n_beta(r_i) + where r_i is the ith point of the grid and istate is the state number + + !!!!! WARNING !!!! if no_core_density = .True. then all core electrons are removed Needs: @@ -986,14 +1455,24 @@ Providers .. hlist:: :columns: 3 - * :c:data:`aos_sr_vc_alpha_pbe_w` - * :c:data:`aos_sr_vxc_alpha_pbe_w` + * :c:data:`aos_sr_vc_alpha_lda_w` + * :c:data:`aos_sr_vxc_alpha_lda_w` + * :c:data:`aos_vc_alpha_lda_w` * :c:data:`aos_vc_alpha_pbe_w` + * :c:data:`aos_vc_alpha_sr_pbe_w` + * :c:data:`aos_vxc_alpha_lda_w` * :c:data:`aos_vxc_alpha_pbe_w` - * :c:data:`energy_c_pbe` - * :c:data:`energy_sr_x_pbe` + * :c:data:`aos_vxc_alpha_sr_pbe_w` + * :c:data:`effective_alpha_dm` + * :c:data:`effective_spin_dm` + * :c:data:`elec_beta_num_grid_becke` + * :c:data:`energy_c_lda` + * :c:data:`energy_c_sr_lda` + * :c:data:`energy_x_lda` * :c:data:`energy_x_pbe` + * :c:data:`energy_x_sr_lda` * :c:data:`energy_x_sr_pbe` + * :c:data:`mu_average_prov` @@ -1003,7 +1482,7 @@ Subroutines / functions .. c:function:: dens_grad_a_b_no_core_and_aos_grad_aos_at_r: - File : :file:`dft_utils_in_r/dm_in_r.irp.f` + File : :file:`dft_utils_in_r/dm_in_r_routines.irp.f` .. code:: fortran @@ -1030,15 +1509,55 @@ Subroutines / functions :columns: 3 * :c:data:`ao_num` + * :c:data:`n_states` * :c:data:`one_e_dm_alpha_ao_for_dft_no_core` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`dsymv` + * :c:func:`give_all_aos_and_grad_at_r` + + +.. c:function:: density_and_grad_alpha_beta: + + + File : :file:`dft_utils_in_r/dm_in_r_routines.irp.f` + + .. code:: fortran + + subroutine density_and_grad_alpha_beta(r,dm_a,dm_b, grad_dm_a, grad_dm_b) + + + 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 + * 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 + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` * :c:data:`n_states` + * :c:data:`one_e_dm_alpha_ao_for_dft` Called by: .. hlist:: :columns: 3 - * :c:data:`one_e_dm_no_core_and_grad_alpha_in_r` + * :c:func:`mu_grad_rho_func` Calls: @@ -1052,7 +1571,7 @@ 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` + File : :file:`dft_utils_in_r/dm_in_r_routines.irp.f` .. code:: fortran @@ -1079,14 +1598,17 @@ Subroutines / functions :columns: 3 * :c:data:`ao_num` - * :c:data:`one_e_dm_alpha_ao_for_dft` * :c:data:`n_states` + * :c:data:`one_e_dm_alpha_ao_for_dft` Called by: .. hlist:: :columns: 3 + * :c:func:`ec_md_on_top_pbe_mu_corrected` + * :c:func:`ecmd_pbe_ueg_at_r` + * :c:func:`give_all_stuffs_in_r_for_lyp_88` * :c:data:`one_e_dm_and_grad_alpha_in_r` Calls: @@ -1098,10 +1620,52 @@ Subroutines / functions * :c:func:`give_all_aos_and_grad_at_r` +.. c:function:: density_and_grad_lapl_alpha_beta_and_all_aos_and_grad_aos_at_r: + + + File : :file:`dft_utils_in_r/dm_in_r_routines.irp.f` + + .. code:: fortran + + subroutine density_and_grad_lapl_alpha_beta_and_all_aos_and_grad_aos_at_r(r,dm_a,dm_b, grad_dm_a, grad_dm_b, lapl_dm_a, lapl_dm_b, aos_array, grad_aos_array, lapl_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:`n_states` + * :c:data:`one_e_dm_alpha_ao_for_dft` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`dsymv` + * :c:func:`give_all_aos_and_grad_and_lapl_at_r` + + .. c:function:: dm_dft_alpha_beta_and_all_aos_at_r: - File : :file:`dft_utils_in_r/dm_in_r.irp.f` + File : :file:`dft_utils_in_r/dm_in_r_routines.irp.f` .. code:: fortran @@ -1119,8 +1683,8 @@ Subroutines / functions :columns: 3 * :c:data:`ao_num` - * :c:data:`one_e_dm_alpha_ao_for_dft` * :c:data:`n_states` + * :c:data:`one_e_dm_alpha_ao_for_dft` Calls: @@ -1134,7 +1698,7 @@ Subroutines / functions .. c:function:: dm_dft_alpha_beta_at_r: - File : :file:`dft_utils_in_r/dm_in_r.irp.f` + File : :file:`dft_utils_in_r/dm_in_r_routines.irp.f` .. code:: fortran @@ -1151,16 +1715,18 @@ Subroutines / functions :columns: 3 * :c:data:`ao_num` - * :c:data:`one_e_dm_alpha_ao_for_dft` * :c:data:`n_states` + * :c:data:`one_e_dm_alpha_ao_for_dft` Called by: .. hlist:: :columns: 3 - * :c:data:`one_e_dm_alpha_at_r` - * :c:data:`one_e_dm_alpha_in_r` + * :c:func:`correction_to_on_top_from_ueg` + * :c:data:`mu_of_r_dft_average` + * :c:data:`mu_rsc_of_r` + * :c:func:`print_mos` Calls: @@ -1174,7 +1740,7 @@ Subroutines / functions .. c:function:: dm_dft_alpha_beta_no_core_at_r: - File : :file:`dft_utils_in_r/dm_in_r.irp.f` + File : :file:`dft_utils_in_r/dm_in_r_routines.irp.f` .. code:: fortran @@ -1191,8 +1757,8 @@ Subroutines / functions :columns: 3 * :c:data:`ao_num` - * :c:data:`one_e_dm_alpha_ao_for_dft_no_core` * :c:data:`n_states` + * :c:data:`one_e_dm_alpha_ao_for_dft_no_core` Calls: diff --git a/docs/source/modules/electrons.rst b/docs/source/modules/electrons.rst index 416761a97..d336098af 100644 --- a/docs/source/modules/electrons.rst +++ b/docs/source/modules/electrons.rst @@ -74,8 +74,13 @@ Providers .. hlist:: :columns: 3 + * :c:data:`cfg_seniority_index` + * :c:data:`cholesky_ao_num` * :c:data:`diagonal_h_matrix_on_psi_det` + * :c:data:`nsomomax` + * :c:data:`ormas_max_e` * :c:data:`psi_det_hii` + * :c:data:`psi_selectors_diag_h_mat` .. c:var:: elec_num_tab @@ -105,6 +110,11 @@ Providers .. hlist:: :columns: 3 + * :c:data:`cfg_seniority_index` + * :c:data:`cholesky_ao_num` * :c:data:`diagonal_h_matrix_on_psi_det` + * :c:data:`nsomomax` + * :c:data:`ormas_max_e` * :c:data:`psi_det_hii` + * :c:data:`psi_selectors_diag_h_mat` diff --git a/docs/source/modules/ezfio_files.rst b/docs/source/modules/ezfio_files.rst index d7079295e..b67c204d7 100644 --- a/docs/source/modules/ezfio_files.rst +++ b/docs/source/modules/ezfio_files.rst @@ -25,7 +25,7 @@ Providers .. code:: fortran - character*(128) :: ezfio_filename + character*(1024) :: ezfio_filename Name of EZFIO file. It is obtained from the QPACKAGE_INPUT environment @@ -36,26 +36,51 @@ Providers .. hlist:: :columns: 3 + * :c:data:`file_lock` * :c:data:`mpi_initialized` + * :c:data:`output_wall_time_0` Needed by: .. hlist:: :columns: 3 + * :c:data:`absolute_eig` + * :c:data:`act_2_rdm_aa_mo` + * :c:data:`act_2_rdm_ab_mo` + * :c:data:`act_2_rdm_bb_mo` + * :c:data:`act_2_rdm_spin_trace_mo` + * :c:data:`act_mos_opt` + * :c:data:`adaptive_pt2_max` * :c:data:`ao_cartesian` + * :c:data:`ao_cholesky_threshold` * :c:data:`ao_coef` * :c:data:`ao_expo` + * :c:data:`ao_expo_im` + * :c:data:`ao_expo_phase` + * :c:data:`ao_expo_pw` * :c:data:`ao_integrals_threshold` * :c:data:`ao_md5` + * :c:data:`ao_normalized` * :c:data:`ao_nucl` * :c:data:`ao_num` + * :c:data:`ao_one_e_integrals_threshold` * :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:`avoid_saddle` + * :c:data:`basis` + * :c:data:`basis_nucleus_index` + * :c:data:`calc_dipole_moment` + * :c:data:`calc_energy_components` + * :c:data:`calc_osc_str` + * :c:data:`calc_tr_dipole_moment` * :c:data:`correlation_energy_ratio_max` + * :c:data:`correlation_functional` + * :c:data:`criterion_casscf` + * :c:data:`csf_based` + * :c:data:`damping_for_rs_dft` * :c:data:`data_energy_proj` * :c:data:`data_energy_var` * :c:data:`data_one_e_dm_alpha_ao` @@ -63,67 +88,106 @@ Providers * :c:data:`data_one_e_dm_beta_ao` * :c:data:`data_one_e_dm_beta_mo` * :c:data:`davidson_sze_max` - * :c:data:`disk_access_nuclear_repulsion` + * :c:data:`density_for_dft` + * :c:data:`diag_hess_cas` * :c:data:`disk_based_davidson` * :c:data:`distributed_davidson` - * :c:data:`do_direct_integrals` + * :c:data:`do_ao_cholesky` + * :c:data:`do_mom` + * :c:data:`do_ormas` * :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:`exchange_functional` + * :c:data:`excitation_alpha_max` + * :c:data:`excitation_beta_max` + * :c:data:`excitation_max` + * :c:data:`excitation_ref` * :c:data:`ezfio_work_dir` + * :c:data:`fast_2rdm` * :c:data:`frozen_orb_scf` * :c:data:`generators_bitmask` - * :c:data:`generators_bitmask_restart` * :c:data:`h0_type` - * :c:data:`io_ao_integrals_e_n` + * :c:data:`hess_cv_cv` + * :c:data:`hf_exchange` + * :c:data:`io_ao_cholesky` * :c:data:`io_ao_integrals_kinetic` + * :c:data:`io_ao_integrals_n_e` * :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_cholesky` * :c:data:`io_mo_integrals_kinetic` + * :c:data:`io_mo_integrals_n_e` * :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:`io_nuclear_repulsion` + * :c:data:`io_two_body_rdm_aa` + * :c:data:`io_two_body_rdm_ab` + * :c:data:`io_two_body_rdm_bb` + * :c:data:`io_two_body_rdm_spin_trace` + * :c:data:`is_periodic` + * :c:data:`json_filename` * :c:data:`level_shift` + * :c:data:`level_shift_casscf` + * :c:data:`lin_dep_cutoff` * :c:data:`max_dim_diis` * :c:data:`mo_class` * :c:data:`mo_coef` + * :c:data:`mo_coef_aux` + * :c:data:`mo_coef_imag` * :c:data:`mo_guess_type` + * :c:data:`mo_integrals_cache_shift` * :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_dft_type` * :c:data:`mu_erf` - * :c:data:`n_cas_bitmask` + * :c:data:`n_big_act_orb` * :c:data:`n_det` - * :c:data:`n_det_iterations` * :c:data:`n_det_max` * :c:data:`n_det_max_full` + * :c:data:`n_det_max_opt` * :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_pts_charge` * :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:`nb_it_max_lambda` + * :c:data:`nb_it_max_pre_search` + * :c:data:`no_core_density` + * :c:data:`no_oa_or_av_opt` + * :c:data:`normalize_dm` * :c:data:`nucl_charge` * :c:data:`nucl_charge_remove` * :c:data:`nucl_coord` * :c:data:`nucl_label` * :c:data:`nucl_num` + * :c:data:`nucleus_shell_num` * :c:data:`only_expected_s2` + * :c:data:`optimization_max_nb_iter` + * :c:data:`optimization_method` + * :c:data:`ormas_max_e` + * :c:data:`ormas_min_e` + * :c:data:`ormas_mstart` + * :c:data:`ormas_n_space` + * :c:data:`point_charges` + * :c:data:`prim_coef` + * :c:data:`prim_expo` + * :c:data:`prim_normalization_factor` + * :c:data:`prim_num` + * :c:data:`primitives_normalized` + * :c:data:`print_all_transitions` + * :c:data:`pruning` * :c:data:`pseudo_dz_k` * :c:data:`pseudo_dz_kl` * :c:data:`pseudo_grid_rmax` @@ -139,24 +203,58 @@ Providers * :c:data:`psi_coef` * :c:data:`psi_det` * :c:data:`psi_det_size` - * :c:data:`pt2_iterations` * :c:data:`pt2_max` + * :c:data:`pt2_min_casscf` + * :c:data:`pt2_min_parallel_tasks` * :c:data:`pt2_relative_error` + * :c:data:`pts_charge_coord` + * :c:data:`pts_charge_z` * :c:data:`qp_stop_filename` * :c:data:`read_wf` + * :c:data:`restore_symm` * :c:data:`s2_eig` + * :c:data:`save_threshold` + * :c:data:`save_wf_after_selection` * :c:data:`scf_algorithm` * :c:data:`selection_factor` + * :c:data:`seniority_max` + * :c:data:`shell_ang_mom` + * :c:data:`shell_index` + * :c:data:`shell_normalization_factor` + * :c:data:`shell_num` + * :c:data:`shell_prim_num` + * :c:data:`small_active_space` * :c:data:`state_following` + * :c:data:`state_following_casscf` * :c:data:`target_energy` + * :c:data:`thresh_casscf` + * :c:data:`thresh_cc` + * :c:data:`thresh_delta` + * :c:data:`thresh_eig` + * :c:data:`thresh_model` + * :c:data:`thresh_model_2` + * :c:data:`thresh_opt_max_elem_grad` + * :c:data:`thresh_rho` + * :c:data:`thresh_rho_2` * :c:data:`thresh_scf` * :c:data:`thresh_sym` + * :c:data:`thresh_wtg` + * :c:data:`thresh_wtg2` * :c:data:`threshold_davidson` + * :c:data:`threshold_davidson_from_pt2` * :c:data:`threshold_diis` * :c:data:`threshold_generators` + * :c:data:`threshold_nonsym_davidson` + * :c:data:`twice_hierarchy_max` + * :c:data:`typ` + * :c:data:`use_cgtos` + * :c:data:`use_only_lr` * :c:data:`variance_max` + * :c:data:`version_avoid_saddle` + * :c:data:`version_lambda_search` * :c:data:`weight_one_e_dm` * :c:data:`weight_selection` + * :c:data:`without_diagonal` .. c:var:: ezfio_work_dir @@ -166,7 +264,7 @@ Providers .. code:: fortran - character*(128) :: ezfio_work_dir + character*(1024) :: ezfio_work_dir EZFIO/work/ @@ -178,6 +276,36 @@ Providers * :c:data:`ezfio_filename` + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`cholesky_ao_num` + * :c:data:`cholesky_mo_num` + * :c:data:`cholesky_mo_transp` + * :c:data:`ezfio_work_dir_pid` + + +.. c:var:: ezfio_work_dir_pid + + + File : :file:`ezfio_files/ezfio.irp.f` + + .. code:: fortran + + character*(1024) :: ezfio_work_dir_pid + + + EZFIO/work/pid_ + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ezfio_work_dir` + .. c:var:: file_lock @@ -192,6 +320,40 @@ Providers OpenMP Lock for I/O + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ezfio_filename` + * :c:data:`json_filename` + * :c:data:`json_unit` + * :c:data:`nthreads_davidson` + * :c:data:`nthreads_pt2` + * :c:data:`qp_max_mem` + + +.. c:var:: nthreads_pt2 + + + File : :file:`ezfio_files/environment.irp.f` + + .. code:: fortran + + integer :: nthreads_pt2 + + + Number of threads for Davidson + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`file_lock` + * :c:data:`mpi_master` + * :c:data:`nproc` + .. c:var:: output_cpu_time_0 @@ -212,103 +374,15 @@ Providers .. 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_ao` - * :c:data:`data_one_e_dm_alpha_mo` - * :c:data:`data_one_e_dm_beta_ao` - * :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:`h0_type` - * :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:`ezfio_filename` * :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:`n_pts_charge` * :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_sym` - * :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:`selection_factor` - * :c:data:`state_following` - * :c:data:`target_energy` - * :c:data:`thresh_scf` - * :c:data:`thresh_sym` - * :c:data:`threshold_davidson` - * :c:data:`threshold_diis` - * :c:data:`threshold_generators` - * :c:data:`variance_max` - * :c:data:`weight_one_e_dm` - * :c:data:`weight_selection` + * :c:data:`prim_normalization_factor` + * :c:data:`shell_normalization_factor` .. c:var:: output_wall_time_0 @@ -329,103 +403,15 @@ Providers .. 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_ao` - * :c:data:`data_one_e_dm_alpha_mo` - * :c:data:`data_one_e_dm_beta_ao` - * :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:`h0_type` - * :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:`ezfio_filename` * :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:`n_pts_charge` * :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_sym` - * :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:`selection_factor` - * :c:data:`state_following` - * :c:data:`target_energy` - * :c:data:`thresh_scf` - * :c:data:`thresh_sym` - * :c:data:`threshold_davidson` - * :c:data:`threshold_diis` - * :c:data:`threshold_generators` - * :c:data:`variance_max` - * :c:data:`weight_one_e_dm` - * :c:data:`weight_selection` + * :c:data:`prim_normalization_factor` + * :c:data:`shell_normalization_factor` .. c:var:: qp_kill_filename @@ -435,8 +421,8 @@ Providers .. code:: fortran - character*(128) :: qp_stop_filename - character*(128) :: qp_kill_filename + character*(256) :: qp_stop_filename + character*(256) :: qp_kill_filename integer :: qp_stop_variable @@ -458,8 +444,8 @@ Providers .. code:: fortran - character*(128) :: qp_stop_filename - character*(128) :: qp_kill_filename + character*(256) :: qp_stop_filename + character*(256) :: qp_kill_filename integer :: qp_stop_variable @@ -481,8 +467,8 @@ Providers .. code:: fortran - character*(128) :: qp_stop_filename - character*(128) :: qp_kill_filename + character*(256) :: qp_stop_filename + character*(256) :: qp_kill_filename integer :: qp_stop_variable @@ -524,6 +510,57 @@ Subroutines / functions +.. c:function:: lock_io: + + + File : :file:`ezfio_files/lock.irp.f` + + .. code:: fortran + + subroutine lock_io() + + + Needs to be called because before doing I/O because internal read and write + are not thread safe. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`file_lock` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`davidson_slave_work` + * :c:func:`format_w_error` + * :c:func:`json_close` + * :c:data:`json_filename` + * :c:data:`json_unit` + * :c:func:`load_mo_integrals` + * :c:data:`nthreads_davidson` + * :c:data:`nthreads_pt2` + * :c:data:`qp_max_mem` + * :c:func:`read_array_two_rdm` + * :c:func:`read_array_two_trans_rdm` + * :c:func:`resident_memory` + * :c:func:`roothaan_hall_scf` + * :c:func:`total_memory` + * :c:func:`write_array_two_rdm` + * :c:func:`write_array_two_trans_rdm` + * :c:func:`write_cipsi_json` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`omp_set_lock` + + .. c:function:: qp_stop: @@ -544,6 +581,57 @@ Subroutines / functions * :c:data:`qp_stop_filename` +.. c:function:: unlock_io: + + + File : :file:`ezfio_files/lock.irp.f` + + .. code:: fortran + + subroutine unlock_io() + + + Needs to be called because afterdoing I/O because internal read and write + are not thread safe. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`file_lock` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`davidson_slave_work` + * :c:func:`format_w_error` + * :c:func:`json_close` + * :c:data:`json_filename` + * :c:data:`json_unit` + * :c:func:`load_mo_integrals` + * :c:data:`nthreads_davidson` + * :c:data:`nthreads_pt2` + * :c:data:`qp_max_mem` + * :c:func:`read_array_two_rdm` + * :c:func:`read_array_two_trans_rdm` + * :c:func:`resident_memory` + * :c:func:`roothaan_hall_scf` + * :c:func:`total_memory` + * :c:func:`write_array_two_rdm` + * :c:func:`write_array_two_trans_rdm` + * :c:func:`write_cipsi_json` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`omp_unset_lock` + + .. c:function:: write_bool: @@ -588,9 +676,20 @@ Subroutines / functions .. hlist:: :columns: 3 + * :c:data:`ao_ortho_canonical_coef` * :c:data:`ci_energy` * :c:func:`damping_scf` + * :c:func:`dav_double_dressed` + * :c:func:`davidson_diag_csf_hjj` + * :c:func:`davidson_diag_hjj` * :c:func:`davidson_diag_hjj_sjj` + * :c:func:`davidson_diag_nonsym_hjj` + * :c:func:`davidson_general` + * :c:func:`davidson_general_diag_dressed_ext_rout_nonsym_b1space` + * :c:func:`davidson_general_ext_rout` + * :c:func:`davidson_general_ext_rout_diag_dressed` + * :c:func:`davidson_general_ext_rout_dressed` + * :c:func:`davidson_general_ext_rout_nonsym_b1space` * :c:data:`nuclear_repulsion` * :c:data:`psi_coef_max` * :c:data:`pt2_e0_denominator` @@ -626,17 +725,28 @@ Subroutines / functions .. hlist:: :columns: 3 + * :c:func:`dav_double_dressed` + * :c:func:`davidson_diag_csf_hjj` + * :c:func:`davidson_diag_hjj` * :c:func:`davidson_diag_hjj_sjj` + * :c:func:`davidson_diag_nonsym_hjj` + * :c:func:`davidson_general` + * :c:func:`davidson_general_diag_dressed_ext_rout_nonsym_b1space` + * :c:func:`davidson_general_ext_rout` + * :c:func:`davidson_general_ext_rout_diag_dressed` + * :c:func:`davidson_general_ext_rout_dressed` + * :c:func:`davidson_general_ext_rout_nonsym_b1space` * :c:func:`make_s2_eigenfunction` * :c:data:`mo_num` - * :c:data:`n_cas_bitmask` + * :c:data:`n_act_orb` * :c:data:`n_core_orb` + * :c:data:`n_del_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_inact_orb` * :c:data:`n_int` + * :c:data:`n_virt_orb` * :c:data:`nthreads_davidson` * :c:data:`nthreads_pt2` * :c:data:`psi_cas` @@ -648,6 +758,7 @@ Subroutines / functions * :c:data:`qp_max_mem` * :c:func:`remove_small_contributions` * :c:func:`save_wavefunction_general` + * :c:func:`save_wavefunction_general_unormalized` * :c:func:`save_wavefunction_specified` * :c:func:`zmq_pt2` @@ -669,118 +780,40 @@ Subroutines / functions .. hlist:: :columns: 3 - * :c:data:`output_wall_time_0` * :c:data:`mpi_master` + * :c:data:`output_wall_time_0` 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_ao` - * :c:data:`data_one_e_dm_alpha_mo` - * :c:data:`data_one_e_dm_beta_ao` - * :c:data:`data_one_e_dm_beta_mo` + * :c:func:`dav_double_dressed` + * :c:func:`davidson_diag_csf_hjj` + * :c:func:`davidson_diag_hjj` * :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:`h0_type` - * :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:`davidson_diag_nonsym_hjj` + * :c:func:`davidson_general` + * :c:func:`davidson_general_diag_dressed_ext_rout_nonsym_b1space` + * :c:func:`davidson_general_ext_rout` + * :c:func:`davidson_general_ext_rout_diag_dressed` + * :c:func:`davidson_general_ext_rout_dressed` + * :c:func:`davidson_general_ext_rout_nonsym_b1space` * :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:func:`mo_coef_new_as_svd_vectors_of_mo_matrix_eig` * :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:`n_pts_charge` * :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_sym` - * :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:`prim_normalization_factor` * :c:func:`roothaan_hall_scf` - * :c:data:`s2_eig` - * :c:data:`scf_algorithm` - * :c:data:`selection_factor` - * :c:data:`state_following` - * :c:data:`target_energy` - * :c:data:`thresh_scf` - * :c:data:`thresh_sym` - * :c:data:`threshold_davidson` - * :c:data:`threshold_diis` - * :c:data:`threshold_generators` - * :c:data:`variance_max` - * :c:data:`weight_one_e_dm` - * :c:data:`weight_selection` + * :c:data:`shell_normalization_factor` Calls: diff --git a/docs/source/modules/fci.rst b/docs/source/modules/fci.rst index 76f70bc55..2e83bc322 100644 --- a/docs/source/modules/fci.rst +++ b/docs/source/modules/fci.rst @@ -86,93 +86,38 @@ Programs * :ref:`fci` * :ref:`pt2` -Providers ---------- - -.. c:var:: do_ddci - - - File : :file:`fci/class.irp.f` - - .. code:: fortran - - logical :: do_only_1h1p - logical :: do_only_cas - 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_only_cas - logical :: do_ddci - - - In the FCI case, all those are always false - - - -.. c:var:: do_only_cas - - - File : :file:`fci/class.irp.f` - - .. code:: fortran - - logical :: do_only_1h1p - logical :: do_only_cas - logical :: do_ddci - - - In the FCI case, all those are always false - - - - Subroutines / functions ----------------------- -.. c:function:: save_energy: +.. c:function:: write_c_ij_ab: - File : :file:`fci/save_energy.irp.f` + File : :file:`write_c_ij_ab.irp.f` .. code:: fortran - subroutine save_energy(E,pt2) + subroutine write_c_ij_ab - Saves the energy in |EZFIO|. Needs: .. hlist:: :columns: 3 - * :c:data:`n_states` + * :c:data:`read_wf` - Called by: + Calls: .. hlist:: :columns: 3 - * :c:func:`run_cipsi` - * :c:func:`run_stochastic_cipsi` + * :c:func:`routine` - Calls: + Touches: .. hlist:: :columns: 3 - * :c:func:`ezfio_set_fci_energy` - * :c:func:`ezfio_set_fci_energy_pt2` + * :c:data:`read_wf` diff --git a/docs/source/modules/generators_cas.rst b/docs/source/modules/generators_cas.rst index e4452acaa..d1c0f3285 100644 --- a/docs/source/modules/generators_cas.rst +++ b/docs/source/modules/generators_cas.rst @@ -17,3 +17,334 @@ the generators as the |CAS| determinants, which can be useful to define post-CAS + + +Providers +--------- + +.. c:var:: n_det_generators + + + File : :file:`generators_cas/generators.irp.f` + + .. code:: fortran + + integer :: n_det_generators + + + Number of generator detetrminants + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`act_bitmask` + * :c:data:`mpi_master` + * :c:data:`n_det` + * :c:data:`n_int` + * :c:data:`output_wall_time_0` + * :c:data:`psi_det_sorted` + * :c:data:`reunion_of_core_inact_bitmask` + * :c:data:`virt_bitmask` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`global_selection_buffer` + * :c:data:`n_det_selectors` + * :c:data:`psi_det_generators` + * :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_cas/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) + 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:`act_bitmask` + * :c:data:`n_det` + * :c:data:`n_det_generators` + * :c:data:`n_int` + * :c:data:`n_states` + * :c:data:`psi_det_size` + * :c:data:`psi_det_sorted` + * :c:data:`reunion_of_core_inact_bitmask` + * :c:data:`virt_bitmask` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`pt2_n_teeth` + * :c:data:`pt2_w` + + +.. c:var:: psi_coef_sorted_gen + + + File : :file:`generators_cas/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) + 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:`act_bitmask` + * :c:data:`n_det` + * :c:data:`n_det_generators` + * :c:data:`n_int` + * :c:data:`n_states` + * :c:data:`psi_det_size` + * :c:data:`psi_det_sorted` + * :c:data:`reunion_of_core_inact_bitmask` + * :c:data:`virt_bitmask` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`pt2_n_teeth` + * :c:data:`pt2_w` + + +.. c:var:: psi_det_generators + + + File : :file:`generators_cas/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) + 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:`act_bitmask` + * :c:data:`n_det` + * :c:data:`n_det_generators` + * :c:data:`n_int` + * :c:data:`n_states` + * :c:data:`psi_det_size` + * :c:data:`psi_det_sorted` + * :c:data:`reunion_of_core_inact_bitmask` + * :c:data:`virt_bitmask` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`pt2_n_teeth` + * :c:data:`pt2_w` + + +.. c:var:: psi_det_sorted_gen + + + File : :file:`generators_cas/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) + 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:`act_bitmask` + * :c:data:`n_det` + * :c:data:`n_det_generators` + * :c:data:`n_int` + * :c:data:`n_states` + * :c:data:`psi_det_size` + * :c:data:`psi_det_sorted` + * :c:data:`reunion_of_core_inact_bitmask` + * :c:data:`virt_bitmask` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`pt2_n_teeth` + * :c:data:`pt2_w` + + +.. c:var:: psi_det_sorted_gen_order + + + File : :file:`generators_cas/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) + 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:`act_bitmask` + * :c:data:`n_det` + * :c:data:`n_det_generators` + * :c:data:`n_int` + * :c:data:`n_states` + * :c:data:`psi_det_size` + * :c:data:`psi_det_sorted` + * :c:data:`reunion_of_core_inact_bitmask` + * :c:data:`virt_bitmask` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`pt2_n_teeth` + * :c:data:`pt2_w` + + +.. c:var:: select_max + + + File : :file:`generators_cas/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_cas/generators.irp.f` + + .. code:: fortran + + integer :: size_select_max + + + Size of the select_max array + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`select_max` + + + +Subroutines / functions +----------------------- + +.. c:function:: extract_cas: + + + File : :file:`generators_cas/extract_cas.irp.f` + + .. code:: fortran + + subroutine extract_cas + + + Replaces the total wave function by the normalized projection on the CAS. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_det` + * :c:data:`n_det_generators` + * :c:data:`n_int` + * :c:data:`n_states` + * :c:data:`psi_coef` + * :c:data:`psi_det` + * :c:data:`psi_det_generators` + + Touches: + + .. hlist:: + :columns: 3 + + * :c:data:`n_det` + * :c:data:`psi_coef` + * :c:data:`psi_det` + diff --git a/docs/source/modules/generators_full.rst b/docs/source/modules/generators_full.rst index 98546ad33..8b65f3aa0 100644 --- a/docs/source/modules/generators_full.rst +++ b/docs/source/modules/generators_full.rst @@ -42,252 +42,3 @@ Providers * :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:`global_selection_buffer` - * :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_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_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_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 index 7513caacb..b8673bd91 100644 --- a/docs/source/modules/hartree_fock.rst +++ b/docs/source/modules/hartree_fock.rst @@ -51,7 +51,6 @@ Programs -------- * :ref:`scf` - * :ref:`test` Providers --------- @@ -83,8 +82,10 @@ Providers * :c:data:`ao_overlap_abs` * :c:data:`ao_power` * :c:data:`ao_prim_num` + * :c:data:`ao_two_e_integral_alpha_chol` * :c:data:`ao_two_e_integral_schwartz` * :c:data:`ao_two_e_integrals_in_map` + * :c:data:`do_ao_cholesky` * :c:data:`do_direct_integrals` * :c:data:`is_periodic` * :c:data:`n_pt_max_integrals` @@ -92,6 +93,8 @@ Providers * :c:data:`read_ao_two_e_integrals` * :c:data:`scf_density_matrix_ao_alpha` * :c:data:`scf_density_matrix_ao_beta` + * :c:data:`use_cgtos` + * :c:data:`use_only_lr` Needed by: @@ -102,6 +105,41 @@ Providers * :c:data:`hf_energy` +.. c:var:: ao_two_e_integral_alpha_chol + + + File : :file:`hartree_fock/fock_matrix_hf.irp.f` + + .. code:: fortran + + double precision, allocatable :: ao_two_e_integral_alpha_chol (ao_num,ao_num) + double precision, allocatable :: ao_two_e_integral_beta_chol (ao_num,ao_num) + + + Alpha and Beta Fock matrices in AO basis set + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`cholesky_ao_num` + * :c:data:`elec_alpha_num` + * :c:data:`elec_beta_num` + * :c:data:`qp_max_mem` + * :c:data:`scf_density_matrix_ao` + * :c:data:`scf_density_matrix_ao_alpha` + * :c:data:`scf_density_matrix_ao_beta` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_two_e_integral_alpha` + + .. c:var:: ao_two_e_integral_beta @@ -129,8 +167,10 @@ Providers * :c:data:`ao_overlap_abs` * :c:data:`ao_power` * :c:data:`ao_prim_num` + * :c:data:`ao_two_e_integral_alpha_chol` * :c:data:`ao_two_e_integral_schwartz` * :c:data:`ao_two_e_integrals_in_map` + * :c:data:`do_ao_cholesky` * :c:data:`do_direct_integrals` * :c:data:`is_periodic` * :c:data:`n_pt_max_integrals` @@ -138,6 +178,8 @@ Providers * :c:data:`read_ao_two_e_integrals` * :c:data:`scf_density_matrix_ao_alpha` * :c:data:`scf_density_matrix_ao_beta` + * :c:data:`use_cgtos` + * :c:data:`use_only_lr` Needed by: @@ -148,6 +190,41 @@ Providers * :c:data:`hf_energy` +.. c:var:: ao_two_e_integral_beta_chol + + + File : :file:`hartree_fock/fock_matrix_hf.irp.f` + + .. code:: fortran + + double precision, allocatable :: ao_two_e_integral_alpha_chol (ao_num,ao_num) + double precision, allocatable :: ao_two_e_integral_beta_chol (ao_num,ao_num) + + + Alpha and Beta Fock matrices in AO basis set + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`cholesky_ao_num` + * :c:data:`elec_alpha_num` + * :c:data:`elec_beta_num` + * :c:data:`qp_max_mem` + * :c:data:`scf_density_matrix_ao` + * :c:data:`scf_density_matrix_ao_alpha` + * :c:data:`scf_density_matrix_ao_beta` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_two_e_integral_alpha` + + .. c:var:: extra_e_contrib_density @@ -202,6 +279,7 @@ Providers * :c:data:`fock_matrix_ao` * :c:data:`fock_matrix_mo_alpha` * :c:data:`fock_matrix_mo_beta` + * :c:data:`mcscf_fock_alpha_ao` * :c:data:`scf_energy` @@ -235,6 +313,7 @@ Providers * :c:data:`fock_matrix_ao` * :c:data:`fock_matrix_mo_alpha` * :c:data:`fock_matrix_mo_beta` + * :c:data:`mcscf_fock_alpha_ao` * :c:data:`scf_energy` @@ -266,6 +345,58 @@ Providers +.. c:var:: hf_kinetic_energy + + + File : :file:`hartree_fock/hf_energy.irp.f` + + .. code:: fortran + + double precision :: hf_kinetic_energy + double precision :: hf_n_e_energy + + + Hartree-Fock energy containing the nuclear repulsion, and its one- and two-body components. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_integrals_n_e` + * :c:data:`ao_kinetic_integrals` + * :c:data:`ao_num` + * :c:data:`scf_density_matrix_ao_alpha` + * :c:data:`scf_density_matrix_ao_beta` + + + +.. c:var:: hf_n_e_energy + + + File : :file:`hartree_fock/hf_energy.irp.f` + + .. code:: fortran + + double precision :: hf_kinetic_energy + double precision :: hf_n_e_energy + + + Hartree-Fock energy containing the nuclear repulsion, and its one- and two-body components. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_integrals_n_e` + * :c:data:`ao_kinetic_integrals` + * :c:data:`ao_num` + * :c:data:`scf_density_matrix_ao_alpha` + * :c:data:`scf_density_matrix_ao_beta` + + + .. c:var:: hf_one_electron_energy @@ -344,7 +475,6 @@ Subroutines / functions :columns: 3 * :c:data:`ao_num` - * :c:data:`ao_ortho_lowdin_coef` * :c:data:`ezfio_filename` * :c:data:`mo_coef` * :c:data:`mo_guess_type` @@ -379,3 +509,149 @@ Subroutines / functions * :c:data:`mo_coef` * :c:data:`mo_label` + +.. c:function:: main: + + + File : :file:`hartree_fock/print_scf_int.irp.f` + + .. code:: fortran + + subroutine main() + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_integrals_map` + * :c:data:`ao_num` + * :c:data:`ao_one_e_integrals` + * :c:data:`fock_matrix_ao` + * :c:data:`fock_matrix_mo_alpha` + * :c:data:`scf_density_matrix_ao_alpha` + * :c:data:`scf_density_matrix_ao_beta` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`print_scf_int` + + +.. c:function:: print_fock_diag: + + + File : :file:`hartree_fock/print_fock_diag.irp.f` + + .. code:: fortran + + subroutine print_fock_diag + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`fock_matrix_mo` + * :c:data:`mo_num` + + +.. c:function:: print_pseudo_overlap: + + + File : :file:`hartree_fock/print_pseudo_overlap.irp.f` + + .. code:: fortran + + subroutine print_pseudo_overlap + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`ao_overlap` + * :c:data:`list_core` + * :c:data:`mo_coef` + * :c:data:`mo_num` + * :c:data:`n_core_orb` + + +.. c:function:: print_scf_int: + + + File : :file:`hartree_fock/print_scf_int.irp.f` + + .. code:: fortran + + subroutine print_scf_int + + + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`main` + + +.. c:function:: run: + + + File : :file:`hartree_fock/scf.irp.f` + + .. code:: fortran + + subroutine run + + + Run SCF calculation + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`json_int_fmt` + * :c:data:`json_unit` + * :c:data:`mo_label` + * :c:data:`scf_energy` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`casscf` + * :c:func:`scf` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`ezfio_set_hartree_fock_energy` + * :c:func:`json_close` + * :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 index 2d6254190..a0f63e067 100644 --- a/docs/source/modules/iterations.rst +++ b/docs/source/modules/iterations.rst @@ -13,115 +13,141 @@ 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 +.. c:var:: energy_iterations File : :file:`iterations/iterations.irp.f` .. code:: fortran - double precision, allocatable :: extrapolated_energy (N_iter,N_states) + double precision, allocatable :: energy_iterations (n_states,N_iter_max) + double precision, allocatable :: pt2_iterations (n_states,N_iter_max) + double precision, allocatable :: extrapolated_energy (N_iter_max,N_states) - Extrapolated energy, using E_var = f(PT2) where PT2=0 + The energy at each iteration for the extrapolations Needs: .. hlist:: :columns: 3 - * :c:data:`energy_iterations` - * :c:data:`n_det` - * :c:data:`n_iter` + * :c:data:`n_iter_max` * :c:data:`n_states` - * :c:data:`pt2_iterations` -.. c:var:: n_iter +.. c:var:: extrapolated_energy - File : :file:`iterations/io.irp.f` + File : :file:`iterations/iterations.irp.f` .. code:: fortran - integer :: n_iter + double precision, allocatable :: energy_iterations (n_states,N_iter_max) + double precision, allocatable :: pt2_iterations (n_states,N_iter_max) + double precision, allocatable :: extrapolated_energy (N_iter_max,N_states) - number of iterations + The energy at each iteration for the extrapolations Needs: .. hlist:: :columns: 3 - * :c:data:`ezfio_filename` - * :c:data:`mpi_master` + * :c:data:`n_iter_max` * :c:data:`n_states` - * :c:data:`output_wall_time_0` + + + +.. c:var:: n_iter + + + File : :file:`iterations/iterations.irp.f` + + .. code:: fortran + + integer :: n_iter + + + Number of CIPSI iterations + + + +.. c:var:: n_iter_max + + + File : :file:`iterations/iterations.irp.f` + + .. code:: fortran + + integer :: n_iter_max + + + Max number of iterations for extrapolations Needed by: .. hlist:: :columns: 3 - * :c:data:`extrapolated_energy` + * :c:data:`energy_iterations` + + +.. c:var:: pt2_iterations + + + File : :file:`iterations/iterations.irp.f` + + .. code:: fortran + + double precision, allocatable :: energy_iterations (n_states,N_iter_max) + double precision, allocatable :: pt2_iterations (n_states,N_iter_max) + double precision, allocatable :: extrapolated_energy (N_iter_max,N_states) + + + The energy at each iteration for the extrapolations + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_iter_max` + * :c:data:`n_states` + Subroutines / functions ----------------------- -.. c:function:: print_extrapolated_energy: +.. c:function:: increment_n_iter: - File : :file:`iterations/print_extrapolation.irp.f` + File : :file:`iterations/iterations.irp.f` .. code:: fortran - subroutine print_extrapolated_energy + subroutine increment_n_iter(e, pt2_data) - Print the extrapolated energy in the output + Does what is necessary to increment n_iter Needs: .. hlist:: :columns: 3 - * :c:data:`extrapolated_energy` + * :c:data:`energy_iterations` * :c:data:`n_det` * :c:data:`n_iter` + * :c:data:`n_iter_max` * :c:data:`n_states` - * :c:data:`pt2_iterations` Called by: @@ -131,15 +157,22 @@ Subroutines / functions * :c:func:`run_cipsi` * :c:func:`run_stochastic_cipsi` + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`extrapolate_data` + -.. c:function:: print_summary: +.. c:function:: print_extrapolated_energy: - File : :file:`iterations/print_summary.irp.f` + File : :file:`iterations/print_extrapolation.irp.f` .. code:: fortran - subroutine print_summary(e_,pt2_data,pt2_data_err,n_det_,n_occ_pattern_,n_st,s2_) + subroutine print_extrapolated_energy Print the extrapolated energy in the output @@ -149,8 +182,10 @@ Subroutines / functions .. hlist:: :columns: 3 - * :c:data:`do_pt2` - * :c:data:`s2_eig` + * :c:data:`energy_iterations` + * :c:data:`n_det` + * :c:data:`n_iter` + * :c:data:`n_states` Called by: @@ -160,36 +195,28 @@ Subroutines / functions * :c:func:`run_cipsi` * :c:func:`run_stochastic_cipsi` - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`print_energy_components` - -.. c:function:: save_iterations: +.. c:function:: print_summary: - File : :file:`iterations/iterations.irp.f` + File : :file:`iterations/print_summary.irp.f` .. code:: fortran - subroutine save_iterations(e_, pt2_,n_) + subroutine print_summary(e_,pt2_data,pt2_data_err,n_det_,n_configuration_,n_st,s2_) - Update the energy in the EZFIO file. + Print the extrapolated energy in the output Needs: .. hlist:: :columns: 3 - * :c:data:`energy_iterations` - * :c:data:`n_det_iterations` - * :c:data:`n_iter` - * :c:data:`n_states` - * :c:data:`pt2_iterations` + * :c:data:`do_pt2` + * :c:data:`nsomomax` + * :c:data:`only_expected_s2` + * :c:data:`s2_eig` Called by: @@ -199,20 +226,26 @@ Subroutines / functions * :c:func:`run_cipsi` * :c:func:`run_stochastic_cipsi` - Calls: + +.. c:function:: print_summary_tc: - .. 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` + File : :file:`iterations/summary_tc.irp.f` + + .. code:: fortran + + subroutine print_summary_tc(e_,pt2_data,pt2_data_err,n_det_,n_configuration_,n_st,s2_) - Touches: + + Print the extrapolated energy in the output + + Needs: .. hlist:: :columns: 3 - * :c:data:`n_iter` + * :c:data:`do_pt2` + * :c:data:`nsomomax` + * :c:data:`only_expected_s2` + * :c:data:`s2_eig` diff --git a/docs/source/modules/kohn_sham.rst b/docs/source/modules/kohn_sham.rst index 333e07d8f..b78909cdf 100644 --- a/docs/source/modules/kohn_sham.rst +++ b/docs/source/modules/kohn_sham.rst @@ -46,10 +46,229 @@ Programs -------- * :ref:`ks_scf` + * :ref:`print_mos` 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_c_alpha_ao` + * :c:data:`potential_x_alpha_ao` + * :c:data:`potential_xc_alpha_ao` + * :c:data:`same_xc_func` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`fock_matrix_ao_alpha` + * :c:data:`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_c_alpha_ao` + * :c:data:`potential_x_alpha_ao` + * :c:data:`potential_xc_alpha_ao` + * :c:data:`same_xc_func` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`fock_matrix_ao_alpha` + * :c:data:`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_c` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`extra_e_contrib_density` + * :c:data:`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:`ks_energy` + + +.. c:var:: fock_matrix_alpha_no_xc_ao + + + File : :file:`fock_matrix_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_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:`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` + + .. c:var:: ks_energy @@ -90,6 +309,153 @@ Providers * :c:data:`extra_e_contrib_density` +.. c:var:: one_e_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` + + +.. c:var:: trace_potential_xc + + + 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` + + +.. c:var:: two_e_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 ----------------------- + +.. c:function:: check_coherence_functional: + + + File : :file:`ks_scf.irp.f` + + .. code:: fortran + + subroutine check_coherence_functional + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`correlation_functional` + * :c:data:`exchange_functional` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`ks_scf` + diff --git a/docs/source/modules/kohn_sham_rs.rst b/docs/source/modules/kohn_sham_rs.rst index d32fca3fc..6ef21da8c 100644 --- a/docs/source/modules/kohn_sham_rs.rst +++ b/docs/source/modules/kohn_sham_rs.rst @@ -63,264 +63,6 @@ Programs 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_c_alpha_ao` - * :c:data:`potential_x_alpha_ao` - * :c:data:`potential_xc_alpha_ao` - * :c:data:`same_xc_func` - - 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_c_alpha_ao` - * :c:data:`potential_x_alpha_ao` - * :c:data:`potential_xc_alpha_ao` - * :c:data:`same_xc_func` - - 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_c` - - 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 @@ -361,113 +103,6 @@ Providers * :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:`correlation_functional` - * :c:data:`exchange_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 index 3dde0f19d..38d7fd51f 100644 --- a/docs/source/modules/mo_basis.rst +++ b/docs/source/modules/mo_basis.rst @@ -44,6 +44,16 @@ EZFIO parameters Coefficient of the i-th |AO| on the j-th |MO| +.. option:: mo_coef_aux + + AUX Coefficient of the i-th |AO| on the j-th |MO| + + +.. option:: mo_coef_imag + + Imaginary part of the MO coefficient of the i-th |AO| on the j-th |MO| + + .. option:: mo_label Label characterizing the MOS (Local, Canonical, Natural, *etc*) @@ -54,6 +64,11 @@ EZFIO parameters |MO| occupation numbers +.. option:: mo_symmetry + + MOs with the same integer belong to the same irrep. + + .. option:: mo_class [ Core | Inactive | Active | Virtual | Deleted ], as defined by :ref:`qp_set_mo_class` @@ -88,20 +103,19 @@ Providers * :c:data:`ezfio_filename` * :c:data:`mo_num` * :c:data:`mpi_master` - * :c:data:`output_wall_time_0` Needed by: .. hlist:: :columns: 3 - * :c:data:`full_ijkl_bitmask` * :c:data:`list_act` * :c:data:`list_all_but_del_orb` * :c:data:`list_core` * :c:data:`list_del` * :c:data:`list_inact` * :c:data:`list_virt` + * :c:data:`mo_two_e_integrals_erf_in_map` * :c:data:`mo_two_e_integrals_in_map` * :c:data:`n_act_orb` * :c:data:`n_all_but_del_orb` @@ -143,27 +157,65 @@ Providers .. hlist:: :columns: 3 + * :c:data:`attachment_orbitals` + * :c:data:`cholesky_mo_transp` + * :c:data:`d0tu_alpha_ao` + * :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:`mcscf_fock_alpha_mo` * :c:data:`mo_coef_in_ao_ortho_basis` - * :c:data:`mo_coef_novirt` * :c:data:`mo_coef_transp` + * :c:data:`mo_deriv_1_x` * :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_pseudo_integrals_local` + * :c:data:`mo_pseudo_integrals_non_local` * :c:data:`mo_spread_x` - * :c:data:`mo_two_e_integral_jj_from_ao` + * :c:data:`mo_two_e_int_erf_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:`natorbsfci` * :c:data:`one_e_dm_alpha_ao_for_dft` * :c:data:`one_e_dm_alpha_ao_for_dft_no_core` * :c:data:`one_e_dm_ao_alpha` + * :c:data:`one_e_dm_ao_alpha_nstates` * :c:data:`one_e_dm_mo_alpha_for_dft` * :c:data:`one_e_dm_mo_beta_for_dft` * :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_aux + + + File : :file:`mo_basis/mos_aux.irp.f` + + .. code:: fortran + + double precision, allocatable :: mo_coef_aux (ao_num,mo_num) + + + + 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` + .. c:var:: mo_coef_imag @@ -246,9 +298,10 @@ Providers .. hlist:: :columns: 3 - * :c:data:`mo_two_e_integral_jj_from_ao` + * :c:data:`cholesky_semi_mo_transp_simple` + * :c:data:`mo_two_e_int_erf_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 @@ -311,14 +364,44 @@ Providers .. hlist:: :columns: 3 + * :c:data:`ao_one_e_integrals_from_mo` + * :c:data:`ao_ortho_canonical_nucl_elec_integrals` + * :c:data:`ao_ortho_lowdin_nucl_elec_integrals` + * :c:data:`attachment_numbers_sorted` + * :c:data:`attachment_orbitals` * :c:data:`banned_excitation` + * :c:data:`bielec_pqxx_array` + * :c:data:`bielec_pqxx_no_array` + * :c:data:`bielec_pxxq_array` + * :c:data:`bielec_pxxq_no_array` + * :c:data:`bielecci` + * :c:data:`bielecci_no` * :c:data:`big_array_coulomb_integrals` + * :c:data:`cholesky_mo` + * :c:data:`cholesky_mo_transp` + * :c:data:`cholesky_no_1_idx_transp` + * :c:data:`cholesky_no_total_transp` + * :c:data:`cholesky_semi_mo_transp_simple` * :c:data:`core_fock_operator` + * :c:data:`core_fock_operator_erf` + * :c:data:`d0tu_alpha_ao` * :c:data:`data_one_e_dm_alpha_mo` * :c:data:`data_one_e_dm_beta_mo` + * :c:data:`difference_dm` + * :c:data:`difference_dm_eigvect` + * :c:data:`eigenvectors_fock_matrix_mo` + * :c:data:`fapq` + * :c:data:`fipq` + * :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:`h_core_ri` + * :c:data:`int_erf_3_index` * :c:data:`list_act` * :c:data:`list_all_but_del_orb` * :c:data:`list_core` @@ -328,14 +411,21 @@ Providers * :c:data:`list_inact` * :c:data:`list_inact_act` * :c:data:`list_virt` + * :c:data:`lowest_super_ci_coef_mo` + * :c:data:`mcscf_fock_alpha_mo` + * :c:data:`mcscf_fock_mo` * :c:data:`mo_class` * :c:data:`mo_coef` + * :c:data:`mo_coef_aux` * :c:data:`mo_coef_begin_iteration` * :c:data:`mo_coef_imag` * :c:data:`mo_coef_in_ao_ortho_basis` * :c:data:`mo_coef_transp` + * :c:data:`mo_deriv_1_x` * :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` @@ -344,22 +434,34 @@ Providers * :c:data:`mo_one_e_integrals` * :c:data:`mo_overlap` * :c:data:`mo_pseudo_integrals` + * :c:data:`mo_pseudo_integrals_local` + * :c:data:`mo_pseudo_integrals_non_local` + * :c:data:`mo_spread_centered_x` * :c:data:`mo_spread_x` - * :c:data:`mo_two_e_integral_jj_from_ao` + * :c:data:`mo_two_e_int_erf_jj` + * :c:data:`mo_two_e_int_erf_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:`multi_s_deriv_1` + * :c:data:`multi_s_dipole_moment` * :c:data:`n_act_orb` * :c:data:`n_all_but_del_orb` + * :c:data:`n_attachment` * :c:data:`n_core_orb` * :c:data:`n_del_orb` * :c:data:`n_inact_orb` * :c:data:`n_int` * :c:data:`n_virt_orb` + * :c:data:`natorbsci_mos` + * :c:data:`natorbsfci` + * :c:data:`neworbs` + * :c:data:`occnum` * :c:data:`one_body_dm_mo_alpha_one_det` * :c:data:`one_e_dm_alpha_ao_for_dft` * :c:data:`one_e_dm_alpha_ao_for_dft_no_core` * :c:data:`one_e_dm_ao_alpha` + * :c:data:`one_e_dm_ao_alpha_nstates` * :c:data:`one_e_dm_average_alpha_mo_for_dft` * :c:data:`one_e_dm_average_beta_mo_for_dft` * :c:data:`one_e_dm_average_mo_for_dft` @@ -376,10 +478,19 @@ Providers * :c:data:`one_e_dm_mo_spin_index` * :c:data:`one_e_spin_density_ao` * :c:data:`one_e_spin_density_mo` + * :c:data:`one_e_tr_dm_mo` + * :c:data:`one_e_tr_dm_mo_alpha` + * :c:data:`one_ints_no` + * :c:data:`ormas_n_orb` * :c:data:`psi_energy_h_core` * :c:data:`s_mo_coef` - * :c:data:`singles_alpha_csc_idx` - * :c:data:`singles_beta_csc_idx` + * :c:data:`super_ci_dm` + * :c:data:`superci_natorb` + * :c:data:`switch_mo_coef` + * :c:data:`two_e_dm_mo` + * :c:data:`umat` + * :c:data:`v_ne_psi_energy` + * :c:data:`z_dipole_moment` .. c:var:: mo_occ @@ -469,12 +580,18 @@ Subroutines / functions .. hlist:: :columns: 3 - * :c:func:`four_idx_novvvv` + * :c:data:`fock_matrix_mo_alpha` + * :c:data:`fock_matrix_mo_beta` + * :c:data:`fps_spf_matrix_mo` + * :c:data:`mcscf_fock_alpha_mo` + * :c:data:`mo_deriv_1_x` * :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_pseudo_integrals_local` + * :c:data:`mo_pseudo_integrals_non_local` * :c:data:`mo_spread_x` * :c:data:`one_e_dm_mo_alpha_for_dft` * :c:data:`one_e_dm_mo_beta_for_dft` @@ -554,6 +671,7 @@ Subroutines / functions subroutine give_all_mos_at_r(r,mos_array) + mos_array(i) = ith MO function evaluated at "r" Needs: @@ -622,6 +740,16 @@ Subroutines / functions * :c:data:`mo_label` * :c:data:`mo_num` + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`create_guess` + * :c:func:`damping_scf` + * :c:func:`hcore_guess` + * :c:func:`roothaan_hall_scf` + Calls: .. hlist:: @@ -689,7 +817,9 @@ Subroutines / functions .. hlist:: :columns: 3 + * :c:func:`set_natorb_no_ov_rot` * :c:func:`set_natural_mos` + * :c:func:`set_natural_mos_canon_label` Calls: @@ -751,7 +881,6 @@ Subroutines / functions * :c:data:`ao_md5` * :c:data:`ao_num` - * :c:data:`ezfio_filename` * :c:data:`mo_class` * :c:data:`mo_coef` * :c:data:`mo_label` @@ -763,7 +892,14 @@ Subroutines / functions .. hlist:: :columns: 3 + * :c:func:`damping_scf` + * :c:func:`hcore_guess` + * :c:func:`huckel_guess` + * :c:func:`roothaan_hall_scf` + * :c:func:`run_orb_opt_trust_v2` * :c:func:`save_natural_mos` + * :c:func:`save_natural_mos_canon_label` + * :c:func:`save_natural_mos_no_ov_rot` Calls: @@ -776,7 +912,6 @@ Subroutines / functions * :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_no_occ: @@ -796,7 +931,6 @@ Subroutines / functions :columns: 3 * :c:data:`ao_num` - * :c:data:`ezfio_filename` * :c:data:`mo_coef` * :c:data:`mo_num` @@ -806,7 +940,6 @@ Subroutines / functions :columns: 3 * :c:func:`ezfio_set_mo_basis_mo_coef` - * :c:func:`system` .. c:function:: save_mos_truncated: @@ -827,7 +960,6 @@ Subroutines / functions * :c:data:`ao_md5` * :c:data:`ao_num` - * :c:data:`ezfio_filename` * :c:data:`mo_class` * :c:data:`mo_coef` * :c:data:`mo_label` @@ -844,5 +976,4 @@ Subroutines / functions * :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 index 25c9acde0..ff35a91bf 100644 --- a/docs/source/modules/mo_guess.rst +++ b/docs/source/modules/mo_guess.rst @@ -60,6 +60,7 @@ Providers * :c:data:`ao_num` * :c:data:`ao_overlap` + * :c:data:`lin_dep_cutoff` Needed by: @@ -138,9 +139,11 @@ Subroutines / functions .. hlist:: :columns: 3 + * :c:data:`ao_num` + * :c:data:`mo_coef` * :c:data:`mo_label` + * :c:data:`mo_num` * :c:data:`mo_one_e_integrals` - * :c:data:`mo_coef` Calls: @@ -148,6 +151,7 @@ Subroutines / functions :columns: 3 * :c:func:`mo_as_eigvectors_of_mo_matrix` + * :c:func:`nullify_small_elements` * :c:func:`save_mos` Touches: diff --git a/docs/source/modules/mo_one_e_ints.rst b/docs/source/modules/mo_one_e_ints.rst index 1b90c675c..f956085cb 100644 --- a/docs/source/modules/mo_one_e_ints.rst +++ b/docs/source/modules/mo_one_e_ints.rst @@ -23,12 +23,12 @@ Note that you can find other interesting integrals related to the position opera EZFIO parameters ---------------- -.. option:: mo_integrals_e_n +.. option:: mo_integrals_n_e Nucleus-electron integrals in |MO| basis set -.. option:: io_mo_integrals_e_n +.. option:: io_mo_integrals_n_e Read/Write |MO| electron-nucleus attraction integrals from/to disk [ Write | Read | None ] @@ -71,6 +71,32 @@ EZFIO parameters Providers --------- +.. c:var:: ao_one_e_integrals_from_mo + + + File : :file:`mo_one_e_ints/ao_to_mo.irp.f` + + .. code:: fortran + + double precision, allocatable :: ao_one_e_integrals_from_mo (ao_num,ao_num) + + + Integrals of the one e hamiltonian obtained from the integrals on the MO basis + + WARNING : this is equal to ao_one_e_integrals only if the AO and MO basis have the same number of functions + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`mo_num` + * :c:data:`mo_one_e_integrals` + * :c:data:`s_mo_coef` + + + .. c:var:: mo_dipole_x @@ -97,6 +123,14 @@ Providers * :c:data:`mo_coef` * :c:data:`mo_num` + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_spread_centered_x` + * :c:data:`multi_s_dipole_moment` + * :c:data:`z_dipole_moment` .. c:var:: mo_dipole_y @@ -125,6 +159,14 @@ Providers * :c:data:`mo_coef` * :c:data:`mo_num` + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_spread_centered_x` + * :c:data:`multi_s_dipole_moment` + * :c:data:`z_dipole_moment` .. c:var:: mo_dipole_z @@ -153,6 +195,14 @@ Providers * :c:data:`mo_coef` * :c:data:`mo_num` + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_spread_centered_x` + * :c:data:`multi_s_dipole_moment` + * :c:data:`z_dipole_moment` .. c:var:: mo_integrals_n_e @@ -185,6 +235,7 @@ Providers * :c:data:`mo_one_e_integrals` * :c:data:`ref_bitmask_energy` + * :c:data:`v_ne_psi_energy` .. c:var:: mo_integrals_n_e_per_atom @@ -274,8 +325,12 @@ Providers .. hlist:: :columns: 3 + * :c:data:`ao_one_e_integrals_from_mo` * :c:data:`core_energy` + * :c:data:`etwo` * :c:data:`fock_operator_closed_shell_ref_bitmask` + * :c:data:`h_core_ri` + * :c:data:`one_ints_no` * :c:data:`psi_energy_h_core` * :c:data:`ref_bitmask_energy` @@ -330,6 +385,137 @@ Providers +.. c:var:: mo_pseudo_integrals_local + + + File : :file:`mo_one_e_ints/pot_mo_pseudo_ints.irp.f` + + .. code:: fortran + + double precision, allocatable :: mo_pseudo_integrals_local (mo_num,mo_num) + + + Pseudopotential integrals in |MO| basis + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`ao_pseudo_integrals_local` + * :c:data:`do_pseudo` + * :c:data:`mo_coef` + * :c:data:`mo_num` + + + +.. c:var:: mo_pseudo_integrals_non_local + + + File : :file:`mo_one_e_ints/pot_mo_pseudo_ints.irp.f` + + .. code:: fortran + + double precision, allocatable :: mo_pseudo_integrals_non_local (mo_num,mo_num) + + + Pseudopotential integrals in |MO| basis + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`ao_pseudo_integrals_non_local` + * :c:data:`do_pseudo` + * :c:data:`mo_coef` + * :c:data:`mo_num` + + + +.. c:var:: mo_spread_centered_x + + + File : :file:`mo_one_e_ints/spread_dipole_mo.irp.f` + + .. code:: fortran + + double precision, allocatable :: mo_spread_centered_x (mo_num,mo_num) + double precision, allocatable :: mo_spread_centered_y (mo_num,mo_num) + double precision, allocatable :: mo_spread_centered_z (mo_num,mo_num) + + + array of the integrals of MO_i * (x^2 - ^2) MO_j = MO_i x^2 MO_j - (MO_i x MO_j)^2 + array of the integrals of MO_i * (y^2 - ^2) MO_j = MO_i y^2 MO_j - (MO_i y MO_j)^2 + array of the integrals of MO_i * (z^2 - ^2) MO_j = MO_i z^2 MO_j - (MO_i z MO_j)^2 + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_dipole_x` + * :c:data:`mo_num` + * :c:data:`mo_spread_x` + + + +.. c:var:: mo_spread_centered_y + + + File : :file:`mo_one_e_ints/spread_dipole_mo.irp.f` + + .. code:: fortran + + double precision, allocatable :: mo_spread_centered_x (mo_num,mo_num) + double precision, allocatable :: mo_spread_centered_y (mo_num,mo_num) + double precision, allocatable :: mo_spread_centered_z (mo_num,mo_num) + + + array of the integrals of MO_i * (x^2 - ^2) MO_j = MO_i x^2 MO_j - (MO_i x MO_j)^2 + array of the integrals of MO_i * (y^2 - ^2) MO_j = MO_i y^2 MO_j - (MO_i y MO_j)^2 + array of the integrals of MO_i * (z^2 - ^2) MO_j = MO_i z^2 MO_j - (MO_i z MO_j)^2 + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_dipole_x` + * :c:data:`mo_num` + * :c:data:`mo_spread_x` + + + +.. c:var:: mo_spread_centered_z + + + File : :file:`mo_one_e_ints/spread_dipole_mo.irp.f` + + .. code:: fortran + + double precision, allocatable :: mo_spread_centered_x (mo_num,mo_num) + double precision, allocatable :: mo_spread_centered_y (mo_num,mo_num) + double precision, allocatable :: mo_spread_centered_z (mo_num,mo_num) + + + array of the integrals of MO_i * (x^2 - ^2) MO_j = MO_i x^2 MO_j - (MO_i x MO_j)^2 + array of the integrals of MO_i * (y^2 - ^2) MO_j = MO_i y^2 MO_j - (MO_i y MO_j)^2 + array of the integrals of MO_i * (z^2 - ^2) MO_j = MO_i z^2 MO_j - (MO_i z MO_j)^2 + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_dipole_x` + * :c:data:`mo_num` + * :c:data:`mo_spread_x` + + + .. c:var:: mo_spread_x @@ -356,6 +542,12 @@ Providers * :c:data:`mo_coef` * :c:data:`mo_num` + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_spread_centered_x` .. c:var:: mo_spread_y @@ -384,6 +576,12 @@ Providers * :c:data:`mo_coef` * :c:data:`mo_num` + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_spread_centered_x` .. c:var:: mo_spread_z @@ -412,6 +610,12 @@ Providers * :c:data:`mo_coef` * :c:data:`mo_num` + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_spread_centered_x` .. c:var:: s_mo_coef @@ -436,6 +640,13 @@ Providers * :c:data:`mo_coef` * :c:data:`mo_num` + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_one_e_integrals_from_mo` + * :c:data:`fock_matrix_ao` @@ -465,6 +676,14 @@ Subroutines / functions * :c:data:`mo_num` * :c:data:`s_mo_coef` + Called by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_one_e_integrals_from_mo` + * :c:data:`fock_matrix_ao` + Calls: .. hlist:: @@ -499,6 +718,7 @@ Subroutines / functions .. hlist:: :columns: 3 + * :c:data:`d0tu_alpha_ao` * :c:data:`one_e_dm_alpha_ao_for_dft` * :c:data:`one_e_dm_alpha_ao_for_dft_no_core` @@ -537,16 +757,19 @@ Subroutines / functions .. hlist:: :columns: 3 + * :c:func:`huckel_guess` + * :c:func:`roothaan_hall_scf` * :c:func:`save_natural_mos` + * :c:func:`save_natural_mos_canon_label` + * :c:func:`save_natural_mos_no_ov_rot` + * :c:func:`scf` Calls: .. hlist:: :columns: 3 - * :c:func:`nullify_small_elements` * :c:func:`ortho_lowdin` - * :c:func:`restore_symmetry` Touches: diff --git a/docs/source/modules/mo_two_e_ints.rst b/docs/source/modules/mo_two_e_ints.rst index a08e38684..115229d54 100644 --- a/docs/source/modules/mo_two_e_ints.rst +++ b/docs/source/modules/mo_two_e_ints.rst @@ -31,18 +31,36 @@ The conventions are: EZFIO parameters ---------------- +.. option:: io_mo_cholesky + + Read/Write |MO| Cholesky integrals from/to disk [ Write | Read | None ] + + Default: None + .. option:: io_mo_two_e_integrals Read/Write |MO| integrals from/to disk [ Write | Read | None ] Default: None +.. option:: mo_integrals_cache_shift + + Adjusts the size of the MO integrals cache. 2: 2KB, 3: 32KB, 4: 512KB, 5: 8MB, 6: 128MB, 7: 2GB, 8: 32GB, 9: 512GB + + Default: 7 + .. option:: mo_integrals_threshold If | | < `mo_integrals_threshold` then is zero Default: 1.e-15 +.. 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 --------- @@ -55,6 +73,7 @@ Providers .. code:: fortran logical, allocatable :: banned_excitation (mo_num,mo_num) + logical :: use_banned_excitation If true, the excitation is banned in the selection. Useful with local MOs. @@ -64,7 +83,6 @@ Providers .. hlist:: :columns: 3 - * :c:data:`mo_integrals_map` * :c:data:`mo_num` Needed by: @@ -88,9 +106,9 @@ Providers double precision, allocatable :: big_array_exchange_integrals (mo_num,mo_num,mo_num) - big_array_coulomb_integrals(i,j) = = (ii|jj) + big_array_coulomb_integrals(j,i,k) = = (ik|jj) - big_array_exchange_integrals(i,j) = = (ij|ij) + big_array_exchange_integrals(j,i,k) = = (ij|kj) Needs: @@ -98,6 +116,9 @@ Providers :columns: 3 * :c:data:`banned_excitation` + * :c:data:`cholesky_mo_num` + * :c:data:`cholesky_mo_transp` + * :c:data:`do_mo_cholesky` * :c:data:`mo_integrals_cache` * :c:data:`mo_integrals_cache_min` * :c:data:`mo_integrals_map` @@ -109,8 +130,12 @@ Providers .. hlist:: :columns: 3 + * :c:data:`coef_hf_selector` + * :c:data:`h_core_ri` * :c:data:`h_matrix_all_dets` * :c:data:`h_matrix_cas` + * :c:data:`h_matrix_diag_all_dets` + * :c:data:`psi_energy_two_e_trans` .. c:var:: big_array_exchange_integrals @@ -124,9 +149,9 @@ Providers double precision, allocatable :: big_array_exchange_integrals (mo_num,mo_num,mo_num) - big_array_coulomb_integrals(i,j) = = (ii|jj) + big_array_coulomb_integrals(j,i,k) = = (ik|jj) - big_array_exchange_integrals(i,j) = = (ij|ij) + big_array_exchange_integrals(j,i,k) = = (ij|kj) Needs: @@ -134,6 +159,9 @@ Providers :columns: 3 * :c:data:`banned_excitation` + * :c:data:`cholesky_mo_num` + * :c:data:`cholesky_mo_transp` + * :c:data:`do_mo_cholesky` * :c:data:`mo_integrals_cache` * :c:data:`mo_integrals_cache_min` * :c:data:`mo_integrals_map` @@ -145,8 +173,152 @@ Providers .. hlist:: :columns: 3 + * :c:data:`coef_hf_selector` + * :c:data:`h_core_ri` * :c:data:`h_matrix_all_dets` * :c:data:`h_matrix_cas` + * :c:data:`h_matrix_diag_all_dets` + * :c:data:`psi_energy_two_e_trans` + + +.. c:var:: cholesky_mo + + + File : :file:`mo_two_e_ints/cholesky.irp.f` + + .. code:: fortran + + double precision, allocatable :: cholesky_mo (mo_num,mo_num,cholesky_mo_num) + + + Cholesky vectors in MO basis + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`cholesky_mo_num` + * :c:data:`cholesky_mo_transp` + * :c:data:`mo_num` + + + +.. c:var:: cholesky_mo_num + + + File : :file:`mo_two_e_ints/cholesky.irp.f` + + .. code:: fortran + + integer :: cholesky_mo_num + + + Number of Cholesky vectors in MO basis + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`cholesky_ao_num` + * :c:data:`ezfio_work_dir` + * :c:data:`read_mo_cholesky` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`bielec_pqxx_array` + * :c:data:`bielec_pxxq_array` + * :c:data:`big_array_coulomb_integrals` + * :c:data:`cholesky_mo` + * :c:data:`cholesky_mo_transp` + * :c:data:`cholesky_no_1_idx_transp` + * :c:data:`cholesky_no_2_idx_transp` + * :c:data:`cholesky_no_total_transp` + * :c:data:`cholesky_semi_mo_transp_simple` + * :c:data:`core_fock_operator` + * :c:data:`fock_operator_closed_shell_ref_bitmask` + * :c:data:`fock_wee_closed_shell` + * :c:data:`mo_integrals_cache` + * :c:data:`mo_two_e_integrals_in_map` + * :c:data:`mo_two_e_integrals_jj` + + +.. c:var:: cholesky_mo_transp + + + File : :file:`mo_two_e_ints/cholesky.irp.f` + + .. code:: fortran + + double precision, allocatable :: cholesky_mo_transp (cholesky_mo_num,mo_num,mo_num) + + + Cholesky vectors in MO basis. Warning: it is transposed wrt cholesky_ao: + + - cholesky_ao is (ao_num^2 x cholesky_ao_num) + + - cholesky_mo_transp is (cholesky_mo_num x mo_num^2) + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`cholesky_ao_num` + * :c:data:`cholesky_mo_num` + * :c:data:`ezfio_work_dir` + * :c:data:`mo_coef` + * :c:data:`mo_num` + * :c:data:`read_mo_cholesky` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`bielec_pqxx_array` + * :c:data:`bielec_pxxq_array` + * :c:data:`big_array_coulomb_integrals` + * :c:data:`cholesky_mo` + * :c:data:`cholesky_no_1_idx_transp` + * :c:data:`cholesky_no_total_transp` + * :c:data:`cholesky_semi_mo_transp_simple` + * :c:data:`core_fock_operator` + * :c:data:`fock_operator_closed_shell_ref_bitmask` + * :c:data:`fock_wee_closed_shell` + * :c:data:`mo_integrals_cache` + * :c:data:`mo_two_e_integrals_in_map` + * :c:data:`mo_two_e_integrals_jj` + + +.. c:var:: cholesky_semi_mo_transp_simple + + + File : :file:`mo_two_e_ints/cholesky.irp.f` + + .. code:: fortran + + double precision, allocatable :: cholesky_semi_mo_transp_simple (cholesky_mo_num,ao_num,mo_num) + + + Cholesky vectors in MO basis + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`cholesky_mo_num` + * :c:data:`cholesky_mo_transp` + * :c:data:`mo_coef_transp` + * :c:data:`mo_num` + .. c:var:: core_energy @@ -174,6 +346,30 @@ Providers +.. c:var:: core_energy_erf + + + File : :file:`mo_two_e_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_core` + * :c:data:`mo_two_e_int_erf_jj` + * :c:data:`n_core_orb` + * :c:data:`nuclear_repulsion` + + + .. c:var:: core_fock_operator @@ -192,6 +388,9 @@ Providers :columns: 3 * :c:data:`banned_excitation` + * :c:data:`cholesky_mo_num` + * :c:data:`cholesky_mo_transp` + * :c:data:`do_mo_cholesky` * :c:data:`list_act` * :c:data:`list_core` * :c:data:`mo_integrals_cache` @@ -204,211 +403,267 @@ Providers -.. c:function:: insert_into_mo_integrals_map: +.. c:var:: core_fock_operator_erf - File : :file:`mo_two_e_ints/map_integrals.irp.f` + File : :file:`mo_two_e_ints/core_quantities_erf.irp.f` .. code:: fortran - subroutine insert_into_mo_integrals_map(n_integrals, & - buffer_i, buffer_values, thr) + double precision, allocatable :: core_fock_operator_erf (mo_num,mo_num) - Create new entry into MO map, or accumulate in an existing entry + this is the contribution to the Fock operator from the core electrons with the erf interaction Needs: .. hlist:: :columns: 3 - * :c:data:`mo_integrals_map` + * :c:data:`list_act` + * :c:data:`list_core` + * :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_act_orb` + * :c:data:`n_core_orb` - Called by: + + +.. c:var:: do_mo_cholesky + + + File : :file:`mo_two_e_ints/cholesky.irp.f` + + .. code:: fortran + + logical :: do_mo_cholesky + + + If True, use Cholesky vectors for MO integrals + + Needs: .. 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:data:`do_ao_cholesky` - Calls: + Needed by: .. hlist:: :columns: 3 - * :c:func:`map_update` + * :c:data:`bielec_pqxx_array` + * :c:data:`bielec_pxxq_array` + * :c:data:`big_array_coulomb_integrals` + * :c:data:`core_fock_operator` + * :c:data:`fock_operator_closed_shell_ref_bitmask` + * :c:data:`fock_wee_closed_shell` + * :c:data:`mo_integrals_cache` + * :c:data:`mo_two_e_integrals_in_map` + * :c:data:`mo_two_e_integrals_jj` -.. c:var:: mo_coef_novirt +.. c:var:: h_core_ri - File : :file:`mo_two_e_ints/four_idx_novvvv.irp.f` + File : :file:`mo_two_e_ints/core_quantities.irp.f` .. code:: fortran - double precision, allocatable :: mo_coef_novirt (ao_num,n_core_inact_act_orb) + double precision, allocatable :: h_core_ri (mo_num,mo_num) - MO coefficients without virtual MOs + Core Hamiltonian with 3-index exchange integrals: + + :math:`\tilde{h}{pq} = h_{pq} - \frac{1}{2}\sum_{k} g(pk,kq)` Needs: .. hlist:: :columns: 3 - * :c:data:`ao_num` - * :c:data:`list_core_inact_act` - * :c:data:`mo_coef` - * :c:data:`n_core_inact_act_orb` + * :c:data:`big_array_coulomb_integrals` + * :c:data:`mo_num` + * :c:data:`mo_one_e_integrals` -.. c:var:: mo_integrals_cache +.. c:function:: insert_into_mo_integrals_erf_map: - File : :file:`mo_two_e_ints/map_integrals.irp.f` + File : :file:`mo_two_e_ints/map_integrals_erf.irp.f` .. code:: fortran - double precision, allocatable :: mo_integrals_cache (0_8:128_8*128_8*128_8*128_8) + subroutine insert_into_mo_integrals_erf_map(n_integrals, & + buffer_i, buffer_values, thr) - Cache of MO integrals for fast access + Create new entry into |MO| map, or accumulate in an existing entry Needs: .. hlist:: :columns: 3 - * :c:data:`mo_integrals_cache_min` - * :c:data:`mo_integrals_map` - * :c:data:`mo_two_e_integrals_in_map` + * :c:data:`mo_integrals_erf_map` - Needed by: + Called by: .. hlist:: :columns: 3 - * :c:data:`big_array_coulomb_integrals` - * :c:data:`core_fock_operator` - * :c:data:`mo_two_e_integrals_jj` + * :c:func:`add_integrals_to_map_erf` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`map_update` -.. c:var:: mo_integrals_cache_max +.. c:function:: insert_into_mo_integrals_map: 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 + subroutine insert_into_mo_integrals_map(n_integrals, & + buffer_i, buffer_values, thr) - Min and max values of the MOs for which the integrals are in the cache + Create new entry into MO map, or accumulate in an existing entry Needs: .. hlist:: :columns: 3 - * :c:data:`elec_alpha_num` - * :c:data:`mo_num` + * :c:data:`mo_integrals_map` - Needed by: + Called 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:func:`add_integrals_to_map` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`map_update` -.. c:var:: mo_integrals_cache_max_8 +.. c:var:: int_erf_3_index - File : :file:`mo_two_e_ints/map_integrals.irp.f` + File : :file:`mo_two_e_ints/ints_erf_3_index.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 + 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) - Min and max values of the MOs for which the integrals are in the cache + 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:`elec_alpha_num` + * :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_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) - Needed by: + + 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:`big_array_coulomb_integrals` - * :c:data:`core_fock_operator` - * :c:data:`mo_integrals_cache` - * :c:data:`mo_two_e_integrals_jj` + * :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_cache_min +.. c:var:: mo_integrals_cache 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 + double precision, allocatable :: mo_integrals_cache (0_8:(1_8*mo_integrals_cache_size)**4) - Min and max values of the MOs for which the integrals are in the cache + Cache of MO integrals for fast access Needs: .. hlist:: :columns: 3 - * :c:data:`elec_alpha_num` - * :c:data:`mo_num` + * :c:data:`cholesky_mo_num` + * :c:data:`cholesky_mo_transp` + * :c:data:`do_mo_cholesky` + * :c:data:`mo_integrals_cache_min` + * :c:data:`mo_integrals_cache_shift` + * :c:data:`mo_integrals_map` + * :c:data:`mo_two_e_integrals_in_map` Needed by: .. hlist:: :columns: 3 + * :c:data:`bielecci` * :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 +.. 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 + integer :: mo_integrals_cache_min + integer :: mo_integrals_cache_max + integer :: mo_integrals_cache_size Min and max values of the MOs for which the integrals are in the cache @@ -419,6 +674,7 @@ Providers :columns: 3 * :c:data:`elec_alpha_num` + * :c:data:`mo_integrals_cache_shift` * :c:data:`mo_num` Needed by: @@ -426,29 +682,37 @@ Providers .. hlist:: :columns: 3 + * :c:data:`bielec_pqxx_array` + * :c:data:`bielec_pxxq_array` * :c:data:`big_array_coulomb_integrals` * :c:data:`core_fock_operator` + * :c:data:`fock_operator_closed_shell_ref_bitmask` + * :c:data:`fock_wee_closed_shell` * :c:data:`mo_integrals_cache` * :c:data:`mo_two_e_integrals_jj` -.. c:var:: mo_integrals_map +.. c:var:: mo_integrals_cache_min File : :file:`mo_two_e_ints/map_integrals.irp.f` .. code:: fortran - type(map_type) :: mo_integrals_map + integer :: mo_integrals_cache_min + integer :: mo_integrals_cache_max + integer :: mo_integrals_cache_size - MO integrals + 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_integrals_cache_shift` * :c:data:`mo_num` Needed by: @@ -456,221 +720,231 @@ Providers .. hlist:: :columns: 3 - * :c:data:`banned_excitation` + * :c:data:`bielec_pqxx_array` + * :c:data:`bielec_pxxq_array` * :c:data:`big_array_coulomb_integrals` * :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 +.. c:var:: mo_integrals_cache_size - File : :file:`mo_two_e_ints/mo_bi_integrals.irp.f` + File : :file:`mo_two_e_ints/map_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) + integer :: mo_integrals_cache_min + integer :: mo_integrals_cache_max + integer :: mo_integrals_cache_size - 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 + Min and max values of the MOs for which the integrals are in the cache Needs: .. hlist:: :columns: 3 - * :c:data:`ao_integrals_map` - * :c:data:`ao_integrals_threshold` - * :c:data:`ao_num` - * :c:data:`ao_two_e_integrals_in_map` - * :c:data:`do_direct_integrals` - * :c:data:`mo_coef` - * :c:data:`mo_coef_transp` + * :c:data:`elec_alpha_num` + * :c:data:`mo_integrals_cache_shift` * :c:data:`mo_num` + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`bielec_pqxx_array` + * :c:data:`bielec_pxxq_array` + * :c:data:`big_array_coulomb_integrals` + * :c:data:`core_fock_operator` + * :c:data:`fock_operator_closed_shell_ref_bitmask` + * :c:data:`fock_wee_closed_shell` + * :c:data:`mo_integrals_cache` + * :c:data:`mo_two_e_integrals_jj` -.. c:var:: mo_two_e_integrals_in_map +.. c:var:: mo_integrals_erf_cache - File : :file:`mo_two_e_ints/mo_bi_integrals.irp.f` + File : :file:`mo_two_e_ints/map_integrals_erf.irp.f` .. code:: fortran - logical :: mo_two_e_integrals_in_map + double precision, allocatable :: mo_integrals_erf_cache (0:64*64*64*64) - If True, the map of MO two-electron integrals is provided + Cache of |MO| integrals for fast access Needs: .. hlist:: :columns: 3 - * :c:data:`ao_integrals_map` - * :c:data:`ao_num` - * :c:data:`ao_two_e_integrals_in_map` - * :c:data:`ezfio_filename` - * :c:data:`full_ijkl_bitmask_4` - * :c:data:`list_core_inact_act` - * :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_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_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` - * :c:data:`mpi_master` - * :c:data:`n_core_inact_act_orb` - * :c:data:`n_int` - * :c:data:`no_vvvv_integrals` - * :c:data:`read_mo_two_e_integrals` Needed by: .. hlist:: :columns: 3 - * :c:data:`act_2_rdm_aa_mo` - * :c:data:`act_2_rdm_ab_mo` - * :c:data:`act_2_rdm_bb_mo` - * :c:data:`act_2_rdm_spin_trace_mo` - * :c:data:`big_array_coulomb_integrals` - * :c:data:`ci_electronic_energy` - * :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: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_two_e_integrals_jj +.. c:var:: mo_integrals_erf_cache_min - File : :file:`mo_two_e_ints/mo_bi_integrals.irp.f` + File : :file:`mo_two_e_ints/map_integrals_erf.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) + integer :: mo_integrals_erf_cache_min + integer :: mo_integrals_erf_cache_max - 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 + Min and max values of the MOs for which the integrals are in the cache Needs: .. hlist:: :columns: 3 - * :c:data:`banned_excitation` - * :c:data:`mo_integrals_cache` - * :c:data:`mo_integrals_cache_min` - * :c:data:`mo_integrals_map` + * :c:data:`elec_alpha_num` * :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: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_two_e_integrals_jj_anti +.. c:var:: mo_integrals_erf_map - File : :file:`mo_two_e_ints/mo_bi_integrals.irp.f` + File : :file:`mo_two_e_ints/map_integrals_erf.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) + type(map_type) :: mo_integrals_erf_map - 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 + |MO| integrals Needs: .. hlist:: :columns: 3 - * :c:data:`banned_excitation` - * :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: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_integrals_jj_anti_from_ao +.. c:var:: mo_integrals_map - File : :file:`mo_two_e_ints/mo_bi_integrals.irp.f` + File : :file:`mo_two_e_ints/map_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) + type(map_type) :: mo_integrals_map - 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 + MO integrals Needs: .. hlist:: :columns: 3 - * :c:data:`ao_integrals_map` - * :c:data:`ao_integrals_threshold` - * :c:data:`ao_num` - * :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` + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`bielec_pqxx_array` + * :c:data:`bielec_pxxq_array` + * :c:data:`bielecci` + * :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:`h_matrix_diag_all_dets` + * :c:data:`mo_integrals_cache` + * :c:data:`mo_two_e_integrals_in_map` + * :c:data:`mo_two_e_integrals_jj` + * :c:data:`psi_energy_two_e_trans` -.. c:var:: mo_two_e_integrals_jj_exchange +.. c:var:: mo_two_e_int_erf_jj - File : :file:`mo_two_e_ints/mo_bi_integrals.irp.f` + File : :file:`mo_two_e_ints/mo_bi_integrals_erf.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) + 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 @@ -682,222 +956,200 @@ Providers .. hlist:: :columns: 3 - * :c:data:`banned_excitation` - * :c:data:`mo_integrals_cache` - * :c:data:`mo_integrals_cache_min` - * :c:data:`mo_integrals_map` + * :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_in_map` + * :c:data:`mo_two_e_integrals_erf_in_map` Needed by: .. hlist:: :columns: 3 - * :c:data:`core_energy` - * :c:data:`ref_bitmask_energy` + * :c:data:`core_energy_erf` -.. c:var:: mo_two_e_integrals_jj_exchange_from_ao +.. c:var:: mo_two_e_int_erf_jj_anti - File : :file:`mo_two_e_ints/mo_bi_integrals.irp.f` + File : :file:`mo_two_e_ints/mo_bi_integrals_erf.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) + 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_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 + 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:`ao_integrals_map` - * :c:data:`ao_integrals_threshold` - * :c:data:`ao_num` - * :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_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_integrals_vv_anti_from_ao +.. c:var:: mo_two_e_int_erf_jj_anti_from_ao - File : :file:`mo_two_e_ints/mo_bi_integrals.irp.f` + File : :file:`mo_two_e_ints/mo_bi_integrals_erf.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) + 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_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 + 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_erf_map` * :c:data:`ao_integrals_threshold` * :c:data:`ao_num` - * :c:data:`ao_two_e_integrals_in_map` + * :c:data:`ao_two_e_integral_erf_schwartz` + * :c:data:`ao_two_e_integrals_erf_in_map` * :c:data:`do_direct_integrals` - * :c:data:`list_virt` * :c:data:`mo_coef` * :c:data:`mo_coef_transp` * :c:data:`mo_num` - * :c:data:`n_virt_orb` -.. c:var:: mo_two_e_integrals_vv_exchange_from_ao +.. c:var:: mo_two_e_int_erf_jj_exchange - File : :file:`mo_two_e_ints/mo_bi_integrals.irp.f` + File : :file:`mo_two_e_ints/mo_bi_integrals_erf.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) + 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_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 + 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:`ao_integrals_map` - * :c:data:`ao_integrals_threshold` - * :c:data:`ao_num` - * :c:data:`ao_two_e_integrals_in_map` - * :c:data:`do_direct_integrals` - * :c:data:`list_virt` - * :c:data:`mo_coef` - * :c:data:`mo_coef_transp` + * :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:`n_virt_orb` + * :c:data:`mo_two_e_integrals_erf_in_map` + + Needed by: + .. hlist:: + :columns: 3 + + * :c:data:`core_energy_erf` -.. c:var:: mo_two_e_integrals_vv_from_ao +.. c:var:: mo_two_e_int_erf_jj_exchange_from_ao - File : :file:`mo_two_e_ints/mo_bi_integrals.irp.f` + File : :file:`mo_two_e_ints/mo_bi_integrals_erf.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) + 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_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 + 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_erf_map` * :c:data:`ao_integrals_threshold` * :c:data:`ao_num` - * :c:data:`ao_two_e_integrals_in_map` + * :c:data:`ao_two_e_integral_erf_schwartz` + * :c:data:`ao_two_e_integrals_erf_in_map` * :c:data:`do_direct_integrals` - * :c:data:`list_virt` * :c:data:`mo_coef` * :c:data:`mo_coef_transp` * :c:data:`mo_num` - * :c:data:`n_virt_orb` - -Subroutines / functions ------------------------ - -.. c:function:: add_integrals_to_map: +.. c:var:: mo_two_e_int_erf_jj_from_ao - File : :file:`mo_two_e_ints/mo_bi_integrals.irp.f` + File : :file:`mo_two_e_ints/mo_bi_integrals_erf.irp.f` .. code:: fortran - subroutine add_integrals_to_map(mask_ijkl) + 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) - Adds integrals to tha MO map according to some bitmask + 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_two_e_integrals_in_map` + * :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_integrals_map` - * :c:data:`mo_integrals_threshold` * :c:data:`mo_num` - * :c:data:`n_int` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`four_idx_novvvv2` - * :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_no_exit_34: +.. c:var:: mo_two_e_integrals_erf_in_map - File : :file:`mo_two_e_ints/mo_bi_integrals.irp.f` + File : :file:`mo_two_e_ints/mo_bi_integrals_erf.irp.f` .. code:: fortran - subroutine add_integrals_to_map_no_exit_34(mask_ijkl) + logical :: mo_two_e_integrals_erf_in_map - Adds integrals to tha MO map according to some bitmask + If True, the map of MO two-electron integrals is provided Needs: @@ -905,39 +1157,43 @@ Subroutines / functions :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_class` * :c:data:`mo_coef` * :c:data:`mo_coef_transp` - * :c:data:`mo_integrals_map` + * :c:data:`mo_integrals_erf_map` * :c:data:`mo_integrals_threshold` * :c:data:`mo_num` + * :c:data:`mpi_master` * :c:data:`n_int` + * :c:data:`qp_max_mem` + * :c:data:`read_mo_two_e_integrals_erf` - Calls: + Needed by: .. 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: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:function:: add_integrals_to_map_three_indices: +.. c:var:: mo_two_e_integrals_in_map File : :file:`mo_two_e_ints/mo_bi_integrals.irp.f` .. code:: fortran - subroutine add_integrals_to_map_three_indices(mask_ijk) + logical :: mo_two_e_integrals_in_map - Adds integrals to tha MO map according to some bitmask + If True, the map of MO two-electron integrals is provided Needs: @@ -946,20 +1202,245 @@ Subroutines / functions * :c:data:`ao_num` * :c:data:`ao_two_e_integrals_in_map` + * :c:data:`cholesky_mo_num` + * :c:data:`cholesky_mo_transp` + * :c:data:`do_ao_cholesky` + * :c:data:`do_mo_cholesky` + * :c:data:`ezfio_filename` + * :c:data:`full_ijkl_bitmask_4` + * :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:`qp_max_mem` + * :c:data:`read_mo_two_e_integrals` - Calls: + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`act_2_rdm_aa_mo` + * :c:data:`act_2_rdm_ab_mo` + * :c:data:`act_2_rdm_bb_mo` + * :c:data:`act_2_rdm_spin_trace_mo` + * :c:data:`act_2_rdm_trans_spin_trace_mo` + * :c:data:`bielec_pqxx_array` + * :c:data:`bielec_pxxq_array` + * :c:data:`bielecci` + * :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:`h_matrix_diag_all_dets` + * :c:data:`hessmat` + * :c:data:`hessmat_peter` + * :c:data:`mo_integrals_cache` + * :c:data:`mo_two_e_integrals_jj` + * :c:data:`psi_energy_two_e_trans` + + +.. 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:`banned_excitation` + * :c:data:`cholesky_mo_num` + * :c:data:`cholesky_mo_transp` + * :c:data:`do_mo_cholesky` + * :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:`banned_excitation` + * :c:data:`cholesky_mo_num` + * :c:data:`cholesky_mo_transp` + * :c:data:`do_mo_cholesky` + * :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 + + + 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:`banned_excitation` + * :c:data:`cholesky_mo_num` + * :c:data:`cholesky_mo_transp` + * :c:data:`do_mo_cholesky` + * :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:: use_banned_excitation + + + File : :file:`mo_two_e_ints/map_integrals.irp.f` + + .. code:: fortran + + logical, allocatable :: banned_excitation (mo_num,mo_num) + logical :: use_banned_excitation + + + If true, the excitation is banned in the selection. Useful with local MOs. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_num` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`big_array_coulomb_integrals` + * :c:data:`core_fock_operator` + * :c:data:`mo_two_e_integrals_jj` + + + +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 the MO map according to some bitmask + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`ao_two_e_integrals_in_map` + * :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:`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` @@ -967,35 +1448,35 @@ Subroutines / functions * :c:func:`wall_time` -.. c:function:: ao_to_mo_novirt: +.. c:function:: add_integrals_to_map_cholesky: - File : :file:`mo_two_e_ints/four_idx_novvvv.irp.f` + File : :file:`mo_two_e_ints/mo_bi_integrals.irp.f` .. code:: fortran - subroutine ao_to_mo_novirt(A_ao,LDA_ao,A_mo,LDA_mo) + subroutine add_integrals_to_map_cholesky - Transform A from the |AO| basis to the |MO| basis excluding virtuals - - $C^\dagger.A_{ao}.C$ + Adds integrals to the MO map using Cholesky vectors Needs: .. hlist:: :columns: 3 - * :c:data:`ao_num` - * :c:data:`mo_coef_novirt` - * :c:data:`n_core_inact_act_orb` + * :c:data:`cholesky_mo_num` + * :c:data:`cholesky_mo_transp` + * :c:data:`mo_integrals_map` + * :c:data:`mo_integrals_threshold` + * :c:data:`mo_num` Called by: .. hlist:: :columns: 3 - * :c:func:`four_idx_novvvv` + * :c:data:`mo_two_e_integrals_in_map` Calls: @@ -1003,6 +1484,86 @@ Subroutines / functions :columns: 3 * :c:func:`dgemm` + * :c:func:`map_append` + * :c:func:`map_sort` + * :c:func:`map_unique` + * :c:func:`mo_two_e_integrals_index` + * :c:func:`set_multiple_levels_omp` + + +.. c:function:: add_integrals_to_map_erf: + + + File : :file:`mo_two_e_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:`ao_num` + * :c:data:`ao_two_e_integrals_in_map` + * :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` + + 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_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:: clear_mo_map: @@ -1024,204 +1585,483 @@ Subroutines / functions * :c:data:`mo_integrals_map` + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`run_orb_opt_trust_v2` + * :c:func:`update_parameters` + + 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:: four_idx_dgemm: + + + File : :file:`mo_two_e_ints/mo_bi_integrals.irp.f` + + .. code:: fortran + + subroutine four_idx_dgemm + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`ao_two_e_integrals_in_map` + * :c:data:`mo_coef` + * :c:data:`mo_integrals_map` + * :c:data:`mo_integrals_threshold` + * :c:data:`mo_num` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_two_e_integrals_in_map` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`dgemm` + * :c:func:`get_ao_two_e_integrals` + * :c:func:`map_append` + * :c:func:`map_sort` + * :c:func:`map_unique` + * :c:func:`mo_two_e_integrals_index` + + +.. c:function:: four_idx_dgemm_erf: + + + File : :file:`mo_two_e_ints/mo_bi_integrals_erf.irp.f` + + .. code:: fortran + + subroutine four_idx_dgemm_erf + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`mo_coef` + * :c:data:`mo_integrals_erf_map` + * :c:data:`mo_integrals_threshold` + * :c:data:`mo_num` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_two_e_integrals_erf_in_map` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`dgemm` + * :c:func:`get_ao_two_e_integrals_erf` + * :c:func:`map_append` + * :c:func:`map_sort` + * :c:func:`map_unique` + * :c:func:`mo_two_e_integrals_index` + + +.. c:function:: get_mo_erf_map_size: + + + File : :file:`mo_two_e_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_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_integral_erf: + + + File : :file:`mo_two_e_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: + + + 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:`banned_excitation` + * :c:data:`cholesky_mo_num` + * :c:data:`cholesky_mo_transp` + * :c:data:`do_mo_cholesky` + * :c:data:`mo_integrals_cache` + * :c:data:`mo_integrals_cache_min` + * :c:data:`mo_num` + * :c:data:`mo_two_e_integrals_in_map` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`get_d0` + * :c:func:`get_d1` + * :c:func:`get_mo_two_e_integrals_i1j1` + * :c:func:`get_mo_two_e_integrals_ij` + Calls: .. hlist:: :columns: 3 - * :c:func:`map_deinit` + * :c:func:`dgemv` + * :c:func:`get_mo_two_e_integrals_cache` + * :c:func:`map_get` -.. c:function:: dump_mo_integrals: +.. c:function:: get_mo_two_e_integrals_cache: File : :file:`mo_two_e_ints/map_integrals.irp.f` .. code:: fortran - subroutine dump_mo_integrals(filename) + subroutine get_mo_two_e_integrals_cache(j,k,l,sze,out_val) - Save to disk the |MO| integrals + Returns multiple integrals in the MO basis, all + i for j,k,l fixed, all integrals from the cache Needs: .. hlist:: :columns: 3 - * :c:data:`mo_integrals_map` - * :c:data:`mpi_master` + * :c:data:`mo_integrals_cache` + * :c:data:`mo_integrals_cache_min` + * :c:data:`mo_integrals_cache_shift` - Calls: + Called by: .. hlist:: :columns: 3 - * :c:func:`ezfio_set_work_empty` + * :c:func:`get_mo_two_e_integrals` + * :c:func:`get_mo_two_e_integrals_i1j1` + * :c:func:`get_mo_two_e_integrals_ij` -.. c:function:: four_idx_novvvv: +.. c:function:: get_mo_two_e_integrals_coulomb_ii: - File : :file:`mo_two_e_ints/four_idx_novvvv.irp.f` + File : :file:`mo_two_e_ints/map_integrals.irp.f` .. code:: fortran - subroutine four_idx_novvvv + subroutine get_mo_two_e_integrals_coulomb_ii(k,l,sze,out_val,map) - Retransform MO integrals for next CAS-SCF step + 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:`ao_integrals_map` - * :c:data:`ao_num` - * :c:data:`list_core_inact_act` - * :c:data:`mo_integrals_map` - * :c:data:`mo_integrals_threshold` + * :c:data:`cholesky_mo_num` + * :c:data:`cholesky_mo_transp` + * :c:data:`do_mo_cholesky` + * :c:data:`mo_integrals_cache_min` * :c:data:`mo_num` - * :c:data:`n_core_inact_act_orb` + * :c:data:`mo_two_e_integrals_in_map` Called by: .. hlist:: :columns: 3 - * :c:data:`mo_two_e_integrals_in_map` + * :c:data:`fock_operator_closed_shell_ref_bitmask` + * :c:data:`fock_wee_closed_shell` Calls: .. hlist:: :columns: 3 - * :c:func:`ao_to_mo` - * :c:func:`ao_to_mo_novirt` - * :c:func:`map_append` - * :c:func:`map_shrink` - * :c:func:`map_sort` - * :c:func:`map_unique` - * :c:func:`two_e_integrals_index` + * :c:func:`dgemv` -.. c:function:: four_idx_novvvv2: +.. c:function:: get_mo_two_e_integrals_erf: - File : :file:`mo_two_e_ints/four_idx_novvvv.irp.f` + File : :file:`mo_two_e_ints/map_integrals_erf.irp.f` .. code:: fortran - subroutine four_idx_novvvv2 + 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:`core_inact_act_bitmask_4` - * :c:data:`full_ijkl_bitmask_4` - * :c:data:`n_int` - * :c:data:`virt_bitmask` + * :c:data:`mo_two_e_integrals_erf_in_map` Calls: .. hlist:: :columns: 3 - * :c:func:`add_integrals_to_map` + * :c:func:`map_get_many` + * :c:func:`two_e_integrals_index` -.. c:function:: get_mo_map_size: +.. c:function:: get_mo_two_e_integrals_erf_coulomb_ii: - File : :file:`mo_two_e_ints/map_integrals.irp.f` + File : :file:`mo_two_e_ints/map_integrals_erf.irp.f` .. code:: fortran - integer*8 function get_mo_map_size() + subroutine get_mo_two_e_integrals_erf_coulomb_ii(k,l,sze,out_val,map) - Return the number of elements in the MO 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_integrals_map` + * :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: +.. c:function:: get_mo_two_e_integrals_erf_exch_ii: - File : :file:`mo_two_e_ints/map_integrals.irp.f` + File : :file:`mo_two_e_ints/map_integrals_erf.irp.f` .. code:: fortran - subroutine get_mo_two_e_integrals(j,k,l,sze,out_val,map) + subroutine get_mo_two_e_integrals_erf_exch_ii(k,l,sze,out_val,map) - Returns multiple integrals in the MO basis, all - i for j,k,l fixed. + 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:`banned_excitation` - * :c:data:`mo_integrals_cache` - * :c:data:`mo_integrals_cache_min` - * :c:data:`mo_two_e_integrals_in_map` + * :c:data:`mo_two_e_integrals_erf_in_map` - Called by: + Calls: .. hlist:: :columns: 3 - * :c:func:`get_mo_two_e_integrals_i1j1` - * :c:func:`get_mo_two_e_integrals_ij` + * :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_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_integrals_erf_map` + * :c:data:`mo_two_e_integrals_erf_in_map` Calls: .. hlist:: :columns: 3 - * :c:func:`map_get` + * :c:func:`i2sort` + * :c:func:`i8sort` + * :c:func:`isort` + * :c:func:`map_get_many` + * :c:func:`two_e_integrals_index` -.. c:function:: get_mo_two_e_integrals_coulomb_ii: +.. c:function:: get_mo_two_e_integrals_erf_ij: - File : :file:`mo_two_e_ints/map_integrals.irp.f` + File : :file:`mo_two_e_ints/map_integrals_erf.irp.f` .. code:: fortran - subroutine get_mo_two_e_integrals_coulomb_ii(k,l,sze,out_val,map) + subroutine get_mo_two_e_integrals_erf_ij(k,l,sze,out_array,map) - Returns multiple integrals - k(1)i(2) 1/r12 l(1)i(2) :: out_val(i1) - for k,l fixed. + 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_in_map` + * :c:data:`mo_integrals_erf_map` + * :c:data:`mo_two_e_integrals_erf_in_map` - Called by: + Calls: .. hlist:: :columns: 3 - * :c:data:`fock_operator_closed_shell_ref_bitmask` - * :c:data:`fock_wee_closed_shell` + * :c:func:`i2sort` + * :c:func:`i8sort` + * :c:func:`isort` + * :c:func:`map_get_many` + * :c:func:`two_e_integrals_index` .. c:function:: get_mo_two_e_integrals_exch_ii: @@ -1243,6 +2083,11 @@ Subroutines / functions .. hlist:: :columns: 3 + * :c:data:`cholesky_mo_num` + * :c:data:`cholesky_mo_transp` + * :c:data:`do_mo_cholesky` + * :c:data:`mo_integrals_cache_min` + * :c:data:`mo_num` * :c:data:`mo_two_e_integrals_in_map` Called by: @@ -1273,14 +2118,28 @@ Subroutines / functions .. hlist:: :columns: 3 + * :c:data:`cholesky_mo_num` + * :c:data:`cholesky_mo_transp` + * :c:data:`do_mo_cholesky` + * :c:data:`mo_integrals_cache_min` + * :c:data:`mo_num` * :c:data:`mo_two_e_integrals_in_map` + Called by: + + .. hlist:: + :columns: 3 + + * :c:data:`bielec_pqxx_array` + Calls: .. hlist:: :columns: 3 + * :c:func:`dgemv` * :c:func:`get_mo_two_e_integrals` + * :c:func:`get_mo_two_e_integrals_cache` .. c:function:: get_mo_two_e_integrals_ij: @@ -1297,12 +2156,32 @@ Subroutines / functions i(1)j(2) 1/r12 k(1)l(2) i, j for k,l fixed. + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`cholesky_mo_num` + * :c:data:`cholesky_mo_transp` + * :c:data:`do_mo_cholesky` + * :c:data:`mo_integrals_cache_min` + * :c:data:`mo_num` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:data:`bielec_pxxq_array` + Calls: .. hlist:: :columns: 3 + * :c:func:`dgemm` * :c:func:`get_mo_two_e_integrals` + * :c:func:`get_mo_two_e_integrals_cache` .. c:function:: get_two_e_integral: @@ -1323,6 +2202,9 @@ Subroutines / functions :columns: 3 * :c:data:`banned_excitation` + * :c:data:`cholesky_mo_num` + * :c:data:`cholesky_mo_transp` + * :c:data:`do_mo_cholesky` * :c:data:`mo_integrals_cache` * :c:data:`mo_integrals_cache_min` * :c:data:`mo_two_e_integrals_in_map` @@ -1336,6 +2218,28 @@ Subroutines / functions * :c:func:`two_e_integrals_index` +.. c:function:: get_two_e_integral_cache: + + + File : :file:`mo_two_e_ints/map_integrals.irp.f` + + .. code:: fortran + + double precision function get_two_e_integral_cache(i,j,k,l) + + + Returns one integral in the MO basis taken from the cache + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_integrals_cache` + * :c:data:`mo_integrals_cache_min` + * :c:data:`mo_integrals_cache_shift` + + .. c:function:: load_mo_integrals: @@ -1357,6 +2261,37 @@ Subroutines / functions Calls: + .. hlist:: + :columns: 3 + + * :c:func:`cache_map_reallocate` + * :c:func:`lock_io` + * :c:func:`map_deinit` + * :c:func:`map_sort` + * :c:func:`unlock_io` + + +.. c:function:: load_mo_integrals_erf: + + + File : :file:`mo_two_e_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 @@ -1387,6 +2322,41 @@ Subroutines / functions * :c:data:`mo_two_e_integrals_in_map` +.. c:function:: mo_two_e_integral_erf: + + + File : :file:`mo_two_e_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_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:: mo_two_e_integrals_index: @@ -1405,6 +2375,91 @@ Subroutines / functions :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:func:`add_integrals_to_map_cholesky` + * :c:func:`add_integrals_to_map_erf` + * :c:func:`four_idx_dgemm` + * :c:func:`four_idx_dgemm_erf` + + +.. c:function:: provide_all_mo_integrals_erf: + + + File : :file:`mo_two_e_ints/mo_bi_integrals_erf.irp.f` + + .. code:: fortran + + subroutine provide_all_mo_integrals_erf + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`mo_integrals_erf_map` + * :c:data:`mo_two_e_int_erf_jj` + * :c:data:`mo_two_e_int_erf_jj` + * :c:data:`mo_two_e_int_erf_jj` + * :c:data:`mo_two_e_integrals_erf_in_map` + + +.. c:function:: save_erf_two_e_integrals_mo: + + + File : :file:`mo_two_e_ints/routines_save_integrals_erf.irp.f` + + .. code:: fortran + + subroutine save_erf_two_e_integrals_mo + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ezfio_filename` + * :c:data:`mo_integrals_erf_map` + * :c:data:`mo_two_e_integrals_erf_in_map` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`ezfio_set_mo_two_e_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_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:`ezfio_filename` + * :c:data:`mo_integrals_erf_map` + * :c:data:`mo_two_e_integrals_erf_in_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/mpi.rst b/docs/source/modules/mpi.rst index 2f25799ea..17a120bab 100644 --- a/docs/source/modules/mpi.rst +++ b/docs/source/modules/mpi.rst @@ -59,19 +59,39 @@ Providers .. hlist:: :columns: 3 + * :c:data:`absolute_eig` + * :c:data:`act_mos_opt` + * :c:data:`adaptive_pt2_max` * :c:data:`ao_cartesian` + * :c:data:`ao_cholesky_threshold` * :c:data:`ao_coef` * :c:data:`ao_expo` + * :c:data:`ao_expo_im` + * :c:data:`ao_expo_phase` + * :c:data:`ao_expo_pw` * :c:data:`ao_integrals_threshold` * :c:data:`ao_md5` + * :c:data:`ao_normalized` * :c:data:`ao_nucl` * :c:data:`ao_num` + * :c:data:`ao_one_e_integrals_threshold` + * :c:data:`ao_ortho_canonical_coef` * :c:data:`ao_power` * :c:data:`ao_prim_num` * :c:data:`ao_two_e_integrals_in_map` - * :c:data:`cas_bitmask` + * :c:data:`avoid_saddle` + * :c:data:`basis` + * :c:data:`basis_nucleus_index` + * :c:data:`calc_dipole_moment` + * :c:data:`calc_energy_components` + * :c:data:`calc_osc_str` + * :c:data:`calc_tr_dipole_moment` * :c:data:`ci_energy` * :c:data:`correlation_energy_ratio_max` + * :c:data:`correlation_functional` + * :c:data:`criterion_casscf` + * :c:data:`csf_based` + * :c:data:`damping_for_rs_dft` * :c:data:`data_energy_proj` * :c:data:`data_energy_var` * :c:data:`data_one_e_dm_alpha_ao` @@ -79,63 +99,90 @@ Providers * :c:data:`data_one_e_dm_beta_ao` * :c:data:`data_one_e_dm_beta_mo` * :c:data:`davidson_sze_max` - * :c:data:`disk_access_nuclear_repulsion` + * :c:data:`density_for_dft` + * :c:data:`diag_hess_cas` * :c:data:`disk_based_davidson` * :c:data:`distributed_davidson` - * :c:data:`do_direct_integrals` + * :c:data:`do_ao_cholesky` + * :c:data:`do_mom` + * :c:data:`do_ormas` * :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:`exchange_functional` + * :c:data:`excitation_alpha_max` + * :c:data:`excitation_beta_max` + * :c:data:`excitation_max` + * :c:data:`excitation_ref` + * :c:data:`fast_2rdm` * :c:data:`frozen_orb_scf` - * :c:data:`generators_bitmask` - * :c:data:`generators_bitmask_restart` * :c:data:`h0_type` - * :c:data:`io_ao_integrals_e_n` + * :c:data:`hess_cv_cv` + * :c:data:`hf_exchange` + * :c:data:`io_ao_cholesky` * :c:data:`io_ao_integrals_kinetic` + * :c:data:`io_ao_integrals_n_e` * :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_cholesky` * :c:data:`io_mo_integrals_kinetic` + * :c:data:`io_mo_integrals_n_e` * :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:`io_nuclear_repulsion` + * :c:data:`io_two_body_rdm_aa` + * :c:data:`io_two_body_rdm_ab` + * :c:data:`io_two_body_rdm_bb` + * :c:data:`io_two_body_rdm_spin_trace` + * :c:data:`is_periodic` * :c:data:`level_shift` + * :c:data:`level_shift_casscf` + * :c:data:`lin_dep_cutoff` * :c:data:`max_dim_diis` * :c:data:`mo_class` * :c:data:`mo_coef` + * :c:data:`mo_coef_aux` + * :c:data:`mo_coef_imag` * :c:data:`mo_guess_type` + * :c:data:`mo_integrals_cache_shift` * :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_dft_type` * :c:data:`mu_erf` - * :c:data:`n_cas_bitmask` + * :c:data:`n_act_orb` + * :c:data:`n_big_act_orb` * :c:data:`n_core_orb` + * :c:data:`n_del_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_max_opt` * :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_inact_orb` * :c:data:`n_int` * :c:data:`n_it_scf_max` - * :c:data:`n_iter` + * :c:data:`n_pts_charge` * :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:`n_virt_orb` + * :c:data:`nb_it_max_lambda` + * :c:data:`nb_it_max_pre_search` + * :c:data:`no_core_density` + * :c:data:`no_oa_or_av_opt` + * :c:data:`normalize_dm` * :c:data:`nthreads_davidson` * :c:data:`nthreads_pt2` * :c:data:`nucl_charge` @@ -144,7 +191,22 @@ Providers * :c:data:`nucl_label` * :c:data:`nucl_num` * :c:data:`nuclear_repulsion` + * :c:data:`nucleus_shell_num` * :c:data:`only_expected_s2` + * :c:data:`optimization_max_nb_iter` + * :c:data:`optimization_method` + * :c:data:`ormas_max_e` + * :c:data:`ormas_min_e` + * :c:data:`ormas_mstart` + * :c:data:`ormas_n_space` + * :c:data:`point_charges` + * :c:data:`prim_coef` + * :c:data:`prim_expo` + * :c:data:`prim_normalization_factor` + * :c:data:`prim_num` + * :c:data:`primitives_normalized` + * :c:data:`print_all_transitions` + * :c:data:`pruning` * :c:data:`pseudo_dz_k` * :c:data:`pseudo_dz_kl` * :c:data:`pseudo_grid_rmax` @@ -166,25 +228,59 @@ Providers * :c:data:`psi_det_size` * :c:data:`pt2_e0_denominator` * :c:data:`pt2_f` - * :c:data:`pt2_iterations` * :c:data:`pt2_max` + * :c:data:`pt2_min_casscf` + * :c:data:`pt2_min_parallel_tasks` * :c:data:`pt2_n_teeth` * :c:data:`pt2_relative_error` + * :c:data:`pts_charge_coord` + * :c:data:`pts_charge_z` * :c:data:`qp_max_mem` * :c:data:`read_wf` + * :c:data:`restore_symm` * :c:data:`s2_eig` + * :c:data:`save_threshold` + * :c:data:`save_wf_after_selection` * :c:data:`scf_algorithm` * :c:data:`selection_factor` + * :c:data:`seniority_max` + * :c:data:`shell_ang_mom` + * :c:data:`shell_index` + * :c:data:`shell_normalization_factor` + * :c:data:`shell_num` + * :c:data:`shell_prim_num` + * :c:data:`small_active_space` * :c:data:`state_following` + * :c:data:`state_following_casscf` * :c:data:`target_energy` + * :c:data:`thresh_casscf` + * :c:data:`thresh_cc` + * :c:data:`thresh_delta` + * :c:data:`thresh_eig` + * :c:data:`thresh_model` + * :c:data:`thresh_model_2` + * :c:data:`thresh_opt_max_elem_grad` + * :c:data:`thresh_rho` + * :c:data:`thresh_rho_2` * :c:data:`thresh_scf` * :c:data:`thresh_sym` + * :c:data:`thresh_wtg` + * :c:data:`thresh_wtg2` * :c:data:`threshold_davidson` + * :c:data:`threshold_davidson_from_pt2` * :c:data:`threshold_diis` * :c:data:`threshold_generators` + * :c:data:`threshold_nonsym_davidson` + * :c:data:`twice_hierarchy_max` + * :c:data:`typ` + * :c:data:`use_cgtos` + * :c:data:`use_only_lr` * :c:data:`variance_max` + * :c:data:`version_avoid_saddle` + * :c:data:`version_lambda_search` * :c:data:`weight_one_e_dm` * :c:data:`weight_selection` + * :c:data:`without_diagonal` .. c:var:: mpi_rank diff --git a/docs/source/modules/nuclei.rst b/docs/source/modules/nuclei.rst index 24a7a6e68..8c70d73a8 100644 --- a/docs/source/modules/nuclei.rst +++ b/docs/source/modules/nuclei.rst @@ -49,6 +49,34 @@ EZFIO parameters Nuclear repulsion (Computed automaticaly or Read in the |EZFIO|) +.. option:: is_periodic + + If true, the calculation uses periodic boundary conditions + + Default: false + +.. option:: n_pts_charge + + Number of point charges to be added to the potential + + Default: 0 + +.. option:: pts_charge_z + + Charge associated to each point charge + + +.. option:: pts_charge_coord + + Coordinate of each point charge. + + +.. option:: point_charges + + If |true|, point charges (see nuclei/write_pt_charges.py) are added to the one-electron potential + + Default: False + Providers --------- @@ -216,6 +244,39 @@ Providers +.. c:var:: n_pts_charge + + + File : :file:`nuclei/point_charges.irp.f` + + .. code:: fortran + + integer :: n_pts_charge + + + Number of point charges to be added to the potential + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ezfio_filename` + * :c:data:`mpi_master` + * :c:data:`output_wall_time_0` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_integrals_pt_chrg` + * :c:data:`pt_chrg_interaction` + * :c:data:`pt_chrg_nuclei_interaction` + * :c:data:`pts_charge_coord` + * :c:data:`pts_charge_z` + + .. c:var:: nucl_coord @@ -245,23 +306,37 @@ Providers .. hlist:: :columns: 3 + * :c:data:`ao_2e_cgtos_schwartz` + * :c:data:`ao_coef_norm_cgtos` + * :c:data:`ao_deriv2_cgtos_x` * :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_cgtos` * :c:data:`ao_integrals_n_e_per_atom` + * :c:data:`ao_integrals_pt_chrg` * :c:data:`ao_overlap` * :c:data:`ao_overlap_abs` + * :c:data:`ao_overlap_cgtos` * :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:`cholesky_ao_num` * :c:data:`inertia_tensor` + * :c:data:`multi_s_deriv_1` + * :c:data:`multi_s_dipole_moment` * :c:data:`nucl_coord_transp` * :c:data:`nucl_dist_2` * :c:data:`nuclear_repulsion` + * :c:data:`pt_chrg_nuclei_interaction` + * :c:data:`z_dipole_moment` .. c:var:: nucl_coord_transp @@ -501,6 +576,8 @@ Providers * :c:data:`nucl_coord` * :c:data:`nucl_num` * :c:data:`output_wall_time_0` + * :c:data:`point_charges` + * :c:data:`pt_chrg_nuclei_interaction` Needed by: @@ -508,8 +585,139 @@ Providers :columns: 3 * :c:data:`ci_energy` + * :c:data:`ci_energy_no_diag` * :c:data:`core_energy` + * :c:data:`core_energy_erf` + * :c:data:`etwo` + * :c:data:`hf_energy` * :c:data:`psi_energy_with_nucl_rep` + * :c:data:`pt2_e0_denominator` + * :c:data:`scf_energy` + + +.. c:var:: pt_chrg_interaction + + + File : :file:`nuclei/point_charges.irp.f` + + .. code:: fortran + + double precision :: pt_chrg_interaction + + + Interaction between the point charges + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_pts_charge` + * :c:data:`pts_charge_coord` + * :c:data:`pts_charge_z` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`pt_chrg_nuclei_interaction` + + +.. c:var:: pt_chrg_nuclei_interaction + + + File : :file:`nuclei/point_charges.irp.f` + + .. code:: fortran + + double precision :: pt_chrg_nuclei_interaction + + + repulsion between the point charges and the nuclei + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_pts_charge` + * :c:data:`nucl_charge` + * :c:data:`nucl_coord` + * :c:data:`nucl_num` + * :c:data:`point_charges` + * :c:data:`pt_chrg_interaction` + * :c:data:`pts_charge_coord` + * :c:data:`pts_charge_z` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`nuclear_repulsion` + + +.. c:var:: pts_charge_coord + + + File : :file:`nuclei/point_charges.irp.f` + + .. code:: fortran + + double precision, allocatable :: pts_charge_coord (n_pts_charge,3) + + + Coordinates of each point charge. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ezfio_filename` + * :c:data:`mpi_master` + * :c:data:`n_pts_charge` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_integrals_pt_chrg` + * :c:data:`pt_chrg_interaction` + * :c:data:`pt_chrg_nuclei_interaction` + + +.. c:var:: pts_charge_z + + + File : :file:`nuclei/point_charges.irp.f` + + .. code:: fortran + + double precision, allocatable :: pts_charge_z (n_pts_charge) + + + Charge associated to each point charge. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ezfio_filename` + * :c:data:`mpi_master` + * :c:data:`n_pts_charge` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_integrals_pt_chrg` + * :c:data:`pt_chrg_interaction` + * :c:data:`pt_chrg_nuclei_interaction` .. c:var:: slater_bragg_radii diff --git a/docs/source/modules/perturbation.rst b/docs/source/modules/perturbation.rst index b1124aaca..6f1b02ad0 100644 --- a/docs/source/modules/perturbation.rst +++ b/docs/source/modules/perturbation.rst @@ -92,6 +92,12 @@ EZFIO parameters Default: 0.0 +.. option:: pt2_min_parallel_tasks + + Minimum number of tasks in PT2 calculation + + Default: 1 + .. option:: pt2_relative_error Stop stochastic |PT2| when the relative error is smaller than `pT2_relative_error` @@ -106,7 +112,7 @@ EZFIO parameters .. option:: h0_type - Type of denominator in PT2. [EN | SOP | HF] + Type of denominator in PT2. [EN | CFG | HF] Default: EN @@ -218,8 +224,6 @@ Subroutines / functions .. hlist:: :columns: 3 - * :c:data:`elec_alpha_num` - * :c:data:`elec_beta_num` * :c:data:`h_apply_buffer_allocated` * :c:data:`n_det` * :c:data:`n_int` @@ -257,7 +261,6 @@ Subroutines / functions * :c:data:`n_det` * :c:data:`n_det_generators` * :c:data:`n_det_selectors` - * :c:data:`n_int` * :c:data:`psi_det_generators` * :c:data:`psi_selectors` @@ -293,7 +296,6 @@ Subroutines / functions * :c:data:`n_det` * :c:data:`n_det_generators` * :c:data:`n_det_selectors` - * :c:data:`n_int` * :c:data:`psi_det_generators` * :c:data:`psi_selectors` @@ -329,7 +331,6 @@ Subroutines / functions * :c:data:`n_det` * :c:data:`n_det_generators` * :c:data:`n_det_selectors` - * :c:data:`n_int` * :c:data:`psi_det_generators` * :c:data:`psi_selectors` @@ -365,7 +366,6 @@ Subroutines / functions * :c:data:`n_det` * :c:data:`n_det_generators` * :c:data:`n_det_selectors` - * :c:data:`n_int` * :c:data:`psi_det_generators` * :c:data:`psi_selectors` @@ -401,7 +401,6 @@ Subroutines / functions * :c:data:`n_det` * :c:data:`n_det_generators` * :c:data:`n_det_selectors` - * :c:data:`n_int` * :c:data:`psi_det_generators` * :c:data:`psi_selectors` @@ -437,7 +436,6 @@ Subroutines / functions * :c:data:`n_det` * :c:data:`n_det_generators` * :c:data:`n_det_selectors` - * :c:data:`n_int` * :c:data:`psi_det_generators` * :c:data:`psi_selectors` @@ -472,7 +470,6 @@ Subroutines / functions * :c:data:`mo_num` * :c:data:`n_det_generators` * :c:data:`n_det_selectors` - * :c:data:`n_int` * :c:data:`psi_det_generators` * :c:data:`psi_selectors` @@ -509,7 +506,6 @@ Subroutines / functions * :c:data:`mo_num` * :c:data:`n_det_generators` * :c:data:`n_det_selectors` - * :c:data:`n_int` * :c:data:`psi_det_generators` * :c:data:`psi_selectors` @@ -546,7 +542,6 @@ Subroutines / functions * :c:data:`mo_num` * :c:data:`n_det_generators` * :c:data:`n_det_selectors` - * :c:data:`n_int` * :c:data:`psi_det_generators` * :c:data:`psi_selectors` @@ -583,7 +578,6 @@ Subroutines / functions * :c:data:`mo_num` * :c:data:`n_det_generators` * :c:data:`n_det_selectors` - * :c:data:`n_int` * :c:data:`psi_det_generators` * :c:data:`psi_selectors` @@ -620,7 +614,6 @@ Subroutines / functions * :c:data:`mo_num` * :c:data:`n_det_generators` * :c:data:`n_det_selectors` - * :c:data:`n_int` * :c:data:`psi_det_generators` * :c:data:`psi_selectors` @@ -657,7 +650,6 @@ Subroutines / functions * :c:data:`mo_num` * :c:data:`n_det_generators` * :c:data:`n_det_selectors` - * :c:data:`n_int` * :c:data:`psi_det_generators` * :c:data:`psi_selectors` @@ -737,7 +729,6 @@ Subroutines / functions * :c:data:`mo_num` * :c:data:`n_det_selectors` - * :c:data:`n_int` * :c:data:`psi_selectors` * :c:data:`psi_selectors_size` * :c:data:`selection_criterion` @@ -783,7 +774,6 @@ Subroutines / functions * :c:data:`mo_num` * :c:data:`n_det_selectors` - * :c:data:`n_int` * :c:data:`psi_selectors` * :c:data:`psi_selectors_size` @@ -829,7 +819,6 @@ Subroutines / functions * :c:data:`mo_num` * :c:data:`n_det_selectors` - * :c:data:`n_int` * :c:data:`psi_energy` * :c:data:`psi_selectors` * :c:data:`psi_selectors_size` @@ -876,7 +865,6 @@ Subroutines / functions * :c:data:`fock_matrix_mo` * :c:data:`mo_num` * :c:data:`n_det_selectors` - * :c:data:`n_int` * :c:data:`psi_selectors` * :c:data:`psi_selectors_size` * :c:data:`ref_bitmask` @@ -922,7 +910,6 @@ Subroutines / functions * :c:data:`mo_num` * :c:data:`n_det_selectors` - * :c:data:`n_int` * :c:data:`psi_selectors` * :c:data:`psi_selectors_size` * :c:data:`selection_criterion` diff --git a/docs/source/modules/pseudo.rst b/docs/source/modules/pseudo.rst index 8a48aa9f1..324efcd5a 100644 --- a/docs/source/modules/pseudo.rst +++ b/docs/source/modules/pseudo.rst @@ -27,7 +27,7 @@ EZFIO parameters .. option:: pseudo_n_k - Number of gaussians in the local component + Powers of r - 2 in the local component .. option:: pseudo_v_k @@ -52,7 +52,7 @@ EZFIO parameters .. option:: pseudo_n_kl - Number of functions in the non-local component + Powers of r - 2 in the non-local component .. option:: pseudo_v_kl diff --git a/docs/source/modules/scf_utils.rst b/docs/source/modules/scf_utils.rst index e822b9e6d..429db9b98 100644 --- a/docs/source/modules/scf_utils.rst +++ b/docs/source/modules/scf_utils.rst @@ -97,16 +97,58 @@ EZFIO parameters Calculated HF energy +.. option:: do_mom + + If true, this will run a MOM calculation. The overlap will be computed at each step with respect to the initial MOs. After an initial Hartree-Fock calculation, the guess can be created by swapping molecular orbitals through the qp run swap_mos command. + + Default: False + .. 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 +.. option:: no_oa_or_av_opt + + If true, you set to zero all Fock elements between the orbital set to active and all the other orbitals + + Default: False + Providers --------- +.. c:var:: all_shells_closed + + + File : :file:`scf_utils/scf_density_matrix_ao.irp.f` + + .. code:: fortran + + logical :: all_shells_closed + + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`elec_alpha_num` + * :c:data:`elec_beta_num` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`fock_matrix_ao` + * :c:data:`fock_matrix_mo` + * :c:data:`scf_density_matrix_ao` + + .. c:var:: eigenvalues_fock_matrix_ao @@ -180,10 +222,15 @@ Providers * :c:data:`level_shift` * :c:data:`list_act` * :c:data:`list_core` + * :c:data:`list_inact` + * :c:data:`list_virt` * :c:data:`mo_coef` * :c:data:`mo_num` * :c:data:`n_act_orb` * :c:data:`n_core_orb` + * :c:data:`n_inact_orb` + * :c:data:`n_virt_orb` + * :c:data:`no_oa_or_av_opt` @@ -224,7 +271,6 @@ Providers :columns: 3 * :c:func:`dgecon` - * :c:func:`dgemm` * :c:func:`dgesv` * :c:func:`dgetrf` @@ -246,9 +292,8 @@ Providers .. hlist:: :columns: 3 + * :c:data:`all_shells_closed` * :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` @@ -279,16 +324,27 @@ Providers 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 | + | Rcc | F^b | Fcv | + |-----------------------| + | F^b | Roo | F^a | + |-----------------------| + | Fcv | F^a | Rvv | + + C: Core, O: Open, V: Virtual + Rcc = Acc Fcc^a + Bcc Fcc^b + Roo = Aoo Foo^a + Boo Foo^b + Rvv = Avv Fvv^a + Bvv Fvv^b + Fcv = (F^a + F^b)/2 - F = 1/2 (Fa + Fb) + F^a: Fock matrix alpha (MO), F^b: Fock matrix beta (MO) + A,B: Coupling parameters - K = Fb - Fa + J. Chem. Phys. 133, 141102 (2010), https://doi.org/10.1063/1.3503173 + Coupling parameters from J. Chem. Phys. 125, 204110 (2006); https://doi.org/10.1063/1.2393223. + cc oo vv + A -0.5 0.5 1.5 + B 1.5 0.5 -0.5 Needs: @@ -296,6 +352,7 @@ Providers .. hlist:: :columns: 3 + * :c:data:`all_shells_closed` * :c:data:`elec_alpha_num` * :c:data:`elec_beta_num` * :c:data:`fock_matrix_mo_alpha` @@ -303,9 +360,14 @@ Providers * :c:data:`frozen_orb_scf` * :c:data:`list_act` * :c:data:`list_core` + * :c:data:`list_inact` + * :c:data:`list_virt` * :c:data:`mo_num` * :c:data:`n_act_orb` * :c:data:`n_core_orb` + * :c:data:`n_inact_orb` + * :c:data:`n_virt_orb` + * :c:data:`no_oa_or_av_opt` Needed by: @@ -330,16 +392,27 @@ Providers 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 | + | Rcc | F^b | Fcv | + |-----------------------| + | F^b | Roo | F^a | + |-----------------------| + | Fcv | F^a | Rvv | + + C: Core, O: Open, V: Virtual + Rcc = Acc Fcc^a + Bcc Fcc^b + Roo = Aoo Foo^a + Boo Foo^b + Rvv = Avv Fvv^a + Bvv Fvv^b + Fcv = (F^a + F^b)/2 - F = 1/2 (Fa + Fb) + F^a: Fock matrix alpha (MO), F^b: Fock matrix beta (MO) + A,B: Coupling parameters - K = Fb - Fa + J. Chem. Phys. 133, 141102 (2010), https://doi.org/10.1063/1.3503173 + Coupling parameters from J. Chem. Phys. 125, 204110 (2006); https://doi.org/10.1063/1.2393223. + cc oo vv + A -0.5 0.5 1.5 + B 1.5 0.5 -0.5 Needs: @@ -347,6 +420,7 @@ Providers .. hlist:: :columns: 3 + * :c:data:`all_shells_closed` * :c:data:`elec_alpha_num` * :c:data:`elec_beta_num` * :c:data:`fock_matrix_mo_alpha` @@ -354,9 +428,14 @@ Providers * :c:data:`frozen_orb_scf` * :c:data:`list_act` * :c:data:`list_core` + * :c:data:`list_inact` + * :c:data:`list_virt` * :c:data:`mo_num` * :c:data:`n_act_orb` * :c:data:`n_core_orb` + * :c:data:`n_inact_orb` + * :c:data:`n_virt_orb` + * :c:data:`no_oa_or_av_opt` Needed by: @@ -498,9 +577,8 @@ Providers .. hlist:: :columns: 3 + * :c:data:`all_shells_closed` * :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` @@ -509,6 +587,7 @@ Providers .. hlist:: :columns: 3 + * :c:data:`ao_two_e_integral_alpha_chol` * :c:data:`fps_spf_matrix_ao` @@ -539,7 +618,10 @@ Providers :columns: 3 * :c:data:`ao_two_e_integral_alpha` + * :c:data:`ao_two_e_integral_alpha_chol` * :c:data:`hf_energy` + * :c:data:`hf_kinetic_energy` + * :c:data:`mcscf_fock_alpha_ao` * :c:data:`scf_density_matrix_ao` * :c:data:`scf_energy` @@ -571,7 +653,10 @@ Providers :columns: 3 * :c:data:`ao_two_e_integral_alpha` + * :c:data:`ao_two_e_integral_alpha_chol` * :c:data:`hf_energy` + * :c:data:`hf_kinetic_energy` + * :c:data:`mcscf_fock_alpha_ao` * :c:data:`scf_density_matrix_ao` * :c:data:`scf_energy` @@ -734,6 +819,47 @@ Subroutines / functions * :c:data:`mo_coef` +.. c:function:: reorder_mo_max_overlap: + + + File : :file:`scf_utils/reorder_mo_max_overlap.irp.f` + + .. code:: fortran + + subroutine reorder_mo_max_overlap + + + routines that compute the projection of each MO of the current `mo_coef` on the space spanned by the occupied orbitals of `mo_coef_begin_iteration` + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`ao_overlap` + * :c:data:`elec_alpha_num` + * :c:data:`elec_beta_num` + * :c:data:`mo_coef` + * :c:data:`mo_coef_begin_iteration` + * :c:data:`mo_num` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`roothaan_hall_scf` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`dgemm` + * :c:func:`dsort` + + .. c:function:: roothaan_hall_scf: @@ -753,6 +879,7 @@ Subroutines / functions * :c:data:`ao_md5` * :c:data:`ao_num` + * :c:data:`do_mom` * :c:data:`eigenvectors_fock_matrix_mo` * :c:data:`fock_matrix_ao` * :c:data:`fock_matrix_ao_alpha` @@ -761,6 +888,8 @@ Subroutines / functions * :c:data:`fps_spf_matrix_ao` * :c:data:`fps_spf_matrix_mo` * :c:data:`frozen_orb_scf` + * :c:data:`json_int_fmt` + * :c:data:`json_unit` * :c:data:`level_shift` * :c:data:`max_dim_diis` * :c:data:`mo_coef` @@ -773,18 +902,31 @@ Subroutines / functions * :c:data:`thresh_scf` * :c:data:`threshold_diis_nonzero` + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`run` + Calls: .. hlist:: :columns: 3 + * :c:func:`dgemm` * :c:func:`extrapolate_fock_matrix` * :c:func:`initialize_mo_coef_begin_iteration` + * :c:func:`lock_io` * :c:func:`mo_as_eigvectors_of_mo_matrix` - * :c:func:`nullify_small_elements` * :c:func:`orthonormalize_mos` + * :c:func:`pivoted_cholesky` * :c:func:`reorder_core_orb` + * :c:func:`reorder_mo_max_overlap` + * :c:func:`restore_symmetry` * :c:func:`save_mos` + * :c:func:`sleep` + * :c:func:`unlock_io` * :c:func:`write_double` * :c:func:`write_time` diff --git a/docs/source/modules/selectors_utils.rst b/docs/source/modules/selectors_utils.rst index 9c4b3bd43..248984758 100644 --- a/docs/source/modules/selectors_utils.rst +++ b/docs/source/modules/selectors_utils.rst @@ -579,9 +579,9 @@ Subroutines / functions .. hlist:: :columns: 3 + * :c:data:`mpi_master` * :c:data:`n_det_generators` * :c:data:`zmq_state` - * :c:data:`mpi_master` .. c:function:: zmq_get_n_det_selectors: @@ -601,9 +601,9 @@ Subroutines / functions .. hlist:: :columns: 3 + * :c:data:`mpi_master` * :c:data:`n_det_selectors` * :c:data:`zmq_state` - * :c:data:`mpi_master` .. c:function:: zmq_put_n_det_generators: diff --git a/docs/source/modules/tools.rst b/docs/source/modules/tools.rst index 31769efe6..ec893ec5e 100644 --- a/docs/source/modules/tools.rst +++ b/docs/source/modules/tools.rst @@ -15,160 +15,158 @@ Useful tools are grouped in this module. Programs -------- + * :ref:`attachement_orb` + * :ref:`cas_complete` * :ref:`diagonalize_h` * :ref:`fcidump` + * :ref:`fcidump_pyscf` * :ref:`four_idx_transform` + * :ref:`guess_hcore` + * :ref:`guess_huckel` * :ref:`molden` * :ref:`print_ci_vectors` - * :ref:`print_e_conv` + * :ref:`print_detweights` + * :ref:`print_dipole` + * :ref:`print_energy` + * :ref:`print_hamiltonian` + * :ref:`print_sorted_wf_coef` + * :ref:`print_var_energy` * :ref:`print_wf` * :ref:`rotate_mos` * :ref:`save_natorb` + * :ref:`save_natorb_no_ov_rot` + * :ref:`save_natorb_no_ref` * :ref:`save_one_e_dm` * :ref:`save_ortho_mos` * :ref:`sort_by_fock_energies` + * :ref:`sort_wf` * :ref:`swap_mos` + * :ref:`truncate_wf` * :ref:`write_integrals_erf` Subroutines / functions ----------------------- -.. c:function:: print_energy: +.. c:function:: molden_attachment: - File : :file:`print_energy.irp.f` + File : :file:`attachement_orb.irp.f` .. code:: fortran - subroutine print_energy + subroutine molden_attachment - Prints the energy of the wave function stored in the |EZFIO| directory. + Produces a Molden file Needs: .. hlist:: :columns: 3 - * :c:data:`n_states` - * :c:data:`read_wf` + * :c:data:`ao_coef` + * :c:data:`ao_expo` + * :c:data:`ao_l` + * :c:data:`ao_num` + * :c:data:`ao_power` + * :c:data:`ao_prim_num` + * :c:data:`attachment_numbers_sorted` + * :c:data:`attachment_orbitals` + * :c:data:`element_name` + * :c:data:`ezfio_filename` + * :c:data:`n_attachment` + * :c:data:`nucl_charge` + * :c:data:`nucl_coord` + * :c:data:`nucl_list_shell_aos` + * :c:data:`nucl_num` - Calls: + Called by: .. hlist:: :columns: 3 - * :c:func:`run` + * :c:func:`attachement_orb` - Touches: + Calls: .. hlist:: :columns: 3 - * :c:data:`read_wf` + * :c:func:`isort` -.. c:function:: print_hamiltonian: +.. c:function:: print_exc: - File : :file:`print_hamiltonian.irp.f` + File : :file:`print_detweights.irp.f` .. code:: fortran - subroutine print_hamiltonian + subroutine print_exc() - Prints the Hamiltonian matrix defined in the space of determinants - present in the |EZFIO| directory. Needs: .. hlist:: :columns: 3 - * :c:data:`read_wf` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`run` - - Touches: - - .. hlist:: - :columns: 3 - - * :c:data:`read_wf` - - -.. c:function:: routine: - - - File : :file:`write_integrals_erf.irp.f` - - .. code:: fortran - - subroutine routine - - + * :c:data:`n_det` + * :c:data:`n_int` + * :c:data:`psi_det` Called by: .. hlist:: :columns: 3 - * :c:func:`diagonalize_h` - * :c:func:`print_ci_vectors` - * :c:func:`print_wf` - * :c:func:`write_integrals_erf` + * :c:func:`print_detweights` Calls: .. hlist:: :columns: 3 - * :c:func:`save_erf_two_e_integrals_ao` - * :c:func:`save_erf_two_e_integrals_mo` + * :c:func:`get_excitation_degree` -.. c:function:: routine_e_conv: +.. c:function:: routine_s2: - File : :file:`print_e_conv.irp.f` + File : :file:`truncate_wf.irp.f` .. code:: fortran - subroutine routine_e_conv + subroutine routine_s2 - routine called by :c:func:`print_e_conv` Needs: .. hlist:: :columns: 3 - * :c:data:`ezfio_filename` + * :c:data:`det_to_configuration` + * :c:data:`n_det` + * :c:data:`n_int` * :c:data:`n_states` + * :c:data:`psi_coef` + * :c:data:`psi_det` + * :c:data:`weight_configuration` Called by: .. hlist:: :columns: 3 - * :c:func:`print_e_conv` + * :c:func:`truncate_wf` 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:func:`save_wavefunction_general` .. c:function:: routine_save_one_e_dm: @@ -208,41 +206,3 @@ Subroutines / functions * :c:func:`ezfio_set_aux_quantities_data_one_e_dm_beta_ao` * :c:func:`ezfio_set_aux_quantities_data_one_e_dm_beta_mo` - -.. c:function:: run: - - - File : :file:`print_hamiltonian.irp.f` - - .. code:: fortran - - subroutine run - - - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`n_det` - * :c:data:`n_int` - * :c:data:`psi_det` - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`print_energy` - * :c:func:`print_hamiltonian` - * :c:func:`pt2` - * :c:func:`scf` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`i_h_j` - diff --git a/docs/source/modules/utils.rst b/docs/source/modules/utils.rst index d7d078ca4..c36f0189e 100644 --- a/docs/source/modules/utils.rst +++ b/docs/source/modules/utils.rst @@ -13,9 +13,38 @@ Contains general purpose utilities (sorting, maps, etc). +EZFIO parameters +---------------- + +.. option:: restore_symm + + If true, try to find symmetry in the MO coefficient matrices + + Default: False + + Providers --------- +.. c:var:: au_to_d + + + File : :file:`utils/units.irp.f` + + .. code:: fortran + + double precision :: ha_to_ev + double precision :: au_to_d + double precision :: planck_cte + double precision :: light_speed + double precision :: ha_to_j + double precision :: ha_to_nm + + + Some conversion between different units + + + .. c:var:: binom @@ -35,6 +64,9 @@ Providers :columns: 3 * :c:data:`binom_int` + * :c:data:`dettocsftransformationmatrix` + * :c:data:`nsomomax` + * :c:data:`psi_csf_coef` .. c:var:: binom_int @@ -57,6 +89,14 @@ Providers * :c:data:`binom` + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`dominant_dets_of_cfgs` + * :c:data:`n_dominant_dets_of_cfgs` + * :c:data:`psi_configuration_to_psi_det` .. c:var:: binom_int_transp @@ -79,6 +119,14 @@ Providers * :c:data:`binom` + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`dominant_dets_of_cfgs` + * :c:data:`n_dominant_dets_of_cfgs` + * :c:data:`psi_configuration_to_psi_det` .. c:var:: binom_transp @@ -100,6 +148,9 @@ Providers :columns: 3 * :c:data:`binom_int` + * :c:data:`dettocsftransformationmatrix` + * :c:data:`nsomomax` + * :c:data:`psi_csf_coef` .. c:var:: degree_max_integration_lebedev @@ -145,6 +196,11 @@ Providers * :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` + * :c:func:`h_u_0_nstates_openmp` + * :c:func:`h_u_0_nstates_zmq` + * :c:func:`orb_range_2_rdm_openmp` + * :c:func:`orb_range_2_rdm_state_av_openmp` + * :c:func:`orb_range_2_trans_rdm_openmp` Calls: @@ -168,186 +224,178 @@ Providers -.. c:function:: i2radix_sort: +.. c:function:: give_explicit_cpoly_and_cgaussian: - File : :file:`utils/sort.irp.f_template_644` + File : :file:`utils/cgtos_utils.irp.f` .. code:: fortran - recursive subroutine i2radix_sort(x,iorder,isize,iradix) + subroutine give_explicit_cpoly_and_cgaussian(P_new, P_center, p, fact_k, iorder, & + alpha, beta, a, b, Ae_center, Be_center, Ap_center, Bp_center, dim) - 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. + + Transforms the product of + + (x - x_Ap)^a(1) (x - x_Bp)^b(1) exp(-alpha (x - x_Ae)^2) exp(-beta (x - x_Be)^2) x + (y - y_Ap)^a(2) (y - y_Bp)^b(2) exp(-alpha (y - y_Ae)^2) exp(-beta (y - y_Be)^2) x + (z - z_Ap)^a(3) (z - z_Bp)^b(3) exp(-alpha (z - z_Ae)^2) exp(-beta (z - z_Be)^2) + + into + fact_k * [sum (l_x = 0,i_order(1)) P_new(l_x,1) * (x-P_center(1))^l_x] exp (-p (x-P_center(1))^2) + * [sum (l_y = 0,i_order(2)) P_new(l_y,2) * (y-P_center(2))^l_y] exp (-p (y-P_center(2))^2) + * [sum (l_z = 0,i_order(3)) P_new(l_z,3) * (z-P_center(3))^l_z] exp (-p (z-P_center(3))^2) + + WARNING ::: IF fact_k is too smal then: + returns a "s" function centered in zero + with an inifinite exponent and a zero polynom coef + 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` + * :c:func:`ao_2e_cgtos_schwartz_accel` + * :c:func:`ao_two_e_integral_cgtos` + * :c:func:`overlap_cgaussian_xyz` Calls: .. hlist:: :columns: 3 - * :c:func:`i2radix_sort` - * :c:func:`insertion_i2sort` + * :c:func:`cgaussian_product` + * :c:func:`multiply_cpoly` + * :c:func:`recentered_cpoly2` -.. c:function:: i8radix_sort: +.. c:function:: give_explicit_cpoly_and_cgaussian_x: - File : :file:`utils/sort.irp.f_template_644` + File : :file:`utils/cgtos_utils.irp.f` .. code:: fortran - recursive subroutine i8radix_sort(x,iorder,isize,iradix) + subroutine give_explicit_cpoly_and_cgaussian_x(P_new, P_center, p, fact_k, iorder, & + alpha, beta, a, b, Ae_center, Be_center, Ap_center, Bp_center, dim) - 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. + + Transform the product of + + (x - x_Ap)^a (x - x_Bp)^b exp(-alpha (r - Ae)^2) exp(-beta (r - Be)^2) + + into + + fact_k \sum_{i=0}^{iorder} (x - x_P)^i exp(-p (r - P)^2) + 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` + * :c:func:`overlap_cgaussian_x` Calls: .. hlist:: :columns: 3 - * :c:func:`i8radix_sort` - * :c:func:`insertion_i8sort` + * :c:func:`multiply_cpoly` + * :c:func:`recentered_cpoly2` -.. c:function:: i8radix_sort_big: +.. c:var:: ha_to_ev - File : :file:`utils/sort.irp.f_template_644` + File : :file:`utils/units.irp.f` .. 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` + double precision :: ha_to_ev + double precision :: au_to_d + double precision :: planck_cte + double precision :: light_speed + double precision :: ha_to_j + double precision :: ha_to_nm - Calls: - .. hlist:: - :columns: 3 + Some conversion between different units - * :c:func:`i8radix_sort_big` - * :c:func:`insertion_i8sort_big` -.. c:var:: inv_int +.. c:var:: ha_to_j - File : :file:`utils/util.irp.f` + File : :file:`utils/units.irp.f` .. code:: fortran - double precision, allocatable :: inv_int (128) + double precision :: ha_to_ev + double precision :: au_to_d + double precision :: planck_cte + double precision :: light_speed + double precision :: ha_to_j + double precision :: ha_to_nm - 1/i + Some conversion between different units -.. c:function:: iradix_sort: +.. c:var:: ha_to_nm - File : :file:`utils/sort.irp.f_template_644` + File : :file:`utils/units.irp.f` .. code:: fortran - recursive subroutine iradix_sort(x,iorder,isize,iradix) - + double precision :: ha_to_ev + double precision :: au_to_d + double precision :: planck_cte + double precision :: light_speed + double precision :: ha_to_j + double precision :: ha_to_nm - 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 + Some conversion between different units - * :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: + +.. c:var:: inv_int - .. hlist:: - :columns: 3 - * :c:func:`insertion_isort` - * :c:func:`iradix_sort` + File : :file:`utils/util.irp.f` - -.. c:function:: iradix_sort_big: + .. code:: fortran + double precision, allocatable :: inv_int (128) - File : :file:`utils/sort.irp.f_template_644` - .. code:: fortran + 1/i - recursive subroutine iradix_sort_big(x,iorder,isize,iradix) + +.. c:var:: light_speed - 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: + File : :file:`utils/units.irp.f` - .. hlist:: - :columns: 3 + .. code:: fortran - * :c:func:`iradix_sort_big` + double precision :: ha_to_ev + double precision :: au_to_d + double precision :: planck_cte + double precision :: light_speed + double precision :: ha_to_j + double precision :: ha_to_nm - Calls: - .. hlist:: - :columns: 3 + Some conversion between different units - * :c:func:`insertion_isort_big` - * :c:func:`iradix_sort_big` .. c:var:: n_points_integration_angular_lebedev @@ -396,27 +444,31 @@ Providers * :c:data:`ao_two_e_integrals_erf_in_map` * :c:data:`ao_two_e_integrals_in_map` + * :c:data:`cholesky_ao_num` * :c:data:`h_apply_buffer_allocated` * :c:data:`n_det` * :c:data:`nthreads_davidson` * :c:data:`nthreads_pt2` -.. c:function:: overlap_gaussian_xyz: +.. c:function:: overlap_cgaussian_xyz: - File : :file:`utils/one_e_integration.irp.f` + File : :file:`utils/cgtos_one_e.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) + subroutine overlap_cgaussian_xyz(Ae_center, Be_center, alpha, beta, power_A, power_B, & + Ap_center, Bp_center, 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 + S_x = \int (x - Ap_x)^{a_x} exp(-\alpha (x - Ae_x)^2) + (x - Bp_x)^{b_x} exp(-\beta (x - Be_x)^2) dx + + S = S_x S_y S_z + + for complex arguments Called by: @@ -424,21 +476,16 @@ Providers .. 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` + * :c:data:`ao_coef_norm_cgtos` + * :c:data:`ao_deriv2_cgtos_x` + * :c:data:`ao_overlap_cgtos` Calls: .. hlist:: :columns: 3 - * :c:func:`gaussian_product_x` - * :c:func:`give_explicit_poly_and_gaussian` + * :c:func:`give_explicit_cpoly_and_cgaussian` .. c:var:: phi_angular_integration_lebedev @@ -467,167 +514,72 @@ Providers -.. c:var:: qp_max_mem - - - File : :file:`utils/memory.irp.f` - - .. code:: fortran - - integer :: qp_max_mem - - - Maximum memory in Gb - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`mpi_master` - - Needed by: - - .. hlist:: - :columns: 3 - - * :c:data:`pt2_j` - * :c:data:`pt2_w` - - -.. c:function:: rec__quicksort: - - - File : :file:`utils/sort.irp.f_template_261` - - .. code:: fortran - - recursive subroutine rec__quicksort(x, iorder, isize, first, last, level) - - - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`quick_sort` - * :c:func:`rec__quicksort` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`rec__quicksort` - - -.. c:function:: rec_d_quicksort: - - - File : :file:`utils/sort.irp.f_template_261` - - .. code:: fortran - - recursive subroutine rec_d_quicksort(x, iorder, isize, first, last, level) - - - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`quick_dsort` - * :c:func:`rec_d_quicksort` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`rec_d_quicksort` - - -.. c:function:: rec_i2_quicksort: +.. c:var:: planck_cte - File : :file:`utils/sort.irp.f_template_261` + File : :file:`utils/units.irp.f` .. code:: fortran - recursive subroutine rec_i2_quicksort(x, iorder, isize, first, last, level) - - - - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`quick_i2sort` - * :c:func:`rec_i2_quicksort` + double precision :: ha_to_ev + double precision :: au_to_d + double precision :: planck_cte + double precision :: light_speed + double precision :: ha_to_j + double precision :: ha_to_nm - Calls: - .. hlist:: - :columns: 3 + Some conversion between different units - * :c:func:`rec_i2_quicksort` -.. c:function:: rec_i8_quicksort: +.. c:var:: qp_max_mem - File : :file:`utils/sort.irp.f_template_261` + File : :file:`utils/memory.irp.f` .. code:: fortran - recursive subroutine rec_i8_quicksort(x, iorder, isize, first, last, level) + integer :: qp_max_mem + Maximum memory in Gb - Called by: + Needs: .. hlist:: :columns: 3 - * :c:func:`quick_i8sort` - * :c:func:`rec_i8_quicksort` + * :c:data:`file_lock` + * :c:data:`mpi_master` - Calls: + Needed by: .. hlist:: :columns: 3 - * :c:func:`rec_i8_quicksort` + * :c:data:`ao_two_e_integral_alpha_chol` + * :c:data:`cholesky_ao_num` + * :c:data:`mo_two_e_integrals_erf_in_map` + * :c:data:`mo_two_e_integrals_in_map` + * :c:data:`pt2_j` + * :c:data:`pt2_w` -.. c:function:: rec_i_quicksort: +.. c:var:: shiftfact_op5_inv - File : :file:`utils/sort.irp.f_template_261` + File : :file:`utils/util.irp.f` .. code:: fortran - recursive subroutine rec_i_quicksort(x, iorder, isize, first, last, level) - - + double precision, allocatable :: shiftfact_op5_inv (128) - Called by: - - .. hlist:: - :columns: 3 - * :c:func:`quick_isort` - * :c:func:`rec_i_quicksort` - - Calls: - - .. hlist:: - :columns: 3 + + 1 / Gamma(n + 0.5) + - * :c:func:`rec_i_quicksort` .. c:var:: theta_angular_integration_lebedev @@ -713,16 +665,39 @@ Providers Subroutines / functions ----------------------- -.. c:function:: a_coef: +.. c:function:: add_cpoly: + + + File : :file:`utils/cgtos_utils.irp.f` + + .. code:: fortran + + subroutine add_cpoly(b, nb, c, nc, d, nd) + + + Add two complex polynomials + D(t) =! D(t) +( B(t) + C(t)) + + +.. c:function:: add_cpoly_multiply: - File : :file:`utils/need.irp.f` + File : :file:`utils/cgtos_utils.irp.f` .. code:: fortran - double precision function a_coef(n) + subroutine add_cpoly_multiply(b, nb, cst, d, nd) + + + Add a complex polynomial multiplied by a complex constant + D(t) =! D(t) +( cst * B(t)) + + Called by: + .. hlist:: + :columns: 3 + * :c:func:`general_primitive_integral_cgtos` .. c:function:: add_poly: @@ -793,32 +768,55 @@ Subroutines / functions -.. c:function:: b_coef: +.. c:function:: binom_func: + + + File : :file:`utils/util.irp.f` + + .. code:: fortran + + double precision function binom_func(i,j) + + + .. math :: + + \frac{i!}{j!(i-j)!} + + + +.. c:function:: cgaussian_product: - File : :file:`utils/need.irp.f` + File : :file:`utils/cgtos_utils.irp.f` .. code:: fortran - double precision function b_coef(n,u) + subroutine cgaussian_product(a, xa, b, xb, k, p, xp) + + complex Gaussian product + e^{-a (r-r_A)^2} e^{-b (r-r_B)^2} = k e^{-p (r-r_P)^2} + + Called by: + + .. hlist:: + :columns: 3 + * :c:func:`give_explicit_cpoly_and_cgaussian` -.. c:function:: binom_func: +.. c:function:: cgaussian_product_x: - File : :file:`utils/util.irp.f` + File : :file:`utils/cgtos_utils.irp.f` .. code:: fortran - double precision function binom_func(i,j) + subroutine cgaussian_product_x(a, xa, b, xb, k, p, xp) - .. math :: - - \frac{i!}{j!(i-j)!} - + complex Gaussian product in 1D. + e^{-a (x-x_A)^2} e^{-b (x-x_B)^2} = K e^{-p (x-x_P)^2} .. c:function:: check_mem: @@ -845,10 +843,20 @@ Subroutines / functions .. hlist:: :columns: 3 + * :c:data:`ao_two_e_integral_alpha_chol` * :c:func:`create_selection_buffer` + * :c:func:`dav_double_dressed` + * :c:func:`davidson_diag_csf_hjj` + * :c:func:`davidson_diag_hjj` * :c:func:`davidson_diag_hjj_sjj` + * :c:func:`davidson_diag_nonsym_hjj` + * :c:func:`davidson_general` + * :c:func:`davidson_general_diag_dressed_ext_rout_nonsym_b1space` + * :c:func:`davidson_general_ext_rout` + * :c:func:`davidson_general_ext_rout_diag_dressed` + * :c:func:`davidson_general_ext_rout_dressed` + * :c:func:`davidson_general_ext_rout_nonsym_b1space` * :c:func:`make_selection_buffer_s2` - * :c:func:`merge_selection_buffers` * :c:func:`pt2_collector` * :c:data:`pt2_j` * :c:data:`pt2_w` @@ -857,7 +865,6 @@ Subroutines / functions * :c:func:`run_slave_main` * :c:func:`run_stochastic_cipsi` * :c:func:`selection_collector` - * :c:func:`sort_selection_buffer` * :c:func:`testteethbuilding` * :c:func:`zmq_pt2` @@ -866,1355 +873,2321 @@ Subroutines / functions .. hlist:: :columns: 3 + * :c:func:`print_memory_usage` * :c:func:`resident_memory` -.. c:function:: dble_fact: +.. c:function:: check_sym: File : :file:`utils/util.irp.f` .. code:: fortran - double precision function dble_fact(n) + subroutine check_sym(A, n) -.. c:function:: dble_fact_even: +.. c:function:: cpx_erf: - File : :file:`utils/util.irp.f` + File : :file:`utils/cpx_erf.irp.f` .. code:: fortran - double precision function dble_fact_even(n) result(fact2) - + complex*16 function cpx_erf(x, y) - n!! - -.. c:function:: dble_fact_odd: - - - File : :file:`utils/util.irp.f` - - .. code:: fortran - - double precision function dble_fact_odd(n) result(fact2) - - - n!! + + compute erf(z) for z = x + i y + + REF: Abramowitz and Stegun + -.. c:function:: dble_logfact: +.. c:function:: cpx_erf_1: - File : :file:`utils/util.irp.f` + File : :file:`utils/cpx_erf.irp.f` .. code:: fortran - double precision function dble_logfact(n) result(logfact2) + complex*16 function cpx_erf_1(x, y) - n!! + + compute erf(z) for z = x + i y + + REF: Abramowitz and Stegun + -.. c:function:: ddfact2: +.. c:function:: crint: - File : :file:`utils/need.irp.f` + File : :file:`utils/cgtos_utils.irp.f` .. code:: fortran - double precision function ddfact2(n) + complex*16 function crint(n, rho) -.. c:function:: dset_order: +.. c:function:: crint_1: - File : :file:`utils/sort.irp.f_template_347` + File : :file:`utils/cpx_boys.irp.f` .. code:: fortran - subroutine dset_order(x,iorder,isize) + complex*16 function crint_1(n, rho) - 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. - Called by: + Calls: .. hlist:: :columns: 3 - * :c:data:`ao_coef_normalized_ordered` - * :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` - * :c:data:`psi_bilinear_matrix_transp_values` - * :c:data:`psi_bilinear_matrix_values` - - -.. c:function:: dset_order_big: - - - File : :file:`utils/sort.irp.f_template_412` - - .. code:: fortran - - subroutine dset_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:func:`zboysfun00_1` -.. c:function:: dsort: +.. c:function:: crint_1_vec: - File : :file:`utils/sort.irp.f_template_293` + File : :file:`utils/cpx_boys.irp.f` .. code:: fortran - subroutine dsort(x,iorder,isize) + subroutine crint_1_vec(n_max, rho, vals) - Sort array x(isize). - iorder in input should be (1,2,3,...,isize), and in output - contains the new order of the elements. Called by: .. hlist:: :columns: 3 - * :c:data:`ao_coef_normalized_ordered` - * :c:func:`make_selection_buffer_s2` - * :c:data:`psi_det_sorted` - * :c:func:`reorder_core_orb` - * :c:func:`sort_by_fock_energies` - * :c:func:`sort_selection_buffer` + * :c:func:`crint_sum` Calls: .. hlist:: :columns: 3 - * :c:func:`insertion_dsort` - * :c:func:`quick_dsort` + * :c:func:`crint_smallz_vec` + * :c:func:`zboysfun00_1` -.. c:function:: erf0: +.. c:function:: crint_2: - File : :file:`utils/need.irp.f` + File : :file:`utils/cpx_boys.irp.f` .. code:: fortran - double precision function erf0(x) + complex*16 function crint_2(n, rho) - -.. c:function:: extrapolate_data: + Calls: + .. hlist:: + :columns: 3 - File : :file:`utils/extrapolation.irp.f` + * :c:func:`zboysfun` + * :c:func:`zboysfunnrp` - .. code:: fortran + +.. c:function:: crint_2_vec: - subroutine extrapolate_data(N_data, data, pt2, output) + File : :file:`utils/cpx_boys.irp.f` - Extrapolate the data to the FCI limit + .. code:: fortran - Called by: + subroutine crint_2_vec(n_max, rho, vals) - .. hlist:: - :columns: 3 - * :c:data:`extrapolated_energy` Calls: .. hlist:: :columns: 3 - * :c:func:`get_pseudo_inverse` + * :c:func:`crint_smallz_vec` + * :c:func:`zboysfun` + * :c:func:`zboysfunnrp` -.. c:function:: f_integral: +.. c:function:: crint_quad_1: - File : :file:`utils/integration.irp.f` + File : :file:`utils/cpx_boys.irp.f` .. code:: fortran - double precision function F_integral(n,p) + subroutine crint_quad_1(n, rho, n_quad, crint_quad) - function that calculates the following integral - \int_{\-infty}^{+\infty} x^n \exp(-p x^2) dx -.. c:function:: fact: +.. c:function:: crint_quad_12: - File : :file:`utils/util.irp.f` + File : :file:`utils/cpx_boys.irp.f` .. code:: fortran - double precision function fact(n) + subroutine crint_quad_12(n, rho, n_quad, crint_quad) - n! + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`crint_quad_12_vec` -.. c:function:: find_rotation: +.. c:function:: crint_quad_12_vec: - File : :file:`utils/linear_algebra.irp.f` + File : :file:`utils/cpx_boys.irp.f` .. code:: fortran - subroutine find_rotation(A,LDA,B,m,C,n) + subroutine crint_quad_12_vec(n_max, rho, vals) - Find A.C = B Calls: .. hlist:: :columns: 3 - * :c:func:`dgemm` - * :c:func:`get_pseudo_inverse` + * :c:func:`crint_quad_12` -.. c:function:: gammln: +.. c:function:: crint_quad_2: - File : :file:`utils/need.irp.f` + File : :file:`utils/cpx_boys.irp.f` .. code:: fortran - double precision function gammln(xx) + subroutine crint_quad_2(n, rho, n_quad, crint_quad) -.. c:function:: gammp: +.. c:function:: crint_smallz: - File : :file:`utils/need.irp.f` + File : :file:`utils/cpx_boys.irp.f` .. code:: fortran - double precision function gammp(a,x) - + complex*16 function crint_smallz(n, rho) - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`gcf` - * :c:func:`gser` + Standard version of rint -.. c:function:: gaussian_product: +.. c:function:: crint_smallz_vec: - File : :file:`utils/integration.irp.f` + File : :file:`utils/cpx_boys.irp.f` .. code:: fortran - subroutine gaussian_product(a,xa,b,xb,k,p,xp) + subroutine crint_smallz_vec(n_max, rho, vals) - Gaussian product in 1D. - e^{-a (x-x_A)^2} e^{-b (x-x_B)^2} = K_{ab}^x e^{-p (x-x_P)^2} + Standard version of rint Called by: .. hlist:: :columns: 3 - * :c:func:`give_explicit_poly_and_gaussian` - * :c:func:`give_explicit_poly_and_gaussian_double` + * :c:func:`crint_1_vec` + * :c:func:`crint_2_vec` -.. c:function:: gaussian_product_x: +.. c:function:: crint_sum: - File : :file:`utils/integration.irp.f` + File : :file:`utils/cpx_boys.irp.f` .. code:: fortran - subroutine gaussian_product_x(a,xa,b,xb,k,p,xp) + complex*16 function crint_sum(n_pt_out, rho, d1) - Gaussian product in 1D. - e^{-a (x-x_A)^2} e^{-b (x-x_B)^2} = K_{ab}^x e^{-p (x-x_P)^2} - Called by: + Calls: .. hlist:: :columns: 3 - * :c:func:`overlap_gaussian_xyz` + * :c:func:`crint_1_vec` -.. c:function:: gcf: +.. c:function:: dble_fact: - File : :file:`utils/need.irp.f` + File : :file:`utils/util.irp.f` .. code:: fortran - subroutine gcf(gammcf,a,x,gln) - - - - Called by: + double precision function dble_fact(n) - .. hlist:: - :columns: 3 - * :c:func:`gammp` -.. c:function:: get_inverse: +.. c:function:: dble_fact_even: - File : :file:`utils/linear_algebra.irp.f` + File : :file:`utils/util.irp.f` .. code:: fortran - subroutine get_inverse(A,LDA,m,C,LDC) + double precision function dble_fact_even(n) result(fact2) - Returns the inverse of the square matrix A + n!! - Called by: + +.. c:function:: dble_fact_odd: - .. hlist:: - :columns: 3 - * :c:data:`ao_ortho_canonical_coef_inv` + File : :file:`utils/util.irp.f` - Calls: + .. code:: fortran - .. hlist:: - :columns: 3 + double precision function dble_fact_odd(n) result(fact2) - * :c:func:`dgetrf` - * :c:func:`dgetri` + + n!! -.. c:function:: get_pseudo_inverse: +.. c:function:: dble_logfact: - File : :file:`utils/linear_algebra.irp.f` + File : :file:`utils/util.irp.f` .. code:: fortran - subroutine get_pseudo_inverse(A,LDA,m,n,C,LDC) + double precision function dble_logfact(n) result(logfact2) - Find C = A^-1 + n!! - Called by: + +.. c:function:: derf_mu_x: - .. hlist:: - :columns: 3 - * :c:data:`ao_cart_to_sphe_inv` - * :c:func:`extrapolate_data` - * :c:func:`find_rotation` - * :c:data:`s_inv` + File : :file:`utils/util.irp.f` - Calls: + .. code:: fortran + + double precision function derf_mu_x(mu,x) - .. hlist:: - :columns: 3 - * :c:func:`dgesvd` -.. c:function:: give_explicit_poly_and_gaussian: +.. c:function:: diag_mat_per_fock_degen: - File : :file:`utils/integration.irp.f` + File : :file:`utils/block_diag_degen.irp.f` .. code:: fortran - subroutine give_explicit_poly_and_gaussian(P_new,P_center,p,fact_k,iorder,alpha,beta,a,b,A_center,B_center,dim) - - - Transforms the product of - (x-x_A)^a(1) (x-x_B)^b(1) (x-x_A)^a(2) (y-y_B)^b(2) (z-z_A)^a(3) (z-z_B)^b(3) exp(-(r-A)^2 alpha) exp(-(r-B)^2 beta) - into - fact_k * [ sum (l_x = 0,i_order(1)) P_new(l_x,1) * (x-P_center(1))^l_x ] exp (- p (x-P_center(1))^2 ) - * [ sum (l_y = 0,i_order(2)) P_new(l_y,2) * (y-P_center(2))^l_y ] exp (- p (y-P_center(2))^2 ) - * [ sum (l_z = 0,i_order(3)) P_new(l_z,3) * (z-P_center(3))^l_z ] exp (- p (z-P_center(3))^2 ) - - Called by: + subroutine diag_mat_per_fock_degen(fock_diag, mat_ref, n, thr_d, thr_nd, thr_deg, leigvec, reigvec, eigval) - .. hlist:: - :columns: 3 - * :c:func:`ao_two_e_integral` - * :c:func:`ao_two_e_integral_erf` - * :c:func:`ao_two_e_integral_schwartz_accel` - * :c:func:`ao_two_e_integral_schwartz_accel_erf` - * :c:func:`give_explicit_poly_and_gaussian_double` - * :c:func:`overlap_gaussian_xyz` + + subroutine that diagonalizes a matrix mat_ref BY BLOCK + + the blocks are defined by the elements having the SAME DEGENERACIES in the entries "fock_diag" + + examples : all elements having degeneracy 1 in fock_diag (i.e. not being degenerated) will be treated together + + : all elements having degeneracy 2 in fock_diag (i.e. two elements are equal) will be treated together + + : all elements having degeneracy 3 in fock_diag (i.e. two elements are equal) will be treated together + + etc... the advantage is to guarentee no spurious mixing because of numerical problems. + Calls: .. hlist:: :columns: 3 - * :c:func:`gaussian_product` - * :c:func:`multiply_poly` - * :c:func:`recentered_poly2` + * :c:func:`dsort` + * :c:func:`give_degen_full_list` + * :c:func:`isort` + * :c:func:`non_hrmt_bieig` -.. c:function:: give_explicit_poly_and_gaussian_double: +.. c:function:: diag_mat_per_fock_degen_core: - File : :file:`utils/integration.irp.f` + File : :file:`utils/block_diag_degen_core.irp.f` .. code:: fortran - subroutine give_explicit_poly_and_gaussian_double(P_new,P_center,p,fact_k,iorder,alpha,beta,gama,a,b,A_center,B_center,Nucl_center,dim) + subroutine diag_mat_per_fock_degen_core(fock_diag, mat_ref, listcore,ncore, n, thr_d, thr_nd, thr_deg, leigvec, reigvec, eigval) - Transforms the product of - (x-x_A)^a(1) (x-x_B)^b(1) (x-x_A)^a(2) (y-y_B)^b(2) (z-z_A)^a(3) (z-z_B)^b(3) - exp(-(r-A)^2 alpha) exp(-(r-B)^2 beta) exp(-(r-Nucl_center)^2 gama - into - fact_k * [ sum (l_x = 0,i_order(1)) P_new(l_x,1) * (x-P_center(1))^l_x ] exp (- p (x-P_center(1))^2 ) - * [ sum (l_y = 0,i_order(2)) P_new(l_y,2) * (y-P_center(2))^l_y ] exp (- p (y-P_center(2))^2 ) - * [ sum (l_z = 0,i_order(3)) P_new(l_z,3) * (z-P_center(3))^l_z ] exp (- p (z-P_center(3))^2 ) + subroutine that diagonalizes a matrix mat_ref BY BLOCK + + the blocks are defined by the elements having the SAME DEGENERACIES in the entries "fock_diag" + + the elements of listcore are untouched + + examples : all elements having degeneracy 1 in fock_diag (i.e. not being degenerated) will be treated together + + : all elements having degeneracy 2 in fock_diag (i.e. two elements are equal) will be treated together + + : all elements having degeneracy 3 in fock_diag (i.e. two elements are equal) will be treated together + + etc... the advantage is to guarentee no spurious mixing because of numerical problems. + Calls: .. hlist:: :columns: 3 - * :c:func:`gaussian_product` - * :c:func:`give_explicit_poly_and_gaussian` + * :c:func:`dsort` + * :c:func:`give_degen_full_listcore` + * :c:func:`isort` + * :c:func:`non_hrmt_bieig` -.. c:function:: give_explicit_poly_and_gaussian_x: +.. c:function:: diag_nonsym_right: - File : :file:`utils/integration.irp.f` + File : :file:`utils/linear_algebra.irp.f` .. code:: fortran - subroutine give_explicit_poly_and_gaussian_x(P_new,P_center,p,fact_k,iorder,alpha,beta,a,b,A_center,B_center,dim) + subroutine diag_nonsym_right(n, A, A_ldim, V, V_ldim, energy, E_ldim) - Transform the product of - (x-x_A)^a(1) (x-x_B)^b(1) (x-x_A)^a(2) (y-y_B)^b(2) (z-z_A)^a(3) (z-z_B)^b(3) exp(-(r-A)^2 alpha) exp(-(r-B)^2 beta) - into - fact_k (x-x_P)^iorder(1) (y-y_P)^iorder(2) (z-z_P)^iorder(3) exp(-p(r-P)^2) Called by: .. hlist:: :columns: 3 - * :c:func:`overlap_gaussian_x` + * :c:func:`davidson_diag_nonsym_hjj` + * :c:func:`davidson_general_diag_dressed_ext_rout_nonsym_b1space` + * :c:func:`davidson_general_ext_rout_nonsym_b1space` Calls: .. hlist:: :columns: 3 - * :c:func:`multiply_poly` - * :c:func:`recentered_poly2` + * :c:func:`dgeevx` + * :c:func:`dsort` -.. c:function:: gser: +.. c:function:: diagonalize_sym_matrix: - File : :file:`utils/need.irp.f` + File : :file:`utils/util.irp.f` .. code:: fortran - subroutine gser(gamser,a,x,gln) + subroutine diagonalize_sym_matrix(N, A, e) + + Diagonalize a symmetric matrix + - Called by: + Calls: .. hlist:: :columns: 3 - * :c:func:`gammp` + * :c:func:`dsyev` -.. c:function:: heap_dsort: +.. c:function:: dset_order: - File : :file:`utils/sort.irp.f_template_261` + File : :file:`utils/sort.irp.f_template_90` .. code:: fortran - subroutine heap_dsort(x,iorder,isize) + subroutine dset_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. + + Called by: - Sort array x(isize) using the heap sort algorithm. - iorder in input should be (1,2,3,...,isize), and in output - contains the new order of the elements. + .. hlist:: + :columns: 3 + + * :c:data:`ao_coef_norm_cgtos_ord` + * :c:data:`ao_coef_normalized_ordered` + * :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` + * :c:func:`h_u_0_nstates_openmp` + * :c:func:`h_u_0_nstates_zmq` + * :c:func:`orb_range_2_rdm_openmp` + * :c:func:`orb_range_2_rdm_state_av_openmp` + * :c:func:`orb_range_2_trans_rdm_openmp` + * :c:data:`psi_bilinear_matrix_transp_values` + * :c:data:`psi_bilinear_matrix_values` + * :c:func:`restore_symmetry` -.. c:function:: heap_dsort_big: +.. c:function:: dset_order_big: - File : :file:`utils/sort.irp.f_template_261` + File : :file:`utils/sort.irp.f_template_90` .. code:: fortran - subroutine heap_dsort_big(x,iorder,isize) + subroutine dset_order_big(x,iorder,isize) - Sort array x(isize) using the heap sort algorithm. - iorder in input should be (1,2,3,...,isize), and in output - contains the new order of the elements. - This is a version for very large arrays where the indices need + 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:: heap_i2sort: +.. c:function:: eigsvd: - File : :file:`utils/sort.irp.f_template_261` + File : :file:`utils/linear_algebra.irp.f` .. code:: fortran - subroutine heap_i2sort(x,iorder,isize) + subroutine eigSVD(A,LDA,U,LDU,D,Vt,LDVt,m,n) + + + Algorithm 3 of https://arxiv.org/pdf/1810.06860.pdf + + A(m,n) = U(m,n) D(n) Vt(n,n) with m>n + + Calls: + .. hlist:: + :columns: 3 - Sort array x(isize) using the heap sort algorithm. - iorder in input should be (1,2,3,...,isize), and in output - contains the new order of the elements. + * :c:func:`dgemm` + * :c:func:`dscal` + * :c:func:`lapack_diagd` + * :c:func:`svd` -.. c:function:: heap_i2sort_big: +.. c:function:: erf_e: - File : :file:`utils/sort.irp.f_template_261` + File : :file:`utils/cpx_erf.irp.f` .. code:: fortran - subroutine heap_i2sort_big(x,iorder,isize) + complex*16 function erf_E(x, yabs) - Sort array x(isize) using the heap sort algorithm. - iorder in input should be (1,2,3,...,isize), and in output - contains the new order of the elements. - This is a version for very large arrays where the indices need - to be in integer*8 format -.. c:function:: heap_i8sort: +.. c:function:: erf_f: - File : :file:`utils/sort.irp.f_template_261` + File : :file:`utils/cpx_erf.irp.f` .. code:: fortran - subroutine heap_i8sort(x,iorder,isize) + double precision function erf_F(x, yabs) - Sort array x(isize) using the heap sort algorithm. - iorder in input should be (1,2,3,...,isize), and in output - contains the new order of the elements. -.. c:function:: heap_i8sort_big: +.. c:function:: erf_g: - File : :file:`utils/sort.irp.f_template_261` + File : :file:`utils/cpx_erf.irp.f` .. code:: fortran - subroutine heap_i8sort_big(x,iorder,isize) + complex*16 function erf_G(x, yabs) - Sort array x(isize) using the heap sort algorithm. - iorder in input should be (1,2,3,...,isize), and in output - contains the new order of the elements. - This is a version for very large arrays where the indices need - to be in integer*8 format -.. c:function:: heap_isort: +.. c:function:: erf_h: - File : :file:`utils/sort.irp.f_template_261` + File : :file:`utils/cpx_erf.irp.f` .. code:: fortran - subroutine heap_isort(x,iorder,isize) + complex*16 function erf_H(x, yabs) - Sort array x(isize) using the heap sort algorithm. - iorder in input should be (1,2,3,...,isize), and in output - contains the new order of the elements. -.. c:function:: heap_isort_big: +.. c:function:: exp_matrix: - File : :file:`utils/sort.irp.f_template_261` + File : :file:`utils/linear_algebra.irp.f` .. code:: fortran - subroutine heap_isort_big(x,iorder,isize) + subroutine exp_matrix(X,n,exp_X) - Sort array x(isize) using the heap sort algorithm. - iorder in input should be (1,2,3,...,isize), and in output - contains the new order of the elements. - This is a version for very large arrays where the indices need - to be in integer*8 format + exponential of the matrix X: X has to be ANTI HERMITIAN !! + + taken from Hellgaker, jorgensen, Olsen book + + section evaluation of matrix exponential (Eqs. 3.1.29 to 3.1.31) + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`dgemm` + * :c:func:`get_a_squared` + * :c:func:`lapack_diagd` -.. c:function:: heap_sort: +.. c:function:: exp_matrix_taylor: - File : :file:`utils/sort.irp.f_template_261` + File : :file:`utils/linear_algebra.irp.f` .. code:: fortran - subroutine heap_sort(x,iorder,isize) - + subroutine exp_matrix_taylor(X,n,exp_X,converged) - Sort array x(isize) using the heap sort algorithm. - iorder in input should be (1,2,3,...,isize), and in output - contains the new order of the elements. - -.. c:function:: heap_sort_big: + exponential of a general real matrix X using the Taylor expansion of exp(X) + + returns the logical converged which checks the convergence + exponential of X using Taylor expansion + Called by: - File : :file:`utils/sort.irp.f_template_261` + .. hlist:: + :columns: 3 - .. code:: fortran + * :c:data:`umat` - subroutine heap_sort_big(x,iorder,isize) + Calls: + .. hlist:: + :columns: 3 - Sort array x(isize) using the heap sort algorithm. - iorder in input should be (1,2,3,...,isize), and in output - contains the new order of the elements. - This is a version for very large arrays where the indices need - to be in integer*8 format + * :c:func:`dgemm` -.. c:function:: hermite: +.. c:function:: extrapolate_data: - File : :file:`utils/integration.irp.f` + File : :file:`utils/extrapolation.irp.f` .. code:: fortran - double precision function hermite(n,x) - + subroutine extrapolate_data(N_data, data, pt2, output) - Hermite polynomial - -.. c:function:: i2set_order: + Extrapolate the data to the FCI limit + Called by: - File : :file:`utils/sort.irp.f_template_347` + .. hlist:: + :columns: 3 - .. code:: fortran + * :c:func:`increment_n_iter` - subroutine i2set_order(x,iorder,isize) + Calls: + .. hlist:: + :columns: 3 - 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:func:`get_pseudo_inverse` -.. c:function:: i2set_order_big: +.. c:function:: f_integral: - File : :file:`utils/sort.irp.f_template_412` + File : :file:`utils/integration.irp.f` .. code:: fortran - subroutine i2set_order_big(x,iorder,isize) + double precision function F_integral(n,p) - 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 + function that calculates the following integral + \int_{\-infty}^{+\infty} x^n \exp(-p x^2) dx -.. c:function:: i2sort: +.. c:function:: fact: - File : :file:`utils/sort.irp.f_template_315` + File : :file:`utils/util.irp.f` .. code:: fortran - subroutine i2sort(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: + double precision function fact(n) - .. hlist:: - :columns: 3 - * :c:func:`quick_i2sort` + n! -.. c:function:: i8set_order: +.. c:function:: fc_integral: - File : :file:`utils/sort.irp.f_template_347` + File : :file:`utils/cgtos_utils.irp.f` .. code:: fortran - subroutine i8set_order(x,iorder,isize) + complex*16 function Fc_integral(n, inv_sq_p) - 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. + function that calculates the following integral + \int_{\-infty}^{+\infty} x^n \exp(-p x^2) dx + for complex valued p -.. c:function:: i8set_order_big: +.. c:function:: find_rotation: - File : :file:`utils/sort.irp.f_template_412` + File : :file:`utils/linear_algebra.irp.f` .. code:: fortran - subroutine i8set_order_big(x,iorder,isize) + subroutine find_rotation(A,LDA,B,m,C,n) - 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 + Find A.C = B + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`dgemm` + * :c:func:`get_pseudo_inverse` -.. c:function:: i8sort: +.. c:function:: format_w_error: - File : :file:`utils/sort.irp.f_template_315` + File : :file:`utils/format_w_error.irp.f` .. code:: fortran - subroutine i8sort(x,iorder,isize) + subroutine format_w_error(value,error,size_nb,max_nb_digits,format_value,str_error) - Sort array x(isize). - iorder in input should be (1,2,3,...,isize), and in output - contains the new order of the elements. + Format for double precision, value(error) Called by: .. hlist:: :columns: 3 - * :c:func:`make_selection_buffer_s2` - * :c:data:`psi_bilinear_matrix_values` - * :c:data:`psi_det_alpha_unique` - * :c:data:`psi_det_beta_unique` - * :c:data:`psi_occ_pattern` - * :c:func:`remove_duplicates_in_selection_buffer` - * :c:func:`sort_dets_by_det_search_key` + * :c:func:`pt2_collector` Calls: .. hlist:: :columns: 3 - * :c:func:`quick_i8sort` + * :c:func:`lock_io` + * :c:func:`unlock_io` -.. c:function:: insertion_dsort: +.. c:function:: gaussian_product: - File : :file:`utils/sort.irp.f_template_261` + File : :file:`utils/integration.irp.f` .. code:: fortran - subroutine insertion_dsort (x,iorder,isize) + subroutine gaussian_product(a,xa,b,xb,k,p,xp) - Sort array x(isize) using the insertion sort algorithm. - iorder in input should be (1,2,3,...,isize), and in output - contains the new order of the elements. + Gaussian product in 1D. + e^{-a (x-x_A)^2} e^{-b (x-x_B)^2} = K_{ab}^x e^{-p (x-x_P)^2} Called by: .. hlist:: :columns: 3 - * :c:func:`dsort` + * :c:func:`give_explicit_poly_and_gaussian` + * :c:func:`give_explicit_poly_and_gaussian_double` -.. c:function:: insertion_dsort_big: +.. c:function:: gaussian_product_v: - File : :file:`utils/sort.irp.f_template_412` + File : :file:`utils/integration.irp.f` .. code:: fortran - subroutine insertion_dsort_big (x,iorder,isize) + subroutine gaussian_product_v(a, xa, LD_xa, b, xb, k, p, xp, n_points) - Sort array x(isize) using the insertion sort algorithm. - iorder in input should be (1,2,3,...,isize), and in output - contains the new order of the elements. - This is a version for very large arrays where the indices need - to be in integer*8 format + + Gaussian product in 1D. + e^{-a (x-x_A)^2} e^{-b (x-x_B)^2} = K_{ab}^x e^{-p (x-x_P)^2} + + Using multiple A centers + + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`give_explicit_poly_and_gaussian_v` -.. c:function:: insertion_i2sort: +.. c:function:: gaussian_product_x: - File : :file:`utils/sort.irp.f_template_261` + File : :file:`utils/integration.irp.f` .. code:: fortran - subroutine insertion_i2sort (x,iorder,isize) + subroutine gaussian_product_x(a,xa,b,xb,k,p,xp) - Sort array x(isize) using the insertion sort algorithm. - iorder in input should be (1,2,3,...,isize), and in output - contains the new order of the elements. + Gaussian product in 1D. + e^{-a (x-x_A)^2} e^{-b (x-x_B)^2} = K_{ab}^x e^{-p (x-x_P)^2} Called by: .. hlist:: :columns: 3 - * :c:func:`i2radix_sort` + * :c:func:`overlap_gaussian_xyz` -.. c:function:: insertion_i2sort_big: +.. c:function:: gaussian_product_x_v: - File : :file:`utils/sort.irp.f_template_412` + File : :file:`utils/integration.irp.f` .. code:: fortran - subroutine insertion_i2sort_big (x,iorder,isize) + subroutine gaussian_product_x_v(a,xa,b,xb,k,p,xp,n_points) - Sort array x(isize) using the insertion sort algorithm. - iorder in input should be (1,2,3,...,isize), and in output - contains the new order of the elements. - This is a version for very large arrays where the indices need - to be in integer*8 format + Gaussian product in 1D with multiple xa + e^{-a (x-x_A)^2} e^{-b (x-x_B)^2} = K_{ab}^x e^{-p (x-x_P)^2} -.. c:function:: insertion_i8sort: +.. c:function:: get_a_squared: - File : :file:`utils/sort.irp.f_template_261` + File : :file:`utils/linear_algebra.irp.f` .. code:: fortran - subroutine insertion_i8sort (x,iorder,isize) + subroutine get_A_squared(A,n,A2) - Sort array x(isize) using the insertion sort algorithm. - iorder in input should be (1,2,3,...,isize), and in output - contains the new order of the elements. + A2 = A A where A is n x n matrix. Use the dgemm routine Called by: .. hlist:: :columns: 3 - * :c:func:`i8radix_sort` + * :c:func:`exp_matrix` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`dgemm` -.. c:function:: insertion_i8sort_big: +.. c:function:: get_ab_prod: - File : :file:`utils/sort.irp.f_template_412` + File : :file:`utils/linear_algebra.irp.f` .. code:: fortran - subroutine insertion_i8sort_big (x,iorder,isize) + subroutine get_AB_prod(A,n,m,B,l,AB) - Sort array x(isize) using the insertion sort algorithm. - iorder in input should be (1,2,3,...,isize), and in output - contains the new order of the elements. - This is a version for very large arrays where the indices need - to be in integer*8 format + AB = A B where A is n x m, B is m x l. Use the dgemm routine - Called by: + Calls: .. hlist:: :columns: 3 - * :c:func:`i8radix_sort_big` + * :c:func:`dgemm` -.. c:function:: insertion_isort: +.. c:function:: get_inverse: - File : :file:`utils/sort.irp.f_template_261` + File : :file:`utils/linear_algebra.irp.f` .. code:: fortran - subroutine insertion_isort (x,iorder,isize) + subroutine get_inverse(A,LDA,m,C,LDC) - Sort array x(isize) using the insertion sort algorithm. - iorder in input should be (1,2,3,...,isize), and in output - contains the new order of the elements. + Returns the inverse of the square matrix A Called by: .. hlist:: :columns: 3 - * :c:func:`iradix_sort` + * :c:data:`ao_ortho_canonical_coef_inv` + * :c:data:`overlap_states` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`dgetrf` + * :c:func:`dgetri` -.. c:function:: insertion_isort_big: +.. c:function:: get_inverse_complex: - File : :file:`utils/sort.irp.f_template_412` + File : :file:`utils/linear_algebra.irp.f` .. code:: fortran - subroutine insertion_isort_big (x,iorder,isize) + subroutine get_inverse_complex(A,LDA,m,C,LDC) - Sort array x(isize) using the insertion sort algorithm. - iorder in input should be (1,2,3,...,isize), and in output - contains the new order of the elements. - This is a version for very large arrays where the indices need - to be in integer*8 format + Returns the inverse of the square matrix A - Called by: + Calls: .. hlist:: :columns: 3 - * :c:func:`iradix_sort_big` + * :c:func:`zgetrf` + * :c:func:`zgetri` -.. c:function:: insertion_sort: +.. c:function:: get_pseudo_inverse: - File : :file:`utils/sort.irp.f_template_261` + File : :file:`utils/linear_algebra.irp.f` .. code:: fortran - subroutine insertion_sort (x,iorder,isize) + subroutine get_pseudo_inverse(A, LDA, m, n, C, LDC, cutoff) - Sort array x(isize) using the insertion sort algorithm. - iorder in input should be (1,2,3,...,isize), and in output - contains the new order of the elements. + Find C = A^-1 Called by: .. hlist:: :columns: 3 - * :c:func:`sort` - - -.. c:function:: insertion_sort_big: - - - File : :file:`utils/sort.irp.f_template_412` - - .. code:: fortran + * :c:data:`ao_cart_to_sphe_inv` + * :c:func:`extrapolate_data` + * :c:func:`find_rotation` + * :c:data:`s_inv` - subroutine insertion_sort_big (x,iorder,isize) + Calls: + .. hlist:: + :columns: 3 - Sort array x(isize) using the insertion sort algorithm. - iorder in input should be (1,2,3,...,isize), and in output - contains the new order of the elements. - This is a version for very large arrays where the indices need - to be in integer*8 format + * :c:func:`dgemm` + * :c:func:`dgesvd` -.. c:function:: iset_order: +.. c:function:: get_pseudo_inverse_complex: - File : :file:`utils/sort.irp.f_template_347` + File : :file:`utils/linear_algebra.irp.f` .. code:: fortran - subroutine iset_order(x,iorder,isize) + subroutine get_pseudo_inverse_complex(A,LDA,m,n,C,LDC,cutoff) - 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. + Find C = A^-1 Called by: .. hlist:: :columns: 3 - * :c:data:`psi_bilinear_matrix_transp_values` - * :c:data:`psi_bilinear_matrix_values` + * :c:data:`s_inv_complex` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`zgesvd` -.. c:function:: iset_order_big: +.. c:function:: get_total_available_memory: - File : :file:`utils/sort.irp.f_template_412` + File : :file:`utils/memory.irp.f` .. code:: fortran - subroutine iset_order_big(x,iorder,isize) + integer function get_total_available_memory() result(res) - 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 + Returns the total available memory on the current machine -.. c:function:: isort: +.. c:function:: give_degen: - File : :file:`utils/sort.irp.f_template_315` + File : :file:`utils/util.irp.f` .. code:: fortran - subroutine isort(x,iorder,isize) + subroutine give_degen(A, n, shift, list_degen, n_degen_list) + + + returns n_degen_list :: the number of degenerated SET of elements (i.e. with |A(i)-A(i+1)| below shift) + + for each of these sets, list_degen(1,i) = first degenerate element of the set i, + + list_degen(2,i) = last degenerate element of the set i. + +.. c:function:: give_degen_full_list: - Sort array x(isize). - iorder in input should be (1,2,3,...,isize), and in output - contains the new order of the elements. - Called by: + File : :file:`utils/block_diag_degen.irp.f` - .. hlist:: - :columns: 3 + .. code:: fortran - * :c:func:`molden` - * :c:func:`select_singles_and_doubles` + subroutine give_degen_full_list(A, n, thr, list_degen, n_degen_list) - Calls: + + you enter with an array A(n) and spits out all the elements degenerated up to thr + + the elements of A(n) DON'T HAVE TO BE SORTED IN THE ENTRANCE: TOTALLY GENERAL + + list_degen(i,0) = number of degenerate entries + + list_degen(i,1) = index of the first degenerate entry + + list_degen(i,2:list_degen(i,0)) = list of all other dengenerate entries + + if list_degen(i,0) == 1 it means that there is no degeneracy for that element + + Called by: .. hlist:: :columns: 3 - * :c:func:`quick_isort` + * :c:func:`diag_mat_per_fock_degen` -.. c:function:: lapack_diag: +.. c:function:: give_degen_full_listcore: - File : :file:`utils/linear_algebra.irp.f` + File : :file:`utils/block_diag_degen_core.irp.f` .. code:: fortran - subroutine lapack_diag(eigvalues,eigvectors,H,nmax,n) + subroutine give_degen_full_listcore(A, n, listcore, ncore, thr, list_degen, n_degen_list) - Diagonalize matrix H + you enter with an array A(n) and spits out all the elements degenerated up to thr - H is untouched between input and ouptut + the elements of A(n) DON'T HAVE TO BE SORTED IN THE ENTRANCE: TOTALLY GENERAL - eigevalues(i) = ith lowest eigenvalue of the H matrix + list_degen(i,0) = number of degenerate entries - eigvectors(i,j) = where i is the basis function and psi_j is the j th eigenvector + list_degen(i,1) = index of the first degenerate entry + + list_degen(i,2:list_degen(i,0)) = list of all other dengenerate entries + if list_degen(i,0) == 1 it means that there is no degeneracy for that element + + if list_degen(i,0) >= 1000 it means that it is core orbitals 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` + * :c:func:`diag_mat_per_fock_degen_core` - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`dsyev` - - -.. c:function:: lapack_diagd: + +.. c:function:: give_explicit_poly_and_gaussian: - File : :file:`utils/linear_algebra.irp.f` + File : :file:`utils/integration.irp.f` .. code:: fortran - subroutine lapack_diagd(eigvalues,eigvectors,H,nmax,n) + subroutine give_explicit_poly_and_gaussian(P_new,P_center,p,fact_k,iorder,alpha,beta,a,b,A_center,B_center,dim) - 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 + Transforms the product of + (x-x_A)^a(1) (x-x_B)^b(1) (x-x_A)^a(2) (y-y_B)^b(2) (z-z_A)^a(3) (z-z_B)^b(3) exp(-(r-A)^2 alpha) exp(-(r-B)^2 beta) + into + fact_k * [ sum (l_x = 0,i_order(1)) P_new(l_x,1) * (x-P_center(1))^l_x ] exp (- p (x-P_center(1))^2 ) + * [ sum (l_y = 0,i_order(2)) P_new(l_y,2) * (y-P_center(2))^l_y ] exp (- p (y-P_center(2))^2 ) + * [ sum (l_z = 0,i_order(3)) P_new(l_z,3) * (z-P_center(3))^l_z ] exp (- p (z-P_center(3))^2 ) + WARNING ::: IF fact_k is too smal then: + returns a "s" function centered in zero + with an inifinite exponent and a zero polynom coef Called by: .. hlist:: :columns: 3 - * :c:data:`inertia_tensor_eigenvectors` + * :c:func:`ao_two_e_integral` + * :c:func:`ao_two_e_integral_erf` + * :c:func:`ao_two_e_integral_schwartz_accel` + * :c:func:`ao_two_e_integral_schwartz_accel_erf` + * :c:func:`give_explicit_poly_and_gaussian_double` + * :c:func:`overlap_gaussian_xyz` Calls: .. hlist:: :columns: 3 - * :c:func:`dsyevd` + * :c:func:`gaussian_product` + * :c:func:`multiply_poly` + * :c:func:`recentered_poly2` -.. c:function:: logfact: +.. c:function:: give_explicit_poly_and_gaussian_double: - File : :file:`utils/util.irp.f` + File : :file:`utils/integration.irp.f` .. code:: fortran - double precision function logfact(n) + subroutine give_explicit_poly_and_gaussian_double(P_new,P_center,p,fact_k,iorder,alpha,beta,gama,a,b,A_center,B_center,Nucl_center,dim) - n! + Transforms the product of + (x-x_A)^a(1) (x-x_B)^b(1) (x-x_A)^a(2) (y-y_B)^b(2) (z-z_A)^a(3) (z-z_B)^b(3) + exp(-(r-A)^2 alpha) exp(-(r-B)^2 beta) exp(-(r-Nucl_center)^2 gama + + into + fact_k * [ sum (l_x = 0,i_order(1)) P_new(l_x,1) * (x-P_center(1))^l_x ] exp (- p (x-P_center(1))^2 ) + * [ sum (l_y = 0,i_order(2)) P_new(l_y,2) * (y-P_center(2))^l_y ] exp (- p (y-P_center(2))^2 ) + * [ sum (l_z = 0,i_order(3)) P_new(l_z,3) * (z-P_center(3))^l_z ] exp (- p (z-P_center(3))^2 ) + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`gaussian_product` + * :c:func:`give_explicit_poly_and_gaussian` -.. c:function:: lowercase: +.. c:function:: give_explicit_poly_and_gaussian_v: - File : :file:`utils/util.irp.f` + File : :file:`utils/integration.irp.f` .. code:: fortran - subroutine lowercase(txt,n) + subroutine give_explicit_poly_and_gaussian_v(P_new, ldp, P_center, p, fact_k, iorder, alpha, beta, a, b, A_center, LD_A, B_center, n_points) - Transform to lower case + Transforms the product of + (x-x_A)^a(1) (x-x_B)^b(1) (y-y_A)^a(2) (y-y_B)^b(2) (z-z_A)^a(3) (z-z_B)^b(3) exp(-(r-A)^2 alpha) exp(-(r-B)^2 beta) + into + fact_k * [ sum (l_x = 0,i_order(1)) P_new(l_x,1) * (x-P_center(1))^l_x ] exp (- p (x-P_center(1))^2 ) + * [ sum (l_y = 0,i_order(2)) P_new(l_y,2) * (y-P_center(2))^l_y ] exp (- p (y-P_center(2))^2 ) + * [ sum (l_z = 0,i_order(3)) P_new(l_z,3) * (z-P_center(3))^l_z ] exp (- p (z-P_center(3))^2 ) + + WARNING :: : IF fact_k is too smal then: + returns a "s" function centered in zero + with an inifinite exponent and a zero polynom coef Called by: .. hlist:: :columns: 3 - * :c:func:`end_parallel_job` - * :c:func:`new_parallel_job` + * :c:func:`overlap_gaussian_xyz_v` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`gaussian_product_v` + * :c:func:`multiply_poly_v` + * :c:func:`recentered_poly2_v` + * :c:func:`recentered_poly2_v0` -.. c:function:: map_load_from_disk: +.. c:function:: give_explicit_poly_and_gaussian_x: - File : :file:`utils/map_functions.irp.f` + File : :file:`utils/integration.irp.f` .. code:: fortran - subroutine map_load_from_disk(filename,map) + subroutine give_explicit_poly_and_gaussian_x(P_new,P_center,p,fact_k,iorder,alpha,beta,a,b,A_center,B_center,dim) + Transform the product of + (x-x_A)^a(1) (x-x_B)^b(1) (x-x_A)^a(2) (y-y_B)^b(2) (z-z_A)^a(3) (z-z_B)^b(3) exp(-(r-A)^2 alpha) exp(-(r-B)^2 beta) + into + fact_k (x-x_P)^iorder(1) (y-y_P)^iorder(2) (z-z_P)^iorder(3) exp(-p(r-P)^2) 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:`overlap_gaussian_x` Calls: .. hlist:: :columns: 3 - * :c:func:`c_f_pointer` - * :c:func:`mmap` + * :c:func:`multiply_poly` + * :c:func:`recentered_poly2` -.. c:function:: map_save_to_disk: +.. c:function:: give_pol_in_r: - File : :file:`utils/map_functions.irp.f` + File : :file:`utils/prim_in_r.irp.f` .. code:: fortran - subroutine map_save_to_disk(filename,map) + double precision function give_pol_in_r(r,pol,center, alpha,iorder, max_dim) - Called by: + +.. c:function:: hermite: - .. 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` + File : :file:`utils/integration.irp.f` - Calls: + .. code:: fortran - .. hlist:: - :columns: 3 + double precision function hermite(n,x) - * :c:func:`c_f_pointer` - * :c:func:`map_sort` - * :c:func:`mmap` - * :c:func:`msync` + + Hermite polynomial -.. c:function:: memory_of_double: +.. c:function:: i2set_order: - File : :file:`utils/memory.irp.f` + File : :file:`utils/sort.irp.f_template_90` .. code:: fortran - double precision function memory_of_double(n) + subroutine i2set_order(x,iorder,isize) - Computes the memory required for n double precision elements in gigabytes. + 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:: memory_of_int: +.. c:function:: i2set_order_big: - File : :file:`utils/memory.irp.f` + File : :file:`utils/sort.irp.f_template_90` .. code:: fortran - double precision function memory_of_int(n) + subroutine i2set_order_big(x,iorder,isize) - Computes the memory required for n double precision elements in gigabytes. + 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:: multiply_poly: +.. c:function:: i8set_order: - File : :file:`utils/integration.irp.f` + File : :file:`utils/sort.irp.f_template_90` .. code:: fortran - subroutine multiply_poly(b,nb,c,nc,d,nd) + subroutine i8set_order(x,iorder,isize) - Multiply two polynomials - D(t) =! D(t) +( B(t)*C(t)) + 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:: i8set_order_big: + + + File : :file:`utils/sort.irp.f_template_90` + + .. code:: fortran + + subroutine i8set_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:: is_same_spin: + + + File : :file:`utils/util.irp.f` + + .. code:: fortran + + logical function is_same_spin(sigma_1, sigma_2) + + + + true if sgn(sigma_1) = sgn(sigma_2) + + + +.. c:function:: iset_order: + + + File : :file:`utils/sort.irp.f_template_90` + + .. code:: fortran + + subroutine iset_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. 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:data:`psi_bilinear_matrix_transp_values` + * :c:data:`psi_bilinear_matrix_values` + * :c:func:`restore_symmetry` -.. c:function:: normalize: +.. c:function:: iset_order_big: + + + File : :file:`utils/sort.irp.f_template_90` + + .. code:: fortran + + subroutine iset_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:: kronecker_delta: File : :file:`utils/util.irp.f` .. code:: fortran - subroutine normalize(u,sze) + function Kronecker_delta(i, j) result(delta) - Normalizes vector u + Kronecker Delta + + +.. c:function:: lapack_diag: + + + File : :file:`utils/linear_algebra.irp.f` + + .. code:: fortran + + subroutine lapack_diag(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:func:`copy_h_apply_buffer_to_wf` - * :c:func:`davidson_diag_hjj_sjj` - * :c:func:`save_wavefunction_general` + * :c:data:`ci_electronic_energy` + * :c:func:`davidson_general` + * :c:func:`davidson_general_ext_rout` + * :c:func:`davidson_general_ext_rout_diag_dressed` + * :c:data:`difference_dm_eigvect` + * :c:func:`mo_as_eigvectors_of_mo_matrix` + * :c:data:`multi_s_x_dipole_moment_eigenvec` + * :c:data:`psi_coef_cas_diagonalized` + * :c:data:`sxeigenvec` Calls: .. hlist:: :columns: 3 - * :c:func:`dscal` + * :c:func:`dsyev` -.. c:function:: ortho_canonical: +.. c:function:: lapack_diag_complex: File : :file:`utils/linear_algebra.irp.f` .. code:: fortran - subroutine ortho_canonical(overlap,LDA,N,C,LDC,m) + subroutine lapack_diag_complex(eigvalues,eigvectors,H,nmax,n) - Compute C_new=C_old.U.s^-1/2 canonical orthogonalization. + Diagonalize matrix H (complex) - overlap : overlap matrix + H is untouched between input and ouptut - LDA : leftmost dimension of overlap array + eigevalues(i) = ith lowest eigenvalue of the H matrix - N : Overlap matrix is NxN (array is (LDA,N) ) + eigvectors(i,j) = where i is the basis function and psi_j is the j th eigenvector + + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`zheev` + + +.. 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:func:`eigsvd` + * :c:func:`exp_matrix` + * :c:data:`inertia_tensor_eigenvectors` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`dsyevd` + + +.. c:function:: lapack_diagd_complex: + + + File : :file:`utils/linear_algebra.irp.f` + + .. code:: fortran + + subroutine lapack_diagd_complex(eigvalues,eigvectors,H,nmax,n) + + + Diagonalize matrix H(complex) + + 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 + + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`zheevd` + + +.. c:function:: lapack_diagd_diag_complex: + + + File : :file:`utils/linear_algebra.irp.f` + + .. code:: fortran + + subroutine lapack_diagd_diag_complex(eigvalues,eigvectors,H,nmax,n) + + + Diagonalize matrix H(complex) + + 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 + + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`zheev` + * :c:func:`zheevd` + + +.. c:function:: lapack_diagd_diag_in_place_complex: + + + File : :file:`utils/linear_algebra.irp.f` + + .. code:: fortran + + subroutine lapack_diagd_diag_in_place_complex(eigvalues,eigvectors,nmax,n) + + + Diagonalize matrix H(complex) + + 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 + + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`zheev` + * :c:func:`zheevd` + + +.. 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:: matrix_vector_product_complex: + + + File : :file:`utils/linear_algebra.irp.f` + + .. code:: fortran + + subroutine matrix_vector_product_complex(u0,u1,matrix,sze,lda) + + + performs u1 =! performs u1 +( u0 * matrix) + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`zhemv` + + +.. 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_double8: + + + File : :file:`utils/memory.irp.f` + + .. code:: fortran + + double precision function memory_of_double8(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:: memory_of_int8: + + + File : :file:`utils/memory.irp.f` + + .. code:: fortran + + double precision function memory_of_int8(n) + + + Computes the memory required for n double precision elements in gigabytes. + + +.. c:function:: multiply_cpoly: + + + File : :file:`utils/cgtos_utils.irp.f` + + .. code:: fortran + + subroutine multiply_cpoly(b, nb, c, nc, d, nd) + + + Multiply two complex polynomials + D(t) =! D(t) +( B(t) * C(t)) + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`general_primitive_integral_cgtos` + * :c:func:`give_cpolynomial_mult_center_one_e` + * :c:func:`give_explicit_cpoly_and_cgaussian` + * :c:func:`give_explicit_cpoly_and_cgaussian_x` + * :c:func:`i_x1_pol_mult_a1_cgtos` + * :c:func:`i_x1_pol_mult_a2_cgtos` + * :c:func:`i_x1_pol_mult_one_e_cgtos` + * :c:func:`i_x1_pol_mult_recurs_cgtos` + * :c:func:`i_x2_pol_mult_cgtos` + * :c:func:`i_x2_pol_mult_one_e_cgtos` + + +.. 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_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` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`multiply_poly_b0` + * :c:func:`multiply_poly_b1` + * :c:func:`multiply_poly_b2` + * :c:func:`multiply_poly_c0` + * :c:func:`multiply_poly_c1` + * :c:func:`multiply_poly_c2` + + +.. c:function:: multiply_poly_b0: + + + File : :file:`utils/integration.irp.f` + + .. code:: fortran + + subroutine multiply_poly_b0(b,c,nc,d,nd) + + + Multiply two polynomials + D(t) =! D(t) +( B(t)*C(t)) + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`multiply_poly` + + +.. c:function:: multiply_poly_b1: + + + File : :file:`utils/integration.irp.f` + + .. code:: fortran + + subroutine multiply_poly_b1(b,c,nc,d,nd) + + + Multiply two polynomials + D(t) =! D(t) +( B(t)*C(t)) + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`multiply_poly` + + +.. c:function:: multiply_poly_b2: + + + File : :file:`utils/integration.irp.f` + + .. code:: fortran + + subroutine multiply_poly_b2(b,c,nc,d,nd) + + + Multiply two polynomials + D(t) =! D(t) +( B(t)*C(t)) + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`multiply_poly` + + +.. c:function:: multiply_poly_c0: + + + File : :file:`utils/integration.irp.f` + + .. code:: fortran + + subroutine multiply_poly_c0(b,nb,c,d,nd) + + + Multiply two polynomials + D(t) =! D(t) +( B(t)*C(t)) + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`multiply_poly` + + +.. c:function:: multiply_poly_c1: + + + File : :file:`utils/integration.irp.f` + + .. code:: fortran + + subroutine multiply_poly_c1(b,nb,c,d,nd) + + + Multiply two polynomials + D(t) =! D(t) +( B(t)*C(t)) + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`multiply_poly` + + +.. c:function:: multiply_poly_c2: + + + File : :file:`utils/integration.irp.f` + + .. code:: fortran + + subroutine multiply_poly_c2(b,nb,c,d,nd) + + + Multiply two polynomials + D(t) =! D(t) +( B(t)*C(t)) + + Called by: + + .. 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:: multiply_poly_v: + + + File : :file:`utils/integration.irp.f` + + .. code:: fortran + + subroutine multiply_poly_v(b,nb,c,nc,d,nd,n_points) + + + Multiply pairs of polynomials + D(t) =! D(t) +( B(t)*C(t)) + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`give_explicit_poly_and_gaussian_v` + + +.. 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:`dav_double_dressed` + * :c:func:`davidson_diag_csf_hjj` + * :c:func:`davidson_diag_hjj` + * :c:func:`davidson_diag_hjj_sjj` + * :c:func:`davidson_diag_nonsym_hjj` + * :c:func:`davidson_general` + * :c:func:`davidson_general_diag_dressed_ext_rout_nonsym_b1space` + * :c:func:`davidson_general_ext_rout` + * :c:func:`davidson_general_ext_rout_diag_dressed` + * :c:func:`davidson_general_ext_rout_dressed` + * :c:func:`davidson_general_ext_rout_nonsym_b1space` + * :c:func:`save_wavefunction_general` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`dscal` + + +.. c:function:: nullify_small_elements: + + + File : :file:`utils/linear_algebra.irp.f` + + .. code:: fortran + + subroutine nullify_small_elements(m,n,A,LDA,thresh) + + + + Called by: + + .. hlist:: + :columns: 3 + + * :c:data:`ci_electronic_energy` + * :c:func:`dav_double_dressed` + * :c:func:`davidson_diag_csf_hjj` + * :c:func:`davidson_diag_hjj` + * :c:func:`davidson_diag_hjj_sjj` + * :c:func:`davidson_diag_nonsym_hjj` + * :c:func:`davidson_general_ext_rout_dressed` + * :c:func:`hcore_guess` + * :c:data:`mo_one_e_integrals` + * :c:func:`save_natural_mos` + * :c:func:`save_natural_mos_canon_label` + * :c:func:`save_natural_mos_no_ov_rot` + * :c:func:`save_wavefunction_truncated` + + +.. c:function:: ortho_canonical: + + + File : :file:`utils/linear_algebra.irp.f` + + .. code:: fortran + + subroutine ortho_canonical(overlap,LDA,N,C,LDC,m,cutoff) + + + 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_canonical_complex: + + + File : :file:`utils/linear_algebra.irp.f` + + .. code:: fortran + + subroutine ortho_canonical_complex(overlap,LDA,N,C,LDC,m,cutoff) + + + 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) ) + + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`svd_complex` + * :c:func:`zgemm` + + +.. c:function:: ortho_lowdin: + + + File : :file:`utils/linear_algebra.irp.f` + + .. code:: fortran + + subroutine ortho_lowdin(overlap,LDA,N,C,LDC,m,cutoff) + + + 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_lowdin_complex: + + + File : :file:`utils/linear_algebra.irp.f` + + .. code:: fortran + + subroutine ortho_lowdin_complex(overlap,LDA,N,C,LDC,m,cutoff) + + + 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) ) + + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`svd_complex` + * :c:func:`zgemm` + + +.. 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 + + m : Number of rows of A + + n : Number of columns of A + + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`davidson_diag_nonsym_hjj` + * :c:func:`davidson_general` + * :c:func:`davidson_general_diag_dressed_ext_rout_nonsym_b1space` + * :c:func:`davidson_general_ext_rout` + * :c:func:`davidson_general_ext_rout_diag_dressed` + * :c:func:`davidson_general_ext_rout_dressed` + * :c:func:`davidson_general_ext_rout_nonsym_b1space` + * :c:func:`ortho_svd` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`dgeqrf` + * :c:func:`dorgqr` + + +.. c:function:: ortho_qr_complex: + + + File : :file:`utils/linear_algebra.irp.f` + + .. code:: fortran + + subroutine ortho_qr_complex(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:`zgeqrf` + * :c:func:`zungqr` + + +.. 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:: ortho_qr_unblocked_complex: + + + File : :file:`utils/linear_algebra.irp.f` + + .. code:: fortran + + subroutine ortho_qr_unblocked_complex(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 + + + +.. c:function:: ortho_svd: + + + File : :file:`utils/linear_algebra.irp.f` + + .. code:: fortran + + subroutine ortho_svd(A,LDA,m,n) + + + Orthogonalization via fast SVD + + A : matrix to orthogonalize - C : Coefficients of the vectors to orthogonalize. On exit, - orthogonal vectors + LDA : leftmost dimension of A - LDC : leftmost dimension of C + m : Number of rows of A - m : Coefficients matrix is MxN, ( array is (LDC,N) ) + n : Number of columns of A Called by: @@ -2222,140 +3195,117 @@ Subroutines / functions .. hlist:: :columns: 3 - * :c:data:`ao_ortho_canonical_coef` + * :c:func:`randomized_svd` Calls: .. hlist:: :columns: 3 - * :c:func:`dgemm` + * :c:func:`ortho_qr` * :c:func:`svd` -.. c:function:: ortho_lowdin: +.. c:function:: overlap_cgaussian_x: - File : :file:`utils/linear_algebra.irp.f` + File : :file:`utils/cgtos_one_e.irp.f` .. code:: fortran - subroutine ortho_lowdin(overlap,LDA,N,C,LDC,m) + complex*16 function overlap_cgaussian_x(Ae_center, Be_center, alpha, beta, power_A, power_B, Ap_center, Bp_center, dim) - 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 + \int_{-infty}^{+infty} (x - Ap_x)^ax (x - Bp_x)^bx exp(-alpha (x - Ae_x)^2) exp(-beta (x - Be_X)^2) dx - M : Coefficients matrix is MxN, ( array is (LDC,N) ) + with complex arguments - 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:func:`give_explicit_cpoly_and_cgaussian_x` -.. c:function:: ortho_qr: +.. c:function:: overlap_gaussian_x: - File : :file:`utils/linear_algebra.irp.f` + File : :file:`utils/one_e_integration.irp.f` .. code:: fortran - subroutine ortho_qr(A,LDA,m,n) + double precision function overlap_gaussian_x(A_center,B_center,alpha,beta,power_A,power_B,dim) - Orthogonalization using Q.R factorization - - A : matrix to orthogonalize - - LDA : leftmost dimension of A - - n : Number of rows of A + .. math:: - m : Number of columns of A + \sum_{-infty}^{+infty} (x-A_x)^ax (x-B_x)^bx exp(-alpha(x-A_x)^2) exp(-beta(x-B_X)^2) dx - Called by: - - .. hlist:: - :columns: 3 - - * :c:func:`davidson_diag_hjj_sjj` - Calls: .. hlist:: :columns: 3 - * :c:func:`dgeqrf` - * :c:func:`dorgqr` + * :c:func:`give_explicit_poly_and_gaussian_x` -.. c:function:: ortho_qr_unblocked: +.. c:function:: overlap_gaussian_xyz: - File : :file:`utils/linear_algebra.irp.f` + File : :file:`utils/one_e_integration.irp.f` .. code:: fortran - subroutine ortho_qr_unblocked(A,LDA,m,n) + subroutine overlap_gaussian_xyz(A_center, B_center, alpha, beta, power_A, power_B, overlap_x, overlap_y, overlap_z, overlap, dim) - Orthogonalization using Q.R factorization - - A : matrix to orthogonalize - - LDA : leftmost dimension of A - - n : Number of rows of A + .. math:: - m : Number of columns of A + 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_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` + * :c:data:`prim_normalization_factor` + * :c:data:`shell_normalization_factor` + Calls: .. hlist:: :columns: 3 - * :c:func:`dgeqr2` - * :c:func:`dorg2r` + * :c:func:`gaussian_product_x` + * :c:func:`give_explicit_poly_and_gaussian` -.. c:function:: overlap_gaussian_x: +.. c:function:: overlap_gaussian_xyz_v: 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) + subroutine overlap_gaussian_xyz_v(A_center, B_center, alpha, beta, power_A, power_B, overlap, n_points) .. 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 + 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 Calls: @@ -2363,7 +3313,7 @@ Subroutines / functions .. hlist:: :columns: 3 - * :c:func:`give_explicit_poly_and_gaussian_x` + * :c:func:`give_explicit_poly_and_gaussian_v` .. c:function:: overlap_x_abs: @@ -2373,7 +3323,7 @@ Subroutines / functions .. code:: fortran - subroutine overlap_x_abs(A_center,B_center,alpha,beta,power_A,power_B,overlap_x,lower_exp_val,dx,nx) + subroutine overlap_x_abs(A_center, B_center, alpha, beta, power_A, power_B, overlap_x, lower_exp_val, dx, nx) .. math :: @@ -2389,225 +3339,274 @@ Subroutines / functions * :c:data:`ao_overlap_abs` -.. c:function:: print_memory_usage: +.. c:function:: pivoted_cholesky: - File : :file:`utils/memory.irp.f` + File : :file:`utils/linear_algebra.irp.f` .. code:: fortran - subroutine print_memory_usage() + subroutine pivoted_cholesky( A, rank, tol, ndim, U) - Prints the memory usage in the output Called by: .. hlist:: :columns: 3 - * :c:func:`write_time` + * :c:func:`roothaan_hall_scf` Calls: .. hlist:: :columns: 3 - * :c:func:`resident_memory` - * :c:func:`total_memory` + * :c:func:`dpstrf` -.. c:function:: quick_dsort: +.. c:function:: pol_modif_center: - File : :file:`utils/sort.irp.f_template_261` + File : :file:`utils/integration.irp.f` .. code:: fortran - subroutine quick_dsort(x, iorder, isize) + subroutine pol_modif_center(A_center, B_center, iorder, A_pol, B_pol) - 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. + + Transform the pol centerd on A: + [ \sum_i ax_i (x-x_A)^i ] [ \sum_j ay_j (y-y_A)^j ] [ \sum_k az_k (z-z_A)^k ] + to a pol centered on B + [ \sum_i bx_i (x-x_B)^i ] [ \sum_j by_j (y-y_B)^j ] [ \sum_k bz_k (z-z_B)^k ] + - Needs: + Calls: .. hlist:: :columns: 3 - * :c:data:`nproc` + * :c:func:`pol_modif_center_x` - Called by: + +.. c:function:: pol_modif_center_x: - .. hlist:: - :columns: 3 - * :c:func:`dsort` + File : :file:`utils/integration.irp.f` - Calls: + .. code:: fortran + + subroutine pol_modif_center_x(A_center, B_center, iorder, A_pol, B_pol) + + + + Transform the pol centerd on A: + [ \sum_i ax_i (x-x_A)^i ] + to a pol centered on B + [ \sum_i bx_i (x-x_B)^i ] + + bx_i = \sum_{j=i}^{iorder} ax_j (x_B - x_A)^(j-i) j! / [ i! (j-i)! ] + = \sum_{j=i}^{iorder} ax_j (x_B - x_A)^(j-i) binom_func(j,i) + + + Called by: .. hlist:: :columns: 3 - * :c:func:`rec_d_quicksort` + * :c:func:`pol_modif_center` -.. c:function:: quick_i2sort: +.. c:function:: primitive_value_explicit: - File : :file:`utils/sort.irp.f_template_261` + File : :file:`utils/prim_in_r.irp.f` .. code:: fortran - subroutine quick_i2sort(x, iorder, isize) + double precision function primitive_value_explicit(power_prim,center_prim,alpha,r) - 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. + Evaluates at "r" a primitive of type : + (x - center_prim(1))**power_prim(1) (y - center_prim(2))**power_prim(2) * (z - center_prim(3))**power_prim(3) + + exp(-alpha * [(x - center_prim(1))**2 + (y - center_prim(2))**2 + (z - center_prim(3))**2] ) - Needs: + +.. c:function:: print_memory_usage: - .. hlist:: - :columns: 3 - * :c:data:`nproc` + 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:`i2sort` + * :c:func:`check_mem` + * :c:data:`cholesky_ao_num` + * :c:func:`write_time` Calls: .. hlist:: :columns: 3 - * :c:func:`rec_i2_quicksort` + * :c:func:`resident_memory` + * :c:func:`total_memory` -.. c:function:: quick_i8sort: +.. c:function:: randomized_svd: - File : :file:`utils/sort.irp.f_template_261` + File : :file:`utils/linear_algebra.irp.f` .. code:: fortran - subroutine quick_i8sort(x, iorder, isize) + subroutine randomized_svd(A,LDA,U,LDU,D,Vt,LDVt,m,n,q,r) - 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. + Randomized SVD: rank r, q power iterations + + 1. Sample column space of A with P: Z = A.P where P is random with r+p columns. + + 2. Power iterations : Z <- X . (Xt.Z) + + 3. Z = Q.R + + 4. Compute SVD on projected Qt.X = U' . S. Vt + + 5. U = Q U' - Needs: + Calls: .. hlist:: :columns: 3 - * :c:data:`nproc` + * :c:func:`dgemm` + * :c:func:`ortho_svd` + * :c:func:`random_number` + * :c:func:`svd` + + +.. c:function:: recentered_cpoly2: + + + File : :file:`utils/cgtos_utils.irp.f` + + .. code:: fortran + + subroutine recentered_cpoly2(P_A, x_A, x_P, a, P_B, x_B, x_Q, b) - Called by: + + + write two complex polynomials (x-x_A)^a (x-x_B)^b + as P_A(x-x_P) and P_B(x-x_Q) + + + Needs: .. hlist:: :columns: 3 - * :c:func:`i8sort` + * :c:data:`binom` - Calls: + Called by: .. hlist:: :columns: 3 - * :c:func:`rec_i8_quicksort` + * :c:func:`give_explicit_cpoly_and_cgaussian` + * :c:func:`give_explicit_cpoly_and_cgaussian_x` -.. c:function:: quick_isort: +.. c:function:: recentered_poly2: - File : :file:`utils/sort.irp.f_template_261` + File : :file:`utils/integration.irp.f` .. code:: fortran - subroutine quick_isort(x, iorder, isize) + subroutine recentered_poly2(P_new, x_A, x_P, a, Q_new, x_B, x_Q, b) - 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. + + Recenter two polynomials: + + (x - x_A)^a -> \sum_{i=0}^{a} \binom{a}{i} (x_A - x_P)^{a-i} (x - x_P)^i + (x - x_B)^b -> \sum_{i=0}^{b} \binom{b}{i} (x_B - x_Q)^{b-i} (x - x_Q)^i + + where: + \binom{a}{i} = \binom{a}{a-i} = a! / [i! (a-i)!] + Needs: .. hlist:: :columns: 3 - * :c:data:`nproc` + * :c:data:`binom` Called by: .. hlist:: :columns: 3 - * :c:func:`isort` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`rec_i_quicksort` + * :c:func:`give_explicit_poly_and_gaussian` + * :c:func:`give_explicit_poly_and_gaussian_x` -.. c:function:: quick_sort: +.. c:function:: recentered_poly2_v: - File : :file:`utils/sort.irp.f_template_261` + File : :file:`utils/integration.irp.f` .. code:: fortran - subroutine quick_sort(x, iorder, isize) + subroutine recentered_poly2_v(P_new, lda, x_A, LD_xA, x_P, a, P_new2, ldb, x_B, x_Q, b, n_points) - 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. + Recenter two polynomials Needs: .. hlist:: :columns: 3 - * :c:data:`nproc` + * :c:data:`binom` Called by: .. hlist:: :columns: 3 - * :c:func:`sort` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`rec__quicksort` + * :c:func:`give_explicit_poly_and_gaussian_v` -.. c:function:: recentered_poly2: +.. c:function:: recentered_poly2_v0: 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) + subroutine recentered_poly2_v0(P_new, lda, x_A, LD_xA, x_P, a, n_points) - Recenter two polynomials + + Recenter two polynomials. Special case for b=(0,0,0) + + (x - A)^a (x - B)^0 = (x - P + P - A)^a (x - Q + Q - B)^0 + = (x - P + P - A)^a + Needs: @@ -2621,8 +3620,7 @@ Subroutines / functions .. hlist:: :columns: 3 - * :c:func:`give_explicit_poly_and_gaussian` - * :c:func:`give_explicit_poly_and_gaussian_x` + * :c:func:`give_explicit_poly_and_gaussian_v` .. c:function:: resident_memory: @@ -2637,20 +3635,25 @@ Subroutines / functions 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:data:`ao_two_e_integral_alpha_chol` * :c:func:`check_mem` + * :c:data:`cholesky_ao_num` + * :c:func:`dav_double_dressed` + * :c:func:`davidson_diag_csf_hjj` + * :c:func:`davidson_diag_hjj` * :c:func:`davidson_diag_hjj_sjj` + * :c:func:`davidson_diag_nonsym_hjj` + * :c:func:`davidson_general` + * :c:func:`davidson_general_diag_dressed_ext_rout_nonsym_b1space` + * :c:func:`davidson_general_ext_rout` + * :c:func:`davidson_general_ext_rout_diag_dressed` + * :c:func:`davidson_general_ext_rout_dressed` + * :c:func:`davidson_general_ext_rout_nonsym_b1space` * :c:func:`print_memory_usage` * :c:func:`run_slave_main` * :c:func:`zmq_pt2` @@ -2660,8 +3663,44 @@ Subroutines / functions .. hlist:: :columns: 3 - * :c:func:`omp_set_lock` - * :c:func:`omp_unset_lock` + * :c:func:`lock_io` + * :c:func:`unlock_io` + * :c:func:`usleep` + + +.. c:function:: restore_symmetry: + + + File : :file:`utils/linear_algebra.irp.f` + + .. code:: fortran + + subroutine restore_symmetry(m,n,A,LDA,thresh) + + + Tries to find the matrix elements that are the same, and sets them + to the average value. + If restore_symm is False, only nullify small elements + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`ao_to_mo` + * :c:func:`create_guess` + * :c:func:`huckel_guess` + * :c:func:`roothaan_hall_scf` + * :c:func:`svd_symm` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`dset_order` + * :c:func:`dsort` + * :c:func:`iset_order` .. c:function:: rint: @@ -2697,8 +3736,8 @@ Subroutines / functions .. hlist:: :columns: 3 - * :c:data:`inv_int` * :c:data:`fact_inv` + * :c:data:`inv_int` .. c:function:: rint_large_n: @@ -2727,106 +3766,126 @@ Subroutines / functions Needed for the calculation of two-electron integrals. -.. c:function:: rinteg: +.. c:function:: set_multiple_levels_omp: + + + File : :file:`utils/set_multiple_levels_omp.irp.f` + + .. code:: fortran + + subroutine set_multiple_levels_omp(activate) + + + If true, activate OpenMP nested parallelism. If false, deactivate. + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`add_integrals_to_map_cholesky` + * :c:data:`cholesky_ao_num` + * :c:data:`cholesky_mo` + * :c:func:`h_s2_u_0_nstates_zmq` + * :c:func:`h_u_0_nstates_zmq` + * :c:data:`mo_integrals_cache` + * :c:func:`run_slave_cipsi` + * :c:func:`run_slave_main` + * :c:func:`zmq_pt2` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`omp_set_max_active_levels` + * :c:func:`omp_set_nested` + + +.. c:function:: set_order: - File : :file:`utils/need.irp.f` + File : :file:`utils/sort.irp.f_template_90` .. code:: fortran - double precision function rinteg(n,u) + 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:: rintgauss: +.. c:function:: set_order_big: - File : :file:`utils/need.irp.f` + File : :file:`utils/sort.irp.f_template_90` .. code:: fortran - double precision function rintgauss(n) + 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:: sabpartial: +.. c:function:: shank: - File : :file:`utils/need.irp.f` + File : :file:`utils/shank.irp.f` .. code:: fortran - double precision function SABpartial(zA,zB,A,B,nA,nB,gamA,gamB,l) + subroutine shank(array,n,nmax,shank1) - Needs: + Called by: .. 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:func:`shank_general` -.. c:function:: set_order_big: +.. c:function:: shank_function: - File : :file:`utils/sort.irp.f_template_412` + File : :file:`utils/shank.irp.f` .. code:: fortran - subroutine set_order_big(x,iorder,isize) + double precision function shank_function(array,i,n) - 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: +.. c:function:: shank_general: - File : :file:`utils/sort.irp.f_template_293` + File : :file:`utils/shank.irp.f` .. code:: fortran - subroutine sort(x,iorder,isize) + double precision function shank_general(array,n,nmax) - 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:func:`shank` .. c:function:: sorted_dnumber: - File : :file:`utils/sort.irp.f_template_261` + File : :file:`utils/sort.irp.f_template_32` .. code:: fortran @@ -2839,7 +3898,7 @@ Subroutines / functions .. c:function:: sorted_i2number: - File : :file:`utils/sort.irp.f_template_261` + File : :file:`utils/sort.irp.f_template_32` .. code:: fortran @@ -2852,7 +3911,7 @@ Subroutines / functions .. c:function:: sorted_i8number: - File : :file:`utils/sort.irp.f_template_261` + File : :file:`utils/sort.irp.f_template_32` .. code:: fortran @@ -2865,7 +3924,7 @@ Subroutines / functions .. c:function:: sorted_inumber: - File : :file:`utils/sort.irp.f_template_261` + File : :file:`utils/sort.irp.f_template_32` .. code:: fortran @@ -2878,7 +3937,7 @@ Subroutines / functions .. c:function:: sorted_number: - File : :file:`utils/sort.irp.f_template_261` + File : :file:`utils/sort.irp.f_template_32` .. code:: fortran @@ -2888,6 +3947,30 @@ Subroutines / functions Returns the number of sorted elements +.. c:function:: sub_a_at: + + + File : :file:`utils/util.irp.f` + + .. code:: fortran + + subroutine sub_A_At(A, N) + + + + +.. c:function:: sum_a_at: + + + File : :file:`utils/util.irp.f` + + .. code:: fortran + + subroutine sum_A_At(A, N) + + + + .. c:function:: svd: @@ -2902,7 +3985,7 @@ Subroutines / functions LDx : leftmost dimension of x - Dimsneion of A is m x n + Dimension of A is m x n Called by: @@ -2910,10 +3993,15 @@ Subroutines / functions .. hlist:: :columns: 3 + * :c:func:`eigsvd` * :c:func:`mo_as_svd_vectors_of_mo_matrix` * :c:func:`mo_as_svd_vectors_of_mo_matrix_eig` + * :c:func:`mo_coef_new_as_svd_vectors_of_mo_matrix_eig` + * :c:data:`natorbsci` * :c:func:`ortho_canonical` * :c:func:`ortho_lowdin` + * :c:func:`ortho_svd` + * :c:func:`randomized_svd` * :c:data:`s_half` * :c:data:`s_half_inv` @@ -2925,6 +4013,67 @@ Subroutines / functions * :c:func:`dgesvd` +.. c:function:: svd_complex: + + + File : :file:`utils/linear_algebra.irp.f` + + .. code:: fortran + + subroutine svd_complex(A,LDA,U,LDU,D,Vt,LDVt,m,n) + + + Compute A = U.D.Vt + + LDx : leftmost dimension of x + + Dimension of A is m x n + A,U,Vt are complex*16 + D is double precision + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`ortho_canonical_complex` + * :c:func:`ortho_lowdin_complex` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`zgesvd` + + +.. c:function:: svd_symm: + + + File : :file:`utils/linear_algebra.irp.f` + + .. code:: fortran + + subroutine svd_symm(A,LDA,U,LDU,D,Vt,LDVt,m,n) + + + Compute A = U.D.Vt + + LDx : leftmost dimension of x + + Dimension of A is m x n + + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`dgemm` + * :c:func:`dgesvd` + * :c:func:`restore_symmetry` + + .. c:function:: total_memory: @@ -2944,6 +4093,14 @@ Subroutines / functions * :c:func:`print_memory_usage` + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`lock_io` + * :c:func:`unlock_io` + .. c:function:: u_dot_u: @@ -2971,6 +4128,48 @@ Subroutines / functions Compute +.. c:function:: v2_over_x: + + + File : :file:`utils/util.irp.f` + + .. code:: fortran + + subroutine v2_over_x(v,x,res) + + + + +.. c:function:: v_phi: + + + File : :file:`utils/integration.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_theta: + + + File : :file:`utils/integration.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:: wall_time: @@ -2988,21 +4187,53 @@ Subroutines / functions .. hlist:: :columns: 3 + * :c:data:`act_2_rdm_aa_mo` + * :c:data:`act_2_rdm_ab_mo` + * :c:data:`act_2_rdm_bb_mo` + * :c:data:`act_2_rdm_spin_trace_mo` + * :c:data:`act_2_rdm_trans_spin_trace_mo` * :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:func:`apply_mo_rotation` + * :c:data:`bielecci` + * :c:data:`bielecci_no` + * :c:data:`cholesky_ao_num` + * :c:data:`cholesky_mo_transp` + * :c:data:`cholesky_no_1_idx_transp` + * :c:data:`cholesky_no_2_idx_transp` + * :c:data:`cholesky_no_total_transp` + * :c:data:`cholesky_semi_mo_transp_simple` + * :c:func:`diag_hessian_list_opt` + * :c:func:`diag_hessian_opt` + * :c:func:`diagonalization_hessian` + * :c:func:`first_diag_hessian_list_opt` + * :c:func:`first_diag_hessian_opt` + * :c:func:`first_hessian_list_opt` + * :c:func:`first_hessian_opt` + * :c:func:`gradient_list_opt` + * :c:func:`gradient_opt` + * :c:func:`hessian_list_opt` + * :c:func:`hessian_opt` + * :c:data:`mo_two_e_integrals_erf_in_map` + * :c:data:`mo_two_e_integrals_in_map` * :c:data:`output_wall_time_0` * :c:func:`pt2_collector` + * :c:func:`rotation_matrix` + * :c:func:`rotation_matrix_iterative` * :c:func:`run_pt2_slave_large` * :c:func:`run_pt2_slave_small` * :c:func:`run_slave_main` + * :c:data:`state_av_act_2_rdm_aa_mo` + * :c:data:`state_av_act_2_rdm_ab_mo` + * :c:data:`state_av_act_2_rdm_bb_mo` + * :c:data:`state_av_act_2_rdm_spin_trace_mo` + * :c:func:`trust_region_expected_e` + * :c:func:`trust_region_optimal_lambda` + * :c:func:`trust_region_step` * :c:func:`write_time` Calls: @@ -3013,6 +4244,21 @@ Subroutines / functions * :c:func:`system_clock` +.. c:function:: wallis: + + + File : :file:`utils/integration.irp.f` + + .. code:: fortran + + double precision function Wallis(n) + + + Wallis integral: + + $\int_{0}^{\pi} \cos(\theta)^n d\theta$. + + .. c:function:: write_git_log: @@ -3025,3 +4271,157 @@ Subroutines / functions Write the last git commit in file iunit. + +.. c:function:: zboysfun: + + + File : :file:`utils/cpx_boys.irp.f` + + .. code:: fortran + + subroutine zboysfun(n_max, x, vals) + + + + Computes values of the Boys function for n = 0, 1, ..., n_max + for a complex valued argument + + Input: x --- argument, complex*16, Re(x) >= 0 + Output: vals --- values of the Boys function, n = 0, 1, ..., n_max + + Beylkin & Sharma, J. Chem. Phys. 155, 174117 (2021) + https://doi.org/10.1063/5.0062444 + + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`crint_2` + * :c:func:`crint_2_vec` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`zboysfun00_2` + + +.. c:function:: zboysfun00_1: + + + File : :file:`utils/cpx_erf.irp.f` + + .. code:: fortran + + subroutine zboysfun00_1(rho, F0) + + + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`crint_1` + * :c:func:`crint_1_vec` + + +.. c:function:: zboysfun00_2: + + + File : :file:`utils/cpx_erf.irp.f` + + .. code:: fortran + + subroutine zboysfun00_2(z, val) + + + + Computes values of the Boys function for n=0 + for a complex valued argument + + Input: z --- argument, complex*16, Real(z) >= 0 + Output: val --- value of the Boys function n=0 + + Beylkin & Sharma, J. Chem. Phys. 155, 174117 (2021) + https://doi.org/10.1063/5.0062444 + + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`zboysfun` + + +.. c:function:: zboysfun00nrp: + + + File : :file:`utils/cpx_erf.irp.f` + + .. code:: fortran + + subroutine zboysfun00nrp(z, val) + + + + Computes values of the exp(z) F(0,z) + (where F(0,z) is the Boys function) + for a complex valued argument with Real(z)<=0 + + Input: z --- argument, complex*16, !!! Real(z)<=0 !!! + Output: val --- value of the function !!! exp(z) F(0,z) !!!, where F(0,z) is the Boys function + + Beylkin & Sharma, J. Chem. Phys. 155, 174117 (2021) + https://doi.org/10.1063/5.0062444 + + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`zboysfunnrp` + + +.. c:function:: zboysfunnrp: + + + File : :file:`utils/cpx_boys.irp.f` + + .. code:: fortran + + subroutine zboysfunnrp(n_max, x, vals) + + + + Computes values of e^z F(n,z) for n = 0, 1, ..., n_max + (where F(n,z) are the Boys functions) + for a complex valued argument WITH NEGATIVE REAL PART + + Input: x --- argument, complex *16 Re(x)<=0 + Output: vals --- values of e^z F(n,z), n = 0, 1, ..., n_max + + Beylkin & Sharma, J. Chem. Phys. 155, 174117 (2021) + https://doi.org/10.1063/5.0062444 + + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`crint_2` + * :c:func:`crint_2_vec` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`zboysfun00nrp` + diff --git a/docs/source/modules/zmq.rst b/docs/source/modules/zmq.rst index 18ffb8531..3d88a2458 100644 --- a/docs/source/modules/zmq.rst +++ b/docs/source/modules/zmq.rst @@ -381,6 +381,13 @@ Subroutines / functions * :c:data:`zmq_state` + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`sscanf_ssds` + .. c:function:: disconnect_from_taskserver: @@ -414,12 +421,12 @@ Subroutines / functions Disconnect from the task server - Needs: + Calls: .. hlist:: :columns: 3 - * :c:data:`zmq_state` + * :c:func:`sscanf_ss` .. c:function:: end_parallel_job: @@ -439,8 +446,8 @@ Subroutines / functions .. hlist:: :columns: 3 - * :c:data:`zmq_state` * :c:data:`zmq_context` + * :c:data:`zmq_state` Called by: @@ -450,6 +457,7 @@ Subroutines / functions * :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:`h_u_0_nstates_zmq` * :c:func:`zmq_pt2` * :c:func:`zmq_selection` @@ -555,6 +563,8 @@ Subroutines / functions * :c:func:`ao_two_e_integrals_erf_in_map_slave` * :c:func:`ao_two_e_integrals_in_map_slave` + * :c:func:`davidson_csf_run_slave` + * :c:func:`davidson_nos2_run_slave` * :c:func:`davidson_run_slave` * :c:func:`run_pt2_slave_large` * :c:func:`run_pt2_slave_small` @@ -627,6 +637,8 @@ Subroutines / functions * :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_csf_run_slave` + * :c:func:`davidson_nos2_run_slave` * :c:func:`davidson_run_slave` * :c:func:`end_parallel_job` * :c:func:`pt2_collector` @@ -655,6 +667,13 @@ Subroutines / functions * :c:data:`zmq_state` + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`sscanf_sd` + .. c:function:: get_tasks_from_taskserver: @@ -693,9 +712,9 @@ Subroutines / functions .. hlist:: :columns: 3 - * :c:data:`zmq_state` - * :c:data:`zmq_socket_pull_tcp_address` * :c:data:`zmq_context` + * :c:data:`zmq_socket_pull_tcp_address` + * :c:data:`zmq_state` Called by: @@ -705,6 +724,7 @@ Subroutines / functions * :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:`h_u_0_nstates_zmq` * :c:func:`zmq_pt2` * :c:func:`zmq_selection` @@ -735,8 +755,8 @@ Subroutines / functions .. hlist:: :columns: 3 - * :c:data:`zmq_socket_pull_tcp_address` * :c:data:`zmq_context` + * :c:data:`zmq_socket_pull_tcp_address` Calls: @@ -765,8 +785,8 @@ Subroutines / functions :columns: 3 * :c:data:`qp_run_address` - * :c:data:`zmq_socket_pull_tcp_address` * :c:data:`zmq_context` + * :c:data:`zmq_socket_pull_tcp_address` Calls: @@ -795,8 +815,8 @@ Subroutines / functions .. hlist:: :columns: 3 - * :c:data:`zmq_socket_pull_tcp_address` * :c:data:`zmq_context` + * :c:data:`zmq_socket_pull_tcp_address` Calls: @@ -824,8 +844,8 @@ Subroutines / functions .. hlist:: :columns: 3 - * :c:data:`zmq_socket_pull_tcp_address` * :c:data:`zmq_context` + * :c:data:`zmq_socket_pull_tcp_address` Calls: @@ -1185,8 +1205,8 @@ Subroutines / functions .. hlist:: :columns: 3 - * :c:data:`zmq_state` * :c:data:`mpi_master` + * :c:data:`zmq_state` .. c:function:: zmq_get8_ivector: @@ -1206,8 +1226,8 @@ Subroutines / functions .. hlist:: :columns: 3 - * :c:data:`zmq_state` * :c:data:`mpi_master` + * :c:data:`zmq_state` .. c:function:: zmq_get_dmatrix: @@ -1227,8 +1247,8 @@ Subroutines / functions .. hlist:: :columns: 3 - * :c:data:`zmq_state` * :c:data:`mpi_master` + * :c:data:`zmq_state` .. c:function:: zmq_get_dvector: @@ -1248,8 +1268,8 @@ Subroutines / functions .. hlist:: :columns: 3 - * :c:data:`zmq_state` * :c:data:`mpi_master` + * :c:data:`zmq_state` .. c:function:: zmq_get_i8matrix: @@ -1269,8 +1289,8 @@ Subroutines / functions .. hlist:: :columns: 3 - * :c:data:`zmq_state` * :c:data:`mpi_master` + * :c:data:`zmq_state` .. c:function:: zmq_get_imatrix: @@ -1290,8 +1310,8 @@ Subroutines / functions .. hlist:: :columns: 3 - * :c:data:`zmq_state` * :c:data:`mpi_master` + * :c:data:`zmq_state` .. c:function:: zmq_get_int: @@ -1311,8 +1331,8 @@ Subroutines / functions .. hlist:: :columns: 3 - * :c:data:`zmq_state` * :c:data:`mpi_master` + * :c:data:`zmq_state` .. c:function:: zmq_get_int_nompi: @@ -1352,8 +1372,8 @@ Subroutines / functions .. hlist:: :columns: 3 - * :c:data:`zmq_state` * :c:data:`mpi_master` + * :c:data:`zmq_state` .. c:function:: zmq_port: diff --git a/docs/source/programmers_guide/index_providers.rst b/docs/source/programmers_guide/index_providers.rst index c6fd01477..5596f1c4d 100644 --- a/docs/source/programmers_guide/index_providers.rst +++ b/docs/source/programmers_guide/index_providers.rst @@ -5,21 +5,51 @@ Index of Providers * :c:data:`abs_psi_coef_max` * :c:data:`abs_psi_coef_min` + * :c:data:`absolute_eig` + * :c:data:`act_2_rdm_aa_mo` + * :c:data:`act_2_rdm_ab_mo` + * :c:data:`act_2_rdm_bb_mo` + * :c:data:`act_2_rdm_spin_trace_mo` + * :c:data:`act_2_rdm_trans_spin_trace_mo` * :c:data:`act_bitmask` + * :c:data:`act_mos_in_r_array` + * :c:data:`act_mos_in_r_array_transp` + * :c:data:`act_mos_opt` + * :c:data:`adaptive_pt2_max` + * :c:data:`aijpqcontainer` + * :c:data:`aijpqmatrixdimslist` + * :c:data:`all_shells_closed` + * :c:data:`alpha_dens_kin_in_r` * :c:data:`alpha_knowles` * :c:data:`angular_quadrature_points` + * :c:data:`angular_quadrature_points_extra` + * :c:data:`ao_2e_cgtos_schwartz` + * :c:data:`ao_2e_cosgtos_schwartz` + * :c:data:`ao_abs_int_grid` * :c:data:`ao_cart_to_sphe_coef` * :c:data:`ao_cart_to_sphe_inv` * :c:data:`ao_cart_to_sphe_num` * :c:data:`ao_cart_to_sphe_overlap` * :c:data:`ao_cartesian` + * :c:data:`ao_cholesky_threshold` * :c:data:`ao_coef` + * :c:data:`ao_coef_cgtos_norm_ord_transp` + * :c:data:`ao_coef_norm_cgtos` + * :c:data:`ao_coef_norm_cgtos_ord` + * :c:data:`ao_coef_norm_cosgtos` + * :c:data:`ao_coef_norm_ord_cosgtos` + * :c:data:`ao_coef_norm_ord_transp_cosgtos` * :c:data:`ao_coef_normalization_factor` - * :c:data:`ao_coef_normalization_libint_factor` * :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_deriv2_cgtos_x` + * :c:data:`ao_deriv2_cgtos_y` + * :c:data:`ao_deriv2_cgtos_z` + * :c:data:`ao_deriv2_cosgtos_x` + * :c:data:`ao_deriv2_cosgtos_y` + * :c:data:`ao_deriv2_cosgtos_z` * :c:data:`ao_deriv2_x` * :c:data:`ao_deriv2_y` * :c:data:`ao_deriv2_z` @@ -30,32 +60,59 @@ Index of Providers * :c:data:`ao_dipole_y` * :c:data:`ao_dipole_z` * :c:data:`ao_effective_one_e_potential` + * :c:data:`ao_effective_one_e_potential_sa` * :c:data:`ao_effective_one_e_potential_without_kin` + * :c:data:`ao_effective_one_e_potential_without_kin_sa` * :c:data:`ao_expo` + * :c:data:`ao_expo_cgtos_ord` + * :c:data:`ao_expo_cgtos_ord_transp` + * :c:data:`ao_expo_im` + * :c:data:`ao_expo_ord_cosgtos` + * :c:data:`ao_expo_ord_transp_cosgtos` * :c:data:`ao_expo_ordered` * :c:data:`ao_expo_ordered_transp` * :c:data:`ao_expo_ordered_transp_per_nucl` + * :c:data:`ao_expo_phase` + * :c:data:`ao_expo_phase_ord` + * :c:data:`ao_expo_phase_ord_transp` + * :c:data:`ao_expo_pw` + * :c:data:`ao_expo_pw_ord` + * :c:data:`ao_expo_pw_ord_transp` + * :c:data:`ao_expoim_cosgtos` + * :c:data:`ao_first_of_shell` * :c:data:`ao_integrals_cache` * :c:data:`ao_integrals_cache_max` * :c:data:`ao_integrals_cache_min` + * :c:data:`ao_integrals_cache_periodic` * :c:data:`ao_integrals_erf_cache` * :c:data:`ao_integrals_erf_cache_max` * :c:data:`ao_integrals_erf_cache_min` * :c:data:`ao_integrals_erf_map` * :c:data:`ao_integrals_map` * :c:data:`ao_integrals_n_e` + * :c:data:`ao_integrals_n_e_cgtos` + * :c:data:`ao_integrals_n_e_cosgtos` + * :c:data:`ao_integrals_n_e_imag` * :c:data:`ao_integrals_n_e_per_atom` + * :c:data:`ao_integrals_pt_chrg` * :c:data:`ao_integrals_threshold` * :c:data:`ao_kinetic_integrals` + * :c:data:`ao_kinetic_integrals_cgtos` + * :c:data:`ao_kinetic_integrals_cosgtos` + * :c:data:`ao_kinetic_integrals_imag` * :c:data:`ao_l` * :c:data:`ao_l_char` * :c:data:`ao_l_char_space` * :c:data:`ao_l_max` * :c:data:`ao_md5` + * :c:data:`ao_normalized` * :c:data:`ao_nucl` * :c:data:`ao_num` * :c:data:`ao_one_e_integrals` * :c:data:`ao_one_e_integrals_diag` + * :c:data:`ao_one_e_integrals_from_mo` + * :c:data:`ao_one_e_integrals_imag` + * :c:data:`ao_one_e_integrals_threshold` * :c:data:`ao_ortho_canonical_coef` * :c:data:`ao_ortho_canonical_coef_inv` * :c:data:`ao_ortho_canonical_nucl_elec_integrals` @@ -66,6 +123,17 @@ Index of Providers * :c:data:`ao_ortho_lowdin_overlap` * :c:data:`ao_overlap` * :c:data:`ao_overlap_abs` + * :c:data:`ao_overlap_abs_grid` + * :c:data:`ao_overlap_cgtos` + * :c:data:`ao_overlap_cgtos_x` + * :c:data:`ao_overlap_cgtos_y` + * :c:data:`ao_overlap_cgtos_z` + * :c:data:`ao_overlap_complex` + * :c:data:`ao_overlap_cosgtos` + * :c:data:`ao_overlap_cosgtos_x` + * :c:data:`ao_overlap_cosgtos_y` + * :c:data:`ao_overlap_cosgtos_z` + * :c:data:`ao_overlap_imag` * :c:data:`ao_overlap_x` * :c:data:`ao_overlap_y` * :c:data:`ao_overlap_z` @@ -75,64 +143,93 @@ Index of Providers * :c:data:`ao_power_ordered_transp_per_nucl` * :c:data:`ao_prim_num` * :c:data:`ao_prim_num_max` + * :c:data:`ao_prod_abs_r` + * :c:data:`ao_prod_center` + * :c:data:`ao_prod_dist_grid` + * :c:data:`ao_prod_sigma` * :c:data:`ao_pseudo_integrals` * :c:data:`ao_pseudo_integrals_local` * :c:data:`ao_pseudo_integrals_non_local` + * :c:data:`ao_shell` * :c:data:`ao_spread_x` * :c:data:`ao_spread_y` * :c:data:`ao_spread_z` * :c:data:`ao_two_e_integral_alpha` + * :c:data:`ao_two_e_integral_alpha_chol` * :c:data:`ao_two_e_integral_beta` + * :c:data:`ao_two_e_integral_beta_chol` * :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:`aos_dsr_vc_alpha_pbe_w` - * :c:data:`aos_dsr_vc_beta_pbe_w` - * :c:data:`aos_dsr_vx_alpha_pbe_w` - * :c:data:`aos_dsr_vx_beta_pbe_w` - * :c:data:`aos_dsr_vxc_alpha_pbe_w` - * :c:data:`aos_dsr_vxc_beta_pbe_w` - * :c:data:`aos_dvc_alpha_pbe_w` - * :c:data:`aos_dvc_beta_pbe_w` - * :c:data:`aos_dvx_alpha_pbe_w` - * :c:data:`aos_dvx_beta_pbe_w` - * :c:data:`aos_dvxc_alpha_pbe_w` - * :c:data:`aos_dvxc_beta_pbe_w` + * :c:data:`aos_d_vc_alpha_pbe_w` + * :c:data:`aos_d_vc_alpha_sr_pbe_w` + * :c:data:`aos_d_vc_beta_pbe_w` + * :c:data:`aos_d_vc_beta_sr_pbe_w` + * :c:data:`aos_d_vx_alpha_pbe_w` + * :c:data:`aos_d_vx_alpha_sr_pbe_w` + * :c:data:`aos_d_vx_beta_pbe_w` + * :c:data:`aos_d_vx_beta_sr_pbe_w` + * :c:data:`aos_d_vxc_alpha_pbe_w` + * :c:data:`aos_d_vxc_alpha_sr_pbe_w` + * :c:data:`aos_d_vxc_beta_pbe_w` + * :c:data:`aos_d_vxc_beta_sr_pbe_w` * :c:data:`aos_grad_in_r_array` + * :c:data:`aos_grad_in_r_array_extra` * :c:data:`aos_grad_in_r_array_transp` - * :c:data:`aos_grad_in_r_array_transp_xyz` + * :c:data:`aos_grad_in_r_array_transp_3` + * :c:data:`aos_grad_in_r_array_transp_bis` * :c:data:`aos_in_r_array` - * :c:data:`aos_in_r_array_per_atom` - * :c:data:`aos_in_r_array_per_atom_transp` + * :c:data:`aos_in_r_array_extra` + * :c:data:`aos_in_r_array_extra_transp` * :c:data:`aos_in_r_array_transp` * :c:data:`aos_lapl_in_r_array` * :c:data:`aos_lapl_in_r_array_transp` * :c:data:`aos_sr_vc_alpha_lda_w` - * :c:data:`aos_sr_vc_alpha_pbe_w` * :c:data:`aos_sr_vc_beta_lda_w` - * :c:data:`aos_sr_vc_beta_pbe_w` * :c:data:`aos_sr_vx_alpha_lda_w` - * :c:data:`aos_sr_vx_alpha_pbe_w` * :c:data:`aos_sr_vx_beta_lda_w` - * :c:data:`aos_sr_vx_beta_pbe_w` * :c:data:`aos_sr_vxc_alpha_lda_w` - * :c:data:`aos_sr_vxc_alpha_pbe_w` * :c:data:`aos_sr_vxc_beta_lda_w` - * :c:data:`aos_sr_vxc_beta_pbe_w` * :c:data:`aos_vc_alpha_lda_w` * :c:data:`aos_vc_alpha_pbe_w` + * :c:data:`aos_vc_alpha_sr_pbe_w` * :c:data:`aos_vc_beta_lda_w` * :c:data:`aos_vc_beta_pbe_w` + * :c:data:`aos_vc_beta_sr_pbe_w` * :c:data:`aos_vx_alpha_lda_w` * :c:data:`aos_vx_alpha_pbe_w` + * :c:data:`aos_vx_alpha_sr_pbe_w` * :c:data:`aos_vx_beta_lda_w` * :c:data:`aos_vx_beta_pbe_w` + * :c:data:`aos_vx_beta_sr_pbe_w` * :c:data:`aos_vxc_alpha_lda_w` * :c:data:`aos_vxc_alpha_pbe_w` + * :c:data:`aos_vxc_alpha_sr_pbe_w` * :c:data:`aos_vxc_beta_lda_w` * :c:data:`aos_vxc_beta_pbe_w` + * :c:data:`aos_vxc_beta_sr_pbe_w` + * :c:data:`attachment_numbers_sorted` + * :c:data:`attachment_orbitals` + * :c:data:`au_to_d` + * :c:data:`average_on_top` + * :c:data:`avoid_saddle` + * :c:data:`backend` + * :c:data:`banned_excitation` * :c:data:`barycentric_electronic_energy` + * :c:data:`basis` + * :c:data:`basis_mos_in_r_array` + * :c:data:`basis_nucleus_index` + * :c:data:`bavard` + * :c:data:`best_overlap_casscf` + * :c:data:`best_vector_ovrlp_casscf` + * :c:data:`beta_dens_kin_in_r` + * :c:data:`bielec_pqxx_array` + * :c:data:`bielec_pqxx_no_array` + * :c:data:`bielec_pxxq_array` + * :c:data:`bielec_pxxq_no_array` + * :c:data:`bielecci` + * :c:data:`bielecci_no` * :c:data:`big_array_coulomb_integrals` * :c:data:`big_array_exchange_integrals` * :c:data:`binom` @@ -140,6 +237,10 @@ Index of Providers * :c:data:`binom_int_transp` * :c:data:`binom_transp` * :c:data:`c0_weight` + * :c:data:`calc_dipole_moment` + * :c:data:`calc_energy_components` + * :c:data:`calc_osc_str` + * :c:data:`calc_tr_dipole_moment` * :c:data:`cart_to_sphe_0` * :c:data:`cart_to_sphe_1` * :c:data:`cart_to_sphe_2` @@ -150,23 +251,48 @@ Index of Providers * :c:data:`cart_to_sphe_7` * :c:data:`cart_to_sphe_8` * :c:data:`cart_to_sphe_9` - * :c:data:`cas_bitmask` * :c:data:`center_of_mass` + * :c:data:`cfg_nsomo_max` + * :c:data:`cfg_seniority_index` + * :c:data:`cholesky_ao` + * :c:data:`cholesky_ao_num` + * :c:data:`cholesky_ao_transp` + * :c:data:`cholesky_mo` + * :c:data:`cholesky_mo_num` + * :c:data:`cholesky_mo_transp` + * :c:data:`cholesky_no_1_idx_transp` + * :c:data:`cholesky_no_2_idx_transp` + * :c:data:`cholesky_no_total_transp` + * :c:data:`cholesky_semi_mo_transp_simple` * :c:data:`ci_eigenvectors` * :c:data:`ci_electronic_energy` * :c:data:`ci_energy` + * :c:data:`ci_energy_no_diag` * :c:data:`ci_s2` * :c:data:`closed_shell_ref_bitmask` * :c:data:`coef_hf_selector` + * :c:data:`colsmax` * :c:data:`core_bitmask` + * :c:data:`core_density` * :c:data:`core_energy` * :c:data:`core_energy_erf` * :c:data:`core_fock_operator` * :c:data:`core_fock_operator_erf` * :c:data:`core_inact_act_bitmask_4` + * :c:data:`core_inact_act_mos_grad_in_r_array` + * :c:data:`core_inact_act_mos_in_r_array` + * :c:data:`core_inact_act_mos_in_r_array_transp` + * :c:data:`core_inact_act_v_kl_contracted` * :c:data:`core_inact_virt_bitmask` + * :c:data:`core_mos_in_r_array` + * :c:data:`core_mos_in_r_array_transp` * :c:data:`correlation_energy_ratio_max` * :c:data:`correlation_functional` + * :c:data:`criterion_casscf` + * :c:data:`csf_based` + * :c:data:`d0tu` + * :c:data:`d0tu_alpha_ao` + * :c:data:`d0tu_beta_ao` * :c:data:`damping_for_rs_dft` * :c:data:`data_energy_proj` * :c:data:`data_energy_var` @@ -174,7 +300,6 @@ Index of Providers * :c:data:`data_one_e_dm_alpha_mo` * :c:data:`data_one_e_dm_beta_ao` * :c:data:`data_one_e_dm_beta_mo` - * :c:data:`davidson_criterion` * :c:data:`davidson_sze_max` * :c:data:`degree_max_generators` * :c:data:`degree_max_integration_lebedev` @@ -183,37 +308,64 @@ Index of Providers * :c:data:`density_for_dft` * :c:data:`det_alpha_norm` * :c:data:`det_beta_norm` - * :c:data:`det_to_occ_pattern` + * :c:data:`det_to_configuration` + * :c:data:`dettachment_numbers_sorted` + * :c:data:`dettachment_orbitals` + * :c:data:`dettocsftransformationmatrix` * :c:data:`dft_type` * :c:data:`diag_algorithm` + * :c:data:`diag_hess_cas` * :c:data:`diagonal_h_matrix_on_psi_det` + * :c:data:`difference_dm` + * :c:data:`difference_dm_eigval` + * :c:data:`difference_dm_eigvect` * :c:data:`dim_list_act_orb` + * :c:data:`dim_list_core_inact_orb` * :c:data:`dim_list_core_orb` * :c:data:`dim_list_del_orb` * :c:data:`dim_list_inact_orb` * :c:data:`dim_list_virt_orb` - * :c:data:`disk_access_nuclear_repulsion` + * :c:data:`dim_n_max_overlap` * :c:data:`disk_based_davidson` * :c:data:`distributed_davidson` + * :c:data:`do_ao_cholesky` * :c:data:`do_ddci` * :c:data:`do_direct_integrals` + * :c:data:`do_mo_cholesky` + * :c:data:`do_mom` * :c:data:`do_only_1h1p` + * :c:data:`do_only_cas` + * :c:data:`do_ormas` * :c:data:`do_pseudo` * :c:data:`do_pt2` + * :c:data:`do_signed_mono_excitation` + * :c:data:`do_spinfree_mono_excitation` + * :c:data:`dominant_cfg` + * :c:data:`dominant_det` + * :c:data:`dominant_dets_of_cfgs` * :c:data:`double_exc_bitmask` * :c:data:`double_index_selectors` + * :c:data:`dr_radial_extra_integral` * :c:data:`dr_radial_integral` * :c:data:`dressed_column_idx` * :c:data:`dressing_column_h` * :c:data:`dressing_column_s` + * :c:data:`dressing_delta` * :c:data:`dtranspose` * :c:data:`e_corr_double_only` * :c:data:`e_corr_per_selectors` * :c:data:`e_corr_second_order` * :c:data:`e_correlation_dft` * :c:data:`e_exchange_dft` + * :c:data:`ecore` + * :c:data:`ecore_bis` + * :c:data:`effective_alpha_dm` + * :c:data:`effective_beta_dm` * :c:data:`effective_one_e_potential` + * :c:data:`effective_one_e_potential_sa` * :c:data:`effective_one_e_potential_without_kin` + * :c:data:`effective_one_e_potential_without_kin_sa` + * :c:data:`effective_spin_dm` * :c:data:`eigenvalues_fock_matrix_ao` * :c:data:`eigenvectors_fock_matrix_ao` * :c:data:`eigenvectors_fock_matrix_mo` @@ -222,6 +374,7 @@ Index of Providers * :c:data:`elec_beta_num` * :c:data:`elec_beta_num_grid_becke` * :c:data:`elec_num` + * :c:data:`elec_num_grid_becke` * :c:data:`elec_num_tab` * :c:data:`element_mass` * :c:data:`element_name` @@ -231,32 +384,65 @@ Index of Providers * :c:data:`energy_c_pbe` * :c:data:`energy_c_sr_lda` * :c:data:`energy_c_sr_pbe` + * :c:data:`energy_improvement` * :c:data:`energy_iterations` - * :c:data:`energy_sr_c_lda` - * :c:data:`energy_sr_c_pbe` - * :c:data:`energy_sr_x_lda` - * :c:data:`energy_sr_x_pbe` * :c:data:`energy_x` * :c:data:`energy_x_lda` * :c:data:`energy_x_none` * :c:data:`energy_x_pbe` * :c:data:`energy_x_sr_lda` * :c:data:`energy_x_sr_pbe` + * :c:data:`eone` + * :c:data:`eone_bis` + * :c:data:`etwo` + * :c:data:`etwo_bis` + * :c:data:`etwo_ter` * :c:data:`exc_degree_per_selectors` * :c:data:`exchange_functional` + * :c:data:`excit` + * :c:data:`excit_class` + * :c:data:`excitation_alpha_max` + * :c:data:`excitation_beta_max` + * :c:data:`excitation_max` + * :c:data:`excitation_ref` * :c:data:`expected_s2` + * :c:data:`export_ao_one_e_ints` + * :c:data:`export_ao_two_e_ints` + * :c:data:`export_ao_two_e_ints_cholesky` + * :c:data:`export_basis` + * :c:data:`export_mo_one_e_ints` + * :c:data:`export_mo_two_e_ints` + * :c:data:`export_mo_two_e_ints_cholesky` + * :c:data:`export_mos` + * :c:data:`export_rdm` * :c:data:`extra_e_contrib_density` + * :c:data:`extra_grid_type_sgn` + * :c:data:`extra_rad_grid_type` * :c:data:`extrapolate_fock_matrix` * :c:data:`extrapolated_energy` * :c:data:`ezfio_filename` * :c:data:`ezfio_work_dir` + * :c:data:`ezfio_work_dir_pid` + * :c:data:`f_hf_cholesky` + * :c:data:`f_hf_cholesky_sparse` + * :c:data:`f_hf_cholesky_sparse_bis` + * :c:data:`f_psi_cas_ab` + * :c:data:`f_psi_cas_ab_old` + * :c:data:`f_psi_hf_ab` * :c:data:`fact_inv` + * :c:data:`fapq` + * :c:data:`fast_2rdm` * :c:data:`file_lock` * :c:data:`final_grid_points` + * :c:data:`final_grid_points_extra` * :c:data:`final_grid_points_per_atom` + * :c:data:`final_grid_points_transp` * :c:data:`final_weight_at_r` + * :c:data:`final_weight_at_r_extra` * :c:data:`final_weight_at_r_vector` + * :c:data:`final_weight_at_r_vector_extra` * :c:data:`final_weight_at_r_vector_per_atom` + * :c:data:`fipq` * :c:data:`fock_matrix_alpha_no_xc_ao` * :c:data:`fock_matrix_ao` * :c:data:`fock_matrix_ao_alpha` @@ -274,54 +460,101 @@ Index of Providers * :c:data:`frozen_orb_scf` * :c:data:`full_ijkl_bitmask` * :c:data:`full_ijkl_bitmask_4` + * :c:data:`full_occ_2_rdm_aa_mo` + * :c:data:`full_occ_2_rdm_ab_mo` + * :c:data:`full_occ_2_rdm_bb_mo` + * :c:data:`full_occ_2_rdm_cntrctd` + * :c:data:`full_occ_2_rdm_cntrctd_trans` + * :c:data:`full_occ_2_rdm_spin_trace_mo` + * :c:data:`full_occ_v_kl_cntrctd` * :c:data:`gauleg_t2` * :c:data:`gauleg_w` * :c:data:`general_primitive_integral` + * :c:data:`general_primitive_integral_cgtos` + * :c:data:`general_primitive_integral_cosgtos` * :c:data:`general_primitive_integral_erf` * :c:data:`generators_bitmask` - * :c:data:`generators_bitmask_restart` * :c:data:`gga_sr_type_functionals` - * :c:data:`gga_type_functionals` - * :c:data:`give_polynomial_mult_center_one_e_erf` - * :c:data:`give_polynomial_mult_center_one_e_erf_opt` + * :c:data:`give_cpolynom_mult_center_x` + * :c:data:`give_cpolynomial_mult_center_one_e` + * :c:data:`give_explicit_cpoly_and_cgaussian` + * :c:data:`give_explicit_cpoly_and_cgaussian_x` * :c:data:`global_selection_buffer` * :c:data:`global_selection_buffer_lock` + * :c:data:`grad_effective_alpha_dm` + * :c:data:`grad_effective_beta_dm` + * :c:data:`grad_effective_spin_dm` + * :c:data:`grad_total_cas_on_top_density` + * :c:data:`gradvec2` + * :c:data:`gradvec_old` * :c:data:`grid_atomic_number` + * :c:data:`grid_points_extra_per_atom` + * :c:data:`grid_points_extra_radial` * :c:data:`grid_points_per_atom` * :c:data:`grid_points_radial` * :c:data:`grid_type_sgn` * :c:data:`h0_type` * :c:data:`h_apply_buffer_allocated` * :c:data:`h_apply_buffer_lock` + * :c:data:`h_core_ri` * :c:data:`h_matrix_all_dets` * :c:data:`h_matrix_cas` + * :c:data:`h_matrix_diag_all_dets` + * :c:data:`ha_to_ev` + * :c:data:`ha_to_j` + * :c:data:`ha_to_nm` + * :c:data:`hess_cv_cv` + * :c:data:`hessdiag` + * :c:data:`hessmat` + * :c:data:`hessmat_old` + * :c:data:`hessmat_peter` * :c:data:`hf_bitmask` * :c:data:`hf_energy` * :c:data:`hf_exchange` + * :c:data:`hf_kinetic_energy` + * :c:data:`hf_n_e_energy` * :c:data:`hf_one_electron_energy` * :c:data:`hf_two_electron_energy` - * :c:data:`i2radix_sort` - * :c:data:`i8radix_sort` - * :c:data:`i8radix_sort_big` - * :c:data:`i_bitmask_gen` * :c:data:`i_h_hf_per_selectors` * :c:data:`i_x1_new` + * :c:data:`i_x1_new_cgtos` + * :c:data:`i_x1_new_cosgtos` * :c:data:`i_x1_pol_mult_a1` + * :c:data:`i_x1_pol_mult_a1_cgtos` + * :c:data:`i_x1_pol_mult_a1_cosgtos` * :c:data:`i_x1_pol_mult_a2` + * :c:data:`i_x1_pol_mult_a2_cgtos` + * :c:data:`i_x1_pol_mult_a2_cosgtos` * :c:data:`i_x1_pol_mult_one_e` + * :c:data:`i_x1_pol_mult_one_e_cgtos` + * :c:data:`i_x1_pol_mult_one_e_cosgtos` * :c:data:`i_x1_pol_mult_recurs` + * :c:data:`i_x1_pol_mult_recurs_cgtos` + * :c:data:`i_x1_pol_mult_recurs_cosgtos` * :c:data:`i_x2_new` + * :c:data:`i_x2_new_cgtos` + * :c:data:`i_x2_new_cosgtos` * :c:data:`i_x2_pol_mult` + * :c:data:`i_x2_pol_mult_cgtos` + * :c:data:`i_x2_pol_mult_cosgtos` * :c:data:`i_x2_pol_mult_one_e` + * :c:data:`i_x2_pol_mult_one_e_cgtos` + * :c:data:`i_x2_pol_mult_one_e_cosgtos` * :c:data:`idx_cas` * :c:data:`idx_non_cas` * :c:data:`inact_bitmask` + * :c:data:`inact_density` + * :c:data:`inact_mos_in_r_array` + * :c:data:`inact_mos_in_r_array_transp` * :c:data:`inact_virt_bitmask` * :c:data:`index_final_points` + * :c:data:`index_final_points_extra` + * :c:data:`index_final_points_extra_reverse` * :c:data:`index_final_points_per_atom` * :c:data:`index_final_points_per_atom_reverse` * :c:data:`index_final_points_reverse` * :c:data:`index_holes_bitmask` + * :c:data:`index_orb_swap` * :c:data:`index_particl_bitmask` * :c:data:`inertia_tensor` * :c:data:`inertia_tensor_eigenvalues` @@ -334,56 +567,124 @@ Index of Providers * :c:data:`inv_int` * :c:data:`inv_selectors_coef_hf` * :c:data:`inv_selectors_coef_hf_squared` - * :c:data:`io_ao_integrals_e_n` + * :c:data:`io_ao_cholesky` * :c:data:`io_ao_integrals_kinetic` + * :c:data:`io_ao_integrals_n_e` * :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_cholesky` * :c:data:`io_mo_integrals_kinetic` + * :c:data:`io_mo_integrals_n_e` * :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:`iradix_sort` - * :c:data:`iradix_sort_big` + * :c:data:`io_mu_of_r` + * :c:data:`io_nuclear_repulsion` + * :c:data:`io_two_body_rdm_aa` + * :c:data:`io_two_body_rdm_ab` + * :c:data:`io_two_body_rdm_bb` + * :c:data:`io_two_body_rdm_spin_trace` + * :c:data:`is_periodic` * :c:data:`is_zmq_slave` + * :c:data:`json_array_close_fmt` + * :c:data:`json_array_close_fmtx` + * :c:data:`json_array_close_uopen_fmt` + * :c:data:`json_array_open_fmt` + * :c:data:`json_array_uopen_fmt` + * :c:data:`json_dict_close_fmt` + * :c:data:`json_dict_close_fmtx` + * :c:data:`json_dict_close_uopen_fmt` + * :c:data:`json_dict_open_fmt` + * :c:data:`json_dict_uopen_fmt` + * :c:data:`json_false_fmt` + * :c:data:`json_false_fmtx` + * :c:data:`json_filename` + * :c:data:`json_int_fmt` + * :c:data:`json_int_fmtx` + * :c:data:`json_real_fmt` + * :c:data:`json_real_fmtx` + * :c:data:`json_str_fmt` + * :c:data:`json_str_fmtx` + * :c:data:`json_true_fmt` + * :c:data:`json_true_fmtx` + * :c:data:`json_unit` + * :c:data:`kinetic_density_generalized` * :c:data:`ks_energy` * :c:data:`l_to_character` + * :c:data:`lccsd_coef` + * :c:data:`lccsd_energies` * :c:data:`level_shift` + * :c:data:`level_shift_casscf` + * :c:data:`light_speed` + * :c:data:`lin_dep_cutoff` * :c:data:`list_act` * :c:data:`list_act_reverse` + * :c:data:`list_all_but_del_orb` + * :c:data:`list_attachment` + * :c:data:`list_basis` * :c:data:`list_core` + * :c:data:`list_core_inact` * :c:data:`list_core_inact_act` * :c:data:`list_core_inact_act_reverse` + * :c:data:`list_core_inact_reverse` * :c:data:`list_core_reverse` + * :c:data:`list_couple_hf_orb_r1` + * :c:data:`list_couple_hf_orb_r2` * :c:data:`list_del` * :c:data:`list_del_reverse` + * :c:data:`list_dettachment` + * :c:data:`list_idx_a_v` + * :c:data:`list_idx_c_a` + * :c:data:`list_idx_c_v` * :c:data:`list_inact` * :c:data:`list_inact_act` + * :c:data:`list_inact_act_reverse` * :c:data:`list_inact_reverse` + * :c:data:`list_valence_orb_for_hf` * :c:data:`list_virt` * :c:data:`list_virt_reverse` + * :c:data:`lowest_super_ci_coef_mo` * :c:data:`m_knowles` + * :c:data:`mat_idx_a_v` + * :c:data:`mat_idx_c_a` + * :c:data:`mat_idx_c_v` + * :c:data:`mat_tmp_dm_super_ci` * :c:data:`max_degree_exc` * :c:data:`max_dim_diis` * :c:data:`max_exc_pert` + * :c:data:`max_overlap` + * :c:data:`maxdetdimperbf` + * :c:data:`mcscf_fock_alpha_ao` + * :c:data:`mcscf_fock_alpha_mo` + * :c:data:`mcscf_fock_beta_ao` + * :c:data:`mcscf_fock_beta_mo` + * :c:data:`mcscf_fock_diag_mo` + * :c:data:`mcscf_fock_mo` * :c:data:`mo_class` * :c:data:`mo_coef` + * :c:data:`mo_coef_aux` * :c:data:`mo_coef_begin_iteration` + * :c:data:`mo_coef_imag` * :c:data:`mo_coef_in_ao_ortho_basis` * :c:data:`mo_coef_transp` + * :c:data:`mo_deriv_1_x` + * :c:data:`mo_deriv_1_y` + * :c:data:`mo_deriv_1_z` * :c:data:`mo_dipole_x` * :c:data:`mo_dipole_y` * :c:data:`mo_dipole_z` + * :c:data:`mo_grad_ints` + * :c:data:`mo_grad_ints_transp` * :c:data:`mo_guess_type` * :c:data:`mo_integrals_cache` * :c:data:`mo_integrals_cache_max` - * :c:data:`mo_integrals_cache_max_8` * :c:data:`mo_integrals_cache_min` - * :c:data:`mo_integrals_cache_min_8` + * :c:data:`mo_integrals_cache_shift` + * :c:data:`mo_integrals_cache_size` * :c:data:`mo_integrals_erf_cache` * :c:data:`mo_integrals_erf_cache_max` * :c:data:`mo_integrals_erf_cache_min` @@ -399,6 +700,11 @@ Index of Providers * :c:data:`mo_one_e_integrals` * :c:data:`mo_overlap` * :c:data:`mo_pseudo_integrals` + * :c:data:`mo_pseudo_integrals_local` + * :c:data:`mo_pseudo_integrals_non_local` + * :c:data:`mo_spread_centered_x` + * :c:data:`mo_spread_centered_y` + * :c:data:`mo_spread_centered_z` * :c:data:`mo_spread_x` * :c:data:`mo_spread_y` * :c:data:`mo_spread_z` @@ -408,58 +714,110 @@ Index of Providers * :c:data:`mo_two_e_int_erf_jj_exchange` * :c:data:`mo_two_e_int_erf_jj_exchange_from_ao` * :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_jj_anti` - * :c:data:`mo_two_e_integrals_jj_anti_from_ao` * :c:data:`mo_two_e_integrals_jj_exchange` - * :c:data:`mo_two_e_integrals_jj_exchange_from_ao` - * :c:data:`mo_two_e_integrals_vv_anti_from_ao` - * :c:data:`mo_two_e_integrals_vv_exchange_from_ao` - * :c:data:`mo_two_e_integrals_vv_from_ao` * :c:data:`mos_grad_in_r_array` + * :c:data:`mos_grad_in_r_array_tranp` + * :c:data:`mos_grad_in_r_array_transp_3` + * :c:data:`mos_grad_in_r_array_transp_bis` * :c:data:`mos_in_r_array` + * :c:data:`mos_in_r_array_omp` * :c:data:`mos_in_r_array_transp` * :c:data:`mos_lapl_in_r_array` + * :c:data:`mos_lapl_in_r_array_tranp` + * :c:data:`mos_times_cholesky_r1` + * :c:data:`mos_times_cholesky_r2` * :c:data:`mpi_bit_kind` * :c:data:`mpi_initialized` * :c:data:`mpi_master` * :c:data:`mpi_rank` * :c:data:`mpi_size` + * :c:data:`mu_average_prov` + * :c:data:`mu_dft_type` * :c:data:`mu_erf` * :c:data:`mu_erf_dft` + * :c:data:`mu_grad_rho` + * :c:data:`mu_of_r_dft` + * :c:data:`mu_of_r_dft_average` + * :c:data:`mu_of_r_hf` + * :c:data:`mu_of_r_hf_old` + * :c:data:`mu_of_r_hf_sparse` + * :c:data:`mu_of_r_potential` + * :c:data:`mu_of_r_prov` + * :c:data:`mu_of_r_psi_cas` + * :c:data:`mu_rsc_of_r` + * :c:data:`multi_s_deriv_1` + * :c:data:`multi_s_dipole_moment` + * :c:data:`multi_s_x_deriv_1` + * :c:data:`multi_s_x_dipole_moment` + * :c:data:`multi_s_x_dipole_moment_eigenval` + * :c:data:`multi_s_x_dipole_moment_eigenvec` + * :c:data:`multi_s_y_deriv_1` + * :c:data:`multi_s_y_dipole_moment` + * :c:data:`multi_s_y_dipole_moment_eigenval` + * :c:data:`multi_s_y_dipole_moment_eigenvec` + * :c:data:`multi_s_z_deriv_1` + * :c:data:`multi_s_z_dipole_moment` + * :c:data:`multi_s_z_dipole_moment_eigenval` + * :c:data:`multi_s_z_dipole_moment_eigenvec` + * :c:data:`my_extra_grid_becke` + * :c:data:`my_grid_becke` + * :c:data:`my_n_pt_a_extra_grid` + * :c:data:`my_n_pt_a_grid` + * :c:data:`my_n_pt_r_extra_grid` + * :c:data:`my_n_pt_r_grid` + * :c:data:`n_a_v_prov` * :c:data:`n_act_orb` + * :c:data:`n_all_but_del_orb` * :c:data:`n_aos_max` - * :c:data:`n_cas_bitmask` + * :c:data:`n_attachment` + * :c:data:`n_basis_orb` + * :c:data:`n_big_act_orb` + * :c:data:`n_c_a_prov` + * :c:data:`n_c_v_prov` + * :c:data:`n_configuration` * :c:data:`n_core_inact_act_orb` * :c:data:`n_core_inact_orb` * :c:data:`n_core_orb` - * :c:data:`n_core_orb_allocate` + * :c:data:`n_couple_orb_r1` + * :c:data:`n_couple_orb_r2` + * :c:data:`n_csf` * :c:data:`n_del_orb` * :c:data:`n_det` * :c:data:`n_det_alpha_unique` * :c:data:`n_det_beta_unique` * :c:data:`n_det_cas` * :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_max_opt` * :c:data:`n_det_non_cas` * :c:data:`n_det_print_wf` + * :c:data:`n_det_qp_edit` * :c:data:`n_det_selectors` + * :c:data:`n_dettachment` + * :c:data:`n_dominant_dets_of_cfgs` * :c:data:`n_double_exc_bitmasks` * :c:data:`n_double_selectors` - * :c:data:`n_generators_bitmask` - * :c:data:`n_generators_bitmask_restart` + * :c:data:`n_elec_alpha_for_psi_configuration` + * :c:data:`n_guess_sx_mat` * :c:data:`n_inact_act_orb` * :c:data:`n_inact_orb` - * :c:data:`n_inact_orb_allocate` * :c:data:`n_int` * :c:data:`n_it_scf_max` * :c:data:`n_iter` - * :c:data:`n_occ_pattern` + * :c:data:`n_iter_max` + * :c:data:`n_max_occ_val_orb_for_hf` + * :c:data:`n_max_overlap` + * :c:data:`n_occ_val_orb_for_hf` + * :c:data:`n_orb_swap` + * :c:data:`n_points_extra_final_grid` + * :c:data:`n_points_extra_grid_per_atom` + * :c:data:`n_points_extra_integration_angular` + * :c:data:`n_points_extra_radial_grid` * :c:data:`n_points_final_grid` * :c:data:`n_points_grid_per_atom` * :c:data:`n_points_integration_angular` @@ -467,19 +825,32 @@ Index of Providers * :c:data:`n_points_radial_grid` * :c:data:`n_pt_max_i_x` * :c:data:`n_pt_max_integrals` + * :c:data:`n_pts_charge` * :c:data:`n_pts_max_per_atom` * :c:data:`n_pts_per_atom` * :c:data:`n_single_exc_bitmasks` * :c:data:`n_states` * :c:data:`n_states_diag` * :c:data:`n_virt_orb` - * :c:data:`n_virt_orb_allocate` + * :c:data:`nai_pol_mult_cgtos` + * :c:data:`nai_pol_mult_erf_with1s` + * :c:data:`natorbsci` + * :c:data:`natorbsci_mos` + * :c:data:`natorbsfci` + * :c:data:`nb_it_max_lambda` + * :c:data:`nb_it_max_pre_search` + * :c:data:`nbfmax` + * :c:data:`ncsfmax` + * :c:data:`neworbs` + * :c:data:`nmo` + * :c:data:`nmonoex` * :c:data:`no_core_density` - * :c:data:`no_ivvv_integrals` - * :c:data:`no_vvv_integrals` - * :c:data:`no_vvvv_integrals` + * :c:data:`no_oa_or_av_opt` + * :c:data:`norm_grad_vec2` + * :c:data:`norm_grad_vec2_tab` * :c:data:`normalize_dm` * :c:data:`nproc` + * :c:data:`nsomomax` * :c:data:`nthreads_davidson` * :c:data:`nthreads_pt2` * :c:data:`nucl_aos` @@ -500,21 +871,33 @@ Index of Providers * :c:data:`nucl_num` * :c:data:`nucl_num_shell_aos` * :c:data:`nuclear_repulsion` + * :c:data:`nucleus_shell_num` + * :c:data:`occ_act` + * :c:data:`occnum` + * :c:data:`on_top_cas_mu_r` + * :c:data:`on_top_hf_grid` + * :c:data:`on_top_hf_mu_r` * :c:data:`one_body_dm_mo_alpha_one_det` * :c:data:`one_body_dm_mo_beta_one_det` + * :c:data:`one_e_act_density_alpha` + * :c:data:`one_e_act_density_beta` + * :c:data:`one_e_act_dm_alpha_mo_for_dft` + * :c:data:`one_e_act_dm_beta_mo_for_dft` + * :c:data:`one_e_cas_total_density` * :c:data:`one_e_dm_alpha_ao_for_dft` * :c:data:`one_e_dm_alpha_ao_for_dft_no_core` - * :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:data:`one_e_dm_and_grad_beta_in_r` + * :c:data:`one_e_dm_ao` * :c:data:`one_e_dm_ao_alpha` + * :c:data:`one_e_dm_ao_alpha_nstates` * :c:data:`one_e_dm_ao_beta` + * :c:data:`one_e_dm_ao_beta_nstates` + * :c:data:`one_e_dm_average_alpha_mo_for_dft` + * :c:data:`one_e_dm_average_beta_mo_for_dft` * :c:data:`one_e_dm_average_mo_for_dft` * :c:data:`one_e_dm_beta_ao_for_dft` * :c:data:`one_e_dm_beta_ao_for_dft_no_core` - * :c:data:`one_e_dm_beta_at_r` - * :c:data:`one_e_dm_beta_in_r` * :c:data:`one_e_dm_dagger_mo_spin_index` * :c:data:`one_e_dm_mo` * :c:data:`one_e_dm_mo_alpha` @@ -528,42 +911,63 @@ Index of Providers * :c:data:`one_e_dm_mo_diff` * :c:data:`one_e_dm_mo_for_dft` * :c:data:`one_e_dm_mo_spin_index` - * :c:data:`one_e_dm_no_core_and_grad_alpha_in_r` - * :c:data:`one_e_dm_no_core_and_grad_beta_in_r` * :c:data:`one_e_energy` * :c:data:`one_e_grad_2_dm_alpha_at_r` * :c:data:`one_e_grad_2_dm_beta_at_r` * :c:data:`one_e_spin_density_ao` * :c:data:`one_e_spin_density_mo` + * :c:data:`one_e_stuff_for_pbe` + * :c:data:`one_e_tr_dm_mo` + * :c:data:`one_e_tr_dm_mo_alpha` + * :c:data:`one_e_tr_dm_mo_beta` + * :c:data:`one_ints_no` * :c:data:`only_expected_s2` + * :c:data:`optimization_max_nb_iter` + * :c:data:`optimization_method` + * :c:data:`orb_swap` + * :c:data:`ormas_bitmask` + * :c:data:`ormas_list_orb` + * :c:data:`ormas_max_e` + * :c:data:`ormas_max_n_orb` + * :c:data:`ormas_min_e` + * :c:data:`ormas_mstart` + * :c:data:`ormas_n_orb` + * :c:data:`ormas_n_space` * :c:data:`output_cpu_time_0` * :c:data:`output_wall_time_0` - * :c:data:`overlap_gaussian_xyz` + * :c:data:`overlap_cgaussian_xyz` + * :c:data:`overlap_states` + * :c:data:`overlap_states_inv` + * :c:data:`p0tuvx` + * :c:data:`p0tuvx_no` + * :c:data:`p0tuvx_peter` * :c:data:`phi_angular_integration_lebedev` + * :c:data:`planck_cte` + * :c:data:`point_charges` * :c:data:`pot_grad_c_alpha_ao_pbe` + * :c:data:`pot_grad_c_alpha_ao_sr_pbe` * :c:data:`pot_grad_c_beta_ao_pbe` + * :c:data:`pot_grad_c_beta_ao_sr_pbe` * :c:data:`pot_grad_x_alpha_ao_pbe` + * :c:data:`pot_grad_x_alpha_ao_sr_pbe` * :c:data:`pot_grad_x_beta_ao_pbe` + * :c:data:`pot_grad_x_beta_ao_sr_pbe` * :c:data:`pot_grad_xc_alpha_ao_pbe` + * :c:data:`pot_grad_xc_alpha_ao_sr_pbe` * :c:data:`pot_grad_xc_beta_ao_pbe` + * :c:data:`pot_grad_xc_beta_ao_sr_pbe` * :c:data:`pot_scal_c_alpha_ao_pbe` + * :c:data:`pot_scal_c_alpha_ao_sr_pbe` * :c:data:`pot_scal_c_beta_ao_pbe` + * :c:data:`pot_scal_c_beta_ao_sr_pbe` * :c:data:`pot_scal_x_alpha_ao_pbe` + * :c:data:`pot_scal_x_alpha_ao_sr_pbe` * :c:data:`pot_scal_x_beta_ao_pbe` + * :c:data:`pot_scal_x_beta_ao_sr_pbe` * :c:data:`pot_scal_xc_alpha_ao_pbe` + * :c:data:`pot_scal_xc_alpha_ao_sr_pbe` * :c:data:`pot_scal_xc_beta_ao_pbe` - * :c:data:`pot_sr_grad_c_alpha_ao_pbe` - * :c:data:`pot_sr_grad_c_beta_ao_pbe` - * :c:data:`pot_sr_grad_x_alpha_ao_pbe` - * :c:data:`pot_sr_grad_x_beta_ao_pbe` - * :c:data:`pot_sr_grad_xc_alpha_ao_pbe` - * :c:data:`pot_sr_grad_xc_beta_ao_pbe` - * :c:data:`pot_sr_scal_c_alpha_ao_pbe` - * :c:data:`pot_sr_scal_c_beta_ao_pbe` - * :c:data:`pot_sr_scal_x_alpha_ao_pbe` - * :c:data:`pot_sr_scal_x_beta_ao_pbe` - * :c:data:`pot_sr_scal_xc_alpha_ao_pbe` - * :c:data:`pot_sr_scal_xc_beta_ao_pbe` + * :c:data:`pot_scal_xc_beta_ao_sr_pbe` * :c:data:`potential_c_alpha_ao` * :c:data:`potential_c_alpha_ao_lda` * :c:data:`potential_c_alpha_ao_none` @@ -606,6 +1010,14 @@ Index of Providers * :c:data:`potential_xc_beta_ao_sr_lda` * :c:data:`potential_xc_beta_ao_sr_pbe` * :c:data:`potential_xc_beta_mo` + * :c:data:`prim_coef` + * :c:data:`prim_expo` + * :c:data:`prim_normalization_factor` + * :c:data:`prim_num` + * :c:data:`primitives_normalized` + * :c:data:`print_all_transitions` + * :c:data:`pruned` + * :c:data:`pruning` * :c:data:`pseudo_dz_k` * :c:data:`pseudo_dz_k_transp` * :c:data:`pseudo_dz_kl` @@ -647,12 +1059,23 @@ Index of Providers * :c:data:`psi_cas_sorted_bit` * :c:data:`psi_coef` * :c:data:`psi_coef_cas_diagonalized` + * :c:data:`psi_coef_config` * :c:data:`psi_coef_generators` * :c:data:`psi_coef_max` * :c:data:`psi_coef_min` * :c:data:`psi_coef_sorted` * :c:data:`psi_coef_sorted_bit` * :c:data:`psi_coef_sorted_gen` + * :c:data:`psi_config_data` + * :c:data:`psi_configuration` + * :c:data:`psi_configuration_hii` + * :c:data:`psi_configuration_n_det` + * :c:data:`psi_configuration_sorted` + * :c:data:`psi_configuration_sorted_order` + * :c:data:`psi_configuration_sorted_order_reverse` + * :c:data:`psi_configuration_to_psi_det` + * :c:data:`psi_configuration_to_psi_det_data` + * :c:data:`psi_csf_coef` * :c:data:`psi_det` * :c:data:`psi_det_alpha` * :c:data:`psi_det_alpha_unique` @@ -672,13 +1095,12 @@ Index of Providers * :c:data:`psi_energy` * :c:data:`psi_energy_h_core` * :c:data:`psi_energy_two_e` + * :c:data:`psi_energy_two_e_trans` * :c:data:`psi_energy_with_nucl_rep` * :c:data:`psi_non_cas` * :c:data:`psi_non_cas_coef` * :c:data:`psi_non_cas_coef_sorted_bit` * :c:data:`psi_non_cas_sorted_bit` - * :c:data:`psi_occ_pattern` - * :c:data:`psi_occ_pattern_hii` * :c:data:`psi_s2` * :c:data:`psi_selectors` * :c:data:`psi_selectors_coef` @@ -692,11 +1114,14 @@ Index of Providers * :c:data:`pt2_j` * :c:data:`pt2_match_weight` * :c:data:`pt2_max` + * :c:data:`pt2_min_casscf` + * :c:data:`pt2_min_parallel_tasks` * :c:data:`pt2_mindetinfirstteeth` * :c:data:`pt2_n_0` * :c:data:`pt2_n_tasks` * :c:data:`pt2_n_tasks_max` * :c:data:`pt2_n_teeth` + * :c:data:`pt2_overlap` * :c:data:`pt2_r` * :c:data:`pt2_relative_error` * :c:data:`pt2_stoch_istate` @@ -704,45 +1129,58 @@ Index of Providers * :c:data:`pt2_u_0` * :c:data:`pt2_w` * :c:data:`pt2_w_t` + * :c:data:`pt_chrg_interaction` + * :c:data:`pt_chrg_nuclei_interaction` + * :c:data:`pts_charge_coord` + * :c:data:`pts_charge_z` * :c:data:`qp_kill_filename` * :c:data:`qp_max_mem` * :c:data:`qp_run_address` * :c:data:`qp_stop_filename` * :c:data:`qp_stop_variable` - * :c:data:`read_ao_integrals_e_n` + * :c:data:`r_gill` + * :c:data:`rad_grid_type` + * :c:data:`read_ao_cholesky` * :c:data:`read_ao_integrals_kinetic` + * :c:data:`read_ao_integrals_n_e` * :c:data:`read_ao_integrals_overlap` * :c:data:`read_ao_integrals_pseudo` * :c:data:`read_ao_one_e_integrals` * :c:data:`read_ao_two_e_integrals` * :c:data:`read_ao_two_e_integrals_erf` - * :c:data:`read_mo_integrals_e_n` + * :c:data:`read_mo_cholesky` * :c:data:`read_mo_integrals_kinetic` + * :c:data:`read_mo_integrals_n_e` * :c:data:`read_mo_integrals_pseudo` * :c:data:`read_mo_one_e_integrals` * :c:data:`read_mo_two_e_integrals` * :c:data:`read_mo_two_e_integrals_erf` + * :c:data:`read_mu_of_r` * :c:data:`read_nuclear_repulsion` + * :c:data:`read_two_body_rdm_aa` + * :c:data:`read_two_body_rdm_ab` + * :c:data:`read_two_body_rdm_bb` + * :c:data:`read_two_body_rdm_spin_trace` * :c:data:`read_wf` - * :c:data:`rec__quicksort` - * :c:data:`rec_d_quicksort` - * :c:data:`rec_i2_quicksort` - * :c:data:`rec_i8_quicksort` - * :c:data:`rec_i_quicksort` * :c:data:`ref_bitmask` - * :c:data:`ref_bitmask_e_n_energy` * :c:data:`ref_bitmask_energy` * :c:data:`ref_bitmask_energy_aa` * :c:data:`ref_bitmask_energy_ab` * :c:data:`ref_bitmask_energy_bb` * :c:data:`ref_bitmask_kinetic_energy` + * :c:data:`ref_bitmask_n_e_energy` * :c:data:`ref_bitmask_one_e_energy` * :c:data:`ref_bitmask_two_e_energy` * :c:data:`ref_closed_shell_bitmask` + * :c:data:`regular_range_hartree` + * :c:data:`regular_range_hartree_operator` + * :c:data:`restore_symm` + * :c:data:`reunion_of_act_virt_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:`reunion_of_inact_act_bitmask` + * :c:data:`rowsmax` * :c:data:`rs_ks_energy` * :c:data:`s2_eig` * :c:data:`s2_matrix_all_dets` @@ -750,10 +1188,15 @@ Index of Providers * :c:data:`s_half` * :c:data:`s_half_inv` * :c:data:`s_inv` + * :c:data:`s_inv_complex` * :c:data:`s_mo_coef` + * :c:data:`s_values` * :c:data:`s_z` * :c:data:`s_z2_sz` * :c:data:`same_xc_func` + * :c:data:`save_threshold` + * :c:data:`save_wf_after_selection` + * :c:data:`scal_prod_grad_one_e_dm_ab` * :c:data:`scf_algorithm` * :c:data:`scf_density_matrix_ao` * :c:data:`scf_density_matrix_ao_alpha` @@ -765,14 +1208,23 @@ Index of Providers * :c:data:`selection_criterion_min` * :c:data:`selection_factor` * :c:data:`selection_weight` + * :c:data:`seniority_max` + * :c:data:`shell_ang_mom` + * :c:data:`shell_index` + * :c:data:`shell_normalization_factor` + * :c:data:`shell_num` + * :c:data:`shell_prim_num` + * :c:data:`shiftfact_op5_inv` * :c:data:`short_range_hartree` * :c:data:`short_range_hartree_operator` * :c:data:`single_exc_bitmask` * :c:data:`singles_alpha_csc` * :c:data:`singles_alpha_csc_idx` + * :c:data:`singles_alpha_csc_map` * :c:data:`singles_alpha_csc_size` * :c:data:`singles_beta_csc` * :c:data:`singles_beta_csc_idx` + * :c:data:`singles_beta_csc_map` * :c:data:`singles_beta_csc_size` * :c:data:`size_select_max` * :c:data:`slater_bragg_radii` @@ -781,52 +1233,124 @@ Index of Providers * :c:data:`slater_bragg_radii_ua` * :c:data:`slater_bragg_type_inter_distance` * :c:data:`slater_bragg_type_inter_distance_ua` + * :c:data:`small_active_space` + * :c:data:`spin_multiplicity` + * :c:data:`state_av_act_2_rdm_aa_mo` + * :c:data:`state_av_act_2_rdm_ab_mo` + * :c:data:`state_av_act_2_rdm_bb_mo` + * :c:data:`state_av_act_2_rdm_spin_trace_mo` + * :c:data:`state_av_full_occ_2_rdm_aa_mo` + * :c:data:`state_av_full_occ_2_rdm_ab_mo` + * :c:data:`state_av_full_occ_2_rdm_bb_mo` + * :c:data:`state_av_full_occ_2_rdm_spin_trace_mo` * :c:data:`state_average_weight` * :c:data:`state_following` + * :c:data:`state_following_casscf` + * :c:data:`super_ci_dm` + * :c:data:`superci_nat_occ` + * :c:data:`superci_natorb` + * :c:data:`switch_mo_coef` + * :c:data:`sxeigenval` + * :c:data:`sxeigenvec` + * :c:data:`sxmatrix` + * :c:data:`sxvector` + * :c:data:`sxvector_lowest` * :c:data:`target_energy` * :c:data:`theta_angular_integration_lebedev` + * :c:data:`thresh_casscf` + * :c:data:`thresh_cc` + * :c:data:`thresh_delta` + * :c:data:`thresh_eig` + * :c:data:`thresh_extra_grid` * :c:data:`thresh_grid` + * :c:data:`thresh_model` + * :c:data:`thresh_model_2` + * :c:data:`thresh_opt_max_elem_grad` + * :c:data:`thresh_overlap_switch` + * :c:data:`thresh_rho` + * :c:data:`thresh_rho_2` * :c:data:`thresh_scf` * :c:data:`thresh_sym` + * :c:data:`thresh_wtg` + * :c:data:`thresh_wtg2` * :c:data:`threshold_davidson` + * :c:data:`threshold_davidson_from_pt2` + * :c:data:`threshold_davidson_pt2` * :c:data:`threshold_diis` * :c:data:`threshold_diis_nonzero` * :c:data:`threshold_generators` + * :c:data:`threshold_nonsym_davidson` * :c:data:`threshold_selectors` + * :c:data:`total_cas_on_top_density` * :c:data:`trace_potential_xc` * :c:data:`trace_v_h` * :c:data:`trace_v_hxc` * :c:data:`trace_v_xc` * :c:data:`trace_v_xc_new` * :c:data:`transpose` + * :c:data:`trexio_file` + * :c:data:`trexio_filename` + * :c:data:`twice_hierarchy_max` + * :c:data:`two_e_dm_mo` * :c:data:`two_e_energy` + * :c:data:`two_e_int_aa_f` + * :c:data:`two_e_int_hf_f` + * :c:data:`two_e_int_ia_f` + * :c:data:`two_e_int_ii_f` + * :c:data:`typ` + * :c:data:`umat` * :c:data:`unpaired_alpha_electrons` - * :c:data:`used_weight` + * :c:data:`use_banned_excitation` + * :c:data:`use_cgtos` + * :c:data:`use_cosgtos` + * :c:data:`use_only_lr` + * :c:data:`use_pw` + * :c:data:`v_ne_psi_energy` * :c:data:`var_pt2_ratio` * :c:data:`variance_match_weight` * :c:data:`variance_max` + * :c:data:`version_avoid_saddle` + * :c:data:`version_lambda_search` * :c:data:`virt_bitmask` * :c:data:`virt_bitmask_4` + * :c:data:`virt_mos_in_r_array` + * :c:data:`virt_mos_in_r_array_transp` + * :c:data:`wall_time_core_inact_act_on_top_of_r` * :c:data:`weight_at_r` - * :c:data:`weight_occ_pattern` + * :c:data:`weight_at_r_extra` + * :c:data:`weight_configuration` + * :c:data:`weight_configuration_average` + * :c:data:`weight_configuration_average_sorted` * :c:data:`weight_one_e_dm` * :c:data:`weight_selection` * :c:data:`weights_angular_integration_lebedev` * :c:data:`weights_angular_points` - * :c:data:`write_ao_integrals_e_n` + * :c:data:`weights_angular_points_extra` + * :c:data:`without_diagonal` + * :c:data:`write_ao_cholesky` * :c:data:`write_ao_integrals_kinetic` + * :c:data:`write_ao_integrals_n_e` * :c:data:`write_ao_integrals_overlap` * :c:data:`write_ao_integrals_pseudo` * :c:data:`write_ao_one_e_integrals` * :c:data:`write_ao_two_e_integrals` * :c:data:`write_ao_two_e_integrals_erf` - * :c:data:`write_mo_integrals_e_n` + * :c:data:`write_mo_cholesky` * :c:data:`write_mo_integrals_kinetic` + * :c:data:`write_mo_integrals_n_e` * :c:data:`write_mo_integrals_pseudo` * :c:data:`write_mo_one_e_integrals` * :c:data:`write_mo_two_e_integrals` * :c:data:`write_mo_two_e_integrals_erf` + * :c:data:`write_mu_of_r` * :c:data:`write_nuclear_repulsion` + * :c:data:`write_two_body_rdm_aa` + * :c:data:`write_two_body_rdm_ab` + * :c:data:`write_two_body_rdm_bb` + * :c:data:`write_two_body_rdm_spin_trace` + * :c:data:`x_dipole_moment` + * :c:data:`y_dipole_moment` + * :c:data:`z_dipole_moment` * :c:data:`zmq_context` * :c:data:`zmq_lock` * :c:data:`zmq_port_start` @@ -844,27 +1368,38 @@ Index of Subroutines/Functions .. hlist:: - * :c:func:`a_coef` * :c:func:`a_operator` * :c:func:`a_operator_two_e` * :c:func:`ac_operator` * :c:func:`ac_operator_two_e` + * :c:func:`act_on_top_on_grid_pt` + * :c:func:`add_cpoly` + * :c:func:`add_cpoly_multiply` * :c:func:`add_integrals_to_map` + * :c:func:`add_integrals_to_map_cholesky` * :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:`add_poly` * :c:func:`add_poly_multiply` * :c:func:`add_task_to_taskserver` * :c:func:`add_to_selection_buffer` + * :c:func:`ao_2e_cgtos_schwartz_accel` + * :c:func:`ao_2e_cosgtos_schwartz_accel` + * :c:func:`ao_idx2_sq` + * :c:func:`ao_idx2_sq_rev` + * :c:func:`ao_idx2_tri_key` + * :c:func:`ao_idx2_tri_rev_key` * :c:func:`ao_l4` + * :c:func:`ao_one_e_integral_zero` * :c:func:`ao_ortho_cano_to_ao` * :c:func:`ao_power_index` * :c:func:`ao_to_mo` * :c:func:`ao_two_e_integral` + * :c:func:`ao_two_e_integral_cgtos` + * :c:func:`ao_two_e_integral_cosgtos` * :c:func:`ao_two_e_integral_erf` * :c:func:`ao_two_e_integral_schwartz_accel` * :c:func:`ao_two_e_integral_schwartz_accel_erf` + * :c:func:`ao_two_e_integral_zero` * :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_erf_in_map_slave_inproc` @@ -877,12 +1412,20 @@ Index of Subroutines/Functions * :c:func:`apply_excitation` * :c:func:`apply_hole` * :c:func:`apply_holes` + * :c:func:`apply_mo_rotation` * :c:func:`apply_particle` * :c:func:`apply_particles` * :c:func:`apply_rotation` * :c:func:`approx_dble` - * :c:func:`b_coef` + * :c:func:`attachement_orb` * :c:func:`berf` + * :c:func:`beta_rs` + * :c:func:`bielec_no_basis` + * :c:func:`bielec_pqxx` + * :c:func:`bielec_pqxx_no` + * :c:func:`bielec_pxxq` + * :c:func:`bielec_pxxq_no` + * :c:func:`binary_search_cfg` * :c:func:`binom_func` * :c:func:`bitstring_to_hexa` * :c:func:`bitstring_to_list` @@ -894,9 +1437,20 @@ Index of Subroutines/Functions * :c:func:`broadcast_chunks_integer` * :c:func:`broadcast_chunks_integer8` * :c:func:`build_fock_tmp` + * :c:func:`build_singly_excited_wavefunction` + * :c:func:`calc_grad_elem` + * :c:func:`calc_hess_elem` + * :c:func:`cas_based_density` + * :c:func:`cas_based_on_top` + * :c:func:`cas_based_on_top_density` + * :c:func:`cas_complete` + * :c:func:`casscf` * :c:func:`cell_function_becke` + * :c:func:`cgaussian_product` + * :c:func:`cgaussian_product_x` * :c:func:`check_coherence_functional` * :c:func:`check_mem` + * :c:func:`check_sym` * :c:func:`cis` * :c:func:`cisd` * :c:func:`clear_ao_erf_map` @@ -908,23 +1462,84 @@ Index of Subroutines/Functions * :c:func:`compute_ao_integrals_jl` * :c:func:`compute_ao_two_e_integrals` * :c:func:`compute_ao_two_e_integrals_erf` + * :c:func:`configuration_of_det` + * :c:func:`configuration_search_key` + * :c:func:`configuration_to_dets` + * :c:func:`configuration_to_dets_size` + * :c:func:`configuration_to_dets_tree_addressing` + * :c:func:`configuration_to_str` * :c:func:`connect_to_taskserver` * :c:func:`connected_to_hf` * :c:func:`connected_to_ref` * :c:func:`connected_to_ref_by_single` + * :c:func:`convertorbidstomodelspaceids` + * :c:func:`convertwffromcsftodet` + * :c:func:`convertwffromdettocsf` * :c:func:`copy_h_apply_buffer_to_wf` * :c:func:`copy_psi_bilinear_to_psi` + * :c:func:`correction_to_on_top_from_ueg` + * :c:func:`cpx_erf` + * :c:func:`cpx_erf_1` * :c:func:`create_guess` * :c:func:`create_microlist` * :c:func:`create_minilist` * :c:func:`create_minilist_find_previous` * :c:func:`create_selection_buffer` * :c:func:`create_wf_of_psi_bilinear_matrix` + * :c:func:`crint` + * :c:func:`crint_1` + * :c:func:`crint_1_vec` + * :c:func:`crint_2` + * :c:func:`crint_2_vec` + * :c:func:`crint_quad_1` + * :c:func:`crint_quad_12` + * :c:func:`crint_quad_12_vec` + * :c:func:`crint_quad_2` + * :c:func:`crint_smallz` + * :c:func:`crint_smallz_vec` + * :c:func:`crint_sum` + * :c:func:`d1_norm_inverse_trust_region` + * :c:func:`d1_norm_inverse_trust_region_omp` + * :c:func:`d1_norm_trust_region` + * :c:func:`d1_norm_trust_region_omp` + * :c:func:`d2_norm_inverse_trust_region` + * :c:func:`d2_norm_inverse_trust_region_omp` + * :c:func:`d2_norm_trust_region` + * :c:func:`d2_norm_trust_region_omp` * :c:func:`damping_scf` + * :c:func:`dav_double_dressed` * :c:func:`davidson_collector` - * :c:func:`davidson_converged` + * :c:func:`davidson_csf_collector` + * :c:func:`davidson_csf_pull_results` + * :c:func:`davidson_csf_push_results` + * :c:func:`davidson_csf_push_results_async_send` + * :c:func:`davidson_csf_run_slave` + * :c:func:`davidson_csf_slave_inproc` + * :c:func:`davidson_csf_slave_tcp` + * :c:func:`davidson_csf_slave_work` + * :c:func:`davidson_diag_csf_hjj` + * :c:func:`davidson_diag_h` + * :c:func:`davidson_diag_h_csf` + * :c:func:`davidson_diag_hjj` * :c:func:`davidson_diag_hjj_sjj` * :c:func:`davidson_diag_hs2` + * :c:func:`davidson_diag_nonsym_h` + * :c:func:`davidson_diag_nonsym_hjj` + * :c:func:`davidson_diag_sx_mat` + * :c:func:`davidson_general` + * :c:func:`davidson_general_diag_dressed_ext_rout_nonsym_b1space` + * :c:func:`davidson_general_ext_rout` + * :c:func:`davidson_general_ext_rout_diag_dressed` + * :c:func:`davidson_general_ext_rout_dressed` + * :c:func:`davidson_general_ext_rout_nonsym_b1space` + * :c:func:`davidson_nos2_collector` + * :c:func:`davidson_nos2_pull_results` + * :c:func:`davidson_nos2_push_results` + * :c:func:`davidson_nos2_push_results_async_send` + * :c:func:`davidson_nos2_run_slave` + * :c:func:`davidson_nos2_slave_inproc` + * :c:func:`davidson_nos2_slave_tcp` + * :c:func:`davidson_nos2_slave_work` * :c:func:`davidson_pull_results` * :c:func:`davidson_push_results` * :c:func:`davidson_push_results_async_recv` @@ -938,15 +1553,22 @@ Index of Subroutines/Functions * :c:func:`dble_fact_even` * :c:func:`dble_fact_odd` * :c:func:`dble_logfact` - * :c:func:`ddfact2` + * :c:func:`debug_cfg` * :c:func:`debug_det` * :c:func:`debug_spindet` * :c:func:`decode_exc` * :c:func:`decode_exc_spin` * :c:func:`delete_selection_buffer` + * :c:func:`delta_lrsr_ldaerf` * :c:func:`dens_grad_a_b_no_core_and_aos_grad_aos_at_r` + * :c:func:`density_and_grad_alpha_beta` * :c:func:`density_and_grad_alpha_beta_and_all_aos_and_grad_aos_at_r` + * :c:func:`density_and_grad_lapl_alpha_beta_and_all_aos_and_grad_aos_at_r` + * :c:func:`derf_mu_x` * :c:func:`derivative_knowles_function` + * :c:func:`det_allowed_ormas` + * :c:func:`det_copy` + * :c:func:`det_extract` * :c:func:`det_inf` * :c:func:`det_search_key` * :c:func:`detcmp` @@ -954,41 +1576,67 @@ Index of Subroutines/Functions * :c:func:`diag_h_mat_elem` * :c:func:`diag_h_mat_elem_fock` * :c:func:`diag_h_mat_elem_one_e` + * :c:func:`diag_hessian_list_opt` + * :c:func:`diag_hessian_opt` + * :c:func:`diag_mat_per_fock_degen` + * :c:func:`diag_mat_per_fock_degen_core` + * :c:func:`diag_nonsym_right` * :c:func:`diag_s_mat_elem` * :c:func:`diag_wee_mat_elem` + * :c:func:`diagonalization_hessian` * :c:func:`diagonalize_ci` * :c:func:`diagonalize_h` + * :c:func:`diagonalize_sym_matrix` * :c:func:`disconnect_from_taskserver` * :c:func:`disconnect_from_taskserver_state` * :c:func:`dm_dft_alpha_beta_and_all_aos_at_r` * :c:func:`dm_dft_alpha_beta_at_r` * :c:func:`dm_dft_alpha_beta_no_core_at_r` + * :c:func:`do_schwartz_accel` * :c:func:`do_single_excitation` + * :c:func:`do_single_excitation_cfg` + * :c:func:`do_single_excitation_cfg_with_type` * :c:func:`dpol` * :c:func:`dpold` * :c:func:`dpoldd` + * :c:func:`dress_calc` + * :c:func:`dressing_diag_uv` + * :c:func:`driver_optorb` * :c:func:`dset_order` * :c:func:`dset_order_big` - * :c:func:`dsort` - * :c:func:`dump_ao_integrals` * :c:func:`dump_ao_integrals_erf` * :c:func:`dump_mo_integrals` * :c:func:`ec_lda` * :c:func:`ec_lda_sr` + * :c:func:`ec_lyp2` + * :c:func:`ec_lyp_88` + * :c:func:`ec_md_on_top_pbe_mu_corrected` + * :c:func:`ec_md_pbe_on_top_general` * :c:func:`ec_only_lda_sr` * :c:func:`ec_pbe_only` * :c:func:`ec_pbe_sr` + * :c:func:`ec_scan` + * :c:func:`ecmd_pbe_ueg_at_r` * :c:func:`ecorrlr` * :c:func:`ecpw` + * :c:func:`eigsvd` * :c:func:`end_parallel_job` * :c:func:`end_zmq_pair_socket` * :c:func:`end_zmq_pull_socket` * :c:func:`end_zmq_push_socket` * :c:func:`end_zmq_sub_socket` * :c:func:`end_zmq_to_qp_run_socket` - * :c:func:`erf0` + * :c:func:`eps_c_md_pbe_at_grid_pt` + * :c:func:`eps_c_md_pbe_from_density` + * :c:func:`erf_e` + * :c:func:`erf_f` + * :c:func:`erf_g` + * :c:func:`erf_h` * :c:func:`eri` + * :c:func:`eri_cgtos` + * :c:func:`eri_cosgtos` * :c:func:`eri_erf` + * :c:func:`esrc_md_ldaerf` * :c:func:`ex_lda` * :c:func:`ex_lda_sr` * :c:func:`ex_pbe_sr` @@ -997,30 +1645,60 @@ Index of Subroutines/Functions * :c:func:`example_bitmask` * :c:func:`example_determinants` * :c:func:`example_determinants_psi_det` + * :c:func:`exp_matrix` + * :c:func:`exp_matrix_taylor` + * :c:func:`export_trexio` + * :c:func:`export_trexio_prog` + * :c:func:`extract_cas` * :c:func:`extrapolate_data` * :c:func:`f_function_becke` + * :c:func:`f_hf_valence_ab` * :c:func:`f_integral` + * :c:func:`f_norm_trust_region` + * :c:func:`f_norm_trust_region_omp` * :c:func:`fact` + * :c:func:`factorial` + * :c:func:`fc_integral` * :c:func:`fci` * :c:func:`fcidump` + * :c:func:`fcidump_pyscf` * :c:func:`fill_buffer_double` + * :c:func:`fill_buffer_single` * :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` * :c:func:`find_rotation` + * :c:func:`first_diag_hessian_list_opt` + * :c:func:`first_diag_hessian_opt` + * :c:func:`first_gradient_list_opt` + * :c:func:`first_gradient_opt` + * :c:func:`first_hessian_list_opt` + * :c:func:`first_hessian_opt` + * :c:func:`format_w_error` + * :c:func:`four_idx_dgemm` + * :c:func:`four_idx_dgemm_erf` * :c:func:`four_idx_transform` + * :c:func:`g0_dg0` + * :c:func:`g0_dg0_d2g0` + * :c:func:`g0_ueg_mu` + * :c:func:`g0_ueg_mu_inf` * :c:func:`g0d` * :c:func:`g0dd` * :c:func:`g0f` - * :c:func:`gammln` - * :c:func:`gammp` + * :c:func:`g0s` * :c:func:`gauleg` * :c:func:`gaussian_product` + * :c:func:`gaussian_product_v` * :c:func:`gaussian_product_x` - * :c:func:`gcf` + * :c:func:`gaussian_product_x_v` * :c:func:`generate_all_alpha_beta_det_products` + * :c:func:`generate_all_singles_cfg` + * :c:func:`generate_all_singles_cfg_with_type` + * :c:func:`generate_cas_space` + * :c:func:`get_a_squared` + * :c:func:`get_ab_prod` * :c:func:`get_all_spin_doubles` * :c:func:`get_all_spin_doubles_1` * :c:func:`get_all_spin_doubles_2` @@ -1040,20 +1718,27 @@ Index of Subroutines/Functions * :c:func:`get_all_spin_singles_and_doubles_n_int` * :c:func:`get_all_spin_singles_n_int` * :c:func:`get_ao_erf_map_size` + * :c:func:`get_ao_integ_chol` * :c:func:`get_ao_map_size` * :c:func:`get_ao_two_e_integral` * :c:func:`get_ao_two_e_integral_erf` + * :c:func:`get_ao_two_e_integral_periodic` * :c:func:`get_ao_two_e_integrals` * :c:func:`get_ao_two_e_integrals_erf` * :c:func:`get_ao_two_e_integrals_erf_non_zero` * :c:func:`get_ao_two_e_integrals_non_zero` * :c:func:`get_ao_two_e_integrals_non_zero_jl` * :c:func:`get_ao_two_e_integrals_non_zero_jl_from_list` + * :c:func:`get_ao_two_e_integrals_periodic` * :c:func:`get_d0` + * :c:func:`get_d0_reference` * :c:func:`get_d1` + * :c:func:`get_d1_reference` * :c:func:`get_d2` + * :c:func:`get_d2_reference` * :c:func:`get_double_excitation` * :c:func:`get_double_excitation_spin` + * :c:func:`get_energy` * :c:func:`get_excitation` * :c:func:`get_excitation_degree` * :c:func:`get_excitation_degree_spin` @@ -1062,16 +1747,24 @@ Index of Subroutines/Functions * :c:func:`get_excitation_degree_vector_single` * :c:func:`get_excitation_degree_vector_single_or_exchange` * :c:func:`get_excitation_degree_vector_single_or_exchange_verbose` + * :c:func:`get_excitation_general` * :c:func:`get_excitation_spin` + * :c:func:`get_holes_general` * :c:func:`get_index_in_psi_det_alpha_unique` * :c:func:`get_index_in_psi_det_beta_unique` * :c:func:`get_index_in_psi_det_sorted_bit` * :c:func:`get_inverse` + * :c:func:`get_inverse_complex` + * :c:func:`get_lccsd_2` + * :c:func:`get_m0` + * :c:func:`get_m1` + * :c:func:`get_m2` * :c:func:`get_mask_phase` * :c:func:`get_mo_erf_map_size` * :c:func:`get_mo_map_size` * :c:func:`get_mo_two_e_integral_erf` * :c:func:`get_mo_two_e_integrals` + * :c:func:`get_mo_two_e_integrals_cache` * :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` @@ -1082,20 +1775,28 @@ Index of Subroutines/Functions * :c:func:`get_mo_two_e_integrals_i1j1` * :c:func:`get_mo_two_e_integrals_ij` * :c:func:`get_occupation_from_dets` + * :c:func:`get_particles_general` * :c:func:`get_phase` * :c:func:`get_phase_bi` + * :c:func:`get_phase_general` + * :c:func:`get_phase_qp_to_cfg` * :c:func:`get_phasemask_bit` * :c:func:`get_pseudo_inverse` + * :c:func:`get_pseudo_inverse_complex` * :c:func:`get_s2` * :c:func:`get_single_excitation` * :c:func:`get_single_excitation_from_fock` * :c:func:`get_single_excitation_spin` * :c:func:`get_task_from_taskserver` * :c:func:`get_tasks_from_taskserver` + * :c:func:`get_total_available_memory` * :c:func:`get_two_e_integral` + * :c:func:`get_two_e_integral_cache` * :c:func:`get_uj_s2_ui` * :c:func:`getmobiles` + * :c:func:`getnsomo` * :c:func:`getunitandopen` + * :c:func:`give_active_on_top_in_r_one_state` * :c:func:`give_all_aos_and_grad_and_lapl_at_r` * :c:func:`give_all_aos_and_grad_at_r` * :c:func:`give_all_aos_at_r` @@ -1103,14 +1804,40 @@ Index of Subroutines/Functions * :c:func:`give_all_mos_and_grad_and_lapl_at_r` * :c:func:`give_all_mos_and_grad_at_r` * :c:func:`give_all_mos_at_r` + * :c:func:`give_all_stuffs_in_r_for_lyp_88` + * :c:func:`give_cas_density_in_r` + * :c:func:`give_core_inact_act_density_in_r` + * :c:func:`give_degen` + * :c:func:`give_degen_full_list` + * :c:func:`give_degen_full_listcore` * :c:func:`give_explicit_poly_and_gaussian` * :c:func:`give_explicit_poly_and_gaussian_double` + * :c:func:`give_explicit_poly_and_gaussian_v` * :c:func:`give_explicit_poly_and_gaussian_x` + * :c:func:`give_f_aa_val_ab` + * :c:func:`give_f_ia_val_ab` + * :c:func:`give_f_ii_val_ab` + * :c:func:`give_mu_of_r_cas` + * :c:func:`give_n2_aa_val_ab` + * :c:func:`give_n2_cas` + * :c:func:`give_n2_ia_val_ab` + * :c:func:`give_n2_ii_val_ab` + * :c:func:`give_on_top_gradient` + * :c:func:`give_on_top_in_r_one_state` + * :c:func:`give_pol_in_r` * :c:func:`give_polynom_mult_center_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:`gpw` * :c:func:`grad_rho_ab_to_grad_rho_oc` - * :c:func:`gser` + * :c:func:`gradient_list_opt` + * :c:func:`gradient_opt` + * :c:func:`gradvec_ia` + * :c:func:`gradvec_it` + * :c:func:`gradvec_ta` + * :c:func:`guess_hcore` + * :c:func:`guess_huckel` * :c:func:`h_apply_cis` * :c:func:`h_apply_cis_diexc` * :c:func:`h_apply_cis_diexcorg` @@ -1131,6 +1858,17 @@ Index of Subroutines/Functions * :c:func:`h_apply_cisd_sym_diexcorg` * :c:func:`h_apply_cisd_sym_diexcp` * :c:func:`h_apply_cisd_sym_monoexc` + * :c:func:`h_apply_mp2` + * :c:func:`h_apply_mp2_diexc` + * :c:func:`h_apply_mp2_diexcorg` + * :c:func:`h_apply_mp2_diexcp` + * :c:func:`h_apply_mp2_monoexc` + * :c:func:`h_apply_mp2_selection` + * :c:func:`h_apply_mp2_selection_diexc` + * :c:func:`h_apply_mp2_selection_diexcorg` + * :c:func:`h_apply_mp2_selection_diexcp` + * :c:func:`h_apply_mp2_selection_monoexc` + * :c:func:`h_func` * :c:func:`h_s2_u_0_nstates_openmp` * :c:func:`h_s2_u_0_nstates_openmp_work` * :c:func:`h_s2_u_0_nstates_openmp_work_1` @@ -1146,25 +1884,31 @@ Index of Subroutines/Functions * :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:`h_u_0_nstates_openmp` + * :c:func:`h_u_0_nstates_openmp_work` + * :c:func:`h_u_0_nstates_openmp_work_1` + * :c:func:`h_u_0_nstates_openmp_work_2` + * :c:func:`h_u_0_nstates_openmp_work_3` + * :c:func:`h_u_0_nstates_openmp_work_4` + * :c:func:`h_u_0_nstates_openmp_work_n_int` + * :c:func:`h_u_0_nstates_zmq` + * :c:func:`hcalc_template` * :c:func:`hcore_guess` - * :c:func:`heap_dsort` - * :c:func:`heap_dsort_big` - * :c:func:`heap_i2sort` - * :c:func:`heap_i2sort_big` - * :c:func:`heap_i8sort` - * :c:func:`heap_i8sort_big` - * :c:func:`heap_isort` - * :c:func:`heap_isort_big` - * :c:func:`heap_sort` - * :c:func:`heap_sort_big` * :c:func:`hermite` + * :c:func:`hessian_list_opt` + * :c:func:`hessian_opt` + * :c:func:`hessmat_iajb` + * :c:func:`hessmat_iatb` + * :c:func:`hessmat_itja` + * :c:func:`hessmat_itju` + * :c:func:`hessmat_itua` + * :c:func:`hessmat_taub` + * :c:func:`hpsi` * :c:func:`huckel_guess` * :c:func:`i2set_order` * :c:func:`i2set_order_big` - * :c:func:`i2sort` * :c:func:`i8set_order` * :c:func:`i8set_order_big` - * :c:func:`i8sort` * :c:func:`i_h_j` * :c:func:`i_h_j_double_alpha_beta` * :c:func:`i_h_j_double_spin` @@ -1179,22 +1923,22 @@ Index of Subroutines/Functions * :c:func:`i_s2_psi_minilist` * :c:func:`i_wee_j_single` * :c:func:`i_x1_pol_mult` - * :c:func:`initialize_bitmask_to_restart_ones` + * :c:func:`i_x1_pol_mult_cgtos` + * :c:func:`i_x1_pol_mult_cosgtos` + * :c:func:`idx2_tri_int` + * :c:func:`idx2_tri_rev_int` + * :c:func:`import_integrals_ao` + * :c:func:`import_trexio_determinants` + * :c:func:`import_trexio_integrals` + * :c:func:`increment_n_iter` * :c:func:`initialize_mo_coef_begin_iteration` * :c:func:`insert_into_ao_integrals_erf_map` * :c:func:`insert_into_ao_integrals_map` - * :c:func:`insertion_dsort` - * :c:func:`insertion_dsort_big` - * :c:func:`insertion_i2sort` - * :c:func:`insertion_i2sort_big` - * :c:func:`insertion_i8sort` - * :c:func:`insertion_i8sort_big` - * :c:func:`insertion_isort` - * :c:func:`insertion_isort_big` - * :c:func:`insertion_sort` - * :c:func:`insertion_sort_big` * :c:func:`int_gaus_pol` + * :c:func:`integral_f_hf_valence_ab` * :c:func:`integrale_new` + * :c:func:`integrale_new_cgtos` + * :c:func:`integrale_new_cosgtos` * :c:func:`integrale_new_erf` * :c:func:`is_a_1h` * :c:func:`is_a_1h1p` @@ -1208,34 +1952,49 @@ Index of Subroutines/Functions * :c:func:`is_connected_to_by_single` * :c:func:`is_i_in_virtual` * :c:func:`is_in_wavefunction` + * :c:func:`is_integer_in_string` + * :c:func:`is_same_spin` * :c:func:`is_spin_flip_possible` * :c:func:`is_the_hole_in_det` * :c:func:`is_the_particl_in_det` * :c:func:`iset_order` * :c:func:`iset_order_big` - * :c:func:`isort` + * :c:func:`json_close` * :c:func:`knowles_function` + * :c:func:`kronecker_delta` * :c:func:`ks_scf` * :c:func:`lapack_diag` + * :c:func:`lapack_diag_complex` * :c:func:`lapack_diagd` + * :c:func:`lapack_diagd_complex` + * :c:func:`lapack_diagd_diag_complex` + * :c:func:`lapack_diagd_diag_in_place_complex` + * :c:func:`lccsd` * :c:func:`list_to_bitstring` - * :c:func:`load_ao_integrals` * :c:func:`load_ao_integrals_erf` * :c:func:`load_mo_integrals` * :c:func:`load_mo_integrals_erf` + * :c:func:`lock_io` + * :c:func:`logabsgamma` * :c:func:`logfact` * :c:func:`lowercase` + * :c:func:`main` * :c:func:`make_s2_eigenfunction` * :c:func:`make_selection_buffer_s2` * :c:func:`map_load_from_disk` * :c:func:`map_save_to_disk` + * :c:func:`mat_to_vec_index` + * :c:func:`matrix_vector_product_complex` * :c:func:`memory_of_double` + * :c:func:`memory_of_double8` * :c:func:`memory_of_int` + * :c:func:`memory_of_int8` * :c:func:`merge_selection_buffers` * :c:func:`mix_mo_jk` * :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:func:`mo_coef_new_as_svd_vectors_of_mo_matrix_eig` * :c:func:`mo_to_ao` * :c:func:`mo_to_ao_no_overlap` * :c:func:`mo_two_e_integral` @@ -1245,13 +2004,33 @@ Index of Subroutines/Functions * :c:func:`modify_bitmasks_for_hole` * :c:func:`modify_bitmasks_for_hole_in_out` * :c:func:`modify_bitmasks_for_particl` + * :c:func:`mol_properties` * :c:func:`molden` + * :c:func:`molden_attachment` + * :c:func:`mp2` * :c:func:`mpi_print` + * :c:func:`mu_correction_of_on_top` + * :c:func:`mu_grad_rho_func` + * :c:func:`mu_rs_c` + * :c:func:`multiply_cpoly` * :c:func:`multiply_poly` + * :c:func:`multiply_poly_b0` + * :c:func:`multiply_poly_b1` + * :c:func:`multiply_poly_b2` + * :c:func:`multiply_poly_c0` + * :c:func:`multiply_poly_c1` + * :c:func:`multiply_poly_c2` + * :c:func:`multiply_poly_c2_inline_2e` + * :c:func:`multiply_poly_local` + * :c:func:`multiply_poly_v` * :c:func:`n_pt_sup` * :c:func:`nai_pol_mult` + * :c:func:`nai_pol_mult_cosgtos` * :c:func:`nai_pol_mult_erf` * :c:func:`nai_pol_mult_erf_ao` + * :c:func:`nai_pol_mult_erf_ao_with1s` + * :c:func:`nai_pol_mult_erf_v` + * :c:func:`nai_pol_mult_erf_with1s_v` * :c:func:`new_parallel_job` * :c:func:`new_zmq_pair_socket` * :c:func:`new_zmq_pull_socket` @@ -1259,27 +2038,73 @@ Index of Subroutines/Functions * :c:func:`new_zmq_sub_socket` * :c:func:`new_zmq_to_qp_run_socket` * :c:func:`normalize` + * :c:func:`nullify_small_elements` * :c:func:`number_of_holes` * :c:func:`number_of_holes_verbose` * :c:func:`number_of_particles` * :c:func:`number_of_particles_verbose` - * :c:func:`occ_pattern_of_det` - * :c:func:`occ_pattern_search_key` - * :c:func:`occ_pattern_to_dets` - * :c:func:`occ_pattern_to_dets_size` + * :c:func:`orb_range_2_rdm_openmp` + * :c:func:`orb_range_2_rdm_openmp_work` + * :c:func:`orb_range_2_rdm_openmp_work_1` + * :c:func:`orb_range_2_rdm_openmp_work_2` + * :c:func:`orb_range_2_rdm_openmp_work_3` + * :c:func:`orb_range_2_rdm_openmp_work_4` + * :c:func:`orb_range_2_rdm_openmp_work_n_int` + * :c:func:`orb_range_2_rdm_state_av_openmp` + * :c:func:`orb_range_2_rdm_state_av_openmp_work` + * :c:func:`orb_range_2_rdm_state_av_openmp_work_1` + * :c:func:`orb_range_2_rdm_state_av_openmp_work_2` + * :c:func:`orb_range_2_rdm_state_av_openmp_work_3` + * :c:func:`orb_range_2_rdm_state_av_openmp_work_4` + * :c:func:`orb_range_2_rdm_state_av_openmp_work_n_int` + * :c:func:`orb_range_2_trans_rdm_openmp` + * :c:func:`orb_range_2_trans_rdm_openmp_work` + * :c:func:`orb_range_2_trans_rdm_openmp_work_1` + * :c:func:`orb_range_2_trans_rdm_openmp_work_2` + * :c:func:`orb_range_2_trans_rdm_openmp_work_3` + * :c:func:`orb_range_2_trans_rdm_openmp_work_4` + * :c:func:`orb_range_2_trans_rdm_openmp_work_n_int` + * :c:func:`orb_range_diag_to_all_2_rdm_dm_buffer` + * :c:func:`orb_range_diag_to_all_states_2_rdm_dm_buffer` + * :c:func:`orb_range_diag_to_all_states_2_rdm_trans_buffer` + * :c:func:`orb_range_off_diag_double_to_2_rdm_aa_dm_buffer` + * :c:func:`orb_range_off_diag_double_to_2_rdm_ab_dm_buffer` + * :c:func:`orb_range_off_diag_double_to_2_rdm_bb_dm_buffer` + * :c:func:`orb_range_off_diag_double_to_all_states_aa_dm_buffer` + * :c:func:`orb_range_off_diag_double_to_all_states_aa_trans_rdm_buffer` + * :c:func:`orb_range_off_diag_double_to_all_states_ab_dm_buffer` + * :c:func:`orb_range_off_diag_double_to_all_states_ab_trans_rdm_buffer` + * :c:func:`orb_range_off_diag_double_to_all_states_bb_dm_buffer` + * :c:func:`orb_range_off_diag_double_to_all_states_trans_rdm_bb_buffer` + * :c:func:`orb_range_off_diag_single_to_2_rdm_aa_dm_buffer` + * :c:func:`orb_range_off_diag_single_to_2_rdm_ab_dm_buffer` + * :c:func:`orb_range_off_diag_single_to_2_rdm_bb_dm_buffer` + * :c:func:`orb_range_off_diag_single_to_all_states_aa_dm_buffer` + * :c:func:`orb_range_off_diag_single_to_all_states_aa_trans_rdm_buffer` + * :c:func:`orb_range_off_diag_single_to_all_states_ab_dm_buffer` + * :c:func:`orb_range_off_diag_single_to_all_states_ab_trans_rdm_buffer` + * :c:func:`orb_range_off_diag_single_to_all_states_bb_dm_buffer` + * :c:func:`orb_range_off_diag_single_to_all_states_bb_trans_rdm_buffer` + * :c:func:`ormas_occ` * :c:func:`ortho_canonical` + * :c:func:`ortho_canonical_complex` * :c:func:`ortho_lowdin` + * :c:func:`ortho_lowdin_complex` * :c:func:`ortho_qr` + * :c:func:`ortho_qr_complex` * :c:func:`ortho_qr_unblocked` + * :c:func:`ortho_qr_unblocked_complex` + * :c:func:`ortho_svd` * :c:func:`orthonormalize_mos` * :c:func:`overlap_bourrin_deriv_x` * :c:func:`overlap_bourrin_dipole` * :c:func:`overlap_bourrin_spread` * :c:func:`overlap_bourrin_x` + * :c:func:`overlap_cgaussian_x` * :c:func:`overlap_gaussian_x` + * :c:func:`overlap_gaussian_xyz` + * :c:func:`overlap_gaussian_xyz_v` * :c:func:`overlap_x_abs` - * :c:func:`past_d1` - * :c:func:`past_d2` * :c:func:`perturb_buffer_by_mono_dummy` * :c:func:`perturb_buffer_by_mono_epstein_nesbet` * :c:func:`perturb_buffer_by_mono_epstein_nesbet_2x2` @@ -1292,24 +2117,53 @@ Index of Subroutines/Functions * :c:func:`perturb_buffer_epstein_nesbet_2x2_no_ci_diag` * :c:func:`perturb_buffer_moller_plesset` * :c:func:`perturb_buffer_qdpt` + * :c:func:`pivoted_cholesky` + * :c:func:`pol_modif_center` + * :c:func:`pol_modif_center_x` * :c:func:`primitive_value` + * :c:func:`primitive_value_explicit` + * :c:func:`print_2rdm` * :c:func:`print_ci_vectors` * :c:func:`print_det` - * :c:func:`print_e_conv` + * :c:func:`print_det_one_dimension` + * :c:func:`print_detweights` + * :c:func:`print_dipole` + * :c:func:`print_dipole_moment` + * :c:func:`print_dipole_moments` + * :c:func:`print_energy` * :c:func:`print_energy_components` + * :c:func:`print_exc` * :c:func:`print_extrapolated_energy` + * :c:func:`print_fock_diag` * :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` + * :c:func:`print_grad` + * :c:func:`print_hamiltonian` * :c:func:`print_memory_usage` + * :c:func:`print_mol_properties` + * :c:func:`print_mos` + * :c:func:`print_oscillator_strength` + * :c:func:`print_pseudo_overlap` + * :c:func:`print_scf_int` + * :c:func:`print_sorted_wf_coef` * :c:func:`print_spindet` * :c:func:`print_summary` + * :c:func:`print_summary_tc` + * :c:func:`print_transition_dipole_moment` + * :c:func:`print_var_energy` * :c:func:`print_wf` + * :c:func:`projected_operators` * :c:func:`provide_all_mo_integrals_erf` * :c:func:`provide_everything` + * :c:func:`provide_for_selection_slave` + * :c:func:`provide_for_zmq_pt2` * :c:func:`pt2` + * :c:func:`pt2_add` + * :c:func:`pt2_add2` + * :c:func:`pt2_alloc` * :c:func:`pt2_collector` + * :c:func:`pt2_dealloc` + * :c:func:`pt2_deserialize` * :c:func:`pt2_dummy` * :c:func:`pt2_epstein_nesbet` * :c:func:`pt2_epstein_nesbet_2x2` @@ -1318,12 +2172,11 @@ Index of Subroutines/Functions * :c:func:`pt2_find_sample_lr` * :c:func:`pt2_moller_plesset` * :c:func:`pt2_qdpt` + * :c:func:`pt2_serialize` * :c:func:`pt2_slave_inproc` - * :c:func:`pull_pt2` * :c:func:`pull_pt2_results` * :c:func:`pull_selection_results` * :c:func:`push_integrals` - * :c:func:`push_pt2` * :c:func:`push_pt2_results` * :c:func:`push_pt2_results_async_recv` * :c:func:`push_pt2_results_async_send` @@ -1332,37 +2185,52 @@ Index of Subroutines/Functions * :c:func:`qrpa` * :c:func:`qrpad` * :c:func:`qrpadd` - * :c:func:`quick_dsort` - * :c:func:`quick_i2sort` - * :c:func:`quick_i8sort` - * :c:func:`quick_isort` - * :c:func:`quick_sort` + * :c:func:`randomized_svd` + * :c:func:`read_array_two_rdm` + * :c:func:`read_array_two_trans_rdm` * :c:func:`read_dets` + * :c:func:`read_spindeterminants` + * :c:func:`recentered_cpoly2` * :c:func:`recentered_poly2` + * :c:func:`recentered_poly2_v` + * :c:func:`recentered_poly2_v0` * :c:func:`remove_duplicates_in_psi_det` * :c:func:`remove_duplicates_in_selection_buffer` * :c:func:`remove_small_contributions` * :c:func:`reorder_core_orb` + * :c:func:`reorder_mo_max_overlap` + * :c:func:`reorder_orbitals_for_casscf` + * :c:func:`replace_wf` * :c:func:`reset_zmq_addresses` * :c:func:`resident_memory` * :c:func:`resize_h_apply_buffer` + * :c:func:`restore_symmetry` * :c:func:`rho_ab_to_rho_oc` * :c:func:`rho_oc_to_rho_ab` * :c:func:`rint` * :c:func:`rint1` * :c:func:`rint_large_n` * :c:func:`rint_sum` - * :c:func:`rinteg` - * :c:func:`rintgauss` * :c:func:`roothaan_hall_scf` * :c:func:`rotate_mos` + * :c:func:`rotation_matrix` + * :c:func:`rotation_matrix_iterative` * :c:func:`routine` - * :c:func:`routine_e_conv` + * :c:func:`routine_active_only` + * :c:func:`routine_active_only_trans` + * :c:func:`routine_bielec_pqxx_no` + * :c:func:`routine_bielec_pxxq_no_array` * :c:func:`routine_example_psi_det` + * :c:func:`routine_full_mos` + * :c:func:`routine_s2` * :c:func:`routine_save_one_e_dm` + * :c:func:`routine_test_cas_based_density` * :c:func:`rs_ks_scf` * :c:func:`run` * :c:func:`run_cipsi` + * :c:func:`run_cisd` + * :c:func:`run_optimization_mos_cipsi` + * :c:func:`run_orb_opt_trust_v2` * :c:func:`run_pt2_slave` * :c:func:`run_pt2_slave_large` * :c:func:`run_pt2_slave_small` @@ -1372,91 +2240,158 @@ Index of Subroutines/Functions * :c:func:`run_stochastic_cipsi` * :c:func:`s2_u_0` * :c:func:`s2_u_0_nstates` - * :c:func:`sabpartial` * :c:func:`save_energy` * :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` - * :c:func:`save_iterations` * :c:func:`save_mos` + * :c:func:`save_mos_no_occ` * :c:func:`save_mos_truncated` * :c:func:`save_natorb` + * :c:func:`save_natorb_no_ov_rot` + * :c:func:`save_natorb_no_ref` * :c:func:`save_natural_mos` + * :c:func:`save_natural_mos_canon_label` + * :c:func:`save_natural_mos_no_ov_rot` * :c:func:`save_one_e_dm` * :c:func:`save_ortho_mos` * :c:func:`save_ref_determinant` * :c:func:`save_wavefunction` * :c:func:`save_wavefunction_general` + * :c:func:`save_wavefunction_general_unormalized` * :c:func:`save_wavefunction_specified` * :c:func:`save_wavefunction_truncated` * :c:func:`save_wavefunction_unsorted` * :c:func:`scf` * :c:func:`select_connected` + * :c:func:`select_singles` * :c:func:`select_singles_and_doubles` * :c:func:`selection_collector` * :c:func:`selection_slave_inproc` * :c:func:`set_bit_to_integer` * :c:func:`set_bitmask_hole_as_input` * :c:func:`set_bitmask_particl_as_input` + * :c:func:`set_multiple_levels_omp` + * :c:func:`set_natorb_no_ov_rot` * :c:func:`set_natural_mos` + * :c:func:`set_natural_mos_canon_label` * :c:func:`set_order` * :c:func:`set_order_big` + * :c:func:`shank` + * :c:func:`shank_function` + * :c:func:`shank_general` * :c:func:`single_excitation_wee` - * :c:func:`sort` * :c:func:`sort_by_fock_energies` * :c:func:`sort_dets_ab` * :c:func:`sort_dets_ab_v` * :c:func:`sort_dets_ba_v` * :c:func:`sort_dets_by_det_search_key` * :c:func:`sort_selection_buffer` + * :c:func:`sort_wf` * :c:func:`sorted_dnumber` * :c:func:`sorted_i2number` * :c:func:`sorted_i8number` * :c:func:`sorted_inumber` * :c:func:`sorted_number` * :c:func:`spin_det_search_key` + * :c:func:`splash_p` * :c:func:`splash_pq` + * :c:func:`spot_hasbeen` * :c:func:`spot_isinwf` + * :c:func:`state_average_energy` + * :c:func:`state_weight_normalization` + * :c:func:`step_f` * :c:func:`step_function_becke` + * :c:func:`sub_a_at` + * :c:func:`sub_to_full_rotation_matrix` + * :c:func:`sum_a_at` * :c:func:`svd` + * :c:func:`svd_complex` + * :c:func:`svd_symm` * :c:func:`swap_mos` * :c:func:`switch_qp_run_to_master` * :c:func:`tamiser` * :c:func:`task_done_to_taskserver` * :c:func:`tasks_done_to_taskserver` * :c:func:`test` + * :c:func:`test_2_rdm` + * :c:func:`test_bielec_pqxx` + * :c:func:`test_bielec_pxxq_chol` + * :c:func:`test_chol` + * :c:func:`test_dav` + * :c:func:`test_dav_dress` + * :c:func:`test_f_hf_valence_ab` + * :c:func:`test_f_ia_valence_ab` + * :c:func:`test_f_ii_ia_aa_valence_ab` + * :c:func:`test_f_ii_valence_ab` + * :c:func:`test_proj_op` * :c:func:`testteethbuilding` * :c:func:`total_memory` + * :c:func:`truncate_wf` + * :c:func:`trust_region_expected_e` + * :c:func:`trust_region_is_step_cancelled` + * :c:func:`trust_region_optimal_lambda` + * :c:func:`trust_region_rho` + * :c:func:`trust_region_step` + * :c:func:`trust_region_step_w_expected_e` * :c:func:`two_e_integrals_index` + * :c:func:`two_e_integrals_index_2fold` * :c:func:`two_e_integrals_index_reverse` + * :c:func:`two_e_integrals_index_reverse_2fold` * :c:func:`u_0_h_u_0` * :c:func:`u_0_h_u_0_two_e` + * :c:func:`u_0_hs2_u_0` * :c:func:`u_0_s2_u_0` * :c:func:`u_dot_u` * :c:func:`u_dot_v` + * :c:func:`unlock_io` + * :c:func:`update_keys_values` + * :c:func:`update_keys_values_n_states` + * :c:func:`update_keys_values_n_states_trans` + * :c:func:`update_parameters` * :c:func:`update_pt2_and_variance_weights` - * :c:func:`v_e_n` + * :c:func:`update_st_av_ci_energy` + * :c:func:`update_wf_of_psi_bilinear_matrix` + * :c:func:`v2_over_x` + * :c:func:`v_grad_rho_ab_to_v_grad_rho_oc` * :c:func:`v_grad_rho_oc_to_v_grad_rho_ab` + * :c:func:`v_n_e` + * :c:func:`v_n_e_cgtos` + * :c:func:`v_n_e_cosgtos` * :c:func:`v_phi` * :c:func:`v_r` + * :c:func:`v_r_cgtos` + * :c:func:`v_r_cosgtos` * :c:func:`v_rho_ab_to_v_rho_oc` * :c:func:`v_rho_oc_to_v_rho_ab` * :c:func:`v_theta` * :c:func:`vcorrlr` + * :c:func:`vec_to_mat_index` + * :c:func:`vec_to_mat_v2` * :c:func:`wait_for_next_state` * :c:func:`wait_for_state` * :c:func:`wait_for_states` * :c:func:`wall_time` * :c:func:`wallis` * :c:func:`wf_of_psi_bilinear_matrix` + * :c:func:`write_array_two_rdm` + * :c:func:`write_array_two_trans_rdm` * :c:func:`write_bool` + * :c:func:`write_c_ij_ab` + * :c:func:`write_cipsi_json` * :c:func:`write_double` * :c:func:`write_git_log` * :c:func:`write_int` * :c:func:`write_integrals_erf` + * :c:func:`write_on_top_in_real_space` * :c:func:`write_spindeterminants` * :c:func:`write_time` + * :c:func:`zboysfun` + * :c:func:`zboysfun00_1` + * :c:func:`zboysfun00_2` + * :c:func:`zboysfun00nrp` + * :c:func:`zboysfunnrp` * :c:func:`zmq_abort` * :c:func:`zmq_delete_task` * :c:func:`zmq_delete_task_async_recv` diff --git a/docs/source/programs/cisd.rst b/docs/source/programs/cisd.rst index 1a61760d3..760ce50cc 100644 --- a/docs/source/programs/cisd.rst +++ b/docs/source/programs/cisd.rst @@ -72,9 +72,13 @@ cisd .. 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` + * :c:data:`psi_configuration` + * :c:data:`n_det` + * :c:data:`c0_weight` + * :c:data:`psi_coef` + * :c:data:`psi_det_sorted_bit` + * :c:data:`psi_configuration` + * :c:data:`psi_det` + * :c:data:`psi_det_size` + * :c:data:`psi_det_sorted_bit` * :c:data:`read_wf` diff --git a/docs/source/programs/fci.rst b/docs/source/programs/fci.rst index daccc0d1e..00c39960b 100644 --- a/docs/source/programs/fci.rst +++ b/docs/source/programs/fci.rst @@ -50,15 +50,20 @@ fci * :c:data:`do_pt2` * :c:data:`is_zmq_slave` + * :c:data:`json_int_fmt` + * :c:data:`json_unit` * :c:data:`mo_two_e_integrals_in_map` + * :c:data:`n_states` * :c:data:`psi_coef` * :c:data:`psi_det` + * :c:data:`pt2_min_parallel_tasks` Calls: .. hlist:: :columns: 3 + * :c:func:`json_close` * :c:func:`run_cipsi` * :c:func:`run_slave_cipsi` * :c:func:`run_stochastic_cipsi` @@ -72,18 +77,19 @@ fci * :c:data:`ci_electronic_energy` * :c:data:`ci_energy` * :c:data:`ci_electronic_energy` + * :c:data:`psi_configuration` * :c:data:`n_det` - * :c:data:`n_iter` - * :c:data:`psi_occ_pattern` + * :c:data:`n_det_generators` + * :c:data:`n_det_selectors` * :c:data:`c0_weight` * :c:data:`distributed_davidson` * :c:data:`psi_coef` * :c:data:`psi_det_sorted_bit` + * :c:data:`psi_configuration` * :c:data:`psi_det` * :c:data:`psi_det_size` * :c:data:`psi_det_sorted_bit` * :c:data:`psi_energy` - * :c:data:`psi_occ_pattern` * :c:data:`psi_energy` * :c:data:`pt2_e0_denominator` * :c:data:`pt2_match_weight` diff --git a/docs/source/programs/four_idx_transform.rst b/docs/source/programs/four_idx_transform.rst index 220433e11..5a6497222 100644 --- a/docs/source/programs/four_idx_transform.rst +++ b/docs/source/programs/four_idx_transform.rst @@ -24,6 +24,7 @@ four_idx_transform .. hlist:: :columns: 3 + * :c:data:`do_mo_cholesky` * :c:data:`io_mo_two_e_integrals` * :c:data:`mo_two_e_integrals_in_map` diff --git a/docs/source/programs/pt2.rst b/docs/source/programs/pt2.rst index 2df4377d4..5da8e90e4 100644 --- a/docs/source/programs/pt2.rst +++ b/docs/source/programs/pt2.rst @@ -46,10 +46,18 @@ pt2 .. hlist:: :columns: 3 + * :c:data:`n_det_generators` + * :c:data:`n_det_selectors` * :c:data:`distributed_davidson` + * :c:data:`psi_coef` + * :c:data:`psi_det` * :c:data:`pt2_e0_denominator` + * :c:data:`pt2_match_weight` + * :c:data:`pt2_overlap` * :c:data:`pt2_stoch_istate` * :c:data:`read_wf` * :c:data:`selection_weight` * :c:data:`state_average_weight` + * :c:data:`threshold_davidson_pt2` * :c:data:`threshold_generators` + * :c:data:`variance_match_weight` diff --git a/docs/source/programs/rs_ks_scf.rst b/docs/source/programs/rs_ks_scf.rst index 597a92b8c..1d6a32b7e 100644 --- a/docs/source/programs/rs_ks_scf.rst +++ b/docs/source/programs/rs_ks_scf.rst @@ -30,7 +30,6 @@ rs_ks_scf .. hlist:: :columns: 3 - * :c:func:`check_coherence_functional` * :c:func:`create_guess` * :c:func:`orthonormalize_mos` * :c:func:`run` diff --git a/docs/source/programs/save_natorb.rst b/docs/source/programs/save_natorb.rst index 87dce047f..e79f96cf9 100644 --- a/docs/source/programs/save_natorb.rst +++ b/docs/source/programs/save_natorb.rst @@ -25,6 +25,7 @@ save_natorb .. hlist:: :columns: 3 + * :c:data:`nucl_coord` * :c:data:`read_wf` Calls: diff --git a/docs/source/programs/scf.rst b/docs/source/programs/scf.rst index 3b8035f7a..0c70d00a4 100644 --- a/docs/source/programs/scf.rst +++ b/docs/source/programs/scf.rst @@ -58,5 +58,9 @@ scf * :c:data:`fock_matrix_ao_alpha` * :c:data:`fock_matrix_ao_alpha` + * :c:data:`fock_matrix_ao_alpha` + * :c:data:`fock_matrix_ao_alpha` + * :c:data:`mo_coef` + * :c:data:`level_shift` * :c:data:`mo_coef` * :c:data:`mo_label` diff --git a/plugins/local/ao_extra_basis/EZFIO.cfg b/plugins/local/ao_extra_basis/EZFIO.cfg new file mode 100644 index 000000000..bddf4d373 --- /dev/null +++ b/plugins/local/ao_extra_basis/EZFIO.cfg @@ -0,0 +1,87 @@ +[ao_extra_basis] +type: character*(256) +doc: Name of the |ao_extra| basis set +interface: ezfio + +[ao_extra_num] +type: integer +doc: Number of |ao_extras| +interface: ezfio, provider + +[ao_extra_prim_num] +type: integer +doc: Number of primitives per |ao_extra| +size: (extra_basis.ao_extra_num) +interface: ezfio, provider + +[ao_extra_prim_num_max] +type: integer +doc: Maximum number of primitives +default: =maxval(extra_basis.ao_extra_prim_num) +interface: ezfio + +[ao_extra_nucl] +type: integer +doc: Index of the nucleus on which the |ao_extra| is centered +size: (extra_basis.ao_extra_num) +interface: ezfio, provider + +[ao_extra_power] +type: integer +doc: Powers of x, y and z for each |ao_extra| +size: (extra_basis.ao_extra_num,3) +interface: ezfio, provider + +[ao_extra_coef] +type: double precision +doc: Primitive coefficients, read from input. Those should not be used directly, as the MOs are expressed on the basis of **normalized** ao_extras. +size: (extra_basis.ao_extra_num,extra_basis.ao_extra_prim_num_max) +interface: ezfio, provider + +[ao_extra_expo] +type: double precision +doc: Exponents for each primitive of each |ao_extra| +size: (extra_basis.ao_extra_num,extra_basis.ao_extra_prim_num_max) +interface: ezfio, provider + +[ao_extra_md5] +type: character*(32) +doc: MD5 key, specific of the |ao_extra| basis +interface: ezfio, provider + +[ao_extra_cartesian] +type: logical +doc: If |true|, use |ao_extras| in Cartesian coordinates (6d,10f,...) +interface: ezfio, provider +default: false + +[ao_extra_normalized] +type: logical +doc: Use normalized basis functions +interface: ezfio, provider +default: true + +[primitives_normalized_extra] +type: logical +doc: Use normalized primitive functions +interface: ezfio, provider +default: true + +[ao_extra_expo_im] +type: double precision +doc: imag part for Exponents for each primitive of each cGTOs |ao_extra| +size: (extra_basis.ao_extra_num,extra_basis.ao_extra_prim_num_max) +interface: ezfio, provider + +[ao_extra_expo_pw] +type: double precision +doc: plane wave part for each primitive GTOs |ao_extra| +size: (3,extra_basis.ao_extra_num,extra_basis.ao_extra_prim_num_max) +interface: ezfio, provider + +[ao_extra_expo_phase] +type: double precision +doc: phase shift for each primitive GTOs |ao_extra| +size: (3,extra_basis.ao_extra_num,extra_basis.ao_extra_prim_num_max) +interface: ezfio, provider + diff --git a/plugins/local/ao_extra_basis/NEED b/plugins/local/ao_extra_basis/NEED new file mode 100644 index 000000000..c4e8c3cfc --- /dev/null +++ b/plugins/local/ao_extra_basis/NEED @@ -0,0 +1,3 @@ +extra_nuclei +basis +ao_basis diff --git a/plugins/local/ao_extra_basis/README.rst b/plugins/local/ao_extra_basis/README.rst new file mode 100644 index 000000000..3d1dc8137 --- /dev/null +++ b/plugins/local/ao_extra_basis/README.rst @@ -0,0 +1,4 @@ +=========== +extra_basis +=========== + diff --git a/plugins/local/ao_extra_basis/aos.irp.f b/plugins/local/ao_extra_basis/aos.irp.f new file mode 100644 index 000000000..56d6fb04e --- /dev/null +++ b/plugins/local/ao_extra_basis/aos.irp.f @@ -0,0 +1,325 @@ +BEGIN_PROVIDER [ integer, ao_extra_prim_num_max ] + implicit none + BEGIN_DOC + ! Max number of primitives. + END_DOC + ao_extra_prim_num_max = maxval(ao_extra_prim_num) +END_PROVIDER + +BEGIN_PROVIDER [ integer, ao_extra_shell, (ao_extra_num) ] + implicit none + BEGIN_DOC + ! Index of the shell to which the ao_extra corresponds + END_DOC + integer :: i, j, k, n + k=0 + do i=1,shell_num + n = shell_ang_mom(i)+1 + do j=1,(n*(n+1))/2 + k = k+1 + ao_extra_shell(k) = i + enddo + enddo + +END_PROVIDER + +BEGIN_PROVIDER [ integer, ao_extra_first_of_shell, (shell_num) ] + implicit none + BEGIN_DOC + ! Index of the shell to which the ao_extra corresponds + END_DOC + integer :: i, j, k, n + k=1 + do i=1,shell_num + ao_extra_first_of_shell(i) = k + n = shell_ang_mom(i)+1 + k = k+(n*(n+1))/2 + enddo + +END_PROVIDER + + BEGIN_PROVIDER [ double precision, ao_extra_coef_normalized, (ao_extra_num,ao_extra_prim_num_max) ] +&BEGIN_PROVIDER [ double precision, ao_extra_coef_normalization_factor, (ao_extra_num) ] + implicit none + BEGIN_DOC + ! Coefficients including the |ao_extra| normalization + END_DOC + double precision :: norm,overlap_x,overlap_y,overlap_z,C_A(3), c + integer :: l, powA(3), nz + integer :: i,j,k + nz=100 + C_A(1) = 0.d0 + C_A(2) = 0.d0 + C_A(3) = 0.d0 + ao_extra_coef_normalized = 0.d0 + + do i=1,ao_extra_num + +! powA(1) = ao_extra_power(i,1) + ao_extra_power(i,2) + ao_extra_power(i,3) +! powA(2) = 0 +! powA(3) = 0 + powA(1) = ao_extra_power(i,1) + powA(2) = ao_extra_power(i,2) + powA(3) = ao_extra_power(i,3) + + ! Normalization of the primitives + if (primitives_normalized_extra) then + do j=1,ao_extra_prim_num(i) + call overlap_gaussian_xyz(C_A,C_A,ao_extra_expo(i,j),ao_extra_expo(i,j), & + powA,powA,overlap_x,overlap_y,overlap_z,norm,nz) + ao_extra_coef_normalized(i,j) = ao_extra_coef(i,j)/dsqrt(norm) + enddo + else + do j=1,ao_extra_prim_num(i) + ao_extra_coef_normalized(i,j) = ao_extra_coef(i,j) + enddo + endif + + ! Normalization of the contracted basis functions + if (ao_extra_normalized) then + norm = 0.d0 + do j=1,ao_extra_prim_num(i) + do k=1,ao_extra_prim_num(i) + call overlap_gaussian_xyz(C_A,C_A,ao_extra_expo(i,j),ao_extra_expo(i,k),powA,powA,overlap_x,overlap_y,overlap_z,c,nz) + norm = norm+c*ao_extra_coef_normalized(i,j)*ao_extra_coef_normalized(i,k) + enddo + enddo + ao_extra_coef_normalization_factor(i) = 1.d0/dsqrt(norm) + else + ao_extra_coef_normalization_factor(i) = 1.d0 + endif + enddo + +END_PROVIDER + + BEGIN_PROVIDER [ double precision, ao_extra_coef_normalized_ordered, (ao_extra_num,ao_extra_prim_num_max) ] +&BEGIN_PROVIDER [ double precision, ao_extra_expo_ordered, (ao_extra_num,ao_extra_prim_num_max) ] + implicit none + BEGIN_DOC + ! Sorted primitives to accelerate 4 index |MO| transformation + END_DOC + + integer :: iorder(ao_extra_prim_num_max) + double precision :: d(ao_extra_prim_num_max,2) + integer :: i,j + do i=1,ao_extra_num + do j=1,ao_extra_prim_num(i) + iorder(j) = j + d(j,1) = ao_extra_expo(i,j) + d(j,2) = ao_extra_coef_normalized(i,j) + enddo + call dsort(d(1,1),iorder,ao_extra_prim_num(i)) + call dset_order(d(1,2),iorder,ao_extra_prim_num(i)) + do j=1,ao_extra_prim_num(i) + ao_extra_expo_ordered(i,j) = d(j,1) + ao_extra_coef_normalized_ordered(i,j) = d(j,2) + enddo + enddo +END_PROVIDER + + +BEGIN_PROVIDER [ double precision, ao_extra_coef_normalized_ordered_transp, (ao_extra_prim_num_max,ao_extra_num) ] + implicit none + BEGIN_DOC + ! Transposed :c:data:`ao_extra_coef_normalized_ordered` + END_DOC + integer :: i,j + do j=1, ao_extra_num + do i=1, ao_extra_prim_num_max + ao_extra_coef_normalized_ordered_transp(i,j) = ao_extra_coef_normalized_ordered(j,i) + enddo + enddo + +END_PROVIDER + +BEGIN_PROVIDER [ double precision, ao_extra_expo_ordered_transp, (ao_extra_prim_num_max,ao_extra_num) ] + implicit none + BEGIN_DOC + ! Transposed :c:data:`ao_extra_expo_ordered` + END_DOC + integer :: i,j + do j=1, ao_extra_num + do i=1, ao_extra_prim_num_max + ao_extra_expo_ordered_transp(i,j) = ao_extra_expo_ordered(j,i) + enddo + enddo + +END_PROVIDER + + BEGIN_PROVIDER [ integer, ao_extra_l, (ao_extra_num) ] +&BEGIN_PROVIDER [ integer, ao_extra_l_max ] +&BEGIN_PROVIDER [ character*(128), ao_extra_l_char, (ao_extra_num) ] + implicit none + BEGIN_DOC +! :math:`l` value of the |ao_extra|: :math`a+b+c` in :math:`x^a y^b z^c` + END_DOC + integer :: i + do i=1,ao_extra_num + ao_extra_l(i) = ao_extra_power(i,1) + ao_extra_power(i,2) + ao_extra_power(i,3) + ao_extra_l_char(i) = l_to_character(ao_extra_l(i)) + enddo + ao_extra_l_max = maxval(ao_extra_l) +END_PROVIDER + +integer function ao_extra_power_index(nx,ny,nz) + implicit none + integer, intent(in) :: nx, ny, nz + BEGIN_DOC + ! Unique index given to a triplet of powers: + ! + ! :math:`\frac{1}{2} (l-n_x) (l-n_x+1) + n_z + 1` + END_DOC + integer :: l + l = nx + ny + nz + ao_extra_power_index = ((l-nx)*(l-nx+1))/2 + nz + 1 +end + + + BEGIN_PROVIDER [ integer, Nucl_N_ao_extras, (extra_nucl_num)] +&BEGIN_PROVIDER [ integer, N_ao_extras_max ] + implicit none + BEGIN_DOC + ! Number of |ao_extras| per atom + END_DOC + integer :: i + Nucl_N_ao_extras = 0 + do i = 1, ao_extra_num + Nucl_N_ao_extras(ao_extra_nucl(i)) +=1 + enddo + N_ao_extras_max = maxval(Nucl_N_ao_extras) +END_PROVIDER + + BEGIN_PROVIDER [ integer, Nucl_ao_extras, (extra_nucl_num,N_ao_extras_max)] + implicit none + BEGIN_DOC + ! List of |ao_extras| centered on each atom + END_DOC + integer :: i + integer, allocatable :: nucl_tmp(:) + allocate(nucl_tmp(nucl_num)) + nucl_tmp = 0 + Nucl_ao_extras = 0 + do i = 1, ao_extra_num + nucl_tmp(ao_extra_nucl(i))+=1 + Nucl_ao_extras(ao_extra_nucl(i),nucl_tmp(ao_extra_nucl(i))) = i + enddo + deallocate(nucl_tmp) +END_PROVIDER + + + BEGIN_PROVIDER [ integer, Nucl_list_shell_ao_extras, (extra_nucl_num,N_ao_extras_max)] +&BEGIN_PROVIDER [ integer, Nucl_num_shell_ao_extras, (nucl_num)] + implicit none + integer :: i,j,k + BEGIN_DOC + ! Index of the shell type |ao_extras| and of the corresponding |ao_extras| + ! By convention, for p,d,f and g |ao_extras|, we take the index + ! of the |ao_extra| with the the corresponding power in the x axis + END_DOC + do i = 1, extra_nucl_num + Nucl_num_shell_ao_extras(i) = 0 + do j = 1, Nucl_N_ao_extras(i) + if (ao_extra_power(Nucl_ao_extras(i,j),1) == ao_extra_l(Nucl_ao_extras(i,j))) then + Nucl_num_shell_ao_extras(i)+=1 + Nucl_list_shell_ao_extras(i,Nucl_num_shell_ao_extras(i))=Nucl_ao_extras(i,j) + endif + enddo + enddo + +END_PROVIDER + + +BEGIN_PROVIDER [ character*(4), ao_extra_l_char_space, (ao_extra_num) ] + implicit none + BEGIN_DOC +! Converts an l value to a string + END_DOC + integer :: i + character*(4) :: give_ao_extra_character_space + do i=1,ao_extra_num + + if(ao_extra_l(i)==0)then + ! S type ao_extra + give_ao_extra_character_space = 'S ' + elseif(ao_extra_l(i) == 1)then + ! P type ao_extra + if(ao_extra_power(i,1)==1)then + give_ao_extra_character_space = 'X ' + elseif(ao_extra_power(i,2) == 1)then + give_ao_extra_character_space = 'Y ' + else + give_ao_extra_character_space = 'Z ' + endif + elseif(ao_extra_l(i) == 2)then + ! D type ao_extra + if(ao_extra_power(i,1)==2)then + give_ao_extra_character_space = 'XX ' + elseif(ao_extra_power(i,2) == 2)then + give_ao_extra_character_space = 'YY ' + elseif(ao_extra_power(i,3) == 2)then + give_ao_extra_character_space = 'ZZ ' + elseif(ao_extra_power(i,1) == 1 .and. ao_extra_power(i,2) == 1)then + give_ao_extra_character_space = 'XY ' + elseif(ao_extra_power(i,1) == 1 .and. ao_extra_power(i,3) == 1)then + give_ao_extra_character_space = 'XZ ' + else + give_ao_extra_character_space = 'YZ ' + endif + elseif(ao_extra_l(i) == 3)then + ! F type ao_extra + if(ao_extra_power(i,1)==3)then + give_ao_extra_character_space = 'XXX ' + elseif(ao_extra_power(i,2) == 3)then + give_ao_extra_character_space = 'YYY ' + elseif(ao_extra_power(i,3) == 3)then + give_ao_extra_character_space = 'ZZZ ' + elseif(ao_extra_power(i,1) == 2 .and. ao_extra_power(i,2) == 1)then + give_ao_extra_character_space = 'XXY ' + elseif(ao_extra_power(i,1) == 2 .and. ao_extra_power(i,3) == 1)then + give_ao_extra_character_space = 'XXZ ' + elseif(ao_extra_power(i,2) == 2 .and. ao_extra_power(i,1) == 1)then + give_ao_extra_character_space = 'YYX ' + elseif(ao_extra_power(i,2) == 2 .and. ao_extra_power(i,3) == 1)then + give_ao_extra_character_space = 'YYZ ' + elseif(ao_extra_power(i,3) == 2 .and. ao_extra_power(i,1) == 1)then + give_ao_extra_character_space = 'ZZX ' + elseif(ao_extra_power(i,3) == 2 .and. ao_extra_power(i,2) == 1)then + give_ao_extra_character_space = 'ZZY ' + elseif(ao_extra_power(i,3) == 1 .and. ao_extra_power(i,2) == 1 .and. ao_extra_power(i,3) == 1)then + give_ao_extra_character_space = 'XYZ ' + endif + elseif(ao_extra_l(i) == 4)then + ! G type ao_extra + if(ao_extra_power(i,1)==4)then + give_ao_extra_character_space = 'XXXX' + elseif(ao_extra_power(i,2) == 4)then + give_ao_extra_character_space = 'YYYY' + elseif(ao_extra_power(i,3) == 4)then + give_ao_extra_character_space = 'ZZZZ' + elseif(ao_extra_power(i,1) == 3 .and. ao_extra_power(i,2) == 1)then + give_ao_extra_character_space = 'XXXY' + elseif(ao_extra_power(i,1) == 3 .and. ao_extra_power(i,3) == 1)then + give_ao_extra_character_space = 'XXXZ' + elseif(ao_extra_power(i,2) == 3 .and. ao_extra_power(i,1) == 1)then + give_ao_extra_character_space = 'YYYX' + elseif(ao_extra_power(i,2) == 3 .and. ao_extra_power(i,3) == 1)then + give_ao_extra_character_space = 'YYYZ' + elseif(ao_extra_power(i,3) == 3 .and. ao_extra_power(i,1) == 1)then + give_ao_extra_character_space = 'ZZZX' + elseif(ao_extra_power(i,3) == 3 .and. ao_extra_power(i,2) == 1)then + give_ao_extra_character_space = 'ZZZY' + elseif(ao_extra_power(i,1) == 2 .and. ao_extra_power(i,2) == 2)then + give_ao_extra_character_space = 'XXYY' + elseif(ao_extra_power(i,2) == 2 .and. ao_extra_power(i,3) == 2)then + give_ao_extra_character_space = 'YYZZ' + elseif(ao_extra_power(i,1) == 2 .and. ao_extra_power(i,2) == 1 .and. ao_extra_power(i,3) == 1)then + give_ao_extra_character_space = 'XXYZ' + elseif(ao_extra_power(i,2) == 2 .and. ao_extra_power(i,1) == 1 .and. ao_extra_power(i,3) == 1)then + give_ao_extra_character_space = 'YYXZ' + elseif(ao_extra_power(i,3) == 2 .and. ao_extra_power(i,1) == 1 .and. ao_extra_power(i,2) == 1)then + give_ao_extra_character_space = 'ZZXY' + endif + endif + ao_extra_l_char_space(i) = give_ao_extra_character_space + enddo +END_PROVIDER diff --git a/plugins/local/ao_extra_basis/dimensions_integrals.irp.f b/plugins/local/ao_extra_basis/dimensions_integrals.irp.f new file mode 100644 index 000000000..80dcda18c --- /dev/null +++ b/plugins/local/ao_extra_basis/dimensions_integrals.irp.f @@ -0,0 +1,19 @@ + BEGIN_PROVIDER [ integer, n_pt_max_extra_basis_integrals ] +&BEGIN_PROVIDER [ integer, n_pt_max_extra_basis_i_x] + implicit none + BEGIN_DOC +! Number of points used in the numerical integrations. + END_DOC + integer :: n_pt_sup + integer :: prim_power_l_max + include 'utils/constants.include.F' + prim_power_l_max = maxval(ao_extra_power) + n_pt_max_extra_basis_integrals = 24 * prim_power_l_max + 4 + n_pt_max_extra_basis_i_x = 8 * prim_power_l_max + ASSERT (n_pt_max_extra_basis_i_x-1 <= max_dim) + if (n_pt_max_extra_basis_i_x-1 > max_dim) then + print *, 'Increase max_dim in utils/constants.include.F to ', n_pt_max_extra_basis_i_x-1 + stop 1 + endif +END_PROVIDER + diff --git a/plugins/local/ao_extra_basis/extra_basis.irp.f b/plugins/local/ao_extra_basis/extra_basis.irp.f new file mode 100644 index 000000000..19b36349a --- /dev/null +++ b/plugins/local/ao_extra_basis/extra_basis.irp.f @@ -0,0 +1,15 @@ +program extra_basis + implicit none + BEGIN_DOC +! TODO : Put the documentation of the program here + END_DOC + integer :: i + print*,'extra_nucl_num = ',extra_nucl_num + do i = 1, extra_nucl_num + print*,'i = ',i + print*,'extra_nucl_label = ',extra_nucl_label(i) + print*,'extra_nucl_charge = ',extra_nucl_charge(i) + print*,'extra_nucl_coord = ' + print*,extra_nucl_coord(i,1:3) + enddo +end diff --git a/plugins/local/ao_extra_basis/install b/plugins/local/ao_extra_basis/install new file mode 100755 index 000000000..ca4a16433 --- /dev/null +++ b/plugins/local/ao_extra_basis/install @@ -0,0 +1,23 @@ +#!/bin/bash + +# Check if the QP_ROOT environment variable is set. +if [[ -z ${QP_ROOT} ]] +then + print "The QP_ROOT environment variable is not set." + print "Please reload the quantum_package.rc file." + exit -1 +fi + +# Get the absolute path of the current directory. +currdir=${PWD} + +# list of the scripts to be used by the module +scripts_list="qp_copy_extra_basis" + +# Make a symbolic link for all scripts to be used in the ${QP_ROOT}/scripts/ +# directory. + for i in $scripts_list + do + ln --symbolic ${currdir}/$i ${QP_ROOT}/scripts/ + done + diff --git a/plugins/local/ao_extra_basis/qp_copy_extra_basis b/plugins/local/ao_extra_basis/qp_copy_extra_basis new file mode 100755 index 000000000..551bbe1f5 --- /dev/null +++ b/plugins/local/ao_extra_basis/qp_copy_extra_basis @@ -0,0 +1,59 @@ +#!/bin/bash +# specify the QP folder +QP=$QP_ROOT +dir=${QP} +# sourcing the quantum_package.rc file +. ${QP}/quantum_package.rc +EZFIO_extra=${1%/} +EZFIO_target=${2%/} + + + +echo "********** SCRIPT TO COPY DATA FROM EZFIO TO ANOTHER *********" +echo "Extracting data from "$EZFIO_extra +echo "and Copying data to "$EZFIO_target + +### COPYING ALL DATA FROM $EZFIO_extra/nuclei/ to ${EZFIO_target}/extra_nuclei/ +echo "COPYING ALL DATA FROM "$EZFIO_extra"/nuclei/ to "${EZFIO_target}"/extra_nuclei/" +direxists=false +if [ -d ${EZFIO_target}/extra_nuclei/ ] ; then + direxists=true + echo "The directory extra_nuclei exists" + else + echo "Creating the directory extra_nuclei " + direxists=false + mkdir ${EZFIO_target}/extra_nuclei/ +fi +data=`\ls $EZFIO_extra/nuclei/` +for i in $data +do + echo $i + newfile=`echo $i | sed 's/nucl/extra_nucl/g' ` + echo $newfile + cp ${EZFIO_extra}/nuclei/$i ${EZFIO_target}/extra_nuclei/$newfile +done + +### COPYING ALL DATA FROM $EZFIO_extra/ao_basis/ to ${EZFIO_target}/ao_extra_basis/ +direxists=false +if [ -d ${EZFIO_target}/ao_extra_basis/ ] ; then + direxists=true + echo "The directory exists ao_extra_basis" + else + echo "Creating the directory ao_extra_basis" + direxists=false + mkdir ${EZFIO_target}/ao_extra_basis/ +fi +echo "COPYING ALL DATA FROM "$EZFIO_extra"/ao_basis/ to "${EZFIO_target}"/ao_extra_basis/" +data=`\ls $EZFIO_extra/ao_basis/` +for i in $data +do + echo $i + newfile=`echo $i | sed 's/ao/ao_extra/g' ` + echo $newfile + cp ${EZFIO_extra}/ao_basis/$i ${EZFIO_target}/ao_extra_basis/$newfile +done +i=primitives_normalized +newfile=primitives_normalized_extra +cp ${EZFIO_extra}/ao_basis/$i ${EZFIO_target}/ao_extra_basis/$newfile + + diff --git a/plugins/local/ao_extra_basis/uninstall b/plugins/local/ao_extra_basis/uninstall new file mode 100755 index 000000000..ff7f8c6ae --- /dev/null +++ b/plugins/local/ao_extra_basis/uninstall @@ -0,0 +1,20 @@ +#!/bin/bash + +# Check if the QP_ROOT environment variable is set. +if [[ -z ${QP_ROOT} ]] +then + print "The QP_ROOT environment variable is not set." + print "Please reload the quantum_package.rc file." + exit -1 +fi + +# list of the scripts to be used by the module +scripts_list="qp_copy_extra_basis" + +# Destroy ONLY the symbolic link for the scripts to be used in the +# ${QP_ROOT}/scripts/ directory. + for i in $scripts_list + do + find ${QP_ROOT}/scripts/$i -type l -delete + done + diff --git a/plugins/local/extra_basis_int/NEED b/plugins/local/extra_basis_int/NEED new file mode 100644 index 000000000..1dc12e7b4 --- /dev/null +++ b/plugins/local/extra_basis_int/NEED @@ -0,0 +1,2 @@ +extra_basis +ao_one_e_ints diff --git a/plugins/local/extra_basis_int/README.rst b/plugins/local/extra_basis_int/README.rst new file mode 100644 index 000000000..994274f9b --- /dev/null +++ b/plugins/local/extra_basis_int/README.rst @@ -0,0 +1,4 @@ +=============== +extra_basis_int +=============== + diff --git a/plugins/local/extra_basis_int/ao_overlap.irp.f b/plugins/local/extra_basis_int/ao_overlap.irp.f new file mode 100644 index 000000000..a821e1612 --- /dev/null +++ b/plugins/local/extra_basis_int/ao_overlap.irp.f @@ -0,0 +1,136 @@ + +! --- + + BEGIN_PROVIDER [double precision, ao_extra_overlap , (ao_extra_num, ao_extra_num)] + + BEGIN_DOC + ! Overlap between atomic basis functions: + ! + ! :math:`\int \chi_i(r) \chi_j(r) dr` + END_DOC + + implicit none + integer :: i, j, n, l, dim1, power_A(3), power_B(3) + double precision :: overlap, overlap_x, overlap_y, overlap_z + double precision :: alpha, beta, c + double precision :: A_center(3), B_center(3) + + ao_extra_overlap = 0.d0 + + dim1=100 + !$OMP PARALLEL DO SCHEDULE(GUIDED) & + !$OMP DEFAULT(NONE) & + !$OMP PRIVATE(A_center,B_center,power_A,power_B,& + !$OMP overlap_x,overlap_y, overlap_z, overlap, & + !$OMP alpha, beta,i,j,n,l,c) & + !$OMP SHARED(extra_nucl_coord,ao_extra_power,ao_extra_prim_num, & + !$OMP ao_extra_overlap,ao_extra_num,ao_extra_coef_normalized_ordered_transp,ao_extra_nucl, & + !$OMP ao_extra_expo_ordered_transp,dim1) + do j=1,ao_extra_num + A_center(1) = extra_nucl_coord( ao_extra_nucl(j), 1 ) + A_center(2) = extra_nucl_coord( ao_extra_nucl(j), 2 ) + A_center(3) = extra_nucl_coord( ao_extra_nucl(j), 3 ) + power_A(1) = ao_extra_power( j, 1 ) + power_A(2) = ao_extra_power( j, 2 ) + power_A(3) = ao_extra_power( j, 3 ) + do i= 1,ao_extra_num + B_center(1) = extra_nucl_coord( ao_extra_nucl(i), 1 ) + B_center(2) = extra_nucl_coord( ao_extra_nucl(i), 2 ) + B_center(3) = extra_nucl_coord( ao_extra_nucl(i), 3 ) + power_B(1) = ao_extra_power( i, 1 ) + power_B(2) = ao_extra_power( i, 2 ) + power_B(3) = ao_extra_power( i, 3 ) + do n = 1,ao_extra_prim_num(j) + alpha = ao_extra_expo_ordered_transp(n,j) + do l = 1, ao_extra_prim_num(i) + beta = ao_extra_expo_ordered_transp(l,i) + call overlap_gaussian_xyz(A_center,B_center,alpha,beta,power_A,power_B,overlap_x,overlap_y,overlap_z,overlap,dim1) + c = ao_extra_coef_normalized_ordered_transp(n,j) * ao_extra_coef_normalized_ordered_transp(l,i) + ao_extra_overlap(i,j) += c * overlap + if(isnan(ao_extra_overlap(i,j)))then + print*,'i,j',i,j + print*,'l,n',l,n + print*,'c,overlap',c,overlap + print*,overlap_x,overlap_y,overlap_z + stop + endif + enddo + enddo + enddo + enddo + !$OMP END PARALLEL DO + + + +END_PROVIDER + +! --- + + BEGIN_PROVIDER [double precision, ao_extra_overlap_mixed , (ao_num, ao_extra_num)] + + BEGIN_DOC + ! Overlap between atomic basis functions: + ! + ! + END_DOC + + implicit none + integer :: i, j, n, l, dim1, power_A(3), power_B(3) + double precision :: overlap, overlap_x, overlap_y, overlap_z + double precision :: alpha, beta, c + double precision :: A_center(3), B_center(3) + + ao_extra_overlap_mixed = 0.d0 + + dim1=100 + !$OMP PARALLEL DO SCHEDULE(GUIDED) & + !$OMP DEFAULT(NONE) & + !$OMP PRIVATE(A_center,B_center,power_A,power_B,& + !$OMP overlap_x,overlap_y, overlap_z, overlap, & + !$OMP alpha, beta,i,j,n,l,c) & + !$OMP SHARED(extra_nucl_coord,ao_extra_power,ao_extra_prim_num, & + !$OMP ao_extra_overlap_mixed,ao_extra_num,ao_extra_coef_normalized_ordered_transp,ao_extra_nucl, & + !$OMP ao_extra_expo_ordered_transp,dim1, & + !$OMP nucl_coord,ao_power,ao_prim_num, & + !$OMP ao_num,ao_coef_normalized_ordered_transp,ao_nucl, & + !$OMP ao_expo_ordered_transp) + + do j=1,ao_extra_num + A_center(1) = extra_nucl_coord( ao_extra_nucl(j), 1 ) + A_center(2) = extra_nucl_coord( ao_extra_nucl(j), 2 ) + A_center(3) = extra_nucl_coord( ao_extra_nucl(j), 3 ) + power_A(1) = ao_extra_power( j, 1 ) + power_A(2) = ao_extra_power( j, 2 ) + power_A(3) = ao_extra_power( j, 3 ) + do i= 1,ao_num + B_center(1) = nucl_coord( ao_nucl(i), 1 ) + B_center(2) = nucl_coord( ao_nucl(i), 2 ) + B_center(3) = nucl_coord( ao_nucl(i), 3 ) + power_B(1) = ao_power( i, 1 ) + power_B(2) = ao_power( i, 2 ) + power_B(3) = ao_power( i, 3 ) + do n = 1,ao_extra_prim_num(j) + alpha = ao_extra_expo_ordered_transp(n,j) + do l = 1, ao_prim_num(i) + beta = ao_expo_ordered_transp(l,i) + call overlap_gaussian_xyz(A_center,B_center,alpha,beta,power_A,power_B,overlap_x,overlap_y,overlap_z,overlap,dim1) + c = ao_extra_coef_normalized_ordered_transp(n,j) * ao_coef_normalized_ordered_transp(l,i) + ao_extra_overlap_mixed(i,j) += c * overlap + if(isnan(ao_extra_overlap_mixed(i,j)))then + print*,'i,j',i,j + print*,'l,n',l,n + print*,'c,overlap',c,overlap + print*,overlap_x,overlap_y,overlap_z + stop + endif + enddo + enddo + enddo + enddo + !$OMP END PARALLEL DO + + +END_PROVIDER + +! --- + diff --git a/plugins/local/extra_basis_int/extra_basis_int.irp.f b/plugins/local/extra_basis_int/extra_basis_int.irp.f new file mode 100644 index 000000000..9c1cf3511 --- /dev/null +++ b/plugins/local/extra_basis_int/extra_basis_int.irp.f @@ -0,0 +1,7 @@ +program extra_basis_int + implicit none + BEGIN_DOC +! TODO : Put the documentation of the program here + END_DOC + print *, 'Hello world' +end diff --git a/plugins/local/extra_nuclei/EZFIO.cfg b/plugins/local/extra_nuclei/EZFIO.cfg new file mode 100644 index 000000000..e09a7dfd3 --- /dev/null +++ b/plugins/local/extra_nuclei/EZFIO.cfg @@ -0,0 +1,23 @@ +[extra_nucl_num] +doc: Number of nuclei +type: integer +interface: ezfio, provider + +[extra_nucl_label] +doc: Nuclear labels +type: character*(32) +size: (extra_nuclei.extra_nucl_num) +interface: ezfio, provider + +[extra_nucl_charge] +doc: Nuclear charges +type:double precision +size: (extra_nuclei.extra_nucl_num) +interface: ezfio, provider + +[extra_nucl_coord] +doc: Nuclear coordinates in the format (:, {x,y,z}) +type: double precision +size: (extra_nuclei.extra_nucl_num,3) +interface: ezfio + diff --git a/plugins/local/extra_nuclei/NEED b/plugins/local/extra_nuclei/NEED new file mode 100644 index 000000000..0dc19a80c --- /dev/null +++ b/plugins/local/extra_nuclei/NEED @@ -0,0 +1,3 @@ +ezfio_files +utils +nuclei diff --git a/plugins/local/extra_nuclei/README.rst b/plugins/local/extra_nuclei/README.rst new file mode 100644 index 000000000..6bb260a04 --- /dev/null +++ b/plugins/local/extra_nuclei/README.rst @@ -0,0 +1,4 @@ +============ +extra_nuclei +============ + diff --git a/plugins/local/extra_nuclei/extra_nuclei.irp.f b/plugins/local/extra_nuclei/extra_nuclei.irp.f new file mode 100644 index 000000000..53653e8de --- /dev/null +++ b/plugins/local/extra_nuclei/extra_nuclei.irp.f @@ -0,0 +1,7 @@ +program extra_nuclei + implicit none + BEGIN_DOC +! TODO : Put the documentation of the program here + END_DOC + print *, 'Hello world' +end diff --git a/plugins/local/extra_nuclei/nuclei.irp.f b/plugins/local/extra_nuclei/nuclei.irp.f new file mode 100644 index 000000000..386d15b87 --- /dev/null +++ b/plugins/local/extra_nuclei/nuclei.irp.f @@ -0,0 +1,122 @@ +BEGIN_PROVIDER [ double precision, extra_nucl_coord, (extra_nucl_num,3) ] + implicit none + + BEGIN_DOC + ! Nuclear coordinates in the format (:, {x,y,z}) + END_DOC + PROVIDE ezfio_filename extra_nucl_label extra_nucl_charge + + if (mpi_master) then + double precision, allocatable :: buffer(:,:) + extra_nucl_coord = 0.d0 + allocate (buffer(extra_nucl_num,3)) + buffer = 0.d0 + logical :: has + call ezfio_has_extra_nuclei_extra_nucl_coord(has) + if (.not.has) then + print *, irp_here + stop 1 + endif + call ezfio_get_extra_nuclei_extra_nucl_coord(buffer) + integer :: i,j + + do i=1,3 + do j=1,extra_nucl_num + extra_nucl_coord(j,i) = buffer(j,i) + enddo + enddo + deallocate(buffer) + + character*(64), parameter :: f = '(A16, 4(1X,F12.6))' + character*(64), parameter :: ft= '(A16, 4(1X,A12 ))' + double precision, parameter :: a0= 0.529177249d0 + + call write_time(6) + write(6,'(A)') '' + write(6,'(A)') 'Extra Nuclear Coordinates (Angstroms)' + write(6,'(A)') '=====================================' + write(6,'(A)') '' + write(6,ft) & + '================','============','============','============','============' + write(6,*) & + ' Atom Charge X Y Z ' + write(6,ft) & + '================','============','============','============','============' + + do i=1,extra_nucl_num + write(6,f) extra_nucl_label(i), extra_nucl_charge(i), & + extra_nucl_coord(i,1)*a0, & + extra_nucl_coord(i,2)*a0, & + extra_nucl_coord(i,3)*a0 + enddo + write(6,ft) & + '================','============','============','============','============' + write(6,'(A)') '' + + if (extra_nucl_num > 1) then + double precision :: dist_min, x, y, z + dist_min = huge(1.d0) + do i=1,extra_nucl_num + do j=i+1,extra_nucl_num + x = extra_nucl_coord(i,1)-extra_nucl_coord(j,1) + y = extra_nucl_coord(i,2)-extra_nucl_coord(j,2) + z = extra_nucl_coord(i,3)-extra_nucl_coord(j,3) + dist_min = min(x*x + y*y + z*z, dist_min) + enddo + enddo + write(6,'(A,F12.4,A)') 'Minimal interatomic distance found: ', & + dsqrt(dist_min)*a0,' Angstrom' + endif + + endif + + IRP_IF MPI_DEBUG + print *, irp_here, mpi_rank + call MPI_BARRIER(MPI_COMM_WORLD, ierr) + IRP_ENDIF + IRP_IF MPI + include 'mpif.h' + integer :: ierr + call MPI_BCAST( extra_nucl_coord, 3*extra_nucl_num, MPI_DOUBLE_PRECISION, 0, MPI_COMM_WORLD, ierr) + if (ierr /= MPI_SUCCESS) then + stop 'Unable to read nucl_coord with MPI' + endif + IRP_ENDIF + +END_PROVIDER + + +BEGIN_PROVIDER [ double precision, extra_nucl_coord_transp, (3,extra_nucl_num) ] + implicit none + BEGIN_DOC + ! Transposed array of extra_nucl_coord + END_DOC + integer :: i, k + extra_nucl_coord_transp = 0.d0 + + do i=1,extra_nucl_num + extra_nucl_coord_transp(1,i) = extra_nucl_coord(i,1) + extra_nucl_coord_transp(2,i) = extra_nucl_coord(i,2) + extra_nucl_coord_transp(3,i) = extra_nucl_coord(i,3) + enddo +END_PROVIDER + +BEGIN_PROVIDER [ double precision, extra_center_of_mass, (3) ] + implicit none + BEGIN_DOC + ! Center of mass of the molecule + END_DOC + integer :: i,j + double precision :: s + extra_center_of_mass(:) = 0.d0 + s = 0.d0 + do i=1,extra_nucl_num + do j=1,3 + extra_center_of_mass(j) += extra_nucl_coord(i,j)* element_mass(int(extra_nucl_charge(i))) + enddo + s += element_mass(int(extra_nucl_charge(i))) + enddo + s = 1.d0/s + extra_center_of_mass(:) = extra_center_of_mass(:)*s +END_PROVIDER + diff --git a/plugins/local/tuto_plugins/tuto_I/tuto_I.rst b/plugins/local/tuto_plugins/tuto_I/tuto_I.rst index 43b4af0bf..e4d47af44 100644 --- a/plugins/local/tuto_plugins/tuto_I/tuto_I.rst +++ b/plugins/local/tuto_plugins/tuto_I/tuto_I.rst @@ -17,7 +17,7 @@ Our goals: We want to create a plugin to do the following things: 1) print out one- and two-electron integrals on the AO/MO basis, - 2) creates two providers which manipulate these objects, + 2) create two providers which manipulate these objects, 3) print out these providers. diff --git a/src/cas_based_on_top/cas_based_on_top.irp.f b/src/cas_based_on_top/cas_based_on_top.irp.f index 7d9090ce1..49ca7b9d4 100644 --- a/src/cas_based_on_top/cas_based_on_top.irp.f +++ b/src/cas_based_on_top/cas_based_on_top.irp.f @@ -1,4 +1,4 @@ -program cas_based_on_top_density +program cas_based_on_top implicit none BEGIN_DOC ! TODO : Small example to use the different quantities in this plugin diff --git a/src/casscf_cipsi/get_energy.irp.f b/src/casscf_cipsi/get_energy.irp.f index cfb26b593..a34fb0ca2 100644 --- a/src/casscf_cipsi/get_energy.irp.f +++ b/src/casscf_cipsi/get_energy.irp.f @@ -1,4 +1,4 @@ -program print_2rdm +program get_energy implicit none BEGIN_DOC ! get the active part of the bielectronic energy on a given wave function. diff --git a/src/mu_of_r/test_proj_op.irp.f b/src/mu_of_r/test_proj_op.irp.f index 94052b186..759835e31 100644 --- a/src/mu_of_r/test_proj_op.irp.f +++ b/src/mu_of_r/test_proj_op.irp.f @@ -1,4 +1,4 @@ -program projected_operators +program test_proj_op implicit none BEGIN_DOC ! TODO diff --git a/src/tools/attachement_orb.irp.f b/src/tools/attachement_orb.irp.f index 92a51ca8e..f5627a36b 100644 --- a/src/tools/attachement_orb.irp.f +++ b/src/tools/attachement_orb.irp.f @@ -1,4 +1,4 @@ -program molden_detachment_attachment +program attachement_orb implicit none read_wf=.True. touch read_wf diff --git a/src/tools/fcidump_pyscf.irp.f b/src/tools/fcidump_pyscf.irp.f index 9cbf733a2..aaa552b45 100644 --- a/src/tools/fcidump_pyscf.irp.f +++ b/src/tools/fcidump_pyscf.irp.f @@ -1,4 +1,4 @@ -program fcidump +program fcidump_pyscf implicit none BEGIN_DOC ! Produce a regular `FCIDUMP` file from the |MOs| stored in the |EZFIO| diff --git a/src/tools/hcore_guess.irp.f b/src/tools/hcore_guess.irp.f deleted file mode 100644 index 87d0cb7de..000000000 --- a/src/tools/hcore_guess.irp.f +++ /dev/null @@ -1,3 +0,0 @@ -program hcore_guess_prog - call hcore_guess -end diff --git a/src/tools/huckel_guess.irp.f b/src/tools/huckel_guess.irp.f deleted file mode 100644 index 5ec37df4f..000000000 --- a/src/tools/huckel_guess.irp.f +++ /dev/null @@ -1,5 +0,0 @@ -program pouet - implicit none - call huckel_guess - -end diff --git a/src/tools/print_sorted_wf_coef.irp.f b/src/tools/print_sorted_wf_coef.irp.f index b3c0cb349..3051be02b 100644 --- a/src/tools/print_sorted_wf_coef.irp.f +++ b/src/tools/print_sorted_wf_coef.irp.f @@ -1,4 +1,4 @@ -program sort_wf +program print_sorted_wf_coef implicit none read_wf =.True. call routine diff --git a/src/tools/save_natorb_no_ov_rot.irp.f b/src/tools/save_natorb_no_ov_rot.irp.f index e5b69fbf5..fb6d11e85 100644 --- a/src/tools/save_natorb_no_ov_rot.irp.f +++ b/src/tools/save_natorb_no_ov_rot.irp.f @@ -1,4 +1,4 @@ -program save_natorb +program save_natorb_no_ov_rot implicit none BEGIN_DOC ! Save natural |MOs| into the |EZFIO|. diff --git a/src/tools/save_natorb_no_ref.irp.f b/src/tools/save_natorb_no_ref.irp.f index 9d253fa0e..71d5c821f 100644 --- a/src/tools/save_natorb_no_ref.irp.f +++ b/src/tools/save_natorb_no_ref.irp.f @@ -1,4 +1,4 @@ -program save_natorb +program save_natorb_no_ref implicit none BEGIN_DOC ! Save natural |MOs| into the |EZFIO|. diff --git a/src/trexio/import_trexio_integrals.irp.f b/src/trexio/import_trexio_integrals.irp.f index dc342197f..699437d1a 100644 --- a/src/trexio/import_trexio_integrals.irp.f +++ b/src/trexio/import_trexio_integrals.irp.f @@ -1,4 +1,4 @@ -program import_integrals_ao +program import_trexio_integrals use trexio implicit none integer(trexio_t) :: f ! TREXIO file handle From 210179e8a04454c6a458e2b3bd114c82ce7215ce Mon Sep 17 00:00:00 2001 From: eginer Date: Fri, 6 Dec 2024 14:55:44 +0100 Subject: [PATCH 05/10] pot_ao_extra ints work --- plugins/local/ao_extra_basis/EZFIO.cfg | 18 ++-- .../local/ao_extra_basis/extra_basis.irp.f | 1 + plugins/local/extra_basis_int/NEED | 2 +- .../local/extra_basis_int/ao_overlap.irp.f | 53 +++++++++++ .../extra_basis_int/extra_basis_int.irp.f | 45 ++++++++- .../local/extra_basis_int/pot_ao_ints.irp.f | 93 +++++++++++++++++++ .../extra_basis_int/ref_extra_basis.irp.f | 35 +++++++ 7 files changed, 236 insertions(+), 11 deletions(-) create mode 100644 plugins/local/extra_basis_int/pot_ao_ints.irp.f create mode 100644 plugins/local/extra_basis_int/ref_extra_basis.irp.f diff --git a/plugins/local/ao_extra_basis/EZFIO.cfg b/plugins/local/ao_extra_basis/EZFIO.cfg index bddf4d373..8b3a8667b 100644 --- a/plugins/local/ao_extra_basis/EZFIO.cfg +++ b/plugins/local/ao_extra_basis/EZFIO.cfg @@ -11,37 +11,37 @@ interface: ezfio, provider [ao_extra_prim_num] type: integer doc: Number of primitives per |ao_extra| -size: (extra_basis.ao_extra_num) +size: (ao_extra_basis.ao_extra_num) interface: ezfio, provider [ao_extra_prim_num_max] type: integer doc: Maximum number of primitives -default: =maxval(extra_basis.ao_extra_prim_num) +default: =maxval(ao_extra_basis.ao_extra_prim_num) interface: ezfio [ao_extra_nucl] type: integer doc: Index of the nucleus on which the |ao_extra| is centered -size: (extra_basis.ao_extra_num) +size: (ao_extra_basis.ao_extra_num) interface: ezfio, provider [ao_extra_power] type: integer doc: Powers of x, y and z for each |ao_extra| -size: (extra_basis.ao_extra_num,3) +size: (ao_extra_basis.ao_extra_num,3) interface: ezfio, provider [ao_extra_coef] type: double precision doc: Primitive coefficients, read from input. Those should not be used directly, as the MOs are expressed on the basis of **normalized** ao_extras. -size: (extra_basis.ao_extra_num,extra_basis.ao_extra_prim_num_max) +size: (ao_extra_basis.ao_extra_num,ao_extra_basis.ao_extra_prim_num_max) interface: ezfio, provider [ao_extra_expo] type: double precision doc: Exponents for each primitive of each |ao_extra| -size: (extra_basis.ao_extra_num,extra_basis.ao_extra_prim_num_max) +size: (ao_extra_basis.ao_extra_num,ao_extra_basis.ao_extra_prim_num_max) interface: ezfio, provider [ao_extra_md5] @@ -70,18 +70,18 @@ default: true [ao_extra_expo_im] type: double precision doc: imag part for Exponents for each primitive of each cGTOs |ao_extra| -size: (extra_basis.ao_extra_num,extra_basis.ao_extra_prim_num_max) +size: (ao_extra_basis.ao_extra_num,ao_extra_basis.ao_extra_prim_num_max) interface: ezfio, provider [ao_extra_expo_pw] type: double precision doc: plane wave part for each primitive GTOs |ao_extra| -size: (3,extra_basis.ao_extra_num,extra_basis.ao_extra_prim_num_max) +size: (3,ao_extra_basis.ao_extra_num,ao_extra_basis.ao_extra_prim_num_max) interface: ezfio, provider [ao_extra_expo_phase] type: double precision doc: phase shift for each primitive GTOs |ao_extra| -size: (3,extra_basis.ao_extra_num,extra_basis.ao_extra_prim_num_max) +size: (3,ao_extra_basis.ao_extra_num,ao_extra_basis.ao_extra_prim_num_max) interface: ezfio, provider diff --git a/plugins/local/ao_extra_basis/extra_basis.irp.f b/plugins/local/ao_extra_basis/extra_basis.irp.f index 19b36349a..9773af2fd 100644 --- a/plugins/local/ao_extra_basis/extra_basis.irp.f +++ b/plugins/local/ao_extra_basis/extra_basis.irp.f @@ -12,4 +12,5 @@ program extra_basis print*,'extra_nucl_coord = ' print*,extra_nucl_coord(i,1:3) enddo + print*,ao_extra_num end diff --git a/plugins/local/extra_basis_int/NEED b/plugins/local/extra_basis_int/NEED index 1dc12e7b4..7f39af7c4 100644 --- a/plugins/local/extra_basis_int/NEED +++ b/plugins/local/extra_basis_int/NEED @@ -1,2 +1,2 @@ -extra_basis +ao_extra_basis ao_one_e_ints diff --git a/plugins/local/extra_basis_int/ao_overlap.irp.f b/plugins/local/extra_basis_int/ao_overlap.irp.f index a821e1612..4f8debb6c 100644 --- a/plugins/local/extra_basis_int/ao_overlap.irp.f +++ b/plugins/local/extra_basis_int/ao_overlap.irp.f @@ -134,3 +134,56 @@ ! --- +subroutine get_ao_mixed_overlap(r_nucl,ao_mixed_overlap) + implicit none + BEGIN_DOC +! returns the overlap integrals between the AOs and the extra_AOs located at r_nucl + END_DOC + double precision, intent(in) :: r_nucl(extra_nucl_num,3) + double precision, intent(out):: ao_mixed_overlap(ao_extra_num,ao_num) + integer :: j,i,l,n, power_A(3), power_B(3), dim1 + double precision :: A_center(3), B_center(3), alpha, beta + double precision :: overlap_x,overlap_y,overlap_z,overlap,c + dim1=100 + ao_mixed_overlap = 0.d0 + +!$OMP PARALLEL DO SCHEDULE(GUIDED) & +!$OMP DEFAULT(NONE) & +!$OMP PRIVATE(A_center,B_center,power_A,power_B,& +!$OMP overlap_x,overlap_y, overlap_z, overlap, & +!$OMP alpha, beta,i,j,n,l,c) & +!$OMP SHARED(r_nucl,ao_extra_power,ao_extra_prim_num, & +!$OMP ao_mixed_overlap,ao_extra_num,ao_extra_coef_normalized_ordered_transp,ao_extra_nucl, & +!$OMP ao_extra_expo_ordered_transp,dim1, & +!$OMP nucl_coord,ao_power,ao_prim_num, & +!$OMP ao_num,ao_coef_normalized_ordered_transp,ao_nucl, & +!$OMP ao_expo_ordered_transp) + do i = 1, ao_num + B_center(1) = nucl_coord( ao_nucl(i), 1 ) + B_center(2) = nucl_coord( ao_nucl(i), 2 ) + B_center(3) = nucl_coord( ao_nucl(i), 3 ) + power_B(1) = ao_power( i, 1 ) + power_B(2) = ao_power( i, 2 ) + power_B(3) = ao_power( i, 3 ) + do l = 1, ao_prim_num(i) + beta = ao_expo_ordered_transp(l,i) + do j=1,ao_extra_num + A_center(1) = r_nucl( ao_extra_nucl(j), 1 ) + A_center(2) = r_nucl( ao_extra_nucl(j), 2 ) + A_center(3) = r_nucl( ao_extra_nucl(j), 3 ) + power_A(1) = ao_extra_power( j, 1 ) + power_A(2) = ao_extra_power( j, 2 ) + power_A(3) = ao_extra_power( j, 3 ) + do n = 1,ao_extra_prim_num(j) + alpha = ao_extra_expo_ordered_transp(n,j) + call overlap_gaussian_xyz(A_center,B_center,alpha,beta,power_A,power_B,overlap_x,overlap_y,overlap_z,overlap,dim1) + c = ao_extra_coef_normalized_ordered_transp(n,j) * ao_coef_normalized_ordered_transp(l,i) + ao_mixed_overlap(j,i) += c * overlap + enddo + enddo + enddo + enddo +!$OMP END PARALLEL DO + + +end diff --git a/plugins/local/extra_basis_int/extra_basis_int.irp.f b/plugins/local/extra_basis_int/extra_basis_int.irp.f index 9c1cf3511..09838c4ec 100644 --- a/plugins/local/extra_basis_int/extra_basis_int.irp.f +++ b/plugins/local/extra_basis_int/extra_basis_int.irp.f @@ -3,5 +3,48 @@ program extra_basis_int BEGIN_DOC ! TODO : Put the documentation of the program here END_DOC - print *, 'Hello world' +! call test_overlap + call routine_test_pot_ne +end + +subroutine test_overlap + implicit none + integer :: i,j + do i = 1, ao_extra_num + do j = 1, ao_extra_num + write(33,*)ao_extra_overlap(j,i) + enddo + enddo +end + +subroutine test_overlap_mixed + implicit none + integer :: i,j + double precision, allocatable :: ao_mixed_overlap(:,:) + allocate(ao_mixed_overlap(ao_extra_num,ao_num)) + call get_ao_mixed_overlap(extra_nucl_coord,ao_mixed_overlap) + do i = 1, ao_extra_num + do j = 1, ao_num + write(33,*)dabs(ao_extra_overlap_mixed(j,i)-ao_mixed_overlap(i,j)) + write(*,*)ao_extra_overlap_mixed(j,i),ao_mixed_overlap(i,j),dabs(ao_extra_overlap_mixed(j,i)-ao_mixed_overlap(i,j)) + enddo + enddo +end + +subroutine routine_test_pot_ne + implicit none + integer :: i,j + double precision :: integral, C_center(3), mu_in + double precision :: NAI_pol_mult_erf_ao_extra + C_center(1) = 0.1d0 + C_center(2) = -0.3d0 + C_center(3) = 0.8d0 + mu_in = 1.d10 + do i = 1, ao_extra_num + do j = 1, ao_extra_num + integral = NAI_pol_mult_erf_ao_extra(i, j, mu_in, C_center) + write(33,*)j,i,integral + enddo + enddo + end diff --git a/plugins/local/extra_basis_int/pot_ao_ints.irp.f b/plugins/local/extra_basis_int/pot_ao_ints.irp.f new file mode 100644 index 000000000..5f3af2442 --- /dev/null +++ b/plugins/local/extra_basis_int/pot_ao_ints.irp.f @@ -0,0 +1,93 @@ + +double precision function NAI_pol_mult_erf_ao_extra(i_ao, j_ao, mu_in, C_center) + + 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|}$. + ! + ! + ! where $\chi_i(r)$ AND $\chi_j(r)$ belongs to the extra basis + END_DOC + + implicit none + integer, intent(in) :: i_ao, j_ao + double precision, intent(in) :: mu_in, C_center(3) + + integer :: i, j, num_A, num_B, power_A(3), power_B(3), n_pt_in + double precision :: A_center(3), B_center(3), integral, alpha, beta + + double precision :: NAI_pol_mult_erf + + num_A = ao_extra_nucl(i_ao) + power_A(1:3) = ao_extra_power(i_ao,1:3) + A_center(1:3) = extra_nucl_coord(num_A,1:3) + num_B = ao_extra_nucl(j_ao) + power_B(1:3) = ao_extra_power(j_ao,1:3) + B_center(1:3) = extra_nucl_coord(num_B,1:3) + + n_pt_in = n_pt_max_extra_basis_integrals + + NAI_pol_mult_erf_ao_extra = 0.d0 + do i = 1, ao_extra_prim_num(i_ao) + alpha = ao_extra_expo_ordered_transp(i,i_ao) + do j = 1, ao_extra_prim_num(j_ao) + beta = ao_extra_expo_ordered_transp(j,j_ao) + + integral = NAI_pol_mult_erf(A_center, B_center, power_A, power_B, alpha, beta, C_center, n_pt_in,mu_in) + + NAI_pol_mult_erf_ao_extra += integral * ao_extra_coef_normalized_ordered_transp(j,j_ao) * ao_extra_coef_normalized_ordered_transp(i,i_ao) + enddo + enddo + +end function NAI_pol_mult_erf_ao_extra + +! --- + +double precision function NAI_pol_mult_erf_ao_extra_mixed(i_ao, j_ao, mu_in, C_center) + + 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|}$. + ! + ! + ! where $\chi_i(r)$ belongs to the extra basis and $\chi_j(r)$ to the regular basis + END_DOC + + implicit none + integer, intent(in) :: i_ao, j_ao + double precision, intent(in) :: mu_in, C_center(3) + + integer :: i, j, num_A, num_B, power_A(3), power_B(3), n_pt_in + double precision :: A_center(3), B_center(3), integral, alpha, beta + + double precision :: NAI_pol_mult_erf + + ! A = chi_i == extra basis + num_A = ao_extra_nucl(i_ao) + power_A(1:3) = ao_extra_power(i_ao,1:3) + A_center(1:3) = extra_nucl_coord(num_A,1:3) + ! B = chi_j == regular basis + num_B = ao_nucl(j_ao) + power_B(1:3) = ao_power(j_ao,1:3) + B_center(1:3) = nucl_coord(num_B,1:3) + + n_pt_in = max(n_pt_max_integrals,n_pt_max_extra_basis_integrals) + + NAI_pol_mult_erf_ao_extra_mixed = 0.d0 + do i = 1, ao_extra_prim_num(i_ao) + alpha = ao_extra_expo_ordered_transp(i,i_ao) + do j = 1, ao_prim_num(j_ao) + beta = ao_expo_ordered_transp(j,j_ao) + + integral = NAI_pol_mult_erf(A_center, B_center, power_A, power_B, alpha, beta, C_center, n_pt_in,mu_in) + + NAI_pol_mult_erf_ao_extra_mixed += integral * ao_coef_normalized_ordered_transp(j,j_ao) * ao_extra_coef_normalized_ordered_transp(i,i_ao) + enddo + enddo + +end + +! --- + diff --git a/plugins/local/extra_basis_int/ref_extra_basis.irp.f b/plugins/local/extra_basis_int/ref_extra_basis.irp.f new file mode 100644 index 000000000..8a50be2c8 --- /dev/null +++ b/plugins/local/extra_basis_int/ref_extra_basis.irp.f @@ -0,0 +1,35 @@ +program pouet + implicit none +! call ref_overlap + call ref_pot + +end + +subroutine ref_overlap + implicit none + integer :: i,j + do i = 1, ao_num + do j = 1, ao_num + write(34,*)ao_overlap(j,i) + enddo + enddo + +end + +subroutine ref_pot + implicit none + integer :: i,j + double precision :: integral, C_center(3), mu_in + double precision :: NAI_pol_mult_erf_ao + C_center(1) = 0.1d0 + C_center(2) = -0.3d0 + C_center(3) = 0.8d0 + mu_in = 1.d10 + do i = 1, ao_num + do j = 1, ao_num + integral = NAI_pol_mult_erf_ao(i, j, mu_in, C_center) + write(34,*)j,i,integral + enddo + enddo + +end From 7bce3135aafa7bad0485317091c631906927f8e8 Mon Sep 17 00:00:00 2001 From: eginer Date: Fri, 6 Dec 2024 15:05:47 +0100 Subject: [PATCH 06/10] mixed one-e integrals work --- .../extra_basis_int/extra_basis_int.irp.f | 21 ++++++++++++++++++- .../extra_basis_int/ref_extra_basis.irp.f | 20 +++++++++++++++++- 2 files changed, 39 insertions(+), 2 deletions(-) diff --git a/plugins/local/extra_basis_int/extra_basis_int.irp.f b/plugins/local/extra_basis_int/extra_basis_int.irp.f index 09838c4ec..243eb00eb 100644 --- a/plugins/local/extra_basis_int/extra_basis_int.irp.f +++ b/plugins/local/extra_basis_int/extra_basis_int.irp.f @@ -4,7 +4,8 @@ program extra_basis_int ! TODO : Put the documentation of the program here END_DOC ! call test_overlap - call routine_test_pot_ne +! call routine_test_pot_ne + call routine_test_pot_ne_mixed end subroutine test_overlap @@ -48,3 +49,21 @@ subroutine routine_test_pot_ne enddo end + +subroutine routine_test_pot_ne_mixed + implicit none + integer :: i,j + double precision :: integral, C_center(3), mu_in + double precision :: NAI_pol_mult_erf_ao_extra_mixed + C_center(1) = 0.1d0 + C_center(2) = -0.3d0 + C_center(3) = 0.8d0 + mu_in = 1.d10 + do j = 1, ao_num + do i = 1, ao_extra_num + integral = NAI_pol_mult_erf_ao_extra_mixed(i, j, mu_in, C_center) + write(33,*)integral + enddo + enddo + +end diff --git a/plugins/local/extra_basis_int/ref_extra_basis.irp.f b/plugins/local/extra_basis_int/ref_extra_basis.irp.f index 8a50be2c8..eb2cfd116 100644 --- a/plugins/local/extra_basis_int/ref_extra_basis.irp.f +++ b/plugins/local/extra_basis_int/ref_extra_basis.irp.f @@ -1,7 +1,8 @@ program pouet implicit none ! call ref_overlap - call ref_pot +! call ref_pot + call ref_pot_mixed end @@ -31,5 +32,22 @@ subroutine ref_pot write(34,*)j,i,integral enddo enddo +end + +subroutine ref_pot_mixed + implicit none + integer ::i,j + double precision :: integral, C_center(3), mu_in + double precision :: NAI_pol_mult_erf_ao + C_center(1) = 0.1d0 + C_center(2) = -0.3d0 + C_center(3) = 0.8d0 + mu_in = 1.d10 + do i=1, 5 + do j = 6, ao_num + integral = NAI_pol_mult_erf_ao(i, j, mu_in, C_center) + write(34,*)integral + enddo + enddo end From bb8ecd90e83147525bf57357526dc5bc9508eafb Mon Sep 17 00:00:00 2001 From: eginer Date: Fri, 6 Dec 2024 15:47:48 +0100 Subject: [PATCH 07/10] all one-body potentials are OK --- .../extra_basis_int/extra_basis_int.irp.f | 59 +++++++++- .../extra_basis_int/ref_extra_basis.irp.f | 64 ++++++++++- .../local/extra_basis_int/v_mixed_extra.irp.f | 102 ++++++++++++++++++ 3 files changed, 222 insertions(+), 3 deletions(-) create mode 100644 plugins/local/extra_basis_int/v_mixed_extra.irp.f diff --git a/plugins/local/extra_basis_int/extra_basis_int.irp.f b/plugins/local/extra_basis_int/extra_basis_int.irp.f index 243eb00eb..6423cedd6 100644 --- a/plugins/local/extra_basis_int/extra_basis_int.irp.f +++ b/plugins/local/extra_basis_int/extra_basis_int.irp.f @@ -5,7 +5,12 @@ program extra_basis_int END_DOC ! call test_overlap ! call routine_test_pot_ne - call routine_test_pot_ne_mixed +! call routine_test_pot_ne_mixed +! call routine_pot_ne_extra +! call routine_test_pot_ne_mixed +! call routine_pot_ne + call routine_test_pot_ne_extra_mixed + end subroutine test_overlap @@ -50,7 +55,7 @@ subroutine routine_test_pot_ne end -subroutine routine_test_pot_ne_mixed +subroutine routine_test_pot_mixed implicit none integer :: i,j double precision :: integral, C_center(3), mu_in @@ -67,3 +72,53 @@ subroutine routine_test_pot_ne_mixed enddo end + +subroutine routine_pot_ne_extra + implicit none + integer :: i,j + double precision :: v_extra_nucl_extra_ao + do i = 1, ao_extra_num + do j = 1, ao_extra_num + write(33,*)v_extra_nucl_extra_ao(i,j) + enddo + enddo +end + + +subroutine routine_pot_ne + implicit none + integer :: i,j + double precision :: v_nucl_extra_ao + do i = 1, ao_extra_num + do j = 1, ao_extra_num + write(33,*)v_nucl_extra_ao(i,j) + enddo + enddo +end + + +subroutine routine_test_pot_ne_mixed + implicit none + integer :: i,j + double precision :: integral,v_extra_nucl_mixed_ao + do j = 1, ao_num + do i = 1, ao_extra_num + integral = v_extra_nucl_mixed_ao(i,j) + write(33,*)integral + enddo + enddo + +end + +subroutine routine_test_pot_ne_extra_mixed + implicit none + integer :: i,j + double precision :: integral,v_nucl_mixed_ao + do j = 1, ao_num + do i = 1, ao_extra_num + integral = v_nucl_mixed_ao(i,j) + write(33,*)integral + enddo + enddo + +end diff --git a/plugins/local/extra_basis_int/ref_extra_basis.irp.f b/plugins/local/extra_basis_int/ref_extra_basis.irp.f index eb2cfd116..39055fd0d 100644 --- a/plugins/local/extra_basis_int/ref_extra_basis.irp.f +++ b/plugins/local/extra_basis_int/ref_extra_basis.irp.f @@ -2,7 +2,11 @@ program pouet implicit none ! call ref_overlap ! call ref_pot - call ref_pot_mixed +! call ref_pot_mixed +! call routine_pot_ne_extra +! call ref_pot_ne_mixed +! call ref_pot_ne + call ref_pot_ne_extra_mixed end @@ -51,3 +55,61 @@ subroutine ref_pot_mixed enddo end + +subroutine routine_pot_ne_extra + implicit none + integer :: i,j + double precision :: v_extra_nucl_extra_ao + do i = 1, ao_num + do j = 1, ao_num + write(34,*)ao_integrals_n_e(i,j) + enddo + enddo +end + + +subroutine ref_pot_ne_mixed + implicit none + integer ::i,j,k + double precision :: integral + do i=1, 5 + do j = 6, ao_num + integral = 0.d0 + do k = 2,2 + integral += ao_integrals_n_e_per_atom(i,j,k) * nucl_charge(k) + enddo + write(34,*)integral + enddo + enddo +end + +subroutine ref_pot_ne + implicit none + integer ::i,j,k + double precision :: integral + do i=6,ao_num + do j = 6, ao_num + integral = 0.d0 + do k = 1,1 + integral += ao_integrals_n_e_per_atom(i,j,k) * nucl_charge(k) + enddo + write(34,*)integral + enddo + enddo + +end + +subroutine ref_pot_ne_extra_mixed + implicit none + integer ::i,j,k + double precision :: integral + do i=1, 5 + do j = 6, ao_num + integral = 0.d0 + do k = 1,1 + integral += ao_integrals_n_e_per_atom(i,j,k) * nucl_charge(k) + enddo + write(34,*)integral + enddo + enddo +end diff --git a/plugins/local/extra_basis_int/v_mixed_extra.irp.f b/plugins/local/extra_basis_int/v_mixed_extra.irp.f new file mode 100644 index 000000000..ac8566920 --- /dev/null +++ b/plugins/local/extra_basis_int/v_mixed_extra.irp.f @@ -0,0 +1,102 @@ +double precision function v_extra_nucl_extra_ao(i_ao,j_ao) + implicit none + BEGIN_DOC + ! + ! Computes the following integral : + ! $\int_{-\infty}^{infty} dr \chi_i(r) \chi_j(r) v_ne^{extra}(r)$. + ! + ! + ! where BOTH $\chi_i(r)$ AND $\chi_j(r)$ belongs to the EXTRA basis + ! + ! and v_ne^{extra}(r) is the Coulomb potential coming from the EXTRA nuclei + END_DOC + integer, intent(in) ::i_ao,j_ao + double precision :: mu_in,charge,coord(3) + double precision :: NAI_pol_mult_erf_ao_extra + mu_in = 1.d10 + integer :: i + v_extra_nucl_extra_ao = 0.d0 + do i = 1, extra_nucl_num + charge = extra_nucl_charge(i) + coord(1:3) = extra_nucl_coord_transp(1:3,i) + v_extra_nucl_extra_ao -= charge * NAI_pol_mult_erf_ao_extra(i_ao, j_ao, mu_in, coord) + enddo +end + + +double precision function v_nucl_extra_ao(i_ao,j_ao) + implicit none + BEGIN_DOC + ! + ! Computes the following integral : + ! $\int_{-\infty}^{infty} dr \chi_i(r) \chi_j(r) v_ne(r)$. + ! + ! + ! where BOTH $\chi_i(r)$ AND $\chi_j(r)$ belongs to the EXTRA basis + ! + ! and v_ne(r) is the Coulomb potential coming from the REGULAR nuclei + END_DOC + integer, intent(in) ::i_ao,j_ao + double precision :: mu_in,charge,coord(3) + double precision :: NAI_pol_mult_erf_ao_extra + mu_in = 1.d10 + integer :: i + v_nucl_extra_ao = 0.d0 + do i = 1, nucl_num + charge = nucl_charge(i) + coord(1:3) = nucl_coord_transp(1:3,i) + v_nucl_extra_ao -= charge * NAI_pol_mult_erf_ao_extra(i_ao, j_ao, mu_in, coord) + enddo +end + + +double precision function v_extra_nucl_mixed_ao(i_ao,j_ao) + implicit none + BEGIN_DOC + ! + ! Computes the following integral : + ! $\int_{-\infty}^{infty} dr \chi_i(r) \chi_j(r) v_ne^{extra}(r)$. + ! + ! + ! where $\chi_i(r)$ belongs to the EXTRA basis and $\chi_j(r)$ to the REGULAR basis + ! + ! and v_ne^{extra}(r) is the Coulomb potential coming from the EXTRA nuclei + END_DOC + integer, intent(in) ::i_ao,j_ao + double precision :: mu_in,charge,coord(3) + double precision :: NAI_pol_mult_erf_ao_extra_mixed + mu_in = 1.d10 + integer :: i + v_extra_nucl_mixed_ao = 0.d0 + do i = 1, extra_nucl_num + charge = extra_nucl_charge(i) + coord(1:3) = extra_nucl_coord_transp(1:3,i) + v_extra_nucl_mixed_ao -= charge * NAI_pol_mult_erf_ao_extra_mixed(i_ao, j_ao, mu_in, coord) + enddo +end + +double precision function v_nucl_mixed_ao(i_ao,j_ao) + implicit none + BEGIN_DOC + ! + ! Computes the following integral : + ! $\int_{-\infty}^{infty} dr \chi_i(r) \chi_j(r) v_ne(r)$. + ! + ! + ! where $\chi_i(r)$ belongs to the EXTRA basis and $\chi_j(r)$ to the REGULAR basis + ! + ! and v_ne(r) is the Coulomb potential coming from the REGULAR nuclei + END_DOC + integer, intent(in) ::i_ao,j_ao + double precision :: mu_in,charge,coord(3) + double precision :: NAI_pol_mult_erf_ao_extra_mixed + mu_in = 1.d10 + integer :: i + v_nucl_mixed_ao = 0.d0 + do i = 1, nucl_num + charge = nucl_charge(i) + coord(1:3) = nucl_coord_transp(1:3,i) + v_nucl_mixed_ao -= charge * NAI_pol_mult_erf_ao_extra_mixed(i_ao, j_ao, mu_in, coord) + enddo +end + From 67d2301fde87edbba1e803a7057e5bd1d9d01cb4 Mon Sep 17 00:00:00 2001 From: eginer Date: Wed, 11 Dec 2024 14:30:42 +0100 Subject: [PATCH 08/10] beginning the fit on 1s functions --- plugins/local/ao_extra_basis/EZFIO.cfg | 6 + plugins/local/ao_extra_basis/aos_transp.irp.f | 68 ++++++++ .../local/ao_extra_basis/fit_1s_basis.irp.f | 8 + .../local/ao_extra_basis/prov_fit_1s.irp.f | 159 ++++++++++++++++++ plugins/local/extra_basis_int/NEED | 1 + 5 files changed, 242 insertions(+) create mode 100644 plugins/local/ao_extra_basis/aos_transp.irp.f create mode 100644 plugins/local/ao_extra_basis/fit_1s_basis.irp.f create mode 100644 plugins/local/ao_extra_basis/prov_fit_1s.irp.f diff --git a/plugins/local/ao_extra_basis/EZFIO.cfg b/plugins/local/ao_extra_basis/EZFIO.cfg index 8b3a8667b..9a73f0781 100644 --- a/plugins/local/ao_extra_basis/EZFIO.cfg +++ b/plugins/local/ao_extra_basis/EZFIO.cfg @@ -1,3 +1,9 @@ +[ao_extra_center] +type: double precision +doc: parameter for off-centering s functions to mimick p functions +interface: ezfio, provider +default:0.01 + [ao_extra_basis] type: character*(256) doc: Name of the |ao_extra| basis set diff --git a/plugins/local/ao_extra_basis/aos_transp.irp.f b/plugins/local/ao_extra_basis/aos_transp.irp.f new file mode 100644 index 000000000..ed34835bf --- /dev/null +++ b/plugins/local/ao_extra_basis/aos_transp.irp.f @@ -0,0 +1,68 @@ + +! --- + +BEGIN_PROVIDER [ integer, Nucl_ao_extras_transposed, (N_ao_extras_max,nucl_num)] + + BEGIN_DOC + ! List of ao_extras attached on each atom + END_DOC + + implicit none + integer :: i + integer, allocatable :: nucl_tmp(:) + + allocate(nucl_tmp(nucl_num)) + nucl_tmp = 0 + do i = 1, ao_extra_num + nucl_tmp(ao_extra_nucl(i)) += 1 + Nucl_ao_extras_transposed(nucl_tmp(ao_extra_nucl(i)),ao_extra_nucl(i)) = i + enddo + deallocate(nucl_tmp) + +END_PROVIDER + +! --- + +BEGIN_PROVIDER [double precision, ao_extra_expo_ordered_transp_per_nucl, (ao_extra_prim_num_max,N_ao_extras_max,nucl_num) ] + implicit none + integer :: i,j,k,l + do i = 1, nucl_num + do j = 1,Nucl_N_ao_extras(i) + k = Nucl_ao_extras_transposed(j,i) + do l = 1, ao_extra_prim_num(k) + ao_extra_expo_ordered_transp_per_nucl(l,j,i) = ao_extra_expo_ordered_transp(l,k) + enddo + enddo + enddo + +END_PROVIDER + + +BEGIN_PROVIDER [ integer, ao_extra_power_ordered_transp_per_nucl, (3,N_ao_extras_max,nucl_num) ] + implicit none + integer :: i,j,k,l + do i = 1, nucl_num + do j = 1,Nucl_N_ao_extras(i) + k = Nucl_ao_extras_transposed(j,i) + do l = 1, 3 + ao_extra_power_ordered_transp_per_nucl(l,j,i) = ao_extra_power(k,l) + enddo + enddo + enddo + +END_PROVIDER + +BEGIN_PROVIDER [ double precision, ao_extra_coef_normalized_ordered_transp_per_nucl, (ao_extra_prim_num_max,N_ao_extras_max,nucl_num) ] + implicit none + integer :: i,j,k,l + do i = 1, nucl_num + do j = 1,Nucl_N_ao_extras(i) + k = Nucl_ao_extras_transposed(j,i) + do l = 1, ao_extra_prim_num(k) + ao_extra_coef_normalized_ordered_transp_per_nucl(l,j,i) = ao_extra_coef_normalized_ordered_transp(l,k) + enddo + enddo + enddo + +END_PROVIDER + diff --git a/plugins/local/ao_extra_basis/fit_1s_basis.irp.f b/plugins/local/ao_extra_basis/fit_1s_basis.irp.f new file mode 100644 index 000000000..f544ad830 --- /dev/null +++ b/plugins/local/ao_extra_basis/fit_1s_basis.irp.f @@ -0,0 +1,8 @@ +program fit_1s_basis + implicit none + provide lmax_too_big + integer :: i +! print*,'n_func_tot', n_func_tot + provide new_nucl_coord + +end diff --git a/plugins/local/ao_extra_basis/prov_fit_1s.irp.f b/plugins/local/ao_extra_basis/prov_fit_1s.irp.f new file mode 100644 index 000000000..cba0bb05d --- /dev/null +++ b/plugins/local/ao_extra_basis/prov_fit_1s.irp.f @@ -0,0 +1,159 @@ + BEGIN_PROVIDER [ integer, n_func_tot] + implicit none + BEGIN_DOC + ! n_func_tot :: total number of functions in the fitted basis set + ! + ! returned in an uncontracted way + END_DOC + integer :: i,prefact + n_func_tot = 0 + print*,'n_func_tot ' + do i = 1, ao_num + if(ao_l(i) == 0)then + prefact = 1 ! s functions + else + ! p functions are fitted with 2 functions + ! d functions are fitted with 4 functions etc ... + prefact=2*ao_l(i) + endif + n_func_tot += prefact * ao_prim_num(i) + enddo +END_PROVIDER + +BEGIN_PROVIDER [ integer, n_prim_tot_orig] + implicit none + integer :: i + n_prim_tot_orig = 0 + do i = 1, ao_num + n_prim_tot_orig += ao_prim_num(i) + enddo +END_PROVIDER + + +BEGIN_PROVIDER [ logical, lmax_too_big] + implicit none + if (ao_l_max.gt.1)then + lmax_too_big = .True. + else + lmax_too_big = .False. + endif + if(lmax_too_big)then + print*,'STOPPING !! lmax is larger than 1 !' + print*,'Cannot yet fit with 1s functions ...' + stop + endif +END_PROVIDER + + BEGIN_PROVIDER [ integer, n_2p_func_orig] +&BEGIN_PROVIDER [ integer, n_2p_func_tot] + implicit none + integer :: i + BEGIN_DOC + ! n_2p_func_orig :: number of 2p functions in the original basis + ! + ! n_2p_func_tot :: total number of p functions in the fitted basis + END_DOC + n_2p_func_orig= 0 + n_2p_func_tot = 0 + do i = 1, ao_num + if(ao_l(i)==1)then + n_2p_func_orig+= 1 + n_2p_func_tot += ao_prim_num(i) * 2 + endif + enddo +END_PROVIDER + +BEGIN_PROVIDER [ integer, list_2p_functions, (n_2p_func_orig)] + implicit none + BEGIN_DOC + ! list of 2p functions in the original basis + END_DOC + integer :: i,j + j=0 + do i = 1, ao_num + if(ao_l(i)==1)then + j+=1 + list_2p_functions(j) = i + endif + enddo +END_PROVIDER + +BEGIN_PROVIDER [ integer, new_nucl_num] + implicit none + new_nucl_num = n_func_tot +END_PROVIDER + +BEGIN_PROVIDER [ double precision, new_ao_expo_1s , (n_func_tot) ] + implicit none + integer :: i,j,ii,i_ao,k + k = 0 + do i = 1, nucl_num + do ii = 1, Nucl_N_Aos(i) + i_ao = nucl_aos_transposed(ii,i) + if(ao_l(i_ao)==0)then + do j = 1, ao_prim_num(i_ao) + k+=1 + new_ao_expo_1s(k)= ao_expo(i_ao,j) + enddo + else if(ao_l(i_ao)==1)then + ! for 'p' functions + ! you replace the function by 2 functions 's' + do j = 1, ao_prim_num(i_ao) + k+=1 + new_ao_expo_1s(k)= ao_expo(i_ao,j) + k+=1 + new_ao_expo_1s(k)= ao_expo(i_ao,j) + enddo + else + print*,'WARNING ! Lmax value not implemented yet !' + print*,'stopping ...' + stop + endif + enddo + enddo + if(k.ne.n_func_tot)then + print*,'pb !!! k NE n_func_tot !!' + print*,k,n_func_tot + stop + endif + +END_PROVIDER + +BEGIN_PROVIDER [ double precision, new_nucl_coord, (3,new_nucl_num)] + implicit none + integer :: i,ii,j,i_ao,k + k = 0 + do i = 1, nucl_num + do ii = 1, Nucl_N_Aos(i) + i_ao = nucl_aos_transposed(ii,i) + if(ao_l(i_ao)==0)then + do j = 1, ao_prim_num(i_ao) + k+=1 + new_nucl_coord(1:3,k)=nucl_coord_transp(1:3,i) + enddo + else if(ao_l(i_ao)==1)then + ! split the function into 2 s functions + ! one is centered in R_x + d + do j = 1, ao_prim_num(i_ao) + k+=1 + new_nucl_coord(2:3,k)= nucl_coord_transp(2:3,i) + new_nucl_coord(1,k)= nucl_coord_transp(1,i)+ao_extra_center + k+=1 + ! one is centered in R_x - d + new_nucl_coord(2:3,k)= nucl_coord_transp(2:3,i) + new_nucl_coord(1,k)= nucl_coord_transp(1,i)-ao_extra_center + enddo + else + print*,'WARNING ! Lmax value not implemented yet !' + print*,'stopping ...' + stop + endif + enddo + enddo + if(k.ne.n_func_tot)then + print*,'pb !!! k NE n_func_tot !!' + print*,k,n_func_tot + stop + endif + +END_PROVIDER diff --git a/plugins/local/extra_basis_int/NEED b/plugins/local/extra_basis_int/NEED index 7f39af7c4..6214e5cda 100644 --- a/plugins/local/extra_basis_int/NEED +++ b/plugins/local/extra_basis_int/NEED @@ -1,2 +1,3 @@ ao_extra_basis ao_one_e_ints +ao_two_e_ints From e4b9e4a901aa895b37c92809232715cd6f05a4d6 Mon Sep 17 00:00:00 2001 From: eginer Date: Thu, 12 Dec 2024 12:32:41 +0100 Subject: [PATCH 09/10] fitting ok --- ocaml/Input.ml | 1 + plugins/local/ao_extra_basis/EZFIO.cfg | 6 - .../local/ao_extra_basis/fit_1s_basis.irp.f | 24 ++- .../local/ao_extra_basis/prov_fit_1s.irp.f | 181 +++++++++++++----- .../qp_copy_extra_basis_to_usual_basis | 59 ++++++ scripts/ezfio_interface/qp_edit_template | 23 +++ src/nuclei/nuclei.irp.f | 3 + 7 files changed, 243 insertions(+), 54 deletions(-) create mode 100755 plugins/local/ao_extra_basis/qp_copy_extra_basis_to_usual_basis diff --git a/ocaml/Input.ml b/ocaml/Input.ml index f5b5a97f4..4639c2204 100644 --- a/ocaml/Input.ml +++ b/ocaml/Input.ml @@ -2,6 +2,7 @@ open Qputils;; open Qptypes;; include Input_ao_basis;; +include Input_ao_extra_basis;; include Input_bitmasks;; include Input_determinants_by_hand;; include Input_electrons;; diff --git a/plugins/local/ao_extra_basis/EZFIO.cfg b/plugins/local/ao_extra_basis/EZFIO.cfg index 9a73f0781..8b3a8667b 100644 --- a/plugins/local/ao_extra_basis/EZFIO.cfg +++ b/plugins/local/ao_extra_basis/EZFIO.cfg @@ -1,9 +1,3 @@ -[ao_extra_center] -type: double precision -doc: parameter for off-centering s functions to mimick p functions -interface: ezfio, provider -default:0.01 - [ao_extra_basis] type: character*(256) doc: Name of the |ao_extra| basis set diff --git a/plugins/local/ao_extra_basis/fit_1s_basis.irp.f b/plugins/local/ao_extra_basis/fit_1s_basis.irp.f index f544ad830..3be2dbffd 100644 --- a/plugins/local/ao_extra_basis/fit_1s_basis.irp.f +++ b/plugins/local/ao_extra_basis/fit_1s_basis.irp.f @@ -1,8 +1,24 @@ program fit_1s_basis implicit none provide lmax_too_big - integer :: i -! print*,'n_func_tot', n_func_tot - provide new_nucl_coord - + integer :: i,j + print*,'////////////////////////////////////////////////////' + print*,'////////////////////////////////////////////////////' + print*,'Fitting the original basis set on uncontracted s only functions ' + print*,'WARNING :: works for now with only P functions at most !!' + print*,'WARNING :: otherwise it will stop ' + print*,'Writting the results in the extra_nuclei and ao_extra_basis folders of EZFIO' + print*,'New number of atomic functions : ' + print*,'n_func_tot = ',n_func_tot + call ezfio_set_extra_nuclei_extra_nucl_num(new_nucl_num) + call ezfio_set_extra_nuclei_extra_nucl_charge(new_nucl_charge_1s) + call ezfio_set_extra_nuclei_extra_nucl_coord(new_nucl_coord_1s) + call ezfio_set_extra_nuclei_extra_nucl_label(new_nucl_label_1s) + call ezfio_set_ao_extra_basis_ao_extra_num(n_func_tot) + call ezfio_set_ao_extra_basis_ao_extra_nucl(new_ao_nucl_1s) + call ezfio_set_ao_extra_basis_ao_extra_prim_num(new_ao_prim_num_1s) + call ezfio_set_ao_extra_basis_ao_extra_coef(new_ao_coef_1s) + call ezfio_set_ao_extra_basis_ao_extra_expo(new_ao_expo_1s) + call ezfio_set_ao_extra_basis_ao_extra_power(new_ao_power_1s) end + diff --git a/plugins/local/ao_extra_basis/prov_fit_1s.irp.f b/plugins/local/ao_extra_basis/prov_fit_1s.irp.f index cba0bb05d..4d6f07aef 100644 --- a/plugins/local/ao_extra_basis/prov_fit_1s.irp.f +++ b/plugins/local/ao_extra_basis/prov_fit_1s.irp.f @@ -1,3 +1,8 @@ +BEGIN_PROVIDER [ double precision, ao_extra_center] + implicit none + ao_extra_center = 0.01d0 +END_PROVIDER + BEGIN_PROVIDER [ integer, n_func_tot] implicit none BEGIN_DOC @@ -61,6 +66,7 @@ n_2p_func_tot += ao_prim_num(i) * 2 endif enddo + print*,'n_2p_func_tot = ',n_2p_func_tot END_PROVIDER BEGIN_PROVIDER [ integer, list_2p_functions, (n_2p_func_orig)] @@ -80,80 +86,167 @@ BEGIN_PROVIDER [ integer, new_nucl_num] implicit none - new_nucl_num = n_func_tot + new_nucl_num = nucl_num + n_2p_func_tot + print*,'new_nucl_num = ',new_nucl_num +END_PROVIDER + +BEGIN_PROVIDER [ character*(32), new_nucl_label_1s , (new_nucl_num) ] + implicit none + integer :: i + do i = 1, nucl_num + new_nucl_label_1s(i) = nucl_label(i) + enddo + do i = nucl_num+1,new_nucl_num + new_nucl_label_1s(i) = "X" + enddo END_PROVIDER + + BEGIN_PROVIDER [ double precision, new_nucl_coord_1s, (new_nucl_num,3)] + implicit none + integer :: i,j + do i = 1, new_nucl_num + new_nucl_coord_1s(i,1:3) = new_nucl_coord_1s_transp(1:3,i) + enddo + END_PROVIDER -BEGIN_PROVIDER [ double precision, new_ao_expo_1s , (n_func_tot) ] + BEGIN_PROVIDER [ double precision, new_nucl_coord_1s_transp, (3,new_nucl_num)] +&BEGIN_PROVIDER [ double precision, new_nucl_charge_1s, (new_nucl_num)] implicit none - integer :: i,j,ii,i_ao,k - k = 0 + BEGIN_DOC +! the real atoms are located in the first nucl_num entries +! +! then the fictious atoms are located after + END_DOC + integer :: i,ii,j,i_ao,k,n_ao + integer :: return_xyz_int,power(3),good_i + new_nucl_charge_1s = 0.d0 + do i = 1, nucl_num + new_nucl_coord_1s_transp(1:3,i) = nucl_coord_transp(1:3,i) + new_nucl_charge_1s(i) = nucl_charge(i) + enddo + k = nucl_num do i = 1, nucl_num do ii = 1, Nucl_N_Aos(i) i_ao = nucl_aos_transposed(ii,i) - if(ao_l(i_ao)==0)then - do j = 1, ao_prim_num(i_ao) - k+=1 - new_ao_expo_1s(k)= ao_expo(i_ao,j) - enddo - else if(ao_l(i_ao)==1)then - ! for 'p' functions - ! you replace the function by 2 functions 's' + if(ao_l(i_ao)==1)then + ! split the function into 2 s functions + ! one is centered in R_x + d + power(1:3) = ao_power(i_ao,1:3) + good_i = return_xyz_int(power) do j = 1, ao_prim_num(i_ao) k+=1 - new_ao_expo_1s(k)= ao_expo(i_ao,j) + new_nucl_coord_1s_transp(1:3,k)= nucl_coord_transp(1:3,i) + new_nucl_coord_1s_transp(good_i,k)+= ao_extra_center + new_nucl_charge_1s(k) = 0.d0 k+=1 - new_ao_expo_1s(k)= ao_expo(i_ao,j) + ! one is centered in R_x - d + new_nucl_coord_1s_transp(1:3,k)= nucl_coord_transp(1:3,i) + new_nucl_coord_1s_transp(good_i,k)-= ao_extra_center + new_nucl_charge_1s(k) = 0.d0 enddo - else + else if(ao_l(i_ao).gt.1)then print*,'WARNING ! Lmax value not implemented yet !' print*,'stopping ...' stop endif enddo enddo - if(k.ne.n_func_tot)then - print*,'pb !!! k NE n_func_tot !!' - print*,k,n_func_tot - stop - endif END_PROVIDER -BEGIN_PROVIDER [ double precision, new_nucl_coord, (3,new_nucl_num)] + BEGIN_PROVIDER [ integer, new_n_AOs_max] + implicit none + new_n_AOs_max = ao_prim_num_max * n_AOs_max + + END_PROVIDER + + + BEGIN_PROVIDER [ integer, new_Nucl_N_Aos, (new_nucl_num)] +&BEGIN_PROVIDER [ integer, new_nucl_aos_transposed, (new_n_AOs_max,new_nucl_num) ] +&BEGIN_PROVIDER [ double precision, new_ao_expo_1s , (n_func_tot) ] +&BEGIN_PROVIDER [ integer, new_ao_nucl_1s, (n_func_tot)] implicit none - integer :: i,ii,j,i_ao,k - k = 0 + integer :: i,j,ii,i_ao,n_func,n_func_total,n_nucl + double precision :: coef + n_func_total = 0 do i = 1, nucl_num + n_func = 0 do ii = 1, Nucl_N_Aos(i) i_ao = nucl_aos_transposed(ii,i) if(ao_l(i_ao)==0)then do j = 1, ao_prim_num(i_ao) - k+=1 - new_nucl_coord(1:3,k)=nucl_coord_transp(1:3,i) + coef= ao_expo(i_ao,j) + n_func_total += 1 + n_func +=1 + new_nucl_aos_transposed(n_func,i) = n_func_total + new_ao_expo_1s(n_func_total) = coef + new_ao_nucl_1s(n_func_total) = i enddo - else if(ao_l(i_ao)==1)then - ! split the function into 2 s functions - ! one is centered in R_x + d + endif + enddo + new_Nucl_N_Aos(i) = n_func + enddo + n_nucl=nucl_num + do i = 1, nucl_num + do ii = 1, Nucl_N_Aos(i) + i_ao = nucl_aos_transposed(ii,i) + if(ao_l(i_ao)==1)then do j = 1, ao_prim_num(i_ao) - k+=1 - new_nucl_coord(2:3,k)= nucl_coord_transp(2:3,i) - new_nucl_coord(1,k)= nucl_coord_transp(1,i)+ao_extra_center - k+=1 - ! one is centered in R_x - d - new_nucl_coord(2:3,k)= nucl_coord_transp(2:3,i) - new_nucl_coord(1,k)= nucl_coord_transp(1,i)-ao_extra_center + coef= ao_expo(i_ao,j) + n_func_total+=1 + n_nucl +=1 + new_nucl_aos_transposed(1,n_nucl) = n_func_total + new_ao_expo_1s(n_func_total) = coef + new_Nucl_N_Aos(n_nucl)=1 + new_ao_nucl_1s(n_func_total) = n_nucl + + n_func_total+=1 + n_nucl +=1 + new_nucl_aos_transposed(1,n_nucl) = n_func_total + new_ao_expo_1s(n_func_total) = coef + new_Nucl_N_Aos(n_nucl)=1 + new_ao_nucl_1s(n_func_total) = n_nucl enddo - else - print*,'WARNING ! Lmax value not implemented yet !' - print*,'stopping ...' - stop endif enddo enddo - if(k.ne.n_func_tot)then - print*,'pb !!! k NE n_func_tot !!' - print*,k,n_func_tot - stop - endif END_PROVIDER + +BEGIN_PROVIDER [ double precision, new_ao_coef_1s , (n_func_tot) ] + implicit none + integer :: i + BEGIN_DOC +! Primitive coefficients, read from input. Those should not be used directly, as the MOs are expressed on the basis of **normalized** AOs. + END_DOC + do i = 1, n_func_tot + new_ao_coef_1s(i) = 1.d0 + enddo +END_PROVIDER + +BEGIN_PROVIDER [ integer, new_ao_prim_num_1s, (n_func_tot)] + implicit none + integer :: i + do i = 1, n_func_tot + new_ao_prim_num_1s(i) = 1 + enddo +END_PROVIDER + +BEGIN_PROVIDER [integer, new_ao_power_1s, (n_func_tot,3)] + implicit none + new_ao_power_1s = 0 +END_PROVIDER + +integer function return_xyz_int(power) + implicit none + integer,intent(in) :: power(3) + if(power(1) == 1 .and. power(2) ==0 .and. power(3) ==0)then + return_xyz_int = 1 + else if (power(2) == 1 .and. power(1) ==0 .and. power(3) ==0)then + return_xyz_int = 2 + else if (power(3) == 1 .and. power(1) ==0 .and. power(1) ==0)then + return_xyz_int = 3 + else + return_xyz_int = -1000 + endif +end diff --git a/plugins/local/ao_extra_basis/qp_copy_extra_basis_to_usual_basis b/plugins/local/ao_extra_basis/qp_copy_extra_basis_to_usual_basis new file mode 100755 index 000000000..59be0ee26 --- /dev/null +++ b/plugins/local/ao_extra_basis/qp_copy_extra_basis_to_usual_basis @@ -0,0 +1,59 @@ +#!/bin/bash +# specify the QP folder +QP=$QP_ROOT +dir=${QP} +# sourcing the quantum_package.rc file +. ${QP}/quantum_package.rc +EZFIO_extra=${1%/} +EZFIO_target=${2%/} + + + +echo "********** SCRIPT TO COPY DATA FROM EZFIO TO ANOTHER *********" +echo "Extracting data from "$EZFIO_extra +echo "and Copying data to "$EZFIO_target + +### COPYING ALL DATA FROM $EZFIO_extra/nuclei/ to ${EZFIO_target}/extra_nuclei/ +echo "COPYING ALL DATA FROM "$EZFIO_extra"/extra_nuclei/ to "${EZFIO_target}"/nuclei/" +direxists=false +if [ -d ${EZFIO_target}/extra_nuclei/ ] ; then + direxists=true + echo "The directory extra_nuclei exists" + else + echo "PB !!" + direxists=false + mkdir ${EZFIO_target}/extra_nuclei/ +fi +data=`\ls $EZFIO_extra/extra_nuclei/` +for i in $data +do + echo $i + newfile=`echo $i | sed 's/extra_nucl/nucl/g' ` + echo $newfile + cp ${EZFIO_extra}/extra_nuclei/$i ${EZFIO_target}/nuclei/$newfile +done + +### COPYING ALL DATA FROM $EZFIO_extra/ao_basis/ to ${EZFIO_target}/ao_extra_basis/ +direxists=false +if [ -d ${EZFIO_target}/ao_extra_basis/ ] ; then + direxists=true + echo "The directory exists ao_extra_basis" + else + echo "PB !!" + direxists=false + mkdir ${EZFIO_target}/ao_extra_basis/ +fi +echo "COPYING ALL DATA FROM "$EZFIO_extra"/ao_basis/ to "${EZFIO_target}"/ao_extra_basis/" +data=`\ls $EZFIO_extra/ao_extra_basis/` +for i in $data +do + echo $i + newfile=`echo $i | sed 's/ao_extra/ao/g' ` + echo $newfile + cp ${EZFIO_extra}/ao_extra_basis/$i ${EZFIO_target}/ao_basis/$newfile +done +#i=primitives_normalized +#newfile=primitives_normalized_extra +#cp ${EZFIO_extra}/ao_basis/$i ${EZFIO_target}/ao_extra_basis/$newfile + + diff --git a/scripts/ezfio_interface/qp_edit_template b/scripts/ezfio_interface/qp_edit_template index 2380660e4..0afd3aedb 100644 --- a/scripts/ezfio_interface/qp_edit_template +++ b/scripts/ezfio_interface/qp_edit_template @@ -17,6 +17,7 @@ This file is automatically generated by (** Keywords used to define input sections *) type keyword = | Ao_basis +| Ao_extra_basis | Determinants_by_hand | Electrons | Mo_basis @@ -27,6 +28,7 @@ type keyword = let keyword_to_string = function | Ao_basis -> "AO basis" +| Ao_extra_basis -> "AO extra_basis" | Determinants_by_hand -> "Determinants_by_hand" | Electrons -> "Electrons" | Mo_basis -> "MO basis" @@ -76,6 +78,8 @@ let get s = f Electrons.(read, to_rst) | Nuclei_by_hand -> f Nuclei_by_hand.(read, to_rst) + | Ao_extra_basis -> + f Ao_extra_basis.(read, to_rst) | Ao_basis -> f Ao_basis.(read, to_rst) | Determinants_by_hand -> @@ -123,6 +127,7 @@ let set str s = | Determinants_by_hand -> write Determinants_by_hand.(of_rst, write ~force:false) s | Nuclei_by_hand -> write Nuclei_by_hand.(of_rst, write) s | Ao_basis -> () (* TODO *) + | Ao_extra_basis -> () (* TODO *) | Mo_basis -> () (* TODO *) end @@ -199,6 +204,22 @@ let run check_only ?ndet ?state ?read ?write ezfio_filename = | _ -> () end; + (* Reorder extra basis set *) + begin + match Input.Ao_extra_basis.read() with + | Some aos -> + let ordering = Input.Ao_extra_basis.ordering aos in + let test = Array.copy ordering in + Array.sort compare test ; + if test <> ordering then + begin + Printf.eprintf "Warning: Basis set is not properly ordered. Redordering.\n"; + let new_aos = Input.Ao_extra_basis.reorder aos in + Input.Ao_extra_basis.write new_aos; + end + | _ -> () + end; + begin match ndet with | None -> () @@ -219,6 +240,7 @@ let run check_only ?ndet ?state ?read ?write ezfio_filename = let output = (file_header ezfio_filename) :: ( List.map get [ Ao_basis ; + Ao_extra_basis ; Mo_basis ; ]) in @@ -229,6 +251,7 @@ let run check_only ?ndet ?state ?read ?write ezfio_filename = let tasks = [ Nuclei_by_hand ; Ao_basis; + Ao_extra_basis; Electrons ; {tasks} Mo_basis; diff --git a/src/nuclei/nuclei.irp.f b/src/nuclei/nuclei.irp.f index bb8cc7824..9250f33a1 100644 --- a/src/nuclei/nuclei.irp.f +++ b/src/nuclei/nuclei.irp.f @@ -201,6 +201,9 @@ x(2) = nucl_coord(k,2) - nucl_coord(l,2) x(3) = nucl_coord(k,3) - nucl_coord(l,3) r2 = x(1)*x(1) + x(2)*x(2) + x(3)*x(3) + if(r2.lt.1.d-6)then + r2 = 1.d-6 + endif nuclear_repulsion += Z12/dsqrt(r2) enddo enddo From 3465065264c69de70ff09dd759ca5bf61cf87980 Mon Sep 17 00:00:00 2001 From: eginer Date: Fri, 13 Dec 2024 17:35:24 +0100 Subject: [PATCH 10/10] added transform basis --- plugins/local/ao_extra_basis/EZFIO.cfg | 17 +++++++ plugins/local/ao_extra_basis/LiH.xyz | 4 ++ plugins/local/ao_extra_basis/README.rst | 11 +++++ .../local/ao_extra_basis/fit_1s_basis.irp.f | 17 +++++++ plugins/local/ao_extra_basis/h2o.xyz | 7 +++ plugins/local/ao_extra_basis/install | 2 +- .../local/ao_extra_basis/prov_fit_1s.irp.f | 18 ++++++- .../ao_extra_basis/qp_add_extra_fit_system | 19 +++++++ .../local/ao_extra_basis/qp_copy_extra_basis | 8 +++ .../qp_copy_extra_basis_to_usual_basis | 4 +- plugins/local/ao_extra_basis/qp_fit_1s_basis | 12 +++++ .../ao_extra_basis/transform_basis.irp.f | 49 +++++++++++++++++++ plugins/local/ao_extra_basis/uninstall | 2 +- plugins/local/extra_nuclei/EZFIO.cfg | 33 +++++++++++++ src/aux_quantities/EZFIO.cfg | 7 +++ src/kohn_sham/print_mos.irp.f | 49 +++++++++++++------ src/tools/save_one_e_dm.irp.f | 1 + 17 files changed, 237 insertions(+), 23 deletions(-) create mode 100644 plugins/local/ao_extra_basis/LiH.xyz create mode 100644 plugins/local/ao_extra_basis/h2o.xyz create mode 100755 plugins/local/ao_extra_basis/qp_add_extra_fit_system create mode 100755 plugins/local/ao_extra_basis/qp_fit_1s_basis create mode 100644 plugins/local/ao_extra_basis/transform_basis.irp.f diff --git a/plugins/local/ao_extra_basis/EZFIO.cfg b/plugins/local/ao_extra_basis/EZFIO.cfg index 8b3a8667b..8841c1944 100644 --- a/plugins/local/ao_extra_basis/EZFIO.cfg +++ b/plugins/local/ao_extra_basis/EZFIO.cfg @@ -3,6 +3,12 @@ type: character*(256) doc: Name of the |ao_extra| basis set interface: ezfio +[ao_extra_only_1s] +type: logical +doc: If |true|, you know that the additional AO basis is built only with 1s functions +interface: ezfio, provider +default: true + [ao_extra_num] type: integer doc: Number of |ao_extras| @@ -85,3 +91,14 @@ doc: phase shift for each primitive GTOs |ao_extra| size: (3,ao_extra_basis.ao_extra_num,ao_extra_basis.ao_extra_prim_num_max) interface: ezfio, provider +[ao_extra_one_e_dm] +type: double precision +doc: reduced density matrix on the ao extra basis +size: (ao_extra_basis.ao_extra_num,ao_extra_basis.ao_extra_num) +interface: ezfio, provider + +[ao_extra_center] +type: double precision +doc: shift with which the atoms are shifted to mimick p functions +interface: ezfio + diff --git a/plugins/local/ao_extra_basis/LiH.xyz b/plugins/local/ao_extra_basis/LiH.xyz new file mode 100644 index 000000000..034318036 --- /dev/null +++ b/plugins/local/ao_extra_basis/LiH.xyz @@ -0,0 +1,4 @@ +2 + +H 0. 0. 0. +Li 0. 0. 1.0 diff --git a/plugins/local/ao_extra_basis/README.rst b/plugins/local/ao_extra_basis/README.rst index 3d1dc8137..f60d71c03 100644 --- a/plugins/local/ao_extra_basis/README.rst +++ b/plugins/local/ao_extra_basis/README.rst @@ -2,3 +2,14 @@ extra_basis =========== +Plugin to handle an extra basis, which is attached to the extra_nuclei. +It is essentially a duplication of all important quantities (coefficients, exponents and so on) of the usual |AO| basis. + +An interesting feature is the possibility to fit any basis made at most with "p" functions onto a purely "s" basis. +This is done with the various scripts here: + + - qp_fit_1s_basis : script that creates an |EZFIO| folder corresponding to an .xyz file and a basis fitted with only "s" functions + - qp_add_extra_fit_system : script that takes as input an |EZFIO| folder and an .xyz file and add an extra_basis and extra_nuclei with a 1s fitted basis + +Ex: +qp_add_extra_fit_system LiH.ezfio/ h2o.xyz # takes the EZFIO folder "LiH.ezfio" and creates all necessary additional basis and nuclei based on h2o.xyz, but only with 1s functions. diff --git a/plugins/local/ao_extra_basis/fit_1s_basis.irp.f b/plugins/local/ao_extra_basis/fit_1s_basis.irp.f index 3be2dbffd..ef09d5b25 100644 --- a/plugins/local/ao_extra_basis/fit_1s_basis.irp.f +++ b/plugins/local/ao_extra_basis/fit_1s_basis.irp.f @@ -10,11 +10,28 @@ program fit_1s_basis print*,'Writting the results in the extra_nuclei and ao_extra_basis folders of EZFIO' print*,'New number of atomic functions : ' print*,'n_func_tot = ',n_func_tot + + print*,'extra_fictious_nucl = ',extra_fictious_nucl + do i = 1, extra_fictious_nucl + print*,list_fict_nucl(i) + enddo + print*,'' + print*,'' + do i = 1, nucl_num + print*,list_real_nucl(i) + enddo call ezfio_set_extra_nuclei_extra_nucl_num(new_nucl_num) + call ezfio_set_extra_nuclei_extra_nucl_fictious_num(extra_fictious_nucl) + call ezfio_set_extra_nuclei_extra_nucl_real_num(nucl_num) + call ezfio_set_extra_nuclei_extra_nucl_fictious_list(list_fict_nucl) + call ezfio_set_extra_nuclei_extra_nucl_real_list(list_real_nucl) + call ezfio_set_extra_nuclei_extra_nucl_real_fictious_list(extra_nucl_real_fictious_list_prov) call ezfio_set_extra_nuclei_extra_nucl_charge(new_nucl_charge_1s) call ezfio_set_extra_nuclei_extra_nucl_coord(new_nucl_coord_1s) call ezfio_set_extra_nuclei_extra_nucl_label(new_nucl_label_1s) +! call ezfio_set_ao_extra_basis_ao_extra_num(n_func_tot) + call ezfio_set_ao_extra_basis_ao_extra_center(ao_extra_center) call ezfio_set_ao_extra_basis_ao_extra_nucl(new_ao_nucl_1s) call ezfio_set_ao_extra_basis_ao_extra_prim_num(new_ao_prim_num_1s) call ezfio_set_ao_extra_basis_ao_extra_coef(new_ao_coef_1s) diff --git a/plugins/local/ao_extra_basis/h2o.xyz b/plugins/local/ao_extra_basis/h2o.xyz new file mode 100644 index 000000000..d39282147 --- /dev/null +++ b/plugins/local/ao_extra_basis/h2o.xyz @@ -0,0 +1,7 @@ +3 + +O 0.000000 -0.399441 3.000000 +H 0.761232 0.199721 3.000000 +H -0.761232 0.199721 3.000000 + + diff --git a/plugins/local/ao_extra_basis/install b/plugins/local/ao_extra_basis/install index ca4a16433..e7e668e14 100755 --- a/plugins/local/ao_extra_basis/install +++ b/plugins/local/ao_extra_basis/install @@ -12,7 +12,7 @@ fi currdir=${PWD} # list of the scripts to be used by the module -scripts_list="qp_copy_extra_basis" +scripts_list="qp_copy_extra_basis qp_add_extra_fit_system qp_copy_extra_basis_to_usual_basis qp_fit_1s_basis" # Make a symbolic link for all scripts to be used in the ${QP_ROOT}/scripts/ # directory. diff --git a/plugins/local/ao_extra_basis/prov_fit_1s.irp.f b/plugins/local/ao_extra_basis/prov_fit_1s.irp.f index 4d6f07aef..99a18a6bb 100644 --- a/plugins/local/ao_extra_basis/prov_fit_1s.irp.f +++ b/plugins/local/ao_extra_basis/prov_fit_1s.irp.f @@ -84,20 +84,31 @@ enddo END_PROVIDER +BEGIN_PROVIDER [ integer, extra_fictious_nucl] + implicit none + extra_fictious_nucl = n_2p_func_tot +END_PROVIDER + BEGIN_PROVIDER [ integer, new_nucl_num] implicit none new_nucl_num = nucl_num + n_2p_func_tot print*,'new_nucl_num = ',new_nucl_num END_PROVIDER -BEGIN_PROVIDER [ character*(32), new_nucl_label_1s , (new_nucl_num) ] + BEGIN_PROVIDER [ character*(32), new_nucl_label_1s , (new_nucl_num) ] +&BEGIN_PROVIDER [ integer, list_real_nucl, (nucl_num) ] +&BEGIN_PROVIDER [ integer, list_fict_nucl, (extra_fictious_nucl) ] implicit none - integer :: i + integer :: i,j do i = 1, nucl_num new_nucl_label_1s(i) = nucl_label(i) + list_real_nucl(i) = i enddo + j=0 do i = nucl_num+1,new_nucl_num + j+=1 new_nucl_label_1s(i) = "X" + list_fict_nucl(j) = i enddo END_PROVIDER @@ -111,6 +122,7 @@ BEGIN_PROVIDER [ double precision, new_nucl_coord_1s_transp, (3,new_nucl_num)] &BEGIN_PROVIDER [ double precision, new_nucl_charge_1s, (new_nucl_num)] +&BEGIN_PROVIDER [ integer, extra_nucl_real_fictious_list_prov, (extra_fictious_nucl)] implicit none BEGIN_DOC ! the real atoms are located in the first nucl_num entries @@ -138,11 +150,13 @@ new_nucl_coord_1s_transp(1:3,k)= nucl_coord_transp(1:3,i) new_nucl_coord_1s_transp(good_i,k)+= ao_extra_center new_nucl_charge_1s(k) = 0.d0 + extra_nucl_real_fictious_list_prov(k-nucl_num)=i k+=1 ! one is centered in R_x - d new_nucl_coord_1s_transp(1:3,k)= nucl_coord_transp(1:3,i) new_nucl_coord_1s_transp(good_i,k)-= ao_extra_center new_nucl_charge_1s(k) = 0.d0 + extra_nucl_real_fictious_list_prov(k-nucl_num)=i enddo else if(ao_l(i_ao).gt.1)then print*,'WARNING ! Lmax value not implemented yet !' diff --git a/plugins/local/ao_extra_basis/qp_add_extra_fit_system b/plugins/local/ao_extra_basis/qp_add_extra_fit_system new file mode 100755 index 000000000..dae95062e --- /dev/null +++ b/plugins/local/ao_extra_basis/qp_add_extra_fit_system @@ -0,0 +1,19 @@ +#!/bin/bash +# specify the QP folder +QP=$QP_ROOT +dir=${QP} +# sourcing the quantum_package.rc file +. ${QP}/quantum_package.rc +# The main EZFIO folder +main=${1%/} +# The XYZ file containing the geometry of the additional system you want to add +extra=${2%.xyz} +basis_extra=sto-3g +ezfio_extra=${extra}_${basis_extra}_1s +echo $ezfio_extra +qp_fit_1s_basis $extra $basis_extra +qp set_file $ezfio_extra +qp run scf | tee ${ezfio_extra}.scf.out +qp run save_one_e_dm | tee ${ezfio_extra}.one_rdm.out +qp_copy_extra_basis ${ezfio_extra} $main + diff --git a/plugins/local/ao_extra_basis/qp_copy_extra_basis b/plugins/local/ao_extra_basis/qp_copy_extra_basis index 551bbe1f5..cb435e188 100755 --- a/plugins/local/ao_extra_basis/qp_copy_extra_basis +++ b/plugins/local/ao_extra_basis/qp_copy_extra_basis @@ -4,7 +4,11 @@ QP=$QP_ROOT dir=${QP} # sourcing the quantum_package.rc file . ${QP}/quantum_package.rc +# script that copy all data from |AO| basis and nuclei of EZFIO_extra to the ao_extra_basis and extra_nuclei of EZFIO_target +# use: +# qp_copy_extra_basis EZFIO_extra EZFIO_target EZFIO_extra=${1%/} +EZFIO_extra=${EZFIO_extra%.xyz} EZFIO_target=${2%/} @@ -56,4 +60,8 @@ i=primitives_normalized newfile=primitives_normalized_extra cp ${EZFIO_extra}/ao_basis/$i ${EZFIO_target}/ao_extra_basis/$newfile +echo "COPYING ALL DATA FROM "$EZFIO_extra"/aux_quantities/ to "${EZFIO_target}"/ao_extra_basis/" +i=data_one_e_dm_tot_ao.gz +newfile=ao_extra_one_e_dm.gz +cp ${EZFIO_extra}/aux_quantities/$i ${EZFIO_target}/ao_extra_basis/$newfile diff --git a/plugins/local/ao_extra_basis/qp_copy_extra_basis_to_usual_basis b/plugins/local/ao_extra_basis/qp_copy_extra_basis_to_usual_basis index 59be0ee26..ba7e6a711 100755 --- a/plugins/local/ao_extra_basis/qp_copy_extra_basis_to_usual_basis +++ b/plugins/local/ao_extra_basis/qp_copy_extra_basis_to_usual_basis @@ -1,5 +1,6 @@ #!/bin/bash # specify the QP folder +# script that copy all data in ao_extra_basis and extra_nuclei and copy it to ao_basis and ao_nuclei QP=$QP_ROOT dir=${QP} # sourcing the quantum_package.rc file @@ -52,8 +53,5 @@ do echo $newfile cp ${EZFIO_extra}/ao_extra_basis/$i ${EZFIO_target}/ao_basis/$newfile done -#i=primitives_normalized -#newfile=primitives_normalized_extra -#cp ${EZFIO_extra}/ao_basis/$i ${EZFIO_target}/ao_extra_basis/$newfile diff --git a/plugins/local/ao_extra_basis/qp_fit_1s_basis b/plugins/local/ao_extra_basis/qp_fit_1s_basis new file mode 100755 index 000000000..366e478aa --- /dev/null +++ b/plugins/local/ao_extra_basis/qp_fit_1s_basis @@ -0,0 +1,12 @@ +#!/bin/bash +## Takes as an argument an xyz file and a basis, and fit the AO basis onto an "s" basis only +## use: +# qp_fit_1s_basis my_xyz_file.xyz basis +source ~/qp2/quantum_package.rc +input=${1%.xyz} +basis=$2 +ezfio_fit=${input}_${basis}_1s +qp create_ezfio -b $basis $input.xyz -o $ezfio_fit +# Fitting the original basis on 1s only basis functions +qp run fit_1s_basis |tee ${ezfio_fit}.fit_1s.out +qp_copy_extra_basis_to_usual_basis $ezfio_fit $ezfio_fit diff --git a/plugins/local/ao_extra_basis/transform_basis.irp.f b/plugins/local/ao_extra_basis/transform_basis.irp.f new file mode 100644 index 000000000..374d2dfc3 --- /dev/null +++ b/plugins/local/ao_extra_basis/transform_basis.irp.f @@ -0,0 +1,49 @@ +subroutine rotate_nuclei(phi,theta,psi,nucl_centers,n_nucl,nucl_centers_after) + implicit none + BEGIN_DOC + ! routine that rotates a set of nuclei according to three axis corresponding to angles phi, theta, psi. + END_DOC + double precision, intent(in) :: phi,theta,psi + double precision, intent(in) :: nucl_centers(3,n_nucl) + integer, intent(in) :: n_nucl + double precision, intent(out):: nucl_centers_after(3,n_nucl) + double precision :: r_mat(3,3) + call r_phi_theta_psi_matrix(phi,theta,psi,r_mat) + call get_AB_prod(r_mat,3,3,nucl_centers,n_nucl,nucl_centers_after) + +end + + +subroutine r_phi_theta_psi_matrix(phi,theta,psi,r_mat) + implicit none + BEGIN_DOC + ! routine that creates the rotation matrix corresponding to phi,theta,psi + ! + ! according to conventions in MDFT code + END_DOC + double precision, intent(in) :: phi,theta,psi + double precision, intent(out):: r_mat(3,3) + double precision :: ctheta, stheta + double precision :: cphi , sphi + double precision :: cpsi , spsi + ctheta = dcos(theta) + cphi = dcos(phi) + cpsi = dcos(psi) + + stheta = dsin(theta) + sphi = dsin(phi) + spsi = dsin(psi) + + r_mat(1,1) = ctheta*cphi*cpsi-sphi*spsi + r_mat(1,2) = -ctheta*cphi*spsi-sphi*cpsi + r_mat(1,3) = stheta*cphi + + r_mat(2,1) = ctheta*sphi*cpsi+cphi*spsi + r_mat(2,2) = -ctheta*sphi*spsi+cphi*cpsi + r_mat(2,3) = stheta*sphi + + r_mat(3,1) = -stheta*cpsi + r_mat(3,2) = stheta*spsi + r_mat(3,3) = ctheta + +end diff --git a/plugins/local/ao_extra_basis/uninstall b/plugins/local/ao_extra_basis/uninstall index ff7f8c6ae..0e4cd253b 100755 --- a/plugins/local/ao_extra_basis/uninstall +++ b/plugins/local/ao_extra_basis/uninstall @@ -9,7 +9,7 @@ then fi # list of the scripts to be used by the module -scripts_list="qp_copy_extra_basis" +scripts_list="qp_copy_extra_basis qp_add_extra_fit_system qp_copy_extra_basis_to_usual_basis qp_fit_1s_basis" # Destroy ONLY the symbolic link for the scripts to be used in the # ${QP_ROOT}/scripts/ directory. diff --git a/plugins/local/extra_nuclei/EZFIO.cfg b/plugins/local/extra_nuclei/EZFIO.cfg index e09a7dfd3..8c04b4c77 100644 --- a/plugins/local/extra_nuclei/EZFIO.cfg +++ b/plugins/local/extra_nuclei/EZFIO.cfg @@ -3,6 +3,12 @@ doc: Number of nuclei type: integer interface: ezfio, provider +[extra_nucl_pouet] +doc: Number of nuclei +type: integer +interface: ezfio, provider, ocaml +default:1 + [extra_nucl_label] doc: Nuclear labels type: character*(32) @@ -21,3 +27,30 @@ type: double precision size: (extra_nuclei.extra_nucl_num,3) interface: ezfio +[extra_nucl_real_num] +doc: Number of real nuclei +type: integer +interface: ezfio, provider + +[extra_nucl_fictious_num] +doc: Number of fictious nuclei +type: integer +interface: ezfio, provider + +[extra_nucl_real_fictious_list] +doc: List of real nuclei to which fictious nuclei are attached to +type: integer +size: (extra_nuclei.extra_nucl_fictious_num) +interface: ezfio, provider + +[extra_nucl_fictious_list] +doc: List of fictious nuclei +type: integer +size: (extra_nuclei.extra_nucl_fictious_num) +interface: ezfio, provider + +[extra_nucl_real_list] +doc: List of real nuclei +type: integer +size: (extra_nuclei.extra_nucl_real_num) +interface: ezfio, provider diff --git a/src/aux_quantities/EZFIO.cfg b/src/aux_quantities/EZFIO.cfg index 6b4bd0f23..3f6d7783e 100644 --- a/src/aux_quantities/EZFIO.cfg +++ b/src/aux_quantities/EZFIO.cfg @@ -38,3 +38,10 @@ type: double precision size: (ao_basis.ao_num,ao_basis.ao_num,determinants.n_states) +[data_one_e_dm_tot_ao] +interface: ezfio, provider +doc: TOTAL (Alpha+Beta) one body density matrix on the |AO| basis computed with the wave function +type: double precision +size: (ao_basis.ao_num,ao_basis.ao_num,determinants.n_states) + + diff --git a/src/kohn_sham/print_mos.irp.f b/src/kohn_sham/print_mos.irp.f index 19bb98bc0..447189648 100644 --- a/src/kohn_sham/print_mos.irp.f +++ b/src/kohn_sham/print_mos.irp.f @@ -1,24 +1,41 @@ program print_mos implicit none integer :: i,nx - double precision :: r(3), xmax, dx, accu - double precision, allocatable :: mos_array(:) - double precision:: alpha,envelop,dm_a,dm_b - allocate(mos_array(mo_num)) - xmax = 5.d0 - nx = 1000 - dx=xmax/dble(nx) - r = 0.d0 - alpha = 0.5d0 + print*,ao_kinetic_integrals(1,1) + double precision :: xmin,xmax,dx,x,accu,gtt,g,alpha,pi,accu_norm + pi = dacos(-1.d0) + alpha = 2.D0 + xmin=0.d0 + xmax=5.D0 + nx=10000 + dx=(xmax-xmin)/dble(nx) + x = 0.d0 + accu = 0.d0 + accu_norm = 0.d0 do i = 1, nx - call dm_dft_alpha_beta_at_r(r,dm_a,dm_b) - call give_all_mos_at_r(r,mos_array) - accu = mos_array(3)**2+mos_array(4)**2+mos_array(5)**2 - accu = dsqrt(accu) - envelop = (1.d0 - dexp(-alpha * r(3)**2)) - write(33,'(100(F16.10,X))')r(3), mos_array(1), mos_array(2), accu, dm_a+dm_b, envelop - r(3) += dx + accu += g(x,alpha)*gtt(x,alpha)*x**2 * dx + accu_norm += g(x,alpha)**2*x**2 * dx + write(33,*)x,g(x,alpha),gtt(x,alpha) + x+=dx enddo + accu=accu * 4.d0 * pi + accu_norm *= 4.d0 * pi + print*,'accu_norm = ',accu_norm + accu*=-0.5D0 + print*,'accu = ',accu/accu_norm +end + + +double precision function gtt(x,alpha) + implicit none + double precision, intent(in) :: x,alpha + gtt = dexp(-alpha*x*x) * (4.D0*alpha**2*x**2 - 4.d0 * alpha) end +double precision function g(x,alpha) + implicit none + double precision, intent(in) :: x,alpha + g = dexp(-alpha*x*x) + +end diff --git a/src/tools/save_one_e_dm.irp.f b/src/tools/save_one_e_dm.irp.f index c888f55c2..c206343b3 100644 --- a/src/tools/save_one_e_dm.irp.f +++ b/src/tools/save_one_e_dm.irp.f @@ -27,4 +27,5 @@ subroutine routine_save_one_e_dm call ezfio_set_aux_quantities_data_one_e_dm_beta_mo(one_e_dm_mo_beta) call ezfio_set_aux_quantities_data_one_e_dm_alpha_ao(one_e_dm_ao_alpha) call ezfio_set_aux_quantities_data_one_e_dm_beta_ao(one_e_dm_ao_beta) + call ezfio_set_aux_quantities_data_one_e_dm_tot_ao(one_e_dm_ao) end