From cfcf27f416a9e77ce52def52bd7b6ff6eb443b03 Mon Sep 17 00:00:00 2001 From: Stephan Hilb <stephan@ecshi.net> Date: Thu, 18 Nov 2021 13:27:30 +0100 Subject: [PATCH] add poisson-source example --- test/example-poisson-source.jl | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 test/example-poisson-source.jl diff --git a/test/example-poisson-source.jl b/test/example-poisson-source.jl new file mode 100644 index 0000000..48cbc97 --- /dev/null +++ b/test/example-poisson-source.jl @@ -0,0 +1,31 @@ +using LinearAlgebra: dot, norm +using SemiSmoothNewton +using SemiSmoothNewton: vtk_mesh, vtk_append!, vtk_save + +# simple 2d unit square triangulation +mesh = init_grid(32, 32) + +# scalar piecewise linear continuous elements +space = FeSpace(mesh, P1(), (1,)) +u = FeFunction(space, name = "u") + +# inhomogenity +const p = (0.25, 0.5) +f(x) = 5 * exp(-5 * norm(x .- p)^2) +# parameter +const lambda = 19.7 + +# weak formulation +a(x, u, d_u, phi, d_phi) = + dot(d_u, d_phi) + lambda^2 * dot(u, phi) +l(x, phi, d_phi) = + dot(f(x), phi) + +# solve u +A, b = assemble(space, a, l) +u.data .= A \ b + +# vtk output +vtk = vtk_mesh("output.vtu", mesh) +vtk_append!(vtk, u) +vtk_save(vtk) -- GitLab