mirror of
https://github.com/paboyle/Grid.git
synced 2025-04-09 21:50:45 +01:00
EO support, wip
This commit is contained in:
parent
99a73f4287
commit
62a64d9108
38
.vscode/settings.json
vendored
38
.vscode/settings.json
vendored
@ -1,3 +1,41 @@
|
|||||||
// Place your settings in this file to overwrite default and user settings.
|
// Place your settings in this file to overwrite default and user settings.
|
||||||
{
|
{
|
||||||
|
"files.associations": {
|
||||||
|
"cctype": "cpp",
|
||||||
|
"clocale": "cpp",
|
||||||
|
"cmath": "cpp",
|
||||||
|
"csignal": "cpp",
|
||||||
|
"cstdarg": "cpp",
|
||||||
|
"cstddef": "cpp",
|
||||||
|
"cstdio": "cpp",
|
||||||
|
"cstdlib": "cpp",
|
||||||
|
"cstring": "cpp",
|
||||||
|
"ctime": "cpp",
|
||||||
|
"cwchar": "cpp",
|
||||||
|
"cwctype": "cpp",
|
||||||
|
"array": "cpp",
|
||||||
|
"atomic": "cpp",
|
||||||
|
"*.tcc": "cpp",
|
||||||
|
"chrono": "cpp",
|
||||||
|
"codecvt": "cpp",
|
||||||
|
"condition_variable": "cpp",
|
||||||
|
"cstdint": "cpp",
|
||||||
|
"exception": "cpp",
|
||||||
|
"slist": "cpp",
|
||||||
|
"functional": "cpp",
|
||||||
|
"initializer_list": "cpp",
|
||||||
|
"iosfwd": "cpp",
|
||||||
|
"limits": "cpp",
|
||||||
|
"memory": "cpp",
|
||||||
|
"mutex": "cpp",
|
||||||
|
"new": "cpp",
|
||||||
|
"ratio": "cpp",
|
||||||
|
"stdexcept": "cpp",
|
||||||
|
"system_error": "cpp",
|
||||||
|
"thread": "cpp",
|
||||||
|
"tuple": "cpp",
|
||||||
|
"type_traits": "cpp",
|
||||||
|
"typeinfo": "cpp",
|
||||||
|
"utility": "cpp"
|
||||||
|
}
|
||||||
}
|
}
|
@ -91,7 +91,6 @@ void WilsonCloverFermion<Impl>::ImportGauge(const GaugeField &_Umu)
|
|||||||
{
|
{
|
||||||
this->ImportGauge(_Umu);
|
this->ImportGauge(_Umu);
|
||||||
GridBase *grid = _Umu._grid;
|
GridBase *grid = _Umu._grid;
|
||||||
assert(Nd == 4); // only works in 4 dim
|
|
||||||
typename Impl::GaugeLinkField Bx(grid), By(grid), Bz(grid), Ex(grid), Ey(grid), Ez(grid);
|
typename Impl::GaugeLinkField Bx(grid), By(grid), Bz(grid), Ex(grid), Ey(grid), Ez(grid);
|
||||||
|
|
||||||
// Compute the field strength terms
|
// Compute the field strength terms
|
||||||
@ -140,6 +139,11 @@ void WilsonCloverFermion<Impl>::ImportGauge(const GaugeField &_Umu)
|
|||||||
Qxinv()(j, k)(a, b) = EigenInvCloverOp(a + j * DimRep, b + k * DimRep);
|
Qxinv()(j, k)(a, b) = EigenInvCloverOp(a + j * DimRep, b + k * DimRep);
|
||||||
|
|
||||||
pokeLocalSite(Qxinv, CloverTermInv, lcoor);
|
pokeLocalSite(Qxinv, CloverTermInv, lcoor);
|
||||||
|
// Separate the even and odd parts.
|
||||||
|
pickCheckerboard(Even, CloverTermEven, CloverTerm);
|
||||||
|
pickCheckerboard( Odd, CloverTermOdd, CloverTerm);
|
||||||
|
pickCheckerboard(Even, CloverTermInvEven, CloverTermInv);
|
||||||
|
pickCheckerboard( Odd, CloverTermInvOdd, CloverTermInv);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -172,8 +176,15 @@ void WilsonCloverFermion<Impl>::MooeeInternal(const FermionField &in, FermionFie
|
|||||||
{
|
{
|
||||||
out.checkerboard = in.checkerboard;
|
out.checkerboard = in.checkerboard;
|
||||||
CloverFieldType *Clover;
|
CloverFieldType *Clover;
|
||||||
|
if (in.checkerboard == Odd){
|
||||||
|
std::cout << "Calling clover term Odd" << std::endl;
|
||||||
|
Clover = (inv) ? &CloverTermInvOdd : &CloverTermOdd;
|
||||||
|
}
|
||||||
|
if (in.checkerboard == Even){
|
||||||
|
std::cout << "Calling clover term Even" << std::endl;
|
||||||
|
Clover = (inv) ? &CloverTermInvEven : &CloverTermEven;
|
||||||
|
}
|
||||||
|
|
||||||
Clover = (inv) ? &CloverTermInv : &CloverTerm;
|
|
||||||
if (dag){ out = adj(*Clover) * in;} else { out = *Clover * in;}
|
if (dag){ out = adj(*Clover) * in;} else { out = *Clover * in;}
|
||||||
} // MooeeInternal
|
} // MooeeInternal
|
||||||
|
|
||||||
|
@ -59,7 +59,11 @@ public:
|
|||||||
Hgrid,
|
Hgrid,
|
||||||
_mass, p),
|
_mass, p),
|
||||||
CloverTerm(&Fgrid),
|
CloverTerm(&Fgrid),
|
||||||
CloverTermInv(&Fgrid)
|
CloverTermInv(&Fgrid),
|
||||||
|
CloverTermEven(&Hgrid),
|
||||||
|
CloverTermOdd(&Hgrid),
|
||||||
|
CloverTermInvEven(&Hgrid),
|
||||||
|
CloverTermInvOdd(&Hgrid)
|
||||||
{
|
{
|
||||||
csw = _csw;
|
csw = _csw;
|
||||||
assert(Nd == 4); // require 4 dimensions
|
assert(Nd == 4); // require 4 dimensions
|
||||||
@ -85,6 +89,8 @@ private:
|
|||||||
|
|
||||||
RealD csw; // Clover coefficient
|
RealD csw; // Clover coefficient
|
||||||
CloverFieldType CloverTerm, CloverTermInv; // Clover term
|
CloverFieldType CloverTerm, CloverTermInv; // Clover term
|
||||||
|
CloverFieldType CloverTermEven, CloverTermOdd;
|
||||||
|
CloverFieldType CloverTermInvEven, CloverTermInvOdd; // Clover term
|
||||||
// eventually these two can be compressed into 6x6 blocks instead of the 12x12
|
// eventually these two can be compressed into 6x6 blocks instead of the 12x12
|
||||||
// using the DeGrand-Rossi basis for the gamma matrices
|
// using the DeGrand-Rossi basis for the gamma matrices
|
||||||
|
|
||||||
|
@ -191,8 +191,9 @@ int main (int argc, char ** argv)
|
|||||||
Dwc.MooeeInv(src_e,phi_e);
|
Dwc.MooeeInv(src_e,phi_e);
|
||||||
|
|
||||||
Dwc.Mooee(chi_o,src_o);
|
Dwc.Mooee(chi_o,src_o);
|
||||||
|
exit(1);
|
||||||
Dwc.MooeeInv(src_o,phi_o);
|
Dwc.MooeeInv(src_o,phi_o);
|
||||||
|
|
||||||
setCheckerboard(phi,phi_e);
|
setCheckerboard(phi,phi_e);
|
||||||
setCheckerboard(phi,phi_o);
|
setCheckerboard(phi,phi_o);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user