ngstrefftz 0.3.2403.dev5__tar.gz → 0.3.2403.dev9__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.
- {ngstrefftz-0.3.2403.dev5/src/ngstrefftz.egg-info → ngstrefftz-0.3.2403.dev9}/PKG-INFO +1 -1
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/docs/index.rst +3 -3
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/docs/notebooks/embTrefftz-wave.ipynb +2 -2
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/docs/notebooks/index.ipynb +14 -10
- ngstrefftz-0.3.2403.dev9/docs/notebooks/qtelliptic.ipynb +477 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/docs/notebooks/qtwave.ipynb +2 -2
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/src/condensedg.cpp +4 -1
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9/src/ngstrefftz.egg-info}/PKG-INFO +1 -1
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/src/ngstrefftz.egg-info/SOURCES.txt +1 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/.clang-format +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/.github/workflows/build.yml +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/.github/workflows/build_linux_test.sh +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/.github/workflows/build_pip.ps1 +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/.github/workflows/build_pip.sh +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/.github/workflows/build_pip_mac.sh +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/.github/workflows/fix_auditwheel_policy.py +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/.github/workflows/ngsolve_version.txt +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/.github/workflows/pyodide/Dockerfile +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/.github/workflows/pyodide/build_in_docker.sh +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/.github/workflows/pyodide/merge.py +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/.github/workflows/pyodide/requirements.txt +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/.gitmodules +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/CONTRIBUTING.md +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/Dockerfile +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/LICENSE +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/README.md +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/docs/_static/breadcrumbs.html +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/docs/_static/css/mytheme.css +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/docs/conf.py +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/docs/contrib.rst +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/docs/docu.rst +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/docs/intro.rst +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/docs/notebooks/embTrefftz-adv.ipynb +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/docs/notebooks/embTrefftz-helm.ipynb +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/docs/notebooks/embTrefftz-poi.ipynb +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/docs/notebooks/embTrefftz-stokes.ipynb +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/docs/notebooks/embTrefftz.ipynb +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/docs/notebooks/helmholtz.ipynb +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/docs/notebooks/laplace.ipynb +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/docs/notebooks/tunfitted.ipynb +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/docs/notebooks/twave.ipynb +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/docs/notebooks/twavetents.ipynb +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/docs/paper/codemeta.json +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/docs/paper/paper.bib +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/docs/paper/paper.md +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/docs/readme.rst +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/docs/requirements.txt +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/external_dependencies/ngstents/.github/workflows/build.yml +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/external_dependencies/ngstents/.github/workflows/build_pip.ps1 +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/external_dependencies/ngstents/.github/workflows/build_pip.sh +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/external_dependencies/ngstents/.github/workflows/build_pip_mac.sh +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/external_dependencies/ngstents/.github/workflows/fix_auditwheel_policy.py +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/external_dependencies/ngstents/.github/workflows/ngsolve_version.txt +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/external_dependencies/ngstents/README.md +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/external_dependencies/ngstents/demo/advection/Advection_Periodic_Clipping.ipynb +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/external_dependencies/ngstents/demo/advection/advection2d.py +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/external_dependencies/ngstents/demo/advection/advection2d_periodic.py +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/external_dependencies/ngstents/demo/burgers/Burgers_Clipping.ipynb +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/external_dependencies/ngstents/demo/burgers/burgers1d.py +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/external_dependencies/ngstents/demo/burgers/burgers2d.py +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/external_dependencies/ngstents/demo/euler/Euler_Clipping.ipynb +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/external_dependencies/ngstents/demo/euler/euler2d.py +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/external_dependencies/ngstents/demo/euler/mach3_windtunnel.py +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/external_dependencies/ngstents/demo/maxwell/maxwell3d.py +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/external_dependencies/ngstents/demo/symbolic/symbolic_advection2d.py +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/external_dependencies/ngstents/demo/symbolic/symbolic_burgers.py +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/external_dependencies/ngstents/demo/symbolic/symbolic_euler.py +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/external_dependencies/ngstents/demo/symbolic/symbolic_wave.py +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/external_dependencies/ngstents/demo/symbolic/symbolic_wave1d_interface.py +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/external_dependencies/ngstents/demo/symbolic/wave_penetrable_cylinder.py +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/external_dependencies/ngstents/demo/tents/draw3dtent.py +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/external_dependencies/ngstents/demo/tents/draw3dvertex.py +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/external_dependencies/ngstents/demo/wave/horn.py +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/external_dependencies/ngstents/demo/wave/wave2d.py +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/external_dependencies/ngstents/demo/wave/wave2d_timedepbc.py +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/external_dependencies/ngstents/demo/wave/wave3d.py +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/external_dependencies/ngstents/docs/BurgersMTP.ipynb +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/external_dependencies/ngstents/docs/INDEX.ipynb +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/external_dependencies/ngstents/docs/StartPitching.ipynb +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/external_dependencies/ngstents/docs/conf.py +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/external_dependencies/ngstents/docs/figs/CausalityCond.png +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/external_dependencies/ngstents/docs/figs/dag.png +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/external_dependencies/ngstents/docs/figs/map.png +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/external_dependencies/ngstents/docs/figs/subtents.png +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/external_dependencies/ngstents/docs/index.rst +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/external_dependencies/ngstents/docs/readme.rst +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/external_dependencies/ngstents/docs/requirements.txt +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/external_dependencies/ngstents/py/__init__.py +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/external_dependencies/ngstents/py/conslaw/__init__.py +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/external_dependencies/ngstents/py/utils/__init__.py +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/external_dependencies/ngstents/py/utils/_drawtents.py +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/external_dependencies/ngstents/py/utils/_drawtents2d.py +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/external_dependencies/ngstents/setup.py +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/external_dependencies/ngstents/src/CMakeLists.txt +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/external_dependencies/ngstents/src/advection.cpp +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/external_dependencies/ngstents/src/burgers.cpp +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/external_dependencies/ngstents/src/concurrentqueue.h +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/external_dependencies/ngstents/src/conservationlaw.hpp +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/external_dependencies/ngstents/src/euler.cpp +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/external_dependencies/ngstents/src/maxwell.cpp +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/external_dependencies/ngstents/src/paralleldepend.hpp +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/external_dependencies/ngstents/src/python_conslaw.cpp +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/external_dependencies/ngstents/src/python_tents.cpp +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/external_dependencies/ngstents/src/symbolic.cpp +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/external_dependencies/ngstents/src/tconservationlaw_tp_impl.hpp +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/external_dependencies/ngstents/src/tents.cpp +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/external_dependencies/ngstents/src/tents.hpp +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/external_dependencies/ngstents/src/tentsolver.hpp +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/external_dependencies/ngstents/src/tentsolver_impl.hpp +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/external_dependencies/ngstents/src/vis3d.cpp +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/external_dependencies/ngstents/src/vis3d.hpp +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/external_dependencies/ngstents/src/wave.cpp +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/external_dependencies/ngstents/tests/test_burgers_2D.py +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/external_dependencies/ngstents/tests/test_causal_tents.py +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/external_dependencies/ngstents/tests/test_conslaw.py +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/external_dependencies/ngstents/tests/test_tent_height_2D.py +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/external_dependencies/ngstents/tests/test_tentlayers.py +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/setup.cfg +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/setup.py +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/src/CMakeLists.txt +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/src/__init__.py +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/src/airy.cpp +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/src/condensedg.hpp +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/src/diffopmapped.hpp +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/src/embtrefftz.cpp +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/src/embtrefftz.hpp +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/src/mesh1dtents.cpp +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/src/mesh1dtents.hpp +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/src/monomialfespace.cpp +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/src/monomialfespace.hpp +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/src/ngstrefftz.egg-info/dependency_links.txt +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/src/ngstrefftz.egg-info/requires.txt +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/src/ngstrefftz.egg-info/top_level.txt +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/src/ngsttd.hpp +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/src/planewavefe.cpp +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/src/planewavefe.hpp +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/src/python_trefftz.cpp +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/src/scalarmappedfe.cpp +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/src/scalarmappedfe.hpp +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/src/specialcoefficientfunction.cpp +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/src/specialcoefficientfunction.hpp +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/src/specialintegrator.cpp +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/src/specialintegrator.hpp +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/src/trefftzfespace.cpp +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/src/trefftzfespace.hpp +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/src/twavetents.cpp +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/src/twavetents.hpp +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/test/dg.py +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/test/embt.py +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/test/tents.py +0 -0
- {ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/test/trefftz.py +0 -0
|
@@ -54,14 +54,14 @@ NGSTrefftz is an add-On to NGSolve for Trefftz methods.
|
|
|
54
54
|
notebooks/index.ipynb
|
|
55
55
|
notebooks/laplace.ipynb
|
|
56
56
|
notebooks/helmholtz.ipynb
|
|
57
|
-
notebooks/tunfitted.ipynb
|
|
58
57
|
notebooks/twave.ipynb
|
|
58
|
+
notebooks/qtelliptic.ipynb
|
|
59
59
|
notebooks/qtwave.ipynb
|
|
60
|
-
notebooks/twavetents.ipynb
|
|
61
60
|
notebooks/embTrefftz.ipynb
|
|
62
61
|
notebooks/embTrefftz-poi.ipynb
|
|
63
62
|
notebooks/embTrefftz-wave.ipynb
|
|
64
63
|
notebooks/embTrefftz-helm.ipynb
|
|
65
64
|
notebooks/embTrefftz-adv.ipynb
|
|
66
65
|
notebooks/embTrefftz-stokes.ipynb
|
|
67
|
-
|
|
66
|
+
notebooks/tunfitted.ipynb
|
|
67
|
+
notebooks/twavetents.ipynb
|
|
@@ -271,7 +271,7 @@
|
|
|
271
271
|
" tgfu = GridFunction(fes)\n",
|
|
272
272
|
" tgfu.vec.data = PP*TU\n",
|
|
273
273
|
" \n",
|
|
274
|
-
"Draw(tgfu.components[0],clipping={\"z\":-1, \"dist\":-.11})"
|
|
274
|
+
"Draw(tgfu.components[0],clipping={\"z\":-1, \"dist\":-.11, \"function\":True})"
|
|
275
275
|
]
|
|
276
276
|
},
|
|
277
277
|
{
|
|
@@ -302,7 +302,7 @@
|
|
|
302
302
|
"name": "python",
|
|
303
303
|
"nbconvert_exporter": "python",
|
|
304
304
|
"pygments_lexer": "ipython3",
|
|
305
|
-
"version": "3.
|
|
305
|
+
"version": "3.12.3"
|
|
306
306
|
}
|
|
307
307
|
},
|
|
308
308
|
"nbformat": 4,
|
|
@@ -25,20 +25,24 @@
|
|
|
25
25
|
"1. [Notebook](laplace.ipynb) introduces the Trefftz space in NGSolve alongside a Trefftz-DG method using harmonic polynomials to solve the Laplace problem.\n",
|
|
26
26
|
"2. [Notebook](helmholtz.ipynb) presents plane waves for the Helmholtz equation.\n",
|
|
27
27
|
"3. [Notebook](twave.ipynb) presents the space-time DG Trefftz method for the acoustic wave equation on meshes Cartesian in time.\n",
|
|
28
|
-
"4. [Notebook](tunfitted.ipynb) presents the Trefftz method on unfitted geometries using ngsxfem.\n",
|
|
29
28
|
"\n",
|
|
30
|
-
"### Advanced Trefftz methods for the acoustic wave equation\n",
|
|
31
29
|
"\n",
|
|
30
|
+
"### Quasi-Trefftz methods\n",
|
|
31
|
+
"\n",
|
|
32
|
+
"4. [Notebook](qtelliptic.ipynb) presents the quasi-Trefftz DG method for the diffusion-advection-reaction equation with piecewise-smooth coefficients and right-hand side.\n",
|
|
32
33
|
"5. [Notebook](qtwave.ipynb) presents quasi-Trefftz functions that are used for the wave equation with piecewise-smooth wavespeed.\n",
|
|
33
|
-
"6. [Notebook](twavetents.ipynb) shows how to use the Trefftz and quasi-Trefftz methods with tent-pitched meshes.\n",
|
|
34
34
|
"\n",
|
|
35
35
|
"### Embedded Trefftz methods\n",
|
|
36
|
-
"
|
|
37
|
-
"
|
|
38
|
-
"
|
|
39
|
-
"
|
|
40
|
-
"
|
|
41
|
-
"
|
|
36
|
+
"6. [Notebook](embTrefftz.ipynb) presents the embedded Trefftz method\n",
|
|
37
|
+
"7. [Notebook](embTrefftz-poi.ipynb) for inhomogeneous problems\n",
|
|
38
|
+
"8. [Notebook](embTrefftz-helm.ipynb) for the Helmholtz problem\n",
|
|
39
|
+
"9. [Notebook](embTrefftz-wave.ipynb) for the acoustic wave equation\n",
|
|
40
|
+
"10. [Notebook](embTrefftz-adv.ipynb) for advection\n",
|
|
41
|
+
"11. [Notebook](embTrefftz-stokes.ipynb) for the Stokes problem\n",
|
|
42
|
+
"\n",
|
|
43
|
+
"### Trefftz methods and ...\n",
|
|
44
|
+
"12. [Notebook](tunfitted.ipynb) presents the Trefftz method on unfitted geometries using *ngsxfem*.\n",
|
|
45
|
+
"13. [Notebook](twavetents.ipynb) shows how to use the Trefftz and quasi-Trefftz methods with tent-pitched meshes using *ngstents*."
|
|
42
46
|
]
|
|
43
47
|
}
|
|
44
48
|
],
|
|
@@ -58,7 +62,7 @@
|
|
|
58
62
|
"name": "python",
|
|
59
63
|
"nbconvert_exporter": "python",
|
|
60
64
|
"pygments_lexer": "ipython3",
|
|
61
|
-
"version": "3.
|
|
65
|
+
"version": "3.12.3"
|
|
62
66
|
}
|
|
63
67
|
},
|
|
64
68
|
"nbformat": 4,
|
|
@@ -0,0 +1,477 @@
|
|
|
1
|
+
{
|
|
2
|
+
"cells": [
|
|
3
|
+
{
|
|
4
|
+
"cell_type": "markdown",
|
|
5
|
+
"id": "1ffc608a-0a36-49c0-9a86-646e3b82ca20",
|
|
6
|
+
"metadata": {},
|
|
7
|
+
"source": [
|
|
8
|
+
"# Quasi-Treffz DG: diffusion-advection-reaction \n",
|
|
9
|
+
"Consider the following diffusion-advection-reaction BVP\n",
|
|
10
|
+
"$$\n",
|
|
11
|
+
"\\begin{cases}\n",
|
|
12
|
+
"\\mathcal{L}u:=\\text{div}(-\\boldsymbol{K} \\nabla u +\\boldsymbol{\\beta} u) +\\sigma u = f &\\text{in $\\Omega$,}\\\\\n",
|
|
13
|
+
"u=g_{D} &\\text{on $ \\Gamma_{D}$,}\\\\\n",
|
|
14
|
+
"- \\boldsymbol{K} \\nabla u \\cdot \\mathbf{n} =g_{N} &\\text{on $ \\Gamma_{N}$.}\n",
|
|
15
|
+
"\\end{cases}\n",
|
|
16
|
+
"$$\n",
|
|
17
|
+
"with piecewise-smooth coefficients and right-hand side: $\\boldsymbol{K}=\\boldsymbol{K}^T$ diffusion matrix, $\\boldsymbol{\\beta}$ advection vector, $\\sigma$ reaction scalar and $ f$ source term.\n",
|
|
18
|
+
"\n",
|
|
19
|
+
"We want to solve this second-order elliptic boundary value problem using a quasi-Trefftz DG method."
|
|
20
|
+
]
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
"cell_type": "code",
|
|
24
|
+
"execution_count": null,
|
|
25
|
+
"id": "1fa04d60-934b-4bbd-b2f5-52ca7fba48c6",
|
|
26
|
+
"metadata": {},
|
|
27
|
+
"outputs": [],
|
|
28
|
+
"source": [
|
|
29
|
+
"from ngsolve import *\n",
|
|
30
|
+
"from ngstrefftz import *\n",
|
|
31
|
+
"from netgen.occ import *"
|
|
32
|
+
]
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"cell_type": "markdown",
|
|
36
|
+
"id": "71d73d55-196f-4796-87ab-a94b6d3f550b",
|
|
37
|
+
"metadata": {},
|
|
38
|
+
"source": [
|
|
39
|
+
"### Constructing a polynomial quasi-Trefftz space"
|
|
40
|
+
]
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
"cell_type": "markdown",
|
|
44
|
+
"id": "39e67ca9-151b-489b-b588-60a52a081146",
|
|
45
|
+
"metadata": {},
|
|
46
|
+
"source": [
|
|
47
|
+
"A polynomial quasi-Trefftz space for the diffusion-advection-reaction equation is given by the polynomials that locally belong to\n",
|
|
48
|
+
"$$\n",
|
|
49
|
+
"\\mathbb{Q\\!T}^p_f(E):=\\big\\{ v\\in \\mathbb{P}^p(E) \\mid D^{\\boldsymbol{i}} \\mathcal{L} v (\\boldsymbol{x}^E)=D^{\\boldsymbol{i}} f (\\boldsymbol{x}^E)\\quad \\forall \\boldsymbol{i}\\in \\mathbb{N}^d_0,\\ |\\boldsymbol{i}|\\leq p-2\\big\\}\n",
|
|
50
|
+
"\\qquad \\boldsymbol{x}^E \\in E, \\quad p\\in \\mathbb{N}.\n",
|
|
51
|
+
"$$\n",
|
|
52
|
+
"\n",
|
|
53
|
+
"We can construct it in NGSolve like so:"
|
|
54
|
+
]
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
"cell_type": "code",
|
|
58
|
+
"execution_count": null,
|
|
59
|
+
"id": "e4dacb2d-3787-4299-9180-87a120a0ee46",
|
|
60
|
+
"metadata": {},
|
|
61
|
+
"outputs": [],
|
|
62
|
+
"source": [
|
|
63
|
+
"h = 0.03; \n",
|
|
64
|
+
"order = 3;\n",
|
|
65
|
+
"mesh = Mesh(unit_square.GenerateMesh(maxh=h))\n",
|
|
66
|
+
"SetNumThreads(4)\n",
|
|
67
|
+
"with TaskManager():\n",
|
|
68
|
+
" fes = trefftzfespace(mesh,order=order,eq=\"qtelliptic\")"
|
|
69
|
+
]
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
"cell_type": "markdown",
|
|
73
|
+
"id": "54592f60-a42b-45f1-b4be-0a423a06f250",
|
|
74
|
+
"metadata": {},
|
|
75
|
+
"source": [
|
|
76
|
+
"Using the eq key word one needs to tell `trefftzfespace` the operator for which to construct quasi-Trefftz functions."
|
|
77
|
+
]
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
"cell_type": "markdown",
|
|
81
|
+
"id": "cf42df1e-83af-4b30-9288-e632262e0359",
|
|
82
|
+
"metadata": {},
|
|
83
|
+
"source": [
|
|
84
|
+
"We will consider the following manufactured example"
|
|
85
|
+
]
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
"cell_type": "code",
|
|
89
|
+
"execution_count": null,
|
|
90
|
+
"id": "21be3fa3-2e7d-4d0c-be17-6d48fea9b0a4",
|
|
91
|
+
"metadata": {},
|
|
92
|
+
"outputs": [],
|
|
93
|
+
"source": [
|
|
94
|
+
"exact = sin(pi*(x+y))\n",
|
|
95
|
+
"K = CF((1+x+y,0,0,1+x+y),dims=(2,2))\n",
|
|
96
|
+
"beta = CF((1,0))\n",
|
|
97
|
+
"sigma = 3/(1+x+y)\n",
|
|
98
|
+
"rhs = -sum( (K*CF((exact.Diff(x),exact.Diff(y))))[i].Diff(var) for i,var in enumerate([x,y])) + beta*CF((exact.Diff(x),exact.Diff(y))) + sigma*exact"
|
|
99
|
+
]
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
"cell_type": "markdown",
|
|
103
|
+
"id": "0e26cef3-2c9c-4924-b0b3-45d59eb3cfd4",
|
|
104
|
+
"metadata": {},
|
|
105
|
+
"source": [
|
|
106
|
+
"To set the coefficients for the construction of the quasi-Trefftz basis functions of $ \\mathbb{Q\\!T}^p_0(\\mathcal{T}_h)$ use "
|
|
107
|
+
]
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
"cell_type": "code",
|
|
111
|
+
"execution_count": null,
|
|
112
|
+
"id": "8bb5ff3b-4320-4374-aff9-eeaeb55c30e8",
|
|
113
|
+
"metadata": {},
|
|
114
|
+
"outputs": [],
|
|
115
|
+
"source": [
|
|
116
|
+
"with TaskManager():\n",
|
|
117
|
+
" fes.SetCoeff(K,beta,sigma)"
|
|
118
|
+
]
|
|
119
|
+
},
|
|
120
|
+
{
|
|
121
|
+
"cell_type": "markdown",
|
|
122
|
+
"id": "c9cc70f2-fbc9-4b39-a387-b9a86d5b4c1e",
|
|
123
|
+
"metadata": {},
|
|
124
|
+
"source": [
|
|
125
|
+
"To set the right-hand side for the construction of the quasi-Trefftz particular approximate solution $u_{h,f}\\in \\mathbb{Q\\!T}^p_f(\\mathcal{T}_h)$ use "
|
|
126
|
+
]
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
"cell_type": "code",
|
|
130
|
+
"execution_count": null,
|
|
131
|
+
"id": "fc5e2734-1c26-433f-89fc-e02808eb83e0",
|
|
132
|
+
"metadata": {},
|
|
133
|
+
"outputs": [],
|
|
134
|
+
"source": [
|
|
135
|
+
"with TaskManager():\n",
|
|
136
|
+
" uf = fes.GetEWSolution(rhs)"
|
|
137
|
+
]
|
|
138
|
+
},
|
|
139
|
+
{
|
|
140
|
+
"cell_type": "markdown",
|
|
141
|
+
"id": "33507b04-023b-4b33-9d1a-7d826df4d1b4",
|
|
142
|
+
"metadata": {},
|
|
143
|
+
"source": [
|
|
144
|
+
"A possbile DG method is: \n",
|
|
145
|
+
"$$\n",
|
|
146
|
+
"\\text{Find } u_{h} \\in \\mathbb{Q\\!T}^p_f(\\mathcal{T}_h) \\text{ such that }\n",
|
|
147
|
+
"\\mathcal{A}_h^\\mathrm{dar}(u_{h},v_h)=L_h(v_h) \\quad \\forall v_h \\in \\mathbb{Q\\!T}^p_0(\\mathcal{T}_h),\n",
|
|
148
|
+
"$$\n",
|
|
149
|
+
"with the bilinear form \n",
|
|
150
|
+
"$$\\begin{align}\n",
|
|
151
|
+
"\\mathcal{A}_h^\\mathrm{dar}(u_h,v_h):=&\\sum_{E\\in \\mathcal{T}_h}\t\\int_E \\Big(\\Big(\\boldsymbol{K}\\nabla u_h -\\boldsymbol{\\beta} u_h\\Big) \\cdot \\nabla v_h+\\sigma u_h v_h\\Big)\\\\&+\n",
|
|
152
|
+
"\\sum_{F\\in\\mathcal{F}_h^{\\mathrm I}\\cup \\mathcal{F}_h^{\\mathrm D}}\n",
|
|
153
|
+
"\\int_F \\Big(-\\{\\!\\!\\{\\boldsymbol{K} \\nabla u_h \\}\\!\\!\\} \\cdot [\\![v_h]\\!]- [\\![u_h]\\!] \\cdot \\{\\!\\!\\{\\boldsymbol{K} \\nabla v_h \\}\\!\\!\\}\n",
|
|
154
|
+
"+ \\gamma\\frac{K_F}{h_F} [\\![u_h]\\!]\\cdot [\\![v_h]\\!]\\Big)\\\\ \n",
|
|
155
|
+
"&+\n",
|
|
156
|
+
"\\int_{\\mathcal{F}_h^{\\mathrm I}} \\Big( \\{\\!\\!\\{\\boldsymbol{\\beta} u_h\\}\\!\\!\\} \\cdot [\\![v_h]\\!]+\\frac12|\\boldsymbol{\\beta}\\cdot \\mathbf{n}_F|[\\![u_h]\\!]\\cdot[\\![v_h]\\!]\\Big)+\n",
|
|
157
|
+
"\\int_{\\mathcal{F}_h^+} u_h\\boldsymbol{\\beta} \\cdot \\mathbf{n} v_h,\n",
|
|
158
|
+
"\\end{align} $$\n",
|
|
159
|
+
"and the linear form\n",
|
|
160
|
+
"$$\n",
|
|
161
|
+
"L_h(v_h):=\\sum_{E\\in\\mathcal{T}_h}\\int_E f v_h - \n",
|
|
162
|
+
"\\int_{\\mathcal{F}_h^\\mathrm{N}} g_{\\mathrm N} v_h +\n",
|
|
163
|
+
"\\int_{\\mathcal{F}_h^{\\mathrm D}} g_{\\mathrm D} \\Big(-\\boldsymbol{K} \\nabla v_h \\cdot \\mathbf{n} + \\gamma\\frac{K_F}{h_F} v_h%- \\bbeta \\cdot \\mathbf{n} v_h\n",
|
|
164
|
+
"\\Big)\n",
|
|
165
|
+
"-\\int_{\\mathcal{F}_h^-}g_D\\boldsymbol{\\beta}\\cdot\\mathbf{n} v_h.\n",
|
|
166
|
+
"$$"
|
|
167
|
+
]
|
|
168
|
+
},
|
|
169
|
+
{
|
|
170
|
+
"cell_type": "code",
|
|
171
|
+
"execution_count": null,
|
|
172
|
+
"id": "57ef0895-4638-4c4c-9c45-5669c4cc11ba",
|
|
173
|
+
"metadata": {},
|
|
174
|
+
"outputs": [],
|
|
175
|
+
"source": [
|
|
176
|
+
"def dgell(fes,K,beta=CF((0,0)),sigma=0,Dbndc=0,Dbnd=\".*\",Nbndc=0,Nbnd=\"\",rhs=0,uf=None,alpha=0):\n",
|
|
177
|
+
" mesh = fes.mesh\n",
|
|
178
|
+
" order = fes.globalorder\n",
|
|
179
|
+
"\n",
|
|
180
|
+
" n = specialcf.normal(mesh.dim)\n",
|
|
181
|
+
" h = specialcf.mesh_size\n",
|
|
182
|
+
"\n",
|
|
183
|
+
" alpha = 50*order**2/h if alpha==0 else alpha\n",
|
|
184
|
+
"\n",
|
|
185
|
+
" u = fes.TrialFunction()\n",
|
|
186
|
+
" v = fes.TestFunction()\n",
|
|
187
|
+
" jump = lambda u: (u-u.Other())*n\n",
|
|
188
|
+
" mean_d = lambda u: 0.5 * K * (grad(u)+grad(u).Other())\n",
|
|
189
|
+
" mean_B = lambda u: 0.5 * beta * (u+u.Other())\n",
|
|
190
|
+
"\n",
|
|
191
|
+
" a = BilinearForm(fes)\n",
|
|
192
|
+
" a += K*grad(u)*grad(v) * dx \\\n",
|
|
193
|
+
" +alpha*jump(u)*jump(v) * dx(skeleton=True) \\\n",
|
|
194
|
+
" +(-mean_d(u)*jump(v)-mean_d(v)*jump(u)) * dx(skeleton=True) \\\n",
|
|
195
|
+
" +alpha*u*v * ds(skeleton=True,definedon=mesh.Boundaries(Dbnd)) \\\n",
|
|
196
|
+
" +(-K*grad(u)*n*v-K*grad(v)*n*u)* ds(skeleton=True,definedon=mesh.Boundaries(Dbnd))\n",
|
|
197
|
+
" a += (-beta*u*grad(v) + sigma*u*v) * dx \\\n",
|
|
198
|
+
" + (mean_B(u) * jump(v) + 0.5*sqrt((beta*n)**2)*jump(u)*jump(v)) * dx(skeleton=True) \\\n",
|
|
199
|
+
" + beta*u*n*v * ds(skeleton=True,definedon=mesh.Boundaries(Nbnd))\n",
|
|
200
|
+
"\n",
|
|
201
|
+
" f = LinearForm(fes)\n",
|
|
202
|
+
" f += Dbndc * (-K*grad(v)*n + alpha*v - beta*n*v) * ds(skeleton=True,definedon=mesh.Boundaries(Dbnd)) \\\n",
|
|
203
|
+
" - Nbndc * v * ds(skeleton=True,definedon=mesh.Boundaries(Nbnd)) \\\n",
|
|
204
|
+
" + rhs*v*dx\n",
|
|
205
|
+
" if uf:\n",
|
|
206
|
+
" f += -K*grad(uf)*grad(v) * dx \\\n",
|
|
207
|
+
" -alpha*jump(uf)*jump(v) * dx(skeleton=True) \\\n",
|
|
208
|
+
" -(-mean_d(uf)*jump(v)-mean_d(v)*jump(uf)) * dx(skeleton=True) \\\n",
|
|
209
|
+
" -alpha*uf*v * ds(skeleton=True,definedon=mesh.Boundaries(Dbnd)) \\\n",
|
|
210
|
+
" -(-K*grad(uf)*n*v-K*grad(v)*n*uf)* ds(skeleton=True,definedon=mesh.Boundaries(Dbnd))\n",
|
|
211
|
+
" f += (beta*uf*grad(v) - sigma*uf*v) * dx \\\n",
|
|
212
|
+
" - (mean_B(uf) * jump(v) + 0.5*sqrt((beta*n)**2)*jump(uf)*jump(v)) * dx(skeleton=True) \\\n",
|
|
213
|
+
" - beta*uf*n*v * ds(skeleton=True,definedon=mesh.Boundaries(Nbnd))\n",
|
|
214
|
+
"\n",
|
|
215
|
+
" with TaskManager():\n",
|
|
216
|
+
" a.Assemble()\n",
|
|
217
|
+
" f.Assemble()\n",
|
|
218
|
+
"\n",
|
|
219
|
+
" return a,f"
|
|
220
|
+
]
|
|
221
|
+
},
|
|
222
|
+
{
|
|
223
|
+
"cell_type": "markdown",
|
|
224
|
+
"id": "03ae6810-6716-4a63-bc52-b0be5326b54b",
|
|
225
|
+
"metadata": {},
|
|
226
|
+
"source": [
|
|
227
|
+
"Consider the previous manufactured example and obtain the approximate solution `gfu` "
|
|
228
|
+
]
|
|
229
|
+
},
|
|
230
|
+
{
|
|
231
|
+
"cell_type": "code",
|
|
232
|
+
"execution_count": null,
|
|
233
|
+
"id": "3c87a578-ac0d-4c84-99f4-1852916e8289",
|
|
234
|
+
"metadata": {},
|
|
235
|
+
"outputs": [],
|
|
236
|
+
"source": [
|
|
237
|
+
"Dbndc = exact\n",
|
|
238
|
+
"Dbnd = '.*'\n",
|
|
239
|
+
"Nbndc = 0\n",
|
|
240
|
+
"Nbnd = ''\n",
|
|
241
|
+
"\n",
|
|
242
|
+
"a,f = dgell(fes,K,beta,sigma,Dbndc=Dbndc,Dbnd=Dbnd,Nbnd=Nbnd,Nbndc=Nbndc,rhs=rhs,uf=uf)\n",
|
|
243
|
+
"gfu = GridFunction(fes)\n",
|
|
244
|
+
"\n",
|
|
245
|
+
"with TaskManager():\n",
|
|
246
|
+
" gfu.vec.data = a.mat.Inverse()*f.vec"
|
|
247
|
+
]
|
|
248
|
+
},
|
|
249
|
+
{
|
|
250
|
+
"cell_type": "markdown",
|
|
251
|
+
"id": "0cbc4795-cb36-4129-8d76-c96091d8c443",
|
|
252
|
+
"metadata": {},
|
|
253
|
+
"source": [
|
|
254
|
+
"We can calculate the $L^2(\\Omega)$-error:"
|
|
255
|
+
]
|
|
256
|
+
},
|
|
257
|
+
{
|
|
258
|
+
"cell_type": "code",
|
|
259
|
+
"execution_count": null,
|
|
260
|
+
"id": "ff7a8109-3657-40a5-bfe1-ed08b8efbd5d",
|
|
261
|
+
"metadata": {},
|
|
262
|
+
"outputs": [],
|
|
263
|
+
"source": [
|
|
264
|
+
"error = sqrt(Integrate((gfu-exact)**2, mesh))\n",
|
|
265
|
+
"print(\"quasi-Trefftz DG error:\",error)"
|
|
266
|
+
]
|
|
267
|
+
},
|
|
268
|
+
{
|
|
269
|
+
"cell_type": "markdown",
|
|
270
|
+
"id": "d9818abd-c055-4859-a2c6-2691bf77faa2",
|
|
271
|
+
"metadata": {},
|
|
272
|
+
"source": [
|
|
273
|
+
"We can plot the approximate solution like so:"
|
|
274
|
+
]
|
|
275
|
+
},
|
|
276
|
+
{
|
|
277
|
+
"cell_type": "code",
|
|
278
|
+
"execution_count": null,
|
|
279
|
+
"id": "663ddaff-a1d8-4c9d-81c2-d264eca04376",
|
|
280
|
+
"metadata": {},
|
|
281
|
+
"outputs": [],
|
|
282
|
+
"source": [
|
|
283
|
+
"from ngsolve.webgui import Draw\n",
|
|
284
|
+
"Draw(gfu,mesh,\"gfu\")"
|
|
285
|
+
]
|
|
286
|
+
},
|
|
287
|
+
{
|
|
288
|
+
"cell_type": "markdown",
|
|
289
|
+
"id": "a6c8846d-a388-4844-bd73-7f5ed01d6658",
|
|
290
|
+
"metadata": {},
|
|
291
|
+
"source": [
|
|
292
|
+
"### Advection-dominated example"
|
|
293
|
+
]
|
|
294
|
+
},
|
|
295
|
+
{
|
|
296
|
+
"cell_type": "code",
|
|
297
|
+
"execution_count": null,
|
|
298
|
+
"id": "0061d855-0ae6-4e19-8e3c-045ad2513653",
|
|
299
|
+
"metadata": {},
|
|
300
|
+
"outputs": [],
|
|
301
|
+
"source": [
|
|
302
|
+
"nu = 10**(-3)\n",
|
|
303
|
+
"K = CF((nu,0,0,nu),dims=(2,2))\n",
|
|
304
|
+
"beta = CF((y+1,-x+2))\n",
|
|
305
|
+
"sigma = 0\n",
|
|
306
|
+
"rhs = 0\n",
|
|
307
|
+
"uf = None\n",
|
|
308
|
+
"Dbndc = IfPos(IfPos(x-10**-10,0,1) + IfPos(y-10**-10,0,1)*IfPos(x-1/3,0,1) - 0.5, 1, 0)\n",
|
|
309
|
+
"Nbndc = 0\n",
|
|
310
|
+
"Dbnd = \"bottom|left\"\n",
|
|
311
|
+
"Nbnd = \"top|right\""
|
|
312
|
+
]
|
|
313
|
+
},
|
|
314
|
+
{
|
|
315
|
+
"cell_type": "code",
|
|
316
|
+
"execution_count": null,
|
|
317
|
+
"id": "83dfd9f8-69d5-4d65-8812-fc8822b77f15",
|
|
318
|
+
"metadata": {},
|
|
319
|
+
"outputs": [],
|
|
320
|
+
"source": [
|
|
321
|
+
"with TaskManager():\n",
|
|
322
|
+
" fes = trefftzfespace(mesh,order=order,eq=\"qtelliptic\")\n",
|
|
323
|
+
" fes.SetCoeff(K,beta,sigma)\n",
|
|
324
|
+
" \n",
|
|
325
|
+
"alpha = 100*nu/h\n",
|
|
326
|
+
"a,f = dgell(fes,K,beta,sigma,Dbndc=Dbndc,Dbnd=Dbnd,Nbnd=Nbnd,Nbndc=Nbndc,rhs=rhs,uf=uf,alpha=alpha)\n",
|
|
327
|
+
"gfu = GridFunction(fes)\n",
|
|
328
|
+
"with TaskManager():\n",
|
|
329
|
+
" gfu.vec.data = a.mat.Inverse() * f.vec\n",
|
|
330
|
+
"Draw(gfu,mesh,\"gfu\")"
|
|
331
|
+
]
|
|
332
|
+
},
|
|
333
|
+
{
|
|
334
|
+
"cell_type": "markdown",
|
|
335
|
+
"id": "128e02a2-5115-476c-8dbc-e83eeb8ba48d",
|
|
336
|
+
"metadata": {},
|
|
337
|
+
"source": [
|
|
338
|
+
"To see the 3D surface click `Open Controls` and select `deformation`."
|
|
339
|
+
]
|
|
340
|
+
},
|
|
341
|
+
{
|
|
342
|
+
"cell_type": "markdown",
|
|
343
|
+
"id": "f5548554-7123-49df-89a1-65928e6a30b7",
|
|
344
|
+
"metadata": {},
|
|
345
|
+
"source": [
|
|
346
|
+
"### Circular obstacle example"
|
|
347
|
+
]
|
|
348
|
+
},
|
|
349
|
+
{
|
|
350
|
+
"cell_type": "code",
|
|
351
|
+
"execution_count": null,
|
|
352
|
+
"id": "16c76b3b-c745-4aa1-86be-b9e6b4cc8334",
|
|
353
|
+
"metadata": {},
|
|
354
|
+
"outputs": [],
|
|
355
|
+
"source": [
|
|
356
|
+
"h = 0.05\n",
|
|
357
|
+
"wp = WorkPlane().RectangleC(2,2) \\\n",
|
|
358
|
+
" .Circle(0,0,0.25).Reverse() \n",
|
|
359
|
+
"geo = wp.Face()\n",
|
|
360
|
+
"mesh = Mesh(OCCGeometry(geo,dim=2).GenerateMesh(maxh=h))\n",
|
|
361
|
+
"mesh.Curve(order)\n",
|
|
362
|
+
"mesh.ngmesh.SetBCName(0,\"top\")\n",
|
|
363
|
+
"mesh.ngmesh.SetBCName(1,\"bottom\")\n",
|
|
364
|
+
"mesh.ngmesh.SetBCName(2,\"left\")\n",
|
|
365
|
+
"mesh.ngmesh.SetBCName(3,\"right\")\n",
|
|
366
|
+
"mesh.ngmesh.SetBCName(4,\"innercircle\")"
|
|
367
|
+
]
|
|
368
|
+
},
|
|
369
|
+
{
|
|
370
|
+
"cell_type": "code",
|
|
371
|
+
"execution_count": null,
|
|
372
|
+
"id": "aed18fb0-8d32-430c-8e60-2b8b233a2228",
|
|
373
|
+
"metadata": {
|
|
374
|
+
"scrolled": true
|
|
375
|
+
},
|
|
376
|
+
"outputs": [],
|
|
377
|
+
"source": [
|
|
378
|
+
"nu = 10**(-3)\n",
|
|
379
|
+
"K = CF((nu,0,0,nu),dims=(2,2))\n",
|
|
380
|
+
"beta = CF((1+1/16*(y**2-x**2)/((x**2+y**2)**2),-1/8*x*y/((x**2+y**2)**2)))\n",
|
|
381
|
+
"sigma = 0\n",
|
|
382
|
+
"Dbndc = IfPos(x+1/2,1,0)\n",
|
|
383
|
+
"Nbndc = 0\n",
|
|
384
|
+
"Dbnd=\"right|innercircle\"\n",
|
|
385
|
+
"Nbnd=\"left|top|bottom\"\n",
|
|
386
|
+
"rhs = 0\n",
|
|
387
|
+
"uf = None\n",
|
|
388
|
+
"\n",
|
|
389
|
+
"order = 3\n",
|
|
390
|
+
"with TaskManager():\n",
|
|
391
|
+
" fes = trefftzfespace(mesh,order=order,eq=\"qtelliptic\")\n",
|
|
392
|
+
" fes.SetCoeff(K,beta,sigma)\n",
|
|
393
|
+
" alpha = nu*50*order/h\n",
|
|
394
|
+
" a,f = dgell(fes,K,beta,sigma,Dbndc=Dbndc,Dbnd=Dbnd,Nbnd=Nbnd,Nbndc=Nbndc,rhs=rhs,uf=uf,alpha=alpha)\n",
|
|
395
|
+
"gfu = GridFunction(fes)\n",
|
|
396
|
+
"with TaskManager():\n",
|
|
397
|
+
" gfu.vec.data = a.mat.Inverse() * f.vec\n",
|
|
398
|
+
"\n",
|
|
399
|
+
"Draw(gfu,mesh,\"gfu\")"
|
|
400
|
+
]
|
|
401
|
+
},
|
|
402
|
+
{
|
|
403
|
+
"cell_type": "markdown",
|
|
404
|
+
"id": "ebf21741-f21e-441d-9be7-432a32415cb3",
|
|
405
|
+
"metadata": {},
|
|
406
|
+
"source": [
|
|
407
|
+
"### L-shaped domain example"
|
|
408
|
+
]
|
|
409
|
+
},
|
|
410
|
+
{
|
|
411
|
+
"cell_type": "code",
|
|
412
|
+
"execution_count": null,
|
|
413
|
+
"id": "31807cbc-c6c5-44a0-a809-490bb419de58",
|
|
414
|
+
"metadata": {
|
|
415
|
+
"scrolled": true
|
|
416
|
+
},
|
|
417
|
+
"outputs": [],
|
|
418
|
+
"source": [
|
|
419
|
+
"wp = WorkPlane()\n",
|
|
420
|
+
"wp.MoveTo(0,0.5).LineTo(0.5,0.5).LineTo(0.5,0).LineTo(1,0).LineTo(1,1).LineTo(0,1).Close()\n",
|
|
421
|
+
"geo = wp.Face()\n",
|
|
422
|
+
"h = 0.05\n",
|
|
423
|
+
"mesh = Mesh(OCCGeometry(geo,dim=2).GenerateMesh(maxh=h))"
|
|
424
|
+
]
|
|
425
|
+
},
|
|
426
|
+
{
|
|
427
|
+
"cell_type": "code",
|
|
428
|
+
"execution_count": null,
|
|
429
|
+
"id": "8de5679e-376f-495c-a7a0-f6b8d4184ee1",
|
|
430
|
+
"metadata": {},
|
|
431
|
+
"outputs": [],
|
|
432
|
+
"source": [
|
|
433
|
+
"nu = 5*10**(-3)\n",
|
|
434
|
+
"K = CF((nu,0,0,nu),dims=(2,2))\n",
|
|
435
|
+
"beta = CF((-y,x))\n",
|
|
436
|
+
"sigma = 0\n",
|
|
437
|
+
"Dbndc = IfPos(y,0,1)\n",
|
|
438
|
+
"Dbnd = \".*\"\n",
|
|
439
|
+
"rhs = 0\n",
|
|
440
|
+
"uf = None\n",
|
|
441
|
+
"\n",
|
|
442
|
+
"order = 4\n",
|
|
443
|
+
"with TaskManager():\n",
|
|
444
|
+
" fes = trefftzfespace(mesh,order=order,eq=\"qtelliptic\")\n",
|
|
445
|
+
" fes.SetCoeff(K,beta,sigma)\n",
|
|
446
|
+
" alpha = nu*50*order/h\n",
|
|
447
|
+
" a,f = dgell(fes,K,beta,sigma,Dbndc=Dbndc,Dbnd=Dbnd,Nbnd=Nbnd,Nbndc=Nbndc,rhs=rhs,uf=uf,alpha=alpha)\n",
|
|
448
|
+
" \n",
|
|
449
|
+
"gfu = GridFunction(fes)\n",
|
|
450
|
+
"with TaskManager():\n",
|
|
451
|
+
" gfu.vec.data = a.mat.Inverse() * f.vec\n",
|
|
452
|
+
"Draw(gfu,mesh,\"gfu\")"
|
|
453
|
+
]
|
|
454
|
+
}
|
|
455
|
+
],
|
|
456
|
+
"metadata": {
|
|
457
|
+
"kernelspec": {
|
|
458
|
+
"display_name": "Python 3 (ipykernel)",
|
|
459
|
+
"language": "python",
|
|
460
|
+
"name": "python3"
|
|
461
|
+
},
|
|
462
|
+
"language_info": {
|
|
463
|
+
"codemirror_mode": {
|
|
464
|
+
"name": "ipython",
|
|
465
|
+
"version": 3
|
|
466
|
+
},
|
|
467
|
+
"file_extension": ".py",
|
|
468
|
+
"mimetype": "text/x-python",
|
|
469
|
+
"name": "python",
|
|
470
|
+
"nbconvert_exporter": "python",
|
|
471
|
+
"pygments_lexer": "ipython3",
|
|
472
|
+
"version": "3.12.2"
|
|
473
|
+
}
|
|
474
|
+
},
|
|
475
|
+
"nbformat": 4,
|
|
476
|
+
"nbformat_minor": 5
|
|
477
|
+
}
|
|
@@ -210,7 +210,7 @@
|
|
|
210
210
|
" \n",
|
|
211
211
|
"gfu = GridFunction(fes, name=\"uDG\")\n",
|
|
212
212
|
"gfu.vec.data = a.mat.Inverse()*f.vec\n",
|
|
213
|
-
"Draw(gfu,clipping={\"z\":-1, \"dist\":-.33})"
|
|
213
|
+
"Draw(gfu,clipping={\"z\":-1, \"dist\":-.33, \"function\":True})"
|
|
214
214
|
]
|
|
215
215
|
},
|
|
216
216
|
{
|
|
@@ -240,7 +240,7 @@
|
|
|
240
240
|
"name": "python",
|
|
241
241
|
"nbconvert_exporter": "python",
|
|
242
242
|
"pygments_lexer": "ipython3",
|
|
243
|
-
"version": "3.
|
|
243
|
+
"version": "3.12.3"
|
|
244
244
|
}
|
|
245
245
|
},
|
|
246
246
|
"nbformat": 4,
|
|
@@ -94,8 +94,10 @@ namespace ngcomp
|
|
|
94
94
|
}
|
|
95
95
|
|
|
96
96
|
Array<int> els = GetElNeighbours (ma, ei);
|
|
97
|
-
|
|
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)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/.github/workflows/fix_auditwheel_policy.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/.github/workflows/pyodide/build_in_docker.sh
RENAMED
|
File without changes
|
|
File without changes
|
{ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/.github/workflows/pyodide/requirements.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/docs/notebooks/embTrefftz-stokes.ipynb
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/external_dependencies/ngstents/README.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/external_dependencies/ngstents/docs/conf.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/external_dependencies/ngstents/docs/index.rst
RENAMED
|
File without changes
|
{ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/external_dependencies/ngstents/docs/readme.rst
RENAMED
|
File without changes
|
|
File without changes
|
{ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/external_dependencies/ngstents/py/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/external_dependencies/ngstents/setup.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/external_dependencies/ngstents/src/burgers.cpp
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/external_dependencies/ngstents/src/euler.cpp
RENAMED
|
File without changes
|
{ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/external_dependencies/ngstents/src/maxwell.cpp
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/external_dependencies/ngstents/src/tents.cpp
RENAMED
|
File without changes
|
{ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/external_dependencies/ngstents/src/tents.hpp
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/external_dependencies/ngstents/src/vis3d.cpp
RENAMED
|
File without changes
|
{ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/external_dependencies/ngstents/src/vis3d.hpp
RENAMED
|
File without changes
|
{ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/external_dependencies/ngstents/src/wave.cpp
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ngstrefftz-0.3.2403.dev5 → ngstrefftz-0.3.2403.dev9}/src/ngstrefftz.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|