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 &) = DWFermiActionFast::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)=
00056 &(MinRes::inverter<dwfermi_field,gauge_field>);
00057
00058
00060 inversion_stats mul_invQ(dwfermi_field &psi_out,
00061 dwfermi_field &psi_in,
00062 gauge_field &U,
00063 coefficients &coeff,
00064 mdp_real absolute_precision=dwfermi_inversion_precision,
00065 mdp_real relative_precision=0,
00066 int max_steps=2000) {
00067 return (*default_dwfermi_inverter)(psi_out, psi_in, U, coeff, absolute_precision, relative_precision,max_steps);
00068 };