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,509 @@
1
+ #ifndef FILE_TEMPLATE
2
+ #define FILE_TEMPLATE
3
+
4
+ /**************************************************************************/
5
+ /* File: template.hh */
6
+ /* Author: Joachim Schoeberl */
7
+ /* Date: 01. Jun. 95 */
8
+ /**************************************************************************/
9
+
10
+ #include <core/utils.hpp>
11
+
12
+ namespace netgen
13
+ {
14
+ using namespace ngcore;
15
+ /*
16
+ templates, global types, defines and variables
17
+ */
18
+
19
+ DLL_HEADER extern const std::string netgen_version;
20
+
21
+ /// The following value may be adapted to the hardware !
22
+ #ifndef CLOCKS_PER_SEC
23
+ #define CLOCKS_PER_SEC 1000000
24
+ #endif
25
+
26
+
27
+ // #include <iostream>
28
+ /** output stream for testing.
29
+ testout is opened by main */
30
+
31
+ /** use instead of cout */
32
+ DLL_HEADER extern ostream * mycout;
33
+
34
+ /** error output stream */
35
+ DLL_HEADER extern ostream * myerr;
36
+
37
+ /** Error messages display.
38
+ Error messages are displayed by this function */
39
+ DLL_HEADER extern void MyError (const char * ch);
40
+
41
+
42
+ /** Rings the bell.
43
+ Produces nr beeps. */
44
+ DLL_HEADER extern void MyBeep (int nr = 1);
45
+
46
+
47
+ /**
48
+ INDEX is a typedef for (at least) 4-byte integer
49
+ */
50
+ typedef int INDEX;
51
+
52
+ /**
53
+ BOOL is a typedef for boolean variables
54
+ */
55
+ // typedef int BOOL;
56
+
57
+ typedef int ELIND;
58
+ typedef int PIND;
59
+
60
+
61
+ class twoint
62
+ {
63
+ public: ///
64
+ int i1, i2; ///
65
+ twoint() {};
66
+ ///
67
+ twoint(int ii1, int ii2) {i1 = ii1; i2 = ii2;}
68
+ friend int operator== (const twoint& t1, const twoint& t2);
69
+ ///
70
+ void Swap() {int x = i1; i1 = i2; i2 = x;}
71
+ void Sort() {if (i1 > i2) {Swap();}}
72
+ };
73
+
74
+ inline int operator== (const twoint& t1, const twoint& t2)
75
+ {
76
+ return t1.i1 == t2.i1 && t1.i2 == t2.i2;
77
+ }
78
+
79
+ class threeint
80
+ {
81
+ public: ///
82
+ int i1, i2, i3; ///
83
+ threeint() {};
84
+ ///
85
+ threeint(int ii1, int ii2, int ii3) {i1 = ii1; i2 = ii2; i3 = ii3;}
86
+ };
87
+
88
+ ///
89
+ class twodouble
90
+ {
91
+ public:
92
+ ///
93
+ double d1, d2;
94
+ ///
95
+ twodouble() {d1 = 0; d2 = 0;};
96
+ ///
97
+ twodouble(double id1, double id2) {d1 = id1; d2 = id2;}
98
+ ///
99
+ void Swap() {double x = d1; d1 = d2; d2 = x;}
100
+ };
101
+
102
+ class fourint { public: int i1, i2, i3, i4; fourint() {}; };
103
+
104
+
105
+ ///
106
+ class INDEX_2;
107
+ ostream & operator<<(ostream & s, const INDEX_2 & i2);
108
+
109
+
110
+ class INDEX_2
111
+ {
112
+ ///
113
+ INDEX i[2];
114
+
115
+ public:
116
+ ///
117
+ // protected:
118
+ INDEX_2 () { }
119
+ INDEX_2 (const INDEX_2&) = default;
120
+ public:
121
+ INDEX_2 (INDEX_2&&) = default;
122
+
123
+ INDEX_2 & operator= (const INDEX_2&) = default;
124
+ INDEX_2 & operator= (INDEX_2&&) = default;
125
+ ///
126
+ constexpr INDEX_2 (INDEX ai1, INDEX ai2)
127
+ : i{ai1, ai2} { }
128
+ // { i[0] = ai1; i[1] = ai2; }
129
+
130
+ ///
131
+ // constexpr INDEX_2 (const INDEX_2 & in2)
132
+ // : i{in2.i[0], in2.i[1]} { }
133
+
134
+ // { i[0] = in2.i[0]; i[1] = in2.i[1]; }
135
+
136
+ ///
137
+ int operator== (const INDEX_2 & in2) const
138
+ { return i[0] == in2.i[0] && i[1] == in2.i[1]; }
139
+
140
+ ///
141
+
142
+
143
+ constexpr INDEX_2 Sort ()
144
+ {
145
+ if (i[0] > i[1])
146
+ {
147
+ INDEX hi = i[0];
148
+ i[0] = i[1];
149
+ i[1] = hi;
150
+ }
151
+ return *this;
152
+ }
153
+
154
+ static INDEX_2 Sort (int i1, int i2)
155
+ {
156
+ if (i1 > i2)
157
+ return INDEX_2 (i2,i1);
158
+ else
159
+ return INDEX_2 (i1,i2);
160
+ }
161
+
162
+ operator std::array<INDEX,2>() { return { i[0], i[1] }; }
163
+ ///
164
+ INDEX & I1 () { return i[0]; }
165
+ ///
166
+ INDEX & I2 () { return i[1]; }
167
+ ///
168
+ INDEX & I (int j) { return i[j-1]; }
169
+ ///
170
+ const INDEX & I1 () const { return i[0]; }
171
+ ///
172
+ const INDEX & I2 () const { return i[1]; }
173
+ ///
174
+ const INDEX & I (int j) const { return i[j-1]; }
175
+ ///
176
+ int & operator[] (int j) { return i[j]; }
177
+ ///
178
+ constexpr const int & operator[] (int j) const { return i[j]; }
179
+ ///
180
+ friend ostream & operator<<(ostream & s, const INDEX_2 & i2);
181
+ };
182
+
183
+ /*
184
+ inline INDEX_2 Sort (const INDEX_2 & i2)
185
+ {
186
+ INDEX_2 tmp = i2;
187
+ tmp.Sort();
188
+ return tmp;
189
+ }
190
+ */
191
+ inline INDEX_2 Sort (INDEX_2 i2)
192
+ {
193
+ i2.Sort();
194
+ return i2;
195
+ }
196
+
197
+ inline bool operator< (const INDEX_2 ia, const INDEX_2 ib)
198
+ {
199
+ if (ia[0] < ib[0]) return true;
200
+ if (ia[0] > ib[0]) return false;
201
+ if (ia[1] < ib[1]) return true;
202
+ return false;
203
+ }
204
+
205
+
206
+ ///
207
+ class INDEX_3
208
+ {
209
+ ///
210
+ INDEX i[3];
211
+
212
+ public:
213
+ ///
214
+ INDEX_3 () { }
215
+ ///
216
+ constexpr INDEX_3 (INDEX ai1, INDEX ai2, INDEX ai3)
217
+ : i{ai1, ai2, ai3} { }
218
+
219
+ ///
220
+ constexpr INDEX_3 (const INDEX_3 & in2)
221
+ : i{in2.i[0], in2.i[1], in2.i[2]} { }
222
+
223
+ static INDEX_3 Sort (INDEX_3 i3)
224
+ {
225
+ return i3.Sort();
226
+ }
227
+
228
+ static INDEX_3 Sort (int i1, int i2, int i3)
229
+ {
230
+ if (i1 > i2) Swap (i1, i2);
231
+ if (i2 > i3) Swap (i2, i3);
232
+ if (i1 > i2) Swap (i1, i2);
233
+ return INDEX_3 (i1, i2, i3);
234
+ }
235
+
236
+ INDEX_3 Sort ()
237
+ {
238
+ if (i[0] > i[1]) Swap (i[0], i[1]);
239
+ if (i[1] > i[2]) Swap (i[1], i[2]);
240
+ if (i[0] > i[1]) Swap (i[0], i[1]);
241
+ return *this;
242
+ }
243
+
244
+ int operator== (const INDEX_3 & in2) const
245
+ { return i[0] == in2.i[0] && i[1] == in2.i[1] && i[2] == in2.i[2];}
246
+
247
+ ///
248
+ INDEX & I1 () { return i[0]; }
249
+ ///
250
+ INDEX & I2 () { return i[1]; }
251
+ ///
252
+ INDEX & I3 () { return i[2]; }
253
+ ///
254
+ INDEX & I (int j) { return i[j-1]; }
255
+ ///
256
+ const INDEX & I1 () const { return i[0]; }
257
+ ///
258
+ const INDEX & I2 () const { return i[1]; }
259
+ ///
260
+ const INDEX & I3 () const { return i[2]; }
261
+ ///
262
+ const INDEX & I (int j) const { return i[j-1]; }
263
+ ///
264
+ int & operator[] (int j) { return i[j]; }
265
+ ///
266
+ const int & operator[] (int j) const { return i[j]; }
267
+
268
+ ///
269
+ friend ostream & operator<<(ostream & s, const INDEX_3 & i3);
270
+ };
271
+
272
+
273
+
274
+ ///
275
+ class INDEX_4
276
+ {
277
+ ///
278
+ INDEX i[4];
279
+
280
+ public:
281
+ ///
282
+ INDEX_4 () { }
283
+ ///
284
+ INDEX_4 (INDEX ai1, INDEX ai2, INDEX ai3, INDEX ai4)
285
+ { i[0] = ai1; i[1] = ai2; i[2] = ai3; i[3] = ai4; }
286
+
287
+ ///
288
+ INDEX_4 (const INDEX_4 & in2)
289
+ { i[0] = in2.i[0]; i[1] = in2.i[1]; i[2] = in2.i[2]; i[3] = in2.i[3]; }
290
+
291
+ ///
292
+ void Sort ();
293
+
294
+ ///
295
+ int operator== (const INDEX_4 & in2) const
296
+ { return
297
+ i[0] == in2.i[0] && i[1] == in2.i[1] &&
298
+ i[2] == in2.i[2] && i[3] == in2.i[3]; }
299
+
300
+ ///
301
+ INDEX & I1 () { return i[0]; }
302
+ ///
303
+ INDEX & I2 () { return i[1]; }
304
+ ///
305
+ INDEX & I3 () { return i[2]; }
306
+ ///
307
+ INDEX & I4 () { return i[3]; }
308
+ ///
309
+ INDEX & I (int j) { return i[j-1]; }
310
+ ///
311
+ const INDEX & I1 () const { return i[0]; }
312
+ ///
313
+ const INDEX & I2 () const { return i[1]; }
314
+ ///
315
+ const INDEX & I3 () const { return i[2]; }
316
+ ///
317
+ const INDEX & I4 () const { return i[3]; }
318
+ ///
319
+ const INDEX & I (int j) const { return i[j-1]; }
320
+ ///
321
+ int & operator[] (int j) { return i[j]; }
322
+ ///
323
+ const int & operator[] (int j) const { return i[j]; }
324
+
325
+ ///
326
+ friend ostream & operator<<(ostream & s, const INDEX_4 & i4);
327
+ };
328
+
329
+
330
+
331
+
332
+
333
+
334
+
335
+
336
+ /// The sort preserves quads !!!
337
+ class INDEX_4Q
338
+ {
339
+ ///
340
+ INDEX i[4];
341
+
342
+ public:
343
+ ///
344
+ INDEX_4Q () { }
345
+ ///
346
+ INDEX_4Q (INDEX ai1, INDEX ai2, INDEX ai3, INDEX ai4)
347
+ { i[0] = ai1; i[1] = ai2; i[2] = ai3; i[3] = ai4; }
348
+
349
+ ///
350
+ INDEX_4Q (const INDEX_4Q & in2)
351
+ { i[0] = in2.i[0]; i[1] = in2.i[1]; i[2] = in2.i[2]; i[3] = in2.i[3]; }
352
+
353
+ ///
354
+ void Sort ();
355
+
356
+ ///
357
+ int operator== (const INDEX_4Q & in2) const
358
+ { return
359
+ i[0] == in2.i[0] && i[1] == in2.i[1] &&
360
+ i[2] == in2.i[2] && i[3] == in2.i[3]; }
361
+
362
+ ///
363
+ INDEX & I1 () { return i[0]; }
364
+ ///
365
+ INDEX & I2 () { return i[1]; }
366
+ ///
367
+ INDEX & I3 () { return i[2]; }
368
+ ///
369
+ INDEX & I4 () { return i[3]; }
370
+ ///
371
+ INDEX & I (int j) { return i[j-1]; }
372
+ ///
373
+ const INDEX & I1 () const { return i[0]; }
374
+ ///
375
+ const INDEX & I2 () const { return i[1]; }
376
+ ///
377
+ const INDEX & I3 () const { return i[2]; }
378
+ ///
379
+ const INDEX & I4 () const { return i[3]; }
380
+ ///
381
+ const INDEX & I (int j) const { return i[j-1]; }
382
+ ///
383
+ friend ostream & operator<<(ostream & s, const INDEX_4Q & i4);
384
+ };
385
+
386
+
387
+ inline bool operator< (const INDEX_4 & a, const INDEX_4 & b)
388
+ {
389
+ for (int j = 0; j < 4; j++)
390
+ {
391
+ if (a[j] < b[j]) return true;
392
+ if (a[j] > b[j]) return false;
393
+ }
394
+ return false;
395
+ }
396
+
397
+
398
+
399
+
400
+
401
+ /*
402
+
403
+
404
+
405
+
406
+ ///
407
+ template <class T>
408
+ inline T min2 (T a, T b)
409
+ {
410
+ ///
411
+ return (a < b) ? a : b;
412
+ }
413
+ ///
414
+ template <class T>
415
+ inline T max2 (T a, T b)
416
+ {
417
+ ///
418
+ return (a > b) ? a : b;
419
+ }
420
+ ///
421
+ template <class T>
422
+ inline T min3 (T a, T b, T c)
423
+ {
424
+ ///
425
+ return (a < b) ? (a < c) ? a : c
426
+ : (b < c) ? b : c;
427
+ }
428
+ ///
429
+ template <class T>
430
+ inline T max3 (T a, T b, T c)
431
+ {
432
+ ///
433
+ return (a > b) ? ((a > c) ? a : c)
434
+ : ((b > c) ? b : c);
435
+ }
436
+
437
+ ///
438
+
439
+
440
+ ///
441
+ template <class T>
442
+ inline int sgn (T a)
443
+ {
444
+ return (a > 0) ? 1 : ( ( a < 0) ? -1 : 0 );
445
+ }
446
+
447
+ ///
448
+ template <class T>
449
+ inline T sqr (const T a)
450
+ {
451
+ return a * a;
452
+ }
453
+
454
+ ///
455
+ template <class T>
456
+ inline T pow3 (const T a)
457
+ {
458
+ return a * a * a;
459
+ }
460
+ */
461
+
462
+
463
+
464
+ /*
465
+ template <class T>
466
+ void BubbleSort (int size, T * data);
467
+
468
+ template <class T>
469
+ void MergeSort (int size, T * data, T * help);
470
+ */
471
+
472
+
473
+
474
+ }
475
+
476
+ namespace ngcore
477
+ {
478
+ // template <>
479
+ // constexpr inline netgen::INDEX_2 InvalidHash<netgen::INDEX_2> () { return netgen::INDEX_2{-1,-1}; }
480
+
481
+
482
+ template <>
483
+ struct CHT_trait<netgen::INDEX_2>
484
+ {
485
+ constexpr static inline netgen::INDEX_2 Invalid() { return { -1, -1 } ; }
486
+ constexpr static inline size_t HashValue (const netgen::INDEX_2 & hash, size_t mask)
487
+ { return HashValue2(IVec<2,netgen::INDEX>(hash[0], hash[1]), mask); }
488
+ };
489
+
490
+
491
+ }
492
+
493
+ namespace netgen
494
+ {
495
+ /*
496
+ inline size_t HashValue2 (const netgen::INDEX_2 & ind, size_t mask)
497
+ {
498
+ return HashValue2(IVec<2,netgen::INDEX>(ind[0], ind[1]), mask);
499
+ }
500
+ */
501
+
502
+ inline size_t HashValue2 (const netgen::INDEX_3 & ind, size_t mask)
503
+ {
504
+ return HashValue2(IVec<3,netgen::INDEX>(ind[0], ind[1], ind[2]), mask);
505
+ }
506
+
507
+
508
+ }
509
+ #endif