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.
Files changed (340) hide show
  1. netgen/NgOCC.py +7 -0
  2. netgen/__init__.py +114 -0
  3. netgen/__init__.pyi +22 -0
  4. netgen/__main__.py +53 -0
  5. netgen/cmake/NetgenConfig.cmake +79 -0
  6. netgen/cmake/netgen-targets-release.cmake +69 -0
  7. netgen/cmake/netgen-targets.cmake +146 -0
  8. netgen/config/__init__.py +1 -0
  9. netgen/config/__init__.pyi +52 -0
  10. netgen/config/__main__.py +4 -0
  11. netgen/config/config.py +68 -0
  12. netgen/config/config.pyi +54 -0
  13. netgen/csg.py +25 -0
  14. netgen/geom2d.py +178 -0
  15. netgen/gui.py +82 -0
  16. netgen/include/core/archive.hpp +1256 -0
  17. netgen/include/core/array.hpp +1760 -0
  18. netgen/include/core/autodiff.hpp +1131 -0
  19. netgen/include/core/autodiffdiff.hpp +733 -0
  20. netgen/include/core/bitarray.hpp +240 -0
  21. netgen/include/core/concurrentqueue.h +3619 -0
  22. netgen/include/core/exception.hpp +145 -0
  23. netgen/include/core/flags.hpp +199 -0
  24. netgen/include/core/hashtable.hpp +1281 -0
  25. netgen/include/core/localheap.hpp +318 -0
  26. netgen/include/core/logging.hpp +117 -0
  27. netgen/include/core/memtracer.hpp +221 -0
  28. netgen/include/core/mpi4py_pycapi.h +245 -0
  29. netgen/include/core/mpi_wrapper.hpp +643 -0
  30. netgen/include/core/ng_mpi.hpp +94 -0
  31. netgen/include/core/ng_mpi_generated_declarations.hpp +155 -0
  32. netgen/include/core/ng_mpi_native.hpp +25 -0
  33. netgen/include/core/ngcore.hpp +32 -0
  34. netgen/include/core/ngcore_api.hpp +152 -0
  35. netgen/include/core/ngstream.hpp +115 -0
  36. netgen/include/core/paje_trace.hpp +279 -0
  37. netgen/include/core/profiler.hpp +382 -0
  38. netgen/include/core/python_ngcore.hpp +457 -0
  39. netgen/include/core/ranges.hpp +109 -0
  40. netgen/include/core/register_archive.hpp +100 -0
  41. netgen/include/core/signal.hpp +82 -0
  42. netgen/include/core/simd.hpp +160 -0
  43. netgen/include/core/simd_arm64.hpp +407 -0
  44. netgen/include/core/simd_avx.hpp +394 -0
  45. netgen/include/core/simd_avx512.hpp +285 -0
  46. netgen/include/core/simd_generic.hpp +1053 -0
  47. netgen/include/core/simd_math.hpp +178 -0
  48. netgen/include/core/simd_sse.hpp +289 -0
  49. netgen/include/core/statushandler.hpp +37 -0
  50. netgen/include/core/symboltable.hpp +153 -0
  51. netgen/include/core/table.hpp +810 -0
  52. netgen/include/core/taskmanager.hpp +1161 -0
  53. netgen/include/core/type_traits.hpp +65 -0
  54. netgen/include/core/utils.hpp +385 -0
  55. netgen/include/core/version.hpp +102 -0
  56. netgen/include/core/xbool.hpp +47 -0
  57. netgen/include/csg/algprim.hpp +563 -0
  58. netgen/include/csg/brick.hpp +150 -0
  59. netgen/include/csg/csg.hpp +43 -0
  60. netgen/include/csg/csgeom.hpp +389 -0
  61. netgen/include/csg/csgparser.hpp +101 -0
  62. netgen/include/csg/curve2d.hpp +67 -0
  63. netgen/include/csg/edgeflw.hpp +112 -0
  64. netgen/include/csg/explicitcurve2d.hpp +113 -0
  65. netgen/include/csg/extrusion.hpp +185 -0
  66. netgen/include/csg/gencyl.hpp +70 -0
  67. netgen/include/csg/geoml.hpp +16 -0
  68. netgen/include/csg/identify.hpp +213 -0
  69. netgen/include/csg/manifold.hpp +29 -0
  70. netgen/include/csg/meshsurf.hpp +46 -0
  71. netgen/include/csg/polyhedra.hpp +121 -0
  72. netgen/include/csg/revolution.hpp +180 -0
  73. netgen/include/csg/singularref.hpp +84 -0
  74. netgen/include/csg/solid.hpp +295 -0
  75. netgen/include/csg/specpoin.hpp +194 -0
  76. netgen/include/csg/spline3d.hpp +99 -0
  77. netgen/include/csg/splinesurface.hpp +85 -0
  78. netgen/include/csg/surface.hpp +394 -0
  79. netgen/include/csg/triapprox.hpp +63 -0
  80. netgen/include/csg/vscsg.hpp +34 -0
  81. netgen/include/general/autodiff.hpp +356 -0
  82. netgen/include/general/autoptr.hpp +39 -0
  83. netgen/include/general/gzstream.h +121 -0
  84. netgen/include/general/hashtabl.hpp +1692 -0
  85. netgen/include/general/myadt.hpp +48 -0
  86. netgen/include/general/mystring.hpp +226 -0
  87. netgen/include/general/netgenout.hpp +205 -0
  88. netgen/include/general/ngarray.hpp +797 -0
  89. netgen/include/general/ngbitarray.hpp +149 -0
  90. netgen/include/general/ngpython.hpp +74 -0
  91. netgen/include/general/optmem.hpp +44 -0
  92. netgen/include/general/parthreads.hpp +138 -0
  93. netgen/include/general/seti.hpp +50 -0
  94. netgen/include/general/sort.hpp +47 -0
  95. netgen/include/general/spbita2d.hpp +59 -0
  96. netgen/include/general/stack.hpp +114 -0
  97. netgen/include/general/table.hpp +280 -0
  98. netgen/include/general/template.hpp +509 -0
  99. netgen/include/geom2d/csg2d.hpp +750 -0
  100. netgen/include/geom2d/geometry2d.hpp +280 -0
  101. netgen/include/geom2d/spline2d.hpp +234 -0
  102. netgen/include/geom2d/vsgeom2d.hpp +28 -0
  103. netgen/include/gprim/adtree.hpp +1392 -0
  104. netgen/include/gprim/geom2d.hpp +858 -0
  105. netgen/include/gprim/geom3d.hpp +749 -0
  106. netgen/include/gprim/geomfuncs.hpp +212 -0
  107. netgen/include/gprim/geomobjects.hpp +544 -0
  108. netgen/include/gprim/geomops.hpp +404 -0
  109. netgen/include/gprim/geomtest3d.hpp +101 -0
  110. netgen/include/gprim/gprim.hpp +33 -0
  111. netgen/include/gprim/spline.hpp +778 -0
  112. netgen/include/gprim/splinegeometry.hpp +73 -0
  113. netgen/include/gprim/transform3d.hpp +216 -0
  114. netgen/include/include/acisgeom.hpp +3 -0
  115. netgen/include/include/csg.hpp +1 -0
  116. netgen/include/include/geometry2d.hpp +1 -0
  117. netgen/include/include/gprim.hpp +1 -0
  118. netgen/include/include/incopengl.hpp +62 -0
  119. netgen/include/include/inctcl.hpp +13 -0
  120. netgen/include/include/incvis.hpp +6 -0
  121. netgen/include/include/linalg.hpp +1 -0
  122. netgen/include/include/meshing.hpp +1 -0
  123. netgen/include/include/myadt.hpp +1 -0
  124. netgen/include/include/mydefs.hpp +70 -0
  125. netgen/include/include/mystdlib.h +59 -0
  126. netgen/include/include/netgen_config.hpp +27 -0
  127. netgen/include/include/netgen_version.hpp +9 -0
  128. netgen/include/include/nginterface_v2_impl.hpp +395 -0
  129. netgen/include/include/ngsimd.hpp +1 -0
  130. netgen/include/include/occgeom.hpp +1 -0
  131. netgen/include/include/opti.hpp +1 -0
  132. netgen/include/include/parallel.hpp +1 -0
  133. netgen/include/include/stlgeom.hpp +1 -0
  134. netgen/include/include/visual.hpp +1 -0
  135. netgen/include/interface/rw_medit.hpp +11 -0
  136. netgen/include/interface/writeuser.hpp +80 -0
  137. netgen/include/linalg/densemat.hpp +414 -0
  138. netgen/include/linalg/linalg.hpp +29 -0
  139. netgen/include/linalg/opti.hpp +142 -0
  140. netgen/include/linalg/polynomial.hpp +47 -0
  141. netgen/include/linalg/vector.hpp +217 -0
  142. netgen/include/meshing/adfront2.hpp +274 -0
  143. netgen/include/meshing/adfront3.hpp +332 -0
  144. netgen/include/meshing/basegeom.hpp +370 -0
  145. netgen/include/meshing/bcfunctions.hpp +53 -0
  146. netgen/include/meshing/bisect.hpp +72 -0
  147. netgen/include/meshing/boundarylayer.hpp +113 -0
  148. netgen/include/meshing/classifyhpel.hpp +1984 -0
  149. netgen/include/meshing/clusters.hpp +46 -0
  150. netgen/include/meshing/curvedelems.hpp +274 -0
  151. netgen/include/meshing/delaunay2d.hpp +73 -0
  152. netgen/include/meshing/fieldlines.hpp +103 -0
  153. netgen/include/meshing/findip.hpp +198 -0
  154. netgen/include/meshing/findip2.hpp +103 -0
  155. netgen/include/meshing/geomsearch.hpp +69 -0
  156. netgen/include/meshing/global.hpp +54 -0
  157. netgen/include/meshing/hpref_hex.hpp +330 -0
  158. netgen/include/meshing/hpref_prism.hpp +3405 -0
  159. netgen/include/meshing/hpref_pyramid.hpp +154 -0
  160. netgen/include/meshing/hpref_quad.hpp +2082 -0
  161. netgen/include/meshing/hpref_segm.hpp +122 -0
  162. netgen/include/meshing/hpref_tet.hpp +4230 -0
  163. netgen/include/meshing/hpref_trig.hpp +848 -0
  164. netgen/include/meshing/hprefinement.hpp +366 -0
  165. netgen/include/meshing/improve2.hpp +178 -0
  166. netgen/include/meshing/improve3.hpp +151 -0
  167. netgen/include/meshing/localh.hpp +223 -0
  168. netgen/include/meshing/meshclass.hpp +1076 -0
  169. netgen/include/meshing/meshfunc.hpp +47 -0
  170. netgen/include/meshing/meshing.hpp +63 -0
  171. netgen/include/meshing/meshing2.hpp +163 -0
  172. netgen/include/meshing/meshing3.hpp +123 -0
  173. netgen/include/meshing/meshtool.hpp +90 -0
  174. netgen/include/meshing/meshtype.hpp +1930 -0
  175. netgen/include/meshing/msghandler.hpp +62 -0
  176. netgen/include/meshing/paralleltop.hpp +172 -0
  177. netgen/include/meshing/python_mesh.hpp +206 -0
  178. netgen/include/meshing/ruler2.hpp +172 -0
  179. netgen/include/meshing/ruler3.hpp +211 -0
  180. netgen/include/meshing/soldata.hpp +141 -0
  181. netgen/include/meshing/specials.hpp +17 -0
  182. netgen/include/meshing/surfacegeom.hpp +73 -0
  183. netgen/include/meshing/topology.hpp +1003 -0
  184. netgen/include/meshing/validate.hpp +21 -0
  185. netgen/include/meshing/visual_interface.hpp +71 -0
  186. netgen/include/mydefs.hpp +70 -0
  187. netgen/include/nginterface.h +474 -0
  188. netgen/include/nginterface_v2.hpp +406 -0
  189. netgen/include/nglib.h +697 -0
  190. netgen/include/nglib_occ.h +50 -0
  191. netgen/include/occ/occ_edge.hpp +47 -0
  192. netgen/include/occ/occ_face.hpp +52 -0
  193. netgen/include/occ/occ_solid.hpp +23 -0
  194. netgen/include/occ/occ_utils.hpp +376 -0
  195. netgen/include/occ/occ_vertex.hpp +30 -0
  196. netgen/include/occ/occgeom.hpp +659 -0
  197. netgen/include/occ/occmeshsurf.hpp +168 -0
  198. netgen/include/occ/vsocc.hpp +33 -0
  199. netgen/include/pybind11/LICENSE +29 -0
  200. netgen/include/pybind11/attr.h +722 -0
  201. netgen/include/pybind11/buffer_info.h +208 -0
  202. netgen/include/pybind11/cast.h +2361 -0
  203. netgen/include/pybind11/chrono.h +228 -0
  204. netgen/include/pybind11/common.h +2 -0
  205. netgen/include/pybind11/complex.h +74 -0
  206. netgen/include/pybind11/conduit/README.txt +15 -0
  207. netgen/include/pybind11/conduit/pybind11_conduit_v1.h +116 -0
  208. netgen/include/pybind11/conduit/pybind11_platform_abi_id.h +87 -0
  209. netgen/include/pybind11/conduit/wrap_include_python_h.h +72 -0
  210. netgen/include/pybind11/critical_section.h +56 -0
  211. netgen/include/pybind11/detail/class.h +823 -0
  212. netgen/include/pybind11/detail/common.h +1348 -0
  213. netgen/include/pybind11/detail/cpp_conduit.h +75 -0
  214. netgen/include/pybind11/detail/descr.h +226 -0
  215. netgen/include/pybind11/detail/dynamic_raw_ptr_cast_if_possible.h +39 -0
  216. netgen/include/pybind11/detail/exception_translation.h +71 -0
  217. netgen/include/pybind11/detail/function_record_pyobject.h +191 -0
  218. netgen/include/pybind11/detail/init.h +538 -0
  219. netgen/include/pybind11/detail/internals.h +799 -0
  220. netgen/include/pybind11/detail/native_enum_data.h +209 -0
  221. netgen/include/pybind11/detail/pybind11_namespace_macros.h +82 -0
  222. netgen/include/pybind11/detail/struct_smart_holder.h +378 -0
  223. netgen/include/pybind11/detail/type_caster_base.h +1591 -0
  224. netgen/include/pybind11/detail/typeid.h +65 -0
  225. netgen/include/pybind11/detail/using_smart_holder.h +22 -0
  226. netgen/include/pybind11/detail/value_and_holder.h +90 -0
  227. netgen/include/pybind11/eigen/common.h +9 -0
  228. netgen/include/pybind11/eigen/matrix.h +723 -0
  229. netgen/include/pybind11/eigen/tensor.h +521 -0
  230. netgen/include/pybind11/eigen.h +12 -0
  231. netgen/include/pybind11/embed.h +320 -0
  232. netgen/include/pybind11/eval.h +161 -0
  233. netgen/include/pybind11/functional.h +147 -0
  234. netgen/include/pybind11/gil.h +199 -0
  235. netgen/include/pybind11/gil_safe_call_once.h +102 -0
  236. netgen/include/pybind11/gil_simple.h +37 -0
  237. netgen/include/pybind11/iostream.h +265 -0
  238. netgen/include/pybind11/native_enum.h +67 -0
  239. netgen/include/pybind11/numpy.h +2312 -0
  240. netgen/include/pybind11/operators.h +202 -0
  241. netgen/include/pybind11/options.h +92 -0
  242. netgen/include/pybind11/pybind11.h +3645 -0
  243. netgen/include/pybind11/pytypes.h +2680 -0
  244. netgen/include/pybind11/stl/filesystem.h +114 -0
  245. netgen/include/pybind11/stl.h +666 -0
  246. netgen/include/pybind11/stl_bind.h +858 -0
  247. netgen/include/pybind11/subinterpreter.h +299 -0
  248. netgen/include/pybind11/trampoline_self_life_support.h +65 -0
  249. netgen/include/pybind11/type_caster_pyobject_ptr.h +61 -0
  250. netgen/include/pybind11/typing.h +298 -0
  251. netgen/include/pybind11/warnings.h +75 -0
  252. netgen/include/stlgeom/meshstlsurface.hpp +67 -0
  253. netgen/include/stlgeom/stlgeom.hpp +491 -0
  254. netgen/include/stlgeom/stlline.hpp +193 -0
  255. netgen/include/stlgeom/stltool.hpp +331 -0
  256. netgen/include/stlgeom/stltopology.hpp +419 -0
  257. netgen/include/stlgeom/vsstl.hpp +58 -0
  258. netgen/include/visualization/meshdoc.hpp +42 -0
  259. netgen/include/visualization/mvdraw.hpp +325 -0
  260. netgen/include/visualization/vispar.hpp +128 -0
  261. netgen/include/visualization/visual.hpp +28 -0
  262. netgen/include/visualization/visual_api.hpp +10 -0
  263. netgen/include/visualization/vssolution.hpp +399 -0
  264. netgen/lib/libnggui.lib +0 -0
  265. netgen/lib/ngcore.lib +0 -0
  266. netgen/lib/nglib.lib +0 -0
  267. netgen/lib/togl.lib +0 -0
  268. netgen/libnggui.dll +0 -0
  269. netgen/libngguipy.lib +0 -0
  270. netgen/libngguipy.pyd +0 -0
  271. netgen/libngpy/_NgOCC.pyi +1545 -0
  272. netgen/libngpy/__init__.pyi +7 -0
  273. netgen/libngpy/_csg.pyi +259 -0
  274. netgen/libngpy/_geom2d.pyi +323 -0
  275. netgen/libngpy/_meshing.pyi +1111 -0
  276. netgen/libngpy/_stl.pyi +131 -0
  277. netgen/libngpy.lib +0 -0
  278. netgen/libngpy.pyd +0 -0
  279. netgen/meshing.py +65 -0
  280. netgen/ngcore.dll +0 -0
  281. netgen/nglib.dll +0 -0
  282. netgen/occ.py +52 -0
  283. netgen/read_gmsh.py +259 -0
  284. netgen/read_meshio.py +22 -0
  285. netgen/stl.py +2 -0
  286. netgen/togl.dll +0 -0
  287. netgen/version.py +2 -0
  288. netgen/webgui.py +529 -0
  289. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/boundarycondition.geo +16 -0
  290. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/boxcyl.geo +32 -0
  291. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/circle_on_cube.geo +27 -0
  292. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/cone.geo +13 -0
  293. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/cube.geo +16 -0
  294. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/cubeandring.geo +55 -0
  295. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/cubeandspheres.geo +21 -0
  296. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/cubemcyl.geo +18 -0
  297. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/cubemsphere.geo +19 -0
  298. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/cylinder.geo +12 -0
  299. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/cylsphere.geo +12 -0
  300. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/doc/ng4.pdf +0 -0
  301. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/ellipsoid.geo +8 -0
  302. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/ellipticcyl.geo +10 -0
  303. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/extrusion.geo +99 -0
  304. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/fichera.geo +24 -0
  305. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/frame.step +11683 -0
  306. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/hinge.stl +8486 -0
  307. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/lshape3d.geo +26 -0
  308. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/manyholes.geo +26 -0
  309. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/manyholes2.geo +26 -0
  310. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/matrix.geo +27 -0
  311. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/ortho.geo +11 -0
  312. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/part1.stl +2662 -0
  313. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/period.geo +33 -0
  314. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/py_tutorials/exportNeutral.py +26 -0
  315. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/py_tutorials/mesh.py +19 -0
  316. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/py_tutorials/shaft.geo +65 -0
  317. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/revolution.geo +18 -0
  318. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/screw.step +1694 -0
  319. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/sculpture.geo +13 -0
  320. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/shaft.geo +65 -0
  321. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/shell.geo +10 -0
  322. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/sphere.geo +8 -0
  323. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/sphereincube.geo +17 -0
  324. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/square.in2d +35 -0
  325. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/squarecircle.in2d +48 -0
  326. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/squarehole.in2d +47 -0
  327. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/torus.geo +8 -0
  328. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/trafo.geo +57 -0
  329. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/twobricks.geo +15 -0
  330. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/twocubes.geo +18 -0
  331. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/twocyl.geo +16 -0
  332. netgen_mesher-6.2.2506.post35.dev0.dist-info/METADATA +15 -0
  333. netgen_mesher-6.2.2506.post35.dev0.dist-info/RECORD +340 -0
  334. netgen_mesher-6.2.2506.post35.dev0.dist-info/WHEEL +5 -0
  335. netgen_mesher-6.2.2506.post35.dev0.dist-info/entry_points.txt +2 -0
  336. netgen_mesher-6.2.2506.post35.dev0.dist-info/licenses/AUTHORS +1 -0
  337. netgen_mesher-6.2.2506.post35.dev0.dist-info/licenses/LICENSE +504 -0
  338. netgen_mesher-6.2.2506.post35.dev0.dist-info/top_level.txt +2 -0
  339. pyngcore/__init__.py +1 -0
  340. 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