Mercurial > repos > public > sbplib_julia
annotate src/Grids/mapped_grid.jl @ 1559:43e6acbefdd1 feature/sbp_operators/laplace_curvilinear
Rename testsets and add one for mapped grids
author | Jonatan Werpers <jonatan@werpers.com> |
---|---|
date | Thu, 25 Apr 2024 08:59:45 +0200 |
parents | 69790e9d1652 |
children | 5d32ecb98db8 |
rev | line source |
---|---|
1506
535f32316637
Rename from curvilinear to mapped
Jonatan Werpers <jonatan@werpers.com>
parents:
1505
diff
changeset
|
1 struct MappedGrid{T,D, GT<:Grid{<:Any,D}, CT<:AbstractArray{T,D}, JT<:AbstractArray{<:AbstractArray{<:Any, 2}, D}} <: Grid{T,D} |
1430
9fc3c1af33e5
Add testsets and a few tests
Jonatan Werpers <jonatan@werpers.com>
parents:
1426
diff
changeset
|
2 logicalgrid::GT |
9fc3c1af33e5
Add testsets and a few tests
Jonatan Werpers <jonatan@werpers.com>
parents:
1426
diff
changeset
|
3 physicalcoordinates::CT |
1505
63101a1cd0e6
Remove some comments
Jonatan Werpers <jonatan@werpers.com>
parents:
1504
diff
changeset
|
4 jacobian::JT |
1430
9fc3c1af33e5
Add testsets and a few tests
Jonatan Werpers <jonatan@werpers.com>
parents:
1426
diff
changeset
|
5 end |
9fc3c1af33e5
Add testsets and a few tests
Jonatan Werpers <jonatan@werpers.com>
parents:
1426
diff
changeset
|
6 |
1506
535f32316637
Rename from curvilinear to mapped
Jonatan Werpers <jonatan@werpers.com>
parents:
1505
diff
changeset
|
7 jacobian(g::MappedGrid) = g.jacobian |
535f32316637
Rename from curvilinear to mapped
Jonatan Werpers <jonatan@werpers.com>
parents:
1505
diff
changeset
|
8 logicalgrid(g::MappedGrid) = g.logicalgrid |
1431
6adf31ba6cfd
Add `jacobian` and `logicalgrid`
Jonatan Werpers <jonatan@werpers.com>
parents:
1430
diff
changeset
|
9 |
1430
9fc3c1af33e5
Add testsets and a few tests
Jonatan Werpers <jonatan@werpers.com>
parents:
1426
diff
changeset
|
10 |
9fc3c1af33e5
Add testsets and a few tests
Jonatan Werpers <jonatan@werpers.com>
parents:
1426
diff
changeset
|
11 # Indexing interface |
1506
535f32316637
Rename from curvilinear to mapped
Jonatan Werpers <jonatan@werpers.com>
parents:
1505
diff
changeset
|
12 Base.getindex(g::MappedGrid, I::Vararg{Int}) = g.physicalcoordinates[I...] |
535f32316637
Rename from curvilinear to mapped
Jonatan Werpers <jonatan@werpers.com>
parents:
1505
diff
changeset
|
13 Base.eachindex(g::MappedGrid) = eachindex(g.logicalgrid) |
1432
64b60b42d367
Implement indexing interface
Jonatan Werpers <jonatan@werpers.com>
parents:
1431
diff
changeset
|
14 |
1506
535f32316637
Rename from curvilinear to mapped
Jonatan Werpers <jonatan@werpers.com>
parents:
1505
diff
changeset
|
15 Base.firstindex(g::MappedGrid, d) = firstindex(g.logicalgrid, d) |
535f32316637
Rename from curvilinear to mapped
Jonatan Werpers <jonatan@werpers.com>
parents:
1505
diff
changeset
|
16 Base.lastindex(g::MappedGrid, d) = lastindex(g.logicalgrid, d) |
1430
9fc3c1af33e5
Add testsets and a few tests
Jonatan Werpers <jonatan@werpers.com>
parents:
1426
diff
changeset
|
17 |
1450
647c8b18b84f
Implement iterator interface
Jonatan Werpers <jonatan@werpers.com>
parents:
1449
diff
changeset
|
18 # Iteration interface |
1430
9fc3c1af33e5
Add testsets and a few tests
Jonatan Werpers <jonatan@werpers.com>
parents:
1426
diff
changeset
|
19 |
1506
535f32316637
Rename from curvilinear to mapped
Jonatan Werpers <jonatan@werpers.com>
parents:
1505
diff
changeset
|
20 Base.iterate(g::MappedGrid) = iterate(g.physicalcoordinates) |
535f32316637
Rename from curvilinear to mapped
Jonatan Werpers <jonatan@werpers.com>
parents:
1505
diff
changeset
|
21 Base.iterate(g::MappedGrid, state) = iterate(g.physicalcoordinates, state) |
1430
9fc3c1af33e5
Add testsets and a few tests
Jonatan Werpers <jonatan@werpers.com>
parents:
1426
diff
changeset
|
22 |
1506
535f32316637
Rename from curvilinear to mapped
Jonatan Werpers <jonatan@werpers.com>
parents:
1505
diff
changeset
|
23 Base.IteratorSize(::Type{<:MappedGrid{<:Any, D}}) where D = Base.HasShape{D}() |
535f32316637
Rename from curvilinear to mapped
Jonatan Werpers <jonatan@werpers.com>
parents:
1505
diff
changeset
|
24 Base.length(g::MappedGrid) = length(g.logicalgrid) |
535f32316637
Rename from curvilinear to mapped
Jonatan Werpers <jonatan@werpers.com>
parents:
1505
diff
changeset
|
25 Base.size(g::MappedGrid) = size(g.logicalgrid) |
535f32316637
Rename from curvilinear to mapped
Jonatan Werpers <jonatan@werpers.com>
parents:
1505
diff
changeset
|
26 Base.size(g::MappedGrid, d) = size(g.logicalgrid, d) |
1430
9fc3c1af33e5
Add testsets and a few tests
Jonatan Werpers <jonatan@werpers.com>
parents:
1426
diff
changeset
|
27 |
1506
535f32316637
Rename from curvilinear to mapped
Jonatan Werpers <jonatan@werpers.com>
parents:
1505
diff
changeset
|
28 boundary_identifiers(g::MappedGrid) = boundary_identifiers(g.logicalgrid) |
535f32316637
Rename from curvilinear to mapped
Jonatan Werpers <jonatan@werpers.com>
parents:
1505
diff
changeset
|
29 boundary_indices(g::MappedGrid, id::TensorGridBoundary) = boundary_indices(g.logicalgrid, id) |
1430
9fc3c1af33e5
Add testsets and a few tests
Jonatan Werpers <jonatan@werpers.com>
parents:
1426
diff
changeset
|
30 |
1506
535f32316637
Rename from curvilinear to mapped
Jonatan Werpers <jonatan@werpers.com>
parents:
1505
diff
changeset
|
31 function boundary_grid(g::MappedGrid, id::TensorGridBoundary) |
1451
2e08f3444354
Implement boundary_identifiers, and a wishful implementation of boundary_grid
Jonatan Werpers <jonatan@werpers.com>
parents:
1450
diff
changeset
|
32 b_indices = boundary_indices(g.logicalgrid, id) |
1503
704a84eef8b6
Add tests for boundary_grid
Jonatan Werpers <jonatan@werpers.com>
parents:
1502
diff
changeset
|
33 |
1504 | 34 # Calculate indices of needed jacobian components |
1503
704a84eef8b6
Add tests for boundary_grid
Jonatan Werpers <jonatan@werpers.com>
parents:
1502
diff
changeset
|
35 D = ndims(g) |
704a84eef8b6
Add tests for boundary_grid
Jonatan Werpers <jonatan@werpers.com>
parents:
1502
diff
changeset
|
36 all_indices = SVector{D}(1:D) |
704a84eef8b6
Add tests for boundary_grid
Jonatan Werpers <jonatan@werpers.com>
parents:
1502
diff
changeset
|
37 free_variable_indices = deleteat(all_indices, grid_id(id)) |
704a84eef8b6
Add tests for boundary_grid
Jonatan Werpers <jonatan@werpers.com>
parents:
1502
diff
changeset
|
38 jacobian_components = (:, free_variable_indices) |
704a84eef8b6
Add tests for boundary_grid
Jonatan Werpers <jonatan@werpers.com>
parents:
1502
diff
changeset
|
39 |
704a84eef8b6
Add tests for boundary_grid
Jonatan Werpers <jonatan@werpers.com>
parents:
1502
diff
changeset
|
40 # Create grid function for boundary grid jacobian |
704a84eef8b6
Add tests for boundary_grid
Jonatan Werpers <jonatan@werpers.com>
parents:
1502
diff
changeset
|
41 boundary_jacobian = componentview((@view g.jacobian[b_indices...]) , jacobian_components...) |
704a84eef8b6
Add tests for boundary_grid
Jonatan Werpers <jonatan@werpers.com>
parents:
1502
diff
changeset
|
42 boundary_physicalcoordinates = @view g.physicalcoordinates[b_indices...] |
704a84eef8b6
Add tests for boundary_grid
Jonatan Werpers <jonatan@werpers.com>
parents:
1502
diff
changeset
|
43 |
1506
535f32316637
Rename from curvilinear to mapped
Jonatan Werpers <jonatan@werpers.com>
parents:
1505
diff
changeset
|
44 return MappedGrid( |
1451
2e08f3444354
Implement boundary_identifiers, and a wishful implementation of boundary_grid
Jonatan Werpers <jonatan@werpers.com>
parents:
1450
diff
changeset
|
45 boundary_grid(g.logicalgrid, id), |
1503
704a84eef8b6
Add tests for boundary_grid
Jonatan Werpers <jonatan@werpers.com>
parents:
1502
diff
changeset
|
46 boundary_physicalcoordinates, |
704a84eef8b6
Add tests for boundary_grid
Jonatan Werpers <jonatan@werpers.com>
parents:
1502
diff
changeset
|
47 boundary_jacobian, |
1451
2e08f3444354
Implement boundary_identifiers, and a wishful implementation of boundary_grid
Jonatan Werpers <jonatan@werpers.com>
parents:
1450
diff
changeset
|
48 ) |
2e08f3444354
Implement boundary_identifiers, and a wishful implementation of boundary_grid
Jonatan Werpers <jonatan@werpers.com>
parents:
1450
diff
changeset
|
49 end |
1430
9fc3c1af33e5
Add testsets and a few tests
Jonatan Werpers <jonatan@werpers.com>
parents:
1426
diff
changeset
|
50 |
1527
69790e9d1652
Remove tests for refine and coarsen
Jonatan Werpers <jonatan@werpers.com>
parents:
1506
diff
changeset
|
51 # TBD: refine and coarsen could be implemented once we have a simple manifold implementation. |
69790e9d1652
Remove tests for refine and coarsen
Jonatan Werpers <jonatan@werpers.com>
parents:
1506
diff
changeset
|
52 # Before we do, we should consider the overhead of including such a field in the mapped grid struct. |
69790e9d1652
Remove tests for refine and coarsen
Jonatan Werpers <jonatan@werpers.com>
parents:
1506
diff
changeset
|
53 |
1506
535f32316637
Rename from curvilinear to mapped
Jonatan Werpers <jonatan@werpers.com>
parents:
1505
diff
changeset
|
54 function mapped_grid(x, J, size...) |
1502
a2dc80396808
Add functions `curvilinear_grid`
Jonatan Werpers <jonatan@werpers.com>
parents:
1501
diff
changeset
|
55 D = length(size) |
a2dc80396808
Add functions `curvilinear_grid`
Jonatan Werpers <jonatan@werpers.com>
parents:
1501
diff
changeset
|
56 lg = equidistant_grid(size, ntuple(i->0., D), ntuple(i->1., D)) |
1506
535f32316637
Rename from curvilinear to mapped
Jonatan Werpers <jonatan@werpers.com>
parents:
1505
diff
changeset
|
57 return MappedGrid( |
1502
a2dc80396808
Add functions `curvilinear_grid`
Jonatan Werpers <jonatan@werpers.com>
parents:
1501
diff
changeset
|
58 lg, |
a2dc80396808
Add functions `curvilinear_grid`
Jonatan Werpers <jonatan@werpers.com>
parents:
1501
diff
changeset
|
59 map(x,lg), |
a2dc80396808
Add functions `curvilinear_grid`
Jonatan Werpers <jonatan@werpers.com>
parents:
1501
diff
changeset
|
60 map(J,lg), |
a2dc80396808
Add functions `curvilinear_grid`
Jonatan Werpers <jonatan@werpers.com>
parents:
1501
diff
changeset
|
61 ) |
a2dc80396808
Add functions `curvilinear_grid`
Jonatan Werpers <jonatan@werpers.com>
parents:
1501
diff
changeset
|
62 end |