docs: add theory part from HP report
1413
docs_sphinx/images/adi_scheme.svg
Normal file
|
After Width: | Height: | Size: 126 KiB |
367
docs_sphinx/images/conservation_law.svg
Normal file
|
After Width: | Height: | Size: 47 KiB |
563
docs_sphinx/images/discretization_1D.svg
Normal file
@ -0,0 +1,563 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
version="1.1"
|
||||
id="svg1"
|
||||
width="650.3999"
|
||||
height="226.6021"
|
||||
viewBox="0 0 650.3999 226.60209"
|
||||
sodipodi:docname="discretization_1D.pdf"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg">
|
||||
<defs
|
||||
id="defs1">
|
||||
<clipPath
|
||||
clipPathUnits="userSpaceOnUse"
|
||||
id="clipPath2">
|
||||
<path
|
||||
d="M 0,0 H 1129.1666 V 393.40646 H 0 Z"
|
||||
transform="scale(0.33298893)"
|
||||
clip-rule="evenodd"
|
||||
id="path2" />
|
||||
</clipPath>
|
||||
<clipPath
|
||||
clipPathUnits="userSpaceOnUse"
|
||||
id="clipPath4">
|
||||
<path
|
||||
d="M 0,0 H 1129.1666 V 390.40335 H 0 Z"
|
||||
transform="matrix(0.33298893,0,0,0.33298893,-0.49999999,-0.49999999)"
|
||||
clip-rule="evenodd"
|
||||
id="path4" />
|
||||
</clipPath>
|
||||
<clipPath
|
||||
clipPathUnits="userSpaceOnUse"
|
||||
id="clipPath6">
|
||||
<path
|
||||
d="M 0,0 H 1129.1666 V 390.40335 H 0 Z"
|
||||
transform="matrix(0.33298893,0,0,0.33298893,-0.49999999,-0.49999999)"
|
||||
clip-rule="evenodd"
|
||||
id="path6" />
|
||||
</clipPath>
|
||||
<clipPath
|
||||
clipPathUnits="userSpaceOnUse"
|
||||
id="clipPath8">
|
||||
<path
|
||||
d="M 0,0 H 1129.1666 V 390.40335 H 0 Z"
|
||||
transform="matrix(0.33298893,0,0,0.33298893,-0.49999999,-0.49999999)"
|
||||
clip-rule="evenodd"
|
||||
id="path8" />
|
||||
</clipPath>
|
||||
<clipPath
|
||||
clipPathUnits="userSpaceOnUse"
|
||||
id="clipPath10">
|
||||
<path
|
||||
d="M 0,0 H 1129.1666 V 390.40335 H 0 Z"
|
||||
transform="matrix(0.33298893,0,0,0.33298893,-0.49999999,-0.49999999)"
|
||||
clip-rule="evenodd"
|
||||
id="path10" />
|
||||
</clipPath>
|
||||
<clipPath
|
||||
clipPathUnits="userSpaceOnUse"
|
||||
id="clipPath12">
|
||||
<path
|
||||
d="M 0,0 H 1129.1666 V 390.40335 H 0 Z"
|
||||
transform="matrix(0.33298893,0,0,0.33298893,-0.49999999,-0.49999999)"
|
||||
clip-rule="evenodd"
|
||||
id="path12" />
|
||||
</clipPath>
|
||||
<clipPath
|
||||
clipPathUnits="userSpaceOnUse"
|
||||
id="clipPath14">
|
||||
<path
|
||||
d="M 0,0 H 1129.1666 V 390.40335 H 0 Z"
|
||||
transform="matrix(0.33298893,0,0,0.33298893,-67.109375,-65.999999)"
|
||||
clip-rule="evenodd"
|
||||
id="path14" />
|
||||
</clipPath>
|
||||
<clipPath
|
||||
clipPathUnits="userSpaceOnUse"
|
||||
id="clipPath16">
|
||||
<path
|
||||
d="M 0,0 H 1129.1666 V 390.40335 H 0 Z"
|
||||
transform="matrix(0.33298893,0,0,0.33298893,-127.10937,-65.999999)"
|
||||
clip-rule="evenodd"
|
||||
id="path16" />
|
||||
</clipPath>
|
||||
<clipPath
|
||||
clipPathUnits="userSpaceOnUse"
|
||||
id="clipPath18">
|
||||
<path
|
||||
d="M 0,0 H 1129.1666 V 390.40335 H 0 Z"
|
||||
transform="matrix(0.33298893,0,0,0.33298893,-187.10938,-65.999999)"
|
||||
clip-rule="evenodd"
|
||||
id="path18" />
|
||||
</clipPath>
|
||||
<clipPath
|
||||
clipPathUnits="userSpaceOnUse"
|
||||
id="clipPath20">
|
||||
<path
|
||||
d="M 0,0 H 1129.1666 V 390.40335 H 0 Z"
|
||||
transform="matrix(0.33298893,0,0,0.33298893,-247.10938,-65.999999)"
|
||||
clip-rule="evenodd"
|
||||
id="path20" />
|
||||
</clipPath>
|
||||
<clipPath
|
||||
clipPathUnits="userSpaceOnUse"
|
||||
id="clipPath22">
|
||||
<path
|
||||
d="M 0,0 H 1129.1666 V 390.40335 H 0 Z"
|
||||
transform="matrix(0.33298893,0,0,0.33298893,-307.10938,-65.999999)"
|
||||
clip-rule="evenodd"
|
||||
id="path22" />
|
||||
</clipPath>
|
||||
<clipPath
|
||||
clipPathUnits="userSpaceOnUse"
|
||||
id="clipPath24">
|
||||
<path
|
||||
d="M 0,0 H 1129.1666 V 390.40335 H 0 Z"
|
||||
transform="matrix(22.390179,0,0,-22.480592,-4236.1206,1319.6518)"
|
||||
clip-rule="evenodd"
|
||||
id="path24" />
|
||||
</clipPath>
|
||||
<clipPath
|
||||
clipPathUnits="userSpaceOnUse"
|
||||
id="clipPath26">
|
||||
<path
|
||||
d="M 0,0 H 1129.1666 V 390.40335 H 0 Z"
|
||||
transform="matrix(31.669276,0,0,-31.797165,-6847.4122,2078.7157)"
|
||||
clip-rule="evenodd"
|
||||
id="path26" />
|
||||
</clipPath>
|
||||
<clipPath
|
||||
clipPathUnits="userSpaceOnUse"
|
||||
id="clipPath28">
|
||||
<path
|
||||
d="M 0,0 H 1129.1666 V 390.40335 H 0 Z"
|
||||
transform="matrix(22.390179,0,0,-24.643363,-8270.5209,1404.1114)"
|
||||
clip-rule="evenodd"
|
||||
id="path28" />
|
||||
</clipPath>
|
||||
<clipPath
|
||||
clipPathUnits="userSpaceOnUse"
|
||||
id="clipPath30">
|
||||
<path
|
||||
d="M 0,0 H 1129.1666 V 390.40335 H 0 Z"
|
||||
transform="matrix(31.669276,0,0,-34.85626,-12553.777,2198.1785)"
|
||||
clip-rule="evenodd"
|
||||
id="path30" />
|
||||
</clipPath>
|
||||
<clipPath
|
||||
clipPathUnits="userSpaceOnUse"
|
||||
id="clipPath32">
|
||||
<path
|
||||
d="M 0,0 H 1129.1666 V 390.40335 H 0 Z"
|
||||
transform="matrix(22.390179,0,0,-24.643363,-12304.921,1404.1114)"
|
||||
clip-rule="evenodd"
|
||||
id="path32" />
|
||||
</clipPath>
|
||||
<clipPath
|
||||
clipPathUnits="userSpaceOnUse"
|
||||
id="clipPath34">
|
||||
<path
|
||||
d="M 0,0 H 1129.1666 V 390.40335 H 0 Z"
|
||||
transform="matrix(31.669276,0,0,-34.85626,-18260.142,2198.1785)"
|
||||
clip-rule="evenodd"
|
||||
id="path34" />
|
||||
</clipPath>
|
||||
<clipPath
|
||||
clipPathUnits="userSpaceOnUse"
|
||||
id="clipPath36">
|
||||
<path
|
||||
d="M 0,0 H 1129.1666 V 390.40335 H 0 Z"
|
||||
transform="matrix(22.390179,0,0,-22.480592,-16339.322,1319.6518)"
|
||||
clip-rule="evenodd"
|
||||
id="path36" />
|
||||
</clipPath>
|
||||
<clipPath
|
||||
clipPathUnits="userSpaceOnUse"
|
||||
id="clipPath38">
|
||||
<path
|
||||
d="M 0,0 H 1129.1666 V 390.40335 H 0 Z"
|
||||
transform="matrix(31.669276,0,0,-31.797165,-23966.51,2078.7157)"
|
||||
clip-rule="evenodd"
|
||||
id="path38" />
|
||||
</clipPath>
|
||||
<clipPath
|
||||
clipPathUnits="userSpaceOnUse"
|
||||
id="clipPath40">
|
||||
<path
|
||||
d="M 0,0 H 1129.1666 V 390.40335 H 0 Z"
|
||||
transform="matrix(22.390179,0,0,-24.643363,-20373.722,1404.1114)"
|
||||
clip-rule="evenodd"
|
||||
id="path40" />
|
||||
</clipPath>
|
||||
<clipPath
|
||||
clipPathUnits="userSpaceOnUse"
|
||||
id="clipPath42">
|
||||
<path
|
||||
d="M 0,0 H 1129.1666 V 390.40335 H 0 Z"
|
||||
transform="matrix(31.669276,0,0,-34.85626,-29672.875,2198.1785)"
|
||||
clip-rule="evenodd"
|
||||
id="path42" />
|
||||
</clipPath>
|
||||
<clipPath
|
||||
clipPathUnits="userSpaceOnUse"
|
||||
id="clipPath44">
|
||||
<path
|
||||
d="M 0,0 H 1129.1666 V 390.40335 H 0 Z"
|
||||
transform="matrix(0.33298893,0,0,0.33298893,-0.49999999,-0.49999999)"
|
||||
clip-rule="evenodd"
|
||||
id="path44" />
|
||||
</clipPath>
|
||||
<clipPath
|
||||
clipPathUnits="userSpaceOnUse"
|
||||
id="clipPath46">
|
||||
<path
|
||||
d="M 0,0 H 1129.1666 V 390.40335 H 0 Z"
|
||||
transform="matrix(0.33298893,0,0,0.33298893,-0.49999999,-0.49999999)"
|
||||
clip-rule="evenodd"
|
||||
id="path46" />
|
||||
</clipPath>
|
||||
<clipPath
|
||||
clipPathUnits="userSpaceOnUse"
|
||||
id="clipPath48">
|
||||
<path
|
||||
d="M 0,0 H 1129.1666 V 390.40335 H 0 Z"
|
||||
transform="matrix(0.33298893,0,0,0.33298893,-0.49999999,-0.49999999)"
|
||||
clip-rule="evenodd"
|
||||
id="path48" />
|
||||
</clipPath>
|
||||
<clipPath
|
||||
clipPathUnits="userSpaceOnUse"
|
||||
id="clipPath50">
|
||||
<path
|
||||
d="M 0,0 H 1129.1666 V 390.40335 H 0 Z"
|
||||
transform="matrix(31.193035,0,0,-34.583265,-14238.804,12659.567)"
|
||||
clip-rule="evenodd"
|
||||
id="path50" />
|
||||
</clipPath>
|
||||
<clipPath
|
||||
clipPathUnits="userSpaceOnUse"
|
||||
id="clipPath52">
|
||||
<path
|
||||
d="M 0,0 H 1129.1666 V 390.40335 H 0 Z"
|
||||
transform="matrix(31.193035,0,0,-34.583265,-15071.803,12659.567)"
|
||||
clip-rule="evenodd"
|
||||
id="path52" />
|
||||
</clipPath>
|
||||
<clipPath
|
||||
clipPathUnits="userSpaceOnUse"
|
||||
id="clipPath54">
|
||||
<path
|
||||
d="M 0,0 H 1129.1666 V 390.40335 H 0 Z"
|
||||
transform="matrix(0.33298893,0,0,0.33298893,-0.49999999,-0.49999999)"
|
||||
clip-rule="evenodd"
|
||||
id="path54" />
|
||||
</clipPath>
|
||||
<clipPath
|
||||
clipPathUnits="userSpaceOnUse"
|
||||
id="clipPath56">
|
||||
<path
|
||||
d="M 0,0 H 1129.1666 V 390.40335 H 0 Z"
|
||||
transform="matrix(0.33298893,0,0,0.33298893,-0.49999999,-0.49999999)"
|
||||
clip-rule="evenodd"
|
||||
id="path56" />
|
||||
</clipPath>
|
||||
<clipPath
|
||||
clipPathUnits="userSpaceOnUse"
|
||||
id="clipPath58">
|
||||
<path
|
||||
d="M 0,0 H 1129.1666 V 390.40335 H 0 Z"
|
||||
transform="matrix(0.33298893,0,0,0.33298893,-0.49999999,-0.49999999)"
|
||||
clip-rule="evenodd"
|
||||
id="path58" />
|
||||
</clipPath>
|
||||
<clipPath
|
||||
clipPathUnits="userSpaceOnUse"
|
||||
id="clipPath60">
|
||||
<path
|
||||
d="M 0,0 H 1129.1666 V 390.40335 H 0 Z"
|
||||
transform="matrix(32.334989,0,0,-32.96522,-4686.8436,11507.254)"
|
||||
clip-rule="evenodd"
|
||||
id="path60" />
|
||||
</clipPath>
|
||||
<clipPath
|
||||
clipPathUnits="userSpaceOnUse"
|
||||
id="clipPath62">
|
||||
<path
|
||||
d="M 0,0 H 1129.1666 V 390.40335 H 0 Z"
|
||||
transform="matrix(32.334989,0,0,-32.96522,-5519.8439,11507.254)"
|
||||
clip-rule="evenodd"
|
||||
id="path62" />
|
||||
</clipPath>
|
||||
<clipPath
|
||||
clipPathUnits="userSpaceOnUse"
|
||||
id="clipPath64">
|
||||
<path
|
||||
d="M 0,0 H 1129.1666 V 390.40335 H 0 Z"
|
||||
transform="matrix(32.334989,0,0,-32.96522,-5139.344,12869.254)"
|
||||
clip-rule="evenodd"
|
||||
id="path64" />
|
||||
</clipPath>
|
||||
<clipPath
|
||||
clipPathUnits="userSpaceOnUse"
|
||||
id="clipPath66">
|
||||
<path
|
||||
d="M 0,0 H 1129.1666 V 390.40335 H 0 Z"
|
||||
transform="matrix(32.334989,0,0,-32.96522,-4466.8437,12183.255)"
|
||||
clip-rule="evenodd"
|
||||
id="path66" />
|
||||
</clipPath>
|
||||
<clipPath
|
||||
clipPathUnits="userSpaceOnUse"
|
||||
id="clipPath68">
|
||||
<path
|
||||
d="M 0,0 H 1129.1666 V 390.40335 H 0 Z"
|
||||
transform="matrix(19.846142,0,0,-26.124175,-1668.8001,5166.3952)"
|
||||
clip-rule="evenodd"
|
||||
id="path68" />
|
||||
</clipPath>
|
||||
<clipPath
|
||||
clipPathUnits="userSpaceOnUse"
|
||||
id="clipPath70">
|
||||
<path
|
||||
d="M 0,0 H 1129.1666 V 390.40335 H 0 Z"
|
||||
transform="matrix(21.454004,0,0,-25.15296,-22356.717,4974.3261)"
|
||||
clip-rule="evenodd"
|
||||
id="path70" />
|
||||
</clipPath>
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="namedview1"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#000000"
|
||||
borderopacity="0.25"
|
||||
inkscape:showpageshadow="2"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pagecheckerboard="0"
|
||||
inkscape:deskcolor="#d1d1d1" />
|
||||
<g
|
||||
id="g1"
|
||||
inkscape:groupmode="layer"
|
||||
inkscape:label="1"
|
||||
transform="translate(144.53332,50.356026)">
|
||||
<path
|
||||
id="path1"
|
||||
d="M 0,0 H 376 V 131 H 0 Z"
|
||||
style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||
transform="matrix(1.7297871,0,0,1.7297871,-144.53332,-50.356024)"
|
||||
clip-path="url(#clipPath2)" />
|
||||
<path
|
||||
id="path3"
|
||||
d="m 40,32 h 60 V 92 H 40 Z"
|
||||
style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(1.7297871,0,0,1.7297871,-143.66842,-49.491131)"
|
||||
clip-path="url(#clipPath4)" />
|
||||
<path
|
||||
id="path5"
|
||||
d="m 100,32 h 60 v 60 h -60 z"
|
||||
style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(1.7297871,0,0,1.7297871,-143.66842,-49.491131)"
|
||||
clip-path="url(#clipPath6)" />
|
||||
<path
|
||||
id="path7"
|
||||
d="m 160,32 h 60 v 60 h -60 z"
|
||||
style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(1.7297871,0,0,1.7297871,-143.66842,-49.491131)"
|
||||
clip-path="url(#clipPath8)" />
|
||||
<path
|
||||
id="path9"
|
||||
d="m 220,32 h 60 v 60 h -60 z"
|
||||
style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(1.7297871,0,0,1.7297871,-143.66842,-49.491131)"
|
||||
clip-path="url(#clipPath10)" />
|
||||
<path
|
||||
id="path11"
|
||||
d="m 280,32 h 60 v 60 h -60 z"
|
||||
style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(1.7297871,0,0,1.7297871,-143.66842,-49.491131)"
|
||||
clip-path="url(#clipPath12)" />
|
||||
<path
|
||||
id="path13"
|
||||
d="M 3.1386108,-0.82895751 V -3.7556182 H 0.21195013 V -4.2271357 H 3.1386108 v -2.9104015 h 0.4715176 v 2.9104015 H 6.536789 v 0.4715175 H 3.6101284 v 2.92666069 z m 0,0"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||
aria-label="+"
|
||||
transform="matrix(1.7297871,0,0,1.7297871,-28.448384,63.809926)"
|
||||
clip-path="url(#clipPath14)" />
|
||||
<path
|
||||
id="path15"
|
||||
d="M 3.1392194,-0.82895751 V -3.7556182 H 0.21255876 V -4.2271357 H 3.1392194 V -7.1375372 H 3.610737 v 2.9104015 h 2.9266607 v 0.4715175 H 3.610737 v 2.92666069 z m 0,0"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||
aria-label="+"
|
||||
transform="matrix(1.7297871,0,0,1.7297871,75.338842,63.809926)"
|
||||
clip-path="url(#clipPath16)" />
|
||||
<path
|
||||
id="path17"
|
||||
d="M 3.1398231,-0.82895751 V -3.7556182 H 0.21316239 V -4.2271357 H 3.1398231 v -2.9104015 h 0.4715175 v 2.9104015 h 2.9266607 v 0.4715175 H 3.6113406 v 2.92666069 z m 0,0"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||
aria-label="+"
|
||||
transform="matrix(1.7297871,0,0,1.7297871,179.12609,63.809926)"
|
||||
clip-path="url(#clipPath18)" />
|
||||
<path
|
||||
id="path19"
|
||||
d="M 3.1363669,-0.82895751 V -3.7556182 H 0.20970622 V -4.2271357 H 3.1363669 v -2.9104015 h 0.4715175 v 2.9104015 h 2.9266607 v 0.4715175 H 3.6078844 v 2.92666069 z m 0,0"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||
aria-label="+"
|
||||
transform="matrix(1.7297871,0,0,1.7297871,282.91331,63.809926)"
|
||||
clip-path="url(#clipPath20)" />
|
||||
<path
|
||||
id="path21"
|
||||
d="M 3.1369755,-0.82895751 V -3.7556182 H 0.21031485 V -4.2271357 H 3.1369755 v -2.9104015 h 0.4715176 v 2.9104015 h 2.9266607 v 0.4715175 H 3.6084931 v 2.92666069 z m 0,0"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||
aria-label="+"
|
||||
transform="matrix(1.7297871,0,0,1.7297871,386.70054,63.809926)"
|
||||
clip-path="url(#clipPath22)" />
|
||||
<path
|
||||
id="path23"
|
||||
d="m 52,289 c 4.666668,28 22.666664,60.33334 54,97 31.33333,36.66666 70,55.33334 116,56 23.33333,0 44.66666,-6 64,-18 19.33334,-12 33.66666,-27 43,-45 28,42 61.66666,63 101,63 24.66666,0 46,-7.33334 64,-22 18,-14.66666 27.33331,-34.33334 28,-59 0,-19.33334 -4.66669,-35 -14,-47 -9.33334,-12 -18.33334,-19.33334 -27,-22 -8.66666,-2.66666 -16.33334,-4 -23,-4 -12.66666,0 -23,3.66666 -31,11 -8,7.33334 -12,17 -12,29 0,30.66666 16.66666,51.66666 50,63 -7.33334,8.66666 -20.66666,13 -40,13 -8.66666,0 -15,-0.66666 -19,-2 -25.33334,-10.66666 -44,-32.66666 -56,-66 -40,-147.33334 -60,-233.33333 -60,-258 0,-18.666668 5.33334,-32 16,-40 10.66666,-8 22.33334,-12 35,-12 24.66666,0 49,11 73,33 24,22 40.33334,49 49,81 2,6.66667 4,10.33333 6,11 2,0.66667 7.33334,1.33333 16,2 h 4 c 10,0 15,-2.66667 15,-8 0,-0.66667 -0.66666,-4.33333 -2,-11 C 491.33334,96 470.66666,62.333336 440,33 409.33334,3.666666 373.66666,-11 333,-11 286.33334,-11 251,10 227,52 199.66667,10.666664 168.33334,-10 133,-10 h -6 C 94.333328,-10 71,-1.333334 57,16 43,33.333336 35.666668,51.666664 35,71 c 0,21.333336 6.333332,38.66666 19,52 12.666664,13.33333 27.666664,20 45,20 28.66667,0 43,-14 43,-42 C 142,87.666664 138,76 130,66 122,56 114.33334,49.333332 107,46 99.666664,42.666668 95.333336,41 94,41 l -3,-1 c 0,-0.666668 2,-2 6,-4 4,-2 9.33334,-4.333334 16,-7 6.66666,-2.666666 13,-3.666666 19,-3 24,0 44.66667,15 62,45 6,10.666664 13.66667,33.33333 23,68 9.33333,34.66667 18.66667,70.66666 28,108 9.33333,37.33334 14.66666,59.33334 16,66 3.33334,18 5,31 5,39 0,18.66666 -5,32 -15,40 -10,8 -21.33333,12 -34,12 -26.66667,0 -51.66667,-10.66666 -75,-32 -23.33334,-21.33334 -39.66666,-48.66666 -49,-82 -1.333336,-6 -3,-9.33334 -5,-10 -2,-0.66666 -7.333336,-1.33334 -16,-2 H 58 c -4,4 -6,7.66666 -6,11 z"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:0.1337"
|
||||
transform="matrix(0.02572556,0,0,-0.0256221,-35.556726,-16.543775)"
|
||||
clip-path="url(#clipPath24)" />
|
||||
<path
|
||||
id="path25"
|
||||
d="m 96,585 c 37.33334,54 88.33333,81 153,81 32,0 64,-8.66669 96,-26 32,-17.33331 58,-48 78,-92 24.66666,-55.33334 37,-131.33331 37,-228 C 460,216.66666 445.66666,137.66667 417,83 403.66666,55 385.33334,32.666668 362,16 338.66666,-0.66666794 318.33334,-11 301,-15 c -17.33334,-4 -34.33334,-6.333334 -51,-7 -17.33333,0 -34.66667,2 -52,6 -17.33333,4 -37.66667,14.666666 -61,32 C 113.66666,33.333336 95.333336,55.666664 82,83 53.333332,137.66667 39,216.66666 39,320 39,436 58,524.33331 96,585 Z m 225,12 c -20,21.33331 -43.66666,32 -71,32 -28,0 -52,-10.66669 -72,-32 -16.66667,-17.33331 -27.66667,-41.33331 -33,-72 -5.33333,-30.66666 -8,-94.66666 -8,-192 0,-105.33334 2.66667,-174.66666 8,-208 5.33333,-33.333336 17.33333,-59.666664 36,-79 18.66667,-20 41.66667,-30 69,-30 26.66666,0 49.33334,10 68,30 19.33334,20 31.33334,48 36,84 4.66666,36 7.33334,103.66666 8,203 0,96.66669 -2.66666,160.33334 -8,191 -5.33334,30.66669 -16.33334,55 -33,73 z"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:0.0945"
|
||||
transform="matrix(0.01818797,0,0,-0.01811482,-19.992763,-12.70046)"
|
||||
clip-path="url(#clipPath26)" />
|
||||
<path
|
||||
id="path27"
|
||||
d="m 52,289 c 4.666668,28 22.666664,60.33334 54,97 31.33333,36.66666 70,55.33334 116,56 23.33333,0 44.66666,-6 64,-18 19.33334,-12 33.66666,-27 43,-45 28,42 61.66666,63 101,63 24.66666,0 46,-7.33334 64,-22 18,-14.66666 27.33331,-34.33334 28,-59 0,-19.33334 -4.66669,-35 -14,-47 -9.33334,-12 -18.33334,-19.33334 -27,-22 -8.66666,-2.66666 -16.33334,-4 -23,-4 -12.66666,0 -23,3.66666 -31,11 -8,7.33334 -12,17 -12,29 0,30.66666 16.66666,51.66666 50,63 -7.33334,8.66666 -20.66666,13 -40,13 -8.66666,0 -15,-0.66666 -19,-2 -25.33334,-10.66666 -44,-32.66666 -56,-66 -40,-147.33334 -60,-233.33333 -60,-258 0,-18.666668 5.33334,-32 16,-40 10.66666,-8 22.33334,-12 35,-12 24.66666,0 49,11 73,33 24,22 40.33334,49 49,81 2,6.66667 4,10.33333 6,11 2,0.66667 7.33334,1.33333 16,2 h 4 c 10,0 15,-2.66667 15,-8 0,-0.66667 -0.66666,-4.33333 -2,-11 C 491.33334,96 470.66666,62.333336 440,33 409.33334,3.666666 373.66666,-11 333,-11 286.33334,-11 251,10 227,52 199.66667,10.666664 168.33334,-10 133,-10 h -6 C 94.333328,-10 71,-1.333334 57,16 43,33.333336 35.666668,51.666664 35,71 c 0,21.333336 6.333332,38.66666 19,52 12.666664,13.33333 27.666664,20 45,20 28.66667,0 43,-14 43,-42 C 142,87.666664 138,76 130,66 122,56 114.33334,49.333332 107,46 99.666664,42.666668 95.333336,41 94,41 l -3,-1 c 0,-0.666668 2,-2 6,-4 4,-2 9.33334,-4.333334 16,-7 6.66666,-2.666666 13,-3.666666 19,-3 24,0 44.66667,15 62,45 6,10.666664 13.66667,33.33333 23,68 9.33333,34.66667 18.66667,70.66666 28,108 9.33333,37.33334 14.66666,59.33334 16,66 3.33334,18 5,31 5,39 0,18.66666 -5,32 -15,40 -10,8 -21.33333,12 -34,12 -26.66667,0 -51.66667,-10.66666 -75,-32 -23.33334,-21.33334 -39.66666,-48.66666 -49,-82 -1.333336,-6 -3,-9.33334 -5,-10 -2,-0.66666 -7.333336,-1.33334 -16,-2 H 58 c -4,4 -6,7.66666 -6,11 z"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:0.1277"
|
||||
transform="matrix(0.02572556,0,0,-0.02337343,68.230498,-17.537123)"
|
||||
clip-path="url(#clipPath28)" />
|
||||
<path
|
||||
id="path29"
|
||||
d="m 213,578 -13,-5 c -9.33333,-3.33331 -22.66667,-6.66669 -40,-10 -17.33333,-3.33331 -36.66666,-5.66669 -58,-7 H 83 v 46 h 19 c 31.33333,1.33331 60.33333,6.33331 87,15 26.66667,8.66669 45.33333,16.66669 56,24 10.66667,7.33331 20,14.66669 28,22 1.33334,2 5.33334,3 12,3 6,0 11.66666,-2 17,-6 V 361 l 1,-300 c 4.66666,-4.666668 8.66666,-7.666668 12,-9 3.33334,-1.333332 11.33334,-2.666668 24,-4 12.66666,-1.333332 33.33334,-2 62,-2 h 26 V 0 H 416 C 402,2 349,3 257,3 166.33333,3 114,2 100,0 H 88 v 46 h 26 c 14.66667,0 27.33333,0 38,0 10.66667,0 19,0.333332 25,1 6,0.666668 11.33333,1.666668 16,3 4.66667,1.333332 7.33333,2 8,2 0.66667,0 2.66667,1.666668 6,5 3.33333,3.333332 5.33333,4.666668 6,4 z"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:0.0903"
|
||||
transform="matrix(0.01818797,0,0,-0.01652501,83.79445,-14.031106)"
|
||||
clip-path="url(#clipPath30)" />
|
||||
<path
|
||||
id="path31"
|
||||
d="m 52,289 c 4.666668,28 22.666664,60.33334 54,97 31.33333,36.66666 70,55.33334 116,56 23.33333,0 44.66666,-6 64,-18 19.33334,-12 33.66666,-27 43,-45 28,42 61.66666,63 101,63 24.66666,0 46,-7.33334 64,-22 18,-14.66666 27.33331,-34.33334 28,-59 0,-19.33334 -4.66669,-35 -14,-47 -9.33334,-12 -18.33334,-19.33334 -27,-22 -8.66666,-2.66666 -16.33334,-4 -23,-4 -12.66666,0 -23,3.66666 -31,11 -8,7.33334 -12,17 -12,29 0,30.66666 16.66666,51.66666 50,63 -7.33334,8.66666 -20.66666,13 -40,13 -8.66666,0 -15,-0.66666 -19,-2 -25.33334,-10.66666 -44,-32.66666 -56,-66 -40,-147.33334 -60,-233.33333 -60,-258 0,-18.666668 5.33334,-32 16,-40 10.66666,-8 22.33334,-12 35,-12 24.66666,0 49,11 73,33 24,22 40.33334,49 49,81 2,6.66667 4,10.33333 6,11 2,0.66667 7.33334,1.33333 16,2 h 4 c 10,0 15,-2.66667 15,-8 0,-0.66667 -0.66666,-4.33333 -2,-11 C 491.33334,96 470.66666,62.333336 440,33 409.33334,3.666666 373.66666,-11 333,-11 286.33334,-11 251,10 227,52 199.66667,10.666664 168.33334,-10 133,-10 h -6 C 94.333328,-10 71,-1.333334 57,16 43,33.333336 35.666668,51.666664 35,71 c 0,21.333336 6.333332,38.66666 19,52 12.666664,13.33333 27.666664,20 45,20 28.66667,0 43,-14 43,-42 C 142,87.666664 138,76 130,66 122,56 114.33334,49.333332 107,46 99.666664,42.666668 95.333336,41 94,41 l -3,-1 c 0,-0.666668 2,-2 6,-4 4,-2 9.33334,-4.333334 16,-7 6.66666,-2.666666 13,-3.666666 19,-3 24,0 44.66667,15 62,45 6,10.666664 13.66667,33.33333 23,68 9.33333,34.66667 18.66667,70.66666 28,108 9.33333,37.33334 14.66666,59.33334 16,66 3.33334,18 5,31 5,39 0,18.66666 -5,32 -15,40 -10,8 -21.33333,12 -34,12 -26.66667,0 -51.66667,-10.66666 -75,-32 -23.33334,-21.33334 -39.66666,-48.66666 -49,-82 -1.333336,-6 -3,-9.33334 -5,-10 -2,-0.66666 -7.333336,-1.33334 -16,-2 H 58 c -4,4 -6,7.66666 -6,11 z"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:0.1277"
|
||||
transform="matrix(0.02572556,0,0,-0.02337343,172.01772,-17.537123)"
|
||||
clip-path="url(#clipPath32)" />
|
||||
<path
|
||||
id="path33"
|
||||
d="m 109,429 c -18,0 -32.333336,6 -43,18 -10.666668,12 -16,26.66666 -16,44 0,47.33331 17.666664,88.33331 53,123 35.33334,34.66669 79.33333,52 132,52 60.66666,0 111.33334,-18.66669 152,-56 40.66666,-37.33331 61.33334,-85.66669 62,-145 0,-28.66666 -6.66666,-56 -20,-82 -13.33334,-26 -29.33334,-48.66666 -48,-68 -18.66666,-19.33334 -45.33334,-44 -80,-74 -24,-20.66667 -57.33333,-51.33333 -100,-92 l -59,-56 76,-1 c 104.66669,0 160.33334,1.666664 167,5 4.66666,1.333336 12.66666,31 24,89 v 3 h 40 v -3 C 448.33334,184 444,153.66667 436,95 428,36.333332 423,5.666667 421,3 V 0 H 50 v 19 12 c 0,4.666668 2,9.666668 6,15 4,5.333332 14,17 30,35 19.33334,21.33334 36,40 50,56 6,6.66667 17.33333,19 34,37 16.66667,18 28,30.33333 34,37 6,6.66667 15.66667,17.66667 29,33 13.33333,15.33334 22.66667,26.66666 28,34 5.33334,7.33334 13,17.33334 23,30 10,12.66666 17,23.33334 21,32 4,8.66666 9,18.33334 15,29 6,10.66666 10.33334,21.33334 13,32 2.66666,10.66666 5,20.66666 7,30 2,9.33334 3,20.33334 3,33 0,42 -11.33334,78.33331 -34,109 -22.66666,30.66669 -55,46 -97,46 -22,0 -41.33333,-5.66669 -58,-17 -16.66667,-11.33331 -28.33334,-22.33331 -35,-33 -6.66666,-10.66669 -10,-17 -10,-19 0,-0.66669 1.66666,-1 5,-1 12,0 24.33333,-4.66669 37,-14 12.66667,-9.33331 19,-24.66666 19,-46 0,-16.66666 -5.33333,-30.66666 -16,-42 -10.66667,-11.33334 -25.66667,-17.33334 -45,-18 z"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:0.0903"
|
||||
transform="matrix(0.01818797,0,0,-0.01652501,187.58168,-14.031106)"
|
||||
clip-path="url(#clipPath34)" />
|
||||
<path
|
||||
id="path35"
|
||||
d="m 52,289 c 4.666668,28 22.666664,60.33334 54,97 31.33333,36.66666 70,55.33334 116,56 23.33333,0 44.66666,-6 64,-18 19.33334,-12 33.66666,-27 43,-45 28,42 61.66666,63 101,63 24.66666,0 46,-7.33334 64,-22 18,-14.66666 27.33331,-34.33334 28,-59 0,-19.33334 -4.66669,-35 -14,-47 -9.33334,-12 -18.33334,-19.33334 -27,-22 -8.66666,-2.66666 -16.33334,-4 -23,-4 -12.66666,0 -23,3.66666 -31,11 -8,7.33334 -12,17 -12,29 0,30.66666 16.66666,51.66666 50,63 -7.33334,8.66666 -20.66666,13 -40,13 -8.66666,0 -15,-0.66666 -19,-2 -25.33334,-10.66666 -44,-32.66666 -56,-66 -40,-147.33334 -60,-233.33333 -60,-258 0,-18.666668 5.33334,-32 16,-40 10.66666,-8 22.33334,-12 35,-12 24.66666,0 49,11 73,33 24,22 40.33334,49 49,81 2,6.66667 4,10.33333 6,11 2,0.66667 7.33334,1.33333 16,2 h 4 c 10,0 15,-2.66667 15,-8 0,-0.66667 -0.66666,-4.33333 -2,-11 C 491.33334,96 470.66666,62.333336 440,33 409.33334,3.666666 373.66666,-11 333,-11 286.33334,-11 251,10 227,52 199.66667,10.666664 168.33334,-10 133,-10 h -6 C 94.333328,-10 71,-1.333334 57,16 43,33.333336 35.666668,51.666664 35,71 c 0,21.333336 6.333332,38.66666 19,52 12.666664,13.33333 27.666664,20 45,20 28.66667,0 43,-14 43,-42 C 142,87.666664 138,76 130,66 122,56 114.33334,49.333332 107,46 99.666664,42.666668 95.333336,41 94,41 l -3,-1 c 0,-0.666668 2,-2 6,-4 4,-2 9.33334,-4.333334 16,-7 6.66666,-2.666666 13,-3.666666 19,-3 24,0 44.66667,15 62,45 6,10.666664 13.66667,33.33333 23,68 9.33333,34.66667 18.66667,70.66666 28,108 9.33333,37.33334 14.66666,59.33334 16,66 3.33334,18 5,31 5,39 0,18.66666 -5,32 -15,40 -10,8 -21.33333,12 -34,12 -26.66667,0 -51.66667,-10.66666 -75,-32 -23.33334,-21.33334 -39.66666,-48.66666 -49,-82 -1.333336,-6 -3,-9.33334 -5,-10 -2,-0.66666 -7.333336,-1.33334 -16,-2 H 58 c -4,4 -6,7.66666 -6,11 z"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:0.1337"
|
||||
transform="matrix(0.02572556,0,0,-0.0256221,275.80495,-16.543775)"
|
||||
clip-path="url(#clipPath36)" />
|
||||
<path
|
||||
id="path37"
|
||||
d="m 127,463 c -18,0 -32,5.66666 -42,17 -10,11.33334 -15.333336,26 -16,44 0,36.66669 16,69.33331 48,98 32,28.66669 70.66666,43 116,43 23.33334,0 38,-0.33331 44,-1 49.33334,-8 87,-25.66669 113,-53 26,-27.33331 39.33334,-57 40,-89 0,-34.66666 -11.33334,-68.33334 -34,-101 -22.66666,-32.66666 -54,-56.33334 -94,-71 l -3,-2 c 0,-0.66666 3,-1.66666 9,-3 6,-1.33334 15.66666,-4.33334 29,-9 13.33334,-4.66666 26,-11.66666 38,-21 54.66666,-35.33334 82,-82 82,-140 C 457,122.33333 436.33334,76.333336 395,37 353.66666,-2.3333359 301.33334,-22 238,-22 184.66666,-22 138.66667,-7.6666679 100,21 61.333332,49.666668 42,86 42,130 c 0,18.66667 6,33.66667 18,45 12,11.33333 27,17.33333 45,18 18.66667,0 34,-6 46,-18 12,-12 18,-27 18,-45 0,-7.33334 -1,-14 -3,-20 -2,-6 -4.33333,-11.333336 -7,-16 -2.66667,-4.666664 -6.33333,-8.666664 -11,-12 -4.66667,-3.333336 -8.66667,-6 -12,-8 -3.33333,-2 -6.66667,-3.333336 -10,-4 -3.33334,-0.666664 -6,-1.666664 -8,-3 l -4,-1 c 34,-30 75.33333,-45 124,-45 36.66666,0 64.33334,17.666664 83,53 11.33334,22 17,55.66666 17,101 v 20 c 0,63.33334 -21.33334,105.66666 -64,127 -10,4 -30.33333,6.33334 -61,7 l -42,1 -3,2 c -1.33333,2 -2,7.33334 -2,16 0,12 2.66667,18 8,18 18.66667,0 38,1.66666 58,5 22.66667,3.33334 43.33334,17.33334 62,42 18.66666,24.66666 28,62 28,112 v 8 c 0,38 -11.66666,64.33331 -35,79 -14.66666,9.33331 -30.33334,14 -47,14 -21.33333,0 -41,-3.66669 -59,-11 -18,-7.33331 -30.66667,-15 -38,-23 -7.33333,-8 -11,-12 -11,-12 h 3 c 2,-0.66669 4.66667,-1.33331 8,-2 3.33333,-0.66669 6.66667,-2.33331 10,-5 3.33333,-2.66669 7.33333,-5 12,-7 4.66667,-2 8,-5.66669 10,-11 2,-5.33331 4.66667,-10.33331 8,-15 3.33333,-4.66669 4.33333,-11.33331 3,-20 0,-14.66666 -4.66667,-27.66666 -14,-39 -9.33333,-11.33334 -24.33333,-17.33334 -45,-18 z"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:0.0945"
|
||||
transform="matrix(0.01818797,0,0,-0.01811482,291.36894,-12.70046)"
|
||||
clip-path="url(#clipPath38)" />
|
||||
<path
|
||||
id="path39"
|
||||
d="m 52,289 c 4.666668,28 22.666664,60.33334 54,97 31.33333,36.66666 70,55.33334 116,56 23.33333,0 44.66666,-6 64,-18 19.33334,-12 33.66666,-27 43,-45 28,42 61.66666,63 101,63 24.66666,0 46,-7.33334 64,-22 18,-14.66666 27.33331,-34.33334 28,-59 0,-19.33334 -4.66669,-35 -14,-47 -9.33334,-12 -18.33334,-19.33334 -27,-22 -8.66666,-2.66666 -16.33334,-4 -23,-4 -12.66666,0 -23,3.66666 -31,11 -8,7.33334 -12,17 -12,29 0,30.66666 16.66666,51.66666 50,63 -7.33334,8.66666 -20.66666,13 -40,13 -8.66666,0 -15,-0.66666 -19,-2 -25.33334,-10.66666 -44,-32.66666 -56,-66 -40,-147.33334 -60,-233.33333 -60,-258 0,-18.666668 5.33334,-32 16,-40 10.66666,-8 22.33334,-12 35,-12 24.66666,0 49,11 73,33 24,22 40.33334,49 49,81 2,6.66667 4,10.33333 6,11 2,0.66667 7.33334,1.33333 16,2 h 4 c 10,0 15,-2.66667 15,-8 0,-0.66667 -0.66666,-4.33333 -2,-11 C 491.33334,96 470.66666,62.333336 440,33 409.33334,3.666666 373.66666,-11 333,-11 286.33334,-11 251,10 227,52 199.66667,10.666664 168.33334,-10 133,-10 h -6 C 94.333328,-10 71,-1.333334 57,16 43,33.333336 35.666668,51.666664 35,71 c 0,21.333336 6.333332,38.66666 19,52 12.666664,13.33333 27.666664,20 45,20 28.66667,0 43,-14 43,-42 C 142,87.666664 138,76 130,66 122,56 114.33334,49.333332 107,46 99.666664,42.666668 95.333336,41 94,41 l -3,-1 c 0,-0.666668 2,-2 6,-4 4,-2 9.33334,-4.333334 16,-7 6.66666,-2.666666 13,-3.666666 19,-3 24,0 44.66667,15 62,45 6,10.666664 13.66667,33.33333 23,68 9.33333,34.66667 18.66667,70.66666 28,108 9.33333,37.33334 14.66666,59.33334 16,66 3.33334,18 5,31 5,39 0,18.66666 -5,32 -15,40 -10,8 -21.33333,12 -34,12 -26.66667,0 -51.66667,-10.66666 -75,-32 -23.33334,-21.33334 -39.66666,-48.66666 -49,-82 -1.333336,-6 -3,-9.33334 -5,-10 -2,-0.66666 -7.333336,-1.33334 -16,-2 H 58 c -4,4 -6,7.66666 -6,11 z"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:0.1277"
|
||||
transform="matrix(0.02572556,0,0,-0.02337343,379.59218,-17.537123)"
|
||||
clip-path="url(#clipPath40)" />
|
||||
<path
|
||||
id="path41"
|
||||
d="M 462,0 C 450,2 407,3 333,3 255.66666,3 211,2 199,0 h -9 v 46 h 31 c 13.33333,0 22.33333,0 27,0 4.66667,0 10.33334,0.666668 17,2 6.66666,1.333332 11.33334,3 14,5 2.66666,2 5,4.666668 7,8 0.66666,1.333332 1,19.333328 1,54 v 50 H 28 v 46 l 151,231 c 102,154.66669 153.66666,232.33331 155,233 1.33334,1.33331 8.33334,2 21,2 h 18 l 6,-6 V 211 h 92 v -46 h -92 v -51 c 0,-27.333336 0,-43.333336 0,-48 0,-4.666668 2,-8.666668 6,-12 5.33334,-4.666668 24.33334,-7.333332 57,-8 h 29 V 0 Z M 293,211 V 545 L 74,212 183,211 Z"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:0.0903"
|
||||
transform="matrix(0.01818797,0,0,-0.01652501,395.15616,-14.031106)"
|
||||
clip-path="url(#clipPath42)" />
|
||||
<path
|
||||
id="path43"
|
||||
d="M 136.11999,102.14 159,102 l 22.88,0.14"
|
||||
style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(1.7297871,0,0,1.7297871,-143.66842,-49.491131)"
|
||||
clip-path="url(#clipPath44)" />
|
||||
<path
|
||||
id="path45"
|
||||
d="m 130.11999,102.18 5.99001,-2.04 0.02,4 z"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(1.7297871,0,0,1.7297871,-143.66842,-49.491131)"
|
||||
clip-path="url(#clipPath46)" />
|
||||
<path
|
||||
id="path47"
|
||||
d="m 187.88,102.18 -6.01,1.96 0.02,-4 z"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(1.7297871,0,0,1.7297871,-143.66842,-49.491131)"
|
||||
clip-path="url(#clipPath48)" />
|
||||
<path
|
||||
id="path49"
|
||||
d="m 51,0 c -3.333332,2.6666667 -5,5 -5,7 0,1.333333 56.33333,118 169,350 112.66669,232 170.33334,349.33331 173,352 2,4.66669 11.33334,7 28,7 15.33334,0 24.66666,-2.33331 28,-7 2,-2.66669 59.33331,-120 172,-352 C 728.66669,125 785.33331,8.333333 786,7 786,5 784.33331,2.6666667 781,0 Z M 507,344 384,596 137,92 383,91 h 247 c 0,1.333336 -41,85.66666 -123,253 z"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:0.0913"
|
||||
transform="matrix(0.01846566,0,0,-0.01665545,118.3956,160.49481)"
|
||||
clip-path="url(#clipPath50)" />
|
||||
<path
|
||||
id="path51"
|
||||
d="m 52,289 c 4.666668,28 22.666664,60.33334 54,97 31.33333,36.66666 70,55.33334 116,56 23.33333,0 44.66666,-6 64,-18 19.33334,-12 33.66666,-27 43,-45 28,42 61.66666,63 101,63 24.66666,0 46,-7.33334 64,-22 18,-14.66666 27.33331,-34.33334 28,-59 0,-19.33334 -4.66669,-35 -14,-47 -9.33334,-12 -18.33334,-19.33334 -27,-22 -8.66666,-2.66666 -16.33334,-4 -23,-4 -12.66666,0 -23,3.66666 -31,11 -8,7.33334 -12,17 -12,29 0,30.66666 16.66666,51.66666 50,63 -7.33334,8.66666 -20.66666,13 -40,13 -8.66666,0 -15,-0.66666 -19,-2 -25.33334,-10.66666 -44,-32.66666 -56,-66 -40,-147.33334 -60,-233.33333 -60,-258 0,-18.666668 5.33334,-32 16,-40 10.66666,-8 22.33334,-12 35,-12 24.66666,0 49,11 73,33 24,22 40.33334,49 49,81 2,6.66667 4,10.33333 6,11 2,0.66667 7.33334,1.33333 16,2 h 4 c 10,0 15,-2.66667 15,-8 0,-0.66667 -0.66666,-4.33333 -2,-11 C 491.33334,96 470.66666,62.333336 440,33 409.33334,3.666666 373.66666,-11 333,-11 286.33334,-11 251,10 227,52 199.66667,10.666664 168.33334,-10 133,-10 h -6 C 94.333328,-10 71,-1.333334 57,16 43,33.333336 35.666668,51.666664 35,71 c 0,21.333336 6.333332,38.66666 19,52 12.666664,13.33333 27.666664,20 45,20 28.66667,0 43,-14 43,-42 C 142,87.666664 138,76 130,66 122,56 114.33334,49.333332 107,46 99.666664,42.666668 95.333336,41 94,41 l -3,-1 c 0,-0.666668 2,-2 6,-4 4,-2 9.33334,-4.333334 16,-7 6.66666,-2.666666 13,-3.666666 19,-3 24,0 44.66667,15 62,45 6,10.666664 13.66667,33.33333 23,68 9.33333,34.66667 18.66667,70.66666 28,108 9.33333,37.33334 14.66666,59.33334 16,66 3.33334,18 5,31 5,39 0,18.66666 -5,32 -15,40 -10,8 -21.33333,12 -34,12 -26.66667,0 -51.66667,-10.66666 -75,-32 -23.33334,-21.33334 -39.66666,-48.66666 -49,-82 -1.333336,-6 -3,-9.33334 -5,-10 -2,-0.66666 -7.333336,-1.33334 -16,-2 H 58 c -4,4 -6,7.66666 -6,11 z"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:0.0913"
|
||||
transform="matrix(0.01846566,0,0,-0.01665545,133.77748,160.49481)"
|
||||
clip-path="url(#clipPath52)" />
|
||||
<path
|
||||
id="path53"
|
||||
d="m 47.119999,102.14 15.760002,-0.09"
|
||||
style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(1.7297871,0,0,1.7297871,-143.66842,-49.491131)"
|
||||
clip-path="url(#clipPath54)" />
|
||||
<path
|
||||
id="path55"
|
||||
d="m 41.119999,102.18 5.990002,-2.04 0.02,4 z"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(1.7297871,0,0,1.7297871,-143.66842,-49.491131)"
|
||||
clip-path="url(#clipPath56)" />
|
||||
<path
|
||||
id="path57"
|
||||
d="m 68.879997,102.01 -5.989998,2.04 -0.02,-4 z"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(1.7297871,0,0,1.7297871,-143.66842,-49.491131)"
|
||||
clip-path="url(#clipPath58)" />
|
||||
<path
|
||||
id="path59"
|
||||
d="m 51,0 c -3.333332,2.6666667 -5,5 -5,7 0,1.333333 56.33333,118 169,350 112.66669,232 170.33334,349.33331 173,352 2,4.66669 11.33334,7 28,7 15.33334,0 24.66666,-2.33331 28,-7 2,-2.66669 59.33331,-120 172,-352 C 728.66669,125 785.33331,8.333333 786,7 786,5 784.33331,2.6666667 781,0 Z M 507,344 384,596 137,92 383,91 h 247 c 0,1.333336 -41,85.66666 -123,253 z"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:0.0919"
|
||||
transform="matrix(0.01781352,0,0,-0.01747296,-61.044135,150.70977)"
|
||||
clip-path="url(#clipPath60)" />
|
||||
<path
|
||||
id="path61"
|
||||
d="m 52,289 c 4.666668,28 22.666664,60.33334 54,97 31.33333,36.66666 70,55.33334 116,56 23.33333,0 44.66666,-6 64,-18 19.33334,-12 33.66666,-27 43,-45 28,42 61.66666,63 101,63 24.66666,0 46,-7.33334 64,-22 18,-14.66666 27.33331,-34.33334 28,-59 0,-19.33334 -4.66669,-35 -14,-47 -9.33334,-12 -18.33334,-19.33334 -27,-22 -8.66666,-2.66666 -16.33334,-4 -23,-4 -12.66666,0 -23,3.66666 -31,11 -8,7.33334 -12,17 -12,29 0,30.66666 16.66666,51.66666 50,63 -7.33334,8.66666 -20.66666,13 -40,13 -8.66666,0 -15,-0.66666 -19,-2 -25.33334,-10.66666 -44,-32.66666 -56,-66 -40,-147.33334 -60,-233.33333 -60,-258 0,-18.666668 5.33334,-32 16,-40 10.66666,-8 22.33334,-12 35,-12 24.66666,0 49,11 73,33 24,22 40.33334,49 49,81 2,6.66667 4,10.33333 6,11 2,0.66667 7.33334,1.33333 16,2 h 4 c 10,0 15,-2.66667 15,-8 0,-0.66667 -0.66666,-4.33333 -2,-11 C 491.33334,96 470.66666,62.333336 440,33 409.33334,3.666666 373.66666,-11 333,-11 286.33334,-11 251,10 227,52 199.66667,10.666664 168.33334,-10 133,-10 h -6 C 94.333328,-10 71,-1.333334 57,16 43,33.333336 35.666668,51.666664 35,71 c 0,21.333336 6.333332,38.66666 19,52 12.666664,13.33333 27.666664,20 45,20 28.66667,0 43,-14 43,-42 C 142,87.666664 138,76 130,66 122,56 114.33334,49.333332 107,46 99.666664,42.666668 95.333336,41 94,41 l -3,-1 c 0,-0.666668 2,-2 6,-4 4,-2 9.33334,-4.333334 16,-7 6.66666,-2.666666 13,-3.666666 19,-3 24,0 44.66667,15 62,45 6,10.666664 13.66667,33.33333 23,68 9.33333,34.66667 18.66667,70.66666 28,108 9.33333,37.33334 14.66666,59.33334 16,66 3.33334,18 5,31 5,39 0,18.66666 -5,32 -15,40 -10,8 -21.33333,12 -34,12 -26.66667,0 -51.66667,-10.66666 -75,-32 -23.33334,-21.33334 -39.66666,-48.66666 -49,-82 -1.333336,-6 -3,-9.33334 -5,-10 -2,-0.66666 -7.333336,-1.33334 -16,-2 H 58 c -4,4 -6,7.66666 -6,11 z"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:0.0919"
|
||||
transform="matrix(0.01781352,0,0,-0.01747296,-46.205468,150.70977)"
|
||||
clip-path="url(#clipPath62)" />
|
||||
<path
|
||||
id="path63"
|
||||
d="m 109,429 c -18,0 -32.333336,6 -43,18 -10.666668,12 -16,26.66666 -16,44 0,47.33331 17.666664,88.33331 53,123 35.33334,34.66669 79.33333,52 132,52 60.66666,0 111.33334,-18.66669 152,-56 40.66666,-37.33331 61.33334,-85.66669 62,-145 0,-28.66666 -6.66666,-56 -20,-82 -13.33334,-26 -29.33334,-48.66666 -48,-68 -18.66666,-19.33334 -45.33334,-44 -80,-74 -24,-20.66667 -57.33333,-51.33333 -100,-92 l -59,-56 76,-1 c 104.66669,0 160.33334,1.666664 167,5 4.66666,1.333336 12.66666,31 24,89 v 3 h 40 v -3 C 448.33334,184 444,153.66667 436,95 428,36.333332 423,5.666667 421,3 V 0 H 50 v 19 12 c 0,4.666668 2,9.666668 6,15 4,5.333332 14,17 30,35 19.33334,21.33334 36,40 50,56 6,6.66667 17.33333,19 34,37 16.66667,18 28,30.33333 34,37 6,6.66667 15.66667,17.66667 29,33 13.33333,15.33334 22.66667,26.66666 28,34 5.33334,7.33334 13,17.33334 23,30 10,12.66666 17,23.33334 21,32 4,8.66666 9,18.33334 15,29 6,10.66666 10.33334,21.33334 13,32 2.66666,10.66666 5,20.66666 7,30 2,9.33334 3,20.33334 3,33 0,42 -11.33334,78.33331 -34,109 -22.66666,30.66669 -55,46 -97,46 -22,0 -41.33333,-5.66669 -58,-17 -16.66667,-11.33331 -28.33334,-22.33331 -35,-33 -6.66666,-10.66669 -10,-17 -10,-19 0,-0.66669 1.66666,-1 5,-1 12,0 24.33333,-4.66669 37,-14 12.66667,-9.33331 19,-24.66666 19,-46 0,-16.66666 -5.33333,-30.66666 -16,-42 -10.66667,-11.33334 -25.66667,-17.33334 -45,-18 z"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:0.0919"
|
||||
transform="matrix(0.01781352,0,0,-0.01747296,-52.98351,174.50793)"
|
||||
clip-path="url(#clipPath64)" />
|
||||
<path
|
||||
id="path65"
|
||||
d="m 120,220 h 1605 v 60 H 120 Z"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||
transform="matrix(0.01781352,0,0,-0.01747296,-64.963108,162.5215)"
|
||||
clip-path="url(#clipPath66)" />
|
||||
<path
|
||||
id="path67"
|
||||
d="m 117,59 c 0,-22 8.33333,-33 25,-33 24.66667,0 45.66667,35 63,105 4,13.33333 7.33333,20.33333 10,21 1.33333,0.66667 4.66667,1 10,1 h 4 c 6,0 10,0 12,0 2,0 3.66667,-0.66667 5,-2 1.33333,-1.33333 2,-3.66667 2,-7 -0.66667,-4 -1.66667,-9.33333 -3,-16 -1.33333,-6.66666 -5,-19.33333 -11,-38 C 228,71.333328 221.33333,55.666668 214,43 206.66667,30.333332 196.33333,18 183,6 169.66667,-6 154.33333,-11.666667 137,-11 113,-11 90.666672,-3.666667 70,11 49.333332,25.666668 38.666668,50.333332 38,85 c 0,8 0.333332,13.666664 1,17 l 65,258 c 42,170 63,257.66669 63,263 0,2 -0.33333,3.66669 -1,5 -0.66667,1.33331 -2,2.66669 -4,4 -2,1.33331 -3.66667,2 -5,2 -1.33333,0 -4,0.33331 -8,1 -4,0.66669 -6.66667,1 -8,1 -1.33333,0 -4.33333,0.33331 -9,1 -4.66666,0.66669 -8,0.66669 -10,0 -6.66666,0 -11,0 -13,0 -2,0 -4.66666,0.33331 -8,1 -3.333336,0.66669 -5.333336,1.66669 -6,3 -0.666664,1.33331 -1,3.33331 -1,6 0,1.33331 0.666664,6 2,14 3.333336,12.66669 7,19.66669 11,21 4,1.33331 28,3.33331 72,6 10,0.66669 21.33333,1.33331 34,2 12.66667,0.66669 22.66667,1.66669 30,3 7.33333,1.33331 11,1.66669 11,1 8,0 12,-2.66669 12,-8 0,-7.33331 -24.33333,-107.33331 -73,-300 C 144.33333,193.33333 119.33334,92.333336 118,83 c 0,-1.333336 0,-4 0,-8 0,-4 -0.33334,-7.333336 -1,-10 z"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:0.1318"
|
||||
transform="matrix(0.02902327,0,0,-0.02204854,-96.099279,63.555458)"
|
||||
clip-path="url(#clipPath68)" />
|
||||
<path
|
||||
id="path69"
|
||||
d="m 21,287 c 0.666666,2 1.333334,4.66666 2,8 0.666666,3.33334 2.333334,10.66666 5,22 2.666666,11.33334 6,21.66666 10,31 4,9.33334 9,20.33334 15,33 6,12.66666 12.666664,22.66666 20,30 7.333336,7.33334 16,14.66666 26,22 10,7.33334 21,10.33334 33,9 19.33333,0 36.33333,-4 51,-12 14.66667,-8 25,-15.33334 31,-22 6,-6.66666 9.66667,-13.33334 11,-20 1.33333,-4 2.33333,-6 3,-6 0.66667,0 3.33333,2.33334 8,7 32,34.66666 69,52 111,52 h 3 c 32,0 56,-13.66666 72,-41 5.33334,-12.66666 8,-25 8,-37 0,-20 -4.33334,-36 -13,-48 -8.66666,-12 -17.33334,-19.66666 -26,-23 -8.66666,-3.33334 -17,-4.66666 -25,-4 -13.33334,0 -24,3.66666 -32,11 -8,7.33334 -12,17 -12,29 0,32 18.66666,53.33334 56,64 -14.66666,8.66666 -26.66666,13 -36,13 -37.33334,0 -71.66666,-24.66666 -103,-74 -6.66667,-10.66666 -11.66667,-21.66666 -15,-33 C 220.66667,286.66666 209.33333,242.33334 190,165 167.33333,71.666664 154.33333,22 151,16 c -8.66667,-18 -23,-27 -43,-27 -8.666664,0 -15.666664,2 -21,6 -5.333336,4 -9,8 -11,12 -2,4 -2.666664,7.333333 -2,10 0,8.666668 13.333328,66 40,172 26.66667,106 40,165 40,177 0,26 -8.66667,39 -26,39 -14,0 -26,-9.33334 -36,-28 C 82,358.33334 74,338 68,316 62,294 58.333332,282 57,280 55.666668,278.66666 50.333336,278 41,278 H 27 c -4,4 -6,7 -6,9 z"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:0.1291"
|
||||
transform="matrix(0.02684813,0,0,-0.02289989,455.70282,63.555487)"
|
||||
clip-path="url(#clipPath70)" />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 44 KiB |
607
docs_sphinx/images/explicit_scheme.svg
Normal file
|
After Width: | Height: | Size: 173 KiB |
BIN
docs_sphinx/images/grid_with_boundaries_example.png
Normal file
|
After Width: | Height: | Size: 21 KiB |
607
docs_sphinx/images/implicit_scheme.svg
Normal file
|
After Width: | Height: | Size: 173 KiB |
475
docs_sphinx/images/numeric_overview.svg
Normal file
|
After Width: | Height: | Size: 108 KiB |
@ -1,15 +1,698 @@
|
||||
.. Converted content of report from Hannes Signer and Philipp Ungrund
|
||||
(https://www.cs.uni-potsdam.de/bs/teaching/docs/lectures/2023/tug-project.pdf)
|
||||
|
||||
Theoretical Foundations
|
||||
=======================
|
||||
|
||||
=====================
|
||||
The Diffusion Problem
|
||||
=====================
|
||||
This section describes the theoretical foundation underlying this research
|
||||
project by answering questions about the background with the mathematical and
|
||||
scientific equations, the goal of numerically solving these, and their use
|
||||
cases. It also discusses discretization approaches to the equations that are
|
||||
needed to calculate results digitally. [BAEHR19]_
|
||||
|
||||
================
|
||||
Numerical Solver
|
||||
================
|
||||
Diffusion Equation
|
||||
------------------
|
||||
|
||||
**Backward Time-Centered Space (BTCS) Method**
|
||||
The diffusion equation builds the theoretical bedrock to this research project.
|
||||
It is a parabolic partial differential equation that is applied in various
|
||||
scientific fields. It can describe high-level movement of particles suspended in
|
||||
a liquid or gaseous medium over time and space based on Brownian molecular
|
||||
motion.
|
||||
|
||||
The derivation of the equation simply follows the conservation of mass theorem.
|
||||
In the following, the derivation always refers to the one-dimensional case
|
||||
first, but an extension to further dimensions is straightforward. First, let’s
|
||||
imagine a long tube filled with a liquid or gaseous medium into which we add a
|
||||
marker substance within a small volume element at the location x.
|
||||
|
||||
.. figure:: images/conservation_law.svg
|
||||
|
||||
Visualization of the law of mass conservation
|
||||
|
||||
The boundaries of the volume element are still permeable, so that mass transport
|
||||
is possible. We refer to the difference of the substance entering and leaving
|
||||
the volume element as the flux :math:`\Phi` and the concentration of the marker
|
||||
substance at location :math:`x` at time :math:`t` as :math:`C`. According to the
|
||||
conservation of mass, it is not possible for this to be created or destroyed.
|
||||
Therefore, a change in concentration over time must be due to a change in flux
|
||||
over the volume element. [LOGAN15]_ [SALSA22]_ Formally this leads to
|
||||
|
||||
.. _`mass conservation`:
|
||||
|
||||
.. math::
|
||||
|
||||
\frac{\partial C}{\partial t} + \frac{\partial \Phi}{\partial x} = 0.
|
||||
|
||||
Diffusion relies on random particle collisions based on thermal energy.
|
||||
The higher the concentration of a substance, the higher the probability
|
||||
of a particle collision. Fick’s first law describes this relationship as
|
||||
follows
|
||||
|
||||
.. _`ficks law`:
|
||||
|
||||
.. math::
|
||||
|
||||
\Phi = -\alpha \cdot \frac{\partial C}{\partial x}.
|
||||
|
||||
The law states that the flux moves in the direction of decreasing concentration
|
||||
[1]_, proportional to the gradient of the concentration in the spatial direction
|
||||
and a diffusion coefficient :math:`\alpha`. In this context, the diffusion
|
||||
coefficient represents a measure of the mobility of particles and is given in
|
||||
the SI unit :math:`\frac{m^2}{s}`. Substituting `ficks law`_ into `mass
|
||||
conservation`_ now yields the diffusion equation for the one-dimensional case,
|
||||
which gives the temporal change of the concentration as a function of the
|
||||
spatial concentration gradient
|
||||
|
||||
.. _`one dimensional PDE`:
|
||||
.. math::
|
||||
|
||||
\begin{aligned}
|
||||
\frac{\partial C}{\partial t} - \frac{\partial}{\partial x}\left(\alpha \cdot \frac{\partial C}{\partial x}\right) = 0 \\
|
||||
\frac{\partial C}{\partial t} = \alpha \cdot \frac{\partial^2 C}{\partial x^2}.
|
||||
\label{eq:}
|
||||
\end{aligned}
|
||||
|
||||
An extension to two dimensions is easily possible and gives
|
||||
|
||||
.. _`two dimensional PDE`:
|
||||
.. math::
|
||||
|
||||
\begin{aligned}
|
||||
\frac{\partial C}{\partial t} = \alpha_x \cdot \frac{\partial^2 C}{\partial x^2} + \alpha_y \cdot \frac{\partial^2 C}{\partial y^2}.
|
||||
\label{eq:pde_two_dimensional}
|
||||
\end{aligned}
|
||||
|
||||
Since this equation now contains both a first order temporal and a
|
||||
second order spatial derivative, it belongs to the group of partial
|
||||
differential equations (PDE). In particular, the diffusion problem
|
||||
belongs to the group of parabolic PDEs. With these, we describe the
|
||||
evolution of the problem via a first-order time derivative.
|
||||
[CHAPRA15]_ Furthermore, it describes diffusion under
|
||||
the assumption of a constant diffusion coefficient in each direction.
|
||||
Therefore, we distinguish once into the case of homogeneous but
|
||||
anisotropic diffusion, where the diffusion coefficients are constant in
|
||||
one spatial direction but may vary between them, and the case of
|
||||
heterogeneous diffusion. In this case, the diffusion can also change
|
||||
within one spatial direction. This distinction is important, because the
|
||||
subsequent discretization of the problem for numerical solution differs
|
||||
with respect to these two variants.
|
||||
|
||||
|
||||
**Forward Time-Centered Space (FTCS) Method**
|
||||
Numeric and Discretization
|
||||
--------------------------
|
||||
|
||||
The solution of the diffusion equation described above can be solved
|
||||
analytically for simple cases. For more complicated geometries or
|
||||
heterogeneous diffusion behavior, this is no longer feasible. In order
|
||||
to obtain sufficiently accurate solutions, various numerical methods are
|
||||
available. Basically, we can distinguish between methods of finite
|
||||
differences and finite elements. The former are mathematically easier to
|
||||
handle, but limited to a simpler geometry, whereas the latter are more
|
||||
difficult to implement, but can simulate arbitrarily complicated shapes.
|
||||
[BAEHR19]_
|
||||
|
||||
Since this work is limited to the simulation of two-dimensional grids
|
||||
with heterogeneous diffusion as the most complicated form, we restrict
|
||||
ourselves to the application of finite differences and focus on a
|
||||
performant computation.
|
||||
|
||||
There are in principle two methods for solving finite differences with
|
||||
opposite approaches, as well as one method that uses both methods
|
||||
equally – the so-called Crank-Nicolson (CRNI) method.
|
||||
|
||||
.. figure:: images/numeric_overview.svg
|
||||
|
||||
Methods of finite differences
|
||||
|
||||
The idea of finite differences is to replace the partial derivatives of
|
||||
the PDE to be solved by the corresponding difference quotients for a
|
||||
sufficiently finely discretized problem. Taylor’s theorem forms the
|
||||
basis for this possibility. In essence, Taylor states that for a smooth
|
||||
function [2]_ :math:`f: \mathbb{R} \rightarrow \mathbb{R}`, it is
|
||||
possible to predict the function value :math:`f(x)` at one point using
|
||||
the function value and its derivative at another point
|
||||
:math:`a \in \mathbb{R}`. Formally we can write this as
|
||||
|
||||
.. math::
|
||||
|
||||
\begin{aligned}
|
||||
f(x) =& f(a) + f'(a) (x-a) + \frac{f''(a)}{2!}(x-a)^2 + ... + \frac{f^{(n)}(a)}{n!}(x-a)^n + R_n\\
|
||||
R_n =& \int_{a}^x \frac{(x-t)^n}{n!} f^{(n+1)}(t) dt.
|
||||
\end{aligned}
|
||||
|
||||
:math:`R_n` denotes the residual term, which also indicates the error in
|
||||
the case of premature termination of the series. An approximation of the
|
||||
first derivative is now done simply by truncating the Taylor series
|
||||
after the first derivative and transforming accordingly
|
||||
[CHAPRA15]_. This leads to
|
||||
|
||||
.. _`first order approximation`:
|
||||
|
||||
.. math::
|
||||
|
||||
\begin{aligned}
|
||||
f(x_{i+1}) =& f(x_i) + f'(x_i) (x_{i+1}-x_i) + R_1 \\
|
||||
f'(x_{i}) =& \underbrace{\frac{f(x_{i+1}) - f(x_i)}{x_{i+1} - x_i}}_{\text{first order approximation}} - \underbrace{\frac{R_1}{x_{i+1} - x_i}}_{\text{truncation error}}.
|
||||
\end{aligned}
|
||||
|
||||
The `first order approximation`_ shows a so-called forward finite difference
|
||||
approximation in space, since we use the points at :math:`i` and :math:`i+1` for
|
||||
the approximation of :math:`f'(x_i)`. Correspondingly, a backward and centered
|
||||
finite difference approximation is possible applying the appropriate values.
|
||||
|
||||
For the approximation of higher derivatives, the combination of several
|
||||
Taylor series expansions is possible. For example, we set up the
|
||||
following two Taylor series to derive the centered approximation of the
|
||||
second derivative
|
||||
|
||||
.. _`second order approximations`:
|
||||
.. math::
|
||||
|
||||
\begin{aligned}
|
||||
f(x_{i+1}) =& f(x_i) + f'(x_i) \underbrace{(x_{i+1} - x_i)}_{h} + \frac{f^{''}(x_i)}{2} \underbrace{(x_{i+1} - x_{i})^2}_{h^2} + R_2 \\
|
||||
f(x_{i-1}) =& f(x_i) - f'(x_i) \underbrace{(x_{i-1} - x_i)}_{h} + \frac{f^{''}(x_i)}{2} \underbrace{(x_{i-1} - x_{i})^2}_{h^2} +R_2.
|
||||
\end{aligned}
|
||||
|
||||
Adding [3]_ both `second order approximations`_ and rearranging them according to
|
||||
the second derivative yields the corresponding approximation
|
||||
|
||||
|
||||
.. _`second order approximation`:
|
||||
.. math::
|
||||
|
||||
\begin{aligned}
|
||||
f^{''}(x_i) = \frac{f(x_{i+1}) - 2\cdot f(x_i) + f(x_{i-1})}{h^2}.
|
||||
\end{aligned}
|
||||
|
||||
Another possibility of the derivation for the second order approximation results
|
||||
from the following consideration. The second derivation is just another
|
||||
derivation of the first one. In this respect we can represent the second
|
||||
derivative also as the difference of the approximation of the first derivative
|
||||
[CHAPRA15]_. This results in the following representation, which after
|
||||
simplification agrees with equation `second order approximation`_
|
||||
|
||||
.. _`first order derivative`:
|
||||
.. math::
|
||||
|
||||
\begin{aligned}
|
||||
f^{''}(x_i) = \frac{\frac{f(x_{i+1}) - f(x_i)}{h} - \frac{f(x_i) - f(x_{i-1})}{h}}{h}.
|
||||
\label{eq:first_order_derivative}
|
||||
\end{aligned}
|
||||
|
||||
The above equations are all related to a step size :math:`h`. Let us imagine a
|
||||
bar, which we want to discretize by dividing it into individual cells.
|
||||
|
||||
.. figure:: images/discretization_1D.svg
|
||||
|
||||
Discretization of a one-dimensional surface
|
||||
|
||||
|
||||
In the discretization, the step size :math:`h` would correspond to the distance
|
||||
between the cell centers :math:`\Delta x`. Now, the question arises how to deal
|
||||
with the boundaries? This question is a topic of its own, whereby numerous
|
||||
boundary conditions exist. At this point, only the cases relevant to this work
|
||||
will be presented. First, let us look at the problem intuitively and consider
|
||||
what possible boundary conditions can occur. A common case is an environment
|
||||
that is isolated from the outside world. That is, the change in concentration at
|
||||
the boundary over time has to be zero. We can generalize this condition to the
|
||||
*Neumann boundary condition*, where the derivative at the boundary is given. The
|
||||
case of a closed system then arises with a derivative of zero, so that there can
|
||||
be no flow across the boundary of the system. Thus, the Neumann boundary
|
||||
condition for the left side yields the following formulation
|
||||
|
||||
.. math::
|
||||
|
||||
\begin{aligned}
|
||||
\text{Neumann condition for the left boundary:~} \frac{\partial C(x_{0-\frac{\Delta x}{2}}, t)}{\partial t} = g(t) \text{,~} t > 0.
|
||||
\end{aligned}
|
||||
|
||||
The second common case is a constant boundary. Again, the case can be
|
||||
generalized, this time to the so-called *Dirichlet boundary condition*. Here,
|
||||
the function value of the boundary is given instead of its derivative. For the
|
||||
example we can write this boundary condition as
|
||||
|
||||
.. math::
|
||||
|
||||
\begin{aligned}
|
||||
\text{Dirichlet condition for the left boundary:~} C(x_{0 - \frac{\Delta x}{2}}, t) = h(t) \text{, ~} t > 0.
|
||||
\end{aligned}
|
||||
|
||||
In practise, constants are often used instead of time-dependent
|
||||
functions. [LOGAN15]_ [CHAPRA15]_ [SALSA22]_
|
||||
|
||||
|
||||
With this knowledge, we can now turn to the concrete implementation of
|
||||
finite differences for the explicit and implicit scheme. Centered
|
||||
differences are always used for the spatial component. Only in the time
|
||||
domain we distinguish into forward (FTCS method) and backward (BTCS
|
||||
method) methods, which influence the corresponding solution
|
||||
possibilities and stability properties.
|
||||
|
||||
Explicit Scheme (FTCS)
|
||||
~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
FTCS stands for *Forward Time, Centered Space* and is an explicit
|
||||
procedure that can be solved iteratively. Explicit methods are generally
|
||||
more accurate, but are limited in their time step, so that incorrectly
|
||||
chosen time steps lead to instability of the method. Hoewever, there are
|
||||
estimates, such as the Courant-Friedrich-Lewy stability conditions,
|
||||
which gives the corresponding maximum possible time steps.
|
||||
[CHAPRA15]_
|
||||
|
||||
The goal now is to approximate both sides of the `one dimensional PDE`_. As the
|
||||
name of the method FTCS indicates, we use a forward approximation for the left
|
||||
temporal component. For the right-hand side, we use a central approximation
|
||||
using the `first order derivative`_. This results in the following approximation
|
||||
for the inner cells (in the example the cells :math:`x_1`, :math:`x_2` and
|
||||
:math:`x_3`) and a constant diffusion coefficient :math:`\alpha`
|
||||
|
||||
.. _`approximate first order diffusion`:
|
||||
.. math::
|
||||
|
||||
\begin{aligned}
|
||||
\frac{C_i^{t+1}-C_i^t}{\Delta t}=\alpha \frac{\frac{C_{i+1}^t-C_i^t}{\Delta x}-\frac{C_i^t-C_{i-1}^t}{\Delta x}}{\Delta x}.
|
||||
\label{eq:approx_first_order_diffusion}
|
||||
\end{aligned}
|
||||
|
||||
By rearranging this equation according to the concentration value for the next
|
||||
time step :math:``C_i^{t+1}`, we get
|
||||
|
||||
.. _`explicit scheme`:
|
||||
.. math::
|
||||
|
||||
\begin{aligned}
|
||||
C_i^{t+1} = C_i^t + \frac{\alpha \cdot \Delta t}{\Delta x^2} \left[C_{i+1}^t - 2C_i^t + C_{i-1}^t \right].
|
||||
\label{eq:explicit_scheme}
|
||||
\end{aligned}
|
||||
|
||||
At this point, it should be clear why this method is an explicit procedure. On
|
||||
the right side of the `explicit scheme`_, there are only known quantities, so
|
||||
that an explicit calculation rule is given. The basic procedure is shown in
|
||||
Figure 4. In the case of an explicit procedure, we use the values of the
|
||||
neighboring cells of the current time step to approximate the value of a cell
|
||||
for the next time step.
|
||||
|
||||
.. figure:: images/explicit_scheme.svg
|
||||
|
||||
Illustration for using the existing values in the time domain (green) for approximation of the next time step (red)
|
||||
|
||||
|
||||
As described above, the `explicit scheme`_ applies only to the inner cells. For
|
||||
the edges we now have to differentiate between the already presented boundary
|
||||
conditions of Dirichlet and Neumann. To do this, we look again at the
|
||||
`approximate first order diffusion`_ and consider what would have to be changed
|
||||
in the case of constant boundary conditions (Dirichlet). It quickly becomes
|
||||
apparent that in the case of the left cell the value :math:`C_{i-1}` corresponds
|
||||
to the constant value of the left boundary :math:`l` and in the case of the
|
||||
right cell :math:`C_{i+1}` to the value of the right boundary :math:`r`. In
|
||||
addition, the length difference between the cells is now no longer :math:`\Delta
|
||||
x`, but only :math:`\frac{\Delta x}{2}`, as we go from the center of the cell to
|
||||
the edge. For a given flux, the first derivative has to take this value. In our
|
||||
case, this is approximated with the help of the difference quotient, so that
|
||||
this is omitted in the case of a closed boundary (the flux is equal to zero) or
|
||||
accordingly assumes a constant value. For the left-hand boundary, this results
|
||||
in the following modifications, whereas the values for the right-hand boundary
|
||||
can be derived equivalently
|
||||
|
||||
.. _`boundary conditions`:
|
||||
.. math::
|
||||
|
||||
\begin{aligned}
|
||||
\text{Dirichlet for the left boundary:~}& \frac{C_0^{t+1}-C_0^t}{\Delta t}=\alpha \frac{\frac{C_{1}^t-C_0^t}{\Delta x}-\frac{C_0^t-l}{{\frac{\Delta x}{2}}}}{\Delta x}\\
|
||||
&C_{0}^{t+1} = C_{0}^t + \frac{\alpha \Delta t}{\Delta x^2} \left [C_{1}^t - 3 C_0^t + 2l \right]\\
|
||||
\text{Closed Neumann for the left boundary:~}& \frac{C_0^{t+1}-C_0^t}{\Delta t}=\alpha \frac{\frac{C_{1}^t-C_0^t}{\Delta x}-\cancelto{0}{l}}{\Delta x}\\
|
||||
&C_{0}^{t+1} = C_{0}^t + \frac{\alpha \Delta t}{\Delta x^2} \left [C_1^t - C_0^t \right].
|
||||
\label{eq:boundary_conditions}
|
||||
\end{aligned}
|
||||
|
||||
Again, it is straightforward to extend the `explicit scheme`_ to the second
|
||||
dimension, so that the following formula is simply obtained for the inner cells
|
||||
|
||||
.. math::
|
||||
|
||||
\begin{aligned}
|
||||
C_{i,j}^{t+1} = C_{i,j}^t +& \frac{\alpha_x \cdot \Delta t}{\Delta x^2} \left[C_{i, j+1}^t - 2C_{i,j}^t + C_{i, j-1} \right] \\
|
||||
+& \frac{\alpha_y \cdot \Delta t}{\Delta y^2} \left[C_{i+1, j}^t - 2C_{i,j}^t + C_{i-1, j} \right].
|
||||
\end{aligned}
|
||||
|
||||
Here, it is important to note that the indices :math:`i` and :math:`j`
|
||||
for the two-dimensional cases are now used as usual in the matrix
|
||||
notation. That means :math:`i` marks the elements in x-direction and
|
||||
:math:`j` in y-direction.
|
||||
|
||||
The previous equations referred to homogeneous diffusion coefficients, i.e. the
|
||||
diffusion properties along a spatial direction are identical. However, we are
|
||||
often interested in applications where different diffusion coefficients act in
|
||||
each discretized cell. This extension of the problem also leads to a slightly
|
||||
modified variant of our `one dimensional PDE`_, where the diffusion coefficient
|
||||
now is also a function of the spatial component
|
||||
|
||||
.. math::
|
||||
|
||||
\begin{aligned}
|
||||
\frac{\partial C}{\partial t} = \frac{\partial}{\partial x}\left[\alpha(x) \frac{\partial C}{\partial x} \right].
|
||||
\end{aligned}
|
||||
|
||||
For this case, the literature recommends discretizing the problem
|
||||
directly at the boundaries of the grid cells, i.e. halfway between the
|
||||
grid points [FROLKOVIC1990]_. If we
|
||||
follow this scheme and approximate the first derivative for C at the
|
||||
appropriate cell boundaries, we obtain the following expressions
|
||||
|
||||
.. math::
|
||||
|
||||
\begin{aligned}
|
||||
\begin{cases}
|
||||
\alpha(x_{i+\frac{1}{2}}) \frac{\partial C}{\partial x}(x_{i+\frac{1}{2}}) = \alpha_{i+\frac{1}{2}} \left(\frac{C_{i+1} - C_i}{\Delta x}\right)\\
|
||||
\alpha(x_{i-\frac{1}{2}}) \frac{\partial C}{\partial x}(x_{i-\frac{1}{2}}) = \alpha_{i-\frac{1}{2}} \left(\frac{C_{i} - C_{i-1}}{\Delta x}\right).
|
||||
\end{cases}
|
||||
\end{aligned}
|
||||
|
||||
With a further derivation we now obtain a spatially centered
|
||||
approximation with
|
||||
|
||||
.. math::
|
||||
|
||||
\begin{aligned}
|
||||
\frac{\partial }{\partial x}\left(\alpha(x) \frac{\partial C}{\partial x} \right) \simeq& \frac{1}{\Delta x}\left[\alpha_{i+\frac{1}{2}}\left(\frac{C^t_{i+1}-C^t_i}{\Delta x}\right)-\alpha_{i-\frac{1}{2}}\left(\frac{C^t_i-C^t_{i-1}}{\Delta x}\right)\right] \\
|
||||
\frac{C^{t+1}_{i}-C^t_i}{\Delta t}=& \frac{1}{\Delta x^2}\left[\alpha_{i+\frac{1}{2}} C^t_{i+1}-\left(\alpha_{i+\frac{1}{2}}+\alpha_{i-\frac{1}{2}}\right) C^t_i+\alpha_{i-\frac{1}{2}} C^t_{i-1}\right]\\
|
||||
C^{t+1}_{i} =& C^t_i + \frac{\Delta t}{\Delta x^2} \left[\alpha_{i+\frac{1}{2}} C^t_{i+1}-\left(\alpha_{i+\frac{1}{2}}+\alpha_{i-\frac{1}{2}}\right) C^t_i+\alpha_{i-\frac{1}{2}} C^t_{i-1} \right].
|
||||
\end{aligned}
|
||||
|
||||
The value for the inter-cell diffusion coefficients can be determined by
|
||||
either the arithmetic or harmonic mean of both cells, with the harmonic
|
||||
mean being preferred for the default case. Again, we can extend this
|
||||
equation to two dimensions, resulting in the following iteration rule
|
||||
|
||||
.. math::
|
||||
|
||||
\begin{aligned}
|
||||
C_{i, j}^{t+1}= & C_{i, j}^t+ \frac{\Delta t}{\Delta x^2}\left[\alpha_{i, j+\frac{1}{2}}^x C_{i, j+1}^t-\left(\alpha_{i, j+\frac{1}{2}}^x+\alpha_{i, j-\frac{1}{2}}^x\right) C_{i, j}^t+\alpha_{i, j-\frac{1}{2}}^x C_{i, j-1}^t \right]+ \\ & \frac{\Delta t}{\Delta y^2}\left[\alpha_{i+\frac{1}{2}, j}^y C_{i+1, j}^t-\left(\alpha_{i+\frac{1}{2}, j}^y+\alpha_{i-\frac{1}{2}, j}^y\right) C_{i, j}^t+\alpha_{i-\frac{1}{2}, j}^y C_{i-1, j}^t \right].
|
||||
\end{aligned}
|
||||
|
||||
The corresponding equations for the boundary conditions can be derived
|
||||
analogously to the homogeneous case (cf. `boundary conditions`_) by adjusting
|
||||
the relevant difference quotients to the respective boundary condition. As
|
||||
described initially, the FTCS procedure is accurate but not stable for each time
|
||||
step. The Courant-Friedrichs-Lewy stability condition states that the time step
|
||||
must always be less than or equal the following value
|
||||
|
||||
.. math::
|
||||
|
||||
\begin{aligned}
|
||||
\Delta t \leq \frac{\min (\Delta x^2, \Delta y^2)}{4 \cdot \max (\alpha^x, \alpha^y)}.
|
||||
\end{aligned}
|
||||
|
||||
That is, the maximum time step is quadratically related to the
|
||||
discretization and linearly to the maximum diffusion coefficient.
|
||||
Especially for very fine-resolution grids, this condition has a
|
||||
particularly strong effect on that required computing time. This is in
|
||||
contrast to the implicit methods, which we will now look at in more
|
||||
detail. Unlike the explicit methods, the implicit methods are
|
||||
unconditionally stable.
|
||||
|
||||
Implicit Scheme (BTCS)
|
||||
~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
The main difference to the explicit method is that the discretization is not
|
||||
done at the time step :math:`t` as in the `approximate first order diffusion`_,
|
||||
but now at the time step :math:`t+1`. Hence, the neighboring cells in the next
|
||||
time step are used for the approximation of the middle cell.
|
||||
|
||||
.. figure:: images/implicit_scheme.svg
|
||||
|
||||
Illustration of the implicit method, where the values of the neighboring cells in the next time step are used for the approximation
|
||||
|
||||
|
||||
The `approximate first order diffusion`_ thus changes to
|
||||
|
||||
.. math::
|
||||
|
||||
\begin{aligned}
|
||||
\frac{C_i^{t+1}-C_i^t}{\Delta t} & =\alpha \frac{\frac{C_{i+1}^{t+1}-C_i^{t+1}}{\Delta x}-\frac{C_i^{t+1}-C_{i-1}^{t+1}}{\Delta x}}{\Delta x} \\
|
||||
& =\alpha \frac{C_{i-1}^{t+1}-2 C_i^{t+1}+C_{i+1}^{t+1}}{\Delta x^2}
|
||||
\end{aligned}
|
||||
|
||||
Now there is no possibility to change the equation to :math:`C^{t+1}_i`
|
||||
so that all values are given. That means :math:`C^{t+1}_i` is only
|
||||
implicitly indicated. If we know put all known and unkown values on one
|
||||
side each and define :math:`s_x = \frac{\alpha \Delta t}{\Delta x^2}`
|
||||
for simplicity, we get the following expression
|
||||
|
||||
.. math::
|
||||
|
||||
\begin{aligned}
|
||||
s_x \cdot C_{i+1}^{t+1} + (-1-s_x) \cdot C_i^{t+1} + s_x \cdot C_{i-1}^{t+1} &= -C_i^t.
|
||||
\label{eq:implicit_inner_grid}
|
||||
\end{aligned}
|
||||
|
||||
This applies only to the inner grid without boundaries. To derive the equations
|
||||
for the boundaries, the reader can equivalently use the procedure from the FTCS
|
||||
method with given `boundary conditions`_. Thus, for constant boundaries with the
|
||||
values :math:`l` and :math:`r` for the left and right boundaries, respectively,
|
||||
the following two equations are obtained
|
||||
|
||||
.. math::
|
||||
|
||||
\begin{aligned}
|
||||
\left(-1-3 s_x\right) \cdot C_0^{t+1}+s_x \cdot C_1^{t+1} &= -C_0^t - 2s_x \cdot l \\
|
||||
s_x \cdot C_{n-1}^{t+1}+\left(-1-3 s_x\right) \cdot C_n^{t+1} &= -C_n^t - 2s_x \cdot r.
|
||||
\end{aligned}
|
||||
|
||||
The question now arises how values from the next time step can be used for the
|
||||
approximation. Here, the answer lies in the simultaneous solution of the
|
||||
equations. Let’s look again at the example in Figure for conservation law and
|
||||
establish the implicit equations for the same. We obtain the following system of
|
||||
five equations and five unknowns
|
||||
|
||||
.. math::
|
||||
|
||||
\begin{aligned}
|
||||
\begin{cases}
|
||||
\left(-1-3 s_x\right) \cdot C_0^{t+1}+s_x \cdot C_1^{t+1} &= -C_0^t - 2s_x \cdot l \\
|
||||
s_x \cdot C_{2}^{t+1} + (-1-s_x) \cdot C_1^{t+1} + s_x \cdot C_{0}^{t+1} &= -C_1^t \\
|
||||
s_x \cdot C_{3}^{t+1} + (-1-s_x) \cdot C_2^{t+1} + s_x \cdot C_{1}^{t+1} &= -C_2^t \\
|
||||
s_x \cdot C_{4}^{t+1} + (-1-s_x) \cdot C_3^{t+1} + s_x \cdot C_{2}^{t+1} &= -C_3^t \\
|
||||
s_x \cdot C_{3}^{t+1}+\left(-1-3 s_x\right) \cdot C_4^{t+1} &= -C_4^t - 2s_x \cdot r.
|
||||
\end{cases}
|
||||
\end{aligned}
|
||||
|
||||
If we transfer this system of equations to a matrix-vector system, we
|
||||
get
|
||||
|
||||
.. math::
|
||||
|
||||
\begin{aligned}
|
||||
\begin{bmatrix}
|
||||
-1-3s_x & s_x & 0 & 0 & 0 \\
|
||||
s_x & -1-3s_x & s_x & 0 & 0 \\
|
||||
0 & s_x & -1-3s_x & s_x & 0 \\
|
||||
0 & 0 & s_x & -1-3s_x & s_x \\
|
||||
0 & 0 & 0 & s_x & -1-3s_x
|
||||
\end{bmatrix}
|
||||
\cdot
|
||||
\begin{bmatrix}
|
||||
-C_0^{t+1}\\
|
||||
-C_1^{t+1}\\
|
||||
-C_2^{t+1}\\
|
||||
-C_3^{t+1}\\
|
||||
-C_4^{t+1}
|
||||
\end{bmatrix}
|
||||
=
|
||||
\begin{bmatrix}
|
||||
-C_0^t - 2s_x \cdot l \\
|
||||
-C_1^t \\
|
||||
-C_2^t \\
|
||||
-C_3^t \\
|
||||
-C_4^t - 2s_x \cdot r
|
||||
\end{bmatrix}.
|
||||
\end{aligned}
|
||||
|
||||
This system can now be solved very efficiently, since it is a so-called
|
||||
tridiagonal system. Very fast solution algorithms exist for this, such
|
||||
as the Thomas algorithm.
|
||||
|
||||
In principle, this procedure can be extended again to the
|
||||
two-dimensional case, but here no tridiagonal system arises any more, so
|
||||
that the efficient solution algorithms are no longer applicable.
|
||||
Therefore, one uses a trick and solves the equations in two half time
|
||||
steps. In the first time step from :math:`t\rightarrow t+\frac{1}{2}`
|
||||
one space direction is calculated implicitly and the other one
|
||||
explicitly, whereas in the second time step from
|
||||
:math:`t+\frac{1}{2} \rightarrow t+1` the whole process is reversed and
|
||||
the other space direction is solved by the implicit method. This
|
||||
approach is called the alternative-direction implicit method, which we
|
||||
will now examine in more detail.
|
||||
|
||||
First, we consider the `two dimensional PDE`_ again, which represents the PDE
|
||||
for diffusion in the two-dimensional case with homogeneous and anisotropic
|
||||
diffusion coefficients. As explained in the upper sections, we can approximate
|
||||
the second derivative for each spatial direction as follows
|
||||
|
||||
.. _`Taylor series`:
|
||||
.. math::
|
||||
|
||||
\begin{aligned}
|
||||
\frac{\partial^2 C^t_{i, j}}{\partial x^2} =& \frac{C^t_{i, j-1} - 2C^t_{i,j} + C^t_{i, j+1}}{\Delta x^2} \label{eq:taylor_2_x}\\
|
||||
\frac{\partial^2 C^t_{i, j}}{\partial y^2} =& \frac{C^t_{i-1, j} - 2C^t_{i,j} + C^t_{i+1, j}}{\Delta y^2}. \label{eq:taylor_2_y}
|
||||
\end{aligned}
|
||||
|
||||
Explicit solution methods, as can be used in the one-dimensional case,
|
||||
require smaller time steps to remain stable when applied to solve
|
||||
two-dimensional problems. This leads to a significant increase in the
|
||||
computational effort. Implicit techniques also require more
|
||||
computational capacity, since the matrices can no longer be represented
|
||||
tridiagonally in the two- or three-dimensional case and thus cannot be
|
||||
solved efficiently. A solution to this problem is provided by the ADI
|
||||
(alternating-direction implicit) scheme, which transforms
|
||||
two-dimensional problems back into tridiagonal matrices. Here, each time
|
||||
step is performed in two half-steps, each time solving implicitly in one
|
||||
axis direction. [CHAPRA15]_ For the above equations,
|
||||
the ADI scheme is defined as follows
|
||||
|
||||
.. math::
|
||||
|
||||
\begin{aligned}
|
||||
\begin{cases}
|
||||
\frac{C_{i,j}^{t+\frac{1}{2}}-C_{i,j}^t}{\frac{\Delta t}{2}} = \alpha_x \cdot \frac{\partial^2 C_{i,j}^{t+\frac{1}{2}}}{\partial x^2} + \alpha_y \frac{\partial^2 C_{i,j}^t}{\partial y^2} \\
|
||||
\frac{C_{i,j}^{t+1}-C_{i,j}^{t+\frac{1}{2}}}{\frac{\Delta t}{2}} = \alpha_x \cdot \frac{\partial^2 C_{i,j}^{t+\frac{1}{2}}}{\partial x^2} + \alpha_y \frac{\partial^2 C_{i,j}^{t+1}}{\partial y^2}
|
||||
\end{cases}.
|
||||
\label{eq:adi_scheme}
|
||||
\end{aligned}
|
||||
|
||||
Now the `Taylor series`_ can be substituted into the equation and the term
|
||||
:math:`\frac{\Delta t}{2}` can be placed on the right side of the equation. The
|
||||
following expression is generated when introducing :math:`s_x = \frac{\alpha_x
|
||||
\cdot \Delta t}{2 \cdot \Delta x^2}` and :math:`s_y = \frac{\alpha_y \cdot
|
||||
\Delta t}{2 \cdot \Delta y^2}` as new variables
|
||||
|
||||
.. math::
|
||||
|
||||
\begin{aligned}
|
||||
C_{i,j}^{t+\frac{1}{2}} - C_{i,j}^t &= s_x \cdot \left[~C_{i, j-1}^{t+\frac{1}{2}}-2 C_{i,j}^{t+\frac{1}{2}}+C_{i, j+1}^{t+\frac{1}{2}}\right] + s_y~ \cdot \left[~ C_{i-1, j}^t - 2\cdot C_{i,j}^t + C_{i+1,j}^t\right] \\
|
||||
C_{i,j}^{t+1} - C_{i,j}^{t+\frac{1}{2}} &= s_x \cdot \left[C_{i, j-1}^{t+\frac{1}{2}}-2 C_{i,j}^{t+\frac{1}{2}}+C_{i, j+1}^{t+\frac{1}{2}}\right] + s_y \cdot ~\left[ C_{i-1, j}^{t+1} - 2\cdot C_{i,j}^{t+1} + C_{i+1,j}^{t+1}\right].
|
||||
\end{aligned}
|
||||
|
||||
As it can be obtained by the following Figure the above equations are only valid
|
||||
for the inner grid.
|
||||
|
||||
.. figure:: images/grid_with_boundaries_example.png
|
||||
|
||||
Example grid with boundary conditions
|
||||
|
||||
At the edge of
|
||||
the grid, starting from the cell center, it is not possible to take a
|
||||
full step :math:`dx`, but only a half step :math:`\frac{dx}{2}`.
|
||||
Therefore, the approximation for the inner cells (shown as an example
|
||||
for the x-direction)
|
||||
|
||||
.. math::
|
||||
|
||||
\begin{aligned}
|
||||
\frac{C_{i,j}^{t+1} - C_{i,j}^t}{\Delta t} = \frac{\frac{C_{i, j+1}^{t+1} - C_{i,j}^{t+1}}{\Delta x} - \frac{C_{i, j}^{t+1} - C_{i, j-1}^{t+1}}{\Delta x}}{\Delta x} = \frac{C_{i, j+1}^{t+1} - 2 \cdot C_{i, j}^{t+1} + C_{i, j-1}^{t+1}}{\Delta x^2}
|
||||
\end{aligned}
|
||||
|
||||
is no longer valid and we have to perform the same changes to the
|
||||
boundary conditions as for the other methods by replacing the
|
||||
corresponding concentration values or difference quotiens with the
|
||||
respective boundary concentrations or fluxes depending on the boundary
|
||||
condition (Neumann or Dirichlet).
|
||||
|
||||
We can now quickly introduce the ADI scheme for heterogeneous diffusion
|
||||
by using the same discretization logic as for the FTCS procedure and
|
||||
discretizing the points between cells.
|
||||
|
||||
This results in the following ADI scheme
|
||||
|
||||
.. math::
|
||||
|
||||
\begin{aligned}
|
||||
\begin{cases}
|
||||
\frac{C_{i, j}^{t+\frac{1}{2}}-C_{i, j}^t}{\Delta \frac{t}{2}}= & \frac{1}{\Delta x^2}\left[\alpha_{i, j+ \frac{1}{2}} C_{i, j+1}^{t+ \frac{1}{2}}-\left(\alpha_{i, j+ \frac{1}{2}}+\alpha_{i, j- \frac{1}{2}}\right) C_{i, j}^{t+ \frac{1}{2}}+\alpha_{i, j-\frac{1}{2}} C_{i, j-1}^{t+\frac{1}{2}}\right]+ \\ & \frac{1}{\Delta y^2}\left[\alpha_{i+\frac{1}{2}, j} C_{i+1, j}^t-\left(\alpha_{i+\frac{1}{2}, j}+\alpha_{i-\frac{1}{2}, j}\right) C_{i, j}^t+\alpha_{i-\frac{1}{2}, j} C_{i-1, j}^t\right] \\
|
||||
\frac{C_{i, j}^{t+1}-C_{i, j}^{t+\frac{1}{2}}}{\Delta \frac{t}{2}}= & \frac{1}{\Delta x^2}\left[\alpha_{i, j+\frac{1}{2}} C_{i, j+1}^{t+\frac{1}{2}}-\left(\alpha_{i, j+\frac{1}{2}}+\alpha_{i, j-\frac{1}{2}}\right) C_{i, j}^{t+\frac{1}{2}}+\alpha_{i, j-\frac{1}{2}} C_{i, j-1}^{t+\frac{1}{2}}\right]+ \\ & \frac{1}{\Delta y^2}\left[\alpha_{i+\frac{1}{2}, j} C_{i+1, j}^{t+1}-\left(\alpha_{i+\frac{1}{2}, j}+\alpha_{i-\frac{1}{2}, j}\right) C_{i, j}^{t+1}+\alpha_{i-\frac{1}{2}, j} C_{i-1, j}^{t+1}\right].
|
||||
\end{cases}
|
||||
\end{aligned}
|
||||
|
||||
|
||||
.. math::
|
||||
|
||||
\begin{aligned}
|
||||
\begin{cases}
|
||||
-s_x \alpha_{i, j+\frac{1}{2}}^x C_{i, j+1}^{t+\frac{1}{2}}+\left(1+s_x\left(\alpha_{i, j+\frac{1}{2}}^x+\alpha_{i, j-\frac{1}{2}}^x\right)\right) C_{i, j}^{t+\frac{1}{2}}-s_x \alpha_{i, j-\frac{1}{2}}^x C_{i, j-1}^{t+\frac{1}{2}}= \\ s_y \alpha_{i+\frac{1}{2}, j}^y C_{i+1, j}^t+\left(1-s_y\left(\alpha_{i+\frac{1}{2}, j}^y+\alpha_{i-\frac{1}{2}, j}^y\right)\right) C_{i, j}^t+s_y \alpha_{i-\frac{1}{2}, j}^y C_{i-1, j}^t\\
|
||||
-s_y \alpha_{i+\frac{1}{2}, j}^y C_{i+1, j}^{t+1}+\left(1+s_y\left(\alpha_{i+\frac{1}{2}, j}^y+\alpha_{i-\frac{1}{2}, j}^y\right)\right) C_{i, j}^{t+1}-s_y \alpha_{i-\frac{1}{2}, j}^y C_{i-1, j}^{t+1}= \\ s_x \alpha_{i, j+\frac{1}{2}}^x C_{i, j+1}^{t+\frac{1}{2}}+\left(1-s_x\left(\alpha_{i, j+\frac{1}{2}}^x+\alpha_{i, j-\frac{1}{2}}^x\right)\right) C_{i, j}^{t+\frac{1}{2}}+s_x \alpha_{i, j-\frac{1}{2}}^x C_{i, j-1}^{t+\frac{1}{2}}.
|
||||
\end{cases}
|
||||
\end{aligned}
|
||||
|
||||
|
||||
Rearranging the terms according to known and unknown quantities gives us again
|
||||
the scheme as in the one-dimensional case and allows us to set up a tridiagonal
|
||||
system for each row of the grid. We also have to take into account that the ADI
|
||||
method always requires two calculation steps for each complete time step.
|
||||
However, since the implicit method is unconditionally stable, it shows its
|
||||
adavantage especially with larger time steps. The basic procedure of the ADI
|
||||
scheme with the two time steps is shown here:
|
||||
|
||||
.. figure:: images/adi_scheme.svg
|
||||
|
||||
Illustration of the iterative procedure in the ADI process
|
||||
|
||||
Crank-Nicolson method
|
||||
---------------------
|
||||
|
||||
Another implicit method is the Crank-Nicolson (CRNI) method, which uses both
|
||||
forward and backward approximations. As this method does not represent a main
|
||||
goal of this work, it is only briefly mentioned here. Essentially, the
|
||||
Crank-Nicolson method averages the two finite differences variants at the
|
||||
corresponding point. For the one-dimensional case this results in
|
||||
|
||||
.. math::
|
||||
|
||||
\begin{aligned}
|
||||
\frac{C^{t+1}_i - C_i^{t}}{\Delta t} = \frac{1}{2} \cdot \left[\frac{C^{t}_{i+1} - 2C^t_i + C_{i+1}^t}{\Delta x^2} + \frac{C^{t+1}_{i+1} - 2C_i^{t+1} + C_i^{t+1}}{\Delta x^2} \right].
|
||||
\end{aligned}
|
||||
|
||||
By transforming the terms accordingly, it is also possible to generate a
|
||||
tridiagonal matrix, as in the BTCS method, which can be solved very
|
||||
efficiently with the Thomas algorithm. [CHAPRA15]_
|
||||
Like the BTCS method, CRNI is unconditionally stable, but becomes
|
||||
inaccurate if the time steps are too large. Compared to the FTCS and
|
||||
BTCS methods, which have a temporal truncation error of
|
||||
:math:`\mathcal{O}(\Delta t)`, the CRNI method with an error of
|
||||
:math:`\mathcal{O}(\Delta t^2)` has an advantage and should be preferred
|
||||
for time-accurate solutions.
|
||||
|
||||
.. [LOGAN15] Logan, J. David. Applied Partial Differential Equations.
|
||||
Undergraduate Texts in Mathematics. Cham: Springer International
|
||||
Publishing, 2015. https://doi.org/10.1007/978-3-319-12493-3.
|
||||
|
||||
.. [SALSA22] Salsa, Sandro, and Gianmaria Verzini. Partial Differential
|
||||
Equations in Action. Vol. 147. UNITEXT. Cham: Springer
|
||||
International Publishing, 2022.
|
||||
https://doi.org/10.1007/978-3-031-21853-8.
|
||||
|
||||
.. [CHAPRA15] Chapra, Steven C., and Raymond P. Canale. Numerical Methods for
|
||||
Engineers, 2015.
|
||||
|
||||
|
||||
.. [BAEHR19] Baehr, Hans Dieter, and Karl Stephan. Wärme- Und Stoffübertragung.
|
||||
Berlin, Heidelberg: Springer Berlin Heidelberg, 2019.
|
||||
https://doi.org/10.1007/978-3-662-58441-5.
|
||||
|
||||
.. [FROLKOVIC1990] Frolkovič, Peter. “Numerical Recipes: The Art of Scientific
|
||||
Computing.” Acta Applicandae Mathematicae 19, no. 3 (June
|
||||
1990): 297–99. https://doi.org/10.1007/BF01321860.
|
||||
|
||||
.. [1]
|
||||
The minus sign ensures that the direction of the flux follows the
|
||||
decrease in concentration.
|
||||
|
||||
.. [2]
|
||||
A function is called smooth if it is arbitrarily often
|
||||
differentiable.
|
||||
|
||||
.. [3]
|
||||
The remainder term is not considered further at this point, but is
|
||||
:math:`\mathcal{O}(h^2)` in the centered variant. Thus, the centered
|
||||
variant is more accurate than the forward or backward oriented
|
||||
method, whose errors can be estimated with :math:`\mathcal{O}(h)`.
|
||||
[CHAPRA15]_
|
||||
|
||||