QUDA v0.3.2
A library for QCD on GPUs

quda/include/enum_quda.h

Go to the documentation of this file.
00001 #ifndef _ENUM_QUDA_H
00002 #define _ENUM_QUDA_H
00003 
00004 #include <limits.h>
00005 #define QUDA_INVALID_ENUM INT_MIN
00006 
00007 #ifdef __cplusplus
00008 extern "C" {
00009 #endif
00010 
00011   //
00012   // Types used in QudaGaugeParam
00013   //
00014 
00015   typedef enum QudaLinkType_s {
00016     QUDA_WILSON_LINKS, // used by wilson, clover, twisted mass, and domain wall
00017     QUDA_ASQTAD_FAT_LINKS,
00018     QUDA_ASQTAD_LONG_LINKS,
00019     QUDA_INVALID_LINKS = QUDA_INVALID_ENUM
00020   } QudaLinkType;
00021 
00022   typedef enum QudaGaugeFieldOrder_s {
00023     QUDA_QDP_GAUGE_ORDER, // expect *gauge[4], even-odd, row-column color
00024     QUDA_CPS_WILSON_GAUGE_ORDER, // expect *gauge, even-odd, mu inside, column-row color
00025     QUDA_INVALID_GAUGE_ORDER = QUDA_INVALID_ENUM
00026   } QudaGaugeFieldOrder;
00027 
00028   typedef enum QudaTboundary_s {
00029     QUDA_ANTI_PERIODIC_T = -1,
00030     QUDA_PERIODIC_T = 1,
00031     QUDA_INVALID_T_BOUNDARY = QUDA_INVALID_ENUM
00032   } QudaTboundary;
00033 
00034   typedef enum QudaPrecision_s {
00035     QUDA_HALF_PRECISION = 2,
00036     QUDA_SINGLE_PRECISION = 4,
00037     QUDA_DOUBLE_PRECISION = 8,
00038     QUDA_INVALID_PRECISION = QUDA_INVALID_ENUM
00039   } QudaPrecision;
00040 
00041   typedef enum QudaReconstructType_s {
00042     QUDA_RECONSTRUCT_NO, // store all 18 real numbers explicitly
00043     QUDA_RECONSTRUCT_12, // reconstruct from 12 real numbers
00044     QUDA_RECONSTRUCT_8,  // reconstruct from 8 real numbers
00045     QUDA_RECONSTRUCT_INVALID = QUDA_INVALID_ENUM
00046   } QudaReconstructType;
00047 
00048   typedef enum QudaGaugeFixed_s {
00049     QUDA_GAUGE_FIXED_NO,  // no gauge fixing
00050     QUDA_GAUGE_FIXED_YES, // gauge field stored in temporal gauge
00051     QUDA_GAUGE_FIXED_INVALID = QUDA_INVALID_ENUM
00052   } QudaGaugeFixed;
00053 
00054   //
00055   // Types used in QudaInvertParam
00056   //
00057 
00058   typedef enum QudaDslashType_s {
00059     QUDA_WILSON_DSLASH,
00060     QUDA_CLOVER_WILSON_DSLASH,
00061     QUDA_DOMAIN_WALL_DSLASH,
00062     QUDA_ASQTAD_DSLASH,
00063     QUDA_TWISTED_MASS_DSLASH,
00064     QUDA_INVALID_DSLASH = QUDA_INVALID_ENUM
00065   } QudaDslashType;
00066 
00067   typedef enum QudaInverterType_s {
00068     QUDA_CG_INVERTER,
00069     QUDA_BICGSTAB_INVERTER,
00070     QUDA_INVALID_INVERTER = QUDA_INVALID_ENUM
00071   } QudaInverterType;
00072 
00073   typedef enum QudaSolutionType_s {
00074     QUDA_MAT_SOLUTION,
00075     QUDA_MATDAG_MAT_SOLUTION,
00076     QUDA_MATPC_SOLUTION,
00077     QUDA_MATPCDAG_MATPC_SOLUTION,
00078     QUDA_INVALID_SOLUTION = QUDA_INVALID_ENUM
00079   } QudaSolutionType;
00080 
00081   typedef enum QudaSolveType_s {
00082     QUDA_DIRECT_SOLVE,
00083     QUDA_NORMEQ_SOLVE,
00084     QUDA_DIRECT_PC_SOLVE,
00085     QUDA_NORMEQ_PC_SOLVE,
00086     QUDA_INVALID_SOLVE = QUDA_INVALID_ENUM
00087   } QudaSolveType;
00088 
00089   // Whether the preconditioned matrix is (1-k^2 Deo Doe) or (1-k^2 Doe Deo)
00090   //
00091   // For the clover-improved Wilson Dirac operator, QUDA_MATPC_EVEN_EVEN
00092   // defaults to the "symmetric" form, (1 - k^2 A_ee^-1 D_eo A_oo^-1 D_oe),
00093   // and likewise for QUDA_MATPC_ODD_ODD.
00094   //
00095   // For the "asymmetric" form, (A_ee - k^2 D_eo A_oo^-1 D_oe), select
00096   // QUDA_MATPC_EVEN_EVEN_ASYMMETRIC.
00097   //
00098   typedef enum QudaMatPCType_s {
00099     QUDA_MATPC_EVEN_EVEN,
00100     QUDA_MATPC_ODD_ODD,
00101     QUDA_MATPC_EVEN_EVEN_ASYMMETRIC,
00102     QUDA_MATPC_ODD_ODD_ASYMMETRIC,
00103     QUDA_MATPC_INVALID = QUDA_INVALID_ENUM
00104   } QudaMatPCType;
00105 
00106   typedef enum QudaDagType_s {
00107     QUDA_DAG_NO,
00108     QUDA_DAG_YES,
00109     QUDA_DAG_INVALID = QUDA_INVALID_ENUM
00110   } QudaDagType;
00111   
00112   typedef enum QudaMassNormalization_s {
00113     QUDA_KAPPA_NORMALIZATION,
00114     QUDA_MASS_NORMALIZATION,
00115     QUDA_ASYMMETRIC_MASS_NORMALIZATION,
00116     QUDA_INVALID_NORMALIZATION = QUDA_INVALID_ENUM
00117   } QudaMassNormalization;
00118 
00119   typedef enum QudaPreserveSource_s {
00120     QUDA_PRESERVE_SOURCE_NO,  // use the source for the residual
00121     QUDA_PRESERVE_SOURCE_YES, // keep the source intact
00122     QUDA_PRESERVE_SOURCE_INVALID = QUDA_INVALID_ENUM
00123   } QudaPreserveSource;
00124 
00125   typedef enum QudaDiracFieldOrder_s {
00126     QUDA_DIRAC_ORDER,            // even-odd, color inside spin
00127     QUDA_QDP_DIRAC_ORDER,        // even-odd, spin inside color
00128     QUDA_CPS_WILSON_DIRAC_ORDER, // odd-even, color inside spin
00129     QUDA_LEX_DIRAC_ORDER,        // lexicographical order, color inside spin
00130     QUDA_INVALID_DIRAC_ORDER = QUDA_INVALID_ENUM
00131   } QudaDiracFieldOrder;  
00132 
00133   typedef enum QudaCloverFieldOrder_s {
00134     QUDA_PACKED_CLOVER_ORDER,     // even-odd, packed
00135     QUDA_LEX_PACKED_CLOVER_ORDER, // lexicographical order, packed
00136     QUDA_INVALID_CLOVER_ORDER = QUDA_INVALID_ENUM
00137   } QudaCloverFieldOrder;
00138 
00139   typedef enum QudaVerbosity_s {
00140     QUDA_SILENT,
00141     QUDA_SUMMARIZE,
00142     QUDA_VERBOSE,
00143     QUDA_INVALID_VERBOSITY = QUDA_INVALID_ENUM
00144   } QudaVerbosity;
00145 
00146   //
00147   // Type used for "parity" argument to dslashQuda()
00148   //
00149 
00150   typedef enum QudaParity_s {
00151     QUDA_EVEN_PARITY = 0,
00152     QUDA_ODD_PARITY,
00153     QUDA_INVALID_PARITY = QUDA_INVALID_ENUM
00154   } QudaParity;
00155 
00156   //  
00157   // Types used only internally
00158   //
00159 
00160   typedef enum QudaDiracType_s {
00161     QUDA_WILSON_DIRAC,
00162     QUDA_WILSONPC_DIRAC,
00163     QUDA_CLOVER_DIRAC,
00164     QUDA_CLOVERPC_DIRAC,
00165     QUDA_DOMAIN_WALL_DIRAC,
00166     QUDA_DOMAIN_WALLPC_DIRAC,
00167     QUDA_ASQTAD_DIRAC,
00168     QUDA_ASQTADPC_DIRAC,
00169     QUDA_TWISTED_MASS_DIRAC,
00170     QUDA_TWISTED_MASSPC_DIRAC,
00171     QUDA_INVALID_DIRAC = QUDA_INVALID_ENUM
00172   } QudaDiracType;
00173 
00174   // Where the field is stored
00175   typedef enum QudaFieldLocation_s {
00176     QUDA_CPU_FIELD_LOCATION,
00177     QUDA_CUDA_FIELD_LOCATION,
00178     QUDA_INVALID_FIELD_LOCATION = QUDA_INVALID_ENUM
00179   } QudaFieldLocation;
00180   
00181   // Which sites are included
00182   typedef enum QudaSiteSubset_s {
00183     QUDA_FULL_SITE_SUBSET,
00184     QUDA_PARITY_SITE_SUBSET,
00185     QUDA_INVALID_SITE_SUBSET = QUDA_INVALID_ENUM
00186   } QudaSiteSubset;
00187   
00188   // Site ordering (always t-z-y-x, with rightmost varying fastest)
00189   typedef enum QudaSiteOrder_s {
00190     QUDA_LEXICOGRAPHIC_SITE_ORDER, // lexicographic ordering
00191     QUDA_EVEN_ODD_SITE_ORDER, // QUDA and QDP use this
00192     QUDA_ODD_EVEN_SITE_ORDER, // CPS uses this
00193     QUDA_INVALID_SITE_ORDER = QUDA_INVALID_ENUM
00194   } QudaSiteOrder;
00195   
00196   // Degree of freedom ordering
00197   typedef enum QudaFieldOrder_s {
00198     QUDA_FLOAT_FIELD_ORDER, // spin-color-complex-space
00199     QUDA_FLOAT2_FIELD_ORDER, // (spin-color-complex)/2-space-(spin-color-complex)%2
00200     QUDA_FLOAT4_FIELD_ORDER, // (spin-color-complex)/4-space-(spin-color-complex)%4
00201     QUDA_SPACE_SPIN_COLOR_FIELD_ORDER, // CPS/QDP++ ordering
00202     QUDA_SPACE_COLOR_SPIN_FIELD_ORDER, // QLA ordering (spin inside color)
00203     QUDA_INVALID_FIELD_ORDER = QUDA_INVALID_ENUM
00204   } QudaFieldOrder;
00205   
00206   typedef enum QudaFieldCreate_s {
00207     QUDA_NULL_FIELD_CREATE, // create new field
00208     QUDA_ZERO_FIELD_CREATE, // create new field and zero it
00209     QUDA_COPY_FIELD_CREATE, // create copy to field
00210     QUDA_REFERENCE_FIELD_CREATE, // create reference to field
00211     QUDA_INVALID_FIELD_CREATE = QUDA_INVALID_ENUM
00212   } QudaFieldCreate;
00213   
00214   typedef enum QudaGammaBasis_s {
00215     QUDA_DEGRAND_ROSSI_GAMMA_BASIS,
00216     QUDA_UKQCD_GAMMA_BASIS,
00217     QUDA_INVALID_GAMMA_BASIS = QUDA_INVALID_ENUM
00218   } QudaGammaBasis;
00219 
00220   typedef enum QudaSourceType_s {
00221     QUDA_POINT_SOURCE,
00222     QUDA_RANDOM_SOURCE,
00223     QUDA_INVALID_SOURCE = QUDA_INVALID_ENUM
00224   } QudaSourceType;
00225   
00226   typedef enum QudaTwistFlavorType_s {
00227     QUDA_TWIST_MINUS = -1,
00228     QUDA_TWIST_PLUS = +1,
00229     QUDA_TWIST_NO  = 0,
00230     QUDA_TWIST_INVALID = QUDA_INVALID_ENUM
00231   } QudaTwistFlavorType;  
00232 
00233   typedef enum QudaTwistGamma5Type_s {
00234     QUDA_TWIST_GAMMA5_DIRECT,
00235     QUDA_TWIST_GAMMA5_INVERSE,
00236     QUDA_TWIST_GAMMA5_INVALID = QUDA_INVALID_ENUM
00237   } QudaTwistGamma5Type;
00238 
00239 #ifdef __cplusplus
00240 }
00241 #endif
00242 
00243 #endif // _ENUM_QUDA_H
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Friends Defines