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