57 int LLs = psi.Grid()->_rdimensions[0];
58 int vol = psi.Grid()->oSites()/LLs;
60 chi.Checkerboard()=psi.Checkerboard();
64 Eigen::MatrixXd Pplus = Eigen::MatrixXd::Zero(
Ls,
Ls);
65 Eigen::MatrixXd Pminus = Eigen::MatrixXd::Zero(
Ls,
Ls);
67 for(
int s=0;s<
Ls;s++){
72 for(
int s=0;s<
Ls-1;s++){
73 Pminus(s,s+1) = -
cee[s];
76 for(
int s=0;s<
Ls-1;s++){
77 Pplus(s+1,s) = -
cee[s+1];
79 Pplus (0,
Ls-1) = mass*
cee[0];
80 Pminus(
Ls-1,0) = mass*
cee[
Ls-1];
82 Eigen::MatrixXd PplusMat ;
83 Eigen::MatrixXd PminusMat;
86 PplusMat =Pplus.inverse();
87 PminusMat=Pminus.inverse();
94 PplusMat.adjointInPlace();
95 PminusMat.adjointInPlace();
99 thread_loop( (
auto site=0;site<vol;site++), {
102 SiteHalfSpinor SitePplus;
103 SiteHalfSpinor SitePminus;
105 for(
int s1=0;s1<
Ls;s1++){
107 for(
int s2=0;s2<
Ls;s2++){
108 int lex2 = s2+
Ls*site;
110 if ( PplusMat(s1,s2) != 0.0 ) {
115 if ( PminusMat(s1,s2) != 0.0 ) {
120 chi[s1+
Ls*site] = SiteChi*0.5;
125#ifdef CAYLEY_DPERP_DENSE
140INSTANTIATE_DPERP(GparityWilsonImplFH);
141INSTANTIATE_DPERP(GparityWilsonImplDF);
142INSTANTIATE_DPERP(WilsonImplFH);
143INSTANTIATE_DPERP(WilsonImplDF);
144INSTANTIATE_DPERP(ZWilsonImplFH);
145INSTANTIATE_DPERP(ZWilsonImplDF);
CayleyFermion5D(GaugeField &_Umu, GridCartesian &FiveDimGrid, GridRedBlackCartesian &FiveDimRedBlackGrid, GridCartesian &FourDimGrid, GridRedBlackCartesian &FourDimRedBlackGrid, RealD _mass, RealD _M5, const ImplParams &p=ImplParams())