ryujin 2.1.1 revision 0348cbb53a3e4b1da2a4c037e81f88f2d21ce219
List of all members
ryujin::Skeleton::Limiter< dim, Number > Class Template Reference

#include <source/skeleton/limiter.h>

Public Types

Typedefs and constexpr constants
using View = HyperbolicSystemView< dim, Number >
 
using ScalarNumber = typename View::ScalarNumber
 
using state_type = typename View::state_type
 
using flux_contribution_type = typename View::flux_contribution_type
 
using PrecomputedVector = typename View::PrecomputedVector
 
using Parameters = LimiterParameters< ScalarNumber >
 

Public Member Functions

Stencil-based computation of bounds

Intended usage:

for (unsigned int i = n_internal; i < n_owned; ++i) {
// ...
limiter.reset(i, U_i, flux_i);
for (unsigned int col_idx = 1; col_idx < row_length; ++col_idx) {
// ...
limiter.accumulate(js, U_j, flux_j, scaled_c_ij, affine_shift);
}
limiter.bounds(hd_i);
}
void accumulate(const unsigned int *, const state_type &, const flux_contribution_type &, const dealii::Tensor< 1, dim, Number > &, const state_type &)
Definition: limiter.h:146
void reset(const unsigned int, const state_type &, const flux_contribution_type &)
Definition: limiter.h:135
Bounds bounds(const Number) const
Definition: limiter.h:158
void reset (const unsigned int, const state_type &, const flux_contribution_type &)
 
void accumulate (const unsigned int *, const state_type &, const flux_contribution_type &, const dealii::Tensor< 1, dim, Number > &, const state_type &)
 
Bounds bounds (const Number) const
 
Convex limiter
std::tuple< Number, bool > limit (const Bounds &, const state_type &, const state_type &, const Number=Number(0.), const Number t_max=Number(1.))
 

Computation and manipulation of bounds

using Bounds = std::array< Number, n_bounds >
 
static constexpr unsigned int n_bounds = 0
 
 Limiter (const HyperbolicSystem &hyperbolic_system, const Parameters &parameters, const PrecomputedVector &precomputed_values)
 
Bounds projection_bounds_from_state (const unsigned int, const state_type &) const
 
Bounds combine_bounds (const Bounds &, const Bounds &) const
 

Detailed Description

template<int dim, typename Number = double>
class ryujin::Skeleton::Limiter< dim, Number >

The convex limiter.

Definition at line 44 of file limiter.h.

Member Typedef Documentation

◆ View

template<int dim, typename Number = double>
using ryujin::Skeleton::Limiter< dim, Number >::View = HyperbolicSystemView<dim, Number>

Definition at line 52 of file limiter.h.

◆ ScalarNumber

template<int dim, typename Number = double>
using ryujin::Skeleton::Limiter< dim, Number >::ScalarNumber = typename View::ScalarNumber

Definition at line 54 of file limiter.h.

◆ state_type

template<int dim, typename Number = double>
using ryujin::Skeleton::Limiter< dim, Number >::state_type = typename View::state_type

Definition at line 56 of file limiter.h.

◆ flux_contribution_type

template<int dim, typename Number = double>
using ryujin::Skeleton::Limiter< dim, Number >::flux_contribution_type = typename View::flux_contribution_type

Definition at line 58 of file limiter.h.

◆ PrecomputedVector

template<int dim, typename Number = double>
using ryujin::Skeleton::Limiter< dim, Number >::PrecomputedVector = typename View::PrecomputedVector

Definition at line 60 of file limiter.h.

◆ Parameters

template<int dim, typename Number = double>
using ryujin::Skeleton::Limiter< dim, Number >::Parameters = LimiterParameters<ScalarNumber>

Definition at line 62 of file limiter.h.

◆ Bounds

template<int dim, typename Number = double>
using ryujin::Skeleton::Limiter< dim, Number >::Bounds = std::array<Number, n_bounds>

Array type used to store accumulated bounds.

Definition at line 77 of file limiter.h.

Constructor & Destructor Documentation

◆ Limiter()

template<int dim, typename Number = double>
ryujin::Skeleton::Limiter< dim, Number >::Limiter ( const HyperbolicSystem hyperbolic_system,
const Parameters parameters,
const PrecomputedVector precomputed_values 
)
inline

Constructor taking a HyperbolicSystem instance as argument

Definition at line 82 of file limiter.h.

Member Function Documentation

◆ projection_bounds_from_state()

template<int dim, typename Number = double>
Bounds ryujin::Skeleton::Limiter< dim, Number >::projection_bounds_from_state ( const unsigned int  ,
const state_type  
) const
inline

Given a state U_i and an index i return "strict" bounds, i.e., a minimal convex set containing the state.

Definition at line 95 of file limiter.h.

◆ combine_bounds()

template<int dim, typename Number = double>
Bounds ryujin::Skeleton::Limiter< dim, Number >::combine_bounds ( const Bounds ,
const Bounds  
) const
inline

Given two bounds bounds_left, bounds_right, this function computes a larger, combined set of bounds that this is a (convex) superset of the two.

Definition at line 106 of file limiter.h.

◆ reset()

template<int dim, typename Number = double>
void ryujin::Skeleton::Limiter< dim, Number >::reset ( const unsigned int  ,
const state_type ,
const flux_contribution_type  
)
inline

Reset temporary storage

Definition at line 135 of file limiter.h.

◆ accumulate()

template<int dim, typename Number = double>
void ryujin::Skeleton::Limiter< dim, Number >::accumulate ( const unsigned int *  ,
const state_type ,
const flux_contribution_type ,
const dealii::Tensor< 1, dim, Number > &  ,
const state_type  
)
inline

When looping over the sparsity row, add the contribution associated with the neighboring state U_j.

Definition at line 146 of file limiter.h.

◆ bounds()

template<int dim, typename Number = double>
Bounds ryujin::Skeleton::Limiter< dim, Number >::bounds ( const  Number) const
inline

Return the computed bounds (with relaxation applied).

Definition at line 158 of file limiter.h.

◆ limit()

template<int dim, typename Number = double>
std::tuple< Number, bool > ryujin::Skeleton::Limiter< dim, Number >::limit ( const Bounds ,
const state_type ,
const state_type ,
const  Number = Number(0.),
const Number  t_max = Number(1.) 
)
inline

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 175 of file limiter.h.

Member Data Documentation

◆ n_bounds

template<int dim, typename Number = double>
constexpr unsigned int ryujin::Skeleton::Limiter< dim, Number >::n_bounds = 0
staticconstexpr

The number of stored entries in the bounds array.

Definition at line 72 of file limiter.h.


The documentation for this class was generated from the following file: