walberla::mesa_pd::domain::IDomain Class Referenceabstract

Detailed Description

Abstract base class for the local subdomain.

#include <IDomain.h>

+ Inheritance diagram for walberla::mesa_pd::domain::IDomain:

Public Member Functions

virtual ~IDomain ()=default
 
virtual bool isContainedInProcessSubdomain (const uint_t rank, const Vec3 &pt) const =0
 Is the point pt located inside the subdomain of the process with rank rank? More...
 
virtual bool isContainedInLocalSubdomain (const Vec3 &, const real_t &) const
 Is the sphere located inside the local subdomain? More...
 
virtual int findContainingProcessRank (const Vec3 &pt) const =0
 Find the process rank which is responsible for pt. More...
 
virtual void periodicallyMapToDomain (Vec3 &pt) const =0
 Map the point pt periodically into the global domain. More...
 
virtual std::vector< uint_tgetNeighborProcesses () const =0
 Returns a vector of ranks from all neighboring processes. More...
 
virtual bool intersectsWithProcessSubdomain (const uint_t rank, const Vec3 &pt, const real_t &radius) const =0
 Does the sphere defined by pt and radius intersect with the subdomain of process rank? More...
 
virtual void correctParticlePosition (Vec3 &pt) const =0
 Correct the particle position in regard to the local subdomain. More...
 

Constructor & Destructor Documentation

◆ ~IDomain()

virtual walberla::mesa_pd::domain::IDomain::~IDomain ( )
virtualdefault

Member Function Documentation

◆ correctParticlePosition()

virtual void walberla::mesa_pd::domain::IDomain::correctParticlePosition ( Vec3 pt) const
pure virtual

Correct the particle position in regard to the local subdomain.

Implemented in walberla::mesa_pd::domain::BlockForestDomain, and walberla::mesa_pd::domain::InfiniteDomain.

◆ findContainingProcessRank()

virtual int walberla::mesa_pd::domain::IDomain::findContainingProcessRank ( const Vec3 pt) const
pure virtual

Find the process rank which is responsible for pt.

Attention
No global information is required, just check local process and adjacent processes (periodicity!).
Precondition
pt will be always inside the global domain.
Returns
Returns the process rank or -1 if cannot be found within next neighbors.

Implemented in walberla::mesa_pd::domain::BlockForestDomain, and walberla::mesa_pd::domain::InfiniteDomain.

◆ getNeighborProcesses()

virtual std::vector<uint_t> walberla::mesa_pd::domain::IDomain::getNeighborProcesses ( ) const
pure virtual

Returns a vector of ranks from all neighboring processes.

Implemented in walberla::mesa_pd::domain::BlockForestDomain, and walberla::mesa_pd::domain::InfiniteDomain.

◆ intersectsWithProcessSubdomain()

virtual bool walberla::mesa_pd::domain::IDomain::intersectsWithProcessSubdomain ( const uint_t  rank,
const Vec3 pt,
const real_t radius 
) const
pure virtual

Does the sphere defined by pt and radius intersect with the subdomain of process rank?

Parameters
ptcenter of the sphere
radiusradius of the sphere
Returns
If you have no information about the specified process return false.

Implemented in walberla::mesa_pd::domain::BlockForestDomain, and walberla::mesa_pd::domain::InfiniteDomain.

◆ isContainedInLocalSubdomain()

virtual bool walberla::mesa_pd::domain::IDomain::isContainedInLocalSubdomain ( const Vec3 ,
const real_t  
) const
inlinevirtual

Is the sphere located inside the local subdomain?

Attention
This function is used for an early out. Therefore returning true has to be correct, returning false can also be wrong.

Reimplemented in walberla::mesa_pd::domain::BlockForestDomain.

◆ isContainedInProcessSubdomain()

virtual bool walberla::mesa_pd::domain::IDomain::isContainedInProcessSubdomain ( const uint_t  rank,
const Vec3 pt 
) const
pure virtual

Is the point pt located inside the subdomain of the process with rank rank?

Attention
This function is supposed to check the local subdomain and next neighbor subdomains (periodicity). No global check is required!
Returns
If you have no information about the specified process return false.

Implemented in walberla::mesa_pd::domain::BlockForestDomain, and walberla::mesa_pd::domain::InfiniteDomain.

◆ periodicallyMapToDomain()

virtual void walberla::mesa_pd::domain::IDomain::periodicallyMapToDomain ( Vec3 pt) const
pure virtual

Map the point pt periodically into the global domain.

Postcondition
pt has to be located inside the global domain

Implemented in walberla::mesa_pd::domain::BlockForestDomain, and walberla::mesa_pd::domain::InfiniteDomain.


The documentation for this class was generated from the following file: