QUDA  v0.5.0
A library for QCD on GPUs
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
enum_quda.h
Go to the documentation of this file.
1 #ifndef _ENUM_QUDA_H
2 #define _ENUM_QUDA_H
3 
4 #include <limits.h>
5 #define QUDA_INVALID_ENUM INT_MIN
6 
7 #ifdef __cplusplus
8 extern "C" {
9 #endif
10 
11  //
12  // Types used in QudaGaugeParam
13  //
14 
15  typedef enum QudaLinkType_s {
20  QUDA_WILSON_LINKS = QUDA_SU3_LINKS, // used by wilson, clover, twisted mass, and domain wall
26  } QudaLinkType;
27 
28  typedef enum QudaGaugeFieldOrder_s {
30  QUDA_FLOAT2_GAUGE_ORDER = 2, // no reconstruct and double precision
31  QUDA_FLOAT4_GAUGE_ORDER = 4, // 8 and 12 reconstruct half and single
32  QUDA_QDP_GAUGE_ORDER, // expect *gauge[mu], even-odd, spacetime, row-column color
33  QUDA_CPS_WILSON_GAUGE_ORDER, // expect *gauge, even-odd, mu, spacetime, column-row color
34  QUDA_MILC_GAUGE_ORDER, // expect *gauge, even-odd, mu, spacetime, row-column order
35  QUDA_BQCD_GAUGE_ORDER, // expect *gauge, mu, even-odd, spacetime+halos, column-row order
38 
39  typedef enum QudaTboundary_s {
43  } QudaTboundary;
44 
45  typedef enum QudaPrecision_s {
50  } QudaPrecision;
51 
52  typedef enum QudaReconstructType_s {
53  QUDA_RECONSTRUCT_NO = 18, // store all 18 real numbers explicitly
54  QUDA_RECONSTRUCT_12 = 12, // reconstruct from 12 real numbers
55  QUDA_RECONSTRUCT_8 = 8, // reconstruct from 8 real numbers
56  QUDA_RECONSTRUCT_10 = 10, // 10-number parameterization used for storing the momentum field
59 
60  typedef enum QudaGaugeFixed_s {
61  QUDA_GAUGE_FIXED_NO, // no gauge fixing
62  QUDA_GAUGE_FIXED_YES, // gauge field stored in temporal gauge
65 
66  //
67  // Types used in QudaInvertParam
68  //
69 
70  typedef enum QudaDslashType_s {
78 
79  typedef enum QudaInverterType_s {
86 
87  typedef enum QudaSolutionType_s {
94 
95  typedef enum QudaSolveType_s {
103  } QudaSolveType;
104 
105  typedef enum QudaSchwarzType_s {
109  } QudaSchwarzType;
110 
111  typedef enum QudaResidualType_s {
112  QUDA_L2_RELATIVE_RESIDUAL = 1, // the default
113  QUDA_HEAVY_QUARK_RESIDUAL = 2, // Fermilab heavy quark residual
116 
117  // Whether the preconditioned matrix is (1-k^2 Deo Doe) or (1-k^2 Doe Deo)
118  //
119  // For the clover-improved Wilson Dirac operator, QUDA_MATPC_EVEN_EVEN
120  // defaults to the "symmetric" form, (1 - k^2 A_ee^-1 D_eo A_oo^-1 D_oe),
121  // and likewise for QUDA_MATPC_ODD_ODD.
122  //
123  // For the "asymmetric" form, (A_ee - k^2 D_eo A_oo^-1 D_oe), select
124  // QUDA_MATPC_EVEN_EVEN_ASYMMETRIC.
125  //
126  typedef enum QudaMatPCType_s {
132  } QudaMatPCType;
133 
134  typedef enum QudaDagType_s {
138  } QudaDagType;
139 
140  typedef enum QudaMassNormalization_s {
146 
147  typedef enum QudaPreserveSource_s {
148  QUDA_PRESERVE_SOURCE_NO, // use the source for the residual
149  QUDA_PRESERVE_SOURCE_YES, // keep the source intact
152 
153  typedef enum QudaDiracFieldOrder_s {
154  QUDA_INTERNAL_DIRAC_ORDER, // internal dirac order used by QUDA, varies depending on precision and dslash type
155  QUDA_DIRAC_ORDER, // even-odd, color inside spin
156  QUDA_QDP_DIRAC_ORDER, // even-odd, spin inside color
157  QUDA_CPS_WILSON_DIRAC_ORDER, // odd-even, color inside spin
158  QUDA_LEX_DIRAC_ORDER, // lexicographical order, color inside spin
161 
162  typedef enum QudaCloverFieldOrder_s {
163  QUDA_INTERNAL_CLOVER_ORDER, // internal clover order use by QUDA.
164  QUDA_PACKED_CLOVER_ORDER, // even-odd, packed
165  QUDA_LEX_PACKED_CLOVER_ORDER, // lexicographical order, packed
166  QUDA_BQCD_CLOVER_ORDER, // even-odd, super-diagonal packed and reordered
169 
170  typedef enum QudaVerbosity_s {
176  } QudaVerbosity;
177 
178  typedef enum QudaTune_s {
182  } QudaTune;
183 
184  typedef enum QudaPreserveDirac_s {
189 
190  //
191  // Type used for "parity" argument to dslashQuda()
192  //
193 
194  typedef enum QudaParity_s {
198  } QudaParity;
199 
200  //
201  // Types used only internally
202  //
203 
204  typedef enum QudaDiracType_s {
216  } QudaDiracType;
217 
218  // Where the field is stored
219  typedef enum QudaFieldLocation_s {
224 
225  // Which sites are included
226  typedef enum QudaSiteSubset_s {
230  } QudaSiteSubset;
231 
232  // Site ordering (always t-z-y-x, with rightmost varying fastest)
233  typedef enum QudaSiteOrder_s {
234  QUDA_LEXICOGRAPHIC_SITE_ORDER, // lexicographic ordering
235  QUDA_EVEN_ODD_SITE_ORDER, // QUDA and QDP use this
236  QUDA_ODD_EVEN_SITE_ORDER, // CPS uses this
238  } QudaSiteOrder;
239 
240  // Degree of freedom ordering
241  typedef enum QudaFieldOrder_s {
242  QUDA_FLOAT_FIELD_ORDER = 1, // spin-color-complex-space
243  QUDA_FLOAT2_FIELD_ORDER = 2, // (spin-color-complex)/2-space-(spin-color-complex)%2
244  QUDA_FLOAT4_FIELD_ORDER = 4, // (spin-color-complex)/4-space-(spin-color-complex)%4
245  QUDA_SPACE_SPIN_COLOR_FIELD_ORDER, // CPS/QDP++ ordering
246  QUDA_SPACE_COLOR_SPIN_FIELD_ORDER, // QLA ordering (spin inside color)
247  QUDA_QOP_DOMAIN_WALL_FIELD_ORDER, // QOP domain-wall ordering
249  } QudaFieldOrder;
250 
251  typedef enum QudaFieldCreate_s {
252  QUDA_NULL_FIELD_CREATE, // create new field
253  QUDA_ZERO_FIELD_CREATE, // create new field and zero it
254  QUDA_COPY_FIELD_CREATE, // create copy to field
255  QUDA_REFERENCE_FIELD_CREATE, // create reference to field
257  } QudaFieldCreate;
258 
259  typedef enum QudaGammaBasis_s {
263  } QudaGammaBasis;
264 
265  typedef enum QudaSourceType_s {
269  } QudaSourceType;
270 
271  typedef enum QudaTwistFlavorType_s {
279 
280  typedef enum QudaTwistGamma5Type_s {
285 
286  typedef enum QudaUseInitGuess_s {
291 
292  typedef enum QudaDirection_s {
295  } QudaDirection;
296 
297  typedef enum QudaComputeFatMethod_s {
302 
303  typedef enum QudaFatLinkFlag_s {
307  } QudaFatLinkFlag;
308 
309  typedef enum QudaFieldGeometry_s {
315 
316 #ifdef __cplusplus
317 }
318 #endif
319 
320 #endif // _ENUM_QUDA_H