8#ifndef GRIDFORMAT_GRID_CONCEPTS_HPP_
9#define GRIDFORMAT_GRID_CONCEPTS_HPP_
13#include <gridformat/common/type_traits.hpp>
14#include <gridformat/grid/type_traits.hpp>
15#include <gridformat/grid/_detail.hpp>
16#include <gridformat/grid/traits.hpp>
18namespace GridFormat::Concepts {
29 GridDetail::ExposesPointRange<T> and
30 GridDetail::ExposesCellRange<T>;
40 GridDetail::ExposesExtents<T> and
41 GridDetail::ExposesCellLocation<T> and
42 GridDetail::ExposesPointLocation<T> and
44 static_size<GridDetail::Extents<T>>,
45 static_size<GridDetail::CellLocation<T>>,
46 static_size<GridDetail::PointLocation<T>>
55 GridDetail::ExposesOrigin<T> and
56 GridDetail::ExposesSpacing<T> and
58 static_size<GridDetail::Origin<T>>,
59 static_size<GridDetail::Spacing<T>>
68 GridDetail::ExposesOrdinates<T>;
76 GridDetail::ExposesPointCoordinates<T>;
84 GridDetail::ExposesPointCoordinates<T> and
85 GridDetail::ExposesPointId<T> and
86 GridDetail::ExposesCellType<T> and
87 GridDetail::ExposesCellPoints<T>;
98template<
typename T,
typename Gr
id>
100 = std::invocable<T, GridDetail::PointReference<Grid>>
101 and is_scalar<GridDetail::PointFunctionScalarType<Grid, T>>;
106template<
typename T,
typename Gr
id>
108 = std::invocable<T, GridDetail::CellReference<Grid>>
109 and is_scalar<GridDetail::CellFunctionScalarType<Grid, T>>;