ngstrefftz 0.3.2607.dev11__tar.gz → 0.3.2607.dev15__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 (158) hide show
  1. ngstrefftz-0.3.2607.dev15/.github/workflows/build.yml +261 -0
  2. {ngstrefftz-0.3.2607.dev11 → ngstrefftz-0.3.2607.dev15}/CMakeLists.txt +30 -15
  3. {ngstrefftz-0.3.2607.dev11 → ngstrefftz-0.3.2607.dev15}/PKG-INFO +2 -1
  4. {ngstrefftz-0.3.2607.dev11 → ngstrefftz-0.3.2607.dev15}/_version.py +3 -3
  5. {ngstrefftz-0.3.2607.dev11 → ngstrefftz-0.3.2607.dev15}/pyproject.toml +3 -1
  6. {ngstrefftz-0.3.2607.dev11 → ngstrefftz-0.3.2607.dev15}/src/__init__.py +13 -6
  7. {ngstrefftz-0.3.2607.dev11 → ngstrefftz-0.3.2607.dev15}/src/mesh1dtents.cpp +1 -1
  8. {ngstrefftz-0.3.2607.dev11 → ngstrefftz-0.3.2607.dev15}/src/python_trefftz.cpp +6 -3
  9. {ngstrefftz-0.3.2607.dev11 → ngstrefftz-0.3.2607.dev15}/src/twavetents.cpp +1 -1
  10. {ngstrefftz-0.3.2607.dev11 → ngstrefftz-0.3.2607.dev15}/src/twavetents.hpp +1 -1
  11. ngstrefftz-0.3.2607.dev11/.github/workflows/build.yml +0 -393
  12. ngstrefftz-0.3.2607.dev11/.gitmodules +0 -3
  13. ngstrefftz-0.3.2607.dev11/external_dependencies/ngstents/.github/workflows/build.yml +0 -76
  14. ngstrefftz-0.3.2607.dev11/external_dependencies/ngstents/.gitignore +0 -1
  15. ngstrefftz-0.3.2607.dev11/external_dependencies/ngstents/README.md +0 -129
  16. ngstrefftz-0.3.2607.dev11/external_dependencies/ngstents/demo/advection/Advection_Periodic_Clipping.ipynb +0 -393
  17. ngstrefftz-0.3.2607.dev11/external_dependencies/ngstents/demo/advection/advection2d.py +0 -75
  18. ngstrefftz-0.3.2607.dev11/external_dependencies/ngstents/demo/advection/advection2d_periodic.py +0 -69
  19. ngstrefftz-0.3.2607.dev11/external_dependencies/ngstents/demo/burgers/Burgers_Clipping.ipynb +0 -262
  20. ngstrefftz-0.3.2607.dev11/external_dependencies/ngstents/demo/burgers/burgers1d.py +0 -54
  21. ngstrefftz-0.3.2607.dev11/external_dependencies/ngstents/demo/burgers/burgers2d.py +0 -61
  22. ngstrefftz-0.3.2607.dev11/external_dependencies/ngstents/demo/euler/Euler_Clipping.ipynb +0 -279
  23. ngstrefftz-0.3.2607.dev11/external_dependencies/ngstents/demo/euler/euler2d.py +0 -53
  24. ngstrefftz-0.3.2607.dev11/external_dependencies/ngstents/demo/euler/mach3_windtunnel.py +0 -76
  25. ngstrefftz-0.3.2607.dev11/external_dependencies/ngstents/demo/maxwell/maxwell3d.py +0 -68
  26. ngstrefftz-0.3.2607.dev11/external_dependencies/ngstents/demo/symbolic/symbolic_advection2d.py +0 -108
  27. ngstrefftz-0.3.2607.dev11/external_dependencies/ngstents/demo/symbolic/symbolic_burgers.py +0 -141
  28. ngstrefftz-0.3.2607.dev11/external_dependencies/ngstents/demo/symbolic/symbolic_euler.py +0 -183
  29. ngstrefftz-0.3.2607.dev11/external_dependencies/ngstents/demo/symbolic/symbolic_wave.py +0 -126
  30. ngstrefftz-0.3.2607.dev11/external_dependencies/ngstents/demo/symbolic/symbolic_wave1d_interface.py +0 -143
  31. ngstrefftz-0.3.2607.dev11/external_dependencies/ngstents/demo/symbolic/wave_penetrable_cylinder.py +0 -186
  32. ngstrefftz-0.3.2607.dev11/external_dependencies/ngstents/demo/tents/draw3dtent.py +0 -32
  33. ngstrefftz-0.3.2607.dev11/external_dependencies/ngstents/demo/tents/draw3dvertex.py +0 -32
  34. ngstrefftz-0.3.2607.dev11/external_dependencies/ngstents/demo/wave/horn.py +0 -88
  35. ngstrefftz-0.3.2607.dev11/external_dependencies/ngstents/demo/wave/wave2d.py +0 -68
  36. ngstrefftz-0.3.2607.dev11/external_dependencies/ngstents/demo/wave/wave2d_timedepbc.py +0 -83
  37. ngstrefftz-0.3.2607.dev11/external_dependencies/ngstents/demo/wave/wave3d.py +0 -75
  38. ngstrefftz-0.3.2607.dev11/external_dependencies/ngstents/docs/BurgersMTP.ipynb +0 -785
  39. ngstrefftz-0.3.2607.dev11/external_dependencies/ngstents/docs/StartPitching.ipynb +0 -690
  40. ngstrefftz-0.3.2607.dev11/external_dependencies/ngstents/docs/_config.yml +0 -37
  41. ngstrefftz-0.3.2607.dev11/external_dependencies/ngstents/docs/_toc.yml +0 -12
  42. ngstrefftz-0.3.2607.dev11/external_dependencies/ngstents/docs/assets/css/style.scss +0 -2
  43. ngstrefftz-0.3.2607.dev11/external_dependencies/ngstents/docs/do +0 -2
  44. ngstrefftz-0.3.2607.dev11/external_dependencies/ngstents/docs/figs/CausalityCond.png +0 -0
  45. ngstrefftz-0.3.2607.dev11/external_dependencies/ngstents/docs/figs/dag.png +0 -0
  46. ngstrefftz-0.3.2607.dev11/external_dependencies/ngstents/docs/figs/map.png +0 -0
  47. ngstrefftz-0.3.2607.dev11/external_dependencies/ngstents/docs/figs/ngsTentsLogo.png +0 -0
  48. ngstrefftz-0.3.2607.dev11/external_dependencies/ngstents/docs/figs/subtents.png +0 -0
  49. ngstrefftz-0.3.2607.dev11/external_dependencies/ngstents/docs/index.ipynb +0 -49
  50. ngstrefftz-0.3.2607.dev11/external_dependencies/ngstents/docs/requirements.txt +0 -107
  51. ngstrefftz-0.3.2607.dev11/external_dependencies/ngstents/py/__init__.py +0 -13
  52. ngstrefftz-0.3.2607.dev11/external_dependencies/ngstents/py/conslaw/__init__.py +0 -73
  53. ngstrefftz-0.3.2607.dev11/external_dependencies/ngstents/py/utils/__init__.py +0 -4
  54. ngstrefftz-0.3.2607.dev11/external_dependencies/ngstents/py/utils/_drawtents.py +0 -44
  55. ngstrefftz-0.3.2607.dev11/external_dependencies/ngstents/py/utils/_drawtents2d.py +0 -98
  56. ngstrefftz-0.3.2607.dev11/external_dependencies/ngstents/pyproject.toml +0 -55
  57. ngstrefftz-0.3.2607.dev11/external_dependencies/ngstents/src/CMakeLists.txt +0 -45
  58. ngstrefftz-0.3.2607.dev11/external_dependencies/ngstents/src/advection.cpp +0 -89
  59. ngstrefftz-0.3.2607.dev11/external_dependencies/ngstents/src/burgers.cpp +0 -168
  60. ngstrefftz-0.3.2607.dev11/external_dependencies/ngstents/src/concurrentqueue.h +0 -3398
  61. ngstrefftz-0.3.2607.dev11/external_dependencies/ngstents/src/conservationlaw.hpp +0 -501
  62. ngstrefftz-0.3.2607.dev11/external_dependencies/ngstents/src/euler.cpp +0 -492
  63. ngstrefftz-0.3.2607.dev11/external_dependencies/ngstents/src/maxwell.cpp +0 -145
  64. ngstrefftz-0.3.2607.dev11/external_dependencies/ngstents/src/ngsolve_addon.cmake +0 -97
  65. ngstrefftz-0.3.2607.dev11/external_dependencies/ngstents/src/paralleldepend.hpp +0 -134
  66. ngstrefftz-0.3.2607.dev11/external_dependencies/ngstents/src/python_conslaw.cpp +0 -299
  67. ngstrefftz-0.3.2607.dev11/external_dependencies/ngstents/src/python_tents.cpp +0 -139
  68. ngstrefftz-0.3.2607.dev11/external_dependencies/ngstents/src/symbolic.cpp +0 -231
  69. ngstrefftz-0.3.2607.dev11/external_dependencies/ngstents/src/tconservationlaw_tp_impl.hpp +0 -877
  70. ngstrefftz-0.3.2607.dev11/external_dependencies/ngstents/src/tents.cpp +0 -1295
  71. ngstrefftz-0.3.2607.dev11/external_dependencies/ngstents/src/tents.hpp +0 -369
  72. ngstrefftz-0.3.2607.dev11/external_dependencies/ngstents/src/tentsolver.hpp +0 -140
  73. ngstrefftz-0.3.2607.dev11/external_dependencies/ngstents/src/tentsolver_impl.hpp +0 -194
  74. ngstrefftz-0.3.2607.dev11/external_dependencies/ngstents/src/vis3d.cpp +0 -223
  75. ngstrefftz-0.3.2607.dev11/external_dependencies/ngstents/src/vis3d.hpp +0 -35
  76. ngstrefftz-0.3.2607.dev11/external_dependencies/ngstents/src/wave.cpp +0 -178
  77. ngstrefftz-0.3.2607.dev11/external_dependencies/ngstents/tests/test_burgers_2D.py +0 -39
  78. ngstrefftz-0.3.2607.dev11/external_dependencies/ngstents/tests/test_causal_tents.py +0 -132
  79. ngstrefftz-0.3.2607.dev11/external_dependencies/ngstents/tests/test_conslaw.py +0 -73
  80. ngstrefftz-0.3.2607.dev11/external_dependencies/ngstents/tests/test_tent_height_2D.py +0 -44
  81. ngstrefftz-0.3.2607.dev11/external_dependencies/ngstents/tests/test_tentlayers.py +0 -18
  82. {ngstrefftz-0.3.2607.dev11 → ngstrefftz-0.3.2607.dev15}/.clang-format +0 -0
  83. {ngstrefftz-0.3.2607.dev11 → ngstrefftz-0.3.2607.dev15}/.git-blame-ignore-revs +0 -0
  84. {ngstrefftz-0.3.2607.dev11 → ngstrefftz-0.3.2607.dev15}/.github/workflows/fix_auditwheel_policy.py +0 -0
  85. {ngstrefftz-0.3.2607.dev11 → ngstrefftz-0.3.2607.dev15}/.github/workflows/pyodide/Dockerfile +0 -0
  86. {ngstrefftz-0.3.2607.dev11 → ngstrefftz-0.3.2607.dev15}/.github/workflows/pyodide/build_in_docker.sh +0 -0
  87. {ngstrefftz-0.3.2607.dev11 → ngstrefftz-0.3.2607.dev15}/.github/workflows/pyodide/merge.py +0 -0
  88. {ngstrefftz-0.3.2607.dev11 → ngstrefftz-0.3.2607.dev15}/.github/workflows/pyodide/requirements.txt +0 -0
  89. {ngstrefftz-0.3.2607.dev11 → ngstrefftz-0.3.2607.dev15}/.gitignore +0 -0
  90. {ngstrefftz-0.3.2607.dev11 → ngstrefftz-0.3.2607.dev15}/CONTRIBUTING.md +0 -0
  91. {ngstrefftz-0.3.2607.dev11 → ngstrefftz-0.3.2607.dev15}/Dockerfile +0 -0
  92. {ngstrefftz-0.3.2607.dev11 → ngstrefftz-0.3.2607.dev15}/LICENSE +0 -0
  93. {ngstrefftz-0.3.2607.dev11 → ngstrefftz-0.3.2607.dev15}/README.md +0 -0
  94. {ngstrefftz-0.3.2607.dev11 → ngstrefftz-0.3.2607.dev15}/docs/Doxyfile.in +0 -0
  95. {ngstrefftz-0.3.2607.dev11 → ngstrefftz-0.3.2607.dev15}/docs/_static/breadcrumbs.html +0 -0
  96. {ngstrefftz-0.3.2607.dev11 → ngstrefftz-0.3.2607.dev15}/docs/_static/css/mytheme.css +0 -0
  97. {ngstrefftz-0.3.2607.dev11 → ngstrefftz-0.3.2607.dev15}/docs/conf.py +0 -0
  98. {ngstrefftz-0.3.2607.dev11 → ngstrefftz-0.3.2607.dev15}/docs/contrib.rst +0 -0
  99. {ngstrefftz-0.3.2607.dev11 → ngstrefftz-0.3.2607.dev15}/docs/docu.rst +0 -0
  100. {ngstrefftz-0.3.2607.dev11 → ngstrefftz-0.3.2607.dev15}/docs/index.rst +0 -0
  101. {ngstrefftz-0.3.2607.dev11 → ngstrefftz-0.3.2607.dev15}/docs/intro.rst +0 -0
  102. {ngstrefftz-0.3.2607.dev11 → ngstrefftz-0.3.2607.dev15}/docs/notebooks/embTrefftz-adv.ipynb +0 -0
  103. {ngstrefftz-0.3.2607.dev11 → ngstrefftz-0.3.2607.dev15}/docs/notebooks/embTrefftz-helm.ipynb +0 -0
  104. {ngstrefftz-0.3.2607.dev11 → ngstrefftz-0.3.2607.dev15}/docs/notebooks/embTrefftz-ns.ipynb +0 -0
  105. {ngstrefftz-0.3.2607.dev11 → ngstrefftz-0.3.2607.dev15}/docs/notebooks/embTrefftz-poi.ipynb +0 -0
  106. {ngstrefftz-0.3.2607.dev11 → ngstrefftz-0.3.2607.dev15}/docs/notebooks/embTrefftz-stokes.ipynb +0 -0
  107. {ngstrefftz-0.3.2607.dev11 → ngstrefftz-0.3.2607.dev15}/docs/notebooks/embTrefftz-wave.ipynb +0 -0
  108. {ngstrefftz-0.3.2607.dev11 → ngstrefftz-0.3.2607.dev15}/docs/notebooks/embTrefftz.ipynb +0 -0
  109. {ngstrefftz-0.3.2607.dev11 → ngstrefftz-0.3.2607.dev15}/docs/notebooks/helmholtz.ipynb +0 -0
  110. {ngstrefftz-0.3.2607.dev11 → ngstrefftz-0.3.2607.dev15}/docs/notebooks/index.ipynb +0 -0
  111. {ngstrefftz-0.3.2607.dev11 → ngstrefftz-0.3.2607.dev15}/docs/notebooks/laplace.ipynb +0 -0
  112. {ngstrefftz-0.3.2607.dev11 → ngstrefftz-0.3.2607.dev15}/docs/notebooks/qtelliptic.ipynb +0 -0
  113. {ngstrefftz-0.3.2607.dev11 → ngstrefftz-0.3.2607.dev15}/docs/notebooks/qtwave.ipynb +0 -0
  114. {ngstrefftz-0.3.2607.dev11 → ngstrefftz-0.3.2607.dev15}/docs/notebooks/tunfitted.ipynb +0 -0
  115. {ngstrefftz-0.3.2607.dev11 → ngstrefftz-0.3.2607.dev15}/docs/notebooks/twave.ipynb +0 -0
  116. {ngstrefftz-0.3.2607.dev11 → ngstrefftz-0.3.2607.dev15}/docs/notebooks/twavetents.ipynb +0 -0
  117. {ngstrefftz-0.3.2607.dev11 → ngstrefftz-0.3.2607.dev15}/docs/paper/codemeta.json +0 -0
  118. {ngstrefftz-0.3.2607.dev11 → ngstrefftz-0.3.2607.dev15}/docs/paper/paper.bib +0 -0
  119. {ngstrefftz-0.3.2607.dev11 → ngstrefftz-0.3.2607.dev15}/docs/paper/paper.md +0 -0
  120. {ngstrefftz-0.3.2607.dev11 → ngstrefftz-0.3.2607.dev15}/docs/readme.rst +0 -0
  121. {ngstrefftz-0.3.2607.dev11 → ngstrefftz-0.3.2607.dev15}/docs/requirements.txt +0 -0
  122. {ngstrefftz-0.3.2607.dev11 → ngstrefftz-0.3.2607.dev15}/src/airy.cpp +0 -0
  123. {ngstrefftz-0.3.2607.dev11 → ngstrefftz-0.3.2607.dev15}/src/boxintegral.cpp +0 -0
  124. {ngstrefftz-0.3.2607.dev11 → ngstrefftz-0.3.2607.dev15}/src/boxintegral.hpp +0 -0
  125. {ngstrefftz-0.3.2607.dev11 → ngstrefftz-0.3.2607.dev15}/src/condensedg.cpp +0 -0
  126. {ngstrefftz-0.3.2607.dev11 → ngstrefftz-0.3.2607.dev15}/src/condensedg.hpp +0 -0
  127. {ngstrefftz-0.3.2607.dev11 → ngstrefftz-0.3.2607.dev15}/src/diffopmapped.hpp +0 -0
  128. {ngstrefftz-0.3.2607.dev11 → ngstrefftz-0.3.2607.dev15}/src/embtrefftz.cpp +0 -0
  129. {ngstrefftz-0.3.2607.dev11 → ngstrefftz-0.3.2607.dev15}/src/embtrefftz.hpp +0 -0
  130. {ngstrefftz-0.3.2607.dev11 → ngstrefftz-0.3.2607.dev15}/src/lapack_loader.cpp +0 -0
  131. {ngstrefftz-0.3.2607.dev11 → ngstrefftz-0.3.2607.dev15}/src/lapack_loader.hpp +0 -0
  132. {ngstrefftz-0.3.2607.dev11 → ngstrefftz-0.3.2607.dev15}/src/mesh1dtents.hpp +0 -0
  133. {ngstrefftz-0.3.2607.dev11 → ngstrefftz-0.3.2607.dev15}/src/monomialfespace.cpp +0 -0
  134. {ngstrefftz-0.3.2607.dev11 → ngstrefftz-0.3.2607.dev15}/src/monomialfespace.hpp +0 -0
  135. {ngstrefftz-0.3.2607.dev11 → ngstrefftz-0.3.2607.dev15}/src/ngsttd.hpp +0 -0
  136. {ngstrefftz-0.3.2607.dev11 → ngstrefftz-0.3.2607.dev15}/src/planewavefe.cpp +0 -0
  137. {ngstrefftz-0.3.2607.dev11 → ngstrefftz-0.3.2607.dev15}/src/planewavefe.hpp +0 -0
  138. {ngstrefftz-0.3.2607.dev11 → ngstrefftz-0.3.2607.dev15}/src/pufe.cpp +0 -0
  139. {ngstrefftz-0.3.2607.dev11 → ngstrefftz-0.3.2607.dev15}/src/pufe.hpp +0 -0
  140. {ngstrefftz-0.3.2607.dev11 → ngstrefftz-0.3.2607.dev15}/src/pufespace.cpp +0 -0
  141. {ngstrefftz-0.3.2607.dev11 → ngstrefftz-0.3.2607.dev15}/src/pufespace.hpp +0 -0
  142. {ngstrefftz-0.3.2607.dev11 → ngstrefftz-0.3.2607.dev15}/src/scalarmappedfe.cpp +0 -0
  143. {ngstrefftz-0.3.2607.dev11 → ngstrefftz-0.3.2607.dev15}/src/scalarmappedfe.hpp +0 -0
  144. {ngstrefftz-0.3.2607.dev11 → ngstrefftz-0.3.2607.dev15}/src/specialcoefficientfunction.cpp +0 -0
  145. {ngstrefftz-0.3.2607.dev11 → ngstrefftz-0.3.2607.dev15}/src/specialcoefficientfunction.hpp +0 -0
  146. {ngstrefftz-0.3.2607.dev11 → ngstrefftz-0.3.2607.dev15}/src/specialintegrator.cpp +0 -0
  147. {ngstrefftz-0.3.2607.dev11 → ngstrefftz-0.3.2607.dev15}/src/specialintegrator.hpp +0 -0
  148. {ngstrefftz-0.3.2607.dev11 → ngstrefftz-0.3.2607.dev15}/src/tp0fespace.cpp +0 -0
  149. {ngstrefftz-0.3.2607.dev11 → ngstrefftz-0.3.2607.dev15}/src/tp0fespace.hpp +0 -0
  150. {ngstrefftz-0.3.2607.dev11 → ngstrefftz-0.3.2607.dev15}/src/trefftzfespace.cpp +0 -0
  151. {ngstrefftz-0.3.2607.dev11 → ngstrefftz-0.3.2607.dev15}/src/trefftzfespace.hpp +0 -0
  152. {ngstrefftz-0.3.2607.dev11 → ngstrefftz-0.3.2607.dev15}/test/boxint.py +0 -0
  153. {ngstrefftz-0.3.2607.dev11 → ngstrefftz-0.3.2607.dev15}/test/conforming_trefftz.py +0 -0
  154. {ngstrefftz-0.3.2607.dev11 → ngstrefftz-0.3.2607.dev15}/test/dg.py +0 -0
  155. {ngstrefftz-0.3.2607.dev11 → ngstrefftz-0.3.2607.dev15}/test/embt.py +0 -0
  156. {ngstrefftz-0.3.2607.dev11 → ngstrefftz-0.3.2607.dev15}/test/embtrefftz_gtest.cpp +0 -0
  157. {ngstrefftz-0.3.2607.dev11 → ngstrefftz-0.3.2607.dev15}/test/tents.py +0 -0
  158. {ngstrefftz-0.3.2607.dev11 → ngstrefftz-0.3.2607.dev15}/test/trefftz.py +0 -0
@@ -0,0 +1,261 @@
1
+ name: build
2
+
3
+ on:
4
+ workflow_dispatch:
5
+ inputs:
6
+ ngsolve_version:
7
+ description: NGSolve version (empty builds the current checkout)
8
+ type: string
9
+ dry_run:
10
+ description: Build and test without uploading to PyPI
11
+ type: boolean
12
+ default: true
13
+ level:
14
+ description: 'build level'
15
+ required: true
16
+ default: 'full'
17
+ type: choice
18
+ options:
19
+ - quick
20
+ - full
21
+ push:
22
+ branches: [main, main-dev]
23
+ release:
24
+ types: [published]
25
+
26
+ permissions:
27
+ contents: read
28
+
29
+ concurrency:
30
+ group: ${{ github.workflow }}
31
+ cancel-in-progress: false
32
+
33
+ jobs:
34
+ prepare:
35
+ name: Prepare release
36
+ runs-on: ubuntu-latest
37
+ outputs:
38
+ version: ${{ steps.release.outputs.version }}
39
+ published: ${{ steps.release.outputs.published }}
40
+ steps:
41
+ - uses: actions/checkout@v6
42
+ if: inputs.ngsolve_version != ''
43
+ with:
44
+ fetch-depth: 0
45
+ - uses: PaulSt/ngsolve-release-watcher@main
46
+ id: release
47
+ with:
48
+ ngsolve_version: ${{ inputs.ngsolve_version }}
49
+ dry_run: ${{ inputs.dry_run }}
50
+ - uses: actions/upload-artifact@v7
51
+ if: inputs.ngsolve_version != ''
52
+ with:
53
+ name: release-pyproject
54
+ path: pyproject.toml
55
+
56
+ check_formatting:
57
+ name: Check Formatting with Clang Format
58
+ runs-on: ubuntu-24.04
59
+ steps:
60
+ - uses: actions/checkout@v6
61
+ with:
62
+ path: "NGSTrefftz"
63
+ fetch-depth: 0
64
+ - uses: RafikFarhad/clang-format-github-action@v4
65
+ with:
66
+ sources: "src/**/*.hpp,src/**/*.cpp,test/**/*.cpp"
67
+ style: file
68
+
69
+ test_linux:
70
+ name: Test on Linux
71
+ needs: prepare
72
+ runs-on: ubuntu-24.04
73
+ steps:
74
+ - uses: actions/checkout@v6
75
+ with:
76
+ fetch-depth: 0
77
+ - uses: actions/setup-python@v6
78
+ with:
79
+ python-version: "3.14"
80
+ - uses: actions/download-artifact@v7
81
+ if: inputs.ngsolve_version != ''
82
+ with:
83
+ name: release-pyproject
84
+ - name: Build and test
85
+ run: |
86
+ sudo apt-get update
87
+ sudo apt-get install -y libgtest-dev libopenblas0-pthread
88
+ python -m pip install . numpy scipy matplotlib
89
+ cmake -S . -B build -DNGSTREFFTZ_USE_GTEST=ON -DCMAKE_BUILD_TYPE=Release
90
+ cmake --build build --parallel 2
91
+ ctest --test-dir build --output-on-failure
92
+
93
+ build_wheels:
94
+ name: Build wheels on ${{ matrix.os }}
95
+ needs: [prepare, test_linux]
96
+ runs-on: ${{ matrix.os }}
97
+ strategy:
98
+ matrix:
99
+ os: [macos-15-intel, ubuntu-latest, windows-2022]
100
+ env:
101
+ CIBW_BUILD: ${{ inputs.level == 'quick' && 'cp314-*' || 'cp310-* cp311-* cp312-* cp313-* cp314-*' }}
102
+ CIBW_ARCHS_WINDOWS: AMD64
103
+ CIBW_ENVIRONMENT_WINDOWS: >
104
+ CMAKE_GENERATOR='Visual Studio 17 2022'
105
+ CMAKE_GENERATOR_PLATFORM=x64
106
+ steps:
107
+ - uses: actions/checkout@v6
108
+ with:
109
+ fetch-tags: true
110
+ fetch-depth: 0
111
+ - uses: actions/download-artifact@v7
112
+ if: inputs.ngsolve_version != ''
113
+ with:
114
+ name: release-pyproject
115
+ - name: Free disk space for Linux wheel build
116
+ if: matrix.os == 'ubuntu-latest'
117
+ run: |
118
+ df -h
119
+ sudo rm -rf /usr/local/lib/android /usr/share/dotnet /opt/ghc
120
+ sudo apt-get clean
121
+ sudo rm -rf /var/lib/apt/lists/*
122
+ df -h
123
+ - uses: pypa/cibuildwheel@v3.2.1
124
+ env:
125
+ SETUPTOOLS_SCM_PRETEND_VERSION_FOR_NGSTREFFTZ: ${{ needs.prepare.outputs.version }}
126
+ CIBW_ENVIRONMENT_PASS_LINUX: SETUPTOOLS_SCM_PRETEND_VERSION_FOR_NGSTREFFTZ
127
+ CIBW_BUILD_VERBOSITY: 1
128
+ - uses: actions/upload-artifact@v7
129
+ with:
130
+ name: cibw-wheels-${{ matrix.os }}
131
+ path: ./wheelhouse/*.whl
132
+
133
+ build_sdist:
134
+ name: Build source distribution
135
+ if: ${{ inputs.level != 'quick' }}
136
+ needs: [prepare, test_linux]
137
+ runs-on: ubuntu-latest
138
+ container: quay.io/pypa/manylinux_2_28_x86_64
139
+ steps:
140
+ - uses: actions/checkout@v6
141
+ with:
142
+ fetch-tags: true
143
+ fetch-depth: 0
144
+ - uses: actions/download-artifact@v7
145
+ if: inputs.ngsolve_version != ''
146
+ with:
147
+ name: release-pyproject
148
+ - name: Build sdist
149
+ env:
150
+ SETUPTOOLS_SCM_PRETEND_VERSION_FOR_NGSTREFFTZ: ${{ needs.prepare.outputs.version }}
151
+ run: uv tool run --python 3.14 --from build pyproject-build --sdist
152
+ - uses: actions/upload-artifact@v7
153
+ with:
154
+ name: cibw-sdist
155
+ path: dist/*.tar.gz
156
+
157
+ upload_pypi:
158
+ if: ${{ !inputs.dry_run && needs.prepare.outputs.published != 'true' }}
159
+ needs: [prepare, build_wheels, build_sdist]
160
+ runs-on: ubuntu-latest
161
+ environment: pypi
162
+ permissions:
163
+ id-token: write
164
+ steps:
165
+ - uses: actions/download-artifact@v7
166
+ with:
167
+ pattern: cibw-*
168
+ path: dist
169
+ merge-multiple: true
170
+ - uses: pypa/gh-action-pypi-publish@release/v1
171
+ if: github.ref == 'refs/heads/main' || github.event_name == 'release' || inputs.ngsolve_version != ''
172
+ with:
173
+ skip-existing: true
174
+ password: ${{ secrets.PYPI_API_TOKEN }}
175
+ - uses: pypa/gh-action-pypi-publish@release/v1
176
+ if: github.ref == 'refs/heads/main-dev' && inputs.ngsolve_version == ''
177
+ with:
178
+ skip-existing: true
179
+ password: ${{ secrets.PYPI_API_TOKEN }}
180
+ repository-url: https://test.pypi.org/legacy/
181
+
182
+ docker:
183
+ if: inputs.ngsolve_version == ''
184
+ needs: [upload_pypi]
185
+ runs-on: ubuntu-latest
186
+ steps:
187
+ - uses: actions/checkout@v6
188
+ - id: meta
189
+ uses: docker/metadata-action@v6
190
+ with:
191
+ # list of Docker images to use as base name for tags
192
+ images: paulstdocker/ngstrefftz
193
+ # generate Docker tags based on the following events/attributes
194
+ tags: |
195
+ type=ref,event=branch
196
+ type=ref,event=pr
197
+ type=semver,pattern={{version}}
198
+ type=semver,pattern={{major}}.{{minor}}
199
+ - if: github.event_name == 'release' && github.event.action == 'published'
200
+ uses: docker/login-action@v4
201
+ with:
202
+ username: ${{ secrets.DOCKERHUB_USERNAME }}
203
+ password: ${{ secrets.DOCKERHUB_TOKEN }}
204
+ - uses: docker/build-push-action@v7
205
+ with:
206
+ context: .
207
+ file: Dockerfile
208
+ push: ${{ github.event_name == 'release' && github.event.action == 'published' }}
209
+ tags: ${{ steps.meta.outputs.tags }}
210
+
211
+ docs:
212
+ needs: [build_wheels]
213
+ runs-on: ubuntu-latest
214
+ container: python:3.14
215
+ steps:
216
+ - uses: actions/checkout@v6
217
+ with:
218
+ fetch-depth: 0
219
+ path: "NGSTrefftz"
220
+ - uses: actions/download-artifact@v7
221
+ with:
222
+ name: cibw-wheels-ubuntu-latest
223
+ path: wheels
224
+ - name: Install wheel and documentation dependencies
225
+ run: |
226
+ apt update -y && DEBIAN_FRONTEND="noninteractive" apt install -y build-essential git pandoc
227
+ python -m pip install "$GITHUB_WORKSPACE"/wheels/*-cp314-cp314-*.whl -r "$GITHUB_WORKSPACE/NGSTrefftz/docs/requirements.txt"
228
+ - name: Build Sphinx HTML
229
+ run: sphinx-build -b html $GITHUB_WORKSPACE/NGSTrefftz/docs $GITHUB_WORKSPACE/NGSTrefftz/docs/_build/html
230
+ - uses: actions/upload-pages-artifact@v5
231
+ with:
232
+ path: ${{ github.workspace }}/NGSTrefftz/docs/_build/html
233
+
234
+ deploy-docs:
235
+ needs: docs
236
+ permissions:
237
+ pages: write # to deploy to Pages
238
+ id-token: write # to verify the deployment originates from an appropriate source
239
+ environment:
240
+ name: github-pages
241
+ url: ${{ steps.deployment.outputs.page_url }}
242
+ runs-on: ubuntu-latest
243
+ if: github.ref == 'refs/heads/main' && !inputs.dry_run
244
+ steps:
245
+ - id: deployment
246
+ uses: actions/deploy-pages@v5
247
+
248
+ paper:
249
+ runs-on: ubuntu-latest
250
+ if: ${{ inputs.level != 'quick' }}
251
+ name: Paper Draft
252
+ steps:
253
+ - uses: actions/checkout@v6
254
+ - uses: openjournals/openjournals-draft-action@master
255
+ with:
256
+ journal: joss
257
+ paper-path: docs/paper/paper.md
258
+ - uses: actions/upload-artifact@v7
259
+ with:
260
+ name: joss_paper
261
+ path: docs/paper/paper.pdf
@@ -36,10 +36,25 @@ set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_BINARY_DIR}/cmake_modules)
36
36
 
37
37
  set(addon_name ngstrefftz)
38
38
  project(ngstrefftz)
39
- include_directories(SYSTEM ${CMAKE_SOURCE_DIR}/external_dependencies/ngstents/src) # SYSTEM to suppress warnings from headers
40
39
  include(${CMAKE_BINARY_DIR}/cmake_modules/ngsolve_addon.cmake)
40
+ set(NGSTREFFTZ_USE_NGSTENTS AUTO CACHE STRING "Build with ngstents support")
41
+ set_property(CACHE NGSTREFFTZ_USE_NGSTENTS PROPERTY STRINGS AUTO ON OFF)
42
+ if(NOT NGSTREFFTZ_USE_NGSTENTS STREQUAL "OFF")
43
+ if(NOT ngstents_DIR)
44
+ execute_process(COMMAND ${Python3_EXECUTABLE} -m ngstents.config
45
+ OUTPUT_VARIABLE ngstents_DIR OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET)
46
+ endif()
47
+ find_package(ngstents CONFIG QUIET)
48
+ if(ngstents_FOUND)
49
+ set(NGSTREFFTZ_USE_NGSTENTS ON)
50
+ elseif(NGSTREFFTZ_USE_NGSTENTS STREQUAL "ON")
51
+ message(FATAL_ERROR "NGSTREFFTZ_USE_NGSTENTS=ON but ngstents was not found")
52
+ else()
53
+ set(NGSTREFFTZ_USE_NGSTENTS OFF)
54
+ message(WARNING "ngstents not found, building without tent-pitching support")
55
+ endif()
56
+ endif()
41
57
  add_ngsolve_addon(ngstrefftz
42
- ${CMAKE_SOURCE_DIR}/external_dependencies/ngstents/src/tents.cpp
43
58
  src/python_trefftz.cpp
44
59
  src/diffopmapped.hpp
45
60
  src/scalarmappedfe.cpp
@@ -47,11 +62,9 @@ add_ngsolve_addon(ngstrefftz
47
62
  src/trefftzfespace.cpp
48
63
  src/specialcoefficientfunction.cpp
49
64
  src/specialintegrator.cpp
50
- src/twavetents.cpp
51
65
  src/embtrefftz.cpp
52
66
  src/lapack_loader.cpp
53
67
  src/monomialfespace.cpp
54
- src/mesh1dtents.cpp
55
68
  src/condensedg.cpp
56
69
  src/pufe.cpp
57
70
  src/pufespace.cpp
@@ -60,7 +73,12 @@ add_ngsolve_addon(ngstrefftz
60
73
  #src/airy.cpp #for testing, requires boost
61
74
  )
62
75
  target_compile_definitions(ngstrefftz PRIVATE NGSTREFFTZ_EXPORTS)
63
- target_compile_definitions(ngstrefftz PRIVATE NGSTENT_EXPORTS)
76
+ if(NGSTREFFTZ_USE_NGSTENTS)
77
+ target_sources(ngstrefftz PRIVATE src/twavetents.cpp src/mesh1dtents.cpp)
78
+ target_compile_definitions(ngstrefftz PRIVATE NGSTREFFTZ_USE_NGSTENTS)
79
+ target_link_libraries(ngstrefftz PRIVATE ngstents::core)
80
+ ngsolve_addon_set_relative_rpath(ngstrefftz "../ngstents")
81
+ endif()
64
82
  # add dynamic loader library to link libraries (on linux)
65
83
  if(CMAKE_DL_LIBS)
66
84
  target_link_libraries(ngstrefftz PRIVATE ${CMAKE_DL_LIBS})
@@ -74,10 +92,6 @@ if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
74
92
  -Wpedantic
75
93
  -Wno-vla # ngsolve uses VLAs anyway
76
94
  )
77
- set_source_files_properties(
78
- ${CMAKE_SOURCE_DIR}/external_dependencies/ngstents/src/tents.cpp
79
- PROPERTIES COMPILE_FLAGS "-w" #suppress all warnings
80
- )
81
95
  elseif(CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
82
96
  target_compile_options(ngstrefftz PRIVATE
83
97
  -Wall
@@ -86,10 +100,6 @@ elseif(CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
86
100
  -Wtype-limits
87
101
  -Wuninitialized
88
102
  )
89
- set_source_files_properties(
90
- ${CMAKE_SOURCE_DIR}/external_dependencies/ngstents/src/tents.cpp
91
- PROPERTIES COMPILE_FLAGS "-w" #suppress all warnings
92
- )
93
103
  endif()
94
104
 
95
105
  ### user options
@@ -127,6 +137,7 @@ message("${BoldCyan}
127
137
  Enabled functionality:
128
138
  Doxygen: ........... ${NGSTREFFTZ_BUILD_DOC}
129
139
  GTest: ............. ${NGSTREFFTZ_USE_GTEST}
140
+ ngstents: .......... ${NGSTREFFTZ_USE_NGSTENTS}
130
141
 
131
142
  With 'make install' the package will be installed to: ${CMAKE_INSTALL_PREFIX}
132
143
  Make sure to add it to the python path:
@@ -148,10 +159,14 @@ file(COPY
148
159
  add_test(NAME embtrefftz COMMAND python3 -m doctest ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/Testing/embt.py)
149
160
  add_test(NAME conforming_trefftz COMMAND python3 -m doctest ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/Testing/conforming_trefftz.py)
150
161
  add_test(NAME trefftz COMMAND python3 -m doctest ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/Testing/trefftz.py)
151
- add_test(NAME tents COMMAND python3 -m doctest ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/Testing/tents.py)
162
+ set(tests_with_pythonpath embtrefftz trefftz)
163
+ if(NGSTREFFTZ_USE_NGSTENTS)
164
+ add_test(NAME tents COMMAND python3 -m doctest ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/Testing/tents.py)
165
+ list(APPEND tests_with_pythonpath tents)
166
+ endif()
152
167
  add_test(NAME box COMMAND python3 -m doctest ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/Testing/boxint.py)
153
168
  #WORKING_DIRECTORY ${ CMAKE_CURRENT_SOURCE_DIR }
154
- set_tests_properties(embtrefftz trefftz tents
169
+ set_tests_properties(${tests_with_pythonpath}
155
170
  PROPERTIES ENVIRONMENT PYTHONPATH=${CMAKE_LIBRARY_OUTPUT_DIRECTORY}:${NGSOLVE_INSTALL_DIR}/${NGSOLVE_INSTALL_DIR_PYTHON}:$ENV{PYTHONPATH})
156
171
 
157
172
  if(NGSTREFFTZ_USE_GTEST)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: ngstrefftz
3
- Version: 0.3.2607.dev11
3
+ Version: 0.3.2607.dev15
4
4
  Summary: NGSTrefftz is an add-on to NGSolve for Trefftz methods.
5
5
  Author-Email: Paul Stocker <paul.stocker@univie.ac.at>
6
6
  Classifier: License :: OSI Approved :: GNU Lesser General Public License v3 (LGPLv3)
@@ -8,6 +8,7 @@ Project-URL: Documentation, https://paulst.github.io/NGSTrefftz
8
8
  Project-URL: Repository, https://github.com/PaulSt/ngstrefftz
9
9
  Requires-Python: >=3.10
10
10
  Requires-Dist: ngsolve==6.2.2607
11
+ Requires-Dist: ngstents==0.1.2607rc1
11
12
  Description-Content-Type: text/markdown
12
13
 
13
14
  # NGSTrefftz
@@ -18,7 +18,7 @@ version_tuple: tuple[int | str, ...]
18
18
  commit_id: str | None
19
19
  __commit_id__: str | None
20
20
 
21
- __version__ = version = '0.3.2607.dev11'
22
- __version_tuple__ = version_tuple = (0, 3, 2607, 'dev11')
21
+ __version__ = version = '0.3.2607.dev15'
22
+ __version_tuple__ = version_tuple = (0, 3, 2607, 'dev15')
23
23
 
24
- __commit_id__ = commit_id = 'g1f041fc38'
24
+ __commit_id__ = commit_id = 'g67e347b30'
@@ -10,6 +10,7 @@ classifiers = [
10
10
  ]
11
11
  dependencies = [
12
12
  "ngsolve==6.2.2607",
13
+ "ngstents==0.1.2607rc1",
13
14
  ]
14
15
 
15
16
  [project.urls]
@@ -19,6 +20,7 @@ Repository = "https://github.com/PaulSt/ngstrefftz"
19
20
  [build-system]
20
21
  requires = [
21
22
  "ngsolve==6.2.2607",
23
+ "ngstents==0.1.2607rc1",
22
24
  "scikit-build-core>=0.9.0",
23
25
  "pybind11_stubgen",
24
26
  "setuptools>=45",
@@ -43,8 +45,8 @@ local_scheme = "no-local-version"
43
45
  [tool.cibuildwheel]
44
46
  #build-verbosity = 1
45
47
  manylinux-x86_64-image = "cerbsim/manylinux_2_28_x86_64_cuda_12.9"
48
+ test-command = "python -c \"import ngstents; import ngstrefftz\""
46
49
  skip = """
47
- pp*
48
50
  *_i686
49
51
  *musllinux*
50
52
  *win32
@@ -1,4 +1,11 @@
1
1
  import ngsolve
2
+
3
+ try:
4
+ import ngstents as _ngstents
5
+ except ModuleNotFoundError as _error:
6
+ if _error.name != "ngstents":
7
+ raise
8
+
2
9
  from ngsolve.fem import ET,IntegrationRule
3
10
  from ngsolve.comp import L2,BilinearForm,LinearForm,SymbolicBFI,SymbolicLFI,FESpace
4
11
  from ngsolve.fem import CoordCF
@@ -25,7 +32,6 @@ def GetWave(self,U):
25
32
  f += SymbolicLFI(ipfct*v).SetIntegrationRule(eltyp,intrule)
26
33
  f.Assemble()
27
34
  U.vec.data = a.mat.Inverse(inverse='sparsecholesky') * f.vec
28
- # return gfu
29
35
  else:
30
36
  fes = L2(initmesh, order=order-1)**(D+1)
31
37
  u,v = fes.TnT()
@@ -46,8 +52,9 @@ def GetWave(self,U):
46
52
  dbox = BoxDifferentialSymbol()
47
53
  dball = dbox(boxtype=BOXTYPE.BALL)
48
54
 
49
- setattr(TWaveTents1, 'GetWave', GetWave)
50
- setattr(TWaveTents2, 'GetWave', GetWave)
51
- setattr(TWaveTents3, 'GetWave', GetWave)
52
- setattr(QTWaveTents1, 'GetWave', GetWave)
53
- setattr(QTWaveTents2, 'GetWave', GetWave)
55
+ if "TWaveTents1" in globals():
56
+ setattr(TWaveTents1, 'GetWave', GetWave)
57
+ setattr(TWaveTents2, 'GetWave', GetWave)
58
+ setattr(TWaveTents3, 'GetWave', GetWave)
59
+ setattr(QTWaveTents1, 'GetWave', GetWave)
60
+ setattr(QTWaveTents2, 'GetWave', GetWave)
@@ -1,4 +1,4 @@
1
- #include <tents.hpp>
1
+ #include <ngstents/tents.hpp>
2
2
  #include "mesh1dtents.hpp"
3
3
 
4
4
  namespace
@@ -3,13 +3,14 @@
3
3
  #include <fem.hpp>
4
4
  #include <comp.hpp>
5
5
  // using namespace ngsolve;
6
- #include <tents.hpp>
7
6
  #include "trefftzfespace.hpp"
8
7
  #include "specialcoefficientfunction.hpp"
9
8
  #include "specialintegrator.hpp"
9
+ #ifdef NGSTREFFTZ_USE_NGSTENTS
10
10
  #include "twavetents.hpp"
11
- #include "embtrefftz.hpp"
12
11
  #include "mesh1dtents.hpp"
12
+ #endif
13
+ #include "embtrefftz.hpp"
13
14
  #include "monomialfespace.hpp"
14
15
  #include "pufespace.hpp"
15
16
  #include "condensedg.hpp"
@@ -26,9 +27,11 @@ PYBIND11_MODULE (ngstrefftz, m)
26
27
  ExportTrefftzFESpace (m);
27
28
  ExportSpecialCoefficientFunction (m);
28
29
  ExportSpecialIntegrator (m);
30
+ #ifdef NGSTREFFTZ_USE_NGSTENTS
29
31
  ExportTWaveTents (m);
30
- ExportEmbTrefftz (m);
31
32
  ExportMesh1dTents (m);
33
+ #endif
34
+ ExportEmbTrefftz (m);
32
35
  ExportMonomialFESpace (m);
33
36
  ExportPUFESpace (m);
34
37
  ExportCondenseDG (m);
@@ -1,6 +1,6 @@
1
1
  #include "twavetents.hpp"
2
2
  #include <h1lofe.hpp>
3
- #include <paralleldepend.hpp>
3
+ #include <ngstents/paralleldepend.hpp>
4
4
  #include <fem.hpp>
5
5
  #include "trefftzfespace.hpp"
6
6
 
@@ -1,6 +1,6 @@
1
1
  #ifndef FILE_TESTPYTHON_HPP
2
2
  #define FILE_TESTPYTHON_HPP
3
- #include <tents.hpp>
3
+ #include <ngstents/tents.hpp>
4
4
  #include "scalarmappedfe.hpp"
5
5
  #include "trefftzfespace.hpp"
6
6
  #include <unordered_map>