ngstrefftz 0.3.2505.dev25__tar.gz → 0.3.2506.dev2__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 (152) hide show
  1. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/CMakeLists.txt +22 -4
  2. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/PKG-INFO +2 -2
  3. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/_version.py +3 -3
  4. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/docs/requirements.txt +2 -2
  5. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/pyproject.toml +2 -2
  6. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/src/embtrefftz.cpp +34 -41
  7. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/src/embtrefftz.hpp +1 -3
  8. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/src/trefftzfespace.cpp +2 -2
  9. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/src/trefftzfespace.hpp +2 -1
  10. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/.clang-format +0 -0
  11. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/.github/workflows/build.yml +0 -0
  12. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/.github/workflows/fix_auditwheel_policy.py +0 -0
  13. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/.github/workflows/pyodide/Dockerfile +0 -0
  14. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/.github/workflows/pyodide/build_in_docker.sh +0 -0
  15. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/.github/workflows/pyodide/merge.py +0 -0
  16. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/.github/workflows/pyodide/requirements.txt +0 -0
  17. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/.gitignore +0 -0
  18. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/.gitmodules +0 -0
  19. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/CONTRIBUTING.md +0 -0
  20. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/Dockerfile +0 -0
  21. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/LICENSE +0 -0
  22. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/README.md +0 -0
  23. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/docs/Doxyfile.in +0 -0
  24. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/docs/_static/breadcrumbs.html +0 -0
  25. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/docs/_static/css/mytheme.css +0 -0
  26. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/docs/conf.py +0 -0
  27. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/docs/contrib.rst +0 -0
  28. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/docs/docu.rst +0 -0
  29. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/docs/index.rst +0 -0
  30. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/docs/intro.rst +0 -0
  31. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/docs/notebooks/embTrefftz-adv.ipynb +0 -0
  32. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/docs/notebooks/embTrefftz-helm.ipynb +0 -0
  33. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/docs/notebooks/embTrefftz-poi.ipynb +0 -0
  34. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/docs/notebooks/embTrefftz-stokes.ipynb +0 -0
  35. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/docs/notebooks/embTrefftz-wave.ipynb +0 -0
  36. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/docs/notebooks/embTrefftz.ipynb +0 -0
  37. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/docs/notebooks/helmholtz.ipynb +0 -0
  38. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/docs/notebooks/index.ipynb +0 -0
  39. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/docs/notebooks/laplace.ipynb +0 -0
  40. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/docs/notebooks/qtelliptic.ipynb +0 -0
  41. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/docs/notebooks/qtwave.ipynb +0 -0
  42. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/docs/notebooks/tunfitted.ipynb +0 -0
  43. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/docs/notebooks/twave.ipynb +0 -0
  44. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/docs/notebooks/twavetents.ipynb +0 -0
  45. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/docs/paper/codemeta.json +0 -0
  46. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/docs/paper/paper.bib +0 -0
  47. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/docs/paper/paper.md +0 -0
  48. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/docs/readme.rst +0 -0
  49. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/.github/workflows/build.yml +0 -0
  50. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/.gitignore +0 -0
  51. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/README.md +0 -0
  52. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/demo/advection/Advection_Periodic_Clipping.ipynb +0 -0
  53. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/demo/advection/advection2d.py +0 -0
  54. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/demo/advection/advection2d_periodic.py +0 -0
  55. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/demo/burgers/Burgers_Clipping.ipynb +0 -0
  56. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/demo/burgers/burgers1d.py +0 -0
  57. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/demo/burgers/burgers2d.py +0 -0
  58. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/demo/euler/Euler_Clipping.ipynb +0 -0
  59. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/demo/euler/euler2d.py +0 -0
  60. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/demo/euler/mach3_windtunnel.py +0 -0
  61. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/demo/maxwell/maxwell3d.py +0 -0
  62. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/demo/symbolic/symbolic_advection2d.py +0 -0
  63. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/demo/symbolic/symbolic_burgers.py +0 -0
  64. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/demo/symbolic/symbolic_euler.py +0 -0
  65. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/demo/symbolic/symbolic_wave.py +0 -0
  66. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/demo/symbolic/symbolic_wave1d_interface.py +0 -0
  67. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/demo/symbolic/wave_penetrable_cylinder.py +0 -0
  68. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/demo/tents/draw3dtent.py +0 -0
  69. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/demo/tents/draw3dvertex.py +0 -0
  70. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/demo/wave/horn.py +0 -0
  71. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/demo/wave/wave2d.py +0 -0
  72. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/demo/wave/wave2d_timedepbc.py +0 -0
  73. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/demo/wave/wave3d.py +0 -0
  74. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/docs/BurgersMTP.ipynb +0 -0
  75. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/docs/INDEX.ipynb +0 -0
  76. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/docs/StartPitching.ipynb +0 -0
  77. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/docs/_config.yml +0 -0
  78. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/docs/_toc.yml +0 -0
  79. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/docs/conf.py +0 -0
  80. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/docs/figs/CausalityCond.png +0 -0
  81. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/docs/figs/dag.png +0 -0
  82. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/docs/figs/map.png +0 -0
  83. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/docs/figs/subtents.png +0 -0
  84. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/docs/index.rst +0 -0
  85. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/docs/intro.md +0 -0
  86. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/docs/readme.rst +0 -0
  87. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/docs/requirements.txt +0 -0
  88. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/py/__init__.py +0 -0
  89. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/py/conslaw/__init__.py +0 -0
  90. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/py/utils/__init__.py +0 -0
  91. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/py/utils/_drawtents.py +0 -0
  92. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/py/utils/_drawtents2d.py +0 -0
  93. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/pyproject.toml +0 -0
  94. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/src/CMakeLists.txt +0 -0
  95. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/src/advection.cpp +0 -0
  96. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/src/burgers.cpp +0 -0
  97. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/src/concurrentqueue.h +0 -0
  98. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/src/conservationlaw.hpp +0 -0
  99. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/src/euler.cpp +0 -0
  100. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/src/maxwell.cpp +0 -0
  101. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/src/ngsolve_addon.cmake +0 -0
  102. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/src/paralleldepend.hpp +0 -0
  103. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/src/python_conslaw.cpp +0 -0
  104. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/src/python_tents.cpp +0 -0
  105. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/src/symbolic.cpp +0 -0
  106. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/src/tconservationlaw_tp_impl.hpp +0 -0
  107. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/src/tents.cpp +0 -0
  108. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/src/tents.hpp +0 -0
  109. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/src/tentsolver.hpp +0 -0
  110. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/src/tentsolver_impl.hpp +0 -0
  111. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/src/vis3d.cpp +0 -0
  112. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/src/vis3d.hpp +0 -0
  113. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/src/wave.cpp +0 -0
  114. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/tests/test_burgers_2D.py +0 -0
  115. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/tests/test_causal_tents.py +0 -0
  116. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/tests/test_conslaw.py +0 -0
  117. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/tests/test_tent_height_2D.py +0 -0
  118. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/tests/test_tentlayers.py +0 -0
  119. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/src/__init__.py +0 -0
  120. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/src/airy.cpp +0 -0
  121. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/src/boxintegral.cpp +0 -0
  122. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/src/boxintegral.hpp +0 -0
  123. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/src/condensedg.cpp +0 -0
  124. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/src/condensedg.hpp +0 -0
  125. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/src/diffopmapped.hpp +0 -0
  126. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/src/mesh1dtents.cpp +0 -0
  127. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/src/mesh1dtents.hpp +0 -0
  128. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/src/monomialfespace.cpp +0 -0
  129. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/src/monomialfespace.hpp +0 -0
  130. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/src/ngsttd.hpp +0 -0
  131. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/src/planewavefe.cpp +0 -0
  132. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/src/planewavefe.hpp +0 -0
  133. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/src/pufe.cpp +0 -0
  134. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/src/pufe.hpp +0 -0
  135. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/src/pufespace.cpp +0 -0
  136. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/src/pufespace.hpp +0 -0
  137. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/src/python_trefftz.cpp +0 -0
  138. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/src/scalarmappedfe.cpp +0 -0
  139. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/src/scalarmappedfe.hpp +0 -0
  140. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/src/specialcoefficientfunction.cpp +0 -0
  141. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/src/specialcoefficientfunction.hpp +0 -0
  142. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/src/specialintegrator.cpp +0 -0
  143. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/src/specialintegrator.hpp +0 -0
  144. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/src/twavetents.cpp +0 -0
  145. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/src/twavetents.hpp +0 -0
  146. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/test/boxint.py +0 -0
  147. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/test/conforming_trefftz.py +0 -0
  148. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/test/dg.py +0 -0
  149. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/test/embt.py +0 -0
  150. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/test/embtrefftz_gtest.cpp +0 -0
  151. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/test/tents.py +0 -0
  152. {ngstrefftz-0.3.2505.dev25 → ngstrefftz-0.3.2506.dev2}/test/trefftz.py +0 -0
@@ -10,8 +10,26 @@ if(NOT WIN32)
10
10
  set(BoldWhite "${Esc}[1;37m")
11
11
  endif()
12
12
 
13
+ function(download_if_possible url file)
14
+ get_filename_component(dir "${file}" DIRECTORY)
15
+ file(MAKE_DIRECTORY "${dir}")
16
+ file(DOWNLOAD "${url}" "${file}.tmp" STATUS status SHOW_PROGRESS TIMEOUT 10)
17
+ list(GET status 0 code)
18
+ if(NOT code EQUAL 0)
19
+ if(EXISTS "${file}")
20
+ message(WARNING "offline: using existing ${file}")
21
+ else()
22
+ message(FATAL_ERROR "failed to download ${file}")
23
+ endif()
24
+ else()
25
+ file(RENAME "${file}.tmp" "${file}")
26
+ endif()
27
+ endfunction()
28
+
13
29
  set(ngsolve_addon_commit_hash refs/heads/main)
14
- file(DOWNLOAD https://raw.githubusercontent.com/NGSolve/ngsolve-addon-template/${ngsolve_addon_commit_hash}/ngsolve_addon.cmake ${CMAKE_BINARY_DIR}/cmake_modules/ngsolve_addon.cmake)
30
+ download_if_possible (
31
+ "https://raw.githubusercontent.com/NGSolve/ngsolve-addon-template/${ngsolve_addon_commit_hash}/ngsolve_addon.cmake"
32
+ "${CMAKE_BINARY_DIR}/cmake_modules/ngsolve_addon.cmake")
15
33
  set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_BINARY_DIR}/cmake_modules)
16
34
 
17
35
  ### ngstrefftz
@@ -76,9 +94,9 @@ set(NGSTREFFTZ_USE_LAPACK ${NGSOLVE_USE_LAPACK} CACHE BOOL "Try to use lapack fr
76
94
 
77
95
  ### link LAPACK or MKL if possible
78
96
  if (NGSTREFFTZ_USE_MKL)
79
- file(DOWNLOAD
80
- https://raw.githubusercontent.com/NGSolve/ngsolve/master/cmake/cmake_modules/FindMKL.cmake
81
- ${CMAKE_BINARY_DIR}/cmake_modules/FindMKL.cmake)
97
+ download_if_possible(
98
+ "https://raw.githubusercontent.com/NGSolve/ngsolve/master/cmake/cmake_modules/FindMKL.cmake"
99
+ "${CMAKE_BINARY_DIR}/cmake_modules/FindMKL.cmake")
82
100
 
83
101
  #file(COPY ${CMAKE_SOURCE_DIR}/FindMKL.cmake DESTINATION
84
102
  #"${CMAKE_BINARY_DIR}/cmake_modules/FindMKL.cmake")
@@ -1,13 +1,13 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: ngstrefftz
3
- Version: 0.3.2505.dev25
3
+ Version: 0.3.2506.dev2
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.9
10
- Requires-Dist: ngsolve==6.2.2504
10
+ Requires-Dist: ngsolve==6.2.2506
11
11
  Description-Content-Type: text/markdown
12
12
 
13
13
  # NGSTrefftz
@@ -28,7 +28,7 @@ version_tuple: VERSION_TUPLE
28
28
  commit_id: COMMIT_ID
29
29
  __commit_id__: COMMIT_ID
30
30
 
31
- __version__ = version = '0.3.2505.dev25'
32
- __version_tuple__ = version_tuple = (0, 3, 2505, 'dev25')
31
+ __version__ = version = '0.3.2506.dev2'
32
+ __version_tuple__ = version_tuple = (0, 3, 2506, 'dev2')
33
33
 
34
- __commit_id__ = commit_id = 'ge7c6b8609'
34
+ __commit_id__ = commit_id = 'g6778f15df'
@@ -21,6 +21,6 @@ myst_parser>=3.0.1
21
21
  numpy>=2.0.0
22
22
  scipy>=1.13.1
23
23
  webgui-jupyter-widgets>=0.2.35
24
- #ngstrefftz==0.3.2504
24
+ #ngstrefftz==0.3.2506
25
25
  #ngsolve==6.2.2404.post22.dev0
26
- xfem==2.1.2504
26
+ xfem==2.1.2506
@@ -9,7 +9,7 @@ classifiers = [
9
9
  "License :: OSI Approved :: GNU Lesser General Public License v3 (LGPLv3)",
10
10
  ]
11
11
  dependencies = [
12
- "ngsolve==6.2.2504",
12
+ "ngsolve==6.2.2506",
13
13
  ]
14
14
 
15
15
 
@@ -18,7 +18,7 @@ Documentation = "https://paulst.github.io/NGSTrefftz"
18
18
  Repository = "https://github.com/PaulSt/ngstrefftz"
19
19
 
20
20
  [build-system]
21
- requires = ["ngsolve==6.2.2504",
21
+ requires = ["ngsolve==6.2.2506",
22
22
  "scikit-build-core>=0.9.0",
23
23
  "pybind11_stubgen",
24
24
  "setuptools>=45",
@@ -1,5 +1,6 @@
1
1
  #include "embtrefftz.hpp"
2
2
  #include "monomialfespace.hpp"
3
+ #include "trefftzfespace.hpp"
3
4
  #include <cfloat>
4
5
  #include <compressedfespace.hpp>
5
6
 
@@ -690,7 +691,8 @@ namespace ngcomp
690
691
  Vector<double> sing_val_max;
691
692
  Vector<double> sing_val_min;
692
693
  std::atomic<size_t> active_elements = 0;
693
- double check_conformity_max_deviation = 0.0;
694
+ double conformity_residual = 0.0;
695
+ double trefftz_residual = 0.0;
694
696
 
695
697
  auto ma = fes->GetMeshAccess ();
696
698
  const size_t num_elements = ma->GetNE (VOL);
@@ -758,15 +760,16 @@ namespace ngcomp
758
760
  size_t ndof = dofs.Size ();
759
761
  size_t ndof_test = dofs_test.Size ();
760
762
  size_t ndof_conforming = dofs_conforming.Size ();
761
- FlatMatrix<SCAL> elmat_A (ndof_test + ndof_conforming, ndof, lh);
762
- auto [elmat_Cl, elmat_L] = elmat_A.SplitRows (ndof_conforming);
763
763
 
764
+ FlatMatrix<SCAL> elmat_A (ndof_test + ndof_conforming, ndof, lh);
764
765
  FlatMatrix<SCAL> elmat_B (ndof_test + ndof_conforming,
765
766
  ndof_conforming, lh);
767
+ Matrix<SCAL> elmat_A_copy;
766
768
  elmat_A = static_cast<SCAL> (0.);
767
769
  elmat_B = static_cast<SCAL> (0.);
768
770
 
769
- // elmat_cr is a view into elamt_b
771
+ // split conformity part
772
+ auto [elmat_Cl, elmat_L] = elmat_A.SplitRows (ndof_conforming);
770
773
  auto elmat_Cr = elmat_B.Rows (ndof_conforming);
771
774
 
772
775
  // the diff. operator L operates only on volume terms
@@ -837,8 +840,7 @@ namespace ngcomp
837
840
 
838
841
  FlatMatrix<SCAL, ColMajor> UT (elmat_A.Height (), lh),
839
842
  V (elmat_A.Width (), lh);
840
- Matrix<SCAL> elmat_A_copy;
841
- if (fes_conformity && check_conformity > 0)
843
+ if (stats)
842
844
  elmat_A_copy = elmat_A;
843
845
  getSVD<SCAL> (elmat_A, UT, V);
844
846
 
@@ -859,25 +861,8 @@ namespace ngcomp
859
861
  // T_c solves A @ T_c = B,
860
862
  elmat_Tc = elmat_A_inv * elmat_B;
861
863
 
862
- double maxentry = 0.0;
863
- if (fes_conformity && check_conformity > 0)
864
- {
865
- Matrix<SCAL> test = elmat_A_copy * elmat_Tc - elmat_B;
866
- for (size_t i = 0; i < test.Height (); i++)
867
- for (size_t j = 0; j < test.Width (); j++)
868
- if (abs (test (i, j)) > maxentry)
869
- maxentry = abs (test (i, j));
870
- if (maxentry > check_conformity)
871
- throw Exception ((std::stringstream{}
872
- << "too many conformity constraints in "
873
- "Trefftz embedding, max entry: "
874
- << std::scientific << maxentry)
875
- .str ());
876
- }
877
-
878
864
  // if (get_range)
879
865
  // elmat_Tt = U.Cols (0, dofs.Size () - ndof_trefftz_i);
880
-
881
866
  if (fes_ip)
882
867
  {
883
868
  FlatMatrix<SCAL, ColMajor> Vtemp (V.Width (), V.Height (), lh);
@@ -929,18 +914,26 @@ namespace ngcomp
929
914
  sing_val_max[i] = max (sing_val_max[i], abs (diag (i)));
930
915
  sing_val_min[i] = min (sing_val_min[i], abs (diag (i)));
931
916
  }
932
- check_conformity_max_deviation
933
- = std::max (check_conformity_max_deviation, maxentry);
917
+ Matrix<SCAL> test = elmat_A_copy * elmat_Tc - elmat_B;
918
+ for (auto &cr : test.AsVector ())
919
+ if (abs (cr) > conformity_residual)
920
+ conformity_residual = abs (cr);
921
+ test = elmat_A_copy * elmat_Tt;
922
+ for (auto &tr : test.AsVector ())
923
+ if (abs (tr) > trefftz_residual)
924
+ trefftz_residual = abs (tr);
934
925
  }
935
926
  });
927
+
936
928
  if (stats)
937
929
  {
938
930
  sing_val_avg /= active_elements.load ();
939
931
  (*stats)["singavg"] = Vector<double> (sing_val_avg);
940
932
  (*stats)["singmax"] = Vector<double> (sing_val_max);
941
933
  (*stats)["singmin"] = Vector<double> (sing_val_min);
942
- (*stats)["conformity_deviation"]
943
- = Vector<double> ({ check_conformity_max_deviation });
934
+ (*stats)["conformity_residual"]
935
+ = Vector<double> ({ conformity_residual });
936
+ (*stats)["trefftz_residual"] = Vector<double> ({ trefftz_residual });
944
937
  }
945
938
 
946
939
  if constexpr (std::is_same_v<double, SCAL>)
@@ -963,13 +956,11 @@ namespace ngcomp
963
956
  size_t _ndof_trefftz, double _eps, shared_ptr<FESpace> _fes,
964
957
  shared_ptr<FESpace> _fes_test, shared_ptr<FESpace> _fes_conformity,
965
958
  shared_ptr<SumOfIntegrals> _fes_ip, shared_ptr<BitArray> _ignoredofs,
966
- shared_ptr<std::map<std::string, Vector<double>>> _stats,
967
- double _check_conformity)
959
+ shared_ptr<std::map<std::string, Vector<double>>> _stats)
968
960
  : top (_top), trhs (_trhs), cop (_cop), crhs (_crhs), fes_ip (_fes_ip),
969
- ignoredofs (_ignoredofs), stats (_stats),
970
- check_conformity (_check_conformity)
961
+ ignoredofs (_ignoredofs), stats (_stats)
971
962
  {
972
- if (_ndof_trefftz == 0)
963
+ if (_ndof_trefftz == std::numeric_limits<size_t>::max ())
973
964
  ndof_trefftz = _eps;
974
965
  else if (_eps == 0.0)
975
966
  ndof_trefftz = _ndof_trefftz;
@@ -1525,15 +1516,14 @@ void ExportEmbTrefftz (py::module m)
1525
1516
  shared_ptr<FESpace> fes_conformity,
1526
1517
  shared_ptr<SumOfIntegrals> fes_ip,
1527
1518
  shared_ptr<BitArray> ignoredofs,
1528
- optional<py::dict> pystats, double check_conformity) {
1519
+ optional<py::dict> pystats) {
1529
1520
  shared_ptr<std::map<std::string, Vector<double>>> stats = nullptr;
1530
1521
  if (pystats)
1531
1522
  stats = make_shared<std::map<std::string, Vector<double>>> ();
1532
1523
  std::shared_ptr<TrefftzEmbedding> emb
1533
1524
  = std::make_shared<TrefftzEmbedding> (
1534
1525
  top, trhs, cop, crhs, ndof_trefftz, eps, fes, fes_test,
1535
- fes_conformity, fes_ip, ignoredofs, stats,
1536
- check_conformity);
1526
+ fes_conformity, fes_ip, ignoredofs, stats);
1537
1527
  if (pystats)
1538
1528
  for (auto const &x : *stats)
1539
1529
  (*pystats)[py::cast (x.first)] = py::cast (x.second);
@@ -1562,15 +1552,14 @@ void ExportEmbTrefftz (py::module m)
1562
1552
  :param ignoredofs: BitArray of dofs from fes to be ignored in the embedding
1563
1553
  :param stats: optional dictionary to store statistics about the singular values,
1564
1554
  input dictionary is modified
1565
- :param check_conformity: if > 0 checks the viability of the conformity constraint
1566
1555
  )mydelimiter",
1567
1556
  py::arg ("top") = nullptr, py::arg ("trhs") = nullptr,
1568
1557
  py::arg ("cop") = nullptr, py::arg ("crhs") = nullptr,
1569
- py::arg ("ndof_trefftz") = 0, py::arg ("eps") = 0.0,
1570
- py::arg ("fes") = nullptr, py::arg ("fes_test") = nullptr,
1571
- py::arg ("fes_conformity") = nullptr, py::arg ("fes_ip") = nullptr,
1572
- py::arg ("ignoredofs") = nullptr, py::arg ("stats") = nullopt,
1573
- py::arg ("check_conformity") = 0.0) // py::none ())
1558
+ py::arg ("ndof_trefftz") = std::numeric_limits<size_t>::max (),
1559
+ py::arg ("eps") = 0.0, py::arg ("fes") = nullptr,
1560
+ py::arg ("fes_test") = nullptr, py::arg ("fes_conformity") = nullptr,
1561
+ py::arg ("fes_ip") = nullptr, py::arg ("ignoredofs") = nullptr,
1562
+ py::arg ("stats") = nullopt) // py::none ())
1574
1563
  .def ("Embed",
1575
1564
  static_cast<shared_ptr<BaseVector> (ngcomp::TrefftzEmbedding::*) (
1576
1565
  const shared_ptr<const BaseVector>) const> (
@@ -1617,6 +1606,7 @@ void ExportEmbTrefftz (py::module m)
1617
1606
  ExportETSpace<ngcomp::VectorL2FESpace> (m, "VectorL2EmbTrefftzFESpace");
1618
1607
  ExportETSpace<ngcomp::MonomialFESpace> (m, "MonomialEmbTrefftzFESpace");
1619
1608
  ExportETSpace<ngcomp::CompoundFESpace> (m, "CompoundEmbTrefftzFESpace");
1609
+ ExportETSpace<ngcomp::TrefftzFESpace> (m, "TrefftzEmbTrefftzFESpace");
1620
1610
 
1621
1611
  m.def (
1622
1612
  "EmbeddedTrefftzFES",
@@ -1636,6 +1626,9 @@ void ExportEmbTrefftz (py::module m)
1636
1626
  else if (dynamic_pointer_cast<ngcomp::CompoundFESpace> (fes))
1637
1627
  nfes = make_shared<
1638
1628
  ngcomp::EmbTrefftzFESpace<ngcomp::CompoundFESpace>> (emb);
1629
+ else if (dynamic_pointer_cast<ngcomp::TrefftzFESpace> (fes))
1630
+ nfes = make_shared<
1631
+ ngcomp::EmbTrefftzFESpace<ngcomp::TrefftzFESpace>> (emb);
1639
1632
  else
1640
1633
  throw Exception ("Unknown base fes");
1641
1634
  return nfes;
@@ -39,7 +39,6 @@ namespace ngcomp
39
39
  std::variant<size_t, double> ndof_trefftz;
40
40
 
41
41
  shared_ptr<std::map<std::string, Vector<double>>> stats = nullptr;
42
- const double check_conformity;
43
42
 
44
43
  /// elmat = (elmat_conforming | elmat_trefftz)
45
44
  Array<optional<Matrix<double>>> etmats;
@@ -74,8 +73,7 @@ namespace ngcomp
74
73
  shared_ptr<SumOfIntegrals> _fes_ip = nullptr,
75
74
  shared_ptr<BitArray> _ignoredofs = nullptr,
76
75
  shared_ptr<std::map<std::string, Vector<double>>> _stats
77
- = nullptr,
78
- double _check_conformity = 0.0);
76
+ = nullptr);
79
77
 
80
78
  shared_ptr<BaseVector>
81
79
  Embed (const shared_ptr<const BaseVector> tgfu) const;
@@ -95,8 +95,8 @@ namespace ngcomp
95
95
  }
96
96
 
97
97
  TrefftzFESpace ::TrefftzFESpace (shared_ptr<MeshAccess> ama,
98
- const Flags &flags)
99
- : FESpace (ama, flags)
98
+ const Flags &flags, bool checkflags)
99
+ : FESpace (ama, flags, checkflags)
100
100
  {
101
101
  type = "trefftzfespace";
102
102
 
@@ -176,7 +176,8 @@ namespace ngcomp
176
176
  FiniteElement &TGetFE (ElementId ei, Allocator &alloc) const;
177
177
 
178
178
  public:
179
- TrefftzFESpace (shared_ptr<MeshAccess> ama, const Flags &flags);
179
+ TrefftzFESpace (shared_ptr<MeshAccess> ama, const Flags &flags,
180
+ bool checkflags = false);
180
181
  ~TrefftzFESpace ();
181
182
  void Update () override;
182
183
  void UpdateCouplingDofArray () override;