9
1
mirror of https://github.com/QuantumPackage/qp2.git synced 2024-11-07 14:03:37 +01:00
This commit is contained in:
Kevin Gasperich 2020-08-07 16:47:36 -05:00
parent 5c821e525d
commit 5636fdc60d
2 changed files with 14 additions and 9 deletions

Binary file not shown.

View File

@ -8,6 +8,7 @@ program print_energy
! psi_coef_sorted are the wave function stored in the |EZFIO| directory. ! psi_coef_sorted are the wave function stored in the |EZFIO| directory.
read_wf = .True. read_wf = .True.
touch read_wf touch read_wf
PROVIDE N_states
if (is_complex) then if (is_complex) then
call run_complex call run_complex
else else
@ -17,18 +18,20 @@ end
subroutine run subroutine run
implicit none implicit none
integer :: i integer :: i,j
double precision :: i_H_psi_array(N_states) double precision :: i_H_psi_array(N_states)
double precision :: E(N_states) double precision :: E(N_states)
double precision :: norm(N_states) double precision :: norm(N_states)
E(:) = nuclear_repulsion E(1:N_states) = nuclear_repulsion
norm(:) = 0.d0 norm(1:N_states) = 0.d0
do i=1,N_det do i=1,N_det
call i_H_psi(psi_det(1,1,i), psi_det, psi_coef, N_int, N_det, & call i_H_psi(psi_det(1,1,i), psi_det, psi_coef, N_int, N_det, &
size(psi_coef,1), N_states, i_H_psi_array) size(psi_coef,1), N_states, i_H_psi_array)
norm(:) += psi_coef(i,:)**2 do j=1,N_states
E(:) += i_H_psi_array(:) * psi_coef(i,:) norm(j) += psi_coef(i,j)*psi_coef(i,j)
E(j) += i_H_psi_array(j) * psi_coef(i,j)
enddo
enddo enddo
print *, 'Energy:' print *, 'Energy:'
@ -44,13 +47,15 @@ subroutine run_complex
double precision :: e(n_states) double precision :: e(n_states)
double precision :: norm(n_states) double precision :: norm(n_states)
e(:) = nuclear_repulsion e(1:n_states) = nuclear_repulsion
norm(:) = 0.d0 norm(1:n_states) = 0.d0
do i=1,n_det do i=1,n_det
call i_H_psi_complex(psi_det(1,1,i), psi_det, psi_coef_complex, N_int, N_det, & call i_H_psi_complex(psi_det(1,1,i), psi_det, psi_coef_complex, N_int, N_det, &
size(psi_coef_complex,1), N_states, i_H_psi_array) size(psi_coef_complex,1), N_states, i_H_psi_array)
norm(:) += cdabs(psi_coef_complex(i,:))**2 do j=1,n_states
E(:) += dble(i_h_psi_array(:) * dconjg(psi_coef_complex(i,:))) norm(j) += cdabs(psi_coef_complex(i,j))**2
E(j) += dble(i_h_psi_array(j) * dconjg(psi_coef_complex(i,j)))
enddo
enddo enddo
print *, 'Energy:' print *, 'Energy:'