xfem 2.1.2607.dev10__tar.gz → 2.1.2607.dev14__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.
Files changed (259) hide show
  1. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/CMakeLists.txt +1 -1
  2. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/INSTALLATION.md +14 -0
  3. xfem-2.1.2607.dev14/NGSolveAddonConfig.cmake.in +10 -0
  4. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/PKG-INFO +1 -1
  5. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/cutint/CMakeLists.txt +1 -1
  6. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/cutint/lsetintdomain.cpp +0 -128
  7. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/cutint/lsetintdomain.hpp +0 -2
  8. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/cutint/python_cutint.cpp +131 -1
  9. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/lsetcurving/CMakeLists.txt +1 -1
  10. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/ngsolve_addon.cmake +62 -11
  11. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/python/CMakeLists.txt +14 -4
  12. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/python/__init__.py +5 -0
  13. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/python/_version.py +3 -3
  14. xfem-2.1.2607.dev14/python/config.py +13 -0
  15. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/spacetime/CMakeLists.txt +1 -1
  16. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/utils/CMakeLists.txt +1 -1
  17. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/utils/ngsxstd.cpp +1 -1
  18. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/utils/ngsxstd.hpp +11 -1
  19. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/utils/python_utils.cpp +0 -2
  20. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/utils/restrictedfespace.cpp +2 -2
  21. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/xfem/CMakeLists.txt +1 -1
  22. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/.ci/build_pip.sh +0 -0
  23. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/.ci/build_pip_mac.sh +0 -0
  24. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/.ci/ci_ctests.sh +0 -0
  25. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/.ci/fix_auditwheel_policy.py +0 -0
  26. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/.github/workflows/extras-workflow.yml +0 -0
  27. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/.github/workflows/paper-workflow.yml +0 -0
  28. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/.github/workflows/pypi.yml +0 -0
  29. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/.gitignore +0 -0
  30. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/.gitlab-ci.yml +0 -0
  31. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/.gitmodules +0 -0
  32. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/Dockerfile +0 -0
  33. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/LICENSE +0 -0
  34. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/MANIFEST.in +0 -0
  35. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/README.md +0 -0
  36. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/_ngsolve_deps_provider.py +0 -0
  37. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/cmake_modules/check_submodules.cmake +0 -0
  38. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/cmake_modules/cmake_uninstall.cmake.in +0 -0
  39. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/config.h.cmake +0 -0
  40. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/cutint/cutintegral.cpp +0 -0
  41. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/cutint/cutintegral.hpp +0 -0
  42. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/cutint/fieldeval.cpp +0 -0
  43. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/cutint/fieldeval.hpp +0 -0
  44. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/cutint/mlsetintegration.cpp +0 -0
  45. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/cutint/mlsetintegration.hpp +0 -0
  46. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/cutint/spacetimecutrule.cpp +0 -0
  47. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/cutint/spacetimecutrule.hpp +0 -0
  48. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/cutint/straightcutrule.cpp +0 -0
  49. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/cutint/straightcutrule.hpp +0 -0
  50. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/cutint/xdecompose.cpp +0 -0
  51. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/cutint/xdecompose.hpp +0 -0
  52. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/cutint/xintegration.cpp +0 -0
  53. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/cutint/xintegration.hpp +0 -0
  54. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/demos/CMakeLists.txt +0 -0
  55. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/demos/README.md +0 -0
  56. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/demos/aggregates/aggfem_shapetester.py +0 -0
  57. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/demos/aggregates/fictdom_aggfem.py +0 -0
  58. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/demos/aggregates/fictdom_dg_aggfem.py +0 -0
  59. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/demos/fictdom.py +0 -0
  60. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/demos/fictdom_dg.py +0 -0
  61. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/demos/fictdom_mlset.py +0 -0
  62. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/demos/graveyard/compp1prolong-playground.py +0 -0
  63. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/demos/graveyard/cutint/area_of_a_circle_quads.py +0 -0
  64. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/demos/graveyard/cutint/integrate_one_big_quad2D.py +0 -0
  65. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/demos/graveyard/cutint/integrate_one_big_quad3D.py +0 -0
  66. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/demos/graveyard/fictdom_dg3d.py +0 -0
  67. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/demos/graveyard/lsetcurving/integrate.py +0 -0
  68. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/demos/graveyard/make_uniform3D_grid.py +0 -0
  69. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/demos/graveyard/mg_cut_poisson_p1.py +0 -0
  70. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/demos/graveyard/mg_cut_poisson_p1p2_skinny.py +0 -0
  71. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/demos/graveyard/mg_cut_poisson_p2.py +0 -0
  72. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/demos/graveyard/mg_cut_poisson_p2_skinny.py +0 -0
  73. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/demos/graveyard/mg_p1_working.py +0 -0
  74. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/demos/graveyard/mlset/cube.py +0 -0
  75. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/demos/graveyard/mlset/cube2.py +0 -0
  76. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/demos/graveyard/mlset/cube_codim2_test.py +0 -0
  77. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/demos/graveyard/mlset/even_simpler.py +0 -0
  78. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/demos/graveyard/mlset/multiple_triangles.py +0 -0
  79. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/demos/graveyard/mlset/simple.py +0 -0
  80. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/demos/graveyard/mlset/simple_mlcutinfo.py +0 -0
  81. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/demos/graveyard/mlset/simple_with_convinience.py +0 -0
  82. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/demos/graveyard/mlset/square.py +0 -0
  83. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/demos/graveyard/mlset/tensor_functions.py +0 -0
  84. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/demos/graveyard/mlset/test_GetOuterBoundary.py +0 -0
  85. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/demos/graveyard/mlset/test_draw.py +0 -0
  86. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/demos/graveyard/mlset/triangle.py +0 -0
  87. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/demos/graveyard/mlset/zalesak_disk.py +0 -0
  88. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/demos/graveyard/mlset/zalesak_sphere.py +0 -0
  89. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/demos/graveyard/p1prolong-playground.py +0 -0
  90. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/demos/graveyard/p2prolong-playground.py +0 -0
  91. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/demos/graveyard/stokesxfem.py +0 -0
  92. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/demos/linelasticity.py +0 -0
  93. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/demos/lsetcurv_boundary.py +0 -0
  94. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/demos/lsetgeoms.py +0 -0
  95. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/demos/moving_domain.py +0 -0
  96. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/demos/mpi/mpi_nxfem.py +0 -0
  97. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/demos/spacetime/graveyard/IF_circle.py +0 -0
  98. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/demos/spacetime/graveyard/IF_marking.py +0 -0
  99. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/demos/spacetime/graveyard/IF_periodic.py +0 -0
  100. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/demos/spacetime/graveyard/area_of_a_hypersphere_ST.py +0 -0
  101. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/demos/spacetime/graveyard/area_of_a_hypersphere_ST_conv.py +0 -0
  102. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/demos/spacetime/graveyard/area_of_a_hypersphere_ST_conv_higher_order.py +0 -0
  103. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/demos/spacetime/graveyard/area_of_a_sphere_ST.py +0 -0
  104. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/demos/spacetime/graveyard/area_of_a_sphere_ST_conv.py +0 -0
  105. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/demos/spacetime/graveyard/area_of_a_sphere_ST_conv_higher_order.py +0 -0
  106. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/demos/spacetime/graveyard/fictdomain_Neumann_quad_testing.py +0 -0
  107. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/demos/spacetime/graveyard/kite3D_in_sympy.py +0 -0
  108. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/demos/spacetime/graveyard/kite_in_sympy.py +0 -0
  109. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/demos/spacetime/graveyard/spaceP1_timeDGP1_3D.py +0 -0
  110. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/demos/spacetime/graveyard/spaceP1_timeDGP1_3D_static.py +0 -0
  111. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/demos/spacetime/graveyard/spaceP1_timeDGP1_kite.py +0 -0
  112. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/demos/spacetime/graveyard/spaceP1_timeDGP1_kite3D.py +0 -0
  113. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/demos/spacetime/graveyard/spaceP2_timeDGP1.py +0 -0
  114. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/demos/spacetime/graveyard/spaceP2_timeDGP1_new.py +0 -0
  115. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/demos/spacetime/graveyard/spacePX_timeDGP1_kite.py +0 -0
  116. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/demos/spacetime/spaceDGtimeDG_unfitted.py +0 -0
  117. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/demos/spacetime/spaceDGtimeDG_unfitted_3D.py +0 -0
  118. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/demos/spacetime/spacetimeCG_unfitted.py +0 -0
  119. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/demos/spacetime/spacetimeDG_fitted.py +0 -0
  120. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/demos/spacetime/spacetimeDG_fitted_Nitsche.py +0 -0
  121. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/demos/spacetime/spacetimeDG_unfitted.py +0 -0
  122. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/demos/spacetime/spacetime_geom_error.py +0 -0
  123. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/demos/spacetime/spacetime_vtk.py +0 -0
  124. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/demos/spdes/surfstokestracefem.py +0 -0
  125. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/demos/stokescutfem.py +0 -0
  126. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/demos/tracefem.py +0 -0
  127. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/demos/unf_interf_prob.py +0 -0
  128. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/doc/feature-details.md +0 -0
  129. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/doc/graphics/bubble-coarse.pdf +0 -0
  130. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/doc/graphics/cuttet-quadrature.png +0 -0
  131. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/doc/graphics/graveyard/cut_quadrature.png +0 -0
  132. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/doc/graphics/graveyard/cut_quadrature_mlset.png +0 -0
  133. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/doc/graphics/graveyard/cuttet.jpg +0 -0
  134. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/doc/graphics/graveyard/intpoints.jpg +0 -0
  135. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/doc/graphics/graveyard/spacetime1.png +0 -0
  136. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/doc/graphics/graveyard/spacetime2.png +0 -0
  137. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/doc/graphics/graveyard/zdisc-cut-elements.png +0 -0
  138. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/doc/graphics/lsetcurv.jpg +0 -0
  139. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/doc/graphics/mlset.png +0 -0
  140. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/doc/graphics/patches.png +0 -0
  141. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/doc/graphics/spacetime.png +0 -0
  142. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/doc/graphics/twophase.pdf +0 -0
  143. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/doc/graphics/unfittedmesh.jpg +0 -0
  144. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/doc/graphics/xfem.jpg +0 -0
  145. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/doc/graphics/xfes.png +0 -0
  146. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/doc/latex.template +0 -0
  147. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/doc/lit-ngsxfem.bib +0 -0
  148. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/doc/literature.md +0 -0
  149. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/doc/literature.yaml +0 -0
  150. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/doc/make_literature.py +0 -0
  151. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/doc/sphinx/_static/custom.css +0 -0
  152. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/doc/sphinx/_static/literature.css +0 -0
  153. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/doc/sphinx/bullets.css +0 -0
  154. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/doc/sphinx/conf.py +0 -0
  155. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/doc/sphinx/contents.rst +0 -0
  156. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/doc/sphinx/index.rst +0 -0
  157. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/doc/sphinx/jupyter/index.rst +0 -0
  158. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/doc/sphinx/requirements.txt +0 -0
  159. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/doc/sphinx/xfem_misc/demos.rst +0 -0
  160. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/doc/sphinx/xfem_misc/feature-details.rst +0 -0
  161. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/doc/sphinx/xfem_misc/installation.rst +0 -0
  162. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/doc/sphinx/xfem_misc/literature.rst +0 -0
  163. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/doc/sphinx/xfem_misc/literature_entries.rst +0 -0
  164. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/lsetcurving/calcpointshift.cpp +0 -0
  165. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/lsetcurving/calcpointshift.hpp +0 -0
  166. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/lsetcurving/lsetrefine.cpp +0 -0
  167. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/lsetcurving/lsetrefine.hpp +0 -0
  168. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/lsetcurving/projshift.cpp +0 -0
  169. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/lsetcurving/projshift.hpp +0 -0
  170. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/lsetcurving/python_lsetcurving.cpp +0 -0
  171. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/lsetcurving/shiftedevaluate.cpp +0 -0
  172. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/lsetcurving/shiftedevaluate.hpp +0 -0
  173. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/lsetcurving/shiftintegrators.cpp +0 -0
  174. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/lsetcurving/shiftintegrators.hpp +0 -0
  175. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/pyproject.toml +0 -0
  176. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/python/cutmg.py +0 -0
  177. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/python/lset_smoothblend.py +0 -0
  178. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/python/lset_spacetime.py +0 -0
  179. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/python/lsetcurv.py +0 -0
  180. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/python/mlset.py +0 -0
  181. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/python/ngs_check.py +0 -0
  182. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/python/python_ngsxfem.cpp +0 -0
  183. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/python/utils.py +0 -0
  184. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/spacetime/SpaceTimeFE.cpp +0 -0
  185. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/spacetime/SpaceTimeFE.hpp +0 -0
  186. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/spacetime/SpaceTimeFESpace.cpp +0 -0
  187. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/spacetime/SpaceTimeFESpace.hpp +0 -0
  188. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/spacetime/diffopDt.cpp +0 -0
  189. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/spacetime/diffopDt.hpp +0 -0
  190. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/spacetime/diffopFixt.cpp +0 -0
  191. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/spacetime/diffopFixt.hpp +0 -0
  192. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/spacetime/python_spacetime.cpp +0 -0
  193. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/spacetime/spacetime_vtk.cpp +0 -0
  194. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/spacetime/spacetime_vtk.hpp +0 -0
  195. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/spacetime/timecf.cpp +0 -0
  196. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/spacetime/timecf.hpp +0 -0
  197. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/tests/CMakeLists.txt +0 -0
  198. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/tests/ngsxfem_report.py +0 -0
  199. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/tests/pytests/test_aggregates.py +0 -0
  200. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/tests/pytests/test_backuprule.py +0 -0
  201. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/tests/pytests/test_bndcut.py +0 -0
  202. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/tests/pytests/test_calc_linearized.py +0 -0
  203. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/tests/pytests/test_differential_symbol.py +0 -0
  204. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/tests/pytests/test_elementlayers.py +0 -0
  205. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/tests/pytests/test_intcurved.py +0 -0
  206. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/tests/pytests/test_local_solve.py +0 -0
  207. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/tests/pytests/test_localgeom.py +0 -0
  208. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/tests/pytests/test_lsetcurv_boundary.py +0 -0
  209. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/tests/pytests/test_memory_usage.py +0 -0
  210. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/tests/pytests/test_mlset_integration.py +0 -0
  211. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/tests/pytests/test_mlset_module_functionality.py +0 -0
  212. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/tests/pytests/test_mlset_poisson.py +0 -0
  213. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/tests/pytests/test_navier_stokes_2d1.py +0 -0
  214. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/tests/pytests/test_ngsolve_version.py +0 -0
  215. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/tests/pytests/test_nonlin.py +0 -0
  216. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/tests/pytests/test_num_nxfem.py +0 -0
  217. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/tests/pytests/test_nxfem.py +0 -0
  218. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/tests/pytests/test_quadchallenges.py +0 -0
  219. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/tests/pytests/test_shifteval.py +0 -0
  220. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/tests/pytests/test_shifteval_simd.py +0 -0
  221. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/tests/pytests/test_simd_cutint.py +0 -0
  222. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/tests/pytests/test_simd_lf_blf.py +0 -0
  223. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/tests/pytests/test_spacetime_lsetcurv.py +0 -0
  224. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/tests/pytests/test_spacetime_set.py +0 -0
  225. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/tests/pytests/test_spacetime_vecH1.py +0 -0
  226. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/tests/pytests/test_spacetime_vtk.py +0 -0
  227. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/tests/pytests/test_spacetimecutrule.py +0 -0
  228. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/tests/pytests/test_straightcutrule.py +0 -0
  229. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/tests/pytests/test_utils.py +0 -0
  230. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/tests/pytests/test_xfes_ndof.py +0 -0
  231. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/utils/bitarraycf.cpp +0 -0
  232. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/utils/bitarraycf.hpp +0 -0
  233. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/utils/p1interpol.cpp +0 -0
  234. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/utils/p1interpol.hpp +0 -0
  235. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/utils/restrictedblf.cpp +0 -0
  236. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/utils/restrictedblf.hpp +0 -0
  237. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/utils/restrictedfespace.hpp +0 -0
  238. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/utils/spacetimechecks.hpp +0 -0
  239. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/utils/xprolongation.cpp +0 -0
  240. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/utils/xprolongation.hpp +0 -0
  241. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/xfem/aggregates.cpp +0 -0
  242. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/xfem/aggregates.hpp +0 -0
  243. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/xfem/cutinfo.cpp +0 -0
  244. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/xfem/cutinfo.hpp +0 -0
  245. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/xfem/ghostpenalty.cpp +0 -0
  246. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/xfem/ghostpenalty.hpp +0 -0
  247. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/xfem/python_xfem.cpp +0 -0
  248. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/xfem/sFESpace.cpp +0 -0
  249. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/xfem/sFESpace.hpp +0 -0
  250. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/xfem/symboliccutbfi.cpp +0 -0
  251. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/xfem/symboliccutbfi.hpp +0 -0
  252. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/xfem/symboliccutlfi.cpp +0 -0
  253. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/xfem/symboliccutlfi.hpp +0 -0
  254. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/xfem/xFESpace.cpp +0 -0
  255. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/xfem/xFESpace.hpp +0 -0
  256. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/xfem/xfemdiffops.cpp +0 -0
  257. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/xfem/xfemdiffops.hpp +0 -0
  258. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/xfem/xfiniteelement.cpp +0 -0
  259. {xfem-2.1.2607.dev10 → xfem-2.1.2607.dev14}/xfem/xfiniteelement.hpp +0 -0
@@ -29,7 +29,7 @@ else()
29
29
  endif()
30
30
 
31
31
  set(XFEM_INSTALL_DIR_PYTHON ${ADDON_INSTALL_DIR_PYTHON})
32
- set(XFEM_INSTALL_DIR_INCLUDE ${ADDON_INSTALL_DIR_INCLUDE})
32
+ set(XFEM_INSTALL_DIR_INCLUDE ${XFEM_INSTALL_DIR_PYTHON}/xfem/include)
33
33
  set(XFEM_INSTALL_DIR_RES ${ADDON_INSTALL_DIR_RES})
34
34
 
35
35
  add_definitions(-DNGSXFEM_VERSION="${NGSXFEM_VERSION}")
@@ -64,3 +64,17 @@ and open a browser on your host machine (not in the docker) and paste in the URL
64
64
  ```
65
65
  docker run -p 8888:8888 -v ${PWD}:/home/jovyan ngsxfem/ngsxfem-jupyter
66
66
  ```
67
+
68
+ ## Using the C++ core
69
+
70
+ The installation includes the shared C++ library, headers, and CMake package.
71
+ In your CMake project, you can use
72
+ ```cmake
73
+ execute_process(COMMAND ${Python3_EXECUTABLE} -m xfem.config OUTPUT_VARIABLE xfem_DIR OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET)
74
+ ```
75
+ to locate the `xfem` package or use `-Dxfem_DIR=<that directory>`. Then link the exported target
76
+ ```cmake
77
+ find_package(xfem CONFIG REQUIRED)
78
+ target_link_libraries(my_target PRIVATE xfem::core)
79
+ ```
80
+ Headers keep the source directory layout, e.g. `#include <xfem/aggregates.hpp>` and `#include <cutint/lsetintdomain.hpp>`.
@@ -0,0 +1,10 @@
1
+ @PACKAGE_INIT@
2
+
3
+ include(CMakeFindDependencyMacro)
4
+ find_dependency(Python3 COMPONENTS Interpreter Development.Module)
5
+
6
+ if(NOT NGSolve_DIR)
7
+ execute_process(COMMAND "${Python3_EXECUTABLE}" -m ngsolve.config OUTPUT_VARIABLE NGSolve_DIR OUTPUT_STRIP_TRAILING_WHITESPACE)
8
+ endif()
9
+ find_dependency(NGSolve CONFIG)
10
+ include("${CMAKE_CURRENT_LIST_DIR}/@NGSOLVE_ADDON_PACKAGE@Targets.cmake")
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: xfem
3
- Version: 2.1.2607.dev10
3
+ Version: 2.1.2607.dev14
4
4
  Summary: (ngs)xfem is an Add-on library to Netgen/NGSolve for unfitted/cut FEM.
5
5
  Author-Email: Christoph Lehrenfeld <lehrenfeld@math.uni-goettingen.de>
6
6
  Classifier: License :: OSI Approved :: GNU Lesser General Public License v3 (LGPLv3)
@@ -2,6 +2,6 @@ install( FILES
2
2
  cutintegral.hpp fieldeval.hpp lsetintdomain.hpp
3
3
  mlsetintegration.hpp spacetimecutrule.hpp
4
4
  straightcutrule.hpp xdecompose.hpp xintegration.hpp
5
- DESTINATION ${XFEM_INSTALL_DIR_INCLUDE}
5
+ DESTINATION ${XFEM_INSTALL_DIR_INCLUDE}/cutint
6
6
  )
7
7
 
@@ -172,132 +172,4 @@ namespace xintegration
172
172
  }
173
173
 
174
174
 
175
- typedef CoefficientFunction CF;
176
- typedef GridFunction GF;
177
-
178
- shared_ptr<LevelsetIntegrationDomain> PyDict2LevelsetIntegrationDomain(py::dict dictionary)
179
- {
180
- if (!dictionary.contains("levelset"))
181
- throw Exception("You need to provide (a) levelset(s).");
182
-
183
- if (!dictionary.contains("domain_type"))
184
- throw Exception("You need to provide (a) domain type(s).");
185
-
186
- optional<double> tref = nullopt;
187
-
188
- if (dictionary.contains("tref"))
189
- tref = py::cast<double>(dictionary["tref"]);
190
-
191
- py::object lset = dictionary["levelset"];
192
- py::object dt_in = dictionary["domain_type"];
193
-
194
- int subdivlvl = 0;
195
- if (dictionary.contains("subdivlvl"))
196
- {
197
- auto subdivlvl_ = py::extract<int>(dictionary["subdivlvl"]);
198
- if (!subdivlvl_.check())
199
- throw Exception("data type for subdivlvl not admissible.");
200
- subdivlvl = subdivlvl_();
201
- }
202
-
203
- int order = -1;
204
- if (dictionary.contains("order"))
205
- {
206
- auto order_ = py::extract<int>(dictionary["order"]);
207
- if (!order_.check())
208
- throw Exception("data type for order not admissible.");
209
- order = order_();
210
- }
211
-
212
- int time_order = -1;
213
- if (dictionary.contains("time_order"))
214
- {
215
- auto time_order_ = py::extract<int>(dictionary["time_order"]);
216
- if (!time_order_.check())
217
- throw Exception("data type for time_order not admissible.");
218
- time_order= time_order_();
219
- }
220
-
221
- SWAP_DIMENSIONS_POLICY quad_dir_policy = FIND_OPTIMAL;
222
- if (dictionary.contains("quad_dir_policy"))
223
- {
224
- auto quad_dir_policy_ = py::extract<SWAP_DIMENSIONS_POLICY>(dictionary["quad_dir_policy"]);
225
- if (!quad_dir_policy_.check())
226
- throw Exception("data type for quad_dir_policy not admissible.");
227
- quad_dir_policy = quad_dir_policy_();
228
- }
229
-
230
- if (py::extract<DOMAIN_TYPE> (dt_in).check())
231
- {
232
- py::extract<shared_ptr<CF>> pycf(lset);
233
- py::extract<int> dt(dt_in);
234
- if (!dt.check())
235
- throw Exception("dt is not a domain type");
236
- shared_ptr<GridFunction> gf_lset = nullptr;
237
- shared_ptr<CoefficientFunction> cf_lset = nullptr;
238
- tie(cf_lset,gf_lset) = CF2GFForStraightCutRule(pycf(),subdivlvl);
239
- return make_shared<LevelsetIntegrationDomain>(cf_lset,gf_lset,DOMAIN_TYPE(dt()),order,time_order,subdivlvl,quad_dir_policy,tref);
240
- }
241
- else
242
- {
243
- if (subdivlvl > 0)
244
- throw Exception("multi level sets don't work with subdivlvl > 0");
245
- if (time_order > -1)
246
- throw Exception("multi level sets don't work with time_order > 0");
247
-
248
- py::extract<py::tuple> lset_tuple_(lset);
249
- if (!lset_tuple_.check())
250
- throw Exception("lset is neither a level set nor a tuple ... need new candidates..");
251
- py::tuple lset_tuple(lset_tuple_());
252
- for (int i = 0; i < py::len(lset_tuple); i++)
253
- if (!(py::extract<shared_ptr<GridFunction>>(lset_tuple[i]).check()))
254
- throw Exception("lsets need to be GridFunctions!");
255
-
256
- Array<shared_ptr<GridFunction>> gf_lsets;
257
- gf_lsets = makeCArray<shared_ptr<GridFunction>> (lset_tuple);
258
-
259
-
260
- if (py::isinstance<py::tuple>(dt_in))
261
- {
262
- Array<DOMAIN_TYPE> dts_ = makeCArray<DOMAIN_TYPE> (py::extract<py::tuple>(dt_in)());
263
- Array<Array<DOMAIN_TYPE>> dts(1);
264
- dts[0] = dts_;
265
- return make_shared<LevelsetIntegrationDomain>(gf_lsets,dts,order,time_order,subdivlvl,quad_dir_policy,tref);
266
- }
267
-
268
- py::list dts_list;
269
- if (py::hasattr(dt_in, "as_list") && py::isinstance<py::list>(dt_in.attr("as_list")))
270
- dts_list = dt_in.attr("as_list");
271
- else if (py::isinstance<py::list>(dt_in))
272
- dts_list = dt_in;
273
- else
274
- throw Exception("domain_type is neither a tuple nor a list nor a DomainTypeArray.");
275
-
276
- Array<Array<DOMAIN_TYPE>> dtas(py::len(dts_list));
277
- int common_length = -1; //not a list
278
- for (int i = 0; i < py::len(dts_list); i++)
279
- {
280
- auto dta(dts_list[i]);
281
-
282
- // Check for valid input
283
- if (!py::isinstance<py::tuple>(dta))
284
- {
285
- throw Exception("domain_type arrays are incompatible. Maybe you used a list instead of a tuple?");
286
- }
287
- else
288
- {
289
- if ((i>0) && (common_length != py::len(dta)))
290
- throw Exception("domain_type arrays have different length");
291
- else
292
- common_length = py::len(dta);
293
- }
294
-
295
- // Input valid. Pass input on
296
- dtas[i] = makeCArray<DOMAIN_TYPE> (dta);
297
- }
298
-
299
- return make_shared<LevelsetIntegrationDomain>(gf_lsets,dtas,order,time_order,subdivlvl,quad_dir_policy,tref);
300
- }
301
- }
302
-
303
175
  } // end of namespace
@@ -1,6 +1,5 @@
1
1
  #pragma once
2
2
  #include "../utils/ngsxstd.hpp"
3
- #include <python_ngstd.hpp>
4
3
 
5
4
  using namespace ngfem;
6
5
  using namespace ngcomp;
@@ -169,7 +168,6 @@ namespace xintegration
169
168
 
170
169
  std::tuple<shared_ptr<CoefficientFunction>,shared_ptr<GridFunction>> CF2GFForStraightCutRule(shared_ptr<CoefficientFunction> cflset, int subdivlvl = 0);
171
170
 
172
- shared_ptr<LevelsetIntegrationDomain> PyDict2LevelsetIntegrationDomain(py::dict dictionary);
173
171
 
174
172
 
175
173
  }
@@ -14,7 +14,137 @@ using namespace xintegration;
14
14
 
15
15
  typedef CoefficientFunction CF;
16
16
  typedef GridFunction GF;
17
-
17
+
18
+ namespace xintegration
19
+ {
20
+ typedef CoefficientFunction CF;
21
+ typedef GridFunction GF;
22
+
23
+ shared_ptr<LevelsetIntegrationDomain> PyDict2LevelsetIntegrationDomain(py::dict dictionary)
24
+ {
25
+ if (!dictionary.contains("levelset"))
26
+ throw Exception("You need to provide (a) levelset(s).");
27
+
28
+ if (!dictionary.contains("domain_type"))
29
+ throw Exception("You need to provide (a) domain type(s).");
30
+
31
+ optional<double> tref = nullopt;
32
+
33
+ if (dictionary.contains("tref"))
34
+ tref = py::cast<double>(dictionary["tref"]);
35
+
36
+ py::object lset = dictionary["levelset"];
37
+ py::object dt_in = dictionary["domain_type"];
38
+
39
+ int subdivlvl = 0;
40
+ if (dictionary.contains("subdivlvl"))
41
+ {
42
+ auto subdivlvl_ = py::extract<int>(dictionary["subdivlvl"]);
43
+ if (!subdivlvl_.check())
44
+ throw Exception("data type for subdivlvl not admissible.");
45
+ subdivlvl = subdivlvl_();
46
+ }
47
+
48
+ int order = -1;
49
+ if (dictionary.contains("order"))
50
+ {
51
+ auto order_ = py::extract<int>(dictionary["order"]);
52
+ if (!order_.check())
53
+ throw Exception("data type for order not admissible.");
54
+ order = order_();
55
+ }
56
+
57
+ int time_order = -1;
58
+ if (dictionary.contains("time_order"))
59
+ {
60
+ auto time_order_ = py::extract<int>(dictionary["time_order"]);
61
+ if (!time_order_.check())
62
+ throw Exception("data type for time_order not admissible.");
63
+ time_order= time_order_();
64
+ }
65
+
66
+ SWAP_DIMENSIONS_POLICY quad_dir_policy = FIND_OPTIMAL;
67
+ if (dictionary.contains("quad_dir_policy"))
68
+ {
69
+ auto quad_dir_policy_ = py::extract<SWAP_DIMENSIONS_POLICY>(dictionary["quad_dir_policy"]);
70
+ if (!quad_dir_policy_.check())
71
+ throw Exception("data type for quad_dir_policy not admissible.");
72
+ quad_dir_policy = quad_dir_policy_();
73
+ }
74
+
75
+ if (py::extract<DOMAIN_TYPE> (dt_in).check())
76
+ {
77
+ py::extract<shared_ptr<CF>> pycf(lset);
78
+ py::extract<int> dt(dt_in);
79
+ if (!dt.check())
80
+ throw Exception("dt is not a domain type");
81
+ shared_ptr<GridFunction> gf_lset = nullptr;
82
+ shared_ptr<CoefficientFunction> cf_lset = nullptr;
83
+ tie(cf_lset,gf_lset) = CF2GFForStraightCutRule(pycf(),subdivlvl);
84
+ return make_shared<LevelsetIntegrationDomain>(cf_lset,gf_lset,DOMAIN_TYPE(dt()),order,time_order,subdivlvl,quad_dir_policy,tref);
85
+ }
86
+ else
87
+ {
88
+ if (subdivlvl > 0)
89
+ throw Exception("multi level sets don't work with subdivlvl > 0");
90
+ if (time_order > -1)
91
+ throw Exception("multi level sets don't work with time_order > 0");
92
+
93
+ py::extract<py::tuple> lset_tuple_(lset);
94
+ if (!lset_tuple_.check())
95
+ throw Exception("lset is neither a level set nor a tuple ... need new candidates..");
96
+ py::tuple lset_tuple(lset_tuple_());
97
+ for (int i = 0; i < py::len(lset_tuple); i++)
98
+ if (!(py::extract<shared_ptr<GridFunction>>(lset_tuple[i]).check()))
99
+ throw Exception("lsets need to be GridFunctions!");
100
+
101
+ Array<shared_ptr<GridFunction>> gf_lsets;
102
+ gf_lsets = makeCArray<shared_ptr<GridFunction>> (lset_tuple);
103
+
104
+
105
+ if (py::isinstance<py::tuple>(dt_in))
106
+ {
107
+ Array<DOMAIN_TYPE> dts_ = makeCArray<DOMAIN_TYPE> (py::extract<py::tuple>(dt_in)());
108
+ Array<Array<DOMAIN_TYPE>> dts(1);
109
+ dts[0] = dts_;
110
+ return make_shared<LevelsetIntegrationDomain>(gf_lsets,dts,order,time_order,subdivlvl,quad_dir_policy,tref);
111
+ }
112
+
113
+ py::list dts_list;
114
+ if (py::hasattr(dt_in, "as_list") && py::isinstance<py::list>(dt_in.attr("as_list")))
115
+ dts_list = dt_in.attr("as_list");
116
+ else if (py::isinstance<py::list>(dt_in))
117
+ dts_list = dt_in;
118
+ else
119
+ throw Exception("domain_type is neither a tuple nor a list nor a DomainTypeArray.");
120
+
121
+ Array<Array<DOMAIN_TYPE>> dtas(py::len(dts_list));
122
+ int common_length = -1; //not a list
123
+ for (int i = 0; i < py::len(dts_list); i++)
124
+ {
125
+ auto dta(dts_list[i]);
126
+
127
+ // Check for valid input
128
+ if (!py::isinstance<py::tuple>(dta))
129
+ {
130
+ throw Exception("domain_type arrays are incompatible. Maybe you used a list instead of a tuple?");
131
+ }
132
+ else
133
+ {
134
+ if ((i>0) && (common_length != py::len(dta)))
135
+ throw Exception("domain_type arrays have different length");
136
+ else
137
+ common_length = py::len(dta);
138
+ }
139
+
140
+ // Input valid. Pass input on
141
+ dtas[i] = makeCArray<DOMAIN_TYPE> (dta);
142
+ }
143
+
144
+ return make_shared<LevelsetIntegrationDomain>(gf_lsets,dtas,order,time_order,subdivlvl,quad_dir_policy,tref);
145
+ }
146
+ }
147
+ } // end of namespace
18
148
 
19
149
  void ExportNgsx_cutint(py::module &m)
20
150
  {
@@ -1,6 +1,6 @@
1
1
  install( FILES
2
2
  shiftintegrators.hpp calcpointshift.hpp lsetrefine.hpp
3
3
  projshift.hpp shiftedevaluate.hpp
4
- DESTINATION ${XFEM_INSTALL_DIR_INCLUDE}
4
+ DESTINATION ${XFEM_INSTALL_DIR_INCLUDE}/lsetcurving
5
5
  )
6
6
 
@@ -4,6 +4,7 @@
4
4
  # Don't change anything here (unless you know what you are doing!)
5
5
  ###############################################################################
6
6
  set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
7
+ set(_NGSOLVE_ADDON_HELPER_DIR "${CMAKE_CURRENT_LIST_DIR}")
7
8
 
8
9
  # Set default build type to RelWithDebInfo
9
10
  if(NOT CMAKE_BUILD_TYPE)
@@ -31,7 +32,7 @@ macro(add_ngsolve_addon module_name)
31
32
  add_library(${module_name} SHARED ${ARGN})
32
33
  target_include_directories(${module_name} BEFORE PRIVATE $<TARGET_PROPERTY:ngsolve,INTERFACE_INCLUDE_DIRECTORIES>)
33
34
  target_link_libraries(${module_name} PUBLIC ngsolve Python3::Module)
34
- set_target_properties(${module_name} PROPERTIES PREFIX "" CXX_STANDARD 20)
35
+ set_target_properties(${module_name} PROPERTIES PREFIX "" CXX_STANDARD 17)
35
36
 
36
37
  # Python does not recognize .dll (Windows) and .dylib (MacOS) file endings as modules
37
38
  if(WIN32)
@@ -92,17 +93,67 @@ else()
92
93
  set(ADDON_INSTALL_DIR_CMAKE ${NETGEN_INSTALL_DIR_CMAKE})
93
94
  endif()
94
95
 
96
+ function(ngsolve_addon_set_relative_rpath target)
97
+ if(APPLE)
98
+ set(_origin "@loader_path")
99
+ elseif(UNIX)
100
+ set(_origin "\$ORIGIN")
101
+ endif()
102
+ if(_origin)
103
+ foreach(_path ${ARGN})
104
+ list(APPEND _rpaths "${_origin}/${_path}")
105
+ endforeach()
106
+ set_target_properties(${target} PROPERTIES INSTALL_RPATH "${_rpaths}" BUILD_RPATH_USE_ORIGIN TRUE)
107
+ endif()
108
+ endfunction()
109
+
110
+ function(add_ngsolve_addon_library target)
111
+ include(CMakePackageConfigHelpers)
112
+ cmake_parse_arguments(ARG "" "PACKAGE;EXPORT_NAME"
113
+ "SOURCES;PUBLIC_HEADERS" ${ARGN})
114
+ if(NOT ARG_EXPORT_NAME)
115
+ set(ARG_EXPORT_NAME "${target}")
116
+ endif()
117
+ if(SKBUILD)
118
+ set(_package_destination "${ARG_PACKAGE}")
119
+ else()
120
+ set(_package_destination "${ADDON_INSTALL_DIR_PYTHON}/${ARG_PACKAGE}")
121
+ endif()
122
+ set(_cmake_destination "${_package_destination}/cmake")
123
+
124
+ add_library(${target} SHARED ${ARG_SOURCES})
125
+ add_library(${ARG_PACKAGE}::${ARG_EXPORT_NAME} ALIAS ${target})
126
+ target_include_directories(${target} BEFORE PRIVATE $<TARGET_PROPERTY:ngsolve,INTERFACE_INCLUDE_DIRECTORIES>)
127
+ target_include_directories(${target} PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}> $<INSTALL_INTERFACE:${_package_destination}/include>)
128
+ target_link_libraries(${target} PUBLIC ngsolve Python3::Module)
129
+ set_target_properties(${target} PROPERTIES CXX_STANDARD 17 EXPORT_NAME "${ARG_EXPORT_NAME}" MACOSX_RPATH TRUE)
130
+ if(SKBUILD AND NOT WIN32)
131
+ file(RELATIVE_PATH _ngsolve_lib "/${NGSOLVE_INSTALL_DIR_PYTHON}/${ARG_PACKAGE}" "/${NGSOLVE_INSTALL_DIR_LIB}")
132
+ ngsolve_addon_set_relative_rpath(${target} "${_ngsolve_lib}")
133
+ elseif(NOT WIN32)
134
+ set_target_properties(${target} PROPERTIES INSTALL_RPATH "${NGSOLVE_LIBRARY_DIR}")
135
+ endif()
136
+
137
+ install(TARGETS ${target} EXPORT ${ARG_PACKAGE}-targets RUNTIME DESTINATION "${_package_destination}" LIBRARY DESTINATION "${_package_destination}" ARCHIVE DESTINATION "${_package_destination}")
138
+ install(FILES ${ARG_PUBLIC_HEADERS} DESTINATION "${_package_destination}/include/${ARG_PACKAGE}")
139
+ install(EXPORT ${ARG_PACKAGE}-targets FILE "${ARG_PACKAGE}Targets.cmake" NAMESPACE "${ARG_PACKAGE}::" DESTINATION "${_cmake_destination}")
140
+
141
+ set(NGSOLVE_ADDON_PACKAGE "${ARG_PACKAGE}")
142
+ configure_package_config_file( "${_NGSOLVE_ADDON_HELPER_DIR}/NGSolveAddonConfig.cmake.in" "${CMAKE_CURRENT_BINARY_DIR}/${ARG_PACKAGE}Config.cmake" INSTALL_DESTINATION "${_cmake_destination}")
143
+ set(_version "${SKBUILD_PROJECT_VERSION_FULL}")
144
+ if(NOT _version)
145
+ set(_version "${PROJECT_VERSION}")
146
+ endif()
147
+ set(_config_files "${CMAKE_CURRENT_BINARY_DIR}/${ARG_PACKAGE}Config.cmake")
148
+ if(_version)
149
+ write_basic_package_version_file( "${CMAKE_CURRENT_BINARY_DIR}/${ARG_PACKAGE}ConfigVersion.cmake" VERSION "${_version}" COMPATIBILITY SameMajorVersion)
150
+ list(APPEND _config_files "${CMAKE_CURRENT_BINARY_DIR}/${ARG_PACKAGE}ConfigVersion.cmake")
151
+ endif()
152
+ install(FILES ${_config_files} DESTINATION "${_cmake_destination}")
153
+ endfunction()
154
+
95
155
  macro(ngsolve_generate_stub_files module_name)
96
- # Set PYTHONPATH so pybind11_stubgen can import the addon module, and
97
- # propagate LD_LIBRARY_PATH so its native .so can load ngsolve shared libs.
98
- set(stubgen_generation_code "
99
- set(ENV{PYTHONPATH} \"${stubgen_working_dir}\")
100
- set(ENV{LD_LIBRARY_PATH} \"${NETGEN_DIR}/${NETGEN_INSTALL_DIR_LIB}:$ENV{LD_LIBRARY_PATH}\")
101
- execute_process(
102
- WORKING_DIRECTORY \"${stubgen_working_dir}\"
103
- COMMAND \"${Python3_EXECUTABLE}\" -m pybind11_stubgen --ignore-all-errors
104
- -o \"${CMAKE_CURRENT_BINARY_DIR}/stubs\" ${module_name}
105
- )")
156
+ set(stubgen_generation_code "execute_process(WORKING_DIRECTORY ${stubgen_working_dir} COMMAND ${Python3_EXECUTABLE} -m pybind11_stubgen --ignore-all-errors -o ${CMAKE_CURRENT_BINARY_DIR}/stubs ${module_name})")
106
157
  set(stubgen_directory "${CMAKE_CURRENT_BINARY_DIR}/stubs/${module_name}/")
107
158
  set(stubgen_file "${CMAKE_CURRENT_BINARY_DIR}/stubs/${module_name}.pyi")
108
159
  set(stubgen_install_destination ${ADDON_INSTALL_DIR_PYTHON}/${module_name}/)
@@ -1,5 +1,7 @@
1
- target_sources(xfem PRIVATE
2
- python_ngsxfem.cpp
1
+ add_ngsolve_addon_library(xfem_core
2
+ PACKAGE xfem
3
+ EXPORT_NAME core
4
+ SOURCES
3
5
  ../cutint/lsetintdomain.cpp
4
6
  ../cutint/fieldeval.cpp
5
7
  ../cutint/spacetimecutrule.cpp
@@ -13,7 +15,6 @@ target_sources(xfem PRIVATE
13
15
  ../lsetcurving/projshift.cpp
14
16
  ../lsetcurving/shiftedevaluate.cpp
15
17
  ../lsetcurving/shiftintegrators.cpp
16
- ../python/python_ngsxfem.cpp
17
18
  ../spacetime/diffopDt.cpp
18
19
  ../spacetime/diffopFixt.cpp
19
20
  ../spacetime/SpaceTimeFE.cpp
@@ -36,8 +37,17 @@ target_sources(xfem PRIVATE
36
37
  ../xfem/xfiniteelement.cpp
37
38
  ../xfem/aggregates.cpp
38
39
  )
40
+ target_include_directories(xfem_core PUBLIC $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}>)
41
+ target_compile_definitions(xfem_core PRIVATE NGSXFEM_EXPORTS
42
+ PUBLIC $<$<BOOL:${SPACETIME_SANITY_CHECKS}>:SPACETIME_SANITY_CHECKS>)
43
+ set_target_properties(xfem_core PROPERTIES WINDOWS_EXPORT_ALL_SYMBOLS ON)
44
+
45
+ target_sources(xfem PRIVATE python_ngsxfem.cpp)
46
+ target_link_libraries(xfem PRIVATE xfem_core)
47
+ ngsolve_addon_set_relative_rpath(xfem ".")
48
+
39
49
  install (FILES
40
- __init__.py cutmg.py mlset.py lset_spacetime.py lset_smoothblend.py lsetcurv.py utils.py ngs_check.py _version.py
50
+ __init__.py config.py cutmg.py mlset.py lset_spacetime.py lset_smoothblend.py lsetcurv.py utils.py ngs_check.py _version.py
41
51
  DESTINATION ${XFEM_INSTALL_DIR_PYTHON}/xfem
42
52
  COMPONENT xfem
43
53
  )
@@ -12,7 +12,12 @@ xfem.mlset ... multiple level sets
12
12
  xfem.utils ... some example level set geometries
13
13
  """
14
14
 
15
+ import os
16
+ import sys
15
17
 
18
+ if sys.platform.startswith("win"):
19
+ _dll_directory = os.add_dll_directory(os.path.dirname(__file__))
20
+ del os, sys
16
21
 
17
22
  from ngsolve import (L2, VOL, BitArray, CoefficientFunction, FESpace,
18
23
  GridFunction, H1, IfPos, LinearForm, Parameter, dx)
@@ -18,7 +18,7 @@ version_tuple: tuple[int | str, ...]
18
18
  commit_id: str | None
19
19
  __commit_id__: str | None
20
20
 
21
- __version__ = version = '2.1.2607.dev10'
22
- __version_tuple__ = version_tuple = (2, 1, 2607, 'dev10')
21
+ __version__ = version = '2.1.2607.dev14'
22
+ __version_tuple__ = version_tuple = (2, 1, 2607, 'dev14')
23
23
 
24
- __commit_id__ = commit_id = 'g4c1bbbdda'
24
+ __commit_id__ = commit_id = 'g0868c6fbd'
@@ -0,0 +1,13 @@
1
+ from pathlib import Path
2
+
3
+ def get_cmake_dir():
4
+ return str(Path(__file__).resolve().parent / "cmake")
5
+
6
+ def get_include_dir():
7
+ return str(Path(__file__).resolve().parent / "include")
8
+
9
+ def get_library_dir():
10
+ return str(Path(__file__).resolve().parent)
11
+
12
+ if __name__ == "__main__":
13
+ print(get_cmake_dir())
@@ -5,6 +5,6 @@ install( FILES
5
5
  diffopFixt.hpp
6
6
  timecf.hpp
7
7
  spacetime_vtk.hpp
8
- DESTINATION ${XFEM_INSTALL_DIR_INCLUDE}
8
+ DESTINATION ${XFEM_INSTALL_DIR_INCLUDE}/spacetime
9
9
  )
10
10
 
@@ -6,5 +6,5 @@ install( FILES
6
6
  ngsxstd.hpp
7
7
  spacetimechecks.hpp
8
8
  bitarraycf.hpp
9
- DESTINATION ${XFEM_INSTALL_DIR_INCLUDE}
9
+ DESTINATION ${XFEM_INSTALL_DIR_INCLUDE}/utils
10
10
  )
@@ -57,7 +57,7 @@ ostream & operator<< (ostream & ost, COMBINED_DOMAIN_TYPE cdt)
57
57
  return ost;
58
58
  }
59
59
 
60
- //GlobalNgsxfemVariables globxvar;
60
+ GlobalNgsxfemVariables globxvar;
61
61
 
62
62
  GlobalNgsxfemVariables::GlobalNgsxfemVariables() {
63
63
  SetDefaults();
@@ -7,6 +7,16 @@
7
7
 
8
8
  using namespace ngbla;
9
9
 
10
+ #ifdef _WIN32
11
+ #ifdef NGSXFEM_EXPORTS
12
+ #define NGSXFEM_API __declspec(dllexport)
13
+ #else
14
+ #define NGSXFEM_API __declspec(dllimport)
15
+ #endif
16
+ #else
17
+ #define NGSXFEM_API
18
+ #endif
19
+
10
20
  enum SWAP_DIMENSIONS_POLICY {FIRST_ALLOWED, FIND_OPTIMAL, ALWAYS_NONE};
11
21
 
12
22
  // /// domain types: two domains: POS/NEG and the diving interface IF
@@ -120,4 +130,4 @@ public:
120
130
  void Output();
121
131
  };
122
132
 
123
- extern GlobalNgsxfemVariables globxvar;
133
+ extern NGSXFEM_API GlobalNgsxfemVariables globxvar;
@@ -13,8 +13,6 @@
13
13
  #include "../utils/restrictedfespace.hpp"
14
14
  #include "../utils/ngsxstd.hpp"
15
15
 
16
- GlobalNgsxfemVariables globxvar;
17
-
18
16
  using namespace ngcomp;
19
17
  typedef BitArray BA;
20
18
 
@@ -198,7 +198,7 @@ namespace ngfem
198
198
  // LocalHeap & lh) const
199
199
  {
200
200
  if (fel.GetNDof() == 0)
201
- flux.AddSize(fel.GetNDof(),diffop->Dim()) = 0.0;
201
+ flux.AddSize(diffop->Dim(), mir.Size()) = 0.0;
202
202
  else
203
203
  diffop->Apply(fel, mir, x, flux);
204
204
  }
@@ -211,7 +211,7 @@ namespace ngfem
211
211
  // LocalHeap & lh) const
212
212
  {
213
213
  if (fel.GetNDof() == 0)
214
- flux.AddSize(fel.GetNDof(),diffop->Dim()) = 0.0;
214
+ flux.AddSize(diffop->Dim(), mir.Size()) = 0.0;
215
215
  else
216
216
  diffop->Apply(fel, mir, x, flux);
217
217
  }
@@ -8,6 +8,6 @@ install( FILES
8
8
  xfiniteelement.hpp
9
9
  symboliccutbfi.hpp
10
10
  symboliccutlfi.hpp
11
- DESTINATION ${XFEM_INSTALL_DIR_INCLUDE}
11
+ DESTINATION ${XFEM_INSTALL_DIR_INCLUDE}/xfem
12
12
  )
13
13
 
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes