Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"from lbmpy.session import *\n",
"from lbmpy.phasefield.scenarios import *\n",
"import pystencils as ps\n",
"from pystencils.fd.derivation import *"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 2D standard stencils\n"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [],
"source": [
"stencil = [(-1, 0), (1, 0), (0, -1), (0, 1), (0, 0)]\n",
"standard_2d_00 = FiniteDifferenceStencilDerivation((0,0), stencil)\n",
"f = ps.fields(\"f: [2D]\")\n",
"standard_2d_00_res = standard_2d_00.get_stencil()\n",
"res = standard_2d_00_res.apply(f.center)\n",
"expected = f[-1, 0] - 2 * f[0, 0] + f[1, 0]\n",
"assert res == expected"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Finite difference stencil of accuracy 2, isotropic error: False"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"assert standard_2d_00_res.accuracy == 2\n",
"assert not standard_2d_00_res.is_isotropic\n",
"standard_2d_00_res"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAGkAAABLCAMAAABEOFk1AAAAPFBMVEX///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAo1xBWAAAAE3RSTlMAMquZdlQQQOkwRIlmzd0i77ts7uXj/QAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAkpJREFUWAntmduagyAMhBGU7YrH5f3fdQW2mkmrpqv2oh9etIDj/JJGi1EVPm5aXbV1CaBU4U05bdVVINUEe+0DqbgMshg3QLLGNU6AFepAhqR2iqDt+uVEVlpCHciA1AzB2bUr/vOwUIcyII0x/SpvZ8/nDaEOZUDykVT7vSwU6lBGSdabMIfal8+nch8V6piMknrvglmRvu6+j99CHZMhKc5JQBLp+hSiux0lsek+TuZvRKhjMkpS6SeshBmxq0M7II1jOOtmP8tlOrQDUrrUjPDK3dWhHZBUF+5Gw/6NT6gDGZKsm+7u+yAl1IEMSavpdsKOTDoSxBy9HD2MQM4IjIfqjRlHwW0yHsajVw17S7CFZsNSyvl6GXloETsgWW307t/g4qbjSQ1xObqMLi20A9IkKl8gDV1w1VvPD8TuCKmNZ/UOUopTtxWFk+YUSfXmOvRMUrf50PpPkm27eWv/LiMTl7Mpjk8+Genr9j2LyK55bKNRboNoKv/c8Dn3NVIVQP3GMySxO5LlqogzKq8n9Z1zzuh4/a5EeHVORg++1c3KYXy4TQWNdRLY8ehxt/P6mXQkljl6OXoYgc/PCCgy4uShJ9SBDKMHRUbwxo5QBzIgYZERzWlPqEMZkLDISL2xLdShDEhYZER32hPqUEZJrExGvaEt1DEZJbEiI7jTjlDHZEiKK5B7kZGaQ5sVI2Ef6TAZJbHpkoOwKdQxGSXlmqXKNcupkIxPAJhlZ/Yy6Ug0Pzd673pzbMOL3bLcqjQd+YGmdzIJoH4B+tMpKpuC5nwAAAAASUVORK5CYII=\n",
"text/latex": [
"$$\\left[\\begin{matrix}0 & 0 & 0\\\\1 & -2 & 1\\\\0 & 0 & 0\\end{matrix}\\right]$$"
],
"text/plain": [
"⎡0 0 0⎤\n",
"⎢ ⎥\n",
"⎢1 -2 1⎥\n",
"⎢ ⎥\n",
"⎣0 0 0⎦"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"standard_2d_00.get_stencil().as_matrix()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 2D isotropic stencils\n",
"\n",
"## second x-derivative"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Finite difference stencil of accuracy 2, isotropic error: True"
]
},
"execution_count": 19,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"stencil = get_stencil(\"D2Q9\")\n",
"isotropic_2d_00 = FiniteDifferenceStencilDerivation((0,0), stencil)\n",
"isotropic_2d_00_res = isotropic_2d_00.get_stencil(isotropic=True)\n",
"assert isotropic_2d_00_res.is_isotropic\n",
"assert isotropic_2d_00_res.accuracy == 2\n",
"isotropic_2d_00_res"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAIIAAABNCAMAAABdY0yuAAAAXVBMVEX///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADXQA/SAAAAHnRSTlMAMquZdlQQQOkwRM3d7yKJu2aF48P7apvf8VzR02ydbYKKAAAACXBIWXMAAA7EAAAOxAGVKw4bAAADz0lEQVRoBe2a6XbbIBCF0VpXq92kbdJF7/+YAUlIwNyBIUtPc475YUto5s5nhIERUiosRR/WiM5lbhKroioHUUjfSObGWBXLWspDsnkNglIyN9dq2CIrVSxVrUvz7xFuJm65GITiiL4euKD+leiZzI1Y3e4IulnvrWD6Fm6FMdrtuIuNyI1YAYSpGpay5uKw9TI3YAUQ2CAfdOHzIrT9cJQ+GNhyG8tvhW3Idj7lcocT63JY2IPd0kdg3T/yAkHYp/O5ulZtZuB5rm9xFygeINjpfJ6UKjMXLn2npujIwIgHCHbSHzRCsegPean1eqNNDCfbLBmIcwidUtOiP+RlPNcbrNOO4IszCEakWbI6w9LUdar7nGsFRzyCMCRa1f+t01Ip1SVWfCeCI84jzFoyo7SLuRGJe3cguOIswi2PYI++xP+VFsET5xC6WTdr1sjbm+iyVvDFKcJYlMX07aFpmmtWd/xxKaafD/Fb1yDxAMFM5496DP++juNxveBqp12eotCMeIBgZLumiCoFoe2pzA1YIYSsEckSqE7kBqwQgs6tUmPMEfg86ERuwAogTPrn3K6ntvBI5gasAIIJmTlFWUqZW2AFEErdGdvEH9zGdL5lbsAKIIx6jp7ypihDInMDVgBh1q3gjuHOL40dytyAFUBQ81zp4Tm7yNyoFULIDv42h8+L8N6pzJfLV6cpbaKhH7/kFJkbsvp7Ac+ackK/3Rb2hXROggLPdWUGnlQh4gghmZPAKJVeNVXpqYWKAwRJTgIgzFhi1OIFiAMESU7CxEm3AhAHCJKcBCO0Y3LBC8QpgigngQh1n0x+kDhFEOUkEEHQHZE4RdhygUROwiBMa0rFXFyr13WILw4QJDkJjbL2g8kXp1YKiAOE7lr0TebjDR1smIq+HlNjExAHCMXj0/MrVtC/fv95LpMPRYA4QLBPWkAzxqts0pppdUcwDXZvhXsr2D8O7gvRh6jWlXyT/RZiYSqIFUAAGydQK6iUuQErgBBIf/jp50V471Tm3LM+Mg17IL8L1oNfwB4W9mAX/x9vBNw4kTUGSVKIGxQPWoHZOCFaqIImKYEVIx4g2LVCsHESaMFTkKQQu21FEYhzCP7GCdECFSBJIVY7gi/OIBhnZ+OEaIEKkKQQq3Nd5YhHEJyNE6JFK1CSQqxOBEecR8h86IaSFB7BFWcRvI0TogUqQJJCrGwreOIcgr9xQrRABUhSiNWO4ItvCOuQub1atU3nOpnJ3ZXp9OONVAYUih+vVrXmBae6NvsJdjofVyjyK6IVt2qOZ0BUfH21qq7VC3XOS/my1/oRAAAAAElFTkSuQmCC\n",
"text/latex": [
"$$\\left[\\begin{matrix}\\frac{1}{12} & - \\frac{1}{6} & \\frac{1}{12}\\\\\\frac{5}{6} & - \\frac{5}{3} & \\frac{5}{6}\\\\\\frac{1}{12} & - \\frac{1}{6} & \\frac{1}{12}\\end{matrix}\\right]$$"
],
"text/plain": [
"⎡1/12 -1/6 1/12⎤\n",
"⎢ ⎥\n",
"⎢5/6 -5/3 5/6 ⎥\n",
"⎢ ⎥\n",
"⎣1/12 -1/6 1/12⎦"
]
},
"execution_count": 20,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"isotropic_2d_00_res.as_matrix()"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 144x144 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.figure(figsize=(2,2))\n",
"isotropic_2d_00_res.visualize()"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [],
"source": [
"expected_result = sp.Matrix([[1, -2, 1], [10, -20, 10], [1, -2, 1]]) / 12\n",
"assert expected_result == isotropic_2d_00_res.as_matrix()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Isotropic laplacian"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAHoAAABNCAMAAABe+IDDAAAAV1BMVEX///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcPecEAAAAHHRSTlMAMquZdlQQQOkwRM3d7yKJZrvh0Xzfvadc0/FsqyZmNQAAAAlwSFlzAAAOxAAADsQBlSsOGwAAA5lJREFUaAXtmtmanCAQhVHQmbh2Z7LH93/OsAxanBapyjhJ50t7oXRTdX7B7YAqRZeqp79K5VlfdVsK2uqPxCtdD1tksTRPStXsfd0Rrxa/1J7USNCDRVeLXTGXKD4EokvWxi7Nb6A7pabFrphLRF8cr14cutpSY+32T6HULPyDnYhf3oweTGHfSPW56FkT6VLxVPRFQlZnortZqY6cKYVmF9BjIZ1WV33TNFfBaUbF4TSb9LDU/PNm9Ncn3ZmjMogD+ijz7LoHWqlwa7VrXufKwjH6njp8ns2F12YXNRtd868tlYhjq/tOTfTiO94LbfdSX49jSG0qDmhjH9ot/7rW9mbmFHgLiAN6DA9tnlSI4rcaxAG9NMZIzJbto5F9CwfxFD0t9kHUSSyS6dmHB8VTdLu4Dhc4HhvN7nAUT9GBugiuLufNuOeHb9ImDujeUdmt9sd52sTCeZddgzigu4/6en3JJmOFM8NmfApO3MzGXmsHC4gDev6k5898dGVpX76GUcPFcpvg5TN4EAe01NN7SLA9g7Pjh8YYxBEt9PQbuvVmHu4aafPdzpEBA6BdrMTTb+gw/hlKFwcR30FLPD1FuydYMZcE3KJFnp6i3ahvLNzbqPgNWubpN3Q41oVbQiKOaKGn39CqfIarVBzQUk8f0N5bGPvkOb6uQRzQMk/vwauxn/V8/LwFcUB7sT+0+nfQbT+sS8+2J/vd6Fr99PzhtRJd+n5O8u+aEgtJLf0RA6KN/PkMcyk0+H3LeKyFnj7uHC8tjQK00NNHMi8NohAt8vSRrHhDAYgCtBNjW8yV7Au8NBJ1ixZ4esrmpdGoG7TA01MyLy2JukH/zQ4XeHrabGYaGTCkrRZ6+ojmpWFUilbDVPVm5M8TvL4FCEOBUhqIA/rby/cfNX9qPb4FcEOBchqIA9oaDckQF0x9PADZbSL+RnRq6rPIWHEi2kkSUx8J2e3JaGLqs8hYcS6amvpIyG5PRSemPouMFWeiU1MfCdltAc2fK7TW6vEWINvNmYqbW0om7h3+vhs0uvRCW2XhGH03rbatTCbqC61+vAUodpCd0kxfMcCxPpxy21cnpn4/YP0XxAENE/VrVr5ATX0+yteAeIrGifqClq1OTP1xOIqnaJyoP9YKtewOR/EU/X+9BfD3ODeN3tlXdQ378xo7YnBvAUrWPx62TXz9JKZ1H6gY46bS1aU07xZ1/JZn/deUVdx/EmOM+gXcoENgExPFVQAAAABJRU5ErkJggg==\n",
"text/latex": [
"$$\\left[\\begin{matrix}\\frac{1}{6} & \\frac{2}{3} & \\frac{1}{6}\\\\\\frac{2}{3} & - \\frac{10}{3} & \\frac{2}{3}\\\\\\frac{1}{6} & \\frac{2}{3} & \\frac{1}{6}\\end{matrix}\\right]$$"
],
"text/plain": [
"⎡1/6 2/3 1/6⎤\n",
"⎢ ⎥\n",
"⎢2/3 -10/3 2/3⎥\n",
"⎢ ⎥\n",
"⎣1/6 2/3 1/6⎦"
]
},
"execution_count": 23,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"isotropic_2d_11 = FiniteDifferenceStencilDerivation((1,1), stencil)\n",
"isotropic_2d_11_res = isotropic_2d_11.get_stencil(isotropic=True)\n",
"iso_laplacian = isotropic_2d_00_res.as_matrix() + isotropic_2d_11_res.as_matrix()\n",
"iso_laplacian"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {},
"outputs": [],
"source": [
"expected_result = sp.Matrix([[1, 4, 1], [4, -20, 4], [1, 4, 1]]) / 6\n",
"assert iso_laplacian == expected_result"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.7"
}
},
"nbformat": 4,
"nbformat_minor": 2
}