Skip to content

Commit 615fa7f

Browse files
committed
Also simplify rotation
1 parent 4eee139 commit 615fa7f

File tree

1 file changed

+8
-7
lines changed

1 file changed

+8
-7
lines changed

src/algorithms/truncation/truncationschemes.jl

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -74,20 +74,21 @@ end
7474
Base.rotl90(trscheme::TruncationScheme) = trscheme
7575

7676
function Base.rotl90(trscheme::SiteDependentTruncation)
77-
directions = size(trscheme.trschemes)[1]
78-
trschemes_rotated = permutedims(trscheme.trschemes, (1, 3, 2))
77+
directions, rows, cols = size(trscheme.trschemes)
78+
trschemes_rotated = similar(trscheme.trschemes, directions, cols, rows)
79+
7980
if directions == 2
8081
trschemes_rotated[NORTH, :, :] = circshift(
8182
rotl90(trscheme.trschemes[EAST, :, :]), (0, -1)
8283
)
8384
trschemes_rotated[EAST, :, :] = rotl90(trscheme.trschemes[NORTH, :, :])
8485
elseif directions == 4
85-
trschemes_rotated[NORTH, :, :] = rotl90(trscheme.trschemes[EAST, :, :])
86-
trschemes_rotated[EAST, :, :] = rotl90(trscheme.trschemes[SOUTH, :, :])
87-
trschemes_rotated[SOUTH, :, :] = rotl90(trscheme.trschemes[WEST, :, :])
88-
trschemes_rotated[WEST, :, :] = rotl90(trscheme.trschemes[NORTH, :, :])
86+
for dir in 1:4
87+
dir′ = _prev(dir, 4)
88+
trschemes_rotated[dir′, :, :] = rotl90(trscheme.trschemes[dir, :, :])
89+
end
8990
else
90-
error("Unsupported number of directions for rotl90: $directions")
91+
throw(ArgumentError("Unsupported number of directions for rotl90: $directions"))
9192
end
9293
return SiteDependentTruncation(trschemes_rotated)
9394
end

0 commit comments

Comments
 (0)