mirror of
https://github.com/QuantumPackage/qp2.git
synced 2024-12-22 12:23:43 +01:00
added f_hf_cholesky without big storage in memory
This commit is contained in:
parent
70f8019960
commit
49a96d4400
18
plugins/local/basis_correction/test_chol_bas.irp.f
Normal file
18
plugins/local/basis_correction/test_chol_bas.irp.f
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
program pouet
|
||||||
|
implicit none
|
||||||
|
call test
|
||||||
|
end
|
||||||
|
subroutine test
|
||||||
|
implicit none
|
||||||
|
! provide mos_times_cholesky_r1
|
||||||
|
! provide mos_times_cholesky_r2
|
||||||
|
integer :: ipoint
|
||||||
|
double precision :: accu,weight
|
||||||
|
accu = 0.d0
|
||||||
|
do ipoint = 1, n_points_final_grid
|
||||||
|
weight = final_weight_at_r_vector(ipoint)
|
||||||
|
! accu += dabs(mu_of_r_hf(ipoint) - mu_of_r_hf_old(ipoint)) * weight
|
||||||
|
accu += dabs(f_hf_sparse_cholesky(ipoint) - f_hf_cholesky(ipoint)) * weight
|
||||||
|
enddo
|
||||||
|
print*,'accu = ',accu
|
||||||
|
end
|
@ -146,9 +146,9 @@ BEGIN_PROVIDER [ double precision, f_hf_cholesky, (n_points_final_grid)]
|
|||||||
!! V_AR = \sum_{I}Phi_IR V_AI = \sum_{I}Phi^t_RI V_AI
|
!! V_AR = \sum_{I}Phi_IR V_AI = \sum_{I}Phi^t_RI V_AI
|
||||||
double precision :: u_dot_v,wall0,wall1
|
double precision :: u_dot_v,wall0,wall1
|
||||||
if(elec_alpha_num == elec_beta_num)then
|
if(elec_alpha_num == elec_beta_num)then
|
||||||
provide mos_times_cholesky_r1
|
|
||||||
print*,'providing f_hf_cholesky ...'
|
print*,'providing f_hf_cholesky ...'
|
||||||
call wall_time(wall0)
|
call wall_time(wall0)
|
||||||
|
provide mos_times_cholesky_r1
|
||||||
!$OMP PARALLEL DO &
|
!$OMP PARALLEL DO &
|
||||||
!$OMP DEFAULT (NONE) &
|
!$OMP DEFAULT (NONE) &
|
||||||
!$OMP PRIVATE (ipoint,m) &
|
!$OMP PRIVATE (ipoint,m) &
|
||||||
@ -167,6 +167,8 @@ BEGIN_PROVIDER [ double precision, f_hf_cholesky, (n_points_final_grid)]
|
|||||||
print*,'Time to provide f_hf_cholesky = ',wall1-wall0
|
print*,'Time to provide f_hf_cholesky = ',wall1-wall0
|
||||||
free mos_times_cholesky_r1
|
free mos_times_cholesky_r1
|
||||||
else
|
else
|
||||||
|
print*,'providing f_hf_cholesky ...'
|
||||||
|
call wall_time(wall0)
|
||||||
provide mos_times_cholesky_r2 mos_times_cholesky_r1
|
provide mos_times_cholesky_r2 mos_times_cholesky_r1
|
||||||
!$OMP PARALLEL DO &
|
!$OMP PARALLEL DO &
|
||||||
!$OMP DEFAULT (NONE) &
|
!$OMP DEFAULT (NONE) &
|
||||||
@ -198,10 +200,11 @@ BEGIN_PROVIDER [ double precision, f_hf_sparse_cholesky, (n_points_final_grid)]
|
|||||||
double precision :: u_dot_v,wall0,wall1,accu_1, accu_2,mo_i_r1,mo_b_r1
|
double precision :: u_dot_v,wall0,wall1,accu_1, accu_2,mo_i_r1,mo_b_r1
|
||||||
if(elec_alpha_num == elec_beta_num)then
|
if(elec_alpha_num == elec_beta_num)then
|
||||||
call wall_time(wall0)
|
call wall_time(wall0)
|
||||||
! !$OMP PARALLEL DO &
|
!$OMP PARALLEL DO &
|
||||||
! !$OMP DEFAULT (NONE) &
|
!$OMP DEFAULT (NONE) &
|
||||||
! !$OMP PRIVATE (ipoint,m) &
|
!$OMP PRIVATE (accu_1,ipoint,p,ii,i,mm,m,mo_i_r1,mo_b_r1) &
|
||||||
! !$OMP ShARED (mos_times_cholesky_r1,cholesky_mo_num,f_hf_sparse_cholesky,n_points_final_grid)
|
!$OMP ShARED (n_occ_val_orb_for_hf,list_valence_orb_for_hf,list_basis,mos_in_r_array_omp) &
|
||||||
|
!$OMP ShARED (cholesky_mo_num,f_hf_sparse_cholesky,n_points_final_grid,cholesky_mo,n_basis_orb)
|
||||||
do ipoint = 1, n_points_final_grid
|
do ipoint = 1, n_points_final_grid
|
||||||
f_hf_sparse_cholesky(ipoint) = 0.d0
|
f_hf_sparse_cholesky(ipoint) = 0.d0
|
||||||
do p = 1, cholesky_mo_num
|
do p = 1, cholesky_mo_num
|
||||||
@ -219,16 +222,17 @@ BEGIN_PROVIDER [ double precision, f_hf_sparse_cholesky, (n_points_final_grid)]
|
|||||||
enddo
|
enddo
|
||||||
f_hf_sparse_cholesky(ipoint) *= 2.D0
|
f_hf_sparse_cholesky(ipoint) *= 2.D0
|
||||||
enddo
|
enddo
|
||||||
! !$OMP END PARALLEL DO
|
!$OMP END PARALLEL DO
|
||||||
|
|
||||||
call wall_time(wall1)
|
call wall_time(wall1)
|
||||||
print*,'Time to provide f_hf_sparse_cholesky = ',wall1-wall0
|
print*,'Time to provide f_hf_sparse_cholesky = ',wall1-wall0
|
||||||
else
|
else
|
||||||
call wall_time(wall0)
|
call wall_time(wall0)
|
||||||
! !$OMP PARALLEL DO &
|
!$OMP PARALLEL DO &
|
||||||
! !$OMP DEFAULT (NONE) &
|
!$OMP DEFAULT (NONE) &
|
||||||
! !$OMP PRIVATE (ipoint,m) &
|
!$OMP PRIVATE (accu_2,accu_1,ipoint,p,ii,i,mm,m,mo_i_r1,mo_b_r1) &
|
||||||
! !$OMP ShARED (mos_times_cholesky_r1,cholesky_mo_num,f_hf_sparse_cholesky,n_points_final_grid)
|
!$OMP ShARED (n_occ_val_orb_for_hf,list_valence_orb_for_hf,list_basis,mos_in_r_array_omp) &
|
||||||
|
!$OMP ShARED (cholesky_mo_num,f_hf_sparse_cholesky,n_points_final_grid,cholesky_mo,n_basis_orb)
|
||||||
do ipoint = 1, n_points_final_grid
|
do ipoint = 1, n_points_final_grid
|
||||||
f_hf_sparse_cholesky(ipoint) = 0.d0
|
f_hf_sparse_cholesky(ipoint) = 0.d0
|
||||||
do p = 1, cholesky_mo_num
|
do p = 1, cholesky_mo_num
|
||||||
@ -256,7 +260,7 @@ BEGIN_PROVIDER [ double precision, f_hf_sparse_cholesky, (n_points_final_grid)]
|
|||||||
enddo
|
enddo
|
||||||
f_hf_sparse_cholesky(ipoint) *= 2.D0
|
f_hf_sparse_cholesky(ipoint) *= 2.D0
|
||||||
enddo
|
enddo
|
||||||
! !$OMP END PARALLEL DO
|
!$OMP END PARALLEL DO
|
||||||
call wall_time(wall1)
|
call wall_time(wall1)
|
||||||
print*,'Time to provide f_hf_sparse_cholesky = ',wall1-wall0
|
print*,'Time to provide f_hf_sparse_cholesky = ',wall1-wall0
|
||||||
endif
|
endif
|
||||||
|
Loading…
Reference in New Issue
Block a user