Mercurial > repos > public > sbplib_julia
comparison src/Grids/tensor_grid.jl @ 1954:b0915f43b122 feature/sbp_operators/laplace_curvilinear
Merge feature/grids/geometry_functions
author | Jonatan Werpers <jonatan@werpers.com> |
---|---|
date | Sat, 08 Feb 2025 09:38:58 +0100 |
parents | b1eb33e62d1e |
children |
comparison
equal
deleted
inserted
replaced
1953:835b1dcee38e | 1954:b0915f43b122 |
---|---|
45 Base.IteratorSize(::Type{<:TensorGrid{<:Any, D}}) where D = Base.HasShape{D}() | 45 Base.IteratorSize(::Type{<:TensorGrid{<:Any, D}}) where D = Base.HasShape{D}() |
46 Base.length(g::TensorGrid) = prod(length, g.grids) | 46 Base.length(g::TensorGrid) = prod(length, g.grids) |
47 Base.size(g::TensorGrid) = LazyTensors.concatenate_tuples(size.(g.grids)...) | 47 Base.size(g::TensorGrid) = LazyTensors.concatenate_tuples(size.(g.grids)...) |
48 Base.size(g::TensorGrid, d) = size(g)[d] | 48 Base.size(g::TensorGrid, d) = size(g)[d] |
49 | 49 |
50 function spacing(g::TensorGrid) | |
51 relevant_grids = filter(g->!isa(g,ZeroDimGrid),g.grids) | |
52 return spacing.(relevant_grids) | |
53 end | |
50 | 54 |
51 function min_spacing(g::TensorGrid) | 55 function min_spacing(g::TensorGrid) |
52 relevant_grids = filter(g->!isa(g,ZeroDimGrid),g.grids) | 56 relevant_grids = filter(g->!isa(g,ZeroDimGrid),g.grids) |
53 d = min_spacing.(relevant_grids) | 57 d = min_spacing.(relevant_grids) |
54 return minimum(d) | 58 return minimum(d) |
88 local_boundary_grid = boundary_grid(g.grids[grid_id(id)], boundary_id(id)) | 92 local_boundary_grid = boundary_grid(g.grids[grid_id(id)], boundary_id(id)) |
89 new_grids = Base.setindex(g.grids, local_boundary_grid, grid_id(id)) | 93 new_grids = Base.setindex(g.grids, local_boundary_grid, grid_id(id)) |
90 return TensorGrid(new_grids...) | 94 return TensorGrid(new_grids...) |
91 end | 95 end |
92 | 96 |
97 | |
98 function boundary_indices(g::TensorGrid{<:Any, 1}, id::TensorGridBoundary) | |
99 return boundary_indices(g.grids[grid_id(id)], boundary_id(id)) | |
100 end | |
93 function boundary_indices(g::TensorGrid, id::TensorGridBoundary) | 101 function boundary_indices(g::TensorGrid, id::TensorGridBoundary) |
94 per_grid_ind = map(g.grids) do g | 102 local_b_ind = boundary_indices(g.grids[grid_id(id)], boundary_id(id)) |
95 ntuple(i->:, ndims(g)) | |
96 end | |
97 | 103 |
98 local_b_ind = boundary_indices(g.grids[grid_id(id)], boundary_id(id)) | 104 b_ind = Base.setindex(map(eachindex, g.grids), local_b_ind, grid_id(id)) |
99 b_ind = Base.setindex(per_grid_ind, local_b_ind, grid_id(id)) | |
100 | 105 |
101 return LazyTensors.concatenate_tuples(b_ind...) | 106 return view(eachindex(g), b_ind...) |
102 end | 107 end |
103 | 108 |
104 function combined_coordinate_vector_type(coordinate_types...) | 109 function combined_coordinate_vector_type(coordinate_types...) |
105 combined_coord_length = mapreduce(_ncomponents, +, coordinate_types) | 110 combined_coord_length = mapreduce(_ncomponents, +, coordinate_types) |
106 combined_coord_type = mapreduce(eltype, promote_type, coordinate_types) | 111 combined_coord_type = mapreduce(eltype, promote_type, coordinate_types) |