1
0
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:
Peter Boyle
2025-10-08 15:18:31 -04:00
parent 3a65a096f2
commit 7dfd207ebb
4 changed files with 10 additions and 2 deletions

View File

@@ -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; };

View File

@@ -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; };

View File

@@ -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;

View File

@@ -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);