14#pragma omp declare simd
15 template <
class QInEnumeratorType,
class QOutEnumeratorType>
18 const double* __restrict__ QIn,
19 const QInEnumeratorType& QInEnumerator,
21 const ::tarch::la::Vector<Dimensions, int>&
volumeIndex,
23 double* __restrict__ QOut,
24 const QOutEnumeratorType& QOutEnumerator
26 QOut[QOutEnumerator(patchIndex,
volumeIndex, unknown)] = QIn
31#pragma omp declare simd
34 int NumberOfAuxiliaryVariables,
35 class QInEnumeratorType,
36 class QOutEnumeratorType>
38 const double* __restrict__ QIn,
39 const QInEnumeratorType& QInEnumerator,
41 const ::tarch::la::Vector<Dimensions, double>& patchCentre,
42 const ::tarch::la::Vector<Dimensions, double>& patchSize,
44 const ::tarch::la::Vector<Dimensions, int>&
volumeIndex,
47 double* __restrict__ QOut,
48 const QOutEnumeratorType& QOutEnumerator
52#pragma omp declare simd
53 template <
int NumberOfUnknowns,
int NumberOfAuxiliaryVariables>
55 const double* __restrict__ QIn,
58 const ::tarch::la::Vector<Dimensions, double>& patchCentre,
59 const ::tarch::la::Vector<Dimensions, double>& patchSize,
61 const ::tarch::la::Vector<Dimensions, int>&
volumeIndex,
64 double* __restrict__ QOut,
69#pragma omp declare simd
70 template <
class SolverType,
class QInEnumeratorType,
class QOutEnumeratorType>
73 const double* __restrict__ QIn,
74 const QInEnumeratorType& QInEnumerator,
75 const ::tarch::la::Vector<Dimensions, double>& patchCentre,
76 const ::tarch::la::Vector<Dimensions, double>& patchSize,
78 const ::tarch::la::Vector<Dimensions, int>&
volumeIndex,
81 double* __restrict__ QOut,
82 const QOutEnumeratorType& QOutEnumerator
86#pragma omp declare simd
87 template <
class SolverType>
90 const double* __restrict__ QIn,
92 const ::tarch::la::Vector<Dimensions, double>& patchCentre,
93 const ::tarch::la::Vector<Dimensions, double>& patchSize,
95 const ::tarch::la::Vector<Dimensions, int>&
volumeIndex,
98 double* __restrict__ QOut,
103#pragma omp declare simd
105 int NumberOfUnknowns,
106 int NumberOfAuxiliaryVariables,
107 class QInEnumeratorType,
108 class EigenvaluesEnumeratorType>
110 const double* __restrict__ QIn,
111 const QInEnumeratorType& QInEnumerator,
113 const ::tarch::la::Vector<Dimensions, double>& patchCentre,
114 const ::tarch::la::Vector<Dimensions, double>& patchSize,
116 const ::tarch::la::Vector<Dimensions, int>&
volumeIndex,
120 double* __restrict__ eigenvalues,
121 const EigenvaluesEnumeratorType& eigenvaluesEnumerator
125#pragma omp declare simd
126 template <
int NumberOfUnknowns,
int NumberOfAuxiliaryVariables>
128 const double* __restrict__ QIn,
131 const ::tarch::la::Vector<Dimensions, double>& patchCentre,
132 const ::tarch::la::Vector<Dimensions, double>& patchSize,
134 const ::tarch::la::Vector<Dimensions, int>&
volumeIndex,
138 double* __restrict__ eigenvalues,
143#pragma omp declare simd
146 class QInEnumeratorType,
147 class EigenvaluesEnumeratorType>
150 const double* __restrict__ QIn,
151 const QInEnumeratorType& QInEnumerator,
152 const ::tarch::la::Vector<Dimensions, double>& patchCentre,
153 const ::tarch::la::Vector<Dimensions, double>& patchSize,
155 const ::tarch::la::Vector<Dimensions, int>&
volumeIndex,
159 double* __restrict__ eigenvalues,
160 const EigenvaluesEnumeratorType& eigenvaluesEnumerator
164#pragma omp declare simd
165 template <
class SolverType>
168 const double* __restrict__ QIn,
170 const ::tarch::la::Vector<Dimensions, double>& patchCentre,
171 const ::tarch::la::Vector<Dimensions, double>& patchSize,
173 const ::tarch::la::Vector<Dimensions, int>&
volumeIndex,
177 double* __restrict__ eigenvalues,
182#pragma omp declare simd
184 int NumberOfUnknowns,
185 int NumberOfAuxiliaryVariables,
186 class QInEnumeratorType,
187 class FluxEnumeratorType>
189 const double* __restrict__ QIn,
190 const QInEnumeratorType& QInEnumerator,
192 const ::tarch::la::Vector<Dimensions, double>& patchCentre,
193 const ::tarch::la::Vector<Dimensions, double>& patchSize,
195 const ::tarch::la::Vector<Dimensions, int>&
volumeIndex,
199 double* __restrict__ flux,
200 const FluxEnumeratorType& fluxEnumerator
204#pragma omp declare simd
205 template <
int NumberOfUnknowns,
int NumberOfAuxiliaryVariables>
207 const double* __restrict__ QIn,
210 const ::tarch::la::Vector<Dimensions, double>& patchCentre,
211 const ::tarch::la::Vector<Dimensions, double>& patchSize,
213 const ::tarch::la::Vector<Dimensions, int>&
volumeIndex,
217 double* __restrict__ flux,
222#pragma omp declare simd
223 template <
class SolverType,
class QInEnumeratorType,
class FluxEnumeratorType>
226 const double* __restrict__ QIn,
227 const QInEnumeratorType& QInEnumerator,
228 const ::tarch::la::Vector<Dimensions, double>& patchCentre,
229 const ::tarch::la::Vector<Dimensions, double>& patchSize,
231 const ::tarch::la::Vector<Dimensions, int>&
volumeIndex,
235 double* __restrict__ flux,
236 const FluxEnumeratorType& fluxEnumerator
240#pragma omp declare simd
241 template <
class SolverType,
class FluxEnumeratorType>
244 const double* __restrict__ QIn,
246 const ::tarch::la::Vector<Dimensions, double>& patchCentre,
247 const ::tarch::la::Vector<Dimensions, double>& patchSize,
249 const ::tarch::la::Vector<Dimensions, int>&
volumeIndex,
253 double* __restrict__ flux,
254 const FluxEnumeratorType& fluxEnumerator
258#pragma omp declare simd
259 template <
class SolverType>
262 const double* __restrict__ QIn,
264 const ::tarch::la::Vector<Dimensions, double>& patchCentre,
265 const ::tarch::la::Vector<Dimensions, double>& patchSize,
267 const ::tarch::la::Vector<Dimensions, int>&
volumeIndex,
271 double* __restrict__ flux,
276#pragma omp declare simd
278 int NumberOfUnknowns,
279 int NumberOfAuxiliaryVariables,
280 class QInEnumeratorType,
281 class NCPFaceEnumeratorType>
283 const double* __restrict__ QIn,
284 const QInEnumeratorType& QInEnumerator,
286 const ::tarch::la::Vector<Dimensions, double>& patchCentre,
287 const ::tarch::la::Vector<Dimensions, double>& patchSize,
289 const ::tarch::la::Vector<Dimensions, int>&
volumeIndex,
293 double* __restrict__ ncp,
294 const NCPFaceEnumeratorType& ncpEnumerator
298#pragma omp declare simd
301 class QInEnumeratorType,
302 class NCPFaceEnumeratorType>
305 const double* __restrict__ QIn,
306 const QInEnumeratorType& QInEnumerator,
307 const ::tarch::la::Vector<Dimensions, double>& patchCentre,
308 const ::tarch::la::Vector<Dimensions, double>& patchSize,
310 const ::tarch::la::Vector<Dimensions, int>&
volumeIndex,
314 double* __restrict__ ncp,
315 const NCPFaceEnumeratorType& ncpEnumerator
319#pragma omp declare simd
320 template <
class NCPFaceEnumeratorType,
class QOutEnumeratorType>
323 const double* __restrict__ ncpX,
324 const double* __restrict__ ncpY,
325 const double* __restrict__ ncpZ,
326 const NCPFaceEnumeratorType& ncpEnumerator,
327 const ::tarch::la::Vector<Dimensions, double>& patchCentre,
328 const ::tarch::la::Vector<Dimensions, double>& patchSize,
330 const ::tarch::la::Vector<Dimensions, int>&
volumeIndex,
333 double* __restrict__ QOut,
334 const QOutEnumeratorType& QOutEnumerator
338#pragma omp declare simd
339 template <
class NCPFaceEnumeratorType,
class QOutEnumeratorType>
342 const double* __restrict__ ncp,
343 const NCPFaceEnumeratorType& ncpEnumerator,
344 const ::tarch::la::Vector<Dimensions, double>& patchCentre,
345 const ::tarch::la::Vector<Dimensions, double>& patchSize,
347 const ::tarch::la::Vector<Dimensions, int>& faceIndex,
351 double* __restrict__ QOut,
352 const QOutEnumeratorType& QOutEnumerator
356#pragma omp declare simd
357 template <
int NumberOfUnknowns,
int NumberOfAuxiliaryVariables>
359 const double* __restrict__ QIn,
362 const double* __restrict__ flux,
364 const double* __restrict__ eigenvalues,
366 const ::tarch::la::Vector<Dimensions, double>& patchCentre,
367 const ::tarch::la::Vector<Dimensions, double>& patchSize,
369 const ::tarch::la::Vector<Dimensions, int>&
volumeIndex,
373 double* __restrict__ APDQ,
374 double* __restrict__ AMDQ,
376 double* __restrict__ maxEigenvalue,
381#pragma omp declare simd
382 template <
class SolverType>
385 const double* __restrict__ QIn,
387 const double* __restrict__ flux,
389 const double* __restrict__ eigenvalues,
391 const ::tarch::la::Vector<Dimensions, double>& patchCentre,
392 const ::tarch::la::Vector<Dimensions, double>& patchSize,
394 const ::tarch::la::Vector<Dimensions, int>&
volumeIndex,
398 double* __restrict__ APDQ,
399 double* __restrict__ AMDQ,
401 double* __restrict__ maxEigenvalue,
406#pragma omp declare simd
407 template <
class RiemannEnumeratorType,
class QOutEnumeratorType>
409 const double* __restrict__ leftUpdatesX,
410 const double* __restrict__ rightUpdatesX,
411 const double* __restrict__ belowUpdatesY,
412 const double* __restrict__ aboveUpdatesY,
413 const double* __restrict__ backwardUpdatesZ,
414 const double* __restrict__ forwardUpdatesZ,
415 const RiemannEnumeratorType& riemannEnumerator,
422 double* __restrict__ QOut,
423 const QOutEnumeratorType& QOutEnumerator
427#pragma omp declare simd
429 const double* __restrict__ maxEigenvalueX,
430 const double* __restrict__ maxEigenvalueY,
431 const double* __restrict__ maxEigenvalueZ,