FreeFOAM The Cross-Platform CFD Toolkit
cpuTimeImpl.H
Go to the documentation of this file.
1 /*---------------------------------------------------------------------------*\
2  ========= |
3  \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
4  \\ / O peration |
5  \\ / A nd | Copyright (C) 1991-2010 OpenCFD Ltd.
6  \\/ M anipulation |
7 -------------------------------------------------------------------------------
8 License
9  This file is part of OpenFOAM.
10 
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.
15 
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.
20 
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/>.
23 
24 Class
25  Foam::cpuTimeImpl
26 
27 Description
28  Starts timing CPU usage and return elapsed time from start.
29 
30  This is the platform specific opaque implementation for class cpuTime.
31 
32 SeeAlso
33  clockTime
34 
35 SourceFiles
36  cpuTimeImpl.C
37 
38 \*---------------------------------------------------------------------------*/
39 
40 #ifndef cpuTimeImpl_H
41 #define cpuTimeImpl_H
42 
43 #include <time.h>
44 #include <sys/times.h>
45 
46 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
47 
48 namespace Foam
49 {
50 
51 /*---------------------------------------------------------------------------*\
52  Class cpuTimeImpl Declaration
53 \*---------------------------------------------------------------------------*/
54 
56 {
57  // Private data
58 
59  static long Hz_;
60 
61  struct tms startTime_;
62  mutable struct tms lastTime_;
63  mutable struct tms newTime_;
64 
65  static void getTime(struct tms& t);
66 
67  static double timeDifference
68  (
69  const struct tms& start,
70  const struct tms& end
71  );
72 
73 
74 public:
75 
76  // Constructors
77 
78  //- Construct from components
79  cpuTimeImpl();
80 
81 
82  // Member Functions
83 
84  // Access
85 
86  //- Returns CPU time from start of run
87  double elapsedCpuTime() const;
88 
89  //- Returns CPU time from last call of cpuTimeIncrement()
90  double cpuTimeIncrement() const;
91 };
92 
93 
94 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
95 
96 } // End namespace Foam
97 
98 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
99 
100 #endif
101 
102 // ************************ vim: set sw=4 sts=4 et: ************************ //