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,240 @@
1
+ #ifndef NGS_CUDA_PROFILER_HPP
2
+ #define NGS_CUDA_PROFILER_HPP
3
+
4
+ #include <algorithm>
5
+ #include <core/profiler.hpp>
6
+ #include "cuda_ngstd.hpp"
7
+
8
+ namespace ngs_cuda
9
+ {
10
+ using ngcore::Array;
11
+ extern int gpu_clock;
12
+
13
+ #ifdef __CUDACC__
14
+ // #define NGS_CUDA_DEVICE_TIMERS
15
+ #ifdef NGS_CUDA_DEVICE_TIMERS
16
+ constexpr int N_MAX_DEVICE_TIMERS = 16;
17
+ struct DevTraceData {
18
+ unsigned long long start[N_MAX_DEVICE_TIMERS];
19
+ unsigned long long stop[N_MAX_DEVICE_TIMERS];
20
+ unsigned short start_smid[N_MAX_DEVICE_TIMERS];
21
+ unsigned short stop_smid[N_MAX_DEVICE_TIMERS];
22
+ union UserData {
23
+ double d;
24
+ float f[2];
25
+ unsigned u[2];
26
+ } data;
27
+ unsigned blockNr;
28
+ };
29
+
30
+ struct DevTimerData {
31
+ unsigned long long time[N_MAX_DEVICE_TIMERS];
32
+ };
33
+
34
+ struct DevTraceBlockData {
35
+ unsigned long long start;
36
+ unsigned long long stop;
37
+ unsigned start_smid;
38
+ unsigned stop_smid;
39
+ };
40
+
41
+ constexpr int N_MAX_TRACER_OBJECTS = 1024*1024;
42
+ constexpr int N_MAX_BLOCKS = 65*1024;
43
+ extern __device__ DevTimerData d_timer_data[];
44
+ extern __device__ DevTraceData d_trace_data[];
45
+ extern __device__ DevTraceBlockData d_block_data[];
46
+ extern Array<DevTimerData> timer_data;
47
+ extern Array<DevTraceData> trace_data;
48
+ extern Array<DevTraceBlockData> block_data;
49
+
50
+
51
+ __device__ inline unsigned GetSMID() {
52
+ unsigned ret;
53
+ asm("mov.u32 %0, %smid;" : "=r"(ret) );
54
+ return ret;
55
+ }
56
+
57
+ struct DeviceBlockRegionTracer {
58
+ int blockNr, threadNr;
59
+ __device__ DeviceBlockRegionTracer(int nblocks, int blockNr_, int threadNr_)
60
+ : blockNr(blockNr_), threadNr(threadNr_)
61
+ {
62
+ if(threadNr == 0)
63
+ {
64
+ d_block_data[blockNr].start = clock64();
65
+ d_block_data[blockNr].start_smid = GetSMID();
66
+ if(blockNr == 0)
67
+ {
68
+ d_trace_data[N_MAX_TRACER_OBJECTS].blockNr = nblocks;
69
+ }
70
+ }
71
+ __syncwarp();
72
+ }
73
+
74
+ __device__ ~DeviceBlockRegionTracer()
75
+ {
76
+ d_block_data[blockNr].stop = clock64();
77
+ d_block_data[blockNr].stop_smid = GetSMID();
78
+ }
79
+ };
80
+
81
+ struct DeviceRegionTimer
82
+ {
83
+ int timer_nr, id;
84
+
85
+ __device__ DeviceRegionTimer( int timer_nr_, int id_=-1)
86
+ : timer_nr(timer_nr_), id(id_ == -1 ? blockIdx.x : id_)
87
+ {
88
+ if(threadIdx.x ==0)
89
+ atomicAdd(&d_timer_data[id].time[timer_nr], -clock64());
90
+ }
91
+
92
+ __device__ ~DeviceRegionTimer()
93
+ {
94
+ if(threadIdx.x ==0)
95
+ atomicAdd(&d_timer_data[id].time[timer_nr], clock64());
96
+ }
97
+
98
+ };
99
+
100
+ struct DeviceRegionTracer
101
+ {
102
+ int timer_nr, id;
103
+ bool active;
104
+ DevTraceData::UserData & data;
105
+
106
+ __device__ DeviceRegionTracer( const DeviceBlockRegionTracer & tr, int timer_nr_, int id_)
107
+ : active(tr.threadNr == 0), timer_nr(timer_nr_), id(id_), data(d_trace_data[id_].data)
108
+ {
109
+ if(active)
110
+ {
111
+ d_trace_data[id].start[timer_nr] = clock64();
112
+ d_trace_data[id].start_smid[timer_nr] = GetSMID();
113
+ d_trace_data[id].blockNr = tr.blockNr;
114
+ }
115
+ }
116
+
117
+ __device__ ~DeviceRegionTracer()
118
+ {
119
+ if(active)
120
+ {
121
+ d_trace_data[id].stop[timer_nr] = clock64();
122
+ d_trace_data[id].stop_smid[timer_nr] = GetSMID();
123
+ }
124
+ }
125
+
126
+ };
127
+ #else
128
+ struct DeviceBlockRegionTracer
129
+ {
130
+ __device__ DeviceBlockRegionTracer( int , int, int ) {}
131
+ };
132
+ struct DeviceRegionTimer
133
+ {
134
+ __device__ DeviceRegionTimer( int , int ) {}
135
+ };
136
+ struct DeviceRegionTracer
137
+ {
138
+ // __device__ DeviceRegionTracer( bool active_, int timer_nr_, int id_) {}
139
+ __device__ DeviceRegionTracer( const DeviceBlockRegionTracer & tr, int timer_nr_, int id_) { }
140
+ };
141
+ #endif // NGS_CUDA_DEVICE_TIMERS
142
+
143
+ #endif // __CUDACC__
144
+
145
+
146
+ namespace detail {
147
+ struct GPUTimerUserData
148
+ {
149
+ int timernr;
150
+ bool is_start;
151
+ };
152
+
153
+ // encode UserData directly in void* pointer (8 bytes available)
154
+ inline void * EncodeCallbackData( bool start, int nr )
155
+ {
156
+ static_assert(sizeof(GPUTimerUserData) <= sizeof(void*), "cannot encode UserData in void*");
157
+ GPUTimerUserData data{nr, start};
158
+ return *reinterpret_cast<void**>(&data);
159
+ }
160
+
161
+ inline void CUDART_CB Callback(cudaStream_t stream, cudaError_t status, void *userData)
162
+ {
163
+ const GPUTimerUserData & ud = *reinterpret_cast<GPUTimerUserData*>(&userData);
164
+ if(!ngcore::trace) return;
165
+ if(ud.is_start)
166
+ ngcore::trace->StartGPU(ud.timernr);
167
+ else
168
+ ngcore::trace->StopGPU(ud.timernr);
169
+ }
170
+
171
+ inline void CUDART_CB CallbackKernelStart(cudaStream_t stream, cudaError_t status, void *userData)
172
+ {
173
+ ngcore::TTimePoint & t = *reinterpret_cast<ngcore::TTimePoint*>(userData);
174
+ t = ngcore::GetTimeCounter();
175
+ }
176
+
177
+ inline void StartGPUTimer(int nr) {
178
+ cudaStreamAddCallback(0, Callback, EncodeCallbackData(true, nr), 0);
179
+ }
180
+
181
+ inline void StopGPUTimer(int nr) {
182
+ cudaStreamAddCallback(0, Callback, EncodeCallbackData(false, nr), 0);
183
+ }
184
+ } // namspace detail
185
+
186
+ class CudaRegionTimer
187
+ {
188
+ const ngcore::Timer<> & timer;
189
+ bool is_already_stopped = false;
190
+ ngcore::TTimePoint t_kernel_start;
191
+
192
+ static bool is_cuda_timer_enabled;
193
+
194
+ public:
195
+ CudaRegionTimer (ngcore::Timer<> & atimer) : timer(atimer) {
196
+ timer.Start();
197
+ if(is_cuda_timer_enabled)
198
+ detail::StartGPUTimer(timer);
199
+ #ifdef NGS_CUDA_DEVICE_TIMERS
200
+ cudaStreamAddCallback(0, detail::CallbackKernelStart, &t_kernel_start, 0);
201
+ #endif // NGS_CUDA_DEVICE_TIMERS
202
+ }
203
+ ~CudaRegionTimer ()
204
+ {
205
+ if(!is_already_stopped)
206
+ Stop();
207
+ }
208
+ CudaRegionTimer() = delete;
209
+ CudaRegionTimer(const CudaRegionTimer &) = delete;
210
+ CudaRegionTimer(CudaRegionTimer &&) = delete;
211
+ void operator=(const CudaRegionTimer &) = delete;
212
+ void operator=(CudaRegionTimer &&) = delete;
213
+
214
+ void Stop() {
215
+ if(is_cuda_timer_enabled)
216
+ detail::StopGPUTimer(timer);
217
+ #ifdef NGS_CUDA_DEVICE_TIMERS
218
+ ProcessTracingData();
219
+ #endif // NGS_CUDA_DEVICE_TIMERS
220
+ timer.Stop();
221
+ is_already_stopped = true;
222
+ }
223
+
224
+ void ProcessTracingData();
225
+
226
+ ngcore::TTimePoint TimeD2H( long long ticks )
227
+ {
228
+ double t_seconds = 1.0*ticks/gpu_clock + 1e-6; // add 1us for kernel startup
229
+ return t_kernel_start + t_seconds / ngcore::seconds_per_tick;
230
+ }
231
+
232
+ static void SetCudaTimer(bool enabled){
233
+ is_cuda_timer_enabled = enabled;
234
+ }
235
+ };
236
+
237
+ void TimeProfiler();
238
+ }
239
+
240
+ #endif // NGS_CUDA_PROFILER_HPP
@@ -0,0 +1,160 @@
1
+ #ifndef FILE_NGS_DIAGONALMATRIX
2
+ #define FILE_NGS_DIAGONALMATRIX
3
+
4
+
5
+
6
+ #include "basematrix.hpp"
7
+ #include "vvector.hpp"
8
+
9
+
10
+ namespace ngla
11
+ {
12
+
13
+ class NGS_DLL_HEADER Projector : public BaseMatrix
14
+ {
15
+ shared_ptr<BitArray> bits;
16
+ bool keep_values;
17
+ public:
18
+ // projector on true / false bits
19
+ Projector (shared_ptr<BitArray> abits, bool akeep_values = true)
20
+ : bits(abits), keep_values(akeep_values) { ; }
21
+
22
+ virtual bool IsComplex() const override { return false; }
23
+
24
+ virtual int VHeight() const override { return bits->Size(); }
25
+ virtual int VWidth() const override { return bits->Size(); }
26
+
27
+ virtual void Mult (const BaseVector & x, BaseVector & y) const override;
28
+ virtual void MultTrans (const BaseVector & x, BaseVector & y) const override;
29
+ virtual void MultAdd (double s, const BaseVector & x, BaseVector & y) const override;
30
+ virtual void MultTransAdd (double s, const BaseVector & x, BaseVector & y) const override;
31
+ virtual void Project (BaseVector & x) const;
32
+ virtual void SetValues (BaseVector & x, double val) const;
33
+
34
+ bool KeepValues() const { return keep_values; }
35
+ shared_ptr<BitArray> Mask() const { return bits; }
36
+
37
+ virtual shared_ptr<BaseSparseMatrix> CreateSparseMatrix() const override;
38
+
39
+ AutoVector CreateRowVector() const override
40
+ { throw Exception("CreateRowVector not implemented for Projector!"); }
41
+ AutoVector CreateColVector() const override
42
+ { throw Exception("CreateColVector not implemented for Projector!"); }
43
+
44
+ AutoVector Evaluate(BaseVector & v) const override
45
+ {
46
+ auto res = v.CreateVector();
47
+ Mult (v, res);
48
+ return res;
49
+ }
50
+ AutoVector EvaluateTrans(BaseVector & v) const override
51
+ {
52
+ return this->Evaluate(v);
53
+ }
54
+
55
+ };
56
+
57
+
58
+ template <typename TM=double>
59
+ class NGS_DLL_HEADER DiagonalMatrix : public BaseMatrix
60
+ {
61
+ shared_ptr<VVector<TM>> diag;
62
+ public:
63
+ // typedef typename mat_traits<TM>::TV_ROW TV_ROW;
64
+ // typedef typename mat_traits<TM>::TV_COL TV_COL;
65
+ typedef typename mat_traits<TM>::TSCAL TSCAL;
66
+
67
+ DiagonalMatrix(size_t h)
68
+ : diag(make_shared<VVector<TM>>(h)) { }
69
+ DiagonalMatrix(const VVector<TM> & diag_);
70
+ DiagonalMatrix(shared_ptr<VVector<TM>> diag_);
71
+ virtual ~DiagonalMatrix();
72
+
73
+ bool IsComplex() const override { return false; }
74
+ TM & operator() (size_t i) { return (*diag)(i); }
75
+ const TM & operator() (size_t i) const { return (*diag)(i); }
76
+ int VHeight() const override { return diag->Size(); }
77
+ int VWidth() const override { return diag->Size(); }
78
+
79
+ BaseVector & AsVector() override { return *diag; }
80
+ const BaseVector & AsVector() const override { return *diag; }
81
+ ostream & Print (ostream & ost) const override;
82
+
83
+ virtual shared_ptr<BaseSparseMatrix> CreateSparseMatrix() const override;
84
+
85
+ AutoVector CreateRowVector () const override;
86
+ AutoVector CreateColVector () const override;
87
+
88
+ void MultAdd (double s, const BaseVector & x, BaseVector & y) const override;
89
+ void MultTransAdd (double s, const BaseVector & x, BaseVector & y) const override;
90
+
91
+ shared_ptr<BaseMatrix> InverseMatrix (shared_ptr<BitArray> subset = nullptr) const override;
92
+ };
93
+
94
+
95
+ template <typename TM=double>
96
+ class BlockDiagonalMatrix : public BaseMatrix
97
+ {
98
+ Tensor<3,TM> blockdiag;
99
+ int blocks, dimy, dimx;
100
+ public:
101
+ // typedef double TSCAL;
102
+
103
+ BlockDiagonalMatrix(Tensor<3,TM> _blockdiag);
104
+ bool IsComplex() const override { return ngbla::IsComplex<TM>(); }
105
+
106
+ int VHeight() const override { return blocks*dimy; }
107
+ int VWidth() const override { return blocks*dimx; }
108
+
109
+ ostream & Print (ostream & ost) const override;
110
+
111
+ AutoVector CreateRowVector () const override;
112
+ AutoVector CreateColVector () const override;
113
+
114
+ void Mult (const BaseVector & x, BaseVector & y) const override;
115
+ void MultAdd (double s, const BaseVector & x, BaseVector & y) const override;
116
+ void MultTransAdd (double s, const BaseVector & x, BaseVector & y) const override;
117
+
118
+ shared_ptr<BaseMatrix> InverseMatrix (shared_ptr<BitArray> subset = nullptr) const override;
119
+ };
120
+
121
+ // blocks is inner-most dimension of tensor and vectors
122
+ class BlockDiagonalMatrixSoA : public BaseMatrix
123
+ {
124
+ Tensor<3> blockdiag;
125
+ int blocks, dimy, dimx;
126
+ Matrix<bool> nonzero;
127
+ Table<int> sparse, sparseT; // sparse non-zero pattern
128
+ public:
129
+ typedef double TSCAL;
130
+
131
+ BlockDiagonalMatrixSoA(Tensor<3> _blockdiag);
132
+ bool IsComplex() const override { return false; }
133
+
134
+ int VHeight() const override { return blocks*dimy; }
135
+ int VWidth() const override { return blocks*dimx; }
136
+
137
+ ostream & Print (ostream & ost) const override;
138
+ virtual BaseMatrix::OperatorInfo GetOperatorInfo () const override;
139
+
140
+ AutoVector CreateRowVector () const override;
141
+ AutoVector CreateColVector () const override;
142
+
143
+ void Mult (const BaseVector & x, BaseVector & y) const override;
144
+ void MultAdd (double s, const BaseVector & x, BaseVector & y) const override;
145
+ void MultTrans (const BaseVector & x, BaseVector & y) const override;
146
+ void MultTransAdd (double s, const BaseVector & x, BaseVector & y) const override;
147
+ // shared_ptr<BaseMatrix> InverseMatrix (shared_ptr<BitArray> subset = nullptr) const override;
148
+
149
+ FlatTensor<3> GetBlockDiag () const { return blockdiag; }
150
+ FlatMatrix<bool> GetNonZeroPattern() const { return nonzero; }
151
+ FlatTable<int> GetSparseMatrix() const { return sparse; }
152
+ FlatTable<int> GetSparseMatrixTrans() const { return sparseT; }
153
+ };
154
+
155
+ }
156
+
157
+
158
+
159
+ #endif
160
+
@@ -0,0 +1,276 @@
1
+ #ifndef FILE_DIFFERENTIALOPERATOR
2
+ #define FILE_DIFFERENTIALOPERATOR
3
+
4
+ /*********************************************************************/
5
+ /* File: differentialoperator.hpp */
6
+ /* Author: Joachim Schoeberl */
7
+ /* Date: 24. Nov. 2009 */
8
+ /*********************************************************************/
9
+
10
+ #include "finiteelement.hpp"
11
+ #include "intrule.hpp"
12
+
13
+
14
+ namespace ngfem
15
+ {
16
+
17
+ /**
18
+ Differential Operator.
19
+ Base-class for run-time polymorphismus.
20
+ Provides application and transpose-application
21
+ */
22
+ class DifferentialOperator
23
+ {
24
+ private:
25
+ int dim;
26
+ int blockdim;
27
+ Array<int> dimensions;
28
+
29
+ int vsdim; // symmetric 3x3 matrix has dim=9, but vector-space dim=6
30
+ optional<Matrix<>> vsembedding;
31
+ protected:
32
+ VorB vb;
33
+ int difforder;
34
+ public:
35
+ /*
36
+ [[deprecated("Use DifferentialOperator(int,int,VorB,int) instead")]]
37
+ NGS_DLL_HEADER DifferentialOperator(int adim, int ablockdim, bool boundary, int adifforder)
38
+ : dim(adim), blockdim(ablockdim), vb(boundary ? BND : VOL), difforder(adifforder)
39
+ {
40
+ if (blockdim == 1)
41
+ dimensions = Array<int> ( { dim } );
42
+ else
43
+ dimensions = Array<int> ( { dim/blockdim, blockdim });
44
+ }
45
+ */
46
+ NGS_DLL_HEADER DifferentialOperator(int adim, int ablockdim, VorB avb, int adifforder)
47
+ : dim(adim), blockdim(ablockdim), vb(avb), difforder(adifforder)
48
+ {
49
+ if (blockdim == 1)
50
+ dimensions = Array<int> ( { dim } );
51
+ else if (dim == 1)
52
+ dimensions = Array<int> ( { blockdim } );
53
+ else
54
+ dimensions = Array<int> ( { dim/blockdim, blockdim });
55
+
56
+ vsdim = dim;
57
+ }
58
+ /// destructor
59
+ NGS_DLL_HEADER virtual ~DifferentialOperator () = default;
60
+
61
+ virtual void DoArchive(Archive & ar) { ; }
62
+
63
+ void SetDimensions (const Array<int> & adims) { dimensions = adims; }
64
+ void SetVectorSpaceEmbedding (Matrix <> emb)
65
+ { vsembedding = emb; vsdim = emb.Width(); }
66
+ optional<FlatMatrix<>> GetVSEmbedding() const { return vsembedding; }
67
+
68
+ ///
69
+ NGS_DLL_HEADER virtual string Name() const; // { return typeid(*this).name(); }
70
+ /// dimension of range
71
+ int Dim() const { return dim; }
72
+ int VSDim() const { return vsdim; }
73
+ const Array<int> & Dimensions() const { return dimensions; }
74
+ /// number of copies of finite element by BlockDifferentialOperator
75
+ int BlockDim() const { return blockdim; }
76
+ /// does it live on the boundary ?
77
+ bool Boundary() const { return vb == BND; }
78
+ VorB VB() const { return vb; }
79
+
80
+ virtual bool SupportsVB (VorB checkvb) const { return checkvb == vb; }
81
+ virtual shared_ptr<DifferentialOperator> GetTrace() const
82
+ {
83
+ return nullptr;
84
+ // throw Exception("GetTrace not overloaded for DifferentialOperator"+string(typeid(*this).name()));
85
+ }
86
+ /// total polynomial degree is reduced by this order (i.e. minimal difforder)
87
+ int DiffOrder() const { return difforder; }
88
+
89
+ virtual IntRange UsedDofs(const FiniteElement & fel) const { return IntRange(0, fel.GetNDof()); }
90
+
91
+ virtual bool operator== (const DifferentialOperator & diffop2) const { return false; }
92
+
93
+ /// calculates the matrix
94
+ NGS_DLL_HEADER virtual void
95
+ CalcMatrix (const FiniteElement & fel,
96
+ const BaseMappedIntegrationPoint & mip,
97
+ BareSliceMatrix<double,ColMajor> mat,
98
+ LocalHeap & lh) const;
99
+
100
+ NGS_DLL_HEADER virtual void
101
+ CalcMatrix (const FiniteElement & bfel,
102
+ const BaseMappedIntegrationPoint & bmip,
103
+ BareSliceMatrix<Complex,ColMajor> mat,
104
+ LocalHeap & lh) const;
105
+
106
+ NGS_DLL_HEADER virtual void
107
+ CalcMatrix (const FiniteElement & fel,
108
+ const BaseMappedIntegrationRule & mir,
109
+ BareSliceMatrix<double,ColMajor> mat,
110
+ LocalHeap & lh) const;
111
+
112
+ NGS_DLL_HEADER virtual void
113
+ CalcMatrix (const FiniteElement & fel,
114
+ const BaseMappedIntegrationRule & mir,
115
+ BareSliceMatrix<Complex,ColMajor> mat,
116
+ LocalHeap & lh) const;
117
+
118
+ NGS_DLL_HEADER virtual void
119
+ CalcMatrix (const FiniteElement & fel,
120
+ const SIMD_BaseMappedIntegrationRule & mir,
121
+ BareSliceMatrix<SIMD<double>> mat) const;
122
+
123
+ NGS_DLL_HEADER virtual void
124
+ CalcMatrix (const FiniteElement & fel,
125
+ const SIMD_BaseMappedIntegrationRule & mir,
126
+ BareSliceMatrix<SIMD<Complex>> mat) const;
127
+
128
+ /// Bmat = vs-embedding * BmatVS (if vs-embedding is set)
129
+ NGS_DLL_HEADER virtual void
130
+ CalcMatrixVS (const FiniteElement & fel,
131
+ const BaseMappedIntegrationPoint & mip,
132
+ SliceMatrix<double,ColMajor> mat,
133
+ LocalHeap & lh) const;
134
+
135
+ NGS_DLL_HEADER virtual void
136
+ CalcLinearizedMatrix (const FiniteElement & fel,
137
+ const BaseMappedIntegrationRule & mir,
138
+ BareSliceVector<double> x,
139
+ SliceMatrix<double,ColMajor> mat,
140
+ LocalHeap & lh) const;
141
+
142
+ NGS_DLL_HEADER virtual bool IsNonlinear() const { return false; }
143
+
144
+ // second derivative of \sum_ipt wprime * B(u)
145
+ NGS_DLL_HEADER virtual void
146
+ CalcHessianAdd (const FiniteElement & fel,
147
+ const BaseMappedIntegrationRule & mir,
148
+ SliceMatrix<> wprime,
149
+ BareSliceVector<> elvecu,
150
+ SliceMatrix<> hessian,
151
+ LocalHeap & lh) const { ; }
152
+
153
+ NGS_DLL_HEADER virtual void
154
+ Apply (const FiniteElement & fel,
155
+ const BaseMappedIntegrationPoint & mip,
156
+ BareSliceVector<double> x,
157
+ FlatVector<double> flux,
158
+ LocalHeap & lh) const;
159
+
160
+ NGS_DLL_HEADER virtual void
161
+ Apply (const FiniteElement & fel,
162
+ const BaseMappedIntegrationPoint & mip,
163
+ BareSliceVector<Complex> x,
164
+ FlatVector<Complex> flux,
165
+ LocalHeap & lh) const;
166
+
167
+ NGS_DLL_HEADER virtual void
168
+ Apply (const FiniteElement & fel,
169
+ const BaseMappedIntegrationRule & mir,
170
+ BareSliceVector<double> x,
171
+ BareSliceMatrix<double> flux,
172
+ LocalHeap & lh) const;
173
+
174
+ NGS_DLL_HEADER virtual void
175
+ Apply (const FiniteElement & fel,
176
+ const BaseMappedIntegrationRule & mir,
177
+ BareSliceVector<Complex> x,
178
+ BareSliceMatrix<Complex> flux,
179
+ LocalHeap & lh) const;
180
+
181
+ NGS_DLL_HEADER virtual void
182
+ Apply (const FiniteElement & bfel,
183
+ const SIMD_BaseMappedIntegrationRule & bmir,
184
+ BareSliceVector<double> x,
185
+ BareSliceMatrix<SIMD<double>> flux) const;
186
+
187
+ NGS_DLL_HEADER virtual void
188
+ Apply (const FiniteElement & bfel,
189
+ const SIMD_BaseMappedIntegrationRule & bmir,
190
+ BareSliceVector<Complex> x,
191
+ BareSliceMatrix<SIMD<Complex>> flux) const;
192
+
193
+
194
+ NGS_DLL_HEADER virtual void
195
+ ApplyTrans (const FiniteElement & fel,
196
+ const BaseMappedIntegrationPoint & mip,
197
+ FlatVector<double> flux,
198
+ BareSliceVector<double> x,
199
+ LocalHeap & lh) const;
200
+
201
+ NGS_DLL_HEADER virtual void
202
+ ApplyTrans (const FiniteElement & fel,
203
+ const BaseMappedIntegrationPoint & mip,
204
+ FlatVector<Complex> flux,
205
+ BareSliceVector<Complex> x,
206
+ LocalHeap & lh) const;
207
+
208
+ NGS_DLL_HEADER virtual void
209
+ ApplyTrans (const FiniteElement & fel,
210
+ const BaseMappedIntegrationRule & mir,
211
+ FlatMatrix<double> flux,
212
+ BareSliceVector<double> x,
213
+ LocalHeap & lh) const;
214
+
215
+ NGS_DLL_HEADER virtual void
216
+ ApplyTrans (const FiniteElement & fel,
217
+ const BaseMappedIntegrationRule & mir,
218
+ FlatMatrix<Complex> flux,
219
+ BareSliceVector<Complex> x,
220
+ LocalHeap & lh) const;
221
+
222
+ NGS_DLL_HEADER virtual void
223
+ AddTrans (const FiniteElement & bfel,
224
+ const SIMD_BaseMappedIntegrationRule & bmir,
225
+ BareSliceMatrix<SIMD<double>> flux,
226
+ BareSliceVector<double> x) const;
227
+
228
+ NGS_DLL_HEADER virtual void
229
+ AddTrans (const FiniteElement & bfel,
230
+ const SIMD_BaseMappedIntegrationRule & bmir,
231
+ BareSliceMatrix<SIMD<Complex>> flux,
232
+ BareSliceVector<Complex> x) const;
233
+
234
+
235
+ NGS_DLL_HEADER virtual void
236
+ ApplyLinearizedTrans (const FiniteElement & fel,
237
+ const BaseMappedIntegrationRule & mir,
238
+ SliceVector<double> elveclin,
239
+ FlatMatrix<double> flux,
240
+ BareSliceVector<double> x,
241
+ LocalHeap & lh) const
242
+ {
243
+ ApplyTrans (fel, mir, flux, x, lh);
244
+ }
245
+
246
+
247
+ /// calculates matrix on reference element
248
+
249
+ // dimension on refelement (e.g. 2 for surface gradient)
250
+ NGS_DLL_HEADER virtual int DimRef() const;
251
+
252
+ NGS_DLL_HEADER virtual void
253
+ CalcMatrix (const FiniteElement & fel,
254
+ const IntegrationPoint & ip,
255
+ BareSliceMatrix<double,ColMajor> mat,
256
+ LocalHeap & lh) const;
257
+
258
+ NGS_DLL_HEADER virtual void
259
+ CalcTransformationMatrix (const BaseMappedIntegrationPoint & mip,
260
+ SliceMatrix<double> trans,
261
+ LocalHeap & lh) const;
262
+
263
+ NGS_DLL_HEADER virtual shared_ptr<CoefficientFunction> DiffShape (shared_ptr<CoefficientFunction> proxy,
264
+ shared_ptr<CoefficientFunction> dir,
265
+ bool Eulerian = false) const;
266
+
267
+ NGS_DLL_HEADER virtual list<tuple<string,double>> Timing (const FiniteElement & fel, const BaseMappedIntegrationRule & mir) const;
268
+ };
269
+
270
+
271
+
272
+ }
273
+
274
+
275
+
276
+ #endif