CHROMA
t_gauge_force.cc
Go to the documentation of this file.
1 #include "chroma.h"
2 #include <iostream>
3 
4 int main(int argc, char *argv[])
5 {
6  // Initialise QDP
7  Chroma::initialize(&argc, &argv);
8 
9  // Setup a small lattice
10  const int nrow_arr[] = {4, 4, 4, 4};
11  multi1d<int> nrow(Nd);
12  nrow=nrow_arr;
13  Layout::setLattSize(nrow);
14  Layout::create();
15 
16  multi1d<LatticeColorMatrix> u(Nd);
17  {
18  XMLReader file_xml;
19  XMLReader config_xml;
21  // Cfg_t foo; foo.cfg_type=CFG_TYPE_SZIN; foo.cfg_file="./CFGIN";
22  gaugeStartup(file_xml, config_xml, u, foo);
23  }
24 
25  XMLFileWriter xml_out("./XMLDAT");
26  push(xml_out, "t_gauge_force");
27 
28  multi1d<LatticeColorMatrix> p(Nd);
29 
30 
31  // Get Periodic Gauge Boundaries
32  typedef multi1d<LatticeColorMatrix> P;
33  typedef multi1d<LatticeColorMatrix> Q;
34 
37  Real betaMC = Real(5.7);
38  RectGaugeAct S_g_MC(cgs, betaMC);
39 
40  multi1d<LatticeColorMatrix> dsdu_1(Nd);
41  multi1d<LatticeColorMatrix> dsdu_2(Nd);
42 
43  dsdu_1 = zero;
44  dsdu_2 = zero;
45 
46  Handle< GaugeState<P,Q> > state1(S_g_MC.createState(u));
47  S_g_MC.deriv(dsdu_1, state1);
48  Double S1 = S_g_MC.S(state1);
49 
50  // Test gauge invariance
51  LatticeColorMatrix g;
52  rgauge(u, g);
53 
54  Handle< GaugeState<P,Q> > state2(S_g_MC.createState(u));
55  S_g_MC.deriv(dsdu_2, state2);
56  Double S2 = S_g_MC.S(state2);
57 
58  push(xml_out, "ForceDiff");
59  write(xml_out, "S1", S1);
60  write(xml_out, "S2", S2);
61  write(xml_out, "S_diff", norm2(S1-S2));
62  pop(xml_out);
63 
64  for(int mu=0; mu < Nd; mu++)
65  {
66 // taproj(dsdu_1[mu]);
67 // taproj(dsdu_2[mu]);
68 
69 // push(xml_out, "dsdu");
70 // write(xml_out, "dsdu_1", dsdu_1[mu]);
71 // write(xml_out, "dsdu_2", dsdu_2[mu]);
72 // pop(xml_out);
73 
74  Double sum_diff=norm2(dsdu_1[mu] - adj(g)*dsdu_2[mu]*g);
75  QDPIO::cout << "Mu = " << mu << " Sum Diff=" << sum_diff << std::endl;
76 
77  push(xml_out, "ForceDiff");
78  write(xml_out, "mu", mu);
79  write(xml_out, "dsdu1_norm", norm2(dsdu_1[mu]));
80  write(xml_out, "dsdu2_norm", norm2(dsdu_2[mu]));
81  write(xml_out, "dsdu_diff", sum_diff);
82  pop(xml_out);
83  }
84 
85  pop(xml_out);
86  xml_out.close();
87 
88  // Finish
90 
91  exit(0);
92 }
93 
Primary include file for CHROMA in application codes.
Create a simple gauge connection state.
virtual GaugeState< P, Q > * createState(const Q &q) const
Given links, create the state.
Definition: gaugeact.h:40
Class for counted reference semantics.
Definition: handle.h:33
Rect gauge action.
Definition: rect_gaugeact.h:54
void deriv(multi1d< LatticeColorMatrix > &result, const Handle< GaugeState< P, Q > > &state) const
Compute dS/dU.
Double S(const Handle< GaugeState< P, Q > > &state) const
Compute the actions.
int mu
Definition: cool.cc:24
void write(XMLWriter &xml, const std::string &path, const AsqtadFermActParams &param)
Writer parameters.
void rgauge(multi1d< LatticeColorMatrix > &u, LatticeColorMatrix &g)
Do a random gauge transformation on the u fields.
Definition: rgauge.cc:24
void gaugeStartup(XMLReader &gauge_file_xml, XMLReader &gauge_xml, multi1d< LatticeColorMatrix > &u, Cfg_t &cfg)
Initialize the gauge fields.
@ CFG_TYPE_DISORDERED
Nd
Definition: meslate.cc:74
multi1d< LatticeColorMatrix > P
static multi1d< LatticeColorMatrix > u
LinOpSysSolverMGProtoClover::Q Q
void initialize(int *argc, char ***argv)
Chroma initialisation routine.
Definition: chroma_init.cc:114
void finalize(void)
Chroma finalization routine.
Definition: chroma_init.cc:308
Double zero
Definition: invbicg.cc:106
FloatingPoint< double > Double
Definition: gtest.h:7351
Gauge configuration structure.
Definition: cfgtype_io.h:16
CfgType cfg_type
Definition: cfgtype_io.h:17
int main(int argc, char *argv[])
Definition: t_gauge_force.cc:4
push(xml_out,"Cooled_Topology")
pop(xml_out)