3-D Particle-in-Cell (PIC) implementation. More...
#include <Core/Solver/Hybrid/PIC/PICSolver3.h>
Classes | |
| class | Builder |
| Front-end to create PICSolver3 objects step by step. More... | |
Public Member Functions | |
| PICSolver3 () | |
| Default constructor. More... | |
| PICSolver3 (const Size3 &resolution, const Vector3D &gridSpacing, const Vector3D &gridOrigin) | |
| Constructs solver with initial grid size. More... | |
| virtual | ~PICSolver3 () |
| Default destructor. More... | |
| ScalarGrid3Ptr | GetSignedDistanceField () const |
| Returns the signed-distance field of particles. More... | |
| const ParticleSystemData3Ptr & | GetParticleSystemData () const |
| Returns the particle system data. More... | |
| const ParticleEmitter3Ptr & | GetParticleEmitter () const |
| Returns the particle emitter. More... | |
| void | SetParticleEmitter (const ParticleEmitter3Ptr &newEmitter) |
| Sets the particle emitter. More... | |
Public Member Functions inherited from CubbyFlow::GridFluidSolver3 | |
| GridFluidSolver3 () | |
| Default constructor. More... | |
| GridFluidSolver3 (const Size3 &resolution, const Vector3D &gridSpacing, const Vector3D &gridOrigin) | |
| Constructs solver with initial grid size. More... | |
| virtual | ~GridFluidSolver3 () |
| Default destructor. More... | |
| const Vector3D & | GetGravity () const |
| Returns the gravity vector of the system. More... | |
| void | SetGravity (const Vector3D &newGravity) |
| Sets the gravity of the system. More... | |
| double | GetViscosityCoefficient () const |
| Returns the viscosity coefficient. More... | |
| void | SetViscosityCoefficient (double newValue) |
| Sets the viscosity coefficient. More... | |
| double | GetCFL (double timeIntervalInSeconds) const |
| Returns the CFL number from the current velocity field for given time interval. More... | |
| double | GetMaxCFL () const |
| Returns the max allowed CFL number. More... | |
| void | SetMaxCFL (double newCFL) |
| Sets the max allowed CFL number. More... | |
| bool | GetUseCompressedLinearSystem () const |
| Returns true if the solver is using compressed linear system. More... | |
| void | SetUseCompressedLinearSystem (bool onoff) |
| Sets whether the solver should use compressed linear system. More... | |
| const AdvectionSolver3Ptr & | GetAdvectionSolver () const |
| Returns the advection solver instance. More... | |
| void | SetAdvectionSolver (const AdvectionSolver3Ptr &newSolver) |
| Sets the advection solver. More... | |
| const GridDiffusionSolver3Ptr & | GetDiffusionSolver () const |
| Returns the diffusion solver instance. More... | |
| void | SetDiffusionSolver (const GridDiffusionSolver3Ptr &newSolver) |
| Sets the diffusion solver. More... | |
| const GridPressureSolver3Ptr & | GetPressureSolver () const |
| Returns the pressure solver instance. More... | |
| void | SetPressureSolver (const GridPressureSolver3Ptr &newSolver) |
| Sets the pressure solver. More... | |
| int | GetClosedDomainBoundaryFlag () const |
| Returns the closed domain boundary flag. More... | |
| void | SetClosedDomainBoundaryFlag (int flag) |
| Sets the closed domain boundary flag. More... | |
| const GridSystemData3Ptr & | GetGridSystemData () const |
| Returns the grid system data. More... | |
| void | ResizeGrid (const Size3 &newSize, const Vector3D &newGridSpacing, const Vector3D &newGridOrigin) const |
| Resizes grid system data. More... | |
| Size3 | GetResolution () const |
| Returns the resolution of the grid system data. More... | |
| Vector3D | GetGridSpacing () const |
| Returns the grid spacing of the grid system data. More... | |
| Vector3D | GetGridOrigin () const |
| Returns the origin of the grid system data. More... | |
| const FaceCenteredGrid3Ptr & | GetVelocity () const |
| Returns the velocity field. More... | |
| const Collider3Ptr & | GetCollider () const |
| Returns the collider. More... | |
| void | SetCollider (const Collider3Ptr &newCollider) |
| Sets the collider. More... | |
| const GridEmitter3Ptr & | GetEmitter () const |
| Returns the emitter. More... | |
| void | SetEmitter (const GridEmitter3Ptr &newEmitter) |
| Sets the emitter. More... | |
Public Member Functions inherited from CubbyFlow::PhysicsAnimation | |
| PhysicsAnimation () | |
| Default constructor. More... | |
| virtual | ~PhysicsAnimation () |
| Destructor. More... | |
| bool | GetIsUsingFixedSubTimeSteps () 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 | GetNumberOfFixedSubTimeSteps () 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 | GetCurrentFrame () const |
| Returns current frame. More... | |
| void | SetCurrentFrame (const Frame &frame) |
| Sets current frame cursor (but do not invoke update()). More... | |
| double | GetCurrentTimeInSeconds () const |
| Returns current time in seconds. More... | |
Public Member Functions inherited from CubbyFlow::Animation | |
| Animation () | |
| virtual | ~Animation () |
| void | Update (const Frame &frame) |
Updates animation state for given frame. More... | |
Static Public Member Functions | |
| static Builder | GetBuilder () |
| Returns builder fox PICSolver3. More... | |
Static Public Member Functions inherited from CubbyFlow::GridFluidSolver3 | |
| static Builder | GetBuilder () |
| Returns builder fox GridFluidSolver3. More... | |
Protected Member Functions | |
| void | OnInitialize () override |
| Initializes the simulator. More... | |
| void | OnBeginAdvanceTimeStep (double timeIntervalInSeconds) override |
| Invoked before a simulation time-step begins. More... | |
| void | ComputeAdvection (double timeIntervalInSeconds) override |
| Computes the advection term of the fluid solver. More... | |
| ScalarField3Ptr | GetFluidSDF () const override |
| Returns the signed-distance field of the fluid. More... | |
| virtual void | TransferFromParticlesToGrids () |
| Transfers velocity field from particles to grids. More... | |
| virtual void | TransferFromGridsToParticles () |
| Transfers velocity field from grids to particles. More... | |
| virtual void | MoveParticles (double timeIntervalInSeconds) |
| Moves particles. More... | |
Protected Member Functions inherited from CubbyFlow::GridFluidSolver3 | |
| void | OnAdvanceTimeStep (double timeIntervalInSeconds) override |
| Called when advancing a single time-step. More... | |
| unsigned int | GetNumberOfSubTimeSteps (double timeIntervalInSeconds) const override |
| Returns the required sub-time-steps for given time interval. More... | |
| virtual void | OnEndAdvanceTimeStep (double timeIntervalInSeconds) |
| Called at the end of a time-step. More... | |
| virtual void | ComputeExternalForces (double timeIntervalInSeconds) |
| Computes the external force terms. More... | |
| virtual void | ComputeViscosity (double timeIntervalInSeconds) |
| Computes the viscosity term using the diffusion solver. More... | |
| virtual void | ComputePressure (double timeIntervalInSeconds) |
| Computes the pressure term using the pressure solver. More... | |
| void | ComputeGravity (double timeIntervalInSeconds) |
| Computes the gravity term. More... | |
| void | ApplyBoundaryCondition () const |
| Applies the boundary condition to the velocity field. More... | |
| void | ExtrapolateIntoCollider (ScalarGrid3 *grid) |
| Extrapolates given field into the collider-occupied region. More... | |
| void | ExtrapolateIntoCollider (CollocatedVectorGrid3 *grid) |
| Extrapolates given field into the collider-occupied region. More... | |
| void | ExtrapolateIntoCollider (FaceCenteredGrid3 *grid) |
| Extrapolates given field into the collider-occupied region. More... | |
| ScalarField3Ptr | GetColliderSDF () const |
| Returns the signed-distance field representation of the collider. More... | |
| VectorField3Ptr | GetColliderVelocityField () const |
| Returns the velocity field of the collider. More... | |
Protected Attributes | |
| Array3< char > | m_uMarkers |
| Array3< char > | m_vMarkers |
| Array3< char > | m_wMarkers |
Detailed Description
3-D Particle-in-Cell (PIC) implementation.
This class implements 3-D Particle-in-Cell (PIC) method by inheriting GridFluidSolver3. Since it is a grid-particle hybrid method, the solver also has a particle system to track fluid particles.
- See also
- Zhu, Yongning, and Robert Bridson. "Animating sand as a fluid." ACM Transactions on Graphics (TOG). Vol. 34. No. 3. ACM, 3005.
Constructor & Destructor Documentation
◆ PICSolver3() [1/2]
| CubbyFlow::PICSolver3::PICSolver3 | ( | ) |
Default constructor.
◆ PICSolver3() [2/2]
| CubbyFlow::PICSolver3::PICSolver3 | ( | const Size3 & | resolution, |
| const Vector3D & | gridSpacing, | ||
| const Vector3D & | gridOrigin | ||
| ) |
Constructs solver with initial grid size.
◆ ~PICSolver3()
|
virtual |
Default destructor.
Member Function Documentation
◆ ComputeAdvection()
|
overrideprotectedvirtual |
Computes the advection term of the fluid solver.
Reimplemented from CubbyFlow::GridFluidSolver3.
◆ GetBuilder()
|
static |
Returns builder fox PICSolver3.
◆ GetFluidSDF()
|
overrideprotectedvirtual |
Returns the signed-distance field of the fluid.
Reimplemented from CubbyFlow::GridFluidSolver3.
◆ GetParticleEmitter()
| const ParticleEmitter3Ptr& CubbyFlow::PICSolver3::GetParticleEmitter | ( | ) | const |
Returns the particle emitter.
◆ GetParticleSystemData()
| const ParticleSystemData3Ptr& CubbyFlow::PICSolver3::GetParticleSystemData | ( | ) | const |
Returns the particle system data.
◆ GetSignedDistanceField()
| ScalarGrid3Ptr CubbyFlow::PICSolver3::GetSignedDistanceField | ( | ) | const |
Returns the signed-distance field of particles.
◆ MoveParticles()
|
protectedvirtual |
Moves particles.
◆ OnBeginAdvanceTimeStep()
|
overrideprotectedvirtual |
Invoked before a simulation time-step begins.
Reimplemented from CubbyFlow::GridFluidSolver3.
◆ OnInitialize()
|
overrideprotectedvirtual |
Initializes the simulator.
Reimplemented from CubbyFlow::GridFluidSolver3.
◆ SetParticleEmitter()
| void CubbyFlow::PICSolver3::SetParticleEmitter | ( | const ParticleEmitter3Ptr & | newEmitter | ) |
Sets the particle emitter.
◆ TransferFromGridsToParticles()
|
protectedvirtual |
Transfers velocity field from grids to particles.
Reimplemented in CubbyFlow::FLIPSolver3, and CubbyFlow::APICSolver3.
◆ TransferFromParticlesToGrids()
|
protectedvirtual |
Transfers velocity field from particles to grids.
Reimplemented in CubbyFlow::FLIPSolver3, and CubbyFlow::APICSolver3.
Member Data Documentation
◆ m_uMarkers
|
protected |
◆ m_vMarkers
|
protected |
◆ m_wMarkers
|
protected |
The documentation for this class was generated from the following file:
- Core/Solver/Hybrid/PIC/PICSolver3.h
Public Member Functions inherited from
1.8.14