mirror of
https://github.com/pfloos/quack
synced 2025-01-03 10:05:49 +01:00
merge eDFT in QuAcK
This commit is contained in:
parent
cb2f4bc24b
commit
bad6a5a51f
@ -36,5 +36,3 @@
|
|||||||
0.191734 -0.0364788 -0.017035
|
0.191734 -0.0364788 -0.017035
|
||||||
# choice of UCC exchange coefficient : 1 for Cx1, 2 for Cx2, 3 for Cx1*Cx2
|
# choice of UCC exchange coefficient : 1 for Cx1, 2 for Cx2, 3 for Cx1*Cx2
|
||||||
2
|
2
|
||||||
# GOK-DFT: maxSCF thresh DIIS n_diis guess_type ortho_type
|
|
||||||
1000 0.00001 T 5 1 1
|
|
||||||
|
@ -314,7 +314,8 @@ program QuAcK
|
|||||||
if(doKS) then
|
if(doKS) then
|
||||||
|
|
||||||
call cpu_time(start_KS)
|
call cpu_time(start_KS)
|
||||||
call eDFT(nNuc,ZNuc,rNuc,nBas,nEl,nC,nO,nV,nR,nShell,TotAngMomShell,CenterShell,KShell,DShell,ExpShell, &
|
call eDFT(maxSCF_HF,thresh_HF,n_diis_HF,guess_type,nNuc,ZNuc,rNuc,ENuc,nBas,nEl,nC, &
|
||||||
|
nO,nV,nR,nShell,TotAngMomShell,CenterShell,KShell,DShell,ExpShell, &
|
||||||
max_ang_mom,min_exponent,max_exponent,S,T,V,Hc,X,ERI_AO,dipole_int)
|
max_ang_mom,min_exponent,max_exponent,S,T,V,Hc,X,ERI_AO,dipole_int)
|
||||||
|
|
||||||
call cpu_time(end_KS)
|
call cpu_time(end_KS)
|
||||||
|
@ -1,15 +1,21 @@
|
|||||||
subroutine eDFT(nNuc,ZNuc,rNuc,nBas,nEl,nC,nO,nV,nR,nShell,TotAngMomShell,CenterShell,KShell,DShell,ExpShell, &
|
subroutine eDFT(maxSCF,thresh,max_diis,guess_type,nNuc,ZNuc,rNuc,ENuc,nBas,nEl,nC,nO,nV,nR, &
|
||||||
max_ang_mom,min_exponent,max_exponent,S,T,V,Hc,X,ERI_AO,dipole_int)
|
nShell,TotAngMomShell,CenterShell,KShell,DShell,ExpShell, &
|
||||||
|
max_ang_mom,min_exponent,max_exponent,S,T,V,Hc,X,ERI,dipole_int)
|
||||||
|
|
||||||
! exchange-correlation density-functional theory calculations
|
! exchange-correlation density-functional theory calculations
|
||||||
|
|
||||||
! use xc_f90_lib_m
|
use xc_f90_lib_m
|
||||||
|
|
||||||
implicit none
|
implicit none
|
||||||
include 'parameters.h'
|
include 'parameters.h'
|
||||||
|
|
||||||
! Input variables
|
! Input variables
|
||||||
|
|
||||||
|
integer,intent(in) :: maxSCF
|
||||||
|
integer,intent(in) :: max_diis
|
||||||
|
integer,intent(in) :: guess_type
|
||||||
|
double precision,intent(in) :: thresh
|
||||||
|
|
||||||
integer,intent(in) :: nNuc
|
integer,intent(in) :: nNuc
|
||||||
integer,intent(in) :: nBas
|
integer,intent(in) :: nBas
|
||||||
integer,intent(in) :: nEl(nspin)
|
integer,intent(in) :: nEl(nspin)
|
||||||
@ -17,12 +23,12 @@ subroutine eDFT(nNuc,ZNuc,rNuc,nBas,nEl,nC,nO,nV,nR,nShell,TotAngMomShell,Center
|
|||||||
integer,intent(in) :: nO(nspin)
|
integer,intent(in) :: nO(nspin)
|
||||||
integer,intent(in) :: nV(nspin)
|
integer,intent(in) :: nV(nspin)
|
||||||
integer,intent(in) :: nR(nspin)
|
integer,intent(in) :: nR(nspin)
|
||||||
double precision,intent(in) :: ENuc,Ew
|
double precision,intent(in) :: ENuc
|
||||||
|
|
||||||
double precision,intent(in) :: ZNuc(nNuc)
|
double precision,intent(in) :: ZNuc(nNuc)
|
||||||
double precision,intent(in) :: rNuc(nNuc,ncart)
|
double precision,intent(in) :: rNuc(nNuc,ncart)
|
||||||
|
|
||||||
integer,intent(in) :: nBas,nShell
|
integer,intent(in) :: nShell
|
||||||
double precision,intent(in) :: CenterShell(maxShell,ncart)
|
double precision,intent(in) :: CenterShell(maxShell,ncart)
|
||||||
integer,intent(in) :: TotAngMomShell(maxShell)
|
integer,intent(in) :: TotAngMomShell(maxShell)
|
||||||
integer,intent(in) :: KShell(maxShell)
|
integer,intent(in) :: KShell(maxShell)
|
||||||
@ -43,8 +49,7 @@ subroutine eDFT(nNuc,ZNuc,rNuc,nBas,nEl,nC,nO,nV,nR,nShell,TotAngMomShell,Center
|
|||||||
|
|
||||||
! Local variables
|
! Local variables
|
||||||
|
|
||||||
double precision,allocatable :: min_exponent(:,:)
|
double precision :: Ew
|
||||||
double precision,allocatable :: max_exponent(:)
|
|
||||||
double precision,allocatable :: c(:,:)
|
double precision,allocatable :: c(:,:)
|
||||||
|
|
||||||
character(len=8) :: method
|
character(len=8) :: method
|
||||||
@ -72,12 +77,6 @@ subroutine eDFT(nNuc,ZNuc,rNuc,nBas,nEl,nC,nO,nV,nR,nShell,TotAngMomShell,Center
|
|||||||
logical :: doNcentered
|
logical :: doNcentered
|
||||||
double precision,allocatable :: wEns(:)
|
double precision,allocatable :: wEns(:)
|
||||||
|
|
||||||
integer :: maxSCF,max_diis
|
|
||||||
double precision :: thresh
|
|
||||||
logical :: DIIS
|
|
||||||
integer :: guess_type
|
|
||||||
integer :: ortho_type
|
|
||||||
|
|
||||||
double precision,allocatable :: occnum(:,:,:)
|
double precision,allocatable :: occnum(:,:,:)
|
||||||
integer :: Cx_choice
|
integer :: Cx_choice
|
||||||
|
|
||||||
@ -102,11 +101,11 @@ subroutine eDFT(nNuc,ZNuc,rNuc,nBas,nEl,nC,nO,nV,nR,nShell,TotAngMomShell,Center
|
|||||||
! DFT options
|
! DFT options
|
||||||
!------------------------------------------------------------------------
|
!------------------------------------------------------------------------
|
||||||
|
|
||||||
! Allocate ensemble weights
|
! Allocate ensemble weights and MO coefficients
|
||||||
|
|
||||||
allocate(wEns(maxEns),occnum(nBas,nspin,maxEns))
|
allocate(c(nBas,nspin),wEns(maxEns),occnum(nBas,nspin,maxEns))
|
||||||
call read_options_dft(nBas,method,x_rung,x_DFA,c_rung,c_DFA,SGn,nEns,wEns,aCC_w1,aCC_w2, &
|
call read_options_dft(nBas,method,x_rung,x_DFA,c_rung,c_DFA,SGn,nEns,wEns,aCC_w1,aCC_w2, &
|
||||||
maxSCF,thresh,DIIS,max_diis,guess_type,ortho_type,doNcentered,occnum,Cx_choice)
|
doNcentered,occnum,Cx_choice)
|
||||||
|
|
||||||
!------------------------------------------------------------------------
|
!------------------------------------------------------------------------
|
||||||
! Construct quadrature grid
|
! Construct quadrature grid
|
||||||
@ -221,4 +220,4 @@ subroutine eDFT(nNuc,ZNuc,rNuc,nBas,nEl,nC,nO,nV,nR,nShell,TotAngMomShell,Center
|
|||||||
!------------------------------------------------------------------------
|
!------------------------------------------------------------------------
|
||||||
! End of eDFT
|
! End of eDFT
|
||||||
!------------------------------------------------------------------------
|
!------------------------------------------------------------------------
|
||||||
end program eDFT
|
end subroutine eDFT
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
subroutine read_options_dft(nBas,method,x_rung,x_DFA,c_rung,c_DFA,SGn,nEns,wEns,aCC_w1,aCC_w2, &
|
subroutine read_options_dft(nBas,method,x_rung,x_DFA,c_rung,c_DFA,SGn,nEns,wEns,aCC_w1,aCC_w2, &
|
||||||
maxSCF,thresh,DIIS,max_diis,guess_type,ortho_type,doNcentered,occnum,Cx_choice)
|
doNcentered,occnum,Cx_choice)
|
||||||
|
|
||||||
! Read DFT options
|
! Read DFT options
|
||||||
|
|
||||||
@ -31,12 +31,6 @@ subroutine read_options_dft(nBas,method,x_rung,x_DFA,c_rung,c_DFA,SGn,nEns,wEns,
|
|||||||
double precision,intent(out) :: aCC_w2(3)
|
double precision,intent(out) :: aCC_w2(3)
|
||||||
double precision,intent(out) :: occnum(nBas,nspin,maxEns)
|
double precision,intent(out) :: occnum(nBas,nspin,maxEns)
|
||||||
|
|
||||||
integer,intent(out) :: maxSCF
|
|
||||||
double precision,intent(out) :: thresh
|
|
||||||
logical,intent(out) :: DIIS
|
|
||||||
integer,intent(out) :: max_diis
|
|
||||||
integer,intent(out) :: guess_type
|
|
||||||
integer,intent(out) :: ortho_type
|
|
||||||
integer,intent(out) :: Cx_choice
|
integer,intent(out) :: Cx_choice
|
||||||
|
|
||||||
! Open file with method specification
|
! Open file with method specification
|
||||||
@ -181,22 +175,6 @@ subroutine read_options_dft(nBas,method,x_rung,x_DFA,c_rung,c_DFA,SGn,nEns,wEns,
|
|||||||
call matout(3,1,aCC_w2)
|
call matout(3,1,aCC_w2)
|
||||||
write(*,*)
|
write(*,*)
|
||||||
|
|
||||||
! Read KS options
|
|
||||||
|
|
||||||
maxSCF = 64
|
|
||||||
thresh = 1d-6
|
|
||||||
DIIS = .false.
|
|
||||||
max_diis = 5
|
|
||||||
guess_type = 1
|
|
||||||
ortho_type = 1
|
|
||||||
|
|
||||||
read(1,*)
|
|
||||||
read(1,*) maxSCF,thresh,answer,max_diis,guess_type,ortho_type
|
|
||||||
|
|
||||||
if(answer == 'T') DIIS = .true.
|
|
||||||
|
|
||||||
if(.not.DIIS) max_diis = 1
|
|
||||||
|
|
||||||
! Close file with options
|
! Close file with options
|
||||||
|
|
||||||
close(unit=1)
|
close(unit=1)
|
||||||
|
@ -166,7 +166,7 @@ build_main = "\n".join([
|
|||||||
build_GoDuck,
|
build_GoDuck,
|
||||||
])
|
])
|
||||||
|
|
||||||
exe_dirs = [ "QuAcK", "eDFT" ]
|
exe_dirs = [ "QuAcK"]
|
||||||
lib_dirs = list(filter(lambda x: os.path.isdir(x) and \
|
lib_dirs = list(filter(lambda x: os.path.isdir(x) and \
|
||||||
x not in exe_dirs, os.listdir(".")))
|
x not in exe_dirs, os.listdir(".")))
|
||||||
|
|
||||||
@ -239,7 +239,7 @@ rule build_lib
|
|||||||
sources = filter(lambda x: x.endswith(".f") or x.endswith(".f90"), sources)
|
sources = filter(lambda x: x.endswith(".f") or x.endswith(".f90"), sources)
|
||||||
sources = " ".join(sources)
|
sources = " ".join(sources)
|
||||||
f.write("build $LDIR/{0}.a: build_lib {1}\n dir = $SDIR/{0}\n".format(libname, sources))
|
f.write("build $LDIR/{0}.a: build_lib {1}\n dir = $SDIR/{0}\n".format(libname, sources))
|
||||||
f.write("build all: phony $QUACK_ROOT/GoDuck $BDIR/QuAcK $BDIR/eDFT\n")
|
f.write("build all: phony $QUACK_ROOT/GoDuck $BDIR/QuAcK\n")
|
||||||
f.write("default all\n")
|
f.write("default all\n")
|
||||||
|
|
||||||
def create_makefile(directory):
|
def create_makefile(directory):
|
||||||
|
Loading…
Reference in New Issue
Block a user