HasReconstructor Concept Reference#

DiFfRG: DiFfRG::def::HasReconstructor Concept Reference
DiFfRG
Discretization Framework for functional Renormalization Group flows
DiFfRG::def::HasReconstructor Concept Reference

Concept that any gradient-reconstruction strategy must satisfy. More...

#include <abstract_reconstructor.hh>

Concept definition

template<typename T>
requires {
{
T::dim
} -> std::convertible_to<int>;
{
T::jacobian_stencil_radius
} -> std::convertible_to<int>;
} &&
requires(const dealii::Point<T::dim> &center, const std::array<double, 1> &u_center,
const std::array<dealii::Point<T::dim>, n_faces<T::dim>> &x_n,
const std::array<std::array<double, 1>, n_faces<T::dim>> &u_n) {
{
T::template compute_gradient<1>(center, u_center, x_n, u_n)
} -> std::same_as<GradientType<T::dim, double, 1>>;
} &&
requires(const dealii::Point<T::dim> &center, const std::array<double, 2> &u_center,
const std::array<dealii::Point<T::dim>, n_faces<T::dim>> &x_n,
const std::array<std::array<double, 2>, n_faces<T::dim>> &u_n) {
{
T::template compute_gradient<2>(center, u_center, x_n, u_n)
} -> std::same_as<GradientType<T::dim, double, 2>>;
} &&
requires(const dealii::Point<T::dim> &center, const dealii::Point<T::dim> &x,
const std::array<double, 1> &u_center, const std::array<dealii::Point<T::dim>, n_faces<T::dim>> &x_n,
const std::array<std::array<double, 1>, n_faces<T::dim>> &u_n) {
{
T::template compute_gradient_at_point<1>(center, x, u_center, x_n, u_n)
} -> std::same_as<GradientType<T::dim, double, 1>>;
} &&
requires(const dealii::Point<T::dim> &center, const dealii::Point<T::dim> &x,
const std::array<double, 2> &u_center, const std::array<dealii::Point<T::dim>, n_faces<T::dim>> &x_n,
const std::array<std::array<double, 2>, n_faces<T::dim>> &u_n) {
{
T::template compute_gradient_at_point<2>(center, x, u_center, x_n, u_n)
} -> std::same_as<GradientType<T::dim, double, 2>>;
} &&
requires(const dealii::Point<T::dim> &center, const std::array<autodiff::Real<1, double>, 1> &u_center,
const std::array<dealii::Point<T::dim>, n_faces<T::dim>> &x_n,
const std::array<std::array<autodiff::Real<1, double>, 1>, n_faces<T::dim>> &u_n) {
{
T::template compute_gradient_derivative<1>(center, u_center, x_n, u_n)
} -> std::same_as<GradientType<T::dim, double, 1>>;
} &&
requires(const dealii::Point<T::dim> &center, const std::array<autodiff::Real<1, double>, 2> &u_center,
const std::array<dealii::Point<T::dim>, n_faces<T::dim>> &x_n,
const std::array<std::array<autodiff::Real<1, double>, 2>, n_faces<T::dim>> &u_n) {
{
T::template compute_gradient_derivative<2>(center, u_center, x_n, u_n)
} -> std::same_as<GradientType<T::dim, double, 2>>;
} &&
requires(const dealii::Point<T::dim> &center, const dealii::Point<T::dim> &x,
const std::array<autodiff::Real<1, double>, 1> &u_center,
const std::array<dealii::Point<T::dim>, n_faces<T::dim>> &x_n,
const std::array<std::array<autodiff::Real<1, double>, 1>, n_faces<T::dim>> &u_n) {
{
T::template compute_gradient_at_point_derivative<1>(center, x, u_center, x_n, u_n)
} -> std::same_as<GradientType<T::dim, double, 1>>;
} &&
requires(const dealii::Point<T::dim> &center, const dealii::Point<T::dim> &x,
const std::array<autodiff::Real<1, double>, 2> &u_center,
const std::array<dealii::Point<T::dim>, n_faces<T::dim>> &x_n,
const std::array<std::array<autodiff::Real<1, double>, 2>, n_faces<T::dim>> &u_n) {
{
T::template compute_gradient_at_point_derivative<2>(center, x, u_center, x_n, u_n)
} -> std::same_as<GradientType<T::dim, double, 2>>;
} &&
requires(const std::array<dealii::Point<T::dim>, 4> &x_stencil,
const std::array<std::array<double, 1>, 4> &u_stencil) {
{
T::template compute_third_derivatives_at_face<1>(x_stencil, u_stencil)
} -> std::same_as<ThirdDerivativeType<T::dim, double, 1>>;
} &&
requires(const std::array<dealii::Point<T::dim>, 4> &x_stencil,
const std::array<std::array<double, 2>, 4> &u_stencil) {
{
T::template compute_third_derivatives_at_face<2>(x_stencil, u_stencil)
} -> std::same_as<ThirdDerivativeType<T::dim, double, 2>>;
} &&
requires(const std::array<dealii::Point<T::dim>, 4> &x_stencil,
const std::array<std::array<autodiff::Real<1, double>, 1>, 4> &u_stencil) {
{
T::template compute_third_derivatives_at_face_derivative<1>(x_stencil, u_stencil)
} -> std::same_as<ThirdDerivativeType<T::dim, double, 1>>;
} &&
requires(const std::array<dealii::Point<T::dim>, 4> &x_stencil,
const std::array<std::array<autodiff::Real<1, double>, 2>, 4> &u_stencil) {
{
T::template compute_third_derivatives_at_face_derivative<2>(x_stencil, u_stencil)
} -> std::same_as<ThirdDerivativeType<T::dim, double, 2>>;
}
Concept that any gradient-reconstruction strategy must satisfy.
Definition abstract_reconstructor.hh:22
constexpr std::size_t n_faces
Definition types.hh:11

Detailed Description

Concept that any gradient-reconstruction strategy must satisfy.