diff --git a/applications/utilities/postProcessing/wall/yPlus/yPlus.C b/applications/utilities/postProcessing/wall/yPlus/yPlus.C index 775e79bc6efcb3030ac41eb5e9b6b94359b1ae24..5adf65869f8503dc2192f1549e2aec7b42472bd0 100644 --- a/applications/utilities/postProcessing/wall/yPlus/yPlus.C +++ b/applications/utilities/postProcessing/wall/yPlus/yPlus.C @@ -191,7 +191,7 @@ int main(int argc, char *argv[]) #include "setRootCase.H" #include "createTime.H" - instantList timeDirs = timeSelector::select0(runTime, args); + instantList timeDirs = timeSelector::select(runTime, args, "yPlus"); #include "createNamedMesh.H" const bool compressible = args.optionFound("compressible"); diff --git a/src/OpenFOAM/db/Time/timeSelector.C b/src/OpenFOAM/db/Time/timeSelector.C index 61f3d9a6434d4c17de2118d514f557032fb03d9d..5b66e7a2640d2de13abbc952bed5f69edc04cddc 100644 --- a/src/OpenFOAM/db/Time/timeSelector.C +++ b/src/OpenFOAM/db/Time/timeSelector.C @@ -97,7 +97,7 @@ Foam::List<bool> Foam::timeSelector::selected(const instantList& Times) const } -Foam::List<Foam::instant> Foam::timeSelector::select(const instantList& Times) +Foam::instantList Foam::timeSelector::select(const instantList& Times) const { return subset(selected(Times), Times); @@ -143,6 +143,11 @@ void Foam::timeSelector::addOptions "latestTime", "select the latest time" ); + argList::addBoolOption + ( + "newTimes", + "select the new times" + ); argList::addOption ( "time", @@ -152,7 +157,7 @@ void Foam::timeSelector::addOptions } -Foam::List<Foam::instant> Foam::timeSelector::select +Foam::instantList Foam::timeSelector::select ( const instantList& timeDirs, const argList& args, @@ -244,17 +249,20 @@ Foam::List<Foam::instant> Foam::timeSelector::select } -Foam::List<Foam::instant> Foam::timeSelector::select0 +Foam::instantList Foam::timeSelector::select0 ( Time& runTime, const argList& args ) { - instantList timeDirs = timeSelector::select + instantList timeDirs ( - runTime.times(), - args, - runTime.constant() + timeSelector::select + ( + runTime.times(), + args, + runTime.constant() + ) ); if (timeDirs.empty()) @@ -272,7 +280,7 @@ Foam::List<Foam::instant> Foam::timeSelector::select0 } -Foam::List<Foam::instant> Foam::timeSelector::selectIfPresent +Foam::instantList Foam::timeSelector::selectIfPresent ( Time& runTime, const argList& args @@ -297,4 +305,32 @@ Foam::List<Foam::instant> Foam::timeSelector::selectIfPresent } +Foam::instantList Foam::timeSelector::select +( + Time& runTime, + const argList& args, + const word& fName +) +{ + instantList timeDirs(timeSelector::select0(runTime, args)); + + if (timeDirs.size() && args.optionFound("newTimes")) + { + List<bool> selectTimes(timeDirs.size(), true); + + forAll(timeDirs, timeI) + { + selectTimes[timeI] = + !exists(runTime.path()/timeDirs[timeI].name()/fName); + } + + return subset(selectTimes, timeDirs); + } + else + { + return timeDirs; + } +} + + // ************************************************************************* // diff --git a/src/OpenFOAM/db/Time/timeSelector.H b/src/OpenFOAM/db/Time/timeSelector.H index 590da7a1b7ccfed71e1a8b8fbb3ebb8a73de5d0c..ad8ce4d454dafa2e74a27f9ccbad08b3131a1b6d 100644 --- a/src/OpenFOAM/db/Time/timeSelector.H +++ b/src/OpenFOAM/db/Time/timeSelector.H @@ -159,6 +159,18 @@ public: Time& runTime, const argList& args ); + + //- Return the set of times selected based on the argList options + // including support for \b -newTimes in which times are selected + // if the file <fName> does not exist in the time directory. + // Aslso set the runTime to the first instance or the + // \c constant/ directory if no instances are specified or available + static instantList select + ( + Time& runTime, + const argList& args, + const word& fName + ); };