Description
Class for emitters of particles, with random positions, rotations, and random shapes.
You can setup a variety of different emitters by assembling different types of items inherited by classes like ChRandomShapeCreator, ChRandomParticlePosition, etc.
#include <ChParticleEmitter.h>
Public Types | |
| enum | eChFlowMode { FLOW_PARTICLESPERSECOND , FLOW_MASSPERSECOND } |
Public Member Functions | |
| void | EmitParticles (ChSystem &msystem, double mdt, ChFrameMoving<> pre_transform=ChFrameMoving<>()) |
| Function that creates random particles with random shape, position and alignment each time it is called. | |
| void | RegisterAddBodyCallback (std::shared_ptr< ChRandomShapeCreator::AddBodyCallback > callback) |
| Pass an object from a ChPostCreationCallback-inherited class if you want to set additional stuff on each created particle (ex.set some random asset, set some random material, or such) | |
| void | SetParticleCreator (std::shared_ptr< ChRandomShapeCreator > mc) |
| Set the particle creator, that is an object whose class is inherited from ChRandomShapeCreator. | |
| void | SetParticlePositioner (std::shared_ptr< ChRandomParticlePosition > mc) |
| Set the particle positioner, that generates different positions for each particle. | |
| void | SetParticleAligner (std::shared_ptr< ChRandomParticleAlignment > mc) |
| Set the particle aligner, that generates different rotations for each particle. | |
| void | SetParticleVelocity (std::shared_ptr< ChRandomParticleVelocity > mc) |
| Set the generator of particle velocities, that generates different initial speed for each particle. | |
| void | SetParticleAngularVelocity (std::shared_ptr< ChRandomParticleVelocity > mc) |
| Set the generator of angular velocities, for different initial angular velocity for each particle. | |
| void | SetFlowControlMode (eChFlowMode mymode) |
| define a flow rate measured as n.of particles per second [part/s], as by default or a flow rate measured as kg per second [kg/s]. | |
| eChFlowMode | GetFlowControlMode () |
| Report if flow rate is measured as [part/s] or [kg/s]. | |
| double & | ParticlesPerSecond () |
| Access the flow rate, measured as n.of particles per second [part/s]. | |
| double & | MassPerSecond () |
| Access the flow rate, measured as kg per second [kg/s]. | |
| void | SetUseParticleReservoir (bool ml) |
| Turn on this to limit on max amount of particles. | |
| void | SetUseMassReservoir (bool ml) |
| Turn on this to limit on max mass of particles. | |
| int & | ParticleReservoirAmount () |
| Access the max number of particles to create - after this goes to 0, the creation stops. | |
| double & | MassReservoirAmount () |
| Access the max mass of particles to create - after this goes to 0, the creation stops. | |
| int | GetTotCreatedParticles () |
| Get the total amount of created particles. | |
| double | GetTotCreatedMass () |
| Get the total mass of created particles. | |
| void | SetInheritSpeed (bool mi) |
| Turn on this to have the particles 'inherit' the speed of the owner body in pre_transform. | |
| void | SetJitterDeclustering (bool mj) |
| Turn on this to avoid quantization if generating from an object that has high speed in pre_transform (so avoids clusters in jets of particles). | |
Member Function Documentation
◆ EmitParticles()
|
inline |
Function that creates random particles with random shape, position and alignment each time it is called.
Typically, one calls this function once per timestep.
◆ MassReservoirAmount()
|
inline |
Access the max mass of particles to create - after this goes to 0, the creation stops.
Remember to turn on this limit with SetLimitMassAmount()
◆ ParticleReservoirAmount()
|
inline |
Access the max number of particles to create - after this goes to 0, the creation stops.
Remember to turn on this limit with SetLimitParticleAmount()
◆ ParticlesPerSecond()
|
inline |
Access the flow rate, measured as n.of particles per second [part/s].
This is meaningful only if in
◆ SetFlowControlMode()
|
inline |
define a flow rate measured as n.of particles per second [part/s], as by default or a flow rate measured as kg per second [kg/s].
Then, use ParticlesPerSecond() or MassPerSecond() to tune the flow.
The documentation for this class was generated from the following file:
- C:/M/B/src/chrono-9.0.1/src/chrono/particlefactory/ChParticleEmitter.h