9
1
mirror of https://github.com/QuantumPackage/qp2.git synced 2025-04-25 17:54:44 +02:00

Merge branch 'dev-stable' of github.com:QuantumPackage/qp2 into dev-stable

This commit is contained in:
Anthony Scemama 2024-12-16 17:13:44 +01:00
commit f6661b64c3
100 changed files with 19877 additions and 7657 deletions

View File

@ -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

View File

@ -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}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -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`

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -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:

View File

@ -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`

File diff suppressed because it is too large Load Diff

View File

@ -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

View File

@ -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

File diff suppressed because it is too large Load Diff

View File

@ -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
---------

View File

@ -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

File diff suppressed because it is too large Load Diff

View File

@ -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`

View File

@ -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:

View File

@ -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`
Called by:
.. hlist::
:columns: 3
* :c:func:`run_cipsi`
* :c:func:`run_stochastic_cipsi`
* :c:data:`read_wf`
Calls:
.. hlist::
:columns: 3
* :c:func:`ezfio_set_fci_energy`
* :c:func:`ezfio_set_fci_energy_pt2`
* :c:func:`routine`
Touches:
.. hlist::
:columns: 3
* :c:data:`read_wf`

View File

@ -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`

View File

@ -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`

View File

@ -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`

View File

@ -13,34 +13,33 @@ 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:: energy_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`
.. c:var:: extrapolated_energy
@ -48,10 +47,96 @@ Providers
.. 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:`n_iter_max`
* :c:data:`n_states`
.. 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:`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:: increment_n_iter:
File : :file:`iterations/iterations.irp.f`
.. code:: fortran
subroutine increment_n_iter(e, pt2_data)
Does what is necessary to increment n_iter
Needs:
@ -61,45 +146,25 @@ Providers
* :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
File : :file:`iterations/io.irp.f`
.. code:: fortran
integer :: n_iter
number of iterations
Needs:
Called by:
.. hlist::
:columns: 3
* :c:data:`ezfio_filename`
* :c:data:`mpi_master`
* :c:data:`n_states`
* :c:data:`output_wall_time_0`
* :c:func:`run_cipsi`
* :c:func:`run_stochastic_cipsi`
Needed by:
Calls:
.. hlist::
:columns: 3
* :c:data:`extrapolated_energy`
* :c:func:`extrapolate_data`
Subroutines / functions
-----------------------
.. c:function:: print_extrapolated_energy:
@ -117,11 +182,10 @@ Subroutines / functions
.. hlist::
:columns: 3
* :c:data:`extrapolated_energy`
* :c:data:`energy_iterations`
* :c:data:`n_det`
* :c:data:`n_iter`
* :c:data:`n_states`
* :c:data:`pt2_iterations`
Called by:
@ -139,7 +203,7 @@ Subroutines / functions
.. code:: fortran
subroutine print_summary(e_,pt2_data,pt2_data_err,n_det_,n_occ_pattern_,n_st,s2_)
subroutine print_summary(e_,pt2_data,pt2_data_err,n_det_,n_configuration_,n_st,s2_)
Print the extrapolated energy in the output
@ -150,6 +214,8 @@ Subroutines / functions
:columns: 3
* :c:data:`do_pt2`
* :c:data:`nsomomax`
* :c:data:`only_expected_s2`
* :c:data:`s2_eig`
Called by:
@ -160,59 +226,26 @@ 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_tc:
File : :file:`iterations/iterations.irp.f`
File : :file:`iterations/summary_tc.irp.f`
.. code:: fortran
subroutine save_iterations(e_, pt2_,n_)
subroutine print_summary_tc(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`
Called by:
.. hlist::
:columns: 3
* :c:func:`run_cipsi`
* :c:func:`run_stochastic_cipsi`
Calls:
.. hlist::
:columns: 3
* :c:func:`ezfio_set_iterations_energy_iterations`
* :c:func:`ezfio_set_iterations_n_det_iterations`
* :c:func:`ezfio_set_iterations_n_iter`
* :c:func:`ezfio_set_iterations_pt2_iterations`
Touches:
.. hlist::
:columns: 3
* :c:data:`n_iter`
* :c:data:`do_pt2`
* :c:data:`nsomomax`
* :c:data:`only_expected_s2`
* :c:data:`s2_eig`

View File

@ -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`

View File

@ -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`

View File

@ -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`

View File

@ -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:`mo_label`
* :c:data:`mo_one_e_integrals`
* :c:data:`ao_num`
* :c:data:`mo_coef`
* :c:data:`mo_label`
* :c:data:`mo_num`
* :c:data:`mo_one_e_integrals`
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:

View File

@ -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 - <MO_i|x|MO_j>^2) MO_j = MO_i x^2 MO_j - (MO_i x MO_j)^2
array of the integrals of MO_i * (y^2 - <MO_i|y|MO_j>^2) MO_j = MO_i y^2 MO_j - (MO_i y MO_j)^2
array of the integrals of MO_i * (z^2 - <MO_i|z|MO_j>^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 - <MO_i|x|MO_j>^2) MO_j = MO_i x^2 MO_j - (MO_i x MO_j)^2
array of the integrals of MO_i * (y^2 - <MO_i|y|MO_j>^2) MO_j = MO_i y^2 MO_j - (MO_i y MO_j)^2
array of the integrals of MO_i * (z^2 - <MO_i|z|MO_j>^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 - <MO_i|x|MO_j>^2) MO_j = MO_i x^2 MO_j - (MO_i x MO_j)^2
array of the integrals of MO_i * (y^2 - <MO_i|y|MO_j>^2) MO_j = MO_i y^2 MO_j - (MO_i y MO_j)^2
array of the integrals of MO_i * (z^2 - <MO_i|z|MO_j>^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:

File diff suppressed because it is too large Load Diff

View File

@ -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

View File

@ -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

View File

@ -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`

View File

@ -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

View File

@ -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
F = 1/2 (Fa + Fb)
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
K = Fb - Fa
F^a: Fock matrix alpha (MO), F^b: Fock matrix beta (MO)
A,B: Coupling parameters
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
F = 1/2 (Fa + Fb)
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
K = Fb - Fa
F^a: Fock matrix alpha (MO), F^b: Fock matrix beta (MO)
A,B: Coupling parameters
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`

View File

@ -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:

View File

@ -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.
Needs:
.. hlist::
:columns: 3
* :c:data:`n_states`
* :c:data:`read_wf`
Calls:
.. hlist::
:columns: 3
* :c:func:`run`
Touches:
.. hlist::
:columns: 3
* :c:data:`read_wf`
.. c:function:: print_hamiltonian:
File : :file:`print_hamiltonian.irp.f`
.. code:: fortran
subroutine print_hamiltonian
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
Called by:
.. hlist::
:columns: 3
* :c:func:`diagonalize_h`
* :c:func:`print_ci_vectors`
* :c:func:`print_wf`
* :c:func:`write_integrals_erf`
Calls:
.. hlist::
:columns: 3
* :c:func:`save_erf_two_e_integrals_ao`
* :c:func:`save_erf_two_e_integrals_mo`
.. c:function:: routine_e_conv:
File : :file:`print_e_conv.irp.f`
.. code:: fortran
subroutine routine_e_conv
routine called by :c:func:`print_e_conv`
Produces a Molden file
Needs:
.. hlist::
:columns: 3
* :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_states`
* :c:data:`n_attachment`
* :c:data:`nucl_charge`
* :c:data:`nucl_coord`
* :c:data:`nucl_list_shell_aos`
* :c:data:`nucl_num`
Called by:
.. hlist::
:columns: 3
* :c:func:`print_e_conv`
* :c:func:`attachement_orb`
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:`isort`
.. c:function:: print_exc:
File : :file:`print_detweights.irp.f`
.. code:: fortran
subroutine print_exc()
Needs:
.. hlist::
:columns: 3
* :c:data:`n_det`
* :c:data:`n_int`
* :c:data:`psi_det`
Called by:
.. hlist::
:columns: 3
* :c:func:`print_detweights`
Calls:
.. hlist::
:columns: 3
* :c:func:`get_excitation_degree`
.. c:function:: routine_s2:
File : :file:`truncate_wf.irp.f`
.. code:: fortran
subroutine routine_s2
Needs:
.. hlist::
:columns: 3
* :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:`truncate_wf`
Calls:
.. hlist::
:columns: 3
* :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`

File diff suppressed because it is too large Load Diff

View File

@ -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:

File diff suppressed because it is too large Load Diff

View File

@ -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`

View File

@ -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`

View File

@ -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`

View File

@ -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`

View File

@ -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`

View File

@ -25,6 +25,7 @@ save_natorb
.. hlist::
:columns: 3
* :c:data:`nucl_coord`
* :c:data:`read_wf`
Calls:

View File

@ -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`

View File

@ -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;;

View File

@ -0,0 +1,104 @@
[ao_extra_basis]
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|
interface: ezfio, provider
[ao_extra_prim_num]
type: integer
doc: Number of primitives per |ao_extra|
size: (ao_extra_basis.ao_extra_num)
interface: ezfio, provider
[ao_extra_prim_num_max]
type: integer
doc: Maximum number of primitives
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: (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: (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: (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: (ao_extra_basis.ao_extra_num,ao_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: (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,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,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

View File

@ -0,0 +1,4 @@
2
H 0. 0. 0.
Li 0. 0. 1.0

View File

@ -0,0 +1,3 @@
extra_nuclei
basis
ao_basis

View File

@ -0,0 +1,15 @@
===========
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.

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -0,0 +1,16 @@
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
print*,ao_extra_num
end

View File

@ -0,0 +1,41 @@
program fit_1s_basis
implicit none
provide lmax_too_big
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
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)
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

View File

@ -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

View File

@ -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 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.
for i in $scripts_list
do
ln --symbolic ${currdir}/$i ${QP_ROOT}/scripts/
done

View File

@ -0,0 +1,266 @@
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
! 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
print*,'n_2p_func_tot = ',n_2p_func_tot
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, 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 [ integer, list_real_nucl, (nucl_num) ]
&BEGIN_PROVIDER [ integer, list_fict_nucl, (extra_fictious_nucl) ]
implicit none
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
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_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
!
! 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)==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_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 !'
print*,'stopping ...'
stop
endif
enddo
enddo
END_PROVIDER
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,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)
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
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)
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
endif
enddo
enddo
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

View File

@ -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

View File

@ -0,0 +1,67 @@
#!/bin/bash
# specify the QP folder
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%/}
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
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

View File

@ -0,0 +1,57 @@
#!/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
. ${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

View File

@ -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

View File

@ -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

View File

@ -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 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.
for i in $scripts_list
do
find ${QP_ROOT}/scripts/$i -type l -delete
done

View File

@ -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

View File

@ -0,0 +1,18 @@
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
print*,'mu_average_prov = ',mu_average_prov
end

View File

@ -0,0 +1,3 @@
ao_extra_basis
ao_one_e_ints
ao_two_e_ints

View File

@ -0,0 +1,4 @@
===============
extra_basis_int
===============

View File

@ -0,0 +1,189 @@
! ---
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:
!
! <AO_i|AO_j extra basis>
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
! ---
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

View File

@ -0,0 +1,124 @@
program extra_basis_int
implicit none
BEGIN_DOC
! TODO : Put the documentation of the program here
END_DOC
! call test_overlap
! call routine_test_pot_ne
! 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
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
subroutine routine_test_pot_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
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

View File

@ -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
! ---

View File

@ -0,0 +1,115 @@
program pouet
implicit none
! call ref_overlap
! call ref_pot
! 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
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
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
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

View File

@ -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

View File

@ -0,0 +1,56 @@
[extra_nucl_num]
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)
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
[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

View File

@ -0,0 +1,3 @@
ezfio_files
utils
nuclei

View File

@ -0,0 +1,4 @@
============
extra_nuclei
============

View File

@ -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

View File

@ -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

View File

@ -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.

View File

@ -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;

View File

@ -282,3 +282,23 @@ END_PROVIDER
! ---
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
! ---

View File

@ -1672,5 +1672,3 @@ recursive subroutine I_x2_pol_mult_cgtos(c, B_10, B_01, B_00, C_00, D_00, d, nd,
end
! ---

View File

@ -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)

View File

@ -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
@ -16,4 +16,5 @@ end
subroutine routine
implicit none
provide total_cas_on_top_density
provide average_on_top
end

View File

@ -74,3 +74,17 @@
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

View File

@ -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.

View File

@ -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

View File

@ -64,3 +64,12 @@ BEGIN_PROVIDER [ double precision, S_mo_coef, (ao_num, mo_num) ]
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

View File

@ -1,4 +1,4 @@
program projected_operators
program test_proj_op
implicit none
BEGIN_DOC
! TODO

View File

@ -201,6 +201,9 @@ BEGIN_PROVIDER [ double precision, nuclear_repulsion ]
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

View File

@ -1,4 +1,4 @@
program molden_detachment_attachment
program attachement_orb
implicit none
read_wf=.True.
touch read_wf

View File

@ -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|

View File

@ -1,3 +0,0 @@
program hcore_guess_prog
call hcore_guess
end

View File

@ -1,5 +0,0 @@
program pouet
implicit none
call huckel_guess
end

View File

@ -1,4 +1,4 @@
program sort_wf
program print_sorted_wf_coef
implicit none
read_wf =.True.
call routine

View File

@ -1,4 +1,4 @@
program save_natorb
program save_natorb_no_ov_rot
implicit none
BEGIN_DOC
! Save natural |MOs| into the |EZFIO|.

View File

@ -1,4 +1,4 @@
program save_natorb
program save_natorb_no_ref
implicit none
BEGIN_DOC
! Save natural |MOs| into the |EZFIO|.

View File

@ -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

View File

@ -1,4 +1,4 @@
program import_integrals_ao
program import_trexio_integrals
use trexio
implicit none
integer(trexio_t) :: f ! TREXIO file handle