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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1433
1656228095b5 Add TBD
Jonatan Werpers <jonatan@werpers.com>
parents: 1432
diff changeset
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
976f5784d7b9 Spelling
Jonatan Werpers <jonatan@werpers.com>
parents: 1503
diff changeset
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