Namespaces | |
bg | |
ccd | |
communication | |
cr | |
debug | |
fcd | |
internal | |
raytracing | |
Classes | |
class | BodyIterator |
class | BodyStatistics |
class | BodyStorage |
Body storage of the rigid body simulation world. More... | |
class | Box |
Box geometry. More... | |
class | Capsule |
Capsule geometry. More... | |
class | ConstRigidBodyCastIterator |
class | ConstRigidBodyIterator |
class | Contact |
Contact between rigid bodies. More... | |
class | Copper |
Specification of the material copper. More... | |
class | CylindricalBoundary |
class | DefaultBodyVTKOutput |
class | DoubleCast |
struct | DoubleCast< TypeListA, TypeListB, Functor, ReturnType, -1 > |
class | Ellipsoid |
Base class for the Ellipsoid geometry. More... | |
class | EllipsoidVtkOutput |
class | Fir |
Specification of the material fir. More... | |
class | GeomPrimitive |
Base class for all primitive geometries. More... | |
class | Granite |
Specification of the material granite. More... | |
class | Iron |
Specification of the material iron. More... | |
class | LocalBodyIterator |
class | Material |
Rigid body material. More... | |
class | MPIRigidBodyTrait |
Base class for a specialization of the RigidBodyTrait class template for MPI parallel solvers. More... | |
class | Oak |
Specification of the material oak. More... | |
struct | Owner |
class | Plane |
Plane geometry. More... | |
class | RigidBody |
class | RigidBodyCastIterator |
Dynamic cast iterator for polymorphic pointer vectors. More... | |
class | RigidBodyIterator |
Implementation of an iterator for pointer vectors. More... | |
struct | SetBodyTypeIDs |
struct | SetBodyTypeIDs< BodyTypeTuple, -1 > |
class | ShadowBodyIterator |
class | SingleCast |
struct | SingleCast< TypeList, Functor, ReturnType, -1 > |
class | Sphere |
Base class for the sphere geometry. More... | |
class | SphereVtkOutput |
class | Squirmer |
class | StorageDataHandling |
struct | StorageSelect |
struct | StorageType |
Class enum for BodyStorages. More... | |
struct | Thresholds |
Collection of numerical threshold values. More... | |
class | Union |
Base class for the union geometry, a rigid assembly of bodies. More... | |
Typedefs | |
using | Vec2 = math::Vector2< real_t > |
using | Vec3 = math::Vector3< real_t > |
using | Mat2 = math::Matrix2< real_t > |
using | Mat3 = math::Matrix3< real_t > |
using | Quat = math::Quaternion< real_t > |
using | MatN = math::MatrixMxN< real_t > |
using | BodyType = RigidBody |
Type of the rigid bodies. More... | |
using | BodyID = RigidBody * |
Handle for a rigid body. More... | |
using | ConstBodyID = const RigidBody * |
Handle for a constant rigid body. More... | |
using | BodyPtr = std::unique_ptr< RigidBody > |
using | GeomID = GeomPrimitive * |
using | ConstGeomID = const GeomPrimitive * |
using | BoxType = Box |
Type of the box geometric primitive. More... | |
using | BoxID = Box * |
Handle for a box primitive. More... | |
using | ConstBoxID = const Box * |
Handle for a constant box primitive. More... | |
using | BoxPtr = std::unique_ptr< Box > |
using | CapsuleType = Capsule |
Type of the capsule geometric primitive. More... | |
using | CapsuleID = Capsule * |
Handle for a capsule primitive. More... | |
using | ConstCapsuleID = const Capsule * |
Handle for a constant capsule primitive. More... | |
using | CapsulePtr = std::unique_ptr< Capsule > |
using | CylinderType = Cylinder |
Type of the cylinder geometric primitive. More... | |
using | CylinderID = Cylinder * |
Handle for a cylinder primitive. More... | |
using | ConstCylinderID = const Cylinder * |
Handle for a constant cylinder primitive. More... | |
using | CylinderPtr = std::unique_ptr< Cylinder > |
using | CylindricalBoundaryType = CylindricalBoundary |
Type of the cylindrical boundary geometric primitive. More... | |
using | CylindricalBoundaryID = CylindricalBoundary * |
Handle for a cylindrical boundary primitive. More... | |
using | ConstCylindricalBoundaryID = const CylindricalBoundary * |
Handle for a constant cylindrical boundary primitive. More... | |
using | CylindricalBoundaryPtr = std::unique_ptr< CylindricalBoundary > |
using | EllipsoidType = Ellipsoid |
Type of the ellipsoid geometric primitive. More... | |
using | EllipsoidID = Ellipsoid * |
Handle for a ellipsoid primitive. More... | |
using | ConstEllipsoidID = const Ellipsoid * |
Handle for a constant ellipsoid primitive. More... | |
using | EllipsoidPtr = std::unique_ptr< Ellipsoid > |
using | PlaneType = Plane |
Type of the plane geometric primitive. More... | |
using | PlaneID = Plane * |
Handle for a plane primitive. More... | |
using | ConstPlaneID = const Plane * |
Handle for a constant plane primitive. More... | |
using | PlanePtr = std::unique_ptr< Plane > |
using | SphereType = Sphere |
Type of the sphere geometric primitive. More... | |
using | SphereID = Sphere * |
Handle for a sphere primitive. More... | |
using | ConstSphereID = const Sphere * |
Handle for a constant sphere primitive. More... | |
using | SpherePtr = std::unique_ptr< Sphere > |
using | SquirmerType = Squirmer |
Type of the squirmer geometric primitive. More... | |
using | SquirmerID = Squirmer * |
Handle for a squirmer primitive. More... | |
using | ConstSquirmerID = const Squirmer * |
Handle for a constant squirmer primitive. More... | |
using | SquirmerPtr = std::unique_ptr< Squirmer > |
using | MeshType = TriangleMesh |
Type of the triangle mesh geometric primitive. More... | |
using | MeshID = TriangleMesh * |
Handle for a triangle mesh primitive. More... | |
using | ConstMeshID = const TriangleMesh * |
Handle for a constant triangle mesh primitive. More... | |
using | TriangleMeshPtr = std::unique_ptr< TriangleMesh > |
using | ContactType = Contact |
Type of the contacts. More... | |
using | ContactID = Contact * |
Handle for a contact. More... | |
using | ConstContactID = const Contact * |
Handle for a constant contact. More... | |
using | ManagerID = BodyManager * |
Handle for a BodyManager. More... | |
using | ConstManagerID = const BodyManager * |
Handle for a constant BodyManager. More... | |
using | Materials = std::vector< Material > |
Vector for materials. More... | |
using | MaterialID = Materials::size_type |
Unique material ID. More... | |
using | PossibleContacts = std::vector< std::pair< BodyID, BodyID > > |
Output data type of coarse collision detection module. More... | |
using | Contacts = std::vector< Contact > |
Output data type of fine collision detection module. More... | |
using | Storage = std::array< BodyStorage, 2 > |
Container for local and shadow body storage. More... | |
Functions | |
void | createWithNeighborhoodLocalShadow (const BlockForest &bf, const BlockDataID storageID, blockforest::InfoCollection &ic) |
Fills InfoCollection with up to date information. More... | |
void | createWithNeighborhoodContactsShadow (BlockForest &bf, const BlockDataID storageID, const BlockDataID fcdID, blockforest::InfoCollection &ic) |
Fills InfoCollection with up to date information. More... | |
template<class BlockT > | |
bool | hasNeighborOwner (const BlockT &block, const Owner &owner) |
Checks if one of the neighbor blocks is owned by process with rank rank. More... | |
template<class BlockT > | |
Owner | findContainingProcess (const BlockT &block, const math::Vector3< real_t > pt) |
Looks through all neighboring blocks to find the one whose AABB contains pt. More... | |
std::ostream & | operator<< (std::ostream &os, const Contact &c) |
Global output operator for contacts. More... | |
std::ostream & | operator<< (std::ostream &os, ConstContactID c) |
Global output operator for contact handles. More... | |
bool | shouldContactBeTreated (ContactID c, const math::AABB &blkAABB) |
real_t | getRestitution (ConstContactID c) |
real_t | getStiffness (ConstContactID c) |
real_t | getDampingN (ConstContactID c) |
real_t | getDampingT (ConstContactID c) |
real_t | getFriction (ConstContactID c) |
bool | operator== (const BodyStorage &lhs, const BodyStorage &rhs) |
Compare if two BodyStorages are equal. More... | |
BoxID | createBox (BodyStorage &globalStorage, BlockStorage &blocks, BlockDataID storageID, id_t uid, const Vec3 &gpos, const Vec3 &lengths, MaterialID material=Material::find("iron"), bool global=false, bool communicating=true, bool infiniteMass=false) |
Setup of a new Box. More... | |
CapsuleID | createCapsule (BodyStorage &globalStorage, BlockStorage &blocks, BlockDataID storageID, id_t uid, const Vec3 &gpos, const real_t radius, const real_t length, MaterialID material=Material::find("iron"), bool global=false, bool communicating=true, bool infiniteMass=false) |
Setup of a new Capsule. More... | |
CylindricalBoundaryID | createCylindricalBoundary (BodyStorage &globalStorage, id_t uid, const Vec3 &gpos, const real_t radius, MaterialID material=Material::find("iron")) |
Setup of a new Cylindrical Boundary. More... | |
EllipsoidID | createEllipsoid (BodyStorage &globalStorage, BlockStorage &blocks, BlockDataID storageID, id_t uid, const Vec3 &gpos, const Vec3 &semiAxes, MaterialID material=Material::find("iron"), bool global=false, bool communicating=true, bool infiniteMass=false) |
Setup of a new Ellipsoid. More... | |
std::ostream & | operator<< (std::ostream &lhs, const Owner &rhs) |
bool | operator== (const Owner &lhs, const Owner &rhs) |
PlaneID | createPlane (BodyStorage &globalStorage, id_t uid, Vec3 normal, const Vec3 &gpos, MaterialID material=Material::find("iron")) |
Setup of a new Plane. More... | |
template<typename C > | |
bool | operator== (const RigidBodyCastIterator< C > &lhs, const RigidBodyCastIterator< C > &rhs) |
Equality comparison between two CastIterator objects. More... | |
template<typename C > | |
bool | operator!= (const RigidBodyCastIterator< C > &lhs, const RigidBodyCastIterator< C > &rhs) |
Inequality comparison between two CastIterator objects. More... | |
template<typename C > | |
bool | operator== (const ConstRigidBodyCastIterator< C > &lhs, const ConstRigidBodyCastIterator< C > &rhs) |
Equality comparison between two CastIterator objects. More... | |
template<typename C > | |
bool | operator!= (const ConstRigidBodyCastIterator< C > &lhs, const ConstRigidBodyCastIterator< C > &rhs) |
Inequality comparison between two CastIterator objects. More... | |
bool | operator== (const RigidBodyIterator &lhs, const RigidBodyIterator &rhs) |
Equality comparison between two PtrIterator objects. More... | |
bool | operator!= (const RigidBodyIterator &lhs, const RigidBodyIterator &rhs) |
Inequality comparison between two PtrIterator objects. More... | |
bool | operator< (const RigidBodyIterator &lhs, const RigidBodyIterator &rhs) |
Less-than comparison between two PtrIterator objects. More... | |
bool | operator> (const RigidBodyIterator &lhs, const RigidBodyIterator &rhs) |
Greater-than comparison between two PtrIterator objects. More... | |
bool | operator<= (const RigidBodyIterator &lhs, const RigidBodyIterator &rhs) |
Less-or-equal-than comparison between two PtrIterator objects. More... | |
bool | operator>= (const RigidBodyIterator &lhs, const RigidBodyIterator &rhs) |
Greater-or-equal-than comparison between two PtrIterator objects. More... | |
bool | operator== (const ConstRigidBodyIterator &lhs, const ConstRigidBodyIterator &rhs) |
Equality comparison between two PtrIterator objects. More... | |
bool | operator!= (const ConstRigidBodyIterator &lhs, const ConstRigidBodyIterator &rhs) |
Inequality comparison between two PtrIterator objects. More... | |
bool | operator< (const ConstRigidBodyIterator &lhs, const ConstRigidBodyIterator &rhs) |
Less-than comparison between two PtrIterator objects. More... | |
bool | operator> (const ConstRigidBodyIterator &lhs, const ConstRigidBodyIterator &rhs) |
Greater-than comparison between two PtrIterator objects. More... | |
bool | operator<= (const ConstRigidBodyIterator &lhs, const ConstRigidBodyIterator &rhs) |
Less-or-equal-than comparison between two PtrIterator objects. More... | |
bool | operator>= (const ConstRigidBodyIterator &lhs, const ConstRigidBodyIterator &rhs) |
Greater-or-equal-than comparison between two PtrIterator objects. More... | |
SphereID | createSphere (BodyStorage &globalStorage, BlockStorage &blocks, BlockDataID storageID, id_t uid, const Vec3 &gpos, real_t radius, MaterialID material=Material::find("iron"), bool global=false, bool communicating=true, bool infiniteMass=false) |
Setup of a new Sphere. More... | |
SquirmerID | createSquirmer (BodyStorage &globalStorage, BlockStorage &blocks, BlockDataID storageID, id_t uid, const Vec3 &gpos, real_t radius, real_t squirmerVelocity, real_t squirmerBeta, MaterialID material=Material::find("iron"), bool global=false, bool communicating=true, bool infiniteMass=false) |
Setup of a new Squirmer. More... | |
template<typename BodyTuple > | |
shared_ptr< StorageDataHandling< BodyTuple > > | createStorageDataHandling () |
template<typename... BodyTypes> | |
std::ostream & | operator<< (std::ostream &os, const Union< BodyTypes... > &u) |
Global output operator for unions. More... | |
template<typename... BodyTypes> | |
std::ostream & | operator<< (std::ostream &os, Union< BodyTypes... > const *u) |
Global output operator for union handles. More... | |
template<typename... BodyTypes> | |
Union< BodyTypes... > * | createUnion (BodyStorage &globalStorage, BlockStorage &blocks, BlockDataID storageID, id_t uid, const Vec3 &gpos, bool global=false, bool communicating=true, bool infiniteMass=false) |
Setup of a new Union. More... | |
template<typename... BodyTypes> | |
BoxID | createBox (Union< BodyTypes... > *un, id_t uid, const Vec3 &gpos, const Vec3 &lengths, MaterialID material=Material::find("iron"), bool global=false, bool communicating=true, bool infiniteMass=false) |
Setup of a new Box directly attached to a Union. More... | |
template<typename... BodyTypes> | |
CapsuleID | createCapsule (Union< BodyTypes... > *un, id_t uid, const Vec3 &gpos, const real_t radius, const real_t length, MaterialID material=Material::find("iron"), bool global=false, bool communicating=true, bool infiniteMass=false) |
Setup of a new Capsule directly attached to a Union. More... | |
template<typename... BodyTypes> | |
SphereID | createSphere (Union< BodyTypes... > *un, id_t uid, const Vec3 &gpos, real_t radius, MaterialID material=Material::find("iron"), bool global=false, bool communicating=true, bool infiniteMass=false) |
Setup of a new Sphere directly attached to a Union. More... | |
std::ostream & | operator<< (std::ostream &os, const BodyStatistics &bodyStatistics) |
void | clearSynchronization (BlockStorage &blocks, BlockDataID storageID) |
Removes all synchronization information. More... | |
BodyStorage::iterator | removeAndNotify (Owner me, mpi::BufferSystem &bs, BodyStorage &localStorage, BodyStorage::iterator body) |
Removes a rigid body from the local body storage and informs shadow copy holders. More... | |
void | reduceForces (BlockStorage &blocks, BlockDataID storageID) |
void | reduceForces (BlockStorage &blocks, BlockDataID storageID, BodyStorage &globalBodyStorage) |
void | distributeForces (BlockStorage &blocks, BlockDataID storageID) |
template<typename BodyTypeTuple > | |
void | generateSynchonizationMessages (mpi::BufferSystem &bs, const Block &block, BodyStorage &localStorage, BodyStorage &shadowStorage, const real_t dx, const bool syncNonCommunicatingBodies) |
template<typename BodyTypeTuple > | |
void | syncNextNeighbors (BlockForest &forest, BlockDataID storageID, WcTimingTree *tt=nullptr, const real_t dx=real_t(0), const bool syncNonCommunicatingBodies=false) |
template<typename BodyTypeTuple > | |
void | updateAndMigrate (BlockForest &forest, BlockDataID storageID, const bool syncNonCommunicatingBodies) |
template<typename BodyTypeTuple > | |
void | checkAndResolveOverlap (BlockForest &forest, BlockDataID storageID, const real_t dx, const bool syncNonCommunicatingBodies) |
template<typename BodyTypeTuple > | |
void | syncShadowOwners (BlockForest &forest, BlockDataID storageID, WcTimingTree *tt=nullptr, const real_t dx=real_t(0), const bool syncNonCommunicatingBodies=false) |
void | destroyBodyBySID (BodyStorage &globalStorage, BlockStorage &blocks, BlockDataID storageID, const walberla::id_t sid) |
removes the rigid body with the given sid More... | |
void | destroyBodyByUID (BodyStorage &globalStorage, BlockStorage &blocks, BlockDataID storageID, const walberla::id_t uid) |
removes all rigid bodies matching the given uid More... | |
template<class UnaryPredicate > | |
void | destroyBody (BodyStorage &globalStorage, BlockStorage &blocks, BlockDataID storageID, const UnaryPredicate &p) |
Removes all rigid bodies which match the unary predicate p. More... | |
BodyID | getBody (BodyStorage &globalStorage, BlockStorage &blocks, BlockDataID storageID, walberla::id_t sid, int storageSelect=(StorageSelect::LOCAL|StorageSelect::SHADOW|StorageSelect::GLOBAL)) |
Tries to locate a rigid body and to return a pointer. More... | |
std::pair< int64_t, int64_t > | getNumBodies (const domain_decomposition::BlockStorage &bs, const BlockDataID &storageID, const int rank) |
real_t | getSphereSphereOverlap (const real_t d, const real_t r1, const real_t r2) |
Calculates overlap between two spheres. More... | |
Variables | |
const real_t | sleepThreshold = real_c( 0 ) |
Sleep mode threshold value. More... | |
const real_t | sleepBias = real_c( 0.5 ) |
Recency-weighted average bias value for the sleep mode \( [0..1] \). More... | |
const MaterialID | invalid_material = static_cast<MaterialID>( -1 ) |
ID for an invalid material. More... | |
real_t | collisionThreshold = Thresholds<real_t>::collisionThreshold() |
Threshold for the contact classification. More... | |
real_t | contactThreshold = Thresholds<real_t>::contactThreshold() |
Threshold for the distance between two rigid bodies. More... | |
real_t | restitutionThreshold = Thresholds<real_t>::restitutionThreshold() |
Threshold for the restriction of the coefficient of restitution. More... | |
real_t | frictionThreshold = Thresholds<real_t>::frictionThreshold() |
Threshold for the separation between static and dynamic friction. More... | |
real_t | surfaceThreshold = Thresholds<real_t>::surfaceThreshold() |
Threshold for surface points/checks. More... | |
using walberla::pe::BodyID = typedef RigidBody * |
Handle for a rigid body.
using walberla::pe::BodyPtr = typedef std::unique_ptr<RigidBody> |
using walberla::pe::BodyType = typedef RigidBody |
Type of the rigid bodies.
using walberla::pe::BoxID = typedef Box * |
Handle for a box primitive.
using walberla::pe::BoxPtr = typedef std::unique_ptr<Box> |
using walberla::pe::BoxType = typedef Box |
Type of the box geometric primitive.
using walberla::pe::CapsuleID = typedef Capsule * |
Handle for a capsule primitive.
using walberla::pe::CapsulePtr = typedef std::unique_ptr<Capsule> |
using walberla::pe::CapsuleType = typedef Capsule |
Type of the capsule geometric primitive.
using walberla::pe::ConstBodyID = typedef const RigidBody * |
Handle for a constant rigid body.
using walberla::pe::ConstBoxID = typedef const Box * |
Handle for a constant box primitive.
using walberla::pe::ConstCapsuleID = typedef const Capsule * |
Handle for a constant capsule primitive.
using walberla::pe::ConstContactID = typedef const Contact * |
Handle for a constant contact.
using walberla::pe::ConstCylinderID = typedef const Cylinder * |
Handle for a constant cylinder primitive.
using walberla::pe::ConstCylindricalBoundaryID = typedef const CylindricalBoundary * |
Handle for a constant cylindrical boundary primitive.
using walberla::pe::ConstEllipsoidID = typedef const Ellipsoid * |
Handle for a constant ellipsoid primitive.
using walberla::pe::ConstGeomID = typedef const GeomPrimitive * |
using walberla::pe::ConstManagerID = typedef const BodyManager * |
Handle for a constant BodyManager.
using walberla::pe::ConstMeshID = typedef const TriangleMesh * |
Handle for a constant triangle mesh primitive.
using walberla::pe::ConstPlaneID = typedef const Plane * |
Handle for a constant plane primitive.
using walberla::pe::ConstSphereID = typedef const Sphere * |
Handle for a constant sphere primitive.
using walberla::pe::ConstSquirmerID = typedef const Squirmer * |
Handle for a constant squirmer primitive.
using walberla::pe::ContactID = typedef Contact * |
Handle for a contact.
using walberla::pe::Contacts = typedef std::vector<Contact> |
Output data type of fine collision detection module.
using walberla::pe::ContactType = typedef Contact |
Type of the contacts.
using walberla::pe::CylinderID = typedef Cylinder * |
Handle for a cylinder primitive.
using walberla::pe::CylinderPtr = typedef std::unique_ptr<Cylinder> |
using walberla::pe::CylinderType = typedef Cylinder |
Type of the cylinder geometric primitive.
using walberla::pe::CylindricalBoundaryID = typedef CylindricalBoundary * |
Handle for a cylindrical boundary primitive.
using walberla::pe::CylindricalBoundaryPtr = typedef std::unique_ptr<CylindricalBoundary> |
using walberla::pe::CylindricalBoundaryType = typedef CylindricalBoundary |
Type of the cylindrical boundary geometric primitive.
using walberla::pe::EllipsoidID = typedef Ellipsoid * |
Handle for a ellipsoid primitive.
using walberla::pe::EllipsoidPtr = typedef std::unique_ptr<Ellipsoid> |
using walberla::pe::EllipsoidType = typedef Ellipsoid |
Type of the ellipsoid geometric primitive.
using walberla::pe::GeomID = typedef GeomPrimitive * |
using walberla::pe::ManagerID = typedef BodyManager * |
Handle for a BodyManager.
using walberla::pe::Mat2 = typedef math::Matrix2<real_t> |
using walberla::pe::Mat3 = typedef math::Matrix3<real_t> |
using walberla::pe::MaterialID = typedef Materials::size_type |
Unique material ID.
Every registered material has a unique MaterialID that can be used wherever the material is required. The pe engine provides a couple of predefined materials (see the Materials module). However, it is possible to define a custom material via the createMaterial() function:
using walberla::pe::Materials = typedef std::vector<Material> |
Vector for materials.
using walberla::pe::MatN = typedef math::MatrixMxN<real_t> |
using walberla::pe::MeshID = typedef TriangleMesh * |
Handle for a triangle mesh primitive.
using walberla::pe::MeshType = typedef TriangleMesh |
Type of the triangle mesh geometric primitive.
using walberla::pe::PlaneID = typedef Plane * |
Handle for a plane primitive.
using walberla::pe::PlanePtr = typedef std::unique_ptr<Plane> |
using walberla::pe::PlaneType = typedef Plane |
Type of the plane geometric primitive.
using walberla::pe::PossibleContacts = typedef std::vector<std::pair<BodyID, BodyID> > |
Output data type of coarse collision detection module.
using walberla::pe::Quat = typedef math::Quaternion<real_t> |
using walberla::pe::SphereID = typedef Sphere * |
Handle for a sphere primitive.
using walberla::pe::SpherePtr = typedef std::unique_ptr<Sphere> |
using walberla::pe::SphereType = typedef Sphere |
Type of the sphere geometric primitive.
using walberla::pe::SquirmerID = typedef Squirmer * |
Handle for a squirmer primitive.
using walberla::pe::SquirmerPtr = typedef std::unique_ptr<Squirmer> |
using walberla::pe::SquirmerType = typedef Squirmer |
Type of the squirmer geometric primitive.
using walberla::pe::Storage = typedef std::array<BodyStorage, 2> |
Container for local and shadow body storage.
using walberla::pe::TriangleMeshPtr = typedef std::unique_ptr<TriangleMesh> |
using walberla::pe::Vec2 = typedef math::Vector2<real_t> |
using walberla::pe::Vec3 = typedef math::Vector3<real_t> |
void walberla::pe::checkAndResolveOverlap | ( | BlockForest & | forest, |
BlockDataID | storageID, | ||
const real_t | dx, | ||
const bool | syncNonCommunicatingBodies | ||
) |
|
inline |
Removes all synchronization information.
blocks | BlockStorage of the simulation. |
storageID | BlockDataID of the pe storage. |
WALBERLA_PUBLIC MaterialID walberla::pe::createMaterial | ( | const std::string & | name, |
real_t | density, | ||
real_t | cor, | ||
real_t | csf, | ||
real_t | cdf, | ||
real_t | poisson, | ||
real_t | young, | ||
real_t | stiffness, | ||
real_t | dampingN, | ||
real_t | dampingT | ||
) |
Creating a new custom material.
name | The name of the custom material. |
density | The density of the custom material \( (0..\infty) \). |
cor | The coefficient of restitution of the custom material \( [0..1] \). |
csf | The coefficient of static friction of the custom material \( [0..\infty) \). |
cdf | The coefficient of dynamic friction of the custom material \( [0..\infty) \). |
poisson | The Poisson's ratio of the custom material \( [-1..0.5] \). |
young | The Young's modulus of the custom material \( (0..\infty) \). |
stiffness | The stiffness in normal direction of the material's contact region. |
dampingN | The damping coefficient in normal direction of the material's contact region. |
dampingT | The damping coefficient in tangential direction of the material's contact region. |
std::invalid_argument | Invalid material parameter. |
std::runtime_error | Invalid function call inside exclusive section. |
This function creates the new, custom material name with the given properties. The following example illustrates the use of this function:
In case the name of the material is already in use or if any of the coefficients is not in its allowed range, a std::invalid_argument exception is thrown.
Note that the material has to be created on all processes in a MPI parallel simulation.
The coefficient of restitution is given for self-similar collisions that is collision of bodies made of similar material. The composite coefficient of restitution \(e_*\) is estimated as proposed by Stronge: \(\frac{e_*^2}{k_*} = \frac{e_1^2}{k_1} + \frac{e_2^2}{k_2}\).
WALBERLA_PUBLIC MaterialID walberla::pe::createMaterial | ( | real_t | density, |
real_t | cor, | ||
real_t | csf, | ||
real_t | cdf, | ||
real_t | poisson, | ||
real_t | young, | ||
real_t | stiffness, | ||
real_t | dampingN, | ||
real_t | dampingT | ||
) |
Creating a new anonymous custom material.
density | The density of the custom material \( (0..\infty) \). |
cor | The coefficient of restitution of the custom material \( [0..1] \). |
csf | The coefficient of static friction of the custom material \( [0..\infty) \). |
cdf | The coefficient of dynamic friction of the custom material \( [0..\infty) \). |
poisson | The Poisson's ratio of the custom material \( [-1..0.5] \). |
young | The Young's modulus of the custom material \( (0..\infty) \). |
stiffness | The stiffness in normal direction of the material's contact region. |
dampingN | The damping coefficient in normal direction of the material's contact region. |
dampingT | The damping coefficient in tangential direction of the material's contact region. |
std::invalid_argument | Invalid material parameter. |
std::runtime_error | Invalid function call inside exclusive section. |
This function creates a new, custom material with the given properties. It will be named 'Material', followed by an incrementing number. Note that the material has to be created on all processes in an MPI parallel simulation.
shared_ptr<StorageDataHandling<BodyTuple> > walberla::pe::createStorageDataHandling | ( | ) |
void walberla::pe::createWithNeighborhoodContactsShadow | ( | BlockForest & | bf, |
const BlockDataID | storageID, | ||
const BlockDataID | fcdID, | ||
blockforest::InfoCollection & | ic | ||
) |
Fills InfoCollection with up to date information.
The number of contacts is used as the computational weight. The number of shadow particles is used as the communication weight.
void walberla::pe::createWithNeighborhoodLocalShadow | ( | const BlockForest & | bf, |
const BlockDataID | storageID, | ||
blockforest::InfoCollection & | ic | ||
) |
Fills InfoCollection with up to date information.
The number of local particles is used as the computational weight. The number of shadow particles is used as the communication weight.
void walberla::pe::destroyBody | ( | BodyStorage & | globalStorage, |
BlockStorage & | blocks, | ||
BlockDataID | storageID, | ||
const UnaryPredicate & | p | ||
) |
Removes all rigid bodies which match the unary predicate p.
void walberla::pe::destroyBodyBySID | ( | BodyStorage & | globalStorage, |
BlockStorage & | blocks, | ||
BlockDataID | storageID, | ||
const walberla::id_t | sid | ||
) |
removes the rigid body with the given sid
void walberla::pe::destroyBodyByUID | ( | BodyStorage & | globalStorage, |
BlockStorage & | blocks, | ||
BlockDataID | storageID, | ||
const walberla::id_t | uid | ||
) |
removes all rigid bodies matching the given uid
|
inline |
Owner walberla::pe::findContainingProcess | ( | const BlockT & | block, |
const math::Vector3< real_t > | pt | ||
) |
Looks through all neighboring blocks to find the one whose AABB contains pt.
Also checks if pt is located in the block itself. Returns -1 if no valid block is found otherwise the process rank of the containing block is returned.
void walberla::pe::generateSynchonizationMessages | ( | mpi::BufferSystem & | bs, |
const Block & | block, | ||
BodyStorage & | localStorage, | ||
BodyStorage & | shadowStorage, | ||
const real_t | dx, | ||
const bool | syncNonCommunicatingBodies | ||
) |
BodyID walberla::pe::getBody | ( | BodyStorage & | globalStorage, |
BlockStorage & | blocks, | ||
BlockDataID | storageID, | ||
walberla::id_t | sid, | ||
int | storageSelect = (StorageSelect::LOCAL|StorageSelect::SHADOW|StorageSelect::GLOBAL) |
||
) |
Tries to locate a rigid body and to return a pointer.
Tries to locate a rigidy body by its system ID (sid). If the body is found its BodyID is returned, otherwise NULL. The search space can be defined by storageType.
|
inline |
|
inline |
|
inline |
std::pair< int64_t, int64_t > walberla::pe::getNumBodies | ( | const domain_decomposition::BlockStorage & | bs, |
const BlockDataID & | storageID, | ||
const int | rank | ||
) |
|
inline |
Calculates overlap between two spheres.
d | distance between two spheres |
r1 | radius of sphere 1 |
r2 | radius of sphere 2 |
|
inline |
|
inline |
Distance calculation between two Plane primitives.
p1 | The first plane. |
p2 | The second plane. |
This function returns the distance between the two planes p1 and p2. Note that in case the two (infinite) planes overlap the returned distance is -math::Limits<real_t>::inf().
|
inline |
|
inline |
Distance calculation between two Sphere primitives.
s1 | The first sphere. |
s2 | The second sphere. |
This function returns the distance between the two spheres s1 and s2. Note that a negative distance indicates that the two spheres are overlapping.
bool walberla::pe::hasNeighborOwner | ( | const BlockT & | block, |
const Owner & | owner | ||
) |
Checks if one of the neighbor blocks is owned by process with rank rank.
|
inline |
Inequality comparison between two CastIterator objects.
lhs | The left hand side cast iterator. |
rhs | The right hand side cast iterator. |
|
inline |
Inequality comparison between two PtrIterator objects.
lhs | The left-hand side pointer iterator. |
rhs | The right-hand side pointer iterator. |
|
inline |
Inequality comparison between two CastIterator objects.
lhs | The left hand side cast iterator. |
rhs | The right hand side cast iterator. |
|
inline |
Inequality comparison between two PtrIterator objects.
lhs | The left-hand side pointer iterator. |
rhs | The right-hand side pointer iterator. |
|
inline |
Less-than comparison between two PtrIterator objects.
lhs | The left-hand side pointer iterator. |
rhs | The right-hand side pointer iterator. |
|
inline |
Less-than comparison between two PtrIterator objects.
lhs | The left-hand side pointer iterator. |
rhs | The right-hand side pointer iterator. |
|
inline |
|
inline |
std::ostream & walberla::pe::operator<< | ( | std::ostream & | os, |
const Box & | b | ||
) |
Global output operator for boxes.
os | Reference to the output stream. |
b | Reference to a constant box object. |
std::ostream & walberla::pe::operator<< | ( | std::ostream & | os, |
const Capsule & | c | ||
) |
Global output operator for capsules.
os | Reference to the output stream. |
c | Reference to a constant capsule object. |
|
inline |
Global output operator for contacts.
os | Reference to the output stream. |
c | Reference to a constant contact object. |
std::ostream & walberla::pe::operator<< | ( | std::ostream & | os, |
const CylindricalBoundary & | c | ||
) |
Global output operator for cylindrical boundaries.
os | Reference to the output stream. |
c | Reference to a cylindrical boundary object. |
std::ostream & walberla::pe::operator<< | ( | std::ostream & | os, |
const Ellipsoid & | s | ||
) |
Global output operator for Ellipsoids.
os | Reference to the output stream. |
s | Reference to a constant Ellipsoid object. |
std::ostream & walberla::pe::operator<< | ( | std::ostream & | os, |
const Plane & | p | ||
) |
Global output operator for planes.
os | Reference to the output stream. |
p | Reference to a constant plane object. |
std::ostream & walberla::pe::operator<< | ( | std::ostream & | os, |
const RigidBody & | b | ||
) |
Global output operator for rigid bodies.
os | Reference to the output stream. |
b | Reference to a constant rigid body object. |
std::ostream & walberla::pe::operator<< | ( | std::ostream & | os, |
const Sphere & | s | ||
) |
Global output operator for spheres.
os | Reference to the output stream. |
s | Reference to a constant sphere object. |
std::ostream& walberla::pe::operator<< | ( | std::ostream & | os, |
const Union< BodyTypes... > & | u | ||
) |
Global output operator for unions.
os | Reference to the output stream. |
u | Reference to a constant union object. |
std::ostream & walberla::pe::operator<< | ( | std::ostream & | os, |
ConstBodyID | b | ||
) |
Global output operator for rigid body handles.
os | Reference to the output stream. |
b | Constant rigid body handle. |
std::ostream & walberla::pe::operator<< | ( | std::ostream & | os, |
ConstBoxID | b | ||
) |
Global output operator for box handles.
os | Reference to the output stream. |
b | Constant box handle. |
std::ostream & walberla::pe::operator<< | ( | std::ostream & | os, |
ConstCapsuleID | c | ||
) |
Global output operator for capsule handles.
os | Reference to the output stream. |
c | Constant capsule handle. |
|
inline |
Global output operator for contact handles.
os | Reference to the output stream. |
c | Constant contact handle. |
std::ostream & walberla::pe::operator<< | ( | std::ostream & | os, |
ConstEllipsoidID | s | ||
) |
std::ostream & walberla::pe::operator<< | ( | std::ostream & | os, |
ConstPlaneID | p | ||
) |
Global output operator for plane handles.
os | Reference to the output stream. |
p | Constant plane handle. |
std::ostream & walberla::pe::operator<< | ( | std::ostream & | os, |
ConstSphereID | s | ||
) |
Global output operator for sphere handles.
os | Reference to the output stream. |
s | Constant sphere handle. |
std::ostream & walberla::pe::operator<< | ( | std::ostream & | os, |
Contact::ContactType | type | ||
) |
Calculation of the normal relative acceleration between the two contacting rigid bodies.
Global output operator for ContactType.
os | Reference to the output stream. |
type | The ContactType to be put into the stream. |
std::ostream & walberla::pe::operator<< | ( | std::ostream & | os, |
CylindricalBoundaryID | c | ||
) |
Global output operator for cylindrical boundaries handles.
os | Reference to the output stream. |
c | Constant cylindrical boundary handle. |
std::ostream& walberla::pe::operator<< | ( | std::ostream & | os, |
Union< BodyTypes... > const * | u | ||
) |
Global output operator for union handles.
os | Reference to the output stream. |
u | Constant union handle. |
|
inline |
Less-or-equal-than comparison between two PtrIterator objects.
lhs | The left-hand side pointer iterator. |
rhs | The right-hand side pointer iterator. |
|
inline |
Less-or-equal-than comparison between two PtrIterator objects.
lhs | The left-hand side pointer iterator. |
rhs | The right-hand side pointer iterator. |
|
inline |
Compare if two BodyStorages are equal.
Since BodyStorages are uncopyable two BodyStorages are considered equal if their addresses are equal.
|
inline |
Equality comparison between two CastIterator objects.
lhs | The left hand side cast iterator. |
rhs | The right hand side cast iterator. |
|
inline |
Equality comparison between two PtrIterator objects.
lhs | The left-hand side pointer iterator. |
rhs | The right-hand side pointer iterator. |
|
inline |
Equality comparison between two CastIterator objects.
lhs | The left hand side cast iterator. |
rhs | The right hand side cast iterator. |
|
inline |
Equality comparison between two PtrIterator objects.
lhs | The left-hand side pointer iterator. |
rhs | The right-hand side pointer iterator. |
|
inline |
Greater-than comparison between two PtrIterator objects.
lhs | The left-hand side pointer iterator. |
rhs | The right-hand side pointer iterator. |
|
inline |
Greater-than comparison between two PtrIterator objects.
lhs | The left-hand side pointer iterator. |
rhs | The right-hand side pointer iterator. |
|
inline |
Greater-or-equal-than comparison between two PtrIterator objects.
lhs | The left-hand side pointer iterator. |
rhs | The right-hand side pointer iterator. |
|
inline |
Greater-or-equal-than comparison between two PtrIterator objects.
lhs | The left-hand side pointer iterator. |
rhs | The right-hand side pointer iterator. |
|
inline |
|
inline |
|
inline |
Removes a rigid body from the local body storage and informs shadow copy holders.
body | An iterator pointing to the rigid body to be removed from the collision system. |
This function removes the rigid body from the body storage and generates deletion notifications.
|
inline |
void walberla::pe::syncNextNeighbors | ( | BlockForest & | forest, |
BlockDataID | storageID, | ||
WcTimingTree * | tt = nullptr , |
||
const real_t | dx = real_t(0) , |
||
const bool | syncNonCommunicatingBodies = false |
||
) |
void walberla::pe::syncShadowOwners | ( | BlockForest & | forest, |
BlockDataID | storageID, | ||
WcTimingTree * | tt = nullptr , |
||
const real_t | dx = real_t(0) , |
||
const bool | syncNonCommunicatingBodies = false |
||
) |
void walberla::pe::updateAndMigrate | ( | BlockForest & | forest, |
BlockDataID | storageID, | ||
const bool | syncNonCommunicatingBodies | ||
) |
real_t walberla::pe::collisionThreshold = Thresholds<real_t>::collisionThreshold() |
Threshold for the contact classification.
This threshold separates between separating, resting and colliding contacts.
real_t walberla::pe::contactThreshold = Thresholds<real_t>::contactThreshold() |
Threshold for the distance between two rigid bodies.
Rigid bodies with a distance smaller than this threshold are in contact.
real_t walberla::pe::frictionThreshold = Thresholds<real_t>::frictionThreshold() |
Threshold for the separation between static and dynamic friction.
This threshold represents the boundary between static and dynamic friction.
const MaterialID walberla::pe::invalid_material = static_cast<MaterialID>( -1 ) |
ID for an invalid material.
This MaterialID is returned by the getMaterial() function in case no material with the specified name is returned. This value should not be used to create rigid bodies or in any other function!
real_t walberla::pe::restitutionThreshold = Thresholds<real_t>::restitutionThreshold() |
Threshold for the restriction of the coefficient of restitution.
In case the relative velocity between two colliding rigid bodies is smaller than this threshold, a coefficient of restitution of 0 is used to avoid an infinite number of collisions during a single time step.
const real_t walberla::pe::sleepBias = real_c( 0.5 ) |
Recency-weighted average bias value for the sleep mode \( [0..1] \).
The motion of a rigid body is calculated by a recency-weighted average. This value specifies the bias value for the calculation. It controls how much significance is given to previous values. The bias value has to be in the range \( [0..1] \): A value of zero makes the recency-weighted average equal to the current motion of the rigid body, a bias of one ignores the current motion altogether.
const real_t walberla::pe::sleepThreshold = real_c( 0 ) |
Sleep mode threshold value.
This value specifies the threshold value for the sleep mode of a rigid body. In case the motion of a rigid body drops below this threshold, the body is put to sleep and is not moved during a simulation time step. The body is wakened again if its position or its orientation is changed or if forces or impulses are added to the body.
The sleep threshold can be set to any non-negative value \( [0..\infty) \). A value of zero switches off sleep mode entirely.
For more details about the calculation of the motion of a rigid body, see the description of the RigidBody::calcMotion() function.
real_t walberla::pe::surfaceThreshold = Thresholds<real_t>::surfaceThreshold() |
Threshold for surface points/checks.
Only points with a distance to the surface smaller than this threshold are considered surface point.