4
1
mirror of https://github.com/pfloos/quack synced 2024-07-04 18:36:03 +02:00

sph ready

This commit is contained in:
Pierre-Francois Loos 2019-05-07 22:55:36 +02:00
parent f345b8e2be
commit ce7d0118ab
18 changed files with 191 additions and 196 deletions

11
GoSph
View File

@ -9,9 +9,10 @@ if [ $# = 2 ]
then then
cp examples/molecule.Sph_"$1" input/molecule cp examples/molecule.Sph_"$1" input/molecule
cp examples/basis.Sph.Ylm"$2" input/basis cp examples/basis.Sph.Ylm"$2" input/basis
cp ~/Integrals/QuAcK_Sph/Sph_ERI_"$2".dat int/ERI.dat cp ~/Integrals/QuAcK_Sph/Sph_ERI_"$2".dat ~/Integrals/QuAcK_Sph/ERI.dat
cp ~/Integrals/QuAcK_Sph/Sph_Kin_"$2".dat int/Kin.dat cp ~/Integrals/QuAcK_Sph/Sph_Kin_"$2".dat ~/Integrals/QuAcK_Sph/Kin.dat
cp ~/Integrals/QuAcK_Sph/Sph_Nuc_"$2".dat int/Nuc.dat cp ~/Integrals/QuAcK_Sph/Sph_Nuc_"$2".dat ~/Integrals/QuAcK_Sph/Nuc.dat
cp ~/Integrals/QuAcK_Sph/Sph_Ov_"$2".dat int/Ov.dat cp ~/Integrals/QuAcK_Sph/Sph_Ov_"$2".dat ~/Integrals/QuAcK_Sph/Ov.dat
./bin/QuAcK ./bin/QuAcK | tee sph.out
./extract_sph.sh sph.out
fi fi

View File

@ -1,86 +1,64 @@
#! /bin/bash #! /bin/bash
for i in *.out INPUT=$1
do
echo echo
echo '***********************' echo '******************************************'
echo '*** ' $i ' ***' echo '*** Extracting information of' $INPUT ' ***'
echo '***********************' echo '******************************************'
echo echo
echo echo
echo '--- HF information ---' echo '*** WFT information ***'
echo grep "MP2 correlation energy" $INPUT
grep "Ec(MP2) =" $INPUT
grep "Hartree-Fock energy" $i grep "Ec(CCSD) =" $INPUT
grep "HF HOMO energy (eV):" $i grep "Ec(CCSD(T)) =" $INPUT
grep "HF LUMO energy (eV):" $i
grep "HF HOMO-LUMO gap (eV):" $i
echo echo
echo '--- WFT information ---' echo '*** Gap information: HF, G0F2, GF2, G0W0 & evGW ***'
echo HF=`grep "HF HOMO-LUMO gap (eV):" $INPUT | cut -f2 -d":"`
G0F2=`grep "GF2 HOMO-LUMO gap (eV):" $INPUT | head -1 | cut -f2 -d":"`
GF2=`grep "GF2 HOMO-LUMO gap (eV):" $INPUT | tail -1 | cut -f2 -d":"`
G0W0=`grep "G0W0 HOMO-LUMO gap (eV):" $INPUT | cut -f2 -d":"`
evGW=`grep "evGW HOMO-LUMO gap (eV):" $INPUT | tail -1 | cut -f2 -d":"`
grep "Ec(MP2) =" $i echo -e "\t" $HF "\t" $G0F2 "\t" $GF2 "\t" $G0W0 "\t" $evGW
grep "Ec(CCSD) =" $i
grep "Ec(CCSD(T)) =" $i
echo echo
echo '--- CIS excitation energy (singlet & triplet) ---' echo '*** Ec@G0W0 information: RPA, GM, BSE1 & BSE3 ***'
echo RPA_G0W0=`grep "RPA@G0W0 correlation energy =" $INPUT| cut -f2 -d"="`
grep "| 1 |" $i | head -1 | cut -f4 -d"|" GM_G0W0=`grep "GM@G0W0 correlation energy =" $INPUT| cut -f2 -d"="`
grep "| 1 |" $i | head -2 | cut -f4 -d"|" | tail -1 BSE1_G0W0=`grep "BSE@G0W0 correlation energy (singlet)" $INPUT| cut -f2 -d"="`
BSE3_G0W0=`grep "BSE@G0W0 correlation energy (triplet)" $INPUT| cut -f2 -d"="`
echo -e "\t" $RPA_G0W0 "\t" $GM_G0W0 "\t" $BSE1_G0W0 "\t" $BSE3_G0W0
echo echo
echo '--- TDHF excitation energy (singlet & triplet) ---' echo '*** Ec@evGW information: RPA, GM, BSE1 & BSE3 ***'
echo RPA_evGW=`grep "RPA@evGW correlation energy =" $INPUT | tail -1| cut -f2 -d"="`
grep "| 1 |" $i | head -3 | cut -f4 -d"|" | tail -1 GM_evGW=`grep "GM@evGW correlation energy =" $INPUT | tail -1 | cut -f2 -d"="`
grep "| 1 |" $i | head -4 | cut -f4 -d"|" | tail -1 BSE1_evGW=`grep "BSE@evGW correlation energy (singlet)" $INPUT | cut -f2 -d"="`
BSE3_evGW=`grep "BSE@evGW correlation energy (triplet)" $INPUT | cut -f2 -d"="`
echo -e "\t" $RPA_evGW "\t" $GM_evGW "\t" $BSE1_evGW "\t" $BSE3_evGW
echo echo
echo '--- GF2 information ---' echo '*** CIS and TDHF excitation energy (singlet & triplet) ***'
echo CIS1=`grep "| 1 |" $INPUT | head -1 | cut -f4 -d"|"`
CIS3=`grep "| 1 |" $INPUT | head -2 | cut -f4 -d"|" | tail -1`
grep "GF2 HOMO energy (eV):" $i | tail -1 TDHF1=`grep "| 1 |" $INPUT | head -3 | cut -f4 -d"|" | tail -1`
grep "GF2 LUMO energy (eV):" $i | tail -1 TDHF3=`grep "| 1 |" $INPUT | head -4 | cut -f4 -d"|" | tail -1`
grep "GF2 HOMO-LUMO gap (eV):" $i | tail -1 echo -e "\t" $CIS1 "\t" $CIS3 "\t" $TDHF1 "\t" $TDHF3
echo echo
echo '--- G0W0 information ---' echo '*** BSE@G0W0 and BSE@evGW excitation energy (singlet & triplet) ***'
echo G0W01=`grep "| 1 |" $INPUT | head -6 | cut -f4 -d"|" | tail -1`
G0W03=`grep "| 1 |" $INPUT | head -7 | cut -f4 -d"|" | tail -1`
grep "G0W0 HOMO energy (eV):" $i evGW1=`grep "| 1 |" $INPUT | tail -2 | head -1 | cut -f4 -d"|"`
grep "G0W0 LUMO energy (eV):" $i evGW3=`grep "| 1 |" $INPUT | tail -1 | cut -f4 -d"|"`
grep "G0W0 HOMO-LUMO gap (eV):" $i echo -e "\t" $G0W01 "\t" $G0W03 "\t" $evGW1 "\t" $evGW3
grep "G0W0 RPA total energy =" $i
grep "G0W0 GM total energy =" $i
echo
echo '--- BSE@G0W0 excitation energy (singlet & triplet) ---'
echo
grep "| 1 |" $i | head -6 | cut -f4 -d"|" | tail -1
grep "| 1 |" $i | head -7 | cut -f4 -d"|" | tail -1
echo
echo '--- evGW information ---'
echo
grep "evGW HOMO energy (eV):" $i | tail -1
grep "evGW LUMO energy (eV):" $i | tail -1
grep "evGW HOMO-LUMO gap (eV):" $i | tail -1
grep "evGW RPA total energy =" $i | tail -1
grep "evGW GM total energy =" $i | tail -1
echo
echo '--- BSE@evGW excitation energy (singlet & triplet) ---'
echo
grep "| 1 |" $i | tail -2 | head -1 | cut -f4 -d"|"
grep "| 1 |" $i | tail -1 | cut -f4 -d"|"
echo echo
echo '*** DONE ***' echo '*** DONE ***'
echo
done

View File

@ -1,42 +1,4 @@
1 100 1 81
S 1 1.00
1.0000000 1.0000000
S 1 1.00
1.0000000 1.0000000
S 1 1.00
1.0000000 1.0000000
S 1 1.00
1.0000000 1.0000000
S 1 1.00
1.0000000 1.0000000
S 1 1.00
1.0000000 1.0000000
S 1 1.00
1.0000000 1.0000000
S 1 1.00
1.0000000 1.0000000
S 1 1.00
1.0000000 1.0000000
S 1 1.00
1.0000000 1.0000000
S 1 1.00
1.0000000 1.0000000
S 1 1.00
1.0000000 1.0000000
S 1 1.00
1.0000000 1.0000000
S 1 1.00
1.0000000 1.0000000
S 1 1.00
1.0000000 1.0000000
S 1 1.00
1.0000000 1.0000000
S 1 1.00
1.0000000 1.0000000
S 1 1.00
1.0000000 1.0000000
S 1 1.00
1.0000000 1.0000000
S 1 1.00 S 1 1.00
1.0000000 1.0000000 1.0000000 1.0000000
S 1 1.00 S 1 1.00

View File

@ -1,14 +1,14 @@
# RHF UHF MOM # RHF UHF MOM
T F F T F F
# MP2 MP3 MP2-F12 # MP2 MP3 MP2-F12
F F F T F F
# CCD CCSD CCSD(T) # CCD CCSD CCSD(T)
F F F F F F
# CIS TDHF ADC # CIS TDHF ADC
F F F T T F
# GF2 GF3 # GF2 GF3
F F T F
# G0W0 evGW qsGW # G0W0 evGW qsGW
T F F T T F
# MCMP2 # MCMP2
F F

View File

@ -1,4 +1,4 @@
# nAt nEla nElb nCore nRyd # nAt nEla nElb nCore nRyd
1 9 9 0 0 1 16 16 0 0
# Znuc x y z # Znuc x y z
X 0.0 0.0 0.0 X 0.0 0.0 0.0

View File

@ -7,8 +7,8 @@
# CIS/TDHF: singlet triplet # CIS/TDHF: singlet triplet
T T T T
# GF: maxSCF thresh DIIS n_diis renormalization # GF: maxSCF thresh DIIS n_diis renormalization
64 0.00001 T 5 3 64 0.00001 T 10 3
# GW: maxSCF thresh DIIS n_diis COHSEX SOSEX BSE TDA G0W GW0 linearize # GW: maxSCF thresh DIIS n_diis COHSEX SOSEX BSE TDA G0W GW0 linearize
64 0.00001 T 3 F F T F F F F 64 0.00001 T 10 F F T F F F F
# MCMP2: nMC nEq nWalk dt nPrint iSeed doDrift # MCMP2: nMC nEq nWalk dt nPrint iSeed doDrift
1000000 100000 10 0.3 10000 1234 T 1000000 100000 10 0.3 10000 1234 T

View File

@ -1,8 +1,8 @@
#! /bin/bash #! /bin/bash
Lmin=0 Lmin=1
Lmax=0 Lmax=1
Mmax=9 Mmax=10
rs=$1 rs=$1
if [ $# != 1 ] if [ $# != 1 ]
@ -30,8 +30,8 @@ else
nb=$(bc -l <<< "(($M+1)*($M+1))") nb=$(bc -l <<< "(($M+1)*($M+1))")
echo "Number of basis functions = " $nb echo "Number of basis functions = " $nb
echo -e "# rs \n" $rs > input/sph echo -e "# rs \n" $rs > input/sph
./GoSph $ne $M > Sph_${ne}_${nb}.out ./GoSph $ne $M > out/Sph_${ne}_${nb}.out
grep "Total CPU time for QuAcK =" Sph_${ne}_${nb}.out grep "Total CPU time for QuAcK =" out/Sph_${ne}_${nb}.out
done done

View File

@ -1,5 +1,5 @@
subroutine G0W0(COHSEX,SOSEX,BSE,TDA,singlet_manifold,triplet_manifold, & subroutine G0W0(COHSEX,SOSEX,BSE,TDA,singlet_manifold,triplet_manifold, &
nBas,nC,nO,nV,nR,nS,ENuc,ERHF,Hc,ERI_AO_basis,ERI_MO_basis,PHF,cHF,eHF,eG0W0) nBas,nC,nO,nV,nR,nS,ENuc,ERHF,Hc,H,ERI,PHF,cHF,eHF,eG0W0)
! Perform G0W0 calculation ! Perform G0W0 calculation
@ -20,8 +20,8 @@ subroutine G0W0(COHSEX,SOSEX,BSE,TDA,singlet_manifold,triplet_manifold, &
double precision,intent(in) :: cHF(nBas,nBas) double precision,intent(in) :: cHF(nBas,nBas)
double precision,intent(in) :: PHF(nBas,nBas) double precision,intent(in) :: PHF(nBas,nBas)
double precision,intent(in) :: Hc(nBas,nBas) double precision,intent(in) :: Hc(nBas,nBas)
double precision,intent(in) :: ERI_AO_basis(nBas,nBas,nBas,nBas) double precision,intent(in) :: H(nBas,nBas)
double precision,intent(in) :: ERI_MO_basis(nBas,nBas,nBas,nBas) double precision,intent(in) :: ERI(nBas,nBas,nBas,nBas)
! Local variables ! Local variables
@ -30,7 +30,6 @@ subroutine G0W0(COHSEX,SOSEX,BSE,TDA,singlet_manifold,triplet_manifold, &
double precision :: EcRPA(nspin) double precision :: EcRPA(nspin)
double precision :: EcBSE(nspin) double precision :: EcBSE(nspin)
double precision :: EcGM double precision :: EcGM
double precision,allocatable :: H(:,:)
double precision,allocatable :: SigC(:) double precision,allocatable :: SigC(:)
double precision,allocatable :: Z(:) double precision,allocatable :: Z(:)
double precision,allocatable :: Omega(:,:) double precision,allocatable :: Omega(:,:)
@ -65,23 +64,19 @@ subroutine G0W0(COHSEX,SOSEX,BSE,TDA,singlet_manifold,triplet_manifold, &
! Memory allocation ! Memory allocation
allocate(H(nBas,nBas),SigC(nBas),Z(nBas),Omega(nS,nspin),XpY(nS,nS,nspin), & allocate(SigC(nBas),Z(nBas),Omega(nS,nspin),XpY(nS,nS,nspin), &
rho(nBas,nBas,nS,nspin),rhox(nBas,nBas,nS,nspin)) rho(nBas,nBas,nS,nspin),rhox(nBas,nBas,nS,nspin))
! Compute Hartree Hamiltonian in the MO basis
call Hartree_matrix_MO_basis(nBas,cHF,PHF,Hc,ERI_AO_basis,H)
! Compute linear response ! Compute linear response
call linear_response(ispin,dRPA,TDA,.false.,nBas,nC,nO,nV,nR,nS,eHF,ERI_MO_basis, & call linear_response(ispin,dRPA,TDA,.false.,nBas,nC,nO,nV,nR,nS,eHF,ERI, &
rho(:,:,:,ispin),EcRPA(ispin),Omega(:,ispin),XpY(:,:,ispin)) rho(:,:,:,ispin),EcRPA(ispin),Omega(:,ispin),XpY(:,:,ispin))
! Compute correlation part of the self-energy ! Compute correlation part of the self-energy
call excitation_density(nBas,nC,nO,nR,nS,ERI_MO_basis,XpY(:,:,ispin),rho(:,:,:,ispin)) call excitation_density(nBas,nC,nO,nR,nS,ERI,XpY(:,:,ispin),rho(:,:,:,ispin))
if(SOSEX) call excitation_density_SOSEX(nBas,nC,nO,nR,nS,ERI_MO_basis,XpY(:,:,ispin),rhox(:,:,:,ispin)) if(SOSEX) call excitation_density_SOSEX(nBas,nC,nO,nR,nS,ERI,XpY(:,:,ispin),rhox(:,:,:,ispin))
call self_energy_correlation_diag(COHSEX,SOSEX,nBas,nC,nO,nV,nR,nS,eHF, & call self_energy_correlation_diag(COHSEX,SOSEX,nBas,nC,nO,nV,nR,nS,eHF, &
Omega(:,ispin),rho(:,:,:,ispin),rhox(:,:,:,ispin),EcGM,SigC) Omega(:,ispin),rho(:,:,:,ispin),rhox(:,:,:,ispin),EcGM,SigC)
@ -122,7 +117,7 @@ subroutine G0W0(COHSEX,SOSEX,BSE,TDA,singlet_manifold,triplet_manifold, &
ispin = 1 ispin = 1
EcBSE(ispin) = 0d0 EcBSE(ispin) = 0d0
call linear_response(ispin,dRPA,TDA,BSE,nBas,nC,nO,nV,nR,nS,eG0W0,ERI_MO_basis, & call linear_response(ispin,dRPA,TDA,BSE,nBas,nC,nO,nV,nR,nS,eG0W0,ERI, &
rho(:,:,:,ispin),EcBSE(ispin),Omega(:,ispin),XpY(:,:,ispin)) rho(:,:,:,ispin),EcBSE(ispin),Omega(:,ispin),XpY(:,:,ispin))
call print_excitation('BSE ',ispin,nS,Omega(:,ispin)) call print_excitation('BSE ',ispin,nS,Omega(:,ispin))
@ -135,11 +130,11 @@ subroutine G0W0(COHSEX,SOSEX,BSE,TDA,singlet_manifold,triplet_manifold, &
ispin = 2 ispin = 2
EcBSE(ispin) = 0d0 EcBSE(ispin) = 0d0
call linear_response(ispin,dRPA,TDA,.false.,nBas,nC,nO,nV,nR,nS,eHF,ERI_MO_basis, & call linear_response(ispin,dRPA,TDA,.false.,nBas,nC,nO,nV,nR,nS,eHF,ERI, &
rho(:,:,:,ispin),EcRPA(ispin),Omega(:,ispin),XpY(:,:,ispin)) rho(:,:,:,ispin),EcRPA(ispin),Omega(:,ispin),XpY(:,:,ispin))
call excitation_density(nBas,nC,nO,nR,nS,ERI_MO_basis,XpY(:,:,ispin),rho(:,:,:,ispin)) call excitation_density(nBas,nC,nO,nR,nS,ERI,XpY(:,:,ispin),rho(:,:,:,ispin))
call linear_response(ispin,dRPA,TDA,BSE,nBas,nC,nO,nV,nR,nS,eG0W0,ERI_MO_basis, & call linear_response(ispin,dRPA,TDA,BSE,nBas,nC,nO,nV,nR,nS,eG0W0,ERI, &
rho(:,:,:,1),EcBSE(ispin),Omega(:,ispin),XpY(:,:,ispin)) rho(:,:,:,1),EcBSE(ispin),Omega(:,ispin),XpY(:,:,ispin))
call print_excitation('BSE ',ispin,nS,Omega(:,ispin)) call print_excitation('BSE ',ispin,nS,Omega(:,ispin))

View File

@ -3,11 +3,15 @@ BDIR =../../bin
ODIR = obj ODIR = obj
OODIR = ../IntPak/obj OODIR = ../IntPak/obj
SDIR =. SDIR =.
FC = gfortran -I$(IDIR) FC = gfortran -I$(IDIR) -Wall -g -Wno-unused -Wno-unused-dummy-argument
ifeq ($(DEBUG),1) ifeq ($(DEBUG),1)
FFLAGS = -Wall -g -msse4.2 -fcheck=all -Waliasing -Wampersand -Wconversion -Wsurprising -Wintrinsics-std -Wno-tabs -Wintrinsic-shadow -Wline-truncation -Wreal-q-constant FFLAGS = -Wall -g -msse4.2 -fcheck=all -Waliasing -Wampersand -Wconversion -Wsurprising -Wintrinsics-std -Wno-tabs -Wintrinsic-shadow -Wline-truncation -Wreal-q-constant
else else
FFLAGS = -Wall -Wno-unused -Wno-unused-dummy-argument -O2 FFLAGS = -O3
endif
ifeq ($(PROFIL),1)
FC += -p -fno-inline
endif endif
LIBS = ~/Dropbox/quack/lib/*.a LIBS = ~/Dropbox/quack/lib/*.a
@ -32,5 +36,8 @@ debug:
DEBUG=1 make $(BDIR)/QuAcK DEBUG=1 make $(BDIR)/QuAcK
#DEBUG=1 make clean $(BDIR)/QuAcK #DEBUG=1 make clean $(BDIR)/QuAcK
profil:
PROFIL=1 make $(BDIR)/QuAcK
clean: clean:
rm -f $(ODIR)/*.o $(BDIR)/QuAcK $(BDIR)/debug rm -f $(ODIR)/*.o $(BDIR)/QuAcK $(BDIR)/debug

View File

@ -3,6 +3,7 @@ program QuAcK
implicit none implicit none
include 'parameters.h' include 'parameters.h'
logical :: doSph
logical :: doRHF,doUHF,doMOM logical :: doRHF,doUHF,doMOM
logical :: doMP2,doMP3,doMP2F12 logical :: doMP2,doMP3,doMP2F12
logical :: doCCD,doCCSD,doCCSDT logical :: doCCD,doCCSD,doCCSDT
@ -27,13 +28,15 @@ program QuAcK
integer :: TrialType integer :: TrialType
double precision,allocatable :: cTrial(:),gradient(:),hessian(:,:) double precision,allocatable :: cTrial(:),gradient(:),hessian(:,:)
double precision,allocatable :: S(:,:),T(:,:),V(:,:),Hc(:,:),X(:,:) double precision,allocatable :: S(:,:),T(:,:),V(:,:),Hc(:,:),H(:,:),X(:,:)
double precision,allocatable :: ERI_AO_basis(:,:,:,:),ERI_MO_basis(:,:,:,:) double precision,allocatable :: ERI_AO_basis(:,:,:,:),ERI_MO_basis(:,:,:,:)
double precision,allocatable :: F12(:,:,:,:),Yuk(:,:,:,:),FC(:,:,:,:,:,:) double precision,allocatable :: F12(:,:,:,:),Yuk(:,:,:,:),FC(:,:,:,:,:,:)
double precision :: start_QuAcK ,end_QuAcK ,t_QuAcK double precision :: start_QuAcK ,end_QuAcK ,t_QuAcK
double precision :: start_int ,end_int ,t_int
double precision :: start_HF ,end_HF ,t_HF double precision :: start_HF ,end_HF ,t_HF
double precision :: start_MOM ,end_MOM ,t_MOM double precision :: start_MOM ,end_MOM ,t_MOM
double precision :: start_AOtoMO ,end_AOtoMO ,t_AOtoMO
double precision :: start_CCD ,end_CCD ,t_CCD double precision :: start_CCD ,end_CCD ,t_CCD
double precision :: start_CCSD ,end_CCSD ,t_CCSD double precision :: start_CCSD ,end_CCSD ,t_CCSD
double precision :: start_CIS ,end_CIS ,t_CIS double precision :: start_CIS ,end_CIS ,t_CIS
@ -85,6 +88,10 @@ program QuAcK
write(*,*) '******************************************************************************************' write(*,*) '******************************************************************************************'
write(*,*) write(*,*)
! Spherium calculation?
doSph = .true.
call cpu_time(start_QuAcK) call cpu_time(start_QuAcK)
! Which calculations do you want to do? ! Which calculations do you want to do?
@ -162,13 +169,30 @@ program QuAcK
! Memory allocation for one- and two-electron integrals ! Memory allocation for one- and two-electron integrals
allocate(cHF(nBas,nBas,nspin),eHF(nBas,nspin),eG0W0(nBas),PHF(nBas,nBas,nspin), & allocate(cHF(nBas,nBas,nspin),eHF(nBas,nspin),eG0W0(nBas),PHF(nBas,nBas,nspin), &
S(nBas,nBas),T(nBas,nBas),V(nBas,nBas),Hc(nBas,nBas),X(nBas,nBas), & S(nBas,nBas),T(nBas,nBas),V(nBas,nBas),Hc(nBas,nBas),H(nBas,nBas),X(nBas,nBas), &
ERI_AO_basis(nBas,nBas,nBas,nBas),ERI_MO_basis(nBas,nBas,nBas,nBas)) ERI_AO_basis(nBas,nBas,nBas,nBas),ERI_MO_basis(nBas,nBas,nBas,nBas))
! Read integrals ! Read integrals
call read_integrals(nEl(:),nBas,S,T,V,Hc,ERI_AO_basis) call cpu_time(start_int)
if(doSph) then
call read_integrals_sph(nEl(:),nBas,S,T,V,Hc,ERI_AO_basis)
else
call read_integrals(nEl(:),nBas,S,T,V,Hc,ERI_AO_basis)
end if
call cpu_time(end_int)
t_int = end_int - start_int
write(*,*)
write(*,'(A65,1X,F9.3,A8)') 'Total CPU time for reading integrals = ',t_int,' seconds'
write(*,*)
! Compute orthogonalization matrix ! Compute orthogonalization matrix
@ -185,7 +209,7 @@ program QuAcK
call cpu_time(end_HF) call cpu_time(end_HF)
t_HF = end_HF - start_HF t_HF = end_HF - start_HF
write(*,'(A65,1X,F9.3,A8)') 'Total CPU time for UHF = ',t_HF,' seconds' write(*,'(A65,1X,F9.3,A8)') 'Total CPU time for RHF = ',t_HF,' seconds'
write(*,*) write(*,*)
endif endif
@ -227,9 +251,29 @@ program QuAcK
! AO to MO integral transform for post-HF methods ! AO to MO integral transform for post-HF methods
!------------------------------------------------------------------------ !------------------------------------------------------------------------
! call AOtoMO_integral_transform(nBas,cHF,ERI_AO_basis,ERI_MO_basis) ! Compute Hartree Hamiltonian in the MO basis
ERI_MO_basis = ERI_AO_basis
print*,'!!! MO = AO !!!' call Hartree_matrix_MO_basis(nBas,cHF,PHF,Hc,ERI_AO_basis,H)
call cpu_time(start_AOtoMO)
if(doSph) then
ERI_MO_basis = ERI_AO_basis
print*,'!!! MO = AO !!!'
deallocate(ERI_AO_basis)
else
call AOtoMO_integral_transform(nBas,cHF,ERI_AO_basis,ERI_MO_basis)
end if
call cpu_time(end_AOtoMO)
t_AOtoMO = end_AOtoMO - start_AOtoMO
write(*,'(A65,1X,F9.3,A8)') 'Total CPU time for AO to MO transformation = ',t_AOtoMO,' seconds'
write(*,*)
!------------------------------------------------------------------------ !------------------------------------------------------------------------
! Compute MP2 energy ! Compute MP2 energy
@ -326,8 +370,7 @@ program QuAcK
if(doCIS) then if(doCIS) then
call cpu_time(start_CIS) call cpu_time(start_CIS)
call CIS(singlet_manifold,triplet_manifold, & call CIS(singlet_manifold,triplet_manifold,nBas,nC,nO,nV,nR,nS,ERI_MO_basis,eHF)
nBas,nC,nO,nV,nR,nS,ERI_MO_basis,eHF)
call cpu_time(end_CIS) call cpu_time(end_CIS)
t_CIS = end_CIS - start_CIS t_CIS = end_CIS - start_CIS
@ -410,7 +453,7 @@ program QuAcK
call cpu_time(start_G0W0) call cpu_time(start_G0W0)
call G0W0(COHSEX,SOSEX,BSE,TDA,singlet_manifold,triplet_manifold, & call G0W0(COHSEX,SOSEX,BSE,TDA,singlet_manifold,triplet_manifold, &
nBas,nC(1),nO(1),nV(1),nR(1),nS(1),ENuc,ERHF,Hc,ERI_AO_basis,ERI_MO_basis,PHF,cHF,eHF,eG0W0) nBas,nC(1),nO(1),nV(1),nR(1),nS(1),ENuc,ERHF,Hc,H,ERI_MO_basis,PHF,cHF,eHF,eG0W0)
call cpu_time(end_G0W0) call cpu_time(end_G0W0)
t_G0W0 = end_G0W0 - start_G0W0 t_G0W0 = end_G0W0 - start_G0W0
@ -427,7 +470,7 @@ program QuAcK
call cpu_time(start_evGW) call cpu_time(start_evGW)
call evGW(maxSCF_GW,thresh_GW,n_diis_GW,COHSEX,SOSEX,BSE,TDA,G0W,GW0,singlet_manifold,triplet_manifold,linearize, & call evGW(maxSCF_GW,thresh_GW,n_diis_GW,COHSEX,SOSEX,BSE,TDA,G0W,GW0,singlet_manifold,triplet_manifold,linearize, &
nBas,nC(1),nO(1),nV(1),nR(1),nS(1),ENuc,ERHF,Hc,ERI_AO_basis,ERI_MO_basis,PHF,cHF,eHF,eG0W0) nBas,nC(1),nO(1),nV(1),nR(1),nS(1),ENuc,ERHF,Hc,H,ERI_MO_basis,PHF,cHF,eHF,eG0W0)
call cpu_time(end_evGW) call cpu_time(end_evGW)
t_evGW = end_evGW - start_evGW t_evGW = end_evGW - start_evGW
@ -445,7 +488,7 @@ program QuAcK
call cpu_time(start_qsGW) call cpu_time(start_qsGW)
call qsGW(maxSCF_GW,thresh_GW,n_diis_GW, & call qsGW(maxSCF_GW,thresh_GW,n_diis_GW, &
COHSEX,SOSEX,BSE,TDA,G0W,GW0,singlet_manifold,triplet_manifold, & COHSEX,SOSEX,BSE,TDA,G0W,GW0,singlet_manifold,triplet_manifold, &
nBas,nC(1),nO(1),nV(1),nR(1),nS(1),ENuc,S,X,T,V,Hc,ERI_AO_basis,PHF,cHF,eHF) nBas,nC(1),nO(1),nV(1),nR(1),nS(1),ENuc,ERHF,S,X,T,V,Hc,ERI_AO_basis,PHF,cHF,eHF)
call cpu_time(end_qsGW) call cpu_time(end_qsGW)
t_qsGW = end_qsGW - start_qsGW t_qsGW = end_qsGW - start_qsGW

View File

@ -1,5 +1,5 @@
subroutine evGW(maxSCF,thresh,max_diis,COHSEX,SOSEX,BSE,TDA,G0W,GW0,singlet_manifold,triplet_manifold,linearize, & subroutine evGW(maxSCF,thresh,max_diis,COHSEX,SOSEX,BSE,TDA,G0W,GW0,singlet_manifold,triplet_manifold,linearize, &
nBas,nC,nO,nV,nR,nS,ENuc,ERHF,Hc,ERI_AO_basis,ERI_MO_basis,PHF,cHF,eHF,eG0W0) nBas,nC,nO,nV,nR,nS,ENuc,ERHF,Hc,H,ERI_MO_basis,PHF,cHF,eHF,eG0W0)
! Perform self-consistent eigenvalue-only GW calculation ! Perform self-consistent eigenvalue-only GW calculation
@ -28,7 +28,7 @@ subroutine evGW(maxSCF,thresh,max_diis,COHSEX,SOSEX,BSE,TDA,G0W,GW0,singlet_mani
double precision,intent(in) :: PHF(nBas,nBas) double precision,intent(in) :: PHF(nBas,nBas)
double precision,intent(in) :: eG0W0(nBas) double precision,intent(in) :: eG0W0(nBas)
double precision,intent(in) :: Hc(nBas,nBas) double precision,intent(in) :: Hc(nBas,nBas)
double precision,intent(in) :: ERI_AO_basis(nBas,nBas,nBas,nBas) double precision,intent(in) :: H(nBas,nBas)
double precision,intent(in) :: ERI_MO_basis(nBas,nBas,nBas,nBas) double precision,intent(in) :: ERI_MO_basis(nBas,nBas,nBas,nBas)
! Local variables ! Local variables
@ -49,7 +49,6 @@ subroutine evGW(maxSCF,thresh,max_diis,COHSEX,SOSEX,BSE,TDA,G0W,GW0,singlet_mani
double precision,allocatable :: eGW(:) double precision,allocatable :: eGW(:)
double precision,allocatable :: eOld(:) double precision,allocatable :: eOld(:)
double precision,allocatable :: Z(:) double precision,allocatable :: Z(:)
double precision,allocatable :: H(:,:)
double precision,allocatable :: SigC(:) double precision,allocatable :: SigC(:)
double precision,allocatable :: Omega(:,:) double precision,allocatable :: Omega(:,:)
double precision,allocatable :: XpY(:,:,:) double precision,allocatable :: XpY(:,:,:)
@ -80,8 +79,8 @@ subroutine evGW(maxSCF,thresh,max_diis,COHSEX,SOSEX,BSE,TDA,G0W,GW0,singlet_mani
! Memory allocation ! Memory allocation
allocate(eGW(nBas),eOld(nBas),Z(nBas),H(nBas,nBas),SigC(nBas),Omega(nS,nspin), & allocate(eGW(nBas),eOld(nBas),Z(nBas),SigC(nBas),Omega(nS,nspin), &
XpY(nS,nS,nspin),rho(nBas,nBas,nS,nspin),rhox(nBas,nBas,nS,nspin), & XpY(nS,nS,nspin),rho(nBas,nBas,nS,nspin),rhox(nBas,nBas,nS,nspin), &
error_diis(nBas,max_diis),e_diis(nBas,max_diis)) error_diis(nBas,max_diis),e_diis(nBas,max_diis))
! Initialization ! Initialization
@ -96,10 +95,6 @@ subroutine evGW(maxSCF,thresh,max_diis,COHSEX,SOSEX,BSE,TDA,G0W,GW0,singlet_mani
eOld(:) = eGW(:) eOld(:) = eGW(:)
Z(:) = 1d0 Z(:) = 1d0
! Compute Hartree Hamiltonian in the MO basis
call Hartree_matrix_MO_basis(nBas,cHF,PHF,Hc,ERI_AO_basis,H)
!------------------------------------------------------------------------ !------------------------------------------------------------------------
! Main loop ! Main loop
!------------------------------------------------------------------------ !------------------------------------------------------------------------

View File

@ -36,14 +36,14 @@ subroutine print_G0W0(nBas,nO,e,ENuc,EHF,SigmaC,Z,eGW,EcRPA,EcGM)
enddo enddo
write(*,*)'-------------------------------------------------------------------------------' write(*,*)'-------------------------------------------------------------------------------'
write(*,'(2X,A27,F15.6)') 'G0W0 HOMO energy (eV):',eGW(HOMO)*HaToeV write(*,'(2X,A30,F15.6)') 'G0W0 HOMO energy (eV):',eGW(HOMO)*HaToeV
write(*,'(2X,A27,F15.6)') 'G0W0 LUMO energy (eV):',eGW(LUMO)*HaToeV write(*,'(2X,A30,F15.6)') 'G0W0 LUMO energy (eV):',eGW(LUMO)*HaToeV
write(*,'(2X,A27,F15.6)') 'G0W0 HOMO-LUMO gap (eV):',Gap*HaToeV write(*,'(2X,A30,F15.6)') 'G0W0 HOMO-LUMO gap (eV):',Gap*HaToeV
write(*,*)'-------------------------------------------------------------------------------' write(*,*)'-------------------------------------------------------------------------------'
write(*,'(2X,A27,F15.6)') 'G0W0 RPA total energy =',ENuc + EHF + EcRPA write(*,'(2X,A30,F15.6)') 'RPA@G0W0 total energy =',ENuc + EHF + EcRPA
write(*,'(2X,A27,F15.6)') 'RPA correlation energy =',EcRPA write(*,'(2X,A30,F15.6)') 'RPA@G0W0 correlation energy =',EcRPA
write(*,'(2X,A27,F15.6)') 'G0W0 GM total energy =',ENuc + EHF + EcGM write(*,'(2X,A30,F15.6)') 'GM@G0W0 total energy =',ENuc + EHF + EcGM
write(*,'(2X,A27,F15.6)') 'GM correlation energy =',EcGM write(*,'(2X,A30,F15.6)') 'GM@G0W0 correlation energy =',EcGM
write(*,*)'-------------------------------------------------------------------------------' write(*,*)'-------------------------------------------------------------------------------'
write(*,*) write(*,*)

View File

@ -43,14 +43,14 @@ subroutine print_evGW(nBas,nO,nSCF,Conv,e,ENuc,EHF,SigmaC,Z,eGW,EcRPA,EcGM)
write(*,'(2X,A10,I3)') 'Iteration ',nSCF write(*,'(2X,A10,I3)') 'Iteration ',nSCF
write(*,'(2X,A14,F15.5)')'Convergence = ',Conv write(*,'(2X,A14,F15.5)')'Convergence = ',Conv
write(*,*)'-------------------------------------------------------------------------------' write(*,*)'-------------------------------------------------------------------------------'
write(*,'(2X,A27,F15.6)') 'evGW HOMO energy (eV):',eGW(HOMO)*HaToeV write(*,'(2X,A30,F15.6)') 'evGW HOMO energy (eV):',eGW(HOMO)*HaToeV
write(*,'(2X,A27,F15.6)') 'evGW LUMO energy (eV):',eGW(LUMO)*HaToeV write(*,'(2X,A30,F15.6)') 'evGW LUMO energy (eV):',eGW(LUMO)*HaToeV
write(*,'(2X,A27,F15.6)') 'evGW HOMO-LUMO gap (eV):',Gap*HaToeV write(*,'(2X,A30,F15.6)') 'evGW HOMO-LUMO gap (eV):',Gap*HaToeV
write(*,*)'-------------------------------------------------------------------------------' write(*,*)'-------------------------------------------------------------------------------'
write(*,'(2X,A27,F15.6)') 'evGW RPA total energy =',ENuc + EHF + EcRPA write(*,'(2X,A30,F15.6)') 'RPA@evGW total energy =',ENuc + EHF + EcRPA
write(*,'(2X,A27,F15.6)') 'RPA correlation energy =',EcRPA write(*,'(2X,A30,F15.6)') 'RPA@evGW correlation energy =',EcRPA
write(*,'(2X,A27,F15.6)') 'evGW GM total energy =',ENuc + EHF + EcGM write(*,'(2X,A30,F15.6)') 'GM@evGW total energy =',ENuc + EHF + EcGM
write(*,'(2X,A27,F15.6)') 'GM correlation energy =',EcGM write(*,'(2X,A30,F15.6)') 'GM@evGW correlation energy =',EcGM
write(*,*)'-------------------------------------------------------------------------------' write(*,*)'-------------------------------------------------------------------------------'
write(*,*) write(*,*)

View File

@ -5,11 +5,16 @@ subroutine print_excitation(method,ispin,nS,Omega)
implicit none implicit none
include 'parameters.h' include 'parameters.h'
! Input variables
character*5,intent(in) :: method character*5,intent(in) :: method
integer,intent(in) :: ispin,nS integer,intent(in) :: ispin,nS
double precision,intent(in) :: Omega(nS) double precision,intent(in) :: Omega(nS)
! Local variables
character*7 :: spin_manifold character*7 :: spin_manifold
integer,parameter :: maxS = 32
integer :: ia integer :: ia
if(ispin == 1) spin_manifold = 'singlet' if(ispin == 1) spin_manifold = 'singlet'
@ -23,7 +28,7 @@ subroutine print_excitation(method,ispin,nS,Omega)
'|','State','|',' Excitation energy (au) ','|',' Excitation energy (eV) ','|' '|','State','|',' Excitation energy (au) ','|',' Excitation energy (eV) ','|'
write(*,*)'-------------------------------------------------------------' write(*,*)'-------------------------------------------------------------'
do ia=1,nS do ia=1,min(nS,maxS)
write(*,'(1X,A1,1X,I5,1X,A1,1X,F23.6,1X,A1,1X,F23.6,1X,A1,1X)') & write(*,'(1X,A1,1X,I5,1X,A1,1X,F23.6,1X,A1,1X,F23.6,1X,A1,1X)') &
'|',ia,'|',Omega(ia),'|',Omega(ia)*HaToeV,'|' '|',ia,'|',Omega(ia),'|',Omega(ia)*HaToeV,'|'
enddo enddo

View File

@ -66,8 +66,8 @@ subroutine print_qsGW(nBas,nO,nSCF,Conv,thresh,eHF,eGW,c,ENuc,P,T,V,Hc,J,K,F,Sig
write(*,'(2X,A27,F15.6)') 'qsGW GM total energy =',EqsGW + ENuc + EcGM write(*,'(2X,A27,F15.6)') 'qsGW GM total energy =',EqsGW + ENuc + EcGM
write(*,'(2X,A27,F15.6)') 'qsGW exchange energy =',Ex write(*,'(2X,A27,F15.6)') 'qsGW exchange energy =',Ex
write(*,'(2X,A27,F15.6)') 'qsGW correlation energy =',Ec write(*,'(2X,A27,F15.6)') 'qsGW correlation energy =',Ec
write(*,'(2X,A27,F15.6)') 'RPA correlation energy =',EcRPA write(*,'(2X,A27,F15.6)') 'RPA@qsGW correlation energy =',EcRPA
write(*,'(2X,A27,F15.6)') 'GM correlation energy =',EcGM write(*,'(2X,A27,F15.6)') 'GM@qsGW correlation energy =',EcGM
write(*,*)'-------------------------------------------' write(*,*)'-------------------------------------------'
write(*,*) write(*,*)

View File

@ -1,5 +1,5 @@
subroutine qsGW(maxSCF,thresh,max_diis,COHSEX,SOSEX,BSE,TDA,G0W,GW0,singlet_manifold,triplet_manifold, & subroutine qsGW(maxSCF,thresh,max_diis,COHSEX,SOSEX,BSE,TDA,G0W,GW0,singlet_manifold,triplet_manifold, &
nBas,nC,nO,nV,nR,nS,ENuc,S,X,T,V,Hc,ERI_AO_basis,PHF,cHF,eHF) nBas,nC,nO,nV,nR,nS,ENuc,ERHF,S,X,T,V,Hc,ERI_AO_basis,PHF,cHF,eHF)
! Compute linear response ! Compute linear response
@ -21,6 +21,7 @@ subroutine qsGW(maxSCF,thresh,max_diis,COHSEX,SOSEX,BSE,TDA,G0W,GW0,singlet_mani
logical,intent(in) :: triplet_manifold logical,intent(in) :: triplet_manifold
integer,intent(in) :: nBas,nC,nO,nV,nR,nS integer,intent(in) :: nBas,nC,nO,nV,nR,nS
double precision,intent(in) :: ENuc double precision,intent(in) :: ENuc
double precision,intent(in) :: ERHF
double precision,intent(in) :: eHF(nBas) double precision,intent(in) :: eHF(nBas)
double precision,intent(in) :: cHF(nBas,nBas) double precision,intent(in) :: cHF(nBas,nBas)
double precision,intent(in) :: PHF(nBas,nBas) double precision,intent(in) :: PHF(nBas,nBas)
@ -38,7 +39,8 @@ subroutine qsGW(maxSCF,thresh,max_diis,COHSEX,SOSEX,BSE,TDA,G0W,GW0,singlet_mani
integer :: nBasSq integer :: nBasSq
integer :: ispin integer :: ispin
integer :: n_diis integer :: n_diis
double precision :: EcRPA double precision :: EcRPA(nspin)
double precision :: EcBSE(nspin)
double precision :: EcGM double precision :: EcGM
double precision :: Conv double precision :: Conv
double precision :: rcond double precision :: rcond
@ -128,7 +130,7 @@ subroutine qsGW(maxSCF,thresh,max_diis,COHSEX,SOSEX,BSE,TDA,G0W,GW0,singlet_mani
if(.not. GW0 .or. nSCF == 0) then if(.not. GW0 .or. nSCF == 0) then
call linear_response(ispin,dRPA,TDA,.false.,nBas,nC,nO,nV,nR,nS,e,ERI_MO_basis, & call linear_response(ispin,dRPA,TDA,.false.,nBas,nC,nO,nV,nR,nS,e,ERI_MO_basis, &
rho(:,:,:,ispin),EcRPA,Omega(:,ispin),XpY(:,:,ispin)) rho(:,:,:,ispin),EcRPA(ispin),Omega(:,ispin),XpY(:,:,ispin))
endif endif
@ -190,7 +192,7 @@ subroutine qsGW(maxSCF,thresh,max_diis,COHSEX,SOSEX,BSE,TDA,G0W,GW0,singlet_mani
! Print results ! Print results
call print_excitation('RPA ',ispin,nS,Omega(:,ispin)) call print_excitation('RPA ',ispin,nS,Omega(:,ispin))
call print_qsGW(nBas,nO,nSCF,Conv,thresh,eHF,e,c,ENuc,P,T,V,Hc,J,K,F,SigCp,Z,EcRPA,EcGM) call print_qsGW(nBas,nO,nSCF,Conv,thresh,eHF,e,c,ENuc,P,T,V,Hc,J,K,F,SigCp,Z,EcRPA(ispin),EcGM)
! Increment ! Increment
@ -235,8 +237,10 @@ subroutine qsGW(maxSCF,thresh,max_diis,COHSEX,SOSEX,BSE,TDA,G0W,GW0,singlet_mani
if(singlet_manifold) then if(singlet_manifold) then
ispin = 1 ispin = 1
EcBSE(ispin) = 0d0
call linear_response(ispin,dRPA,TDA,BSE,nBas,nC,nO,nV,nR,nS,e,ERI_MO_basis, & call linear_response(ispin,dRPA,TDA,BSE,nBas,nC,nO,nV,nR,nS,e,ERI_MO_basis, &
rho(:,:,:,ispin),EcRPA,Omega(:,ispin),XpY(:,:,ispin)) rho(:,:,:,ispin),EcRPA(ispin),Omega(:,ispin),XpY(:,:,ispin))
call print_excitation('BSE ',ispin,nS,Omega(:,ispin)) call print_excitation('BSE ',ispin,nS,Omega(:,ispin))
endif endif
@ -245,16 +249,27 @@ subroutine qsGW(maxSCF,thresh,max_diis,COHSEX,SOSEX,BSE,TDA,G0W,GW0,singlet_mani
if(triplet_manifold) then if(triplet_manifold) then
ispin = 2 ispin = 2
EcBSE(ispin) = 0d0
call linear_response(ispin,dRPA,TDA,.false.,nBas,nC,nO,nV,nR,nS,e,ERI_MO_basis, & call linear_response(ispin,dRPA,TDA,.false.,nBas,nC,nO,nV,nR,nS,e,ERI_MO_basis, &
rho(:,:,:,ispin),EcRPA,Omega(:,ispin),XpY(:,:,ispin)) rho(:,:,:,ispin),EcBSE(ispin),Omega(:,ispin),XpY(:,:,ispin))
call excitation_density(nBas,nC,nO,nR,nS,ERI_MO_basis,XpY(:,:,ispin),rho(:,:,:,ispin)) call excitation_density(nBas,nC,nO,nR,nS,ERI_MO_basis,XpY(:,:,ispin),rho(:,:,:,ispin))
call linear_response(ispin,dRPA,TDA,BSE,nBas,nC,nO,nV,nR,nS,e,ERI_MO_basis, & call linear_response(ispin,dRPA,TDA,BSE,nBas,nC,nO,nV,nR,nS,e,ERI_MO_basis, &
rho(:,:,:,ispin),EcRPA,Omega(:,ispin),XpY(:,:,ispin)) rho(:,:,:,ispin),EcBSE(ispin),Omega(:,ispin),XpY(:,:,ispin))
call print_excitation('BSE ',ispin,nS,Omega(:,ispin)) call print_excitation('BSE ',ispin,nS,Omega(:,ispin))
endif endif
write(*,*)
write(*,*)'-------------------------------------------------------------------------------'
write(*,'(2X,A40,F15.6)') 'BSE@qsGW correlation energy (singlet) =',EcBSE(1)
write(*,'(2X,A40,F15.6)') 'BSE@qsGW correlation energy (triplet) =',EcBSE(2)
write(*,'(2X,A40,F15.6)') 'BSE@qsGW correlation energy =',EcBSE(1) + EcBSE(2)
write(*,'(2X,A40,F15.6)') 'BSE@qsGW total energy =',ENuc + ERHF + EcBSE(1) + EcBSE(2)
write(*,*)'-------------------------------------------------------------------------------'
write(*,*)
endif endif
end subroutine qsGW end subroutine qsGW

View File

@ -9,7 +9,7 @@ AR = ar
ifeq ($(DEBUG),1) ifeq ($(DEBUG),1)
FFLAGS = -Wall -g -msse4.2 -fcheck=all -Waliasing -Wampersand -Wconversion -Wsurprising -Wintrinsics-std -Wno-tabs -Wintrinsic-shadow -Wline-truncation -Wreal-q-constant FFLAGS = -Wall -g -msse4.2 -fcheck=all -Waliasing -Wampersand -Wconversion -Wsurprising -Wintrinsics-std -Wno-tabs -Wintrinsic-shadow -Wline-truncation -Wreal-q-constant
else else
FFLAGS = -Wall -Wno-unused -Wno-unused-dummy-argument -O2 FFLAGS = -Wall -Wno-unused -Wno-unused-dummy-argument -O3
endif endif
LIBS = ../../lib/*.a LIBS = ../../lib/*.a

View File

@ -15,7 +15,7 @@ subroutine read_integrals(nEl,nBas,S,T,V,Hc,G)
integer :: nEl(nspin) integer :: nEl(nspin)
integer :: mu,nu,la,si integer :: mu,nu,la,si
double precision :: Ov,Kin,Nuc,ERI double precision :: Ov,Kin,Nuc,ERI
double precision :: rs,R double precision :: lambda
! Output variables ! Output variables
@ -25,14 +25,9 @@ subroutine read_integrals(nEl,nBas,S,T,V,Hc,G)
debug = .false. debug = .false.
open(unit=1,file='input/sph') lambda = 1d0
read(1,*)
read(1,*) rs
R = sqrt(dble(sum(nEl(:))))/2d0*rs print*, 'Scaling integrals by ',lambda
! R = 1d0
print*, 'Scaling integrals by ',R
open(unit=8 ,file='int/Ov.dat') open(unit=8 ,file='int/Ov.dat')
open(unit=9 ,file='int/Kin.dat') open(unit=9 ,file='int/Kin.dat')
@ -53,7 +48,6 @@ subroutine read_integrals(nEl,nBas,S,T,V,Hc,G)
T = 0d0 T = 0d0
do do
read(9,*,end=9) mu,nu,Kin read(9,*,end=9) mu,nu,Kin
T(mu,nu) = Kin/R**2
enddo enddo
9 close(unit=9) 9 close(unit=9)
@ -76,7 +70,7 @@ subroutine read_integrals(nEl,nBas,S,T,V,Hc,G)
do do
read(11,*,end=11) mu,nu,la,si,ERI read(11,*,end=11) mu,nu,la,si,ERI
ERI = ERI/R ERI = lambda*ERI
! <12|34> ! <12|34>
G(mu,nu,la,si) = ERI G(mu,nu,la,si) = ERI
! <32|14> ! <32|14>