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,62 @@
|
|
|
1
|
+
#ifndef FILE_MSGHANDLER
|
|
2
|
+
#define FILE_MSGHANDLER
|
|
3
|
+
|
|
4
|
+
/**************************************************************************/
|
|
5
|
+
/* File: msghandler.hh */
|
|
6
|
+
/* Author: Johannes Gerstmayr */
|
|
7
|
+
/* Date: 20. Nov. 99 */
|
|
8
|
+
/**************************************************************************/
|
|
9
|
+
|
|
10
|
+
#include <general/mystring.hpp>
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
namespace netgen
|
|
14
|
+
{
|
|
15
|
+
|
|
16
|
+
extern void PrintDot(char ch = '.');
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
//Message Pipeline:
|
|
20
|
+
|
|
21
|
+
//importance: importance of message: 1=very important, 3=middle, 5=low, 7=unimportant
|
|
22
|
+
extern DLL_HEADER void PrintMessage(int importance,
|
|
23
|
+
const MyStr& s1, const MyStr& s2=MyStr());
|
|
24
|
+
extern DLL_HEADER void PrintMessage(int importance,
|
|
25
|
+
const MyStr& s1, const MyStr& s2, const MyStr& s3, const MyStr& s4=MyStr());
|
|
26
|
+
extern DLL_HEADER void PrintMessage(int importance,
|
|
27
|
+
const MyStr& s1, const MyStr& s2, const MyStr& s3, const MyStr& s4,
|
|
28
|
+
const MyStr& s5, const MyStr& s6=MyStr(), const MyStr& s7=MyStr(), const MyStr& s8=MyStr());
|
|
29
|
+
|
|
30
|
+
// CR without line-feed
|
|
31
|
+
extern DLL_HEADER void PrintMessageCR(int importance,
|
|
32
|
+
const MyStr& s1, const MyStr& s2="", const MyStr& s3="", const MyStr& s4="",
|
|
33
|
+
const MyStr& s5="", const MyStr& s6="", const MyStr& s7="", const MyStr& s8="");
|
|
34
|
+
extern DLL_HEADER void PrintFnStart(const MyStr& s1, const MyStr& s2="", const MyStr& s3="", const MyStr& s4="",
|
|
35
|
+
const MyStr& s5="", const MyStr& s6="", const MyStr& s7="", const MyStr& s8="");
|
|
36
|
+
extern DLL_HEADER void PrintWarning(const MyStr& s1, const MyStr& s2="", const MyStr& s3="", const MyStr& s4="",
|
|
37
|
+
const MyStr& s5="", const MyStr& s6="", const MyStr& s7="", const MyStr& s8="");
|
|
38
|
+
extern DLL_HEADER void PrintError(const MyStr& s1, const MyStr& s2="", const MyStr& s3="", const MyStr& s4="",
|
|
39
|
+
const MyStr& s5="", const MyStr& s6="", const MyStr& s7="", const MyStr& s8="");
|
|
40
|
+
extern DLL_HEADER void PrintFileError(const MyStr& s1, const MyStr& s2="", const MyStr& s3="", const MyStr& s4="",
|
|
41
|
+
const MyStr& s5="", const MyStr& s6="", const MyStr& s7="", const MyStr& s8="");
|
|
42
|
+
extern DLL_HEADER void PrintSysError(const MyStr& s1, const MyStr& s2="", const MyStr& s3="", const MyStr& s4="",
|
|
43
|
+
const MyStr& s5="", const MyStr& s6="", const MyStr& s7="", const MyStr& s8="");
|
|
44
|
+
extern DLL_HEADER void PrintUserError(const MyStr& s1, const MyStr& s2="", const MyStr& s3="", const MyStr& s4="",
|
|
45
|
+
const MyStr& s5="", const MyStr& s6="", const MyStr& s7="", const MyStr& s8="");
|
|
46
|
+
extern DLL_HEADER void PrintTime(const MyStr& s1="", const MyStr& s2="", const MyStr& s3="", const MyStr& s4="",
|
|
47
|
+
const MyStr& s5="", const MyStr& s6="", const MyStr& s7="", const MyStr& s8="");
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
inline void PushStatusF(const std::string& s)
|
|
53
|
+
{
|
|
54
|
+
PushStatus (s);
|
|
55
|
+
PrintFnStart(s);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
#endif
|
|
62
|
+
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
#ifndef FILE_PARALLELTOP
|
|
2
|
+
#define FILE_PARALLELTOP
|
|
3
|
+
|
|
4
|
+
namespace netgen
|
|
5
|
+
{
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class ParallelMeshTopology
|
|
9
|
+
{
|
|
10
|
+
const Mesh & mesh;
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
mapping from local to distant vertex number
|
|
14
|
+
each row of the table corresponds to one vertex
|
|
15
|
+
each row contains a list of pairs (procnr, dist_vnum)
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
DynamicTable<int> loc2distvert;
|
|
19
|
+
DynamicTable<int> loc2distedge, loc2distface;
|
|
20
|
+
|
|
21
|
+
Array<int> glob_vert;
|
|
22
|
+
|
|
23
|
+
// will get rid of them
|
|
24
|
+
NgArray<int> glob_edge, glob_face;
|
|
25
|
+
NgArray<int> glob_el, glob_surfel, glob_segm;
|
|
26
|
+
|
|
27
|
+
bool is_updated;
|
|
28
|
+
|
|
29
|
+
public:
|
|
30
|
+
|
|
31
|
+
ParallelMeshTopology (const Mesh & amesh);
|
|
32
|
+
~ParallelMeshTopology ();
|
|
33
|
+
|
|
34
|
+
void Reset ();
|
|
35
|
+
void Print() const;
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
void UpdateCoarseGrid();
|
|
39
|
+
// [[deprecated("should not need it anymore")]]
|
|
40
|
+
// void UpdateCoarseGridGlobal();
|
|
41
|
+
void IdentifyVerticesAfterRefinement();
|
|
42
|
+
void EnumeratePointsGlobally ();
|
|
43
|
+
|
|
44
|
+
void AddDistantProc (PointIndex pi, int proc) { loc2distvert.AddUnique (pi-IndexBASE<PointIndex>(), proc); }
|
|
45
|
+
void AddDistantFaceProc (int edge, int proc) { loc2distface.AddUnique (edge, proc); }
|
|
46
|
+
void AddDistantEdgeProc (int face, int proc) { loc2distedge.AddUnique (face, proc); }
|
|
47
|
+
|
|
48
|
+
FlatArray<int> GetDistantProcs (PointIndex pi) const { return loc2distvert[pi-IndexBASE<PointIndex>()]; }
|
|
49
|
+
FlatArray<int> GetDistantFaceProcs (int locnum) const { return loc2distface[locnum]; }
|
|
50
|
+
FlatArray<int> GetDistantEdgeProcs (int locnum) const { return loc2distedge[locnum]; }
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
auto & L2G (PointIndex pi) { return glob_vert[pi-IndexBASE<PointIndex>()]; }
|
|
55
|
+
auto L2G (PointIndex pi) const { return glob_vert[pi-IndexBASE<PointIndex>()]; }
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
/// set number of local vertices, reset sizes of loc2dist_vert, isexchangevert...
|
|
59
|
+
void SetNV (int anv);
|
|
60
|
+
void SetNV_Loc2Glob (int anv);
|
|
61
|
+
void SetNE (int ane);
|
|
62
|
+
void SetNSE (int anse);
|
|
63
|
+
void SetNSegm (int anseg);
|
|
64
|
+
|
|
65
|
+
[[deprecated("Use AddDistantFaceProc instead!")]]
|
|
66
|
+
void SetDistantFaceNum (int dest, int locnum) { loc2distface.AddUnique (locnum-1, dest); }
|
|
67
|
+
[[deprecated("Use AddDistantProc instead!")]]
|
|
68
|
+
void SetDistantPNum (int dest, int locnum) { loc2distvert.AddUnique (locnum-1, dest); }
|
|
69
|
+
[[deprecated("Use AddDistantEdgeProc instead!")]]
|
|
70
|
+
void SetDistantEdgeNum (int dest, int locnum) { loc2distedge.AddUnique (locnum-1, dest); }
|
|
71
|
+
|
|
72
|
+
[[deprecated("Use GetDistantFaceProcx instead!")]]
|
|
73
|
+
FlatArray<int> GetDistantFaceNums (int locnum) const { return loc2distface[locnum]; }
|
|
74
|
+
[[deprecated("Use GetDistantEdgeProcx instead!")]]
|
|
75
|
+
FlatArray<int> GetDistantEdgeNums (int locnum) const { return loc2distedge[locnum]; }
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
[[deprecated("Use L2G(pi) instead!")]]
|
|
80
|
+
void SetLoc2Glob_Vert (int locnum, int globnum) { glob_vert[locnum-1] = globnum; }
|
|
81
|
+
[[deprecated("Try to avoid global enumration!")]]
|
|
82
|
+
void SetLoc2Glob_Edge (int locnum, int globnum) { glob_edge[locnum-1] = globnum; }
|
|
83
|
+
[[deprecated("Try to avoid global enumration!")]]
|
|
84
|
+
void SetLoc2Glob_Face (int locnum, int globnum) { glob_face[locnum-1] = globnum; }
|
|
85
|
+
// [[deprecated("Try to avoid global enumration!")]]
|
|
86
|
+
void SetLoc2Glob_VolEl (int locnum, int globnum) { glob_el[locnum-1] = globnum; }
|
|
87
|
+
// [[deprecated("Try to avoid global enumration!")]]
|
|
88
|
+
void SetLoc2Glob_SurfEl (int locnum, int globnum) { glob_surfel[locnum-1] = globnum; }
|
|
89
|
+
// [[deprecated("Try to avoid global enumration!")]]
|
|
90
|
+
void SetLoc2Glob_Segm (int locnum, int globnum) { glob_segm[locnum-1] = globnum; }
|
|
91
|
+
|
|
92
|
+
// [[deprecated("Try to avoid global enumration!")]]
|
|
93
|
+
int GetGlobalPNum (PointIndex locnum) const { return glob_vert[locnum-IndexBASE<PointIndex>()]; }
|
|
94
|
+
[[deprecated("Try to avoid global enumration!")]]
|
|
95
|
+
int GetGlobalEdgeNum (int locnum) const { return glob_edge[locnum-1]; }
|
|
96
|
+
[[deprecated("Try to avoid global enumration!")]]
|
|
97
|
+
int GetGlobalFaceNum (int locnum) const { return glob_face[locnum-1]; }
|
|
98
|
+
[[deprecated("Try to avoid global enumration!")]]
|
|
99
|
+
int GetGlobalElNum (int locnum) const { return glob_el[locnum-1]; }
|
|
100
|
+
[[deprecated("Try to avoid global enumration!")]]
|
|
101
|
+
int GetGlobalSElNum (int locnum) const { return glob_surfel[locnum-1]; }
|
|
102
|
+
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
// [[deprecated("Use GetDistantPNums(locnum).Size() instead!")]]
|
|
106
|
+
int GetNDistantPNums (int locpnum) const { return loc2distvert[locpnum-1].Size(); }
|
|
107
|
+
|
|
108
|
+
// [[deprecated("Use GetDistantFaceNums(locnum).Size() instead!")]]
|
|
109
|
+
int GetNDistantFaceNums (int locfacenum) const { return loc2distface[locfacenum-1].Size(); }
|
|
110
|
+
|
|
111
|
+
// [[deprecated("Use GetDistantEdgeNums(locnum).Size() instead!")]]
|
|
112
|
+
int GetNDistantEdgeNums ( int locedgenum) const { return loc2distedge[locedgenum-1].Size(); }
|
|
113
|
+
|
|
114
|
+
// [[deprecated("Use GetDistantPNums(locnum) -> FlatArray instead!")]]
|
|
115
|
+
void GetDistantPNums (int locpnum, int * distpnums ) const
|
|
116
|
+
{
|
|
117
|
+
for (int i = 0; i < loc2distvert[locpnum-1].Size(); i++ )
|
|
118
|
+
distpnums[i] = loc2distvert[locpnum-1][i];
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
// [[deprecated("Use GetDistantFaceNums(locnum) -> FlatArray instead!")]]
|
|
122
|
+
void GetDistantFaceNums (int locfacenum, int * distfacenums ) const
|
|
123
|
+
{
|
|
124
|
+
for ( int i = 0; i < loc2distface[locfacenum-1].Size(); i++ )
|
|
125
|
+
distfacenums[i] = loc2distface[locfacenum-1][i];
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
// [[deprecated("Use GetDistantFaceNums(locnum) -> FlatArray instead!")]]
|
|
129
|
+
void GetDistantFaceNums (int locfacenum, NgArray<int> & distfacenums ) const
|
|
130
|
+
{
|
|
131
|
+
// distfacenums = loc2distface[locfacenum-1];
|
|
132
|
+
auto loc = loc2distface[locfacenum-1];
|
|
133
|
+
distfacenums.SetSize (loc.Size());
|
|
134
|
+
for (int i = 0; i < loc.Size(); i++)
|
|
135
|
+
distfacenums[i] = loc[i];
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
// [[deprecated("Use GetDistantEdgeNums(locnum) -> FlatArray instead!")]]
|
|
139
|
+
void GetDistantEdgeNums (int locedgenum, int * distedgenums ) const
|
|
140
|
+
{
|
|
141
|
+
for (int i = 0; i < loc2distedge[locedgenum-1].Size(); i++ )
|
|
142
|
+
distedgenums[i] = loc2distedge[locedgenum-1][i];
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
// [[deprecated("Use GetDistantEdgeNums(locnum) -> FlatArray instead!")]]
|
|
146
|
+
void GetDistantEdgeNums (int locedgenum, NgArray<int> & distedgenums ) const
|
|
147
|
+
{
|
|
148
|
+
// distedgenums = loc2distedge[locedgenum-1];
|
|
149
|
+
auto loc = loc2distedge[locedgenum-1];
|
|
150
|
+
distedgenums.SetSize (loc.Size());
|
|
151
|
+
for (int i = 0; i < loc.Size(); i++)
|
|
152
|
+
distedgenums[i] = loc[i];
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
[[deprecated("Use GetDistantProcs(..)!")]]
|
|
156
|
+
FlatArray<int> GetDistantPNums (int locnum) const { return loc2distvert[locnum]; }
|
|
157
|
+
|
|
158
|
+
|
|
159
|
+
|
|
160
|
+
[[deprecated("Use GetDistantProcs(..).Contains instead!")]]
|
|
161
|
+
bool IsExchangeVert (int dest, int vnum) const
|
|
162
|
+
{
|
|
163
|
+
return loc2distvert[vnum-1].Contains (dest);
|
|
164
|
+
}
|
|
165
|
+
};
|
|
166
|
+
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
|
|
170
|
+
|
|
171
|
+
|
|
172
|
+
#endif
|
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
#ifndef NETGEN_MESHING_PYTHON_MESH_HPP
|
|
2
|
+
#define NETGEN_MESHING_PYTHON_MESH_HPP
|
|
3
|
+
|
|
4
|
+
#include <core/python_ngcore.hpp>
|
|
5
|
+
|
|
6
|
+
#include "meshing.hpp"
|
|
7
|
+
|
|
8
|
+
namespace netgen
|
|
9
|
+
{
|
|
10
|
+
// TODO: Clarify a lot of these parameters
|
|
11
|
+
static string meshingparameter_description = R"delimiter(
|
|
12
|
+
Meshing Parameters
|
|
13
|
+
-------------------
|
|
14
|
+
|
|
15
|
+
maxh: float = 1e10
|
|
16
|
+
Global upper bound for mesh size.
|
|
17
|
+
|
|
18
|
+
grading: float = 0.3
|
|
19
|
+
Mesh grading how fast the local mesh size can change.
|
|
20
|
+
|
|
21
|
+
meshsizefilename: str = None
|
|
22
|
+
Load meshsize from file. Can set local mesh size for points
|
|
23
|
+
and along edges. File must have the format:
|
|
24
|
+
|
|
25
|
+
nr_points
|
|
26
|
+
x1, y1, z1, meshsize
|
|
27
|
+
x2, y2, z2, meshsize
|
|
28
|
+
...
|
|
29
|
+
xn, yn, zn, meshsize
|
|
30
|
+
|
|
31
|
+
nr_edges
|
|
32
|
+
x11, y11, z11, x12, y12, z12, meshsize
|
|
33
|
+
...
|
|
34
|
+
xn1, yn1, zn1, xn2, yn2, zn2, meshsize
|
|
35
|
+
|
|
36
|
+
segmentsperedge: float = 1.
|
|
37
|
+
Minimal number of segments per edge.
|
|
38
|
+
|
|
39
|
+
quad_dominated: bool = False
|
|
40
|
+
Quad-dominated surface meshing.
|
|
41
|
+
|
|
42
|
+
blockfill: bool = True
|
|
43
|
+
Do fast blockfilling.
|
|
44
|
+
|
|
45
|
+
filldist: float = 0.1
|
|
46
|
+
Block fill up to distance
|
|
47
|
+
|
|
48
|
+
delaunay: bool = True
|
|
49
|
+
Use delaunay meshing.
|
|
50
|
+
|
|
51
|
+
delaunay2d : bool = True
|
|
52
|
+
Use delaunay meshing for 2d geometries.
|
|
53
|
+
|
|
54
|
+
Optimization Parameters
|
|
55
|
+
-----------------------
|
|
56
|
+
|
|
57
|
+
optimize3d: str = "cmdmustm"
|
|
58
|
+
3d optimization strategy:
|
|
59
|
+
m .. move nodes
|
|
60
|
+
M .. move nodes, cheap functional
|
|
61
|
+
s .. swap faces
|
|
62
|
+
c .. combine elements
|
|
63
|
+
d .. divide elements
|
|
64
|
+
p .. plot, no pause
|
|
65
|
+
P .. plot, Pause
|
|
66
|
+
h .. Histogramm, no pause
|
|
67
|
+
H .. Histogramm, pause
|
|
68
|
+
|
|
69
|
+
optsteps3d: int = 3
|
|
70
|
+
Number of 3d optimization steps.
|
|
71
|
+
|
|
72
|
+
optimize2d: str = "smcmSmcmSmcm"
|
|
73
|
+
2d optimization strategy:
|
|
74
|
+
s .. swap, opt 6 lines/node
|
|
75
|
+
S .. swap, optimal elements
|
|
76
|
+
m .. move nodes
|
|
77
|
+
p .. plot, no pause
|
|
78
|
+
P .. plot, pause
|
|
79
|
+
c .. combine
|
|
80
|
+
|
|
81
|
+
optsteps2d: int = 3
|
|
82
|
+
Number of 2d optimization steps.
|
|
83
|
+
|
|
84
|
+
elsizeweight: float = 0.2
|
|
85
|
+
Weight of element size w.r.t. element shape in optimization.
|
|
86
|
+
|
|
87
|
+
)delimiter";
|
|
88
|
+
|
|
89
|
+
inline void CreateMPfromKwargs(MeshingParameters& mp, py::kwargs kwargs, bool throw_if_not_all_parsed=true)
|
|
90
|
+
{
|
|
91
|
+
if(kwargs.contains("optimize3d"))
|
|
92
|
+
mp.optimize3d = py::cast<string>(kwargs.attr("pop")("optimize3d"));
|
|
93
|
+
if(kwargs.contains("optsteps3d"))
|
|
94
|
+
mp.optsteps3d = py::cast<int>(kwargs.attr("pop")("optsteps3d"));
|
|
95
|
+
if(kwargs.contains("optimize2d"))
|
|
96
|
+
mp.optimize2d = py::cast<string>(kwargs.attr("pop")("optimize2d"));
|
|
97
|
+
if(kwargs.contains("optsteps2d"))
|
|
98
|
+
mp.optsteps2d = py::cast<int>(kwargs.attr("pop")("optsteps2d"));
|
|
99
|
+
if(kwargs.contains("opterrpow"))
|
|
100
|
+
mp.opterrpow = py::cast<double>(kwargs.attr("pop")("opterrpow"));
|
|
101
|
+
if(kwargs.contains("blockfill"))
|
|
102
|
+
mp.blockfill = py::cast<bool>(kwargs.attr("pop")("blockfill"));
|
|
103
|
+
if(kwargs.contains("filldist"))
|
|
104
|
+
mp.filldist = py::cast<double>(kwargs.attr("pop")("filldist"));
|
|
105
|
+
if(kwargs.contains("safety"))
|
|
106
|
+
mp.safety = py::cast<double>(kwargs.attr("pop")("safety"));
|
|
107
|
+
if(kwargs.contains("relinnersafety"))
|
|
108
|
+
mp.relinnersafety = py::cast<double>(kwargs.attr("pop")("relinnersafety"));
|
|
109
|
+
if(kwargs.contains("uselocalh"))
|
|
110
|
+
mp.uselocalh = py::cast<bool>(kwargs.attr("pop")("uselocalh"));
|
|
111
|
+
if(kwargs.contains("grading"))
|
|
112
|
+
mp.grading = py::cast<double>(kwargs.attr("pop")("grading"));
|
|
113
|
+
if(kwargs.contains("delaunay"))
|
|
114
|
+
mp.delaunay = py::cast<bool>(kwargs.attr("pop")("delaunay"));
|
|
115
|
+
if(kwargs.contains("delaunay2d"))
|
|
116
|
+
mp.delaunay2d = py::cast<bool>(kwargs.attr("pop")("delaunay2d"));
|
|
117
|
+
if(kwargs.contains("maxh"))
|
|
118
|
+
mp.maxh = py::cast<double>(kwargs.attr("pop")("maxh"));
|
|
119
|
+
if(kwargs.contains("minh"))
|
|
120
|
+
mp.minh = py::cast<double>(kwargs.attr("pop")("minh"));
|
|
121
|
+
if(kwargs.contains("meshsizefilename"))
|
|
122
|
+
mp.meshsizefilename = py::cast<string>(kwargs.attr("pop")("meshsizefilename"));
|
|
123
|
+
if(kwargs.contains("startinsurface"))
|
|
124
|
+
mp.startinsurface = py::cast<bool>(kwargs.attr("pop")("startinsurface"));
|
|
125
|
+
if(kwargs.contains("checkoverlap"))
|
|
126
|
+
mp.checkoverlap = py::cast<bool>(kwargs.attr("pop")("checkoverlap"));
|
|
127
|
+
if(kwargs.contains("checkoverlappingboundary"))
|
|
128
|
+
mp.checkoverlappingboundary = py::cast<bool>(kwargs.attr("pop")("checkoverlappingboundary"));
|
|
129
|
+
if(kwargs.contains("checkchartboundary"))
|
|
130
|
+
mp.checkchartboundary = py::cast<bool>(kwargs.attr("pop")("checkchartboundary"));
|
|
131
|
+
if(kwargs.contains("curvaturesafety"))
|
|
132
|
+
mp.curvaturesafety = py::cast<double>(kwargs.attr("pop")("curvaturesafety"));
|
|
133
|
+
if(kwargs.contains("segmentsperedge"))
|
|
134
|
+
mp.segmentsperedge = py::cast<double>(kwargs.attr("pop")("segmentsperedge"));
|
|
135
|
+
if(kwargs.contains("parthread"))
|
|
136
|
+
mp.parthread = py::cast<bool>(kwargs.attr("pop")("parthread"));
|
|
137
|
+
if(kwargs.contains("elsizeweight"))
|
|
138
|
+
mp.elsizeweight = py::cast<double>(kwargs.attr("pop")("elsizeweight"));
|
|
139
|
+
if(kwargs.contains("perfstepsstart"))
|
|
140
|
+
mp.perfstepsstart = py::cast<int>(kwargs.attr("pop")("perfstepsstart"));
|
|
141
|
+
if(kwargs.contains("perfstepsend"))
|
|
142
|
+
mp.perfstepsend = py::cast<int>(kwargs.attr("pop")("perfstepsend"));
|
|
143
|
+
if(kwargs.contains("giveuptol2d"))
|
|
144
|
+
mp.giveuptol2d = py::cast<int>(kwargs.attr("pop")("giveuptol2d"));
|
|
145
|
+
if(kwargs.contains("giveuptol"))
|
|
146
|
+
mp.giveuptol = py::cast<int>(kwargs.attr("pop")("giveuptol"));
|
|
147
|
+
if(kwargs.contains("giveuptolopenquads"))
|
|
148
|
+
mp.giveuptolopenquads = py::cast<int>(kwargs.attr("pop")("giveuptolopenquads"));
|
|
149
|
+
if(kwargs.contains("maxoutersteps"))
|
|
150
|
+
mp.maxoutersteps = py::cast<int>(kwargs.attr("pop")("maxoutersteps"));
|
|
151
|
+
if(kwargs.contains("starshapeclass"))
|
|
152
|
+
mp.starshapeclass = py::cast<int>(kwargs.attr("pop")("starshapeclass"));
|
|
153
|
+
if(kwargs.contains("baseelnp"))
|
|
154
|
+
mp.baseelnp = py::cast<int>(kwargs.attr("pop")("baseelnp"));
|
|
155
|
+
if(kwargs.contains("sloppy"))
|
|
156
|
+
mp.sloppy = py::cast<int>(kwargs.attr("pop")("sloppy"));
|
|
157
|
+
if(kwargs.contains("badellimit"))
|
|
158
|
+
mp.badellimit = py::cast<double>(kwargs.attr("pop")("badellimit"));
|
|
159
|
+
if(kwargs.contains("check_impossible"))
|
|
160
|
+
mp.check_impossible = py::cast<bool>(kwargs.attr("pop")("check_impossible"));
|
|
161
|
+
if(kwargs.contains("only3D_domain_nr"))
|
|
162
|
+
mp.only3D_domain_nr = py::cast<int>(kwargs.attr("pop")("only3D_domain_nr"));
|
|
163
|
+
if(kwargs.contains("secondorder"))
|
|
164
|
+
mp.secondorder = py::cast<bool>(kwargs.attr("pop")("secondorder"));
|
|
165
|
+
if(kwargs.contains("elementorder"))
|
|
166
|
+
mp.elementorder = py::cast<int>(kwargs.attr("pop")("elementorder"));
|
|
167
|
+
if(kwargs.contains("quad"))
|
|
168
|
+
{
|
|
169
|
+
cout << "WARNING: Meshing parameter 'quad' is deprecated, use 'quad_dominated' instead!" << endl;
|
|
170
|
+
mp.quad = py::cast<bool>(kwargs.attr("pop")("quad"));
|
|
171
|
+
}
|
|
172
|
+
if(kwargs.contains("quad_dominated"))
|
|
173
|
+
mp.quad = py::cast<bool>(kwargs.attr("pop")("quad_dominated"));
|
|
174
|
+
if(kwargs.contains("try_hexes"))
|
|
175
|
+
mp.try_hexes = py::cast<bool>(kwargs.attr("pop")("try_hexes"));
|
|
176
|
+
if(kwargs.contains("inverttets"))
|
|
177
|
+
mp.inverttets = py::cast<bool>(kwargs.attr("pop")("inverttets"));
|
|
178
|
+
if(kwargs.contains("inverttrigs"))
|
|
179
|
+
mp.inverttrigs = py::cast<bool>(kwargs.attr("pop")("inverttrigs"));
|
|
180
|
+
if(kwargs.contains("autozrefine"))
|
|
181
|
+
mp.autozrefine = py::cast<bool>(kwargs.attr("pop")("autozrefine"));
|
|
182
|
+
if(kwargs.contains("parallel_meshing"))
|
|
183
|
+
mp.parallel_meshing = py::cast<bool>(kwargs.attr("pop")("parallel_meshing"));
|
|
184
|
+
if(kwargs.contains("nthreads"))
|
|
185
|
+
mp.nthreads = py::cast<int>(kwargs.attr("pop")("nthreads"));
|
|
186
|
+
if(kwargs.contains("closeedgefac"))
|
|
187
|
+
mp.closeedgefac = py::cast<optional<double>>(kwargs.attr("pop")("closeedgefac"));
|
|
188
|
+
|
|
189
|
+
if(kwargs.contains("boundary_layers"))
|
|
190
|
+
{
|
|
191
|
+
auto layers = py::list(kwargs.attr("pop")("boundary_layers"));
|
|
192
|
+
for(auto layer : layers)
|
|
193
|
+
mp.boundary_layers.Append(py::cast<BoundaryLayerParameters>(layer));
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
if(kwargs.size())
|
|
197
|
+
{
|
|
198
|
+
if(throw_if_not_all_parsed)
|
|
199
|
+
throw Exception(string("Not all kwargs given to GenerateMesh could be parsed:") + string(py::str(kwargs)));
|
|
200
|
+
mp.geometrySpecificParameters = CreateFlagsFromKwArgs(kwargs);
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
} // namespace netgen
|
|
204
|
+
|
|
205
|
+
#endif // NETGEN_MESHING_PYTHON_MESH_HPP
|
|
206
|
+
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
#ifndef FILE_NETRULE
|
|
2
|
+
#define FILE_NETRULE
|
|
3
|
+
|
|
4
|
+
namespace netgen
|
|
5
|
+
{
|
|
6
|
+
///
|
|
7
|
+
class netrule
|
|
8
|
+
{
|
|
9
|
+
private:
|
|
10
|
+
///
|
|
11
|
+
typedef struct tf
|
|
12
|
+
{ float f1, f2, f3; } threefloat;
|
|
13
|
+
|
|
14
|
+
class threeint
|
|
15
|
+
{
|
|
16
|
+
public: int i1, i2, i3;
|
|
17
|
+
threeint() { }
|
|
18
|
+
threeint(int ai1, int ai2, int ai3)
|
|
19
|
+
{ i1 = ai1; i2 = ai2; i3 = ai3; }
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
///
|
|
24
|
+
int quality;
|
|
25
|
+
///
|
|
26
|
+
string name;
|
|
27
|
+
///
|
|
28
|
+
NgArray<Point<2>> points;
|
|
29
|
+
///
|
|
30
|
+
NgArray<INDEX_2> lines;
|
|
31
|
+
///
|
|
32
|
+
NgArray<Point<2>> freezone, freezonelimit;
|
|
33
|
+
///
|
|
34
|
+
NgArray<NgArray<Point<2>>> freezone_i;
|
|
35
|
+
///
|
|
36
|
+
NgArray<Point<2>> transfreezone;
|
|
37
|
+
|
|
38
|
+
///
|
|
39
|
+
NgArray<int> dellines;
|
|
40
|
+
///
|
|
41
|
+
NgArray<Element2d> elements;
|
|
42
|
+
///
|
|
43
|
+
NgArray<threefloat> tolerances, linetolerances;
|
|
44
|
+
///
|
|
45
|
+
NgArray<threeint> orientations;
|
|
46
|
+
///
|
|
47
|
+
DenseMatrix oldutonewu, oldutofreearea, oldutofreearealimit;
|
|
48
|
+
///
|
|
49
|
+
NgArray<DenseMatrix> oldutofreearea_i;
|
|
50
|
+
///
|
|
51
|
+
MatrixFixWidth<3> freesetinequ;
|
|
52
|
+
|
|
53
|
+
///
|
|
54
|
+
NgArray<Vec<2>> linevecs;
|
|
55
|
+
|
|
56
|
+
///
|
|
57
|
+
int noldp, noldl;
|
|
58
|
+
///
|
|
59
|
+
float fzminx, fzmaxx, fzminy, fzmaxy;
|
|
60
|
+
|
|
61
|
+
/// topological distance of line to base element
|
|
62
|
+
NgArray<int> lnearness;
|
|
63
|
+
|
|
64
|
+
public:
|
|
65
|
+
|
|
66
|
+
///
|
|
67
|
+
netrule ();
|
|
68
|
+
///
|
|
69
|
+
~netrule();
|
|
70
|
+
|
|
71
|
+
///
|
|
72
|
+
int GetNP () const { return points.Size(); }
|
|
73
|
+
///
|
|
74
|
+
int GetNL () const { return lines.Size(); }
|
|
75
|
+
///
|
|
76
|
+
int GetNE () const { return elements.Size(); }
|
|
77
|
+
///
|
|
78
|
+
int GetNOldP () const { return noldp; }
|
|
79
|
+
///
|
|
80
|
+
int GetNOldL () const { return noldl; }
|
|
81
|
+
///
|
|
82
|
+
int GetNDelL () const { return dellines.Size(); }
|
|
83
|
+
///
|
|
84
|
+
int GetNOrientations () const { return orientations.Size(); }
|
|
85
|
+
///
|
|
86
|
+
int GetQuality () const { return quality; }
|
|
87
|
+
///
|
|
88
|
+
int GetLNearness (int li) const { return lnearness.Get(li); }
|
|
89
|
+
|
|
90
|
+
///
|
|
91
|
+
const Point<2>& GetPoint (int i) const { return points.Get(i); }
|
|
92
|
+
///
|
|
93
|
+
const INDEX_2 & GetLine (int i) const { return lines.Get(i); }
|
|
94
|
+
///
|
|
95
|
+
const Element2d & GetElement (int i) const { return elements.Get(i); }
|
|
96
|
+
///
|
|
97
|
+
const threeint & GetOrientation (int i) const { return orientations.Get(i); }
|
|
98
|
+
///
|
|
99
|
+
int GetDelLine (int i) const { return dellines.Get(i); }
|
|
100
|
+
///
|
|
101
|
+
const NgArray<int> & GetDelLines() const { return dellines; }
|
|
102
|
+
///
|
|
103
|
+
void GetFreeZone (NgArray<Point<2>> & afreearea);
|
|
104
|
+
///
|
|
105
|
+
|
|
106
|
+
double CalcPointDist (int pi, const Point<2> & p) const
|
|
107
|
+
{
|
|
108
|
+
double dx = p[0] - points.Get(pi)[0];
|
|
109
|
+
double dy = p[1] - points.Get(pi)[1];
|
|
110
|
+
const threefloat * tfp = &tolerances.Get(pi);
|
|
111
|
+
return tfp->f1 * dx * dx + tfp->f2 * dx * dy + tfp->f3 * dy * dy;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
///
|
|
115
|
+
float CalcLineError (int li, const Vec<2>& v) const;
|
|
116
|
+
|
|
117
|
+
///
|
|
118
|
+
void SetFreeZoneTransformation (const Vector & u, int tolclass);
|
|
119
|
+
|
|
120
|
+
///
|
|
121
|
+
bool IsInFreeZone (const Point<2> & p) const
|
|
122
|
+
{
|
|
123
|
+
if (p[0] < fzminx || p[0] > fzmaxx ||
|
|
124
|
+
p[1] < fzminy || p[1] > fzmaxy) return 0;
|
|
125
|
+
|
|
126
|
+
for (int i = 0; i < transfreezone.Size(); i++)
|
|
127
|
+
{
|
|
128
|
+
if (freesetinequ(i, 0) * p[0] +
|
|
129
|
+
freesetinequ(i, 1) * p[1] +
|
|
130
|
+
freesetinequ(i, 2) > 0) return 0;
|
|
131
|
+
}
|
|
132
|
+
return 1;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
///
|
|
136
|
+
int IsLineInFreeZone (const Point<2> & p1, const Point<2> & p2) const
|
|
137
|
+
{
|
|
138
|
+
if ( (p1[0] > fzmaxx && p2[0] > fzmaxx) ||
|
|
139
|
+
(p1[0] < fzminx && p2[0] < fzminx) ||
|
|
140
|
+
(p1[1] > fzmaxy && p2[1] > fzmaxy) ||
|
|
141
|
+
(p1[1] < fzminy && p2[1] < fzminy) ) return 0;
|
|
142
|
+
return IsLineInFreeZone2 (p1, p2);
|
|
143
|
+
}
|
|
144
|
+
///
|
|
145
|
+
int IsLineInFreeZone2 (const Point<2> & p1, const Point<2> & p2) const;
|
|
146
|
+
///
|
|
147
|
+
int ConvexFreeZone () const;
|
|
148
|
+
///
|
|
149
|
+
const NgArray<Point<2>> & GetTransFreeZone () { return transfreezone; }
|
|
150
|
+
|
|
151
|
+
///
|
|
152
|
+
int GetPointNr (int ln, int endp) const { return lines.Get(ln).I(endp); }
|
|
153
|
+
|
|
154
|
+
///
|
|
155
|
+
const DenseMatrix & GetOldUToNewU () const { return oldutonewu; }
|
|
156
|
+
///
|
|
157
|
+
const DenseMatrix & GetOldUToFreeArea () const { return oldutofreearea; }
|
|
158
|
+
///
|
|
159
|
+
const string & Name () const { return name; }
|
|
160
|
+
|
|
161
|
+
///
|
|
162
|
+
void LoadRule (istream & ist);
|
|
163
|
+
};
|
|
164
|
+
|
|
165
|
+
|
|
166
|
+
|
|
167
|
+
/** Draws 2D rules.
|
|
168
|
+
Visual testing of 2D meshing rules */
|
|
169
|
+
extern void DrawRules ();
|
|
170
|
+
} // namespace netgen
|
|
171
|
+
#endif
|
|
172
|
+
|