SolMuseum 0.1.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (65) hide show
  1. SolMuseum/__init__.py +5 -0
  2. SolMuseum/_version.py +16 -0
  3. SolMuseum/ae/__init__.py +0 -0
  4. SolMuseum/module_generator.py +4 -0
  5. SolMuseum/num_api/__init__.py +2 -0
  6. SolMuseum/num_api/pde/__init__.py +2 -0
  7. SolMuseum/num_api/pde/minmod_limiter.py +107 -0
  8. SolMuseum/num_api/pde/num_api_kt1.py +39 -0
  9. SolMuseum/num_api/pde/num_api_weno3.py +91 -0
  10. SolMuseum/num_api/pde/test/__init__.py +0 -0
  11. SolMuseum/num_api/pde/test/test_minmod.py +24 -0
  12. SolMuseum/ode/__init__.py +0 -0
  13. SolMuseum/pde/__init__.py +3 -0
  14. SolMuseum/pde/basic.py +33 -0
  15. SolMuseum/pde/gas/__init__.py +2 -0
  16. SolMuseum/pde/gas/broken_pipe/__init__.py +1 -0
  17. SolMuseum/pde/gas/broken_pipe/broken_ngs_pipe.py +314 -0
  18. SolMuseum/pde/gas/broken_pipe/cdm_broken.py +287 -0
  19. SolMuseum/pde/gas/broken_pipe/cha_broken.py +325 -0
  20. SolMuseum/pde/gas/broken_pipe/euler_broken.py +321 -0
  21. SolMuseum/pde/gas/broken_pipe/firstorder_broken.py +293 -0
  22. SolMuseum/pde/gas/broken_pipe/kt1_broken.py +292 -0
  23. SolMuseum/pde/gas/broken_pipe/kt2_broken.py +464 -0
  24. SolMuseum/pde/gas/broken_pipe/test_leak/__init__.py +0 -0
  25. SolMuseum/pde/gas/broken_pipe/test_leak/data/res.xlsx +0 -0
  26. SolMuseum/pde/gas/broken_pipe/test_leak/data/sol0.pkl +0 -0
  27. SolMuseum/pde/gas/broken_pipe/test_leak/test_cdm.py +90 -0
  28. SolMuseum/pde/gas/broken_pipe/test_leak/test_cha.py +85 -0
  29. SolMuseum/pde/gas/broken_pipe/test_leak/test_euler.py +87 -0
  30. SolMuseum/pde/gas/broken_pipe/test_leak/test_kt1.py +88 -0
  31. SolMuseum/pde/gas/broken_pipe/test_leak/test_kt2.py +90 -0
  32. SolMuseum/pde/gas/broken_pipe/test_leak/test_weno3.py +87 -0
  33. SolMuseum/pde/gas/broken_pipe/test_rup/__init__.py +0 -0
  34. SolMuseum/pde/gas/broken_pipe/test_rup/data/res.xlsx +0 -0
  35. SolMuseum/pde/gas/broken_pipe/test_rup/test_cdm.py +92 -0
  36. SolMuseum/pde/gas/broken_pipe/test_rup/test_cha.py +88 -0
  37. SolMuseum/pde/gas/broken_pipe/test_rup/test_euler.py +94 -0
  38. SolMuseum/pde/gas/broken_pipe/test_rup/test_kt1.py +92 -0
  39. SolMuseum/pde/gas/broken_pipe/test_rup/test_kt2.py +92 -0
  40. SolMuseum/pde/gas/broken_pipe/test_rup/test_weno3.py +92 -0
  41. SolMuseum/pde/gas/broken_pipe/weno3_broken.py +484 -0
  42. SolMuseum/pde/gas/ngs_pipe.py +364 -0
  43. SolMuseum/pde/gas/test/__init__.py +0 -0
  44. SolMuseum/pde/gas/test/data/res0.xlsx +0 -0
  45. SolMuseum/pde/gas/test/test_cdm.py +80 -0
  46. SolMuseum/pde/gas/test/test_cha.py +80 -0
  47. SolMuseum/pde/gas/test/test_euler.py +80 -0
  48. SolMuseum/pde/gas/test/test_kt1.py +82 -0
  49. SolMuseum/pde/gas/test/test_kt2.py +82 -0
  50. SolMuseum/pde/gas/test/test_weno.py +82 -0
  51. SolMuseum/pde/gas/util.py +617 -0
  52. SolMuseum/pde/gas/weno3/__init__.py +1 -0
  53. SolMuseum/pde/gas/weno3/weno_pipe.py +38 -0
  54. SolMuseum/pde/heat/__init__.py +1 -0
  55. SolMuseum/pde/heat/heat_pipe.py +187 -0
  56. SolMuseum/pde/heat/test/__init__.py +0 -0
  57. SolMuseum/pde/heat/test/test_heat_pipe/param.xlsx +0 -0
  58. SolMuseum/pde/heat/test/test_heat_pipe/res.xlsx +0 -0
  59. SolMuseum/pde/heat/test/test_heat_pipe.py +219 -0
  60. SolMuseum/pde/heat/util.py +59 -0
  61. SolMuseum-0.1.0.dist-info/LICENSE +21 -0
  62. SolMuseum-0.1.0.dist-info/METADATA +19 -0
  63. SolMuseum-0.1.0.dist-info/RECORD +65 -0
  64. SolMuseum-0.1.0.dist-info/WHEEL +5 -0
  65. SolMuseum-0.1.0.dist-info/top_level.txt +1 -0
SolMuseum/__init__.py ADDED
@@ -0,0 +1,5 @@
1
+ # Pls do not import any symbolic function or module here.
2
+ # If doing so, Solverz cannot import num_api module independently from SolMuseum because the symbolic functions and
3
+ # modules have to be initialized in this __init__.py file where the symbols are imported from Solverz.
4
+ # This causes the cirluar ImportError.
5
+ # This is ad-hoc. We are working on this for a more elegant solution.
SolMuseum/_version.py ADDED
@@ -0,0 +1,16 @@
1
+ # file generated by setuptools_scm
2
+ # don't change, don't track in version control
3
+ TYPE_CHECKING = False
4
+ if TYPE_CHECKING:
5
+ from typing import Tuple, Union
6
+ VERSION_TUPLE = Tuple[Union[int, str], ...]
7
+ else:
8
+ VERSION_TUPLE = object
9
+
10
+ version: str
11
+ __version__: str
12
+ __version_tuple__: VERSION_TUPLE
13
+ version_tuple: VERSION_TUPLE
14
+
15
+ __version__ = version = '0.1.0'
16
+ __version_tuple__ = version_tuple = (0, 1, 0)
File without changes
@@ -0,0 +1,4 @@
1
+
2
+
3
+ def generator():
4
+ pass
@@ -0,0 +1,2 @@
1
+ from .pde import *
2
+
@@ -0,0 +1,2 @@
1
+ from .num_api_weno3 import *
2
+ from .minmod_limiter import *
@@ -0,0 +1,107 @@
1
+ import numpy as np
2
+ from numba import njit
3
+
4
+
5
+ @njit(cache=True)
6
+ def minmod(a, b, c):
7
+ if isinstance(a, (np.int32, np.int64, np.float64, np.float32, int, float)):
8
+ a = np.array([a])
9
+ a = a.reshape(-1)
10
+
11
+ if isinstance(b, (np.int32, np.int64, np.float64, np.float32, int, float)):
12
+ b = np.array([b])
13
+ b = b.reshape(-1)
14
+
15
+ if isinstance(c, (np.int32, np.int64, np.float64, np.float32, int, float)):
16
+ c = np.array([c])
17
+ c = c.reshape(-1)
18
+
19
+ # check the consistency of input length
20
+ if not (len(a) == len(b) == len(c)):
21
+ raise ValueError("Input length must be the same!")
22
+
23
+ res = np.zeros_like(a)
24
+
25
+ for i in range(len(a)):
26
+ if a[i] * b[i] > 0 and a[i] * c[i] > 0:
27
+ res[i] = np.min(np.abs(np.array([a[i], b[i], c[i]]))) * np.sign(a[i])
28
+
29
+ return res
30
+
31
+
32
+ @njit(cache=True)
33
+ def minmod_flag(a, b, c):
34
+ """
35
+ Return the index of minmod_flag
36
+ """
37
+
38
+ if isinstance(a, (np.int32, np.int64, np.float64, np.float32, int, float)):
39
+ a = np.array([a])
40
+ a = a.reshape(-1)
41
+
42
+ if isinstance(b, (np.int32, np.int64, np.float64, np.float32, int, float)):
43
+ b = np.array([b])
44
+ b = b.reshape(-1)
45
+
46
+ if isinstance(c, (np.int32, np.int64, np.float64, np.float32, int, float)):
47
+ c = np.array([c])
48
+ c = c.reshape(-1)
49
+
50
+ # check the consistency of input length
51
+ if not (len(a) == len(b) == len(c)):
52
+ raise ValueError("Input length must be the same!")
53
+
54
+ res = np.zeros_like(a).astype(np.int32)
55
+
56
+ for i in range(len(a)):
57
+ if a[i] * b[i] > 0 and a[i] * c[i] > 0:
58
+ res[i] = np.abs(np.array([a[i], b[i], c[i]])).argmin() + 1
59
+
60
+ return res
61
+
62
+
63
+ @njit(cache=True)
64
+ def switch_minmod(a, b, c, flag):
65
+ """
66
+ Conditionally output the derivatives of minmod according to the flag
67
+ """
68
+
69
+ if isinstance(a, (np.int32, np.int64, np.float64, np.float32, int, float)):
70
+ a = np.array([a])
71
+ a = a.reshape(-1)
72
+
73
+ if isinstance(b, (np.int32, np.int64, np.float64, np.float32, int, float)):
74
+ b = np.array([b])
75
+ b = b.reshape(-1)
76
+
77
+ if isinstance(c, (np.int32, np.int64, np.float64, np.float32, int, float)):
78
+ c = np.array([c])
79
+ c = c.reshape(-1)
80
+
81
+ if isinstance(flag, (np.int32, np.int64, np.float64, np.float32, int, float)):
82
+ flag = np.array([flag])
83
+ flag = flag.reshape(-1)
84
+
85
+ # if not (len(a) == len(b) == len(c) == len(flag)):
86
+ # raise ValueError("Input length must be the same!")
87
+
88
+ res = np.zeros_like(flag)
89
+
90
+ for i in range(len(flag)):
91
+ if flag[i] == 1:
92
+ if len(a) > 1:
93
+ res[i] = a[i]
94
+ else:
95
+ res[i] = a[0]
96
+ elif flag[i] == 2:
97
+ if len(b) > 1:
98
+ res[i] = b[i]
99
+ else:
100
+ res[i] = b[0]
101
+ elif flag[i] == 3:
102
+ if len(c) > 1:
103
+ res[i] = c[i]
104
+ else:
105
+ res[i] = c[0]
106
+
107
+ return res
@@ -0,0 +1,39 @@
1
+ from numpy import sign, abs
2
+ from numba import njit
3
+
4
+
5
+ @njit(cache=True)
6
+ def kt1_ode0(pm1, p0, pp1, qm1, q0, qp1, S, va, lam, D, dx):
7
+ return -1 / 2 * S * (-pm1 + pp1) / dx + (1 / 2) * va * (
8
+ -2 * q0 + qm1 + qp1) / dx - 1 / 2 * lam * va ** 2 * q0 * abs(q0) / (D * S * p0)
9
+
10
+
11
+ @njit(cache=True)
12
+ def dkt1_ode0dq0(pm1, p0, pp1, qm1, q0, qp1, S, va, lam, D, dx):
13
+ return -va / dx - 1 / 2 * lam * va ** 2 * q0 * sign(q0) / (D * S * p0) - 1 / 2 * lam * va ** 2 * abs(q0) / (
14
+ D * S * p0)
15
+
16
+
17
+ @njit(cache=True)
18
+ def dkt1_ode0dqp1(pm1, p0, pp1, qm1, q0, qp1, S, va, lam, D, dx):
19
+ return (1 / 2) * va / dx
20
+
21
+
22
+ @njit(cache=True)
23
+ def dkt1_ode0dpp1(pm1, p0, pp1, qm1, q0, qp1, S, va, lam, D, dx):
24
+ return -1 / 2 * S / dx
25
+
26
+
27
+ @njit(cache=True)
28
+ def dkt1_ode0dqm1(pm1, p0, pp1, qm1, q0, qp1, S, va, lam, D, dx):
29
+ return (1 / 2) * va / dx
30
+
31
+
32
+ @njit(cache=True)
33
+ def dkt1_ode0dpm1(pm1, p0, pp1, qm1, q0, qp1, S, va, lam, D, dx):
34
+ return (1 / 2) * S / dx
35
+
36
+
37
+ @njit(cache=True)
38
+ def dkt1_ode0dp0(pm1, p0, pp1, qm1, q0, qp1, S, va, lam, D, dx):
39
+ return (1 / 2) * lam * va ** 2 * q0 * abs(q0) / (D * S * p0 ** 2)
@@ -0,0 +1,91 @@
1
+ import numpy as np
2
+ from numba import njit
3
+
4
+ @njit(cache=True)
5
+ def weno_odeq(pm2, pm1, p0, pp1, pp2, qm2, qm1, q0, qp1, qp2, S, va, lam, D, dx):
6
+ return (0.5*S*((2/3)*((1/2)*p0 + (1/2)*pm1)/(((p0 - pm1)**2 + 1/1000000)**2*((2/3)/((p0 - pm1)**2 + 1/1000000)**2 + (1/3)/((-p0 + pp1)**2 + 1/1000000)**2)) + (1/3)*((3/2)*p0 - 1/2*pp1)/(((-p0 + pp1)**2 + 1/1000000)**2*((2/3)/((p0 - pm1)**2 + 1/1000000)**2 + (1/3)/((-p0 + pp1)**2 + 1/1000000)**2))) + 0.5*S*((2/3)*((1/2)*p0 + (1/2)*pm1)/(((p0 - pm1)**2 + 1/1000000)**2*((1/3)/((pm1 - pm2)**2 + 1/1000000)**2 + (2/3)/((p0 - pm1)**2 + 1/1000000)**2)) + (1/3)*((3/2)*pm1 - 1/2*pm2)/(((pm1 - pm2)**2 + 1/1000000)**2*((1/3)/((pm1 - pm2)**2 + 1/1000000)**2 + (2/3)/((p0 - pm1)**2 + 1/1000000)**2))) - 0.5*S*((2/3)*((1/2)*p0 + (1/2)*pp1)/(((-p0 + pp1)**2 + 1/1000000)**2*((1/3)/((p0 - pm1)**2 + 1/1000000)**2 + (2/3)/((-p0 + pp1)**2 + 1/1000000)**2)) + (1/3)*((3/2)*p0 - 1/2*pm1)/(((p0 - pm1)**2 + 1/1000000)**2*((1/3)/((p0 - pm1)**2 + 1/1000000)**2 + (2/3)/((-p0 + pp1)**2 + 1/1000000)**2))) - 0.5*S*((2/3)*((1/2)*p0 + (1/2)*pp1)/(((-p0 + pp1)**2 + 1/1000000)**2*((1/3)/((-pp1 + pp2)**2 + 1/1000000)**2 + (2/3)/((-p0 + pp1)**2 + 1/1000000)**2)) + (1/3)*((3/2)*pp1 - 1/2*pp2)/(((-pp1 + pp2)**2 + 1/1000000)**2*((1/3)/((-pp1 + pp2)**2 + 1/1000000)**2 + (2/3)/((-p0 + pp1)**2 + 1/1000000)**2))) - 0.5*va*((2/3)*((1/2)*q0 + (1/2)*qm1)/(((q0 - qm1)**2 + 1/1000000)**2*((2/3)/((q0 - qm1)**2 + 1/1000000)**2 + (1/3)/((-q0 + qp1)**2 + 1/1000000)**2)) + (1/3)*((3/2)*q0 - 1/2*qp1)/(((-q0 + qp1)**2 + 1/1000000)**2*((2/3)/((q0 - qm1)**2 + 1/1000000)**2 + (1/3)/((-q0 + qp1)**2 + 1/1000000)**2))) + 0.5*va*((2/3)*((1/2)*q0 + (1/2)*qm1)/(((q0 - qm1)**2 + 1/1000000)**2*((1/3)/((qm1 - qm2)**2 + 1/1000000)**2 + (2/3)/((q0 - qm1)**2 + 1/1000000)**2)) + (1/3)*((3/2)*qm1 - 1/2*qm2)/(((qm1 - qm2)**2 + 1/1000000)**2*((1/3)/((qm1 - qm2)**2 + 1/1000000)**2 + (2/3)/((q0 - qm1)**2 + 1/1000000)**2))) - 0.5*va*((2/3)*((1/2)*q0 + (1/2)*qp1)/(((-q0 + qp1)**2 + 1/1000000)**2*((1/3)/((q0 - qm1)**2 + 1/1000000)**2 + (2/3)/((-q0 + qp1)**2 + 1/1000000)**2)) + (1/3)*((3/2)*q0 - 1/2*qm1)/(((q0 - qm1)**2 + 1/1000000)**2*((1/3)/((q0 - qm1)**2 + 1/1000000)**2 + (2/3)/((-q0 + qp1)**2 + 1/1000000)**2))) + 0.5*va*((2/3)*((1/2)*q0 + (1/2)*qp1)/(((-q0 + qp1)**2 + 1/1000000)**2*((1/3)/((-qp1 + qp2)**2 + 1/1000000)**2 + (2/3)/((-q0 + qp1)**2 + 1/1000000)**2)) + (1/3)*((3/2)*qp1 - 1/2*qp2)/(((-qp1 + qp2)**2 + 1/1000000)**2*((1/3)/((-qp1 + qp2)**2 + 1/1000000)**2 + (2/3)/((-q0 + qp1)**2 + 1/1000000)**2))))/dx - 1/2*lam*va**2*q0*np.abs(q0)/(D*S*p0)
7
+
8
+ @njit(cache=True)
9
+ def weno_odep(pm2, pm1, p0, pp1, pp2, qm2, qm1, q0, qp1, qp2, S, va, lam, D, dx):
10
+ return (-0.5*va*((2/3)*((1/2)*p0 + (1/2)*pm1)/(((p0 - pm1)**2 + 1/1000000)**2*((2/3)/((p0 - pm1)**2 + 1/1000000)**2 + (1/3)/((-p0 + pp1)**2 + 1/1000000)**2)) + (1/3)*((3/2)*p0 - 1/2*pp1)/(((-p0 + pp1)**2 + 1/1000000)**2*((2/3)/((p0 - pm1)**2 + 1/1000000)**2 + (1/3)/((-p0 + pp1)**2 + 1/1000000)**2))) + 0.5*va*((2/3)*((1/2)*p0 + (1/2)*pm1)/(((p0 - pm1)**2 + 1/1000000)**2*((1/3)/((pm1 - pm2)**2 + 1/1000000)**2 + (2/3)/((p0 - pm1)**2 + 1/1000000)**2)) + (1/3)*((3/2)*pm1 - 1/2*pm2)/(((pm1 - pm2)**2 + 1/1000000)**2*((1/3)/((pm1 - pm2)**2 + 1/1000000)**2 + (2/3)/((p0 - pm1)**2 + 1/1000000)**2))) - 0.5*va*((2/3)*((1/2)*p0 + (1/2)*pp1)/(((-p0 + pp1)**2 + 1/1000000)**2*((1/3)/((p0 - pm1)**2 + 1/1000000)**2 + (2/3)/((-p0 + pp1)**2 + 1/1000000)**2)) + (1/3)*((3/2)*p0 - 1/2*pm1)/(((p0 - pm1)**2 + 1/1000000)**2*((1/3)/((p0 - pm1)**2 + 1/1000000)**2 + (2/3)/((-p0 + pp1)**2 + 1/1000000)**2))) + 0.5*va*((2/3)*((1/2)*p0 + (1/2)*pp1)/(((-p0 + pp1)**2 + 1/1000000)**2*((1/3)/((-pp1 + pp2)**2 + 1/1000000)**2 + (2/3)/((-p0 + pp1)**2 + 1/1000000)**2)) + (1/3)*((3/2)*pp1 - 1/2*pp2)/(((-pp1 + pp2)**2 + 1/1000000)**2*((1/3)/((-pp1 + pp2)**2 + 1/1000000)**2 + (2/3)/((-p0 + pp1)**2 + 1/1000000)**2))) + 0.5*va**2*((2/3)*((1/2)*q0 + (1/2)*qm1)/(((q0 - qm1)**2 + 1/1000000)**2*((2/3)/((q0 - qm1)**2 + 1/1000000)**2 + (1/3)/((-q0 + qp1)**2 + 1/1000000)**2)) + (1/3)*((3/2)*q0 - 1/2*qp1)/(((-q0 + qp1)**2 + 1/1000000)**2*((2/3)/((q0 - qm1)**2 + 1/1000000)**2 + (1/3)/((-q0 + qp1)**2 + 1/1000000)**2)))/S + 0.5*va**2*((2/3)*((1/2)*q0 + (1/2)*qm1)/(((q0 - qm1)**2 + 1/1000000)**2*((1/3)/((qm1 - qm2)**2 + 1/1000000)**2 + (2/3)/((q0 - qm1)**2 + 1/1000000)**2)) + (1/3)*((3/2)*qm1 - 1/2*qm2)/(((qm1 - qm2)**2 + 1/1000000)**2*((1/3)/((qm1 - qm2)**2 + 1/1000000)**2 + (2/3)/((q0 - qm1)**2 + 1/1000000)**2)))/S - 0.5*va**2*((2/3)*((1/2)*q0 + (1/2)*qp1)/(((-q0 + qp1)**2 + 1/1000000)**2*((1/3)/((q0 - qm1)**2 + 1/1000000)**2 + (2/3)/((-q0 + qp1)**2 + 1/1000000)**2)) + (1/3)*((3/2)*q0 - 1/2*qm1)/(((q0 - qm1)**2 + 1/1000000)**2*((1/3)/((q0 - qm1)**2 + 1/1000000)**2 + (2/3)/((-q0 + qp1)**2 + 1/1000000)**2)))/S - 0.5*va**2*((2/3)*((1/2)*q0 + (1/2)*qp1)/(((-q0 + qp1)**2 + 1/1000000)**2*((1/3)/((-qp1 + qp2)**2 + 1/1000000)**2 + (2/3)/((-q0 + qp1)**2 + 1/1000000)**2)) + (1/3)*((3/2)*qp1 - 1/2*qp2)/(((-qp1 + qp2)**2 + 1/1000000)**2*((1/3)/((-qp1 + qp2)**2 + 1/1000000)**2 + (2/3)/((-q0 + qp1)**2 + 1/1000000)**2)))/S)/dx
11
+
12
+ @njit(cache=True)
13
+ def dweno_odeqdqp2(pm2, pm1, p0, pp1, pp2, qm2, qm1, q0, qp1, qp2, S, va, lam, D, dx):
14
+ return 0.5*va*(-2/9*((1/2)*q0 + (1/2)*qp1)*(4*qp1 - 4*qp2)/(((-q0 + qp1)**2 + 1/1000000)**2*((-qp1 + qp2)**2 + 1/1000000)**3*((1/3)/((-qp1 + qp2)**2 + 1/1000000)**2 + (2/3)/((-q0 + qp1)**2 + 1/1000000)**2)**2) + (1/3)*((3/2)*qp1 - 1/2*qp2)*(4*qp1 - 4*qp2)/(((-qp1 + qp2)**2 + 1/1000000)**3*((1/3)/((-qp1 + qp2)**2 + 1/1000000)**2 + (2/3)/((-q0 + qp1)**2 + 1/1000000)**2)) - 1/9*((3/2)*qp1 - 1/2*qp2)*(4*qp1 - 4*qp2)/(((-qp1 + qp2)**2 + 1/1000000)**5*((1/3)/((-qp1 + qp2)**2 + 1/1000000)**2 + (2/3)/((-q0 + qp1)**2 + 1/1000000)**2)**2) - (1/6)/(((-qp1 + qp2)**2 + 1/1000000)**2*((1/3)/((-qp1 + qp2)**2 + 1/1000000)**2 + (2/3)/((-q0 + qp1)**2 + 1/1000000)**2)))/dx
15
+
16
+ @njit(cache=True)
17
+ def dweno_odeqdp0(pm2, pm1, p0, pp1, pp2, qm2, qm1, q0, qp1, qp2, S, va, lam, D, dx):
18
+ return (0.5*S*((2/3)*(-4*p0 + 4*pm1)*((1/2)*p0 + (1/2)*pm1)/(((p0 - pm1)**2 + 1/1000000)**3*((1/3)/((pm1 - pm2)**2 + 1/1000000)**2 + (2/3)/((p0 - pm1)**2 + 1/1000000)**2)) - 4/9*(-4*p0 + 4*pm1)*((1/2)*p0 + (1/2)*pm1)/(((p0 - pm1)**2 + 1/1000000)**5*((1/3)/((pm1 - pm2)**2 + 1/1000000)**2 + (2/3)/((p0 - pm1)**2 + 1/1000000)**2)**2) - 2/9*(-4*p0 + 4*pm1)*((3/2)*pm1 - 1/2*pm2)/(((p0 - pm1)**2 + 1/1000000)**3*((pm1 - pm2)**2 + 1/1000000)**2*((1/3)/((pm1 - pm2)**2 + 1/1000000)**2 + (2/3)/((p0 - pm1)**2 + 1/1000000)**2)**2) + (1/3)/(((p0 - pm1)**2 + 1/1000000)**2*((1/3)/((pm1 - pm2)**2 + 1/1000000)**2 + (2/3)/((p0 - pm1)**2 + 1/1000000)**2))) - 0.5*S*((2/3)*(-4*p0 + 4*pp1)*((1/2)*p0 + (1/2)*pp1)/(((-p0 + pp1)**2 + 1/1000000)**3*((1/3)/((-pp1 + pp2)**2 + 1/1000000)**2 + (2/3)/((-p0 + pp1)**2 + 1/1000000)**2)) - 4/9*(-4*p0 + 4*pp1)*((1/2)*p0 + (1/2)*pp1)/(((-p0 + pp1)**2 + 1/1000000)**5*((1/3)/((-pp1 + pp2)**2 + 1/1000000)**2 + (2/3)/((-p0 + pp1)**2 + 1/1000000)**2)**2) - 2/9*(-4*p0 + 4*pp1)*((3/2)*pp1 - 1/2*pp2)/(((-p0 + pp1)**2 + 1/1000000)**3*((-pp1 + pp2)**2 + 1/1000000)**2*((1/3)/((-pp1 + pp2)**2 + 1/1000000)**2 + (2/3)/((-p0 + pp1)**2 + 1/1000000)**2)**2) + (1/3)/(((-p0 + pp1)**2 + 1/1000000)**2*((1/3)/((-pp1 + pp2)**2 + 1/1000000)**2 + (2/3)/((-p0 + pp1)**2 + 1/1000000)**2))) + 0.5*S*((2/3)*(-4*p0 + 4*pm1)*((1/2)*p0 + (1/2)*pm1)/(((p0 - pm1)**2 + 1/1000000)**3*((2/3)/((p0 - pm1)**2 + 1/1000000)**2 + (1/3)/((-p0 + pp1)**2 + 1/1000000)**2)) + (1/3)*(-4*p0 + 4*pp1)*((3/2)*p0 - 1/2*pp1)/(((-p0 + pp1)**2 + 1/1000000)**3*((2/3)/((p0 - pm1)**2 + 1/1000000)**2 + (1/3)/((-p0 + pp1)**2 + 1/1000000)**2)) + (2/3)*((1/2)*p0 + (1/2)*pm1)*(-2/3*(-4*p0 + 4*pm1)/((p0 - pm1)**2 + 1/1000000)**3 - 1/3*(-4*p0 + 4*pp1)/((-p0 + pp1)**2 + 1/1000000)**3)/(((p0 - pm1)**2 + 1/1000000)**2*((2/3)/((p0 - pm1)**2 + 1/1000000)**2 + (1/3)/((-p0 + pp1)**2 + 1/1000000)**2)**2) + (1/3)*((3/2)*p0 - 1/2*pp1)*(-2/3*(-4*p0 + 4*pm1)/((p0 - pm1)**2 + 1/1000000)**3 - 1/3*(-4*p0 + 4*pp1)/((-p0 + pp1)**2 + 1/1000000)**3)/(((-p0 + pp1)**2 + 1/1000000)**2*((2/3)/((p0 - pm1)**2 + 1/1000000)**2 + (1/3)/((-p0 + pp1)**2 + 1/1000000)**2)**2) + (1/3)/(((p0 - pm1)**2 + 1/1000000)**2*((2/3)/((p0 - pm1)**2 + 1/1000000)**2 + (1/3)/((-p0 + pp1)**2 + 1/1000000)**2)) + (1/2)/(((-p0 + pp1)**2 + 1/1000000)**2*((2/3)/((p0 - pm1)**2 + 1/1000000)**2 + (1/3)/((-p0 + pp1)**2 + 1/1000000)**2))) - 0.5*S*((1/3)*(-4*p0 + 4*pm1)*((3/2)*p0 - 1/2*pm1)/(((p0 - pm1)**2 + 1/1000000)**3*((1/3)/((p0 - pm1)**2 + 1/1000000)**2 + (2/3)/((-p0 + pp1)**2 + 1/1000000)**2)) + (2/3)*(-4*p0 + 4*pp1)*((1/2)*p0 + (1/2)*pp1)/(((-p0 + pp1)**2 + 1/1000000)**3*((1/3)/((p0 - pm1)**2 + 1/1000000)**2 + (2/3)/((-p0 + pp1)**2 + 1/1000000)**2)) + (2/3)*((1/2)*p0 + (1/2)*pp1)*(-1/3*(-4*p0 + 4*pm1)/((p0 - pm1)**2 + 1/1000000)**3 - 2/3*(-4*p0 + 4*pp1)/((-p0 + pp1)**2 + 1/1000000)**3)/(((-p0 + pp1)**2 + 1/1000000)**2*((1/3)/((p0 - pm1)**2 + 1/1000000)**2 + (2/3)/((-p0 + pp1)**2 + 1/1000000)**2)**2) + (1/3)*((3/2)*p0 - 1/2*pm1)*(-1/3*(-4*p0 + 4*pm1)/((p0 - pm1)**2 + 1/1000000)**3 - 2/3*(-4*p0 + 4*pp1)/((-p0 + pp1)**2 + 1/1000000)**3)/(((p0 - pm1)**2 + 1/1000000)**2*((1/3)/((p0 - pm1)**2 + 1/1000000)**2 + (2/3)/((-p0 + pp1)**2 + 1/1000000)**2)**2) + (1/2)/(((p0 - pm1)**2 + 1/1000000)**2*((1/3)/((p0 - pm1)**2 + 1/1000000)**2 + (2/3)/((-p0 + pp1)**2 + 1/1000000)**2)) + (1/3)/(((-p0 + pp1)**2 + 1/1000000)**2*((1/3)/((p0 - pm1)**2 + 1/1000000)**2 + (2/3)/((-p0 + pp1)**2 + 1/1000000)**2))))/dx + (1/2)*lam*va**2*q0*np.abs(q0)/(D*S*p0**2)
19
+
20
+ @njit(cache=True)
21
+ def dweno_odeqdpm2(pm2, pm1, p0, pp1, pp2, qm2, qm1, q0, qp1, qp2, S, va, lam, D, dx):
22
+ return 0.5*S*(-2/9*((1/2)*p0 + (1/2)*pm1)*(4*pm1 - 4*pm2)/(((p0 - pm1)**2 + 1/1000000)**2*((pm1 - pm2)**2 + 1/1000000)**3*((1/3)/((pm1 - pm2)**2 + 1/1000000)**2 + (2/3)/((p0 - pm1)**2 + 1/1000000)**2)**2) + (1/3)*((3/2)*pm1 - 1/2*pm2)*(4*pm1 - 4*pm2)/(((pm1 - pm2)**2 + 1/1000000)**3*((1/3)/((pm1 - pm2)**2 + 1/1000000)**2 + (2/3)/((p0 - pm1)**2 + 1/1000000)**2)) - 1/9*((3/2)*pm1 - 1/2*pm2)*(4*pm1 - 4*pm2)/(((pm1 - pm2)**2 + 1/1000000)**5*((1/3)/((pm1 - pm2)**2 + 1/1000000)**2 + (2/3)/((p0 - pm1)**2 + 1/1000000)**2)**2) - (1/6)/(((pm1 - pm2)**2 + 1/1000000)**2*((1/3)/((pm1 - pm2)**2 + 1/1000000)**2 + (2/3)/((p0 - pm1)**2 + 1/1000000)**2)))/dx
23
+
24
+ @njit(cache=True)
25
+ def dweno_odeqdqp1(pm2, pm1, p0, pp1, pp2, qm2, qm1, q0, qp1, qp2, S, va, lam, D, dx):
26
+ return (-0.5*va*((2/3)*((1/2)*q0 + (1/2)*qp1)*(4*q0 - 4*qp1)/(((-q0 + qp1)**2 + 1/1000000)**3*((1/3)/((q0 - qm1)**2 + 1/1000000)**2 + (2/3)/((-q0 + qp1)**2 + 1/1000000)**2)) - 4/9*((1/2)*q0 + (1/2)*qp1)*(4*q0 - 4*qp1)/(((-q0 + qp1)**2 + 1/1000000)**5*((1/3)/((q0 - qm1)**2 + 1/1000000)**2 + (2/3)/((-q0 + qp1)**2 + 1/1000000)**2)**2) - 2/9*((3/2)*q0 - 1/2*qm1)*(4*q0 - 4*qp1)/(((-q0 + qp1)**2 + 1/1000000)**3*((q0 - qm1)**2 + 1/1000000)**2*((1/3)/((q0 - qm1)**2 + 1/1000000)**2 + (2/3)/((-q0 + qp1)**2 + 1/1000000)**2)**2) + (1/3)/(((-q0 + qp1)**2 + 1/1000000)**2*((1/3)/((q0 - qm1)**2 + 1/1000000)**2 + (2/3)/((-q0 + qp1)**2 + 1/1000000)**2))) - 0.5*va*(-2/9*((1/2)*q0 + (1/2)*qm1)*(4*q0 - 4*qp1)/(((-q0 + qp1)**2 + 1/1000000)**3*((q0 - qm1)**2 + 1/1000000)**2*((2/3)/((q0 - qm1)**2 + 1/1000000)**2 + (1/3)/((-q0 + qp1)**2 + 1/1000000)**2)**2) + (1/3)*((3/2)*q0 - 1/2*qp1)*(4*q0 - 4*qp1)/(((-q0 + qp1)**2 + 1/1000000)**3*((2/3)/((q0 - qm1)**2 + 1/1000000)**2 + (1/3)/((-q0 + qp1)**2 + 1/1000000)**2)) - 1/9*((3/2)*q0 - 1/2*qp1)*(4*q0 - 4*qp1)/(((-q0 + qp1)**2 + 1/1000000)**5*((2/3)/((q0 - qm1)**2 + 1/1000000)**2 + (1/3)/((-q0 + qp1)**2 + 1/1000000)**2)**2) - (1/6)/(((-q0 + qp1)**2 + 1/1000000)**2*((2/3)/((q0 - qm1)**2 + 1/1000000)**2 + (1/3)/((-q0 + qp1)**2 + 1/1000000)**2))) + 0.5*va*((2/3)*((1/2)*q0 + (1/2)*qp1)*(4*q0 - 4*qp1)/(((-q0 + qp1)**2 + 1/1000000)**3*((1/3)/((-qp1 + qp2)**2 + 1/1000000)**2 + (2/3)/((-q0 + qp1)**2 + 1/1000000)**2)) + (2/3)*((1/2)*q0 + (1/2)*qp1)*(-2/3*(4*q0 - 4*qp1)/((-q0 + qp1)**2 + 1/1000000)**3 - 1/3*(-4*qp1 + 4*qp2)/((-qp1 + qp2)**2 + 1/1000000)**3)/(((-q0 + qp1)**2 + 1/1000000)**2*((1/3)/((-qp1 + qp2)**2 + 1/1000000)**2 + (2/3)/((-q0 + qp1)**2 + 1/1000000)**2)**2) + (1/3)*(-4*qp1 + 4*qp2)*((3/2)*qp1 - 1/2*qp2)/(((-qp1 + qp2)**2 + 1/1000000)**3*((1/3)/((-qp1 + qp2)**2 + 1/1000000)**2 + (2/3)/((-q0 + qp1)**2 + 1/1000000)**2)) + (1/3)*((3/2)*qp1 - 1/2*qp2)*(-2/3*(4*q0 - 4*qp1)/((-q0 + qp1)**2 + 1/1000000)**3 - 1/3*(-4*qp1 + 4*qp2)/((-qp1 + qp2)**2 + 1/1000000)**3)/(((-qp1 + qp2)**2 + 1/1000000)**2*((1/3)/((-qp1 + qp2)**2 + 1/1000000)**2 + (2/3)/((-q0 + qp1)**2 + 1/1000000)**2)**2) + (1/2)/(((-qp1 + qp2)**2 + 1/1000000)**2*((1/3)/((-qp1 + qp2)**2 + 1/1000000)**2 + (2/3)/((-q0 + qp1)**2 + 1/1000000)**2)) + (1/3)/(((-q0 + qp1)**2 + 1/1000000)**2*((1/3)/((-qp1 + qp2)**2 + 1/1000000)**2 + (2/3)/((-q0 + qp1)**2 + 1/1000000)**2))))/dx
27
+
28
+ @njit(cache=True)
29
+ def dweno_odeqdqm1(pm2, pm1, p0, pp1, pp2, qm2, qm1, q0, qp1, qp2, S, va, lam, D, dx):
30
+ return (-0.5*va*((2/3)*((1/2)*q0 + (1/2)*qm1)*(4*q0 - 4*qm1)/(((q0 - qm1)**2 + 1/1000000)**3*((2/3)/((q0 - qm1)**2 + 1/1000000)**2 + (1/3)/((-q0 + qp1)**2 + 1/1000000)**2)) - 4/9*((1/2)*q0 + (1/2)*qm1)*(4*q0 - 4*qm1)/(((q0 - qm1)**2 + 1/1000000)**5*((2/3)/((q0 - qm1)**2 + 1/1000000)**2 + (1/3)/((-q0 + qp1)**2 + 1/1000000)**2)**2) - 2/9*((3/2)*q0 - 1/2*qp1)*(4*q0 - 4*qm1)/(((-q0 + qp1)**2 + 1/1000000)**2*((q0 - qm1)**2 + 1/1000000)**3*((2/3)/((q0 - qm1)**2 + 1/1000000)**2 + (1/3)/((-q0 + qp1)**2 + 1/1000000)**2)**2) + (1/3)/(((q0 - qm1)**2 + 1/1000000)**2*((2/3)/((q0 - qm1)**2 + 1/1000000)**2 + (1/3)/((-q0 + qp1)**2 + 1/1000000)**2))) - 0.5*va*(-2/9*((1/2)*q0 + (1/2)*qp1)*(4*q0 - 4*qm1)/(((-q0 + qp1)**2 + 1/1000000)**2*((q0 - qm1)**2 + 1/1000000)**3*((1/3)/((q0 - qm1)**2 + 1/1000000)**2 + (2/3)/((-q0 + qp1)**2 + 1/1000000)**2)**2) + (1/3)*((3/2)*q0 - 1/2*qm1)*(4*q0 - 4*qm1)/(((q0 - qm1)**2 + 1/1000000)**3*((1/3)/((q0 - qm1)**2 + 1/1000000)**2 + (2/3)/((-q0 + qp1)**2 + 1/1000000)**2)) - 1/9*((3/2)*q0 - 1/2*qm1)*(4*q0 - 4*qm1)/(((q0 - qm1)**2 + 1/1000000)**5*((1/3)/((q0 - qm1)**2 + 1/1000000)**2 + (2/3)/((-q0 + qp1)**2 + 1/1000000)**2)**2) - (1/6)/(((q0 - qm1)**2 + 1/1000000)**2*((1/3)/((q0 - qm1)**2 + 1/1000000)**2 + (2/3)/((-q0 + qp1)**2 + 1/1000000)**2))) + 0.5*va*((2/3)*((1/2)*q0 + (1/2)*qm1)*(4*q0 - 4*qm1)/(((q0 - qm1)**2 + 1/1000000)**3*((1/3)/((qm1 - qm2)**2 + 1/1000000)**2 + (2/3)/((q0 - qm1)**2 + 1/1000000)**2)) + (2/3)*((1/2)*q0 + (1/2)*qm1)*(-2/3*(4*q0 - 4*qm1)/((q0 - qm1)**2 + 1/1000000)**3 - 1/3*(-4*qm1 + 4*qm2)/((qm1 - qm2)**2 + 1/1000000)**3)/(((q0 - qm1)**2 + 1/1000000)**2*((1/3)/((qm1 - qm2)**2 + 1/1000000)**2 + (2/3)/((q0 - qm1)**2 + 1/1000000)**2)**2) + (1/3)*(-4*qm1 + 4*qm2)*((3/2)*qm1 - 1/2*qm2)/(((qm1 - qm2)**2 + 1/1000000)**3*((1/3)/((qm1 - qm2)**2 + 1/1000000)**2 + (2/3)/((q0 - qm1)**2 + 1/1000000)**2)) + (1/3)*((3/2)*qm1 - 1/2*qm2)*(-2/3*(4*q0 - 4*qm1)/((q0 - qm1)**2 + 1/1000000)**3 - 1/3*(-4*qm1 + 4*qm2)/((qm1 - qm2)**2 + 1/1000000)**3)/(((qm1 - qm2)**2 + 1/1000000)**2*((1/3)/((qm1 - qm2)**2 + 1/1000000)**2 + (2/3)/((q0 - qm1)**2 + 1/1000000)**2)**2) + (1/2)/(((qm1 - qm2)**2 + 1/1000000)**2*((1/3)/((qm1 - qm2)**2 + 1/1000000)**2 + (2/3)/((q0 - qm1)**2 + 1/1000000)**2)) + (1/3)/(((q0 - qm1)**2 + 1/1000000)**2*((1/3)/((qm1 - qm2)**2 + 1/1000000)**2 + (2/3)/((q0 - qm1)**2 + 1/1000000)**2))))/dx
31
+
32
+ @njit(cache=True)
33
+ def dweno_odeqdpp2(pm2, pm1, p0, pp1, pp2, qm2, qm1, q0, qp1, qp2, S, va, lam, D, dx):
34
+ return -0.5*S*(-2/9*((1/2)*p0 + (1/2)*pp1)*(4*pp1 - 4*pp2)/(((-p0 + pp1)**2 + 1/1000000)**2*((-pp1 + pp2)**2 + 1/1000000)**3*((1/3)/((-pp1 + pp2)**2 + 1/1000000)**2 + (2/3)/((-p0 + pp1)**2 + 1/1000000)**2)**2) + (1/3)*((3/2)*pp1 - 1/2*pp2)*(4*pp1 - 4*pp2)/(((-pp1 + pp2)**2 + 1/1000000)**3*((1/3)/((-pp1 + pp2)**2 + 1/1000000)**2 + (2/3)/((-p0 + pp1)**2 + 1/1000000)**2)) - 1/9*((3/2)*pp1 - 1/2*pp2)*(4*pp1 - 4*pp2)/(((-pp1 + pp2)**2 + 1/1000000)**5*((1/3)/((-pp1 + pp2)**2 + 1/1000000)**2 + (2/3)/((-p0 + pp1)**2 + 1/1000000)**2)**2) - (1/6)/(((-pp1 + pp2)**2 + 1/1000000)**2*((1/3)/((-pp1 + pp2)**2 + 1/1000000)**2 + (2/3)/((-p0 + pp1)**2 + 1/1000000)**2)))/dx
35
+
36
+ @njit(cache=True)
37
+ def dweno_odeqdq0(pm2, pm1, p0, pp1, pp2, qm2, qm1, q0, qp1, qp2, S, va, lam, D, dx):
38
+ return (0.5*va*((2/3)*(-4*q0 + 4*qm1)*((1/2)*q0 + (1/2)*qm1)/(((q0 - qm1)**2 + 1/1000000)**3*((1/3)/((qm1 - qm2)**2 + 1/1000000)**2 + (2/3)/((q0 - qm1)**2 + 1/1000000)**2)) - 4/9*(-4*q0 + 4*qm1)*((1/2)*q0 + (1/2)*qm1)/(((q0 - qm1)**2 + 1/1000000)**5*((1/3)/((qm1 - qm2)**2 + 1/1000000)**2 + (2/3)/((q0 - qm1)**2 + 1/1000000)**2)**2) - 2/9*(-4*q0 + 4*qm1)*((3/2)*qm1 - 1/2*qm2)/(((q0 - qm1)**2 + 1/1000000)**3*((qm1 - qm2)**2 + 1/1000000)**2*((1/3)/((qm1 - qm2)**2 + 1/1000000)**2 + (2/3)/((q0 - qm1)**2 + 1/1000000)**2)**2) + (1/3)/(((q0 - qm1)**2 + 1/1000000)**2*((1/3)/((qm1 - qm2)**2 + 1/1000000)**2 + (2/3)/((q0 - qm1)**2 + 1/1000000)**2))) + 0.5*va*((2/3)*(-4*q0 + 4*qp1)*((1/2)*q0 + (1/2)*qp1)/(((-q0 + qp1)**2 + 1/1000000)**3*((1/3)/((-qp1 + qp2)**2 + 1/1000000)**2 + (2/3)/((-q0 + qp1)**2 + 1/1000000)**2)) - 4/9*(-4*q0 + 4*qp1)*((1/2)*q0 + (1/2)*qp1)/(((-q0 + qp1)**2 + 1/1000000)**5*((1/3)/((-qp1 + qp2)**2 + 1/1000000)**2 + (2/3)/((-q0 + qp1)**2 + 1/1000000)**2)**2) - 2/9*(-4*q0 + 4*qp1)*((3/2)*qp1 - 1/2*qp2)/(((-q0 + qp1)**2 + 1/1000000)**3*((-qp1 + qp2)**2 + 1/1000000)**2*((1/3)/((-qp1 + qp2)**2 + 1/1000000)**2 + (2/3)/((-q0 + qp1)**2 + 1/1000000)**2)**2) + (1/3)/(((-q0 + qp1)**2 + 1/1000000)**2*((1/3)/((-qp1 + qp2)**2 + 1/1000000)**2 + (2/3)/((-q0 + qp1)**2 + 1/1000000)**2))) - 0.5*va*((2/3)*(-4*q0 + 4*qm1)*((1/2)*q0 + (1/2)*qm1)/(((q0 - qm1)**2 + 1/1000000)**3*((2/3)/((q0 - qm1)**2 + 1/1000000)**2 + (1/3)/((-q0 + qp1)**2 + 1/1000000)**2)) + (1/3)*(-4*q0 + 4*qp1)*((3/2)*q0 - 1/2*qp1)/(((-q0 + qp1)**2 + 1/1000000)**3*((2/3)/((q0 - qm1)**2 + 1/1000000)**2 + (1/3)/((-q0 + qp1)**2 + 1/1000000)**2)) + (2/3)*((1/2)*q0 + (1/2)*qm1)*(-2/3*(-4*q0 + 4*qm1)/((q0 - qm1)**2 + 1/1000000)**3 - 1/3*(-4*q0 + 4*qp1)/((-q0 + qp1)**2 + 1/1000000)**3)/(((q0 - qm1)**2 + 1/1000000)**2*((2/3)/((q0 - qm1)**2 + 1/1000000)**2 + (1/3)/((-q0 + qp1)**2 + 1/1000000)**2)**2) + (1/3)*((3/2)*q0 - 1/2*qp1)*(-2/3*(-4*q0 + 4*qm1)/((q0 - qm1)**2 + 1/1000000)**3 - 1/3*(-4*q0 + 4*qp1)/((-q0 + qp1)**2 + 1/1000000)**3)/(((-q0 + qp1)**2 + 1/1000000)**2*((2/3)/((q0 - qm1)**2 + 1/1000000)**2 + (1/3)/((-q0 + qp1)**2 + 1/1000000)**2)**2) + (1/3)/(((q0 - qm1)**2 + 1/1000000)**2*((2/3)/((q0 - qm1)**2 + 1/1000000)**2 + (1/3)/((-q0 + qp1)**2 + 1/1000000)**2)) + (1/2)/(((-q0 + qp1)**2 + 1/1000000)**2*((2/3)/((q0 - qm1)**2 + 1/1000000)**2 + (1/3)/((-q0 + qp1)**2 + 1/1000000)**2))) - 0.5*va*((1/3)*(-4*q0 + 4*qm1)*((3/2)*q0 - 1/2*qm1)/(((q0 - qm1)**2 + 1/1000000)**3*((1/3)/((q0 - qm1)**2 + 1/1000000)**2 + (2/3)/((-q0 + qp1)**2 + 1/1000000)**2)) + (2/3)*(-4*q0 + 4*qp1)*((1/2)*q0 + (1/2)*qp1)/(((-q0 + qp1)**2 + 1/1000000)**3*((1/3)/((q0 - qm1)**2 + 1/1000000)**2 + (2/3)/((-q0 + qp1)**2 + 1/1000000)**2)) + (2/3)*((1/2)*q0 + (1/2)*qp1)*(-1/3*(-4*q0 + 4*qm1)/((q0 - qm1)**2 + 1/1000000)**3 - 2/3*(-4*q0 + 4*qp1)/((-q0 + qp1)**2 + 1/1000000)**3)/(((-q0 + qp1)**2 + 1/1000000)**2*((1/3)/((q0 - qm1)**2 + 1/1000000)**2 + (2/3)/((-q0 + qp1)**2 + 1/1000000)**2)**2) + (1/3)*((3/2)*q0 - 1/2*qm1)*(-1/3*(-4*q0 + 4*qm1)/((q0 - qm1)**2 + 1/1000000)**3 - 2/3*(-4*q0 + 4*qp1)/((-q0 + qp1)**2 + 1/1000000)**3)/(((q0 - qm1)**2 + 1/1000000)**2*((1/3)/((q0 - qm1)**2 + 1/1000000)**2 + (2/3)/((-q0 + qp1)**2 + 1/1000000)**2)**2) + (1/2)/(((q0 - qm1)**2 + 1/1000000)**2*((1/3)/((q0 - qm1)**2 + 1/1000000)**2 + (2/3)/((-q0 + qp1)**2 + 1/1000000)**2)) + (1/3)/(((-q0 + qp1)**2 + 1/1000000)**2*((1/3)/((q0 - qm1)**2 + 1/1000000)**2 + (2/3)/((-q0 + qp1)**2 + 1/1000000)**2))))/dx - 1/2*lam*va**2*q0*np.sign(q0)/(D*S*p0) - 1/2*lam*va**2*np.abs(q0)/(D*S*p0)
39
+
40
+ @njit(cache=True)
41
+ def dweno_odeqdpm1(pm2, pm1, p0, pp1, pp2, qm2, qm1, q0, qp1, qp2, S, va, lam, D, dx):
42
+ return (0.5*S*((2/3)*((1/2)*p0 + (1/2)*pm1)*(4*p0 - 4*pm1)/(((p0 - pm1)**2 + 1/1000000)**3*((2/3)/((p0 - pm1)**2 + 1/1000000)**2 + (1/3)/((-p0 + pp1)**2 + 1/1000000)**2)) - 4/9*((1/2)*p0 + (1/2)*pm1)*(4*p0 - 4*pm1)/(((p0 - pm1)**2 + 1/1000000)**5*((2/3)/((p0 - pm1)**2 + 1/1000000)**2 + (1/3)/((-p0 + pp1)**2 + 1/1000000)**2)**2) - 2/9*((3/2)*p0 - 1/2*pp1)*(4*p0 - 4*pm1)/(((-p0 + pp1)**2 + 1/1000000)**2*((p0 - pm1)**2 + 1/1000000)**3*((2/3)/((p0 - pm1)**2 + 1/1000000)**2 + (1/3)/((-p0 + pp1)**2 + 1/1000000)**2)**2) + (1/3)/(((p0 - pm1)**2 + 1/1000000)**2*((2/3)/((p0 - pm1)**2 + 1/1000000)**2 + (1/3)/((-p0 + pp1)**2 + 1/1000000)**2))) - 0.5*S*(-2/9*((1/2)*p0 + (1/2)*pp1)*(4*p0 - 4*pm1)/(((-p0 + pp1)**2 + 1/1000000)**2*((p0 - pm1)**2 + 1/1000000)**3*((1/3)/((p0 - pm1)**2 + 1/1000000)**2 + (2/3)/((-p0 + pp1)**2 + 1/1000000)**2)**2) + (1/3)*((3/2)*p0 - 1/2*pm1)*(4*p0 - 4*pm1)/(((p0 - pm1)**2 + 1/1000000)**3*((1/3)/((p0 - pm1)**2 + 1/1000000)**2 + (2/3)/((-p0 + pp1)**2 + 1/1000000)**2)) - 1/9*((3/2)*p0 - 1/2*pm1)*(4*p0 - 4*pm1)/(((p0 - pm1)**2 + 1/1000000)**5*((1/3)/((p0 - pm1)**2 + 1/1000000)**2 + (2/3)/((-p0 + pp1)**2 + 1/1000000)**2)**2) - (1/6)/(((p0 - pm1)**2 + 1/1000000)**2*((1/3)/((p0 - pm1)**2 + 1/1000000)**2 + (2/3)/((-p0 + pp1)**2 + 1/1000000)**2))) + 0.5*S*((2/3)*((1/2)*p0 + (1/2)*pm1)*(4*p0 - 4*pm1)/(((p0 - pm1)**2 + 1/1000000)**3*((1/3)/((pm1 - pm2)**2 + 1/1000000)**2 + (2/3)/((p0 - pm1)**2 + 1/1000000)**2)) + (2/3)*((1/2)*p0 + (1/2)*pm1)*(-2/3*(4*p0 - 4*pm1)/((p0 - pm1)**2 + 1/1000000)**3 - 1/3*(-4*pm1 + 4*pm2)/((pm1 - pm2)**2 + 1/1000000)**3)/(((p0 - pm1)**2 + 1/1000000)**2*((1/3)/((pm1 - pm2)**2 + 1/1000000)**2 + (2/3)/((p0 - pm1)**2 + 1/1000000)**2)**2) + (1/3)*(-4*pm1 + 4*pm2)*((3/2)*pm1 - 1/2*pm2)/(((pm1 - pm2)**2 + 1/1000000)**3*((1/3)/((pm1 - pm2)**2 + 1/1000000)**2 + (2/3)/((p0 - pm1)**2 + 1/1000000)**2)) + (1/3)*((3/2)*pm1 - 1/2*pm2)*(-2/3*(4*p0 - 4*pm1)/((p0 - pm1)**2 + 1/1000000)**3 - 1/3*(-4*pm1 + 4*pm2)/((pm1 - pm2)**2 + 1/1000000)**3)/(((pm1 - pm2)**2 + 1/1000000)**2*((1/3)/((pm1 - pm2)**2 + 1/1000000)**2 + (2/3)/((p0 - pm1)**2 + 1/1000000)**2)**2) + (1/2)/(((pm1 - pm2)**2 + 1/1000000)**2*((1/3)/((pm1 - pm2)**2 + 1/1000000)**2 + (2/3)/((p0 - pm1)**2 + 1/1000000)**2)) + (1/3)/(((p0 - pm1)**2 + 1/1000000)**2*((1/3)/((pm1 - pm2)**2 + 1/1000000)**2 + (2/3)/((p0 - pm1)**2 + 1/1000000)**2))))/dx
43
+
44
+ @njit(cache=True)
45
+ def dweno_odeqdqm2(pm2, pm1, p0, pp1, pp2, qm2, qm1, q0, qp1, qp2, S, va, lam, D, dx):
46
+ return 0.5*va*(-2/9*((1/2)*q0 + (1/2)*qm1)*(4*qm1 - 4*qm2)/(((q0 - qm1)**2 + 1/1000000)**2*((qm1 - qm2)**2 + 1/1000000)**3*((1/3)/((qm1 - qm2)**2 + 1/1000000)**2 + (2/3)/((q0 - qm1)**2 + 1/1000000)**2)**2) + (1/3)*((3/2)*qm1 - 1/2*qm2)*(4*qm1 - 4*qm2)/(((qm1 - qm2)**2 + 1/1000000)**3*((1/3)/((qm1 - qm2)**2 + 1/1000000)**2 + (2/3)/((q0 - qm1)**2 + 1/1000000)**2)) - 1/9*((3/2)*qm1 - 1/2*qm2)*(4*qm1 - 4*qm2)/(((qm1 - qm2)**2 + 1/1000000)**5*((1/3)/((qm1 - qm2)**2 + 1/1000000)**2 + (2/3)/((q0 - qm1)**2 + 1/1000000)**2)**2) - (1/6)/(((qm1 - qm2)**2 + 1/1000000)**2*((1/3)/((qm1 - qm2)**2 + 1/1000000)**2 + (2/3)/((q0 - qm1)**2 + 1/1000000)**2)))/dx
47
+
48
+ @njit(cache=True)
49
+ def dweno_odeqdpp1(pm2, pm1, p0, pp1, pp2, qm2, qm1, q0, qp1, qp2, S, va, lam, D, dx):
50
+ return (-0.5*S*((2/3)*((1/2)*p0 + (1/2)*pp1)*(4*p0 - 4*pp1)/(((-p0 + pp1)**2 + 1/1000000)**3*((1/3)/((p0 - pm1)**2 + 1/1000000)**2 + (2/3)/((-p0 + pp1)**2 + 1/1000000)**2)) - 4/9*((1/2)*p0 + (1/2)*pp1)*(4*p0 - 4*pp1)/(((-p0 + pp1)**2 + 1/1000000)**5*((1/3)/((p0 - pm1)**2 + 1/1000000)**2 + (2/3)/((-p0 + pp1)**2 + 1/1000000)**2)**2) - 2/9*((3/2)*p0 - 1/2*pm1)*(4*p0 - 4*pp1)/(((-p0 + pp1)**2 + 1/1000000)**3*((p0 - pm1)**2 + 1/1000000)**2*((1/3)/((p0 - pm1)**2 + 1/1000000)**2 + (2/3)/((-p0 + pp1)**2 + 1/1000000)**2)**2) + (1/3)/(((-p0 + pp1)**2 + 1/1000000)**2*((1/3)/((p0 - pm1)**2 + 1/1000000)**2 + (2/3)/((-p0 + pp1)**2 + 1/1000000)**2))) + 0.5*S*(-2/9*((1/2)*p0 + (1/2)*pm1)*(4*p0 - 4*pp1)/(((-p0 + pp1)**2 + 1/1000000)**3*((p0 - pm1)**2 + 1/1000000)**2*((2/3)/((p0 - pm1)**2 + 1/1000000)**2 + (1/3)/((-p0 + pp1)**2 + 1/1000000)**2)**2) + (1/3)*((3/2)*p0 - 1/2*pp1)*(4*p0 - 4*pp1)/(((-p0 + pp1)**2 + 1/1000000)**3*((2/3)/((p0 - pm1)**2 + 1/1000000)**2 + (1/3)/((-p0 + pp1)**2 + 1/1000000)**2)) - 1/9*((3/2)*p0 - 1/2*pp1)*(4*p0 - 4*pp1)/(((-p0 + pp1)**2 + 1/1000000)**5*((2/3)/((p0 - pm1)**2 + 1/1000000)**2 + (1/3)/((-p0 + pp1)**2 + 1/1000000)**2)**2) - (1/6)/(((-p0 + pp1)**2 + 1/1000000)**2*((2/3)/((p0 - pm1)**2 + 1/1000000)**2 + (1/3)/((-p0 + pp1)**2 + 1/1000000)**2))) - 0.5*S*((2/3)*((1/2)*p0 + (1/2)*pp1)*(4*p0 - 4*pp1)/(((-p0 + pp1)**2 + 1/1000000)**3*((1/3)/((-pp1 + pp2)**2 + 1/1000000)**2 + (2/3)/((-p0 + pp1)**2 + 1/1000000)**2)) + (2/3)*((1/2)*p0 + (1/2)*pp1)*(-2/3*(4*p0 - 4*pp1)/((-p0 + pp1)**2 + 1/1000000)**3 - 1/3*(-4*pp1 + 4*pp2)/((-pp1 + pp2)**2 + 1/1000000)**3)/(((-p0 + pp1)**2 + 1/1000000)**2*((1/3)/((-pp1 + pp2)**2 + 1/1000000)**2 + (2/3)/((-p0 + pp1)**2 + 1/1000000)**2)**2) + (1/3)*(-4*pp1 + 4*pp2)*((3/2)*pp1 - 1/2*pp2)/(((-pp1 + pp2)**2 + 1/1000000)**3*((1/3)/((-pp1 + pp2)**2 + 1/1000000)**2 + (2/3)/((-p0 + pp1)**2 + 1/1000000)**2)) + (1/3)*((3/2)*pp1 - 1/2*pp2)*(-2/3*(4*p0 - 4*pp1)/((-p0 + pp1)**2 + 1/1000000)**3 - 1/3*(-4*pp1 + 4*pp2)/((-pp1 + pp2)**2 + 1/1000000)**3)/(((-pp1 + pp2)**2 + 1/1000000)**2*((1/3)/((-pp1 + pp2)**2 + 1/1000000)**2 + (2/3)/((-p0 + pp1)**2 + 1/1000000)**2)**2) + (1/2)/(((-pp1 + pp2)**2 + 1/1000000)**2*((1/3)/((-pp1 + pp2)**2 + 1/1000000)**2 + (2/3)/((-p0 + pp1)**2 + 1/1000000)**2)) + (1/3)/(((-p0 + pp1)**2 + 1/1000000)**2*((1/3)/((-pp1 + pp2)**2 + 1/1000000)**2 + (2/3)/((-p0 + pp1)**2 + 1/1000000)**2))))/dx
51
+
52
+ @njit(cache=True)
53
+ def dweno_odepdqp2(pm2, pm1, p0, pp1, pp2, qm2, qm1, q0, qp1, qp2, S, va, lam, D, dx):
54
+ return -0.5*va**2*(-2/9*((1/2)*q0 + (1/2)*qp1)*(4*qp1 - 4*qp2)/(((-q0 + qp1)**2 + 1/1000000)**2*((-qp1 + qp2)**2 + 1/1000000)**3*((1/3)/((-qp1 + qp2)**2 + 1/1000000)**2 + (2/3)/((-q0 + qp1)**2 + 1/1000000)**2)**2) + (1/3)*((3/2)*qp1 - 1/2*qp2)*(4*qp1 - 4*qp2)/(((-qp1 + qp2)**2 + 1/1000000)**3*((1/3)/((-qp1 + qp2)**2 + 1/1000000)**2 + (2/3)/((-q0 + qp1)**2 + 1/1000000)**2)) - 1/9*((3/2)*qp1 - 1/2*qp2)*(4*qp1 - 4*qp2)/(((-qp1 + qp2)**2 + 1/1000000)**5*((1/3)/((-qp1 + qp2)**2 + 1/1000000)**2 + (2/3)/((-q0 + qp1)**2 + 1/1000000)**2)**2) - (1/6)/(((-qp1 + qp2)**2 + 1/1000000)**2*((1/3)/((-qp1 + qp2)**2 + 1/1000000)**2 + (2/3)/((-q0 + qp1)**2 + 1/1000000)**2)))/(S*dx)
55
+
56
+ @njit(cache=True)
57
+ def dweno_odepdp0(pm2, pm1, p0, pp1, pp2, qm2, qm1, q0, qp1, qp2, S, va, lam, D, dx):
58
+ return (0.5*va*((2/3)*(-4*p0 + 4*pm1)*((1/2)*p0 + (1/2)*pm1)/(((p0 - pm1)**2 + 1/1000000)**3*((1/3)/((pm1 - pm2)**2 + 1/1000000)**2 + (2/3)/((p0 - pm1)**2 + 1/1000000)**2)) - 4/9*(-4*p0 + 4*pm1)*((1/2)*p0 + (1/2)*pm1)/(((p0 - pm1)**2 + 1/1000000)**5*((1/3)/((pm1 - pm2)**2 + 1/1000000)**2 + (2/3)/((p0 - pm1)**2 + 1/1000000)**2)**2) - 2/9*(-4*p0 + 4*pm1)*((3/2)*pm1 - 1/2*pm2)/(((p0 - pm1)**2 + 1/1000000)**3*((pm1 - pm2)**2 + 1/1000000)**2*((1/3)/((pm1 - pm2)**2 + 1/1000000)**2 + (2/3)/((p0 - pm1)**2 + 1/1000000)**2)**2) + (1/3)/(((p0 - pm1)**2 + 1/1000000)**2*((1/3)/((pm1 - pm2)**2 + 1/1000000)**2 + (2/3)/((p0 - pm1)**2 + 1/1000000)**2))) + 0.5*va*((2/3)*(-4*p0 + 4*pp1)*((1/2)*p0 + (1/2)*pp1)/(((-p0 + pp1)**2 + 1/1000000)**3*((1/3)/((-pp1 + pp2)**2 + 1/1000000)**2 + (2/3)/((-p0 + pp1)**2 + 1/1000000)**2)) - 4/9*(-4*p0 + 4*pp1)*((1/2)*p0 + (1/2)*pp1)/(((-p0 + pp1)**2 + 1/1000000)**5*((1/3)/((-pp1 + pp2)**2 + 1/1000000)**2 + (2/3)/((-p0 + pp1)**2 + 1/1000000)**2)**2) - 2/9*(-4*p0 + 4*pp1)*((3/2)*pp1 - 1/2*pp2)/(((-p0 + pp1)**2 + 1/1000000)**3*((-pp1 + pp2)**2 + 1/1000000)**2*((1/3)/((-pp1 + pp2)**2 + 1/1000000)**2 + (2/3)/((-p0 + pp1)**2 + 1/1000000)**2)**2) + (1/3)/(((-p0 + pp1)**2 + 1/1000000)**2*((1/3)/((-pp1 + pp2)**2 + 1/1000000)**2 + (2/3)/((-p0 + pp1)**2 + 1/1000000)**2))) - 0.5*va*((2/3)*(-4*p0 + 4*pm1)*((1/2)*p0 + (1/2)*pm1)/(((p0 - pm1)**2 + 1/1000000)**3*((2/3)/((p0 - pm1)**2 + 1/1000000)**2 + (1/3)/((-p0 + pp1)**2 + 1/1000000)**2)) + (1/3)*(-4*p0 + 4*pp1)*((3/2)*p0 - 1/2*pp1)/(((-p0 + pp1)**2 + 1/1000000)**3*((2/3)/((p0 - pm1)**2 + 1/1000000)**2 + (1/3)/((-p0 + pp1)**2 + 1/1000000)**2)) + (2/3)*((1/2)*p0 + (1/2)*pm1)*(-2/3*(-4*p0 + 4*pm1)/((p0 - pm1)**2 + 1/1000000)**3 - 1/3*(-4*p0 + 4*pp1)/((-p0 + pp1)**2 + 1/1000000)**3)/(((p0 - pm1)**2 + 1/1000000)**2*((2/3)/((p0 - pm1)**2 + 1/1000000)**2 + (1/3)/((-p0 + pp1)**2 + 1/1000000)**2)**2) + (1/3)*((3/2)*p0 - 1/2*pp1)*(-2/3*(-4*p0 + 4*pm1)/((p0 - pm1)**2 + 1/1000000)**3 - 1/3*(-4*p0 + 4*pp1)/((-p0 + pp1)**2 + 1/1000000)**3)/(((-p0 + pp1)**2 + 1/1000000)**2*((2/3)/((p0 - pm1)**2 + 1/1000000)**2 + (1/3)/((-p0 + pp1)**2 + 1/1000000)**2)**2) + (1/3)/(((p0 - pm1)**2 + 1/1000000)**2*((2/3)/((p0 - pm1)**2 + 1/1000000)**2 + (1/3)/((-p0 + pp1)**2 + 1/1000000)**2)) + (1/2)/(((-p0 + pp1)**2 + 1/1000000)**2*((2/3)/((p0 - pm1)**2 + 1/1000000)**2 + (1/3)/((-p0 + pp1)**2 + 1/1000000)**2))) - 0.5*va*((1/3)*(-4*p0 + 4*pm1)*((3/2)*p0 - 1/2*pm1)/(((p0 - pm1)**2 + 1/1000000)**3*((1/3)/((p0 - pm1)**2 + 1/1000000)**2 + (2/3)/((-p0 + pp1)**2 + 1/1000000)**2)) + (2/3)*(-4*p0 + 4*pp1)*((1/2)*p0 + (1/2)*pp1)/(((-p0 + pp1)**2 + 1/1000000)**3*((1/3)/((p0 - pm1)**2 + 1/1000000)**2 + (2/3)/((-p0 + pp1)**2 + 1/1000000)**2)) + (2/3)*((1/2)*p0 + (1/2)*pp1)*(-1/3*(-4*p0 + 4*pm1)/((p0 - pm1)**2 + 1/1000000)**3 - 2/3*(-4*p0 + 4*pp1)/((-p0 + pp1)**2 + 1/1000000)**3)/(((-p0 + pp1)**2 + 1/1000000)**2*((1/3)/((p0 - pm1)**2 + 1/1000000)**2 + (2/3)/((-p0 + pp1)**2 + 1/1000000)**2)**2) + (1/3)*((3/2)*p0 - 1/2*pm1)*(-1/3*(-4*p0 + 4*pm1)/((p0 - pm1)**2 + 1/1000000)**3 - 2/3*(-4*p0 + 4*pp1)/((-p0 + pp1)**2 + 1/1000000)**3)/(((p0 - pm1)**2 + 1/1000000)**2*((1/3)/((p0 - pm1)**2 + 1/1000000)**2 + (2/3)/((-p0 + pp1)**2 + 1/1000000)**2)**2) + (1/2)/(((p0 - pm1)**2 + 1/1000000)**2*((1/3)/((p0 - pm1)**2 + 1/1000000)**2 + (2/3)/((-p0 + pp1)**2 + 1/1000000)**2)) + (1/3)/(((-p0 + pp1)**2 + 1/1000000)**2*((1/3)/((p0 - pm1)**2 + 1/1000000)**2 + (2/3)/((-p0 + pp1)**2 + 1/1000000)**2))))/dx
59
+
60
+ @njit(cache=True)
61
+ def dweno_odepdpm2(pm2, pm1, p0, pp1, pp2, qm2, qm1, q0, qp1, qp2, S, va, lam, D, dx):
62
+ return 0.5*va*(-2/9*((1/2)*p0 + (1/2)*pm1)*(4*pm1 - 4*pm2)/(((p0 - pm1)**2 + 1/1000000)**2*((pm1 - pm2)**2 + 1/1000000)**3*((1/3)/((pm1 - pm2)**2 + 1/1000000)**2 + (2/3)/((p0 - pm1)**2 + 1/1000000)**2)**2) + (1/3)*((3/2)*pm1 - 1/2*pm2)*(4*pm1 - 4*pm2)/(((pm1 - pm2)**2 + 1/1000000)**3*((1/3)/((pm1 - pm2)**2 + 1/1000000)**2 + (2/3)/((p0 - pm1)**2 + 1/1000000)**2)) - 1/9*((3/2)*pm1 - 1/2*pm2)*(4*pm1 - 4*pm2)/(((pm1 - pm2)**2 + 1/1000000)**5*((1/3)/((pm1 - pm2)**2 + 1/1000000)**2 + (2/3)/((p0 - pm1)**2 + 1/1000000)**2)**2) - (1/6)/(((pm1 - pm2)**2 + 1/1000000)**2*((1/3)/((pm1 - pm2)**2 + 1/1000000)**2 + (2/3)/((p0 - pm1)**2 + 1/1000000)**2)))/dx
63
+
64
+ @njit(cache=True)
65
+ def dweno_odepdqm1(pm2, pm1, p0, pp1, pp2, qm2, qm1, q0, qp1, qp2, S, va, lam, D, dx):
66
+ return (0.5*va**2*((2/3)*((1/2)*q0 + (1/2)*qm1)*(4*q0 - 4*qm1)/(((q0 - qm1)**2 + 1/1000000)**3*((2/3)/((q0 - qm1)**2 + 1/1000000)**2 + (1/3)/((-q0 + qp1)**2 + 1/1000000)**2)) - 4/9*((1/2)*q0 + (1/2)*qm1)*(4*q0 - 4*qm1)/(((q0 - qm1)**2 + 1/1000000)**5*((2/3)/((q0 - qm1)**2 + 1/1000000)**2 + (1/3)/((-q0 + qp1)**2 + 1/1000000)**2)**2) - 2/9*((3/2)*q0 - 1/2*qp1)*(4*q0 - 4*qm1)/(((-q0 + qp1)**2 + 1/1000000)**2*((q0 - qm1)**2 + 1/1000000)**3*((2/3)/((q0 - qm1)**2 + 1/1000000)**2 + (1/3)/((-q0 + qp1)**2 + 1/1000000)**2)**2) + (1/3)/(((q0 - qm1)**2 + 1/1000000)**2*((2/3)/((q0 - qm1)**2 + 1/1000000)**2 + (1/3)/((-q0 + qp1)**2 + 1/1000000)**2)))/S - 0.5*va**2*(-2/9*((1/2)*q0 + (1/2)*qp1)*(4*q0 - 4*qm1)/(((-q0 + qp1)**2 + 1/1000000)**2*((q0 - qm1)**2 + 1/1000000)**3*((1/3)/((q0 - qm1)**2 + 1/1000000)**2 + (2/3)/((-q0 + qp1)**2 + 1/1000000)**2)**2) + (1/3)*((3/2)*q0 - 1/2*qm1)*(4*q0 - 4*qm1)/(((q0 - qm1)**2 + 1/1000000)**3*((1/3)/((q0 - qm1)**2 + 1/1000000)**2 + (2/3)/((-q0 + qp1)**2 + 1/1000000)**2)) - 1/9*((3/2)*q0 - 1/2*qm1)*(4*q0 - 4*qm1)/(((q0 - qm1)**2 + 1/1000000)**5*((1/3)/((q0 - qm1)**2 + 1/1000000)**2 + (2/3)/((-q0 + qp1)**2 + 1/1000000)**2)**2) - (1/6)/(((q0 - qm1)**2 + 1/1000000)**2*((1/3)/((q0 - qm1)**2 + 1/1000000)**2 + (2/3)/((-q0 + qp1)**2 + 1/1000000)**2)))/S + 0.5*va**2*((2/3)*((1/2)*q0 + (1/2)*qm1)*(4*q0 - 4*qm1)/(((q0 - qm1)**2 + 1/1000000)**3*((1/3)/((qm1 - qm2)**2 + 1/1000000)**2 + (2/3)/((q0 - qm1)**2 + 1/1000000)**2)) + (2/3)*((1/2)*q0 + (1/2)*qm1)*(-2/3*(4*q0 - 4*qm1)/((q0 - qm1)**2 + 1/1000000)**3 - 1/3*(-4*qm1 + 4*qm2)/((qm1 - qm2)**2 + 1/1000000)**3)/(((q0 - qm1)**2 + 1/1000000)**2*((1/3)/((qm1 - qm2)**2 + 1/1000000)**2 + (2/3)/((q0 - qm1)**2 + 1/1000000)**2)**2) + (1/3)*(-4*qm1 + 4*qm2)*((3/2)*qm1 - 1/2*qm2)/(((qm1 - qm2)**2 + 1/1000000)**3*((1/3)/((qm1 - qm2)**2 + 1/1000000)**2 + (2/3)/((q0 - qm1)**2 + 1/1000000)**2)) + (1/3)*((3/2)*qm1 - 1/2*qm2)*(-2/3*(4*q0 - 4*qm1)/((q0 - qm1)**2 + 1/1000000)**3 - 1/3*(-4*qm1 + 4*qm2)/((qm1 - qm2)**2 + 1/1000000)**3)/(((qm1 - qm2)**2 + 1/1000000)**2*((1/3)/((qm1 - qm2)**2 + 1/1000000)**2 + (2/3)/((q0 - qm1)**2 + 1/1000000)**2)**2) + (1/2)/(((qm1 - qm2)**2 + 1/1000000)**2*((1/3)/((qm1 - qm2)**2 + 1/1000000)**2 + (2/3)/((q0 - qm1)**2 + 1/1000000)**2)) + (1/3)/(((q0 - qm1)**2 + 1/1000000)**2*((1/3)/((qm1 - qm2)**2 + 1/1000000)**2 + (2/3)/((q0 - qm1)**2 + 1/1000000)**2)))/S)/dx
67
+
68
+ @njit(cache=True)
69
+ def dweno_odepdpp2(pm2, pm1, p0, pp1, pp2, qm2, qm1, q0, qp1, qp2, S, va, lam, D, dx):
70
+ return 0.5*va*(-2/9*((1/2)*p0 + (1/2)*pp1)*(4*pp1 - 4*pp2)/(((-p0 + pp1)**2 + 1/1000000)**2*((-pp1 + pp2)**2 + 1/1000000)**3*((1/3)/((-pp1 + pp2)**2 + 1/1000000)**2 + (2/3)/((-p0 + pp1)**2 + 1/1000000)**2)**2) + (1/3)*((3/2)*pp1 - 1/2*pp2)*(4*pp1 - 4*pp2)/(((-pp1 + pp2)**2 + 1/1000000)**3*((1/3)/((-pp1 + pp2)**2 + 1/1000000)**2 + (2/3)/((-p0 + pp1)**2 + 1/1000000)**2)) - 1/9*((3/2)*pp1 - 1/2*pp2)*(4*pp1 - 4*pp2)/(((-pp1 + pp2)**2 + 1/1000000)**5*((1/3)/((-pp1 + pp2)**2 + 1/1000000)**2 + (2/3)/((-p0 + pp1)**2 + 1/1000000)**2)**2) - (1/6)/(((-pp1 + pp2)**2 + 1/1000000)**2*((1/3)/((-pp1 + pp2)**2 + 1/1000000)**2 + (2/3)/((-p0 + pp1)**2 + 1/1000000)**2)))/dx
71
+
72
+ @njit(cache=True)
73
+ def dweno_odepdq0(pm2, pm1, p0, pp1, pp2, qm2, qm1, q0, qp1, qp2, S, va, lam, D, dx):
74
+ return (0.5*va**2*((2/3)*(-4*q0 + 4*qm1)*((1/2)*q0 + (1/2)*qm1)/(((q0 - qm1)**2 + 1/1000000)**3*((1/3)/((qm1 - qm2)**2 + 1/1000000)**2 + (2/3)/((q0 - qm1)**2 + 1/1000000)**2)) - 4/9*(-4*q0 + 4*qm1)*((1/2)*q0 + (1/2)*qm1)/(((q0 - qm1)**2 + 1/1000000)**5*((1/3)/((qm1 - qm2)**2 + 1/1000000)**2 + (2/3)/((q0 - qm1)**2 + 1/1000000)**2)**2) - 2/9*(-4*q0 + 4*qm1)*((3/2)*qm1 - 1/2*qm2)/(((q0 - qm1)**2 + 1/1000000)**3*((qm1 - qm2)**2 + 1/1000000)**2*((1/3)/((qm1 - qm2)**2 + 1/1000000)**2 + (2/3)/((q0 - qm1)**2 + 1/1000000)**2)**2) + (1/3)/(((q0 - qm1)**2 + 1/1000000)**2*((1/3)/((qm1 - qm2)**2 + 1/1000000)**2 + (2/3)/((q0 - qm1)**2 + 1/1000000)**2)))/S - 0.5*va**2*((2/3)*(-4*q0 + 4*qp1)*((1/2)*q0 + (1/2)*qp1)/(((-q0 + qp1)**2 + 1/1000000)**3*((1/3)/((-qp1 + qp2)**2 + 1/1000000)**2 + (2/3)/((-q0 + qp1)**2 + 1/1000000)**2)) - 4/9*(-4*q0 + 4*qp1)*((1/2)*q0 + (1/2)*qp1)/(((-q0 + qp1)**2 + 1/1000000)**5*((1/3)/((-qp1 + qp2)**2 + 1/1000000)**2 + (2/3)/((-q0 + qp1)**2 + 1/1000000)**2)**2) - 2/9*(-4*q0 + 4*qp1)*((3/2)*qp1 - 1/2*qp2)/(((-q0 + qp1)**2 + 1/1000000)**3*((-qp1 + qp2)**2 + 1/1000000)**2*((1/3)/((-qp1 + qp2)**2 + 1/1000000)**2 + (2/3)/((-q0 + qp1)**2 + 1/1000000)**2)**2) + (1/3)/(((-q0 + qp1)**2 + 1/1000000)**2*((1/3)/((-qp1 + qp2)**2 + 1/1000000)**2 + (2/3)/((-q0 + qp1)**2 + 1/1000000)**2)))/S + 0.5*va**2*((2/3)*(-4*q0 + 4*qm1)*((1/2)*q0 + (1/2)*qm1)/(((q0 - qm1)**2 + 1/1000000)**3*((2/3)/((q0 - qm1)**2 + 1/1000000)**2 + (1/3)/((-q0 + qp1)**2 + 1/1000000)**2)) + (1/3)*(-4*q0 + 4*qp1)*((3/2)*q0 - 1/2*qp1)/(((-q0 + qp1)**2 + 1/1000000)**3*((2/3)/((q0 - qm1)**2 + 1/1000000)**2 + (1/3)/((-q0 + qp1)**2 + 1/1000000)**2)) + (2/3)*((1/2)*q0 + (1/2)*qm1)*(-2/3*(-4*q0 + 4*qm1)/((q0 - qm1)**2 + 1/1000000)**3 - 1/3*(-4*q0 + 4*qp1)/((-q0 + qp1)**2 + 1/1000000)**3)/(((q0 - qm1)**2 + 1/1000000)**2*((2/3)/((q0 - qm1)**2 + 1/1000000)**2 + (1/3)/((-q0 + qp1)**2 + 1/1000000)**2)**2) + (1/3)*((3/2)*q0 - 1/2*qp1)*(-2/3*(-4*q0 + 4*qm1)/((q0 - qm1)**2 + 1/1000000)**3 - 1/3*(-4*q0 + 4*qp1)/((-q0 + qp1)**2 + 1/1000000)**3)/(((-q0 + qp1)**2 + 1/1000000)**2*((2/3)/((q0 - qm1)**2 + 1/1000000)**2 + (1/3)/((-q0 + qp1)**2 + 1/1000000)**2)**2) + (1/3)/(((q0 - qm1)**2 + 1/1000000)**2*((2/3)/((q0 - qm1)**2 + 1/1000000)**2 + (1/3)/((-q0 + qp1)**2 + 1/1000000)**2)) + (1/2)/(((-q0 + qp1)**2 + 1/1000000)**2*((2/3)/((q0 - qm1)**2 + 1/1000000)**2 + (1/3)/((-q0 + qp1)**2 + 1/1000000)**2)))/S - 0.5*va**2*((1/3)*(-4*q0 + 4*qm1)*((3/2)*q0 - 1/2*qm1)/(((q0 - qm1)**2 + 1/1000000)**3*((1/3)/((q0 - qm1)**2 + 1/1000000)**2 + (2/3)/((-q0 + qp1)**2 + 1/1000000)**2)) + (2/3)*(-4*q0 + 4*qp1)*((1/2)*q0 + (1/2)*qp1)/(((-q0 + qp1)**2 + 1/1000000)**3*((1/3)/((q0 - qm1)**2 + 1/1000000)**2 + (2/3)/((-q0 + qp1)**2 + 1/1000000)**2)) + (2/3)*((1/2)*q0 + (1/2)*qp1)*(-1/3*(-4*q0 + 4*qm1)/((q0 - qm1)**2 + 1/1000000)**3 - 2/3*(-4*q0 + 4*qp1)/((-q0 + qp1)**2 + 1/1000000)**3)/(((-q0 + qp1)**2 + 1/1000000)**2*((1/3)/((q0 - qm1)**2 + 1/1000000)**2 + (2/3)/((-q0 + qp1)**2 + 1/1000000)**2)**2) + (1/3)*((3/2)*q0 - 1/2*qm1)*(-1/3*(-4*q0 + 4*qm1)/((q0 - qm1)**2 + 1/1000000)**3 - 2/3*(-4*q0 + 4*qp1)/((-q0 + qp1)**2 + 1/1000000)**3)/(((q0 - qm1)**2 + 1/1000000)**2*((1/3)/((q0 - qm1)**2 + 1/1000000)**2 + (2/3)/((-q0 + qp1)**2 + 1/1000000)**2)**2) + (1/2)/(((q0 - qm1)**2 + 1/1000000)**2*((1/3)/((q0 - qm1)**2 + 1/1000000)**2 + (2/3)/((-q0 + qp1)**2 + 1/1000000)**2)) + (1/3)/(((-q0 + qp1)**2 + 1/1000000)**2*((1/3)/((q0 - qm1)**2 + 1/1000000)**2 + (2/3)/((-q0 + qp1)**2 + 1/1000000)**2)))/S)/dx
75
+
76
+ @njit(cache=True)
77
+ def dweno_odepdqp1(pm2, pm1, p0, pp1, pp2, qm2, qm1, q0, qp1, qp2, S, va, lam, D, dx):
78
+ return (-0.5*va**2*((2/3)*((1/2)*q0 + (1/2)*qp1)*(4*q0 - 4*qp1)/(((-q0 + qp1)**2 + 1/1000000)**3*((1/3)/((q0 - qm1)**2 + 1/1000000)**2 + (2/3)/((-q0 + qp1)**2 + 1/1000000)**2)) - 4/9*((1/2)*q0 + (1/2)*qp1)*(4*q0 - 4*qp1)/(((-q0 + qp1)**2 + 1/1000000)**5*((1/3)/((q0 - qm1)**2 + 1/1000000)**2 + (2/3)/((-q0 + qp1)**2 + 1/1000000)**2)**2) - 2/9*((3/2)*q0 - 1/2*qm1)*(4*q0 - 4*qp1)/(((-q0 + qp1)**2 + 1/1000000)**3*((q0 - qm1)**2 + 1/1000000)**2*((1/3)/((q0 - qm1)**2 + 1/1000000)**2 + (2/3)/((-q0 + qp1)**2 + 1/1000000)**2)**2) + (1/3)/(((-q0 + qp1)**2 + 1/1000000)**2*((1/3)/((q0 - qm1)**2 + 1/1000000)**2 + (2/3)/((-q0 + qp1)**2 + 1/1000000)**2)))/S + 0.5*va**2*(-2/9*((1/2)*q0 + (1/2)*qm1)*(4*q0 - 4*qp1)/(((-q0 + qp1)**2 + 1/1000000)**3*((q0 - qm1)**2 + 1/1000000)**2*((2/3)/((q0 - qm1)**2 + 1/1000000)**2 + (1/3)/((-q0 + qp1)**2 + 1/1000000)**2)**2) + (1/3)*((3/2)*q0 - 1/2*qp1)*(4*q0 - 4*qp1)/(((-q0 + qp1)**2 + 1/1000000)**3*((2/3)/((q0 - qm1)**2 + 1/1000000)**2 + (1/3)/((-q0 + qp1)**2 + 1/1000000)**2)) - 1/9*((3/2)*q0 - 1/2*qp1)*(4*q0 - 4*qp1)/(((-q0 + qp1)**2 + 1/1000000)**5*((2/3)/((q0 - qm1)**2 + 1/1000000)**2 + (1/3)/((-q0 + qp1)**2 + 1/1000000)**2)**2) - (1/6)/(((-q0 + qp1)**2 + 1/1000000)**2*((2/3)/((q0 - qm1)**2 + 1/1000000)**2 + (1/3)/((-q0 + qp1)**2 + 1/1000000)**2)))/S - 0.5*va**2*((2/3)*((1/2)*q0 + (1/2)*qp1)*(4*q0 - 4*qp1)/(((-q0 + qp1)**2 + 1/1000000)**3*((1/3)/((-qp1 + qp2)**2 + 1/1000000)**2 + (2/3)/((-q0 + qp1)**2 + 1/1000000)**2)) + (2/3)*((1/2)*q0 + (1/2)*qp1)*(-2/3*(4*q0 - 4*qp1)/((-q0 + qp1)**2 + 1/1000000)**3 - 1/3*(-4*qp1 + 4*qp2)/((-qp1 + qp2)**2 + 1/1000000)**3)/(((-q0 + qp1)**2 + 1/1000000)**2*((1/3)/((-qp1 + qp2)**2 + 1/1000000)**2 + (2/3)/((-q0 + qp1)**2 + 1/1000000)**2)**2) + (1/3)*(-4*qp1 + 4*qp2)*((3/2)*qp1 - 1/2*qp2)/(((-qp1 + qp2)**2 + 1/1000000)**3*((1/3)/((-qp1 + qp2)**2 + 1/1000000)**2 + (2/3)/((-q0 + qp1)**2 + 1/1000000)**2)) + (1/3)*((3/2)*qp1 - 1/2*qp2)*(-2/3*(4*q0 - 4*qp1)/((-q0 + qp1)**2 + 1/1000000)**3 - 1/3*(-4*qp1 + 4*qp2)/((-qp1 + qp2)**2 + 1/1000000)**3)/(((-qp1 + qp2)**2 + 1/1000000)**2*((1/3)/((-qp1 + qp2)**2 + 1/1000000)**2 + (2/3)/((-q0 + qp1)**2 + 1/1000000)**2)**2) + (1/2)/(((-qp1 + qp2)**2 + 1/1000000)**2*((1/3)/((-qp1 + qp2)**2 + 1/1000000)**2 + (2/3)/((-q0 + qp1)**2 + 1/1000000)**2)) + (1/3)/(((-q0 + qp1)**2 + 1/1000000)**2*((1/3)/((-qp1 + qp2)**2 + 1/1000000)**2 + (2/3)/((-q0 + qp1)**2 + 1/1000000)**2)))/S)/dx
79
+
80
+ @njit(cache=True)
81
+ def dweno_odepdpm1(pm2, pm1, p0, pp1, pp2, qm2, qm1, q0, qp1, qp2, S, va, lam, D, dx):
82
+ return (-0.5*va*((2/3)*((1/2)*p0 + (1/2)*pm1)*(4*p0 - 4*pm1)/(((p0 - pm1)**2 + 1/1000000)**3*((2/3)/((p0 - pm1)**2 + 1/1000000)**2 + (1/3)/((-p0 + pp1)**2 + 1/1000000)**2)) - 4/9*((1/2)*p0 + (1/2)*pm1)*(4*p0 - 4*pm1)/(((p0 - pm1)**2 + 1/1000000)**5*((2/3)/((p0 - pm1)**2 + 1/1000000)**2 + (1/3)/((-p0 + pp1)**2 + 1/1000000)**2)**2) - 2/9*((3/2)*p0 - 1/2*pp1)*(4*p0 - 4*pm1)/(((-p0 + pp1)**2 + 1/1000000)**2*((p0 - pm1)**2 + 1/1000000)**3*((2/3)/((p0 - pm1)**2 + 1/1000000)**2 + (1/3)/((-p0 + pp1)**2 + 1/1000000)**2)**2) + (1/3)/(((p0 - pm1)**2 + 1/1000000)**2*((2/3)/((p0 - pm1)**2 + 1/1000000)**2 + (1/3)/((-p0 + pp1)**2 + 1/1000000)**2))) - 0.5*va*(-2/9*((1/2)*p0 + (1/2)*pp1)*(4*p0 - 4*pm1)/(((-p0 + pp1)**2 + 1/1000000)**2*((p0 - pm1)**2 + 1/1000000)**3*((1/3)/((p0 - pm1)**2 + 1/1000000)**2 + (2/3)/((-p0 + pp1)**2 + 1/1000000)**2)**2) + (1/3)*((3/2)*p0 - 1/2*pm1)*(4*p0 - 4*pm1)/(((p0 - pm1)**2 + 1/1000000)**3*((1/3)/((p0 - pm1)**2 + 1/1000000)**2 + (2/3)/((-p0 + pp1)**2 + 1/1000000)**2)) - 1/9*((3/2)*p0 - 1/2*pm1)*(4*p0 - 4*pm1)/(((p0 - pm1)**2 + 1/1000000)**5*((1/3)/((p0 - pm1)**2 + 1/1000000)**2 + (2/3)/((-p0 + pp1)**2 + 1/1000000)**2)**2) - (1/6)/(((p0 - pm1)**2 + 1/1000000)**2*((1/3)/((p0 - pm1)**2 + 1/1000000)**2 + (2/3)/((-p0 + pp1)**2 + 1/1000000)**2))) + 0.5*va*((2/3)*((1/2)*p0 + (1/2)*pm1)*(4*p0 - 4*pm1)/(((p0 - pm1)**2 + 1/1000000)**3*((1/3)/((pm1 - pm2)**2 + 1/1000000)**2 + (2/3)/((p0 - pm1)**2 + 1/1000000)**2)) + (2/3)*((1/2)*p0 + (1/2)*pm1)*(-2/3*(4*p0 - 4*pm1)/((p0 - pm1)**2 + 1/1000000)**3 - 1/3*(-4*pm1 + 4*pm2)/((pm1 - pm2)**2 + 1/1000000)**3)/(((p0 - pm1)**2 + 1/1000000)**2*((1/3)/((pm1 - pm2)**2 + 1/1000000)**2 + (2/3)/((p0 - pm1)**2 + 1/1000000)**2)**2) + (1/3)*(-4*pm1 + 4*pm2)*((3/2)*pm1 - 1/2*pm2)/(((pm1 - pm2)**2 + 1/1000000)**3*((1/3)/((pm1 - pm2)**2 + 1/1000000)**2 + (2/3)/((p0 - pm1)**2 + 1/1000000)**2)) + (1/3)*((3/2)*pm1 - 1/2*pm2)*(-2/3*(4*p0 - 4*pm1)/((p0 - pm1)**2 + 1/1000000)**3 - 1/3*(-4*pm1 + 4*pm2)/((pm1 - pm2)**2 + 1/1000000)**3)/(((pm1 - pm2)**2 + 1/1000000)**2*((1/3)/((pm1 - pm2)**2 + 1/1000000)**2 + (2/3)/((p0 - pm1)**2 + 1/1000000)**2)**2) + (1/2)/(((pm1 - pm2)**2 + 1/1000000)**2*((1/3)/((pm1 - pm2)**2 + 1/1000000)**2 + (2/3)/((p0 - pm1)**2 + 1/1000000)**2)) + (1/3)/(((p0 - pm1)**2 + 1/1000000)**2*((1/3)/((pm1 - pm2)**2 + 1/1000000)**2 + (2/3)/((p0 - pm1)**2 + 1/1000000)**2))))/dx
83
+
84
+ @njit(cache=True)
85
+ def dweno_odepdqm2(pm2, pm1, p0, pp1, pp2, qm2, qm1, q0, qp1, qp2, S, va, lam, D, dx):
86
+ return 0.5*va**2*(-2/9*((1/2)*q0 + (1/2)*qm1)*(4*qm1 - 4*qm2)/(((q0 - qm1)**2 + 1/1000000)**2*((qm1 - qm2)**2 + 1/1000000)**3*((1/3)/((qm1 - qm2)**2 + 1/1000000)**2 + (2/3)/((q0 - qm1)**2 + 1/1000000)**2)**2) + (1/3)*((3/2)*qm1 - 1/2*qm2)*(4*qm1 - 4*qm2)/(((qm1 - qm2)**2 + 1/1000000)**3*((1/3)/((qm1 - qm2)**2 + 1/1000000)**2 + (2/3)/((q0 - qm1)**2 + 1/1000000)**2)) - 1/9*((3/2)*qm1 - 1/2*qm2)*(4*qm1 - 4*qm2)/(((qm1 - qm2)**2 + 1/1000000)**5*((1/3)/((qm1 - qm2)**2 + 1/1000000)**2 + (2/3)/((q0 - qm1)**2 + 1/1000000)**2)**2) - (1/6)/(((qm1 - qm2)**2 + 1/1000000)**2*((1/3)/((qm1 - qm2)**2 + 1/1000000)**2 + (2/3)/((q0 - qm1)**2 + 1/1000000)**2)))/(S*dx)
87
+
88
+ @njit(cache=True)
89
+ def dweno_odepdpp1(pm2, pm1, p0, pp1, pp2, qm2, qm1, q0, qp1, qp2, S, va, lam, D, dx):
90
+ return (-0.5*va*((2/3)*((1/2)*p0 + (1/2)*pp1)*(4*p0 - 4*pp1)/(((-p0 + pp1)**2 + 1/1000000)**3*((1/3)/((p0 - pm1)**2 + 1/1000000)**2 + (2/3)/((-p0 + pp1)**2 + 1/1000000)**2)) - 4/9*((1/2)*p0 + (1/2)*pp1)*(4*p0 - 4*pp1)/(((-p0 + pp1)**2 + 1/1000000)**5*((1/3)/((p0 - pm1)**2 + 1/1000000)**2 + (2/3)/((-p0 + pp1)**2 + 1/1000000)**2)**2) - 2/9*((3/2)*p0 - 1/2*pm1)*(4*p0 - 4*pp1)/(((-p0 + pp1)**2 + 1/1000000)**3*((p0 - pm1)**2 + 1/1000000)**2*((1/3)/((p0 - pm1)**2 + 1/1000000)**2 + (2/3)/((-p0 + pp1)**2 + 1/1000000)**2)**2) + (1/3)/(((-p0 + pp1)**2 + 1/1000000)**2*((1/3)/((p0 - pm1)**2 + 1/1000000)**2 + (2/3)/((-p0 + pp1)**2 + 1/1000000)**2))) - 0.5*va*(-2/9*((1/2)*p0 + (1/2)*pm1)*(4*p0 - 4*pp1)/(((-p0 + pp1)**2 + 1/1000000)**3*((p0 - pm1)**2 + 1/1000000)**2*((2/3)/((p0 - pm1)**2 + 1/1000000)**2 + (1/3)/((-p0 + pp1)**2 + 1/1000000)**2)**2) + (1/3)*((3/2)*p0 - 1/2*pp1)*(4*p0 - 4*pp1)/(((-p0 + pp1)**2 + 1/1000000)**3*((2/3)/((p0 - pm1)**2 + 1/1000000)**2 + (1/3)/((-p0 + pp1)**2 + 1/1000000)**2)) - 1/9*((3/2)*p0 - 1/2*pp1)*(4*p0 - 4*pp1)/(((-p0 + pp1)**2 + 1/1000000)**5*((2/3)/((p0 - pm1)**2 + 1/1000000)**2 + (1/3)/((-p0 + pp1)**2 + 1/1000000)**2)**2) - (1/6)/(((-p0 + pp1)**2 + 1/1000000)**2*((2/3)/((p0 - pm1)**2 + 1/1000000)**2 + (1/3)/((-p0 + pp1)**2 + 1/1000000)**2))) + 0.5*va*((2/3)*((1/2)*p0 + (1/2)*pp1)*(4*p0 - 4*pp1)/(((-p0 + pp1)**2 + 1/1000000)**3*((1/3)/((-pp1 + pp2)**2 + 1/1000000)**2 + (2/3)/((-p0 + pp1)**2 + 1/1000000)**2)) + (2/3)*((1/2)*p0 + (1/2)*pp1)*(-2/3*(4*p0 - 4*pp1)/((-p0 + pp1)**2 + 1/1000000)**3 - 1/3*(-4*pp1 + 4*pp2)/((-pp1 + pp2)**2 + 1/1000000)**3)/(((-p0 + pp1)**2 + 1/1000000)**2*((1/3)/((-pp1 + pp2)**2 + 1/1000000)**2 + (2/3)/((-p0 + pp1)**2 + 1/1000000)**2)**2) + (1/3)*(-4*pp1 + 4*pp2)*((3/2)*pp1 - 1/2*pp2)/(((-pp1 + pp2)**2 + 1/1000000)**3*((1/3)/((-pp1 + pp2)**2 + 1/1000000)**2 + (2/3)/((-p0 + pp1)**2 + 1/1000000)**2)) + (1/3)*((3/2)*pp1 - 1/2*pp2)*(-2/3*(4*p0 - 4*pp1)/((-p0 + pp1)**2 + 1/1000000)**3 - 1/3*(-4*pp1 + 4*pp2)/((-pp1 + pp2)**2 + 1/1000000)**3)/(((-pp1 + pp2)**2 + 1/1000000)**2*((1/3)/((-pp1 + pp2)**2 + 1/1000000)**2 + (2/3)/((-p0 + pp1)**2 + 1/1000000)**2)**2) + (1/2)/(((-pp1 + pp2)**2 + 1/1000000)**2*((1/3)/((-pp1 + pp2)**2 + 1/1000000)**2 + (2/3)/((-p0 + pp1)**2 + 1/1000000)**2)) + (1/3)/(((-p0 + pp1)**2 + 1/1000000)**2*((1/3)/((-pp1 + pp2)**2 + 1/1000000)**2 + (2/3)/((-p0 + pp1)**2 + 1/1000000)**2))))/dx
91
+
File without changes
@@ -0,0 +1,24 @@
1
+ import numpy as np
2
+ from ..minmod_limiter import minmod, minmod_flag, switch_minmod
3
+
4
+
5
+ def test_minmod():
6
+ a = np.array([-1, 1, 2, 4.])
7
+ b = np.array([-3, 2, 0, 0])
8
+ c = np.array([-5, 3, -1, 1.])
9
+ np.testing.assert_allclose(minmod(a, b, c), np.array([-1, 1, 0, 0.]))
10
+
11
+
12
+ def test_minmod_flag():
13
+ a = np.array([-1, 3, 2, -4, 5, 10])
14
+ b = np.array([-3, 2, 1, -2, 0, -1])
15
+ c = np.array([-5, 1, 1, -5.4, 1, 2])
16
+ np.testing.assert_allclose(minmod_flag(a, b, c), np.array([1, 3, 2, 2, 0, 0]))
17
+
18
+
19
+ def test_switch_minmod():
20
+ a = np.array([-1, 3, 2, -4, 5, 10])
21
+ b = np.array([-3, 2, 1, -2, 0, -1])
22
+ c = np.array([-5, 1, 1, -5.4, 1, 2])
23
+ flag = minmod_flag(a, b, c)
24
+ np.testing.assert_allclose(switch_minmod(a, b, c, flag), np.array([-1, 1, 1, -2, 0, 0.0]))
File without changes
@@ -0,0 +1,3 @@
1
+ from .gas import *
2
+ from .heat import *
3
+
SolMuseum/pde/basic.py ADDED
@@ -0,0 +1,33 @@
1
+ from Solverz.sym_algebra.functions import MulVarFunc
2
+ from sympy import Integer
3
+
4
+
5
+ class SolPde(MulVarFunc):
6
+ def _numpycode(self, printer, **kwargs):
7
+ return (f'SolMF.pde.{self.__class__.__name__}' + r'(' +
8
+ ', '.join([printer._print(arg, **kwargs) for arg in self.args]) + r')')
9
+
10
+
11
+ class minmod(SolPde):
12
+ arglength = 3
13
+
14
+ def _eval_derivative(self, s):
15
+ return switch_minmod(*[arg.diff(s) for arg in self.args],
16
+ minmod_flag(*self.args))
17
+
18
+
19
+ class minmod_flag(SolPde):
20
+ """
21
+ Different from `minmod`, minmod function outputs the position of args instead of the values of args.
22
+ """
23
+ arglength = 3
24
+
25
+ def _eval_derivative(self, s):
26
+ return Integer(0)
27
+
28
+
29
+ class switch_minmod(SolPde):
30
+ arglength = 4
31
+
32
+ def _eval_derivative(self, s):
33
+ return switch_minmod(*[arg.diff(s) for arg in self.args[0:len(self.args) - 1]], self.args[-1])
@@ -0,0 +1,2 @@
1
+ from .ngs_pipe import ngs_pipe
2
+ from .broken_pipe import rupture_pipe, leakage_pipe
@@ -0,0 +1 @@
1
+ from .broken_ngs_pipe import rupture_pipe, leakage_pipe