GridFluidSolver3.hpp
Go to the documentation of this file.
virtual void ComputeViscosity(double timeIntervalInSeconds)
Computes the viscosity term using the diffusion solver.
const AdvectionSolver3Ptr & GetAdvectionSolver() const
Returns the advection solver instance.
std::shared_ptr< Collider3 > Collider3Ptr
Shared pointer type for the Collider3.
Definition: Collider.hpp:144
static Builder GetBuilder()
Returns builder fox GridFluidSolver3.
void OnAdvanceTimeStep(double timeIntervalInSeconds) override
Called when advancing a single time-step.
virtual void ComputePressure(double timeIntervalInSeconds)
Computes the pressure term using the pressure solver.
virtual ScalarField3Ptr GetFluidSDF() const
Returns the signed-distance representation of the fluid.
void OnInitialize() override
Called when it needs to setup initial condition.
void SetCollider(const Collider3Ptr &newCollider)
Sets the collider.
std::shared_ptr< AdvectionSolver3 > AdvectionSolver3Ptr
Shared pointer type for the 3-D advection solver.
Definition: AdvectionSolver3.hpp:125
void SetDiffusionSolver(const GridDiffusionSolver3Ptr &newSolver)
Sets the diffusion solver.
void SetAdvectionSolver(const AdvectionSolver3Ptr &newSolver)
Sets the advection solver.
Vector3D GetGridOrigin() const
Returns the origin of the grid system data.
Vector3UZ GetResolution() const
Returns the resolution of the grid system data.
void SetEmitter(const GridEmitter3Ptr &newEmitter)
Sets the emitter.
std::shared_ptr< ScalarField3 > ScalarField3Ptr
Shared pointer for the ScalarField3 type.
Definition: ScalarField.hpp:70
std::shared_ptr< GridEmitter3 > GridEmitter3Ptr
Shared pointer type for the GridEmitter3.
Definition: GridEmitter3.hpp:87
const FaceCenteredGrid3Ptr & GetVelocity() const
Returns the velocity field.
Abstract base class for N-D scalar grid structure.
Definition: ScalarGrid.hpp:24
std::shared_ptr< VectorField3 > VectorField3Ptr
Shared pointer for the VectorField3 type.
Definition: VectorField.hpp:90
DerivedBuilder & WithOrigin(const Vector3D &gridOrigin)
Returns builder with grid origin.
Definition: GridFluidSolver3.hpp:382
virtual void ComputeExternalForces(double timeIntervalInSeconds)
Computes the external force terms.
const GridEmitter3Ptr & GetEmitter() const
Returns the emitter.
std::shared_ptr< GridPressureSolver3 > GridPressureSolver3Ptr
Shared pointer type for the GridPressureSolver3.
Definition: GridPressureSolver3.hpp:96
void SetPressureSolver(const GridPressureSolver3Ptr &newSolver)
Sets the pressure solver.
void SetGravity(const Vector3D &newGravity)
Sets the gravity of the system.
std::shared_ptr< GridBoundaryConditionSolver3 > GridBoundaryConditionSolver3Ptr
Shared pointer type for the GridBoundaryConditionSolver3.
Definition: GridBoundaryConditionSolver3.hpp:117
int GetClosedDomainBoundaryFlag() const
Returns the closed domain boundary flag.
const GridPressureSolver3Ptr & GetPressureSolver() const
Returns the pressure solver instance.
VectorField3Ptr GetColliderVelocityField() const
Returns the velocity field of the collider.
const GridDiffusionSolver3Ptr & GetDiffusionSolver() const
Returns the diffusion solver instance.
virtual void OnBeginAdvanceTimeStep(double timeIntervalInSeconds)
Called at the beginning of a time-step.
~GridFluidSolver3() override=default
Default virtual destructor.
Base class for grid-based fluid solver builder.
Definition: GridFluidSolver3.hpp:315
std::shared_ptr< FaceCenteredGrid3 > FaceCenteredGrid3Ptr
Shared pointer type for the FaceCenteredGrid3.
Definition: FaceCenteredGrid.hpp:437
void ApplyBoundaryCondition() const
Applies the boundary condition to the velocity field.
double GetViscosityCoefficient() const
Returns the viscosity coefficient.
bool GetUseCompressedLinearSystem() const
Returns true if the solver is using compressed linear system.
Definition: Matrix.hpp:27
Abstract base class for physics-based animation.
Definition: PhysicsAnimation.hpp:24
unsigned int GetNumberOfSubTimeSteps(double timeIntervalInSeconds) const override
Returns the required sub-time-steps for given time interval.
Front-end to create GridFluidSolver3 objects step by step.
Definition: GridFluidSolver3.hpp:404
Definition: pybind11Utils.hpp:20
Vector3D GetGridSpacing() const
Definition: GridFluidSolver3.hpp:389
Abstract base class for grid-based 3-D fluid solver.
Definition: GridFluidSolver3.hpp:35
virtual void OnEndAdvanceTimeStep(double timeIntervalInSeconds)
Called at the end of a time-step.
Vector3D GetGridSpacing() const
Returns the grid spacing of the grid system data.
const GridSystemData3Ptr & GetGridSystemData() const
Returns the grid system data.
std::shared_ptr< GridDiffusionSolver3 > GridDiffusionSolver3Ptr
Shared pointer type for the GridDiffusionSolver3.
Definition: GridDiffusionSolver3.hpp:108
double GetCFL(double timeIntervalInSeconds) const
Returns the CFL number from the current velocity field for given time interval.
void SetClosedDomainBoundaryFlag(int flag)
Sets the closed domain boundary flag.
DerivedBuilder & WithGridSpacing(const Vector3D &gridSpacing)
Returns builder with grid spacing.
Definition: GridFluidSolver3.hpp:356
void SetViscosityCoefficient(double newValue)
Sets the viscosity coefficient.
N-D face-centered (a.k.a MAC or staggered) grid.
Definition: FaceCenteredGrid.hpp:31
void ExtrapolateIntoCollider(ScalarGrid3 *grid)
Extrapolates given field into the collider-occupied region.
GridFluidSolver3 & operator=(const GridFluidSolver3 &)=delete
Deleted copy assignment operator.
DerivedBuilder & WithResolution(const Vector3UZ &resolution)
Returns builder with grid resolution.
Definition: GridFluidSolver3.hpp:349
void SetUseCompressedLinearSystem(bool isOn)
Sets whether the solver should use compressed linear system.
const Collider3Ptr & GetCollider() const
Returns the collider.
std::shared_ptr< GridSystemData3 > GridSystemData3Ptr
Shared pointer type of GridSystemData3.
Definition: GridSystemData.hpp:276
void ResizeGrid(const Vector3UZ &newSize, const Vector3D &newGridSpacing, const Vector3D &newGridOrigin) const
Resizes grid system data.
ScalarField3Ptr GetColliderSDF() const
Returns the signed-distance field representation of the collider.
Abstract base class for N-D collocated vector grid structure.
Definition: CollocatedVectorGrid.hpp:22
std::shared_ptr< GridFluidSolver3 > GridFluidSolver3Ptr
Shared pointer type for the GridFluidSolver3.
Definition: GridFluidSolver3.hpp:309
DerivedBuilder & WithDomainSizeX(double domainSizeX)
Returns builder with domain size in x-direction.
Definition: GridFluidSolver3.hpp:374
void ComputeGravity(double timeIntervalInSeconds)
Computes the gravity term.
GridFluidSolver3Ptr MakeShared() const
Builds shared pointer of GridFluidSolver3 instance.
Definition: GridFluidSolver3.hpp:412
const Vector3D & GetGravity() const
Returns the gravity vector of the system.
virtual void ComputeAdvection(double timeIntervalInSeconds)
Computes the advection term using the advection solver.