https://github.com/JeffersonLab/chroma
Raw File
Tip revision: fab8695e6913690a78bbe3dfbf08cc5a186425bf authored by Balint Joo on 04 March 2022, 20:44:58 UTC
Broadcasted some strings internally to fix a problem Andre was having
Tip revision: fab8695
fermbc.h
// -*- C++ -*-
/*! @file
 * @brief Fermion action boundary conditions
 */

#ifndef __fermbc_h__
#define __fermbc_h__

#include "chromabase.h"
#include "boundcond.h"

namespace Chroma
{
  //! Base class for all fermion action boundary conditions
  /*! @ingroup fermbc
   *
   */
  template<typename T, typename P, typename Q>
  class FermBC : public BoundCond<P,Q>
  {
  public:
    //! Virtual destructor to help with cleanup;
    virtual ~FermBC() {}

    //! Modify fermion fields in place
    virtual void modifyF(T& psi) const = 0;

    //! Modify fermion fields in place under a subset
    virtual void modifyF(T& psi, const Subset& s) const = 0;

    //! Modify fermion fields in place
    /*! Convenience function */
    virtual void modifyF(multi1d<T>& psi) const = 0;

    //! Modify fermion fields in place under a subset
    /*! Convenience function */
    virtual void modifyF(multi1d<T>& psi, const Subset& s) const = 0;

    //! Modify U fields according to the fermion BC in place
    virtual void modify(Q& u) const = 0;

    //! Zero some gauge-like field in place on the masked links
    virtual void zero(P& ds_u) const = 0;

    //! Says if there are fermion non-trivial 
    virtual bool nontrivialP() const = 0;
  };

}


#endif
back to top