function ∇²(A::Array{Float32,2}) """ Compute the Laplace Transform via Direct Convolution """ k_ℒ = Float32[[0.05 0.2 0.05] [0.2 -1 0.2 ] [0.05 0.2 0.05]] A_prime = fill(0.0f0, size(A)) Threads.@threads for y = 1:size(A, 2) Threads.@threads for x = 1:size(A,1) # Bound A by_A = max(1, y - 1) : min(size(A,2), y + 1) bx_A = max(1, x - 1) : min(size(A,1), x + 1) # Bound Laplace Kernel by_ℒ = 1 + δ(y, 1) : size(k_ℒ, 2) - δ(y, size(A, 2)) bx_ℒ = 1 + δ(x, 1) : size(k_ℒ, 1) - δ(x, size(A, 1)) # Calculate subarray views v_A = view(A, by_A, bx_A) v_ℒ = view(k_ℒ, by_ℒ, bx_ℒ) # Compute transform A_prime[y, x] = sum(v_ℒ .* v_A) end end return A_prime end