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,394 @@
|
|
|
1
|
+
#ifndef FILE_SURFACE
|
|
2
|
+
#define FILE_SURFACE
|
|
3
|
+
|
|
4
|
+
/**************************************************************************/
|
|
5
|
+
/* File: surface.hh */
|
|
6
|
+
/* Author: Joachim Schoeberl */
|
|
7
|
+
/* Date: 1. Dez. 95 */
|
|
8
|
+
/**************************************************************************/
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
namespace netgen
|
|
12
|
+
{
|
|
13
|
+
|
|
14
|
+
class TriangleApproximation;
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
Basis class for implicit surface geometry.
|
|
19
|
+
This class is used for generation of surface meshes
|
|
20
|
+
in NETGEN
|
|
21
|
+
*/
|
|
22
|
+
class Surface
|
|
23
|
+
{
|
|
24
|
+
protected:
|
|
25
|
+
/// invert normal vector
|
|
26
|
+
bool inverse;
|
|
27
|
+
/// maximal h in surface
|
|
28
|
+
double maxh;
|
|
29
|
+
/// name of surface
|
|
30
|
+
char * name;
|
|
31
|
+
/// boundary condition nr
|
|
32
|
+
int bcprop;
|
|
33
|
+
/// boundary condition label
|
|
34
|
+
string bcname;
|
|
35
|
+
|
|
36
|
+
public:
|
|
37
|
+
Surface ();
|
|
38
|
+
/** @name Tangential plane.
|
|
39
|
+
The tangential plane is used for surface mesh generation.
|
|
40
|
+
*/
|
|
41
|
+
|
|
42
|
+
virtual ~Surface();
|
|
43
|
+
|
|
44
|
+
protected:
|
|
45
|
+
/** @name Points in the surface defining tangential plane.
|
|
46
|
+
Tangential plane is taken in p1, the local x-axis
|
|
47
|
+
is directed to p2.
|
|
48
|
+
*/
|
|
49
|
+
//@{
|
|
50
|
+
///
|
|
51
|
+
Point<3> p1;
|
|
52
|
+
///
|
|
53
|
+
Point<3> p2;
|
|
54
|
+
//@}
|
|
55
|
+
/** @name Base-vectos for local coordinate system. */
|
|
56
|
+
//@{
|
|
57
|
+
/// in plane, directed p1->p2
|
|
58
|
+
Vec<3> ex;
|
|
59
|
+
/// in plane
|
|
60
|
+
Vec<3> ey;
|
|
61
|
+
/// outer normal direction
|
|
62
|
+
Vec<3> ez;
|
|
63
|
+
//@}
|
|
64
|
+
public:
|
|
65
|
+
|
|
66
|
+
virtual void DoArchive(Archive& archive)
|
|
67
|
+
{
|
|
68
|
+
archive & inverse & maxh & name & bcprop & bcname
|
|
69
|
+
& p1 & p2 & ex & ey & ez;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
void SetName (const char * aname);
|
|
73
|
+
const char * Name () const { return name; }
|
|
74
|
+
|
|
75
|
+
//@{
|
|
76
|
+
/**
|
|
77
|
+
Defines tangential plane in ap1.
|
|
78
|
+
The local x-coordinate axis points to the direction of ap2 */
|
|
79
|
+
virtual void DefineTangentialPlane (const Point<3> & ap1,
|
|
80
|
+
const Point<3> & ap2);
|
|
81
|
+
|
|
82
|
+
/// Transforms 3d point p3d to local coordinates pplane
|
|
83
|
+
virtual void ToPlane (const Point<3> & p3d, Point<2> & pplane,
|
|
84
|
+
double h, int & zone) const;
|
|
85
|
+
|
|
86
|
+
/// Transforms point pplane in local coordinates to 3d point
|
|
87
|
+
virtual void FromPlane (const Point<2> & pplane,
|
|
88
|
+
Point<3> & p3d, double h) const;
|
|
89
|
+
//@}
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
/// Project point p onto surface (closest point)
|
|
93
|
+
virtual void Project (Point<3> & p) const;
|
|
94
|
+
|
|
95
|
+
/// Project along direction
|
|
96
|
+
virtual void SkewProject(Point<3> & p, const Vec<3> & direction) const;
|
|
97
|
+
|
|
98
|
+
/// Is current surface identic to surface 2 ?
|
|
99
|
+
virtual int IsIdentic (const Surface & /* s2 */, int & /* inv */,
|
|
100
|
+
double /* eps */) const
|
|
101
|
+
{ return 0; }
|
|
102
|
+
|
|
103
|
+
///
|
|
104
|
+
virtual int PointOnSurface (const Point<3> & p,
|
|
105
|
+
double eps = 1e-6) const;
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
/** @name Implicit function.
|
|
109
|
+
Calculate function value and derivatives.
|
|
110
|
+
*/
|
|
111
|
+
//@{
|
|
112
|
+
/// Calculate implicit function value in point point
|
|
113
|
+
virtual double CalcFunctionValue (const Point<3> & point) const = 0;
|
|
114
|
+
|
|
115
|
+
/**
|
|
116
|
+
Calc gradient of implicit function.
|
|
117
|
+
gradient should be O(1) at surface
|
|
118
|
+
*/
|
|
119
|
+
virtual void CalcGradient (const Point<3> & point, Vec<3> & grad) const = 0;
|
|
120
|
+
|
|
121
|
+
/**
|
|
122
|
+
Calculate second derivatives of implicit function.
|
|
123
|
+
*/
|
|
124
|
+
virtual void CalcHesse (const Point<3> & point, Mat<3> & hesse) const;
|
|
125
|
+
|
|
126
|
+
/**
|
|
127
|
+
Returns outer normal vector.
|
|
128
|
+
*/
|
|
129
|
+
// virtual void GetNormalVector (const Point<3> & p, Vec<3> & n) const;
|
|
130
|
+
virtual Vec<3> GetNormalVector (const Point<3> & p) const;
|
|
131
|
+
|
|
132
|
+
/**
|
|
133
|
+
Upper bound for spectral norm of Hesse-matrix
|
|
134
|
+
*/
|
|
135
|
+
virtual double HesseNorm () const = 0;
|
|
136
|
+
|
|
137
|
+
/**
|
|
138
|
+
Upper bound for spectral norm of Hesse-matrix in the
|
|
139
|
+
rad - environment of point c.
|
|
140
|
+
*/
|
|
141
|
+
virtual double HesseNormLoc (const Point<3> & /* c */,
|
|
142
|
+
double /* rad */) const
|
|
143
|
+
{ return HesseNorm (); }
|
|
144
|
+
//@}
|
|
145
|
+
|
|
146
|
+
|
|
147
|
+
///
|
|
148
|
+
virtual double MaxCurvature () const;
|
|
149
|
+
///
|
|
150
|
+
virtual double MaxCurvatureLoc (const Point<3> & /* c */ ,
|
|
151
|
+
double /* rad */) const;
|
|
152
|
+
|
|
153
|
+
/** Returns any point in the surface.
|
|
154
|
+
Needed to start surface mesh generation e.g. on sphere */
|
|
155
|
+
virtual Point<3> GetSurfacePoint () const = 0;
|
|
156
|
+
|
|
157
|
+
///
|
|
158
|
+
bool Inverse () const { return inverse; }
|
|
159
|
+
///
|
|
160
|
+
void SetInverse (bool ainverse) { inverse = ainverse; }
|
|
161
|
+
///
|
|
162
|
+
virtual void Print (ostream & str) const = 0;
|
|
163
|
+
|
|
164
|
+
///
|
|
165
|
+
virtual void Reduce (const BoxSphere<3> & /* box */) { };
|
|
166
|
+
///
|
|
167
|
+
virtual void UnReduce () { };
|
|
168
|
+
|
|
169
|
+
/// set max h in surface
|
|
170
|
+
void SetMaxH (double amaxh) { maxh = amaxh; }
|
|
171
|
+
///
|
|
172
|
+
double GetMaxH () const { return maxh; }
|
|
173
|
+
///
|
|
174
|
+
int GetBCProperty () const { return bcprop; }
|
|
175
|
+
///
|
|
176
|
+
void SetBCProperty (int abc) { bcprop = abc; }
|
|
177
|
+
|
|
178
|
+
/** Determine local mesh-size.
|
|
179
|
+
Find
|
|
180
|
+
\[ h \leq hmax, \]
|
|
181
|
+
such that
|
|
182
|
+
\[ h \times \kappa (x) \leq c \qquad \mbox{in} B(x, h), \]
|
|
183
|
+
where kappa(x) is the curvature in x. */
|
|
184
|
+
virtual double LocH (const Point<3> & p, double x,
|
|
185
|
+
double c,
|
|
186
|
+
const MeshingParameters & mparam,
|
|
187
|
+
double hmax) const;
|
|
188
|
+
|
|
189
|
+
/**
|
|
190
|
+
Gets Approximation by triangles,
|
|
191
|
+
where qual is about the number of triangles per radius
|
|
192
|
+
*/
|
|
193
|
+
virtual void GetTriangleApproximation (TriangleApproximation & /* tas */,
|
|
194
|
+
const Box<3> & /* boundingbox */,
|
|
195
|
+
double /* facets */ ) const { };
|
|
196
|
+
|
|
197
|
+
|
|
198
|
+
string GetBCName() const { return bcname; }
|
|
199
|
+
|
|
200
|
+
void SetBCName( string abc ) { bcname = abc; }
|
|
201
|
+
};
|
|
202
|
+
|
|
203
|
+
|
|
204
|
+
inline ostream & operator<< (ostream & ost, const Surface & surf)
|
|
205
|
+
{
|
|
206
|
+
surf.Print(ost);
|
|
207
|
+
return ost;
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
|
|
211
|
+
|
|
212
|
+
typedef enum { IS_OUTSIDE = 0, IS_INSIDE = 1, DOES_INTERSECT = 2}
|
|
213
|
+
INSOLID_TYPE;
|
|
214
|
+
|
|
215
|
+
|
|
216
|
+
class DummySurface : public Surface
|
|
217
|
+
{
|
|
218
|
+
virtual double CalcFunctionValue (const Point<3> & /* point */) const
|
|
219
|
+
{ return 0; }
|
|
220
|
+
|
|
221
|
+
virtual void CalcGradient (const Point<3> & /* point */, Vec<3> & grad) const
|
|
222
|
+
{ grad = Vec<3> (0,0,0); }
|
|
223
|
+
|
|
224
|
+
virtual Point<3> GetSurfacePoint () const
|
|
225
|
+
{ return Point<3> (0,0,0); }
|
|
226
|
+
|
|
227
|
+
virtual double HesseNorm () const
|
|
228
|
+
{ return 0; }
|
|
229
|
+
|
|
230
|
+
virtual void Project (Point<3> & /* p */) const
|
|
231
|
+
{ ; }
|
|
232
|
+
|
|
233
|
+
virtual void Print (ostream & ost) const
|
|
234
|
+
{ ost << "dummy surface"; }
|
|
235
|
+
};
|
|
236
|
+
|
|
237
|
+
|
|
238
|
+
|
|
239
|
+
class Primitive
|
|
240
|
+
{
|
|
241
|
+
protected:
|
|
242
|
+
NgArray<int> surfaceids;
|
|
243
|
+
NgArray<int> surfaceactive;
|
|
244
|
+
|
|
245
|
+
public:
|
|
246
|
+
|
|
247
|
+
Primitive ();
|
|
248
|
+
|
|
249
|
+
virtual ~Primitive();
|
|
250
|
+
|
|
251
|
+
virtual void DoArchive(Archive& archive)
|
|
252
|
+
{
|
|
253
|
+
archive & surfaceids & surfaceactive;
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
/*
|
|
257
|
+
Check, whether box intersects solid defined by surface.
|
|
258
|
+
|
|
259
|
+
return values:
|
|
260
|
+
0 .. box outside solid \\
|
|
261
|
+
1 .. box in solid \\
|
|
262
|
+
2 .. can't decide (allowed, iff box is close to solid)
|
|
263
|
+
*/
|
|
264
|
+
virtual INSOLID_TYPE BoxInSolid (const BoxSphere<3> & box) const = 0;
|
|
265
|
+
virtual INSOLID_TYPE PointInSolid (const Point<3> & p,
|
|
266
|
+
double eps) const = 0;
|
|
267
|
+
|
|
268
|
+
virtual void GetTangentialSurfaceIndices (const Point<3> & p,
|
|
269
|
+
NgArray<int> & surfind, double eps) const;
|
|
270
|
+
|
|
271
|
+
virtual INSOLID_TYPE VecInSolid (const Point<3> & p,
|
|
272
|
+
const Vec<3> & v,
|
|
273
|
+
double eps) const = 0;
|
|
274
|
+
|
|
275
|
+
// checks if lim s->0 lim t->0 p + t(v1 + s v2) in solid
|
|
276
|
+
virtual INSOLID_TYPE VecInSolid2 (const Point<3> & p,
|
|
277
|
+
const Vec<3> & v1,
|
|
278
|
+
const Vec<3> & v2,
|
|
279
|
+
double eps) const;
|
|
280
|
+
|
|
281
|
+
// checks if p + s v1 + s*s/2 v2 is inside
|
|
282
|
+
virtual INSOLID_TYPE VecInSolid3 (const Point<3> & p,
|
|
283
|
+
const Vec<3> & v1,
|
|
284
|
+
const Vec<3> & v2,
|
|
285
|
+
double eps) const;
|
|
286
|
+
|
|
287
|
+
// like VecInSolid2, but second order approximation
|
|
288
|
+
virtual INSOLID_TYPE VecInSolid4 (const Point<3> & p,
|
|
289
|
+
const Vec<3> & v,
|
|
290
|
+
const Vec<3> & v2,
|
|
291
|
+
const Vec<3> & m,
|
|
292
|
+
double eps) const;
|
|
293
|
+
|
|
294
|
+
// for a point p in the surface, into which (closed) surfaces does v point into ?
|
|
295
|
+
virtual void GetTangentialVecSurfaceIndices (const Point<3> & p, const Vec<3> & v,
|
|
296
|
+
NgArray<int> & surfind, double eps) const;
|
|
297
|
+
|
|
298
|
+
// a point p in the surface, and v a tangential vector
|
|
299
|
+
// for arbitrary small, but positive t consider q := Project(p+t*v)
|
|
300
|
+
// into which (closed) surfaces does v2 point into, when starting from q ?
|
|
301
|
+
virtual void GetTangentialVecSurfaceIndices2 (const Point<3> & p, const Vec<3> & v1, const Vec<3> & v2,
|
|
302
|
+
NgArray<int> & surfind, double eps) const;
|
|
303
|
+
|
|
304
|
+
|
|
305
|
+
virtual void CalcSpecialPoints (NgArray<Point<3> > & /* pts */) const { ; }
|
|
306
|
+
virtual void AnalyzeSpecialPoint (const Point<3> & /* pt */,
|
|
307
|
+
NgArray<Point<3> > & /* specpts */) const { ; }
|
|
308
|
+
virtual Vec<3> SpecialPointTangentialVector (const Point<3> & /* p */,
|
|
309
|
+
int /* s1 */, int /* s2 */) const
|
|
310
|
+
{ return Vec<3> (0,0,0); }
|
|
311
|
+
|
|
312
|
+
|
|
313
|
+
virtual int GetNSurfaces() const = 0;
|
|
314
|
+
virtual Surface & GetSurface (int i = 0) = 0;
|
|
315
|
+
virtual const Surface & GetSurface (int i = 0) const = 0;
|
|
316
|
+
|
|
317
|
+
int GetSurfaceId (int i = 0) const;
|
|
318
|
+
void SetSurfaceId (int i, int id);
|
|
319
|
+
int SurfaceActive (int i) const { return surfaceactive[i]; }
|
|
320
|
+
virtual int SurfaceInverted (int /* i */ = 0) const { return 0; }
|
|
321
|
+
|
|
322
|
+
virtual void GetPrimitiveData (const char *& classname,
|
|
323
|
+
NgArray<double> & coeffs) const;
|
|
324
|
+
virtual void SetPrimitiveData (NgArray<double> & coeffs);
|
|
325
|
+
static Primitive * CreatePrimitive (const char * classname);
|
|
326
|
+
|
|
327
|
+
|
|
328
|
+
virtual void Reduce (const BoxSphere<3> & /* box */) { };
|
|
329
|
+
virtual void UnReduce () { };
|
|
330
|
+
|
|
331
|
+
virtual Primitive * Copy () const;
|
|
332
|
+
virtual void Transform (Transformation<3> & trans);
|
|
333
|
+
};
|
|
334
|
+
|
|
335
|
+
|
|
336
|
+
|
|
337
|
+
|
|
338
|
+
class OneSurfacePrimitive : public Surface, public Primitive
|
|
339
|
+
{
|
|
340
|
+
public:
|
|
341
|
+
OneSurfacePrimitive();
|
|
342
|
+
~OneSurfacePrimitive();
|
|
343
|
+
|
|
344
|
+
virtual void DoArchive(Archive& archive)
|
|
345
|
+
{
|
|
346
|
+
Surface::DoArchive(archive);
|
|
347
|
+
Primitive::DoArchive(archive);
|
|
348
|
+
}
|
|
349
|
+
|
|
350
|
+
virtual INSOLID_TYPE PointInSolid (const Point<3> & p,
|
|
351
|
+
double eps) const;
|
|
352
|
+
virtual INSOLID_TYPE VecInSolid (const Point<3> & p,
|
|
353
|
+
const Vec<3> & v,
|
|
354
|
+
double eps) const;
|
|
355
|
+
virtual INSOLID_TYPE VecInSolid2 (const Point<3> & p,
|
|
356
|
+
const Vec<3> & v1,
|
|
357
|
+
const Vec<3> & v2,
|
|
358
|
+
double eps) const;
|
|
359
|
+
|
|
360
|
+
virtual INSOLID_TYPE VecInSolid3 (const Point<3> & p,
|
|
361
|
+
const Vec<3> & v1,
|
|
362
|
+
const Vec<3> & v2,
|
|
363
|
+
double eps) const;
|
|
364
|
+
|
|
365
|
+
virtual INSOLID_TYPE VecInSolid4 (const Point<3> & p,
|
|
366
|
+
const Vec<3> & v,
|
|
367
|
+
const Vec<3> & v2,
|
|
368
|
+
const Vec<3> & m,
|
|
369
|
+
double eps) const;
|
|
370
|
+
|
|
371
|
+
virtual int GetNSurfaces() const;
|
|
372
|
+
virtual Surface & GetSurface (int i = 0);
|
|
373
|
+
virtual const Surface & GetSurface (int i = 0) const;
|
|
374
|
+
};
|
|
375
|
+
|
|
376
|
+
|
|
377
|
+
|
|
378
|
+
|
|
379
|
+
|
|
380
|
+
|
|
381
|
+
/**
|
|
382
|
+
Projects point to edge.
|
|
383
|
+
The point hp is projected to the edge described by f1 and f2.
|
|
384
|
+
It is assumed that the edge is non-degenerated, and the
|
|
385
|
+
(generalized) Newton method converges.
|
|
386
|
+
*/
|
|
387
|
+
extern void ProjectToEdge (const Surface * f1,
|
|
388
|
+
const Surface * f2,
|
|
389
|
+
Point<3> & hp);
|
|
390
|
+
|
|
391
|
+
|
|
392
|
+
}
|
|
393
|
+
|
|
394
|
+
#endif
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
#ifndef FILE_TRIAPPROX
|
|
2
|
+
#define FILE_TRIAPPROX
|
|
3
|
+
|
|
4
|
+
/**************************************************************************/
|
|
5
|
+
/* File: triapprox.hh */
|
|
6
|
+
/* Author: Joachim Schoeberl */
|
|
7
|
+
/* Date: 2. Mar. 98 */
|
|
8
|
+
/**************************************************************************/
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
namespace netgen
|
|
12
|
+
{
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
Triangulated approximation to true surface
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
class TATriangle
|
|
20
|
+
{
|
|
21
|
+
int pi[3];
|
|
22
|
+
int surfind;
|
|
23
|
+
public:
|
|
24
|
+
TATriangle () { ; }
|
|
25
|
+
|
|
26
|
+
TATriangle (int si, int pi1, int pi2, int pi3)
|
|
27
|
+
{ surfind = si; pi[0] = pi1; pi[1] = pi2; pi[2] = pi3; }
|
|
28
|
+
|
|
29
|
+
int SurfaceIndex() const { return surfind; }
|
|
30
|
+
int & SurfaceIndex() { return surfind; }
|
|
31
|
+
|
|
32
|
+
int & operator[] (int i) { return pi[i]; }
|
|
33
|
+
const int & operator[] (int i) const { return pi[i]; }
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
class TriangleApproximation
|
|
38
|
+
{
|
|
39
|
+
NgArray<Point<3> > points;
|
|
40
|
+
NgArray<Vec<3> > normals;
|
|
41
|
+
NgArray<TATriangle> trigs;
|
|
42
|
+
|
|
43
|
+
public:
|
|
44
|
+
TriangleApproximation();
|
|
45
|
+
int GetNP () const { return points.Size(); }
|
|
46
|
+
int GetNT () const { return trigs.Size(); }
|
|
47
|
+
|
|
48
|
+
int AddPoint (const Point<3> & p) { points.Append (p); return points.Size()-1; }
|
|
49
|
+
int AddNormal (const Vec<3> & n) { normals.Append (n); return normals.Size()-1; }
|
|
50
|
+
int AddTriangle (const TATriangle & tri, bool invert = 0);
|
|
51
|
+
|
|
52
|
+
const Point<3> & GetPoint (int i) const { return points[i]; }
|
|
53
|
+
const TATriangle & GetTriangle (int i) const { return trigs[i]; }
|
|
54
|
+
const Vec<3> & GetNormal (int i) const { return normals[i]; }
|
|
55
|
+
|
|
56
|
+
void RemoveUnusedPoints ();
|
|
57
|
+
|
|
58
|
+
friend class CSGeometry;
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
#endif
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
#ifndef FILE_VSCSG
|
|
2
|
+
#define FILE_VSCSG
|
|
3
|
+
|
|
4
|
+
/**************************************************************************/
|
|
5
|
+
/* File: vscsg.hpp */
|
|
6
|
+
/* Author: Joachim Schoeberl */
|
|
7
|
+
/* Date: 05. Jan. 2011 */
|
|
8
|
+
/**************************************************************************/
|
|
9
|
+
|
|
10
|
+
namespace netgen
|
|
11
|
+
{
|
|
12
|
+
|
|
13
|
+
class NGGUI_API VisualSceneGeometry : public VisualScene
|
|
14
|
+
{
|
|
15
|
+
class CSGeometry * geometry;
|
|
16
|
+
NgArray<int> trilists;
|
|
17
|
+
int selsurf;
|
|
18
|
+
public:
|
|
19
|
+
VisualSceneGeometry ();
|
|
20
|
+
virtual ~VisualSceneGeometry ();
|
|
21
|
+
|
|
22
|
+
void SetGeometry (class CSGeometry * ageometry) { geometry = ageometry; }
|
|
23
|
+
virtual void SelectSurface (int aselsurf);
|
|
24
|
+
virtual void BuildScene (int zoomall = 0);
|
|
25
|
+
virtual void DrawScene ();
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
#endif
|