Bridge++  Ver.2.1.3
ForceSmear_HYP_SF Class Reference

Recursive calculation of HYP smeared fermion force with SF BC. More...

#include <forceSmear_HYP_SF.h>

Inheritance diagram for ForceSmear_HYP_SF:
AForceSmear< AFIELD >

Public Member Functions

 ForceSmear_HYP_SF (Projection *proj, const Parameters &params)
 
 ~ForceSmear_HYP_SF ()
 
void set_parameters (const Parameters &params)
 
void set_parameters (const double alpha1, const double alpha2, const double alpha3, const std::vector< double > &phi, const std::vector< double > &phipr)
 
void get_parameters (Parameters &params) const
 
void force_udiv (Field_G &Sigma, const Field_G &Sigma_p, const Field_G &U)
 
- Public Member Functions inherited from AForceSmear< AFIELD >
 AForceSmear ()
 
virtual ~AForceSmear ()
 

Static Public Attributes

static const std::string class_name = "ForceSmear_HYP_SF"
 

Private Member Functions

void init (const Parameters &params)
 
void tidyup ()
 
void force_step3 (Field_G &, const Field_G &)
 
void force_step2 (Field_G &)
 
void force_step1 (Field_G &)
 
void force_each (Field_G &, const Field_G &, const Field_G &, const Field_G &, const Field_G &, const int mu, const int nu)
 
void smear_step1 ()
 
void smear_step2 ()
 
void staple (Field_G &, const Field_G &, const Field_G &, const int mu, const int nu)
 
int idx1 (const int mu, const int nu, const int rho)
 
int idx1b (const int mu, int nu, int rho)
 
int idx2 (const int mu, int nu)
 
int size1 ()
 
int size1b ()
 
int size2 ()
 

Private Attributes

int m_Ndim
 spacetime dimension More...
 
int m_Nvol
 spacetime volume More...
 
double m_alpha1
 HYP smearing parameter (level-1) More...
 
double m_alpha2
 HYP smearing parameter (level-2) More...
 
double m_alpha3
 HYP smearing parameter (level-3) More...
 
Bridge::VerboseLevel m_vl
 
Projection * m_proj
 
ShiftField_lex * m_shift
 
std::vector< Field_G > m_U
 
std::vector< Field_G > m_v1
 
std::vector< Field_G > m_v2
 
std::vector< Field_G > m_Sigma3
 
std::vector< Field_G > m_Sigma2
 
std::vector< Field_G > m_iTheta3
 
std::vector< Field_G > m_iTheta2
 
std::vector< Field_G > m_iTheta1
 
std::vector< double > m_phi
 SF boundary condition at t=0. More...
 
std::vector< double > m_phipr
 SF boundary condition at t=Nt. More...
 
Mat_SU_N m_wk
 SF boundary condition at t=0. More...
 
Mat_SU_N m_wkpr
 SF boundary condition at t=Nt. More...
 
Field_G * m_vt1
 
Field_G * m_vt2
 
Field_G * m_vt3
 
Field_G * m_ct1
 
Field_G * m_ct2
 
Field_G * m_ct3
 

Detailed Description

Recursive calculation of HYP smeared fermion force with SF BC.

Recursive calculation of HYP smeared fermion force with SF BC. [26 May 2012 Y.Taniguchi] YAML is implemented. [14 Nov 2012 Y.Namekawa] unique_ptr is introduced to avoid memory leaks [21 Mar 2015 Y.Namekawa] Multi-threading applied. [10 Jan 2026 H.Matsufuru]

Definition at line 30 of file forceSmear_HYP_SF.h.

Constructor & Destructor Documentation

◆ ForceSmear_HYP_SF()

ForceSmear_HYP_SF::ForceSmear_HYP_SF ( Projection *  proj,
const Parameters &  params 
)
inline

Definition at line 67 of file forceSmear_HYP_SF.h.

◆ ~ForceSmear_HYP_SF()

ForceSmear_HYP_SF::~ForceSmear_HYP_SF ( )
inline

Definition at line 73 of file forceSmear_HYP_SF.h.

Member Function Documentation

◆ force_each()

void ForceSmear_HYP_SF::force_each ( Field_G &  Sigma_mu,
const Field_G &  V_mu,
const Field_G &  V_nu,
const Field_G &  iTheta_mu,
const Field_G &  iTheta_nu,
const int  mu,
const int  nu 
)
private
  • Each block evaluates:
  • The 1st block: $-U_\nu(x+\mu)U_\mu^\dagger(x+\nu)U_\nu^\dagger(x)\Lambda_\nu(x)$
  • The 2nd block: $-U_\nu^\dagger(x+\mu-\nu)U_\mu^\dagger(x-\nu)\Lambda_\mu(x-\nu)U_\nu(x-\nu)$
  • The 3rd block: $U_\nu^\dagger(x+\mu-\nu)U_\mu^\dagger(x-\nu)\Lambda_\nu(x-\nu)U_\nu(x-\nu)$
  • The 4th block: $\Lambda_\nu(x+\mu)U_\nu(x+\mu)U_\mu^\dagger(x+\nu)U_\nu^\dagger(x)$
  • The 5th block: $-U_\nu^\dagger(x+\mu-\nu)\Lambda_\mu(x+\mu-\nu)U_\mu^\dagger(x-\nu)U_\nu(x-\nu)$
  • The 6th block: $-U_\nu(x+\mu)U_\mu^\dagger(x+\nu)\Lambda_\mu(x+\nu)U_\nu^\dagger(x)$

Definition at line 431 of file forceSmear_HYP_SF.cpp.

◆ force_step1()

void ForceSmear_HYP_SF::force_step1 ( Field_G &  Sigma)
private
  • See the implementation note "note_cloverHMC.pdf" (2 Apr 2012) by H.Matsufuru.
  • m_U[mu] $=U_{\mu}(x)$ is (k-1)-th smeared 0-th level link.
  • Xi is used as $\Xi_\mu^{(1)}(x)=\Sigma_{\mu;\nu\rho}^{(2)}(x)\exp(iQ_{\mu;\nu\rho}^{(1)}(x))+C_{\mu;\nu\rho}^{(1)\dagger}i\Lambda_{\mu;\nu\rho}^{(1)}(x)$ and is to be added to Sigma for the (k-1)-th smeared force.
  • m_iTheta1[idx1b(mu,nu,rho)] is $i\Lambda_{\mu;\nu\rho}^{(1)}(x)U_\mu(x)$.
  • The force field Sigma is set to zero for the boundary spatial link.

Definition at line 367 of file forceSmear_HYP_SF.cpp.

◆ force_step2()

void ForceSmear_HYP_SF::force_step2 ( Field_G &  Sigma)
private
  • See the implementation note "note_cloverHMC.pdf" (2 Apr 2012) by H.Matsufuru.
  • m_U[mu] $=U_{\mu}(x)$ is (k-1)-th smeared 0-th level link.
  • m_v1[idx1(mu,nu,rho)] $=V_{\mu;\nu\rho}^{(1)}(x)$ is (k-1)-th smeared 1st level link.
  • Xi is used as $\Xi_\mu^{(2)}(x)=\Sigma_{\mu;\nu}^{(3)}(x)\exp(iQ_{\mu;\nu}^{(2)}(x))+C_{\mu;\nu}^{(2)\dagger} i\Lambda_{\mu;\nu}^{(2)}(x)$ and is to be added to Sigma for the (k-1)-th smeared force.
  • m_iTheta2[idx2(mu,nu)] is $i\Lambda_{\mu;\nu}^{(2)}(x)U_\mu(x)$.
  • The pre-force field m_Sigma2[idx1b(mu,nu,rho)] $=\Sigma_{\mu;\nu\rho}^{(2)}(x)$ is set to zero for the boundary spatial link.

Definition at line 302 of file forceSmear_HYP_SF.cpp.

◆ force_step3()

void ForceSmear_HYP_SF::force_step3 ( Field_G &  Sigma,
const Field_G &  Sigmap 
)
private
  • See the implementation note "note_cloverHMC.pdf" (2 Apr 2012) by H.Matsufuru.
  • Sigmap $=\Sigma_\mu'(x)$ in eq.(3.17) in terms of (k)-th smearing.
  • m_U[mu] $=U_{\mu}(x)$ is (k-1)-th smeared 0-th level link.
  • m_v2[idx2(mu,nu)] $=V_{\mu;\nu}^{(2)}(x)$ is (k-1)-th smeared 2nd level link.
  • Xi is used as $\Xi_\mu^{(3)}(x)=\Sigma_\mu'(x)\exp(iQ_\mu^{(3)}(x))+C_\mu^{(3)\dagger} i\Lambda_\mu^{(3)}(x)$ and is to be added to Sigma for the (k-1)-th smeared force.
  • m_iTheta3[mu] is $i\Lambda_\mu^{(3)}(x)U_\mu(x)$.
  • The pre-force field m_Sigma3[idx2(mu,nu)] $=\Sigma_{\mu;\nu}^{(3)}(x)$ is set to zero for the boundary spatial link.

Definition at line 244 of file forceSmear_HYP_SF.cpp.

◆ force_udiv()

void ForceSmear_HYP_SF::force_udiv ( Field_G &  Sigma,
const Field_G &  Sigma_p,
const Field_G &  U 
)
virtual

Reimplemented from AForceSmear< AFIELD >.

Definition at line 190 of file forceSmear_HYP_SF.cpp.

◆ get_parameters()

void ForceSmear_HYP_SF::get_parameters ( Parameters &  params) const
virtual

Implements AForceSmear< AFIELD >.

Definition at line 177 of file forceSmear_HYP_SF.cpp.

◆ idx1()

int ForceSmear_HYP_SF::idx1 ( const int  mu,
const int  nu,
const int  rho 
)
inlineprivate

Definition at line 103 of file forceSmear_HYP_SF.h.

◆ idx1b()

int ForceSmear_HYP_SF::idx1b ( const int  mu,
int  nu,
int  rho 
)
inlineprivate

Definition at line 110 of file forceSmear_HYP_SF.h.

◆ idx2()

int ForceSmear_HYP_SF::idx2 ( const int  mu,
int  nu 
)
inlineprivate

Definition at line 118 of file forceSmear_HYP_SF.h.

◆ init()

void ForceSmear_HYP_SF::init ( const Parameters &  params)
private

Definition at line 22 of file forceSmear_HYP_SF.cpp.

◆ set_parameters() [1/2]

void ForceSmear_HYP_SF::set_parameters ( const double  alpha1,
const double  alpha2,
const double  alpha3,
const std::vector< double > &  phi,
const std::vector< double > &  phipr 
)

Definition at line 112 of file forceSmear_HYP_SF.cpp.

◆ set_parameters() [2/2]

void ForceSmear_HYP_SF::set_parameters ( const Parameters &  params)
virtual

Implements AForceSmear< AFIELD >.

Definition at line 82 of file forceSmear_HYP_SF.cpp.

◆ size1()

int ForceSmear_HYP_SF::size1 ( )
inlineprivate

Definition at line 124 of file forceSmear_HYP_SF.h.

◆ size1b()

int ForceSmear_HYP_SF::size1b ( )
inlineprivate

Definition at line 126 of file forceSmear_HYP_SF.h.

◆ size2()

int ForceSmear_HYP_SF::size2 ( )
inlineprivate

Definition at line 128 of file forceSmear_HYP_SF.h.

◆ smear_step1()

void ForceSmear_HYP_SF::smear_step1 ( )
private

Definition at line 504 of file forceSmear_HYP_SF.cpp.

◆ smear_step2()

void ForceSmear_HYP_SF::smear_step2 ( )
private

Definition at line 531 of file forceSmear_HYP_SF.cpp.

◆ staple()

void ForceSmear_HYP_SF::staple ( Field_G &  c,
const Field_G &  u_mu,
const Field_G &  u_nu,
const int  mu,
const int  nu 
)
private

Definition at line 561 of file forceSmear_HYP_SF.cpp.

◆ tidyup()

void ForceSmear_HYP_SF::tidyup ( )
private

Definition at line 69 of file forceSmear_HYP_SF.cpp.

Member Data Documentation

◆ class_name

const std::string ForceSmear_HYP_SF::class_name = "ForceSmear_HYP_SF"
static

Definition at line 33 of file forceSmear_HYP_SF.h.

◆ m_alpha1

double ForceSmear_HYP_SF::m_alpha1
private

HYP smearing parameter (level-1)

Definition at line 38 of file forceSmear_HYP_SF.h.

◆ m_alpha2

double ForceSmear_HYP_SF::m_alpha2
private

HYP smearing parameter (level-2)

Definition at line 39 of file forceSmear_HYP_SF.h.

◆ m_alpha3

double ForceSmear_HYP_SF::m_alpha3
private

HYP smearing parameter (level-3)

Definition at line 40 of file forceSmear_HYP_SF.h.

◆ m_ct1

Field_G* ForceSmear_HYP_SF::m_ct1
private

Definition at line 61 of file forceSmear_HYP_SF.h.

◆ m_ct2

Field_G* ForceSmear_HYP_SF::m_ct2
private

Definition at line 62 of file forceSmear_HYP_SF.h.

◆ m_ct3

Field_G* ForceSmear_HYP_SF::m_ct3
private

Definition at line 63 of file forceSmear_HYP_SF.h.

◆ m_iTheta1

std::vector<Field_G> ForceSmear_HYP_SF::m_iTheta1
private

Definition at line 50 of file forceSmear_HYP_SF.h.

◆ m_iTheta2

std::vector<Field_G> ForceSmear_HYP_SF::m_iTheta2
private

Definition at line 50 of file forceSmear_HYP_SF.h.

◆ m_iTheta3

std::vector<Field_G> ForceSmear_HYP_SF::m_iTheta3
private

Definition at line 50 of file forceSmear_HYP_SF.h.

◆ m_Ndim

int ForceSmear_HYP_SF::m_Ndim
private

spacetime dimension

Definition at line 36 of file forceSmear_HYP_SF.h.

◆ m_Nvol

int ForceSmear_HYP_SF::m_Nvol
private

spacetime volume

Definition at line 37 of file forceSmear_HYP_SF.h.

◆ m_phi

std::vector<double> ForceSmear_HYP_SF::m_phi
private

SF boundary condition at t=0.

Definition at line 52 of file forceSmear_HYP_SF.h.

◆ m_phipr

std::vector<double> ForceSmear_HYP_SF::m_phipr
private

SF boundary condition at t=Nt.

Definition at line 53 of file forceSmear_HYP_SF.h.

◆ m_proj

Projection* ForceSmear_HYP_SF::m_proj
private

Definition at line 43 of file forceSmear_HYP_SF.h.

◆ m_shift

ShiftField_lex* ForceSmear_HYP_SF::m_shift
private

Definition at line 45 of file forceSmear_HYP_SF.h.

◆ m_Sigma2

std::vector<Field_G> ForceSmear_HYP_SF::m_Sigma2
private

Definition at line 49 of file forceSmear_HYP_SF.h.

◆ m_Sigma3

std::vector<Field_G> ForceSmear_HYP_SF::m_Sigma3
private

Definition at line 49 of file forceSmear_HYP_SF.h.

◆ m_U

std::vector<Field_G> ForceSmear_HYP_SF::m_U
private

Definition at line 47 of file forceSmear_HYP_SF.h.

◆ m_v1

std::vector<Field_G> ForceSmear_HYP_SF::m_v1
private

Definition at line 48 of file forceSmear_HYP_SF.h.

◆ m_v2

std::vector<Field_G> ForceSmear_HYP_SF::m_v2
private

Definition at line 48 of file forceSmear_HYP_SF.h.

◆ m_vl

Bridge::VerboseLevel ForceSmear_HYP_SF::m_vl
private

Definition at line 41 of file forceSmear_HYP_SF.h.

◆ m_vt1

Field_G* ForceSmear_HYP_SF::m_vt1
private

Definition at line 58 of file forceSmear_HYP_SF.h.

◆ m_vt2

Field_G* ForceSmear_HYP_SF::m_vt2
private

Definition at line 59 of file forceSmear_HYP_SF.h.

◆ m_vt3

Field_G* ForceSmear_HYP_SF::m_vt3
private

Definition at line 60 of file forceSmear_HYP_SF.h.

◆ m_wk

Mat_SU_N ForceSmear_HYP_SF::m_wk
private

SF boundary condition at t=0.

Definition at line 55 of file forceSmear_HYP_SF.h.

◆ m_wkpr

Mat_SU_N ForceSmear_HYP_SF::m_wkpr
private

SF boundary condition at t=Nt.

Definition at line 56 of file forceSmear_HYP_SF.h.


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