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,356 @@
1
+ #ifndef FILE_AUTODIFF
2
+ #define FILE_AUTODIFF
3
+
4
+ /**************************************************************************/
5
+ /* File: autodiff.hpp */
6
+ /* Author: Joachim Schoeberl */
7
+ /* Date: 24. Oct. 02 */
8
+ /**************************************************************************/
9
+
10
+ // Automatic differentiation datatype
11
+
12
+ namespace netgen
13
+ {
14
+
15
+ /**
16
+ Datatype for automatic differentiation.
17
+ Contains function value and D derivatives. Algebraic
18
+ operations are overloaded by using product-rule etc. etc.
19
+ **/
20
+ template <int D, typename SCAL = double>
21
+ class AutoDiff
22
+ {
23
+ SCAL val;
24
+ SCAL dval[D];
25
+ public:
26
+
27
+ typedef AutoDiff<D,SCAL> TELEM;
28
+ typedef SCAL TSCAL;
29
+
30
+
31
+ /// elements are undefined
32
+ AutoDiff () throw() { };
33
+ // { val = 0; for (int i = 0; i < D; i++) dval[i] = 0; } // !
34
+
35
+ /// copy constructor
36
+ AutoDiff (const AutoDiff & ad2) throw()
37
+ {
38
+ val = ad2.val;
39
+ for (int i = 0; i < D; i++)
40
+ dval[i] = ad2.dval[i];
41
+ }
42
+
43
+ /// initial object with constant value
44
+ AutoDiff (SCAL aval) throw()
45
+ {
46
+ val = aval;
47
+ for (int i = 0; i < D; i++)
48
+ dval[i] = 0;
49
+ }
50
+
51
+ /// init object with (val, e_diffindex)
52
+ AutoDiff (SCAL aval, int diffindex) throw()
53
+ {
54
+ val = aval;
55
+ for (int i = 0; i < D; i++)
56
+ dval[i] = 0;
57
+ dval[diffindex] = 1;
58
+ }
59
+
60
+ /// assign constant value
61
+ AutoDiff & operator= (SCAL aval) throw()
62
+ {
63
+ val = aval;
64
+ for (int i = 0; i < D; i++)
65
+ dval[i] = 0;
66
+ return *this;
67
+ }
68
+
69
+ /// returns value
70
+ SCAL Value() const throw() { return val; }
71
+
72
+ /// returns partial derivative
73
+ SCAL DValue (int i) const throw() { return dval[i]; }
74
+
75
+ /// access value
76
+ SCAL & Value() throw() { return val; }
77
+
78
+ /// accesses partial derivative
79
+ SCAL & DValue (int i) throw() { return dval[i]; }
80
+
81
+ ///
82
+ AutoDiff<D,SCAL> & operator+= (const AutoDiff<D,SCAL> & y) throw()
83
+ {
84
+ val += y.val;
85
+ for (int i = 0; i < D; i++)
86
+ dval[i] += y.dval[i];
87
+ return *this;
88
+ }
89
+
90
+ ///
91
+ AutoDiff<D,SCAL> & operator-= (const AutoDiff<D,SCAL> & y) throw()
92
+ {
93
+ val -= y.val;
94
+ for (int i = 0; i < D; i++)
95
+ dval[i] -= y.dval[i];
96
+ return *this;
97
+
98
+ }
99
+
100
+ ///
101
+ AutoDiff<D,SCAL> & operator*= (const AutoDiff<D,SCAL> & y) throw()
102
+ {
103
+ for (int i = 0; i < D; i++)
104
+ {
105
+ // dval[i] *= y.val;
106
+ // dval[i] += val * y.dval[i];
107
+ dval[i] = dval[i] * y.val + val * y.dval[i];
108
+ }
109
+ val *= y.val;
110
+ return *this;
111
+ }
112
+
113
+ ///
114
+ AutoDiff<D,SCAL> & operator*= (const SCAL & y) throw()
115
+ {
116
+ val *= y;
117
+ for (int i = 0; i < D; i++)
118
+ dval[i] *= y;
119
+ return *this;
120
+ }
121
+
122
+ ///
123
+ AutoDiff<D,SCAL> & operator/= (const SCAL & y) throw()
124
+ {
125
+ SCAL iy = 1.0 / y;
126
+ val *= iy;
127
+ for (int i = 0; i < D; i++)
128
+ dval[i] *= iy;
129
+ return *this;
130
+ }
131
+
132
+ ///
133
+ bool operator== (SCAL val2) throw()
134
+ {
135
+ return val == val2;
136
+ }
137
+
138
+ ///
139
+ bool operator!= (SCAL val2) throw()
140
+ {
141
+ return val != val2;
142
+ }
143
+
144
+ ///
145
+ bool operator< (SCAL val2) throw()
146
+ {
147
+ return val < val2;
148
+ }
149
+
150
+ ///
151
+ bool operator> (SCAL val2) throw()
152
+ {
153
+ return val > val2;
154
+ }
155
+ };
156
+
157
+
158
+ //@{ AutoDiff helper functions.
159
+
160
+ /// prints AutoDiff
161
+ template<int D, typename SCAL>
162
+ inline ostream & operator<< (ostream & ost, const AutoDiff<D,SCAL> & x)
163
+ {
164
+ ost << x.Value() << ", D = ";
165
+ for (int i = 0; i < D; i++)
166
+ ost << x.DValue(i) << " ";
167
+ return ost;
168
+ }
169
+
170
+ /// AutoDiff plus AutoDiff
171
+ template<int D, typename SCAL>
172
+ inline AutoDiff<D,SCAL> operator+ (const AutoDiff<D,SCAL> & x, const AutoDiff<D,SCAL> & y) throw()
173
+ {
174
+ AutoDiff<D,SCAL> res;
175
+ res.Value () = x.Value()+y.Value();
176
+ // AutoDiff<D,SCAL> res(x.Value()+y.Value());
177
+ for (int i = 0; i < D; i++)
178
+ res.DValue(i) = x.DValue(i) + y.DValue(i);
179
+ return res;
180
+ }
181
+
182
+
183
+ /// AutoDiff minus AutoDiff
184
+ template<int D, typename SCAL>
185
+ inline AutoDiff<D,SCAL> operator- (const AutoDiff<D,SCAL> & x, const AutoDiff<D,SCAL> & y) throw()
186
+ {
187
+ AutoDiff<D,SCAL> res;
188
+ res.Value() = x.Value()-y.Value();
189
+ // AutoDiff<D,SCAL> res (x.Value()-y.Value());
190
+ for (int i = 0; i < D; i++)
191
+ res.DValue(i) = x.DValue(i) - y.DValue(i);
192
+ return res;
193
+ }
194
+
195
+ /// double plus AutoDiff
196
+ template<int D, typename SCAL>
197
+ inline AutoDiff<D,SCAL> operator+ (double x, const AutoDiff<D,SCAL> & y) throw()
198
+ {
199
+ AutoDiff<D,SCAL> res;
200
+ res.Value() = x+y.Value();
201
+ for (int i = 0; i < D; i++)
202
+ res.DValue(i) = y.DValue(i);
203
+ return res;
204
+ }
205
+
206
+ /// AutoDiff plus double
207
+ template<int D, typename SCAL>
208
+ inline AutoDiff<D,SCAL> operator+ (const AutoDiff<D,SCAL> & y, double x) throw()
209
+ {
210
+ AutoDiff<D,SCAL> res;
211
+ res.Value() = x+y.Value();
212
+ for (int i = 0; i < D; i++)
213
+ res.DValue(i) = y.DValue(i);
214
+ return res;
215
+ }
216
+
217
+
218
+ /// minus AutoDiff
219
+ template<int D, typename SCAL>
220
+ inline AutoDiff<D,SCAL> operator- (const AutoDiff<D,SCAL> & x) throw()
221
+ {
222
+ AutoDiff<D,SCAL> res;
223
+ res.Value() = -x.Value();
224
+ for (int i = 0; i < D; i++)
225
+ res.DValue(i) = -x.DValue(i);
226
+ return res;
227
+ }
228
+
229
+ /// AutoDiff minus double
230
+ template<int D, typename SCAL>
231
+ inline AutoDiff<D,SCAL> operator- (const AutoDiff<D,SCAL> & x, double y) throw()
232
+ {
233
+ AutoDiff<D,SCAL> res;
234
+ res.Value() = x.Value()-y;
235
+ for (int i = 0; i < D; i++)
236
+ res.DValue(i) = x.DValue(i);
237
+ return res;
238
+ }
239
+
240
+ ///
241
+ template<int D, typename SCAL>
242
+ inline AutoDiff<D,SCAL> operator- (double x, const AutoDiff<D,SCAL> & y) throw()
243
+ {
244
+ AutoDiff<D,SCAL> res;
245
+ res.Value() = x-y.Value();
246
+ for (int i = 0; i < D; i++)
247
+ res.DValue(i) = -y.DValue(i);
248
+ return res;
249
+ }
250
+
251
+
252
+ /// double times AutoDiff
253
+ template<int D, typename SCAL>
254
+ inline AutoDiff<D,SCAL> operator* (double x, const AutoDiff<D,SCAL> & y) throw()
255
+ {
256
+ AutoDiff<D,SCAL> res;
257
+ res.Value() = x*y.Value();
258
+ for (int i = 0; i < D; i++)
259
+ res.DValue(i) = x*y.DValue(i);
260
+ return res;
261
+ }
262
+
263
+ /// AutoDiff times double
264
+ template<int D, typename SCAL>
265
+ inline AutoDiff<D,SCAL> operator* (const AutoDiff<D,SCAL> & y, double x) throw()
266
+ {
267
+ AutoDiff<D,SCAL> res;
268
+ res.Value() = x*y.Value();
269
+ for (int i = 0; i < D; i++)
270
+ res.DValue(i) = x*y.DValue(i);
271
+ return res;
272
+ }
273
+
274
+ /// AutoDiff times AutoDiff
275
+ template<int D, typename SCAL>
276
+ inline AutoDiff<D,SCAL> operator* (const AutoDiff<D,SCAL> & x, const AutoDiff<D,SCAL> & y) throw()
277
+ {
278
+ AutoDiff<D,SCAL> res;
279
+ SCAL hx = x.Value();
280
+ SCAL hy = y.Value();
281
+
282
+ res.Value() = hx*hy;
283
+ for (int i = 0; i < D; i++)
284
+ res.DValue(i) = hx*y.DValue(i) + hy*x.DValue(i);
285
+
286
+ return res;
287
+ }
288
+
289
+
290
+ /// Inverse of AutoDiff
291
+ template<int D, typename SCAL>
292
+ inline AutoDiff<D,SCAL> Inv (const AutoDiff<D,SCAL> & x)
293
+ {
294
+ AutoDiff<D,SCAL> res(1.0 / x.Value());
295
+ for (int i = 0; i < D; i++)
296
+ res.DValue(i) = -x.DValue(i) / (x.Value() * x.Value());
297
+ return res;
298
+ }
299
+
300
+
301
+ /// AutoDiff div AutoDiff
302
+ template<int D, typename SCAL>
303
+ inline AutoDiff<D,SCAL> operator/ (const AutoDiff<D,SCAL> & x, const AutoDiff<D,SCAL> & y)
304
+ {
305
+ return x * Inv (y);
306
+ }
307
+
308
+ /// AutoDiff div double
309
+ template<int D, typename SCAL>
310
+ inline AutoDiff<D,SCAL> operator/ (const AutoDiff<D,SCAL> & x, double y)
311
+ {
312
+ return (1/y) * x;
313
+ }
314
+
315
+ /// double div AutoDiff
316
+ template<int D, typename SCAL>
317
+ inline AutoDiff<D,SCAL> operator/ (double x, const AutoDiff<D,SCAL> & y)
318
+ {
319
+ return x * Inv(y);
320
+ }
321
+
322
+ } // namespace netgen
323
+
324
+ namespace ngcore
325
+ {
326
+ /// AutoDiff times AutoDiff
327
+ template<int D, typename SCAL>
328
+ inline netgen::AutoDiff<D,SCAL> sqr (const netgen::AutoDiff<D,SCAL> & x) throw()
329
+ {
330
+ netgen::AutoDiff<D,SCAL> res;
331
+ SCAL hx = x.Value();
332
+ res.Value() = hx*hx;
333
+ hx *= 2;
334
+ for (int i = 0; i < D; i++)
335
+ res.DValue(i) = hx*x.DValue(i);
336
+ return res;
337
+ }
338
+ } // namespace ngcore
339
+
340
+ namespace std
341
+ {
342
+ template<int D, typename SCAL>
343
+ inline netgen::AutoDiff<D,SCAL> fabs (const netgen::AutoDiff<D,SCAL> & x)
344
+ {
345
+ double abs = fabs (x.Value());
346
+ netgen::AutoDiff<D,SCAL> res( abs );
347
+ if (abs != 0.0)
348
+ for (int i = 0; i < D; i++)
349
+ res.DValue(i) = x.DValue(i) / abs;
350
+ else
351
+ for (int i = 0; i < D; i++)
352
+ res.DValue(i) = 0.0;
353
+ return res;
354
+ }
355
+ } // namespace std
356
+ #endif
@@ -0,0 +1,39 @@
1
+ braucht man nicht mehr
2
+
3
+ #ifndef FILE_AUTOPTR
4
+ #define FILE_AUTOPTR
5
+
6
+ /**************************************************************************/
7
+ /* File: autoptr.hpp */
8
+ /* Author: STL, Joachim Schoeberl */
9
+ /* Date: 29. Dec. 02 */
10
+ /**************************************************************************/
11
+
12
+ namespace netgen
13
+ {
14
+
15
+ /*
16
+ template <typename T>
17
+ class AutoPtr
18
+ {
19
+ private:
20
+ T * ptr;
21
+ public:
22
+ typedef T* pT;
23
+ explicit AutoPtr (T * p = 0) { ptr = p; }
24
+ ~AutoPtr () { delete ptr; }
25
+
26
+ T & operator*() const { return *ptr; }
27
+ T* operator->() const { return ptr; }
28
+ T *& Ptr() { return ptr; }
29
+ T * Ptr() const { return ptr; }
30
+ void Reset(T * p = 0) { if (p != ptr) { delete ptr; ptr = p; } }
31
+ operator bool () { return ptr != 0; }
32
+ private:
33
+ AutoPtr (AutoPtr &) { ; }
34
+ AutoPtr & operator= (AutoPtr &) { ; }
35
+ };
36
+ */
37
+ }
38
+
39
+ #endif
@@ -0,0 +1,121 @@
1
+ // ============================================================================
2
+ // gzstream, C++ iostream classes wrapping the zlib compression library.
3
+ // Copyright (C) 2001 Deepak Bandyopadhyay, Lutz Kettner
4
+ //
5
+ // This library is free software; you can redistribute it and/or
6
+ // modify it under the terms of the GNU Lesser General Public
7
+ // License as published by the Free Software Foundation; either
8
+ // version 2.1 of the License, or (at your option) any later version.
9
+ //
10
+ // This library is distributed in the hope that it will be useful,
11
+ // but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13
+ // Lesser General Public License for more details.
14
+ //
15
+ // You should have received a copy of the GNU Lesser General Public
16
+ // License along with this library; if not, write to the Free Software
17
+ // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18
+ // ============================================================================
19
+ //
20
+ // File : gzstream.h
21
+ // Revision : $Revision: 1.5 $
22
+ // Revision_date : $Date: 2002/04/26 23:30:15 $
23
+ // Author(s) : Deepak Bandyopadhyay, Lutz Kettner
24
+ //
25
+ // Standard streambuf implementation following Nicolai Josuttis, "The
26
+ // Standard C++ Library".
27
+ // ============================================================================
28
+
29
+ #ifndef GZSTREAM_H
30
+ #define GZSTREAM_H 1
31
+
32
+ // standard C++ with new header file names and std:: namespace
33
+ #include <iostream>
34
+ #include <fstream>
35
+ #include <zlib.h>
36
+
37
+ #ifdef GZSTREAM_NAMESPACE
38
+ namespace GZSTREAM_NAMESPACE {
39
+ #endif
40
+
41
+ // ----------------------------------------------------------------------------
42
+ // Internal classes to implement gzstream. See below for user classes.
43
+ // ----------------------------------------------------------------------------
44
+
45
+ class gzstreambuf : public std::streambuf {
46
+ private:
47
+ static const int bufferSize = 47+256; // size of data buff
48
+ // totals 512 bytes under g++ for igzstream at the end.
49
+
50
+ gzFile file; // file handle for compressed file
51
+ char buffer[bufferSize]; // data buffer
52
+ char opened; // open/close state of stream
53
+ int mode; // I/O mode
54
+
55
+ int flush_buffer();
56
+ public:
57
+ gzstreambuf() : opened(0) {
58
+ setp( buffer, buffer + (bufferSize-1));
59
+ setg( buffer + 4, // beginning of putback area
60
+ buffer + 4, // read position
61
+ buffer + 4); // end position
62
+ // ASSERT: both input & output capabilities will not be used together
63
+ }
64
+ int is_open() { return opened; }
65
+ gzstreambuf* open( const std::filesystem::path & name, int open_mode);
66
+ gzstreambuf* close();
67
+ ~gzstreambuf() { close(); }
68
+
69
+ virtual int overflow( int c = EOF);
70
+ virtual int underflow();
71
+ virtual int sync();
72
+ };
73
+
74
+ class DLL_HEADER gzstreambase : virtual public std::ios {
75
+ protected:
76
+ gzstreambuf buf;
77
+ public:
78
+ gzstreambase() { init(&buf); }
79
+ gzstreambase( const std::filesystem::path & name, int open_mode);
80
+ ~gzstreambase();
81
+ void open( const std::filesystem::path & name, int open_mode);
82
+ void close();
83
+ gzstreambuf* rdbuf() { return &buf; }
84
+ };
85
+
86
+ // ----------------------------------------------------------------------------
87
+ // User classes. Use igzstream and ogzstream analogously to ifstream and
88
+ // ofstream respectively. They read and write files based on the gz*
89
+ // function interface of the zlib. Files are compatible with gzip compression.
90
+ // ----------------------------------------------------------------------------
91
+
92
+ class DLL_HEADER igzstream : public gzstreambase, public std::istream {
93
+ public:
94
+ igzstream() : std::istream( &buf) {}
95
+ igzstream( const std::filesystem::path & name, int open_mode = std::ios::in)
96
+ : gzstreambase( name, open_mode), std::istream( &buf) {}
97
+ gzstreambuf* rdbuf() { return gzstreambase::rdbuf(); }
98
+ void open( const std::filesystem::path & name, int open_mode = std::ios::in) {
99
+ gzstreambase::open( name, open_mode);
100
+ }
101
+ };
102
+
103
+ class DLL_HEADER ogzstream : public gzstreambase, public std::ostream {
104
+ public:
105
+ ogzstream() : std::ostream( &buf) {}
106
+ ogzstream( const std::filesystem::path & name, int mode = std::ios::out)
107
+ : gzstreambase( name, mode), std::ostream( &buf) {}
108
+ gzstreambuf* rdbuf() { return gzstreambase::rdbuf(); }
109
+ void open( const std::filesystem::path & name, int open_mode = std::ios::out) {
110
+ gzstreambase::open( name, open_mode);
111
+ }
112
+ };
113
+
114
+ #ifdef GZSTREAM_NAMESPACE
115
+ } // namespace GZSTREAM_NAMESPACE
116
+ #endif
117
+
118
+ #endif // GZSTREAM_H
119
+ // ============================================================================
120
+ // EOF //
121
+