10
0
mirror of https://github.com/LCPQ/quantum_package synced 2024-06-02 11:25:26 +02:00

renaming massive on one e density

This commit is contained in:
Emmanuel Giner 2019-01-09 19:16:58 +01:00
parent e327757118
commit c53b3ebade
37 changed files with 775 additions and 661 deletions

36
REPLACE
View File

@ -144,3 +144,39 @@ qp_name ao_bi_elec_integral_beta -r ao_two_e_integral_beta
qp_name ao_bi_elec_integral_alpha -r ao_two_e_integral_alpha qp_name ao_bi_elec_integral_alpha -r ao_two_e_integral_alpha
qp_name ao_bi_elec_integral_alpha_tmp -r ao_two_e_integral_alpha_tmp qp_name ao_bi_elec_integral_alpha_tmp -r ao_two_e_integral_alpha_tmp
qp_name ao_bi_elec_integral_beta_tmp -r ao_two_e_integral_beta_tmp qp_name ao_bi_elec_integral_beta_tmp -r ao_two_e_integral_beta_tmp
qp_name data_one_body_alpha_dm_mo -r data_one_body_dm_alpha_mo
qp_name data_one_body_beta_dm_mo -r data_one_body_dm_beta_mo
qp_name one_body_dm_alpha_ao_for_dft -r one_e_dm_alpha_ao_for_dft
qp_name one_body_dm_alpha_at_r -r one_e_dm_alpha_at_r
qp_name one_body_dm_ao_alpha -r one_e_dm_ao_alpha
qp_name one_body_dm_ao_beta -r one_e_dm_ao_beta
qp_name one_body_dm_average_mo_for_dft -r one_e_dm_average_mo_for_dft
qp_name one_body_dm_beta_ao_for_dft -r one_e_dm_beta_ao_for_dft
qp_name one_body_dm_beta_at_r -r one_e_dm_beta_at_r
qp_name one_body_dm_dagger_mo_spin_index -r one_e_dm_dagger_mo_spin_index
qp_name one_body_dm_mo -r one_e_dm_mo
qp_name one_body_dm_mo_alpha -r one_e_dm_mo_alpha
qp_name one_body_dm_mo_alpha_average -r one_e_dm_mo_alpha_average
qp_name one_body_dm_mo_alpha_for_dft -r one_e_dm_mo_alpha_for_dft
qp_name one_body_dm_mo_beta -r one_e_dm_mo_beta
qp_name one_body_dm_mo_beta_average -r one_e_dm_mo_beta_average
qp_name one_body_dm_mo_beta_for_dft -r one_e_dm_mo_beta_for_dft
qp_name one_body_dm_mo_diff -r one_e_dm_mo_diff
qp_name one_body_dm_mo_for_dft -r one_e_dm_mo_for_dft
qp_name one_body_dm_mo_spin_index -r one_e_dm_mo_spin_index
qp_name one_body_grad_2_dm_alpha_at_r -r one_e_grad_2_dm_alpha_at_r
qp_name one_body_grad_2_dm_beta_at_r -r one_e_grad_2_dm_beta_at_r
qp_name one_body_spin_density_ao -r one_e_spin_density_ao
qp_name one_body_spin_density_mo -r one_e_spin_density_mo
qp_name one_electron_energy -r one_e_energy
qp_name one_dm_alpha_in_r -r one_e_dm_alpha_in_r
qp_name one_dm_and_grad_alpha_in_r -r one_e_dm_and_grad_alpha_in_r
qp_name one_dm_and_grad_beta_in_r -r one_e_dm_and_grad_beta_in_r
qp_name one_dm_beta_in_r -r one_e_dm_beta_in_r
qp_name ezfio_set_aux_quantities_data_one_body_alpha_dm_mo -r ezfio_set_aux_quantities_data_one_e_alpha_dm_mo
qp_name ezfio_set_aux_quantities_data_one_body_beta_dm_mo -r ezfio_set_aux_quantities_data_one_e_beta_dm_mo
qp_name data_one_body_dm_alpha_mo -r data_one_e_dm_alpha_mo
qp_name data_one_body_dm_beta_mo -r data_one_e_dm_beta_mo
qp_name save_one_body_dm -r save_one_e_dm
qp_name ezfio_set_aux_quantities_data_one_e_alpha_dm_mo -r ezfio_set_aux_quantities_data_one_e_dm_alpha_mo
qp_name ezfio_set_aux_quantities_data_one_e_beta_dm_mo -r ezfio_set_aux_quantities_data_one_e_dm_beta_mo

View File

@ -18,7 +18,7 @@ on the density in order to speed up convergence.
The main providers of that module are: The main providers of that module are:
* `data_one_body_alpha_dm_mo` and `data_one_body_beta_dm_mo` which are the * `data_one_e_dm_alpha_mo` and `data_one_e_dm_beta_mo` which are the
one-body alpha and beta densities which are necessary read from the EZFIO one-body alpha and beta densities which are necessary read from the EZFIO
folder. folder.
@ -41,12 +41,12 @@ EZFIO parameters
Projected energy computed with the wave function Projected energy computed with the wave function
.. option:: data_one_body_alpha_dm_mo .. option:: data_one_e_dm_alpha_mo
Alpha one body density matrix on the MO basis computed with the wave function Alpha one body density matrix on the |MO| basis computed with the wave function
.. option:: data_one_body_beta_dm_mo .. option:: data_one_e_dm_beta_mo
Beta one body density matrix on the MO basis computed with the wave function Beta one body density matrix on the |MO| basis computed with the wave function

View File

@ -755,6 +755,20 @@ Subroutines / functions
.. c:function:: remove_duplicates_in_selection_buffer
.. code:: text
subroutine remove_duplicates_in_selection_buffer(b)
File: :file:`selection_buffer.irp.f`
.. c:function:: run_cipsi .. c:function:: run_cipsi
.. code:: text .. code:: text

View File

@ -449,7 +449,7 @@ Subroutines / functions
subroutine H_S2_u_0_nstates_openmp_work_1(v_t,s_t,u_t,N_st,sze,istart,iend,ishift,istep) subroutine H_S2_u_0_nstates_openmp_work_1(v_t,s_t,u_t,N_st,sze,istart,iend,ishift,istep)
File: :file:`u0_h_u0.irp.f_template_468` File: :file:`u0_h_u0.irp.f_template_477`
Computes :math:`v_t = H|u_t angle` and :math:`s_t = S^2 |u_t angle` Computes :math:`v_t = H|u_t angle` and :math:`s_t = S^2 |u_t angle`
@ -465,7 +465,7 @@ Subroutines / functions
subroutine H_S2_u_0_nstates_openmp_work_2(v_t,s_t,u_t,N_st,sze,istart,iend,ishift,istep) subroutine H_S2_u_0_nstates_openmp_work_2(v_t,s_t,u_t,N_st,sze,istart,iend,ishift,istep)
File: :file:`u0_h_u0.irp.f_template_468` File: :file:`u0_h_u0.irp.f_template_477`
Computes :math:`v_t = H|u_t angle` and :math:`s_t = S^2 |u_t angle` Computes :math:`v_t = H|u_t angle` and :math:`s_t = S^2 |u_t angle`
@ -481,7 +481,7 @@ Subroutines / functions
subroutine H_S2_u_0_nstates_openmp_work_3(v_t,s_t,u_t,N_st,sze,istart,iend,ishift,istep) subroutine H_S2_u_0_nstates_openmp_work_3(v_t,s_t,u_t,N_st,sze,istart,iend,ishift,istep)
File: :file:`u0_h_u0.irp.f_template_468` File: :file:`u0_h_u0.irp.f_template_477`
Computes :math:`v_t = H|u_t angle` and :math:`s_t = S^2 |u_t angle` Computes :math:`v_t = H|u_t angle` and :math:`s_t = S^2 |u_t angle`
@ -497,7 +497,7 @@ Subroutines / functions
subroutine H_S2_u_0_nstates_openmp_work_4(v_t,s_t,u_t,N_st,sze,istart,iend,ishift,istep) subroutine H_S2_u_0_nstates_openmp_work_4(v_t,s_t,u_t,N_st,sze,istart,iend,ishift,istep)
File: :file:`u0_h_u0.irp.f_template_468` File: :file:`u0_h_u0.irp.f_template_477`
Computes :math:`v_t = H|u_t angle` and :math:`s_t = S^2 |u_t angle` Computes :math:`v_t = H|u_t angle` and :math:`s_t = S^2 |u_t angle`
@ -513,7 +513,7 @@ Subroutines / functions
subroutine H_S2_u_0_nstates_openmp_work_N_int(v_t,s_t,u_t,N_st,sze,istart,iend,ishift,istep) subroutine H_S2_u_0_nstates_openmp_work_N_int(v_t,s_t,u_t,N_st,sze,istart,iend,ishift,istep)
File: :file:`u0_h_u0.irp.f_template_468` File: :file:`u0_h_u0.irp.f_template_477`
Computes :math:`v_t = H|u_t angle` and :math:`s_t = S^2 |u_t angle` Computes :math:`v_t = H|u_t angle` and :math:`s_t = S^2 |u_t angle`

View File

@ -39,25 +39,53 @@ Providers
--------- ---------
.. c:var:: one_body_dm_alpha_ao_for_dft .. c:var:: one_body_dm_mo_alpha_one_det
.. code:: text .. code:: text
double precision, allocatable :: one_body_dm_alpha_ao_for_dft (ao_num,ao_num,N_states) double precision, allocatable :: one_body_dm_mo_alpha_one_det (mo_num,mo_num,N_states)
double precision, allocatable :: one_body_dm_beta_ao_for_dft (ao_num,ao_num,N_states) double precision, allocatable :: one_body_dm_mo_beta_one_det (mo_num,mo_num,N_states)
File: :file:`density_for_dft.irp.f` File: :file:`density_for_dft.irp.f`
one body density matrix on the AO basis based on one_body_dm_mo_alpha_for_dft One body density matrix on the |MO| basis for a single determinant
.. c:var:: one_body_dm_average_mo_for_dft .. c:var:: one_body_dm_mo_beta_one_det
.. code:: text .. code:: text
double precision, allocatable :: one_body_dm_average_mo_for_dft (mo_num,mo_num) double precision, allocatable :: one_body_dm_mo_alpha_one_det (mo_num,mo_num,N_states)
double precision, allocatable :: one_body_dm_mo_beta_one_det (mo_num,mo_num,N_states)
File: :file:`density_for_dft.irp.f`
One body density matrix on the |MO| basis for a single determinant
.. c:var:: one_e_dm_alpha_ao_for_dft
.. code:: text
double precision, allocatable :: one_e_dm_alpha_ao_for_dft (ao_num,ao_num,N_states)
double precision, allocatable :: one_e_dm_beta_ao_for_dft (ao_num,ao_num,N_states)
File: :file:`density_for_dft.irp.f`
one body density matrix on the AO basis based on one_e_dm_mo_alpha_for_dft
.. c:var:: one_e_dm_average_mo_for_dft
.. code:: text
double precision, allocatable :: one_e_dm_average_mo_for_dft (mo_num,mo_num)
File: :file:`density_for_dft.irp.f` File: :file:`density_for_dft.irp.f`
@ -66,25 +94,25 @@ Providers
.. c:var:: one_body_dm_beta_ao_for_dft .. c:var:: one_e_dm_beta_ao_for_dft
.. code:: text .. code:: text
double precision, allocatable :: one_body_dm_alpha_ao_for_dft (ao_num,ao_num,N_states) double precision, allocatable :: one_e_dm_alpha_ao_for_dft (ao_num,ao_num,N_states)
double precision, allocatable :: one_body_dm_beta_ao_for_dft (ao_num,ao_num,N_states) double precision, allocatable :: one_e_dm_beta_ao_for_dft (ao_num,ao_num,N_states)
File: :file:`density_for_dft.irp.f` File: :file:`density_for_dft.irp.f`
one body density matrix on the AO basis based on one_body_dm_mo_alpha_for_dft one body density matrix on the AO basis based on one_e_dm_mo_alpha_for_dft
.. c:var:: one_body_dm_mo_alpha_for_dft .. c:var:: one_e_dm_mo_alpha_for_dft
.. code:: text .. code:: text
double precision, allocatable :: one_body_dm_mo_alpha_for_dft (mo_num,mo_num,N_states) double precision, allocatable :: one_e_dm_mo_alpha_for_dft (mo_num,mo_num,N_states)
File: :file:`density_for_dft.irp.f` File: :file:`density_for_dft.irp.f`
@ -93,11 +121,11 @@ Providers
.. c:var:: one_body_dm_mo_beta_for_dft .. c:var:: one_e_dm_mo_beta_for_dft
.. code:: text .. code:: text
double precision, allocatable :: one_body_dm_mo_beta_for_dft (mo_num,mo_num,N_states) double precision, allocatable :: one_e_dm_mo_beta_for_dft (mo_num,mo_num,N_states)
File: :file:`density_for_dft.irp.f` File: :file:`density_for_dft.irp.f`
@ -106,11 +134,11 @@ Providers
.. c:var:: one_body_dm_mo_for_dft .. c:var:: one_e_dm_mo_for_dft
.. code:: text .. code:: text
double precision, allocatable :: one_body_dm_mo_for_dft (mo_num,mo_num,N_states) double precision, allocatable :: one_e_dm_mo_for_dft (mo_num,mo_num,N_states)
File: :file:`density_for_dft.irp.f` File: :file:`density_for_dft.irp.f`

View File

@ -451,7 +451,7 @@ Providers
integer(bit_kind), allocatable :: psi_det_alpha_unique (N_int,psi_det_size) integer(bit_kind), allocatable :: psi_det_alpha_unique (N_int,psi_det_size)
integer :: n_det_alpha_unique integer :: n_det_alpha_unique
File: :file:`spindeterminants.irp.f_template_141` File: :file:`spindeterminants.irp.f_template_143`
Unique :math:`\alpha` determinants Unique :math:`\alpha` determinants
@ -465,7 +465,7 @@ Providers
integer(bit_kind), allocatable :: psi_det_beta_unique (N_int,psi_det_size) integer(bit_kind), allocatable :: psi_det_beta_unique (N_int,psi_det_size)
integer :: n_det_beta_unique integer :: n_det_beta_unique
File: :file:`spindeterminants.irp.f_template_141` File: :file:`spindeterminants.irp.f_template_143`
Unique :math:`\beta` determinants Unique :math:`\beta` determinants
@ -550,12 +550,12 @@ Providers
.. c:var:: one_body_dm_ao_alpha .. c:var:: one_e_dm_ao_alpha
.. code:: text .. code:: text
double precision, allocatable :: one_body_dm_ao_alpha (ao_num,ao_num) double precision, allocatable :: one_e_dm_ao_alpha (ao_num,ao_num)
double precision, allocatable :: one_body_dm_ao_beta (ao_num,ao_num) double precision, allocatable :: one_e_dm_ao_beta (ao_num,ao_num)
File: :file:`density_matrix.irp.f` File: :file:`density_matrix.irp.f`
@ -564,12 +564,12 @@ Providers
.. c:var:: one_body_dm_ao_beta .. c:var:: one_e_dm_ao_beta
.. code:: text .. code:: text
double precision, allocatable :: one_body_dm_ao_alpha (ao_num,ao_num) double precision, allocatable :: one_e_dm_ao_alpha (ao_num,ao_num)
double precision, allocatable :: one_body_dm_ao_beta (ao_num,ao_num) double precision, allocatable :: one_e_dm_ao_beta (ao_num,ao_num)
File: :file:`density_matrix.irp.f` File: :file:`density_matrix.irp.f`
@ -578,11 +578,11 @@ Providers
.. c:var:: one_body_dm_dagger_mo_spin_index .. c:var:: one_e_dm_dagger_mo_spin_index
.. code:: text .. code:: text
double precision, allocatable :: one_body_dm_dagger_mo_spin_index (mo_num,mo_num,N_states,2) double precision, allocatable :: one_e_dm_dagger_mo_spin_index (mo_num,mo_num,N_states,2)
File: :file:`density_matrix.irp.f` File: :file:`density_matrix.irp.f`
@ -591,11 +591,11 @@ Providers
.. c:var:: one_body_dm_mo .. c:var:: one_e_dm_mo
.. code:: text .. code:: text
double precision, allocatable :: one_body_dm_mo (mo_num,mo_num) double precision, allocatable :: one_e_dm_mo (mo_num,mo_num)
File: :file:`density_matrix.irp.f` File: :file:`density_matrix.irp.f`
@ -604,12 +604,12 @@ Providers
.. c:var:: one_body_dm_mo_alpha .. c:var:: one_e_dm_mo_alpha
.. code:: text .. code:: text
double precision, allocatable :: one_body_dm_mo_alpha (mo_num,mo_num,N_states) double precision, allocatable :: one_e_dm_mo_alpha (mo_num,mo_num,N_states)
double precision, allocatable :: one_body_dm_mo_beta (mo_num,mo_num,N_states) double precision, allocatable :: one_e_dm_mo_beta (mo_num,mo_num,N_states)
File: :file:`density_matrix.irp.f` File: :file:`density_matrix.irp.f`
@ -618,12 +618,12 @@ Providers
.. c:var:: one_body_dm_mo_alpha_average .. c:var:: one_e_dm_mo_alpha_average
.. code:: text .. code:: text
double precision, allocatable :: one_body_dm_mo_alpha_average (mo_num,mo_num) double precision, allocatable :: one_e_dm_mo_alpha_average (mo_num,mo_num)
double precision, allocatable :: one_body_dm_mo_beta_average (mo_num,mo_num) double precision, allocatable :: one_e_dm_mo_beta_average (mo_num,mo_num)
File: :file:`density_matrix.irp.f` File: :file:`density_matrix.irp.f`
@ -632,12 +632,12 @@ Providers
.. c:var:: one_body_dm_mo_beta .. c:var:: one_e_dm_mo_beta
.. code:: text .. code:: text
double precision, allocatable :: one_body_dm_mo_alpha (mo_num,mo_num,N_states) double precision, allocatable :: one_e_dm_mo_alpha (mo_num,mo_num,N_states)
double precision, allocatable :: one_body_dm_mo_beta (mo_num,mo_num,N_states) double precision, allocatable :: one_e_dm_mo_beta (mo_num,mo_num,N_states)
File: :file:`density_matrix.irp.f` File: :file:`density_matrix.irp.f`
@ -646,12 +646,12 @@ Providers
.. c:var:: one_body_dm_mo_beta_average .. c:var:: one_e_dm_mo_beta_average
.. code:: text .. code:: text
double precision, allocatable :: one_body_dm_mo_alpha_average (mo_num,mo_num) double precision, allocatable :: one_e_dm_mo_alpha_average (mo_num,mo_num)
double precision, allocatable :: one_body_dm_mo_beta_average (mo_num,mo_num) double precision, allocatable :: one_e_dm_mo_beta_average (mo_num,mo_num)
File: :file:`density_matrix.irp.f` File: :file:`density_matrix.irp.f`
@ -660,11 +660,11 @@ Providers
.. c:var:: one_body_dm_mo_diff .. c:var:: one_e_dm_mo_diff
.. code:: text .. code:: text
double precision, allocatable :: one_body_dm_mo_diff (mo_num,mo_num,2:N_states) double precision, allocatable :: one_e_dm_mo_diff (mo_num,mo_num,2:N_states)
File: :file:`density_matrix.irp.f` File: :file:`density_matrix.irp.f`
@ -673,11 +673,11 @@ Providers
.. c:var:: one_body_dm_mo_spin_index .. c:var:: one_e_dm_mo_spin_index
.. code:: text .. code:: text
double precision, allocatable :: one_body_dm_mo_spin_index (mo_num,mo_num,N_states,2) double precision, allocatable :: one_e_dm_mo_spin_index (mo_num,mo_num,N_states,2)
File: :file:`density_matrix.irp.f` File: :file:`density_matrix.irp.f`
@ -686,39 +686,11 @@ Providers
.. c:var:: one_body_single_double_dm_mo_alpha .. c:var:: one_e_spin_density_ao
.. code:: text .. code:: text
double precision, allocatable :: one_body_single_double_dm_mo_alpha (mo_num,mo_num) double precision, allocatable :: one_e_spin_density_ao (ao_num,ao_num)
double precision, allocatable :: one_body_single_double_dm_mo_beta (mo_num,mo_num)
File: :file:`density_matrix.irp.f`
:math:`\alpha` and :math:`\beta` one-body density matrix for each state
.. c:var:: one_body_single_double_dm_mo_beta
.. code:: text
double precision, allocatable :: one_body_single_double_dm_mo_alpha (mo_num,mo_num)
double precision, allocatable :: one_body_single_double_dm_mo_beta (mo_num,mo_num)
File: :file:`density_matrix.irp.f`
:math:`\alpha` and :math:`\beta` one-body density matrix for each state
.. c:var:: one_body_spin_density_ao
.. code:: text
double precision, allocatable :: one_body_spin_density_ao (ao_num,ao_num)
File: :file:`density_matrix.irp.f` File: :file:`density_matrix.irp.f`
@ -727,11 +699,11 @@ Providers
.. c:var:: one_body_spin_density_mo .. c:var:: one_e_spin_density_mo
.. code:: text .. code:: text
double precision, allocatable :: one_body_spin_density_mo (mo_num,mo_num) double precision, allocatable :: one_e_spin_density_mo (mo_num,mo_num)
File: :file:`density_matrix.irp.f` File: :file:`density_matrix.irp.f`
@ -1215,7 +1187,7 @@ Providers
integer(bit_kind), allocatable :: psi_det_alpha_unique (N_int,psi_det_size) integer(bit_kind), allocatable :: psi_det_alpha_unique (N_int,psi_det_size)
integer :: n_det_alpha_unique integer :: n_det_alpha_unique
File: :file:`spindeterminants.irp.f_template_141` File: :file:`spindeterminants.irp.f_template_143`
Unique :math:`\alpha` determinants Unique :math:`\alpha` determinants
@ -1242,7 +1214,7 @@ Providers
integer(bit_kind), allocatable :: psi_det_beta_unique (N_int,psi_det_size) integer(bit_kind), allocatable :: psi_det_beta_unique (N_int,psi_det_size)
integer :: n_det_beta_unique integer :: n_det_beta_unique
File: :file:`spindeterminants.irp.f_template_141` File: :file:`spindeterminants.irp.f_template_143`
Unique :math:`\beta` determinants Unique :math:`\beta` determinants
@ -1335,7 +1307,7 @@ Providers
psi_energy_h_core = :math:`\langle \Psi | h_{core} |\Psi \rangle` psi_energy_h_core = :math:`\langle \Psi | h_{core} |\Psi \rangle`
computed using the :c:data:`one_body_dm_mo_alpha` + :c:data:`one_body_dm_mo_beta` and :c:data:`mo_one_e_integrals` computed using the :c:data:`one_e_dm_mo_alpha` + :c:data:`one_e_dm_mo_beta` and :c:data:`mo_one_e_integrals`
@ -2337,7 +2309,7 @@ Subroutines / functions
subroutine get_all_spin_doubles_2(buffer, idx, spindet, size_buffer, doubles, n_doubles) subroutine get_all_spin_doubles_2(buffer, idx, spindet, size_buffer, doubles, n_doubles)
File: :file:`spindeterminants.irp.f_template_1218` File: :file:`spindeterminants.irp.f_template_1221`
@ -2355,7 +2327,7 @@ Subroutines / functions
subroutine get_all_spin_doubles_3(buffer, idx, spindet, size_buffer, doubles, n_doubles) subroutine get_all_spin_doubles_3(buffer, idx, spindet, size_buffer, doubles, n_doubles)
File: :file:`spindeterminants.irp.f_template_1218` File: :file:`spindeterminants.irp.f_template_1221`
@ -2373,7 +2345,7 @@ Subroutines / functions
subroutine get_all_spin_doubles_4(buffer, idx, spindet, size_buffer, doubles, n_doubles) subroutine get_all_spin_doubles_4(buffer, idx, spindet, size_buffer, doubles, n_doubles)
File: :file:`spindeterminants.irp.f_template_1218` File: :file:`spindeterminants.irp.f_template_1221`
@ -2391,7 +2363,7 @@ Subroutines / functions
subroutine get_all_spin_doubles_N_int(buffer, idx, spindet, size_buffer, doubles, n_doubles) subroutine get_all_spin_doubles_N_int(buffer, idx, spindet, size_buffer, doubles, n_doubles)
File: :file:`spindeterminants.irp.f_template_1218` File: :file:`spindeterminants.irp.f_template_1221`
@ -2445,7 +2417,7 @@ Subroutines / functions
subroutine get_all_spin_singles_2(buffer, idx, spindet, size_buffer, singles, n_singles) subroutine get_all_spin_singles_2(buffer, idx, spindet, size_buffer, singles, n_singles)
File: :file:`spindeterminants.irp.f_template_1218` File: :file:`spindeterminants.irp.f_template_1221`
@ -2463,7 +2435,7 @@ Subroutines / functions
subroutine get_all_spin_singles_3(buffer, idx, spindet, size_buffer, singles, n_singles) subroutine get_all_spin_singles_3(buffer, idx, spindet, size_buffer, singles, n_singles)
File: :file:`spindeterminants.irp.f_template_1218` File: :file:`spindeterminants.irp.f_template_1221`
@ -2481,7 +2453,7 @@ Subroutines / functions
subroutine get_all_spin_singles_4(buffer, idx, spindet, size_buffer, singles, n_singles) subroutine get_all_spin_singles_4(buffer, idx, spindet, size_buffer, singles, n_singles)
File: :file:`spindeterminants.irp.f_template_1218` File: :file:`spindeterminants.irp.f_template_1221`
@ -2539,7 +2511,7 @@ Subroutines / functions
subroutine get_all_spin_singles_and_doubles_2(buffer, idx, spindet, size_buffer, singles, doubles, n_singles, n_doubles) subroutine get_all_spin_singles_and_doubles_2(buffer, idx, spindet, size_buffer, singles, doubles, n_singles, n_doubles)
File: :file:`spindeterminants.irp.f_template_1218` File: :file:`spindeterminants.irp.f_template_1221`
@ -2559,7 +2531,7 @@ Subroutines / functions
subroutine get_all_spin_singles_and_doubles_3(buffer, idx, spindet, size_buffer, singles, doubles, n_singles, n_doubles) subroutine get_all_spin_singles_and_doubles_3(buffer, idx, spindet, size_buffer, singles, doubles, n_singles, n_doubles)
File: :file:`spindeterminants.irp.f_template_1218` File: :file:`spindeterminants.irp.f_template_1221`
@ -2579,7 +2551,7 @@ Subroutines / functions
subroutine get_all_spin_singles_and_doubles_4(buffer, idx, spindet, size_buffer, singles, doubles, n_singles, n_doubles) subroutine get_all_spin_singles_and_doubles_4(buffer, idx, spindet, size_buffer, singles, doubles, n_singles, n_doubles)
File: :file:`spindeterminants.irp.f_template_1218` File: :file:`spindeterminants.irp.f_template_1221`
@ -2599,7 +2571,7 @@ Subroutines / functions
subroutine get_all_spin_singles_and_doubles_N_int(buffer, idx, spindet, size_buffer, singles, doubles, n_singles, n_doubles) subroutine get_all_spin_singles_and_doubles_N_int(buffer, idx, spindet, size_buffer, singles, doubles, n_singles, n_doubles)
File: :file:`spindeterminants.irp.f_template_1218` File: :file:`spindeterminants.irp.f_template_1221`
@ -2619,7 +2591,7 @@ Subroutines / functions
subroutine get_all_spin_singles_N_int(buffer, idx, spindet, size_buffer, singles, n_singles) subroutine get_all_spin_singles_N_int(buffer, idx, spindet, size_buffer, singles, n_singles)
File: :file:`spindeterminants.irp.f_template_1218` File: :file:`spindeterminants.irp.f_template_1221`
@ -3273,6 +3245,20 @@ Subroutines / functions
.. c:function:: pouet
.. code:: text
subroutine pouet
File: :file:`test.irp.f`
.. c:function:: pull_pt2 .. c:function:: pull_pt2
.. code:: text .. code:: text

View File

@ -16,7 +16,7 @@ The main providers for this module are:
* `aos_in_r_array`: values of the |AO| basis on the grid point. * `aos_in_r_array`: values of the |AO| basis on the grid point.
* `mos_in_r_array`: values of the |MO| basis on the grid point. * `mos_in_r_array`: values of the |MO| basis on the grid point.
* `one_dm_and_grad_alpha_in_r`: values of the density and its gradienst on the grid points. * `one_e_dm_and_grad_alpha_in_r`: values of the density and its gradienst on the grid points.
@ -195,72 +195,26 @@ Providers
.. c:var:: one_body_dm_alpha_at_r .. c:var:: one_e_dm_alpha_at_r
.. code:: text .. code:: text
double precision, allocatable :: one_body_dm_alpha_at_r (n_points_final_grid,N_states) double precision, allocatable :: one_e_dm_alpha_at_r (n_points_final_grid,N_states)
double precision, allocatable :: one_body_dm_beta_at_r (n_points_final_grid,N_states) double precision, allocatable :: one_e_dm_beta_at_r (n_points_final_grid,N_states)
File: :file:`dm_in_r.irp.f` File: :file:`dm_in_r.irp.f`
one_body_dm_alpha_at_r(i,istate) = n_alpha(r_i,istate) one_body_dm_beta_at_r(i,istate) = n_beta(r_i,istate) where r_i is the ith point of the grid and istate is the state number one_e_dm_alpha_at_r(i,istate) = n_alpha(r_i,istate) one_e_dm_beta_at_r(i,istate) = n_beta(r_i,istate) where r_i is the ith point of the grid and istate is the state number
.. c:var:: one_body_dm_beta_at_r .. c:var:: one_e_dm_alpha_in_r
.. code:: text .. code:: text
double precision, allocatable :: one_body_dm_alpha_at_r (n_points_final_grid,N_states) double precision, allocatable :: one_e_dm_alpha_in_r (n_points_integration_angular,n_points_radial_grid,nucl_num,N_states)
double precision, allocatable :: one_body_dm_beta_at_r (n_points_final_grid,N_states) double precision, allocatable :: one_e_dm_beta_in_r (n_points_integration_angular,n_points_radial_grid,nucl_num,N_states)
File: :file:`dm_in_r.irp.f`
one_body_dm_alpha_at_r(i,istate) = n_alpha(r_i,istate) one_body_dm_beta_at_r(i,istate) = n_beta(r_i,istate) where r_i is the ith point of the grid and istate is the state number
.. c:var:: one_body_grad_2_dm_alpha_at_r
.. code:: text
double precision, allocatable :: one_dm_and_grad_alpha_in_r (4,n_points_final_grid,N_states)
double precision, allocatable :: one_dm_and_grad_beta_in_r (4,n_points_final_grid,N_states)
double precision, allocatable :: one_body_grad_2_dm_alpha_at_r (n_points_final_grid,N_states)
double precision, allocatable :: one_body_grad_2_dm_beta_at_r (n_points_final_grid,N_states)
File: :file:`dm_in_r.irp.f`
one_dm_and_grad_alpha_in_r(1,i,i_state) = d\dx n_alpha(r_i,istate) one_dm_and_grad_alpha_in_r(2,i,i_state) = d\dy n_alpha(r_i,istate) one_dm_and_grad_alpha_in_r(3,i,i_state) = d\dz n_alpha(r_i,istate) one_dm_and_grad_alpha_in_r(4,i,i_state) = n_alpha(r_i,istate) one_body_grad_2_dm_alpha_at_r(i,istate) = d\dx n_alpha(r_i,istate)^2 + d\dy n_alpha(r_i,istate)^2 + d\dz n_alpha(r_i,istate)^2 where r_i is the ith point of the grid and istate is the state number
.. c:var:: one_body_grad_2_dm_beta_at_r
.. code:: text
double precision, allocatable :: one_dm_and_grad_alpha_in_r (4,n_points_final_grid,N_states)
double precision, allocatable :: one_dm_and_grad_beta_in_r (4,n_points_final_grid,N_states)
double precision, allocatable :: one_body_grad_2_dm_alpha_at_r (n_points_final_grid,N_states)
double precision, allocatable :: one_body_grad_2_dm_beta_at_r (n_points_final_grid,N_states)
File: :file:`dm_in_r.irp.f`
one_dm_and_grad_alpha_in_r(1,i,i_state) = d\dx n_alpha(r_i,istate) one_dm_and_grad_alpha_in_r(2,i,i_state) = d\dy n_alpha(r_i,istate) one_dm_and_grad_alpha_in_r(3,i,i_state) = d\dz n_alpha(r_i,istate) one_dm_and_grad_alpha_in_r(4,i,i_state) = n_alpha(r_i,istate) one_body_grad_2_dm_alpha_at_r(i,istate) = d\dx n_alpha(r_i,istate)^2 + d\dy n_alpha(r_i,istate)^2 + d\dz n_alpha(r_i,istate)^2 where r_i is the ith point of the grid and istate is the state number
.. c:var:: one_dm_alpha_in_r
.. code:: text
double precision, allocatable :: one_dm_alpha_in_r (n_points_integration_angular,n_points_radial_grid,nucl_num,N_states)
double precision, allocatable :: one_dm_beta_in_r (n_points_integration_angular,n_points_radial_grid,nucl_num,N_states)
File: :file:`dm_in_r.irp.f` File: :file:`dm_in_r.irp.f`
@ -269,44 +223,58 @@ Providers
.. c:var:: one_dm_and_grad_alpha_in_r .. c:var:: one_e_dm_and_grad_alpha_in_r
.. code:: text .. code:: text
double precision, allocatable :: one_dm_and_grad_alpha_in_r (4,n_points_final_grid,N_states) double precision, allocatable :: one_e_dm_and_grad_alpha_in_r (4,n_points_final_grid,N_states)
double precision, allocatable :: one_dm_and_grad_beta_in_r (4,n_points_final_grid,N_states) double precision, allocatable :: one_e_dm_and_grad_beta_in_r (4,n_points_final_grid,N_states)
double precision, allocatable :: one_body_grad_2_dm_alpha_at_r (n_points_final_grid,N_states) double precision, allocatable :: one_e_grad_2_dm_alpha_at_r (n_points_final_grid,N_states)
double precision, allocatable :: one_body_grad_2_dm_beta_at_r (n_points_final_grid,N_states) double precision, allocatable :: one_e_grad_2_dm_beta_at_r (n_points_final_grid,N_states)
File: :file:`dm_in_r.irp.f` File: :file:`dm_in_r.irp.f`
one_dm_and_grad_alpha_in_r(1,i,i_state) = d\dx n_alpha(r_i,istate) one_dm_and_grad_alpha_in_r(2,i,i_state) = d\dy n_alpha(r_i,istate) one_dm_and_grad_alpha_in_r(3,i,i_state) = d\dz n_alpha(r_i,istate) one_dm_and_grad_alpha_in_r(4,i,i_state) = n_alpha(r_i,istate) one_body_grad_2_dm_alpha_at_r(i,istate) = d\dx n_alpha(r_i,istate)^2 + d\dy n_alpha(r_i,istate)^2 + d\dz n_alpha(r_i,istate)^2 where r_i is the ith point of the grid and istate is the state number one_e_dm_and_grad_alpha_in_r(1,i,i_state) = d\dx n_alpha(r_i,istate) one_e_dm_and_grad_alpha_in_r(2,i,i_state) = d\dy n_alpha(r_i,istate) one_e_dm_and_grad_alpha_in_r(3,i,i_state) = d\dz n_alpha(r_i,istate) one_e_dm_and_grad_alpha_in_r(4,i,i_state) = n_alpha(r_i,istate) one_e_grad_2_dm_alpha_at_r(i,istate) = d\dx n_alpha(r_i,istate)^2 + d\dy n_alpha(r_i,istate)^2 + d\dz n_alpha(r_i,istate)^2 where r_i is the ith point of the grid and istate is the state number
.. c:var:: one_dm_and_grad_beta_in_r .. c:var:: one_e_dm_and_grad_beta_in_r
.. code:: text .. code:: text
double precision, allocatable :: one_dm_and_grad_alpha_in_r (4,n_points_final_grid,N_states) double precision, allocatable :: one_e_dm_and_grad_alpha_in_r (4,n_points_final_grid,N_states)
double precision, allocatable :: one_dm_and_grad_beta_in_r (4,n_points_final_grid,N_states) double precision, allocatable :: one_e_dm_and_grad_beta_in_r (4,n_points_final_grid,N_states)
double precision, allocatable :: one_body_grad_2_dm_alpha_at_r (n_points_final_grid,N_states) double precision, allocatable :: one_e_grad_2_dm_alpha_at_r (n_points_final_grid,N_states)
double precision, allocatable :: one_body_grad_2_dm_beta_at_r (n_points_final_grid,N_states) double precision, allocatable :: one_e_grad_2_dm_beta_at_r (n_points_final_grid,N_states)
File: :file:`dm_in_r.irp.f` File: :file:`dm_in_r.irp.f`
one_dm_and_grad_alpha_in_r(1,i,i_state) = d\dx n_alpha(r_i,istate) one_dm_and_grad_alpha_in_r(2,i,i_state) = d\dy n_alpha(r_i,istate) one_dm_and_grad_alpha_in_r(3,i,i_state) = d\dz n_alpha(r_i,istate) one_dm_and_grad_alpha_in_r(4,i,i_state) = n_alpha(r_i,istate) one_body_grad_2_dm_alpha_at_r(i,istate) = d\dx n_alpha(r_i,istate)^2 + d\dy n_alpha(r_i,istate)^2 + d\dz n_alpha(r_i,istate)^2 where r_i is the ith point of the grid and istate is the state number one_e_dm_and_grad_alpha_in_r(1,i,i_state) = d\dx n_alpha(r_i,istate) one_e_dm_and_grad_alpha_in_r(2,i,i_state) = d\dy n_alpha(r_i,istate) one_e_dm_and_grad_alpha_in_r(3,i,i_state) = d\dz n_alpha(r_i,istate) one_e_dm_and_grad_alpha_in_r(4,i,i_state) = n_alpha(r_i,istate) one_e_grad_2_dm_alpha_at_r(i,istate) = d\dx n_alpha(r_i,istate)^2 + d\dy n_alpha(r_i,istate)^2 + d\dz n_alpha(r_i,istate)^2 where r_i is the ith point of the grid and istate is the state number
.. c:var:: one_dm_beta_in_r .. c:var:: one_e_dm_beta_at_r
.. code:: text .. code:: text
double precision, allocatable :: one_dm_alpha_in_r (n_points_integration_angular,n_points_radial_grid,nucl_num,N_states) double precision, allocatable :: one_e_dm_alpha_at_r (n_points_final_grid,N_states)
double precision, allocatable :: one_dm_beta_in_r (n_points_integration_angular,n_points_radial_grid,nucl_num,N_states) double precision, allocatable :: one_e_dm_beta_at_r (n_points_final_grid,N_states)
File: :file:`dm_in_r.irp.f`
one_e_dm_alpha_at_r(i,istate) = n_alpha(r_i,istate) one_e_dm_beta_at_r(i,istate) = n_beta(r_i,istate) where r_i is the ith point of the grid and istate is the state number
.. c:var:: one_e_dm_beta_in_r
.. code:: text
double precision, allocatable :: one_e_dm_alpha_in_r (n_points_integration_angular,n_points_radial_grid,nucl_num,N_states)
double precision, allocatable :: one_e_dm_beta_in_r (n_points_integration_angular,n_points_radial_grid,nucl_num,N_states)
File: :file:`dm_in_r.irp.f` File: :file:`dm_in_r.irp.f`
@ -315,6 +283,38 @@ Providers
.. c:var:: one_e_grad_2_dm_alpha_at_r
.. code:: text
double precision, allocatable :: one_e_dm_and_grad_alpha_in_r (4,n_points_final_grid,N_states)
double precision, allocatable :: one_e_dm_and_grad_beta_in_r (4,n_points_final_grid,N_states)
double precision, allocatable :: one_e_grad_2_dm_alpha_at_r (n_points_final_grid,N_states)
double precision, allocatable :: one_e_grad_2_dm_beta_at_r (n_points_final_grid,N_states)
File: :file:`dm_in_r.irp.f`
one_e_dm_and_grad_alpha_in_r(1,i,i_state) = d\dx n_alpha(r_i,istate) one_e_dm_and_grad_alpha_in_r(2,i,i_state) = d\dy n_alpha(r_i,istate) one_e_dm_and_grad_alpha_in_r(3,i,i_state) = d\dz n_alpha(r_i,istate) one_e_dm_and_grad_alpha_in_r(4,i,i_state) = n_alpha(r_i,istate) one_e_grad_2_dm_alpha_at_r(i,istate) = d\dx n_alpha(r_i,istate)^2 + d\dy n_alpha(r_i,istate)^2 + d\dz n_alpha(r_i,istate)^2 where r_i is the ith point of the grid and istate is the state number
.. c:var:: one_e_grad_2_dm_beta_at_r
.. code:: text
double precision, allocatable :: one_e_dm_and_grad_alpha_in_r (4,n_points_final_grid,N_states)
double precision, allocatable :: one_e_dm_and_grad_beta_in_r (4,n_points_final_grid,N_states)
double precision, allocatable :: one_e_grad_2_dm_alpha_at_r (n_points_final_grid,N_states)
double precision, allocatable :: one_e_grad_2_dm_beta_at_r (n_points_final_grid,N_states)
File: :file:`dm_in_r.irp.f`
one_e_dm_and_grad_alpha_in_r(1,i,i_state) = d\dx n_alpha(r_i,istate) one_e_dm_and_grad_alpha_in_r(2,i,i_state) = d\dy n_alpha(r_i,istate) one_e_dm_and_grad_alpha_in_r(3,i,i_state) = d\dz n_alpha(r_i,istate) one_e_dm_and_grad_alpha_in_r(4,i,i_state) = n_alpha(r_i,istate) one_e_grad_2_dm_alpha_at_r(i,istate) = d\dx n_alpha(r_i,istate)^2 + d\dy n_alpha(r_i,istate)^2 + d\dz n_alpha(r_i,istate)^2 where r_i is the ith point of the grid and istate is the state number
Subroutines / functions Subroutines / functions
----------------------- -----------------------

View File

@ -1090,14 +1090,12 @@ Providers
.. code:: text .. code:: text
double precision, allocatable :: potential_sr_x_alpha_ao_lda (ao_num,ao_num,N_states)
double precision, allocatable :: potential_sr_x_beta_ao_lda (ao_num,ao_num,N_states)
double precision, allocatable :: potential_sr_c_alpha_ao_lda (ao_num,ao_num,N_states) double precision, allocatable :: potential_sr_c_alpha_ao_lda (ao_num,ao_num,N_states)
double precision, allocatable :: potential_sr_c_beta_ao_lda (ao_num,ao_num,N_states) double precision, allocatable :: potential_sr_c_beta_ao_lda (ao_num,ao_num,N_states)
File: :file:`sr_pot_ao.irp.f` File: :file:`sr_pot_ao.irp.f`
short range exchange/correlation alpha/beta potentials with LDA functional on the AO basis short range correlation alpha/beta potentials with LDA functional on the |AO| basis
@ -1122,14 +1120,12 @@ Providers
.. code:: text .. code:: text
double precision, allocatable :: potential_sr_x_alpha_ao_lda (ao_num,ao_num,N_states)
double precision, allocatable :: potential_sr_x_beta_ao_lda (ao_num,ao_num,N_states)
double precision, allocatable :: potential_sr_c_alpha_ao_lda (ao_num,ao_num,N_states) double precision, allocatable :: potential_sr_c_alpha_ao_lda (ao_num,ao_num,N_states)
double precision, allocatable :: potential_sr_c_beta_ao_lda (ao_num,ao_num,N_states) double precision, allocatable :: potential_sr_c_beta_ao_lda (ao_num,ao_num,N_states)
File: :file:`sr_pot_ao.irp.f` File: :file:`sr_pot_ao.irp.f`
short range exchange/correlation alpha/beta potentials with LDA functional on the AO basis short range correlation alpha/beta potentials with LDA functional on the |AO| basis
@ -1156,12 +1152,10 @@ Providers
double precision, allocatable :: potential_sr_x_alpha_ao_lda (ao_num,ao_num,N_states) double precision, allocatable :: potential_sr_x_alpha_ao_lda (ao_num,ao_num,N_states)
double precision, allocatable :: potential_sr_x_beta_ao_lda (ao_num,ao_num,N_states) double precision, allocatable :: potential_sr_x_beta_ao_lda (ao_num,ao_num,N_states)
double precision, allocatable :: potential_sr_c_alpha_ao_lda (ao_num,ao_num,N_states)
double precision, allocatable :: potential_sr_c_beta_ao_lda (ao_num,ao_num,N_states)
File: :file:`sr_pot_ao.irp.f` File: :file:`sr_pot_ao.irp.f`
short range exchange/correlation alpha/beta potentials with LDA functional on the AO basis short range exchange alpha/beta potentials with LDA functional on the |AO| basis
@ -1188,12 +1182,10 @@ Providers
double precision, allocatable :: potential_sr_x_alpha_ao_lda (ao_num,ao_num,N_states) double precision, allocatable :: potential_sr_x_alpha_ao_lda (ao_num,ao_num,N_states)
double precision, allocatable :: potential_sr_x_beta_ao_lda (ao_num,ao_num,N_states) double precision, allocatable :: potential_sr_x_beta_ao_lda (ao_num,ao_num,N_states)
double precision, allocatable :: potential_sr_c_alpha_ao_lda (ao_num,ao_num,N_states)
double precision, allocatable :: potential_sr_c_beta_ao_lda (ao_num,ao_num,N_states)
File: :file:`sr_pot_ao.irp.f` File: :file:`sr_pot_ao.irp.f`
short range exchange/correlation alpha/beta potentials with LDA functional on the AO basis short range exchange alpha/beta potentials with LDA functional on the |AO| basis
@ -1352,7 +1344,7 @@ Providers
File: :file:`one_e_energy_dft.irp.f` File: :file:`one_e_energy_dft.irp.f`
kinetic, electron-nuclear and total h_core energy computed with the density matrix one_body_dm_mo_beta_for_dft+one_body_dm_mo_alpha_for_dft 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
@ -1367,7 +1359,7 @@ Providers
File: :file:`one_e_energy_dft.irp.f` File: :file:`one_e_energy_dft.irp.f`
kinetic, electron-nuclear and total h_core energy computed with the density matrix one_body_dm_mo_beta_for_dft+one_body_dm_mo_alpha_for_dft 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
@ -1382,7 +1374,7 @@ Providers
File: :file:`one_e_energy_dft.irp.f` File: :file:`one_e_energy_dft.irp.f`
kinetic, electron-nuclear and total h_core energy computed with the density matrix one_body_dm_mo_beta_for_dft+one_body_dm_mo_alpha_for_dft 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

View File

@ -36,6 +36,23 @@ EZFIO parameters
Providers
---------
.. c:var:: nthreads_pt2
.. code:: text
integer :: nthreads_pt2
File: :file:`environment.irp.f`
Number of threads for Davidson
Subroutines / functions Subroutines / functions
----------------------- -----------------------
@ -69,6 +86,20 @@ Subroutines / functions
.. c:function:: run
.. code:: text
subroutine run
File: :file:`pt2.irp.f`
.. c:function:: save_energy .. c:function:: save_energy
.. code:: text .. code:: text

View File

@ -63,6 +63,79 @@ Providers
--------- ---------
.. c:var:: ao_two_e_integral_alpha
.. code:: text
double precision, allocatable :: ao_two_e_integral_alpha (ao_num,ao_num)
double precision, allocatable :: ao_two_e_integral_beta (ao_num,ao_num)
File: :file:`fock_matrix_hf.irp.f`
Alpha Fock matrix in AO basis set
.. c:var:: ao_two_e_integral_beta
.. code:: text
double precision, allocatable :: ao_two_e_integral_alpha (ao_num,ao_num)
double precision, allocatable :: ao_two_e_integral_beta (ao_num,ao_num)
File: :file:`fock_matrix_hf.irp.f`
Alpha Fock matrix in AO basis set
.. c:var:: extra_e_contrib_density
.. code:: text
double precision :: extra_e_contrib_density
File: :file:`hf_energy.irp.f`
Extra contribution to the SCF energy coming from the density.
For a Hartree-Fock calculation: extra_e_contrib_density = 0
For a Kohn-Sham or Range-separated Kohn-Sham: the exchange/correlation - trace of the V_xc potential
.. c:var:: fock_matrix_ao_alpha
.. code:: text
double precision, allocatable :: fock_matrix_ao_alpha (ao_num,ao_num)
double precision, allocatable :: fock_matrix_ao_beta (ao_num,ao_num)
File: :file:`fock_matrix_hf.irp.f`
Alpha Fock matrix in AO basis set
.. c:var:: fock_matrix_ao_beta
.. code:: text
double precision, allocatable :: fock_matrix_ao_alpha (ao_num,ao_num)
double precision, allocatable :: fock_matrix_ao_beta (ao_num,ao_num)
File: :file:`fock_matrix_hf.irp.f`
Alpha Fock matrix in AO basis set
.. c:var:: hf_energy .. c:var:: hf_energy
.. code:: text .. code:: text
@ -113,6 +186,20 @@ Subroutines / functions
.. c:function:: create_guess
.. code:: text
subroutine create_guess
File: :file:`scf.irp.f`
Create a MO guess if no MOs are present in the EZFIO directory
.. c:function:: scf .. c:function:: scf
.. code:: text .. code:: text

View File

@ -91,7 +91,7 @@ Subroutines / functions
.. code:: text .. code:: text
subroutine print_summary(e_,pt2_,error_,variance_,norm_,n_det_,n_occ_pattern_) subroutine print_summary(e_,pt2_,error_,variance_,norm_,n_det_,n_occ_pattern_,n_st)
File: :file:`print_summary.irp.f` File: :file:`print_summary.irp.f`

View File

@ -52,236 +52,13 @@ Providers
--------- ---------
.. c:var:: ao_potential_alpha_xc
.. code:: text
double precision, allocatable :: ao_potential_alpha_xc (ao_num,ao_num)
double precision, allocatable :: ao_potential_beta_xc (ao_num,ao_num)
File: :file:`pot_functionals.irp.f`
.. c:var:: ao_potential_beta_xc
.. code:: text
double precision, allocatable :: ao_potential_alpha_xc (ao_num,ao_num)
double precision, allocatable :: ao_potential_beta_xc (ao_num,ao_num)
File: :file:`pot_functionals.irp.f`
.. c:var:: ao_two_e_integral_alpha
.. code:: text
double precision, allocatable :: ao_two_e_integral_alpha (ao_num,ao_num)
double precision, allocatable :: ao_two_e_integral_beta (ao_num,ao_num)
File: :file:`fock_matrix_ks.irp.f`
Alpha Fock matrix in ao basis set
.. c:var:: ao_two_e_integral_beta
.. code:: text
double precision, allocatable :: ao_two_e_integral_alpha (ao_num,ao_num)
double precision, allocatable :: ao_two_e_integral_beta (ao_num,ao_num)
File: :file:`fock_matrix_ks.irp.f`
Alpha Fock matrix in ao basis set
.. c:var:: e_correlation_dft
.. code:: text
double precision :: e_correlation_dft
File: :file:`pot_functionals.irp.f`
.. c:var:: e_exchange_dft
.. code:: text
double precision :: e_exchange_dft
File: :file:`pot_functionals.irp.f`
.. c:var:: extra_e_contrib_density
.. code:: text
double precision :: extra_e_contrib_density
File: :file:`ks_enery.irp.f`
Extra contribution to the SCF energy coming from the density.
For a Hartree-Fock calculation: extra_e_contrib_density = 0
For a Kohn-Sham or Range-separated Kohn-Sham: the exchange/correlation - 1/2 trace of the V_xc potential
.. c:var:: fock_matrix_alpha_no_xc_ao
.. code:: text
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)
File: :file:`fock_matrix_ks.irp.f`
Mono electronic an Coulomb matrix in ao basis set
.. c:var:: fock_matrix_ao_alpha
.. code:: text
double precision, allocatable :: fock_matrix_ao_alpha (ao_num,ao_num)
double precision, allocatable :: fock_matrix_ao_beta (ao_num,ao_num)
File: :file:`fock_matrix_ks.irp.f`
Alpha Fock matrix in ao basis set
.. c:var:: fock_matrix_ao_beta
.. code:: text
double precision, allocatable :: fock_matrix_ao_alpha (ao_num,ao_num)
double precision, allocatable :: fock_matrix_ao_beta (ao_num,ao_num)
File: :file:`fock_matrix_ks.irp.f`
Alpha Fock matrix in ao basis set
.. c:var:: fock_matrix_beta_no_xc_ao
.. code:: text
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)
File: :file:`fock_matrix_ks.irp.f`
Mono electronic an Coulomb matrix in ao basis set
.. c:var:: fock_matrix_energy
.. code:: text
double precision :: ks_energy
double precision :: two_electron_energy
double precision :: one_electron_energy
double precision :: fock_matrix_energy
double precision :: trace_potential_xc
File: :file:`ks_enery.irp.f`
Kohn-Sham energy containing the nuclear repulsion energy, and the various components of this quantity.
.. c:var:: ks_energy .. c:var:: ks_energy
.. code:: text .. code:: text
double precision :: ks_energy double precision :: ks_energy
double precision :: two_electron_energy double precision :: two_electron_energy
double precision :: one_electron_energy double precision :: one_e_energy
double precision :: fock_matrix_energy
double precision :: trace_potential_xc
File: :file:`ks_enery.irp.f`
Kohn-Sham energy containing the nuclear repulsion energy, and the various components of this quantity.
.. c:var:: one_electron_energy
.. code:: text
double precision :: ks_energy
double precision :: two_electron_energy
double precision :: one_electron_energy
double precision :: fock_matrix_energy
double precision :: trace_potential_xc
File: :file:`ks_enery.irp.f`
Kohn-Sham energy containing the nuclear repulsion energy, and the various components of this quantity.
.. c:var:: trace_potential_xc
.. code:: text
double precision :: ks_energy
double precision :: two_electron_energy
double precision :: one_electron_energy
double precision :: fock_matrix_energy
double precision :: trace_potential_xc
File: :file:`ks_enery.irp.f`
Kohn-Sham energy containing the nuclear repulsion energy, and the various components of this quantity.
.. c:var:: two_electron_energy
.. code:: text
double precision :: ks_energy
double precision :: two_electron_energy
double precision :: one_electron_energy
double precision :: fock_matrix_energy double precision :: fock_matrix_energy
double precision :: trace_potential_xc double precision :: trace_potential_xc
@ -297,48 +74,6 @@ Subroutines / functions
.. c:function:: check_coherence_functional
.. code:: text
subroutine check_coherence_functional
File: :file:`ks_scf.irp.f`
.. c:function:: create_guess
.. code:: text
subroutine create_guess
File: :file:`ks_scf.irp.f`
Create a MO guess if no MOs are present in the EZFIO directory
.. c:function:: run
.. code:: text
subroutine run
File: :file:`ks_scf.irp.f`
Run SCF calculation
.. c:function:: srs_ks_cf .. c:function:: srs_ks_cf
.. code:: text .. code:: text

View File

@ -60,13 +60,163 @@ Providers
--------- ---------
.. c:var:: ao_potential_alpha_xc
.. code:: text
double precision, allocatable :: ao_potential_alpha_xc (ao_num,ao_num)
double precision, allocatable :: ao_potential_beta_xc (ao_num,ao_num)
File: :file:`pot_functionals.irp.f`
.. c:var:: ao_potential_beta_xc
.. code:: text
double precision, allocatable :: ao_potential_alpha_xc (ao_num,ao_num)
double precision, allocatable :: ao_potential_beta_xc (ao_num,ao_num)
File: :file:`pot_functionals.irp.f`
.. c:var:: e_correlation_dft
.. code:: text
double precision :: e_correlation_dft
File: :file:`pot_functionals.irp.f`
.. c:var:: e_exchange_dft
.. code:: text
double precision :: e_exchange_dft
File: :file:`pot_functionals.irp.f`
.. c:var:: fock_matrix_alpha_no_xc_ao
.. code:: text
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)
File: :file:`fock_matrix_rs_ks.irp.f`
Mono electronic an Coulomb matrix in AO basis set
.. c:var:: fock_matrix_beta_no_xc_ao
.. code:: text
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)
File: :file:`fock_matrix_rs_ks.irp.f`
Mono electronic an Coulomb matrix in AO basis set
.. c:var:: fock_matrix_energy
.. code:: text
double precision :: rs_ks_energy
double precision :: two_electron_energy
double precision :: one_e_energy
double precision :: fock_matrix_energy
double precision :: trace_potential_xc
File: :file:`rs_ks_energy.irp.f`
Range-separated Kohn-Sham energy containing the nuclear repulsion energy, and the various components of this quantity.
.. c:var:: one_e_energy
.. code:: text
double precision :: rs_ks_energy
double precision :: two_electron_energy
double precision :: one_e_energy
double precision :: fock_matrix_energy
double precision :: trace_potential_xc
File: :file:`rs_ks_energy.irp.f`
Range-separated Kohn-Sham energy containing the nuclear repulsion energy, and the various components of this quantity.
.. c:var:: rs_ks_energy .. c:var:: rs_ks_energy
.. code:: text .. code:: text
double precision :: rs_ks_energy double precision :: rs_ks_energy
double precision :: two_electron_energy double precision :: two_electron_energy
double precision :: one_electron_energy double precision :: one_e_energy
double precision :: fock_matrix_energy
double precision :: trace_potential_xc
File: :file:`rs_ks_energy.irp.f`
Range-separated Kohn-Sham energy containing the nuclear repulsion energy, and the various components of this quantity.
.. c:var:: trace_potential_xc
.. code:: text
double precision :: rs_ks_energy
double precision :: two_electron_energy
double precision :: one_e_energy
double precision :: fock_matrix_energy
double precision :: trace_potential_xc
File: :file:`rs_ks_energy.irp.f`
Range-separated Kohn-Sham energy containing the nuclear repulsion energy, and the various components of this quantity.
.. c:var:: two_electron_energy
.. code:: text
double precision :: rs_ks_energy
double precision :: two_electron_energy
double precision :: one_e_energy
double precision :: fock_matrix_energy double precision :: fock_matrix_energy
double precision :: trace_potential_xc double precision :: trace_potential_xc
@ -82,6 +232,20 @@ Subroutines / functions
.. c:function:: check_coherence_functional
.. code:: text
subroutine check_coherence_functional
File: :file:`rs_ks_scf.irp.f`
.. c:function:: rs_ks_scf .. c:function:: rs_ks_scf
.. code:: text .. code:: text

View File

@ -329,15 +329,15 @@ Subroutines / functions
.. c:function:: reorder_active_orb .. c:function:: reorder_core_orb
.. code:: text .. code:: text
subroutine reorder_active_orb subroutine reorder_core_orb
File: :file:`track_orb.irp.f` File: :file:`track_orb.irp.f`
routines that takes the current :c:data:`mo_coef` and reorder the active orbitals (see :c:data:`list_act` and :c:data:`n_act_orb`) according to the overlap with :c:data:`mo_coef_begin_iteration` routines that takes the current :c:data:`mo_coef` and reorder the core orbitals (see :c:data:`list_core` and :c:data:`n_core_orb`) according to the overlap with :c:data:`mo_coef_begin_iteration`

View File

@ -268,7 +268,21 @@ Subroutines / functions
Transform A from the MO basis to the AO basis Transform A from the MO basis to the AO basis
(S.C).A_mo.(S.C)t :math:`(S.C).A_{mo}.(S.C)^\dagger`
.. c:function:: mo_to_ao_no_overlap
.. code:: text
subroutine mo_to_ao_no_overlap(A_mo,LDA_mo,A_ao,LDA_ao)
File: :file:`ao_to_mo.irp.f`
:math:`C.A_{mo}.C^\dagger`

View File

@ -97,9 +97,9 @@ EZFIO parameters
Calculated HF energy Calculated HF energy
.. option:: no_oa_or_av_opt .. option:: frozen_orb_scf
If true, leave the active orbitals untouched in the SCF procedure 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 Default: False

View File

@ -145,7 +145,25 @@ Subroutines / functions
programs that computes the one body density on the mo basis for alpha and beta electrons from the wave function stored in the EZFIO folder, and then save it into the EZFIO folder aux_quantities. programs that computes the one body density on the mo basis for alpha and beta electrons from the wave function stored in the EZFIO folder, and then save it into the EZFIO folder aux_quantities.
Then, the global variable data_one_body_alpha_dm_mo and data_one_body_beta_dm_mo will automatically read the density in a further calculation. Then, the global variable data_one_e_dm_alpha_mo and data_one_e_dm_beta_mo will automatically read the density in a further calculation.
This can be used to perform dampin on the density in RS-DFT calculation (see the density_for_dft module).
.. c:function:: save_one_e_dm
.. code:: text
subroutine save_one_e_dm
File: :file:`save_one_e_dm.irp.f`
programs that computes the one body density on the mo basis for alpha and beta electrons from the wave function stored in the EZFIO folder, and then save it into the EZFIO folder aux_quantities.
Then, the global variable data_one_e_dm_alpha_mo and data_one_e_dm_beta_mo will automatically read the density in a further calculation.
This can be used to perform dampin on the density in RS-DFT calculation (see the density_for_dft module). This can be used to perform dampin on the density in RS-DFT calculation (see the density_for_dft module).

View File

@ -150,8 +150,10 @@ Index of Providers
* :c:data:`damping_for_rs_dft` * :c:data:`damping_for_rs_dft`
* :c:data:`data_energy_proj` * :c:data:`data_energy_proj`
* :c:data:`data_energy_var` * :c:data:`data_energy_var`
* :c:data:`data_one_body_alpha_dm_mo` * :c:data:`data_one_body_dm_alpha_mo`
* :c:data:`data_one_body_beta_dm_mo` * :c:data:`data_one_body_dm_beta_mo`
* :c:data:`data_one_e_dm_alpha_mo`
* :c:data:`data_one_e_dm_beta_mo`
* :c:data:`davidson_criterion` * :c:data:`davidson_criterion`
* :c:data:`davidson_sze_max` * :c:data:`davidson_sze_max`
* :c:data:`degree_max_generators` * :c:data:`degree_max_generators`
@ -231,6 +233,7 @@ Index of Providers
* :c:data:`fock_wee_closed_shell` * :c:data:`fock_wee_closed_shell`
* :c:data:`fps_spf_matrix_ao` * :c:data:`fps_spf_matrix_ao`
* :c:data:`fps_spf_matrix_mo` * :c:data:`fps_spf_matrix_mo`
* :c:data:`frozen_orb_scf`
* :c:data:`full_ijkl_bitmask` * :c:data:`full_ijkl_bitmask`
* :c:data:`full_ijkl_bitmask_4` * :c:data:`full_ijkl_bitmask_4`
* :c:data:`gauleg_t2` * :c:data:`gauleg_t2`
@ -433,11 +436,11 @@ Index of Providers
* :c:data:`n_virt_orb` * :c:data:`n_virt_orb`
* :c:data:`n_virt_orb_allocate` * :c:data:`n_virt_orb_allocate`
* :c:data:`no_ivvv_integrals` * :c:data:`no_ivvv_integrals`
* :c:data:`no_oa_or_av_opt`
* :c:data:`no_vvv_integrals` * :c:data:`no_vvv_integrals`
* :c:data:`no_vvvv_integrals` * :c:data:`no_vvvv_integrals`
* :c:data:`nproc` * :c:data:`nproc`
* :c:data:`nthreads_davidson` * :c:data:`nthreads_davidson`
* :c:data:`nthreads_pt2`
* :c:data:`nucl_aos` * :c:data:`nucl_aos`
* :c:data:`nucl_aos_transposed` * :c:data:`nucl_aos_transposed`
* :c:data:`nucl_charge` * :c:data:`nucl_charge`
@ -456,35 +459,35 @@ Index of Providers
* :c:data:`nucl_num` * :c:data:`nucl_num`
* :c:data:`nucl_num_shell_aos` * :c:data:`nucl_num_shell_aos`
* :c:data:`nuclear_repulsion` * :c:data:`nuclear_repulsion`
* :c:data:`one_body_dm_alpha_ao_for_dft` * :c:data:`one_body_dm_mo_alpha_one_det`
* :c:data:`one_body_dm_alpha_at_r` * :c:data:`one_body_dm_mo_beta_one_det`
* :c:data:`one_body_dm_ao_alpha` * :c:data:`one_e_dm_alpha_ao_for_dft`
* :c:data:`one_body_dm_ao_beta` * :c:data:`one_e_dm_alpha_at_r`
* :c:data:`one_body_dm_average_mo_for_dft` * :c:data:`one_e_dm_alpha_in_r`
* :c:data:`one_body_dm_beta_ao_for_dft` * :c:data:`one_e_dm_and_grad_alpha_in_r`
* :c:data:`one_body_dm_beta_at_r` * :c:data:`one_e_dm_and_grad_beta_in_r`
* :c:data:`one_body_dm_dagger_mo_spin_index` * :c:data:`one_e_dm_ao_alpha`
* :c:data:`one_body_dm_mo` * :c:data:`one_e_dm_ao_beta`
* :c:data:`one_body_dm_mo_alpha` * :c:data:`one_e_dm_average_mo_for_dft`
* :c:data:`one_body_dm_mo_alpha_average` * :c:data:`one_e_dm_beta_ao_for_dft`
* :c:data:`one_body_dm_mo_alpha_for_dft` * :c:data:`one_e_dm_beta_at_r`
* :c:data:`one_body_dm_mo_beta` * :c:data:`one_e_dm_beta_in_r`
* :c:data:`one_body_dm_mo_beta_average` * :c:data:`one_e_dm_dagger_mo_spin_index`
* :c:data:`one_body_dm_mo_beta_for_dft` * :c:data:`one_e_dm_mo`
* :c:data:`one_body_dm_mo_diff` * :c:data:`one_e_dm_mo_alpha`
* :c:data:`one_body_dm_mo_for_dft` * :c:data:`one_e_dm_mo_alpha_average`
* :c:data:`one_body_dm_mo_spin_index` * :c:data:`one_e_dm_mo_alpha_for_dft`
* :c:data:`one_body_grad_2_dm_alpha_at_r` * :c:data:`one_e_dm_mo_beta`
* :c:data:`one_body_grad_2_dm_beta_at_r` * :c:data:`one_e_dm_mo_beta_average`
* :c:data:`one_body_single_double_dm_mo_alpha` * :c:data:`one_e_dm_mo_beta_for_dft`
* :c:data:`one_body_single_double_dm_mo_beta` * :c:data:`one_e_dm_mo_diff`
* :c:data:`one_body_spin_density_ao` * :c:data:`one_e_dm_mo_for_dft`
* :c:data:`one_body_spin_density_mo` * :c:data:`one_e_dm_mo_spin_index`
* :c:data:`one_dm_alpha_in_r` * :c:data:`one_e_energy`
* :c:data:`one_dm_and_grad_alpha_in_r` * :c:data:`one_e_grad_2_dm_alpha_at_r`
* :c:data:`one_dm_and_grad_beta_in_r` * :c:data:`one_e_grad_2_dm_beta_at_r`
* :c:data:`one_dm_beta_in_r` * :c:data:`one_e_spin_density_ao`
* :c:data:`one_electron_energy` * :c:data:`one_e_spin_density_mo`
* :c:data:`only_expected_s2` * :c:data:`only_expected_s2`
* :c:data:`output_cpu_time_0` * :c:data:`output_cpu_time_0`
* :c:data:`output_wall_time_0` * :c:data:`output_wall_time_0`
@ -1110,6 +1113,7 @@ Index of Subroutines/Functions
* :c:func:`mo_as_svd_vectors_of_mo_matrix` * :c:func:`mo_as_svd_vectors_of_mo_matrix`
* :c:func:`mo_as_svd_vectors_of_mo_matrix_eig` * :c:func:`mo_as_svd_vectors_of_mo_matrix_eig`
* :c:func:`mo_to_ao` * :c:func:`mo_to_ao`
* :c:func:`mo_to_ao_no_overlap`
* :c:func:`mo_two_e_integral` * :c:func:`mo_two_e_integral`
* :c:func:`mo_two_e_integral_erf` * :c:func:`mo_two_e_integral_erf`
* :c:func:`mo_two_e_integrals_erf_index` * :c:func:`mo_two_e_integrals_erf_index`
@ -1169,6 +1173,7 @@ Index of Subroutines/Functions
* :c:func:`perturb_buffer_moller_plesset` * :c:func:`perturb_buffer_moller_plesset`
* :c:func:`perturb_buffer_moller_plesset_general` * :c:func:`perturb_buffer_moller_plesset_general`
* :c:func:`perturb_buffer_qdpt` * :c:func:`perturb_buffer_qdpt`
* :c:func:`pouet`
* :c:func:`primitive_value` * :c:func:`primitive_value`
* :c:func:`print_det` * :c:func:`print_det`
* :c:func:`print_e_conv` * :c:func:`print_e_conv`
@ -1213,8 +1218,9 @@ Index of Subroutines/Functions
* :c:func:`read_dets` * :c:func:`read_dets`
* :c:func:`recentered_poly2` * :c:func:`recentered_poly2`
* :c:func:`remove_duplicates_in_psi_det` * :c:func:`remove_duplicates_in_psi_det`
* :c:func:`remove_duplicates_in_selection_buffer`
* :c:func:`remove_small_contributions` * :c:func:`remove_small_contributions`
* :c:func:`reorder_active_orb` * :c:func:`reorder_core_orb`
* :c:func:`repeat_all_e_corr` * :c:func:`repeat_all_e_corr`
* :c:func:`reset_zmq_addresses` * :c:func:`reset_zmq_addresses`
* :c:func:`resident_memory` * :c:func:`resident_memory`
@ -1252,6 +1258,7 @@ Index of Subroutines/Functions
* :c:func:`save_natorb` * :c:func:`save_natorb`
* :c:func:`save_natural_mos` * :c:func:`save_natural_mos`
* :c:func:`save_one_body_dm` * :c:func:`save_one_body_dm`
* :c:func:`save_one_e_dm`
* :c:func:`save_ortho_mos` * :c:func:`save_ortho_mos`
* :c:func:`save_ref_determinant` * :c:func:`save_ref_determinant`
* :c:func:`save_wavefunction` * :c:func:`save_wavefunction`

View File

@ -90,6 +90,8 @@ def main(arguments):
f.write(f_new) f.write(f_new)
print "Done" print "Done"
with open( os.path.join(QP_ROOT,"REPLACE"), 'a') as f:
print >>f, "qp_name "+" ".join(sys.argv[1:])

View File

@ -10,16 +10,16 @@ doc: Projected energy computed with the wave function
interface: ezfio, provider interface: ezfio, provider
size: (determinants.n_states) size: (determinants.n_states)
[data_one_body_alpha_dm_mo] [data_one_e_dm_alpha_mo]
interface: ezfio, provider interface: ezfio, provider
doc: Alpha one body density matrix on the MO basis computed with the wave function doc: Alpha one body density matrix on the |MO| basis computed with the wave function
type: double precision type: double precision
size: (mo_basis.mo_num,mo_basis.mo_num,determinants.n_states) size: (mo_basis.mo_num,mo_basis.mo_num,determinants.n_states)
[data_one_body_beta_dm_mo] [data_one_e_dm_beta_mo]
interface: ezfio, provider interface: ezfio, provider
doc: Beta one body density matrix on the MO basis computed with the wave function doc: Beta one body density matrix on the |MO| basis computed with the wave function
type: double precision type: double precision
size: (mo_basis.mo_num,mo_basis.mo_num,determinants.n_states) size: (mo_basis.mo_num,mo_basis.mo_num,determinants.n_states)

View File

@ -12,7 +12,7 @@ on the density in order to speed up convergence.
The main providers of that module are: The main providers of that module are:
* `data_one_body_alpha_dm_mo` and `data_one_body_beta_dm_mo` which are the * `data_one_e_dm_alpha_mo` and `data_one_e_dm_beta_mo` which are the
one-body alpha and beta densities which are necessary read from the EZFIO one-body alpha and beta densities which are necessary read from the EZFIO
folder. folder.

View File

@ -1,78 +1,78 @@
BEGIN_PROVIDER [double precision, one_body_dm_mo_alpha_for_dft, (mo_num,mo_num, N_states)] BEGIN_PROVIDER [double precision, one_e_dm_mo_alpha_for_dft, (mo_num,mo_num, N_states)]
implicit none implicit none
BEGIN_DOC BEGIN_DOC
! density matrix for alpha electrons in the MO basis used for all DFT calculations based on the density ! density matrix for alpha electrons in the MO basis used for all DFT calculations based on the density
END_DOC END_DOC
double precision :: delta_alpha(mo_num,mo_num,N_states) double precision :: delta_alpha(mo_num,mo_num,N_states)
if(density_for_dft .EQ. "damping_rs_dft")then if(density_for_dft .EQ. "damping_rs_dft")then
delta_alpha = one_body_dm_mo_alpha - data_one_body_alpha_dm_mo delta_alpha = one_e_dm_mo_alpha - data_one_e_dm_alpha_mo
one_body_dm_mo_alpha_for_dft = data_one_body_alpha_dm_mo + damping_for_rs_dft * delta_alpha one_e_dm_mo_alpha_for_dft = data_one_e_dm_alpha_mo + damping_for_rs_dft * delta_alpha
else if (density_for_dft .EQ. "input_density")then else if (density_for_dft .EQ. "input_density")then
one_body_dm_mo_alpha_for_dft = data_one_body_alpha_dm_mo one_e_dm_mo_alpha_for_dft = data_one_e_dm_alpha_mo
else if (density_for_dft .EQ. "WFT")then else if (density_for_dft .EQ. "WFT")then
provide mo_coef provide mo_coef
one_body_dm_mo_alpha_for_dft = one_body_dm_mo_alpha one_e_dm_mo_alpha_for_dft = one_e_dm_mo_alpha
else if (density_for_dft .EQ. "KS")then else if (density_for_dft .EQ. "KS")then
provide mo_coef provide mo_coef
one_body_dm_mo_alpha_for_dft = one_body_dm_mo_alpha_one_det one_e_dm_mo_alpha_for_dft = one_body_dm_mo_alpha_one_det
endif endif
END_PROVIDER END_PROVIDER
BEGIN_PROVIDER [double precision, one_body_dm_mo_beta_for_dft, (mo_num,mo_num, N_states)] BEGIN_PROVIDER [double precision, one_e_dm_mo_beta_for_dft, (mo_num,mo_num, N_states)]
implicit none implicit none
BEGIN_DOC BEGIN_DOC
! density matrix for beta electrons in the MO basis used for all DFT calculations based on the density ! density matrix for beta electrons in the MO basis used for all DFT calculations based on the density
END_DOC END_DOC
double precision :: delta_beta(mo_num,mo_num,N_states) double precision :: delta_beta(mo_num,mo_num,N_states)
if(density_for_dft .EQ. "damping_rs_dft")then if(density_for_dft .EQ. "damping_rs_dft")then
delta_beta = one_body_dm_mo_beta - data_one_body_beta_dm_mo delta_beta = one_e_dm_mo_beta - data_one_e_dm_beta_mo
one_body_dm_mo_beta_for_dft = data_one_body_beta_dm_mo + damping_for_rs_dft * delta_beta one_e_dm_mo_beta_for_dft = data_one_e_dm_beta_mo + damping_for_rs_dft * delta_beta
else if (density_for_dft .EQ. "input_density")then else if (density_for_dft .EQ. "input_density")then
one_body_dm_mo_beta_for_dft = data_one_body_beta_dm_mo one_e_dm_mo_beta_for_dft = data_one_e_dm_beta_mo
else if (density_for_dft .EQ. "WFT")then else if (density_for_dft .EQ. "WFT")then
provide mo_coef provide mo_coef
one_body_dm_mo_beta_for_dft = one_body_dm_mo_beta one_e_dm_mo_beta_for_dft = one_e_dm_mo_beta
else if (density_for_dft .EQ. "KS")then else if (density_for_dft .EQ. "KS")then
provide mo_coef provide mo_coef
one_body_dm_mo_beta_for_dft = one_body_dm_mo_beta_one_det one_e_dm_mo_beta_for_dft = one_body_dm_mo_beta_one_det
endif endif
END_PROVIDER END_PROVIDER
BEGIN_PROVIDER [double precision, one_body_dm_mo_for_dft, (mo_num,mo_num, N_states)] BEGIN_PROVIDER [double precision, one_e_dm_mo_for_dft, (mo_num,mo_num, N_states)]
implicit none implicit none
one_body_dm_mo_for_dft = one_body_dm_mo_beta_for_dft + one_body_dm_mo_alpha_for_dft one_e_dm_mo_for_dft = one_e_dm_mo_beta_for_dft + one_e_dm_mo_alpha_for_dft
END_PROVIDER END_PROVIDER
BEGIN_PROVIDER [double precision, one_body_dm_average_mo_for_dft, (mo_num,mo_num)] BEGIN_PROVIDER [double precision, one_e_dm_average_mo_for_dft, (mo_num,mo_num)]
implicit none implicit none
integer :: i integer :: i
one_body_dm_average_mo_for_dft = 0.d0 one_e_dm_average_mo_for_dft = 0.d0
do i = 1, N_states do i = 1, N_states
one_body_dm_average_mo_for_dft(:,:) += one_body_dm_mo_for_dft(:,:,i) * state_average_weight(i) one_e_dm_average_mo_for_dft(:,:) += one_e_dm_mo_for_dft(:,:,i) * state_average_weight(i)
enddo enddo
END_PROVIDER END_PROVIDER
BEGIN_PROVIDER [ double precision, one_body_dm_alpha_ao_for_dft, (ao_num,ao_num,N_states) ] BEGIN_PROVIDER [ double precision, one_e_dm_alpha_ao_for_dft, (ao_num,ao_num,N_states) ]
&BEGIN_PROVIDER [ double precision, one_body_dm_beta_ao_for_dft, (ao_num,ao_num,N_states) ] &BEGIN_PROVIDER [ double precision, one_e_dm_beta_ao_for_dft, (ao_num,ao_num,N_states) ]
BEGIN_DOC BEGIN_DOC
! one body density matrix on the AO basis based on one_body_dm_mo_alpha_for_dft ! one body density matrix on the AO basis based on one_e_dm_mo_alpha_for_dft
END_DOC END_DOC
implicit none implicit none
integer :: istate integer :: istate
double precision :: mo_alpha,mo_beta double precision :: mo_alpha,mo_beta
one_body_dm_alpha_ao_for_dft = 0.d0 one_e_dm_alpha_ao_for_dft = 0.d0
one_body_dm_beta_ao_for_dft = 0.d0 one_e_dm_beta_ao_for_dft = 0.d0
do istate = 1, N_states do istate = 1, N_states
call mo_to_ao_no_overlap( one_body_dm_mo_alpha_for_dft(1,1,istate), & call mo_to_ao_no_overlap( one_e_dm_mo_alpha_for_dft(1,1,istate), &
size(one_body_dm_mo_alpha_for_dft,1), & size(one_e_dm_mo_alpha_for_dft,1), &
one_body_dm_alpha_ao_for_dft(1,1,istate), & one_e_dm_alpha_ao_for_dft(1,1,istate), &
size(one_body_dm_alpha_ao_for_dft,1) ) size(one_e_dm_alpha_ao_for_dft,1) )
call mo_to_ao_no_overlap( one_body_dm_mo_beta_for_dft(1,1,istate), & call mo_to_ao_no_overlap( one_e_dm_mo_beta_for_dft(1,1,istate), &
size(one_body_dm_mo_beta_for_dft,1), & size(one_e_dm_mo_beta_for_dft,1), &
one_body_dm_beta_ao_for_dft(1,1,istate), & one_e_dm_beta_ao_for_dft(1,1,istate), &
size(one_body_dm_beta_ao_for_dft,1) ) size(one_e_dm_beta_ao_for_dft,1) )
enddo enddo
END_PROVIDER END_PROVIDER

View File

@ -1,19 +1,19 @@
BEGIN_PROVIDER [ double precision, one_body_dm_mo_alpha_average, (mo_num,mo_num) ] BEGIN_PROVIDER [ double precision, one_e_dm_mo_alpha_average, (mo_num,mo_num) ]
&BEGIN_PROVIDER [ double precision, one_body_dm_mo_beta_average, (mo_num,mo_num) ] &BEGIN_PROVIDER [ double precision, one_e_dm_mo_beta_average, (mo_num,mo_num) ]
implicit none implicit none
BEGIN_DOC BEGIN_DOC
! $\alpha$ and $\beta$ one-body density matrix for each state ! $\alpha$ and $\beta$ one-body density matrix for each state
END_DOC END_DOC
integer :: i integer :: i
one_body_dm_mo_alpha_average = 0.d0 one_e_dm_mo_alpha_average = 0.d0
one_body_dm_mo_beta_average = 0.d0 one_e_dm_mo_beta_average = 0.d0
do i = 1,N_states do i = 1,N_states
one_body_dm_mo_alpha_average(:,:) += one_body_dm_mo_alpha(:,:,i) * state_average_weight(i) one_e_dm_mo_alpha_average(:,:) += one_e_dm_mo_alpha(:,:,i) * state_average_weight(i)
one_body_dm_mo_beta_average(:,:) += one_body_dm_mo_beta(:,:,i) * state_average_weight(i) one_e_dm_mo_beta_average(:,:) += one_e_dm_mo_beta(:,:,i) * state_average_weight(i)
enddo enddo
END_PROVIDER END_PROVIDER
BEGIN_PROVIDER [ double precision, one_body_dm_mo_diff, (mo_num,mo_num,2:N_states) ] BEGIN_PROVIDER [ double precision, one_e_dm_mo_diff, (mo_num,mo_num,2:N_states) ]
implicit none implicit none
BEGIN_DOC BEGIN_DOC
! Difference of the one-body density matrix with respect to the ground state ! Difference of the one-body density matrix with respect to the ground state
@ -23,9 +23,9 @@ BEGIN_PROVIDER [ double precision, one_body_dm_mo_diff, (mo_num,mo_num,2:N_state
do istate=2,N_states do istate=2,N_states
do j=1,mo_num do j=1,mo_num
do i=1,mo_num do i=1,mo_num
one_body_dm_mo_diff(i,j,istate) = & one_e_dm_mo_diff(i,j,istate) = &
one_body_dm_mo_alpha(i,j,istate) - one_body_dm_mo_alpha(i,j,1) +& one_e_dm_mo_alpha(i,j,istate) - one_e_dm_mo_alpha(i,j,1) +&
one_body_dm_mo_beta (i,j,istate) - one_body_dm_mo_beta (i,j,1) one_e_dm_mo_beta (i,j,istate) - one_e_dm_mo_beta (i,j,1)
enddo enddo
enddo enddo
enddo enddo
@ -33,14 +33,14 @@ BEGIN_PROVIDER [ double precision, one_body_dm_mo_diff, (mo_num,mo_num,2:N_state
END_PROVIDER END_PROVIDER
BEGIN_PROVIDER [ double precision, one_body_dm_mo_spin_index, (mo_num,mo_num,N_states,2) ] BEGIN_PROVIDER [ double precision, one_e_dm_mo_spin_index, (mo_num,mo_num,N_states,2) ]
implicit none implicit none
integer :: i,j,ispin,istate integer :: i,j,ispin,istate
ispin = 1 ispin = 1
do istate = 1, N_states do istate = 1, N_states
do j = 1, mo_num do j = 1, mo_num
do i = 1, mo_num do i = 1, mo_num
one_body_dm_mo_spin_index(i,j,istate,ispin) = one_body_dm_mo_alpha(i,j,istate) one_e_dm_mo_spin_index(i,j,istate,ispin) = one_e_dm_mo_alpha(i,j,istate)
enddo enddo
enddo enddo
enddo enddo
@ -49,7 +49,7 @@ BEGIN_PROVIDER [ double precision, one_body_dm_mo_spin_index, (mo_num,mo_num,N_s
do istate = 1, N_states do istate = 1, N_states
do j = 1, mo_num do j = 1, mo_num
do i = 1, mo_num do i = 1, mo_num
one_body_dm_mo_spin_index(i,j,istate,ispin) = one_body_dm_mo_beta(i,j,istate) one_e_dm_mo_spin_index(i,j,istate,ispin) = one_e_dm_mo_beta(i,j,istate)
enddo enddo
enddo enddo
enddo enddo
@ -57,16 +57,16 @@ BEGIN_PROVIDER [ double precision, one_body_dm_mo_spin_index, (mo_num,mo_num,N_s
END_PROVIDER END_PROVIDER
BEGIN_PROVIDER [ double precision, one_body_dm_dagger_mo_spin_index, (mo_num,mo_num,N_states,2) ] BEGIN_PROVIDER [ double precision, one_e_dm_dagger_mo_spin_index, (mo_num,mo_num,N_states,2) ]
implicit none implicit none
integer :: i,j,ispin,istate integer :: i,j,ispin,istate
ispin = 1 ispin = 1
do istate = 1, N_states do istate = 1, N_states
do j = 1, mo_num do j = 1, mo_num
one_body_dm_dagger_mo_spin_index(j,j,istate,ispin) = 1 - one_body_dm_mo_alpha(j,j,istate) one_e_dm_dagger_mo_spin_index(j,j,istate,ispin) = 1 - one_e_dm_mo_alpha(j,j,istate)
do i = j+1, mo_num do i = j+1, mo_num
one_body_dm_dagger_mo_spin_index(i,j,istate,ispin) = -one_body_dm_mo_alpha(i,j,istate) one_e_dm_dagger_mo_spin_index(i,j,istate,ispin) = -one_e_dm_mo_alpha(i,j,istate)
one_body_dm_dagger_mo_spin_index(j,i,istate,ispin) = -one_body_dm_mo_alpha(i,j,istate) one_e_dm_dagger_mo_spin_index(j,i,istate,ispin) = -one_e_dm_mo_alpha(i,j,istate)
enddo enddo
enddo enddo
enddo enddo
@ -74,18 +74,18 @@ BEGIN_PROVIDER [ double precision, one_body_dm_dagger_mo_spin_index, (mo_num,mo_
ispin = 2 ispin = 2
do istate = 1, N_states do istate = 1, N_states
do j = 1, mo_num do j = 1, mo_num
one_body_dm_dagger_mo_spin_index(j,j,istate,ispin) = 1 - one_body_dm_mo_beta(j,j,istate) one_e_dm_dagger_mo_spin_index(j,j,istate,ispin) = 1 - one_e_dm_mo_beta(j,j,istate)
do i = j+1, mo_num do i = j+1, mo_num
one_body_dm_dagger_mo_spin_index(i,j,istate,ispin) = -one_body_dm_mo_beta(i,j,istate) one_e_dm_dagger_mo_spin_index(i,j,istate,ispin) = -one_e_dm_mo_beta(i,j,istate)
one_body_dm_dagger_mo_spin_index(j,i,istate,ispin) = -one_body_dm_mo_beta(i,j,istate) one_e_dm_dagger_mo_spin_index(j,i,istate,ispin) = -one_e_dm_mo_beta(i,j,istate)
enddo enddo
enddo enddo
enddo enddo
END_PROVIDER END_PROVIDER
BEGIN_PROVIDER [ double precision, one_body_dm_mo_alpha, (mo_num,mo_num,N_states) ] BEGIN_PROVIDER [ double precision, one_e_dm_mo_alpha, (mo_num,mo_num,N_states) ]
&BEGIN_PROVIDER [ double precision, one_body_dm_mo_beta, (mo_num,mo_num,N_states) ] &BEGIN_PROVIDER [ double precision, one_e_dm_mo_beta, (mo_num,mo_num,N_states) ]
implicit none implicit none
BEGIN_DOC BEGIN_DOC
! $\alpha$ and $\beta$ one-body density matrix for each state ! $\alpha$ and $\beta$ one-body density matrix for each state
@ -103,13 +103,13 @@ END_PROVIDER
PROVIDE psi_det PROVIDE psi_det
one_body_dm_mo_alpha = 0.d0 one_e_dm_mo_alpha = 0.d0
one_body_dm_mo_beta = 0.d0 one_e_dm_mo_beta = 0.d0
!$OMP PARALLEL DEFAULT(NONE) & !$OMP PARALLEL DEFAULT(NONE) &
!$OMP PRIVATE(j,k,k_a,k_b,l,m,occ,ck, cl, ckl,phase,h1,h2,p1,p2,s1,s2, degree,exc,& !$OMP PRIVATE(j,k,k_a,k_b,l,m,occ,ck, cl, ckl,phase,h1,h2,p1,p2,s1,s2, degree,exc,&
!$OMP tmp_a, tmp_b, n_occ, krow, kcol, lrow, lcol, tmp_det, tmp_det2)& !$OMP tmp_a, tmp_b, n_occ, krow, kcol, lrow, lcol, tmp_det, tmp_det2)&
!$OMP SHARED(psi_det,psi_coef,N_int,N_states,elec_alpha_num, & !$OMP SHARED(psi_det,psi_coef,N_int,N_states,elec_alpha_num, &
!$OMP elec_beta_num,one_body_dm_mo_alpha,one_body_dm_mo_beta,N_det,& !$OMP elec_beta_num,one_e_dm_mo_alpha,one_e_dm_mo_beta,N_det,&
!$OMP mo_num,psi_bilinear_matrix_rows,psi_bilinear_matrix_columns,& !$OMP mo_num,psi_bilinear_matrix_rows,psi_bilinear_matrix_columns,&
!$OMP psi_bilinear_matrix_transp_rows, psi_bilinear_matrix_transp_columns,& !$OMP psi_bilinear_matrix_transp_rows, psi_bilinear_matrix_transp_columns,&
!$OMP psi_bilinear_matrix_order_reverse, psi_det_alpha_unique, psi_det_beta_unique,& !$OMP psi_bilinear_matrix_order_reverse, psi_det_alpha_unique, psi_det_beta_unique,&
@ -168,7 +168,7 @@ END_PROVIDER
!$OMP END DO NOWAIT !$OMP END DO NOWAIT
!$OMP CRITICAL !$OMP CRITICAL
one_body_dm_mo_alpha(:,:,:) = one_body_dm_mo_alpha(:,:,:) + tmp_a(:,:,:) one_e_dm_mo_alpha(:,:,:) = one_e_dm_mo_alpha(:,:,:) + tmp_a(:,:,:)
!$OMP END CRITICAL !$OMP END CRITICAL
deallocate(tmp_a) deallocate(tmp_a)
@ -223,7 +223,7 @@ END_PROVIDER
enddo enddo
!$OMP END DO NOWAIT !$OMP END DO NOWAIT
!$OMP CRITICAL !$OMP CRITICAL
one_body_dm_mo_beta(:,:,:) = one_body_dm_mo_beta(:,:,:) + tmp_b(:,:,:) one_e_dm_mo_beta(:,:,:) = one_e_dm_mo_beta(:,:,:) + tmp_b(:,:,:)
!$OMP END CRITICAL !$OMP END CRITICAL
deallocate(tmp_b) deallocate(tmp_b)
@ -231,20 +231,20 @@ END_PROVIDER
END_PROVIDER END_PROVIDER
BEGIN_PROVIDER [ double precision, one_body_dm_mo, (mo_num,mo_num) ] BEGIN_PROVIDER [ double precision, one_e_dm_mo, (mo_num,mo_num) ]
implicit none implicit none
BEGIN_DOC BEGIN_DOC
! One-body density matrix ! One-body density matrix
END_DOC END_DOC
one_body_dm_mo = one_body_dm_mo_alpha_average + one_body_dm_mo_beta_average one_e_dm_mo = one_e_dm_mo_alpha_average + one_e_dm_mo_beta_average
END_PROVIDER END_PROVIDER
BEGIN_PROVIDER [ double precision, one_body_spin_density_mo, (mo_num,mo_num) ] BEGIN_PROVIDER [ double precision, one_e_spin_density_mo, (mo_num,mo_num) ]
implicit none implicit none
BEGIN_DOC BEGIN_DOC
! $\rho(\alpha) - \rho(\beta)$ ! $\rho(\alpha) - \rho(\beta)$
END_DOC END_DOC
one_body_spin_density_mo = one_body_dm_mo_alpha_average - one_body_dm_mo_beta_average one_e_spin_density_mo = one_e_dm_mo_alpha_average - one_e_dm_mo_beta_average
END_PROVIDER END_PROVIDER
subroutine set_natural_mos subroutine set_natural_mos
@ -257,7 +257,7 @@ subroutine set_natural_mos
double precision, allocatable :: tmp(:,:) double precision, allocatable :: tmp(:,:)
label = "Natural" label = "Natural"
call mo_as_svd_vectors_of_mo_matrix_eig(one_body_dm_mo,size(one_body_dm_mo,1),mo_num,mo_num,mo_occ,label) call mo_as_svd_vectors_of_mo_matrix_eig(one_e_dm_mo,size(one_e_dm_mo,1),mo_num,mo_num,mo_occ,label)
soft_touch mo_occ soft_touch mo_occ
end end
@ -320,7 +320,7 @@ BEGIN_PROVIDER [ double precision, state_average_weight, (N_states) ]
END_PROVIDER END_PROVIDER
BEGIN_PROVIDER [ double precision, one_body_spin_density_ao, (ao_num,ao_num) ] BEGIN_PROVIDER [ double precision, one_e_spin_density_ao, (ao_num,ao_num) ]
BEGIN_DOC BEGIN_DOC
! One body spin density matrix on the |AO| basis : $\rho_{AO}(\alpha) - \rho_{AO}(\beta)$ ! One body spin density matrix on the |AO| basis : $\rho_{AO}(\alpha) - \rho_{AO}(\beta)$
END_DOC END_DOC
@ -328,14 +328,14 @@ BEGIN_PROVIDER [ double precision, one_body_spin_density_ao, (ao_num,ao_num) ]
integer :: i,j,k,l integer :: i,j,k,l
double precision :: dm_mo double precision :: dm_mo
one_body_spin_density_ao = 0.d0 one_e_spin_density_ao = 0.d0
do k = 1, ao_num do k = 1, ao_num
do l = 1, ao_num do l = 1, ao_num
do i = 1, mo_num do i = 1, mo_num
do j = 1, mo_num do j = 1, mo_num
dm_mo = one_body_spin_density_mo(j,i) dm_mo = one_e_spin_density_mo(j,i)
! if(dabs(dm_mo).le.1.d-10)cycle ! if(dabs(dm_mo).le.1.d-10)cycle
one_body_spin_density_ao(l,k) += mo_coef(k,i) * mo_coef(l,j) * dm_mo one_e_spin_density_ao(l,k) += mo_coef(k,i) * mo_coef(l,j) * dm_mo
enddo enddo
enddo enddo
@ -344,8 +344,8 @@ BEGIN_PROVIDER [ double precision, one_body_spin_density_ao, (ao_num,ao_num) ]
END_PROVIDER END_PROVIDER
BEGIN_PROVIDER [ double precision, one_body_dm_ao_alpha, (ao_num,ao_num) ] BEGIN_PROVIDER [ double precision, one_e_dm_ao_alpha, (ao_num,ao_num) ]
&BEGIN_PROVIDER [ double precision, one_body_dm_ao_beta, (ao_num,ao_num) ] &BEGIN_PROVIDER [ double precision, one_e_dm_ao_beta, (ao_num,ao_num) ]
BEGIN_DOC BEGIN_DOC
! One body density matrix on the |AO| basis : $\rho_{AO}(\alpha), \rho_{AO}(\beta)$. ! One body density matrix on the |AO| basis : $\rho_{AO}(\alpha), \rho_{AO}(\beta)$.
END_DOC END_DOC
@ -353,17 +353,17 @@ END_PROVIDER
integer :: i,j,k,l integer :: i,j,k,l
double precision :: mo_alpha,mo_beta double precision :: mo_alpha,mo_beta
one_body_dm_ao_alpha = 0.d0 one_e_dm_ao_alpha = 0.d0
one_body_dm_ao_beta = 0.d0 one_e_dm_ao_beta = 0.d0
do k = 1, ao_num do k = 1, ao_num
do l = 1, ao_num do l = 1, ao_num
do i = 1, mo_num do i = 1, mo_num
do j = 1, mo_num do j = 1, mo_num
mo_alpha = one_body_dm_mo_alpha_average(j,i) mo_alpha = one_e_dm_mo_alpha_average(j,i)
mo_beta = one_body_dm_mo_beta_average(j,i) mo_beta = one_e_dm_mo_beta_average(j,i)
! if(dabs(dm_mo).le.1.d-10)cycle ! if(dabs(dm_mo).le.1.d-10)cycle
one_body_dm_ao_alpha(l,k) += mo_coef(k,i) * mo_coef(l,j) * mo_alpha one_e_dm_ao_alpha(l,k) += mo_coef(k,i) * mo_coef(l,j) * mo_alpha
one_body_dm_ao_beta(l,k) += mo_coef(k,i) * mo_coef(l,j) * mo_beta one_e_dm_ao_beta(l,k) += mo_coef(k,i) * mo_coef(l,j) * mo_beta
enddo enddo
enddo enddo
enddo enddo

View File

@ -6,14 +6,14 @@
BEGIN_DOC BEGIN_DOC
! psi_energy_h_core = $\langle \Psi | h_{core} |\Psi \rangle$ ! psi_energy_h_core = $\langle \Psi | h_{core} |\Psi \rangle$
! !
! computed using the :c:data:`one_body_dm_mo_alpha` + ! computed using the :c:data:`one_e_dm_mo_alpha` +
! :c:data:`one_body_dm_mo_beta` and :c:data:`mo_one_e_integrals` ! :c:data:`one_e_dm_mo_beta` and :c:data:`mo_one_e_integrals`
END_DOC END_DOC
psi_energy_h_core = 0.d0 psi_energy_h_core = 0.d0
do i = 1, N_states do i = 1, N_states
do j = 1, mo_num do j = 1, mo_num
do k = 1, mo_num do k = 1, mo_num
psi_energy_h_core(i) += mo_one_e_integrals(k,j) * (one_body_dm_mo_alpha(k,j,i) + one_body_dm_mo_beta(k,j,i)) psi_energy_h_core(i) += mo_one_e_integrals(k,j) * (one_e_dm_mo_alpha(k,j,i) + one_e_dm_mo_beta(k,j,i))
enddo enddo
enddo enddo
enddo enddo
@ -21,7 +21,7 @@
accu = 0.d0 accu = 0.d0
do i = 1, N_states do i = 1, N_states
do j = 1, mo_num do j = 1, mo_num
accu += one_body_dm_mo_alpha(j,j,i) + one_body_dm_mo_beta(j,j,i) accu += one_e_dm_mo_alpha(j,j,i) + one_e_dm_mo_beta(j,j,i)
enddo enddo
accu = (elec_alpha_num + elec_beta_num ) / accu accu = (elec_alpha_num + elec_beta_num ) / accu
psi_energy_h_core(i) = psi_energy_h_core(i) * accu psi_energy_h_core(i) = psi_energy_h_core(i) * accu

View File

@ -10,5 +10,5 @@ The main providers for this module are:
* `aos_in_r_array`: values of the |AO| basis on the grid point. * `aos_in_r_array`: values of the |AO| basis on the grid point.
* `mos_in_r_array`: values of the |MO| basis on the grid point. * `mos_in_r_array`: values of the |MO| basis on the grid point.
* `one_dm_and_grad_alpha_in_r`: values of the density and its gradienst on the grid points. * `one_e_dm_and_grad_alpha_in_r`: values of the density and its gradienst on the grid points.

View File

@ -13,11 +13,11 @@ subroutine dm_dft_alpha_beta_at_r(r,dm_a,dm_b)
do istate = 1, N_states do istate = 1, N_states
aos_array_bis = aos_array aos_array_bis = aos_array
! alpha density ! alpha density
call dgemv('N',ao_num,ao_num,1.d0,one_body_dm_alpha_ao_for_dft(1,1,istate),ao_num,aos_array,1,0.d0,aos_array_bis,1) call dgemv('N',ao_num,ao_num,1.d0,one_e_dm_alpha_ao_for_dft(1,1,istate),ao_num,aos_array,1,0.d0,aos_array_bis,1)
dm_a(istate) = u_dot_v(aos_array,aos_array_bis,ao_num) dm_a(istate) = u_dot_v(aos_array,aos_array_bis,ao_num)
! beta density ! beta density
aos_array_bis = aos_array aos_array_bis = aos_array
call dgemv('N',ao_num,ao_num,1.d0,one_body_dm_beta_ao_for_dft(1,1,istate),ao_num,aos_array,1,0.d0,aos_array_bis,1) call dgemv('N',ao_num,ao_num,1.d0,one_e_dm_beta_ao_for_dft(1,1,istate),ao_num,aos_array,1,0.d0,aos_array_bis,1)
dm_b(istate) = u_dot_v(aos_array,aos_array_bis,ao_num) dm_b(istate) = u_dot_v(aos_array,aos_array_bis,ao_num)
enddo enddo
end end
@ -40,11 +40,11 @@ subroutine dm_dft_alpha_beta_and_all_aos_at_r(r,dm_a,dm_b,aos_array)
do istate = 1, N_states do istate = 1, N_states
aos_array_bis = aos_array aos_array_bis = aos_array
! alpha density ! alpha density
call dsymv('U',ao_num,1.d0,one_body_dm_alpha_ao_for_dft(1,1,istate),size(one_body_dm_alpha_ao_for_dft,1),aos_array,1,0.d0,aos_array_bis,1) call dsymv('U',ao_num,1.d0,one_e_dm_alpha_ao_for_dft(1,1,istate),size(one_e_dm_alpha_ao_for_dft,1),aos_array,1,0.d0,aos_array_bis,1)
dm_a(istate) = u_dot_v(aos_array,aos_array_bis,ao_num) dm_a(istate) = u_dot_v(aos_array,aos_array_bis,ao_num)
! beta density ! beta density
aos_array_bis = aos_array aos_array_bis = aos_array
call dsymv('U',ao_num,1.d0,one_body_dm_beta_ao_for_dft(1,1,istate),size(one_body_dm_beta_ao_for_dft,1),aos_array,1,0.d0,aos_array_bis,1) call dsymv('U',ao_num,1.d0,one_e_dm_beta_ao_for_dft(1,1,istate),size(one_e_dm_beta_ao_for_dft,1),aos_array,1,0.d0,aos_array_bis,1)
dm_b(istate) = u_dot_v(aos_array,aos_array_bis,ao_num) dm_b(istate) = u_dot_v(aos_array,aos_array_bis,ao_num)
enddo enddo
end end
@ -80,7 +80,7 @@ end
do istate = 1, N_states do istate = 1, N_states
! alpha density ! alpha density
! aos_array_bis = \rho_ao * aos_array ! aos_array_bis = \rho_ao * aos_array
call dsymv('U',ao_num,1.d0,one_body_dm_alpha_ao_for_dft(1,1,istate),size(one_body_dm_alpha_ao_for_dft,1),aos_array,1,0.d0,aos_array_bis,1) call dsymv('U',ao_num,1.d0,one_e_dm_alpha_ao_for_dft(1,1,istate),size(one_e_dm_alpha_ao_for_dft,1),aos_array,1,0.d0,aos_array_bis,1)
dm_a(istate) = u_dot_v(aos_array,aos_array_bis,ao_num) dm_a(istate) = u_dot_v(aos_array,aos_array_bis,ao_num)
! grad_dm(1) = \sum_i aos_grad_array(i,1) * aos_array_bis(i) ! grad_dm(1) = \sum_i aos_grad_array(i,1) * aos_array_bis(i)
@ -91,7 +91,7 @@ end
! aos_grad_array_bis = \rho_ao * aos_grad_array ! aos_grad_array_bis = \rho_ao * aos_grad_array
! beta density ! beta density
call dsymv('U',ao_num,1.d0,one_body_dm_beta_ao_for_dft(1,1,istate),size(one_body_dm_beta_ao_for_dft,1),aos_array,1,0.d0,aos_array_bis,1) call dsymv('U',ao_num,1.d0,one_e_dm_beta_ao_for_dft(1,1,istate),size(one_e_dm_beta_ao_for_dft,1),aos_array,1,0.d0,aos_array_bis,1)
dm_b(istate) = u_dot_v(aos_array,aos_array_bis,ao_num) dm_b(istate) = u_dot_v(aos_array,aos_array_bis,ao_num)
! grad_dm(1) = \sum_i aos_grad_array(i,1) * aos_array_bis(i) ! grad_dm(1) = \sum_i aos_grad_array(i,1) * aos_array_bis(i)
@ -103,8 +103,8 @@ end
enddo enddo
end end
BEGIN_PROVIDER [double precision, one_dm_alpha_in_r, (n_points_integration_angular,n_points_radial_grid,nucl_num,N_states) ] BEGIN_PROVIDER [double precision, one_e_dm_alpha_in_r, (n_points_integration_angular,n_points_radial_grid,nucl_num,N_states) ]
&BEGIN_PROVIDER [double precision, one_dm_beta_in_r, (n_points_integration_angular,n_points_radial_grid,nucl_num,N_states) ] &BEGIN_PROVIDER [double precision, one_e_dm_beta_in_r, (n_points_integration_angular,n_points_radial_grid,nucl_num,N_states) ]
implicit none implicit none
integer :: i,j,k,l,m,istate integer :: i,j,k,l,m,istate
double precision :: contrib double precision :: contrib
@ -114,8 +114,8 @@ end
do k = 1, n_points_radial_grid -1 do k = 1, n_points_radial_grid -1
do l = 1, n_points_integration_angular do l = 1, n_points_integration_angular
do istate = 1, N_States do istate = 1, N_States
one_dm_alpha_in_r(l,k,j,istate) = 0.d0 one_e_dm_alpha_in_r(l,k,j,istate) = 0.d0
one_dm_beta_in_r(l,k,j,istate) = 0.d0 one_e_dm_beta_in_r(l,k,j,istate) = 0.d0
enddo enddo
r(1) = grid_points_per_atom(1,l,k,j) r(1) = grid_points_per_atom(1,l,k,j)
r(2) = grid_points_per_atom(2,l,k,j) r(2) = grid_points_per_atom(2,l,k,j)
@ -124,8 +124,8 @@ end
double precision :: dm_a(N_states),dm_b(N_states) double precision :: dm_a(N_states),dm_b(N_states)
call dm_dft_alpha_beta_at_r(r,dm_a,dm_b) call dm_dft_alpha_beta_at_r(r,dm_a,dm_b)
do istate=1,N_states do istate=1,N_states
one_dm_alpha_in_r(l,k,j,istate) = dm_a(istate) one_e_dm_alpha_in_r(l,k,j,istate) = dm_a(istate)
one_dm_beta_in_r(l,k,j,istate) = dm_b(istate) one_e_dm_beta_in_r(l,k,j,istate) = dm_b(istate)
enddo enddo
enddo enddo
@ -135,12 +135,12 @@ end
END_PROVIDER END_PROVIDER
BEGIN_PROVIDER [double precision, one_body_dm_alpha_at_r, (n_points_final_grid,N_states) ] BEGIN_PROVIDER [double precision, one_e_dm_alpha_at_r, (n_points_final_grid,N_states) ]
&BEGIN_PROVIDER [double precision, one_body_dm_beta_at_r, (n_points_final_grid,N_states) ] &BEGIN_PROVIDER [double precision, one_e_dm_beta_at_r, (n_points_final_grid,N_states) ]
implicit none implicit none
BEGIN_DOC BEGIN_DOC
! one_body_dm_alpha_at_r(i,istate) = n_alpha(r_i,istate) ! one_e_dm_alpha_at_r(i,istate) = n_alpha(r_i,istate)
! one_body_dm_beta_at_r(i,istate) = n_beta(r_i,istate) ! one_e_dm_beta_at_r(i,istate) = n_beta(r_i,istate)
! where r_i is the ith point of the grid and istate is the state number ! where r_i is the ith point of the grid and istate is the state number
END_DOC END_DOC
integer :: i,istate integer :: i,istate
@ -153,24 +153,24 @@ END_PROVIDER
r(2) = final_grid_points(2,i) r(2) = final_grid_points(2,i)
r(3) = final_grid_points(3,i) r(3) = final_grid_points(3,i)
call dm_dft_alpha_beta_at_r(r,dm_a,dm_b) call dm_dft_alpha_beta_at_r(r,dm_a,dm_b)
one_body_dm_alpha_at_r(i,istate) = dm_a(istate) one_e_dm_alpha_at_r(i,istate) = dm_a(istate)
one_body_dm_beta_at_r(i,istate) = dm_b(istate) one_e_dm_beta_at_r(i,istate) = dm_b(istate)
enddo enddo
enddo enddo
END_PROVIDER END_PROVIDER
BEGIN_PROVIDER [double precision, one_dm_and_grad_alpha_in_r, (4,n_points_final_grid,N_states) ] BEGIN_PROVIDER [double precision, one_e_dm_and_grad_alpha_in_r, (4,n_points_final_grid,N_states) ]
&BEGIN_PROVIDER [double precision, one_dm_and_grad_beta_in_r, (4,n_points_final_grid,N_states) ] &BEGIN_PROVIDER [double precision, one_e_dm_and_grad_beta_in_r, (4,n_points_final_grid,N_states) ]
&BEGIN_PROVIDER [double precision, one_body_grad_2_dm_alpha_at_r, (n_points_final_grid,N_states) ] &BEGIN_PROVIDER [double precision, one_e_grad_2_dm_alpha_at_r, (n_points_final_grid,N_states) ]
&BEGIN_PROVIDER [double precision, one_body_grad_2_dm_beta_at_r, (n_points_final_grid,N_states) ] &BEGIN_PROVIDER [double precision, one_e_grad_2_dm_beta_at_r, (n_points_final_grid,N_states) ]
BEGIN_DOC BEGIN_DOC
! one_dm_and_grad_alpha_in_r(1,i,i_state) = d\dx n_alpha(r_i,istate) ! one_e_dm_and_grad_alpha_in_r(1,i,i_state) = d\dx n_alpha(r_i,istate)
! one_dm_and_grad_alpha_in_r(2,i,i_state) = d\dy n_alpha(r_i,istate) ! one_e_dm_and_grad_alpha_in_r(2,i,i_state) = d\dy n_alpha(r_i,istate)
! one_dm_and_grad_alpha_in_r(3,i,i_state) = d\dz n_alpha(r_i,istate) ! one_e_dm_and_grad_alpha_in_r(3,i,i_state) = d\dz n_alpha(r_i,istate)
! one_dm_and_grad_alpha_in_r(4,i,i_state) = n_alpha(r_i,istate) ! one_e_dm_and_grad_alpha_in_r(4,i,i_state) = n_alpha(r_i,istate)
! one_body_grad_2_dm_alpha_at_r(i,istate) = d\dx n_alpha(r_i,istate)^2 + d\dy n_alpha(r_i,istate)^2 + d\dz n_alpha(r_i,istate)^2 ! one_e_grad_2_dm_alpha_at_r(i,istate) = d\dx n_alpha(r_i,istate)^2 + d\dy n_alpha(r_i,istate)^2 + d\dz n_alpha(r_i,istate)^2
! where r_i is the ith point of the grid and istate is the state number ! where r_i is the ith point of the grid and istate is the state number
END_DOC END_DOC
implicit none implicit none
@ -188,17 +188,17 @@ END_PROVIDER
r(3) = final_grid_points(3,i) r(3) = final_grid_points(3,i)
!!!! Works also with the ao basis !!!! Works also with the ao basis
call density_and_grad_alpha_beta_and_all_aos_and_grad_aos_at_r(r,dm_a,dm_b, dm_a_grad, dm_b_grad, aos_array, grad_aos_array) call density_and_grad_alpha_beta_and_all_aos_and_grad_aos_at_r(r,dm_a,dm_b, dm_a_grad, dm_b_grad, aos_array, grad_aos_array)
one_dm_and_grad_alpha_in_r(1,i,istate) = dm_a_grad(1,istate) one_e_dm_and_grad_alpha_in_r(1,i,istate) = dm_a_grad(1,istate)
one_dm_and_grad_alpha_in_r(2,i,istate) = dm_a_grad(2,istate) one_e_dm_and_grad_alpha_in_r(2,i,istate) = dm_a_grad(2,istate)
one_dm_and_grad_alpha_in_r(3,i,istate) = dm_a_grad(3,istate) one_e_dm_and_grad_alpha_in_r(3,i,istate) = dm_a_grad(3,istate)
one_dm_and_grad_alpha_in_r(4,i,istate) = dm_a(istate) one_e_dm_and_grad_alpha_in_r(4,i,istate) = dm_a(istate)
one_body_grad_2_dm_alpha_at_r(i,istate) = dm_a_grad(1,istate) * dm_a_grad(1,istate) + dm_a_grad(2,istate) * dm_a_grad(2,istate) + dm_a_grad(3,istate) * dm_a_grad(3,istate) one_e_grad_2_dm_alpha_at_r(i,istate) = dm_a_grad(1,istate) * dm_a_grad(1,istate) + dm_a_grad(2,istate) * dm_a_grad(2,istate) + dm_a_grad(3,istate) * dm_a_grad(3,istate)
one_dm_and_grad_beta_in_r(1,i,istate) = dm_b_grad(1,istate) one_e_dm_and_grad_beta_in_r(1,i,istate) = dm_b_grad(1,istate)
one_dm_and_grad_beta_in_r(2,i,istate) = dm_b_grad(2,istate) one_e_dm_and_grad_beta_in_r(2,i,istate) = dm_b_grad(2,istate)
one_dm_and_grad_beta_in_r(3,i,istate) = dm_b_grad(3,istate) one_e_dm_and_grad_beta_in_r(3,i,istate) = dm_b_grad(3,istate)
one_dm_and_grad_beta_in_r(4,i,istate) = dm_b(istate) one_e_dm_and_grad_beta_in_r(4,i,istate) = dm_b(istate)
one_body_grad_2_dm_beta_at_r(i,istate) = dm_b_grad(1,istate) * dm_b_grad(1,istate) + dm_b_grad(2,istate) * dm_b_grad(2,istate) + dm_b_grad(3,istate) * dm_b_grad(3,istate) one_e_grad_2_dm_beta_at_r(i,istate) = dm_b_grad(1,istate) * dm_b_grad(1,istate) + dm_b_grad(2,istate) * dm_b_grad(2,istate) + dm_b_grad(3,istate) * dm_b_grad(3,istate)
enddo enddo
enddo enddo

View File

@ -20,8 +20,8 @@
r(2) = final_grid_points(2,i) r(2) = final_grid_points(2,i)
r(3) = final_grid_points(3,i) r(3) = final_grid_points(3,i)
weight = final_weight_at_r_vector(i) weight = final_weight_at_r_vector(i)
rhoa(istate) = one_body_dm_alpha_at_r(i,istate) rhoa(istate) = one_e_dm_alpha_at_r(i,istate)
rhob(istate) = one_body_dm_beta_at_r(i,istate) rhob(istate) = one_e_dm_beta_at_r(i,istate)
call ec_LDA(rhoa(istate),rhob(istate),e_c,vc_a,vc_b) call ec_LDA(rhoa(istate),rhob(istate),e_c,vc_a,vc_b)
call ex_LDA(rhoa(istate),rhob(istate),e_x,vx_a,vx_b) call ex_LDA(rhoa(istate),rhob(istate),e_x,vx_a,vx_b)
energy_x_LDA(istate) += weight * e_x energy_x_LDA(istate) += weight * e_x
@ -59,10 +59,10 @@
r(2) = final_grid_points(2,i) r(2) = final_grid_points(2,i)
r(3) = final_grid_points(3,i) r(3) = final_grid_points(3,i)
weight = final_weight_at_r_vector(i) weight = final_weight_at_r_vector(i)
rho_a(istate) = one_dm_and_grad_alpha_in_r(4,i,istate) rho_a(istate) = one_e_dm_and_grad_alpha_in_r(4,i,istate)
rho_b(istate) = one_dm_and_grad_beta_in_r(4,i,istate) rho_b(istate) = one_e_dm_and_grad_beta_in_r(4,i,istate)
grad_rho_a(1:3,istate) = one_dm_and_grad_alpha_in_r(1:3,i,istate) grad_rho_a(1:3,istate) = one_e_dm_and_grad_alpha_in_r(1:3,i,istate)
grad_rho_b(1:3,istate) = one_dm_and_grad_beta_in_r(1:3,i,istate) grad_rho_b(1:3,istate) = one_e_dm_and_grad_beta_in_r(1:3,i,istate)
grad_rho_a_2 = 0.d0 grad_rho_a_2 = 0.d0
grad_rho_b_2 = 0.d0 grad_rho_b_2 = 0.d0
grad_rho_a_b = 0.d0 grad_rho_a_b = 0.d0

View File

@ -3,7 +3,7 @@
&BEGIN_PROVIDER [double precision, psi_dft_energy_h_core, (N_states) ] &BEGIN_PROVIDER [double precision, psi_dft_energy_h_core, (N_states) ]
implicit none implicit none
BEGIN_DOC BEGIN_DOC
! kinetic, electron-nuclear and total h_core energy computed with the density matrix one_body_dm_mo_beta_for_dft+one_body_dm_mo_alpha_for_dft ! 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
END_DOC END_DOC
integer :: i,j,istate integer :: i,j,istate
double precision :: accu double precision :: accu
@ -12,15 +12,15 @@
do istate = 1, N_states do istate = 1, N_states
do i = 1, mo_num do i = 1, mo_num
do j = 1, mo_num do j = 1, mo_num
psi_dft_energy_kinetic(istate) += ( one_body_dm_mo_alpha_for_dft(j,i,istate)+one_body_dm_mo_beta_for_dft(j,i,istate)) * mo_kinetic_integrals(j,i) psi_dft_energy_kinetic(istate) += ( one_e_dm_mo_alpha_for_dft(j,i,istate)+one_e_dm_mo_beta_for_dft(j,i,istate)) * mo_kinetic_integrals(j,i)
psi_dft_energy_nuclear_elec(istate) += ( one_body_dm_mo_alpha_for_dft(j,i,istate)+one_body_dm_mo_beta_for_dft(j,i,istate)) * mo_integrals_n_e(j,i) psi_dft_energy_nuclear_elec(istate) += ( one_e_dm_mo_alpha_for_dft(j,i,istate)+one_e_dm_mo_beta_for_dft(j,i,istate)) * mo_integrals_n_e(j,i)
enddo enddo
enddo enddo
enddo enddo
accu = 0.d0 accu = 0.d0
do i = 1, N_states do i = 1, N_states
do j = 1, mo_num do j = 1, mo_num
accu += one_body_dm_mo_alpha_for_dft(j,j,i) + one_body_dm_mo_beta_for_dft(j,j,i) accu += one_e_dm_mo_alpha_for_dft(j,j,i) + one_e_dm_mo_beta_for_dft(j,j,i)
enddo enddo
accu = (elec_alpha_num + elec_beta_num ) / accu accu = (elec_alpha_num + elec_beta_num ) / accu
psi_dft_energy_kinetic(i) = psi_dft_energy_kinetic(i) * accu psi_dft_energy_kinetic(i) = psi_dft_energy_kinetic(i) * accu

View File

@ -20,8 +20,8 @@
r(2) = final_grid_points(2,i) r(2) = final_grid_points(2,i)
r(3) = final_grid_points(3,i) r(3) = final_grid_points(3,i)
weight = final_weight_at_r_vector(i) weight = final_weight_at_r_vector(i)
rhoa(istate) = one_body_dm_alpha_at_r(i,istate) rhoa(istate) = one_e_dm_alpha_at_r(i,istate)
rhob(istate) = one_body_dm_beta_at_r(i,istate) rhob(istate) = one_e_dm_beta_at_r(i,istate)
call ec_LDA_sr(mu_local,rhoa(istate),rhob(istate),e_c,vc_a,vc_b) call ec_LDA_sr(mu_local,rhoa(istate),rhob(istate),e_c,vc_a,vc_b)
call ex_LDA_sr(mu_local,rhoa(istate),rhob(istate),e_x,vx_a,vx_b) call ex_LDA_sr(mu_local,rhoa(istate),rhob(istate),e_x,vx_a,vx_b)
do j =1, ao_num do j =1, ao_num
@ -95,10 +95,10 @@
r(2) = final_grid_points(2,i) r(2) = final_grid_points(2,i)
r(3) = final_grid_points(3,i) r(3) = final_grid_points(3,i)
weight = final_weight_at_r_vector(i) weight = final_weight_at_r_vector(i)
rho_a(istate) = one_dm_and_grad_alpha_in_r(4,i,istate) rho_a(istate) = one_e_dm_and_grad_alpha_in_r(4,i,istate)
rho_b(istate) = one_dm_and_grad_beta_in_r(4,i,istate) rho_b(istate) = one_e_dm_and_grad_beta_in_r(4,i,istate)
grad_rho_a(1:3,istate) = one_dm_and_grad_alpha_in_r(1:3,i,istate) grad_rho_a(1:3,istate) = one_e_dm_and_grad_alpha_in_r(1:3,i,istate)
grad_rho_b(1:3,istate) = one_dm_and_grad_beta_in_r(1:3,i,istate) grad_rho_b(1:3,istate) = one_e_dm_and_grad_beta_in_r(1:3,i,istate)
grad_rho_a_2 = 0.d0 grad_rho_a_2 = 0.d0
grad_rho_b_2 = 0.d0 grad_rho_b_2 = 0.d0
grad_rho_a_b = 0.d0 grad_rho_a_b = 0.d0

View File

@ -116,9 +116,9 @@ END_PROVIDER
Trace_v_H(istate) = 0.d0 Trace_v_H(istate) = 0.d0
do i = 1, mo_num do i = 1, mo_num
do j = 1, mo_num do j = 1, mo_num
Trace_v_xc(istate) += (potential_x_alpha_mo(j,i,istate) + potential_c_alpha_mo(j,i,istate)) * one_body_dm_mo_alpha_for_dft(j,i,istate) Trace_v_xc(istate) += (potential_x_alpha_mo(j,i,istate) + potential_c_alpha_mo(j,i,istate)) * one_e_dm_mo_alpha_for_dft(j,i,istate)
Trace_v_xc(istate) += (potential_x_beta_mo(j,i,istate) + potential_c_beta_mo(j,i,istate) ) * one_body_dm_mo_beta_for_dft(j,i,istate) Trace_v_xc(istate) += (potential_x_beta_mo(j,i,istate) + potential_c_beta_mo(j,i,istate) ) * one_e_dm_mo_beta_for_dft(j,i,istate)
dm = one_body_dm_mo_alpha_for_dft(j,i,istate) + one_body_dm_mo_beta_for_dft(j,i,istate) dm = one_e_dm_mo_alpha_for_dft(j,i,istate) + one_e_dm_mo_beta_for_dft(j,i,istate)
Trace_v_H(istate) += dm * short_range_Hartree_operator(j,i,istate) Trace_v_H(istate) += dm * short_range_Hartree_operator(j,i,istate)
enddo enddo
enddo enddo

View File

@ -16,7 +16,7 @@
short_range_Hartree = 0.d0 short_range_Hartree = 0.d0
do i = 1, mo_num do i = 1, mo_num
do j = 1, mo_num do j = 1, mo_num
if(dabs(one_body_dm_average_mo_for_dft(j,i)).le.1.d-12)cycle if(dabs(one_e_dm_average_mo_for_dft(j,i)).le.1.d-12)cycle
call get_mo_two_e_integrals_i1j1(i,j,mo_num,integrals_array,mo_integrals_map) call get_mo_two_e_integrals_i1j1(i,j,mo_num,integrals_array,mo_integrals_map)
call get_mo_two_e_integrals_erf_i1j1(i,j,mo_num,integrals_erf_array,mo_integrals_erf_map) call get_mo_two_e_integrals_erf_i1j1(i,j,mo_num,integrals_erf_array,mo_integrals_erf_map)
do istate = 1, N_states do istate = 1, N_states
@ -24,9 +24,9 @@
do l = 1, mo_num do l = 1, mo_num
integral = integrals_array(l,k) integral = integrals_array(l,k)
integral_erf = integrals_erf_array(l,k) integral_erf = integrals_erf_array(l,k)
contrib = one_body_dm_mo_for_dft(i,j,istate) * (integral - integral_erf) contrib = one_e_dm_mo_for_dft(i,j,istate) * (integral - integral_erf)
short_range_Hartree_operator(l,k,istate) += contrib short_range_Hartree_operator(l,k,istate) += contrib
short_range_Hartree(istate) += contrib * one_body_dm_mo_for_dft(k,l,istate) short_range_Hartree(istate) += contrib * one_e_dm_mo_for_dft(k,l,istate)
enddo enddo
enddo enddo
enddo enddo

View File

@ -20,8 +20,8 @@
r(2) = final_grid_points(2,i) r(2) = final_grid_points(2,i)
r(3) = final_grid_points(3,i) r(3) = final_grid_points(3,i)
weight = final_weight_at_r_vector(i) weight = final_weight_at_r_vector(i)
rhoa(istate) = one_body_dm_alpha_at_r(i,istate) rhoa(istate) = one_e_dm_alpha_at_r(i,istate)
rhob(istate) = one_body_dm_beta_at_r(i,istate) rhob(istate) = one_e_dm_beta_at_r(i,istate)
call ec_LDA_sr(mu_erf_dft,rhoa(istate),rhob(istate),e_c,vc_a,vc_b) call ec_LDA_sr(mu_erf_dft,rhoa(istate),rhob(istate),e_c,vc_a,vc_b)
call ex_LDA_sr(mu_erf_dft,rhoa(istate),rhob(istate),e_x,vx_a,vx_b) call ex_LDA_sr(mu_erf_dft,rhoa(istate),rhob(istate),e_x,vx_a,vx_b)
energy_sr_x_LDA(istate) += weight * e_x energy_sr_x_LDA(istate) += weight * e_x
@ -59,10 +59,10 @@
r(2) = final_grid_points(2,i) r(2) = final_grid_points(2,i)
r(3) = final_grid_points(3,i) r(3) = final_grid_points(3,i)
weight = final_weight_at_r_vector(i) weight = final_weight_at_r_vector(i)
rho_a(istate) = one_dm_and_grad_alpha_in_r(4,i,istate) rho_a(istate) = one_e_dm_and_grad_alpha_in_r(4,i,istate)
rho_b(istate) = one_dm_and_grad_beta_in_r(4,i,istate) rho_b(istate) = one_e_dm_and_grad_beta_in_r(4,i,istate)
grad_rho_a(1:3,istate) = one_dm_and_grad_alpha_in_r(1:3,i,istate) grad_rho_a(1:3,istate) = one_e_dm_and_grad_alpha_in_r(1:3,i,istate)
grad_rho_b(1:3,istate) = one_dm_and_grad_beta_in_r(1:3,i,istate) grad_rho_b(1:3,istate) = one_e_dm_and_grad_beta_in_r(1:3,i,istate)
grad_rho_a_2 = 0.d0 grad_rho_a_2 = 0.d0
grad_rho_b_2 = 0.d0 grad_rho_b_2 = 0.d0
grad_rho_a_b = 0.d0 grad_rho_a_b = 0.d0

View File

@ -18,8 +18,8 @@
r(2) = final_grid_points(2,i) r(2) = final_grid_points(2,i)
r(3) = final_grid_points(3,i) r(3) = final_grid_points(3,i)
weight=final_weight_at_r_vector(i) weight=final_weight_at_r_vector(i)
rhoa(istate) = one_body_dm_alpha_at_r(i,istate) rhoa(istate) = one_e_dm_alpha_at_r(i,istate)
rhob(istate) = one_body_dm_beta_at_r(i,istate) rhob(istate) = one_e_dm_beta_at_r(i,istate)
call ec_LDA_sr(mu_erf_dft,rhoa(istate),rhob(istate),e_c,sr_vc_a,sr_vc_b) call ec_LDA_sr(mu_erf_dft,rhoa(istate),rhob(istate),e_c,sr_vc_a,sr_vc_b)
call ex_LDA_sr(mu_erf_dft,rhoa(istate),rhob(istate),e_x,sr_vx_a,sr_vx_b) call ex_LDA_sr(mu_erf_dft,rhoa(istate),rhob(istate),e_x,sr_vx_a,sr_vx_b)
do j =1, ao_num do j =1, ao_num
@ -107,10 +107,10 @@ END_PROVIDER
r(2) = final_grid_points(2,i) r(2) = final_grid_points(2,i)
r(3) = final_grid_points(3,i) r(3) = final_grid_points(3,i)
weight = final_weight_at_r_vector(i) weight = final_weight_at_r_vector(i)
rho_a(istate) = one_dm_and_grad_alpha_in_r(4,i,istate) rho_a(istate) = one_e_dm_and_grad_alpha_in_r(4,i,istate)
rho_b(istate) = one_dm_and_grad_beta_in_r(4,i,istate) rho_b(istate) = one_e_dm_and_grad_beta_in_r(4,i,istate)
grad_rho_a(1:3,istate) = one_dm_and_grad_alpha_in_r(1:3,i,istate) grad_rho_a(1:3,istate) = one_e_dm_and_grad_alpha_in_r(1:3,i,istate)
grad_rho_b(1:3,istate) = one_dm_and_grad_beta_in_r(1:3,i,istate) grad_rho_b(1:3,istate) = one_e_dm_and_grad_beta_in_r(1:3,i,istate)
grad_rho_a_2 = 0.d0 grad_rho_a_2 = 0.d0
grad_rho_b_2 = 0.d0 grad_rho_b_2 = 0.d0
grad_rho_a_b = 0.d0 grad_rho_a_b = 0.d0

View File

@ -1,6 +1,6 @@
BEGIN_PROVIDER [ double precision, KS_energy] BEGIN_PROVIDER [ double precision, KS_energy]
&BEGIN_PROVIDER [ double precision, two_electron_energy] &BEGIN_PROVIDER [ double precision, two_electron_energy]
&BEGIN_PROVIDER [ double precision, one_electron_energy] &BEGIN_PROVIDER [ double precision, one_e_energy]
&BEGIN_PROVIDER [ double precision, Fock_matrix_energy] &BEGIN_PROVIDER [ double precision, Fock_matrix_energy]
&BEGIN_PROVIDER [ double precision, trace_potential_xc ] &BEGIN_PROVIDER [ double precision, trace_potential_xc ]
implicit none implicit none
@ -11,7 +11,7 @@
integer :: i,j integer :: i,j
double precision :: accu_mono,accu_fock double precision :: accu_mono,accu_fock
KS_energy = nuclear_repulsion KS_energy = nuclear_repulsion
one_electron_energy = 0.d0 one_e_energy = 0.d0
two_electron_energy = 0.d0 two_electron_energy = 0.d0
Fock_matrix_energy = 0.d0 Fock_matrix_energy = 0.d0
trace_potential_xc = 0.d0 trace_potential_xc = 0.d0
@ -21,12 +21,12 @@
Fock_matrix_ao_beta(i,j) * SCF_density_matrix_ao_beta(i,j) Fock_matrix_ao_beta(i,j) * SCF_density_matrix_ao_beta(i,j)
two_electron_energy += 0.5d0 * ( ao_two_e_integral_alpha(i,j) * SCF_density_matrix_ao_alpha(i,j) & two_electron_energy += 0.5d0 * ( ao_two_e_integral_alpha(i,j) * SCF_density_matrix_ao_alpha(i,j) &
+ao_two_e_integral_beta(i,j) * SCF_density_matrix_ao_beta(i,j) ) +ao_two_e_integral_beta(i,j) * SCF_density_matrix_ao_beta(i,j) )
one_electron_energy += ao_one_e_integrals(i,j) * (SCF_density_matrix_ao_alpha(i,j) + SCF_density_matrix_ao_beta (i,j) ) one_e_energy += ao_one_e_integrals(i,j) * (SCF_density_matrix_ao_alpha(i,j) + SCF_density_matrix_ao_beta (i,j) )
trace_potential_xc += ao_potential_alpha_xc(i,j) * SCF_density_matrix_ao_alpha(i,j) + ao_potential_beta_xc(i,j) * SCF_density_matrix_ao_beta (i,j) trace_potential_xc += ao_potential_alpha_xc(i,j) * SCF_density_matrix_ao_alpha(i,j) + ao_potential_beta_xc(i,j) * SCF_density_matrix_ao_beta (i,j)
enddo enddo
enddo enddo
KS_energy += e_exchange_dft + e_correlation_dft + one_electron_energy + two_electron_energy KS_energy += e_exchange_dft + e_correlation_dft + one_e_energy + two_electron_energy
END_PROVIDER END_PROVIDER
BEGIN_PROVIDER [double precision, extra_e_contrib_density] BEGIN_PROVIDER [double precision, extra_e_contrib_density]

View File

@ -1,6 +1,6 @@
BEGIN_PROVIDER [ double precision, RS_KS_energy ] BEGIN_PROVIDER [ double precision, RS_KS_energy ]
&BEGIN_PROVIDER [ double precision, two_electron_energy] &BEGIN_PROVIDER [ double precision, two_electron_energy]
&BEGIN_PROVIDER [ double precision, one_electron_energy] &BEGIN_PROVIDER [ double precision, one_e_energy]
&BEGIN_PROVIDER [ double precision, Fock_matrix_energy] &BEGIN_PROVIDER [ double precision, Fock_matrix_energy]
&BEGIN_PROVIDER [ double precision, trace_potential_xc ] &BEGIN_PROVIDER [ double precision, trace_potential_xc ]
implicit none implicit none
@ -11,7 +11,7 @@
integer :: i,j integer :: i,j
double precision :: accu_mono,accu_fock double precision :: accu_mono,accu_fock
one_electron_energy = 0.d0 one_e_energy = 0.d0
two_electron_energy = 0.d0 two_electron_energy = 0.d0
Fock_matrix_energy = 0.d0 Fock_matrix_energy = 0.d0
trace_potential_xc = 0.d0 trace_potential_xc = 0.d0
@ -21,11 +21,11 @@
Fock_matrix_ao_beta(i,j) * SCF_density_matrix_ao_beta(i,j) Fock_matrix_ao_beta(i,j) * SCF_density_matrix_ao_beta(i,j)
two_electron_energy += 0.5d0 * ( ao_two_e_integral_alpha(i,j) * SCF_density_matrix_ao_alpha(i,j) & two_electron_energy += 0.5d0 * ( ao_two_e_integral_alpha(i,j) * SCF_density_matrix_ao_alpha(i,j) &
+ao_two_e_integral_beta(i,j) * SCF_density_matrix_ao_beta(i,j) ) +ao_two_e_integral_beta(i,j) * SCF_density_matrix_ao_beta(i,j) )
one_electron_energy += ao_one_e_integrals(i,j) * (SCF_density_matrix_ao_alpha(i,j) + SCF_density_matrix_ao_beta (i,j) ) one_e_energy += ao_one_e_integrals(i,j) * (SCF_density_matrix_ao_alpha(i,j) + SCF_density_matrix_ao_beta (i,j) )
trace_potential_xc += ao_potential_alpha_xc(i,j) * SCF_density_matrix_ao_alpha(i,j) + ao_potential_beta_xc(i,j) * SCF_density_matrix_ao_beta (i,j) trace_potential_xc += ao_potential_alpha_xc(i,j) * SCF_density_matrix_ao_alpha(i,j) + ao_potential_beta_xc(i,j) * SCF_density_matrix_ao_beta (i,j)
enddo enddo
enddo enddo
RS_KS_energy += e_exchange_dft + e_correlation_dft + one_electron_energy + two_electron_energy RS_KS_energy += e_exchange_dft + e_correlation_dft + one_e_energy + two_electron_energy
END_PROVIDER END_PROVIDER
BEGIN_PROVIDER [double precision, extra_e_contrib_density] BEGIN_PROVIDER [double precision, extra_e_contrib_density]

View File

@ -94,7 +94,7 @@ subroutine run
call Roothaan_Hall_SCF call Roothaan_Hall_SCF
call ezfio_set_kohn_sham_rs_energy(SCF_energy) call ezfio_set_kohn_sham_rs_energy(SCF_energy)
write(*, '(A22,X,F16.10)') 'one_electron_energy = ',one_electron_energy write(*, '(A22,X,F16.10)') 'one_e_energy = ',one_e_energy
write(*, '(A22,X,F16.10)') 'two_electron_energy = ',two_electron_energy write(*, '(A22,X,F16.10)') 'two_electron_energy = ',two_electron_energy
write(*, '(A22,X,F16.10)') 'e_exchange_dft = ',e_exchange_dft write(*, '(A22,X,F16.10)') 'e_exchange_dft = ',e_exchange_dft
write(*, '(A22,X,F16.10)') 'e_correlation_dft = ',e_correlation_dft write(*, '(A22,X,F16.10)') 'e_correlation_dft = ',e_correlation_dft

View File

@ -1,9 +1,9 @@
program save_one_body_dm program save_one_e_dm
implicit none implicit none
BEGIN_DOC BEGIN_DOC
! programs that computes the one body density on the mo basis for alpha and beta electrons from the wave function stored in the EZFIO folder, and then save it into the EZFIO folder aux_quantities. ! programs that computes the one body density on the mo basis for alpha and beta electrons from the wave function stored in the EZFIO folder, and then save it into the EZFIO folder aux_quantities.
! !
! Then, the global variable data_one_body_alpha_dm_mo and data_one_body_beta_dm_mo will automatically read the density in a further calculation. ! Then, the global variable data_one_e_dm_alpha_mo and data_one_e_dm_beta_mo will automatically read the density in a further calculation.
! !
! This can be used to perform dampin on the density in RS-DFT calculation (see the density_for_dft module). ! This can be used to perform dampin on the density in RS-DFT calculation (see the density_for_dft module).
END_DOC END_DOC
@ -15,6 +15,6 @@ end
subroutine routine subroutine routine
call ezfio_set_aux_quantities_data_one_body_alpha_dm_mo(one_body_dm_mo_alpha) call ezfio_set_aux_quantities_data_one_e_dm_alpha_mo(one_e_dm_mo_alpha)
call ezfio_set_aux_quantities_data_one_body_beta_dm_mo(one_body_dm_mo_beta) call ezfio_set_aux_quantities_data_one_e_dm_beta_mo(one_e_dm_mo_beta)
end end