16 #ifdef USE_PARAMETERS_FACTORY
39 #ifdef USE_PARAMETERS_FACTORY
52 const string str_vlevel = params.
get_string(
"verbose_level");
67 err += params.
fetch_int(
"number_of_poles", Np);
70 err += params.
fetch_int(
"maximum_number_of_iteration", Niter_ms);
71 err += params.
fetch_double(
"convergence_criterion_squared", Stop_cond_ms);
75 vout.
crucial(
m_vl,
"Force_F_Overlap_Nf2: fetch error, input parameter not found.\n");
80 set_parameters(mq, M0, Np, x_min, x_max, Niter_ms, Stop_cond_ms, bc);
86 const int Np,
const double x_min,
const double x_max,
87 const int Niter_ms,
const double Stop_cond_ms,
88 const valarray<int> bc)
101 for (
int mu = 0; mu < Ndim; ++mu) {
115 vout.
crucial(
m_vl,
"Force_F_Overlap_Nf2: parameter range check failed.\n");
119 assert(bc.size() == Ndim);
131 for (
int mu = 0; mu < Ndim; ++mu) {
161 int size_psf = Lvol * Nc * Nd;
168 double ff = m_M0 * m_M0 - 0.25 *
m_mq *
m_mq;
173 int Nin = Nc * Nc * 2;
174 Field force(Nin, Nvol, Ndim);
191 int NinG = 2 * Nc * Nc;
192 int NinF = 2 * Nc * Nd;
200 for (
int i = 0; i <
m_Np; ++i) {
204 for (
int i = 0; i <
m_Np; ++i) {
212 valarray<Field> psi_l(Nshift);
213 for (
int i = 0; i < Nshift; ++i) {
214 psi_l[i].reset(NinF, Nvol, 1);
217 valarray<Field> psi5_l(Nshift);
218 for (
int i = 0; i < Nshift; ++i) {
219 psi5_l[i].reset(NinF, Nvol, 1);
238 Field force(NinG, Nvol, Ndim);
246 Field force1(NinG, Nvol, Ndim);
252 for (
int ip = 0; ip <
m_Np; ++ip) {
262 double coeff_l = (
m_cl[2 * ip] -
m_cl[2 * m_Np - 1])
272 force += coeff_l * force1;
274 force += coeff_l * force1;
283 force += coeff_l * force1;
285 force += coeff_l * force1;
299 force += coeff2 * force1;
309 force += coeff2 * force1;