|
QUDA v0.3.2
A library for QCD on GPUs
|
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
1.7.3