From eba770565fd79e2fe345a827904b048a469b6ef2 Mon Sep 17 00:00:00 2001 From: xtalax Date: Tue, 29 Oct 2024 16:26:48 +0000 Subject: [PATCH 1/4] fix mixed dims with univariate --- halfar.gif | Bin 0 -> 14786 bytes src/system_parsing/interior_map.jl | 97 ++++++++++++------ test/components/interiormap_test.jl | 53 +++++++++- .../nonlinear_laplacian_advanced.jl | 13 ++- 4 files changed, 124 insertions(+), 39 deletions(-) create mode 100644 halfar.gif diff --git a/halfar.gif b/halfar.gif new file mode 100644 index 0000000000000000000000000000000000000000..7a9caf16d0e0f3fd06de3515c015c06a7cfb7e7e GIT binary patch literal 14786 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∈i~ph* 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 W(;d&(9TLwM6{sge1{wh1&Hn%rm|e>N literal 0 HcmV?d00001 diff --git a/src/system_parsing/interior_map.jl b/src/system_parsing/interior_map.jl index 2c7e9f243..fe0cad034 100644 --- a/src/system_parsing/interior_map.jl +++ b/src/system_parsing/interior_map.jl @@ -31,8 +31,8 @@ function PDEBase.construct_var_equation_mapping( pdes::Vector{Equation}, boundarymap, s::DiscreteSpace{N, M}, discretization::MOLFiniteDifference) where {N, M} @assert length(pdes)==M "There must be the same number of equations and unknowns, got $(length(pdes)) equations and $(M) unknowns" - m = buildmatrix(pdes, s) - varmap = Dict(build_variable_mapping(m, s.ū, pdes)) + m, var_dims, varpalsmap = buildmatrix(pdes, s) + varmap = Dict(build_variable_mapping(m, s.ū, pdes)) # Determine the interiors for each pde vlower = [] @@ -41,32 +41,41 @@ function PDEBase.construct_var_equation_mapping( interior = map(pdes) do pde u = varmap[pde] - boundaries = mapreduce(x -> boundarymap[operation(u)][x], vcat, s.x̄) - n = ndims(u, s) - lower = zeros(Int, n) - upper = zeros(Int, n) - # Determine thec number of points to remove from each end of the domain for each dimension - for b in boundaries - #@show b - clip_interior!!(lower, upper, s, b) - end - push!(vlower, pde => lower) - push!(vupper, pde => upper) - #TODO: Allow assymmetry - pdeorders = Dict(map(x -> x => d_orders(x, [pde]), s.x̄)) - - # Add ghost points to pad stencil extents - lowerextents, upperextents = calculate_stencil_extents( - s, u, discretization, pdeorders, boundarymap) - push!(extents, pde => (lowerextents, upperextents)) - lower = [max(e, l) for (e, l) in zip(lowerextents, lower)] - upper = [max(e, u) for (e, u) in zip(upperextents, upper)] - mindomsize = lower .+ upper .+ 1 - if any(tup -> mindomsize[tup[1]] > length(s, tup[2]), enumerate(ivs(u, s))) - error("The domain is too small to support the requested discretization, got domain size of $(size(s)).") + f = v -> findmax(map(p -> p[2], varpalsmap[v]))[2] + if var_dims[u] == 0 && !isnothing(f(u)) + i = f(u) + u = first(varpalsmap[u][i]) + args = remove(arguments(u), s.time) + + pde => s.Igrid[u][[1:length(s.grid[x]) for x in args]...] + else + boundaries = mapreduce(x -> boundarymap[operation(u)][x], vcat, s.x̄) + n = ndims(u, s) + lower = zeros(Int, n) + upper = zeros(Int, n) + # Determine thec number of points to remove from each end of the domain for each dimension + for b in boundaries + #@show b + clip_interior!!(lower, upper, s, b) + end + push!(vlower, pde => lower) + push!(vupper, pde => upper) + #TODO: Allow assymmetry + pdeorders = Dict(map(x -> x => d_orders(x, [pde]), s.x̄)) + + # Add ghost points to pad stencil extents + lowerextents, upperextents = calculate_stencil_extents( + s, u, discretization, pdeorders, boundarymap) + push!(extents, pde => (lowerextents, upperextents)) + lower = [max(e, l) for (e, l) in zip(lowerextents, lower)] + upper = [max(e, u) for (e, u) in zip(upperextents, upper)] + mindomsize = lower .+ upper .+ 1 + if any(tup -> mindomsize[tup[1]] > length(s, tup[2]), enumerate(ivs(u, s))) + error("The domain is too small to support the requested discretization, got domain size of $(size(s)).") + end + # Don't update this x2i, it is correct. + pde => generate_interior(lower, upper, u, s, discretization) end - # Don't update this x2i, it is correct. - pde => generate_interior(lower, upper, u, s, discretization) end pdemap = [k.second => k.first for k in varmap] @@ -117,26 +126,43 @@ end function buildmatrix(pdes, s::DiscreteSpace{N, M}) where {N, M} m = zeros(Int, M, M) elegiblevars = [getvarmap(pde, s) for pde in pdes] - u2i = Dict([u => k for (k, u) in enumerate(s.ū)]) - #@show elegiblevars, s.ū + u2i = Dict([u => k for (k, u) in enumerate(s.ū)]) + var_dims = Dict([var => variable_dimensionality(var, s) for var in s.ū]) + for (i, varmap) in enumerate(elegiblevars) - for var in keys(varmap) - m[i, u2i[var]] = varmap[var] + for var in keys(varmap) + m[i, u2i[var]] = var_dims[var] == 0 ? varmap[var] - div(typemax(Int), 2) : varmap[var] end end - return m + varpalmap = map(filter(x -> var_dims[x] == 0, s.ū)) do u + #find i where var_dims[u] shares a row with a non-zero var_dims[v] + varpals = [] + for j in 1:M + if m[j, u2i[u]] != 0 + for k in setdiff(1:M, [u2i[u]]) + if m[j, k] != 0 && var_dims[s.ū[k]] > 0 + push!(varpals, s.ū[k] => m[j, k]) + end + end + end + end + u => varpals + end |> Dict + return m, var_dims, varpalmap end -function build_variable_mapping(m, vars, pdes) +function build_variable_mapping(m::Matrix{Int}, vars::Vector, pdes::Vector) notzero(x) = x > 0 ? 1 : 0 varpdemap = [] N = length(pdes) + rows = sum(m, dims = 2) cols = sum(m, dims = 1) i = findfirst(isequal(0), rows) j = findfirst(isequal(0), cols) @assert i===nothing "Equation $(pdes[i[1]]) is not an equation for any of the dependent variables." @assert j===nothing "Variable $(vars[j[2]]) does not appear in any equation, therefore cannot be solved for" + for k in 1:N # Check if any of the pdes only have one valid variable m_ones = notzero.(m) @@ -240,3 +266,8 @@ function getvarmap(pde, s) end return varmap end + +function variable_dimensionality(var, s::DiscreteSpace) + args = arguments(var) + return count(arg -> any(isequal(arg), s.x̄), args) +end diff --git a/test/components/interiormap_test.jl b/test/components/interiormap_test.jl index a080642ae..60230df67 100644 --- a/test/components/interiormap_test.jl +++ b/test/components/interiormap_test.jl @@ -36,7 +36,7 @@ const bigint = div(typemax(Int), 2) s = MethodOfLines.construct_discrete_space(v, disc) - m = MethodOfLines.buildmatrix(pde, s) + m, _, _ = MethodOfLines.buildmatrix(pde, s) test = [1 2+bigint 0; 1 0 2+bigint; 2+bigint 1 1] perms = permutations([1, 2, 3]) @@ -77,7 +77,7 @@ end v = MethodOfLines.VariableMap(pdesys, disc) s = MethodOfLines.construct_discrete_space(v, disc) - m = MethodOfLines.buildmatrix(pde, s) + m, _, __ = MethodOfLines.buildmatrix(pde, s) test = [2 2 0; 3 0 3; 4 4 4] perms = permutations([1, 2, 3]) @@ -117,7 +117,7 @@ end v = MethodOfLines.VariableMap(pdesys, disc) s = MethodOfLines.construct_discrete_space(v, disc) - m = MethodOfLines.buildmatrix(pde, s) + m, _, __ = MethodOfLines.buildmatrix(pde, s) test = [1 2 0; 3 0 3; 4 5 5] perms = permutations([1, 2, 3]) @test any(perms) do perm @@ -157,7 +157,7 @@ end v = MethodOfLines.VariableMap(pdesys, disc) s = MethodOfLines.construct_discrete_space(v, disc) - m = MethodOfLines.buildmatrix(pde, s) + m, _, __ = MethodOfLines.buildmatrix(pde, s) test = [0 2 2; 1 1 0; 2 0 1] perms = permutations([1, 2, 3]) @@ -167,6 +167,50 @@ end end +@testset "Test 00d: ignore time-only variables when higher-dimensional variables exist" begin + @parameters x, t + @variables u(..), v(..), w(..) + + Dxx = Differential(x)^2 + Dt = Differential(t) + + t_min = 0. + t_max = 2.0 + x_min = 0. + x_max = 20.0 + + dx = 1.0 + + domains = [t ∈ Interval(t_min, t_max), x ∈ Interval(x_min, x_max)] + + # u and w are functions of t and x, v is a function of t only + pde = [Dt(u(t,x)) ~ Dxx(u(t,x)) + w(t,x), + Dt(v(t)) ~ u(t,x) + w(t,x), + Dt(w(t,x)) ~ Dxx(w(t,x)) + u(t,x)] + + bcs = [u(0,x) ~ 0, u(t,0) ~ 0, u(t,x_max) ~ 0, + w(0,x) ~ 0, w(t,0) ~ 0, w(t,x_max) ~ 0] + + @named pdesys = PDESystem(pde, bcs, domains, [t,x], [u(t,x), v(t), w(t,x)]) + + # Test centered order + disc = MOLFiniteDifference([x=>dx], t) + + v = MethodOfLines.VariableMap(pdesys, disc) + s = MethodOfLines.construct_discrete_space(v, disc) + + m, _, __ = MethodOfLines.buildmatrix(pde, s) + + # The expected result should ignore v(t) in the mapping process + expected = [-4611686018427387903 1 4611686018427387905; 2 1 1; -4611686018427387903 4611686018427387905 1] + + @test m == expected + + varmap = Dict(MethodOfLines.build_variable_mapping(m, s.ū, pde)) + + @test_broken prob = discretize(pdesys, disc) +end + @testset "Test 01a: Build variable mapping - one right choice simple" begin m = hcat([0, 1, 0], [0, 0, 1], @@ -241,3 +285,4 @@ end @test e isa AssertionError end end + diff --git a/test/pde_systems/nonlinear_laplacian_advanced.jl b/test/pde_systems/nonlinear_laplacian_advanced.jl index c8290b5e2..412bd04bd 100644 --- a/test/pde_systems/nonlinear_laplacian_advanced.jl +++ b/test/pde_systems/nonlinear_laplacian_advanced.jl @@ -32,7 +32,8 @@ function asf(dt, dx, dy) halfar_dome(dt, dx, dy, R0, H0, 917) end -@test_broken begin#@testset "Halfar ice dome glacier model." begin + +@testset "Halfar ice dome glacier model." begin rmax = 2 * 1000 rmin = -rmax @@ -78,11 +79,19 @@ end sol = solve(prob, FBDF()) - @test SciMLBase.successful_retcode(sol) + @test_broken SciMLBase.successful_retcode(sol) + fail solx = sol[x] soly = sol[y] solt = sol[t] + solH = sol[H(t, x, y)] + + #anim = @animate for (i, t) in enumerate(t) + # heatmap(solx, soly, solH[i, :, :]) + #end + #gif(anim, "halfar.gif", fps = 10) + solexact = [asf(unwrap(dt), unwrap(dx), unwrap(dy)) for dt in solt, dx in solx, dy in soly] From cc3394ec4a3c9c8d3c76aca439f8dc00069b4b53 Mon Sep 17 00:00:00 2001 From: xtalax Date: Tue, 29 Oct 2024 16:29:19 +0000 Subject: [PATCH 2/4] gitignore --- .gitignore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 2db1a2f8d..23e1064ba 100644 --- a/.gitignore +++ b/.gitignore @@ -12,7 +12,7 @@ test/plots test/plots/* dev dev/* - +*.gif # Build artifacts for creating documentation generated by the Documenter package docs/build/ docs/site/ From 0d6cd5852f926975e32c16a7ae04b0b1982a0354 Mon Sep 17 00:00:00 2001 From: xtalax Date: Thu, 31 Oct 2024 17:06:15 +0000 Subject: [PATCH 3/4] remove image --- halfar.gif | Bin 14786 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 halfar.gif diff --git a/halfar.gif b/halfar.gif deleted file mode 100644 index 7a9caf16d0e0f3fd06de3515c015c06a7cfb7e7e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14786 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∈i~ph* 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 W(;d&(9TLwM6{sge1{wh1&Hn%rm|e>N From 659421dd1b5324ea040569b53b675040f72b71b4 Mon Sep 17 00:00:00 2001 From: xtalax Date: Thu, 31 Oct 2024 19:48:25 +0000 Subject: [PATCH 4/4] fix test --- test/pde_systems/nonlinear_laplacian_advanced.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/pde_systems/nonlinear_laplacian_advanced.jl b/test/pde_systems/nonlinear_laplacian_advanced.jl index 412bd04bd..6ec8aec70 100644 --- a/test/pde_systems/nonlinear_laplacian_advanced.jl +++ b/test/pde_systems/nonlinear_laplacian_advanced.jl @@ -80,7 +80,7 @@ end sol = solve(prob, FBDF()) @test_broken SciMLBase.successful_retcode(sol) - fail + solx = sol[x] soly = sol[y]