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,394 @@
1
+ #ifndef FILE_SURFACE
2
+ #define FILE_SURFACE
3
+
4
+ /**************************************************************************/
5
+ /* File: surface.hh */
6
+ /* Author: Joachim Schoeberl */
7
+ /* Date: 1. Dez. 95 */
8
+ /**************************************************************************/
9
+
10
+
11
+ namespace netgen
12
+ {
13
+
14
+ class TriangleApproximation;
15
+
16
+
17
+ /**
18
+ Basis class for implicit surface geometry.
19
+ This class is used for generation of surface meshes
20
+ in NETGEN
21
+ */
22
+ class Surface
23
+ {
24
+ protected:
25
+ /// invert normal vector
26
+ bool inverse;
27
+ /// maximal h in surface
28
+ double maxh;
29
+ /// name of surface
30
+ char * name;
31
+ /// boundary condition nr
32
+ int bcprop;
33
+ /// boundary condition label
34
+ string bcname;
35
+
36
+ public:
37
+ Surface ();
38
+ /** @name Tangential plane.
39
+ The tangential plane is used for surface mesh generation.
40
+ */
41
+
42
+ virtual ~Surface();
43
+
44
+ protected:
45
+ /** @name Points in the surface defining tangential plane.
46
+ Tangential plane is taken in p1, the local x-axis
47
+ is directed to p2.
48
+ */
49
+ //@{
50
+ ///
51
+ Point<3> p1;
52
+ ///
53
+ Point<3> p2;
54
+ //@}
55
+ /** @name Base-vectos for local coordinate system. */
56
+ //@{
57
+ /// in plane, directed p1->p2
58
+ Vec<3> ex;
59
+ /// in plane
60
+ Vec<3> ey;
61
+ /// outer normal direction
62
+ Vec<3> ez;
63
+ //@}
64
+ public:
65
+
66
+ virtual void DoArchive(Archive& archive)
67
+ {
68
+ archive & inverse & maxh & name & bcprop & bcname
69
+ & p1 & p2 & ex & ey & ez;
70
+ }
71
+
72
+ void SetName (const char * aname);
73
+ const char * Name () const { return name; }
74
+
75
+ //@{
76
+ /**
77
+ Defines tangential plane in ap1.
78
+ The local x-coordinate axis points to the direction of ap2 */
79
+ virtual void DefineTangentialPlane (const Point<3> & ap1,
80
+ const Point<3> & ap2);
81
+
82
+ /// Transforms 3d point p3d to local coordinates pplane
83
+ virtual void ToPlane (const Point<3> & p3d, Point<2> & pplane,
84
+ double h, int & zone) const;
85
+
86
+ /// Transforms point pplane in local coordinates to 3d point
87
+ virtual void FromPlane (const Point<2> & pplane,
88
+ Point<3> & p3d, double h) const;
89
+ //@}
90
+
91
+
92
+ /// Project point p onto surface (closest point)
93
+ virtual void Project (Point<3> & p) const;
94
+
95
+ /// Project along direction
96
+ virtual void SkewProject(Point<3> & p, const Vec<3> & direction) const;
97
+
98
+ /// Is current surface identic to surface 2 ?
99
+ virtual int IsIdentic (const Surface & /* s2 */, int & /* inv */,
100
+ double /* eps */) const
101
+ { return 0; }
102
+
103
+ ///
104
+ virtual int PointOnSurface (const Point<3> & p,
105
+ double eps = 1e-6) const;
106
+
107
+
108
+ /** @name Implicit function.
109
+ Calculate function value and derivatives.
110
+ */
111
+ //@{
112
+ /// Calculate implicit function value in point point
113
+ virtual double CalcFunctionValue (const Point<3> & point) const = 0;
114
+
115
+ /**
116
+ Calc gradient of implicit function.
117
+ gradient should be O(1) at surface
118
+ */
119
+ virtual void CalcGradient (const Point<3> & point, Vec<3> & grad) const = 0;
120
+
121
+ /**
122
+ Calculate second derivatives of implicit function.
123
+ */
124
+ virtual void CalcHesse (const Point<3> & point, Mat<3> & hesse) const;
125
+
126
+ /**
127
+ Returns outer normal vector.
128
+ */
129
+ // virtual void GetNormalVector (const Point<3> & p, Vec<3> & n) const;
130
+ virtual Vec<3> GetNormalVector (const Point<3> & p) const;
131
+
132
+ /**
133
+ Upper bound for spectral norm of Hesse-matrix
134
+ */
135
+ virtual double HesseNorm () const = 0;
136
+
137
+ /**
138
+ Upper bound for spectral norm of Hesse-matrix in the
139
+ rad - environment of point c.
140
+ */
141
+ virtual double HesseNormLoc (const Point<3> & /* c */,
142
+ double /* rad */) const
143
+ { return HesseNorm (); }
144
+ //@}
145
+
146
+
147
+ ///
148
+ virtual double MaxCurvature () const;
149
+ ///
150
+ virtual double MaxCurvatureLoc (const Point<3> & /* c */ ,
151
+ double /* rad */) const;
152
+
153
+ /** Returns any point in the surface.
154
+ Needed to start surface mesh generation e.g. on sphere */
155
+ virtual Point<3> GetSurfacePoint () const = 0;
156
+
157
+ ///
158
+ bool Inverse () const { return inverse; }
159
+ ///
160
+ void SetInverse (bool ainverse) { inverse = ainverse; }
161
+ ///
162
+ virtual void Print (ostream & str) const = 0;
163
+
164
+ ///
165
+ virtual void Reduce (const BoxSphere<3> & /* box */) { };
166
+ ///
167
+ virtual void UnReduce () { };
168
+
169
+ /// set max h in surface
170
+ void SetMaxH (double amaxh) { maxh = amaxh; }
171
+ ///
172
+ double GetMaxH () const { return maxh; }
173
+ ///
174
+ int GetBCProperty () const { return bcprop; }
175
+ ///
176
+ void SetBCProperty (int abc) { bcprop = abc; }
177
+
178
+ /** Determine local mesh-size.
179
+ Find
180
+ \[ h \leq hmax, \]
181
+ such that
182
+ \[ h \times \kappa (x) \leq c \qquad \mbox{in} B(x, h), \]
183
+ where kappa(x) is the curvature in x. */
184
+ virtual double LocH (const Point<3> & p, double x,
185
+ double c,
186
+ const MeshingParameters & mparam,
187
+ double hmax) const;
188
+
189
+ /**
190
+ Gets Approximation by triangles,
191
+ where qual is about the number of triangles per radius
192
+ */
193
+ virtual void GetTriangleApproximation (TriangleApproximation & /* tas */,
194
+ const Box<3> & /* boundingbox */,
195
+ double /* facets */ ) const { };
196
+
197
+
198
+ string GetBCName() const { return bcname; }
199
+
200
+ void SetBCName( string abc ) { bcname = abc; }
201
+ };
202
+
203
+
204
+ inline ostream & operator<< (ostream & ost, const Surface & surf)
205
+ {
206
+ surf.Print(ost);
207
+ return ost;
208
+ }
209
+
210
+
211
+
212
+ typedef enum { IS_OUTSIDE = 0, IS_INSIDE = 1, DOES_INTERSECT = 2}
213
+ INSOLID_TYPE;
214
+
215
+
216
+ class DummySurface : public Surface
217
+ {
218
+ virtual double CalcFunctionValue (const Point<3> & /* point */) const
219
+ { return 0; }
220
+
221
+ virtual void CalcGradient (const Point<3> & /* point */, Vec<3> & grad) const
222
+ { grad = Vec<3> (0,0,0); }
223
+
224
+ virtual Point<3> GetSurfacePoint () const
225
+ { return Point<3> (0,0,0); }
226
+
227
+ virtual double HesseNorm () const
228
+ { return 0; }
229
+
230
+ virtual void Project (Point<3> & /* p */) const
231
+ { ; }
232
+
233
+ virtual void Print (ostream & ost) const
234
+ { ost << "dummy surface"; }
235
+ };
236
+
237
+
238
+
239
+ class Primitive
240
+ {
241
+ protected:
242
+ NgArray<int> surfaceids;
243
+ NgArray<int> surfaceactive;
244
+
245
+ public:
246
+
247
+ Primitive ();
248
+
249
+ virtual ~Primitive();
250
+
251
+ virtual void DoArchive(Archive& archive)
252
+ {
253
+ archive & surfaceids & surfaceactive;
254
+ }
255
+
256
+ /*
257
+ Check, whether box intersects solid defined by surface.
258
+
259
+ return values:
260
+ 0 .. box outside solid \\
261
+ 1 .. box in solid \\
262
+ 2 .. can't decide (allowed, iff box is close to solid)
263
+ */
264
+ virtual INSOLID_TYPE BoxInSolid (const BoxSphere<3> & box) const = 0;
265
+ virtual INSOLID_TYPE PointInSolid (const Point<3> & p,
266
+ double eps) const = 0;
267
+
268
+ virtual void GetTangentialSurfaceIndices (const Point<3> & p,
269
+ NgArray<int> & surfind, double eps) const;
270
+
271
+ virtual INSOLID_TYPE VecInSolid (const Point<3> & p,
272
+ const Vec<3> & v,
273
+ double eps) const = 0;
274
+
275
+ // checks if lim s->0 lim t->0 p + t(v1 + s v2) in solid
276
+ virtual INSOLID_TYPE VecInSolid2 (const Point<3> & p,
277
+ const Vec<3> & v1,
278
+ const Vec<3> & v2,
279
+ double eps) const;
280
+
281
+ // checks if p + s v1 + s*s/2 v2 is inside
282
+ virtual INSOLID_TYPE VecInSolid3 (const Point<3> & p,
283
+ const Vec<3> & v1,
284
+ const Vec<3> & v2,
285
+ double eps) const;
286
+
287
+ // like VecInSolid2, but second order approximation
288
+ virtual INSOLID_TYPE VecInSolid4 (const Point<3> & p,
289
+ const Vec<3> & v,
290
+ const Vec<3> & v2,
291
+ const Vec<3> & m,
292
+ double eps) const;
293
+
294
+ // for a point p in the surface, into which (closed) surfaces does v point into ?
295
+ virtual void GetTangentialVecSurfaceIndices (const Point<3> & p, const Vec<3> & v,
296
+ NgArray<int> & surfind, double eps) const;
297
+
298
+ // a point p in the surface, and v a tangential vector
299
+ // for arbitrary small, but positive t consider q := Project(p+t*v)
300
+ // into which (closed) surfaces does v2 point into, when starting from q ?
301
+ virtual void GetTangentialVecSurfaceIndices2 (const Point<3> & p, const Vec<3> & v1, const Vec<3> & v2,
302
+ NgArray<int> & surfind, double eps) const;
303
+
304
+
305
+ virtual void CalcSpecialPoints (NgArray<Point<3> > & /* pts */) const { ; }
306
+ virtual void AnalyzeSpecialPoint (const Point<3> & /* pt */,
307
+ NgArray<Point<3> > & /* specpts */) const { ; }
308
+ virtual Vec<3> SpecialPointTangentialVector (const Point<3> & /* p */,
309
+ int /* s1 */, int /* s2 */) const
310
+ { return Vec<3> (0,0,0); }
311
+
312
+
313
+ virtual int GetNSurfaces() const = 0;
314
+ virtual Surface & GetSurface (int i = 0) = 0;
315
+ virtual const Surface & GetSurface (int i = 0) const = 0;
316
+
317
+ int GetSurfaceId (int i = 0) const;
318
+ void SetSurfaceId (int i, int id);
319
+ int SurfaceActive (int i) const { return surfaceactive[i]; }
320
+ virtual int SurfaceInverted (int /* i */ = 0) const { return 0; }
321
+
322
+ virtual void GetPrimitiveData (const char *& classname,
323
+ NgArray<double> & coeffs) const;
324
+ virtual void SetPrimitiveData (NgArray<double> & coeffs);
325
+ static Primitive * CreatePrimitive (const char * classname);
326
+
327
+
328
+ virtual void Reduce (const BoxSphere<3> & /* box */) { };
329
+ virtual void UnReduce () { };
330
+
331
+ virtual Primitive * Copy () const;
332
+ virtual void Transform (Transformation<3> & trans);
333
+ };
334
+
335
+
336
+
337
+
338
+ class OneSurfacePrimitive : public Surface, public Primitive
339
+ {
340
+ public:
341
+ OneSurfacePrimitive();
342
+ ~OneSurfacePrimitive();
343
+
344
+ virtual void DoArchive(Archive& archive)
345
+ {
346
+ Surface::DoArchive(archive);
347
+ Primitive::DoArchive(archive);
348
+ }
349
+
350
+ virtual INSOLID_TYPE PointInSolid (const Point<3> & p,
351
+ double eps) const;
352
+ virtual INSOLID_TYPE VecInSolid (const Point<3> & p,
353
+ const Vec<3> & v,
354
+ double eps) const;
355
+ virtual INSOLID_TYPE VecInSolid2 (const Point<3> & p,
356
+ const Vec<3> & v1,
357
+ const Vec<3> & v2,
358
+ double eps) const;
359
+
360
+ virtual INSOLID_TYPE VecInSolid3 (const Point<3> & p,
361
+ const Vec<3> & v1,
362
+ const Vec<3> & v2,
363
+ double eps) const;
364
+
365
+ virtual INSOLID_TYPE VecInSolid4 (const Point<3> & p,
366
+ const Vec<3> & v,
367
+ const Vec<3> & v2,
368
+ const Vec<3> & m,
369
+ double eps) const;
370
+
371
+ virtual int GetNSurfaces() const;
372
+ virtual Surface & GetSurface (int i = 0);
373
+ virtual const Surface & GetSurface (int i = 0) const;
374
+ };
375
+
376
+
377
+
378
+
379
+
380
+
381
+ /**
382
+ Projects point to edge.
383
+ The point hp is projected to the edge described by f1 and f2.
384
+ It is assumed that the edge is non-degenerated, and the
385
+ (generalized) Newton method converges.
386
+ */
387
+ extern void ProjectToEdge (const Surface * f1,
388
+ const Surface * f2,
389
+ Point<3> & hp);
390
+
391
+
392
+ }
393
+
394
+ #endif
@@ -0,0 +1,63 @@
1
+ #ifndef FILE_TRIAPPROX
2
+ #define FILE_TRIAPPROX
3
+
4
+ /**************************************************************************/
5
+ /* File: triapprox.hh */
6
+ /* Author: Joachim Schoeberl */
7
+ /* Date: 2. Mar. 98 */
8
+ /**************************************************************************/
9
+
10
+
11
+ namespace netgen
12
+ {
13
+
14
+ /**
15
+ Triangulated approximation to true surface
16
+ */
17
+
18
+
19
+ class TATriangle
20
+ {
21
+ int pi[3];
22
+ int surfind;
23
+ public:
24
+ TATriangle () { ; }
25
+
26
+ TATriangle (int si, int pi1, int pi2, int pi3)
27
+ { surfind = si; pi[0] = pi1; pi[1] = pi2; pi[2] = pi3; }
28
+
29
+ int SurfaceIndex() const { return surfind; }
30
+ int & SurfaceIndex() { return surfind; }
31
+
32
+ int & operator[] (int i) { return pi[i]; }
33
+ const int & operator[] (int i) const { return pi[i]; }
34
+ };
35
+
36
+
37
+ class TriangleApproximation
38
+ {
39
+ NgArray<Point<3> > points;
40
+ NgArray<Vec<3> > normals;
41
+ NgArray<TATriangle> trigs;
42
+
43
+ public:
44
+ TriangleApproximation();
45
+ int GetNP () const { return points.Size(); }
46
+ int GetNT () const { return trigs.Size(); }
47
+
48
+ int AddPoint (const Point<3> & p) { points.Append (p); return points.Size()-1; }
49
+ int AddNormal (const Vec<3> & n) { normals.Append (n); return normals.Size()-1; }
50
+ int AddTriangle (const TATriangle & tri, bool invert = 0);
51
+
52
+ const Point<3> & GetPoint (int i) const { return points[i]; }
53
+ const TATriangle & GetTriangle (int i) const { return trigs[i]; }
54
+ const Vec<3> & GetNormal (int i) const { return normals[i]; }
55
+
56
+ void RemoveUnusedPoints ();
57
+
58
+ friend class CSGeometry;
59
+ };
60
+
61
+ }
62
+
63
+ #endif
@@ -0,0 +1,34 @@
1
+ #ifndef FILE_VSCSG
2
+ #define FILE_VSCSG
3
+
4
+ /**************************************************************************/
5
+ /* File: vscsg.hpp */
6
+ /* Author: Joachim Schoeberl */
7
+ /* Date: 05. Jan. 2011 */
8
+ /**************************************************************************/
9
+
10
+ namespace netgen
11
+ {
12
+
13
+ class NGGUI_API VisualSceneGeometry : public VisualScene
14
+ {
15
+ class CSGeometry * geometry;
16
+ NgArray<int> trilists;
17
+ int selsurf;
18
+ public:
19
+ VisualSceneGeometry ();
20
+ virtual ~VisualSceneGeometry ();
21
+
22
+ void SetGeometry (class CSGeometry * ageometry) { geometry = ageometry; }
23
+ virtual void SelectSurface (int aselsurf);
24
+ virtual void BuildScene (int zoomall = 0);
25
+ virtual void DrawScene ();
26
+ };
27
+
28
+
29
+
30
+ }
31
+
32
+
33
+
34
+ #endif