CubbyFlow::GridPressureSolver3 Class Referenceabstract

Abstract base class for 2-D grid-based pressure solver. More...

#include <Core/Solver/Grid/GridPressureSolver3.h>

Inheritance diagram for CubbyFlow::GridPressureSolver3:
CubbyFlow::GridFractionalSinglePhasePressureSolver3 CubbyFlow::GridSinglePhasePressureSolver3

Public Member Functions

 GridPressureSolver3 ()
 Default constructor. More...
 
virtual ~GridPressureSolver3 ()
 Default destructor. More...
 
virtual void Solve (const FaceCenteredGrid3 &input, double timeIntervalInSeconds, FaceCenteredGrid3 *output, const ScalarField3 &boundarySDF=ConstantScalarField3(std::numeric_limits< double >::max()), const VectorField3 &boundaryVelocity=ConstantVectorField3({ 0, 0, 0 }), const ScalarField3 &fluidSDF=ConstantScalarField3(-std::numeric_limits< double >::max()), bool useCompressed=false)=0
 Solves the pressure term and apply it to the velocity field. More...
 
virtual GridBoundaryConditionSolver3Ptr SuggestedBoundaryConditionSolver () const =0
 Returns the best boundary condition solver for this solver. More...
 

Detailed Description

Abstract base class for 2-D grid-based pressure solver.

This class represents a 2-D grid-based pressure solver interface which can be used as a sub-step of GridFluidSolver2. Inheriting classes must implement the core GridPressureSolver2::Solve function as well as the helper function GridPressureSolver2::SuggestedBoundaryConditionSolver.

Constructor & Destructor Documentation

◆ GridPressureSolver3()

CubbyFlow::GridPressureSolver3::GridPressureSolver3 ( )

Default constructor.

◆ ~GridPressureSolver3()

virtual CubbyFlow::GridPressureSolver3::~GridPressureSolver3 ( )
virtual

Default destructor.

Member Function Documentation

◆ Solve()

virtual void CubbyFlow::GridPressureSolver3::Solve ( const FaceCenteredGrid3 input,
double  timeIntervalInSeconds,
FaceCenteredGrid3 output,
const ScalarField3 boundarySDF = ConstantScalarField3(std::numeric_limits< double >::max()),
const VectorField3 boundaryVelocity = ConstantVectorField3({ 0, 0, 0 }),
const ScalarField3 fluidSDF = ConstantScalarField3(-std::numeric_limits< double >::max()),
bool  useCompressed = false 
)
pure virtual

Solves the pressure term and apply it to the velocity field.

This function takes input velocity field and outputs pressure-applied velocity field. It also accepts extra arguments such as boundarySDF and fluidSDF that represent signed-distance representation of the boundary and fluid area. The negative region of boundarySDF means it is occupied by solid object. Also, the positive / negative area of the fluidSDF means it is occupied by fluid / atmosphere. If not specified, constant scalar field with std::numeric_limits<double>::max() will be used for boundarySDF meaning that no boundary at all. Similarly, a constant field with -std::numeric_limits<double>::max() will be used for fluidSDF which means it's fully occupied with fluid without any atmosphere.

Parameters
[in]inputThe input velocity field.
[in]timeIntervalInSecondsThe time interval for the sim.
[in,out]outputThe output velocity field.
[in]boundarySDFThe SDF of the boundary.
[in]boundaryVelocityThe velocity of the boundary.
[in]fluidSDFThe SDF of the fluid/atmosphere.
[in]useCompressedTrue if it uses compressed system.

Implemented in CubbyFlow::GridFractionalSinglePhasePressureSolver3, and CubbyFlow::GridSinglePhasePressureSolver3.

◆ SuggestedBoundaryConditionSolver()

virtual GridBoundaryConditionSolver3Ptr CubbyFlow::GridPressureSolver3::SuggestedBoundaryConditionSolver ( ) const
pure virtual

Returns the best boundary condition solver for this solver.

This function returns the best boundary condition solver that works well with this pressure solver. Depending on the pressure solver implementation, different boundary condition solver might be used.

Implemented in CubbyFlow::GridFractionalSinglePhasePressureSolver3, and CubbyFlow::GridSinglePhasePressureSolver3.


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