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