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,414 @@
|
|
|
1
|
+
#ifndef FILE_DENSEMAT
|
|
2
|
+
#define FILE_DENSEMAT
|
|
3
|
+
|
|
4
|
+
/**************************************************************************/
|
|
5
|
+
/* File: densemat.hpp */
|
|
6
|
+
/* Author: Joachim Schoeberl */
|
|
7
|
+
/* Date: 01. Oct. 94 */
|
|
8
|
+
/**************************************************************************/
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
Data type dense matrix
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
#include <mydefs.hpp>
|
|
15
|
+
#include "vector.hpp"
|
|
16
|
+
|
|
17
|
+
namespace netgen
|
|
18
|
+
{
|
|
19
|
+
class DenseMatrix
|
|
20
|
+
{
|
|
21
|
+
protected:
|
|
22
|
+
int height;
|
|
23
|
+
int width;
|
|
24
|
+
double * data;
|
|
25
|
+
|
|
26
|
+
public:
|
|
27
|
+
///
|
|
28
|
+
DLL_HEADER DenseMatrix ();
|
|
29
|
+
///
|
|
30
|
+
DLL_HEADER DenseMatrix (int h, int w = 0);
|
|
31
|
+
///
|
|
32
|
+
DLL_HEADER DenseMatrix (const DenseMatrix & m2);
|
|
33
|
+
///
|
|
34
|
+
DLL_HEADER ~DenseMatrix ();
|
|
35
|
+
|
|
36
|
+
///
|
|
37
|
+
DLL_HEADER void SetSize (int h, int w = 0);
|
|
38
|
+
|
|
39
|
+
int Height() const { return height; }
|
|
40
|
+
int Width() const {return width; }
|
|
41
|
+
|
|
42
|
+
double & operator() (int i, int j) { return data[i*width+j]; }
|
|
43
|
+
double operator() (int i, int j) const { return data[i*width+j]; }
|
|
44
|
+
double & operator() (int i) { return data[i]; }
|
|
45
|
+
double operator() (int i) const { return data[i]; }
|
|
46
|
+
|
|
47
|
+
///
|
|
48
|
+
DLL_HEADER DenseMatrix & operator= (const DenseMatrix & m2);
|
|
49
|
+
///
|
|
50
|
+
DLL_HEADER DenseMatrix & operator+= (const DenseMatrix & m2);
|
|
51
|
+
///
|
|
52
|
+
DLL_HEADER DenseMatrix & operator-= (const DenseMatrix & m2);
|
|
53
|
+
|
|
54
|
+
///
|
|
55
|
+
DLL_HEADER DenseMatrix & operator= (double v);
|
|
56
|
+
///
|
|
57
|
+
DLL_HEADER DenseMatrix & operator*= (double v);
|
|
58
|
+
|
|
59
|
+
///
|
|
60
|
+
DLL_HEADER void Mult (const FlatVector & v, FlatVector & prod) const
|
|
61
|
+
{
|
|
62
|
+
double sum;
|
|
63
|
+
const double * mp, * sp;
|
|
64
|
+
double * dp;
|
|
65
|
+
|
|
66
|
+
#ifdef DEBUG
|
|
67
|
+
if (prod.Size() != height)
|
|
68
|
+
{
|
|
69
|
+
(*myerr) << "Mult: wrong vector size " << endl;
|
|
70
|
+
}
|
|
71
|
+
if (!height)
|
|
72
|
+
{
|
|
73
|
+
cout << "DenseMatrix::Mult height = 0" << endl;
|
|
74
|
+
}
|
|
75
|
+
if (!width)
|
|
76
|
+
{
|
|
77
|
+
cout << "DenseMatrix::Mult width = 0" << endl;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
if (width != v.Size())
|
|
81
|
+
{
|
|
82
|
+
(*myerr) << "\nMatrix and Vector don't fit" << endl;
|
|
83
|
+
}
|
|
84
|
+
else if (Height() != prod.Size())
|
|
85
|
+
{
|
|
86
|
+
(*myerr) << "Base_Matrix::operator*(Vector): prod vector not ok" << endl;
|
|
87
|
+
}
|
|
88
|
+
else
|
|
89
|
+
#endif
|
|
90
|
+
{
|
|
91
|
+
mp = data;
|
|
92
|
+
dp = &prod(0);
|
|
93
|
+
for (int i = 0; i < height; i++)
|
|
94
|
+
{
|
|
95
|
+
sum = 0;
|
|
96
|
+
sp = &v(0);
|
|
97
|
+
|
|
98
|
+
for (int j = 0; j < width; j++)
|
|
99
|
+
{
|
|
100
|
+
// sum += Get(i,j) * v.Get(j);
|
|
101
|
+
sum += *mp * *sp;
|
|
102
|
+
mp++;
|
|
103
|
+
sp++;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
*dp = sum;
|
|
107
|
+
dp++;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
///
|
|
113
|
+
DLL_HEADER void MultTrans (const Vector & v, Vector & prod) const;
|
|
114
|
+
///
|
|
115
|
+
DLL_HEADER void Residuum (const Vector & x, const Vector & b, Vector & res) const;
|
|
116
|
+
///
|
|
117
|
+
DLL_HEADER double Det () const;
|
|
118
|
+
|
|
119
|
+
///
|
|
120
|
+
friend DenseMatrix operator* (const DenseMatrix & m1, const DenseMatrix & m2);
|
|
121
|
+
///
|
|
122
|
+
friend DenseMatrix operator+ (const DenseMatrix & m1, const DenseMatrix & m2);
|
|
123
|
+
|
|
124
|
+
///
|
|
125
|
+
friend void Transpose (const DenseMatrix & m1, DenseMatrix & m2);
|
|
126
|
+
///
|
|
127
|
+
friend void Mult (const DenseMatrix & m1, const DenseMatrix & m2, DenseMatrix & m3);
|
|
128
|
+
///
|
|
129
|
+
// friend void CalcInverse (const DenseMatrix & m1, DenseMatrix & m2);
|
|
130
|
+
///
|
|
131
|
+
friend void CalcAAt (const DenseMatrix & a, DenseMatrix & m2);
|
|
132
|
+
///
|
|
133
|
+
// friend void CalcAtA (const DenseMatrix & a, DenseMatrix & m2);
|
|
134
|
+
///
|
|
135
|
+
friend void CalcABt (const DenseMatrix & a, const DenseMatrix & b, DenseMatrix & m2);
|
|
136
|
+
///
|
|
137
|
+
friend void CalcAtB (const DenseMatrix & a, const DenseMatrix & b, DenseMatrix & m2);
|
|
138
|
+
///
|
|
139
|
+
DLL_HEADER void Solve (const Vector & b, Vector & x) const;
|
|
140
|
+
///
|
|
141
|
+
void SolveDestroy (const Vector & b, Vector & x);
|
|
142
|
+
///
|
|
143
|
+
const double & Get(int i, int j) const { return data[(i-1)*width+j-1]; }
|
|
144
|
+
///
|
|
145
|
+
const double & Get(int i) const { return data[i-1]; }
|
|
146
|
+
///
|
|
147
|
+
void Set(int i, int j, double v) { data[(i-1)*width+j-1] = v; }
|
|
148
|
+
///
|
|
149
|
+
double & Elem(int i, int j) { return data[(i-1)*width+j-1]; }
|
|
150
|
+
///
|
|
151
|
+
const double & ConstElem(int i, int j) const { return data[(i-1)*width+j-1]; }
|
|
152
|
+
};
|
|
153
|
+
|
|
154
|
+
|
|
155
|
+
extern ostream & operator<< (ostream & ost, const DenseMatrix & m);
|
|
156
|
+
|
|
157
|
+
|
|
158
|
+
|
|
159
|
+
template <int WIDTH, typename T = double>
|
|
160
|
+
class MatrixFixWidth
|
|
161
|
+
{
|
|
162
|
+
protected:
|
|
163
|
+
int height;
|
|
164
|
+
T * __restrict data;
|
|
165
|
+
bool ownmem;
|
|
166
|
+
public:
|
|
167
|
+
///
|
|
168
|
+
MatrixFixWidth ()
|
|
169
|
+
{ height = 0; data = 0; ownmem = false; }
|
|
170
|
+
///
|
|
171
|
+
MatrixFixWidth (int h)
|
|
172
|
+
{ height = h; data = new T[WIDTH*height]; ownmem = true; }
|
|
173
|
+
///
|
|
174
|
+
MatrixFixWidth (int h, T * adata)
|
|
175
|
+
{ height = h; data = adata; ownmem = false; }
|
|
176
|
+
///
|
|
177
|
+
MatrixFixWidth (const MatrixFixWidth & m2)
|
|
178
|
+
: height(m2.height), ownmem(true)
|
|
179
|
+
{
|
|
180
|
+
data = new T[height*WIDTH];
|
|
181
|
+
for (int i = 0; i < WIDTH*height; i++)
|
|
182
|
+
data[i] = m2.data[i];
|
|
183
|
+
}
|
|
184
|
+
// : height(m2.height), data(m2.data), ownmem(false)
|
|
185
|
+
//{ ; }
|
|
186
|
+
///
|
|
187
|
+
~MatrixFixWidth ()
|
|
188
|
+
{ if (ownmem) delete [] data; }
|
|
189
|
+
|
|
190
|
+
void SetSize (int h)
|
|
191
|
+
{
|
|
192
|
+
if (h != height)
|
|
193
|
+
{
|
|
194
|
+
if (ownmem) delete data;
|
|
195
|
+
height = h;
|
|
196
|
+
data = new T[WIDTH*height];
|
|
197
|
+
ownmem = true;
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
///
|
|
202
|
+
int Height() const { return height; }
|
|
203
|
+
|
|
204
|
+
///
|
|
205
|
+
int Width() const { return WIDTH; }
|
|
206
|
+
MatrixFixWidth & operator= (const MatrixFixWidth & m2)
|
|
207
|
+
{
|
|
208
|
+
for (int i = 0; i < height*WIDTH; i++)
|
|
209
|
+
data[i] = m2.data[i];
|
|
210
|
+
}
|
|
211
|
+
///
|
|
212
|
+
MatrixFixWidth & operator= (T v)
|
|
213
|
+
{
|
|
214
|
+
for (int i = 0; i < height*WIDTH; i++)
|
|
215
|
+
data[i] = v;
|
|
216
|
+
return *this;
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
/*
|
|
220
|
+
///
|
|
221
|
+
void Mult (const FlatVector & v, FlatVector & prod) const
|
|
222
|
+
{
|
|
223
|
+
T sum;
|
|
224
|
+
const T * mp, * sp;
|
|
225
|
+
T * dp;
|
|
226
|
+
|
|
227
|
+
mp = data;
|
|
228
|
+
dp = &prod[0];
|
|
229
|
+
for (int i = 0; i < height; i++)
|
|
230
|
+
{
|
|
231
|
+
sum = 0;
|
|
232
|
+
sp = &v[0];
|
|
233
|
+
|
|
234
|
+
for (int j = 0; j < WIDTH; j++)
|
|
235
|
+
{
|
|
236
|
+
sum += *mp * *sp;
|
|
237
|
+
mp++;
|
|
238
|
+
sp++;
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
*dp = sum;
|
|
242
|
+
dp++;
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
*/
|
|
246
|
+
|
|
247
|
+
T & operator() (int i, int j)
|
|
248
|
+
{ return data[i*WIDTH+j]; }
|
|
249
|
+
|
|
250
|
+
const T & operator() (int i, int j) const
|
|
251
|
+
{ return data[i*WIDTH+j]; }
|
|
252
|
+
|
|
253
|
+
|
|
254
|
+
MatrixFixWidth & operator*= (T v)
|
|
255
|
+
{
|
|
256
|
+
if (data)
|
|
257
|
+
for (int i = 0; i < height*WIDTH; i++)
|
|
258
|
+
data[i] *= v;
|
|
259
|
+
return *this;
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
|
|
263
|
+
|
|
264
|
+
const T & Get(int i, int j) const { return data[(i-1)*WIDTH+j-1]; }
|
|
265
|
+
///
|
|
266
|
+
const T & Get(int i) const { return data[i-1]; }
|
|
267
|
+
///
|
|
268
|
+
void Set(int i, int j, T v) { data[(i-1)*WIDTH+j-1] = v; }
|
|
269
|
+
///
|
|
270
|
+
T & Elem(int i, int j) { return data[(i-1)*WIDTH+j-1]; }
|
|
271
|
+
///
|
|
272
|
+
const T & ConstElem(int i, int j) const { return data[(i-1)*WIDTH+j-1]; }
|
|
273
|
+
};
|
|
274
|
+
|
|
275
|
+
|
|
276
|
+
template <int WIDTH>
|
|
277
|
+
class MatrixFixWidth<WIDTH,double>
|
|
278
|
+
{
|
|
279
|
+
protected:
|
|
280
|
+
int height;
|
|
281
|
+
double * data;
|
|
282
|
+
bool ownmem;
|
|
283
|
+
public:
|
|
284
|
+
///
|
|
285
|
+
MatrixFixWidth ()
|
|
286
|
+
{ height = 0; data = 0; ownmem = false; }
|
|
287
|
+
///
|
|
288
|
+
MatrixFixWidth (int h)
|
|
289
|
+
{ height = h; data = new double[WIDTH*height]; ownmem = true; }
|
|
290
|
+
|
|
291
|
+
MatrixFixWidth (const MatrixFixWidth & m2)
|
|
292
|
+
: height(m2.height), ownmem(true)
|
|
293
|
+
{
|
|
294
|
+
data = new double[height*WIDTH];
|
|
295
|
+
for (int i = 0; i < WIDTH*height; i++)
|
|
296
|
+
data[i] = m2.data[i];
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
///
|
|
300
|
+
MatrixFixWidth (int h, double * adata)
|
|
301
|
+
{ height = h; data = adata; ownmem = false; }
|
|
302
|
+
///
|
|
303
|
+
~MatrixFixWidth ()
|
|
304
|
+
{ if (ownmem) delete [] data; }
|
|
305
|
+
|
|
306
|
+
void SetSize (int h)
|
|
307
|
+
{
|
|
308
|
+
if (h != height)
|
|
309
|
+
{
|
|
310
|
+
if (ownmem) delete data;
|
|
311
|
+
height = h;
|
|
312
|
+
data = new double[WIDTH*height];
|
|
313
|
+
ownmem = true;
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
|
|
317
|
+
///
|
|
318
|
+
int Height() const { return height; }
|
|
319
|
+
|
|
320
|
+
///
|
|
321
|
+
int Width() const { return WIDTH; }
|
|
322
|
+
|
|
323
|
+
///
|
|
324
|
+
MatrixFixWidth & operator= (double v)
|
|
325
|
+
{
|
|
326
|
+
for (int i = 0; i < height*WIDTH; i++)
|
|
327
|
+
data[i] = v;
|
|
328
|
+
return *this;
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
///
|
|
332
|
+
void Mult (const FlatVector & v, FlatVector & prod) const
|
|
333
|
+
{
|
|
334
|
+
double sum;
|
|
335
|
+
const double * mp, * sp;
|
|
336
|
+
double * dp;
|
|
337
|
+
|
|
338
|
+
/*
|
|
339
|
+
if (prod.Size() != height)
|
|
340
|
+
{
|
|
341
|
+
cerr << "MatrixFixWidth::Mult: wrong vector size " << endl;
|
|
342
|
+
assert (1);
|
|
343
|
+
}
|
|
344
|
+
*/
|
|
345
|
+
|
|
346
|
+
mp = data;
|
|
347
|
+
dp = &prod[0];
|
|
348
|
+
for (int i = 0; i < height; i++)
|
|
349
|
+
{
|
|
350
|
+
sum = 0;
|
|
351
|
+
sp = &v[0];
|
|
352
|
+
|
|
353
|
+
for (int j = 0; j < WIDTH; j++)
|
|
354
|
+
{
|
|
355
|
+
sum += *mp * *sp;
|
|
356
|
+
mp++;
|
|
357
|
+
sp++;
|
|
358
|
+
}
|
|
359
|
+
|
|
360
|
+
*dp = sum;
|
|
361
|
+
dp++;
|
|
362
|
+
}
|
|
363
|
+
}
|
|
364
|
+
|
|
365
|
+
double & operator() (int i, int j)
|
|
366
|
+
{ return data[i*WIDTH+j]; }
|
|
367
|
+
|
|
368
|
+
const double & operator() (int i, int j) const
|
|
369
|
+
{ return data[i*WIDTH+j]; }
|
|
370
|
+
|
|
371
|
+
|
|
372
|
+
MatrixFixWidth & operator*= (double v)
|
|
373
|
+
{
|
|
374
|
+
if (data)
|
|
375
|
+
for (int i = 0; i < height*WIDTH; i++)
|
|
376
|
+
data[i] *= v;
|
|
377
|
+
return *this;
|
|
378
|
+
}
|
|
379
|
+
|
|
380
|
+
|
|
381
|
+
|
|
382
|
+
const double & Get(int i, int j) const { return data[(i-1)*WIDTH+j-1]; }
|
|
383
|
+
///
|
|
384
|
+
const double & Get(int i) const { return data[i-1]; }
|
|
385
|
+
///
|
|
386
|
+
void Set(int i, int j, double v) { data[(i-1)*WIDTH+j-1] = v; }
|
|
387
|
+
///
|
|
388
|
+
double & Elem(int i, int j) { return data[(i-1)*WIDTH+j-1]; }
|
|
389
|
+
///
|
|
390
|
+
const double & ConstElem(int i, int j) const { return data[(i-1)*WIDTH+j-1]; }
|
|
391
|
+
};
|
|
392
|
+
|
|
393
|
+
|
|
394
|
+
|
|
395
|
+
|
|
396
|
+
|
|
397
|
+
template <int WIDTH>
|
|
398
|
+
extern ostream & operator<< (ostream & ost, const MatrixFixWidth<WIDTH> & m)
|
|
399
|
+
{
|
|
400
|
+
for (int i = 0; i < m.Height(); i++)
|
|
401
|
+
{
|
|
402
|
+
for (int j = 0; j < m.Width(); j++)
|
|
403
|
+
ost << m.Get(i+1,j+1) << " ";
|
|
404
|
+
ost << endl;
|
|
405
|
+
}
|
|
406
|
+
return ost;
|
|
407
|
+
};
|
|
408
|
+
|
|
409
|
+
|
|
410
|
+
extern DLL_HEADER void CalcAtA (const DenseMatrix & a, DenseMatrix & m2);
|
|
411
|
+
extern DLL_HEADER void CalcInverse (const DenseMatrix & m1, DenseMatrix & m2);
|
|
412
|
+
|
|
413
|
+
} // namespace netgen
|
|
414
|
+
#endif
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
#ifndef FILE_LINALG
|
|
2
|
+
#define FILE_LINALG
|
|
3
|
+
|
|
4
|
+
/* *************************************************************************/
|
|
5
|
+
/* File: linalg.hpp */
|
|
6
|
+
/* Author: Joachim Schoeberl */
|
|
7
|
+
/* Date: 01. Oct. 94 */
|
|
8
|
+
/* *************************************************************************/
|
|
9
|
+
|
|
10
|
+
/*
|
|
11
|
+
|
|
12
|
+
Data types for basic linear algebra
|
|
13
|
+
|
|
14
|
+
The basic concepts include the data types
|
|
15
|
+
|
|
16
|
+
Vector
|
|
17
|
+
SparseMatrix
|
|
18
|
+
DenseMatrix
|
|
19
|
+
|
|
20
|
+
*/
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
#include "../include/myadt.hpp"
|
|
24
|
+
#include "vector.hpp"
|
|
25
|
+
#include "densemat.hpp"
|
|
26
|
+
#include "polynomial.hpp"
|
|
27
|
+
#endif
|
|
28
|
+
|
|
29
|
+
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
#ifndef FILE_OPTI
|
|
2
|
+
#define FILE_OPTI
|
|
3
|
+
|
|
4
|
+
/**************************************************************************/
|
|
5
|
+
/* File: opti.hpp */
|
|
6
|
+
/* Author: Joachim Schoeberl */
|
|
7
|
+
/* Date: 01. Jun. 95 */
|
|
8
|
+
/**************************************************************************/
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
namespace netgen
|
|
13
|
+
{
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
Function to be minimized.
|
|
17
|
+
*/
|
|
18
|
+
class MinFunction
|
|
19
|
+
{
|
|
20
|
+
public:
|
|
21
|
+
///
|
|
22
|
+
virtual double Func (const Vector & x) const;
|
|
23
|
+
///
|
|
24
|
+
virtual void Grad (const Vector & x, Vector & g) const;
|
|
25
|
+
/// function and gradient
|
|
26
|
+
virtual double FuncGrad (const Vector & x, Vector & g) const;
|
|
27
|
+
/// directional derivative
|
|
28
|
+
virtual double FuncDeriv (const Vector & x, const Vector & dir, double & deriv) const;
|
|
29
|
+
/// if |g| < gradaccuray, then stop bfgs
|
|
30
|
+
virtual double GradStopping (const Vector & /* x */) const { return 0; }
|
|
31
|
+
|
|
32
|
+
///
|
|
33
|
+
virtual void ApproximateHesse (const Vector & /* x */,
|
|
34
|
+
DenseMatrix & /* hesse */) const;
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
class OptiParameters
|
|
39
|
+
{
|
|
40
|
+
public:
|
|
41
|
+
int maxit_linsearch;
|
|
42
|
+
int maxit_bfgs;
|
|
43
|
+
double typf;
|
|
44
|
+
double typx;
|
|
45
|
+
|
|
46
|
+
OptiParameters ()
|
|
47
|
+
{
|
|
48
|
+
maxit_linsearch = 100;
|
|
49
|
+
maxit_bfgs = 100;
|
|
50
|
+
typf = 1;
|
|
51
|
+
typx = 1;
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
/** Implementation of BFGS method.
|
|
57
|
+
Efficient method for non-linear minimiztion problems.
|
|
58
|
+
@param x initial value and solution
|
|
59
|
+
@param fun function to be minimized
|
|
60
|
+
*/
|
|
61
|
+
extern double BFGS (Vector & x, const MinFunction & fun,
|
|
62
|
+
const OptiParameters & par,
|
|
63
|
+
double eps = 1e-8);
|
|
64
|
+
|
|
65
|
+
/** Steepest descent method.
|
|
66
|
+
Simple method for non-linear minimization problems.
|
|
67
|
+
@param x initial value and solution
|
|
68
|
+
@param fun function to be minimized
|
|
69
|
+
*/
|
|
70
|
+
void SteepestDescent (Vector & x, const MinFunction & fun,
|
|
71
|
+
const OptiParameters & par);
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
extern void lines (
|
|
75
|
+
Vector & x, // i: Ausgangspunkt der Liniensuche
|
|
76
|
+
Vector & xneu, // o: Loesung der Liniensuche bei Erfolg
|
|
77
|
+
Vector & p, // i: Suchrichtung
|
|
78
|
+
double & f, // i: Funktionswert an der Stelle x
|
|
79
|
+
// o: Funktionswert an der Stelle xneu, falls ifail = 0
|
|
80
|
+
Vector & g, // i: Gradient an der Stelle x
|
|
81
|
+
// o: Gradient an der Stelle xneu, falls ifail = 0
|
|
82
|
+
|
|
83
|
+
const MinFunction & fun, // function to minmize
|
|
84
|
+
const OptiParameters & par, // parameters
|
|
85
|
+
double & alphahat, // i: Startwert f�r alpha_hat
|
|
86
|
+
// o: Loesung falls ifail = 0
|
|
87
|
+
double fmin, // i: untere Schranke f�r f
|
|
88
|
+
double mu1, // i: Parameter mu_1 aus Alg.2.1
|
|
89
|
+
double sigma, // i: Parameter sigma aus Alg.2.1
|
|
90
|
+
double xi1, // i: Parameter xi_1 aus Alg.2.1
|
|
91
|
+
double xi2, // i: Parameter xi_1 aus Alg.2.1
|
|
92
|
+
double tau, // i: Parameter tau aus Alg.2.1
|
|
93
|
+
double tau1, // i: Parameter tau_1 aus Alg.2.1
|
|
94
|
+
double tau2, // i: Parameter tau_2 aus Alg.2.1
|
|
95
|
+
int & ifail); // o: 0 bei erfolgreicher Liniensuche
|
|
96
|
+
// -1 bei Abbruch wegen Unterschreiten von fmin
|
|
97
|
+
// 1 bei Abbruch, aus sonstigen Gr�nden
|
|
98
|
+
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
/**
|
|
103
|
+
Solver for linear programming problem.
|
|
104
|
+
|
|
105
|
+
\begin{verbatim}
|
|
106
|
+
min c^t x
|
|
107
|
+
A x <= b
|
|
108
|
+
\end{verbatim}
|
|
109
|
+
*/
|
|
110
|
+
extern void LinearOptimize (const DenseMatrix & a, const Vector & b,
|
|
111
|
+
const Vector & c, Vector & x);
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
#ifdef NONE
|
|
115
|
+
|
|
116
|
+
/**
|
|
117
|
+
Simple projection iteration.
|
|
118
|
+
|
|
119
|
+
find $u = argmin_{v >= 0} 0.5 u A u - f u$
|
|
120
|
+
*/
|
|
121
|
+
extern void ApproxProject (const BaseMatrix & a, Vector & u,
|
|
122
|
+
const Vector & f,
|
|
123
|
+
double tau, int its);
|
|
124
|
+
|
|
125
|
+
|
|
126
|
+
/**
|
|
127
|
+
CG Algorithm for quadratic programming problem.
|
|
128
|
+
See: Dostal ...
|
|
129
|
+
|
|
130
|
+
d ... diag(A) ^{-1}
|
|
131
|
+
*/
|
|
132
|
+
extern void ApproxProjectCG (const BaseMatrix & a, Vector & x,
|
|
133
|
+
const Vector & b, const class DiagMatrix & d,
|
|
134
|
+
double gamma, int & steps, int & changes);
|
|
135
|
+
|
|
136
|
+
#endif
|
|
137
|
+
|
|
138
|
+
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
#endif
|
|
142
|
+
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
#ifndef FILE_POLYNOMIAL
|
|
2
|
+
#define FILE_POLYNOMIAL
|
|
3
|
+
|
|
4
|
+
/* *************************************************************************/
|
|
5
|
+
/* File: polynomial.hh */
|
|
6
|
+
/* Author: Joachim Schoeberl */
|
|
7
|
+
/* Date: 25. Nov. 99 */
|
|
8
|
+
/* *************************************************************************/
|
|
9
|
+
|
|
10
|
+
namespace netgen
|
|
11
|
+
{
|
|
12
|
+
|
|
13
|
+
class QuadraticPolynomial1V
|
|
14
|
+
{
|
|
15
|
+
double c, cx, cxx;
|
|
16
|
+
public:
|
|
17
|
+
QuadraticPolynomial1V (double ac, double acx, double acxx);
|
|
18
|
+
double Value (double x);
|
|
19
|
+
double MaxUnitInterval ();
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
class LinearPolynomial2V
|
|
23
|
+
{
|
|
24
|
+
double c, cx, cy;
|
|
25
|
+
public:
|
|
26
|
+
LinearPolynomial2V (double ac, double acx, double acy);
|
|
27
|
+
friend class QuadraticPolynomial2V;
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
class QuadraticPolynomial2V
|
|
32
|
+
{
|
|
33
|
+
double c, cx, cy, cxx, cxy, cyy;
|
|
34
|
+
public:
|
|
35
|
+
QuadraticPolynomial2V ();
|
|
36
|
+
QuadraticPolynomial2V (double ac, double acx, double acy,
|
|
37
|
+
double acxx, double acxy, double acyy);
|
|
38
|
+
void Square (const LinearPolynomial2V & lp);
|
|
39
|
+
void Add (double lam, const QuadraticPolynomial2V & qp);
|
|
40
|
+
|
|
41
|
+
double Value (double x, double y);
|
|
42
|
+
// double MinUnitSquare ();
|
|
43
|
+
double MaxUnitSquare ();
|
|
44
|
+
double MaxUnitTriangle ();
|
|
45
|
+
};
|
|
46
|
+
} // namespace netgen
|
|
47
|
+
#endif
|