ngstrefftz 0.3.2602.dev11__tar.gz → 0.3.2604.dev5__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 (154) hide show
  1. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/.github/workflows/build.yml +25 -8
  2. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/CMakeLists.txt +121 -95
  3. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/PKG-INFO +72 -34
  4. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/README.md +70 -30
  5. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/_version.py +3 -3
  6. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/docs/notebooks/embTrefftz-stokes.ipynb +1 -1
  7. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/docs/requirements.txt +2 -2
  8. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/pyproject.toml +10 -14
  9. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/src/embtrefftz.cpp +2 -2
  10. ngstrefftz-0.3.2604.dev5/src/mesh1dtents.cpp +187 -0
  11. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/test/tents.py +17 -0
  12. ngstrefftz-0.3.2602.dev11/src/mesh1dtents.cpp +0 -176
  13. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/.clang-format +0 -0
  14. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/.github/workflows/fix_auditwheel_policy.py +0 -0
  15. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/.github/workflows/pyodide/Dockerfile +0 -0
  16. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/.github/workflows/pyodide/build_in_docker.sh +0 -0
  17. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/.github/workflows/pyodide/merge.py +0 -0
  18. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/.github/workflows/pyodide/requirements.txt +0 -0
  19. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/.gitignore +0 -0
  20. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/.gitmodules +0 -0
  21. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/CONTRIBUTING.md +0 -0
  22. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/Dockerfile +0 -0
  23. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/LICENSE +0 -0
  24. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/docs/Doxyfile.in +0 -0
  25. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/docs/_static/breadcrumbs.html +0 -0
  26. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/docs/_static/css/mytheme.css +0 -0
  27. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/docs/conf.py +0 -0
  28. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/docs/contrib.rst +0 -0
  29. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/docs/docu.rst +0 -0
  30. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/docs/index.rst +0 -0
  31. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/docs/intro.rst +0 -0
  32. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/docs/notebooks/embTrefftz-adv.ipynb +0 -0
  33. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/docs/notebooks/embTrefftz-helm.ipynb +0 -0
  34. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/docs/notebooks/embTrefftz-poi.ipynb +0 -0
  35. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/docs/notebooks/embTrefftz-wave.ipynb +0 -0
  36. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/docs/notebooks/embTrefftz.ipynb +0 -0
  37. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/docs/notebooks/helmholtz.ipynb +0 -0
  38. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/docs/notebooks/index.ipynb +0 -0
  39. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/docs/notebooks/laplace.ipynb +0 -0
  40. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/docs/notebooks/qtelliptic.ipynb +0 -0
  41. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/docs/notebooks/qtwave.ipynb +0 -0
  42. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/docs/notebooks/tunfitted.ipynb +0 -0
  43. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/docs/notebooks/twave.ipynb +0 -0
  44. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/docs/notebooks/twavetents.ipynb +0 -0
  45. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/docs/paper/codemeta.json +0 -0
  46. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/docs/paper/paper.bib +0 -0
  47. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/docs/paper/paper.md +0 -0
  48. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/docs/readme.rst +0 -0
  49. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/external_dependencies/ngstents/.github/workflows/build.yml +0 -0
  50. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/external_dependencies/ngstents/.gitignore +0 -0
  51. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/external_dependencies/ngstents/README.md +0 -0
  52. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/external_dependencies/ngstents/demo/advection/Advection_Periodic_Clipping.ipynb +0 -0
  53. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/external_dependencies/ngstents/demo/advection/advection2d.py +0 -0
  54. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/external_dependencies/ngstents/demo/advection/advection2d_periodic.py +0 -0
  55. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/external_dependencies/ngstents/demo/burgers/Burgers_Clipping.ipynb +0 -0
  56. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/external_dependencies/ngstents/demo/burgers/burgers1d.py +0 -0
  57. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/external_dependencies/ngstents/demo/burgers/burgers2d.py +0 -0
  58. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/external_dependencies/ngstents/demo/euler/Euler_Clipping.ipynb +0 -0
  59. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/external_dependencies/ngstents/demo/euler/euler2d.py +0 -0
  60. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/external_dependencies/ngstents/demo/euler/mach3_windtunnel.py +0 -0
  61. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/external_dependencies/ngstents/demo/maxwell/maxwell3d.py +0 -0
  62. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/external_dependencies/ngstents/demo/symbolic/symbolic_advection2d.py +0 -0
  63. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/external_dependencies/ngstents/demo/symbolic/symbolic_burgers.py +0 -0
  64. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/external_dependencies/ngstents/demo/symbolic/symbolic_euler.py +0 -0
  65. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/external_dependencies/ngstents/demo/symbolic/symbolic_wave.py +0 -0
  66. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/external_dependencies/ngstents/demo/symbolic/symbolic_wave1d_interface.py +0 -0
  67. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/external_dependencies/ngstents/demo/symbolic/wave_penetrable_cylinder.py +0 -0
  68. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/external_dependencies/ngstents/demo/tents/draw3dtent.py +0 -0
  69. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/external_dependencies/ngstents/demo/tents/draw3dvertex.py +0 -0
  70. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/external_dependencies/ngstents/demo/wave/horn.py +0 -0
  71. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/external_dependencies/ngstents/demo/wave/wave2d.py +0 -0
  72. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/external_dependencies/ngstents/demo/wave/wave2d_timedepbc.py +0 -0
  73. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/external_dependencies/ngstents/demo/wave/wave3d.py +0 -0
  74. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/external_dependencies/ngstents/docs/BurgersMTP.ipynb +0 -0
  75. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/external_dependencies/ngstents/docs/StartPitching.ipynb +0 -0
  76. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/external_dependencies/ngstents/docs/_config.yml +0 -0
  77. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/external_dependencies/ngstents/docs/_toc.yml +0 -0
  78. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/external_dependencies/ngstents/docs/assets/css/style.scss +0 -0
  79. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/external_dependencies/ngstents/docs/do +0 -0
  80. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/external_dependencies/ngstents/docs/figs/CausalityCond.png +0 -0
  81. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/external_dependencies/ngstents/docs/figs/dag.png +0 -0
  82. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/external_dependencies/ngstents/docs/figs/map.png +0 -0
  83. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/external_dependencies/ngstents/docs/figs/ngsTentsLogo.png +0 -0
  84. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/external_dependencies/ngstents/docs/figs/subtents.png +0 -0
  85. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/external_dependencies/ngstents/docs/index.ipynb +0 -0
  86. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/external_dependencies/ngstents/docs/requirements.txt +0 -0
  87. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/external_dependencies/ngstents/py/__init__.py +0 -0
  88. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/external_dependencies/ngstents/py/conslaw/__init__.py +0 -0
  89. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/external_dependencies/ngstents/py/utils/__init__.py +0 -0
  90. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/external_dependencies/ngstents/py/utils/_drawtents.py +0 -0
  91. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/external_dependencies/ngstents/py/utils/_drawtents2d.py +0 -0
  92. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/external_dependencies/ngstents/pyproject.toml +0 -0
  93. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/external_dependencies/ngstents/src/CMakeLists.txt +0 -0
  94. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/external_dependencies/ngstents/src/advection.cpp +0 -0
  95. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/external_dependencies/ngstents/src/burgers.cpp +0 -0
  96. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/external_dependencies/ngstents/src/concurrentqueue.h +0 -0
  97. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/external_dependencies/ngstents/src/conservationlaw.hpp +0 -0
  98. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/external_dependencies/ngstents/src/euler.cpp +0 -0
  99. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/external_dependencies/ngstents/src/maxwell.cpp +0 -0
  100. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/external_dependencies/ngstents/src/ngsolve_addon.cmake +0 -0
  101. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/external_dependencies/ngstents/src/paralleldepend.hpp +0 -0
  102. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/external_dependencies/ngstents/src/python_conslaw.cpp +0 -0
  103. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/external_dependencies/ngstents/src/python_tents.cpp +0 -0
  104. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/external_dependencies/ngstents/src/symbolic.cpp +0 -0
  105. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/external_dependencies/ngstents/src/tconservationlaw_tp_impl.hpp +0 -0
  106. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/external_dependencies/ngstents/src/tents.cpp +0 -0
  107. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/external_dependencies/ngstents/src/tents.hpp +0 -0
  108. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/external_dependencies/ngstents/src/tentsolver.hpp +0 -0
  109. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/external_dependencies/ngstents/src/tentsolver_impl.hpp +0 -0
  110. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/external_dependencies/ngstents/src/vis3d.cpp +0 -0
  111. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/external_dependencies/ngstents/src/vis3d.hpp +0 -0
  112. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/external_dependencies/ngstents/src/wave.cpp +0 -0
  113. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/external_dependencies/ngstents/tests/test_burgers_2D.py +0 -0
  114. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/external_dependencies/ngstents/tests/test_causal_tents.py +0 -0
  115. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/external_dependencies/ngstents/tests/test_conslaw.py +0 -0
  116. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/external_dependencies/ngstents/tests/test_tent_height_2D.py +0 -0
  117. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/external_dependencies/ngstents/tests/test_tentlayers.py +0 -0
  118. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/src/__init__.py +0 -0
  119. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/src/airy.cpp +0 -0
  120. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/src/boxintegral.cpp +0 -0
  121. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/src/boxintegral.hpp +0 -0
  122. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/src/condensedg.cpp +0 -0
  123. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/src/condensedg.hpp +0 -0
  124. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/src/diffopmapped.hpp +0 -0
  125. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/src/embtrefftz.hpp +0 -0
  126. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/src/mesh1dtents.hpp +0 -0
  127. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/src/monomialfespace.cpp +0 -0
  128. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/src/monomialfespace.hpp +0 -0
  129. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/src/ngsttd.hpp +0 -0
  130. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/src/planewavefe.cpp +0 -0
  131. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/src/planewavefe.hpp +0 -0
  132. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/src/pufe.cpp +0 -0
  133. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/src/pufe.hpp +0 -0
  134. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/src/pufespace.cpp +0 -0
  135. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/src/pufespace.hpp +0 -0
  136. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/src/python_trefftz.cpp +0 -0
  137. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/src/scalarmappedfe.cpp +0 -0
  138. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/src/scalarmappedfe.hpp +0 -0
  139. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/src/specialcoefficientfunction.cpp +0 -0
  140. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/src/specialcoefficientfunction.hpp +0 -0
  141. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/src/specialintegrator.cpp +0 -0
  142. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/src/specialintegrator.hpp +0 -0
  143. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/src/tp0fespace.cpp +0 -0
  144. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/src/tp0fespace.hpp +0 -0
  145. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/src/trefftzfespace.cpp +0 -0
  146. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/src/trefftzfespace.hpp +0 -0
  147. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/src/twavetents.cpp +0 -0
  148. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/src/twavetents.hpp +0 -0
  149. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/test/boxint.py +0 -0
  150. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/test/conforming_trefftz.py +0 -0
  151. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/test/dg.py +0 -0
  152. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/test/embt.py +0 -0
  153. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/test/embtrefftz_gtest.cpp +0 -0
  154. {ngstrefftz-0.3.2602.dev11 → ngstrefftz-0.3.2604.dev5}/test/trefftz.py +0 -0
@@ -83,14 +83,31 @@ jobs:
83
83
  deps = tomllib.loads(pathlib.Path("pyproject.toml").read_text())["project"]["dependencies"]
84
84
  subprocess.check_call(["pip", "install", *deps])
85
85
  PY
86
- - name: build ngstrefftz gtest
86
+ - name: Configure
87
87
  run: |
88
- mkdir $GITHUB_WORKSPACE/NGSTrefftz/make
89
- cd $GITHUB_WORKSPACE/NGSTrefftz/make
90
- cmake .. -DNGSTREFFTZ_USE_GTEST=ON
91
- make
92
- - name: run gtest
93
- run: $GITHUB_WORKSPACE/NGSTrefftz/make/trefftz_gtest
88
+ cmake \
89
+ -S "$GITHUB_WORKSPACE/NGSTrefftz" \
90
+ -B "$GITHUB_WORKSPACE/NGSTrefftz/make" \
91
+ -DNGSTREFFTZ_USE_GTEST=ON \
92
+ -DCMAKE_BUILD_TYPE=Release
93
+ - name: Build
94
+ run: |
95
+ cmake --build "$GITHUB_WORKSPACE/NGSTrefftz/make"
96
+ - name: Run tests
97
+ run: |
98
+ NGSOLVE_BLAS_LIBS="$(python - <<'PY'
99
+ import ngsolve_openblas
100
+ print(":".join(str(p) for p in ngsolve_openblas.get_libraries()))
101
+ PY
102
+ )"
103
+
104
+ echo "Preloading NGSolve BLAS libraries:"
105
+ echo "${NGSOLVE_BLAS_LIBS}"
106
+
107
+ LD_PRELOAD="${NGSOLVE_BLAS_LIBS}${LD_PRELOAD:+:${LD_PRELOAD}}" \
108
+ ctest \
109
+ --test-dir "$GITHUB_WORKSPACE/NGSTrefftz/make" \
110
+ --output-on-failure
94
111
 
95
112
  build_wheels:
96
113
  if: ${{ inputs.level != 'test_only' }}
@@ -321,7 +338,7 @@ jobs:
321
338
  journal: joss
322
339
  paper-path: docs/paper/paper.md
323
340
  - name: Upload
324
- uses: actions/upload-artifact@v4
341
+ uses: actions/upload-artifact@v6
325
342
  with:
326
343
  name: joss_paper
327
344
  path: docs/paper/paper.pdf
@@ -1,4 +1,4 @@
1
- cmake_minimum_required(VERSION 3.16)
1
+ cmake_minimum_required(VERSION 3.18)
2
2
  ########################################################
3
3
  project(ngstrefftz)
4
4
  ########################################################
@@ -32,12 +32,111 @@ download_if_possible (
32
32
  "${CMAKE_BINARY_DIR}/cmake_modules/ngsolve_addon.cmake")
33
33
  set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_BINARY_DIR}/cmake_modules)
34
34
 
35
+ # -----------------------------------------------------------------------------
36
+ # ngsolve-targets.cmake may reference MKL::MKL before NGSolveConfig.cmake has imported it
37
+ if(NOT TARGET MKL::MKL)
38
+ set(MKL_INTERFACE "lp64" CACHE STRING "MKL integer interface" FORCE)
39
+ set(MKL_LINK "sdl" CACHE STRING "MKL linking model" FORCE)
40
+ set(_NGSTREFFTZ_MKL_HINTS)
41
+ if(MKL_ROOT)
42
+ list(APPEND _NGSTREFFTZ_MKL_HINTS "${MKL_ROOT}/lib/cmake/mkl")
43
+ endif()
44
+ if(DEFINED ENV{MKLROOT} AND NOT "$ENV{MKLROOT}" STREQUAL "")
45
+ list(APPEND _NGSTREFFTZ_MKL_HINTS "$ENV{MKLROOT}/lib/cmake/mkl")
46
+ endif()
47
+ list(APPEND _NGSTREFFTZ_MKL_HINTS
48
+ "/opt/intel/oneapi/mkl/latest/lib/cmake/mkl"
49
+ "$ENV{HOME}/.local/lib/cmake/mkl"
50
+ )
51
+ find_package(MKL CONFIG QUIET HINTS ${_NGSTREFFTZ_MKL_HINTS})
52
+ endif()
53
+
54
+ # Older NGSolve wheels used the PyPI mkl-devel package.
55
+ if(NOT TARGET MKL::MKL)
56
+ find_package(Python3 QUIET COMPONENTS Interpreter)
57
+ if(Python3_Interpreter_FOUND)
58
+ execute_process(
59
+ COMMAND "${Python3_EXECUTABLE}" -c
60
+ "from importlib.metadata import files; fs=files('mkl-devel') or []; print(next((str(p.locate().parent.resolve()) for p in fs if p.name == 'MKLConfig.cmake'), ''))"
61
+ RESULT_VARIABLE _NGSTREFFTZ_MKL_QUERY_RESULT
62
+ OUTPUT_VARIABLE _NGSTREFFTZ_MKL_CONFIG_DIR
63
+ OUTPUT_STRIP_TRAILING_WHITESPACE
64
+ ERROR_QUIET
65
+ )
66
+ if(_NGSTREFFTZ_MKL_QUERY_RESULT EQUAL 0
67
+ AND _NGSTREFFTZ_MKL_CONFIG_DIR
68
+ AND EXISTS "${_NGSTREFFTZ_MKL_CONFIG_DIR}/MKLConfig.cmake")
69
+ find_package(MKL CONFIG QUIET
70
+ HINTS "${_NGSTREFFTZ_MKL_CONFIG_DIR}"
71
+ NO_DEFAULT_PATH
72
+ )
73
+ endif()
74
+ endif()
75
+ endif()
76
+
77
+ if(TARGET MKL::MKL)
78
+ message(STATUS "Preloaded MKL::MKL for the NGSolve CMake package")
79
+ endif()
80
+
81
+ unset(_NGSTREFFTZ_MKL_HINTS)
82
+ unset(_NGSTREFFTZ_MKL_QUERY_RESULT)
83
+ unset(_NGSTREFFTZ_MKL_CONFIG_DIR)
84
+
85
+ function(ngstrefftz_relocate_ngsolve_openblas)
86
+ if(NOT TARGET ngs_lapack OR APPLE)
87
+ return()
88
+ endif()
89
+
90
+ get_target_property(_ngs_lapack_libs ngs_lapack INTERFACE_LINK_LIBRARIES)
91
+ if(NOT _ngs_lapack_libs)
92
+ return()
93
+ endif()
94
+
95
+ set(_ngs_openblas_paths_are_stale FALSE)
96
+ foreach(_lib IN LISTS _ngs_lapack_libs)
97
+ if(IS_ABSOLUTE "${_lib}"
98
+ AND "${_lib}" MATCHES "ngsolve_openblas"
99
+ AND NOT EXISTS "${_lib}")
100
+ set(_ngs_openblas_paths_are_stale TRUE)
101
+ endif()
102
+ endforeach()
103
+
104
+ if(NOT _ngs_openblas_paths_are_stale)
105
+ return()
106
+ endif()
107
+
108
+ find_package(Python3 REQUIRED COMPONENTS Interpreter)
109
+
110
+ execute_process(
111
+ COMMAND "${Python3_EXECUTABLE}" -c
112
+ "import importlib.util, pathlib, sys; s=importlib.util.find_spec('ngsolve_openblas'); p=pathlib.Path(next(iter(s.submodule_search_locations))) if s and s.submodule_search_locations else None; libs=([*p.glob('libopenblas*.so*'), *p.glob('libgfortran*.so*')] if p and sys.platform.startswith('linux') else ([p/'openblas.lib'] if p and sys.platform.startswith('win') else [])); print(';'.join(str(x.resolve()) for x in libs if x.exists()))"
113
+ RESULT_VARIABLE _ngs_openblas_query_result
114
+ OUTPUT_VARIABLE _ngs_openblas_libraries
115
+ OUTPUT_STRIP_TRAILING_WHITESPACE
116
+ ERROR_VARIABLE _ngs_openblas_query_error
117
+ )
118
+
119
+ if(NOT _ngs_openblas_query_result EQUAL 0 OR NOT _ngs_openblas_libraries)
120
+ message(FATAL_ERROR
121
+ "NGSolve's ngs_lapack target contains stale ngsolve_openblas paths, "
122
+ "but the active Python environment does not provide usable OpenBLAS "
123
+ "libraries. Python error: ${_ngs_openblas_query_error}")
124
+ endif()
125
+
126
+ message(STATUS
127
+ "Relocating NGSolve OpenBLAS link interface to: ${_ngs_openblas_libraries}")
128
+ set_property(TARGET ngs_lapack PROPERTY
129
+ INTERFACE_LINK_LIBRARIES "${_ngs_openblas_libraries}")
130
+ endfunction()
131
+ # -----------------------------------------------------------------------------
132
+
35
133
  ### ngstrefftz
36
134
 
37
135
  set(addon_name ngstrefftz)
38
136
  project(ngstrefftz)
39
137
  include_directories(SYSTEM ${CMAKE_SOURCE_DIR}/external_dependencies/ngstents/src) # SYSTEM to suppress warnings from headers
40
138
  include(${CMAKE_BINARY_DIR}/cmake_modules/ngsolve_addon.cmake)
139
+ ngstrefftz_relocate_ngsolve_openblas()
41
140
  add_ngsolve_addon(ngstrefftz
42
141
  ${CMAKE_SOURCE_DIR}/external_dependencies/ngstents/src/tents.cpp
43
142
  src/python_trefftz.cpp
@@ -90,98 +189,23 @@ endif()
90
189
  ### user options
91
190
  set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR} CACHE PATH "build dir")
92
191
  set(NGSTREFFTZ_USE_GTEST OFF CACHE BOOL "Try to use gtest")
93
- set(NGSTREFFTZ_USE_MKL ${NGSOLVE_USE_MKL} CACHE BOOL "Try to use mkl")
94
- set(NGSTREFFTZ_USE_LAPACK ${NGSOLVE_USE_LAPACK} CACHE BOOL "Try to use lapack from ngsolve")
95
-
96
- ### link LAPACK or MKL if possible
97
- if (NGSTREFFTZ_USE_MKL)
98
- download_if_possible(
99
- "https://raw.githubusercontent.com/NGSolve/ngsolve/master/cmake/cmake_modules/FindMKL.cmake"
100
- "${CMAKE_BINARY_DIR}/cmake_modules/FindMKL.cmake")
101
-
102
- #file(COPY ${CMAKE_SOURCE_DIR}/FindMKL.cmake DESTINATION
103
- #"${CMAKE_BINARY_DIR}/cmake_modules/FindMKL.cmake")
104
-
105
- #message(STATUS "MKL_ROOT=${MKL_ROOT}")
106
- #message(STATUS "NGSOLVED=${NGSolve_DIR}")
107
-
108
- #set(PIP_MKL_ROOT FALSE CACHE BOOL "Set to true if MKL_ROOT is set by pip")
109
- #message(STATUS "PIP_MKL_ROOT=${PIP_MKL_ROOT}")
110
- #if(PIP_MKL_ROOT AND LINUX)
111
- #set(MKL_ROOT "${NGSolve_DIR}/../../.." CACHE PATH "MKL root directory" )
112
- #set(MKL_LIBRARY "${MKL_ROOT}/lib/libmkl_rt.so.2" CACHE PATH "MKL library" )
113
- #set(MKL_INCLUDE_DIR "${MKL_ROOT}/include" CACHE PATH "MKL include directory" )
114
- #message(STATUS "set MKL_LIBRARY=${MKL_LIBRARY}")
115
- #elseif(PIP_MKL_ROOT AND WIN32)
116
- #set(MKL_ROOT "${NGSolve_DIR}/../../../.." CACHE PATH "MKL root directory" )
117
- #set(MKL_LIBRARY "${MKL_ROOT}/Library/lib/mkl_rt.lib" CACHE PATH "MKL library" )
118
- #set(MKL_INCLUDE_DIR "${MKL_ROOT}/Library/include" CACHE PATH "MKL include directory" )
119
- #endif()
120
-
121
- set(MKL_ARCH "intel64")
122
- if(NOT MKL_INTERFACE)
123
- set(MKL_INTERFACE "lp64")
124
- endif(NOT MKL_INTERFACE)
125
- set(MKL_MULTI_THREADED ON CACHE BOOL "Use threaded MKL libs")
126
- if(NOT MKL_MULTI_THREADED)
127
- set(MKL_THREADING sequential)
128
- endif()
129
- set(MKL_STATIC OFF CACHE BOOL "Link static MKL")
130
- set(MKL_SDL ON CACHE BOOL "Link single dynamic MKL lib")
131
- if(NOT MKL_LINK)
132
- if(MKL_STATIC)
133
- set(MKL_LINK static)
134
- elseif(MKL_SDL)
135
- set(MKL_LINK sdl)
136
- else()
137
- set(MKL_LINK dynamic)
138
- endif()
139
- endif()
192
+ set(NGSTREFFTZ_USE_LAPACK ${NGSOLVE_USE_LAPACK} CACHE BOOL
193
+ "Use the BLAS/LAPACK backend exported by NGSolve")
194
+ set(NGSTREFFTZ_USE_MKL ${NGSOLVE_USE_MKL})
140
195
 
141
- file(WRITE ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/findmklconf.py "from contextlib import suppress;import importlib.metadata; [print( f.locate().parent.resolve().absolute().as_posix()) if f.match('MKLConfig.cmake') else 0 for f in importlib.metadata.files('mkl-devel')]")
142
- execute_process(COMMAND ${Python3_EXECUTABLE} ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/findmklconf.py ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE OUTPUT_VARIABLE MKL_CONF_FROM_PY)
143
- if(MKL_CONF_FROM_PY)
144
- message(STATUS "MKL_CONF_FROM_PY=${MKL_CONF_FROM_PY}")
145
- message(STATUS "pylibdir=${python3_library_dir}")
146
- set(MKL_ROOT ${MKL_CONF_FROM_PY}/../../.. CACHE PATH "MKL root directory" )
147
- set(MKL_LIBRARY ${MKL_ROOT}/lib/libmkl_rt.so.2 CACHE PATH "MKL library" )
148
- set(MKL_INCLUDE_DIR ${MKL_ROOT}/include CACHE PATH "MKL include directory" )
196
+ ### use the LAPACK backend exported by NGSolve hopefully...
197
+ if(NGSTREFFTZ_USE_LAPACK)
198
+ if(NOT NGSOLVE_USE_LAPACK)
199
+ message(FATAL_ERROR "NGSTREFFTZ_USE_LAPACK=ON, but NGSolve was built without LAPACK")
200
+ elseif(NOT TARGET ngs_lapack)
201
+ message(FATAL_ERROR "NGSolve reports LAPACK support, but did not export the ngs_lapack target")
149
202
  endif()
150
- #set(MKL_VERSION_H "${MKL_ROOT}/include/mkl_version.h")
151
-
152
- #set(d lib/cmake/mkl)
153
- #find_package(MKL CONFIG REQUIRED HINTS ${MKL_CONF} ${MKL_ROOT}/${d} PATHS /opt/intel/oneapi/mkl/latest/${d} ~/.local/${d})
154
-
155
- unset(USE_MPI CACHE)
156
- find_package(MKL)
157
-
158
- #if(USE_MUMPS)
159
- ## include scalapack
160
- #set( LAPACK_LIBRARIES "${MKL_LIBRARIES}")
161
- #set( ENABLE_SCALAPACK ON)
162
- #else(USE_MUMPS)
163
- #set( LAPACK_LIBRARIES "${MKL_MINIMAL_LIBRARIES}")
164
- #endif(USE_MUMPS)
165
-
166
- if(MKL_FOUND)
167
- message(STATUS "Found MKL_MINIMAL_LIBRARIES=${MKL_MINIMAL_LIBRARIES}")
168
- set( LAPACK_LIBRARIES "${MKL_MINIMAL_LIBRARIES}")
169
- else()
170
- message("${Red}MKL not found!${ColourReset}")
171
- endif()
172
- endif (NGSTREFFTZ_USE_MKL)
173
- if(NGSTREFFTZ_USE_LAPACK AND NOT LAPACK_LIBRARIES)
174
- message(STATUS "Looking for LAPACK")
175
- find_package(LAPACK)
176
- endif(NGSTREFFTZ_USE_LAPACK AND NOT LAPACK_LIBRARIES)
177
- if(LAPACK_LIBRARIES)
178
- #target_link_libraries(ngstrefftz PRIVATE $<BUILD_INTERFACE:ngs_lapack>)
179
- message(STATUS "Linking with LAPACK_LIBRARIES=${LAPACK_LIBRARIES}")
180
- target_link_libraries(ngstrefftz PRIVATE ${LAPACK_LIBRARIES})
203
+ message(STATUS "Linking NGSTrefftz against the NGSolve ngs_lapack target")
204
+ target_link_libraries(ngstrefftz PRIVATE ngs_lapack)
181
205
  target_compile_definitions(ngstrefftz PRIVATE NGSTREFFTZ_USE_LAPACK)
182
- else(LAPACK_LIBRARIES)
183
- message("${Red}LAPACK not found, restricted usage${ColourReset}")
184
- endif(LAPACK_LIBRARIES)
206
+ else()
207
+ message(WARNING "LAPACK disabled for NGSTrefftz, restricted usage!")
208
+ endif()
185
209
 
186
210
  ### doc
187
211
  option(NGSTREFFTZ_BUILD_DOC "Build documentation" OFF)
@@ -247,11 +271,10 @@ if(NGSTREFFTZ_USE_GTEST)
247
271
  find_package(GTest REQUIRED)
248
272
  include(GoogleTest)
249
273
  if(CMAKE_VERSION VERSION_GREATER_EQUAL "3.18")
250
- find_package(Python3 REQUIRED COMPONENTS Development.Embed)
274
+ find_package(Python3 REQUIRED COMPONENTS Interpreter Development.Embed)
251
275
  endif()
252
- add_executable(trefftz_gtest
253
- ${CMAKE_SOURCE_DIR}/test/embtrefftz_gtest.cpp
254
- )
276
+ add_executable(trefftz_gtest ${CMAKE_SOURCE_DIR}/test/embtrefftz_gtest.cpp)
277
+
255
278
  target_include_directories(trefftz_gtest BEFORE PRIVATE
256
279
  $<TARGET_PROPERTY:ngsolve,INTERFACE_INCLUDE_DIRECTORIES>
257
280
  ${CMAKE_SOURCE_DIR}/src
@@ -262,9 +285,12 @@ if(NGSTREFFTZ_USE_GTEST)
262
285
  ngsolve
263
286
  ngstrefftz
264
287
  )
288
+ if(TARGET ngs_lapack)
289
+ target_link_libraries(trefftz_gtest PRIVATE ngs_lapack)
290
+ endif()
265
291
  set_target_properties(trefftz_gtest PROPERTIES
266
292
  PREFIX ""
267
- CXX_STANDARD 17
293
+ CXX_STANDARD 20
268
294
  CXX_STANDARD_REQUIRED ON
269
295
  )
270
296
  gtest_add_tests(TARGET trefftz_gtest)
@@ -1,15 +1,13 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: ngstrefftz
3
- Version: 0.3.2602.dev11
3
+ Version: 0.3.2604.dev5
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)
7
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
- Requires-Dist: mkl<2026.0,>=2024; platform_system != "Darwin"
11
- Requires-Dist: mkl-devel<2026.0,>=2024; platform_system != "Darwin"
12
- Requires-Dist: ngsolve==6.2.2603
10
+ Requires-Dist: ngsolve==6.2.2605
13
11
  Description-Content-Type: text/markdown
14
12
 
15
13
  # NGSTrefftz
@@ -25,10 +23,15 @@ Description-Content-Type: text/markdown
25
23
  NGSTrefftz provides a framework to implement Trefftz finite element spaces for [NGSolve](https://www.ngsolve.org), with several Trefftz spaces already implemented. Additionally, Trefftz-DG on tent-pitched meshes for the acoustic wave equation is implemented using meshes provided by [ngstents](https://github.com/jayggg/ngstents). Furthermore, the package includes an implementation of the embedded Trefftz method.
26
24
 
27
25
  ## Try it out!
28
- You can try out some jupyter notebooks:
29
- * Launch the Binder here:
30
- [![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/PaulSt/NGSTrefftz/HEAD?filepath=docs%2Fnotebooks%2Findex.ipynb)
31
- * Or run the docker locally (you need to have docker installed):
26
+ The documentation is available here:
27
+
28
+ [![docs](https://img.shields.io/badge/docs-NGSTrefftz-blue?logo=readthedocs)](https://paulst.github.io/NGSTrefftz/)
29
+
30
+ You can also try the example notebooks directly in Binder:
31
+
32
+ [![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/PaulSt/NGSTrefftz/HEAD?filepath=docs%2Fnotebooks%2Findex.ipynb)
33
+
34
+ or run them locally using Docker:
32
35
 
33
36
  ```bash
34
37
  git clone https://github.com/PaulSt/NGSTrefftz
@@ -36,43 +39,40 @@ cd NGSTrefftz && docker build -t ngstrefftz_jupyter .
36
39
  docker run -p 8888:8888 ngstrefftz_jupyter
37
40
  ```
38
41
 
39
- ## Installing the package
40
- You can either:
41
- * install using pip
42
-
42
+ ## Installation
43
+ The recommended installation is via pip:
43
44
  ```bash
44
45
  pip install ngstrefftz
45
46
  ```
46
-
47
- * or build from source
48
-
47
+ Alternatively, to build NGSTrefftz from source:
49
48
  ```bash
50
49
  git clone --recursive https://github.com/PaulSt/NGSTrefftz
51
50
  mkdir ./NGSTrefftz/make && cd ./NGSTrefftz/make
52
51
  cmake ../ && make install
53
52
  ```
53
+ When building from source, the following dependencies are required:
54
54
 
55
- ### Dependencies
56
- * if you are using pip to install the package you can install the newest ngsolve and other dependencies using
57
- ```bash
58
- pip install ngsolve --pre
59
- ```
60
- * if you build the package from source the following software needs to be installed
61
- * [cmake](https://cmake.org/) >= 3.1
62
- * [gcc](https://gcc.gnu.org/) >= 9 or [clang](https://clang.llvm.org/) >= 10
63
- * [lapack](http://www.netlib.org/lapack/) >= 3.9 (required to access the newest features)
64
- * [ngsolve](https://www.ngsolve.org) >= 6.2 (to access the newest features the nightly version of NGSolve works best)
55
+ * [cmake](https://cmake.org/) >= 3.1
56
+ * [gcc](https://gcc.gnu.org/) >= 9 or [clang](https://clang.llvm.org/) >= 10
57
+ * [lapack](http://www.netlib.org/lapack/) >= 3.9
58
+ * [ngsolve](https://www.ngsolve.org) >= 6.2
59
+
60
+ For access to the newest features, the nightly version of NGSolve usually works best.
65
61
 
66
62
  ## News
63
+ 🚀 Jan, 2026: [Trefftz Workshop](https://trefftz2026.univie.ac.at/) will be held on 7-9 September 2026 in Vienna, Austria
64
+
67
65
  ⚠️ Apr, 2025: `TrefftzEmbedding` has a new interface, please check the documentation for details.
68
66
 
69
- 🚀 Jul, 2024: Conforming Trefftz embedding implementation by [@johann-cm](https://github.com/johann-cm)
67
+ 🚀 Jul, 2024: Conforming Trefftz embedding implementation by [@johann-cm](https://github.com/johann-cm) with examples in [ngstSpaceKit](https://codeberg.org/johann-cm/ngstspacekit)
68
+ <details>
69
+ <summary>Older news</summary>
70
70
 
71
71
  ⚠️ Oct, 2022: With v0.2.0 the git history has undergone a major cleanup, please make sure to clone the repo anew.
72
72
 
73
73
  🚀 Oct, 2022: New and improved implementation of the embedded Trefftz method via `EmbeddedTrefftzFES`!
74
74
 
75
- 🚀 Aug, 2022: Three different [pip](https://pypi.org/search/?q=ngstrefftz)-installer available, now using wheels!
75
+ 🚀 Aug, 2022: [pip](https://pypi.org/search/?q=ngstrefftz)-installer available, now using wheels!
76
76
 
77
77
  🚀 Mar, 2022: NGSTrefftz now has a [website](https://paulst.github.io/NGSTrefftz/)!
78
78
 
@@ -81,8 +81,49 @@ pip install ngsolve --pre
81
81
  🚀 Jan, 2022: NGSTrefftz is now available via pip!
82
82
 
83
83
  🚀 Nov, 2021: NGSTrefftz now comes in a docker and with binder notebooks!
84
+ </details>
85
+
86
+ ## Publications and citation
87
+
88
+ If you are using `ngstrefftz` in your academic work, please consider citing the JOSS paper:
89
+
90
+ ```
91
+ @article{Stocker2022NGSTrefftz,
92
+ author = {Stocker, Paul},
93
+ title = {{NGSTrefftz}: Add-on to {NGSolve} for {Trefftz} methods},
94
+ journal = {Journal of Open Source Software},
95
+ year = {2022},
96
+ volume = {7},
97
+ number = {71},
98
+ pages = {4135},
99
+ doi = {10.21105/joss.04135}
100
+ }
101
+ ```
84
102
 
85
- ## Publications using the code
103
+ <details>
104
+ <summary><h3>Publications using NGSTrefftz</h3></summary>
105
+
106
+ * *Embedded Trefftz DG method for steady Navier-Stokes flow. Part II: Nonlinear problem*
107
+ Paul Stocker, Igor Voulis, Christoph Lehrenfeld, Philip L. Lederer
108
+ [![arXiv](https://img.shields.io/badge/arXiv-2606.13219-b31b1b.svg)](https://arxiv.org/abs/2606.13219)
109
+ * *Embedded Trefftz DG method for steady Navier-Stokes flow. Part I: Oseen linearization*
110
+ Paul Stocker, Igor Voulis, Christoph Lehrenfeld, Philip L. Lederer
111
+ [![arXiv](https://img.shields.io/badge/arXiv-2606.13229-b31b1b.svg)](https://arxiv.org/abs/2606.13229)
112
+ * *Embedded Trefftz DG method for reaction-diffusion problems on anisotropic meshes*
113
+ Sergio Gómez, Chiara Perinati, Paul Stocker, Igor Voulis
114
+ [![arXiv](https://img.shields.io/badge/arXiv-2606.03845-b31b1b.svg)](https://arxiv.org/abs/2606.03845)
115
+ * *Discontinuous Galerkin Trefftz Methods for Model Reduction of Wave Phenomena*
116
+ Tobias Born, Karsten Urban
117
+ [PAMM article](https://doi.org/10.1002/pamm.70155)
118
+ * *Releasing the pressure: High-order surface flow discretizations via discrete Helmholtz–Hodge decompositions*
119
+ Tim Brüers, Christoph Lehrenfeld, Tim van Beeck, Max Wardetzky
120
+ [![arXiv](https://img.shields.io/badge/arXiv-2603.27714-b31b1b.svg)](https://arxiv.org/abs/2603.27714)
121
+ * *A discontinuous Galerkin method for elliptic-hyperbolic equations*
122
+ Chiara Perinati, Lise-Marie Imbert-Gérard, Andrea Moiola, Paul Stocker
123
+ [![arXiv](https://img.shields.io/badge/arXiv-2604.06910-b31b1b.svg)](https://arxiv.org/abs/2604.06910)
124
+ * *Embedded Trefftz DG method for the Helmholtz equation*
125
+ Paul Stocker, Igor Voulis
126
+ [![arXiv](https://img.shields.io/badge/arXiv-2603.13034-b31b1b.svg)](https://arxiv.org/abs/2603.13034)
86
127
  * *A unified framework for Trefftz-like discretization methods*
87
128
  Philip L. Lederer, Christoph Lehrenfeld, Paul Stocker, Igor Voulis
88
129
  [![arXiv](https://img.shields.io/badge/arXiv-2412.00806-b31b1b.svg)](https://arxiv.org/abs/2412.00806)
@@ -107,14 +148,11 @@ Lise-Marie Imbert-Gérard, Andrea Moiola, Paul Stocker
107
148
  * *Tent pitching and Trefftz-DG method for the acoustic wave equation*
108
149
  Ilaria Perugia, Joachim Schöberl, Paul Stocker, Christoph Wintersteiger
109
150
  [![arXiv](https://img.shields.io/badge/arXiv-1907.02367-b31b1b.svg)](https://arxiv.org/abs/1907.02367)
151
+ * *On the Conforming Trefftz Finite Element Method and Applications*
152
+ Johann Carl Meyer, [Master's thesis](https://doi.org/10.5281/zenodo.17307511)
110
153
  * *Space-time Trefftz DG methods for parabolic PDEs*
111
154
  Constanze Heil, [Master's thesis](https://doi.org/10.25625/ZSA8UU/2L4C1E)
112
155
  * *Embedded Trefftz Trace DG Methods for PDEs on unfitted Surfaces*
113
156
  Erik Schlesinger, [Master's thesis](https://doi.org/10.25625/QTOPWD/93ZYRQ)
114
157
 
115
-
116
- If you are using `ngstrefftz` in your academic work, please consider citing
117
- ```
118
- Stocker, P., (2022). NGSTrefftz: Add-on to NGSolve for Trefftz methods.
119
- Journal of Open Source Software, 7(71), 4135, https://doi.org/10.21105/joss.04135
120
- ```
158
+ </details>
@@ -11,10 +11,15 @@
11
11
  NGSTrefftz provides a framework to implement Trefftz finite element spaces for [NGSolve](https://www.ngsolve.org), with several Trefftz spaces already implemented. Additionally, Trefftz-DG on tent-pitched meshes for the acoustic wave equation is implemented using meshes provided by [ngstents](https://github.com/jayggg/ngstents). Furthermore, the package includes an implementation of the embedded Trefftz method.
12
12
 
13
13
  ## Try it out!
14
- You can try out some jupyter notebooks:
15
- * Launch the Binder here:
16
- [![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/PaulSt/NGSTrefftz/HEAD?filepath=docs%2Fnotebooks%2Findex.ipynb)
17
- * Or run the docker locally (you need to have docker installed):
14
+ The documentation is available here:
15
+
16
+ [![docs](https://img.shields.io/badge/docs-NGSTrefftz-blue?logo=readthedocs)](https://paulst.github.io/NGSTrefftz/)
17
+
18
+ You can also try the example notebooks directly in Binder:
19
+
20
+ [![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/PaulSt/NGSTrefftz/HEAD?filepath=docs%2Fnotebooks%2Findex.ipynb)
21
+
22
+ or run them locally using Docker:
18
23
 
19
24
  ```bash
20
25
  git clone https://github.com/PaulSt/NGSTrefftz
@@ -22,43 +27,40 @@ cd NGSTrefftz && docker build -t ngstrefftz_jupyter .
22
27
  docker run -p 8888:8888 ngstrefftz_jupyter
23
28
  ```
24
29
 
25
- ## Installing the package
26
- You can either:
27
- * install using pip
28
-
30
+ ## Installation
31
+ The recommended installation is via pip:
29
32
  ```bash
30
33
  pip install ngstrefftz
31
34
  ```
32
-
33
- * or build from source
34
-
35
+ Alternatively, to build NGSTrefftz from source:
35
36
  ```bash
36
37
  git clone --recursive https://github.com/PaulSt/NGSTrefftz
37
38
  mkdir ./NGSTrefftz/make && cd ./NGSTrefftz/make
38
39
  cmake ../ && make install
39
40
  ```
41
+ When building from source, the following dependencies are required:
40
42
 
41
- ### Dependencies
42
- * if you are using pip to install the package you can install the newest ngsolve and other dependencies using
43
- ```bash
44
- pip install ngsolve --pre
45
- ```
46
- * if you build the package from source the following software needs to be installed
47
- * [cmake](https://cmake.org/) >= 3.1
48
- * [gcc](https://gcc.gnu.org/) >= 9 or [clang](https://clang.llvm.org/) >= 10
49
- * [lapack](http://www.netlib.org/lapack/) >= 3.9 (required to access the newest features)
50
- * [ngsolve](https://www.ngsolve.org) >= 6.2 (to access the newest features the nightly version of NGSolve works best)
43
+ * [cmake](https://cmake.org/) >= 3.1
44
+ * [gcc](https://gcc.gnu.org/) >= 9 or [clang](https://clang.llvm.org/) >= 10
45
+ * [lapack](http://www.netlib.org/lapack/) >= 3.9
46
+ * [ngsolve](https://www.ngsolve.org) >= 6.2
47
+
48
+ For access to the newest features, the nightly version of NGSolve usually works best.
51
49
 
52
50
  ## News
51
+ 🚀 Jan, 2026: [Trefftz Workshop](https://trefftz2026.univie.ac.at/) will be held on 7-9 September 2026 in Vienna, Austria
52
+
53
53
  ⚠️ Apr, 2025: `TrefftzEmbedding` has a new interface, please check the documentation for details.
54
54
 
55
- 🚀 Jul, 2024: Conforming Trefftz embedding implementation by [@johann-cm](https://github.com/johann-cm)
55
+ 🚀 Jul, 2024: Conforming Trefftz embedding implementation by [@johann-cm](https://github.com/johann-cm) with examples in [ngstSpaceKit](https://codeberg.org/johann-cm/ngstspacekit)
56
+ <details>
57
+ <summary>Older news</summary>
56
58
 
57
59
  ⚠️ Oct, 2022: With v0.2.0 the git history has undergone a major cleanup, please make sure to clone the repo anew.
58
60
 
59
61
  🚀 Oct, 2022: New and improved implementation of the embedded Trefftz method via `EmbeddedTrefftzFES`!
60
62
 
61
- 🚀 Aug, 2022: Three different [pip](https://pypi.org/search/?q=ngstrefftz)-installer available, now using wheels!
63
+ 🚀 Aug, 2022: [pip](https://pypi.org/search/?q=ngstrefftz)-installer available, now using wheels!
62
64
 
63
65
  🚀 Mar, 2022: NGSTrefftz now has a [website](https://paulst.github.io/NGSTrefftz/)!
64
66
 
@@ -67,8 +69,49 @@ pip install ngsolve --pre
67
69
  🚀 Jan, 2022: NGSTrefftz is now available via pip!
68
70
 
69
71
  🚀 Nov, 2021: NGSTrefftz now comes in a docker and with binder notebooks!
72
+ </details>
73
+
74
+ ## Publications and citation
75
+
76
+ If you are using `ngstrefftz` in your academic work, please consider citing the JOSS paper:
77
+
78
+ ```
79
+ @article{Stocker2022NGSTrefftz,
80
+ author = {Stocker, Paul},
81
+ title = {{NGSTrefftz}: Add-on to {NGSolve} for {Trefftz} methods},
82
+ journal = {Journal of Open Source Software},
83
+ year = {2022},
84
+ volume = {7},
85
+ number = {71},
86
+ pages = {4135},
87
+ doi = {10.21105/joss.04135}
88
+ }
89
+ ```
70
90
 
71
- ## Publications using the code
91
+ <details>
92
+ <summary><h3>Publications using NGSTrefftz</h3></summary>
93
+
94
+ * *Embedded Trefftz DG method for steady Navier-Stokes flow. Part II: Nonlinear problem*
95
+ Paul Stocker, Igor Voulis, Christoph Lehrenfeld, Philip L. Lederer
96
+ [![arXiv](https://img.shields.io/badge/arXiv-2606.13219-b31b1b.svg)](https://arxiv.org/abs/2606.13219)
97
+ * *Embedded Trefftz DG method for steady Navier-Stokes flow. Part I: Oseen linearization*
98
+ Paul Stocker, Igor Voulis, Christoph Lehrenfeld, Philip L. Lederer
99
+ [![arXiv](https://img.shields.io/badge/arXiv-2606.13229-b31b1b.svg)](https://arxiv.org/abs/2606.13229)
100
+ * *Embedded Trefftz DG method for reaction-diffusion problems on anisotropic meshes*
101
+ Sergio Gómez, Chiara Perinati, Paul Stocker, Igor Voulis
102
+ [![arXiv](https://img.shields.io/badge/arXiv-2606.03845-b31b1b.svg)](https://arxiv.org/abs/2606.03845)
103
+ * *Discontinuous Galerkin Trefftz Methods for Model Reduction of Wave Phenomena*
104
+ Tobias Born, Karsten Urban
105
+ [PAMM article](https://doi.org/10.1002/pamm.70155)
106
+ * *Releasing the pressure: High-order surface flow discretizations via discrete Helmholtz–Hodge decompositions*
107
+ Tim Brüers, Christoph Lehrenfeld, Tim van Beeck, Max Wardetzky
108
+ [![arXiv](https://img.shields.io/badge/arXiv-2603.27714-b31b1b.svg)](https://arxiv.org/abs/2603.27714)
109
+ * *A discontinuous Galerkin method for elliptic-hyperbolic equations*
110
+ Chiara Perinati, Lise-Marie Imbert-Gérard, Andrea Moiola, Paul Stocker
111
+ [![arXiv](https://img.shields.io/badge/arXiv-2604.06910-b31b1b.svg)](https://arxiv.org/abs/2604.06910)
112
+ * *Embedded Trefftz DG method for the Helmholtz equation*
113
+ Paul Stocker, Igor Voulis
114
+ [![arXiv](https://img.shields.io/badge/arXiv-2603.13034-b31b1b.svg)](https://arxiv.org/abs/2603.13034)
72
115
  * *A unified framework for Trefftz-like discretization methods*
73
116
  Philip L. Lederer, Christoph Lehrenfeld, Paul Stocker, Igor Voulis
74
117
  [![arXiv](https://img.shields.io/badge/arXiv-2412.00806-b31b1b.svg)](https://arxiv.org/abs/2412.00806)
@@ -93,14 +136,11 @@ Lise-Marie Imbert-Gérard, Andrea Moiola, Paul Stocker
93
136
  * *Tent pitching and Trefftz-DG method for the acoustic wave equation*
94
137
  Ilaria Perugia, Joachim Schöberl, Paul Stocker, Christoph Wintersteiger
95
138
  [![arXiv](https://img.shields.io/badge/arXiv-1907.02367-b31b1b.svg)](https://arxiv.org/abs/1907.02367)
139
+ * *On the Conforming Trefftz Finite Element Method and Applications*
140
+ Johann Carl Meyer, [Master's thesis](https://doi.org/10.5281/zenodo.17307511)
96
141
  * *Space-time Trefftz DG methods for parabolic PDEs*
97
142
  Constanze Heil, [Master's thesis](https://doi.org/10.25625/ZSA8UU/2L4C1E)
98
143
  * *Embedded Trefftz Trace DG Methods for PDEs on unfitted Surfaces*
99
144
  Erik Schlesinger, [Master's thesis](https://doi.org/10.25625/QTOPWD/93ZYRQ)
100
145
 
101
-
102
- If you are using `ngstrefftz` in your academic work, please consider citing
103
- ```
104
- Stocker, P., (2022). NGSTrefftz: Add-on to NGSolve for Trefftz methods.
105
- Journal of Open Source Software, 7(71), 4135, https://doi.org/10.21105/joss.04135
106
- ```
146
+ </details>
@@ -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.2602.dev11'
22
- __version_tuple__ = version_tuple = (0, 3, 2602, 'dev11')
21
+ __version__ = version = '0.3.2604.dev5'
22
+ __version_tuple__ = version_tuple = (0, 3, 2604, 'dev5')
23
23
 
24
- __commit_id__ = commit_id = 'gc40007fb1'
24
+ __commit_id__ = commit_id = 'g2374c3cb2'
@@ -315,7 +315,7 @@
315
315
  "PP, uf = TrefftzStokesEmb(fes, rhs)\n",
316
316
  "PPT = PP.CreateTranspose()\n",
317
317
  "TA = PPT @ a.mat @ PP\n",
318
- "Tgfu = TA.Inverse(inverse=\"pardiso\") * (PPT * (f.vec - a.mat * uf))\n",
318
+ "Tgfu = TA.Inverse() * (PPT * (f.vec - a.mat * uf))\n",
319
319
  "gfu = GridFunction(fes)\n",
320
320
  "gfu.vec.data = PP * Tgfu + uf"
321
321
  ]
@@ -11,6 +11,7 @@ nbconvert>=7.16.4
11
11
  nbformat>=5.10.4
12
12
  nbsphinx>=0.8.9
13
13
  notebook>=7.2.0
14
+ anywidget>=0.6.0
14
15
 
15
16
  Sphinx>=7.3.7
16
17
  sphinx-rtd-theme>=2.0.0
@@ -22,5 +23,4 @@ numpy>=2.0.0
22
23
  scipy>=1.13.1
23
24
  webgui-jupyter-widgets>=0.2.35
24
25
 
25
- #ngstrefftz==0.3.2506
26
- xfem==2.1.2603
26
+ #xfem==2.1.2605