mirror of
https://gitlab.com/scemama/qmcchem.git
synced 2025-03-25 10:06:32 +01:00
72 lines
1.6 KiB
Fortran
72 lines
1.6 KiB
Fortran
! Providers of *_block_walk
|
|
!==============================
|
|
BEGIN_SHELL [ /usr/bin/env python2 ]
|
|
from properties import *
|
|
|
|
t = """
|
|
BEGIN_PROVIDER [ $T, $X_block_walk $D1 ]
|
|
&BEGIN_PROVIDER [ $T, $X_2_block_walk $D1 ]
|
|
implicit none
|
|
include '../types.F'
|
|
BEGIN_DOC
|
|
! Properties averaged over the block per walker
|
|
END_DOC
|
|
|
|
if (qmc_method == t_VMC) then
|
|
PROVIDE E_loc_vmc_block_walk
|
|
if (calc_$X) then
|
|
$X_block_walk = $X_vmc_block_walk
|
|
$X_2_block_walk = $X_2_vmc_block_walk
|
|
endif
|
|
else if (qmc_method == t_DMC) then
|
|
PROVIDE E_loc_dmc_block_walk
|
|
if (calc_$X) then
|
|
$X_block_walk = $X_dmc_block_walk
|
|
$X_2_block_walk = $X_2_dmc_block_walk
|
|
endif
|
|
else if (qmc_method == t_SRMC) then
|
|
PROVIDE E_loc_srmc_block_walk
|
|
if (calc_$X) then
|
|
$X_block_walk = $X_srmc_block_walk
|
|
$X_2_block_walk = $X_2_srmc_block_walk
|
|
endif
|
|
else if (qmc_method == t_PDMC) then
|
|
PROVIDE E_loc_pdmc_block_walk
|
|
if (calc_$X) then
|
|
$X_block_walk = $X_pdmc_block_walk
|
|
$X_2_block_walk = $X_2_pdmc_block_walk
|
|
endif
|
|
else if (qmc_method == t_FKMC) then
|
|
PROVIDE E_loc_fkmc_block_walk
|
|
if (calc_$X) then
|
|
$X_block_walk = $X_fkmc_block_walk
|
|
$X_2_block_walk = $X_2_fkmc_block_walk
|
|
endif
|
|
endif
|
|
|
|
END_PROVIDER
|
|
"""
|
|
|
|
for p in properties:
|
|
if p[2] == "":
|
|
D1 = ""
|
|
else:
|
|
D1 = ", ("+p[2][1:-1]+")"
|
|
print t.replace("$X",p[1]).replace("$T",p[0]).replace("$D1",D1)
|
|
END_SHELL
|
|
|
|
|
|
|
|
|
|
BEGIN_PROVIDER [ double precision, block_weight ]
|
|
implicit none
|
|
include '../types.F'
|
|
BEGIN_DOC
|
|
! Weight of the current block in the full average of the simulation
|
|
END_DOC
|
|
integer :: i
|
|
block_weight = 0.d0
|
|
END_PROVIDER
|
|
|
|
|