Grid 0.7.0
Lattice_coordinate.h
Go to the documentation of this file.
1/*************************************************************************************
2
3 Grid physics library, www.github.com/paboyle/Grid
4
5 Source file: ./lib/lattice/Lattice_coordinate.h
6
7 Copyright (C) 2015
8
9Author: Peter Boyle <paboyle@ph.ed.ac.uk>
10
11 This program is free software; you can redistribute it and/or modify
12 it under the terms of the GNU General Public License as published by
13 the Free Software Foundation; either version 2 of the License, or
14 (at your option) any later version.
15
16 This program is distributed in the hope that it will be useful,
17 but WITHOUT ANY WARRANTY; without even the implied warranty of
18 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 GNU General Public License for more details.
20
21 You should have received a copy of the GNU General Public License along
22 with this program; if not, write to the Free Software Foundation, Inc.,
23 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
24
25 See the full license in the file "LICENSE" in the top level distribution directory
26*************************************************************************************/
27/* END LEGAL */
28#pragma once
29
31
32template<class iobj> inline void LatticeCoordinate(Lattice<iobj> &l,int mu)
33{
34 typedef typename iobj::scalar_type scalar_type;
35 typedef typename iobj::vector_type vector_type;
36
37 GridBase *grid = l.Grid();
38 int Nsimd = grid->iSites();
39
40 autoView(l_v, l, CpuWrite);
41 thread_for( o, grid->oSites(), {
42 vector_type vI;
43 Coordinate gcoor;
44 ExtractBuffer<scalar_type> mergebuf(Nsimd);
45 for(int i=0;i<grid->iSites();i++){
46 grid->RankIndexToGlobalCoor(grid->ThisRank(),o,i,gcoor);
47 mergebuf[i]=(Integer)gcoor[mu];
48 }
50 l_v[o]=vI;
51 });
52};
53
55
void LatticeCoordinate(Lattice< iobj > &l, int mu)
#define autoView(l_v, l, mode)
@ CpuWrite
#define NAMESPACE_BEGIN(A)
Definition Namespace.h:35
#define NAMESPACE_END(A)
Definition Namespace.h:36
accelerator void merge(vobj &vec, ExtractBuffer< sobj > &extracted)
#define thread_for(i, num,...)
Definition Threads.h:60
int oSites(void) const
int iSites(void) const
GridBase * Grid(void) const