You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
108 lines
4.3 KiB
108 lines
4.3 KiB
/*=========================================================================
|
|
|
|
Program: Visualization Toolkit
|
|
Module: $RCSfile: vtkCellDerivatives.h,v $
|
|
|
|
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.
|
|
|
|
=========================================================================*/
|
|
// .NAME vtkCellDerivatives - compute derivatives of scalars and vectors
|
|
// .SECTION Description
|
|
// vtkCellDerivatives is a filter that computes derivatives of scalars
|
|
// and vectors at the center of cells. You can choose to generate
|
|
// different output including the scalar gradient (a vector), computed
|
|
// tensor vorticity (a vector), gradient of input vectors (a tensor),
|
|
// and strain matrix of the input vectors (a tensor); or you may
|
|
// choose to pass data through to the output.
|
|
//
|
|
// Note that it is assumed that on input scalars and vector point data
|
|
// is available, which are then used to generate cell vectors and tensors.
|
|
// (The interpolation functions of the cells are used to compute the
|
|
// derivatives which is why point data is required.)
|
|
|
|
// .SECTION Caveats
|
|
// The computed derivatives are cell attribute data; you can convert them to
|
|
// point attribute data by using the vtkCellDataToPointData filter.
|
|
// Note that, due to the interpolation function used (obtained using
|
|
// 1/r**2 normalized sum), the derivatives calculated for polygons
|
|
// with more than 4 vertices are inaccurate in most cases.
|
|
//
|
|
// The point data is passed through the filter to the output.
|
|
|
|
// .SECTION See Also
|
|
// vtkVectorNorm
|
|
|
|
#ifndef __vtkCellDerivatives_h
|
|
#define __vtkCellDerivatives_h
|
|
|
|
#include "vtkDataSetAlgorithm.h"
|
|
|
|
#define VTK_VECTOR_MODE_PASS_VECTORS 0
|
|
#define VTK_VECTOR_MODE_COMPUTE_GRADIENT 1
|
|
#define VTK_VECTOR_MODE_COMPUTE_VORTICITY 2
|
|
|
|
#define VTK_TENSOR_MODE_PASS_TENSORS 0
|
|
#define VTK_TENSOR_MODE_COMPUTE_GRADIENT 1
|
|
#define VTK_TENSOR_MODE_COMPUTE_STRAIN 2
|
|
|
|
class VTK_GRAPHICS_EXPORT vtkCellDerivatives : public vtkDataSetAlgorithm
|
|
{
|
|
public:
|
|
vtkTypeRevisionMacro(vtkCellDerivatives,vtkDataSetAlgorithm);
|
|
void PrintSelf(ostream& os, vtkIndent indent);
|
|
|
|
// Description:
|
|
// Construct to compute the gradient of the scalars and vectors.
|
|
static vtkCellDerivatives *New();
|
|
|
|
// Description:
|
|
// Control how the filter works to generate vector cell data. You
|
|
// can choose to pass the input cell vectors, compute the gradient
|
|
// of the input scalars, or extract the vorticity of the computed
|
|
// vector gradient tensor. By default (VectorModeToComputeGradient),
|
|
// the filter will take the gradient of the input scalar data.
|
|
vtkSetMacro(VectorMode,int);
|
|
vtkGetMacro(VectorMode,int);
|
|
void SetVectorModeToPassVectors()
|
|
{this->SetVectorMode(VTK_VECTOR_MODE_PASS_VECTORS);};
|
|
void SetVectorModeToComputeGradient()
|
|
{this->SetVectorMode(VTK_VECTOR_MODE_COMPUTE_GRADIENT);};
|
|
void SetVectorModeToComputeVorticity()
|
|
{this->SetVectorMode(VTK_VECTOR_MODE_COMPUTE_VORTICITY);};
|
|
const char *GetVectorModeAsString();
|
|
|
|
// Description:
|
|
// Control how the filter works to generate tensor cell data. You can
|
|
// choose to pass the input cell tensors, compute the gradient of
|
|
// the input vectors, or compute the strain tensor of the vector gradient
|
|
// tensor. By default (TensorModeToComputeGradient), the filter will
|
|
// take the gradient of the vector data to construct a tensor.
|
|
vtkSetMacro(TensorMode,int);
|
|
vtkGetMacro(TensorMode,int);
|
|
void SetTensorModeToPassTensors()
|
|
{this->SetTensorMode(VTK_TENSOR_MODE_PASS_TENSORS);};
|
|
void SetTensorModeToComputeGradient()
|
|
{this->SetTensorMode(VTK_TENSOR_MODE_COMPUTE_GRADIENT);};
|
|
void SetTensorModeToComputeStrain()
|
|
{this->SetTensorMode(VTK_TENSOR_MODE_COMPUTE_STRAIN);};
|
|
const char *GetTensorModeAsString();
|
|
|
|
protected:
|
|
vtkCellDerivatives();
|
|
~vtkCellDerivatives() {};
|
|
int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *);
|
|
|
|
int VectorMode;
|
|
int TensorMode;
|
|
private:
|
|
vtkCellDerivatives(const vtkCellDerivatives&); // Not implemented.
|
|
void operator=(const vtkCellDerivatives&); // Not implemented.
|
|
};
|
|
|
|
#endif
|
|
|