30#ifndef HMC_GRID_MODULES
31#define HMC_GRID_MODULES
46 std::vector<int>
getLattice()
const {
return strToVec<int>(lattice);}
47 std::vector<int>
getMpi()
const {
return strToVec<int>(mpi);}
53 <<
"Error in GridModuleParameters: lattice and mpi dimensions "
60 template <
class ReaderClass>
62 read(Reader,
name, *
this);
67 template<
class WriterClass>
68 void save(Writer<WriterClass>& Writer){
70 write(Writer,
name, *
this);
80 std::cout <<
GridLogDebug <<
"Getting cartesian in module"<< std::endl;
83 std::cout <<
GridLogDebug <<
"Getting rb-cartesian in module"<< std::endl;
92 std::unique_ptr<GridCartesian>
grid_;
93 std::unique_ptr<GridRedBlackCartesian>
rbgrid_;
100template <
class vector_type>
116 if (tweak_simd.size() != 4)
119 <<
"Error in GridFourDimModule: SIMD size different from 4"
126 for (
auto &n : tweak_simd)
128 std::cout <<
GridLogDebug <<
"TweakSIMD: " << tweak_simd <<
" Sum: " << simd_sum << std::endl;
130 if (simd_sum == vector_type::Nsimd())
141 <<
"Error in GridFourDimModule: SIMD lanes must sum to "
142 << vector_type::Nsimd()
149 std::vector<int> lattice_v = Params.
getLattice();
150 std::vector<int> mpi_v = Params.
getMpi();
151 if (lattice_v.size() == 4)
162 <<
"Error in GridFourDimModule: lattice dimension different from 4"
AcceleratorVector< int, MaxDims > Coordinate
GridFourDimModule< vComplex > GridDefaultFourDimModule
const Coordinate GridDefaultSimd(int dims, int nsimd)
const Coordinate & GridDefaultLatt(void)
const Coordinate & GridDefaultMpi(void)
GridLogger GridLogError(1, "Error", GridLogColours, "RED")
GridLogger GridLogDebug(1, "Debug", GridLogColours, "PURPLE")
#define NAMESPACE_BEGIN(A)
GridFourDimModule(const std::vector< int > tweak_simd)
GridFourDimModule(const GridModuleParameters Params)
GRID_SERIALIZABLE_CLASS_MEMBERS(GridModuleParameters, std::string, lattice, std::string, mpi)
std::vector< int > getLattice() const
GridModuleParameters(Reader< ReaderClass > &Reader, std::string n="LatticeGrid")
std::vector< int > getMpi() const
void save(Writer< WriterClass > &Writer)
void set_full(GridCartesian *grid)
void show_full_decomposition()
void set_rb(GridRedBlackCartesian *rbgrid)
void show_rb_decomposition()
std::unique_ptr< GridRedBlackCartesian > rbgrid_
GridRedBlackCartesian * get_rb()
GridCartesian * get_full()
std::unique_ptr< GridCartesian > grid_
static GridRedBlackCartesian * makeFourDimRedBlackGrid(const GridCartesian *FourDimGrid)
static GridCartesian * makeFourDimGrid(const Coordinate &latt, const Coordinate &simd, const Coordinate &mpi)