ngsolve 6.2.2506.post75.dev0__cp314-cp314-manylinux_2_28_x86_64.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.

Potentially problematic release.


This version of ngsolve might be problematic. Click here for more details.

Files changed (303) hide show
  1. ngsolve-6.2.2506.post75.dev0.data/data/bin/ngs_nvcc +14 -0
  2. ngsolve-6.2.2506.post75.dev0.data/data/bin/ngs_nvlink +14 -0
  3. ngsolve-6.2.2506.post75.dev0.data/data/bin/ngscxx +15 -0
  4. ngsolve-6.2.2506.post75.dev0.data/data/bin/ngsld +11 -0
  5. ngsolve-6.2.2506.post75.dev0.data/data/bin/ngsolve.tcl +648 -0
  6. ngsolve-6.2.2506.post75.dev0.data/data/bin/ngspy +2 -0
  7. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/analytic_integrals.hpp +10 -0
  8. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/arnoldi.hpp +55 -0
  9. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/bandmatrix.hpp +334 -0
  10. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/basematrix.hpp +957 -0
  11. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/basevector.hpp +1268 -0
  12. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/bdbequations.hpp +2805 -0
  13. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/bdbintegrator.hpp +1660 -0
  14. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/bem_diffops.hpp +475 -0
  15. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/bessel.hpp +1064 -0
  16. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/bilinearform.hpp +963 -0
  17. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/bla.hpp +29 -0
  18. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/blockalloc.hpp +95 -0
  19. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/blockjacobi.hpp +328 -0
  20. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/bspline.hpp +116 -0
  21. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/calcinverse.hpp +141 -0
  22. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/cg.hpp +368 -0
  23. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/chebyshev.hpp +44 -0
  24. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/cholesky.hpp +720 -0
  25. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/clapack.h +7254 -0
  26. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/code_generation.hpp +296 -0
  27. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/coefficient.hpp +2033 -0
  28. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/coefficient_impl.hpp +19 -0
  29. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/coefficient_stdmath.hpp +167 -0
  30. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/commutingAMG.hpp +106 -0
  31. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/comp.hpp +79 -0
  32. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/compatibility.hpp +41 -0
  33. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/complex_wrapper.hpp +73 -0
  34. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/compressedfespace.hpp +110 -0
  35. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/contact.hpp +235 -0
  36. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/cuda_linalg.hpp +175 -0
  37. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/cuda_ngbla.hpp +226 -0
  38. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/cuda_ngstd.hpp +527 -0
  39. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/cuda_profiler.hpp +240 -0
  40. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/diagonalmatrix.hpp +154 -0
  41. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/differentialoperator.hpp +276 -0
  42. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/diffop.hpp +1286 -0
  43. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/diffop_impl.hpp +328 -0
  44. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/diffopwithfactor.hpp +123 -0
  45. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/discontinuous.hpp +84 -0
  46. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/dump.hpp +949 -0
  47. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/ectypes.hpp +121 -0
  48. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/eigen.hpp +60 -0
  49. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/eigensystem.hpp +18 -0
  50. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/elasticity_equations.hpp +595 -0
  51. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/elementbyelement.hpp +195 -0
  52. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/elementtopology.hpp +1760 -0
  53. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/elementtransformation.hpp +339 -0
  54. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/evalfunc.hpp +405 -0
  55. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/expr.hpp +1686 -0
  56. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/facetfe.hpp +175 -0
  57. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/facetfespace.hpp +180 -0
  58. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/facethofe.hpp +111 -0
  59. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/facetsurffespace.hpp +112 -0
  60. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/fe_interfaces.hpp +32 -0
  61. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/fem.hpp +87 -0
  62. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/fesconvert.hpp +14 -0
  63. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/fespace.hpp +1449 -0
  64. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/finiteelement.hpp +286 -0
  65. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/globalinterfacespace.hpp +77 -0
  66. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/globalspace.hpp +115 -0
  67. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/gridfunction.hpp +525 -0
  68. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/h1amg.hpp +124 -0
  69. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/h1hofe.hpp +188 -0
  70. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/h1hofe_impl.hpp +1262 -0
  71. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/h1hofefo.hpp +148 -0
  72. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/h1hofefo_impl.hpp +185 -0
  73. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/h1hofespace.hpp +167 -0
  74. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/h1lofe.hpp +1240 -0
  75. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/h1lumping.hpp +41 -0
  76. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/hcurl_equations.hpp +1381 -0
  77. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/hcurlcurlfe.hpp +2241 -0
  78. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/hcurlcurlfespace.hpp +78 -0
  79. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/hcurlfe.hpp +259 -0
  80. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/hcurlfe_utils.hpp +107 -0
  81. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/hcurlhdiv_dshape.hpp +857 -0
  82. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/hcurlhdivfes.hpp +308 -0
  83. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/hcurlhofe.hpp +175 -0
  84. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/hcurlhofe_impl.hpp +1871 -0
  85. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/hcurlhofespace.hpp +193 -0
  86. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/hcurllofe.hpp +1146 -0
  87. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/hdiv_equations.hpp +880 -0
  88. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/hdivdivfe.hpp +2923 -0
  89. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/hdivdivsurfacespace.hpp +76 -0
  90. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/hdivfe.hpp +206 -0
  91. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/hdivfe_utils.hpp +717 -0
  92. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/hdivfes.hpp +75 -0
  93. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/hdivhofe.hpp +447 -0
  94. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/hdivhofe_impl.hpp +1107 -0
  95. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/hdivhofefo.hpp +229 -0
  96. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/hdivhofespace.hpp +177 -0
  97. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/hdivhosurfacefespace.hpp +106 -0
  98. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/hdivlofe.hpp +773 -0
  99. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/hidden.hpp +74 -0
  100. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/householder.hpp +181 -0
  101. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/hypre_ams_precond.hpp +123 -0
  102. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/hypre_precond.hpp +73 -0
  103. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/integrator.hpp +2012 -0
  104. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/integratorcf.hpp +253 -0
  105. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/interpolate.hpp +49 -0
  106. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/intrule.hpp +2542 -0
  107. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/intrules_SauterSchwab.hpp +25 -0
  108. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/irspace.hpp +49 -0
  109. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/jacobi.hpp +153 -0
  110. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/kernels.hpp +762 -0
  111. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/l2hofe.hpp +194 -0
  112. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/l2hofe_impl.hpp +564 -0
  113. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/l2hofefo.hpp +542 -0
  114. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/l2hofespace.hpp +344 -0
  115. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/la.hpp +38 -0
  116. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/linalg_kernels.hpp +102 -0
  117. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/linearform.hpp +266 -0
  118. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/matrix.hpp +2140 -0
  119. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/memusage.hpp +41 -0
  120. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/meshaccess.hpp +1359 -0
  121. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/mgpre.hpp +204 -0
  122. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/mp_coefficient.hpp +145 -0
  123. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/mptools.hpp +2281 -0
  124. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/multigrid.hpp +42 -0
  125. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/multivector.hpp +447 -0
  126. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/mumpsinverse.hpp +187 -0
  127. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/mycomplex.hpp +361 -0
  128. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/ng_lapack.hpp +1661 -0
  129. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/ngblas.hpp +1232 -0
  130. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/ngs_defines.hpp +30 -0
  131. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/ngs_stdcpp_include.hpp +106 -0
  132. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/ngs_utils.hpp +121 -0
  133. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/ngsobject.hpp +1019 -0
  134. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/ngsstream.hpp +113 -0
  135. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/ngstd.hpp +72 -0
  136. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/nodalhofe.hpp +96 -0
  137. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/nodalhofe_impl.hpp +141 -0
  138. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/normalfacetfe.hpp +223 -0
  139. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/normalfacetfespace.hpp +98 -0
  140. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/normalfacetsurfacefespace.hpp +84 -0
  141. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/order.hpp +251 -0
  142. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/parallel_matrices.hpp +222 -0
  143. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/paralleldofs.hpp +340 -0
  144. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/parallelngs.hpp +23 -0
  145. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/parallelvector.hpp +269 -0
  146. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/pardisoinverse.hpp +200 -0
  147. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/periodic.hpp +129 -0
  148. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/plateaufespace.hpp +25 -0
  149. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/pml.hpp +275 -0
  150. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/pmltrafo.hpp +631 -0
  151. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/postproc.hpp +142 -0
  152. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/potentialtools.hpp +22 -0
  153. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/precomp.hpp +60 -0
  154. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/preconditioner.hpp +602 -0
  155. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/prolongation.hpp +377 -0
  156. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/python_comp.hpp +107 -0
  157. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/python_fem.hpp +89 -0
  158. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/python_linalg.hpp +58 -0
  159. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/python_ngstd.hpp +386 -0
  160. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/recursive_pol.hpp +4896 -0
  161. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/recursive_pol_tet.hpp +395 -0
  162. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/recursive_pol_trig.hpp +492 -0
  163. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/reorderedfespace.hpp +81 -0
  164. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/sample_sort.hpp +105 -0
  165. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/scalarfe.hpp +335 -0
  166. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/shapefunction_utils.hpp +113 -0
  167. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/simd_complex.hpp +329 -0
  168. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/smoother.hpp +253 -0
  169. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/solve.hpp +89 -0
  170. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/sparsecholesky.hpp +313 -0
  171. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/sparsematrix.hpp +1038 -0
  172. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/sparsematrix_dyn.hpp +90 -0
  173. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/sparsematrix_impl.hpp +1013 -0
  174. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/special_matrix.hpp +463 -0
  175. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/specialelement.hpp +125 -0
  176. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/statushandler.hpp +33 -0
  177. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/stringops.hpp +12 -0
  178. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/superluinverse.hpp +136 -0
  179. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/symbolicintegrator.hpp +850 -0
  180. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/symmetricmatrix.hpp +144 -0
  181. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/tangentialfacetfe.hpp +224 -0
  182. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/tangentialfacetfespace.hpp +91 -0
  183. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/tensor.hpp +522 -0
  184. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/tensorcoefficient.hpp +446 -0
  185. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/tensorproductintegrator.hpp +113 -0
  186. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/thcurlfe.hpp +128 -0
  187. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/thcurlfe_impl.hpp +380 -0
  188. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/thdivfe.hpp +80 -0
  189. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/thdivfe_impl.hpp +492 -0
  190. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/tpdiffop.hpp +461 -0
  191. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/tpfes.hpp +133 -0
  192. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/tpintrule.hpp +224 -0
  193. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/triangular.hpp +465 -0
  194. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/tscalarfe.hpp +245 -0
  195. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/tscalarfe_impl.hpp +1029 -0
  196. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/umfpackinverse.hpp +148 -0
  197. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/unifiedvector.hpp +103 -0
  198. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/vector.hpp +1273 -0
  199. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/voxelcoefficientfunction.hpp +41 -0
  200. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/vtkoutput.hpp +198 -0
  201. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/vvector.hpp +208 -0
  202. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/webgui.hpp +92 -0
  203. ngsolve-6.2.2506.post75.dev0.data/data/lib/cmake/ngsolve/NGSolveConfig.cmake +102 -0
  204. ngsolve-6.2.2506.post75.dev0.data/data/lib/cmake/ngsolve/ngsolve-targets-release.cmake +89 -0
  205. ngsolve-6.2.2506.post75.dev0.data/data/lib/cmake/ngsolve/ngsolve-targets.cmake +173 -0
  206. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/netgen_mesher.libs/libngbla.so +0 -0
  207. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/netgen_mesher.libs/libngcomp.so +0 -0
  208. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/netgen_mesher.libs/libngfem.so +0 -0
  209. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/netgen_mesher.libs/libngla.so +0 -0
  210. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/netgen_mesher.libs/libngsbem.so +0 -0
  211. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/netgen_mesher.libs/libngscudalib.so +0 -0
  212. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/netgen_mesher.libs/libngsolve.so +0 -0
  213. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/netgen_mesher.libs/libngstd.so +0 -0
  214. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/TensorProductTools.py +210 -0
  215. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/__console.py +94 -0
  216. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/__expr.py +181 -0
  217. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/__init__.py +148 -0
  218. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/_scikit_build_core_dependencies.py +30 -0
  219. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/bvp.py +78 -0
  220. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/config/__init__.py +1 -0
  221. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/config/__main__.py +4 -0
  222. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/config/config.py +60 -0
  223. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/TensorProduct/__init__.py +0 -0
  224. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/TensorProduct/tp_dg_1d_1d.py +80 -0
  225. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/TensorProduct/tp_dg_1d_2d.py +73 -0
  226. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/TensorProduct/tp_dg_2d_1d.py +72 -0
  227. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/TensorProduct/tp_dg_2d_2d.py +66 -0
  228. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/__init__.py +0 -0
  229. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/howto/__init__.py +0 -0
  230. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/howto/hhj.py +44 -0
  231. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/howto/hybrid_dg.py +53 -0
  232. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/howto/mixed.py +30 -0
  233. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/howto/nonlin.py +29 -0
  234. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/howto/pickling.py +26 -0
  235. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/howto/pml.py +31 -0
  236. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/howto/taskmanager.py +20 -0
  237. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/howto/tdnns.py +47 -0
  238. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/howto/timeDG-skeleton.py +45 -0
  239. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/howto/timeDG.py +38 -0
  240. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/howto/timeDGlap.py +42 -0
  241. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/howto/timeDGwave.py +61 -0
  242. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/intro/__init__.py +0 -0
  243. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/intro/adaptive.py +123 -0
  244. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/intro/cmagnet.py +59 -0
  245. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/intro/elasticity.py +76 -0
  246. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/intro/navierstokes.py +74 -0
  247. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/intro/poisson.ipynb +170 -0
  248. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/intro/poisson.py +41 -0
  249. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/mpi/__init__.py +0 -0
  250. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/mpi/mpi_cmagnet.py +87 -0
  251. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/mpi/mpi_navierstokes.py +117 -0
  252. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/mpi/mpi_poisson.py +89 -0
  253. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/mpi/mpi_timeDG.py +82 -0
  254. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/directsolvers.py +26 -0
  255. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/eigenvalues.py +364 -0
  256. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/internal.py +89 -0
  257. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/krylovspace.py +1013 -0
  258. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/meshes.py +748 -0
  259. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/ngs2petsc.py +310 -0
  260. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/ngscuda.so +0 -0
  261. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/ngscxx.py +42 -0
  262. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/ngslib.so +0 -0
  263. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/nonlinearsolvers.py +203 -0
  264. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/preconditioners.py +11 -0
  265. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/solve_implementation.py +168 -0
  266. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/solvers.py +7 -0
  267. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/timestepping.py +185 -0
  268. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/timing.py +108 -0
  269. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/utils.py +167 -0
  270. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/webgui.py +670 -0
  271. ngsolve-6.2.2506.post75.dev0.data/data/share/ngsolve/beam.geo +17 -0
  272. ngsolve-6.2.2506.post75.dev0.data/data/share/ngsolve/beam.vol +240 -0
  273. ngsolve-6.2.2506.post75.dev0.data/data/share/ngsolve/chip.in2d +41 -0
  274. ngsolve-6.2.2506.post75.dev0.data/data/share/ngsolve/chip.vol +614 -0
  275. ngsolve-6.2.2506.post75.dev0.data/data/share/ngsolve/coil.geo +12 -0
  276. ngsolve-6.2.2506.post75.dev0.data/data/share/ngsolve/coil.vol +2560 -0
  277. ngsolve-6.2.2506.post75.dev0.data/data/share/ngsolve/coilshield.geo +24 -0
  278. ngsolve-6.2.2506.post75.dev0.data/data/share/ngsolve/coilshield.vol +3179 -0
  279. ngsolve-6.2.2506.post75.dev0.data/data/share/ngsolve/cube.geo +19 -0
  280. ngsolve-6.2.2506.post75.dev0.data/data/share/ngsolve/cube.vol +1832 -0
  281. ngsolve-6.2.2506.post75.dev0.data/data/share/ngsolve/d10_DGdoubleglazing.pde +50 -0
  282. ngsolve-6.2.2506.post75.dev0.data/data/share/ngsolve/d11_chip_nitsche.pde +40 -0
  283. ngsolve-6.2.2506.post75.dev0.data/data/share/ngsolve/d1_square.pde +43 -0
  284. ngsolve-6.2.2506.post75.dev0.data/data/share/ngsolve/d2_chip.pde +35 -0
  285. ngsolve-6.2.2506.post75.dev0.data/data/share/ngsolve/d3_helmholtz.pde +22 -0
  286. ngsolve-6.2.2506.post75.dev0.data/data/share/ngsolve/d4_cube.pde +46 -0
  287. ngsolve-6.2.2506.post75.dev0.data/data/share/ngsolve/d5_beam.pde +74 -0
  288. ngsolve-6.2.2506.post75.dev0.data/data/share/ngsolve/d6_shaft.pde +73 -0
  289. ngsolve-6.2.2506.post75.dev0.data/data/share/ngsolve/d7_coil.pde +50 -0
  290. ngsolve-6.2.2506.post75.dev0.data/data/share/ngsolve/d8_coilshield.pde +49 -0
  291. ngsolve-6.2.2506.post75.dev0.data/data/share/ngsolve/d9_hybridDG.pde +72 -0
  292. ngsolve-6.2.2506.post75.dev0.data/data/share/ngsolve/doubleglazing.in2d +27 -0
  293. ngsolve-6.2.2506.post75.dev0.data/data/share/ngsolve/doubleglazing.vol +737 -0
  294. ngsolve-6.2.2506.post75.dev0.data/data/share/ngsolve/piezo2d40round4.vol.gz +0 -0
  295. ngsolve-6.2.2506.post75.dev0.data/data/share/ngsolve/shaft.geo +73 -0
  296. ngsolve-6.2.2506.post75.dev0.data/data/share/ngsolve/shaft.vol +4291 -0
  297. ngsolve-6.2.2506.post75.dev0.data/data/share/ngsolve/square.in2d +17 -0
  298. ngsolve-6.2.2506.post75.dev0.data/data/share/ngsolve/square.vol +149 -0
  299. ngsolve-6.2.2506.post75.dev0.dist-info/METADATA +14 -0
  300. ngsolve-6.2.2506.post75.dev0.dist-info/RECORD +303 -0
  301. ngsolve-6.2.2506.post75.dev0.dist-info/WHEEL +5 -0
  302. ngsolve-6.2.2506.post75.dev0.dist-info/licenses/LICENSE +504 -0
  303. ngsolve-6.2.2506.post75.dev0.dist-info/top_level.txt +1 -0
@@ -0,0 +1,522 @@
1
+ #include <bla.hpp>
2
+
3
+
4
+
5
+
6
+
7
+ /*
8
+ // example use of tensors:
9
+
10
+ int main ()
11
+ {
12
+ Tensor<3> tensor(3,3,3);
13
+ Tensor<3> tensor2(3,3,3);
14
+
15
+ Matrix<> mat(3,3);
16
+ mat = 0;
17
+ for (int i = 0; i < mat.Height(); i++)
18
+ mat(i,i) = i+1;
19
+
20
+ cout << "mat = " << endl << mat << endl;
21
+
22
+ tensor = 1.0;
23
+
24
+ for (int j = 0; j < 3; j++)
25
+ tensor2(j,STAR,STAR) = j * mat * tensor(STAR,STAR,j);
26
+
27
+ cout << "tensor2 = " << endl << tensor2 << endl;
28
+
29
+ cout << "sub = " << endl << tensor2(STAR,STAR,0) << endl;
30
+
31
+ return 0;
32
+ }
33
+
34
+ */
35
+
36
+
37
+ namespace ngbla
38
+ {
39
+
40
+
41
+ enum typestar { STAR };
42
+
43
+ template <int DIM, typename T = double, int DIMLIN = DIM> class FlatTensor;
44
+
45
+
46
+
47
+
48
+ template <int DIM, typename T, int LINDIM>
49
+ INLINE auto LargerTensor (FlatTensor<DIM,T,LINDIM> tensor, size_t as, size_t ad)
50
+ // -> FlatTensor<DIM+1,T,LINDIM>
51
+ {
52
+ return FlatTensor<DIM+1,T,LINDIM> (as, ad, tensor);
53
+ }
54
+
55
+ /*
56
+ template <typename T, int LINDIM>
57
+ INLINE auto LargerTensor (FlatTensor<0,T,LINDIM> tensor, int as, int ad)
58
+ -> SliceVector<T>
59
+ {
60
+ return SliceVector<T> (as, ad, tensor.Data());
61
+ }
62
+ */
63
+ template <typename T>
64
+ INLINE auto LargerTensor (FlatTensor<0,T,0> tensor, size_t as, size_t ad)
65
+ // -> SliceVector<T>
66
+ {
67
+ return SliceVector<T> (as, ad, tensor.Data());
68
+ }
69
+ template <typename T, int LINDIM>
70
+ INLINE auto LargerTensor (FlatTensor<0,T,LINDIM> tensor, size_t as, size_t ad)
71
+ // -> FlatVector<T>
72
+ {
73
+ return FlatVector<T> (as, tensor.Data());
74
+ }
75
+
76
+
77
+ template <typename T>
78
+ INLINE auto LargerTensor (SliceVector<T> vec, size_t as, size_t ad)
79
+ // -> DoubleSliceMatrix<T>
80
+ {
81
+ return DoubleSliceMatrix<T> (as, vec.Size(),
82
+ ad, vec.Dist(), vec.Data());
83
+ }
84
+
85
+ template <typename T>
86
+ INLINE auto LargerTensor (FlatVector<T> vec, int as, int ad)
87
+ // -> SliceMatrix<T>
88
+ {
89
+ return SliceMatrix<T> (as, vec.Size(),
90
+ ad, vec.Data());
91
+ }
92
+
93
+
94
+
95
+
96
+ template <typename T>
97
+ INLINE auto LargerTensor (DoubleSliceMatrix<T> mat, int as, int ad)
98
+ -> FlatTensor<3,T,0>
99
+ {
100
+ FlatTensor<2,T,0> tens (mat.Height(), mat.DistRow(),
101
+ FlatTensor<1,T> (mat.Width(),mat.DistCol(),
102
+ FlatTensor<0,T> (mat.Data())));
103
+
104
+ return LargerTensor (tens , as, ad);
105
+ }
106
+
107
+ template <typename T>
108
+ INLINE auto LargerTensor (SliceMatrix<T> mat, int as, int ad)
109
+ -> FlatTensor<3,T,0>
110
+ {
111
+ FlatTensor<2,T,1> tens (mat.Height(), mat.Dist(),
112
+ FlatTensor<1,T,1> (mat.Width(),1,
113
+ FlatTensor<0,T,1> (mat.Data())));
114
+
115
+ return LargerTensor (tens , as, ad);
116
+ }
117
+
118
+
119
+
120
+
121
+
122
+
123
+
124
+ template <int DIM, typename T, int LINDIM>
125
+ INLINE auto OffsetTensor (FlatTensor<DIM,T,LINDIM> tensor, int offset)
126
+ -> FlatTensor<DIM,T,((LINDIM<DIM)?LINDIM:DIM)>
127
+ {
128
+ tensor.Data() += offset;
129
+ return tensor;
130
+ }
131
+
132
+ template <typename T>
133
+ INLINE auto OffsetTensor (SliceVector<T> vec, int offset)
134
+ //-> SliceVector<T>
135
+ {
136
+ return SliceVector<T> (vec.Size(), vec.Dist(), vec.Data()+offset);
137
+ }
138
+
139
+ template <typename T>
140
+ INLINE auto OffsetTensor (FlatVector<T> vec, int offset)
141
+ // -> FlatVector<T>
142
+ {
143
+ return FlatVector<T> (vec.Size(), vec.Data()+offset);
144
+ }
145
+
146
+ template <typename T>
147
+ INLINE auto OffsetTensor (DoubleSliceMatrix<T> mat, int offset)
148
+ // -> DoubleSliceMatrix<T>
149
+ {
150
+ return DoubleSliceMatrix<T> (mat.Height(),mat.Width(),
151
+ mat.DistRow(),mat.DistCol(),
152
+ mat.Data()+offset);
153
+ }
154
+
155
+ template <typename T>
156
+ INLINE auto OffsetTensor (SliceMatrix<T> mat, int offset)
157
+ // -> SliceMatrix<T>
158
+ {
159
+ return SliceMatrix<T> (mat.Height(),mat.Width(),
160
+ mat.Dist(),
161
+ &mat(0,0)+offset);
162
+ }
163
+
164
+
165
+ // a 0-tensor is treated as number:
166
+ template <typename T> auto ReduceTensor0 (T tensor) { return tensor; }
167
+ template <typename T, int DIMLIN> T & ReduceTensor0 (FlatTensor<0,T,DIMLIN> tensor) { return *tensor.Data(); }
168
+
169
+
170
+ template <int DIM, typename T, int DIMLIN>
171
+ class FlatTensor
172
+ {
173
+ size_t size;
174
+ size_t dist;
175
+ FlatTensor<DIM-1,T, DIMLIN> sub;
176
+
177
+
178
+ public:
179
+ FlatTensor () : size(0), dist(0) { ; }
180
+
181
+ template <typename ... ARG>
182
+ FlatTensor (size_t s, ARG ... args) : size(s), sub(args...)
183
+ {
184
+ dist = sub.GetSize()*sub.GetDist();
185
+ }
186
+
187
+ template <typename ... ARG>
188
+ FlatTensor (LocalHeap & lh, ARG ... args)
189
+ : FlatTensor (args...)
190
+ {
191
+ size_t totsize = this->GetTotalSize();
192
+ // TODO: why this call instead of lh.Alloc<T> as in FlatMatrix?
193
+ this->Data() = new(lh) T[totsize];
194
+ }
195
+
196
+ template <typename ... ARG>
197
+ FlatTensor (T * data, ARG ... args)
198
+ : FlatTensor (args...)
199
+ {
200
+ this->Data() = data;
201
+ }
202
+
203
+
204
+ FlatTensor (size_t as, size_t ad, FlatTensor<DIM-1,T> asub)
205
+ : size(as), dist(ad), sub(asub) { ; }
206
+
207
+ template <int DIMLIN2>
208
+ FlatTensor (FlatTensor<DIM,T,DIMLIN2> t2)
209
+ : size(t2.GetSize()), dist(t2.GetDist()), sub(t2.GetSubTensor())
210
+ {
211
+ static_assert(DIMLIN <= DIMLIN2, "illegal tensor copy");
212
+ ;
213
+ }
214
+
215
+
216
+ template <typename ... ARG>
217
+ auto braces (size_t i, ARG ... args) const
218
+ {
219
+ return OffsetTensor (sub.braces(args...), i*dist);
220
+ }
221
+
222
+ template <typename ... ARG>
223
+ auto braces (typestar star, ARG ... args) const
224
+ {
225
+ return LargerTensor(sub.braces(args...), size, dist);
226
+ }
227
+
228
+
229
+ template <typename ... ARG>
230
+ auto operator() (size_t i, ARG ... args) const
231
+ -> decltype (ReduceTensor0 (this->braces(i,args...)))
232
+ {
233
+ return ReduceTensor0 (braces(i,args...));
234
+ }
235
+
236
+ template <typename ... ARG>
237
+ auto operator() (typestar star, ARG ... args) const
238
+ {
239
+ return braces(star,args...);
240
+ }
241
+
242
+
243
+ FlatTensor operator= (double d)
244
+ {
245
+ for (size_t i = 0; i < size; i++)
246
+ GetSubTensor(i) = d;
247
+ return *this;
248
+ }
249
+
250
+ size_t GetSize () const { return size; }
251
+ size_t GetDist () const { return dist; }
252
+ size_t GetTotalSize () const { return size*sub.GetTotalSize(); }
253
+
254
+ auto Shape() const { return std::tuple_cat(std::tuple<size_t>(size), sub.Shape()); }
255
+
256
+ auto GetSubTensor() const -> decltype(sub)
257
+ { return sub; }
258
+ FlatTensor<DIM-1,T> GetSubTensor (size_t i) const
259
+ {
260
+ return OffsetTensor (sub, i*dist);
261
+ }
262
+
263
+ T *& Data () { return sub.Data(); }
264
+ T * Data () const { return sub.Data(); }
265
+
266
+
267
+
268
+ template<typename ... ARG>
269
+ INLINE void SetSize (size_t s, ARG ... args) throw ()
270
+ {
271
+ size = s;
272
+ sub.SetSize(args...);
273
+ }
274
+
275
+ /// copy data and sub pointers
276
+ INLINE FlatTensor & Assign (const FlatTensor & m) throw()
277
+ {
278
+ sub.Assign(m.sub);
279
+ dist = m.dist;
280
+ size = m.size;
281
+ return *this;
282
+ }
283
+
284
+ /// set size, and assign mem
285
+ template<typename ... ARG>
286
+ INLINE void AssignMemory (LocalHeap & lh, size_t s, ARG ... args) throw ()
287
+ {
288
+ FlatTensor tmp{lh, s, args...};
289
+ Assign(tmp);
290
+ }
291
+
292
+ /// set size, and assign mem
293
+ template<typename ... ARG>
294
+ INLINE void AssignMemory (T * mem, size_t s, ARG ... args) throw()
295
+ {
296
+ FlatTensor tmp{mem, s, args...};
297
+ Assign(tmp);
298
+ // FlatTensor tmp{args...};
299
+ // this->Data() = mem;
300
+ }
301
+ };
302
+
303
+
304
+
305
+ template <typename T, int LINDIM>
306
+ class FlatTensor<0,T,LINDIM>
307
+ {
308
+ T * data;
309
+ public:
310
+ FlatTensor () { ; }
311
+ FlatTensor (T * adata) : data(adata) { ; }
312
+ template <int DIMLIN2>
313
+ FlatTensor (FlatTensor<0,T,DIMLIN2> t2)
314
+ : data(t2.Data()) { ; }
315
+
316
+ size_t GetSize () const { return 1; }
317
+ size_t GetDist () const { return 1; }
318
+ size_t GetTotalSize () const { return 1; }
319
+ T *& Data () { return data; }
320
+ T * Data () const { return data; }
321
+ FlatTensor<0,T,LINDIM> operator() () const { return FlatTensor<0,T,LINDIM> (data); }
322
+ FlatTensor<0,T,LINDIM> braces () const { return FlatTensor<0,T,LINDIM> (data); }
323
+ // const T & operator() () const { return *data; }
324
+ // T & operator() () { return *data; }
325
+ operator T () const { return *data; }
326
+ operator T& () { return *data; }
327
+ T & operator= (double d) { *data = d; return *data; }
328
+ T & operator-= (double d) { *data -= d; return *data; }
329
+ T & operator+= (double d) { *data += d; return *data; }
330
+
331
+ template<typename ... ARG>
332
+ INLINE void SetSize (ARG ... args) throw () { }
333
+
334
+ auto Shape() const { return std::tuple<>(); }
335
+
336
+ INLINE void Assign (const FlatTensor& m) throw ()
337
+ {
338
+ this->data = m.data;
339
+ }
340
+ };
341
+
342
+
343
+
344
+
345
+
346
+
347
+
348
+
349
+
350
+
351
+
352
+
353
+
354
+ template <int DIM, typename T = double>
355
+ class Tensor : public FlatTensor<DIM,T>
356
+ {
357
+ public:
358
+ Tensor (const Tensor&) = delete;
359
+ Tensor (Tensor&& t2)
360
+ : FlatTensor<DIM,T> (t2)
361
+ {
362
+ t2.Data() = nullptr;
363
+ }
364
+
365
+ template <typename ... ARG>
366
+ Tensor (ARG ... args) : FlatTensor<DIM,T> (args...)
367
+ {
368
+ size_t totsize = this->GetTotalSize();
369
+ this->Data() = new T[totsize];
370
+ }
371
+
372
+ ~Tensor()
373
+ {
374
+ delete [] this->Data();
375
+ }
376
+
377
+ FlatTensor<DIM,T> operator= (double d)
378
+ {
379
+ return FlatTensor<DIM,T>::operator=(d);
380
+ }
381
+ };
382
+
383
+
384
+
385
+
386
+
387
+
388
+
389
+ template <int DIM, typename T>
390
+ INLINE ostream & operator<< (ostream & ost, const FlatTensor<DIM,T> & tensor)
391
+ {
392
+ ost << "tensor, dim = " << tensor.GetSize()
393
+ << ", dist = " << tensor.GetDist()
394
+ << ", size = " << tensor.GetTotalSize() << endl;
395
+
396
+ for (size_t i = 0; i < tensor.GetSize(); i++)
397
+ {
398
+ ost << "subtensor " << i;
399
+ for (size_t j = 0; j < DIM-1; j++) ost << ",*";
400
+ ost << ":" << endl;
401
+ ost << tensor.GetSubTensor(i);
402
+ }
403
+
404
+ return ost;
405
+ }
406
+
407
+ template <typename T>
408
+ INLINE ostream & operator<< (ostream & ost, const FlatTensor<2,T> & tensor)
409
+ {
410
+ for (size_t i = 0; i < tensor.GetSize(); i++)
411
+ ost << tensor.GetSubTensor(i);
412
+ return ost;
413
+ }
414
+
415
+ template <typename T>
416
+ INLINE ostream & operator<< (ostream & ost, const FlatTensor<1,T> & tensor)
417
+ {
418
+ for (size_t i = 0; i < tensor.GetSize(); i++)
419
+ ost << * (tensor.Data()+i*tensor.GetDist()) << " ";
420
+ return ost << endl;
421
+ }
422
+
423
+
424
+ template <typename T>
425
+ INLINE ostream & operator<< (ostream & ost, const FlatTensor<0,T> & tensor)
426
+ {
427
+ return ost << *tensor.Data();
428
+ }
429
+
430
+
431
+
432
+
433
+ extern void ThrowTensorIndexError(size_t ind);
434
+
435
+ // a tensor with static shape
436
+
437
+
438
+ template <typename T, size_t ...SHAPE>
439
+ class Tens
440
+ {
441
+ template <size_t FIRST, size_t ...REST>
442
+ static constexpr size_t Prod ()
443
+ {
444
+ if constexpr (sizeof...(REST) == 0) return FIRST;
445
+ else return FIRST * Prod<REST...>();
446
+ }
447
+
448
+ template <typename TUPSHAPE, typename TUPIND>
449
+ static constexpr size_t CalcIndex(TUPSHAPE shape, TUPIND ind)
450
+ {
451
+ size_t i1 = 0;
452
+ constexpr size_t dim = tuple_size<TUPSHAPE>();
453
+ Iterate<dim> ([&](auto i)
454
+ {
455
+ i1 *= get<i> (shape);
456
+ i1 += get<i> (ind);
457
+ });
458
+ return i1;
459
+ }
460
+
461
+ T data[Prod<SHAPE...>()];
462
+ public:
463
+ static constexpr size_t Size() { return Prod<SHAPE...>(); }
464
+ static constexpr size_t Order() { return sizeof...(SHAPE); }
465
+
466
+ static constexpr auto Shape() {
467
+ array<size_t, Order()> shape;
468
+ Iterate<Order()> ([&](auto I)
469
+ {
470
+ shape[I] = get<I> (tuple(SHAPE...));
471
+ });
472
+ return shape;
473
+ }
474
+
475
+ auto AsVector() { return FlatVector<T> (Size(), data); }
476
+
477
+ template <typename ...IND>
478
+ T & operator() (IND... i)
479
+ {
480
+ size_t ind = CalcIndex(tuple(SHAPE...), tuple(i...));
481
+ // if (ind >= Size()) ThrowTensorIndexError(ind);
482
+ return data[ind];
483
+ }
484
+
485
+ template <typename ...IND>
486
+ const T & operator() (IND... i) const
487
+ {
488
+ size_t ind = CalcIndex(tuple(SHAPE...), tuple(i...));
489
+ // if (ind >= Size()) ThrowTensorIndexError(ind);
490
+ return data[ind];
491
+ }
492
+
493
+ T & operator[] (size_t i) { return data[i]; }
494
+ const T & operator[] (size_t i) const { return data[i]; }
495
+ };
496
+
497
+ template <typename T>
498
+ class Tens<T>
499
+ {
500
+ T data[1];
501
+
502
+ public:
503
+ static constexpr size_t Size() { return 1; }
504
+ static constexpr size_t Order() { return 0; }
505
+
506
+ static constexpr auto Shape() {
507
+ array<size_t, 0> shape;
508
+ return shape;
509
+ }
510
+
511
+ auto AsVector() { return FlatVector<T> (Size(), data); }
512
+
513
+ T & operator() () { return data[0]; }
514
+ T & operator[] (size_t) { return data[0]; }
515
+ const T & operator() () const { return data[0]; }
516
+ const T & operator[] (size_t) const { return data[0]; }
517
+ };
518
+
519
+
520
+
521
+
522
+ }