Pathlines sticking around longer than MaxTrackLength with TemporalParticlesToPathlines

Hello, When using TemporalParticlesToPathlines, some pathlines appear to stick around for far more frames than MaxTrackLength would indicate they should. Max Track Length is set to 25, but I’m seeing tails freeze and then persist for hundreds of frames. These particles are likely stuck (in the simulation) but then their trajectory should be reduced to a point or nearly a point. There seems to be a strange periodic effect also, where a tail and head appear to be connected into a loop when the artifact begins.

How would I remove such problematic trajectories from the figures?

For example, from left to right, here is a pathline with a physically reasonable tail, the particle gets stuck on the wall, and its tail shrinks as expected, the last good frame revealing a short tail, a weird periodicity appears in error in the next frame, then hundreds of frames later this loop of pathline is still there.

Screen Shot 2020-09-10 at 11.52.54 AM Screen Shot 2020-09-10 at 11.53.08 AM Screen Shot 2020-09-10 at 11.49.31 AM Screen Shot 2020-09-10 at 11.49.41 AM Screen Shot 2020-09-10 at 11.50.16 AM

Can you try with the last version of ParaView ?

@mwestphal This was with ParaView-5.8.0-osmesa-MPI-Linux-Python2.7-64bit. Which newest version should I use? A specific nightly build or is there a more stable one that is preferred?

I’ve found a workaround, which is to jump to MaxTrackLength-1 particles, re-render MaxTrackLength frames, then output finally output the relevant frame. It is very slow, so much that I launched multiple python instances in parallel. Given that tracks are removed when they are above a certain length in a given timestep, this removed the artifact. For example:

for frame in range(0, len(timesteps)):
    render_min = max(frame - (temporalParticlesToPathlines1.MaxTrackLength + 1),0)
    # run all the previous frames for making this tail 
    for frame_temp in range(render_min, frame):
        animationScene1.AnimationTime = timesteps[frame_temp]
        Render()
    # finally the current frame 
    animationScene1.AnimationTime = timesteps[frame]
    Render()
    SaveScreenshot(basename + str(frame).zfill(4) + '.jpeg', viewOrLayout=layout1, ImageResolution=res, Quality=100, Progressive=1)

The last release version would be 5.8.1.