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,509 @@
|
|
|
1
|
+
#ifndef FILE_TEMPLATE
|
|
2
|
+
#define FILE_TEMPLATE
|
|
3
|
+
|
|
4
|
+
/**************************************************************************/
|
|
5
|
+
/* File: template.hh */
|
|
6
|
+
/* Author: Joachim Schoeberl */
|
|
7
|
+
/* Date: 01. Jun. 95 */
|
|
8
|
+
/**************************************************************************/
|
|
9
|
+
|
|
10
|
+
#include <core/utils.hpp>
|
|
11
|
+
|
|
12
|
+
namespace netgen
|
|
13
|
+
{
|
|
14
|
+
using namespace ngcore;
|
|
15
|
+
/*
|
|
16
|
+
templates, global types, defines and variables
|
|
17
|
+
*/
|
|
18
|
+
|
|
19
|
+
DLL_HEADER extern const std::string netgen_version;
|
|
20
|
+
|
|
21
|
+
/// The following value may be adapted to the hardware !
|
|
22
|
+
#ifndef CLOCKS_PER_SEC
|
|
23
|
+
#define CLOCKS_PER_SEC 1000000
|
|
24
|
+
#endif
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
// #include <iostream>
|
|
28
|
+
/** output stream for testing.
|
|
29
|
+
testout is opened by main */
|
|
30
|
+
|
|
31
|
+
/** use instead of cout */
|
|
32
|
+
DLL_HEADER extern ostream * mycout;
|
|
33
|
+
|
|
34
|
+
/** error output stream */
|
|
35
|
+
DLL_HEADER extern ostream * myerr;
|
|
36
|
+
|
|
37
|
+
/** Error messages display.
|
|
38
|
+
Error messages are displayed by this function */
|
|
39
|
+
DLL_HEADER extern void MyError (const char * ch);
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
/** Rings the bell.
|
|
43
|
+
Produces nr beeps. */
|
|
44
|
+
DLL_HEADER extern void MyBeep (int nr = 1);
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
INDEX is a typedef for (at least) 4-byte integer
|
|
49
|
+
*/
|
|
50
|
+
typedef int INDEX;
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
BOOL is a typedef for boolean variables
|
|
54
|
+
*/
|
|
55
|
+
// typedef int BOOL;
|
|
56
|
+
|
|
57
|
+
typedef int ELIND;
|
|
58
|
+
typedef int PIND;
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
class twoint
|
|
62
|
+
{
|
|
63
|
+
public: ///
|
|
64
|
+
int i1, i2; ///
|
|
65
|
+
twoint() {};
|
|
66
|
+
///
|
|
67
|
+
twoint(int ii1, int ii2) {i1 = ii1; i2 = ii2;}
|
|
68
|
+
friend int operator== (const twoint& t1, const twoint& t2);
|
|
69
|
+
///
|
|
70
|
+
void Swap() {int x = i1; i1 = i2; i2 = x;}
|
|
71
|
+
void Sort() {if (i1 > i2) {Swap();}}
|
|
72
|
+
};
|
|
73
|
+
|
|
74
|
+
inline int operator== (const twoint& t1, const twoint& t2)
|
|
75
|
+
{
|
|
76
|
+
return t1.i1 == t2.i1 && t1.i2 == t2.i2;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
class threeint
|
|
80
|
+
{
|
|
81
|
+
public: ///
|
|
82
|
+
int i1, i2, i3; ///
|
|
83
|
+
threeint() {};
|
|
84
|
+
///
|
|
85
|
+
threeint(int ii1, int ii2, int ii3) {i1 = ii1; i2 = ii2; i3 = ii3;}
|
|
86
|
+
};
|
|
87
|
+
|
|
88
|
+
///
|
|
89
|
+
class twodouble
|
|
90
|
+
{
|
|
91
|
+
public:
|
|
92
|
+
///
|
|
93
|
+
double d1, d2;
|
|
94
|
+
///
|
|
95
|
+
twodouble() {d1 = 0; d2 = 0;};
|
|
96
|
+
///
|
|
97
|
+
twodouble(double id1, double id2) {d1 = id1; d2 = id2;}
|
|
98
|
+
///
|
|
99
|
+
void Swap() {double x = d1; d1 = d2; d2 = x;}
|
|
100
|
+
};
|
|
101
|
+
|
|
102
|
+
class fourint { public: int i1, i2, i3, i4; fourint() {}; };
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
///
|
|
106
|
+
class INDEX_2;
|
|
107
|
+
ostream & operator<<(ostream & s, const INDEX_2 & i2);
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
class INDEX_2
|
|
111
|
+
{
|
|
112
|
+
///
|
|
113
|
+
INDEX i[2];
|
|
114
|
+
|
|
115
|
+
public:
|
|
116
|
+
///
|
|
117
|
+
// protected:
|
|
118
|
+
INDEX_2 () { }
|
|
119
|
+
INDEX_2 (const INDEX_2&) = default;
|
|
120
|
+
public:
|
|
121
|
+
INDEX_2 (INDEX_2&&) = default;
|
|
122
|
+
|
|
123
|
+
INDEX_2 & operator= (const INDEX_2&) = default;
|
|
124
|
+
INDEX_2 & operator= (INDEX_2&&) = default;
|
|
125
|
+
///
|
|
126
|
+
constexpr INDEX_2 (INDEX ai1, INDEX ai2)
|
|
127
|
+
: i{ai1, ai2} { }
|
|
128
|
+
// { i[0] = ai1; i[1] = ai2; }
|
|
129
|
+
|
|
130
|
+
///
|
|
131
|
+
// constexpr INDEX_2 (const INDEX_2 & in2)
|
|
132
|
+
// : i{in2.i[0], in2.i[1]} { }
|
|
133
|
+
|
|
134
|
+
// { i[0] = in2.i[0]; i[1] = in2.i[1]; }
|
|
135
|
+
|
|
136
|
+
///
|
|
137
|
+
int operator== (const INDEX_2 & in2) const
|
|
138
|
+
{ return i[0] == in2.i[0] && i[1] == in2.i[1]; }
|
|
139
|
+
|
|
140
|
+
///
|
|
141
|
+
|
|
142
|
+
|
|
143
|
+
constexpr INDEX_2 Sort ()
|
|
144
|
+
{
|
|
145
|
+
if (i[0] > i[1])
|
|
146
|
+
{
|
|
147
|
+
INDEX hi = i[0];
|
|
148
|
+
i[0] = i[1];
|
|
149
|
+
i[1] = hi;
|
|
150
|
+
}
|
|
151
|
+
return *this;
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
static INDEX_2 Sort (int i1, int i2)
|
|
155
|
+
{
|
|
156
|
+
if (i1 > i2)
|
|
157
|
+
return INDEX_2 (i2,i1);
|
|
158
|
+
else
|
|
159
|
+
return INDEX_2 (i1,i2);
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
operator std::array<INDEX,2>() { return { i[0], i[1] }; }
|
|
163
|
+
///
|
|
164
|
+
INDEX & I1 () { return i[0]; }
|
|
165
|
+
///
|
|
166
|
+
INDEX & I2 () { return i[1]; }
|
|
167
|
+
///
|
|
168
|
+
INDEX & I (int j) { return i[j-1]; }
|
|
169
|
+
///
|
|
170
|
+
const INDEX & I1 () const { return i[0]; }
|
|
171
|
+
///
|
|
172
|
+
const INDEX & I2 () const { return i[1]; }
|
|
173
|
+
///
|
|
174
|
+
const INDEX & I (int j) const { return i[j-1]; }
|
|
175
|
+
///
|
|
176
|
+
int & operator[] (int j) { return i[j]; }
|
|
177
|
+
///
|
|
178
|
+
constexpr const int & operator[] (int j) const { return i[j]; }
|
|
179
|
+
///
|
|
180
|
+
friend ostream & operator<<(ostream & s, const INDEX_2 & i2);
|
|
181
|
+
};
|
|
182
|
+
|
|
183
|
+
/*
|
|
184
|
+
inline INDEX_2 Sort (const INDEX_2 & i2)
|
|
185
|
+
{
|
|
186
|
+
INDEX_2 tmp = i2;
|
|
187
|
+
tmp.Sort();
|
|
188
|
+
return tmp;
|
|
189
|
+
}
|
|
190
|
+
*/
|
|
191
|
+
inline INDEX_2 Sort (INDEX_2 i2)
|
|
192
|
+
{
|
|
193
|
+
i2.Sort();
|
|
194
|
+
return i2;
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
inline bool operator< (const INDEX_2 ia, const INDEX_2 ib)
|
|
198
|
+
{
|
|
199
|
+
if (ia[0] < ib[0]) return true;
|
|
200
|
+
if (ia[0] > ib[0]) return false;
|
|
201
|
+
if (ia[1] < ib[1]) return true;
|
|
202
|
+
return false;
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
|
|
206
|
+
///
|
|
207
|
+
class INDEX_3
|
|
208
|
+
{
|
|
209
|
+
///
|
|
210
|
+
INDEX i[3];
|
|
211
|
+
|
|
212
|
+
public:
|
|
213
|
+
///
|
|
214
|
+
INDEX_3 () { }
|
|
215
|
+
///
|
|
216
|
+
constexpr INDEX_3 (INDEX ai1, INDEX ai2, INDEX ai3)
|
|
217
|
+
: i{ai1, ai2, ai3} { }
|
|
218
|
+
|
|
219
|
+
///
|
|
220
|
+
constexpr INDEX_3 (const INDEX_3 & in2)
|
|
221
|
+
: i{in2.i[0], in2.i[1], in2.i[2]} { }
|
|
222
|
+
|
|
223
|
+
static INDEX_3 Sort (INDEX_3 i3)
|
|
224
|
+
{
|
|
225
|
+
return i3.Sort();
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
static INDEX_3 Sort (int i1, int i2, int i3)
|
|
229
|
+
{
|
|
230
|
+
if (i1 > i2) Swap (i1, i2);
|
|
231
|
+
if (i2 > i3) Swap (i2, i3);
|
|
232
|
+
if (i1 > i2) Swap (i1, i2);
|
|
233
|
+
return INDEX_3 (i1, i2, i3);
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
INDEX_3 Sort ()
|
|
237
|
+
{
|
|
238
|
+
if (i[0] > i[1]) Swap (i[0], i[1]);
|
|
239
|
+
if (i[1] > i[2]) Swap (i[1], i[2]);
|
|
240
|
+
if (i[0] > i[1]) Swap (i[0], i[1]);
|
|
241
|
+
return *this;
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
int operator== (const INDEX_3 & in2) const
|
|
245
|
+
{ return i[0] == in2.i[0] && i[1] == in2.i[1] && i[2] == in2.i[2];}
|
|
246
|
+
|
|
247
|
+
///
|
|
248
|
+
INDEX & I1 () { return i[0]; }
|
|
249
|
+
///
|
|
250
|
+
INDEX & I2 () { return i[1]; }
|
|
251
|
+
///
|
|
252
|
+
INDEX & I3 () { return i[2]; }
|
|
253
|
+
///
|
|
254
|
+
INDEX & I (int j) { return i[j-1]; }
|
|
255
|
+
///
|
|
256
|
+
const INDEX & I1 () const { return i[0]; }
|
|
257
|
+
///
|
|
258
|
+
const INDEX & I2 () const { return i[1]; }
|
|
259
|
+
///
|
|
260
|
+
const INDEX & I3 () const { return i[2]; }
|
|
261
|
+
///
|
|
262
|
+
const INDEX & I (int j) const { return i[j-1]; }
|
|
263
|
+
///
|
|
264
|
+
int & operator[] (int j) { return i[j]; }
|
|
265
|
+
///
|
|
266
|
+
const int & operator[] (int j) const { return i[j]; }
|
|
267
|
+
|
|
268
|
+
///
|
|
269
|
+
friend ostream & operator<<(ostream & s, const INDEX_3 & i3);
|
|
270
|
+
};
|
|
271
|
+
|
|
272
|
+
|
|
273
|
+
|
|
274
|
+
///
|
|
275
|
+
class INDEX_4
|
|
276
|
+
{
|
|
277
|
+
///
|
|
278
|
+
INDEX i[4];
|
|
279
|
+
|
|
280
|
+
public:
|
|
281
|
+
///
|
|
282
|
+
INDEX_4 () { }
|
|
283
|
+
///
|
|
284
|
+
INDEX_4 (INDEX ai1, INDEX ai2, INDEX ai3, INDEX ai4)
|
|
285
|
+
{ i[0] = ai1; i[1] = ai2; i[2] = ai3; i[3] = ai4; }
|
|
286
|
+
|
|
287
|
+
///
|
|
288
|
+
INDEX_4 (const INDEX_4 & in2)
|
|
289
|
+
{ i[0] = in2.i[0]; i[1] = in2.i[1]; i[2] = in2.i[2]; i[3] = in2.i[3]; }
|
|
290
|
+
|
|
291
|
+
///
|
|
292
|
+
void Sort ();
|
|
293
|
+
|
|
294
|
+
///
|
|
295
|
+
int operator== (const INDEX_4 & in2) const
|
|
296
|
+
{ return
|
|
297
|
+
i[0] == in2.i[0] && i[1] == in2.i[1] &&
|
|
298
|
+
i[2] == in2.i[2] && i[3] == in2.i[3]; }
|
|
299
|
+
|
|
300
|
+
///
|
|
301
|
+
INDEX & I1 () { return i[0]; }
|
|
302
|
+
///
|
|
303
|
+
INDEX & I2 () { return i[1]; }
|
|
304
|
+
///
|
|
305
|
+
INDEX & I3 () { return i[2]; }
|
|
306
|
+
///
|
|
307
|
+
INDEX & I4 () { return i[3]; }
|
|
308
|
+
///
|
|
309
|
+
INDEX & I (int j) { return i[j-1]; }
|
|
310
|
+
///
|
|
311
|
+
const INDEX & I1 () const { return i[0]; }
|
|
312
|
+
///
|
|
313
|
+
const INDEX & I2 () const { return i[1]; }
|
|
314
|
+
///
|
|
315
|
+
const INDEX & I3 () const { return i[2]; }
|
|
316
|
+
///
|
|
317
|
+
const INDEX & I4 () const { return i[3]; }
|
|
318
|
+
///
|
|
319
|
+
const INDEX & I (int j) const { return i[j-1]; }
|
|
320
|
+
///
|
|
321
|
+
int & operator[] (int j) { return i[j]; }
|
|
322
|
+
///
|
|
323
|
+
const int & operator[] (int j) const { return i[j]; }
|
|
324
|
+
|
|
325
|
+
///
|
|
326
|
+
friend ostream & operator<<(ostream & s, const INDEX_4 & i4);
|
|
327
|
+
};
|
|
328
|
+
|
|
329
|
+
|
|
330
|
+
|
|
331
|
+
|
|
332
|
+
|
|
333
|
+
|
|
334
|
+
|
|
335
|
+
|
|
336
|
+
/// The sort preserves quads !!!
|
|
337
|
+
class INDEX_4Q
|
|
338
|
+
{
|
|
339
|
+
///
|
|
340
|
+
INDEX i[4];
|
|
341
|
+
|
|
342
|
+
public:
|
|
343
|
+
///
|
|
344
|
+
INDEX_4Q () { }
|
|
345
|
+
///
|
|
346
|
+
INDEX_4Q (INDEX ai1, INDEX ai2, INDEX ai3, INDEX ai4)
|
|
347
|
+
{ i[0] = ai1; i[1] = ai2; i[2] = ai3; i[3] = ai4; }
|
|
348
|
+
|
|
349
|
+
///
|
|
350
|
+
INDEX_4Q (const INDEX_4Q & in2)
|
|
351
|
+
{ i[0] = in2.i[0]; i[1] = in2.i[1]; i[2] = in2.i[2]; i[3] = in2.i[3]; }
|
|
352
|
+
|
|
353
|
+
///
|
|
354
|
+
void Sort ();
|
|
355
|
+
|
|
356
|
+
///
|
|
357
|
+
int operator== (const INDEX_4Q & in2) const
|
|
358
|
+
{ return
|
|
359
|
+
i[0] == in2.i[0] && i[1] == in2.i[1] &&
|
|
360
|
+
i[2] == in2.i[2] && i[3] == in2.i[3]; }
|
|
361
|
+
|
|
362
|
+
///
|
|
363
|
+
INDEX & I1 () { return i[0]; }
|
|
364
|
+
///
|
|
365
|
+
INDEX & I2 () { return i[1]; }
|
|
366
|
+
///
|
|
367
|
+
INDEX & I3 () { return i[2]; }
|
|
368
|
+
///
|
|
369
|
+
INDEX & I4 () { return i[3]; }
|
|
370
|
+
///
|
|
371
|
+
INDEX & I (int j) { return i[j-1]; }
|
|
372
|
+
///
|
|
373
|
+
const INDEX & I1 () const { return i[0]; }
|
|
374
|
+
///
|
|
375
|
+
const INDEX & I2 () const { return i[1]; }
|
|
376
|
+
///
|
|
377
|
+
const INDEX & I3 () const { return i[2]; }
|
|
378
|
+
///
|
|
379
|
+
const INDEX & I4 () const { return i[3]; }
|
|
380
|
+
///
|
|
381
|
+
const INDEX & I (int j) const { return i[j-1]; }
|
|
382
|
+
///
|
|
383
|
+
friend ostream & operator<<(ostream & s, const INDEX_4Q & i4);
|
|
384
|
+
};
|
|
385
|
+
|
|
386
|
+
|
|
387
|
+
inline bool operator< (const INDEX_4 & a, const INDEX_4 & b)
|
|
388
|
+
{
|
|
389
|
+
for (int j = 0; j < 4; j++)
|
|
390
|
+
{
|
|
391
|
+
if (a[j] < b[j]) return true;
|
|
392
|
+
if (a[j] > b[j]) return false;
|
|
393
|
+
}
|
|
394
|
+
return false;
|
|
395
|
+
}
|
|
396
|
+
|
|
397
|
+
|
|
398
|
+
|
|
399
|
+
|
|
400
|
+
|
|
401
|
+
/*
|
|
402
|
+
|
|
403
|
+
|
|
404
|
+
|
|
405
|
+
|
|
406
|
+
///
|
|
407
|
+
template <class T>
|
|
408
|
+
inline T min2 (T a, T b)
|
|
409
|
+
{
|
|
410
|
+
///
|
|
411
|
+
return (a < b) ? a : b;
|
|
412
|
+
}
|
|
413
|
+
///
|
|
414
|
+
template <class T>
|
|
415
|
+
inline T max2 (T a, T b)
|
|
416
|
+
{
|
|
417
|
+
///
|
|
418
|
+
return (a > b) ? a : b;
|
|
419
|
+
}
|
|
420
|
+
///
|
|
421
|
+
template <class T>
|
|
422
|
+
inline T min3 (T a, T b, T c)
|
|
423
|
+
{
|
|
424
|
+
///
|
|
425
|
+
return (a < b) ? (a < c) ? a : c
|
|
426
|
+
: (b < c) ? b : c;
|
|
427
|
+
}
|
|
428
|
+
///
|
|
429
|
+
template <class T>
|
|
430
|
+
inline T max3 (T a, T b, T c)
|
|
431
|
+
{
|
|
432
|
+
///
|
|
433
|
+
return (a > b) ? ((a > c) ? a : c)
|
|
434
|
+
: ((b > c) ? b : c);
|
|
435
|
+
}
|
|
436
|
+
|
|
437
|
+
///
|
|
438
|
+
|
|
439
|
+
|
|
440
|
+
///
|
|
441
|
+
template <class T>
|
|
442
|
+
inline int sgn (T a)
|
|
443
|
+
{
|
|
444
|
+
return (a > 0) ? 1 : ( ( a < 0) ? -1 : 0 );
|
|
445
|
+
}
|
|
446
|
+
|
|
447
|
+
///
|
|
448
|
+
template <class T>
|
|
449
|
+
inline T sqr (const T a)
|
|
450
|
+
{
|
|
451
|
+
return a * a;
|
|
452
|
+
}
|
|
453
|
+
|
|
454
|
+
///
|
|
455
|
+
template <class T>
|
|
456
|
+
inline T pow3 (const T a)
|
|
457
|
+
{
|
|
458
|
+
return a * a * a;
|
|
459
|
+
}
|
|
460
|
+
*/
|
|
461
|
+
|
|
462
|
+
|
|
463
|
+
|
|
464
|
+
/*
|
|
465
|
+
template <class T>
|
|
466
|
+
void BubbleSort (int size, T * data);
|
|
467
|
+
|
|
468
|
+
template <class T>
|
|
469
|
+
void MergeSort (int size, T * data, T * help);
|
|
470
|
+
*/
|
|
471
|
+
|
|
472
|
+
|
|
473
|
+
|
|
474
|
+
}
|
|
475
|
+
|
|
476
|
+
namespace ngcore
|
|
477
|
+
{
|
|
478
|
+
// template <>
|
|
479
|
+
// constexpr inline netgen::INDEX_2 InvalidHash<netgen::INDEX_2> () { return netgen::INDEX_2{-1,-1}; }
|
|
480
|
+
|
|
481
|
+
|
|
482
|
+
template <>
|
|
483
|
+
struct CHT_trait<netgen::INDEX_2>
|
|
484
|
+
{
|
|
485
|
+
constexpr static inline netgen::INDEX_2 Invalid() { return { -1, -1 } ; }
|
|
486
|
+
constexpr static inline size_t HashValue (const netgen::INDEX_2 & hash, size_t mask)
|
|
487
|
+
{ return HashValue2(IVec<2,netgen::INDEX>(hash[0], hash[1]), mask); }
|
|
488
|
+
};
|
|
489
|
+
|
|
490
|
+
|
|
491
|
+
}
|
|
492
|
+
|
|
493
|
+
namespace netgen
|
|
494
|
+
{
|
|
495
|
+
/*
|
|
496
|
+
inline size_t HashValue2 (const netgen::INDEX_2 & ind, size_t mask)
|
|
497
|
+
{
|
|
498
|
+
return HashValue2(IVec<2,netgen::INDEX>(ind[0], ind[1]), mask);
|
|
499
|
+
}
|
|
500
|
+
*/
|
|
501
|
+
|
|
502
|
+
inline size_t HashValue2 (const netgen::INDEX_3 & ind, size_t mask)
|
|
503
|
+
{
|
|
504
|
+
return HashValue2(IVec<3,netgen::INDEX>(ind[0], ind[1], ind[2]), mask);
|
|
505
|
+
}
|
|
506
|
+
|
|
507
|
+
|
|
508
|
+
}
|
|
509
|
+
#endif
|