ngsolve 6.2.2506.post75.dev0__cp311-cp311-manylinux_2_28_x86_64.whl → 6.2.2506.post168.dev0__cp311-cp311-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 (333) hide show
  1. ngsolve-6.2.2506.post168.dev0.data/data/bin/ngs_nvcc +22 -0
  2. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/bin/ngs_nvlink +4 -1
  3. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/bdbequations.hpp +2 -0
  4. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/bilinearform.hpp +3 -0
  5. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/code_generation.hpp +2 -2
  6. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/complex_wrapper.hpp +30 -2
  7. ngsolve-6.2.2506.post168.dev0.data/data/include/netgen/cuda_core.hpp +173 -0
  8. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/cuda_linalg.hpp +4 -0
  9. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/cuda_ngbla.hpp +99 -8
  10. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/cuda_ngstd.hpp +1 -114
  11. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/elementbyelement.hpp +5 -2
  12. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/expr.hpp +13 -6
  13. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/gridfunction.hpp +1 -1
  14. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/kernels.hpp +24 -62
  15. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/linalg_kernels.hpp +0 -32
  16. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/matrix.hpp +8 -3
  17. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/meshaccess.hpp +1 -1
  18. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/mycomplex.hpp +1 -1
  19. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/ngblas.hpp +3 -3
  20. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/prolongation.hpp +6 -3
  21. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/sparsecholesky.hpp +6 -2
  22. ngsolve-6.2.2506.post168.dev0.data/data/include/netgen/sparsefactorization_interface.hpp +159 -0
  23. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/sparsematrix.hpp +2 -2
  24. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/sparsematrix_impl.hpp +33 -11
  25. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/statushandler.hpp +8 -8
  26. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/tscalarfe.hpp +1 -1
  27. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/vector.hpp +220 -35
  28. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/lib/cmake/ngsolve/NGSolveConfig.cmake +3 -3
  29. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/lib/cmake/ngsolve/ngsolve-targets.cmake +16 -9
  30. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/lib/python3.11/site-packages/netgen_mesher.libs/libngbla.so +0 -0
  31. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/lib/python3.11/site-packages/netgen_mesher.libs/libngcomp.so +0 -0
  32. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/lib/python3.11/site-packages/netgen_mesher.libs/libngfem.so +0 -0
  33. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/lib/python3.11/site-packages/netgen_mesher.libs/libngla.so +0 -0
  34. ngsolve-6.2.2506.post168.dev0.data/data/lib/python3.11/site-packages/netgen_mesher.libs/libngsbem.so +0 -0
  35. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/lib/python3.11/site-packages/netgen_mesher.libs/libngscudalib.so +0 -0
  36. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/lib/python3.11/site-packages/netgen_mesher.libs/libngsolve.so +0 -0
  37. ngsolve-6.2.2506.post168.dev0.data/data/lib/python3.11/site-packages/netgen_mesher.libs/libngstd.so +0 -0
  38. ngsolve-6.2.2506.post168.dev0.data/data/lib/python3.11/site-packages/ngsolve/__init__.pyi +236 -0
  39. ngsolve-6.2.2506.post168.dev0.data/data/lib/python3.11/site-packages/ngsolve/bla.pyi +1041 -0
  40. ngsolve-6.2.2506.post168.dev0.data/data/lib/python3.11/site-packages/ngsolve/bvp.pyi +32 -0
  41. ngsolve-6.2.2506.post168.dev0.data/data/lib/python3.11/site-packages/ngsolve/comp/__init__.pyi +5443 -0
  42. ngsolve-6.2.2506.post168.dev0.data/data/lib/python3.11/site-packages/ngsolve/comp/pml.pyi +89 -0
  43. ngsolve-6.2.2506.post168.dev0.data/data/lib/python3.11/site-packages/ngsolve/config/__init__.pyi +43 -0
  44. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/lib/python3.11/site-packages/ngsolve/config/config.py +5 -5
  45. ngsolve-6.2.2506.post168.dev0.data/data/lib/python3.11/site-packages/ngsolve/config/config.pyi +45 -0
  46. ngsolve-6.2.2506.post168.dev0.data/data/lib/python3.11/site-packages/ngsolve/directsolvers.py +14 -0
  47. ngsolve-6.2.2506.post168.dev0.data/data/lib/python3.11/site-packages/ngsolve/directsolvers.pyi +12 -0
  48. ngsolve-6.2.2506.post168.dev0.data/data/lib/python3.11/site-packages/ngsolve/eigenvalues.pyi +30 -0
  49. ngsolve-6.2.2506.post168.dev0.data/data/lib/python3.11/site-packages/ngsolve/fem.pyi +1647 -0
  50. ngsolve-6.2.2506.post168.dev0.data/data/lib/python3.11/site-packages/ngsolve/krylovspace.pyi +301 -0
  51. ngsolve-6.2.2506.post168.dev0.data/data/lib/python3.11/site-packages/ngsolve/la.pyi +1235 -0
  52. ngsolve-6.2.2506.post168.dev0.data/data/lib/python3.11/site-packages/ngsolve/ngscuda.so +0 -0
  53. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/lib/python3.11/site-packages/ngsolve/ngslib.so +0 -0
  54. ngsolve-6.2.2506.post168.dev0.data/data/lib/python3.11/site-packages/ngsolve/ngstd.pyi +59 -0
  55. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/lib/python3.11/site-packages/ngsolve/nonlinearsolvers.py +2 -2
  56. ngsolve-6.2.2506.post168.dev0.data/data/lib/python3.11/site-packages/ngsolve/nonlinearsolvers.pyi +98 -0
  57. ngsolve-6.2.2506.post168.dev0.data/data/lib/python3.11/site-packages/ngsolve/preconditioners.pyi +7 -0
  58. ngsolve-6.2.2506.post168.dev0.data/data/lib/python3.11/site-packages/ngsolve/solve.pyi +109 -0
  59. ngsolve-6.2.2506.post168.dev0.data/data/lib/python3.11/site-packages/ngsolve/solve_implementation.pyi +42 -0
  60. ngsolve-6.2.2506.post168.dev0.data/data/lib/python3.11/site-packages/ngsolve/solvers/__init__.pyi +14 -0
  61. ngsolve-6.2.2506.post168.dev0.data/data/lib/python3.11/site-packages/ngsolve/solvers/cudss.py +110 -0
  62. ngsolve-6.2.2506.post168.dev0.data/data/lib/python3.11/site-packages/ngsolve/timestepping.pyi +27 -0
  63. ngsolve-6.2.2506.post168.dev0.data/data/lib/python3.11/site-packages/ngsolve/timing.pyi +54 -0
  64. ngsolve-6.2.2506.post168.dev0.data/data/lib/python3.11/site-packages/ngsolve/utils.pyi +273 -0
  65. {ngsolve-6.2.2506.post75.dev0.dist-info → ngsolve-6.2.2506.post168.dev0.dist-info}/METADATA +2 -2
  66. ngsolve-6.2.2506.post168.dev0.dist-info/RECORD +327 -0
  67. ngsolve-6.2.2506.post75.dev0.data/data/bin/ngs_nvcc +0 -14
  68. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.11/site-packages/netgen_mesher.libs/libngsbem.so +0 -0
  69. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.11/site-packages/netgen_mesher.libs/libngstd.so +0 -0
  70. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.11/site-packages/ngsolve/directsolvers.py +0 -26
  71. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.11/site-packages/ngsolve/ngscuda.so +0 -0
  72. ngsolve-6.2.2506.post75.dev0.dist-info/RECORD +0 -303
  73. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/bin/ngscxx +0 -0
  74. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/bin/ngsld +0 -0
  75. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/bin/ngsolve.tcl +0 -0
  76. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/bin/ngspy +0 -0
  77. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/analytic_integrals.hpp +0 -0
  78. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/arnoldi.hpp +0 -0
  79. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/bandmatrix.hpp +0 -0
  80. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/basematrix.hpp +0 -0
  81. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/basevector.hpp +0 -0
  82. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/bdbintegrator.hpp +0 -0
  83. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/bem_diffops.hpp +0 -0
  84. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/bessel.hpp +0 -0
  85. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/bla.hpp +0 -0
  86. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/blockalloc.hpp +0 -0
  87. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/blockjacobi.hpp +0 -0
  88. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/bspline.hpp +0 -0
  89. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/calcinverse.hpp +0 -0
  90. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/cg.hpp +0 -0
  91. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/chebyshev.hpp +0 -0
  92. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/cholesky.hpp +0 -0
  93. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/clapack.h +0 -0
  94. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/coefficient.hpp +0 -0
  95. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/coefficient_impl.hpp +0 -0
  96. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/coefficient_stdmath.hpp +0 -0
  97. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/commutingAMG.hpp +0 -0
  98. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/comp.hpp +0 -0
  99. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/compatibility.hpp +0 -0
  100. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/compressedfespace.hpp +0 -0
  101. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/contact.hpp +0 -0
  102. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/cuda_profiler.hpp +0 -0
  103. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/diagonalmatrix.hpp +0 -0
  104. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/differentialoperator.hpp +0 -0
  105. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/diffop.hpp +0 -0
  106. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/diffop_impl.hpp +0 -0
  107. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/diffopwithfactor.hpp +0 -0
  108. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/discontinuous.hpp +0 -0
  109. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/dump.hpp +0 -0
  110. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/ectypes.hpp +0 -0
  111. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/eigen.hpp +0 -0
  112. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/eigensystem.hpp +0 -0
  113. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/elasticity_equations.hpp +0 -0
  114. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/elementtopology.hpp +0 -0
  115. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/elementtransformation.hpp +0 -0
  116. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/evalfunc.hpp +0 -0
  117. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/facetfe.hpp +0 -0
  118. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/facetfespace.hpp +0 -0
  119. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/facethofe.hpp +0 -0
  120. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/facetsurffespace.hpp +0 -0
  121. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/fe_interfaces.hpp +0 -0
  122. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/fem.hpp +0 -0
  123. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/fesconvert.hpp +0 -0
  124. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/fespace.hpp +0 -0
  125. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/finiteelement.hpp +0 -0
  126. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/globalinterfacespace.hpp +0 -0
  127. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/globalspace.hpp +0 -0
  128. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/h1amg.hpp +0 -0
  129. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/h1hofe.hpp +0 -0
  130. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/h1hofe_impl.hpp +0 -0
  131. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/h1hofefo.hpp +0 -0
  132. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/h1hofefo_impl.hpp +0 -0
  133. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/h1hofespace.hpp +0 -0
  134. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/h1lofe.hpp +0 -0
  135. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/h1lumping.hpp +0 -0
  136. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/hcurl_equations.hpp +0 -0
  137. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/hcurlcurlfe.hpp +0 -0
  138. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/hcurlcurlfespace.hpp +0 -0
  139. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/hcurlfe.hpp +0 -0
  140. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/hcurlfe_utils.hpp +0 -0
  141. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/hcurlhdiv_dshape.hpp +0 -0
  142. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/hcurlhdivfes.hpp +0 -0
  143. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/hcurlhofe.hpp +0 -0
  144. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/hcurlhofe_impl.hpp +0 -0
  145. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/hcurlhofespace.hpp +0 -0
  146. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/hcurllofe.hpp +0 -0
  147. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/hdiv_equations.hpp +0 -0
  148. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/hdivdivfe.hpp +0 -0
  149. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/hdivdivsurfacespace.hpp +0 -0
  150. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/hdivfe.hpp +0 -0
  151. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/hdivfe_utils.hpp +0 -0
  152. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/hdivfes.hpp +0 -0
  153. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/hdivhofe.hpp +0 -0
  154. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/hdivhofe_impl.hpp +0 -0
  155. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/hdivhofefo.hpp +0 -0
  156. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/hdivhofespace.hpp +0 -0
  157. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/hdivhosurfacefespace.hpp +0 -0
  158. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/hdivlofe.hpp +0 -0
  159. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/hidden.hpp +0 -0
  160. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/householder.hpp +0 -0
  161. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/hypre_ams_precond.hpp +0 -0
  162. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/hypre_precond.hpp +0 -0
  163. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/integrator.hpp +0 -0
  164. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/integratorcf.hpp +0 -0
  165. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/interpolate.hpp +0 -0
  166. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/intrule.hpp +0 -0
  167. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/intrules_SauterSchwab.hpp +0 -0
  168. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/irspace.hpp +0 -0
  169. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/jacobi.hpp +0 -0
  170. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/l2hofe.hpp +0 -0
  171. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/l2hofe_impl.hpp +0 -0
  172. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/l2hofefo.hpp +0 -0
  173. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/l2hofespace.hpp +0 -0
  174. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/la.hpp +0 -0
  175. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/linearform.hpp +0 -0
  176. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/memusage.hpp +0 -0
  177. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/mgpre.hpp +0 -0
  178. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/mp_coefficient.hpp +0 -0
  179. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/mptools.hpp +0 -0
  180. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/multigrid.hpp +0 -0
  181. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/multivector.hpp +0 -0
  182. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/mumpsinverse.hpp +0 -0
  183. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/ng_lapack.hpp +0 -0
  184. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/ngs_defines.hpp +0 -0
  185. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/ngs_stdcpp_include.hpp +0 -0
  186. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/ngs_utils.hpp +0 -0
  187. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/ngsobject.hpp +0 -0
  188. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/ngsstream.hpp +0 -0
  189. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/ngstd.hpp +0 -0
  190. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/nodalhofe.hpp +0 -0
  191. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/nodalhofe_impl.hpp +0 -0
  192. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/normalfacetfe.hpp +0 -0
  193. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/normalfacetfespace.hpp +0 -0
  194. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/normalfacetsurfacefespace.hpp +0 -0
  195. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/order.hpp +0 -0
  196. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/parallel_matrices.hpp +0 -0
  197. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/paralleldofs.hpp +0 -0
  198. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/parallelngs.hpp +0 -0
  199. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/parallelvector.hpp +0 -0
  200. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/pardisoinverse.hpp +0 -0
  201. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/periodic.hpp +0 -0
  202. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/plateaufespace.hpp +0 -0
  203. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/pml.hpp +0 -0
  204. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/pmltrafo.hpp +0 -0
  205. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/postproc.hpp +0 -0
  206. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/potentialtools.hpp +0 -0
  207. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/precomp.hpp +0 -0
  208. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/preconditioner.hpp +0 -0
  209. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/python_comp.hpp +0 -0
  210. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/python_fem.hpp +0 -0
  211. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/python_linalg.hpp +0 -0
  212. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/python_ngstd.hpp +0 -0
  213. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/recursive_pol.hpp +0 -0
  214. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/recursive_pol_tet.hpp +0 -0
  215. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/recursive_pol_trig.hpp +0 -0
  216. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/reorderedfespace.hpp +0 -0
  217. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/sample_sort.hpp +0 -0
  218. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/scalarfe.hpp +0 -0
  219. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/shapefunction_utils.hpp +0 -0
  220. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/simd_complex.hpp +0 -0
  221. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/smoother.hpp +0 -0
  222. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/solve.hpp +0 -0
  223. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/sparsematrix_dyn.hpp +0 -0
  224. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/special_matrix.hpp +0 -0
  225. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/specialelement.hpp +0 -0
  226. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/stringops.hpp +0 -0
  227. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/superluinverse.hpp +0 -0
  228. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/symbolicintegrator.hpp +0 -0
  229. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/symmetricmatrix.hpp +0 -0
  230. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/tangentialfacetfe.hpp +0 -0
  231. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/tangentialfacetfespace.hpp +0 -0
  232. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/tensor.hpp +0 -0
  233. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/tensorcoefficient.hpp +0 -0
  234. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/tensorproductintegrator.hpp +0 -0
  235. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/thcurlfe.hpp +0 -0
  236. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/thcurlfe_impl.hpp +0 -0
  237. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/thdivfe.hpp +0 -0
  238. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/thdivfe_impl.hpp +0 -0
  239. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/tpdiffop.hpp +0 -0
  240. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/tpfes.hpp +0 -0
  241. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/tpintrule.hpp +0 -0
  242. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/triangular.hpp +0 -0
  243. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/tscalarfe_impl.hpp +0 -0
  244. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/umfpackinverse.hpp +0 -0
  245. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/unifiedvector.hpp +0 -0
  246. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/voxelcoefficientfunction.hpp +0 -0
  247. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/vtkoutput.hpp +0 -0
  248. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/vvector.hpp +0 -0
  249. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/webgui.hpp +0 -0
  250. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/lib/cmake/ngsolve/ngsolve-targets-release.cmake +0 -0
  251. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/lib/python3.11/site-packages/ngsolve/TensorProductTools.py +0 -0
  252. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/lib/python3.11/site-packages/ngsolve/__console.py +0 -0
  253. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/lib/python3.11/site-packages/ngsolve/__expr.py +0 -0
  254. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/lib/python3.11/site-packages/ngsolve/__init__.py +0 -0
  255. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/lib/python3.11/site-packages/ngsolve/_scikit_build_core_dependencies.py +0 -0
  256. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/lib/python3.11/site-packages/ngsolve/bvp.py +0 -0
  257. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/lib/python3.11/site-packages/ngsolve/config/__init__.py +0 -0
  258. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/lib/python3.11/site-packages/ngsolve/config/__main__.py +0 -0
  259. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/lib/python3.11/site-packages/ngsolve/demos/TensorProduct/__init__.py +0 -0
  260. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/lib/python3.11/site-packages/ngsolve/demos/TensorProduct/tp_dg_1d_1d.py +0 -0
  261. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/lib/python3.11/site-packages/ngsolve/demos/TensorProduct/tp_dg_1d_2d.py +0 -0
  262. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/lib/python3.11/site-packages/ngsolve/demos/TensorProduct/tp_dg_2d_1d.py +0 -0
  263. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/lib/python3.11/site-packages/ngsolve/demos/TensorProduct/tp_dg_2d_2d.py +0 -0
  264. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/lib/python3.11/site-packages/ngsolve/demos/__init__.py +0 -0
  265. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/lib/python3.11/site-packages/ngsolve/demos/howto/__init__.py +0 -0
  266. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/lib/python3.11/site-packages/ngsolve/demos/howto/hhj.py +0 -0
  267. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/lib/python3.11/site-packages/ngsolve/demos/howto/hybrid_dg.py +0 -0
  268. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/lib/python3.11/site-packages/ngsolve/demos/howto/mixed.py +0 -0
  269. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/lib/python3.11/site-packages/ngsolve/demos/howto/nonlin.py +0 -0
  270. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/lib/python3.11/site-packages/ngsolve/demos/howto/pickling.py +0 -0
  271. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/lib/python3.11/site-packages/ngsolve/demos/howto/pml.py +0 -0
  272. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/lib/python3.11/site-packages/ngsolve/demos/howto/taskmanager.py +0 -0
  273. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/lib/python3.11/site-packages/ngsolve/demos/howto/tdnns.py +0 -0
  274. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/lib/python3.11/site-packages/ngsolve/demos/howto/timeDG-skeleton.py +0 -0
  275. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/lib/python3.11/site-packages/ngsolve/demos/howto/timeDG.py +0 -0
  276. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/lib/python3.11/site-packages/ngsolve/demos/howto/timeDGlap.py +0 -0
  277. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/lib/python3.11/site-packages/ngsolve/demos/howto/timeDGwave.py +0 -0
  278. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/lib/python3.11/site-packages/ngsolve/demos/intro/__init__.py +0 -0
  279. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/lib/python3.11/site-packages/ngsolve/demos/intro/adaptive.py +0 -0
  280. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/lib/python3.11/site-packages/ngsolve/demos/intro/cmagnet.py +0 -0
  281. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/lib/python3.11/site-packages/ngsolve/demos/intro/elasticity.py +0 -0
  282. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/lib/python3.11/site-packages/ngsolve/demos/intro/navierstokes.py +0 -0
  283. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/lib/python3.11/site-packages/ngsolve/demos/intro/poisson.ipynb +0 -0
  284. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/lib/python3.11/site-packages/ngsolve/demos/intro/poisson.py +0 -0
  285. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/lib/python3.11/site-packages/ngsolve/demos/mpi/__init__.py +0 -0
  286. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/lib/python3.11/site-packages/ngsolve/demos/mpi/mpi_cmagnet.py +0 -0
  287. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/lib/python3.11/site-packages/ngsolve/demos/mpi/mpi_navierstokes.py +0 -0
  288. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/lib/python3.11/site-packages/ngsolve/demos/mpi/mpi_poisson.py +0 -0
  289. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/lib/python3.11/site-packages/ngsolve/demos/mpi/mpi_timeDG.py +0 -0
  290. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/lib/python3.11/site-packages/ngsolve/eigenvalues.py +0 -0
  291. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/lib/python3.11/site-packages/ngsolve/internal.py +0 -0
  292. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/lib/python3.11/site-packages/ngsolve/krylovspace.py +0 -0
  293. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/lib/python3.11/site-packages/ngsolve/meshes.py +0 -0
  294. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/lib/python3.11/site-packages/ngsolve/ngs2petsc.py +0 -0
  295. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/lib/python3.11/site-packages/ngsolve/ngscxx.py +0 -0
  296. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/lib/python3.11/site-packages/ngsolve/preconditioners.py +0 -0
  297. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/lib/python3.11/site-packages/ngsolve/solve_implementation.py +0 -0
  298. /ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.11/site-packages/ngsolve/solvers.py → /ngsolve-6.2.2506.post168.dev0.data/data/lib/python3.11/site-packages/ngsolve/solvers/__init__.py +0 -0
  299. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/lib/python3.11/site-packages/ngsolve/timestepping.py +0 -0
  300. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/lib/python3.11/site-packages/ngsolve/timing.py +0 -0
  301. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/lib/python3.11/site-packages/ngsolve/utils.py +0 -0
  302. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/lib/python3.11/site-packages/ngsolve/webgui.py +0 -0
  303. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/share/ngsolve/beam.geo +0 -0
  304. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/share/ngsolve/beam.vol +0 -0
  305. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/share/ngsolve/chip.in2d +0 -0
  306. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/share/ngsolve/chip.vol +0 -0
  307. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/share/ngsolve/coil.geo +0 -0
  308. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/share/ngsolve/coil.vol +0 -0
  309. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/share/ngsolve/coilshield.geo +0 -0
  310. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/share/ngsolve/coilshield.vol +0 -0
  311. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/share/ngsolve/cube.geo +0 -0
  312. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/share/ngsolve/cube.vol +0 -0
  313. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/share/ngsolve/d10_DGdoubleglazing.pde +0 -0
  314. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/share/ngsolve/d11_chip_nitsche.pde +0 -0
  315. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/share/ngsolve/d1_square.pde +0 -0
  316. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/share/ngsolve/d2_chip.pde +0 -0
  317. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/share/ngsolve/d3_helmholtz.pde +0 -0
  318. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/share/ngsolve/d4_cube.pde +0 -0
  319. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/share/ngsolve/d5_beam.pde +0 -0
  320. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/share/ngsolve/d6_shaft.pde +0 -0
  321. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/share/ngsolve/d7_coil.pde +0 -0
  322. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/share/ngsolve/d8_coilshield.pde +0 -0
  323. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/share/ngsolve/d9_hybridDG.pde +0 -0
  324. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/share/ngsolve/doubleglazing.in2d +0 -0
  325. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/share/ngsolve/doubleglazing.vol +0 -0
  326. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/share/ngsolve/piezo2d40round4.vol.gz +0 -0
  327. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/share/ngsolve/shaft.geo +0 -0
  328. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/share/ngsolve/shaft.vol +0 -0
  329. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/share/ngsolve/square.in2d +0 -0
  330. {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/share/ngsolve/square.vol +0 -0
  331. {ngsolve-6.2.2506.post75.dev0.dist-info → ngsolve-6.2.2506.post168.dev0.dist-info}/WHEEL +0 -0
  332. {ngsolve-6.2.2506.post75.dev0.dist-info → ngsolve-6.2.2506.post168.dev0.dist-info}/licenses/LICENSE +0 -0
  333. {ngsolve-6.2.2506.post75.dev0.dist-info → ngsolve-6.2.2506.post168.dev0.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,22 @@
1
+ #!/usr/bin/bash
2
+ NGSCXX_DIR=$( cd $(dirname $0); pwd )
3
+ PY_INCLUDE_FLAGS=-I$(python3 -c"import sysconfig;print(sysconfig.get_path('include'))")
4
+ if [ -f /opt/rh/gcc-toolset-14/root/usr/bin/c++ ]
5
+ then NGSCXX=/opt/rh/gcc-toolset-14/root/usr/bin/c++
6
+ else NGSCXX=c++
7
+ fi
8
+ export CCACHE_NOHASHDIR=1
9
+
10
+
11
+ if [ -f /usr/local/cuda/bin/nvcc ]
12
+ then NVCC=/usr/local/cuda/bin/nvcc
13
+ else NVCC=nvcc
14
+ fi
15
+
16
+
17
+ if [ -f /usr/bin/ccache ]
18
+ then /usr/bin/ccache $NVCC -DHAVE_NETGEN_SOURCES -DHAVE_DLFCN_H -DHAVE_CXA_DEMANGLE -DUSE_TIMEOFDAY -DTCL -DLAPACK -DUSE_PARDISO -DNGS_PYTHON -D_GLIBCXX_USE_CXX11_ABI=1 -DNETGEN_PYTHON -DNG_PYTHON -DPYBIND11_SIMPLE_GIL_MANAGEMENT -DPARALLEL -DNG_MPI_WRAPPER -arch=native --expt-relaxed-constexpr --extended-lambda --diag-suppress=611 --diag-suppress=20011 --diag-suppress=20012 --diag-suppress=20013 --diag-suppress=20014 --diag-suppress=20015 -rdc=true -Xcompiler -std=c++17 -Xcompiler -DMAX_SYS_DIM=3 -Xcompiler -march=core-avx2 -Xcompiler -fabi-version=17 -Xcompiler -fPIC -I/opt/_internal/cpython-3.11.13/include -I/opt/_internal/cpython-3.11.13/include/python3.11 -I$NGSCXX_DIR/../include/netgen -I$NGSCXX_DIR/../include/netgen/include $PY_INCLUDE_FLAGS $*
19
+
20
+ else $NVCC -DHAVE_NETGEN_SOURCES -DHAVE_DLFCN_H -DHAVE_CXA_DEMANGLE -DUSE_TIMEOFDAY -DTCL -DLAPACK -DUSE_PARDISO -DNGS_PYTHON -D_GLIBCXX_USE_CXX11_ABI=1 -DNETGEN_PYTHON -DNG_PYTHON -DPYBIND11_SIMPLE_GIL_MANAGEMENT -DPARALLEL -DNG_MPI_WRAPPER -arch=native --expt-relaxed-constexpr --extended-lambda --diag-suppress=611 --diag-suppress=20011 --diag-suppress=20012 --diag-suppress=20013 --diag-suppress=20014 --diag-suppress=20015 -rdc=true -Xcompiler -std=c++17 -Xcompiler -DMAX_SYS_DIM=3 -Xcompiler -march=core-avx2 -Xcompiler -fabi-version=17 -Xcompiler -fPIC -I/opt/_internal/cpython-3.11.13/include -I/opt/_internal/cpython-3.11.13/include/python3.11 -I$NGSCXX_DIR/../include/netgen -I$NGSCXX_DIR/../include/netgen/include $PY_INCLUDE_FLAGS $*
21
+
22
+ fi
@@ -1,3 +1,4 @@
1
+ #!/usr/bin/bash
1
2
  NGSCXX_DIR=$( cd $(dirname $0); pwd )
2
3
  PY_INCLUDE_FLAGS=-I$(python3 -c"import sysconfig;print(sysconfig.get_path('include'))")
3
4
  if [ -f /opt/rh/gcc-toolset-14/root/usr/bin/c++ ]
@@ -6,9 +7,11 @@ if [ -f /opt/rh/gcc-toolset-14/root/usr/bin/c++ ]
6
7
  fi
7
8
  export CCACHE_NOHASHDIR=1
8
9
 
10
+
9
11
  if [ -f /usr/local/cuda/bin/nvcc ]
10
12
  then NVCC=/usr/local/cuda/bin/nvcc
11
13
  else NVCC=nvcc
12
14
  fi
13
15
 
14
- $NGSCXX -L$NGSCXX_DIR/../lib/python3.11/site-packages/netgen_mesher.libs -Wl,--rpath=$NGSCXX_DIR/../lib/python3.11/site-packages/netgen_mesher.libs $*
16
+ $NVCC -rdc=true -arch=native $*
17
+
@@ -2783,9 +2783,11 @@ namespace ngfem
2783
2783
  extern template class NGS_DLL_HEADER T_DifferentialOperator<DiffOpGradVectorH1<2> >;
2784
2784
  extern template class NGS_DLL_HEADER T_DifferentialOperator<DiffOpGradVectorH1<3> >;
2785
2785
 
2786
+ extern template class NGS_DLL_HEADER T_DifferentialOperator<DiffOpGradientBoundary<1> >;
2786
2787
  extern template class NGS_DLL_HEADER T_DifferentialOperator<DiffOpGradientBoundary<2> >;
2787
2788
  extern template class NGS_DLL_HEADER T_DifferentialOperator<DiffOpGradientBoundary<3> >;
2788
2789
 
2790
+ extern template class NGS_DLL_HEADER T_DifferentialOperator<DiffOpGradBoundaryVectorH1<1> >;
2789
2791
  extern template class NGS_DLL_HEADER T_DifferentialOperator<DiffOpGradBoundaryVectorH1<2> >;
2790
2792
  extern template class NGS_DLL_HEADER T_DifferentialOperator<DiffOpGradBoundaryVectorH1<3> >;
2791
2793
 
@@ -952,6 +952,9 @@ namespace ngcomp
952
952
  size_t GetDimX() const { return dimx; }
953
953
  size_t GetDimY() const { return dimy; }
954
954
  size_t GetNIP() const { return nip; }
955
+
956
+ FlatMatrix<double> GetPoints() const { return points; }
957
+ FlatMatrix<double> GetNormals() const { return normals; }
955
958
  };
956
959
 
957
960
 
@@ -57,7 +57,7 @@ namespace ngfem
57
57
 
58
58
  string pointer;
59
59
 
60
- NGS_DLL_HEADER string AddPointer(const void *p );
60
+ NGS_DLL_HEADER string AddPointer(const void *p, string name = "", string type = "void *", string qualifiers = "");
61
61
 
62
62
  void AddLinkFlag(string flag);
63
63
 
@@ -287,7 +287,7 @@ namespace ngfem
287
287
  }
288
288
 
289
289
  std::filesystem::path CreateTempDir();
290
- unique_ptr<SharedLibrary> CompileCode(const std::vector<std::variant<filesystem::path, string>> &codes, const std::vector<string> &link_flags, bool keep_files = false );
290
+ unique_ptr<SharedLibrary> CompileCode(const std::vector<std::variant<filesystem::path, string>> &codes, const std::vector<string> &link_flags, bool keep_files = false, optional<string> compiler = nullopt, optional<string> linker = nullopt);
291
291
  namespace detail {
292
292
  string GenerateL2ElementCode(int order);
293
293
  }
@@ -1,15 +1,17 @@
1
1
  #ifndef COMPLEX_WRAPPER
2
2
  #define COMPLEX_WRAPPER
3
3
 
4
+
5
+
4
6
  #include <complex>
5
7
 
8
+
6
9
  #ifdef USE_MYCOMPLEX
7
10
  #include <mycomplex.hpp>
8
11
  #endif
9
12
 
10
13
 
11
14
 
12
-
13
15
  // #ifdef __clang__
14
16
  #if defined(__GNUC__) && !defined(__INTEL_COMPILER)
15
17
  namespace std
@@ -25,18 +27,44 @@ namespace std
25
27
 
26
28
 
27
29
 
30
+
28
31
  namespace ngcore
29
32
  {
33
+
30
34
  #ifdef USE_MYCOMPLEX
31
35
  typedef ngstd::MyComplex<double> Complex;
32
36
  using std::fabs;
33
- inline double fabs (Complex v) { return ngstd::abs (v); }
37
+ INLINE double fabs (Complex v) { return ngstd::abs (v); }
34
38
  #else
35
39
  typedef std::complex<double> Complex;
36
40
  using std::fabs;
37
41
  inline double fabs (Complex v) { return std::abs (v); }
38
42
  #endif
43
+
44
+ }
45
+
46
+
47
+ #if defined(__CUDA_ARCH__)
48
+ namespace ngcore
49
+ {
50
+ __device__ inline Complex conj(Complex a)
51
+ {
52
+ return Complex (a.real(), -a.imag());
53
+ }
54
+
55
+ __device__ inline Complex operator+ (Complex a, Complex b) {
56
+ return Complex(a.real()+b.real(), a.imag()+b.imag());
57
+ }
58
+ __device__ inline Complex& operator+= (Complex& a, Complex b) {
59
+ a = a+b;
60
+ return a;
61
+ }
39
62
  }
63
+ #endif
64
+
65
+
66
+
67
+
40
68
 
41
69
 
42
70
 
@@ -0,0 +1,173 @@
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
+ // Kernel wrapper only available if we are compiling the current file with the cuda compiler
40
+ #ifdef __CUDACC__
41
+
42
+ template<class F> __global__
43
+ void CUDA_forall(int n, F f)
44
+ {
45
+ int tid = blockIdx.x*blockDim.x+threadIdx.x;
46
+ for (int i = tid; i < n; i += blockDim.x*gridDim.x)
47
+ f(i);
48
+ }
49
+
50
+ template<class F> __global__
51
+ void CUDA_forall2(int n, F f)
52
+ {
53
+ int tid = (blockIdx.x*blockDim.y+threadIdx.y)*blockDim.x+threadIdx.x;
54
+ for (int i = tid; i < n; i += blockDim.x*blockDim.y*gridDim.x)
55
+ f(i);
56
+ }
57
+
58
+ #define DEVICE_LAMBDA __device__
59
+
60
+ template <class F>
61
+ inline void DeviceParallelFor (int n, F f)
62
+ {
63
+ // CUDA_forall<<<512,256>>> (n, f);
64
+ CUDA_forall<<<n/256+1,256>>> (n, f);
65
+ // CUDA_forall<<<4096,32>>> (n, f); // slower
66
+ // CUDA_forall2<<<512,dim3(16,16)>>> (n, f); // same performance
67
+ }
68
+
69
+ #endif // __CUDACC__
70
+
71
+
72
+
73
+
74
+
75
+
76
+
77
+ template <typename T>
78
+ class Dev
79
+ {
80
+ T data;
81
+
82
+ public:
83
+ __host__ __device__ Dev() = delete;
84
+
85
+ static Dev<T> * Malloc(size_t size)
86
+ {
87
+ Dev<T> * ptr;
88
+ if (auto err = cudaMalloc (&ptr, size*sizeof(T)))
89
+ throw ngstd::Exception("cudaMalloc error, ec="+ngcore::ToString(err));
90
+ return ptr;
91
+ }
92
+
93
+ static void Free(Dev<T> * data)
94
+ {
95
+ cudaFree (data);
96
+ }
97
+
98
+
99
+
100
+
101
+ T D2H() const
102
+ {
103
+ T res;
104
+ cudaMemcpy (&res, &data, sizeof(T), cudaMemcpyDeviceToHost);
105
+ return res;
106
+ }
107
+
108
+ void H2D (T val)
109
+
110
+ {
111
+ cudaMemcpy (this, &val, sizeof(T), cudaMemcpyHostToDevice);
112
+ }
113
+
114
+ void D2H (ngcore::FlatArray<T> hosta)
115
+ {
116
+ cudaMemcpy (hosta.Data(), &data, hosta.Size()*sizeof(T), cudaMemcpyDeviceToHost);
117
+ }
118
+
119
+ void H2D (ngcore::FlatArray<T> hosta)
120
+ {
121
+ cudaMemcpy (&data, hosta.Data(), hosta.Size()*sizeof(T), cudaMemcpyHostToDevice);
122
+ }
123
+
124
+ __host__ __device__ Dev<T> & operator= (T d2)
125
+ {
126
+ #ifdef __CUDA_ARCH__
127
+ data = d2;
128
+ #else
129
+ H2D(d2);
130
+ #endif
131
+ return *this;
132
+ }
133
+
134
+ __host__ __device__ operator T() const
135
+ {
136
+ #ifdef __CUDA_ARCH__
137
+ return data;
138
+ #else
139
+ return D2H();
140
+ #endif
141
+ }
142
+
143
+ __device__ const T& operator*() const { return data; }
144
+
145
+ template <typename T2>
146
+ __device__ auto & operator+= (T2 other) { data += other; return *this; }
147
+ template <typename T2>
148
+ __device__ auto & operator-= (T2 other) { data -= other; return *this; }
149
+ template <typename T2>
150
+ __device__ auto & operator*= (T2 other) { data *= other; return *this; }
151
+ };
152
+
153
+
154
+ template <typename T>
155
+ Dev<T> * Host2Device (const T& val)
156
+ {
157
+ auto ptr = Dev<T>::Malloc(1);
158
+ ptr->H2D(val);
159
+ return ptr;
160
+ }
161
+
162
+ template <typename T>
163
+ void Free(Dev<T> * dp)
164
+ {
165
+ Dev<T>::Free (dp);
166
+ }
167
+
168
+
169
+
170
+ }
171
+
172
+ #endif
173
+
@@ -101,8 +101,10 @@ namespace ngla
101
101
 
102
102
  bool disjoint_rows, disjoint_cols;
103
103
  size_t numblocks;
104
+ bool output_onto = false;
104
105
  public:
105
106
  DevConstantElementByElementMatrix (const T_ConstEBEMatrix & mat);
107
+ void Mult (const BaseVector & x, BaseVector & y) const override;
106
108
  void MultAdd (double s, const BaseVector & x, BaseVector & y) const override;
107
109
  void MultTransAdd (double s, const BaseVector & x, BaseVector & y) const override;
108
110
 
@@ -120,7 +122,9 @@ namespace ngla
120
122
  Array<Dev<int>> indices, indices_trans;
121
123
  public:
122
124
  DevBlockDiagonalMatrixSoA (const BlockDiagonalMatrixSoA & mat);
125
+ void Mult (const BaseVector & x, BaseVector & y) const override;
123
126
  void MultAdd (double s, const BaseVector & x, BaseVector & y) const override;
127
+ void MultTrans (const BaseVector & x, BaseVector & y) const override;
124
128
  void MultTransAdd (double s, const BaseVector & x, BaseVector & y) const override;
125
129
  int VHeight() const override { return dimy*blocks; }
126
130
  int VWidth() const override { return dimx*blocks; }
@@ -1,9 +1,22 @@
1
1
  #ifndef CUDA_NGBLA
2
2
  #define CUDA_NGBLA
3
3
 
4
+ #include <cuda_runtime.h>
5
+ #include <cublas_v2.h>
6
+
7
+ #include <vector.hpp>
8
+ #include <matrix.hpp>
9
+
4
10
  #include "cuda_ngstd.hpp"
5
11
  #include "linalg_kernels.hpp"
6
12
 
13
+
14
+ namespace ngla
15
+ {
16
+ cublasHandle_t Get_CuBlas_Handle ();
17
+ }
18
+
19
+
7
20
  namespace ngbla
8
21
  {
9
22
  using namespace ngs_cuda;
@@ -15,15 +28,15 @@ namespace ngbla
15
28
  template <typename T>
16
29
  class Vector<Dev<T>> : public FlatVector<Dev<T>>
17
30
  {
18
- using FlatVector<Dev<T>>::size;
19
- using FlatVector<Dev<T>>::data;
31
+ using FlatVector<Dev<T>>::Size;
32
+ using FlatVector<Dev<T>>::Data;
20
33
 
21
34
  public:
22
35
  Vector (Vector&) = delete;
23
36
  Vector (Vector&&v2)
24
37
  : FlatVector<Dev<T>>(v2.Size(), v2.Data())
25
38
  {
26
- v2.data = nullptr;
39
+ v2.layout = { nullptr, 0 };
27
40
  }
28
41
 
29
42
  Vector (size_t asize)
@@ -37,22 +50,31 @@ namespace ngbla
37
50
 
38
51
  ~Vector()
39
52
  {
40
- Dev<T>::Free(data);
53
+ Dev<T>::Free(Data());
41
54
  }
42
-
55
+
56
+
57
+ template<typename TB>
58
+ Vector & operator= (const Expr<TB> & v)
59
+ {
60
+ MatExpr<FlatVector<Dev<T>> >::operator= (v);
61
+ return *this;
62
+ }
63
+
64
+
43
65
  void D2H (FlatVector<T> vec) const
44
66
  {
45
- cudaMemcpy (vec.Data(), data, sizeof(T)*size, cudaMemcpyDeviceToHost);
67
+ cudaMemcpy (vec.Data(), Data(), sizeof(T)*Size(), cudaMemcpyDeviceToHost);
46
68
  }
47
69
 
48
70
  void H2D (FlatVector<T> vec)
49
71
  {
50
- cudaMemcpy (data, vec.Data(), sizeof(T)*size, cudaMemcpyHostToDevice);
72
+ cudaMemcpy (Data(), vec.Data(), sizeof(T)*Size(), cudaMemcpyHostToDevice);
51
73
  }
52
74
 
53
75
  Vector<T> D2H() const
54
76
  {
55
- Vector<T> vh(size);
77
+ Vector<T> vh(Size());
56
78
  D2H (vh);
57
79
  return vh;
58
80
  }
@@ -64,8 +86,74 @@ namespace ngbla
64
86
  cudaMemcpy (hvec.Data(), dvec.Data(), sizeof(double)*hvec.Size(), cudaMemcpyDeviceToHost);
65
87
  return hvec;
66
88
  }
89
+
90
+ #ifdef OLDOLD
91
+ #ifdef __CUDACC__
92
+ template <typename TS, typename TD>
93
+ __global__ void kernel_Assign (size_t n, TD pod_dst, TS pod_src)
94
+ {
95
+ auto dst = *pod_dst;
96
+ auto src = *pod_src;
97
+
98
+ int tid = blockIdx.x*blockDim.x+threadIdx.x;
99
+ for (int i = tid; i < n; i += blockDim.x*gridDim.x)
100
+ if (i < 5)
101
+ dst(i) = src.S();
102
+ else
103
+ dst(i) = src.A()(i);
104
+ }
105
+ #endif
106
+
107
+ template <typename T>
108
+ class AsPOD
109
+ {
110
+ std::array<char, sizeof(T)> data;
111
+ public:
112
+ AsPOD(const AsPOD&) = default;
113
+ INLINE AsPOD (const T & adata)
114
+ {
115
+ char * pdata = (char*)(void*)&adata;
116
+ for (int i = 0; i < sizeof(T); i++)
117
+ data[i] = pdata[i];
118
+ }
119
+
120
+ INLINE const T & operator* () const
121
+ {
122
+ T * val = (T*)(void*)&data[0];
123
+ return *val;
124
+ }
125
+ INLINE int operator[] (int i) const { return data[i]; }
126
+ };
127
+ #endif
128
+
67
129
 
68
130
 
131
+ template <typename TOP, typename T, typename TS, typename TDIST, typename TB>
132
+ class assign_trait<TOP, VectorView<T,TS,TDIST>, TB,
133
+ enable_if_t < std::is_same<std::invoke_result_t<VectorView<T,TS,TDIST>,size_t>, Dev<double>&>::value, int>>
134
+ {
135
+ public:
136
+ static INLINE VectorView<T,TS,TDIST> & Assign (MatExpr<VectorView<T,TS,TDIST>> & self, const Expr<TB> & v)
137
+ {
138
+
139
+ #ifdef __CUDACC__
140
+
141
+ ngs_cuda::DeviceParallelFor
142
+ (self.Height(),
143
+ [devself=self.Spec(), devv=v.Spec()] DEVICE_LAMBDA (auto tid) -> void
144
+ {
145
+ // devself(tid) = devv(tid);
146
+ TOP()(devself(tid),devv(tid));
147
+ });
148
+
149
+ #endif
150
+
151
+ return self.Spec();
152
+ }
153
+ };
154
+
155
+
156
+
69
157
 
70
158
 
71
159
  template <typename T>
@@ -137,6 +225,9 @@ namespace ngbla
137
225
  SliceMatrix<Dev<double>, ORDERING::ColMajor> c,
138
226
  double alpha, double beta)
139
227
  {
228
+ static Timer t("cublasDgemm");
229
+ CudaRegionTimer rt(t);
230
+
140
231
  cublasStatus_t stat =
141
232
  cublasDgemm(ngla::Get_CuBlas_Handle(),
142
233
  ORDA==ORDERING::RowMajor ? CUBLAS_OP_T : CUBLAS_OP_N,
@@ -4,94 +4,18 @@
4
4
  #include <cuda_runtime.h>
5
5
  #include <ngstd.hpp>
6
6
 
7
+ #include "cuda_core.hpp"
7
8
  #include "cuda_profiler.hpp"
8
9
 
9
10
  namespace ngs_cuda
10
11
  {
11
12
  using namespace ngstd;
12
13
 
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
14
 
37
15
 
38
16
  extern int gpu_clock;
39
17
  void InitCUDA (int verbose = 2);
40
18
 
41
-
42
- template <typename T>
43
- class Dev
44
- {
45
- public:
46
- T data;
47
- static Dev<T> * Malloc(size_t size)
48
- {
49
- Dev<T> * ptr;
50
- if (auto err = cudaMalloc (&ptr, size*sizeof(T)))
51
- throw Exception("cudaMalloc error, ec="+ToString(err));
52
- return ptr;
53
- }
54
-
55
- static void Free(Dev<T> * data)
56
- {
57
- cudaFree (data);
58
- }
59
-
60
- T D2H() const
61
- {
62
- T res;
63
- cudaMemcpy (&res, &data, sizeof(T), cudaMemcpyDeviceToHost);
64
- return res;
65
- }
66
-
67
- void H2D (T val)
68
- {
69
- cudaMemcpy (&data, &val, sizeof(T), cudaMemcpyHostToDevice);
70
- }
71
-
72
-
73
- void D2H (FlatArray<T> hosta)
74
- {
75
- cudaMemcpy (hosta.Data(), &data, hosta.Size()*sizeof(T), cudaMemcpyDeviceToHost);
76
- }
77
-
78
- void H2D (FlatArray<T> hosta)
79
- {
80
- cudaMemcpy (&data, hosta.Data(), hosta.Size()*sizeof(T), cudaMemcpyHostToDevice);
81
- }
82
-
83
-
84
- __device__ Dev<T> & operator= (T d2) { data = d2; return *this; }
85
- __device__ operator T() const { return data; }
86
-
87
- template <typename T2>
88
- __device__ auto & operator+= (T2 other) { data += other; return *this; }
89
- template <typename T2>
90
- __device__ auto & operator-= (T2 other) { data -= other; return *this; }
91
- template <typename T2>
92
- __device__ auto & operator*= (T2 other) { data *= other; return *this; }
93
- };
94
-
95
19
  }
96
20
 
97
21
  namespace ngcore {
@@ -105,43 +29,6 @@ namespace ngcore {
105
29
  namespace ngs_cuda
106
30
  {
107
31
 
108
- /*
109
- template <typename T>
110
- class DevVar
111
- {
112
- T * ptr;
113
- public:
114
- DevVar()
115
- {
116
- cudaMalloc (&ptr, sizeof(T));
117
- }
118
-
119
- DevVar(T val)
120
- {
121
- cudaMalloc (&ptr, sizeof(T));
122
- cudaMemcpy (ptr, &val, sizeof(T), cudaMemcpyHostToDevice);
123
- }
124
-
125
- operator T () const
126
- {
127
- T tmp;
128
- cudaMemcpy (&tmp, ptr, sizeof(T), cudaMemcpyDeviceToHost);
129
- return tmp;
130
- }
131
-
132
- T * DevPtr() const { return ptr; }
133
- T & DevRef() const { return *ptr; }
134
-
135
- };
136
-
137
- template <typename T>
138
- inline ostream & operator<< (ostream & ost, DevVar<T> & var)
139
- {
140
- ost << T(var);
141
- return ost;
142
- }
143
- */
144
-
145
32
  // TODO: Resize + error checking
146
33
  class DevStackMemory
147
34
  {
@@ -131,10 +131,13 @@ namespace ngla
131
131
  {
132
132
  size_t h, w;
133
133
  Matrix<SCAL> matrix;
134
- Table<int> col_dnums;
135
- Table<int> row_dnums;
134
+ Table<int> col_dnums; // output
135
+ Table<int> row_dnums; // input
136
136
  bool disjoint_rows, disjoint_cols;
137
137
  Table<int> row_coloring, col_coloring;
138
+ bool output_onto = false;
139
+ bool output_matrix = false;
140
+ bool output_matrix_trans = false;
138
141
  public:
139
142
  ConstantElementByElementMatrix (size_t ah, size_t aw, Matrix<SCAL> amatrix,
140
143
  Table<int> acol_dnums, Table<int> arow_dnums);