From a2f626ade671f69eb1e43cc600bc55cd6ae2841b Mon Sep 17 00:00:00 2001 From: Henry Date: Thu, 18 Dec 2014 17:13:41 +0000 Subject: [PATCH] execFlowFunctionObjects: Reconstruct functionObjects if the mesh changes Resolves bug-report http://www.openfoam.org/mantisbt/view.php?id=1452 --- .../execFlowFunctionObjects.C | 60 ++++++++++++------- 1 file changed, 40 insertions(+), 20 deletions(-) diff --git a/applications/utilities/postProcessing/miscellaneous/execFlowFunctionObjects/execFlowFunctionObjects.C b/applications/utilities/postProcessing/miscellaneous/execFlowFunctionObjects/execFlowFunctionObjects.C index d20f94d851..246a36fcc6 100644 --- a/applications/utilities/postProcessing/miscellaneous/execFlowFunctionObjects/execFlowFunctionObjects.C +++ b/applications/utilities/postProcessing/miscellaneous/execFlowFunctionObjects/execFlowFunctionObjects.C @@ -461,27 +461,14 @@ void calc } -int main(int argc, char *argv[]) +autoPtr readFunctionObjects +( + const argList& args, + const Time& runTime, + dictionary& folDict +) { - Foam::timeSelector::addOptions(); - #include "addRegionOption.H" - Foam::argList::addBoolOption - ( - "noFlow", - "suppress creating flow models" - ); - #include "addDictOption.H" - - #include "setRootCase.H" - #include "createTime.H" - Foam::instantList timeDirs = Foam::timeSelector::select0(runTime, args); - #include "createNamedMesh.H" - - // Construct functionObjectList - autoPtr folPtr; - // Externally stored dictionary for if fol constructed not from runTime - dictionary folDict; if (args.optionFound("dict")) { @@ -502,6 +489,35 @@ int main(int argc, char *argv[]) } folPtr->start(); + return folPtr; +} + + +int main(int argc, char *argv[]) +{ + Foam::timeSelector::addOptions(); + #include "addRegionOption.H" + Foam::argList::addBoolOption + ( + "noFlow", + "suppress creating flow models" + ); + #include "addDictOption.H" + + #include "setRootCase.H" + #include "createTime.H" + Foam::instantList timeDirs = Foam::timeSelector::select0(runTime, args); + #include "createNamedMesh.H" + + // Externally stored dictionary for functionObjectList + // if not constructed from runTime + dictionary folDict; + + // Construct functionObjectList + autoPtr folPtr + ( + readFunctionObjects(args, runTime, folDict) + ); forAll(timeDirs, timeI) { @@ -509,7 +525,11 @@ int main(int argc, char *argv[]) Info<< "Time = " << runTime.timeName() << endl; - mesh.readUpdate(); + if (mesh.readUpdate() != polyMesh::UNCHANGED) + { + // Update functionObjectList if mesh changes + folPtr = readFunctionObjects(args, runTime, folDict); + } FatalIOError.throwExceptions();