128 virtual void deriv(
const GaugeField &
U,GaugeField & dSdU)
136 FermionField X(fgrid);
137 FermionField Y(fgrid);
138 FermionField tmp(fgrid);
140 GaugeField force(ugrid);
142 FermionField DobiDdbPhi(fgrid);
143 FermionField DoiDdDobiDdbPhi(fgrid);
144 FermionField DiDdbP_Phi(fgrid);
145 FermionField DidRinvP_Phi(fgrid);
146 FermionField DdbdDidRinvP_Phi(fgrid);
147 FermionField DoidRinvDagRinvP_Phi(fgrid);
148 FermionField DobidDddDoidRinvDagRinvP_Phi(fgrid);
150 FermionField P_Phi(fgrid);
151 FermionField RinvP_Phi(fgrid);
152 FermionField RinvDagRinvP_Phi(fgrid);
153 FermionField PdagRinvDagRinvP_Phi(fgrid);
163 NumOp.dOmegaBarInv(tmp,DobiDdbPhi);
164 NumOp.dBoundary(DobiDdbPhi,tmp);
165 NumOp.dOmegaInv(tmp,DoiDdDobiDdbPhi);
166 P_Phi =
Phi - DoiDdDobiDdbPhi;
167 NumOp.ProjectBoundaryBar(P_Phi);
170 DenOp.dBoundaryBar(P_Phi,tmp);
171 DenOp.Dinverse(tmp,DiDdbP_Phi);
172 RinvP_Phi = P_Phi - DiDdbP_Phi;
173 DenOp.ProjectBoundaryBar(RinvP_Phi);
177 DenOp.DinverseDag(RinvP_Phi,DidRinvP_Phi);
178 DenOp.dBoundaryBarDag(DidRinvP_Phi,DdbdDidRinvP_Phi);
179 RinvDagRinvP_Phi = RinvP_Phi - DdbdDidRinvP_Phi;
180 DenOp.ProjectBoundaryBar(RinvDagRinvP_Phi);
184 NumOp.dOmegaDagInv(RinvDagRinvP_Phi,DoidRinvDagRinvP_Phi);
185 NumOp.dBoundaryDag(DoidRinvDagRinvP_Phi,tmp);
186 NumOp.dOmegaBarDagInv(tmp,DobidDddDoidRinvDagRinvP_Phi);
187 NumOp.dBoundaryBarDag(DobidDddDoidRinvDagRinvP_Phi,tmp);
188 PdagRinvDagRinvP_Phi = RinvDagRinvP_Phi- tmp;
189 NumOp.ProjectBoundaryBar(PdagRinvDagRinvP_Phi);
217 Y = DobidDddDoidRinvDagRinvP_Phi;
218 NumOp.DirichletFermOpD.MDeriv(force,Y,X,
DaggerNo); dSdU=dSdU+force;
219 NumOp.DirichletFermOpD.MDeriv(force,X,Y,
DaggerYes); dSdU=dSdU+force;
222 Y = DoidRinvDagRinvP_Phi;
223 NumOp.DirichletFermOpD.MDeriv(force,Y,X,
DaggerNo); dSdU=dSdU+force;
224 NumOp.DirichletFermOpD.MDeriv(force,X,Y,
DaggerYes); dSdU=dSdU+force;
228 DenOp.PeriodicFermOpD.MDeriv(force,Y,X,
DaggerNo); dSdU=dSdU+force;
229 DenOp.PeriodicFermOpD.MDeriv(force,X,Y,
DaggerYes); dSdU=dSdU+force;