Search Results

2-D Fluid-Implicit Particle (FLIP) implementation. More...

#include <Core/Solver/Hybrid/FLIP/FLIPSolver2.hpp>

Inheritance diagram for CubbyFlow::FLIPSolver2:
CubbyFlow::PICSolver2 CubbyFlow::GridFluidSolver2 CubbyFlow::PhysicsAnimation CubbyFlow::Animation

Classes

class  Builder
Front-end to create FLIPSolver2 objects step by step. More...
 

Public Member Functions

 FLIPSolver2 ()
Default constructor. More...
 
 FLIPSolver2 (const Vector2UZ &resolution, const Vector2D &gridSpacing, const Vector2D &gridOrigin)
Constructs solver with initial grid size. More...
 
 FLIPSolver2 (const FLIPSolver2 &)=delete
Deleted copy constructor. More...
 
 FLIPSolver2 (FLIPSolver2 &&) noexcept=delete
Deleted move constructor. More...
 
 ~FLIPSolver2 () override=default
Default virtual destructor. More...
 
FLIPSolver2operator= (const FLIPSolver2 &)=delete
Deleted copy assignment operator. More...
 
FLIPSolver2operator= (FLIPSolver2 &&) noexcept=delete
Deleted move assignment operator. More...
 
double GetPICBlendingFactor () const
Returns the PIC blending factor. More...
 
void SetPICBlendingFactor (double factor)
Sets the PIC blending factor. More...
 
- Public Member Functions inherited from CubbyFlow::PICSolver2
 PICSolver2 ()
Default constructor. More...
 
 PICSolver2 (const Vector2UZ &resolution, const Vector2D &gridSpacing, const Vector2D &gridOrigin)
Constructs solver with initial grid size. More...
 
 PICSolver2 (const PICSolver2 &)=delete
Deleted copy constructor. More...
 
 PICSolver2 (PICSolver2 &&) noexcept=delete
Deleted move constructor. More...
 
 ~PICSolver2 () override=default
Default virtual destructor. More...
 
PICSolver2operator= (const PICSolver2 &)=delete
Deleted copy assignment operator. More...
 
PICSolver2operator= (PICSolver2 &&) noexcept=delete
Deleted move assignment operator. More...
 
ScalarGrid2Ptr GetSignedDistanceField () const
Returns the signed-distance field of particles. More...
 
const ParticleSystemData2PtrGetParticleSystemData () const
Returns the particle system data. More...
 
const ParticleEmitter2PtrGetParticleEmitter () const
Returns the particle emitter. More...
 
void SetParticleEmitter (const ParticleEmitter2Ptr &newEmitter)
Sets the particle emitter. More...
 
- Public Member Functions inherited from CubbyFlow::GridFluidSolver2
 GridFluidSolver2 ()
Default constructor. More...
 
 GridFluidSolver2 (const Vector2UZ &resolution, const Vector2D &gridSpacing, const Vector2D &gridOrigin)
Constructs solver with initial grid size. More...
 
 GridFluidSolver2 (const GridFluidSolver2 &)=delete
Deleted copy constructor. More...
 
 GridFluidSolver2 (GridFluidSolver2 &&) noexcept=delete
Deleted move constructor. More...
 
 ~GridFluidSolver2 () override=default
Default virtual destructor. More...
 
GridFluidSolver2operator= (const GridFluidSolver2 &)=delete
Deleted copy assignment operator. More...
 
GridFluidSolver2operator= (GridFluidSolver2 &&) noexcept=delete
Deleted move assignment operator. More...
 
const Vector2DGetGravity () const
Returns the gravity vector of the system. More...
 
void SetGravity (const Vector2D &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 isOn)
Sets whether the solver should use compressed linear system. More...
 
const AdvectionSolver2PtrGetAdvectionSolver () const
Returns the advection solver instance. More...
 
void SetAdvectionSolver (const AdvectionSolver2Ptr &newSolver)
Sets the advection solver. More...
 
const GridDiffusionSolver2PtrGetDiffusionSolver () const
Returns the diffusion solver instance. More...
 
void SetDiffusionSolver (const GridDiffusionSolver2Ptr &newSolver)
Sets the diffusion solver. More...
 
const GridPressureSolver2PtrGetPressureSolver () const
Returns the pressure solver instance. More...
 
void SetPressureSolver (const GridPressureSolver2Ptr &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 GridSystemData2PtrGetGridSystemData () const
Returns the grid system data. More...
 
void ResizeGrid (const Vector2UZ &newSize, const Vector2D &newGridSpacing, const Vector2D &newGridOrigin) const
Resizes grid system data. More...
 
Vector2UZ GetResolution () const
Returns the resolution of the grid system data. More...
 
Vector2D GetGridSpacing () const
Returns the grid spacing of the grid system data. More...
 
Vector2D GetGridOrigin () const
Returns the origin of the grid system data. More...
 
const FaceCenteredGrid2PtrGetVelocity () const
Returns the velocity field. More...
 
const Collider2PtrGetCollider () const
Returns the collider. More...
 
void SetCollider (const Collider2Ptr &newCollider)
Sets the collider. More...
 
const GridEmitter2PtrGetEmitter () const
Returns the emitter. More...
 
void SetEmitter (const GridEmitter2Ptr &newEmitter)
Sets the emitter. More...
 
- Public Member Functions inherited from CubbyFlow::PhysicsAnimation
 PhysicsAnimation ()
Default constructor. More...
 
 PhysicsAnimation (const PhysicsAnimation &)=default
Default copy constructor. More...
 
 PhysicsAnimation (PhysicsAnimation &&) noexcept=default
Default move constructor. More...
 
virtual ~PhysicsAnimation ()=default
Default virtual destructor. More...
 
PhysicsAnimationoperator= (const PhysicsAnimation &)=default
Default copy assignment operator. More...
 
PhysicsAnimationoperator= (PhysicsAnimation &&) noexcept=default
Default move assignment operator. 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 ()=default
Default constructor. More...
 
 Animation (const Animation &)=default
Default copy constructor. More...
 
 Animation (Animation &&) noexcept=default
Default move constructor. More...
 
virtual ~Animation ()=default
Default virtual destructor. More...
 
Animationoperator= (const Animation &)=default
Default copy assignment operator. More...
 
Animationoperator= (Animation &&) noexcept=default
Default move assignment operator. More...
 
void Update (const Frame &frame)
Updates animation state for given frame. More...
 

Static Public Member Functions

static Builder GetBuilder ()
Returns builder fox FLIPSolver2. More...
 
- Static Public Member Functions inherited from CubbyFlow::PICSolver2
static Builder GetBuilder ()
Returns builder fox PICSolver2. More...
 
- Static Public Member Functions inherited from CubbyFlow::GridFluidSolver2
static Builder GetBuilder ()
Returns builder fox GridFluidSolver2. More...
 

Protected Member Functions

void TransferFromParticlesToGrids () override
Transfers velocity field from particles to grids. More...
 
void TransferFromGridsToParticles () override
Transfers velocity field from grids to particles. More...
 
- Protected Member Functions inherited from CubbyFlow::PICSolver2
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...
 
ScalarField2Ptr GetFluidSDF () const override
Returns the signed-distance field of the fluid. More...
 
virtual void MoveParticles (double timeIntervalInSeconds)
Moves particles. More...
 
- Protected Member Functions inherited from CubbyFlow::GridFluidSolver2
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 (ScalarGrid2 *grid)
Extrapolates given field into the collider-occupied region. More...
 
void ExtrapolateIntoCollider (CollocatedVectorGrid2 *grid)
Extrapolates given field into the collider-occupied region. More...
 
void ExtrapolateIntoCollider (FaceCenteredGrid2 *grid)
Extrapolates given field into the collider-occupied region. More...
 
ScalarField2Ptr GetColliderSDF () const
Returns the signed-distance field representation of the collider. More...
 
VectorField2Ptr GetColliderVelocityField () const
Returns the velocity field of the collider. More...
 

Additional Inherited Members

- Protected Attributes inherited from CubbyFlow::PICSolver2
Array2< char > m_uMarkers
 
Array2< char > m_vMarkers
 

Detailed Description

2-D Fluid-Implicit Particle (FLIP) implementation.

This class implements 2-D Fluid-Implicit Particle (FLIP) solver from the SIGGRAPH paper, Zhu and Bridson 2005. By transferring delta-velocity field from grid to particles, the FLIP solver achieves less viscous fluid flow compared to the original PIC method.

Constructor & Destructor Documentation

◆ FLIPSolver2() [1/4]

CubbyFlow::FLIPSolver2::FLIPSolver2 ( )

Default constructor.

◆ FLIPSolver2() [2/4]

CubbyFlow::FLIPSolver2::FLIPSolver2 ( const Vector2UZ resolution,
const Vector2D gridSpacing,
const Vector2D gridOrigin 
)

Constructs solver with initial grid size.

◆ FLIPSolver2() [3/4]

CubbyFlow::FLIPSolver2::FLIPSolver2 ( const FLIPSolver2 )
delete

Deleted copy constructor.

◆ FLIPSolver2() [4/4]

CubbyFlow::FLIPSolver2::FLIPSolver2 ( FLIPSolver2 &&  )
deletenoexcept

Deleted move constructor.

◆ ~FLIPSolver2()

CubbyFlow::FLIPSolver2::~FLIPSolver2 ( )
overridedefault

Default virtual destructor.

Member Function Documentation

◆ GetBuilder()

static Builder CubbyFlow::FLIPSolver2::GetBuilder ( )
static

Returns builder fox FLIPSolver2.

◆ GetPICBlendingFactor()

double CubbyFlow::FLIPSolver2::GetPICBlendingFactor ( ) const

Returns the PIC blending factor.

◆ operator=() [1/2]

FLIPSolver2& CubbyFlow::FLIPSolver2::operator= ( const FLIPSolver2 )
delete

Deleted copy assignment operator.

◆ operator=() [2/2]

FLIPSolver2& CubbyFlow::FLIPSolver2::operator= ( FLIPSolver2 &&  )
deletenoexcept

Deleted move assignment operator.

◆ SetPICBlendingFactor()

void CubbyFlow::FLIPSolver2::SetPICBlendingFactor ( double  factor)

Sets the PIC blending factor.

This function sets the PIC blending factor which mixes FLIP and PIC results when transferring velocity from grids to particles in order to reduce the noise. The factor can be a value between 0 and 1, where 0 means no blending and 1 means full PIC. Default is 0.

Parameters
[in]factorThe blending factor.

◆ TransferFromGridsToParticles()

void CubbyFlow::FLIPSolver2::TransferFromGridsToParticles ( )
overrideprotectedvirtual

Transfers velocity field from grids to particles.

Reimplemented from CubbyFlow::PICSolver2.

◆ TransferFromParticlesToGrids()

void CubbyFlow::FLIPSolver2::TransferFromParticlesToGrids ( )
overrideprotectedvirtual

Transfers velocity field from particles to grids.

Reimplemented from CubbyFlow::PICSolver2.


The documentation for this class was generated from the following file: