11 std::bitset<TwoPowerD>
14 return adjacentCellWhichHostsParticle.to_ulong()
15 & marker.areAdjacentCellsLocal().to_ulong();
29 for (
int d = 0; d < Dimensions; d++) {
30 if (
periodicBC[d] and not(marker.isContainedInAdjacentCellsByDimension(x, d))) {
32 result(d) -= domainSize(d);
35 result(d) += domainSize(d);
53 for (
int d = 0; d < Dimensions; d++) {
55 if (tarch::la::smaller(result(d), domainOffset(d))) {
56 result(d) += domainSize(d);
58 if (tarch::la::greater(result(d), domainOffset(d) + domainSize(d))) {
59 result(d) -= domainSize(d);
std::bitset< Dimensions > periodicBC
bool equals(const Matrix< Rows, Cols, Scalar > &lhs, const Matrix< Rows, Cols, Scalar > &rhs, const Scalar &tolerance=NUMERICAL_ZERO_DIFFERENCE)
Compares to matrices on equality by means of a numerical accuracy.
tarch::la::Vector< Dimensions, double > mirrorParticleAlongPeriodicDomains(const tarch::la::Vector< Dimensions, double > &x, const peano4::datamanagement::VertexMarker &marker, const tarch::la::Vector< Dimensions, double > domainOffset, const tarch::la::Vector< Dimensions, double > domainSize, const std::bitset< Dimensions > periodicBC)
Mirror a particle along the periodic domain boundaries.
bool particleAssignedToVertexWillBeLocal(const tarch::la::Vector< Dimensions, double > &x, const peano4::datamanagement::VertexMarker &marker)
tarch::la::Vector< Dimensions, double > applyPeriodicBoundaryConditions(const tarch::la::Vector< Dimensions, double > &x, const tarch::la::Vector< Dimensions, double > domainOffset, const tarch::la::Vector< Dimensions, double > domainSize, const std::bitset< Dimensions > periodicBC)
Applies the periodic boundary condition on particle coordinates x.
std::bitset< TwoPowerD > getAdjacentCellsOwningParticle(const tarch::la::Vector< Dimensions, double > &x, const peano4::datamanagement::VertexMarker &marker)
Find out which adjacent cell will hold a particle.
Vertex marker to provide information about selected vertex.