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,563 @@
|
|
|
1
|
+
#ifndef FILE_ALGPRIM
|
|
2
|
+
#define FILE_ALGPRIM
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
/**************************************************************************/
|
|
6
|
+
/* File: algprim.hpp */
|
|
7
|
+
/* Author: Joachim Schoeberl */
|
|
8
|
+
/* Date: 1. Dez. 95 */
|
|
9
|
+
/**************************************************************************/
|
|
10
|
+
|
|
11
|
+
namespace netgen
|
|
12
|
+
{
|
|
13
|
+
|
|
14
|
+
/*
|
|
15
|
+
|
|
16
|
+
Quadric Surfaces (Plane, Sphere, Cylinder)
|
|
17
|
+
|
|
18
|
+
*/
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
A quadric surface.
|
|
23
|
+
surface defined by
|
|
24
|
+
cxx x^2 + cyy y^2 + czz z^2 + cxy x y + cxz x z + cyz y z +
|
|
25
|
+
cx x + cy y + cz z + c1 = 0.
|
|
26
|
+
**/
|
|
27
|
+
class QuadraticSurface : public OneSurfacePrimitive
|
|
28
|
+
{
|
|
29
|
+
protected:
|
|
30
|
+
double cxx, cyy, czz, cxy, cxz, cyz, cx, cy, cz, c1;
|
|
31
|
+
|
|
32
|
+
public:
|
|
33
|
+
virtual double CalcFunctionValue (const Point<3> & point) const;
|
|
34
|
+
virtual void CalcGradient (const Point<3> & point, Vec<3> & grad) const;
|
|
35
|
+
virtual void CalcHesse (const Point<3> & point, Mat<3> & hesse) const;
|
|
36
|
+
/*
|
|
37
|
+
virtual int RootInBox (const Box<3> & box)
|
|
38
|
+
const { return 0; }
|
|
39
|
+
virtual INSOLID_TYPE BoxInSolid (const BoxSphere<3> & box)
|
|
40
|
+
const { return DOES_INTERSECT; }
|
|
41
|
+
*/
|
|
42
|
+
virtual double HesseNorm () const { return cxx + cyy + czz; }
|
|
43
|
+
|
|
44
|
+
virtual Point<3> GetSurfacePoint () const;
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
virtual void Print (ostream & str) const;
|
|
48
|
+
virtual void Read (istream & ist);
|
|
49
|
+
void PrintCoeff (ostream & ost) const;
|
|
50
|
+
virtual void DoArchive(Archive& ar)
|
|
51
|
+
{
|
|
52
|
+
OneSurfacePrimitive::DoArchive(ar);
|
|
53
|
+
ar & cxx & cyy & czz & cxy & cxz & cyz & cx & cy & cz & c1;
|
|
54
|
+
}
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
/// A Plane (i.e., the plane and everything behind it).
|
|
59
|
+
class Plane : public QuadraticSurface
|
|
60
|
+
{
|
|
61
|
+
protected:
|
|
62
|
+
/// a point in the plane
|
|
63
|
+
Point<3> p;
|
|
64
|
+
/// outward normal vector
|
|
65
|
+
Vec<3> n;
|
|
66
|
+
|
|
67
|
+
double eps_base;
|
|
68
|
+
|
|
69
|
+
public:
|
|
70
|
+
///
|
|
71
|
+
Plane (const Point<3> & ap, Vec<3> an);
|
|
72
|
+
// default constructor for archive
|
|
73
|
+
Plane() {}
|
|
74
|
+
|
|
75
|
+
virtual void DoArchive(Archive& ar)
|
|
76
|
+
{
|
|
77
|
+
QuadraticSurface::DoArchive(ar);
|
|
78
|
+
ar & p & n & eps_base;
|
|
79
|
+
}
|
|
80
|
+
Point<3> P() const { return p; }
|
|
81
|
+
Vec<3> N() const { return n; }
|
|
82
|
+
virtual void GetPrimitiveData (const char *& classname,
|
|
83
|
+
NgArray<double> & coeffs) const;
|
|
84
|
+
virtual void SetPrimitiveData (NgArray<double> & coeffs);
|
|
85
|
+
static Primitive * CreateDefault ();
|
|
86
|
+
|
|
87
|
+
virtual Primitive * Copy () const;
|
|
88
|
+
virtual void Print (ostream & str) const;
|
|
89
|
+
|
|
90
|
+
virtual void Transform (Transformation<3> & trans);
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
virtual int IsIdentic (const Surface & s2, int & inv, double eps) const;
|
|
94
|
+
|
|
95
|
+
///
|
|
96
|
+
virtual void DefineTangentialPlane (const Point<3> & ap1,
|
|
97
|
+
const Point<3> & ap2);
|
|
98
|
+
///
|
|
99
|
+
virtual void ToPlane (const Point<3> & p3d,
|
|
100
|
+
Point<2> & pplane, double h,
|
|
101
|
+
int & zone) const;
|
|
102
|
+
///
|
|
103
|
+
virtual void FromPlane (const Point<2> & pplane,
|
|
104
|
+
Point<3> & p3d,
|
|
105
|
+
double h) const;
|
|
106
|
+
///
|
|
107
|
+
virtual void Project (Point<3> & p) const;
|
|
108
|
+
|
|
109
|
+
///
|
|
110
|
+
virtual INSOLID_TYPE BoxInSolid (const BoxSphere<3> & box) const;
|
|
111
|
+
|
|
112
|
+
///
|
|
113
|
+
inline virtual double CalcFunctionValue (const Point<3> & p3d) const
|
|
114
|
+
{return cx * p3d(0) + cy * p3d(1) + cz * p3d(2) + c1;}
|
|
115
|
+
///
|
|
116
|
+
virtual void CalcGradient (const Point<3> & point,
|
|
117
|
+
Vec<3> & grad) const;
|
|
118
|
+
///
|
|
119
|
+
virtual void CalcHesse (const Point<3> & point,
|
|
120
|
+
Mat<3> & hesse) const;
|
|
121
|
+
///
|
|
122
|
+
virtual double HesseNorm () const;
|
|
123
|
+
///
|
|
124
|
+
virtual Point<3> GetSurfacePoint () const;
|
|
125
|
+
///
|
|
126
|
+
virtual void GetTriangleApproximation
|
|
127
|
+
(TriangleApproximation & tas,
|
|
128
|
+
const Box<3> & boundingbox, double facets) const;
|
|
129
|
+
protected:
|
|
130
|
+
void CalcData();
|
|
131
|
+
};
|
|
132
|
+
|
|
133
|
+
// typedef Plane Plane;
|
|
134
|
+
|
|
135
|
+
|
|
136
|
+
///
|
|
137
|
+
class Sphere : public QuadraticSurface
|
|
138
|
+
{
|
|
139
|
+
///
|
|
140
|
+
Point<3> c;
|
|
141
|
+
///
|
|
142
|
+
double r, invr;
|
|
143
|
+
public:
|
|
144
|
+
///
|
|
145
|
+
Sphere (const Point<3> & ac, double ar);
|
|
146
|
+
// default constructor for archive
|
|
147
|
+
Sphere() {}
|
|
148
|
+
|
|
149
|
+
virtual void DoArchive(Archive& ar)
|
|
150
|
+
{
|
|
151
|
+
QuadraticSurface::DoArchive(ar);
|
|
152
|
+
ar & c & r & invr;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
virtual void GetPrimitiveData (const char *& classname,
|
|
156
|
+
NgArray<double> & coeffs) const;
|
|
157
|
+
virtual void SetPrimitiveData (NgArray<double> & coeffs);
|
|
158
|
+
static Primitive * CreateDefault ();
|
|
159
|
+
|
|
160
|
+
virtual Primitive * Copy () const;
|
|
161
|
+
virtual void Transform (Transformation<3> & trans);
|
|
162
|
+
|
|
163
|
+
virtual double CalcFunctionValue (const Point<3> & point) const;
|
|
164
|
+
|
|
165
|
+
|
|
166
|
+
virtual int IsIdentic (const Surface & s2, int & inv, double eps) const;
|
|
167
|
+
|
|
168
|
+
///
|
|
169
|
+
virtual void DefineTangentialPlane (const Point<3> & ap1,
|
|
170
|
+
const Point<3> & ap2);
|
|
171
|
+
///
|
|
172
|
+
virtual void ToPlane (const Point<3> & p3d,
|
|
173
|
+
Point<2> & pplane, double h,
|
|
174
|
+
int & zone) const;
|
|
175
|
+
///
|
|
176
|
+
virtual void FromPlane (const Point<2> & pplane,
|
|
177
|
+
Point<3> & p, double h) const;
|
|
178
|
+
///
|
|
179
|
+
virtual void Project (Point<3> & p) const;
|
|
180
|
+
|
|
181
|
+
///
|
|
182
|
+
virtual INSOLID_TYPE BoxInSolid (const BoxSphere<3> & box) const;
|
|
183
|
+
///
|
|
184
|
+
virtual double HesseNorm () const;
|
|
185
|
+
///
|
|
186
|
+
virtual Point<3> GetSurfacePoint () const;
|
|
187
|
+
///
|
|
188
|
+
const Point<3> & Center () const { return c; }
|
|
189
|
+
///
|
|
190
|
+
double Radius () const { return r; }
|
|
191
|
+
|
|
192
|
+
///
|
|
193
|
+
virtual void GetTriangleApproximation (TriangleApproximation & tas,
|
|
194
|
+
const Box<3> & bbox,
|
|
195
|
+
double facets) const;
|
|
196
|
+
};
|
|
197
|
+
|
|
198
|
+
|
|
199
|
+
///
|
|
200
|
+
class Cylinder : public QuadraticSurface
|
|
201
|
+
{
|
|
202
|
+
///
|
|
203
|
+
Point<3> a, b;
|
|
204
|
+
///
|
|
205
|
+
double r;
|
|
206
|
+
///
|
|
207
|
+
Vec<3> vab;
|
|
208
|
+
|
|
209
|
+
public:
|
|
210
|
+
Cylinder (const Point<3> & aa, const Point<3> & ab, double ar);
|
|
211
|
+
Cylinder (NgArray<double> & coeffs);
|
|
212
|
+
// default constructor for archive
|
|
213
|
+
Cylinder() {}
|
|
214
|
+
|
|
215
|
+
virtual void DoArchive(Archive& ar)
|
|
216
|
+
{
|
|
217
|
+
QuadraticSurface::DoArchive(ar);
|
|
218
|
+
ar & a & b & r & vab;
|
|
219
|
+
}
|
|
220
|
+
Point<3> A() const { return a; }
|
|
221
|
+
Point<3> B() const { return b; }
|
|
222
|
+
double R() const { return r; }
|
|
223
|
+
virtual void GetPrimitiveData (const char *& classname, NgArray<double> & coeffs) const;
|
|
224
|
+
virtual void SetPrimitiveData (NgArray<double> & coeffs);
|
|
225
|
+
static Primitive * CreateDefault ();
|
|
226
|
+
|
|
227
|
+
virtual Primitive * Copy () const;
|
|
228
|
+
virtual void Print (ostream & str) const;
|
|
229
|
+
|
|
230
|
+
virtual void Transform (Transformation<3> & trans);
|
|
231
|
+
|
|
232
|
+
///
|
|
233
|
+
virtual int IsIdentic (const Surface & s2, int & inv, double eps) const;
|
|
234
|
+
///
|
|
235
|
+
virtual void DefineTangentialPlane (const Point<3> & ap1,
|
|
236
|
+
const Point<3> & ap2);
|
|
237
|
+
///
|
|
238
|
+
virtual void ToPlane (const Point<3> & p,
|
|
239
|
+
Point<2> & pplane,
|
|
240
|
+
double h,
|
|
241
|
+
int & zone) const;
|
|
242
|
+
///
|
|
243
|
+
virtual void FromPlane (const Point<2> & pplane,
|
|
244
|
+
Point<3> & p,
|
|
245
|
+
double h) const;
|
|
246
|
+
///
|
|
247
|
+
virtual void Project (Point<3> & p) const;
|
|
248
|
+
|
|
249
|
+
///
|
|
250
|
+
virtual INSOLID_TYPE BoxInSolid (const BoxSphere<3> & box) const;
|
|
251
|
+
///
|
|
252
|
+
virtual double HesseNorm () const;
|
|
253
|
+
///
|
|
254
|
+
virtual Point<3> GetSurfacePoint () const;
|
|
255
|
+
///
|
|
256
|
+
virtual void GetTriangleApproximation (TriangleApproximation & tas,
|
|
257
|
+
const Box<3> & bbox,
|
|
258
|
+
double facets) const;
|
|
259
|
+
};
|
|
260
|
+
|
|
261
|
+
|
|
262
|
+
|
|
263
|
+
|
|
264
|
+
|
|
265
|
+
///
|
|
266
|
+
class EllipticCylinder : public QuadraticSurface
|
|
267
|
+
{
|
|
268
|
+
private:
|
|
269
|
+
///
|
|
270
|
+
Point<3> a;
|
|
271
|
+
///
|
|
272
|
+
Vec<3> vl, vs;
|
|
273
|
+
///
|
|
274
|
+
Vec<3> vab, t0vec, t1vec;
|
|
275
|
+
///
|
|
276
|
+
double vabl, t0, t1;
|
|
277
|
+
public:
|
|
278
|
+
///
|
|
279
|
+
EllipticCylinder (const Point<3> & aa,
|
|
280
|
+
const Vec<3> & avl, const Vec<3> & avs);
|
|
281
|
+
EllipticCylinder (NgArray<double> & coeffs);
|
|
282
|
+
// default constructor for archive
|
|
283
|
+
EllipticCylinder() {}
|
|
284
|
+
|
|
285
|
+
virtual void DoArchive(Archive& ar)
|
|
286
|
+
{
|
|
287
|
+
QuadraticSurface::DoArchive(ar);
|
|
288
|
+
ar & a & vl & vs & vab & t0vec & t1vec & vabl & t0 & t1;
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
// static Primitive * CreateDefault ();
|
|
292
|
+
virtual void GetPrimitiveData (const char *& classname, NgArray<double> & coeffs) const;
|
|
293
|
+
virtual void SetPrimitiveData (NgArray<double> & coeffs);
|
|
294
|
+
|
|
295
|
+
///
|
|
296
|
+
virtual INSOLID_TYPE BoxInSolid (const BoxSphere<3> & box) const;
|
|
297
|
+
///
|
|
298
|
+
virtual double HesseNorm () const;
|
|
299
|
+
///
|
|
300
|
+
virtual Point<3> GetSurfacePoint () const;
|
|
301
|
+
|
|
302
|
+
virtual void GetTriangleApproximation (TriangleApproximation & tas,
|
|
303
|
+
const Box<3> & bbox,
|
|
304
|
+
double facets) const;
|
|
305
|
+
|
|
306
|
+
virtual int IsIdentic (const Surface & s2, int & inv, double eps) const;
|
|
307
|
+
|
|
308
|
+
virtual double MaxCurvature () const;
|
|
309
|
+
|
|
310
|
+
virtual double MaxCurvatureLoc (const Point<3> & /* c */ ,
|
|
311
|
+
double /* rad */) const;
|
|
312
|
+
|
|
313
|
+
|
|
314
|
+
private:
|
|
315
|
+
void CalcData();
|
|
316
|
+
};
|
|
317
|
+
|
|
318
|
+
|
|
319
|
+
|
|
320
|
+
|
|
321
|
+
|
|
322
|
+
|
|
323
|
+
///
|
|
324
|
+
class Ellipsoid : public QuadraticSurface
|
|
325
|
+
{
|
|
326
|
+
private:
|
|
327
|
+
///
|
|
328
|
+
Point<3> a;
|
|
329
|
+
///
|
|
330
|
+
Vec<3> v1, v2, v3;
|
|
331
|
+
///
|
|
332
|
+
double rmin;
|
|
333
|
+
public:
|
|
334
|
+
///
|
|
335
|
+
Ellipsoid (const Point<3> & aa,
|
|
336
|
+
const Vec<3> & av1,
|
|
337
|
+
const Vec<3> & av2,
|
|
338
|
+
const Vec<3> & av3);
|
|
339
|
+
// default constructor for archive
|
|
340
|
+
Ellipsoid() {}
|
|
341
|
+
|
|
342
|
+
void DoArchive(Archive& ar) override
|
|
343
|
+
{
|
|
344
|
+
QuadraticSurface::DoArchive(ar);
|
|
345
|
+
ar & a & v1 & v2 & v3 & rmin;
|
|
346
|
+
}
|
|
347
|
+
///
|
|
348
|
+
INSOLID_TYPE BoxInSolid (const BoxSphere<3> & box) const override;
|
|
349
|
+
///
|
|
350
|
+
double HesseNorm () const override;
|
|
351
|
+
///
|
|
352
|
+
double MaxCurvature () const override;
|
|
353
|
+
///
|
|
354
|
+
Point<3> GetSurfacePoint () const override;
|
|
355
|
+
|
|
356
|
+
void GetTriangleApproximation (TriangleApproximation & tas,
|
|
357
|
+
const Box<3> & bbox,
|
|
358
|
+
double facets) const override;
|
|
359
|
+
|
|
360
|
+
void GetPrimitiveData (const char *& classname, NgArray<double> & coeffs) const override;
|
|
361
|
+
void SetPrimitiveData (NgArray<double> & coeffs) override;
|
|
362
|
+
|
|
363
|
+
private:
|
|
364
|
+
void CalcData();
|
|
365
|
+
};
|
|
366
|
+
|
|
367
|
+
|
|
368
|
+
|
|
369
|
+
|
|
370
|
+
|
|
371
|
+
|
|
372
|
+
|
|
373
|
+
|
|
374
|
+
///
|
|
375
|
+
class Cone : public QuadraticSurface
|
|
376
|
+
{
|
|
377
|
+
///
|
|
378
|
+
Point<3> a, b;
|
|
379
|
+
///
|
|
380
|
+
double ra, rb, minr;
|
|
381
|
+
///
|
|
382
|
+
Vec<3> vab, t0vec, t1vec;
|
|
383
|
+
///
|
|
384
|
+
double vabl, t0, t1;
|
|
385
|
+
double cosphi;
|
|
386
|
+
public:
|
|
387
|
+
///
|
|
388
|
+
Cone (const Point<3> & aa, const Point<3> & ab, double ara, double arb);
|
|
389
|
+
///
|
|
390
|
+
// default constructor for archive
|
|
391
|
+
Cone() {}
|
|
392
|
+
|
|
393
|
+
virtual void DoArchive(Archive& ar)
|
|
394
|
+
{
|
|
395
|
+
QuadraticSurface::DoArchive(ar);
|
|
396
|
+
ar & a & b & ra & rb & minr & vab & t0vec & t1vec & vabl & t0 & t1 & cosphi;
|
|
397
|
+
}
|
|
398
|
+
static Primitive * CreateDefault ();
|
|
399
|
+
virtual void GetPrimitiveData (const char *& classname, NgArray<double> & coeffs) const;
|
|
400
|
+
virtual void SetPrimitiveData (NgArray<double> & coeffs);
|
|
401
|
+
|
|
402
|
+
///
|
|
403
|
+
virtual INSOLID_TYPE BoxInSolid (const BoxSphere<3> & box) const;
|
|
404
|
+
///
|
|
405
|
+
virtual double HesseNorm () const;
|
|
406
|
+
|
|
407
|
+
virtual double LocH (const Point<3> & p, double x,
|
|
408
|
+
double c,
|
|
409
|
+
const MeshingParameters & mparam,
|
|
410
|
+
double hmax) const;
|
|
411
|
+
|
|
412
|
+
///
|
|
413
|
+
virtual Point<3> GetSurfacePoint () const;
|
|
414
|
+
|
|
415
|
+
virtual void GetTriangleApproximation (TriangleApproximation & tas,
|
|
416
|
+
const Box<3> & bbox,
|
|
417
|
+
double facets) const;
|
|
418
|
+
|
|
419
|
+
private:
|
|
420
|
+
void CalcData();
|
|
421
|
+
};
|
|
422
|
+
|
|
423
|
+
|
|
424
|
+
///
|
|
425
|
+
|
|
426
|
+
/// Elliptic Cone
|
|
427
|
+
/// Josephat Kalezhi (kalezhi@cbu.ac.zm)
|
|
428
|
+
/// February 21st, 2018
|
|
429
|
+
///
|
|
430
|
+
|
|
431
|
+
///
|
|
432
|
+
class EllipticCone : public QuadraticSurface
|
|
433
|
+
{
|
|
434
|
+
Point<3> a;
|
|
435
|
+
Vec<3> vl, vs;
|
|
436
|
+
double h, vlr;
|
|
437
|
+
|
|
438
|
+
public:
|
|
439
|
+
///
|
|
440
|
+
EllipticCone (const Point<3> & aa, const Vec<3> & avl,
|
|
441
|
+
const Vec<3> & avs, double ah, double avlr);
|
|
442
|
+
// default constructor for archive
|
|
443
|
+
EllipticCone() {}
|
|
444
|
+
|
|
445
|
+
virtual void DoArchive(Archive& ar)
|
|
446
|
+
{
|
|
447
|
+
QuadraticSurface::DoArchive(ar);
|
|
448
|
+
ar & a & vl & vs & h & vlr;
|
|
449
|
+
}
|
|
450
|
+
static Primitive * CreateDefault ();
|
|
451
|
+
virtual void GetPrimitiveData (const char *& classname, NgArray<double> & coeffs) const;
|
|
452
|
+
virtual void SetPrimitiveData (NgArray<double> & coeffs);
|
|
453
|
+
|
|
454
|
+
///
|
|
455
|
+
virtual INSOLID_TYPE BoxInSolid (const BoxSphere<3> & box) const;
|
|
456
|
+
///
|
|
457
|
+
virtual double HesseNorm () const;
|
|
458
|
+
virtual double MaxCurvature () const;
|
|
459
|
+
virtual double MaxCurvatureLoc (const Point<3> & /* c */ ,
|
|
460
|
+
double /* rad */) const;
|
|
461
|
+
///
|
|
462
|
+
virtual Point<3> GetSurfacePoint () const;
|
|
463
|
+
|
|
464
|
+
virtual void GetTriangleApproximation (TriangleApproximation & tas,
|
|
465
|
+
const Box<3> & bbox,
|
|
466
|
+
double facets) const;
|
|
467
|
+
|
|
468
|
+
private:
|
|
469
|
+
void CalcData();
|
|
470
|
+
};
|
|
471
|
+
|
|
472
|
+
|
|
473
|
+
/** Torus
|
|
474
|
+
/// Lorenzo Codecasa (codecasa@elet.polimi.it)
|
|
475
|
+
/// April 27th, 2005
|
|
476
|
+
*/
|
|
477
|
+
class Torus : public OneSurfacePrimitive
|
|
478
|
+
{
|
|
479
|
+
/// center of the torus
|
|
480
|
+
Point<3> c;
|
|
481
|
+
/// vector normal to the symmetry plane of the torus
|
|
482
|
+
Vec<3> n;
|
|
483
|
+
/// Large radius of the torus
|
|
484
|
+
double R;
|
|
485
|
+
/// Small radius of the torus
|
|
486
|
+
double r;
|
|
487
|
+
|
|
488
|
+
public:
|
|
489
|
+
/// OK
|
|
490
|
+
Torus (const Point<3> & ac, const Vec<3> & an, double aR, double ar);
|
|
491
|
+
// default constructor for archive
|
|
492
|
+
Torus() {}
|
|
493
|
+
|
|
494
|
+
virtual void DoArchive(Archive& ar)
|
|
495
|
+
{
|
|
496
|
+
OneSurfacePrimitive::DoArchive(ar);
|
|
497
|
+
ar & c & n & R & r;
|
|
498
|
+
}
|
|
499
|
+
/// OK
|
|
500
|
+
const Point<3> & Center () const { return c; }
|
|
501
|
+
/// OK
|
|
502
|
+
const Vec<3> & NormalToPlane () const { return n; }
|
|
503
|
+
/// OK
|
|
504
|
+
double LargeRadius () const { return R; }
|
|
505
|
+
/// OK
|
|
506
|
+
double SmallRadius () const { return r; }
|
|
507
|
+
/// OK
|
|
508
|
+
virtual double CalcFunctionValue (const Point<3> & point) const;
|
|
509
|
+
/// OK
|
|
510
|
+
virtual void CalcGradient (const Point<3> & point, Vec<3> & grad) const;
|
|
511
|
+
/// OK
|
|
512
|
+
virtual void CalcHesse (const Point<3> & point, Mat<3> & hesse) const;
|
|
513
|
+
/// OK
|
|
514
|
+
virtual double HesseNorm () const;
|
|
515
|
+
/// OK
|
|
516
|
+
virtual Point<3> GetSurfacePoint () const;
|
|
517
|
+
/// OK
|
|
518
|
+
virtual void GetPrimitiveData (const char *& classname,
|
|
519
|
+
NgArray<double> & coeffs) const;
|
|
520
|
+
/// OK
|
|
521
|
+
virtual void SetPrimitiveData (NgArray<double> & coeffs);
|
|
522
|
+
/// OK
|
|
523
|
+
static Primitive * CreateDefault ();
|
|
524
|
+
/// OK
|
|
525
|
+
virtual Primitive * Copy () const;
|
|
526
|
+
/// OK
|
|
527
|
+
virtual void Transform (Transformation<3> & trans);
|
|
528
|
+
/// OK
|
|
529
|
+
virtual int IsIdentic (const Surface & s2, int & inv, double eps) const;
|
|
530
|
+
/// OK
|
|
531
|
+
/// virtual void DefineTangentialPlane (const Point<3> & ap1,
|
|
532
|
+
// const Point<3> & ap2);
|
|
533
|
+
/// OK
|
|
534
|
+
/// virtual void ToPlane (const Point<3> & p3d,
|
|
535
|
+
/// Point<2> & pplane,
|
|
536
|
+
/// double h, int & zone) const;
|
|
537
|
+
/// OK
|
|
538
|
+
/// virtual void FromPlane (const Point<2> & pplane,
|
|
539
|
+
// Point<3> & p, double h) const;
|
|
540
|
+
/// OK
|
|
541
|
+
/// virtual void Project (Point<3> & p) const;
|
|
542
|
+
/// OK
|
|
543
|
+
virtual INSOLID_TYPE BoxInSolid (const BoxSphere<3> & box) const;
|
|
544
|
+
/// OK
|
|
545
|
+
virtual void GetTriangleApproximation (TriangleApproximation & tas,
|
|
546
|
+
const Box<3> & bbox,
|
|
547
|
+
double facets) const;
|
|
548
|
+
/// OK
|
|
549
|
+
virtual void Print (ostream & ist) const;
|
|
550
|
+
/// OK
|
|
551
|
+
virtual void Read (istream & ist);
|
|
552
|
+
};
|
|
553
|
+
|
|
554
|
+
/// ...end
|
|
555
|
+
|
|
556
|
+
|
|
557
|
+
}
|
|
558
|
+
|
|
559
|
+
|
|
560
|
+
|
|
561
|
+
|
|
562
|
+
|
|
563
|
+
#endif
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
#ifndef FILE_BRICK
|
|
2
|
+
#define FILE_BRICK
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
/**************************************************************************/
|
|
6
|
+
/* File: brick.hpp */
|
|
7
|
+
/* Author: Joachim Schoeberl */
|
|
8
|
+
/* Date: 11. Mar. 98 */
|
|
9
|
+
/**************************************************************************/
|
|
10
|
+
|
|
11
|
+
namespace netgen
|
|
12
|
+
{
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
/*
|
|
16
|
+
|
|
17
|
+
brick geometry, has several surfaces
|
|
18
|
+
|
|
19
|
+
*/
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
class Parallelogram3d : public Surface
|
|
24
|
+
{
|
|
25
|
+
Point<3> p1, p2, p3, p4;
|
|
26
|
+
Vec<3> v12, v13;
|
|
27
|
+
Vec<3> n;
|
|
28
|
+
|
|
29
|
+
public:
|
|
30
|
+
Parallelogram3d (Point<3> ap1, Point<3> ap2, Point<3> ap3);
|
|
31
|
+
// default constructor for archive
|
|
32
|
+
Parallelogram3d() {}
|
|
33
|
+
virtual ~Parallelogram3d ();
|
|
34
|
+
|
|
35
|
+
virtual void DoArchive(Archive& ar)
|
|
36
|
+
{
|
|
37
|
+
Surface::DoArchive(ar);
|
|
38
|
+
ar & p1 & p2 & p3 & p4 & v12 & v13 & n;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
void SetPoints (Point<3> ap1, Point<3> ap2, Point<3> ap3);
|
|
42
|
+
|
|
43
|
+
virtual int IsIdentic (const Surface & s2, int & inv, double eps) const;
|
|
44
|
+
|
|
45
|
+
virtual double CalcFunctionValue (const Point<3> & point) const;
|
|
46
|
+
virtual void CalcGradient (const Point<3> & point, Vec<3> & grad) const;
|
|
47
|
+
virtual void CalcHesse (const Point<3> & point, Mat<3> & hesse) const;
|
|
48
|
+
virtual double HesseNorm () const;
|
|
49
|
+
|
|
50
|
+
virtual Point<3> GetSurfacePoint () const;
|
|
51
|
+
virtual void Print (ostream & str) const;
|
|
52
|
+
|
|
53
|
+
virtual void GetTriangleApproximation (TriangleApproximation & tas,
|
|
54
|
+
const Box<3> & boundingbox,
|
|
55
|
+
double facets) const;
|
|
56
|
+
|
|
57
|
+
protected:
|
|
58
|
+
void CalcData();
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
class Brick : public Primitive
|
|
63
|
+
{
|
|
64
|
+
Point<3> p1, p2, p3, p4;
|
|
65
|
+
Vec<3> v12, v13, v14;
|
|
66
|
+
// NgArray<OneSurfacePrimitive*> faces;
|
|
67
|
+
NgArray<Plane*> faces;
|
|
68
|
+
|
|
69
|
+
public:
|
|
70
|
+
Brick (Point<3> ap1, Point<3> ap2, Point<3> ap3, Point<3> ap4);
|
|
71
|
+
// default constructor for archive
|
|
72
|
+
Brick() {}
|
|
73
|
+
virtual ~Brick ();
|
|
74
|
+
|
|
75
|
+
virtual void DoArchive(Archive& ar)
|
|
76
|
+
{
|
|
77
|
+
Primitive::DoArchive(ar);
|
|
78
|
+
ar & p1 & p2 & p3 & p4 & v12 & v13 & v14 & faces;
|
|
79
|
+
}
|
|
80
|
+
static Primitive * CreateDefault ();
|
|
81
|
+
|
|
82
|
+
virtual Primitive * Copy () const;
|
|
83
|
+
virtual void Transform (Transformation<3> & trans);
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
virtual INSOLID_TYPE BoxInSolid (const BoxSphere<3> & box) const;
|
|
87
|
+
|
|
88
|
+
virtual INSOLID_TYPE PointInSolid (const Point<3> & p,
|
|
89
|
+
double eps) const;
|
|
90
|
+
virtual INSOLID_TYPE VecInSolid (const Point<3> & p,
|
|
91
|
+
const Vec<3> & v,
|
|
92
|
+
double eps) const;
|
|
93
|
+
virtual INSOLID_TYPE VecInSolid2 (const Point<3> & p,
|
|
94
|
+
const Vec<3> & v1,
|
|
95
|
+
const Vec<3> & v2,
|
|
96
|
+
double eps) const;
|
|
97
|
+
|
|
98
|
+
virtual INSOLID_TYPE VecInSolid3 (const Point<3> & p,
|
|
99
|
+
const Vec<3> & v1,
|
|
100
|
+
const Vec<3> & v2,
|
|
101
|
+
double eps) const;
|
|
102
|
+
|
|
103
|
+
virtual INSOLID_TYPE VecInSolid4 (const Point<3> & p,
|
|
104
|
+
const Vec<3> & v,
|
|
105
|
+
const Vec<3> & v2,
|
|
106
|
+
const Vec<3> & m,
|
|
107
|
+
double eps) const;
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
virtual int GetNSurfaces() const
|
|
111
|
+
{ return 6; }
|
|
112
|
+
virtual Surface & GetSurface (int i)
|
|
113
|
+
{ return *faces[i]; }
|
|
114
|
+
virtual const Surface & GetSurface (int i) const
|
|
115
|
+
{ return *faces[i]; }
|
|
116
|
+
|
|
117
|
+
|
|
118
|
+
virtual void GetPrimitiveData (const char *& classname, NgArray<double> & coeffs) const;
|
|
119
|
+
virtual void SetPrimitiveData (NgArray<double> & coeffs);
|
|
120
|
+
|
|
121
|
+
virtual void Reduce (const BoxSphere<3> & box);
|
|
122
|
+
virtual void UnReduce ();
|
|
123
|
+
|
|
124
|
+
protected:
|
|
125
|
+
void CalcData();
|
|
126
|
+
};
|
|
127
|
+
|
|
128
|
+
|
|
129
|
+
class OrthoBrick : public Brick
|
|
130
|
+
{
|
|
131
|
+
protected:
|
|
132
|
+
Point<3> pmin, pmax;
|
|
133
|
+
public:
|
|
134
|
+
OrthoBrick (const Point<3> & ap1, const Point<3> & ap2);
|
|
135
|
+
// default constructor for archive
|
|
136
|
+
OrthoBrick() {}
|
|
137
|
+
|
|
138
|
+
virtual void DoArchive(Archive& ar)
|
|
139
|
+
{
|
|
140
|
+
Brick::DoArchive(ar);
|
|
141
|
+
ar & pmin & pmax;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
virtual INSOLID_TYPE BoxInSolid (const BoxSphere<3> & box) const;
|
|
145
|
+
virtual void Reduce (const BoxSphere<3> & box);
|
|
146
|
+
};
|
|
147
|
+
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
#endif
|