QUDA  0.9.0
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  typedef enum QudaMemoryType_s {
17 
18  //
19  // Types used in QudaGaugeParam
20  //
21 
22  typedef enum QudaLinkType_s {
27  QUDA_COARSE_LINKS, // used for coarse-gauge field with multigrid
28  QUDA_SMEARED_LINKS, // used for loading and saving gaugeSmeared in the interface
29  QUDA_WILSON_LINKS = QUDA_SU3_LINKS, // used by wilson, clover, twisted mass, and domain wall
35  } QudaLinkType;
36 
37  typedef enum QudaGaugeFieldOrder_s {
39  QUDA_FLOAT2_GAUGE_ORDER = 2, // no reconstruct and double precision
40  QUDA_FLOAT4_GAUGE_ORDER = 4, // 8 and 12 reconstruct half and single
41  QUDA_QDP_GAUGE_ORDER, // expect *gauge[mu], even-odd, spacetime, row-column color
42  QUDA_QDPJIT_GAUGE_ORDER, // expect *gauge[mu], even-odd, complex-column-row-spacetime
43  QUDA_CPS_WILSON_GAUGE_ORDER, // expect *gauge, even-odd, mu, spacetime, column-row color
44  QUDA_MILC_GAUGE_ORDER, // expect *gauge, even-odd, mu, spacetime, row-column order
45  QUDA_MILC_SITE_GAUGE_ORDER, // packed into MILC site AoS [even-odd][spacetime] array, and [dir][row][col] inside
46  QUDA_BQCD_GAUGE_ORDER, // expect *gauge, mu, even-odd, spacetime+halos, column-row order
47  QUDA_TIFR_GAUGE_ORDER, // expect *gauge, mu, even-odd, spacetime, column-row order
48  QUDA_TIFR_PADDED_GAUGE_ORDER, // expect *gauge, mu, parity, t, z+halo, y, x/2, column-row order
51 
52  typedef enum QudaTboundary_s {
56  } QudaTboundary;
57 
58  typedef enum QudaPrecision_s {
63  } QudaPrecision;
64 
65  typedef enum QudaReconstructType_s {
66  QUDA_RECONSTRUCT_NO = 18, // store all 18 real numbers explicitly
67  QUDA_RECONSTRUCT_12 = 12, // reconstruct from 12 real numbers
68  QUDA_RECONSTRUCT_8 = 8, // reconstruct from 8 real numbers
69  QUDA_RECONSTRUCT_9 = 9, // used for storing HISQ long-link variables
70  QUDA_RECONSTRUCT_13 = 13, // used for storing HISQ long-link variables
71  QUDA_RECONSTRUCT_10 = 10, // 10-number parameterization used for storing the momentum field
74 
75  typedef enum QudaGaugeFixed_s {
76  QUDA_GAUGE_FIXED_NO, // no gauge fixing
77  QUDA_GAUGE_FIXED_YES, // gauge field stored in temporal gauge
80 
81  //
82  // Types used in QudaInvertParam
83  //
84 
85  typedef enum QudaDslashType_s {
99 
100  typedef enum QudaInverterType_s {
122 
123  typedef enum QudaEigType_s {
124  QUDA_LANCZOS, //Normal Lanczos eigen solver
125  QUDA_IMP_RST_LANCZOS, //implicit restarted lanczos solver
127  } QudaEigType;
128 
129  typedef enum QudaSolutionType_s {
138 
139  typedef enum QudaSolveType_s {
149  } QudaSolveType;
150 
158 
159  typedef enum QudaSchwarzType_s {
163  } QudaSchwarzType;
164 
165  typedef enum QudaResidualType_s {
166  QUDA_L2_RELATIVE_RESIDUAL = 1, // L2 relative residual (default)
167  QUDA_L2_ABSOLUTE_RESIDUAL = 2, // L2 absolute residual
168  QUDA_HEAVY_QUARK_RESIDUAL = 4, // Fermilab heavy quark residual
171 
172  // Whether the preconditioned matrix is (1-k^2 Deo Doe) or (1-k^2 Doe Deo)
173  //
174  // For the clover-improved Wilson Dirac operator, QUDA_MATPC_EVEN_EVEN
175  // defaults to the "symmetric" form, (1 - k^2 A_ee^-1 D_eo A_oo^-1 D_oe),
176  // and likewise for QUDA_MATPC_ODD_ODD.
177  //
178  // For the "asymmetric" form, (A_ee - k^2 D_eo A_oo^-1 D_oe), select
179  // QUDA_MATPC_EVEN_EVEN_ASYMMETRIC.
180  //
181  typedef enum QudaMatPCType_s {
187  } QudaMatPCType;
188 
189  typedef enum QudaDagType_s {
193  } QudaDagType;
194 
195  typedef enum QudaMassNormalization_s {
201 
203  QUDA_DEFAULT_NORMALIZATION, // leave source and solution untouched
204  QUDA_SOURCE_NORMALIZATION // normalize such that || src || = 1
206 
207  typedef enum QudaPreserveSource_s {
208  QUDA_PRESERVE_SOURCE_NO, // use the source for the residual
209  QUDA_PRESERVE_SOURCE_YES, // keep the source intact
212 
213  typedef enum QudaDiracFieldOrder_s {
214  QUDA_INTERNAL_DIRAC_ORDER, // internal dirac order used, varies on precision and dslash type
215  QUDA_DIRAC_ORDER, // even-odd, color inside spin
216  QUDA_QDP_DIRAC_ORDER, // even-odd, spin inside color
217  QUDA_QDPJIT_DIRAC_ORDER, // even-odd, complex-color-spin-spacetime
218  QUDA_CPS_WILSON_DIRAC_ORDER, // odd-even, color inside spin
219  QUDA_LEX_DIRAC_ORDER, // lexicographical order, color inside spin
220  QUDA_TIFR_PADDED_DIRAC_ORDER, // padded z dimension for TIFR RHMC code
223 
224  typedef enum QudaCloverFieldOrder_s {
225  QUDA_FLOAT_CLOVER_ORDER = 1, // even-odd float ordering
226  QUDA_FLOAT2_CLOVER_ORDER = 2, // even-odd float2 ordering
227  QUDA_FLOAT4_CLOVER_ORDER = 4, // even-odd float4 ordering
228  QUDA_PACKED_CLOVER_ORDER, // even-odd, QDP packed
229  QUDA_QDPJIT_CLOVER_ORDER, // (diagonal / off-diagonal)-chirality-spacetime
230  QUDA_BQCD_CLOVER_ORDER, // even-odd, super-diagonal packed and reordered
233 
234  typedef enum QudaVerbosity_s {
240  } QudaVerbosity;
241 
242  typedef enum QudaTune_s {
246  } QudaTune;
247 
248  typedef enum QudaPreserveDirac_s {
253 
254  //
255  // Type used for "parity" argument to dslashQuda()
256  //
257 
258  typedef enum QudaParity_s {
262  } QudaParity;
263 
264  //
265  // Types used only internally
266  //
267 
268  typedef enum QudaDiracType_s {
292  } QudaDiracType;
293 
294  // Where the field is stored
295  typedef enum QudaFieldLocation_s {
300 
301  // Which sites are included
302  typedef enum QudaSiteSubset_s {
306  } QudaSiteSubset;
307 
308  // Site ordering (always t-z-y-x, with rightmost varying fastest)
309  typedef enum QudaSiteOrder_s {
310  QUDA_LEXICOGRAPHIC_SITE_ORDER, // lexicographic ordering
311  QUDA_EVEN_ODD_SITE_ORDER, // QUDA and QDP use this
312  QUDA_ODD_EVEN_SITE_ORDER, // CPS uses this
314  } QudaSiteOrder;
315 
316  // Degree of freedom ordering
317  typedef enum QudaFieldOrder_s {
318  QUDA_FLOAT_FIELD_ORDER = 1, // spin-color-complex-space
319  QUDA_FLOAT2_FIELD_ORDER = 2, // (spin-color-complex)/2-space-(spin-color-complex)%2
320  QUDA_FLOAT4_FIELD_ORDER = 4, // (spin-color-complex)/4-space-(spin-color-complex)%4
321  QUDA_SPACE_SPIN_COLOR_FIELD_ORDER, // CPS/QDP++ ordering
322  QUDA_SPACE_COLOR_SPIN_FIELD_ORDER, // QLA ordering (spin inside color)
323  QUDA_QDPJIT_FIELD_ORDER, // QDP field ordering (complex-color-spin-spacetime)
324  QUDA_QOP_DOMAIN_WALL_FIELD_ORDER, // QOP domain-wall ordering
327  } QudaFieldOrder;
328 
329  typedef enum QudaFieldCreate_s {
330  QUDA_NULL_FIELD_CREATE, // create new field
331  QUDA_ZERO_FIELD_CREATE, // create new field and zero it
332  QUDA_COPY_FIELD_CREATE, // create copy to field
333  QUDA_REFERENCE_FIELD_CREATE, // create reference to field
335  } QudaFieldCreate;
336 
337  typedef enum QudaGammaBasis_s {
342  } QudaGammaBasis;
343 
344  typedef enum QudaSourceType_s {
350  } QudaSourceType;
351 
352  // used to select projection method for deflated solvers
353  typedef enum QudaProjectionType_s {
358 
359  // used to select preconditioning method in domain-wall fermion
360  typedef enum QudaDWFPCType_s {
364  } QudaDWFPCType;
365 
366  typedef enum QudaTwistFlavorType_s {
373 
374  typedef enum QudaTwistDslashType_s {
381 
388 
389  typedef enum QudaTwistGamma5Type_s {
394 
395  typedef enum QudaUseInitGuess_s {
400 
401  typedef enum QudaComputeNullVector_s {
406 
407  typedef enum QudaBoolean_s {
411  } QudaBoolean;
412 
413  typedef enum QudaDirection_s {
417  } QudaDirection;
418 
419  typedef enum QudaLinkDirection_s {
424 
425  typedef enum QudaFieldGeometry_s {
432 
433  typedef enum QudaGhostExchange_s {
439 
440  typedef enum QudaStaggeredPhase_s {
447 
448  typedef enum QudaContractType_s {
460 
461  //Allows to choose an appropriate external library
462  typedef enum QudaExtLibType_s {
467  } QudaExtLibType;
468 
469 #ifdef __cplusplus
470 }
471 #endif
472 
473 #endif // _ENUM_QUDA_H
enum QudaPreserveSource_s QudaPreserveSource
enum QudaMassNormalization_s QudaMassNormalization
#define QUDA_INVALID_ENUM
Definition: enum_quda.h:5
QudaPreserveDirac_s
Definition: enum_quda.h:248
enum QudaPrecision_s QudaPrecision
QudaTune_s
Definition: enum_quda.h:242
QudaProjectionType_s
Definition: enum_quda.h:353
enum QudaResidualType_s QudaResidualType
QudaSchwarzType_s
Definition: enum_quda.h:159
QudaPreserveSource_s
Definition: enum_quda.h:207
QudaUseInitGuess_s
Definition: enum_quda.h:395
enum QudaProjectionType_s QudaProjectionType
QudaTboundary_s
Definition: enum_quda.h:52
QudaGammaBasis_s
Definition: enum_quda.h:337
enum QudaSolveType_s QudaSolveType
enum QudaFieldOrder_s QudaFieldOrder
enum QudaLinkDirection_s QudaLinkDirection
enum QudaTwistCloverDslashType_s QudaTwistCloverDslashType
QudaFieldGeometry_s
Definition: enum_quda.h:425
QudaFieldLocation_s
Definition: enum_quda.h:295
QudaMemoryType_s
Definition: enum_quda.h:11
enum QudaSiteOrder_s QudaSiteOrder
QudaVerbosity_s
Definition: enum_quda.h:234
QudaSiteOrder_s
Definition: enum_quda.h:309
QudaLinkDirection_s
Definition: enum_quda.h:419
QudaReconstructType_s
Definition: enum_quda.h:65
QudaDiracFieldOrder_s
Definition: enum_quda.h:213
enum QudaComputeNullVector_s QudaComputeNullVector
QudaStaggeredPhase_s
Definition: enum_quda.h:440
QudaComputeNullVector_s
Definition: enum_quda.h:401
enum QudaEigType_s QudaEigType
QudaGhostExchange_s
Definition: enum_quda.h:433
enum QudaTboundary_s QudaTboundary
QudaFieldOrder_s
Definition: enum_quda.h:317
QudaTwistFlavorType_s
Definition: enum_quda.h:366
QudaParity_s
Definition: enum_quda.h:258
enum QudaSourceType_s QudaSourceType
QudaMultigridCycleType_s
Definition: enum_quda.h:151
enum QudaDirection_s QudaDirection
enum QudaCloverFieldOrder_s QudaCloverFieldOrder
enum QudaDWFPCType_s QudaDWFPCType
QudaMassNormalization_s
Definition: enum_quda.h:195
QudaCloverFieldOrder_s
Definition: enum_quda.h:224
QudaEigType_s
Definition: enum_quda.h:123
QudaFieldCreate_s
Definition: enum_quda.h:329
QudaGaugeFixed_s
Definition: enum_quda.h:75
enum QudaStaggeredPhase_s QudaStaggeredPhase
QudaTwistDslashType_s
Definition: enum_quda.h:374
enum QudaPreserveDirac_s QudaPreserveDirac
QudaContractType_s
Definition: enum_quda.h:448
enum QudaGhostExchange_s QudaGhostExchange
QudaDirection_s
Definition: enum_quda.h:413
enum QudaMatPCType_s QudaMatPCType
QudaSiteSubset_s
Definition: enum_quda.h:302
enum QudaGaugeFixed_s QudaGaugeFixed
QudaBoolean_s
Definition: enum_quda.h:407
enum QudaSolutionType_s QudaSolutionType
QudaInverterType_s
Definition: enum_quda.h:100
enum QudaSchwarzType_s QudaSchwarzType
QudaMatPCType_s
Definition: enum_quda.h:181
enum QudaGaugeFieldOrder_s QudaGaugeFieldOrder
enum QudaDagType_s QudaDagType
enum QudaParity_s QudaParity
enum QudaLinkType_s QudaLinkType
QudaDiracType_s
Definition: enum_quda.h:268
QudaDWFPCType_s
Definition: enum_quda.h:360
QudaExtLibType_s
Definition: enum_quda.h:462
enum QudaBoolean_s QudaBoolean
enum QudaSiteSubset_s QudaSiteSubset
enum QudaTwistDslashType_s QudaTwistDslashType
QudaDagType_s
Definition: enum_quda.h:189
QudaResidualType_s
Definition: enum_quda.h:165
enum QudaFieldLocation_s QudaFieldLocation
QudaTwistGamma5Type_s
Definition: enum_quda.h:389
enum QudaGammaBasis_s QudaGammaBasis
enum QudaMultigridCycleType_s QudaMultigridCycleType
enum QudaReconstructType_s QudaReconstructType
QudaSourceType_s
Definition: enum_quda.h:344
QudaSolutionType_s
Definition: enum_quda.h:129
enum QudaTune_s QudaTune
QudaSolverNormalization_s
Definition: enum_quda.h:202
enum QudaDslashType_s QudaDslashType
enum QudaContractType_s QudaContractType
enum QudaFieldCreate_s QudaFieldCreate
enum QudaFieldGeometry_s QudaFieldGeometry
enum QudaVerbosity_s QudaVerbosity
enum QudaTwistGamma5Type_s QudaTwistGamma5Type
QudaGaugeFieldOrder_s
Definition: enum_quda.h:37
QudaDslashType_s
Definition: enum_quda.h:85
QudaSolveType_s
Definition: enum_quda.h:139
enum QudaUseInitGuess_s QudaUseInitGuess
enum QudaSolverNormalization_s QudaSolverNormalization
QudaTwistCloverDslashType_s
Definition: enum_quda.h:382
enum QudaInverterType_s QudaInverterType
QudaLinkType_s
Definition: enum_quda.h:22
enum QudaMemoryType_s QudaMemoryType
enum QudaExtLibType_s QudaExtLibType
enum QudaDiracType_s QudaDiracType
QudaPrecision_s
Definition: enum_quda.h:58
enum QudaTwistFlavorType_s QudaTwistFlavorType
enum QudaDiracFieldOrder_s QudaDiracFieldOrder