7#ifndef MAIA_PARTICLECOLLISION_H
8#define MAIA_PARTICLECOLLISION_H
19 friend class LPT<nDim>;
152 typename std::vector<LPTSpherical<nDim>>::const_iterator
partId;
maia::lpt::subDomainCollectorEllipsoid< nDim > * subDomainContentEllipsoid
void collisionCheckEECCD(lptEllipticleI, lptEllipticleI)
checks continuously for the overlaps of the two ellipsoids i2 and i3 assuming that they do not rotate...
MFloat checkBndryCross(MInt, lptParticleI, MFloat)
Checks crossing of boundary surface of the boundary cell.
void collisionCheckSphereEllipsoid(lptParticleI, lptEllipticleI)
Collision check for ellipsoids i2 and i3 calls the corresponding proactive or retroactive method.
void collisionCheckEEProActive(lptEllipticleI, lptEllipticleI)
Collision check for ellipsoids i2 and i3 checks and stores collision event this method works proactiv...
void geometryInteraction()
void detectPartColl(std::vector< LPTSpherical< nDim > > &partList, std::vector< LPTEllipsoidal< nDim > > &partListEllipsoid, const MFloat timeStep, const MFloat time)
Disables the following warnings with gcc: -Warray-bounds.
void writeCollData()
write collision data queue to Netcdf file (using parallel output)
void collisionCheckSECCD(lptParticleI, lptEllipticleI)
checks continuously for the overlaps of the sphere i2 and the ellipsoid i3 assuming that they do not ...
typename maia::lpt::ellipsListIteratorConst< nDim > lptEllipticleI
void collisionCheckSEP(lptParticleI, lptEllipticleI)
Collision check for sphere i1 and ellipsoid i2, specialized version of ellips ellips checks and store...
MFloat collisionCheck(lptParticleI, lptParticleI, MFloat)
Checks whether particles i and j collide after currCollTime, and returns collision time.
MFloat m_subDomainSize[3]
std::queue< collQueueElem > collQueue
void collisionCheckEERetroActive(lptEllipticleI, lptEllipticleI)
Collision check for ellipsoids i2 and i3 based on overlap criterion, and store collision event when f...
maia::lpt::subDomainCollector< nDim > * subDomainContent
void createMatrix_CCD(const MFloat(&MA)[16], const MFloat(&u1)[3], const MFloat(&invMB)[16], const MFloat(&u2)[3], const MFloat &a_2, const MFloat &c_2, MFloat(&n)[16], MFloat(&m)[5])
calculates M_A^T*(M_B^(-1))^T*B*(M_B^(-1))*M_A, write it the part independent of t in n and the other...
typename maia::grid::Proxy< nDim > GridProxy
MFloat testU_CCD(const MFloat &u, const MFloat &t4, const MFloat &t3, const MFloat &t2, const MFloat &t1, const MFloat &t0)
calculates the value of the forth order polynomial and returns it if positive other returns -1
typename maia::lpt::partListIteratorConst< nDim > lptParticleI
std::queue< collQueueElemEllipsoid > collQueueEllipsoid
void collisionCheckEllipsoidEllipsoid(lptEllipticleI, lptEllipticleI)
Collision check for ellipsoids i2 and i3 calls the corresponding proactive or retroactive method.
void collisionCheckSERetroActive(lptParticleI, lptEllipticleI)
Collision check for sphere i1 and ellipsoid i2 based on overlap criterion, and store collision event ...
std::list< collStruct< nDim > > collList
void writeCollEvent(MFloat collisionTime, MInt particle0, MInt particle1, MFloat diam0, MFloat diam1, MFloat dens0, MFloat dens1, MFloat relVel, MFloat meanVel, MFloat *x)
Add collision data to queue which is to be written.
MFloat checkStaticOverlap_CCD(const MFloat(&b_Matrix)[16], const MFloat(&A)[16], const MFloat(&m)[5], const MFloat &detMinusB, MFloat &t1)
calculates if there is a local maximum of det(A*(u-1)-u*B) in u for a fixed value of t and if the val...
void init()
Initialisation of collision model.
MFloat checkDynamicOverlap_CCD(const MFloat(&n)[16], const MFloat(&m)[5], MFloat t1, MFloat t2)
Performes BezierShot from "side", returns the first zero-crossing results in finding the roots of the...
MBool checkCSI_CCD(const MFloat(&A)[16], const MFloat(&b_Matrix)[16], const MFloat(&m)[5], const MFloat &detMinusB, MFloat &t1, MFloat &t2, MFloat &positive1, MFloat &positive2, MInt &iteration)
checks recursively if the ellipsoids are separated by subdividing the time intervals in smaller CSIs....
MFloat m_subDomainCoordOffset[3]
MBool m_includeEllipsoids
std::vector< LPTSpherical< nDim > >::iterator returnParticle1() const
std::vector< LPTSpherical< nDim > >::iterator returnParticle0() const
std::vector< LPTSpherical< nDim > >::const_iterator partId
MBool operator()(const collStruct< nDim > &obj)
compareParticleIds(typename std::vector< LPTSpherical< nDim > >::const_iterator aPartId)
typename std::vector< LPTSpherical< nDim > >::const_iterator partListIteratorConst
typename std::vector< LPTEllipsoidal< nDim > >::const_iterator ellipsListIteratorConst