VTK-m
2.3
|
Compute the finite time Lyapunov exponent (FTLE) of a vector field. More...
#include <LagrangianStructures.h>
Public Member Functions | |
bool | CanThread () const override |
Returns whether the filter can execute on partitions in concurrent threads. More... | |
void | SetStepSize (vtkm::FloatDefault s) |
Specifies the step size used for the numerical integrator. More... | |
vtkm::FloatDefault | GetStepSize () |
Specifies the step size used for the numerical integrator. More... | |
void | SetNumberOfSteps (vtkm::Id n) |
Specify the maximum number of steps each particle is allowed to traverse. More... | |
vtkm::Id | GetNumberOfSteps () |
Specify the maximum number of steps each particle is allowed to traverse. More... | |
void | SetAdvectionTime (vtkm::FloatDefault advectionTime) |
Specify the time interval for the advection. More... | |
vtkm::FloatDefault | GetAdvectionTime () |
Specify the time interval for the advection. More... | |
void | SetUseAuxiliaryGrid (bool useAuxiliaryGrid) |
Specify whether to use an auxiliary grid. More... | |
bool | GetUseAuxiliaryGrid () |
Specify whether to use an auxiliary grid. More... | |
void | SetAuxiliaryGridDimensions (vtkm::Id3 auxiliaryDims) |
Specify the dimensions of the auxiliary grid for FTLE calculation. More... | |
vtkm::Id3 | GetAuxiliaryGridDimensions () |
Specify the dimensions of the auxiliary grid for FTLE calculation. More... | |
void | SetUseFlowMapOutput (bool useFlowMapOutput) |
Specify whether to use flow maps instead of advection. More... | |
bool | GetUseFlowMapOutput () |
Specify whether to use flow maps instead of advection. More... | |
void | SetOutputFieldName (std::string outputFieldName) |
Specify the name of the output field in the data set returned. More... | |
std::string | GetOutputFieldName () |
Specify the name of the output field in the data set returned. More... | |
void | SetFlowMapOutput (vtkm::cont::ArrayHandle< vtkm::Vec3f > &flowMap) |
Specify the array representing the flow map output to be used for FTLE calculation. More... | |
vtkm::cont::ArrayHandle< vtkm::Vec3f > | GetFlowMapOutput () |
Specify the array representing the flow map output to be used for FTLE calculation. More... | |
![]() | |
Filter () | |
virtual | ~Filter () |
vtkm::cont::DataSet | Execute (const vtkm::cont::DataSet &input) |
Executes the filter on the input and produces a result dataset. More... | |
vtkm::cont::PartitionedDataSet | Execute (const vtkm::cont::PartitionedDataSet &input) |
Executes the filter on the input PartitionedDataSet and produces a result PartitionedDataSet. More... | |
void | SetFieldsToPass (const vtkm::filter::FieldSelection &fieldsToPass) |
Specify which fields get passed from input to output. More... | |
void | SetFieldsToPass (vtkm::filter::FieldSelection &&fieldsToPass) |
Specify which fields get passed from input to output. More... | |
void | SetFieldsToPass (const vtkm::filter::FieldSelection &fieldsToPass, vtkm::filter::FieldSelection::Mode mode) |
void | SetFieldsToPass (std::initializer_list< std::string > fields, vtkm::filter::FieldSelection::Mode mode=vtkm::filter::FieldSelection::Mode::Select) |
Specify which fields get passed from input to output. More... | |
void | SetFieldsToPass (std::initializer_list< std::pair< std::string, vtkm::cont::Field::Association >> fields, vtkm::filter::FieldSelection::Mode mode=vtkm::filter::FieldSelection::Mode::Select) |
Specify which fields get passed from input to output. More... | |
void | SetFieldsToPass (const std::string &fieldname, vtkm::cont::Field::Association association, vtkm::filter::FieldSelection::Mode mode=vtkm::filter::FieldSelection::Mode::Select) |
Specify which fields get passed from input to output. More... | |
void | SetFieldsToPass (const std::string &fieldname, vtkm::filter::FieldSelection::Mode mode) |
Specify which fields get passed from input to output. More... | |
const vtkm::filter::FieldSelection & | GetFieldsToPass () const |
Specify which fields get passed from input to output. More... | |
vtkm::filter::FieldSelection & | GetFieldsToPass () |
Specify which fields get passed from input to output. More... | |
void | SetPassCoordinateSystems (bool flag) |
Specify whether to always pass coordinate systems. More... | |
bool | GetPassCoordinateSystems () const |
Specify whether to always pass coordinate systems. More... | |
void | SetOutputFieldName (const std::string &name) |
Specifies the name of the output field generated. More... | |
const std::string & | GetOutputFieldName () const |
Specifies the name of the output field generated. More... | |
void | SetActiveField (const std::string &name, vtkm::cont::Field::Association association=vtkm::cont::Field::Association::Any) |
Specifies a field to operate on. More... | |
void | SetActiveField (vtkm::IdComponent index, const std::string &name, vtkm::cont::Field::Association association=vtkm::cont::Field::Association::Any) |
Specifies a field to operate on. More... | |
const std::string & | GetActiveFieldName (vtkm::IdComponent index=0) const |
Specifies a field to operate on. More... | |
vtkm::cont::Field::Association | GetActiveFieldAssociation (vtkm::IdComponent index=0) const |
Specifies a field to operate on. More... | |
void | SetActiveCoordinateSystem (vtkm::Id coord_idx) |
Specifies the coordinate system index to make active to use when processing the input vtkm::cont::DataSet . More... | |
void | SetActiveCoordinateSystem (vtkm::IdComponent index, vtkm::Id coord_idx) |
Specifies the coordinate system index to make active to use when processing the input vtkm::cont::DataSet . More... | |
vtkm::Id | GetActiveCoordinateSystemIndex (vtkm::IdComponent index=0) const |
Specifies the coordinate system index to make active to use when processing the input vtkm::cont::DataSet . More... | |
void | SetUseCoordinateSystemAsField (bool val) |
Specifies whether to use point coordinates as the input field. More... | |
void | SetUseCoordinateSystemAsField (vtkm::IdComponent index, bool val) |
Specifies whether to use point coordinates as the input field. More... | |
bool | GetUseCoordinateSystemAsField (vtkm::IdComponent index=0) const |
Specifies whether to use point coordinates as the input field. More... | |
vtkm::IdComponent | GetNumberOfActiveFields () const |
Return the number of active fields currently set. More... | |
void | SetThreadsPerCPU (vtkm::Id numThreads) |
void | SetThreadsPerGPU (vtkm::Id numThreads) |
vtkm::Id | GetThreadsPerCPU () const |
vtkm::Id | GetThreadsPerGPU () const |
bool | GetRunMultiThreadedFilter () const |
void | SetRunMultiThreadedFilter (bool val) |
void | SetInvoker (vtkm::cont::Invoker inv) |
Specify the vtkm::cont::Invoker to be used to execute worklets by this filter instance. More... | |
Private Member Functions | |
vtkm::cont::DataSet | DoExecute (const vtkm::cont::DataSet &inData) override |
Private Attributes | |
vtkm::FloatDefault | AdvectionTime |
vtkm::Id3 | AuxiliaryDims |
vtkm::cont::ArrayHandle< vtkm::Vec3f > | FlowMapOutput |
std::string | OutputFieldName = "FTLE" |
vtkm::FloatDefault | StepSize = 1.0f |
vtkm::Id | NumberOfSteps = 0 |
bool | UseAuxiliaryGrid = false |
bool | UseFlowMapOutput = false |
Additional Inherited Members | |
![]() | |
vtkm::cont::DataSet | CreateResult (const vtkm::cont::DataSet &inDataSet) const |
Create the output data set for DoExecute . More... | |
vtkm::cont::DataSet | CreateResultField (const vtkm::cont::DataSet &inDataSet, const vtkm::cont::Field &resultField) const |
Create the output data set for DoExecute More... | |
vtkm::cont::DataSet | CreateResultField (const vtkm::cont::DataSet &inDataSet, const std::string &resultFieldName, vtkm::cont::Field::Association resultFieldAssociation, const vtkm::cont::UnknownArrayHandle &resultFieldArray) const |
Create the output data set for DoExecute More... | |
vtkm::cont::DataSet | CreateResultFieldPoint (const vtkm::cont::DataSet &inDataSet, const std::string &resultFieldName, const vtkm::cont::UnknownArrayHandle &resultFieldArray) const |
Create the output data set for DoExecute More... | |
vtkm::cont::DataSet | CreateResultFieldCell (const vtkm::cont::DataSet &inDataSet, const std::string &resultFieldName, const vtkm::cont::UnknownArrayHandle &resultFieldArray) const |
Create the output data set for DoExecute More... | |
vtkm::cont::PartitionedDataSet | CreateResult (const vtkm::cont::PartitionedDataSet &input, const vtkm::cont::PartitionedDataSet &resultPartitions) const |
Create the output data set for DoExecute . More... | |
template<typename FieldMapper > | |
vtkm::cont::PartitionedDataSet | CreateResult (const vtkm::cont::PartitionedDataSet &input, const vtkm::cont::PartitionedDataSet &resultPartitions, FieldMapper &&fieldMapper) const |
Create the output data set for DoExecute . More... | |
template<typename FieldMapper > | |
vtkm::cont::DataSet | CreateResult (const vtkm::cont::DataSet &inDataSet, const vtkm::cont::UnknownCellSet &resultCellSet, FieldMapper &&fieldMapper) const |
Create the output data set for DoExecute . More... | |
template<typename FieldMapper > | |
vtkm::cont::DataSet | CreateResultCoordinateSystem (const vtkm::cont::DataSet &inDataSet, const vtkm::cont::UnknownCellSet &resultCellSet, const vtkm::cont::CoordinateSystem &resultCoordSystem, FieldMapper &&fieldMapper) const |
Create the output data set for DoExecute . More... | |
template<typename FieldMapper > | |
vtkm::cont::DataSet | CreateResultCoordinateSystem (const vtkm::cont::DataSet &inDataSet, const vtkm::cont::UnknownCellSet &resultCellSet, const std::string &coordsName, const vtkm::cont::UnknownArrayHandle &coordsData, FieldMapper &&fieldMapper) const |
Create the output data set for DoExecute . More... | |
const vtkm::cont::Field & | GetFieldFromDataSet (const vtkm::cont::DataSet &input) const |
Retrieve an input field from a vtkm::cont::DataSet object. More... | |
const vtkm::cont::Field & | GetFieldFromDataSet (vtkm::IdComponent index, const vtkm::cont::DataSet &input) const |
Retrieve an input field from a vtkm::cont::DataSet object. More... | |
virtual vtkm::cont::PartitionedDataSet | DoExecutePartitions (const vtkm::cont::PartitionedDataSet &inData) |
template<typename Functor , typename... Args> | |
void | CastAndCallScalarField (const vtkm::cont::UnknownArrayHandle &fieldArray, Functor &&functor, Args &&... args) const |
Convenience method to get the array from a filter's input scalar field. More... | |
template<typename Functor , typename... Args> | |
void | CastAndCallScalarField (const vtkm::cont::Field &field, Functor &&functor, Args &&... args) const |
Convenience method to get the array from a filter's input scalar field. More... | |
template<vtkm::IdComponent VecSize, typename Functor , typename... Args> | |
void | CastAndCallVecField (const vtkm::cont::UnknownArrayHandle &fieldArray, Functor &&functor, Args &&... args) const |
Convenience method to get the array from a filter's input vector field. More... | |
template<vtkm::IdComponent VecSize, typename Functor , typename... Args> | |
void | CastAndCallVecField (const vtkm::cont::Field &field, Functor &&functor, Args &&... args) const |
Convenience method to get the array from a filter's input vector field. More... | |
template<typename Functor , typename... Args> | |
void | CastAndCallVariableVecField (const vtkm::cont::UnknownArrayHandle &fieldArray, Functor &&functor, Args &&... args) const |
This method is like CastAndCallVecField except that it can be used for a field of unknown vector size (or scalars). More... | |
template<typename Functor , typename... Args> | |
void | CastAndCallVariableVecField (const vtkm::cont::Field &field, Functor &&functor, Args &&... args) const |
This method is like CastAndCallVecField except that it can be used for a field of unknown vector size (or scalars). More... | |
![]() | |
vtkm::cont::Invoker | Invoke |
Compute the finite time Lyapunov exponent (FTLE) of a vector field.
The FTLE is computed by advecting particles throughout the vector field and analyizing where they diverge or converge. By default, the points of the input vtkm::cont::DataSet
are all advected for this computation unless an auxiliary grid is established.
|
inlineoverridevirtual |
Returns whether the filter can execute on partitions in concurrent threads.
If a derived class's implementation of DoExecute
cannot run on multiple threads, then the derived class should override this method to return false.
Reimplemented from vtkm::filter::Filter.
|
overrideprivatevirtual |
Implements vtkm::filter::Filter.
|
inline |
Specify the time interval for the advection.
The FTLE works by advecting all points a finite distance, and this parameter specifies how far to advect.
|
inline |
Specify the dimensions of the auxiliary grid for FTLE calculation.
Seeds for advection will be placed along the points of this auxiliary grid. This option has no effect unless the UseAuxiliaryGrid option is on.
|
inline |
Specify the array representing the flow map output to be used for FTLE calculation.
|
inline |
Specify the maximum number of steps each particle is allowed to traverse.
This can limit the total length of displacements used when computing the FTLE.
|
inline |
Specify the name of the output field in the data set returned.
By default, the field will be named FTLE
.
|
inline |
Specifies the step size used for the numerical integrator.
The numerical integrators operate by advancing each particle by a finite amount. This parameter defines the distance to advance each time. Smaller values are more accurate but take longer to integrate. An appropriate step size is usually around the size of each cell.
|
inline |
Specify whether to use an auxiliary grid.
When this flag is off (the default), then the points of the mesh representing the vector field are advected and used for computing the FTLE. However, if the mesh is too coarse, the FTLE will likely be inaccurate. Or if the mesh is unstructured the FTLE may be less efficient to compute. When this flag is on, an auxiliary grid of uniformly spaced points is used for the FTLE computation.
|
inline |
Specify whether to use flow maps instead of advection.
If the start and end points for FTLE calculation are known already, advection is an unnecessary step. This flag allows users to bypass advection, and instead use a precalculated flow map. By default this option is off.
|
inline |
Specify the time interval for the advection.
The FTLE works by advecting all points a finite distance, and this parameter specifies how far to advect.
|
inline |
Specify the dimensions of the auxiliary grid for FTLE calculation.
Seeds for advection will be placed along the points of this auxiliary grid. This option has no effect unless the UseAuxiliaryGrid option is on.
|
inline |
Specify the array representing the flow map output to be used for FTLE calculation.
|
inline |
Specify the maximum number of steps each particle is allowed to traverse.
This can limit the total length of displacements used when computing the FTLE.
|
inline |
Specify the name of the output field in the data set returned.
By default, the field will be named FTLE
.
|
inline |
Specifies the step size used for the numerical integrator.
The numerical integrators operate by advancing each particle by a finite amount. This parameter defines the distance to advance each time. Smaller values are more accurate but take longer to integrate. An appropriate step size is usually around the size of each cell.
|
inline |
Specify whether to use an auxiliary grid.
When this flag is off (the default), then the points of the mesh representing the vector field are advected and used for computing the FTLE. However, if the mesh is too coarse, the FTLE will likely be inaccurate. Or if the mesh is unstructured the FTLE may be less efficient to compute. When this flag is on, an auxiliary grid of uniformly spaced points is used for the FTLE computation.
|
inline |
Specify whether to use flow maps instead of advection.
If the start and end points for FTLE calculation are known already, advection is an unnecessary step. This flag allows users to bypass advection, and instead use a precalculated flow map. By default this option is off.
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |