From 1194af6a8af3da3ac3a17d892f61c191965237f8 Mon Sep 17 00:00:00 2001 From: Mark Olesen <Mark.Olesen@Germany> Date: Mon, 5 Oct 2009 09:14:14 +0200 Subject: [PATCH] added foamListTimes utility - can be used to query available time directories - useful, for example, with a shell script --- .../miscellaneous/foamListTimes/Make/files | 3 + .../miscellaneous/foamListTimes/Make/options | 2 + .../foamListTimes/foamListTimes.C | 126 ++++++++++++++++++ 3 files changed, 131 insertions(+) create mode 100644 applications/utilities/postProcessing/miscellaneous/foamListTimes/Make/files create mode 100644 applications/utilities/postProcessing/miscellaneous/foamListTimes/Make/options create mode 100644 applications/utilities/postProcessing/miscellaneous/foamListTimes/foamListTimes.C diff --git a/applications/utilities/postProcessing/miscellaneous/foamListTimes/Make/files b/applications/utilities/postProcessing/miscellaneous/foamListTimes/Make/files new file mode 100644 index 00000000000..fe66ad82248 --- /dev/null +++ b/applications/utilities/postProcessing/miscellaneous/foamListTimes/Make/files @@ -0,0 +1,3 @@ +foamListTimes.C + +EXE = $(FOAM_APPBIN)/foamListTimes diff --git a/applications/utilities/postProcessing/miscellaneous/foamListTimes/Make/options b/applications/utilities/postProcessing/miscellaneous/foamListTimes/Make/options new file mode 100644 index 00000000000..18e6fe47afa --- /dev/null +++ b/applications/utilities/postProcessing/miscellaneous/foamListTimes/Make/options @@ -0,0 +1,2 @@ +/* EXE_INC = */ +/* EXE_LIBS = */ diff --git a/applications/utilities/postProcessing/miscellaneous/foamListTimes/foamListTimes.C b/applications/utilities/postProcessing/miscellaneous/foamListTimes/foamListTimes.C new file mode 100644 index 00000000000..0a10a5744fa --- /dev/null +++ b/applications/utilities/postProcessing/miscellaneous/foamListTimes/foamListTimes.C @@ -0,0 +1,126 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 1991-2009 OpenCFD Ltd. + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by the + Free Software Foundation; either version 2 of the License, or (at your + option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM; if not, write to the Free Software Foundation, + Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +Application + foamListTimes + +Description + List times using timeSelector + +Usage + + - foamListTimes [OPTION] + + @param -processor \n + List times from processor0 directory + +\*---------------------------------------------------------------------------*/ + +#include "argList.H" +#include "timeSelector.H" +#include "Time.H" + +using namespace Foam; + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +int main(int argc, char *argv[]) +{ + timeSelector::addOptions(); // -constant enabled + argList::noBanner(); + argList::noParallel(); + argList::validOptions.insert("processor", ""); + +# include "setRootCase.H" + + label nProcs = 0; + + // Create the processor databases + PtrList<Time> databases(1); + + if (args.optionFound("processor")) + { + // determine the processor count directly + while (isDir(args.path()/(word("processor") + name(nProcs)))) + { + ++nProcs; + } + + if (!nProcs) + { + FatalErrorIn(args.executable()) + << "No processor* directories found" + << exit(FatalError); + } + + // Create the processor databases + databases.setSize(nProcs); + + forAll(databases, procI) + { + databases.set + ( + procI, + new Time + ( + Time::controlDictName, + args.rootPath(), + args.caseName()/fileName(word("processor") + name(procI)) + ) + ); + } + } + else + { + databases.set + ( + 0, + new Time + ( + Time::controlDictName, + args.rootPath(), + args.caseName() + ) + ); + } + + + // use the times list from the master processor + // and select a subset based on the command-line options + instantList timeDirs = timeSelector::select + ( + databases[0].times(), + args + ); + + forAll(timeDirs, timeI) + { + Info<< timeDirs[timeI].name() << endl; + } + + return 0; +} + + +// ************************************************************************* // -- GitLab