diff src/Grids/curvilinear_grid.jl @ 1450:647c8b18b84f feature/grids/curvilinear

Implement iterator interface
author Jonatan Werpers <jonatan@werpers.com>
date Thu, 23 Nov 2023 10:16:19 +0100
parents a0b1449dba4e
children 2e08f3444354
line wrap: on
line diff
--- a/src/Grids/curvilinear_grid.jl	Thu Nov 23 10:14:48 2023 +0100
+++ b/src/Grids/curvilinear_grid.jl	Thu Nov 23 10:16:19 2023 +0100
@@ -16,18 +16,15 @@
 Base.firstindex(g::CurvilinearGrid, d) = firstindex(g.logicalgrid, d)
 Base.lastindex(g::CurvilinearGrid, d) = lastindex(g.logicalgrid, d)
 
+# Iteration interface
 
+Base.iterate(g::CurvilinearGrid) = iterate(g.physicalcoordinates)
+Base.iterate(g::CurvilinearGrid, state) = iterate(g.physicalcoordinates, state)
 
-# # Iteration interface
-# Base.iterate(g::TensorGrid) = iterate(Iterators.product(g.grids...)) |> _iterate_combine_coords
-# Base.iterate(g::TensorGrid, state) = iterate(Iterators.product(g.grids...), state) |> _iterate_combine_coords
-# _iterate_combine_coords(::Nothing) = nothing
-# _iterate_combine_coords((next,state)) = combine_coordinates(next...), state
-
-# Base.IteratorSize(::Type{<:TensorGrid{<:Any, D}}) where D = Base.HasShape{D}()
-# Base.eltype(::Type{<:TensorGrid{T}}) where T = T
-# Base.length(g::TensorGrid) = sum(length, g.grids)
-# Base.size(g::TensorGrid) = LazyTensors.concatenate_tuples(size.(g.grids)...)
+Base.IteratorSize(::Type{<:CurvilinearGrid{<:Any, D}}) where D = Base.HasShape{D}()
+Base.length(g::CurvilinearGrid) = length(g.logicalgrid)
+Base.size(g::CurvilinearGrid) = size(g.logicalgrid)
+Base.size(g::CurvilinearGrid, d) = size(g.logicalgrid, d)
 
 
 # refine(g::TensorGrid, r::Int) = mapreduce(g->refine(g,r), TensorGrid, g.grids)