HiRep 0.1
Loading...
Searching...
No Matches
check_options.h
Go to the documentation of this file.
1
7#ifndef CHECK_OPTIONS_H
8#define CHECK_OPTIONS_H
9
10/* Boundary conditions */
11
12#ifdef GAUGE_SPATIAL_TWIST
13
14#ifndef REPR_ADJOINT
15#error Twisted boundary conditions can be used only with the adjoint representation!!!
16#endif
17
18#undef BC_X_PERIODIC
19#undef BC_X_ANTIPERIODIC
20#undef BC_X_THETA
21#define BC_X_PERIODIC
22#define BC_X_ALREADY
23
24#undef BC_Y_PERIODIC
25#undef BC_Y_ANTIPERIODIC
26#undef BC_Y_THETA
27#define BC_Y_PERIODIC
28#define BC_Y_ALREADY
29
30#undef BC_Z_PERIODIC
31#undef BC_Z_ANTIPERIODIC
32#undef BC_Z_THETA
33#define BC_Z_PERIODIC
34#define BC_Z_ALREADY
35
36#define PLAQ_WEIGHTS
37
38#if defined(BC_T_SF) || defined(BC_T_SF_ROTATED)
39#error(GAUGE_SPATIAL_TWIST) Twisted BCs cannot be used with Schroedinger functional!!!
40#endif
41
42#endif
43
44#ifdef BC_T_SF
45
46#undef BC_T_PERIODIC
47#undef BC_T_ANTIPERIODIC
48#undef BC_T_OPEN
49#undef BC_T_THETA
50#define BC_T_ALREADY
51
52#define PLAQ_WEIGHTS
53
54#ifdef BC_T_SF_ROTATED
55#error(BC_T_SF) BC_T_SF and BC_T_SF_ROTATED cannot be used at the same time!!!
56#endif
57
58#endif
59
60#ifdef BC_T_SF_ROTATED
61#error BC_T_SF_ROTATED: This option is no longer supported.
62
63#undef BC_T_PERIODIC
64#undef BC_T_ANTIPERIODIC
65#undef BC_T_OPEN
66#undef BC_T_THETA
67#define BC_T_ALREADY
68
69#undef BC_X_PERIODIC
70#undef BC_X_ANTIPERIODIC
71#undef BC_X_THETA
72#define BC_X_THETA
73
74#undef BC_Y_PERIODIC
75#undef BC_Y_ANTIPERIODIC
76#undef BC_Y_THETA
77#define BC_Y_THETA
78
79#undef BC_Z_PERIODIC
80#undef BC_Z_ANTIPERIODIC
81#undef BC_Z_THETA
82#define BC_Z_THETA
83
84#define PLAQ_WEIGHTS
85
86#ifdef BC_T_SF
87#error(BC_T_SF_ROTATED) BC_T_SF and BC_T_SF_ROTATED cannot be used at the same time!!!
88#endif
89
90#endif
91
92#if defined(HALFBG_SF) && !((NG == 2) && (defined(BC_T_SF) || defined(BC_T_SF_ROTATED)))
93#error(HALFBG_SF) can be defined only if NG=2 and or BC_T_SF or BC_T_SF_ROTATED is used!!!
94#endif
95
96#if defined(BC_T_SF_ROTATED) && defined(UPDATE_EO)
97#error BC_T_SF_ROTATED DOES NOT WORK WITH E/O PRECONDITIONING
98#endif
99
100#ifdef BC_T_ANTIPERIODIC
101
102#ifdef BC_T_ALREADY
103#error(BC_T_ANTIPERIODIC) BC_T already defined!!!
104#endif
105#define BC_T_ALREADY
106
107#endif
108
109#ifdef BC_T_OPEN
110
111#ifdef BC_T_ALREADY
112#error(BC_T_OPEN) BC_T already defined!!!
113#endif
114#define BC_T_ALREADY
115
116#undef PLAQ_WEIGHTS
117#define PLAQ_WEIGHTS
118
119#endif
120
121#ifdef BC_T_THETA
122
123#ifdef BC_T_ALREADY
124#error(BC_T_OPEN) BC_T already defined!!!
125#endif
126#define BC_T_ALREADY
127#define FERMION_THETA
128
129#endif
130
131#if !defined(BC_T_ALREADY) && !defined(BC_T_PERIODIC)
132#define BC_T_PERIODIC
133#define BC_T_ALREADY
134#endif
135
136#ifdef BC_X_ANTIPERIODIC
137
138#ifdef BC_X_ALREADY
139#error(BC_X_ANTIPERIODIC) BC_X already defined!!!
140#endif
141#define BC_X_ALREADY
142
143#endif
144
145#ifdef BC_X_THETA
146
147#ifdef BC_X_ALREADY
148#error(BC_X_OPEN) BC_X already defined!!!
149#endif
150#define BC_X_ALREADY
151#define FERMION_THETA
152
153#endif
154
155#if !defined(BC_X_ALREADY) && !defined(BC_X_PERIODIC)
156#define BC_X_PERIODIC
157#define BC_X_ALREADY
158#endif
159
160#ifdef BC_Y_ANTIPERIODIC
161
162#ifdef BC_Y_ALREADY
163#error(BC_Y_ANTIPERIODIC) BC_Y already defined!!!
164#endif
165#define BC_Y_ALREADY
166
167#endif
168
169#ifdef BC_Y_THETA
170
171#ifdef BC_Y_ALREADY
172#error(BC_Y_OPEN) BC_Y already defined!!!
173#endif
174#define BC_Y_ALREADY
175#define FERMION_THETA
176
177#endif
178
179#if !defined(BC_Y_ALREADY) && !defined(BC_Y_PERIODIC)
180#define BC_Y_PERIODIC
181#define BC_Y_ALREADY
182#endif
183
184#ifdef BC_Z_ANTIPERIODIC
185
186#ifdef BC_Z_ALREADY
187#error(BC_Z_ANTIPERIODIC) BC_Z already defined!!!
188#endif
189#define BC_Z_ALREADY
190
191#endif
192
193#ifdef BC_Z_THETA
194
195#ifdef BC_Z_ALREADY
196#error(BC_Z_OPEN) BC_Z already defined!!!
197#endif
198#define BC_Z_ALREADY
199#define FERMION_THETA
200
201#endif
202
203#if !defined(BC_Z_ALREADY) && !defined(BC_Z_PERIODIC)
204#define BC_Z_PERIODIC
205#define BC_Z_ALREADY
206#endif
207
208#if (defined(WITH_CLOVER) || defined(WITH_EXPCLOVER)) && defined(WITH_QUATERNIONS)
209#error Clover term has not yet been implemented with quaternions
210#endif
211
212#ifdef PURE_GAUGE_ANISOTROPY
213#define PLAQ_WEIGHTS
214#endif
215
216#if defined(WITH_CLOVER) && defined(WITH_EXPCLOVER)
217#error Exponential and standard clover term cannot be simultaneously defined
218#endif
219
220#if defined(WITH_SMEARING) && defined(WITH_EXPCLOVER)
221#error Exponential lover term cannot be use simultaneously with the dirac smearing (not yet implemented)
222#endif
223
224// GPU checks
225
226#ifdef WITH_GPU
227#ifndef WITH_NEW_GEOMETRY
228#error Multi-GPU version does not work with old geometry. Please use new geometry.
229#endif
230
231#ifdef GAUGE_SON
232#error SO(N) gauge groups not yet implemented on GPU
233#endif
234
235#if NF > 3 && WITH_EXPCLOVER
236#error "Exponential clover on GPU not implemented for NF>3"
237#endif
238
239#endif
240
241#endif /* CHECK_OPTIONS_H */