ngstrefftz 0.3.2402.dev35__tar.gz → 0.3.2403.dev6__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 (150) hide show
  1. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/Dockerfile +5 -0
  2. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/PKG-INFO +1 -1
  3. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/docs/requirements.txt +4 -4
  4. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/src/condensedg.cpp +4 -1
  5. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/src/embtrefftz.cpp +6 -4
  6. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/src/monomialfespace.cpp +17 -2
  7. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/src/monomialfespace.hpp +6 -24
  8. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/src/ngstrefftz.egg-info/PKG-INFO +1 -1
  9. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/src/trefftzfespace.cpp +126 -29
  10. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/src/trefftzfespace.hpp +30 -3
  11. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/.clang-format +0 -0
  12. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/.github/workflows/build.yml +0 -0
  13. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/.github/workflows/build_linux_test.sh +0 -0
  14. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/.github/workflows/build_pip.ps1 +0 -0
  15. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/.github/workflows/build_pip.sh +0 -0
  16. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/.github/workflows/build_pip_mac.sh +0 -0
  17. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/.github/workflows/fix_auditwheel_policy.py +0 -0
  18. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/.github/workflows/ngsolve_version.txt +0 -0
  19. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/.github/workflows/pyodide/Dockerfile +0 -0
  20. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/.github/workflows/pyodide/build_in_docker.sh +0 -0
  21. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/.github/workflows/pyodide/merge.py +0 -0
  22. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/.github/workflows/pyodide/requirements.txt +0 -0
  23. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/.gitmodules +0 -0
  24. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/CONTRIBUTING.md +0 -0
  25. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/LICENSE +0 -0
  26. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/README.md +0 -0
  27. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/docs/_static/breadcrumbs.html +0 -0
  28. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/docs/_static/css/mytheme.css +0 -0
  29. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/docs/conf.py +0 -0
  30. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/docs/contrib.rst +0 -0
  31. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/docs/docu.rst +0 -0
  32. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/docs/index.rst +0 -0
  33. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/docs/intro.rst +0 -0
  34. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/docs/notebooks/embTrefftz-adv.ipynb +0 -0
  35. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/docs/notebooks/embTrefftz-helm.ipynb +0 -0
  36. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/docs/notebooks/embTrefftz-poi.ipynb +0 -0
  37. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/docs/notebooks/embTrefftz-stokes.ipynb +0 -0
  38. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/docs/notebooks/embTrefftz-wave.ipynb +0 -0
  39. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/docs/notebooks/embTrefftz.ipynb +0 -0
  40. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/docs/notebooks/helmholtz.ipynb +0 -0
  41. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/docs/notebooks/index.ipynb +0 -0
  42. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/docs/notebooks/laplace.ipynb +0 -0
  43. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/docs/notebooks/qtwave.ipynb +0 -0
  44. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/docs/notebooks/tunfitted.ipynb +0 -0
  45. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/docs/notebooks/twave.ipynb +0 -0
  46. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/docs/notebooks/twavetents.ipynb +0 -0
  47. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/docs/paper/codemeta.json +0 -0
  48. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/docs/paper/paper.bib +0 -0
  49. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/docs/paper/paper.md +0 -0
  50. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/docs/readme.rst +0 -0
  51. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/external_dependencies/ngstents/.github/workflows/build.yml +0 -0
  52. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/external_dependencies/ngstents/.github/workflows/build_pip.ps1 +0 -0
  53. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/external_dependencies/ngstents/.github/workflows/build_pip.sh +0 -0
  54. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/external_dependencies/ngstents/.github/workflows/build_pip_mac.sh +0 -0
  55. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/external_dependencies/ngstents/.github/workflows/fix_auditwheel_policy.py +0 -0
  56. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/external_dependencies/ngstents/.github/workflows/ngsolve_version.txt +0 -0
  57. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/external_dependencies/ngstents/README.md +0 -0
  58. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/external_dependencies/ngstents/demo/advection/Advection_Periodic_Clipping.ipynb +0 -0
  59. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/external_dependencies/ngstents/demo/advection/advection2d.py +0 -0
  60. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/external_dependencies/ngstents/demo/advection/advection2d_periodic.py +0 -0
  61. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/external_dependencies/ngstents/demo/burgers/Burgers_Clipping.ipynb +0 -0
  62. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/external_dependencies/ngstents/demo/burgers/burgers1d.py +0 -0
  63. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/external_dependencies/ngstents/demo/burgers/burgers2d.py +0 -0
  64. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/external_dependencies/ngstents/demo/euler/Euler_Clipping.ipynb +0 -0
  65. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/external_dependencies/ngstents/demo/euler/euler2d.py +0 -0
  66. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/external_dependencies/ngstents/demo/euler/mach3_windtunnel.py +0 -0
  67. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/external_dependencies/ngstents/demo/maxwell/maxwell3d.py +0 -0
  68. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/external_dependencies/ngstents/demo/symbolic/symbolic_advection2d.py +0 -0
  69. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/external_dependencies/ngstents/demo/symbolic/symbolic_burgers.py +0 -0
  70. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/external_dependencies/ngstents/demo/symbolic/symbolic_euler.py +0 -0
  71. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/external_dependencies/ngstents/demo/symbolic/symbolic_wave.py +0 -0
  72. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/external_dependencies/ngstents/demo/symbolic/symbolic_wave1d_interface.py +0 -0
  73. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/external_dependencies/ngstents/demo/symbolic/wave_penetrable_cylinder.py +0 -0
  74. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/external_dependencies/ngstents/demo/tents/draw3dtent.py +0 -0
  75. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/external_dependencies/ngstents/demo/tents/draw3dvertex.py +0 -0
  76. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/external_dependencies/ngstents/demo/wave/horn.py +0 -0
  77. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/external_dependencies/ngstents/demo/wave/wave2d.py +0 -0
  78. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/external_dependencies/ngstents/demo/wave/wave2d_timedepbc.py +0 -0
  79. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/external_dependencies/ngstents/demo/wave/wave3d.py +0 -0
  80. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/external_dependencies/ngstents/docs/BurgersMTP.ipynb +0 -0
  81. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/external_dependencies/ngstents/docs/INDEX.ipynb +0 -0
  82. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/external_dependencies/ngstents/docs/StartPitching.ipynb +0 -0
  83. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/external_dependencies/ngstents/docs/conf.py +0 -0
  84. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/external_dependencies/ngstents/docs/figs/CausalityCond.png +0 -0
  85. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/external_dependencies/ngstents/docs/figs/dag.png +0 -0
  86. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/external_dependencies/ngstents/docs/figs/map.png +0 -0
  87. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/external_dependencies/ngstents/docs/figs/subtents.png +0 -0
  88. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/external_dependencies/ngstents/docs/index.rst +0 -0
  89. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/external_dependencies/ngstents/docs/readme.rst +0 -0
  90. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/external_dependencies/ngstents/docs/requirements.txt +0 -0
  91. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/external_dependencies/ngstents/py/__init__.py +0 -0
  92. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/external_dependencies/ngstents/py/conslaw/__init__.py +0 -0
  93. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/external_dependencies/ngstents/py/utils/__init__.py +0 -0
  94. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/external_dependencies/ngstents/py/utils/_drawtents.py +0 -0
  95. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/external_dependencies/ngstents/py/utils/_drawtents2d.py +0 -0
  96. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/external_dependencies/ngstents/setup.py +0 -0
  97. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/external_dependencies/ngstents/src/CMakeLists.txt +0 -0
  98. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/external_dependencies/ngstents/src/advection.cpp +0 -0
  99. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/external_dependencies/ngstents/src/burgers.cpp +0 -0
  100. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/external_dependencies/ngstents/src/concurrentqueue.h +0 -0
  101. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/external_dependencies/ngstents/src/conservationlaw.hpp +0 -0
  102. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/external_dependencies/ngstents/src/euler.cpp +0 -0
  103. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/external_dependencies/ngstents/src/maxwell.cpp +0 -0
  104. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/external_dependencies/ngstents/src/paralleldepend.hpp +0 -0
  105. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/external_dependencies/ngstents/src/python_conslaw.cpp +0 -0
  106. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/external_dependencies/ngstents/src/python_tents.cpp +0 -0
  107. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/external_dependencies/ngstents/src/symbolic.cpp +0 -0
  108. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/external_dependencies/ngstents/src/tconservationlaw_tp_impl.hpp +0 -0
  109. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/external_dependencies/ngstents/src/tents.cpp +0 -0
  110. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/external_dependencies/ngstents/src/tents.hpp +0 -0
  111. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/external_dependencies/ngstents/src/tentsolver.hpp +0 -0
  112. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/external_dependencies/ngstents/src/tentsolver_impl.hpp +0 -0
  113. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/external_dependencies/ngstents/src/vis3d.cpp +0 -0
  114. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/external_dependencies/ngstents/src/vis3d.hpp +0 -0
  115. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/external_dependencies/ngstents/src/wave.cpp +0 -0
  116. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/external_dependencies/ngstents/tests/test_burgers_2D.py +0 -0
  117. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/external_dependencies/ngstents/tests/test_causal_tents.py +0 -0
  118. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/external_dependencies/ngstents/tests/test_conslaw.py +0 -0
  119. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/external_dependencies/ngstents/tests/test_tent_height_2D.py +0 -0
  120. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/external_dependencies/ngstents/tests/test_tentlayers.py +0 -0
  121. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/setup.cfg +0 -0
  122. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/setup.py +0 -0
  123. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/src/CMakeLists.txt +0 -0
  124. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/src/__init__.py +0 -0
  125. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/src/airy.cpp +0 -0
  126. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/src/condensedg.hpp +0 -0
  127. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/src/diffopmapped.hpp +0 -0
  128. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/src/embtrefftz.hpp +0 -0
  129. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/src/mesh1dtents.cpp +0 -0
  130. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/src/mesh1dtents.hpp +0 -0
  131. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/src/ngstrefftz.egg-info/SOURCES.txt +0 -0
  132. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/src/ngstrefftz.egg-info/dependency_links.txt +0 -0
  133. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/src/ngstrefftz.egg-info/requires.txt +0 -0
  134. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/src/ngstrefftz.egg-info/top_level.txt +0 -0
  135. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/src/ngsttd.hpp +0 -0
  136. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/src/planewavefe.cpp +0 -0
  137. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/src/planewavefe.hpp +0 -0
  138. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/src/python_trefftz.cpp +0 -0
  139. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/src/scalarmappedfe.cpp +0 -0
  140. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/src/scalarmappedfe.hpp +0 -0
  141. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/src/specialcoefficientfunction.cpp +0 -0
  142. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/src/specialcoefficientfunction.hpp +0 -0
  143. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/src/specialintegrator.cpp +0 -0
  144. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/src/specialintegrator.hpp +0 -0
  145. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/src/twavetents.cpp +0 -0
  146. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/src/twavetents.hpp +0 -0
  147. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/test/dg.py +0 -0
  148. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/test/embt.py +0 -0
  149. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/test/tents.py +0 -0
  150. {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev6}/test/trefftz.py +0 -0
@@ -2,6 +2,11 @@ FROM python:3.10-slim-bullseye
2
2
 
3
3
  WORKDIR /home/app
4
4
 
5
+ #RUN apt --yes update && apt --yes install git pandoc sphinx
6
+ #COPY . /home/app/ngstrefftz
7
+ #RUN cd /home/app/ngstrefftz/docs && pip install -r requirements.txt
8
+ #RUN cd /home/app/ngstrefftz/docs && sphinx-build -M html . _build -vvv
9
+
5
10
  RUN pip install ngstrefftz
6
11
  ENV PYTHONPATH=$PYTHONPATH:/usr/local/lib/python3.10/site-packages/
7
12
  ENV LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib/
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ngstrefftz
3
- Version: 0.3.2402.dev35
3
+ Version: 0.3.2403.dev6
4
4
  Summary: NGSTrefftz is an add-on to NGSolve for Trefftz methods.
5
5
  Home-page: https://github.com/PaulSt/ngstrefftz
6
6
  Author: Paul Stocker
@@ -1,11 +1,11 @@
1
-
2
- setuptools
1
+ setuptools>=61
3
2
  setuptools_scm
4
3
  jupyter>=1.0.0
5
4
 
6
5
  matplotlib>=3.6.1
7
6
  matplotlib-inline>=0.1.6
8
7
 
8
+ pandoc>=2.3
9
9
  nbconvert>=7.2.1
10
10
  nbformat>=5.7.0
11
11
  nbsphinx>=0.8.9
@@ -20,6 +20,6 @@ myst_parser>=0.15.0
20
20
  numpy>=1.23.4
21
21
  scipy>=1.11.1
22
22
  ngsolve>=6.2.2403
23
- xfem>=2.1.2303.post72.dev0
24
- ngstrefftz>=0.2.2401
23
+ xfem==2.1.2303.post137.dev0
24
+ ngstrefftz>=0.2.2402
25
25
  webgui-jupyter-widgets>=0.2.31
@@ -94,8 +94,10 @@ namespace ngcomp
94
94
  }
95
95
 
96
96
  Array<int> els = GetElNeighbours (ma, ei);
97
- for (auto elnr : els)
97
+ int nels = els.Size ();
98
+ for (int i = 0; i < nels; i++)
98
99
  {
100
+ int elnr = els[i];
99
101
  dnums.SetSize0 ();
100
102
  fes->GetDofNrs (ElementId (elnr), dnums, VISIBLE_DOF);
101
103
  for (DofId d : dnums)
@@ -107,6 +109,7 @@ namespace ngcomp
107
109
  {
108
110
  if (elnr2 == ei.Nr () || els.Contains (elnr2))
109
111
  continue;
112
+ els.Append (elnr2);
110
113
  dnums.SetSize0 ();
111
114
  fes->GetDofNrs (ElementId (elnr2), dnums, VISIBLE_DOF);
112
115
  for (DofId d : dnums)
@@ -147,6 +147,7 @@ namespace ngcomp
147
147
 
148
148
  vector<shared_ptr<Matrix<SCAL>>> ETmats (ne);
149
149
  auto lfvec = make_shared<VVector<SCAL>> (ndof);
150
+ lfvec->operator= (0.0);
150
151
 
151
152
  size_t active_elements = 0;
152
153
  size_t test_local_ndof = test_fes->GetNDof () / ne;
@@ -249,14 +250,15 @@ namespace ngcomp
249
250
  nz = tndof;
250
251
  else
251
252
  {
252
- nz = dofs.Size () - test_dofs.Size ();
253
- nz = max (nz, 0);
253
+ nz = max<size_t> (dofs.Size () - test_dofs.Size (), 0);
254
254
  for (int i = 0; i < min (elmat.Width (), elmat.Height ()); i++)
255
255
  if (abs (elmat (i, i)) < eps)
256
256
  nz++;
257
257
  }
258
- if (dofs.Size () - test_dofs.Size () > nz)
259
- throw Exception ("test fes not large enough for given tndof");
258
+ if (dofs.Size () < nz)
259
+ throw Exception ("tndof too large, nz: " + to_string (nz)
260
+ + ", dofs:" + to_string (dofs.Size ())
261
+ + ", test_dofs:" + to_string (test_dofs.Size ()));
260
262
 
261
263
  if (getrange)
262
264
  ETmats[ei.Nr ()]
@@ -98,9 +98,15 @@ namespace ngcomp
98
98
  case ET_QUAD:
99
99
  case ET_TRIG:
100
100
  {
101
+ Vec<2> scale = 1.0;
102
+ if (usescale == 2)
103
+ scale = { 1.0 / ElSize<2> (ei, { 1.0, 0 }),
104
+ 1.0 / ElSize<2> (ei, { 0, 1.0 }) };
105
+ else if (usescale != 0)
106
+ scale = 1.0 / ElSize<2> (ei);
101
107
  return *(new (alloc) ScalarMappedElement<2> (
102
108
  local_ndof, order, basismat, eltype, ElCenter<2> (ei),
103
- 1.0 / Adiam<2> (ei)));
109
+ scale));
104
110
  break;
105
111
  }
106
112
  case ET_HEX:
@@ -108,9 +114,18 @@ namespace ngcomp
108
114
  case ET_PYRAMID:
109
115
  case ET_TET:
110
116
  {
117
+ Vec<3> scale = 1.0;
118
+ if (usescale == 2)
119
+ {
120
+ double hx = ElSize<3> (ei, { 1.0, 1.0, 0 });
121
+ double ht = ElSize<3> (ei, { 0, 0, 1.0 });
122
+ scale = { 1.0 / hx, 1.0 / hx, 1.0 / ht };
123
+ }
124
+ else if (usescale != 0)
125
+ scale = 1.0 / ElSize<3> (ei);
111
126
  return *(new (alloc) ScalarMappedElement<3> (
112
127
  local_ndof, order, basismat, eltype, ElCenter<3> (ei),
113
- 1.0 / Adiam<3> (ei)));
128
+ scale));
114
129
  break;
115
130
  }
116
131
  }
@@ -51,47 +51,29 @@ namespace ngcomp
51
51
  MatToCSR (basis, tb);
52
52
  return tb;
53
53
  }
54
-
55
- template <int D> double Adiam (ElementId ei) const
54
+ template <int D>
55
+ double ElSize (ElementId ei, Vec<D> coeff_const = 1.0) const
56
56
  {
57
- if (usescale == 0)
58
- return 1.0;
59
- LocalHeap lh (1000 * 1000);
60
57
  double anisotropicdiam = 0.0;
61
58
  auto vertices_index = ma->GetElVertices (ei);
62
-
63
59
  for (auto vertex1 : vertices_index)
64
60
  {
65
61
  for (auto vertex2 : vertices_index)
66
62
  {
67
- Vec<D> v1 = ma->GetPoint<D> (vertex1);
68
- Vec<D> v2 = ma->GetPoint<D> (vertex2);
69
- IntegrationRule ir (ma->GetElType (ei), 0);
70
- ElementTransformation &trafo = ma->GetTrafo (ei, lh);
71
- MappedIntegrationPoint<D, D> mip (ir[0], trafo);
72
- mip.Point () = v1;
73
- double c1 = coeff_cf ? coeff_cf->Evaluate (mip) : 1.0;
74
- mip.Point () = v2;
75
- double c2 = coeff_cf ? coeff_cf->Evaluate (mip) : 1.0;
76
-
77
- anisotropicdiam = max (
78
- anisotropicdiam,
79
- sqrt (L2Norm2 (v1.Range (0, D - 1) - v2.Range (0, D - 1))
80
- + pow (c1 * v1 (D - 1) - c2 * v2 (D - 1), 2)));
63
+ Vec<D> v = ma->GetPoint<D> (vertex2) - ma->GetPoint<D> (vertex1);
64
+ vtimes (v, coeff_const);
65
+ anisotropicdiam = max (anisotropicdiam, sqrt (L2Norm2 (v)));
81
66
  }
82
67
  }
83
68
  return anisotropicdiam;
84
69
  }
85
-
86
70
  template <int D> Vec<D> ElCenter (ElementId ei) const
87
71
  {
88
- if (useshift == 0)
89
- return 1;
90
72
  Vec<D> center = 0;
91
73
  auto vertices_index = ma->GetElVertices (ei);
92
74
  for (auto vertex : vertices_index)
93
75
  center += ma->GetPoint<D> (vertex);
94
- center *= (1.0 / vertices_index.Size ());
76
+ center *= (1.0 / vertices_index.Size ()) * useshift;
95
77
  return center;
96
78
  }
97
79
  };
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ngstrefftz
3
- Version: 0.3.2402.dev35
3
+ Version: 0.3.2403.dev6
4
4
  Summary: NGSTrefftz is an add-on to NGSolve for Trefftz methods.
5
5
  Home-page: https://github.com/PaulSt/ngstrefftz
6
6
  Author: Paul Stocker
@@ -221,27 +221,18 @@ namespace ngcomp
221
221
  static Timer t ("QTEll - GetEWSolution");
222
222
  RegionTimer reg (t);
223
223
  LocalHeap lh (1000 * 1000 * 1000);
224
- if (eqtyp != "qtelliptic")
225
- throw Exception ("TrefftzFESpace::GetEWSolution: elementwise particular "
226
- "solution not available for eqtyp");
227
224
 
228
225
  Flags flags;
229
226
  flags.SetFlag ("order", order);
230
- flags.SetFlag ("usescale", 1);
227
+ flags.SetFlag ("usescale", this->usescale);
228
+ if (eqtyp == "qtheat" && usescale != 0)
229
+ flags.SetFlag ("usescale", 2);
231
230
  shared_ptr<FESpace> fes = make_shared<MonomialFESpace> (ma, flags);
232
231
  auto pws = CreateGridFunction (fes, "pws", flags);
233
232
  pws->Update ();
234
233
  // pws->ConnectAutoUpdate();
235
234
 
236
- switch (D)
237
- {
238
- case 2:
239
- static_cast<QTEllipticBasis<2> *> (basis)->SetRHS (acoeffF);
240
- break;
241
- case 3:
242
- static_cast<QTEllipticBasis<3> *> (basis)->SetRHS (acoeffF);
243
- break;
244
- }
235
+ basis->SetRHS (acoeffF);
245
236
 
246
237
  // for (auto ei : ma->Elements (VOL))
247
238
  ma->IterateElements (VOL, lh, [&] (auto ei, LocalHeap &mlh) {
@@ -261,13 +252,27 @@ namespace ngcomp
261
252
  switch (D)
262
253
  {
263
254
  case 2:
264
- static_cast<QTEllipticBasis<2> *> (basis)->GetParticularSolution (
265
- ElCenter<2> (ei), ElSize<2> (ei), elvec, mlh);
266
- break;
255
+ {
256
+ Vec<2> scale = 1.0;
257
+ if (eqtyp == "qtheat")
258
+ scale
259
+ = { ElSize<2> (ei, { 1.0, 0 }), ElSize<2> (ei, { 0, 1.0 }) };
260
+ else if (usescale != 0)
261
+ scale = ElSize<2> (ei);
262
+ basis->GetParticularSolution (ElCenter<2> (ei), scale, elvec, mlh);
263
+ break;
264
+ }
267
265
  case 3:
268
- static_cast<QTEllipticBasis<3> *> (basis)->GetParticularSolution (
269
- ElCenter<3> (ei), ElSize<3> (ei), elvec, mlh);
270
- break;
266
+ {
267
+ Vec<3> scale = 1.0;
268
+ if (eqtyp == "qtheat")
269
+ scale = { ElSize<3> (ei, { 1.0, 1.0, 0 }), 0,
270
+ ElSize<3> (ei, { 0, 0, 1.0 }) };
271
+ else if (usescale != 0)
272
+ scale = ElSize<3> (ei);
273
+ basis->GetParticularSolution (ElCenter<3> (ei), scale, elvec, mlh);
274
+ break;
275
+ }
271
276
  }
272
277
 
273
278
  pws->SetElementVector (dofs, elvec);
@@ -429,6 +434,17 @@ namespace ngcomp
429
434
  local_ndof, order, basismat, eltype, ElCenter<3> (ei),
430
435
  scale));
431
436
  }
437
+ else if (eqtyp == "qtheat")
438
+ {
439
+ double hx = ElSize<3> (ei, { 1.0, 1.0, 0 });
440
+ double ht = ElSize<3> (ei, { 0, 0, 1.0 });
441
+ Vec<3> scale ({ 1.0 / hx, 1.0 / hx, 1.0 / ht });
442
+ CSR basismat = static_cast<QTHeatBasis<3> *> (basis)->Basis (
443
+ ElCenter<3> (ei), hx, ht);
444
+ return *(new (alloc) ScalarMappedElement<3> (
445
+ local_ndof, order, basismat, eltype, ElCenter<3> (ei),
446
+ scale));
447
+ }
432
448
  else
433
449
  {
434
450
  Vec<3> scale = 1.0;
@@ -464,6 +480,8 @@ namespace ngcomp
464
480
  docu.short_docu = "Trefftz space for different PDEs. Use kwarg 'eq' to "
465
481
  "choose the PDE, currently implemented are:\n"
466
482
  " - laplace - for Laplace equation\n"
483
+ " - qtelliptic - for the quasi-Trefftz space for an "
484
+ "elliptic problem\n"
467
485
  " - wave - for the second order acoustic wave equation\n"
468
486
  " - qtwave - for the quasi-Trefftz space\n"
469
487
  " - fowave - for the first order acoustic wave "
@@ -949,7 +967,7 @@ namespace ngcomp
949
967
  qtbasis.Col (indexmap)
950
968
  -= factorial (mii + ej) / factorial (mil)
951
969
  * (AA[IndexMap2<D> (mil, order - 1)]) (j, m)
952
- / pow (elsize, vsum<D, int> (-mil))
970
+ * pow (elsize, vsum<D, int> (mil))
953
971
  * (mii[m] + ej[m] - mil[m] + 1)
954
972
  * qtbasis.Col (PolBasis::IndexMap2<D> (
955
973
  mii + ej - mil + em, order));
@@ -957,8 +975,8 @@ namespace ngcomp
957
975
  // vec coeff B
958
976
  qtbasis.Col (indexmap)
959
977
  += factorial (mii + ej) / factorial (mil)
960
- * (BB[IndexMap2<D> (mil, order - 1)]) (j)
961
- / pow (elsize, vsum<D, int> (-mil) - 1)
978
+ * (BB[IndexMap2<D> (mil, order - 1)]) (j)*pow (
979
+ elsize, vsum<D, int> (mil) + 1)
962
980
  * qtbasis.Col (
963
981
  PolBasis::IndexMap2<D> (mii + ej - mil, order));
964
982
 
@@ -967,7 +985,7 @@ namespace ngcomp
967
985
  qtbasis.Col (indexmap)
968
986
  += factorial (mii) / factorial (mil)
969
987
  * CC[IndexMap2<D> (mil, order - 1)]
970
- / pow (elsize, vsum<D, int> (-mil) - 2)
988
+ * pow (elsize, vsum<D, int> (mil) + 2)
971
989
  * qtbasis.Col (
972
990
  PolBasis::IndexMap2<D> (mii - mil, order));
973
991
  });
@@ -995,9 +1013,10 @@ namespace ngcomp
995
1013
 
996
1014
  template <int D>
997
1015
  void
998
- QTEllipticBasis<D>::GetParticularSolution (Vec<D> ElCenter, double elsize,
1016
+ QTEllipticBasis<D>::GetParticularSolution (Vec<D> ElCenter, Vec<D> elsize,
999
1017
  FlatVector<> sol, LocalHeap &lh)
1000
1018
  {
1019
+ double hx = elsize[0];
1001
1020
  static Timer t ("QTEll - GetParticularSolution");
1002
1021
  RegionTimer reg (t);
1003
1022
  IntegrationPoint ip (ElCenter, 0);
@@ -1053,7 +1072,7 @@ namespace ngcomp
1053
1072
  em[m] = 1;
1054
1073
  sol (indexmap) -= factorial (mii + ej) / factorial (mil)
1055
1074
  * (AA[IndexMap2<D> (mil, order - 1)]) (j, m)
1056
- * pow (elsize, vsum<D, int> (mil))
1075
+ * pow (hx, vsum<D, int> (mil))
1057
1076
  * (mii[m] + ej[m] - mil[m] + 1)
1058
1077
  * sol (PolBasis::IndexMap2<D> (
1059
1078
  mii + ej - mil + em, order));
@@ -1062,7 +1081,7 @@ namespace ngcomp
1062
1081
  sol (indexmap)
1063
1082
  += factorial (mii + ej) / factorial (mil)
1064
1083
  * (BB[IndexMap2<D> (mil, order - 1)]) (j)*pow (
1065
- elsize, vsum<D, int> (mil) + 1)
1084
+ hx, vsum<D, int> (mil) + 1)
1066
1085
  * sol (PolBasis::IndexMap2<D> (mii + ej - mil, order));
1067
1086
 
1068
1087
  // scal coeff C
@@ -1070,12 +1089,12 @@ namespace ngcomp
1070
1089
  sol (indexmap)
1071
1090
  += factorial (mii) / factorial (mil)
1072
1091
  * CC[IndexMap2<D> (mil, order - 1)]
1073
- * pow (elsize, vsum<D, int> (mil) + 2)
1092
+ * pow (hx, vsum<D, int> (mil) + 2)
1074
1093
  * sol (PolBasis::IndexMap2<D> (mii - mil, order));
1075
1094
  });
1076
1095
  }
1077
1096
  sol (indexmap) += -FF[PolBasis::IndexMap2<D> (mii, order)]
1078
- * pow (elsize, vsum<D, int> (mii) + 2);
1097
+ * pow (hx, vsum<D, int> (mii) + 2);
1079
1098
  Vec<D, int> eD = 0;
1080
1099
  eD[D - 1] = 2;
1081
1100
  sol (indexmap) *= 1.0 / factorial (mii + eD) / (AA[0](D - 1, D - 1));
@@ -1462,10 +1481,85 @@ namespace ngcomp
1462
1481
  // return gtbstore[encode];
1463
1482
  }
1464
1483
 
1484
+ template <int D>
1485
+ void QTHeatBasis<D>::GetParticularSolution (Vec<D> ElCenter, Vec<D> elsize,
1486
+ FlatVector<> sol, LocalHeap &lh)
1487
+ {
1488
+ double hx = elsize[0];
1489
+ double ht = elsize[D - 1];
1490
+ IntegrationPoint ip (ElCenter, 0);
1491
+ Mat<D, D> dummy;
1492
+ FE_ElementTransformation<D, D> et (D == 3 ? ET_TET : ET_TRIG, dummy);
1493
+ MappedIntegrationPoint<D, D> mip (ip, et, 0);
1494
+ for (int i = 0; i < D; i++)
1495
+ mip.Point ()[i] = ElCenter[i];
1496
+
1497
+ int ndiffs = (BinCoeff (D + order - 1, order - 1));
1498
+ Vector<Matrix<>> AA (ndiffs);
1499
+ ndiffs = (BinCoeff (D + order, order));
1500
+ FlatVector<> FF (ndiffs, lh);
1501
+
1502
+ TraversePol<D> (order, [&] (int i, Vec<D, int> coeff) {
1503
+ int index = PolBasis::IndexMap2<D> (coeff, order);
1504
+ FF[index] = FFder[index]->Evaluate (mip);
1505
+ if (vsum<D, int> (coeff) < order)
1506
+ {
1507
+ index = PolBasis::IndexMap2<D> (coeff, order - 1);
1508
+ AA[index].SetSize (D - 1, D - 1);
1509
+ AAder[index]->Evaluate (mip, AA[index].AsVector ());
1510
+ }
1511
+ });
1512
+
1513
+ const int ndof = (BinCoeff (D - 1 + order, order)
1514
+ + BinCoeff (D - 1 + order - 1, order - 1));
1515
+ const int npoly = (BinCoeff (D + order, order));
1516
+ sol = 0;
1517
+ // start recursion
1518
+ TraversePol2<D> (order, [&] (int i, Vec<D, int> coeff) {
1519
+ if (coeff[0] <= 1)
1520
+ return;
1521
+ int indexmap = PolBasis::IndexMap2<D> (coeff, order);
1522
+ Vec<D, int> mii = coeff;
1523
+ mii[0] = mii[0] - 2;
1524
+ Vec<D, int> et = 0;
1525
+ et[D - 1] = 1;
1526
+ sol (indexmap) += hx * hx / ht * (mii[D - 1] + 1) / coeff[0]
1527
+ / (coeff[0] - 1)
1528
+ * sol (PolBasis::IndexMap2<D> (mii + et, order));
1529
+ for (int j = 0; j < D - 1; j++)
1530
+ {
1531
+ Vec<D, int> ej = 0;
1532
+ ej[j] = 1;
1533
+ TraversePol<D> (mii + ej, [&] (int i2, Vec<D, int> mil) {
1534
+ // matrix coeff A
1535
+ for (int m = 0; m < D - 1; m++)
1536
+ {
1537
+ if (i2 == 0 && m == 0 && j == 0)
1538
+ continue;
1539
+ Vec<D, int> em = 0;
1540
+ em[m] = 1;
1541
+ sol (indexmap)
1542
+ -= (AA[IndexMap2<D> (mil, order - 1)]) (j, m)
1543
+ * pow (hx, vsum<D - 1, int> (mil))
1544
+ * pow (ht, mil[D - 1]) * (mii[m] + ej[m] - mil[m] + 1)
1545
+ * (mii[j] + 1) / (mii[0] + 2) / (mii[0] + 1)
1546
+ / factorial (mil)
1547
+ * sol (PolBasis::IndexMap2<D> (mii + ej - mil + em,
1548
+ order));
1549
+ }
1550
+ });
1551
+ }
1552
+ sol (indexmap) += -FF[PolBasis::IndexMap2<D> (mii, order)]
1553
+ * pow (hx, vsum<D - 1, int> (coeff))
1554
+ * pow (ht, coeff[D - 1]) / factorial (coeff);
1555
+ sol (indexmap) *= 1.0 / (AA[0](0, 0));
1556
+ });
1557
+ // cout << sol << endl;
1558
+ }
1559
+
1465
1560
  // template class QTHeatBasis<1>;
1466
1561
  template class QTHeatBasis<2>;
1467
1562
  template class QTHeatBasis<3>;
1468
-
1469
1563
  }
1470
1564
 
1471
1565
  #ifdef NGS_PYTHON
@@ -1488,6 +1582,9 @@ void ExportTrefftzFESpace (py::module m)
1488
1582
  R"mydelimiter(
1489
1583
  Set coefficient of Trefftz space.
1490
1584
 
1585
+ For an elliptic problem, the coefficients are given by
1586
+ - div(coeffA*grad(u)) + coeffB*grad(u) + coeffC u = 0
1587
+
1491
1588
  For the first order wave equation, the coefficients are given by
1492
1589
  grad(v) + coeffB dt sigma = 0
1493
1590
  div(sigma) + 1/coeffA**2 dt v = 0
@@ -15,6 +15,26 @@ namespace ngcomp
15
15
  public:
16
16
  PolBasis () { ; }
17
17
  PolBasis (int aorder) : order (aorder) { ; }
18
+
19
+ virtual void SetRHS (shared_ptr<CoefficientFunction> coeffF)
20
+ {
21
+ throw Exception ("SetRHS not implemented for this basis");
22
+ }
23
+ virtual void GetParticularSolution (Vec<1> ElCenter, Vec<1> elsize,
24
+ FlatVector<> sol, LocalHeap &lh)
25
+ {
26
+ throw Exception ("GetParticularSolution not implemented for this basis");
27
+ }
28
+ virtual void GetParticularSolution (Vec<2> ElCenter, Vec<2> elsize,
29
+ FlatVector<> sol, LocalHeap &lh)
30
+ {
31
+ throw Exception ("GetParticularSolution not implemented for this basis");
32
+ }
33
+ virtual void GetParticularSolution (Vec<3> ElCenter, Vec<3> elsize,
34
+ FlatVector<> sol, LocalHeap &lh)
35
+ {
36
+ throw Exception ("GetParticularSolution not implemented for this basis");
37
+ }
18
38
  template <int D>
19
39
  void ComputeDerivs (int order, shared_ptr<CoefficientFunction> acoeff,
20
40
  Vector<shared_ptr<CoefficientFunction>> &ders)
@@ -225,12 +245,12 @@ namespace ngcomp
225
245
  this->ComputeDerivs<D> (order - 1, coeffC, CCder);
226
246
  }
227
247
  CSR Basis (Vec<D> ElCenter, double elsize = 1.0);
228
- void SetRHS (shared_ptr<CoefficientFunction> coeffF)
248
+ void SetRHS (shared_ptr<CoefficientFunction> coeffF) override
229
249
  {
230
250
  this->ComputeDerivs<D> (order, coeffF, FFder);
231
251
  }
232
- void GetParticularSolution (Vec<D> ElCenter, double elsize,
233
- FlatVector<> sol, LocalHeap &lh);
252
+ void GetParticularSolution (Vec<D> ElCenter, Vec<D> elsize,
253
+ FlatVector<> sol, LocalHeap &lh) override;
234
254
  };
235
255
 
236
256
  template <int D> class QTWaveBasis : public PolBasis
@@ -303,6 +323,7 @@ namespace ngcomp
303
323
  std::map<string, CSR> gtbstore;
304
324
 
305
325
  Vector<shared_ptr<CoefficientFunction>> AAder;
326
+ Vector<shared_ptr<CoefficientFunction>> FFder;
306
327
 
307
328
  public:
308
329
  QTHeatBasis (int aorder, shared_ptr<CoefficientFunction> coeffA)
@@ -314,6 +335,12 @@ namespace ngcomp
314
335
  this->ComputeDerivs<D> (order - 1, coeffA, AAder);
315
336
  }
316
337
  CSR Basis (Vec<D> ElCenter, double hx, double ht);
338
+ void SetRHS (shared_ptr<CoefficientFunction> coeffF) override
339
+ {
340
+ this->ComputeDerivs<D> (order, coeffF, FFder);
341
+ }
342
+ void GetParticularSolution (Vec<D> ElCenter, Vec<D> elsize,
343
+ FlatVector<> sol, LocalHeap &lh);
317
344
  };
318
345
  }
319
346