diff options
Diffstat (limited to 'examples/poiseulle_3d/poiseulle_3d.cpp')
| -rw-r--r-- | examples/poiseulle_3d/poiseulle_3d.cpp | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/examples/poiseulle_3d/poiseulle_3d.cpp b/examples/poiseulle_3d/poiseulle_3d.cpp index 9220a1f..e6d0a61 100644 --- a/examples/poiseulle_3d/poiseulle_3d.cpp +++ b/examples/poiseulle_3d/poiseulle_3d.cpp @@ -50,6 +50,56 @@ public: return inner_.internal_data(); } }; + +template<typename Desc, typename CellT, typename Encode> +class data<schema::Ref<kel::lbm::sch::CellField<Desc, CellT>>, encode::Sycl<Encode>> final { +public: + using Schema = schema::Ref<kel::lbm::sch::CellField<Desc,CellT>>; + using MetaSchema = typename meta_schema<Schema>::MetaSchema; +private: + data<schema::Array<CellT,Desc::D>, Encode>* inner_ref_; + data<schema::UInt64, Encode> size_; +public: + data() = delete; + data(data<MetaSchema,Encode>& inner_meta__, acpp::sycl::queue& q): + inner_{inner_meta__,q} + {} + + const data<MetaSchema, Encode> meta() const { + return inner_.dims(); + } + + template<uint64_t i> + data<schema::UInt64,Encode> get_dim_size() const { + static_assert(i < Desc::D, "Not enough dimensions"); + return inner_.template get_dim_size<i>(); + } + + const data<CellT>& operator()(const data<schema::FixedArray<schema::UInt64, Desc::D>, Encode>& index)const{ + return inner_.at(index); + } + + data<CellT>& operator()(const data<schema::FixedArray<schema::UInt64, Desc::D>, Encode>& index){ + return inner_.at(index); + } + + const data<CellT>& at(const data<schema::FixedArray<schema::UInt64, Desc::D>, Encode>& index)const{ + return inner_.at(index); + } + + data<CellT>& at(const data<schema::FixedArray<schema::UInt64, Desc::D>, Encode>& index){ + return inner_.at(index); + } + + data<schema::UInt64,Encode> internal_size() const { + return inner_.internal_size(); + } + + data<CellT,Encode>* internal_data() { + return inner_.internal_data(); + } +}; + } namespace kel { |
