|
109 | 109 | @inline Δrᵃᵃᶠ(i, j, k, grid) = getspacing(k, grid.z.Δᵃᵃᶠ)
|
110 | 110 |
|
111 | 111 | @inline Δzᵃᵃᶜ(i, j, k, grid) = getspacing(k, grid.z.Δᵃᵃᶜ)
|
| 112 | +@inline Δzᵃᵃᶜ(i::AbstractArray, j::AbstractArray, k::AbstractArray, grid) = permutedims(Base.stack(collect(Base.stack(collect(getspacing(k, grid.z.Δᵃᵃᶜ) for _ in j)) for _ in i)), (3,2,1)) # one part |
| 113 | + |
112 | 114 | @inline Δzᵃᵃᶠ(i, j, k, grid) = getspacing(k, grid.z.Δᵃᵃᶠ)
|
113 | 115 |
|
114 | 116 | #####
|
|
156 | 158 | @inline Δλᶠᵃᵃ(i, j, k, grid::LLGX) = @inbounds grid.Δλᶠᵃᵃ
|
157 | 159 |
|
158 | 160 | @inline Δφᵃᶜᵃ(i, j, k, grid::LLG) = @inbounds grid.Δφᵃᶜᵃ[j]
|
| 161 | +@inline Δφᵃᶜᵃ(i::AbstractArray, j::AbstractArray, k::AbstractArray, grid::LLG) = Base.stack(collect(collect(transpose(Base.stack(collect(Δφᵃᶜᵃ(1, j, 1, grid) for _ in i)))) for _ in k)) |
159 | 162 | @inline Δφᵃᶠᵃ(i, j, k, grid::LLG) = @inbounds grid.Δφᵃᶠᵃ[j]
|
| 163 | +@inline Δφᵃᶠᵃ(i::AbstractArray, j::AbstractArray, k::AbstractArray, grid::LLG) = Base.stack(collect(collect(transpose(Base.stack(collect(Δφᵃᶠᵃ(1, j, 1, grid) for _ in i)))) for _ in k)) |
160 | 164 | @inline Δφᵃᶜᵃ(i, j, k, grid::LLGY) = @inbounds grid.Δφᵃᶜᵃ
|
161 | 165 | @inline Δφᵃᶠᵃ(i, j, k, grid::LLGY) = @inbounds grid.Δφᵃᶠᵃ
|
162 | 166 |
|
|
165 | 169 | ### Precomputed metrics
|
166 | 170 |
|
167 | 171 | @inline Δyᵃᶜᵃ(i, j, k, grid::LLGY) = grid.Δyᶠᶜᵃ
|
| 172 | +@inline Δyᵃᶜᵃ(i::AbstractArray, j::AbstractArray, k::AbstractArray, grid::LLGY) = Base.stack(collect(Base.stack(collect(Base.stack(collect(Δyᵃᶜᵃ(1, 1, 1, grid) for _ in i)) for _ in j)) for _ in k)) # other part |
| 173 | + |
168 | 174 | @inline Δyᵃᶠᵃ(i, j, k, grid::LLGY) = grid.Δyᶜᶠᵃ
|
| 175 | +@inline Δyᵃᶠᵃ(i::AbstractArray, j::AbstractArray, k::AbstractArray, grid::LLGY) = Base.stack(collect(Base.stack(collect(Base.stack(collect(Δyᵃᶠᵃ(1, 1, 1, grid) for _ in i)) for _ in j)) for _ in k)) |
| 176 | + |
169 | 177 | @inline Δyᵃᶜᵃ(i, j, k, grid::LLG) = @inbounds grid.Δyᶠᶜᵃ[j]
|
| 178 | +#@inline Δyᵃᶜᵃ(i::AbstractArray, j::AbstractArray, k::AbstractArray, grid::LLG) = Base.stack(collect(collect(transpose(Base.stack(collect(Δyᵃᶜᵃ(1, j, 1, grid) for _ in i)))) for _ in k)) |
170 | 179 | @inline Δyᵃᶠᵃ(i, j, k, grid::LLG) = @inbounds grid.Δyᶜᶠᵃ[j]
|
| 180 | +#@inline Δyᵃᶠᵃ(i::AbstractArray, j::AbstractArray, k::AbstractArray, grid::LLG) = Base.stack(collect(collect(transpose(Base.stack(collect(Δyᵃᶠᵃ(1, j, 1, grid) for _ in i)))) for _ in k)) |
171 | 181 |
|
172 | 182 | ### On-the-fly metrics
|
173 | 183 |
|
|
189 | 199 | ### Pre computed metrics
|
190 | 200 |
|
191 | 201 | @inline Δxᶜᶠᵃ(i, j, k, grid::LLG) = @inbounds grid.Δxᶜᶠᵃ[i, j]
|
| 202 | +@inline Δxᶜᶠᵃ(i::AbstractArray, j::AbstractArray, k::AbstractArray, grid::LLG) = Base.stack(collect(Δxᶜᶠᵃ(i, j, 1, grid) for _ in k)) |
| 203 | + |
192 | 204 | @inline Δxᶠᶜᵃ(i, j, k, grid::LLG) = @inbounds grid.Δxᶠᶜᵃ[i, j]
|
| 205 | +@inline Δxᶠᶜᵃ(i::AbstractArray, j::AbstractArray, k::AbstractArray, grid::LLG) = Base.stack(collect(Δxᶠᶜᵃ(i, j, 1, grid) for _ in k)) |
| 206 | + |
193 | 207 | @inline Δxᶠᶠᵃ(i, j, k, grid::LLG) = @inbounds grid.Δxᶠᶠᵃ[i, j]
|
| 208 | +@inline Δxᶠᶠᵃ(i::AbstractArray, j::AbstractArray, k::AbstractArray, grid::LLG) = Base.stack(collect(Δxᶠᶠᵃ(i, j, 1, grid) for _ in k)) |
| 209 | + |
194 | 210 | @inline Δxᶜᶜᵃ(i, j, k, grid::LLG) = @inbounds grid.Δxᶜᶜᵃ[i, j]
|
| 211 | +@inline Δxᶜᶜᵃ(i::AbstractArray, j::AbstractArray, k::AbstractArray, grid::LLG) = Base.stack(collect(Δxᶜᶜᵃ(i, j, 1, grid) for _ in k)) |
| 212 | + |
195 | 213 |
|
196 | 214 | ### XRegularLLG with pre computed metrics
|
197 | 215 |
|
@@ -306,7 +324,9 @@ for L1 in (:ᶜ, :ᶠ), L2 in (:ᶜ, :ᶠ)
|
306 | 324 |
|
307 | 325 | @eval begin
|
308 | 326 | @inline $Axˡˡˡ(i, j, k, grid) = $Δyˡˡˡ(i, j, k, grid) * $Δzˡˡˡ(i, j, k, grid)
|
| 327 | + @inline $Axˡˡˡ(i::AbstractArray, j::AbstractArray, k::AbstractArray, grid) = $Δyˡˡˡ(i, j, k, grid) .* $Δzˡˡˡ(i, j, k, grid) |
309 | 328 | @inline $Ayˡˡˡ(i, j, k, grid) = $Δxˡˡˡ(i, j, k, grid) * $Δzˡˡˡ(i, j, k, grid)
|
| 329 | + @inline $Ayˡˡˡ(i::AbstractArray, j::AbstractArray, k::AbstractArray, grid) = $Δxˡˡˡ(i, j, k, grid) .* $Δzˡˡˡ(i, j, k, grid) |
310 | 330 |
|
311 | 331 | # For the moment the horizontal area is independent of `z`. This might change if
|
312 | 332 | # we want to implement deep atmospheres where Az is a function of z
|
|
0 commit comments