ryujin 2.1.1 revision b04fb4aba7bd97ddfa5994a6b4b6e8586eb15db2
Loading...
Searching...
No Matches
error_evaluation.h
Go to the documentation of this file.
1//
2// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
3// Copyright (C) 2026 by the ryujin authors
4//
5
6#pragma once
7
8#include <compile_time_options.h>
9
10#include <ryujin/interface/parabolic_system.h>
11
12#include "mpi_ensemble.h"
13#include "observer_pointer.h"
14#include "offline_data.h"
16
17#include <deal.II/base/parameter_acceptor.h>
18
19#include <ostream>
20#include <string>
21#include <vector>
22
23namespace ryujin
24{
46 template <typename HyperbolicDescription, int dim, typename Number = double>
47 class ErrorEvaluation final : public dealii::ParameterAcceptor
48 {
49 public:
54
56
57 using View = typename HyperbolicSystem::template View<dim, Number>;
58
59 static constexpr auto problem_dimension = View::problem_dimension;
60
62
66
70 ErrorEvaluation(const MPIEnsemble &mpi_ensemble,
71 const OfflineData<dim, Number> &offline_data,
72 const HyperbolicSystem &hyperbolic_system,
73 const Interface::ParabolicSystem &parabolic_system,
74 const MultiComponentVector<Number> &initial_precomputed,
75 const std::string &subsection = "/ErrorEvaluation");
76
86 void prepare(const std::string &name);
87
89
93
104 std::vector<Number> compute(const StateVector<Number> &state_vector,
105 const StateVector<Number> &analytic) const;
106
111 void write_out(const StateVector<Number> &state_vector,
112 const StateVector<Number> &analytic,
113 Number t) const;
114
120 void print_summary(std::ostream &stream,
121 Number t,
122 dealii::types::global_dof_index n_global_dofs,
123 const std::vector<Number> &norms) const;
124
125 private:
127
131
132 std::vector<std::string> error_quantities_;
133
134 bool error_normalize_;
135
136 std::vector<std::string> error_norms_;
137
139
143
144 const MPIEnsemble &mpi_ensemble_;
145
146 dealii::ObserverPointer<const OfflineData<dim, Number>> offline_data_;
147
149 selected_components_extractor_;
150
151 std::string base_name_;
152
154
158
159 std::string description() const;
160
162 };
163
164} /* namespace ryujin */
typename HyperbolicDescription::HyperbolicSystem HyperbolicSystem
void print_summary(std::ostream &stream, Number t, dealii::types::global_dof_index n_global_dofs, const std::vector< Number > &norms) const
static constexpr auto problem_dimension
typename HyperbolicSystem::template View< dim, Number > View
std::vector< Number > compute(const StateVector< Number > &state_vector, const StateVector< Number > &analytic) const
void prepare(const std::string &name)
void write_out(const StateVector< Number > &state_vector, const StateVector< Number > &analytic, Number t) const