Initial commit for version 2.0.x patch release
[OpenFOAM-2.0.x.git] / src / OSspecific / POSIX / cpuTime / cpuTime.H
blob6d1322ebbcee80745fada86eb8cc7ddf9837291f
1 /*---------------------------------------------------------------------------*\
2   =========                 |
3   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
4    \\    /   O peration     |
5     \\  /    A nd           | Copyright (C) 2004-2010 OpenCFD Ltd.
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 Class
25     Foam::cpuTime
27 Description
28     Starts timing CPU usage and return elapsed time from start.
30 SeeAlso
31     clockTime
33 SourceFiles
34     cpuTime.C
36 \*---------------------------------------------------------------------------*/
38 #ifndef cpuTime_H
39 #define cpuTime_H
41 #include <time.h>
42 #include <sys/times.h>
44 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
46 namespace Foam
49 /*---------------------------------------------------------------------------*\
50                            Class cpuTime Declaration
51 \*---------------------------------------------------------------------------*/
53 class cpuTime
55     // Private data
57         //- Time structure used
58         typedef struct tms timeType;
60         //- Clock-ticks per second
61         static const long Hz_;
63         //- The start time
64         timeType startTime_;
65         mutable timeType lastTime_;
66         mutable timeType newTime_;
68     // Private Member Functions
70         //- Retrieve the current time values from the system
71         static void getTime(timeType&);
73         //- Difference between two times
74         static double timeDifference(const timeType& beg, const timeType& end);
77 public:
79     // Constructors
81         //- Construct with the current clock time
82         cpuTime();
85     // Member Functions
87         //- Return CPU time (in seconds) from the start
88         double elapsedCpuTime() const;
90         //- Return CPU time (in seconds) since last call to cpuTimeIncrement()
91         double cpuTimeIncrement() const;
95 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
97 } // End namespace Foam
99 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
101 #endif
103 // ************************************************************************* //