ngsolve 6.2.2506.post216.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.
Files changed (306) hide show
  1. ngsolve-6.2.2506.post216.dev0.data/data/bin/ngs_nvcc +22 -0
  2. ngsolve-6.2.2506.post216.dev0.data/data/bin/ngs_nvlink +17 -0
  3. ngsolve-6.2.2506.post216.dev0.data/data/bin/ngscxx +15 -0
  4. ngsolve-6.2.2506.post216.dev0.data/data/bin/ngsld +11 -0
  5. ngsolve-6.2.2506.post216.dev0.data/data/bin/ngsolve.tcl +648 -0
  6. ngsolve-6.2.2506.post216.dev0.data/data/bin/ngspy +2 -0
  7. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/analytic_integrals.hpp +10 -0
  8. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/arnoldi.hpp +55 -0
  9. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/bandmatrix.hpp +334 -0
  10. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/basematrix.hpp +963 -0
  11. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/basevector.hpp +1268 -0
  12. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/bdbequations.hpp +2807 -0
  13. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/bdbintegrator.hpp +1660 -0
  14. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/bem_diffops.hpp +475 -0
  15. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/bessel.hpp +1064 -0
  16. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/bilinearform.hpp +966 -0
  17. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/bla.hpp +29 -0
  18. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/blockalloc.hpp +95 -0
  19. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/blockjacobi.hpp +328 -0
  20. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/bspline.hpp +116 -0
  21. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/calcinverse.hpp +141 -0
  22. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/cg.hpp +368 -0
  23. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/chebyshev.hpp +44 -0
  24. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/cholesky.hpp +720 -0
  25. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/clapack.h +7254 -0
  26. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/code_generation.hpp +296 -0
  27. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/coefficient.hpp +2033 -0
  28. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/coefficient_impl.hpp +19 -0
  29. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/coefficient_stdmath.hpp +167 -0
  30. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/commutingAMG.hpp +106 -0
  31. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/comp.hpp +79 -0
  32. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/compatibility.hpp +41 -0
  33. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/complex_wrapper.hpp +101 -0
  34. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/compressedfespace.hpp +110 -0
  35. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/contact.hpp +239 -0
  36. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/cuda_core.hpp +216 -0
  37. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/cuda_linalg.hpp +185 -0
  38. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/cuda_ngbla.hpp +317 -0
  39. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/cuda_ngstd.hpp +414 -0
  40. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/cuda_profiler.hpp +240 -0
  41. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/diagonalmatrix.hpp +160 -0
  42. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/differentialoperator.hpp +276 -0
  43. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/diffop.hpp +1286 -0
  44. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/diffop_impl.hpp +328 -0
  45. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/diffopwithfactor.hpp +123 -0
  46. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/discontinuous.hpp +84 -0
  47. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/dump.hpp +949 -0
  48. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/ectypes.hpp +121 -0
  49. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/eigen.hpp +60 -0
  50. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/eigensystem.hpp +18 -0
  51. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/elasticity_equations.hpp +595 -0
  52. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/elementbyelement.hpp +201 -0
  53. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/elementtopology.hpp +1760 -0
  54. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/elementtransformation.hpp +339 -0
  55. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/evalfunc.hpp +405 -0
  56. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/expr.hpp +1693 -0
  57. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/facetfe.hpp +175 -0
  58. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/facetfespace.hpp +180 -0
  59. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/facethofe.hpp +111 -0
  60. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/facetsurffespace.hpp +112 -0
  61. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/fe_interfaces.hpp +32 -0
  62. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/fem.hpp +87 -0
  63. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/fesconvert.hpp +14 -0
  64. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/fespace.hpp +1454 -0
  65. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/finiteelement.hpp +286 -0
  66. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/globalinterfacespace.hpp +77 -0
  67. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/globalspace.hpp +115 -0
  68. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/gridfunction.hpp +525 -0
  69. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/h1amg.hpp +124 -0
  70. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/h1hofe.hpp +188 -0
  71. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/h1hofe_impl.hpp +1262 -0
  72. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/h1hofefo.hpp +148 -0
  73. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/h1hofefo_impl.hpp +185 -0
  74. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/h1hofespace.hpp +167 -0
  75. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/h1lofe.hpp +1240 -0
  76. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/h1lumping.hpp +41 -0
  77. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/hcurl_equations.hpp +1381 -0
  78. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/hcurlcurlfe.hpp +2241 -0
  79. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/hcurlcurlfespace.hpp +78 -0
  80. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/hcurlfe.hpp +259 -0
  81. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/hcurlfe_utils.hpp +107 -0
  82. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/hcurlhdiv_dshape.hpp +857 -0
  83. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/hcurlhdivfes.hpp +308 -0
  84. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/hcurlhofe.hpp +175 -0
  85. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/hcurlhofe_impl.hpp +1871 -0
  86. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/hcurlhofespace.hpp +193 -0
  87. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/hcurllofe.hpp +1146 -0
  88. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/hdiv_equations.hpp +880 -0
  89. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/hdivdivfe.hpp +2923 -0
  90. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/hdivdivsurfacespace.hpp +76 -0
  91. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/hdivfe.hpp +206 -0
  92. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/hdivfe_utils.hpp +717 -0
  93. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/hdivfes.hpp +75 -0
  94. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/hdivhofe.hpp +447 -0
  95. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/hdivhofe_impl.hpp +1107 -0
  96. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/hdivhofefo.hpp +229 -0
  97. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/hdivhofespace.hpp +177 -0
  98. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/hdivhosurfacefespace.hpp +106 -0
  99. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/hdivlofe.hpp +773 -0
  100. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/hidden.hpp +74 -0
  101. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/householder.hpp +181 -0
  102. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/hypre_ams_precond.hpp +123 -0
  103. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/hypre_precond.hpp +73 -0
  104. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/integrator.hpp +2012 -0
  105. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/integratorcf.hpp +253 -0
  106. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/interpolate.hpp +49 -0
  107. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/intrule.hpp +2542 -0
  108. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/intrules_SauterSchwab.hpp +25 -0
  109. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/irspace.hpp +49 -0
  110. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/jacobi.hpp +153 -0
  111. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/kernels.hpp +724 -0
  112. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/l2hofe.hpp +194 -0
  113. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/l2hofe_impl.hpp +564 -0
  114. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/l2hofefo.hpp +542 -0
  115. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/l2hofespace.hpp +344 -0
  116. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/la.hpp +38 -0
  117. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/linalg_kernels.hpp +70 -0
  118. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/linearform.hpp +266 -0
  119. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/matrix.hpp +2145 -0
  120. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/memusage.hpp +41 -0
  121. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/meshaccess.hpp +1359 -0
  122. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/mgpre.hpp +204 -0
  123. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/mp_coefficient.hpp +145 -0
  124. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/mptools.hpp +2281 -0
  125. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/multigrid.hpp +42 -0
  126. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/multivector.hpp +447 -0
  127. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/mumpsinverse.hpp +187 -0
  128. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/mycomplex.hpp +361 -0
  129. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/ng_lapack.hpp +1661 -0
  130. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/ngblas.hpp +1232 -0
  131. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/ngs_defines.hpp +30 -0
  132. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/ngs_stdcpp_include.hpp +106 -0
  133. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/ngs_utils.hpp +121 -0
  134. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/ngsobject.hpp +1019 -0
  135. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/ngsstream.hpp +113 -0
  136. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/ngstd.hpp +72 -0
  137. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/nodalhofe.hpp +96 -0
  138. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/nodalhofe_impl.hpp +141 -0
  139. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/normalfacetfe.hpp +223 -0
  140. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/normalfacetfespace.hpp +98 -0
  141. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/normalfacetsurfacefespace.hpp +84 -0
  142. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/order.hpp +251 -0
  143. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/parallel_matrices.hpp +222 -0
  144. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/paralleldofs.hpp +340 -0
  145. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/parallelngs.hpp +23 -0
  146. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/parallelvector.hpp +269 -0
  147. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/pardisoinverse.hpp +200 -0
  148. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/periodic.hpp +129 -0
  149. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/plateaufespace.hpp +25 -0
  150. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/pml.hpp +275 -0
  151. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/pmltrafo.hpp +631 -0
  152. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/postproc.hpp +142 -0
  153. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/potentialtools.hpp +22 -0
  154. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/precomp.hpp +60 -0
  155. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/preconditioner.hpp +602 -0
  156. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/prolongation.hpp +380 -0
  157. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/python_comp.hpp +107 -0
  158. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/python_fem.hpp +89 -0
  159. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/python_linalg.hpp +58 -0
  160. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/python_ngstd.hpp +386 -0
  161. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/recursive_pol.hpp +4896 -0
  162. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/recursive_pol_tet.hpp +395 -0
  163. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/recursive_pol_trig.hpp +492 -0
  164. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/reorderedfespace.hpp +81 -0
  165. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/sample_sort.hpp +105 -0
  166. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/scalarfe.hpp +335 -0
  167. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/shapefunction_utils.hpp +113 -0
  168. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/simd_complex.hpp +329 -0
  169. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/smoother.hpp +253 -0
  170. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/solve.hpp +89 -0
  171. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/sparsecholesky.hpp +317 -0
  172. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/sparsefactorization_interface.hpp +159 -0
  173. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/sparsematrix.hpp +1052 -0
  174. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/sparsematrix_dyn.hpp +90 -0
  175. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/sparsematrix_impl.hpp +1055 -0
  176. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/special_matrix.hpp +463 -0
  177. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/specialelement.hpp +125 -0
  178. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/statushandler.hpp +33 -0
  179. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/stringops.hpp +12 -0
  180. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/superluinverse.hpp +136 -0
  181. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/symbolicintegrator.hpp +850 -0
  182. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/symmetricmatrix.hpp +144 -0
  183. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/tangentialfacetfe.hpp +224 -0
  184. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/tangentialfacetfespace.hpp +91 -0
  185. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/tensor.hpp +522 -0
  186. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/tensorcoefficient.hpp +446 -0
  187. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/tensorproductintegrator.hpp +113 -0
  188. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/thcurlfe.hpp +128 -0
  189. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/thcurlfe_impl.hpp +380 -0
  190. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/thdivfe.hpp +80 -0
  191. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/thdivfe_impl.hpp +492 -0
  192. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/tpdiffop.hpp +461 -0
  193. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/tpfes.hpp +133 -0
  194. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/tpintrule.hpp +224 -0
  195. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/triangular.hpp +465 -0
  196. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/tscalarfe.hpp +245 -0
  197. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/tscalarfe_impl.hpp +1029 -0
  198. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/umfpackinverse.hpp +148 -0
  199. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/unifiedvector.hpp +103 -0
  200. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/vector.hpp +1452 -0
  201. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/voxelcoefficientfunction.hpp +41 -0
  202. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/vtkoutput.hpp +198 -0
  203. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/vvector.hpp +208 -0
  204. ngsolve-6.2.2506.post216.dev0.data/data/include/netgen/webgui.hpp +92 -0
  205. ngsolve-6.2.2506.post216.dev0.data/data/lib/cmake/ngsolve/NGSolveConfig.cmake +102 -0
  206. ngsolve-6.2.2506.post216.dev0.data/data/lib/cmake/ngsolve/ngsolve-targets-release.cmake +89 -0
  207. ngsolve-6.2.2506.post216.dev0.data/data/lib/cmake/ngsolve/ngsolve-targets.cmake +180 -0
  208. ngsolve-6.2.2506.post216.dev0.data/data/lib/python3.14/site-packages/netgen_mesher.libs/libngbla.so +0 -0
  209. ngsolve-6.2.2506.post216.dev0.data/data/lib/python3.14/site-packages/netgen_mesher.libs/libngcomp.so +0 -0
  210. ngsolve-6.2.2506.post216.dev0.data/data/lib/python3.14/site-packages/netgen_mesher.libs/libngfem.so +0 -0
  211. ngsolve-6.2.2506.post216.dev0.data/data/lib/python3.14/site-packages/netgen_mesher.libs/libngla.so +0 -0
  212. ngsolve-6.2.2506.post216.dev0.data/data/lib/python3.14/site-packages/netgen_mesher.libs/libngsbem.so +0 -0
  213. ngsolve-6.2.2506.post216.dev0.data/data/lib/python3.14/site-packages/netgen_mesher.libs/libngscudalib.so +0 -0
  214. ngsolve-6.2.2506.post216.dev0.data/data/lib/python3.14/site-packages/netgen_mesher.libs/libngsolve.so +0 -0
  215. ngsolve-6.2.2506.post216.dev0.data/data/lib/python3.14/site-packages/netgen_mesher.libs/libngstd.so +0 -0
  216. ngsolve-6.2.2506.post216.dev0.data/data/lib/python3.14/site-packages/ngsolve/TensorProductTools.py +210 -0
  217. ngsolve-6.2.2506.post216.dev0.data/data/lib/python3.14/site-packages/ngsolve/__console.py +94 -0
  218. ngsolve-6.2.2506.post216.dev0.data/data/lib/python3.14/site-packages/ngsolve/__expr.py +181 -0
  219. ngsolve-6.2.2506.post216.dev0.data/data/lib/python3.14/site-packages/ngsolve/__init__.py +148 -0
  220. ngsolve-6.2.2506.post216.dev0.data/data/lib/python3.14/site-packages/ngsolve/_scikit_build_core_dependencies.py +30 -0
  221. ngsolve-6.2.2506.post216.dev0.data/data/lib/python3.14/site-packages/ngsolve/bvp.py +78 -0
  222. ngsolve-6.2.2506.post216.dev0.data/data/lib/python3.14/site-packages/ngsolve/config/__init__.py +1 -0
  223. ngsolve-6.2.2506.post216.dev0.data/data/lib/python3.14/site-packages/ngsolve/config/__main__.py +4 -0
  224. ngsolve-6.2.2506.post216.dev0.data/data/lib/python3.14/site-packages/ngsolve/config/config.py +60 -0
  225. ngsolve-6.2.2506.post216.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/TensorProduct/__init__.py +0 -0
  226. ngsolve-6.2.2506.post216.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/TensorProduct/tp_dg_1d_1d.py +80 -0
  227. ngsolve-6.2.2506.post216.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/TensorProduct/tp_dg_1d_2d.py +73 -0
  228. ngsolve-6.2.2506.post216.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/TensorProduct/tp_dg_2d_1d.py +72 -0
  229. ngsolve-6.2.2506.post216.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/TensorProduct/tp_dg_2d_2d.py +66 -0
  230. ngsolve-6.2.2506.post216.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/__init__.py +0 -0
  231. ngsolve-6.2.2506.post216.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/howto/__init__.py +0 -0
  232. ngsolve-6.2.2506.post216.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/howto/hhj.py +44 -0
  233. ngsolve-6.2.2506.post216.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/howto/hybrid_dg.py +53 -0
  234. ngsolve-6.2.2506.post216.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/howto/mixed.py +30 -0
  235. ngsolve-6.2.2506.post216.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/howto/nonlin.py +29 -0
  236. ngsolve-6.2.2506.post216.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/howto/pickling.py +26 -0
  237. ngsolve-6.2.2506.post216.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/howto/pml.py +31 -0
  238. ngsolve-6.2.2506.post216.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/howto/taskmanager.py +20 -0
  239. ngsolve-6.2.2506.post216.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/howto/tdnns.py +47 -0
  240. ngsolve-6.2.2506.post216.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/howto/timeDG-skeleton.py +45 -0
  241. ngsolve-6.2.2506.post216.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/howto/timeDG.py +38 -0
  242. ngsolve-6.2.2506.post216.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/howto/timeDGlap.py +42 -0
  243. ngsolve-6.2.2506.post216.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/howto/timeDGwave.py +61 -0
  244. ngsolve-6.2.2506.post216.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/intro/__init__.py +0 -0
  245. ngsolve-6.2.2506.post216.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/intro/adaptive.py +123 -0
  246. ngsolve-6.2.2506.post216.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/intro/cmagnet.py +59 -0
  247. ngsolve-6.2.2506.post216.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/intro/elasticity.py +76 -0
  248. ngsolve-6.2.2506.post216.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/intro/navierstokes.py +74 -0
  249. ngsolve-6.2.2506.post216.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/intro/poisson.ipynb +170 -0
  250. ngsolve-6.2.2506.post216.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/intro/poisson.py +41 -0
  251. ngsolve-6.2.2506.post216.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/mpi/__init__.py +0 -0
  252. ngsolve-6.2.2506.post216.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/mpi/mpi_cmagnet.py +87 -0
  253. ngsolve-6.2.2506.post216.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/mpi/mpi_navierstokes.py +117 -0
  254. ngsolve-6.2.2506.post216.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/mpi/mpi_poisson.py +89 -0
  255. ngsolve-6.2.2506.post216.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/mpi/mpi_timeDG.py +82 -0
  256. ngsolve-6.2.2506.post216.dev0.data/data/lib/python3.14/site-packages/ngsolve/directsolvers.py +14 -0
  257. ngsolve-6.2.2506.post216.dev0.data/data/lib/python3.14/site-packages/ngsolve/eigenvalues.py +364 -0
  258. ngsolve-6.2.2506.post216.dev0.data/data/lib/python3.14/site-packages/ngsolve/internal.py +89 -0
  259. ngsolve-6.2.2506.post216.dev0.data/data/lib/python3.14/site-packages/ngsolve/krylovspace.py +1182 -0
  260. ngsolve-6.2.2506.post216.dev0.data/data/lib/python3.14/site-packages/ngsolve/meshes.py +748 -0
  261. ngsolve-6.2.2506.post216.dev0.data/data/lib/python3.14/site-packages/ngsolve/ngs2petsc.py +310 -0
  262. ngsolve-6.2.2506.post216.dev0.data/data/lib/python3.14/site-packages/ngsolve/ngscuda.so +0 -0
  263. ngsolve-6.2.2506.post216.dev0.data/data/lib/python3.14/site-packages/ngsolve/ngscxx.py +42 -0
  264. ngsolve-6.2.2506.post216.dev0.data/data/lib/python3.14/site-packages/ngsolve/ngslib.so +0 -0
  265. ngsolve-6.2.2506.post216.dev0.data/data/lib/python3.14/site-packages/ngsolve/nonlinearsolvers.py +203 -0
  266. ngsolve-6.2.2506.post216.dev0.data/data/lib/python3.14/site-packages/ngsolve/preconditioners.py +11 -0
  267. ngsolve-6.2.2506.post216.dev0.data/data/lib/python3.14/site-packages/ngsolve/solve_implementation.py +168 -0
  268. ngsolve-6.2.2506.post216.dev0.data/data/lib/python3.14/site-packages/ngsolve/solvers/__init__.py +7 -0
  269. ngsolve-6.2.2506.post216.dev0.data/data/lib/python3.14/site-packages/ngsolve/solvers/cudss.py +112 -0
  270. ngsolve-6.2.2506.post216.dev0.data/data/lib/python3.14/site-packages/ngsolve/timestepping.py +185 -0
  271. ngsolve-6.2.2506.post216.dev0.data/data/lib/python3.14/site-packages/ngsolve/timing.py +108 -0
  272. ngsolve-6.2.2506.post216.dev0.data/data/lib/python3.14/site-packages/ngsolve/utils.py +167 -0
  273. ngsolve-6.2.2506.post216.dev0.data/data/lib/python3.14/site-packages/ngsolve/webgui.py +671 -0
  274. ngsolve-6.2.2506.post216.dev0.data/data/share/ngsolve/beam.geo +17 -0
  275. ngsolve-6.2.2506.post216.dev0.data/data/share/ngsolve/beam.vol +240 -0
  276. ngsolve-6.2.2506.post216.dev0.data/data/share/ngsolve/chip.in2d +41 -0
  277. ngsolve-6.2.2506.post216.dev0.data/data/share/ngsolve/chip.vol +614 -0
  278. ngsolve-6.2.2506.post216.dev0.data/data/share/ngsolve/coil.geo +12 -0
  279. ngsolve-6.2.2506.post216.dev0.data/data/share/ngsolve/coil.vol +2560 -0
  280. ngsolve-6.2.2506.post216.dev0.data/data/share/ngsolve/coilshield.geo +24 -0
  281. ngsolve-6.2.2506.post216.dev0.data/data/share/ngsolve/coilshield.vol +3179 -0
  282. ngsolve-6.2.2506.post216.dev0.data/data/share/ngsolve/cube.geo +19 -0
  283. ngsolve-6.2.2506.post216.dev0.data/data/share/ngsolve/cube.vol +1832 -0
  284. ngsolve-6.2.2506.post216.dev0.data/data/share/ngsolve/d10_DGdoubleglazing.pde +50 -0
  285. ngsolve-6.2.2506.post216.dev0.data/data/share/ngsolve/d11_chip_nitsche.pde +40 -0
  286. ngsolve-6.2.2506.post216.dev0.data/data/share/ngsolve/d1_square.pde +43 -0
  287. ngsolve-6.2.2506.post216.dev0.data/data/share/ngsolve/d2_chip.pde +35 -0
  288. ngsolve-6.2.2506.post216.dev0.data/data/share/ngsolve/d3_helmholtz.pde +22 -0
  289. ngsolve-6.2.2506.post216.dev0.data/data/share/ngsolve/d4_cube.pde +46 -0
  290. ngsolve-6.2.2506.post216.dev0.data/data/share/ngsolve/d5_beam.pde +74 -0
  291. ngsolve-6.2.2506.post216.dev0.data/data/share/ngsolve/d6_shaft.pde +73 -0
  292. ngsolve-6.2.2506.post216.dev0.data/data/share/ngsolve/d7_coil.pde +50 -0
  293. ngsolve-6.2.2506.post216.dev0.data/data/share/ngsolve/d8_coilshield.pde +49 -0
  294. ngsolve-6.2.2506.post216.dev0.data/data/share/ngsolve/d9_hybridDG.pde +72 -0
  295. ngsolve-6.2.2506.post216.dev0.data/data/share/ngsolve/doubleglazing.in2d +27 -0
  296. ngsolve-6.2.2506.post216.dev0.data/data/share/ngsolve/doubleglazing.vol +737 -0
  297. ngsolve-6.2.2506.post216.dev0.data/data/share/ngsolve/piezo2d40round4.vol.gz +0 -0
  298. ngsolve-6.2.2506.post216.dev0.data/data/share/ngsolve/shaft.geo +73 -0
  299. ngsolve-6.2.2506.post216.dev0.data/data/share/ngsolve/shaft.vol +4291 -0
  300. ngsolve-6.2.2506.post216.dev0.data/data/share/ngsolve/square.in2d +17 -0
  301. ngsolve-6.2.2506.post216.dev0.data/data/share/ngsolve/square.vol +149 -0
  302. ngsolve-6.2.2506.post216.dev0.dist-info/METADATA +14 -0
  303. ngsolve-6.2.2506.post216.dev0.dist-info/RECORD +306 -0
  304. ngsolve-6.2.2506.post216.dev0.dist-info/WHEEL +5 -0
  305. ngsolve-6.2.2506.post216.dev0.dist-info/licenses/LICENSE +504 -0
  306. ngsolve-6.2.2506.post216.dev0.dist-info/top_level.txt +1 -0
@@ -0,0 +1,239 @@
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
+ auto GetCArgs() {
195
+ return std::make_tuple(master, other, draw_pairs, volume, element_boundary);
196
+ }
197
+ void DoArchive(Archive& ar);
198
+ };
199
+
200
+ template<int DIM>
201
+ class MPContactElement : public SpecialElement
202
+ {
203
+ // ContactPair<DIM> pair;
204
+ ElementId primary_ei, secondary_ei;
205
+ IntegrationRule primary_ir, secondary_ir;
206
+ shared_ptr<ContactBoundary> cb;
207
+ FESpace* fes;
208
+ GridFunction* deformation;
209
+ public:
210
+ MPContactElement(ElementId primary_ei, ElementId secondary_ei,
211
+ IntegrationRule primary_ir, IntegrationRule secondary_ir,
212
+ shared_ptr<ContactBoundary> _cb,
213
+ GridFunction* deformation);
214
+
215
+ void GetDofNrs(Array<DofId>& dnums) const override;
216
+
217
+ double Energy(FlatVector<double> elx,
218
+ LocalHeap& lh) const override;
219
+
220
+ void Apply(FlatVector<double> elx,
221
+ FlatVector<double> ely,
222
+ LocalHeap& lh) const override;
223
+
224
+ void CalcElementMatrix(FlatMatrix<double> elmat,
225
+ LocalHeap& lh) const override;
226
+
227
+
228
+ void CalcLinearizedElementMatrix(FlatVector<double> elx,
229
+ FlatMatrix<double> elmat,
230
+ LocalHeap& lh) const override;
231
+
232
+ shared_ptr<ContactBoundary> GetContactBoundary() const
233
+ { return cb; }
234
+ };
235
+
236
+
237
+ } // namespace ngcomp
238
+
239
+ #endif // NGSOLVE_CONTACT_HPP
@@ -0,0 +1,216 @@
1
+ #ifndef CUDA_CORE_HPP
2
+ #define CUDA_CORE_HPP
3
+
4
+ #include <cuda_runtime.h>
5
+
6
+ #include <core/array.hpp>
7
+ #include <core/exception.hpp>
8
+
9
+ namespace ngs_cuda
10
+ {
11
+
12
+
13
+ // from CUDA C++ Programming Guide:
14
+ // https://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html#atomic-functions
15
+ #ifdef __CUDA_ARCH__
16
+ #if __CUDA_ARCH__ < 600
17
+ inline __device__ double atomicAdd(double* address, double val)
18
+ {
19
+ unsigned long long int* address_as_ull =
20
+ (unsigned long long int*)address;
21
+ unsigned long long int old = *address_as_ull, assumed;
22
+
23
+ do {
24
+ assumed = old;
25
+ old = atomicCAS(address_as_ull, assumed,
26
+ __double_as_longlong(val +
27
+ __longlong_as_double(assumed)));
28
+
29
+ // Note: uses integer comparison to avoid hang in case of NaN (since NaN != NaN)
30
+ } while (assumed != old);
31
+
32
+ return __longlong_as_double(old);
33
+ }
34
+ #endif
35
+ #endif
36
+
37
+
38
+
39
+ extern cudaStream_t ngs_cuda_stream;
40
+
41
+
42
+ // Kernel wrapper only available if we are compiling the current file with the cuda compiler
43
+ #ifdef __CUDACC__
44
+
45
+ template<class F> __global__
46
+ void CUDA_forall(int n, F f)
47
+ {
48
+ int tid = blockIdx.x*blockDim.x+threadIdx.x;
49
+ for (int i = tid; i < n; i += blockDim.x*gridDim.x)
50
+ f(i);
51
+ }
52
+
53
+ template<class F> __global__
54
+ void CUDA_forall2(int n, F f)
55
+ {
56
+ int tid = (blockIdx.x*blockDim.y+threadIdx.y)*blockDim.x+threadIdx.x;
57
+ for (int i = tid; i < n; i += blockDim.x*blockDim.y*gridDim.x)
58
+ f(i);
59
+ }
60
+
61
+ #define DEVICE_LAMBDA __device__
62
+
63
+ template <class F>
64
+ inline void DeviceParallelFor (int n, F f)
65
+ {
66
+ // CUDA_forall<<<512,256>>> (n, f);
67
+ CUDA_forall<<<n/256+1,256, 0, ngs_cuda_stream>>> (n, f);
68
+ // CUDA_forall<<<4096,32>>> (n, f); // slower
69
+ // CUDA_forall2<<<512,dim3(16,16)>>> (n, f); // same performance
70
+ }
71
+
72
+ #endif // __CUDACC__
73
+
74
+
75
+
76
+ class CudaGraph
77
+ {
78
+ cudaGraph_t graph;
79
+ cudaGraphExec_t instance;
80
+ cudaStream_t stream;
81
+ cudaStream_t prev_stream;
82
+
83
+ public:
84
+ CudaGraph()
85
+ {
86
+ cudaStreamCreate(&stream);
87
+ }
88
+
89
+ ~CudaGraph()
90
+ {
91
+ // TODO: delete graph, instance, stream
92
+ }
93
+
94
+
95
+ void BeginCapture()
96
+ {
97
+ cudaStreamBeginCapture(stream, cudaStreamCaptureModeGlobal);
98
+ prev_stream = ngs_cuda_stream;
99
+ ngs_cuda_stream = stream;
100
+ }
101
+
102
+ void EndCapture()
103
+ {
104
+ cudaStreamEndCapture(stream, &graph);
105
+ cudaGraphInstantiate(&instance, graph, NULL, NULL, 0);
106
+ ngs_cuda_stream = prev_stream;
107
+ }
108
+
109
+ void Launch()
110
+ {
111
+ cudaGraphLaunch(instance, ngs_cuda_stream);
112
+ // cudaStreamSynchronize(ngs_cuda_stream);
113
+ }
114
+ };
115
+
116
+
117
+
118
+
119
+
120
+ template <typename T>
121
+ class Dev
122
+ {
123
+ T data;
124
+
125
+ public:
126
+ __host__ __device__ Dev() = delete;
127
+
128
+ static Dev<T> * Malloc(size_t size)
129
+ {
130
+ Dev<T> * ptr;
131
+ if (auto err = cudaMalloc (&ptr, size*sizeof(T)))
132
+ throw ngstd::Exception("cudaMalloc error, ec="+ngcore::ToString(err));
133
+ return ptr;
134
+ }
135
+
136
+ static void Free(Dev<T> * data)
137
+ {
138
+ cudaFree (data);
139
+ }
140
+
141
+
142
+
143
+
144
+ T D2H() const
145
+ {
146
+ T res;
147
+ cudaMemcpy (&res, &data, sizeof(T), cudaMemcpyDeviceToHost);
148
+ return res;
149
+ }
150
+
151
+ void H2D (T val)
152
+
153
+ {
154
+ cudaMemcpy (this, &val, sizeof(T), cudaMemcpyHostToDevice);
155
+ }
156
+
157
+ void D2H (ngcore::FlatArray<T> hosta)
158
+ {
159
+ cudaMemcpy (hosta.Data(), &data, hosta.Size()*sizeof(T), cudaMemcpyDeviceToHost);
160
+ }
161
+
162
+ void H2D (ngcore::FlatArray<T> hosta)
163
+ {
164
+ cudaMemcpy (&data, hosta.Data(), hosta.Size()*sizeof(T), cudaMemcpyHostToDevice);
165
+ }
166
+
167
+ __host__ __device__ Dev<T> & operator= (T d2)
168
+ {
169
+ #ifdef __CUDA_ARCH__
170
+ data = d2;
171
+ #else
172
+ H2D(d2);
173
+ #endif
174
+ return *this;
175
+ }
176
+
177
+ __host__ __device__ operator T() const
178
+ {
179
+ #ifdef __CUDA_ARCH__
180
+ return data;
181
+ #else
182
+ return D2H();
183
+ #endif
184
+ }
185
+
186
+ __device__ const T& operator*() const { return data; }
187
+
188
+ template <typename T2>
189
+ __device__ auto & operator+= (T2 other) { data += other; return *this; }
190
+ template <typename T2>
191
+ __device__ auto & operator-= (T2 other) { data -= other; return *this; }
192
+ template <typename T2>
193
+ __device__ auto & operator*= (T2 other) { data *= other; return *this; }
194
+ };
195
+
196
+
197
+ template <typename T>
198
+ Dev<T> * Host2Device (const T& val)
199
+ {
200
+ auto ptr = Dev<T>::Malloc(1);
201
+ ptr->H2D(val);
202
+ return ptr;
203
+ }
204
+
205
+ template <typename T>
206
+ void Free(Dev<T> * dp)
207
+ {
208
+ Dev<T>::Free (dp);
209
+ }
210
+
211
+
212
+
213
+ }
214
+
215
+ #endif
216
+
@@ -0,0 +1,185 @@
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
+ bool output_onto = false;
105
+ bool output_matrix = false;
106
+ bool output_matrix_trans = false;
107
+
108
+ public:
109
+ DevConstantElementByElementMatrix (const T_ConstEBEMatrix & mat);
110
+ void Mult (const BaseVector & x, BaseVector & y) const override;
111
+ void MultAdd (double s, const BaseVector & x, BaseVector & y) const override;
112
+ void MultTransAdd (double s, const BaseVector & x, BaseVector & y) const override;
113
+
114
+ int VHeight() const override { return h; }
115
+ int VWidth() const override { return w; }
116
+ };
117
+
118
+
119
+
120
+ class DevBlockDiagonalMatrixSoA : public DevMatrix
121
+ {
122
+ double * dev_data; // Tensor<3> blockdiag;
123
+ int blocks, dimy, dimx;
124
+ Matrix<bool> nonzero;
125
+ Array<Dev<int>> indices, indices_trans;
126
+ DevTable<int> sparse, sparseT;
127
+ public:
128
+ DevBlockDiagonalMatrixSoA (const BlockDiagonalMatrixSoA & mat);
129
+ void Mult (const BaseVector & x, BaseVector & y) const override;
130
+ void MultAdd (double s, const BaseVector & x, BaseVector & y) const override;
131
+ void MultTrans (const BaseVector & x, BaseVector & y) const override;
132
+ void MultTransAdd (double s, const BaseVector & x, BaseVector & y) const override;
133
+ int VHeight() const override { return dimy*blocks; }
134
+ int VWidth() const override { return dimx*blocks; }
135
+ };
136
+
137
+
138
+
139
+ class DevEmbeddedMatrix : public EmbeddedMatrix
140
+ {
141
+ public:
142
+ using EmbeddedMatrix::EmbeddedMatrix;
143
+ AutoVector CreateColVector() const override { return make_unique<UnifiedVector>(Height()); }
144
+ };
145
+
146
+ class DevEmbeddedTransposeMatrix : public EmbeddedTransposeMatrix
147
+ {
148
+ public:
149
+ using EmbeddedTransposeMatrix::EmbeddedTransposeMatrix;
150
+ AutoVector CreateRowVector() const override { return make_unique<UnifiedVector>(Width()); }
151
+ };
152
+
153
+
154
+ class DevProjector : public DevMatrix
155
+ {
156
+ private:
157
+ shared_ptr<DevBitArray> bits;
158
+ bool keep_values;
159
+ public:
160
+ DevProjector (const Projector & proj)
161
+ : bits(make_shared<DevBitArray>(*proj.Mask())),
162
+ keep_values(proj.KeepValues()) { ; }
163
+
164
+ virtual xbool IsSymmetric() const { return true; }
165
+
166
+ void Mult (const BaseVector & x, BaseVector & y) const override;
167
+ void MultAdd (double s, const BaseVector & x, BaseVector & y) const override;
168
+
169
+ void Project (BaseVector & x) const;
170
+
171
+ virtual int VHeight() const override { return bits->Size(); }
172
+ virtual int VWidth() const override { return bits->Size(); }
173
+
174
+ AutoVector CreateRowVector() const override
175
+ { throw Exception("CreateRowVector not implemented for DevProjector!"); }
176
+ AutoVector CreateColVector() const override
177
+ { throw Exception("CreateColVector not implemented for DevProjector!"); }
178
+
179
+ };
180
+
181
+
182
+ }
183
+
184
+
185
+ #endif