CHROMA
t_ritz_KS.cc
Go to the documentation of this file.
1 
2 #include "chroma.h"
3 
4 using namespace Chroma;
5 
7 {
8  bool foo = true;
9  // All actions
11  return foo;
12 }
13 
15  const ChromaWilsonRitz_t& input,
16  XMLWriter& xml_out);
17 
19  const ChromaWilsonRitz_t& input,
20  XMLWriter& xml_out);
21 
24  const ChromaWilsonRitz_t& input,
25  XMLWriter& xml_out);
26 
27 
28 int main(int argc, char **argv)
29 {
30  // Put the machine into a known state
31  Chroma::initialize(&argc, &argv);
32 
33  ChromaWilsonRitz_t input;
34  XMLReader xml_in(Chroma::getXMLInputFileName());
35 
36  try {
37  read(xml_in, "/WilsonRitzEigen", input);
38  }
39  catch( const std::string& e ) {
40  QDPIO::cerr << "Caught Exception: " << e << std::endl;
41  QDP_error_exit("Exiting\n");
42  }
43 
44  // Setup the lattice
45  Layout::setLattSize(input.nrow);
46  Layout::create();
47 
48 
49  QDP::RNG::setrn(input.seed);
50 
51  QDPIO::cout << "RitzEigen" << std::endl;
52 
53  multi1d<LatticeColorMatrix> u(Nd);
54  XMLReader gauge_file_xml, gauge_xml;
55  gaugeStartup(gauge_file_xml, gauge_xml, u, input.cfg);
56 
57  XMLFileWriter& xml_out = Chroma::getXMLOutputInstance();
58  push(xml_out, "RitzEigen");
59  proginfo(xml_out);
60 
61  // Write out the input
62  write(xml_out, "Input", xml_in);
63  write(xml_out, "Config_info", gauge_xml);
64 
65  xml_out.flush();
66 
67  // Check if the gauge field configuration is unitarized
69  // Calculate some gauge invariant observables just for info.
70  MesPlq(xml_out, "Observables", u);
71  xml_out.flush();
72 
73  // Initialise Fermion action
74  std::istringstream xml_fermact_string(input.fermact);
75  XMLReader fermacttop(xml_fermact_string);
76  const std::string fermact_path = "/FermionAction";
77  std::string fermact;
78  try
79  {
80  read(fermacttop, fermact_path + "/FermAct", fermact);
81  }
82  catch (const std::string& e)
83  {
84  QDPIO::cerr << "Error reading fermact: " << e << std::endl;
85  throw;
86  }
87 
88  QDPIO::cout << "FermAct = " << fermact << std::endl;
89 
90  // Make a reader for the stateInfo
91  std::istringstream state_info_is(input.state_info);
92  XMLReader state_info_xml(state_info_is);
93  std::string state_info_path="/StateInfo";
94 
95  bool success = false;
96 
97  // Typedefs to save typing
98  typedef LatticeFermion T;
99  typedef multi1d<LatticeColorMatrix> P;
100  typedef multi1d<LatticeColorMatrix> Q;
101 
102 #if 1
103  if( ! success ) {
104  try {
105  QDPIO::cout << "Trying 5D actions" << std::endl;
106 
107  // DWF-like 5D Wilson-Type stuff
109  S_f(TheWilsonTypeFermAct5DFactory::Instance().createObject(fermact,
110  fermacttop,
111  fermact_path));
112 
113  Handle< FermState<T,P,Q> > state(S_f->createState(u,
114  state_info_xml,
115  state_info_path));
116 
118 
119 
120  QDPIO::cout << "Call 5D ritz code" << std::endl;
121  RitzCode5D(MM, input, xml_out);
122  QDPIO::cout << "Done with 5D ritz code" << std::endl;
123 
124  success = true;
125  }
126  catch(const std::string& e ) {
127  QDPIO::cout << "5d: " << e << std::endl;
128  }
129  }
130 #endif
131 
132  if( ! success ) {
133  try {
134 
135  // Special case UNPRECONDITIONED_WILSON
136  QDPIO::cout << "Trying 4D Wilson Like actions: " << std::endl;
137 
138  if( fermact == "UNPRECONDITIONED_WILSON"
139  || fermact == "UNPRECONDITIONED_DWFTRANSF" ) {
140 
141  QDPIO::cout << "Special case. Computing Hw e-values and evecs too" << std::endl;
142  // DWF-like 5D Wilson-Type stuff
144  S_f(TheWilsonTypeFermActFactory::Instance().createObject(fermact,
145  fermacttop,
146  fermact_path));
147 
148  Handle< FermState<T,P,Q> > state(S_f->createState(u,
149  state_info_xml,
150  state_info_path));
151 
152  Handle< LinearOperator<T> > MM(S_f->lMdagM(state));
153 
154  Handle< LinearOperator<T> > H(S_f->hermitianLinOp(state));
155 
156  RitzCode4DHw(MM, H, input, xml_out);
157 
158  success = true;
159  }
160  else {
161 
163  S_f(TheWilsonTypeFermActFactory::Instance().createObject(fermact,
164  fermacttop,
165  fermact_path));
166 
167  Handle< FermState<T,P,Q> > state(S_f->createState(u,
168  state_info_xml,
169  state_info_path));
170 
171  Handle< LinearOperator<T> > MM(S_f->lMdagM(state));
172 
173  RitzCode4D(MM, input, xml_out);
174 
175  success = true;
176  }
177  }
178  catch(const std::string& e ) {
179  QDPIO::cout << "4D: " << e << std::endl;
180  }
181  }
182 
183 
184  pop(xml_out);
185  xml_out.flush();
186  xml_out.close();
188 
189  exit(0);
190 }
191 
192 
194  const ChromaWilsonRitz_t& input,
195  XMLWriter& xml_out)
196 {
197 
198  // Try and get lowest eigenvalue of MM
199  const Subset& s = MM->subset();
200 
201  multi1d<Real> lambda(input.ritz_params.Neig+input.ritz_params.Ndummy);
202  multi1d<Real> check_norm(input.ritz_params.Neig);
203  multi1d<LatticeFermion> psi(input.ritz_params.Neig
204  +input.ritz_params.Ndummy);
205 
206 
207  for(int i =0; i < input.ritz_params.Neig + input.ritz_params.Ndummy; i++){
208  psi[i] = zero;
209  gaussian(psi[i],s);
210  lambda[i] = Real(1);
211  }
212 
213 
214  int n_CG_count;
215  Real delta_cycle = Real(1);
216  XMLBufferWriter eig_spec_xml;
217  int n_KS_count = 0;
218  int n_jacob_count = 0;
219  EigSpecRitzKS(*MM,
220  lambda,
221  psi,
222  input.ritz_params.Neig,
223  input.ritz_params.Ndummy, // No of dummies
224  input.ritz_params.Nrenorm,
225  input.ritz_params.MinKSIter,
226  input.ritz_params.MaxKSIter, // Max iters / KS cycle
227  input.ritz_params.MaxKS, // Max no of KS cycles
228  input.ritz_params.GammaFactor, // Gamma factor
229  input.ritz_params.MaxCG,
230  input.ritz_params.RsdR,
231  input.ritz_params.RsdA,
232  input.ritz_params.RsdZero,
233  input.ritz_params.ProjApsiP,
234  n_CG_count,
235  n_KS_count,
236  n_jacob_count,
237  eig_spec_xml);
238 
239  // Dump output
240  xml_out << eig_spec_xml;
241  write(xml_out, "lambda_Msq", lambda);
242 
243  // Check norms
244  for(int i=0; i < input.ritz_params.Neig; i++) {
245  LatticeFermion Me;
246  LatticeFermion lambda_e;
247  (*MM)(Me, psi[i], PLUS);
248  lambda_e[s] = lambda[i]*psi[i];
249 
250 
251  LatticeFermion r_norm;
252  r_norm[s] = Me - lambda_e;
253 
254  check_norm[i] = norm2(r_norm,s);
255  check_norm[i] = sqrt(check_norm[i]);
256  }
257  write(xml_out, "check_norm", check_norm);
258 
259  for(int i=0; i < input.ritz_params.Neig; i++) {
260  check_norm[i] /= fabs(lambda[i]);
261  }
262  write(xml_out, "check_norm_rel", check_norm);
263 
264 
265  // Now get the absolute value of the highest e-value
266  // Work with H^{dag}H = M^{dag}M
267  Real hi_RsdR = 1.0e-4;
268  Real hi_RsdA = 1.0e-4;
269 
271 
272  multi1d<Real> lambda_high_aux(1);
273  multi1d<LatticeFermion> lambda_high_vec(1);
274  gaussian(lambda_high_vec[0],s);
275  lambda_high_vec[0][s] /= sqrt(norm2(lambda_high_vec[0],s));
276 
277  int n_cg_high;
278  XMLBufferWriter high_xml;
279 
280  // Initial guess -- upper bound on spectrum
281  lambda_high_aux[0] = Real(8);
282 
283 
284  push(high_xml, "LambdaHighRitz");
285 
286  // Minus MM ought to produce a negative e-value
287  // since MM is herm_pos_def
288  // ie minus MM is hermitian -ve definite
289  EigSpecRitzCG( *MinusMM,
290  lambda_high_aux,
291  lambda_high_vec,
292  1,
293  input.ritz_params.Nrenorm,
294  input.ritz_params.MinKSIter,
295  input.ritz_params.MaxCG,
296  hi_RsdR,
297  hi_RsdA,
298  input.ritz_params.RsdZero,
299  input.ritz_params.ProjApsiP,
300  n_cg_high,
301  high_xml);
302 
303  lambda_high_aux[0] = fabs(lambda_high_aux[0]);
304  QDPIO::cout << "|| lambda_hi || = " << lambda_high_aux[0] << " hi_Rsd_r = " << hi_RsdR << std::endl;
305 
306  pop(high_xml);
307  xml_out << high_xml;
308 
309  push(xml_out, "Highest");
310  write(xml_out, "lambda_Msq_hi", lambda_high_aux[0]);
311  pop(xml_out);
312 }
313 
316  const ChromaWilsonRitz_t& input,
317  XMLWriter& xml_out)
318 {
319 
320  // Try and get lowest eigenvalue of MM
321  const Subset& s = MM->subset();
322 
323  multi1d<Real> lambda(input.ritz_params.Neig+input.ritz_params.Ndummy);
324  multi1d<Real> check_norm(input.ritz_params.Neig);
325  multi1d<LatticeFermion> psi(input.ritz_params.Neig
326  +input.ritz_params.Ndummy);
327 
328 
329  for(int i =0; i < input.ritz_params.Neig + input.ritz_params.Ndummy; i++){
330  psi[i] = zero;
331  gaussian(psi[i],s);
332  lambda[i] = Real(1);
333  }
334 
335 
336  int n_CG_count;
337  Real delta_cycle = Real(1);
338  XMLBufferWriter eig_spec_xml;
339  int n_KS_count = 0;
340  int n_jacob_count = 0;
341  EigSpecRitzKS(*MM,
342  lambda,
343  psi,
344  input.ritz_params.Neig,
345  input.ritz_params.Ndummy, // No of dummies
346  input.ritz_params.Nrenorm,
347  input.ritz_params.MinKSIter,
348  input.ritz_params.MaxKSIter, // Max iters / KS cycle
349  input.ritz_params.MaxKS, // Max no of KS cycles
350  input.ritz_params.GammaFactor, // Gamma factor
351  input.ritz_params.MaxCG,
352  input.ritz_params.RsdR,
353  input.ritz_params.RsdA,
354  input.ritz_params.RsdZero,
355  input.ritz_params.ProjApsiP,
356  n_CG_count,
357  n_KS_count,
358  n_jacob_count,
359  eig_spec_xml);
360 
361  // Dump output
362  xml_out << eig_spec_xml;
363  write(xml_out, "lambda_Msq", lambda);
364 
365  // Check norms
366  for(int i=0; i < input.ritz_params.Neig; i++) {
367  LatticeFermion Me;
368  LatticeFermion lambda_e;
369  (*MM)(Me, psi[i], PLUS);
370  lambda_e[s] = lambda[i]*psi[i];
371 
372 
373  LatticeFermion r_norm;
374  r_norm[s] = Me - lambda_e;
375 
376  check_norm[i] = norm2(r_norm,s);
377  check_norm[i] = sqrt(check_norm[i]);
378  }
379  write(xml_out, "check_norm", check_norm);
380 
381  for(int i=0; i < input.ritz_params.Neig; i++) {
382  check_norm[i] /= fabs(lambda[i]);
383  }
384  write(xml_out, "check_norm_rel", check_norm);
385 
386  // Fix to ev-s of gamma_5 wilson...
387  // Try to get one:
388  multi1d<bool> valid_eig(input.ritz_params.Neig);
389  int n_valid;
390  int n_jacob;
391 
392  fixMMev2Mev(*H,
393  lambda,
394  psi,
395  input.ritz_params.Neig,
396  input.ritz_params.RsdR,
397  input.ritz_params.RsdA,
398  input.ritz_params.RsdZero,
399  valid_eig,
400  n_valid,
401  n_jacob);
402 
403  push(xml_out, "eigFix");
404  write(xml_out, "lambda_Hw", lambda);
405  write(xml_out, "n_valid", n_valid);
406  write(xml_out, "valid_eig", valid_eig);
407 
408  for(int i=0; i < input.ritz_params.Neig; i++) {
409  LatticeFermion Me;
410  (*H)(Me, psi[i], PLUS);
411 
412  bool zeroP = toBool( fabs(lambda[i]) < input.ritz_params.RsdZero );
413  if( zeroP ) {
414  check_norm[i] = norm2(Me,s);
415  check_norm[i] = sqrt(check_norm[i]);
416  }
417  else {
418  LatticeFermion lambda_e;
419  LatticeFermion r_norm;
420 
421  lambda_e[s] = lambda[i]*psi[i];
422  r_norm[s] = Me - lambda_e;
423 
424 
425  check_norm[i] = norm2(r_norm,s);
426  check_norm[i] = sqrt(check_norm[i]);
427  }
428 
429  QDPIO::cout << "lambda_lo[" << i << "] = " << lambda[i] << " ";
430  QDPIO::cout << "check_norm["<<i<<"] = " << check_norm[i] << std::endl;
431  }
432  write(xml_out, "check_norm", check_norm);
433 
434  for(int i=0; i < input.ritz_params.Neig; i++) {
435  check_norm[i] /= fabs(lambda[i]);
436  QDPIO::cout << "check_norm_rel["<< i <<"] = " << check_norm[i] << std::endl;
437  }
438  QDPIO::cout << std::flush ;
439  write(xml_out, "check_norm_rel", check_norm);
440  pop(xml_out);
441 
442 
443  // Now get the absolute value of the highest e-value
444  // Work with H^{dag}H = M^{dag}M
445  Real hi_RsdR = 1.0e-4;
446  Real hi_RsdA = 1.0e-4;
447 
448  multi1d<Real> lambda_high_aux(1);
449  multi1d<LatticeFermion> lambda_high_vec(1);
450  gaussian(lambda_high_vec[0],s);
451  lambda_high_vec[0][s] /= sqrt(norm2(lambda_high_vec[0],s));
452 
453  int n_cg_high;
454  XMLBufferWriter high_xml;
455 
457  // Initial guess -- upper bound on spectrum
458  lambda_high_aux[0] = Real(8);
459 
460 
461  push(high_xml, "LambdaHighRitz");
462 
463  // Minus MM ought to produce a negative e-value
464  // since MM is herm_pos_def
465  // ie minus MM is hermitian -ve definite
466  EigSpecRitzCG( *MinusMM,
467  lambda_high_aux,
468  lambda_high_vec,
469  1,
470  input.ritz_params.Nrenorm,
471  input.ritz_params.MinKSIter,
472  input.ritz_params.MaxCG,
473  hi_RsdR,
474  hi_RsdA,
475  input.ritz_params.RsdZero,
476  input.ritz_params.ProjApsiP,
477  n_cg_high,
478  high_xml);
479 
480  lambda_high_aux[0] = sqrt(fabs(lambda_high_aux[0]));
481  QDPIO::cout << "|| lambda_hi || = " << lambda_high_aux[0] << " hi_Rsd_r = " << hi_RsdR << std::endl;
482 
483  pop(high_xml);
484  xml_out << high_xml;
485 
486  push(xml_out, "Highest");
487  write(xml_out, "lambda_hi", lambda_high_aux[0]);
488  pop(xml_out);
489 
490  QDPIO::cout << "Writing low eigenvalues/vectors" << std::endl;
491  writeEigen(input, lambda, psi, lambda_high_aux[0], QDPIO_SERIAL);
492 
493 }
494 
496  const ChromaWilsonRitz_t& input,
497  XMLWriter& xml_out)
498 {
499  // Try and get lowest eigenvalue of MM
500  int N5 = MM->size();
501  const Subset& s = MM->subset();
502 
503  multi1d<Real> lambda(input.ritz_params.Neig+input.ritz_params.Ndummy);
504  multi1d<Real> check_norm(input.ritz_params.Neig);
505  multi2d<LatticeFermion> psi(input.ritz_params.Neig
506  +input.ritz_params.Ndummy, N5);
507 
508 
509  for(int i =0; i < input.ritz_params.Neig + input.ritz_params.Ndummy; i++){
510  for(int n=0; n < N5; n++) {
511  psi[i][n] = zero;
512  gaussian(psi[i][n],s);
513  }
514  lambda[i] = Real(1);
515  }
516 
517 
518  int n_CG_count;
519  Real delta_cycle = Real(1);
520  XMLBufferWriter eig_spec_xml;
521  int n_KS_count = 0;
522  int n_jacob_count = 0;
523 
524 #if 1
525  QDPIO::cout << "Call EigSpecRitzKS" << std::endl;
526 
527  EigSpecRitzKS(*MM,
528  lambda,
529  psi,
530  input.ritz_params.Neig,
531  input.ritz_params.Ndummy, // No of dummies
532  input.ritz_params.Nrenorm,
533  input.ritz_params.MinKSIter,
534  input.ritz_params.MaxKSIter, // Max iters / KS cycle
535  input.ritz_params.MaxKS, // Max no of KS cycles
536  input.ritz_params.GammaFactor, // Gamma factor
537  input.ritz_params.MaxCG,
538  input.ritz_params.RsdR,
539  input.ritz_params.RsdA,
540  input.ritz_params.RsdZero,
541  input.ritz_params.ProjApsiP,
542  n_CG_count,
543  n_KS_count,
544  n_jacob_count,
545  eig_spec_xml);
546 #else
547 
548  QDPIO::cout << "Call EigSpecRitzCG" << std::endl;
549 
550  EigSpecRitzCG( *MM,
551  lambda,
552  psi,
553  input.ritz_params.Neig,
554  input.ritz_params.Nrenorm,
555  input.ritz_params.MinKSIter,
556  input.ritz_params.MaxCG,
557  input.ritz_params.RsdR,
558  input.ritz_params.RsdA,
559  input.ritz_params.RsdZero,
560  input.ritz_params.ProjApsiP,
561  n_CG_count,
562  eig_spec_xml);
563 #endif
564 
565  // Dump output
566  xml_out << eig_spec_xml;
567  write(xml_out, "lambda_Msq", lambda);
568 
569  // Check norms
570  for(int i=0; i < input.ritz_params.Neig; i++) {
571  multi1d<LatticeFermion> Me(N5);
572  multi1d<LatticeFermion> lambda_e(N5);
573  (*MM)(Me, psi[i], PLUS);
574  for(int n =0; n < N5; n++) {
575  lambda_e[n][s] = lambda[i]*psi[i][n];
576  }
577 
578  multi1d<LatticeFermion> r_norm(N5);
579  for(int n=0; n < N5; n++) {
580  r_norm[n][s] = Me[n] - lambda_e[n];
581  }
582 
583  check_norm[i] = norm2(r_norm[0],s);
584  for(int n=1; n < N5; n++) {
585  check_norm[i] += norm2(r_norm[n],s);
586  }
587 
588  check_norm[i] = sqrt(check_norm[i]);
589  }
590  write(xml_out, "check_norm", check_norm);
591 
592  for(int i=0; i < input.ritz_params.Neig; i++) {
593  check_norm[i] /= fabs(lambda[i]);
594  }
595  write(xml_out, "check_norm_rel", check_norm);
596 
597  // Now get the absolute value of the highest e-value
598  // Work with H^{dag}H = M^{dag}M
599 
600 
601  Real hi_RsdR = 1.0e-4;
602  Real hi_RsdA = 1.0e-4;
604 
605  multi1d<Real> lambda_high_aux(1);
606  multi2d<LatticeFermion> lambda_high_vec(1,N5);
607  for(int n=0; n < N5; n++) {
608  gaussian(lambda_high_vec[0][n],s);
609  lambda_high_vec[0][n][s] /= sqrt(norm2(lambda_high_vec[0],s));
610  }
611 
612  int n_cg_high;
613  XMLBufferWriter high_xml;
614 
615  // Initial guess -- upper bound on spectrum
616  lambda_high_aux[0] = Real(8);
617 
618 
619  push(high_xml, "LambdaHighRitz");
620 
621  // Minus MM ought to produce a negative e-value
622  // since MM is herm_pos_def
623  // ie minus MM is hermitian -ve definite
624  EigSpecRitzCG( *MinusMM,
625  lambda_high_aux,
626  lambda_high_vec,
627  1,
628  input.ritz_params.Nrenorm,
629  input.ritz_params.MinKSIter,
630  input.ritz_params.MaxCG,
631  hi_RsdR,
632  hi_RsdA,
633  input.ritz_params.RsdZero,
634  input.ritz_params.ProjApsiP,
635  n_cg_high,
636  high_xml);
637 
638  lambda_high_aux[0] = fabs(lambda_high_aux[0]);
639  QDPIO::cout << "|| lambda_hi || = " << lambda_high_aux[0] << " hi_Rsd_r = " << hi_RsdR << std::endl;
640 
641  pop(high_xml);
642  xml_out << high_xml;
643 
644  push(xml_out, "Highest");
645  write(xml_out, "lambda_Msq_hi", lambda_high_aux[0]);
646  pop(xml_out);
647 }
Primary include file for CHROMA in application codes.
Class for counted reference semantics.
Definition: handle.h:33
Linear Operator to arrays.
Definition: linearop.h:61
static T & Instance()
Definition: singleton.h:432
Partial specialization of scaled M operator over arrays.
Definition: lopscl.h:111
Scaled Linear Operator.
Definition: lopscl.h:22
void EigSpecRitzCG(const LinearOperator< LatticeFermion > &M, multi1d< Real > &lambda_H, multi1d< LatticeFermion > &psi, int n_eig, int n_renorm, int n_min, int MaxCG, const Real &Rsd_r, const Real &Rsd_a, const Real &zero_cutoff, const bool ProjApsiP, int &n_cg_tot, XMLWriter &xml_out)
Compute low lying eigenvalues of the hermitian H.
Definition: eig_spec.cc:41
void read(XMLReader &xml, const std::string &path, AsqtadFermActParams &param)
Read parameters.
void write(XMLWriter &xml, const std::string &path, const AsqtadFermActParams &param)
Writer parameters.
void unitarityCheck(const multi1d< LatticeColorMatrixF3 > &u)
Check the unitarity of color matrix in SU(N)
Definition: unit_check.cc:20
void gaugeStartup(XMLReader &gauge_file_xml, XMLReader &gauge_xml, multi1d< LatticeColorMatrix > &u, Cfg_t &cfg)
Initialize the gauge fields.
void proginfo(XMLWriter &xml)
Print out basic information about this program.
Definition: proginfo.cc:24
void writeEigen(const ChromaWilsonRitz_t &header, multi1d< Real > &lambda_lo, multi1d< LatticeFermion > &eigv_lo, Real &lambda_hi, QDP_serialparallel_t serpar)
Definition: eigen_io.cc:170
unsigned n
Definition: ldumul_w.cc:36
void setrn(int iseed[4])
Definition: make_seeds.cc:38
Nd
Definition: meslate.cc:74
multi1d< LatticeColorMatrix > P
bool registerAll()
Register all the factories.
Asqtad Staggered-Dirac operator.
Definition: klein_gord.cc:10
gaussian(aux)
void fixMMev2Mev(const LinearOperator< LatticeFermion > &M, multi1d< Real > &lambda, multi1d< LatticeFermion > &ev_psi, const int n_eig, const Real &Rsd_r, const Real &Rsd_a, const Real &zero_cutoff, multi1d< bool > &valid_eig, int &n_valid, int &n_jacob)
Definition: eig_spec.cc:321
void EigSpecRitzKS(const LinearOperator< LatticeFermion > &M, multi1d< Real > &lambda_H, multi1d< LatticeFermion > &psi, int n_eig, int n_dummy, int n_renorm, int n_min, int n_max, int n_max_KS, const Real &gamma_factor, int MaxCG, const Real &Rsd_r, const Real &Rsd_a, const Real &zero_cutoff, const bool ProjApsiP, int &n_cg_tot, int &n_KS, int &n_jacob_tot, XMLWriter &xml_out)
Definition: eig_spec.cc:124
QDP_error_exit("too many BiCG iterations", n_count, rsd_sq, cp, c, re_rvr, im_rvr, re_a, im_a, re_b, im_b)
static multi1d< LatticeColorMatrix > u
LinOpSysSolverMGProtoClover::Q Q
push(xml_out,"Condensates")
LinOpSysSolverMGProtoClover::T T
int i
Definition: pbg5p_w.cc:55
void initialize(int *argc, char ***argv)
Chroma initialisation routine.
Definition: chroma_init.cc:114
@ PLUS
Definition: chromabase.h:45
void finalize(void)
Chroma finalization routine.
Definition: chroma_init.cc:308
std::string getXMLInputFileName()
Get input file name.
Definition: chroma_init.cc:88
LatticeFermion psi
Definition: mespbg5p_w.cc:35
pop(xml_out)
void MesPlq(const multi1d< LatticeColorMatrixF3 > &u, multi2d< Double > &plane_plaq, Double &link)
Definition: mesplq.cc:83
const WilsonTypeFermAct< multi1d< LatticeFermion > > Handle< const ConnectState > state
Definition: pbg5p_w.cc:28
XMLFileWriter & getXMLOutputInstance()
Get xml output instance.
Definition: chroma_init.cc:359
const WilsonTypeFermAct< multi1d< LatticeFermion > > & S_f
Definition: pbg5p_w.cc:27
Double zero
Definition: invbicg.cc:106
multi1d< LatticeFermion > s(Ncb)
::std::string string
Definition: gtest.h:1979
Double r_norm
Definition: pade_trln_w.cc:86
Struct for the overall application.
Definition: eigen_io.h:50
multi1d< int > nrow
Definition: eigen_io.h:54
RitzParams_t ritz_params
Definition: eigen_io.h:56
std::string state_info
Definition: eigen_io.h:53
void RitzCode4DHw(Handle< LinearOperator< LatticeFermion > > &MM, Handle< LinearOperator< LatticeFermion > > &H, const ChromaWilsonRitz_t &input, XMLWriter &xml_out)
Definition: t_ritz_KS.cc:314
bool linkage_hack()
Definition: t_ritz_KS.cc:6
int main(int argc, char **argv)
Definition: t_ritz_KS.cc:28
void RitzCode4D(Handle< LinearOperator< LatticeFermion > > &MM, const ChromaWilsonRitz_t &input, XMLWriter &xml_out)
Definition: t_ritz_KS.cc:193
void RitzCode5D(Handle< LinearOperatorArray< LatticeFermion > > &MM, const ChromaWilsonRitz_t &input, XMLWriter &xml_out)
Definition: t_ritz_KS.cc:495