CHROMA
gauge_startup.cc
Go to the documentation of this file.
1 /*! \file
2  * \brief Initialize the gauge fields
3  */
4 
5 #include "chromabase.h"
7 #include "util/gauge/reunit.h"
8 
9 #include "qdp_iogauge.h"
10 #include "io/param_io.h"
11 #include "io/gauge_io.h"
12 #include "io/readszin.h"
13 #include "io/readwupp.h"
14 #include "io/readmilc.h"
15 #include "io/kyugauge_io.h"
16 #include "io/readcppacs.h"
17 #include "io/cern_io.h"
18 
19 #include "util/gauge/hotst.h"
20 #include "util/gauge/weak_field.h"
21 
23 
24 namespace Chroma
25 {
26 
27  //! Initialize the gauge fields
28  /*!
29  * \ingroup gauge
30  *
31  * \param gauge_file_xml File xml
32  * \param gauge_xml Record xml
33  * \param u Gauge fields
34  * \param cfg Configuration structure
35  */
36  void gaugeStartup(XMLReader& gauge_file_xml,
37  XMLReader& gauge_xml,
38  multi1d<LatticeColorMatrix>& u,
39  Cfg_t& cfg)
40  {
41  START_CODE();
42 
43  u.resize(Nd);
44 
45  switch (cfg.cfg_type)
46  {
47  case CFG_TYPE_SZIN :
48  readSzin(gauge_xml, u, cfg.cfg_file);
49  break;
50 
51  case CFG_TYPE_SZINQIO:
52  case CFG_TYPE_SCIDAC:
53  readGauge(gauge_file_xml, gauge_xml, u, cfg.cfg_file, QDPIO_SERIAL);
54  break;
55 
56  case CFG_TYPE_NERSC:
57  readArchiv(gauge_xml, u, cfg.cfg_file);
58  break;
59 
60  case CFG_TYPE_MILC:
61  readMILC(gauge_xml, u, cfg.cfg_file);
62  break;
63 
64  case CFG_TYPE_CPPACS :
65  readCPPACS(gauge_xml, u, cfg.cfg_file);
66  break;
67 
68  case CFG_TYPE_WUPP :
69  readWupp(gauge_xml, u, cfg.cfg_file);
70  break;
71 
72  case CFG_TYPE_CERN :
73  readCERN(u, cfg.cfg_file);
74  break;
75 
76 
77  case CFG_TYPE_KYU:
78  {
79  readKYU(u, cfg.cfg_file);
80 
81  XMLBufferWriter file_xml, record_xml;
82  push(file_xml, "gauge");
83  write(file_xml, "id", int(0));
84  pop(file_xml);
85  push(record_xml, "kentucky");
86  pop(record_xml);
87 
88  gauge_file_xml.open(file_xml);
89  gauge_xml.open(record_xml);
90  }
91  break;
92 
94  {
95  QDPIO::cout << "Starting up disordered (random/hot) config" << std::endl;
96  HotSt(u);
97 
98  XMLBufferWriter file_xml, record_xml;
99  push(file_xml, "gauge");
100  write(file_xml, "id", int(0));
101  pop(file_xml);
102  push(record_xml, "disordered");
103  pop(record_xml);
104 
105  gauge_file_xml.open(file_xml);
106  gauge_xml.open(record_xml);
107  }
108  break;
109 
110  case CFG_TYPE_UNIT:
111  {
112  QDPIO::cout << "Starting up unit gauge (free) config" << std::endl;
113  u = 1;
114 
115  XMLBufferWriter file_xml, record_xml;
116  push(file_xml, "gauge");
117  write(file_xml, "id", int(0));
118  pop(file_xml);
119  push(record_xml, "unit");
120  pop(record_xml);
121 
122  gauge_file_xml.open(file_xml);
123  gauge_xml.open(record_xml);
124  }
125  break;
126 
127  case CFG_TYPE_WEAK_FIELD:
128  {
129  QDPIO::cout << "Starting up a weak field config" << std::endl;
130  weakField(u);
131 
132  XMLBufferWriter file_xml, record_xml;
133  push(file_xml, "gauge");
134  write(file_xml, "id", int(0));
135  pop(file_xml);
136  push(record_xml, "weak_field");
137  pop(record_xml);
138 
139  gauge_file_xml.open(file_xml);
140  gauge_xml.open(record_xml);
141  }
142  break;
143 
145  {
146  QDPIO::cout << "Starting up a classical Schroedinger functional config" << std::endl;
148  params.loop_extent = 1;
149  params.SchrPhiMult = 1;
150  params.decay_dir = Nd-1;
151  SchrNonPertGaugeBC gaugebc(params);
152 
153  u = gaugebc.SFBndFld();
154 
155  XMLBufferWriter file_xml, record_xml;
156  push(file_xml, "gauge");
157  write(file_xml, "id", int(0));
158  pop(file_xml);
159  write(record_xml, "SF_classical", params);
160 
161  gauge_file_xml.open(file_xml);
162  gauge_xml.open(record_xml);
163  }
164  break;
165 
166  default:
167  QDPIO::cerr << __func__ << ": Configuration type is unsupported." << std::endl;
168  QDP_abort(1);
169  }
170 
171  // Reunitarize gauge field (eg for Double prec?)
172  // This should get rid of those pesky big Delta H's
173  // going from single to double and they can't possibly hurt
174  // in either single or double
175  for(int mu=0; mu < Nd; mu++){
176  reunit(u[mu]);
177  }
178 
179 
180  END_CODE();
181  }
182 
183 } // end namespace Chroma
CPPACS gauge format routines.
Primary include file for CHROMA library code.
Concrete class for Schroedinger BC - use for nonpertubative tuning.
const multi1d< LatticeColorMatrix > & SFBndFld() const
Fixed gauge links on only the lSFmask() sites.
int mu
Definition: cool.cc:24
Gauge reader/writers in QIO format.
Initialize the gauge fields.
void write(XMLWriter &xml, const std::string &path, const AsqtadFermActParams &param)
Writer parameters.
void HotSt(multi1d< LatticeColorMatrix > &u)
Set a gauge field from a sample of (almost) Haar measure.
Definition: hotst.cc:34
void weakField(multi1d< LatticeColorMatrix > &u)
Construct a weak field.
Definition: weak_field.cc:22
void gaugeStartup(XMLReader &gauge_file_xml, XMLReader &gauge_xml, multi1d< LatticeColorMatrix > &u, Cfg_t &cfg)
Initialize the gauge fields.
void readMILC(MILCGauge_t &header, multi1d< LatticeColorMatrixF > &u, const std::string &cfg_file)
Read a MILC configuration file.
Definition: readmilc.cc:22
void readWupp(multi1d< LatticeColorMatrix > &u, const std::string &cfg_file)
Read a WUPP configuration file.
Definition: readwupp.cc:27
void readGauge(XMLReader &file_xml, XMLReader &record_xml, multi1d< LatticeColorMatrix > &u, const std::string &file, QDP_serialparallel_t serpar)
Read a gauge config in QIO format.
Definition: gauge_io.cc:19
void readKYU(multi1d< LatticeColorMatrix > &u, const std::string &cfg_file)
Read a Kentucky gauge configuration.
Definition: kyugauge_io.cc:20
void readCPPACS(CPPACSGauge_t &header, multi1d< LatticeColorMatrix > &u, const std::string &cfg_file)
Read a CPPACCPPACS configuration file.
Definition: readcppacs.cc:27
void readSzin(SzinGauge_t &header, multi1d< LatticeColorMatrix > &u, const std::string &cfg_file)
Read a SZIN configuration file.
Definition: readszin.cc:31
@ CFG_TYPE_WEAK_FIELD
@ CFG_TYPE_DISORDERED
@ CFG_TYPE_SZINQIO
@ CFG_TYPE_CLASSICAL_SF
@ CFG_TYPE_NERSC
@ CFG_TYPE_CPPACS
@ CFG_TYPE_SCIDAC
Set a gauge field from a sample of (almost) Haar measure.
Params params
Read/write a KYU gauge configuration.
Nd
Definition: meslate.cc:74
Asqtad Staggered-Dirac operator.
Definition: klein_gord.cc:10
static multi1d< LatticeColorMatrix > u
push(xml_out,"Condensates")
void readCERN(multi1d< LatticeColorMatrix > &, const std::string &)
Definition: readcern.cc:223
void reunit(LatticeColorMatrixF3 &xa)
Definition: reunit.cc:467
pop(xml_out)
START_CODE()
Various parameter structs and reader/writers.
Read a CPPACS gauge configuration.
Read a MILC gauge configuration written in the 1997 format.
Read in a configuration written by SZIN up to configuration version 7.
Read in a configuration written by Wupp up to configuration version 7.
Reunitarize in place a color matrix to SU(N)
Schroedinger BC - use for non-pertubative tuning of clover action.
Gauge configuration structure.
Definition: cfgtype_io.h:16
std::string cfg_file
Definition: cfgtype_io.h:18
CfgType cfg_type
Definition: cfgtype_io.h:17
Construct a weak field.