16#include <gsl/gsl_cblas.h>
39#if (defined __cplusplus)
69 int *gamin,
double *dk[2],
float *dk_f[2],
Complex_f jqq,
float akappa,
float beta,
double *ancg);
103 int Init(
int istart,
int ibound,
int iread,
float beta,
float fmu,
float akappa,
Complex_f ajq,\
108 double *dk[2],
float *dk_f[2],
unsigned int *iu,
unsigned int *
id);
134 float *dk[2],
Complex_f jqq,
float akappa,
float beta,
double *ancgh,
int traj);
218 int Measure(
double *pbp,
double *endenf,
double *denf,
Complex *qq,
Complex *qbqb,
double res,
int *itercg,\
329 void cuAverage_Plaquette(
double *hgs,
double *hgt,
Complex_f *u11t,
Complex_f *u12t,
unsigned int *iu,dim3 dimGrid, dim3 dimBlock);
331 void cuGauge_force(
Complex_f *ut[2],
double *dSdpi,
float beta,
unsigned int *iu,
unsigned int *
id,dim3 dimGrid, dim3 dimBlock);
333 dim3 dimGrid, dim3 dimBlock);
334 void cuMinus_staple(
int mu,
int nu,
unsigned int *iu,
unsigned int *
id,
Complex_f *Sigma11,
Complex_f *Sigma12,\
337 Complex_f *gamval,
float *dk[2],
unsigned int *iu,
int *gamin,\
338 float akappa, dim3 dimGrid, dim3 dimBlock);
341 double *dk4p,
unsigned int *iu,
unsigned int *
id);
342 void cuFill_Small_Phi(
int na,
Complex *smallPhi,
Complex *Phi,dim3 dimBlock, dim3 dimGrid);
343 void cuC_gather(
Complex_f *x,
Complex_f *y,
int n,
unsigned int *table,
unsigned int mu,dim3 dimBlock, dim3 dimGrid);
344 void cuZ_gather(
Complex *x,
Complex *y,
int n,
unsigned int *table,
unsigned int mu,dim3 dimBlock, dim3 dimGrid);
345 void cuComplex_convert(
Complex_f *a,
Complex *b,
int len,
bool ftod, dim3 dimBlock, dim3 dimGrid);
346 void cuReal_convert(
float *a,
double *b,
int len,
bool ftod, dim3 dimBlock, dim3 dimGrid);
347 void cuUpDownPart(
int na,
Complex *X0,
Complex *R1,dim3 dimBlock, dim3 dimGrid);
348 void cuReunitarise(
Complex *u11t,
Complex *u12t,dim3 dimGrid, dim3 dimBlock);
350 void blockInit(
int x,
int y,
int z,
int t, dim3 *dimBlock, dim3 *dimGrid);
352#if (defined __cplusplus)
360__global__
void Plus_staple(
int mu,
int nu,
unsigned int *iu,
Complex_f *Sigma11,
Complex_f *Sigma12,\
362__global__
void Minus_staple(
int mu,
int nu,
unsigned int *iu,
unsigned int *
id,
Complex_f *Sigma11,
Complex_f *Sigma12,\
366__global__
void cuAverage_Plaquette(
float *hgs_d,
float *hgt_d,
Complex_f *u11t,
Complex_f *u12t,
unsigned int *iu);
373 unsigned int *iu,
int *gamin,
float akappa,
int mu);
375 float *dk4m,
float *dk4p,
unsigned int *iu,
int *gamin,
float akappa);
376__global__
void cuFill_Small_Phi(
int na,
Complex *smallPhi,
Complex *Phi);
377__global__
void cuC_gather(
Complex_f *x,
Complex_f *y,
int n,
unsigned int *table,
unsigned int mu);
378__global__
void cuZ_gather(
Complex *x,
Complex *y,
int n,
unsigned int *table,
unsigned int mu);
379__global__
void cuComplex_convert(
Complex_f *a,
Complex *b,
int len,
bool dtof);
380__global__
void cuReal_convert(
float *a,
double *b,
int len,
bool dtof);
This header is intended to be a useful reference for error codes and their meanings.
Defines the constants of the code and other parameters for loop dimensions. Each subroutine includes ...
#define nadj
adjacent spatial indices
#define Complex
Double precision complex number.
#define ndirac
Dirac indices.
#define Complex_f
Single precision complex number.
double Polyakov(Complex_f *ut[2])
Calculate the Polyakov loop (no prizes for guessing that one...)
int SU2plaq(Complex_f *ut[2], Complex_f Sigma[2], unsigned int *iu, int i, int mu, int nu)
Calculates the plaquette at site i in the direction.
int Z_gather(Complex *x, Complex *y, int n, unsigned int *table, unsigned int mu)
Extracts all the double precision gauge links in the direction only.
int Average_Plaquette(double *hg, double *avplaqs, double *avplaqt, Complex_f *ut[2], unsigned int *iu, float beta)
Calculates the gauge action using new (how new?) lookup table.
int Congradq(int na, double res, Complex *X1, Complex *r, Complex_f *ut[2], unsigned int *iu, unsigned int *id, Complex_f *gamval_f, int *gamin, float *dk[2], Complex_f jqq, float akappa, int *itercg)
Matrix Inversion via Conjugate Gradient (up/down flavour partitioning). Solves Implements up/down pa...
int Measure(double *pbp, double *endenf, double *denf, Complex *qq, Complex *qbqb, double res, int *itercg, Complex *ut[2], Complex_f *ut_f[2], unsigned int *iu, unsigned int *id, Complex *gamval, Complex_f *gamval_f, int *gamin, double *dk[2], float *dk_f[2], Complex_f jqq, float akappa, Complex *Phi, Complex *R1)
Calculate fermion expectation values via a noisy estimator.
int Init(int istart, int ibound, int iread, float beta, float fmu, float akappa, Complex_f ajq, Complex *u[2], Complex *ut[2], Complex_f *ut_f[2], Complex *gamval, Complex_f *gamval_f, int *gamin, double *dk[2], float *dk_f[2], unsigned int *iu, unsigned int *id)
Initialises the system.
int Force(double *dSdpi, int iflag, double res1, Complex *X0, Complex *X1, Complex *Phi, Complex *ut[2], Complex_f *ut_f[2], unsigned int *iu, unsigned int *id, Complex *gamval, Complex_f *gamval_f, int *gamin, double *dk[2], float *dk_f[2], Complex_f jqq, float akappa, float beta, double *ancg)
Calculates the force at each intermediate time.
int Congradp(int na, double res, Complex *Phi, Complex *xi, Complex_f *ut[2], unsigned int *iu, unsigned int *id, Complex_f *gamval, int *gamin, float *dk[2], Complex_f jqq, float akappa, int *itercg)
Matrix Inversion via Conjugate Gradient (no up/down flavour partitioning). Solves The matrix multipl...
int Hamilton(double *h, double *s, double res2, double *pp, Complex *X0, Complex *X1, Complex *Phi, Complex_f *ut[2], unsigned int *iu, unsigned int *id, Complex_f *gamval_f, int *gamin, float *dk[2], Complex_f jqq, float akappa, float beta, double *ancgh, int traj)
Calculate the Hamiltonian.
int Reunitarise(Complex *ut[2])
Reunitarises u11t and u12t as in conj(u11t[i])*u11t[i]+conj(u12t[i])*u12t[i]=1.
int Gauge_force(double *dSdpi, Complex_f *ut[2], unsigned int *iu, unsigned int *id, float beta)
Calculates the gauge force due to the Wilson Action at each intermediate time.
int Fill_Small_Phi(int na, Complex *smallPhi, Complex *Phi)
int C_gather(Complex_f *x, Complex_f *y, int n, unsigned int *table, unsigned int mu)
Extracts all the single precision gauge links in the direction only.