ryujin 2.1.1 revision 71cdc42292164f8095c0bd62c4ea75ebcfac58fa
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 "mpi_ensemble.h"
11#include "observer_pointer.h"
12#include "offline_data.h"
14
15#include <deal.II/base/parameter_acceptor.h>
16
17#include <ostream>
18#include <string>
19#include <vector>
20
21namespace ryujin
22{
44 template <typename Description, int dim, typename Number = double>
45 class ErrorEvaluation final : public dealii::ParameterAcceptor
46 {
47 public:
52
55
56 using View = typename HyperbolicSystem::template View<dim, Number>;
57
58 static constexpr auto problem_dimension = View::problem_dimension;
59
60 using StateVector = typename View::StateVector;
61 using InitialPrecomputedVector = typename View::InitialPrecomputedVector;
63
65
69
73 ErrorEvaluation(const MPIEnsemble &mpi_ensemble,
74 const OfflineData<dim, Number> &offline_data,
75 const HyperbolicSystem &hyperbolic_system,
76 const ParabolicSystem &parabolic_system,
77 const InitialPrecomputedVector &initial_precomputed,
78 const std::string &subsection = "/ErrorEvaluation");
79
89 void prepare(const std::string &name);
90
92
96
107 std::vector<Number> compute(const StateVector &state_vector,
108 const StateVector &analytic) const;
109
114 void write_out(const StateVector &state_vector,
115 const StateVector &analytic,
116 Number t) const;
117
123 void print_summary(std::ostream &stream,
124 Number t,
125 dealii::types::global_dof_index n_global_dofs,
126 const std::vector<Number> &norms) const;
127
128 private:
130
134
135 std::vector<std::string> error_quantities_;
136
137 bool error_normalize_;
138
139 std::vector<std::string> error_norms_;
140
142
146
147 const MPIEnsemble &mpi_ensemble_;
148
149 dealii::ObserverPointer<const OfflineData<dim, Number>> offline_data_;
150
152 selected_components_extractor_;
153
154 std::string base_name_;
155
157
161
162 std::string description() const;
163
165 };
166
167} /* namespace ryujin */
Vectors::ScalarHostVector< Number > ScalarHostVector
typename HyperbolicSystem::template View< dim, Number > View
typename View::StateVector StateVector
void print_summary(std::ostream &stream, Number t, dealii::types::global_dof_index n_global_dofs, const std::vector< Number > &norms) const
void write_out(const StateVector &state_vector, const StateVector &analytic, Number t) const
void prepare(const std::string &name)
typename View::InitialPrecomputedVector InitialPrecomputedVector
typename Description::ParabolicSystem ParabolicSystem
typename Description::HyperbolicSystem HyperbolicSystem
std::vector< Number > compute(const StateVector &state_vector, const StateVector &analytic) const
static constexpr auto problem_dimension
dealii::LinearAlgebra::distributed::Vector< Number > ScalarHostVector
Euler::HyperbolicSystem HyperbolicSystem
Definition description.h:34
ryujin::StubParabolicSystem ParabolicSystem
Definition description.h:36