11 #include <simp/boundary/Boundary.h> 12 #include <util/param/ParamComposite.h> 13 #include <util/containers/FMatrix.h> 14 #include <util/containers/FArray.h> 15 #include <util/space/IntVector.h> 16 #include <util/space/Grid.h> 17 #include <util/space/Dimension.h> 55 void setGridCommunicator(MPI::Intracomm& communicator);
59 void setRank(
int Rank);
68 void setBoundary(
Boundary& boundary);
75 virtual void readParameters(std::istream& in);
96 const Grid& grid()
const;
103 int gridCoordinate(
int i)
const;
110 int gridDimension(
int i)
const;
117 bool gridIsPeriodic(
int i)
const;
122 int gridRank()
const;
127 bool isMaster()
const;
135 int sourceRank(
int i,
int j)
const;
143 int destRank(
int i,
int j)
const;
156 int shift(
int i,
int j)
const;
162 MPI::Intracomm& communicator()
const;
176 double domainBound(
int i,
int j)
const;
184 int ownerRank(
const Vector& position)
const;
192 bool isInDomain(
const Vector& position)
const;
197 bool isInitialized()
const;
202 bool hasBoundary()
const;
233 MPI::Intracomm* intracommPtr_;
259 assert(intracommPtr_);
260 return *intracommPtr_;
270 assert(isInitialized_);
279 assert(isInitialized_);
280 return gridCoordinates_[i];
288 assert(isInitialized_);
289 return gridDimensions_[i];
297 assert(isInitialized_);
298 return gridIsPeriodic_[i];
306 assert(isInitialized_);
315 assert(isInitialized_);
316 return bool(gridRank_ == 0);
324 assert(isInitialized_);
325 return sourceRanks_(i, j);
333 assert(isInitialized_);
334 return destRanks_(i,j);
342 assert(isInitialized_);
350 {
return isInitialized_; }
356 {
return (boundaryPtr_ != 0); }
A Vector is a Cartesian vector.
bool isInitialized() const
Has this Domain been initialized by calling readParam?
int sourceRank(int i, int j) const
Rank of the processor from which to receive for transfer (i, j).
An orthorhombic periodic unit cell.
int shift(int i, int j) const
Shift to be applied to sent coordinates in transfer (i, j).
File containing preprocessor macros for error handling.
Parallel domain decomposition (DD) MD simulation.
Classes used by all simpatico molecular simulations.
bool gridIsPeriodic(int i) const
Is the grid periodic in the specified direction?
MPI::Intracomm & communicator() const
Return Cartesian communicator by reference.
Saving / output archive for binary ostream.
int gridRank() const
Get rank of this processor in the processor grid.
Utility classes for scientific computation.
int gridDimension(int i) const
Get dimension of processor grid in specified direction.
const Grid & grid() const
Return processor Grid by const reference.
bool isMaster() const
Is this the master processor (gridRank == 0) ?
Decomposition of the system into domains associated with processors.
Saving archive for binary istream.
An IntVector is an integer Cartesian vector.
int gridCoordinate(int i) const
Get coordinate of processor within grid in specified direction.
int destRank(int i, int j) const
Rank of the processor to which to send for transfer (i, j).
A grid of points indexed by integer coordinates.
bool hasBoundary() const
Has an associated Boundary been set?
An object that can read multiple parameters from file.