mirror of
https://github.com/QuantumPackage/qp2.git
synced 2025-04-26 02:04:45 +02:00
Cleaning ccsd_spin
This commit is contained in:
parent
2586b8dc47
commit
3d46cde2e4
@ -26,7 +26,6 @@ subroutine run_ccsd_space_orb
|
|||||||
|
|
||||||
double precision, allocatable :: all_err(:,:), all_t(:,:)
|
double precision, allocatable :: all_err(:,:), all_t(:,:)
|
||||||
integer, allocatable :: list_occ(:), list_vir(:)
|
integer, allocatable :: list_occ(:), list_vir(:)
|
||||||
integer(bit_kind) :: det(N_int,2)
|
|
||||||
integer :: nO, nV, nOa, nVa
|
integer :: nO, nV, nOa, nVa
|
||||||
|
|
||||||
call set_multiple_levels_omp(.False.)
|
call set_multiple_levels_omp(.False.)
|
||||||
@ -38,9 +37,8 @@ subroutine run_ccsd_space_orb
|
|||||||
PROVIDE all_mo_integrals
|
PROVIDE all_mo_integrals
|
||||||
endif
|
endif
|
||||||
|
|
||||||
det = psi_det(:,:,cc_ref)
|
|
||||||
print*,'Reference determinant:'
|
print*,'Reference determinant:'
|
||||||
call print_det(det,N_int)
|
call print_det(psi_det(1,1,cc_ref),N_int)
|
||||||
|
|
||||||
nOa = cc_nOa
|
nOa = cc_nOa
|
||||||
nVa = cc_nVa
|
nVa = cc_nVa
|
||||||
@ -57,10 +55,6 @@ subroutine run_ccsd_space_orb
|
|||||||
allocate(list_occ(nO),list_vir(nV))
|
allocate(list_occ(nO),list_vir(nV))
|
||||||
list_occ = cc_list_occ
|
list_occ = cc_list_occ
|
||||||
list_vir = cc_list_vir
|
list_vir = cc_list_vir
|
||||||
! Debug
|
|
||||||
!call extract_list_orb_space(det,nO,nV,list_occ,list_vir)
|
|
||||||
!print*,'occ',list_occ
|
|
||||||
!print*,'vir',list_vir
|
|
||||||
|
|
||||||
! GPU arrays
|
! GPU arrays
|
||||||
call gpu_allocate(d_cc_space_f_oo, nO, nO)
|
call gpu_allocate(d_cc_space_f_oo, nO, nO)
|
||||||
@ -186,7 +180,7 @@ subroutine run_ccsd_space_orb
|
|||||||
|
|
||||||
call update_tau_space(nO,nV,h_t1,t1,t2,tau)
|
call update_tau_space(nO,nV,h_t1,t1,t2,tau)
|
||||||
call update_tau_x_space(nO,nV,tau,tau_x)
|
call update_tau_x_space(nO,nV,tau,tau_x)
|
||||||
call det_energy(det,uncorr_energy)
|
call det_energy(psi_det(1,1,cc_ref),uncorr_energy)
|
||||||
print*,'Det energy', uncorr_energy
|
print*,'Det energy', uncorr_energy
|
||||||
|
|
||||||
call ccsd_energy_space_x(nO,nV,d_cc_space_v_oovv,d_cc_space_f_vo,tau_x,t1,energy)
|
call ccsd_energy_space_x(nO,nV,d_cc_space_v_oovv,d_cc_space_f_vo,tau_x,t1,energy)
|
||||||
|
@ -14,65 +14,31 @@ subroutine run_ccsd_spin_orb
|
|||||||
double precision, allocatable :: cW_oooo(:,:,:,:), cW_ovvo(:,:,:,:) !, cW_vvvv(:,:,:,:)
|
double precision, allocatable :: cW_oooo(:,:,:,:), cW_ovvo(:,:,:,:) !, cW_vvvv(:,:,:,:)
|
||||||
|
|
||||||
double precision, allocatable :: f_o(:), f_v(:)
|
double precision, allocatable :: f_o(:), f_v(:)
|
||||||
double precision, allocatable :: v_oooo(:,:,:,:), v_vooo(:,:,:,:), v_ovoo(:,:,:,:)
|
! double precision, allocatable :: v_ovvv(:,:,:,:)
|
||||||
double precision, allocatable :: v_oovo(:,:,:,:), v_ooov(:,:,:,:), v_vvoo(:,:,:,:)
|
|
||||||
double precision, allocatable :: v_vovo(:,:,:,:), v_voov(:,:,:,:), v_ovvo(:,:,:,:)
|
|
||||||
double precision, allocatable :: v_ovov(:,:,:,:), v_oovv(:,:,:,:), v_vvvo(:,:,:,:)
|
|
||||||
double precision, allocatable :: v_vvov(:,:,:,:), v_vovv(:,:,:,:), v_ovvv(:,:,:,:)
|
|
||||||
double precision, allocatable :: v_vvvv(:,:,:,:)
|
|
||||||
|
|
||||||
double precision, allocatable :: all_err(:,:), all_t(:,:)
|
double precision, allocatable :: all_err(:,:), all_t(:,:)
|
||||||
|
|
||||||
logical :: not_converged
|
logical :: not_converged
|
||||||
integer :: nOa,nOb,nVa,nVb,nO_m,nV_m,nO_S(2),nV_S(2),n_spin(4)
|
integer :: n_spin(4)
|
||||||
integer :: nb_iter, i,j,a,b
|
integer :: nb_iter, i,j,a,b
|
||||||
double precision :: uncorr_energy, energy, max_r, max_r1, max_r2, cc, ta, tb,ti,tf,tbi,tfi
|
double precision :: uncorr_energy, energy, max_r, max_r1, max_r2, cc, ta, tb,ti,tf,tbi,tfi
|
||||||
integer(bit_kind) :: det(N_int,2)
|
|
||||||
|
|
||||||
det = psi_det(:,:,cc_ref)
|
if (do_mo_cholesky) then
|
||||||
|
PROVIDE cholesky_mo_transp
|
||||||
|
FREE cholesky_ao
|
||||||
|
else
|
||||||
|
PROVIDE all_mo_integrals
|
||||||
|
endif
|
||||||
|
|
||||||
print*,'Reference determinant:'
|
print*,'Reference determinant:'
|
||||||
call print_det(det,N_int)
|
call print_det(psi_det(1,1,cc_ref),N_int)
|
||||||
|
|
||||||
! Extract number of occ/vir alpha/beta spin orbitals
|
|
||||||
!call extract_n_spin(det,n_spin)
|
|
||||||
nOa = cc_nOa !n_spin(1)
|
|
||||||
nOb = cc_nOb !n_spin(2)
|
|
||||||
nVa = cc_nVa !n_spin(3)
|
|
||||||
nVb = cc_nVb !n_spin(4)
|
|
||||||
|
|
||||||
! Number of occ/vir spin orb per spin
|
|
||||||
nO_S = cc_nO_S !(/nOa,nOb/)
|
|
||||||
nV_S = cc_nV_S !(/nVa,nVb/)
|
|
||||||
! Debug
|
|
||||||
!print*,nO_S,nV_S
|
|
||||||
|
|
||||||
! Maximal number of occ/vir
|
|
||||||
nO_m = cc_nO_m !max(nOa, nOb)
|
|
||||||
nV_m = cc_nV_m !max(nVa, nVb)
|
|
||||||
! Debug
|
|
||||||
!print*,nO_m,nV_m
|
|
||||||
|
|
||||||
! Allocation
|
! Allocation
|
||||||
allocate(t1(cc_nOab,cc_nVab), t2(cc_nOab,cc_nOab,cc_nVab,cc_nVab), tau(cc_nOab,cc_nOab,cc_nVab,cc_nVab), tau_t(cc_nOab,cc_nOab,cc_nVab,cc_nVab))
|
allocate(t1(cc_nOab,cc_nVab), t2(cc_nOab,cc_nOab,cc_nVab,cc_nVab), tau(cc_nOab,cc_nOab,cc_nVab,cc_nVab), tau_t(cc_nOab,cc_nOab,cc_nVab,cc_nVab))
|
||||||
allocate(r1(cc_nOab,cc_nVab), r2(cc_nOab,cc_nOab,cc_nVab,cc_nVab))
|
allocate(r1(cc_nOab,cc_nVab), r2(cc_nOab,cc_nOab,cc_nVab,cc_nVab))
|
||||||
allocate(cF_oo(cc_nOab,cc_nOab), cF_ov(cc_nOab,cc_nVab), cF_vv(cc_nVab,cc_nVab))
|
allocate(cF_oo(cc_nOab,cc_nOab), cF_ov(cc_nOab,cc_nVab), cF_vv(cc_nVab,cc_nVab))
|
||||||
allocate(cW_oooo(cc_nOab,cc_nOab,cc_nOab,cc_nOab), cW_ovvo(cc_nOab,cc_nVab,cc_nVab,cc_nOab))!, cW_vvvv(cc_nVab,cc_nVab,cc_nVab,cc_nVab))
|
allocate(cW_oooo(cc_nOab,cc_nOab,cc_nOab,cc_nOab), cW_ovvo(cc_nOab,cc_nVab,cc_nVab,cc_nOab))!, cW_vvvv(cc_nVab,cc_nVab,cc_nVab,cc_nVab))
|
||||||
allocate(v_oooo(cc_nOab,cc_nOab,cc_nOab,cc_nOab))
|
|
||||||
!allocate(v_vooo(cc_nVab,cc_nOab,cc_nOab,cc_nOab))
|
|
||||||
allocate(v_ovoo(cc_nOab,cc_nVab,cc_nOab,cc_nOab))
|
|
||||||
allocate(v_oovo(cc_nOab,cc_nOab,cc_nVab,cc_nOab))
|
|
||||||
allocate(v_ooov(cc_nOab,cc_nOab,cc_nOab,cc_nVab))
|
|
||||||
allocate(v_vvoo(cc_nVab,cc_nVab,cc_nOab,cc_nOab))
|
|
||||||
!allocate(v_vovo(cc_nVab,cc_nOab,cc_nVab,cc_nOab))
|
|
||||||
!allocate(v_voov(cc_nVab,cc_nOab,cc_nOab,cc_nVab))
|
|
||||||
allocate(v_ovvo(cc_nOab,cc_nVab,cc_nVab,cc_nOab))
|
|
||||||
allocate(v_ovov(cc_nOab,cc_nVab,cc_nOab,cc_nVab))
|
|
||||||
allocate(v_oovv(cc_nOab,cc_nOab,cc_nVab,cc_nVab))
|
|
||||||
!allocate(v_vvvo(cc_nVab,cc_nVab,cc_nVab,cc_nOab))
|
|
||||||
!allocate(v_vvov(cc_nVab,cc_nVab,cc_nOab,cc_nVab))
|
|
||||||
!allocate(v_vovv(cc_nVab,cc_nOab,cc_nVab,cc_nVab))
|
|
||||||
!allocate(v_ovvv(cc_nOab,cc_nVab,cc_nVab,cc_nVab))
|
|
||||||
!allocate(v_vvvv(cc_nVab,cc_nVab,cc_nVab,cc_nVab))
|
|
||||||
allocate(f_o(cc_nOab), f_v(cc_nVab))
|
allocate(f_o(cc_nOab), f_v(cc_nVab))
|
||||||
|
|
||||||
! Allocation for the diis
|
! Allocation for the diis
|
||||||
@ -90,45 +56,20 @@ subroutine run_ccsd_spin_orb
|
|||||||
f_v(i) = cc_spin_f_vv(i,i)
|
f_v(i) = cc_spin_f_vv(i,i)
|
||||||
enddo
|
enddo
|
||||||
|
|
||||||
! Bi electronic integrals from list
|
|
||||||
call wall_time(ti)
|
|
||||||
! OOOO
|
|
||||||
call gen_v_spin(nO_m,nO_m,nO_m,nO_m, nO_S,nO_S,nO_S,nO_S, cc_list_occ_spin,cc_list_occ_spin,cc_list_occ_spin,cc_list_occ_spin, cc_nOab,cc_nOab,cc_nOab,cc_nOab, v_oooo)
|
|
||||||
|
|
||||||
! OOO V
|
|
||||||
!call gen_v_spin(nV_m,nO_m,nO_m,nO_m, nV_S,nO_S,nO_S,nO_S, cc_list_vir_spin,cc_list_occ_spin,cc_list_occ_spin,cc_list_occ_spin, cc_nVab,cc_nOab,cc_nOab,cc_nOab, v_vooo)
|
|
||||||
call gen_v_spin(nO_m,nV_m,nO_m,nO_m, nO_S,nV_S,nO_S,nO_S, cc_list_occ_spin,cc_list_vir_spin,cc_list_occ_spin,cc_list_occ_spin, cc_nOab,cc_nVab,cc_nOab,cc_nOab, v_ovoo)
|
|
||||||
call gen_v_spin(nO_m,nO_m,nV_m,nO_m, nO_S,nO_S,nV_S,nO_S, cc_list_occ_spin,cc_list_occ_spin,cc_list_vir_spin,cc_list_occ_spin, cc_nOab,cc_nOab,cc_nVab,cc_nOab, v_oovo)
|
|
||||||
call gen_v_spin(nO_m,nO_m,nO_m,nV_m, nO_S,nO_S,nO_S,nV_S, cc_list_occ_spin,cc_list_occ_spin,cc_list_occ_spin,cc_list_vir_spin, cc_nOab,cc_nOab,cc_nOab,cc_nVab, v_ooov)
|
|
||||||
|
|
||||||
! OO VV
|
|
||||||
call gen_v_spin(nV_m,nV_m,nO_m,nO_m, nV_S,nV_S,nO_S,nO_S, cc_list_vir_spin,cc_list_vir_spin,cc_list_occ_spin,cc_list_occ_spin, cc_nVab,cc_nVab,cc_nOab,cc_nOab, v_vvoo)
|
|
||||||
!call gen_v_spin(nV_m,nO_m,nV_m,nO_m, nV_S,nO_S,nV_S,nO_S, cc_list_vir_spin,cc_list_occ_spin,cc_list_vir_spin,cc_list_occ_spin, cc_nVab,cc_nOab,cc_nVab,cc_nOab, v_vovo)
|
|
||||||
!call gen_v_spin(nV_m,nO_m,nO_m,nV_m, nV_S,nO_S,nO_S,nV_S, cc_list_vir_spin,cc_list_occ_spin,cc_list_occ_spin,cc_list_vir_spin, cc_nVab,cc_nOab,cc_nOab,cc_nVab, v_voov)
|
|
||||||
call gen_v_spin(nO_m,nV_m,nV_m,nO_m, nO_S,nV_S,nV_S,nO_S, cc_list_occ_spin,cc_list_vir_spin,cc_list_vir_spin,cc_list_occ_spin, cc_nOab,cc_nVab,cc_nVab,cc_nOab, v_ovvo)
|
|
||||||
call gen_v_spin(nO_m,nV_m,nO_m,nV_m, nO_S,nV_S,nO_S,nV_S, cc_list_occ_spin,cc_list_vir_spin,cc_list_occ_spin,cc_list_vir_spin, cc_nOab,cc_nVab,cc_nOab,cc_nVab, v_ovov)
|
|
||||||
call gen_v_spin(nO_m,nO_m,nV_m,nV_m, nO_S,nO_S,nV_S,nV_S, cc_list_occ_spin,cc_list_occ_spin,cc_list_vir_spin,cc_list_vir_spin, cc_nOab,cc_nOab,cc_nVab,cc_nVab, v_oovv)
|
|
||||||
|
|
||||||
! O VVV
|
|
||||||
!call gen_v_spin(nV_m,nV_m,nV_m,nO_m, nV_S,nV_S,nV_S,nO_S, cc_list_vir_spin,cc_list_vir_spin,cc_list_vir_spin,cc_list_occ_spin, cc_nVab,cc_nVab,cc_nVab,cc_nOab, v_vvvo)
|
|
||||||
!call gen_v_spin(nV_m,nV_m,nO_m,nV_m, nV_S,nV_S,nO_S,nV_S, cc_list_vir_spin,cc_list_vir_spin,cc_list_occ_spin,cc_list_vir_spin, cc_nVab,cc_nVab,cc_nOab,cc_nVab, v_vvov)
|
|
||||||
!call gen_v_spin(nV_m,nO_m,nV_m,nV_m, nV_S,nO_S,nV_S,nV_S, cc_list_vir_spin,cc_list_occ_spin,cc_list_vir_spin,cc_list_vir_spin, cc_nVab,cc_nOab,cc_nVab,cc_nVab, v_vovv)
|
|
||||||
!call gen_v_spin(nO_m,nV_m,nV_m,nV_m, nO_S,nV_S,nV_S,nV_S, cc_list_occ_spin,cc_list_vir_spin,cc_list_vir_spin,cc_list_vir_spin, cc_nOab,cc_nVab,cc_nVab,cc_nVab, v_ovvv)
|
|
||||||
|
|
||||||
! VVVV
|
|
||||||
!call gen_v_spin(nV_m,nV_m,nV_m,nV_m, nV_S,nV_S,nV_S,nV_S, cc_list_vir_spin,cc_list_vir_spin,cc_list_vir_spin,cc_list_vir_spin, cc_nVab,cc_nVab,cc_nVab,cc_nVab, v_vvvv)
|
|
||||||
call wall_time(tf)
|
|
||||||
if (cc_dev) then
|
|
||||||
print*,'Load bi elec int:',tf-ti,'s'
|
|
||||||
endif
|
|
||||||
|
|
||||||
! Init of T
|
! Init of T
|
||||||
t1 = 0d0
|
t1 = 0d0
|
||||||
call guess_t1(cc_nOab,cc_nVab,f_o,f_v,cc_spin_f_ov,t1)
|
call guess_t1(cc_nOab,cc_nVab,f_o,f_v,cc_spin_f_ov,t1)
|
||||||
call guess_t2(cc_nOab,cc_nVab,f_o,f_v,v_oovv,t2)
|
call guess_t2(cc_nOab,cc_nVab,f_o,f_v,cc_spin_v_oovv,t2)
|
||||||
call compute_tau_spin(cc_nOab,cc_nVab,t1,t2,tau)
|
call compute_tau_spin(cc_nOab,cc_nVab,t1,t2,tau)
|
||||||
call compute_tau_t_spin(cc_nOab,cc_nVab,t1,t2,tau_t)
|
call compute_tau_t_spin(cc_nOab,cc_nVab,t1,t2,tau_t)
|
||||||
|
|
||||||
|
call det_energy(psi_det(1,1,cc_ref),uncorr_energy)
|
||||||
|
print*,'Det energy', uncorr_energy
|
||||||
|
|
||||||
|
call ccsd_energy_spin(cc_nOab,cc_nVab,t1,t2,cc_spin_F_ov,cc_spin_v_oovv,energy)
|
||||||
|
print*,'guess energy', uncorr_energy+energy, energy
|
||||||
|
|
||||||
! Loop init
|
! Loop init
|
||||||
nb_iter = 0
|
nb_iter = 0
|
||||||
not_converged = .True.
|
not_converged = .True.
|
||||||
@ -137,11 +78,6 @@ subroutine run_ccsd_spin_orb
|
|||||||
max_r1 = 0d0
|
max_r1 = 0d0
|
||||||
max_r2 = 0d0
|
max_r2 = 0d0
|
||||||
|
|
||||||
call det_energy(det,uncorr_energy)
|
|
||||||
print*,'Det energy', uncorr_energy
|
|
||||||
call ccsd_energy_spin(cc_nOab,cc_nVab,t1,t2,cc_spin_F_ov,v_oovv,energy)
|
|
||||||
print*,'guess energy', uncorr_energy+energy, energy
|
|
||||||
|
|
||||||
write(*,'(A77)') ' -----------------------------------------------------------------------------'
|
write(*,'(A77)') ' -----------------------------------------------------------------------------'
|
||||||
write(*,'(A77)') ' | It. | E(CCSD) (Ha) | Correlation (Ha) | Conv. T1 | Conv. T2 |'
|
write(*,'(A77)') ' | It. | E(CCSD) (Ha) | Correlation (Ha) | Conv. T1 | Conv. T2 |'
|
||||||
write(*,'(A77)') ' -----------------------------------------------------------------------------'
|
write(*,'(A77)') ' -----------------------------------------------------------------------------'
|
||||||
@ -152,38 +88,16 @@ subroutine run_ccsd_spin_orb
|
|||||||
do while (not_converged)
|
do while (not_converged)
|
||||||
|
|
||||||
! Intermediates
|
! Intermediates
|
||||||
call wall_time(tbi)
|
call compute_cF_oo(cc_nOab,cc_nVab,t1,tau_t,cc_spin_F_oo,cc_spin_F_ov,cc_spin_v_ooov,cc_spin_v_oovv,cF_oo)
|
||||||
call wall_time(ti)
|
call compute_cF_ov(cc_nOab,cc_nVab,t1,cc_spin_F_ov,cc_spin_v_oovv,cF_ov)
|
||||||
call compute_cF_oo(cc_nOab,cc_nVab,t1,tau_t,cc_spin_F_oo,cc_spin_F_ov,v_ooov,v_oovv,cF_oo)
|
call compute_cF_vv(cc_nOab,cc_nVab,t1,tau_t,cc_spin_F_ov,cc_spin_F_vv,cc_spin_v_oovv,cF_vv)
|
||||||
call compute_cF_ov(cc_nOab,cc_nVab,t1,cc_spin_F_ov,v_oovv,cF_ov)
|
|
||||||
call compute_cF_vv(cc_nOab,cc_nVab,t1,tau_t,cc_spin_F_ov,cc_spin_F_vv,v_oovv,cF_vv)
|
|
||||||
call wall_time(tf)
|
|
||||||
if (cc_dev) then
|
|
||||||
print*,'Compute cFs:',tf-ti,'s'
|
|
||||||
endif
|
|
||||||
|
|
||||||
call wall_time(ti)
|
call compute_cW_oooo(cc_nOab,cc_nVab,t1,t2,tau,cc_spin_v_oooo,cc_spin_v_ooov,cc_spin_v_oovv,cW_oooo)
|
||||||
call compute_cW_oooo(cc_nOab,cc_nVab,t1,t2,tau,v_oooo,v_ooov,v_oovv,cW_oooo)
|
call compute_cW_ovvo(cc_nOab,cc_nVab,t1,t2,tau,cc_spin_v_ovvo,cc_spin_v_oovo,cc_spin_v_oovv,cW_ovvo)
|
||||||
call compute_cW_ovvo(cc_nOab,cc_nVab,t1,t2,tau,v_ovvo,v_oovo,v_oovv,cW_ovvo)
|
|
||||||
!call compute_cW_vvvv(cc_nOab,cc_nVab,t1,t2,tau,v_vvvv,v_vovv,v_oovv,cW_vvvv)
|
|
||||||
call wall_time(tf)
|
|
||||||
if (cc_dev) then
|
|
||||||
print*,'Compute cFs:',tf-ti,'s'
|
|
||||||
endif
|
|
||||||
|
|
||||||
! Residuals
|
! Residuals
|
||||||
call wall_time(ti)
|
call compute_r1_spin(cc_nOab,cc_nVab,t1,t2,f_o,f_v,cc_spin_F_ov,cF_oo,cF_ov,cF_vv,cc_spin_v_oovo,cc_spin_v_ovov,r1)
|
||||||
call compute_r1_spin(cc_nOab,cc_nVab,t1,t2,f_o,f_v,cc_spin_F_ov,cF_oo,cF_ov,cF_vv,v_oovo,v_ovov,r1)
|
call compute_r2_spin(cc_nOab,cc_nVab,t1,t2,tau,f_o,f_v,cF_oo,cF_ov,cF_vv,cW_oooo,cW_ovvo,cc_spin_v_ovoo,cc_spin_v_oovv,cc_spin_v_ovvo,r2)
|
||||||
call wall_time(tf)
|
|
||||||
if (cc_dev) then
|
|
||||||
print*,'Compute r1:',tf-ti,'s'
|
|
||||||
endif
|
|
||||||
call wall_time(ti)
|
|
||||||
call compute_r2_spin(cc_nOab,cc_nVab,t1,t2,tau,f_o,f_v,cF_oo,cF_ov,cF_vv,cW_oooo,cW_ovvo,v_ovoo,v_oovv,v_ovvo,r2)
|
|
||||||
call wall_time(tf)
|
|
||||||
if (cc_dev) then
|
|
||||||
print*,'Compute r2:',tf-ti,'s'
|
|
||||||
endif
|
|
||||||
|
|
||||||
! Max elements in the residuals
|
! Max elements in the residuals
|
||||||
max_r1 = maxval(abs(r1(:,:)))
|
max_r1 = maxval(abs(r1(:,:)))
|
||||||
@ -213,7 +127,7 @@ subroutine run_ccsd_spin_orb
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
! Print
|
! Print
|
||||||
call ccsd_energy_spin(cc_nOab,cc_nVab,t1,t2,cc_spin_F_ov,v_oovv,energy)
|
call ccsd_energy_spin(cc_nOab,cc_nVab,t1,t2,cc_spin_F_ov,cc_spin_v_oovv,energy)
|
||||||
call wall_time(tfi)
|
call wall_time(tfi)
|
||||||
|
|
||||||
write(*,'(A3,I6,A3,F18.12,A3,F16.12,A3,ES10.2,A3,ES10.2,A2)') ' | ',nb_iter,' | ', &
|
write(*,'(A3,I6,A3,F18.12,A3,F16.12,A3,ES10.2,A3,ES10.2,A2)') ' | ',nb_iter,' | ', &
|
||||||
@ -258,25 +172,13 @@ subroutine run_ccsd_spin_orb
|
|||||||
deallocate(r1,r2)
|
deallocate(r1,r2)
|
||||||
deallocate(cF_oo,cF_ov,cF_vv)
|
deallocate(cF_oo,cF_ov,cF_vv)
|
||||||
deallocate(cW_oooo,cW_ovvo)!,cW_vvvv)
|
deallocate(cW_oooo,cW_ovvo)!,cW_vvvv)
|
||||||
deallocate(v_oooo)
|
|
||||||
deallocate(v_ovoo,v_oovo)
|
|
||||||
deallocate(v_ovvo,v_ovov,v_oovv)
|
|
||||||
|
|
||||||
double precision :: t_corr
|
double precision :: t_corr
|
||||||
t_corr = 0.d0
|
t_corr = 0.d0
|
||||||
if (cc_par_t .and. elec_alpha_num +elec_beta_num > 2) then
|
if (cc_par_t .and. elec_alpha_num +elec_beta_num > 2) then
|
||||||
print*,'CCSD(T) calculation...'
|
print*,'CCSD(T) calculation...'
|
||||||
call wall_time(ta)
|
call wall_time(ta)
|
||||||
!allocate(v_vvvo(cc_nVab,cc_nVab,cc_nVab,cc_nOab))
|
call ccsd_par_t_spin_v2(cc_nOab,cc_nVab,t1,t2,f_o,f_v,cc_spin_f_ov,cc_spin_v_ooov,cc_spin_v_vvoo,t_corr)
|
||||||
!call gen_v_spin(cc_nV_m,cc_nV_m,cc_nV_m,cc_nO_m, &
|
|
||||||
! cc_nV_S,cc_nV_S,cc_nV_S,cc_nO_S, &
|
|
||||||
! cc_list_vir_spin,cc_list_vir_spin,cc_list_vir_spin,cc_list_occ_spin, &
|
|
||||||
! cc_nVab,cc_nVab,cc_nVab,cc_nOab, v_vvvo)
|
|
||||||
|
|
||||||
!call ccsd_par_t_spin(cc_nOab,cc_nVab,t1,t2,f_o,f_v,cc_spin_f_ov,v_ooov,v_vvoo,v_vvvo,t_corr)
|
|
||||||
call ccsd_par_t_spin_v2(cc_nOab,cc_nVab,t1,t2,f_o,f_v,cc_spin_f_ov,v_ooov,v_vvoo,t_corr)
|
|
||||||
!print*,'Working on it...'
|
|
||||||
!call abort
|
|
||||||
call wall_time(tb)
|
call wall_time(tb)
|
||||||
print*,'Done'
|
print*,'Done'
|
||||||
print*,'Time: ',tb-ta, ' s'
|
print*,'Time: ',tb-ta, ' s'
|
||||||
@ -290,9 +192,7 @@ subroutine run_ccsd_spin_orb
|
|||||||
call save_energy(uncorr_energy + energy, t_corr)
|
call save_energy(uncorr_energy + energy, t_corr)
|
||||||
|
|
||||||
deallocate(f_o,f_v)
|
deallocate(f_o,f_v)
|
||||||
deallocate(v_ooov,v_vvoo,t1,t2)
|
deallocate(t1,t2)
|
||||||
!deallocate(v_ovvv,v_vvvo,v_vovv)
|
|
||||||
!deallocate(v_vvvv)
|
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -227,6 +227,19 @@ BEGIN_PROVIDER [double precision, cc_space_v_oooo, (cc_nOa, cc_nOa, cc_nOa, cc_n
|
|||||||
|
|
||||||
END_PROVIDER
|
END_PROVIDER
|
||||||
|
|
||||||
|
BEGIN_PROVIDER [double precision, cc_spin_v_oooo, (cc_nOab, cc_nOab, cc_nOab, cc_nOab)]
|
||||||
|
|
||||||
|
implicit none
|
||||||
|
|
||||||
|
!TODO
|
||||||
|
call gen_v_spin(cc_nO_m,cc_nO_m,cc_nO_m,cc_nO_m, &
|
||||||
|
cc_nO_S,cc_nO_S,cc_nO_S,cc_nO_S, &
|
||||||
|
cc_list_occ_spin,cc_list_occ_spin,cc_list_occ_spin,cc_list_occ_spin, &
|
||||||
|
cc_nOab,cc_nOab,cc_nOab,cc_nOab, &
|
||||||
|
cc_spin_v_oooo)
|
||||||
|
|
||||||
|
END_PROVIDER
|
||||||
|
|
||||||
! vooo
|
! vooo
|
||||||
|
|
||||||
BEGIN_PROVIDER [double precision, cc_space_v_vooo, (cc_nVa, cc_nOa, cc_nOa, cc_nOa)]
|
BEGIN_PROVIDER [double precision, cc_space_v_vooo, (cc_nVa, cc_nOa, cc_nOa, cc_nOa)]
|
||||||
@ -305,6 +318,17 @@ BEGIN_PROVIDER [double precision, cc_space_v_ovoo, (cc_nOa, cc_nVa, cc_nOa, cc_n
|
|||||||
|
|
||||||
END_PROVIDER
|
END_PROVIDER
|
||||||
|
|
||||||
|
BEGIN_PROVIDER [ double precision, cc_spin_v_ovoo, (cc_nOab,cc_nVab,cc_nOab,cc_nOab)]
|
||||||
|
implicit none
|
||||||
|
|
||||||
|
call gen_v_spin(cc_nO_m,cc_nV_m,cc_nO_m,cc_nO_m, &
|
||||||
|
cc_nO_S,cc_nV_S,cc_nO_S,cc_nO_S, &
|
||||||
|
cc_list_occ_spin,cc_list_vir_spin,cc_list_occ_spin,cc_list_occ_spin, &
|
||||||
|
cc_nOab,cc_nVab,cc_nOab,cc_nOab, &
|
||||||
|
cc_spin_v_ovoo)
|
||||||
|
|
||||||
|
END_PROVIDER
|
||||||
|
|
||||||
! oovo
|
! oovo
|
||||||
|
|
||||||
BEGIN_PROVIDER [double precision, cc_space_v_oovo, (cc_nOa, cc_nOa, cc_nVa, cc_nOa)]
|
BEGIN_PROVIDER [double precision, cc_space_v_oovo, (cc_nOa, cc_nOa, cc_nVa, cc_nOa)]
|
||||||
@ -339,6 +363,17 @@ BEGIN_PROVIDER [double precision, cc_space_v_oovo, (cc_nOa, cc_nOa, cc_nVa, cc_n
|
|||||||
|
|
||||||
END_PROVIDER
|
END_PROVIDER
|
||||||
|
|
||||||
|
BEGIN_PROVIDER [ double precision, cc_spin_v_oovo, (cc_nOab,cc_nOab,cc_nVab,cc_nOab)]
|
||||||
|
implicit none
|
||||||
|
|
||||||
|
call gen_v_spin(cc_nO_m,cc_nO_m,cc_nV_m,cc_nO_m, &
|
||||||
|
cc_nO_S,cc_nO_S,cc_nV_S,cc_nO_S, &
|
||||||
|
cc_list_occ_spin,cc_list_occ_spin,cc_list_vir_spin,cc_list_occ_spin, &
|
||||||
|
cc_nOab,cc_nOab,cc_nVab,cc_nOab, &
|
||||||
|
cc_spin_v_oovo)
|
||||||
|
END_PROVIDER
|
||||||
|
|
||||||
|
|
||||||
! ooov
|
! ooov
|
||||||
|
|
||||||
BEGIN_PROVIDER [double precision, cc_space_v_ooov, (cc_nOa, cc_nOa, cc_nOa, cc_nVa)]
|
BEGIN_PROVIDER [double precision, cc_space_v_ooov, (cc_nOa, cc_nOa, cc_nOa, cc_nVa)]
|
||||||
@ -373,6 +408,17 @@ BEGIN_PROVIDER [double precision, cc_space_v_ooov, (cc_nOa, cc_nOa, cc_nOa, cc_n
|
|||||||
|
|
||||||
END_PROVIDER
|
END_PROVIDER
|
||||||
|
|
||||||
|
BEGIN_PROVIDER [ double precision, cc_spin_v_ooov, (cc_nOab,cc_nOab,cc_nOab,cc_nVab)]
|
||||||
|
implicit none
|
||||||
|
|
||||||
|
call gen_v_spin(cc_nO_m,cc_nO_m,cc_nO_m,cc_nV_m, &
|
||||||
|
cc_nO_S,cc_nO_S,cc_nO_S,cc_nV_S, &
|
||||||
|
cc_list_occ_spin,cc_list_occ_spin,cc_list_occ_spin,cc_list_vir_spin, &
|
||||||
|
cc_nOab,cc_nOab,cc_nOab,cc_nVab, &
|
||||||
|
cc_spin_v_ooov)
|
||||||
|
END_PROVIDER
|
||||||
|
|
||||||
|
|
||||||
! vvoo
|
! vvoo
|
||||||
|
|
||||||
BEGIN_PROVIDER [double precision, cc_space_v_vvoo, (cc_nVa, cc_nVa, cc_nOa, cc_nOa)]
|
BEGIN_PROVIDER [double precision, cc_space_v_vvoo, (cc_nVa, cc_nVa, cc_nOa, cc_nOa)]
|
||||||
@ -416,6 +462,18 @@ BEGIN_PROVIDER [double precision, cc_space_v_vvoo, (cc_nVa, cc_nVa, cc_nOa, cc_n
|
|||||||
|
|
||||||
END_PROVIDER
|
END_PROVIDER
|
||||||
|
|
||||||
|
|
||||||
|
BEGIN_PROVIDER [ double precision, cc_spin_v_vvoo, (cc_nVab,cc_nVab,cc_nOab,cc_nOab)]
|
||||||
|
implicit none
|
||||||
|
|
||||||
|
call gen_v_spin(cc_nV_m,cc_nV_m,cc_nO_m,cc_nO_m, &
|
||||||
|
cc_nV_S,cc_nV_S,cc_nO_S,cc_nO_S, &
|
||||||
|
cc_list_vir_spin,cc_list_vir_spin,cc_list_occ_spin,cc_list_occ_spin, &
|
||||||
|
cc_nVab,cc_nVab,cc_nOab,cc_nOab, &
|
||||||
|
cc_spin_v_vvoo)
|
||||||
|
END_PROVIDER
|
||||||
|
|
||||||
|
|
||||||
! vovo
|
! vovo
|
||||||
|
|
||||||
BEGIN_PROVIDER [double precision, cc_space_v_vovo, (cc_nVa, cc_nOa, cc_nVa, cc_nOa)]
|
BEGIN_PROVIDER [double precision, cc_space_v_vovo, (cc_nVa, cc_nOa, cc_nVa, cc_nOa)]
|
||||||
@ -527,6 +585,16 @@ BEGIN_PROVIDER [double precision, cc_space_v_ovvo, (cc_nOa, cc_nVa, cc_nVa, cc_n
|
|||||||
|
|
||||||
END_PROVIDER
|
END_PROVIDER
|
||||||
|
|
||||||
|
BEGIN_PROVIDER [ double precision, cc_spin_v_ovvo, (cc_nOab,cc_nVab,cc_nVab,cc_nOab) ]
|
||||||
|
implicit none
|
||||||
|
|
||||||
|
call gen_v_spin(cc_nO_m,cc_nV_m,cc_nV_m,cc_nO_m, &
|
||||||
|
cc_nO_S,cc_nV_S,cc_nV_S,cc_nO_S, &
|
||||||
|
cc_list_occ_spin,cc_list_vir_spin,cc_list_vir_spin,cc_list_occ_spin, &
|
||||||
|
cc_nOab,cc_nVab,cc_nVab,cc_nOab, &
|
||||||
|
cc_spin_v_ovvo)
|
||||||
|
END_PROVIDER
|
||||||
|
|
||||||
! ovov
|
! ovov
|
||||||
|
|
||||||
BEGIN_PROVIDER [double precision, cc_space_v_ovov, (cc_nOa, cc_nVa, cc_nOa, cc_nVa)]
|
BEGIN_PROVIDER [double precision, cc_space_v_ovov, (cc_nOa, cc_nVa, cc_nOa, cc_nVa)]
|
||||||
@ -561,6 +629,16 @@ BEGIN_PROVIDER [double precision, cc_space_v_ovov, (cc_nOa, cc_nVa, cc_nOa, cc_n
|
|||||||
|
|
||||||
END_PROVIDER
|
END_PROVIDER
|
||||||
|
|
||||||
|
BEGIN_PROVIDER [ double precision, cc_spin_v_ovov, (cc_nOab,cc_nVab,cc_nOab,cc_nVab) ]
|
||||||
|
implicit none
|
||||||
|
|
||||||
|
call gen_v_spin(cc_nO_m,cc_nV_m,cc_nO_m,cc_nV_m, &
|
||||||
|
cc_nO_S,cc_nV_S,cc_nO_S,cc_nV_S, &
|
||||||
|
cc_list_occ_spin,cc_list_vir_spin,cc_list_occ_spin,cc_list_vir_spin, &
|
||||||
|
cc_nOab,cc_nVab,cc_nOab,cc_nVab, &
|
||||||
|
cc_spin_v_ovov)
|
||||||
|
END_PROVIDER
|
||||||
|
|
||||||
! oovv
|
! oovv
|
||||||
|
|
||||||
BEGIN_PROVIDER [double precision, cc_space_v_oovv, (cc_nOa, cc_nOa, cc_nVa, cc_nVa)]
|
BEGIN_PROVIDER [double precision, cc_space_v_oovv, (cc_nOa, cc_nOa, cc_nVa, cc_nVa)]
|
||||||
@ -595,6 +673,16 @@ BEGIN_PROVIDER [double precision, cc_space_v_oovv, (cc_nOa, cc_nOa, cc_nVa, cc_n
|
|||||||
|
|
||||||
END_PROVIDER
|
END_PROVIDER
|
||||||
|
|
||||||
|
BEGIN_PROVIDER [ double precision, cc_spin_v_oovv, (cc_nOab,cc_nOab,cc_nVab,cc_nVab) ]
|
||||||
|
implicit none
|
||||||
|
|
||||||
|
call gen_v_spin(cc_nO_m,cc_nO_m,cc_nV_m,cc_nV_m, &
|
||||||
|
cc_nO_S,cc_nO_S,cc_nV_S,cc_nV_S, &
|
||||||
|
cc_list_occ_spin,cc_list_occ_spin,cc_list_vir_spin,cc_list_vir_spin, &
|
||||||
|
cc_nOab,cc_nOab,cc_nVab,cc_nVab, &
|
||||||
|
cc_spin_v_oovv)
|
||||||
|
END_PROVIDER
|
||||||
|
|
||||||
! vvvo
|
! vvvo
|
||||||
|
|
||||||
BEGIN_PROVIDER [double precision, cc_space_v_vvvo, (cc_nVa, cc_nVa, cc_nVa, cc_nOa)]
|
BEGIN_PROVIDER [double precision, cc_space_v_vvvo, (cc_nVa, cc_nVa, cc_nVa, cc_nOa)]
|
||||||
@ -625,6 +713,7 @@ BEGIN_PROVIDER [double precision, cc_space_v_vovv, (cc_nVa, cc_nOa, cc_nVa, cc_n
|
|||||||
|
|
||||||
END_PROVIDER
|
END_PROVIDER
|
||||||
|
|
||||||
|
|
||||||
! ovvv
|
! ovvv
|
||||||
|
|
||||||
BEGIN_PROVIDER [double precision, cc_space_v_ovvv, (cc_nOa, cc_nVa, cc_nVa, cc_nVa)]
|
BEGIN_PROVIDER [double precision, cc_space_v_ovvv, (cc_nOa, cc_nVa, cc_nVa, cc_nVa)]
|
||||||
@ -677,6 +766,18 @@ BEGIN_PROVIDER [double precision, cc_space_v_oo_chol, (cholesky_mo_num, cc_nOa,
|
|||||||
|
|
||||||
END_PROVIDER
|
END_PROVIDER
|
||||||
|
|
||||||
|
BEGIN_PROVIDER [double precision, cc_spin_v_oo_chol, (cholesky_mo_num, cc_nOab, cc_nOab)]
|
||||||
|
|
||||||
|
implicit none
|
||||||
|
integer :: list_occ(cc_nOab)
|
||||||
|
|
||||||
|
list_occ(1:cc_nOa) = cc_list_occ_spin(1:cc_nOa,1)
|
||||||
|
list_occ(cc_nOa+1:cc_nOab) = cc_list_occ_spin(1:cc_nOb,2)
|
||||||
|
call gen_v_space_chol(cc_nOab, cc_nOab, list_occ, list_occ, &
|
||||||
|
cc_spin_v_oo_chol, cholesky_mo_num)
|
||||||
|
|
||||||
|
END_PROVIDER
|
||||||
|
|
||||||
! ppqq
|
! ppqq
|
||||||
|
|
||||||
BEGIN_PROVIDER [double precision, cc_space_v_ppqq, (cc_n_mo, cc_n_mo)]
|
BEGIN_PROVIDER [double precision, cc_space_v_ppqq, (cc_n_mo, cc_n_mo)]
|
||||||
|
Loading…
x
Reference in New Issue
Block a user