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
netgen/include/nglib.h ADDED
@@ -0,0 +1,697 @@
1
+ #ifndef NGLIB
2
+ #define NGLIB
3
+
4
+ /**************************************************************************/
5
+ /* File: nglib.h */
6
+ /* Author: Joachim Schoeberl */
7
+ /* Date: 7. May. 2000 */
8
+ /**************************************************************************/
9
+
10
+ #include <stddef.h>
11
+
12
+ /*!
13
+ \file nglib.h
14
+ \brief Library interface to the netgen meshing kernel
15
+ \author Joachim Schoeberl
16
+ \date 7. May 2000
17
+
18
+ This header file provides access to the core functionality of the Netgen
19
+ Mesher via a library interface, without an interactive User Interface.
20
+
21
+ The intention of providing these set of functions is to allow system
22
+ developers to integrate Netgen into top-level code, to act as the low
23
+ level mesh generation / optimisation kernel.
24
+ */
25
+
26
+ // Philippose - 14.02.2009
27
+ // Modifications for creating a DLL in Windows
28
+ #ifdef WIN32
29
+ #ifdef nglib_EXPORTS
30
+ #define NGLIB_API __declspec(dllexport)
31
+ #else
32
+ #define NGLIB_API __declspec(dllimport)
33
+ #endif
34
+ #else
35
+ #define NGLIB_API __attribute__((visibility("default")))
36
+ #endif
37
+
38
+
39
+ // ** Constants used within Netgen *********************
40
+ /// Maximum allowed number of nodes per volume element
41
+ #define NG_VOLUME_ELEMENT_MAXPOINTS 10
42
+
43
+ /// Maximum allowed number of nodes per surface element
44
+ #define NG_SURFACE_ELEMENT_MAXPOINTS 8
45
+
46
+
47
+
48
+ // *** Data-types for accessing Netgen functionality ***
49
+ /// Data type for NETGEN mesh
50
+ typedef void * Ng_Mesh;
51
+
52
+ /// Data type for NETGEN CSG geometry
53
+ typedef void * Ng_CSG_Geometry;
54
+
55
+ /// Data type for NETGEN 2D geometry
56
+ typedef void * Ng_Geometry_2D;
57
+
58
+ /// Data type for NETGEN STL geometry
59
+ typedef void * Ng_STL_Geometry;
60
+
61
+
62
+
63
+ // *** Special Enum types used within Netgen ***********
64
+ /// Currently implemented surface element types
65
+ enum Ng_Surface_Element_Type
66
+ { NG_TRIG = 1, NG_QUAD = 2, NG_TRIG6 = 3, NG_QUAD6 = 4, NG_QUAD8 = 5 };
67
+
68
+ /// Currently implemented volume element types
69
+ enum Ng_Volume_Element_Type
70
+ { NG_TET = 1, NG_PYRAMID = 2, NG_PRISM = 3, NG_TET10 = 4 };
71
+
72
+ /// Values returned by Netgen functions
73
+ enum Ng_Result
74
+ {
75
+ NG_ERROR = -1,
76
+ NG_OK = 0,
77
+ NG_SURFACE_INPUT_ERROR = 1,
78
+ NG_VOLUME_FAILURE = 2,
79
+ NG_STL_INPUT_ERROR = 3,
80
+ NG_SURFACE_FAILURE = 4,
81
+ NG_FILE_NOT_FOUND = 5
82
+ };
83
+
84
+
85
+
86
+ // *** Classes required for use within Netgen **********
87
+ /// Netgen Meshing Parameters class
88
+ class Ng_Meshing_Parameters
89
+ {
90
+ public:
91
+ int uselocalh; //!< Switch to enable / disable usage of local mesh size modifiers
92
+
93
+ double maxh; //!< Maximum global mesh size allowed
94
+ double minh; //!< Minimum global mesh size allowed
95
+
96
+ double fineness; //!< Mesh density: 0...1 (0 => coarse; 1 => fine)
97
+ double grading; //!< Mesh grading: 0...1 (0 => uniform mesh; 1 => aggressive local grading)
98
+
99
+ double elementsperedge; //!< Number of elements to generate per edge of the geometry
100
+ double elementspercurve; //!< Elements to generate per curvature radius
101
+
102
+ int closeedgeenable; //!< Enable / Disable mesh refinement at close edges
103
+ double closeedgefact; //!< Factor to use for refinement at close edges (larger => finer)
104
+
105
+ int minedgelenenable; //!< Enable / Disable user defined minimum edge length for edge subdivision
106
+ double minedgelen; //!< Minimum edge length to use while subdividing the edges (default = 1e-4)
107
+
108
+ int second_order; //!< Generate second-order surface and volume elements
109
+ int quad_dominated; //!< Creates a Quad-dominated mesh
110
+
111
+ char * meshsize_filename; //!< Optional external mesh size file
112
+
113
+ int optsurfmeshenable; //!< Enable / Disable automatic surface mesh optimization
114
+ int optvolmeshenable; //!< Enable / Disable automatic volume mesh optimization
115
+
116
+ int optsteps_3d; //!< Number of optimize steps to use for 3-D mesh optimization
117
+ int optsteps_2d; //!< Number of optimize steps to use for 2-D mesh optimization
118
+
119
+ // Philippose - 13/09/2010
120
+ // Added a couple more parameters into the meshing parameters list
121
+ // from Netgen into Nglib
122
+ int invert_tets; //!< Invert all the volume elements
123
+ int invert_trigs; //!< Invert all the surface triangle elements
124
+
125
+ int check_overlap; //!< Check for overlapping surfaces during Surface meshing
126
+ int check_overlapping_boundary; //!< Check for overlapping surface elements before volume meshing
127
+
128
+
129
+ /*!
130
+ Default constructor for the Mesh Parameters class
131
+
132
+ Note: This constructor initialises the variables in the
133
+ class with the following default values
134
+ - #uselocalh: 1
135
+ - #maxh: 1000.0
136
+ - #fineness: 0.5
137
+ - #grading: 0.3
138
+ - #elementsperedge: 2.0
139
+ - #elementspercurve: 2.0
140
+ - #closeedgeenable: 0
141
+ - #closeedgefact: 2.0
142
+ - #secondorder: 0
143
+ - #meshsize_filename: null
144
+ - #quad_dominated: 0
145
+ - #optsurfmeshenable: 1
146
+ - #optvolmeshenable: 1
147
+ - #optsteps_2d: 3
148
+ - #optsteps_3d: 3
149
+ - #invert_tets: 0
150
+ - #invert_trigs:0
151
+ - #check_overlap: 1
152
+ - #check_overlapping_boundary: 1
153
+ */
154
+ NGLIB_API Ng_Meshing_Parameters();
155
+
156
+
157
+
158
+ /*!
159
+ Reset the meshing parameters to their defaults
160
+
161
+ This member function resets all the meshing parameters
162
+ of the object to the default values
163
+ */
164
+ NGLIB_API void Reset_Parameters();
165
+
166
+
167
+
168
+ /*!
169
+ Transfer local meshing parameters to internal meshing parameters
170
+
171
+ This member function transfers all the meshing parameters
172
+ defined in the local meshing parameters structure of nglib into
173
+ the internal meshing parameters structure used by the Netgen core
174
+ */
175
+ NGLIB_API void Transfer_Parameters();
176
+ };
177
+
178
+
179
+
180
+
181
+ // *** Functions Exported by this Library *************
182
+
183
+ // ------------------------------------------------------------------
184
+ // Netgen library initialisation / destruction functions
185
+
186
+ /*! \brief Initialise the Netgen library and prepare for use
187
+
188
+ This function needs to be called by the third-party
189
+ program before beginning to use the other Netgen
190
+ specific functions.
191
+ */
192
+ NGLIB_API void Ng_Init ();
193
+
194
+
195
+ /*! \brief Exit the Netgen meshing kernel in a clean manner
196
+
197
+ Use this function to exit the meshing sub-system in
198
+ a clean and orderly manner.
199
+ */
200
+ NGLIB_API void Ng_Exit ();
201
+
202
+
203
+ /*! \brief Create a new (and empty) Netgen Mesh Structure
204
+
205
+ This function creates a new Netgen Mesh, initialises
206
+ it, and returns a pointer to the created mesh structure.
207
+
208
+ Use the returned pointer for subsequent operations
209
+ which involve mesh operations.
210
+
211
+ \return Ng_Mesh Pointer to a Netgen Mesh type #Ng_Mesh
212
+ */
213
+ NGLIB_API Ng_Mesh * Ng_NewMesh ();
214
+
215
+
216
+ /*! \brief Delete an existing Netgen Mesh Structure
217
+
218
+ Use this function to delete an existing Netgen mesh
219
+ structure and release the used memory.
220
+
221
+ \param mesh Pointer to an existing Netgen Mesh structure
222
+ of type #Ng_Mesh
223
+ */
224
+ NGLIB_API void Ng_DeleteMesh (Ng_Mesh * mesh);
225
+
226
+
227
+ /*! \brief Save a Netgen Mesh to disk
228
+
229
+ This function allows a generated mesh structure to be saved
230
+ to disk.
231
+
232
+ A Mesh saved using this function, will be written to disk
233
+ in the Netgen VOL file format.
234
+
235
+ \param mesh Pointer to an existing Netgen Mesh structure
236
+ of type #Ng_Mesh
237
+ \param filename Pointer to a character array containing the
238
+ name of the file to which the mesh should
239
+ be saved
240
+ */
241
+ NGLIB_API void Ng_SaveMesh(Ng_Mesh * mesh, const char* filename);
242
+
243
+
244
+ /*! \brief Load a Netgen VOL Mesh from disk into memory
245
+
246
+ A Netgen mesh saved in the internal VOL format can be loaded
247
+ into a Netgen Mesh structure using this function.
248
+
249
+ \param filename Pointer to a character array containing the
250
+ name of the file to load
251
+ \return Ng_Mesh Pointer to a Netgen Mesh type #Ng_Mesh containing
252
+ the mesh loaded from disk
253
+ */
254
+ NGLIB_API Ng_Mesh * Ng_LoadMesh(const char* filename);
255
+
256
+
257
+ /*! \brief Merge a Netgen VOL Mesh from disk into an existing mesh in memory
258
+
259
+ A Netgen mesh saved in the internal VOL format can be merged
260
+ into an existing Netgen Mesh structure using this function.
261
+
262
+ \param mesh Name of the Mesh structure already existent in memory
263
+ \param filename Pointer to a character array containing the
264
+ name of the file to load
265
+ \return Ng_Result Status of the merge operation
266
+ */
267
+ NGLIB_API Ng_Result Ng_MergeMesh(Ng_Mesh * mesh, const char* filename);
268
+
269
+
270
+ /*! \brief Merge one Netgen Mesh into another Netgen Mesh in the case
271
+ when both are already in memory
272
+
273
+ (NOTE: FUNCTION STILL WORK IN PROGRESS!!!)
274
+
275
+ This function can be used to merge two Netgen meshes already present
276
+ in memory.
277
+
278
+ \param mesh1 Parent Mesh structure into which the second mesh
279
+ will be merged
280
+ \param mesh2 Child mesh structure which will get merged into
281
+ the parent mesh
282
+ \return Ng_Result Status of the merge operation
283
+ */
284
+ NGLIB_API Ng_Result Ng_MergeMesh(Ng_Mesh * mesh1, Ng_Mesh * mesh2);
285
+ // ------------------------------------------------------------------
286
+
287
+
288
+
289
+ // ------------------------------------------------------------------
290
+ // Basic Meshing functions for manually adding points, surface elements
291
+ // and volume elements to a Netgen Mesh structure
292
+
293
+ /*! \brief Add a point to a given Netgen Mesh Structure
294
+
295
+ This function allows points to be directly added to a Netgen
296
+ mesh structure by providing the co-ordinates.
297
+
298
+ Each call to the function allows only one point to be added.
299
+
300
+ \param mesh Pointer to an existing Netgen Mesh structure of
301
+ type #Ng_Mesh
302
+ \param x Pointer to an array of type double containing the co-ordinates
303
+ of the point to be added in the form: \n
304
+ - x[0] = X co-ordinate
305
+ - x[1] = Y co-ordinate
306
+ - x[2] = Z co-ordinate
307
+ */
308
+ NGLIB_API void Ng_AddPoint (Ng_Mesh * mesh, double * x);
309
+
310
+
311
+ /*! \brief Add a surface element to a given Netgen Mesh Structure
312
+
313
+ This function allows the top-level code to directly add individual
314
+ Surface Elements to a Netgen Mesh Structure by providing the type of
315
+ element to be added and the indices of the points which constitute the
316
+ element.
317
+
318
+ <i>Note:</i>
319
+ - The points referred to by the surface elements must have been
320
+ added prior to calling this function.
321
+ - Currently only triangular elements are supported, and the Surface Element
322
+ Type argument is not used.
323
+
324
+ \param mesh Pointer to an existing Netgen Mesh structure of
325
+ type #Ng_Mesh
326
+ \param et Surface Element type provided via the enumerated type
327
+ #Ng_Surface_Element_Type
328
+ \param pi Pointer to an array of integers containing the indices of the
329
+ points which constitute the surface element being added
330
+ */
331
+ NGLIB_API void Ng_AddSurfaceElement (Ng_Mesh * mesh, Ng_Surface_Element_Type et, int * pi);
332
+
333
+
334
+ /*! \brief Add a volume element to a given Netgen Mesh Structure
335
+
336
+ This function allows the top-level code to directly add individual
337
+ Volume Elements to a Netgen Mesh Structure by providing the type of
338
+ element to be added and the indices of the points which constitute the
339
+ element.
340
+
341
+ <i>Note:</i>
342
+ - The points referred to by the volume elements must have been
343
+ added prior to calling this function.
344
+ - Currently only tetrahedral elements are supported, and the Volume Element
345
+ Type argument is not used.
346
+
347
+ \param mesh Pointer to an existing Netgen Mesh structure of
348
+ type #Ng_Mesh
349
+ \param et Volume Element type provided via the enumerated type
350
+ #Ng_Volume_Element_Type
351
+ \param pi Pointer to an array of integers containing the indices of the
352
+ points which constitute the volume element being added
353
+
354
+ */
355
+ NGLIB_API void Ng_AddVolumeElement (Ng_Mesh * mesh, Ng_Volume_Element_Type et, int * pi);
356
+
357
+ // ------------------------------------------------------------------
358
+
359
+
360
+
361
+ // ------------------------------------------------------------------
362
+ // Local Mesh Size restriction / limiting utilities
363
+
364
+ /*! \brief Apply a global restriction on mesh element size
365
+
366
+ This utility allows the user to apply a global mesh element
367
+ size limitation.
368
+
369
+ During mesh creation, in the absence of an explicit local
370
+ size restriction around the neighbourhood of a point within
371
+ the meshing domain, this global size restriction will be
372
+ utilised.
373
+
374
+ <b>Note</b>: This function only limits the <b>Maximum</b>
375
+ size of an element within the mesh.
376
+
377
+ \param mesh Pointer to an existing Netgen Mesh structure of
378
+ type #Ng_Mesh
379
+ \param h Variable of type <i>double</i>, specifying the maximum
380
+ allowable mesh size
381
+ */
382
+ NGLIB_API void Ng_RestrictMeshSizeGlobal (Ng_Mesh * mesh, double h);
383
+
384
+
385
+ /*! \brief Locally restrict the mesh element size at the given point
386
+
387
+ Unlike the function #Ng_RestrictMeshSizeGlobal, this function
388
+ allows the user to locally restrict the maximum allowable mesh
389
+ size at a given point.
390
+
391
+ The point is specified via its three cartesian co-ordinates.
392
+
393
+ <b>Note</b>: This function only limits the <b>Maximum</b> size
394
+ of the elements around the specified point.
395
+
396
+ \param mesh Pointer to an existing Netgen Mesh structure of
397
+ type #Ng_Mesh
398
+ \param p Pointer to an Array of type <i>double</i>, containing
399
+ the three co-ordinates of the point in the form: \n
400
+ - p[0] = X co-ordinate
401
+ - p[1] = Y co-ordinate
402
+ - p[2] = Z co-ordinate
403
+ \param h Variable of type <i>double</i>, specifying the maximum
404
+ allowable mesh size at that point
405
+ */
406
+ NGLIB_API void Ng_RestrictMeshSizePoint (Ng_Mesh * mesh, double * p, double h);
407
+
408
+
409
+ /*! \brief Locally restrict the mesh element size within a specified box
410
+
411
+ Similar to the function #Ng_RestrictMeshSizePoint, this function
412
+ allows the size of elements within a mesh to be locally limited.
413
+
414
+ However, rather than limit the mesh size at a single point, this
415
+ utility restricts the local mesh size within a 3D Box region, specified
416
+ via the co-ordinates of the two diagonally opposite points of a cuboid.
417
+
418
+ <b>Note</b>: This function only limits the <b>Maximum</b> size
419
+ of the elements within the specified region.
420
+
421
+ \param mesh Pointer to an existing Netgen Mesh structure of
422
+ type #Ng_Mesh
423
+ \param pmin Pointer to an Array of type <i>double</i>, containing
424
+ the three co-ordinates of the first point of the cuboid: \n
425
+ - pmin[0] = X co-ordinate
426
+ - pmin[1] = Y co-ordinate
427
+ - pmin[2] = Z co-ordinate
428
+ \param pmax Pointer to an Array of type <i>double</i>, containing
429
+ the three co-ordinates of the opposite point of the
430
+ cuboid: \n
431
+ - pmax[0] = X co-ordinate
432
+ - pmax[1] = Y co-ordinate
433
+ - pmax[2] = Z co-ordinate
434
+ \param h Variable of type <i>double</i>, specifying the maximum
435
+ allowable mesh size at that point
436
+ */
437
+ NGLIB_API void Ng_RestrictMeshSizeBox (Ng_Mesh * mesh, double * pmin, double * pmax, double h);
438
+
439
+ // ------------------------------------------------------------------
440
+
441
+
442
+
443
+ // ------------------------------------------------------------------
444
+ // 3D Mesh Generation functions
445
+
446
+ /*! \brief Create a 3D Volume Mesh given a Surface Mesh
447
+
448
+ After creating a surface mesh, this function can be utilised
449
+ to automatically generate the corresponding 3D Volume Mesh.
450
+
451
+ Mesh generation parameters (such as grading, maximum element size,
452
+ etc.) are specified via the meshing parameters class which also
453
+ needs to be passed to this function.
454
+
455
+ <b>Note</b>: Currently, Netgen generates pure tetrahedral volume
456
+ meshes.
457
+
458
+ \param mesh Pointer to an existing Netgen Mesh structure of
459
+ type #Ng_Mesh
460
+ \param mp Pointer to a copy of the Meshing Parameters class
461
+ (#Ng_Meshing_Parameters), filled up with the
462
+ required values
463
+
464
+ \return Ng_Result Status of the Mesh Generation routine. More
465
+ details regarding the return value can be
466
+ found in the description of #Ng_Result
467
+ */
468
+ NGLIB_API Ng_Result Ng_GenerateVolumeMesh (Ng_Mesh * mesh, Ng_Meshing_Parameters * mp);
469
+
470
+ // ------------------------------------------------------------------
471
+
472
+
473
+
474
+ // ------------------------------------------------------------------
475
+ // Basic Mesh information functions
476
+
477
+ /*! \brief Returns the Number of Points present in the specified Mesh
478
+
479
+ Given an already existent Netgen Mesh Structure, this function
480
+ returns the number of points currently present within the Mesh.
481
+
482
+ \param mesh Pointer to an existing Netgen Mesh structure of
483
+ type #Ng_Mesh
484
+ \return
485
+ Integer Data-type with the number of points in the Mesh
486
+ */
487
+ NGLIB_API int Ng_GetNP (Ng_Mesh * mesh);
488
+
489
+
490
+ /*! \brief Returns the Number of Surface Elements present in the specified Mesh
491
+
492
+ Given an already existent Netgen Mesh Structure, this function
493
+ returns the number of surface elements currently present within
494
+ the Mesh.
495
+
496
+ \param mesh Pointer to an existing Netgen Mesh structure of
497
+ type #Ng_Mesh
498
+ \return
499
+ Integer Data-type with the number of surface elements in the Mesh
500
+ */
501
+ NGLIB_API int Ng_GetNSE (Ng_Mesh * mesh);
502
+
503
+
504
+ /*! \brief Returns the Number of Volume Elements present in the specified Mesh
505
+
506
+ Given an already existent Netgen Mesh Structure, this function
507
+ returns the number of volume elements currently present within
508
+ the Mesh.
509
+
510
+ \param mesh Pointer to an existing Netgen Mesh structure of
511
+ type #Ng_Mesh
512
+ \return
513
+ Integer Data-type with the number of volume elements in the Mesh
514
+ */
515
+ NGLIB_API int Ng_GetNE (Ng_Mesh * mesh);
516
+
517
+ // ------------------------------------------------------------------
518
+
519
+
520
+
521
+ // ------------------------------------------------------------------
522
+ // Mesh Topology functions
523
+ // Use these functions to extract points, surface / volume elements,
524
+ // perform topological searches, etc..etc...
525
+
526
+ // Return the Point Coordinates of a specified Point
527
+ // The x, y and z co-ordinates are returned in the array pointer as
528
+ // x[0] = x ; x[1] = y ; x[2] = z
529
+ NGLIB_API void Ng_GetPoint (Ng_Mesh * mesh, int num, double * x);
530
+
531
+
532
+
533
+ // return surface and volume element in pi
534
+ NGLIB_API Ng_Surface_Element_Type
535
+ Ng_GetSurfaceElement (Ng_Mesh * mesh, int num, int * pi);
536
+
537
+ NGLIB_API Ng_Volume_Element_Type
538
+ Ng_GetVolumeElement (Ng_Mesh * mesh, int num, int * pi);
539
+
540
+ // ------------------------------------------------------------------
541
+
542
+
543
+
544
+
545
+ // **********************************************************
546
+ // ** 2D Meshing **
547
+ // **********************************************************
548
+
549
+
550
+ // feeds points and boundary to mesh
551
+
552
+ NGLIB_API void Ng_AddPoint_2D (Ng_Mesh * mesh, double * x);
553
+ NGLIB_API void Ng_AddBoundarySeg_2D (Ng_Mesh * mesh, int pi1, int pi2);
554
+
555
+ // ask for number of points, elements and boundary segments
556
+ NGLIB_API int Ng_GetNP_2D (Ng_Mesh * mesh);
557
+ NGLIB_API int Ng_GetNE_2D (Ng_Mesh * mesh);
558
+ NGLIB_API int Ng_GetNSeg_2D (Ng_Mesh * mesh);
559
+
560
+ // return point coordinates
561
+ NGLIB_API void Ng_GetPoint_2D (Ng_Mesh * mesh, int num, double * x);
562
+
563
+ // return 2d elements
564
+ NGLIB_API Ng_Surface_Element_Type
565
+ Ng_GetElement_2D (Ng_Mesh * mesh, int num, int * pi, int * matnum = NULL);
566
+
567
+ // return 2d boundary segment
568
+ NGLIB_API void Ng_GetSegment_2D (Ng_Mesh * mesh, int num, int * pi, int * matnum = NULL);
569
+
570
+
571
+ // load 2d netgen spline geometry
572
+ NGLIB_API Ng_Geometry_2D * Ng_LoadGeometry_2D (const char * filename);
573
+
574
+ // generate 2d mesh, mesh is allocated by function
575
+ NGLIB_API Ng_Result Ng_GenerateMesh_2D (Ng_Geometry_2D * geom,
576
+ Ng_Mesh ** mesh,
577
+ Ng_Meshing_Parameters * mp);
578
+
579
+ NGLIB_API void Ng_HP_Refinement (Ng_Geometry_2D * geom,
580
+ Ng_Mesh * mesh,
581
+ int levels);
582
+
583
+
584
+
585
+
586
+
587
+ // **********************************************************
588
+ // ** STL Meshing **
589
+ // **********************************************************
590
+
591
+
592
+ // loads geometry from STL file
593
+ NGLIB_API Ng_STL_Geometry * Ng_STL_LoadGeometry (const char * filename, int binary = 0);
594
+
595
+
596
+ // generate new STL Geometry
597
+ NGLIB_API Ng_STL_Geometry * Ng_STL_NewGeometry ();
598
+
599
+
600
+ // fills STL Geometry
601
+ // positive orientation
602
+ // normal vector may be null-pointer
603
+ NGLIB_API void Ng_STL_AddTriangle (Ng_STL_Geometry * geom,
604
+ double * p1, double * p2, double * p3,
605
+ double * nv = NULL);
606
+
607
+ // add (optional) edges :
608
+ NGLIB_API void Ng_STL_AddEdge (Ng_STL_Geometry * geom,
609
+ double * p1, double * p2);
610
+
611
+ // after adding triangles (and edges) initialize
612
+ NGLIB_API Ng_Result Ng_STL_InitSTLGeometry (Ng_STL_Geometry * geom);
613
+
614
+ // automatically generates edges:
615
+ NGLIB_API Ng_Result Ng_STL_MakeEdges (Ng_STL_Geometry * geom,
616
+ Ng_Mesh* mesh,
617
+ Ng_Meshing_Parameters * mp);
618
+
619
+
620
+ // generates mesh, empty mesh must be already created.
621
+ NGLIB_API Ng_Result Ng_STL_GenerateSurfaceMesh (Ng_STL_Geometry * geom,
622
+ Ng_Mesh * mesh,
623
+ Ng_Meshing_Parameters * mp);
624
+
625
+
626
+ #ifdef ACIS
627
+
628
+ // **********************************************************
629
+ // ** ACIS Meshing **
630
+ // **********************************************************
631
+
632
+ /// Data type for NETGEN STL geomty
633
+ typedef void * Ng_ACIS_Geometry;
634
+
635
+ // loads geometry from STL file
636
+ NGLIB_API Ng_ACIS_Geometry * Ng_ACIS_LoadGeometry (const char * filename);
637
+
638
+ // generates mesh, empty mesh must be already created.
639
+ NGLIB_API Ng_Result Ng_ACIS_GenerateSurfaceMesh (Ng_ACIS_Geometry * geom,
640
+ Ng_Mesh * mesh,
641
+ Ng_Meshing_Parameters * mp);
642
+
643
+
644
+ #endif
645
+
646
+
647
+
648
+
649
+
650
+
651
+ // **********************************************************
652
+ // ** Mesh refinement algorithms **
653
+ // **********************************************************
654
+
655
+ // uniform mesh refinement
656
+ NGLIB_API void Ng_Uniform_Refinement (Ng_Mesh * mesh);
657
+
658
+
659
+ // uniform mesh refinement with geometry adaption:
660
+
661
+ NGLIB_API void Ng_2D_Uniform_Refinement (Ng_Geometry_2D * geom,
662
+ Ng_Mesh * mesh);
663
+
664
+ NGLIB_API void Ng_STL_Uniform_Refinement (Ng_STL_Geometry * geom,
665
+ Ng_Mesh * mesh);
666
+
667
+ NGLIB_API void Ng_CSG_Uniform_Refinement (Ng_CSG_Geometry * geom,
668
+ Ng_Mesh * mesh);
669
+
670
+
671
+
672
+
673
+ // **********************************************************
674
+ // ** Second Order mesh algorithms **
675
+ // **********************************************************
676
+
677
+ // convert mesh to second order
678
+ NGLIB_API void Ng_Generate_SecondOrder (Ng_Mesh * mesh);
679
+
680
+
681
+ // convert mesh to second order with geometry adaption:
682
+
683
+ NGLIB_API void Ng_2D_Generate_SecondOrder (Ng_Geometry_2D * geom,
684
+ Ng_Mesh * mesh);
685
+
686
+ NGLIB_API void Ng_STL_Generate_SecondOrder (Ng_STL_Geometry * geom,
687
+ Ng_Mesh * mesh);
688
+
689
+ NGLIB_API void Ng_CSG_Generate_SecondOrder (Ng_CSG_Geometry * geom,
690
+ Ng_Mesh * mesh);
691
+
692
+
693
+ #ifdef OCCGEOMETRY
694
+ #include "nglib_occ.h"
695
+ #endif // OCCGEOMETRY
696
+ //
697
+ #endif // NGLIB