postProcess: Added call to functionObject::end() at end of time-loop

Resolves bug-report http://bugs.openfoam.org/view.php?id=2148
This commit is contained in:
Henry Weller
2016-07-19 11:57:37 +01:00
parent dad1fd51c5
commit 115a291b8a
2 changed files with 20 additions and 6 deletions

View File

@ -59,7 +59,8 @@ void executeFunctionObjects
const Time& runTime, const Time& runTime,
fvMesh& mesh, fvMesh& mesh,
const HashSet<word>& selectedFields, const HashSet<word>& selectedFields,
functionObjectList& functions functionObjectList& functions,
bool lastTime
) )
{ {
Info<< nl << "Reading fields:" << endl; Info<< nl << "Reading fields:" << endl;
@ -115,6 +116,12 @@ void executeFunctionObjects
// Execute the functionObjects in post-processing mode // Execute the functionObjects in post-processing mode
functions.execute(); functions.execute();
// Execute the functionObject 'end()' function for the last time
if (lastTime)
{
functions.end();
}
while (!storedObjects.empty()) while (!storedObjects.empty())
{ {
storedObjects.pop()->checkOut(); storedObjects.pop()->checkOut();
@ -164,9 +171,9 @@ int main(int argc, char *argv[])
functionObjectList::New(args, runTime, functionsDict, selectedFields) functionObjectList::New(args, runTime, functionsDict, selectedFields)
); );
forAll(timeDirs, timeI) forAll(timeDirs, timei)
{ {
runTime.setTime(timeDirs[timeI], timeI); runTime.setTime(timeDirs[timei], timei);
Info<< "Time = " << runTime.timeName() << endl; Info<< "Time = " << runTime.timeName() << endl;
@ -192,7 +199,8 @@ int main(int argc, char *argv[])
runTime, runTime,
mesh, mesh,
selectedFields, selectedFields,
functionsPtr() functionsPtr(),
timei == timeDirs.size()-1
); );
} }
catch (IOerror& err) catch (IOerror& err)

View File

@ -104,9 +104,9 @@ if (argList::postProcess(argc, argv))
functionObjectList::New(args, runTime, functionsDict, selectedFields) functionObjectList::New(args, runTime, functionsDict, selectedFields)
); );
forAll(timeDirs, timeI) forAll(timeDirs, timei)
{ {
runTime.setTime(timeDirs[timeI], timeI); runTime.setTime(timeDirs[timei], timei);
Info<< "Time = " << runTime.timeName() << endl; Info<< "Time = " << runTime.timeName() << endl;
@ -137,6 +137,12 @@ if (argList::postProcess(argc, argv))
#endif #endif
functionsPtr->execute(); functionsPtr->execute();
// Execute the functionObject 'end()' function for the last time
if (timei == timeDirs.size()-1)
{
functionsPtr->end();
}
} }
catch (IOerror& err) catch (IOerror& err)
{ {