CHROMA
stoch_conn_s.h
Go to the documentation of this file.
1 
2 #ifndef STOCH_CONN_S_H
3 #define STOCH_CONN_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_source1,
24  LatticeStaggeredFermion & q_source2,
25  LatticeStaggeredFermion & psi1,
26  LatticeStaggeredFermion & psi2,
27  int isample) = 0 ;
28 
29  /*
30  Write the correlators out
31  */
32  void dump(XMLWriter &xml_out)
33  {
34 
35  multi1d<Real64> sig_sc1(t_length), imsig_sc1(t_length);
36  multi1d<Real64> sig_sc2(t_length), imsig_sc2(t_length);
37 
38 
39  stoch_var(corr1, corr_fn1, sig_sc1, imsig_sc1,
41  stoch_var(corr2, corr_fn2, sig_sc2, imsig_sc2,
43 
44  push(xml_out, outer_tag);
45  switch (type_of_shift)
46  {
47  case NON_GAUGE_INVAR :
48  write(xml_out, "SHIFT", "NON_GAUGE_INVAR");
49  break ;
50  case GAUGE_INVAR :
51  write(xml_out, "SHIFT", "GAUGE_INVAR");
52  break ;
53  case SYM_GAUGE_INVAR :
54  write(xml_out, "SHIFT", "SYM_GAUGE_INVAR");
55  break ;
57  write(xml_out, "SHIFT", "SYM_NON_GAUGE_INVAR");
58  break ;
59  }
60 
61  push(xml_out, "Mean1");
62  write(xml_out, inner_tag1, corr1);
63  pop(xml_out); // Mean1
64 
65  push(xml_out, "MeanError1");
66  write(xml_out, inner_tag1, sig_sc1);
67  pop(xml_out); // MeanError1
68 
69  // pop(xml_out);
70 
71  push(xml_out, "Mean2");
72  write(xml_out, inner_tag2, corr2);
73  pop(xml_out); // Mean2
74 
75  push(xml_out, "MeanError2");
76  write(xml_out, inner_tag2, sig_sc2);
77  pop(xml_out); //MeanError2
78 
79  pop(xml_out); // outer_tag
80 
81  }
82 
83 
84  void dump(XMLWriter &xml_out, int &i){
85 
87  char *cnum;
88  std::string snum;
89 
90  cnum=(char*)malloc(10*sizeof(char));
91 
92  sprintf(cnum,"%d",i);
93 
94  snum=cnum;
95  free(cnum);
96 
97  std::string strzeros(6-snum.size(),'0');
98 
99  tag = "Meas"+strzeros+snum;
100 
101  push(xml_out, outer_tag);
102  push(xml_out, tag);
103  write(xml_out, inner_tag1, corr_fn1[i]);
104  // pop(xml_out);
105 
106  // push(xml_out, tag);
107  write(xml_out, inner_tag2, corr_fn2[i]);
108  pop(xml_out);
109  pop(xml_out);
110  }
111 
112  stoch_conn_corr(int t_len, int t_sample,
113  const multi1d<LatticeColorMatrix> & uin,
114  Stag_shift_option type_of_shift_in) :
115  t_length(t_len) ,
116  no_sample(t_sample) ,
117  type_of_shift(type_of_shift_in)
118  {
119  corr_fn1.resize(no_sample, t_length);
120  corr_fn2.resize(no_sample, t_length);
121  corr_fn1 = zero ;
122  corr_fn2 = zero ;
123  corr1.resize(t_length);
124  corr2.resize(t_length);
125  corr1 = zero ;
126  corr2 = zero ;
127 
128  u.resize(4) ;
129  if( uin.size() != 4 ) {
130  QDPIO::cerr << "staggered_hadron_corr: input guage config has wrong number of dimensions " << uin.size() << std::endl;
131  QDP_abort(1);
132  };
133 
134  u = uin ;
135 
136  }
137 
139  {
140  corr_fn1.resize(1, 1);
141  corr_fn2.resize(1, 1);
142  }
143 
144 
145 
146  LatticeStaggeredFermion shift_deltaProp(multi1d<int>& delta,
147  const
148  LatticeStaggeredFermion& src)
149 
150  {
151 
152  switch (type_of_shift)
153  {
154  case NON_GAUGE_INVAR :
155  std::cout << "ERROR SHIFT: GI\n" ; exit(0) ;
156  // return shiftDeltaProp(delta,src) ;
157  break ;
158  case GAUGE_INVAR :
159  std::cout << "ERROR SHIFT: GI\n" ; exit(0) ;
160  // return shiftDeltaPropCov(delta,src,u,false) ;
161  break ;
162  case SYM_GAUGE_INVAR :
163  return shiftDeltaPropCov(delta,src,u,true) ; // symm shifting
164  break ;
165  case SYM_NON_GAUGE_INVAR:
166  std::cout << "ERROR SHIFT: SNGI\n" ; exit(0) ;
167  // return shiftDeltaProp(delta,src,true) ; // symm shifting
168  break ;
169  default :
170  /**************************************************************************/
171 
172  QDPIO::cerr << "Shift type " << type_of_shift << " unsupported." << std::endl;
173  QDP_abort(1);
174  }
175 
176  return zero; // make compiler happy
177  }
178 
179 
180 
181  protected:
182 
183  multi2d<DComplex> corr_fn1 ;
184  multi2d<DComplex> corr_fn2 ;
185  multi1d<DComplex> corr1 ;
186  multi1d<DComplex> corr2 ;
187 
191  multi1d<LatticeColorMatrix> u ; // this should handle or state
192 
193  private :
194  int t_length ;
195  int no_sample ;
196 
198 
199  } ;
200 
201 
202 } // end namespace Chroma
203 
204 
205 #endif
Primary include file for CHROMA library code.
void dump(XMLWriter &xml_out, int &i)
Definition: stoch_conn_s.h:84
LatticeStaggeredFermion shift_deltaProp(multi1d< int > &delta, const LatticeStaggeredFermion &src)
Definition: stoch_conn_s.h:146
virtual void compute(LatticeStaggeredFermion &q_source1, LatticeStaggeredFermion &q_source2, LatticeStaggeredFermion &psi1, LatticeStaggeredFermion &psi2, int isample)=0
void dump(XMLWriter &xml_out)
Definition: stoch_conn_s.h:32
multi1d< DComplex > corr2
Definition: stoch_conn_s.h:186
stoch_conn_corr(int t_len, int t_sample, const multi1d< LatticeColorMatrix > &uin, Stag_shift_option type_of_shift_in)
Definition: stoch_conn_s.h:112
multi2d< DComplex > corr_fn2
Definition: stoch_conn_s.h:184
Stag_shift_option type_of_shift
Definition: stoch_conn_s.h:197
multi1d< DComplex > corr1
Definition: stoch_conn_s.h:185
multi2d< DComplex > corr_fn1
Definition: stoch_conn_s.h:183
multi1d< LatticeColorMatrix > u
Definition: stoch_conn_s.h:191
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)
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.