mantaflow  0.10
A framework for fluid simulation
Macros | Functions
advection.cpp File Reference
#include "vectorbase.h"
#include "grid.h"
#include "kernel.h"
#include <limits>

Macros

#define checkFlag(x, y, z)   (flags((x),(y),(z)) & (FlagGrid::TypeFluid|FlagGrid::TypeEmpty))
 

Functions

void Manta::SemiLagrange (FlagGrid &flags, MACGrid &vel, Grid< T > &dst, Grid< T > &src, Real dt, bool isLevelset, int orderSpace)
 
void Manta::SemiLagrangeMAC (FlagGrid &flags, MACGrid &vel, MACGrid &dst, MACGrid &src, Real dt, int orderSpace)
 
void Manta::MacCormackCorrect (FlagGrid &flags, Grid< T > &dst, Grid< T > &old, Grid< T > &fwd, Grid< T > &bwd, Real strength, bool isLevelSet, bool isMAC=false)
 
void Manta::MacCormackCorrectMAC (FlagGrid &flags, Grid< T > &dst, Grid< T > &old, Grid< T > &fwd, Grid< T > &bwd, Real strength, bool isLevelSet, bool isMAC=false)
 
template<class T >
void Manta::getMinMax (T &minv, T &maxv, const T &val)
 
template<>
void Manta::getMinMax< Vec3 > (Vec3 &minv, Vec3 &maxv, const Vec3 &val)
 
template<class T >
bool Manta::cmpMinMax (T &minv, T &maxv, const T &val)
 detect out of bounds value
 
template<>
bool Manta::cmpMinMax< Vec3 > (Vec3 &minv, Vec3 &maxv, const Vec3 &val)
 
template<class T >
Manta::doClampComponent (const Vec3i &gridSize, FlagGrid &flags, T dst, Grid< T > &orig, T fwd, const Vec3 &pos, const Vec3 &vel, const int clampMode)
 Helper function for clamping non-mac grids (those have specialized per component version below)
 
template<int c>
Real Manta::doClampComponentMAC (FlagGrid &flags, const Vec3i &gridSize, Real dst, MACGrid &orig, Real fwd, const Vec3 &pos, const Vec3 &vel, const int clampMode)
 Helper function for clamping MAC grids, slight differences in flag checks.
 
void Manta::MacCormackClamp (FlagGrid &flags, MACGrid &vel, Grid< T > &dst, Grid< T > &orig, Grid< T > &fwd, Real dt, const int clampMode)
 Kernel: Clamp obtained value to min/max in source area, and reset values that point out of grid or into boundaries. More...
 
void Manta::MacCormackClampMAC (FlagGrid &flags, MACGrid &vel, MACGrid &dst, MACGrid &orig, MACGrid &fwd, Real dt, const int clampMode)
 
template<class GridType >
void Manta::fnAdvectSemiLagrange (FluidSolver *parent, FlagGrid &flags, MACGrid &vel, GridType &orig, int order, Real strength, int orderSpace, bool openBounds, int bWidth, int clampMode)
 
Vec3 Manta::getBulkVel (FlagGrid &flags, MACGrid &vel, int i, int j, int k)
 calculate local propagation velocity for cell (i,j,k)
 
void Manta::extrapolateVelConvectiveBC (FlagGrid &flags, MACGrid &vel, MACGrid &velDst, MACGrid &velPrev, Real timeStep, int bWidth)
 
void Manta::copyChangedVels (FlagGrid &flags, MACGrid &velDst, MACGrid &vel)
 
void Manta::applyOutflowBC (FlagGrid &flags, MACGrid &vel, MACGrid &velPrev, double timeStep, int bWidth=1)
 extrapolate normal velocity components into open boundary cells (marked as outflow cells)
 
void Manta::knResetPhiInObs (FlagGrid &flags, Grid< Real > &sdf)
 
PYTHON void Manta::resetPhiInObs (FlagGrid &flags, Grid< Real > &sdf)
 
template<>
void Manta::fnAdvectSemiLagrange< MACGrid > (FluidSolver *parent, FlagGrid &flags, MACGrid &vel, MACGrid &orig, int order, Real strength, int orderSpace, bool openBounds, int bWidth, int clampMode)
 template function for performing SL advection: specialized version for MAC grids
 
PYTHON void Manta::advectSemiLagrange (FlagGrid *flags, MACGrid *vel, GridBase *grid, int order=1, Real strength=1.0, int orderSpace=1, bool openBounds=false, int boundaryWidth=1, int clampMode=1)
 

Function Documentation

◆ fnAdvectSemiLagrange()

template<class GridType >
void Manta::fnAdvectSemiLagrange ( FluidSolver parent,
FlagGrid flags,
MACGrid vel,
GridType &  orig,
int  order,
Real  strength,
int  orderSpace,
bool  openBounds,
int  bWidth,
int  clampMode 
)

template function for performing SL advection (Note boundary width only needed for specialization for MAC grids below)