You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1369 lines
80 KiB

3 years ago
  1. {
  2. "cells": [
  3. {
  4. "cell_type": "code",
  5. "execution_count": 29,
  6. "metadata": {},
  7. "outputs": [
  8. {
  9. "data": {
  10. "text/plain": [
  11. "[<matplotlib.lines.Line2D at 0x7f62a08eee10>,\n",
  12. " <matplotlib.lines.Line2D at 0x7f62a0912128>]"
  13. ]
  14. },
  15. "execution_count": 29,
  16. "metadata": {},
  17. "output_type": "execute_result"
  18. },
  19. {
  20. "data": {
  21. "image/png": "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
  22. "text/plain": [
  23. "<Figure size 432x288 with 1 Axes>"
  24. ]
  25. },
  26. "metadata": {
  27. "needs_background": "light"
  28. },
  29. "output_type": "display_data"
  30. }
  31. ],
  32. "source": [
  33. "from fenics import *\n",
  34. "from mshr import *\n",
  35. "import numpy as np\n",
  36. "\n",
  37. "t = 0\n",
  38. "T = 10\n",
  39. "num_steps = 500\n",
  40. "dt = T/num_steps\n",
  41. "\n",
  42. "mesh = UnitSquareMesh(8,8)\n",
  43. "plot(mesh)"
  44. ]
  45. },
  46. {
  47. "cell_type": "code",
  48. "execution_count": 23,
  49. "metadata": {},
  50. "outputs": [],
  51. "source": [
  52. "V = VectorFunctionSpace(mesh, 'P', 2)\n",
  53. "Q = FunctionSpace(mesh, 'P', 1)\n",
  54. "#V = VectorFunctionSpace(mesh, 'P', 2, dim=10)\n",
  55. "\n",
  56. "u = TrialFunction(V)\n",
  57. "v = TestFunction(V)\n",
  58. "p = TrialFunction(Q)\n",
  59. "q = TestFunction(Q)"
  60. ]
  61. },
  62. {
  63. "cell_type": "code",
  64. "execution_count": 24,
  65. "metadata": {},
  66. "outputs": [],
  67. "source": [
  68. "def boundary(x, on_boundary):\n",
  69. " return near(x[0], 0)\n",
  70. "\n",
  71. "boundary = 'near(x[0], 0)'"
  72. ]
  73. },
  74. {
  75. "cell_type": "code",
  76. "execution_count": 25,
  77. "metadata": {},
  78. "outputs": [],
  79. "source": [
  80. "# Define boundaries\n",
  81. "inflow = 'near(x[0], 0)'\n",
  82. "outflow = 'near(x[0], 1)'\n",
  83. "walls = 'near(x[1], 0) || near(x[1], 1)'\n",
  84. "\n",
  85. "# Define boundary conditions\n",
  86. "bcu_noslip = DirichletBC(V, Constant((0, 0)), walls)\n",
  87. "bcp_inflow = DirichletBC(Q, Constant(8), inflow)\n",
  88. "bcp_outflow = DirichletBC(Q, Constant(0), outflow)\n",
  89. "bcu = [bcu_noslip]\n",
  90. "bcp = [bcp_inflow, bcp_outflow]"
  91. ]
  92. },
  93. {
  94. "cell_type": "code",
  95. "execution_count": 42,
  96. "metadata": {},
  97. "outputs": [],
  98. "source": [
  99. "u_n = Function(V)\n",
  100. "#u_n.name = \"u_n\"\n",
  101. "U = 0.5*(u_n + u)\n",
  102. "\n",
  103. "p_n = Function(Q)\n",
  104. "#p_n.name = \"p_n\""
  105. ]
  106. },
  107. {
  108. "cell_type": "code",
  109. "execution_count": 43,
  110. "metadata": {},
  111. "outputs": [],
  112. "source": [
  113. "U = 0.5*(u_n + u)\n",
  114. "mu = Constant(1)\n",
  115. "rho = Constant(1)\n",
  116. "n = FacetNormal(mesh)\n",
  117. "f = Constant((0, 0))\n",
  118. "k = Constant(dt)\n",
  119. "#mu = Constant(mu)\n",
  120. "#rho = Constant(rho)"
  121. ]
  122. },
  123. {
  124. "cell_type": "code",
  125. "execution_count": 44,
  126. "metadata": {},
  127. "outputs": [
  128. {
  129. "ename": "TypeError",
  130. "evalue": "'<' not supported between instances of 'Mesh' and 'Mesh'",
  131. "output_type": "error",
  132. "traceback": [
  133. "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
  134. "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)",
  135. "\u001b[0;32m<ipython-input-44-0cd64d6e94f6>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m 12\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0minner\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msigma\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mU\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mp_n\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mepsilon\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mv\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0mdx\u001b[0m\u001b[0;31m \u001b[0m\u001b[0;31m\\\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 13\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0mdot\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mp_n\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0mn\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mv\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0mds\u001b[0m \u001b[0;34m-\u001b[0m \u001b[0mdot\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmu\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0mnabla_grad\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mU\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0mn\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mv\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0mds\u001b[0m\u001b[0;31m \u001b[0m\u001b[0;31m\\\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 14\u001b[0;31m \u001b[0;34m-\u001b[0m \u001b[0mdot\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mf\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mv\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0mdx\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 15\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 16\u001b[0m \u001b[0ma1\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mlhs\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mF1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
  136. "\u001b[0;32m/usr/local/lib/python3.6/dist-packages/ufl/measure.py\u001b[0m in \u001b[0;36m__rmul__\u001b[0;34m(self, integrand)\u001b[0m\n\u001b[1;32m 435\u001b[0m \u001b[0mdomain\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mufl_domain\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 436\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mdomain\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 437\u001b[0;31m \u001b[0mdomains\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mextract_domains\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mintegrand\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 438\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdomains\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 439\u001b[0m \u001b[0mdomain\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mdomains\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
  137. "\u001b[0;32m/usr/local/lib/python3.6/dist-packages/ufl/domain.py\u001b[0m in \u001b[0;36mextract_domains\u001b[0;34m(expr)\u001b[0m\n\u001b[1;32m 353\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mt\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mtraverse_unique_terminals\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mexpr\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 354\u001b[0m \u001b[0mdomainlist\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mextend\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mufl_domains\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 355\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0msorted\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mjoin_domains\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdomainlist\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 356\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 357\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
  138. "\u001b[0;31mTypeError\u001b[0m: '<' not supported between instances of 'Mesh' and 'Mesh'"
  139. ]
  140. }
  141. ],
  142. "source": [
  143. "# Define strain-rate tensor\n",
  144. "def epsilon(u):\n",
  145. " return sym(nabla_grad(u))\n",
  146. "\n",
  147. "# Define stress tensor\n",
  148. "def sigma(u, p):\n",
  149. " return 2*mu*epsilon(u) - p*Identity(len(u))\n",
  150. "\n",
  151. "# Define variational problem for step 1\n",
  152. "F1 = rho*dot((u - u_n) / k, v)*dx + \\\n",
  153. " rho*dot(dot(u_n, nabla_grad(u_n)), v)*dx \\\n",
  154. " + inner(sigma(U, p_n), epsilon(v))*dx \\\n",
  155. " + dot(p_n*n, v)*ds - dot(mu*nabla_grad(U)*n, v)*ds \\\n",
  156. " - dot(f,v)*dx\n",
  157. "\n",
  158. "a1 = lhs(F1)\n",
  159. "L1 = rhs(F1)"
  160. ]
  161. },
  162. {
  163. "cell_type": "code",
  164. "execution_count": 50,
  165. "metadata": {},
  166. "outputs": [
  167. {
  168. "name": "stdout",
  169. "output_type": "stream",
  170. "text": [
  171. "t = 0.02: error = 0.84\n",
  172. "max u: 0.16\n",
  173. "t = 0.04: error = 0.684\n",
  174. "max u: 0.315688161445\n",
  175. "t = 0.06: error = 0.548\n",
  176. "max u: 0.451967018333\n",
  177. "t = 0.08: error = 0.444\n",
  178. "max u: 0.555932937013\n",
  179. "t = 0.10: error = 0.365\n",
  180. "max u: 0.634821697889\n",
  181. "t = 0.12: error = 0.3\n",
  182. "max u: 0.700458664738\n",
  183. "t = 0.14: error = 0.246\n",
  184. "max u: 0.754470057841\n",
  185. "t = 0.16: error = 0.202\n",
  186. "max u: 0.798401077724\n",
  187. "t = 0.18: error = 0.165\n",
  188. "max u: 0.834736754803\n",
  189. "t = 0.20: error = 0.136\n",
  190. "max u: 0.864370379848\n",
  191. "t = 0.22: error = 0.111\n",
  192. "max u: 0.888757133065\n",
  193. "t = 0.24: error = 0.0913\n",
  194. "max u: 0.908746179289\n",
  195. "t = 0.26: error = 0.0749\n",
  196. "max u: 0.925128943939\n",
  197. "t = 0.28: error = 0.0614\n",
  198. "max u: 0.938595908082\n",
  199. "t = 0.30: error = 0.0504\n",
  200. "max u: 0.949614547115\n",
  201. "t = 0.32: error = 0.0413\n",
  202. "max u: 0.958678413639\n",
  203. "t = 0.34: error = 0.0339\n",
  204. "max u: 0.966095207289\n",
  205. "t = 0.36: error = 0.0278\n",
  206. "max u: 0.97219191582\n",
  207. "t = 0.38: error = 0.0228\n",
  208. "max u: 0.977186437734\n",
  209. "t = 0.40: error = 0.0187\n",
  210. "max u: 0.981286118546\n",
  211. "t = 0.42: error = 0.0154\n",
  212. "max u: 0.984650083709\n",
  213. "t = 0.44: error = 0.0126\n",
  214. "max u: 0.987406612232\n",
  215. "t = 0.46: error = 0.0103\n",
  216. "max u: 0.989672435868\n",
  217. "t = 0.48: error = 0.00848\n",
  218. "max u: 0.991525862918\n",
  219. "t = 0.50: error = 0.00696\n",
  220. "max u: 0.993052001726\n",
  221. "t = 0.52: error = 0.00571\n",
  222. "max u: 0.99429840471\n",
  223. "t = 0.54: error = 0.00468\n",
  224. "max u: 0.9953261608\n",
  225. "t = 0.56: error = 0.00384\n",
  226. "max u: 0.996164570633\n",
  227. "t = 0.58: error = 0.00315\n",
  228. "max u: 0.996856517384\n",
  229. "t = 0.60: error = 0.00259\n",
  230. "max u: 0.997420565004\n",
  231. "t = 0.62: error = 0.00212\n",
  232. "max u: 0.997886381956\n",
  233. "t = 0.64: error = 0.00175\n",
  234. "max u: 0.99826587716\n",
  235. "t = 0.66: error = 0.00143\n",
  236. "max u: 0.998579465891\n",
  237. "t = 0.68: error = 0.00118\n",
  238. "max u: 0.998834779083\n",
  239. "t = 0.70: error = 0.000965\n",
  240. "max u: 0.999045922679\n",
  241. "t = 0.72: error = 0.000799\n",
  242. "max u: 0.999217645778\n",
  243. "t = 0.74: error = 0.000651\n",
  244. "max u: 0.99935987071\n",
  245. "t = 0.76: error = 0.000644\n",
  246. "max u: 0.999475305263\n",
  247. "t = 0.78: error = 0.000445\n",
  248. "max u: 0.999571183133\n",
  249. "t = 0.80: error = 0.000587\n",
  250. "max u: 0.999648697626\n",
  251. "t = 0.82: error = 0.000447\n",
  252. "max u: 0.999713420101\n",
  253. "t = 0.84: error = 0.00054\n",
  254. "max u: 0.999765376725\n",
  255. "t = 0.86: error = 0.000443\n",
  256. "max u: 0.999809165564\n",
  257. "t = 0.88: error = 0.000503\n",
  258. "max u: 0.999843886616\n",
  259. "t = 0.90: error = 0.000434\n",
  260. "max u: 0.999873617869\n",
  261. "t = 0.92: error = 0.000471\n",
  262. "max u: 0.999896707363\n",
  263. "t = 0.94: error = 0.000421\n",
  264. "max u: 0.99991700559\n",
  265. "t = 0.96: error = 0.000443\n",
  266. "max u: 0.99993223784\n",
  267. "t = 0.98: error = 0.000407\n",
  268. "max u: 0.999946212975\n",
  269. "t = 1.00: error = 0.000419\n",
  270. "max u: 0.999956130296\n",
  271. "t = 1.02: error = 0.000391\n",
  272. "max u: 0.999965873668\n",
  273. "t = 1.04: error = 0.000397\n",
  274. "max u: 0.999972188576\n",
  275. "t = 1.06: error = 0.000376\n",
  276. "max u: 0.999979106649\n",
  277. "t = 1.08: error = 0.000377\n",
  278. "max u: 0.999982972641\n",
  279. "t = 1.10: error = 0.00036\n",
  280. "max u: 0.999988011482\n",
  281. "t = 1.12: error = 0.000359\n",
  282. "max u: 0.999990205399\n",
  283. "t = 1.14: error = 0.000345\n",
  284. "max u: 0.999994001581\n",
  285. "t = 1.16: error = 0.000342\n",
  286. "max u: 0.999995046491\n",
  287. "t = 1.18: error = 0.00033\n",
  288. "max u: 0.999998028507\n",
  289. "t = 1.20: error = 0.000326\n",
  290. "max u: 0.999998276527\n",
  291. "t = 1.22: error = 0.000316\n",
  292. "max u: 1.00000073292\n",
  293. "t = 1.24: error = 0.000311\n",
  294. "max u: 1.00000042106\n",
  295. "t = 1.26: error = 0.000302\n",
  296. "max u: 1.0000025462\n",
  297. "t = 1.28: error = 0.000297\n",
  298. "max u: 1.000001834\n",
  299. "t = 1.30: error = 0.000289\n",
  300. "max u: 1.0000037588\n",
  301. "t = 1.32: error = 0.000284\n",
  302. "max u: 1.00000275375\n",
  303. "t = 1.34: error = 0.000277\n",
  304. "max u: 1.00000456632\n",
  305. "t = 1.36: error = 0.000272\n",
  306. "max u: 1.00000334098\n",
  307. "t = 1.38: error = 0.000265\n",
  308. "max u: 1.00000510051\n",
  309. "t = 1.40: error = 0.00026\n",
  310. "max u: 1.00000370399\n",
  311. "t = 1.42: error = 0.000254\n",
  312. "max u: 1.00000545008\n",
  313. "t = 1.44: error = 0.000249\n",
  314. "max u: 1.00000391588\n",
  315. "t = 1.46: error = 0.000243\n",
  316. "max u: 1.0000056748\n",
  317. "t = 1.48: error = 0.000238\n",
  318. "max u: 1.00000402601\n",
  319. "t = 1.50: error = 0.000233\n",
  320. "max u: 1.00000581495\n",
  321. "t = 1.52: error = 0.000229\n",
  322. "max u: 1.00000406771\n",
  323. "t = 1.54: error = 0.000223\n",
  324. "max u: 1.00000589766\n",
  325. "t = 1.56: error = 0.000219\n",
  326. "max u: 1.00000406359\n",
  327. "t = 1.58: error = 0.000214\n",
  328. "max u: 1.00000594124\n",
  329. "t = 1.60: error = 0.00021\n",
  330. "max u: 1.00000402893\n",
  331. "t = 1.62: error = 0.000206\n",
  332. "max u: 1.00000595803\n",
  333. "t = 1.64: error = 0.000202\n",
  334. "max u: 1.00000397412\n",
  335. "t = 1.66: error = 0.000197\n",
  336. "max u: 1.00000595638\n",
  337. "t = 1.68: error = 0.000194\n",
  338. "max u: 1.00000390623\n",
  339. "t = 1.70: error = 0.00019\n",
  340. "max u: 1.00000594193\n",
  341. "t = 1.72: error = 0.000186\n",
  342. "max u: 1.00000383007\n",
  343. "t = 1.74: error = 0.000182\n",
  344. "max u: 1.00000591851\n",
  345. "t = 1.76: error = 0.000179\n",
  346. "max u: 1.00000374894\n",
  347. "t = 1.78: error = 0.000175\n",
  348. "max u: 1.00000588871\n",
  349. "t = 1.80: error = 0.000172\n",
  350. "max u: 1.00000366508\n",
  351. "t = 1.82: error = 0.000168\n",
  352. "max u: 1.00000585431\n",
  353. "t = 1.84: error = 0.000165\n",
  354. "max u: 1.00000358003\n",
  355. "t = 1.86: error = 0.000162\n",
  356. "max u: 1.00000581654\n",
  357. "t = 1.88: error = 0.000159\n",
  358. "max u: 1.00000349485\n",
  359. "t = 1.90: error = 0.000156\n",
  360. "max u: 1.00000577623\n",
  361. "t = 1.92: error = 0.000153\n",
  362. "max u: 1.00000341026\n",
  363. "t = 1.94: error = 0.00015\n",
  364. "max u: 1.00000573399\n",
  365. "t = 1.96: error = 0.000148\n",
  366. "max u: 1.00000332675\n",
  367. "t = 1.98: error = 0.000145\n",
  368. "max u: 1.00000569024\n",
  369. "t = 2.00: error = 0.000142\n",
  370. "max u: 1.00000324465\n",
  371. "t = 2.02: error = 0.000139\n",
  372. "max u: 1.00000564528\n",
  373. "t = 2.04: error = 0.000137\n",
  374. "max u: 1.00000316419\n",
  375. "t = 2.06: error = 0.000134\n",
  376. "max u: 1.00000559933\n",
  377. "t = 2.08: error = 0.000132\n",
  378. "max u: 1.00000308552\n",
  379. "t = 2.10: error = 0.00013\n",
  380. "max u: 1.00000555257\n",
  381. "t = 2.12: error = 0.000127\n",
  382. "max u: 1.0000030087\n",
  383. "t = 2.14: error = 0.000125\n",
  384. "max u: 1.00000550513\n",
  385. "t = 2.16: error = 0.000123\n",
  386. "max u: 1.00000293381\n",
  387. "t = 2.18: error = 0.000121\n",
  388. "max u: 1.00000545711\n",
  389. "t = 2.20: error = 0.000119\n",
  390. "max u: 1.00000286085\n",
  391. "t = 2.22: error = 0.000116\n",
  392. "max u: 1.00000540861\n",
  393. "t = 2.24: error = 0.000115\n",
  394. "max u: 1.00000278982\n",
  395. "t = 2.26: error = 0.000112\n",
  396. "max u: 1.00000535969\n",
  397. "t = 2.28: error = 0.000111\n",
  398. "max u: 1.00000272072\n",
  399. "t = 2.30: error = 0.000109\n",
  400. "max u: 1.00000531042\n",
  401. "t = 2.32: error = 0.000107\n",
  402. "max u: 1.00000265352\n",
  403. "t = 2.34: error = 0.000105\n",
  404. "max u: 1.00000526086\n",
  405. "t = 2.36: error = 0.000103\n",
  406. "max u: 1.00000258819\n",
  407. "t = 2.38: error = 0.000101\n",
  408. "max u: 1.00000521104\n",
  409. "t = 2.40: error = 9.99e-05\n",
  410. "max u: 1.00000252468\n",
  411. "t = 2.42: error = 9.81e-05\n",
  412. "max u: 1.00000516102\n",
  413. "t = 2.44: error = 9.66e-05\n",
  414. "max u: 1.00000246297\n",
  415. "t = 2.46: error = 9.49e-05\n",
  416. "max u: 1.00000511083\n",
  417. "t = 2.48: error = 9.35e-05\n",
  418. "max u: 1.000002403\n",
  419. "t = 2.50: error = 9.18e-05\n",
  420. "max u: 1.00000506051\n",
  421. "t = 2.52: error = 9.05e-05\n",
  422. "max u: 1.00000234473\n",
  423. "t = 2.54: error = 8.89e-05\n",
  424. "max u: 1.00000501009\n",
  425. "t = 2.56: error = 8.76e-05\n",
  426. "max u: 1.00000228812\n",
  427. "t = 2.58: error = 8.6e-05\n",
  428. "max u: 1.0000049596\n",
  429. "t = 2.60: error = 8.48e-05\n",
  430. "max u: 1.00000223312\n",
  431. "t = 2.62: error = 8.33e-05\n",
  432. "max u: 1.00000490907\n",
  433. "t = 2.64: error = 8.21e-05\n",
  434. "max u: 1.00000217968\n",
  435. "t = 2.66: error = 8.07e-05\n",
  436. "max u: 1.00000485851\n",
  437. "t = 2.68: error = 7.96e-05\n",
  438. "max u: 1.00000212776\n",
  439. "t = 2.70: error = 7.82e-05\n",
  440. "max u: 1.00000480797\n",
  441. "t = 2.72: error = 7.71e-05\n",
  442. "max u: 1.00000207732\n",
  443. "t = 2.74: error = 7.58e-05\n",
  444. "max u: 1.00000475744\n",
  445. "t = 2.76: error = 7.48e-05\n",
  446. "max u: 1.0000020283\n",
  447. "t = 2.78: error = 7.35e-05\n",
  448. "max u: 1.00000470696\n",
  449. "t = 2.80: error = 7.25e-05\n",
  450. "max u: 1.00000198067\n",
  451. "t = 2.82: error = 7.13e-05\n",
  452. "max u: 1.00000465655\n",
  453. "t = 2.84: error = 7.04e-05\n",
  454. "max u: 1.00000193438\n",
  455. "t = 2.86: error = 6.92e-05\n",
  456. "max u: 1.00000460621\n",
  457. "t = 2.88: error = 6.83e-05\n",
  458. "max u: 1.00000188939\n",
  459. "t = 2.90: error = 6.72e-05\n",
  460. "max u: 1.00000455597\n",
  461. "t = 2.92: error = 6.63e-05\n",
  462. "max u: 1.00000184566\n",
  463. "t = 2.94: error = 6.52e-05\n",
  464. "max u: 1.00000450584\n",
  465. "t = 2.96: error = 6.43e-05\n",
  466. "max u: 1.00000180315\n",
  467. "t = 2.98: error = 6.33e-05\n",
  468. "max u: 1.00000445583\n",
  469. "t = 3.00: error = 6.25e-05\n",
  470. "max u: 1.00000176237\n",
  471. "t = 3.02: error = 6.15e-05\n",
  472. "max u: 1.00000440597\n",
  473. "t = 3.04: error = 6.07e-05\n",
  474. "max u: 1.0000017347\n",
  475. "t = 3.06: error = 5.97e-05\n",
  476. "max u: 1.00000435625\n",
  477. "t = 3.08: error = 5.9e-05\n",
  478. "max u: 1.00000170731\n",
  479. "t = 3.10: error = 5.8e-05\n",
  480. "max u: 1.0000043067\n",
  481. "t = 3.12: error = 5.73e-05\n",
  482. "max u: 1.00000168021\n",
  483. "t = 3.14: error = 5.64e-05\n",
  484. "max u: 1.00000425731\n",
  485. "t = 3.16: error = 5.57e-05\n",
  486. "max u: 1.0000016534\n",
  487. "t = 3.18: error = 5.49e-05\n",
  488. "max u: 1.00000420812\n",
  489. "t = 3.20: error = 5.42e-05\n",
  490. "max u: 1.00000162688\n",
  491. "t = 3.22: error = 5.33e-05\n",
  492. "max u: 1.00000415911\n",
  493. "t = 3.24: error = 5.27e-05\n",
  494. "max u: 1.00000160066\n",
  495. "t = 3.26: error = 5.19e-05\n",
  496. "max u: 1.00000411031\n",
  497. "t = 3.28: error = 5.13e-05\n",
  498. "max u: 1.00000157472\n",
  499. "t = 3.30: error = 5.05e-05\n",
  500. "max u: 1.00000406172\n",
  501. "t = 3.32: error = 4.99e-05\n",
  502. "max u: 1.00000154907\n",
  503. "t = 3.34: error = 4.91e-05\n",
  504. "max u: 1.00000401334\n",
  505. "t = 3.36: error = 4.86e-05\n",
  506. "max u: 1.00000152372\n",
  507. "t = 3.38: error = 4.78e-05\n",
  508. "max u: 1.0000039652\n",
  509. "t = 3.40: error = 4.73e-05\n",
  510. "max u: 1.00000149865\n",
  511. "t = 3.42: error = 4.66e-05\n",
  512. "max u: 1.00000391729\n",
  513. "t = 3.44: error = 4.61e-05\n",
  514. "max u: 1.00000147387\n",
  515. "t = 3.46: error = 4.54e-05\n",
  516. "max u: 1.00000386963\n"
  517. ]
  518. },
  519. {
  520. "name": "stdout",
  521. "output_type": "stream",
  522. "text": [
  523. "t = 3.48: error = 4.49e-05\n",
  524. "max u: 1.00000144937\n",
  525. "t = 3.50: error = 4.42e-05\n",
  526. "max u: 1.00000382221\n",
  527. "t = 3.52: error = 4.37e-05\n",
  528. "max u: 1.00000142516\n",
  529. "t = 3.54: error = 4.31e-05\n",
  530. "max u: 1.00000377505\n",
  531. "t = 3.56: error = 4.26e-05\n",
  532. "max u: 1.00000140124\n",
  533. "t = 3.58: error = 4.2e-05\n",
  534. "max u: 1.00000372815\n",
  535. "t = 3.60: error = 4.15e-05\n",
  536. "max u: 1.0000013776\n",
  537. "t = 3.62: error = 4.09e-05\n",
  538. "max u: 1.00000368153\n",
  539. "t = 3.64: error = 4.05e-05\n",
  540. "max u: 1.00000135424\n",
  541. "t = 3.66: error = 3.99e-05\n",
  542. "max u: 1.00000363517\n",
  543. "t = 3.68: error = 3.95e-05\n",
  544. "max u: 1.00000133116\n",
  545. "t = 3.70: error = 3.89e-05\n",
  546. "max u: 1.0000035891\n",
  547. "t = 3.72: error = 3.85e-05\n",
  548. "max u: 1.00000130836\n",
  549. "t = 3.74: error = 3.8e-05\n",
  550. "max u: 1.00000354332\n",
  551. "t = 3.76: error = 3.76e-05\n",
  552. "max u: 1.00000128584\n",
  553. "t = 3.78: error = 3.7e-05\n",
  554. "max u: 1.00000349782\n",
  555. "t = 3.80: error = 3.67e-05\n",
  556. "max u: 1.0000012636\n",
  557. "t = 3.82: error = 3.61e-05\n",
  558. "max u: 1.00000345262\n",
  559. "t = 3.84: error = 3.58e-05\n",
  560. "max u: 1.00000124164\n",
  561. "t = 3.86: error = 3.53e-05\n",
  562. "max u: 1.00000340772\n",
  563. "t = 3.88: error = 3.49e-05\n",
  564. "max u: 1.00000121994\n",
  565. "t = 3.90: error = 3.44e-05\n",
  566. "max u: 1.00000336312\n",
  567. "t = 3.92: error = 3.41e-05\n",
  568. "max u: 1.00000119852\n",
  569. "t = 3.94: error = 3.36e-05\n",
  570. "max u: 1.00000331884\n",
  571. "t = 3.96: error = 3.33e-05\n",
  572. "max u: 1.00000117737\n",
  573. "t = 3.98: error = 3.29e-05\n",
  574. "max u: 1.00000327486\n",
  575. "t = 4.00: error = 3.25e-05\n",
  576. "max u: 1.00000115649\n",
  577. "t = 4.02: error = 3.21e-05\n",
  578. "max u: 1.0000032312\n",
  579. "t = 4.04: error = 3.18e-05\n",
  580. "max u: 1.00000113587\n",
  581. "t = 4.06: error = 3.14e-05\n",
  582. "max u: 1.00000318786\n",
  583. "t = 4.08: error = 3.11e-05\n",
  584. "max u: 1.00000111552\n",
  585. "t = 4.10: error = 3.06e-05\n",
  586. "max u: 1.00000314484\n",
  587. "t = 4.12: error = 3.04e-05\n",
  588. "max u: 1.00000109544\n",
  589. "t = 4.14: error = 3e-05\n",
  590. "max u: 1.00000310215\n",
  591. "t = 4.16: error = 2.97e-05\n",
  592. "max u: 1.00000107561\n",
  593. "t = 4.18: error = 2.93e-05\n",
  594. "max u: 1.00000305978\n",
  595. "t = 4.20: error = 2.9e-05\n",
  596. "max u: 1.00000105605\n",
  597. "t = 4.22: error = 2.86e-05\n",
  598. "max u: 1.00000301775\n",
  599. "t = 4.24: error = 2.84e-05\n",
  600. "max u: 1.00000103674\n",
  601. "t = 4.26: error = 2.8e-05\n",
  602. "max u: 1.00000297605\n",
  603. "t = 4.28: error = 2.78e-05\n",
  604. "max u: 1.00000101769\n",
  605. "t = 4.30: error = 2.74e-05\n",
  606. "max u: 1.00000293469\n",
  607. "t = 4.32: error = 2.72e-05\n",
  608. "max u: 1.00000099889\n",
  609. "t = 4.34: error = 2.68e-05\n",
  610. "max u: 1.00000289366\n",
  611. "t = 4.36: error = 2.66e-05\n",
  612. "max u: 1.00000098034\n",
  613. "t = 4.38: error = 2.62e-05\n",
  614. "max u: 1.00000285298\n",
  615. "t = 4.40: error = 2.6e-05\n",
  616. "max u: 1.00000096204\n",
  617. "t = 4.42: error = 2.57e-05\n",
  618. "max u: 1.00000281263\n",
  619. "t = 4.44: error = 2.55e-05\n",
  620. "max u: 1.00000094399\n",
  621. "t = 4.46: error = 2.51e-05\n",
  622. "max u: 1.00000277263\n",
  623. "t = 4.48: error = 2.49e-05\n",
  624. "max u: 1.00000092619\n",
  625. "t = 4.50: error = 2.46e-05\n",
  626. "max u: 1.00000273298\n",
  627. "t = 4.52: error = 2.44e-05\n",
  628. "max u: 1.00000090863\n",
  629. "t = 4.54: error = 2.41e-05\n",
  630. "max u: 1.00000269367\n",
  631. "t = 4.56: error = 2.39e-05\n",
  632. "max u: 1.00000089131\n",
  633. "t = 4.58: error = 2.36e-05\n",
  634. "max u: 1.0000026547\n",
  635. "t = 4.60: error = 2.34e-05\n",
  636. "max u: 1.00000087423\n",
  637. "t = 4.62: error = 2.31e-05\n",
  638. "max u: 1.00000261609\n",
  639. "t = 4.64: error = 2.29e-05\n",
  640. "max u: 1.00000085739\n",
  641. "t = 4.66: error = 2.27e-05\n",
  642. "max u: 1.00000257783\n",
  643. "t = 4.68: error = 2.25e-05\n",
  644. "max u: 1.00000084078\n",
  645. "t = 4.70: error = 2.22e-05\n",
  646. "max u: 1.00000253991\n",
  647. "t = 4.72: error = 2.2e-05\n",
  648. "max u: 1.00000082441\n",
  649. "t = 4.74: error = 2.18e-05\n",
  650. "max u: 1.00000250235\n",
  651. "t = 4.76: error = 2.16e-05\n",
  652. "max u: 1.00000080827\n",
  653. "t = 4.78: error = 2.13e-05\n",
  654. "max u: 1.00000246514\n",
  655. "t = 4.80: error = 2.12e-05\n",
  656. "max u: 1.00000079236\n",
  657. "t = 4.82: error = 2.09e-05\n",
  658. "max u: 1.00000242828\n",
  659. "t = 4.84: error = 2.08e-05\n",
  660. "max u: 1.00000077667\n",
  661. "t = 4.86: error = 2.05e-05\n",
  662. "max u: 1.00000239178\n",
  663. "t = 4.88: error = 2.04e-05\n",
  664. "max u: 1.00000076121\n",
  665. "t = 4.90: error = 2.01e-05\n",
  666. "max u: 1.00000235562\n",
  667. "t = 4.92: error = 2e-05\n",
  668. "max u: 1.00000074597\n",
  669. "t = 4.94: error = 1.97e-05\n",
  670. "max u: 1.00000231982\n",
  671. "t = 4.96: error = 1.96e-05\n",
  672. "max u: 1.00000073096\n",
  673. "t = 4.98: error = 1.94e-05\n",
  674. "max u: 1.00000228437\n",
  675. "t = 5.00: error = 1.92e-05\n",
  676. "max u: 1.00000071616\n",
  677. "t = 5.02: error = 1.9e-05\n",
  678. "max u: 1.00000224927\n",
  679. "t = 5.04: error = 1.89e-05\n",
  680. "max u: 1.00000070157\n",
  681. "t = 5.06: error = 1.86e-05\n",
  682. "max u: 1.00000221453\n",
  683. "t = 5.08: error = 1.85e-05\n",
  684. "max u: 1.00000068721\n",
  685. "t = 5.10: error = 1.83e-05\n",
  686. "max u: 1.00000218014\n",
  687. "t = 5.12: error = 1.82e-05\n",
  688. "max u: 1.00000067305\n",
  689. "t = 5.14: error = 1.8e-05\n",
  690. "max u: 1.00000214609\n",
  691. "t = 5.16: error = 1.78e-05\n",
  692. "max u: 1.0000006591\n",
  693. "t = 5.18: error = 1.76e-05\n",
  694. "max u: 1.0000021124\n",
  695. "t = 5.20: error = 1.75e-05\n",
  696. "max u: 1.00000064537\n",
  697. "t = 5.22: error = 1.73e-05\n",
  698. "max u: 1.00000207906\n",
  699. "t = 5.24: error = 1.72e-05\n",
  700. "max u: 1.00000063183\n",
  701. "t = 5.26: error = 1.7e-05\n",
  702. "max u: 1.00000204607\n",
  703. "t = 5.28: error = 1.69e-05\n",
  704. "max u: 1.0000006185\n",
  705. "t = 5.30: error = 1.67e-05\n",
  706. "max u: 1.00000201343\n",
  707. "t = 5.32: error = 1.66e-05\n",
  708. "max u: 1.00000060538\n",
  709. "t = 5.34: error = 1.64e-05\n",
  710. "max u: 1.00000198113\n",
  711. "t = 5.36: error = 1.63e-05\n",
  712. "max u: 1.00000059245\n",
  713. "t = 5.38: error = 1.61e-05\n",
  714. "max u: 1.00000194918\n",
  715. "t = 5.40: error = 1.6e-05\n",
  716. "max u: 1.00000058035\n",
  717. "t = 5.42: error = 1.58e-05\n",
  718. "max u: 1.00000191758\n",
  719. "t = 5.44: error = 1.57e-05\n",
  720. "max u: 1.00000057923\n",
  721. "t = 5.46: error = 1.56e-05\n",
  722. "max u: 1.00000188632\n",
  723. "t = 5.48: error = 1.55e-05\n",
  724. "max u: 1.00000057807\n",
  725. "t = 5.50: error = 1.53e-05\n",
  726. "max u: 1.00000185541\n",
  727. "t = 5.52: error = 1.52e-05\n",
  728. "max u: 1.00000057687\n",
  729. "t = 5.54: error = 1.5e-05\n",
  730. "max u: 1.00000182483\n",
  731. "t = 5.56: error = 1.49e-05\n",
  732. "max u: 1.00000057564\n",
  733. "t = 5.58: error = 1.48e-05\n",
  734. "max u: 1.0000017946\n",
  735. "t = 5.60: error = 1.47e-05\n",
  736. "max u: 1.00000057438\n",
  737. "t = 5.62: error = 1.45e-05\n",
  738. "max u: 1.00000176471\n",
  739. "t = 5.64: error = 1.44e-05\n",
  740. "max u: 1.00000057308\n",
  741. "t = 5.66: error = 1.43e-05\n",
  742. "max u: 1.00000173515\n",
  743. "t = 5.68: error = 1.42e-05\n",
  744. "max u: 1.00000057174\n",
  745. "t = 5.70: error = 1.4e-05\n",
  746. "max u: 1.00000170594\n",
  747. "t = 5.72: error = 1.4e-05\n",
  748. "max u: 1.00000057038\n",
  749. "t = 5.74: error = 1.38e-05\n",
  750. "max u: 1.00000167705\n",
  751. "t = 5.76: error = 1.37e-05\n",
  752. "max u: 1.00000056898\n",
  753. "t = 5.78: error = 1.36e-05\n",
  754. "max u: 1.00000164851\n",
  755. "t = 5.80: error = 1.35e-05\n",
  756. "max u: 1.00000056755\n",
  757. "t = 5.82: error = 1.34e-05\n",
  758. "max u: 1.00000162029\n",
  759. "t = 5.84: error = 1.33e-05\n",
  760. "max u: 1.0000005661\n",
  761. "t = 5.86: error = 1.32e-05\n",
  762. "max u: 1.0000015924\n",
  763. "t = 5.88: error = 1.31e-05\n",
  764. "max u: 1.00000056461\n",
  765. "t = 5.90: error = 1.29e-05\n",
  766. "max u: 1.00000156484\n",
  767. "t = 5.92: error = 1.29e-05\n",
  768. "max u: 1.00000056309\n",
  769. "t = 5.94: error = 1.27e-05\n",
  770. "max u: 1.00000153761\n",
  771. "t = 5.96: error = 1.27e-05\n",
  772. "max u: 1.00000056154\n",
  773. "t = 5.98: error = 1.25e-05\n",
  774. "max u: 1.0000015107\n",
  775. "t = 6.00: error = 1.25e-05\n",
  776. "max u: 1.00000055997\n",
  777. "t = 6.02: error = 1.23e-05\n",
  778. "max u: 1.00000148411\n",
  779. "t = 6.04: error = 1.23e-05\n",
  780. "max u: 1.00000055837\n",
  781. "t = 6.06: error = 1.21e-05\n",
  782. "max u: 1.00000145785\n",
  783. "t = 6.08: error = 1.21e-05\n",
  784. "max u: 1.00000055674\n",
  785. "t = 6.10: error = 1.2e-05\n",
  786. "max u: 1.0000014319\n",
  787. "t = 6.12: error = 1.19e-05\n",
  788. "max u: 1.00000055509\n",
  789. "t = 6.14: error = 1.18e-05\n",
  790. "max u: 1.00000140628\n",
  791. "t = 6.16: error = 1.17e-05\n",
  792. "max u: 1.00000055341\n",
  793. "t = 6.18: error = 1.16e-05\n",
  794. "max u: 1.00000138096\n",
  795. "t = 6.20: error = 1.15e-05\n",
  796. "max u: 1.00000055171\n",
  797. "t = 6.22: error = 1.14e-05\n",
  798. "max u: 1.00000135596\n",
  799. "t = 6.24: error = 1.14e-05\n",
  800. "max u: 1.00000054998\n",
  801. "t = 6.26: error = 1.12e-05\n",
  802. "max u: 1.00000133127\n",
  803. "t = 6.28: error = 1.12e-05\n",
  804. "max u: 1.00000054823\n",
  805. "t = 6.30: error = 1.11e-05\n",
  806. "max u: 1.00000130689\n",
  807. "t = 6.32: error = 1.1e-05\n",
  808. "max u: 1.00000054645\n",
  809. "t = 6.34: error = 1.09e-05\n",
  810. "max u: 1.00000128281\n",
  811. "t = 6.36: error = 1.09e-05\n",
  812. "max u: 1.00000054465\n",
  813. "t = 6.38: error = 1.07e-05\n",
  814. "max u: 1.00000125904\n",
  815. "t = 6.40: error = 1.07e-05\n",
  816. "max u: 1.00000054283\n",
  817. "t = 6.42: error = 1.06e-05\n",
  818. "max u: 1.00000123557\n",
  819. "t = 6.44: error = 1.05e-05\n",
  820. "max u: 1.00000054099\n",
  821. "t = 6.46: error = 1.04e-05\n",
  822. "max u: 1.0000012124\n",
  823. "t = 6.48: error = 1.04e-05\n",
  824. "max u: 1.00000053913\n",
  825. "t = 6.50: error = 1.03e-05\n",
  826. "max u: 1.00000118953\n",
  827. "t = 6.52: error = 1.02e-05\n",
  828. "max u: 1.00000053725\n",
  829. "t = 6.54: error = 1.01e-05\n",
  830. "max u: 1.00000116695\n",
  831. "t = 6.56: error = 1.01e-05\n",
  832. "max u: 1.00000053535\n",
  833. "t = 6.58: error = 9.98e-06\n",
  834. "max u: 1.00000114467\n",
  835. "t = 6.60: error = 9.93e-06\n",
  836. "max u: 1.00000053343\n",
  837. "t = 6.62: error = 9.84e-06\n",
  838. "max u: 1.00000112267\n",
  839. "t = 6.64: error = 9.79e-06\n",
  840. "max u: 1.00000053149\n",
  841. "t = 6.66: error = 9.7e-06\n",
  842. "max u: 1.00000110097\n",
  843. "t = 6.68: error = 9.65e-06\n",
  844. "max u: 1.00000052953\n",
  845. "t = 6.70: error = 9.56e-06\n",
  846. "max u: 1.00000107955\n",
  847. "t = 6.72: error = 9.52e-06\n",
  848. "max u: 1.00000052756\n",
  849. "t = 6.74: error = 9.43e-06\n",
  850. "max u: 1.00000105841\n",
  851. "t = 6.76: error = 9.38e-06\n",
  852. "max u: 1.00000052556\n",
  853. "t = 6.78: error = 9.29e-06\n",
  854. "max u: 1.00000103755\n",
  855. "t = 6.80: error = 9.25e-06\n",
  856. "max u: 1.00000052356\n",
  857. "t = 6.82: error = 9.17e-06\n",
  858. "max u: 1.00000101698\n",
  859. "t = 6.84: error = 9.12e-06\n",
  860. "max u: 1.00000052153\n",
  861. "t = 6.86: error = 9.04e-06\n",
  862. "max u: 1.00000099668\n",
  863. "t = 6.88: error = 9e-06\n",
  864. "max u: 1.00000051949\n",
  865. "t = 6.90: error = 8.91e-06\n",
  866. "max u: 1.00000097665\n",
  867. "t = 6.92: error = 8.87e-06\n",
  868. "max u: 1.00000051744\n",
  869. "t = 6.94: error = 8.79e-06\n",
  870. "max u: 1.0000009569\n",
  871. "t = 6.96: error = 8.75e-06\n",
  872. "max u: 1.00000051537\n"
  873. ]
  874. },
  875. {
  876. "name": "stdout",
  877. "output_type": "stream",
  878. "text": [
  879. "t = 6.98: error = 8.67e-06\n",
  880. "max u: 1.00000093741\n",
  881. "t = 7.00: error = 8.63e-06\n",
  882. "max u: 1.00000051328\n",
  883. "t = 7.02: error = 8.55e-06\n",
  884. "max u: 1.00000091819\n",
  885. "t = 7.04: error = 8.51e-06\n",
  886. "max u: 1.00000051118\n",
  887. "t = 7.06: error = 8.44e-06\n",
  888. "max u: 1.00000089924\n",
  889. "t = 7.08: error = 8.4e-06\n",
  890. "max u: 1.00000050907\n",
  891. "t = 7.10: error = 8.32e-06\n",
  892. "max u: 1.00000088054\n",
  893. "t = 7.12: error = 8.29e-06\n",
  894. "max u: 1.00000050695\n",
  895. "t = 7.14: error = 8.21e-06\n",
  896. "max u: 1.00000086211\n",
  897. "t = 7.16: error = 8.17e-06\n",
  898. "max u: 1.00000050481\n",
  899. "t = 7.18: error = 8.1e-06\n",
  900. "max u: 1.00000084393\n",
  901. "t = 7.20: error = 8.07e-06\n",
  902. "max u: 1.00000050267\n",
  903. "t = 7.22: error = 7.99e-06\n",
  904. "max u: 1.00000082601\n",
  905. "t = 7.24: error = 7.96e-06\n",
  906. "max u: 1.00000050051\n",
  907. "t = 7.26: error = 7.89e-06\n",
  908. "max u: 1.00000080834\n",
  909. "t = 7.28: error = 7.85e-06\n",
  910. "max u: 1.00000049834\n",
  911. "t = 7.30: error = 7.78e-06\n",
  912. "max u: 1.00000079092\n",
  913. "t = 7.32: error = 7.75e-06\n",
  914. "max u: 1.00000049616\n",
  915. "t = 7.34: error = 7.68e-06\n",
  916. "max u: 1.00000077375\n",
  917. "t = 7.36: error = 7.65e-06\n",
  918. "max u: 1.00000049397\n",
  919. "t = 7.38: error = 7.58e-06\n",
  920. "max u: 1.00000075682\n",
  921. "t = 7.40: error = 7.55e-06\n",
  922. "max u: 1.00000049176\n",
  923. "t = 7.42: error = 7.48e-06\n",
  924. "max u: 1.00000074013\n",
  925. "t = 7.44: error = 7.45e-06\n",
  926. "max u: 1.00000048956\n",
  927. "t = 7.46: error = 7.39e-06\n",
  928. "max u: 1.00000072368\n",
  929. "t = 7.48: error = 7.36e-06\n",
  930. "max u: 1.00000048734\n",
  931. "t = 7.50: error = 7.29e-06\n",
  932. "max u: 1.00000070747\n",
  933. "t = 7.52: error = 7.26e-06\n",
  934. "max u: 1.00000048511\n",
  935. "t = 7.54: error = 7.2e-06\n",
  936. "max u: 1.0000006915\n",
  937. "t = 7.56: error = 7.17e-06\n",
  938. "max u: 1.00000048288\n",
  939. "t = 7.58: error = 7.11e-06\n",
  940. "max u: 1.00000067576\n",
  941. "t = 7.60: error = 7.08e-06\n",
  942. "max u: 1.00000048063\n",
  943. "t = 7.62: error = 7.02e-06\n",
  944. "max u: 1.00000066024\n",
  945. "t = 7.64: error = 6.99e-06\n",
  946. "max u: 1.00000047838\n",
  947. "t = 7.66: error = 6.93e-06\n",
  948. "max u: 1.00000064496\n",
  949. "t = 7.68: error = 6.9e-06\n",
  950. "max u: 1.00000047613\n",
  951. "t = 7.70: error = 6.84e-06\n",
  952. "max u: 1.0000006299\n",
  953. "t = 7.72: error = 6.81e-06\n",
  954. "max u: 1.00000047386\n",
  955. "t = 7.74: error = 6.76e-06\n",
  956. "max u: 1.00000061506\n",
  957. "t = 7.76: error = 6.73e-06\n",
  958. "max u: 1.00000047159\n",
  959. "t = 7.78: error = 6.67e-06\n",
  960. "max u: 1.00000060045\n",
  961. "t = 7.80: error = 6.65e-06\n",
  962. "max u: 1.00000046932\n",
  963. "t = 7.82: error = 6.59e-06\n",
  964. "max u: 1.00000058605\n",
  965. "t = 7.84: error = 6.56e-06\n",
  966. "max u: 1.00000046704\n",
  967. "t = 7.86: error = 6.51e-06\n",
  968. "max u: 1.00000057187\n",
  969. "t = 7.88: error = 6.48e-06\n",
  970. "max u: 1.00000046475\n",
  971. "t = 7.90: error = 6.43e-06\n",
  972. "max u: 1.0000005579\n",
  973. "t = 7.92: error = 6.4e-06\n",
  974. "max u: 1.00000046246\n",
  975. "t = 7.94: error = 6.35e-06\n",
  976. "max u: 1.00000054414\n",
  977. "t = 7.96: error = 6.32e-06\n",
  978. "max u: 1.00000046017\n",
  979. "t = 7.98: error = 6.27e-06\n",
  980. "max u: 1.00000053059\n",
  981. "t = 8.00: error = 6.25e-06\n",
  982. "max u: 1.00000045787\n",
  983. "t = 8.02: error = 6.19e-06\n",
  984. "max u: 1.00000051725\n",
  985. "t = 8.04: error = 6.17e-06\n",
  986. "max u: 1.00000045556\n",
  987. "t = 8.06: error = 6.12e-06\n",
  988. "max u: 1.00000050411\n",
  989. "t = 8.08: error = 6.1e-06\n",
  990. "max u: 1.00000045326\n",
  991. "t = 8.10: error = 6.05e-06\n",
  992. "max u: 1.00000049117\n",
  993. "t = 8.12: error = 6.02e-06\n",
  994. "max u: 1.00000045095\n",
  995. "t = 8.14: error = 5.97e-06\n",
  996. "max u: 1.00000047843\n",
  997. "t = 8.16: error = 5.95e-06\n",
  998. "max u: 1.00000044864\n",
  999. "t = 8.18: error = 5.9e-06\n",
  1000. "max u: 1.00000046589\n",
  1001. "t = 8.20: error = 5.88e-06\n",
  1002. "max u: 1.00000044632\n",
  1003. "t = 8.22: error = 5.83e-06\n",
  1004. "max u: 1.00000045354\n",
  1005. "t = 8.24: error = 5.81e-06\n",
  1006. "max u: 1.00000044401\n",
  1007. "t = 8.26: error = 5.76e-06\n",
  1008. "max u: 1.00000044139\n",
  1009. "t = 8.28: error = 5.74e-06\n",
  1010. "max u: 1.00000044169\n",
  1011. "t = 8.30: error = 5.69e-06\n",
  1012. "max u: 1.00000042942\n",
  1013. "t = 8.32: error = 5.67e-06\n",
  1014. "max u: 1.00000043937\n",
  1015. "t = 8.34: error = 5.63e-06\n",
  1016. "max u: 1.00000041765\n",
  1017. "t = 8.36: error = 5.6e-06\n",
  1018. "max u: 1.00000043705\n",
  1019. "t = 8.38: error = 5.56e-06\n",
  1020. "max u: 1.00000040882\n",
  1021. "t = 8.40: error = 5.54e-06\n",
  1022. "max u: 1.00000043472\n",
  1023. "t = 8.42: error = 5.49e-06\n",
  1024. "max u: 1.00000040465\n",
  1025. "t = 8.44: error = 5.47e-06\n",
  1026. "max u: 1.0000004324\n",
  1027. "t = 8.46: error = 5.43e-06\n",
  1028. "max u: 1.00000040053\n",
  1029. "t = 8.48: error = 5.41e-06\n",
  1030. "max u: 1.00000043008\n",
  1031. "t = 8.50: error = 5.37e-06\n",
  1032. "max u: 1.00000039643\n",
  1033. "t = 8.52: error = 5.35e-06\n",
  1034. "max u: 1.00000042775\n",
  1035. "t = 8.54: error = 5.3e-06\n",
  1036. "max u: 1.00000039238\n",
  1037. "t = 8.56: error = 5.29e-06\n",
  1038. "max u: 1.00000042543\n",
  1039. "t = 8.58: error = 5.24e-06\n",
  1040. "max u: 1.00000038837\n",
  1041. "t = 8.60: error = 5.22e-06\n",
  1042. "max u: 1.00000042311\n",
  1043. "t = 8.62: error = 5.18e-06\n",
  1044. "max u: 1.0000003844\n",
  1045. "t = 8.64: error = 5.16e-06\n",
  1046. "max u: 1.00000042078\n",
  1047. "t = 8.66: error = 5.12e-06\n",
  1048. "max u: 1.00000038046\n",
  1049. "t = 8.68: error = 5.1e-06\n",
  1050. "max u: 1.00000041846\n",
  1051. "t = 8.70: error = 5.06e-06\n",
  1052. "max u: 1.00000037656\n",
  1053. "t = 8.72: error = 5.05e-06\n",
  1054. "max u: 1.00000041614\n",
  1055. "t = 8.74: error = 5.01e-06\n",
  1056. "max u: 1.0000003727\n",
  1057. "t = 8.76: error = 4.99e-06\n",
  1058. "max u: 1.00000041382\n",
  1059. "t = 8.78: error = 4.95e-06\n",
  1060. "max u: 1.00000036887\n",
  1061. "t = 8.80: error = 4.93e-06\n",
  1062. "max u: 1.00000041151\n",
  1063. "t = 8.82: error = 4.89e-06\n",
  1064. "max u: 1.00000036509\n",
  1065. "t = 8.84: error = 4.88e-06\n",
  1066. "max u: 1.00000040919\n",
  1067. "t = 8.86: error = 4.84e-06\n",
  1068. "max u: 1.00000036134\n",
  1069. "t = 8.88: error = 4.82e-06\n",
  1070. "max u: 1.00000040688\n",
  1071. "t = 8.90: error = 4.78e-06\n",
  1072. "max u: 1.00000035762\n",
  1073. "t = 8.92: error = 4.77e-06\n",
  1074. "max u: 1.00000040456\n",
  1075. "t = 8.94: error = 4.73e-06\n",
  1076. "max u: 1.00000035394\n",
  1077. "t = 8.96: error = 4.71e-06\n",
  1078. "max u: 1.00000040226\n",
  1079. "t = 8.98: error = 4.68e-06\n",
  1080. "max u: 1.0000003503\n",
  1081. "t = 9.00: error = 4.66e-06\n",
  1082. "max u: 1.00000039995\n",
  1083. "t = 9.02: error = 4.62e-06\n",
  1084. "max u: 1.00000034669\n",
  1085. "t = 9.04: error = 4.61e-06\n",
  1086. "max u: 1.00000039765\n",
  1087. "t = 9.06: error = 4.57e-06\n",
  1088. "max u: 1.00000034312\n",
  1089. "t = 9.08: error = 4.56e-06\n",
  1090. "max u: 1.00000039535\n",
  1091. "t = 9.10: error = 4.52e-06\n",
  1092. "max u: 1.00000033959\n",
  1093. "t = 9.12: error = 4.5e-06\n",
  1094. "max u: 1.00000039305\n",
  1095. "t = 9.14: error = 4.47e-06\n",
  1096. "max u: 1.00000033608\n",
  1097. "t = 9.16: error = 4.45e-06\n",
  1098. "max u: 1.00000039075\n",
  1099. "t = 9.18: error = 4.42e-06\n",
  1100. "max u: 1.00000033262\n",
  1101. "t = 9.20: error = 4.41e-06\n",
  1102. "max u: 1.00000038846\n",
  1103. "t = 9.22: error = 4.37e-06\n",
  1104. "max u: 1.00000032918\n",
  1105. "t = 9.24: error = 4.36e-06\n",
  1106. "max u: 1.00000038618\n",
  1107. "t = 9.26: error = 4.32e-06\n",
  1108. "max u: 1.00000032578\n",
  1109. "t = 9.28: error = 4.31e-06\n",
  1110. "max u: 1.0000003839\n",
  1111. "t = 9.30: error = 4.28e-06\n",
  1112. "max u: 1.00000032242\n",
  1113. "t = 9.32: error = 4.26e-06\n",
  1114. "max u: 1.00000038162\n",
  1115. "t = 9.34: error = 4.23e-06\n",
  1116. "max u: 1.00000031908\n",
  1117. "t = 9.36: error = 4.21e-06\n",
  1118. "max u: 1.00000037935\n",
  1119. "t = 9.38: error = 4.18e-06\n",
  1120. "max u: 1.00000031578\n",
  1121. "t = 9.40: error = 4.17e-06\n",
  1122. "max u: 1.00000037708\n",
  1123. "t = 9.42: error = 4.14e-06\n",
  1124. "max u: 1.00000031252\n",
  1125. "t = 9.44: error = 4.12e-06\n",
  1126. "max u: 1.00000037481\n",
  1127. "t = 9.46: error = 4.09e-06\n",
  1128. "max u: 1.00000030928\n",
  1129. "t = 9.48: error = 4.08e-06\n",
  1130. "max u: 1.00000037256\n",
  1131. "t = 9.50: error = 4.05e-06\n",
  1132. "max u: 1.00000030608\n",
  1133. "t = 9.52: error = 4.03e-06\n",
  1134. "max u: 1.0000003703\n",
  1135. "t = 9.54: error = 4e-06\n",
  1136. "max u: 1.00000030291\n",
  1137. "t = 9.56: error = 3.99e-06\n",
  1138. "max u: 1.00000036805\n",
  1139. "t = 9.58: error = 3.96e-06\n",
  1140. "max u: 1.00000029977\n",
  1141. "t = 9.60: error = 3.95e-06\n",
  1142. "max u: 1.00000036581\n",
  1143. "t = 9.62: error = 3.92e-06\n",
  1144. "max u: 1.00000029666\n",
  1145. "t = 9.64: error = 3.91e-06\n",
  1146. "max u: 1.00000036357\n",
  1147. "t = 9.66: error = 3.88e-06\n",
  1148. "max u: 1.00000029359\n",
  1149. "t = 9.68: error = 3.86e-06\n",
  1150. "max u: 1.00000036134\n",
  1151. "t = 9.70: error = 3.83e-06\n",
  1152. "max u: 1.00000029054\n",
  1153. "t = 9.72: error = 3.82e-06\n",
  1154. "max u: 1.00000035911\n",
  1155. "t = 9.74: error = 3.79e-06\n",
  1156. "max u: 1.00000028753\n",
  1157. "t = 9.76: error = 3.78e-06\n",
  1158. "max u: 1.00000035689\n",
  1159. "t = 9.78: error = 3.75e-06\n",
  1160. "max u: 1.00000028454\n",
  1161. "t = 9.80: error = 3.74e-06\n",
  1162. "max u: 1.00000035468\n",
  1163. "t = 9.82: error = 3.71e-06\n",
  1164. "max u: 1.00000028159\n",
  1165. "t = 9.84: error = 3.7e-06\n",
  1166. "max u: 1.00000035247\n",
  1167. "t = 9.86: error = 3.67e-06\n",
  1168. "max u: 1.00000027867\n",
  1169. "t = 9.88: error = 3.66e-06\n",
  1170. "max u: 1.00000035027\n",
  1171. "t = 9.90: error = 3.63e-06\n",
  1172. "max u: 1.00000027577\n",
  1173. "t = 9.92: error = 3.62e-06\n",
  1174. "max u: 1.00000034808\n",
  1175. "t = 9.94: error = 3.6e-06\n",
  1176. "max u: 1.00000027291\n",
  1177. "t = 9.96: error = 3.58e-06\n",
  1178. "max u: 1.00000034589\n",
  1179. "t = 9.98: error = 3.56e-06\n",
  1180. "max u: 1.00000027007\n",
  1181. "t = 10.00: error = 3.55e-06\n",
  1182. "max u: 1.00000034371\n"
  1183. ]
  1184. },
  1185. {
  1186. "ename": "NameError",
  1187. "evalue": "name 'interactive' is not defined",
  1188. "output_type": "error",
  1189. "traceback": [
  1190. "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
  1191. "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)",
  1192. "\u001b[0;32m<ipython-input-50-00a50a4c75fe>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m 126\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 127\u001b[0m \u001b[0;31m# Hold plot\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 128\u001b[0;31m \u001b[0minteractive\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
  1193. "\u001b[0;31mNameError\u001b[0m: name 'interactive' is not defined"
  1194. ]
  1195. },
  1196. {
  1197. "data": {
  1198. "image/png": "iVBORw0KGgoAAAANSUhEUgAAAQIAAAD8CAYAAACcoKqNAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJztnXl8VOW9/9/PTPYdkrCEhCRAwiLKFnYFXKhLLS5IK71ttVq1Wuvtr7e9tb/eX6+193a53tra1lu12orWatUuUjesCu6g7EtCQggEEsi+J7Of5/fHzJDJrGeAQPR+377GzJnzeeb7Oec88z1nhu9zHqW1RhCE/91YzrYBQRDOPpIIBEGQRCAIgiQCQRCQRCAIApIIBEFAEoEgCEgiEAQBSQSCIAAJZytwXl6eLikpOVvhBeF/Bdu2bWvTWufH0p21RFBSUsLWrVvPVnhB+F+BUqrejE6+GgiCIIlAEARJBIIgIIlAEAQkEQiCgIlEoJT6nVKqRSm1N8J6pZT6pVKqVim1Wyk19/TbFARhODFzRfA4cFmU9ZcDZb7HrcBvTt2WIAhnkph1BFrrt5VSJVEkVwFPaO89zzYrpXKUUuO11sdP1dxKyxoAftv+CAAvVFbh9Hi4cPIk5owfj9USmsdWWtbw206v/lB3J38/WMVFEyezrKiUrKTk8Pour16jeWDne8zMHcclRVMoyRoV2VP3wwC8erSaDvsAF0+Ywrz8IhIiefLpm2y9PH1wOxeNL2P5+MnkJKdG1QM8VPU+pZm5XDyhjMmZuSilwnvybcfGo3XU93ZxSdFkFowrIslqDR/Dt1+77HYe27aN5aWlXFhaSm5aWlj9Y82/PbH8xNvbGZOVzvJzJlE+Pi+ip8ePeLdj1856DtQ0sXhJGbPnlJCUHNr1VlrWsO7ggwDY+h0888AG5q2YzoJLZjJ6bHZYPcC6ww8B8OKftpCansyi5dOYMqMgxNOJGIe856rqPQ3s3lLHwgunMXvxFFJSk8Lr6/4HAJfLw1O/eJXzFpWx8OIZ5BdE7h/rDnrb/OO5DwFYcMk5TJ09EUuE/rGu1rvdh6saef/lHSy6dBZzLzyHtMyUqPvJ8Gieuv9lps0tYeGnzmXcxLwQvRlOR0HRBOBowHKD77WQRKCUuhXvVQMTJ040HeDXH2wBYH9rKwc7OqhqbeW6mTO5vLxsyMH2H4Rf7vgAgH6Xkw2HD1DZ0UptVzs3n1tBZphkcEvOrZz71o0AvN14iLcbD1HV0cLN58xnxugx4T3tfQ+Agz3tVHY2UdXVzOrS81hVcg6WMB3w15XvAuD0eHjpaCX7u1o40NPKV6YuCpsMbsm+jVkffBGA95sP8VpjNfu7mrmxfD6zcieE9fTLne8DcKS3m+0tjVR1tHB1XzefLTs3bNL89RbvfjUMg1dqatjX0kJNWxu3VlSQl54eor957C0s+MPNAGyra6R7wE71sVbWnj+bismFYT39YZ13u9tae9m54zB1tS0ca+zkyqvmkpAQmqD++PNXvU+0ZvOG3dTsrOdw1TFW334J+RNCP3gAf3x4IwBVu4/S3tzDoerjXPHZhVQsLRui8/ePP/7mTQC6O/rZ+k4NddXHaTjcxqp/WkxScmLo+//ytRPPP3yzispthzm0/xirb72QguLwH7w//nIDAAf3NHDscBt1VY1cdv1iFn1qZtg++8f/fhGAvu4BNr+yi0N7Gzh6oImrb7uY1IzQZHBiPwFbN1ay691q6iobufa2iymeOj6sp6horWM+gBJgb4R1LwLnByy/AVTEes958+bpeKlqadF9DodpfVNfrz7a02VabxiG3tl6TLs9HtNtqjtbdI/TblrfauvTh3s7TOu11npXW6N2xeHpQGeb7rQPmNZ32Wy6tr1dG4Zhus3eI03a6XKb1jccbdednX2m9bZ+u66rbIjL04HKRu2wO03rjx9t1+3N3ab1TodLH9hzJC5PB/c1aNuA+T7b0tCuW462m9a73R69f8dh7YnQP4Ct2sRnXGkTdzH2fTV4UWs9M8y6h4FNWuunfcvVwAod46tBRUWFlhJjQRhelFLbtNYVsXSn458P1wNf8v3rwSKgO1YSEARhZBHzNwKl1NPACiBPKdUA/DuQCKC1fgh4GbgCqAUGgC8Pl1lBEIYHM/9qsDbGeg187bQ5EgThjCOVhYIgSCIQBEESgSAISCIQBAFJBIIgMMITwbJV97Fs1X28e+gwTo+H95rrqO5uJloR1LJV9/GHDz6kvX+AI71dbGqow+52x4xR1dLqLbVt3E2bvTemr421dTjcbrZ31FHd0xjT07JV99HS10ezrYdNzfuxeZwx9XuON2FozauN+2iy9cT0tKG6lgGni22tjexoPYZhwtOxnh46B2xsqD5AvzO2p+2Nx/AYBht31nKsvTumpxcr99PrcFBT08SePUfxeIyYMY50dWEbcPLWP/bR32ePqf/oaANuw2Dz+wdoONoR09MLeyvptts5XNPEri0Hcbs8MWPUtXfgcrrZ9NJOejr7Y+rfP1yPy+Nh6/u11B9sidk/nt22k44BGw2H29j2fi1OZ+w+W9PahtvtYeOft9DVGr1/xMJUZeFwYKaycNmq+/C7cwKuqxPozexjYuYovnnOhVxROCNkYMkFq+4DwAD6lkB3nkFaSiJry2fxjdnnh4w1CIzRDSSu9eDK6GdBXinfPudypmaF1m37Y7gArrOg89sYn57FLZNXcnnBXCzKElav8RZaOL/YT1q6YlXRHO6cegk5SUMH+QR66gHUGrCnDzA3t4i7z72U80aHjjXwx3ADtiuS6UqxkZ+ezl3nLuHz5bNDxhqcv+o+lM9TLzCwOIFEq5UrZ0zlXy88P2SsQaCnPiBhTiquVhczJo7hm9cup6I8dKyB35MH0DOTSdoxwKiUVNauXcTqaytCxhoE76cs7SKt1cP5F03nK3etZMy4oQOPAj3ZgPSJiSTs6ae0JJ9b77iYBQsnR/XEVAtpGzsYZU3i6i+dz5qvLAsZaxDoqR8Y7bGRctjOghXTuOU7n6ZgYm5ETw4gtdBK0ofdTCzM5aa7VrLkwmlR+6ynXJG2uZccI5FPr5nP529bQWpa+D7rP3a5fe0k7epg7orp3Pafn6N4WsEJrdnKwrN2F2Oz+HfZU7+/icq+Rjxolo8rY3Ry6Ai5QP1PHljDmOx0Xm+o5ZKiKZTnhI6QC2zz5e8s4zOzZvKX4x9xTvYEKnJLSLaGDkAJjPH4ozdy3Gii121naf40cpMzo+rvvX81k8dm8/Lx3SwfO5VpWeOjegJ47anb+fvxXUzOzGNR/iRSE6J7+u0jX6LF3cux/l4uLpzM+PSssHp/Wvh/913DzHFjeG7XXlZMmcS548eGHTQVGOOlP9zGpm0HGTcqk0XTJpKWEjpqL1D/4ENfQDc7ODy/jSWLpzBuXE5U/d0/WcXCggm89PSHVCyZwrSZhVit4S9e/W3+8sQt7H6rjoxrU6hYMImMMAN1AvUPPLiW9HYP+885wsIV05lQEn7wkF//rR99mvMnFvPS4+8ze9FkZswpJiExdNBUYJs/Pf4Vat+tx3qlhYqlU8jKjt5n//tXnyPfnsj2GQdYuHwaEyflR+0ft3//YlZOncqG/3mDGf9vCucuLScx6eQ+0iP6ikAQhFPjTI41EAThY44kAkEQJBEIgiCJQBAEJBEIgoAkAkEQkEQgCAKSCARB4GOSCKbe+3NcHjfNtui17YH6qff+nBZbFx4jcm17sH7AbafHFbmOPLiN0+Wi2dYZl6d2ezduI3Jte7De7nHQ6TDvyeZ00jTQGbW2PcSTrQdHlPEYwXqHx0lHv3lP3f39tPR0xeWpa6APh91lWu/0uOjsjj5GJLhNa3d8+6nH3sfAQOSxD8FtXB4X7V3x9dm2ni6MOPpsn3OAvt4BUzGiMaIrC6fe+3MG3Wk0YMHDhcvT+VzZClaMnx5SgjnYxt/SQKG4+/q5fLZkCelBYw1C9RqFk5uvm8iaiRdRmhE61iC4jcLDnIoEbp59IRePnxVSohvek4vv/NMcVhctIztorEF4Ty6uX1X
  1199. "text/plain": [
  1200. "<Figure size 432x288 with 1 Axes>"
  1201. ]
  1202. },
  1203. "metadata": {
  1204. "needs_background": "light"
  1205. },
  1206. "output_type": "display_data"
  1207. }
  1208. ],
  1209. "source": [
  1210. "# %load ft07_navier_stokes_channel.py\n",
  1211. "\"\"\"\n",
  1212. "FEniCS tutorial demo program: Incompressible Navier-Stokes equations\n",
  1213. "for channel flow (Poisseuille) on the unit square using the\n",
  1214. "Incremental Pressure Correction Scheme (IPCS).\n",
  1215. "\n",
  1216. " u' + u . nabla(u)) - div(sigma(u, p)) = f\n",
  1217. " div(u) = 0\n",
  1218. "\"\"\"\n",
  1219. "\n",
  1220. "from __future__ import print_function\n",
  1221. "from fenics import *\n",
  1222. "import numpy as np\n",
  1223. "\n",
  1224. "T = 10.0 # final time\n",
  1225. "num_steps = 500 # number of time steps\n",
  1226. "dt = T / num_steps # time step size\n",
  1227. "mu = 1 # kinematic viscosity\n",
  1228. "rho = 1 # density\n",
  1229. "\n",
  1230. "# Create mesh and define function spaces\n",
  1231. "mesh = UnitSquareMesh(16, 16)\n",
  1232. "V = VectorFunctionSpace(mesh, 'P', 2)\n",
  1233. "Q = FunctionSpace(mesh, 'P', 1)\n",
  1234. "\n",
  1235. "# Define boundaries\n",
  1236. "inflow = 'near(x[0], 0)'\n",
  1237. "outflow = 'near(x[0], 1)'\n",
  1238. "walls = 'near(x[1], 0) || near(x[1], 1)'\n",
  1239. "\n",
  1240. "# Define boundary conditions\n",
  1241. "bcu_noslip = DirichletBC(V, Constant((0, 0)), walls)\n",
  1242. "bcp_inflow = DirichletBC(Q, Constant(8), inflow)\n",
  1243. "bcp_outflow = DirichletBC(Q, Constant(0), outflow)\n",
  1244. "bcu = [bcu_noslip]\n",
  1245. "bcp = [bcp_inflow, bcp_outflow]\n",
  1246. "\n",
  1247. "# Define trial and test functions\n",
  1248. "u = TrialFunction(V)\n",
  1249. "v = TestFunction(V)\n",
  1250. "p = TrialFunction(Q)\n",
  1251. "q = TestFunction(Q)\n",
  1252. "\n",
  1253. "# Define functions for solutions at previous and current time steps\n",
  1254. "u_n = Function(V)\n",
  1255. "u_ = Function(V)\n",
  1256. "p_n = Function(Q)\n",
  1257. "p_ = Function(Q)\n",
  1258. "\n",
  1259. "# Define expressions used in variational forms\n",
  1260. "U = 0.5*(u_n + u)\n",
  1261. "n = FacetNormal(mesh)\n",
  1262. "f = Constant((0, 0))\n",
  1263. "k = Constant(dt)\n",
  1264. "mu = Constant(mu)\n",
  1265. "rho = Constant(rho)\n",
  1266. "\n",
  1267. "# Define strain-rate tensor\n",
  1268. "def epsilon(u):\n",
  1269. " return sym(nabla_grad(u))\n",
  1270. "\n",
  1271. "# Define stress tensor\n",
  1272. "def sigma(u, p):\n",
  1273. " return 2*mu*epsilon(u) - p*Identity(len(u))\n",
  1274. "\n",
  1275. "# Define variational problem for step 1\n",
  1276. "F1 = rho*dot((u - u_n) / k, v)*dx + \\\n",
  1277. " rho*dot(dot(u_n, nabla_grad(u_n)), v)*dx \\\n",
  1278. " + inner(sigma(U, p_n), epsilon(v))*dx \\\n",
  1279. " + dot(p_n*n, v)*ds - dot(mu*nabla_grad(U)*n, v)*ds \\\n",
  1280. " - dot(f, v)*dx\n",
  1281. "a1 = lhs(F1)\n",
  1282. "L1 = rhs(F1)\n",
  1283. "\n",
  1284. "# Define variational problem for step 2\n",
  1285. "a2 = dot(nabla_grad(p), nabla_grad(q))*dx\n",
  1286. "L2 = dot(nabla_grad(p_n), nabla_grad(q))*dx - (1/k)*div(u_)*q*dx\n",
  1287. "\n",
  1288. "# Define variational problem for step 3\n",
  1289. "a3 = dot(u, v)*dx\n",
  1290. "L3 = dot(u_, v)*dx - k*dot(nabla_grad(p_ - p_n), v)*dx\n",
  1291. "\n",
  1292. "# Assemble matrices\n",
  1293. "A1 = assemble(a1)\n",
  1294. "A2 = assemble(a2)\n",
  1295. "A3 = assemble(a3)\n",
  1296. "\n",
  1297. "# Apply boundary conditions to matrices\n",
  1298. "[bc.apply(A1) for bc in bcu]\n",
  1299. "[bc.apply(A2) for bc in bcp]\n",
  1300. "\n",
  1301. "# Time-stepping\n",
  1302. "t = 0\n",
  1303. "for n in range(num_steps):\n",
  1304. "\n",
  1305. " # Update current time\n",
  1306. " t += dt\n",
  1307. "\n",
  1308. " # Step 1: Tentative velocity step\n",
  1309. " b1 = assemble(L1)\n",
  1310. " [bc.apply(b1) for bc in bcu]\n",
  1311. " solve(A1, u_.vector(), b1)\n",
  1312. "\n",
  1313. " # Step 2: Pressure correction step\n",
  1314. " b2 = assemble(L2)\n",
  1315. " [bc.apply(b2) for bc in bcp]\n",
  1316. " solve(A2, p_.vector(), b2)\n",
  1317. "\n",
  1318. " # Step 3: Velocity correction step\n",
  1319. " b3 = assemble(L3)\n",
  1320. " solve(A3, u_.vector(), b3)\n",
  1321. "\n",
  1322. " # Plot solution\n",
  1323. " plot(u_)\n",
  1324. "\n",
  1325. " # Compute error\n",
  1326. " u_e = Expression(('4*x[1]*(1.0 - x[1])', '0'), degree=2)\n",
  1327. " u_e = interpolate(u_e, V)\n",
  1328. " error = np.abs(u_e.vector().get_local() - u_.vector().get_local()).max()\n",
  1329. " print('t = %.2f: error = %.3g' % (t, error))\n",
  1330. " print('max u:', u_.vector().get_local().max())\n",
  1331. "\n",
  1332. " # Update previous solution\n",
  1333. " u_n.assign(u_)\n",
  1334. " p_n.assign(p_)\n",
  1335. "\n",
  1336. "# Hold plot\n",
  1337. "#interactive()\n"
  1338. ]
  1339. },
  1340. {
  1341. "cell_type": "code",
  1342. "execution_count": null,
  1343. "metadata": {},
  1344. "outputs": [],
  1345. "source": []
  1346. }
  1347. ],
  1348. "metadata": {
  1349. "kernelspec": {
  1350. "display_name": "Python 3",
  1351. "language": "python",
  1352. "name": "python3"
  1353. },
  1354. "language_info": {
  1355. "codemirror_mode": {
  1356. "name": "ipython",
  1357. "version": 3
  1358. },
  1359. "file_extension": ".py",
  1360. "mimetype": "text/x-python",
  1361. "name": "python",
  1362. "nbconvert_exporter": "python",
  1363. "pygments_lexer": "ipython3",
  1364. "version": "3.6.7"
  1365. }
  1366. },
  1367. "nbformat": 4,
  1368. "nbformat_minor": 2
  1369. }