inconsistency? in the susceptibilities analyzed in cov_tau.F90
In the analysis program cov_tau.F90
, when PartHole
is defined, the program does a "symmetrization" around Lt/2.
In particular, here Lt_eff
is defined to be ~Lt/2:
#ifdef PartHole
if (mod(Lt-1,2) == 0 ) then
Lt_eff = (Lt -1 ) /2 + 1
else
Lt_eff = Lt/2
endif
Then here the program stores in the ```bins`` array the "symmetrized" correlations:
bins(n,nt,nb-n_skip) = bins(n,nt,nb-n_skip) + &
& ( OneBin(nt,no,no) + OneBin(Lt - nt + 1,no,no) ) / cmplx(2.d0,0.d0,Kind(0.d0))
The code immediately below computes the susceptibility by integrating in time with the trapezoidal rule:
Z = cmplx(0.d0,0.d0,kind(0.d0))
Do nt = 1,Lt_eff -1
do no = 1,Norb
do no1 = 1,Norb
Z = Z + cmplx(0.5d0,0.d0,Kind(0.d0)) * ( OneBin(nt,no,no1) + Onebin(nt+1,no,no1) )
enddo
enddo
enddo
#ifdef PartHole
Z = Z*cmplx(2.d0,0.d0,Kind(0.d0))
#endif
Bins_chi(N,Nb-n_skip) = Z
The integration is done only up to Lt_eff (that is ~Lt/2), and then chi is correctly normalized by a factor 2.
However, what I find inconsistent, is that the integration is done using the unsymmetrized data OneBin
. In this way, practically, chi is computed discarding the data in the time interval [Lt/2, Lt].
I think the consistent way to compute chi should rather use the symmetrized bins
data, as:
Z = Z + cmplx(0.5d0,0.d0,Kind(0.d0)) * ( OneBin(nt,no,no1) + Onebin(nt+1,no,no1) )
Notice also that, below in the code, the symmetrized data bins
is used to compute with jackknife the time-correlations at a given momentum.