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,145 @@
1
+ #ifndef NETGEN_CORE_EXCEPTION_HPP
2
+ #define NETGEN_CORE_EXCEPTION_HPP
3
+
4
+ #include <cstddef>
5
+ #include <sstream> // for stringstream
6
+ #include <stdexcept> // for exception
7
+ #include <string> // for string
8
+
9
+ #include "ngcore_api.hpp" // for NGCORE_API
10
+ #include "utils.hpp" // for ToString
11
+
12
+
13
+ namespace ngcore
14
+ {
15
+ NGCORE_API std::string GetBackTrace();
16
+
17
+ // Exception for code that shouldn't be executed
18
+ class NGCORE_API UnreachableCodeException : public std::exception
19
+ {
20
+ const char* what() const noexcept override
21
+ {
22
+ return "Shouldn't get here, something went wrong!";
23
+ }
24
+ };
25
+
26
+ // Default exception class
27
+ class NGCORE_API Exception : public std::exception
28
+ {
29
+ /// a verbal description of the exception
30
+ std::string m_what;
31
+ public:
32
+ Exception() = default;
33
+ Exception(const Exception&) = default;
34
+ Exception(Exception&&) = default;
35
+ Exception(const std::string& s); // : m_what(s) {}
36
+ Exception(const char* s); // : m_what(s) {}
37
+ Exception(std::string_view s1, std::string_view s2);
38
+ Exception(std::string_view s1, std::string_view s2, std::string_view s3);
39
+ ~Exception() override = default;
40
+
41
+ [[noreturn]] static void Throw (std::string_view s1);
42
+ [[noreturn]] static void Throw (std::string_view s1, std::string_view s2);
43
+ [[noreturn]] static void Throw (std::string_view s1, std::string_view s2, std::string_view s3);
44
+
45
+ Exception& operator =(const Exception&) = default;
46
+ Exception& operator =(Exception&&) noexcept = default;
47
+
48
+ /// append string to description
49
+ Exception & Append (const std::string & s) { m_what += s; return *this; }
50
+ /// append string to description
51
+ Exception & Append (const char * s) { m_what += s; return *this; }
52
+
53
+ /// verbal description of exception
54
+ const std::string & What() const { return m_what; }
55
+
56
+ /// implement virtual function of std::exception
57
+ const char* what() const noexcept override { return m_what.c_str(); }
58
+ };
59
+
60
+ [[noreturn]] NGCORE_API void ThrowException(const std::string & s);
61
+ [[noreturn]] NGCORE_API void ThrowException(const char * s);
62
+
63
+ // Out of Range exception
64
+ class NGCORE_API RangeException : public Exception
65
+ {
66
+ public:
67
+ /// where it occurs, index, minimal and maximal indices
68
+ RangeException (// const std::string & where,
69
+ const char * where,
70
+ ptrdiff_t ind, ptrdiff_t imin, ptrdiff_t imax);
71
+ /*
72
+ : Exception("")
73
+ {
74
+ std::stringstream str;
75
+ str << where << ": index " << ind << " out of range [" << imin << "," << imax << ")\n";
76
+ Append (str.str());
77
+ Append (GetBackTrace());
78
+ }
79
+ */
80
+ template<typename T>
81
+ RangeException(const std::string& where, const T& value)
82
+ {
83
+ std::stringstream str;
84
+ str << where << " called with wrong value " << value << "\n";
85
+ Append(str.str());
86
+ }
87
+ };
88
+
89
+ [[noreturn]] NGCORE_API void ThrowRangeException(const char * s, ptrdiff_t ind, ptrdiff_t imin, ptrdiff_t imax);
90
+ [[noreturn]] NGCORE_API void ThrowNotTheSameException(const char * s, ptrdiff_t a, ptrdiff_t b);
91
+
92
+
93
+ // Exception used if no simd implementation is available to fall back to standard evaluation
94
+ class NGCORE_API ExceptionNOSIMD : public Exception
95
+ { public: using Exception::Exception; };
96
+
97
+ template <typename T>
98
+ struct IsSafe {
99
+ constexpr operator bool() const { return false; } };
100
+
101
+ namespace detail {
102
+ template <typename T, typename Tmin, typename Tmax>
103
+ inline static constexpr void CheckRange(const char * s, const T& n, Tmin first, Tmax next)
104
+ {
105
+ if constexpr (!IsSafe<decltype(n)>())
106
+ if (n<first || n>=next)
107
+ ThrowRangeException(s, ptrdiff_t(n), ptrdiff_t(first), ptrdiff_t(next));
108
+ }
109
+
110
+ template <typename Ta, typename Tb>
111
+ inline static constexpr void CheckSame(const char * s, const Ta& a, const Tb& b)
112
+ {
113
+ if constexpr (!IsSafe<decltype(a)>() || !IsSafe<decltype(b)>())
114
+ if(a != b)
115
+ {
116
+ if constexpr(std::is_integral_v<decltype(a)> && std::is_same_v<decltype(a),decltype(b)>)
117
+ ThrowNotTheSameException(s, long(a), long(b)); \
118
+ else
119
+ throw Exception(std::string(s) + "\t: not the same, a="+ToString(a) + ", b="+ngcore::ToString(b) + GetBackTrace());
120
+ }
121
+ }
122
+ } // namespace detail
123
+ } // namespace ngcore
124
+
125
+ #define NETGEN_CORE_NGEXEPTION_STR_HELPER(x) #x
126
+ #define NETGEN_CORE_NGEXEPTION_STR(x) NETGEN_CORE_NGEXEPTION_STR_HELPER(x)
127
+
128
+ // Convenience macro to append file name and line of exception origin to the string
129
+ #define NG_EXCEPTION(s) ngcore::Exception(__FILE__ ":" NETGEN_CORE_NGEXEPTION_STR(__LINE__) "\t"+std::string(s))
130
+
131
+ #if defined(NETGEN_ENABLE_CHECK_RANGE) && !defined(__CUDA_ARCH__)
132
+ #define NETGEN_CHECK_RANGE(value, min, max_plus_one) ngcore::detail::CheckRange(__FILE__ ":" NETGEN_CORE_NGEXEPTION_STR(__LINE__) "\t", value, min, max_plus_one);
133
+ #define NETGEN_CHECK_SAME(a,b) ngcore::detail::CheckSame(__FILE__ ":" NETGEN_CORE_NGEXEPTION_STR(__LINE__) "\t", a, b);
134
+
135
+ #define NETGEN_NOEXCEPT
136
+ #else // defined(NETGEN_ENABLE_CHECK_RANGE) && !defined(__CUDA_ARCH__)
137
+ #define NETGEN_CHECK_RANGE(value, min, max)
138
+ #define NETGEN_CHECK_SAME(a,b)
139
+ // #define NETGEN_CHECK_SHAPE(a,b)
140
+ #define NETGEN_NOEXCEPT noexcept
141
+ #endif // defined(NETGEN_ENABLE_CHECK_RANGE) && !defined(__CUDA_ARCH__)
142
+
143
+
144
+
145
+ #endif // NETGEN_CORE_EXCEPTION_HPP
@@ -0,0 +1,199 @@
1
+ #ifndef NETGEN_CORE_FLAGS_HPP
2
+ #define NETGEN_CORE_FLAGS_HPP
3
+
4
+
5
+ /**************************************************************************/
6
+ /* File: flags.hpp */
7
+ /* Author: Joachim Schoeberl */
8
+ /* Date: 10. Oct. 96 */
9
+ /**************************************************************************/
10
+
11
+ #include <iostream>
12
+ #include <memory>
13
+ #include <string>
14
+ #include <any>
15
+
16
+ #include "array.hpp"
17
+ #include "symboltable.hpp"
18
+ #include "xbool.hpp"
19
+
20
+ namespace ngcore
21
+ {
22
+
23
+ /**
24
+ A storage for command-line flags.
25
+ The flag structure maintains string flags, numerical flags,
26
+ define flags, string list flags, num list flags.
27
+ */
28
+ class NGCORE_API Flags
29
+ {
30
+ /// string flags
31
+ SymbolTable<std::string> strflags;
32
+ /// numerical flags
33
+ SymbolTable<double> numflags;
34
+ /// define flags
35
+ SymbolTable<bool> defflags;
36
+ /// string list flags
37
+ SymbolTable<std::shared_ptr<Array<std::string>>> strlistflags;
38
+ /// numerical list flags
39
+ SymbolTable<std::shared_ptr<Array<double>>> numlistflags;
40
+ /// flags list flags
41
+ SymbolTable<Flags> flaglistflags;
42
+ /// any object can be stored as a flag
43
+ SymbolTable<std::any> anyflags;
44
+ public:
45
+ /// no flags
46
+ Flags ();
47
+ /// copy flags
48
+ Flags (const Flags & flags);
49
+ /// steal flags
50
+ Flags (Flags && flags) = default;
51
+ ///
52
+ Flags (std::initializer_list<std::string> list);
53
+ ///
54
+ Flags (std::string f1, std::string f2 = "", std::string f3 = "", std::string f4 = "", std::string f5 = "");
55
+ /// delete mem
56
+ ~Flags ();
57
+
58
+ Flags & operator= (const Flags & f2) = default;
59
+ Flags & operator= (Flags && f2) = default;
60
+
61
+ void DoArchive(class Archive& ar);
62
+
63
+ void Update(const Flags& other);
64
+
65
+ /// Deletes all flags
66
+ void DeleteFlags ();
67
+
68
+ /// Sets string flag, overwrite if exists
69
+ Flags & SetFlag (const char * name, const std::string & val);
70
+ /// Sets string flag, overwrite if exists
71
+ Flags & SetFlag (const char * name, const char * str)
72
+ { return SetFlag (name, std::string(str)); }
73
+ /// Sets numerical flag, overwrite if exists
74
+ Flags & SetFlag (const char * name, double val) &;
75
+ /// Sets numerical flag, overwrite if exists
76
+ Flags & SetFlag (const char * name, int val)
77
+ { return SetFlag (name, double(val)); }
78
+ /// Sets boolean flag
79
+ Flags & SetFlag (const char * name, bool b = true) &;
80
+ /// Sets numerical flag, overwrite if exists
81
+ Flags & SetFlag (const char * name, Flags & val) &;
82
+
83
+ /// Sets string flag, overwrite if exists
84
+ Flags & SetFlag (const std::string & name, const std::string & val);
85
+ Flags & SetFlag (const std::string & name, const char * str)
86
+ { return SetFlag (name, std::string(str)); }
87
+ /// Sets numerical flag, overwrite if exists
88
+ Flags & SetFlag (const std::string & name, double val);
89
+ /// Sets numerical flag, overwrite if exists
90
+ Flags & SetFlag (const std::string & name, int val)
91
+ { return SetFlag (name, double(val)); }
92
+ /// Sets boolean flag
93
+ Flags & SetFlag (const std::string & name, bool b = true);
94
+ /// Sets numerical flag, overwrite if exists
95
+ Flags & SetFlag (const std::string & name, Flags & val);
96
+ /// Sets string array flag
97
+ Flags & SetFlag (const std::string & name, const Array<std::string> & val);
98
+ /// Sets double array flag
99
+ Flags & SetFlag (const std::string & name, const Array<double> & val);
100
+ /// Sets any flag
101
+ Flags & SetFlag(const std::string& name, const std::any& val);
102
+
103
+
104
+ Flags SetFlag (const char * name, bool b = true) &&;
105
+ Flags SetFlag (const char * name, double val) &&;
106
+
107
+
108
+
109
+ /// Save flags to file
110
+ void SaveFlags (const char * filename) const;
111
+ void SaveFlags (ostream & str) const;
112
+ /// write flags to stream
113
+ void PrintFlags (ostream & ost) const;
114
+ /// Load flags from file
115
+ void LoadFlags (const char * filename, SymbolTable<Flags> * sf = nullptr);
116
+ void LoadFlags (std::istream & str, SymbolTable<Flags> * sf = nullptr);
117
+ /**
118
+ Set command line flag.
119
+ Flag must be in form: -name=hello -val=0.5 -defflag
120
+ -names=[Joe,Jim] -values=[1,3,4] -solverflags=*abc
121
+ */
122
+ void SetCommandLineFlag (const char * st, SymbolTable<Flags> * sf = nullptr);
123
+ /// Returns string flag, default value if not exists
124
+ std::string GetStringFlag (const std::string & name, const char * def) const;
125
+ /// Returns std::string flag, default value if not exists
126
+ std::string GetStringFlag (const std::string & name, std::string def = "") const;
127
+ /// Returns numerical flag, default value if not exists
128
+ double GetNumFlag (std::string_view name, double def) const;
129
+ /// Returns address of numerical flag, null if not exists
130
+ const double * GetNumFlagPtr (std::string_view name) const;
131
+ /// Returns address of numerical flag, null if not exists
132
+ double * GetNumFlagPtr (const std::string & name);
133
+ /// Returns boolean flag
134
+ // int GetDefineFlag (const char * name) const;
135
+ bool GetDefineFlag (std::string_view name) const noexcept;
136
+ xbool GetDefineFlagX (std::string_view name) const noexcept;
137
+ /// Returns string list flag, empty array if not exist
138
+ const Array<std::string> & GetStringListFlag (const std::string & name) const;
139
+ /// Returns num list flag, empty array if not exist
140
+ const Array<double> & GetNumListFlag (const std::string & name) const;
141
+ /// Returns flag list flag, empty flag if not exist
142
+ const Flags & GetFlagsFlag (const std::string & name) const;
143
+ const std::any& GetAnyFlag (const std::string& name) const;
144
+
145
+
146
+ /// Test, if string flag is defined
147
+ bool StringFlagDefined (std::string_view name) const noexcept;
148
+ /// Test, if num flag is defined
149
+ bool NumFlagDefined (std::string_view name) const noexcept;
150
+ /// Test, if num flag is defined
151
+ bool FlagsFlagDefined (std::string_view name) const noexcept;
152
+ /// Test, if string list flag is defined
153
+ bool StringListFlagDefined (std::string_view name) const noexcept;
154
+ /// Test, if num list flag is defined
155
+ bool NumListFlagDefined (std::string_view name) const noexcept;
156
+ bool AnyFlagDefined (std::string_view name) const noexcept;
157
+
158
+ /// number of string flags
159
+ int GetNStringFlags () const { return strflags.Size(); }
160
+ /// number of num flags
161
+ int GetNNumFlags () const { return numflags.Size(); }
162
+ /// number of num flags
163
+ int GetNFlagsFlags () const { return flaglistflags.Size(); }
164
+ /// number of define flags
165
+ int GetNDefineFlags () const { return defflags.Size(); }
166
+ /// number of string-list flags
167
+ int GetNStringListFlags () const { return strlistflags.Size(); }
168
+ /// number of num-list flags
169
+ int GetNNumListFlags () const { return numlistflags.Size(); }
170
+ int GetNAnyFlags() const { return anyflags.Size(); }
171
+
172
+ ///
173
+ const std::string & GetStringFlag (int i, std::string & name) const
174
+ { name = strflags.GetName(i); return strflags[i]; }
175
+ double GetNumFlag (int i, std::string & name) const
176
+ { name = numflags.GetName(i); return numflags[i]; }
177
+ bool GetDefineFlag (int i, std::string & name) const
178
+ { name = defflags.GetName(i); return defflags[i]; }
179
+ const std::shared_ptr<Array<double>> GetNumListFlag (int i, std::string & name) const
180
+ { name = numlistflags.GetName(i).c_str(); return numlistflags[i]; }
181
+ const std::shared_ptr<Array<std::string>> GetStringListFlag (int i, std::string & name) const
182
+ { name = strlistflags.GetName(i); return strlistflags[i]; }
183
+ const Flags & GetFlagsFlag (int i, std::string & name) const
184
+ { name = flaglistflags.GetName(i); return flaglistflags[i]; }
185
+ const std::any& GetAnyFlag(int i, std::string& name) const
186
+ { name = anyflags.GetName(i); return anyflags[i]; }
187
+ };
188
+
189
+ /// Print flags
190
+ inline std::ostream & operator<< (std::ostream & s, const Flags & flags)
191
+ {
192
+ flags.PrintFlags (s);
193
+ return s;
194
+ }
195
+ } // namespace ngcore
196
+
197
+
198
+ #endif // NETGEN_CORE_FLAGS_HPP
199
+