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,235 @@
1
+ #ifndef NGSOLVE_CONTACT_HPP
2
+ #define NGSOLVE_CONTACT_HPP
3
+
4
+ // #include <comp.hpp>
5
+ #include "gridfunction.hpp"
6
+ #include "bilinearform.hpp"
7
+
8
+ namespace ngcomp
9
+ {
10
+ template<int DIM>
11
+ struct ContactPair
12
+ {
13
+ ElementId primary_el, secondary_el;
14
+ IntegrationPoint primary_ip, secondary_ip;
15
+ };
16
+
17
+ class GapFunction : public CoefficientFunctionNoDerivative
18
+ {
19
+ protected:
20
+ shared_ptr<GridFunction> displacement;
21
+ shared_ptr<MeshAccess> ma;
22
+ Region master;
23
+ Region other;
24
+ double h;
25
+ bool both_sides;
26
+
27
+ public:
28
+ GapFunction( shared_ptr<MeshAccess> ma_, Region primary_, Region secondary_)
29
+ : CoefficientFunctionNoDerivative(ma_->GetDimension()),
30
+ ma(ma_), master(primary_), other(secondary_)
31
+ { }
32
+
33
+ virtual void Update(shared_ptr<GridFunction> gf, int intorder_, double h_,
34
+ bool both_sides) = 0;
35
+ void Draw();
36
+ };
37
+
38
+ template <int DIM>
39
+ class T_GapFunction : public GapFunction
40
+ {
41
+ unique_ptr<netgen::BoxTree<DIM, int>> searchtree;
42
+ public:
43
+ T_GapFunction( shared_ptr<MeshAccess> mesh_, Region primary_, Region secondary_)
44
+ : GapFunction(mesh_, primary_, secondary_)
45
+ { }
46
+
47
+ void Update(shared_ptr<GridFunction> gf, int intorder_, double h, bool both_sides) override;
48
+
49
+ const netgen::BoxTree<DIM, int>& GetSearchTree() { return *searchtree; }
50
+
51
+ using GapFunction::Evaluate;
52
+ double Evaluate (const BaseMappedIntegrationPoint & ip) const override
53
+ {
54
+ throw Exception("Scalar evaluate of GapFunction called");
55
+ }
56
+
57
+ void Evaluate(const BaseMappedIntegrationPoint & ip,
58
+ FlatVector<> result) const override;
59
+
60
+ void Evaluate(const BaseMappedIntegrationRule & mir,
61
+ BareSliceMatrix<> result) const override;
62
+
63
+ optional<ContactPair<DIM>> CreateContactPair(const MappedIntegrationPoint<DIM-1, DIM>& mip, LocalHeap& lh, bool both_sides) const;
64
+ };
65
+
66
+ template<int DIM>
67
+ class DisplacedNormal : public CoefficientFunctionNoDerivative
68
+ {
69
+ shared_ptr<GridFunction> displacement;
70
+ public:
71
+ DisplacedNormal()
72
+ : CoefficientFunctionNoDerivative(DIM, false),
73
+ displacement(nullptr) {}
74
+
75
+ void Update(shared_ptr<GridFunction> _displacement)
76
+ { displacement = _displacement; }
77
+
78
+ using CoefficientFunctionNoDerivative::Evaluate;
79
+ double Evaluate(const BaseMappedIntegrationPoint& ip) const override
80
+ {
81
+ throw Exception("1dim eval called for Normal");
82
+ }
83
+
84
+ void Evaluate(const BaseMappedIntegrationPoint& ir, FlatVector<> values) const override;
85
+ };
86
+
87
+ class ContactEnergy
88
+ {
89
+ shared_ptr<CoefficientFunction> cf;
90
+ shared_ptr<FESpace> fes;
91
+ Array<ProxyFunction*> trial_proxies;
92
+ Array<CoefficientFunction*> cf_gridfunctions;
93
+ bool deformed;
94
+
95
+ public:
96
+ ContactEnergy(shared_ptr<CoefficientFunction> _cf,
97
+ bool _deformed=false);
98
+
99
+ bool IsDeformed() const { return deformed; }
100
+
101
+ double CalcEnergy(const FiniteElement& m_fel,
102
+ const FiniteElement& s_fel,
103
+ const BaseMappedIntegrationRule& m_mir,
104
+ FlatVector<double> elx,
105
+ LocalHeap& lh);
106
+
107
+ void ApplyAdd(const FiniteElement& m_fel,
108
+ const FiniteElement& s_fel,
109
+ const BaseMappedIntegrationRule& m_mir,
110
+ FlatVector<double> elx,
111
+ FlatVector<double> ely,
112
+ LocalHeap& lh);
113
+
114
+ void CalcLinearizedAdd(const FiniteElement& m_fel,
115
+ const FiniteElement& s_fel,
116
+ const BaseMappedIntegrationRule& m_mir,
117
+ FlatVector<double> elx,
118
+ FlatMatrix<double> elmat,
119
+ LocalHeap& lh);
120
+ };
121
+
122
+ class ContactIntegrator
123
+ {
124
+ shared_ptr<CoefficientFunction> cf;
125
+ shared_ptr<FESpace> fes;
126
+ Array<ProxyFunction*> trial_proxies, test_proxies;
127
+ Array<CoefficientFunction*> cf_gridfunctions;
128
+ Array<shared_ptr<CoefficientFunction>> dcf_dtest; // derivatives by test-functions
129
+ Matrix<shared_ptr<CoefficientFunction>> ddcf_dtest_dtrial; // derivatives by test- and trial-functions
130
+ bool deformed;
131
+ public:
132
+ ContactIntegrator(shared_ptr<CoefficientFunction> _cf,
133
+ bool _deformed);
134
+
135
+ bool IsDeformed() const { return deformed; }
136
+
137
+ void ApplyAdd(const FiniteElement& m_fel,
138
+ const FiniteElement& s_fel,
139
+ const BaseMappedIntegrationRule& m_mir,
140
+ FlatVector<double> elx,
141
+ FlatVector<double> ely,
142
+ LocalHeap& lh);
143
+
144
+ void CalcLinearizedAdd(const FiniteElement& m_fel,
145
+ const FiniteElement& s_fel,
146
+ const BaseMappedIntegrationRule& m_mir,
147
+ FlatVector<double> elx,
148
+ FlatMatrix<double> elmat,
149
+ LocalHeap& lh);
150
+ };
151
+
152
+
153
+ class ContactBoundary : public std::enable_shared_from_this<ContactBoundary>,
154
+ netgen::UserVisualizationObject
155
+ {
156
+ shared_ptr<GapFunction> gap;
157
+ shared_ptr<CoefficientFunction> normal;
158
+ Region master, other;
159
+ Array<shared_ptr<ContactEnergy>> energies, undeformed_energies, deformed_energies;
160
+ Array<shared_ptr<ContactIntegrator>> integrators, undeformed_integrators, deformed_integrators;
161
+ shared_ptr<FESpace> fes_displacement;
162
+ shared_ptr<FESpace> fes;
163
+
164
+ // For visualization only
165
+ bool draw_pairs = false;
166
+ Array<Vec<3>> primary_points;
167
+ Array<Vec<3>> secondary_points;
168
+ bool volume, element_boundary;
169
+ public:
170
+ void Draw();
171
+ ContactBoundary(Region _master, Region _other, bool draw_pairs = false, bool _volume=false, bool element_boundary=false);
172
+
173
+ ~ContactBoundary();
174
+
175
+ void AddEnergy(shared_ptr<CoefficientFunction> form,
176
+ bool deformed=false);
177
+ void AddIntegrator(shared_ptr<CoefficientFunction> form,
178
+ bool deformed=false);
179
+
180
+ // Update search tree for gap function, if bf is not
181
+ // nullptr, update SpecialElements of bf
182
+ void Update(shared_ptr<GridFunction> gf,
183
+ shared_ptr<BilinearForm> bf,
184
+ int intorder, double h, bool both_sides);
185
+
186
+ shared_ptr<CoefficientFunction> Gap() const { return gap; }
187
+ shared_ptr<CoefficientFunction> Normal() const { return normal; }
188
+ const auto& GetEnergies() const { return energies; }
189
+ const auto& GetEnergies(bool def) const { return def ? deformed_energies : undeformed_energies; }
190
+ const auto& GetIntegrators() const { return integrators; }
191
+ const auto& GetIntegrators(bool def) const { return def ? deformed_integrators : undeformed_integrators; }
192
+ shared_ptr<FESpace> GetFESpace() const { return fes; }
193
+ tuple<FlatArray<Vec<3>>, FlatArray<Vec<3>>> GetDrawingPairs() { return {primary_points, secondary_points}; }
194
+ };
195
+
196
+ template<int DIM>
197
+ class MPContactElement : public SpecialElement
198
+ {
199
+ // ContactPair<DIM> pair;
200
+ ElementId primary_ei, secondary_ei;
201
+ IntegrationRule primary_ir, secondary_ir;
202
+ shared_ptr<ContactBoundary> cb;
203
+ FESpace* fes;
204
+ GridFunction* deformation;
205
+ public:
206
+ MPContactElement(ElementId primary_ei, ElementId secondary_ei,
207
+ IntegrationRule primary_ir, IntegrationRule secondary_ir,
208
+ shared_ptr<ContactBoundary> _cb,
209
+ GridFunction* deformation);
210
+
211
+ void GetDofNrs(Array<DofId>& dnums) const override;
212
+
213
+ double Energy(FlatVector<double> elx,
214
+ LocalHeap& lh) const override;
215
+
216
+ void Apply(FlatVector<double> elx,
217
+ FlatVector<double> ely,
218
+ LocalHeap& lh) const override;
219
+
220
+ void CalcElementMatrix(FlatMatrix<double> elmat,
221
+ LocalHeap& lh) const override;
222
+
223
+
224
+ void CalcLinearizedElementMatrix(FlatVector<double> elx,
225
+ FlatMatrix<double> elmat,
226
+ LocalHeap& lh) const override;
227
+
228
+ shared_ptr<ContactBoundary> GetContactBoundary() const
229
+ { return cb; }
230
+ };
231
+
232
+
233
+ } // namespace ngcomp
234
+
235
+ #endif // NGSOLVE_CONTACT_HPP
@@ -0,0 +1,175 @@
1
+ #ifndef CUDA_LINALG_HPP
2
+ #define CUDA_LINALG_HPP
3
+
4
+ // partial override of overloaded function (MultAdd)
5
+ #pragma nv_diag_suppress 611
6
+ #pragma nv_diag_suppress 20013
7
+
8
+ #include <la.hpp>
9
+
10
+ #include <cuda_runtime.h>
11
+ #include <cublas_v2.h>
12
+ #include <cusparse.h>
13
+
14
+ #include "cuda_ngstd.hpp"
15
+
16
+ namespace ngla
17
+ {
18
+ cublasHandle_t Get_CuBlas_Handle ();
19
+ }
20
+
21
+
22
+ #include "cuda_ngbla.hpp"
23
+ #include "linalg_kernels.hpp"
24
+ #include "unifiedvector.hpp"
25
+
26
+
27
+ namespace ngla
28
+ {
29
+ using namespace ngs_cuda;
30
+
31
+ void InitCuLinalg();
32
+
33
+
34
+ /* AutoVector CreateUnifiedVector(size_t size); */
35
+
36
+ class DevMatrix : public BaseMatrix
37
+ {
38
+ public:
39
+ DevMatrix() { }
40
+
41
+ AutoVector CreateRowVector() const override { return make_unique<UnifiedVector>(Width()); }
42
+ AutoVector CreateColVector() const override { return make_unique<UnifiedVector>(Height()); }
43
+ };
44
+
45
+ shared_ptr<BaseMatrix> CreateDevMatrix (BaseMatrix &mat);
46
+ shared_ptr<BaseMatrix> CreateDevMatrix (Matrix<> &mat);
47
+
48
+
49
+ class DevSparseMatrix : public DevMatrix
50
+ {
51
+ protected:
52
+ //cusparseMatDescr_t * descr;
53
+ cusparseSpMatDescr_t descr;
54
+ int * dev_ind;
55
+ int * dev_col;
56
+ double * dev_val;
57
+ int height, width, nze;
58
+ public:
59
+ DevSparseMatrix () { }
60
+ DevSparseMatrix (const SparseMatrix<double> & mat);
61
+ virtual ~DevSparseMatrix ();
62
+
63
+ virtual void MultAdd (double s, const BaseVector & x, BaseVector & y) const;
64
+ virtual void MultTransAdd (double s, const BaseVector & x, BaseVector & y) const;
65
+
66
+ virtual int VHeight() const { return height; }
67
+ virtual int VWidth() const { return width; }
68
+ };
69
+
70
+
71
+ class DevDiagonalMatrix : public DevMatrix
72
+ {
73
+ protected:
74
+ const UnifiedVector diag;
75
+
76
+ public:
77
+ DevDiagonalMatrix (const UnifiedVector _diag) : diag(_diag) { }
78
+
79
+ virtual xbool IsSymmetric() const { return true; }
80
+
81
+ virtual void Mult (const BaseVector & x, BaseVector & y) const;
82
+ virtual void MultAdd (double s, const BaseVector & x, BaseVector & y) const;
83
+
84
+ virtual int VHeight() const { return diag.Size(); }
85
+ virtual int VWidth() const { return diag.Size(); }
86
+ };
87
+
88
+
89
+ // compatibility between elder ngsolve (template or not)
90
+ typedef decltype (ConstantElementByElementMatrix (5,5,Matrix<>(),
91
+ declval<Table<int>>(), declval<Table<int>>())) T_ConstEBEMatrix;
92
+
93
+ class DevConstantElementByElementMatrix : public DevMatrix
94
+ {
95
+ size_t h, w; // big matrix shape
96
+
97
+ Matrix<Dev<double>> devmat;
98
+
99
+ DevTable<int> rowdnums, coldnums;
100
+ DevDataTable<int> row_coloring, col_coloring;
101
+
102
+ bool disjoint_rows, disjoint_cols;
103
+ size_t numblocks;
104
+ public:
105
+ DevConstantElementByElementMatrix (const T_ConstEBEMatrix & mat);
106
+ void MultAdd (double s, const BaseVector & x, BaseVector & y) const override;
107
+ void MultTransAdd (double s, const BaseVector & x, BaseVector & y) const override;
108
+
109
+ int VHeight() const override { return h; }
110
+ int VWidth() const override { return w; }
111
+ };
112
+
113
+
114
+
115
+ class DevBlockDiagonalMatrixSoA : public DevMatrix
116
+ {
117
+ double * dev_data; // Tensor<3> blockdiag;
118
+ int blocks, dimy, dimx;
119
+ Matrix<bool> nonzero;
120
+ Array<Dev<int>> indices, indices_trans;
121
+ public:
122
+ DevBlockDiagonalMatrixSoA (const BlockDiagonalMatrixSoA & mat);
123
+ void MultAdd (double s, const BaseVector & x, BaseVector & y) const override;
124
+ void MultTransAdd (double s, const BaseVector & x, BaseVector & y) const override;
125
+ int VHeight() const override { return dimy*blocks; }
126
+ int VWidth() const override { return dimx*blocks; }
127
+ };
128
+
129
+
130
+
131
+ class DevEmbeddedMatrix : public EmbeddedMatrix
132
+ {
133
+ public:
134
+ using EmbeddedMatrix::EmbeddedMatrix;
135
+ AutoVector CreateColVector() const override { return make_unique<UnifiedVector>(Height()); }
136
+ };
137
+
138
+ class DevEmbeddedTransposeMatrix : public EmbeddedTransposeMatrix
139
+ {
140
+ public:
141
+ using EmbeddedTransposeMatrix::EmbeddedTransposeMatrix;
142
+ AutoVector CreateRowVector() const override { return make_unique<UnifiedVector>(Width()); }
143
+ };
144
+
145
+
146
+ class DevProjector : public DevMatrix
147
+ {
148
+ private:
149
+ shared_ptr<DevBitArray> bits;
150
+ bool keep_values;
151
+ public:
152
+ DevProjector (const Projector & proj)
153
+ : bits(make_shared<DevBitArray>(*proj.Mask())),
154
+ keep_values(proj.KeepValues()) { ; }
155
+
156
+ void Mult (const BaseVector & x, BaseVector & y) const override;
157
+ void MultAdd (double s, const BaseVector & x, BaseVector & y) const override;
158
+
159
+ void Project (BaseVector & x) const;
160
+
161
+ virtual int VHeight() const override { return bits->Size(); }
162
+ virtual int VWidth() const override { return bits->Size(); }
163
+
164
+ AutoVector CreateRowVector() const override
165
+ { throw Exception("CreateRowVector not implemented for DevProjector!"); }
166
+ AutoVector CreateColVector() const override
167
+ { throw Exception("CreateColVector not implemented for DevProjector!"); }
168
+
169
+ };
170
+
171
+
172
+ }
173
+
174
+
175
+ #endif
@@ -0,0 +1,226 @@
1
+ #ifndef CUDA_NGBLA
2
+ #define CUDA_NGBLA
3
+
4
+ #include "cuda_ngstd.hpp"
5
+ #include "linalg_kernels.hpp"
6
+
7
+ namespace ngbla
8
+ {
9
+ using namespace ngs_cuda;
10
+
11
+ // template<> struct trivtrans<Dev<double>> { static constexpr bool value = true; };
12
+ template<> struct is_scalar_type<Dev<double>> { static constexpr bool value = true; };
13
+
14
+
15
+ template <typename T>
16
+ class Vector<Dev<T>> : public FlatVector<Dev<T>>
17
+ {
18
+ using FlatVector<Dev<T>>::size;
19
+ using FlatVector<Dev<T>>::data;
20
+
21
+ public:
22
+ Vector (Vector&) = delete;
23
+ Vector (Vector&&v2)
24
+ : FlatVector<Dev<T>>(v2.Size(), v2.Data())
25
+ {
26
+ v2.data = nullptr;
27
+ }
28
+
29
+ Vector (size_t asize)
30
+ : FlatVector<Dev<T>>(asize, Dev<T>::Malloc(asize)) { ; }
31
+
32
+ Vector (FlatVector<T> vec)
33
+ : FlatVector<Dev<T>>(vec.Size(), Dev<T>::Malloc(vec.Size()))
34
+ {
35
+ H2D(vec);
36
+ }
37
+
38
+ ~Vector()
39
+ {
40
+ Dev<T>::Free(data);
41
+ }
42
+
43
+ void D2H (FlatVector<T> vec) const
44
+ {
45
+ cudaMemcpy (vec.Data(), data, sizeof(T)*size, cudaMemcpyDeviceToHost);
46
+ }
47
+
48
+ void H2D (FlatVector<T> vec)
49
+ {
50
+ cudaMemcpy (data, vec.Data(), sizeof(T)*size, cudaMemcpyHostToDevice);
51
+ }
52
+
53
+ Vector<T> D2H() const
54
+ {
55
+ Vector<T> vh(size);
56
+ D2H (vh);
57
+ return vh;
58
+ }
59
+ };
60
+
61
+ inline Vector<double> D2H (FlatVector<Dev<double>> dvec)
62
+ {
63
+ Vector<double> hvec(dvec.Size());
64
+ cudaMemcpy (hvec.Data(), dvec.Data(), sizeof(double)*hvec.Size(), cudaMemcpyDeviceToHost);
65
+ return hvec;
66
+ }
67
+
68
+
69
+
70
+
71
+ template <typename T>
72
+ class Matrix<Dev<T>> : public FlatMatrix<Dev<T>>
73
+ {
74
+ using FlatMatrix<Dev<T>>::h;
75
+ using FlatMatrix<Dev<T>>::w;
76
+ using FlatMatrix<Dev<T>>::data;
77
+
78
+ public:
79
+ Matrix (Matrix&) = delete;
80
+ Matrix (Matrix&&m2)
81
+ : FlatMatrix<Dev<T>>(m2.Height(), m2.Width(), m2.Data())
82
+ {
83
+ m2.data = nullptr;
84
+ }
85
+
86
+ Matrix (size_t h_, size_t w_)
87
+ : FlatMatrix<Dev<T>>(h_, w_, Dev<T>::Malloc(h_*w_)) { ; }
88
+
89
+ Matrix (FlatMatrix<T> mat)
90
+ : FlatMatrix<Dev<T>>(mat.Height(), mat.Width(),
91
+ Dev<T>::Malloc(mat.Height()*mat.Width()))
92
+ {
93
+ H2D(mat);
94
+ }
95
+
96
+ ~Matrix()
97
+ {
98
+ Dev<T>::Free(data);
99
+ }
100
+
101
+ void D2H (FlatMatrix<T> mat) const
102
+ {
103
+ cudaMemcpy (mat.Data(), data, sizeof(T)*h*w, cudaMemcpyDeviceToHost);
104
+ }
105
+
106
+ void H2D (FlatMatrix<T> mat)
107
+ {
108
+ cudaMemcpy (data, mat.Data(), sizeof(T)*h*w, cudaMemcpyHostToDevice);
109
+ }
110
+
111
+ Matrix<T> D2H() const
112
+ {
113
+ Matrix<T> mh(h, w);
114
+ D2H (mh);
115
+ return mh;
116
+ }
117
+ };
118
+
119
+ inline Matrix<double> D2H (SliceMatrix<Dev<double>> dmat)
120
+ {
121
+ Matrix<double> hmat(dmat.Height(), dmat.Width());
122
+ for (size_t i = 0; i < hmat.Height(); i++)
123
+ cudaMemcpy (&hmat(i,0), &dmat(i,0), sizeof(double)*hmat.Width(), cudaMemcpyDeviceToHost);
124
+ return hmat;
125
+ }
126
+
127
+ inline Matrix<double,ColMajor> D2H (SliceMatrix<Dev<double>,ColMajor> dmat)
128
+ {
129
+ return Trans(D2H(Trans(dmat)));
130
+ }
131
+
132
+
133
+
134
+
135
+ template <ORDERING ORDA, ORDERING ORDB>
136
+ void CudaMultMatMat2 (SliceMatrix<Dev<double>, ORDA> a, SliceMatrix<Dev<double>,ORDB> b,
137
+ SliceMatrix<Dev<double>, ORDERING::ColMajor> c,
138
+ double alpha, double beta)
139
+ {
140
+ cublasStatus_t stat =
141
+ cublasDgemm(ngla::Get_CuBlas_Handle(),
142
+ ORDA==ORDERING::RowMajor ? CUBLAS_OP_T : CUBLAS_OP_N,
143
+ ORDB==ORDERING::RowMajor ? CUBLAS_OP_T : CUBLAS_OP_N,
144
+ c.Height(), c.Width(), a.Width(),
145
+ &alpha, (double*)a.Data(), a.Dist(), (double*)b.Data(), b.Dist(),
146
+ &beta, (double*)c.Data(), c.Dist());
147
+ }
148
+
149
+ template <ORDERING ORDA, ORDERING ORDB>
150
+ void CudaMultMatMat2 (SliceMatrix<Dev<double>, ORDA> a, SliceMatrix<Dev<double>,ORDB> b,
151
+ SliceMatrix<Dev<double>, ORDERING::RowMajor> c,
152
+ double alpha, double beta)
153
+ {
154
+ CudaMultMatMat2 (Trans(b), Trans(a), Trans(c), alpha, beta);
155
+ }
156
+
157
+
158
+ template <typename TA, typename TB, typename TC,
159
+ enable_if_t<IsConvertibleToSliceMatrix<TA,Dev<double>>(),int> = 0,
160
+ enable_if_t<IsConvertibleToSliceMatrix<TB,Dev<double>>(),int> = 0,
161
+ enable_if_t<IsConvertibleToSliceMatrix<TC,Dev<double>>(),int> = 0>
162
+ void MultMatMat (const TA & a, const TB & b, const TC & c, double alpha=1, double beta=0)
163
+ {
164
+ CudaMultMatMat2(make_SliceMatrix(a), make_SliceMatrix(b), make_SliceMatrix(c), alpha, beta);
165
+ }
166
+
167
+
168
+ template <typename TOP, typename T, typename TB1, typename TB2>
169
+ class assign_trait<TOP, T, MultExpr<TB1,TB2>,
170
+ enable_if_t<IsConvertibleToSliceMatrix<T,Dev<double>>(),int>>
171
+ {
172
+ public:
173
+ static INLINE T & Assign (MatExpr<T> & self, const Expr<MultExpr<TB1,TB2>> & v)
174
+ {
175
+ auto res = self.View();
176
+
177
+ double alpha = std::is_same_v<TOP,typename MatExpr<T>::AsSub> ? -1 : 1;
178
+ double beta = std::is_same_v<TOP,typename MatExpr<T>::As> ? 0 : 1;
179
+
180
+ MultMatMat (v.Spec().A(), v.Spec().B(), self.Spec(), alpha, beta);
181
+ return self.Spec();
182
+ }
183
+ };
184
+
185
+ template <typename TOP, typename T, typename TB1, typename TB2>
186
+ class assign_trait<TOP, T, ScaleExpr<MultExpr<TB1,TB2>,double>,
187
+ enable_if_t<IsConvertibleToSliceMatrix<T,Dev<double>>(),int>>
188
+ {
189
+ public:
190
+ static inline T & Assign (MatExpr<T> & self, const Expr<ScaleExpr<MultExpr<TB1,TB2>,double>> & v)
191
+ {
192
+ auto res = self.View();
193
+
194
+ double alpha = is_same_v<TOP,typename MatExpr<T>::AsSub> ? -1 : 1;
195
+ double beta = is_same_v<TOP,typename MatExpr<T>::As> ? 0 : 1;
196
+
197
+ alpha *= v.View().S();
198
+
199
+ MultMatMat (v.View().A().A(), v.View().A().B(), self.ViewRW(), alpha, beta);
200
+ return self.Spec();
201
+ }
202
+ };
203
+
204
+ template <typename TOP, typename T, typename TB1, typename TB2>
205
+ class assign_trait<TOP, T, MultExpr<ScaleExpr<TB1,double>,TB2>,
206
+ enable_if_t<IsConvertibleToSliceMatrix<T,Dev<double>>(),int>>
207
+ {
208
+ public:
209
+ static inline T & Assign (MatExpr<T> & self, const Expr<MultExpr<ScaleExpr<TB1,double>,TB2>> & v)
210
+ {
211
+ auto res = self.View();
212
+
213
+ double alpha = is_same_v<TOP,typename MatExpr<T>::AsSub> ? -1 : 1;
214
+ double beta = is_same_v<TOP,typename MatExpr<T>::As> ? 0 : 1;
215
+
216
+ alpha *= v.View().A().S();
217
+
218
+ MultMatMat (v.View().A().A(), v.View().B(), self.ViewRW(), alpha, beta);
219
+ return self.Spec();
220
+ }
221
+ };
222
+
223
+
224
+ }
225
+
226
+ #endif