[Paraview] Algorithmically what is d(vx)/dx in vtkCell.h?
Berk Geveci
berk.geveci at kitware.com
Wed Dec 6 08:32:03 EST 2006
Hi,
The answer depends on whether you are using vtkImageData or
vtkStructuredGrid. For vtkImageData, look at vtkVoxel.cxx (search for
vtkVoxel::Derivatives). For vtkStructuredGrid, look at
vtkHexahedron.cxx.
-berk
On 12/1/06, Aditya Saurabh <saurabh.aditya at gmail.com> wrote:
> Hi!
> There are several numerical methods to calculate dx, dy, dz at a cell. I am
> searching for the exact numerical method implemented in vtkCellDerivatives.
> My dataset is rectilinear with equally spaced x,y,z. That makes the
> hexahedron required to compute derivatives to be cube in my case.
>
> What exactly is d(vx)/dx in vtkCell.h then?
>
> Is it just the difference in value of vx across cell?
> Also,
> I could NOT find Derivatives function implementation in any of
> vtkGenericCell.cxx, vtkCell.cxx, vtkCell3D.cxx.
> My aim here is to check how exactly vorticity is calculated and verify if
> that is what we want to use or write our own implementation, as the current
> visualizations give some artifacts in vorticity isosurfaces which isn't
> technically correct.
>
> Thanks a ton in advance.
> Aditya
>
> Calculating vorticity
> ----------------------
> http://www.cs.utah.edu/classes/cs5630/vtk%204.4.2/vtk-src-unix/Graphics/vtkCellDerivatives.cxx
>
> ...
> vtkDataSet *input = this->GetInput();
> ...
> input->GetCell(cellId, cell);
> ...
> if ( computeVectorDerivs )
> {
> inVectors->GetTuples(cell->PointIds, cellVectors);
>
> vectors = cellVectors->GetPointer(0);
> ...
> cell->Derivatives(0, pcoords, vectors, 3, derivs);
> if ( this->VectorMode == VTK_VECTOR_MODE_COMPUTE_VORTICITY
> )
> {
>
> w[0] = derivs[7] - derivs[5];
> w[1] = derivs[2] - derivs[6];
> w[2] = derivs[3] - derivs[1];
>
> outVectors->SetTuple(cellId, w);
> }
> ....
>
> http://www.cs.utah.edu/classes/cs5630/vtk%204.4.2/vtk-src-unix/Common/vtkGenericCell.cxx
> void vtkGenericCell::Derivatives(int subId, double pcoords[3], double
> *values,
>
> int dim, double *derivs)
> {
> this->Cell->Derivatives(subId, pcoords, values, dim, derivs);
> }
> ....
>
> http://www.cs.utah.edu/classes/cs5630/vtk%204.4.2/vtk-src-unix/Common/vtkCell.h
>
> // Description:
> // Compute derivatives given cell subId and parametric coordinates. The
> // values array is a series of data value(s) at the cell points. There is a
>
> // one-to-one correspondence between cell point and data value(s). Dim is
> // the number of data values per cell point. Derivs are derivatives in the
> // x-y-z coordinate directions for each data value. Thus, if computing
>
> // derivatives for a scalar function in a hexahedron, dim=1, 8 values are
> // supplied, and 3 deriv values are returned (i.e., derivatives in x-y-z
> // directions). On the other hand,
> if computing derivatives of velocity
> // (vx,vy,vz) dim=3, 24 values are supplied ((vx,vy,vz)1, (vx,vy,vz)2,
>
> // ....()8), and 9 deriv values are returned
> // ((d(vx)/dx),(d(vx)/dy),(d(vx)/dz),
> (d(vy)/dx),(d(vy)/dy), (d(vy)/dz),
> // (d(vz)/dx),(d(vz)/dy),(d(vz)/dz)).
> virtual void Derivatives(int subId, double pcoords[3], double *values,
>
> int dim, double *derivs) = 0;
> ....
>
>
>
>
> _______________________________________________
> ParaView mailing list
> ParaView at paraview.org
> http://www.paraview.org/mailman/listinfo/paraview
>
>
>
--
Berk Geveci
Kitware Inc.
28 Corporate Drive
Clifton Park, NY, 12309
More information about the ParaView
mailing list