You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Tools/Win64/VTK/include/vtk-9.0/vtkAMRInterpolatedVelocityF...

95 lines
3.0 KiB
C

/*=========================================================================
Program: Visualization Toolkit
Module: vtkAMRInterpolatedVelocityField.h
Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
All rights reserved.
See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
This software is distributed WITHOUT ANY WARRANTY; without even
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See the above copyright notice for more information.
=========================================================================*/
/**
* @class vtkAMRInterpolatedVelocityField
* @brief A concrete class for obtaining
* the interpolated velocity values at a point in AMR data.
*
*
*
* The main functionality supported here is the point location inside vtkOverlappingAMR data set.
*/
#ifndef vtkAMRInterpolatedVelocityField_h
#define vtkAMRInterpolatedVelocityField_h
#include "vtkFiltersFlowPathsModule.h" // For export macro
#include "vtkAbstractInterpolatedVelocityField.h"
class vtkOverlappingAMR;
class VTKFILTERSFLOWPATHS_EXPORT vtkAMRInterpolatedVelocityField
: public vtkAbstractInterpolatedVelocityField
{
public:
vtkTypeMacro(vtkAMRInterpolatedVelocityField, vtkAbstractInterpolatedVelocityField);
static vtkAMRInterpolatedVelocityField* New();
vtkGetMacro(AmrDataSet, vtkOverlappingAMR*);
void SetAMRData(vtkOverlappingAMR* amr);
bool GetLastDataSetLocation(unsigned int& level, unsigned int& id);
bool SetLastDataSet(int level, int id);
void SetLastCellId(vtkIdType c, int dataindex) override;
/**
* Set the cell id cached by the last evaluation.
*/
void SetLastCellId(vtkIdType c) override { this->Superclass::SetLastCellId(c); }
using Superclass::FunctionValues;
/**
* Evaluate the velocity field f at point p.
* If it succeeds, then both the last data set (this->LastDataSet) and
* the last data set location (this->LastLevel, this->LastId) will be
* set according to where p is found. If it fails, either p is out of
* bound, in which case both the last data set and the last location
* will be invalid or, in a multi-process setting, p is inbound but not
* on the processor. In the last case, the last data set location is
* still valid
*/
int FunctionValues(double* x, double* f) override;
void PrintSelf(ostream& os, vtkIndent indent) override;
// Descriptino:
// Point location routine.
static bool FindGrid(
double q[3], vtkOverlappingAMR* amrds, unsigned int& level, unsigned int& gridId);
protected:
vtkOverlappingAMR* AmrDataSet;
int LastLevel;
int LastId;
vtkAMRInterpolatedVelocityField();
~vtkAMRInterpolatedVelocityField() override;
int FunctionValues(vtkDataSet* ds, double* x, double* f) override
{
return this->Superclass::FunctionValues(ds, x, f);
}
private:
vtkAMRInterpolatedVelocityField(const vtkAMRInterpolatedVelocityField&) = delete;
void operator=(const vtkAMRInterpolatedVelocityField&) = delete;
};
#endif