10
1
mirror of https://gitlab.com/scemama/qmcchem.git synced 2024-12-22 12:23:30 +01:00

ZV estimator

This commit is contained in:
Anthony Scemama 2016-05-26 19:58:43 +02:00
parent 09bf6140c8
commit 605ee8018c
2 changed files with 25 additions and 24 deletions

View File

@ -264,15 +264,15 @@ BEGIN_PROVIDER [ double precision, E_loc ]
END_PROVIDER 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 implicit none
BEGIN_DOC BEGIN_DOC
! Zero-variance parameter on E_loc ! Zero-variance parameter on E_loc
END_DOC END_DOC
! E_loc_zv(1) = E_loc + (E_trial-E_loc) * dmc_zv_weight_half E_loc_zv = E_loc + (E_trial-E_loc) * dmc_zv_weight
! E_loc_zv(2) = E_loc + (E_trial-E_loc) * dmc_zv_weight
! E_loc_zv(3) = dmc_zv_weight_half ! E_loc_zv(3) = dmc_zv_weight_half
E_loc_zv(:) = 0.d0 ! E_loc_zv(:) = 0.d0
END_PROVIDER END_PROVIDER

View File

@ -185,10 +185,10 @@ END_SHELL
endif endif
TOUCH dmc_zv_weight dmc_zv_weight_half TOUCH dmc_zv_weight dmc_zv_weight_half
do i=1,pdmc_n_diag+1 ! 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) = 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 ! E_loc_zv(i+pdmc_n_diag+1) = pdmc_pop_weight_mult(i-1) * pdmc_weight(i_walk) * dmc_zv_weight
enddo ! enddo
BEGIN_SHELL [ /usr/bin/python ] BEGIN_SHELL [ /usr/bin/python ]
from properties import * from properties import *
@ -304,22 +304,23 @@ for p in properties:
print t.replace("$X",p[1]) print t.replace("$X",p[1])
END_SHELL END_SHELL
H = 0.d0 ! H(0,0) = H(3,3)
H(0,0) = E_loc_zv_pdmc_block_walk(1) ! H(1,0) = H(4,3)
H(1,0) = E_loc_zv_pdmc_block_walk(3) ! H(0,1) = H(3,4)
H(0,1) = E_loc_zv_pdmc_block_walk(3) ! H(1,1) = H(4,4)
H(1,1) = E_loc_zv_pdmc_block_walk(5) ! S(0,0) = S(3,3)
! S(1,0) = S(4,3)
S = 0.d0 ! S(0,1) = S(3,4)
S(0,0) = E_loc_zv_pdmc_block_walk(6) ! S(1,1) = S(4,4)
S(1,0) = E_loc_zv_pdmc_block_walk(8) !
S(0,1) = E_loc_zv_pdmc_block_walk(8) ! print *, H(0,0)/S(0,0)
S(1,1) = E_loc_zv_pdmc_block_walk(10) ! print *, H(1,1)/S(1,1)
S(2,2) = 1.d0 ! 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', 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) ! 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 ) deallocate ( elec_coord_tmp, psi_grad_psi_inv_save, psi_grad_psi_inv_save_tmp )