marcuspetschlies / cvc

3 stars 7 forks source link

spinor_field_lexic2eo does not convert halo #10

Closed kostrzewa closed 5 years ago

kostrzewa commented 5 years ago

The residual checks in cpff_invert_contract fail because, even if I add halo-exchange for the spinor field in check_clover_residual, the checkerboarded spinors obtained via spinor_field_lexic2eo do not have halos. As a result, the application of Q_clover_phi_matrix_eo is not correct and the source is not reproduced.

I don't see any functionality to perform halo-exchange on just one of the checkerboards. Is it sufficient to add to the loops in spinor_field_lexic2eo two further small loops to attach RAND/2 pieces beyond the VOLUME/2 index? Not quite sure what the halo layout is in CVC...

kostrzewa commented 5 years ago

At least, my current guess is that that is the problem...

kostrzewa commented 5 years ago

I'm pretty confident that the propagators are fine because tmLQCD's own residual check comes out correct.

kostrzewa commented 5 years ago

I don't see any functionality to perform halo-exchange on just one of the checkerboards. Is it sufficient to add to the loops in spinor_field_lexic2eo two further small loops to attach RAND/2 pieces beyond the VOLUME/2 index? Not quite sure what the halo layout is in CVC...

actually, I've found the xchange_eo_field function, but I've also realized that the hopping matrix should do what is necessary.. so it's not the halo exchange.

What about normalisation? The propagator that tmLQCD spits out is kappa-normalised. As far as I can see, cpff_invert_contract currently ignores this...