diff --git a/applications/utilities/postProcessing/postProcess/postProcess.C b/applications/utilities/postProcessing/postProcess/postProcess.C index 4806d0a2fe..4795f05418 100644 --- a/applications/utilities/postProcessing/postProcess/postProcess.C +++ b/applications/utilities/postProcessing/postProcess/postProcess.C @@ -43,6 +43,7 @@ Description #include "pointFields.H" #include "uniformDimensionedFields.H" #include "fileFieldSelection.H" +#include "mapPolyMesh.H" using namespace Foam; @@ -201,18 +202,31 @@ int main(int argc, char *argv[]) Info<< "Time = " << runTime.timeName() << endl; - if (mesh.readUpdate() != polyMesh::UNCHANGED) + switch (mesh.readUpdate()) { - // Update functionObjectList if mesh changes - // Note clearing the dictionary to avoid merge warning - functionsDict.clear(); - functionsPtr = functionObjectList::New - ( - args, - runTime, - functionsDict, - fieldFilters - ); + case polyMesh::POINTS_MOVED: + { + functionsPtr->movePoints(mesh); + break; + } + case polyMesh::TOPO_CHANGE: + case polyMesh::TOPO_PATCH_CHANGE: + { + mapPolyMesh mpm(mesh); + functionsPtr->updateMesh(mpm); + break; + } + case polyMesh::UNCHANGED: + { + // No additional work + break; + } + default: + { + FatalErrorIn(args.executable()) + << "Unhandled enumeration" + << abort(FatalError); + } } fields.resetFieldFilters(fieldFilters);