From 031e49c6f3a52a39cc429aace33daa0f2236d7d1 Mon Sep 17 00:00:00 2001 From: Gravifer Date: Tue, 4 May 2021 12:50:47 +0800 Subject: [PATCH 01/16] perf: inline¶llize elliptic-grid-gen [skip ci] --- Project-1/src/elliptic-grid-gen.jl | 109 ++++++++++++++++------------- 1 file changed, 62 insertions(+), 47 deletions(-) diff --git a/Project-1/src/elliptic-grid-gen.jl b/Project-1/src/elliptic-grid-gen.jl index c66c0c1..b72ccc8 100644 --- a/Project-1/src/elliptic-grid-gen.jl +++ b/Project-1/src/elliptic-grid-gen.jl @@ -25,58 +25,67 @@ using LinearAlgebra """ Work in progress. """ -function inverted_poisson_2d_jacobi_step(xs::Matrix{T}, ys::Matrix{T}) where {T <: Number} +function inverted_poisson_2d_jacobi_step( xs::Matrix{T}, ys::Matrix{T}, + P::Union{Nothing, Function} = nothing , + Q::Union{Nothing, Function} = nothing ) where {T <: Number} (axes(xs) == axes(ys)) || throw(DimensionMismatch("Dimensions of x ($(axes(xs))) and y ($(axes(ys))) does not match.")) output_xs = similar(xs) output_ys = similar(xs) - inverted_poisson_2d_jacobi_step!(output_xs, output_ys, xs, ys) + inverted_poisson_2d_jacobi_step!(output_xs, output_ys, xs, ys, P, Q) return output_xs, output_ys end -function inverted_poisson_2d_jacobi_step!(output_xs::Matrix{T}, output_ys::Matrix{T}, xs::Matrix{T}, ys::Matrix{T}) where {T <: Number} +function inverted_poisson_2d_jacobi_step!(output_xs::Matrix{T}, output_ys::Matrix{T}, + xs::Matrix{T}, ys::Matrix{T}, + P::Union{Nothing, Function} = nothing , + Q::Union{Nothing, Function} = nothing ) where {T <: Number} (axes(output_xs) == axes(output_ys) == axes(xs) == axes(ys)) || throw(DimensionMismatch("Dimensions of input ($((axes(xs), axes(ys))) and output ($((axes(output_xs), axes(output_ys)))) are not compatible")) M = [l-1 for l in size(xs)] - - begin # neighboring x's - x_l(u::CartesianIndex) = u[1] == axes(xs)[1][begin] ? zero(eltype(xs)) : xs[u-CartesianIndex(1,0)] - x_r(u::CartesianIndex) = u[1] == axes(xs)[1][ end ] ? zero(eltype(xs)) : xs[u+CartesianIndex(1,0)] - x_d(u::CartesianIndex) = u[2] == axes(xs)[2][begin] ? zero(eltype(xs)) : xs[u-CartesianIndex(0,1)] - x_u(u::CartesianIndex) = u[2] == axes(xs)[2][ end ] ? zero(eltype(xs)) : xs[u+CartesianIndex(0,1)] - xld(u::CartesianIndex) = u[1] == axes(xs)[1][begin] || u[2] == axes(xs)[2][begin] ? zero(eltype(xs)) : xs[u+CartesianIndex(-1,-1)] - xrd(u::CartesianIndex) = u[1] == axes(xs)[1][ end ] || u[2] == axes(xs)[2][begin] ? zero(eltype(xs)) : xs[u+CartesianIndex( 1,-1)] - xlu(u::CartesianIndex) = u[2] == axes(xs)[1][begin] || u[2] == axes(xs)[2][ end ] ? zero(eltype(xs)) : xs[u+CartesianIndex(-1, 1)] - xru(u::CartesianIndex) = u[2] == axes(xs)[1][ end ] || u[2] == axes(xs)[2][ end ] ? zero(eltype(xs)) : xs[u+CartesianIndex( 1, 1)] + "neighboring x's"; begin + @inline x_l(u::CartesianIndex) = u[1] == axes(xs)[1][begin] ? zero(eltype(xs)) : xs[u+CartesianIndex(-1, 0)] + @inline x_r(u::CartesianIndex) = u[1] == axes(xs)[1][ end ] ? zero(eltype(xs)) : xs[u+CartesianIndex( 1, 0)] + @inline x_d(u::CartesianIndex) = u[2] == axes(xs)[2][begin] ? zero(eltype(xs)) : xs[u+CartesianIndex( 0,-1)] + @inline x_u(u::CartesianIndex) = u[2] == axes(xs)[2][ end ] ? zero(eltype(xs)) : xs[u+CartesianIndex( 0, 1)] + @inline xld(u::CartesianIndex) = u[1] == axes(xs)[1][begin] || u[2] == axes(xs)[2][begin] ? zero(eltype(xs)) : xs[u+CartesianIndex(-1,-1)] + @inline xrd(u::CartesianIndex) = u[1] == axes(xs)[1][ end ] || u[2] == axes(xs)[2][begin] ? zero(eltype(xs)) : xs[u+CartesianIndex( 1,-1)] + @inline xlu(u::CartesianIndex) = u[2] == axes(xs)[1][begin] || u[2] == axes(xs)[2][ end ] ? zero(eltype(xs)) : xs[u+CartesianIndex(-1, 1)] + @inline xru(u::CartesianIndex) = u[2] == axes(xs)[1][ end ] || u[2] == axes(xs)[2][ end ] ? zero(eltype(xs)) : xs[u+CartesianIndex( 1, 1)] + end + "neighboring y's"; begin + @inline y_l(u::CartesianIndex) = u[1] == axes(ys)[1][begin] ? zero(eltype(ys)) : ys[u+CartesianIndex(-1, 0)] + @inline y_r(u::CartesianIndex) = u[1] == axes(ys)[1][ end ] ? zero(eltype(ys)) : ys[u+CartesianIndex( 1, 0)] + @inline y_d(u::CartesianIndex) = u[2] == axes(ys)[2][begin] ? zero(eltype(ys)) : ys[u+CartesianIndex( 0,-1)] + @inline y_u(u::CartesianIndex) = u[2] == axes(ys)[2][ end ] ? zero(eltype(ys)) : ys[u+CartesianIndex( 0, 1)] + @inline yld(u::CartesianIndex) = u[1] == axes(ys)[1][begin] || u[2] == axes(ys)[2][begin] ? zero(eltype(ys)) : ys[u+CartesianIndex(-1,-1)] + @inline yrd(u::CartesianIndex) = u[1] == axes(ys)[1][ end ] || u[2] == axes(ys)[2][begin] ? zero(eltype(ys)) : ys[u+CartesianIndex( 1,-1)] + @inline ylu(u::CartesianIndex) = u[2] == axes(ys)[1][begin] || u[2] == axes(ys)[2][ end ] ? zero(eltype(ys)) : ys[u+CartesianIndex(-1, 1)] + @inline yru(u::CartesianIndex) = u[2] == axes(ys)[1][ end ] || u[2] == axes(ys)[2][ end ] ? zero(eltype(ys)) : ys[u+CartesianIndex( 1, 1)] end - begin # neiboring y's - y_l(u::CartesianIndex) = u[1] == axes(ys)[1][begin] ? zero(eltype(ys)) : ys[u-CartesianIndex(1,0)] - y_r(u::CartesianIndex) = u[1] == axes(ys)[1][ end ] ? zero(eltype(ys)) : ys[u+CartesianIndex(1,0)] - y_d(u::CartesianIndex) = u[2] == axes(ys)[2][begin] ? zero(eltype(ys)) : ys[u-CartesianIndex(0,1)] - y_u(u::CartesianIndex) = u[2] == axes(ys)[2][ end ] ? zero(eltype(ys)) : ys[u+CartesianIndex(0,1)] - yld(u::CartesianIndex) = u[1] == axes(ys)[1][begin] || u[2] == axes(ys)[2][begin] ? zero(eltype(ys)) : ys[u+CartesianIndex(-1,-1)] - yrd(u::CartesianIndex) = u[1] == axes(ys)[1][ end ] || u[2] == axes(ys)[2][begin] ? zero(eltype(ys)) : ys[u+CartesianIndex( 1,-1)] - ylu(u::CartesianIndex) = u[2] == axes(ys)[1][begin] || u[2] == axes(ys)[2][ end ] ? zero(eltype(ys)) : ys[u+CartesianIndex(-1, 1)] - yru(u::CartesianIndex) = u[2] == axes(ys)[1][ end ] || u[2] == axes(ys)[2][ end ] ? zero(eltype(ys)) : ys[u+CartesianIndex( 1, 1)] + "1-order diffs"; begin + @inline ∂xξ(u::CartesianIndex) = M[1]/2 * (x_r(u) - x_l(u)) + @inline ∂xη(u::CartesianIndex) = M[2]/2 * (x_u(u) - x_d(u)) + @inline ∂yξ(u::CartesianIndex) = M[1]/2 * (y_r(u) - y_l(u)) + @inline ∂yη(u::CartesianIndex) = M[2]/2 * (y_u(u) - y_d(u)) end - begin # 1-order diffs - ∂xξ(u::CartesianIndex) = M[1]/2 * (x_r(u) - x_l(u)) - ∂xη(u::CartesianIndex) = M[2]/2 * (x_u(u) - x_d(u)) - ∂yξ(u::CartesianIndex) = M[1]/2 * (y_r(u) - y_l(u)) - ∂yη(u::CartesianIndex) = M[2]/2 * (y_u(u) - y_d(u)) + "2-order diffs"; begin + @inline α( u::CartesianIndex) = ∂xη(u)^2 + ∂yη(u)^2 + @inline β( u::CartesianIndex) = ∂xξ(u)*∂xη(u) + ∂yξ(u)*∂yη(u) + @inline γ( u::CartesianIndex) = ∂xξ(u)^2 + ∂yξ(u)^2 + @inline bh(u::CartesianIndex) = M[1]^2 * α(u) + @inline bv(u::CartesianIndex) = M[2]^2 * γ(u) + @inline bp(u::CartesianIndex) = (bh(u) + bv(u)) * 2 + @inline cx(u::CartesianIndex) = -M[1]*M[2]/2 * β(u) * (xld(u) - xrd(u) - xlu(u) + xru(u)) + @inline cy(u::CartesianIndex) = -M[1]*M[2]/2 * β(u) * (yld(u) - yrd(u) - ylu(u) + yru(u)) end - begin # 2-order diffs - α(u::CartesianIndex) = ∂xη(u)^2 + ∂yη(u)^2 - β(u::CartesianIndex) = ∂xξ(u)*∂xη(u) + ∂yξ(u)*∂yη(u) - γ(u::CartesianIndex) = ∂xξ(u)^2 + ∂yξ(u)^2 - bh(u::CartesianIndex) = M[1]^2 * α(u) - bv(u::CartesianIndex) = M[2]^2 * γ(u) - bp(u::CartesianIndex) = 2 * (bh(u) + bv(u)) - cx(u::CartesianIndex) = - M[1]*M[2]/2 * β(u) * (xld(u) - xrd(u) - xlu(u) + xru(u)) - cy(u::CartesianIndex) = - M[1]*M[2]/2 * β(u) * (yld(u) - yrd(u) - ylu(u) + yru(u)) + "source related terms"; begin + @inline sx(u::CartesianIndex) = (typeof(P) <: Nothing ? 0 : α(u)*P(u)*∂xξ(u)) + (typeof(Q) <: Nothing ? 0 : γ(u)*Q(u)*∂xη(u)) + @inline sy(u::CartesianIndex) = (typeof(P) <: Nothing ? 0 : α(u)*P(u)*∂yξ(u)) + (typeof(Q) <: Nothing ? 0 : γ(u)*Q(u)*∂yη(u)) end - for u in CartesianIndices(xs) - output_xs[u] = (bh(u)*(x_l(u) + x_r(u)) + bv(u)*(x_d(u) + x_u(u)) + cx(u)) / bp(u) - output_ys[u] = (bh(u)*(y_l(u) + y_r(u)) + bv(u)*(y_d(u) + y_u(u)) + cy(u)) / bp(u) + "actual computation" + Threads.@threads for u in CartesianIndices(xs)[begin+1:end-1, begin+1:end-1] # this is good enough for a fixed dirichlet boundary + output_xs[u] = (bh(u)*(x_l(u) + x_r(u)) + bv(u)*(x_d(u) + x_u(u)) + cx(u) + sx(u)) / bp(u) + output_ys[u] = (bh(u)*(y_l(u) + y_r(u)) + bv(u)*(y_d(u) + y_u(u)) + cy(u) + sy(u)) / bp(u) end return output_xs, output_ys end @@ -84,19 +93,25 @@ end """ Work in progress. """ -function inverted_poisson_2d_jacobi_iterate(xs::Matrix{T}, ys::Matrix{T}, ε=1e-10) +function inverted_poisson_2d_jacobi_iterate( xs::Matrix{T}, ys::Matrix{T}, ε::Float=1e-10 , + P::Union{Nothing, Function} = nothing , + Q::Union{Nothing, Function} = nothing ) where {T <: Number} cache_xs = xs cache_ys = ys - inverted_poisson_2d_jacobi_iterate!(cache_xs, cache_ys) + inverted_poisson_2d_jacobi_iterate!(cache_xs, cache_ys, ε, P, Q) return cache_xs, cache_ys end -function inverted_poisson_2d_jacobi_iterate!(xs::Matrix{T}, ys::Matrix{T}, ε=1e-10) - cache_xs = similar(xs) - cache_ys = similar(xs) - residue() = max(norm(cache_xs - xs), norm(cache_ys - ys)) +function inverted_poisson_2d_jacobi_iterate!(xs::Matrix{T}, ys::Matrix{T}, ε::Float=1e-10 , + P::Union{Nothing, Function} = nothing , + Q::Union{Nothing, Function} = nothing , + cache_xs::Union{Nothing, Matrix{T}} = nothing, + cache_ys::Union{Nothing, Matrix{T}} = nothing) where {T <: Number} + !(typeof(cache_xs) <: Nothing) || cache_xs = similar(xs) + !(typeof(cache_ys) <: Nothing) || cache_ys = similar(xs) + @inline residue() = max(norm(cache_xs - xs), norm(cache_ys - ys)) while residue() > ε - inverted_poisson_2d_jacobi_step!(cache_xs, cache_ys, xs, ys) - inverted_poisson_2d_jacobi_step!(xs, ys, cache_xs, cache_ys) + inverted_poisson_2d_jacobi_step!(cache_xs, cache_ys, xs, ys, P, Q) + inverted_poisson_2d_jacobi_step!(xs, ys, cache_xs, cache_ys, P, Q) end return xs, ys end From 9fe4f7f5b0e5d93332bd700e3064c630cd37bae4 Mon Sep 17 00:00:00 2001 From: Gravifer Date: Tue, 4 May 2021 13:32:48 +0800 Subject: [PATCH 02/16] style: stylize `elliptic-grid-gen.jl` --- Project-1/src/elliptic-grid-gen.jl | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/Project-1/src/elliptic-grid-gen.jl b/Project-1/src/elliptic-grid-gen.jl index b72ccc8..97a80b8 100644 --- a/Project-1/src/elliptic-grid-gen.jl +++ b/Project-1/src/elliptic-grid-gen.jl @@ -69,18 +69,18 @@ function inverted_poisson_2d_jacobi_step!(output_xs::Matrix{T}, output_ys::Matri @inline ∂yη(u::CartesianIndex) = M[2]/2 * (y_u(u) - y_d(u)) end "2-order diffs"; begin - @inline α( u::CartesianIndex) = ∂xη(u)^2 + ∂yη(u)^2 - @inline β( u::CartesianIndex) = ∂xξ(u)*∂xη(u) + ∂yξ(u)*∂yη(u) - @inline γ( u::CartesianIndex) = ∂xξ(u)^2 + ∂yξ(u)^2 - @inline bh(u::CartesianIndex) = M[1]^2 * α(u) - @inline bv(u::CartesianIndex) = M[2]^2 * γ(u) - @inline bp(u::CartesianIndex) = (bh(u) + bv(u)) * 2 - @inline cx(u::CartesianIndex) = -M[1]*M[2]/2 * β(u) * (xld(u) - xrd(u) - xlu(u) + xru(u)) - @inline cy(u::CartesianIndex) = -M[1]*M[2]/2 * β(u) * (yld(u) - yrd(u) - ylu(u) + yru(u)) + @inline α( u::CartesianIndex) = ∂xη(u)^2 + ∂yη(u)^2 + @inline β( u::CartesianIndex) = ∂xξ(u)*∂xη(u) + ∂yξ(u)*∂yη(u) + @inline γ( u::CartesianIndex) = ∂xξ(u)^2 + ∂yξ(u)^2 + @inline bh( u::CartesianIndex) = M[1]^2 * α(u) + @inline bv( u::CartesianIndex) = M[2]^2 * γ(u) + @inline bp( u::CartesianIndex) = (bh(u) + bv(u)) * 2 + @inline cx( u::CartesianIndex) = -M[1]*M[2]/2 * β(u) * (xld(u) - xrd(u) - xlu(u) + xru(u)) + @inline cy( u::CartesianIndex) = -M[1]*M[2]/2 * β(u) * (yld(u) - yrd(u) - ylu(u) + yru(u)) end "source related terms"; begin - @inline sx(u::CartesianIndex) = (typeof(P) <: Nothing ? 0 : α(u)*P(u)*∂xξ(u)) + (typeof(Q) <: Nothing ? 0 : γ(u)*Q(u)*∂xη(u)) - @inline sy(u::CartesianIndex) = (typeof(P) <: Nothing ? 0 : α(u)*P(u)*∂yξ(u)) + (typeof(Q) <: Nothing ? 0 : γ(u)*Q(u)*∂yη(u)) + @inline sx( u::CartesianIndex) = (typeof(P) <: Nothing ? 0 : α(u)*P(u)*∂xξ(u)) + (typeof(Q) <: Nothing ? 0 : γ(u)*Q(u)*∂xη(u)) + @inline sy( u::CartesianIndex) = (typeof(P) <: Nothing ? 0 : α(u)*P(u)*∂yξ(u)) + (typeof(Q) <: Nothing ? 0 : γ(u)*Q(u)*∂yη(u)) end "actual computation" Threads.@threads for u in CartesianIndices(xs)[begin+1:end-1, begin+1:end-1] # this is good enough for a fixed dirichlet boundary From 60f2811ceef06142a5ded02d8c072421fa7258b6 Mon Sep 17 00:00:00 2001 From: Gravifer Date: Tue, 4 May 2021 14:11:31 +0800 Subject: [PATCH 03/16] doc: change `transfinite-interpolate.jl` docstring. --- Project-1/src/transfinite-interpolate.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Project-1/src/transfinite-interpolate.jl b/Project-1/src/transfinite-interpolate.jl index 779a7ad..6173e27 100644 --- a/Project-1/src/transfinite-interpolate.jl +++ b/Project-1/src/transfinite-interpolate.jl @@ -90,7 +90,7 @@ TODO: generalize to higher dimensions. # Arguments - `v_lo::Tuple{Vector{<: Real}, Vector{<: Real}}`: a pair of vectors. - `v_hi::Tuple{Vector{<: Real}, Vector{<: Real}}`: a pair of vectors. -- `v_cr::SMatrix{2, 2, <: Real} = nothing`: (optional) values to take at the corners; +- `v_cr::SMatrix{2, 2, <: Real}`: (optional) values to take at the corners; use average of edge values if not provided. Still, in practical use you should make sure the ends of the edges meet. From 4a5a7ce3dd886fffc48e14528fb99ee24b78f9fb Mon Sep 17 00:00:00 2001 From: Gravifer Date: Tue, 4 May 2021 14:41:05 +0800 Subject: [PATCH 04/16] doc: draft documentation of inverted_poisson_2d_jacobi_* [skip ci] --- Project-1/src/elliptic-grid-gen.jl | 78 +++++++++++++++++++++++------- 1 file changed, 61 insertions(+), 17 deletions(-) diff --git a/Project-1/src/elliptic-grid-gen.jl b/Project-1/src/elliptic-grid-gen.jl index 97a80b8..863f78b 100644 --- a/Project-1/src/elliptic-grid-gen.jl +++ b/Project-1/src/elliptic-grid-gen.jl @@ -23,11 +23,31 @@ module elliptic_grid_gen using LinearAlgebra """ -Work in progress. + inverted_poisson_2d_jacobi_step(xs, ys[, P, Q]) + inverted_poisson_2d_jacobi_step!(output_xs, output_ys, xs, ys[, P, Q]) + +Take a Jacobi step for an array-pair represented 2d grid. + +TODO: generalize to higher dimensions. + +# Arguments +- `xs::Matrix{<: Number}`: array of `x`-coordinates. +- `ys::Matrix{<: Number}`: array of `y`-coordinates. +- `P::Function`: (optional) `ξ` related source term. +- `Q::Function`: (optional) `η` related source term. + +# Output +- `output_xs::Matrix{<: Number}`: array of `x`-coordinates, at the next step. +- `output_ys::Matrix{<: Number}`: array of `y`-coordinates, at the next step. + +# Examples +```jldoctest +``` """ -function inverted_poisson_2d_jacobi_step( xs::Matrix{T}, ys::Matrix{T}, - P::Union{Nothing, Function} = nothing , - Q::Union{Nothing, Function} = nothing ) where {T <: Number} +function inverted_poisson_2d_jacobi_step( + xs::Matrix{T} , ys::Matrix{T} , + P::S = nothing, Q::S = nothing ) where {T <: Number, S <: Union{Nothing, Function}} + (axes(xs) == axes(ys)) || throw(DimensionMismatch("Dimensions of x ($(axes(xs))) and y ($(axes(ys))) does not match.")) output_xs = similar(xs) @@ -35,10 +55,11 @@ function inverted_poisson_2d_jacobi_step( xs::Matrix{T}, ys::Matri inverted_poisson_2d_jacobi_step!(output_xs, output_ys, xs, ys, P, Q) return output_xs, output_ys end -function inverted_poisson_2d_jacobi_step!(output_xs::Matrix{T}, output_ys::Matrix{T}, - xs::Matrix{T}, ys::Matrix{T}, - P::Union{Nothing, Function} = nothing , - Q::Union{Nothing, Function} = nothing ) where {T <: Number} +function inverted_poisson_2d_jacobi_step!( + output_xs::Matrix{T}, output_ys::Matrix{T}, + xs::Matrix{T}, ys::Matrix{T}, + P::S = nothing , Q::S = nothing ) where {T <: Number, S <: Union{Nothing, Function}} + (axes(output_xs) == axes(output_ys) == axes(xs) == axes(ys)) || throw(DimensionMismatch("Dimensions of input ($((axes(xs), axes(ys))) and output ($((axes(output_xs), axes(output_ys)))) are not compatible")) M = [l-1 for l in size(xs)] @@ -91,21 +112,44 @@ function inverted_poisson_2d_jacobi_step!(output_xs::Matrix{T}, output_ys::Matri end """ -Work in progress. + inverted_poisson_2d_jacobi_iterate(xs, ys[, P, Q]) + inverted_poisson_2d_jacobi_iterate!(xs, ys[, P, Q[, cache_xs, cache_ys]]) + +Full Jacobi relaxation of an array-pair represented 2d grid. + +TODO: generalize to higher dimensions. + +# Arguments +- `xs::Matrix{<: Number}`: array of `x`-coordinates. +- `ys::Matrix{<: Number}`: array of `y`-coordinates. +- `ε::Float=1e-10`: (optional) tolerance of residue. +- `P::Function`: (optional) `ξ` related source term. +- `Q::Function`: (optional) `η` related source term. +- `cache_xs::Matrix{<: Number}`: (optional) buffer array of `x`-coordinates. +- `cache_ys::Matrix{<: Number}`: (optional) buffer array of `y`-coordinates. + +# Output +- `output_xs::Matrix{<: Number}`: relaxed array of `x`-coordinates. +- `output_ys::Matrix{<: Number}`: relaxed array of `y`-coordinates. + +# Examples +```jldoctest +``` """ -function inverted_poisson_2d_jacobi_iterate( xs::Matrix{T}, ys::Matrix{T}, ε::Float=1e-10 , - P::Union{Nothing, Function} = nothing , - Q::Union{Nothing, Function} = nothing ) where {T <: Number} +function inverted_poisson_2d_jacobi_iterate( + xs::Matrix{T} , ys::Matrix{T} , ε::Float=1e-10, + P::S = nothing, Q::S = nothing ) where {T <: Number, S <: Union{Nothing, Function}} + cache_xs = xs cache_ys = ys inverted_poisson_2d_jacobi_iterate!(cache_xs, cache_ys, ε, P, Q) return cache_xs, cache_ys end -function inverted_poisson_2d_jacobi_iterate!(xs::Matrix{T}, ys::Matrix{T}, ε::Float=1e-10 , - P::Union{Nothing, Function} = nothing , - Q::Union{Nothing, Function} = nothing , - cache_xs::Union{Nothing, Matrix{T}} = nothing, - cache_ys::Union{Nothing, Matrix{T}} = nothing) where {T <: Number} +function inverted_poisson_2d_jacobi_iterate!( + xs::Matrix{T} , ys::Matrix{T} , ε::Float=1e-10, + P::S = nothing, Q::S = nothing, + cache_xs::R = nothing, cache_ys::R = nothing) where {T <: Number, S <: Union{Nothing, Function}, R <: Union{Nothing, Matrix{T}}} + !(typeof(cache_xs) <: Nothing) || cache_xs = similar(xs) !(typeof(cache_ys) <: Nothing) || cache_ys = similar(xs) @inline residue() = max(norm(cache_xs - xs), norm(cache_ys - ys)) From 8e9029e8b164dc3c06b7f577bec33fbc9bd77d4a Mon Sep 17 00:00:00 2001 From: Gravifer Date: Tue, 4 May 2021 16:09:50 +0800 Subject: [PATCH 05/16] feat: add `ProgressMeter.jl` as dependency. [skip ci] --- Manifest.toml | 4 ++-- Project.toml | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/Manifest.toml b/Manifest.toml index 4248c4e..5bf3e93 100644 --- a/Manifest.toml +++ b/Manifest.toml @@ -1348,9 +1348,9 @@ uuid = "de0858da-6303-5e67-8744-51eddeeeb8d7" [[ProgressMeter]] deps = ["Distributed", "Printf"] -git-tree-sha1 = "6e9c89cba09f6ef134b00e10625590746ba1e036" +git-tree-sha1 = "d85d8f0339a9937afac93e152c76f4745b386202" uuid = "92933f4c-e287-5a05-a399-4b506db050ca" -version = "1.5.0" +version = "1.6.0" [[Qt5Base_jll]] deps = ["Artifacts", "CompilerSupportLibraries_jll", "Fontconfig_jll", "Glib_jll", "JLLWrappers", "Libdl", "Libglvnd_jll", "OpenSSL_jll", "Pkg", "Xorg_libXext_jll", "Xorg_libxcb_jll", "Xorg_xcb_util_image_jll", "Xorg_xcb_util_keysyms_jll", "Xorg_xcb_util_renderutil_jll", "Xorg_xcb_util_wm_jll", "Zlib_jll", "xkbcommon_jll"] diff --git a/Project.toml b/Project.toml index 66425dd..58b9cdd 100644 --- a/Project.toml +++ b/Project.toml @@ -40,6 +40,7 @@ Parameters = "d96e819e-fc66-5662-9728-84c9c7592b0a" PlotThemes = "ccf2f8ad-2431-5c83-bf29-c5338b663b6a" Pluto = "c3e4b0f8-55cb-11ea-2926-15256bba5781" Polynomials = "f27b6e38-b328-58d1-80ce-0feddd5e7a45" +ProgressMeter = "92933f4c-e287-5a05-a399-4b506db050ca" Query = "1a8c2f83-1ff3-5112-b086-8aa67b057ba1" Random = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" ReferenceFrameRotations = "74f56ac7-18b3-5285-802d-d4bd4f104033" From fc5f2458bb631101ee76288121f5c9d240b4c2fb Mon Sep 17 00:00:00 2001 From: Gravifer Date: Tue, 4 May 2021 22:46:13 +0800 Subject: [PATCH 06/16] feat: elliptic grid generation is now basically working. This commit is helpful for issue #3. --- Project-1/src/elliptic-grid-gen.jl | 31 +++++++++++++++++++++--------- 1 file changed, 22 insertions(+), 9 deletions(-) diff --git a/Project-1/src/elliptic-grid-gen.jl b/Project-1/src/elliptic-grid-gen.jl index 863f78b..89d4cdd 100644 --- a/Project-1/src/elliptic-grid-gen.jl +++ b/Project-1/src/elliptic-grid-gen.jl @@ -20,7 +20,7 @@ module elliptic_grid_gen -using LinearAlgebra +using LinearAlgebra, ProgressMeter """ inverted_poisson_2d_jacobi_step(xs, ys[, P, Q]) @@ -51,7 +51,7 @@ function inverted_poisson_2d_jacobi_step( (axes(xs) == axes(ys)) || throw(DimensionMismatch("Dimensions of x ($(axes(xs))) and y ($(axes(ys))) does not match.")) output_xs = similar(xs) - output_ys = similar(xs) + output_ys = similar(ys) inverted_poisson_2d_jacobi_step!(output_xs, output_ys, xs, ys, P, Q) return output_xs, output_ys end @@ -104,6 +104,14 @@ function inverted_poisson_2d_jacobi_step!( @inline sy( u::CartesianIndex) = (typeof(P) <: Nothing ? 0 : α(u)*P(u)*∂yξ(u)) + (typeof(Q) <: Nothing ? 0 : γ(u)*Q(u)*∂yη(u)) end "actual computation" + for u in CartesianIndices(xs)[[begin end], :] + output_xs[u] = xs[u] + output_ys[u] = ys[u] + end + for u in CartesianIndices(xs)[:, [begin end]] + output_xs[u] = xs[u] + output_ys[u] = ys[u] + end Threads.@threads for u in CartesianIndices(xs)[begin+1:end-1, begin+1:end-1] # this is good enough for a fixed dirichlet boundary output_xs[u] = (bh(u)*(x_l(u) + x_r(u)) + bv(u)*(x_d(u) + x_u(u)) + cx(u) + sx(u)) / bp(u) output_ys[u] = (bh(u)*(y_l(u) + y_r(u)) + bv(u)*(y_d(u) + y_u(u)) + cy(u) + sy(u)) / bp(u) @@ -122,7 +130,7 @@ TODO: generalize to higher dimensions. # Arguments - `xs::Matrix{<: Number}`: array of `x`-coordinates. - `ys::Matrix{<: Number}`: array of `y`-coordinates. -- `ε::Float=1e-10`: (optional) tolerance of residue. +- `ε::Float64=1e-10`: (optional) tolerance of residue. - `P::Function`: (optional) `ξ` related source term. - `Q::Function`: (optional) `η` related source term. - `cache_xs::Matrix{<: Number}`: (optional) buffer array of `x`-coordinates. @@ -137,7 +145,7 @@ TODO: generalize to higher dimensions. ``` """ function inverted_poisson_2d_jacobi_iterate( - xs::Matrix{T} , ys::Matrix{T} , ε::Float=1e-10, + xs::Matrix{T} , ys::Matrix{T} , ε::Float64=1e-10, P::S = nothing, Q::S = nothing ) where {T <: Number, S <: Union{Nothing, Function}} cache_xs = xs @@ -146,16 +154,21 @@ function inverted_poisson_2d_jacobi_iterate( return cache_xs, cache_ys end function inverted_poisson_2d_jacobi_iterate!( - xs::Matrix{T} , ys::Matrix{T} , ε::Float=1e-10, + xs::Matrix{T} , ys::Matrix{T} , ε::Float64=1e-10, P::S = nothing, Q::S = nothing, cache_xs::R = nothing, cache_ys::R = nothing) where {T <: Number, S <: Union{Nothing, Function}, R <: Union{Nothing, Matrix{T}}} - !(typeof(cache_xs) <: Nothing) || cache_xs = similar(xs) - !(typeof(cache_ys) <: Nothing) || cache_ys = similar(xs) + !(typeof(cache_xs) <: Nothing) || (cache_xs = similar(xs)) + !(typeof(cache_ys) <: Nothing) || (cache_ys = similar(xs)) @inline residue() = max(norm(cache_xs - xs), norm(cache_ys - ys)) + @inline steppair()=(inverted_poisson_2d_jacobi_step!(cache_xs, cache_ys, xs, ys, P, Q); + inverted_poisson_2d_jacobi_step!(xs, ys, cache_xs, cache_ys, P, Q)) + steppair() + prog = ProgressThresh(ε, "Elliptic relaxation:") while residue() > ε - inverted_poisson_2d_jacobi_step!(cache_xs, cache_ys, xs, ys, P, Q) - inverted_poisson_2d_jacobi_step!(xs, ys, cache_xs, cache_ys, P, Q) + ProgressMeter.update!(prog, residue()) + sleep(0.1) + steppair() end return xs, ys end From 946cbd9618bd2627884a9937e055e5ab7effd60b Mon Sep 17 00:00:00 2001 From: Gravifer Date: Tue, 4 May 2021 22:59:21 +0800 Subject: [PATCH 07/16] chore: update Code config [skip ci] --- .vscode/settings.json | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index ea71ab1..26db6a1 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -47,6 +47,10 @@ "git.fetchOnPull": true, "git.useCommitInputAsStashMessage": true, "cSpell.words": [ - "eltype" + "eltype", + "myblue", + "println", + "xlims", + "ylims" ] } \ No newline at end of file From c28b2d30c56de5d9962ce2835e806c4bd35510ee Mon Sep 17 00:00:00 2001 From: Gravifer Date: Tue, 4 May 2021 23:57:37 +0800 Subject: [PATCH 08/16] fix: a minor indexation problem; did not effect results [skip ci] --- Project-1/src/elliptic-grid-gen.jl | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/Project-1/src/elliptic-grid-gen.jl b/Project-1/src/elliptic-grid-gen.jl index 89d4cdd..6df767c 100644 --- a/Project-1/src/elliptic-grid-gen.jl +++ b/Project-1/src/elliptic-grid-gen.jl @@ -70,8 +70,8 @@ function inverted_poisson_2d_jacobi_step!( @inline x_u(u::CartesianIndex) = u[2] == axes(xs)[2][ end ] ? zero(eltype(xs)) : xs[u+CartesianIndex( 0, 1)] @inline xld(u::CartesianIndex) = u[1] == axes(xs)[1][begin] || u[2] == axes(xs)[2][begin] ? zero(eltype(xs)) : xs[u+CartesianIndex(-1,-1)] @inline xrd(u::CartesianIndex) = u[1] == axes(xs)[1][ end ] || u[2] == axes(xs)[2][begin] ? zero(eltype(xs)) : xs[u+CartesianIndex( 1,-1)] - @inline xlu(u::CartesianIndex) = u[2] == axes(xs)[1][begin] || u[2] == axes(xs)[2][ end ] ? zero(eltype(xs)) : xs[u+CartesianIndex(-1, 1)] - @inline xru(u::CartesianIndex) = u[2] == axes(xs)[1][ end ] || u[2] == axes(xs)[2][ end ] ? zero(eltype(xs)) : xs[u+CartesianIndex( 1, 1)] + @inline xlu(u::CartesianIndex) = u[1] == axes(xs)[1][begin] || u[2] == axes(xs)[2][ end ] ? zero(eltype(xs)) : xs[u+CartesianIndex(-1, 1)] + @inline xru(u::CartesianIndex) = u[1] == axes(xs)[1][ end ] || u[2] == axes(xs)[2][ end ] ? zero(eltype(xs)) : xs[u+CartesianIndex( 1, 1)] end "neighboring y's"; begin @inline y_l(u::CartesianIndex) = u[1] == axes(ys)[1][begin] ? zero(eltype(ys)) : ys[u+CartesianIndex(-1, 0)] @@ -80,8 +80,8 @@ function inverted_poisson_2d_jacobi_step!( @inline y_u(u::CartesianIndex) = u[2] == axes(ys)[2][ end ] ? zero(eltype(ys)) : ys[u+CartesianIndex( 0, 1)] @inline yld(u::CartesianIndex) = u[1] == axes(ys)[1][begin] || u[2] == axes(ys)[2][begin] ? zero(eltype(ys)) : ys[u+CartesianIndex(-1,-1)] @inline yrd(u::CartesianIndex) = u[1] == axes(ys)[1][ end ] || u[2] == axes(ys)[2][begin] ? zero(eltype(ys)) : ys[u+CartesianIndex( 1,-1)] - @inline ylu(u::CartesianIndex) = u[2] == axes(ys)[1][begin] || u[2] == axes(ys)[2][ end ] ? zero(eltype(ys)) : ys[u+CartesianIndex(-1, 1)] - @inline yru(u::CartesianIndex) = u[2] == axes(ys)[1][ end ] || u[2] == axes(ys)[2][ end ] ? zero(eltype(ys)) : ys[u+CartesianIndex( 1, 1)] + @inline ylu(u::CartesianIndex) = u[1] == axes(ys)[1][begin] || u[2] == axes(ys)[2][ end ] ? zero(eltype(ys)) : ys[u+CartesianIndex(-1, 1)] + @inline yru(u::CartesianIndex) = u[1] == axes(ys)[1][ end ] || u[2] == axes(ys)[2][ end ] ? zero(eltype(ys)) : ys[u+CartesianIndex( 1, 1)] end "1-order diffs"; begin @inline ∂xξ(u::CartesianIndex) = M[1]/2 * (x_r(u) - x_l(u)) @@ -145,30 +145,34 @@ TODO: generalize to higher dimensions. ``` """ function inverted_poisson_2d_jacobi_iterate( - xs::Matrix{T} , ys::Matrix{T} , ε::Float64=1e-10, - P::S = nothing, Q::S = nothing ) where {T <: Number, S <: Union{Nothing, Function}} + xs::Matrix{T} , ys::Matrix{T} , ε::Float64=1e-10, maxiter::Union{Nothing, Int}=nothing, + P::S = nothing, Q::S = nothing, + normp::Real = 2 ) where {T <: Number, S <: Union{Nothing, Function}} cache_xs = xs cache_ys = ys - inverted_poisson_2d_jacobi_iterate!(cache_xs, cache_ys, ε, P, Q) + inverted_poisson_2d_jacobi_iterate!(cache_xs, cache_ys, ε, maxiter, P, Q, normp) return cache_xs, cache_ys end function inverted_poisson_2d_jacobi_iterate!( - xs::Matrix{T} , ys::Matrix{T} , ε::Float64=1e-10, + xs::Matrix{T} , ys::Matrix{T} , ε::Float64=1e-10, maxiter::Union{Nothing, Int}=nothing, P::S = nothing, Q::S = nothing, - cache_xs::R = nothing, cache_ys::R = nothing) where {T <: Number, S <: Union{Nothing, Function}, R <: Union{Nothing, Matrix{T}}} + cache_xs::R = nothing, cache_ys::R = nothing, + normp::Real = 2 ) where {T <: Number, S <: Union{Nothing, Function}, R <: Union{Nothing, Matrix{T}}} !(typeof(cache_xs) <: Nothing) || (cache_xs = similar(xs)) !(typeof(cache_ys) <: Nothing) || (cache_ys = similar(xs)) - @inline residue() = max(norm(cache_xs - xs), norm(cache_ys - ys)) + @inline residue() = max(norm(cache_xs - xs, normp), norm(cache_ys - ys, normp)) @inline steppair()=(inverted_poisson_2d_jacobi_step!(cache_xs, cache_ys, xs, ys, P, Q); inverted_poisson_2d_jacobi_step!(xs, ys, cache_xs, cache_ys, P, Q)) steppair() - prog = ProgressThresh(ε, "Elliptic relaxation:") + prog = ProgressThresh(ε, desc="Elliptic relaxation:", showspeed=true) + generate_showvalues(iter) = () -> [(:iter,iter)] while residue() > ε ProgressMeter.update!(prog, residue()) sleep(0.1) steppair() + ProgressMeter.next!(p; showvalues = generate_showvalues(iter)) end return xs, ys end From bb8d791ee892c00fd8334485a02e66abdc17a4b9 Mon Sep 17 00:00:00 2001 From: Gravifer Date: Tue, 4 May 2021 23:58:16 +0800 Subject: [PATCH 09/16] chore: update Code config [skip ci] --- .vscode/settings.json | 1 + 1 file changed, 1 insertion(+) diff --git a/.vscode/settings.json b/.vscode/settings.json index 26db6a1..07723d3 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -49,6 +49,7 @@ "cSpell.words": [ "eltype", "myblue", + "normp", "println", "xlims", "ylims" From 754daf3f97ac26433e39e9f2d9f65c2fb2bc7991 Mon Sep 17 00:00:00 2001 From: Gravifer Date: Wed, 5 May 2021 01:48:30 +0800 Subject: [PATCH 10/16] refactor: attempt to handle orthogonality directly. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The attempt is not effective; need serious effort attacking this with suitable source terms (基于源项的网格加密 #7). BREAKING_CHANGE --- Project-1/src/elliptic-grid-gen.jl | 59 +++++++++++++++++++----------- 1 file changed, 38 insertions(+), 21 deletions(-) diff --git a/Project-1/src/elliptic-grid-gen.jl b/Project-1/src/elliptic-grid-gen.jl index 6df767c..9f33201 100644 --- a/Project-1/src/elliptic-grid-gen.jl +++ b/Project-1/src/elliptic-grid-gen.jl @@ -46,19 +46,21 @@ TODO: generalize to higher dimensions. """ function inverted_poisson_2d_jacobi_step( xs::Matrix{T} , ys::Matrix{T} , - P::S = nothing, Q::S = nothing ) where {T <: Number, S <: Union{Nothing, Function}} + P::S = nothing, Q::S = nothing, + boundaray_ortho_factor::Union{Nothing, Float64}=nothing) where {T <: Number, S <: Union{Nothing, Function}} (axes(xs) == axes(ys)) || throw(DimensionMismatch("Dimensions of x ($(axes(xs))) and y ($(axes(ys))) does not match.")) output_xs = similar(xs) output_ys = similar(ys) - inverted_poisson_2d_jacobi_step!(output_xs, output_ys, xs, ys, P, Q) + inverted_poisson_2d_jacobi_step!(output_xs, output_ys, xs, ys, P, Q, boundaray_ortho_factor) return output_xs, output_ys end function inverted_poisson_2d_jacobi_step!( output_xs::Matrix{T}, output_ys::Matrix{T}, xs::Matrix{T}, ys::Matrix{T}, - P::S = nothing , Q::S = nothing ) where {T <: Number, S <: Union{Nothing, Function}} + P::S = nothing , Q::S = nothing , + boundaray_ortho_factor::Union{Nothing, Float64}=nothing) where {T <: Number, S <: Union{Nothing, Function}} (axes(output_xs) == axes(output_ys) == axes(xs) == axes(ys)) || throw(DimensionMismatch("Dimensions of input ($((axes(xs), axes(ys))) and output ($((axes(output_xs), axes(output_ys)))) are not compatible")) @@ -88,6 +90,16 @@ function inverted_poisson_2d_jacobi_step!( @inline ∂xη(u::CartesianIndex) = M[2]/2 * (x_u(u) - x_d(u)) @inline ∂yξ(u::CartesianIndex) = M[1]/2 * (y_r(u) - y_l(u)) @inline ∂yη(u::CartesianIndex) = M[2]/2 * (y_u(u) - y_d(u)) + doBO = (typeof(boundaray_ortho_factor) <: Nothing) + doBO || (bof = boundaray_ortho_factor) + @inline ∂xξ_m(u::CartesianIndex) = doBO && u[1] in axes(xs)[1][[begin:begin+1, end-1 : end ]] ? + bof*(-∂xη(u))/sqrt(∂xη(u)^2+∂yη(u)^2) : ∂xξ(u) + @inline ∂xη_m(u::CartesianIndex) = doBO && u[2] in axes(xs)[2][[begin:begin+1, end-1 : end ]] ? + bof*(-∂xξ(u))/sqrt(∂xξ(u)^2+∂yξ(u)^2) : ∂xη(u) + @inline ∂yξ_m(u::CartesianIndex) = doBO && u[1] in axes(ys)[1][[begin:begin+1, end-1 : end ]] ? + bof*(-∂yη(u))/sqrt(∂xη(u)^2+∂yη(u)^2) : ∂yξ(u) + @inline ∂yη_m(u::CartesianIndex) = doBO && u[2] in axes(ys)[2][[begin:begin+1, end-1 : end ]] ? + bof*(-∂yξ(u))/sqrt(∂xξ(u)^2+∂yξ(u)^2) : ∂yη(u) end "2-order diffs"; begin @inline α( u::CartesianIndex) = ∂xη(u)^2 + ∂yη(u)^2 @@ -104,15 +116,21 @@ function inverted_poisson_2d_jacobi_step!( @inline sy( u::CartesianIndex) = (typeof(P) <: Nothing ? 0 : α(u)*P(u)*∂yξ(u)) + (typeof(Q) <: Nothing ? 0 : γ(u)*Q(u)*∂yη(u)) end "actual computation" - for u in CartesianIndices(xs)[[begin end], :] + for u in CartesianIndices(xs)[[begin, end], :] output_xs[u] = xs[u] - output_ys[u] = ys[u] - end - for u in CartesianIndices(xs)[:, [begin end]] + output_ys[u] = ys[u]; end + for u in CartesianIndices(xs)[:, [begin, end]] output_xs[u] = xs[u] output_ys[u] = ys[u] end - Threads.@threads for u in CartesianIndices(xs)[begin+1:end-1, begin+1:end-1] # this is good enough for a fixed dirichlet boundary + for u in CartesianIndices(xs)[[begin+1, end-1], begin+1:end-1] + output_xs[u] = (bh(u)*(x_l(u) + x_r(u)) + bv(u)*(x_d(u) + x_u(u)) + cx(u) + sx(u)) / bp(u) + output_ys[u] = (bh(u)*(y_l(u) + y_r(u)) + bv(u)*(y_d(u) + y_u(u)) + cy(u) + sy(u)) / bp(u); end + for u in CartesianIndices(xs)[begin+1:end-1, [begin+1, end-1]] + output_xs[u] = (bh(u)*(x_l(u) + x_r(u)) + bv(u)*(x_d(u) + x_u(u)) + cx(u) + sx(u)) / bp(u) + output_ys[u] = (bh(u)*(y_l(u) + y_r(u)) + bv(u)*(y_d(u) + y_u(u)) + cy(u) + sy(u)) / bp(u); + end + Threads.@threads for u in CartesianIndices(xs)[begin+2:end-2, begin+2:end-2] # this is good enough for a fixed dirichlet boundary output_xs[u] = (bh(u)*(x_l(u) + x_r(u)) + bv(u)*(x_d(u) + x_u(u)) + cx(u) + sx(u)) / bp(u) output_ys[u] = (bh(u)*(y_l(u) + y_r(u)) + bv(u)*(y_d(u) + y_u(u)) + cy(u) + sy(u)) / bp(u) end @@ -146,33 +164,32 @@ TODO: generalize to higher dimensions. """ function inverted_poisson_2d_jacobi_iterate( xs::Matrix{T} , ys::Matrix{T} , ε::Float64=1e-10, maxiter::Union{Nothing, Int}=nothing, - P::S = nothing, Q::S = nothing, - normp::Real = 2 ) where {T <: Number, S <: Union{Nothing, Function}} + P::S = nothing, Q::S = nothing, boundaray_ortho_factor::Union{Nothing, Float64}=nothing, + normp::Real = 2) where {T <: Number, S <: Union{Nothing, Function}} cache_xs = xs cache_ys = ys - inverted_poisson_2d_jacobi_iterate!(cache_xs, cache_ys, ε, maxiter, P, Q, normp) + inverted_poisson_2d_jacobi_iterate!(cache_xs, cache_ys, ε, maxiter, P, Q, boundaray_ortho_factor, normp) return cache_xs, cache_ys end function inverted_poisson_2d_jacobi_iterate!( xs::Matrix{T} , ys::Matrix{T} , ε::Float64=1e-10, maxiter::Union{Nothing, Int}=nothing, - P::S = nothing, Q::S = nothing, + P::S = nothing, Q::S = nothing, boundaray_ortho_factor::Union{Nothing, Float64}=nothing, cache_xs::R = nothing, cache_ys::R = nothing, - normp::Real = 2 ) where {T <: Number, S <: Union{Nothing, Function}, R <: Union{Nothing, Matrix{T}}} + normp::Real = 2) where {T <: Number, S <: Union{Nothing, Function}, R <: Union{Nothing, Matrix{T}}} !(typeof(cache_xs) <: Nothing) || (cache_xs = similar(xs)) !(typeof(cache_ys) <: Nothing) || (cache_ys = similar(xs)) @inline residue() = max(norm(cache_xs - xs, normp), norm(cache_ys - ys, normp)) - @inline steppair()=(inverted_poisson_2d_jacobi_step!(cache_xs, cache_ys, xs, ys, P, Q); - inverted_poisson_2d_jacobi_step!(xs, ys, cache_xs, cache_ys, P, Q)) + @inline steppair()=(inverted_poisson_2d_jacobi_step!(cache_xs, cache_ys, xs, ys, P, Q, boundaray_ortho_factor); + inverted_poisson_2d_jacobi_step!(xs, ys, cache_xs, cache_ys, P, Q, boundaray_ortho_factor)) steppair() prog = ProgressThresh(ε, desc="Elliptic relaxation:", showspeed=true) - generate_showvalues(iter) = () -> [(:iter,iter)] + iter = 0; generate_showvalues(iter) = () -> [(:iter,iter)] while residue() > ε - ProgressMeter.update!(prog, residue()) - sleep(0.1) - steppair() - ProgressMeter.next!(p; showvalues = generate_showvalues(iter)) + (typeof(maxiter) <: Nothing) || iter < maxiter || break + ProgressMeter.update!(prog, residue(); showvalues = generate_showvalues(iter)) + steppair(); iter+=1 end return xs, ys end @@ -185,6 +202,6 @@ function dirichlet_boundary_conform end """ To be done. """ -function nuemann_boundary_conform end +function neumann_boundary_conform end end # module elliptic_grid_gen From 832fe6729017576a7193dce441947964e0f92b92 Mon Sep 17 00:00:00 2001 From: Gravifer Date: Wed, 5 May 2021 01:49:08 +0800 Subject: [PATCH 11/16] refactor: gather plotting code into visualization.jl [skip ci] --- Project-1/example/demo.jl | 30 +++++++----- Project-1/src/visualization.jl | 87 ++++++++++++++++++++++++++++++++++ 2 files changed, 104 insertions(+), 13 deletions(-) create mode 100644 Project-1/src/visualization.jl diff --git a/Project-1/example/demo.jl b/Project-1/example/demo.jl index 39d7b40..fee650e 100644 --- a/Project-1/example/demo.jl +++ b/Project-1/example/demo.jl @@ -19,8 +19,6 @@ using BenchmarkTools using Plots using OffsetArrays -myblue = RGB(0.368417, 0.506779, 0.709798) # <==> 94, 129, 181 (the default style in Wolfram Mathematica) - """ yt0012(ξ) @@ -58,7 +56,7 @@ Base.@pure function yt0012(ξ::T where {T<:Real}) end) end -const Mx, My = 100+1, 20+1 +const Mx, My = 100+1, 100+1 include(normpath(joinpath(@__DIR__, "../../src/misc-util.jl"))) using .__CFD2021__misc_util__: tuplejoin @@ -71,6 +69,8 @@ using .__CFD2021__misc_util__: tuplejoin ``` """ +include(normpath(joinpath(@__DIR__, "../src/visualization.jl"))) + include(normpath(joinpath(@__DIR__, "../src/transfinite-interpolate.jl"))) import .transfinite_interpolate: transfinite_interpolate_2d!, transfinite_interpolate_2d @@ -121,15 +121,19 @@ y_hi = (5sinpi.(LinRange(1, 0, Mx)), [LinRange(0, 0, My)...]); ``` """ -p = plot(; xlims=(-5, 5), ylims=(-5, 5), aspect_ratio=:equal) -# p = plot(xlims = (-.6, .6), ylims = (0, .5), aspect_ratio = :equal) interpolated_x = Array{Float64}(undef, (length(v) for v in x_lo)...); interpolated_y = Array{Float64}(undef, (length(v) for v in y_lo)...); -@btime transfinite_interpolate_2d!(interpolated_x, x_lo, x_hi) -@btime transfinite_interpolate_2d!(interpolated_y, y_lo, y_hi) -for u in axes(interpolated_x)[begin] plot!(p,interpolated_x[u,:], interpolated_y[u,:], label = nothing, color = myblue); end -for u in axes(interpolated_x)[ end ] plot!(p,interpolated_x[:,u], interpolated_y[:,u], label = nothing, color = myblue); end -# for u in axes(interpolated_x)[begin] plot!(p,interpolated_x[u,:],-interpolated_y[u,:], label = nothing, color = myblue); end -# for u in axes(interpolated_x)[ end ] plot!(p,interpolated_x[:,u],-interpolated_y[:,u], label = nothing, color = myblue); end -plot!(p, yt0012, 0, 1; label=nothing, color=:red) -display(p) # savefig(normpath(joinpath(@__DIR__, "img/tf-hO.svg"))) +#= @btime =# transfinite_interpolate_2d!(interpolated_x, x_lo, x_hi) +#= @btime =# transfinite_interpolate_2d!(interpolated_y, y_lo, y_hi) +p = plot(; xlims=(-5,5), ylims=(-5,5), aspect_ratio=:equal) +p = grid_display!(p, interpolated_x, interpolated_y; title="tf", mirror=true, xlims=(-5, 5), ylims=(-5, 5), aspect_ratio=:equal) +# savefig(normpath(joinpath(@__DIR__, "img/tf-hO.png"))) + +include(normpath(joinpath(@__DIR__, "../src/elliptic-grid-gen.jl"))) +import .elliptic_grid_gen: inverted_poisson_2d_jacobi_step , inverted_poisson_2d_jacobi_step! , + inverted_poisson_2d_jacobi_iterate, inverted_poisson_2d_jacobi_iterate! + +inverted_poisson_2d_jacobi_iterate!(interpolated_x, interpolated_y, 1e-3, nothing, nothing, nothing, 0.02) +p = plot(; xlims=(-5,5), ylims=(-5,5), aspect_ratio=:equal) +p = grid_display!(p, interpolated_x, interpolated_y; title="el", mirror=true, xlims=(-5, 5), ylims=(-5, 5), aspect_ratio=:equal) +# savefig(normpath(joinpath(@__DIR__, "img/el-hO.png"))) diff --git a/Project-1/src/visualization.jl b/Project-1/src/visualization.jl new file mode 100644 index 0000000..87101ce --- /dev/null +++ b/Project-1/src/visualization.jl @@ -0,0 +1,87 @@ +# Copyright 2021 Gravifer +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +using Plots + +""" + yt0012(ξ) + +Compute ``yₜ`` (i.e., the half-thickness relative to the chord) +of NACA0012 airfoils from the normalized chord position ``ξ=x/c``. + +Additionally defined upon ``[1, 1.005]`` for a 2-order smooth closure. + +See also: https://en.wikipedia.org/wiki/NACA_airfoil + +TODO: generalize for 00xx airfoils; furthermore, for all 4-digit airfoils. + +# Examples +```jldoctest +julia> yt0012(0.13) +0.051193437032115506 +``` +""" +Base.@pure function yt0012(ξ::T where {T<:Real}) + ε = 0.0050544107511712 + return 5 * 0.12 * ( + if 0 <= ξ <= 1 + 0.2969 * sqrt(ξ) - + 0.1260 * ξ - + 0.3516 * ξ^2 + + 0.2843 * ξ^3 - + 0.1015 * ξ^4 + elseif 1 < ξ <= 1+ε # 2-order smooth joining of the tail edge. + 0.03423616658680458 * sqrt(1+ε - ξ) + + 0.12491972188290168 * (1+ε - ξ) + + 11.579398976610927 * (1+ε - ξ)^2 + + 12.21202728162769 * (1+ε - ξ)^3 + else + 0 + end) +end + +myblue = RGB(0.368417, 0.506779, 0.709798) # <==> 94, 129, 181 (the default style in Wolfram Mathematica) + +function grid_display( + xs::Matrix{T} , ys::Matrix{T}; + xlims=(-5, 5), ylims=(-5, 5), aspect_ratio=:equal, color=myblue, title=nothing, mirror::Bool=false) where {T <: Number} + + (axes(xs) == axes(ys)) || + throw(DimensionMismatch("Dimensions of x ($(axes(xs))) and y ($(axes(ys))) does not match.")) + p = plot(; xlims=xlims, ylims=ylims, aspect_ratio=aspect_ratio) + p = grid_display!(p, xs, ys; xlims=xlims, ylims=ylims, aspect_ratio=aspect_ratio, color=color, title=title, mirror=mirror) + return p +end + +function grid_display!(plot_ref, + xs::Matrix{T} , ys::Matrix{T}; + xlims=(-5, 5), ylims=(-5, 5), aspect_ratio=:equal, color=myblue, title=nothing, mirror::Bool=false) where {T <: Number} + + (axes(xs) == axes(ys)) || + throw(DimensionMismatch("Dimensions of x ($(axes(xs))) and y ($(axes(ys))) does not match.")) + p = (typeof(plot_ref) <: Nothing) ? plot(; xlims=xlims, ylims=ylims, aspect_ratio=aspect_ratio) : plot_ref + "normal"; begin + for u in axes(xs)[begin] plot!(p, interpolated_x[u,:], interpolated_y[u,:], label=nothing, color=color); end + for u in axes(ys)[ end ] plot!(p, interpolated_x[:,u], interpolated_y[:,u], label=nothing, color=color); end + end + if mirror + for u in axes(xs)[begin] plot!(p, interpolated_x[u,:],-interpolated_y[u,:], label=nothing, color=color); end + for u in axes(ys)[ end ] plot!(p, interpolated_x[:,u],-interpolated_y[:,u], label=nothing, color=color); end + end + plot!(p, yt0012 , 0, 1; label=nothing, color=:black) + plot!(p, (ξ)-> -yt0012(ξ), 0, 1; label=nothing, color=:black) + title!(p, title) + display(p) + return p +end From 32441ae7d886fde0e123f2cbe0237a029283b6c9 Mon Sep 17 00:00:00 2001 From: Gravifer Date: Wed, 5 May 2021 13:49:44 +0800 Subject: [PATCH 12/16] chore: fix git submodule [skip ci] also, added a newline at the end of build.jl (cherry picked from commit df5f428caeec4fe4098a2b20edc174f94305c0c4, e07db602a3813add0deaa247a5d7b569dbaed0ef) --- .gitmodules | 3 +++ deps/build.jl | 2 +- submodules/{submodules => }/SchwarzChristoffel.jl | 0 3 files changed, 4 insertions(+), 1 deletion(-) rename submodules/{submodules => }/SchwarzChristoffel.jl (100%) diff --git a/.gitmodules b/.gitmodules index f84a08b..43b429d 100644 --- a/.gitmodules +++ b/.gitmodules @@ -10,3 +10,6 @@ [submodule "submodules/gmsh"] path = submodules/gmsh url = https://github.com/live-clones/gmsh.git +[submodule "submodules/SchwarzChristoffel.jl"] + path = submodules/SchwarzChristoffel.jl + url = https://github.com/jdeldre/SchwarzChristoffel.jl.git diff --git a/deps/build.jl b/deps/build.jl index acd4cf9..dc3695b 100644 --- a/deps/build.jl +++ b/deps/build.jl @@ -12,4 +12,4 @@ # See the License for the specific language governing permissions and # limitations under the License. using Dates -println(now(), "\tEmpty build of the project") \ No newline at end of file +println(now(), "\tEmpty build of the project") diff --git a/submodules/submodules/SchwarzChristoffel.jl b/submodules/SchwarzChristoffel.jl similarity index 100% rename from submodules/submodules/SchwarzChristoffel.jl rename to submodules/SchwarzChristoffel.jl From 590fd57fc5e08fa1ddb355eff093ce5d01760532 Mon Sep 17 00:00:00 2001 From: Gravifer Date: Thu, 6 May 2021 00:07:46 +0800 Subject: [PATCH 13/16] chore(deps): add `DocumenterTools.jl` as dependency. [skip ci] --- Manifest.toml | 18 ++++++++++++++++++ Project.toml | 1 + 2 files changed, 19 insertions(+) diff --git a/Manifest.toml b/Manifest.toml index 5bf3e93..7e9715a 100644 --- a/Manifest.toml +++ b/Manifest.toml @@ -450,6 +450,12 @@ git-tree-sha1 = "3ebb967819b284dc1e3c0422229b58a40a255649" uuid = "e30172f5-a6a5-5a46-863b-614d45cd2de4" version = "0.26.3" +[[DocumenterTools]] +deps = ["Base64", "DocStringExtensions", "Documenter", "FileWatching", "LibGit2", "Sass"] +git-tree-sha1 = "fd313c343451ff8f88ff711662ea13f9629b9a58" +uuid = "35a29f4d-8980-5a13-9543-d66fff28ecb8" +version = "0.1.10" + [[DoubleFloats]] deps = ["LinearAlgebra", "Polynomials", "Printf", "Quadmath", "Random", "Requires", "SpecialFunctions"] git-tree-sha1 = "2e43ebdac158a9ccb42aed91f0be658d6bb5f81c" @@ -1523,6 +1529,12 @@ git-tree-sha1 = "36ebc5622c82eb9324005cc75e7e2cc51181d181" uuid = "1bc83da4-3b8d-516f-aca4-4fe02f6d838f" version = "0.0.1" +[[Sass]] +deps = ["libsass_jll"] +git-tree-sha1 = "aa841c3738cec78b5dbccd56dda332710f35f6a5" +uuid = "322a6be2-4ae8-5d68-aaf1-3e960788d1d9" +version = "0.2.0" + [[SciMLBase]] deps = ["ArrayInterface", "CommonSolve", "ConstructionBase", "Distributed", "DocStringExtensions", "IteratorInterfaceExtensions", "LinearAlgebra", "Logging", "RecipesBase", "RecursiveArrayTools", "StaticArrays", "Statistics", "Tables", "TreeViews"] git-tree-sha1 = "5d91d6098eaffa03eb371f3f3699f01983ba174e" @@ -2107,6 +2119,12 @@ git-tree-sha1 = "6abbc424248097d69c0c87ba50fcb0753f93e0ee" uuid = "b53b4c65-9356-5827-b1ea-8c7a1a84506f" version = "1.6.37+6" +[[libsass_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "663428b7ebaf60c60ee147f0f9466430e9959ad6" +uuid = "47bcb7c8-5119-555a-9eeb-0afcc36cd728" +version = "3.5.5+0" + [[libsodium_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] git-tree-sha1 = "848ab3d00fe39d6fbc2a8641048f8f272af1c51e" diff --git a/Project.toml b/Project.toml index 58b9cdd..60a243a 100644 --- a/Project.toml +++ b/Project.toml @@ -18,6 +18,7 @@ DataStructures = "864edb3b-99cc-5e75-8d2d-829cb0a9cfe8" Dates = "ade2ca70-3891-5945-98fb-dc099432e06a" DifferentialEquations = "0c46a032-eb83-5123-abaf-570d42b7fbaa" Documenter = "e30172f5-a6a5-5a46-863b-614d45cd2de4" +DocumenterTools = "35a29f4d-8980-5a13-9543-d66fff28ecb8" DoubleFloats = "497a8b3b-efae-58df-a0af-a86822472b78" FileIO = "5789e2e9-d7fb-5bc7-8068-2c6fae9b9549" FiniteDiff = "6a86dc24-6348-571c-b903-95158fe2bd41" From 0e0c94ce254328510fbf02d54491fc9d301cd603 Mon Sep 17 00:00:00 2001 From: Gravifer Date: Thu, 6 May 2021 00:08:16 +0800 Subject: [PATCH 14/16] docs: add a piece of literature [skip ci] --- ...20\345\217\212\345\256\236\347\216\260.pdf" | Bin 0 -> 248565 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 "docs/references/\346\244\255\345\234\206\345\236\213\345\201\217\345\276\256\345\210\206\346\226\271\347\250\213\345\212\240\345\257\206\347\275\221\346\240\274\347\232\204\347\224\237\346\210\220\345\217\212\345\256\236\347\216\260.pdf" diff --git "a/docs/references/\346\244\255\345\234\206\345\236\213\345\201\217\345\276\256\345\210\206\346\226\271\347\250\213\345\212\240\345\257\206\347\275\221\346\240\274\347\232\204\347\224\237\346\210\220\345\217\212\345\256\236\347\216\260.pdf" "b/docs/references/\346\244\255\345\234\206\345\236\213\345\201\217\345\276\256\345\210\206\346\226\271\347\250\213\345\212\240\345\257\206\347\275\221\346\240\274\347\232\204\347\224\237\346\210\220\345\217\212\345\256\236\347\216\260.pdf" new file mode 100644 index 0000000000000000000000000000000000000000..0ca0372fd153c1190a37eb381882a33873c995e1 GIT binary patch literal 248565 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 PD|sF3NY92 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 Date: Thu, 6 May 2021 00:10:55 +0800 Subject: [PATCH 15/16] =?UTF-8?q?refactor:=20add=20warning=20that=20bounda?= =?UTF-8?q?ry=20orthogonalization=20(=E5=9F=BA=E4=BA=8E=E6=BA=90=E9=A1=B9?= =?UTF-8?q?=E7=9A=84=E7=BD=91=E6=A0=BC=E5=8A=A0=E5=AF=86=E4=B8=8E=E6=AD=A3?= =?UTF-8?q?=E4=BA=A4=E5=8C=96=20#7)=20is=20not=20yet=20implemented=20[skip?= =?UTF-8?q?=20ci]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Project-1/src/elliptic-grid-gen.jl | 30 ++++++++++++++++++------------ 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/Project-1/src/elliptic-grid-gen.jl b/Project-1/src/elliptic-grid-gen.jl index 9f33201..c34a3b5 100644 --- a/Project-1/src/elliptic-grid-gen.jl +++ b/Project-1/src/elliptic-grid-gen.jl @@ -90,16 +90,18 @@ function inverted_poisson_2d_jacobi_step!( @inline ∂xη(u::CartesianIndex) = M[2]/2 * (x_u(u) - x_d(u)) @inline ∂yξ(u::CartesianIndex) = M[1]/2 * (y_r(u) - y_l(u)) @inline ∂yη(u::CartesianIndex) = M[2]/2 * (y_u(u) - y_d(u)) + @warn "Currently, boundary orthogonalization is not implemented; boundaray_ortho_factor is silently ignored." maxlog=1 #= doBO = (typeof(boundaray_ortho_factor) <: Nothing) doBO || (bof = boundaray_ortho_factor) - @inline ∂xξ_m(u::CartesianIndex) = doBO && u[1] in axes(xs)[1][[begin:begin+1, end-1 : end ]] ? - bof*(-∂xη(u))/sqrt(∂xη(u)^2+∂yη(u)^2) : ∂xξ(u) - @inline ∂xη_m(u::CartesianIndex) = doBO && u[2] in axes(xs)[2][[begin:begin+1, end-1 : end ]] ? - bof*(-∂xξ(u))/sqrt(∂xξ(u)^2+∂yξ(u)^2) : ∂xη(u) - @inline ∂yξ_m(u::CartesianIndex) = doBO && u[1] in axes(ys)[1][[begin:begin+1, end-1 : end ]] ? - bof*(-∂yη(u))/sqrt(∂xη(u)^2+∂yη(u)^2) : ∂yξ(u) - @inline ∂yη_m(u::CartesianIndex) = doBO && u[2] in axes(ys)[2][[begin:begin+1, end-1 : end ]] ? - bof*(-∂yξ(u))/sqrt(∂xξ(u)^2+∂yξ(u)^2) : ∂yη(u) + @inline ∂xξ(u::CartesianIndex) = doBO && u[1] in axes(xs)[1][[begin:begin+1, end-1 : end ]] ? + bof*(-∂xη(u))/sqrt(∂xη(u)^2+∂yη(u)^2) : ∂xξ_b(u) + @inline ∂xη(u::CartesianIndex) = doBO && u[2] in axes(xs)[2][[begin:begin+1, end-1 : end ]] ? + bof*(-∂xξ(u))/sqrt(∂xξ(u)^2+∂yξ(u)^2) : ∂xη_b(u) + @inline ∂yξ(u::CartesianIndex) = doBO && u[1] in axes(ys)[1][[begin:begin+1, end-1 : end ]] ? + bof*(-∂yη(u))/sqrt(∂xη(u)^2+∂yη(u)^2) : ∂yξ_b(u) + @inline ∂yη(u::CartesianIndex) = doBO && u[2] in axes(ys)[2][[begin:begin+1, end-1 : end ]] ? + bof*(-∂yξ(u))/sqrt(∂xξ(u)^2+∂yξ(u)^2) : ∂yη_b(u) + =# end "2-order diffs"; begin @inline α( u::CartesianIndex) = ∂xη(u)^2 + ∂yη(u)^2 @@ -112,8 +114,10 @@ function inverted_poisson_2d_jacobi_step!( @inline cy( u::CartesianIndex) = -M[1]*M[2]/2 * β(u) * (yld(u) - yrd(u) - ylu(u) + yru(u)) end "source related terms"; begin - @inline sx( u::CartesianIndex) = (typeof(P) <: Nothing ? 0 : α(u)*P(u)*∂xξ(u)) + (typeof(Q) <: Nothing ? 0 : γ(u)*Q(u)*∂xη(u)) - @inline sy( u::CartesianIndex) = (typeof(P) <: Nothing ? 0 : α(u)*P(u)*∂yξ(u)) + (typeof(Q) <: Nothing ? 0 : γ(u)*Q(u)*∂yη(u)) + @inline sx( u::CartesianIndex) = (typeof(P) <: Nothing ? 0 : α(u)*P(xs[u], ys[u])*∂xξ(u)) + + (typeof(Q) <: Nothing ? 0 : γ(u)*Q(xs[u], ys[u])*∂xη(u)) + @inline sy( u::CartesianIndex) = (typeof(P) <: Nothing ? 0 : α(u)*P(xs[u], ys[u])*∂yξ(u)) + + (typeof(Q) <: Nothing ? 0 : γ(u)*Q(xs[u], ys[u])*∂yη(u)) end "actual computation" for u in CartesianIndices(xs)[[begin, end], :] @@ -138,8 +142,8 @@ function inverted_poisson_2d_jacobi_step!( end """ - inverted_poisson_2d_jacobi_iterate(xs, ys[, P, Q]) - inverted_poisson_2d_jacobi_iterate!(xs, ys[, P, Q[, cache_xs, cache_ys]]) + inverted_poisson_2d_jacobi_iterate(xs, ys, ε[, P, Q[, boundaray_ortho_factor]]) + inverted_poisson_2d_jacobi_iterate!(xs, ys, ε[, P, Q[, boundaray_ortho_factor[, cache_xs, cache_ys[, normp=2]]]]) Full Jacobi relaxation of an array-pair represented 2d grid. @@ -151,8 +155,10 @@ TODO: generalize to higher dimensions. - `ε::Float64=1e-10`: (optional) tolerance of residue. - `P::Function`: (optional) `ξ` related source term. - `Q::Function`: (optional) `η` related source term. +- `boundaray_ortho_factor::Float64`: (optional) controls grid density at boundaries. - `cache_xs::Matrix{<: Number}`: (optional) buffer array of `x`-coordinates. - `cache_ys::Matrix{<: Number}`: (optional) buffer array of `y`-coordinates. +- `normp::Real=2`: use `Lₚ` norm for computing residue. # Output - `output_xs::Matrix{<: Number}`: relaxed array of `x`-coordinates. From 1315204c38d8c9937f9e0c0f43de24834095de9a Mon Sep 17 00:00:00 2001 From: Gravifer Date: Thu, 6 May 2021 00:11:39 +0800 Subject: [PATCH 16/16] refactor: change visualization scheme in project-1 [skip ci] --- Project-1/example/demo.jl | 14 +++++++------- Project-1/src/visualization.jl | 5 ++--- 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/Project-1/example/demo.jl b/Project-1/example/demo.jl index fee650e..a45b9da 100644 --- a/Project-1/example/demo.jl +++ b/Project-1/example/demo.jl @@ -15,9 +15,8 @@ using Pkg Pkg.activate(normpath(joinpath(@__DIR__, "../.."))) # using Revise -using BenchmarkTools -using Plots -using OffsetArrays +using BenchmarkTools, ProgressMeter +using Plots, OffsetArrays, LinearAlgebra """ yt0012(ξ) @@ -126,14 +125,15 @@ interpolated_y = Array{Float64}(undef, (length(v) for v in y_lo)...); #= @btime =# transfinite_interpolate_2d!(interpolated_x, x_lo, x_hi) #= @btime =# transfinite_interpolate_2d!(interpolated_y, y_lo, y_hi) p = plot(; xlims=(-5,5), ylims=(-5,5), aspect_ratio=:equal) -p = grid_display!(p, interpolated_x, interpolated_y; title="tf", mirror=true, xlims=(-5, 5), ylims=(-5, 5), aspect_ratio=:equal) +# p = grid_plot!(p, interpolated_x, interpolated_y; title="tf", mirror=true, xlims=(-5, 5), ylims=(-5, 5), aspect_ratio=:equal) # savefig(normpath(joinpath(@__DIR__, "img/tf-hO.png"))) include(normpath(joinpath(@__DIR__, "../src/elliptic-grid-gen.jl"))) import .elliptic_grid_gen: inverted_poisson_2d_jacobi_step , inverted_poisson_2d_jacobi_step! , inverted_poisson_2d_jacobi_iterate, inverted_poisson_2d_jacobi_iterate! - -inverted_poisson_2d_jacobi_iterate!(interpolated_x, interpolated_y, 1e-3, nothing, nothing, nothing, 0.02) +P = Q = ((x, y)->(norm([x, y]-[-3., 3.])) < 1. ? 20. : 0. ) +inverted_poisson_2d_jacobi_iterate!(interpolated_x, interpolated_y, 1e-2, nothing, P, Q, 2.) p = plot(; xlims=(-5,5), ylims=(-5,5), aspect_ratio=:equal) -p = grid_display!(p, interpolated_x, interpolated_y; title="el", mirror=true, xlims=(-5, 5), ylims=(-5, 5), aspect_ratio=:equal) +p = grid_plot!(p, interpolated_x, interpolated_y; title="el", mirror=true, xlims=(-5, 5), ylims=(-5, 5), aspect_ratio=:equal) +display(p) # savefig(normpath(joinpath(@__DIR__, "img/el-hO.png"))) diff --git a/Project-1/src/visualization.jl b/Project-1/src/visualization.jl index 87101ce..1c981ca 100644 --- a/Project-1/src/visualization.jl +++ b/Project-1/src/visualization.jl @@ -53,7 +53,7 @@ end myblue = RGB(0.368417, 0.506779, 0.709798) # <==> 94, 129, 181 (the default style in Wolfram Mathematica) -function grid_display( +function grid_plot( xs::Matrix{T} , ys::Matrix{T}; xlims=(-5, 5), ylims=(-5, 5), aspect_ratio=:equal, color=myblue, title=nothing, mirror::Bool=false) where {T <: Number} @@ -64,7 +64,7 @@ function grid_display( return p end -function grid_display!(plot_ref, +function grid_plot!(plot_ref, xs::Matrix{T} , ys::Matrix{T}; xlims=(-5, 5), ylims=(-5, 5), aspect_ratio=:equal, color=myblue, title=nothing, mirror::Bool=false) where {T <: Number} @@ -82,6 +82,5 @@ function grid_display!(plot_ref, plot!(p, yt0012 , 0, 1; label=nothing, color=:black) plot!(p, (ξ)-> -yt0012(ξ), 0, 1; label=nothing, color=:black) title!(p, title) - display(p) return p end