mirror of
https://develop.openfoam.com/Development/openfoam.git
synced 2025-11-28 03:28:01 +00:00
BUG: parallel foamToEnsight fails depending on lagrangian order (fixes #1873)
- the problem arises when output fields are missing on some processors. When the information is combined, the resulting HashTables can have different insertion orders. This poses an issue when there are hash key collisions and thus different chaining. - Use sorted order.
This commit is contained in:
@ -67,10 +67,10 @@ if (doLagrangian)
|
||||
}
|
||||
}
|
||||
|
||||
forAllConstIters(theseCloudFields, fieldIter)
|
||||
// Field order may differ on individual processors, so sort by name
|
||||
for (const word& fieldName : theseCloudFields.sortedToc())
|
||||
{
|
||||
const word& fieldName = fieldIter.key();
|
||||
const word& fieldType = fieldIter.val();
|
||||
const word& fieldType = theseCloudFields[fieldName];
|
||||
|
||||
IOobject fieldObject
|
||||
(
|
||||
@ -88,9 +88,13 @@ if (doLagrangian)
|
||||
// but that combination does not work.
|
||||
// So check the header and sync globally
|
||||
|
||||
const bool parRun = Pstream::parRun();
|
||||
Pstream::parRun() = false;
|
||||
|
||||
fieldExists =
|
||||
fieldObject.typeHeaderOk<IOField<scalar>>(false);
|
||||
|
||||
Pstream::parRun() = parRun;
|
||||
reduce(fieldExists, orOp<bool>());
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user