Files
openfoam/src/OpenFOAM/global/clockTime/clockTime.H
Mark Olesen e3367dbdc1 ENH: inline and extend clockValue, clockTime
- mostly wraps std::chrono so can inline much of it, which is potentially
  helpful when used for inner timings.

- add elapsedTime() method for direct cast to double and for
  naming similarity with wall-clock method.

Potential breaking change (minor):

- clockValue construct with a bool parameter is now simply tagged
  dispatch (value is ignored) and always queries the current clock
  value. This avoids needless branching.
  Since this constructor form has primarily been used internally (eg,
  clockTime), breakages in user code are not expected.
2020-05-29 15:48:21 +02:00

111 lines
3.3 KiB
C++

/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | www.openfoam.com
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2011 OpenFOAM Foundation
Copyright (C) 2018-2020 OpenCFD Ltd.
-------------------------------------------------------------------------------
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 3 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, see <http://www.gnu.org/licenses/>.
Class
Foam::clockTime
Description
Starts timing and returns elapsed time from start.
Uses std::chrono::high_resolution_clock for better resolution
(2uSec instead of ~20mSec) than cpuTime.
Note
It has twice the storage requirement of a simple clockValue since
it tracks both total and incremental elapsed times.
Additionally, it always invokes a clock query on construction
which may make it less desirable for arrays of values (for example).
See Also
Foam::clockValue
SourceFiles
clockTimeI.H
\*---------------------------------------------------------------------------*/
#ifndef clockTime_H
#define clockTime_H
#include "clockValue.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
namespace Foam
{
/*---------------------------------------------------------------------------*\
Class clockTime Declaration
\*---------------------------------------------------------------------------*/
class clockTime
{
// Private Data
//- Time point at start, or after resetTime
clockValue start_;
//- Time point when elapsedTime or timeIncrement was called
mutable clockValue last_;
public:
// Constructors
//- Construct with the current clock value for the start point
inline clockTime();
//- Implicit construct from the clock value as the start point
inline clockTime(const clockValue& clockval);
// Member Functions
//- Reset to use the current clock value for the start point
inline void resetTime();
//- The time [seconds] since the start point
inline double elapsedTime() const;
//- The time [seconds] since the last call to timeIncrement()
inline double timeIncrement() const;
};
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
} // End namespace Foam
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
#include "clockTimeI.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
#endif
// ************************************************************************* //