SolMuseum 0.1.0__tar.gz

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 (88) hide show
  1. solmuseum-0.1.0/.gitattributes +2 -0
  2. solmuseum-0.1.0/.github/workflows/publish-to-pypi.yml +94 -0
  3. solmuseum-0.1.0/.github/workflows/run-tests.yml +27 -0
  4. solmuseum-0.1.0/.gitignore +7 -0
  5. solmuseum-0.1.0/LICENSE +21 -0
  6. solmuseum-0.1.0/PKG-INFO +19 -0
  7. solmuseum-0.1.0/README.md +2 -0
  8. solmuseum-0.1.0/SolMuseum/__init__.py +5 -0
  9. solmuseum-0.1.0/SolMuseum/_version.py +16 -0
  10. solmuseum-0.1.0/SolMuseum/ae/__init__.py +0 -0
  11. solmuseum-0.1.0/SolMuseum/module_generator.py +4 -0
  12. solmuseum-0.1.0/SolMuseum/num_api/__init__.py +2 -0
  13. solmuseum-0.1.0/SolMuseum/num_api/pde/__init__.py +2 -0
  14. solmuseum-0.1.0/SolMuseum/num_api/pde/minmod_limiter.py +107 -0
  15. solmuseum-0.1.0/SolMuseum/num_api/pde/num_api_kt1.py +39 -0
  16. solmuseum-0.1.0/SolMuseum/num_api/pde/num_api_weno3.py +91 -0
  17. solmuseum-0.1.0/SolMuseum/num_api/pde/test/__init__.py +0 -0
  18. solmuseum-0.1.0/SolMuseum/num_api/pde/test/test_minmod.py +24 -0
  19. solmuseum-0.1.0/SolMuseum/ode/__init__.py +0 -0
  20. solmuseum-0.1.0/SolMuseum/pde/__init__.py +3 -0
  21. solmuseum-0.1.0/SolMuseum/pde/basic.py +33 -0
  22. solmuseum-0.1.0/SolMuseum/pde/gas/__init__.py +2 -0
  23. solmuseum-0.1.0/SolMuseum/pde/gas/broken_pipe/__init__.py +1 -0
  24. solmuseum-0.1.0/SolMuseum/pde/gas/broken_pipe/broken_ngs_pipe.py +314 -0
  25. solmuseum-0.1.0/SolMuseum/pde/gas/broken_pipe/cdm_broken.py +287 -0
  26. solmuseum-0.1.0/SolMuseum/pde/gas/broken_pipe/cha_broken.py +325 -0
  27. solmuseum-0.1.0/SolMuseum/pde/gas/broken_pipe/euler_broken.py +321 -0
  28. solmuseum-0.1.0/SolMuseum/pde/gas/broken_pipe/firstorder_broken.py +293 -0
  29. solmuseum-0.1.0/SolMuseum/pde/gas/broken_pipe/kt1_broken.py +292 -0
  30. solmuseum-0.1.0/SolMuseum/pde/gas/broken_pipe/kt2_broken.py +464 -0
  31. solmuseum-0.1.0/SolMuseum/pde/gas/broken_pipe/test_leak/__init__.py +0 -0
  32. solmuseum-0.1.0/SolMuseum/pde/gas/broken_pipe/test_leak/data/res.xlsx +0 -0
  33. solmuseum-0.1.0/SolMuseum/pde/gas/broken_pipe/test_leak/data/sol0.pkl +0 -0
  34. solmuseum-0.1.0/SolMuseum/pde/gas/broken_pipe/test_leak/test_cdm.py +90 -0
  35. solmuseum-0.1.0/SolMuseum/pde/gas/broken_pipe/test_leak/test_cha.py +85 -0
  36. solmuseum-0.1.0/SolMuseum/pde/gas/broken_pipe/test_leak/test_euler.py +87 -0
  37. solmuseum-0.1.0/SolMuseum/pde/gas/broken_pipe/test_leak/test_kt1.py +88 -0
  38. solmuseum-0.1.0/SolMuseum/pde/gas/broken_pipe/test_leak/test_kt2.py +90 -0
  39. solmuseum-0.1.0/SolMuseum/pde/gas/broken_pipe/test_leak/test_weno3.py +87 -0
  40. solmuseum-0.1.0/SolMuseum/pde/gas/broken_pipe/test_rup/__init__.py +0 -0
  41. solmuseum-0.1.0/SolMuseum/pde/gas/broken_pipe/test_rup/data/res.xlsx +0 -0
  42. solmuseum-0.1.0/SolMuseum/pde/gas/broken_pipe/test_rup/test_cdm.py +92 -0
  43. solmuseum-0.1.0/SolMuseum/pde/gas/broken_pipe/test_rup/test_cha.py +88 -0
  44. solmuseum-0.1.0/SolMuseum/pde/gas/broken_pipe/test_rup/test_euler.py +94 -0
  45. solmuseum-0.1.0/SolMuseum/pde/gas/broken_pipe/test_rup/test_kt1.py +92 -0
  46. solmuseum-0.1.0/SolMuseum/pde/gas/broken_pipe/test_rup/test_kt2.py +92 -0
  47. solmuseum-0.1.0/SolMuseum/pde/gas/broken_pipe/test_rup/test_weno3.py +92 -0
  48. solmuseum-0.1.0/SolMuseum/pde/gas/broken_pipe/weno3_broken.py +484 -0
  49. solmuseum-0.1.0/SolMuseum/pde/gas/ngs_pipe.py +364 -0
  50. solmuseum-0.1.0/SolMuseum/pde/gas/test/__init__.py +0 -0
  51. solmuseum-0.1.0/SolMuseum/pde/gas/test/data/res0.xlsx +0 -0
  52. solmuseum-0.1.0/SolMuseum/pde/gas/test/test_cdm.py +80 -0
  53. solmuseum-0.1.0/SolMuseum/pde/gas/test/test_cha.py +80 -0
  54. solmuseum-0.1.0/SolMuseum/pde/gas/test/test_euler.py +80 -0
  55. solmuseum-0.1.0/SolMuseum/pde/gas/test/test_kt1.py +82 -0
  56. solmuseum-0.1.0/SolMuseum/pde/gas/test/test_kt2.py +82 -0
  57. solmuseum-0.1.0/SolMuseum/pde/gas/test/test_weno.py +82 -0
  58. solmuseum-0.1.0/SolMuseum/pde/gas/util.py +617 -0
  59. solmuseum-0.1.0/SolMuseum/pde/gas/weno3/__init__.py +1 -0
  60. solmuseum-0.1.0/SolMuseum/pde/gas/weno3/weno_pipe.py +38 -0
  61. solmuseum-0.1.0/SolMuseum/pde/heat/__init__.py +1 -0
  62. solmuseum-0.1.0/SolMuseum/pde/heat/heat_pipe.py +187 -0
  63. solmuseum-0.1.0/SolMuseum/pde/heat/test/__init__.py +0 -0
  64. solmuseum-0.1.0/SolMuseum/pde/heat/test/test_heat_pipe/param.xlsx +0 -0
  65. solmuseum-0.1.0/SolMuseum/pde/heat/test/test_heat_pipe/res.xlsx +0 -0
  66. solmuseum-0.1.0/SolMuseum/pde/heat/test/test_heat_pipe.py +219 -0
  67. solmuseum-0.1.0/SolMuseum/pde/heat/util.py +59 -0
  68. solmuseum-0.1.0/SolMuseum.egg-info/PKG-INFO +19 -0
  69. solmuseum-0.1.0/SolMuseum.egg-info/SOURCES.txt +86 -0
  70. solmuseum-0.1.0/SolMuseum.egg-info/dependency_links.txt +1 -0
  71. solmuseum-0.1.0/SolMuseum.egg-info/requires.txt +1 -0
  72. solmuseum-0.1.0/SolMuseum.egg-info/top_level.txt +1 -0
  73. solmuseum-0.1.0/docs/Makefile +20 -0
  74. solmuseum-0.1.0/docs/__init__.py +0 -0
  75. solmuseum-0.1.0/docs/make.bat +35 -0
  76. solmuseum-0.1.0/docs/requirements.txt +23 -0
  77. solmuseum-0.1.0/docs/source/__init__.py +0 -0
  78. solmuseum-0.1.0/docs/source/ae/__init__.py +0 -0
  79. solmuseum-0.1.0/docs/source/ae/index.rst +11 -0
  80. solmuseum-0.1.0/docs/source/conf.py +76 -0
  81. solmuseum-0.1.0/docs/source/dae/__init__.py +0 -0
  82. solmuseum-0.1.0/docs/source/dae/index.rst +13 -0
  83. solmuseum-0.1.0/docs/source/index.rst +13 -0
  84. solmuseum-0.1.0/docs/source/pde/__init__.py +0 -0
  85. solmuseum-0.1.0/docs/source/pde/index.rst +16 -0
  86. solmuseum-0.1.0/pyproject.toml +33 -0
  87. solmuseum-0.1.0/requirements.txt +2 -0
  88. solmuseum-0.1.0/setup.cfg +4 -0
@@ -0,0 +1,2 @@
1
+ # Auto detect text files and perform LF normalization
2
+ * text=auto
@@ -0,0 +1,94 @@
1
+ name: Publish to Pypi
2
+
3
+ on: push
4
+
5
+ jobs:
6
+ build:
7
+ name: Build distribution
8
+ runs-on: ubuntu-latest
9
+
10
+ steps:
11
+ - uses: actions/checkout@v4
12
+ - name: Set up Python
13
+ uses: actions/setup-python@v5
14
+ with:
15
+ python-version: "3.x"
16
+ - name: Install pypa/build
17
+ run: >-
18
+ python3 -m
19
+ pip install
20
+ build
21
+ --user
22
+ - name: Build a binary wheel and a source tarball
23
+ run: python3 -m build
24
+ - name: Store the distribution packages
25
+ uses: actions/upload-artifact@v4
26
+ with:
27
+ name: python-package-distributions
28
+ path: dist/
29
+
30
+ publish-to-pypi:
31
+ name: >-
32
+ Publish Python distribution to PyPI
33
+ if: startsWith(github.ref, 'refs/tags/') # only publish to PyPI on tag pushes
34
+ needs:
35
+ - build
36
+ runs-on: ubuntu-latest
37
+ environment:
38
+ name: pypi
39
+ url: https://pypi.org/project/SolMuseum/
40
+ permissions:
41
+ id-token: write # IMPORTANT: mandatory for trusted publishing
42
+
43
+ steps:
44
+ - name: Download all the dists
45
+ uses: actions/download-artifact@v4
46
+ with:
47
+ name: python-package-distributions
48
+ path: dist/
49
+ - name: Publish distribution to PyPI
50
+ uses: pypa/gh-action-pypi-publish@release/v1
51
+
52
+ github-release:
53
+ name: >-
54
+ Sign the Python distribution with Sigstore
55
+ and upload them to GitHub Release
56
+ needs:
57
+ - publish-to-pypi
58
+ runs-on: ubuntu-latest
59
+
60
+ permissions:
61
+ contents: write # IMPORTANT: mandatory for making GitHub Releases
62
+ id-token: write # IMPORTANT: mandatory for sigstore
63
+
64
+ steps:
65
+ - name: Download all the dists
66
+ uses: actions/download-artifact@v4
67
+ with:
68
+ name: python-package-distributions
69
+ path: dist/
70
+ - name: Sign the dists with Sigstore
71
+ uses: sigstore/gh-action-sigstore-python@v2.1.1
72
+ with:
73
+ inputs: >-
74
+ ./dist/*.tar.gz
75
+ ./dist/*.whl
76
+ - name: Create GitHub Release
77
+ env:
78
+ GITHUB_TOKEN: ${{ github.token }}
79
+ run: >-
80
+ gh release create
81
+ '${{ github.ref_name }}'
82
+ --repo '${{ github.repository }}'
83
+ --notes ""
84
+ - name: Upload artifact signatures to GitHub Release
85
+ env:
86
+ GITHUB_TOKEN: ${{ github.token }}
87
+ # Upload to GitHub Release using the `gh` CLI.
88
+ # `dist/` contains the built packages, and the
89
+ # sigstore-produced signatures and certificates.
90
+ run: >-
91
+ gh release upload
92
+ '${{ github.ref_name }}' dist/**
93
+ --repo '${{ github.repository }}'
94
+
@@ -0,0 +1,27 @@
1
+ name: Run tests
2
+
3
+ on:
4
+ push:
5
+ pull_request:
6
+ types: [opened, synchronize, reopened, closed]
7
+ branches:
8
+ - '*'
9
+
10
+ jobs:
11
+ built_in_tests:
12
+
13
+ runs-on: windows-latest
14
+
15
+ steps:
16
+ - uses: actions/checkout@v3
17
+ - uses: actions/setup-python@v4
18
+ with:
19
+ python-version: '3.11'
20
+ cache: 'pip' # caching pip dependencies
21
+ - run: |
22
+ pip install -r requirements.txt
23
+ # cd docs/
24
+ # pip install -r requirements.txt
25
+ # cd ..
26
+ - run: | # run both independent pytest and doctest
27
+ pytest
@@ -0,0 +1,7 @@
1
+
2
+ /.idea
3
+ /SolMuseum.egg-info
4
+ *.pyc
5
+ SolMuseum/_version.py
6
+ /docs/build
7
+ /SolMuseum/num_api/pde/__pycache__
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2024 Ruizhi Yu
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,19 @@
1
+ Metadata-Version: 2.1
2
+ Name: SolMuseum
3
+ Version: 0.1.0
4
+ Summary: The modelling library for the simulation modelling language Solverz
5
+ Author-email: Ruizhi Yu <rz.yu@foxmail.com>
6
+ Project-URL: Homepage, https://github.com/smallbunnies/SolMuseum
7
+ Project-URL: Issues, https://github.com/smallbunnies/SolMuseum/issues
8
+ Classifier: Programming Language :: Python :: 3.10
9
+ Classifier: Programming Language :: Python :: 3.11
10
+ Classifier: Programming Language :: Python :: 3.12
11
+ Classifier: License :: OSI Approved :: MIT License
12
+ Classifier: Operating System :: OS Independent
13
+ Requires-Python: >=3.10
14
+ Description-Content-Type: text/markdown
15
+ License-File: LICENSE
16
+ Requires-Dist: Solverz
17
+
18
+ # SolMuseum
19
+ The Solverz model library
@@ -0,0 +1,2 @@
1
+ # SolMuseum
2
+ The Solverz model library
@@ -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.
@@ -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
+
@@ -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