FiberVISH 0.2
Fish - The Fiber Bundle API for the Vish Visualization Shell
Classes | Public Types | Public Member Functions | Public Attributes | List of all members
Fiber::GridEvaluator Struct Reference

Helper class for evaluating Fields given in one Grid on another Grid, used by EvalGrid(). More...

#include <GridEvaluator.hpp>

Classes

struct  Context
 

Public Types

enum  FragmentSearchResult { Nope , Possibly , Certainly , YesWithLocationAlreadyFound }
 Status of first-pass point search in multiblock source Grids. More...
 

Public Member Functions

bool find (const RefPtr< MemBase > &DestinationCoords, const Field &SourcePositions, GridEvaluator::Context &theEvaluationContext)
 Given a set of destination coordinates, find the evaluation weights from the given source positions.
 
 GridEvaluator (const RefPtr< MemBase > &DestinationCoords, const Field &SourcePositions, GridEvaluator::Context &theEvaluationContext)
 
template<class PositionsFieldType >
void findForSpecificDestinationPositions (const PositionsFieldType &DestinationPositions, const Field &SourcePositions, GridEvaluator::Context &theEvaluationContext)
 Given a specific type for the positions in the destination coordinates, find the evaluation weights for each point.
 
template<int SourceDims, class ValueType >
bool evalFloatIndices (std::vector< ValueType > &ResultData, const CreativeIterator< FixedArray< double, SourceDims > > &InterpolationWeightsPerDestPoint, const Field &SourceField) const
 The type must match as stored in the SourceField.
 
template<class ValueType >
bool evalType (std::vector< ValueType > &ResultData, const Field &SourceField) const
 Evaluate a source field on a pre-allocated std::vector<> of destination types.
 
template<int DestDims, class ValueType >
RefPtr< MemBaseevalDimensionalDestType (const MultiIndex< DestDims > &DestSize, const Field &SourceField) const
 Allocate a data field for the destination based on the given dimensions and evaluate the given Field on it using evalType().
 
template<class ValueType >
RefPtr< MemBaseevalFromCompatibleData (const RefPtr< MemBase > &DestinationCompatibleData, const Field &SourceField) const
 
RefPtr< MemBaseevalKnownDataTypes (const RefPtr< MemBase > &DestinationCompatibleData, const Field &SourceField) const
 

Public Attributes

RefPtr< MemBaseFragmentIDs
 Fragment ID's per evaluation point.
 
RefPtr< MemBaseSearchStatus
 An integer field of search result enums (FragmentSearchResult)
 
RefPtr< MemBasePointLocation
 Will be of type: FixedArray<double, int CoordinateDims>
 

Detailed Description

Helper class for evaluating Fields given in one Grid on another Grid, used by EvalGrid().

The GridEvaluator class stores information about referencing the points of a Grid, such as the interpolation weights of such points and their fragment ID's after lookup in a fragmented (i.e. multiblock) source Grid. When evaluating multiple fields this information needs to be determined only once and can then be re-used for all Fields.

Member Enumeration Documentation

◆ FragmentSearchResult

Status of first-pass point search in multiblock source Grids.

Will be stored as integer field in the SearchStatus.

Member Function Documentation

◆ evalFloatIndices()

template<int SourceDims, class ValueType >
bool Fiber::GridEvaluator::evalFloatIndices ( std::vector< ValueType > &  ResultData,
const CreativeIterator< FixedArray< double, SourceDims > > &  InterpolationWeightsPerDestPoint,
const Field SourceField 
) const

The type must match as stored in the SourceField.

if (RefPtr<MemArray<3, int> > SearchResult = SearchStatus)

References Fiber::HyperslabParameters::count(), FragmentIDs, Fiber::Field::getData(), and SearchStatus.

Referenced by evalType().

◆ evalType()

template<class ValueType >
bool Fiber::GridEvaluator::evalType ( std::vector< ValueType > &  ResultData,
const Field SourceField 
) const

Evaluate a source field on a pre-allocated std::vector<> of destination types.

Interpolate a field of the given type in 2 or 3 dimensions.

References evalFloatIndices(), and PointLocation.

◆ find()

bool Fiber::GridEvaluator::find ( const RefPtr< MemBase > &  DestinationCoords,
const Field SourcePositions,
GridEvaluator::Context theEvaluationContext 
)

Given a set of destination coordinates, find the evaluation weights from the given source positions.

This call will iterate over a set of known possible types of destination coordinates using the findForSpecificDestinationPositions() function. If a specific such destination coordinate type is not supported, then use findForSpecificDestinationPositions() explicitly.

Todo:
Use an extensible type registry for different coordinate types.

Evaluate data on a 2D destination grid of curvilinear coordinates.

unspecific coordinate type, 3D

unspecific coordinate type, 2D

References findForSpecificDestinationPositions().

◆ findForSpecificDestinationPositions()

void Fiber::GridEvaluator::findForSpecificDestinationPositions ( const PositionsFieldType DestinationPositions,
const Field SourcePositions,
GridEvaluator::Context theEvaluationContext 
)

Given a specific type for the positions in the destination coordinates, find the evaluation weights for each point.

The PositionsFieldType must export an enum Dims and a type value_type that has an enum member SIZE, which gives the number of components used for the interpolation.

References apply(), FragmentIDs, PointLocation, and SearchStatus.

Referenced by find().

Member Data Documentation

◆ FragmentIDs

RefPtr<MemBase> Fiber::GridEvaluator::FragmentIDs

Fragment ID's per evaluation point.

This will be a FragmentIDContainer for each point on a first pass when searching through a multiblock grid with bounding box search. A second pass will be required to reduce this field into an exact match with only exactly one FragmentID per point.

Referenced by evalFloatIndices(), and findForSpecificDestinationPositions().