QUDA  v1.1.0
A library for QCD on GPUs
unitarization_links.h
Go to the documentation of this file.
1 #ifndef _UNITARIZATION_LINKS_QUDA_H
2 #define _UNITARIZATION_LINKS_QUDA_H
3 
4 #include <gauge_field.h>
5 
6 
7 // ***************************************************
8 // Declarations for unitarization functions used
9 // in the construction of the hisq-fattened links
10 //
11 // There are many algorithms for unitarizing
12 // fat7-smeared link variables.
13 // In practice, we use the method employed by
14 // MILC and QOPQDP, namely a combination of
15 // "analytic", or Cayley-Hamilton, unitarization,
16 // and SVD.
17 // Analytic unitarization is first attempted.
18 // The eigenvalues of the matrix Q = V^{dagger}V
19 // (V being the fat7 link) are computed,
20 // if the determinant of Q is less than a user-defined
21 // value (svd_abs_error), or the relative error on the
22 // determinant, estimated by comparing the product
23 // of the eigenvalues of Q to the determinant obtained
24 // from the standard formula, is greater than a
25 // user-specified tolerance (svd_rel_error), then
26 // SVD is used to perform the unitarization.
27 // ***************************************************
28 
29 
30 namespace quda {
31 
32  void setUnitarizeLinksConstants(double unitarize_eps, double max_error,
33  bool allow_svd, bool svd_only,
34  double svd_rel_error, double svd_abs_error);
35 
36  void unitarizeLinksCPU(GaugeField &outfield, const GaugeField &infield);
37 
38  void unitarizeLinks(GaugeField &outfield, const GaugeField &infield, int *fails);
39  void unitarizeLinks(GaugeField &outfield, int *fails);
40 
41  bool isUnitary(const cpuGaugeField& field, double max_error);
42 
43 } // namespace quda
44 
45 
46 #endif // _UNITARIZATION_LINKS_H
void setUnitarizeLinksConstants(double unitarize_eps, double max_error, bool allow_svd, bool svd_only, double svd_rel_error, double svd_abs_error)
void unitarizeLinksCPU(GaugeField &outfield, const GaugeField &infield)
void unitarizeLinks(GaugeField &outfield, const GaugeField &infield, int *fails)
bool isUnitary(const cpuGaugeField &field, double max_error)