Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[WIP] Heavy mesons onlinemeas #570

Open
wants to merge 58 commits into
base: master
Choose a base branch
from
Open
Changes from 1 commit
Commits
Show all changes
58 commits
Select commit Hold shift + click to select a range
a3ebafc
input file parameter for heavy meson correlators
simone-romiti May 23, 2023
a4f19a3
light correlators use that mu==md, need for 2 separate functions
simone-romiti May 23, 2023
6d12f79
code skeleton for the onlinemeas of the heavy mesons correlators
simone-romiti Jun 13, 2023
558dd27
first draft version: computing only one correlator for now
simone-romiti Jun 13, 2023
f11e8da
minor changes
simone-romiti Jun 13, 2023
20081dc
initialization of sources and propagator spinores + inversion + even-…
simone-romiti Jun 16, 2023
c80b84b
heavy_correlators_measurement() should be the same as light_correlato…
simone-romiti Jun 16, 2023
ff9bdda
fixed compilation errors
simone-romiti Jun 20, 2023
89674c3
name of function `mul_one_pm_itau2()` is misleading --> it also divid…
simone-romiti Jun 20, 2023
92cf6cf
some documentation for mul_one_pm_itau2_and_div_by_sqrt2()
simone-romiti Jun 20, 2023
df58ec7
todo: check if the handwritten derivation is correct and implement
simone-romiti Jun 20, 2023
02d89c0
documentation on the theoretical form of heavy meson correlators
simone-romiti Jun 27, 2023
c10659c
implementing. next: express correlator using _spinor_prod_re() or _sp…
simone-romiti Jun 27, 2023
1cfb721
contruction of correlators and MPI parallelization.
simone-romiti Jun 28, 2023
46a95f8
typo + writing correlators to file
simone-romiti Jun 28, 2023
1a646b5
fixed some typos
simone-romiti Jul 1, 2023
259019c
is the correlator =0 for i!=j ???
simone-romiti Jul 4, 2023
9d8b489
updated documentation
simone-romiti Jul 6, 2023
87da538
typo
simone-romiti Jul 6, 2023
bbb6c5a
minor comment
simone-romiti Jul 6, 2023
c02db24
outputting to file: appending correlators
simone-romiti Jul 18, 2023
3f57f5b
MPI reduce and gather for bulding correlator C(t)
simone-romiti Jul 18, 2023
159bf49
C(t) volume average over spinor scalar products
simone-romiti Jul 18, 2023
00d9cdc
todo: add gamma_5*Gamma_2 case condition for the light spinor
simone-romiti Jul 18, 2023
0c6a6bc
solved theoretical doubts on the correlator with spin dilution
simone-romiti Jul 26, 2023
a4c1760
code now conceptually true --> debug
simone-romiti Jul 26, 2023
ceecbf9
fixed compile-time bugs
simone-romiti Jul 26, 2023
a012365
small typo
simone-romiti Jul 26, 2023
b127a7e
added a note: testing invert_doublet_eo_quda
simone-romiti Oct 4, 2023
9a9a689
debugging
simone-romiti Dec 7, 2023
ce867bc
still debugging
simone-romiti Jan 5, 2024
9ce7734
probably solved the issue with allocarion of spinor arrays
simone-romiti Jan 5, 2024
5c873a9
making progress: no memory leaks if commenting the 2 lines of the inv…
simone-romiti Jan 8, 2024
abbf92c
some issues when going to the next configuration (even without actual…
simone-romiti Jan 8, 2024
5cf9374
inversions working but the now output contains a bunch of "inf"
simone-romiti Jan 10, 2024
e9447be
solved previous issue: some MPI reduction variables were not properly…
simone-romiti Jan 16, 2024
59f64e7
small typo
simone-romiti Jan 22, 2024
5a5eefd
Merge branch 'heavy_mesons_onlinemeas' of github.com:etmc/tmLQCD into…
simone-romiti Jan 22, 2024
e2d1cea
documentation for ndd correlators: simpler notation
simone-romiti Jan 23, 2024
3d93a01
minor changes
simone-romiti Jan 23, 2024
500705e
typo in doc for ndd_correlators
simone-romiti Jan 23, 2024
44f3ff0
Merge branch 'heavy_mesons_onlinemeas_gamma5herm' of https://github.c…
simone-romiti Jan 23, 2024
7608a7e
documentation for ndd correlators: simpler notation
simone-romiti Jan 23, 2024
f9eb405
minor changes
simone-romiti Jan 23, 2024
cd605f7
typo in doc for ndd_correlators
simone-romiti Jan 23, 2024
88a7891
Merge branch 'heavy_mesons_onlinemeas_gamma5herm' of https://github.c…
simone-romiti Jan 23, 2024
f7a94a3
applied formula in the documentation for ndd_correlators
simone-romiti Jan 23, 2024
13db981
fixed typo
simone-romiti Jan 23, 2024
29086ea
minor change to the ndd documentation
simone-romiti Jan 24, 2024
142b152
no need for the sources when building the correlator
simone-romiti Jan 26, 2024
49cb20a
Merge branch 'heavy_mesons_onlinemeas_gamma5herm' of https://github.c…
simone-romiti Jan 26, 2024
3926b02
updated documentation for ndd correlators
simone-romiti Jan 26, 2024
d4e5b50
Merge branch 'heavy_mesons_onlinemeas_gamma5herm' of github.com:etmc/…
simone-romiti Jan 26, 2024
56dd812
small typo only for correlator at t=0
simone-romiti Apr 9, 2024
4b5e0cd
typo: =+ instead of +=
simone-romiti Apr 10, 2024
ecdfdd5
Merge pull request #614 from etmc/heavy_mesons_onlinemeas_gamma5herm
simone-romiti Sep 25, 2024
911987c
Merge branch 'master' into heavy_mesons_onlinemeas
Marcogarofalo Sep 27, 2024
c713145
volume average for heavy correlators
Marcogarofalo Sep 27, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
C(t) volume average over spinor scalar products
simone-romiti committed Jul 18, 2023

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
commit 159bf49ddd746f1960b2ad290c3206092b1a6d4e
54 changes: 25 additions & 29 deletions meas/correlators.c
Original file line number Diff line number Diff line change
@@ -546,9 +546,9 @@ void heavy_correlators_measurement(const int traj, const int id, const int ieo,
}
}

// (no even-odd): source+propagator, doublet, spin dilution index, even-odd, flavor, position (+ Dirac, color)
// (psi[i_sp][phi][beta][f][x])[alpha][c] // last 3 indices are proper of the spinor struct
spinor *****arr_spinor = (spinor *****) callocMultiDimensional({2,2,4,2,VOLUME}, 5, sizeof(spinor));
// (no even-odd): source+propagator, doublet, spin dilution index, flavor proj, flavor index, position (+ Dirac, color)
// (psi[i_sp][d][beta][F][f][x])[alpha][c] // last 3 indices are proper of the spinor struct
spinor ******arr_spinor = (spinor ******) callocMultiDimensional({2,2,4,2,2,VOLUME}, 6, sizeof(spinor));

// now we switch from even-odd representation to standard
for (size_t i_sp = 0; i_sp < 2; i_sp++) { // source or sink
@@ -581,40 +581,36 @@ void heavy_correlators_measurement(const int traj, const int id, const int ieo,
for (i = j; i < j + LX * LY * LZ; i++) {
// light correlators
for (size_t beta = 0; beta < 4; beta++) { // spin dilution
double sign = 1.0; // the light source sould be multiplied by gamma_5
if(beta >= 2){
double sign = 1.0; // the light source sould be multiplied by gamma_5
if (beta >= 2) {
sign = -1.0;
}
res += sign*_spinor_prod_re(arr_spinor[1][0][beta][0][i], arr_spinor[1][0][beta][0][i]);
res +=
sign * _spinor_prod_re(arr_spinor[1][0][beta][0][i], arr_spinor[1][0][beta][0][i]);
_gamma0(phi, arr_spinor[1][0][beta][0][i]);
respa += sign*_spinor_prod_re(arr_spinor[1][0][beta][0][i], phi);
respa += sign * _spinor_prod_re(arr_spinor[1][0][beta][0][i], phi);
_gamma5(phi, phi);
resp4 += sign*_spinor_prod_im(arr_spinor[1][0][beta][0][i], phi);
resp4 += sign * _spinor_prod_im(arr_spinor[1][0][beta][0][i], phi);
}

for (size_t i_f = 0; i_f < 2; i_f++) {
for (size_t j_f = 0; j_f < 2; j_f++) {
for (size_t g1 = 0; g1 < 2; g1++) {
for (size_t g2 = 0; g2 < 2; g2++) {
for (size_t beta1 = 0; beta1 < 4; beta1++) {
for (size_t beta2 = 0; beta2 < 4; beta2++) {
double dum1, dum2 = 0.0, 0.0; // dummy variables

// 1st contribution
phi = arr_spinor[1][1][beta_2][i_f][i];
if (Gamma_1 == 1) { // Gamma_1 = 1
const int f0 = 0; // flavor index of the up
for (size_t F = 0; F < 4; F++) { // flavor projection
for (size_t beta = 0; beta < 4; beta++) { // spin dilution
spinor psi_u = arr_spinor[1][0][beta][f0][f0][i];
for (size_t hi = 0; hi < 2; hi++) {
for (size_t hj = 0; hj < 2; hj++) {
for (size_t g1 = 0; g1 < 2; g1++) {
for (size_t g2 = 0; g2 < 2; g2++) {
double dum = 0.0; // dummy variable

// heavy doublet spinor propagator
phi = arr_spinor[1][1][beta][hj][hi][i];
if (g1 == 1) { // Gamma_1 = 1
_gamma5(phi, phi);
}
_spinor_scalar_prod(dum1, arr_spinor[0][0][beta_1][1 - i_f][i], phi);
_spinor_scalar_prod(dum, psi_u, phi);

// 2nd contribution
phi = arr_spinor[1][0][beta_1][1 - j_f][i];
if (Gamma_2 == 1) { // Gamma_1 = gamma_5
_gamma5(phi, phi);
}
_spinor_scalar_prod(dum2, arr_spinor[0][1][beta_2][j_f][i], phi);

res_hihj_g1g2[i_f][j_f][beta_1][beta_2] += dum1 * dum2;
res_hihj_g1g2[hi][hj][g1][g2] += dum;
}
}
}
@@ -652,7 +648,7 @@ void heavy_correlators_measurement(const int traj, const int id, const int ieo,
#if defined TM_USE_MPI
MPI_Reduce(&res_hihj_g1g2[hi][hj][g1][g2], &mpi_res_hihj_g1g2[hi][hj][g1][g2], 1, MPI_DOUBLE, MPI_SUM, 0, g_mpi_time_slices);
res_hihj_g1g2[hi][hj][g1][g2] = mpi_res_hihj_g1g2[hi][hj][g1][g2];
C_hihj_g1g2[hi][hj][g1][g2][t] = -eta_Gamma[g1] * res / (g_nproc_x * LX) / (g_nproc_y * LY) / (g_nproc_z * LZ);
sC_hihj_g1g2[hi][hj][g1][g2][t] = -eta_Gamma[g1] * res / (g_nproc_x * LX) / (g_nproc_y * LY) / (g_nproc_z * LZ);
#else
C_hihj_g1g2[hi][hj][g1][g2][t] = -eta_Gamma[g1] * res / (g_nproc_x * LX) / (g_nproc_y * LY) / (g_nproc_z * LZ);
#endif