mirror of
https://github.com/paboyle/Grid.git
synced 2025-10-13 12:44:42 +01:00
Need to protect pole operatoins to only take place on IcosahedralVertices mesh
This commit is contained in:
@@ -108,6 +108,8 @@ public:
|
|||||||
int southPoleOsites;
|
int southPoleOsites;
|
||||||
|
|
||||||
virtual int Icosahedral(void) override { return 1;}
|
virtual int Icosahedral(void) override { return 1;}
|
||||||
|
virtual int IcosahedralVertices(void) override { return meshType==IcosahedralVertices;}
|
||||||
|
virtual int IcosahedralEdges (void) override { return meshType==IcosahedralEdges;}
|
||||||
virtual int ownsNorthPole(void) const override { return hasNorthPole; };
|
virtual int ownsNorthPole(void) const override { return hasNorthPole; };
|
||||||
virtual int NorthPoleOsite(void) const override { return northPoleOsite; };
|
virtual int NorthPoleOsite(void) const override { return northPoleOsite; };
|
||||||
virtual int NorthPoleOsites(void) const override { return northPoleOsites; };
|
virtual int NorthPoleOsites(void) const override { return northPoleOsites; };
|
||||||
|
@@ -88,6 +88,8 @@ public:
|
|||||||
|
|
||||||
// Icosahedral decisions
|
// Icosahedral decisions
|
||||||
virtual int Icosahedral(void) { return 0;}
|
virtual int Icosahedral(void) { return 0;}
|
||||||
|
virtual int IcosahedralVertices(void) { return 0;}
|
||||||
|
virtual int IcosahedralEdges (void) { return 0;}
|
||||||
virtual int ownsNorthPole(void) const { return 0; };
|
virtual int ownsNorthPole(void) const { return 0; };
|
||||||
virtual int ownsSouthPole(void) const { return 0; };
|
virtual int ownsSouthPole(void) const { return 0; };
|
||||||
virtual int NorthPoleOsite(void) const { return 0; };
|
virtual int NorthPoleOsite(void) const { return 0; };
|
||||||
|
@@ -58,7 +58,7 @@ template<class iobj> inline void LatticeCoordinate(Lattice<iobj> &l,int mu)
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
if (grid->Icosahedral()) {
|
if (grid->IcosahedralVertices()) {
|
||||||
uint64_t psites=1;
|
uint64_t psites=1;
|
||||||
Coordinate perpdims;
|
Coordinate perpdims;
|
||||||
typename iobj::scalar_object ss;
|
typename iobj::scalar_object ss;
|
||||||
@@ -95,7 +95,9 @@ template<class iobj> inline void LatticePole(Lattice<iobj> &l,NorthSouth pole)
|
|||||||
|
|
||||||
l=Zero();
|
l=Zero();
|
||||||
|
|
||||||
if (grid->Icosahedral()) {
|
assert(grid->IcosahedralVertices());
|
||||||
|
|
||||||
|
if (grid->IcosahedralVertices()) {
|
||||||
uint64_t psites=1;
|
uint64_t psites=1;
|
||||||
Coordinate perpdims;
|
Coordinate perpdims;
|
||||||
sobj ss;
|
sobj ss;
|
||||||
|
@@ -160,6 +160,7 @@ void peekPole(sobj &s,const Lattice<vobj> &l,const Coordinate &orthog,NorthSouth
|
|||||||
GridBase *grid=l.Grid();
|
GridBase *grid=l.Grid();
|
||||||
|
|
||||||
assert(grid->Icosahedral());
|
assert(grid->Icosahedral());
|
||||||
|
assert(grid->IcosahedralVertices());
|
||||||
|
|
||||||
int Nsimd = grid->Nsimd();
|
int Nsimd = grid->Nsimd();
|
||||||
|
|
||||||
@@ -220,6 +221,7 @@ void pokePole(const sobj &s,Lattice<vobj> &l,const Coordinate &orthog,NorthSouth
|
|||||||
GridBase *grid=l.Grid();
|
GridBase *grid=l.Grid();
|
||||||
|
|
||||||
assert(grid->Icosahedral());
|
assert(grid->Icosahedral());
|
||||||
|
assert(grid->IcosahedralVertices());
|
||||||
|
|
||||||
grid->Broadcast(grid->BossRank(),s);
|
grid->Broadcast(grid->BossRank(),s);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user