OGS
TimeIncrement.h
Go to the documentation of this file.
1
// SPDX-FileCopyrightText: Copyright (c) OpenGeoSys Community (opengeosys.org)
2
// SPDX-License-Identifier: BSD-3-Clause
3
4
#pragma once
5
6
#include <algorithm>
7
#include <cmath>
8
#include <compare>
9
#include <iomanip>
10
#include <limits>
11
12
#include "
MathLib/KahanSum.h
"
13
14
namespace
NumLib
15
{
16
struct
TimeIncrement
;
17
}
18
19
template
<>
20
struct
fmt::formatter<
NumLib
::TimeIncrement> : fmt::ostream_formatter
21
{
22
};
23
24
namespace
NumLib
25
{
26
struct
TimeIncrement
27
{
28
constexpr
explicit
TimeIncrement
(
double
const
dt) :
value_
{dt} {}
29
30
constexpr
double
operator()
()
const
{
return
value_
; }
31
32
friend
inline
std::ostream&
operator<<
(std::ostream& os,
33
TimeIncrement
const
& dt)
34
{
35
auto
const
precision = os.precision();
36
return
os << std::setprecision(
37
std::numeric_limits<double>::max_digits10)
38
<< dt.
value_
<< std::setprecision(precision);
39
}
40
41
private
:
42
double
value_
;
43
};
44
45
}
// namespace NumLib
KahanSum.h
NumLib
Definition
ProjectData.h:35
NumLib::TimeIncrement
Definition
TimeIncrement.h:27
NumLib::TimeIncrement::operator<<
friend std::ostream & operator<<(std::ostream &os, TimeIncrement const &dt)
Definition
TimeIncrement.h:32
NumLib::TimeIncrement::operator()
constexpr double operator()() const
Definition
TimeIncrement.h:30
NumLib::TimeIncrement::TimeIncrement
constexpr TimeIncrement(double const dt)
Definition
TimeIncrement.h:28
NumLib::TimeIncrement::value_
double value_
Definition
TimeIncrement.h:42
NumLib
TimeStepping
TimeIncrement.h
Generated by
1.14.0