From 7fb1132b8652c9d50e112ad002d3a31f1989be2f Mon Sep 17 00:00:00 2001 From: Emmanuel Giner Date: Fri, 24 Mar 2017 22:49:59 +0100 Subject: [PATCH] strange things in MRPT --- plugins/MRPT_Utils/ezfio_interface.irp.f | 42 ++++++++++++++++++++++++ plugins/MRPT_Utils/mrpt_utils.irp.f | 22 ++++++++++--- 2 files changed, 59 insertions(+), 5 deletions(-) create mode 100644 plugins/MRPT_Utils/ezfio_interface.irp.f diff --git a/plugins/MRPT_Utils/ezfio_interface.irp.f b/plugins/MRPT_Utils/ezfio_interface.irp.f new file mode 100644 index 00000000..9d2305b6 --- /dev/null +++ b/plugins/MRPT_Utils/ezfio_interface.irp.f @@ -0,0 +1,42 @@ +! DO NOT MODIFY BY HAND +! Created by $QP_ROOT/scripts/ezfio_interface/ei_handler.py +! from file /home/giner/qp_fork/quantum_package/src/MRPT_Utils/EZFIO.cfg + + +BEGIN_PROVIDER [ logical, do_third_order_1h1p ] + implicit none + BEGIN_DOC +! If true, compute the third order contribution for the 1h1p + END_DOC + + logical :: has + PROVIDE ezfio_filename + + call ezfio_has_mrpt_utils_do_third_order_1h1p(has) + if (has) then + call ezfio_get_mrpt_utils_do_third_order_1h1p(do_third_order_1h1p) + else + print *, 'mrpt_utils/do_third_order_1h1p not found in EZFIO file' + stop 1 + endif + +END_PROVIDER + +BEGIN_PROVIDER [ logical, save_heff_eigenvectors ] + implicit none + BEGIN_DOC +! If true, save the eigenvectors of the dressed matrix at the end of the MRPT calculation + END_DOC + + logical :: has + PROVIDE ezfio_filename + + call ezfio_has_mrpt_utils_save_heff_eigenvectors(has) + if (has) then + call ezfio_get_mrpt_utils_save_heff_eigenvectors(save_heff_eigenvectors) + else + print *, 'mrpt_utils/save_heff_eigenvectors not found in EZFIO file' + stop 1 + endif + +END_PROVIDER diff --git a/plugins/MRPT_Utils/mrpt_utils.irp.f b/plugins/MRPT_Utils/mrpt_utils.irp.f index 2a424c55..5ef9516b 100644 --- a/plugins/MRPT_Utils/mrpt_utils.irp.f +++ b/plugins/MRPT_Utils/mrpt_utils.irp.f @@ -34,11 +34,13 @@ accu(i_state) += delta_ij_tmp(j,i,i_state) * psi_coef(i,i_state) * psi_coef(j,i_state) delta_ij(j,i,i_state) += delta_ij_tmp(j,i,i_state) enddo + write(*,'(1000(F16.10,x))')delta_ij_tmp(i,:,:) enddo second_order_pt_new_1h(i_state) = accu(i_state) enddo print*, '1h = ',accu + stop ! 1p delta_ij_tmp = 0.d0 call H_apply_mrpt_1p(delta_ij_tmp,N_det) @@ -49,6 +51,7 @@ accu(i_state) += delta_ij_tmp(j,i,i_state) * psi_coef(i,i_state) * psi_coef(j,i_state) delta_ij(j,i,i_state) += delta_ij_tmp(j,i,i_state) enddo + write(*,'(1000(F16.10,x))')delta_ij_tmp(i,:,:) enddo second_order_pt_new_1p(i_state) = accu(i_state) enddo @@ -67,6 +70,7 @@ accu(i_state) += delta_ij_tmp(j,i,i_state) * psi_coef(i,i_state) * psi_coef(j,i_state) delta_ij(j,i,i_state) += delta_ij_tmp(j,i,i_state) enddo + write(*,'(1000(F16.10,x))')delta_ij_tmp(i,:,:) enddo second_order_pt_new_1h1p(i_state) = accu(i_state) enddo @@ -83,6 +87,7 @@ accu(i_state) += delta_ij_tmp(j,i,i_state) * psi_coef(i,i_state) * psi_coef(j,i_state) delta_ij(j,i,i_state) += delta_ij_tmp(j,i,i_state) enddo + write(*,'(1000(F16.10,x))')delta_ij_tmp(i,:,:) enddo second_order_pt_new_1h1p(i_state) = accu(i_state) enddo @@ -99,6 +104,7 @@ accu(i_state) += delta_ij_tmp(j,i,i_state) * psi_coef(i,i_state) * psi_coef(j,i_state) delta_ij(j,i,i_state) += delta_ij_tmp(j,i,i_state) enddo + write(*,'(1000(F16.10,x))')delta_ij_tmp(i,:,:) enddo second_order_pt_new_2h(i_state) = accu(i_state) enddo @@ -114,6 +120,7 @@ accu(i_state) += delta_ij_tmp(j,i,i_state) * psi_coef(i,i_state) * psi_coef(j,i_state) delta_ij(j,i,i_state) += delta_ij_tmp(j,i,i_state) enddo + write(*,'(1000(F16.10,x))')delta_ij_tmp(i,:,:) enddo second_order_pt_new_2p(i_state) = accu(i_state) enddo @@ -130,6 +137,7 @@ accu(i_state) += delta_ij_tmp(j,i,i_state) * psi_coef(i,i_state) * psi_coef(j,i_state) delta_ij(j,i,i_state) += delta_ij_tmp(j,i,i_state) enddo + write(*,'(1000(F16.10,x))')delta_ij_tmp(i,:,:) enddo second_order_pt_new_1h2p(i_state) = accu(i_state) enddo @@ -146,6 +154,7 @@ accu(i_state) += delta_ij_tmp(j,i,i_state) * psi_coef(i,i_state) * psi_coef(j,i_state) delta_ij(j,i,i_state) += delta_ij_tmp(j,i,i_state) enddo + write(*,'(1000(F16.10,x))')delta_ij_tmp(i,:,:) enddo second_order_pt_new_2h1p(i_state) = accu(i_state) enddo @@ -178,6 +187,9 @@ ! total + print*, '' + print*, 'total dressing' + print*, '' accu = 0.d0 do i_state = 1, N_states do i = 1, N_det @@ -245,11 +257,11 @@ END_PROVIDER integer, allocatable :: iorder(:) ! Guess values for the "N_states_diag" states of the CI_dressed_pt2_new_eigenvectors -! do j=1,min(N_states_diag,N_det) -! do i=1,N_det -! CI_dressed_pt2_new_eigenvectors(i,j) = psi_coef(i,j) -! enddo -! enddo + do j=1,min(N_states,N_det) + do i=1,N_det + CI_dressed_pt2_new_eigenvectors(i,j) = psi_coef(i,j) + enddo + enddo do j=N_det+1,N_states_diag do i=1,N_det