https://github.com/JeffersonLab/chroma
Raw File
Tip revision: 7f0e464adf19403b51414e4ba39b2c72f6e2f96e authored by edwards on 03 April 2006, 06:07:39 UTC
Fixed to use SystemSolverArray.
Tip revision: 7f0e464
fermbc.h
// -*- C++ -*-
// $Id: fermbc.h,v 3.0 2006-04-03 04:58:43 edwards Exp $
/*! @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 OrderedSubset& 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 OrderedSubset& 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