Jet
v1.3.3
|
3-D SPH solver. More...
#include <jet/sph_solver3.h>
Classes | |
class | Builder |
Front-end to create SphSolver3 objects step by step. More... | |
Public Member Functions | |
SphSolver3 () | |
Constructs a solver with empty particle set. More... | |
SphSolver3 (double targetDensity, double targetSpacing, double relativeKernelRadius) | |
virtual | ~SphSolver3 () |
double | eosExponent () const |
Returns the exponent part of the equation-of-state. More... | |
void | setEosExponent (double newEosExponent) |
Sets the exponent part of the equation-of-state. More... | |
double | negativePressureScale () const |
Returns the negative pressure scale. More... | |
void | setNegativePressureScale (double newNegativePressureScale) |
Sets the negative pressure scale. More... | |
double | viscosityCoefficient () const |
Returns the viscosity coefficient. More... | |
void | setViscosityCoefficient (double newViscosityCoefficient) |
Sets the viscosity coefficient. More... | |
double | pseudoViscosityCoefficient () const |
Returns the pseudo viscosity coefficient. More... | |
void | setPseudoViscosityCoefficient (double newPseudoViscosityCoefficient) |
Sets the pseudo viscosity coefficient. More... | |
double | speedOfSound () const |
Returns the speed of sound. More... | |
void | setSpeedOfSound (double newSpeedOfSound) |
Sets the speed of sound. More... | |
double | timeStepLimitScale () const |
Multiplier that scales the max allowed time-step. More... | |
void | setTimeStepLimitScale (double newScale) |
Sets the multiplier that scales the max allowed time-step. More... | |
SphSystemData3Ptr | sphSystemData () const |
Returns the SPH system data. More... | |
![]() | |
ParticleSystemSolver3 () | |
Constructs an empty solver. More... | |
ParticleSystemSolver3 (double radius, double mass) | |
Constructs a solver with particle parameters. More... | |
virtual | ~ParticleSystemSolver3 () |
Destructor. More... | |
double | dragCoefficient () const |
Returns the drag coefficient. More... | |
void | setDragCoefficient (double newDragCoefficient) |
Sets the drag coefficient. More... | |
double | restitutionCoefficient () const |
Sets the restitution coefficient. More... | |
void | setRestitutionCoefficient (double newRestitutionCoefficient) |
Sets the restitution coefficient. More... | |
const Vector3D & | gravity () const |
Returns the gravity. More... | |
void | setGravity (const Vector3D &newGravity) |
Sets the gravity. More... | |
const ParticleSystemData3Ptr & | particleSystemData () const |
Returns the particle system data. More... | |
const Collider3Ptr & | collider () const |
Returns the collider. More... | |
void | setCollider (const Collider3Ptr &newCollider) |
Sets the collider. More... | |
const ParticleEmitter3Ptr & | emitter () const |
Returns the emitter. More... | |
void | setEmitter (const ParticleEmitter3Ptr &newEmitter) |
Sets the emitter. More... | |
const VectorField3Ptr & | wind () const |
Returns the wind field. More... | |
void | setWind (const VectorField3Ptr &newWind) |
Sets the wind. More... | |
![]() | |
PhysicsAnimation () | |
Default constructor. More... | |
virtual | ~PhysicsAnimation () |
Destructor. More... | |
bool | isUsingFixedSubTimeSteps () const |
Returns true if fixed sub-timestepping is used. More... | |
void | setIsUsingFixedSubTimeSteps (bool isUsing) |
Sets true if fixed sub-timestepping is used. More... | |
unsigned int | numberOfFixedSubTimeSteps () const |
Returns the number of fixed sub-timesteps. More... | |
void | setNumberOfFixedSubTimeSteps (unsigned int numberOfSteps) |
Sets the number of fixed sub-timesteps. More... | |
void | advanceSingleFrame () |
Advances a single frame. More... | |
Frame | currentFrame () const |
Returns current frame. More... | |
void | setCurrentFrame (const Frame &frame) |
Sets current frame cursor (but do not invoke update()). More... | |
double | currentTimeInSeconds () const |
Returns current time in seconds. More... | |
![]() | |
Animation () | |
virtual | ~Animation () |
void | update (const Frame &frame) |
Updates animation state for given frame . More... | |
Static Public Member Functions | |
static Builder | builder () |
Returns builder fox SphSolver3. More... | |
![]() | |
static Builder | builder () |
Returns builder fox ParticleSystemSolver3. More... | |
Protected Member Functions | |
unsigned int | numberOfSubTimeSteps (double timeIntervalInSeconds) const override |
Returns the number of sub-time-steps. More... | |
void | accumulateForces (double timeStepInSeconds) override |
Accumulates the force to the forces array in the particle system. More... | |
void | onBeginAdvanceTimeStep (double timeStepInSeconds) override |
Performs pre-processing step before the simulation. More... | |
void | onEndAdvanceTimeStep (double timeStepInSeconds) override |
Performs post-processing step before the simulation. More... | |
virtual void | accumulateNonPressureForces (double timeStepInSeconds) |
virtual void | accumulatePressureForce (double timeStepInSeconds) |
void | computePressure () |
Computes the pressure. More... | |
void | accumulatePressureForce (const ConstArrayAccessor1< Vector3D > &positions, const ConstArrayAccessor1< double > &densities, const ConstArrayAccessor1< double > &pressures, ArrayAccessor1< Vector3D > pressureForces) |
Accumulates the pressure force to the given pressureForces array. More... | |
void | accumulateViscosityForce () |
void | computePseudoViscosity (double timeStepInSeconds) |
Computes pseudo viscosity. More... | |
![]() | |
void | onInitialize () override |
Initializes the simulator. More... | |
void | onAdvanceTimeStep (double timeStepInSeconds) override |
Called to advane a single time-step. More... | |
void | resolveCollision () |
Resolves any collisions occured by the particles. More... | |
void | resolveCollision (ArrayAccessor1< Vector3D > newPositions, ArrayAccessor1< Vector3D > newVelocities) |
void | setParticleSystemData (const ParticleSystemData3Ptr &newParticles) |
Assign a new particle system data. More... | |
3-D SPH solver.
This class implements 3-D SPH solver. The main pressure solver is based on equation-of-state (EOS).
jet::SphSolver3::SphSolver3 | ( | ) |
Constructs a solver with empty particle set.
jet::SphSolver3::SphSolver3 | ( | double | targetDensity, |
double | targetSpacing, | ||
double | relativeKernelRadius | ||
) |
Constructs a solver with target density, spacing, and relative kernel radius.
|
virtual |
|
overrideprotectedvirtual |
Accumulates the force to the forces array in the particle system.
Reimplemented from jet::ParticleSystemSolver3.
|
protectedvirtual |
Accumulates the non-pressure forces to the forces array in the particle system.
|
protected |
Accumulates the pressure force to the given pressureForces
array.
|
protectedvirtual |
Accumulates the pressure force to the forces array in the particle system.
Reimplemented in jet::PciSphSolver3.
|
protected |
Accumulates the viscosity force to the forces array in the particle system.
|
static |
Returns builder fox SphSolver3.
|
protected |
Computes the pressure.
|
protected |
Computes pseudo viscosity.
double jet::SphSolver3::eosExponent | ( | ) | const |
Returns the exponent part of the equation-of-state.
double jet::SphSolver3::negativePressureScale | ( | ) | const |
Returns the negative pressure scale.
|
overrideprotectedvirtual |
Returns the number of sub-time-steps.
Reimplemented from jet::PhysicsAnimation.
|
overrideprotectedvirtual |
Performs pre-processing step before the simulation.
Reimplemented from jet::ParticleSystemSolver3.
|
overrideprotectedvirtual |
Performs post-processing step before the simulation.
Reimplemented from jet::ParticleSystemSolver3.
double jet::SphSolver3::pseudoViscosityCoefficient | ( | ) | const |
Returns the pseudo viscosity coefficient.
void jet::SphSolver3::setEosExponent | ( | double | newEosExponent | ) |
Sets the exponent part of the equation-of-state.
This function sets the exponent part of the equation-of-state. The value must be greater than 1.0, and smaller inputs will be clamped. Default is 7.
void jet::SphSolver3::setNegativePressureScale | ( | double | newNegativePressureScale | ) |
Sets the negative pressure scale.
This function sets the negative pressure scale. By setting the number between 0 and 1, the solver will scale the effect of negative pressure which can prevent the clumping of the particles near the surface. Input value outside 0 and 1 will be clamped within the range. Default is 0.
void jet::SphSolver3::setPseudoViscosityCoefficient | ( | double | newPseudoViscosityCoefficient | ) |
Sets the pseudo viscosity coefficient.
This function sets the pseudo viscosity coefficient which applies additional pseudo-physical damping to the system. Default is 10.
void jet::SphSolver3::setSpeedOfSound | ( | double | newSpeedOfSound | ) |
Sets the speed of sound.
This function sets the speed of sound which affects the stiffness of the EOS and the time-step size. Higher value will make EOS stiffer and the time-step smaller. The input value must be higher than 0.0.
void jet::SphSolver3::setTimeStepLimitScale | ( | double | newScale | ) |
Sets the multiplier that scales the max allowed time-step.
This function sets the multiplier that scales the max allowed time-step. When the scale is 1.0, the time-step is bounded by the speed of sound and max acceleration.
void jet::SphSolver3::setViscosityCoefficient | ( | double | newViscosityCoefficient | ) |
Sets the viscosity coefficient.
double jet::SphSolver3::speedOfSound | ( | ) | const |
Returns the speed of sound.
SphSystemData3Ptr jet::SphSolver3::sphSystemData | ( | ) | const |
Returns the SPH system data.
double jet::SphSolver3::timeStepLimitScale | ( | ) | const |
Multiplier that scales the max allowed time-step.
This function returns the multiplier that scales the max allowed time-step. When the scale is 1.0, the time-step is bounded by the speed of sound and max acceleration.
double jet::SphSolver3::viscosityCoefficient | ( | ) | const |
Returns the viscosity coefficient.