OpenLB 1.8.1
Loading...
Searching...
No Matches
olb::particles::access Namespace Reference

Functions

template<typename T >
Vector< T, 3 > calcAngAcceleration3D (Vector< T, 3 > &torque, Vector< T, 3 > &momentOfInertia, const Matrix< T, 3, 3 > &rotationMatrix)
 
template<typename PARTICLETYPE >
constexpr bool providesID ()
 Provides field ID.
 
template<typename T , typename PARTICLETYPE >
constexpr bool providesID (Particle< T, PARTICLETYPE > &particle)
 
template<typename PARTICLETYPE >
constexpr bool providesInvalid ()
 Provides field ID.
 
template<typename T , typename PARTICLETYPE >
constexpr bool providesInvalid (Particle< T, PARTICLETYPE > &particle)
 
template<typename PARTICLETYPE >
constexpr bool providesPosition ()
 Provides field POSITION.
 
template<typename T , typename PARTICLETYPE >
constexpr bool providesPosition (Particle< T, PARTICLETYPE > &particle)
 
template<typename PARTICLETYPE >
constexpr bool providesRadius ()
 Provides field RADIUS.
 
template<typename T , typename PARTICLETYPE >
constexpr bool providesRadius (Particle< T, PARTICLETYPE > &particle)
 
template<typename PARTICLETYPE >
constexpr bool providesDensity ()
 Provides field DENSITY.
 
template<typename T , typename PARTICLETYPE >
constexpr bool providesDensity (Particle< T, PARTICLETYPE > &particle)
 
template<typename PARTICLETYPE >
constexpr bool providesMass ()
 Provides field MASS.
 
template<typename T , typename PARTICLETYPE >
constexpr bool providesMass (Particle< T, PARTICLETYPE > &particle)
 
template<typename PARTICLETYPE >
constexpr bool providesMassOrDensity ()
 Provides field MASS or DENSITY.
 
template<typename T , typename PARTICLETYPE >
constexpr bool providesMassOrDensity (Particle< T, PARTICLETYPE > &particle)
 
template<typename PARTICLETYPE >
constexpr bool providesAngle ()
 Provides field ANGLE.
 
template<typename T , typename PARTICLETYPE >
constexpr bool providesAngle (Particle< T, PARTICLETYPE > &particle)
 
template<typename PARTICLETYPE >
constexpr bool providesVelocity ()
 Provides field VELOCITY.
 
template<typename T , typename PARTICLETYPE >
constexpr bool providesVelocity (Particle< T, PARTICLETYPE > &particle)
 
template<typename PARTICLETYPE >
constexpr bool providesAngVelocity ()
 Provides field VELOCITY.
 
template<typename T , typename PARTICLETYPE >
constexpr bool providesAngVelocity (Particle< T, PARTICLETYPE > &particle)
 
template<typename PARTICLETYPE >
constexpr bool providesForce ()
 Provides field FORCE.
 
template<typename T , typename PARTICLETYPE >
constexpr bool providesForce (Particle< T, PARTICLETYPE > &particle)
 
template<typename PARTICLETYPE >
constexpr bool providesTorque ()
 Provides field TORQUE.
 
template<typename T , typename PARTICLETYPE >
constexpr bool providesTorque (Particle< T, PARTICLETYPE > &particle)
 
template<typename PARTICLETYPE >
constexpr bool providesAdhesion ()
 Provides field ADHESION.
 
template<typename T , typename PARTICLETYPE >
constexpr bool providesAdhesion (Particle< T, PARTICLETYPE > &particle)
 
template<typename PARTICLETYPE >
constexpr bool providesMomentOfInertia ()
 Provides field MOFI.
 
template<typename T , typename PARTICLETYPE >
constexpr bool providesMomentOfInertia (Particle< T, PARTICLETYPE > &particle)
 
template<typename PARTICLETYPE >
constexpr bool providesValid ()
 Provides field INVALID.
 
template<typename T , typename PARTICLETYPE >
constexpr bool providesValid (Particle< T, PARTICLETYPE > &particle)
 
template<typename PARTICLETYPE >
constexpr bool providesDynamicsID ()
 Provides field DYNAMICS_ID.
 
template<typename T , typename PARTICLETYPE >
constexpr bool providesDynamicsID (Particle< T, PARTICLETYPE > &particle)
 
template<typename PARTICLETYPE >
constexpr bool providesActive ()
 Provides field ACTIVE.
 
template<typename T , typename PARTICLETYPE >
constexpr bool providesActive (Particle< T, PARTICLETYPE > &particle)
 
template<typename PARTICLETYPE >
constexpr bool providesComputeMotion ()
 Provides field COMPUTE_MOTION.
 
template<typename T , typename PARTICLETYPE >
constexpr bool providesComputeMotion (Particle< T, PARTICLETYPE > &particle)
 
template<typename PARTICLETYPE >
constexpr bool providesComputeContact ()
 Provides field COMPUTE_CONTACT.
 
template<typename T , typename PARTICLETYPE >
constexpr bool providesComputeContact (Particle< T, PARTICLETYPE > &particle)
 
template<typename PARTICLETYPE >
constexpr bool providesRotationMatrix ()
 Provides field ROT_MATRIX.
 
template<typename T , typename PARTICLETYPE >
constexpr bool providesRotationMatrix (Particle< T, PARTICLETYPE > &particle)
 
template<typename PARTICLETYPE >
constexpr bool providesSurface ()
 Provides group SURFACE.
 
template<typename T , typename PARTICLETYPE >
constexpr bool providesSurface (Particle< T, PARTICLETYPE > &particle)
 
template<typename PARTICLETYPE >
constexpr bool providesSmoothIndicator ()
 
template<typename T , typename PARTICLETYPE >
constexpr bool providesSmoothIndicator (Particle< T, PARTICLETYPE > &particle)
 
template<typename PARTICLETYPE >
constexpr bool providesParallelization ()
 Provides group PARALLELIZATION.
 
template<typename T , typename PARTICLETYPE >
constexpr bool providesParallelization (Particle< T, PARTICLETYPE > &particle)
 
template<typename PARTICLETYPE >
constexpr bool providesSpecies ()
 
template<typename T , typename PARTICLETYPE >
constexpr bool providesSpecies (Particle< T, PARTICLETYPE > &particle)
 
template<typename PARTICLETYPE >
constexpr bool providesDetaching ()
 
template<typename T , typename PARTICLETYPE >
constexpr bool providesDetaching (Particle< T, PARTICLETYPE > &particle)
 
template<typename PARTICLETYPE >
constexpr bool providesCORoffset ()
 
template<typename T , typename PARTICLETYPE >
constexpr bool providesCORoffset (Particle< T, PARTICLETYPE > &particle)
 
template<typename PARTICLETYPE >
constexpr bool providesElongation ()
 
template<typename T , typename PARTICLETYPE >
constexpr bool providesElongation (Particle< T, PARTICLETYPE > &particle)
 
template<typename PARTICLETYPE >
constexpr bool providesAccelerationStrd ()
 
template<typename T , typename PARTICLETYPE >
constexpr bool providesAccelerationStrd (Particle< T, PARTICLETYPE > &particle)
 
template<typename PARTICLETYPE >
constexpr bool providesAngAccelerationStrd ()
 
template<typename T , typename PARTICLETYPE >
constexpr bool providesAngAccelerationStrd (Particle< T, PARTICLETYPE > &particle)
 
template<typename PARTICLETYPE >
constexpr bool providesEnlargementForContactTreatment ()
 
template<typename T , typename PARTICLETYPE >
constexpr bool providesEnlargementForContactTreatment (Particle< T, PARTICLETYPE > &particle)
 
template<typename PARTICLETYPE >
constexpr bool providesIsInContact ()
 
template<typename T , typename PARTICLETYPE >
constexpr bool providesIsInContact (Particle< T, PARTICLETYPE > &particle)
 
template<typename PARTICLETYPE >
constexpr bool providesContactMaterial ()
 
template<typename T , typename PARTICLETYPE >
constexpr bool providesContactMaterial (Particle< T, PARTICLETYPE > &particle)
 
template<typename PARTICLETYPE >
constexpr bool is2D ()
 
template<typename T , typename PARTICLETYPE >
constexpr bool is2D (Particle< T, PARTICLETYPE > &particle)
 
template<typename PARTICLETYPE >
constexpr bool is3D ()
 
template<typename T , typename PARTICLETYPE >
constexpr bool is3D (Particle< T, PARTICLETYPE > &particle)
 
template<typename T , typename PARTICLETYPE >
Vector< T, PARTICLETYPE::d > getPosition (Particle< T, PARTICLETYPE > particle)
 
template<bool ensureAngularBounds = false, typename T , typename PARTICLETYPE >
Vector< T, utilities::dimensions::convert< PARTICLETYPE::d >::rotation > getAngle (Particle< T, PARTICLETYPE > particle)
 
template<typename T , typename PARTICLETYPE >
Vector< T, utilities::dimensions::convert< PARTICLETYPE::d >::matrix > getRotationMatrix (Particle< T, PARTICLETYPE > particle)
 
template<unsigned dir = 2, typename T , typename PARTICLETYPE >
Vector< T, PARTICLETYPE::d > getSurfaceNormal (Particle< T, PARTICLETYPE > particle)
 
template<typename T , typename PARTICLETYPE >
Vector< T, PARTICLETYPE::d > getVelocity (Particle< T, PARTICLETYPE > particle)
 
template<typename T , typename PARTICLETYPE >
Vector< T, utilities::dimensions::convert< PARTICLETYPE::d >::rotation > getAngularVelocity (Particle< T, PARTICLETYPE > particle)
 
template<typename T , typename PARTICLETYPE >
Vector< T, PARTICLETYPE::d > getForce (Particle< T, PARTICLETYPE > particle)
 
template<typename T , typename PARTICLETYPE >
Vector< T, utilities::dimensions::convert< PARTICLETYPE::d >::rotation > getTorque (Particle< T, PARTICLETYPE > particle)
 
template<typename T , typename PARTICLETYPE >
Vector< T, utilities::dimensions::convert< PARTICLETYPE::d >::rotation > getMomentOfInertia (Particle< T, PARTICLETYPE > particle)
 
template<typename T , typename PARTICLETYPE >
Vector< T, 2 > getAdhesion (Particle< T, PARTICLETYPE > particle)
 
template<typename T , typename PARTICLETYPE >
bool isValid (Particle< T, PARTICLETYPE > particle)
 
template<typename T , typename PARTICLETYPE >
bool isActive (Particle< T, PARTICLETYPE > particle)
 
template<typename T , typename PARTICLETYPE >
auto getSmoothIndicatorPtr (Particle< T, PARTICLETYPE > particle)
 
template<typename T , typename PARTICLETYPE >
getRadius (Particle< T, PARTICLETYPE > &particle)
 
template<typename T , typename PARTICLETYPE >
getVolume (Particle< T, PARTICLETYPE > particle, T shapeFactor=T{1})
 Returns the volume of a particle (for subgrid the volume of a sphere/circle is multiplied by the shapeFactor), i.e., the shape factor is the volume ratio of the shape of interest to a sphere/circle.
 
template<typename T , typename PARTICLETYPE >
getDensity (Particle< T, PARTICLETYPE > particle, T shapeFactor=T{1})
 
template<typename T , typename PARTICLETYPE >
getMass (Particle< T, PARTICLETYPE > particle, T shapeFactor=T{1})
 
template<typename T , typename PARTICLETYPE >
Vector< T, PARTICLETYPE::d > getAccelerationStrd (Particle< T, PARTICLETYPE > particle)
 
template<typename T , typename PARTICLETYPE >
void setAccelerationStrd (Particle< T, PARTICLETYPE > particle, Vector< T, PARTICLETYPE::d > acceleration)
 
template<typename T , typename PARTICLETYPE >
Vector< T, PARTICLETYPE::d > getAcceleration (Particle< T, PARTICLETYPE > particle)
 
template<typename T , typename PARTICLETYPE >
Vector< T, utilities::dimensions::convert< PARTICLETYPE::d >::rotation > getAngAcceleration (Particle< T, PARTICLETYPE > particle)
 
template<typename T , typename PARTICLETYPE >
Vector< T, utilities::dimensions::convert< PARTICLETYPE::d >::rotation > getAngAccelerationStrd (Particle< T, PARTICLETYPE > particle)
 
template<typename T , typename PARTICLETYPE >
auto getGlobalID (Particle< T, PARTICLETYPE > particle)
 
template<typename T , typename PARTICLETYPE >
auto getGlobalIC (Particle< T, PARTICLETYPE > particle)
 
template<typename T , typename PARTICLETYPE >
unsigned short getDynamicsID (Particle< T, PARTICLETYPE > &particle)
 
template<typename T , typename PARTICLETYPE >
bool isDetaching (Particle< T, PARTICLETYPE > &particle)
 
template<typename T , typename PARTICLETYPE >
auto getCuboidSurfaceExtent (Particle< T, PARTICLETYPE > particle)
 
template<typename T , typename PARTICLETYPE >
Vector< T, PARTICLETYPE::d > getCORoffset (Particle< T, PARTICLETYPE > particle)
 
template<typename T , typename PARTICLETYPE >
Vector< T, PARTICLETYPE::d > getElongation (Particle< T, PARTICLETYPE > particle)
 
template<typename T , typename PARTICLETYPE >
getEnlargementForContact (Particle< T, PARTICLETYPE > particle)
 
template<typename T , typename PARTICLETYPE >
unsigned getContactMaterial (Particle< T, PARTICLETYPE > particle)
 
template<typename T , typename PARTICLETYPE >
void setDensity (Particle< T, PARTICLETYPE > particle, T density, T shapeFactor=T{1})
 
template<typename T , typename PARTICLETYPE >
void setMass (Particle< T, PARTICLETYPE > particle, T mass, T shapeFactor=T{1})
 
template<typename T , typename PARTICLETYPE >
void setPosition (Particle< T, PARTICLETYPE > particle, Vector< T, PARTICLETYPE::d > position)
 
template<typename T , typename PARTICLETYPE >
void setContactMaterial (Particle< T, PARTICLETYPE > particle, unsigned material)
 
template<typename T , typename PARTICLETYPE >
void setAngle (Particle< T, PARTICLETYPE > particle, Vector< T, utilities::dimensions::convert< PARTICLETYPE::d >::rotation > angle)
 
template<typename T , typename PARTICLETYPE >
void setRotationMatrix (Particle< T, PARTICLETYPE > particle, Vector< T, utilities::dimensions::convert< PARTICLETYPE::d >::matrix > rotMatrix)
 
template<typename T , typename PARTICLETYPE >
void setVelocity (Particle< T, PARTICLETYPE > particle, Vector< T, PARTICLETYPE::d > velocity)
 
template<typename T , typename PARTICLETYPE >
void setAngularVelocity (Particle< T, PARTICLETYPE > particle, Vector< T, utilities::dimensions::convert< PARTICLETYPE::d >::rotation > angVelocity)
 
template<typename T , typename PARTICLETYPE >
void setAngAccelerationStrd (Particle< T, PARTICLETYPE > particle, Vector< T, utilities::dimensions::convert< PARTICLETYPE::d >::rotation > angAcceleration)
 
template<typename T , typename PARTICLETYPE >
void setForce (Particle< T, PARTICLETYPE > particle, Vector< T, PARTICLETYPE::d > force)
 
template<typename T , typename PARTICLETYPE >
void setTorque (Particle< T, PARTICLETYPE > particle, Vector< T, utilities::dimensions::convert< PARTICLETYPE::d >::rotation > torque)
 
template<typename T , typename PARTICLETYPE >
void setMomentOfInertia (Particle< T, PARTICLETYPE > particle, Vector< T, utilities::dimensions::convert< PARTICLETYPE::d >::rotation > mofi)
 
template<typename T , typename PARTICLETYPE >
void setAdhesion (Particle< T, PARTICLETYPE > &particle, Vector< T, 2 > adhesion)
 
template<typename T , typename PARTICLETYPE >
void setInvalid (Particle< T, PARTICLETYPE > particle, bool value=true)
 
template<typename T , typename PARTICLETYPE >
void setValid (Particle< T, PARTICLETYPE > particle, bool value=true)
 
template<typename T , typename PARTICLETYPE >
void setActive (Particle< T, PARTICLETYPE > particle, bool value=true)
 
template<typename T , typename PARTICLETYPE >
void setInactive (Particle< T, PARTICLETYPE > particle, bool value=true)
 
template<typename T , typename PARTICLETYPE >
void setSmoothIndicatorPtr (Particle< T, PARTICLETYPE > particle, SmoothIndicatorF< T, T, PARTICLETYPE::d, true > *sindicator)
 
template<typename T , typename PARTICLETYPE >
void setRadius (Particle< T, PARTICLETYPE > &particle, T radius)
 
template<typename T , typename PARTICLETYPE >
void setGlobalID (Particle< T, PARTICLETYPE > particle, std::size_t id)
 
template<typename T , typename PARTICLETYPE >
void setGlobalIC (Particle< T, PARTICLETYPE > particle, int id)
 
template<typename T , typename PARTICLETYPE >
void setDynamicsID (Particle< T, PARTICLETYPE > &particle, unsigned short dynamicsID)
 
template<typename T , typename PARTICLETYPE >
void setDetaching (Particle< T, PARTICLETYPE > &particle, bool value)
 
template<typename T , typename PARTICLETYPE >
void setCORoffset (Particle< T, PARTICLETYPE > particle, Vector< T, PARTICLETYPE::d > offsetCOR)
 
template<typename T , typename PARTICLETYPE >
void setElongation (Particle< T, PARTICLETYPE > particle, Vector< T, PARTICLETYPE::d > elongation)
 
template<typename T , typename PARTICLETYPE >
void setEnlargementForContact (Particle< T, PARTICLETYPE > &particle, T value)
 
template<typename T , typename PARTICLETYPE >
bool isMotionComputationEnabled (Particle< T, PARTICLETYPE > &particle)
 Check if motion is enabled.
 
template<typename T , typename PARTICLETYPE >
bool isContactComputationEnabled (Particle< T, PARTICLETYPE > &particle)
 Check if contact should be regarded (specification for a single particle)
 
template<typename T , typename PARTICLETYPE >
bool isContactComputationEnabled (Particle< T, PARTICLETYPE > &particleA, Particle< T, PARTICLETYPE > &particleB)
 Check if contact should be regarded (interaction of two known particles)
 
template<typename T , typename PARTICLETYPE >
void enableMotionComputation (Particle< T, PARTICLETYPE > &particle, bool value=true)
 
template<typename T , typename PARTICLETYPE >
void enableContactComputation (Particle< T, PARTICLETYPE > &particle, bool value=true)
 
template<typename T , typename PARTICLETYPE >
void disableMotionComputation (Particle< T, PARTICLETYPE > &particle, bool value=true)
 
template<typename T , typename PARTICLETYPE >
void disableContactComputation (Particle< T, PARTICLETYPE > &particle, bool value=true)
 
template<typename T , typename PARTICLETYPE >
void setRestingParticle (Particle< T, PARTICLETYPE > particle)
 

Function Documentation

◆ calcAngAcceleration3D()

template<typename T >
Vector< T, 3 > olb::particles::access::calcAngAcceleration3D ( Vector< T, 3 > & torque,
Vector< T, 3 > & momentOfInertia,
const Matrix< T, 3, 3 > & rotationMatrix )

Definition at line 45 of file dataAccessWrappers.h.

47{
48 T data[3][3] = {
49 {momentOfInertia[0], T {0}, T {0}},
50 { T {0}, momentOfInertia[1], T {0}},
51 { T {0}, T {0}, momentOfInertia[2]}
52 };
53 Matrix<T, 3, 3> inertiaTensor(data);
54 inertiaTensor = (rotationMatrix * inertiaTensor) * (rotationMatrix.transpose());
55
56 /*
57 * In the following, we use the solution of a linear equation system
58 * torque = inertia tensor * angular acceleration + angular velocity x (inertia tensor * angular velocity)
59 * Here, we want to know the components of the angular acceleration
60 * In the following, left = torque - angular velocity x (inertia tensor * angular velocity)
61 */
62
63 // const Vector<T,3> angularVelocity = getAngularVelocity(particle);
64 // Using Euler's equation for rigid body dynamics
65 // Currently not, as it leads to inaccurate results of some tests
66 // Add the cross product to use Euler's equation for rigid body dynamics
67 const Vector<T,3> left = torque;//- crossProduct3D(angularVelocity, (inertiaTensor * angularVelocity));
68
69 const T denominator = util::pow(inertiaTensor[0][2], 2) * inertiaTensor[1][1]
70 + inertiaTensor[0][0] * util::pow(inertiaTensor[1][2], 2)
71 - 2 * inertiaTensor[0][1] * inertiaTensor[0][2] * inertiaTensor[1][2]
72 + util::pow(inertiaTensor[0][1], 2) * inertiaTensor[2][2]
73 - inertiaTensor[0][0] * inertiaTensor[1][1] * inertiaTensor[2][2];
74 const T factor = T{1} / denominator;
75
76 Vector<T,3> angularAcceleration;
77 angularAcceleration[0] = (util::pow(inertiaTensor[1][2], 2) - inertiaTensor[1][1] * inertiaTensor[2][2]) * left[0]
78 + (- inertiaTensor[0][2] * inertiaTensor[1][2] + inertiaTensor[0][1] * inertiaTensor[2][2]) * left[1]
79 + (inertiaTensor[0][2] * inertiaTensor[1][1] - inertiaTensor[0][1] * inertiaTensor[1][2]) * left[2];
80 angularAcceleration[1] = (- inertiaTensor[0][2] * inertiaTensor[1][2] + inertiaTensor[0][1] * inertiaTensor[2][2]) * left[0]
81 + (util::pow(inertiaTensor[0][2], 2) - inertiaTensor[0][0] * inertiaTensor[2][2]) * left[1]
82 + (- inertiaTensor[0][1] * inertiaTensor[0][2] + inertiaTensor[0][0] * inertiaTensor[1][2]) * left[2];
83 angularAcceleration[2] = (inertiaTensor[0][2] * inertiaTensor[1][1] - inertiaTensor[0][1] * inertiaTensor[1][2]) * left[0]
84 + (- inertiaTensor[0][1] * inertiaTensor[0][2] + inertiaTensor[0][0] * inertiaTensor[1][2]) * left[1]
85 + (util::pow(inertiaTensor[0][1], 2) - inertiaTensor[0][0] * inertiaTensor[1][1]) * left[2];
86
87 for(unsigned iDim = 0; iDim < 3; ++iDim) {
88 angularAcceleration[iDim] *= factor;
89 }
90
91 return angularAcceleration;
92}
constexpr Matrix< T, COLS, ROWS > transpose() const
Definition matrix.h:127

References olb::util::pow(), and olb::Matrix< T, ROWS, COLS >::transpose().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ disableContactComputation()

template<typename T , typename PARTICLETYPE >
void olb::particles::access::disableContactComputation ( Particle< T, PARTICLETYPE > & particle,
bool value = true )

Definition at line 1217 of file dataAccessWrappers.h.

1218{
1219 enableContactComputation(particle, !value);
1220}
void enableContactComputation(Particle< T, PARTICLETYPE > &particle, bool value=true)

References enableContactComputation().

+ Here is the call graph for this function:

◆ disableMotionComputation()

template<typename T , typename PARTICLETYPE >
void olb::particles::access::disableMotionComputation ( Particle< T, PARTICLETYPE > & particle,
bool value = true )

Definition at line 1211 of file dataAccessWrappers.h.

1212{
1213 enableMotionComputation(particle, !value);
1214}
void enableMotionComputation(Particle< T, PARTICLETYPE > &particle, bool value=true)

References enableMotionComputation().

+ Here is the call graph for this function:

◆ enableContactComputation()

template<typename T , typename PARTICLETYPE >
void olb::particles::access::enableContactComputation ( Particle< T, PARTICLETYPE > & particle,
bool value = true )

Definition at line 1203 of file dataAccessWrappers.h.

1204{
1205 using namespace descriptors;
1206 static_assert(providesComputeContact<PARTICLETYPE>(), "Field DYNBEHAVIOUR:COMPUTE_CONTACT has to be provided");
1207 particle.template setField<DYNBEHAVIOUR, COMPUTE_CONTACT>(value);
1208}

References providesComputeContact().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ enableMotionComputation()

template<typename T , typename PARTICLETYPE >
void olb::particles::access::enableMotionComputation ( Particle< T, PARTICLETYPE > & particle,
bool value = true )

Definition at line 1195 of file dataAccessWrappers.h.

1196{
1197 using namespace descriptors;
1198 static_assert(providesComputeMotion<PARTICLETYPE>(), "Field DYNBEHAVIOUR:COMPUTE_MOTION has to be provided");
1199 particle.template setField<DYNBEHAVIOUR, COMPUTE_MOTION>(value);
1200}

References providesComputeMotion().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getAcceleration()

template<typename T , typename PARTICLETYPE >
Vector< T, PARTICLETYPE::d > olb::particles::access::getAcceleration ( Particle< T, PARTICLETYPE > particle)

Definition at line 742 of file dataAccessWrappers.h.

743{
744 using namespace descriptors;
745 constexpr unsigned D = PARTICLETYPE::d;
746
747 static_assert(providesForce<PARTICLETYPE>(), "Field FORCING:FORCE has to be provided");
748 static_assert(providesMass<PARTICLETYPE>(), "Field PHYSPROPERTIES:MASS has to be provided");
749
750 Vector<T,D> acceleration;
751 Vector<T,D> force = getForce(particle);
752 T mass = getMass(particle);
753 for (unsigned iDim=0; iDim<D; ++iDim) {
754 acceleration[iDim] = force[iDim] / mass;
755 }
756 return acceleration;
757}
Plain old scalar vector.
Vector< T, PARTICLETYPE::d > getForce(Particle< T, PARTICLETYPE > particle)
T getMass(Particle< T, PARTICLETYPE > particle, T shapeFactor=T{1})

References getForce(), getMass(), providesForce(), and providesMass().

+ Here is the call graph for this function:

◆ getAccelerationStrd()

template<typename T , typename PARTICLETYPE >
Vector< T, PARTICLETYPE::d > olb::particles::access::getAccelerationStrd ( Particle< T, PARTICLETYPE > particle)

Definition at line 722 of file dataAccessWrappers.h.

723{
724 using namespace descriptors;
725
726 if(providesAccelerationStrd(particle)){
727 return particle.template getField<MOBILITY,ACCELERATION_STRD>();
728 }
729}
constexpr bool providesAccelerationStrd()

References providesAccelerationStrd().

+ Here is the call graph for this function:

◆ getAdhesion()

template<typename T , typename PARTICLETYPE >
Vector< T, 2 > olb::particles::access::getAdhesion ( Particle< T, PARTICLETYPE > particle)

Definition at line 597 of file dataAccessWrappers.h.

598{
599 using namespace descriptors;
600
601 static_assert(providesAdhesion<PARTICLETYPE>(), "Field FORCING:ADHESION has to be provided");
602 Vector<T,2> adhesion( particle.template getField<FORCING,ADHESION>() );
603 return adhesion;
604}

References providesAdhesion().

+ Here is the call graph for this function:

◆ getAngAcceleration()

template<typename T , typename PARTICLETYPE >
Vector< T, utilities::dimensions::convert< PARTICLETYPE::d >::rotation > olb::particles::access::getAngAcceleration ( Particle< T, PARTICLETYPE > particle)

Definition at line 762 of file dataAccessWrappers.h.

764{
765 using namespace descriptors;
766
768 static_assert(providesTorque<PARTICLETYPE>(), "Field FORCING:TORQUE has to be provided");
769 static_assert(providesMomentOfInertia<PARTICLETYPE>(), "Field PHYSPROPERTIES:MOFI has to be provided");
770 Vector<T,Drot> angularAcceleration;
771 Vector<T,Drot> torque( getTorque(particle));
772 Vector<T,Drot> momentOfInertia( getMomentOfInertia(particle) );
773 if constexpr (PARTICLETYPE::d == 3 && providesRotationMatrix<PARTICLETYPE>()) {
774 const Matrix<T,3,3> rotationMatrix(getRotationMatrix(particle));
775 angularAcceleration = calcAngAcceleration3D( torque, momentOfInertia, rotationMatrix );
776 } else {
777 for (unsigned iRot=0; iRot<Drot; ++iRot) {
778 angularAcceleration[iRot] = torque[iRot] / momentOfInertia[iRot];
779 }
780 }
781 return angularAcceleration;
782}
Matrix with a defined number of ROWS and columns (COLS)
Definition matrix.h:33
Vector< T, utilities::dimensions::convert< PARTICLETYPE::d >::matrix > getRotationMatrix(Particle< T, PARTICLETYPE > particle)
Vector< T, utilities::dimensions::convert< PARTICLETYPE::d >::rotation > getMomentOfInertia(Particle< T, PARTICLETYPE > particle)
Vector< T, 3 > calcAngAcceleration3D(Vector< T, 3 > &torque, Vector< T, 3 > &momentOfInertia, const Matrix< T, 3, 3 > &rotationMatrix)
Vector< T, utilities::dimensions::convert< PARTICLETYPE::d >::rotation > getTorque(Particle< T, PARTICLETYPE > particle)
Converts dimensions by deriving from given cartesian dimension D.

References calcAngAcceleration3D(), getMomentOfInertia(), getRotationMatrix(), getTorque(), providesMomentOfInertia(), providesRotationMatrix(), and providesTorque().

+ Here is the call graph for this function:

◆ getAngAccelerationStrd()

template<typename T , typename PARTICLETYPE >
Vector< T, utilities::dimensions::convert< PARTICLETYPE::d >::rotation > olb::particles::access::getAngAccelerationStrd ( Particle< T, PARTICLETYPE > particle)

Definition at line 785 of file dataAccessWrappers.h.

786{
787 using namespace descriptors;
788
789 if(providesAngAccelerationStrd(particle)){
790 return particle.template getField<MOBILITY,ANG_ACC_STRD>();
791 }
792}
constexpr bool providesAngAccelerationStrd()

References providesAngAccelerationStrd().

+ Here is the call graph for this function:

◆ getAngle()

template<bool ensureAngularBounds = false, typename T , typename PARTICLETYPE >
Vector< T, utilities::dimensions::convert< PARTICLETYPE::d >::rotation > olb::particles::access::getAngle ( Particle< T, PARTICLETYPE > particle)

Definition at line 506 of file dataAccessWrappers.h.

507{
508 using namespace descriptors;
510 static_assert(providesAngle<PARTICLETYPE>(), "Field SURFACE:ANGLE has to be provided");
511 Vector<T,Drot> angle( particle.template getField<SURFACE,ANGLE>() );
512 if constexpr (ensureAngularBounds){
513 for (unsigned iRot=0; iRot<Drot; ++iRot) {
514 angle[iRot] = util::fmod( angle[iRot], 2.*M_PI );
515 }
516 }
517 return angle;
518}
#define M_PI

References olb::util::fmod(), M_PI, and providesAngle().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getAngularVelocity()

template<typename T , typename PARTICLETYPE >
Vector< T, utilities::dimensions::convert< PARTICLETYPE::d >::rotation > olb::particles::access::getAngularVelocity ( Particle< T, PARTICLETYPE > particle)

Definition at line 556 of file dataAccessWrappers.h.

557{
558 using namespace descriptors;
560 static_assert(providesAngVelocity<PARTICLETYPE>(), "Field MOBILITY:ANG_VELOCITY has to be provided");
561 Vector<T,Drot> angVelocity( particle.template getField<MOBILITY,ANG_VELOCITY>() );
562 return angVelocity;
563}

References providesAngVelocity().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getContactMaterial()

template<typename T , typename PARTICLETYPE >
unsigned olb::particles::access::getContactMaterial ( Particle< T, PARTICLETYPE > particle)

Definition at line 906 of file dataAccessWrappers.h.

907{
908 using namespace descriptors;
909 static_assert(providesContactMaterial(particle),
910 "Field MECHPROPERTIES::MATERIAL has to be provided");
911 return particle.template getField<MECHPROPERTIES, MATERIAL>();
912}
constexpr bool providesContactMaterial()

References providesContactMaterial().

+ Here is the call graph for this function:

◆ getCORoffset()

template<typename T , typename PARTICLETYPE >
Vector< T, PARTICLETYPE::d > olb::particles::access::getCORoffset ( Particle< T, PARTICLETYPE > particle)

Definition at line 871 of file dataAccessWrappers.h.

872{
873 using namespace descriptors;
874 constexpr unsigned D = PARTICLETYPE::d;
875 static_assert(providesCORoffset<PARTICLETYPE>(), "Field SURFACE:COR_OFFSET has to be provided");
876 Vector<T,D> offsetCOR( particle.template getField<SURFACE,COR_OFFSET>() );
877 return offsetCOR;
878}

References providesCORoffset().

+ Here is the call graph for this function:

◆ getCuboidSurfaceExtent()

template<typename T , typename PARTICLETYPE >
auto olb::particles::access::getCuboidSurfaceExtent ( Particle< T, PARTICLETYPE > particle)

Definition at line 839 of file dataAccessWrappers.h.

840{
841 using namespace descriptors;
842 constexpr unsigned D = PARTICLETYPE::d;
843 static_assert(providesSmoothIndicator<PARTICLETYPE>(), "Field FORCING:SINDICATOR has to be provided");
844 using SIndicatorType = std::conditional_t<
845 D == 2,
848 >;
849 //Retrieve surface indicator
850 auto sIndicatorPtr = getSmoothIndicatorPtr(particle);
851 auto sIndicatorCuboidPtr = static_cast<SIndicatorType*>(sIndicatorPtr);
852 auto& indicatorCuboid = sIndicatorCuboidPtr->getIndicator();
853 //Retrieve extent
854 if constexpr(D==2){
855 Vector<T,D> extent(
856 indicatorCuboid.getxLength(),
857 indicatorCuboid.getyLength()
858 );
859 return extent;
860 } else {
861 Vector<T,D> extent(
862 indicatorCuboid.getxLength(),
863 indicatorCuboid.getyLength(),
864 indicatorCuboid.getzLength()
865 );
866 return extent;
867 }
868}
implements a smooth cuboid in 2D with an _epsilon sector.
implements a smooth particle cuboid in 3D with an _epsilon sector.
auto getSmoothIndicatorPtr(Particle< T, PARTICLETYPE > particle)

References getSmoothIndicatorPtr(), and providesSmoothIndicator().

+ Here is the call graph for this function:

◆ getDensity()

template<typename T , typename PARTICLETYPE >
T olb::particles::access::getDensity ( Particle< T, PARTICLETYPE > particle,
T shapeFactor = T{1} )

Definition at line 686 of file dataAccessWrappers.h.

686 {1} )
687{
688 using namespace descriptors;
689 static_assert(providesMassOrDensity(particle),
690 "Field PHYSPROPERTIES:MASS or PHYSPROPERTIES:DENSITY has to be provided");
691 T density;
692 // Always rather use the density field than the mass field
693 if constexpr(providesDensity(particle)) {
694 density = particle.template getField<PHYSPROPERTIES, DENSITY>();
695 }
696 else {
697 const T mass = particle.template getField<PHYSPROPERTIES, MASS>();
698 density = mass / getVolume(particle, shapeFactor);
699 }
700 return density;
701}

◆ getDynamicsID()

template<typename T , typename PARTICLETYPE >
unsigned short olb::particles::access::getDynamicsID ( Particle< T, PARTICLETYPE > & particle)

Definition at line 816 of file dataAccessWrappers.h.

817{
818 using namespace descriptors;
819 static_assert(providesDynamicsID<PARTICLETYPE>(),
820 "Field DYNBEHAVIOUR:DYNAMICS_ID has to be provided");
821 unsigned short dynamicsID = particle.template getField<DYNBEHAVIOUR,DYNAMICS_ID>();
822 return dynamicsID;
823}

References providesDynamicsID().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getElongation()

template<typename T , typename PARTICLETYPE >
Vector< T, PARTICLETYPE::d > olb::particles::access::getElongation ( Particle< T, PARTICLETYPE > particle)

Definition at line 881 of file dataAccessWrappers.h.

882{
883 using namespace descriptors;
884 constexpr unsigned D = PARTICLETYPE::d;
885 static_assert(providesElongation<PARTICLETYPE>(), "Field SURFACE:ELONGATION has to be provided");
886 Vector<T,D> elongation( particle.template getField<SURFACE,ELONGATION>() );
887 return elongation;
888}

References providesElongation().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getEnlargementForContact()

template<typename T , typename PARTICLETYPE >
T olb::particles::access::getEnlargementForContact ( Particle< T, PARTICLETYPE > particle)

Definition at line 892 of file dataAccessWrappers.h.

893{
894 using namespace descriptors;
895 if constexpr (access::providesEnlargementForContactTreatment<PARTICLETYPE>()) {
896 return particle.template getField<NUMERICPROPERTIES,ENLARGEMENT_FOR_CONTACT>();
897 }
898 else {
899 return T{0.};
900 }
901
902 __builtin_unreachable();
903}

References providesEnlargementForContactTreatment().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getForce()

template<typename T , typename PARTICLETYPE >
Vector< T, PARTICLETYPE::d > olb::particles::access::getForce ( Particle< T, PARTICLETYPE > particle)

Definition at line 566 of file dataAccessWrappers.h.

567{
568 using namespace descriptors;
569 constexpr unsigned D = PARTICLETYPE::d;
570 static_assert(providesForce<PARTICLETYPE>(), "Field FORCING:FORCE has to be provided");
571 Vector<T,D> force( particle.template getField<FORCING,FORCE>() );
572 return force;
573}

References providesForce().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getGlobalIC()

template<typename T , typename PARTICLETYPE >
auto olb::particles::access::getGlobalIC ( Particle< T, PARTICLETYPE > particle)

Definition at line 806 of file dataAccessWrappers.h.

807{
808 using namespace descriptors;
809 static_assert(providesID<PARTICLETYPE>(), "Field PARALLELIZATION:ID has to be provided");
810 auto globalIC = particle.template getField<PARALLELIZATION,IC>();
811 return globalIC;
812}

References providesID().

+ Here is the call graph for this function:

◆ getGlobalID()

template<typename T , typename PARTICLETYPE >
auto olb::particles::access::getGlobalID ( Particle< T, PARTICLETYPE > particle)

Definition at line 796 of file dataAccessWrappers.h.

797{
798 using namespace descriptors;
799 static_assert(providesID<PARTICLETYPE>(), "Field PARALLELIZATION:ID has to be provided");
800 auto globalID = particle.template getField<PARALLELIZATION,ID>();
801 return globalID;
802}

References providesID().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getMass()

template<typename T , typename PARTICLETYPE >
T olb::particles::access::getMass ( Particle< T, PARTICLETYPE > particle,
T shapeFactor = T{1} )

Definition at line 704 of file dataAccessWrappers.h.

704 {1} )
705{
706 using namespace descriptors;
707 static_assert(providesMassOrDensity(particle),
708 "Field PHYSPROPERTIES:MASS or PHYSPROPERTIES:DENSITY has to be provided");
709 T mass;
710 // Always rather use the mass field than the density field
711 if constexpr(providesMass(particle)) {
712 mass = particle.template getField<PHYSPROPERTIES, MASS>();
713 }
714 else {
715 const T density = particle.template getField<PHYSPROPERTIES, DENSITY>();
716 mass = density * getVolume(particle, shapeFactor);
717 }
718 return mass;
719}
+ Here is the caller graph for this function:

◆ getMomentOfInertia()

template<typename T , typename PARTICLETYPE >
Vector< T, utilities::dimensions::convert< PARTICLETYPE::d >::rotation > olb::particles::access::getMomentOfInertia ( Particle< T, PARTICLETYPE > particle)

Definition at line 586 of file dataAccessWrappers.h.

587{
588 using namespace descriptors;
590 static_assert(providesMomentOfInertia<PARTICLETYPE>(), "Field PHYSPROPERTIES:MOFI has to be provided");
591 Vector<T,Drot> mofi( particle.template getField<PHYSPROPERTIES,MOFI>() );
592 return mofi;
593}

References providesMomentOfInertia().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getPosition()

template<typename T , typename PARTICLETYPE >
Vector< T, PARTICLETYPE::d > olb::particles::access::getPosition ( Particle< T, PARTICLETYPE > particle)

Definition at line 495 of file dataAccessWrappers.h.

496{
497 using namespace descriptors;
498 constexpr unsigned D = PARTICLETYPE::d;
499 static_assert(providesPosition<PARTICLETYPE>(),
500 "Field GENERAL:POSITION has to be provided");
501 Vector<T,D> position( particle.template getField<GENERAL,POSITION>() );
502 return position;
503}

References providesPosition().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getRadius()

template<typename T , typename PARTICLETYPE >
T olb::particles::access::getRadius ( Particle< T, PARTICLETYPE > & particle)

Definition at line 640 of file dataAccessWrappers.h.

641{
642 using namespace descriptors;
643 T radius;
644 if constexpr (providesSmoothIndicator<PARTICLETYPE>() ) {
645 radius = getSmoothIndicatorPtr(particle)->getCircumRadius();
646 }
647 else if constexpr ( providesRadius<PARTICLETYPE>() ) {
648 radius = particle.template getField<PHYSPROPERTIES,RADIUS>();
649 }
650 else {
651 std::cerr << "ERROR: no Field found providing radius!" << std::endl;
652 }
653 return radius;
654}

References getSmoothIndicatorPtr(), providesRadius(), and providesSmoothIndicator().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getRotationMatrix()

template<typename T , typename PARTICLETYPE >
Vector< T, utilities::dimensions::convert< PARTICLETYPE::d >::matrix > olb::particles::access::getRotationMatrix ( Particle< T, PARTICLETYPE > particle)

Definition at line 521 of file dataAccessWrappers.h.

522{
523 using namespace descriptors;
525 static_assert(providesRotationMatrix<PARTICLETYPE>(), "Field SURFACE:ROT_MATRIX has to be provided");
526 Vector<T,DrotMat> rotationMatrix( particle.template getField<SURFACE,ROT_MATRIX>() );
527 return rotationMatrix;
528}

References providesRotationMatrix().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getSmoothIndicatorPtr()

template<typename T , typename PARTICLETYPE >
auto olb::particles::access::getSmoothIndicatorPtr ( Particle< T, PARTICLETYPE > particle)

Definition at line 630 of file dataAccessWrappers.h.

631{
632 using namespace descriptors;
633 static_assert(providesSmoothIndicator<PARTICLETYPE>(), "Field FORCING:SINDICATOR has to be provided");
634 auto sIndicatorPtr = particle.template getField<SURFACE,SINDICATOR>();
635 return sIndicatorPtr;
636}

References providesSmoothIndicator().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getSurfaceNormal()

template<unsigned dir = 2, typename T , typename PARTICLETYPE >
Vector< T, PARTICLETYPE::d > olb::particles::access::getSurfaceNormal ( Particle< T, PARTICLETYPE > particle)

Definition at line 531 of file dataAccessWrappers.h.

532{
533 using namespace descriptors;
534 constexpr unsigned D = PARTICLETYPE::d;
535 auto rotationMatrix = getRotationMatrix( particle );
536 //Note: Convention here, positively pointing towards dir (default z-dir)
537 Vector<T,D> normal;
538 for (unsigned iDim=0; iDim<D; ++iDim) {
539 unsigned iMat = D*iDim+dir;
540 normal[iDim] = rotationMatrix[iMat];
541 }
542 return normal;
543}

References getRotationMatrix().

+ Here is the call graph for this function:

◆ getTorque()

template<typename T , typename PARTICLETYPE >
Vector< T, utilities::dimensions::convert< PARTICLETYPE::d >::rotation > olb::particles::access::getTorque ( Particle< T, PARTICLETYPE > particle)

Definition at line 576 of file dataAccessWrappers.h.

577{
578 using namespace descriptors;
580 static_assert(providesTorque<PARTICLETYPE>(), "Field FORCING:TORQUE has to be provided");
581 Vector<T,Drot> torque( particle.template getField<FORCING,TORQUE>() );
582 return torque;
583}

References providesTorque().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getVelocity()

template<typename T , typename PARTICLETYPE >
Vector< T, PARTICLETYPE::d > olb::particles::access::getVelocity ( Particle< T, PARTICLETYPE > particle)

Definition at line 546 of file dataAccessWrappers.h.

547{
548 using namespace descriptors;
549 constexpr unsigned D = PARTICLETYPE::d;
550 static_assert(providesVelocity<PARTICLETYPE>(), "Field MOBILITY:VELOCITY has to be provided");
551 Vector<T,D> velocity( particle.template getField<MOBILITY,VELOCITY>() );
552 return velocity;
553}

References providesVelocity().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getVolume()

template<typename T , typename PARTICLETYPE >
T olb::particles::access::getVolume ( Particle< T, PARTICLETYPE > particle,
T shapeFactor = T{1} )

Returns the volume of a particle (for subgrid the volume of a sphere/circle is multiplied by the shapeFactor), i.e., the shape factor is the volume ratio of the shape of interest to a sphere/circle.

Definition at line 659 of file dataAccessWrappers.h.

659 {1} )
660{
661 using namespace descriptors;
662 constexpr unsigned D = PARTICLETYPE::d;
663 T volume;
664 if constexpr(providesSurface(particle)) {
665 if constexpr (D == 3) {
666 volume = getSmoothIndicatorPtr(particle)->getVolume();
667 }
668 else {
669 volume = getSmoothIndicatorPtr(particle)->getArea();
670 }
671 }
672 else {
673 const T radius = getRadius(particle);
674 if constexpr(D == 3) {
675 volume = (4./3.) * M_PI * util::pow(radius, D);
676 }
677 else {
678 volume = M_PI * util::pow(radius, D);
679 }
680 volume *= shapeFactor;
681 }
682 return volume;
683}
T getRadius(Particle< T, PARTICLETYPE > &particle)

◆ is2D() [1/2]

template<typename PARTICLETYPE >
bool olb::particles::access::is2D ( )
constexpr

Definition at line 473 of file dataAccessWrappers.h.

474{
475 return (PARTICLETYPE::d==2);
476}
+ Here is the caller graph for this function:

◆ is2D() [2/2]

template<typename T , typename PARTICLETYPE >
bool olb::particles::access::is2D ( Particle< T, PARTICLETYPE > & particle)
constexpr

Definition at line 478 of file dataAccessWrappers.h.

478 {
479 return is2D<PARTICLETYPE>();
480}

References is2D().

+ Here is the call graph for this function:

◆ is3D() [1/2]

template<typename PARTICLETYPE >
bool olb::particles::access::is3D ( )
constexpr

Definition at line 483 of file dataAccessWrappers.h.

484{
485 return (PARTICLETYPE::d==3);
486}
+ Here is the caller graph for this function:

◆ is3D() [2/2]

template<typename T , typename PARTICLETYPE >
bool olb::particles::access::is3D ( Particle< T, PARTICLETYPE > & particle)
constexpr

Definition at line 488 of file dataAccessWrappers.h.

488 {
489 return is3D<PARTICLETYPE>();
490}

References is3D().

+ Here is the call graph for this function:

◆ isActive()

template<typename T , typename PARTICLETYPE >
bool olb::particles::access::isActive ( Particle< T, PARTICLETYPE > particle)

Definition at line 618 of file dataAccessWrappers.h.

619{
620 using namespace descriptors;
621 bool active = true;
622 if constexpr(providesActive<PARTICLETYPE>()) {
623 active = particle.template getField<DYNBEHAVIOUR,ACTIVE>();
624 }
625 return active;
626}

References providesActive().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ isContactComputationEnabled() [1/2]

template<typename T , typename PARTICLETYPE >
bool olb::particles::access::isContactComputationEnabled ( Particle< T, PARTICLETYPE > & particle)

Check if contact should be regarded (specification for a single particle)

Definition at line 1170 of file dataAccessWrappers.h.

1171{
1172 using namespace descriptors;
1173
1174 // if the field is not provided, return true by default
1175 // (meaning that the contact forces are computed and applied to the force field)
1176 if constexpr(!providesComputeContact<PARTICLETYPE>()) {
1177 return true;
1178 }
1179 else {
1180 return particle.template getField<DYNBEHAVIOUR,COMPUTE_CONTACT>();
1181 }
1182
1183 __builtin_unreachable();
1184}

References providesComputeContact().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ isContactComputationEnabled() [2/2]

template<typename T , typename PARTICLETYPE >
bool olb::particles::access::isContactComputationEnabled ( Particle< T, PARTICLETYPE > & particleA,
Particle< T, PARTICLETYPE > & particleB )

Check if contact should be regarded (interaction of two known particles)

Definition at line 1188 of file dataAccessWrappers.h.

1190{
1191 return (isContactComputationEnabled(particleA) || isContactComputationEnabled(particleB));
1192}
bool isContactComputationEnabled(Particle< T, PARTICLETYPE > &particle)
Check if contact should be regarded (specification for a single particle)

References isContactComputationEnabled().

+ Here is the call graph for this function:

◆ isDetaching()

template<typename T , typename PARTICLETYPE >
bool olb::particles::access::isDetaching ( Particle< T, PARTICLETYPE > & particle)

Definition at line 827 of file dataAccessWrappers.h.

828{
829 using namespace descriptors;
830 static_assert(providesDetaching<PARTICLETYPE>(),
831 "Field DYNBEHAVIOUR:DETACHING has to be provided");
832 bool detaching = particle.template getField<DYNBEHAVIOUR,DETACHING>();
833 return detaching;
834 }

References providesDetaching().

+ Here is the call graph for this function:

◆ isMotionComputationEnabled()

template<typename T , typename PARTICLETYPE >
bool olb::particles::access::isMotionComputationEnabled ( Particle< T, PARTICLETYPE > & particle)

Check if motion is enabled.

Definition at line 1153 of file dataAccessWrappers.h.

1154{
1155 using namespace descriptors;
1156
1157 // if the field is not provided, return true by default
1158 if constexpr(!providesComputeMotion<PARTICLETYPE>()) {
1159 return true;
1160 }
1161 else {
1162 return particle.template getField<DYNBEHAVIOUR,COMPUTE_MOTION>();
1163 }
1164
1165 __builtin_unreachable();
1166}

References providesComputeMotion().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ isValid()

template<typename T , typename PARTICLETYPE >
bool olb::particles::access::isValid ( Particle< T, PARTICLETYPE > particle)

Definition at line 607 of file dataAccessWrappers.h.

608{
609 using namespace descriptors;
610 bool valid = true;
611 if constexpr(providesValid<PARTICLETYPE>()) {
612 valid = !particle.template getField<GENERAL,INVALID>();
613 }
614 return valid;
615}

References providesValid().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ providesAccelerationStrd() [1/2]

template<typename PARTICLETYPE >
bool olb::particles::access::providesAccelerationStrd ( )
constexpr

Definition at line 418 of file dataAccessWrappers.h.

419{
420 using namespace descriptors;
421 return PARTICLETYPE::template providesNested<MOBILITY,ACCELERATION_STRD>();
422}
+ Here is the caller graph for this function:

◆ providesAccelerationStrd() [2/2]

template<typename T , typename PARTICLETYPE >
bool olb::particles::access::providesAccelerationStrd ( Particle< T, PARTICLETYPE > & particle)
constexpr

Definition at line 424 of file dataAccessWrappers.h.

424 {
425 return providesAccelerationStrd<PARTICLETYPE>();
426}

References providesAccelerationStrd().

+ Here is the call graph for this function:

◆ providesActive() [1/2]

template<typename PARTICLETYPE >
bool olb::particles::access::providesActive ( )
constexpr

Provides field ACTIVE.

Definition at line 290 of file dataAccessWrappers.h.

291{
292 using namespace descriptors;
293 return PARTICLETYPE::template providesNested<DYNBEHAVIOUR,ACTIVE>();
294}
+ Here is the caller graph for this function:

◆ providesActive() [2/2]

template<typename T , typename PARTICLETYPE >
bool olb::particles::access::providesActive ( Particle< T, PARTICLETYPE > & particle)
constexpr

Definition at line 296 of file dataAccessWrappers.h.

296 {
297 return providesActive<PARTICLETYPE>();
298}

References providesActive().

+ Here is the call graph for this function:

◆ providesAdhesion() [1/2]

template<typename PARTICLETYPE >
bool olb::particles::access::providesAdhesion ( )
constexpr

Provides field ADHESION.

Definition at line 242 of file dataAccessWrappers.h.

243{
244 using namespace descriptors;
245 return PARTICLETYPE::template providesNested<FORCING,ADHESION>();
246}
+ Here is the caller graph for this function:

◆ providesAdhesion() [2/2]

template<typename T , typename PARTICLETYPE >
bool olb::particles::access::providesAdhesion ( Particle< T, PARTICLETYPE > & particle)
constexpr

Definition at line 248 of file dataAccessWrappers.h.

248 {
249 return providesAdhesion<PARTICLETYPE>();
250}

References providesAdhesion().

+ Here is the call graph for this function:

◆ providesAngAccelerationStrd() [1/2]

template<typename PARTICLETYPE >
bool olb::particles::access::providesAngAccelerationStrd ( )
constexpr

Definition at line 429 of file dataAccessWrappers.h.

430{
431 using namespace descriptors;
432 return PARTICLETYPE::template providesNested<MOBILITY,ANG_ACC_STRD>();
433}
+ Here is the caller graph for this function:

◆ providesAngAccelerationStrd() [2/2]

template<typename T , typename PARTICLETYPE >
bool olb::particles::access::providesAngAccelerationStrd ( Particle< T, PARTICLETYPE > & particle)
constexpr

Definition at line 435 of file dataAccessWrappers.h.

435 {
436 return providesAngAccelerationStrd<PARTICLETYPE>();
437}

References providesAngAccelerationStrd().

+ Here is the call graph for this function:

◆ providesAngle() [1/2]

template<typename PARTICLETYPE >
bool olb::particles::access::providesAngle ( )
constexpr

Provides field ANGLE.

Definition at line 182 of file dataAccessWrappers.h.

183{
184 using namespace descriptors;
185 return PARTICLETYPE::template providesNested<SURFACE,ANGLE>();
186}
+ Here is the caller graph for this function:

◆ providesAngle() [2/2]

template<typename T , typename PARTICLETYPE >
bool olb::particles::access::providesAngle ( Particle< T, PARTICLETYPE > & particle)
constexpr

Definition at line 188 of file dataAccessWrappers.h.

188 {
189 return providesAngle<PARTICLETYPE>();
190}

References providesAngle().

+ Here is the call graph for this function:

◆ providesAngVelocity() [1/2]

template<typename PARTICLETYPE >
bool olb::particles::access::providesAngVelocity ( )
constexpr

Provides field VELOCITY.

Definition at line 206 of file dataAccessWrappers.h.

207{
208 using namespace descriptors;
209 return PARTICLETYPE::template providesNested<MOBILITY,ANG_VELOCITY>();
210}
+ Here is the caller graph for this function:

◆ providesAngVelocity() [2/2]

template<typename T , typename PARTICLETYPE >
bool olb::particles::access::providesAngVelocity ( Particle< T, PARTICLETYPE > & particle)
constexpr

Definition at line 212 of file dataAccessWrappers.h.

212 {
213 return providesAngVelocity<PARTICLETYPE>();
214}

References providesAngVelocity().

+ Here is the call graph for this function:

◆ providesComputeContact() [1/2]

template<typename PARTICLETYPE >
bool olb::particles::access::providesComputeContact ( )
constexpr

Provides field COMPUTE_CONTACT.

Definition at line 314 of file dataAccessWrappers.h.

315{
316 using namespace descriptors;
317 return PARTICLETYPE::template providesNested<DYNBEHAVIOUR,COMPUTE_CONTACT>();
318}
+ Here is the caller graph for this function:

◆ providesComputeContact() [2/2]

template<typename T , typename PARTICLETYPE >
bool olb::particles::access::providesComputeContact ( Particle< T, PARTICLETYPE > & particle)
constexpr

Definition at line 320 of file dataAccessWrappers.h.

320 {
321 return providesComputeContact<PARTICLETYPE>();
322}

References providesComputeContact().

+ Here is the call graph for this function:

◆ providesComputeMotion() [1/2]

template<typename PARTICLETYPE >
bool olb::particles::access::providesComputeMotion ( )
constexpr

Provides field COMPUTE_MOTION.

Definition at line 302 of file dataAccessWrappers.h.

303{
304 using namespace descriptors;
305 return PARTICLETYPE::template providesNested<DYNBEHAVIOUR,COMPUTE_MOTION>();
306}
+ Here is the caller graph for this function:

◆ providesComputeMotion() [2/2]

template<typename T , typename PARTICLETYPE >
bool olb::particles::access::providesComputeMotion ( Particle< T, PARTICLETYPE > & particle)
constexpr

Definition at line 308 of file dataAccessWrappers.h.

308 {
309 return providesComputeMotion<PARTICLETYPE>();
310}

References providesComputeMotion().

+ Here is the call graph for this function:

◆ providesContactMaterial() [1/2]

template<typename PARTICLETYPE >
bool olb::particles::access::providesContactMaterial ( )
constexpr

Definition at line 462 of file dataAccessWrappers.h.

463{
464 using namespace descriptors;
465 return PARTICLETYPE::template providesNested<MECHPROPERTIES,MATERIAL>();
466}
+ Here is the caller graph for this function:

◆ providesContactMaterial() [2/2]

template<typename T , typename PARTICLETYPE >
bool olb::particles::access::providesContactMaterial ( Particle< T, PARTICLETYPE > & particle)
constexpr

Definition at line 468 of file dataAccessWrappers.h.

468 {
469 return providesContactMaterial<PARTICLETYPE>();
470}

References providesContactMaterial().

+ Here is the call graph for this function:

◆ providesCORoffset() [1/2]

template<typename PARTICLETYPE >
bool olb::particles::access::providesCORoffset ( )
constexpr

Definition at line 396 of file dataAccessWrappers.h.

397{
398 using namespace descriptors;
399 return PARTICLETYPE::template providesNested<SURFACE,COR_OFFSET>();
400}
+ Here is the caller graph for this function:

◆ providesCORoffset() [2/2]

template<typename T , typename PARTICLETYPE >
bool olb::particles::access::providesCORoffset ( Particle< T, PARTICLETYPE > & particle)
constexpr

Definition at line 402 of file dataAccessWrappers.h.

402 {
403 return providesCORoffset<PARTICLETYPE>();
404}

References providesCORoffset().

+ Here is the call graph for this function:

◆ providesDensity() [1/2]

template<typename PARTICLETYPE >
bool olb::particles::access::providesDensity ( )
constexpr

Provides field DENSITY.

Definition at line 146 of file dataAccessWrappers.h.

147{
148 using namespace descriptors;
149 return PARTICLETYPE::template providesNested<PHYSPROPERTIES,DENSITY>();
150}
+ Here is the caller graph for this function:

◆ providesDensity() [2/2]

template<typename T , typename PARTICLETYPE >
bool olb::particles::access::providesDensity ( Particle< T, PARTICLETYPE > & particle)
constexpr

Definition at line 152 of file dataAccessWrappers.h.

152 {
153 return providesDensity<PARTICLETYPE>();
154}

References providesDensity().

+ Here is the call graph for this function:

◆ providesDetaching() [1/2]

template<typename PARTICLETYPE >
bool olb::particles::access::providesDetaching ( )
constexpr

Definition at line 385 of file dataAccessWrappers.h.

386{
387 using namespace descriptors;
388 return PARTICLETYPE::template providesNested<DYNBEHAVIOUR,DETACHING>();
389}
+ Here is the caller graph for this function:

◆ providesDetaching() [2/2]

template<typename T , typename PARTICLETYPE >
bool olb::particles::access::providesDetaching ( Particle< T, PARTICLETYPE > & particle)
constexpr

Definition at line 391 of file dataAccessWrappers.h.

391 {
392 return providesDetaching<PARTICLETYPE>();
393}

References providesDetaching().

+ Here is the call graph for this function:

◆ providesDynamicsID() [1/2]

template<typename PARTICLETYPE >
bool olb::particles::access::providesDynamicsID ( )
constexpr

Provides field DYNAMICS_ID.

Definition at line 278 of file dataAccessWrappers.h.

279{
280 using namespace descriptors;
281 return PARTICLETYPE::template providesNested<DYNBEHAVIOUR,DYNAMICS_ID>();
282}
+ Here is the caller graph for this function:

◆ providesDynamicsID() [2/2]

template<typename T , typename PARTICLETYPE >
bool olb::particles::access::providesDynamicsID ( Particle< T, PARTICLETYPE > & particle)
constexpr

Definition at line 284 of file dataAccessWrappers.h.

284 {
285 return providesDynamicsID<PARTICLETYPE>();
286}

References providesDynamicsID().

+ Here is the call graph for this function:

◆ providesElongation() [1/2]

template<typename PARTICLETYPE >
bool olb::particles::access::providesElongation ( )
constexpr

Definition at line 407 of file dataAccessWrappers.h.

408{
409 using namespace descriptors;
410 return PARTICLETYPE::template providesNested<SURFACE,ELONGATION>();
411}
+ Here is the caller graph for this function:

◆ providesElongation() [2/2]

template<typename T , typename PARTICLETYPE >
bool olb::particles::access::providesElongation ( Particle< T, PARTICLETYPE > & particle)
constexpr

Definition at line 413 of file dataAccessWrappers.h.

413 {
414 return providesElongation<PARTICLETYPE>();
415}

References providesElongation().

+ Here is the call graph for this function:

◆ providesEnlargementForContactTreatment() [1/2]

template<typename PARTICLETYPE >
bool olb::particles::access::providesEnlargementForContactTreatment ( )
constexpr

Definition at line 440 of file dataAccessWrappers.h.

441{
442 using namespace descriptors;
443 return PARTICLETYPE::template providesNested<NUMERICPROPERTIES,ENLARGEMENT_FOR_CONTACT>();
444}
+ Here is the caller graph for this function:

◆ providesEnlargementForContactTreatment() [2/2]

template<typename T , typename PARTICLETYPE >
bool olb::particles::access::providesEnlargementForContactTreatment ( Particle< T, PARTICLETYPE > & particle)
constexpr

Definition at line 446 of file dataAccessWrappers.h.

446 {
447 return providesEnlargementForContactTreatment<PARTICLETYPE>();
448}

References providesEnlargementForContactTreatment().

+ Here is the call graph for this function:

◆ providesForce() [1/2]

template<typename PARTICLETYPE >
bool olb::particles::access::providesForce ( )
constexpr

Provides field FORCE.

Definition at line 218 of file dataAccessWrappers.h.

219{
220 using namespace descriptors;
221 return PARTICLETYPE::template providesNested<FORCING,FORCE>();
222}
+ Here is the caller graph for this function:

◆ providesForce() [2/2]

template<typename T , typename PARTICLETYPE >
bool olb::particles::access::providesForce ( Particle< T, PARTICLETYPE > & particle)
constexpr

Definition at line 224 of file dataAccessWrappers.h.

224 {
225 return providesForce<PARTICLETYPE>();
226}

References providesForce().

+ Here is the call graph for this function:

◆ providesID() [1/2]

template<typename PARTICLETYPE >
bool olb::particles::access::providesID ( )
constexpr

Provides field ID.

Definition at line 98 of file dataAccessWrappers.h.

99{
100 using namespace descriptors;
101 return PARTICLETYPE::template providesNested<PARALLELIZATION,ID>();
102}
+ Here is the caller graph for this function:

◆ providesID() [2/2]

template<typename T , typename PARTICLETYPE >
bool olb::particles::access::providesID ( Particle< T, PARTICLETYPE > & particle)
constexpr

Definition at line 104 of file dataAccessWrappers.h.

104 {
105 return providesID<PARTICLETYPE>();
106}

References providesID().

+ Here is the call graph for this function:

◆ providesInvalid() [1/2]

template<typename PARTICLETYPE >
bool olb::particles::access::providesInvalid ( )
constexpr

Provides field ID.

Definition at line 110 of file dataAccessWrappers.h.

111{
112 using namespace descriptors;
113 return PARTICLETYPE::template providesNested<GENERAL,INVALID>();
114}
+ Here is the caller graph for this function:

◆ providesInvalid() [2/2]

template<typename T , typename PARTICLETYPE >
bool olb::particles::access::providesInvalid ( Particle< T, PARTICLETYPE > & particle)
constexpr

Definition at line 116 of file dataAccessWrappers.h.

116 {
117 return providesInvalid<PARTICLETYPE>();
118}

References providesInvalid().

+ Here is the call graph for this function:

◆ providesIsInContact() [1/2]

template<typename PARTICLETYPE >
bool olb::particles::access::providesIsInContact ( )
constexpr

Definition at line 451 of file dataAccessWrappers.h.

452{
453 using namespace descriptors;
454 return PARTICLETYPE::template providesNested<NUMERICPROPERTIES,IS_IN_CONTACT>();
455}
+ Here is the caller graph for this function:

◆ providesIsInContact() [2/2]

template<typename T , typename PARTICLETYPE >
bool olb::particles::access::providesIsInContact ( Particle< T, PARTICLETYPE > & particle)
constexpr

Definition at line 457 of file dataAccessWrappers.h.

457 {
458 return providesIsInContact<PARTICLETYPE>();
459}

References providesIsInContact().

+ Here is the call graph for this function:

◆ providesMass() [1/2]

template<typename PARTICLETYPE >
bool olb::particles::access::providesMass ( )
constexpr

Provides field MASS.

Definition at line 158 of file dataAccessWrappers.h.

159{
160 using namespace descriptors;
161 return PARTICLETYPE::template providesNested<PHYSPROPERTIES,MASS>();
162}
+ Here is the caller graph for this function:

◆ providesMass() [2/2]

template<typename T , typename PARTICLETYPE >
bool olb::particles::access::providesMass ( Particle< T, PARTICLETYPE > & particle)
constexpr

Definition at line 164 of file dataAccessWrappers.h.

164 {
165 return providesMass<PARTICLETYPE>();
166}

References providesMass().

+ Here is the call graph for this function:

◆ providesMassOrDensity() [1/2]

template<typename PARTICLETYPE >
bool olb::particles::access::providesMassOrDensity ( )
constexpr

Provides field MASS or DENSITY.

Definition at line 170 of file dataAccessWrappers.h.

171{
172 using namespace descriptors;
173 return providesMass<PARTICLETYPE>() || providesDensity<PARTICLETYPE>();
174}

References providesDensity(), and providesMass().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ providesMassOrDensity() [2/2]

template<typename T , typename PARTICLETYPE >
bool olb::particles::access::providesMassOrDensity ( Particle< T, PARTICLETYPE > & particle)
constexpr

Definition at line 176 of file dataAccessWrappers.h.

176 {
177 return providesMassOrDensity<PARTICLETYPE>();
178}

References providesMassOrDensity().

+ Here is the call graph for this function:

◆ providesMomentOfInertia() [1/2]

template<typename PARTICLETYPE >
bool olb::particles::access::providesMomentOfInertia ( )
constexpr

Provides field MOFI.

Definition at line 254 of file dataAccessWrappers.h.

255{
256 using namespace descriptors;
257 return PARTICLETYPE::template providesNested<PHYSPROPERTIES,MOFI>();
258}
+ Here is the caller graph for this function:

◆ providesMomentOfInertia() [2/2]

template<typename T , typename PARTICLETYPE >
bool olb::particles::access::providesMomentOfInertia ( Particle< T, PARTICLETYPE > & particle)
constexpr

Definition at line 260 of file dataAccessWrappers.h.

260 {
261 return providesMomentOfInertia<PARTICLETYPE>();
262}

References providesMomentOfInertia().

+ Here is the call graph for this function:

◆ providesParallelization() [1/2]

template<typename PARTICLETYPE >
bool olb::particles::access::providesParallelization ( )
constexpr

Provides group PARALLELIZATION.

Definition at line 363 of file dataAccessWrappers.h.

364{
365 using namespace descriptors;
366 return PARTICLETYPE::template providesNested<PARALLELIZATION>();
367}
+ Here is the caller graph for this function:

◆ providesParallelization() [2/2]

template<typename T , typename PARTICLETYPE >
bool olb::particles::access::providesParallelization ( Particle< T, PARTICLETYPE > & particle)
constexpr

Definition at line 369 of file dataAccessWrappers.h.

369 {
370 return providesParallelization<PARTICLETYPE>();
371}

References providesParallelization().

+ Here is the call graph for this function:

◆ providesPosition() [1/2]

template<typename PARTICLETYPE >
bool olb::particles::access::providesPosition ( )
constexpr

Provides field POSITION.

Definition at line 122 of file dataAccessWrappers.h.

123{
124 using namespace descriptors;
125 return PARTICLETYPE::template providesNested<GENERAL,POSITION>();
126}
+ Here is the caller graph for this function:

◆ providesPosition() [2/2]

template<typename T , typename PARTICLETYPE >
bool olb::particles::access::providesPosition ( Particle< T, PARTICLETYPE > & particle)
constexpr

Definition at line 128 of file dataAccessWrappers.h.

128 {
129 return providesPosition<PARTICLETYPE>();
130}

References providesPosition().

+ Here is the call graph for this function:

◆ providesRadius() [1/2]

template<typename PARTICLETYPE >
bool olb::particles::access::providesRadius ( )
constexpr

Provides field RADIUS.

Definition at line 134 of file dataAccessWrappers.h.

135{
136 using namespace descriptors;
137 return PARTICLETYPE::template providesNested<PHYSPROPERTIES,RADIUS>();
138}
+ Here is the caller graph for this function:

◆ providesRadius() [2/2]

template<typename T , typename PARTICLETYPE >
bool olb::particles::access::providesRadius ( Particle< T, PARTICLETYPE > & particle)
constexpr

Definition at line 140 of file dataAccessWrappers.h.

140 {
141 return providesRadius<PARTICLETYPE>();
142}

References providesRadius().

+ Here is the call graph for this function:

◆ providesRotationMatrix() [1/2]

template<typename PARTICLETYPE >
bool olb::particles::access::providesRotationMatrix ( )
constexpr

Provides field ROT_MATRIX.

Definition at line 326 of file dataAccessWrappers.h.

327{
328 using namespace descriptors;
329 return PARTICLETYPE::template providesNested<SURFACE,ROT_MATRIX>();
330}
+ Here is the caller graph for this function:

◆ providesRotationMatrix() [2/2]

template<typename T , typename PARTICLETYPE >
bool olb::particles::access::providesRotationMatrix ( Particle< T, PARTICLETYPE > & particle)
constexpr

Definition at line 332 of file dataAccessWrappers.h.

332 {
333 return providesRotationMatrix<PARTICLETYPE>();
334}

References providesRotationMatrix().

+ Here is the call graph for this function:

◆ providesSmoothIndicator() [1/2]

template<typename PARTICLETYPE >
bool olb::particles::access::providesSmoothIndicator ( )
constexpr

Definition at line 350 of file dataAccessWrappers.h.

351{
352 using namespace descriptors;
353 return PARTICLETYPE::template providesNested<SURFACE,SINDICATOR>();
354}
+ Here is the caller graph for this function:

◆ providesSmoothIndicator() [2/2]

template<typename T , typename PARTICLETYPE >
bool olb::particles::access::providesSmoothIndicator ( Particle< T, PARTICLETYPE > & particle)
constexpr

Definition at line 356 of file dataAccessWrappers.h.

357{
358 return providesSmoothIndicator<PARTICLETYPE>();
359}

References providesSmoothIndicator().

+ Here is the call graph for this function:

◆ providesSpecies() [1/2]

template<typename PARTICLETYPE >
bool olb::particles::access::providesSpecies ( )
constexpr

Definition at line 374 of file dataAccessWrappers.h.

375{
376 using namespace descriptors;
377 return PARTICLETYPE::template providesNested<PHYSPROPERTIES,SPECIES>();
378}
+ Here is the caller graph for this function:

◆ providesSpecies() [2/2]

template<typename T , typename PARTICLETYPE >
bool olb::particles::access::providesSpecies ( Particle< T, PARTICLETYPE > & particle)
constexpr

Definition at line 380 of file dataAccessWrappers.h.

380 {
381 return providesSpecies<PARTICLETYPE>();
382}

References providesSpecies().

+ Here is the call graph for this function:

◆ providesSurface() [1/2]

template<typename PARTICLETYPE >
bool olb::particles::access::providesSurface ( )
constexpr

Provides group SURFACE.

Definition at line 338 of file dataAccessWrappers.h.

339{
340 using namespace descriptors;
341 return PARTICLETYPE::template providesNested<SURFACE>();
342}
+ Here is the caller graph for this function:

◆ providesSurface() [2/2]

template<typename T , typename PARTICLETYPE >
bool olb::particles::access::providesSurface ( Particle< T, PARTICLETYPE > & particle)
constexpr

Definition at line 344 of file dataAccessWrappers.h.

344 {
345 return providesSurface<PARTICLETYPE>();
346}

References providesSurface().

+ Here is the call graph for this function:

◆ providesTorque() [1/2]

template<typename PARTICLETYPE >
bool olb::particles::access::providesTorque ( )
constexpr

Provides field TORQUE.

Definition at line 230 of file dataAccessWrappers.h.

231{
232 using namespace descriptors;
233 return PARTICLETYPE::template providesNested<FORCING,TORQUE>();
234}
+ Here is the caller graph for this function:

◆ providesTorque() [2/2]

template<typename T , typename PARTICLETYPE >
bool olb::particles::access::providesTorque ( Particle< T, PARTICLETYPE > & particle)
constexpr

Definition at line 236 of file dataAccessWrappers.h.

236 {
237 return providesTorque<PARTICLETYPE>();
238}

References providesTorque().

+ Here is the call graph for this function:

◆ providesValid() [1/2]

template<typename PARTICLETYPE >
bool olb::particles::access::providesValid ( )
constexpr

Provides field INVALID.

Definition at line 266 of file dataAccessWrappers.h.

267{
268 using namespace descriptors;
269 return PARTICLETYPE::template providesNested<GENERAL,INVALID>();
270}
+ Here is the caller graph for this function:

◆ providesValid() [2/2]

template<typename T , typename PARTICLETYPE >
bool olb::particles::access::providesValid ( Particle< T, PARTICLETYPE > & particle)
constexpr

Definition at line 272 of file dataAccessWrappers.h.

272 {
273 return providesValid<PARTICLETYPE>();
274}

References providesValid().

+ Here is the call graph for this function:

◆ providesVelocity() [1/2]

template<typename PARTICLETYPE >
bool olb::particles::access::providesVelocity ( )
constexpr

Provides field VELOCITY.

Definition at line 194 of file dataAccessWrappers.h.

195{
196 using namespace descriptors;
197 return PARTICLETYPE::template providesNested<MOBILITY,VELOCITY>();
198}
+ Here is the caller graph for this function:

◆ providesVelocity() [2/2]

template<typename T , typename PARTICLETYPE >
bool olb::particles::access::providesVelocity ( Particle< T, PARTICLETYPE > & particle)
constexpr

Definition at line 200 of file dataAccessWrappers.h.

200 {
201 return providesVelocity<PARTICLETYPE>();
202}

References providesVelocity().

+ Here is the call graph for this function:

◆ setAccelerationStrd()

template<typename T , typename PARTICLETYPE >
void olb::particles::access::setAccelerationStrd ( Particle< T, PARTICLETYPE > particle,
Vector< T, PARTICLETYPE::d > acceleration )

Definition at line 732 of file dataAccessWrappers.h.

733{
734 using namespace descriptors;
735 static_assert(providesAccelerationStrd<PARTICLETYPE>(), "Field MOBILITY:ACCELERATION has to be provided");
736 if constexpr(providesAccelerationStrd(particle)) {
737 particle.template setField<MOBILITY, ACCELERATION_STRD>(acceleration);
738 }
739}

References providesAccelerationStrd().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ setActive()

template<typename T , typename PARTICLETYPE >
void olb::particles::access::setActive ( Particle< T, PARTICLETYPE > particle,
bool value = true )

Definition at line 1061 of file dataAccessWrappers.h.

1062{
1063 using namespace descriptors;
1064 static_assert(providesActive<PARTICLETYPE>(), "Field DYNBEHAVIOUR:ACTIVE has to be provided");
1065 particle.template setField<DYNBEHAVIOUR,ACTIVE>( value );
1066}

References providesActive().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ setAdhesion()

template<typename T , typename PARTICLETYPE >
void olb::particles::access::setAdhesion ( Particle< T, PARTICLETYPE > & particle,
Vector< T, 2 > adhesion )

Definition at line 1039 of file dataAccessWrappers.h.

1040{
1041 using namespace descriptors;
1042 static_assert(providesAdhesion<PARTICLETYPE>(), "Field FORCING:ADHESION has to be provided");
1043 particle.template setField<FORCING,ADHESION>(adhesion);
1044}

References providesAdhesion().

+ Here is the call graph for this function:

◆ setAngAccelerationStrd()

template<typename T , typename PARTICLETYPE >
void olb::particles::access::setAngAccelerationStrd ( Particle< T, PARTICLETYPE > particle,
Vector< T, utilities::dimensions::convert< PARTICLETYPE::d >::rotation > angAcceleration )

Definition at line 1001 of file dataAccessWrappers.h.

1002{
1003 using namespace descriptors;
1004 static_assert(providesAngAccelerationStrd<PARTICLETYPE>(), "Field MOBILITY:ANG_ACC_STRD has to be provided");
1005 particle.template setField<MOBILITY,ANG_ACC_STRD>(utilities::dimensions::convert<
1006 PARTICLETYPE::d>::serialize_rotation(angAcceleration));
1007}

References providesAngAccelerationStrd().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ setAngle()

template<typename T , typename PARTICLETYPE >
void olb::particles::access::setAngle ( Particle< T, PARTICLETYPE > particle,
Vector< T, utilities::dimensions::convert< PARTICLETYPE::d >::rotation > angle )

Definition at line 967 of file dataAccessWrappers.h.

968{
969 using namespace descriptors;
970 static_assert(providesAngle<PARTICLETYPE>(), "Field SURFACE:ANGLE has to be provided");
971 particle.template setField<SURFACE, ANGLE>(utilities::dimensions::convert<
972 PARTICLETYPE::d>::serialize_rotation(angle));
973}

References providesAngle().

+ Here is the call graph for this function:

◆ setAngularVelocity()

template<typename T , typename PARTICLETYPE >
void olb::particles::access::setAngularVelocity ( Particle< T, PARTICLETYPE > particle,
Vector< T, utilities::dimensions::convert< PARTICLETYPE::d >::rotation > angVelocity )

Definition at line 992 of file dataAccessWrappers.h.

993{
994 using namespace descriptors;
995 static_assert(providesAngVelocity<PARTICLETYPE>(), "Field MOBILITY:ANG_VELOCITY has to be provided");
996 particle.template setField<MOBILITY,ANG_VELOCITY>(utilities::dimensions::convert<
997 PARTICLETYPE::d>::serialize_rotation(angVelocity));
998}

References providesAngVelocity().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ setContactMaterial()

template<typename T , typename PARTICLETYPE >
void olb::particles::access::setContactMaterial ( Particle< T, PARTICLETYPE > particle,
unsigned material )

Definition at line 958 of file dataAccessWrappers.h.

959{
960 using namespace descriptors;
961 static_assert(providesContactMaterial(particle),
962 "Field MECHPROPERTIES::MATERIAL has to be provided");
963 particle.template setField<MECHPROPERTIES, MATERIAL>(material);
964}

References providesContactMaterial().

+ Here is the call graph for this function:

◆ setCORoffset()

template<typename T , typename PARTICLETYPE >
void olb::particles::access::setCORoffset ( Particle< T, PARTICLETYPE > particle,
Vector< T, PARTICLETYPE::d > offsetCOR )

Definition at line 1128 of file dataAccessWrappers.h.

1129{
1130 using namespace descriptors;
1131 static_assert(providesCORoffset<PARTICLETYPE>(), "Field SURFACE:COR_OFFSET has to be provided");
1132 particle.template setField<SURFACE,COR_OFFSET>(offsetCOR);
1133}

References providesCORoffset().

+ Here is the call graph for this function:

◆ setDensity()

template<typename T , typename PARTICLETYPE >
void olb::particles::access::setDensity ( Particle< T, PARTICLETYPE > particle,
T density,
T shapeFactor = T{1} )

Definition at line 917 of file dataAccessWrappers.h.

917 {1} )
918{
919 using namespace descriptors;
920 static_assert(providesMassOrDensity(particle),
921 "Field PHYSPROPERTIES:MASS or PHYSPROPERTIES:DENSITY has to be provided");
922
923 if constexpr(providesDensity(particle)) {
924 particle.template setField<PHYSPROPERTIES, DENSITY>(density);
925 }
926 if constexpr(providesMass(particle)) {
927 const T mass = density * getVolume(particle, shapeFactor);
928 particle.template setField<PHYSPROPERTIES, MASS>(mass);
929 }
930}
+ Here is the caller graph for this function:

◆ setDetaching()

template<typename T , typename PARTICLETYPE >
void olb::particles::access::setDetaching ( Particle< T, PARTICLETYPE > & particle,
bool value )

Definition at line 1119 of file dataAccessWrappers.h.

1120{
1121 using namespace descriptors;
1122 static_assert(providesDetaching<PARTICLETYPE>(),
1123 "Field DYNBEHAVIOUR:DETACHING has to be provided");
1124 particle.template setField<DYNBEHAVIOUR,DETACHING>(value);
1125}

References providesDetaching().

+ Here is the call graph for this function:

◆ setDynamicsID()

template<typename T , typename PARTICLETYPE >
void olb::particles::access::setDynamicsID ( Particle< T, PARTICLETYPE > & particle,
unsigned short dynamicsID )

Definition at line 1110 of file dataAccessWrappers.h.

1111{
1112 using namespace descriptors;
1113 static_assert(providesDynamicsID<PARTICLETYPE>(),
1114 "Field DYNBEHAVIOUR:DYNAMICS_ID has to be provided");
1115 particle.template setField<DYNBEHAVIOUR,DYNAMICS_ID>(dynamicsID);
1116}

References providesDynamicsID().

+ Here is the call graph for this function:

◆ setElongation()

template<typename T , typename PARTICLETYPE >
void olb::particles::access::setElongation ( Particle< T, PARTICLETYPE > particle,
Vector< T, PARTICLETYPE::d > elongation )

Definition at line 1136 of file dataAccessWrappers.h.

1137{
1138 using namespace descriptors;
1139 static_assert(providesElongation<PARTICLETYPE>(), "Field SURFACE:ELONGATION has to be provided");
1140 particle.template setField<SURFACE,ELONGATION>(elongation);
1141}

References providesElongation().

+ Here is the call graph for this function:

◆ setEnlargementForContact()

template<typename T , typename PARTICLETYPE >
void olb::particles::access::setEnlargementForContact ( Particle< T, PARTICLETYPE > & particle,
T value )

Definition at line 1144 of file dataAccessWrappers.h.

1145{
1146 using namespace descriptors;
1147 static_assert(access::providesEnlargementForContactTreatment<PARTICLETYPE>(), "Field NUMERICPROPERTIES:ENLARGEMENT_FOR_CONTACT has to be provided");
1148 particle.template setField<NUMERICPROPERTIES, ENLARGEMENT_FOR_CONTACT>(value);
1149}

References providesEnlargementForContactTreatment().

+ Here is the call graph for this function:

◆ setForce()

template<typename T , typename PARTICLETYPE >
void olb::particles::access::setForce ( Particle< T, PARTICLETYPE > particle,
Vector< T, PARTICLETYPE::d > force )

Definition at line 1012 of file dataAccessWrappers.h.

1013{
1014 using namespace descriptors;
1015 static_assert(providesForce<PARTICLETYPE>(), "Field FORCING:FORCE has to be provided");
1016 particle.template setField<FORCING,FORCE>(force);
1017}

References providesForce().

+ Here is the call graph for this function:

◆ setGlobalIC()

template<typename T , typename PARTICLETYPE >
void olb::particles::access::setGlobalIC ( Particle< T, PARTICLETYPE > particle,
int id )

Definition at line 1102 of file dataAccessWrappers.h.

1103{
1104 using namespace descriptors;
1105 static_assert(providesID<PARTICLETYPE>(), "Field PARALLELIZATION:ID has to be provided");
1106 particle.template setField<PARALLELIZATION,IC>(id);
1107}

References providesID().

+ Here is the call graph for this function:

◆ setGlobalID()

template<typename T , typename PARTICLETYPE >
void olb::particles::access::setGlobalID ( Particle< T, PARTICLETYPE > particle,
std::size_t id )

Definition at line 1094 of file dataAccessWrappers.h.

1095{
1096 using namespace descriptors;
1097 static_assert(providesID<PARTICLETYPE>(), "Field PARALLELIZATION:ID has to be provided");
1098 particle.template setField<PARALLELIZATION,ID>(id);
1099}

References providesID().

+ Here is the call graph for this function:

◆ setInactive()

template<typename T , typename PARTICLETYPE >
void olb::particles::access::setInactive ( Particle< T, PARTICLETYPE > particle,
bool value = true )

Definition at line 1069 of file dataAccessWrappers.h.

1070{
1071 setActive(particle, !value);
1072}
void setActive(Particle< T, PARTICLETYPE > particle, bool value=true)

References setActive().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ setInvalid()

template<typename T , typename PARTICLETYPE >
void olb::particles::access::setInvalid ( Particle< T, PARTICLETYPE > particle,
bool value = true )

Definition at line 1047 of file dataAccessWrappers.h.

1048{
1049 using namespace descriptors;
1050 static_assert(providesInvalid<PARTICLETYPE>(), "Field GENERAL:INVALID has to be provided");
1051 particle.template setField<GENERAL,INVALID>( value );
1052}

References providesInvalid().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ setMass()

template<typename T , typename PARTICLETYPE >
void olb::particles::access::setMass ( Particle< T, PARTICLETYPE > particle,
T mass,
T shapeFactor = T{1} )

Definition at line 933 of file dataAccessWrappers.h.

933 {1} )
934{
935 using namespace descriptors;
936 static_assert(providesMassOrDensity(particle),
937 "Field PHYSPROPERTIES:MASS or PHYSPROPERTIES:DENSITY has to be provided");
938
939 if constexpr(providesMass(particle)) {
940 particle.template setField<PHYSPROPERTIES, MASS>(mass);
941 }
942 if constexpr(providesDensity(particle)){
943 const T density = mass / getVolume(particle, shapeFactor);
944 particle.template setField<PHYSPROPERTIES, DENSITY>(density);
945 }
946}

◆ setMomentOfInertia()

template<typename T , typename PARTICLETYPE >
void olb::particles::access::setMomentOfInertia ( Particle< T, PARTICLETYPE > particle,
Vector< T, utilities::dimensions::convert< PARTICLETYPE::d >::rotation > mofi )

Definition at line 1029 of file dataAccessWrappers.h.

1030{
1031 using namespace descriptors;
1032 static_assert(providesMomentOfInertia<PARTICLETYPE>(), "Field PHYSPROPERTIES:MOFI has to be provided");
1033 particle.template setField<PHYSPROPERTIES,MOFI>(utilities::dimensions::convert<
1034 PARTICLETYPE::d>::serialize_rotation(mofi));
1035}

References providesMomentOfInertia().

+ Here is the call graph for this function:

◆ setPosition()

template<typename T , typename PARTICLETYPE >
void olb::particles::access::setPosition ( Particle< T, PARTICLETYPE > particle,
Vector< T, PARTICLETYPE::d > position )

Definition at line 949 of file dataAccessWrappers.h.

950{
951 using namespace descriptors;
952 static_assert(providesPosition(particle),
953 "Field GENERAL:POSITION has to be provided");
954 particle.template setField<GENERAL, POSITION>(position);
955}
constexpr bool providesPosition()
Provides field POSITION.

References providesPosition().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ setRadius()

template<typename T , typename PARTICLETYPE >
void olb::particles::access::setRadius ( Particle< T, PARTICLETYPE > & particle,
T radius )

Definition at line 1086 of file dataAccessWrappers.h.

1087{
1088 using namespace descriptors;
1089 static_assert(providesRadius<PARTICLETYPE>(), "Field PHYSPROPERTIES:RADIUS has to be provided");
1090 particle.template setField<PHYSPROPERTIES,RADIUS>(radius);
1091}

References providesRadius().

+ Here is the call graph for this function:

◆ setRestingParticle()

template<typename T , typename PARTICLETYPE >
void olb::particles::access::setRestingParticle ( Particle< T, PARTICLETYPE > particle)

Definition at line 1223 of file dataAccessWrappers.h.

1224{
1225 if constexpr(providesVelocity(particle)){
1227 }
1228
1229 if constexpr(providesAccelerationStrd(particle)){
1230 setAccelerationStrd(particle, Vector<T,PARTICLETYPE::d>(0.));
1231 }
1232
1233
1234 if constexpr(providesAngVelocity(particle)){
1235 setAngularVelocity(particle, Vector<T,utilities::dimensions::convert<PARTICLETYPE::d>::rotation>(0.));
1236 }
1237
1238 if constexpr(providesAngAccelerationStrd(particle)){
1239 setAngAccelerationStrd(particle, Vector<T,utilities::dimensions::convert<PARTICLETYPE::d>::rotation>(0.));
1240 }
1241}
void setVelocity(Particle< T, PARTICLETYPE > particle, Vector< T, PARTICLETYPE::d > velocity)
constexpr bool providesVelocity()
Provides field VELOCITY.

References providesAccelerationStrd(), providesAngAccelerationStrd(), providesAngVelocity(), providesVelocity(), setAccelerationStrd(), setAngAccelerationStrd(), setAngularVelocity(), and setVelocity().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ setRotationMatrix()

template<typename T , typename PARTICLETYPE >
void olb::particles::access::setRotationMatrix ( Particle< T, PARTICLETYPE > particle,
Vector< T, utilities::dimensions::convert< PARTICLETYPE::d >::matrix > rotMatrix )

Definition at line 976 of file dataAccessWrappers.h.

977{
978 using namespace descriptors;
979 static_assert(providesRotationMatrix<PARTICLETYPE>(), "Field SURFACE:ROT_MATRIX has to be provided");
980 particle.template setField<SURFACE,ROT_MATRIX>(rotMatrix);
981}

References providesRotationMatrix().

+ Here is the call graph for this function:

◆ setSmoothIndicatorPtr()

template<typename T , typename PARTICLETYPE >
void olb::particles::access::setSmoothIndicatorPtr ( Particle< T, PARTICLETYPE > particle,
SmoothIndicatorF< T, T, PARTICLETYPE::d, true > * sindicator )

Definition at line 1076 of file dataAccessWrappers.h.

1078{
1079 using namespace descriptors;
1080 static_assert(providesSmoothIndicator<PARTICLETYPE>(), "Field FORCING:SINDICATOR has to be provided");
1081 particle.template setField<SURFACE,SINDICATOR>(sindicator);
1082}

References providesSmoothIndicator().

+ Here is the call graph for this function:

◆ setTorque()

template<typename T , typename PARTICLETYPE >
void olb::particles::access::setTorque ( Particle< T, PARTICLETYPE > particle,
Vector< T, utilities::dimensions::convert< PARTICLETYPE::d >::rotation > torque )

Definition at line 1020 of file dataAccessWrappers.h.

1021{
1022 using namespace descriptors;
1023 static_assert(providesTorque<PARTICLETYPE>(), "Field FORCING:TORQUE has to be provided");
1024 particle.template setField<FORCING,TORQUE>(utilities::dimensions::convert<
1025 PARTICLETYPE::d>::serialize_rotation(torque));
1026}

References providesTorque().

+ Here is the call graph for this function:

◆ setValid()

template<typename T , typename PARTICLETYPE >
void olb::particles::access::setValid ( Particle< T, PARTICLETYPE > particle,
bool value = true )

Definition at line 1055 of file dataAccessWrappers.h.

1056{
1057 setInvalid(particle, !value);
1058}
void setInvalid(Particle< T, PARTICLETYPE > particle, bool value=true)

References setInvalid().

+ Here is the call graph for this function:

◆ setVelocity()

template<typename T , typename PARTICLETYPE >
void olb::particles::access::setVelocity ( Particle< T, PARTICLETYPE > particle,
Vector< T, PARTICLETYPE::d > velocity )

Definition at line 984 of file dataAccessWrappers.h.

985{
986 using namespace descriptors;
987 static_assert(providesVelocity<PARTICLETYPE>(), "Field MOBILITY:VELOCITY has to be provided");
988 particle.template setField<MOBILITY,VELOCITY>(velocity);
989}

References providesVelocity().

+ Here is the call graph for this function:
+ Here is the caller graph for this function: