My Project
Loading...
Searching...
No Matches
EvaluationFormat.hpp
1// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
2// vi: set et ts=4 sw=4 sts=4:
3/*
4 This file is part of the Open Porous Media project (OPM).
5
6 OPM is free software: you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation, either version 2 of the License, or
9 (at your option) any later version.
10
11 OPM is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
15
16 You should have received a copy of the GNU General Public License
17 along with OPM. If not, see <http://www.gnu.org/licenses/>.
18
19 Consult the COPYING file in the top-level source directory of this
20 module for the precise wording of the license and the list of
21 copyright holders.
22*/
23
24#ifndef OPM_EVALUATION_FORMAT_HPP
25#define OPM_EVALUATION_FORMAT_HPP
26
28
29#include <fmt/format.h>
30#include <fmt/ranges.h>
31
32template<class ValueT, int numDerivs, unsigned staticSize>
33struct fmt::formatter<Opm::DenseAd::Evaluation<ValueT,numDerivs,staticSize>>
34{
35 std::string spec;
36 constexpr auto parse(fmt::format_parse_context& ctx)
37 {
38 auto it = ctx.begin();
39 spec = (it != ctx.end() && *it != '}') ? "{:" : "{";
40 while (it != ctx.end() && *it != '}')
41 spec += *it++;
42 spec += '}';
43 return it;
44 }
45
46 template<class FormatContext>
48 FormatContext& ctx)
49 {
50 std::vector<ValueT> tmp(e.size());
51 for (int i = 0; i < e.size(); ++i)
52 tmp[i] = e.derivative(i);
53 return fmt::format_to(ctx.out(), "v: "+ spec +" / d: [" + spec +"]",
54 e.value(), fmt::join(tmp, ", "));
55 }
56};
57
58#endif // OPM_EVALUATION_FORMAT_HPP
Representation of an evaluation of a function and its derivatives w.r.t.
Represents a function evaluation and its derivatives w.r.t.
Definition Evaluation.hpp:57
constexpr int size() const
number of derivatives
Definition Evaluation.hpp:67
This class implements a small container which holds the transmissibility mulitpliers for all the face...
Definition Exceptions.hpp:30