Bridge++  Ver. 1.1.x
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
fprop_Domainwall_4d.cpp
Go to the documentation of this file.
1 
14 #include "fprop_Domainwall_4d.h"
15 
16 //====================================================================
18 {
20 }
21 
22 
23 //====================================================================
24 void Fprop_Domainwall_4d::invert_D(Field& xq, const Field& b, int& Nconv, double& diff)
25 {
26  // #### parameter setup ####
27  int Nin = m_fopr_dw->field_nin();
28  int Nvol = m_fopr_dw->field_nvol();
29  int Nex = m_fopr_dw->field_nex();
30 
31  assert(b.nin() == Nin);
32  assert(b.nvol() == Nvol);
33  assert(b.nex() == 1);
34 
35 
36  // #### object setup ####
37  Field bt(Nin, Nvol, 1);
38  Field xt(Nin, Nvol, 1), xt2(Nin, Nvol, 1);
39  Field b_5d(Nin, Nvol, Nex), bt_5d(Nin, Nvol, Nex);
40  Field xq_5d(Nin, Nvol, Nex);
41 
42  xq = 0.0;
43 
44  for (int ch = -1; ch <= 1; ch = ch + 2) {
45  bt = m_fopr_dw->mult_chproj_4d(b, ch);
46  if (bt.norm2() < 1.e-14) continue;
47 
48  bt_5d = 0.0;
49  if (ch == -1) {
50  bt_5d.setpart_ex(Nex - 1, bt, 0);
51  } else {
52  bt_5d.setpart_ex(0, bt, 0);
53  }
54 
55  m_fopr_dw->set_mode("Ddag");
56  b_5d = m_fopr_dw->mult(bt_5d);
57 
58  vout.paranoiac(m_vl, " b_5d norm2 = %14.6e\n", b_5d.norm2());
59 
60  m_fopr_dw->set_mode("DdagD");
61  m_solver->solve(xq_5d, b_5d, Nconv, diff);
62  vout.detailed(m_vl, " chirality: %2d\n", ch);
63  vout.detailed(m_vl, " Nconv = %d, diff = %16.8e\n", Nconv, diff);
64 
65  xt.setpart_ex(0, xq_5d, 0);
66  xt2 = m_fopr_dw->mult_chproj_4d(xt, -1);
67  xq.addpart_ex(0, xt2, 0);
68 
69  xt.setpart_ex(0, xq_5d, Nex - 1);
70  xt2 = m_fopr_dw->mult_chproj_4d(xt, +1);
71  xq.addpart_ex(0, xt2, 0);
72  }
73 }
74 
75 
76 //====================================================================
77 void Fprop_Domainwall_4d::invert_DdagD(Field& xq, const Field& b, int& Nconv, double& diff)
78 {
79  //- Not implemented, yet.
80 }
81 
82 
83 //====================================================================
84 //============================================================END=====