QUDA  1.0.0
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
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 {
64  } QudaPrecision;
65 
66  typedef enum QudaReconstructType_s {
67  QUDA_RECONSTRUCT_NO = 18, // store all 18 real numbers explicitly
68  QUDA_RECONSTRUCT_12 = 12, // reconstruct from 12 real numbers
69  QUDA_RECONSTRUCT_8 = 8, // reconstruct from 8 real numbers
70  QUDA_RECONSTRUCT_9 = 9, // used for storing HISQ long-link variables
71  QUDA_RECONSTRUCT_13 = 13, // used for storing HISQ long-link variables
72  QUDA_RECONSTRUCT_10 = 10, // 10-number parameterization used for storing the momentum field
75 
76  typedef enum QudaGaugeFixed_s {
77  QUDA_GAUGE_FIXED_NO, // no gauge fixing
78  QUDA_GAUGE_FIXED_YES, // gauge field stored in temporal gauge
81 
82  //
83  // Types used in QudaInvertParam
84  //
85 
86  typedef enum QudaDslashType_s {
100 
101  typedef enum QudaInverterType_s {
130 
131  typedef enum QudaEigType_s {
132  QUDA_EIG_TR_LANCZOS, // Thick restarted lanczos solver
133  QUDA_EIG_IR_LANCZOS, // Implicitly Restarted Lanczos solver (not implemented)
134  QUDA_EIG_IR_ARNOLDI, // Implicitly Restarted Arnoldi solver (not implemented)
136  } QudaEigType;
137 
140  typedef enum QudaEigSpectrumType_s {
149 
150  typedef enum QudaSolutionType_s {
159 
160  typedef enum QudaSolveType_s {
170  } QudaSolveType;
171 
179 
180  typedef enum QudaSchwarzType_s {
184  } QudaSchwarzType;
185 
186  typedef enum QudaResidualType_s {
187  QUDA_L2_RELATIVE_RESIDUAL = 1, // L2 relative residual (default)
188  QUDA_L2_ABSOLUTE_RESIDUAL = 2, // L2 absolute residual
189  QUDA_HEAVY_QUARK_RESIDUAL = 4, // Fermilab heavy quark residual
192 
193  // Which basis to use for CA algorithms
194  typedef enum QudaCABasis_s {
198  } QudaCABasis;
199 
200  // Whether the preconditioned matrix is (1-k^2 Deo Doe) or (1-k^2 Doe Deo)
201  //
202  // For the clover-improved Wilson Dirac operator, QUDA_MATPC_EVEN_EVEN
203  // defaults to the "symmetric" form, (1 - k^2 A_ee^-1 D_eo A_oo^-1 D_oe),
204  // and likewise for QUDA_MATPC_ODD_ODD.
205  //
206  // For the "asymmetric" form, (A_ee - k^2 D_eo A_oo^-1 D_oe), select
207  // QUDA_MATPC_EVEN_EVEN_ASYMMETRIC.
208  //
209  typedef enum QudaMatPCType_s {
215  } QudaMatPCType;
216 
217  typedef enum QudaDagType_s {
221  } QudaDagType;
222 
223  typedef enum QudaMassNormalization_s {
229 
231  QUDA_DEFAULT_NORMALIZATION, // leave source and solution untouched
232  QUDA_SOURCE_NORMALIZATION // normalize such that || src || = 1
234 
235  typedef enum QudaPreserveSource_s {
236  QUDA_PRESERVE_SOURCE_NO, // use the source for the residual
237  QUDA_PRESERVE_SOURCE_YES, // keep the source intact
240 
241  typedef enum QudaDiracFieldOrder_s {
242  QUDA_INTERNAL_DIRAC_ORDER, // internal dirac order used, varies on precision and dslash type
243  QUDA_DIRAC_ORDER, // even-odd, color inside spin
244  QUDA_QDP_DIRAC_ORDER, // even-odd, spin inside color
245  QUDA_QDPJIT_DIRAC_ORDER, // even-odd, complex-color-spin-spacetime
246  QUDA_CPS_WILSON_DIRAC_ORDER, // odd-even, color inside spin
247  QUDA_LEX_DIRAC_ORDER, // lexicographical order, color inside spin
248  QUDA_TIFR_PADDED_DIRAC_ORDER, // padded z dimension for TIFR RHMC code
251 
252  typedef enum QudaCloverFieldOrder_s {
253  QUDA_FLOAT_CLOVER_ORDER = 1, // even-odd float ordering
254  QUDA_FLOAT2_CLOVER_ORDER = 2, // even-odd float2 ordering
255  QUDA_FLOAT4_CLOVER_ORDER = 4, // even-odd float4 ordering
256  QUDA_PACKED_CLOVER_ORDER, // even-odd, QDP packed
257  QUDA_QDPJIT_CLOVER_ORDER, // (diagonal / off-diagonal)-chirality-spacetime
258  QUDA_BQCD_CLOVER_ORDER, // even-odd, super-diagonal packed and reordered
261 
262  typedef enum QudaVerbosity_s {
268  } QudaVerbosity;
269 
270  typedef enum QudaTune_s {
274  } QudaTune;
275 
276  typedef enum QudaPreserveDirac_s {
281 
282  //
283  // Type used for "parity" argument to dslashQuda()
284  //
285 
286  typedef enum QudaParity_s {
290  } QudaParity;
291 
292  //
293  // Types used only internally
294  //
295 
296  typedef enum QudaDiracType_s {
321  } QudaDiracType;
322 
323  // Where the field is stored
324  typedef enum QudaFieldLocation_s {
329 
330  // Which sites are included
331  typedef enum QudaSiteSubset_s {
335  } QudaSiteSubset;
336 
337  // Site ordering (always t-z-y-x, with rightmost varying fastest)
338  typedef enum QudaSiteOrder_s {
339  QUDA_LEXICOGRAPHIC_SITE_ORDER, // lexicographic ordering
340  QUDA_EVEN_ODD_SITE_ORDER, // QUDA and QDP use this
341  QUDA_ODD_EVEN_SITE_ORDER, // CPS uses this
343  } QudaSiteOrder;
344 
345  // Degree of freedom ordering
346  typedef enum QudaFieldOrder_s {
347  QUDA_FLOAT_FIELD_ORDER = 1, // spin-color-complex-space
348  QUDA_FLOAT2_FIELD_ORDER = 2, // (spin-color-complex)/2-space-(spin-color-complex)%2
349  QUDA_FLOAT4_FIELD_ORDER = 4, // (spin-color-complex)/4-space-(spin-color-complex)%4
350  QUDA_SPACE_SPIN_COLOR_FIELD_ORDER, // CPS/QDP++ ordering
351  QUDA_SPACE_COLOR_SPIN_FIELD_ORDER, // QLA ordering (spin inside color)
352  QUDA_QDPJIT_FIELD_ORDER, // QDP field ordering (complex-color-spin-spacetime)
353  QUDA_QOP_DOMAIN_WALL_FIELD_ORDER, // QOP domain-wall ordering
356  } QudaFieldOrder;
357 
358  typedef enum QudaFieldCreate_s {
359  QUDA_NULL_FIELD_CREATE, // create new field
360  QUDA_ZERO_FIELD_CREATE, // create new field and zero it
361  QUDA_COPY_FIELD_CREATE, // create copy to field
362  QUDA_REFERENCE_FIELD_CREATE, // create reference to field
364  } QudaFieldCreate;
365 
366  typedef enum QudaGammaBasis_s {
371  } QudaGammaBasis;
372 
373  typedef enum QudaSourceType_s {
380  } QudaSourceType;
381 
382  typedef enum QudaNoiseType_s {
386  } QudaNoiseType;
387 
388  // used to select projection method for deflated solvers
389  typedef enum QudaProjectionType_s {
394 
395  // used to select checkerboard preconditioning method
397 
398  typedef enum QudaTwistFlavorType_s {
405 
406  typedef enum QudaTwistDslashType_s {
413 
420 
421  typedef enum QudaTwistGamma5Type_s {
426 
427  typedef enum QudaUseInitGuess_s {
432 
433  typedef enum QudaDeflatedGuess_s {
438 
439  typedef enum QudaComputeNullVector_s {
444 
445  typedef enum QudaSetupType_s {
449  } QudaSetupType;
450 
451  typedef enum QudaBoolean_s {
455  } QudaBoolean;
456 
457  // define these for backwards compatibility
458 #define QUDA_BOOLEAN_NO QUDA_BOOLEAN_FALSE
459 #define QUDA_BOOLEAN_YES QUDA_BOOLEAN_TRUE
460 
461  typedef enum QudaDirection_s {
465  } QudaDirection;
466 
467  typedef enum QudaLinkDirection_s {
472 
473  typedef enum QudaFieldGeometry_s {
480 
481  typedef enum QudaGhostExchange_s {
487 
488  typedef enum QudaStaggeredPhase_s {
495 
496  typedef enum QudaContractType_s {
497  QUDA_CONTRACT_TYPE_OPEN, // Open spin elementals
498  QUDA_CONTRACT_TYPE_DR, // DegrandRossi
501 
502  typedef enum QudaContractGamma_s {
521 
522  // Allows to choose an appropriate external library
523  typedef enum QudaExtLibType_s {
528  } QudaExtLibType;
529 
530 #ifdef __cplusplus
531 }
532 #endif
533 
534 #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:276
enum QudaPrecision_s QudaPrecision
QudaTune_s
Definition: enum_quda.h:270
QudaProjectionType_s
Definition: enum_quda.h:389
enum QudaResidualType_s QudaResidualType
enum QudaNoiseType_s QudaNoiseType
QudaSchwarzType_s
Definition: enum_quda.h:180
QudaPreserveSource_s
Definition: enum_quda.h:235
QudaUseInitGuess_s
Definition: enum_quda.h:427
enum QudaProjectionType_s QudaProjectionType
QudaTboundary_s
Definition: enum_quda.h:52
QudaGammaBasis_s
Definition: enum_quda.h:366
enum QudaPCType_s QudaPCType
enum QudaSolveType_s QudaSolveType
enum QudaFieldOrder_s QudaFieldOrder
enum QudaLinkDirection_s QudaLinkDirection
enum QudaTwistCloverDslashType_s QudaTwistCloverDslashType
QudaFieldGeometry_s
Definition: enum_quda.h:473
QudaFieldLocation_s
Definition: enum_quda.h:324
QudaMemoryType_s
Definition: enum_quda.h:11
enum QudaSiteOrder_s QudaSiteOrder
QudaSetupType_s
Definition: enum_quda.h:445
QudaVerbosity_s
Definition: enum_quda.h:262
QudaSiteOrder_s
Definition: enum_quda.h:338
QudaLinkDirection_s
Definition: enum_quda.h:467
QudaReconstructType_s
Definition: enum_quda.h:66
QudaDiracFieldOrder_s
Definition: enum_quda.h:241
enum QudaComputeNullVector_s QudaComputeNullVector
QudaStaggeredPhase_s
Definition: enum_quda.h:488
QudaComputeNullVector_s
Definition: enum_quda.h:439
enum QudaEigType_s QudaEigType
QudaGhostExchange_s
Definition: enum_quda.h:481
enum QudaTboundary_s QudaTboundary
QudaFieldOrder_s
Definition: enum_quda.h:346
QudaTwistFlavorType_s
Definition: enum_quda.h:398
QudaParity_s
Definition: enum_quda.h:286
enum QudaSourceType_s QudaSourceType
QudaMultigridCycleType_s
Definition: enum_quda.h:172
enum QudaDirection_s QudaDirection
enum QudaCloverFieldOrder_s QudaCloverFieldOrder
QudaMassNormalization_s
Definition: enum_quda.h:223
QudaCloverFieldOrder_s
Definition: enum_quda.h:252
QudaEigType_s
Definition: enum_quda.h:131
QudaFieldCreate_s
Definition: enum_quda.h:358
QudaGaugeFixed_s
Definition: enum_quda.h:76
enum QudaStaggeredPhase_s QudaStaggeredPhase
QudaTwistDslashType_s
Definition: enum_quda.h:406
enum QudaPreserveDirac_s QudaPreserveDirac
QudaContractType_s
Definition: enum_quda.h:496
enum QudaGhostExchange_s QudaGhostExchange
QudaDirection_s
Definition: enum_quda.h:461
enum QudaMatPCType_s QudaMatPCType
QudaSiteSubset_s
Definition: enum_quda.h:331
enum QudaGaugeFixed_s QudaGaugeFixed
QudaBoolean_s
Definition: enum_quda.h:451
enum QudaSolutionType_s QudaSolutionType
QudaInverterType_s
Definition: enum_quda.h:101
QudaDeflatedGuess_s
Definition: enum_quda.h:433
enum QudaSchwarzType_s QudaSchwarzType
QudaMatPCType_s
Definition: enum_quda.h:209
enum QudaGaugeFieldOrder_s QudaGaugeFieldOrder
enum QudaDagType_s QudaDagType
enum QudaParity_s QudaParity
enum QudaLinkType_s QudaLinkType
QudaDiracType_s
Definition: enum_quda.h:296
QudaContractGamma_s
Definition: enum_quda.h:502
QudaPCType_s
Definition: enum_quda.h:396
QudaCABasis_s
Definition: enum_quda.h:194
QudaExtLibType_s
Definition: enum_quda.h:523
enum QudaBoolean_s QudaBoolean
enum QudaSiteSubset_s QudaSiteSubset
enum QudaTwistDslashType_s QudaTwistDslashType
QudaDagType_s
Definition: enum_quda.h:217
QudaNoiseType_s
Definition: enum_quda.h:382
QudaResidualType_s
Definition: enum_quda.h:186
enum QudaFieldLocation_s QudaFieldLocation
QudaTwistGamma5Type_s
Definition: enum_quda.h:421
enum QudaEigSpectrumType_s QudaEigSpectrumType
enum QudaGammaBasis_s QudaGammaBasis
enum QudaMultigridCycleType_s QudaMultigridCycleType
enum QudaReconstructType_s QudaReconstructType
enum QudaCABasis_s QudaCABasis
enum QudaSetupType_s QudaSetupType
QudaSourceType_s
Definition: enum_quda.h:373
enum QudaContractGamma_s QudaContractGamma
QudaSolutionType_s
Definition: enum_quda.h:150
enum QudaTune_s QudaTune
enum QudaDeflatedGuess_s QudaDeflatedGuess
QudaSolverNormalization_s
Definition: enum_quda.h:230
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:86
QudaEigSpectrumType_s
Definition: enum_quda.h:140
QudaSolveType_s
Definition: enum_quda.h:160
enum QudaUseInitGuess_s QudaUseInitGuess
enum QudaSolverNormalization_s QudaSolverNormalization
QudaTwistCloverDslashType_s
Definition: enum_quda.h:414
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