Performs advections of an arbitrary type of volume in a static velocity field. The advections are performed by means of various derivatives of Semi-Lagrangian integration, i.e. backwards tracking along the hyperbolic characteristics followed by interpolation.
More...
|
| | VolumeAdvection (const VelocityGridT &velGrid, InterrupterType *interrupter=nullptr) |
| | Constructor.
|
| |
| virtual | ~VolumeAdvection () |
| |
| int | spatialOrder () const |
| | Return the spatial order of accuracy of the advection scheme.
|
| |
| int | temporalOrder () const |
| | Return the temporal order of accuracy of the advection scheme.
|
| |
| void | setIntegrator (Scheme::SemiLagrangian integrator) |
| | Set the integrator (see details in the table above)
|
| |
| Scheme::SemiLagrangian | getIntegrator () const |
| | Return the integrator (see details in the table above)
|
| |
| void | setLimiter (Scheme::Limiter limiter) |
| | Set the limiter (see details above)
|
| |
| Scheme::Limiter | getLimiter () const |
| | Retrun the limiter (see details above)
|
| |
| bool | isLimiterOn () const |
| | Return true if a limiter will be applied based on the current settings.
|
| |
| size_t | getGrainSize () const |
| |
| void | setGrainSize (size_t grainsize) |
| | Set the grain-size used for multi-threading.
|
| |
| int | getSubSteps () const |
| |
| void | setSubSteps (int substeps) |
| | Set the number of sub-steps per integration.
|
| |
| double | getMaxVelocity () const |
| | Return the maximum magnitude of the velocity in the advection velocity field defined during construction.
|
| |
| 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) |
| |
template<typename VelocityGridT = Vec3fGrid,
bool StaggeredVelocity = false, typename InterrupterType = util::NullInterrupter>
class openvdb::v12_0::tools::VolumeAdvection< VelocityGridT, StaggeredVelocity, InterrupterType >
Performs advections of an arbitrary type of volume in a static velocity field. The advections are performed by means of various derivatives of Semi-Lagrangian integration, i.e. backwards tracking along the hyperbolic characteristics followed by interpolation.
- Note
- Optionally a limiter can be combined with the higher-order integration schemes MacCormack and BFECC. There are two types of limiters (CLAMP and REVERT) that suppress non-physical oscillations by means of either claminging or reverting to a first-order schemes when the function is not bounded by the cell values used for tri-linear interpolation.
The supported integrations schemes:
///
/// ================================================================
/// | Lable | Accuracy | Integration Scheme | Interpolations |
/// | |Time/Space| | velocity/volume |
/// ================================================================
/// | SEMI | 1/1 | Semi-Lagrangian | 1/1 |
/// | MID | 2/1 | Mid-Point | 2/1 |
/// | RK3 | 3/1 | 3rd Order Runge-Kutta | 3/1 |
/// | RK4 | 4/1 | 4th Order Runge-Kutta | 4/1 |
/// | MAC | 2/2 | MacCormack | 2/2 |
/// | BFECC | 2/2 | BFECC | 3/2 |
/// ================================================================
///