2017-01-16 18:51:01 +01:00
|
|
|
program pt2_stoch
|
|
|
|
implicit none
|
|
|
|
read_wf = .True.
|
2017-04-12 15:05:48 +02:00
|
|
|
SOFT_TOUCH read_wf
|
2017-01-16 18:51:01 +01:00
|
|
|
PROVIDE mo_bielec_integrals_in_map
|
|
|
|
call run
|
|
|
|
end
|
|
|
|
|
|
|
|
subroutine run
|
|
|
|
implicit none
|
|
|
|
integer :: i,j,k
|
|
|
|
logical, external :: detEq
|
|
|
|
|
|
|
|
double precision, allocatable :: pt2(:)
|
|
|
|
integer :: degree
|
|
|
|
integer :: n_det_before, to_select
|
|
|
|
double precision :: threshold_davidson_in
|
|
|
|
|
2017-10-27 12:20:00 +02:00
|
|
|
double precision :: E_CI_before, relative_error, absolute_error, eqt
|
2017-01-16 18:51:01 +01:00
|
|
|
|
|
|
|
allocate (pt2(N_states))
|
2018-03-15 17:47:32 +01:00
|
|
|
call diagonalize_CI()
|
2017-03-13 00:26:21 +01:00
|
|
|
pt2 = 0.d0
|
2017-01-16 18:51:01 +01:00
|
|
|
|
2017-04-12 19:50:56 +02:00
|
|
|
E_CI_before = pt2_E0_denominator(1) + nuclear_repulsion
|
2017-01-16 18:51:01 +01:00
|
|
|
threshold_selectors = 1.d0
|
|
|
|
threshold_generators = 1d0
|
2017-10-27 12:20:00 +02:00
|
|
|
relative_error = 1.d-9
|
|
|
|
absolute_error = 1.d-9
|
|
|
|
call ZMQ_pt2(E_CI_before, pt2, relative_error, absolute_error, eqt)
|
2017-01-16 18:51:01 +01:00
|
|
|
print *, 'Final step'
|
|
|
|
print *, 'N_det = ', N_det
|
2017-04-12 15:11:47 +02:00
|
|
|
print *, 'PT2 = ', pt2
|
|
|
|
print *, 'E = ', E_CI_before
|
2017-10-27 12:20:00 +02:00
|
|
|
print *, 'E+PT2 = ', E_CI_before+pt2, ' +/- ', eqt
|
2017-04-12 15:11:47 +02:00
|
|
|
print *, '-----'
|
|
|
|
call ezfio_set_full_ci_zmq_energy_pt2(E_CI_before+pt2(1))
|
2017-01-16 18:51:01 +01:00
|
|
|
end
|
|
|
|
|
|
|
|
|