Skip to content

redistributePar -decompose and -reconstruct issue with collated I/O

Summary

(1) In general, it seems that the redistributePar -decompose does not distribute the sets (with or without collated IO).

(2) redistributePar -reconstruct when used with collated fileHandler does not reconstruct the lagrangian fields.

Steps to reproduce

Use the below commands to set up a case that has lagrangian fields and/or requires sets to be decomposed:

runApplication blockMesh

runApplication topoSet

runParallel -s decompose redistributePar -decompose -fileHandler collated #-ioRanks '(0 2 4)'

mpirun -np 4 $(getApplication) -parallel -fileHandler collated #-ioRanks '(0 2 4)'

runParallel -s reconstruct redistributePar -reconstruct -fileHandler collated #-ioRanks '(0 2 4)'

Example case

(1) Take simplifiedSiwek of lagrangian/coalChemistryFoam tutorial

(2) Use the above commands in Allrun-parallel in place of the original commands ---> You see the crash due to the absence of ignition sets in the decomposed mesh

(3) Comment the "source1" in constant/fvOptions to be able to run the case

(4) Set "the end"stopAt" to "writeNow" to run for 1 time step

(5) Re-execute the modified "Allrun-parallel" script ---> You will see that the lagrangian fields have not been reconstructed.

I have attached the two scripts:

Allrun-parallel

fvOptions

What is the current bug behaviour?

What is the expected correct behavior?

Relevant logs and/or images

Environment information

  • OpenFOAM version : 2212, 2306
  • Operating system :Linux
  • Hardware info :
  • Compiler :Gcc 10.5

Possible fixes

Regarding the issue in reconstructing lagrangian fields, I think "findClouds" function in "parLagrangianDistributor" class searches in wrong paths i.e. old-style uncollated paths (processor0/ processor1/ ... etc) such that "cloudNames" object is empty. Unfortunately I do not know how to change the path to the collated style path i.e. processorsXX/

Regarding the decomposing of the sets issue, I have no idea!

Edited by Ali