OpenLB 1.7
|
Classes | |
struct | ContactContainer |
struct | ContactProperties |
Object that stores properties which are necessary for the computation of contact forces N = number of different materials The material here is an identifier of a solid material with certain (mechanical) properties This material is something completely different from the lattice's material number, which is used to assign boundary conditions and dynamics. More... | |
struct | ContactProperty |
struct | MaterialProperties |
Class storing properties that are necessary for the computation of the contact orce N = number of different materials [0]: modulus of elasticity [1]: Poisson's ratio. More... | |
struct | particle_particle |
struct | particle_particle< T, PARTICLETYPE, ParticleContactArbitraryFromOverlapVolume< T, PARTICLETYPE::d, CONVEX >, WALLCONTACTTYPE, BBCORRECTIONMETHOD, CONVEX, useSDF > |
struct | particle_wall |
struct | particle_wall< T, PARTICLETYPE, PARTICLECONTACTTYPE, WallContactArbitraryFromOverlapVolume< T, PARTICLETYPE::d, CONVEX >, BBCORRECTIONMETHOD, CONVEX, useSDF > |
struct | ParticleContact |
struct | ParticleContactArbitraryFromOverlapVolume |
An object holding data for a contact which is described analog to Nassauer and Kuna (2013) More... | |
struct | WallContact |
struct | WallContactArbitraryFromOverlapVolume |
Functions | |
template<typename T > | |
constexpr T | evalEffectiveYoungModulus (T E1, T E2, T nu1, T nu2) |
template<typename T > | |
constexpr T | evalDampingFactor (const T coefficientOfRestitution, const T initialRelativeVelocityMagnitude) |
Calculates the damping factor according to Carvalho & Martins (2019) (10.1016/j.mechmachtheory.2019.03.028) | |
template<typename T , typename PARTICLETYPE > | |
T | evalContactDetectionDistance (Particle< T, PARTICLETYPE > &particle, T const physDeltaX) |
template<typename T > | |
T | evalCircumRadius (T const contactDetectionDistance, T const circumRadius, T const epsilon) |
template<typename T , typename PARTICLETYPE > | |
T | evalCircumRadius (Particle< T, PARTICLETYPE > &particle, T const physDeltaX, T const circumRadius, T const epsilon) |
template<typename T , typename PARTICLETYPE > | |
T | evalCircumRadius (Particle< T, PARTICLETYPE > &particle, T const physDeltaX) |
template<typename CONTACTTYPE > | |
void | cleanContacts (std::vector< CONTACTTYPE > &contacts) |
template<typename CONTACTTYPE > | |
void | resetResponsibleRank (CONTACTTYPE &contact) |
template<typename CONTACTTYPE > | |
bool | isResponsibleRankSet (CONTACTTYPE &contact) |
template<typename T , unsigned D> | |
void | updateMinMax (PhysR< T, D > &min, PhysR< T, D > &max, const PhysR< T, D > &pos) |
template<typename T , unsigned D> | |
unsigned short | domainDimension (PhysR< T, D > &min, PhysR< T, D > &max) |
template<typename T , unsigned N, typename F > | |
constexpr ContactProperties< T, N > | createContactProperties (F f) |
template<typename T , typename PARTICLECONTACTTYPE , typename WALLCONTACTTYPE > | |
void | communicateContacts (ContactContainer< T, PARTICLECONTACTTYPE, WALLCONTACTTYPE > &contactContainer) |
template<typename T , typename PARTICLETYPE , typename PARTICLECONTACTTYPE , typename WALLCONTACTTYPE , typename F > | |
void | accountForPeriodicParticleBoundary (SuperParticleSystem< T, PARTICLETYPE > &sParticleSystem, contact::ContactContainer< T, PARTICLECONTACTTYPE, WALLCONTACTTYPE > &contactContainer, const SuperGeometry< T, PARTICLETYPE::d > &sGeometry, F getSetupPeriodicity) |
update positions in contact to account for periodic boundaries | |
template<typename T , typename PARTICLETYPE , bool CONVEX> | |
std::unordered_set< int > | evalDestRanksForDetectionCommunication (ParticleContactArbitraryFromOverlapVolume< T, PARTICLETYPE::d, CONVEX > &contact, SuperParticleSystem< T, PARTICLETYPE > &sParticleSystem, const T deltaX, const Vector< bool, PARTICLETYPE::d > &periodicity) |
evaluate responsible ranks for particle-particle contact | |
template<typename T , typename PARTICLETYPE , bool CONVEX> | |
std::unordered_set< int > | evalDestRanksForDetectionCommunication (WallContactArbitraryFromOverlapVolume< T, PARTICLETYPE::d, CONVEX > &contact, SuperParticleSystem< T, PARTICLETYPE > &sParticleSystem, const T deltaX, const Vector< bool, PARTICLETYPE::d > &periodicity) |
evaluate responsible rank for solid boundary contact | |
template<typename T , typename PARTICLETYPE , bool CONVEX> | |
std::unordered_set< int > | evalDestRanksForPostContactTreatmentCommunication (ParticleContactArbitraryFromOverlapVolume< T, PARTICLETYPE::d, CONVEX > &contact, SuperParticleSystem< T, PARTICLETYPE > &sParticleSystem, const T deltaX, const Vector< bool, PARTICLETYPE::d > &periodicity) |
evaluate ranks that touch both particles of a particle-particle contact | |
template<typename T , typename PARTICLETYPE , bool CONVEX> | |
std::unordered_set< int > | evalDestRanksForPostContactTreatmentCommunication (WallContactArbitraryFromOverlapVolume< T, PARTICLETYPE::d, CONVEX > &contact, SuperParticleSystem< T, PARTICLETYPE > &sParticleSystem, const T deltaX, const Vector< bool, PARTICLETYPE::d > &periodicity) |
evaluate ranks that touch the particle of a particle-wall contact | |
template<typename T , typename PARTICLETYPE , typename CONTACTTYPE , bool CONVEX, bool SANITYCHECK = false> | |
void | receiveContact (ParticleContactArbitraryFromOverlapVolume< T, PARTICLETYPE::d, CONVEX > &newcontact, SuperParticleSystem< T, PARTICLETYPE > &sParticleSystem, std::vector< CONTACTTYPE > &contacts, int rankOrig) |
template<typename T , typename PARTICLETYPE , typename CONTACTTYPE , bool CONVEX, bool SANITYCHECK = false> | |
void | receiveContact (WallContactArbitraryFromOverlapVolume< T, PARTICLETYPE::d, CONVEX > &newcontact, SuperParticleSystem< T, PARTICLETYPE > &sParticleSystem, std::vector< CONTACTTYPE > &contacts, int rankOrig) |
template<typename T , typename PARTICLETYPE , typename CONTACTTYPE > | |
void | communicateParallelContacts (std::vector< CONTACTTYPE > &contacts, SuperParticleSystem< T, PARTICLETYPE > &sParticleSystem, const T deltaX, MPI_Comm contactDetectionComm, const Vector< bool, PARTICLETYPE::d > &periodicity) |
template<typename T , typename PARTICLETYPE , typename PARTICLECONTACTTYPE , typename WALLCONTACTTYPE > | |
void | communicateContactsParallel (ContactContainer< T, PARTICLECONTACTTYPE, WALLCONTACTTYPE > &contactContainer, SuperParticleSystem< T, PARTICLETYPE > &sParticleSystem, const T deltaX, MPI_Comm particleContactDetectionComm, MPI_Comm wallContactDetectionComm, const Vector< bool, PARTICLETYPE::d > &periodicity) |
template<typename T , typename PARTICLETYPE , typename CONTACTTYPE > | |
void | communicatePostContactTreatmentContacts (std::vector< CONTACTTYPE > &contacts, SuperParticleSystem< T, PARTICLETYPE > &sParticleSystem, const T deltaX, MPI_Comm postContactTreatmentComm, const Vector< bool, PARTICLETYPE::d > &periodicity) |
template<typename T , typename PARTICLETYPE , typename PARTICLECONTACTTYPE , typename WALLCONTACTTYPE > | |
void | communicatePostContactTreatmentContacts (ContactContainer< T, PARTICLECONTACTTYPE, WALLCONTACTTYPE > &contactContainer, SuperParticleSystem< T, PARTICLETYPE > &sParticleSystem, const T deltaX, MPI_Comm particlePostContactTreatmentComm, MPI_Comm wallPostContactTreatmentComm, const Vector< bool, PARTICLETYPE::d > &periodicity) |
It is necessary to communicate contacts so that no information is lost. | |
template<typename T , unsigned D> | |
int | getContactTreatmentResultsSerialSize () |
template<typename T , unsigned D> | |
void | extendContactTreatmentResultsDataMap (const std::size_t &globalParticleID, Vector< T, D > &force, Vector< T, utilities::dimensions::convert< D >::rotation > &torque, const int destRank, std::multimap< int, std::unique_ptr< std::uint8_t[]> > &dataMap) |
template<typename T , typename PARTICLETYPE > | |
void | receiveContactTreatmentResults (SuperParticleSystem< T, PARTICLETYPE > &sParticleSystem, MPI_Comm contactTreatmentComm, singleton::MpiNonBlockingHelper &mpiNbHelper) |
template<typename T , typename PARTICLETYPE > | |
void | communicateContactTreatmentResults (SuperParticleSystem< T, PARTICLETYPE > &particleSystem, std::multimap< int, std::unique_ptr< std::uint8_t[]> > &dataMap, MPI_Comm contactTreatmentComm) |
template<typename CONTACTTYPE > | |
auto | getContactIterator (std::vector< CONTACTTYPE > &contacts, const std::function< bool(const CONTACTTYPE &)> condition) |
std::array< std::size_t, 2 > | sortParticleIDs (const std::array< std::size_t, 2 > &ids) |
template<typename T , typename PARTICLETYPE , typename F > | |
void | unifyPositions (Particle< T, PARTICLETYPE > &particle1, Particle< T, PARTICLETYPE > &particle2, const PhysR< T, PARTICLETYPE::d > &cellMin, const PhysR< T, PARTICLETYPE::d > &cellMax, F getSetupPeriodicity, std::array< PhysR< T, PARTICLETYPE::d >, 2 > &positions, T deltaX) |
template<typename T , typename PARTICLETYPE , typename F > | |
PhysR< T, PARTICLETYPE::d > | unifyPosition (Particle< T, PARTICLETYPE > &particle, const PhysR< T, PARTICLETYPE::d > &cellMin, const PhysR< T, PARTICLETYPE::d > &cellMax, F getSetupPeriodicity, T deltaX) |
template<typename T , typename PARTICLETYPE , typename F > | |
PhysR< T, PARTICLETYPE::d > | evalContactPosition (Particle< T, PARTICLETYPE > &particle, const PhysR< T, PARTICLETYPE::d > &particlePos, const PhysR< T, PARTICLETYPE::d > &contactPos, const PhysR< T, PARTICLETYPE::d > &cellMin, const PhysR< T, PARTICLETYPE::d > &cellMax, F getSetupPeriodicity, T deltaX) |
template<typename PARTICLECONTACTTYPE , bool IS_INPUT_SORTED = false> | |
bool | particleContactConsistsOfIDs (PARTICLECONTACTTYPE &particleContact, const std::array< size_t, 2 > &ids) |
template<typename T , typename PARTICLETYPE , bool CONVEX, typename F > | |
void | updateContact (ParticleContactArbitraryFromOverlapVolume< T, PARTICLETYPE::d, CONVEX > &contact, Particle< T, PARTICLETYPE > &particle1, Particle< T, PARTICLETYPE > &particle2, const PhysR< T, PARTICLETYPE::d > &contactPos, const PhysR< T, PARTICLETYPE::d > &cellMin, const PhysR< T, PARTICLETYPE::d > &cellMax, F getSetupPeriodicity, T deltaX) |
template<typename T , typename PARTICLETYPE , bool CONVEX, typename F > | |
void | updateContact (WallContactArbitraryFromOverlapVolume< T, PARTICLETYPE::d, CONVEX > &contact, Particle< T, PARTICLETYPE > &particle, const PhysR< T, PARTICLETYPE::d > &contactPos, const PhysR< T, PARTICLETYPE::d > &cellMin, const PhysR< T, PARTICLETYPE::d > &cellMax, F getSetupPeriodicity, T deltaX) |
template<typename T , typename PARTICLETYPE , typename PARTICLECONTACTTYPE , typename WALLCONTACTTYPE , typename F > | |
void | updateContacts (ContactContainer< T, PARTICLECONTACTTYPE, WALLCONTACTTYPE > &contactContainer, std::array< std::size_t, 2 > &&ids, const PhysR< T, PARTICLETYPE::d > &pos, Particle< T, PARTICLETYPE > &particle1, Particle< T, PARTICLETYPE > &particle2, const PhysR< T, PARTICLETYPE::d > &cellMin, const PhysR< T, PARTICLETYPE::d > &cellMax, F getSetupPeriodicity, T deltaX) |
template<typename T , typename PARTICLETYPE , typename PARTICLECONTACTTYPE , typename WALLCONTACTTYPE , typename F > | |
void | updateContacts (ContactContainer< T, PARTICLECONTACTTYPE, WALLCONTACTTYPE > &contactContainer, size_t particleID, unsigned wallID, const PhysR< T, PARTICLETYPE::d > &pos, Particle< T, PARTICLETYPE > &particle, const PhysR< T, PARTICLETYPE::d > &cellMin, const PhysR< T, PARTICLETYPE::d > &cellMax, F getSetupPeriodicity, T deltaX) |
template<typename T , unsigned D, typename CONTACTTYPE > | |
constexpr T | evalCurrentDampingFactor (CONTACTTYPE &contact, const T coefficientOfRestitution, const Vector< T, D > &initialRelativeNormalVelocity) |
template<typename T , typename PARTICLETYPE > | |
constexpr Vector< T, PARTICLETYPE::d > | evalRelativeVelocity (Particle< T, PARTICLETYPE > &particleA, Particle< T, PARTICLETYPE > &particleB, const Vector< T, PARTICLETYPE::d > &position) |
Returns the relative velocity of two particles at a defined position. | |
template<typename T , typename PARTICLETYPE > | |
constexpr Vector< T, PARTICLETYPE::d > | evalRelativeVelocity (Particle< T, PARTICLETYPE > &particle, const Vector< T, PARTICLETYPE::d > &position) |
template<typename T , unsigned D> | |
constexpr Vector< T, D > | evalRelativeNormalVelocity (const Vector< T, D > &contactNormal, const Vector< T, D > &relVel) |
template<typename T , typename F > | |
constexpr void | forEachPosition (Vector< T, 3 > startPos, Vector< T, 3 > endPos, F f) |
template<typename T , typename F > | |
constexpr void | forEachPosition (Vector< T, 2 > startPos, Vector< T, 2 > endPos, F f) |
template<typename T , typename F > | |
constexpr void | forEachPositionWithBreak (Vector< T, 3 > startPos, Vector< T, 3 > endPos, F f) |
template<typename T , typename F > | |
constexpr void | forEachPositionWithBreak (Vector< T, 2 > startPos, Vector< T, 2 > endPos, F f) |
template<typename T , unsigned D> | |
constexpr Vector< T, D > | evalContactDeltaX (const Vector< T, D > &min, const Vector< T, D > &max, const T physDeltaX, const unsigned contactBoxResolutionPerDirection) |
template<typename T , typename PARTICLETYPE , typename PARTICLECONTACTTYPE , typename WALLCONTACTTYPE , bool CONVEX> | |
void | prepareForceCalculation (ContactContainer< T, PARTICLECONTACTTYPE, WALLCONTACTTYPE > &contactContainer) |
template<typename T , unsigned D> | |
Vector< T, D > | calcElasticAndViscousForce (T effectiveE, T k, T overlapVolume, T indentation, T dampingFactor, const Vector< T, D > &relVelNormal, const Vector< T, D > &contactNormal) |
Elastic and viscous force from overlap volume according to Nassauer & Kuna (2013) | |
template<typename T , unsigned D> | |
T | evalApproxSurface (const Vector< T, D > &normalizedNormal, const PhysR< T, D > &contactPhysDeltaX) |
Takes a normalized normal and the voxel sizes and approximates the corresponding surface. | |
template<typename T , unsigned D> | |
Vector< T, D > | getTangentialForceFromOverlapVolume (const Vector< T, D > &contactNormal, const T coefficientStaticFriction, const T coefficientKineticFriction, const T staticKineticTransitionVelocity, const T k, const Vector< T, D > &relVel, const Vector< T, D > &normalForce) |
template<typename T , unsigned D> | |
Vector< T, D > | getNormalForceFromOverlapVolume (const Vector< T, D > &contactNormal, const T indentation, const T overlapVolume, const T effectiveE, const T dampingFactor, const T k, const Vector< T, D > &relVel) |
template<typename T , typename PARTICLETYPE > | |
void | applyForceOnParticle (std::multimap< int, std::unique_ptr< std::uint8_t[]> > &dataMap, Particle< T, PARTICLETYPE > &particle, XParticleSystem< T, PARTICLETYPE > &particleSystem, const Vector< T, PARTICLETYPE::d > &contactPoint, const Vector< T, PARTICLETYPE::d > &normalForce, const Vector< T, PARTICLETYPE::d > &tangentialForce) |
template<typename T , typename PARTICLETYPE , typename CONTACTPROPERTIES , typename F = decltype(defaults::processContactForce<T, PARTICLETYPE::d>)> | |
void | applyForceFromOverlapVolume (std::multimap< int, std::unique_ptr< std::uint8_t[]> > &dataMap, Particle< T, PARTICLETYPE > &particleA, Particle< T, PARTICLETYPE > &particleB, XParticleSystem< T, PARTICLETYPE > &particleSystem, const PhysR< T, PARTICLETYPE::d > &contactPoint, const Vector< T, PARTICLETYPE::d > &contactNormal, const T indentation, const T overlapVolume, const Vector< T, PARTICLETYPE::d > &relVel, const T dampingFactor, const CONTACTPROPERTIES &contactProperties, T k, const std::size_t &particleAID, const std::size_t &particleBID, F processContactForce=defaults::processContactForce< T, PARTICLETYPE::d >) |
template<typename T , typename PARTICLETYPE , typename CONTACTPROPERTIES , typename F = decltype(defaults::processContactForce<T, PARTICLETYPE::d>)> | |
void | applyForceFromOverlapVolume (std::multimap< int, std::unique_ptr< std::uint8_t[]> > &dataMap, Particle< T, PARTICLETYPE > &particle, XParticleSystem< T, PARTICLETYPE > &particleSystem, SolidBoundary< T, PARTICLETYPE::d > &solidBoundary, const PhysR< T, PARTICLETYPE::d > &contactPoint, const Vector< T, PARTICLETYPE::d > &contactNormal, const T indentation, const T overlapVolume, const Vector< T, PARTICLETYPE::d > &relVel, const T dampingFactor, const CONTACTPROPERTIES &contactProperties, T k, const std::size_t &particleID, const std::size_t &wallID, F processContactForce=defaults::processContactForce< T, PARTICLETYPE::d >) |
template<typename T , unsigned D> | |
void | evalStartAndEndPos (Vector< long, D > &startPos, Vector< long, D > &endPos, const PhysR< T, D > &max, const PhysR< T, D > &min, const PhysR< T, D > &contactPhysDeltaX) |
template<typename T , unsigned D> | |
T | evalForceViaVolumeCoefficient (const Vector< T, D > &min, const Vector< T, D > &max, T overlapVolume) |
template<typename T > | |
constexpr T | evalForceViaVolumeCoefficient (const T contactVolume, const T contactSurface, const T indentationDepth) |
template<typename T , unsigned D, typename F1 , typename F2 , typename F3 , typename F4 , typename F5 > | |
void | processCell (const PhysR< T, D > &pos, const PhysR< T, D > &contactPhysDeltaX, PhysR< T, D > ¢er, Vector< T, D > &contactNormal, unsigned &volumeCellCount, T &surfaceCellCount, F1 isInside, F2 isOnSurface, F3 calcNormalA, F4 calcNormalB, F5 updateMinMax) |
template<typename T , unsigned D, typename F1 , typename F2 , typename F3 , typename F4 > | |
void | processContactViaVolume (const Vector< T, D > &min, const Vector< T, D > &max, T physDeltaX, unsigned contactBoxResolutionPerDirection, F1 resetContactBox, F2 processCellWrapped, F3 calculateIndentation, F4 applyForce) |
template<typename T , unsigned D, typename F1 > | |
bool | evalStartingPoint (const Vector< long, D > &startPos, const Vector< long, D > &endPos, const Vector< T, D > &contactPhysDeltaX, Vector< long, D > &currPos, F1 isInsideContact) |
template<typename T , unsigned D, typename F1 , typename F2 > | |
void | evalBoundingBoxRecursive (const Vector< long, D > &startPos, const Vector< long, D > &endPos, const Vector< T, D > &contactPhysDeltaX, const Vector< long, D > &currPos, const Vector< short, D > &dirIn, F1 isInsideContact, F2 updateMinMax) |
template<typename T , unsigned D, typename F1 , typename F2 , typename F3 > | |
void | correctBoundingBox (const PhysR< T, D > &min, const PhysR< T, D > &max, const T physDeltaX, const unsigned contactBoxResolutionPerDirection, F1 isInsideContact, F2 resetContactBox, F3 updateMinMax) |
template<typename T , unsigned D, typename F1 , typename F2 , typename F3 > | |
void | correctBoundingBoxNewContact (PhysR< T, D > min, PhysR< T, D > max, T physDeltaX, unsigned contactBoxResolutionPerDirection, F1 signedDistanceToIntersection, F2 resetContactBox, F3 updateMinMax) |
template<typename T , typename PARTICLETYPE , typename PARTICLECONTACTTYPE , typename WALLCONTACTTYPE , typename CONTACTPROPERTIES , unsigned BBCORRECTIONMETHOD = 0, typename F1 = decltype(defaults::periodicity<PARTICLETYPE::d>), typename F2 = decltype(defaults::processContactForce<T, PARTICLETYPE::d>)> | |
void | processContacts (SuperParticleSystem< T, PARTICLETYPE > &particleSystem, std::vector< SolidBoundary< T, PARTICLETYPE::d > > &solidBoundaries, ContactContainer< T, PARTICLECONTACTTYPE, WALLCONTACTTYPE > &contactContainer, const CONTACTPROPERTIES &contactProperties, const SuperGeometry< T, PARTICLETYPE::d > &sGeometry, MPI_Comm contactTreatmentComm, const unsigned contactBoxResolutionPerDirection=8, const T k=static_cast< T >(4./(3 *util::sqrt(M_PI))), F1 getSetupPeriodicity=defaults::periodicity< PARTICLETYPE::d >, F2 processContactForce=defaults::processContactForce< T, PARTICLETYPE::d >) |
template<typename T , typename PARTICLETYPE , typename PARTICLECONTACTTYPE , typename WALLCONTACTTYPE , typename CONTACTPROPERTIES , unsigned BBCORRECTIONMETHOD = 0, typename F1 = decltype(defaults::periodicity<PARTICLETYPE::d>), typename F2 = decltype(defaults::processContactForce<T, PARTICLETYPE::d>)> | |
void | processContacts (ParticleSystem< T, PARTICLETYPE > &particleSystem, std::vector< SolidBoundary< T, PARTICLETYPE::d > > &solidBoundaries, ContactContainer< T, PARTICLECONTACTTYPE, WALLCONTACTTYPE > &contactContainer, const CONTACTPROPERTIES &contactProperties, const SuperGeometry< T, PARTICLETYPE::d > &sGeometry, const unsigned contactBoxResolutionPerDirection=8, const T k=static_cast< T >(4./(3 *util::sqrt(M_PI))), F1 getSetupPeriodicity=defaults::periodicity< PARTICLETYPE::d >, F2 processContactForce=defaults::processContactForce< T, PARTICLETYPE::d >) |
void olb::particles::contact::accountForPeriodicParticleBoundary | ( | SuperParticleSystem< T, PARTICLETYPE > & | sParticleSystem, |
contact::ContactContainer< T, PARTICLECONTACTTYPE, WALLCONTACTTYPE > & | contactContainer, | ||
const SuperGeometry< T, PARTICLETYPE::d > & | sGeometry, | ||
F | getSetupPeriodicity ) |
update positions in contact to account for periodic boundaries
Definition at line 176 of file particleContactCommunicationFunctions.h.
References evalContactPosition(), olb::particles::communication::forParticlesInSuperParticleSystem(), olb::particles::SuperParticleSystem< T, PARTICLETYPE >::get(), olb::SuperStructure< T, D >::getCuboidGeometry(), olb::singleton::MpiManager::getRank(), olb::singleton::mpi(), olb::particles::contact::ContactContainer< T, PARTICLECONTACTTYPE, WALLCONTACTTYPE >::particleContacts, unifyPosition(), unifyPositions(), and olb::particles::contact::ContactContainer< T, PARTICLECONTACTTYPE, WALLCONTACTTYPE >::wallContacts.
void olb::particles::contact::applyForceFromOverlapVolume | ( | std::multimap< int, std::unique_ptr< std::uint8_t[]> > & | dataMap, |
Particle< T, PARTICLETYPE > & | particle, | ||
XParticleSystem< T, PARTICLETYPE > & | particleSystem, | ||
SolidBoundary< T, PARTICLETYPE::d > & | solidBoundary, | ||
const PhysR< T, PARTICLETYPE::d > & | contactPoint, | ||
const Vector< T, PARTICLETYPE::d > & | contactNormal, | ||
const T | indentation, | ||
const T | overlapVolume, | ||
const Vector< T, PARTICLETYPE::d > & | relVel, | ||
const T | dampingFactor, | ||
const CONTACTPROPERTIES & | contactProperties, | ||
T | k, | ||
const std::size_t & | particleID, | ||
const std::size_t & | wallID, | ||
F | processContactForce = defaults::processContactForce<T, PARTICLETYPE::d> ) |
Definition at line 448 of file particleContactForceFunctions.h.
References applyForceOnParticle(), olb::SolidBoundary< T, D >::getContactMaterial(), getNormalForceFromOverlapVolume(), and getTangentialForceFromOverlapVolume().
void olb::particles::contact::applyForceFromOverlapVolume | ( | std::multimap< int, std::unique_ptr< std::uint8_t[]> > & | dataMap, |
Particle< T, PARTICLETYPE > & | particleA, | ||
Particle< T, PARTICLETYPE > & | particleB, | ||
XParticleSystem< T, PARTICLETYPE > & | particleSystem, | ||
const PhysR< T, PARTICLETYPE::d > & | contactPoint, | ||
const Vector< T, PARTICLETYPE::d > & | contactNormal, | ||
const T | indentation, | ||
const T | overlapVolume, | ||
const Vector< T, PARTICLETYPE::d > & | relVel, | ||
const T | dampingFactor, | ||
const CONTACTPROPERTIES & | contactProperties, | ||
T | k, | ||
const std::size_t & | particleAID, | ||
const std::size_t & | particleBID, | ||
F | processContactForce = defaults::processContactForce<T, PARTICLETYPE::d> ) |
Definition at line 403 of file particleContactForceFunctions.h.
References applyForceOnParticle(), getNormalForceFromOverlapVolume(), and getTangentialForceFromOverlapVolume().
void olb::particles::contact::applyForceOnParticle | ( | std::multimap< int, std::unique_ptr< std::uint8_t[]> > & | dataMap, |
Particle< T, PARTICLETYPE > & | particle, | ||
XParticleSystem< T, PARTICLETYPE > & | particleSystem, | ||
const Vector< T, PARTICLETYPE::d > & | contactPoint, | ||
const Vector< T, PARTICLETYPE::d > & | normalForce, | ||
const Vector< T, PARTICLETYPE::d > & | tangentialForce ) |
Definition at line 310 of file particleContactForceFunctions.h.
References extendContactTreatmentResultsDataMap(), olb::particles::communication::forParticlesInSuperParticleSystem(), olb::singleton::MpiManager::getRank(), olb::particles::access::isContactComputationEnabled(), and olb::singleton::mpi().
Vector< T, D > olb::particles::contact::calcElasticAndViscousForce | ( | T | effectiveE, |
T | k, | ||
T | overlapVolume, | ||
T | indentation, | ||
T | dampingFactor, | ||
const Vector< T, D > & | relVelNormal, | ||
const Vector< T, D > & | contactNormal ) |
Elastic and viscous force from overlap volume according to Nassauer & Kuna (2013)
Definition at line 208 of file particleContactForceFunctions.h.
References olb::util::max(), olb::norm(), olb::util::sign(), and olb::util::sqrt().
void olb::particles::contact::cleanContacts | ( | std::vector< CONTACTTYPE > & | contacts | ) |
Definition at line 107 of file contactFunctions.h.
void olb::particles::contact::communicateContacts | ( | ContactContainer< T, PARTICLECONTACTTYPE, WALLCONTACTTYPE > & | contactContainer | ) |
Definition at line 38 of file particleContactCommunicationFunctions.h.
References olb::singleton::MpiManager::bCast(), olb::singleton::MpiManager::bossId(), olb::particles::contact::ContactContainer< T, PARTICLECONTACTTYPE, WALLCONTACTTYPE >::cleanContacts(), olb::particles::contact::ContactContainer< T, PARTICLECONTACTTYPE, WALLCONTACTTYPE >::combineContacts(), olb::singleton::MpiManager::getSize(), olb::singleton::MpiManager::isMainProcessor(), olb::singleton::mpi(), olb::particles::contact::ContactContainer< T, PARTICLECONTACTTYPE, WALLCONTACTTYPE >::particleContacts, olb::singleton::MpiManager::receive(), olb::singleton::MpiManager::send(), and olb::particles::contact::ContactContainer< T, PARTICLECONTACTTYPE, WALLCONTACTTYPE >::wallContacts.
void olb::particles::contact::communicateContactsParallel | ( | ContactContainer< T, PARTICLECONTACTTYPE, WALLCONTACTTYPE > & | contactContainer, |
SuperParticleSystem< T, PARTICLETYPE > & | sParticleSystem, | ||
const T | deltaX, | ||
MPI_Comm | particleContactDetectionComm, | ||
MPI_Comm | wallContactDetectionComm, | ||
const Vector< bool, PARTICLETYPE::d > & | periodicity ) |
Definition at line 743 of file particleContactCommunicationFunctions.h.
References communicateParallelContacts(), olb::particles::contact::ContactContainer< T, PARTICLECONTACTTYPE, WALLCONTACTTYPE >::particleContacts, and olb::particles::contact::ContactContainer< T, PARTICLECONTACTTYPE, WALLCONTACTTYPE >::wallContacts.
void olb::particles::contact::communicateContactTreatmentResults | ( | SuperParticleSystem< T, PARTICLETYPE > & | particleSystem, |
std::multimap< int, std::unique_ptr< std::uint8_t[]> > & | dataMap, | ||
MPI_Comm | contactTreatmentComm ) |
Definition at line 1052 of file particleContactCommunicationFunctions.h.
References olb::particles::communication::fillSendBuffer(), olb::particles::SuperParticleSystem< T, PARTICLETYPE >::getNeighbourRanks(), receiveContactTreatmentResults(), and olb::particles::communication::sendMappedData().
void olb::particles::contact::communicateParallelContacts | ( | std::vector< CONTACTTYPE > & | contacts, |
SuperParticleSystem< T, PARTICLETYPE > & | sParticleSystem, | ||
const T | deltaX, | ||
MPI_Comm | contactDetectionComm, | ||
const Vector< bool, PARTICLETYPE::d > & | periodicity ) |
Definition at line 667 of file particleContactCommunicationFunctions.h.
References evalDestRanksForDetectionCommunication(), olb::particles::communication::fillSendBuffer(), olb::particles::SuperParticleSystem< T, PARTICLETYPE >::getNeighbourRanks(), olb::singleton::MpiManager::getRank(), isResponsibleRankSet(), olb::singleton::mpi(), olb::particles::communication::receiveAndExecuteForData(), receiveContact(), resetResponsibleRank(), and olb::particles::communication::sendMappedData().
void olb::particles::contact::communicatePostContactTreatmentContacts | ( | ContactContainer< T, PARTICLECONTACTTYPE, WALLCONTACTTYPE > & | contactContainer, |
SuperParticleSystem< T, PARTICLETYPE > & | sParticleSystem, | ||
const T | deltaX, | ||
MPI_Comm | particlePostContactTreatmentComm, | ||
MPI_Comm | wallPostContactTreatmentComm, | ||
const Vector< bool, PARTICLETYPE::d > & | periodicity ) |
It is necessary to communicate contacts so that no information is lost.
Definition at line 832 of file particleContactCommunicationFunctions.h.
References communicatePostContactTreatmentContacts(), olb::particles::contact::ContactContainer< T, PARTICLECONTACTTYPE, WALLCONTACTTYPE >::particleContacts, and olb::particles::contact::ContactContainer< T, PARTICLECONTACTTYPE, WALLCONTACTTYPE >::wallContacts.
void olb::particles::contact::communicatePostContactTreatmentContacts | ( | std::vector< CONTACTTYPE > & | contacts, |
SuperParticleSystem< T, PARTICLETYPE > & | sParticleSystem, | ||
const T | deltaX, | ||
MPI_Comm | postContactTreatmentComm, | ||
const Vector< bool, PARTICLETYPE::d > & | periodicity ) |
Definition at line 764 of file particleContactCommunicationFunctions.h.
References cleanContacts(), evalDestRanksForPostContactTreatmentCommunication(), olb::particles::communication::fillSendBuffer(), olb::particles::SuperParticleSystem< T, PARTICLETYPE >::getNeighbourRanks(), olb::singleton::MpiManager::getRank(), olb::singleton::mpi(), olb::particles::communication::receiveAndExecuteForData(), receiveContact(), resetResponsibleRank(), and olb::particles::communication::sendMappedData().
void olb::particles::contact::correctBoundingBox | ( | const PhysR< T, D > & | min, |
const PhysR< T, D > & | max, | ||
const T | physDeltaX, | ||
const unsigned | contactBoxResolutionPerDirection, | ||
F1 | isInsideContact, | ||
F2 | resetContactBox, | ||
F3 | updateMinMax ) |
Definition at line 731 of file particleContactForceFunctions.h.
References evalBoundingBoxRecursive(), evalContactDeltaX(), evalStartAndEndPos(), evalStartingPoint(), and updateMinMax().
void olb::particles::contact::correctBoundingBoxNewContact | ( | PhysR< T, D > | min, |
PhysR< T, D > | max, | ||
T | physDeltaX, | ||
unsigned | contactBoxResolutionPerDirection, | ||
F1 | signedDistanceToIntersection, | ||
F2 | resetContactBox, | ||
F3 | updateMinMax ) |
Definition at line 766 of file particleContactForceFunctions.h.
References evalContactDeltaX(), evalStartAndEndPos(), forEachPosition(), olb::util::nearZero(), and updateMinMax().
|
constexpr |
Definition at line 98 of file contactProperties.h.
unsigned short olb::particles::contact::domainDimension | ( | PhysR< T, D > & | min, |
PhysR< T, D > & | max ) |
Definition at line 44 of file contactHelpers.h.
T olb::particles::contact::evalApproxSurface | ( | const Vector< T, D > & | normalizedNormal, |
const PhysR< T, D > & | contactPhysDeltaX ) |
Takes a normalized normal and the voxel sizes and approximates the corresponding surface.
Definition at line 227 of file particleContactForceFunctions.h.
void olb::particles::contact::evalBoundingBoxRecursive | ( | const Vector< long, D > & | startPos, |
const Vector< long, D > & | endPos, | ||
const Vector< T, D > & | contactPhysDeltaX, | ||
const Vector< long, D > & | currPos, | ||
const Vector< short, D > & | dirIn, | ||
F1 | isInsideContact, | ||
F2 | updateMinMax ) |
Definition at line 687 of file particleContactForceFunctions.h.
References olb::abs(), evalBoundingBoxRecursive(), forEachPosition(), olb::norm(), and updateMinMax().
T olb::particles::contact::evalCircumRadius | ( | Particle< T, PARTICLETYPE > & | particle, |
T const | physDeltaX ) |
Definition at line 98 of file contactFunctions.h.
References evalCircumRadius().
T olb::particles::contact::evalCircumRadius | ( | Particle< T, PARTICLETYPE > & | particle, |
T const | physDeltaX, | ||
T const | circumRadius, | ||
T const | epsilon ) |
Definition at line 89 of file contactFunctions.h.
References evalCircumRadius(), and evalContactDetectionDistance().
T olb::particles::contact::evalCircumRadius | ( | T const | contactDetectionDistance, |
T const | circumRadius, | ||
T const | epsilon ) |
Definition at line 82 of file contactFunctions.h.
References olb::util::max().
|
constexpr |
Definition at line 148 of file particleContactForceFunctions.h.
References olb::util::min(), and olb::util::nearZero().
T olb::particles::contact::evalContactDetectionDistance | ( | Particle< T, PARTICLETYPE > & | particle, |
T const | physDeltaX ) |
Definition at line 59 of file contactFunctions.h.
References olb::particles::access::getEnlargementForContact().
PhysR< T, PARTICLETYPE::d > olb::particles::contact::evalContactPosition | ( | Particle< T, PARTICLETYPE > & | particle, |
const PhysR< T, PARTICLETYPE::d > & | particlePos, | ||
const PhysR< T, PARTICLETYPE::d > & | contactPos, | ||
const PhysR< T, PARTICLETYPE::d > & | cellMin, | ||
const PhysR< T, PARTICLETYPE::d > & | cellMax, | ||
F | getSetupPeriodicity, | ||
T | deltaX ) |
Definition at line 162 of file particleContactDetectionFunctions.h.
References olb::particles::isPeriodic(), olb::util::max(), olb::particles::communication::movePositionToEnd(), and olb::particles::communication::movePositionToStart().
|
constexpr |
Definition at line 52 of file particleContactForceFunctions.h.
References olb::norm().
|
constexpr |
Calculates the damping factor according to Carvalho & Martins (2019) (10.1016/j.mechmachtheory.2019.03.028)
Definition at line 46 of file contactFunctions.h.
std::unordered_set< int > olb::particles::contact::evalDestRanksForDetectionCommunication | ( | ParticleContactArbitraryFromOverlapVolume< T, PARTICLETYPE::d, CONVEX > & | contact, |
SuperParticleSystem< T, PARTICLETYPE > & | sParticleSystem, | ||
const T | deltaX, | ||
const Vector< bool, PARTICLETYPE::d > & | periodicity ) |
evaluate responsible ranks for particle-particle contact
Definition at line 257 of file particleContactCommunicationFunctions.h.
References evalCircumRadius(), olb::particles::communication::forParticlesInSuperParticleSystem(), olb::particles::contact::ParticleContactArbitraryFromOverlapVolume< T, D, CONVEX >::getIDs(), olb::SuperStructure< T, D >::getLoadBalancer(), olb::particles::access::getPosition(), olb::singleton::MpiManager::getRank(), olb::particles::contact::ParticleContactArbitraryFromOverlapVolume< T, D, CONVEX >::getResponsibleRank(), olb::particles::SuperParticleSystem< T, PARTICLETYPE >::getSuperStructure(), olb::particles::communication::getSurfaceTouchingICs(), olb::singleton::mpi(), olb::particles::contact::ParticleContactArbitraryFromOverlapVolume< T, D, CONVEX >::resetMinMax(), resetResponsibleRank(), and olb::particles::contact::ParticleContactArbitraryFromOverlapVolume< T, D, CONVEX >::setResponsibleRank().
std::unordered_set< int > olb::particles::contact::evalDestRanksForDetectionCommunication | ( | WallContactArbitraryFromOverlapVolume< T, PARTICLETYPE::d, CONVEX > & | contact, |
SuperParticleSystem< T, PARTICLETYPE > & | sParticleSystem, | ||
const T | deltaX, | ||
const Vector< bool, PARTICLETYPE::d > & | periodicity ) |
evaluate responsible rank for solid boundary contact
Definition at line 383 of file particleContactCommunicationFunctions.h.
References olb::particles::communication::forParticlesInSuperParticleSystem(), olb::SuperStructure< T, D >::getLoadBalancer(), olb::particles::contact::WallContactArbitraryFromOverlapVolume< T, D, CONVEX >::getParticleID(), olb::singleton::MpiManager::getRank(), olb::particles::SuperParticleSystem< T, PARTICLETYPE >::getSuperStructure(), olb::particles::contact::WallContactArbitraryFromOverlapVolume< T, D, CONVEX >::getWallID(), olb::singleton::mpi(), and olb::particles::contact::WallContactArbitraryFromOverlapVolume< T, D, CONVEX >::setResponsibleRank().
std::unordered_set< int > olb::particles::contact::evalDestRanksForPostContactTreatmentCommunication | ( | ParticleContactArbitraryFromOverlapVolume< T, PARTICLETYPE::d, CONVEX > & | contact, |
SuperParticleSystem< T, PARTICLETYPE > & | sParticleSystem, | ||
const T | deltaX, | ||
const Vector< bool, PARTICLETYPE::d > & | periodicity ) |
evaluate ranks that touch both particles of a particle-particle contact
Definition at line 429 of file particleContactCommunicationFunctions.h.
References evalCircumRadius(), olb::particles::communication::forParticlesInSuperParticleSystem(), olb::particles::communication::getCuboid(), olb::particles::contact::ParticleContactArbitraryFromOverlapVolume< T, D, CONVEX >::getIDs(), olb::SuperStructure< T, D >::getLoadBalancer(), olb::particles::access::getPosition(), olb::singleton::MpiManager::getRank(), olb::particles::contact::ParticleContactArbitraryFromOverlapVolume< T, D, CONVEX >::getResponsibleRank(), olb::particles::SuperParticleSystem< T, PARTICLETYPE >::getSuperStructure(), olb::particles::communication::getSurfaceTouchingICs(), and olb::singleton::mpi().
std::unordered_set< int > olb::particles::contact::evalDestRanksForPostContactTreatmentCommunication | ( | WallContactArbitraryFromOverlapVolume< T, PARTICLETYPE::d, CONVEX > & | contact, |
SuperParticleSystem< T, PARTICLETYPE > & | sParticleSystem, | ||
const T | deltaX, | ||
const Vector< bool, PARTICLETYPE::d > & | periodicity ) |
evaluate ranks that touch the particle of a particle-wall contact
Definition at line 494 of file particleContactCommunicationFunctions.h.
References evalCircumRadius(), olb::particles::communication::forParticlesInSuperParticleSystem(), olb::particles::communication::getCuboid(), olb::SuperStructure< T, D >::getLoadBalancer(), olb::particles::contact::WallContactArbitraryFromOverlapVolume< T, D, CONVEX >::getParticleID(), olb::particles::access::getPosition(), olb::particles::contact::WallContactArbitraryFromOverlapVolume< T, D, CONVEX >::getResponsibleRank(), olb::particles::SuperParticleSystem< T, PARTICLETYPE >::getSuperStructure(), olb::particles::communication::getSurfaceTouchingICs(), and olb::particles::contact::WallContactArbitraryFromOverlapVolume< T, D, CONVEX >::getWallID().
|
constexpr |
Definition at line 38 of file contactFunctions.h.
|
constexpr |
Definition at line 522 of file particleContactForceFunctions.h.
References olb::util::exp().
T olb::particles::contact::evalForceViaVolumeCoefficient | ( | const Vector< T, D > & | min, |
const Vector< T, D > & | max, | ||
T | overlapVolume ) |
Definition at line 504 of file particleContactForceFunctions.h.
References olb::util::log(), M_PI, olb::util::max(), olb::util::pow(), and olb::util::sqrt().
|
constexpr |
Definition at line 83 of file particleContactForceFunctions.h.
|
constexpr |
Definition at line 75 of file particleContactForceFunctions.h.
References olb::particles::dynamics::calculateLocalVelocity().
|
constexpr |
Returns the relative velocity of two particles at a defined position.
Definition at line 65 of file particleContactForceFunctions.h.
References olb::particles::dynamics::calculateLocalVelocity().
void olb::particles::contact::evalStartAndEndPos | ( | Vector< long, D > & | startPos, |
Vector< long, D > & | endPos, | ||
const PhysR< T, D > & | max, | ||
const PhysR< T, D > & | min, | ||
const PhysR< T, D > & | contactPhysDeltaX ) |
Definition at line 493 of file particleContactForceFunctions.h.
References olb::util::ceil(), and olb::util::floor().
bool olb::particles::contact::evalStartingPoint | ( | const Vector< long, D > & | startPos, |
const Vector< long, D > & | endPos, | ||
const Vector< T, D > & | contactPhysDeltaX, | ||
Vector< long, D > & | currPos, | ||
F1 | isInsideContact ) |
Definition at line 663 of file particleContactForceFunctions.h.
References forEachPositionWithBreak().
void olb::particles::contact::extendContactTreatmentResultsDataMap | ( | const std::size_t & | globalParticleID, |
Vector< T, D > & | force, | ||
Vector< T, utilities::dimensions::convert< D >::rotation > & | torque, | ||
const int | destRank, | ||
std::multimap< int, std::unique_ptr< std::uint8_t[]> > & | dataMap ) |
Definition at line 897 of file particleContactCommunicationFunctions.h.
References olb::singleton::MpiManager::getRank(), olb::singleton::mpi(), olb::ConcreteCommunicatable< COMMUNICATEE >::serialize(), and olb::ConcreteCommunicatable< COMMUNICATEE >::size().
|
constexpr |
Definition at line 103 of file particleContactForceFunctions.h.
|
constexpr |
Definition at line 90 of file particleContactForceFunctions.h.
|
constexpr |
Definition at line 132 of file particleContactForceFunctions.h.
|
constexpr |
Definition at line 114 of file particleContactForceFunctions.h.
auto olb::particles::contact::getContactIterator | ( | std::vector< CONTACTTYPE > & | contacts, |
const std::function< bool(const CONTACTTYPE &)> | condition ) |
Definition at line 38 of file particleContactDetectionFunctions.h.
int olb::particles::contact::getContactTreatmentResultsSerialSize | ( | ) |
Definition at line 857 of file particleContactCommunicationFunctions.h.
References olb::ConcreteCommunicatable< COMMUNICATEE >::size().
Vector< T, D > olb::particles::contact::getNormalForceFromOverlapVolume | ( | const Vector< T, D > & | contactNormal, |
const T | indentation, | ||
const T | overlapVolume, | ||
const T | effectiveE, | ||
const T | dampingFactor, | ||
const T | k, | ||
const Vector< T, D > & | relVel ) |
Definition at line 298 of file particleContactForceFunctions.h.
References calcElasticAndViscousForce(), and evalRelativeNormalVelocity().
Vector< T, D > olb::particles::contact::getTangentialForceFromOverlapVolume | ( | const Vector< T, D > & | contactNormal, |
const T | coefficientStaticFriction, | ||
const T | coefficientKineticFriction, | ||
const T | staticKineticTransitionVelocity, | ||
const T | k, | ||
const Vector< T, D > & | relVel, | ||
const Vector< T, D > & | normalForce ) |
Definition at line 260 of file particleContactForceFunctions.h.
References evalRelativeNormalVelocity(), olb::norm(), and olb::util::pow().
bool olb::particles::contact::isResponsibleRankSet | ( | CONTACTTYPE & | contact | ) |
Definition at line 123 of file contactFunctions.h.
bool olb::particles::contact::particleContactConsistsOfIDs | ( | PARTICLECONTACTTYPE & | particleContact, |
const std::array< size_t, 2 > & | ids ) |
Definition at line 198 of file particleContactDetectionFunctions.h.
void olb::particles::contact::prepareForceCalculation | ( | ContactContainer< T, PARTICLECONTACTTYPE, WALLCONTACTTYPE > & | contactContainer | ) |
Definition at line 192 of file particleContactForceFunctions.h.
References communicateContacts().
void olb::particles::contact::processCell | ( | const PhysR< T, D > & | pos, |
const PhysR< T, D > & | contactPhysDeltaX, | ||
PhysR< T, D > & | center, | ||
Vector< T, D > & | contactNormal, | ||
unsigned & | volumeCellCount, | ||
T & | surfaceCellCount, | ||
F1 | isInside, | ||
F2 | isOnSurface, | ||
F3 | calcNormalA, | ||
F4 | calcNormalB, | ||
F5 | updateMinMax ) |
Definition at line 537 of file particleContactForceFunctions.h.
References olb::util::average(), evalApproxSurface(), olb::util::nearZero(), olb::norm(), olb::normalize(), and updateMinMax().
void olb::particles::contact::processContacts | ( | ParticleSystem< T, PARTICLETYPE > & | particleSystem, |
std::vector< SolidBoundary< T, PARTICLETYPE::d > > & | solidBoundaries, | ||
ContactContainer< T, PARTICLECONTACTTYPE, WALLCONTACTTYPE > & | contactContainer, | ||
const CONTACTPROPERTIES & | contactProperties, | ||
const SuperGeometry< T, PARTICLETYPE::d > & | sGeometry, | ||
const unsigned | contactBoxResolutionPerDirection = 8, | ||
const T | k = static_cast<T>(4. / (3 * util::sqrt(M_PI))), | ||
F1 | getSetupPeriodicity = defaults::periodicity<PARTICLETYPE::d>, | ||
F2 | processContactForce = defaults::processContactForce<T, PARTICLETYPE::d> ) |
Definition at line 1657 of file particleContactForceFunctions.h.
void olb::particles::contact::processContacts | ( | SuperParticleSystem< T, PARTICLETYPE > & | particleSystem, |
std::vector< SolidBoundary< T, PARTICLETYPE::d > > & | solidBoundaries, | ||
ContactContainer< T, PARTICLECONTACTTYPE, WALLCONTACTTYPE > & | contactContainer, | ||
const CONTACTPROPERTIES & | contactProperties, | ||
const SuperGeometry< T, PARTICLETYPE::d > & | sGeometry, | ||
MPI_Comm | contactTreatmentComm, | ||
const unsigned | contactBoxResolutionPerDirection = 8, | ||
const T | k = static_cast<T>(4. / (3 * util::sqrt(M_PI))), | ||
F1 | getSetupPeriodicity = defaults::periodicity<PARTICLETYPE::d>, | ||
F2 | processContactForce = defaults::processContactForce<T, PARTICLETYPE::d> ) |
Definition at line 1609 of file particleContactForceFunctions.h.
void olb::particles::contact::processContactViaVolume | ( | const Vector< T, D > & | min, |
const Vector< T, D > & | max, | ||
T | physDeltaX, | ||
unsigned | contactBoxResolutionPerDirection, | ||
F1 | resetContactBox, | ||
F2 | processCellWrapped, | ||
F3 | calculateIndentation, | ||
F4 | applyForce ) |
Definition at line 588 of file particleContactForceFunctions.h.
References evalContactDeltaX(), evalStartAndEndPos(), forEachPosition(), olb::util::max(), olb::util::nearZero(), olb::norm(), olb::normalize(), olb::util::pow(), and olb::util::sqrt().
void olb::particles::contact::receiveContact | ( | ParticleContactArbitraryFromOverlapVolume< T, PARTICLETYPE::d, CONVEX > & | newcontact, |
SuperParticleSystem< T, PARTICLETYPE > & | sParticleSystem, | ||
std::vector< CONTACTTYPE > & | contacts, | ||
int | rankOrig ) |
Definition at line 546 of file particleContactCommunicationFunctions.h.
References olb::particles::communication::forParticlesInSuperParticleSystem(), getContactIterator(), olb::particles::contact::ParticleContactArbitraryFromOverlapVolume< T, D, CONVEX >::getIDs(), olb::singleton::MpiManager::getRank(), olb::particles::contact::ParticleContactArbitraryFromOverlapVolume< T, D, CONVEX >::getResponsibleRank(), olb::singleton::mpi(), and particleContactConsistsOfIDs().
void olb::particles::contact::receiveContact | ( | WallContactArbitraryFromOverlapVolume< T, PARTICLETYPE::d, CONVEX > & | newcontact, |
SuperParticleSystem< T, PARTICLETYPE > & | sParticleSystem, | ||
std::vector< CONTACTTYPE > & | contacts, | ||
int | rankOrig ) |
Definition at line 612 of file particleContactCommunicationFunctions.h.
References olb::particles::communication::forParticlesInSuperParticleSystem(), getContactIterator(), olb::singleton::MpiManager::getRank(), and olb::singleton::mpi().
void olb::particles::contact::receiveContactTreatmentResults | ( | SuperParticleSystem< T, PARTICLETYPE > & | sParticleSystem, |
MPI_Comm | contactTreatmentComm, | ||
singleton::MpiNonBlockingHelper & | mpiNbHelper ) |
Definition at line 952 of file particleContactCommunicationFunctions.h.
References olb::ConcreteCommunicatable< COMMUNICATEE >::deserialize(), olb::particles::communication::forParticlesInSuperParticleSystem(), olb::particles::SuperParticleSystem< T, PARTICLETYPE >::getNeighbourRanks(), olb::singleton::MpiManager::getRank(), olb::singleton::mpi(), olb::particles::communication::receiveAndExecuteForData(), and olb::ConcreteCommunicatable< COMMUNICATEE >::size().
void olb::particles::contact::resetResponsibleRank | ( | CONTACTTYPE & | contact | ) |
Definition at line 117 of file contactFunctions.h.
std::array< std::size_t, 2 > olb::particles::contact::sortParticleIDs | ( | const std::array< std::size_t, 2 > & | ids | ) |
Definition at line 49 of file particleContactDetectionFunctions.h.
References olb::util::max(), and olb::util::min().
PhysR< T, PARTICLETYPE::d > olb::particles::contact::unifyPosition | ( | Particle< T, PARTICLETYPE > & | particle, |
const PhysR< T, PARTICLETYPE::d > & | cellMin, | ||
const PhysR< T, PARTICLETYPE::d > & | cellMax, | ||
F | getSetupPeriodicity, | ||
T | deltaX ) |
Definition at line 124 of file particleContactDetectionFunctions.h.
References olb::particles::access::getPosition(), olb::particles::isPeriodic(), olb::util::max(), and olb::particles::communication::movePositionToStart().
void olb::particles::contact::unifyPositions | ( | Particle< T, PARTICLETYPE > & | particle1, |
Particle< T, PARTICLETYPE > & | particle2, | ||
const PhysR< T, PARTICLETYPE::d > & | cellMin, | ||
const PhysR< T, PARTICLETYPE::d > & | cellMax, | ||
F | getSetupPeriodicity, | ||
std::array< PhysR< T, PARTICLETYPE::d >, 2 > & | positions, | ||
T | deltaX ) |
Definition at line 56 of file particleContactDetectionFunctions.h.
References olb::particles::access::getPosition(), olb::particles::isPeriodic(), olb::util::max(), olb::particles::communication::movePositionToEnd(), and olb::particles::communication::movePositionToStart().
void olb::particles::contact::updateContact | ( | ParticleContactArbitraryFromOverlapVolume< T, PARTICLETYPE::d, CONVEX > & | contact, |
Particle< T, PARTICLETYPE > & | particle1, | ||
Particle< T, PARTICLETYPE > & | particle2, | ||
const PhysR< T, PARTICLETYPE::d > & | contactPos, | ||
const PhysR< T, PARTICLETYPE::d > & | cellMin, | ||
const PhysR< T, PARTICLETYPE::d > & | cellMax, | ||
F | getSetupPeriodicity, | ||
T | deltaX ) |
Definition at line 215 of file particleContactDetectionFunctions.h.
References evalContactPosition(), and unifyPositions().
void olb::particles::contact::updateContact | ( | WallContactArbitraryFromOverlapVolume< T, PARTICLETYPE::d, CONVEX > & | contact, |
Particle< T, PARTICLETYPE > & | particle, | ||
const PhysR< T, PARTICLETYPE::d > & | contactPos, | ||
const PhysR< T, PARTICLETYPE::d > & | cellMin, | ||
const PhysR< T, PARTICLETYPE::d > & | cellMax, | ||
F | getSetupPeriodicity, | ||
T | deltaX ) |
Definition at line 237 of file particleContactDetectionFunctions.h.
References evalContactPosition(), and unifyPosition().
void olb::particles::contact::updateContacts | ( | ContactContainer< T, PARTICLECONTACTTYPE, WALLCONTACTTYPE > & | contactContainer, |
size_t | particleID, | ||
unsigned | wallID, | ||
const PhysR< T, PARTICLETYPE::d > & | pos, | ||
Particle< T, PARTICLETYPE > & | particle, | ||
const PhysR< T, PARTICLETYPE::d > & | cellMin, | ||
const PhysR< T, PARTICLETYPE::d > & | cellMax, | ||
F | getSetupPeriodicity, | ||
T | deltaX ) |
Definition at line 304 of file particleContactDetectionFunctions.h.
References getContactIterator(), updateContact(), and olb::particles::contact::ContactContainer< T, PARTICLECONTACTTYPE, WALLCONTACTTYPE >::wallContacts.
void olb::particles::contact::updateContacts | ( | ContactContainer< T, PARTICLECONTACTTYPE, WALLCONTACTTYPE > & | contactContainer, |
std::array< std::size_t, 2 > && | ids, | ||
const PhysR< T, PARTICLETYPE::d > & | pos, | ||
Particle< T, PARTICLETYPE > & | particle1, | ||
Particle< T, PARTICLETYPE > & | particle2, | ||
const PhysR< T, PARTICLETYPE::d > & | cellMin, | ||
const PhysR< T, PARTICLETYPE::d > & | cellMax, | ||
F | getSetupPeriodicity, | ||
T | deltaX ) |
Definition at line 256 of file particleContactDetectionFunctions.h.
References getContactIterator(), particleContactConsistsOfIDs(), olb::particles::contact::ContactContainer< T, PARTICLECONTACTTYPE, WALLCONTACTTYPE >::particleContacts, and updateContact().
void olb::particles::contact::updateMinMax | ( | PhysR< T, D > & | min, |
PhysR< T, D > & | max, | ||
const PhysR< T, D > & | pos ) |
Definition at line 34 of file contactHelpers.h.
References olb::util::max(), and olb::util::min().