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.
- SolMuseum/__init__.py +5 -0
- SolMuseum/_version.py +16 -0
- SolMuseum/ae/__init__.py +0 -0
- SolMuseum/module_generator.py +4 -0
- SolMuseum/num_api/__init__.py +2 -0
- SolMuseum/num_api/pde/__init__.py +2 -0
- SolMuseum/num_api/pde/minmod_limiter.py +107 -0
- SolMuseum/num_api/pde/num_api_kt1.py +39 -0
- SolMuseum/num_api/pde/num_api_weno3.py +91 -0
- SolMuseum/num_api/pde/test/__init__.py +0 -0
- SolMuseum/num_api/pde/test/test_minmod.py +24 -0
- SolMuseum/ode/__init__.py +0 -0
- SolMuseum/pde/__init__.py +3 -0
- SolMuseum/pde/basic.py +33 -0
- SolMuseum/pde/gas/__init__.py +2 -0
- SolMuseum/pde/gas/broken_pipe/__init__.py +1 -0
- SolMuseum/pde/gas/broken_pipe/broken_ngs_pipe.py +314 -0
- SolMuseum/pde/gas/broken_pipe/cdm_broken.py +287 -0
- SolMuseum/pde/gas/broken_pipe/cha_broken.py +325 -0
- SolMuseum/pde/gas/broken_pipe/euler_broken.py +321 -0
- SolMuseum/pde/gas/broken_pipe/firstorder_broken.py +293 -0
- SolMuseum/pde/gas/broken_pipe/kt1_broken.py +292 -0
- SolMuseum/pde/gas/broken_pipe/kt2_broken.py +464 -0
- SolMuseum/pde/gas/broken_pipe/test_leak/__init__.py +0 -0
- SolMuseum/pde/gas/broken_pipe/test_leak/data/res.xlsx +0 -0
- SolMuseum/pde/gas/broken_pipe/test_leak/data/sol0.pkl +0 -0
- SolMuseum/pde/gas/broken_pipe/test_leak/test_cdm.py +90 -0
- SolMuseum/pde/gas/broken_pipe/test_leak/test_cha.py +85 -0
- SolMuseum/pde/gas/broken_pipe/test_leak/test_euler.py +87 -0
- SolMuseum/pde/gas/broken_pipe/test_leak/test_kt1.py +88 -0
- SolMuseum/pde/gas/broken_pipe/test_leak/test_kt2.py +90 -0
- SolMuseum/pde/gas/broken_pipe/test_leak/test_weno3.py +87 -0
- SolMuseum/pde/gas/broken_pipe/test_rup/__init__.py +0 -0
- SolMuseum/pde/gas/broken_pipe/test_rup/data/res.xlsx +0 -0
- SolMuseum/pde/gas/broken_pipe/test_rup/test_cdm.py +92 -0
- SolMuseum/pde/gas/broken_pipe/test_rup/test_cha.py +88 -0
- SolMuseum/pde/gas/broken_pipe/test_rup/test_euler.py +94 -0
- SolMuseum/pde/gas/broken_pipe/test_rup/test_kt1.py +92 -0
- SolMuseum/pde/gas/broken_pipe/test_rup/test_kt2.py +92 -0
- SolMuseum/pde/gas/broken_pipe/test_rup/test_weno3.py +92 -0
- SolMuseum/pde/gas/broken_pipe/weno3_broken.py +484 -0
- SolMuseum/pde/gas/ngs_pipe.py +364 -0
- SolMuseum/pde/gas/test/__init__.py +0 -0
- SolMuseum/pde/gas/test/data/res0.xlsx +0 -0
- SolMuseum/pde/gas/test/test_cdm.py +80 -0
- SolMuseum/pde/gas/test/test_cha.py +80 -0
- SolMuseum/pde/gas/test/test_euler.py +80 -0
- SolMuseum/pde/gas/test/test_kt1.py +82 -0
- SolMuseum/pde/gas/test/test_kt2.py +82 -0
- SolMuseum/pde/gas/test/test_weno.py +82 -0
- SolMuseum/pde/gas/util.py +617 -0
- SolMuseum/pde/gas/weno3/__init__.py +1 -0
- SolMuseum/pde/gas/weno3/weno_pipe.py +38 -0
- SolMuseum/pde/heat/__init__.py +1 -0
- SolMuseum/pde/heat/heat_pipe.py +187 -0
- SolMuseum/pde/heat/test/__init__.py +0 -0
- SolMuseum/pde/heat/test/test_heat_pipe/param.xlsx +0 -0
- SolMuseum/pde/heat/test/test_heat_pipe/res.xlsx +0 -0
- SolMuseum/pde/heat/test/test_heat_pipe.py +219 -0
- SolMuseum/pde/heat/util.py +59 -0
- SolMuseum-0.1.0.dist-info/LICENSE +21 -0
- SolMuseum-0.1.0.dist-info/METADATA +19 -0
- SolMuseum-0.1.0.dist-info/RECORD +65 -0
- SolMuseum-0.1.0.dist-info/WHEEL +5 -0
- 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)
|
SolMuseum/ae/__init__.py
ADDED
|
File without changes
|
|
@@ -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
|
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 @@
|
|
|
1
|
+
from .broken_ngs_pipe import rupture_pipe, leakage_pipe
|