mirror of
https://gitlab.com/scemama/eplf
synced 2024-09-06 11:44:46 +02:00
Acceleration
This commit is contained in:
parent
2df6bebcf8
commit
921e8429cd
@ -94,6 +94,7 @@ BEGIN_PROVIDER [ real, density_beta_value_p ]
|
|||||||
integer :: exc(4)
|
integer :: exc(4)
|
||||||
PROVIDE det
|
PROVIDE det
|
||||||
PROVIDE elec_beta_num
|
PROVIDE elec_beta_num
|
||||||
|
|
||||||
do k=1,det_num
|
do k=1,det_num
|
||||||
do l=1,det_num
|
do l=1,det_num
|
||||||
exc(1) = abs(det_exc(k,l,1))
|
exc(1) = abs(det_exc(k,l,1))
|
||||||
|
@ -33,7 +33,7 @@ BEGIN_PROVIDER [ integer, det, (elec_alpha_num-mo_closed_num,det_num,2) ]
|
|||||||
END_PROVIDER
|
END_PROVIDER
|
||||||
|
|
||||||
|
|
||||||
BEGIN_PROVIDER [ integer, det_exc, (det_num, det_num, 2) ]
|
BEGIN_PROVIDER [ integer*1, det_exc, (det_num, det_num, 2) ]
|
||||||
implicit none
|
implicit none
|
||||||
BEGIN_DOC
|
BEGIN_DOC
|
||||||
! Degree of excitation between two determinants. Indices are alpha, beta
|
! Degree of excitation between two determinants. Indices are alpha, beta
|
||||||
@ -141,7 +141,7 @@ subroutine get_single_excitation(k,l,m,n,p)
|
|||||||
do i=1,elec_num_2(p)-mo_closed_num
|
do i=1,elec_num_2(p)-mo_closed_num
|
||||||
found = .False.
|
found = .False.
|
||||||
do j=1,elec_num_2(p)-mo_closed_num
|
do j=1,elec_num_2(p)-mo_closed_num
|
||||||
if (det(i,k,p) == det(i,l,p)) then
|
if (det(j,k,p) == det(i,l,p)) then
|
||||||
found = .True.
|
found = .True.
|
||||||
exit
|
exit
|
||||||
endif
|
endif
|
||||||
@ -188,7 +188,7 @@ subroutine get_double_excitation(k,l,m,n,r,s,p)
|
|||||||
do i=1,elec_num_2(p)-mo_closed_num
|
do i=1,elec_num_2(p)-mo_closed_num
|
||||||
found = .False.
|
found = .False.
|
||||||
do j=1,elec_num_2(p)-mo_closed_num
|
do j=1,elec_num_2(p)-mo_closed_num
|
||||||
if (det(i,k,p) == det(i,l,p)) then
|
if (det(j,k,p) == det(i,l,p)) then
|
||||||
found = .True.
|
found = .True.
|
||||||
exit
|
exit
|
||||||
endif
|
endif
|
||||||
|
@ -38,7 +38,7 @@ BEGIN_PROVIDER [ double precision, mo_eplf_integral_matrix, (mo_num,mo_num) ]
|
|||||||
integer :: i, j, k, l
|
integer :: i, j, k, l
|
||||||
double precision :: t
|
double precision :: t
|
||||||
PROVIDE ao_eplf_integral_matrix
|
PROVIDE ao_eplf_integral_matrix
|
||||||
PROVIDE mo_coef
|
PROVIDE mo_coef mo_coef_transp
|
||||||
do i=1,mo_num
|
do i=1,mo_num
|
||||||
do j=i,mo_num
|
do j=i,mo_num
|
||||||
mo_eplf_integral_matrix(j,i) = 0.d0
|
mo_eplf_integral_matrix(j,i) = 0.d0
|
||||||
|
@ -16,6 +16,23 @@ BEGIN_PROVIDER [ real, mo_value_p, (mo_num) ]
|
|||||||
|
|
||||||
END_PROVIDER
|
END_PROVIDER
|
||||||
|
|
||||||
|
BEGIN_PROVIDER [ real, mo_value_prod_p, (mo_num,mo_num) ]
|
||||||
|
implicit none
|
||||||
|
|
||||||
|
BEGIN_DOC
|
||||||
|
! Products of 2 molecular orbitals
|
||||||
|
END_DOC
|
||||||
|
|
||||||
|
integer :: i, j, k
|
||||||
|
|
||||||
|
do j=1,mo_num
|
||||||
|
do k=1,mo_num
|
||||||
|
mo_value_prod_p(k,j) = mo_value_p(k)*mo_value_p(j)
|
||||||
|
enddo
|
||||||
|
enddo
|
||||||
|
|
||||||
|
END_PROVIDER
|
||||||
|
|
||||||
BEGIN_PROVIDER [ real, mo_grad_p, (mo_num,3) ]
|
BEGIN_PROVIDER [ real, mo_grad_p, (mo_num,3) ]
|
||||||
implicit none
|
implicit none
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user