|
74 | 74 | Base.rotl90(trscheme::TruncationScheme) = trscheme |
75 | 75 |
|
76 | 76 | 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 | + |
79 | 80 | if directions == 2 |
80 | 81 | trschemes_rotated[NORTH, :, :] = circshift( |
81 | 82 | rotl90(trscheme.trschemes[EAST, :, :]), (0, -1) |
82 | 83 | ) |
83 | 84 | trschemes_rotated[EAST, :, :] = rotl90(trscheme.trschemes[NORTH, :, :]) |
84 | 85 | 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 |
89 | 90 | else |
90 | | - error("Unsupported number of directions for rotl90: $directions") |
| 91 | + throw(ArgumentError("Unsupported number of directions for rotl90: $directions")) |
91 | 92 | end |
92 | 93 | return SiteDependentTruncation(trschemes_rotated) |
93 | 94 | end |
0 commit comments