10
0
mirror of https://github.com/QuantumPackage/qp2.git synced 2024-06-24 06:02:26 +02:00
QuantumPackage/src/tools/print_hamiltonian.irp.f
2020-07-10 14:07:53 -05:00

73 lines
1.4 KiB
Fortran

program print_hamiltonian
implicit none
BEGIN_DOC
! Prints the Hamiltonian matrix defined in the space of determinants
! present in the |EZFIO| directory.
END_DOC
! this has to be done in order to be sure that N_det, psi_det and
! psi_coef_sorted are the wave function stored in the |EZFIO| directory.
read_wf = .True.
touch read_wf
if (is_complex) then
call run_complex
else
call run
endif
end
subroutine run
implicit none
integer :: i, j
double precision :: hij
do j=1,N_det
do i=1,N_det
call i_H_j(psi_det(1,1,i), psi_det(1,1,j), N_int, hij)
if (dabs(hij) > 1.d-20) then
print *, i, j, hij
endif
enddo
enddo
end
subroutine run_complex
implicit none
integer :: i, j
complex*16 :: hij
double precision :: s2
print*,'i,j,Hij'
do j=1,N_det
do i=1,N_det
call i_h_j_complex(psi_det(1,1,i), psi_det(1,1,j), N_int, hij)
if (cdabs(hij) > 1.d-20) then
print *, i, j, dble(hij), dimag(hij)
endif
enddo
enddo
print*,'i,j,S2ij'
do j=1,N_det
do i=1,N_det
call get_s2(psi_det(1,1,i), psi_det(1,1,j), N_int, s2)
if (dabs(s2) > 1.d-20) then
print *, i, j, s2
endif
enddo
enddo
! use bitmasks
integer :: degree
print*,'i,j,degij'
do j=1,N_det
do i=1,N_det
call get_excitation_degree(psi_det(1,1,i), psi_det(1,1,j), degree, N_int)
if (degree.le.2) then
print *, i, j, degree
endif
enddo
enddo
end