su2hmc
Loading...
Searching...
No Matches
clover.c File Reference

Clover fermion routines. More...

#include <clover.h>
Include dependency graph for clover.c:

Go to the source code of this file.

Functions

void ByGenLeft (Complex_f a[nc], const unsigned short gen)
 Multiply leaf (or part of one) by generator from left.
void ByGenRight (Complex_f a[nc], const unsigned short gen)
 Multiply leaf (or part of one) by generator from right.
void Half_Leaf (Complex_f Leaves[nc], Complex_f *ut[nc], Complex_f a[nc], unsigned int *iu, unsigned int *id, const unsigned int i, const unsigned short mu, const unsigned short nu, const unsigned short leaf)
 Calculates the first half of the leaf for a clover term. We split it so that the force term can reuse the first half of the leaf.
void Half_Leaves (Complex_f *hLeaves[2], Complex_f *ut[2], unsigned int *iu, unsigned int *id, const unsigned short mu, const unsigned short nu)
 Calculates the products of the first two links in a plaquette.
void Leaf (Complex_f Leaves[nc], Complex_f *ut[nc], unsigned int *iu, unsigned int *id, unsigned int i, const unsigned short mu, const unsigned short nu, const unsigned short leaf)
 Calculates a leaf for a clover term.
void Clover (Complex_f *clover[2], Complex_f *ut[2], unsigned int *iu, unsigned int *id)
 Calculates the clovers in all directions at all sites.
void ByClover (Complex *phi, Complex *r, Complex *clover[2], Complex *sigval, const float akappa, unsigned short *sigin, bool dag)
 Clover analogue of the Dslash operation. This version acts on all flavours similar to Dslash and Dslash_d.
void HbyClover (Complex *phi, Complex *r, Complex *clover[2], Complex *sigval, const float akappa, unsigned short *sigin, bool dag)
 Clover analogue of the Dslash operation. This version acts on all flavours similar to Dslash and Dslash_d.
void ByClover_f (Complex_f *phi, Complex_f *r, Complex_f *clover[2], Complex_f *sigval, const float akappa, unsigned short *sigin, bool dag)
 Clover analogue of the Dslash operation. This version acts on all flavours similar to Dslash and Dslash_d.
void HbyClover_f (Complex_f *phi, Complex_f *r, Complex_f *clover[2], Complex_f *sigval, const float akappa, unsigned short *sigin, bool dag)
 Clover analogue of the Dslash operation. This version acts on all flavours similar to Dslash and Dslash_d.
static void GetBilinear (Complex_f Z[nc *nc], Bilinear_a Xmn, unsigned int ind)
 Loads the compacted bilinear form into a \(2\times2\) complex valued matrix.
void CalcXmunu (Bilinear_a Xmunu, Complex_f *X1, Complex_f *X2, const Complex_f *sigval, const unsigned short *sigin, const unsigned short mu, const unsigned short nu)
 Gets \(X_{\mu\nu}\) for the clover force.
static void GLeft (Complex_f out[4], const Complex_f G[2], const Complex_f X[4])
 Multiplies \( X_{\mu\nu}\) by a gauge field from the left.
static void GRight (Complex_f out[4], const Complex_f G[2], const Complex_f X[4])
 Multiplies \( X_{\mu\nu}\) by a gauge field from the right.
static void GSandwich (Complex_f out[4], Complex_f tmp[4], const Complex_f Gl[2], const Complex_f X[4], const Complex_f Gr[2])
 Multiplies \( X_{\mu\nu}\) by a gauge field from the left and the right.
void Clov_Force (double *dSdpi, Complex_f *ut[2], Complex_f *X1, Complex_f *X2, const Complex_f *sigval, const unsigned short *sigin, unsigned int *iu, unsigned int *id, const float akappa)
 Gets the clover contribution to the force.
int Init_clover (Complex **sigval, Complex_f **sigval_f, unsigned short **sigin, float c_sw)
 Initialise values needed for the clover terms.
void Clover_free (Complex_f *clover[nc])
 Free's memory used for clover terms and leaves.

Detailed Description

Clover fermion routines.

Author
D. Lawlor

Definition in file clover.c.