ENH: autoLayerDriver: better layering information message
[OpenFOAM-2.0.x.git] / applications / utilities / postProcessing / miscellaneous / foamListTimes / foamListTimes.C
blobed439aec3366789ed84d271ed672620e6af822f0
1 /*---------------------------------------------------------------------------*\
2   =========                 |
3   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
4    \\    /   O peration     |
5     \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
6      \\/     M anipulation  |
7 -------------------------------------------------------------------------------
8 License
9     This file is part of OpenFOAM.
11     OpenFOAM is free software: you can redistribute it and/or modify it
12     under the terms of the GNU General Public License as published by
13     the Free Software Foundation, either version 3 of the License, or
14     (at your option) any later version.
16     OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
17     ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
18     FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
19     for more details.
21     You should have received a copy of the GNU General Public License
22     along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
24 Application
25     foamListTimes
27 Description
28     List times using timeSelector
30 Usage
32     - foamListTimes [OPTION]
34     \param -processor \n
35     List times from processor0/ directory
37 \*---------------------------------------------------------------------------*/
39 #include "argList.H"
40 #include "timeSelector.H"
41 #include "Time.H"
43 using namespace Foam;
45 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
47 int main(int argc, char *argv[])
49     argList::addNote
50     (
51         "list times using timeSelector"
52     );
54     timeSelector::addOptions();  // -constant enabled
55     argList::noBanner();
56     argList::noParallel();
57     argList::addBoolOption
58     (
59         "processor",
60         "list times from processor0/ directory"
61     );
62 #   include "setRootCase.H"
64     label nProcs = 0;
66     // Create the processor databases
67     PtrList<Time> databases(1);
69     if (args.optionFound("processor"))
70     {
71         // determine the processor count directly
72         while (isDir(args.path()/(word("processor") + name(nProcs))))
73         {
74             ++nProcs;
75         }
77         if (!nProcs)
78         {
79             FatalErrorIn(args.executable())
80                 << "No processor* directories found"
81                 << exit(FatalError);
82         }
84         // Create the processor databases
85         databases.setSize(nProcs);
87         forAll(databases, procI)
88         {
89             databases.set
90             (
91                 procI,
92                 new Time
93                 (
94                     Time::controlDictName,
95                     args.rootPath(),
96                     args.caseName()/fileName(word("processor") + name(procI))
97                 )
98             );
99         }
100     }
101     else
102     {
103         databases.set
104         (
105             0,
106             new Time
107             (
108                 Time::controlDictName,
109                 args.rootPath(),
110                 args.caseName()
111             )
112         );
113     }
116     // use the times list from the master processor
117     // and select a subset based on the command-line options
118     instantList timeDirs = timeSelector::select
119     (
120         databases[0].times(),
121         args
122     );
124     forAll(timeDirs, timeI)
125     {
126         Info<< timeDirs[timeI].name() << endl;
127     }
129     return 0;
133 // ************************************************************************* //