CHROMA
schr_sf_zero_gaugebc.h
Go to the documentation of this file.
1 // -*- C++ -*-
2 /*! \file
3  * \brief Schroedinger BC - happens to zero out gauge fields in bc_dir
4  */
5 
6 #ifndef __schr_sf_zero_gaugebc_h__
7 #define __schr_sf_zero_gaugebc_h__
8 
11 
12 namespace Chroma
13 {
14 
15  /*! @ingroup gaugebcs */
16  namespace SchrSFZeroGaugeBCEnv
17  {
18  extern const std::string name;
19  bool registerAll();
20  }
21 
22 
23  //! Concrete class for Schroedinger BC - zero out gauge boundaries
24  /*! @ingroup gaugebcs
25  *
26  * Schroedinger BC for gauge actions
27  */
29  {
30  public:
31  //! Only full constructor
33 
34  //! Destructor is automatic
36 
37  //! Decay direction
38  int getDir() const {return param.decay_dir;}
39 
40  //! Modify U fields in place
41  /*! Default version provided */
42  void modify(multi1d<LatticeColorMatrix>& u) const;
43 
44  //! Zero the some gauge-like field in place on the masked links
45  /*! Default version provided */
46  void zero(multi1d<LatticeColorMatrix>& ds_u) const;
47 
48  //! Mask which lattice sites have fixed gauge links
49  const multi1d<LatticeBoolean>& lSFmask() const {return mask;}
50 
51  //! Fixed gauge links on only the lSFmask() sites
52  const multi1d<LatticeColorMatrix>& SFBndFld() const {return fld;}
53 
54  protected:
55  //! Maximum plaquette size. This is what knows about 1x1 plaq or 1x2 rect.
56  /*! \return 1 for 1x1 plaq or 2 for 1x2 rect in decay_dir */
57  int getMaxExtent() const {return param.loop_extent;}
58 
59  //! Multiplier on phases
60  const Real& SchrPhiMult() const {return param.SchrPhiMult;}
61 
62  //! Get the angles on the boundaries
63  const Phases_t& getPhases() const {return phases;}
64 
65  //! Initialize the phases
66  void initPhases();
67 
68  private:
69  // Hide default constuctor
71  void operator=(const SchrSFZeroGaugeBC&) {}
72 
73  private:
76  multi1d<LatticeBoolean> mask;
77  multi1d<LatticeColorMatrix> fld;
78  };
79 
80 }
81 
82 #endif
Abstract class for SOME Schroedinger gauge BC.
Concrete class for Schroedinger BC - zero out gauge boundaries.
~SchrSFZeroGaugeBC()
Destructor is automatic.
const Real & SchrPhiMult() const
Multiplier on phases.
multi1d< LatticeBoolean > mask
int getDir() const
Decay direction.
const multi1d< LatticeBoolean > & lSFmask() const
Mask which lattice sites have fixed gauge links.
void modify(multi1d< LatticeColorMatrix > &u) const
Modify U fields in place.
const multi1d< LatticeColorMatrix > & SFBndFld() const
Fixed gauge links on only the lSFmask() sites.
void zero(multi1d< LatticeColorMatrix > &ds_u) const
Zero the some gauge-like field in place on the masked links.
multi1d< LatticeColorMatrix > fld
void operator=(const SchrSFZeroGaugeBC &)
void initPhases()
Initialize the phases.
const Phases_t & getPhases() const
Get the angles on the boundaries.
int getMaxExtent() const
Maximum plaquette size. This is what knows about 1x1 plaq or 1x2 rect.
bool registerAll()
Register all the factories.
Asqtad Staggered-Dirac operator.
Definition: klein_gord.cc:10
static multi1d< LatticeColorMatrix > u
::std::string string
Definition: gtest.h:1979
Schroedinger functional gauge boundary conditions.
Schroedinger gauge boundary conditions.
Structure holding phases.