Concept to define a correct Model.
More...
#include <traits.hpp>
template<typename T, typename ViewType>
T::FloatType d_t,
std::size_t idx,
std::size_t idx2,
double weight,
const T::SelfParticle& arr,
const T::SelfParticle& buffer_arr,
std::size_t position,
const T::Config& config) {
{
T::n_var
} -> std::convertible_to<std::size_t>;
typename T::FloatType;
typename T::SelfParticle;
typename T::Self;
typename T::Config;
(std::is_same_v<typename T::Config, NonConfigType> &&
{
T::mass(idx, arr)
} -> std::same_as<double>;
{
T::update(random_pool, d_t, idx, arr, c)
} -> std::convertible_to<MC::Status>;
{ T::get_bounds() } -> std::same_as<MC::ContribIndexBounds>;
{
T::division(random_pool, idx, idx2, arr, buffer_arr)
} -> std::same_as<void>;
}
Kokkos::Random_XorShift1024_Pool< Kokkos::DefaultExecutionSpace > pool_type
Definition prng.hpp:33
Concept to define a correct Model.
Definition traits.hpp:68
decltype(Kokkos::Experimental::create_scatter_view(kernelContribution())) ContributionView
Definition alias.hpp:64
Kokkos::Subview< KernelConcentrationType, int, decltype(Kokkos::ALL)> LocalConcentration
Definition alias.hpp:72
Concept to define a correct Model.
Minimum model definition should validate this contract, the behaviour behind each function can vary but the order and signature should be the same