StencilStream v3.0.0
SYCL-based Stencil Simulation Framework Targeting FPGAs
Loading...
Searching...
No Matches
stencil::concepts::TransitionFunction Concept Reference

A technical definition of a stencil transition function. More...

#include <Concepts.hpp>

Concept definition

template<typename T>
std::semiregular<typename T::Cell> && std::copyable<typename T::TimeDependentValue> &&
std::same_as<decltype(T::stencil_radius), const uindex_t> && (T::stencil_radius >= 1) &&
std::same_as<decltype(T::n_subiterations), const uindex_t> && (T::n_subiterations >= 1) &&
requires(T const &trans_func,
Stencil<typename T::Cell, T::stencil_radius, typename T::TimeDependentValue> const
&stencil) {
{ trans_func(stencil) } -> std::same_as<typename T::Cell>;
} &&
requires(T const &trans_func, uindex_t i_iteration) {
{
trans_func.get_time_dependent_value(i_iteration)
} -> std::same_as<typename T::TimeDependentValue>;
}
A technical definition of a stencil transition function.
Definition Concepts.hpp:62
Definition AccessorSubscript.hpp:24
BOOST_PP_CAT(BOOST_PP_CAT(uint, STENCIL_INDEX_WIDTH), _t) uindex_t
An unsigned integer of configurable width.
Definition Index.hpp:42

Detailed Description

A technical definition of a stencil transition function.

This concept lists all required type definitions, constants, and methods that a StencilUpdate needs from a transition function. This includes multiple definitions for advanced features. Most users are adviced to extend the stencil::BaseTransitionFunction class. It provides default definitions that disable those features.

The required type definitions are:

The required constants are:

The required methods are: