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,121 @@
|
|
|
1
|
+
#ifndef FILE_POLYHEDRA
|
|
2
|
+
#define FILE_POLYHEDRA
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
/**************************************************************************/
|
|
6
|
+
/* File: polyhedra.hh */
|
|
7
|
+
/* Author: Joachim Schoeberl */
|
|
8
|
+
/* Date: 19. Mar. 2000 */
|
|
9
|
+
/**************************************************************************/
|
|
10
|
+
|
|
11
|
+
namespace netgen
|
|
12
|
+
{
|
|
13
|
+
|
|
14
|
+
/*
|
|
15
|
+
|
|
16
|
+
Polyhedral primitive
|
|
17
|
+
|
|
18
|
+
*/
|
|
19
|
+
|
|
20
|
+
class Polyhedra : public Primitive
|
|
21
|
+
{
|
|
22
|
+
class Face {
|
|
23
|
+
public:
|
|
24
|
+
int pnums[3];
|
|
25
|
+
int planenr;
|
|
26
|
+
|
|
27
|
+
int inputnr;
|
|
28
|
+
|
|
29
|
+
Box<3> bbox;
|
|
30
|
+
// Point<3> center;
|
|
31
|
+
Vec<3> v1, v2; // edges
|
|
32
|
+
Vec<3> w1, w2; // pseudo-inverse
|
|
33
|
+
Vec<3> n; // normal to face
|
|
34
|
+
Vec<3> nn; // normed normal
|
|
35
|
+
|
|
36
|
+
Face () { ; }
|
|
37
|
+
Face (int pi1, int pi2, int pi3,
|
|
38
|
+
const NgArray<Point<3> > & points,
|
|
39
|
+
int ainputnr);
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
NgArray<Point<3> > points;
|
|
43
|
+
NgArray<Face> faces;
|
|
44
|
+
NgArray<Plane*> planes;
|
|
45
|
+
Box<3> poly_bbox;
|
|
46
|
+
|
|
47
|
+
double eps_base1;
|
|
48
|
+
|
|
49
|
+
public:
|
|
50
|
+
Polyhedra ();
|
|
51
|
+
virtual ~Polyhedra () override;
|
|
52
|
+
static Primitive * CreateDefault ();
|
|
53
|
+
|
|
54
|
+
virtual INSOLID_TYPE BoxInSolid (const BoxSphere<3> & box) const override;
|
|
55
|
+
virtual INSOLID_TYPE PointInSolid (const Point<3> & p,
|
|
56
|
+
double eps) const override;
|
|
57
|
+
virtual INSOLID_TYPE VecInSolidNew (const Point<3> & p,
|
|
58
|
+
const Vec<3> & v,
|
|
59
|
+
double eps, bool printing = false) const;
|
|
60
|
+
virtual INSOLID_TYPE VecInSolidOld (const Point<3> & p,
|
|
61
|
+
const Vec<3> & v,
|
|
62
|
+
double eps) const;
|
|
63
|
+
|
|
64
|
+
virtual INSOLID_TYPE VecInSolid (const Point<3> & p,
|
|
65
|
+
const Vec<3> & v,
|
|
66
|
+
double eps) const override;
|
|
67
|
+
|
|
68
|
+
virtual INSOLID_TYPE VecInSolid2 (const Point<3> & p,
|
|
69
|
+
const Vec<3> & v1,
|
|
70
|
+
const Vec<3> & v2,
|
|
71
|
+
double eps) const override;
|
|
72
|
+
|
|
73
|
+
virtual INSOLID_TYPE VecInSolid3 (const Point<3> & p,
|
|
74
|
+
const Vec<3> & v1,
|
|
75
|
+
const Vec<3> & v2,
|
|
76
|
+
double eps) const override;
|
|
77
|
+
|
|
78
|
+
virtual INSOLID_TYPE VecInSolid4 (const Point<3> & p,
|
|
79
|
+
const Vec<3> & v,
|
|
80
|
+
const Vec<3> & v2,
|
|
81
|
+
const Vec<3> & m,
|
|
82
|
+
double eps) const override;
|
|
83
|
+
|
|
84
|
+
virtual void GetTangentialSurfaceIndices (const Point<3> & p,
|
|
85
|
+
NgArray<int> & surfind, double eps) const override;
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
virtual void GetTangentialVecSurfaceIndices2 (const Point<3> & p, const Vec<3> & v1, const Vec<3> & v2,
|
|
89
|
+
NgArray<int> & surfind, double eps) const override;
|
|
90
|
+
|
|
91
|
+
virtual void CalcSpecialPoints (NgArray<Point<3> > & pts) const override;
|
|
92
|
+
virtual void AnalyzeSpecialPoint (const Point<3> & pt,
|
|
93
|
+
NgArray<Point<3> > & specpts) const override;
|
|
94
|
+
virtual Vec<3> SpecialPointTangentialVector (const Point<3> & p, int s1, int s2) const override;
|
|
95
|
+
|
|
96
|
+
virtual int GetNSurfaces() const override
|
|
97
|
+
{ return planes.Size(); }
|
|
98
|
+
virtual Surface & GetSurface (int i) override
|
|
99
|
+
{ return *planes[i]; }
|
|
100
|
+
virtual const Surface & GetSurface (int i) const override
|
|
101
|
+
{ return *planes[i]; }
|
|
102
|
+
|
|
103
|
+
virtual void GetPrimitiveData (const char *& classname, NgArray<double> & coeffs) const override;
|
|
104
|
+
virtual void SetPrimitiveData (NgArray<double> & coeffs) override;
|
|
105
|
+
|
|
106
|
+
virtual void Reduce (const BoxSphere<3> & box) override;
|
|
107
|
+
virtual void UnReduce () override;
|
|
108
|
+
|
|
109
|
+
int AddPoint (const Point<3> & p);
|
|
110
|
+
int AddFace (int pi1, int pi2, int pi3, int inputnum);
|
|
111
|
+
|
|
112
|
+
void GetPolySurfs(NgArray < NgArray<int> * > & polysurfs);
|
|
113
|
+
|
|
114
|
+
protected:
|
|
115
|
+
int FaceBoxIntersection (int fnr, const BoxSphere<3> & box) const;
|
|
116
|
+
// void CalcData();
|
|
117
|
+
};
|
|
118
|
+
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
#endif
|
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
#ifndef _REVOLUTION_HPP
|
|
2
|
+
#define _REVOLUTION_HPP
|
|
3
|
+
|
|
4
|
+
namespace netgen
|
|
5
|
+
{
|
|
6
|
+
|
|
7
|
+
class Revolution;
|
|
8
|
+
|
|
9
|
+
class RevolutionFace : public Surface
|
|
10
|
+
{
|
|
11
|
+
private:
|
|
12
|
+
bool isfirst, islast;
|
|
13
|
+
const SplineSeg<2> * spline;
|
|
14
|
+
bool deletable;
|
|
15
|
+
|
|
16
|
+
Point<3> p0;
|
|
17
|
+
Vec<3> v_axis;
|
|
18
|
+
|
|
19
|
+
int id;
|
|
20
|
+
|
|
21
|
+
// coefficient for implicizt polynomial
|
|
22
|
+
mutable Vector spline_coefficient;
|
|
23
|
+
mutable Vector spline_coefficient_shifted;
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
NgArray < Vec<2>* > checklines_vec;
|
|
27
|
+
NgArray < Point<2>* > checklines_start;
|
|
28
|
+
NgArray < Vec<2>* > checklines_normal;
|
|
29
|
+
|
|
30
|
+
private:
|
|
31
|
+
void Init (void);
|
|
32
|
+
|
|
33
|
+
public:
|
|
34
|
+
void CalcProj(const Point<3> & point3d, Point<2> & point2d) const;
|
|
35
|
+
void CalcProj(const Point<3> & point3d, Point<2> & point2d,
|
|
36
|
+
const Vec<3> & vector3d, Vec<2> & vector2d) const;
|
|
37
|
+
void CalcProj0(const Vec<3> & point3d_minus_p0, Point<2> & point2d) const;
|
|
38
|
+
|
|
39
|
+
public:
|
|
40
|
+
RevolutionFace(const SplineSeg<2> & spline_in,
|
|
41
|
+
const Point<3> & p,
|
|
42
|
+
const Vec<3> & vec,
|
|
43
|
+
bool first = false,
|
|
44
|
+
bool last = false,
|
|
45
|
+
const int id_in = 0);
|
|
46
|
+
|
|
47
|
+
RevolutionFace(const NgArray<double> & raw_data);
|
|
48
|
+
// default constructor for archive
|
|
49
|
+
RevolutionFace() {}
|
|
50
|
+
|
|
51
|
+
~RevolutionFace();
|
|
52
|
+
|
|
53
|
+
virtual void DoArchive(Archive& ar)
|
|
54
|
+
{
|
|
55
|
+
Surface::DoArchive(ar);
|
|
56
|
+
ar & isfirst & islast & spline & deletable & p0 & v_axis & id & spline_coefficient
|
|
57
|
+
& spline_coefficient_shifted & checklines_vec & checklines_start & checklines_normal;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
virtual int IsIdentic (const Surface & s2, int & inv, double eps) const;
|
|
61
|
+
|
|
62
|
+
virtual double CalcFunctionValue (const Point<3> & point) const;
|
|
63
|
+
virtual void CalcGradient (const Point<3> & point, Vec<3> & grad) const;
|
|
64
|
+
virtual void CalcHesse (const Point<3> & point, Mat<3> & hesse) const;
|
|
65
|
+
virtual double HesseNorm () const;
|
|
66
|
+
|
|
67
|
+
virtual double MaxCurvature () const;
|
|
68
|
+
//virtual double MaxCurvatureLoc (const Point<3> & /* c */ ,
|
|
69
|
+
// double /* rad */) const;
|
|
70
|
+
|
|
71
|
+
Point<3> P0() const { return p0; }
|
|
72
|
+
Vec<3> Axis() const { return v_axis; }
|
|
73
|
+
|
|
74
|
+
virtual void Project (Point<3> & p) const;
|
|
75
|
+
|
|
76
|
+
virtual Point<3> GetSurfacePoint () const;
|
|
77
|
+
virtual void Print (ostream & str) const;
|
|
78
|
+
|
|
79
|
+
virtual void GetTriangleApproximation (TriangleApproximation & tas,
|
|
80
|
+
const Box<3> & boundingbox,
|
|
81
|
+
double facets) const;
|
|
82
|
+
|
|
83
|
+
bool BoxIntersectsFace (const Box<3> & box) const;
|
|
84
|
+
/*
|
|
85
|
+
bool BoxIntersectsFace (const BoxSphere<2> & box, bool & uncertain) const;
|
|
86
|
+
bool BoxIntersectsFace (const BoxSphere<3> & box, bool & uncertain) const;
|
|
87
|
+
*/
|
|
88
|
+
|
|
89
|
+
const SplineSeg<2> & GetSpline(void) const {return *spline;}
|
|
90
|
+
|
|
91
|
+
/* INSOLID_TYPE */ bool PointInFace (const Point<3> & p, const double eps) const;
|
|
92
|
+
|
|
93
|
+
void GetRawData(NgArray<double> & data) const;
|
|
94
|
+
|
|
95
|
+
};
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
/*
|
|
100
|
+
|
|
101
|
+
Primitive of revolution
|
|
102
|
+
|
|
103
|
+
*/
|
|
104
|
+
|
|
105
|
+
|
|
106
|
+
class Revolution : public Primitive
|
|
107
|
+
{
|
|
108
|
+
private:
|
|
109
|
+
Point<3> p0,p1;
|
|
110
|
+
Vec<3> v_axis;
|
|
111
|
+
|
|
112
|
+
// 1 ... torus-like
|
|
113
|
+
// 2 ... sphere-like
|
|
114
|
+
int type;
|
|
115
|
+
|
|
116
|
+
|
|
117
|
+
Array<RevolutionFace*> faces;
|
|
118
|
+
shared_ptr<SplineGeometry<2>> splinegeo;
|
|
119
|
+
|
|
120
|
+
mutable int intersecting_face;
|
|
121
|
+
|
|
122
|
+
public:
|
|
123
|
+
Revolution(const Point<3> & p0_in,
|
|
124
|
+
const Point<3> & p1_in,
|
|
125
|
+
shared_ptr<SplineGeometry<2>> spline_in);
|
|
126
|
+
// default constructor for archive
|
|
127
|
+
Revolution() {}
|
|
128
|
+
|
|
129
|
+
~Revolution();
|
|
130
|
+
|
|
131
|
+
virtual void DoArchive(Archive& ar)
|
|
132
|
+
{
|
|
133
|
+
Primitive::DoArchive(ar);
|
|
134
|
+
ar & p0 & p1 & v_axis & type & faces & intersecting_face;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
/*
|
|
138
|
+
Check, whether box intersects solid defined by surface.
|
|
139
|
+
|
|
140
|
+
return values:
|
|
141
|
+
0 .. box outside solid \\
|
|
142
|
+
1 .. box in solid \\
|
|
143
|
+
2 .. can't decide (allowed, iff box is close to solid)
|
|
144
|
+
*/
|
|
145
|
+
virtual INSOLID_TYPE BoxInSolid (const BoxSphere<3> & box) const;
|
|
146
|
+
virtual INSOLID_TYPE PointInSolid (const Point<3> & p,
|
|
147
|
+
double eps) const;
|
|
148
|
+
|
|
149
|
+
virtual void GetTangentialSurfaceIndices (const Point<3> & p,
|
|
150
|
+
NgArray<int> & surfind, double eps) const;
|
|
151
|
+
|
|
152
|
+
virtual INSOLID_TYPE VecInSolid (const Point<3> & p,
|
|
153
|
+
const Vec<3> & v,
|
|
154
|
+
double eps) const;
|
|
155
|
+
|
|
156
|
+
// checks if lim s->0 lim t->0 p + t(v1 + s v2) in solid
|
|
157
|
+
virtual INSOLID_TYPE VecInSolid2 (const Point<3> & p,
|
|
158
|
+
const Vec<3> & v1,
|
|
159
|
+
const Vec<3> & v2,
|
|
160
|
+
double eps) const;
|
|
161
|
+
|
|
162
|
+
virtual void GetTangentialVecSurfaceIndices2 (const Point<3> & p, const Vec<3> & v1, const Vec<3> & v2,
|
|
163
|
+
NgArray<int> & surfind, double eps) const;
|
|
164
|
+
|
|
165
|
+
|
|
166
|
+
virtual int GetNSurfaces() const;
|
|
167
|
+
virtual Surface & GetSurface (int i = 0);
|
|
168
|
+
virtual const Surface & GetSurface (int i = 0) const;
|
|
169
|
+
|
|
170
|
+
|
|
171
|
+
virtual void Reduce (const BoxSphere<3> & box);
|
|
172
|
+
virtual void UnReduce ();
|
|
173
|
+
|
|
174
|
+
|
|
175
|
+
};
|
|
176
|
+
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
|
|
180
|
+
#endif
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
#ifndef FILE_SINGULARREF
|
|
2
|
+
#define FILE_SINGULARREF
|
|
3
|
+
|
|
4
|
+
/**************************************************************************/
|
|
5
|
+
/* File: singularref.hh */
|
|
6
|
+
/* Author: Joachim Schoeberl */
|
|
7
|
+
/* Date: 25. Sep. 99 */
|
|
8
|
+
/**************************************************************************/
|
|
9
|
+
|
|
10
|
+
namespace netgen
|
|
11
|
+
{
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
Control for local refinement
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
Singular Face.
|
|
22
|
+
Causes a boundary layer mesh refinement.
|
|
23
|
+
All elements in subdomain domnr will get a boundary layer
|
|
24
|
+
on faces sharing the solid sol
|
|
25
|
+
*/
|
|
26
|
+
class DLL_HEADER SingularFace
|
|
27
|
+
{
|
|
28
|
+
public:
|
|
29
|
+
int domnr;
|
|
30
|
+
const Solid *sol;
|
|
31
|
+
double factor;
|
|
32
|
+
// NgArray<Point<3> > points;
|
|
33
|
+
// NgArray<INDEX_2> segms;
|
|
34
|
+
public:
|
|
35
|
+
SingularFace (int adomnr, const Solid * asol, double sf)
|
|
36
|
+
: domnr(adomnr), sol(asol), factor(sf) { ; }
|
|
37
|
+
const Solid * GetSolid() const { return sol; }
|
|
38
|
+
int GetDomainNr () const { return domnr; }
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
///
|
|
43
|
+
class DLL_HEADER SingularEdge
|
|
44
|
+
{
|
|
45
|
+
public:
|
|
46
|
+
double beta;
|
|
47
|
+
int domnr;
|
|
48
|
+
const CSGeometry& geom;
|
|
49
|
+
const Solid *sol1, *sol2;
|
|
50
|
+
NgArray<Point<3> > points;
|
|
51
|
+
NgArray<INDEX_2> segms;
|
|
52
|
+
double factor;
|
|
53
|
+
|
|
54
|
+
double maxhinit;
|
|
55
|
+
public:
|
|
56
|
+
SingularEdge (double abeta, int adomnr,
|
|
57
|
+
const CSGeometry & ageom,
|
|
58
|
+
const Solid * asol1, const Solid * asol2, double sf,
|
|
59
|
+
const double maxh_at_initialization = -1);
|
|
60
|
+
void FindPointsOnEdge (class Mesh & mesh);
|
|
61
|
+
void SetMeshSize (class Mesh & mesh, double globalh);
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
///
|
|
66
|
+
class DLL_HEADER SingularPoint
|
|
67
|
+
{
|
|
68
|
+
public:
|
|
69
|
+
double beta;
|
|
70
|
+
const Solid *sol1, *sol2, *sol3;
|
|
71
|
+
NgArray<Point<3> > points;
|
|
72
|
+
double factor;
|
|
73
|
+
|
|
74
|
+
public:
|
|
75
|
+
SingularPoint (double abeta, const Solid * asol1, const Solid * asol2,
|
|
76
|
+
const Solid * asol3, double sf);
|
|
77
|
+
void FindPoints (class Mesh & mesh);
|
|
78
|
+
void SetMeshSize (class Mesh & mesh, double globalh);
|
|
79
|
+
};
|
|
80
|
+
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
#endif
|
|
@@ -0,0 +1,295 @@
|
|
|
1
|
+
#ifndef FILE_SOLID
|
|
2
|
+
#define FILE_SOLID
|
|
3
|
+
|
|
4
|
+
/**************************************************************************/
|
|
5
|
+
/* File: solid.hh */
|
|
6
|
+
/* Author: Joachim Schoeberl */
|
|
7
|
+
/* Date: 1. Dez. 95 */
|
|
8
|
+
/**************************************************************************/
|
|
9
|
+
|
|
10
|
+
#include <functional>
|
|
11
|
+
|
|
12
|
+
namespace netgen
|
|
13
|
+
{
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
/*
|
|
17
|
+
|
|
18
|
+
Constructive Solid Model (csg)
|
|
19
|
+
|
|
20
|
+
*/
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
class Solid;
|
|
26
|
+
|
|
27
|
+
class SolidIterator
|
|
28
|
+
{
|
|
29
|
+
public:
|
|
30
|
+
SolidIterator () { ; }
|
|
31
|
+
virtual ~SolidIterator () { ; }
|
|
32
|
+
virtual void Do (Solid * sol) = 0;
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
inline INSOLID_TYPE Intersection (INSOLID_TYPE ina, INSOLID_TYPE inb)
|
|
37
|
+
{
|
|
38
|
+
if (ina == IS_INSIDE && inb == IS_INSIDE) return IS_INSIDE;
|
|
39
|
+
if (ina == IS_OUTSIDE || inb == IS_OUTSIDE) return IS_OUTSIDE;
|
|
40
|
+
return DOES_INTERSECT;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
inline INSOLID_TYPE Union (INSOLID_TYPE ina, INSOLID_TYPE inb)
|
|
44
|
+
{
|
|
45
|
+
if (ina == IS_INSIDE || inb == IS_INSIDE) return IS_INSIDE;
|
|
46
|
+
if (ina == IS_OUTSIDE && inb == IS_OUTSIDE) return IS_OUTSIDE;
|
|
47
|
+
return DOES_INTERSECT;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
inline INSOLID_TYPE Complement (INSOLID_TYPE in)
|
|
51
|
+
{
|
|
52
|
+
if (in == IS_INSIDE) return IS_OUTSIDE;
|
|
53
|
+
if (in == IS_OUTSIDE) return IS_INSIDE;
|
|
54
|
+
return DOES_INTERSECT;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
class Solid
|
|
58
|
+
{
|
|
59
|
+
public:
|
|
60
|
+
|
|
61
|
+
typedef enum optyp1 { TERM, TERM_REF, SECTION, UNION, SUB, ROOT /*, DUMMY */ } optyp;
|
|
62
|
+
|
|
63
|
+
private:
|
|
64
|
+
char * name;
|
|
65
|
+
Primitive * prim;
|
|
66
|
+
Solid * s1, * s2;
|
|
67
|
+
|
|
68
|
+
optyp op;
|
|
69
|
+
bool visited;
|
|
70
|
+
double maxh;
|
|
71
|
+
int num_surfs;
|
|
72
|
+
|
|
73
|
+
// static int cntnames;
|
|
74
|
+
|
|
75
|
+
public:
|
|
76
|
+
Solid (Primitive * aprim);
|
|
77
|
+
Solid (optyp aop, Solid * as1, Solid * as2 = NULL);
|
|
78
|
+
// default constructor for archive
|
|
79
|
+
Solid () {}
|
|
80
|
+
~Solid ();
|
|
81
|
+
|
|
82
|
+
void DoArchive(Archive& archive)
|
|
83
|
+
{
|
|
84
|
+
archive & name & prim & s1 & s2 & visited & maxh & num_surfs;
|
|
85
|
+
if(archive.Output())
|
|
86
|
+
archive << int(op);
|
|
87
|
+
else
|
|
88
|
+
{
|
|
89
|
+
int iop;
|
|
90
|
+
archive & iop;
|
|
91
|
+
op = optyp(iop);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
const char * Name () const { return name; }
|
|
95
|
+
void SetName (const char * aname);
|
|
96
|
+
|
|
97
|
+
Solid * Copy (class CSGeometry & geom) const;
|
|
98
|
+
void Transform (Transformation<3> & trans);
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
void IterateSolid (SolidIterator & it, bool only_once = 0);
|
|
102
|
+
|
|
103
|
+
|
|
104
|
+
void Boundaries (const Point<3> & p, NgArray<int> & bounds) const;
|
|
105
|
+
int NumPrimitives () const;
|
|
106
|
+
void GetSurfaceIndices (NgArray<int> & surfind) const;
|
|
107
|
+
void GetSurfaceIndices (IndexSet & iset) const;
|
|
108
|
+
|
|
109
|
+
void GetTangentialSurfaceIndices (const Point<3> & p, NgArray<int> & surfids, double eps) const;
|
|
110
|
+
void GetTangentialSurfaceIndices2 (const Point<3> & p, const Vec<3> & v, NgArray<int> & surfids, double eps) const;
|
|
111
|
+
void GetTangentialSurfaceIndices3 (const Point<3> & p, const Vec<3> & v, const Vec<3> & v2, NgArray<int> & surfids, double eps) const;
|
|
112
|
+
|
|
113
|
+
void ForEachSurface (const std::function<void(Surface*,bool)> & lambda, bool inv = false) const;
|
|
114
|
+
|
|
115
|
+
Primitive * GetPrimitive ()
|
|
116
|
+
{ return (op == TERM || op == TERM_REF) ? prim : NULL; }
|
|
117
|
+
const Primitive * GetPrimitive () const
|
|
118
|
+
{ return (op == TERM || op == TERM_REF) ? prim : NULL; }
|
|
119
|
+
|
|
120
|
+
Solid * S1() { return s1; }
|
|
121
|
+
Solid * S2() { return s2; }
|
|
122
|
+
|
|
123
|
+
// geometric tests
|
|
124
|
+
|
|
125
|
+
INSOLID_TYPE PointInSolid (const Point<3> & p, double eps) const;
|
|
126
|
+
INSOLID_TYPE VecInSolid (const Point<3> & p, const Vec<3> & v, double eps) const;
|
|
127
|
+
|
|
128
|
+
// checks if lim s->0 lim t->0 p + t(v1 + s v2) in solid
|
|
129
|
+
INSOLID_TYPE VecInSolid2 (const Point<3> & p, const Vec<3> & v1,
|
|
130
|
+
const Vec<3> & v2, double eps) const;
|
|
131
|
+
|
|
132
|
+
|
|
133
|
+
bool IsIn (const Point<3> & p, double eps = 1e-6) const;
|
|
134
|
+
bool IsStrictIn (const Point<3> & p, double eps = 1e-6) const;
|
|
135
|
+
bool VectorIn (const Point<3> & p, const Vec<3> & v, double eps = 1e-6) const;
|
|
136
|
+
bool VectorStrictIn (const Point<3> & p, const Vec<3> & v, double eps = 1e-6) const;
|
|
137
|
+
|
|
138
|
+
bool VectorIn2 (const Point<3> & p, const Vec<3> & v1, const Vec<3> & v2,
|
|
139
|
+
double eps) const;
|
|
140
|
+
/*
|
|
141
|
+
bool VectorIn2Rec (const Point<3> & p, const Vec<3> & v1, const Vec<3> & v2,
|
|
142
|
+
double eps) const;
|
|
143
|
+
*/
|
|
144
|
+
bool VectorStrictIn2 (const Point<3> & p, const Vec<3> & v1, const Vec<3> & v2,
|
|
145
|
+
double eps) const;
|
|
146
|
+
|
|
147
|
+
/// compute localization in point p
|
|
148
|
+
unique_ptr<Solid> TangentialSolid (const Point<3> & p, NgArray<int> & surfids, double eps) const;
|
|
149
|
+
|
|
150
|
+
/// compute localization in point p tangential to vector t
|
|
151
|
+
unique_ptr<Solid> TangentialSolid2 (const Point<3> & p, const Vec<3> & t,
|
|
152
|
+
NgArray<int> & surfids, double eps) const;
|
|
153
|
+
|
|
154
|
+
/** compute localization in point p, with second order approximation to edge
|
|
155
|
+
p + s t + s*s/2 t2 **/
|
|
156
|
+
unique_ptr<Solid> TangentialSolid3 (const Point<3> & p, const Vec<3> & t, const Vec<3> & t2,
|
|
157
|
+
NgArray<int> & surfids, double eps) const;
|
|
158
|
+
|
|
159
|
+
|
|
160
|
+
|
|
161
|
+
/** tangential solid, which follows the edge
|
|
162
|
+
p + s t + s*s/2 t2
|
|
163
|
+
with second order, and the neighbouring face
|
|
164
|
+
p + s t + s*s/2 t2 + r m
|
|
165
|
+
with first order
|
|
166
|
+
**/
|
|
167
|
+
unique_ptr<Solid> TangentialEdgeSolid (const Point<3> & p, const Vec<3> & t, const Vec<3> & t2,
|
|
168
|
+
const Vec<3> & m,
|
|
169
|
+
NgArray<int> & surfids, double eps) const;
|
|
170
|
+
|
|
171
|
+
|
|
172
|
+
void CalcOnePrimitiveSpecialPoints (const Box<3> & box, NgArray<Point<3> > & pts) const;
|
|
173
|
+
|
|
174
|
+
///
|
|
175
|
+
int Edge (const Point<3> & p, const Vec<3> & v, double eps) const;
|
|
176
|
+
///
|
|
177
|
+
int OnFace (const Point<3> & p, const Vec<3> & v, double eps) const;
|
|
178
|
+
///
|
|
179
|
+
void Print (ostream & str) const;
|
|
180
|
+
///
|
|
181
|
+
void CalcSurfaceInverse ();
|
|
182
|
+
///
|
|
183
|
+
Solid * GetReducedSolid (const BoxSphere<3> & box) const;
|
|
184
|
+
|
|
185
|
+
|
|
186
|
+
void SetMaxH (double amaxh)
|
|
187
|
+
{ maxh = amaxh; }
|
|
188
|
+
double GetMaxH () const
|
|
189
|
+
{ return maxh; }
|
|
190
|
+
|
|
191
|
+
void GetSolidData (ostream & ost, int first = 1) const;
|
|
192
|
+
static Solid * CreateSolid (istream & ist, const SymbolTable<Solid*> & solids);
|
|
193
|
+
|
|
194
|
+
|
|
195
|
+
static shared_ptr<BlockAllocator> ball;
|
|
196
|
+
void * operator new(size_t /* s */)
|
|
197
|
+
{
|
|
198
|
+
return ball->Alloc();
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
void operator delete (void * p)
|
|
202
|
+
{
|
|
203
|
+
ball->Free (p);
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
|
|
207
|
+
protected:
|
|
208
|
+
///
|
|
209
|
+
|
|
210
|
+
void RecBoundaries (const Point<3> & p, NgArray<int> & bounds,
|
|
211
|
+
int & in, int & strin) const;
|
|
212
|
+
///
|
|
213
|
+
void RecTangentialSolid (const Point<3> & p, Solid *& tansol, NgArray<int> & surfids,
|
|
214
|
+
bool & in, bool & strin, double eps) const;
|
|
215
|
+
|
|
216
|
+
void RecTangentialSolid2 (const Point<3> & p, const Vec<3> & vec,
|
|
217
|
+
Solid *& tansol, NgArray<int> & surfids,
|
|
218
|
+
bool & in, bool & strin, double eps) const;
|
|
219
|
+
///
|
|
220
|
+
void RecTangentialSolid3 (const Point<3> & p, const Vec<3> & vec,const Vec<3> & vec2,
|
|
221
|
+
Solid *& tansol, NgArray<int> & surfids,
|
|
222
|
+
bool & in, bool & strin, double eps) const;
|
|
223
|
+
///
|
|
224
|
+
void RecTangentialEdgeSolid (const Point<3> & p, const Vec<3> & t, const Vec<3> & t2,
|
|
225
|
+
const Vec<3> & m,
|
|
226
|
+
Solid *& tansol, NgArray<int> & surfids,
|
|
227
|
+
bool & in, bool & strin, double eps) const;
|
|
228
|
+
|
|
229
|
+
///
|
|
230
|
+
void RecEdge (const Point<3> & p, const Vec<3> & v,
|
|
231
|
+
bool & in, bool & strin, int & faces, double eps) const;
|
|
232
|
+
///
|
|
233
|
+
void CalcSurfaceInverseRec (int inv);
|
|
234
|
+
///
|
|
235
|
+
Solid * RecGetReducedSolid (const BoxSphere<3> & box, INSOLID_TYPE & in) const;
|
|
236
|
+
///
|
|
237
|
+
void RecGetSurfaceIndices (NgArray<int> & surfind) const;
|
|
238
|
+
void RecGetTangentialSurfaceIndices (const Point<3> & p, NgArray<int> & surfids, double eps) const;
|
|
239
|
+
void RecGetTangentialSurfaceIndices2 (const Point<3> & p, const Vec<3> & v, NgArray<int> & surfids, double eps) const;
|
|
240
|
+
void RecGetTangentialSurfaceIndices3 (const Point<3> & p, const Vec<3> & v, const Vec<3> & v2,
|
|
241
|
+
NgArray<int> & surfids, double eps) const;
|
|
242
|
+
void RecGetTangentialEdgeSurfaceIndices (const Point<3> & p, const Vec<3> & v, const Vec<3> & v2, const Vec<3> & m,
|
|
243
|
+
NgArray<int> & surfids, double eps) const;
|
|
244
|
+
void RecGetSurfaceIndices (IndexSet & iset) const;
|
|
245
|
+
|
|
246
|
+
void RecCalcOnePrimitiveSpecialPoints (NgArray<Point<3> > & pts) const;
|
|
247
|
+
|
|
248
|
+
friend class SolidIterator;
|
|
249
|
+
friend class ClearVisitedIt;
|
|
250
|
+
friend class RemoveDummyIterator;
|
|
251
|
+
friend class CSGeometry;
|
|
252
|
+
};
|
|
253
|
+
|
|
254
|
+
|
|
255
|
+
inline ostream & operator<< (ostream & ost, const Solid & sol)
|
|
256
|
+
{
|
|
257
|
+
sol.Print (ost);
|
|
258
|
+
return ost;
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
|
|
262
|
+
|
|
263
|
+
|
|
264
|
+
|
|
265
|
+
|
|
266
|
+
class ReducePrimitiveIterator : public SolidIterator
|
|
267
|
+
{
|
|
268
|
+
BoxSphere<3> box;
|
|
269
|
+
public:
|
|
270
|
+
ReducePrimitiveIterator (const BoxSphere<3> & abox)
|
|
271
|
+
: SolidIterator(), box(abox) { ; }
|
|
272
|
+
virtual ~ReducePrimitiveIterator () { ; }
|
|
273
|
+
virtual void Do (Solid * sol)
|
|
274
|
+
{
|
|
275
|
+
if (sol -> GetPrimitive())
|
|
276
|
+
sol -> GetPrimitive() -> Reduce (box);
|
|
277
|
+
}
|
|
278
|
+
};
|
|
279
|
+
|
|
280
|
+
|
|
281
|
+
class UnReducePrimitiveIterator : public SolidIterator
|
|
282
|
+
{
|
|
283
|
+
public:
|
|
284
|
+
UnReducePrimitiveIterator () { ; }
|
|
285
|
+
virtual ~UnReducePrimitiveIterator () { ; }
|
|
286
|
+
virtual void Do (Solid * sol)
|
|
287
|
+
{
|
|
288
|
+
if (sol -> GetPrimitive())
|
|
289
|
+
sol -> GetPrimitive() -> UnReduce ();
|
|
290
|
+
}
|
|
291
|
+
};
|
|
292
|
+
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
#endif
|