@@ -6,15 +6,15 @@ function translate!(grid::AbstractCurvilinearGrid1D, translation_vector::SVector
66
77 grid. node_coordinates. x[grid. iterators. node. domain] .+ = translation_vector[1 ]
88
9- update! (grid, grid . discretization_scheme . backend ; force= true )
9+ update! (grid; force= true )
1010end
1111function translate! (grid:: AbstractCurvilinearGrid2D , translation_vector:: SVector )
1212 @assert length (size (grid. node_coordinates)) == length (translation_vector)
1313
1414 grid. node_coordinates. x[grid. iterators. node. domain] .+ = translation_vector[1 ]
1515 grid. node_coordinates. y[grid. iterators. node. domain] .+ = translation_vector[2 ]
1616
17- update! (grid, grid . discretization_scheme . backend ; force= true )
17+ update! (grid; force= true )
1818end
1919function translate! (grid:: AbstractCurvilinearGrid3D , translation_vector:: SVector )
2020 @assert length (size (grid. node_coordinates)) == length (translation_vector)
@@ -23,10 +23,10 @@ function translate!(grid::AbstractCurvilinearGrid3D, translation_vector::SVector
2323 grid. node_coordinates. y[grid. iterators. node. domain] .+ = translation_vector[2 ]
2424 grid. node_coordinates. z[grid. iterators. node. domain] .+ = translation_vector[3 ]
2525
26- update! (grid, grid . discretization_scheme . backend ; force= true )
26+ update! (grid; force= true )
2727end
2828
29- function rotate! (grid:: AbstractCurvilinearGrid2D , rotation_angle)
29+ function rotate! (grid:: AbstractCurvilinearGrid2D , rotation_angle:: Quantity{T, NoDims, typeof(Unitful.°)} ) where {T}
3030 domain = grid. iterators. node. domain
3131 rotation_matrix = [cos (rotation_angle * u " °" ) - sin (rotation_angle * u " °" );
3232 sin (rotation_angle * u " °" ) cos (rotation_angle * u " °" )]
@@ -40,9 +40,9 @@ function rotate!(grid::AbstractCurvilinearGrid2D, rotation_angle)
4040 grid. node_coordinates. y[c] = (rotation_matrix* point)[2 ]
4141 end
4242
43- update! (grid, grid . discretization_scheme . backend ; force= true )
43+ update! (grid; force= true )
4444end
45- function rotate! (grid:: AbstractCurvilinearGrid3D , axis_vector:: SVector , rotation_angle)
45+ function rotate! (grid:: AbstractCurvilinearGrid3D , axis_vector:: SVector , rotation_angle:: Quantity{T, NoDims, typeof(Unitful.°)} ) where {T}
4646 @assert axis_vector[1 ]^ 2 + axis_vector[2 ]^ 2 + axis_vector[3 ]^ 2 == 1.0
4747
4848 domain = grid. iterators. node. domain
@@ -61,24 +61,18 @@ function rotate!(grid::AbstractCurvilinearGrid3D, axis_vector::SVector, rotation
6161 grid. node_coordinates. z[c] = rotated_point[3 ]
6262 end
6363
64- update! (grid, grid . discretization_scheme . backend ; force= true )
64+ update! (grid; force= true )
6565end
6666
67- function scale! (grid:: AbstractCurvilinearGrid1D , factor)
68- grid. node_coordinates. x .*= factor
69-
70- update! (grid, grid. discretization_scheme. backend; force= true )
71- end
72- function scale! (grid:: AbstractCurvilinearGrid2D , factor)
73- grid. node_coordinates. x .*= factor
74- grid. node_coordinates. y .*= factor
75-
76- update! (grid, grid. discretization_scheme. backend; force= true )
77- end
78- function scale! (grid:: AbstractCurvilinearGrid3D , factor)
79- grid. node_coordinates. x .*= factor
80- grid. node_coordinates. y .*= factor
81- grid. node_coordinates. z .*= factor
67+ function scale! (grid:: AbstractCurvilinearGrid , anchor:: SVector , factor)
68+ @assert length (size (grid. node_coordinates)) == length (anchor)
69+ domain = grid. iterators. node. domain
70+ fields = propertynames (grid. node_coordinates)
71+ for dim in eachindex (fields)
72+ getproperty (grid. node_coordinates, fields[dim])[domain] .- = anchor[dim]
73+ getproperty (grid. node_coordinates, fields[dim])[domain] .*= factor
74+ getproperty (grid. node_coordinates, fields[dim])[domain] .+ = anchor[dim]
75+ end
8276
83- update! (grid, grid . discretization_scheme . backend ; force= true )
77+ update! (grid; force= true )
8478end
0 commit comments