diff --git a/src/AOtoMO/Hartree_matrix_AO_basis.f90 b/src/AOtoMO/Hartree_matrix_AO_basis.f90 index 010e5bb..63141cc 100644 --- a/src/AOtoMO/Hartree_matrix_AO_basis.f90 +++ b/src/AOtoMO/Hartree_matrix_AO_basis.f90 @@ -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(out) :: H(nBas,nBas) - integer :: mu, nu, la, si - integer :: nunu, lala, nula, lasi, numu - integer :: nunu0, lala0 + integer*8 :: mu, nu, la, si, nBas8 + integer*8 :: nunu, lala, nula, lasi, numu + integer*8 :: nunu0, lala0 integer*8 :: nunununu, nunulala, nununula, nunulasi integer*8 :: lalanunu, lasinunu, numulala, lalanumu integer*8 :: numunula, numulasi, lasinumu, nununumu integer*8 :: nunununu0, numunumu0 -! integer*8 :: munusila -! integer*8, external :: Yoshimine_4ind -! -! 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 + + + nBas8 = int(nBas, kind=8) !$OMP PARALLEL DEFAULT(NONE) & !$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 nunulala, lalanunu, lalanumu, nunulasi, lasinunu, & !$OMP numunumu0, nununumu, numulasi, lasinumu) & - !$OMP SHARED (nBas, H, P, ERI_chem) + !$OMP SHARED (nBas8, H, P, ERI_chem) !$OMP DO - do nu = 1, nBas + do nu = 1, nBas8 nunu0 = shiftr(nu * (nu - 1), 1) nunu = nunu0 + nu @@ -107,7 +93,7 @@ subroutine Hartree_matrix_AO_basis_hpc(nBas, ERI_size, P, ERI_chem, H) enddo enddo - do la = nu + 1, nBas + do la = nu + 1, nBas8 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) enddo - do la = nu + 1, nBas + do la = nu + 1, nBas8 lala = shiftr(la * (la - 1), 1) + la lalanumu = shiftr(lala * (lala - 1), 1) + numu 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 - do la = nu + 1, nBas + do la = nu + 1, nBas8 lala0 = shiftr(la * (la - 1), 1) do si = 1, la - 1 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 PARALLEL - do nu = 1, nBas - do mu = nu+1, nBas + do nu = 1, nBas8 + do mu = nu+1, nBas8 H(mu,nu) = H(nu,mu) enddo enddo diff --git a/src/AOtoMO/exchange_matrix_AO_basis.f90 b/src/AOtoMO/exchange_matrix_AO_basis.f90 index 5a363a7..8042420 100644 --- a/src/AOtoMO/exchange_matrix_AO_basis.f90 +++ b/src/AOtoMO/exchange_matrix_AO_basis.f90 @@ -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(out) :: K(nBas,nBas) - integer :: mu, nu, la, si - integer :: nunu, nula, lanu, lasi, nusi, sinu - integer :: numu, mumu, mula, lamu, musi, simu - integer :: nunu0, lala0, mumu0 + integer*8 :: mu, nu, la, si, nBas8 + integer*8 :: nunu, nula, lanu, lasi, nusi, sinu + integer*8 :: numu, mumu, mula, lamu, musi, simu + integer*8 :: nunu0, lala0, mumu0 integer*8 :: nunununu, nulanula, lanulanu, nulanusi integer*8 :: munulasi, lanunusi, lanusinu, numumumu integer*8 :: nulamula, nulalamu, lanulamu, nulamusi integer*8 :: nulasimu, lanumusi, lanusimu, simunula 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 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 nulamula, nulalamu, lanumusi, lanusimu, nulamusi, & !$OMP nulasimu, simunula, simulanu) & - !$OMP SHARED (nBas, P, ERI_chem, K) + !$OMP SHARED (nBas8, P, ERI_chem, K) !$OMP DO - do nu = 1, nBas + do nu = 1, nBas8 nunu0 = shiftr(nu * (nu - 1), 1) 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) enddo - do la = nu + 1, nBas + do la = nu + 1, nBas8 lanu = shiftr(la * (la - 1), 1) + nu lanulanu = shiftr(lanu * (lanu - 1), 1) + lanu 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 - do la = nu + 1, nBas + do la = nu + 1, nBas8 lanu = shiftr(la * (la - 1), 1) + nu lanulanu0 = shiftr(lanu * (lanu - 1), 1) 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 K(mu,nu) = K(mu,nu) - P(la,la) * ERI_chem(nulalamu) enddo - do la = nu + 1, nBas + do la = nu + 1, nBas8 lala0 = shiftr(la * (la - 1), 1) lanu = lala0 + nu 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) enddo enddo - do la = nu + 1, nBas + do la = nu + 1, nBas8 lanu = shiftr(la * (la - 1), 1) + nu lanulanu0 = shiftr(lanu * (lanu - 1), 1) 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 K(mu,nu) = K(mu,nu) - P(si,la) * ERI_chem(nulasimu) enddo - do si = nu, nBas + do si = nu, nBas8 simu = shiftr(si * (si - 1), 1) + mu simunula = shiftr(simu * (simu - 1), 1) + nula 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 K(mu,nu) = K(mu,nu) - P(si,la) * ERI_chem(nulasimu) enddo - do si = nu + 1, nBas + do si = nu + 1, nBas8 simu = shiftr(si * (si - 1), 1) + mu simunula = shiftr(simu * (simu - 1), 1) + nula K(mu,nu) = K(mu,nu) - P(si,la) * ERI_chem(simunula) enddo enddo - do la = nu + 1, nBas + do la = nu + 1, nBas8 lanu = shiftr(la * (la - 1), 1) + nu - do si = la + 1, nBas + do si = la + 1, nBas8 simu = shiftr(si * (si - 1), 1) + mu simulanu = shiftr(simu * (simu - 1), 1) + lanu 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 - do nu = 1, nBas - do mu = nu+1, nBas + do nu = 1, nBas8 + do mu = nu+1, nBas8 K(mu,nu) = K(nu,mu) enddo enddo