ngstrefftz 0.3.2402.dev35__tar.gz → 0.3.2402.dev152__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.2402.dev35 → ngstrefftz-0.3.2402.dev152}/.github/workflows/build.yml +56 -105
- ngstrefftz-0.3.2402.dev152/.gitignore +15 -0
- ngstrefftz-0.3.2402.dev152/CMakeLists.txt +204 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2402.dev152}/Dockerfile +5 -0
- ngstrefftz-0.3.2402.dev152/PKG-INFO +101 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2402.dev152}/README.md +1 -1
- ngstrefftz-0.3.2402.dev152/_version.py +16 -0
- ngstrefftz-0.3.2402.dev152/docs/Doxyfile.in +4 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2402.dev152}/docs/index.rst +3 -3
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2402.dev152}/docs/intro.rst +1 -1
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2402.dev152}/docs/notebooks/embTrefftz-helm.ipynb +82 -56
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2402.dev152}/docs/notebooks/embTrefftz-wave.ipynb +2 -2
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2402.dev152}/docs/notebooks/helmholtz.ipynb +2 -2
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2402.dev152}/docs/notebooks/index.ipynb +14 -10
- ngstrefftz-0.3.2402.dev152/docs/notebooks/qtelliptic.ipynb +450 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2402.dev152}/docs/notebooks/qtwave.ipynb +3 -3
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2402.dev152}/docs/notebooks/tunfitted.ipynb +3 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2402.dev152}/docs/notebooks/twave.ipynb +1 -1
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2402.dev152}/docs/notebooks/twavetents.ipynb +1 -2
- ngstrefftz-0.3.2402.dev152/docs/requirements.txt +26 -0
- ngstrefftz-0.3.2402.dev152/external_dependencies/ngstents/.git +1 -0
- ngstrefftz-0.3.2402.dev152/pyproject.toml +54 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2402.dev152}/src/__init__.py +0 -1
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2402.dev152}/src/condensedg.cpp +4 -1
- ngstrefftz-0.3.2402.dev152/src/embtrefftz.cpp +1376 -0
- ngstrefftz-0.3.2402.dev152/src/embtrefftz.hpp +114 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2402.dev152}/src/monomialfespace.cpp +26 -8
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2402.dev152}/src/monomialfespace.hpp +9 -30
- ngstrefftz-0.3.2402.dev152/src/pufe.cpp +345 -0
- ngstrefftz-0.3.2402.dev152/src/pufe.hpp +176 -0
- ngstrefftz-0.3.2402.dev152/src/pufespace.cpp +165 -0
- ngstrefftz-0.3.2402.dev152/src/pufespace.hpp +95 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2402.dev152}/src/python_trefftz.cpp +5 -1
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2402.dev152}/src/scalarmappedfe.cpp +1 -32
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2402.dev152}/src/scalarmappedfe.hpp +31 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2402.dev152}/src/trefftzfespace.cpp +159 -32
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2402.dev152}/src/trefftzfespace.hpp +34 -5
- ngstrefftz-0.3.2402.dev152/test/constrained_trefftz.py +351 -0
- ngstrefftz-0.3.2402.dev35/.github/workflows/build_linux_test.sh +0 -19
- ngstrefftz-0.3.2402.dev35/.github/workflows/build_pip.ps1 +0 -58
- ngstrefftz-0.3.2402.dev35/.github/workflows/build_pip.sh +0 -52
- ngstrefftz-0.3.2402.dev35/.github/workflows/build_pip_mac.sh +0 -35
- ngstrefftz-0.3.2402.dev35/PKG-INFO +0 -14
- ngstrefftz-0.3.2402.dev35/docs/requirements.txt +0 -25
- ngstrefftz-0.3.2402.dev35/external_dependencies/ngstents/.github/workflows/ngsolve_version.txt +0 -1
- ngstrefftz-0.3.2402.dev35/setup.cfg +0 -4
- ngstrefftz-0.3.2402.dev35/setup.py +0 -60
- ngstrefftz-0.3.2402.dev35/src/CMakeLists.txt +0 -223
- ngstrefftz-0.3.2402.dev35/src/embtrefftz.cpp +0 -730
- ngstrefftz-0.3.2402.dev35/src/embtrefftz.hpp +0 -67
- ngstrefftz-0.3.2402.dev35/src/ngstrefftz.egg-info/PKG-INFO +0 -14
- ngstrefftz-0.3.2402.dev35/src/ngstrefftz.egg-info/SOURCES.txt +0 -148
- ngstrefftz-0.3.2402.dev35/src/ngstrefftz.egg-info/dependency_links.txt +0 -1
- ngstrefftz-0.3.2402.dev35/src/ngstrefftz.egg-info/requires.txt +0 -3
- ngstrefftz-0.3.2402.dev35/src/ngstrefftz.egg-info/top_level.txt +0 -1
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2402.dev152}/.clang-format +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2402.dev152}/.github/workflows/fix_auditwheel_policy.py +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2402.dev152}/.github/workflows/pyodide/Dockerfile +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2402.dev152}/.github/workflows/pyodide/build_in_docker.sh +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2402.dev152}/.github/workflows/pyodide/merge.py +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2402.dev152}/.github/workflows/pyodide/requirements.txt +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2402.dev152}/.gitmodules +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2402.dev152}/CONTRIBUTING.md +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2402.dev152}/LICENSE +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2402.dev152}/docs/_static/breadcrumbs.html +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2402.dev152}/docs/_static/css/mytheme.css +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2402.dev152}/docs/conf.py +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2402.dev152}/docs/contrib.rst +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2402.dev152}/docs/docu.rst +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2402.dev152}/docs/notebooks/embTrefftz-adv.ipynb +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2402.dev152}/docs/notebooks/embTrefftz-poi.ipynb +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2402.dev152}/docs/notebooks/embTrefftz-stokes.ipynb +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2402.dev152}/docs/notebooks/embTrefftz.ipynb +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2402.dev152}/docs/notebooks/laplace.ipynb +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2402.dev152}/docs/paper/codemeta.json +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2402.dev152}/docs/paper/paper.bib +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2402.dev152}/docs/paper/paper.md +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2402.dev152}/docs/readme.rst +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2402.dev152}/external_dependencies/ngstents/.github/workflows/build.yml +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2402.dev152}/external_dependencies/ngstents/.github/workflows/build_pip.ps1 +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2402.dev152}/external_dependencies/ngstents/.github/workflows/build_pip.sh +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2402.dev152}/external_dependencies/ngstents/.github/workflows/build_pip_mac.sh +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2402.dev152}/external_dependencies/ngstents/.github/workflows/fix_auditwheel_policy.py +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2402.dev152/external_dependencies/ngstents}/.github/workflows/ngsolve_version.txt +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2402.dev152}/external_dependencies/ngstents/README.md +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2402.dev152}/external_dependencies/ngstents/demo/advection/Advection_Periodic_Clipping.ipynb +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2402.dev152}/external_dependencies/ngstents/demo/advection/advection2d.py +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2402.dev152}/external_dependencies/ngstents/demo/advection/advection2d_periodic.py +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2402.dev152}/external_dependencies/ngstents/demo/burgers/Burgers_Clipping.ipynb +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2402.dev152}/external_dependencies/ngstents/demo/burgers/burgers1d.py +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2402.dev152}/external_dependencies/ngstents/demo/burgers/burgers2d.py +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2402.dev152}/external_dependencies/ngstents/demo/euler/Euler_Clipping.ipynb +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2402.dev152}/external_dependencies/ngstents/demo/euler/euler2d.py +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2402.dev152}/external_dependencies/ngstents/demo/euler/mach3_windtunnel.py +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2402.dev152}/external_dependencies/ngstents/demo/maxwell/maxwell3d.py +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2402.dev152}/external_dependencies/ngstents/demo/symbolic/symbolic_advection2d.py +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2402.dev152}/external_dependencies/ngstents/demo/symbolic/symbolic_burgers.py +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2402.dev152}/external_dependencies/ngstents/demo/symbolic/symbolic_euler.py +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2402.dev152}/external_dependencies/ngstents/demo/symbolic/symbolic_wave.py +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2402.dev152}/external_dependencies/ngstents/demo/symbolic/symbolic_wave1d_interface.py +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2402.dev152}/external_dependencies/ngstents/demo/symbolic/wave_penetrable_cylinder.py +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2402.dev152}/external_dependencies/ngstents/demo/tents/draw3dtent.py +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2402.dev152}/external_dependencies/ngstents/demo/tents/draw3dvertex.py +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2402.dev152}/external_dependencies/ngstents/demo/wave/horn.py +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2402.dev152}/external_dependencies/ngstents/demo/wave/wave2d.py +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2402.dev152}/external_dependencies/ngstents/demo/wave/wave2d_timedepbc.py +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2402.dev152}/external_dependencies/ngstents/demo/wave/wave3d.py +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2402.dev152}/external_dependencies/ngstents/docs/BurgersMTP.ipynb +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2402.dev152}/external_dependencies/ngstents/docs/INDEX.ipynb +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2402.dev152}/external_dependencies/ngstents/docs/StartPitching.ipynb +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2402.dev152}/external_dependencies/ngstents/docs/conf.py +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2402.dev152}/external_dependencies/ngstents/docs/figs/CausalityCond.png +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2402.dev152}/external_dependencies/ngstents/docs/figs/dag.png +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2402.dev152}/external_dependencies/ngstents/docs/figs/map.png +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2402.dev152}/external_dependencies/ngstents/docs/figs/subtents.png +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2402.dev152}/external_dependencies/ngstents/docs/index.rst +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2402.dev152}/external_dependencies/ngstents/docs/readme.rst +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2402.dev152}/external_dependencies/ngstents/docs/requirements.txt +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2402.dev152}/external_dependencies/ngstents/py/__init__.py +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2402.dev152}/external_dependencies/ngstents/py/conslaw/__init__.py +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2402.dev152}/external_dependencies/ngstents/py/utils/__init__.py +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2402.dev152}/external_dependencies/ngstents/py/utils/_drawtents.py +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2402.dev152}/external_dependencies/ngstents/py/utils/_drawtents2d.py +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2402.dev152}/external_dependencies/ngstents/setup.py +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2402.dev152}/external_dependencies/ngstents/src/CMakeLists.txt +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2402.dev152}/external_dependencies/ngstents/src/advection.cpp +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2402.dev152}/external_dependencies/ngstents/src/burgers.cpp +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2402.dev152}/external_dependencies/ngstents/src/concurrentqueue.h +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2402.dev152}/external_dependencies/ngstents/src/conservationlaw.hpp +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2402.dev152}/external_dependencies/ngstents/src/euler.cpp +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2402.dev152}/external_dependencies/ngstents/src/maxwell.cpp +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2402.dev152}/external_dependencies/ngstents/src/paralleldepend.hpp +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2402.dev152}/external_dependencies/ngstents/src/python_conslaw.cpp +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2402.dev152}/external_dependencies/ngstents/src/python_tents.cpp +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2402.dev152}/external_dependencies/ngstents/src/symbolic.cpp +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2402.dev152}/external_dependencies/ngstents/src/tconservationlaw_tp_impl.hpp +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2402.dev152}/external_dependencies/ngstents/src/tents.cpp +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2402.dev152}/external_dependencies/ngstents/src/tents.hpp +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2402.dev152}/external_dependencies/ngstents/src/tentsolver.hpp +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2402.dev152}/external_dependencies/ngstents/src/tentsolver_impl.hpp +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2402.dev152}/external_dependencies/ngstents/src/vis3d.cpp +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2402.dev152}/external_dependencies/ngstents/src/vis3d.hpp +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2402.dev152}/external_dependencies/ngstents/src/wave.cpp +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2402.dev152}/external_dependencies/ngstents/tests/test_burgers_2D.py +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2402.dev152}/external_dependencies/ngstents/tests/test_causal_tents.py +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2402.dev152}/external_dependencies/ngstents/tests/test_conslaw.py +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2402.dev152}/external_dependencies/ngstents/tests/test_tent_height_2D.py +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2402.dev152}/external_dependencies/ngstents/tests/test_tentlayers.py +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2402.dev152}/src/airy.cpp +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2402.dev152}/src/condensedg.hpp +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2402.dev152}/src/diffopmapped.hpp +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2402.dev152}/src/mesh1dtents.cpp +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2402.dev152}/src/mesh1dtents.hpp +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2402.dev152}/src/ngsttd.hpp +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2402.dev152}/src/planewavefe.cpp +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2402.dev152}/src/planewavefe.hpp +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2402.dev152}/src/specialcoefficientfunction.cpp +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2402.dev152}/src/specialcoefficientfunction.hpp +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2402.dev152}/src/specialintegrator.cpp +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2402.dev152}/src/specialintegrator.hpp +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2402.dev152}/src/twavetents.cpp +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2402.dev152}/src/twavetents.hpp +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2402.dev152}/test/dg.py +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2402.dev152}/test/embt.py +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2402.dev152}/test/tents.py +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2402.dev152}/test/trefftz.py +0 -0
|
@@ -13,135 +13,88 @@ env:
|
|
|
13
13
|
|
|
14
14
|
jobs:
|
|
15
15
|
|
|
16
|
-
|
|
17
|
-
name:
|
|
16
|
+
test_linux:
|
|
17
|
+
name: Test on Linux
|
|
18
18
|
runs-on: ubuntu-latest
|
|
19
|
-
#container:
|
|
20
|
-
#image: quay.io/pypa/manylinux2014_x86_64:latest
|
|
21
|
-
#image: sameli/manylinux2014_x86_64_cuda_11
|
|
22
19
|
steps:
|
|
23
|
-
- name: clear cache
|
|
24
|
-
run: rm -rf /opt/hostedtoolcache
|
|
25
20
|
- uses: actions/checkout@v4
|
|
26
21
|
with:
|
|
27
22
|
submodules: 'True'
|
|
28
23
|
path: 'NGSTrefftz'
|
|
29
24
|
fetch-depth: 0 # otherwise, you will fail to push refs to dest repo
|
|
30
|
-
-
|
|
31
|
-
run: docker pull sameli/manylinux2014_x86_64_cuda_11.7
|
|
32
|
-
- name: run test
|
|
33
|
-
run: docker run -v $GITHUB_WORKSPACE:/workspace sameli/manylinux2014_x86_64_cuda_11.7 /bin/sh /workspace/NGSTrefftz/.github/workflows/build_linux_test.sh
|
|
34
|
-
- name: build pip
|
|
35
|
-
run: docker run -v $GITHUB_WORKSPACE:/workspace sameli/manylinux2014_x86_64_cuda_11.7 /bin/sh /workspace/NGSTrefftz/.github/workflows/build_pip.sh
|
|
36
|
-
- name: Store the binary wheel
|
|
37
|
-
uses: actions/upload-artifact@v4
|
|
38
|
-
with:
|
|
39
|
-
name: python-package-distributions-linux
|
|
40
|
-
path: NGSTrefftz/wheelhouse
|
|
41
|
-
|
|
42
|
-
pypi-mac:
|
|
43
|
-
name: Build wheels for macOS
|
|
44
|
-
strategy:
|
|
45
|
-
matrix:
|
|
46
|
-
py: ['3.8', '3.9', '3.10', '3.11', '3.12']
|
|
47
|
-
runs-on: macos-11
|
|
48
|
-
env:
|
|
49
|
-
MACOSX_DEPLOYMENT_TARGET: '10.15'
|
|
50
|
-
steps:
|
|
51
|
-
- name: Checkout
|
|
52
|
-
uses: actions/checkout@v4
|
|
53
|
-
with:
|
|
54
|
-
fetch-depth: 0
|
|
55
|
-
submodules: recursive
|
|
56
|
-
path: 'NGSTrefftz'
|
|
57
|
-
- name: Get Python ${{ matrix.py }}
|
|
58
|
-
uses: actions/setup-python@v5
|
|
59
|
-
with:
|
|
60
|
-
python-version: ${{ matrix.py }}
|
|
61
|
-
- name: Run build script
|
|
62
|
-
run: cd NGSTrefftz/.github/workflows && bash build_pip_mac.sh ${{ matrix.py }}
|
|
63
|
-
- name: Store the binary wheel
|
|
64
|
-
uses: actions/upload-artifact@v4
|
|
25
|
+
- uses: actions/setup-python@v5
|
|
65
26
|
with:
|
|
66
|
-
|
|
67
|
-
|
|
27
|
+
python-version: '3.12'
|
|
28
|
+
- name: install ngstrefftz
|
|
29
|
+
run: cd NGSTrefftz && pip install numpy scipy mkl-devel==2024.* mkl==2024.* && pip install . -v
|
|
30
|
+
- name: run test
|
|
31
|
+
run: cd $GITHUB_WORKSPACE/NGSTrefftz/test && python3 -m doctest -v *.py
|
|
68
32
|
|
|
69
|
-
|
|
70
|
-
name: Build wheels
|
|
33
|
+
build_wheels:
|
|
34
|
+
name: Build wheels on ${{ matrix.os }}
|
|
35
|
+
needs: [ test_linux ]
|
|
36
|
+
runs-on: ${{ matrix.os }}
|
|
71
37
|
strategy:
|
|
72
38
|
matrix:
|
|
73
|
-
|
|
74
|
-
|
|
39
|
+
os: [ubuntu-latest, macos-13]
|
|
40
|
+
include:
|
|
41
|
+
- os: windows-2019
|
|
42
|
+
cibw-arch: AMD64
|
|
43
|
+
cmake-generator: "Visual Studio 16 2019"
|
|
44
|
+
cmake_generator_platform: "x64"
|
|
75
45
|
steps:
|
|
76
|
-
-
|
|
77
|
-
uses: actions/checkout@v4
|
|
46
|
+
- uses: actions/checkout@v4
|
|
78
47
|
with:
|
|
79
|
-
submodules:
|
|
48
|
+
submodules: 'True'
|
|
49
|
+
fetch-tags: 'true'
|
|
80
50
|
fetch-depth: 0
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
- name: Store the binary wheel
|
|
90
|
-
uses: actions/upload-artifact@v4
|
|
91
|
-
with:
|
|
92
|
-
name: python-package-distributions-win-${{ matrix.py }}
|
|
93
|
-
path: NGSTrefftz/wheelhouse
|
|
51
|
+
- name: Build wheels
|
|
52
|
+
uses: pypa/cibuildwheel@v2.19.0
|
|
53
|
+
env:
|
|
54
|
+
CIBW_BUILD_VERBOSITY: 1
|
|
55
|
+
- uses: actions/upload-artifact@v4
|
|
56
|
+
with:
|
|
57
|
+
name: cibw-wheels-${{ matrix.os }}-${{ strategy.job-index }}
|
|
58
|
+
path: ./wheelhouse/*.whl
|
|
94
59
|
|
|
95
|
-
|
|
96
|
-
name:
|
|
60
|
+
build_sdist:
|
|
61
|
+
name: Build source distribution
|
|
62
|
+
needs: [ test_linux ]
|
|
97
63
|
runs-on: ubuntu-latest
|
|
98
64
|
steps:
|
|
99
65
|
- uses: actions/checkout@v4
|
|
100
66
|
with:
|
|
101
67
|
submodules: 'True'
|
|
68
|
+
fetch-tags: 'true'
|
|
102
69
|
fetch-depth: 0
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
sudo apt-get update && DEBIAN_FRONTEND="noninteractive" sudo apt-get -y install vim python3 python3-pip python3-distutils python3-tk libpython3-dev libxmu-dev tk-dev tcl-dev cmake git g++ libglu1-mesa-dev libblas-dev liblapack-dev
|
|
107
|
-
- name: Update pip and Install setuptools
|
|
108
|
-
run: |
|
|
109
|
-
python3 -m pip install --upgrade pip
|
|
110
|
-
python3 -m pip install -U pytest-check numpy wheel scikit-build mkl==2023.* mkl-devel==2023.* setuptools setuptools_scm
|
|
111
|
-
python3 -m pip install ngsolve --pre
|
|
112
|
-
- name: Package ngstrefftz sources for PyPI
|
|
113
|
-
run: cd NGSTrefftz && python3 setup.py sdist -d wheelhouse
|
|
114
|
-
#- name: pip install ngstrefftz
|
|
115
|
-
#run: pip install dist/*
|
|
116
|
-
- name: Store the sdist
|
|
117
|
-
uses: actions/upload-artifact@v4
|
|
70
|
+
- name: Build sdist
|
|
71
|
+
run: pipx run build --sdist
|
|
72
|
+
- uses: actions/upload-artifact@v4
|
|
118
73
|
with:
|
|
119
|
-
name:
|
|
120
|
-
path:
|
|
74
|
+
name: cibw-sdist
|
|
75
|
+
path: dist/*.tar.gz
|
|
121
76
|
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
#if: github.event_name == 'release' && github.event.action == 'created'
|
|
125
|
-
needs: [pypi-linux, pypi-mac, pypi-win, pypi-src]
|
|
77
|
+
upload_pypi:
|
|
78
|
+
needs: [build_wheels, build_sdist]
|
|
126
79
|
runs-on: ubuntu-latest
|
|
80
|
+
environment: pypi
|
|
81
|
+
permissions:
|
|
82
|
+
id-token: write
|
|
127
83
|
steps:
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
password: ${{ secrets.PYPI_API_TOKEN }}
|
|
140
|
-
packages-dir: NGSTrefftz/wheelhouse/
|
|
141
|
-
#repository-url: https://test.pypi.org/legacy/
|
|
84
|
+
- uses: actions/download-artifact@v4
|
|
85
|
+
with:
|
|
86
|
+
pattern: cibw-*
|
|
87
|
+
path: dist
|
|
88
|
+
merge-multiple: true
|
|
89
|
+
- uses: pypa/gh-action-pypi-publish@release/v1
|
|
90
|
+
if: github.ref == 'refs/heads/main' || github.event_name == 'release'
|
|
91
|
+
with:
|
|
92
|
+
skip-existing: true
|
|
93
|
+
password: ${{ secrets.PYPI_API_TOKEN }}
|
|
94
|
+
# To test: repository-url: https://test.pypi.org/legacy/
|
|
142
95
|
|
|
143
96
|
docker:
|
|
144
|
-
needs: [
|
|
97
|
+
needs: [upload_pypi]
|
|
145
98
|
runs-on: ubuntu-latest
|
|
146
99
|
steps:
|
|
147
100
|
- name: clear cache
|
|
@@ -208,10 +161,8 @@ jobs:
|
|
|
208
161
|
name: ngst-pyodide
|
|
209
162
|
path: ./ngst-pyodide
|
|
210
163
|
|
|
211
|
-
|
|
212
|
-
|
|
213
164
|
docs:
|
|
214
|
-
needs: [
|
|
165
|
+
needs: [upload_pypi]
|
|
215
166
|
runs-on: ubuntu-latest
|
|
216
167
|
steps:
|
|
217
168
|
- uses: actions/checkout@v4
|
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
cmake_minimum_required(VERSION 3.16)
|
|
2
|
+
########################################################
|
|
3
|
+
project(ngstrefftz)
|
|
4
|
+
########################################################
|
|
5
|
+
if(NOT WIN32)
|
|
6
|
+
string(ASCII 27 Esc)
|
|
7
|
+
set(ColourReset "${Esc}[m")
|
|
8
|
+
set(Red "${Esc}[31m")
|
|
9
|
+
set(BoldCyan "${Esc}[1;36m")
|
|
10
|
+
set(BoldWhite "${Esc}[1;37m")
|
|
11
|
+
endif()
|
|
12
|
+
|
|
13
|
+
file(DOWNLOAD https://raw.githubusercontent.com/NGSolve/ngsolve-addon-template/main/ngsolve_addon.cmake ${CMAKE_BINARY_DIR}/cmake_modules/ngsolve_addon.cmake)
|
|
14
|
+
set(CMAKE_MODULE_PATH "${CMAKE_MODULE_PATH}" "${CMAKE_BINARY_DIR}/cmake_modules")
|
|
15
|
+
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR} CACHE PATH "build dir")
|
|
16
|
+
|
|
17
|
+
### ngstrefftz
|
|
18
|
+
set(addon_name _trefftz)
|
|
19
|
+
project(_trefftz)
|
|
20
|
+
include_directories(${CMAKE_SOURCE_DIR}/external_dependencies/ngstents/src)
|
|
21
|
+
include(${CMAKE_BINARY_DIR}/cmake_modules/ngsolve_addon.cmake)
|
|
22
|
+
add_ngsolve_addon( _trefftz
|
|
23
|
+
${CMAKE_SOURCE_DIR}/external_dependencies/ngstents/src/tents.cpp
|
|
24
|
+
src/python_trefftz.cpp
|
|
25
|
+
src/diffopmapped.hpp
|
|
26
|
+
src/scalarmappedfe.cpp
|
|
27
|
+
src/planewavefe.cpp
|
|
28
|
+
src/trefftzfespace.cpp
|
|
29
|
+
src/specialcoefficientfunction.cpp
|
|
30
|
+
src/specialintegrator.cpp
|
|
31
|
+
src/twavetents.cpp
|
|
32
|
+
src/embtrefftz.cpp
|
|
33
|
+
src/monomialfespace.cpp
|
|
34
|
+
src/mesh1dtents.cpp
|
|
35
|
+
src/condensedg.cpp
|
|
36
|
+
src/pufe.cpp
|
|
37
|
+
src/pufespace.cpp
|
|
38
|
+
#src/airy.cpp #for testing, requires boost
|
|
39
|
+
)
|
|
40
|
+
target_compile_definitions(_trefftz PRIVATE NGSTREFFTZ_EXPORTS)
|
|
41
|
+
target_compile_definitions(_trefftz PRIVATE NGSTENT_EXPORTS)
|
|
42
|
+
|
|
43
|
+
### link LAPACK or MKL if possible
|
|
44
|
+
set(NGSTREFFTZ_USE_MKL ${NGSOLVE_USE_MKL} CACHE BOOL "Try to use mkl")
|
|
45
|
+
set(NGSTREFFTZ_USE_LAPACK ${NGSOLVE_USE_LAPACK} CACHE BOOL "Try to use lapack from ngsolve")
|
|
46
|
+
if (NGSTREFFTZ_USE_MKL)
|
|
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
|
+
|
|
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)
|
|
75
|
+
set(MKL_MULTI_THREADED ON CACHE BOOL "Use threaded MKL libs")
|
|
76
|
+
if(NOT MKL_MULTI_THREADED)
|
|
77
|
+
set(MKL_THREADING sequential)
|
|
78
|
+
endif()
|
|
79
|
+
set(MKL_STATIC OFF CACHE BOOL "Link static MKL")
|
|
80
|
+
set(MKL_SDL ON CACHE BOOL "Link single dynamic MKL lib")
|
|
81
|
+
if(NOT MKL_LINK)
|
|
82
|
+
if(MKL_STATIC)
|
|
83
|
+
set(MKL_LINK static)
|
|
84
|
+
elseif(MKL_SDL)
|
|
85
|
+
set(MKL_LINK sdl)
|
|
86
|
+
else()
|
|
87
|
+
set(MKL_LINK dynamic)
|
|
88
|
+
endif()
|
|
89
|
+
endif()
|
|
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" )
|
|
103
|
+
endif()
|
|
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}")
|
|
125
|
+
endif()
|
|
126
|
+
endif (NGSTREFFTZ_USE_MKL)
|
|
127
|
+
if(NGSTREFFTZ_USE_LAPACK AND NOT LAPACK_LIBRARIES)
|
|
128
|
+
message(STATUS "Looking for LAPACK")
|
|
129
|
+
find_package(LAPACK)
|
|
130
|
+
endif(NGSTREFFTZ_USE_LAPACK AND NOT LAPACK_LIBRARIES)
|
|
131
|
+
if(LAPACK_LIBRARIES)
|
|
132
|
+
#target_link_libraries(_trefftz PRIVATE $<BUILD_INTERFACE:ngs_lapack>)
|
|
133
|
+
message(STATUS "Linking with LAPACK_LIBRARIES=${LAPACK_LIBRARIES}")
|
|
134
|
+
target_link_libraries(_trefftz PRIVATE ${LAPACK_LIBRARIES})
|
|
135
|
+
target_compile_definitions(_trefftz PRIVATE NGSTREFFTZ_USE_LAPACK)
|
|
136
|
+
else(LAPACK_LIBRARIES)
|
|
137
|
+
message("${Red}LAPACK not found, restricted usage${ColourReset}")
|
|
138
|
+
endif(LAPACK_LIBRARIES)
|
|
139
|
+
|
|
140
|
+
### doc
|
|
141
|
+
option(BUILD_DOC "Build documentation" OFF)
|
|
142
|
+
if (BUILD_DOC)
|
|
143
|
+
find_package(Doxygen REQUIRED)
|
|
144
|
+
set(DOXYGEN_IN ${CMAKE_CURRENT_SOURCE_DIR}/docs/Doxyfile.in)
|
|
145
|
+
set(DOXYGEN_OUT ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile)
|
|
146
|
+
configure_file(${DOXYGEN_IN} ${DOXYGEN_OUT} @ONLY)
|
|
147
|
+
add_custom_target( doxygen
|
|
148
|
+
COMMAND ${DOXYGEN_EXECUTABLE} ${DOXYGEN_OUT}
|
|
149
|
+
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
|
|
150
|
+
COMMENT "Generating API documentation with Doxygen"
|
|
151
|
+
VERBATIM )
|
|
152
|
+
endif (BUILD_DOC)
|
|
153
|
+
|
|
154
|
+
### install
|
|
155
|
+
set_target_properties(_trefftz PROPERTIES LIBRARY_OUTPUT_DIRECTORY "${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/ngstrefftz")
|
|
156
|
+
file(COPY ${CMAKE_SOURCE_DIR}/src/__init__.py DESTINATION ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/ngstrefftz)
|
|
157
|
+
set(install_dir ${ADDON_INSTALL_DIR_PYTHON}/ngstrefftz)
|
|
158
|
+
install(TARGETS _trefftz DESTINATION ${install_dir})
|
|
159
|
+
install(FILES src/__init__.py DESTINATION ${install_dir})
|
|
160
|
+
#ngsolve_generate_stub_files(${addon_name})
|
|
161
|
+
|
|
162
|
+
message("${BoldCyan}
|
|
163
|
+
------------------------------------------------------------------------
|
|
164
|
+
Build type: ${CMAKE_BUILD_TYPE}
|
|
165
|
+
Compiler: ${CMAKE_CXX_COMPILER}
|
|
166
|
+
Flags: ${flags}
|
|
167
|
+
|
|
168
|
+
Enabled functionality:
|
|
169
|
+
LAPACK: ............ ${NGSTREFFTZ_USE_LAPACK}
|
|
170
|
+
MKL: ............... ${NGSTREFFTZ_USE_MKL}
|
|
171
|
+
Doxygen: ........... ${BUILD_DOC}
|
|
172
|
+
|
|
173
|
+
With 'make install' the package will be installed to: ${CMAKE_INSTALL_PREFIX}
|
|
174
|
+
Make sure to add it to the python path:
|
|
175
|
+
--> export PYTHONPATH=${CMAKE_INSTALL_PREFIX}/${python3_library_dir}:$PYTHONPATH
|
|
176
|
+
------------------------------------------------------------------------
|
|
177
|
+
\n${ColourReset}")
|
|
178
|
+
|
|
179
|
+
### tests
|
|
180
|
+
include(CTest)
|
|
181
|
+
file(COPY
|
|
182
|
+
${CMAKE_SOURCE_DIR}/test/dg.py
|
|
183
|
+
${CMAKE_SOURCE_DIR}/test/embt.py
|
|
184
|
+
${CMAKE_SOURCE_DIR}/test/trefftz.py
|
|
185
|
+
${CMAKE_SOURCE_DIR}/test/tents.py
|
|
186
|
+
${CMAKE_SOURCE_DIR}/test/constrained_trefftz.py
|
|
187
|
+
DESTINATION ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/Testing)
|
|
188
|
+
add_test(NAME embtrefftz COMMAND python3 -m doctest ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/Testing/embt.py)
|
|
189
|
+
add_test(NAME constrained_trefftz COMMAND python3 -m doctest ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/Testing/constrained_trefftz.py)
|
|
190
|
+
add_test(NAME trefftz COMMAND python3 -m doctest ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/Testing/trefftz.py)
|
|
191
|
+
add_test(NAME tents COMMAND python3 -m doctest ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/Testing/tents.py)
|
|
192
|
+
#WORKING_DIRECTORY ${ CMAKE_CURRENT_SOURCE_DIR }
|
|
193
|
+
set_tests_properties(embtrefftz trefftz tents
|
|
194
|
+
PROPERTIES ENVIRONMENT "PYTHONPATH=${CMAKE_LIBRARY_OUTPUT_DIRECTORY}:${NGSOLVE_INSTALL_DIR}/${NGSOLVE_INSTALL_DIR_PYTHON}:$ENV{PYTHONPATH}")
|
|
195
|
+
|
|
196
|
+
# make uninstall
|
|
197
|
+
add_custom_target("uninstall" COMMENT "Uninstall installed files")
|
|
198
|
+
add_custom_command(
|
|
199
|
+
TARGET "uninstall"
|
|
200
|
+
POST_BUILD
|
|
201
|
+
COMMENT "Uninstall files with install_manifest.txt"
|
|
202
|
+
COMMAND xargs rm -vf < install_manifest.txt || echo Nothing in
|
|
203
|
+
install_manifest.txt to be uninstalled!
|
|
204
|
+
)
|
|
@@ -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/
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
Metadata-Version: 2.1
|
|
2
|
+
Name: ngstrefftz
|
|
3
|
+
Version: 0.3.2402.dev152
|
|
4
|
+
Summary: NGSTrefftz is an add-on to NGSolve for Trefftz methods.
|
|
5
|
+
Author-Email: Paul Stocker <paul.stocker@univie.ac.at>
|
|
6
|
+
Classifier: License :: OSI Approved :: GNU Lesser General Public License v3 (LGPLv3)
|
|
7
|
+
Project-URL: Documentation, https://paulst.github.io/NGSTrefftz
|
|
8
|
+
Project-URL: Repository, https://github.com/PaulSt/ngstrefftz
|
|
9
|
+
Requires-Python: >=3.8
|
|
10
|
+
Requires-Dist: mkl>=2024.2.0
|
|
11
|
+
Requires-Dist: ngsolve>=6.2.2404.post22.dev0
|
|
12
|
+
Description-Content-Type: text/markdown
|
|
13
|
+
|
|
14
|
+
# NGSTrefftz
|
|
15
|
+
**an add-on to NGSolve for Trefftz methods**
|
|
16
|
+
|
|
17
|
+
[](https://mybinder.org/v2/gh/PaulSt/NGSTrefftz/HEAD?filepath=docs%2Fnotebooks%2Findex.ipynb)
|
|
18
|
+
[](https://hub.docker.com/r/paulstdocker/ngstrefftz)
|
|
19
|
+
[](https://pypi.org/project/ngstrefftz/)
|
|
20
|
+
[](https://github.com/PaulSt/NGSTrefftz/actions/workflows/build.yml)
|
|
21
|
+
[](https://joss.theoj.org/papers/c2f4e85b118c22b81aa27d7799265409)
|
|
22
|
+
[](https://paulst.github.io/NGSTrefftz/)
|
|
23
|
+
|
|
24
|
+
NGSTrefftz provides a framework to implement Trefftz finite element spaces for [NGSolve](https://www.ngsolve.org), with several Trefftz spaces already implemented. Additionally, Trefftz-DG on tent-pitched meshes for the acoustic wave equation is implemented using meshes provided by [ngstents](https://github.com/jayggg/ngstents). Furthermore, the package includes an implementation of the embedded Trefftz method.
|
|
25
|
+
|
|
26
|
+
## Try it out!
|
|
27
|
+
You can try out some jupyter notebooks:
|
|
28
|
+
* Launch the Binder here:
|
|
29
|
+
[](https://mybinder.org/v2/gh/PaulSt/NGSTrefftz/HEAD?filepath=docs%2Fnotebooks%2Findex.ipynb)
|
|
30
|
+
* Or run the docker locally (you need to have docker installed):
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
git clone https://github.com/PaulSt/NGSTrefftz
|
|
34
|
+
cd NGSTrefftz && docker build -t ngstrefftz_jupyter .
|
|
35
|
+
docker run -p 8888:8888 ngstrefftz_jupyter
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
## Installing the package
|
|
39
|
+
You can either:
|
|
40
|
+
* install using pip
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
pip install ngstrefftz
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
* or build from source
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
git clone --recursive https://github.com/PaulSt/NGSTrefftz
|
|
50
|
+
mkdir ./NGSTrefftz/make && cd ./NGSTrefftz/make
|
|
51
|
+
cmake ../ && make install
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
### Dependencies
|
|
55
|
+
* if you are using pip to install the package you can install the newest ngsolve and other dependencies using
|
|
56
|
+
```bash
|
|
57
|
+
pip install ngsolve --pre
|
|
58
|
+
```
|
|
59
|
+
* if you build the package from source the following software needs to be installed
|
|
60
|
+
* [cmake](https://cmake.org/) >= 3.1
|
|
61
|
+
* [gcc](https://gcc.gnu.org/) >= 9 or [clang](https://clang.llvm.org/) >= 10
|
|
62
|
+
* [lapack](http://www.netlib.org/lapack/) >= 3.9 (required to access the newest features)
|
|
63
|
+
* [ngsolve](https://www.ngsolve.org) >= 6.2 (to access the newest features the nightly version of NGSolve works best)
|
|
64
|
+
|
|
65
|
+
## News
|
|
66
|
+
⚠️ Oct, 2022: With v0.2.0 the git history has undergone a major cleanup, please make sure to clone the repo anew.
|
|
67
|
+
|
|
68
|
+
🚀 Oct, 2022: New and improved implementation of the embedded Trefftz method via `EmbeddedTrefftzFES`!
|
|
69
|
+
|
|
70
|
+
🚀 Aug, 2022: Three different [pip](https://pypi.org/search/?q=ngstrefftz)-installer available, now using wheels!
|
|
71
|
+
|
|
72
|
+
🚀 Mar, 2022: NGSTrefftz now has a [website](https://paulst.github.io/NGSTrefftz/)!
|
|
73
|
+
|
|
74
|
+
⚠️ Feb, 2022: If you are using NGSolve nightly releases: [NGSolve@eda758d](https://github.com/NGSolve/ngsolve/commit/eda758d99483888851913d8a5c9aff4d0cbc9cc2) breaks a dependency and [NGSolve@3d52ecd](https://github.com/NGSolve/ngsolve/commit/3d52ecd615f2b7c409219eebaba99288ea19c1bc) produces import issue. Make sure to update ngstrefftz submodules and move to newest ngsolve version, at least [NGSolve@5839a09](https://github.com/NGSolve/ngsolve/commit/5839a09810235a938bd85807d8e638d3a0b6c69d).
|
|
75
|
+
|
|
76
|
+
🚀 Jan, 2022: NGSTrefftz is now available via pip!
|
|
77
|
+
|
|
78
|
+
🚀 Nov, 2021: NGSTrefftz now comes in a docker and with binder notebooks!
|
|
79
|
+
|
|
80
|
+
## Papers using the code
|
|
81
|
+
* *Trefftz Discontinuous Galerkin discretization for the Stokes problem*
|
|
82
|
+
Philip L. Lederer, Christoph Lehrenfeld, Paul Stocker
|
|
83
|
+
[](https://arxiv.org/abs/2306.14600)
|
|
84
|
+
* *Unfitted Trefftz discontinuous Galerkin methods for elliptic boundary value problems*
|
|
85
|
+
Fabian Heimann, Christoph Lehrenfeld, Paul Stocker, Henry von Wahl
|
|
86
|
+
[](https://arxiv.org/abs/2212.12236)
|
|
87
|
+
* *Embedded Trefftz discontinuous Galerkin methods*
|
|
88
|
+
Christoph Lehrenfeld, Paul Stocker
|
|
89
|
+
[](https://arxiv.org/abs/2201.07041)
|
|
90
|
+
* *A space-time quasi-Trefftz DG method for the wave equation with piecewise-smooth coefficients*
|
|
91
|
+
Lise-Marie Imbert-Gérard, Andrea Moiola, Paul Stocker
|
|
92
|
+
[](https://arxiv.org/abs/2011.04617)
|
|
93
|
+
* *Tent pitching and Trefftz-DG method for the acoustic wave equation*
|
|
94
|
+
Ilaria Perugia, Joachim Schöberl, Paul Stocker, Christoph Wintersteiger
|
|
95
|
+
[](https://arxiv.org/abs/1907.02367)
|
|
96
|
+
|
|
97
|
+
If you are using `ngstrefftz` in your academic work, please consider citing
|
|
98
|
+
```
|
|
99
|
+
Stocker, P., (2022). NGSTrefftz: Add-on to NGSolve for Trefftz methods.
|
|
100
|
+
Journal of Open Source Software, 7(71), 4135, https://doi.org/10.21105/joss.04135
|
|
101
|
+
```
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# file generated by setuptools_scm
|
|
2
|
+
# don't change, don't track in version control
|
|
3
|
+
TYPE_CHECKING = False
|
|
4
|
+
if TYPE_CHECKING:
|
|
5
|
+
from typing import Tuple, Union
|
|
6
|
+
VERSION_TUPLE = Tuple[Union[int, str], ...]
|
|
7
|
+
else:
|
|
8
|
+
VERSION_TUPLE = object
|
|
9
|
+
|
|
10
|
+
version: str
|
|
11
|
+
__version__: str
|
|
12
|
+
__version_tuple__: VERSION_TUPLE
|
|
13
|
+
version_tuple: VERSION_TUPLE
|
|
14
|
+
|
|
15
|
+
__version__ = version = '0.3.2402.dev152'
|
|
16
|
+
__version_tuple__ = version_tuple = (0, 3, 2402, 'dev152')
|
|
@@ -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
|
|
@@ -75,7 +75,7 @@ where :math:`h` is the mesh size, :math:`p` is the polynomial degree and :math:`
|
|
|
75
75
|
|
|
76
76
|
from ngsolve import *
|
|
77
77
|
from ngstrefftz import *
|
|
78
|
-
from netgen.
|
|
78
|
+
from netgen.occ import *
|
|
79
79
|
p=5
|
|
80
80
|
|
|
81
81
|
For a given mesh we construct the Trefftz finite element space as
|