[Paraview-developers] Some documentation on MTime handling?
Cornelis Bockemühl
cornelis.bockemuehl at gmail.com
Tue Mar 20 18:50:19 EDT 2018
Thanks - that gives me already a trace to follow: "mtime != pipeline time"!
And thanks also for the offer to have a look into the code! However I guess that if I really have some pointer problem, like writing unallocated memory or the like, this is not in one single file but some "fatal cooperation" between program parts...
I will have to step by step comment out functionality, see where it goes away and so narrow the potentially "guilty code"...
Regards, Cornelis
Gesendet mit BlueMail
Am 20. März 2018 21:43, um 21:43, Utkarsh Ayachit <utkarsh.ayachit at kitware.com> schrieb:
>Cornelis,
>
>I don't see anything fundamentally wrong about your approach (except
>that
>you're assuming the input to this will never change dramatically enough
>to
>invalidate all the caches, but let's assume that's the case).
>
>If you're getting segfaults due to `GetMTime`, it's actually something
>else
>that's doing on, some bad ptr, access, etc. MTime is different from the
>pipeline time. MTime is just a timestamp on VTK objects to indicate
>when
>they were last modified, for example. If you share your filter.cxx, I
>can
>see if I can spot the issue.
>
>Utkarsh
>
>On Tue, Mar 20, 2018 at 1:19 PM, Cornelis Bockemühl <
>cornelis.bockemuehl at gmail.com> wrote:
>
>> My short question is: I am having some problems to understand time
>> handling in VTK, so I would like to find some documentations that can
>> enlighten me! So far my Google research has only shown me that a)
>there
>> have been different approaches in the past (which I do not need to
>> understand) and b) there are many more options available than I will
>ever
>> need to use...
>>
>> The specific problem that I am dealing with is in a project. In a
>filter
>> that is supposed to run inside ParaView I am programmatically
>generating a
>> time series of unsigned grids and tables, i.e. the filter has several
>> several output ports that all have to change per time step.
>Empirically I
>> found out that I have to put this code into RequestInformation:
>>
>> // tell the caller that we can provide time varying data and
>specify the range
>>
>> double tRange[] = {0., 1.};
>>
>>
>> // generate a vector with the steps - from 0 to NumSteps
>>
>> Steps.resize(NumPeriods + 1);
>>
>> for(int s = 0; s <= NumPeriods; ++s)
>>
>> Steps[s] = (double)s / (double)NumPeriods;
>>
>>
>> for(int n = 0; n < GetNumberOfOutputPorts(); ++n)
>>
>> {
>>
>> vtkInformation* info = outputVector->GetInformationObject(n);
>>
>> info->Set(vtkStreamingDemandDrivenPipeline::TIME_RANGE(),
>tRange, 2);
>>
>> info->Set(vtkStreamingDemandDrivenPipeline::TIME_STEPS(),
>Steps.data(), Steps.size());
>>
>> info->Set(CAN_HANDLE_PIECE_REQUEST(), 1);
>>
>> }
>>
>>
>> Some of the calculations are a bit tedious, so I am caching many data
>in
>> the filter object, but not more than so far required. This means that
>in
>> RequestData a decision has to be taken if more data need to be
>calculated
>> first, or else directly copy from the cached data, like for example
>this:
>>
>> - jump to step 5 of 20 directly -> calculate steps 1 - 2 - 3 - 4 - 5
>> internally, then copy data from step 5 to the output ports
>>
>> - jump back to step 3 -> simply copy the data from step 3 to the
>output
>> ports
>>
>> - jump to step 7 -> calculate steps 6 - 7, then copy etc.
>>
>> During the calculations I am using other filters for some data
>processing,
>> not attached to the pipeline, for some data transformations. For some
>time
>> this worked now "somehow", but now I am suddenly getting crashes in
>one of
>> these "detached filters" - when some "trivial producer" wants to ask
>for
>> MTime - which is completely irrelevant in that context...
>>
>> In other words: I am now a bit confused - and at the same time I am
>afraid
>> that I cannot easily strip down my problem to a size that I can
>easily
>> share!
>>
>> Specifically I am not sure which way to try further:
>>
>> - somehow "tell the filters" that they should not care about time?
>>
>> - reconsider my caching because maybe it interferes with some similar
>> functionality that is already built into ParaView?
>>
>> - somehow "tell" the output unstructured grids and tables which is
>their
>> current MTime? But so far I thought I had understood that this is
>managed
>> by ParaView, not by the data objects...
>>
>> ...but then some of the data objects have a GetMTime function, but no
>way
>> to explicitly set this fabulous MTime: where does it come from?
>>
>> Actually such a call is the location where the program crashes!
>>
>> Regards,
>> Cornelis Bockemühl
>>
>> _______________________________________________
>> Powered by www.kitware.com
>>
>> Visit other Kitware open-source projects at http://www.kitware.com/
>> opensource/opensource.html
>>
>> Search the list archives at: http://markmail.org/search/?q=
>> Paraview-developers
>>
>> Follow this link to subscribe/unsubscribe:
>> https://public.kitware.com/mailman/listinfo/paraview-developers
>>
>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://public.kitware.com/pipermail/paraview-developers/attachments/20180320/12786a7b/attachment-0001.html>
More information about the Paraview-developers
mailing list