ngstrefftz 0.3.2507.dev4__tar.gz → 0.3.2507.dev7__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 (155) hide show
  1. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/PKG-INFO +1 -1
  2. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/_version.py +3 -3
  3. ngstrefftz-0.3.2507.dev7/src/tp0fespace.cpp +270 -0
  4. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/src/tp0fespace.hpp +21 -7
  5. ngstrefftz-0.3.2507.dev4/src/tp0fespace.cpp +0 -177
  6. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/.clang-format +0 -0
  7. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/.github/workflows/build.yml +0 -0
  8. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/.github/workflows/fix_auditwheel_policy.py +0 -0
  9. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/.github/workflows/pyodide/Dockerfile +0 -0
  10. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/.github/workflows/pyodide/build_in_docker.sh +0 -0
  11. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/.github/workflows/pyodide/merge.py +0 -0
  12. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/.github/workflows/pyodide/requirements.txt +0 -0
  13. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/.gitignore +0 -0
  14. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/.gitmodules +0 -0
  15. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/CMakeLists.txt +0 -0
  16. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/CONTRIBUTING.md +0 -0
  17. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/Dockerfile +0 -0
  18. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/LICENSE +0 -0
  19. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/README.md +0 -0
  20. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/docs/Doxyfile.in +0 -0
  21. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/docs/_static/breadcrumbs.html +0 -0
  22. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/docs/_static/css/mytheme.css +0 -0
  23. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/docs/conf.py +0 -0
  24. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/docs/contrib.rst +0 -0
  25. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/docs/docu.rst +0 -0
  26. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/docs/index.rst +0 -0
  27. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/docs/intro.rst +0 -0
  28. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/docs/notebooks/embTrefftz-adv.ipynb +0 -0
  29. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/docs/notebooks/embTrefftz-helm.ipynb +0 -0
  30. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/docs/notebooks/embTrefftz-poi.ipynb +0 -0
  31. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/docs/notebooks/embTrefftz-stokes.ipynb +0 -0
  32. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/docs/notebooks/embTrefftz-wave.ipynb +0 -0
  33. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/docs/notebooks/embTrefftz.ipynb +0 -0
  34. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/docs/notebooks/helmholtz.ipynb +0 -0
  35. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/docs/notebooks/index.ipynb +0 -0
  36. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/docs/notebooks/laplace.ipynb +0 -0
  37. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/docs/notebooks/qtelliptic.ipynb +0 -0
  38. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/docs/notebooks/qtwave.ipynb +0 -0
  39. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/docs/notebooks/tunfitted.ipynb +0 -0
  40. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/docs/notebooks/twave.ipynb +0 -0
  41. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/docs/notebooks/twavetents.ipynb +0 -0
  42. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/docs/paper/codemeta.json +0 -0
  43. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/docs/paper/paper.bib +0 -0
  44. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/docs/paper/paper.md +0 -0
  45. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/docs/readme.rst +0 -0
  46. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/docs/requirements.txt +0 -0
  47. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/external_dependencies/ngstents/.github/workflows/build.yml +0 -0
  48. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/external_dependencies/ngstents/.gitignore +0 -0
  49. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/external_dependencies/ngstents/README.md +0 -0
  50. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/external_dependencies/ngstents/demo/advection/Advection_Periodic_Clipping.ipynb +0 -0
  51. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/external_dependencies/ngstents/demo/advection/advection2d.py +0 -0
  52. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/external_dependencies/ngstents/demo/advection/advection2d_periodic.py +0 -0
  53. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/external_dependencies/ngstents/demo/burgers/Burgers_Clipping.ipynb +0 -0
  54. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/external_dependencies/ngstents/demo/burgers/burgers1d.py +0 -0
  55. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/external_dependencies/ngstents/demo/burgers/burgers2d.py +0 -0
  56. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/external_dependencies/ngstents/demo/euler/Euler_Clipping.ipynb +0 -0
  57. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/external_dependencies/ngstents/demo/euler/euler2d.py +0 -0
  58. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/external_dependencies/ngstents/demo/euler/mach3_windtunnel.py +0 -0
  59. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/external_dependencies/ngstents/demo/maxwell/maxwell3d.py +0 -0
  60. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/external_dependencies/ngstents/demo/symbolic/symbolic_advection2d.py +0 -0
  61. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/external_dependencies/ngstents/demo/symbolic/symbolic_burgers.py +0 -0
  62. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/external_dependencies/ngstents/demo/symbolic/symbolic_euler.py +0 -0
  63. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/external_dependencies/ngstents/demo/symbolic/symbolic_wave.py +0 -0
  64. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/external_dependencies/ngstents/demo/symbolic/symbolic_wave1d_interface.py +0 -0
  65. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/external_dependencies/ngstents/demo/symbolic/wave_penetrable_cylinder.py +0 -0
  66. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/external_dependencies/ngstents/demo/tents/draw3dtent.py +0 -0
  67. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/external_dependencies/ngstents/demo/tents/draw3dvertex.py +0 -0
  68. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/external_dependencies/ngstents/demo/wave/horn.py +0 -0
  69. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/external_dependencies/ngstents/demo/wave/wave2d.py +0 -0
  70. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/external_dependencies/ngstents/demo/wave/wave2d_timedepbc.py +0 -0
  71. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/external_dependencies/ngstents/demo/wave/wave3d.py +0 -0
  72. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/external_dependencies/ngstents/docs/BurgersMTP.ipynb +0 -0
  73. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/external_dependencies/ngstents/docs/INDEX.ipynb +0 -0
  74. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/external_dependencies/ngstents/docs/StartPitching.ipynb +0 -0
  75. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/external_dependencies/ngstents/docs/_config.yml +0 -0
  76. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/external_dependencies/ngstents/docs/_toc.yml +0 -0
  77. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/external_dependencies/ngstents/docs/conf.py +0 -0
  78. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/external_dependencies/ngstents/docs/figs/CausalityCond.png +0 -0
  79. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/external_dependencies/ngstents/docs/figs/dag.png +0 -0
  80. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/external_dependencies/ngstents/docs/figs/map.png +0 -0
  81. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/external_dependencies/ngstents/docs/figs/subtents.png +0 -0
  82. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/external_dependencies/ngstents/docs/index.rst +0 -0
  83. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/external_dependencies/ngstents/docs/intro.md +0 -0
  84. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/external_dependencies/ngstents/docs/readme.rst +0 -0
  85. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/external_dependencies/ngstents/docs/requirements.txt +0 -0
  86. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/external_dependencies/ngstents/py/__init__.py +0 -0
  87. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/external_dependencies/ngstents/py/conslaw/__init__.py +0 -0
  88. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/external_dependencies/ngstents/py/utils/__init__.py +0 -0
  89. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/external_dependencies/ngstents/py/utils/_drawtents.py +0 -0
  90. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/external_dependencies/ngstents/py/utils/_drawtents2d.py +0 -0
  91. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/external_dependencies/ngstents/pyproject.toml +0 -0
  92. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/external_dependencies/ngstents/src/CMakeLists.txt +0 -0
  93. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/external_dependencies/ngstents/src/advection.cpp +0 -0
  94. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/external_dependencies/ngstents/src/burgers.cpp +0 -0
  95. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/external_dependencies/ngstents/src/concurrentqueue.h +0 -0
  96. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/external_dependencies/ngstents/src/conservationlaw.hpp +0 -0
  97. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/external_dependencies/ngstents/src/euler.cpp +0 -0
  98. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/external_dependencies/ngstents/src/maxwell.cpp +0 -0
  99. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/external_dependencies/ngstents/src/ngsolve_addon.cmake +0 -0
  100. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/external_dependencies/ngstents/src/paralleldepend.hpp +0 -0
  101. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/external_dependencies/ngstents/src/python_conslaw.cpp +0 -0
  102. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/external_dependencies/ngstents/src/python_tents.cpp +0 -0
  103. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/external_dependencies/ngstents/src/symbolic.cpp +0 -0
  104. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/external_dependencies/ngstents/src/tconservationlaw_tp_impl.hpp +0 -0
  105. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/external_dependencies/ngstents/src/tents.cpp +0 -0
  106. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/external_dependencies/ngstents/src/tents.hpp +0 -0
  107. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/external_dependencies/ngstents/src/tentsolver.hpp +0 -0
  108. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/external_dependencies/ngstents/src/tentsolver_impl.hpp +0 -0
  109. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/external_dependencies/ngstents/src/vis3d.cpp +0 -0
  110. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/external_dependencies/ngstents/src/vis3d.hpp +0 -0
  111. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/external_dependencies/ngstents/src/wave.cpp +0 -0
  112. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/external_dependencies/ngstents/tests/test_burgers_2D.py +0 -0
  113. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/external_dependencies/ngstents/tests/test_causal_tents.py +0 -0
  114. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/external_dependencies/ngstents/tests/test_conslaw.py +0 -0
  115. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/external_dependencies/ngstents/tests/test_tent_height_2D.py +0 -0
  116. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/external_dependencies/ngstents/tests/test_tentlayers.py +0 -0
  117. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/pyproject.toml +0 -0
  118. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/src/__init__.py +0 -0
  119. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/src/airy.cpp +0 -0
  120. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/src/boxintegral.cpp +0 -0
  121. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/src/boxintegral.hpp +0 -0
  122. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/src/condensedg.cpp +0 -0
  123. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/src/condensedg.hpp +0 -0
  124. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/src/diffopmapped.hpp +0 -0
  125. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/src/embtrefftz.cpp +0 -0
  126. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/src/embtrefftz.hpp +0 -0
  127. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/src/mesh1dtents.cpp +0 -0
  128. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/src/mesh1dtents.hpp +0 -0
  129. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/src/monomialfespace.cpp +0 -0
  130. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/src/monomialfespace.hpp +0 -0
  131. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/src/ngsttd.hpp +0 -0
  132. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/src/planewavefe.cpp +0 -0
  133. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/src/planewavefe.hpp +0 -0
  134. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/src/pufe.cpp +0 -0
  135. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/src/pufe.hpp +0 -0
  136. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/src/pufespace.cpp +0 -0
  137. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/src/pufespace.hpp +0 -0
  138. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/src/python_trefftz.cpp +0 -0
  139. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/src/scalarmappedfe.cpp +0 -0
  140. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/src/scalarmappedfe.hpp +0 -0
  141. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/src/specialcoefficientfunction.cpp +0 -0
  142. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/src/specialcoefficientfunction.hpp +0 -0
  143. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/src/specialintegrator.cpp +0 -0
  144. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/src/specialintegrator.hpp +0 -0
  145. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/src/trefftzfespace.cpp +0 -0
  146. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/src/trefftzfespace.hpp +0 -0
  147. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/src/twavetents.cpp +0 -0
  148. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/src/twavetents.hpp +0 -0
  149. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/test/boxint.py +0 -0
  150. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/test/conforming_trefftz.py +0 -0
  151. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/test/dg.py +0 -0
  152. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/test/embt.py +0 -0
  153. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/test/embtrefftz_gtest.cpp +0 -0
  154. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/test/tents.py +0 -0
  155. {ngstrefftz-0.3.2507.dev4 → ngstrefftz-0.3.2507.dev7}/test/trefftz.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: ngstrefftz
3
- Version: 0.3.2507.dev4
3
+ Version: 0.3.2507.dev7
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.dev4'
32
- __version_tuple__ = version_tuple = (0, 3, 2507, 'dev4')
31
+ __version__ = version = '0.3.2507.dev7'
32
+ __version_tuple__ = version_tuple = (0, 3, 2507, 'dev7')
33
33
 
34
- __commit_id__ = commit_id = 'g393c1d49d'
34
+ __commit_id__ = commit_id = 'gc1672b4a2'
@@ -0,0 +1,270 @@
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> xi = (2 * x - 1);
39
+ AutoDiff<2> eta = (2 * y - 1);
40
+
41
+ if (zero_axis == 1)
42
+ swap (xi, eta);
43
+
44
+ size_t p = order;
45
+ size_t q = order - 2;
46
+
47
+ STACK_ARRAY (AutoDiff<2>, mem, p + q + 2);
48
+ AutoDiff<2> *polx = &mem[0];
49
+ AutoDiff<2> *poly = &mem[p + 1];
50
+
51
+ LegendrePolynomial (p, xi, polx);
52
+ LegendrePolynomial (q, eta, poly);
53
+
54
+ for (size_t i = 0, ii = 0; i <= p; i++)
55
+ for (size_t j = 0; j <= q; j++)
56
+ {
57
+ AutoDiff<2> shape = polx[i] * poly[j] * (1 - eta) * (1 + eta);
58
+ dshape (ii, 0) = shape.DValue (0);
59
+ dshape (ii++, 1) = shape.DValue (1);
60
+ }
61
+ }
62
+
63
+ TP0FESpace ::TP0FESpace (shared_ptr<MeshAccess> ama, const Flags &flags)
64
+ : FESpace (ama, flags)
65
+ {
66
+ type = "TP0FESpace";
67
+
68
+ order = int (flags.GetNumFlag ("order", 3));
69
+
70
+ if (ma->GetDimension () == 2)
71
+ {
72
+ evaluator[VOL] = make_shared<T_DifferentialOperator<MyDiffOpId>> ();
73
+ flux_evaluator[VOL]
74
+ = make_shared<T_DifferentialOperator<MyDiffOpGradient>> ();
75
+ }
76
+ else
77
+ {
78
+ throw Exception ("TP0FESpace implemented only in 2D");
79
+ }
80
+ }
81
+
82
+ DocInfo TP0FESpace ::GetDocu ()
83
+ {
84
+ auto docu = FESpace::GetDocu ();
85
+ return docu;
86
+ }
87
+
88
+ int TP0FESpace ::LocalNDof (ELEMENT_TYPE eltype, int order) const
89
+ {
90
+ switch (eltype)
91
+ {
92
+ case ET_TRIG:
93
+ return (order - 1) * order / 2;
94
+ case ET_QUAD:
95
+ return (order + 1) * (order - 1);
96
+ default:
97
+ throw Exception ("TP0FESpace::LocalNDof: element type not supported");
98
+ }
99
+ }
100
+
101
+ void TP0FESpace ::Update ()
102
+ {
103
+ FESpace::Update ();
104
+ if (order_policy == OLDSTYLE_ORDER)
105
+ order_policy = CONSTANT_ORDER;
106
+
107
+ nel = ma->GetNE ();
108
+ first_element_dof.SetSize (nel);
109
+ if (order_policy == CONSTANT_ORDER || order_inner.Size () == 0)
110
+ {
111
+ order_inner.SetSize0 ();
112
+ ndof = 0;
113
+ for (int i = 0; i < nel; i++)
114
+ {
115
+ first_element_dof[i] = ndof;
116
+ ndof += LocalNDof (ma->GetElement (ElementId (VOL, i)).GetType (),
117
+ this->order);
118
+ }
119
+ // ndof = LocalNDof (this->order) * nel;
120
+ SetNDof (ndof);
121
+ }
122
+ else if (order_policy == VARIABLE_ORDER)
123
+ {
124
+ ndof = 0;
125
+ for (int i = 0; i < nel; i++)
126
+ {
127
+ first_element_dof[i] = ndof;
128
+ ndof += LocalNDof (ma->GetElement (ElementId (VOL, i)).GetType (),
129
+ order_inner[i]);
130
+ }
131
+ SetNDof (ndof);
132
+ }
133
+ else
134
+ throw Exception ("TP0FESpace: invalid order policy");
135
+
136
+ UpdateCouplingDofArray ();
137
+ }
138
+
139
+ void TP0FESpace ::SetOrder (NodeId ni, int norder)
140
+ {
141
+ if (order_policy == CONSTANT_ORDER || order_policy == NODE_TYPE_ORDER)
142
+ throw Exception ("In TP0FESpace::SetOrder. Order policy is "
143
+ "constant or node-type!");
144
+ else if (order_policy == OLDSTYLE_ORDER)
145
+ order_policy = VARIABLE_ORDER;
146
+
147
+ if (order < 0)
148
+ order = 0;
149
+
150
+ if (CoDimension (ni.GetType (), ma->GetDimension ()) == 0)
151
+ {
152
+ if (order_inner.Size () == 0)
153
+ {
154
+ order_inner.SetSize (ma->GetNE ());
155
+ order_inner = this->order;
156
+ }
157
+ order_inner[ni.GetNr ()] = norder;
158
+ }
159
+ else
160
+ throw Exception (
161
+ "TP0FESpace::SetOrder requires NodeType of codimension 0!");
162
+ }
163
+
164
+ int TP0FESpace ::GetOrder (NodeId ni) const
165
+ {
166
+ if (CoDimension (ni.GetType (), ma->GetDimension ()) == 0
167
+ && ni.GetNr () < order_inner.Size ())
168
+ return order_inner[ni.GetNr ()];
169
+ return 0;
170
+ }
171
+
172
+ void TP0FESpace ::GetDofNrs (ElementId ei, Array<DofId> &dnums) const
173
+ {
174
+ dnums.SetSize (0);
175
+ if (!DefinedOn (ei) || ei.VB () != VOL)
176
+ return;
177
+ int first_dof = first_element_dof[ei.Nr ()];
178
+ int local_ndof;
179
+ if (order_inner.Size () > 0)
180
+ local_ndof
181
+ = LocalNDof (ma->GetElement (ei).GetType (), order_inner[ei.Nr ()]);
182
+ else
183
+ local_ndof = LocalNDof (ma->GetElement (ei).GetType (), this->order);
184
+ for (int j = first_dof; j < first_dof + local_ndof; j++)
185
+ dnums.Append (j);
186
+ }
187
+
188
+ void TP0FESpace ::UpdateCouplingDofArray ()
189
+ {
190
+ ctofdof.SetSize (ndof);
191
+ for (auto i : Range (ma->GetNE ()))
192
+ {
193
+ bool definedon = DefinedOn (ElementId (VOL, i));
194
+ Array<DofId> dofs;
195
+ GetDofNrs (i, dofs);
196
+ for (auto r : dofs)
197
+ ctofdof[r] = definedon ? LOCAL_DOF : UNUSED_DOF;
198
+ }
199
+ }
200
+
201
+ FiniteElement &TP0FESpace ::GetFE (ElementId ei, Allocator &alloc) const
202
+ {
203
+
204
+ Ngs_Element ngel = ma->GetElement (ei);
205
+ ELEMENT_TYPE eltype = ngel.GetType ();
206
+ int D = ma->GetDimension ();
207
+ int order = order_inner.Size () > 0 ? order_inner[ei.Nr ()] : this->order;
208
+
209
+ if (ei.IsVolume ())
210
+ {
211
+ if (D == 2)
212
+ switch (eltype)
213
+ {
214
+ case ET_QUAD:
215
+ {
216
+ ElementTransformation &trafo = ma->GetTrafo (ei, alloc);
217
+ IntegrationPoint ip;
218
+ Mat<2, 2> jac;
219
+ trafo.CalcJacobian (ip, jac);
220
+ double xscale = L2Norm (jac.Col (0));
221
+ double yscale = L2Norm (jac.Col (1));
222
+ int zero_axis = yscale > xscale ? 1 : 0;
223
+
224
+ return *(new (alloc)
225
+ TP0FE (LocalNDof (ET_QUAD, order), order,
226
+ IVec<4> (ngel.Vertices ()), zero_axis));
227
+ break;
228
+ }
229
+ case ET_TRIG:
230
+ {
231
+ Ngs_Element ngel
232
+ = ma->GetElement<ET_trait<ET_TRIG>::DIM, VOL> (ei.Nr ());
233
+ L2HighOrderFE<ET_TRIG> *hofe
234
+ = new (alloc) L2HighOrderFE<ET_TRIG> ();
235
+ hofe->SetVertexNumbers (ngel.vertices);
236
+ hofe->L2HighOrderFE<ET_TRIG>::SetOrder (order - 2);
237
+ hofe->L2HighOrderFE<ET_TRIG>::ComputeNDof ();
238
+ return *hofe;
239
+ break;
240
+ }
241
+ default:
242
+ throw Exception ("eltype not supported in TP0FE");
243
+ }
244
+ else
245
+ throw Exception ("dimension not supported in TP0FE");
246
+ }
247
+ try
248
+ {
249
+ return SwitchET<ET_POINT, ET_SEGM, ET_TRIG, ET_QUAD> (
250
+ eltype, [&alloc] (auto et) -> FiniteElement & {
251
+ return *new (alloc) DummyFE<et.ElementType ()>;
252
+ });
253
+ }
254
+ catch (Exception &e)
255
+ {
256
+ throw Exception ("illegal element type in Trefftz::GetSurfaceFE");
257
+ }
258
+ }
259
+
260
+ static RegisterFESpace<TP0FESpace> initifes ("TP0FESpace");
261
+ }
262
+
263
+ #ifdef NGS_PYTHON
264
+ void ExportTP0FESpace (py::module m)
265
+ {
266
+ using namespace ngcomp;
267
+
268
+ ExportFESpace<TP0FESpace> (m, "TP0FESpace");
269
+ }
270
+ #endif // NGS_PYTHON
@@ -37,12 +37,20 @@ namespace ngcomp
37
37
  MAT &mat, LocalHeap &lh)
38
38
  {
39
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);
40
+ // Cast (fel).CalcShape (mip.IP (), mat.Row (0));
41
+ switch (fel.ElementType ())
42
+ {
43
+ case ET_QUAD:
44
+ static_cast<const TP0FE &> (fel).CalcShape (mip.IP (), mat.Row (0));
45
+ break;
46
+ case ET_TRIG:
47
+ static_cast<const L2HighOrderFE<ET_TRIG> &> (fel).CalcShape (
48
+ mip.IP (), mat.Row (0));
49
+ break;
50
+ default:
51
+ throw Exception ("MyDiffOpId: " + ToString (fel.ElementType ())
52
+ + " not supported");
53
+ }
46
54
  }
47
55
  };
48
56
 
@@ -75,8 +83,11 @@ namespace ngcomp
75
83
 
76
84
  class TP0FESpace : public FESpace
77
85
  {
78
- int local_ndof;
79
86
  int nel;
87
+ Array<int> order_inner;
88
+ Array<int> first_element_dof;
89
+
90
+ int LocalNDof (ELEMENT_TYPE eltype, int order) const;
80
91
 
81
92
  public:
82
93
  TP0FESpace (shared_ptr<MeshAccess> ama, const Flags &flags);
@@ -88,6 +99,9 @@ namespace ngcomp
88
99
  void Update () override;
89
100
  virtual void UpdateCouplingDofArray () override;
90
101
 
102
+ virtual void SetOrder (NodeId ni, int norder) override;
103
+ virtual int GetOrder (NodeId ni) const override;
104
+
91
105
  void GetDofNrs (ElementId ei, Array<DofId> &dnums) const override;
92
106
  FiniteElement &GetFE (ElementId ei, Allocator &alloc) const override;
93
107
  };
@@ -1,177 +0,0 @@
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