Mercurial > repos > public > sbplib_julia
annotate src/Grids/curvilinear_grid.jl @ 1505:63101a1cd0e6 feature/grids/curvilinear
Remove some comments
author | Jonatan Werpers <jonatan@werpers.com> |
---|---|
date | Fri, 16 Feb 2024 14:33:13 +0100 |
parents | 976f5784d7b9 |
children |
rev | line source |
---|---|
1433 | 1 # TBD: Rename to MappedGrid? |
1430
9fc3c1af33e5
Add testsets and a few tests
Jonatan Werpers <jonatan@werpers.com>
parents:
1426
diff
changeset
|
2 struct CurvilinearGrid{T,D, GT<:Grid{<:Any,D}, CT<:AbstractArray{T,D}, JT<:AbstractArray{<:AbstractArray{<:Any, 2}, D}} <: Grid{T,D} |
9fc3c1af33e5
Add testsets and a few tests
Jonatan Werpers <jonatan@werpers.com>
parents:
1426
diff
changeset
|
3 logicalgrid::GT |
9fc3c1af33e5
Add testsets and a few tests
Jonatan Werpers <jonatan@werpers.com>
parents:
1426
diff
changeset
|
4 physicalcoordinates::CT |
1505
63101a1cd0e6
Remove some comments
Jonatan Werpers <jonatan@werpers.com>
parents:
1504
diff
changeset
|
5 jacobian::JT |
1430
9fc3c1af33e5
Add testsets and a few tests
Jonatan Werpers <jonatan@werpers.com>
parents:
1426
diff
changeset
|
6 end |
9fc3c1af33e5
Add testsets and a few tests
Jonatan Werpers <jonatan@werpers.com>
parents:
1426
diff
changeset
|
7 |
1431
6adf31ba6cfd
Add `jacobian` and `logicalgrid`
Jonatan Werpers <jonatan@werpers.com>
parents:
1430
diff
changeset
|
8 jacobian(g::CurvilinearGrid) = g.jacobian |
6adf31ba6cfd
Add `jacobian` and `logicalgrid`
Jonatan Werpers <jonatan@werpers.com>
parents:
1430
diff
changeset
|
9 logicalgrid(g::CurvilinearGrid) = g.logicalgrid |
6adf31ba6cfd
Add `jacobian` and `logicalgrid`
Jonatan Werpers <jonatan@werpers.com>
parents:
1430
diff
changeset
|
10 |
1430
9fc3c1af33e5
Add testsets and a few tests
Jonatan Werpers <jonatan@werpers.com>
parents:
1426
diff
changeset
|
11 |
9fc3c1af33e5
Add testsets and a few tests
Jonatan Werpers <jonatan@werpers.com>
parents:
1426
diff
changeset
|
12 # Indexing interface |
1432
64b60b42d367
Implement indexing interface
Jonatan Werpers <jonatan@werpers.com>
parents:
1431
diff
changeset
|
13 Base.getindex(g::CurvilinearGrid, I::Vararg{Int}) = g.physicalcoordinates[I...] |
64b60b42d367
Implement indexing interface
Jonatan Werpers <jonatan@werpers.com>
parents:
1431
diff
changeset
|
14 Base.eachindex(g::CurvilinearGrid) = eachindex(g.logicalgrid) |
64b60b42d367
Implement indexing interface
Jonatan Werpers <jonatan@werpers.com>
parents:
1431
diff
changeset
|
15 |
64b60b42d367
Implement indexing interface
Jonatan Werpers <jonatan@werpers.com>
parents:
1431
diff
changeset
|
16 Base.firstindex(g::CurvilinearGrid, d) = firstindex(g.logicalgrid, d) |
64b60b42d367
Implement indexing interface
Jonatan Werpers <jonatan@werpers.com>
parents:
1431
diff
changeset
|
17 Base.lastindex(g::CurvilinearGrid, d) = lastindex(g.logicalgrid, d) |
1430
9fc3c1af33e5
Add testsets and a few tests
Jonatan Werpers <jonatan@werpers.com>
parents:
1426
diff
changeset
|
18 |
1450
647c8b18b84f
Implement iterator interface
Jonatan Werpers <jonatan@werpers.com>
parents:
1449
diff
changeset
|
19 # Iteration interface |
1430
9fc3c1af33e5
Add testsets and a few tests
Jonatan Werpers <jonatan@werpers.com>
parents:
1426
diff
changeset
|
20 |
1450
647c8b18b84f
Implement iterator interface
Jonatan Werpers <jonatan@werpers.com>
parents:
1449
diff
changeset
|
21 Base.iterate(g::CurvilinearGrid) = iterate(g.physicalcoordinates) |
647c8b18b84f
Implement iterator interface
Jonatan Werpers <jonatan@werpers.com>
parents:
1449
diff
changeset
|
22 Base.iterate(g::CurvilinearGrid, state) = iterate(g.physicalcoordinates, state) |
1430
9fc3c1af33e5
Add testsets and a few tests
Jonatan Werpers <jonatan@werpers.com>
parents:
1426
diff
changeset
|
23 |
1450
647c8b18b84f
Implement iterator interface
Jonatan Werpers <jonatan@werpers.com>
parents:
1449
diff
changeset
|
24 Base.IteratorSize(::Type{<:CurvilinearGrid{<:Any, D}}) where D = Base.HasShape{D}() |
647c8b18b84f
Implement iterator interface
Jonatan Werpers <jonatan@werpers.com>
parents:
1449
diff
changeset
|
25 Base.length(g::CurvilinearGrid) = length(g.logicalgrid) |
647c8b18b84f
Implement iterator interface
Jonatan Werpers <jonatan@werpers.com>
parents:
1449
diff
changeset
|
26 Base.size(g::CurvilinearGrid) = size(g.logicalgrid) |
647c8b18b84f
Implement iterator interface
Jonatan Werpers <jonatan@werpers.com>
parents:
1449
diff
changeset
|
27 Base.size(g::CurvilinearGrid, d) = size(g.logicalgrid, d) |
1430
9fc3c1af33e5
Add testsets and a few tests
Jonatan Werpers <jonatan@werpers.com>
parents:
1426
diff
changeset
|
28 |
1451
2e08f3444354
Implement boundary_identifiers, and a wishful implementation of boundary_grid
Jonatan Werpers <jonatan@werpers.com>
parents:
1450
diff
changeset
|
29 boundary_identifiers(g::CurvilinearGrid) = boundary_identifiers(g.logicalgrid) |
1493
58b8da9c7e56
Implement boundary_indices
Jonatan Werpers <jonatan@werpers.com>
parents:
1451
diff
changeset
|
30 boundary_indices(g::CurvilinearGrid, id::TensorGridBoundary) = boundary_indices(g.logicalgrid, id) |
1430
9fc3c1af33e5
Add testsets and a few tests
Jonatan Werpers <jonatan@werpers.com>
parents:
1426
diff
changeset
|
31 |
1451
2e08f3444354
Implement boundary_identifiers, and a wishful implementation of boundary_grid
Jonatan Werpers <jonatan@werpers.com>
parents:
1450
diff
changeset
|
32 function boundary_grid(g::CurvilinearGrid, id::TensorGridBoundary) |
2e08f3444354
Implement boundary_identifiers, and a wishful implementation of boundary_grid
Jonatan Werpers <jonatan@werpers.com>
parents:
1450
diff
changeset
|
33 b_indices = boundary_indices(g.logicalgrid, id) |
1503
704a84eef8b6
Add tests for boundary_grid
Jonatan Werpers <jonatan@werpers.com>
parents:
1502
diff
changeset
|
34 |
1504 | 35 # Calculate indices of needed jacobian components |
1503
704a84eef8b6
Add tests for boundary_grid
Jonatan Werpers <jonatan@werpers.com>
parents:
1502
diff
changeset
|
36 D = ndims(g) |
704a84eef8b6
Add tests for boundary_grid
Jonatan Werpers <jonatan@werpers.com>
parents:
1502
diff
changeset
|
37 all_indices = SVector{D}(1:D) |
704a84eef8b6
Add tests for boundary_grid
Jonatan Werpers <jonatan@werpers.com>
parents:
1502
diff
changeset
|
38 free_variable_indices = deleteat(all_indices, grid_id(id)) |
704a84eef8b6
Add tests for boundary_grid
Jonatan Werpers <jonatan@werpers.com>
parents:
1502
diff
changeset
|
39 jacobian_components = (:, free_variable_indices) |
704a84eef8b6
Add tests for boundary_grid
Jonatan Werpers <jonatan@werpers.com>
parents:
1502
diff
changeset
|
40 |
704a84eef8b6
Add tests for boundary_grid
Jonatan Werpers <jonatan@werpers.com>
parents:
1502
diff
changeset
|
41 # Create grid function for boundary grid jacobian |
704a84eef8b6
Add tests for boundary_grid
Jonatan Werpers <jonatan@werpers.com>
parents:
1502
diff
changeset
|
42 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
|
43 boundary_physicalcoordinates = @view g.physicalcoordinates[b_indices...] |
704a84eef8b6
Add tests for boundary_grid
Jonatan Werpers <jonatan@werpers.com>
parents:
1502
diff
changeset
|
44 |
1451
2e08f3444354
Implement boundary_identifiers, and a wishful implementation of boundary_grid
Jonatan Werpers <jonatan@werpers.com>
parents:
1450
diff
changeset
|
45 return CurvilinearGrid( |
2e08f3444354
Implement boundary_identifiers, and a wishful implementation of boundary_grid
Jonatan Werpers <jonatan@werpers.com>
parents:
1450
diff
changeset
|
46 boundary_grid(g.logicalgrid, id), |
1503
704a84eef8b6
Add tests for boundary_grid
Jonatan Werpers <jonatan@werpers.com>
parents:
1502
diff
changeset
|
47 boundary_physicalcoordinates, |
704a84eef8b6
Add tests for boundary_grid
Jonatan Werpers <jonatan@werpers.com>
parents:
1502
diff
changeset
|
48 boundary_jacobian, |
1451
2e08f3444354
Implement boundary_identifiers, and a wishful implementation of boundary_grid
Jonatan Werpers <jonatan@werpers.com>
parents:
1450
diff
changeset
|
49 ) |
2e08f3444354
Implement boundary_identifiers, and a wishful implementation of boundary_grid
Jonatan Werpers <jonatan@werpers.com>
parents:
1450
diff
changeset
|
50 end |
1430
9fc3c1af33e5
Add testsets and a few tests
Jonatan Werpers <jonatan@werpers.com>
parents:
1426
diff
changeset
|
51 |
1502
a2dc80396808
Add functions `curvilinear_grid`
Jonatan Werpers <jonatan@werpers.com>
parents:
1501
diff
changeset
|
52 function curvilinear_grid(x, J, size...) |
a2dc80396808
Add functions `curvilinear_grid`
Jonatan Werpers <jonatan@werpers.com>
parents:
1501
diff
changeset
|
53 D = length(size) |
a2dc80396808
Add functions `curvilinear_grid`
Jonatan Werpers <jonatan@werpers.com>
parents:
1501
diff
changeset
|
54 lg = equidistant_grid(size, ntuple(i->0., D), ntuple(i->1., D)) |
a2dc80396808
Add functions `curvilinear_grid`
Jonatan Werpers <jonatan@werpers.com>
parents:
1501
diff
changeset
|
55 return CurvilinearGrid( |
a2dc80396808
Add functions `curvilinear_grid`
Jonatan Werpers <jonatan@werpers.com>
parents:
1501
diff
changeset
|
56 lg, |
a2dc80396808
Add functions `curvilinear_grid`
Jonatan Werpers <jonatan@werpers.com>
parents:
1501
diff
changeset
|
57 map(x,lg), |
a2dc80396808
Add functions `curvilinear_grid`
Jonatan Werpers <jonatan@werpers.com>
parents:
1501
diff
changeset
|
58 map(J,lg), |
a2dc80396808
Add functions `curvilinear_grid`
Jonatan Werpers <jonatan@werpers.com>
parents:
1501
diff
changeset
|
59 ) |
a2dc80396808
Add functions `curvilinear_grid`
Jonatan Werpers <jonatan@werpers.com>
parents:
1501
diff
changeset
|
60 end |