2
2
source("conf.R")
3
3
c_header()
4
4
?>
5
- /** \file LatticeAccess.cu
5
+ /** \file CartLatticeAccess.hpp
6
6
*/
7
7
8
+ #ifndef LATTICEACCESS_HPP
9
+ #define LATTICEACCESS_HPP
10
+
8
11
#include "Consts.h"
9
12
#include "Global.h"
10
- #include "Lattice.h"
11
13
#include <mpi.h>
12
14
#include "range_int.hpp"
15
+ #include "CartLatticeContainer.h"
13
16
14
17
#ifndef STORAGE_BITS
15
18
#define storage_to_real(x__) x__
34
37
#define real_to_storage_shift(x__,y__) real_to_storage(x__)
35
38
#endif
36
39
37
- /// Get only type of node
38
- CudaDeviceFunction flag_t LatticeContainer::getType(int x, int y, int z) const
39
- {
40
- return NodeType[(x + nx*(y + ny*z))];
41
- }
42
-
43
40
/// Push all densities
44
41
45
42
<?R
@@ -253,18 +250,22 @@ resolve.symmetries = function(D) {
253
250
254
251
?>
255
252
253
+ CudaDeviceFunction flag_t fetchNodeType(const CartLatticeContainer& container, int x, int y, int z) {
254
+ return container.NodeType[(x + container.nx*(y + container.ny*z))];
255
+ }
256
+
256
257
template < class x_t, class y_t, class z_t >
257
- class LatticeAccess {
258
+ class CartLatticeAccess {
258
259
private:
259
260
const x_t x;
260
261
const y_t y;
261
262
const z_t z;
262
263
const flag_t nt;
263
264
const range_int<0,1,0,1> nx, ny, nz;
264
265
public:
265
- CudaDeviceFunction LatticeAccess (const int& x_, const int& y_, const int& z_) :
266
+ CudaDeviceFunction CartLatticeAccess (const int& x_, const int& y_, const int& z_) :
266
267
x(x_),y(y_),z(z_),
267
- nt(constContainer.getType(x,y, z)),
268
+ nt(fetchNodeType(constContainer, x, y, z)),
268
269
nx(constContainer.nx),ny(constContainer.ny),nz(constContainer.nz)
269
270
{ }
270
271
CudaDeviceFunction real_t getX() const { return constContainer.px + x; }
@@ -295,7 +296,7 @@ class LatticeAccess {
295
296
<?R for (f in rows(Fields)) { ?>
296
297
template < class x_t, class y_t, class z_t >
297
298
template <class dx_t, class dy_t, class dz_t>
298
- CudaDeviceFunction real_t LatticeAccess < x_t, y_t, z_t >::load_<?%s f$nicename ?> (const dx_t & dx, const dy_t & dy, const dz_t & dz) const
299
+ CudaDeviceFunction real_t CartLatticeAccess < x_t, y_t, z_t >::load_<?%s f$nicename ?> (const dx_t & dx, const dy_t & dy, const dz_t & dz) const
299
300
{
300
301
storage_t ret; <?R
301
302
con = make.context("constContainer.in");
@@ -314,7 +315,7 @@ CudaDeviceFunction real_t LatticeAccess< x_t, y_t, z_t >::load_<?%s f$nicename ?
314
315
for (s in rows(all_stages)) { ?>
315
316
template < class x_t, class y_t, class z_t >
316
317
template <class N>
317
- CudaDeviceFunction void LatticeAccess < x_t, y_t, z_t >::pop<?%s s$suffix ?>(N & node) const
318
+ CudaDeviceFunction void CartLatticeAccess < x_t, y_t, z_t >::pop<?%s s$suffix ?>(N & node) const
318
319
{
319
320
storage_t val; <?R
320
321
con = make.context("constContainer.in",pocket=TRUE);
@@ -328,7 +329,7 @@ CudaDeviceFunction void LatticeAccess< x_t, y_t, z_t >::pop<?%s s$suffix ?>(N &
328
329
329
330
template < class x_t, class y_t, class z_t >
330
331
template <class N>
331
- CudaDeviceFunction void LatticeAccess < x_t, y_t, z_t >::push<?%s s$suffix ?>(N & node) const
332
+ CudaDeviceFunction void CartLatticeAccess < x_t, y_t, z_t >::push<?%s s$suffix ?>(N & node) const
332
333
{
333
334
storage_t val; <?R
334
335
con = make.context("constContainer.out",pocket=TRUE);
@@ -341,7 +342,7 @@ CudaDeviceFunction void LatticeAccess< x_t, y_t, z_t >::push<?%s s$suffix ?>(N &
341
342
<?R if (ADJOINT) { ?>
342
343
template < class x_t, class y_t, class z_t >
343
344
template <class N>
344
- CudaDeviceFunction void LatticeAccess < x_t, y_t, z_t >::push<?%s s$suffix ?>_adj(N & node) const
345
+ CudaDeviceFunction void CartLatticeAccess < x_t, y_t, z_t >::push<?%s s$suffix ?>_adj(N & node) const
345
346
{ <?R
346
347
con = make.context("constContainer.adjout",pocket=TRUE);
347
348
for (d in rows(Density)[s$load.densities]) {
@@ -354,7 +355,7 @@ CudaDeviceFunction void LatticeAccess< x_t, y_t, z_t >::push<?%s s$suffix ?>_adj
354
355
355
356
template < class x_t, class y_t, class z_t >
356
357
template <class N>
357
- CudaDeviceFunction void LatticeAccess < x_t, y_t, z_t >::pop<?%s s$suffix ?>_adj(N & node) const
358
+ CudaDeviceFunction void CartLatticeAccess < x_t, y_t, z_t >::pop<?%s s$suffix ?>_adj(N & node) const
358
359
{ <?R
359
360
con = make.context("constContainer.adjin",pocket=TRUE);
360
361
for (f in rows(Fields)[s$save.fields]) {
@@ -478,3 +479,4 @@ public:
478
479
template < class ACC >
479
480
using AccessComposite = <?%s str ?>;
480
481
482
+ #endif // LATTICEACCESS_HPP
0 commit comments