From 2efcf4c0af16f1a730b97965489b2ff82549f653 Mon Sep 17 00:00:00 2001 From: Lars Hubatsch <hubatsch@pks.mpg.de> Date: Wed, 16 Sep 2020 15:48:01 +0200 Subject: [PATCH] Radially symmetric diffusion works. Take care of volume elements everywhere! Needs to be in all integrals (also t) and mass conservation check. --- FloryHugg_DiffUnbleached.ipynb | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/FloryHugg_DiffUnbleached.ipynb b/FloryHugg_DiffUnbleached.ipynb index ad6d433..87c67f8 100644 --- a/FloryHugg_DiffUnbleached.ipynb +++ b/FloryHugg_DiffUnbleached.ipynb @@ -149,28 +149,34 @@ "import dolfin as df\n", "\n", "mesh = df.UnitIntervalMesh(1000)\n", - "dt = 0.01\n", + "dt = 0.001\n", "F = df.FunctionSpace(mesh, 'CG', 1)\n", "c0 = df.Function(F)\n", - "c0.interpolate(df.Expression('x[0]<0.5 ? 0:1', degree=1))\n", + "c0.interpolate(df.Expression('x[0]<0.5 && x[0]>0.2 ? 1:0', degree=1))\n", "q = df.TestFunction(F)\n", "c = df.Function(F)\n", "X = df.SpatialCoordinate(mesh)\n", - "\n", + "g = df.Expression('.00', degree=1)\n", + "u_D = df.Expression('1', degree=1)\n", + "def boundary(x, on_boundary):\n", + " return on_boundary\n", + "bc = df.DirichletBC(F, u_D, boundary)\n", "# Weak form spherical symmetry\n", - "form = (df.inner((c-c0)/dt, q) +\n", - " df.inner(df.grad(c), df.grad(4*3.1415*X[0]*X[0]*q))-\n", - " c.dx(0)*8*3.1415*X[0]*q) * df.dx\n", + "form = (df.inner((c-c0)/dt, q*X[0]*X[0]) +\n", + " df.inner(df.grad(c), df.grad(X[0]*X[0]*q))-\n", + " c.dx(0)*2*X[0]*q) * df.dx\n", "# Weak form 1D\n", "# form = (df.inner((c-c0)/dt, q) +\n", "# df.inner(df.grad(c), df.grad(q))) * df.dx\n", "t = 0\n", "\n", "# Solve in time\n", - "for i in range(6):\n", + "for i in range(60):\n", + " print(np.sum([x*x*c0([x]) for x in np.linspace(0, 1, 1000)]))\n", " df.solve(form == 0, c)\n", " df.assign(c0, c)\n", - " t += dt" + " t += dt\n", + " plt.plot(np.linspace(0, 1, 1000), [c0([x]) for x in np.linspace(0, 1, 1000)])" ] }, { -- GitLab