walberla::pe Namespace Reference

Namespaces

 amr
 
 bg
 
 ccd
 
 communication
 
 cr
 
 debug
 
 fcd
 
 internal
 
 raytracing
 

Classes

struct  BlockInfo
 
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 assebly of bodies. More...
 

Typedefs

typedef std::map< blockforest::BlockID, BlockInfoInfoCollection
 
typedef std::pair< blockforest::BlockID, BlockInfoInfoCollectionPair
 
typedef math::Vector2< real_tVec2
 
typedef math::Vector3< real_tVec3
 
typedef math::Matrix2< real_tMat2
 
typedef math::Matrix3< real_tMat3
 
typedef math::Quaternion< real_tQuat
 
typedef math::MatrixMxN< real_tMatN
 
typedef RigidBody BodyType
 Type of the rigid bodies. More...
 
typedef RigidBodyBodyID
 Handle for a rigid body. More...
 
typedef const RigidBodyConstBodyID
 Handle for a constant rigid body. More...
 
using BodyPtr = std::unique_ptr< RigidBody >
 
typedef GeomPrimitiveGeomID
 
typedef const GeomPrimitiveConstGeomID
 
typedef Box BoxType
 Type of the box geometric primitive. More...
 
typedef BoxBoxID
 Handle for a box primitive. More...
 
typedef const BoxConstBoxID
 Handle for a constant box primitive. More...
 
using BoxPtr = std::unique_ptr< Box >
 
typedef Capsule CapsuleType
 Type of the capsule geometric primitive. More...
 
typedef CapsuleCapsuleID
 Handle for a capsule primitive. More...
 
typedef const CapsuleConstCapsuleID
 Handle for a constant capsule primitive. More...
 
using CapsulePtr = std::unique_ptr< Capsule >
 
typedef Cylinder CylinderType
 Type of the cylinder geometric primitive. More...
 
typedef Cylinder * CylinderID
 Handle for a cylinder primitive. More...
 
typedef const Cylinder * ConstCylinderID
 Handle for a constant cylinder primitive. More...
 
using CylinderPtr = std::unique_ptr< Cylinder >
 
typedef CylindricalBoundary CylindricalBoundaryType
 Type of the cylindrical boundary geometric primitive. More...
 
typedef CylindricalBoundaryCylindricalBoundaryID
 Handle for a cylindrical boundary primitive. More...
 
typedef const CylindricalBoundaryConstCylindricalBoundaryID
 Handle for a constant cylindrical boundary primitive. More...
 
using CylindricalBoundaryPtr = std::unique_ptr< CylindricalBoundary >
 
typedef Ellipsoid EllipsoidType
 Type of the ellipsoid geometric primitive. More...
 
typedef EllipsoidEllipsoidID
 Handle for a ellipsoid primitive. More...
 
typedef const EllipsoidConstEllipsoidID
 Handle for a constant ellipsoid primitive. More...
 
using EllipsoidPtr = std::unique_ptr< Ellipsoid >
 
typedef Plane PlaneType
 Type of the plane geometric primitive. More...
 
typedef PlanePlaneID
 Handle for a plane primitive. More...
 
typedef const PlaneConstPlaneID
 Handle for a constant plane primitive. More...
 
using PlanePtr = std::unique_ptr< Plane >
 
typedef Sphere SphereType
 Type of the sphere geometric primitive. More...
 
typedef SphereSphereID
 Handle for a sphere primitive. More...
 
typedef const SphereConstSphereID
 Handle for a constant sphere primitive. More...
 
using SpherePtr = std::unique_ptr< Sphere >
 
typedef Squirmer SquirmerType
 Type of the squirmer geometric primitive. More...
 
typedef SquirmerSquirmerID
 Handle for a squirmer primitive. More...
 
typedef const SquirmerConstSquirmerID
 Handle for a constant squirmer primitive. More...
 
using SquirmerPtr = std::unique_ptr< Squirmer >
 
typedef TriangleMesh MeshType
 Type of the triangle mesh geometric primitive. More...
 
typedef TriangleMesh * MeshID
 Handle for a triangle mesh primitive. More...
 
typedef const TriangleMesh * ConstMeshID
 Handle for a constant triangle mesh primitive. More...
 
using TriangleMeshPtr = std::unique_ptr< TriangleMesh >
 
typedef Contact ContactType
 Type of the contacts. More...
 
typedef ContactContactID
 Handle for a contact. More...
 
typedef const ContactConstContactID
 Handle for a constant contact. More...
 
typedef BodyManager * ManagerID
 Handle for a BodyManager. More...
 
typedef const BodyManager * ConstManagerID
 Handle for a constant BodyManager. More...
 
typedef std::vector< MaterialMaterials
 Vector for materials. More...
 
typedef Materials::size_type MaterialID
 Unique material ID. More...
 
typedef std::vector< std::pair< BodyID, BodyID > > PossibleContacts
 Output data type of coarse collision detection module. More...
 
typedef std::vector< ContactContacts
 Output data type of fine collision detection module. More...
 
typedef std::array< BodyStorage, 2 > Storage
 Container for local and shadow body storage. More...
 

Functions

BlockInfo operator+ (const BlockInfo &lhs, const BlockInfo &rhs)
 
std::ostream & operator<< (std::ostream &os, const BlockInfo &bi)
 
template<typename T , typename G >
mpi::GenericSendBuffer< T, G > & operator<< (mpi::GenericSendBuffer< T, G > &buf, const BlockInfo &info)
 
template<typename T >
mpi::GenericRecvBuffer< T > & operator>> (mpi::GenericRecvBuffer< T > &buf, BlockInfo &info)
 
void createWithNeighborhoodLocalShadow (const BlockForest &bf, const BlockDataID storageID, InfoCollection &ic)
 Fills InfoCollection with up to date information. More...
 
void createWithNeighborhoodContactsShadow (BlockForest &bf, const BlockDataID storageID, const BlockDataID fcdID, 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=NULL, 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=NULL, 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_tgetNumBodies (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...
 
Contact type utility functions
std::ostream & operator<< (std::ostream &os, Contact::ContactType type)
 Calculation of the normal relative acceleration between the two contacting rigid bodies. More...
 
Material functions
MaterialID 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. More...
 
MaterialID 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. More...
 
Box operators
std::ostream & operator<< (std::ostream &os, const Box &b)
 Global output operator for boxes. More...
 
std::ostream & operator<< (std::ostream &os, ConstBoxID b)
 Global output operator for box handles. More...
 
Capsule operators
std::ostream & operator<< (std::ostream &os, const Capsule &c)
 Global output operator for capsules. More...
 
std::ostream & operator<< (std::ostream &os, ConstCapsuleID c)
 Global output operator for capsule handles. More...
 
Cylinder operators
std::ostream & operator<< (std::ostream &os, const CylindricalBoundary &c)
 Global output operator for cylindrical boundaryies. More...
 
std::ostream & operator<< (std::ostream &os, CylindricalBoundaryID c)
 Global output operator for cylindrical boundaryies handles. More...
 
Ellipsoid operators
std::ostream & operator<< (std::ostream &os, const Ellipsoid &s)
 Global output operator for Ellipsoids. More...
 
std::ostream & operator<< (std::ostream &os, ConstEllipsoidID s)
 Global output operator for Ellipsoid handles. More...
 
Plane operators
std::ostream & operator<< (std::ostream &os, const Plane &p)
 Global output operator for planes. More...
 
std::ostream & operator<< (std::ostream &os, ConstPlaneID p)
 Global output operator for plane handles. More...
 
Rigid body operators
std::ostream & operator<< (std::ostream &os, const RigidBody &b)
 Global output operator for rigid bodies. More...
 
std::ostream & operator<< (std::ostream &os, ConstBodyID b)
 Global output operator for rigid body handles. More...
 
Sphere operators
std::ostream & operator<< (std::ostream &os, const Sphere &s)
 Global output operator for spheres. More...
 
std::ostream & operator<< (std::ostream &os, ConstSphereID s)
 Global output operator for sphere handles. More...
 
Distance calculation functions
real_t getSurfaceDistance (ConstSphereID s1, ConstSphereID s2)
 Distance calculation between two Sphere primitives. More...
 
real_t getSurfaceDistance (ConstSphereID s, ConstPlaneID p)
 Distance calculation between a Sphere and a Plane. More...
 
real_t getSurfaceDistance (ConstPlaneID p1, ConstPlaneID p2)
 Distance calculation between two Plane primitives. 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...
 

Typedef Documentation

Handle for a rigid body.

using walberla::pe::BodyPtr = typedef std::unique_ptr<RigidBody>

Type of the rigid bodies.

Handle for a box primitive.

using walberla::pe::BoxPtr = typedef std::unique_ptr<Box>

Type of the box geometric primitive.

Handle for a capsule primitive.

using walberla::pe::CapsulePtr = typedef std::unique_ptr<Capsule>

Type of the capsule geometric primitive.

Handle for a constant rigid body.

typedef const Box* walberla::pe::ConstBoxID

Handle for a constant box primitive.

Handle for a constant capsule primitive.

Handle for a constant contact.

typedef const Cylinder* walberla::pe::ConstCylinderID

Handle for a constant cylinder primitive.

Handle for a constant cylindrical boundary primitive.

Handle for a constant ellipsoid primitive.

typedef const BodyManager* walberla::pe::ConstManagerID

Handle for a constant BodyManager.

typedef const TriangleMesh* walberla::pe::ConstMeshID

Handle for a constant triangle mesh primitive.

Handle for a constant plane primitive.

Handle for a constant sphere primitive.

Handle for a constant squirmer primitive.

Handle for a contact.

typedef std::vector< Contact > walberla::pe::Contacts

Output data type of fine collision detection module.

Type of the contacts.

typedef Cylinder* walberla::pe::CylinderID

Handle for a cylinder primitive.

using walberla::pe::CylinderPtr = typedef std::unique_ptr<Cylinder>
typedef Cylinder walberla::pe::CylinderType

Type of the cylinder geometric primitive.

Handle for a cylindrical boundary primitive.

Type of the cylindrical boundary geometric primitive.

Handle for a ellipsoid primitive.

using walberla::pe::EllipsoidPtr = typedef std::unique_ptr<Ellipsoid>

Type of the ellipsoid geometric primitive.

typedef BodyManager* walberla::pe::ManagerID

Handle for a BodyManager.

typedef Materials::size_type walberla::pe::MaterialID

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:

// Creates the material "myMaterial" with the following material properties:
// - material density : 2.54
// - coefficient of restitution : 0.8
// - coefficient of static friction : 0.1
// - coefficient of dynamic friction: 0.05
MaterialID myMaterial = createMaterial( "myMaterial", real_c(2.54), real_c(0.8), real_c(0.1), real_c(0.05) );
typedef std::vector<Material> walberla::pe::Materials

Vector for materials.

typedef TriangleMesh* walberla::pe::MeshID

Handle for a triangle mesh primitive.

typedef TriangleMesh walberla::pe::MeshType

Type of the triangle mesh geometric primitive.

Handle for a plane primitive.

using walberla::pe::PlanePtr = typedef std::unique_ptr<Plane>

Type of the plane geometric primitive.

typedef std::vector<std::pair<BodyID, BodyID> > walberla::pe::PossibleContacts

Output data type of coarse collision detection module.

Handle for a sphere primitive.

using walberla::pe::SpherePtr = typedef std::unique_ptr<Sphere>

Type of the sphere geometric primitive.

Handle for a squirmer primitive.

using walberla::pe::SquirmerPtr = typedef std::unique_ptr<Squirmer>

Type of the squirmer geometric primitive.

typedef std::array<BodyStorage, 2> walberla::pe::Storage

Container for local and shadow body storage.

using walberla::pe::TriangleMeshPtr = typedef std::unique_ptr<TriangleMesh>

Function Documentation

template<typename BodyTypeTuple >
void walberla::pe::checkAndResolveOverlap ( BlockForest &  forest,
BlockDataID  storageID,
const real_t  dx,
const bool  syncNonCommunicatingBodies 
)
void walberla::pe::clearSynchronization ( BlockStorage &  blocks,
BlockDataID  storageID 
)
inline

Removes all synchronization information.

Parameters
blocksBlockStorage of the simulation.
BlockDataIDBlockDataID 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.

Parameters
nameThe name of the custom material.
densityThe density of the custom material \( (0..\infty) \).
corThe coefficient of restitution of the custom material \( [0..1] \).
csfThe coefficient of static friction of the custom material \( [0..\infty) \).
cdfThe coefficient of dynamic friction of the custom material \( [0..\infty) \).
poissonThe Poisson's ratio of the custom material \( [-1..0.5] \).
youngThe Young's modulus of the custom material \( (0..\infty) \).
stiffnessThe stiffness in normal direction of the material's contact region.
dampingNThe damping coefficient in normal direction of the material's contact region.
dampingTThe damping coefficient in tangential direction of the material's contact region.
Returns
The MaterialID for the new material.
Exceptions
std::invalid_argumentInvalid material parameter.
std::runtime_errorInvalid 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:

// Creates the material "myMaterial" with the following material properties:
// - material density : 2.54
// - coefficient of restitution : 0.8
// - coefficient of static friction : 0.1
// - coefficient of dynamic friction: 0.05
// - Poisson's ratio : 0.2
// - Young's modulus : 80
// - Contact stiffness : 100
// - dampingN : 10
// - dampingT : 11
MaterialID myMaterial = createMaterial( "myMaterial", 2.54, 0.8, 0.1, 0.05, 0.2, 80, 100, 10, 11 );

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.

Parameters
densityThe density of the custom material \( (0..\infty) \).
corThe coefficient of restitution of the custom material \( [0..1] \).
csfThe coefficient of static friction of the custom material \( [0..\infty) \).
cdfThe coefficient of dynamic friction of the custom material \( [0..\infty) \).
poissonThe Poisson's ratio of the custom material \( [-1..0.5] \).
youngThe Young's modulus of the custom material \( (0..\infty) \).
stiffnessThe stiffness in normal direction of the material's contact region.
dampingNThe damping coefficient in normal direction of the material's contact region.
dampingTThe damping coefficient in tangential direction of the material's contact region.
Returns
The MaterialID for the new material.
Exceptions
std::invalid_argumentInvalid material parameter.
std::runtime_errorInvalid 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.

template<typename BodyTuple >
shared_ptr<StorageDataHandling<BodyTuple> > walberla::pe::createStorageDataHandling ( )
void walberla::pe::createWithNeighborhoodContactsShadow ( BlockForest &  bf,
const BlockDataID  storageID,
const BlockDataID  fcdID,
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,
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.

template<class UnaryPredicate >
void walberla::pe::destroyBody ( BodyStorage globalStorage,
BlockStorage &  blocks,
BlockDataID  storageID,
const UnaryPredicate &  p 
)

Removes all rigid bodies which match the unary predicate p.

Attention
Has to be called the same way on all processes to work correctly!
void walberla::pe::destroyBodyBySID ( BodyStorage globalStorage,
BlockStorage &  blocks,
BlockDataID  storageID,
const walberla::id_t  sid 
)

removes the rigid body with the given sid

Attention
Has to be called the same way on all processes to work correctly!
void walberla::pe::destroyBodyByUID ( BodyStorage globalStorage,
BlockStorage &  blocks,
BlockDataID  storageID,
const walberla::id_t  uid 
)

removes all rigid bodies matching the given uid

Attention
Has to be called the same way on all processes to work correctly!
void walberla::pe::distributeForces ( BlockStorage &  blocks,
BlockDataID  storageID 
)
inline
template<class BlockT >
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.

Attention
If periodic boundaries are used you have to make sure the point is mapped to the domain before calling this function!
template<typename BodyTypeTuple >
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.

Returns
a pointer to the rigid body if it was found, NULL otherwise
real_t walberla::pe::getDampingN ( ConstContactID  c)
inline
real_t walberla::pe::getDampingT ( ConstContactID  c)
inline
real_t walberla::pe::getFriction ( ConstContactID  c)
inline
std::pair< int64_t, int64_t > walberla::pe::getNumBodies ( const domain_decomposition::BlockStorage bs,
const BlockDataID &  storageID,
const int  rank 
)
real_t walberla::pe::getRestitution ( ConstContactID  c)
inline
real_t walberla::pe::getSphereSphereOverlap ( const real_t  d,
const real_t  r1,
const real_t  r2 
)

Calculates overlap between two spheres.

Parameters
ddistance between two spheres
r1radius of sphere 1
r2radius of sphere 2
Returns
overlap volume
real_t walberla::pe::getStiffness ( ConstContactID  c)
inline
real_t walberla::pe::getSurfaceDistance ( ConstSphereID  s1,
ConstSphereID  s2 
)
inline

Distance calculation between two Sphere primitives.

Parameters
s1The first sphere.
s2The second sphere.
Returns
The minimum distance between the two spheres.

This function returns the distance between the two spheres s1 and s2. Note that a negative distance indicates that the two spheres are overlapping.

real_t walberla::pe::getSurfaceDistance ( ConstSphereID  s,
ConstPlaneID  p 
)
inline

Distance calculation between a Sphere and a Plane.

Parameters
sThe sphere.
pThe plane.
Returns
The minimum distance between the sphere and the plane.

This function returns the distance between the sphere s and the plane p. Note that a negative distance indicates that the two bodies are overlapping.

real_t walberla::pe::getSurfaceDistance ( ConstPlaneID  p1,
ConstPlaneID  p2 
)
inline

Distance calculation between two Plane primitives.

Parameters
p1The first plane.
p2The second plane.
Returns
The minimum distance between the two planes.

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().

template<class BlockT >
bool walberla::pe::hasNeighborOwner ( const BlockT &  block,
const Owner owner 
)

Checks if one of the neighbor blocks is owned by process with rank rank.

bool walberla::pe::operator!= ( const RigidBodyIterator lhs,
const RigidBodyIterator rhs 
)
inline

Inequality comparison between two PtrIterator objects.

Parameters
lhsThe left-hand side pointer iterator.
rhsThe right-hand side pointer iterator.
Returns
true if the iterators don't point to the same element, false if they do.
template<typename C >
bool walberla::pe::operator!= ( const RigidBodyCastIterator< C > &  lhs,
const RigidBodyCastIterator< C > &  rhs 
)
inline

Inequality comparison between two CastIterator objects.

Parameters
lhsThe left hand side cast iterator.
rhsThe right hand side cast iterator.
Returns
true if the iterators don't point to the same element, false if they do.
bool walberla::pe::operator!= ( const ConstRigidBodyIterator lhs,
const ConstRigidBodyIterator rhs 
)
inline

Inequality comparison between two PtrIterator objects.

Parameters
lhsThe left-hand side pointer iterator.
rhsThe right-hand side pointer iterator.
Returns
true if the iterators don't point to the same element, false if they do.
template<typename C >
bool walberla::pe::operator!= ( const ConstRigidBodyCastIterator< C > &  lhs,
const ConstRigidBodyCastIterator< C > &  rhs 
)
inline

Inequality comparison between two CastIterator objects.

Parameters
lhsThe left hand side cast iterator.
rhsThe right hand side cast iterator.
Returns
true if the iterators don't point to the same element, false if they do.
BlockInfo walberla::pe::operator+ ( const BlockInfo lhs,
const BlockInfo rhs 
)
inline
bool walberla::pe::operator< ( const RigidBodyIterator lhs,
const RigidBodyIterator rhs 
)
inline

Less-than comparison between two PtrIterator objects.

Parameters
lhsThe left-hand side pointer iterator.
rhsThe right-hand side pointer iterator.
Returns
true if the left-hand side iterator points to a lower element, false if not.
bool walberla::pe::operator< ( const ConstRigidBodyIterator lhs,
const ConstRigidBodyIterator rhs 
)
inline

Less-than comparison between two PtrIterator objects.

Parameters
lhsThe left-hand side pointer iterator.
rhsThe right-hand side pointer iterator.
Returns
true if the left-hand side iterator points to a lower element, false if not.
std::ostream& walberla::pe::operator<< ( std::ostream &  lhs,
const Owner rhs 
)
inline
std::ostream& walberla::pe::operator<< ( std::ostream &  os,
const BlockInfo bi 
)
inline
template<typename T , typename G >
mpi::GenericSendBuffer<T,G>& walberla::pe::operator<< ( mpi::GenericSendBuffer< T, G > &  buf,
const BlockInfo info 
)
std::ostream& walberla::pe::operator<< ( std::ostream &  os,
const BodyStatistics bodyStatistics 
)
inline
std::ostream & walberla::pe::operator<< ( std::ostream &  os,
Contact::ContactType  type 
)

Calculation of the normal relative acceleration between the two contacting rigid bodies.

Returns
The relative acceleration in normal direction.

Global output operator for ContactType.

Parameters
osReference to the output stream.
typeThe ContactType to be put into the stream.
Returns
Reference to the output stream.
std::ostream & walberla::pe::operator<< ( std::ostream &  os,
const CylindricalBoundary c 
)

Global output operator for cylindrical boundaryies.

Parameters
osReference to the output stream.
cReference to a cylindrical boundary object.
Returns
Reference to the output stream.
std::ostream & walberla::pe::operator<< ( std::ostream &  os,
CylindricalBoundaryID  c 
)

Global output operator for cylindrical boundaryies handles.

Parameters
osReference to the output stream.
cConstant cylindrical boundary handle.
Returns
Reference to the output stream.
std::ostream & walberla::pe::operator<< ( std::ostream &  os,
const Sphere s 
)

Global output operator for spheres.

Parameters
osReference to the output stream.
sReference to a constant sphere object.
Returns
Reference to the output stream.
std::ostream & walberla::pe::operator<< ( std::ostream &  os,
const Ellipsoid s 
)

Global output operator for Ellipsoids.

Parameters
osReference to the output stream.
sReference to a constant Ellipsoid object.
Returns
Reference to the output stream.
std::ostream & walberla::pe::operator<< ( std::ostream &  os,
ConstSphereID  s 
)

Global output operator for sphere handles.

Parameters
osReference to the output stream.
sConstant sphere handle.
Returns
Reference to the output stream.
std::ostream & walberla::pe::operator<< ( std::ostream &  os,
ConstEllipsoidID  s 
)

Global output operator for Ellipsoid handles.

Parameters
osReference to the output stream.
sConstant Ellipsoid handle.
Returns
Reference to the output stream.
std::ostream & walberla::pe::operator<< ( std::ostream &  os,
const RigidBody b 
)

Global output operator for rigid bodies.

Parameters
osReference to the output stream.
bReference to a constant rigid body object.
Returns
Reference to the output stream.
std::ostream & walberla::pe::operator<< ( std::ostream &  os,
const Capsule c 
)

Global output operator for capsules.

Parameters
osReference to the output stream.
cReference to a constant capsule object.
Returns
Reference to the output stream.
std::ostream & walberla::pe::operator<< ( std::ostream &  os,
ConstBodyID  b 
)

Global output operator for rigid body handles.

Parameters
osReference to the output stream.
bConstant rigid body handle.
Returns
Reference to the output stream.
std::ostream & walberla::pe::operator<< ( std::ostream &  os,
ConstCapsuleID  c 
)

Global output operator for capsule handles.

Parameters
osReference to the output stream.
cConstant capsule handle.
Returns
Reference to the output stream.
std::ostream& walberla::pe::operator<< ( std::ostream &  os,
const Contact c 
)
inline

Global output operator for contacts.

Parameters
osReference to the output stream.
cReference to a constant contact object.
Returns
Reference to the output stream.
std::ostream & walberla::pe::operator<< ( std::ostream &  os,
const Box b 
)

Global output operator for boxes.

Parameters
osReference to the output stream.
bReference to a constant box object.
Returns
Reference to the output stream.
std::ostream & walberla::pe::operator<< ( std::ostream &  os,
ConstBoxID  b 
)

Global output operator for box handles.

Parameters
osReference to the output stream.
bConstant box handle.
Returns
Reference to the output stream.
std::ostream& walberla::pe::operator<< ( std::ostream &  os,
ConstContactID  c 
)
inline

Global output operator for contact handles.

Parameters
osReference to the output stream.
cConstant contact handle.
Returns
Reference to the output stream.
std::ostream & walberla::pe::operator<< ( std::ostream &  os,
const Plane p 
)

Global output operator for planes.

Parameters
osReference to the output stream.
pReference to a constant plane object.
Returns
Reference to the output stream.
std::ostream & walberla::pe::operator<< ( std::ostream &  os,
ConstPlaneID  p 
)

Global output operator for plane handles.

Parameters
osReference to the output stream.
pConstant plane handle.
Returns
Reference to the output stream.
template<typename... BodyTypes>
std::ostream& walberla::pe::operator<< ( std::ostream &  os,
const Union< BodyTypes... > &  u 
)

Global output operator for unions.

Parameters
osReference to the output stream.
uReference to a constant union object.
Returns
Reference to the output stream.
template<typename... BodyTypes>
std::ostream& walberla::pe::operator<< ( std::ostream &  os,
Union< BodyTypes... > const *  u 
)

Global output operator for union handles.

Parameters
osReference to the output stream.
uConstant union handle.
Returns
Reference to the output stream.
bool walberla::pe::operator<= ( const RigidBodyIterator lhs,
const RigidBodyIterator rhs 
)
inline

Less-or-equal-than comparison between two PtrIterator objects.

Parameters
lhsThe left-hand side pointer iterator.
rhsThe right-hand side pointer iterator.
Returns
true if the left-hand side iterator points to a lower or the same element, false if not.
bool walberla::pe::operator<= ( const ConstRigidBodyIterator lhs,
const ConstRigidBodyIterator rhs 
)
inline

Less-or-equal-than comparison between two PtrIterator objects.

Parameters
lhsThe left-hand side pointer iterator.
rhsThe right-hand side pointer iterator.
Returns
true if the left-hand side iterator points to a lower or the same element, false if not.
bool walberla::pe::operator== ( const Owner lhs,
const Owner rhs 
)
inline
bool walberla::pe::operator== ( const RigidBodyIterator lhs,
const RigidBodyIterator rhs 
)
inline

Equality comparison between two PtrIterator objects.

Parameters
lhsThe left-hand side pointer iterator.
rhsThe right-hand side pointer iterator.
Returns
true if the iterators point to the same element, false if not.
template<typename C >
bool walberla::pe::operator== ( const RigidBodyCastIterator< C > &  lhs,
const RigidBodyCastIterator< C > &  rhs 
)
inline

Equality comparison between two CastIterator objects.

Parameters
lhsThe left hand side cast iterator.
rhsThe right hand side cast iterator.
Returns
true if the iterators point to the same element, false if not.
bool walberla::pe::operator== ( const ConstRigidBodyIterator lhs,
const ConstRigidBodyIterator rhs 
)
inline

Equality comparison between two PtrIterator objects.

Parameters
lhsThe left-hand side pointer iterator.
rhsThe right-hand side pointer iterator.
Returns
true if the iterators point to the same element, false if not.
template<typename C >
bool walberla::pe::operator== ( const ConstRigidBodyCastIterator< C > &  lhs,
const ConstRigidBodyCastIterator< C > &  rhs 
)
inline

Equality comparison between two CastIterator objects.

Parameters
lhsThe left hand side cast iterator.
rhsThe right hand side cast iterator.
Returns
true if the iterators point to the same element, false if not.
bool walberla::pe::operator== ( const BodyStorage lhs,
const BodyStorage rhs 
)
inline

Compare if two BodyStorages are equal.

Since BodyStorages are uncopyable two BodyStorages are considered equal if their adresses are equal.

bool walberla::pe::operator> ( const RigidBodyIterator lhs,
const RigidBodyIterator rhs 
)
inline

Greater-than comparison between two PtrIterator objects.

Parameters
lhsThe left-hand side pointer iterator.
rhsThe right-hand side pointer iterator.
Returns
true if the left-hand side iterator points to a higher element, false if not.
bool walberla::pe::operator> ( const ConstRigidBodyIterator lhs,
const ConstRigidBodyIterator rhs 
)
inline

Greater-than comparison between two PtrIterator objects.

Parameters
lhsThe left-hand side pointer iterator.
rhsThe right-hand side pointer iterator.
Returns
true if the left-hand side iterator points to a higher element, false if not.
bool walberla::pe::operator>= ( const RigidBodyIterator lhs,
const RigidBodyIterator rhs 
)
inline

Greater-or-equal-than comparison between two PtrIterator objects.

Parameters
lhsThe left-hand side pointer iterator.
rhsThe right-hand side pointer iterator.
Returns
true if the left-hand side iterator points to a higher or the same element, false if not.
bool walberla::pe::operator>= ( const ConstRigidBodyIterator lhs,
const ConstRigidBodyIterator rhs 
)
inline

Greater-or-equal-than comparison between two PtrIterator objects.

Parameters
lhsThe left-hand side pointer iterator.
rhsThe right-hand side pointer iterator.
Returns
true if the left-hand side iterator points to a higher or the same element, false if not.
template<typename T >
mpi::GenericRecvBuffer<T>& walberla::pe::operator>> ( mpi::GenericRecvBuffer< T > &  buf,
BlockInfo info 
)
void walberla::pe::reduceForces ( BlockStorage &  blocks,
BlockDataID  storageID 
)
inline
void walberla::pe::reduceForces ( BlockStorage &  blocks,
BlockDataID  storageID,
BodyStorage globalBodyStorage 
)
inline
BodyStorage::iterator walberla::pe::removeAndNotify ( Owner  me,
mpi::BufferSystem bs,
BodyStorage localStorage,
BodyStorage::iterator  body 
)
inline

Removes a rigid body from the local body storage and informs shadow copy holders.

Parameters
bodyAn iterator pointing to the rigid body to be removed from the collision system.
Returns
An iterator pointing to the rigid body after the erase body.

This function removes the rigid body from the body storage and generates deletion notifications.

bool walberla::pe::shouldContactBeTreated ( ContactID  c,
const math::AABB blkAABB 
)
inline
template<typename BodyTypeTuple >
void walberla::pe::syncNextNeighbors ( BlockForest &  forest,
BlockDataID  storageID,
WcTimingTree tt = NULL,
const real_t  dx = real_t(0),
const bool  syncNonCommunicatingBodies = false 
)
template<typename BodyTypeTuple >
void walberla::pe::syncShadowOwners ( BlockForest &  forest,
BlockDataID  storageID,
WcTimingTree tt = NULL,
const real_t  dx = real_t(0),
const bool  syncNonCommunicatingBodies = false 
)
template<typename BodyTypeTuple >
void walberla::pe::updateAndMigrate ( BlockForest &  forest,
BlockDataID  storageID,
const bool  syncNonCommunicatingBodies 
)

Variable Documentation

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.