mirror of
https://github.com/pfloos/quack
synced 2024-12-22 12:23:42 +01:00
unrestricted f
This commit is contained in:
parent
0e9edb30d2
commit
28d85ed204
44
input/basis
44
input/basis
@ -1,18 +1,30 @@
|
||||
1 3
|
||||
S 3
|
||||
1 13.0100000 0.0196850
|
||||
2 1.9620000 0.1379770
|
||||
3 0.4446000 0.4781480
|
||||
1 6
|
||||
S 8
|
||||
1 1469.0000000 0.0007660
|
||||
2 220.5000000 0.0058920
|
||||
3 50.2600000 0.0296710
|
||||
4 14.2400000 0.1091800
|
||||
5 4.5810000 0.2827890
|
||||
6 1.5800000 0.4531230
|
||||
7 0.5640000 0.2747740
|
||||
8 0.0734500 0.0097510
|
||||
S 8
|
||||
1 1469.0000000 -0.0001200
|
||||
2 220.5000000 -0.0009230
|
||||
3 50.2600000 -0.0046890
|
||||
4 14.2400000 -0.0176820
|
||||
5 4.5810000 -0.0489020
|
||||
6 1.5800000 -0.0960090
|
||||
7 0.5640000 -0.1363800
|
||||
8 0.0734500 0.5751020
|
||||
S 1
|
||||
1 0.1220000 1.0000000
|
||||
1 0.0280500 1.0000000
|
||||
P 3
|
||||
1 1.5340000 0.0227840
|
||||
2 0.2749000 0.1391070
|
||||
3 0.0736200 0.5003750
|
||||
P 1
|
||||
1 0.7270000 1.0000000
|
||||
2 3
|
||||
S 3
|
||||
1 13.0100000 0.0196850
|
||||
2 1.9620000 0.1379770
|
||||
3 0.4446000 0.4781480
|
||||
S 1
|
||||
1 0.1220000 1.0000000
|
||||
P 1
|
||||
1 0.7270000 1.0000000
|
||||
1 0.0240300 1.0000000
|
||||
D 1
|
||||
1 0.1239000 1.0000000
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
# RHF UHF MOM
|
||||
T F F
|
||||
F T F
|
||||
# MP2* MP3 MP2-F12
|
||||
F F F
|
||||
# CCD CCSD CCSD(T)
|
||||
@ -9,11 +9,11 @@
|
||||
# CIS* CID CISD
|
||||
F F F
|
||||
# RPA* RPAx* ppRPA
|
||||
F F F
|
||||
F T F
|
||||
# G0F2 evGF2 G0F3 evGF3
|
||||
F F F F
|
||||
# G0W0* evGW* qsGW
|
||||
T F F
|
||||
F F F
|
||||
# G0T0 evGT qsGT
|
||||
F F F
|
||||
# MCMP2
|
||||
|
@ -1,5 +1,4 @@
|
||||
# nAt nEla nElb nCore nRyd
|
||||
2 1 1 0 0
|
||||
1 2 1 0 0
|
||||
# Znuc x y z
|
||||
H 0. 0. -0.7
|
||||
H 0. 0. 0.7
|
||||
Li 0.0 0.0 0.0
|
||||
|
@ -1,4 +1,3 @@
|
||||
2
|
||||
1
|
||||
|
||||
H 0.0000000000 0.0000000000 -0.3704240743
|
||||
H 0.0000000000 0.0000000000 0.3704240743
|
||||
Li 0.0000000000 0.0000000000 0.0000000000
|
||||
|
@ -1,11 +1,11 @@
|
||||
# HF: maxSCF thresh DIIS n_diis guess_type ortho_type
|
||||
64 0.00001 T 5 1 1
|
||||
64 0.0000001 T 5 1 1
|
||||
# MP:
|
||||
|
||||
# CC: maxSCF thresh DIIS n_diis
|
||||
64 0.0000001 T 5
|
||||
# spin: singlet triplet spin_conserved spin_flip TDA
|
||||
T T T T F
|
||||
T T T F F
|
||||
# GF: maxSCF thresh DIIS n_diis lin eta renorm
|
||||
256 0.00001 T 5 T 0.0 3
|
||||
# GW/GT: maxSCF thresh DIIS n_diis lin eta COHSEX SOSEX TDA_W G0W GW0
|
||||
|
@ -78,7 +78,7 @@ subroutine URPAx(TDA,doACFDT,exchange_kernel,spin_conserved,spin_flip,eta,nBas,n
|
||||
call unrestricted_linear_response(ispin,.false.,TDA,.false.,eta,nBas,nC,nO,nV,nR,nS_aa,nS_bb,nS_sc,nS_sc,1d0,e, &
|
||||
ERI_aaaa,ERI_aabb,ERI_bbbb,ERI_abab,Omega_sc,rho_sc,EcRPAx(ispin),Omega_sc,XpY_sc,XmY_sc)
|
||||
call print_excitation('URPAx ',5,nS_sc,Omega_sc)
|
||||
! call print_transition_vectors(.true.,nBas,nC,nO,nV,nR,nS,dipole_int,Omega(:,ispin),XpY(:,:,ispin),XmY(:,:,ispin))
|
||||
call print_unrestricted_transition_vectors(.true.,nBas,nC,nO,nV,nR,nS,nS_sc,dipole_int,Omega_sc,XpY_sc,XmY_sc)
|
||||
|
||||
deallocate(Omega_sc,XpY_sc,XmY_sc)
|
||||
|
||||
|
@ -84,6 +84,7 @@ subroutine print_UHF(nBas,nO,e,c,ENuc,ET,EV,EJ,Ex,EUHF)
|
||||
write(*,'(A50)') 'UHF spin-up orbital coefficients '
|
||||
write(*,'(A50)') '-----------------------------------------'
|
||||
call matout(nBas,nBas,c(:,:,1))
|
||||
write(*,*)
|
||||
write(*,'(A50)') '-----------------------------------------'
|
||||
write(*,'(A50)') 'UHF spin-down orbital coefficients '
|
||||
write(*,'(A50)') '-----------------------------------------'
|
||||
|
132
src/QuAcK/print_unrestricted_transition_vectors.f90
Normal file
132
src/QuAcK/print_unrestricted_transition_vectors.f90
Normal file
@ -0,0 +1,132 @@
|
||||
subroutine print_unrestricted_transition_vectors(spin_allowed,nBas,nC,nO,nV,nR,nS,nSt,dipole_int,Omega,XpY,XmY)
|
||||
|
||||
! Print transition vectors for linear response calculation
|
||||
|
||||
implicit none
|
||||
include 'parameters.h'
|
||||
|
||||
! Input variables
|
||||
|
||||
logical,intent(in) :: spin_allowed
|
||||
integer,intent(in) :: nBas
|
||||
integer,intent(in) :: nC(nspin)
|
||||
integer,intent(in) :: nO(nspin)
|
||||
integer,intent(in) :: nV(nspin)
|
||||
integer,intent(in) :: nR(nspin)
|
||||
integer,intent(in) :: nS(nspin)
|
||||
integer,intent(in) :: nSt
|
||||
double precision :: dipole_int(nBas,nBas,ncart,nspin)
|
||||
double precision,intent(in) :: Omega(nSt)
|
||||
double precision,intent(in) :: XpY(nSt,nSt)
|
||||
double precision,intent(in) :: XmY(nSt,nSt)
|
||||
|
||||
! Local variables
|
||||
|
||||
integer :: ia,jb,i,j,a,b
|
||||
integer :: ixyz
|
||||
integer :: ispin
|
||||
integer,parameter :: maxS = 10
|
||||
double precision :: norm
|
||||
double precision,parameter :: thres_vec = 0.1d0
|
||||
double precision,allocatable :: X(:)
|
||||
double precision,allocatable :: Y(:)
|
||||
double precision,allocatable :: f(:,:)
|
||||
double precision,allocatable :: os(:)
|
||||
|
||||
! Memory allocation
|
||||
|
||||
allocate(X(nSt),Y(nSt),f(nSt,ncart),os(nSt))
|
||||
|
||||
! Compute dipole moments and oscillator strengths
|
||||
|
||||
|
||||
f(:,:) = 0d0
|
||||
if(spin_allowed) then
|
||||
|
||||
do ispin=1,nspin
|
||||
do ia=1,nSt
|
||||
do ixyz=1,ncart
|
||||
jb = 0
|
||||
do j=nC(ispin)+1,nO(ispin)
|
||||
do b=nO(ispin)+1,nBas-nR(ispin)
|
||||
jb = jb + 1
|
||||
f(ia,ixyz) = f(ia,ixyz) + dipole_int(j,b,ixyz,ispin)*XpY(ia,jb)
|
||||
end do
|
||||
end do
|
||||
end do
|
||||
end do
|
||||
end do
|
||||
|
||||
write(*,*) '----------------'
|
||||
write(*,*) ' Dipole moments '
|
||||
write(*,*) '----------------'
|
||||
call matout(nSt,ncart,f(:,:))
|
||||
write(*,*)
|
||||
|
||||
do ia=1,nSt
|
||||
os(ia) = 2d0/3d0*Omega(ia)*sum(f(ia,:)**2)
|
||||
end do
|
||||
|
||||
write(*,*) '----------------------'
|
||||
write(*,*) ' Oscillator strengths '
|
||||
write(*,*) '----------------------'
|
||||
call matout(nSt,1,os(:))
|
||||
write(*,*)
|
||||
|
||||
end if
|
||||
|
||||
! Print details about excitations
|
||||
|
||||
do ia=1,min(nSt,maxS)
|
||||
|
||||
X(:) = 0.5d0*(XpY(ia,:) + XmY(ia,:))
|
||||
Y(:) = 0.5d0*(XpY(ia,:) - XmY(ia,:))
|
||||
|
||||
print*,'---------------------------------------------'
|
||||
write(*,'(A15,I3,A2,F10.6,A3,A6,F6.4,A1)') ' Excitation n. ',ia,': ',Omega(ia)*HaToeV,' eV',' (f = ',os(ia),')'
|
||||
print*,'---------------------------------------------'
|
||||
|
||||
! Spin-up transitions
|
||||
|
||||
jb = 0
|
||||
do j=nC(1)+1,nO(1)
|
||||
do b=nO(1)+1,nBas-nR(1)
|
||||
jb = jb + 1
|
||||
if(abs(X(jb)) > thres_vec) write(*,'(I3,A4,I3,A3,F10.6)') j,' -> ',b,' = ',X(jb)/sqrt(2d0)
|
||||
end do
|
||||
end do
|
||||
|
||||
jb = 0
|
||||
do j=nC(1)+1,nO(1)
|
||||
do b=nO(1)+1,nBas-nR(1)
|
||||
jb = jb + 1
|
||||
if(abs(Y(jb)) > thres_vec) write(*,'(I3,A4,I3,A3,F10.6)') j,' <- ',b,' = ',Y(jb)/sqrt(2d0)
|
||||
end do
|
||||
end do
|
||||
write(*,*)
|
||||
|
||||
! Spin-down transitions
|
||||
|
||||
jb = 0
|
||||
do j=nC(2)+1,nO(2)
|
||||
do b=nO(2)+1,nBas-nR(2)
|
||||
jb = jb + 1
|
||||
if(abs(X(jb)) > thres_vec) write(*,'(I3,A4,I3,A3,F10.6)') j,' -> ',b,' = ',X(jb)/sqrt(2d0)
|
||||
end do
|
||||
end do
|
||||
|
||||
jb = 0
|
||||
do j=nC(2)+1,nO(2)
|
||||
do b=nO(2)+1,nBas-nR(2)
|
||||
jb = jb + 1
|
||||
if(abs(Y(jb)) > thres_vec) write(*,'(I3,A4,I3,A3,F10.6)') j,' <- ',b,' = ',Y(jb)/sqrt(2d0)
|
||||
end do
|
||||
end do
|
||||
write(*,*)
|
||||
|
||||
end do
|
||||
|
||||
write(*,'(A30,F10.6)') 'Thomas-Reiche-Kuhn sum rule = ',sum(os(:))
|
||||
write(*,*)
|
||||
|
||||
end subroutine print_unrestricted_transition_vectors
|
Loading…
Reference in New Issue
Block a user