2023-02-07 17:07:49 +01:00
|
|
|
|
2023-09-16 00:28:18 +02:00
|
|
|
! ---
|
|
|
|
|
|
|
|
BEGIN_PROVIDER [double precision, htilde_matrix_elmt_bi_ortho, (N_det,N_det)]
|
2023-02-07 17:07:49 +01:00
|
|
|
|
|
|
|
BEGIN_DOC
|
2023-09-16 00:28:18 +02:00
|
|
|
!
|
2023-02-07 17:07:49 +01:00
|
|
|
! htilde_matrix_elmt_bi_ortho(j,i) = <J| H^tilde |I>
|
|
|
|
!
|
|
|
|
! WARNING !!!!!!!!! IT IS NOT HERMITIAN !!!!!!!!!
|
2023-09-16 00:28:18 +02:00
|
|
|
!
|
2023-02-07 17:07:49 +01:00
|
|
|
END_DOC
|
|
|
|
|
|
|
|
implicit none
|
|
|
|
integer :: i, j
|
2024-03-01 13:37:46 +01:00
|
|
|
double precision :: t1, t2
|
2023-05-22 11:52:16 +02:00
|
|
|
double precision :: htot
|
2024-03-01 13:37:46 +01:00
|
|
|
|
|
|
|
PROVIDE N_int
|
|
|
|
PROVIDE psi_det
|
|
|
|
PROVIDE three_e_3_idx_term
|
|
|
|
|
|
|
|
if(noL_standard) then
|
|
|
|
PROVIDE noL_0e
|
|
|
|
PROVIDE noL_1e
|
|
|
|
PROVIDE noL_2e
|
|
|
|
endif
|
|
|
|
|
|
|
|
print *, ' PROVIDING htilde_matrix_elmt_bi_ortho ...'
|
|
|
|
call wall_time(t1)
|
2023-02-07 17:07:49 +01:00
|
|
|
|
2024-03-01 13:37:46 +01:00
|
|
|
call provide_all_three_ints_bi_ortho()
|
2023-04-01 22:05:34 +02:00
|
|
|
|
|
|
|
i = 1
|
|
|
|
j = 1
|
2023-05-22 11:52:16 +02:00
|
|
|
call htilde_mu_mat_opt_bi_ortho_tot(psi_det(1,1,j), psi_det(1,1,i), N_int, htot)
|
2023-04-01 22:05:34 +02:00
|
|
|
|
2024-03-01 13:37:46 +01:00
|
|
|
|
|
|
|
!$OMP PARALLEL &
|
|
|
|
!$OMP DEFAULT(NONE) &
|
|
|
|
!$OMP PRIVATE(i, j, htot) &
|
2023-09-16 00:28:18 +02:00
|
|
|
!$OMP SHARED (N_det, psi_det, N_int, htilde_matrix_elmt_bi_ortho)
|
2024-03-01 13:37:46 +01:00
|
|
|
!$OMP DO
|
2023-09-16 00:28:18 +02:00
|
|
|
do i = 1, N_det
|
|
|
|
do j = 1, N_det
|
|
|
|
! < J |Htilde | I >
|
|
|
|
call htilde_mu_mat_opt_bi_ortho_tot(psi_det(1,1,j), psi_det(1,1,i), N_int, htot)
|
2023-02-07 17:07:49 +01:00
|
|
|
|
2023-09-16 00:28:18 +02:00
|
|
|
htilde_matrix_elmt_bi_ortho(j,i) = htot
|
2023-02-07 17:07:49 +01:00
|
|
|
enddo
|
2023-09-16 00:28:18 +02:00
|
|
|
enddo
|
2024-03-01 13:37:46 +01:00
|
|
|
!$OMP END DO
|
|
|
|
!$OMP END PARALLEL
|
|
|
|
|
|
|
|
call wall_time(t2)
|
|
|
|
print *, ' wall time for htilde_matrix_elmt_bi_ortho (min) =', (t2-t1)/60.d0
|
2023-02-07 17:07:49 +01:00
|
|
|
|
|
|
|
END_PROVIDER
|
|
|
|
|
2023-07-02 21:49:25 +02:00
|
|
|
! ---
|
|
|
|
|
|
|
|
BEGIN_PROVIDER [double precision, htilde_matrix_elmt_bi_ortho_tranp, (N_det,N_det)]
|
2023-09-16 00:28:18 +02:00
|
|
|
|
|
|
|
implicit none
|
|
|
|
integer ::i,j
|
|
|
|
|
2023-02-07 17:07:49 +01:00
|
|
|
do i = 1, N_det
|
|
|
|
do j = 1, N_det
|
|
|
|
htilde_matrix_elmt_bi_ortho_tranp(j,i) = htilde_matrix_elmt_bi_ortho(i,j)
|
|
|
|
enddo
|
|
|
|
enddo
|
|
|
|
END_PROVIDER
|
2023-09-16 00:28:18 +02:00
|
|
|
|
|
|
|
! ---
|
|
|
|
|