netgen-mesher 6.2.2506.post35.dev0__cp314-cp314-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 (340) hide show
  1. netgen/NgOCC.py +7 -0
  2. netgen/__init__.py +114 -0
  3. netgen/__init__.pyi +22 -0
  4. netgen/__main__.py +53 -0
  5. netgen/cmake/NetgenConfig.cmake +79 -0
  6. netgen/cmake/netgen-targets-release.cmake +69 -0
  7. netgen/cmake/netgen-targets.cmake +146 -0
  8. netgen/config/__init__.py +1 -0
  9. netgen/config/__init__.pyi +52 -0
  10. netgen/config/__main__.py +4 -0
  11. netgen/config/config.py +68 -0
  12. netgen/config/config.pyi +54 -0
  13. netgen/csg.py +25 -0
  14. netgen/geom2d.py +178 -0
  15. netgen/gui.py +82 -0
  16. netgen/include/core/archive.hpp +1256 -0
  17. netgen/include/core/array.hpp +1760 -0
  18. netgen/include/core/autodiff.hpp +1131 -0
  19. netgen/include/core/autodiffdiff.hpp +733 -0
  20. netgen/include/core/bitarray.hpp +240 -0
  21. netgen/include/core/concurrentqueue.h +3619 -0
  22. netgen/include/core/exception.hpp +145 -0
  23. netgen/include/core/flags.hpp +199 -0
  24. netgen/include/core/hashtable.hpp +1281 -0
  25. netgen/include/core/localheap.hpp +318 -0
  26. netgen/include/core/logging.hpp +117 -0
  27. netgen/include/core/memtracer.hpp +221 -0
  28. netgen/include/core/mpi4py_pycapi.h +245 -0
  29. netgen/include/core/mpi_wrapper.hpp +643 -0
  30. netgen/include/core/ng_mpi.hpp +94 -0
  31. netgen/include/core/ng_mpi_generated_declarations.hpp +155 -0
  32. netgen/include/core/ng_mpi_native.hpp +25 -0
  33. netgen/include/core/ngcore.hpp +32 -0
  34. netgen/include/core/ngcore_api.hpp +152 -0
  35. netgen/include/core/ngstream.hpp +115 -0
  36. netgen/include/core/paje_trace.hpp +279 -0
  37. netgen/include/core/profiler.hpp +382 -0
  38. netgen/include/core/python_ngcore.hpp +457 -0
  39. netgen/include/core/ranges.hpp +109 -0
  40. netgen/include/core/register_archive.hpp +100 -0
  41. netgen/include/core/signal.hpp +82 -0
  42. netgen/include/core/simd.hpp +160 -0
  43. netgen/include/core/simd_arm64.hpp +407 -0
  44. netgen/include/core/simd_avx.hpp +394 -0
  45. netgen/include/core/simd_avx512.hpp +285 -0
  46. netgen/include/core/simd_generic.hpp +1053 -0
  47. netgen/include/core/simd_math.hpp +178 -0
  48. netgen/include/core/simd_sse.hpp +289 -0
  49. netgen/include/core/statushandler.hpp +37 -0
  50. netgen/include/core/symboltable.hpp +153 -0
  51. netgen/include/core/table.hpp +810 -0
  52. netgen/include/core/taskmanager.hpp +1161 -0
  53. netgen/include/core/type_traits.hpp +65 -0
  54. netgen/include/core/utils.hpp +385 -0
  55. netgen/include/core/version.hpp +102 -0
  56. netgen/include/core/xbool.hpp +47 -0
  57. netgen/include/csg/algprim.hpp +563 -0
  58. netgen/include/csg/brick.hpp +150 -0
  59. netgen/include/csg/csg.hpp +43 -0
  60. netgen/include/csg/csgeom.hpp +389 -0
  61. netgen/include/csg/csgparser.hpp +101 -0
  62. netgen/include/csg/curve2d.hpp +67 -0
  63. netgen/include/csg/edgeflw.hpp +112 -0
  64. netgen/include/csg/explicitcurve2d.hpp +113 -0
  65. netgen/include/csg/extrusion.hpp +185 -0
  66. netgen/include/csg/gencyl.hpp +70 -0
  67. netgen/include/csg/geoml.hpp +16 -0
  68. netgen/include/csg/identify.hpp +213 -0
  69. netgen/include/csg/manifold.hpp +29 -0
  70. netgen/include/csg/meshsurf.hpp +46 -0
  71. netgen/include/csg/polyhedra.hpp +121 -0
  72. netgen/include/csg/revolution.hpp +180 -0
  73. netgen/include/csg/singularref.hpp +84 -0
  74. netgen/include/csg/solid.hpp +295 -0
  75. netgen/include/csg/specpoin.hpp +194 -0
  76. netgen/include/csg/spline3d.hpp +99 -0
  77. netgen/include/csg/splinesurface.hpp +85 -0
  78. netgen/include/csg/surface.hpp +394 -0
  79. netgen/include/csg/triapprox.hpp +63 -0
  80. netgen/include/csg/vscsg.hpp +34 -0
  81. netgen/include/general/autodiff.hpp +356 -0
  82. netgen/include/general/autoptr.hpp +39 -0
  83. netgen/include/general/gzstream.h +121 -0
  84. netgen/include/general/hashtabl.hpp +1692 -0
  85. netgen/include/general/myadt.hpp +48 -0
  86. netgen/include/general/mystring.hpp +226 -0
  87. netgen/include/general/netgenout.hpp +205 -0
  88. netgen/include/general/ngarray.hpp +797 -0
  89. netgen/include/general/ngbitarray.hpp +149 -0
  90. netgen/include/general/ngpython.hpp +74 -0
  91. netgen/include/general/optmem.hpp +44 -0
  92. netgen/include/general/parthreads.hpp +138 -0
  93. netgen/include/general/seti.hpp +50 -0
  94. netgen/include/general/sort.hpp +47 -0
  95. netgen/include/general/spbita2d.hpp +59 -0
  96. netgen/include/general/stack.hpp +114 -0
  97. netgen/include/general/table.hpp +280 -0
  98. netgen/include/general/template.hpp +509 -0
  99. netgen/include/geom2d/csg2d.hpp +750 -0
  100. netgen/include/geom2d/geometry2d.hpp +280 -0
  101. netgen/include/geom2d/spline2d.hpp +234 -0
  102. netgen/include/geom2d/vsgeom2d.hpp +28 -0
  103. netgen/include/gprim/adtree.hpp +1392 -0
  104. netgen/include/gprim/geom2d.hpp +858 -0
  105. netgen/include/gprim/geom3d.hpp +749 -0
  106. netgen/include/gprim/geomfuncs.hpp +212 -0
  107. netgen/include/gprim/geomobjects.hpp +544 -0
  108. netgen/include/gprim/geomops.hpp +404 -0
  109. netgen/include/gprim/geomtest3d.hpp +101 -0
  110. netgen/include/gprim/gprim.hpp +33 -0
  111. netgen/include/gprim/spline.hpp +778 -0
  112. netgen/include/gprim/splinegeometry.hpp +73 -0
  113. netgen/include/gprim/transform3d.hpp +216 -0
  114. netgen/include/include/acisgeom.hpp +3 -0
  115. netgen/include/include/csg.hpp +1 -0
  116. netgen/include/include/geometry2d.hpp +1 -0
  117. netgen/include/include/gprim.hpp +1 -0
  118. netgen/include/include/incopengl.hpp +62 -0
  119. netgen/include/include/inctcl.hpp +13 -0
  120. netgen/include/include/incvis.hpp +6 -0
  121. netgen/include/include/linalg.hpp +1 -0
  122. netgen/include/include/meshing.hpp +1 -0
  123. netgen/include/include/myadt.hpp +1 -0
  124. netgen/include/include/mydefs.hpp +70 -0
  125. netgen/include/include/mystdlib.h +59 -0
  126. netgen/include/include/netgen_config.hpp +27 -0
  127. netgen/include/include/netgen_version.hpp +9 -0
  128. netgen/include/include/nginterface_v2_impl.hpp +395 -0
  129. netgen/include/include/ngsimd.hpp +1 -0
  130. netgen/include/include/occgeom.hpp +1 -0
  131. netgen/include/include/opti.hpp +1 -0
  132. netgen/include/include/parallel.hpp +1 -0
  133. netgen/include/include/stlgeom.hpp +1 -0
  134. netgen/include/include/visual.hpp +1 -0
  135. netgen/include/interface/rw_medit.hpp +11 -0
  136. netgen/include/interface/writeuser.hpp +80 -0
  137. netgen/include/linalg/densemat.hpp +414 -0
  138. netgen/include/linalg/linalg.hpp +29 -0
  139. netgen/include/linalg/opti.hpp +142 -0
  140. netgen/include/linalg/polynomial.hpp +47 -0
  141. netgen/include/linalg/vector.hpp +217 -0
  142. netgen/include/meshing/adfront2.hpp +274 -0
  143. netgen/include/meshing/adfront3.hpp +332 -0
  144. netgen/include/meshing/basegeom.hpp +370 -0
  145. netgen/include/meshing/bcfunctions.hpp +53 -0
  146. netgen/include/meshing/bisect.hpp +72 -0
  147. netgen/include/meshing/boundarylayer.hpp +113 -0
  148. netgen/include/meshing/classifyhpel.hpp +1984 -0
  149. netgen/include/meshing/clusters.hpp +46 -0
  150. netgen/include/meshing/curvedelems.hpp +274 -0
  151. netgen/include/meshing/delaunay2d.hpp +73 -0
  152. netgen/include/meshing/fieldlines.hpp +103 -0
  153. netgen/include/meshing/findip.hpp +198 -0
  154. netgen/include/meshing/findip2.hpp +103 -0
  155. netgen/include/meshing/geomsearch.hpp +69 -0
  156. netgen/include/meshing/global.hpp +54 -0
  157. netgen/include/meshing/hpref_hex.hpp +330 -0
  158. netgen/include/meshing/hpref_prism.hpp +3405 -0
  159. netgen/include/meshing/hpref_pyramid.hpp +154 -0
  160. netgen/include/meshing/hpref_quad.hpp +2082 -0
  161. netgen/include/meshing/hpref_segm.hpp +122 -0
  162. netgen/include/meshing/hpref_tet.hpp +4230 -0
  163. netgen/include/meshing/hpref_trig.hpp +848 -0
  164. netgen/include/meshing/hprefinement.hpp +366 -0
  165. netgen/include/meshing/improve2.hpp +178 -0
  166. netgen/include/meshing/improve3.hpp +151 -0
  167. netgen/include/meshing/localh.hpp +223 -0
  168. netgen/include/meshing/meshclass.hpp +1076 -0
  169. netgen/include/meshing/meshfunc.hpp +47 -0
  170. netgen/include/meshing/meshing.hpp +63 -0
  171. netgen/include/meshing/meshing2.hpp +163 -0
  172. netgen/include/meshing/meshing3.hpp +123 -0
  173. netgen/include/meshing/meshtool.hpp +90 -0
  174. netgen/include/meshing/meshtype.hpp +1930 -0
  175. netgen/include/meshing/msghandler.hpp +62 -0
  176. netgen/include/meshing/paralleltop.hpp +172 -0
  177. netgen/include/meshing/python_mesh.hpp +206 -0
  178. netgen/include/meshing/ruler2.hpp +172 -0
  179. netgen/include/meshing/ruler3.hpp +211 -0
  180. netgen/include/meshing/soldata.hpp +141 -0
  181. netgen/include/meshing/specials.hpp +17 -0
  182. netgen/include/meshing/surfacegeom.hpp +73 -0
  183. netgen/include/meshing/topology.hpp +1003 -0
  184. netgen/include/meshing/validate.hpp +21 -0
  185. netgen/include/meshing/visual_interface.hpp +71 -0
  186. netgen/include/mydefs.hpp +70 -0
  187. netgen/include/nginterface.h +474 -0
  188. netgen/include/nginterface_v2.hpp +406 -0
  189. netgen/include/nglib.h +697 -0
  190. netgen/include/nglib_occ.h +50 -0
  191. netgen/include/occ/occ_edge.hpp +47 -0
  192. netgen/include/occ/occ_face.hpp +52 -0
  193. netgen/include/occ/occ_solid.hpp +23 -0
  194. netgen/include/occ/occ_utils.hpp +376 -0
  195. netgen/include/occ/occ_vertex.hpp +30 -0
  196. netgen/include/occ/occgeom.hpp +659 -0
  197. netgen/include/occ/occmeshsurf.hpp +168 -0
  198. netgen/include/occ/vsocc.hpp +33 -0
  199. netgen/include/pybind11/LICENSE +29 -0
  200. netgen/include/pybind11/attr.h +722 -0
  201. netgen/include/pybind11/buffer_info.h +208 -0
  202. netgen/include/pybind11/cast.h +2361 -0
  203. netgen/include/pybind11/chrono.h +228 -0
  204. netgen/include/pybind11/common.h +2 -0
  205. netgen/include/pybind11/complex.h +74 -0
  206. netgen/include/pybind11/conduit/README.txt +15 -0
  207. netgen/include/pybind11/conduit/pybind11_conduit_v1.h +116 -0
  208. netgen/include/pybind11/conduit/pybind11_platform_abi_id.h +87 -0
  209. netgen/include/pybind11/conduit/wrap_include_python_h.h +72 -0
  210. netgen/include/pybind11/critical_section.h +56 -0
  211. netgen/include/pybind11/detail/class.h +823 -0
  212. netgen/include/pybind11/detail/common.h +1348 -0
  213. netgen/include/pybind11/detail/cpp_conduit.h +75 -0
  214. netgen/include/pybind11/detail/descr.h +226 -0
  215. netgen/include/pybind11/detail/dynamic_raw_ptr_cast_if_possible.h +39 -0
  216. netgen/include/pybind11/detail/exception_translation.h +71 -0
  217. netgen/include/pybind11/detail/function_record_pyobject.h +191 -0
  218. netgen/include/pybind11/detail/init.h +538 -0
  219. netgen/include/pybind11/detail/internals.h +799 -0
  220. netgen/include/pybind11/detail/native_enum_data.h +209 -0
  221. netgen/include/pybind11/detail/pybind11_namespace_macros.h +82 -0
  222. netgen/include/pybind11/detail/struct_smart_holder.h +378 -0
  223. netgen/include/pybind11/detail/type_caster_base.h +1591 -0
  224. netgen/include/pybind11/detail/typeid.h +65 -0
  225. netgen/include/pybind11/detail/using_smart_holder.h +22 -0
  226. netgen/include/pybind11/detail/value_and_holder.h +90 -0
  227. netgen/include/pybind11/eigen/common.h +9 -0
  228. netgen/include/pybind11/eigen/matrix.h +723 -0
  229. netgen/include/pybind11/eigen/tensor.h +521 -0
  230. netgen/include/pybind11/eigen.h +12 -0
  231. netgen/include/pybind11/embed.h +320 -0
  232. netgen/include/pybind11/eval.h +161 -0
  233. netgen/include/pybind11/functional.h +147 -0
  234. netgen/include/pybind11/gil.h +199 -0
  235. netgen/include/pybind11/gil_safe_call_once.h +102 -0
  236. netgen/include/pybind11/gil_simple.h +37 -0
  237. netgen/include/pybind11/iostream.h +265 -0
  238. netgen/include/pybind11/native_enum.h +67 -0
  239. netgen/include/pybind11/numpy.h +2312 -0
  240. netgen/include/pybind11/operators.h +202 -0
  241. netgen/include/pybind11/options.h +92 -0
  242. netgen/include/pybind11/pybind11.h +3645 -0
  243. netgen/include/pybind11/pytypes.h +2680 -0
  244. netgen/include/pybind11/stl/filesystem.h +114 -0
  245. netgen/include/pybind11/stl.h +666 -0
  246. netgen/include/pybind11/stl_bind.h +858 -0
  247. netgen/include/pybind11/subinterpreter.h +299 -0
  248. netgen/include/pybind11/trampoline_self_life_support.h +65 -0
  249. netgen/include/pybind11/type_caster_pyobject_ptr.h +61 -0
  250. netgen/include/pybind11/typing.h +298 -0
  251. netgen/include/pybind11/warnings.h +75 -0
  252. netgen/include/stlgeom/meshstlsurface.hpp +67 -0
  253. netgen/include/stlgeom/stlgeom.hpp +491 -0
  254. netgen/include/stlgeom/stlline.hpp +193 -0
  255. netgen/include/stlgeom/stltool.hpp +331 -0
  256. netgen/include/stlgeom/stltopology.hpp +419 -0
  257. netgen/include/stlgeom/vsstl.hpp +58 -0
  258. netgen/include/visualization/meshdoc.hpp +42 -0
  259. netgen/include/visualization/mvdraw.hpp +325 -0
  260. netgen/include/visualization/vispar.hpp +128 -0
  261. netgen/include/visualization/visual.hpp +28 -0
  262. netgen/include/visualization/visual_api.hpp +10 -0
  263. netgen/include/visualization/vssolution.hpp +399 -0
  264. netgen/lib/libnggui.lib +0 -0
  265. netgen/lib/ngcore.lib +0 -0
  266. netgen/lib/nglib.lib +0 -0
  267. netgen/lib/togl.lib +0 -0
  268. netgen/libnggui.dll +0 -0
  269. netgen/libngguipy.lib +0 -0
  270. netgen/libngguipy.pyd +0 -0
  271. netgen/libngpy/_NgOCC.pyi +1545 -0
  272. netgen/libngpy/__init__.pyi +7 -0
  273. netgen/libngpy/_csg.pyi +259 -0
  274. netgen/libngpy/_geom2d.pyi +323 -0
  275. netgen/libngpy/_meshing.pyi +1111 -0
  276. netgen/libngpy/_stl.pyi +131 -0
  277. netgen/libngpy.lib +0 -0
  278. netgen/libngpy.pyd +0 -0
  279. netgen/meshing.py +65 -0
  280. netgen/ngcore.dll +0 -0
  281. netgen/nglib.dll +0 -0
  282. netgen/occ.py +52 -0
  283. netgen/read_gmsh.py +259 -0
  284. netgen/read_meshio.py +22 -0
  285. netgen/stl.py +2 -0
  286. netgen/togl.dll +0 -0
  287. netgen/version.py +2 -0
  288. netgen/webgui.py +529 -0
  289. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/boundarycondition.geo +16 -0
  290. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/boxcyl.geo +32 -0
  291. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/circle_on_cube.geo +27 -0
  292. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/cone.geo +13 -0
  293. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/cube.geo +16 -0
  294. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/cubeandring.geo +55 -0
  295. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/cubeandspheres.geo +21 -0
  296. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/cubemcyl.geo +18 -0
  297. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/cubemsphere.geo +19 -0
  298. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/cylinder.geo +12 -0
  299. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/cylsphere.geo +12 -0
  300. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/doc/ng4.pdf +0 -0
  301. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/ellipsoid.geo +8 -0
  302. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/ellipticcyl.geo +10 -0
  303. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/extrusion.geo +99 -0
  304. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/fichera.geo +24 -0
  305. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/frame.step +11683 -0
  306. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/hinge.stl +8486 -0
  307. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/lshape3d.geo +26 -0
  308. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/manyholes.geo +26 -0
  309. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/manyholes2.geo +26 -0
  310. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/matrix.geo +27 -0
  311. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/ortho.geo +11 -0
  312. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/part1.stl +2662 -0
  313. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/period.geo +33 -0
  314. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/py_tutorials/exportNeutral.py +26 -0
  315. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/py_tutorials/mesh.py +19 -0
  316. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/py_tutorials/shaft.geo +65 -0
  317. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/revolution.geo +18 -0
  318. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/screw.step +1694 -0
  319. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/sculpture.geo +13 -0
  320. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/shaft.geo +65 -0
  321. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/shell.geo +10 -0
  322. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/sphere.geo +8 -0
  323. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/sphereincube.geo +17 -0
  324. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/square.in2d +35 -0
  325. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/squarecircle.in2d +48 -0
  326. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/squarehole.in2d +47 -0
  327. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/torus.geo +8 -0
  328. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/trafo.geo +57 -0
  329. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/twobricks.geo +15 -0
  330. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/twocubes.geo +18 -0
  331. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/twocyl.geo +16 -0
  332. netgen_mesher-6.2.2506.post35.dev0.dist-info/METADATA +15 -0
  333. netgen_mesher-6.2.2506.post35.dev0.dist-info/RECORD +340 -0
  334. netgen_mesher-6.2.2506.post35.dev0.dist-info/WHEEL +5 -0
  335. netgen_mesher-6.2.2506.post35.dev0.dist-info/entry_points.txt +2 -0
  336. netgen_mesher-6.2.2506.post35.dev0.dist-info/licenses/AUTHORS +1 -0
  337. netgen_mesher-6.2.2506.post35.dev0.dist-info/licenses/LICENSE +504 -0
  338. netgen_mesher-6.2.2506.post35.dev0.dist-info/top_level.txt +2 -0
  339. pyngcore/__init__.py +1 -0
  340. pyngcore/pyngcore.cp314-win_amd64.pyd +0 -0
@@ -0,0 +1,149 @@
1
+ #ifndef FILE_BitArray
2
+ #define FILE_BitArray
3
+
4
+ /**************************************************************************/
5
+ /* File: bitarray.hpp */
6
+ /* Author: Joachim Schoeberl */
7
+ /* Date: 01. Jun. 95 */
8
+ /**************************************************************************/
9
+
10
+ #include <limits.h>
11
+
12
+ namespace netgen
13
+ {
14
+
15
+ /**
16
+ data type NgBitArray
17
+
18
+ NgBitArray is a compressed array of Boolean information. By Set and Clear
19
+ the whole array or one bit can be set or reset, respectively.
20
+ Test returns the state of the occurring bit.
21
+ No range checking is done.
22
+
23
+ index ranges from 0 to size-1
24
+ */
25
+ class NgBitArray
26
+ {
27
+ INDEX size;
28
+ unsigned char * data;
29
+
30
+ public:
31
+
32
+ // [[ deprecated ("use BitArray instead")]]
33
+ DLL_HEADER NgBitArray ();
34
+ ///
35
+ // [[ deprecated ("use BitArray instead")]]
36
+ DLL_HEADER NgBitArray (INDEX asize);
37
+ ///
38
+ DLL_HEADER ~NgBitArray ();
39
+
40
+ ///
41
+ DLL_HEADER void SetSize (INDEX asize);
42
+ ///
43
+ INDEX Size () const
44
+ {
45
+ return size;
46
+ }
47
+
48
+ ///
49
+ DLL_HEADER void Set ();
50
+ ///
51
+ void Set (INDEX i)
52
+ {
53
+ data[Addr(i)] |= Mask(i);
54
+ }
55
+
56
+ DLL_HEADER void Clear ();
57
+
58
+
59
+ void Clear (INDEX i)
60
+ {
61
+ data[Addr(i)] &= ~Mask(i);
62
+ }
63
+
64
+ bool Test (INDEX i) const
65
+ {
66
+ return (data[i / CHAR_BIT] & (char(1) << (i % CHAR_BIT) ) ) ? true : false;
67
+ }
68
+
69
+ ///
70
+ void Invert ();
71
+ ///
72
+ void And (const NgBitArray & ba2);
73
+ ///
74
+ void Or (const NgBitArray & ba2);
75
+ private:
76
+ ///
77
+ inline unsigned char Mask (INDEX i) const
78
+ {
79
+ return char(1) << (i % CHAR_BIT);
80
+ }
81
+ ///
82
+ inline INDEX Addr (INDEX i) const
83
+ {
84
+ return (i / CHAR_BIT);
85
+ }
86
+
87
+ ///
88
+ NgBitArray & operator= (NgBitArray &);
89
+ ///
90
+ NgBitArray (const NgBitArray &);
91
+ };
92
+
93
+
94
+
95
+ // print bitarray
96
+ inline ostream & operator<< (ostream & s, const NgBitArray & a)
97
+ {
98
+ for (int i = 1; i <= a.Size(); i++)
99
+ {
100
+ s << int (a.Test(i));
101
+ if (i % 40 == 0) s << "\n";
102
+ }
103
+ if (a.Size() % 40 != 0) s << "\n";
104
+ return s;
105
+ }
106
+
107
+
108
+ /*
109
+ inline
110
+ INDEX NgBitArray :: Size () const
111
+ {
112
+ return size;
113
+ }
114
+
115
+ inline
116
+ unsigned char NgBitArray :: Mask (INDEX i) const
117
+ {
118
+ return char(1) << (i % CHAR_BIT);
119
+ }
120
+
121
+ inline
122
+ INDEX NgBitArray :: Addr (INDEX i) const
123
+ {
124
+ return (i / CHAR_BIT);
125
+ }
126
+ inline
127
+ void NgBitArray :: Set (INDEX i)
128
+ {
129
+ data[Addr(i)] |= Mask(i);
130
+ }
131
+
132
+ inline
133
+ void NgBitArray :: Clear (INDEX i)
134
+ {
135
+ data[Addr(i)] &= ~Mask(i);
136
+ }
137
+
138
+
139
+ inline
140
+ int NgBitArray :: Test (INDEX i) const
141
+ {
142
+ return (data[i / CHAR_BIT] & (char(1) << (i % CHAR_BIT) ) ) ? 1 : 0;
143
+ }
144
+
145
+ */
146
+
147
+ }
148
+
149
+ #endif
@@ -0,0 +1,74 @@
1
+ #ifdef NG_PYTHON
2
+
3
+ #include <core/python_ngcore.hpp>
4
+
5
+ #include <pybind11/operators.h>
6
+ #include <pybind11/numpy.h>
7
+ #include <pybind11/stl.h>
8
+ #include <iostream>
9
+ #include <sstream>
10
+
11
+ // using namespace ngcore;
12
+
13
+ template <typename T>
14
+ py::array MoveToNumpy(std::vector<T>& vec)
15
+ {
16
+ auto newvec = new std::vector<T>();
17
+ std::swap(*newvec, vec);
18
+ auto capsule = py::capsule(newvec, [](void *v) { delete reinterpret_cast<std::vector<T>*>(v); });
19
+ return py::array(newvec->size(), newvec->data(), capsule);
20
+ }
21
+
22
+ namespace PYBIND11_NAMESPACE {
23
+ template<typename T>
24
+ bool CheckCast( py::handle obj ) {
25
+ try{
26
+ obj.cast<T>();
27
+ return true;
28
+ }
29
+ catch (py::cast_error &e) {
30
+ return false;
31
+ }
32
+ }
33
+
34
+
35
+ template <typename T>
36
+ struct extract
37
+ {
38
+ py::handle obj;
39
+ extract( py::handle aobj ) : obj(aobj) {}
40
+
41
+ bool check() { return CheckCast<T>(obj); }
42
+ T operator()() { return obj.cast<T>(); }
43
+ };
44
+ }
45
+
46
+ struct NGDummyArgument {};
47
+
48
+ inline void NOOP_Deleter(void *) { ; }
49
+
50
+ namespace netgen
51
+ {
52
+
53
+ //////////////////////////////////////////////////////////////////////
54
+ // Lambda to function pointer conversion
55
+ template <typename Function>
56
+ struct function_traits
57
+ : public function_traits<decltype(&Function::operator())> {};
58
+
59
+ template <typename ClassType, typename ReturnType, typename... Args>
60
+ struct function_traits<ReturnType(ClassType::*)(Args...) const> {
61
+ typedef ReturnType (*pointer)(Args...);
62
+ typedef ReturnType return_type;
63
+ };
64
+
65
+ template <typename Function>
66
+ typename function_traits<Function>::pointer
67
+ FunctionPointer (const Function& lambda) {
68
+ return static_cast<typename function_traits<Function>::pointer>(lambda);
69
+ }
70
+
71
+ } // namespace netgen
72
+
73
+ #endif
74
+
@@ -0,0 +1,44 @@
1
+ #ifndef FILE_OPTMEM
2
+ #define FILE_OPTMEM
3
+
4
+ /**************************************************************************/
5
+ /* File: optmem.hh */
6
+ /* Author: Joachim Schoeberl */
7
+ /* Date: 04. Apr. 97 */
8
+ /**************************************************************************/
9
+
10
+ #include <mydefs.hpp>
11
+
12
+ #include "ngarray.hpp"
13
+
14
+ namespace netgen
15
+ {
16
+
17
+ /**
18
+ Optimized Memory allocation classes
19
+ */
20
+
21
+ class BlockAllocator
22
+ {
23
+ private:
24
+ ///
25
+ unsigned size, blocks;
26
+ ///
27
+ void * freelist;
28
+ ///
29
+ NgArray<char*> bablocks;
30
+ mutex block_allocator_mutex;
31
+ public:
32
+ ///
33
+ DLL_HEADER BlockAllocator (unsigned asize, unsigned ablocks = 100);
34
+ ///
35
+ DLL_HEADER ~BlockAllocator ();
36
+ ///
37
+ DLL_HEADER void * Alloc ();
38
+ ///
39
+ DLL_HEADER void Free (void * p);
40
+ };
41
+
42
+ }
43
+
44
+ #endif
@@ -0,0 +1,138 @@
1
+ #ifndef FILE_PARTHREADS
2
+ #define FILE_PARTHREADS
3
+
4
+ /**************************************************************************/
5
+ /* File: parthreads.hh */
6
+ /* Author: Joachim Schoeberl */
7
+ /* Date: 22. Nov. 2000 */
8
+ /**************************************************************************/
9
+
10
+ /*
11
+ Parallel thread, Mutex,
12
+ */
13
+ #include <functional>
14
+
15
+ namespace netgen
16
+ {
17
+
18
+ #ifdef NO_PARALLEL_THREADS
19
+
20
+ class NgMutex { };
21
+
22
+ class NgLock
23
+ {
24
+ public:
25
+ NgLock (NgMutex & mut, bool lock = 0) { ; }
26
+ void Lock () { ; }
27
+ void UnLock () { ; }
28
+ };
29
+
30
+ #else
31
+
32
+ typedef std::mutex NgMutex;
33
+
34
+ class NgLock
35
+ {
36
+ NgMutex & mut;
37
+ bool locked;
38
+ public:
39
+ NgLock (NgMutex & ngmut, bool lock = false)
40
+ : mut (ngmut)
41
+ {
42
+ if (lock)
43
+ mut.lock();
44
+
45
+ locked = lock;
46
+ };
47
+
48
+ ~NgLock()
49
+ {
50
+ if (locked)
51
+ mut.unlock();
52
+ }
53
+
54
+ void Lock ()
55
+ {
56
+ mut.lock();
57
+ locked = true;
58
+ }
59
+ void UnLock ()
60
+ {
61
+ mut.unlock();
62
+ locked = false;
63
+ }
64
+ /*
65
+ int TryLock ()
66
+ {
67
+ return mut.try_lock();
68
+ }
69
+ */
70
+ };
71
+
72
+
73
+ #endif
74
+
75
+
76
+ // Simple ParallelFor function to replace OpenMP
77
+ template<typename TFunc>
78
+ void ParallelFor( int first, int next, const TFunc & f )
79
+ {
80
+ int nthreads = std::thread::hardware_concurrency();
81
+ std::thread * threads = new std::thread[nthreads];
82
+ for (int i=0; i<nthreads; i++)
83
+ {
84
+ int myfirst = first + (next-first)*i/nthreads;
85
+ int mynext = first + (next-first)*(i+1)/nthreads;
86
+ threads[i] = std::thread( [myfirst,mynext,&f] ()
87
+ {
88
+ f(myfirst, mynext);
89
+ });
90
+ }
91
+
92
+ for (int i=0; i<nthreads; i++)
93
+ threads[i].join();
94
+ delete [] threads;
95
+ }
96
+
97
+
98
+
99
+ typedef void (*NgTaskManager)(std::function<void(int,int)>);
100
+ typedef void (*NgTracer)(std::string, bool); // false .. start, true .. stop
101
+
102
+ inline void DummyTaskManager (std::function<void(int,int)> func)
103
+ {
104
+ func(0,2);
105
+ func(1,2);
106
+ }
107
+
108
+ inline void DummyTracer (std::string, bool) { ; }
109
+
110
+ template <typename FUNC>
111
+ inline void ParallelFor (NgTaskManager tm, size_t n, FUNC func)
112
+ {
113
+ (*tm) ([n,func] (size_t nr, size_t nums)
114
+ {
115
+ size_t begin = nr*n / nums;
116
+ size_t end = (nr+1)*n / nums;
117
+
118
+ for (size_t i = begin; i < end; i++)
119
+ func(i);
120
+ });
121
+ }
122
+
123
+ template <typename FUNC>
124
+ inline void ParallelForRange (NgTaskManager tm, size_t n, FUNC func)
125
+ {
126
+ (*tm) ([n,func] (size_t nr, size_t nums)
127
+ {
128
+ size_t begin = nr*n / nums;
129
+ size_t end = (nr+1)*n / nums;
130
+ func(begin, end);
131
+ });
132
+ }
133
+
134
+
135
+
136
+ }
137
+
138
+ #endif
@@ -0,0 +1,50 @@
1
+ #ifndef FILE_SETI
2
+ #define FILE_SETI
3
+
4
+
5
+ /**************************************************************************/
6
+ /* File: seti.hh */
7
+ /* Author: Joachim Schoeberl */
8
+ /* Date: 20. Mar. 98 */
9
+ /**************************************************************************/
10
+
11
+ namespace netgen
12
+ {
13
+
14
+ /**
15
+ Set of Integers
16
+ */
17
+ class IndexSet
18
+ {
19
+ NgArray<int> set;
20
+ NgBitArray flags;
21
+ public:
22
+ IndexSet (int maxind);
23
+
24
+ ~IndexSet ();
25
+ /// increase range to maxind
26
+ void SetMaxIndex (int maxind);
27
+ int IsIn (int ind) const
28
+ {
29
+ return flags.Test (ind);
30
+ }
31
+
32
+ void Add (int ind)
33
+ {
34
+ if (!flags.Test(ind))
35
+ {
36
+ set.Append (ind);
37
+ flags.Set (ind);
38
+ }
39
+ }
40
+
41
+ void Del (int ind);
42
+ void Clear ();
43
+
44
+ const NgArray<int> & GetArray() { return set; }
45
+ };
46
+
47
+ }
48
+
49
+ #endif
50
+
@@ -0,0 +1,47 @@
1
+ #ifndef FILE_SORT
2
+ #define FILE_SORT
3
+
4
+ /**************************************************************************/
5
+ /* File: sort.hh */
6
+ /* Author: Joachim Schoeberl */
7
+ /* Date: 07. Jan. 00 */
8
+ /**************************************************************************/
9
+
10
+ namespace netgen
11
+ {
12
+
13
+ // order(i) is sorted index of element i
14
+ extern void Sort (const NgArray<double> & values,
15
+ NgArray<int> & order);
16
+
17
+ extern void QuickSort (const NgArray<double> & values,
18
+ NgArray<int> & order);
19
+
20
+
21
+
22
+
23
+ template <class T>
24
+ inline void BubbleSort (int size, T * data)
25
+ {
26
+ T hv;
27
+ for (int i = 0; i < size; i++)
28
+ for (int j = i+1; j < size; j++)
29
+ if (data[i] > data[j])
30
+ {
31
+ hv = data[i];
32
+ data[i] = data[j];
33
+ data[j] = hv;
34
+ }
35
+ }
36
+
37
+ template <class T>
38
+ inline void BubbleSort (NgArray<T> & data)
39
+ {
40
+ if(data.Size() > 0)
41
+ // BubbleSort (data.Size(), &data[data.Begin()]);
42
+ BubbleSort (data.Size(), &data[*data.Range().begin()]);
43
+ }
44
+
45
+ }
46
+
47
+ #endif
@@ -0,0 +1,59 @@
1
+ #ifndef FILE_SPBITA2D
2
+ #define FILE_SPBITA2D
3
+
4
+ /**************************************************************************/
5
+ /* File: spbita2d.hh */
6
+ /* Author: Joachim Schoeberl */
7
+ /* Date: 01. Jun. 95 */
8
+ /**************************************************************************/
9
+
10
+ /**
11
+ Implementation of sparse 2 dimensional bitarray
12
+ */
13
+
14
+ namespace netgen
15
+ {
16
+
17
+ class SPARSE_BIT_Array_2D
18
+ {
19
+ class linestruct { public: INDEX size; INDEX maxsize; INDEX * col; };
20
+
21
+ ///
22
+ linestruct * lines;
23
+ ///
24
+ INDEX height, width;
25
+
26
+ public:
27
+
28
+ ///
29
+ SPARSE_BIT_Array_2D (INDEX ah = 0, INDEX aw = 0);
30
+ ///
31
+ ~SPARSE_BIT_Array_2D ();
32
+
33
+ ///
34
+ void SetSize (INDEX ah, INDEX aw = 0);
35
+ ///
36
+ void DeleteElements ();
37
+
38
+ ///
39
+ int Get (INDEX i, INDEX j) const;
40
+
41
+ ///
42
+ INDEX Height () const { return height; }
43
+ ///
44
+ INDEX Width () const { return width; }
45
+
46
+ ///
47
+ void Set (INDEX i, INDEX j);
48
+ ///
49
+ int Test (INDEX i, INDEX j) const;
50
+
51
+ ///
52
+ INDEX BitsInLine (INDEX i) const { return lines[i-1].size; }
53
+ ///
54
+ INDEX GetIndex (INDEX i, INDEX nr) const { return lines[i-1].col[nr-1]; }
55
+ };
56
+
57
+ }
58
+
59
+ #endif
@@ -0,0 +1,114 @@
1
+ #ifndef FILE_STACK
2
+ #define FILE_STACK
3
+
4
+ /*****************************************************************************/
5
+ /* File: stack.hh */
6
+ /* Author: Wolfram Muehlhuber */
7
+ /* Date: September 98 */
8
+ /*****************************************************************************/
9
+
10
+ /*
11
+
12
+ Stack class, based on a resizable array
13
+
14
+ */
15
+
16
+
17
+ // #include "array.hpp"
18
+
19
+ namespace netgen
20
+ {
21
+
22
+ ///
23
+ template <class T> class STACK
24
+ {
25
+ public:
26
+ ///
27
+ inline STACK (INDEX asize = 0, INDEX ainc = 0);
28
+ ///
29
+ inline ~STACK ();
30
+
31
+ ///
32
+ inline void Push (const T & el);
33
+ ///
34
+ inline T & Pop ();
35
+ ///
36
+ const inline T & Top () const;
37
+ ///
38
+ inline int IsEmpty () const;
39
+ ///
40
+ inline void MakeEmpty ();
41
+
42
+ private:
43
+ ///
44
+ NgArray<T> elems;
45
+ ///
46
+ INDEX size;
47
+ };
48
+
49
+
50
+
51
+
52
+ /*
53
+
54
+ Stack class, based on a resizable array
55
+
56
+ */
57
+
58
+ template <class T>
59
+ inline STACK<T> :: STACK (INDEX asize, INDEX ainc)
60
+ : elems(asize, ainc)
61
+ {
62
+ size = 0;
63
+ }
64
+
65
+
66
+ template <class T>
67
+ inline STACK<T> :: ~STACK ()
68
+ {
69
+ ;
70
+ }
71
+
72
+
73
+ template <class T>
74
+ inline void STACK<T> :: Push (const T & el)
75
+ {
76
+ if (size < elems.Size())
77
+ elems.Elem(++size) = el;
78
+ else
79
+ {
80
+ elems.Append(el);
81
+ size++;
82
+ }
83
+ }
84
+
85
+
86
+ template <class T>
87
+ inline T & STACK<T> :: Pop ()
88
+ {
89
+ return elems.Elem(size--);
90
+ }
91
+
92
+
93
+ template <class T>
94
+ const inline T & STACK<T> :: Top () const
95
+ {
96
+ return elems.Get(size);
97
+ }
98
+
99
+ template <class T>
100
+ inline int STACK<T> :: IsEmpty () const
101
+ {
102
+ return (size == 0);
103
+ }
104
+
105
+
106
+ template <class T>
107
+ inline void STACK<T> :: MakeEmpty ()
108
+ {
109
+ size = 0;
110
+ }
111
+
112
+ }
113
+
114
+ #endif