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,43 @@
|
|
|
1
|
+
#ifndef FILE_CSG
|
|
2
|
+
#define FILE_CSG
|
|
3
|
+
|
|
4
|
+
/* *************************************************************************/
|
|
5
|
+
/* File: geoml.hpp */
|
|
6
|
+
/* Author: Joachim Schoeberl */
|
|
7
|
+
/* Date: 21. Jun. 98 */
|
|
8
|
+
/* *************************************************************************/
|
|
9
|
+
|
|
10
|
+
#include <myadt.hpp>
|
|
11
|
+
#include <gprim.hpp>
|
|
12
|
+
#include <meshing.hpp>
|
|
13
|
+
// #include <geometry2d.hpp>
|
|
14
|
+
#include "../gprim/spline.hpp"
|
|
15
|
+
#include "../gprim/splinegeometry.hpp"
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
#include "surface.hpp"
|
|
20
|
+
#include "solid.hpp"
|
|
21
|
+
#include "identify.hpp"
|
|
22
|
+
#include "singularref.hpp"
|
|
23
|
+
#include "splinesurface.hpp"
|
|
24
|
+
#include "csgeom.hpp"
|
|
25
|
+
#include "csgparser.hpp"
|
|
26
|
+
|
|
27
|
+
#include "triapprox.hpp"
|
|
28
|
+
#include "algprim.hpp"
|
|
29
|
+
#include "brick.hpp"
|
|
30
|
+
#include "spline3d.hpp"
|
|
31
|
+
#include "manifold.hpp"
|
|
32
|
+
#include "curve2d.hpp"
|
|
33
|
+
#include "explicitcurve2d.hpp"
|
|
34
|
+
#include "gencyl.hpp"
|
|
35
|
+
#include "polyhedra.hpp"
|
|
36
|
+
#include "extrusion.hpp"
|
|
37
|
+
#include "revolution.hpp"
|
|
38
|
+
#include "specpoin.hpp"
|
|
39
|
+
#include "edgeflw.hpp"
|
|
40
|
+
#include "meshsurf.hpp"
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
#endif
|
|
@@ -0,0 +1,389 @@
|
|
|
1
|
+
#ifndef FILE_CSGEOM
|
|
2
|
+
#define FILE_CSGEOM
|
|
3
|
+
|
|
4
|
+
/**************************************************************************/
|
|
5
|
+
/* File: csgeom.hh */
|
|
6
|
+
/* Author: Joachim Schoeberl */
|
|
7
|
+
/* Date: 27. Nov. 97 */
|
|
8
|
+
/**************************************************************************/
|
|
9
|
+
|
|
10
|
+
namespace netgen
|
|
11
|
+
{
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
Constructive Solid Geometry
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
class TriangleApproximation;
|
|
19
|
+
class TATriangle;
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
A top level object is an entity to be meshed.
|
|
23
|
+
I can be either a solid, or one surface patch of a solid.
|
|
24
|
+
*/
|
|
25
|
+
class DLL_HEADER TopLevelObject
|
|
26
|
+
{
|
|
27
|
+
Solid * solid;
|
|
28
|
+
Surface * surface;
|
|
29
|
+
|
|
30
|
+
double red, blue, green;
|
|
31
|
+
bool visible, transp;
|
|
32
|
+
double maxh;
|
|
33
|
+
string material;
|
|
34
|
+
int layer;
|
|
35
|
+
int bc; // for surface patches, only
|
|
36
|
+
string bcname;
|
|
37
|
+
|
|
38
|
+
public:
|
|
39
|
+
TopLevelObject (Solid * asolid,
|
|
40
|
+
Surface * asurface = NULL);
|
|
41
|
+
// default constructor for archive
|
|
42
|
+
TopLevelObject() {}
|
|
43
|
+
|
|
44
|
+
void DoArchive(Archive& archive)
|
|
45
|
+
{
|
|
46
|
+
archive & solid & surface & red & blue & green & visible & transp & maxh
|
|
47
|
+
& material & layer & bc & bcname;
|
|
48
|
+
}
|
|
49
|
+
const Solid * GetSolid() const { return solid; }
|
|
50
|
+
Solid * GetSolid() { return solid; }
|
|
51
|
+
|
|
52
|
+
const Surface * GetSurface () const { return surface; }
|
|
53
|
+
Surface * GetSurface () { return surface; }
|
|
54
|
+
|
|
55
|
+
void GetData (ostream & ost);
|
|
56
|
+
void SetData (istream & ist);
|
|
57
|
+
|
|
58
|
+
void SetMaxH (double amaxh) { maxh = amaxh; }
|
|
59
|
+
double GetMaxH () const { return maxh; }
|
|
60
|
+
|
|
61
|
+
void SetRGB (double ared, double agreen, double ablue)
|
|
62
|
+
{
|
|
63
|
+
red = ared;
|
|
64
|
+
green = agreen;
|
|
65
|
+
blue = ablue;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
double GetRed () const { return red; }
|
|
69
|
+
double GetGreen () const { return green; }
|
|
70
|
+
double GetBlue () const { return blue; }
|
|
71
|
+
|
|
72
|
+
void SetTransparent (bool atransp)
|
|
73
|
+
{ transp = atransp; }
|
|
74
|
+
bool GetTransparent () const { return transp; }
|
|
75
|
+
|
|
76
|
+
void SetVisible (bool avisible)
|
|
77
|
+
{ visible = avisible; }
|
|
78
|
+
bool GetVisible () const { return visible; }
|
|
79
|
+
|
|
80
|
+
const string GetMaterial () const { return material; }
|
|
81
|
+
void SetMaterial (const string & mat) { material = mat; }
|
|
82
|
+
|
|
83
|
+
int GetLayer () const { return layer; }
|
|
84
|
+
void SetLayer (int alayer) { layer = alayer; }
|
|
85
|
+
|
|
86
|
+
void SetBCProp (int abc) { bc = abc; }
|
|
87
|
+
int GetBCProp () const { return bc; }
|
|
88
|
+
|
|
89
|
+
void SetBCName (string abc) { bcname = abc; }
|
|
90
|
+
const string GetBCName () const { return bcname; }
|
|
91
|
+
};
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
/**
|
|
98
|
+
CSGeometry has the whole geometric information
|
|
99
|
+
*/
|
|
100
|
+
class DLL_HEADER CSGeometry : public NetgenGeometry
|
|
101
|
+
{
|
|
102
|
+
private:
|
|
103
|
+
/// all surfaces
|
|
104
|
+
SymbolTable<Surface*> surfaces;
|
|
105
|
+
|
|
106
|
+
public:
|
|
107
|
+
/// primitive of surface
|
|
108
|
+
NgArray<const Primitive*> surf2prim;
|
|
109
|
+
|
|
110
|
+
private:
|
|
111
|
+
NgArray<Surface*> delete_them;
|
|
112
|
+
|
|
113
|
+
/// all named solids
|
|
114
|
+
SymbolTable<Solid*> solids;
|
|
115
|
+
|
|
116
|
+
/// all 2d splinecurves
|
|
117
|
+
SymbolTable<shared_ptr<SplineGeometry<2>>> splinecurves2d;
|
|
118
|
+
/// all 3d splinecurves
|
|
119
|
+
SymbolTable<shared_ptr<SplineGeometry<3>>> splinecurves3d;
|
|
120
|
+
|
|
121
|
+
/// all top level objects: solids and surfaces
|
|
122
|
+
NgArray<TopLevelObject*> toplevelobjects;
|
|
123
|
+
|
|
124
|
+
public:
|
|
125
|
+
/// additional points specified by user
|
|
126
|
+
class UserPoint : public Point<3>
|
|
127
|
+
{
|
|
128
|
+
int index;
|
|
129
|
+
string name;
|
|
130
|
+
public:
|
|
131
|
+
UserPoint() = default;
|
|
132
|
+
UserPoint (Point<3> p, int _index) : Point<3>(p), index(_index) { ; }
|
|
133
|
+
UserPoint (Point<3> p, const string & _name) : Point<3>(p), index(-1), name(_name) { ; }
|
|
134
|
+
int GetIndex() const { return index; }
|
|
135
|
+
const string & GetName() const { return name; }
|
|
136
|
+
void DoArchive(Archive& archive)
|
|
137
|
+
{
|
|
138
|
+
archive & index & name;
|
|
139
|
+
Point<3>::DoArchive(archive);
|
|
140
|
+
}
|
|
141
|
+
};
|
|
142
|
+
|
|
143
|
+
private:
|
|
144
|
+
// NgArray<Point<3> > userpoints;
|
|
145
|
+
NgArray<UserPoint> userpoints;
|
|
146
|
+
NgArray<double> userpoints_ref_factor;
|
|
147
|
+
|
|
148
|
+
mutable NgArray<Point<3> > identpoints;
|
|
149
|
+
|
|
150
|
+
/// triangular approximation of top level objects
|
|
151
|
+
NgArray<TriangleApproximation*> triapprox;
|
|
152
|
+
|
|
153
|
+
/// increment, if geometry is changed
|
|
154
|
+
static int changeval;
|
|
155
|
+
|
|
156
|
+
/// bounding box of geometry
|
|
157
|
+
Box<3> boundingbox;
|
|
158
|
+
|
|
159
|
+
/// bounding box, if not set by input file
|
|
160
|
+
static Box<3> default_boundingbox;
|
|
161
|
+
|
|
162
|
+
/// identic surfaces are stored by pair of indizes, val = inverse
|
|
163
|
+
INDEX_2_HASHTABLE<int> identicsurfaces;
|
|
164
|
+
NgArray<int> isidenticto;
|
|
165
|
+
/// identification of boundaries (periodic, thin domains, ...)
|
|
166
|
+
|
|
167
|
+
double ideps;
|
|
168
|
+
|
|
169
|
+
/// filename of inputfile
|
|
170
|
+
string filename;
|
|
171
|
+
|
|
172
|
+
/// store splinesurfaces, such that added ones do not get deleted before geometry does
|
|
173
|
+
NgArray<shared_ptr<SplineSurface>> spline_surfaces;
|
|
174
|
+
|
|
175
|
+
shared_ptr<BlockAllocator> solid_ball = Solid::ball;
|
|
176
|
+
|
|
177
|
+
public:
|
|
178
|
+
CSGeometry ();
|
|
179
|
+
CSGeometry (const string & afilename);
|
|
180
|
+
virtual ~CSGeometry ();
|
|
181
|
+
|
|
182
|
+
void Clean ();
|
|
183
|
+
|
|
184
|
+
virtual void Save (const filesystem::path & filename) const override;
|
|
185
|
+
void Save (ostream & ost) const;
|
|
186
|
+
void Load (istream & ist);
|
|
187
|
+
|
|
188
|
+
void SaveSurfaces (ostream & out) const;
|
|
189
|
+
void LoadSurfaces (istream & in);
|
|
190
|
+
|
|
191
|
+
virtual void SaveToMeshFile (ostream & ost) const override;
|
|
192
|
+
|
|
193
|
+
PointGeomInfo ProjectPoint(INDEX surfind, Point<3> & p) const override;
|
|
194
|
+
bool ProjectPointGI (int surfind, Point<3> & p, PointGeomInfo & gi) const override;
|
|
195
|
+
void ProjectPointEdge(INDEX surfind, INDEX surfind2, Point<3> & p,
|
|
196
|
+
EdgePointGeomInfo* gi = nullptr) const override;
|
|
197
|
+
Vec<3> GetNormal(int surfind, const Point<3> & p, const PointGeomInfo* gi = nullptr) const override;
|
|
198
|
+
|
|
199
|
+
void PointBetween(const Point<3> & p1, const Point<3> & p2,
|
|
200
|
+
double secpoint, int surfi,
|
|
201
|
+
const PointGeomInfo & gi1,
|
|
202
|
+
const PointGeomInfo & gi2,
|
|
203
|
+
Point<3> & newp, PointGeomInfo & newgi) const override;
|
|
204
|
+
|
|
205
|
+
void PointBetweenEdge(const Point<3> & p1, const Point<3> & p2, double secpoint,
|
|
206
|
+
int surfi1, int surfi2,
|
|
207
|
+
const EdgePointGeomInfo & ap1,
|
|
208
|
+
const EdgePointGeomInfo & ap2,
|
|
209
|
+
Point<3> & newp, EdgePointGeomInfo & newgi) const override;
|
|
210
|
+
|
|
211
|
+
Vec<3> GetTangent (const Point<3> & p, int surfi1, int surfi2,
|
|
212
|
+
const EdgePointGeomInfo & ap1) const override;
|
|
213
|
+
|
|
214
|
+
int GetChangeVal() { return changeval; }
|
|
215
|
+
void Change() { changeval++; }
|
|
216
|
+
|
|
217
|
+
void AddSurface (Surface * surf);
|
|
218
|
+
void AddSurface (char * name, Surface * surf);
|
|
219
|
+
void AddSurfaces (Primitive * prim);
|
|
220
|
+
|
|
221
|
+
int GetNSurf () const { return surfaces.Size(); }
|
|
222
|
+
const Surface * GetSurface (const char * name) const;
|
|
223
|
+
const Surface * GetSurface (int i) const
|
|
224
|
+
{ return surfaces[i]; }
|
|
225
|
+
|
|
226
|
+
void SetSolid (const char * name, Solid * sol);
|
|
227
|
+
const Solid * GetSolid (const char * name) const;
|
|
228
|
+
const Solid * GetSolid (const string & name) const;
|
|
229
|
+
int GetNSolids () const { return solids.Size(); }
|
|
230
|
+
const Solid * GetSolid (int i) const { return solids[i]; }
|
|
231
|
+
const SymbolTable<Solid*> & GetSolids () const { return solids; }
|
|
232
|
+
|
|
233
|
+
|
|
234
|
+
void SetSplineCurve (const char * name, shared_ptr<SplineGeometry<2>> spl);
|
|
235
|
+
void SetSplineCurve (const char * name, shared_ptr<SplineGeometry<3>> spl);
|
|
236
|
+
shared_ptr<SplineGeometry<2>> GetSplineCurve2d (const string & name) const;
|
|
237
|
+
shared_ptr<SplineGeometry<3>> GetSplineCurve3d (const string & name) const;
|
|
238
|
+
|
|
239
|
+
void DoArchive(Archive& archive) override;
|
|
240
|
+
|
|
241
|
+
|
|
242
|
+
void SetFlags (const char * solidname, const Flags & flags);
|
|
243
|
+
|
|
244
|
+
|
|
245
|
+
int GetNTopLevelObjects () const
|
|
246
|
+
{ return toplevelobjects.Size(); }
|
|
247
|
+
int SetTopLevelObject (Solid * sol, Surface * surf = NULL);
|
|
248
|
+
void GetTopLevelObject (int nr, Solid *& sol, Surface *& surf)
|
|
249
|
+
{
|
|
250
|
+
sol = toplevelobjects[nr]->GetSolid();
|
|
251
|
+
surf = toplevelobjects[nr]->GetSurface();
|
|
252
|
+
}
|
|
253
|
+
void GetTopLevelObject (int nr, const Solid *& sol, const Surface *& surf) const
|
|
254
|
+
{
|
|
255
|
+
sol = toplevelobjects[nr]->GetSolid();
|
|
256
|
+
surf = toplevelobjects[nr]->GetSurface();
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
TopLevelObject * GetTopLevelObject (const Solid * sol, const Surface * surf = NULL);
|
|
260
|
+
TopLevelObject * GetTopLevelObject (int nr) const
|
|
261
|
+
{ return toplevelobjects[nr]; }
|
|
262
|
+
// const TopLevelObject * GetTopLevelObject (int nr) const
|
|
263
|
+
// { return toplevelobjects[nr]; }
|
|
264
|
+
void RemoveTopLevelObject (Solid * sol, Surface * surf = NULL);
|
|
265
|
+
|
|
266
|
+
|
|
267
|
+
void AddUserPoint (const Point<3> & p, double ref_factor = 0)
|
|
268
|
+
{ userpoints.Append (UserPoint(p,userpoints.Size()+1)); userpoints_ref_factor.Append (ref_factor); }
|
|
269
|
+
void AddUserPoint (const UserPoint up, double ref_factor = 0)
|
|
270
|
+
{ userpoints.Append (up); userpoints_ref_factor.Append (ref_factor); }
|
|
271
|
+
int GetNUserPoints () const
|
|
272
|
+
{ return userpoints.Size(); }
|
|
273
|
+
const UserPoint & GetUserPoint (int nr) const
|
|
274
|
+
{ return userpoints[nr]; }
|
|
275
|
+
double GetUserPointRefFactor (int nr) const
|
|
276
|
+
{ return userpoints_ref_factor[nr]; }
|
|
277
|
+
|
|
278
|
+
void AddIdentPoint (const Point<3> & p) const
|
|
279
|
+
{ identpoints.Append(p);}
|
|
280
|
+
int GetNIdentPoints (void) const
|
|
281
|
+
{ return identpoints.Size();}
|
|
282
|
+
const Point<3> & GetIdentPoint(int nr) const
|
|
283
|
+
{ return identpoints[nr]; }
|
|
284
|
+
void DeleteIdentPoints(void) const
|
|
285
|
+
{ identpoints.DeleteAll();}
|
|
286
|
+
|
|
287
|
+
|
|
288
|
+
// quick implementations:
|
|
289
|
+
NgArray<SingularFace*> singfaces;
|
|
290
|
+
NgArray<SingularEdge*> singedges;
|
|
291
|
+
NgArray<SingularPoint*> singpoints;
|
|
292
|
+
NgArray<Identification*> identifications;
|
|
293
|
+
|
|
294
|
+
int GetNIdentifications (void) const { return identifications.Size(); }
|
|
295
|
+
void AddIdentification (Identification * ident);
|
|
296
|
+
|
|
297
|
+
|
|
298
|
+
///
|
|
299
|
+
void CalcTriangleApproximation(double detail, double facets);
|
|
300
|
+
|
|
301
|
+
///
|
|
302
|
+
void FindIdenticSurfaces (double eps);
|
|
303
|
+
///
|
|
304
|
+
void GetSurfaceIndices (const Solid * sol,
|
|
305
|
+
const BoxSphere<3> & box,
|
|
306
|
+
NgArray<int> & locsurf) const;
|
|
307
|
+
///
|
|
308
|
+
void GetIndependentSurfaceIndices (const Solid * sol,
|
|
309
|
+
const BoxSphere<3> & box,
|
|
310
|
+
NgArray<int> & locsurf) const;
|
|
311
|
+
///
|
|
312
|
+
/*
|
|
313
|
+
void GetIndependentSurfaceIndices (const Solid * sol,
|
|
314
|
+
const Point<3> & p, Vec<3> & v,
|
|
315
|
+
NgArray<int> & locsurf) const;
|
|
316
|
+
*/
|
|
317
|
+
///
|
|
318
|
+
void GetIndependentSurfaceIndices (NgArray<int> & locsurf) const;
|
|
319
|
+
|
|
320
|
+
///
|
|
321
|
+
int GetSurfaceClassRepresentant (int si) const
|
|
322
|
+
{ return isidenticto[si]; }
|
|
323
|
+
|
|
324
|
+
///
|
|
325
|
+
const TriangleApproximation * GetTriApprox (int msnr)
|
|
326
|
+
{
|
|
327
|
+
if (msnr < triapprox.Size())
|
|
328
|
+
return triapprox[msnr];
|
|
329
|
+
return 0;
|
|
330
|
+
}
|
|
331
|
+
|
|
332
|
+
|
|
333
|
+
void IterateAllSolids (SolidIterator & it, bool only_once = false) const;
|
|
334
|
+
|
|
335
|
+
void RefineTriangleApprox (Solid * locsol,
|
|
336
|
+
int surfind,
|
|
337
|
+
const BoxSphere<3> & box,
|
|
338
|
+
double detail,
|
|
339
|
+
const TATriangle & tria,
|
|
340
|
+
TriangleApproximation & tams,
|
|
341
|
+
IndexSet & iset,
|
|
342
|
+
int level);
|
|
343
|
+
|
|
344
|
+
const Box<3> & BoundingBox () const { return boundingbox; }
|
|
345
|
+
|
|
346
|
+
void SetBoundingBox (const Box<3> & abox)
|
|
347
|
+
{
|
|
348
|
+
boundingbox = abox;
|
|
349
|
+
}
|
|
350
|
+
|
|
351
|
+
|
|
352
|
+
static void SetDefaultBoundingBox (const Box<3> & abox)
|
|
353
|
+
{
|
|
354
|
+
default_boundingbox = abox;
|
|
355
|
+
}
|
|
356
|
+
|
|
357
|
+
double MaxSize () const;
|
|
358
|
+
|
|
359
|
+
void SetIdEps(double eps){ideps = eps;}
|
|
360
|
+
double GetIdEps(void) const {return ideps;}
|
|
361
|
+
|
|
362
|
+
class BCModification {
|
|
363
|
+
public:
|
|
364
|
+
int si;
|
|
365
|
+
int tlonr;
|
|
366
|
+
int bcnr;
|
|
367
|
+
string * bcname;
|
|
368
|
+
};
|
|
369
|
+
|
|
370
|
+
NgArray<BCModification> bcmodifications;
|
|
371
|
+
|
|
372
|
+
|
|
373
|
+
map<tuple<Surface*,Surface*>, string> named_edges;
|
|
374
|
+
|
|
375
|
+
|
|
376
|
+
|
|
377
|
+
virtual int GenerateMesh (shared_ptr<Mesh> & mesh, MeshingParameters & mparam) override;
|
|
378
|
+
|
|
379
|
+
void AddSplineSurface (shared_ptr<SplineSurface> ss) { spline_surfaces.Append(ss); }
|
|
380
|
+
};
|
|
381
|
+
|
|
382
|
+
|
|
383
|
+
|
|
384
|
+
|
|
385
|
+
|
|
386
|
+
}
|
|
387
|
+
|
|
388
|
+
#endif
|
|
389
|
+
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
#ifndef _CSGPARSER_HPP
|
|
2
|
+
#define _CSGPARSER_HPP
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
namespace netgen
|
|
6
|
+
{
|
|
7
|
+
|
|
8
|
+
enum TOKEN_TYPE
|
|
9
|
+
{
|
|
10
|
+
TOK_MINUS = '-', TOK_LP = '(', OK_RP = ')', TOK_LSP = '[', TOK_RSP = ']',
|
|
11
|
+
TOK_EQU = '=', TOK_COMMA = ',', TOK_SEMICOLON = ';',
|
|
12
|
+
TOK_NUM = 100, TOK_STRING, TOK_NAMED_SOLID, TOK_PRIMITIVE,
|
|
13
|
+
TOK_OR, TOK_AND, TOK_NOT,
|
|
14
|
+
TOK_SINGULAR, TOK_EDGE, TOK_POINT, TOK_FACE, TOK_IDENTIFY, TOK_CLOSESURFACES,
|
|
15
|
+
TOK_CLOSEEDGES, TOK_PERIODIC,
|
|
16
|
+
TOK_SOLID, TOK_RECO, TOK_TLO, TOK_CURVE2D, TOK_CURVE3D, TOK_BOUNDINGBOX,
|
|
17
|
+
TOK_BOUNDARYCONDITION, TOK_BOUNDARYCONDITIONNAME,
|
|
18
|
+
TOK_DEFINE, TOK_CONSTANT,
|
|
19
|
+
TOK_END };
|
|
20
|
+
|
|
21
|
+
struct kwstruct
|
|
22
|
+
{
|
|
23
|
+
TOKEN_TYPE kw;
|
|
24
|
+
const char * name;
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
enum PRIMITIVE_TYPE
|
|
28
|
+
{
|
|
29
|
+
TOK_SPHERE = 1, TOK_CYLINDER, TOK_PLANE, TOK_ELLIPTICCYLINDER,
|
|
30
|
+
TOK_ELLIPSOID, TOK_CONE, TOK_ELLIPTICCONE,
|
|
31
|
+
TOK_ORTHOBRICK, TOK_POLYHEDRON,
|
|
32
|
+
TOK_TORUS,
|
|
33
|
+
TOK_TUBE, TOK_GENCYL, TOK_EXTRUSION, TOK_REVOLUTION,
|
|
34
|
+
|
|
35
|
+
TOK_TRANSLATE, TOK_MULTITRANSLATE, TOK_ROTATE, TOK_MULTIROTATE
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
struct primstruct
|
|
39
|
+
{
|
|
40
|
+
PRIMITIVE_TYPE kw;
|
|
41
|
+
const char * name;
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
class CSGScanner
|
|
46
|
+
{
|
|
47
|
+
TOKEN_TYPE token;
|
|
48
|
+
PRIMITIVE_TYPE prim_token;
|
|
49
|
+
double num_value;
|
|
50
|
+
string string_value;
|
|
51
|
+
|
|
52
|
+
int linenum;
|
|
53
|
+
istream * scanin;
|
|
54
|
+
|
|
55
|
+
public:
|
|
56
|
+
|
|
57
|
+
CSGScanner (istream & ascanin);
|
|
58
|
+
|
|
59
|
+
TOKEN_TYPE GetToken() const
|
|
60
|
+
{ return token; }
|
|
61
|
+
|
|
62
|
+
double GetNumValue() const
|
|
63
|
+
{ return num_value; }
|
|
64
|
+
|
|
65
|
+
const string & GetStringValue() const
|
|
66
|
+
{ return string_value; }
|
|
67
|
+
|
|
68
|
+
char GetCharValue() const
|
|
69
|
+
{ return string_value[0]; }
|
|
70
|
+
|
|
71
|
+
PRIMITIVE_TYPE GetPrimitiveToken() const
|
|
72
|
+
{ return prim_token; }
|
|
73
|
+
|
|
74
|
+
void ReadNext();
|
|
75
|
+
|
|
76
|
+
/*
|
|
77
|
+
CSGScanner & Parse (char ch);
|
|
78
|
+
CSGScanner & Parse (int & i);
|
|
79
|
+
CSGScanner & Parse (double & d);
|
|
80
|
+
CSGScanner & Parse (Point<3> & p);
|
|
81
|
+
CSGScanner & Parse (Vec<3> & p);
|
|
82
|
+
*/
|
|
83
|
+
void Error (const string & err);
|
|
84
|
+
};
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
CSGScanner & operator>> (CSGScanner & scan, char ch);
|
|
89
|
+
CSGScanner & operator>> (CSGScanner & scan, double & d);
|
|
90
|
+
CSGScanner & operator>> (CSGScanner & scan, int & i);
|
|
91
|
+
CSGScanner & operator>> (CSGScanner & scan, Point<3> & p);
|
|
92
|
+
CSGScanner & operator>> (CSGScanner & scan, Vec<3> & v);
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
|
|
100
|
+
#endif
|
|
101
|
+
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
#ifndef FILE_CURVE2D
|
|
2
|
+
#define FILE_CURVE2D
|
|
3
|
+
|
|
4
|
+
/**************************************************************************/
|
|
5
|
+
/* File: curve2d.hh */
|
|
6
|
+
/* Author: Joachim Schoeberl */
|
|
7
|
+
/* Date: 24. Jul. 96 */
|
|
8
|
+
/**************************************************************************/
|
|
9
|
+
|
|
10
|
+
namespace netgen
|
|
11
|
+
{
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
/*
|
|
15
|
+
|
|
16
|
+
2D Curve representation
|
|
17
|
+
|
|
18
|
+
*/
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
///
|
|
23
|
+
class Curve2d : public Manifold
|
|
24
|
+
{
|
|
25
|
+
public:
|
|
26
|
+
///
|
|
27
|
+
virtual void Project (Point<2> & p) const = 0;
|
|
28
|
+
///
|
|
29
|
+
virtual void NormalVector (const Point<2> & p, Vec<2> & n) const = 0;
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
///
|
|
33
|
+
class CircleCurve2d : public Curve2d
|
|
34
|
+
{
|
|
35
|
+
///
|
|
36
|
+
Point<2> center;
|
|
37
|
+
///
|
|
38
|
+
double rad;
|
|
39
|
+
public:
|
|
40
|
+
///
|
|
41
|
+
CircleCurve2d (const Point<2> & acenter, double arad);
|
|
42
|
+
///
|
|
43
|
+
virtual void Project (Point<2> & p) const;
|
|
44
|
+
///
|
|
45
|
+
virtual void NormalVector (const Point<2> & p, Vec<2> & n) const;
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
///
|
|
49
|
+
class QuadraticCurve2d : public Curve2d
|
|
50
|
+
{
|
|
51
|
+
///
|
|
52
|
+
double cxx, cyy, cxy, cx, cy, c;
|
|
53
|
+
public:
|
|
54
|
+
///
|
|
55
|
+
QuadraticCurve2d ();
|
|
56
|
+
///
|
|
57
|
+
void Read (istream & ist);
|
|
58
|
+
///
|
|
59
|
+
virtual void Project (Point<2> & p) const;
|
|
60
|
+
///
|
|
61
|
+
virtual void NormalVector (const Point<2> & p, Vec<2> & n) const;
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
#endif
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
#ifndef FILE_EDGEFLW
|
|
2
|
+
#define FILE_EDGEFLW
|
|
3
|
+
|
|
4
|
+
/**************************************************************************/
|
|
5
|
+
/* File: edgeflw.hh */
|
|
6
|
+
/* Author: Joachim Schoeberl */
|
|
7
|
+
/* Date: 01. Okt. 95 */
|
|
8
|
+
/**************************************************************************/
|
|
9
|
+
|
|
10
|
+
namespace netgen
|
|
11
|
+
{
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
/*
|
|
16
|
+
|
|
17
|
+
Edge - following function and
|
|
18
|
+
Projection to edge of implicitly given edge
|
|
19
|
+
|
|
20
|
+
*/
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
Calculates edges.
|
|
25
|
+
The edges of a solid geometry are computed. Special
|
|
26
|
+
points have to be given.
|
|
27
|
+
*/
|
|
28
|
+
extern void CalcEdges (const CSGeometry & geometry,
|
|
29
|
+
const NgArray<SpecialPoint> & specpoints,
|
|
30
|
+
double h, Mesh & mesh);
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
class EdgeCalculation
|
|
37
|
+
{
|
|
38
|
+
const CSGeometry & geometry;
|
|
39
|
+
NgArray<SpecialPoint> & specpoints;
|
|
40
|
+
Point3dTree * searchtree;
|
|
41
|
+
Point3dTree * meshpoint_tree;
|
|
42
|
+
int cntedge;
|
|
43
|
+
|
|
44
|
+
double ideps;
|
|
45
|
+
MeshingParameters & mparam;
|
|
46
|
+
|
|
47
|
+
public:
|
|
48
|
+
EdgeCalculation (const CSGeometry & ageometry,
|
|
49
|
+
NgArray<SpecialPoint> & aspecpoints,
|
|
50
|
+
MeshingParameters & amparam);
|
|
51
|
+
|
|
52
|
+
~EdgeCalculation();
|
|
53
|
+
|
|
54
|
+
void SetIdEps(const double epsin) {ideps = epsin;}
|
|
55
|
+
|
|
56
|
+
void Calc(double h, Mesh & mesh);
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
private:
|
|
60
|
+
void CalcEdges1 (double h, Mesh & mesh);
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
void FollowEdge (int pi1, int & ep, int & pos,
|
|
64
|
+
// const NgArray<SpecialPoint> & hsp,
|
|
65
|
+
const NgArray<int> & hsp,
|
|
66
|
+
double h, const Mesh & mesh,
|
|
67
|
+
NgArray<Point<3> > & edgepoints,
|
|
68
|
+
NgArray<double> & curvelength);
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
void AnalyzeEdge (int s1, int s2, int s1_rep, int s2_rep, int pos, int layer,
|
|
72
|
+
const NgArray<Point<3> > & edgepoints,
|
|
73
|
+
NgArray<Segment> & refedges,
|
|
74
|
+
NgArray<bool> & refedgesinv);
|
|
75
|
+
|
|
76
|
+
void StoreEdge (const NgArray<Segment> & refedges,
|
|
77
|
+
const NgArray<bool> & refedgesinv,
|
|
78
|
+
const NgArray<Point<3> > & edgepoints,
|
|
79
|
+
const NgArray<double> & curvelength,
|
|
80
|
+
int layer,
|
|
81
|
+
Mesh & mesh);
|
|
82
|
+
|
|
83
|
+
void StoreShortEdge (const NgArray<Segment> & refedges,
|
|
84
|
+
const NgArray<bool> & refedgesinv,
|
|
85
|
+
const NgArray<Point<3> > & edgepoints,
|
|
86
|
+
const NgArray<double> & curvelength,
|
|
87
|
+
int layer,
|
|
88
|
+
Mesh & mesh);
|
|
89
|
+
|
|
90
|
+
void CopyEdge (const NgArray<Segment> & refedges,
|
|
91
|
+
const NgArray<bool> & refedgesinv,
|
|
92
|
+
int copyfromedge,
|
|
93
|
+
const Point<3> & fromstart, const Point<3> & fromend,
|
|
94
|
+
const Point<3> & tostart, const Point<3> & toend,
|
|
95
|
+
int copyedgeidentification,
|
|
96
|
+
int layer,
|
|
97
|
+
Mesh & mesh);
|
|
98
|
+
|
|
99
|
+
|
|
100
|
+
void SplitEqualOneSegEdges (Mesh & mesh);
|
|
101
|
+
void FindClosedSurfaces (double h, Mesh & mesh);
|
|
102
|
+
|
|
103
|
+
|
|
104
|
+
public:
|
|
105
|
+
bool point_on_edge_problem;
|
|
106
|
+
|
|
107
|
+
};
|
|
108
|
+
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
|
|
112
|
+
#endif
|