-
Notifications
You must be signed in to change notification settings - Fork 111
Feature/overlap #1612
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
base: develop
Are you sure you want to change the base?
Feature/overlap #1612
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.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What do these changes to the Eigen solver do?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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 |
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.