![]() |
ryujin 2.1.1 revision 15c5f3ea3ef91eaf08db04f6f4c18a1823a6f822
|
#include <source/shallow_water/limiter.h>
Public Types | |
using | state_type = HyperbolicSystem::state_type< dim, Number > |
using | precomputed_type = HyperbolicSystem::precomputed_type< dim, Number > |
using | flux_contribution_type = HyperbolicSystem::flux_contribution_type< dim, Number > |
using | ScalarNumber = typename get_value_type< Number >::type |
Static Public Member Functions | |
Convex limiter | |
static std::tuple< Number, bool > | limit (const HyperbolicSystem &hyperbolic_system, const Bounds &bounds, const state_type &U, const state_type &P, const ScalarNumber newton_tolerance, const unsigned int newton_max_iter, const Number t_min=Number(0.), const Number t_max=Number(1.)) |
Verify invariant domain property | |
static bool | is_in_invariant_domain (const HyperbolicSystem &hyperbolic_system, const Bounds &bounds, const state_type &U) |
Static Public Attributes | |
static constexpr unsigned int | problem_dimension |
static constexpr unsigned int | n_precomputed_values |
Stencil-based computation of bounds | |
Intended usage: Limiter<dim, Number> limiter;
for (unsigned int i = n_internal; i < n_owned; ++i) {
// ...
limiter.reset(i, U_i);
for (unsigned int col_idx = 1; col_idx < row_length; ++col_idx) {
// ...
limiter.accumulate(js, U_i, U_j, pre_i, pre_j, scaled_c_ij,
beta_ij);
}
limiter.apply_relaxation(hd_i, limiter_relaxation_factor_);
limiter.bounds();
}
Definition: limiter.h:26 void accumulate(const unsigned int *js, const state_type &U_i, const state_type &U_j, const flux_contribution_type &prec_i, const flux_contribution_type &prec_j, const dealii::Tensor< 1, dim, Number > &scaled_c_ij, const Number beta_ij) Definition: limiter.h:209 void apply_relaxation(const Number hd_i, const ScalarNumber factor=ScalarNumber(2.)) Definition: limiter.h:257 | |
using | Bounds = std::array< Number, n_bounds > |
static constexpr unsigned int | n_bounds = 3 |
Limiter (const HyperbolicSystem &hyperbolic_system, const MultiComponentVector< ScalarNumber, n_precomputed_values > &precomputed_values) | |
void | reset (const unsigned int i) |
void | accumulate (const unsigned int *js, const state_type &U_i, const state_type &U_j, const flux_contribution_type &prec_i, const flux_contribution_type &prec_j, const dealii::Tensor< 1, dim, Number > &scaled_c_ij, const Number beta_ij) |
void | apply_relaxation (const Number hd_i, const ScalarNumber factor=ScalarNumber(2.)) |
const Bounds & | bounds () const |
using ryujin::ShallowWater::Limiter< dim, Number >::state_type = HyperbolicSystem::state_type<dim, Number> |
using ryujin::ShallowWater::Limiter< dim, Number >::precomputed_type = HyperbolicSystem::precomputed_type<dim, Number> |
using ryujin::ShallowWater::Limiter< dim, Number >::flux_contribution_type = HyperbolicSystem::flux_contribution_type<dim, Number> |
using ryujin::ShallowWater::Limiter< dim, Number >::ScalarNumber = typename get_value_type<Number>::type |
using ryujin::ShallowWater::Limiter< dim, Number >::Bounds = std::array<Number, n_bounds> |
|
inline |
Constructor taking a HyperbolicSystem instance as argument
|
inline |
|
inline |
When looping over the sparsity row, add the contribution associated with the neighboring state U_j.
Definition at line 209 of file limiter.h.
References ryujin::add(), ryujin::contract(), ryujin::ShallowWater::HyperbolicSystem::f(), ryujin::ShallowWater::HyperbolicSystem::kinetic_energy(), ryujin::ShallowWater::HyperbolicSystem::star_state(), and ryujin::ShallowWater::HyperbolicSystem::water_depth().
|
inline |
|
inline |
|
static |
Given a state \(\mathbf U\) and an update \(\mathbf P\) this function computes and returns the maximal coefficient \(t\), obeying \(t_{\text{min}} < t < t_{\text{max}}\), such that the selected local minimum principles are obeyed.
Definition at line 16 of file limiter.template.h.
References ryujin::ShallowWater::HyperbolicSystem::filter_dry_water_depth(), ryujin::min, ryujin::ShallowWater::HyperbolicSystem::momentum(), ryujin::positive_part(), ryujin::quadratic_newton_step(), and ryujin::ShallowWater::HyperbolicSystem::water_depth().
|
inlinestatic |
|
staticconstexpr |
|
staticconstexpr |
|
staticconstexpr |