From 605ee8018c0cda9f953606c86edf40ba175d725c Mon Sep 17 00:00:00 2001 From: Anthony Scemama Date: Thu, 26 May 2016 19:58:43 +0200 Subject: [PATCH] ZV estimator --- src/PROPERTIES/properties_energy.irp.f | 8 ++--- src/SAMPLING/pdmc_step.irp.f | 41 +++++++++++++------------- 2 files changed, 25 insertions(+), 24 deletions(-) diff --git a/src/PROPERTIES/properties_energy.irp.f b/src/PROPERTIES/properties_energy.irp.f index 07680e1..357b21d 100644 --- a/src/PROPERTIES/properties_energy.irp.f +++ b/src/PROPERTIES/properties_energy.irp.f @@ -264,15 +264,15 @@ BEGIN_PROVIDER [ double precision, E_loc ] END_PROVIDER -BEGIN_PROVIDER [ double precision, E_loc_zv, ((pdmc_n_diag+1)*2) ] +!BEGIN_PROVIDER [ double precision, E_loc_zv, ((pdmc_n_diag+1)*2) ] +BEGIN_PROVIDER [ double precision, E_loc_zv ] implicit none BEGIN_DOC ! Zero-variance parameter on E_loc END_DOC -! E_loc_zv(1) = E_loc + (E_trial-E_loc) * dmc_zv_weight_half -! E_loc_zv(2) = E_loc + (E_trial-E_loc) * dmc_zv_weight + E_loc_zv = E_loc + (E_trial-E_loc) * dmc_zv_weight ! E_loc_zv(3) = dmc_zv_weight_half - E_loc_zv(:) = 0.d0 +! E_loc_zv(:) = 0.d0 END_PROVIDER diff --git a/src/SAMPLING/pdmc_step.irp.f b/src/SAMPLING/pdmc_step.irp.f index 86e710f..c415ee2 100644 --- a/src/SAMPLING/pdmc_step.irp.f +++ b/src/SAMPLING/pdmc_step.irp.f @@ -185,10 +185,10 @@ END_SHELL endif TOUCH dmc_zv_weight dmc_zv_weight_half - do i=1,pdmc_n_diag+1 - E_loc_zv(i) = E_loc * pdmc_pop_weight_mult(i-1) * pdmc_weight(i_walk) * dmc_zv_weight + (E_trial-E_loc) * dmc_zv_weight - E_loc_zv(i+pdmc_n_diag+1) = pdmc_pop_weight_mult(i-1) * pdmc_weight(i_walk) * dmc_zv_weight - enddo +! do i=1,pdmc_n_diag+1 +! E_loc_zv(i) = E_loc * pdmc_pop_weight_mult(i-1) * pdmc_weight(i_walk) * dmc_zv_weight + (E_trial-E_loc) * dmc_zv_weight +! E_loc_zv(i+pdmc_n_diag+1) = pdmc_pop_weight_mult(i-1) * pdmc_weight(i_walk) * dmc_zv_weight +! enddo BEGIN_SHELL [ /usr/bin/python ] from properties import * @@ -304,22 +304,23 @@ for p in properties: print t.replace("$X",p[1]) END_SHELL - H = 0.d0 - H(0,0) = E_loc_zv_pdmc_block_walk(1) - H(1,0) = E_loc_zv_pdmc_block_walk(3) - H(0,1) = E_loc_zv_pdmc_block_walk(3) - H(1,1) = E_loc_zv_pdmc_block_walk(5) - - S = 0.d0 - S(0,0) = E_loc_zv_pdmc_block_walk(6) - S(1,0) = E_loc_zv_pdmc_block_walk(8) - S(0,1) = E_loc_zv_pdmc_block_walk(8) - S(1,1) = E_loc_zv_pdmc_block_walk(10) - S(2,2) = 1.d0 - - call dsygv(1, 'N', 'U', pdmc_n_diag/2+1, H, pdmc_n_diag/2+1, S, pdmc_n_diag/2+1, w, work, 3*(pdmc_n_diag+1), info) - E_loc_zv_diag_pdmc_block_walk = w(0) - +! H(0,0) = H(3,3) +! H(1,0) = H(4,3) +! H(0,1) = H(3,4) +! H(1,1) = H(4,4) +! S(0,0) = S(3,3) +! S(1,0) = S(4,3) +! S(0,1) = S(3,4) +! S(1,1) = S(4,4) +! +! print *, H(0,0)/S(0,0) +! print *, H(1,1)/S(1,1) +! print *, '' +! +! call dsygv(1, 'N', 'U', pdmc_n_diag/2+1, H, pdmc_n_diag/2+1, S, pdmc_n_diag/2+1, w, work, 3*(pdmc_n_diag+1), info) +! call dsygv(1, 'N', 'U', 2, H, pdmc_n_diag/2+1, S, pdmc_n_diag/2+1, w, work, 3*(pdmc_n_diag+1), info) +! E_loc_zv_diag_pdmc_block_walk = w(0) +! print *, w deallocate ( elec_coord_tmp, psi_grad_psi_inv_save, psi_grad_psi_inv_save_tmp )