ngstrefftz 0.3.2505.dev26__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.dev26 → ngstrefftz-0.3.2506.dev2}/CMakeLists.txt +22 -4
  2. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/PKG-INFO +2 -2
  3. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/_version.py +3 -3
  4. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/docs/requirements.txt +2 -2
  5. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/pyproject.toml +2 -2
  6. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/src/embtrefftz.cpp +29 -41
  7. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/src/embtrefftz.hpp +1 -3
  8. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/.clang-format +0 -0
  9. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/.github/workflows/build.yml +0 -0
  10. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/.github/workflows/fix_auditwheel_policy.py +0 -0
  11. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/.github/workflows/pyodide/Dockerfile +0 -0
  12. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/.github/workflows/pyodide/build_in_docker.sh +0 -0
  13. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/.github/workflows/pyodide/merge.py +0 -0
  14. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/.github/workflows/pyodide/requirements.txt +0 -0
  15. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/.gitignore +0 -0
  16. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/.gitmodules +0 -0
  17. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/CONTRIBUTING.md +0 -0
  18. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/Dockerfile +0 -0
  19. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/LICENSE +0 -0
  20. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/README.md +0 -0
  21. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/docs/Doxyfile.in +0 -0
  22. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/docs/_static/breadcrumbs.html +0 -0
  23. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/docs/_static/css/mytheme.css +0 -0
  24. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/docs/conf.py +0 -0
  25. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/docs/contrib.rst +0 -0
  26. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/docs/docu.rst +0 -0
  27. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/docs/index.rst +0 -0
  28. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/docs/intro.rst +0 -0
  29. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/docs/notebooks/embTrefftz-adv.ipynb +0 -0
  30. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/docs/notebooks/embTrefftz-helm.ipynb +0 -0
  31. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/docs/notebooks/embTrefftz-poi.ipynb +0 -0
  32. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/docs/notebooks/embTrefftz-stokes.ipynb +0 -0
  33. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/docs/notebooks/embTrefftz-wave.ipynb +0 -0
  34. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/docs/notebooks/embTrefftz.ipynb +0 -0
  35. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/docs/notebooks/helmholtz.ipynb +0 -0
  36. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/docs/notebooks/index.ipynb +0 -0
  37. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/docs/notebooks/laplace.ipynb +0 -0
  38. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/docs/notebooks/qtelliptic.ipynb +0 -0
  39. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/docs/notebooks/qtwave.ipynb +0 -0
  40. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/docs/notebooks/tunfitted.ipynb +0 -0
  41. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/docs/notebooks/twave.ipynb +0 -0
  42. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/docs/notebooks/twavetents.ipynb +0 -0
  43. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/docs/paper/codemeta.json +0 -0
  44. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/docs/paper/paper.bib +0 -0
  45. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/docs/paper/paper.md +0 -0
  46. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/docs/readme.rst +0 -0
  47. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/.github/workflows/build.yml +0 -0
  48. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/.gitignore +0 -0
  49. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/README.md +0 -0
  50. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/demo/advection/Advection_Periodic_Clipping.ipynb +0 -0
  51. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/demo/advection/advection2d.py +0 -0
  52. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/demo/advection/advection2d_periodic.py +0 -0
  53. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/demo/burgers/Burgers_Clipping.ipynb +0 -0
  54. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/demo/burgers/burgers1d.py +0 -0
  55. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/demo/burgers/burgers2d.py +0 -0
  56. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/demo/euler/Euler_Clipping.ipynb +0 -0
  57. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/demo/euler/euler2d.py +0 -0
  58. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/demo/euler/mach3_windtunnel.py +0 -0
  59. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/demo/maxwell/maxwell3d.py +0 -0
  60. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/demo/symbolic/symbolic_advection2d.py +0 -0
  61. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/demo/symbolic/symbolic_burgers.py +0 -0
  62. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/demo/symbolic/symbolic_euler.py +0 -0
  63. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/demo/symbolic/symbolic_wave.py +0 -0
  64. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/demo/symbolic/symbolic_wave1d_interface.py +0 -0
  65. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/demo/symbolic/wave_penetrable_cylinder.py +0 -0
  66. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/demo/tents/draw3dtent.py +0 -0
  67. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/demo/tents/draw3dvertex.py +0 -0
  68. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/demo/wave/horn.py +0 -0
  69. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/demo/wave/wave2d.py +0 -0
  70. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/demo/wave/wave2d_timedepbc.py +0 -0
  71. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/demo/wave/wave3d.py +0 -0
  72. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/docs/BurgersMTP.ipynb +0 -0
  73. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/docs/INDEX.ipynb +0 -0
  74. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/docs/StartPitching.ipynb +0 -0
  75. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/docs/_config.yml +0 -0
  76. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/docs/_toc.yml +0 -0
  77. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/docs/conf.py +0 -0
  78. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/docs/figs/CausalityCond.png +0 -0
  79. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/docs/figs/dag.png +0 -0
  80. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/docs/figs/map.png +0 -0
  81. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/docs/figs/subtents.png +0 -0
  82. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/docs/index.rst +0 -0
  83. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/docs/intro.md +0 -0
  84. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/docs/readme.rst +0 -0
  85. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/docs/requirements.txt +0 -0
  86. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/py/__init__.py +0 -0
  87. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/py/conslaw/__init__.py +0 -0
  88. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/py/utils/__init__.py +0 -0
  89. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/py/utils/_drawtents.py +0 -0
  90. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/py/utils/_drawtents2d.py +0 -0
  91. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/pyproject.toml +0 -0
  92. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/src/CMakeLists.txt +0 -0
  93. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/src/advection.cpp +0 -0
  94. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/src/burgers.cpp +0 -0
  95. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/src/concurrentqueue.h +0 -0
  96. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/src/conservationlaw.hpp +0 -0
  97. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/src/euler.cpp +0 -0
  98. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/src/maxwell.cpp +0 -0
  99. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/src/ngsolve_addon.cmake +0 -0
  100. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/src/paralleldepend.hpp +0 -0
  101. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/src/python_conslaw.cpp +0 -0
  102. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/src/python_tents.cpp +0 -0
  103. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/src/symbolic.cpp +0 -0
  104. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/src/tconservationlaw_tp_impl.hpp +0 -0
  105. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/src/tents.cpp +0 -0
  106. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/src/tents.hpp +0 -0
  107. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/src/tentsolver.hpp +0 -0
  108. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/src/tentsolver_impl.hpp +0 -0
  109. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/src/vis3d.cpp +0 -0
  110. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/src/vis3d.hpp +0 -0
  111. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/src/wave.cpp +0 -0
  112. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/tests/test_burgers_2D.py +0 -0
  113. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/tests/test_causal_tents.py +0 -0
  114. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/tests/test_conslaw.py +0 -0
  115. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/tests/test_tent_height_2D.py +0 -0
  116. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/external_dependencies/ngstents/tests/test_tentlayers.py +0 -0
  117. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/src/__init__.py +0 -0
  118. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/src/airy.cpp +0 -0
  119. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/src/boxintegral.cpp +0 -0
  120. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/src/boxintegral.hpp +0 -0
  121. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/src/condensedg.cpp +0 -0
  122. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/src/condensedg.hpp +0 -0
  123. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/src/diffopmapped.hpp +0 -0
  124. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/src/mesh1dtents.cpp +0 -0
  125. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/src/mesh1dtents.hpp +0 -0
  126. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/src/monomialfespace.cpp +0 -0
  127. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/src/monomialfespace.hpp +0 -0
  128. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/src/ngsttd.hpp +0 -0
  129. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/src/planewavefe.cpp +0 -0
  130. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/src/planewavefe.hpp +0 -0
  131. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/src/pufe.cpp +0 -0
  132. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/src/pufe.hpp +0 -0
  133. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/src/pufespace.cpp +0 -0
  134. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/src/pufespace.hpp +0 -0
  135. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/src/python_trefftz.cpp +0 -0
  136. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/src/scalarmappedfe.cpp +0 -0
  137. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/src/scalarmappedfe.hpp +0 -0
  138. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/src/specialcoefficientfunction.cpp +0 -0
  139. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/src/specialcoefficientfunction.hpp +0 -0
  140. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/src/specialintegrator.cpp +0 -0
  141. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/src/specialintegrator.hpp +0 -0
  142. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/src/trefftzfespace.cpp +0 -0
  143. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/src/trefftzfespace.hpp +0 -0
  144. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/src/twavetents.cpp +0 -0
  145. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/src/twavetents.hpp +0 -0
  146. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/test/boxint.py +0 -0
  147. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/test/conforming_trefftz.py +0 -0
  148. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/test/dg.py +0 -0
  149. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/test/embt.py +0 -0
  150. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/test/embtrefftz_gtest.cpp +0 -0
  151. {ngstrefftz-0.3.2505.dev26 → ngstrefftz-0.3.2506.dev2}/test/tents.py +0 -0
  152. {ngstrefftz-0.3.2505.dev26 → 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.dev26
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.dev26'
32
- __version_tuple__ = version_tuple = (0, 3, 2505, 'dev26')
31
+ __version__ = version = '0.3.2506.dev2'
32
+ __version_tuple__ = version_tuple = (0, 3, 2506, 'dev2')
33
33
 
34
- __commit_id__ = commit_id = 'ga9ba17fbe'
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",
@@ -691,7 +691,8 @@ namespace ngcomp
691
691
  Vector<double> sing_val_max;
692
692
  Vector<double> sing_val_min;
693
693
  std::atomic<size_t> active_elements = 0;
694
- double check_conformity_max_deviation = 0.0;
694
+ double conformity_residual = 0.0;
695
+ double trefftz_residual = 0.0;
695
696
 
696
697
  auto ma = fes->GetMeshAccess ();
697
698
  const size_t num_elements = ma->GetNE (VOL);
@@ -759,15 +760,16 @@ namespace ngcomp
759
760
  size_t ndof = dofs.Size ();
760
761
  size_t ndof_test = dofs_test.Size ();
761
762
  size_t ndof_conforming = dofs_conforming.Size ();
762
- FlatMatrix<SCAL> elmat_A (ndof_test + ndof_conforming, ndof, lh);
763
- auto [elmat_Cl, elmat_L] = elmat_A.SplitRows (ndof_conforming);
764
763
 
764
+ FlatMatrix<SCAL> elmat_A (ndof_test + ndof_conforming, ndof, lh);
765
765
  FlatMatrix<SCAL> elmat_B (ndof_test + ndof_conforming,
766
766
  ndof_conforming, lh);
767
+ Matrix<SCAL> elmat_A_copy;
767
768
  elmat_A = static_cast<SCAL> (0.);
768
769
  elmat_B = static_cast<SCAL> (0.);
769
770
 
770
- // elmat_cr is a view into elamt_b
771
+ // split conformity part
772
+ auto [elmat_Cl, elmat_L] = elmat_A.SplitRows (ndof_conforming);
771
773
  auto elmat_Cr = elmat_B.Rows (ndof_conforming);
772
774
 
773
775
  // the diff. operator L operates only on volume terms
@@ -838,8 +840,7 @@ namespace ngcomp
838
840
 
839
841
  FlatMatrix<SCAL, ColMajor> UT (elmat_A.Height (), lh),
840
842
  V (elmat_A.Width (), lh);
841
- Matrix<SCAL> elmat_A_copy;
842
- if (fes_conformity && check_conformity > 0)
843
+ if (stats)
843
844
  elmat_A_copy = elmat_A;
844
845
  getSVD<SCAL> (elmat_A, UT, V);
845
846
 
@@ -860,25 +861,8 @@ namespace ngcomp
860
861
  // T_c solves A @ T_c = B,
861
862
  elmat_Tc = elmat_A_inv * elmat_B;
862
863
 
863
- double maxentry = 0.0;
864
- if (fes_conformity && check_conformity > 0)
865
- {
866
- Matrix<SCAL> test = elmat_A_copy * elmat_Tc - elmat_B;
867
- for (size_t i = 0; i < test.Height (); i++)
868
- for (size_t j = 0; j < test.Width (); j++)
869
- if (abs (test (i, j)) > maxentry)
870
- maxentry = abs (test (i, j));
871
- if (maxentry > check_conformity)
872
- throw Exception ((std::stringstream{}
873
- << "too many conformity constraints in "
874
- "Trefftz embedding, max entry: "
875
- << std::scientific << maxentry)
876
- .str ());
877
- }
878
-
879
864
  // if (get_range)
880
865
  // elmat_Tt = U.Cols (0, dofs.Size () - ndof_trefftz_i);
881
-
882
866
  if (fes_ip)
883
867
  {
884
868
  FlatMatrix<SCAL, ColMajor> Vtemp (V.Width (), V.Height (), lh);
@@ -930,18 +914,26 @@ namespace ngcomp
930
914
  sing_val_max[i] = max (sing_val_max[i], abs (diag (i)));
931
915
  sing_val_min[i] = min (sing_val_min[i], abs (diag (i)));
932
916
  }
933
- check_conformity_max_deviation
934
- = 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);
935
925
  }
936
926
  });
927
+
937
928
  if (stats)
938
929
  {
939
930
  sing_val_avg /= active_elements.load ();
940
931
  (*stats)["singavg"] = Vector<double> (sing_val_avg);
941
932
  (*stats)["singmax"] = Vector<double> (sing_val_max);
942
933
  (*stats)["singmin"] = Vector<double> (sing_val_min);
943
- (*stats)["conformity_deviation"]
944
- = Vector<double> ({ check_conformity_max_deviation });
934
+ (*stats)["conformity_residual"]
935
+ = Vector<double> ({ conformity_residual });
936
+ (*stats)["trefftz_residual"] = Vector<double> ({ trefftz_residual });
945
937
  }
946
938
 
947
939
  if constexpr (std::is_same_v<double, SCAL>)
@@ -964,13 +956,11 @@ namespace ngcomp
964
956
  size_t _ndof_trefftz, double _eps, shared_ptr<FESpace> _fes,
965
957
  shared_ptr<FESpace> _fes_test, shared_ptr<FESpace> _fes_conformity,
966
958
  shared_ptr<SumOfIntegrals> _fes_ip, shared_ptr<BitArray> _ignoredofs,
967
- shared_ptr<std::map<std::string, Vector<double>>> _stats,
968
- double _check_conformity)
959
+ shared_ptr<std::map<std::string, Vector<double>>> _stats)
969
960
  : top (_top), trhs (_trhs), cop (_cop), crhs (_crhs), fes_ip (_fes_ip),
970
- ignoredofs (_ignoredofs), stats (_stats),
971
- check_conformity (_check_conformity)
961
+ ignoredofs (_ignoredofs), stats (_stats)
972
962
  {
973
- if (_ndof_trefftz == 0)
963
+ if (_ndof_trefftz == std::numeric_limits<size_t>::max ())
974
964
  ndof_trefftz = _eps;
975
965
  else if (_eps == 0.0)
976
966
  ndof_trefftz = _ndof_trefftz;
@@ -1526,15 +1516,14 @@ void ExportEmbTrefftz (py::module m)
1526
1516
  shared_ptr<FESpace> fes_conformity,
1527
1517
  shared_ptr<SumOfIntegrals> fes_ip,
1528
1518
  shared_ptr<BitArray> ignoredofs,
1529
- optional<py::dict> pystats, double check_conformity) {
1519
+ optional<py::dict> pystats) {
1530
1520
  shared_ptr<std::map<std::string, Vector<double>>> stats = nullptr;
1531
1521
  if (pystats)
1532
1522
  stats = make_shared<std::map<std::string, Vector<double>>> ();
1533
1523
  std::shared_ptr<TrefftzEmbedding> emb
1534
1524
  = std::make_shared<TrefftzEmbedding> (
1535
1525
  top, trhs, cop, crhs, ndof_trefftz, eps, fes, fes_test,
1536
- fes_conformity, fes_ip, ignoredofs, stats,
1537
- check_conformity);
1526
+ fes_conformity, fes_ip, ignoredofs, stats);
1538
1527
  if (pystats)
1539
1528
  for (auto const &x : *stats)
1540
1529
  (*pystats)[py::cast (x.first)] = py::cast (x.second);
@@ -1563,15 +1552,14 @@ void ExportEmbTrefftz (py::module m)
1563
1552
  :param ignoredofs: BitArray of dofs from fes to be ignored in the embedding
1564
1553
  :param stats: optional dictionary to store statistics about the singular values,
1565
1554
  input dictionary is modified
1566
- :param check_conformity: if > 0 checks the viability of the conformity constraint
1567
1555
  )mydelimiter",
1568
1556
  py::arg ("top") = nullptr, py::arg ("trhs") = nullptr,
1569
1557
  py::arg ("cop") = nullptr, py::arg ("crhs") = nullptr,
1570
- py::arg ("ndof_trefftz") = 0, py::arg ("eps") = 0.0,
1571
- py::arg ("fes") = nullptr, py::arg ("fes_test") = nullptr,
1572
- py::arg ("fes_conformity") = nullptr, py::arg ("fes_ip") = nullptr,
1573
- py::arg ("ignoredofs") = nullptr, py::arg ("stats") = nullopt,
1574
- 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 ())
1575
1563
  .def ("Embed",
1576
1564
  static_cast<shared_ptr<BaseVector> (ngcomp::TrefftzEmbedding::*) (
1577
1565
  const shared_ptr<const BaseVector>) const> (
@@ -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;