6 namespace AVPSolverFunctions {
10 const int latt_coord[4],
17 multi1d<LatticeColorMatrix>&
u = *(multi1d<LatticeColorMatrix>*)OuterGauge;
22 int node = Layout::nodeNumber(
coord);
23 int linear = Layout::linearSiteIndex(
coord);
25 if (node != Layout::nodeNumber()) {
27 QDPIO::cerr << __func__ <<
": wrong coordinates for this node" << std::endl;
35 double val = (reim == 0) ?
36 toDouble(
u[
mu].elem(linear).elem().elem(row,col).real()) :
37 toDouble(
u[
mu].elem(linear).elem().elem(row,col).imag());
46 const int latt_coord[5],
52 multi1d<LatticeFermion>&
psi = *(multi1d<LatticeFermion>*)OuterFermion;
53 int Ls1 =
psi.size() - 1;
56 int s = latt_coord[
Nd];
59 int node = Layout::nodeNumber(
coord);
60 int linear = Layout::linearSiteIndex(
coord);
62 if (node != Layout::nodeNumber()) {
64 QDPIO::cerr << __func__ <<
": wrong coordinates for this node" << std::endl;
72 double val = (reim == 0) ?
73 double(
psi[Ls1-
s].elem(linear).elem(spin).elem(color).real()) :
74 double(
psi[Ls1-
s].elem(linear).elem(spin).elem(color).imag());
86 const int latt_coord[5],
92 multi1d<LatticeFermion>&
psi = *(multi1d<LatticeFermion>*)OuterFermion;
93 int Ls1 =
psi.size() - 1;
96 int s = latt_coord[
Nd];
99 int node = Layout::nodeNumber(
coord);
100 int linear = Layout::linearSiteIndex(
coord);
102 if (node != Layout::nodeNumber()) {
103 QDPIO::cerr << __func__ <<
": wrong coordinates for this node" << std::endl;
111 double val = (reim == 0) ?
112 double(
psi[Ls1-
s].elem(linear).elem(spin).elem(color).real()) :
113 double(
psi[Ls1-
s].elem(linear).elem(spin).elem(color).imag());
127 const int latt_coord[5],
135 multi1d<LatticeFermion>&
psi = *(multi1d<LatticeFermion>*)OuterFermion;
136 int Ls1 =
psi.size() - 1;
139 int s = latt_coord[
Nd];
142 int node = Layout::nodeNumber(
coord);
143 int linear = Layout::linearSiteIndex(
coord);
145 if (node != Layout::nodeNumber()) {
146 QDPIO::cerr << __func__ <<
": wrong coordinates for this node" << std::endl;
161 psi[Ls1-
s].elem(linear).elem(spin).elem(color).real() = val;
163 psi[Ls1-
s].elem(linear).elem(spin).elem(color).imag() = val;
171 const int latt_coord[5],
178 multi1d<LatticeFermion>&
psi = *(multi1d<LatticeFermion>*)OuterFermion;
179 int Ls1 =
psi.size() - 1;
182 int s = latt_coord[
Nd];
185 int node = Layout::nodeNumber(
coord);
186 int linear = Layout::linearSiteIndex(
coord);
188 if (node != Layout::nodeNumber()) {
189 QDPIO::cerr << __func__ <<
": wrong coordinates for this node" << std::endl;
204 psi[Ls1-
s].elem(linear).elem(spin).elem(color).real() = val;
206 psi[Ls1-
s].elem(linear).elem(spin).elem(color).imag() = val;
Base class for AVP's DWF solver interface.
void fermionWriterOperator(void *OuterFermion, void *env, const int latt_coord[5], int color, int spin, int reim, double val)
double fermionReaderGuess(const void *OuterFermion, void *env, const int latt_coord[5], int color, int spin, int reim)
double gaugeReader(const void *OuterGauge, void *env, const int latt_coord[4], int mu, int row, int col, int reim)
double fermionReaderRHS(const void *OuterFermion, void *env, const int latt_coord[5], int color, int spin, int reim)
void fermionWriterSolver(void *OuterFermion, void *env, const int latt_coord[5], int color, int spin, int reim, double val)
Asqtad Staggered-Dirac operator.
static multi1d< LatticeColorMatrix > u