linesample function object does not work correctly if line crosses processor boundaries
The linesample function object does not include all the data it should when the function object is executed in parallel and the line crosses processor boundaries. Specifically, it seems that a given processor will not be "revisited" so that if a line begins, for example, on processor0, then enters processor1, then returns to processor0, only the portion of the line up to the point where it re-enters processor0 will actually be written to the output .xy file in the postProcessing/linesample folder.
Steps to reproduce
- Decompose any case
- Identify processor boundaries using postProcess -parallel -func processorField and then visualize in paraview.
- Define a linesample function object in controlDict which has more than 1 separate segment within a given processor's mesh region
- Execute the function object (doesn't matter if it is executed during solver run or via -postProcess -parallel).
I have a case of ~100k cells that exhibits this problem, I have attached it. It includes decomposed (4 processors) mesh and fields for a single step (1350). Recomposing the case and executing simpleFoam -postProcess -latestTime creates the line samples as intended. Executing mpirun -np 4 simpleFoam -postProcess -parallel -latestTime demonstrates the bug for the "line1" postProcessing output. sigma0.5_dsCelltoUsCellRatio0.5_ifaceLoc1.5_phi0.577_incidence-8_steadyDone_example.tar.xz
What is the current bug behaviour?
Linesample data saved stops once the line "reenters" a previously-visited processor region.
What is the expected correct behavior?
Complete line is written.
Relevant logs and/or images
OpenFOAM version : v2012 Operating system : ubuntu, also tested on other distributions Hardware info : tested on multiple x86_64 systems Compiler : gcc
I am not an OpenFOAM coding expert, so I don't know how to fix this.