CHROMA
fermbc.h
Go to the documentation of this file.
1 // -*- C++ -*-
2 /*! @file
3  * @brief Fermion action boundary conditions
4  */
5 
6 #ifndef __fermbc_h__
7 #define __fermbc_h__
8 
9 #include "chromabase.h"
10 #include "boundcond.h"
11 
12 namespace Chroma
13 {
14  //! Base class for all fermion action boundary conditions
15  /*! @ingroup fermbc
16  *
17  */
18  template<typename T, typename P, typename Q>
19  class FermBC : public BoundCond<P,Q>
20  {
21  public:
22  //! Virtual destructor to help with cleanup;
23  virtual ~FermBC() {}
24 
25  //! Modify fermion fields in place
26  virtual void modifyF(T& psi) const = 0;
27 
28  //! Modify fermion fields in place under a subset
29  virtual void modifyF(T& psi, const Subset& s) const = 0;
30 
31  //! Modify fermion fields in place
32  /*! Convenience function */
33  virtual void modifyF(multi1d<T>& psi) const = 0;
34 
35  //! Modify fermion fields in place under a subset
36  /*! Convenience function */
37  virtual void modifyF(multi1d<T>& psi, const Subset& s) const = 0;
38 
39  //! Modify U fields according to the fermion BC in place
40  virtual void modify(Q& u) const = 0;
41 
42  //! Zero some gauge-like field in place on the masked links
43  virtual void zero(P& ds_u) const = 0;
44 
45  //! Says if there are fermion non-trivial
46  virtual bool nontrivialP() const = 0;
47  };
48 
49 }
50 
51 
52 #endif
Base class for all boundary conditions.
Primary include file for CHROMA library code.
Base class for all boundary conditions.
Definition: boundcond.h:19
Base class for all fermion action boundary conditions.
Definition: fermbc.h:20
virtual bool nontrivialP() const =0
Says if there are fermion non-trivial.
virtual ~FermBC()
Virtual destructor to help with cleanup;.
Definition: fermbc.h:23
virtual void modify(Q &u) const =0
Modify U fields according to the fermion BC in place.
virtual void modifyF(T &psi, const Subset &s) const =0
Modify fermion fields in place under a subset.
virtual void modifyF(multi1d< T > &psi, const Subset &s) const =0
Modify fermion fields in place under a subset.
virtual void modifyF(multi1d< T > &psi) const =0
Modify fermion fields in place.
virtual void modifyF(T &psi) const =0
Modify fermion fields in place.
virtual void zero(P &ds_u) const =0
Zero some gauge-like field in place on the masked links.
Asqtad Staggered-Dirac operator.
Definition: klein_gord.cc:10
static multi1d< LatticeColorMatrix > u
LinOpSysSolverMGProtoClover::Q Q
LinOpSysSolverMGProtoClover::T T
LatticeFermion psi
Definition: mespbg5p_w.cc:35
multi1d< LatticeFermion > s(Ncb)
multi1d< LatticeColorMatrix > P
Definition: t_clover.cc:13