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,217 @@
|
|
|
1
|
+
#ifndef FILE_VECTOR
|
|
2
|
+
#define FILE_VECTOR
|
|
3
|
+
|
|
4
|
+
/* *************************************************************************/
|
|
5
|
+
/* File: vector.hpp */
|
|
6
|
+
/* Author: Joachim Schoeberl */
|
|
7
|
+
/* Date: 01. Oct. 94 */
|
|
8
|
+
/* *************************************************************************/
|
|
9
|
+
|
|
10
|
+
namespace netgen
|
|
11
|
+
{
|
|
12
|
+
|
|
13
|
+
template <typename T>
|
|
14
|
+
class TFlatVector
|
|
15
|
+
{
|
|
16
|
+
protected:
|
|
17
|
+
int s;
|
|
18
|
+
T * data;
|
|
19
|
+
public:
|
|
20
|
+
TFlatVector () { ; }
|
|
21
|
+
TFlatVector (int as, T * adata)
|
|
22
|
+
{ s = as; data = adata; }
|
|
23
|
+
|
|
24
|
+
int Size () const
|
|
25
|
+
{ return s; }
|
|
26
|
+
|
|
27
|
+
TFlatVector & operator= (const TFlatVector & v)
|
|
28
|
+
{ memcpy (data, v.data, s*sizeof(T)); return *this; }
|
|
29
|
+
|
|
30
|
+
TFlatVector & operator= (T scal)
|
|
31
|
+
{
|
|
32
|
+
for (int i = 0; i < s; i++) data[i] = scal;
|
|
33
|
+
return *this;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
T & operator[] (int i) { return data[i]; }
|
|
37
|
+
const T & operator[] (int i) const { return data[i]; }
|
|
38
|
+
T & operator() (int i) { return data[i]; }
|
|
39
|
+
const T & operator() (int i) const { return data[i]; }
|
|
40
|
+
|
|
41
|
+
// double & Elem (int i) { return data[i-1]; }
|
|
42
|
+
// const double & Get (int i) const { return data[i-1]; }
|
|
43
|
+
// void Set (int i, double val) { data[i-1] = val; }
|
|
44
|
+
|
|
45
|
+
TFlatVector & operator*= (T scal)
|
|
46
|
+
{
|
|
47
|
+
for (int i = 0; i < s; i++) data[i] *= scal;
|
|
48
|
+
return *this;
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
class FlatVector
|
|
56
|
+
{
|
|
57
|
+
protected:
|
|
58
|
+
int s;
|
|
59
|
+
double *data;
|
|
60
|
+
public:
|
|
61
|
+
FlatVector () { ; }
|
|
62
|
+
FlatVector (int as, double * adata)
|
|
63
|
+
{ s = as; data = adata; }
|
|
64
|
+
|
|
65
|
+
int Size () const
|
|
66
|
+
{ return s; }
|
|
67
|
+
|
|
68
|
+
FlatVector & operator= (const FlatVector & v)
|
|
69
|
+
{ memcpy (data, v.data, s*sizeof(double)); return *this; }
|
|
70
|
+
|
|
71
|
+
FlatVector & operator= (double scal)
|
|
72
|
+
{
|
|
73
|
+
for (int i = 0; i < s; i++) data[i] = scal;
|
|
74
|
+
return *this;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
double & operator[] (int i) { return data[i]; }
|
|
78
|
+
const double & operator[] (int i) const { return data[i]; }
|
|
79
|
+
double & operator() (int i) { return data[i]; }
|
|
80
|
+
const double & operator() (int i) const { return data[i]; }
|
|
81
|
+
|
|
82
|
+
// double & Elem (int i) { return data[i-1]; }
|
|
83
|
+
// const double & Get (int i) const { return data[i-1]; }
|
|
84
|
+
// void Set (int i, double val) { data[i-1] = val; }
|
|
85
|
+
|
|
86
|
+
FlatVector & operator*= (double scal)
|
|
87
|
+
{
|
|
88
|
+
for (int i = 0; i < s; i++) data[i] *= scal;
|
|
89
|
+
return *this;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
FlatVector & Add (double scal, const FlatVector & v2)
|
|
93
|
+
{
|
|
94
|
+
for (int i = 0; i < s; i++)
|
|
95
|
+
data[i] += scal * v2[i];
|
|
96
|
+
return *this;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
FlatVector & Set (double scal, const FlatVector & v2)
|
|
100
|
+
{
|
|
101
|
+
for (int i = 0; i < s; i++)
|
|
102
|
+
data[i] = scal * v2[i];
|
|
103
|
+
return *this;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
FlatVector & Set2 (double scal1, const FlatVector & v1,
|
|
107
|
+
double scal2, const FlatVector & v2)
|
|
108
|
+
{
|
|
109
|
+
for (int i = 0; i < s; i++)
|
|
110
|
+
data[i] = scal1 * v1[i] + scal2 * v2[i];
|
|
111
|
+
return *this;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
double L2Norm() const
|
|
115
|
+
{
|
|
116
|
+
double sum = 0;
|
|
117
|
+
for (int i = 0; i < s; i++)
|
|
118
|
+
sum += data[i] * data[i];
|
|
119
|
+
return sqrt (sum);
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
operator TFlatVector<double> () const { return TFlatVector<double> (s, data); }
|
|
123
|
+
friend double operator* (const FlatVector & v1, const FlatVector & v2);
|
|
124
|
+
};
|
|
125
|
+
|
|
126
|
+
|
|
127
|
+
|
|
128
|
+
|
|
129
|
+
class Vector : public FlatVector
|
|
130
|
+
{
|
|
131
|
+
bool ownmem;
|
|
132
|
+
public:
|
|
133
|
+
Vector ()
|
|
134
|
+
{ s = 0; data = 0; ownmem = false; }
|
|
135
|
+
Vector (int as)
|
|
136
|
+
{ s = as; data = new double[s]; ownmem = true; }
|
|
137
|
+
Vector (int as, double * mem)
|
|
138
|
+
{ s = as; data = mem; ownmem = false; }
|
|
139
|
+
~Vector ()
|
|
140
|
+
{ if (ownmem) delete [] data; }
|
|
141
|
+
|
|
142
|
+
template<typename ARCHIVE>
|
|
143
|
+
void DoArchive(ARCHIVE& ar)
|
|
144
|
+
{
|
|
145
|
+
auto size = s;
|
|
146
|
+
ar & ownmem & size;
|
|
147
|
+
if(!ar.Output())
|
|
148
|
+
SetSize(size);
|
|
149
|
+
ar.Do(data, size);
|
|
150
|
+
}
|
|
151
|
+
Vector & operator= (const FlatVector & v)
|
|
152
|
+
{ memcpy (data, &v(0), s*sizeof(double)); return *this; }
|
|
153
|
+
|
|
154
|
+
Vector & operator= (double scal)
|
|
155
|
+
{
|
|
156
|
+
for (int i = 0; i < s; i++) data[i] = scal;
|
|
157
|
+
return *this;
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
void SetSize (int as)
|
|
161
|
+
{
|
|
162
|
+
if (s != as)
|
|
163
|
+
{
|
|
164
|
+
s = as;
|
|
165
|
+
if (ownmem) delete [] data;
|
|
166
|
+
data = new double [s];
|
|
167
|
+
ownmem = true;
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
operator TFlatVector<double> () const { return TFlatVector<double> (s, data); }
|
|
172
|
+
};
|
|
173
|
+
|
|
174
|
+
template <int S>
|
|
175
|
+
class VectorMem : public Vector
|
|
176
|
+
{
|
|
177
|
+
double mem[S];
|
|
178
|
+
public:
|
|
179
|
+
VectorMem () : Vector(S, &mem[0]) { ; }
|
|
180
|
+
|
|
181
|
+
VectorMem & operator= (const FlatVector & v)
|
|
182
|
+
{ memcpy (data, &v(0), S*sizeof(double)); return *this; }
|
|
183
|
+
|
|
184
|
+
VectorMem & operator= (double scal)
|
|
185
|
+
{
|
|
186
|
+
for (int i = 0; i < S; i++) data[i] = scal;
|
|
187
|
+
return *this;
|
|
188
|
+
}
|
|
189
|
+
};
|
|
190
|
+
|
|
191
|
+
|
|
192
|
+
|
|
193
|
+
|
|
194
|
+
|
|
195
|
+
inline double operator* (const FlatVector & v1, const FlatVector & v2)
|
|
196
|
+
{
|
|
197
|
+
double sum = 0;
|
|
198
|
+
for (int i = 0; i < v1.s; i++)
|
|
199
|
+
sum += v1.data[i] * v2.data[i];
|
|
200
|
+
return sum;
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
|
|
204
|
+
|
|
205
|
+
|
|
206
|
+
inline ostream & operator<< (ostream & ost, const FlatVector & v)
|
|
207
|
+
{
|
|
208
|
+
for (int i = 0; i < v.Size(); i++)
|
|
209
|
+
ost << " " << setw(7) << v[i];
|
|
210
|
+
return ost;
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
} //namespace netgen
|
|
214
|
+
|
|
215
|
+
#endif
|
|
216
|
+
|
|
217
|
+
|
|
@@ -0,0 +1,274 @@
|
|
|
1
|
+
#ifndef NETGEN_ADFRONT2_HPP
|
|
2
|
+
#define NETGEN_ADFRONT2_HPP
|
|
3
|
+
|
|
4
|
+
/**************************************************************************/
|
|
5
|
+
/* File: adfront2.hpp */
|
|
6
|
+
/* Author: Joachim Schoeberl */
|
|
7
|
+
/* Date: 01. Okt. 95 */
|
|
8
|
+
/**************************************************************************/
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
|
|
13
|
+
Advancing front class for surfaces
|
|
14
|
+
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
#include <gprim/geomobjects.hpp>
|
|
18
|
+
#include <gprim/adtree.hpp>
|
|
19
|
+
#include "meshtype.hpp"
|
|
20
|
+
|
|
21
|
+
namespace netgen
|
|
22
|
+
{
|
|
23
|
+
///
|
|
24
|
+
class FrontPoint2
|
|
25
|
+
{
|
|
26
|
+
/// coordinates
|
|
27
|
+
Point<3> p;
|
|
28
|
+
/// global node index
|
|
29
|
+
PointIndex globalindex;
|
|
30
|
+
/// number of front lines connected to point
|
|
31
|
+
int nlinetopoint;
|
|
32
|
+
/// distance to original boundary
|
|
33
|
+
int frontnr;
|
|
34
|
+
|
|
35
|
+
bool onsurface;
|
|
36
|
+
|
|
37
|
+
public:
|
|
38
|
+
///
|
|
39
|
+
MultiPointGeomInfo * mgi;
|
|
40
|
+
|
|
41
|
+
///
|
|
42
|
+
FrontPoint2 ()
|
|
43
|
+
{
|
|
44
|
+
globalindex.Invalidate(); // = -1;
|
|
45
|
+
nlinetopoint = 0;
|
|
46
|
+
frontnr = INT_MAX-10; // attention: overflow on calculating INT_MAX + 1
|
|
47
|
+
mgi = NULL;
|
|
48
|
+
onsurface = true;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
///
|
|
52
|
+
FrontPoint2 (const Point<3> & ap, PointIndex agi,
|
|
53
|
+
MultiPointGeomInfo * amgi, bool aonsurface = true);
|
|
54
|
+
///
|
|
55
|
+
~FrontPoint2 () { ; }
|
|
56
|
+
|
|
57
|
+
///
|
|
58
|
+
const Point<3> & P () const { return p; }
|
|
59
|
+
///
|
|
60
|
+
operator const Point<3> & () const { return p; }
|
|
61
|
+
///
|
|
62
|
+
PointIndex GlobalIndex () const { return globalindex; }
|
|
63
|
+
|
|
64
|
+
///
|
|
65
|
+
void AddLine () { nlinetopoint++; }
|
|
66
|
+
///
|
|
67
|
+
void RemoveLine ()
|
|
68
|
+
{
|
|
69
|
+
nlinetopoint--;
|
|
70
|
+
if (nlinetopoint == 0)
|
|
71
|
+
nlinetopoint = -1;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
///
|
|
75
|
+
bool Valid () const
|
|
76
|
+
{ return nlinetopoint >= 0; }
|
|
77
|
+
|
|
78
|
+
///
|
|
79
|
+
bool OnSurface() const
|
|
80
|
+
{ return onsurface; }
|
|
81
|
+
|
|
82
|
+
///
|
|
83
|
+
void DecFrontNr (int afrontnr)
|
|
84
|
+
{
|
|
85
|
+
if (frontnr > afrontnr) frontnr = afrontnr;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
///
|
|
89
|
+
int FrontNr () const { return frontnr; }
|
|
90
|
+
};
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
///
|
|
94
|
+
class FrontLine
|
|
95
|
+
{
|
|
96
|
+
private:
|
|
97
|
+
/// Point Indizes
|
|
98
|
+
INDEX_2 l; // want to replace by std::array<int,2> l;
|
|
99
|
+
/// quality class
|
|
100
|
+
int lineclass;
|
|
101
|
+
/// geometry specific data
|
|
102
|
+
PointGeomInfo geominfo[2];
|
|
103
|
+
public:
|
|
104
|
+
|
|
105
|
+
FrontLine ()
|
|
106
|
+
{
|
|
107
|
+
lineclass = 1;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
///
|
|
111
|
+
FrontLine (const INDEX_2 & al)
|
|
112
|
+
: l(al), lineclass(1) { }
|
|
113
|
+
|
|
114
|
+
///
|
|
115
|
+
const auto & L () const { return l; }
|
|
116
|
+
///
|
|
117
|
+
int LineClass() const { return lineclass; }
|
|
118
|
+
|
|
119
|
+
///
|
|
120
|
+
void IncrementClass ()
|
|
121
|
+
{
|
|
122
|
+
lineclass++;
|
|
123
|
+
}
|
|
124
|
+
///
|
|
125
|
+
void ResetClass ()
|
|
126
|
+
{
|
|
127
|
+
lineclass = 1;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
///
|
|
131
|
+
bool Valid () const
|
|
132
|
+
{
|
|
133
|
+
return l[0] != -1;
|
|
134
|
+
}
|
|
135
|
+
///
|
|
136
|
+
void Invalidate ()
|
|
137
|
+
{
|
|
138
|
+
l[0] = -1;
|
|
139
|
+
l[1] = -1;
|
|
140
|
+
lineclass = 1000;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
void SetGeomInfo (const PointGeomInfo & gi1, const PointGeomInfo & gi2)
|
|
144
|
+
{
|
|
145
|
+
geominfo[0] = gi1;
|
|
146
|
+
geominfo[1] = gi2;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
const PointGeomInfo * GetGeomInfo () const
|
|
150
|
+
{ return geominfo; }
|
|
151
|
+
|
|
152
|
+
const PointGeomInfo & GetGeomInfo (int endp) const
|
|
153
|
+
{ return geominfo[endp-1]; }
|
|
154
|
+
|
|
155
|
+
friend class AdFront2;
|
|
156
|
+
};
|
|
157
|
+
|
|
158
|
+
|
|
159
|
+
class AdFront2
|
|
160
|
+
{
|
|
161
|
+
|
|
162
|
+
///
|
|
163
|
+
Array<FrontPoint2> points; /// front points
|
|
164
|
+
Array<FrontLine> lines; /// front lines
|
|
165
|
+
|
|
166
|
+
Box3d boundingbox;
|
|
167
|
+
BoxTree<3> linesearchtree; /// search tree for lines
|
|
168
|
+
Point3dTree pointsearchtree; /// search tree for points
|
|
169
|
+
Point3dTree cpointsearchtree; /// search tree for cone points (not used ???)
|
|
170
|
+
|
|
171
|
+
Array<int> delpointl; /// list of deleted front points
|
|
172
|
+
Array<int> dellinel; /// list of deleted front lines
|
|
173
|
+
|
|
174
|
+
int nfl; /// number of front lines;
|
|
175
|
+
INDEX_2_HASHTABLE<int> * allflines; /// all front lines ever have been
|
|
176
|
+
|
|
177
|
+
Array<int> invpindex;
|
|
178
|
+
|
|
179
|
+
int minval;
|
|
180
|
+
int starti;
|
|
181
|
+
|
|
182
|
+
public:
|
|
183
|
+
///
|
|
184
|
+
// AdFront2 ();
|
|
185
|
+
AdFront2 (const Box3d & aboundingbox);
|
|
186
|
+
///
|
|
187
|
+
~AdFront2 ();
|
|
188
|
+
|
|
189
|
+
///
|
|
190
|
+
// void GetPoints (NgArray<Point<3> > & apoints) const;
|
|
191
|
+
///
|
|
192
|
+
void Print (ostream & ost) const;
|
|
193
|
+
|
|
194
|
+
///
|
|
195
|
+
bool Empty () const
|
|
196
|
+
{
|
|
197
|
+
return nfl == 0;
|
|
198
|
+
}
|
|
199
|
+
///
|
|
200
|
+
int GetNFL () const { return nfl; }
|
|
201
|
+
|
|
202
|
+
const FrontLine & GetLine (int nr) const { return lines[nr]; }
|
|
203
|
+
const FrontPoint2 & GetPoint (int nr) const { return points[nr]; }
|
|
204
|
+
const auto & GetLines () const { return lines; }
|
|
205
|
+
|
|
206
|
+
///
|
|
207
|
+
int SelectBaseLine (Point<3> & p1, Point<3> & p2,
|
|
208
|
+
const PointGeomInfo *& geominfo1,
|
|
209
|
+
const PointGeomInfo *& geominfo2,
|
|
210
|
+
int & qualclass);
|
|
211
|
+
|
|
212
|
+
///
|
|
213
|
+
int GetLocals (int baseline,
|
|
214
|
+
NgArray<Point<3>> & locpoints,
|
|
215
|
+
NgArray<MultiPointGeomInfo> & pgeominfo,
|
|
216
|
+
NgArray<INDEX_2> & loclines, // local index
|
|
217
|
+
NgArray<int> & pindex,
|
|
218
|
+
NgArray<int> & lindex,
|
|
219
|
+
double xh);
|
|
220
|
+
|
|
221
|
+
///
|
|
222
|
+
void DeleteLine (int li);
|
|
223
|
+
///
|
|
224
|
+
int AddPoint (const Point<3> & p, PointIndex globind,
|
|
225
|
+
MultiPointGeomInfo * mgi = NULL,
|
|
226
|
+
bool pointonsurface = true);
|
|
227
|
+
///
|
|
228
|
+
int AddLine (int pi1, int pi2,
|
|
229
|
+
const PointGeomInfo & gi1, const PointGeomInfo & gi2);
|
|
230
|
+
///
|
|
231
|
+
int ExistsLine (int gpi1, int gpi2);
|
|
232
|
+
|
|
233
|
+
///
|
|
234
|
+
void IncrementClass (int li)
|
|
235
|
+
{
|
|
236
|
+
lines[li].IncrementClass();
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
///
|
|
240
|
+
void ResetClass (int li)
|
|
241
|
+
{
|
|
242
|
+
lines[li].ResetClass();
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
///
|
|
246
|
+
const PointGeomInfo & GetLineGeomInfo (int li, int lend) const
|
|
247
|
+
{ return lines[li].GetGeomInfo (lend); }
|
|
248
|
+
///
|
|
249
|
+
|
|
250
|
+
PointIndex GetGlobalIndex (int pi) const
|
|
251
|
+
{
|
|
252
|
+
return points[pi].GlobalIndex();
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
|
|
256
|
+
/// is Point p inside Surface (flat geometry only)
|
|
257
|
+
bool Inside (const Point<2> & p) const;
|
|
258
|
+
|
|
259
|
+
bool SameSide (const Point<2> & lp1, const Point<2> & lp2,
|
|
260
|
+
const FlatArray<int> * /* testfaces */ = NULL) const;
|
|
261
|
+
/*
|
|
262
|
+
{
|
|
263
|
+
return Inside (lp1) == Inside (lp2);
|
|
264
|
+
}
|
|
265
|
+
*/
|
|
266
|
+
|
|
267
|
+
///
|
|
268
|
+
void SetStartFront ();
|
|
269
|
+
///
|
|
270
|
+
void PrintOpenSegments (ostream & ost) const;
|
|
271
|
+
};
|
|
272
|
+
|
|
273
|
+
} // namespace netgen
|
|
274
|
+
#endif // NETGEN_ADFRONT2_HPP
|