4
1
mirror of https://github.com/pfloos/quack synced 2025-01-03 01:56:09 +01:00

working on optim Fock matrix

This commit is contained in:
Abdallah Ammar 2024-12-11 11:38:55 +01:00
parent 37420d1207
commit 956cebf664

View File

@ -47,92 +47,103 @@ subroutine Hartree_matrix_AO_basis_hpc(nBas, ERI_size, P, ERI_chem, H)
integer :: mu, nu, la, si integer :: mu, nu, la, si
integer :: nunu, lala, nula, lasi, numu integer :: nunu, lala, nula, lasi, numu
integer :: 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 :: munu0, munu integer*8 :: nunununu0, numunumu0
integer*8 :: sila0, sila
integer*8 :: munulasi0, munulasi
do nu = 1, nBas do nu = 1, nBas
nunu = (nu * (nu - 1)) / 2 + nu nunu0 = shiftr(nu * (nu - 1), 1)
nunununu = (nunu * (nunu - 1)) / 2 + nunu nunu = nunu0 + nu
nunununu0 = shiftr(nunu * (nunu - 1), 1)
nunununu = nunununu0 + nunu
H(nu,nu) = P(nu,nu) * ERI_chem(nunununu) H(nu,nu) = P(nu,nu) * ERI_chem(nunununu)
do la = 1, nu-1 do la = 1, nu-1
lala = (la * (la - 1)) / 2 + la lala0 = shiftr(la * (la - 1), 1)
nunulala = (nunu * (nunu - 1)) / 2 + lala
lala = lala0 + la
nunulala = nunununu0 + lala
H(nu,nu) = H(nu,nu) + P(la,la) * ERI_chem(nunulala) H(nu,nu) = H(nu,nu) + P(la,la) * ERI_chem(nunulala)
nula = (nu * (nu - 1)) / 2 + la nula = nunu0 + la
nununula = (nunu * (nunu - 1)) / 2 + nula nununula = nunununu0 + nula
H(nu,nu) = H(nu,nu) + 2.d0 * P(la,nu) * ERI_chem(nununula) H(nu,nu) = H(nu,nu) + 2.d0 * P(la,nu) * ERI_chem(nununula)
do si = 1, la - 1 do si = 1, la - 1
lasi = (la * (la - 1)) / 2 + si lasi = lala0 + si
nunulasi = (nunu * (nunu - 1)) / 2 + lasi nunulasi = nunununu0 + lasi
H(nu,nu) = H(nu,nu) + 2.d0 * P(si,la) * ERI_chem(nunulasi) H(nu,nu) = H(nu,nu) + 2.d0 * P(si,la) * ERI_chem(nunulasi)
enddo enddo
enddo enddo
do la = nu + 1, nBas do la = nu + 1, nBas
lala = (la * (la - 1)) / 2 + la lala0 = shiftr(la * (la - 1), 1)
lalanunu = (lala * (lala - 1)) / 2 + nunu
lala = lala0 + la
lalanunu = shiftr(lala * (lala - 1), 1) + nunu
H(nu,nu) = H(nu,nu) + P(la,la) * ERI_chem(lalanunu) H(nu,nu) = H(nu,nu) + P(la,la) * ERI_chem(lalanunu)
do si = 1, la - 1 do si = 1, la - 1
lasi = (la * (la - 1)) / 2 + si lasi = lala0 + si
lasinunu = (lasi * (lasi - 1)) / 2 + nunu lasinunu = shiftr(lasi * (lasi - 1), 1) + nunu
H(nu,nu) = H(nu,nu) + 2.d0 * P(si,la) * ERI_chem(lasinunu) H(nu,nu) = H(nu,nu) + 2.d0 * P(si,la) * ERI_chem(lasinunu)
enddo enddo
enddo enddo
do mu = 1, nu - 1 do mu = 1, nu - 1
numu = (nu * (nu - 1)) / 2 + mu numu = nunu0 + mu
nununumu = (nunu * (nunu - 1)) / 2 + numu
numunumu0 = shiftr(numu * (numu - 1), 1)
nununumu = nunununu0 + numu
H(mu,nu) = p(nu,nu) * ERI_chem(nununumu) H(mu,nu) = p(nu,nu) * ERI_chem(nununumu)
do la = 1, nu - 1 do la = 1, nu - 1
lala = (la * (la - 1)) / 2 + la lala = shiftr(la * (la - 1), 1) + la
numulala = (numu * (numu - 1)) / 2 + lala numulala = numunumu0 + lala
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, nBas
lala = (la * (la - 1)) / 2 + la lala = shiftr(la * (la - 1), 1) + la
lalanumu = (lala * (lala - 1)) / 2 + 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)
enddo enddo
do la = 1, mu do la = 1, mu
nula = (nu * (nu - 1)) / 2 + la nula = nunu0 + la
numunula = (numu * (numu - 1)) / 2 + nula numunula = numunumu0 + nula
H(mu,nu) = H(mu,nu) + 2.d0 * P(la,nu) * ERI_chem(numunula) H(mu,nu) = H(mu,nu) + 2.d0 * P(la,nu) * ERI_chem(numunula)
enddo enddo
do la = mu + 1, nu - 1 do la = mu + 1, nu - 1
nula = (nu * (nu - 1)) / 2 + la nula = nunu0 + la
numunula = (nula * (nula - 1)) / 2 + numu numunula = shiftr(nula * (nula - 1), 1) + numu
H(mu,nu) = H(mu,nu) + 2.d0 * P(la,nu) * ERI_chem(numunula) H(mu,nu) = H(mu,nu) + 2.d0 * P(la,nu) * ERI_chem(numunula)
enddo enddo
do la = 2, nu - 1 do la = 2, nu - 1
lala0 = shiftr(la * (la - 1), 1)
do si = 1, la - 1 do si = 1, la - 1
lasi = (la * (la - 1)) / 2 + si lasi = lala0 + si
numulasi = (numu * (numu - 1)) / 2 + lasi numulasi = numunumu0 + lasi
H(mu,nu) = H(mu,nu) + 2.d0 * P(si,la) * ERI_chem(numulasi) H(mu,nu) = H(mu,nu) + 2.d0 * P(si,la) * ERI_chem(numulasi)
enddo enddo
enddo enddo
do la = nu + 1, nBas do la = nu + 1, nBas
lala0 = shiftr(la * (la - 1), 1)
do si = 1, la - 1 do si = 1, la - 1
lasi = (la * (la - 1)) / 2 + si lasi = lala0 + si
lasinumu = (lasi * (lasi - 1)) / 2 + numu lasinumu = shiftr(lasi * (lasi - 1), 1) + numu
H(mu,nu) = H(mu,nu) + 2.d0 * P(si,la) * ERI_chem(lasinumu) H(mu,nu) = H(mu,nu) + 2.d0 * P(si,la) * ERI_chem(lasinumu)
enddo enddo
enddo enddo