2017-01-21 08:37 GMT

View Issue Details Jump to Notes ]
IDProjectCategoryView StatusLast Update
0002428OpenFOAM[All Projects] Bugpublic2017-01-20 10:52
Reporterhannes 
Assigned Tohenry 
PrioritynormalSeveritymajorReproducibilityalways
StatusresolvedResolutionfixed 
Platformx86_64OSUbuntuOS Version16.04
Product Versiondev 
Target VersionFixed in Version4.x 
Summary0002428: sampling using cloudSet hangs in parallel run
DescriptionWhen using a cloudSet in a parallel run, the program hangs in meshSearch.findCell

I have noticed this in a customized function object which uses a lot of cloudSets. But the issue also appears in the postProcess utility.
Steps To Reproduce* Download and unpack attached case "sample_test.tgz"
* Execute Allrun script
* postProcess hangs in parallel
TagsNo tags attached.
Attached Files

-Relationships
+Relationships

-Notes

~0007640

wyldckat (updater)

I've gotten deeper into the debugging. We can reproduce the issue with using only 8 processors instead of 48.

What happens is that when using 8 processors:
 - the 'processor3' ends the search early in 'cloudSet::calcSamples', because 'queryMesh.findCell' returned early;
 - all other processors kept trying to search and got stuck in the first sync in 'polyMeshTetDecomposition::findFaceBasePts', namely with:

    syncTools::swapBoundaryFacePositions(mesh, neighbourCellCentres);

My preliminary assessment is that the method 'polyMesh::tetBasePtIs()' should somehow be called earlier, so that the sync always happens.


Going back to why 'processor3' completed the search early, it was because within 'indexedOctree<Type>::findInside', the line:

    if (isContent(contentIndex))

considered that the 'contentIndex=1' is not 'content'.


And this is where I managed to get to with the time I had.

~0007653

MattijsJ (reporter)

Try and replace the call to

    queryMesh.findCell(sampleCoords_[sampleI]);

with something like

    mesh.findCell(sampleCoords_[sampleI]);

since the octree is already on the polyMesh. The polyMesh::findCell should have provision for calling findFaceBasePts() before doing actual searching.

~0007655

henry (manager)

Resolved in OpenFOAM-dev by commit 77bd21177b50d7f548dc2abeb6845f200d30001f

Resolved in OpenFOAM-4.x by commit 8ff56d46b9c581a4e58752d251b034b4f9fc0028
+Notes

-Issue History
Date Modified Username Field Change
2017-01-11 11:56 hannes New Issue
2017-01-11 11:56 hannes File Added: sample_test.tgz
2017-01-16 00:56 wyldckat Note Added: 0007640
2017-01-19 11:49 MattijsJ Note Added: 0007653
2017-01-20 10:52 henry Assigned To => henry
2017-01-20 10:52 henry Status new => resolved
2017-01-20 10:52 henry Resolution open => fixed
2017-01-20 10:52 henry Fixed in Version => 4.x
2017-01-20 10:52 henry Note Added: 0007655
+Issue History