Conversation
Implemented the overlap chiral fermion in QUDA.
|
Thanks for this amazing contribution @SaltyChiang. I've enabled CI for the PR, but see quite a failures, we can review this properly once you've resolved this. |
| double d2 = -d1 * theta; | ||
| double d3; | ||
|
|
||
| ColorSpinorParam param(in[0]); |
There was a problem hiding this comment.
What do these changes to the Eigen solver do?
There was a problem hiding this comment.
I'm sorry, this code should be reverted. When I want to match QUDA's eigensolver with the textbook, I noticed that there are some differences. It shows that QUDA's eigensolver takes lambda1 = 0.0 and the following sigma1 and d2 can be simplified. It shouldn't matter which lambda1 is selected.
|
This is an awesome contribution, @SaltyChiang ! I'm looking forward to looking into this more closely. One interface comment specific to how overlap only admits a full-parity form. The Kahler-Dirac preconditioned staggered operator also only admits a full parity form, and the convention I adopted for the The reason I settled on this convention was because in all other cases Unless you have a very specific reason to define |
|
@maddyscientist I hope compilers will be happy with the update. Also, I reverted some code in eigensolve, now those parameters are the same as before. |
|
cscs-ci run |
|
@havogt Thank you for triggering the CI. I mistakenly changed a parameter and now it's reverted. |
|
cscs-ci run |
|
@maddyscientist Those failed tests are caused by the modification in the multishift solver. I reverted the offsets-related part and all tests passed on my local machine. |
Implemented the overlap chiral fermion in QUDA.
Because the overlap fermion breaks the locality, we cannot build an even-odd preconditioned Dirac matrix, so only the unpreconditioned version is implemented.
The
DiracOverlap::Dslashis defined as below:Take the chiral projector$P^\pm=\frac{1\pm\gamma_5}{2}$ . Under the DeGrand-Rossi basis, we get the upper two spinor rows with $P^+$ , and the lower two spinor rows with $P^-$ if we apply the projector to a spinor.
We can easily get:
MdagMChiralinterface inDirac, along with the newDiracMdagMChiralclass. We should always use aMdagMChiraltype solver when dealing with overlap fermions.Then we define the chiral fermion matrix
We define
DiracOverlap::MandDiracOverlap::MdagMasThough it's a bit weird, it will simplify the expression of the chiral fermion matrix inverse
These steps are implemented in the
reconstructfunction.However, some issues arise when we are dealing with the multishift solver. We have to set the mass of a$\frac{m^2}{1-m^2}$ , and apply $\frac{1}{1-m^2}$ as the postprocessing. We also need to call
DiracOverlapto 0 and set offsets toconstructin the multishift solving process.