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.
- netgen/NgOCC.py +7 -0
- netgen/__init__.py +114 -0
- netgen/__init__.pyi +22 -0
- netgen/__main__.py +53 -0
- netgen/cmake/NetgenConfig.cmake +79 -0
- netgen/cmake/netgen-targets-release.cmake +69 -0
- netgen/cmake/netgen-targets.cmake +146 -0
- netgen/config/__init__.py +1 -0
- netgen/config/__init__.pyi +52 -0
- netgen/config/__main__.py +4 -0
- netgen/config/config.py +68 -0
- netgen/config/config.pyi +54 -0
- netgen/csg.py +25 -0
- netgen/geom2d.py +178 -0
- netgen/gui.py +82 -0
- netgen/include/core/archive.hpp +1256 -0
- netgen/include/core/array.hpp +1760 -0
- netgen/include/core/autodiff.hpp +1131 -0
- netgen/include/core/autodiffdiff.hpp +733 -0
- netgen/include/core/bitarray.hpp +240 -0
- netgen/include/core/concurrentqueue.h +3619 -0
- netgen/include/core/exception.hpp +145 -0
- netgen/include/core/flags.hpp +199 -0
- netgen/include/core/hashtable.hpp +1281 -0
- netgen/include/core/localheap.hpp +318 -0
- netgen/include/core/logging.hpp +117 -0
- netgen/include/core/memtracer.hpp +221 -0
- netgen/include/core/mpi4py_pycapi.h +245 -0
- netgen/include/core/mpi_wrapper.hpp +643 -0
- netgen/include/core/ng_mpi.hpp +94 -0
- netgen/include/core/ng_mpi_generated_declarations.hpp +155 -0
- netgen/include/core/ng_mpi_native.hpp +25 -0
- netgen/include/core/ngcore.hpp +32 -0
- netgen/include/core/ngcore_api.hpp +152 -0
- netgen/include/core/ngstream.hpp +115 -0
- netgen/include/core/paje_trace.hpp +279 -0
- netgen/include/core/profiler.hpp +382 -0
- netgen/include/core/python_ngcore.hpp +457 -0
- netgen/include/core/ranges.hpp +109 -0
- netgen/include/core/register_archive.hpp +100 -0
- netgen/include/core/signal.hpp +82 -0
- netgen/include/core/simd.hpp +160 -0
- netgen/include/core/simd_arm64.hpp +407 -0
- netgen/include/core/simd_avx.hpp +394 -0
- netgen/include/core/simd_avx512.hpp +285 -0
- netgen/include/core/simd_generic.hpp +1053 -0
- netgen/include/core/simd_math.hpp +178 -0
- netgen/include/core/simd_sse.hpp +289 -0
- netgen/include/core/statushandler.hpp +37 -0
- netgen/include/core/symboltable.hpp +153 -0
- netgen/include/core/table.hpp +810 -0
- netgen/include/core/taskmanager.hpp +1161 -0
- netgen/include/core/type_traits.hpp +65 -0
- netgen/include/core/utils.hpp +385 -0
- netgen/include/core/version.hpp +102 -0
- netgen/include/core/xbool.hpp +47 -0
- netgen/include/csg/algprim.hpp +563 -0
- netgen/include/csg/brick.hpp +150 -0
- netgen/include/csg/csg.hpp +43 -0
- netgen/include/csg/csgeom.hpp +389 -0
- netgen/include/csg/csgparser.hpp +101 -0
- netgen/include/csg/curve2d.hpp +67 -0
- netgen/include/csg/edgeflw.hpp +112 -0
- netgen/include/csg/explicitcurve2d.hpp +113 -0
- netgen/include/csg/extrusion.hpp +185 -0
- netgen/include/csg/gencyl.hpp +70 -0
- netgen/include/csg/geoml.hpp +16 -0
- netgen/include/csg/identify.hpp +213 -0
- netgen/include/csg/manifold.hpp +29 -0
- netgen/include/csg/meshsurf.hpp +46 -0
- netgen/include/csg/polyhedra.hpp +121 -0
- netgen/include/csg/revolution.hpp +180 -0
- netgen/include/csg/singularref.hpp +84 -0
- netgen/include/csg/solid.hpp +295 -0
- netgen/include/csg/specpoin.hpp +194 -0
- netgen/include/csg/spline3d.hpp +99 -0
- netgen/include/csg/splinesurface.hpp +85 -0
- netgen/include/csg/surface.hpp +394 -0
- netgen/include/csg/triapprox.hpp +63 -0
- netgen/include/csg/vscsg.hpp +34 -0
- netgen/include/general/autodiff.hpp +356 -0
- netgen/include/general/autoptr.hpp +39 -0
- netgen/include/general/gzstream.h +121 -0
- netgen/include/general/hashtabl.hpp +1692 -0
- netgen/include/general/myadt.hpp +48 -0
- netgen/include/general/mystring.hpp +226 -0
- netgen/include/general/netgenout.hpp +205 -0
- netgen/include/general/ngarray.hpp +797 -0
- netgen/include/general/ngbitarray.hpp +149 -0
- netgen/include/general/ngpython.hpp +74 -0
- netgen/include/general/optmem.hpp +44 -0
- netgen/include/general/parthreads.hpp +138 -0
- netgen/include/general/seti.hpp +50 -0
- netgen/include/general/sort.hpp +47 -0
- netgen/include/general/spbita2d.hpp +59 -0
- netgen/include/general/stack.hpp +114 -0
- netgen/include/general/table.hpp +280 -0
- netgen/include/general/template.hpp +509 -0
- netgen/include/geom2d/csg2d.hpp +750 -0
- netgen/include/geom2d/geometry2d.hpp +280 -0
- netgen/include/geom2d/spline2d.hpp +234 -0
- netgen/include/geom2d/vsgeom2d.hpp +28 -0
- netgen/include/gprim/adtree.hpp +1392 -0
- netgen/include/gprim/geom2d.hpp +858 -0
- netgen/include/gprim/geom3d.hpp +749 -0
- netgen/include/gprim/geomfuncs.hpp +212 -0
- netgen/include/gprim/geomobjects.hpp +544 -0
- netgen/include/gprim/geomops.hpp +404 -0
- netgen/include/gprim/geomtest3d.hpp +101 -0
- netgen/include/gprim/gprim.hpp +33 -0
- netgen/include/gprim/spline.hpp +778 -0
- netgen/include/gprim/splinegeometry.hpp +73 -0
- netgen/include/gprim/transform3d.hpp +216 -0
- netgen/include/include/acisgeom.hpp +3 -0
- netgen/include/include/csg.hpp +1 -0
- netgen/include/include/geometry2d.hpp +1 -0
- netgen/include/include/gprim.hpp +1 -0
- netgen/include/include/incopengl.hpp +62 -0
- netgen/include/include/inctcl.hpp +13 -0
- netgen/include/include/incvis.hpp +6 -0
- netgen/include/include/linalg.hpp +1 -0
- netgen/include/include/meshing.hpp +1 -0
- netgen/include/include/myadt.hpp +1 -0
- netgen/include/include/mydefs.hpp +70 -0
- netgen/include/include/mystdlib.h +59 -0
- netgen/include/include/netgen_config.hpp +27 -0
- netgen/include/include/netgen_version.hpp +9 -0
- netgen/include/include/nginterface_v2_impl.hpp +395 -0
- netgen/include/include/ngsimd.hpp +1 -0
- netgen/include/include/occgeom.hpp +1 -0
- netgen/include/include/opti.hpp +1 -0
- netgen/include/include/parallel.hpp +1 -0
- netgen/include/include/stlgeom.hpp +1 -0
- netgen/include/include/visual.hpp +1 -0
- netgen/include/interface/rw_medit.hpp +11 -0
- netgen/include/interface/writeuser.hpp +80 -0
- netgen/include/linalg/densemat.hpp +414 -0
- netgen/include/linalg/linalg.hpp +29 -0
- netgen/include/linalg/opti.hpp +142 -0
- netgen/include/linalg/polynomial.hpp +47 -0
- netgen/include/linalg/vector.hpp +217 -0
- netgen/include/meshing/adfront2.hpp +274 -0
- netgen/include/meshing/adfront3.hpp +332 -0
- netgen/include/meshing/basegeom.hpp +370 -0
- netgen/include/meshing/bcfunctions.hpp +53 -0
- netgen/include/meshing/bisect.hpp +72 -0
- netgen/include/meshing/boundarylayer.hpp +113 -0
- netgen/include/meshing/classifyhpel.hpp +1984 -0
- netgen/include/meshing/clusters.hpp +46 -0
- netgen/include/meshing/curvedelems.hpp +274 -0
- netgen/include/meshing/delaunay2d.hpp +73 -0
- netgen/include/meshing/fieldlines.hpp +103 -0
- netgen/include/meshing/findip.hpp +198 -0
- netgen/include/meshing/findip2.hpp +103 -0
- netgen/include/meshing/geomsearch.hpp +69 -0
- netgen/include/meshing/global.hpp +54 -0
- netgen/include/meshing/hpref_hex.hpp +330 -0
- netgen/include/meshing/hpref_prism.hpp +3405 -0
- netgen/include/meshing/hpref_pyramid.hpp +154 -0
- netgen/include/meshing/hpref_quad.hpp +2082 -0
- netgen/include/meshing/hpref_segm.hpp +122 -0
- netgen/include/meshing/hpref_tet.hpp +4230 -0
- netgen/include/meshing/hpref_trig.hpp +848 -0
- netgen/include/meshing/hprefinement.hpp +366 -0
- netgen/include/meshing/improve2.hpp +178 -0
- netgen/include/meshing/improve3.hpp +151 -0
- netgen/include/meshing/localh.hpp +223 -0
- netgen/include/meshing/meshclass.hpp +1076 -0
- netgen/include/meshing/meshfunc.hpp +47 -0
- netgen/include/meshing/meshing.hpp +63 -0
- netgen/include/meshing/meshing2.hpp +163 -0
- netgen/include/meshing/meshing3.hpp +123 -0
- netgen/include/meshing/meshtool.hpp +90 -0
- netgen/include/meshing/meshtype.hpp +1930 -0
- netgen/include/meshing/msghandler.hpp +62 -0
- netgen/include/meshing/paralleltop.hpp +172 -0
- netgen/include/meshing/python_mesh.hpp +206 -0
- netgen/include/meshing/ruler2.hpp +172 -0
- netgen/include/meshing/ruler3.hpp +211 -0
- netgen/include/meshing/soldata.hpp +141 -0
- netgen/include/meshing/specials.hpp +17 -0
- netgen/include/meshing/surfacegeom.hpp +73 -0
- netgen/include/meshing/topology.hpp +1003 -0
- netgen/include/meshing/validate.hpp +21 -0
- netgen/include/meshing/visual_interface.hpp +71 -0
- netgen/include/mydefs.hpp +70 -0
- netgen/include/nginterface.h +474 -0
- netgen/include/nginterface_v2.hpp +406 -0
- netgen/include/nglib.h +697 -0
- netgen/include/nglib_occ.h +50 -0
- netgen/include/occ/occ_edge.hpp +47 -0
- netgen/include/occ/occ_face.hpp +52 -0
- netgen/include/occ/occ_solid.hpp +23 -0
- netgen/include/occ/occ_utils.hpp +376 -0
- netgen/include/occ/occ_vertex.hpp +30 -0
- netgen/include/occ/occgeom.hpp +659 -0
- netgen/include/occ/occmeshsurf.hpp +168 -0
- netgen/include/occ/vsocc.hpp +33 -0
- netgen/include/pybind11/LICENSE +29 -0
- netgen/include/pybind11/attr.h +722 -0
- netgen/include/pybind11/buffer_info.h +208 -0
- netgen/include/pybind11/cast.h +2361 -0
- netgen/include/pybind11/chrono.h +228 -0
- netgen/include/pybind11/common.h +2 -0
- netgen/include/pybind11/complex.h +74 -0
- netgen/include/pybind11/conduit/README.txt +15 -0
- netgen/include/pybind11/conduit/pybind11_conduit_v1.h +116 -0
- netgen/include/pybind11/conduit/pybind11_platform_abi_id.h +87 -0
- netgen/include/pybind11/conduit/wrap_include_python_h.h +72 -0
- netgen/include/pybind11/critical_section.h +56 -0
- netgen/include/pybind11/detail/class.h +823 -0
- netgen/include/pybind11/detail/common.h +1348 -0
- netgen/include/pybind11/detail/cpp_conduit.h +75 -0
- netgen/include/pybind11/detail/descr.h +226 -0
- netgen/include/pybind11/detail/dynamic_raw_ptr_cast_if_possible.h +39 -0
- netgen/include/pybind11/detail/exception_translation.h +71 -0
- netgen/include/pybind11/detail/function_record_pyobject.h +191 -0
- netgen/include/pybind11/detail/init.h +538 -0
- netgen/include/pybind11/detail/internals.h +799 -0
- netgen/include/pybind11/detail/native_enum_data.h +209 -0
- netgen/include/pybind11/detail/pybind11_namespace_macros.h +82 -0
- netgen/include/pybind11/detail/struct_smart_holder.h +378 -0
- netgen/include/pybind11/detail/type_caster_base.h +1591 -0
- netgen/include/pybind11/detail/typeid.h +65 -0
- netgen/include/pybind11/detail/using_smart_holder.h +22 -0
- netgen/include/pybind11/detail/value_and_holder.h +90 -0
- netgen/include/pybind11/eigen/common.h +9 -0
- netgen/include/pybind11/eigen/matrix.h +723 -0
- netgen/include/pybind11/eigen/tensor.h +521 -0
- netgen/include/pybind11/eigen.h +12 -0
- netgen/include/pybind11/embed.h +320 -0
- netgen/include/pybind11/eval.h +161 -0
- netgen/include/pybind11/functional.h +147 -0
- netgen/include/pybind11/gil.h +199 -0
- netgen/include/pybind11/gil_safe_call_once.h +102 -0
- netgen/include/pybind11/gil_simple.h +37 -0
- netgen/include/pybind11/iostream.h +265 -0
- netgen/include/pybind11/native_enum.h +67 -0
- netgen/include/pybind11/numpy.h +2312 -0
- netgen/include/pybind11/operators.h +202 -0
- netgen/include/pybind11/options.h +92 -0
- netgen/include/pybind11/pybind11.h +3645 -0
- netgen/include/pybind11/pytypes.h +2680 -0
- netgen/include/pybind11/stl/filesystem.h +114 -0
- netgen/include/pybind11/stl.h +666 -0
- netgen/include/pybind11/stl_bind.h +858 -0
- netgen/include/pybind11/subinterpreter.h +299 -0
- netgen/include/pybind11/trampoline_self_life_support.h +65 -0
- netgen/include/pybind11/type_caster_pyobject_ptr.h +61 -0
- netgen/include/pybind11/typing.h +298 -0
- netgen/include/pybind11/warnings.h +75 -0
- netgen/include/stlgeom/meshstlsurface.hpp +67 -0
- netgen/include/stlgeom/stlgeom.hpp +491 -0
- netgen/include/stlgeom/stlline.hpp +193 -0
- netgen/include/stlgeom/stltool.hpp +331 -0
- netgen/include/stlgeom/stltopology.hpp +419 -0
- netgen/include/stlgeom/vsstl.hpp +58 -0
- netgen/include/visualization/meshdoc.hpp +42 -0
- netgen/include/visualization/mvdraw.hpp +325 -0
- netgen/include/visualization/vispar.hpp +128 -0
- netgen/include/visualization/visual.hpp +28 -0
- netgen/include/visualization/visual_api.hpp +10 -0
- netgen/include/visualization/vssolution.hpp +399 -0
- netgen/lib/libnggui.lib +0 -0
- netgen/lib/ngcore.lib +0 -0
- netgen/lib/nglib.lib +0 -0
- netgen/lib/togl.lib +0 -0
- netgen/libnggui.dll +0 -0
- netgen/libngguipy.lib +0 -0
- netgen/libngguipy.pyd +0 -0
- netgen/libngpy/_NgOCC.pyi +1545 -0
- netgen/libngpy/__init__.pyi +7 -0
- netgen/libngpy/_csg.pyi +259 -0
- netgen/libngpy/_geom2d.pyi +323 -0
- netgen/libngpy/_meshing.pyi +1111 -0
- netgen/libngpy/_stl.pyi +131 -0
- netgen/libngpy.lib +0 -0
- netgen/libngpy.pyd +0 -0
- netgen/meshing.py +65 -0
- netgen/ngcore.dll +0 -0
- netgen/nglib.dll +0 -0
- netgen/occ.py +52 -0
- netgen/read_gmsh.py +259 -0
- netgen/read_meshio.py +22 -0
- netgen/stl.py +2 -0
- netgen/togl.dll +0 -0
- netgen/version.py +2 -0
- netgen/webgui.py +529 -0
- netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/boundarycondition.geo +16 -0
- netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/boxcyl.geo +32 -0
- netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/circle_on_cube.geo +27 -0
- netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/cone.geo +13 -0
- netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/cube.geo +16 -0
- netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/cubeandring.geo +55 -0
- netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/cubeandspheres.geo +21 -0
- netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/cubemcyl.geo +18 -0
- netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/cubemsphere.geo +19 -0
- netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/cylinder.geo +12 -0
- netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/cylsphere.geo +12 -0
- netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/doc/ng4.pdf +0 -0
- netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/ellipsoid.geo +8 -0
- netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/ellipticcyl.geo +10 -0
- netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/extrusion.geo +99 -0
- netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/fichera.geo +24 -0
- netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/frame.step +11683 -0
- netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/hinge.stl +8486 -0
- netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/lshape3d.geo +26 -0
- netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/manyholes.geo +26 -0
- netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/manyholes2.geo +26 -0
- netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/matrix.geo +27 -0
- netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/ortho.geo +11 -0
- netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/part1.stl +2662 -0
- netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/period.geo +33 -0
- netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/py_tutorials/exportNeutral.py +26 -0
- netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/py_tutorials/mesh.py +19 -0
- netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/py_tutorials/shaft.geo +65 -0
- netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/revolution.geo +18 -0
- netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/screw.step +1694 -0
- netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/sculpture.geo +13 -0
- netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/shaft.geo +65 -0
- netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/shell.geo +10 -0
- netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/sphere.geo +8 -0
- netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/sphereincube.geo +17 -0
- netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/square.in2d +35 -0
- netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/squarecircle.in2d +48 -0
- netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/squarehole.in2d +47 -0
- netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/torus.geo +8 -0
- netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/trafo.geo +57 -0
- netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/twobricks.geo +15 -0
- netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/twocubes.geo +18 -0
- netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/twocyl.geo +16 -0
- netgen_mesher-6.2.2506.post35.dev0.dist-info/METADATA +15 -0
- netgen_mesher-6.2.2506.post35.dev0.dist-info/RECORD +340 -0
- netgen_mesher-6.2.2506.post35.dev0.dist-info/WHEEL +5 -0
- netgen_mesher-6.2.2506.post35.dev0.dist-info/entry_points.txt +2 -0
- netgen_mesher-6.2.2506.post35.dev0.dist-info/licenses/AUTHORS +1 -0
- netgen_mesher-6.2.2506.post35.dev0.dist-info/licenses/LICENSE +504 -0
- netgen_mesher-6.2.2506.post35.dev0.dist-info/top_level.txt +2 -0
- pyngcore/__init__.py +1 -0
- 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
|
+
|