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,395 @@
1
+ NGX_INLINE DLL_HEADER Ng_Point Ngx_Mesh :: GetPoint (int nr) const
2
+ {
3
+ return Ng_Point (&mesh->Point(PointIndex(nr+PointIndex::BASE))(0));
4
+ }
5
+
6
+
7
+ template <>
8
+ NGX_INLINE DLL_HEADER int Ngx_Mesh :: GetElementIndex<0> (size_t nr) const
9
+ {
10
+ return (*mesh).pointelements[nr].index;
11
+ }
12
+
13
+ template <>
14
+ NGX_INLINE DLL_HEADER int Ngx_Mesh :: GetElementIndex<1> (size_t nr) const
15
+ {
16
+ /*
17
+ if(mesh->GetDimension()==3)
18
+ return (*mesh)[SegmentIndex(nr)].edgenr;
19
+ else
20
+ return (*mesh)[SegmentIndex(nr)].si;
21
+ */
22
+ if(mesh->GetDimension()==3)
23
+ return mesh->LineSegments()[nr].edgenr;
24
+ else
25
+ return mesh->LineSegments()[nr].si;
26
+ }
27
+
28
+ template <>
29
+ NGX_INLINE DLL_HEADER int Ngx_Mesh :: GetElementIndex<2> (size_t nr) const
30
+ {
31
+ // int ind = (*mesh)[SurfaceElementIndex(nr)].GetIndex();
32
+ // return mesh->GetFaceDescriptor(ind).BCProperty();
33
+ const Element2d & el = (*mesh)[SurfaceElementIndex(nr)];
34
+ return mesh->GetFaceDescriptor(el).BCProperty();
35
+ }
36
+
37
+ template <>
38
+ NGX_INLINE DLL_HEADER int Ngx_Mesh :: GetElementIndex<3> (size_t nr) const
39
+ {
40
+ return (*mesh)[ElementIndex(nr)].GetIndex();
41
+ }
42
+
43
+
44
+ template <>
45
+ NGX_INLINE DLL_HEADER Ng_Element Ngx_Mesh :: GetElement<0> (size_t nr) const
46
+ {
47
+ const Element0d & el = mesh->pointelements[nr];
48
+
49
+ Ng_Element ret;
50
+ ret.type = NG_PNT;
51
+ ret.index = el.index;
52
+ ret.mat = el.name;
53
+
54
+ ret.points.num = 1;
55
+ ret.points.ptr = (int*)&el.pnum;
56
+
57
+ ret.vertices.num = 1;
58
+ ret.vertices.ptr = (int*)&el.pnum;
59
+
60
+ /*
61
+ ret.edges.num = 0;
62
+ ret.edges.ptr = NULL;
63
+ */
64
+ ret.edges.Assign ( FlatArray<T_EDGE2> (0, nullptr) );
65
+ /*
66
+ ret.faces.num = 0;
67
+ ret.faces.ptr = NULL;
68
+ */
69
+ ret.faces.Assign ( { 0, nullptr } );
70
+
71
+ ret.facets.num = 1;
72
+ ret.facets.base = POINTINDEX_BASE;
73
+ ret.facets.ptr = (int*)&el.pnum;
74
+
75
+ /*
76
+ if (mesh->GetDimension() == 1)
77
+ ret.mat = *(mesh->GetBCNamePtr(el.index-1));
78
+ else if (mesh->GetDimension() == 2)
79
+ ret.mat = *(mesh->GetCD2NamePtr(el.index-1));
80
+ else
81
+ ret.mat = *(mesh->GetCD3NamePtr(el.index-1));
82
+ */
83
+ ret.mat = mesh->GetRegionName(0, el.index);
84
+
85
+ ret.is_curved = false;
86
+ return ret;
87
+ }
88
+
89
+
90
+
91
+ template <>
92
+ NGX_INLINE DLL_HEADER Ng_Element Ngx_Mesh :: GetElement<1> (size_t nr) const
93
+ {
94
+ // const Segment & el = mesh->LineSegment (SegmentIndex(nr));
95
+ const Segment & el = mesh->LineSegments()[nr];
96
+
97
+ Ng_Element ret;
98
+ ret.type = NG_ELEMENT_TYPE(el.GetType());
99
+ if(mesh->GetDimension()==3)
100
+ ret.index = el.edgenr;
101
+ else
102
+ ret.index = el.si;
103
+
104
+ /*
105
+ if (mesh->GetDimension() == 2)
106
+ ret.mat = *(mesh->GetBCNamePtr(el.si-1));
107
+ else
108
+ {
109
+ if (mesh->GetDimension() == 3)
110
+ ret.mat = *(mesh->GetCD2NamePtr(el.edgenr-1));
111
+ else
112
+ ret.mat = *(mesh->GetMaterialPtr(el.si));
113
+ }
114
+ */
115
+ ret.mat = mesh->GetRegionName(1, ret.index);
116
+
117
+ ret.points.num = el.GetNP();
118
+ ret.points.ptr = (int*)&(el[0]);
119
+
120
+ ret.vertices.num = 2;
121
+ ret.vertices.ptr = (int*)&(el[0]);
122
+
123
+ /*
124
+ ret.edges.num = 1;
125
+ ret.edges.ptr = mesh->GetTopology().GetSegmentElementEdgesPtr (nr);
126
+ */
127
+ ret.edges.Assign ( FlatArray<T_EDGE2> (1, const_cast<T_EDGE2*>((const int*) mesh->GetTopology().GetSegmentElementEdgesPtr (nr))));
128
+
129
+ /*
130
+ ret.faces.num = 0;
131
+ ret.faces.ptr = NULL;
132
+ */
133
+ ret.faces.Assign ( { 0, nullptr });
134
+
135
+ if (mesh->GetDimension() == 3)
136
+ {
137
+ ret.facets.num = 0;
138
+ ret.facets.base = 0;
139
+ ret.facets.ptr = nullptr;
140
+ }
141
+ else if (mesh->GetDimension() == 2)
142
+ {
143
+ ret.facets.num = 1;
144
+ ret.facets.base = 0;
145
+ ret.facets.ptr = ret.edges.Data();
146
+ }
147
+ else
148
+ {
149
+ ret.facets.num = 2;
150
+ ret.facets.base = POINTINDEX_BASE;
151
+ ret.facets.ptr = (int*)&(el[0]);
152
+ }
153
+
154
+ // ret.is_curved = mesh->GetCurvedElements().IsSegmentCurved(nr);
155
+ ret.is_curved = el.IsCurved();
156
+
157
+ return ret;
158
+ }
159
+
160
+ template <>
161
+ NGX_INLINE DLL_HEADER Ng_Element Ngx_Mesh :: GetElement<2> (size_t nr) const
162
+ {
163
+ const Element2d & el = mesh->SurfaceElements()[nr];
164
+
165
+ Ng_Element ret;
166
+ ret.type = NG_ELEMENT_TYPE(el.GetType());
167
+ const FaceDescriptor & fd = mesh->GetFaceDescriptor(el); // .GetIndex());
168
+ ret.index = fd.BCProperty();
169
+ if (mesh->GetDimension() == 3)
170
+ ret.mat = fd.GetBCName();
171
+ else
172
+ ret.mat = *(mesh -> GetMaterialPtr(ret.index));
173
+ ret.points.num = el.GetNP();
174
+ ret.points.ptr = (int*)&el[0];
175
+
176
+ ret.vertices.num = el.GetNV();
177
+ ret.vertices.ptr = (int*)&(el[0]);
178
+
179
+ /*
180
+ ret.edges.num = MeshTopology::GetNEdges (el.GetType());
181
+ ret.edges.ptr = mesh->GetTopology().GetSurfaceElementEdgesPtr (nr);
182
+ */
183
+
184
+ // ret.edges.Assign (mesh->GetTopology().GetEdges (SurfaceElementIndex(nr)));
185
+ auto hedges = mesh->GetTopology().GetEdges (SurfaceElementIndex(nr));
186
+ ret.edges.Assign ( { hedges.Size(), (int*)hedges.Data() } );
187
+
188
+ /*
189
+ ret.faces.num = MeshTopology::GetNFaces (el.GetType());
190
+ ret.faces.ptr = mesh->GetTopology().GetSurfaceElementFacesPtr (nr);
191
+ */
192
+
193
+ // ret.faces.Assign ( { 1, const_cast<int*>(mesh->GetTopology().GetSurfaceElementFacesPtr (nr)) });
194
+ ret.faces.Assign ( { 1, (int*)(mesh->GetTopology().GetSurfaceElementFacesPtr (nr)) });
195
+
196
+ if (mesh->GetDimension() == 3)
197
+ {
198
+ ret.facets.num = ret.faces.Size();
199
+ ret.facets.base = 0;
200
+ ret.facets.ptr = ret.faces.Data();
201
+ }
202
+ else
203
+ {
204
+ ret.facets.num = ret.edges.Size();
205
+ ret.facets.base = 0;
206
+ ret.facets.ptr = ret.edges.Data();
207
+ }
208
+ ret.is_curved = el.IsCurved();
209
+ ret.newest_vertex = el.NewestVertex();
210
+ return ret;
211
+ }
212
+
213
+ template <>
214
+ NGX_INLINE DLL_HEADER Ng_Element Ngx_Mesh :: GetElement<3> (size_t nr) const
215
+ {
216
+ const Element & el = mesh->VolumeElements()[nr];
217
+
218
+ Ng_Element ret;
219
+ ret.type = NG_ELEMENT_TYPE(el.GetType());
220
+ ret.index = el.GetIndex();
221
+ ret.mat = *(mesh -> GetMaterialPtr(ret.index));
222
+ ret.points.num = el.GetNP();
223
+ ret.points.ptr = (int*)&el[0];
224
+
225
+ ret.vertices.num = el.GetNV();
226
+ ret.vertices.ptr = (int*)&(el[0]);
227
+
228
+ /*
229
+ ret.edges.num = MeshTopology::GetNEdges (el.GetType());
230
+ ret.edges.ptr = mesh->GetTopology().GetElementEdgesPtr (nr);
231
+ */
232
+ // ret.edges.Assign (mesh->GetTopology().GetEdges (ElementIndex(nr)));
233
+ auto hedges = mesh->GetTopology().GetEdges (ElementIndex(nr));
234
+ ret.edges.Assign ( { hedges.Size(), (int*)hedges.Data() } );
235
+
236
+
237
+ /*
238
+ ret.faces.num = MeshTopology::GetNFaces (el.GetType());
239
+ ret.faces.ptr = mesh->GetTopology().GetElementFacesPtr (nr);
240
+ */
241
+ // ret.faces.Assign (mesh->GetTopology().GetFaces (ElementIndex(nr)));
242
+ auto hfaces = mesh->GetTopology().GetFaces (ElementIndex(nr));
243
+ ret.faces.Assign ( { hfaces.Size(), (int*)hfaces.Data() } );
244
+
245
+ ret.facets.num = ret.faces.Size();
246
+ ret.facets.base = 0;
247
+ ret.facets.ptr = ret.faces.Data();
248
+
249
+ ret.is_curved = el.IsCurved();
250
+ ret.newest_vertex = el.NewestVertex();
251
+ return ret;
252
+ }
253
+
254
+
255
+
256
+ template <> NGX_INLINE DLL_HEADER
257
+ string_view Ngx_Mesh :: GetMaterialCD<0> (int region_nr) const
258
+ {
259
+ return mesh->GetMaterial(region_nr+1);
260
+ }
261
+
262
+ template <> NGX_INLINE DLL_HEADER
263
+ string_view Ngx_Mesh :: GetMaterialCD<1> (int region_nr) const
264
+ {
265
+ return mesh->GetBCName(region_nr);
266
+ }
267
+
268
+ template <> NGX_INLINE DLL_HEADER
269
+ string_view Ngx_Mesh :: GetMaterialCD<2> (int region_nr) const
270
+ {
271
+ return mesh->GetCD2Name(region_nr);
272
+ }
273
+
274
+ template <> NGX_INLINE DLL_HEADER
275
+ string_view Ngx_Mesh :: GetMaterialCD<3> (int region_nr) const
276
+ {
277
+ return mesh->GetCD3Name(region_nr);
278
+ }
279
+
280
+
281
+
282
+
283
+
284
+ template <> NGX_INLINE DLL_HEADER int Ngx_Mesh :: GetNNodes<1> ()
285
+ {
286
+ return mesh->GetTopology().GetNEdges();
287
+ }
288
+
289
+ template <> NGX_INLINE DLL_HEADER int Ngx_Mesh :: GetNNodes<2> ()
290
+ {
291
+ return mesh->GetTopology().GetNFaces();
292
+ }
293
+
294
+ template <> NGX_INLINE DLL_HEADER const Ng_Node<0> Ngx_Mesh :: GetNode<0> (int vnr_) const
295
+ {
296
+ Ng_Node<0> node;
297
+ PointIndex vnr = IndexBASE<PointIndex>() + vnr_;
298
+ switch (mesh->GetDimension())
299
+ {
300
+ case 3:
301
+ {
302
+ auto ia = mesh->GetTopology().GetVertexElements(vnr);
303
+ node.elements.ne = ia.Size();
304
+ node.elements.ptr = (int*)ia.Data();
305
+
306
+ auto bia = mesh->GetTopology().GetVertexSurfaceElements(vnr);
307
+ node.bnd_elements.ne = bia.Size();
308
+ node.bnd_elements.ptr = (int*)bia.Data();
309
+ break;
310
+ }
311
+ case 2:
312
+ {
313
+ auto ia = mesh->GetTopology().GetVertexSurfaceElements(vnr);
314
+ node.elements.ne = ia.Size();
315
+ node.elements.ptr = (int*)ia.Data();
316
+
317
+ auto bia = mesh->GetTopology().GetVertexSegments(vnr);
318
+ node.bnd_elements.ne = bia.Size();
319
+ node.bnd_elements.ptr = (int*)bia.Data();
320
+ break;
321
+ }
322
+ case 1:
323
+ {
324
+ auto ia = mesh->GetTopology().GetVertexSegments(vnr);
325
+ node.elements.ne = ia.Size();
326
+ node.elements.ptr = (int*)ia.Data();
327
+
328
+ auto bia = mesh->GetTopology().GetVertexPointElements(vnr);
329
+ node.bnd_elements.ne = bia.Size();
330
+ node.bnd_elements.ptr = (int*)bia.Data();
331
+ break;
332
+ }
333
+ default:
334
+ ;
335
+ }
336
+ return node;
337
+ }
338
+
339
+ template <> NGX_INLINE DLL_HEADER const Ng_Node<1> Ngx_Mesh :: GetNode<1> (int nr) const
340
+ {
341
+ Ng_Node<1> node;
342
+ node.vertices.ptr = (const int*)mesh->GetTopology().GetEdgeVerticesPtr(nr);
343
+ return node;
344
+ }
345
+
346
+ template <> NGX_INLINE DLL_HEADER const Ng_Node<2> Ngx_Mesh :: GetNode<2> (int nr) const
347
+ {
348
+ Ng_Node<2> node;
349
+ node.vertices.ptr = (const int*)mesh->GetTopology().GetFaceVerticesPtr(nr);
350
+ node.vertices.nv = (node.vertices.ptr[3]+1 == PointIndex::BASE) ? 3 : 4;
351
+ node.surface_el = mesh->GetTopology().GetFace2SurfaceElement (nr);
352
+ return node;
353
+ }
354
+
355
+
356
+ NGX_INLINE DLL_HEADER Ng_Buffer<int[2]> Ngx_Mesh :: GetPeriodicVertices(int idnr) const
357
+ {
358
+ NgArray<INDEX_2> apairs;
359
+ mesh->GetIdentifications().GetPairs (idnr+1, apairs);
360
+ for(auto& ind : apairs)
361
+ {
362
+ ind.I1() -= IndexBASE<PointIndex>();
363
+ ind.I2() -= IndexBASE<PointIndex>();
364
+ }
365
+ typedef int ti2[2];
366
+ return { apairs.Size(), (ti2*)(void*)apairs.Release() };
367
+ }
368
+
369
+
370
+ NGX_INLINE void Ngx_Mesh :: GetParentNodes (int ni, int * parents) const
371
+ {
372
+ if (ni < mesh->mlbetweennodes.Size())
373
+ for (int j = 0; j < 2; j++)
374
+ parents[j] = mesh->mlbetweennodes[IndexBASE<PointIndex>()+ni][j] - IndexBASE<PointIndex>();
375
+ else
376
+ parents[0] = parents[1] = -1;
377
+ }
378
+
379
+ inline bool Ngx_Mesh :: HasParentEdges() const
380
+ {
381
+ return mesh->GetTopology().HasParentEdges();
382
+ }
383
+
384
+ inline tuple<int, std::array<int,3>> Ngx_Mesh :: GetParentEdges (int enr) const
385
+ {
386
+ return mesh->GetTopology().GetParentEdges(enr);
387
+ }
388
+
389
+ inline tuple<int, std::array<int,4>> Ngx_Mesh :: GetParentFaces (int fnr) const
390
+ {
391
+ return mesh->GetTopology().GetParentFaces(fnr);
392
+ }
393
+
394
+
395
+ inline auto Ngx_Mesh :: GetTimeStamp() const { return mesh->GetTimeStamp(); }
@@ -0,0 +1 @@
1
+ #include <../general/ngsimd.hpp>
@@ -0,0 +1 @@
1
+ #include "../occ/occgeom.hpp"
@@ -0,0 +1 @@
1
+ #include "../linalg/opti.hpp"
@@ -0,0 +1 @@
1
+ #include "../parallel/parallel.hpp"
@@ -0,0 +1 @@
1
+ #include <../stlgeom/stlgeom.hpp>
@@ -0,0 +1 @@
1
+ #include "../visualization/visual.hpp"
@@ -0,0 +1,11 @@
1
+ #include <meshing.hpp>
2
+ #include "writeuser.hpp"
3
+
4
+ namespace netgen
5
+ {
6
+ DLL_HEADER void ReadMeditFormat (Mesh & mesh, const filesystem::path & filename, map<tuple<int, int>, int> & index_map);
7
+ DLL_HEADER void ReadMeditFormat (Mesh & mesh, const filesystem::path & filename);
8
+
9
+ DLL_HEADER void WriteMeditFormat (const Mesh & mesh, const filesystem::path & filename, map<tuple<int,int>, int> & index_map);
10
+ DLL_HEADER void WriteMeditFormat (const Mesh & mesh, const filesystem::path & filename);
11
+ } // namespace netgen
@@ -0,0 +1,80 @@
1
+ #ifndef WRITEUSER
2
+ #define WRITEUSER
3
+
4
+ /**************************************************************************/
5
+ /* File: writeuser.hh */
6
+ /* Authors: many */
7
+ /* Date: 10. Dec. 97 */
8
+ /**************************************************************************/
9
+
10
+ #include <filesystem>
11
+ #include <functional>
12
+ #include <optional>
13
+
14
+ #include <meshing.hpp>
15
+
16
+ namespace netgen {
17
+
18
+ using namespace std::filesystem;
19
+
20
+ typedef std::function<void (const Mesh & mesh, const filesystem::path & filename)> FWrite;
21
+ typedef std::function<void (Mesh & mesh, const filesystem::path & filename)> FRead;
22
+ typedef std::function<bool (const filesystem::path & filename)> FTest;
23
+
24
+ struct UserFormatRegister {
25
+ struct UserFormatEntry {
26
+ string format;
27
+ Array<string> extensions;
28
+ optional<FRead> read;
29
+ optional<FWrite> write;
30
+ };
31
+ DLL_HEADER static Array<UserFormatEntry> entries;
32
+ DLL_HEADER static std::map<string, int> format_to_entry_index;
33
+
34
+ static void Register(UserFormatEntry && entry) {
35
+ format_to_entry_index[entry.format] = entries.Size();
36
+ entries.Append( std::move(entry) );
37
+ }
38
+
39
+ static const bool HaveFormat(string format) {
40
+ return format_to_entry_index.count(format) > 0;
41
+ }
42
+ static const UserFormatEntry & Get(string format) {
43
+ return entries[format_to_entry_index[format]];
44
+ }
45
+
46
+ template<typename TFunc>
47
+ static void IterateFormats(TFunc func, bool need_read=false, bool need_write=false) {
48
+ Array<string> import_formats;
49
+ for(const auto & e: entries)
50
+ if((!need_read || e.read) && (!need_write || e.write))
51
+ import_formats.Append(e.format);
52
+ QuickSort(import_formats);
53
+ for(auto format : import_formats)
54
+ func(entries[format_to_entry_index[format]]);
55
+ }
56
+
57
+ };
58
+
59
+ struct RegisterUserFormat {
60
+ RegisterUserFormat(string format, Array<string> extensions, optional<FRead> read, optional<FWrite> write, FTest ftest = [](const filesystem::path & ){return true;})
61
+ {
62
+ UserFormatRegister::Register({format, std::move(extensions), std::move(read), std::move(write)});
63
+ }
64
+ };
65
+
66
+ DLL_HEADER void ReadFile(Mesh & mesh, const filesystem::path & filename);
67
+ DLL_HEADER void ReadUserFormat(Mesh & mesh, const filesystem::path & filename, const string & format = "");
68
+
69
+
70
+ extern bool DLL_HEADER WriteUserFormat (const string & format,
71
+ const Mesh & mesh,
72
+ const filesystem::path & filename);
73
+
74
+ extern void DLL_HEADER RegisterUserFormats (NgArray<const char*> & names,
75
+ NgArray<const char*> & extensions);
76
+
77
+ }
78
+
79
+ #endif
80
+