OpenVDB
12.0.0

Performs advections of an arbitrary type of volume in a static velocity field. The advections are performed by means of various derivatives of SemiLagrangian integration, i.e. backwards tracking along the hyperbolic characteristics followed by interpolation. More...
#include <openvdb/tools/VolumeAdvect.h>
Public Member Functions  
VolumeAdvection (const VelocityGridT &velGrid, InterrupterType *interrupter=nullptr)  
Constructor. More...  
virtual  ~VolumeAdvection () 
int  spatialOrder () const 
Return the spatial order of accuracy of the advection scheme. More...  
int  temporalOrder () const 
Return the temporal order of accuracy of the advection scheme. More...  
void  setIntegrator (Scheme::SemiLagrangian integrator) 
Set the integrator (see details in the table above) More...  
Scheme::SemiLagrangian  getIntegrator () const 
Return the integrator (see details in the table above) More...  
void  setLimiter (Scheme::Limiter limiter) 
Set the limiter (see details above) More...  
Scheme::Limiter  getLimiter () const 
Retrun the limiter (see details above) More...  
bool  isLimiterOn () const 
Return true if a limiter will be applied based on the current settings. More...  
size_t  getGrainSize () const 
void  setGrainSize (size_t grainsize) 
Set the grainsize used for multithreading. More...  
int  getSubSteps () const 
void  setSubSteps (int substeps) 
Set the number of substeps per integration. More...  
double  getMaxVelocity () const 
Return the maximum magnitude of the velocity in the advection velocity field defined during construction. More...  
template<typename VolumeGridT >  
int  getMaxDistance (const VolumeGridT &inGrid, double dt) const 
template<typename VolumeGridT , typename VolumeSamplerT >  
VolumeGridT::Ptr  advect (const VolumeGridT &inGrid, double timeStep) 
template<typename VolumeGridT , typename MaskGridT , typename VolumeSamplerT >  
VolumeGridT::Ptr  advect (const VolumeGridT &inGrid, const MaskGridT &mask, double timeStep) 
Performs advections of an arbitrary type of volume in a static velocity field. The advections are performed by means of various derivatives of SemiLagrangian integration, i.e. backwards tracking along the hyperbolic characteristics followed by interpolation.
The supported integrations schemes: /// /// ================================================================ ///  Lable  Accuracy  Integration Scheme  Interpolations  ///  Time/Space  velocity/volume  /// ================================================================ ///  SEMI  1/1  SemiLagrangian  1/1  ///  MID  2/1  MidPoint  2/1  ///  RK3  3/1  3rd Order RungeKutta  3/1  ///  RK4  4/1  4th Order RungeKutta  4/1  ///  MAC  2/2  MacCormack  2/2  ///  BFECC  2/2  BFECC  3/2  /// ================================================================ ///

inline 
Constructor.
velGrid  Velocity grid responsible for the (passive) advection. 
interrupter  Optional interrupter used to prematurely end computations. 

inlinevirtual 

inline 
inGrid  The input grid to be advected (unmodified) 
timeStep  Timestep of the RungeKutta integrator. 
This method will advect all of the active values in the input inGrid. To achieve this a deepcopy is dilated to account for the material transport. This dilation step can be slow for large time steps dt or a velocity field with large magnitudes.
RuntimeError  if inGrid does not have uniform voxels. 

inline 
mask
. The time of the output grid is incremented by timeStep.inGrid  The input grid to be advected (unmodified). 
mask  The mask of active values defining the active voxels in inGrid on which to perform advection. Only if a value is active in both grids will it be modified. 
timeStep  Timestep for a single RungeKutta integration step. 
This method will advect all of the active values in the input inGrid that intersects with the active values in mask. To achieve this a deepcopy is dilated to account for the material transport and finally cropped to the intersection with mask. The dilation step can be slow for large time steps dt or fast moving velocity fields.
RuntimeError  if inGrid is not aligned with mask or if its voxels are not uniform. 

inline 

inline 
Return the integrator (see details in the table above)

inline 
Retrun the limiter (see details above)

inline 
This method is useful when dilating sparse volume grids to pad boundary regions. Excessive dilation can be computationally expensive so use this method to prevent or warn against runaway computation.
RuntimeError  if inGrid does not have uniform voxels. 

inline 
Return the maximum magnitude of the velocity in the advection velocity field defined during construction.

inline 

inline 
Return true
if a limiter will be applied based on the current settings.

inline 
Set the grainsize used for multithreading.

inline 
Set the integrator (see details in the table above)

inline 
Set the limiter (see details above)

inline 
Set the number of substeps per integration.

inline 
Return the spatial order of accuracy of the advection scheme.

inline 
Return the temporal order of accuracy of the advection scheme.