CHROMA
loops_s.h
Go to the documentation of this file.
1 
2 #ifndef LOOP_S_H
3 #define LOOP_S_H
4 
5 
6 #include "chromabase.h"
9 
10 namespace Chroma {
11 
12  /*
13 
14  This is generic code to compute staggered bubbles.
15 
16  */
17 
18 
20  {
21 
22  public :
23  virtual void compute(LatticeStaggeredFermion & q_source,
24  LatticeStaggeredFermion & psi, int isample) = 0 ;
25 
26  /*
27  Write the correlators out
28  */
29  void dump(XMLWriter &xml_out)
30  {
31 
32  multi1d<Real64> sig_sc0(t_length), imsig_sc0(t_length);
33 
34  stoch_var(corr, corr_fn, sig_sc0, imsig_sc0,
36 
37  push(xml_out, outer_tag);
38  switch (type_of_shift)
39  {
40  case NON_GAUGE_INVAR :
41  write(xml_out, "SHIFT", "NON_GAUGE_INVAR");
42  break ;
43  case GAUGE_INVAR :
44  write(xml_out, "SHIFT", "GAUGE_INVAR");
45  break ;
46  case SYM_GAUGE_INVAR :
47  write(xml_out, "SHIFT", "SYM_GAUGE_INVAR");
48  break ;
50  write(xml_out, "SHIFT", "SYM_NON_GAUGE_INVAR");
51  break ;
52  }
53  push(xml_out, "Mean");
54  write(xml_out, inner_tag, corr);
55  pop(xml_out);
56  push(xml_out, "MeanError");
57  write(xml_out, inner_tag, sig_sc0);
58  pop(xml_out);
59  pop(xml_out);
60 
61  }
62 
63 
64  void dump(XMLWriter &xml_out, int &i){
65 
67  char *cnum;
68  std::string snum;
69 
70 
71  cnum=(char*)malloc(10*sizeof(char));
72 
73  sprintf(cnum,"%d",i);
74 
75  snum=cnum;
76  free(cnum);
77 
78  std::string strzeros(6-snum.size(),'0');
79 
80  tag = "Meas"+strzeros+snum;
81 
82  push(xml_out, outer_tag);
83  push(xml_out, tag);
84  write(xml_out, inner_tag, corr_fn[i]);
85  pop(xml_out);
86  pop(xml_out);
87  }
88 
89 
90 
91  staggered_loops(int t_len, int t_sample,
92  const multi1d<LatticeColorMatrix> & uin,
93  Stag_shift_option type_of_shift_in) :
94  t_length(t_len) ,
95  no_sample(t_sample) ,
96  type_of_shift(type_of_shift_in)
97  {
98  corr_fn.resize(no_sample, t_length);
99  corr_fn = zero ;
100  corr.resize(t_length);
101  corr = zero ;
102 
103  u.resize(4) ;
104  if( uin.size() != 4 ) {
105  QDPIO::cerr << "staggered_hadron_corr: input guage config has wrong number of dimensions " << uin.size() << std::endl;
106  QDP_abort(1);
107  };
108 
109  u = uin ;
110 
111  }
112 
114  {
115  corr_fn.resize(1, 1);
116  }
117 
118 
119 
120  LatticeStaggeredFermion shift_deltaProp(multi1d<int>& delta,
121  const
122  LatticeStaggeredFermion& src)
123 
124  {
125 
126  switch (type_of_shift)
127  {
128  case NON_GAUGE_INVAR :
129  std::cout << "ERROR SHIFT: GI\n" ; exit(0) ;
130  // return shiftDeltaProp(delta,src) ;
131  break ;
132  case GAUGE_INVAR :
133  std::cout << "ERROR SHIFT: GI\n" ; exit(0) ;
134  // return shiftDeltaPropCov(delta,src,u,false) ;
135  break ;
136  case SYM_GAUGE_INVAR :
137  return shiftDeltaPropCov(delta,src,u,true) ; // symm shifting
138  break ;
139  case SYM_NON_GAUGE_INVAR:
140  std::cout << "ERROR SHIFT: SNGI\n" ; exit(0) ;
141  // return shiftDeltaProp(delta,src,true) ; // symm shifting
142  break ;
143  default :
144  /**************************************************************************/
145 
146  QDPIO::cerr << "Shift type " << type_of_shift << " unsupported." << std::endl;
147  QDP_abort(1);
148  }
149 
150  return zero; // make compiler happy
151  }
152 
153 
154  // write the data in binary format
155  void binary_dump(std::string start_name)
156  {
157 
158  std::string filename ;
159  filename = start_name + outer_tag + inner_tag ;
160  const int magic_number = 66618 ;
161 
162  BinaryFileWriter speedy ;
163  speedy.open(filename);
164  write(speedy,magic_number) ;
165  write(speedy,t_length) ;
166  write(speedy,no_sample) ;
167  write(speedy,corr_fn) ;
168  write(speedy,corr) ;
169  speedy.close();
170 
171  }
172 
173 
174  protected:
175 
176  multi2d<DComplex> corr_fn ;
177  multi1d<DComplex> corr ;
178 
181  multi1d<LatticeColorMatrix> u ; // this should handle or state
182 
183  private :
184  int t_length ;
185  int no_sample ;
186 
188 
189  } ;
190 
191 
192 } // end namespace Chroma
193 
194 
195 #endif
Primary include file for CHROMA library code.
virtual ~staggered_loops()
Definition: loops_s.h:113
std::string outer_tag
Definition: loops_s.h:179
multi1d< LatticeColorMatrix > u
Definition: loops_s.h:181
multi1d< DComplex > corr
Definition: loops_s.h:177
Stag_shift_option type_of_shift
Definition: loops_s.h:187
multi2d< DComplex > corr_fn
Definition: loops_s.h:176
virtual void compute(LatticeStaggeredFermion &q_source, LatticeStaggeredFermion &psi, int isample)=0
void dump(XMLWriter &xml_out)
Definition: loops_s.h:29
LatticeStaggeredFermion shift_deltaProp(multi1d< int > &delta, const LatticeStaggeredFermion &src)
Definition: loops_s.h:120
std::string inner_tag
Definition: loops_s.h:180
void binary_dump(std::string start_name)
Definition: loops_s.h:155
staggered_loops(int t_len, int t_sample, const multi1d< LatticeColorMatrix > &uin, Stag_shift_option type_of_shift_in)
Definition: loops_s.h:91
void dump(XMLWriter &xml_out, int &i)
Definition: loops_s.h:64
void write(XMLWriter &xml, const std::string &path, const AsqtadFermActParams &param)
Writer parameters.
void stoch_var(multi1d< DComplex > &ferm_loop_sum, multi2d< DComplex > &ferm_loop, multi1d< Real64 > &sigma, multi1d< Real64 > &im_sigma, int t_length, int Nsamp)
Stochastic variable construction.
Definition: stoch_var.cc:32
Asqtad Staggered-Dirac operator.
Definition: klein_gord.cc:10
push(xml_out,"Condensates")
@ SYM_NON_GAUGE_INVAR
int i
Definition: pbg5p_w.cc:55
LatticeStaggeredPropagator shiftDeltaPropCov(multi1d< int > &delta, const LatticeStaggeredPropagator &src, multi1d< LatticeColorMatrix > u, bool sym_flag)
LatticeFermion psi
Definition: mespbg5p_w.cc:35
pop(xml_out)
Double zero
Definition: invbicg.cc:106
std::string tag(const std::string &prefix)
Definition: octave.h:15
::std::string string
Definition: gtest.h:1979
Stochastic variable construction.