ngstrefftz 0.3.2507.dev1__tar.gz → 0.3.2507.dev4__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.2507.dev1 → ngstrefftz-0.3.2507.dev4}/CMakeLists.txt +1 -0
  2. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/PKG-INFO +1 -1
  3. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/_version.py +3 -3
  4. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/src/embtrefftz.cpp +4 -3
  5. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/src/embtrefftz.hpp +10 -0
  6. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/src/python_trefftz.cpp +2 -0
  7. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/src/specialcoefficientfunction.cpp +4 -0
  8. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/src/specialcoefficientfunction.hpp +32 -0
  9. ngstrefftz-0.3.2507.dev4/src/tp0fespace.cpp +177 -0
  10. ngstrefftz-0.3.2507.dev4/src/tp0fespace.hpp +102 -0
  11. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/.clang-format +0 -0
  12. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/.github/workflows/build.yml +0 -0
  13. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/.github/workflows/fix_auditwheel_policy.py +0 -0
  14. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/.github/workflows/pyodide/Dockerfile +0 -0
  15. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/.github/workflows/pyodide/build_in_docker.sh +0 -0
  16. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/.github/workflows/pyodide/merge.py +0 -0
  17. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/.github/workflows/pyodide/requirements.txt +0 -0
  18. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/.gitignore +0 -0
  19. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/.gitmodules +0 -0
  20. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/CONTRIBUTING.md +0 -0
  21. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/Dockerfile +0 -0
  22. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/LICENSE +0 -0
  23. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/README.md +0 -0
  24. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/docs/Doxyfile.in +0 -0
  25. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/docs/_static/breadcrumbs.html +0 -0
  26. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/docs/_static/css/mytheme.css +0 -0
  27. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/docs/conf.py +0 -0
  28. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/docs/contrib.rst +0 -0
  29. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/docs/docu.rst +0 -0
  30. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/docs/index.rst +0 -0
  31. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/docs/intro.rst +0 -0
  32. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/docs/notebooks/embTrefftz-adv.ipynb +0 -0
  33. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/docs/notebooks/embTrefftz-helm.ipynb +0 -0
  34. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/docs/notebooks/embTrefftz-poi.ipynb +0 -0
  35. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/docs/notebooks/embTrefftz-stokes.ipynb +0 -0
  36. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/docs/notebooks/embTrefftz-wave.ipynb +0 -0
  37. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/docs/notebooks/embTrefftz.ipynb +0 -0
  38. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/docs/notebooks/helmholtz.ipynb +0 -0
  39. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/docs/notebooks/index.ipynb +0 -0
  40. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/docs/notebooks/laplace.ipynb +0 -0
  41. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/docs/notebooks/qtelliptic.ipynb +0 -0
  42. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/docs/notebooks/qtwave.ipynb +0 -0
  43. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/docs/notebooks/tunfitted.ipynb +0 -0
  44. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/docs/notebooks/twave.ipynb +0 -0
  45. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/docs/notebooks/twavetents.ipynb +0 -0
  46. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/docs/paper/codemeta.json +0 -0
  47. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/docs/paper/paper.bib +0 -0
  48. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/docs/paper/paper.md +0 -0
  49. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/docs/readme.rst +0 -0
  50. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/docs/requirements.txt +0 -0
  51. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/external_dependencies/ngstents/.github/workflows/build.yml +0 -0
  52. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/external_dependencies/ngstents/.gitignore +0 -0
  53. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/external_dependencies/ngstents/README.md +0 -0
  54. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/external_dependencies/ngstents/demo/advection/Advection_Periodic_Clipping.ipynb +0 -0
  55. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/external_dependencies/ngstents/demo/advection/advection2d.py +0 -0
  56. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/external_dependencies/ngstents/demo/advection/advection2d_periodic.py +0 -0
  57. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/external_dependencies/ngstents/demo/burgers/Burgers_Clipping.ipynb +0 -0
  58. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/external_dependencies/ngstents/demo/burgers/burgers1d.py +0 -0
  59. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/external_dependencies/ngstents/demo/burgers/burgers2d.py +0 -0
  60. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/external_dependencies/ngstents/demo/euler/Euler_Clipping.ipynb +0 -0
  61. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/external_dependencies/ngstents/demo/euler/euler2d.py +0 -0
  62. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/external_dependencies/ngstents/demo/euler/mach3_windtunnel.py +0 -0
  63. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/external_dependencies/ngstents/demo/maxwell/maxwell3d.py +0 -0
  64. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/external_dependencies/ngstents/demo/symbolic/symbolic_advection2d.py +0 -0
  65. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/external_dependencies/ngstents/demo/symbolic/symbolic_burgers.py +0 -0
  66. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/external_dependencies/ngstents/demo/symbolic/symbolic_euler.py +0 -0
  67. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/external_dependencies/ngstents/demo/symbolic/symbolic_wave.py +0 -0
  68. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/external_dependencies/ngstents/demo/symbolic/symbolic_wave1d_interface.py +0 -0
  69. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/external_dependencies/ngstents/demo/symbolic/wave_penetrable_cylinder.py +0 -0
  70. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/external_dependencies/ngstents/demo/tents/draw3dtent.py +0 -0
  71. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/external_dependencies/ngstents/demo/tents/draw3dvertex.py +0 -0
  72. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/external_dependencies/ngstents/demo/wave/horn.py +0 -0
  73. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/external_dependencies/ngstents/demo/wave/wave2d.py +0 -0
  74. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/external_dependencies/ngstents/demo/wave/wave2d_timedepbc.py +0 -0
  75. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/external_dependencies/ngstents/demo/wave/wave3d.py +0 -0
  76. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/external_dependencies/ngstents/docs/BurgersMTP.ipynb +0 -0
  77. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/external_dependencies/ngstents/docs/INDEX.ipynb +0 -0
  78. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/external_dependencies/ngstents/docs/StartPitching.ipynb +0 -0
  79. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/external_dependencies/ngstents/docs/_config.yml +0 -0
  80. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/external_dependencies/ngstents/docs/_toc.yml +0 -0
  81. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/external_dependencies/ngstents/docs/conf.py +0 -0
  82. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/external_dependencies/ngstents/docs/figs/CausalityCond.png +0 -0
  83. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/external_dependencies/ngstents/docs/figs/dag.png +0 -0
  84. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/external_dependencies/ngstents/docs/figs/map.png +0 -0
  85. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/external_dependencies/ngstents/docs/figs/subtents.png +0 -0
  86. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/external_dependencies/ngstents/docs/index.rst +0 -0
  87. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/external_dependencies/ngstents/docs/intro.md +0 -0
  88. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/external_dependencies/ngstents/docs/readme.rst +0 -0
  89. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/external_dependencies/ngstents/docs/requirements.txt +0 -0
  90. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/external_dependencies/ngstents/py/__init__.py +0 -0
  91. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/external_dependencies/ngstents/py/conslaw/__init__.py +0 -0
  92. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/external_dependencies/ngstents/py/utils/__init__.py +0 -0
  93. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/external_dependencies/ngstents/py/utils/_drawtents.py +0 -0
  94. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/external_dependencies/ngstents/py/utils/_drawtents2d.py +0 -0
  95. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/external_dependencies/ngstents/pyproject.toml +0 -0
  96. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/external_dependencies/ngstents/src/CMakeLists.txt +0 -0
  97. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/external_dependencies/ngstents/src/advection.cpp +0 -0
  98. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/external_dependencies/ngstents/src/burgers.cpp +0 -0
  99. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/external_dependencies/ngstents/src/concurrentqueue.h +0 -0
  100. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/external_dependencies/ngstents/src/conservationlaw.hpp +0 -0
  101. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/external_dependencies/ngstents/src/euler.cpp +0 -0
  102. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/external_dependencies/ngstents/src/maxwell.cpp +0 -0
  103. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/external_dependencies/ngstents/src/ngsolve_addon.cmake +0 -0
  104. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/external_dependencies/ngstents/src/paralleldepend.hpp +0 -0
  105. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/external_dependencies/ngstents/src/python_conslaw.cpp +0 -0
  106. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/external_dependencies/ngstents/src/python_tents.cpp +0 -0
  107. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/external_dependencies/ngstents/src/symbolic.cpp +0 -0
  108. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/external_dependencies/ngstents/src/tconservationlaw_tp_impl.hpp +0 -0
  109. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/external_dependencies/ngstents/src/tents.cpp +0 -0
  110. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/external_dependencies/ngstents/src/tents.hpp +0 -0
  111. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/external_dependencies/ngstents/src/tentsolver.hpp +0 -0
  112. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/external_dependencies/ngstents/src/tentsolver_impl.hpp +0 -0
  113. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/external_dependencies/ngstents/src/vis3d.cpp +0 -0
  114. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/external_dependencies/ngstents/src/vis3d.hpp +0 -0
  115. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/external_dependencies/ngstents/src/wave.cpp +0 -0
  116. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/external_dependencies/ngstents/tests/test_burgers_2D.py +0 -0
  117. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/external_dependencies/ngstents/tests/test_causal_tents.py +0 -0
  118. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/external_dependencies/ngstents/tests/test_conslaw.py +0 -0
  119. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/external_dependencies/ngstents/tests/test_tent_height_2D.py +0 -0
  120. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/external_dependencies/ngstents/tests/test_tentlayers.py +0 -0
  121. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/pyproject.toml +0 -0
  122. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/src/__init__.py +0 -0
  123. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/src/airy.cpp +0 -0
  124. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/src/boxintegral.cpp +0 -0
  125. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/src/boxintegral.hpp +0 -0
  126. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/src/condensedg.cpp +0 -0
  127. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/src/condensedg.hpp +0 -0
  128. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/src/diffopmapped.hpp +0 -0
  129. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/src/mesh1dtents.cpp +0 -0
  130. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/src/mesh1dtents.hpp +0 -0
  131. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/src/monomialfespace.cpp +0 -0
  132. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/src/monomialfespace.hpp +0 -0
  133. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/src/ngsttd.hpp +0 -0
  134. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/src/planewavefe.cpp +0 -0
  135. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/src/planewavefe.hpp +0 -0
  136. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/src/pufe.cpp +0 -0
  137. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/src/pufe.hpp +0 -0
  138. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/src/pufespace.cpp +0 -0
  139. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/src/pufespace.hpp +0 -0
  140. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/src/scalarmappedfe.cpp +0 -0
  141. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/src/scalarmappedfe.hpp +0 -0
  142. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/src/specialintegrator.cpp +0 -0
  143. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/src/specialintegrator.hpp +0 -0
  144. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/src/trefftzfespace.cpp +0 -0
  145. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/src/trefftzfespace.hpp +0 -0
  146. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/src/twavetents.cpp +0 -0
  147. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/src/twavetents.hpp +0 -0
  148. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/test/boxint.py +0 -0
  149. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/test/conforming_trefftz.py +0 -0
  150. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/test/dg.py +0 -0
  151. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/test/embt.py +0 -0
  152. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/test/embtrefftz_gtest.cpp +0 -0
  153. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/test/tents.py +0 -0
  154. {ngstrefftz-0.3.2507.dev1 → ngstrefftz-0.3.2507.dev4}/test/trefftz.py +0 -0
@@ -55,6 +55,7 @@ add_ngsolve_addon(ngstrefftz
55
55
  src/pufe.cpp
56
56
  src/pufespace.cpp
57
57
  src/boxintegral.cpp
58
+ src/tp0fespace.cpp
58
59
  #src/airy.cpp #for testing, requires boost
59
60
  )
60
61
  target_compile_definitions(ngstrefftz PRIVATE NGSTREFFTZ_EXPORTS)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: ngstrefftz
3
- Version: 0.3.2507.dev1
3
+ Version: 0.3.2507.dev4
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)
@@ -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.2507.dev1'
32
- __version_tuple__ = version_tuple = (0, 3, 2507, 'dev1')
31
+ __version__ = version = '0.3.2507.dev4'
32
+ __version_tuple__ = version_tuple = (0, 3, 2507, 'dev4')
33
33
 
34
- __commit_id__ = commit_id = 'gd6ee94a55'
34
+ __commit_id__ = commit_id = 'g393c1d49d'
@@ -884,7 +884,7 @@ namespace ngcomp
884
884
  particular_solution_vec->SetIndirect (dofs, partsol);
885
885
  }
886
886
  etmats_trefftz_inv[element_id.Nr ()]
887
- = make_optional<Matrix<SCAL>> (elmat_A_inv);
887
+ = make_optional<Matrix<SCAL>> (elmat_T_inv);
888
888
  }
889
889
 
890
890
  if (ignoredofs)
@@ -1100,7 +1100,8 @@ namespace ngcomp
1100
1100
 
1101
1101
  if (fes->IsComplex ())
1102
1102
  {
1103
- auto elmat_T_inv = (*etmatsc_trefftz_inv[element_id.Nr ()]);
1103
+ Matrix<Complex> elmat_T_inv
1104
+ = (*etmatsc_trefftz_inv[element_id.Nr ()]);
1104
1105
  FlatVector<Complex> partsol (dofs.Size (), lh);
1105
1106
  FlatVector<Complex> elvec (dofs_test.Size (), lh);
1106
1107
  _trhsvec->GetIndirect (dofs_test, elvec);
@@ -1109,7 +1110,7 @@ namespace ngcomp
1109
1110
  }
1110
1111
  else
1111
1112
  {
1112
- auto elmat_T_inv = *etmats_trefftz_inv[element_id.Nr ()];
1113
+ Matrix<> elmat_T_inv = *etmats_trefftz_inv[element_id.Nr ()];
1113
1114
  FlatVector<double> partsol (dofs.Size (), lh);
1114
1115
  FlatVector<double> elvec (dofs_test.Size (), lh);
1115
1116
  _trhsvec->GetIndirect (dofs_test, elvec);
@@ -163,6 +163,16 @@ namespace ngcomp
163
163
  this->Update ();
164
164
  // this->UpdateDofTables();
165
165
  // this->UpdateCouplingDofArray();
166
+
167
+ if (this->order_policy == ORDER_POLICY::VARIABLE_ORDER)
168
+ {
169
+ this->GetMeshAccess ()->IterateElements (VOL, [&] (ElementId ei) {
170
+ NodeId ni (NODE_TYPE::NT_ELEMENT, ei.Nr ());
171
+ this->SetOrder (ni, emb->GetFES ()->GetOrder (ni));
172
+ });
173
+ this->Update ();
174
+ }
175
+
166
176
  this->FinalizeUpdate ();
167
177
 
168
178
  // needs previous FinalizeUpdate to construct free_dofs for `this`
@@ -15,6 +15,7 @@
15
15
  #include "pufespace.hpp"
16
16
  #include "condensedg.hpp"
17
17
  #include "boxintegral.hpp"
18
+ #include "tp0fespace.hpp"
18
19
  // #include "airy.cpp"
19
20
 
20
21
  PYBIND11_MODULE (ngstrefftz, m)
@@ -34,6 +35,7 @@ PYBIND11_MODULE (ngstrefftz, m)
34
35
  ExportPUFESpace (m);
35
36
  ExportCondenseDG (m);
36
37
  ExportBoxIntegral (m);
38
+ ExportTP0FESpace (m);
37
39
  // ExportStdMathFunction<GenericAiry>(m, "airy", "airy function");
38
40
  // ExportStdMathFunction<GenericAiryP>(m, "airyp", "airyp function");
39
41
  }
@@ -313,6 +313,10 @@ void ExportSpecialCoefficientFunction (py::module m)
313
313
  }),
314
314
  py::arg ("mesh"), py::arg ("CoefficientFunction"));
315
315
 
316
+ py::class_<AdjacentFaceSizeCF, shared_ptr<AdjacentFaceSizeCF>,
317
+ CoefficientFunction> (m, "AdjacentFaceSizeCF")
318
+ .def (py::init ([] () { return new AdjacentFaceSizeCF (); }));
319
+
316
320
  // py::class_<TrefftzCoefficientFunction,
317
321
  // shared_ptr<TrefftzCoefficientFunction>, CoefficientFunction> (m,
318
322
  //"TrefftzCoefficient", "") .def(py::init<>()) .def(py::init<int>())
@@ -86,6 +86,38 @@ namespace ngfem
86
86
  ~PrintCF () { ofs->close (); }
87
87
  };
88
88
 
89
+ class AdjacentFaceSizeCF : public CoefficientFunction
90
+ {
91
+ public:
92
+ AdjacentFaceSizeCF () : CoefficientFunction (1, false) { ; }
93
+ virtual double
94
+ Evaluate (const BaseMappedIntegrationPoint &ip) const override
95
+ {
96
+ LocalHeap lh (100000, "AdjacentFaceSizeCF::Evaluate");
97
+ if (ip.IP ().FacetNr () != -1) // on a boundary facet of the element
98
+ {
99
+ switch (ip.DimSpace ())
100
+ {
101
+ case 2:
102
+ {
103
+ const MappedIntegrationPoint<2, 2> &mp
104
+ = static_cast<const MappedIntegrationPoint<2, 2> &> (ip);
105
+ IntegrationPoint rip = mp.IP ();
106
+ if (rip.Point ()[0] == 0 || rip.Point ()[0] == 1)
107
+ return L2Norm (mp.GetJacobian ().Col (0));
108
+ else
109
+ return L2Norm (mp.GetJacobian ().Col (1));
110
+ }
111
+ default:
112
+ throw Exception ("Illegal dimension in MeshSizeCF");
113
+ }
114
+ }
115
+ else
116
+ throw Exception (
117
+ "AdjacentFaceSizeCF::Evaluate - not on a boundary facet");
118
+ }
119
+ };
120
+
89
121
  }
90
122
 
91
123
  #ifdef NGS_PYTHON
@@ -0,0 +1,177 @@
1
+ #include <comp.hpp>
2
+ #include <python_comp.hpp>
3
+ #include "tp0fespace.hpp"
4
+
5
+ namespace ngcomp
6
+ {
7
+
8
+ void
9
+ TP0FE ::CalcShape (const IntegrationPoint &ip, BareSliceVector<> shape) const
10
+ {
11
+ double x = ip.Point ()[0], y = ip.Point ()[1];
12
+ double xi = (2 * x - 1);
13
+ double eta = (2 * y - 1);
14
+
15
+ if (zero_axis == 1)
16
+ swap (xi, eta);
17
+
18
+ size_t p = order;
19
+ size_t q = order - 2;
20
+
21
+ STACK_ARRAY (double, mem, p + q + 2);
22
+ double *polx = &mem[0];
23
+ double *poly = &mem[p + 1];
24
+
25
+ LegendrePolynomial (p, xi, polx);
26
+ LegendrePolynomial (q, eta, poly);
27
+
28
+ for (size_t i = 0, ii = 0; i <= p; i++)
29
+ for (size_t j = 0; j <= q; j++)
30
+ shape[ii++] = polx[i] * poly[j] * (1 - eta) * (1 + eta);
31
+ }
32
+
33
+ void TP0FE ::CalcDShape (const IntegrationPoint &ip,
34
+ BareSliceMatrix<> dshape) const
35
+ {
36
+ AutoDiff<2> x (ip.Point ()[0], 0);
37
+ AutoDiff<2> y (ip.Point ()[1], 1);
38
+ AutoDiff<2> sigma[4]
39
+ = { (1 - x) + (1 - y), x + (1 - y), x + y, (1 - x) + y };
40
+
41
+ IVec<4> f = GetFaceSort (0, vnums);
42
+
43
+ AutoDiff<2> xi = sigma[f[0]] - sigma[f[1]];
44
+ AutoDiff<2> eta = sigma[f[0]] - sigma[f[3]];
45
+ if (zero_axis == 1)
46
+ swap (xi, eta);
47
+
48
+ size_t p = order;
49
+ size_t q = order - 2;
50
+
51
+ STACK_ARRAY (AutoDiff<2>, mem, p + q + 2);
52
+ AutoDiff<2> *polx = &mem[0];
53
+ AutoDiff<2> *poly = &mem[p + 1];
54
+
55
+ LegendrePolynomial (p, xi, polx);
56
+ LegendrePolynomial (q, eta, poly);
57
+
58
+ for (size_t i = 0, ii = 0; i <= p; i++)
59
+ for (size_t j = 0; j <= q; j++)
60
+ {
61
+ AutoDiff<2> shape = polx[i] * poly[j] * (1 + eta) * (1 - eta);
62
+ dshape (ii, 0) = shape.DValue (0);
63
+ dshape (ii++, 1) = shape.DValue (1);
64
+ }
65
+ }
66
+
67
+ TP0FESpace ::TP0FESpace (shared_ptr<MeshAccess> ama, const Flags &flags)
68
+ : FESpace (ama, flags)
69
+ {
70
+ type = "TP0FESpace";
71
+
72
+ order = int (flags.GetNumFlag ("order", 3));
73
+ local_ndof = (order + 1) * (order - 1);
74
+
75
+ if (ma->GetDimension () == 2)
76
+ {
77
+ evaluator[VOL] = make_shared<T_DifferentialOperator<MyDiffOpId>> ();
78
+ flux_evaluator[VOL]
79
+ = make_shared<T_DifferentialOperator<MyDiffOpGradient>> ();
80
+ }
81
+ else
82
+ {
83
+ throw Exception ("TP0FESpace implemented only in 2D");
84
+ }
85
+ }
86
+
87
+ DocInfo TP0FESpace ::GetDocu ()
88
+ {
89
+ auto docu = FESpace::GetDocu ();
90
+ return docu;
91
+ }
92
+
93
+ void TP0FESpace ::Update ()
94
+ {
95
+ FESpace::Update ();
96
+ nel = ma->GetNE ();
97
+ ndof = local_ndof * nel;
98
+ SetNDof (ndof);
99
+ UpdateCouplingDofArray ();
100
+ }
101
+
102
+ void TP0FESpace ::GetDofNrs (ElementId ei, Array<DofId> &dnums) const
103
+ {
104
+ dnums.SetSize (0);
105
+ if (!DefinedOn (ei) || ei.VB () != VOL)
106
+ return;
107
+ for (size_t j = ei.Nr () * local_ndof; j < local_ndof * (ei.Nr () + 1);
108
+ j++)
109
+ dnums.Append (j);
110
+ }
111
+
112
+ void TP0FESpace ::UpdateCouplingDofArray ()
113
+ {
114
+ ctofdof.SetSize (ndof);
115
+ for (auto i : Range (ma->GetNE ()))
116
+ {
117
+ bool definedon = DefinedOn (ElementId (VOL, i));
118
+ Array<DofId> dofs;
119
+ GetDofNrs (i, dofs);
120
+ for (auto r : dofs)
121
+ ctofdof[r] = definedon ? LOCAL_DOF : UNUSED_DOF;
122
+ }
123
+ }
124
+
125
+ FiniteElement &TP0FESpace ::GetFE (ElementId ei, Allocator &alloc) const
126
+ {
127
+
128
+ Ngs_Element ngel = ma->GetElement (ei);
129
+ ELEMENT_TYPE eltype = ngel.GetType ();
130
+ int D = ma->GetDimension ();
131
+
132
+ if (ei.IsVolume ())
133
+ {
134
+ switch (D)
135
+ {
136
+ case 2:
137
+ {
138
+ ElementTransformation &trafo = ma->GetTrafo (ei, alloc);
139
+ IntegrationPoint ip;
140
+ Mat<2, 2> jac;
141
+ trafo.CalcJacobian (ip, jac);
142
+ double xscale = L2Norm (jac.Col (0));
143
+ double yscale = L2Norm (jac.Col (1));
144
+
145
+ int zero_axis = yscale > xscale ? 1 : 0;
146
+ return *(new (alloc) TP0FE (
147
+ local_ndof, order, IVec<4> (ngel.Vertices ()), zero_axis));
148
+ break;
149
+ }
150
+ default:
151
+ throw Exception ("dimension not supported in TP0FE");
152
+ }
153
+ }
154
+ try
155
+ {
156
+ return SwitchET<ET_POINT, ET_SEGM, ET_TRIG, ET_QUAD> (
157
+ eltype, [&alloc] (auto et) -> FiniteElement & {
158
+ return *new (alloc) DummyFE<et.ElementType ()>;
159
+ });
160
+ }
161
+ catch (Exception &e)
162
+ {
163
+ throw Exception ("illegal element type in Trefftz::GetSurfaceFE");
164
+ }
165
+ }
166
+
167
+ static RegisterFESpace<TP0FESpace> initifes ("TP0FESpace");
168
+ }
169
+
170
+ #ifdef NGS_PYTHON
171
+ void ExportTP0FESpace (py::module m)
172
+ {
173
+ using namespace ngcomp;
174
+
175
+ ExportFESpace<TP0FESpace> (m, "TP0FESpace");
176
+ }
177
+ #endif // NGS_PYTHON
@@ -0,0 +1,102 @@
1
+ #ifndef FILE_TP0FESPACE_HPP
2
+ #define FILE_TP0FESPACE_HPP
3
+
4
+ #include <fem.hpp>
5
+
6
+ namespace ngcomp
7
+ {
8
+ class TP0FE : public FiniteElement, public ET_trait<ET_QUAD>
9
+ {
10
+ FlatArray<int> vnums;
11
+ int zero_axis;
12
+
13
+ public:
14
+ TP0FE (int ndof, int order, FlatArray<int> avnums, int azero_axis)
15
+ : FiniteElement (ndof, order), vnums (avnums), zero_axis (azero_axis)
16
+ {
17
+ ;
18
+ }
19
+ ELEMENT_TYPE ElementType () const override { return ET_QUAD; }
20
+
21
+ void CalcShape (const IntegrationPoint &ip, BareSliceVector<> shape) const;
22
+ void
23
+ CalcDShape (const IntegrationPoint &ip, BareSliceMatrix<> dshape) const;
24
+ };
25
+
26
+ class MyDiffOpId : public DiffOp<MyDiffOpId>
27
+ {
28
+ public:
29
+ static constexpr int DIM = 1;
30
+ static constexpr int DIM_SPACE = 2;
31
+ static constexpr int DIM_ELEMENT = 2;
32
+ static constexpr int DIM_DMAT = 1;
33
+ static constexpr int DIFFORDER = 0;
34
+
35
+ template <typename MIP, typename MAT>
36
+ static void GenerateMatrix (const FiniteElement &fel, const MIP &mip,
37
+ MAT &mat, LocalHeap &lh)
38
+ {
39
+ HeapReset hr (lh);
40
+ Cast (fel).CalcShape (mip.IP (), mat.Row (0));
41
+ }
42
+
43
+ static const TP0FE &Cast (const FiniteElement &fel)
44
+ {
45
+ return static_cast<const TP0FE &> (fel);
46
+ }
47
+ };
48
+
49
+ class MyDiffOpGradient : public DiffOp<MyDiffOpGradient>
50
+ {
51
+ public:
52
+ static constexpr int DIM = 1;
53
+ static constexpr int DIM_SPACE = 2;
54
+ static constexpr int DIM_ELEMENT = 2;
55
+ static constexpr int DIM_DMAT = 2;
56
+ static constexpr int DIFFORDER = 1;
57
+
58
+ static string Name () { return "grad"; }
59
+
60
+ template <typename MIP, typename MAT>
61
+ static void GenerateMatrix (const FiniteElement &fel, const MIP &mip,
62
+ MAT &mat, LocalHeap &lh)
63
+ {
64
+ HeapReset hr (lh);
65
+ FlatMatrixFixWidth<2> dshape (fel.GetNDof (), lh);
66
+ Cast (fel).CalcDShape (mip.IP (), dshape);
67
+ mat = Trans (dshape * mip.GetJacobianInverse ());
68
+ }
69
+
70
+ static const TP0FE &Cast (const FiniteElement &fel)
71
+ {
72
+ return static_cast<const TP0FE &> (fel);
73
+ }
74
+ };
75
+
76
+ class TP0FESpace : public FESpace
77
+ {
78
+ int local_ndof;
79
+ int nel;
80
+
81
+ public:
82
+ TP0FESpace (shared_ptr<MeshAccess> ama, const Flags &flags);
83
+
84
+ string GetClassName () const override { return "TP0FESpace"; }
85
+
86
+ static DocInfo GetDocu ();
87
+
88
+ void Update () override;
89
+ virtual void UpdateCouplingDofArray () override;
90
+
91
+ void GetDofNrs (ElementId ei, Array<DofId> &dnums) const override;
92
+ FiniteElement &GetFE (ElementId ei, Allocator &alloc) const override;
93
+ };
94
+
95
+ }
96
+
97
+ #ifdef NGS_PYTHON
98
+ #include <python_ngstd.hpp>
99
+ void ExportTP0FESpace (py::module m);
100
+ #endif // NGS_PYTHON
101
+
102
+ #endif