ngstrefftz 0.3.2403.dev17__tar.gz → 0.3.2405.dev5__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (147) hide show
  1. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/.github/workflows/build.yml +1 -1
  2. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/CMakeLists.txt +69 -71
  3. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/PKG-INFO +4 -5
  4. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/_version.py +2 -2
  5. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/docs/notebooks/tunfitted.ipynb +3 -0
  6. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/docs/notebooks/twavetents.ipynb +1 -2
  7. ngstrefftz-0.3.2405.dev5/docs/requirements.txt +26 -0
  8. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/pyproject.toml +11 -14
  9. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/src/__init__.py +0 -1
  10. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/src/embtrefftz.cpp +63 -20
  11. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/src/embtrefftz.hpp +13 -0
  12. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/src/monomialfespace.cpp +6 -6
  13. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/src/monomialfespace.hpp +1 -1
  14. ngstrefftz-0.3.2405.dev5/src/pufe.cpp +345 -0
  15. ngstrefftz-0.3.2405.dev5/src/pufe.hpp +176 -0
  16. ngstrefftz-0.3.2405.dev5/src/pufespace.cpp +165 -0
  17. ngstrefftz-0.3.2405.dev5/src/pufespace.hpp +95 -0
  18. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/src/python_trefftz.cpp +5 -1
  19. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/src/scalarmappedfe.cpp +1 -32
  20. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/src/scalarmappedfe.hpp +31 -0
  21. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/src/trefftzfespace.cpp +4 -4
  22. ngstrefftz-0.3.2403.dev17/docs/requirements.txt +0 -25
  23. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/.clang-format +0 -0
  24. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/.github/workflows/fix_auditwheel_policy.py +0 -0
  25. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/.github/workflows/pyodide/Dockerfile +0 -0
  26. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/.github/workflows/pyodide/build_in_docker.sh +0 -0
  27. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/.github/workflows/pyodide/merge.py +0 -0
  28. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/.github/workflows/pyodide/requirements.txt +0 -0
  29. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/.gitmodules +0 -0
  30. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/CONTRIBUTING.md +0 -0
  31. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/Dockerfile +0 -0
  32. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/LICENSE +0 -0
  33. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/README.md +0 -0
  34. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/docs/_static/breadcrumbs.html +0 -0
  35. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/docs/_static/css/mytheme.css +0 -0
  36. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/docs/conf.py +0 -0
  37. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/docs/contrib.rst +0 -0
  38. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/docs/docu.rst +0 -0
  39. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/docs/index.rst +0 -0
  40. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/docs/intro.rst +0 -0
  41. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/docs/notebooks/embTrefftz-adv.ipynb +0 -0
  42. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/docs/notebooks/embTrefftz-helm.ipynb +0 -0
  43. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/docs/notebooks/embTrefftz-poi.ipynb +0 -0
  44. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/docs/notebooks/embTrefftz-stokes.ipynb +0 -0
  45. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/docs/notebooks/embTrefftz-wave.ipynb +0 -0
  46. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/docs/notebooks/embTrefftz.ipynb +0 -0
  47. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/docs/notebooks/helmholtz.ipynb +0 -0
  48. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/docs/notebooks/index.ipynb +0 -0
  49. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/docs/notebooks/laplace.ipynb +0 -0
  50. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/docs/notebooks/qtelliptic.ipynb +0 -0
  51. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/docs/notebooks/qtwave.ipynb +0 -0
  52. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/docs/notebooks/twave.ipynb +0 -0
  53. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/docs/paper/codemeta.json +0 -0
  54. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/docs/paper/paper.bib +0 -0
  55. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/docs/paper/paper.md +0 -0
  56. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/docs/readme.rst +0 -0
  57. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/external_dependencies/ngstents/.git +0 -0
  58. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/external_dependencies/ngstents/.github/workflows/build.yml +0 -0
  59. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/external_dependencies/ngstents/.github/workflows/build_pip.ps1 +0 -0
  60. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/external_dependencies/ngstents/.github/workflows/build_pip.sh +0 -0
  61. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/external_dependencies/ngstents/.github/workflows/build_pip_mac.sh +0 -0
  62. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/external_dependencies/ngstents/.github/workflows/fix_auditwheel_policy.py +0 -0
  63. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/external_dependencies/ngstents/.github/workflows/ngsolve_version.txt +0 -0
  64. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/external_dependencies/ngstents/README.md +0 -0
  65. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/external_dependencies/ngstents/demo/advection/Advection_Periodic_Clipping.ipynb +0 -0
  66. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/external_dependencies/ngstents/demo/advection/advection2d.py +0 -0
  67. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/external_dependencies/ngstents/demo/advection/advection2d_periodic.py +0 -0
  68. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/external_dependencies/ngstents/demo/burgers/Burgers_Clipping.ipynb +0 -0
  69. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/external_dependencies/ngstents/demo/burgers/burgers1d.py +0 -0
  70. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/external_dependencies/ngstents/demo/burgers/burgers2d.py +0 -0
  71. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/external_dependencies/ngstents/demo/euler/Euler_Clipping.ipynb +0 -0
  72. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/external_dependencies/ngstents/demo/euler/euler2d.py +0 -0
  73. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/external_dependencies/ngstents/demo/euler/mach3_windtunnel.py +0 -0
  74. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/external_dependencies/ngstents/demo/maxwell/maxwell3d.py +0 -0
  75. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/external_dependencies/ngstents/demo/symbolic/symbolic_advection2d.py +0 -0
  76. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/external_dependencies/ngstents/demo/symbolic/symbolic_burgers.py +0 -0
  77. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/external_dependencies/ngstents/demo/symbolic/symbolic_euler.py +0 -0
  78. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/external_dependencies/ngstents/demo/symbolic/symbolic_wave.py +0 -0
  79. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/external_dependencies/ngstents/demo/symbolic/symbolic_wave1d_interface.py +0 -0
  80. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/external_dependencies/ngstents/demo/symbolic/wave_penetrable_cylinder.py +0 -0
  81. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/external_dependencies/ngstents/demo/tents/draw3dtent.py +0 -0
  82. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/external_dependencies/ngstents/demo/tents/draw3dvertex.py +0 -0
  83. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/external_dependencies/ngstents/demo/wave/horn.py +0 -0
  84. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/external_dependencies/ngstents/demo/wave/wave2d.py +0 -0
  85. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/external_dependencies/ngstents/demo/wave/wave2d_timedepbc.py +0 -0
  86. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/external_dependencies/ngstents/demo/wave/wave3d.py +0 -0
  87. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/external_dependencies/ngstents/docs/BurgersMTP.ipynb +0 -0
  88. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/external_dependencies/ngstents/docs/INDEX.ipynb +0 -0
  89. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/external_dependencies/ngstents/docs/StartPitching.ipynb +0 -0
  90. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/external_dependencies/ngstents/docs/conf.py +0 -0
  91. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/external_dependencies/ngstents/docs/figs/CausalityCond.png +0 -0
  92. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/external_dependencies/ngstents/docs/figs/dag.png +0 -0
  93. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/external_dependencies/ngstents/docs/figs/map.png +0 -0
  94. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/external_dependencies/ngstents/docs/figs/subtents.png +0 -0
  95. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/external_dependencies/ngstents/docs/index.rst +0 -0
  96. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/external_dependencies/ngstents/docs/readme.rst +0 -0
  97. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/external_dependencies/ngstents/docs/requirements.txt +0 -0
  98. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/external_dependencies/ngstents/py/__init__.py +0 -0
  99. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/external_dependencies/ngstents/py/conslaw/__init__.py +0 -0
  100. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/external_dependencies/ngstents/py/utils/__init__.py +0 -0
  101. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/external_dependencies/ngstents/py/utils/_drawtents.py +0 -0
  102. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/external_dependencies/ngstents/py/utils/_drawtents2d.py +0 -0
  103. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/external_dependencies/ngstents/setup.py +0 -0
  104. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/external_dependencies/ngstents/src/CMakeLists.txt +0 -0
  105. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/external_dependencies/ngstents/src/advection.cpp +0 -0
  106. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/external_dependencies/ngstents/src/burgers.cpp +0 -0
  107. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/external_dependencies/ngstents/src/concurrentqueue.h +0 -0
  108. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/external_dependencies/ngstents/src/conservationlaw.hpp +0 -0
  109. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/external_dependencies/ngstents/src/euler.cpp +0 -0
  110. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/external_dependencies/ngstents/src/maxwell.cpp +0 -0
  111. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/external_dependencies/ngstents/src/paralleldepend.hpp +0 -0
  112. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/external_dependencies/ngstents/src/python_conslaw.cpp +0 -0
  113. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/external_dependencies/ngstents/src/python_tents.cpp +0 -0
  114. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/external_dependencies/ngstents/src/symbolic.cpp +0 -0
  115. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/external_dependencies/ngstents/src/tconservationlaw_tp_impl.hpp +0 -0
  116. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/external_dependencies/ngstents/src/tents.cpp +0 -0
  117. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/external_dependencies/ngstents/src/tents.hpp +0 -0
  118. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/external_dependencies/ngstents/src/tentsolver.hpp +0 -0
  119. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/external_dependencies/ngstents/src/tentsolver_impl.hpp +0 -0
  120. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/external_dependencies/ngstents/src/vis3d.cpp +0 -0
  121. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/external_dependencies/ngstents/src/vis3d.hpp +0 -0
  122. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/external_dependencies/ngstents/src/wave.cpp +0 -0
  123. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/external_dependencies/ngstents/tests/test_burgers_2D.py +0 -0
  124. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/external_dependencies/ngstents/tests/test_causal_tents.py +0 -0
  125. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/external_dependencies/ngstents/tests/test_conslaw.py +0 -0
  126. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/external_dependencies/ngstents/tests/test_tent_height_2D.py +0 -0
  127. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/external_dependencies/ngstents/tests/test_tentlayers.py +0 -0
  128. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/src/airy.cpp +0 -0
  129. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/src/condensedg.cpp +0 -0
  130. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/src/condensedg.hpp +0 -0
  131. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/src/diffopmapped.hpp +0 -0
  132. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/src/mesh1dtents.cpp +0 -0
  133. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/src/mesh1dtents.hpp +0 -0
  134. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/src/ngsttd.hpp +0 -0
  135. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/src/planewavefe.cpp +0 -0
  136. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/src/planewavefe.hpp +0 -0
  137. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/src/specialcoefficientfunction.cpp +0 -0
  138. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/src/specialcoefficientfunction.hpp +0 -0
  139. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/src/specialintegrator.cpp +0 -0
  140. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/src/specialintegrator.hpp +0 -0
  141. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/src/trefftzfespace.hpp +0 -0
  142. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/src/twavetents.cpp +0 -0
  143. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/src/twavetents.hpp +0 -0
  144. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/test/dg.py +0 -0
  145. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/test/embt.py +0 -0
  146. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/test/tents.py +0 -0
  147. {ngstrefftz-0.3.2403.dev17 → ngstrefftz-0.3.2405.dev5}/test/trefftz.py +0 -0
@@ -26,7 +26,7 @@ jobs:
26
26
  with:
27
27
  python-version: '3.12'
28
28
  - name: install ngstrefftz
29
- run: cd NGSTrefftz && pip install numpy mkl-devel==2024.* mkl==2024.* && pip install .
29
+ run: cd NGSTrefftz && pip install numpy mkl-devel==2024.* mkl==2024.* && pip install . -v
30
30
  - name: run test
31
31
  run: cd $GITHUB_WORKSPACE/NGSTrefftz/test && python3 -m doctest -v *.py
32
32
 
@@ -14,30 +14,13 @@ file(DOWNLOAD https://raw.githubusercontent.com/NGSolve/ngsolve-addon-template/m
14
14
  set(CMAKE_MODULE_PATH "${CMAKE_MODULE_PATH}" "${CMAKE_BINARY_DIR}/cmake_modules")
15
15
  set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR} CACHE PATH "build dir")
16
16
 
17
- ### add ngstents dependency if needed
18
- set(INSTALL_TENTS ON CACHE BOOL "Install ngstents")
19
- if (INSTALL_TENTS)# AND NOT TARGET _pytents)
20
- include_directories(${CMAKE_SOURCE_DIR}/external_dependencies/ngstents/src)
21
- set(addon_name _pytents)
22
- project(_pytents)
23
- include(${CMAKE_BINARY_DIR}/cmake_modules/ngsolve_addon.cmake)
24
- add_ngsolve_addon( _pytents
25
- ${CMAKE_SOURCE_DIR}/external_dependencies/ngstents/src/python_tents.cpp
26
- ${CMAKE_SOURCE_DIR}/external_dependencies/ngstents/src/tents.cpp
27
- )
28
- target_compile_definitions(_pytents PRIVATE NGSTENT_EXPORTS)
29
- set_target_properties(_pytents PROPERTIES LIBRARY_OUTPUT_DIRECTORY "${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/ngstents")
30
- file(WRITE ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/ngstents/__init__.py "from ._pytents import TentSlab, Tent")
31
- set(install_dir ${ADDON_INSTALL_DIR_PYTHON}/ngstents)
32
- install(TARGETS _pytents DESTINATION ${install_dir})
33
- install(FILES ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/ngstents/__init__.py DESTINATION ${install_dir})
34
- endif(INSTALL_TENTS)
35
-
36
17
  ### ngstrefftz
37
18
  set(addon_name _trefftz)
38
19
  project(_trefftz)
20
+ include_directories(${CMAKE_SOURCE_DIR}/external_dependencies/ngstents/src)
39
21
  include(${CMAKE_BINARY_DIR}/cmake_modules/ngsolve_addon.cmake)
40
22
  add_ngsolve_addon( _trefftz
23
+ ${CMAKE_SOURCE_DIR}/external_dependencies/ngstents/src/tents.cpp
41
24
  src/python_trefftz.cpp
42
25
  src/diffopmapped.hpp
43
26
  src/scalarmappedfe.cpp
@@ -50,83 +33,99 @@ add_ngsolve_addon( _trefftz
50
33
  src/monomialfespace.cpp
51
34
  src/mesh1dtents.cpp
52
35
  src/condensedg.cpp
36
+ src/pufe.cpp
37
+ src/pufespace.cpp
53
38
  #src/airy.cpp #for testing, requires boost
54
39
  )
55
- target_link_libraries(_trefftz PRIVATE _pytents)
56
40
  target_compile_definitions(_trefftz PRIVATE NGSTREFFTZ_EXPORTS)
41
+ target_compile_definitions(_trefftz PRIVATE NGSTENT_EXPORTS)
57
42
 
58
43
  ### link LAPACK or MKL if possible
59
44
  set(NGSTREFFTZ_USE_MKL ${NGSOLVE_USE_MKL} CACHE BOOL "Try to use mkl")
60
45
  set(NGSTREFFTZ_USE_LAPACK ${NGSOLVE_USE_LAPACK} CACHE BOOL "Try to use lapack from ngsolve")
61
46
  if (NGSTREFFTZ_USE_MKL)
62
- #list(GET NGSOLVE_INCLUDE_DIRS 0 NGSOLVE_MKL_INCLUDE_DIRS)
63
- file(DOWNLOAD https://raw.githubusercontent.com/NGSolve/ngsolve/master/cmake/cmake_modules/FindMKL.cmake ${CMAKE_BINARY_DIR}/cmake_modules/FindMKL.cmake)
47
+ file(DOWNLOAD
48
+ https://raw.githubusercontent.com/NGSolve/ngsolve/master/cmake/cmake_modules/FindMKL.cmake
49
+ "${CMAKE_BINARY_DIR}/cmake_modules/FindMKL.cmake")
50
+
51
+ #file(COPY ${CMAKE_SOURCE_DIR}/FindMKL.cmake DESTINATION
52
+ #"${CMAKE_BINARY_DIR}/cmake_modules/FindMKL.cmake")
53
+
54
+ #message(STATUS "MKL_ROOT=${MKL_ROOT}")
55
+ #message(STATUS "NGSOLVED=${NGSolve_DIR}")
56
+
64
57
 
58
+ #set(PIP_MKL_ROOT FALSE CACHE BOOL "Set to true if MKL_ROOT is set by pip")
59
+ #message(STATUS "PIP_MKL_ROOT=${PIP_MKL_ROOT}")
60
+ #if(PIP_MKL_ROOT AND LINUX)
61
+ #set(MKL_ROOT "${NGSolve_DIR}/../../.." CACHE PATH "MKL root directory" )
62
+ #set(MKL_LIBRARY "${MKL_ROOT}/lib/libmkl_rt.so.2" CACHE PATH "MKL library" )
63
+ #set(MKL_INCLUDE_DIR "${MKL_ROOT}/include" CACHE PATH "MKL include directory" )
64
+ #message(STATUS "set MKL_LIBRARY=${MKL_LIBRARY}")
65
+ #elseif(PIP_MKL_ROOT AND WIN32)
66
+ #set(MKL_ROOT "${NGSolve_DIR}/../../../.." CACHE PATH "MKL root directory" )
67
+ #set(MKL_LIBRARY "${MKL_ROOT}/Library/lib/mkl_rt.lib" CACHE PATH "MKL library" )
68
+ #set(MKL_INCLUDE_DIR "${MKL_ROOT}/Library/include" CACHE PATH "MKL include directory" )
69
+ #endif()
70
+
71
+ set(MKL_ARCH "intel64")
72
+ if(NOT MKL_INTERFACE)
73
+ set(MKL_INTERFACE "lp64")
74
+ endif(NOT MKL_INTERFACE)
65
75
  set(MKL_MULTI_THREADED ON CACHE BOOL "Use threaded MKL libs")
66
76
  if(NOT MKL_MULTI_THREADED)
67
77
  set(MKL_THREADING sequential)
68
78
  endif()
69
79
  set(MKL_STATIC OFF CACHE BOOL "Link static MKL")
70
80
  set(MKL_SDL ON CACHE BOOL "Link single dynamic MKL lib")
71
- set(MKL_ARCH "intel64")
72
81
  if(NOT MKL_LINK)
73
82
  if(MKL_STATIC)
74
83
  set(MKL_LINK static)
75
- elseif(MKL_SDL AND NOT USE_MPI)
84
+ elseif(MKL_SDL)
76
85
  set(MKL_LINK sdl)
77
86
  else()
78
87
  set(MKL_LINK dynamic)
79
88
  endif()
80
89
  endif()
81
- #execute_process(COMMAND ${Python3_EXECUTABLE} -c "import sys; print(sys.prefix)"
82
- #OUTPUT_STRIP_TRAILING_WHITESPACE OUTPUT_VARIABLE rootdir)
83
- #if(WIN32)
84
- #set(MKL_ROOT ${rootdir})
85
- #set(MKL_LIBRARY ${rootdir}/Library/lib/mkl_rt.lib)
86
- #set(MKL_INCLUDE_DIR ${rootdir}/Library/include)
87
- #elseif(UNIX AND NOT APPLE)
88
- #set(MKL_ROOT ${rootdir})
89
- #set(MKL_LIBRARY ${rootdir}/lib/libmkl_rt.so.2)
90
- #set(MKL_INCLUDE_DIR ${rootdir}/include)
91
- #endif()
92
- find_package(MKL) # HINTS ${MKL_ROOT} ${CMAKE_INSTALL_PREFIX}/../../cmake/mkl ${Python3_ROOT_DIR}/lib/cmake/mkl)
93
- #message("MKL minimal: ${MKL_MINIMAL_LIBRARIES}")
94
- #message("MKL libraries: ${MKL_LIBRARIES}")
95
- #message("MKL link flags: ${MKL_LINK_FLAGS}")
96
-
97
- #if(MKL_FOUND)
98
- if(MKL_MINIMAL_LIBRARIES)
99
- set(LAPACK_LIBRARIES "${MKL_LIBRARIES}")
100
- message(STATUS "Setting LAPACK_LIBRARIES=${LAPACK_LIBRARIES}")
101
- target_include_directories(_trefftz PRIVATE "${MKL_INCLUDE_DIRS}")
90
+
91
+ file(WRITE ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/findmklconf.py
92
+ "from contextlib import suppress;import importlib.metadata; \
93
+ [print( f.locate().parent.resolve().absolute().as_posix()) \
94
+ if f.match('MKLConfig.cmake') else 0 for f in importlib.metadata.files('mkl-devel')]")
95
+ execute_process(COMMAND ${Python3_EXECUTABLE} ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/findmklconf.py
96
+ ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE OUTPUT_VARIABLE MKL_CONF_FROM_PY)
97
+ if(MKL_CONF_FROM_PY)
98
+ message(STATUS "MKL_CONF_FROM_PY=${MKL_CONF_FROM_PY}")
99
+ message(STATUS "pylibdir=${python3_library_dir}")
100
+ set(MKL_ROOT "${MKL_CONF_FROM_PY}/../../.." CACHE PATH "MKL root directory" )
101
+ set(MKL_LIBRARY "${MKL_ROOT}/lib/libmkl_rt.so.2" CACHE PATH "MKL library" )
102
+ set(MKL_INCLUDE_DIR "${MKL_ROOT}/include" CACHE PATH "MKL include directory" )
102
103
  endif()
103
- if(MKL_LIBRARY)
104
- message(STATUS "MKL_LIBRARY=${MKL_LIBRARY}")
105
- #if(WIN32)
106
- #set(LAPACK_LIBRARIES "${MKL_MINIMAL_LIBRARIES}")
107
- #else()
108
- #set(LAPACK_LIBRARIES "${MKL_LIBRARIES}")
109
- #endif()
110
- #if(NOT MKL_LIBRARIES)
111
- #if(APPLE OR WIN32)
112
- #set(MKL_RT_NAME mkl_rt.2)
113
- #else()
114
- #set(MKL_RT_NAME libmkl_rt.so.2)
115
- #endif()
116
- get_filename_component(MKL_RT_NAME ${MKL_LIBRARY} NAME)
117
- message(STATUS "MKL_RT_NAME=${MKL_RT_NAME}")
118
- find_library(MKLRT ${MKL_RT_NAME} HINTS ${MKL_ROOT}/lib ${MKL_LIBRARY})
119
- message(STATUS "MKLRT=${MKLRT}")
120
- if(MKLRT)
121
- set(LAPACK_LIBRARIES ${MKLRT})
122
- message(STATUS "MKLRT setting LAPACK_LIBRARIES=${LAPACK_LIBRARIES}")
123
- endif()
124
- #else()
125
- #message("${Red}MKL not found, switching off NGSTREFFTZ_USE_LAPACK!${ColourReset}")
126
- #set(NGSTREFFTZ_USE_LAPACK OFF)
104
+ #set(MKL_VERSION_H "${MKL_ROOT}/include/mkl_version.h")
105
+
106
+ #set(d lib/cmake/mkl)
107
+ #find_package(MKL CONFIG REQUIRED HINTS ${MKL_CONF} ${MKL_ROOT}/${d} PATHS /opt/intel/oneapi/mkl/latest/${d} ~/.local/${d})
108
+
109
+ unset(USE_MPI CACHE)
110
+ find_package(MKL)
111
+
112
+ #if(USE_MUMPS)
113
+ ## include scalapack
114
+ #set( LAPACK_LIBRARIES "${MKL_LIBRARIES}")
115
+ #set( ENABLE_SCALAPACK ON)
116
+ #else(USE_MUMPS)
117
+ #set( LAPACK_LIBRARIES "${MKL_MINIMAL_LIBRARIES}")
118
+ #endif(USE_MUMPS)
119
+
120
+ if(MKL_FOUND)
121
+ message(STATUS "Found MKL_MINIMAL_LIBRARIES=${MKL_MINIMAL_LIBRARIES}")
122
+ set( LAPACK_LIBRARIES "${MKL_MINIMAL_LIBRARIES}")
123
+ else()
124
+ message("${Red}MKL not found!${ColourReset}")
127
125
  endif()
128
126
  endif (NGSTREFFTZ_USE_MKL)
129
127
  if(NGSTREFFTZ_USE_LAPACK AND NOT LAPACK_LIBRARIES)
128
+ message(STATUS "Looking for LAPACK")
130
129
  find_package(LAPACK)
131
130
  endif(NGSTREFFTZ_USE_LAPACK AND NOT LAPACK_LIBRARIES)
132
131
  if(LAPACK_LIBRARIES)
@@ -155,11 +154,10 @@ message("${BoldCyan}
155
154
  Enabled functionality:
156
155
  LAPACK: ............ ${NGSTREFFTZ_USE_LAPACK}
157
156
  MKL: ............... ${NGSTREFFTZ_USE_MKL}
158
- ngstents: .......... ${INSTALL_TENTS}
159
157
 
160
158
  With 'make install' the package will be installed to: ${CMAKE_INSTALL_PREFIX}
161
159
  Make sure to add it to the python path:
162
- --> export PYTHONPATH=${CMAKE_INSTALL_PREFIX}/${ADDON_INSTALL_DIR_PYTHON}:$PYTHONPATH
160
+ --> export PYTHONPATH=${CMAKE_INSTALL_PREFIX}/${python3_library_dir}:$PYTHONPATH
163
161
  ------------------------------------------------------------------------
164
162
  \n${ColourReset}")
165
163
 
@@ -1,15 +1,14 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ngstrefftz
3
- Version: 0.3.2403.dev17
3
+ Version: 0.3.2405.dev5
4
4
  Summary: NGSTrefftz is an add-on to NGSolve for Trefftz methods.
5
5
  Author-Email: Paul Stocker <paul.stocker@univie.ac.at>
6
- License: LGPL2.1
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.8
10
- Requires-Dist: ngsolve==6.2.2404.post16
11
- Requires-Dist: pytest; extra == "test"
12
- Provides-Extra: test
10
+ Requires-Dist: mkl>=2024.2.0
11
+ Requires-Dist: ngsolve>=6.2.2404.post22.dev0
13
12
  Description-Content-Type: text/markdown
14
13
 
15
14
  # NGSTrefftz
@@ -12,5 +12,5 @@ __version__: str
12
12
  __version_tuple__: VERSION_TUPLE
13
13
  version_tuple: VERSION_TUPLE
14
14
 
15
- __version__ = version = '0.3.2403.dev17'
16
- __version_tuple__ = version_tuple = (0, 3, 2403, 'dev17')
15
+ __version__ = version = '0.3.2405.dev5'
16
+ __version_tuple__ = version_tuple = (0, 3, 2405, 'dev5')
@@ -270,6 +270,9 @@
270
270
  }
271
271
  ],
272
272
  "metadata": {
273
+ "nbsphinx": {
274
+ "allow_errors": true
275
+ },
273
276
  "kernelspec": {
274
277
  "display_name": "Python 3 (ipykernel)",
275
278
  "language": "python",
@@ -18,8 +18,7 @@
18
18
  "metadata": {},
19
19
  "outputs": [],
20
20
  "source": [
21
- "from ngstrefftz import TWave\n",
22
- "from ngstents._pytents import TentSlab\n",
21
+ "from ngstrefftz import *\n",
23
22
  "from ngsolve.TensorProductTools import *\n",
24
23
  "from netgen.occ import *\n",
25
24
  "from ngsolve import *\n",
@@ -0,0 +1,26 @@
1
+ setuptools>=70
2
+ setuptools_scm>=8
3
+ jupyter>=1.0.0
4
+
5
+ matplotlib>=3.9.0
6
+ matplotlib-inline>=0.1.6
7
+
8
+ sphinx>=7.3.7
9
+ pandoc>=2.3
10
+ nbconvert>=7.16.4
11
+ nbformat>=5.10.4
12
+ nbsphinx>=0.8.9
13
+ notebook>=7.2.0
14
+
15
+ Sphinx>=7.3.7
16
+ sphinx-rtd-theme>=2.0.0
17
+ sphinxemoji>=0.3.1
18
+ jupyter_sphinx>=0.5.3
19
+ myst_parser>=3.0.1
20
+
21
+ numpy>=2.0.0
22
+ scipy>=1.13.1
23
+ ngsolve>=6.2.2404.post22.dev0
24
+ #xfem>=2.1.2404
25
+ ngstrefftz>=0.3.2405.dev4
26
+ webgui-jupyter-widgets>=0.2.35
@@ -1,21 +1,23 @@
1
1
  [project]
2
2
  name = "ngstrefftz"
3
- dynamic = ["version", "dependencies"]
3
+ dynamic = ["version"] #, "dependencies"]
4
4
  authors = [ {name = "Paul Stocker", email = "paul.stocker@univie.ac.at"} ]
5
5
  description='NGSTrefftz is an add-on to NGSolve for Trefftz methods.'
6
6
  readme = "README.md"
7
- license= { text = "LGPL2.1" }
8
7
  requires-python = ">=3.8"
9
- #classifiers = [
10
- #"License :: OSI Approved :: GNU Lesser General Public License v3 (LGPLv3)",
11
- #]
8
+ classifiers = [
9
+ "License :: OSI Approved :: GNU Lesser General Public License v3 (LGPLv3)",
10
+ ]
11
+ dependencies = [ "mkl>=2024.2.0", "ngsolve>=6.2.2404.post22.dev0", ]
12
12
 
13
13
  [project.urls]
14
14
  Documentation = "https://paulst.github.io/NGSTrefftz"
15
15
  Repository = "https://github.com/PaulSt/ngstrefftz"
16
16
 
17
17
  [build-system]
18
- requires = ["setuptools>=45", "setuptools_scm[toml]>=8", "toml", "scikit-build-core>=0.3.3", "pybind11_stubgen", "cmake>=3.26.1", "ngsolve>=6.2.2404", 'mkl-devel>=2024 ; platform_system != "Darwin"']
18
+ requires = ["ngsolve>=6.2.2404.post22.dev0",
19
+ "setuptools>=45", "setuptools_scm[toml]>=8", "toml", "scikit-build-core>=0.3.3", "pybind11_stubgen", "cmake>=3.26.1",
20
+ 'mkl==2024.* ; platform_system != "Darwin"', 'mkl-devel==2024.* ; platform_system != "Darwin"']
19
21
  build-backend = "scikit_build_core.build"
20
22
 
21
23
  [tool.scikit-build]
@@ -24,21 +26,16 @@ ninja.version = ">=1.11"
24
26
  metadata.version.provider = "scikit_build_core.metadata.setuptools_scm"
25
27
  sdist.include = ["_version.py"]
26
28
  #build-dir = "./build_py/{wheel_tag}" # local build directory - for debugging
27
-
28
29
  experimental = true
29
30
  # This adds ngsolve (with exact build-time version) to the dependencies
30
- metadata.dependencies.provider="ngsolve._scikit_build_core_dependencies"
31
+ #metadata.dependencies.provider="ngsolve._scikit_build_core_dependencies"
32
+
33
+ [tool.scikit-build.cmake.define]
31
34
 
32
35
  [tool.setuptools_scm] # Section required
33
36
  write_to = "_version.py"
34
37
  local_scheme = "no-local-version"
35
38
 
36
- [project.optional-dependencies]
37
- test = ["pytest"]
38
-
39
- [tool.pytest.ini_options]
40
- testpaths = ["tests"]
41
-
42
39
  [tool.cibuildwheel]
43
40
  #build-verbosity = 1
44
41
  skip = """
@@ -1,7 +1,6 @@
1
1
  from ngsolve.fem import ET,IntegrationRule
2
2
  from ngsolve.comp import L2,BilinearForm,LinearForm,SymbolicBFI,SymbolicLFI,FESpace
3
3
  from ngsolve.fem import CoordCF
4
- from ngstents import TentSlab, Tent
5
4
  from ._trefftz import *
6
5
 
7
6
  def GetWave(self,U):
@@ -470,7 +470,8 @@ namespace ngcomp
470
470
  this->ctofdof.SetSize (newndof);
471
471
  for (int i = 0; i < ndof; i++)
472
472
  if (all2comp[i] >= 0)
473
- this->ctofdof[all2comp[i]] = T::GetDofCouplingType (i);
473
+ this->ctofdof[all2comp[i]] = fes->GetDofCouplingType (i);
474
+ // this->ctofdof[all2comp[i]] = T::GetDofCouplingType (i);
474
475
 
475
476
  T::FinalizeUpdate ();
476
477
  return std::get<1> (embtr);
@@ -511,7 +512,7 @@ namespace ngcomp
511
512
  if (type == TRANSFORM_MAT_LEFT_RIGHT)
512
513
  {
513
514
  temp_mat.Cols (0, nz) = mat * (*(ETmats[ei.Nr ()]));
514
- mat.Rows (0, nz) = Trans (*(ETmats[ei.Nr ()])) * temp_mat;
515
+ mat.Cols (0, nz).Rows (0, nz) = Trans (*(ETmats[ei.Nr ()])) * temp_mat;
515
516
  }
516
517
  }
517
518
 
@@ -539,23 +540,55 @@ namespace ngcomp
539
540
  }
540
541
  }
541
542
 
542
- template class EmbTrefftzFESpace<L2HighOrderFESpace,
543
- shared_ptr<L2HighOrderFESpace>>;
544
- static RegisterFESpace<
545
- EmbTrefftzFESpace<L2HighOrderFESpace, shared_ptr<L2HighOrderFESpace>>>
546
- initembt ("L2EmbTrefftzFESpace");
543
+ template <typename T, typename shrdT>
544
+ shared_ptr<GridFunction>
545
+ EmbTrefftzFESpace<T, shrdT>::Embed (shared_ptr<GridFunction> tgfu)
546
+ {
547
+ LocalHeap lh (1000 * 1000 * 1000);
548
+ Flags flags;
549
+
550
+ auto tvec = tgfu->GetVectorPtr ();
551
+
552
+ auto gfu = CreateGridFunction (this->fes, "pws", flags);
553
+ gfu->Update ();
554
+ auto vec = gfu->GetVectorPtr ();
547
555
 
548
- // template class EmbTrefftzFESpace<VectorL2FESpace,
549
- // shared_ptr<VectorL2FESpace>>;
556
+ this->ma->IterateElements (VOL, lh, [&] (auto ei, LocalHeap &mlh) {
557
+ Array<DofId> dofs, tdofs;
558
+ this->fes->GetDofNrs (ei, dofs);
559
+ tdofs.SetSize (dofs.Size ());
560
+ tdofs.SetSize0 ();
561
+
562
+ for (DofId d : dofs)
563
+ if (all2comp[d] >= 0)
564
+ tdofs.Append (all2comp[d]);
565
+
566
+ FlatVector<> telvec (tdofs.Size (), mlh);
567
+ tvec->GetIndirect (tdofs, telvec);
568
+
569
+ FlatVector<> elvec (dofs.Size (), mlh);
570
+ elvec = (*(ETmats[ei.Nr ()])) * telvec;
571
+ vec->SetIndirect (dofs, elvec);
572
+ });
573
+ return gfu;
574
+ }
575
+
576
+ template <typename T, typename shrdT>
577
+ shared_ptr<BaseMatrix> EmbTrefftzFESpace<T, shrdT>::GetEmbedding ()
578
+ {
579
+ return Elmats2Sparse<double> (ETmats, this->fes);
580
+ }
581
+
582
+ // template class EmbTrefftzFESpace<L2HighOrderFESpace,
583
+ // shared_ptr<L2HighOrderFESpace>>;
550
584
  // static RegisterFESpace<
551
- // EmbTrefftzFESpace<VectorL2FESpace, shared_ptr<VectorL2FESpace>>>
552
- // initembt2 ("VL2EmbTrefftzFESpace");
553
-
554
- template class EmbTrefftzFESpace<MonomialFESpace,
555
- shared_ptr<MonomialFESpace>>;
556
- static RegisterFESpace<
557
- EmbTrefftzFESpace<MonomialFESpace, shared_ptr<MonomialFESpace>>>
558
- initembt3 ("MonomialEmbTrefftzFESpace");
585
+ // EmbTrefftzFESpace<L2HighOrderFESpace, shared_ptr<L2HighOrderFESpace>>>
586
+ // initembt ("L2EmbTrefftzFESpace");
587
+ // template class EmbTrefftzFESpace<MonomialFESpace,
588
+ // shared_ptr<MonomialFESpace>>;
589
+ // static RegisterFESpace<
590
+ // EmbTrefftzFESpace<MonomialFESpace, shared_ptr<MonomialFESpace>>>
591
+ // initembt3 ("MonomialEmbTrefftzFESpace");
559
592
  }
560
593
 
561
594
  ////////////////////////// python interface ///////////////////////////
@@ -580,9 +613,13 @@ void ExportETSpace (py::module m, string label)
580
613
  }),
581
614
  py::arg ("fes"));
582
615
 
583
- pyspace.def ("SetOp", &ngcomp::EmbTrefftzFESpace<T, shrdT>::SetOp,
584
- py::arg ("bf"), py::arg ("lf") = nullptr, py::arg ("eps") = 0,
585
- py::arg ("test_fes") = nullptr, py::arg ("tndof") = 0);
616
+ pyspace
617
+ .def ("SetOp", &ngcomp::EmbTrefftzFESpace<T, shrdT>::SetOp,
618
+ py::arg ("bf"), py::arg ("lf") = nullptr, py::arg ("eps") = 0,
619
+ py::arg ("test_fes") = nullptr, py::arg ("tndof") = 0)
620
+ .def ("Embed", &ngcomp::EmbTrefftzFESpace<T, shrdT>::Embed)
621
+ .def ("GetEmbedding",
622
+ &ngcomp::EmbTrefftzFESpace<T, shrdT>::GetEmbedding);
586
623
  }
587
624
 
588
625
  void ExportEmbTrefftz (py::module m)
@@ -594,6 +631,8 @@ void ExportEmbTrefftz (py::module m)
594
631
  // shared_ptr<ngcomp::VectorL2FESpace>> ( m, "VL2EmbTrefftzFESpace");
595
632
  ExportETSpace<ngcomp::MonomialFESpace, shared_ptr<ngcomp::MonomialFESpace>> (
596
633
  m, "MonomialEmbTrefftzFESpace");
634
+ ExportETSpace<ngcomp::CompoundFESpace, shared_ptr<ngcomp::CompoundFESpace>> (
635
+ m, "CompoundEmbTrefftzFESpace");
597
636
 
598
637
  m.def (
599
638
  "EmbeddedTrefftzFES",
@@ -612,6 +651,10 @@ void ExportEmbTrefftz (py::module m)
612
651
  nfes = make_shared<ngcomp::EmbTrefftzFESpace<
613
652
  ngcomp::MonomialFESpace, shared_ptr<ngcomp::MonomialFESpace>>> (
614
653
  dynamic_pointer_cast<ngcomp::MonomialFESpace> (fes));
654
+ else if (dynamic_pointer_cast<ngcomp::CompoundFESpace> (fes))
655
+ nfes = make_shared<ngcomp::EmbTrefftzFESpace<
656
+ ngcomp::CompoundFESpace, shared_ptr<ngcomp::CompoundFESpace>>> (
657
+ dynamic_pointer_cast<ngcomp::CompoundFESpace> (fes));
615
658
  else
616
659
  throw Exception ("Unknown base fes");
617
660
  return nfes;
@@ -39,12 +39,21 @@ namespace ngcomp
39
39
  this->name = "EmbTrefftzFESpace";
40
40
  this->type = "embt";
41
41
  this->needs_transform_vec = true;
42
+ shared_ptr<CompoundFESpace> cafes
43
+ = dynamic_pointer_cast<CompoundFESpace> (afes);
44
+ if (cafes)
45
+ for (auto space : cafes->Spaces ())
46
+ dynamic_cast<CompoundFESpace *> (this)->AddSpace (space);
42
47
  // this->Update();
43
48
  // this->UpdateDofTables();
44
49
  // this->UpdateCouplingDofArray();
45
50
  // this->FinalizeUpdate();
46
51
  }
47
52
 
53
+ void Update () override { ; };
54
+
55
+ void UpdateCouplingDofArray () override { ; }
56
+
48
57
  shared_ptr<BaseVector>
49
58
  SetOp (shared_ptr<SumOfIntegrals> bf, shared_ptr<SumOfIntegrals> lf,
50
59
  double eps, shared_ptr<FESpace> test_fes, int tndof);
@@ -56,6 +65,10 @@ namespace ngcomp
56
65
 
57
66
  virtual void VTransformVR (ElementId ei, const SliceVector<double> vec,
58
67
  TRANSFORM_TYPE type) const override;
68
+
69
+ shared_ptr<GridFunction> Embed (shared_ptr<GridFunction> tgfu);
70
+
71
+ shared_ptr<BaseMatrix> GetEmbedding ();
59
72
  };
60
73
  }
61
74
 
@@ -12,19 +12,19 @@ namespace ngcomp
12
12
  {
13
13
  type = "monomialfespace";
14
14
 
15
- D = ma->GetDimension () - 1;
15
+ D = ma->GetDimension ();
16
16
 
17
17
  order = int (flags.GetNumFlag ("order", 3));
18
18
  useshift = flags.GetNumFlag ("useshift", 1);
19
19
  usescale = flags.GetNumFlag ("usescale", 1);
20
20
 
21
- this->local_ndof = BinCoeff (D + 1 + order, order);
21
+ this->local_ndof = BinCoeff (D + order, order);
22
22
  this->nel = ma->GetNE ();
23
23
  this->ndof = local_ndof * nel;
24
24
 
25
25
  switch (D)
26
26
  {
27
- case 1:
27
+ case 2:
28
28
  {
29
29
  evaluator[VOL]
30
30
  = make_shared<T_DifferentialOperator<DiffOpMapped<2>>> ();
@@ -33,10 +33,10 @@ namespace ngcomp
33
33
  additional_evaluators.Set (
34
34
  "hesse",
35
35
  make_shared<T_DifferentialOperator<DiffOpMappedHesse<2>>> ());
36
- basismat = MonomialBasis<1> (order);
36
+ basismat = MonomialBasis<2> (order);
37
37
  break;
38
38
  }
39
- case 2:
39
+ case 3:
40
40
  {
41
41
  evaluator[VOL]
42
42
  = make_shared<T_DifferentialOperator<DiffOpMapped<3>>> ();
@@ -45,7 +45,7 @@ namespace ngcomp
45
45
  additional_evaluators.Set (
46
46
  "hesse",
47
47
  make_shared<T_DifferentialOperator<DiffOpMappedHesse<3>>> ());
48
- basismat = MonomialBasis<2> (order);
48
+ basismat = MonomialBasis<3> (order);
49
49
  break;
50
50
  }
51
51
  }
@@ -42,7 +42,7 @@ namespace ngcomp
42
42
  template <int D> CSR MonomialBasis (int ord) const
43
43
  {
44
44
  CSR tb;
45
- const int npoly = BinCoeff (D + 1 + ord, ord);
45
+ const int npoly = BinCoeff (D + ord, ord);
46
46
  Matrix<> basis (npoly, npoly);
47
47
  basis = 0.0;
48
48
  for (int i = 0; i < npoly; i++)