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,62 @@
1
+ #ifndef FILE_MSGHANDLER
2
+ #define FILE_MSGHANDLER
3
+
4
+ /**************************************************************************/
5
+ /* File: msghandler.hh */
6
+ /* Author: Johannes Gerstmayr */
7
+ /* Date: 20. Nov. 99 */
8
+ /**************************************************************************/
9
+
10
+ #include <general/mystring.hpp>
11
+
12
+
13
+ namespace netgen
14
+ {
15
+
16
+ extern void PrintDot(char ch = '.');
17
+
18
+
19
+ //Message Pipeline:
20
+
21
+ //importance: importance of message: 1=very important, 3=middle, 5=low, 7=unimportant
22
+ extern DLL_HEADER void PrintMessage(int importance,
23
+ const MyStr& s1, const MyStr& s2=MyStr());
24
+ extern DLL_HEADER void PrintMessage(int importance,
25
+ const MyStr& s1, const MyStr& s2, const MyStr& s3, const MyStr& s4=MyStr());
26
+ extern DLL_HEADER void PrintMessage(int importance,
27
+ const MyStr& s1, const MyStr& s2, const MyStr& s3, const MyStr& s4,
28
+ const MyStr& s5, const MyStr& s6=MyStr(), const MyStr& s7=MyStr(), const MyStr& s8=MyStr());
29
+
30
+ // CR without line-feed
31
+ extern DLL_HEADER void PrintMessageCR(int importance,
32
+ const MyStr& s1, const MyStr& s2="", const MyStr& s3="", const MyStr& s4="",
33
+ const MyStr& s5="", const MyStr& s6="", const MyStr& s7="", const MyStr& s8="");
34
+ extern DLL_HEADER void PrintFnStart(const MyStr& s1, const MyStr& s2="", const MyStr& s3="", const MyStr& s4="",
35
+ const MyStr& s5="", const MyStr& s6="", const MyStr& s7="", const MyStr& s8="");
36
+ extern DLL_HEADER void PrintWarning(const MyStr& s1, const MyStr& s2="", const MyStr& s3="", const MyStr& s4="",
37
+ const MyStr& s5="", const MyStr& s6="", const MyStr& s7="", const MyStr& s8="");
38
+ extern DLL_HEADER void PrintError(const MyStr& s1, const MyStr& s2="", const MyStr& s3="", const MyStr& s4="",
39
+ const MyStr& s5="", const MyStr& s6="", const MyStr& s7="", const MyStr& s8="");
40
+ extern DLL_HEADER void PrintFileError(const MyStr& s1, const MyStr& s2="", const MyStr& s3="", const MyStr& s4="",
41
+ const MyStr& s5="", const MyStr& s6="", const MyStr& s7="", const MyStr& s8="");
42
+ extern DLL_HEADER void PrintSysError(const MyStr& s1, const MyStr& s2="", const MyStr& s3="", const MyStr& s4="",
43
+ const MyStr& s5="", const MyStr& s6="", const MyStr& s7="", const MyStr& s8="");
44
+ extern DLL_HEADER void PrintUserError(const MyStr& s1, const MyStr& s2="", const MyStr& s3="", const MyStr& s4="",
45
+ const MyStr& s5="", const MyStr& s6="", const MyStr& s7="", const MyStr& s8="");
46
+ extern DLL_HEADER void PrintTime(const MyStr& s1="", const MyStr& s2="", const MyStr& s3="", const MyStr& s4="",
47
+ const MyStr& s5="", const MyStr& s6="", const MyStr& s7="", const MyStr& s8="");
48
+
49
+
50
+
51
+
52
+ inline void PushStatusF(const std::string& s)
53
+ {
54
+ PushStatus (s);
55
+ PrintFnStart(s);
56
+ }
57
+
58
+ }
59
+
60
+
61
+ #endif
62
+
@@ -0,0 +1,172 @@
1
+ #ifndef FILE_PARALLELTOP
2
+ #define FILE_PARALLELTOP
3
+
4
+ namespace netgen
5
+ {
6
+
7
+
8
+ class ParallelMeshTopology
9
+ {
10
+ const Mesh & mesh;
11
+
12
+ /**
13
+ mapping from local to distant vertex number
14
+ each row of the table corresponds to one vertex
15
+ each row contains a list of pairs (procnr, dist_vnum)
16
+ */
17
+
18
+ DynamicTable<int> loc2distvert;
19
+ DynamicTable<int> loc2distedge, loc2distface;
20
+
21
+ Array<int> glob_vert;
22
+
23
+ // will get rid of them
24
+ NgArray<int> glob_edge, glob_face;
25
+ NgArray<int> glob_el, glob_surfel, glob_segm;
26
+
27
+ bool is_updated;
28
+
29
+ public:
30
+
31
+ ParallelMeshTopology (const Mesh & amesh);
32
+ ~ParallelMeshTopology ();
33
+
34
+ void Reset ();
35
+ void Print() const;
36
+
37
+
38
+ void UpdateCoarseGrid();
39
+ // [[deprecated("should not need it anymore")]]
40
+ // void UpdateCoarseGridGlobal();
41
+ void IdentifyVerticesAfterRefinement();
42
+ void EnumeratePointsGlobally ();
43
+
44
+ void AddDistantProc (PointIndex pi, int proc) { loc2distvert.AddUnique (pi-IndexBASE<PointIndex>(), proc); }
45
+ void AddDistantFaceProc (int edge, int proc) { loc2distface.AddUnique (edge, proc); }
46
+ void AddDistantEdgeProc (int face, int proc) { loc2distedge.AddUnique (face, proc); }
47
+
48
+ FlatArray<int> GetDistantProcs (PointIndex pi) const { return loc2distvert[pi-IndexBASE<PointIndex>()]; }
49
+ FlatArray<int> GetDistantFaceProcs (int locnum) const { return loc2distface[locnum]; }
50
+ FlatArray<int> GetDistantEdgeProcs (int locnum) const { return loc2distedge[locnum]; }
51
+
52
+
53
+
54
+ auto & L2G (PointIndex pi) { return glob_vert[pi-IndexBASE<PointIndex>()]; }
55
+ auto L2G (PointIndex pi) const { return glob_vert[pi-IndexBASE<PointIndex>()]; }
56
+
57
+
58
+ /// set number of local vertices, reset sizes of loc2dist_vert, isexchangevert...
59
+ void SetNV (int anv);
60
+ void SetNV_Loc2Glob (int anv);
61
+ void SetNE (int ane);
62
+ void SetNSE (int anse);
63
+ void SetNSegm (int anseg);
64
+
65
+ [[deprecated("Use AddDistantFaceProc instead!")]]
66
+ void SetDistantFaceNum (int dest, int locnum) { loc2distface.AddUnique (locnum-1, dest); }
67
+ [[deprecated("Use AddDistantProc instead!")]]
68
+ void SetDistantPNum (int dest, int locnum) { loc2distvert.AddUnique (locnum-1, dest); }
69
+ [[deprecated("Use AddDistantEdgeProc instead!")]]
70
+ void SetDistantEdgeNum (int dest, int locnum) { loc2distedge.AddUnique (locnum-1, dest); }
71
+
72
+ [[deprecated("Use GetDistantFaceProcx instead!")]]
73
+ FlatArray<int> GetDistantFaceNums (int locnum) const { return loc2distface[locnum]; }
74
+ [[deprecated("Use GetDistantEdgeProcx instead!")]]
75
+ FlatArray<int> GetDistantEdgeNums (int locnum) const { return loc2distedge[locnum]; }
76
+
77
+
78
+
79
+ [[deprecated("Use L2G(pi) instead!")]]
80
+ void SetLoc2Glob_Vert (int locnum, int globnum) { glob_vert[locnum-1] = globnum; }
81
+ [[deprecated("Try to avoid global enumration!")]]
82
+ void SetLoc2Glob_Edge (int locnum, int globnum) { glob_edge[locnum-1] = globnum; }
83
+ [[deprecated("Try to avoid global enumration!")]]
84
+ void SetLoc2Glob_Face (int locnum, int globnum) { glob_face[locnum-1] = globnum; }
85
+ // [[deprecated("Try to avoid global enumration!")]]
86
+ void SetLoc2Glob_VolEl (int locnum, int globnum) { glob_el[locnum-1] = globnum; }
87
+ // [[deprecated("Try to avoid global enumration!")]]
88
+ void SetLoc2Glob_SurfEl (int locnum, int globnum) { glob_surfel[locnum-1] = globnum; }
89
+ // [[deprecated("Try to avoid global enumration!")]]
90
+ void SetLoc2Glob_Segm (int locnum, int globnum) { glob_segm[locnum-1] = globnum; }
91
+
92
+ // [[deprecated("Try to avoid global enumration!")]]
93
+ int GetGlobalPNum (PointIndex locnum) const { return glob_vert[locnum-IndexBASE<PointIndex>()]; }
94
+ [[deprecated("Try to avoid global enumration!")]]
95
+ int GetGlobalEdgeNum (int locnum) const { return glob_edge[locnum-1]; }
96
+ [[deprecated("Try to avoid global enumration!")]]
97
+ int GetGlobalFaceNum (int locnum) const { return glob_face[locnum-1]; }
98
+ [[deprecated("Try to avoid global enumration!")]]
99
+ int GetGlobalElNum (int locnum) const { return glob_el[locnum-1]; }
100
+ [[deprecated("Try to avoid global enumration!")]]
101
+ int GetGlobalSElNum (int locnum) const { return glob_surfel[locnum-1]; }
102
+
103
+
104
+
105
+ // [[deprecated("Use GetDistantPNums(locnum).Size() instead!")]]
106
+ int GetNDistantPNums (int locpnum) const { return loc2distvert[locpnum-1].Size(); }
107
+
108
+ // [[deprecated("Use GetDistantFaceNums(locnum).Size() instead!")]]
109
+ int GetNDistantFaceNums (int locfacenum) const { return loc2distface[locfacenum-1].Size(); }
110
+
111
+ // [[deprecated("Use GetDistantEdgeNums(locnum).Size() instead!")]]
112
+ int GetNDistantEdgeNums ( int locedgenum) const { return loc2distedge[locedgenum-1].Size(); }
113
+
114
+ // [[deprecated("Use GetDistantPNums(locnum) -> FlatArray instead!")]]
115
+ void GetDistantPNums (int locpnum, int * distpnums ) const
116
+ {
117
+ for (int i = 0; i < loc2distvert[locpnum-1].Size(); i++ )
118
+ distpnums[i] = loc2distvert[locpnum-1][i];
119
+ }
120
+
121
+ // [[deprecated("Use GetDistantFaceNums(locnum) -> FlatArray instead!")]]
122
+ void GetDistantFaceNums (int locfacenum, int * distfacenums ) const
123
+ {
124
+ for ( int i = 0; i < loc2distface[locfacenum-1].Size(); i++ )
125
+ distfacenums[i] = loc2distface[locfacenum-1][i];
126
+ }
127
+
128
+ // [[deprecated("Use GetDistantFaceNums(locnum) -> FlatArray instead!")]]
129
+ void GetDistantFaceNums (int locfacenum, NgArray<int> & distfacenums ) const
130
+ {
131
+ // distfacenums = loc2distface[locfacenum-1];
132
+ auto loc = loc2distface[locfacenum-1];
133
+ distfacenums.SetSize (loc.Size());
134
+ for (int i = 0; i < loc.Size(); i++)
135
+ distfacenums[i] = loc[i];
136
+ }
137
+
138
+ // [[deprecated("Use GetDistantEdgeNums(locnum) -> FlatArray instead!")]]
139
+ void GetDistantEdgeNums (int locedgenum, int * distedgenums ) const
140
+ {
141
+ for (int i = 0; i < loc2distedge[locedgenum-1].Size(); i++ )
142
+ distedgenums[i] = loc2distedge[locedgenum-1][i];
143
+ }
144
+
145
+ // [[deprecated("Use GetDistantEdgeNums(locnum) -> FlatArray instead!")]]
146
+ void GetDistantEdgeNums (int locedgenum, NgArray<int> & distedgenums ) const
147
+ {
148
+ // distedgenums = loc2distedge[locedgenum-1];
149
+ auto loc = loc2distedge[locedgenum-1];
150
+ distedgenums.SetSize (loc.Size());
151
+ for (int i = 0; i < loc.Size(); i++)
152
+ distedgenums[i] = loc[i];
153
+ }
154
+
155
+ [[deprecated("Use GetDistantProcs(..)!")]]
156
+ FlatArray<int> GetDistantPNums (int locnum) const { return loc2distvert[locnum]; }
157
+
158
+
159
+
160
+ [[deprecated("Use GetDistantProcs(..).Contains instead!")]]
161
+ bool IsExchangeVert (int dest, int vnum) const
162
+ {
163
+ return loc2distvert[vnum-1].Contains (dest);
164
+ }
165
+ };
166
+
167
+ }
168
+
169
+
170
+
171
+
172
+ #endif
@@ -0,0 +1,206 @@
1
+ #ifndef NETGEN_MESHING_PYTHON_MESH_HPP
2
+ #define NETGEN_MESHING_PYTHON_MESH_HPP
3
+
4
+ #include <core/python_ngcore.hpp>
5
+
6
+ #include "meshing.hpp"
7
+
8
+ namespace netgen
9
+ {
10
+ // TODO: Clarify a lot of these parameters
11
+ static string meshingparameter_description = R"delimiter(
12
+ Meshing Parameters
13
+ -------------------
14
+
15
+ maxh: float = 1e10
16
+ Global upper bound for mesh size.
17
+
18
+ grading: float = 0.3
19
+ Mesh grading how fast the local mesh size can change.
20
+
21
+ meshsizefilename: str = None
22
+ Load meshsize from file. Can set local mesh size for points
23
+ and along edges. File must have the format:
24
+
25
+ nr_points
26
+ x1, y1, z1, meshsize
27
+ x2, y2, z2, meshsize
28
+ ...
29
+ xn, yn, zn, meshsize
30
+
31
+ nr_edges
32
+ x11, y11, z11, x12, y12, z12, meshsize
33
+ ...
34
+ xn1, yn1, zn1, xn2, yn2, zn2, meshsize
35
+
36
+ segmentsperedge: float = 1.
37
+ Minimal number of segments per edge.
38
+
39
+ quad_dominated: bool = False
40
+ Quad-dominated surface meshing.
41
+
42
+ blockfill: bool = True
43
+ Do fast blockfilling.
44
+
45
+ filldist: float = 0.1
46
+ Block fill up to distance
47
+
48
+ delaunay: bool = True
49
+ Use delaunay meshing.
50
+
51
+ delaunay2d : bool = True
52
+ Use delaunay meshing for 2d geometries.
53
+
54
+ Optimization Parameters
55
+ -----------------------
56
+
57
+ optimize3d: str = "cmdmustm"
58
+ 3d optimization strategy:
59
+ m .. move nodes
60
+ M .. move nodes, cheap functional
61
+ s .. swap faces
62
+ c .. combine elements
63
+ d .. divide elements
64
+ p .. plot, no pause
65
+ P .. plot, Pause
66
+ h .. Histogramm, no pause
67
+ H .. Histogramm, pause
68
+
69
+ optsteps3d: int = 3
70
+ Number of 3d optimization steps.
71
+
72
+ optimize2d: str = "smcmSmcmSmcm"
73
+ 2d optimization strategy:
74
+ s .. swap, opt 6 lines/node
75
+ S .. swap, optimal elements
76
+ m .. move nodes
77
+ p .. plot, no pause
78
+ P .. plot, pause
79
+ c .. combine
80
+
81
+ optsteps2d: int = 3
82
+ Number of 2d optimization steps.
83
+
84
+ elsizeweight: float = 0.2
85
+ Weight of element size w.r.t. element shape in optimization.
86
+
87
+ )delimiter";
88
+
89
+ inline void CreateMPfromKwargs(MeshingParameters& mp, py::kwargs kwargs, bool throw_if_not_all_parsed=true)
90
+ {
91
+ if(kwargs.contains("optimize3d"))
92
+ mp.optimize3d = py::cast<string>(kwargs.attr("pop")("optimize3d"));
93
+ if(kwargs.contains("optsteps3d"))
94
+ mp.optsteps3d = py::cast<int>(kwargs.attr("pop")("optsteps3d"));
95
+ if(kwargs.contains("optimize2d"))
96
+ mp.optimize2d = py::cast<string>(kwargs.attr("pop")("optimize2d"));
97
+ if(kwargs.contains("optsteps2d"))
98
+ mp.optsteps2d = py::cast<int>(kwargs.attr("pop")("optsteps2d"));
99
+ if(kwargs.contains("opterrpow"))
100
+ mp.opterrpow = py::cast<double>(kwargs.attr("pop")("opterrpow"));
101
+ if(kwargs.contains("blockfill"))
102
+ mp.blockfill = py::cast<bool>(kwargs.attr("pop")("blockfill"));
103
+ if(kwargs.contains("filldist"))
104
+ mp.filldist = py::cast<double>(kwargs.attr("pop")("filldist"));
105
+ if(kwargs.contains("safety"))
106
+ mp.safety = py::cast<double>(kwargs.attr("pop")("safety"));
107
+ if(kwargs.contains("relinnersafety"))
108
+ mp.relinnersafety = py::cast<double>(kwargs.attr("pop")("relinnersafety"));
109
+ if(kwargs.contains("uselocalh"))
110
+ mp.uselocalh = py::cast<bool>(kwargs.attr("pop")("uselocalh"));
111
+ if(kwargs.contains("grading"))
112
+ mp.grading = py::cast<double>(kwargs.attr("pop")("grading"));
113
+ if(kwargs.contains("delaunay"))
114
+ mp.delaunay = py::cast<bool>(kwargs.attr("pop")("delaunay"));
115
+ if(kwargs.contains("delaunay2d"))
116
+ mp.delaunay2d = py::cast<bool>(kwargs.attr("pop")("delaunay2d"));
117
+ if(kwargs.contains("maxh"))
118
+ mp.maxh = py::cast<double>(kwargs.attr("pop")("maxh"));
119
+ if(kwargs.contains("minh"))
120
+ mp.minh = py::cast<double>(kwargs.attr("pop")("minh"));
121
+ if(kwargs.contains("meshsizefilename"))
122
+ mp.meshsizefilename = py::cast<string>(kwargs.attr("pop")("meshsizefilename"));
123
+ if(kwargs.contains("startinsurface"))
124
+ mp.startinsurface = py::cast<bool>(kwargs.attr("pop")("startinsurface"));
125
+ if(kwargs.contains("checkoverlap"))
126
+ mp.checkoverlap = py::cast<bool>(kwargs.attr("pop")("checkoverlap"));
127
+ if(kwargs.contains("checkoverlappingboundary"))
128
+ mp.checkoverlappingboundary = py::cast<bool>(kwargs.attr("pop")("checkoverlappingboundary"));
129
+ if(kwargs.contains("checkchartboundary"))
130
+ mp.checkchartboundary = py::cast<bool>(kwargs.attr("pop")("checkchartboundary"));
131
+ if(kwargs.contains("curvaturesafety"))
132
+ mp.curvaturesafety = py::cast<double>(kwargs.attr("pop")("curvaturesafety"));
133
+ if(kwargs.contains("segmentsperedge"))
134
+ mp.segmentsperedge = py::cast<double>(kwargs.attr("pop")("segmentsperedge"));
135
+ if(kwargs.contains("parthread"))
136
+ mp.parthread = py::cast<bool>(kwargs.attr("pop")("parthread"));
137
+ if(kwargs.contains("elsizeweight"))
138
+ mp.elsizeweight = py::cast<double>(kwargs.attr("pop")("elsizeweight"));
139
+ if(kwargs.contains("perfstepsstart"))
140
+ mp.perfstepsstart = py::cast<int>(kwargs.attr("pop")("perfstepsstart"));
141
+ if(kwargs.contains("perfstepsend"))
142
+ mp.perfstepsend = py::cast<int>(kwargs.attr("pop")("perfstepsend"));
143
+ if(kwargs.contains("giveuptol2d"))
144
+ mp.giveuptol2d = py::cast<int>(kwargs.attr("pop")("giveuptol2d"));
145
+ if(kwargs.contains("giveuptol"))
146
+ mp.giveuptol = py::cast<int>(kwargs.attr("pop")("giveuptol"));
147
+ if(kwargs.contains("giveuptolopenquads"))
148
+ mp.giveuptolopenquads = py::cast<int>(kwargs.attr("pop")("giveuptolopenquads"));
149
+ if(kwargs.contains("maxoutersteps"))
150
+ mp.maxoutersteps = py::cast<int>(kwargs.attr("pop")("maxoutersteps"));
151
+ if(kwargs.contains("starshapeclass"))
152
+ mp.starshapeclass = py::cast<int>(kwargs.attr("pop")("starshapeclass"));
153
+ if(kwargs.contains("baseelnp"))
154
+ mp.baseelnp = py::cast<int>(kwargs.attr("pop")("baseelnp"));
155
+ if(kwargs.contains("sloppy"))
156
+ mp.sloppy = py::cast<int>(kwargs.attr("pop")("sloppy"));
157
+ if(kwargs.contains("badellimit"))
158
+ mp.badellimit = py::cast<double>(kwargs.attr("pop")("badellimit"));
159
+ if(kwargs.contains("check_impossible"))
160
+ mp.check_impossible = py::cast<bool>(kwargs.attr("pop")("check_impossible"));
161
+ if(kwargs.contains("only3D_domain_nr"))
162
+ mp.only3D_domain_nr = py::cast<int>(kwargs.attr("pop")("only3D_domain_nr"));
163
+ if(kwargs.contains("secondorder"))
164
+ mp.secondorder = py::cast<bool>(kwargs.attr("pop")("secondorder"));
165
+ if(kwargs.contains("elementorder"))
166
+ mp.elementorder = py::cast<int>(kwargs.attr("pop")("elementorder"));
167
+ if(kwargs.contains("quad"))
168
+ {
169
+ cout << "WARNING: Meshing parameter 'quad' is deprecated, use 'quad_dominated' instead!" << endl;
170
+ mp.quad = py::cast<bool>(kwargs.attr("pop")("quad"));
171
+ }
172
+ if(kwargs.contains("quad_dominated"))
173
+ mp.quad = py::cast<bool>(kwargs.attr("pop")("quad_dominated"));
174
+ if(kwargs.contains("try_hexes"))
175
+ mp.try_hexes = py::cast<bool>(kwargs.attr("pop")("try_hexes"));
176
+ if(kwargs.contains("inverttets"))
177
+ mp.inverttets = py::cast<bool>(kwargs.attr("pop")("inverttets"));
178
+ if(kwargs.contains("inverttrigs"))
179
+ mp.inverttrigs = py::cast<bool>(kwargs.attr("pop")("inverttrigs"));
180
+ if(kwargs.contains("autozrefine"))
181
+ mp.autozrefine = py::cast<bool>(kwargs.attr("pop")("autozrefine"));
182
+ if(kwargs.contains("parallel_meshing"))
183
+ mp.parallel_meshing = py::cast<bool>(kwargs.attr("pop")("parallel_meshing"));
184
+ if(kwargs.contains("nthreads"))
185
+ mp.nthreads = py::cast<int>(kwargs.attr("pop")("nthreads"));
186
+ if(kwargs.contains("closeedgefac"))
187
+ mp.closeedgefac = py::cast<optional<double>>(kwargs.attr("pop")("closeedgefac"));
188
+
189
+ if(kwargs.contains("boundary_layers"))
190
+ {
191
+ auto layers = py::list(kwargs.attr("pop")("boundary_layers"));
192
+ for(auto layer : layers)
193
+ mp.boundary_layers.Append(py::cast<BoundaryLayerParameters>(layer));
194
+ }
195
+
196
+ if(kwargs.size())
197
+ {
198
+ if(throw_if_not_all_parsed)
199
+ throw Exception(string("Not all kwargs given to GenerateMesh could be parsed:") + string(py::str(kwargs)));
200
+ mp.geometrySpecificParameters = CreateFlagsFromKwArgs(kwargs);
201
+ }
202
+ }
203
+ } // namespace netgen
204
+
205
+ #endif // NETGEN_MESHING_PYTHON_MESH_HPP
206
+
@@ -0,0 +1,172 @@
1
+ #ifndef FILE_NETRULE
2
+ #define FILE_NETRULE
3
+
4
+ namespace netgen
5
+ {
6
+ ///
7
+ class netrule
8
+ {
9
+ private:
10
+ ///
11
+ typedef struct tf
12
+ { float f1, f2, f3; } threefloat;
13
+
14
+ class threeint
15
+ {
16
+ public: int i1, i2, i3;
17
+ threeint() { }
18
+ threeint(int ai1, int ai2, int ai3)
19
+ { i1 = ai1; i2 = ai2; i3 = ai3; }
20
+ };
21
+
22
+
23
+ ///
24
+ int quality;
25
+ ///
26
+ string name;
27
+ ///
28
+ NgArray<Point<2>> points;
29
+ ///
30
+ NgArray<INDEX_2> lines;
31
+ ///
32
+ NgArray<Point<2>> freezone, freezonelimit;
33
+ ///
34
+ NgArray<NgArray<Point<2>>> freezone_i;
35
+ ///
36
+ NgArray<Point<2>> transfreezone;
37
+
38
+ ///
39
+ NgArray<int> dellines;
40
+ ///
41
+ NgArray<Element2d> elements;
42
+ ///
43
+ NgArray<threefloat> tolerances, linetolerances;
44
+ ///
45
+ NgArray<threeint> orientations;
46
+ ///
47
+ DenseMatrix oldutonewu, oldutofreearea, oldutofreearealimit;
48
+ ///
49
+ NgArray<DenseMatrix> oldutofreearea_i;
50
+ ///
51
+ MatrixFixWidth<3> freesetinequ;
52
+
53
+ ///
54
+ NgArray<Vec<2>> linevecs;
55
+
56
+ ///
57
+ int noldp, noldl;
58
+ ///
59
+ float fzminx, fzmaxx, fzminy, fzmaxy;
60
+
61
+ /// topological distance of line to base element
62
+ NgArray<int> lnearness;
63
+
64
+ public:
65
+
66
+ ///
67
+ netrule ();
68
+ ///
69
+ ~netrule();
70
+
71
+ ///
72
+ int GetNP () const { return points.Size(); }
73
+ ///
74
+ int GetNL () const { return lines.Size(); }
75
+ ///
76
+ int GetNE () const { return elements.Size(); }
77
+ ///
78
+ int GetNOldP () const { return noldp; }
79
+ ///
80
+ int GetNOldL () const { return noldl; }
81
+ ///
82
+ int GetNDelL () const { return dellines.Size(); }
83
+ ///
84
+ int GetNOrientations () const { return orientations.Size(); }
85
+ ///
86
+ int GetQuality () const { return quality; }
87
+ ///
88
+ int GetLNearness (int li) const { return lnearness.Get(li); }
89
+
90
+ ///
91
+ const Point<2>& GetPoint (int i) const { return points.Get(i); }
92
+ ///
93
+ const INDEX_2 & GetLine (int i) const { return lines.Get(i); }
94
+ ///
95
+ const Element2d & GetElement (int i) const { return elements.Get(i); }
96
+ ///
97
+ const threeint & GetOrientation (int i) const { return orientations.Get(i); }
98
+ ///
99
+ int GetDelLine (int i) const { return dellines.Get(i); }
100
+ ///
101
+ const NgArray<int> & GetDelLines() const { return dellines; }
102
+ ///
103
+ void GetFreeZone (NgArray<Point<2>> & afreearea);
104
+ ///
105
+
106
+ double CalcPointDist (int pi, const Point<2> & p) const
107
+ {
108
+ double dx = p[0] - points.Get(pi)[0];
109
+ double dy = p[1] - points.Get(pi)[1];
110
+ const threefloat * tfp = &tolerances.Get(pi);
111
+ return tfp->f1 * dx * dx + tfp->f2 * dx * dy + tfp->f3 * dy * dy;
112
+ }
113
+
114
+ ///
115
+ float CalcLineError (int li, const Vec<2>& v) const;
116
+
117
+ ///
118
+ void SetFreeZoneTransformation (const Vector & u, int tolclass);
119
+
120
+ ///
121
+ bool IsInFreeZone (const Point<2> & p) const
122
+ {
123
+ if (p[0] < fzminx || p[0] > fzmaxx ||
124
+ p[1] < fzminy || p[1] > fzmaxy) return 0;
125
+
126
+ for (int i = 0; i < transfreezone.Size(); i++)
127
+ {
128
+ if (freesetinequ(i, 0) * p[0] +
129
+ freesetinequ(i, 1) * p[1] +
130
+ freesetinequ(i, 2) > 0) return 0;
131
+ }
132
+ return 1;
133
+ }
134
+
135
+ ///
136
+ int IsLineInFreeZone (const Point<2> & p1, const Point<2> & p2) const
137
+ {
138
+ if ( (p1[0] > fzmaxx && p2[0] > fzmaxx) ||
139
+ (p1[0] < fzminx && p2[0] < fzminx) ||
140
+ (p1[1] > fzmaxy && p2[1] > fzmaxy) ||
141
+ (p1[1] < fzminy && p2[1] < fzminy) ) return 0;
142
+ return IsLineInFreeZone2 (p1, p2);
143
+ }
144
+ ///
145
+ int IsLineInFreeZone2 (const Point<2> & p1, const Point<2> & p2) const;
146
+ ///
147
+ int ConvexFreeZone () const;
148
+ ///
149
+ const NgArray<Point<2>> & GetTransFreeZone () { return transfreezone; }
150
+
151
+ ///
152
+ int GetPointNr (int ln, int endp) const { return lines.Get(ln).I(endp); }
153
+
154
+ ///
155
+ const DenseMatrix & GetOldUToNewU () const { return oldutonewu; }
156
+ ///
157
+ const DenseMatrix & GetOldUToFreeArea () const { return oldutofreearea; }
158
+ ///
159
+ const string & Name () const { return name; }
160
+
161
+ ///
162
+ void LoadRule (istream & ist);
163
+ };
164
+
165
+
166
+
167
+ /** Draws 2D rules.
168
+ Visual testing of 2D meshing rules */
169
+ extern void DrawRules ();
170
+ } // namespace netgen
171
+ #endif
172
+