CHROMA
schr_nonpert_fermbc_w.h
Go to the documentation of this file.
1 // -*- C++ -*-
2 /*! \file
3  * \brief Schroedinger BC - use for non-pertubative tuning of clover action
4  */
5 
6 #ifndef __schr_nonpert_fermbc_w_h__
7 #define __schr_nonpert_fermbc_w_h__
8 
12 
13 namespace Chroma
14 {
15 
16  /*! @ingroup fermbcs */
17  namespace SchrNonPertFermBCEnv
18  {
19  extern const std::string name;
20  bool registerAll();
21  }
22 
23 
24  //! Concrete class for Schroedinger BC - use for nonpertubative tuning
25  /*! @ingroup fermbcs
26  *
27  * Schroedinger BC for ferm actions
28  */
30  {
31  public:
32  //! Only full constructor
34  const SchrFermBCParams& p) : param(p)
35  {
36  START_CODE();
37 
38  // Initialize boundary fields
39  initBnd(fld, mask, maskF, gaugebc.SFBndFld(), gaugebc.lSFmask());
40 
41  END_CODE();
42  }
43 
44  //! Destructor is automatic
46 
47  //! Decay direction
48  int getDir() const {return param.decay_dir;}
49 
50  protected:
51  //! Mask which lattice sites have fixed ferm sites
52  const LatticeBoolean& lSFmaskF() const {return maskF;}
53 
54  //! Mask which lattice sites have fixed gauge links
55  const multi1d<LatticeBoolean>& lSFmask() const {return mask;}
56 
57  //! Fixed gauge links on only the lSFmask() sites
58  const multi1d<LatticeColorMatrix>& SFBndFld() const {return fld;}
59 
60  //! Maximum plaquette size. This is what knows about 1x1 plaq or 1x2 rect.
61  /*! \return 1 for 1x1 plaq or 2 for 1x2 rect in decay_dir */
62  int getMaxExtent() const {return param.loop_extent;}
63 
64  //! Get the angles on the boundaries
65  const multi1d<Real>& getTheta() const {return param.theta;}
66 
67  private:
68  // Hide default constuctor
70  void operator=(const SchrNonPertFermBC&) {}
71 
72  private:
74  LatticeBoolean maskF;
75  multi1d<LatticeBoolean> mask;
76  multi1d<LatticeColorMatrix> fld;
77  };
78 
79 }
80 
81 #endif
Concrete class for Schroedinger BC - use for nonpertubative tuning.
const multi1d< LatticeColorMatrix > & SFBndFld() const
Fixed gauge links on only the lSFmask() sites.
const multi1d< Real > & getTheta() const
Get the angles on the boundaries.
const multi1d< LatticeBoolean > & lSFmask() const
Mask which lattice sites have fixed gauge links.
multi1d< LatticeBoolean > mask
void operator=(const SchrNonPertFermBC &)
SchrNonPertFermBC(const SchrNonPertGaugeBC &gaugebc, const SchrFermBCParams &p)
Only full constructor.
int getDir() const
Decay direction.
~SchrNonPertFermBC()
Destructor is automatic.
const LatticeBoolean & lSFmaskF() const
Mask which lattice sites have fixed ferm sites.
multi1d< LatticeColorMatrix > fld
int getMaxExtent() const
Maximum plaquette size. This is what knows about 1x1 plaq or 1x2 rect.
Concrete class for Schroedinger BC - use for nonpertubative tuning.
const multi1d< LatticeColorMatrix > & SFBndFld() const
Fixed gauge links on only the lSFmask() sites.
const multi1d< LatticeBoolean > & lSFmask() const
Mask which lattice sites have fixed gauge links.
Abstract class for SOME Schroedinger ferm BC.
virtual void initBnd(multi1d< LatticeColorMatrix > &SFBndFld, multi1d< LatticeBoolean > &lSFmask, LatticeBoolean &lSFmaskF, const multi1d< LatticeColorMatrix > &SFBndFldG, const multi1d< LatticeBoolean > &lSFmaskG) const
Construct the mask and boundary fields.
Asqtad Staggered-Dirac operator.
Definition: klein_gord.cc:10
START_CODE()
::std::string string
Definition: gtest.h:1979
Schroedinger functional ferm boundary conditions.
Schroedinger BC - use for non-pertubative tuning of clover action.
Schroedinger ferm boundary conditions.