[Paraview] vtkDoubleArray with >3 components

Bruce Jones bruce.david.jones at gmail.com
Tue Jul 21 13:37:52 EDT 2015


Hi Cory,

Sorry for the delayed response, I've hit another more serious bug which has
been diverting my attention from this.

Thanks for the state file, I haven't got it to work as I don't have numpy
set up, but I have also got this working with 9 component arrays in
paraview using a python script. However, I am now trying to port my python
plugin to c++ which is where I am seeing the error.

In my plugin I want to output a vtkarray for each vtkarray in the input
dataset. The values in the output vtkarrays are interpolated from those in
the input vtkarrays. Rather than working directly on vtkarray objects, I am
allocating c++ arrays for each vtkarray, performing the interpolation, then
creating vtkDoubleArrays and using SetArray to pass a pointer to my
allocated c++ arrays to the output vtkarrays. The code for setting up the
output vtkarrays is roughly as follows

                vtkPointData *pointData = input->GetPointData();
                vtkDataArray *dArray = pointData->GetArray(i);
vtkDoubleArray *vtkDArrayAve = vtkDoubleArray::New();
vtkDArrayAve->SetName(dArray->GetName());
vtkDArrayAve->SetArray(dArraysAve[i],hgrid->GetTotalCells(),0);
vtkDArrayAve->SetNumberOfComponents(numComponents[i]);
vtkDArrayAve->SetNumberOfTuples(hgrid->GetTotalCells());
output->GetPointData()->AddArray(vtkDArrayAve);

dArraysAve is an array of pointers pointing to my c++ arrays
hgrid->GetTotalCells() returns the number of data points for my output

I also have another mode of operation for this plugin, where I perform the
interpolation differently, in that function, if I make the call to
SetNumberOfComponents() some heap corruption occurs and I get a segfault
when I try to subsequently free my c++ arrays. Commenting out the call to
SetNumberOfComponents avoids the segfault, but then I am limited to single
component arrays. This is the more serious bug I mentioned, initially I
figured they were unrelated, but I can't deny the number of components
coincidence.

Cheers,
Bruce

On Thu, 16 Jul 2015 at 14:41 Cory Quammen <cory.quammen at kitware.com> wrote:

> Hi Bruce,
>
> I have attached a ParaView state file with a Programmable Source that
> produces a vtkPolyData with 100 random points and a point data array with 9
> components. It seems to display the various component ranges just fine.
>
> Best,
> Cory
>
> On Thu, Jul 16, 2015 at 11:14 AM, Cory Quammen <cory.quammen at kitware.com>
> wrote:
>
>> Hi Bruce,
>>
>> I haven't seen this, but ParaView may be interpreting this array as a
>> tensor field. Do you have a smallish test data file that you can share that
>> shows the problem?
>>
>> Thanks,
>> Cory
>>
>> On Sat, Jul 11, 2015 at 11:14 AM, Bruce Jones <
>> bruce.david.jones at gmail.com> wrote:
>>
>>> I am creating vtkDoubleArrays based on averaging some input data to a
>>> reduced set of points. The input data includes various vtk arrays which
>>> have 1, 3 and 9 components.
>>>
>>> After averaging, I am writing the data to c++ arrays, and creating a new
>>> vtkDoubleArray using the SetArray() function to pass the c++ arrays. This
>>> works fine for 1 and 3 component arrays, however for the 9 component arrays
>>> paraview shows that every element is set to 0.
>>>
>>> If I hardcode it so that 9 component arrays become 3 component arrays
>>> (reading only the first 3 components from the input array), then I get the
>>> correct data for the first 3 components, though I obviously need the other
>>> 6 components in the end.
>>>
>>> Has anyone encountered this before?
>>>
>>> Cheers,
>>> Bruce
>>>
>>> _______________________________________________
>>> Powered by www.kitware.com
>>>
>>> Visit other Kitware open-source projects at
>>> http://www.kitware.com/opensource/opensource.html
>>>
>>> Please keep messages on-topic and check the ParaView Wiki at:
>>> http://paraview.org/Wiki/ParaView
>>>
>>> Search the list archives at: http://markmail.org/search/?q=ParaView
>>>
>>> Follow this link to subscribe/unsubscribe:
>>> http://public.kitware.com/mailman/listinfo/paraview
>>>
>>>
>>
>>
>> --
>> Cory Quammen
>> R&D Engineer
>> Kitware, Inc.
>>
>
>
>
> --
> Cory Quammen
> R&D Engineer
> Kitware, Inc.
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/paraview/attachments/20150721/134d8029/attachment.html>


More information about the ParaView mailing list