10
0
mirror of https://github.com/LCPQ/quantum_package synced 2024-12-22 12:23:48 +01:00

fixed the factor 2 in lebedev

This commit is contained in:
Emmanuel Giner 2017-04-13 18:32:14 +02:00
parent 72ed06bf19
commit b0a3c73b89
8 changed files with 21 additions and 80 deletions

View File

@ -1,4 +0,0 @@
[energy]
type: double precision
doc: Calculated energy
interface: ezfio

View File

@ -5,7 +5,7 @@
BEGIN_PROVIDER [integer, n_points_radial_grid]
implicit none
n_points_radial_grid = 10
n_points_radial_grid = 100000
END_PROVIDER
@ -26,7 +26,7 @@ END_PROVIDER
accu = 0.d0
do i = 1, n_points_integration_angular_lebedev
accu += weights_angular_integration_lebedev(i)
weights_angular_points(i) = weights_angular_integration_lebedev(i) * 2.d0 * pi
weights_angular_points(i) = weights_angular_integration_lebedev(i) * 4.d0 * pi
angular_quadrature_points(i,1) = dcos ( degre_rad * theta_angular_integration_lebedev(i)) &
* dsin ( degre_rad * phi_angular_integration_lebedev(i))
angular_quadrature_points(i,2) = dsin ( degre_rad * theta_angular_integration_lebedev(i)) &
@ -115,7 +115,6 @@ BEGIN_PROVIDER [double precision, weight_functions_at_grid_points, (n_points_int
enddo
accu = 1.d0/accu
weight_functions_at_grid_points(l,k,j) = tmp_array(j) * accu
! print*,weight_functions_at_grid_points(l,k,j)
enddo
enddo
enddo
@ -131,7 +130,7 @@ END_PROVIDER
double precision :: r(3)
double precision :: aos_array(ao_num),mos_array(mo_tot_num)
do j = 1, nucl_num
do k = 1, n_points_radial_grid -1
do k = 1, n_points_radial_grid
do l = 1, n_points_integration_angular_lebedev
one_body_dm_mo_alpha_at_grid_points(l,k,j) = 0.d0
one_body_dm_mo_beta_at_grid_points(l,k,j) = 0.d0
@ -139,18 +138,9 @@ END_PROVIDER
r(2) = grid_points_per_atom(2,l,k,j)
r(3) = grid_points_per_atom(3,l,k,j)
! call give_all_aos_at_r(r,aos_array)
! do i = 1, ao_num
! do m = 1, ao_num
! contrib = aos_array(i) * aos_array(m)
! one_body_dm_mo_alpha_at_grid_points(l,k,j) += one_body_dm_ao_alpha(i,m) * contrib
! one_body_dm_mo_beta_at_grid_points(l,k,j) += one_body_dm_ao_beta(i,m) * contrib
! enddo
! enddo
call give_all_mos_at_r(r,mos_array)
do i = 1, mo_tot_num
do m = 1, mo_tot_num
do m = 1, mo_tot_num
do i = 1, mo_tot_num
contrib = mos_array(i) * mos_array(m)
one_body_dm_mo_alpha_at_grid_points(l,k,j) += one_body_dm_mo_alpha_average(i,m) * contrib
one_body_dm_mo_beta_at_grid_points(l,k,j) += one_body_dm_mo_beta_average(i,m) * contrib

View File

@ -4,18 +4,12 @@ double precision function step_function_becke(x)
double precision :: f_function_becke
integer :: i,n_max_becke
!if(x.lt.-1.d0)then
! step_function_becke = 0.d0
!else if (x .gt.1)then
! step_function_becke = 0.d0
!else
step_function_becke = f_function_becke(x)
!!n_max_becke = 1
do i = 1, 4
do i = 1, 3
step_function_becke = f_function_becke(step_function_becke)
enddo
step_function_becke = 0.5d0*(1.d0 - step_function_becke)
!endif
! step_function_becke = (1.d0 - step_function_becke)
end
double precision function f_function_becke(x)

View File

@ -27,7 +27,6 @@
!
x = grid_points_radial(i) ! x value for the mapping of the [0, +\infty] to [0,1]
double precision :: contrib_integration
! print*,m_knowles
contrib_integration = derivative_knowles_function(alpha_knowles(int(nucl_charge(j))),m_knowles,x) &
*knowles_function(alpha_knowles(int(nucl_charge(j))),m_knowles,x)**2
integral_density_alpha_knowles_becke_per_atom(j) += contrib_integration *f_average_angular_alpha

View File

@ -19,6 +19,18 @@ subroutine routine
print*,'Nalpha = ',elec_alpha_num
print*,'accu(2) = ',accu(2)
print*,'Nalpha = ',elec_beta_num
accu = 0.d0
do i = 1, mo_tot_num
accu(1) += one_body_dm_mo_alpha_average(i,i)
accu(2) += one_body_dm_mo_beta_average(i,i)
enddo
print*,' '
print*,' '
print*,'accu(1) = ',accu(1)
print*,'accu(2) = ',accu(2)
end

View File

@ -1,42 +0,0 @@
! DO NOT MODIFY BY HAND
! Created by $QP_ROOT/scripts/ezfio_interface/ei_handler.py
! from file /home/giner/qp_fork/quantum_package/src/MRPT_Utils/EZFIO.cfg
BEGIN_PROVIDER [ logical, do_third_order_1h1p ]
implicit none
BEGIN_DOC
! If true, compute the third order contribution for the 1h1p
END_DOC
logical :: has
PROVIDE ezfio_filename
call ezfio_has_mrpt_utils_do_third_order_1h1p(has)
if (has) then
call ezfio_get_mrpt_utils_do_third_order_1h1p(do_third_order_1h1p)
else
print *, 'mrpt_utils/do_third_order_1h1p not found in EZFIO file'
stop 1
endif
END_PROVIDER
BEGIN_PROVIDER [ logical, save_heff_eigenvectors ]
implicit none
BEGIN_DOC
! If true, save the eigenvectors of the dressed matrix at the end of the MRPT calculation
END_DOC
logical :: has
PROVIDE ezfio_filename
call ezfio_has_mrpt_utils_save_heff_eigenvectors(has)
if (has) then
call ezfio_get_mrpt_utils_save_heff_eigenvectors(save_heff_eigenvectors)
else
print *, 'mrpt_utils/save_heff_eigenvectors not found in EZFIO file'
stop 1
endif
END_PROVIDER

View File

@ -272,21 +272,13 @@ subroutine give_all_mos_at_r(r,mos_array)
implicit none
double precision, intent(in) :: r(3)
double precision, intent(out) :: mos_array(mo_tot_num)
call give_specific_mos_at_r(r,mos_array, mo_coef)
end
subroutine give_specific_mos_at_r(r,mos_array, mo_coef_specific)
implicit none
double precision, intent(in) :: r(3)
double precision, intent(in) :: mo_coef_specific(ao_num_align, mo_tot_num)
double precision, intent(out) :: mos_array(mo_tot_num)
double precision :: aos_array(ao_num),accu
integer :: i,j
call give_all_aos_at_r(r,aos_array)
do i = 1, mo_tot_num
accu = 0.d0
do j = 1, ao_num
accu += mo_coef_specific(j,i) * aos_array(j)
accu += mo_coef(j,i) * aos_array(j)
enddo
mos_array(i) = accu
enddo

View File

@ -4,7 +4,7 @@ BEGIN_PROVIDER [integer, degree_max_integration_lebedev]
! needed for the angular integration according to LEBEDEV formulae
END_DOC
implicit none
degree_max_integration_lebedev= 15
degree_max_integration_lebedev= 3
END_PROVIDER