00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00014 void project(fermi_field &psi, dwfermi_field &chi) {
00015 site x(chi.lattice());
00016 forallsites(x) {
00017 psi(x)=Pleft*chi(x,0)+Pright*chi(x,chi.L5-1);
00018 }
00019 }
00020
00022 void project(dwfermi_field &chi, fermi_field &psi) {
00023 site x(chi.lattice());
00024 forallsites(x) {
00025 chi(x,0)=Pleft*psi(x);
00026 chi(x,chi.L5-1)=Pright*psi(x);
00027 }
00028 }
00029
00030
00031
00032
00033
00034
00036 void (*default_dwfermi_action)(dwfermi_field &,
00037 dwfermi_field &,
00038 gauge_field &,
00039 coefficients &) = DWFermiActionSlow::mul_Q;
00040
00042 void mul_Q(dwfermi_field &psi_out,
00043 dwfermi_field &psi_in,
00044 gauge_field &U,
00045 coefficients &coeff) {
00046 (*default_dwfermi_action)(psi_out, psi_in, U, coeff);
00047 };
00048
00049
00051 inversion_stats (*default_dwfermi_inverter)(dwfermi_field &,
00052 dwfermi_field &,
00053 gauge_field &,
00054 coefficients &,
00055 mdp_real, mdp_real,int)= MinRes::inverter<dwfermi_field,gauge_field>;
00056
00057
00059 inversion_stats mul_invQ(dwfermi_field &psi_out,
00060 dwfermi_field &psi_in,
00061 gauge_field &U,
00062 coefficients &coeff,
00063 mdp_real absolute_precision=dwfermi_inversion_precision,
00064 mdp_real relative_precision=0,
00065 int max_steps=2000) {
00066 return (*default_dwfermi_inverter)(psi_out, psi_in, U, coeff, absolute_precision, relative_precision,max_steps);
00067 };