ngstrefftz 0.3.2504.dev2__tar.gz → 0.3.2505.dev1__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.2504.dev2 → ngstrefftz-0.3.2505.dev1}/.gitmodules +1 -1
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/CMakeLists.txt +9 -1
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/PKG-INFO +2 -2
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/_version.py +2 -2
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/docs/requirements.txt +2 -2
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/external_dependencies/ngstents/.github/workflows/build.yml +5 -5
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/external_dependencies/ngstents/pyproject.toml +6 -5
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/external_dependencies/ngstents/src/CMakeLists.txt +1 -1
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/external_dependencies/ngstents/src/paralleldepend.hpp +6 -2
- ngstrefftz-0.3.2505.dev1/external_dependencies/ngstents/src/python_tents.cpp +139 -0
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/external_dependencies/ngstents/src/tconservationlaw_tp_impl.hpp +3 -0
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/external_dependencies/ngstents/src/tents.cpp +31 -27
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/external_dependencies/ngstents/src/tents.hpp +3 -3
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/pyproject.toml +2 -2
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/src/twavetents.cpp +3 -3
- ngstrefftz-0.3.2504.dev2/external_dependencies/ngstents/src/python_tents.cpp +0 -141
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/.clang-format +0 -0
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/.github/workflows/build.yml +0 -0
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/.github/workflows/fix_auditwheel_policy.py +0 -0
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/.github/workflows/pyodide/Dockerfile +0 -0
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/.github/workflows/pyodide/build_in_docker.sh +0 -0
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/.github/workflows/pyodide/merge.py +0 -0
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/.github/workflows/pyodide/requirements.txt +0 -0
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/.gitignore +0 -0
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/CONTRIBUTING.md +0 -0
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/Dockerfile +0 -0
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/LICENSE +0 -0
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/README.md +0 -0
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/docs/Doxyfile.in +0 -0
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/docs/_static/breadcrumbs.html +0 -0
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/docs/_static/css/mytheme.css +0 -0
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/docs/conf.py +0 -0
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/docs/contrib.rst +0 -0
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/docs/docu.rst +0 -0
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/docs/index.rst +0 -0
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/docs/intro.rst +0 -0
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/docs/notebooks/embTrefftz-adv.ipynb +0 -0
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/docs/notebooks/embTrefftz-helm.ipynb +0 -0
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/docs/notebooks/embTrefftz-poi.ipynb +0 -0
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/docs/notebooks/embTrefftz-stokes.ipynb +0 -0
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/docs/notebooks/embTrefftz-wave.ipynb +0 -0
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/docs/notebooks/embTrefftz.ipynb +0 -0
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/docs/notebooks/helmholtz.ipynb +0 -0
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/docs/notebooks/index.ipynb +0 -0
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/docs/notebooks/laplace.ipynb +0 -0
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/docs/notebooks/qtelliptic.ipynb +0 -0
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/docs/notebooks/qtwave.ipynb +0 -0
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/docs/notebooks/tunfitted.ipynb +0 -0
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/docs/notebooks/twave.ipynb +0 -0
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/docs/notebooks/twavetents.ipynb +0 -0
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/docs/paper/codemeta.json +0 -0
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/docs/paper/paper.bib +0 -0
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/docs/paper/paper.md +0 -0
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/docs/readme.rst +0 -0
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/external_dependencies/ngstents/.gitignore +0 -0
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/external_dependencies/ngstents/README.md +0 -0
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/external_dependencies/ngstents/demo/advection/Advection_Periodic_Clipping.ipynb +0 -0
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/external_dependencies/ngstents/demo/advection/advection2d.py +0 -0
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/external_dependencies/ngstents/demo/advection/advection2d_periodic.py +0 -0
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/external_dependencies/ngstents/demo/burgers/Burgers_Clipping.ipynb +0 -0
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/external_dependencies/ngstents/demo/burgers/burgers1d.py +0 -0
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/external_dependencies/ngstents/demo/burgers/burgers2d.py +0 -0
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/external_dependencies/ngstents/demo/euler/Euler_Clipping.ipynb +0 -0
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/external_dependencies/ngstents/demo/euler/euler2d.py +0 -0
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/external_dependencies/ngstents/demo/euler/mach3_windtunnel.py +0 -0
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/external_dependencies/ngstents/demo/maxwell/maxwell3d.py +0 -0
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/external_dependencies/ngstents/demo/symbolic/symbolic_advection2d.py +0 -0
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/external_dependencies/ngstents/demo/symbolic/symbolic_burgers.py +0 -0
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/external_dependencies/ngstents/demo/symbolic/symbolic_euler.py +0 -0
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/external_dependencies/ngstents/demo/symbolic/symbolic_wave.py +0 -0
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/external_dependencies/ngstents/demo/symbolic/symbolic_wave1d_interface.py +0 -0
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/external_dependencies/ngstents/demo/symbolic/wave_penetrable_cylinder.py +0 -0
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/external_dependencies/ngstents/demo/tents/draw3dtent.py +0 -0
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/external_dependencies/ngstents/demo/tents/draw3dvertex.py +0 -0
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/external_dependencies/ngstents/demo/wave/horn.py +0 -0
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/external_dependencies/ngstents/demo/wave/wave2d.py +0 -0
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/external_dependencies/ngstents/demo/wave/wave2d_timedepbc.py +0 -0
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/external_dependencies/ngstents/demo/wave/wave3d.py +0 -0
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/external_dependencies/ngstents/docs/BurgersMTP.ipynb +0 -0
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/external_dependencies/ngstents/docs/INDEX.ipynb +0 -0
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/external_dependencies/ngstents/docs/StartPitching.ipynb +0 -0
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/external_dependencies/ngstents/docs/_config.yml +0 -0
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/external_dependencies/ngstents/docs/_toc.yml +0 -0
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/external_dependencies/ngstents/docs/conf.py +0 -0
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/external_dependencies/ngstents/docs/figs/CausalityCond.png +0 -0
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/external_dependencies/ngstents/docs/figs/dag.png +0 -0
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/external_dependencies/ngstents/docs/figs/map.png +0 -0
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/external_dependencies/ngstents/docs/figs/subtents.png +0 -0
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/external_dependencies/ngstents/docs/index.rst +0 -0
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/external_dependencies/ngstents/docs/intro.md +0 -0
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/external_dependencies/ngstents/docs/readme.rst +0 -0
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/external_dependencies/ngstents/docs/requirements.txt +0 -0
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/external_dependencies/ngstents/py/__init__.py +0 -0
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/external_dependencies/ngstents/py/conslaw/__init__.py +0 -0
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/external_dependencies/ngstents/py/utils/__init__.py +0 -0
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/external_dependencies/ngstents/py/utils/_drawtents.py +0 -0
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/external_dependencies/ngstents/py/utils/_drawtents2d.py +0 -0
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/external_dependencies/ngstents/src/advection.cpp +0 -0
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/external_dependencies/ngstents/src/burgers.cpp +0 -0
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/external_dependencies/ngstents/src/concurrentqueue.h +0 -0
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/external_dependencies/ngstents/src/conservationlaw.hpp +0 -0
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/external_dependencies/ngstents/src/euler.cpp +0 -0
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/external_dependencies/ngstents/src/maxwell.cpp +0 -0
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/external_dependencies/ngstents/src/ngsolve_addon.cmake +0 -0
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/external_dependencies/ngstents/src/python_conslaw.cpp +0 -0
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/external_dependencies/ngstents/src/symbolic.cpp +0 -0
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/external_dependencies/ngstents/src/tentsolver.hpp +0 -0
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/external_dependencies/ngstents/src/tentsolver_impl.hpp +0 -0
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/external_dependencies/ngstents/src/vis3d.cpp +0 -0
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/external_dependencies/ngstents/src/vis3d.hpp +0 -0
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/external_dependencies/ngstents/src/wave.cpp +0 -0
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/external_dependencies/ngstents/tests/test_burgers_2D.py +0 -0
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/external_dependencies/ngstents/tests/test_causal_tents.py +0 -0
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/external_dependencies/ngstents/tests/test_conslaw.py +0 -0
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/external_dependencies/ngstents/tests/test_tent_height_2D.py +0 -0
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/external_dependencies/ngstents/tests/test_tentlayers.py +0 -0
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/src/__init__.py +0 -0
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/src/airy.cpp +0 -0
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/src/boxintegral.cpp +0 -0
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/src/boxintegral.hpp +0 -0
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/src/condensedg.cpp +0 -0
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/src/condensedg.hpp +0 -0
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/src/diffopmapped.hpp +0 -0
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/src/embtrefftz.cpp +0 -0
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/src/embtrefftz.hpp +0 -0
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/src/mesh1dtents.cpp +0 -0
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/src/mesh1dtents.hpp +0 -0
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/src/monomialfespace.cpp +0 -0
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/src/monomialfespace.hpp +0 -0
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/src/ngsttd.hpp +0 -0
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/src/planewavefe.cpp +0 -0
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/src/planewavefe.hpp +0 -0
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/src/pufe.cpp +0 -0
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/src/pufe.hpp +0 -0
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/src/pufespace.cpp +0 -0
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/src/pufespace.hpp +0 -0
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/src/python_trefftz.cpp +0 -0
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/src/scalarmappedfe.cpp +0 -0
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/src/scalarmappedfe.hpp +0 -0
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/src/specialcoefficientfunction.cpp +0 -0
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/src/specialcoefficientfunction.hpp +0 -0
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/src/specialintegrator.cpp +0 -0
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/src/specialintegrator.hpp +0 -0
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/src/trefftzfespace.cpp +0 -0
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/src/trefftzfespace.hpp +0 -0
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/src/twavetents.hpp +0 -0
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/test/boxint.py +0 -0
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/test/conforming_trefftz.py +0 -0
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/test/dg.py +0 -0
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/test/embt.py +0 -0
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/test/embtrefftz_gtest.cpp +0 -0
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/test/tents.py +0 -0
- {ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/test/trefftz.py +0 -0
|
@@ -18,7 +18,7 @@ set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_BINARY_DIR}/cmake_modules)
|
|
|
18
18
|
|
|
19
19
|
set(addon_name ngstrefftz)
|
|
20
20
|
project(ngstrefftz)
|
|
21
|
-
include_directories(${CMAKE_SOURCE_DIR}/external_dependencies/ngstents/src)
|
|
21
|
+
include_directories(SYSTEM ${CMAKE_SOURCE_DIR}/external_dependencies/ngstents/src) # SYSTEM to suppress warnings from headers
|
|
22
22
|
include(${CMAKE_BINARY_DIR}/cmake_modules/ngsolve_addon.cmake)
|
|
23
23
|
add_ngsolve_addon(ngstrefftz
|
|
24
24
|
${CMAKE_SOURCE_DIR}/external_dependencies/ngstents/src/tents.cpp
|
|
@@ -50,6 +50,10 @@ if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
|
|
|
50
50
|
-Wpedantic
|
|
51
51
|
-Wno-vla # ngsolve uses VLAs anyway
|
|
52
52
|
)
|
|
53
|
+
set_source_files_properties(
|
|
54
|
+
${CMAKE_SOURCE_DIR}/external_dependencies/ngstents/src/tents.cpp
|
|
55
|
+
PROPERTIES COMPILE_FLAGS "-w" #suppress all warnings
|
|
56
|
+
)
|
|
53
57
|
elseif(CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
|
|
54
58
|
target_compile_options(ngstrefftz PRIVATE
|
|
55
59
|
-Wall
|
|
@@ -58,6 +62,10 @@ elseif(CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
|
|
|
58
62
|
-Wtype-limits
|
|
59
63
|
-Wuninitialized
|
|
60
64
|
)
|
|
65
|
+
set_source_files_properties(
|
|
66
|
+
${CMAKE_SOURCE_DIR}/external_dependencies/ngstents/src/tents.cpp
|
|
67
|
+
PROPERTIES COMPILE_FLAGS "-w" #suppress all warnings
|
|
68
|
+
)
|
|
61
69
|
endif()
|
|
62
70
|
|
|
63
71
|
### user options
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
Metadata-Version: 2.2
|
|
2
2
|
Name: ngstrefftz
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.2505.dev1
|
|
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.9
|
|
10
|
-
Requires-Dist: ngsolve==6.2.
|
|
10
|
+
Requires-Dist: ngsolve==6.2.2504
|
|
11
11
|
Description-Content-Type: text/markdown
|
|
12
12
|
|
|
13
13
|
# NGSTrefftz
|
|
@@ -17,5 +17,5 @@ __version__: str
|
|
|
17
17
|
__version_tuple__: VERSION_TUPLE
|
|
18
18
|
version_tuple: VERSION_TUPLE
|
|
19
19
|
|
|
20
|
-
__version__ = version = '0.3.
|
|
21
|
-
__version_tuple__ = version_tuple = (0, 3,
|
|
20
|
+
__version__ = version = '0.3.2505.dev1'
|
|
21
|
+
__version_tuple__ = version_tuple = (0, 3, 2505, 'dev1')
|
|
@@ -15,9 +15,9 @@ jobs:
|
|
|
15
15
|
matrix:
|
|
16
16
|
os: [ubuntu-latest, macos-13]
|
|
17
17
|
include:
|
|
18
|
-
- os: windows-
|
|
18
|
+
- os: windows-2022
|
|
19
19
|
cibw-arch: AMD64
|
|
20
|
-
cmake-generator: "Visual Studio
|
|
20
|
+
cmake-generator: "Visual Studio 17 2022"
|
|
21
21
|
cmake_generator_platform: "x64"
|
|
22
22
|
|
|
23
23
|
steps:
|
|
@@ -81,7 +81,7 @@ jobs:
|
|
|
81
81
|
pages: write
|
|
82
82
|
id-token: write
|
|
83
83
|
steps:
|
|
84
|
-
- uses: actions/checkout@
|
|
84
|
+
- uses: actions/checkout@v4
|
|
85
85
|
with:
|
|
86
86
|
fetch-depth: 0 # otherwise, you will failed to push refs to dest repo
|
|
87
87
|
submodules: 'False'
|
|
@@ -100,10 +100,10 @@ jobs:
|
|
|
100
100
|
python3 -m pip install --break-system-packages jupyter-book
|
|
101
101
|
jupyter-book build .
|
|
102
102
|
- name: Upload artifact
|
|
103
|
-
uses: actions/upload-pages-artifact@
|
|
103
|
+
uses: actions/upload-pages-artifact@v3
|
|
104
104
|
with:
|
|
105
105
|
path: "docs/_build/html"
|
|
106
106
|
- name: Deploy to GitHub Pages
|
|
107
107
|
if: github.ref == 'refs/heads/master'
|
|
108
108
|
id: deployment
|
|
109
|
-
uses: actions/deploy-pages@
|
|
109
|
+
uses: actions/deploy-pages@v4
|
{ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/external_dependencies/ngstents/pyproject.toml
RENAMED
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "ngstents"
|
|
3
|
-
dynamic = ["
|
|
3
|
+
dynamic = ["dependencies", "version"]
|
|
4
4
|
authors = [{name="Jay Gopalakrishnan", email= "gjay@pdx.edu"}]
|
|
5
5
|
description = "Spacetime tent facilities for solving hyperbolic equations"
|
|
6
6
|
urls = {github="https://github.com/jayggg/ngstents"}
|
|
7
7
|
readme = "README.md"
|
|
8
|
-
requires-python = ">=3.
|
|
9
|
-
dependencies = ["matplotlib"]
|
|
8
|
+
requires-python = ">=3.9"
|
|
9
|
+
# dependencies = ["matplotlib"]
|
|
10
10
|
classifiers = [
|
|
11
11
|
"License :: OSI Approved :: GNU Lesser General Public License v2 or later (LGPLv2+)"
|
|
12
12
|
]
|
|
13
13
|
|
|
14
14
|
[build-system]
|
|
15
|
-
requires = ["ngsolve>=6.2.
|
|
15
|
+
requires = ["ngsolve>=6.2.2503", "matplotlib", "cmake", "setuptools>=45", "setuptools_scm[toml]>=8", "toml", "scikit-build-core>=0.3.3", "pybind11_stubgen", "cmake>=3.26.1"]
|
|
16
16
|
build-backend = "scikit_build_core.build"
|
|
17
17
|
|
|
18
18
|
##########################################################################
|
|
@@ -31,6 +31,7 @@ metadata.dependencies.provider="ngsolve._scikit_build_core_dependencies"
|
|
|
31
31
|
local_scheme = "no-local-version"
|
|
32
32
|
|
|
33
33
|
[tool.cibuildwheel]
|
|
34
|
+
manylinux-x86_64-image = "cerbsim/manylinux_2_28_x86_64_cuda_12.8"
|
|
34
35
|
skip = """
|
|
35
36
|
pp*
|
|
36
37
|
*_i686
|
|
@@ -39,7 +40,7 @@ skip = """
|
|
|
39
40
|
"""
|
|
40
41
|
|
|
41
42
|
[tool.cibuildwheel.linux]
|
|
42
|
-
repair-wheel-command = "mv {wheel} {dest_dir} && rename linux_x86_64
|
|
43
|
+
repair-wheel-command = "mv {wheel} {dest_dir} && rename linux_x86_64 manylinux_2_28_x86_64.manylinux2014_x86_64 {dest_dir}/*-linux_x86_64*.whl"
|
|
43
44
|
|
|
44
45
|
[tool.cibuildwheel.macos]
|
|
45
46
|
environment = {MACOSX_DEPLOYMENT_TARGET="10.15"}
|
|
@@ -5,10 +5,14 @@
|
|
|
5
5
|
using namespace ngsolve;
|
|
6
6
|
#include "concurrentqueue.h"
|
|
7
7
|
|
|
8
|
+
|
|
9
|
+
namespace ngstents {
|
|
10
|
+
|
|
8
11
|
typedef moodycamel::ConcurrentQueue<int> TQueue;
|
|
9
12
|
typedef moodycamel::ProducerToken TPToken;
|
|
10
13
|
typedef moodycamel::ConsumerToken TCToken;
|
|
11
14
|
|
|
15
|
+
|
|
12
16
|
static TQueue queue;
|
|
13
17
|
|
|
14
18
|
using namespace ngstd;
|
|
@@ -68,7 +72,7 @@ void RunParallelDependency (const Table<int> & dag, TFUNC func)
|
|
|
68
72
|
|
|
69
73
|
|
|
70
74
|
task_manager -> CreateJob
|
|
71
|
-
([&] (const TaskInfo &)
|
|
75
|
+
([&] (const TaskInfo & ti)
|
|
72
76
|
{
|
|
73
77
|
TPToken ptoken(queue);
|
|
74
78
|
TCToken ctoken(queue);
|
|
@@ -126,5 +130,5 @@ void RunParallelDependency (const Table<int> & dag, TFUNC func)
|
|
|
126
130
|
*/
|
|
127
131
|
}
|
|
128
132
|
|
|
129
|
-
|
|
133
|
+
}
|
|
130
134
|
#endif
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
#include "tents.hpp"
|
|
2
|
+
#include <python_ngstd.hpp>
|
|
3
|
+
|
|
4
|
+
typedef CoefficientFunction CF;
|
|
5
|
+
|
|
6
|
+
// python export of tent mesh
|
|
7
|
+
auto ExportTimeSlab(py::module &m)
|
|
8
|
+
{
|
|
9
|
+
auto pyname = "TentSlab";
|
|
10
|
+
auto pydocu = "Tent pitched slab in D + 1 time dimensions";
|
|
11
|
+
py::class_<TentPitchedSlab, shared_ptr<TentPitchedSlab>>
|
|
12
|
+
(m, pyname, pydocu)
|
|
13
|
+
.def(py::init([](shared_ptr<MeshAccess> ma, string method_name, int heapsize)
|
|
14
|
+
{
|
|
15
|
+
ngstents::PitchingMethod method = [method_name]{
|
|
16
|
+
if(method_name == "edge") return ngstents::EEdgeGrad;
|
|
17
|
+
else if(method_name == "vol") return ngstents::EVolGrad;
|
|
18
|
+
else//just for static analyzers. the code should not reach this case
|
|
19
|
+
{
|
|
20
|
+
cout << "Invalid method! Setting edge algorithm as default..." << endl;
|
|
21
|
+
return ngstents::EEdgeGrad;
|
|
22
|
+
}
|
|
23
|
+
}();
|
|
24
|
+
auto tps = TentPitchedSlab(ma, heapsize);
|
|
25
|
+
tps.SetPitchingMethod(method);
|
|
26
|
+
return tps;
|
|
27
|
+
}),
|
|
28
|
+
py::arg("mesh"), py::arg("method") = "edge", py::arg("heapsize") = 1000000
|
|
29
|
+
)
|
|
30
|
+
.def_readonly("mesh", &TentPitchedSlab::ma)
|
|
31
|
+
.def_property_readonly("gradphi",[](shared_ptr<TentPitchedSlab> self) -> shared_ptr<CF>
|
|
32
|
+
{
|
|
33
|
+
return self->cfgradphi;
|
|
34
|
+
})
|
|
35
|
+
.def("SetMaxWavespeed", [](shared_ptr<TentPitchedSlab> self, py::object wavespeed)
|
|
36
|
+
{
|
|
37
|
+
if (auto ws = py::extract<double> (wavespeed); ws.check())
|
|
38
|
+
self->SetMaxWavespeed(ws());
|
|
39
|
+
else if (auto ws = py::extract<shared_ptr<CF>>(wavespeed); ws.check())
|
|
40
|
+
self->SetMaxWavespeed(ws());
|
|
41
|
+
else
|
|
42
|
+
throw Exception("wrong argument type in SetMaxWavespeed");
|
|
43
|
+
})
|
|
44
|
+
.def("PitchTents",[](shared_ptr<TentPitchedSlab> self,
|
|
45
|
+
const double dt,
|
|
46
|
+
const bool local_ct, const double global_ct)
|
|
47
|
+
{
|
|
48
|
+
int dim = self->ma->GetDimension();
|
|
49
|
+
bool success = false;
|
|
50
|
+
switch(dim){
|
|
51
|
+
case 1:
|
|
52
|
+
success = self->PitchTents<1>(dt,local_ct,global_ct);
|
|
53
|
+
break;
|
|
54
|
+
case 2:
|
|
55
|
+
success = self->PitchTents<2>(dt,local_ct,global_ct);
|
|
56
|
+
break;
|
|
57
|
+
case 3:
|
|
58
|
+
success = self->PitchTents<3>(dt,local_ct,global_ct);
|
|
59
|
+
break;
|
|
60
|
+
default:
|
|
61
|
+
throw Exception("TentPitchedSlab not available for dimension "+ToString(dim));
|
|
62
|
+
}
|
|
63
|
+
return success;
|
|
64
|
+
},
|
|
65
|
+
py::arg("dt"), py::arg("local_ct")=false, py::arg("global_ct")=1.0,
|
|
66
|
+
R"(
|
|
67
|
+
Parameters:--
|
|
68
|
+
dt: spacetime slab's height in time.
|
|
69
|
+
local_ct: if True, constrain tent slope by scaling 1/wavespeed
|
|
70
|
+
with a further local mesh-dependent factor.
|
|
71
|
+
global_ct: an additional factor to constrain tent slope, which
|
|
72
|
+
gives flatter tents for smaller values.
|
|
73
|
+
|
|
74
|
+
Returns True upon successful tent meshing.
|
|
75
|
+
-------------)"
|
|
76
|
+
)
|
|
77
|
+
.def("GetNTents", &TentPitchedSlab::GetNTents)
|
|
78
|
+
.def("GetNLayers", &TentPitchedSlab::GetNLayers)
|
|
79
|
+
.def("GetSlabHeight", &TentPitchedSlab::GetSlabHeight)
|
|
80
|
+
.def("MaxSlope", &TentPitchedSlab::MaxSlope)
|
|
81
|
+
.def("GetTent", &TentPitchedSlab::GetTent, pybind11::return_value_policy::reference_internal)
|
|
82
|
+
////////////////////////////
|
|
83
|
+
// visualization functions
|
|
84
|
+
////////////////////////////
|
|
85
|
+
.def("TentData1D", [](shared_ptr<TentPitchedSlab> self)
|
|
86
|
+
{
|
|
87
|
+
py::list ret;
|
|
88
|
+
for(int i = 0; i < self->GetNTents(); i++)
|
|
89
|
+
{
|
|
90
|
+
const Tent & tent = self->GetTent(i);
|
|
91
|
+
py::list reti;
|
|
92
|
+
reti.append(py::make_tuple(tent.vertex, tent.ttop,
|
|
93
|
+
tent.tbot, tent.level));
|
|
94
|
+
for(int j = 0; j< tent.nbv.Size(); j++)
|
|
95
|
+
reti.append(py::make_tuple(tent.nbv[j],tent.nbtime[j]));
|
|
96
|
+
ret.append(reti);
|
|
97
|
+
}
|
|
98
|
+
return ret;
|
|
99
|
+
})
|
|
100
|
+
.def("DrawPitchedTentsVTK", [](shared_ptr<TentPitchedSlab> self,
|
|
101
|
+
string vtkfilename)
|
|
102
|
+
{
|
|
103
|
+
if(self->ma->GetDimension() != 2)
|
|
104
|
+
throw Exception("VTK export is only supported for 2D spatial meshes");
|
|
105
|
+
else
|
|
106
|
+
self->DrawPitchedTentsVTK(vtkfilename);
|
|
107
|
+
},
|
|
108
|
+
py::arg("vtkfilename")="vtkoutput",
|
|
109
|
+
R"(
|
|
110
|
+
Export the mesh of tents and intermediate advancing fronts
|
|
111
|
+
to VTK file format for visualization in Paraview.)"
|
|
112
|
+
)
|
|
113
|
+
;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
|
|
117
|
+
void ExportTents(py::module & m) {
|
|
118
|
+
|
|
119
|
+
py::class_<Tent, shared_ptr<Tent>>(m, "Tent", "Tent structure")
|
|
120
|
+
.def_readonly("vertex", &Tent::vertex)
|
|
121
|
+
.def_readonly("ttop", &Tent::ttop)
|
|
122
|
+
.def_readonly("tbot", &Tent::tbot)
|
|
123
|
+
.def_readonly("nbv", &Tent::nbv)
|
|
124
|
+
.def_readonly("nbtime", &Tent::nbtime)
|
|
125
|
+
.def_readonly("els", &Tent::els)
|
|
126
|
+
.def_readonly("level", &Tent::level)
|
|
127
|
+
.def_readonly("internal_facets", &Tent::internal_facets)
|
|
128
|
+
.def("MaxSlope", &Tent::MaxSlope);
|
|
129
|
+
|
|
130
|
+
ExportTimeSlab(m);
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
|
|
134
|
+
PYBIND11_MODULE(_pytents, m) {
|
|
135
|
+
py::module_::import("ngsolve");
|
|
136
|
+
m.attr("__name__") = "ngstents";
|
|
137
|
+
m.attr("__package__") = "ngstents";
|
|
138
|
+
ExportTents(m);
|
|
139
|
+
}
|
|
@@ -5,6 +5,9 @@
|
|
|
5
5
|
#include "paralleldepend.hpp"
|
|
6
6
|
#include "tentsolver_impl.hpp"
|
|
7
7
|
|
|
8
|
+
using namespace ngstents;
|
|
9
|
+
|
|
10
|
+
|
|
8
11
|
template <typename EQUATION, int DIM, int COMP, int ECOMP, bool SYMBOLIC>
|
|
9
12
|
void T_ConservationLaw<EQUATION, DIM, COMP, ECOMP, SYMBOLIC>::
|
|
10
13
|
CalcFluxTent(const Tent & tent, const FlatMatrixFixWidth<COMP> u,
|
{ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/external_dependencies/ngstents/src/tents.cpp
RENAMED
|
@@ -6,8 +6,10 @@
|
|
|
6
6
|
|
|
7
7
|
///////////////////// GradPhiCoefficientFunction ///////////////////////////
|
|
8
8
|
|
|
9
|
-
void GradPhiCoefficientFunction::GenerateCode(Code &code, FlatArray<int
|
|
9
|
+
void GradPhiCoefficientFunction::GenerateCode(Code &code, FlatArray<int> inputs, int index) const
|
|
10
10
|
{
|
|
11
|
+
auto dims = Dimensions();
|
|
12
|
+
|
|
11
13
|
string header = "\n\
|
|
12
14
|
{flatmatrix} {values};\n\
|
|
13
15
|
ProxyUserData * {ud} = (ProxyUserData*)mir.GetTransformation().userdata;\n\
|
|
@@ -27,7 +29,7 @@ void GradPhiCoefficientFunction::GenerateCode(Code &code, FlatArray<int>, int in
|
|
|
27
29
|
|
|
28
30
|
string body = "";
|
|
29
31
|
|
|
30
|
-
for (
|
|
32
|
+
for (int i = 0; i < this->Dimension(); i++) {
|
|
31
33
|
body += Var(index, i, this->Dimensions()).Declare("{scal_type}", 0.0);
|
|
32
34
|
string values = "{values}";
|
|
33
35
|
if(code.is_simd)
|
|
@@ -250,8 +252,8 @@ bool TentPitchedSlab::PitchTents(const double dt, const bool calc_local_ct, cons
|
|
|
250
252
|
}
|
|
251
253
|
//check if slab is complete
|
|
252
254
|
slab_complete = true;
|
|
253
|
-
for(
|
|
254
|
-
if(vmap[i] ==
|
|
255
|
+
for(int i = 0; i < ma->GetNV(); i++)
|
|
256
|
+
if(vmap[i] == i)
|
|
255
257
|
if(complete_vertices[i] == false)
|
|
256
258
|
{
|
|
257
259
|
slab_complete = false;
|
|
@@ -264,9 +266,9 @@ bool TentPitchedSlab::PitchTents(const double dt, const bool calc_local_ct, cons
|
|
|
264
266
|
{
|
|
265
267
|
const auto &vrefdt = slabpitcher->GetVerticesReferenceHeight();
|
|
266
268
|
cout << "Error: the algorithm could not pitch the whole slab" << endl;
|
|
267
|
-
|
|
269
|
+
int iv;
|
|
268
270
|
for(iv = 0; iv < ma->GetNV(); iv++)
|
|
269
|
-
if(vmap[iv] ==
|
|
271
|
+
if(vmap[iv] == iv && !complete_vertices[iv]) break;
|
|
270
272
|
if(iv == ma->GetNV())//just as a precaution, let us check that it really didnt pitch.
|
|
271
273
|
{
|
|
272
274
|
cout << "Inconsistent data structure. Aborting..." << endl;
|
|
@@ -274,7 +276,7 @@ bool TentPitchedSlab::PitchTents(const double dt, const bool calc_local_ct, cons
|
|
|
274
276
|
}
|
|
275
277
|
for(iv = 0; iv < ma->GetNV(); iv++)
|
|
276
278
|
{
|
|
277
|
-
if(vmap[iv] ==
|
|
279
|
+
if(vmap[iv] == iv && !complete_vertices[iv])
|
|
278
280
|
{
|
|
279
281
|
const auto relkt = ktilde[iv] / vrefdt[iv];
|
|
280
282
|
if(relkt < 1e-10) {continue;}
|
|
@@ -391,8 +393,8 @@ bool TentSlabPitcher::GetReadyVertices(double &adv_factor, bool reset_adv_factor
|
|
|
391
393
|
const double initial_adv_factor = adv_factor;
|
|
392
394
|
for(auto ia = 0; ia < n_attempts; ia++)
|
|
393
395
|
{
|
|
394
|
-
for (
|
|
395
|
-
if(vmap[iv] ==
|
|
396
|
+
for (auto iv = 0; iv < ma->GetNV(); iv++)
|
|
397
|
+
if(vmap[iv] == iv && !complete_vertices[iv])
|
|
396
398
|
{
|
|
397
399
|
if (ktilde[iv] > adv_factor * vertex_refdt[iv])
|
|
398
400
|
if (!vertex_ready[iv])
|
|
@@ -418,8 +420,8 @@ bool TentSlabPitcher::GetReadyVertices(double &adv_factor, bool reset_adv_factor
|
|
|
418
420
|
void TentSlabPitcher::ComputeVerticesReferenceHeight(const Table<int> &v2v, const Table<int> &v2e, const FlatArray<double> &tau, LocalHeap &lh)
|
|
419
421
|
{
|
|
420
422
|
this->vertex_refdt = std::numeric_limits<double>::max();
|
|
421
|
-
for (
|
|
422
|
-
if(vmap[i]==
|
|
423
|
+
for (auto i = 0; i < this->ma->GetNV(); i++)
|
|
424
|
+
if(vmap[i]==i) // non-periodic
|
|
423
425
|
{
|
|
424
426
|
this->vertex_refdt[i] = this->GetPoleHeight(i, tau, v2v[i],v2e[i],lh);
|
|
425
427
|
}
|
|
@@ -427,11 +429,11 @@ void TentSlabPitcher::ComputeVerticesReferenceHeight(const Table<int> &v2v, cons
|
|
|
427
429
|
}
|
|
428
430
|
|
|
429
431
|
std::tuple<int,int> TentSlabPitcher::PickNextVertexForPitching(const FlatArray<int> &ready_vertices,
|
|
430
|
-
const FlatArray<double>
|
|
432
|
+
const FlatArray<double> &ktilde,
|
|
431
433
|
const FlatArray<int> &vertices_level){
|
|
432
434
|
int minlevel = std::numeric_limits<int>::max();
|
|
433
435
|
int posmin = -1;
|
|
434
|
-
for(
|
|
436
|
+
for(auto i = 0; i < ready_vertices.Size(); i++)
|
|
435
437
|
if(vertices_level[ready_vertices[i]] < minlevel)
|
|
436
438
|
{
|
|
437
439
|
minlevel = vertices_level[ready_vertices[i]];
|
|
@@ -541,7 +543,7 @@ std::tuple<Table<int>,Table<int>> TentSlabPitcher::InitializeMeshData(LocalHeap
|
|
|
541
543
|
for ( ; !create_per_verts.Done(); create_per_verts++)
|
|
542
544
|
{
|
|
543
545
|
for(auto i : Range(vmap))
|
|
544
|
-
if(vmap[i]!=
|
|
546
|
+
if(vmap[i]!=i)
|
|
545
547
|
create_per_verts.Add(vmap[i],i);
|
|
546
548
|
}
|
|
547
549
|
|
|
@@ -555,7 +557,7 @@ std::tuple<Table<int>,Table<int>> TentSlabPitcher::InitializeMeshData(LocalHeap
|
|
|
555
557
|
}
|
|
556
558
|
else
|
|
557
559
|
{
|
|
558
|
-
this->local_ctau = [](const int, const int){return 1;};
|
|
560
|
+
this->local_ctau = [](const int v, const int el_or_edge){return 1;};
|
|
559
561
|
}
|
|
560
562
|
return std::make_tuple(v2v, v2e);
|
|
561
563
|
}
|
|
@@ -622,7 +624,7 @@ void TentSlabPitcher::RemovePeriodicEdges(BitArray &fine_edges)
|
|
|
622
624
|
|
|
623
625
|
|
|
624
626
|
|
|
625
|
-
template <int DIM> double VolumeGradientPitcher<DIM>::GetPoleHeight(const int vi, const FlatArray<double> & tau, FlatArray<int
|
|
627
|
+
template <int DIM> double VolumeGradientPitcher<DIM>::GetPoleHeight(const int vi, const FlatArray<double> & tau, FlatArray<int> nbv, FlatArray<int> nbe, LocalHeap & lh) const{
|
|
626
628
|
HeapReset hr(lh);
|
|
627
629
|
constexpr auto el_type = EL_TYPE(DIM);
|
|
628
630
|
//number of vertices of the current element (always the simplex associated to DIM)
|
|
@@ -645,7 +647,7 @@ template <int DIM> double VolumeGradientPitcher<DIM>::GetPoleHeight(const int vi
|
|
|
645
647
|
//numerical tolerance (NOT YET SCALED)
|
|
646
648
|
constexpr double num_tol = std::numeric_limits<double>::epsilon();
|
|
647
649
|
const auto nels = els.Size();
|
|
648
|
-
for (
|
|
650
|
+
for (int iel = 0; iel < nels; iel++)
|
|
649
651
|
{
|
|
650
652
|
const auto el = els[iel];
|
|
651
653
|
ElementId ei(VOL,el);
|
|
@@ -715,7 +717,9 @@ template <int DIM> double VolumeGradientPitcher<DIM>::GetPoleHeight(const int vi
|
|
|
715
717
|
}
|
|
716
718
|
|
|
717
719
|
template <int DIM>
|
|
718
|
-
Table<double> VolumeGradientPitcher<DIM>::CalcLocalCTau(LocalHeap &lh, const Table<int> &){
|
|
720
|
+
Table<double> VolumeGradientPitcher<DIM>::CalcLocalCTau(LocalHeap &lh, const Table<int> &v2e){
|
|
721
|
+
constexpr auto el_type = EL_TYPE(DIM);//simplex of dimension dim
|
|
722
|
+
constexpr auto n_el_vertices = DIM + 1;//number of vertices of that simplex
|
|
719
723
|
|
|
720
724
|
const auto n_mesh_vertices = ma->GetNV();
|
|
721
725
|
//this table will contain the local mesh-dependent constant
|
|
@@ -726,10 +730,10 @@ Table<double> VolumeGradientPitcher<DIM>::CalcLocalCTau(LocalHeap &lh, const Tab
|
|
|
726
730
|
//just calculating the size of the table
|
|
727
731
|
for(auto vi : IntRange(0, n_mesh_vertices))
|
|
728
732
|
{
|
|
729
|
-
if(vi !=
|
|
733
|
+
if(vi != vmap[vi]) {continue;}
|
|
730
734
|
this->GetVertexElements(vi,vertex_els);
|
|
731
735
|
const auto n_vert_els = vertex_els.Size();
|
|
732
|
-
for(auto
|
|
736
|
+
for(auto el : IntRange(0, n_vert_els))
|
|
733
737
|
{create_local_ctau.Add(vi,0);}
|
|
734
738
|
}
|
|
735
739
|
create_local_ctau++;// it is in insert mode
|
|
@@ -739,7 +743,7 @@ Table<double> VolumeGradientPitcher<DIM>::CalcLocalCTau(LocalHeap &lh, const Tab
|
|
|
739
743
|
//therefore it must be ensured that ctau <=1
|
|
740
744
|
for(auto vi : IntRange(0,n_mesh_vertices))
|
|
741
745
|
{
|
|
742
|
-
if(vi !=
|
|
746
|
+
if(vi != vmap[vi]){continue;}
|
|
743
747
|
this->GetVertexElements(vi,vertex_els);
|
|
744
748
|
for(auto iel : IntRange(0,vertex_els.Size()))
|
|
745
749
|
{
|
|
@@ -769,7 +773,7 @@ Table<double> VolumeGradientPitcher<DIM>::CalcLocalCTau(LocalHeap &lh, const Tab
|
|
|
769
773
|
for(auto edge : face_edges)
|
|
770
774
|
{
|
|
771
775
|
auto pnts = ma->GetEdgePNums(edge);
|
|
772
|
-
if(
|
|
776
|
+
if(vmap[pnts[0]] != vi && vmap[pnts[1]] != vi)
|
|
773
777
|
{
|
|
774
778
|
opposite_edge = edge_len[edge];
|
|
775
779
|
}
|
|
@@ -790,7 +794,7 @@ Table<double> VolumeGradientPitcher<DIM>::CalcLocalCTau(LocalHeap &lh, const Tab
|
|
|
790
794
|
}
|
|
791
795
|
|
|
792
796
|
template <int DIM>
|
|
793
|
-
double EdgeGradientPitcher<DIM>::GetPoleHeight(const int vi, const FlatArray<double> & tau, FlatArray<int> nbv, FlatArray<int> nbe, LocalHeap &) const{
|
|
797
|
+
double EdgeGradientPitcher<DIM>::GetPoleHeight(const int vi, const FlatArray<double> & tau, FlatArray<int> nbv, FlatArray<int> nbe, LocalHeap & lh) const{
|
|
794
798
|
double kt = std::numeric_limits<double>::max();
|
|
795
799
|
for (int nb_index : nbv.Range())
|
|
796
800
|
{
|
|
@@ -821,9 +825,9 @@ Table<double> EdgeGradientPitcher<DIM>::CalcLocalCTau(LocalHeap &lh, const Table
|
|
|
821
825
|
//just calculating the size of the table
|
|
822
826
|
for(auto vi : IntRange(0, n_mesh_vertices))
|
|
823
827
|
{
|
|
824
|
-
if(vi !=
|
|
828
|
+
if(vi != vmap[vi]) {continue;}
|
|
825
829
|
const auto n_edges_vert = v2e[vi].Size();
|
|
826
|
-
for(auto
|
|
830
|
+
for(auto el : IntRange(0, n_edges_vert))
|
|
827
831
|
{create_local_ctau.Add(vi,0);}
|
|
828
832
|
}
|
|
829
833
|
create_local_ctau++;// it is in insert mode
|
|
@@ -844,7 +848,7 @@ Table<double> EdgeGradientPitcher<DIM>::CalcLocalCTau(LocalHeap &lh, const Table
|
|
|
844
848
|
//projection of the gradient over the respective face
|
|
845
849
|
for(auto vi : IntRange(0, n_mesh_vertices))
|
|
846
850
|
{
|
|
847
|
-
if(vi !=
|
|
851
|
+
if(vi != vmap[vi]){continue;}
|
|
848
852
|
for(auto edge : v2e[vi])
|
|
849
853
|
{
|
|
850
854
|
//gets the elements that have this edge as a side
|
|
@@ -1034,7 +1038,7 @@ void TentPitchedSlab::DrawPitchedTentsVTK(string filename)
|
|
|
1034
1038
|
|
|
1035
1039
|
|
|
1036
1040
|
out << "CELL_TYPES " << cells.Size() << endl;
|
|
1037
|
-
for (auto
|
|
1041
|
+
for (auto c : cells)
|
|
1038
1042
|
out << "10 " << endl;
|
|
1039
1043
|
|
|
1040
1044
|
out << "CELL_DATA " << cells.Size() << endl;
|
{ngstrefftz-0.3.2504.dev2 → ngstrefftz-0.3.2505.dev1}/external_dependencies/ngstents/src/tents.hpp
RENAMED
|
@@ -141,7 +141,7 @@ public:
|
|
|
141
141
|
: CoefficientFunction(adim)
|
|
142
142
|
{ }
|
|
143
143
|
|
|
144
|
-
double Evaluate(const BaseMappedIntegrationPoint &) const
|
|
144
|
+
double Evaluate(const BaseMappedIntegrationPoint & ip) const
|
|
145
145
|
{
|
|
146
146
|
throw Exception ("Evaluate not implemented for BaseMappedIntegrationPoint!");
|
|
147
147
|
}
|
|
@@ -199,8 +199,8 @@ public:
|
|
|
199
199
|
|
|
200
200
|
// Constructor and initializers
|
|
201
201
|
TentPitchedSlab(shared_ptr<MeshAccess> ama, int heapsize) :
|
|
202
|
-
dt(0),
|
|
203
|
-
lh(heapsize, "Tents heap")
|
|
202
|
+
dt(0), ma(ama), cmax(nullptr), nlayers(0),
|
|
203
|
+
has_been_pitched(false), lh(heapsize, "Tents heap")
|
|
204
204
|
{
|
|
205
205
|
cfgradphi = make_shared<GradPhiCoefficientFunction>(ma->GetDimension());
|
|
206
206
|
};
|
|
@@ -9,7 +9,7 @@ classifiers = [
|
|
|
9
9
|
"License :: OSI Approved :: GNU Lesser General Public License v3 (LGPLv3)",
|
|
10
10
|
]
|
|
11
11
|
dependencies = [
|
|
12
|
-
"ngsolve==6.2.
|
|
12
|
+
"ngsolve==6.2.2504",
|
|
13
13
|
]
|
|
14
14
|
|
|
15
15
|
|
|
@@ -18,7 +18,7 @@ Documentation = "https://paulst.github.io/NGSTrefftz"
|
|
|
18
18
|
Repository = "https://github.com/PaulSt/ngstrefftz"
|
|
19
19
|
|
|
20
20
|
[build-system]
|
|
21
|
-
requires = ["ngsolve==6.2.
|
|
21
|
+
requires = ["ngsolve==6.2.2504",
|
|
22
22
|
"scikit-build-core>=0.9.0",
|
|
23
23
|
"pybind11_stubgen",
|
|
24
24
|
"setuptools>=45",
|
|
@@ -63,7 +63,7 @@ namespace ngcomp
|
|
|
63
63
|
|
|
64
64
|
CSR basismat = TWaveBasis<D + 1>::Basis (order, 0, fosystem);
|
|
65
65
|
|
|
66
|
-
RunParallelDependency (tps->tent_dependency, [&] (int tentnr) {
|
|
66
|
+
ngstents::RunParallelDependency (tps->tent_dependency, [&] (int tentnr) {
|
|
67
67
|
LocalHeap slh = lh.Split (); // split to threads
|
|
68
68
|
const Tent *tent = &tps->GetTent (tentnr);
|
|
69
69
|
|
|
@@ -880,7 +880,7 @@ namespace ngcomp
|
|
|
880
880
|
template <int D> double TWaveTents<D>::MaxAdiam ()
|
|
881
881
|
{
|
|
882
882
|
double h = 0.0;
|
|
883
|
-
RunParallelDependency (tps->tent_dependency, [&] (int tentnr) {
|
|
883
|
+
ngstents::RunParallelDependency (tps->tent_dependency, [&] (int tentnr) {
|
|
884
884
|
const Tent *tent = &tps->GetTent (tentnr);
|
|
885
885
|
h = max (h, TentAdiam (tent));
|
|
886
886
|
});
|
|
@@ -948,7 +948,7 @@ namespace ngcomp
|
|
|
948
948
|
// cout << "solving qt " << (this->tps)->GetNTents() << " tents in " << D
|
|
949
949
|
// << "+1 dimensions..." << endl;
|
|
950
950
|
|
|
951
|
-
RunParallelDependency ((this->tps)->tent_dependency, [&] (int tentnr) {
|
|
951
|
+
ngstents::RunParallelDependency ((this->tps)->tent_dependency, [&] (int tentnr) {
|
|
952
952
|
LocalHeap slh = lh.Split (); // split to threads
|
|
953
953
|
const Tent *tent = &(this->tps)->GetTent (tentnr);
|
|
954
954
|
|