mirror of
https://github.com/pfloos/quack
synced 2025-01-03 01:55:57 +01:00
working on optim Fock matrix
This commit is contained in:
parent
37420d1207
commit
956cebf664
@ -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
|
||||||
|
Loading…
Reference in New Issue
Block a user