netgen-mesher 6.2.2506__cp313-cp313-win_amd64.whl → 6.2.2506.post31.dev0__cp313-cp313-win_amd64.whl

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 (132) hide show
  1. netgen/__init__.pyi +1 -1
  2. netgen/cmake/NetgenConfig.cmake +4 -3
  3. netgen/config/__init__.pyi +6 -6
  4. netgen/config/config.py +5 -5
  5. netgen/config/config.pyi +6 -6
  6. netgen/include/core/archive.hpp +16 -3
  7. netgen/include/core/flags.hpp +1 -1
  8. netgen/include/core/memtracer.hpp +1 -1
  9. netgen/include/core/ngcore.hpp +5 -0
  10. netgen/include/core/register_archive.hpp +8 -0
  11. netgen/include/core/simd_arm64.hpp +13 -4
  12. netgen/include/core/simd_math.hpp +3 -2
  13. netgen/include/core/statushandler.hpp +37 -0
  14. netgen/include/include/netgen_version.hpp +3 -3
  15. netgen/include/meshing/basegeom.hpp +1 -4
  16. netgen/include/meshing/global.hpp +0 -17
  17. netgen/include/meshing/hpref_tet.hpp +41 -0
  18. netgen/include/meshing/hprefinement.hpp +2 -0
  19. netgen/include/meshing/msghandler.hpp +9 -6
  20. netgen/include/nginterface.h +3 -2
  21. netgen/include/occ/occ_utils.hpp +14 -0
  22. netgen/include/occ/occgeom.hpp +8 -0
  23. netgen/include/pybind11/attr.h +40 -8
  24. netgen/include/pybind11/buffer_info.h +14 -14
  25. netgen/include/pybind11/cast.h +553 -29
  26. netgen/include/pybind11/chrono.h +4 -1
  27. netgen/include/pybind11/conduit/README.txt +15 -0
  28. netgen/include/pybind11/conduit/pybind11_conduit_v1.h +116 -0
  29. netgen/include/pybind11/conduit/pybind11_platform_abi_id.h +87 -0
  30. netgen/include/pybind11/conduit/wrap_include_python_h.h +72 -0
  31. netgen/include/pybind11/critical_section.h +56 -0
  32. netgen/include/pybind11/detail/class.h +172 -97
  33. netgen/include/pybind11/detail/common.h +270 -189
  34. netgen/include/pybind11/detail/cpp_conduit.h +75 -0
  35. netgen/include/pybind11/detail/descr.h +55 -0
  36. netgen/include/pybind11/detail/dynamic_raw_ptr_cast_if_possible.h +39 -0
  37. netgen/include/pybind11/detail/exception_translation.h +71 -0
  38. netgen/include/pybind11/detail/function_record_pyobject.h +191 -0
  39. netgen/include/pybind11/detail/init.h +113 -9
  40. netgen/include/pybind11/detail/internals.h +479 -344
  41. netgen/include/pybind11/detail/native_enum_data.h +209 -0
  42. netgen/include/pybind11/detail/pybind11_namespace_macros.h +82 -0
  43. netgen/include/pybind11/detail/struct_smart_holder.h +378 -0
  44. netgen/include/pybind11/detail/type_caster_base.h +506 -133
  45. netgen/include/pybind11/detail/using_smart_holder.h +22 -0
  46. netgen/include/pybind11/detail/value_and_holder.h +90 -0
  47. netgen/include/pybind11/eigen/matrix.h +19 -10
  48. netgen/include/pybind11/eigen/tensor.h +15 -11
  49. netgen/include/pybind11/embed.h +50 -46
  50. netgen/include/pybind11/eval.h +11 -6
  51. netgen/include/pybind11/functional.h +58 -49
  52. netgen/include/pybind11/gil.h +34 -82
  53. netgen/include/pybind11/gil_safe_call_once.h +12 -1
  54. netgen/include/pybind11/gil_simple.h +37 -0
  55. netgen/include/pybind11/native_enum.h +67 -0
  56. netgen/include/pybind11/numpy.h +272 -93
  57. netgen/include/pybind11/pybind11.h +947 -265
  58. netgen/include/pybind11/pytypes.h +127 -21
  59. netgen/include/pybind11/stl/filesystem.h +23 -25
  60. netgen/include/pybind11/stl.h +277 -59
  61. netgen/include/pybind11/stl_bind.h +42 -7
  62. netgen/include/pybind11/subinterpreter.h +299 -0
  63. netgen/include/pybind11/trampoline_self_life_support.h +65 -0
  64. netgen/include/pybind11/typing.h +177 -4
  65. netgen/include/pybind11/warnings.h +75 -0
  66. netgen/lib/libnggui.lib +0 -0
  67. netgen/lib/ngcore.lib +0 -0
  68. netgen/lib/nglib.lib +0 -0
  69. netgen/libnggui.dll +0 -0
  70. netgen/libngguipy.pyd +0 -0
  71. netgen/libngpy/_NgOCC.pyi +192 -141
  72. netgen/libngpy/_csg.pyi +26 -26
  73. netgen/libngpy/_geom2d.pyi +34 -25
  74. netgen/libngpy/_meshing.pyi +262 -111
  75. netgen/libngpy/_stl.pyi +3 -4
  76. netgen/libngpy.pyd +0 -0
  77. netgen/ngcore.dll +0 -0
  78. netgen/nglib.dll +0 -0
  79. netgen/read_gmsh.py +41 -0
  80. netgen/togl.dll +0 -0
  81. netgen/version.py +1 -1
  82. {netgen_mesher-6.2.2506.dist-info → netgen_mesher-6.2.2506.post31.dev0.dist-info}/METADATA +2 -1
  83. {netgen_mesher-6.2.2506.dist-info → netgen_mesher-6.2.2506.post31.dev0.dist-info}/RECORD +132 -112
  84. pyngcore/pyngcore.cp313-win_amd64.pyd +0 -0
  85. {netgen_mesher-6.2.2506.data → netgen_mesher-6.2.2506.post31.dev0.data}/data/share/netgen/boundarycondition.geo +0 -0
  86. {netgen_mesher-6.2.2506.data → netgen_mesher-6.2.2506.post31.dev0.data}/data/share/netgen/boxcyl.geo +0 -0
  87. {netgen_mesher-6.2.2506.data → netgen_mesher-6.2.2506.post31.dev0.data}/data/share/netgen/circle_on_cube.geo +0 -0
  88. {netgen_mesher-6.2.2506.data → netgen_mesher-6.2.2506.post31.dev0.data}/data/share/netgen/cone.geo +0 -0
  89. {netgen_mesher-6.2.2506.data → netgen_mesher-6.2.2506.post31.dev0.data}/data/share/netgen/cube.geo +0 -0
  90. {netgen_mesher-6.2.2506.data → netgen_mesher-6.2.2506.post31.dev0.data}/data/share/netgen/cubeandring.geo +0 -0
  91. {netgen_mesher-6.2.2506.data → netgen_mesher-6.2.2506.post31.dev0.data}/data/share/netgen/cubeandspheres.geo +0 -0
  92. {netgen_mesher-6.2.2506.data → netgen_mesher-6.2.2506.post31.dev0.data}/data/share/netgen/cubemcyl.geo +0 -0
  93. {netgen_mesher-6.2.2506.data → netgen_mesher-6.2.2506.post31.dev0.data}/data/share/netgen/cubemsphere.geo +0 -0
  94. {netgen_mesher-6.2.2506.data → netgen_mesher-6.2.2506.post31.dev0.data}/data/share/netgen/cylinder.geo +0 -0
  95. {netgen_mesher-6.2.2506.data → netgen_mesher-6.2.2506.post31.dev0.data}/data/share/netgen/cylsphere.geo +0 -0
  96. {netgen_mesher-6.2.2506.data → netgen_mesher-6.2.2506.post31.dev0.data}/data/share/netgen/doc/ng4.pdf +0 -0
  97. {netgen_mesher-6.2.2506.data → netgen_mesher-6.2.2506.post31.dev0.data}/data/share/netgen/ellipsoid.geo +0 -0
  98. {netgen_mesher-6.2.2506.data → netgen_mesher-6.2.2506.post31.dev0.data}/data/share/netgen/ellipticcyl.geo +0 -0
  99. {netgen_mesher-6.2.2506.data → netgen_mesher-6.2.2506.post31.dev0.data}/data/share/netgen/extrusion.geo +0 -0
  100. {netgen_mesher-6.2.2506.data → netgen_mesher-6.2.2506.post31.dev0.data}/data/share/netgen/fichera.geo +0 -0
  101. {netgen_mesher-6.2.2506.data → netgen_mesher-6.2.2506.post31.dev0.data}/data/share/netgen/frame.step +0 -0
  102. {netgen_mesher-6.2.2506.data → netgen_mesher-6.2.2506.post31.dev0.data}/data/share/netgen/hinge.stl +0 -0
  103. {netgen_mesher-6.2.2506.data → netgen_mesher-6.2.2506.post31.dev0.data}/data/share/netgen/lshape3d.geo +0 -0
  104. {netgen_mesher-6.2.2506.data → netgen_mesher-6.2.2506.post31.dev0.data}/data/share/netgen/manyholes.geo +0 -0
  105. {netgen_mesher-6.2.2506.data → netgen_mesher-6.2.2506.post31.dev0.data}/data/share/netgen/manyholes2.geo +0 -0
  106. {netgen_mesher-6.2.2506.data → netgen_mesher-6.2.2506.post31.dev0.data}/data/share/netgen/matrix.geo +0 -0
  107. {netgen_mesher-6.2.2506.data → netgen_mesher-6.2.2506.post31.dev0.data}/data/share/netgen/ortho.geo +0 -0
  108. {netgen_mesher-6.2.2506.data → netgen_mesher-6.2.2506.post31.dev0.data}/data/share/netgen/part1.stl +0 -0
  109. {netgen_mesher-6.2.2506.data → netgen_mesher-6.2.2506.post31.dev0.data}/data/share/netgen/period.geo +0 -0
  110. {netgen_mesher-6.2.2506.data → netgen_mesher-6.2.2506.post31.dev0.data}/data/share/netgen/py_tutorials/exportNeutral.py +0 -0
  111. {netgen_mesher-6.2.2506.data → netgen_mesher-6.2.2506.post31.dev0.data}/data/share/netgen/py_tutorials/mesh.py +0 -0
  112. {netgen_mesher-6.2.2506.data → netgen_mesher-6.2.2506.post31.dev0.data}/data/share/netgen/py_tutorials/shaft.geo +0 -0
  113. {netgen_mesher-6.2.2506.data → netgen_mesher-6.2.2506.post31.dev0.data}/data/share/netgen/revolution.geo +0 -0
  114. {netgen_mesher-6.2.2506.data → netgen_mesher-6.2.2506.post31.dev0.data}/data/share/netgen/screw.step +0 -0
  115. {netgen_mesher-6.2.2506.data → netgen_mesher-6.2.2506.post31.dev0.data}/data/share/netgen/sculpture.geo +0 -0
  116. {netgen_mesher-6.2.2506.data → netgen_mesher-6.2.2506.post31.dev0.data}/data/share/netgen/shaft.geo +0 -0
  117. {netgen_mesher-6.2.2506.data → netgen_mesher-6.2.2506.post31.dev0.data}/data/share/netgen/shell.geo +0 -0
  118. {netgen_mesher-6.2.2506.data → netgen_mesher-6.2.2506.post31.dev0.data}/data/share/netgen/sphere.geo +0 -0
  119. {netgen_mesher-6.2.2506.data → netgen_mesher-6.2.2506.post31.dev0.data}/data/share/netgen/sphereincube.geo +0 -0
  120. {netgen_mesher-6.2.2506.data → netgen_mesher-6.2.2506.post31.dev0.data}/data/share/netgen/square.in2d +0 -0
  121. {netgen_mesher-6.2.2506.data → netgen_mesher-6.2.2506.post31.dev0.data}/data/share/netgen/squarecircle.in2d +0 -0
  122. {netgen_mesher-6.2.2506.data → netgen_mesher-6.2.2506.post31.dev0.data}/data/share/netgen/squarehole.in2d +0 -0
  123. {netgen_mesher-6.2.2506.data → netgen_mesher-6.2.2506.post31.dev0.data}/data/share/netgen/torus.geo +0 -0
  124. {netgen_mesher-6.2.2506.data → netgen_mesher-6.2.2506.post31.dev0.data}/data/share/netgen/trafo.geo +0 -0
  125. {netgen_mesher-6.2.2506.data → netgen_mesher-6.2.2506.post31.dev0.data}/data/share/netgen/twobricks.geo +0 -0
  126. {netgen_mesher-6.2.2506.data → netgen_mesher-6.2.2506.post31.dev0.data}/data/share/netgen/twocubes.geo +0 -0
  127. {netgen_mesher-6.2.2506.data → netgen_mesher-6.2.2506.post31.dev0.data}/data/share/netgen/twocyl.geo +0 -0
  128. {netgen_mesher-6.2.2506.dist-info → netgen_mesher-6.2.2506.post31.dev0.dist-info}/AUTHORS +0 -0
  129. {netgen_mesher-6.2.2506.dist-info → netgen_mesher-6.2.2506.post31.dev0.dist-info}/LICENSE +0 -0
  130. {netgen_mesher-6.2.2506.dist-info → netgen_mesher-6.2.2506.post31.dev0.dist-info}/WHEEL +0 -0
  131. {netgen_mesher-6.2.2506.dist-info → netgen_mesher-6.2.2506.post31.dev0.dist-info}/entry_points.txt +0 -0
  132. {netgen_mesher-6.2.2506.dist-info → netgen_mesher-6.2.2506.post31.dev0.dist-info}/top_level.txt +0 -0
netgen/__init__.pyi CHANGED
@@ -1,5 +1,5 @@
1
1
  from __future__ import annotations
2
- from netgen.libngpy._meshing import _Redraw
2
+ from netgen.libngpy._meshing.pybind11_detail_function_record_v1_msvc_md_mscver19 import _Redraw
3
3
  from pathlib._local import Path
4
4
  from pyngcore.pyngcore import Timer
5
5
  import sys
@@ -1,14 +1,15 @@
1
- set(NETGEN_VERSION "6.2.2506-v6.2.2506-v6.2.2506")
1
+ set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreadedDLL")
2
+ set(NETGEN_VERSION "6.2.2506-31-ga34e6d60")
2
3
  set(NETGEN_VERSION_MAJOR "6")
3
4
  set(NETGEN_VERSION_MINOR "2")
4
5
  set(NETGEN_VERSION_PATCH "2506")
5
- set(NETGEN_VERSION_TWEAK "v6.2.2506")
6
+ set(NETGEN_VERSION_TWEAK "31")
6
7
 
7
8
  get_filename_component(NETGEN_CMAKE_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH)
8
9
 
9
10
  get_filename_component(NETGEN_DIR "${NETGEN_CMAKE_DIR}/../../" ABSOLUTE)
10
11
 
11
- set(NETGEN_COMPILE_DEFINITIONS "$<$<CONFIG:Release>:UNICODE>;$<$<CONFIG:Release>:_UNICODE>;$<$<CONFIG:Release>:_CRT_SECURE_NO_WARNINGS>;$<$<CONFIG:Release>:_CRT_NONSTDC_NO_DEPRECATE>;OCCGEOMETRY")
12
+ set(NETGEN_COMPILE_DEFINITIONS "")
12
13
 
13
14
  get_filename_component(NETGEN_INCLUDE_DIR "${NETGEN_CMAKE_DIR}/../include" ABSOLUTE)
14
15
  get_filename_component(NETGEN_BINARY_DIR "${NETGEN_CMAKE_DIR}/../" ABSOLUTE)
@@ -14,14 +14,14 @@ INTEL_MIC: bool = False
14
14
  NETGEN_PYTHON_PACKAGE_NAME: str = 'netgen-mesher'
15
15
  NETGEN_PYTHON_RPATH: str = 'netgen'
16
16
  NETGEN_PYTHON_RPATH_BIN: str = 'netgen'
17
- NETGEN_VERSION: str = '6.2.2506-v6.2.2506-v6.2.2506'
18
- NETGEN_VERSION_GIT: str = 'v6.2.2506'
19
- NETGEN_VERSION_HASH: str = 'v6.2.2506'
17
+ NETGEN_VERSION: str = '6.2.2506-31-ga34e6d60'
18
+ NETGEN_VERSION_GIT: str = 'v6.2.2506-31-ga34e6d60'
19
+ NETGEN_VERSION_HASH: str = 'ga34e6d60'
20
20
  NETGEN_VERSION_MAJOR: str = '6'
21
21
  NETGEN_VERSION_MINOR: str = '2'
22
22
  NETGEN_VERSION_PATCH: str = '2506'
23
- NETGEN_VERSION_PYTHON: str = '6.2.2506'
24
- NETGEN_VERSION_TWEAK: str = 'v6.2.2506'
23
+ NETGEN_VERSION_PYTHON: str = '6.2.2506.post31.dev0'
24
+ NETGEN_VERSION_TWEAK: str = '31'
25
25
  NG_COMPILE_FLAGS: str = '/arch:AVX2'
26
26
  NG_INSTALL_DIR_BIN: str = 'netgen'
27
27
  NG_INSTALL_DIR_CMAKE: str = 'netgen/cmake'
@@ -49,4 +49,4 @@ USE_SPDLOG: bool = False
49
49
  is_python_package: bool = True
50
50
  ngcore_compile_definitions: str = 'NETGEN_PYTHON;NG_PYTHON;PYBIND11_SIMPLE_GIL_MANAGEMENT;_WIN32_WINNT=0x1000;WNT;WNT_WINDOW;NOMINMAX;MSVC_EXPRESS;_CRT_SECURE_NO_WARNINGS;HAVE_STRUCT_TIMESPEC;WIN32'
51
51
  ngcore_compile_options: str = '/arch:AVX2;/bigobj;$<BUILD_INTERFACE:/MP;/W1;/wd4068>'
52
- version: str = 'v6.2.2506'
52
+ version: str = 'v6.2.2506-31-ga34e6d60'
netgen/config/config.py CHANGED
@@ -42,15 +42,15 @@ NG_COMPILE_FLAGS = "/arch:AVX2"
42
42
  ngcore_compile_options = "/arch:AVX2;/bigobj;$<BUILD_INTERFACE:/MP;/W1;/wd4068>"
43
43
  ngcore_compile_definitions = "NETGEN_PYTHON;NG_PYTHON;PYBIND11_SIMPLE_GIL_MANAGEMENT;_WIN32_WINNT=0x1000;WNT;WNT_WINDOW;NOMINMAX;MSVC_EXPRESS;_CRT_SECURE_NO_WARNINGS;HAVE_STRUCT_TIMESPEC;WIN32"
44
44
 
45
- NETGEN_VERSION = "6.2.2506-v6.2.2506-v6.2.2506"
46
- NETGEN_VERSION_GIT = "v6.2.2506"
47
- NETGEN_VERSION_PYTHON = "6.2.2506"
45
+ NETGEN_VERSION = "6.2.2506-31-ga34e6d60"
46
+ NETGEN_VERSION_GIT = "v6.2.2506-31-ga34e6d60"
47
+ NETGEN_VERSION_PYTHON = "6.2.2506.post31.dev0"
48
48
 
49
49
  NETGEN_VERSION_MAJOR = "6"
50
50
  NETGEN_VERSION_MINOR = "2"
51
- NETGEN_VERSION_TWEAK = "v6.2.2506"
51
+ NETGEN_VERSION_TWEAK = "31"
52
52
  NETGEN_VERSION_PATCH = "2506"
53
- NETGEN_VERSION_HASH = "v6.2.2506"
53
+ NETGEN_VERSION_HASH = "ga34e6d60"
54
54
 
55
55
  PYTHON_VERSION = "3.13.2"
56
56
  PYTHON_VERSION_MAJOR = "3"
netgen/config/config.pyi CHANGED
@@ -16,14 +16,14 @@ INTEL_MIC: bool = False
16
16
  NETGEN_PYTHON_PACKAGE_NAME: str = 'netgen-mesher'
17
17
  NETGEN_PYTHON_RPATH: str = 'netgen'
18
18
  NETGEN_PYTHON_RPATH_BIN: str = 'netgen'
19
- NETGEN_VERSION: str = '6.2.2506-v6.2.2506-v6.2.2506'
20
- NETGEN_VERSION_GIT: str = 'v6.2.2506'
21
- NETGEN_VERSION_HASH: str = 'v6.2.2506'
19
+ NETGEN_VERSION: str = '6.2.2506-31-ga34e6d60'
20
+ NETGEN_VERSION_GIT: str = 'v6.2.2506-31-ga34e6d60'
21
+ NETGEN_VERSION_HASH: str = 'ga34e6d60'
22
22
  NETGEN_VERSION_MAJOR: str = '6'
23
23
  NETGEN_VERSION_MINOR: str = '2'
24
24
  NETGEN_VERSION_PATCH: str = '2506'
25
- NETGEN_VERSION_PYTHON: str = '6.2.2506'
26
- NETGEN_VERSION_TWEAK: str = 'v6.2.2506'
25
+ NETGEN_VERSION_PYTHON: str = '6.2.2506.post31.dev0'
26
+ NETGEN_VERSION_TWEAK: str = '31'
27
27
  NG_COMPILE_FLAGS: str = '/arch:AVX2'
28
28
  NG_INSTALL_DIR_BIN: str = 'netgen'
29
29
  NG_INSTALL_DIR_CMAKE: str = 'netgen/cmake'
@@ -51,4 +51,4 @@ USE_SPDLOG: bool = False
51
51
  is_python_package: bool = True
52
52
  ngcore_compile_definitions: str = 'NETGEN_PYTHON;NG_PYTHON;PYBIND11_SIMPLE_GIL_MANAGEMENT;_WIN32_WINNT=0x1000;WNT;WNT_WINDOW;NOMINMAX;MSVC_EXPRESS;_CRT_SECURE_NO_WARNINGS;HAVE_STRUCT_TIMESPEC;WIN32'
53
53
  ngcore_compile_options: str = '/arch:AVX2;/bigobj;$<BUILD_INTERFACE:/MP;/W1;/wd4068>'
54
- version: str = 'v6.2.2506'
54
+ version: str = 'v6.2.2506-31-ga34e6d60'
@@ -70,7 +70,8 @@ namespace ngcore
70
70
 
71
71
 
72
72
  #ifdef NETGEN_PYTHON
73
- pybind11::object CastAnyToPy(const std::any& a);
73
+ NGCORE_API pybind11::object CastAnyToPy(const std::any& a);
74
+ NGCORE_API std::any CastPyToAny(pybind11::object& h);
74
75
  #endif // NETGEN_PYTHON
75
76
 
76
77
  class NGCORE_API Archive;
@@ -184,6 +185,7 @@ namespace ngcore
184
185
  #ifdef NETGEN_PYTHON
185
186
  // std::function<pybind11::object(const std::any&)> anyToPyCaster;
186
187
  pybind11::object (*anyToPyCaster)(const std::any&);
188
+ std::any (*pyToAnyCaster)(pybind11::object&);
187
189
  #endif // NETGEN_PYTHON
188
190
  };
189
191
  } // namespace detail
@@ -234,7 +236,10 @@ namespace ngcore
234
236
  // it archives the object normally.
235
237
  #ifdef NETGEN_PYTHON
236
238
  template<typename T>
237
- Archive& Shallow(T& val); // implemented in python_ngcore.hpp
239
+ Archive& Shallow(T& val); // implemented in register_archive.hpp
240
+ #ifndef __CUDACC__
241
+ Archive& Shallow(std::any& val); // implemented in python_ngcore.cpp
242
+ #endif // __CUDACC__
238
243
  #else // NETGEN_PYTHON
239
244
  template<typename T>
240
245
  Archive& Shallow(T& val)
@@ -276,6 +281,12 @@ namespace ngcore
276
281
  virtual Archive & operator & (std::string & str) = 0;
277
282
  virtual Archive & operator & (char *& str) = 0;
278
283
 
284
+ Archive & operator &(std::any& a)
285
+ {
286
+ Shallow(a);
287
+ return *this;
288
+ }
289
+
279
290
  Archive & operator & (VersionInfo & version)
280
291
  {
281
292
  if(Output())
@@ -505,7 +516,8 @@ namespace ngcore
505
516
  template <typename T>
506
517
  Archive& operator & (ngcore::Shallow<T>& shallow)
507
518
  {
508
- this->Shallow(shallow.val);
519
+ if(shallow_to_python)
520
+ Shallow(shallow.val);
509
521
  return *this;
510
522
  }
511
523
 
@@ -763,6 +775,7 @@ namespace ngcore
763
775
 
764
776
  #ifdef NETGEN_PYTHON
765
777
  friend pybind11::object CastAnyToPy(const std::any&);
778
+ friend std::any CastPyToAny(pybind11::object&);
766
779
  #endif // NETGEN_PYTHON
767
780
 
768
781
  // Returns ClassArchiveInfo of Demangled typeid
@@ -47,7 +47,7 @@ namespace ngcore
47
47
  /// copy flags
48
48
  Flags (const Flags & flags);
49
49
  /// steal flags
50
- Flags (Flags && flags);
50
+ Flags (Flags && flags) = default;
51
51
  ///
52
52
  Flags (std::initializer_list<std::string> list);
53
53
  ///
@@ -198,7 +198,7 @@ namespace ngcore
198
198
  }
199
199
  #else // defined(NETGEN_TRACE_MEMORY) && !defined(__CUDA_ARCH__)
200
200
  public:
201
- MemoryTracer() {}
201
+ NETGEN_INLINE MemoryTracer() {}
202
202
  MemoryTracer( std::string /* name */ ) {}
203
203
  template <typename... TRest>
204
204
  MemoryTracer( std::string /* name */, TRest & ... ) {}
@@ -23,5 +23,10 @@
23
23
  #include "ngstream.hpp"
24
24
  #include "utils.hpp"
25
25
  #include "ranges.hpp"
26
+ #include "statushandler.hpp"
26
27
 
27
28
  #endif // NETGEN_CORE_NGCORE_HPP
29
+
30
+
31
+
32
+
@@ -84,6 +84,14 @@ namespace ngcore {
84
84
  return pybind11::cast(val);
85
85
  }
86
86
  };
87
+ info.pyToAnyCaster = [](pybind11::object &obj)
88
+ {
89
+ if constexpr(has_shared_from_this2<T>::value || !std::is_copy_constructible<T>::value)
90
+ return std::any { obj.cast<std::shared_ptr<T>>() };
91
+ else
92
+ return std::any { obj.cast<T>() };
93
+ };
94
+
87
95
  #endif // NETGEN_PYTHON
88
96
  Archive::SetArchiveRegister(std::string(Demangle(typeid(T).name())),info);
89
97
  }
@@ -266,15 +266,24 @@ namespace ngcore
266
266
 
267
267
  NETGEN_INLINE SIMD<double,2> rsqrt (SIMD<double,2> x)
268
268
  {
269
- // return 1.0 / sqrt(x);
269
+ return 1.0 / sqrt(x);
270
270
 
271
- SIMD<double,2> y = vrsqrteq_f64(x.Data());
271
+ // SIMD<double,2> y = vrsqrteq_f64(x.Data());
272
+
273
+ /*
274
+ y = y * vrsqrtsq_f64( (x*y).Data(), y.Data());
275
+ y = y * vrsqrtsq_f64( (x*y).Data(), y.Data());
276
+ y = y * vrsqrtsq_f64( (x*y).Data(), y.Data());
277
+ */
278
+
279
+ /*
272
280
  auto x_half = 0.5*x;
273
281
  y = y * (1.5 - (x_half * y * y));
274
282
  y = y * (1.5 - (x_half * y * y));
275
- // y = y * (1.5 - (x_half * y * y));
276
- y = y + 0.5 * (x*y*y-1);
283
+ y = y * (1.5 - (x_half * y * y));
284
+
277
285
  return y;
286
+ */
278
287
  }
279
288
 
280
289
 
@@ -57,7 +57,7 @@ namespace ngcore
57
57
  template <int N>
58
58
  auto sincos (SIMD<double,N> x)
59
59
  {
60
- auto y = round(x / (M_PI/2));
60
+ auto y = round((2/M_PI) * x);
61
61
  auto q = lround(y);
62
62
 
63
63
  auto [s1,c1] = sincos_reduced(x - y * (M_PI/2));
@@ -151,7 +151,7 @@ namespace ngcore
151
151
  // x = ldexp( x, n );
152
152
  }
153
153
 
154
-
154
+ /*
155
155
  inline auto Test1 (SIMD<double> x)
156
156
  {
157
157
  return myexp(x);
@@ -171,6 +171,7 @@ namespace ngcore
171
171
  {
172
172
  return sincos(x);
173
173
  }
174
+ */
174
175
 
175
176
  }
176
177
 
@@ -0,0 +1,37 @@
1
+ #ifndef NETGEN_CORE_STATUSHANDLER
2
+ #define NETGEN_CORE_STATUSHANDLER
3
+
4
+ #include <string>
5
+ #include "utils.hpp"
6
+
7
+ namespace ngcore
8
+ {
9
+
10
+ class NGCORE_API multithreadt
11
+ {
12
+ public:
13
+ int pause;
14
+ int testmode;
15
+ int redraw;
16
+ int drawing;
17
+ int terminate;
18
+ int running;
19
+ double percent;
20
+ const char * task;
21
+ bool demorunning;
22
+ std::string * tcl_todo = new std::string(""); // tcl commands set from parallel thread
23
+ multithreadt();
24
+ };
25
+
26
+ NGCORE_API extern volatile multithreadt multithread;
27
+
28
+
29
+ extern NGCORE_API void SetStatMsg(const std::string& s);
30
+
31
+ extern NGCORE_API void PushStatus(const std::string& s);
32
+ extern NGCORE_API void PushStatusF(const std::string& s);
33
+ extern NGCORE_API void PopStatus();
34
+ extern NGCORE_API void SetThreadPercent(double percent);
35
+ extern NGCORE_API void GetStatus(std::string & s, double & percentage);
36
+ }
37
+ #endif
@@ -1,9 +1,9 @@
1
1
  #ifndef NETGEN_VERSION_HPP_INCLUDED
2
2
  #define NETGEN_VERSION_HPP_INCLUDED
3
- #define NETGEN_VERSION "6.2.2506"
3
+ #define NETGEN_VERSION "6.2.2506-31-ga34e6d60"
4
4
  #define NETGEN_VERSION_MAJOR 6
5
5
  #define NETGEN_VERSION_MINOR 2
6
6
  #define NETGEN_VERSION_PATCH 2506
7
- #define NETGEN_VERSION_TWEAK 0
8
- #define NETGEN_VERSION_HASH "g3fadd39f"
7
+ #define NETGEN_VERSION_TWEAK 31
8
+ #define NETGEN_VERSION_HASH "ga34e6d60"
9
9
  #endif // NETGEN_VERSION_HPP_INCLUDED
@@ -42,10 +42,7 @@ namespace netgen
42
42
  string GetName() const { return name ? *name : "default"; }
43
43
  Vec<4> GetColor() { return col ? *col : Vec<4>{0., 1., 0., 1.}; }
44
44
 
45
- void DoArchive(Archive& ar)
46
- {
47
- ar & name & col & maxh & hpref & layer;
48
- }
45
+ void DoArchive(Archive& ar);
49
46
  };
50
47
 
51
48
  class GeometryShape;
@@ -31,23 +31,6 @@ namespace netgen
31
31
 
32
32
  DLL_HEADER extern mutex tcl_todo_mutex;
33
33
 
34
- class DLL_HEADER multithreadt
35
- {
36
- public:
37
- int pause;
38
- int testmode;
39
- int redraw;
40
- int drawing;
41
- int terminate;
42
- int running;
43
- double percent;
44
- const char * task;
45
- bool demorunning;
46
- string * tcl_todo = new string(""); // tcl commands set from parallel thread
47
- multithreadt();
48
- };
49
-
50
- DLL_HEADER extern volatile multithreadt multithread;
51
34
 
52
35
  class DebugParameters;
53
36
  class Mesh;
@@ -4184,6 +4184,47 @@ HPRef_Struct reftet_3f_0e_0v =
4184
4184
 
4185
4185
 
4186
4186
 
4187
+
4188
+ // HP_TET_ALFELD
4189
+ int reftet_Alfeld_splitedges[][3] =
4190
+ {
4191
+ { 0, 0, 0 }
4192
+ };
4193
+ int reftet_Alfeld_splitfaces[][4] =
4194
+ {
4195
+ { 0, 0, 0, 0 }
4196
+ };
4197
+
4198
+ int reftet_Alfeld_splitelements[][5] =
4199
+ {
4200
+ { 1, 2, 3, 4, 5},
4201
+ { 0 }
4202
+ };
4203
+
4204
+ HPREF_ELEMENT_TYPE reftet_Alfeld_newelstypes[] =
4205
+ {
4206
+ HP_TET, HP_TET, HP_TET, HP_TET,
4207
+ HP_NONE,
4208
+ };
4209
+
4210
+ int reftet_Alfeld_newels[][8] =
4211
+ {
4212
+ { 1, 2, 3, 5 },
4213
+ { 1, 4, 2, 5 },
4214
+ { 1, 3, 4, 5 },
4215
+ { 3, 2, 4, 5 }
4216
+ };
4217
+ HPRef_Struct reftet_Alfeld =
4218
+ {
4219
+ HP_TET,
4220
+ reftet_Alfeld_splitedges,
4221
+ reftet_Alfeld_splitfaces,
4222
+ reftet_Alfeld_splitelements,
4223
+ reftet_Alfeld_newelstypes,
4224
+ reftet_Alfeld_newels
4225
+ };
4226
+
4227
+
4187
4228
  /*
4188
4229
 
4189
4230
  */
@@ -189,6 +189,8 @@ enum HPREF_ELEMENT_TYPE {
189
189
 
190
190
  HP_TET_3F_0E_0V = 700, // 3 singular faces, no additional points or edges NEW done
191
191
 
192
+ HP_TET_ALFELD,
193
+
192
194
  HP_PRISM = 1000,
193
195
  HP_PRISM_SINGEDGE,
194
196
  HP_PRISM_SINGEDGE_V12,
@@ -45,13 +45,16 @@ namespace netgen
45
45
  const MyStr& s5="", const MyStr& s6="", const MyStr& s7="", const MyStr& s8="");
46
46
  extern DLL_HEADER void PrintTime(const MyStr& s1="", const MyStr& s2="", const MyStr& s3="", const MyStr& s4="",
47
47
  const MyStr& s5="", const MyStr& s6="", const MyStr& s7="", const MyStr& s8="");
48
- extern DLL_HEADER void SetStatMsg(const MyStr& s);
49
48
 
50
- extern DLL_HEADER void PushStatus(const MyStr& s);
51
- extern DLL_HEADER void PushStatusF(const MyStr& s);
52
- extern DLL_HEADER void PopStatus();
53
- extern DLL_HEADER void SetThreadPercent(double percent);
54
- extern DLL_HEADER void GetStatus(MyStr & s, double & percentage);
49
+
50
+
51
+
52
+ inline void PushStatusF(const std::string& s)
53
+ {
54
+ PushStatus (s);
55
+ PrintFnStart(s);
56
+ }
57
+
55
58
  }
56
59
 
57
60
 
@@ -353,10 +353,11 @@ extern "C" {
353
353
 
354
354
  DLL_HEADER void RunParallel ( void * (*fun)(void *), void * in);
355
355
 
356
- DLL_HEADER void Ng_PushStatus (const char * str);
356
+ #define NG_STATUS_USES_STD_STRING
357
+ DLL_HEADER void Ng_PushStatus (const std::string& str);
357
358
  DLL_HEADER void Ng_PopStatus ();
358
359
  DLL_HEADER void Ng_SetThreadPercentage (double percent);
359
- DLL_HEADER void Ng_GetStatus (char ** str, double & percent);
360
+ DLL_HEADER void Ng_GetStatus (std::string& str, double & percent);
360
361
 
361
362
  DLL_HEADER void Ng_SetTerminate(void);
362
363
  DLL_HEADER void Ng_UnSetTerminate(void);
@@ -71,6 +71,20 @@ namespace netgen
71
71
  return gp_Pnt(p(0), p(1), p(2));
72
72
  }
73
73
 
74
+ inline void CheckValidPropertyType(const TopoDS_Shape & shape)
75
+ {
76
+ switch (shape.ShapeType())
77
+ {
78
+ case TopAbs_SOLID:
79
+ case TopAbs_FACE:
80
+ case TopAbs_EDGE:
81
+ case TopAbs_VERTEX:
82
+ break;
83
+ default:
84
+ throw Exception("Cannot query properties of compound shapes - setting properties sets property on all highest dimension subshape type");
85
+ }
86
+ }
87
+
74
88
  DLL_HEADER Box<3> GetBoundingBox( const TopoDS_Shape & shape );
75
89
 
76
90
  struct OCCIdentification
@@ -146,6 +146,14 @@ namespace netgen
146
146
 
147
147
  static ShapeProperties& GetProperties(const TopoDS_Shape& shape)
148
148
  {
149
+ try
150
+ {
151
+ CheckValidPropertyType(shape);
152
+ }
153
+ catch(Exception& e)
154
+ {
155
+ cerr << "WARNING: " << e.what() << endl;
156
+ }
149
157
  auto index = OCCGeometry::global_shape_property_indices.FindIndex(shape);
150
158
  if(index > 0)
151
159
  return OCCGeometry::global_shape_properties
@@ -12,6 +12,7 @@
12
12
 
13
13
  #include "detail/common.h"
14
14
  #include "cast.h"
15
+ #include "trampoline_self_life_support.h"
15
16
 
16
17
  #include <functional>
17
18
 
@@ -81,6 +82,10 @@ struct dynamic_attr {};
81
82
  /// Annotation which enables the buffer protocol for a type
82
83
  struct buffer_protocol {};
83
84
 
85
+ /// Annotation which enables releasing the GIL before calling the C++ destructor of wrapped
86
+ /// instances (pybind/pybind11#1446).
87
+ struct release_gil_before_calling_cpp_dtor {};
88
+
84
89
  /// Annotation which requests that a special metaclass is created for a type
85
90
  struct metaclass {
86
91
  handle value;
@@ -188,6 +193,7 @@ struct argument_record {
188
193
 
189
194
  /// Internal data structure which holds metadata about a bound function (signature, overloads,
190
195
  /// etc.)
196
+ #define PYBIND11_DETAIL_FUNCTION_RECORD_ABI_ID "v1" // PLEASE UPDATE if the struct is changed.
191
197
  struct function_record {
192
198
  function_record()
193
199
  : is_constructor(false), is_new_style_constructor(false), is_stateless(false),
@@ -267,12 +273,18 @@ struct function_record {
267
273
  /// Pointer to next overload
268
274
  function_record *next = nullptr;
269
275
  };
276
+ // The main purpose of this macro is to make it easy to pin-point the critically related code
277
+ // sections.
278
+ #define PYBIND11_ENSURE_PRECONDITION_FOR_FUNCTIONAL_H_PERFORMANCE_OPTIMIZATIONS(...) \
279
+ static_assert( \
280
+ __VA_ARGS__, \
281
+ "Violation of precondition for pybind11/functional.h performance optimizations!")
270
282
 
271
283
  /// Special data structure which (temporarily) holds metadata about a bound class
272
284
  struct type_record {
273
285
  PYBIND11_NOINLINE type_record()
274
286
  : multiple_inheritance(false), dynamic_attr(false), buffer_protocol(false),
275
- default_holder(true), module_local(false), is_final(false) {}
287
+ module_local(false), is_final(false), release_gil_before_calling_cpp_dtor(false) {}
276
288
 
277
289
  /// Handle to the parent scope
278
290
  handle scope;
@@ -301,6 +313,12 @@ struct type_record {
301
313
  /// Function pointer to class_<..>::dealloc
302
314
  void (*dealloc)(detail::value_and_holder &) = nullptr;
303
315
 
316
+ /// Function pointer for casting alias class (aka trampoline) pointer to
317
+ /// trampoline_self_life_support pointer. Sidesteps cross-DSO RTTI issues
318
+ /// on platforms like macOS (see PR #5728 for details).
319
+ get_trampoline_self_life_support_fn get_trampoline_self_life_support
320
+ = [](void *) -> trampoline_self_life_support * { return nullptr; };
321
+
304
322
  /// List of base classes of the newly created type
305
323
  list bases;
306
324
 
@@ -322,15 +340,17 @@ struct type_record {
322
340
  /// Does the class implement the buffer protocol?
323
341
  bool buffer_protocol : 1;
324
342
 
325
- /// Is the default (unique_ptr) holder type used?
326
- bool default_holder : 1;
327
-
328
343
  /// Is the class definition local to the module shared object?
329
344
  bool module_local : 1;
330
345
 
331
346
  /// Is the class inheritable from python classes?
332
347
  bool is_final : 1;
333
348
 
349
+ /// Solves pybind/pybind11#1446
350
+ bool release_gil_before_calling_cpp_dtor : 1;
351
+
352
+ holder_enum_t holder_enum_v = holder_enum_t::undefined;
353
+
334
354
  PYBIND11_NOINLINE void add_base(const std::type_info &base, void *(*caster)(void *) ) {
335
355
  auto *base_info = detail::get_type_info(base, false);
336
356
  if (!base_info) {
@@ -340,18 +360,22 @@ struct type_record {
340
360
  + "\" referenced unknown base type \"" + tname + "\"");
341
361
  }
342
362
 
343
- if (default_holder != base_info->default_holder) {
363
+ // SMART_HOLDER_BAKEIN_FOLLOW_ON: Refine holder compatibility checks.
364
+ bool this_has_unique_ptr_holder = (holder_enum_v == holder_enum_t::std_unique_ptr);
365
+ bool base_has_unique_ptr_holder
366
+ = (base_info->holder_enum_v == holder_enum_t::std_unique_ptr);
367
+ if (this_has_unique_ptr_holder != base_has_unique_ptr_holder) {
344
368
  std::string tname(base.name());
345
369
  detail::clean_type_id(tname);
346
370
  pybind11_fail("generic_type: type \"" + std::string(name) + "\" "
347
- + (default_holder ? "does not have" : "has")
371
+ + (this_has_unique_ptr_holder ? "does not have" : "has")
348
372
  + " a non-default holder type while its base \"" + tname + "\" "
349
- + (base_info->default_holder ? "does not" : "does"));
373
+ + (base_has_unique_ptr_holder ? "does not" : "does"));
350
374
  }
351
375
 
352
376
  bases.append((PyObject *) base_info->type);
353
377
 
354
- #if PY_VERSION_HEX < 0x030B0000
378
+ #ifdef PYBIND11_BACKWARD_COMPATIBILITY_TP_DICTOFFSET
355
379
  dynamic_attr |= base_info->type->tp_dictoffset != 0;
356
380
  #else
357
381
  dynamic_attr |= (base_info->type->tp_flags & Py_TPFLAGS_MANAGED_DICT) != 0;
@@ -603,6 +627,14 @@ struct process_attribute<module_local> : process_attribute_default<module_local>
603
627
  static void init(const module_local &l, type_record *r) { r->module_local = l.value; }
604
628
  };
605
629
 
630
+ template <>
631
+ struct process_attribute<release_gil_before_calling_cpp_dtor>
632
+ : process_attribute_default<release_gil_before_calling_cpp_dtor> {
633
+ static void init(const release_gil_before_calling_cpp_dtor &, type_record *r) {
634
+ r->release_gil_before_calling_cpp_dtor = true;
635
+ }
636
+ };
637
+
606
638
  /// Process a 'prepend' attribute, putting this at the beginning of the overload chain
607
639
  template <>
608
640
  struct process_attribute<prepend> : process_attribute_default<prepend> {
@@ -102,22 +102,22 @@ struct buffer_info {
102
102
  template <typename T>
103
103
  buffer_info(const T *ptr, ssize_t size, bool readonly = true)
104
104
  : buffer_info(
105
- const_cast<T *>(ptr), sizeof(T), format_descriptor<T>::format(), size, readonly) {}
105
+ const_cast<T *>(ptr), sizeof(T), format_descriptor<T>::format(), size, readonly) {}
106
106
 
107
107
  explicit buffer_info(Py_buffer *view, bool ownview = true)
108
108
  : buffer_info(
109
- view->buf,
110
- view->itemsize,
111
- view->format,
112
- view->ndim,
113
- {view->shape, view->shape + view->ndim},
114
- /* Though buffer::request() requests PyBUF_STRIDES, ctypes objects
115
- * ignore this flag and return a view with NULL strides.
116
- * When strides are NULL, build them manually. */
117
- view->strides
118
- ? std::vector<ssize_t>(view->strides, view->strides + view->ndim)
119
- : detail::c_strides({view->shape, view->shape + view->ndim}, view->itemsize),
120
- (view->readonly != 0)) {
109
+ view->buf,
110
+ view->itemsize,
111
+ view->format,
112
+ view->ndim,
113
+ {view->shape, view->shape + view->ndim},
114
+ /* Though buffer::request() requests PyBUF_STRIDES, ctypes objects
115
+ * ignore this flag and return a view with NULL strides.
116
+ * When strides are NULL, build them manually. */
117
+ view->strides
118
+ ? std::vector<ssize_t>(view->strides, view->strides + view->ndim)
119
+ : detail::c_strides({view->shape, view->shape + view->ndim}, view->itemsize),
120
+ (view->readonly != 0)) {
121
121
  // NOLINTNEXTLINE(cppcoreguidelines-prefer-member-initializer)
122
122
  this->m_view = view;
123
123
  // NOLINTNEXTLINE(cppcoreguidelines-prefer-member-initializer)
@@ -176,7 +176,7 @@ private:
176
176
  detail::any_container<ssize_t> &&strides_in,
177
177
  bool readonly)
178
178
  : buffer_info(
179
- ptr, itemsize, format, ndim, std::move(shape_in), std::move(strides_in), readonly) {}
179
+ ptr, itemsize, format, ndim, std::move(shape_in), std::move(strides_in), readonly) {}
180
180
 
181
181
  Py_buffer *m_view = nullptr;
182
182
  bool ownview = false;