mirror of
https://github.com/QuantumPackage/qp2.git
synced 2024-12-23 04:43:45 +01:00
few modifs
This commit is contained in:
parent
061b26767b
commit
5ab6a1d7fb
@ -138,10 +138,13 @@ BEGIN_PROVIDER [ double precision, int2_grad1_u12_ao_transp, (ao_num, ao_num, 3,
|
|||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
|
|
||||||
|
FREE int2_grad1_u12_ao
|
||||||
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
call wall_time(wall1)
|
call wall_time(wall1)
|
||||||
print *, ' wall time for int2_grad1_u12_ao_transp ', wall1 - wall0
|
print *, ' wall time for int2_grad1_u12_ao_transp ', wall1 - wall0
|
||||||
|
call print_memory_usage()
|
||||||
|
|
||||||
END_PROVIDER
|
END_PROVIDER
|
||||||
|
|
||||||
@ -200,6 +203,8 @@ BEGIN_PROVIDER [ double precision, int2_grad1_u12_bimo_t, (n_points_final_grid,
|
|||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
|
|
||||||
|
FREE int2_grad1_u12_bimo_transp
|
||||||
|
|
||||||
END_PROVIDER
|
END_PROVIDER
|
||||||
|
|
||||||
! ---
|
! ---
|
||||||
|
@ -79,7 +79,7 @@ subroutine give_integrals_3_body_bi_ort(n, l, k, m, j, i, integral)
|
|||||||
integer, intent(in) :: n, l, k, m, j, i
|
integer, intent(in) :: n, l, k, m, j, i
|
||||||
double precision, intent(out) :: integral
|
double precision, intent(out) :: integral
|
||||||
integer :: ipoint
|
integer :: ipoint
|
||||||
double precision :: weight
|
double precision :: weight, tmp
|
||||||
|
|
||||||
PROVIDE mo_l_coef mo_r_coef
|
PROVIDE mo_l_coef mo_r_coef
|
||||||
PROVIDE int2_grad1_u12_bimo_t
|
PROVIDE int2_grad1_u12_bimo_t
|
||||||
|
@ -231,6 +231,7 @@ BEGIN_PROVIDER [ double precision, grad12_j12, (ao_num, ao_num, n_points_final_g
|
|||||||
call wall_time(time0)
|
call wall_time(time0)
|
||||||
|
|
||||||
PROVIDE j1b_type
|
PROVIDE j1b_type
|
||||||
|
PROVIDE int2_grad1u2_grad2u2_j1b2
|
||||||
|
|
||||||
do ipoint = 1, n_points_final_grid
|
do ipoint = 1, n_points_final_grid
|
||||||
tmp1 = v_1b(ipoint)
|
tmp1 = v_1b(ipoint)
|
||||||
@ -242,6 +243,8 @@ BEGIN_PROVIDER [ double precision, grad12_j12, (ao_num, ao_num, n_points_final_g
|
|||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
|
|
||||||
|
FREE int2_grad1u2_grad2u2_j1b2
|
||||||
|
|
||||||
!if(j1b_type .eq. 0) then
|
!if(j1b_type .eq. 0) then
|
||||||
! grad12_j12 = 0.d0
|
! grad12_j12 = 0.d0
|
||||||
! do ipoint = 1, n_points_final_grid
|
! do ipoint = 1, n_points_final_grid
|
||||||
@ -262,6 +265,7 @@ BEGIN_PROVIDER [ double precision, grad12_j12, (ao_num, ao_num, n_points_final_g
|
|||||||
|
|
||||||
call wall_time(time1)
|
call wall_time(time1)
|
||||||
print*, ' Wall time for grad12_j12 = ', time1 - time0
|
print*, ' Wall time for grad12_j12 = ', time1 - time0
|
||||||
|
call print_memory_usage()
|
||||||
|
|
||||||
END_PROVIDER
|
END_PROVIDER
|
||||||
|
|
||||||
@ -278,6 +282,9 @@ BEGIN_PROVIDER [double precision, u12sq_j1bsq, (ao_num, ao_num, n_points_final_g
|
|||||||
print*, ' providing u12sq_j1bsq ...'
|
print*, ' providing u12sq_j1bsq ...'
|
||||||
call wall_time(time0)
|
call wall_time(time0)
|
||||||
|
|
||||||
|
! do not free here
|
||||||
|
PROVIDE int2_u2_j1b2
|
||||||
|
|
||||||
do ipoint = 1, n_points_final_grid
|
do ipoint = 1, n_points_final_grid
|
||||||
tmp_x = v_1b_grad(1,ipoint)
|
tmp_x = v_1b_grad(1,ipoint)
|
||||||
tmp_y = v_1b_grad(2,ipoint)
|
tmp_y = v_1b_grad(2,ipoint)
|
||||||
@ -292,6 +299,7 @@ BEGIN_PROVIDER [double precision, u12sq_j1bsq, (ao_num, ao_num, n_points_final_g
|
|||||||
|
|
||||||
call wall_time(time1)
|
call wall_time(time1)
|
||||||
print*, ' Wall time for u12sq_j1bsq = ', time1 - time0
|
print*, ' Wall time for u12sq_j1bsq = ', time1 - time0
|
||||||
|
call print_memory_usage()
|
||||||
|
|
||||||
END_PROVIDER
|
END_PROVIDER
|
||||||
|
|
||||||
@ -310,6 +318,9 @@ BEGIN_PROVIDER [ double precision, u12_grad1_u12_j1b_grad1_j1b, (ao_num, ao_num,
|
|||||||
print*, ' providing u12_grad1_u12_j1b_grad1_j1b ...'
|
print*, ' providing u12_grad1_u12_j1b_grad1_j1b ...'
|
||||||
call wall_time(time0)
|
call wall_time(time0)
|
||||||
|
|
||||||
|
PROVIDE int2_u_grad1u_j1b2
|
||||||
|
PROVIDE int2_u_grad1u_x_j1b2
|
||||||
|
|
||||||
do ipoint = 1, n_points_final_grid
|
do ipoint = 1, n_points_final_grid
|
||||||
|
|
||||||
x = final_grid_points(1,ipoint)
|
x = final_grid_points(1,ipoint)
|
||||||
@ -340,14 +351,17 @@ BEGIN_PROVIDER [ double precision, u12_grad1_u12_j1b_grad1_j1b, (ao_num, ao_num,
|
|||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
|
|
||||||
|
FREE int2_u_grad1u_j1b2
|
||||||
|
FREE int2_u_grad1u_x_j1b2
|
||||||
|
|
||||||
call wall_time(time1)
|
call wall_time(time1)
|
||||||
print*, ' Wall time for u12_grad1_u12_j1b_grad1_j1b = ', time1 - time0
|
print*, ' Wall time for u12_grad1_u12_j1b_grad1_j1b = ', time1 - time0
|
||||||
|
call print_memory_usage()
|
||||||
|
|
||||||
END_PROVIDER
|
END_PROVIDER
|
||||||
|
|
||||||
! ---
|
! ---
|
||||||
|
|
||||||
|
|
||||||
BEGIN_PROVIDER [double precision, tc_grad_square_ao, (ao_num, ao_num, ao_num, ao_num)]
|
BEGIN_PROVIDER [double precision, tc_grad_square_ao, (ao_num, ao_num, ao_num, ao_num)]
|
||||||
|
|
||||||
BEGIN_DOC
|
BEGIN_DOC
|
||||||
@ -401,6 +415,8 @@ BEGIN_PROVIDER [double precision, tc_grad_square_ao, (ao_num, ao_num, ao_num, ao
|
|||||||
, int2_grad1_u12_square_ao(1,1,1), ao_num*ao_num, b_mat(1,1,1), n_points_final_grid &
|
, int2_grad1_u12_square_ao(1,1,1), ao_num*ao_num, b_mat(1,1,1), n_points_final_grid &
|
||||||
, 0.d0, tc_grad_square_ao, ao_num*ao_num)
|
, 0.d0, tc_grad_square_ao, ao_num*ao_num)
|
||||||
|
|
||||||
|
FREE int2_grad1_u12_square_ao
|
||||||
|
|
||||||
! ---
|
! ---
|
||||||
|
|
||||||
if(((j1b_type .eq. 3) .or. (j1b_type .eq. 4)) .and. use_ipp) then
|
if(((j1b_type .eq. 3) .or. (j1b_type .eq. 4)) .and. use_ipp) then
|
||||||
@ -442,6 +458,8 @@ BEGIN_PROVIDER [double precision, tc_grad_square_ao, (ao_num, ao_num, ao_num, ao
|
|||||||
call dgemm( "N", "N", ao_num*ao_num, ao_num*ao_num, n_points_final_grid, 1.d0 &
|
call dgemm( "N", "N", ao_num*ao_num, ao_num*ao_num, n_points_final_grid, 1.d0 &
|
||||||
, int2_u2_j1b2(1,1,1), ao_num*ao_num, b_mat(1,1,1), n_points_final_grid &
|
, int2_u2_j1b2(1,1,1), ao_num*ao_num, b_mat(1,1,1), n_points_final_grid &
|
||||||
, 1.d0, tc_grad_square_ao, ao_num*ao_num)
|
, 1.d0, tc_grad_square_ao, ao_num*ao_num)
|
||||||
|
|
||||||
|
FREE int2_u2_j1b2
|
||||||
endif
|
endif
|
||||||
|
|
||||||
! ---
|
! ---
|
||||||
@ -478,6 +496,7 @@ BEGIN_PROVIDER [double precision, tc_grad_square_ao, (ao_num, ao_num, ao_num, ao
|
|||||||
|
|
||||||
call wall_time(time1)
|
call wall_time(time1)
|
||||||
print*, ' Wall time for tc_grad_square_ao = ', time1 - time0
|
print*, ' Wall time for tc_grad_square_ao = ', time1 - time0
|
||||||
|
call print_memory_usage()
|
||||||
|
|
||||||
END_PROVIDER
|
END_PROVIDER
|
||||||
|
|
||||||
|
@ -284,6 +284,7 @@ BEGIN_PROVIDER [double precision, tc_grad_and_lapl_ao, (ao_num, ao_num, ao_num,
|
|||||||
|
|
||||||
call wall_time(time1)
|
call wall_time(time1)
|
||||||
print*, ' Wall time for tc_grad_and_lapl_ao = ', time1 - time0
|
print*, ' Wall time for tc_grad_and_lapl_ao = ', time1 - time0
|
||||||
|
call print_memory_usage()
|
||||||
|
|
||||||
END_PROVIDER
|
END_PROVIDER
|
||||||
|
|
||||||
|
@ -176,6 +176,7 @@ BEGIN_PROVIDER [double precision, int2_grad1_u12_ao, (ao_num, ao_num, n_points_f
|
|||||||
|
|
||||||
call wall_time(time1)
|
call wall_time(time1)
|
||||||
print*, ' wall time for int2_grad1_u12_ao =', time1-time0
|
print*, ' wall time for int2_grad1_u12_ao =', time1-time0
|
||||||
|
call print_memory_usage()
|
||||||
|
|
||||||
END_PROVIDER
|
END_PROVIDER
|
||||||
|
|
||||||
@ -242,6 +243,8 @@ BEGIN_PROVIDER [double precision, int2_grad1_u12_square_ao, (ao_num, ao_num, n_p
|
|||||||
!$OMP END DO
|
!$OMP END DO
|
||||||
!$OMP END PARALLEL
|
!$OMP END PARALLEL
|
||||||
|
|
||||||
|
FREE u12sq_j1bsq grad12_j12
|
||||||
|
|
||||||
else
|
else
|
||||||
|
|
||||||
PROVIDE u12sq_j1bsq u12_grad1_u12_j1b_grad1_j1b grad12_j12
|
PROVIDE u12sq_j1bsq u12_grad1_u12_j1b_grad1_j1b grad12_j12
|
||||||
@ -262,6 +265,8 @@ BEGIN_PROVIDER [double precision, int2_grad1_u12_square_ao, (ao_num, ao_num, n_p
|
|||||||
!$OMP END DO
|
!$OMP END DO
|
||||||
!$OMP END PARALLEL
|
!$OMP END PARALLEL
|
||||||
|
|
||||||
|
FREE u12sq_j1bsq u12_grad1_u12_j1b_grad1_j1b grad12_j12
|
||||||
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
elseif(j1b_type .ge. 100) then
|
elseif(j1b_type .ge. 100) then
|
||||||
@ -324,6 +329,7 @@ BEGIN_PROVIDER [double precision, int2_grad1_u12_square_ao, (ao_num, ao_num, n_p
|
|||||||
|
|
||||||
call wall_time(time1)
|
call wall_time(time1)
|
||||||
print*, ' wall time for int2_grad1_u12_square_ao =', time1-time0
|
print*, ' wall time for int2_grad1_u12_square_ao =', time1-time0
|
||||||
|
call print_memory_usage()
|
||||||
|
|
||||||
END_PROVIDER
|
END_PROVIDER
|
||||||
|
|
||||||
|
@ -84,8 +84,13 @@ BEGIN_PROVIDER [double precision, ao_tc_int_chemist, (ao_num, ao_num, ao_num, ao
|
|||||||
enddo
|
enddo
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
FREE tc_grad_square_ao
|
||||||
|
FREE tc_grad_and_lapl_ao
|
||||||
|
FREE ao_two_e_coul
|
||||||
|
|
||||||
call wall_time(wall1)
|
call wall_time(wall1)
|
||||||
print *, ' wall time for ao_tc_int_chemist ', wall1 - wall0
|
print *, ' wall time for ao_tc_int_chemist ', wall1 - wall0
|
||||||
|
call print_memory_usage()
|
||||||
|
|
||||||
END_PROVIDER
|
END_PROVIDER
|
||||||
|
|
||||||
|
@ -11,6 +11,7 @@ subroutine rh_tcscf_diis()
|
|||||||
|
|
||||||
integer :: i, j, it
|
integer :: i, j, it
|
||||||
integer :: dim_DIIS, index_dim_DIIS
|
integer :: dim_DIIS, index_dim_DIIS
|
||||||
|
logical :: converged
|
||||||
double precision :: etc_tot, etc_1e, etc_2e, etc_3e, e_save, e_delta
|
double precision :: etc_tot, etc_1e, etc_2e, etc_3e, e_save, e_delta
|
||||||
double precision :: tc_grad, g_save, g_delta, g_delta_th
|
double precision :: tc_grad, g_save, g_delta, g_delta_th
|
||||||
double precision :: level_shift_save, rate_th
|
double precision :: level_shift_save, rate_th
|
||||||
@ -92,8 +93,9 @@ subroutine rh_tcscf_diis()
|
|||||||
|
|
||||||
PROVIDE FQS_SQF_ao Fock_matrix_tc_ao_tot
|
PROVIDE FQS_SQF_ao Fock_matrix_tc_ao_tot
|
||||||
|
|
||||||
|
converged = .false.
|
||||||
!do while((tc_grad .gt. dsqrt(thresh_tcscf)) .and. (er_DIIS .gt. dsqrt(thresh_tcscf)))
|
!do while((tc_grad .gt. dsqrt(thresh_tcscf)) .and. (er_DIIS .gt. dsqrt(thresh_tcscf)))
|
||||||
do while(er_DIIS .gt. dsqrt(thresh_tcscf))
|
do while(.not. converged)
|
||||||
|
|
||||||
call wall_time(t0)
|
call wall_time(t0)
|
||||||
|
|
||||||
@ -218,21 +220,56 @@ subroutine rh_tcscf_diis()
|
|||||||
!g_delta_th = dabs(tc_grad) ! g_delta)
|
!g_delta_th = dabs(tc_grad) ! g_delta)
|
||||||
er_delta_th = dabs(er_DIIS) !er_delta)
|
er_delta_th = dabs(er_DIIS) !er_delta)
|
||||||
|
|
||||||
|
converged = er_DIIS .lt. dsqrt(thresh_tcscf)
|
||||||
|
|
||||||
call wall_time(t1)
|
call wall_time(t1)
|
||||||
!write(6, '(I4,1X, F16.10,1X, F16.10,1X, F16.10,1X, F16.10,1X, F16.10,1X, F16.10,1X, F16.10,1X, F16.10,1X, I4,1X, F8.2)') &
|
!write(6, '(I4,1X, F16.10,1X, F16.10,1X, F16.10,1X, F16.10,1X, F16.10,1X, F16.10,1X, F16.10,1X, F16.10,1X, I4,1X, F8.2)') &
|
||||||
! it, etc_tot, etc_1e, etc_2e, etc_3e, e_delta, tc_grad, er_DIIS, level_shift_tcscf, dim_DIIS, (t1-t0)/60.d0
|
! it, etc_tot, etc_1e, etc_2e, etc_3e, e_delta, tc_grad, er_DIIS, level_shift_tcscf, dim_DIIS, (t1-t0)/60.d0
|
||||||
write(6, '(I4,1X, F16.10,1X, F16.10,1X, F16.10,1X, F16.10,1X, F16.10,1X, F16.10,1X, F16.10,1X, I4,1X, F8.2)') &
|
write(6, '(I4,1X, F16.10,1X, F16.10,1X, F16.10,1X, F16.10,1X, F16.10,1X, F16.10,1X, F16.10,1X, I4,1X, F8.2)') &
|
||||||
it, etc_tot, etc_1e, etc_2e, etc_3e, e_delta, er_DIIS, level_shift_tcscf, dim_DIIS, (t1-t0)/60.d0
|
it, etc_tot, etc_1e, etc_2e, etc_3e, e_delta, er_DIIS, level_shift_tcscf, dim_DIIS, (t1-t0)/60.d0
|
||||||
|
|
||||||
|
|
||||||
|
! Write data in JSON file
|
||||||
|
|
||||||
|
call lock_io
|
||||||
|
if (it == 1) then
|
||||||
|
write(json_unit, json_dict_uopen_fmt)
|
||||||
|
else
|
||||||
|
write(json_unit, json_dict_close_uopen_fmt)
|
||||||
|
endif
|
||||||
|
write(json_unit, json_int_fmt) ' iteration ', it
|
||||||
|
write(json_unit, json_real_fmt) ' SCF TC Energy ', etc_tot
|
||||||
|
write(json_unit, json_real_fmt) ' E(1e) ', etc_1e
|
||||||
|
write(json_unit, json_real_fmt) ' E(2e) ', etc_2e
|
||||||
|
write(json_unit, json_real_fmt) ' E(3e) ', etc_3e
|
||||||
|
write(json_unit, json_real_fmt) ' delta Energy ', e_delta
|
||||||
|
write(json_unit, json_real_fmt) ' DIIS error ', er_DIIS
|
||||||
|
write(json_unit, json_real_fmt) ' level_shift ', level_shift_tcscf
|
||||||
|
write(json_unit, json_real_fmt) ' DIIS ', dim_DIIS
|
||||||
|
write(json_unit, json_real_fmt) ' Wall time (min)', (t1-t0)/60.d0
|
||||||
|
call unlock_io
|
||||||
|
|
||||||
if(er_delta .lt. 0.d0) then
|
if(er_delta .lt. 0.d0) then
|
||||||
call ezfio_set_tc_scf_bitc_energy(etc_tot)
|
call ezfio_set_tc_scf_bitc_energy(etc_tot)
|
||||||
call ezfio_set_bi_ortho_mos_mo_l_coef(mo_l_coef)
|
call ezfio_set_bi_ortho_mos_mo_l_coef(mo_l_coef)
|
||||||
call ezfio_set_bi_ortho_mos_mo_r_coef(mo_r_coef)
|
call ezfio_set_bi_ortho_mos_mo_r_coef(mo_r_coef)
|
||||||
|
write(json_unit, json_true_fmt) 'saved'
|
||||||
|
else
|
||||||
|
write(json_unit, json_false_fmt) 'saved'
|
||||||
endif
|
endif
|
||||||
|
call lock_io
|
||||||
|
|
||||||
|
if (converged) then
|
||||||
|
write(json_unit, json_true_fmtx) 'converged'
|
||||||
|
else
|
||||||
|
write(json_unit, json_false_fmtx) 'converged'
|
||||||
|
endif
|
||||||
|
call unlock_io
|
||||||
if(qp_stop()) exit
|
if(qp_stop()) exit
|
||||||
enddo
|
enddo
|
||||||
|
|
||||||
|
write(json_unit, json_dict_close_fmtx)
|
||||||
|
|
||||||
! ---
|
! ---
|
||||||
|
|
||||||
print *, ' TCSCF DIIS converged !'
|
print *, ' TCSCF DIIS converged !'
|
||||||
|
@ -8,6 +8,8 @@ program tc_scf
|
|||||||
|
|
||||||
implicit none
|
implicit none
|
||||||
|
|
||||||
|
write(json_unit,json_array_open_fmt) 'tc-scf'
|
||||||
|
|
||||||
print *, ' starting ...'
|
print *, ' starting ...'
|
||||||
|
|
||||||
my_grid_becke = .True.
|
my_grid_becke = .True.
|
||||||
@ -57,6 +59,8 @@ program tc_scf
|
|||||||
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
write(json_unit,json_array_close_fmtx)
|
||||||
|
call json_close
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user