ngstrefftz 0.3.2402.dev35__tar.gz → 0.3.2403.dev5__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/Dockerfile +5 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/PKG-INFO +1 -1
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/docs/requirements.txt +4 -4
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/src/embtrefftz.cpp +6 -4
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/src/monomialfespace.cpp +17 -2
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/src/monomialfespace.hpp +6 -24
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/src/ngstrefftz.egg-info/PKG-INFO +1 -1
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/src/trefftzfespace.cpp +126 -29
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/src/trefftzfespace.hpp +30 -3
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/.clang-format +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/.github/workflows/build.yml +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/.github/workflows/build_linux_test.sh +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/.github/workflows/build_pip.ps1 +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/.github/workflows/build_pip.sh +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/.github/workflows/build_pip_mac.sh +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/.github/workflows/fix_auditwheel_policy.py +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/.github/workflows/ngsolve_version.txt +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/.github/workflows/pyodide/Dockerfile +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/.github/workflows/pyodide/build_in_docker.sh +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/.github/workflows/pyodide/merge.py +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/.github/workflows/pyodide/requirements.txt +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/.gitmodules +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/CONTRIBUTING.md +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/LICENSE +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/README.md +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/docs/_static/breadcrumbs.html +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/docs/_static/css/mytheme.css +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/docs/conf.py +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/docs/contrib.rst +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/docs/docu.rst +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/docs/index.rst +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/docs/intro.rst +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/docs/notebooks/embTrefftz-adv.ipynb +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/docs/notebooks/embTrefftz-helm.ipynb +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/docs/notebooks/embTrefftz-poi.ipynb +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/docs/notebooks/embTrefftz-stokes.ipynb +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/docs/notebooks/embTrefftz-wave.ipynb +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/docs/notebooks/embTrefftz.ipynb +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/docs/notebooks/helmholtz.ipynb +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/docs/notebooks/index.ipynb +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/docs/notebooks/laplace.ipynb +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/docs/notebooks/qtwave.ipynb +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/docs/notebooks/tunfitted.ipynb +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/docs/notebooks/twave.ipynb +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/docs/notebooks/twavetents.ipynb +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/docs/paper/codemeta.json +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/docs/paper/paper.bib +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/docs/paper/paper.md +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/docs/readme.rst +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/external_dependencies/ngstents/.github/workflows/build.yml +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/external_dependencies/ngstents/.github/workflows/build_pip.ps1 +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/external_dependencies/ngstents/.github/workflows/build_pip.sh +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/external_dependencies/ngstents/.github/workflows/build_pip_mac.sh +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/external_dependencies/ngstents/.github/workflows/fix_auditwheel_policy.py +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/external_dependencies/ngstents/.github/workflows/ngsolve_version.txt +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/external_dependencies/ngstents/README.md +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/external_dependencies/ngstents/demo/advection/Advection_Periodic_Clipping.ipynb +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/external_dependencies/ngstents/demo/advection/advection2d.py +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/external_dependencies/ngstents/demo/advection/advection2d_periodic.py +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/external_dependencies/ngstents/demo/burgers/Burgers_Clipping.ipynb +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/external_dependencies/ngstents/demo/burgers/burgers1d.py +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/external_dependencies/ngstents/demo/burgers/burgers2d.py +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/external_dependencies/ngstents/demo/euler/Euler_Clipping.ipynb +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/external_dependencies/ngstents/demo/euler/euler2d.py +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/external_dependencies/ngstents/demo/euler/mach3_windtunnel.py +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/external_dependencies/ngstents/demo/maxwell/maxwell3d.py +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/external_dependencies/ngstents/demo/symbolic/symbolic_advection2d.py +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/external_dependencies/ngstents/demo/symbolic/symbolic_burgers.py +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/external_dependencies/ngstents/demo/symbolic/symbolic_euler.py +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/external_dependencies/ngstents/demo/symbolic/symbolic_wave.py +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/external_dependencies/ngstents/demo/symbolic/symbolic_wave1d_interface.py +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/external_dependencies/ngstents/demo/symbolic/wave_penetrable_cylinder.py +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/external_dependencies/ngstents/demo/tents/draw3dtent.py +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/external_dependencies/ngstents/demo/tents/draw3dvertex.py +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/external_dependencies/ngstents/demo/wave/horn.py +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/external_dependencies/ngstents/demo/wave/wave2d.py +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/external_dependencies/ngstents/demo/wave/wave2d_timedepbc.py +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/external_dependencies/ngstents/demo/wave/wave3d.py +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/external_dependencies/ngstents/docs/BurgersMTP.ipynb +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/external_dependencies/ngstents/docs/INDEX.ipynb +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/external_dependencies/ngstents/docs/StartPitching.ipynb +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/external_dependencies/ngstents/docs/conf.py +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/external_dependencies/ngstents/docs/figs/CausalityCond.png +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/external_dependencies/ngstents/docs/figs/dag.png +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/external_dependencies/ngstents/docs/figs/map.png +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/external_dependencies/ngstents/docs/figs/subtents.png +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/external_dependencies/ngstents/docs/index.rst +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/external_dependencies/ngstents/docs/readme.rst +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/external_dependencies/ngstents/docs/requirements.txt +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/external_dependencies/ngstents/py/__init__.py +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/external_dependencies/ngstents/py/conslaw/__init__.py +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/external_dependencies/ngstents/py/utils/__init__.py +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/external_dependencies/ngstents/py/utils/_drawtents.py +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/external_dependencies/ngstents/py/utils/_drawtents2d.py +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/external_dependencies/ngstents/setup.py +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/external_dependencies/ngstents/src/CMakeLists.txt +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/external_dependencies/ngstents/src/advection.cpp +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/external_dependencies/ngstents/src/burgers.cpp +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/external_dependencies/ngstents/src/concurrentqueue.h +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/external_dependencies/ngstents/src/conservationlaw.hpp +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/external_dependencies/ngstents/src/euler.cpp +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/external_dependencies/ngstents/src/maxwell.cpp +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/external_dependencies/ngstents/src/paralleldepend.hpp +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/external_dependencies/ngstents/src/python_conslaw.cpp +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/external_dependencies/ngstents/src/python_tents.cpp +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/external_dependencies/ngstents/src/symbolic.cpp +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/external_dependencies/ngstents/src/tconservationlaw_tp_impl.hpp +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/external_dependencies/ngstents/src/tents.cpp +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/external_dependencies/ngstents/src/tents.hpp +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/external_dependencies/ngstents/src/tentsolver.hpp +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/external_dependencies/ngstents/src/tentsolver_impl.hpp +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/external_dependencies/ngstents/src/vis3d.cpp +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/external_dependencies/ngstents/src/vis3d.hpp +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/external_dependencies/ngstents/src/wave.cpp +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/external_dependencies/ngstents/tests/test_burgers_2D.py +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/external_dependencies/ngstents/tests/test_causal_tents.py +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/external_dependencies/ngstents/tests/test_conslaw.py +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/external_dependencies/ngstents/tests/test_tent_height_2D.py +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/external_dependencies/ngstents/tests/test_tentlayers.py +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/setup.cfg +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/setup.py +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/src/CMakeLists.txt +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/src/__init__.py +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/src/airy.cpp +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/src/condensedg.cpp +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/src/condensedg.hpp +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/src/diffopmapped.hpp +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/src/embtrefftz.hpp +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/src/mesh1dtents.cpp +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/src/mesh1dtents.hpp +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/src/ngstrefftz.egg-info/SOURCES.txt +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/src/ngstrefftz.egg-info/dependency_links.txt +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/src/ngstrefftz.egg-info/requires.txt +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/src/ngstrefftz.egg-info/top_level.txt +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/src/ngsttd.hpp +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/src/planewavefe.cpp +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/src/planewavefe.hpp +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/src/python_trefftz.cpp +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/src/scalarmappedfe.cpp +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/src/scalarmappedfe.hpp +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/src/specialcoefficientfunction.cpp +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/src/specialcoefficientfunction.hpp +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/src/specialintegrator.cpp +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/src/specialintegrator.hpp +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/src/twavetents.cpp +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/src/twavetents.hpp +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/test/dg.py +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/test/embt.py +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/test/tents.py +0 -0
- {ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/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,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
|
|
24
|
-
ngstrefftz>=0.2.
|
|
23
|
+
xfem==2.1.2303.post137.dev0
|
|
24
|
+
ngstrefftz>=0.2.2402
|
|
25
25
|
webgui-jupyter-widgets>=0.2.31
|
|
@@ -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 ()
|
|
259
|
-
throw Exception ("
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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>
|
|
68
|
-
|
|
69
|
-
|
|
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
|
};
|
|
@@ -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",
|
|
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
|
-
|
|
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
|
-
|
|
265
|
-
|
|
266
|
-
|
|
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
|
-
|
|
269
|
-
|
|
270
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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,
|
|
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 (
|
|
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
|
-
|
|
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 (
|
|
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 (
|
|
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,
|
|
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
|
|
|
File without changes
|
|
File without changes
|
{ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/.github/workflows/build_linux_test.sh
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/.github/workflows/fix_auditwheel_policy.py
RENAMED
|
File without changes
|
{ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/.github/workflows/ngsolve_version.txt
RENAMED
|
File without changes
|
|
File without changes
|
{ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/.github/workflows/pyodide/build_in_docker.sh
RENAMED
|
File without changes
|
|
File without changes
|
{ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/.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.2402.dev35 → ngstrefftz-0.3.2403.dev5}/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
|
|
File without changes
|
|
File without changes
|
{ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/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.2402.dev35 → ngstrefftz-0.3.2403.dev5}/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.2402.dev35 → ngstrefftz-0.3.2403.dev5}/external_dependencies/ngstents/docs/index.rst
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/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.2402.dev35 → ngstrefftz-0.3.2403.dev5}/external_dependencies/ngstents/setup.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/external_dependencies/ngstents/src/euler.cpp
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/external_dependencies/ngstents/src/tents.cpp
RENAMED
|
File without changes
|
{ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/external_dependencies/ngstents/src/tents.hpp
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/external_dependencies/ngstents/src/vis3d.cpp
RENAMED
|
File without changes
|
{ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/external_dependencies/ngstents/src/vis3d.hpp
RENAMED
|
File without changes
|
{ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/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
|
{ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/src/ngstrefftz.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
|
File without changes
|
{ngstrefftz-0.3.2402.dev35 → ngstrefftz-0.3.2403.dev5}/src/ngstrefftz.egg-info/top_level.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
|