netgen-mesher 6.2.2505.post48.dev0__cp313-cp313-win_amd64.whl → 6.2.2506.post48.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 (144) hide show
  1. netgen/__init__.pyi +3 -3
  2. netgen/cmake/NetgenConfig.cmake +9 -8
  3. netgen/config/__init__.pyi +7 -7
  4. netgen/config/config.py +6 -6
  5. netgen/config/config.pyi +7 -7
  6. netgen/include/core/archive.hpp +18 -3
  7. netgen/include/core/array.hpp +20 -4
  8. netgen/include/core/autodiff.hpp +9 -11
  9. netgen/include/core/autodiffdiff.hpp +0 -2
  10. netgen/include/core/bitarray.hpp +1 -1
  11. netgen/include/core/flags.hpp +1 -1
  12. netgen/include/core/hashtable.hpp +1 -1
  13. netgen/include/core/memtracer.hpp +7 -7
  14. netgen/include/core/ngcore.hpp +5 -0
  15. netgen/include/core/ngcore_api.hpp +11 -0
  16. netgen/include/core/register_archive.hpp +8 -0
  17. netgen/include/core/simd_arm64.hpp +100 -5
  18. netgen/include/core/simd_generic.hpp +187 -6
  19. netgen/include/core/simd_math.hpp +3 -2
  20. netgen/include/core/statushandler.hpp +37 -0
  21. netgen/include/core/table.hpp +2 -2
  22. netgen/include/core/taskmanager.hpp +34 -1
  23. netgen/include/include/netgen_version.hpp +3 -3
  24. netgen/include/meshing/basegeom.hpp +1 -4
  25. netgen/include/meshing/global.hpp +0 -17
  26. netgen/include/meshing/hpref_tet.hpp +41 -0
  27. netgen/include/meshing/hprefinement.hpp +2 -0
  28. netgen/include/meshing/meshtype.hpp +1 -0
  29. netgen/include/meshing/msghandler.hpp +9 -6
  30. netgen/include/meshing/topology.hpp +2 -2
  31. netgen/include/nginterface.h +3 -2
  32. netgen/include/occ/occ_utils.hpp +26 -0
  33. netgen/include/occ/occgeom.hpp +8 -0
  34. netgen/include/pybind11/attr.h +40 -8
  35. netgen/include/pybind11/buffer_info.h +14 -14
  36. netgen/include/pybind11/cast.h +553 -29
  37. netgen/include/pybind11/chrono.h +4 -1
  38. netgen/include/pybind11/conduit/README.txt +15 -0
  39. netgen/include/pybind11/conduit/pybind11_conduit_v1.h +116 -0
  40. netgen/include/pybind11/conduit/pybind11_platform_abi_id.h +87 -0
  41. netgen/include/pybind11/conduit/wrap_include_python_h.h +72 -0
  42. netgen/include/pybind11/critical_section.h +56 -0
  43. netgen/include/pybind11/detail/class.h +172 -97
  44. netgen/include/pybind11/detail/common.h +270 -189
  45. netgen/include/pybind11/detail/cpp_conduit.h +75 -0
  46. netgen/include/pybind11/detail/descr.h +55 -0
  47. netgen/include/pybind11/detail/dynamic_raw_ptr_cast_if_possible.h +39 -0
  48. netgen/include/pybind11/detail/exception_translation.h +71 -0
  49. netgen/include/pybind11/detail/function_record_pyobject.h +191 -0
  50. netgen/include/pybind11/detail/init.h +113 -9
  51. netgen/include/pybind11/detail/internals.h +479 -344
  52. netgen/include/pybind11/detail/native_enum_data.h +209 -0
  53. netgen/include/pybind11/detail/pybind11_namespace_macros.h +82 -0
  54. netgen/include/pybind11/detail/struct_smart_holder.h +378 -0
  55. netgen/include/pybind11/detail/type_caster_base.h +506 -133
  56. netgen/include/pybind11/detail/using_smart_holder.h +22 -0
  57. netgen/include/pybind11/detail/value_and_holder.h +90 -0
  58. netgen/include/pybind11/eigen/matrix.h +19 -10
  59. netgen/include/pybind11/eigen/tensor.h +15 -11
  60. netgen/include/pybind11/embed.h +50 -46
  61. netgen/include/pybind11/eval.h +11 -6
  62. netgen/include/pybind11/functional.h +58 -49
  63. netgen/include/pybind11/gil.h +34 -82
  64. netgen/include/pybind11/gil_safe_call_once.h +12 -1
  65. netgen/include/pybind11/gil_simple.h +37 -0
  66. netgen/include/pybind11/native_enum.h +67 -0
  67. netgen/include/pybind11/numpy.h +272 -93
  68. netgen/include/pybind11/pybind11.h +947 -265
  69. netgen/include/pybind11/pytypes.h +127 -21
  70. netgen/include/pybind11/stl/filesystem.h +23 -25
  71. netgen/include/pybind11/stl.h +277 -59
  72. netgen/include/pybind11/stl_bind.h +42 -7
  73. netgen/include/pybind11/subinterpreter.h +299 -0
  74. netgen/include/pybind11/trampoline_self_life_support.h +65 -0
  75. netgen/include/pybind11/typing.h +177 -4
  76. netgen/include/pybind11/warnings.h +75 -0
  77. netgen/lib/libnggui.lib +0 -0
  78. netgen/lib/ngcore.lib +0 -0
  79. netgen/lib/nglib.lib +0 -0
  80. netgen/libnggui.dll +0 -0
  81. netgen/libngguipy.pyd +0 -0
  82. netgen/libngpy/_NgOCC.pyi +220 -141
  83. netgen/libngpy/_csg.pyi +26 -26
  84. netgen/libngpy/_geom2d.pyi +34 -25
  85. netgen/libngpy/_meshing.pyi +262 -111
  86. netgen/libngpy/_stl.pyi +3 -4
  87. netgen/libngpy.pyd +0 -0
  88. netgen/ngcore.dll +0 -0
  89. netgen/nglib.dll +0 -0
  90. netgen/read_gmsh.py +41 -0
  91. netgen/togl.dll +0 -0
  92. netgen/version.py +1 -1
  93. netgen/webgui.py +38 -2
  94. {netgen_mesher-6.2.2505.post48.dev0.dist-info → netgen_mesher-6.2.2506.post48.dev0.dist-info}/METADATA +2 -1
  95. {netgen_mesher-6.2.2505.post48.dev0.dist-info → netgen_mesher-6.2.2506.post48.dev0.dist-info}/RECORD +144 -124
  96. pyngcore/pyngcore.cp313-win_amd64.pyd +0 -0
  97. {netgen_mesher-6.2.2505.post48.dev0.data → netgen_mesher-6.2.2506.post48.dev0.data}/data/share/netgen/boundarycondition.geo +0 -0
  98. {netgen_mesher-6.2.2505.post48.dev0.data → netgen_mesher-6.2.2506.post48.dev0.data}/data/share/netgen/boxcyl.geo +0 -0
  99. {netgen_mesher-6.2.2505.post48.dev0.data → netgen_mesher-6.2.2506.post48.dev0.data}/data/share/netgen/circle_on_cube.geo +0 -0
  100. {netgen_mesher-6.2.2505.post48.dev0.data → netgen_mesher-6.2.2506.post48.dev0.data}/data/share/netgen/cone.geo +0 -0
  101. {netgen_mesher-6.2.2505.post48.dev0.data → netgen_mesher-6.2.2506.post48.dev0.data}/data/share/netgen/cube.geo +0 -0
  102. {netgen_mesher-6.2.2505.post48.dev0.data → netgen_mesher-6.2.2506.post48.dev0.data}/data/share/netgen/cubeandring.geo +0 -0
  103. {netgen_mesher-6.2.2505.post48.dev0.data → netgen_mesher-6.2.2506.post48.dev0.data}/data/share/netgen/cubeandspheres.geo +0 -0
  104. {netgen_mesher-6.2.2505.post48.dev0.data → netgen_mesher-6.2.2506.post48.dev0.data}/data/share/netgen/cubemcyl.geo +0 -0
  105. {netgen_mesher-6.2.2505.post48.dev0.data → netgen_mesher-6.2.2506.post48.dev0.data}/data/share/netgen/cubemsphere.geo +0 -0
  106. {netgen_mesher-6.2.2505.post48.dev0.data → netgen_mesher-6.2.2506.post48.dev0.data}/data/share/netgen/cylinder.geo +0 -0
  107. {netgen_mesher-6.2.2505.post48.dev0.data → netgen_mesher-6.2.2506.post48.dev0.data}/data/share/netgen/cylsphere.geo +0 -0
  108. {netgen_mesher-6.2.2505.post48.dev0.data → netgen_mesher-6.2.2506.post48.dev0.data}/data/share/netgen/doc/ng4.pdf +0 -0
  109. {netgen_mesher-6.2.2505.post48.dev0.data → netgen_mesher-6.2.2506.post48.dev0.data}/data/share/netgen/ellipsoid.geo +0 -0
  110. {netgen_mesher-6.2.2505.post48.dev0.data → netgen_mesher-6.2.2506.post48.dev0.data}/data/share/netgen/ellipticcyl.geo +0 -0
  111. {netgen_mesher-6.2.2505.post48.dev0.data → netgen_mesher-6.2.2506.post48.dev0.data}/data/share/netgen/extrusion.geo +0 -0
  112. {netgen_mesher-6.2.2505.post48.dev0.data → netgen_mesher-6.2.2506.post48.dev0.data}/data/share/netgen/fichera.geo +0 -0
  113. {netgen_mesher-6.2.2505.post48.dev0.data → netgen_mesher-6.2.2506.post48.dev0.data}/data/share/netgen/frame.step +0 -0
  114. {netgen_mesher-6.2.2505.post48.dev0.data → netgen_mesher-6.2.2506.post48.dev0.data}/data/share/netgen/hinge.stl +0 -0
  115. {netgen_mesher-6.2.2505.post48.dev0.data → netgen_mesher-6.2.2506.post48.dev0.data}/data/share/netgen/lshape3d.geo +0 -0
  116. {netgen_mesher-6.2.2505.post48.dev0.data → netgen_mesher-6.2.2506.post48.dev0.data}/data/share/netgen/manyholes.geo +0 -0
  117. {netgen_mesher-6.2.2505.post48.dev0.data → netgen_mesher-6.2.2506.post48.dev0.data}/data/share/netgen/manyholes2.geo +0 -0
  118. {netgen_mesher-6.2.2505.post48.dev0.data → netgen_mesher-6.2.2506.post48.dev0.data}/data/share/netgen/matrix.geo +0 -0
  119. {netgen_mesher-6.2.2505.post48.dev0.data → netgen_mesher-6.2.2506.post48.dev0.data}/data/share/netgen/ortho.geo +0 -0
  120. {netgen_mesher-6.2.2505.post48.dev0.data → netgen_mesher-6.2.2506.post48.dev0.data}/data/share/netgen/part1.stl +0 -0
  121. {netgen_mesher-6.2.2505.post48.dev0.data → netgen_mesher-6.2.2506.post48.dev0.data}/data/share/netgen/period.geo +0 -0
  122. {netgen_mesher-6.2.2505.post48.dev0.data → netgen_mesher-6.2.2506.post48.dev0.data}/data/share/netgen/py_tutorials/exportNeutral.py +0 -0
  123. {netgen_mesher-6.2.2505.post48.dev0.data → netgen_mesher-6.2.2506.post48.dev0.data}/data/share/netgen/py_tutorials/mesh.py +0 -0
  124. {netgen_mesher-6.2.2505.post48.dev0.data → netgen_mesher-6.2.2506.post48.dev0.data}/data/share/netgen/py_tutorials/shaft.geo +0 -0
  125. {netgen_mesher-6.2.2505.post48.dev0.data → netgen_mesher-6.2.2506.post48.dev0.data}/data/share/netgen/revolution.geo +0 -0
  126. {netgen_mesher-6.2.2505.post48.dev0.data → netgen_mesher-6.2.2506.post48.dev0.data}/data/share/netgen/screw.step +0 -0
  127. {netgen_mesher-6.2.2505.post48.dev0.data → netgen_mesher-6.2.2506.post48.dev0.data}/data/share/netgen/sculpture.geo +0 -0
  128. {netgen_mesher-6.2.2505.post48.dev0.data → netgen_mesher-6.2.2506.post48.dev0.data}/data/share/netgen/shaft.geo +0 -0
  129. {netgen_mesher-6.2.2505.post48.dev0.data → netgen_mesher-6.2.2506.post48.dev0.data}/data/share/netgen/shell.geo +0 -0
  130. {netgen_mesher-6.2.2505.post48.dev0.data → netgen_mesher-6.2.2506.post48.dev0.data}/data/share/netgen/sphere.geo +0 -0
  131. {netgen_mesher-6.2.2505.post48.dev0.data → netgen_mesher-6.2.2506.post48.dev0.data}/data/share/netgen/sphereincube.geo +0 -0
  132. {netgen_mesher-6.2.2505.post48.dev0.data → netgen_mesher-6.2.2506.post48.dev0.data}/data/share/netgen/square.in2d +0 -0
  133. {netgen_mesher-6.2.2505.post48.dev0.data → netgen_mesher-6.2.2506.post48.dev0.data}/data/share/netgen/squarecircle.in2d +0 -0
  134. {netgen_mesher-6.2.2505.post48.dev0.data → netgen_mesher-6.2.2506.post48.dev0.data}/data/share/netgen/squarehole.in2d +0 -0
  135. {netgen_mesher-6.2.2505.post48.dev0.data → netgen_mesher-6.2.2506.post48.dev0.data}/data/share/netgen/torus.geo +0 -0
  136. {netgen_mesher-6.2.2505.post48.dev0.data → netgen_mesher-6.2.2506.post48.dev0.data}/data/share/netgen/trafo.geo +0 -0
  137. {netgen_mesher-6.2.2505.post48.dev0.data → netgen_mesher-6.2.2506.post48.dev0.data}/data/share/netgen/twobricks.geo +0 -0
  138. {netgen_mesher-6.2.2505.post48.dev0.data → netgen_mesher-6.2.2506.post48.dev0.data}/data/share/netgen/twocubes.geo +0 -0
  139. {netgen_mesher-6.2.2505.post48.dev0.data → netgen_mesher-6.2.2506.post48.dev0.data}/data/share/netgen/twocyl.geo +0 -0
  140. {netgen_mesher-6.2.2505.post48.dev0.dist-info → netgen_mesher-6.2.2506.post48.dev0.dist-info}/AUTHORS +0 -0
  141. {netgen_mesher-6.2.2505.post48.dev0.dist-info → netgen_mesher-6.2.2506.post48.dev0.dist-info}/LICENSE +0 -0
  142. {netgen_mesher-6.2.2505.post48.dev0.dist-info → netgen_mesher-6.2.2506.post48.dev0.dist-info}/WHEEL +0 -0
  143. {netgen_mesher-6.2.2505.post48.dev0.dist-info → netgen_mesher-6.2.2506.post48.dev0.dist-info}/entry_points.txt +0 -0
  144. {netgen_mesher-6.2.2505.post48.dev0.dist-info → netgen_mesher-6.2.2506.post48.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
@@ -17,6 +17,6 @@ def _get_diagnostics():
17
17
  def load_occ_libs():
18
18
  ...
19
19
  __diagnostics_template: str = '\nNetgen diagnostics:\n sys.platform: {sys.platform}\n sys.executable: {sys.executable}\n sys.version: {sys.version}\n Netgen python version: {config.PYTHON_VERSION}\n Netgen path {__file__}\n Netgen config {config.__file__}\n Netgen version {config.NETGEN_VERSION}\n sys.path: {sys.path}\n'
20
- _netgen_bin_dir: str = 'C:\\gitlabci\\tools\\builds\\3zsqG5ns\\0\\ngsolve\\netgen\\_skbuild\\win-amd64-3.13\\cmake-install\\netgen'
21
- _netgen_lib_dir: str = 'C:\\gitlabci\\tools\\builds\\3zsqG5ns\\0\\ngsolve\\netgen\\_skbuild\\win-amd64-3.13\\cmake-install\\netgen'
20
+ _netgen_bin_dir: str = 'C:\\gitlabci\\tools\\builds\\3zsqG5ns9\\0\\ngsolve\\ngsolve\\external_dependencies\\netgen\\_skbuild\\win-amd64-3.13\\cmake-install\\netgen'
21
+ _netgen_lib_dir: str = 'C:\\gitlabci\\tools\\builds\\3zsqG5ns9\\0\\ngsolve\\ngsolve\\external_dependencies\\netgen\\_skbuild\\win-amd64-3.13\\cmake-install\\netgen'
22
22
  v: sys.version_info # value = sys.version_info(major=3, minor=13, micro=2, releaselevel='final', serial=0)
@@ -1,14 +1,15 @@
1
- set(NETGEN_VERSION "6.2.2505-48-gdf5d2ec7")
1
+ set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreadedDLL")
2
+ set(NETGEN_VERSION "6.2.2506-48-g8263c0bc")
2
3
  set(NETGEN_VERSION_MAJOR "6")
3
4
  set(NETGEN_VERSION_MINOR "2")
4
- set(NETGEN_VERSION_PATCH "2505")
5
+ set(NETGEN_VERSION_PATCH "2506")
5
6
  set(NETGEN_VERSION_TWEAK "48")
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)
@@ -16,7 +17,7 @@ get_filename_component(NETGEN_LIBRARY_DIR "${NETGEN_CMAKE_DIR}/../lib" ABSOLUTE)
16
17
  get_filename_component(NETGEN_PYTHON_DIR "${NETGEN_CMAKE_DIR}/../../" ABSOLUTE)
17
18
  get_filename_component(NETGEN_RESOURCE_DIR "${NETGEN_CMAKE_DIR}/../../share" ABSOLUTE)
18
19
 
19
- set(NETGEN_SOURCE_DIR "C:/gitlabci/tools/builds/3zsqG5ns/0/ngsolve/netgen")
20
+ set(NETGEN_SOURCE_DIR "C:/gitlabci/tools/builds/3zsqG5ns9/0/ngsolve/ngsolve/external_dependencies/netgen")
20
21
 
21
22
  set(NETGEN_BUILD_FOR_CONDA "ON")
22
23
  set(NETGEN_CHECK_RANGE "OFF")
@@ -41,15 +42,15 @@ set(NETGEN_OPENGL_LIBRARIES "opengl32;glu32")
41
42
  set(NETGEN_PYTHON_EXECUTABLE "C:/Python313/python.exe")
42
43
  set(NETGEN_PYTHON_INCLUDE_DIRS "C:/Python313/Include")
43
44
  set(NETGEN_PYTHON_LIBRARIES "C:/Python313/libs/python313.lib")
44
- set(NETGEN_TCL_INCLUDE_PATH "C:/gitlabci/tools/builds/3zsqG5ns/0/ngsolve/netgen/_skbuild/win-amd64-3.13/cmake-build/dependencies/src/project_tcl/generic")
45
+ set(NETGEN_TCL_INCLUDE_PATH "C:/gitlabci/tools/builds/3zsqG5ns9/0/ngsolve/ngsolve/external_dependencies/netgen/_skbuild/win-amd64-3.13/cmake-build/dependencies/src/project_tcl/generic")
45
46
  set(NETGEN_TCL_LIBRARY "C:/Python313/tcl/tclstub86.lib")
46
47
  set(NETGEN_TK_DND_LIBRARY "")
47
- set(NETGEN_TK_INCLUDE_PATH "C:/gitlabci/tools/builds/3zsqG5ns/0/ngsolve/netgen/_skbuild/win-amd64-3.13/cmake-build/dependencies/src/project_tk/generic")
48
+ set(NETGEN_TK_INCLUDE_PATH "C:/gitlabci/tools/builds/3zsqG5ns9/0/ngsolve/ngsolve/external_dependencies/netgen/_skbuild/win-amd64-3.13/cmake-build/dependencies/src/project_tk/generic")
48
49
  set(NETGEN_TK_LIBRARY "C:/Python313/tcl/tkstub86.lib")
49
50
  set(NETGEN_X11_X11_LIB "")
50
51
  set(NETGEN_X11_Xmu_LIB "")
51
- set(NETGEN_ZLIB_INCLUDE_DIRS "C:/gitlabci/tools/builds/3zsqG5ns/0/ngsolve/netgen/_skbuild/win-amd64-3.13/cmake-build/dependencies/zlib/include")
52
- set(NETGEN_ZLIB_LIBRARIES "C:/gitlabci/tools/builds/3zsqG5ns/0/ngsolve/netgen/_skbuild/win-amd64-3.13/cmake-build/dependencies/zlib/lib/zlibstatic.lib")
52
+ set(NETGEN_ZLIB_INCLUDE_DIRS "C:/gitlabci/tools/builds/3zsqG5ns9/0/ngsolve/ngsolve/external_dependencies/netgen/_skbuild/win-amd64-3.13/cmake-build/dependencies/zlib/include")
53
+ set(NETGEN_ZLIB_LIBRARIES "C:/gitlabci/tools/builds/3zsqG5ns9/0/ngsolve/ngsolve/external_dependencies/netgen/_skbuild/win-amd64-3.13/cmake-build/dependencies/zlib/lib/zlibstatic.lib")
53
54
 
54
55
  set(NETGEN_USE_GUI ON)
55
56
  set(NETGEN_USE_PYTHON ON)
@@ -5,7 +5,7 @@ __all__ = ['BUILD_FOR_CONDA', 'BUILD_STUB_FILES', 'CHECK_RANGE', 'CMAKE_INSTALL_
5
5
  BUILD_FOR_CONDA: bool = True
6
6
  BUILD_STUB_FILES: bool = True
7
7
  CHECK_RANGE: bool = False
8
- CMAKE_INSTALL_PREFIX: str = 'C:/gitlabci/tools/builds/3zsqG5ns/0/ngsolve/netgen/_skbuild/win-amd64-3.13/cmake-install'
8
+ CMAKE_INSTALL_PREFIX: str = 'C:/gitlabci/tools/builds/3zsqG5ns9/0/ngsolve/ngsolve/external_dependencies/netgen/_skbuild/win-amd64-3.13/cmake-install'
9
9
  DEBUG_LOG: bool = False
10
10
  ENABLE_CPP_CORE_GUIDELINES_CHECK: bool = False
11
11
  ENABLE_UNIT_TESTS: bool = False
@@ -14,13 +14,13 @@ 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.2505-48-gdf5d2ec7'
18
- NETGEN_VERSION_GIT: str = 'v6.2.2505-48-gdf5d2ec7'
19
- NETGEN_VERSION_HASH: str = 'gdf5d2ec7'
17
+ NETGEN_VERSION: str = '6.2.2506-48-g8263c0bc'
18
+ NETGEN_VERSION_GIT: str = 'v6.2.2506-48-g8263c0bc'
19
+ NETGEN_VERSION_HASH: str = 'g8263c0bc'
20
20
  NETGEN_VERSION_MAJOR: str = '6'
21
21
  NETGEN_VERSION_MINOR: str = '2'
22
- NETGEN_VERSION_PATCH: str = '2505'
23
- NETGEN_VERSION_PYTHON: str = '6.2.2505.post48.dev0'
22
+ NETGEN_VERSION_PATCH: str = '2506'
23
+ NETGEN_VERSION_PYTHON: str = '6.2.2506.post48.dev0'
24
24
  NETGEN_VERSION_TWEAK: str = '48'
25
25
  NG_COMPILE_FLAGS: str = '/arch:AVX2'
26
26
  NG_INSTALL_DIR_BIN: str = 'netgen'
@@ -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.2505-48-gdf5d2ec7'
52
+ version: str = 'v6.2.2506-48-g8263c0bc'
netgen/config/config.py CHANGED
@@ -26,7 +26,7 @@ USE_OCC = _cmake_to_bool("ON")
26
26
  USE_PYTHON = _cmake_to_bool("ON")
27
27
  USE_SPDLOG = _cmake_to_bool("")
28
28
 
29
- CMAKE_INSTALL_PREFIX = "C:/gitlabci/tools/builds/3zsqG5ns/0/ngsolve/netgen/_skbuild/win-amd64-3.13/cmake-install"
29
+ CMAKE_INSTALL_PREFIX = "C:/gitlabci/tools/builds/3zsqG5ns9/0/ngsolve/ngsolve/external_dependencies/netgen/_skbuild/win-amd64-3.13/cmake-install"
30
30
  NG_INSTALL_DIR_PYTHON = "."
31
31
  NG_INSTALL_DIR_BIN = "netgen"
32
32
  NG_INSTALL_DIR_LIB = "netgen/lib"
@@ -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.2505-48-gdf5d2ec7"
46
- NETGEN_VERSION_GIT = "v6.2.2505-48-gdf5d2ec7"
47
- NETGEN_VERSION_PYTHON = "6.2.2505.post48.dev0"
45
+ NETGEN_VERSION = "6.2.2506-48-g8263c0bc"
46
+ NETGEN_VERSION_GIT = "v6.2.2506-48-g8263c0bc"
47
+ NETGEN_VERSION_PYTHON = "6.2.2506.post48.dev0"
48
48
 
49
49
  NETGEN_VERSION_MAJOR = "6"
50
50
  NETGEN_VERSION_MINOR = "2"
51
51
  NETGEN_VERSION_TWEAK = "48"
52
- NETGEN_VERSION_PATCH = "2505"
53
- NETGEN_VERSION_HASH = "gdf5d2ec7"
52
+ NETGEN_VERSION_PATCH = "2506"
53
+ NETGEN_VERSION_HASH = "g8263c0bc"
54
54
 
55
55
  PYTHON_VERSION = "3.13.2"
56
56
  PYTHON_VERSION_MAJOR = "3"
netgen/config/config.pyi CHANGED
@@ -7,7 +7,7 @@ def get_cmake_dir():
7
7
  BUILD_FOR_CONDA: bool = True
8
8
  BUILD_STUB_FILES: bool = True
9
9
  CHECK_RANGE: bool = False
10
- CMAKE_INSTALL_PREFIX: str = 'C:/gitlabci/tools/builds/3zsqG5ns/0/ngsolve/netgen/_skbuild/win-amd64-3.13/cmake-install'
10
+ CMAKE_INSTALL_PREFIX: str = 'C:/gitlabci/tools/builds/3zsqG5ns9/0/ngsolve/ngsolve/external_dependencies/netgen/_skbuild/win-amd64-3.13/cmake-install'
11
11
  DEBUG_LOG: bool = False
12
12
  ENABLE_CPP_CORE_GUIDELINES_CHECK: bool = False
13
13
  ENABLE_UNIT_TESTS: bool = False
@@ -16,13 +16,13 @@ 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.2505-48-gdf5d2ec7'
20
- NETGEN_VERSION_GIT: str = 'v6.2.2505-48-gdf5d2ec7'
21
- NETGEN_VERSION_HASH: str = 'gdf5d2ec7'
19
+ NETGEN_VERSION: str = '6.2.2506-48-g8263c0bc'
20
+ NETGEN_VERSION_GIT: str = 'v6.2.2506-48-g8263c0bc'
21
+ NETGEN_VERSION_HASH: str = 'g8263c0bc'
22
22
  NETGEN_VERSION_MAJOR: str = '6'
23
23
  NETGEN_VERSION_MINOR: str = '2'
24
- NETGEN_VERSION_PATCH: str = '2505'
25
- NETGEN_VERSION_PYTHON: str = '6.2.2505.post48.dev0'
24
+ NETGEN_VERSION_PATCH: str = '2506'
25
+ NETGEN_VERSION_PYTHON: str = '6.2.2506.post48.dev0'
26
26
  NETGEN_VERSION_TWEAK: str = '48'
27
27
  NG_COMPILE_FLAGS: str = '/arch:AVX2'
28
28
  NG_INSTALL_DIR_BIN: str = 'netgen'
@@ -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.2505-48-gdf5d2ec7'
54
+ version: str = 'v6.2.2506-48-g8263c0bc'
@@ -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,14 @@ namespace ngcore
276
281
  virtual Archive & operator & (std::string & str) = 0;
277
282
  virtual Archive & operator & (char *& str) = 0;
278
283
 
284
+ #ifdef NETGEN_PYTHON
285
+ Archive & operator &(std::any& a)
286
+ {
287
+ Shallow(a);
288
+ return *this;
289
+ }
290
+ #endif
291
+
279
292
  Archive & operator & (VersionInfo & version)
280
293
  {
281
294
  if(Output())
@@ -505,7 +518,8 @@ namespace ngcore
505
518
  template <typename T>
506
519
  Archive& operator & (ngcore::Shallow<T>& shallow)
507
520
  {
508
- this->Shallow(shallow.val);
521
+ if(shallow_to_python)
522
+ Shallow(shallow.val);
509
523
  return *this;
510
524
  }
511
525
 
@@ -763,6 +777,7 @@ namespace ngcore
763
777
 
764
778
  #ifdef NETGEN_PYTHON
765
779
  friend pybind11::object CastAnyToPy(const std::any&);
780
+ friend std::any CastPyToAny(pybind11::object&);
766
781
  #endif // NETGEN_PYTHON
767
782
 
768
783
  // Returns ClassArchiveInfo of Demangled typeid
@@ -347,7 +347,7 @@ namespace ngcore
347
347
 
348
348
  */
349
349
  template <typename T>
350
- auto Range(const T & x)
350
+ NETGEN_INLINE auto Range(const T & x)
351
351
  -> typename std::enable_if<std::is_integral_v<T> || !has_range<T>,
352
352
  decltype(Range_impl(x, std::is_integral<T>()))>::type {
353
353
  return Range_impl(x, std::is_integral<T>());
@@ -455,11 +455,11 @@ namespace ngcore
455
455
  using BaseArrayObject<FlatArray>::ILLEGAL_POSITION;
456
456
 
457
457
  /// initialize array
458
- NETGEN_INLINE FlatArray () = default;
458
+ FlatArray () = default;
459
459
  // { ; } // size = 0; data = 0; }
460
460
 
461
461
  /// copy constructor allows size-type conversion
462
- NETGEN_INLINE FlatArray (const FlatArray & a2) = default;
462
+ FlatArray (const FlatArray & a2) = default;
463
463
  // : size(a2.Size()), data(a2.data) { ; }
464
464
 
465
465
  /// provide size and memory
@@ -1442,8 +1442,24 @@ namespace ngcore
1442
1442
  template <class T, typename TLESS>
1443
1443
  void QuickSort (FlatArray<T> data, TLESS less)
1444
1444
  {
1445
- if (data.Size() <= 1) return;
1445
+ constexpr size_t INSERTION_SORT_THRESHOLD = 16;
1446
+
1447
+ if (data.Size() <= INSERTION_SORT_THRESHOLD) {
1448
+ // insertion sort
1449
+ for (ptrdiff_t k = 1; k < data.Size(); ++k)
1450
+ {
1451
+ auto newval = data[k];
1452
+ ptrdiff_t l = k;
1453
+ for ( ; l > 0 && less(newval, data[l-1]); --l)
1454
+ data[l] = data[l-1];
1455
+ data[l] = newval;
1456
+ }
1457
+
1458
+ return;
1459
+ }
1446
1460
 
1461
+ // if (data.Size() <= 1) return;
1462
+
1447
1463
  ptrdiff_t i = 0;
1448
1464
  ptrdiff_t j = data.Size()-1;
1449
1465
 
@@ -9,7 +9,6 @@
9
9
 
10
10
  namespace ngcore
11
11
  {
12
- using ngcore::IfPos;
13
12
 
14
13
  // Automatic differentiation datatype
15
14
 
@@ -247,7 +246,6 @@ NETGEN_INLINE AutoDiffVec<D,SCAL> operator* (const AutoDiffVec<D,SCAL> & x, cons
247
246
  }
248
247
 
249
248
  /// AutoDiffVec times AutoDiffVec
250
- using ngcore::sqr;
251
249
  template<int D, typename SCAL>
252
250
  NETGEN_INLINE AutoDiffVec<D,SCAL> sqr (const AutoDiffVec<D,SCAL> & x) throw()
253
251
  {
@@ -645,10 +643,10 @@ NETGEN_INLINE AutoDiffVec<D,SCAL> asin (AutoDiffVec<D,SCAL> x)
645
643
  SCAL last;
646
644
 
647
645
  public:
648
- NETGEN_INLINE AutoDiffRec () = default;
649
- NETGEN_INLINE AutoDiffRec (const AutoDiffRec &) = default;
646
+ AutoDiffRec () = default;
647
+ AutoDiffRec (const AutoDiffRec &) = default;
650
648
  NETGEN_INLINE AutoDiffRec (AutoDiffRec<D-1,SCAL> _rec, SCAL _last) : rec(_rec), last(_last) { ; }
651
- NETGEN_INLINE AutoDiffRec & operator= (const AutoDiffRec &) = default;
649
+ AutoDiffRec & operator= (const AutoDiffRec &) = default;
652
650
 
653
651
  NETGEN_INLINE AutoDiffRec (SCAL aval) : rec(aval), last(0.0) { ; }
654
652
  NETGEN_INLINE AutoDiffRec (SCAL aval, int diffindex) : rec(aval, diffindex), last((diffindex==D-1) ? 1.0 : 0.0) { ; }
@@ -691,14 +689,14 @@ NETGEN_INLINE AutoDiffVec<D,SCAL> asin (AutoDiffVec<D,SCAL> x)
691
689
  {
692
690
  SCAL val;
693
691
  public:
694
- NETGEN_INLINE AutoDiffRec () = default;
695
- NETGEN_INLINE AutoDiffRec (const AutoDiffRec &) = default;
692
+ AutoDiffRec () = default;
693
+ AutoDiffRec (const AutoDiffRec &) = default;
696
694
  NETGEN_INLINE AutoDiffRec (SCAL _val) : val(_val) { ; }
697
695
  NETGEN_INLINE AutoDiffRec (SCAL _val, SCAL /* _dummylast */) : val(_val) { ; }
698
696
  NETGEN_INLINE AutoDiffRec (SCAL aval, const SCAL * /* grad */)
699
697
  : val(aval) { }
700
698
 
701
- NETGEN_INLINE AutoDiffRec & operator= (const AutoDiffRec &) = default;
699
+ AutoDiffRec & operator= (const AutoDiffRec &) = default;
702
700
  NETGEN_INLINE AutoDiffRec & operator= (SCAL aval) { val = aval; return *this; }
703
701
 
704
702
  NETGEN_INLINE SCAL Value() const { return val; }
@@ -719,8 +717,8 @@ NETGEN_INLINE AutoDiffVec<D,SCAL> asin (AutoDiffVec<D,SCAL> x)
719
717
  SCAL val;
720
718
  SCAL last;
721
719
  public:
722
- NETGEN_INLINE AutoDiffRec () = default;
723
- NETGEN_INLINE AutoDiffRec (const AutoDiffRec &) = default;
720
+ AutoDiffRec () = default;
721
+ AutoDiffRec (const AutoDiffRec &) = default;
724
722
  NETGEN_INLINE AutoDiffRec (SCAL _val) : val(_val), last(0.0) { ; }
725
723
  NETGEN_INLINE AutoDiffRec (SCAL _val, SCAL _last) : val(_val), last(_last) { ; }
726
724
  NETGEN_INLINE AutoDiffRec (SCAL aval, int diffindex) : val(aval), last((diffindex==0) ? 1.0 : 0.0) { ; }
@@ -733,7 +731,7 @@ NETGEN_INLINE AutoDiffVec<D,SCAL> asin (AutoDiffVec<D,SCAL> x)
733
731
  DValue(0) = ad.DValue(0);
734
732
  }
735
733
 
736
- NETGEN_INLINE AutoDiffRec & operator= (const AutoDiffRec &) = default;
734
+ AutoDiffRec & operator= (const AutoDiffRec &) = default;
737
735
  NETGEN_INLINE AutoDiffRec & operator= (SCAL aval) { val = aval; last = 0.0; return *this; }
738
736
 
739
737
  NETGEN_INLINE SCAL Value() const { return val; }
@@ -9,8 +9,6 @@
9
9
 
10
10
  namespace ngcore
11
11
  {
12
- using ngcore::IfPos;
13
-
14
12
  // Automatic second differentiation datatype
15
13
 
16
14
 
@@ -155,7 +155,7 @@ public:
155
155
 
156
156
  NGCORE_API auto * Data() const { return data; }
157
157
 
158
- const size_t GetMemoryUsage() const { return owns_data ? (size+CHAR_BIT-1)/CHAR_BIT : 0; }
158
+ size_t GetMemoryUsage() const { return owns_data ? (size+CHAR_BIT-1)/CHAR_BIT : 0; }
159
159
  const MemoryTracer& GetMemoryTracer() const { return mt; }
160
160
  void StartMemoryTracing() const
161
161
  {
@@ -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
  ///
@@ -53,7 +53,7 @@ namespace ngcore
53
53
 
54
54
  public:
55
55
  ///
56
- constexpr NETGEN_INLINE IVec () = default;
56
+ constexpr IVec () = default;
57
57
  constexpr NETGEN_INLINE IVec (const IVec & i1) : i(i1.i) { }
58
58
 
59
59
  constexpr NETGEN_INLINE IVec (T ai1) : i(ai1) { }
@@ -198,17 +198,17 @@ namespace ngcore
198
198
  }
199
199
  #else // defined(NETGEN_TRACE_MEMORY) && !defined(__CUDA_ARCH__)
200
200
  public:
201
- MemoryTracer() {}
202
- MemoryTracer( std::string /* name */ ) {}
201
+ NETGEN_INLINE MemoryTracer() {}
202
+ NETGEN_INLINE MemoryTracer( std::string /* name */ ) {}
203
203
  template <typename... TRest>
204
- MemoryTracer( std::string /* name */, TRest & ... ) {}
204
+ NETGEN_INLINE MemoryTracer( std::string /* name */, TRest & ... ) {}
205
205
 
206
- void Alloc(size_t /* size */) const {}
207
- void Free(size_t /* size */) const {}
208
- int GetId() const { return 0; }
206
+ NETGEN_INLINE void Alloc(size_t /* size */) const {}
207
+ NETGEN_INLINE void Free(size_t /* size */) const {}
208
+ NETGEN_INLINE int GetId() const { return 0; }
209
209
 
210
210
  template <typename... TRest>
211
- void Track(TRest&...) const {}
211
+ NETGEN_INLINE void Track(TRest&...) const {}
212
212
 
213
213
  static std::string GetName(int /* id */) { return ""; }
214
214
  std::string GetName() const { return ""; }
@@ -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
+
@@ -39,6 +39,9 @@
39
39
  #ifdef WIN32
40
40
  #define NGCORE_API_EXPORT __declspec(dllexport)
41
41
  #define NGCORE_API_IMPORT __declspec(dllimport)
42
+ #elif EMSCRIPTEN
43
+ #define NGCORE_API_EXPORT __attribute__((visibility("default"))) __attribute__((used))
44
+ #define NGCORE_API_IMPORT
42
45
  #else
43
46
  #define NGCORE_API_EXPORT __attribute__((visibility("default")))
44
47
  #define NGCORE_API_IMPORT __attribute__((visibility("default")))
@@ -57,6 +60,14 @@
57
60
  #define NETGEN_HD
58
61
  #endif // __CUDACC__
59
62
 
63
+
64
+ #ifdef __CUDACC__
65
+ // partial override of overloaded function (Archive, MultAdd)
66
+ #pragma nv_diag_suppress 611
67
+ #endif
68
+
69
+
70
+
60
71
  #ifdef __INTEL_COMPILER
61
72
  #define NETGEN_ALWAYS_INLINE __forceinline
62
73
  #define NETGEN_INLINE __forceinline inline
@@ -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
  }
@@ -31,7 +31,93 @@ namespace ngcore
31
31
  };
32
32
 
33
33
 
34
- // *************************** int64 ***************************
34
+ // *************************** int32 ***************************
35
+
36
+
37
+
38
+ template<>
39
+ class SIMD<int32_t,2>
40
+ {
41
+ int32x2_t data;
42
+ public:
43
+ static constexpr int Size() { return 2; }
44
+ SIMD() {}
45
+ SIMD (int32_t val) : data{val,val} {}
46
+ SIMD (int32_t v0, int32_t v1) : data{v0,v1} { }
47
+ SIMD (SIMD<int32_t,1> lo, SIMD<int32_t,1> hi) : data{lo[0], hi[0] } { }
48
+ SIMD (std::array<int32_t, 2> arr) : data{arr[0], arr[1]} { }
49
+
50
+ SIMD (int32x2_t _data) { data = _data; }
51
+
52
+ NETGEN_INLINE auto Data() const { return data; }
53
+ NETGEN_INLINE auto & Data() { return data; }
54
+
55
+ SIMD<int32_t,1> Lo() const { return Get<0>(); }
56
+ SIMD<int32_t,1> Hi() const { return Get<1>(); }
57
+
58
+ int32_t operator[] (int i) const { return data[i]; }
59
+ int32_t & operator[] (int i) { return ((int32_t*)&data)[i]; }
60
+
61
+ template <int I>
62
+ int32_t Get() const { return data[I]; }
63
+ static SIMD FirstInt(int n0=0) { return { n0+0, n0+1 }; }
64
+ };
65
+
66
+
67
+ template<>
68
+ class SIMD<int32_t,4>
69
+ {
70
+ int32x4_t data;
71
+ public:
72
+ static constexpr int Size() { return 4; }
73
+ SIMD() {}
74
+ SIMD (int32_t val) : data{val,val,val,val} {}
75
+ SIMD (int32_t v0, int32_t v1, int32_t v2, int32_t v3) : data{v0,v1,v2,v3} { }
76
+ SIMD (std::array<int32_t, 4> arr) : data{arr[0], arr[1], arr[2], arr[3]} { }
77
+
78
+ SIMD (int32x4_t _data) { data = _data; }
79
+ SIMD (SIMD<int32_t,2> lo, SIMD<int32_t,2> hi) : data{vcombine_s32(lo.Data(), hi.Data())} {}
80
+ SIMD (int32_t * p) : data{vld1q_s32(p)} { }
81
+
82
+ NETGEN_INLINE auto Data() const { return data; }
83
+ NETGEN_INLINE auto & Data() { return data; }
84
+
85
+ SIMD<int32_t,2> Lo() const { return vget_low_s32(data); }
86
+ SIMD<int32_t,2> Hi() const { return vget_high_s32(data); }
87
+
88
+ int32_t operator[] (int i) const { return data[i]; }
89
+ int32_t & operator[] (int i) { return ((int32_t*)&data)[i]; }
90
+
91
+ void Store (int32_t * p) { vst1q_s32(p, data); }
92
+
93
+ template <int I>
94
+ int32_t Get() const { return data[I]; }
95
+ static SIMD FirstInt(int n0=0) { return { n0+0, n0+1, n0+2, n0+3 }; }
96
+ };
97
+
98
+
99
+
100
+ NETGEN_INLINE auto Min (SIMD<int32_t,2> a, SIMD<int32_t,2> b) {
101
+ return SIMD<int32_t,2>(vmin_s32(a.Data(), b.Data()));
102
+ }
103
+
104
+ NETGEN_INLINE auto Max (SIMD<int32_t,2> a, SIMD<int32_t,2> b) {
105
+ return SIMD<int32_t,2>(vmax_s32(a.Data(), b.Data()));
106
+ }
107
+
108
+
109
+ NETGEN_INLINE auto Min (SIMD<int32_t,4> a, SIMD<int32_t,4> b) {
110
+ return SIMD<int32_t,4>(vminq_s32(a.Data(), b.Data()));
111
+ }
112
+
113
+ NETGEN_INLINE auto Max (SIMD<int32_t,4> a, SIMD<int32_t,4> b) {
114
+ return SIMD<int32_t,4>(vmaxq_s32(a.Data(), b.Data()));
115
+ }
116
+
117
+
118
+
119
+
120
+ // *************************** int64 ***************************
35
121
 
36
122
  template<>
37
123
  class SIMD<int64_t,2>
@@ -266,15 +352,24 @@ namespace ngcore
266
352
 
267
353
  NETGEN_INLINE SIMD<double,2> rsqrt (SIMD<double,2> x)
268
354
  {
269
- // return 1.0 / sqrt(x);
355
+ return 1.0 / sqrt(x);
270
356
 
271
- SIMD<double,2> y = vrsqrteq_f64(x.Data());
357
+ // SIMD<double,2> y = vrsqrteq_f64(x.Data());
358
+
359
+ /*
360
+ y = y * vrsqrtsq_f64( (x*y).Data(), y.Data());
361
+ y = y * vrsqrtsq_f64( (x*y).Data(), y.Data());
362
+ y = y * vrsqrtsq_f64( (x*y).Data(), y.Data());
363
+ */
364
+
365
+ /*
272
366
  auto x_half = 0.5*x;
273
367
  y = y * (1.5 - (x_half * y * y));
274
368
  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);
369
+ y = y * (1.5 - (x_half * y * y));
370
+
277
371
  return y;
372
+ */
278
373
  }
279
374
 
280
375