MercuryDPM
Trunk
|
The simulation can be subdivided into Domain's used in parallel code. More...
#include <Domain.h>
Public Member Functions | |
Domain () | |
Default Domain constructor. More... | |
Domain (std::vector< unsigned > globalMeshIndex) | |
Constructs an empty domain with a globalMeshIndex. More... | |
Domain (const Domain &d) | |
Constructor that copies the domain range and rank from a given domain. More... | |
~Domain () override | |
Destructor, destroys the domain. More... | |
void | constructor () |
contructor of a domain More... | |
virtual Domain * | copy () const |
Function that creates a copy of this current domain, using the copy constructor. More... | |
void | read (std::istream &is) override |
This function does nothing. More... | |
void | write (std::ostream &os) const override |
This function does nothing. More... | |
std::string | getName () const override |
Returns the name of the object. More... | |
void | setRange (Direction direction, Mdouble min, Mdouble max) |
Sets the domain range in a given direction. More... | |
void | setBounds (std::vector< double > domainLeft, std::vector< double > domainRight, bool computeMiddle) |
Sets the domain bounds. More... | |
std::vector< double > | getDomainMin () |
Gets the minimum domain bounds. More... | |
std::vector< double > | getDomainMax () |
Gets the maximum domain bounds. More... | |
int | getRank () |
Gets the rank associated with the assigned processorID. More... | |
void | setRank (int rank) |
Sets the rank associated with the assigned processorID. More... | |
void | setHandler (DomainHandler *handler) |
Sets the domainHandler. More... | |
DomainHandler * | getHandler () const |
Gets the domainHandler. More... | |
int | getGlobalIndex () |
Gets the global index of the domain. More... | |
std::vector< unsigned > | getGlobalMeshIndex () |
Gets the global mesh index of the domain. More... | |
void | setGlobalMeshIndex (std::vector< unsigned > globalMeshIndex) |
Sets the global mesh index of theh domain. More... | |
void | disableBoundary (unsigned localIndex) |
Disables a boundary of the domain with a neighbouring domain. More... | |
void | disableBoundaries () |
disables all domain boundaries that have no neighbour More... | |
std::vector< bool > | getActiveBoundaryList () |
Returns a list of boundaries that are active in mpi communication. More... | |
bool | containsParticle (BaseParticle *particle, Mdouble offset=0.0) |
Check to see if a given particle is within the current domain. More... | |
bool | isInGreaterDomain (BaseParticle *particle) |
Check to see if a given particle is in the current domain or in neighbouring communication zones. More... | |
bool | isInInnerDomain (BaseParticle *particle) |
Check if the particle is in the current domain but not in the communication zone. More... | |
bool | isInCommunicationZone (BaseParticle *particle) |
Check if the particle is in the communication zone of the current domain. More... | |
void | createLookUpTable () |
Create a look up table between local index system to global index system. More... | |
int | getLocalIndex (int i, int j, int k) |
return the local index of a domain given local mesh indices i,j and k More... | |
int | getLocalIndex (std::vector< int > localMeshIndex) |
return the local index of a doman given the localMeshIndex vector More... | |
std::vector< int > | getLocalIndexInverse (int localMeshIndex) |
BaseParticle * | findParticleInList (unsigned int identification, std::vector< BaseParticle * > particleList) |
Searches for a particle with a specific id in a list of particles. More... | |
std::vector< int > | findNearbyBoundaries (BaseParticle *particle, Mdouble offset=0) |
This function finds if a given particle is close to a given boundary. More... | |
bool | inBoundary (BaseParticle *particle, int localIndex) |
void | addParticlesToLists (BaseParticle *particle, std::vector< std::vector< BaseParticle * > > &list) |
Function that adds the particles to the approriate boundary list. More... | |
void | findNewMPIParticles (const ParticleHandler &particleHandler) |
Function that finds new particles in the particle handler that should be added to the communication lists. More... | |
void | findNewMPIParticle (BaseParticle *particle) |
Function that check if a given particle should be added to the communication lists. More... | |
bool | isInNewBoundaryParticleList (BaseParticle *object, int localIndex) const |
void | findNewMPIInteractions () |
Finds interactions that have to be send over to another domain. More... | |
void | collectBoundaryParticleData (int localIndex) |
collects the data of a particle that has to be communicated to other processors More... | |
void | collectInteractionData (int localIndex) |
Collects the data of an interaction that has to be communicated to other processors. More... | |
void | processReceivedBoundaryParticleData (unsigned index, std::vector< BaseParticle * > &newParticles) |
Function that copies the mpi data format of a base particle to a real particle and adds it to the particleHandler. More... | |
void | processSentBoundaryParticles (unsigned index) |
Bookkeep the newly send particles. More... | |
void | processReceivedInteractionData (unsigned index, std::vector< BaseParticle * > &newParticles) |
Processes the received interactions from newly added mpi particles. More... | |
void | debugInformation () |
void | sendAndReceiveCount (MercuryMPITag tag, unsigned &countReceive, unsigned &countSend, unsigned localIndexNeighbour) |
A symmetric communication between two domains exchanging a send/recieve count. More... | |
void | prepareBoundaryDataTransmission () |
Prepares the MPI transmission of particle and interaction data from particles in particleHandler. More... | |
void | prepareBoundaryDataTransmission (BaseParticle *particle) |
Prepares the MPI transmission of a single particle and its interactions. More... | |
void | performBoundaryDataTransmission () |
Collects data to be transmitted and then performs the transmission of the data. More... | |
void | finaliseBoundaryDataTransmission () |
This function processes the transmitted data. More... | |
void | updateParticles (std::set< BaseParticle * > &ghostParticlesToBeDeleted) |
This step updates all communication lists and particles in the communication zone. More... | |
void | updateParticlePosition (int localIndex) |
Updates the position of particles which are flagged as MPIParticles. More... | |
void | updateParticleVelocity (int localIndex) |
Updates the velocity of particles which are flagged as MPIParticles. More... | |
void | preparePositionAndVelocityUpdate () |
Function that sends particle position and velocity data for ghost particles to other processors. More... | |
void | finalisePositionAndVelocityUpdate (std::set< BaseParticle * > &ghostParticlesToBeDeleted) |
processes position and velocity data for ghost particles More... | |
void | prepareVelocityUpdate () |
Function that sends particle velocity data for ghost particles. More... | |
void | finaliseVelocityUpdate () |
Processes particle velocity data for ghost particles. More... | |
template<typename T > | |
void | sendAndReceiveMPIData (MercuryMPITag tag, MercuryMPIType type, T *receiveData, unsigned receiveCount, T *sendData, unsigned sendCount, unsigned localIndexNeighbour) |
Function that sends transmissionData/positionData/velocityData to other processors. More... | |
void | addNewParticles () |
Initialises the MPIParticles by communicating newly found particles. More... | |
void | addParticle (BaseParticle *particle) |
Initialises a single particle which is added during the simulation. More... | |
void | updateStatus (std::set< BaseParticle * > &ghostParticlesToBeDeleted) |
Updates particles that are not in the current domain and communicates newly added particles. More... | |
void | updateVelocity () |
Updates MPI particle velocity at the half-time step. More... | |
unsigned int | getNumberOfMPIParticles () |
Obtains the number of particles in the particleHandler that are MPIParticles. More... | |
unsigned int | getNumberOfTrueMPIParticles () |
Obtains the number of particles in the particleHandler that are MPIParticles, but NOT periodic particles. More... | |
void | flushParticles (std::set< BaseParticle * > &toBeDeletedList) |
Particles that are going to be deleted from the simulation are flushed out of the communication boundaries. More... | |
void | flushParticlesFromList (std::vector< BaseParticle * > &list, std::set< BaseParticle * > &toBeDeletedList) |
Particles that are going to be deleted from the simulation are flushed out of a give communcation boundary. More... | |
Vec3D | getMiddle () const |
Gives the middle of the domain. More... | |
void | cleanCommunicationLists () |
Removes nullptrs from boundaryParticleList_ and boundaryParticleListNeighbour_. More... | |
void | cleanCommunicationList (std::vector< BaseParticle * > &list) |
Removes nullptr's from a given particle list. More... | |
![]() | |
BaseObject ()=default | |
Default constructor. More... | |
BaseObject (const BaseObject &p)=default | |
Copy constructor, copies all the objects BaseObject contains. More... | |
virtual | ~BaseObject ()=default |
virtual destructor More... | |
virtual void | moveInHandler (unsigned int index) |
Except that it is virtual, it does the same thing as setIndex() does. More... | |
void | setIndex (unsigned int index) |
Allows one to assign an index to an object in the handler/container. More... | |
void | setId (unsigned long id) |
Assigns a unique identifier to each object in the handler (container) which remains constant even after the object is deleted from the container/handler. More... | |
unsigned int | getIndex () const |
Returns the index of the object in the handler. More... | |
unsigned int | getId () const |
Returns the unique identifier of any particular object. More... | |
void | setGroupId (unsigned groupId) |
unsigned | getGroupId () const |
Private Attributes | |
DomainHandler * | domainHandler_ |
Pointer to the domain's DomainHandler container. More... | |
std::vector< double > | domainMin_ |
Minimum domain bounds in the x,y and z direction. More... | |
std::vector< double > | domainMax_ |
Maximum domain bounds in the x,y and z direction. More... | |
Vec3D | middle_ |
Middle of the closed domain. More... | |
int | globalIndex_ |
Global index of the domain in the mesh. More... | |
std::vector< unsigned > | globalMeshIndex_ |
Vector containing the global mesh indices i,j,k. More... | |
std::vector< int > | localIndexToGlobalIndexTable_ |
look-up table to get the global index given a local domain index More... | |
std::vector< int > | localIndexToProcessorList_ |
look-up table to get the processor of the domain given a local domain index More... | |
std::vector< bool > | activeBoundaryList_ |
A list of flags corresponding to an inactive or active boundary. More... | |
std::vector< int > | boundaryList_ |
A list of indices of all the active boundaries. More... | |
std::vector< std::vector < BaseParticle * > > | boundaryParticleList_ |
A list of boundary particles in the communication zone that are ghost particles on other domains. More... | |
std::vector< std::vector < BaseParticle * > > | boundaryParticleListNeighbour_ |
a list of ghost particles on the current domain, which are real on the neighbour domain More... | |
std::vector< std::vector < BaseParticle * > > | newBoundaryParticleList_ |
Array that queues particles that need to be transmitted. More... | |
std::vector< std::vector < BaseInteraction * > > | newInteractionList_ |
Array that queues interactions that need to be transmitted. More... | |
std::vector< unsigned > | numberOfParticlesSend_ |
Counter that keeps track of the number of particles that are being send to other domains. More... | |
std::vector< unsigned > | numberOfParticlesReceive_ |
Counter that keeps track of the number of particles that are being received by this domain. More... | |
std::vector< unsigned > | numNewInteractionsSend_ |
Counter that keeps track of the number of interactions that are being send to other domains. More... | |
std::vector< unsigned > | numNewInteractionsReceive_ |
Counter that keeps track of the number of interactions that are being received by this domain. More... | |
std::vector< std::vector < MPIParticle > > | boundaryParticleDataSend_ |
Container that keeps a list of MPIParticles that are being send to other domains. More... | |
std::vector< std::vector < MPIParticle > > | boundaryParticleDataReceive_ |
Container that keeps a list of MPIParticles that are being received by this domain. More... | |
std::vector< std::vector < MPIParticlePosition > > | updatePositionDataSend_ |
Container that keeps a list of MPIParticlePositions that are being send to other domains. More... | |
std::vector< std::vector < MPIParticlePosition > > | updatePositionDataReceive_ |
Container that keeps a list of MPIParticlePositions that are being received by this domain. More... | |
std::vector< std::vector < MPIParticleVelocity > > | updateVelocityDataSend_ |
Container that keeps a list of MPIParticleVelocities that are being send to other domains. More... | |
std::vector< std::vector < MPIParticleVelocity > > | updateVelocityDataReceive_ |
Container that keeps a list of MPIParticleVelocities that are being received by this domain. More... | |
std::vector< void * > | interactionDataSend_ |
Container that keeps a void array of all the interaction data that are being send to other domains, interpretation is done by the interaction handler. More... | |
std::vector< void * > | interactionDataReceive_ |
Container that keeps a void array of all the interaction data that is being received by this domain, interpretation is done by the interaction handler. More... | |
int | rank_ |
Rank of the domain which identifies to which processor it belongs. More... | |
The simulation can be subdivided into Domain's used in parallel code.
The domain class defines a region in the simulation domain, given by a min vector and a max vector. The domain also as a processorID assigned to it. It has a check to see whether a given particle is in the domain or not.
Domain::Domain | ( | ) |
Default Domain constructor.
Constructs an empty domain.
Constructor of the domain class. It creates a domain with infinite bounds and no processor or domainHandler assigned to it and initialises all communication lists
Definition at line 48 of file Domain.cc.
References constructor().
Referenced by copy().
|
explicit |
Constructs an empty domain with a globalMeshIndex.
Constructor of the domain class. It creates a domain with infinite bounds and no processor or domainHandler assigned to it and initialises all communication lists
Definition at line 62 of file Domain.cc.
References constructor().
Domain::Domain | ( | const Domain & | b | ) |
Constructor that copies the domain range and rank from a given domain.
Copies a domain.
[in] | PH | The domain that has to be copied. |
This constructor copies all the private variables of the current domain into the input domain.
Definition at line 76 of file Domain.cc.
References activeBoundaryList_, boundaryList_, boundaryParticleDataReceive_, boundaryParticleDataSend_, boundaryParticleList_, boundaryParticleListNeighbour_, domainHandler_, domainMax_, domainMin_, globalMeshIndex_, interactionDataReceive_, interactionDataSend_, localIndexToGlobalIndexTable_, localIndexToProcessorList_, middle_, newBoundaryParticleList_, newInteractionList_, numberOfParticlesReceive_, numberOfParticlesSend_, numNewInteractionsReceive_, numNewInteractionsSend_, rank_, updatePositionDataReceive_, updatePositionDataSend_, updateVelocityDataReceive_, and updateVelocityDataSend_.
|
override |
void Domain::addNewParticles | ( | ) |
Initialises the MPIParticles by communicating newly found particles.
Adds new MPI ghost particles to the simulation. This is done in a three stage process where first the particles are located that generate ghosts, secondly their data is transmitted to the correct processor and thirdly that data is then used to create ghost particles.
Definition at line 1588 of file Domain.cc.
References finaliseBoundaryDataTransmission(), MPIContainer::Instance(), performBoundaryDataTransmission(), prepareBoundaryDataTransmission(), and MPIContainer::sync().
Referenced by DomainHandler::addNewParticles().
void Domain::addParticle | ( | BaseParticle * | particle | ) |
Initialises a single particle which is added during the simulation.
Initialises a single particle which was added by the user after the domain creation.
This function is used when a single particle is added during the simulation In that case it has to be added to the mpi domains manually using this function. Examples are insertion boundaries that occasionally add particles to the domain
[in] | particle | The single particle that has to be inserted into the domain |
Definition at line 1610 of file Domain.cc.
References finaliseBoundaryDataTransmission(), MPIContainer::Instance(), performBoundaryDataTransmission(), prepareBoundaryDataTransmission(), and MPIContainer::sync().
Referenced by DPMBase::insertGhostParticle().
void Domain::addParticlesToLists | ( | BaseParticle * | particle, |
std::vector< std::vector< BaseParticle * > > & | list | ||
) |
Function that adds the particles to the approriate boundary list.
Function that adds the particles to the approriate boundary lists.
This function computes the complexity of the particle. The complexity is defined by the number of boundaries the particle is close-by. Depending on this complexity value the particle has to be added to different boundary lists.
[in] | particle | pointer to base particle |
[in,out] | list | a list of lists of particles which the particle might be added to |
Definition at line 701 of file Domain.cc.
References ERROR, findNearbyBoundaries(), getLocalIndex(), INFO, logger, and BaseParticle::setCommunicationComplexity().
Referenced by findNewMPIParticle().
void Domain::cleanCommunicationList | ( | std::vector< BaseParticle * > & | list | ) |
Removes nullptr's from a given particle list.
Removes nullptrs from a list of base particles efficiently by replacing the last entry to an empty nullptr space.m
[in] | list | The list that needs to be cleansed from nullptrs |
Definition at line 1757 of file Domain.cc.
References constants::i.
Referenced by cleanCommunicationLists().
void Domain::cleanCommunicationLists | ( | ) |
Removes nullptrs from boundaryParticleList_ and boundaryParticleListNeighbour_.
After particles have been updated, the communication lists contains nullptrs, remove these from the boundaryParticleList and boundaryParticleListNeighbour
Definition at line 1742 of file Domain.cc.
References boundaryList_, boundaryParticleList_, boundaryParticleListNeighbour_, cleanCommunicationList(), and constants::i.
Referenced by DPMBase::checkInteractionWithBoundaries(), PeriodicBoundaryHandler::clearCommunicationLists(), and DPMBase::deleteGhostParticles().
void Domain::collectBoundaryParticleData | ( | int | localIndex | ) |
collects the data of a particle that has to be communicated to other processors
collects the data of a particles that has to be communicated to other processors
Only the relevant data of a baseParticle is being send to other processors, therefore this function collects the relevant data and puts it in a format compatible with data transmission
[in] | localIndex | the local index of a boundary |
Definition at line 909 of file Domain.cc.
References boundaryParticleDataSend_, copyDataFromParticleToMPIParticle(), and newBoundaryParticleList_.
Referenced by performBoundaryDataTransmission().
void Domain::collectInteractionData | ( | int | localIndex | ) |
Collects the data of an interaction that has to be communicated to other processors.
Interactions have to be reformatted in an MPI-suitable format to transmit over to other processors
[in] | localIndex | The local index of a boundary |
Definition at line 924 of file Domain.cc.
References interactionDataSend_, and newInteractionList_.
Referenced by performBoundaryDataTransmission().
void Domain::constructor | ( | ) |
contructor of a domain
constructs the domain
the boundaries are set to infinity, no processor is assigned. all lists that require a full 3D domain element to function are created
Definition at line 133 of file Domain.cc.
References activeBoundaryList_, boundaryList_, boundaryParticleDataReceive_, boundaryParticleDataSend_, boundaryParticleList_, boundaryParticleListNeighbour_, domainHandler_, domainMax_, domainMin_, constants::inf, interactionDataReceive_, interactionDataSend_, constants::intMax, localIndexToGlobalIndexTable_, localIndexToProcessorList_, newBoundaryParticleList_, newInteractionList_, numberOfParticlesReceive_, numberOfParticlesSend_, numNewInteractionsReceive_, numNewInteractionsSend_, rank_, updatePositionDataReceive_, updatePositionDataSend_, updateVelocityDataReceive_, and updateVelocityDataSend_.
Referenced by Domain().
bool Domain::containsParticle | ( | BaseParticle * | particle, |
Mdouble | offset = 0.0 |
||
) |
Check to see if a given particle is within the current domain.
Checks if a particle is in the domain.
Checks if the particle is in the domain, but with an offset. this offset is set to zero standard
[in] | particle | Pointer to a particle |
[in] | offset | offset from the domain boundary |
Definition at line 400 of file Domain.cc.
References domainMax_, domainMin_, Vec3D::getComponent(), BaseInteractable::getPosition(), and constants::i.
Referenced by PeriodicBoundaryHandler::getMPIFlags(), isInCommunicationZone(), isInGreaterDomain(), isInInnerDomain(), DPMBase::mpiInsertParticleCheck(), prepareBoundaryDataTransmission(), and updateParticles().
|
virtual |
void Domain::createLookUpTable | ( | ) |
Create a look up table between local index system to global index system.
Function that creates a lookup table from the local index system to the global index system
Definition at line 451 of file Domain.cc.
References domainHandler_, DomainHandler::getNumberOfDomains(), globalIndex_, globalMeshIndex_, constants::i, localIndexToGlobalIndexTable_, localIndexToProcessorList_, rank_, XAXIS, YAXIS, and ZAXIS.
void Domain::debugInformation | ( | ) |
Definition at line 1096 of file Domain.cc.
References getHandler(), INFO, and logger.
void Domain::disableBoundaries | ( | ) |
disables all domain boundaries that have no neighbour
This function can only disable a square mesh. If you want to make a concave mesh then this function has to be adapted, especially for the case when the numberOfDomains[d] = 1.
Definition at line 597 of file Domain.cc.
References activeBoundaryList_, boundaryList_, domainHandler_, getLocalIndex(), DomainHandler::getNumberOfDomains(), globalMeshIndex_, constants::i, XAXIS, YAXIS, and ZAXIS.
void Domain::disableBoundary | ( | unsigned | localIndex | ) |
Disables a boundary of the domain with a neighbouring domain.
This function disables the communication of a boundary. Each domain in the parallel code has 27 boundaries: (6 sides, 12 ribs, 8 corners) and for convenience one is associated with the domain itself (used for local indexing). Boundaries that are inactive, such as domains that extend to infinity, do not need to be considered in the parallel computation. This function disables that boundary.
[in] | localIndex | The local index of a neighbour of the current domain |
Definition at line 378 of file Domain.cc.
References activeBoundaryList_.
void Domain::finaliseBoundaryDataTransmission | ( | ) |
This function processes the transmitted data.
copies the received mpi data into the particles/interacions and adds them to the particleHandler/interactionHandler All vectors that have been used in transmitting data are then cleaned up
[in,out] | particleHandler | Handles all particles in the current domain, on output contains the newly received particles |
[in,out] | interactionHandler | Handles all interactions in the current domain, on output contains the newly received interactions |
Definition at line 1262 of file Domain.cc.
References boundaryList_, boundaryParticleDataReceive_, boundaryParticleDataSend_, InteractionHandler::deleteMPIInteractionDataArray(), BaseHandler< T >::getDPMBase(), getHandler(), interactionDataReceive_, interactionDataSend_, DPMBase::interactionHandler, newBoundaryParticleList_, newInteractionList_, numberOfParticlesReceive_, numberOfParticlesSend_, numNewInteractionsReceive_, numNewInteractionsSend_, processReceivedBoundaryParticleData(), processReceivedInteractionData(), and processSentBoundaryParticles().
Referenced by addNewParticles(), and addParticle().
void Domain::finalisePositionAndVelocityUpdate | ( | std::set< BaseParticle * > & | ghostParticlesToBeDeleted | ) |
processes position and velocity data for ghost particles
After the data has been received from other processors, this function will update the ghost particles with the new position and velocity data. Afterwards the status of the particles will be updated based on their new positions. Sometimes a particle needs to be removed from the simulation, however since this particle might still be active in the periodic boundary it is not deleted straight away but stored in ghostParticlesToBeDeleted. Finally the communication data is removed.
[in,out] | ghostParticlesToBeDeleted | A vector containing particles that need to be removed from the simulation |
Definition at line 1501 of file Domain.cc.
References boundaryList_, updateParticlePosition(), updateParticles(), updateParticleVelocity(), updatePositionDataReceive_, updatePositionDataSend_, updateVelocityDataReceive_, and updateVelocityDataSend_.
Referenced by updateStatus().
void Domain::finaliseVelocityUpdate | ( | ) |
Processes particle velocity data for ghost particles.
This function is not in use
Definition at line 1557 of file Domain.cc.
References boundaryList_, updateParticleVelocity(), updateVelocityDataReceive_, and updateVelocityDataSend_.
Referenced by updateVelocity().
std::vector< int > Domain::findNearbyBoundaries | ( | BaseParticle * | particle, |
Mdouble | offset = 0 |
||
) |
This function finds if a given particle is close to a given boundary.
This function detects in how many boundaries the particle is located and is stored in the boundaryIndex. The boundary Index in the x-direction: a) -1 if the particle is at the left boundary b) 0 if the particle is not at a boundary c) 1 if the particle is at the right boundary The same holds for the y and z direction as well
[in] | particle | a base particle |
[out] | offset | the L1 distance between the domain boundary and the wanted boundary |
Definition at line 554 of file Domain.cc.
References domainHandler_, domainMax_, domainMin_, Vec3D::getComponent(), DomainHandler::getInteractionDistance(), and BaseInteractable::getPosition().
Referenced by addParticlesToLists(), inBoundary(), and updateParticles().
void Domain::findNewMPIInteractions | ( | ) |
Finds interactions that have to be send over to another domain.
Finds interactions that have to be sent over to another domain.
Newly added particles to the communication lists might have history interactions with the particles already there. The other domains need to be aware of these history interactions and this function collects the relevant interactions.
Definition at line 824 of file Domain.cc.
References boundaryList_, BaseWall::getDistanceAndNormal(), Vec3D::getLengthSquared(), BaseInteractable::getPosition(), BaseParticle::getSumOfInteractionRadii(), inBoundary(), BaseParticle::isInMPIDomain(), isInNewBoundaryParticleList(), newBoundaryParticleList_, and newInteractionList_.
Referenced by prepareBoundaryDataTransmission().
void Domain::findNewMPIParticle | ( | BaseParticle * | particle | ) |
Function that check if a given particle should be added to the communication lists.
Function that checks if a given particle should be added to the communication lists and adds it accordingly.
[in] | particle | point to a particle that is being checked if it should be added to the communication lists |
Definition at line 800 of file Domain.cc.
References addParticlesToLists(), BaseParticle::isInMPIDomain(), BaseParticle::isPeriodicGhostParticle(), and newBoundaryParticleList_.
Referenced by findNewMPIParticles(), and prepareBoundaryDataTransmission().
void Domain::findNewMPIParticles | ( | const ParticleHandler & | particleHandler | ) |
Function that finds new particles in the particle handler that should be added to the communication lists.
[in] | particleHandler | the container that contains all particles |
Definition at line 786 of file Domain.cc.
References findNewMPIParticle().
Referenced by prepareBoundaryDataTransmission().
BaseParticle * Domain::findParticleInList | ( | unsigned int | identification, |
std::vector< BaseParticle * > | particleList | ||
) |
Searches for a particle with a specific id in a list of particles.
When interactions are copied over MPI from an MPI particle, the unique id of the particles they interact with need to be looked up. This functions searches for the correct particle
[in] | indentification | The unique ID of a particle |
[in] | particleList | List of particles |
Definition at line 529 of file Domain.cc.
void Domain::flushParticles | ( | std::set< BaseParticle * > & | toBeFlushedList | ) |
Particles that are going to be deleted from the simulation are flushed out of the communication boundaries.
[in] | toBeDeletedList | A list of particles that is going to be deleted |
Definition at line 1698 of file Domain.cc.
References boundaryList_, boundaryParticleList_, boundaryParticleListNeighbour_, and flushParticlesFromList().
Referenced by DPMBase::checkInteractionWithBoundaries(), PeriodicBoundaryHandler::clearCommunicationLists(), and DPMBase::deleteGhostParticles().
void Domain::flushParticlesFromList | ( | std::vector< BaseParticle * > & | list, |
std::set< BaseParticle * > & | toBeDeletedList | ||
) |
Particles that are going to be deleted from the simulation are flushed out of a give communcation boundary.
Definition at line 1708 of file Domain.cc.
References BaseInteractable::getPosition(), logger, and VERBOSE.
Referenced by flushParticles().
std::vector< bool > Domain::getActiveBoundaryList | ( | ) |
Returns a list of boundaries that are active in mpi communication.
Returns a list of boundaries that are active in mpi communication
Definition at line 387 of file Domain.cc.
References activeBoundaryList_.
std::vector< double > Domain::getDomainMax | ( | ) |
Gets the maximum domain bounds.
Gets the domain's maximum domain bounds
Definition at line 319 of file Domain.cc.
References domainMax_.
Referenced by DomainHandler::setInteractionDistance().
std::vector< double > Domain::getDomainMin | ( | ) |
Gets the minimum domain bounds.
Gets the domain's minimum domain bounds
Definition at line 310 of file Domain.cc.
References domainMin_.
Referenced by DomainHandler::setInteractionDistance().
int Domain::getGlobalIndex | ( | ) |
Gets the global index of the domain.
Returns the global index of the domain in the whole simulation domain
Definition at line 346 of file Domain.cc.
References globalIndex_.
std::vector< unsigned > Domain::getGlobalMeshIndex | ( | ) |
Gets the global mesh index of the domain.
returns a vector with the globa mesh indices (i,j,k)
Definition at line 355 of file Domain.cc.
References globalMeshIndex_.
DomainHandler * Domain::getHandler | ( | ) | const |
Gets the domainHandler.
Returns the pointer to the DomainHandler the domain belongs to
Definition at line 1578 of file Domain.cc.
References domainHandler_.
Referenced by debugInformation(), finaliseBoundaryDataTransmission(), performBoundaryDataTransmission(), prepareBoundaryDataTransmission(), processReceivedBoundaryParticleData(), processReceivedInteractionData(), setBounds(), setRange(), and updateParticlePosition().
int Domain::getLocalIndex | ( | int | i, |
int | j, | ||
int | k | ||
) |
return the local index of a domain given local mesh indices i,j and k
Given i,j,k (where i=0,j=0,k=0 is the current domain), get the local index of a neighbouring domain
[in] | i | Index in the x-direction with i=0 corresponding to the current domain |
[in] | j | Index in the y-direction with j=0 corresponding to the current domain |
[in] | k | Index in the z-direction with k=0 corresponding to the current domain |
Definition at line 498 of file Domain.cc.
Referenced by addParticlesToLists(), and disableBoundaries().
int Domain::getLocalIndex | ( | std::vector< int > | localMeshIndex | ) |
return the local index of a doman given the localMeshIndex vector
Given i,j,k (where i=0,j=0,k=0 is the current domain), get the local index of a neighbouring domain
[in] | localMeshIndex | (i,j,k) where (0,0,0) corresponds to the current domain |
Definition at line 509 of file Domain.cc.
std::vector< int > Domain::getLocalIndexInverse | ( | int | localMeshIndex | ) |
Does the inverse action of getLocalIndex (un-bundles the localIndex into the three dimensions)
Definition at line 515 of file Domain.cc.
Referenced by inBoundary().
Vec3D Domain::getMiddle | ( | ) | const |
Gives the middle of the domain.
Returns the middle of this square domain, required for periodic particles
Definition at line 1733 of file Domain.cc.
References middle_.
Referenced by PeriodicBoundaryHandler::findTargetProcessor().
|
overridevirtual |
Returns the name of the object.
Returns the object's class name (i.e. 'DeletionBoundary').
Implements BaseObject.
unsigned int Domain::getNumberOfMPIParticles | ( | ) |
Obtains the number of particles in the particleHandler that are MPIParticles.
All the MPIParticles are located in the neighbour lists and we only need to take a sum of these lists to obtain the number of MPIParticles. This function is required to keep track of the number of real particles in the domain.
Definition at line 1664 of file Domain.cc.
References boundaryParticleListNeighbour_.
unsigned int Domain::getNumberOfTrueMPIParticles | ( | ) |
Obtains the number of particles in the particleHandler that are MPIParticles, but NOT periodic particles.
All the MPIParticles are located in the neighbour lists and we only need to take a sum of these lists to obtain the number of MPIParticles. This function is required to keep track of the number of real particles in the domain.
Definition at line 1679 of file Domain.cc.
References boundaryParticleListNeighbour_.
Referenced by ParticleHandler::getNumberOfRealObjectsLocal().
int Domain::getRank | ( | ) |
Gets the rank associated with the assigned processorID.
Gets the domain's rank, corresponding to a processorID.
Definition at line 328 of file Domain.cc.
References rank_.
bool Domain::inBoundary | ( | BaseParticle * | particle, |
int | localIndex | ||
) |
checks whether the particle is in the localIndex zone.
Definition at line 578 of file Domain.cc.
References findNearbyBoundaries(), getLocalIndexInverse(), and constants::i.
Referenced by findNewMPIInteractions().
bool Domain::isInCommunicationZone | ( | BaseParticle * | particle | ) |
Check if the particle is in the communication zone of the current domain.
Check if the particle is inside the communication zone
[in] | particle | Pointer to a particle |
Definition at line 441 of file Domain.cc.
References containsParticle(), and isInInnerDomain().
Referenced by DPMBase::mpiIsInCommunicationZone().
bool Domain::isInGreaterDomain | ( | BaseParticle * | particle | ) |
Check to see if a given particle is in the current domain or in neighbouring communication zones.
Check if the particle is inside the domain + the communication zone around it
[in] | particle | Pointer to a particle |
Definition at line 420 of file Domain.cc.
References containsParticle(), domainHandler_, and DomainHandler::getInteractionDistance().
Referenced by PeriodicBoundaryHandler::getMPIFlags().
bool Domain::isInInnerDomain | ( | BaseParticle * | particle | ) |
Check if the particle is in the current domain but not in the communication zone.
[in] | particle | Pointer to a particle |
Definition at line 430 of file Domain.cc.
References containsParticle(), domainHandler_, and DomainHandler::getInteractionDistance().
Referenced by PeriodicBoundaryHandler::getMPIFlags(), and isInCommunicationZone().
bool Domain::isInNewBoundaryParticleList | ( | BaseParticle * | object, |
int | localIndex | ||
) | const |
Definition at line 809 of file Domain.cc.
References newBoundaryParticleList_.
Referenced by findNewMPIInteractions().
void Domain::performBoundaryDataTransmission | ( | ) |
Collects data to be transmitted and then performs the transmission of the data.
The particles and interactions are copied into a data class that can be transmitted to other processors. The data is then accordingly send to the appropriate processors
[in] | interactionHandler | Handler that contains all interactions, required to collect interaction data |
Definition at line 1221 of file Domain.cc.
References boundaryList_, boundaryParticleDataReceive_, boundaryParticleDataSend_, collectBoundaryParticleData(), collectInteractionData(), InteractionHandler::createMPIInteractionDataArray(), BaseHandler< T >::getDPMBase(), getHandler(), INTERACTION, INTERACTION_DATA, interactionDataReceive_, interactionDataSend_, DPMBase::interactionHandler, numberOfParticlesReceive_, numberOfParticlesSend_, numNewInteractionsReceive_, numNewInteractionsSend_, PARTICLE, PARTICLE_DATA, and sendAndReceiveMPIData().
Referenced by addNewParticles(), and addParticle().
void Domain::prepareBoundaryDataTransmission | ( | ) |
Prepares the MPI transmission of particle and interaction data from particles in particleHandler.
This function checks all the particles in the particle handler to see if they have moved in the communication domain. If that is the case they are added to a list of particles that need to be send. After all particles are evaluated the number of new particles to be send is send to the appropriate processors The same is being done to the interactions of the newly found particles
[in] | particleHandler | handles all the particles in the current domain |
Definition at line 1146 of file Domain.cc.
References boundaryList_, findNewMPIInteractions(), findNewMPIParticles(), getHandler(), INTERACTION_COUNT, newBoundaryParticleList_, newInteractionList_, numberOfParticlesReceive_, numberOfParticlesSend_, numNewInteractionsReceive_, numNewInteractionsSend_, PARTICLE_COUNT, and sendAndReceiveCount().
Referenced by addNewParticles(), and addParticle().
void Domain::prepareBoundaryDataTransmission | ( | BaseParticle * | particle | ) |
Prepares the MPI transmission of a single particle and its interactions.
When a single particle has to be added to the communication zone (i.e. when the user adds a particle during the simulation) then all processors should be informed if they receive the particle or not. The functionality of this function is practically the same as that of prepareBoundaryDataTransmission(ParticleHandler &particleHandler) The same is being done to the interactions of the newly found particles
[in] | particle | A base particle that needs to be transmitted |
Definition at line 1183 of file Domain.cc.
References boundaryList_, containsParticle(), findNewMPIParticle(), INTERACTION_COUNT, newBoundaryParticleList_, newInteractionList_, numberOfParticlesReceive_, numberOfParticlesSend_, numNewInteractionsReceive_, numNewInteractionsSend_, PARTICLE_COUNT, and sendAndReceiveCount().
void Domain::preparePositionAndVelocityUpdate | ( | ) |
Function that sends particle position and velocity data for ghost particles to other processors.
When the real particle moves on it's actual domain, it's ghost particles have to get an update this function sends the data to the processors that require the update
Definition at line 1460 of file Domain.cc.
References boundaryList_, boundaryParticleList_, boundaryParticleListNeighbour_, copyPositionFrom(), copyVelocityFrom(), numberOfParticlesReceive_, numberOfParticlesSend_, POSITION, POSITION_DATA, sendAndReceiveMPIData(), updatePositionDataReceive_, updatePositionDataSend_, updateVelocityDataReceive_, updateVelocityDataSend_, VELOCITY, and VELOCITY_DATA.
Referenced by updateStatus().
void Domain::prepareVelocityUpdate | ( | ) |
Function that sends particle velocity data for ghost particles.
This function is not in use
Definition at line 1529 of file Domain.cc.
References boundaryList_, boundaryParticleList_, boundaryParticleListNeighbour_, copyVelocityFrom(), numberOfParticlesReceive_, numberOfParticlesSend_, sendAndReceiveMPIData(), updateVelocityDataReceive_, updateVelocityDataSend_, VELOCITY, and VELOCITY_DATA.
Referenced by updateVelocity().
void Domain::processReceivedBoundaryParticleData | ( | unsigned | index, |
std::vector< BaseParticle * > & | newParticles | ||
) |
Function that copies the mpi data format of a base particle to a real particle and adds it to the particleHandler.
When adding a particle with this function it's always a ghost particle and therefor gets the MPIParticle flag
[in] | index | The boundary index of the boundary list currently being treated |
[in,out] | particleHandler | Container containing the particles of the current domain, will contain the new MPI particles as well |
Definition at line 941 of file Domain.cc.
References ParticleHandler::addGhostObject(), boundaryParticleDataReceive_, boundaryParticleListNeighbour_, copyDataFromMPIParticleToParticle(), BaseHandler< T >::getDPMBase(), getHandler(), BaseObject::getId(), BaseHandler< T >::getLastObject(), BaseInteractable::getPosition(), constants::i, logger, MPISphericalParticle::newParticle(), numberOfParticlesReceive_, DPMBase::particleHandler, BaseParticle::setInMPIDomain(), BaseParticle::setMPIParticle(), BaseParticle::setPreviousPosition(), and VERBOSE.
Referenced by finaliseBoundaryDataTransmission().
void Domain::processReceivedInteractionData | ( | unsigned | index, |
std::vector< BaseParticle * > & | newParticles | ||
) |
Processes the received interactions from newly added mpi particles.
The received interaction data is scanned for interaction id's P and I they are then matches to the actual particle or wall and the interaction is created. The history details of the interaction are filled in after creation.
[in] | localIndex | The boundary index of the boundary list currently being treated |
[in,out] | interactionHandler | Handler containing all interactions on the current domain |
Definition at line 999 of file Domain.cc.
References BaseHandler< T >::getDPMBase(), getHandler(), BaseObject::getId(), InteractionHandler::getInteractionDetails(), BaseInteractable::getInteractionWith(), BaseParticle::getInteractionWith(), BaseHandler< T >::getObjectById(), DPMBase::hGridGetInteractingParticleList(), interactionDataReceive_, DPMBase::interactionHandler, logger, numNewInteractionsReceive_, BaseInteraction::setMPIInteraction(), VERBOSE, DPMBase::wallHandler, and WARN.
Referenced by finaliseBoundaryDataTransmission().
void Domain::processSentBoundaryParticles | ( | unsigned | index | ) |
Bookkeep the newly send particles.
Each domain keeps a list of particles that have copies on other domains. The order of these lists is exactly the same order of the neighbour particle lists of the neighbour domain.
[in] | index | The boundary index of the boundary list currently being treated |
Definition at line 977 of file Domain.cc.
References boundaryParticleList_, and newBoundaryParticleList_.
Referenced by finaliseBoundaryDataTransmission().
|
overridevirtual |
This function does nothing.
Reads the object from a given istream.
Reads the object's id_ from the given istream
[in,out] | is | istream the id_ is read from |
Implements BaseObject.
void Domain::sendAndReceiveCount | ( | MercuryMPITag | tag, |
unsigned & | countReceive, | ||
unsigned & | countSend, | ||
unsigned | localIndexNeighbour | ||
) |
A symmetric communication between two domains exchanging a send/recieve count.
Before real data (i.e. particle data) can be transmitted to other processors, these receiving processors need to know how many data objects they are receiving. This function facilitates a symmetric send mechanism between two domains to communicate how much objects they get from eachother
[in] | tag | A MercuryMPITag that indicates what type of count is being send |
[out] | countReceive | unsigned integer containing the receiving count |
[in] | countSend | unsigned integer containing the sending count |
[in] | localIndexNeighbour | the local index of the domain with which the communication is being done |
Definition at line 1119 of file Domain.cc.
References globalIndex_, MPIContainer::Instance(), localIndexToGlobalIndexTable_, localIndexToProcessorList_, logger, MAX_PROC, MPIContainer::receive(), and MPIContainer::send().
Referenced by prepareBoundaryDataTransmission().
|
inline |
Function that sends transmissionData/positionData/velocityData to other processors.
This function is heavily templated on the type of data that can be send. All the types that are located in the MercuryMPIType enum class can be used to transmit data. Examples are MPIParticle and MPIParticlePosition data types
[in] | tag | A MercuryMPITag that indicates what type of data is being send |
[in] | type | A MercuryMPIType that tells the MPI what MPI_Data structure to use |
[out] | receiveData | The data that will be received by the current domain |
[in] | receiveCount | The number of items that are being received by the current domain |
[in] | sendData | The data that will be send by the current domain |
[in] | sendCount | The number of items that are being send by the current domain |
[in] | localIndexNeighbour | the local index to the neighbouring domain |
Definition at line 369 of file Domain.h.
References globalIndex_, MPIContainer::Instance(), localIndexToGlobalIndexTable_, localIndexToProcessorList_, MAX_PROC, MPIContainer::receive(), and MPIContainer::send().
Referenced by performBoundaryDataTransmission(), preparePositionAndVelocityUpdate(), and prepareVelocityUpdate().
void Domain::setBounds | ( | std::vector< double > | domainMin, |
std::vector< double > | domainMax, | ||
bool | computeMiddle | ||
) |
Sets the domain bounds.
This function sets the bound for the domain, it also computes the middle of the square domain, useful for mixed periodic/mpi particles.
[in] | domainMin | Minimum values of the domain in x-,y-,z-direction |
[in] | domainMax | Maximum values of the domain in x-,y-,z-direction |
Definition at line 268 of file Domain.cc.
References domainMax_, domainMin_, Vec3D::getComponent(), BaseHandler< T >::getDPMBase(), getHandler(), DPMBase::getMax(), DPMBase::getMin(), constants::i, constants::inf, middle_, and Vec3D::setComponent().
Referenced by DomainHandler::createDomains(), and DomainHandler::initialise().
void Domain::setGlobalMeshIndex | ( | std::vector< unsigned > | globalMeshIndex | ) |
Sets the global mesh index of theh domain.
sets the global mesh index
global mesh index has the shape of (i,j,k)
[in] | globalMeshIndex | the mesh index vector i,j,k |
Definition at line 365 of file Domain.cc.
References globalMeshIndex_.
void Domain::setHandler | ( | DomainHandler * | domainHandler | ) |
Sets the domainHandler.
Sets the pointer to the DomainHandler the domain belongs to
[in] | domainHandler | pointer to the DomainHandler |
Definition at line 337 of file Domain.cc.
References domainHandler_.
Referenced by DomainHandler::addObject(), DomainHandler::createDomains(), and DomainHandler::initialise().
Sets the domain range in a given direction.
Sets the domain's range in a given direction.
[in] | direction | Direction 0,1,2 corresponds to direction x,y,z respectively |
[in] | min | Minimum domain bound |
[in] | max | Maximum domain bound |
Definition at line 219 of file Domain.cc.
References domainMax_, domainMin_, ERROR, Vec3D::getComponent(), BaseHandler< T >::getDPMBase(), getHandler(), DPMBase::getMax(), DPMBase::getMin(), constants::inf, logger, middle_, Vec3D::X, XAXIS, Vec3D::Y, YAXIS, Vec3D::Z, and ZAXIS.
void Domain::setRank | ( | int | rank | ) |
Sets the rank associated with the assigned processorID.
Sets the domain's rank, corresponding to a processorID.
[in] | rank | Integer corresponding to a processorID |
Definition at line 301 of file Domain.cc.
References rank_.
void Domain::updateParticlePosition | ( | int | localIndex | ) |
Updates the position of particles which are flagged as MPIParticles.
Manually updates the position of the particles, the displacement and the orientation It additionally updates the position of the particle in the hGrid
[in] | localIndex | an index to the boundary being updated |
Definition at line 1412 of file Domain.cc.
References boundaryParticleListNeighbour_, BaseHandler< T >::getDPMBase(), getHandler(), Vec3D::getLengthSquared(), DPMBase::hGridUpdateMove(), logger, and updatePositionDataReceive_.
Referenced by finalisePositionAndVelocityUpdate().
void Domain::updateParticles | ( | std::set< BaseParticle * > & | ghostParticlesToBeDeleted | ) |
This step updates all communication lists and particles in the communication zone.
After all the mpi particles have received a position and velocity update, a check is required to see if the particle needs to be treated differently. Comments inside the code show all possible options. Note that when a particle needs to be deleted, it will not be deleted straight away, but added to a list to be deleted later. Additionally the location in the communication lists will not be emptied by assigning a nullptr to it. When all particles are considered this nullptrs are removed from the list, to ensure that the mirror list on another processor keeps the same order in particles. A) The particle moves from the Neighbour domain to the current domain B) The particle moves out of the communication zone, into the neighbouring domain C) The particle moves out of the communication zone, into the current domain D) The particle changes complexity: A special case where the particle required a re-evaluation in which boundary list it belongs
[in] | particleHandler | Handler that takes care of all particles in this domain |
Definition at line 1308 of file Domain.cc.
References boundaryList_, boundaryParticleList_, boundaryParticleListNeighbour_, containsParticle(), domainHandler_, findNearbyBoundaries(), BaseParticle::getCommunicationComplexity(), BaseHandler< T >::getDPMBase(), BaseObject::getId(), BaseHandler< T >::getObject(), DPMBase::getTime(), globalIndex_, localIndexToGlobalIndexTable_, logger, BaseParticle::setCommunicationComplexity(), BaseParticle::setInMPIDomain(), BaseParticle::setMPIParticle(), and VERBOSE.
Referenced by finalisePositionAndVelocityUpdate().
void Domain::updateParticleVelocity | ( | int | localIndex | ) |
Updates the velocity of particles which are flagged as MPIParticles.
Updates the translation but also the angular velocity
[in] | localIndex | an index to the boundary being updated |
Definition at line 1441 of file Domain.cc.
References boundaryParticleListNeighbour_, and updateVelocityDataReceive_.
Referenced by finalisePositionAndVelocityUpdate(), and finaliseVelocityUpdate().
void Domain::updateStatus | ( | std::set< BaseParticle * > & | ghostParticlesToBeDeleted | ) |
Updates particles that are not in the current domain and communicates newly added particles.
First the newly positions of the ghost particles are communicated, based on the new positions these particles will be updated accordingly. Secondly a new sweep through all particles is performed to see if we need to add any particles to the list which have moved into the communication zone. Particles that need to be removed from the simulation are stored in a vector and will be destroyed at a later point in the code.
[in,out] | ghostParticlesToBeDeleted | A list of particles which will be deleted afterwards |
Definition at line 1633 of file Domain.cc.
References finalisePositionAndVelocityUpdate(), MPIContainer::Instance(), preparePositionAndVelocityUpdate(), and MPIContainer::sync().
Referenced by DomainHandler::updateStatus().
void Domain::updateVelocity | ( | ) |
Updates MPI particle velocity at the half-time step.
: not in use
Definition at line 1648 of file Domain.cc.
References finaliseVelocityUpdate(), MPIContainer::Instance(), prepareVelocityUpdate(), and MPIContainer::sync().
Referenced by DomainHandler::updateVelocity().
|
overridevirtual |
This function does nothing.
Adds the object's id_ to the given ostream
[in] | os | ostream the id_ is added to |
Implements BaseObject.
|
private |
A list of flags corresponding to an inactive or active boundary.
Definition at line 491 of file Domain.h.
Referenced by constructor(), disableBoundaries(), disableBoundary(), Domain(), and getActiveBoundaryList().
|
private |
A list of indices of all the active boundaries.
Definition at line 497 of file Domain.h.
Referenced by cleanCommunicationLists(), constructor(), disableBoundaries(), Domain(), finaliseBoundaryDataTransmission(), finalisePositionAndVelocityUpdate(), finaliseVelocityUpdate(), findNewMPIInteractions(), flushParticles(), performBoundaryDataTransmission(), prepareBoundaryDataTransmission(), preparePositionAndVelocityUpdate(), prepareVelocityUpdate(), and updateParticles().
|
private |
Container that keeps a list of MPIParticles that are being received by this domain.
Definition at line 547 of file Domain.h.
Referenced by constructor(), Domain(), finaliseBoundaryDataTransmission(), performBoundaryDataTransmission(), and processReceivedBoundaryParticleData().
|
private |
Container that keeps a list of MPIParticles that are being send to other domains.
Definition at line 542 of file Domain.h.
Referenced by collectBoundaryParticleData(), constructor(), Domain(), finaliseBoundaryDataTransmission(), and performBoundaryDataTransmission().
|
private |
A list of boundary particles in the communication zone that are ghost particles on other domains.
Definition at line 502 of file Domain.h.
Referenced by cleanCommunicationLists(), constructor(), Domain(), flushParticles(), preparePositionAndVelocityUpdate(), prepareVelocityUpdate(), processSentBoundaryParticles(), and updateParticles().
|
private |
a list of ghost particles on the current domain, which are real on the neighbour domain
Definition at line 507 of file Domain.h.
Referenced by cleanCommunicationLists(), constructor(), Domain(), flushParticles(), getNumberOfMPIParticles(), getNumberOfTrueMPIParticles(), preparePositionAndVelocityUpdate(), prepareVelocityUpdate(), processReceivedBoundaryParticleData(), updateParticlePosition(), updateParticles(), and updateParticleVelocity().
|
private |
Pointer to the domain's DomainHandler container.
Definition at line 448 of file Domain.h.
Referenced by constructor(), createLookUpTable(), disableBoundaries(), Domain(), findNearbyBoundaries(), getHandler(), isInGreaterDomain(), isInInnerDomain(), setHandler(), and updateParticles().
|
private |
Maximum domain bounds in the x,y and z direction.
Definition at line 458 of file Domain.h.
Referenced by constructor(), containsParticle(), Domain(), findNearbyBoundaries(), getDomainMax(), setBounds(), and setRange().
|
private |
Minimum domain bounds in the x,y and z direction.
Definition at line 453 of file Domain.h.
Referenced by constructor(), containsParticle(), Domain(), findNearbyBoundaries(), getDomainMin(), setBounds(), and setRange().
|
private |
Global index of the domain in the mesh.
Definition at line 469 of file Domain.h.
Referenced by createLookUpTable(), getGlobalIndex(), sendAndReceiveCount(), sendAndReceiveMPIData(), and updateParticles().
|
private |
Vector containing the global mesh indices i,j,k.
Definition at line 474 of file Domain.h.
Referenced by createLookUpTable(), disableBoundaries(), Domain(), getGlobalMeshIndex(), and setGlobalMeshIndex().
|
private |
Container that keeps a void array of all the interaction data that is being received by this domain, interpretation is done by the interaction handler.
Definition at line 577 of file Domain.h.
Referenced by constructor(), Domain(), finaliseBoundaryDataTransmission(), performBoundaryDataTransmission(), and processReceivedInteractionData().
|
private |
Container that keeps a void array of all the interaction data that are being send to other domains, interpretation is done by the interaction handler.
Definition at line 572 of file Domain.h.
Referenced by collectInteractionData(), constructor(), Domain(), finaliseBoundaryDataTransmission(), and performBoundaryDataTransmission().
|
private |
look-up table to get the global index given a local domain index
Definition at line 480 of file Domain.h.
Referenced by constructor(), createLookUpTable(), Domain(), sendAndReceiveCount(), sendAndReceiveMPIData(), and updateParticles().
|
private |
look-up table to get the processor of the domain given a local domain index
Definition at line 486 of file Domain.h.
Referenced by constructor(), createLookUpTable(), Domain(), sendAndReceiveCount(), and sendAndReceiveMPIData().
|
private |
Middle of the closed domain.
Definition at line 463 of file Domain.h.
Referenced by Domain(), getMiddle(), setBounds(), and setRange().
|
private |
Array that queues particles that need to be transmitted.
Definition at line 512 of file Domain.h.
Referenced by collectBoundaryParticleData(), constructor(), Domain(), finaliseBoundaryDataTransmission(), findNewMPIInteractions(), findNewMPIParticle(), isInNewBoundaryParticleList(), prepareBoundaryDataTransmission(), and processSentBoundaryParticles().
|
private |
Array that queues interactions that need to be transmitted.
Definition at line 517 of file Domain.h.
Referenced by collectInteractionData(), constructor(), Domain(), finaliseBoundaryDataTransmission(), findNewMPIInteractions(), and prepareBoundaryDataTransmission().
|
private |
Counter that keeps track of the number of particles that are being received by this domain.
Definition at line 527 of file Domain.h.
Referenced by constructor(), Domain(), finaliseBoundaryDataTransmission(), performBoundaryDataTransmission(), prepareBoundaryDataTransmission(), preparePositionAndVelocityUpdate(), prepareVelocityUpdate(), and processReceivedBoundaryParticleData().
|
private |
Counter that keeps track of the number of particles that are being send to other domains.
Definition at line 522 of file Domain.h.
Referenced by constructor(), Domain(), finaliseBoundaryDataTransmission(), performBoundaryDataTransmission(), prepareBoundaryDataTransmission(), preparePositionAndVelocityUpdate(), and prepareVelocityUpdate().
|
private |
Counter that keeps track of the number of interactions that are being received by this domain.
Definition at line 537 of file Domain.h.
Referenced by constructor(), Domain(), finaliseBoundaryDataTransmission(), performBoundaryDataTransmission(), prepareBoundaryDataTransmission(), and processReceivedInteractionData().
|
private |
Counter that keeps track of the number of interactions that are being send to other domains.
Definition at line 532 of file Domain.h.
Referenced by constructor(), Domain(), finaliseBoundaryDataTransmission(), performBoundaryDataTransmission(), and prepareBoundaryDataTransmission().
|
private |
Rank of the domain which identifies to which processor it belongs.
Definition at line 582 of file Domain.h.
Referenced by constructor(), createLookUpTable(), Domain(), getRank(), and setRank().
|
private |
Container that keeps a list of MPIParticlePositions that are being received by this domain.
Definition at line 557 of file Domain.h.
Referenced by constructor(), Domain(), finalisePositionAndVelocityUpdate(), preparePositionAndVelocityUpdate(), and updateParticlePosition().
|
private |
Container that keeps a list of MPIParticlePositions that are being send to other domains.
Definition at line 552 of file Domain.h.
Referenced by constructor(), Domain(), finalisePositionAndVelocityUpdate(), and preparePositionAndVelocityUpdate().
|
private |
Container that keeps a list of MPIParticleVelocities that are being received by this domain.
Definition at line 567 of file Domain.h.
Referenced by constructor(), Domain(), finalisePositionAndVelocityUpdate(), finaliseVelocityUpdate(), preparePositionAndVelocityUpdate(), prepareVelocityUpdate(), and updateParticleVelocity().
|
private |
Container that keeps a list of MPIParticleVelocities that are being send to other domains.
Definition at line 562 of file Domain.h.
Referenced by constructor(), Domain(), finalisePositionAndVelocityUpdate(), finaliseVelocityUpdate(), preparePositionAndVelocityUpdate(), and prepareVelocityUpdate().