10
1
mirror of https://github.com/pfloos/quack synced 2024-12-22 12:23:42 +01:00

int8 in J and K

This commit is contained in:
Abdallah Ammar 2024-12-12 19:39:22 +01:00
parent a8b51ab800
commit 26d09cc1b2
2 changed files with 31 additions and 60 deletions

View File

@ -45,31 +45,17 @@ subroutine Hartree_matrix_AO_basis_hpc(nBas, ERI_size, P, ERI_chem, H)
double precision, intent(in) :: ERI_chem(ERI_size) double precision, intent(in) :: ERI_chem(ERI_size)
double precision, intent(out) :: H(nBas,nBas) double precision, intent(out) :: H(nBas,nBas)
integer :: mu, nu, la, si integer*8 :: mu, nu, la, si, nBas8
integer :: nunu, lala, nula, lasi, numu integer*8 :: nunu, lala, nula, lasi, numu
integer :: nunu0, lala0 integer*8 :: nunu0, lala0
integer*8 :: nunununu, nunulala, nununula, nunulasi integer*8 :: nunununu, nunulala, nununula, nunulasi
integer*8 :: lalanunu, lasinunu, numulala, lalanumu integer*8 :: lalanunu, lasinunu, numulala, lalanumu
integer*8 :: numunula, numulasi, lasinumu, nununumu integer*8 :: numunula, numulasi, lasinumu, nununumu
integer*8 :: nunununu0, numunumu0 integer*8 :: nunununu0, numunumu0
! integer*8 :: munusila
! integer*8, external :: Yoshimine_4ind
! nBas8 = int(nBas, kind=8)
! do nu = 1, nBas
! do mu = 1, nu
! H(mu,nu) = 0.d0
! do la = 1, nBas
! do si = 1, nBas
! munusila = Yoshimine_4ind(int(mu, kind=8), &
! int(nu, kind=8), &
! int(si, kind=8), &
! int(la, kind=8))
! H(mu,nu) = H(mu,nu) + P(si,la) * ERI_chem(munusila)
! enddo
! enddo
! enddo
! enddo
!$OMP PARALLEL DEFAULT(NONE) & !$OMP PARALLEL DEFAULT(NONE) &
!$OMP PRIVATE (nu, la, si, mu, & !$OMP PRIVATE (nu, la, si, mu, &
@ -77,9 +63,9 @@ subroutine Hartree_matrix_AO_basis_hpc(nBas, ERI_size, P, ERI_chem, H)
!$OMP nunununu0, nunununu, nununula, numulala, numunula, & !$OMP nunununu0, nunununu, nununula, numulala, numunula, &
!$OMP nunulala, lalanunu, lalanumu, nunulasi, lasinunu, & !$OMP nunulala, lalanunu, lalanumu, nunulasi, lasinunu, &
!$OMP numunumu0, nununumu, numulasi, lasinumu) & !$OMP numunumu0, nununumu, numulasi, lasinumu) &
!$OMP SHARED (nBas, H, P, ERI_chem) !$OMP SHARED (nBas8, H, P, ERI_chem)
!$OMP DO !$OMP DO
do nu = 1, nBas do nu = 1, nBas8
nunu0 = shiftr(nu * (nu - 1), 1) nunu0 = shiftr(nu * (nu - 1), 1)
nunu = nunu0 + nu nunu = nunu0 + nu
@ -107,7 +93,7 @@ subroutine Hartree_matrix_AO_basis_hpc(nBas, ERI_size, P, ERI_chem, H)
enddo enddo
enddo enddo
do la = nu + 1, nBas do la = nu + 1, nBas8
lala0 = shiftr(la * (la - 1), 1) lala0 = shiftr(la * (la - 1), 1)
@ -137,7 +123,7 @@ subroutine Hartree_matrix_AO_basis_hpc(nBas, ERI_size, P, ERI_chem, H)
H(mu,nu) = H(mu,nu) + p(la,la) * ERI_chem(numulala) H(mu,nu) = H(mu,nu) + p(la,la) * ERI_chem(numulala)
enddo enddo
do la = nu + 1, nBas do la = nu + 1, nBas8
lala = shiftr(la * (la - 1), 1) + la lala = shiftr(la * (la - 1), 1) + la
lalanumu = shiftr(lala * (lala - 1), 1) + numu lalanumu = shiftr(lala * (lala - 1), 1) + numu
H(mu,nu) = H(mu,nu) + p(la,la) * ERI_chem(lalanumu) H(mu,nu) = H(mu,nu) + p(la,la) * ERI_chem(lalanumu)
@ -164,7 +150,7 @@ subroutine Hartree_matrix_AO_basis_hpc(nBas, ERI_size, P, ERI_chem, H)
enddo enddo
enddo enddo
do la = nu + 1, nBas do la = nu + 1, nBas8
lala0 = shiftr(la * (la - 1), 1) lala0 = shiftr(la * (la - 1), 1)
do si = 1, la - 1 do si = 1, la - 1
lasi = lala0 + si lasi = lala0 + si
@ -178,8 +164,8 @@ subroutine Hartree_matrix_AO_basis_hpc(nBas, ERI_size, P, ERI_chem, H)
!$OMP END DO !$OMP END DO
!$OMP END PARALLEL !$OMP END PARALLEL
do nu = 1, nBas do nu = 1, nBas8
do mu = nu+1, nBas do mu = nu+1, nBas8
H(mu,nu) = H(nu,mu) H(mu,nu) = H(nu,mu)
enddo enddo
enddo enddo

View File

@ -44,35 +44,20 @@ subroutine exchange_matrix_AO_basis_hpc(nBas, ERI_size, P, ERI_chem, K)
double precision, intent(in) :: ERI_chem(ERI_size) double precision, intent(in) :: ERI_chem(ERI_size)
double precision, intent(out) :: K(nBas,nBas) double precision, intent(out) :: K(nBas,nBas)
integer :: mu, nu, la, si integer*8 :: mu, nu, la, si, nBas8
integer :: nunu, nula, lanu, lasi, nusi, sinu integer*8 :: nunu, nula, lanu, lasi, nusi, sinu
integer :: numu, mumu, mula, lamu, musi, simu integer*8 :: numu, mumu, mula, lamu, musi, simu
integer :: nunu0, lala0, mumu0 integer*8 :: nunu0, lala0, mumu0
integer*8 :: nunununu, nulanula, lanulanu, nulanusi integer*8 :: nunununu, nulanula, lanulanu, nulanusi
integer*8 :: munulasi, lanunusi, lanusinu, numumumu integer*8 :: munulasi, lanunusi, lanusinu, numumumu
integer*8 :: nulamula, nulalamu, lanulamu, nulamusi integer*8 :: nulamula, nulalamu, lanulamu, nulamusi
integer*8 :: nulasimu, lanumusi, lanusimu, simunula integer*8 :: nulasimu, lanumusi, lanusimu, simunula
integer*8 :: simulanu, nulanula0, lanulanu0 integer*8 :: simulanu, nulanula0, lanulanu0
! integer*8 :: munusila
! integer*8, external :: Yoshimine_4ind
!
! do nu = 1, nBas
! do mu = 1, nu
! K(mu,nu) = 0.d0
! do la = 1, nBas
! do si = 1, nBas
! munusila = Yoshimine_4ind(int(mu, kind=8), &
! int(si, kind=8), &
! int(la, kind=8), &
! int(nu, kind=8))
! K(mu,nu) = K(mu,nu) - P(si,la) * ERI_chem(munusila)
! enddo
! enddo
! enddo
! enddo
nBas8 = int(nBas, kind=8)
!$OMP PARALLEL DEFAULT (NONE) & !$OMP PARALLEL DEFAULT (NONE) &
!$OMP PRIVATE (nu, si, la, mu, & !$OMP PRIVATE (nu, si, la, mu, &
@ -81,9 +66,9 @@ subroutine exchange_matrix_AO_basis_hpc(nBas, ERI_size, P, ERI_chem, K)
!$OMP nulanusi, lanulamu, lanunusi, lanusinu , numumumu, & !$OMP nulanusi, lanulamu, lanunusi, lanusinu , numumumu, &
!$OMP nulamula, nulalamu, lanumusi, lanusimu, nulamusi, & !$OMP nulamula, nulalamu, lanumusi, lanusimu, nulamusi, &
!$OMP nulasimu, simunula, simulanu) & !$OMP nulasimu, simunula, simulanu) &
!$OMP SHARED (nBas, P, ERI_chem, K) !$OMP SHARED (nBas8, P, ERI_chem, K)
!$OMP DO !$OMP DO
do nu = 1, nBas do nu = 1, nBas8
nunu0 = shiftr(nu * (nu - 1), 1) nunu0 = shiftr(nu * (nu - 1), 1)
nunu = nunu0 + nu nunu = nunu0 + nu
@ -97,7 +82,7 @@ subroutine exchange_matrix_AO_basis_hpc(nBas, ERI_size, P, ERI_chem, K)
K(nu,nu) = K(nu,nu) - P(la,la) * ERI_chem(nulanula) K(nu,nu) = K(nu,nu) - P(la,la) * ERI_chem(nulanula)
enddo enddo
do la = nu + 1, nBas do la = nu + 1, nBas8
lanu = shiftr(la * (la - 1), 1) + nu lanu = shiftr(la * (la - 1), 1) + nu
lanulanu = shiftr(lanu * (lanu - 1), 1) + lanu lanulanu = shiftr(lanu * (lanu - 1), 1) + lanu
K(nu,nu) = K(nu,nu) - P(la,la) * ERI_chem(lanulanu) K(nu,nu) = K(nu,nu) - P(la,la) * ERI_chem(lanulanu)
@ -112,7 +97,7 @@ subroutine exchange_matrix_AO_basis_hpc(nBas, ERI_size, P, ERI_chem, K)
enddo enddo
enddo enddo
do la = nu + 1, nBas do la = nu + 1, nBas8
lanu = shiftr(la * (la - 1), 1) + nu lanu = shiftr(la * (la - 1), 1) + nu
lanulanu0 = shiftr(lanu * (lanu - 1), 1) lanulanu0 = shiftr(lanu * (lanu - 1), 1)
do si = 1, nu do si = 1, nu
@ -144,7 +129,7 @@ subroutine exchange_matrix_AO_basis_hpc(nBas, ERI_size, P, ERI_chem, K)
nulalamu = shiftr(nula * (nula - 1), 1) + shiftr(la * (la - 1), 1) + mu nulalamu = shiftr(nula * (nula - 1), 1) + shiftr(la * (la - 1), 1) + mu
K(mu,nu) = K(mu,nu) - P(la,la) * ERI_chem(nulalamu) K(mu,nu) = K(mu,nu) - P(la,la) * ERI_chem(nulalamu)
enddo enddo
do la = nu + 1, nBas do la = nu + 1, nBas8
lala0 = shiftr(la * (la - 1), 1) lala0 = shiftr(la * (la - 1), 1)
lanu = lala0 + nu lanu = lala0 + nu
lanulamu = shiftr(lanu * (lanu - 1), 1) + lala0 + mu lanulamu = shiftr(lanu * (lanu - 1), 1) + lala0 + mu
@ -171,7 +156,7 @@ subroutine exchange_matrix_AO_basis_hpc(nBas, ERI_size, P, ERI_chem, K)
K(mu,nu) = K(mu,nu) - P(si,la) * ERI_chem(nulasimu) K(mu,nu) = K(mu,nu) - P(si,la) * ERI_chem(nulasimu)
enddo enddo
enddo enddo
do la = nu + 1, nBas do la = nu + 1, nBas8
lanu = shiftr(la * (la - 1), 1) + nu lanu = shiftr(la * (la - 1), 1) + nu
lanulanu0 = shiftr(lanu * (lanu - 1), 1) lanulanu0 = shiftr(lanu * (lanu - 1), 1)
do si = 1, mu do si = 1, mu
@ -195,7 +180,7 @@ subroutine exchange_matrix_AO_basis_hpc(nBas, ERI_size, P, ERI_chem, K)
nulasimu = nulanula0 + shiftr(si * (si - 1), 1) + mu nulasimu = nulanula0 + shiftr(si * (si - 1), 1) + mu
K(mu,nu) = K(mu,nu) - P(si,la) * ERI_chem(nulasimu) K(mu,nu) = K(mu,nu) - P(si,la) * ERI_chem(nulasimu)
enddo enddo
do si = nu, nBas do si = nu, nBas8
simu = shiftr(si * (si - 1), 1) + mu simu = shiftr(si * (si - 1), 1) + mu
simunula = shiftr(simu * (simu - 1), 1) + nula simunula = shiftr(simu * (simu - 1), 1) + nula
K(mu,nu) = K(mu,nu) - P(si,la) * ERI_chem(simunula) K(mu,nu) = K(mu,nu) - P(si,la) * ERI_chem(simunula)
@ -208,15 +193,15 @@ subroutine exchange_matrix_AO_basis_hpc(nBas, ERI_size, P, ERI_chem, K)
nulasimu = nulanula0 + shiftr(si * (si - 1), 1) + mu nulasimu = nulanula0 + shiftr(si * (si - 1), 1) + mu
K(mu,nu) = K(mu,nu) - P(si,la) * ERI_chem(nulasimu) K(mu,nu) = K(mu,nu) - P(si,la) * ERI_chem(nulasimu)
enddo enddo
do si = nu + 1, nBas do si = nu + 1, nBas8
simu = shiftr(si * (si - 1), 1) + mu simu = shiftr(si * (si - 1), 1) + mu
simunula = shiftr(simu * (simu - 1), 1) + nula simunula = shiftr(simu * (simu - 1), 1) + nula
K(mu,nu) = K(mu,nu) - P(si,la) * ERI_chem(simunula) K(mu,nu) = K(mu,nu) - P(si,la) * ERI_chem(simunula)
enddo enddo
enddo enddo
do la = nu + 1, nBas do la = nu + 1, nBas8
lanu = shiftr(la * (la - 1), 1) + nu lanu = shiftr(la * (la - 1), 1) + nu
do si = la + 1, nBas do si = la + 1, nBas8
simu = shiftr(si * (si - 1), 1) + mu simu = shiftr(si * (si - 1), 1) + mu
simulanu = shiftr(simu * (simu - 1), 1) + lanu simulanu = shiftr(simu * (simu - 1), 1) + lanu
K(mu,nu) = K(mu,nu) - P(si,la) * ERI_chem(simulanu) K(mu,nu) = K(mu,nu) - P(si,la) * ERI_chem(simulanu)
@ -229,8 +214,8 @@ subroutine exchange_matrix_AO_basis_hpc(nBas, ERI_size, P, ERI_chem, K)
!$OMP END PARALLEL !$OMP END PARALLEL
do nu = 1, nBas do nu = 1, nBas8
do mu = nu+1, nBas do mu = nu+1, nBas8
K(mu,nu) = K(nu,mu) K(mu,nu) = K(nu,mu)
enddo enddo
enddo enddo