CubbyFlow::AdvectionSolver2 Class Referenceabstract

Abstract based class for 2-D grid-based advection solver. More...

#include <Core/Solver/Advection/AdvectionSolver2.hpp>

Inheritance diagram for CubbyFlow::AdvectionSolver2:
CubbyFlow::SemiLagrangian2 CubbyFlow::CubicSemiLagrangian2

Public Member Functions

 AdvectionSolver2 ()=default
 Default constructor. More...
 
 AdvectionSolver2 (const AdvectionSolver2 &)=default
 Default copy constructor. More...
 
 AdvectionSolver2 (AdvectionSolver2 &&) noexcept=default
 Default move constructor. More...
 
virtual ~AdvectionSolver2 ()=default
 Default virtual destructor. More...
 
AdvectionSolver2operator= (const AdvectionSolver2 &)=default
 Default copy assignment operator. More...
 
AdvectionSolver2operator= (AdvectionSolver2 &&) noexcept=default
 Default move assignment operator. More...
 
virtual void Advect (const ScalarGrid2 &input, const VectorField2 &flow, double dt, ScalarGrid2 *output, const ScalarField2 &boundarySDF=ConstantScalarField2(std::numeric_limits< double >::max()))=0
 Solves advection equation for given scalar grid. More...
 
virtual void Advect (const CollocatedVectorGrid2 &input, const VectorField2 &flow, double dt, CollocatedVectorGrid2 *output, const ScalarField2 &boundarySDF=ConstantScalarField2(std::numeric_limits< double >::max()))
 Solves advection equation for given collocated vector grid. More...
 
virtual void Advect (const FaceCenteredGrid2 &input, const VectorField2 &flow, double dt, FaceCenteredGrid2 *output, const ScalarField2 &boundarySDF=ConstantScalarField2(std::numeric_limits< double >::max()))
 Solves advection equation for given face-centered vector grid. More...
 

Detailed Description

Abstract based class for 2-D grid-based advection solver.

The implementation of this abstract base class should solve 2-D advection equation for scalar and vector fields.

Constructor & Destructor Documentation

◆ AdvectionSolver2() [1/3]

CubbyFlow::AdvectionSolver2::AdvectionSolver2 ( )
default

Default constructor.

◆ AdvectionSolver2() [2/3]

CubbyFlow::AdvectionSolver2::AdvectionSolver2 ( const AdvectionSolver2 )
default

Default copy constructor.

◆ AdvectionSolver2() [3/3]

CubbyFlow::AdvectionSolver2::AdvectionSolver2 ( AdvectionSolver2 &&  )
defaultnoexcept

Default move constructor.

◆ ~AdvectionSolver2()

virtual CubbyFlow::AdvectionSolver2::~AdvectionSolver2 ( )
virtualdefault

Default virtual destructor.

Member Function Documentation

◆ Advect() [1/3]

virtual void CubbyFlow::AdvectionSolver2::Advect ( const ScalarGrid2 input,
const VectorField2 flow,
double  dt,
ScalarGrid2 output,
const ScalarField2 boundarySDF = ConstantScalarField2(std::numeric_limits< double >::max()) 
)
pure virtual

Solves advection equation for given scalar grid.

The implementation of this virtual function should solve advection equation for given scalar field input and underlying vector field flow that carries the input field. The solution after solving the equation for given time-step dt should be stored in scalar field output. The boundary interface is given by a signed-distance field. The field is negative inside the boundary. By default, a constant field with max double value (std::numeric_limits<double>::max()) is used, meaning no boundary.

Parameters
inputInput scalar grid.
flowVector field that advects the input field.
dtTime-step for the advection.
outputOutput scalar grid.
boundarySDFBoundary interface defined by signed-distance field.

Implemented in CubbyFlow::SemiLagrangian2.

◆ Advect() [2/3]

virtual void CubbyFlow::AdvectionSolver2::Advect ( const CollocatedVectorGrid2 input,
const VectorField2 flow,
double  dt,
CollocatedVectorGrid2 output,
const ScalarField2 boundarySDF = ConstantScalarField2(std::numeric_limits< double >::max()) 
)
virtual

Solves advection equation for given collocated vector grid.

The implementation of this virtual function should solve advection equation for given collocated vector grid input and underlying vector field flow that carries the input field. The solution after solving the equation for given time-step dt should be stored in vector field output. The boundary interface is given by a signed-distance field. The field is negative inside the boundary. By default, a constant field with max double value (std::numeric_limits<double>::max()) is used, meaning no boundary.

Parameters
inputInput vector grid.
flowVector field that advects the input field.
dtTime-step for the advection.
outputOutput vector grid.
boundarySDFBoundary interface defined by signed-distance field.

Reimplemented in CubbyFlow::SemiLagrangian2.

◆ Advect() [3/3]

virtual void CubbyFlow::AdvectionSolver2::Advect ( const FaceCenteredGrid2 input,
const VectorField2 flow,
double  dt,
FaceCenteredGrid2 output,
const ScalarField2 boundarySDF = ConstantScalarField2(std::numeric_limits< double >::max()) 
)
virtual

Solves advection equation for given face-centered vector grid.

The implementation of this virtual function should solve advection equation for given face-centered vector field input and underlying vector field flow that carries the input field. The solution after solving the equation for given time-step dt should be stored in vector field output. The boundary interface is given by a signed-distance field. The field is negative inside the boundary. By default, a constant field with max double value (std::numeric_limits<double>::max()) is used, meaning no boundary.

Parameters
inputInput vector grid.
flowVector field that advects the input field.
dtTime-step for the advection.
outputOutput vector grid.
boundarySDFBoundary interface defined by signed-distance field.

Reimplemented in CubbyFlow::SemiLagrangian2.

◆ operator=() [1/2]

AdvectionSolver2& CubbyFlow::AdvectionSolver2::operator= ( const AdvectionSolver2 )
default

Default copy assignment operator.

◆ operator=() [2/2]

AdvectionSolver2& CubbyFlow::AdvectionSolver2::operator= ( AdvectionSolver2 &&  )
defaultnoexcept

Default move assignment operator.


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