VTK-m  2.1
Public Member Functions | Private Member Functions | Private Attributes | List of all members
vtkm::filter::flow::LagrangianStructures Class Reference

Compute the finite time Lyapunov exponent (FTLE) of a vector field. More...

#include <LagrangianStructures.h>

Inheritance diagram for vtkm::filter::flow::LagrangianStructures:
vtkm::filter::Filter

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::Vec3fGetFlowMapOutput ()
 Specify the array representing the flow map output to be used for FTLE calculation. More...
 
- Public Member Functions inherited from vtkm::filter::Filter
 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::FieldSelectionGetFieldsToPass () const
 Specify which fields get passed from input to output. More...
 
vtkm::filter::FieldSelectionGetFieldsToPass ()
 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::Vec3fFlowMapOutput
 
std::string OutputFieldName = "FTLE"
 
vtkm::FloatDefault StepSize = 1.0f
 
vtkm::Id NumberOfSteps = 0
 
bool UseAuxiliaryGrid = false
 
bool UseFlowMapOutput = false
 

Additional Inherited Members

- Protected Member Functions inherited from vtkm::filter::Filter
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::FieldGetFieldFromDataSet (const vtkm::cont::DataSet &input) const
 Retrieve an input field from a vtkm::cont::DataSet object. More...
 
const vtkm::cont::FieldGetFieldFromDataSet (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...
 
- Protected Attributes inherited from vtkm::filter::Filter
vtkm::cont::Invoker Invoke
 

Detailed Description

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.

Member Function Documentation

◆ CanThread()

bool vtkm::filter::flow::LagrangianStructures::CanThread ( ) const
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.

◆ DoExecute()

vtkm::cont::DataSet vtkm::filter::flow::LagrangianStructures::DoExecute ( const vtkm::cont::DataSet inData)
overrideprivatevirtual

Implements vtkm::filter::Filter.

◆ GetAdvectionTime()

vtkm::FloatDefault vtkm::filter::flow::LagrangianStructures::GetAdvectionTime ( )
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.

◆ GetAuxiliaryGridDimensions()

vtkm::Id3 vtkm::filter::flow::LagrangianStructures::GetAuxiliaryGridDimensions ( )
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.

◆ GetFlowMapOutput()

vtkm::cont::ArrayHandle<vtkm::Vec3f> vtkm::filter::flow::LagrangianStructures::GetFlowMapOutput ( )
inline

Specify the array representing the flow map output to be used for FTLE calculation.

◆ GetNumberOfSteps()

vtkm::Id vtkm::filter::flow::LagrangianStructures::GetNumberOfSteps ( )
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.

◆ GetOutputFieldName()

std::string vtkm::filter::flow::LagrangianStructures::GetOutputFieldName ( )
inline

Specify the name of the output field in the data set returned.

By default, the field will be named FTLE.

◆ GetStepSize()

vtkm::FloatDefault vtkm::filter::flow::LagrangianStructures::GetStepSize ( )
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.

◆ GetUseAuxiliaryGrid()

bool vtkm::filter::flow::LagrangianStructures::GetUseAuxiliaryGrid ( )
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.

◆ GetUseFlowMapOutput()

bool vtkm::filter::flow::LagrangianStructures::GetUseFlowMapOutput ( )
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.

◆ SetAdvectionTime()

void vtkm::filter::flow::LagrangianStructures::SetAdvectionTime ( vtkm::FloatDefault  advectionTime)
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.

◆ SetAuxiliaryGridDimensions()

void vtkm::filter::flow::LagrangianStructures::SetAuxiliaryGridDimensions ( vtkm::Id3  auxiliaryDims)
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.

◆ SetFlowMapOutput()

void vtkm::filter::flow::LagrangianStructures::SetFlowMapOutput ( vtkm::cont::ArrayHandle< vtkm::Vec3f > &  flowMap)
inline

Specify the array representing the flow map output to be used for FTLE calculation.

◆ SetNumberOfSteps()

void vtkm::filter::flow::LagrangianStructures::SetNumberOfSteps ( vtkm::Id  n)
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.

◆ SetOutputFieldName()

void vtkm::filter::flow::LagrangianStructures::SetOutputFieldName ( std::string  outputFieldName)
inline

Specify the name of the output field in the data set returned.

By default, the field will be named FTLE.

◆ SetStepSize()

void vtkm::filter::flow::LagrangianStructures::SetStepSize ( vtkm::FloatDefault  s)
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.

◆ SetUseAuxiliaryGrid()

void vtkm::filter::flow::LagrangianStructures::SetUseAuxiliaryGrid ( bool  useAuxiliaryGrid)
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.

◆ SetUseFlowMapOutput()

void vtkm::filter::flow::LagrangianStructures::SetUseFlowMapOutput ( bool  useFlowMapOutput)
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.

Member Data Documentation

◆ AdvectionTime

vtkm::FloatDefault vtkm::filter::flow::LagrangianStructures::AdvectionTime
private

◆ AuxiliaryDims

vtkm::Id3 vtkm::filter::flow::LagrangianStructures::AuxiliaryDims
private

◆ FlowMapOutput

vtkm::cont::ArrayHandle<vtkm::Vec3f> vtkm::filter::flow::LagrangianStructures::FlowMapOutput
private

◆ NumberOfSteps

vtkm::Id vtkm::filter::flow::LagrangianStructures::NumberOfSteps = 0
private

◆ OutputFieldName

std::string vtkm::filter::flow::LagrangianStructures::OutputFieldName = "FTLE"
private

◆ StepSize

vtkm::FloatDefault vtkm::filter::flow::LagrangianStructures::StepSize = 1.0f
private

◆ UseAuxiliaryGrid

bool vtkm::filter::flow::LagrangianStructures::UseAuxiliaryGrid = false
private

◆ UseFlowMapOutput

bool vtkm::filter::flow::LagrangianStructures::UseFlowMapOutput = false
private

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