Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

wilson.h File Reference

Declarations of routine used internally in the DiracOpWilson class. More...

#include <config.h>
#include <util/data_types.h>

Go to the source code of this file.

Namespaces

namespace  cps

Classes

struct  cps::comm_params
struct  cps::Wilson
 A container of data relevant to the Wilson matrix multiplication. More...

Defines

#define ND   4
 Number of space-time dimensions.
#define SPINOR_SIZE   24
 Number of floating-point numbers in a Dirac spinor.
#define HALF_SPINOR_SIZE   12
 Number of floating-point numbers in half a Dirac spinor.
#define BLOCK   HALF_SPINOR_SIZE
 Number of floating-point numbers in a two-spinor.
#define COLUMN_SPINOR_SIZE   6
 Number of floating-point numbers in a colour vector.
#define GAUGE_SIZE   72
 Number of floating-point numbers in a colour matrix.

Functions

void wilson_init (Wilson *wilson_p)
 Initialisation of parameters and memory used in the Wilson matrix multiplication.
void wilson_end (Wilson *wilson_p)
 Frees memory reserved by wilson_init.
void wilson_mdagm (IFloat *chi, IFloat *u, IFloat *psi, IFloat *mp_sq_p, IFloat Kappa, Wilson *wilson_p)
 Multiplication by the odd-even preconditioned Wilson matrix.
void wilson_dslash (IFloat *chi, IFloat *u, IFloat *psi, int cb, int dag, Wilson *wilson_p)
 Multiplication by the Wilson matrix hopping term.
void wilson_dslash_two (Float *chi0, Float *chi1, Float *u, Float *psi0, Float *psi1, int cb0, int cb1, int dag, Wilson *wp)
void wilson_m (IFloat *chi, IFloat *u, IFloat *psi, IFloat kappa, Wilson *wilson_p)
 Multiplication by the odd-even preconditioned Wilson matrix.
void wilson_mdag (IFloat *chi, IFloat *u, IFloat *psi, IFloat kappa, Wilson *wilson_p)
 Multiplication by the odd-even preconditioned Wilson matrix.
void wilson_set_sloppy (bool sloppy)

Variables

int wfm_wire_map []
 Numbers of the wires corresponding to logical directions.
int wfm_max_scu_poll
 Some crazy optimisation thing.
int wfm_scu_diag []
 Some crazy optimisation thing.


Detailed Description

Declarations of routine used internally in the DiracOpWilson class.

Id
wilson.h,v 1.8 2007/10/30 20:40:34 chulwoo Exp

Definition in file wilson.h.


Define Documentation

#define BLOCK   HALF_SPINOR_SIZE
 

Number of floating-point numbers in a two-spinor.

Definition at line 48 of file wilson.h.

Referenced by cps::wfm_comm_backward(), cps::wfm_comm_forward(), and cps::wfm_sublatt_pointers().

#define COLUMN_SPINOR_SIZE   6
 

Number of floating-point numbers in a colour vector.

Definition at line 49 of file wilson.h.

#define GAUGE_SIZE   72
 

Number of floating-point numbers in a colour matrix.

Definition at line 50 of file wilson.h.

Referenced by cps::wilson_dslash().

#define HALF_SPINOR_SIZE   12
 

Number of floating-point numbers in half a Dirac spinor.

Definition at line 44 of file wilson.h.

#define ND   4
 

Number of space-time dimensions.

Definition at line 42 of file wilson.h.

Referenced by cps::DiracOpClover::GetLink(), cps::wilson_m(), and cps::wilson_mdag().

#define SPINOR_SIZE   24
 

Number of floating-point numbers in a Dirac spinor.

Definition at line 43 of file wilson.h.

Referenced by cps::clover_init(), cps::QPropW::SaveQPropLs(), cps::FermionVectorTp::SetBoxSource(), cps::FermionVectorTp::SetVolSource(), cps::FermionVectorTp::SetWallSource(), cps::wilson_compat_init(), and cps::wilson_mdagm().


Function Documentation

void cps::wilson_dslash IFloat chi,
IFloat u,
IFloat psi,
int  cb,
int  dag,
Wilson *  wilson_p
 

Multiplication by the Wilson matrix hopping term.

The multiplication is performed on all sites of a single parity. The resulting vector is then defined on sites of the opposite parity.

Precondition:
The gauge field and spinor vector should be in odd-even order.
Parameters:
chi The resulting vector
u The gauge field
psi The vector bing multiplied
cb Multiplies a vector on odd parity sites if this is 0, even parity sites if this is 1.
dag Multiply by the hermitian conjugate hopping term if this is 1, or not if this is 0.
wilson_p The Wilson multiplication data structure.

Definition at line 82 of file wilson_dslash.C.

References cps::Wilson::ab, cps::Wilson::af, cps::dclock(), cps::ERR, cps::Float, GAUGE_SIZE, cps::Error::General(), cps::IFloat, cps::print_flops(), cps::MPISCU::printf(), QuadLoad, QuadStore, cps::UniqueID(), cps::Wilson::vol, cps::wfm_cmat_two_spproj(), cps::wfm_comm(), cps::wfm_mat_trick(), and cps::wfm_trick().

Referenced by cps::DiracOpClover::CalcHmdForceVecs(), cps::DiracOpClover::MatDagOrNotDbg(), cps::DiracOpClover::MatInv(), and cps::DiracOpClover::MatPcDagOrNot().

void cps::wilson_dslash_two Float chi0,
Float chi1,
Float u,
Float psi0,
Float psi1,
int  cb0,
int  cb1,
int  dag,
Wilson *  wp
 

Definition at line 108 of file wilson_init.C.

References wfm_dslash_two().

Referenced by cps::dwf_dslash_4(), and cps::dwf_dslash_all().

void cps::wilson_end Wilson *  wilson_p  ) 
 

Frees memory reserved by wilson_init.

This should be called when the Wilson matrix is no longer needed.

Parameters:
wilson_p The Wilson matrix data.

Definition at line 37 of file wilson_init.C.

References cps::Verbose::Func(), cps::VRB, wfm_vec_end(), and cps::wilson_compat_end().

Referenced by cps::clover_end(), cps::dwf_end(), and cps::Fwilson::~Fwilson().

void cps::wilson_init Wilson *  wilson_p  ) 
 

Initialisation of parameters and memory used in the Wilson matrix multiplication.

This needs to be called once before the Wilson matrix is used.

Parameters:
wilson_p The Wilson matrix data to be initialised
Postcondition:
Memory is allocated for spinor arrays and parameters pertaining to the lattice geometry are initiialised.

Definition at line 44 of file wilson_init.C.

References cps::GJP, cps::GlobalJobParameter::Tnodes(), cps::GlobalJobParameter::TnodeSites(), wfm_vec_init(), cps::wilson_compat_init(), cps::GlobalJobParameter::Xnodes(), cps::GlobalJobParameter::XnodeSites(), cps::GlobalJobParameter::Ynodes(), cps::GlobalJobParameter::YnodeSites(), cps::GlobalJobParameter::Znodes(), and cps::GlobalJobParameter::ZnodeSites().

Referenced by cps::clover_init(), cps::dwf_init(), and cps::Fwilson::Fwilson().

void cps::wilson_m IFloat chi,
IFloat u,
IFloat psi,
IFloat  kappa,
Wilson *  wilson_p
 

Multiplication by the odd-even preconditioned Wilson matrix.

The matrix-vector multiplication is performed on all sites with odd parity.

Precondition:
The gauge field and spinor vector should be in odd-even order.
Parameters:
chi The matrix-vector product
u The gauge field
psi The vector to be mutliplied
kappa The Wilson matrix hopping parameter
wilson_p The Wilson multiplication data structure.

Definition at line 31 of file wilson_m.C.

References CHI, Float, cps::Float, cps::IFloat, ND, PSI, cps::Wilson::spinor_tmp, cps::Wilson::vol, cps::wilson_dslash(), and xaxpy().

void cps::wilson_mdag IFloat chi,
IFloat u,
IFloat psi,
IFloat  kappa,
Wilson *  wilson_p
 

Multiplication by the odd-even preconditioned Wilson matrix.

The matrix-vector multiplication is performed on all sites of odd parity.

Precondition:
The gauge field and spinor vector should be in odd-even order.
Parameters:
chi The matrix-vector product
u The gauge field
psi The vector to be mutliplied
kappa The Wilson matrix hopping parameter
wilson_p The Wilson multiplication data structure.

Definition at line 33 of file wilson_mdag.C.

References CHI, Float, cps::Float, cps::IFloat, ND, PSI, cps::Wilson::spinor_tmp, cps::Wilson::vol, cps::wilson_dslash(), and xaxpy().

void cps::wilson_mdagm IFloat chi,
IFloat u,
IFloat psi,
IFloat mp_sq_p,
IFloat  Kappa,
Wilson *  wilson_p
 

Multiplication by the odd-even preconditioned Wilson matrix.

Performs the multiplication $ \chi = M^\dagger M \psi $.

Parameters:
chi The result vector
u The gauge field
psi The vector to be multiplied
m_sq_p The value of $ |M \psi|^2 $
kappa The Wilson matrix mass parameter
wilson_p pointer to a Wilson struct.

Definition at line 69 of file wilson_mdagm.C.

References cps::dotProduct(), Float, cps::Float, cps::fTimesV1PlusV2(), cps::IFloat, SPINOR_SIZE, cps::Wilson::spinor_tmp, cps::Wilson::vol, cps::wilson_dslash(), xaxpy(), and xaxpy_norm().

void cps::wilson_set_sloppy bool  sloppy  ) 
 

Definition at line 33 of file wilson_init.C.

Referenced by cps::AlgHmc::run().


Variable Documentation

int cps::wfm_max_scu_poll
 

Some crazy optimisation thing.

int cps::wfm_scu_diag[]
 

Some crazy optimisation thing.

The maximum number of times a wire is polled before wfm_scu_wait exits with an error. Implemented only in d_op_wilson_opt_nos_hdw_diag and d_op_dwf_nos_hdw_diag.

Contains diagnostic info about an scu failure to complete for wfm_max_scu_poll polls. Implemented only in d_op_wilson_opt_nos_hdw_diag and d_op_dwf_nos_hdw_diag. The elements of the array are initialized to -1 (0xffffffff) in wilson_init (called by the lattice constructor of all wilson type fermions) except for element 0 that is initialized to 0.

The elements of the array have the following meaning:

  • 0 Number of times an scu transfer has been initiated. Is set to 0 in wilson_init and is incremented every time scu_comm_forward or scu_comm_backward are called.
  • 1 The value of the clock at exit. Set in wilson_scu_error.
  • 2 The value of the scu status register 813040. Set in wfm_scu_wait.
  • 3-10 The number of polls left for each of the 8 wires. Set in wfm_scu_wait. It corresponds to hardware wires 0-7.
  • 11-18 The value of the 8 scu error status registers 813060-813067 Set in wfm_scu_wait. It corresponds to hardware wires 0-7.

int cps::wfm_wire_map[]
 

Numbers of the wires corresponding to logical directions.

The wire numbers are stored in the order +X, -X, +Y, -Y, +Z, -Z, +T, -T


Generated on Sat Oct 10 14:11:42 2009 for Columbia Physics System by  doxygen 1.3.9.1