Skip to content

Commit b9e6b91

Browse files
committed
Enforce units in rotate! and specify anchor point in scale!
1 parent bf65dba commit b9e6b91

File tree

1 file changed

+17
-23
lines changed

1 file changed

+17
-23
lines changed

src/mesh_functions/rigid_body_transformations.jl

Lines changed: 17 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -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)
1010
end
1111
function 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)
1818
end
1919
function 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)
2727
end
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)
4444
end
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)
6565
end
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)
8478
end

0 commit comments

Comments
 (0)