OGS
NumericalStabilization.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 <Eigen/Core>
7#include <variant>
8#include <vector>
9
10#include "BaseLib/Error.h"
12
13namespace NumLib
14{
26struct NoStabilization final
27{
28};
29
45{
46public:
47 IsotropicDiffusionStabilization(double const cutoff_velocity,
48 double const tuning_parameter,
49 std::vector<double>&& element_sizes);
50
51 double computeArtificialDiffusion(std::size_t const element_id,
52 double const velocity_norm) const;
53
54private:
57 double const cutoff_velocity_;
58
60 double const tuning_parameter_ = 0.5;
61
64 std::vector<double> const element_sizes_;
65};
66
152class FullUpwind final
153{
154public:
155 explicit FullUpwind(double const cutoff_velocity)
156 : cutoff_velocity_(cutoff_velocity)
157 {
158 }
159
160 double getCutoffVelocity() const { return cutoff_velocity_; }
161
162private:
165 double const cutoff_velocity_;
166};
167
169{
170public:
172
174 const double t, const double dt, std::vector<GlobalVector*> const& x,
175 std::vector<GlobalVector*> const& x_prev, int const process_id,
176 const MathLib::MatrixSpecifications& matrix_specification,
178};
179
183} // namespace NumLib
MathLib::EigenMatrix GlobalMatrix
MathLib::EigenVector GlobalVector
void calculateFluxCorrectedTransport(const double t, const double dt, std::vector< GlobalVector * > const &x, std::vector< GlobalVector * > const &x_prev, int const process_id, const MathLib::MatrixSpecifications &matrix_specification, GlobalMatrix &M, GlobalMatrix &K, GlobalVector &b)
FullUpwind(double const cutoff_velocity)
double computeArtificialDiffusion(std::size_t const element_id, double const velocity_norm) const
IsotropicDiffusionStabilization(double const cutoff_velocity, double const tuning_parameter, std::vector< double > &&element_sizes)
double const tuning_parameter_
The tuning parameter in the range [0,1].
std::variant< NoStabilization, IsotropicDiffusionStabilization, FullUpwind, FluxCorrectedTransport > NumericalStabilization