Bridge++  Ver. 2.0.2
AFopr_Staggered< AFIELD > Class Template Reference

Staggered fermion operator. More...

#include <afopr_Staggered.h>

Inheritance diagram for AFopr_Staggered< AFIELD >:
AFopr< AFIELD >

Public Types

typedef AFIELD::real_t real_t
 

Public Member Functions

 AFopr_Staggered (const Parameters &params)
 constructor. More...
 
 ~AFopr_Staggered ()
 destructor. More...
 
void set_parameters (const Parameters &params)
 setting parameters by a Parameter object. More...
 
void set_parameters (const real_t mq, const std::vector< int > bc)
 setting parameters by values. More...
 
void get_parameters (Parameters &params) const
 getting parameters via a Parameters object. More...
 
void set_config (Field *U)
 setting gauge configuration (common interface). More...
 
bool needs_convert ()
 returns true if additional field conversion is needed. More...
 
void set_mode (std::string mode)
 setting the mode of multiplication if necessary. Default implementation here is just to avoid irrelevant call. More...
 
std::string get_mode () const
 returns the current mult mode. More...
 
void mult (AFIELD &, const AFIELD &)
 multiplies fermion operator to a given field. More...
 
void mult_dag (AFIELD &, const AFIELD &)
 hermitian conjugate of mult. More...
 
void mult_gm5 (AFIELD &, const AFIELD &)
 multiplies gamma_5 matrix. More...
 
void mult_gm5 (AFIELD &)
 
void fprop_normalize (AFIELD &v)
 
void fopr_normalize (AFIELD &v)
 
int field_nvol ()
 returns the volume of the fermion field. More...
 
int field_nin ()
 returns the on-site degree of freedom of the fermion field. More...
 
int field_nex ()
 returns the external degree of freedom of the fermion field. More...
 
double flop_count ()
 returns floating operation counts. More...
 
double flop_count (const std::string mode)
 returns floating operation counts. More...
 
const std::string class_name
 
const std::string class_name
 
- Public Member Functions inherited from AFopr< AFIELD >
 AFopr ()
 
virtual ~AFopr ()
 
virtual void mult (AFIELD &, const AFIELD &, const std::string mode)
 executes mult with specified mode (unchanging internal mode). More...
 
virtual void mult_dag (AFIELD &, const AFIELD &, const std::string mode)
 executes mult_dag with specified mode (unchanging internal mode). More...
 
virtual void normalize_fprop (AFIELD &)
 normalize propagator if necessary (default: do nothing) More...
 
virtual void normalize_fopr (AFIELD &)
 normalize propagator if necessary (default: do nothing) More...
 
virtual void convert (AFIELD &, const Field &)
 converts a Field object into other format if necessary. More...
 
virtual void reverse (Field &, const AFIELD &)
 converts an alternative field to a Field object. More...
 

Static Public Attributes

static const std::string class_name = "AFopr_Staggered<AFIELD>"
 

Private Types

using allocator_t = typename AFIELD::template aligned_allocator< char >
 
using Channel = Channel_impl< allocator_t >
 

Private Member Functions

void init (const Parameters &params)
 
void tidyup ()
 
void set_staggered_phase ()
 
void setup_channels ()
 
void set_config_omp (Field *u)
 setting gauge configuration (setting omp parallel). More...
 
void set_config_impl (Field *u)
 setting gauge configuration (implementation). More...
 
void D (AFIELD &, const AFIELD &)
 
void Ddag (AFIELD &, const AFIELD &)
 
void DdagD (AFIELD &, const AFIELD &)
 
void H (AFIELD &, const AFIELD &)
 
void mult_D_qxs (AFIELD &, const AFIELD &, int jd)
 
void mult_D_alt (AFIELD &, const AFIELD &, int jd)
 
void clear (real_t *)
 
void axpby (real_t, real_t *, real_t, real_t *)
 
void mult_up (int mu, AFIELD &, const AFIELD &)
 upward nearest neighbor hopping term. More...
 
void mult_dn (int mu, AFIELD &, const AFIELD &)
 downward nearest neighbor hopping term. More...
 

Private Attributes

int m_Nc
 
int m_Nvc
 
int m_Ndf
 
int m_Ndim
 
int m_Nx
 
int m_Ny
 
int m_Nz
 
int m_Nt
 
int m_Nst
 
int m_Nxv
 
int m_Nyv
 
int m_Nstv
 for SIMD arrays More...
 
real_t m_mq
 quark mass. More...
 
std::vector< int > m_boundary
 boundary conditions. More...
 
Bridge::VerboseLevel m_vl
 verbose level More...
 
AFIELD m_stg_phase
 staggered phase More...
 
AFIELD m_parity
 site parity for multiplying gamma_5 More...
 
AFIELD m_U
 gauge field multiplied by staggered phase More...
 
ShiftAField_lex< AFIELD > * m_shift
 
std::string m_mode
 
AFIELD m_w1
 
AFIELD m_w2
 working vectors More...
 
AFIELD m_v2
 working vector More...
 
int do_comm [4]
 switchs of communication (4=Ndim): (0: n, 1: y). More...
 
int do_comm_any
 switchs of communication (if any): (0: n, 1: y). More...
 
std::vector< int > m_Nbdsize
 
std::vector< Channelchsend_up
 
std::vector< Channelchrecv_up
 
std::vector< Channelchsend_dn
 
std::vector< Channelchrecv_dn
 
ChannelSet chset_send
 
ChannelSet chset_recv
 
int m_Nsize [4]
 lattice size in units of SIMD vector More...
 

Additional Inherited Members

- Static Protected Attributes inherited from AFopr< AFIELD >
static const std::string class_name
 

Detailed Description

template<typename AFIELD>
class AFopr_Staggered< AFIELD >

Staggered fermion operator.

Implementation of the standard staggered fermion operator for the A64FX architecture. [26 Sep 2021 H.Matsufuru]

Definition at line 41 of file afopr_Staggered.h.

Member Typedef Documentation

◆ allocator_t

template<typename AFIELD >
using AFopr_Staggered< AFIELD >::allocator_t = typename AFIELD::template aligned_allocator<char>
private

Definition at line 72 of file afopr_Staggered.h.

◆ Channel

template<typename AFIELD >
using AFopr_Staggered< AFIELD >::Channel = Channel_impl<allocator_t>
private

Definition at line 73 of file afopr_Staggered.h.

◆ real_t

template<typename AFIELD >
typedef AFIELD::real_t AFopr_Staggered< AFIELD >::real_t

Definition at line 44 of file afopr_Staggered.h.

Constructor & Destructor Documentation

◆ AFopr_Staggered()

template<typename AFIELD >
AFopr_Staggered< AFIELD >::AFopr_Staggered ( const Parameters params)
inline

constructor.

Definition at line 81 of file afopr_Staggered.h.

◆ ~AFopr_Staggered()

template<typename AFIELD >
AFopr_Staggered< AFIELD >::~AFopr_Staggered ( )
inline

destructor.

Definition at line 85 of file afopr_Staggered.h.

Member Function Documentation

◆ axpby()

template<typename AFIELD >
void AFopr_Staggered< AFIELD >::axpby ( real_t  b,
real_t vp,
real_t  a,
real_t wp 
)
private

Definition at line 554 of file afopr_Staggered-tmpl.h.

◆ class_name() [1/2]

const std::string AFopr_Staggered< AField< double, QXS > >::class_name

Definition at line 40 of file afopr_Staggered_double.cpp.

◆ class_name() [2/2]

const std::string AFopr_Staggered< AField< float, QXS > >::class_name

Definition at line 40 of file afopr_Staggered_float.cpp.

◆ clear()

template<typename AFIELD >
void AFopr_Staggered< AFIELD >::clear ( real_t vp)
private

Definition at line 546 of file afopr_Staggered-tmpl.h.

◆ D()

template<typename AFIELD >
void AFopr_Staggered< AFIELD >::D ( AFIELD v,
const AFIELD w 
)
private

Definition at line 398 of file afopr_Staggered-tmpl.h.

◆ Ddag()

template<typename AFIELD >
void AFopr_Staggered< AFIELD >::Ddag ( AFIELD v,
const AFIELD w 
)
private

Definition at line 407 of file afopr_Staggered-tmpl.h.

◆ DdagD()

template<typename AFIELD >
void AFopr_Staggered< AFIELD >::DdagD ( AFIELD v,
const AFIELD w 
)
private

Definition at line 387 of file afopr_Staggered-tmpl.h.

◆ field_nex()

template<typename AFIELD >
int AFopr_Staggered< AFIELD >::field_nex ( )
inlinevirtual

returns the external degree of freedom of the fermion field.

Implements AFopr< AFIELD >.

Definition at line 118 of file afopr_Staggered.h.

◆ field_nin()

template<typename AFIELD >
int AFopr_Staggered< AFIELD >::field_nin ( )
inlinevirtual

returns the on-site degree of freedom of the fermion field.

Implements AFopr< AFIELD >.

Definition at line 117 of file afopr_Staggered.h.

◆ field_nvol()

template<typename AFIELD >
int AFopr_Staggered< AFIELD >::field_nvol ( )
inlinevirtual

returns the volume of the fermion field.

Implements AFopr< AFIELD >.

Definition at line 116 of file afopr_Staggered.h.

◆ flop_count() [1/2]

template<typename AFIELD >
double AFopr_Staggered< AFIELD >::flop_count
virtual

returns floating operation counts.

Reimplemented from AFopr< AFIELD >.

Definition at line 601 of file afopr_Staggered-tmpl.h.

◆ flop_count() [2/2]

template<typename AFIELD >
double AFopr_Staggered< AFIELD >::flop_count ( const std::string  mode)
virtual

returns floating operation counts.

Reimplemented from AFopr< AFIELD >.

Definition at line 609 of file afopr_Staggered-tmpl.h.

◆ fopr_normalize()

template<typename AFIELD >
void AFopr_Staggered< AFIELD >::fopr_normalize ( AFIELD v)
inline

Definition at line 114 of file afopr_Staggered.h.

◆ fprop_normalize()

template<typename AFIELD >
void AFopr_Staggered< AFIELD >::fprop_normalize ( AFIELD v)
inline

Definition at line 112 of file afopr_Staggered.h.

◆ get_mode()

template<typename AFIELD >
std::string AFopr_Staggered< AFIELD >::get_mode ( ) const
inlinevirtual

returns the current mult mode.

Reimplemented from AFopr< AFIELD >.

Definition at line 103 of file afopr_Staggered.h.

◆ get_parameters()

template<typename AFIELD >
void AFopr_Staggered< AFIELD >::get_parameters ( Parameters params) const
virtual

getting parameters via a Parameters object.

Reimplemented from AFopr< AFIELD >.

Definition at line 213 of file afopr_Staggered-tmpl.h.

◆ H()

template<typename AFIELD >
void AFopr_Staggered< AFIELD >::H ( AFIELD v,
const AFIELD w 
)
private

Definition at line 378 of file afopr_Staggered-tmpl.h.

◆ init()

template<typename AFIELD >
void AFopr_Staggered< AFIELD >::init ( const Parameters params)
private

Definition at line 17 of file afopr_Staggered-tmpl.h.

◆ mult()

template<typename AFIELD >
void AFopr_Staggered< AFIELD >::mult ( AFIELD ,
const AFIELD  
)
virtual

multiplies fermion operator to a given field.

Reimplemented from AFopr< AFIELD >.

Definition at line 340 of file afopr_Staggered-tmpl.h.

◆ mult_D_alt()

template<typename AFIELD >
void AFopr_Staggered< AFIELD >::mult_D_alt ( AFIELD v,
const AFIELD w,
int  jd 
)
private

Definition at line 487 of file afopr_Staggered-tmpl.h.

◆ mult_D_qxs()

template<typename AFIELD >
void AFopr_Staggered< AFIELD >::mult_D_qxs ( AFIELD v,
const AFIELD w,
int  jd 
)
private

Definition at line 416 of file afopr_Staggered-tmpl.h.

◆ mult_dag()

template<typename AFIELD >
void AFopr_Staggered< AFIELD >::mult_dag ( AFIELD ,
const AFIELD  
)
virtual

hermitian conjugate of mult.

Reimplemented from AFopr< AFIELD >.

Definition at line 359 of file afopr_Staggered-tmpl.h.

◆ mult_dn()

template<typename AFIELD >
void AFopr_Staggered< AFIELD >::mult_dn ( int  mu,
AFIELD ,
const AFIELD  
)
privatevirtual

downward nearest neighbor hopping term.

Reimplemented from AFopr< AFIELD >.

Definition at line 582 of file afopr_Staggered-tmpl.h.

◆ mult_gm5() [1/2]

template<typename AFIELD >
void AFopr_Staggered< AFIELD >::mult_gm5 ( AFIELD v)

Definition at line 533 of file afopr_Staggered-tmpl.h.

◆ mult_gm5() [2/2]

template<typename AFIELD >
void AFopr_Staggered< AFIELD >::mult_gm5 ( AFIELD ,
const AFIELD  
)
virtual

multiplies gamma_5 matrix.

Reimplemented from AFopr< AFIELD >.

Definition at line 515 of file afopr_Staggered-tmpl.h.

◆ mult_up()

template<typename AFIELD >
void AFopr_Staggered< AFIELD >::mult_up ( int  mu,
AFIELD ,
const AFIELD  
)
privatevirtual

upward nearest neighbor hopping term.

Reimplemented from AFopr< AFIELD >.

Definition at line 563 of file afopr_Staggered-tmpl.h.

◆ needs_convert()

template<typename AFIELD >
bool AFopr_Staggered< AFIELD >::needs_convert ( )
inlinevirtual

returns true if additional field conversion is needed.

Reimplemented from AFopr< AFIELD >.

Definition at line 99 of file afopr_Staggered.h.

◆ set_config()

template<typename AFIELD >
void AFopr_Staggered< AFIELD >::set_config ( Field U)
virtual

setting gauge configuration (common interface).

Implements AFopr< AFIELD >.

Definition at line 274 of file afopr_Staggered-tmpl.h.

◆ set_config_impl()

template<typename AFIELD >
void AFopr_Staggered< AFIELD >::set_config_impl ( Field u)
private

setting gauge configuration (implementation).

Definition at line 306 of file afopr_Staggered-tmpl.h.

◆ set_config_omp()

template<typename AFIELD >
void AFopr_Staggered< AFIELD >::set_config_omp ( Field u)
private

setting gauge configuration (setting omp parallel).

Definition at line 293 of file afopr_Staggered-tmpl.h.

◆ set_mode()

template<typename AFIELD >
void AFopr_Staggered< AFIELD >::set_mode ( std::string  mode)
virtual

setting the mode of multiplication if necessary. Default implementation here is just to avoid irrelevant call.

Reimplemented from AFopr< AFIELD >.

Definition at line 327 of file afopr_Staggered-tmpl.h.

◆ set_parameters() [1/2]

template<typename AFIELD >
void AFopr_Staggered< AFIELD >::set_parameters ( const Parameters params)
virtual

setting parameters by a Parameter object.

Reimplemented from AFopr< AFIELD >.

Definition at line 163 of file afopr_Staggered-tmpl.h.

◆ set_parameters() [2/2]

template<typename AFIELD >
void AFopr_Staggered< AFIELD >::set_parameters ( const real_t  mq,
const std::vector< int >  bc 
)

setting parameters by values.

Definition at line 184 of file afopr_Staggered-tmpl.h.

◆ set_staggered_phase()

template<typename AFIELD >
void AFopr_Staggered< AFIELD >::set_staggered_phase
private

Definition at line 224 of file afopr_Staggered-tmpl.h.

◆ setup_channels()

template<typename AFIELD >
void AFopr_Staggered< AFIELD >::setup_channels
private

Definition at line 129 of file afopr_Staggered-tmpl.h.

◆ tidyup()

template<typename AFIELD >
void AFopr_Staggered< AFIELD >::tidyup
private

Definition at line 119 of file afopr_Staggered-tmpl.h.

Member Data Documentation

◆ chrecv_dn

template<typename AFIELD >
std::vector<Channel> AFopr_Staggered< AFIELD >::chrecv_dn
private

Definition at line 74 of file afopr_Staggered.h.

◆ chrecv_up

template<typename AFIELD >
std::vector<Channel> AFopr_Staggered< AFIELD >::chrecv_up
private

Definition at line 74 of file afopr_Staggered.h.

◆ chsend_dn

template<typename AFIELD >
std::vector<Channel> AFopr_Staggered< AFIELD >::chsend_dn
private

Definition at line 74 of file afopr_Staggered.h.

◆ chsend_up

template<typename AFIELD >
std::vector<Channel> AFopr_Staggered< AFIELD >::chsend_up
private

Definition at line 74 of file afopr_Staggered.h.

◆ chset_recv

template<typename AFIELD >
ChannelSet AFopr_Staggered< AFIELD >::chset_recv
private

Definition at line 75 of file afopr_Staggered.h.

◆ chset_send

template<typename AFIELD >
ChannelSet AFopr_Staggered< AFIELD >::chset_send
private

Definition at line 75 of file afopr_Staggered.h.

◆ class_name

template<typename AFIELD >
const std::string AFopr_Staggered< AFIELD >::class_name = "AFopr_Staggered<AFIELD>"
static

Definition at line 45 of file afopr_Staggered.h.

◆ do_comm

template<typename AFIELD >
int AFopr_Staggered< AFIELD >::do_comm[4]
private

switchs of communication (4=Ndim): (0: n, 1: y).

Definition at line 68 of file afopr_Staggered.h.

◆ do_comm_any

template<typename AFIELD >
int AFopr_Staggered< AFIELD >::do_comm_any
private

switchs of communication (if any): (0: n, 1: y).

Definition at line 69 of file afopr_Staggered.h.

◆ m_boundary

template<typename AFIELD >
std::vector<int> AFopr_Staggered< AFIELD >::m_boundary
private

boundary conditions.

Definition at line 53 of file afopr_Staggered.h.

◆ m_mode

template<typename AFIELD >
std::string AFopr_Staggered< AFIELD >::m_mode
private

Definition at line 63 of file afopr_Staggered.h.

◆ m_mq

template<typename AFIELD >
real_t AFopr_Staggered< AFIELD >::m_mq
private

quark mass.

Definition at line 52 of file afopr_Staggered.h.

◆ m_Nbdsize

template<typename AFIELD >
std::vector<int> AFopr_Staggered< AFIELD >::m_Nbdsize
private

Definition at line 71 of file afopr_Staggered.h.

◆ m_Nc

template<typename AFIELD >
int AFopr_Staggered< AFIELD >::m_Nc
private

Definition at line 48 of file afopr_Staggered.h.

◆ m_Ndf

template<typename AFIELD >
int AFopr_Staggered< AFIELD >::m_Ndf
private

Definition at line 48 of file afopr_Staggered.h.

◆ m_Ndim

template<typename AFIELD >
int AFopr_Staggered< AFIELD >::m_Ndim
private

Definition at line 48 of file afopr_Staggered.h.

◆ m_Nsize

template<typename AFIELD >
int AFopr_Staggered< AFIELD >::m_Nsize[4]
private

lattice size in units of SIMD vector

Definition at line 77 of file afopr_Staggered.h.

◆ m_Nst

template<typename AFIELD >
int AFopr_Staggered< AFIELD >::m_Nst
private

Definition at line 49 of file afopr_Staggered.h.

◆ m_Nstv

template<typename AFIELD >
int AFopr_Staggered< AFIELD >::m_Nstv
private

for SIMD arrays

Definition at line 50 of file afopr_Staggered.h.

◆ m_Nt

template<typename AFIELD >
int AFopr_Staggered< AFIELD >::m_Nt
private

Definition at line 49 of file afopr_Staggered.h.

◆ m_Nvc

template<typename AFIELD >
int AFopr_Staggered< AFIELD >::m_Nvc
private

Definition at line 48 of file afopr_Staggered.h.

◆ m_Nx

template<typename AFIELD >
int AFopr_Staggered< AFIELD >::m_Nx
private

Definition at line 49 of file afopr_Staggered.h.

◆ m_Nxv

template<typename AFIELD >
int AFopr_Staggered< AFIELD >::m_Nxv
private

Definition at line 50 of file afopr_Staggered.h.

◆ m_Ny

template<typename AFIELD >
int AFopr_Staggered< AFIELD >::m_Ny
private

Definition at line 49 of file afopr_Staggered.h.

◆ m_Nyv

template<typename AFIELD >
int AFopr_Staggered< AFIELD >::m_Nyv
private

Definition at line 50 of file afopr_Staggered.h.

◆ m_Nz

template<typename AFIELD >
int AFopr_Staggered< AFIELD >::m_Nz
private

Definition at line 49 of file afopr_Staggered.h.

◆ m_parity

template<typename AFIELD >
AFIELD AFopr_Staggered< AFIELD >::m_parity
private

site parity for multiplying gamma_5

Definition at line 57 of file afopr_Staggered.h.

◆ m_shift

template<typename AFIELD >
ShiftAField_lex<AFIELD>* AFopr_Staggered< AFIELD >::m_shift
private

Definition at line 61 of file afopr_Staggered.h.

◆ m_stg_phase

template<typename AFIELD >
AFIELD AFopr_Staggered< AFIELD >::m_stg_phase
private

staggered phase

Definition at line 56 of file afopr_Staggered.h.

◆ m_U

template<typename AFIELD >
AFIELD AFopr_Staggered< AFIELD >::m_U
private

gauge field multiplied by staggered phase

Definition at line 59 of file afopr_Staggered.h.

◆ m_v2

template<typename AFIELD >
AFIELD AFopr_Staggered< AFIELD >::m_v2
private

working vector

Definition at line 66 of file afopr_Staggered.h.

◆ m_vl

template<typename AFIELD >
Bridge::VerboseLevel AFopr_Staggered< AFIELD >::m_vl
private

verbose level

Definition at line 54 of file afopr_Staggered.h.

◆ m_w1

template<typename AFIELD >
AFIELD AFopr_Staggered< AFIELD >::m_w1
private

Definition at line 65 of file afopr_Staggered.h.

◆ m_w2

template<typename AFIELD >
AFIELD AFopr_Staggered< AFIELD >::m_w2
private

working vectors

Definition at line 65 of file afopr_Staggered.h.


The documentation for this class was generated from the following files: