ngsolve 6.2.2506.post75.dev0__cp314-cp314-manylinux_2_28_x86_64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


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

Files changed (303) hide show
  1. ngsolve-6.2.2506.post75.dev0.data/data/bin/ngs_nvcc +14 -0
  2. ngsolve-6.2.2506.post75.dev0.data/data/bin/ngs_nvlink +14 -0
  3. ngsolve-6.2.2506.post75.dev0.data/data/bin/ngscxx +15 -0
  4. ngsolve-6.2.2506.post75.dev0.data/data/bin/ngsld +11 -0
  5. ngsolve-6.2.2506.post75.dev0.data/data/bin/ngsolve.tcl +648 -0
  6. ngsolve-6.2.2506.post75.dev0.data/data/bin/ngspy +2 -0
  7. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/analytic_integrals.hpp +10 -0
  8. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/arnoldi.hpp +55 -0
  9. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/bandmatrix.hpp +334 -0
  10. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/basematrix.hpp +957 -0
  11. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/basevector.hpp +1268 -0
  12. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/bdbequations.hpp +2805 -0
  13. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/bdbintegrator.hpp +1660 -0
  14. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/bem_diffops.hpp +475 -0
  15. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/bessel.hpp +1064 -0
  16. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/bilinearform.hpp +963 -0
  17. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/bla.hpp +29 -0
  18. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/blockalloc.hpp +95 -0
  19. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/blockjacobi.hpp +328 -0
  20. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/bspline.hpp +116 -0
  21. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/calcinverse.hpp +141 -0
  22. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/cg.hpp +368 -0
  23. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/chebyshev.hpp +44 -0
  24. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/cholesky.hpp +720 -0
  25. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/clapack.h +7254 -0
  26. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/code_generation.hpp +296 -0
  27. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/coefficient.hpp +2033 -0
  28. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/coefficient_impl.hpp +19 -0
  29. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/coefficient_stdmath.hpp +167 -0
  30. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/commutingAMG.hpp +106 -0
  31. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/comp.hpp +79 -0
  32. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/compatibility.hpp +41 -0
  33. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/complex_wrapper.hpp +73 -0
  34. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/compressedfespace.hpp +110 -0
  35. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/contact.hpp +235 -0
  36. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/cuda_linalg.hpp +175 -0
  37. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/cuda_ngbla.hpp +226 -0
  38. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/cuda_ngstd.hpp +527 -0
  39. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/cuda_profiler.hpp +240 -0
  40. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/diagonalmatrix.hpp +154 -0
  41. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/differentialoperator.hpp +276 -0
  42. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/diffop.hpp +1286 -0
  43. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/diffop_impl.hpp +328 -0
  44. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/diffopwithfactor.hpp +123 -0
  45. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/discontinuous.hpp +84 -0
  46. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/dump.hpp +949 -0
  47. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/ectypes.hpp +121 -0
  48. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/eigen.hpp +60 -0
  49. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/eigensystem.hpp +18 -0
  50. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/elasticity_equations.hpp +595 -0
  51. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/elementbyelement.hpp +195 -0
  52. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/elementtopology.hpp +1760 -0
  53. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/elementtransformation.hpp +339 -0
  54. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/evalfunc.hpp +405 -0
  55. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/expr.hpp +1686 -0
  56. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/facetfe.hpp +175 -0
  57. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/facetfespace.hpp +180 -0
  58. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/facethofe.hpp +111 -0
  59. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/facetsurffespace.hpp +112 -0
  60. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/fe_interfaces.hpp +32 -0
  61. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/fem.hpp +87 -0
  62. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/fesconvert.hpp +14 -0
  63. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/fespace.hpp +1449 -0
  64. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/finiteelement.hpp +286 -0
  65. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/globalinterfacespace.hpp +77 -0
  66. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/globalspace.hpp +115 -0
  67. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/gridfunction.hpp +525 -0
  68. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/h1amg.hpp +124 -0
  69. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/h1hofe.hpp +188 -0
  70. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/h1hofe_impl.hpp +1262 -0
  71. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/h1hofefo.hpp +148 -0
  72. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/h1hofefo_impl.hpp +185 -0
  73. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/h1hofespace.hpp +167 -0
  74. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/h1lofe.hpp +1240 -0
  75. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/h1lumping.hpp +41 -0
  76. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/hcurl_equations.hpp +1381 -0
  77. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/hcurlcurlfe.hpp +2241 -0
  78. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/hcurlcurlfespace.hpp +78 -0
  79. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/hcurlfe.hpp +259 -0
  80. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/hcurlfe_utils.hpp +107 -0
  81. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/hcurlhdiv_dshape.hpp +857 -0
  82. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/hcurlhdivfes.hpp +308 -0
  83. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/hcurlhofe.hpp +175 -0
  84. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/hcurlhofe_impl.hpp +1871 -0
  85. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/hcurlhofespace.hpp +193 -0
  86. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/hcurllofe.hpp +1146 -0
  87. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/hdiv_equations.hpp +880 -0
  88. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/hdivdivfe.hpp +2923 -0
  89. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/hdivdivsurfacespace.hpp +76 -0
  90. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/hdivfe.hpp +206 -0
  91. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/hdivfe_utils.hpp +717 -0
  92. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/hdivfes.hpp +75 -0
  93. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/hdivhofe.hpp +447 -0
  94. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/hdivhofe_impl.hpp +1107 -0
  95. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/hdivhofefo.hpp +229 -0
  96. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/hdivhofespace.hpp +177 -0
  97. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/hdivhosurfacefespace.hpp +106 -0
  98. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/hdivlofe.hpp +773 -0
  99. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/hidden.hpp +74 -0
  100. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/householder.hpp +181 -0
  101. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/hypre_ams_precond.hpp +123 -0
  102. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/hypre_precond.hpp +73 -0
  103. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/integrator.hpp +2012 -0
  104. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/integratorcf.hpp +253 -0
  105. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/interpolate.hpp +49 -0
  106. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/intrule.hpp +2542 -0
  107. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/intrules_SauterSchwab.hpp +25 -0
  108. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/irspace.hpp +49 -0
  109. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/jacobi.hpp +153 -0
  110. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/kernels.hpp +762 -0
  111. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/l2hofe.hpp +194 -0
  112. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/l2hofe_impl.hpp +564 -0
  113. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/l2hofefo.hpp +542 -0
  114. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/l2hofespace.hpp +344 -0
  115. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/la.hpp +38 -0
  116. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/linalg_kernels.hpp +102 -0
  117. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/linearform.hpp +266 -0
  118. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/matrix.hpp +2140 -0
  119. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/memusage.hpp +41 -0
  120. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/meshaccess.hpp +1359 -0
  121. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/mgpre.hpp +204 -0
  122. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/mp_coefficient.hpp +145 -0
  123. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/mptools.hpp +2281 -0
  124. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/multigrid.hpp +42 -0
  125. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/multivector.hpp +447 -0
  126. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/mumpsinverse.hpp +187 -0
  127. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/mycomplex.hpp +361 -0
  128. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/ng_lapack.hpp +1661 -0
  129. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/ngblas.hpp +1232 -0
  130. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/ngs_defines.hpp +30 -0
  131. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/ngs_stdcpp_include.hpp +106 -0
  132. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/ngs_utils.hpp +121 -0
  133. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/ngsobject.hpp +1019 -0
  134. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/ngsstream.hpp +113 -0
  135. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/ngstd.hpp +72 -0
  136. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/nodalhofe.hpp +96 -0
  137. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/nodalhofe_impl.hpp +141 -0
  138. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/normalfacetfe.hpp +223 -0
  139. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/normalfacetfespace.hpp +98 -0
  140. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/normalfacetsurfacefespace.hpp +84 -0
  141. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/order.hpp +251 -0
  142. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/parallel_matrices.hpp +222 -0
  143. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/paralleldofs.hpp +340 -0
  144. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/parallelngs.hpp +23 -0
  145. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/parallelvector.hpp +269 -0
  146. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/pardisoinverse.hpp +200 -0
  147. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/periodic.hpp +129 -0
  148. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/plateaufespace.hpp +25 -0
  149. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/pml.hpp +275 -0
  150. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/pmltrafo.hpp +631 -0
  151. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/postproc.hpp +142 -0
  152. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/potentialtools.hpp +22 -0
  153. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/precomp.hpp +60 -0
  154. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/preconditioner.hpp +602 -0
  155. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/prolongation.hpp +377 -0
  156. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/python_comp.hpp +107 -0
  157. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/python_fem.hpp +89 -0
  158. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/python_linalg.hpp +58 -0
  159. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/python_ngstd.hpp +386 -0
  160. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/recursive_pol.hpp +4896 -0
  161. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/recursive_pol_tet.hpp +395 -0
  162. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/recursive_pol_trig.hpp +492 -0
  163. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/reorderedfespace.hpp +81 -0
  164. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/sample_sort.hpp +105 -0
  165. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/scalarfe.hpp +335 -0
  166. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/shapefunction_utils.hpp +113 -0
  167. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/simd_complex.hpp +329 -0
  168. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/smoother.hpp +253 -0
  169. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/solve.hpp +89 -0
  170. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/sparsecholesky.hpp +313 -0
  171. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/sparsematrix.hpp +1038 -0
  172. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/sparsematrix_dyn.hpp +90 -0
  173. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/sparsematrix_impl.hpp +1013 -0
  174. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/special_matrix.hpp +463 -0
  175. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/specialelement.hpp +125 -0
  176. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/statushandler.hpp +33 -0
  177. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/stringops.hpp +12 -0
  178. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/superluinverse.hpp +136 -0
  179. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/symbolicintegrator.hpp +850 -0
  180. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/symmetricmatrix.hpp +144 -0
  181. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/tangentialfacetfe.hpp +224 -0
  182. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/tangentialfacetfespace.hpp +91 -0
  183. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/tensor.hpp +522 -0
  184. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/tensorcoefficient.hpp +446 -0
  185. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/tensorproductintegrator.hpp +113 -0
  186. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/thcurlfe.hpp +128 -0
  187. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/thcurlfe_impl.hpp +380 -0
  188. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/thdivfe.hpp +80 -0
  189. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/thdivfe_impl.hpp +492 -0
  190. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/tpdiffop.hpp +461 -0
  191. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/tpfes.hpp +133 -0
  192. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/tpintrule.hpp +224 -0
  193. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/triangular.hpp +465 -0
  194. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/tscalarfe.hpp +245 -0
  195. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/tscalarfe_impl.hpp +1029 -0
  196. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/umfpackinverse.hpp +148 -0
  197. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/unifiedvector.hpp +103 -0
  198. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/vector.hpp +1273 -0
  199. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/voxelcoefficientfunction.hpp +41 -0
  200. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/vtkoutput.hpp +198 -0
  201. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/vvector.hpp +208 -0
  202. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/webgui.hpp +92 -0
  203. ngsolve-6.2.2506.post75.dev0.data/data/lib/cmake/ngsolve/NGSolveConfig.cmake +102 -0
  204. ngsolve-6.2.2506.post75.dev0.data/data/lib/cmake/ngsolve/ngsolve-targets-release.cmake +89 -0
  205. ngsolve-6.2.2506.post75.dev0.data/data/lib/cmake/ngsolve/ngsolve-targets.cmake +173 -0
  206. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/netgen_mesher.libs/libngbla.so +0 -0
  207. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/netgen_mesher.libs/libngcomp.so +0 -0
  208. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/netgen_mesher.libs/libngfem.so +0 -0
  209. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/netgen_mesher.libs/libngla.so +0 -0
  210. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/netgen_mesher.libs/libngsbem.so +0 -0
  211. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/netgen_mesher.libs/libngscudalib.so +0 -0
  212. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/netgen_mesher.libs/libngsolve.so +0 -0
  213. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/netgen_mesher.libs/libngstd.so +0 -0
  214. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/TensorProductTools.py +210 -0
  215. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/__console.py +94 -0
  216. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/__expr.py +181 -0
  217. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/__init__.py +148 -0
  218. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/_scikit_build_core_dependencies.py +30 -0
  219. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/bvp.py +78 -0
  220. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/config/__init__.py +1 -0
  221. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/config/__main__.py +4 -0
  222. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/config/config.py +60 -0
  223. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/TensorProduct/__init__.py +0 -0
  224. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/TensorProduct/tp_dg_1d_1d.py +80 -0
  225. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/TensorProduct/tp_dg_1d_2d.py +73 -0
  226. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/TensorProduct/tp_dg_2d_1d.py +72 -0
  227. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/TensorProduct/tp_dg_2d_2d.py +66 -0
  228. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/__init__.py +0 -0
  229. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/howto/__init__.py +0 -0
  230. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/howto/hhj.py +44 -0
  231. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/howto/hybrid_dg.py +53 -0
  232. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/howto/mixed.py +30 -0
  233. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/howto/nonlin.py +29 -0
  234. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/howto/pickling.py +26 -0
  235. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/howto/pml.py +31 -0
  236. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/howto/taskmanager.py +20 -0
  237. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/howto/tdnns.py +47 -0
  238. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/howto/timeDG-skeleton.py +45 -0
  239. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/howto/timeDG.py +38 -0
  240. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/howto/timeDGlap.py +42 -0
  241. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/howto/timeDGwave.py +61 -0
  242. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/intro/__init__.py +0 -0
  243. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/intro/adaptive.py +123 -0
  244. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/intro/cmagnet.py +59 -0
  245. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/intro/elasticity.py +76 -0
  246. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/intro/navierstokes.py +74 -0
  247. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/intro/poisson.ipynb +170 -0
  248. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/intro/poisson.py +41 -0
  249. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/mpi/__init__.py +0 -0
  250. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/mpi/mpi_cmagnet.py +87 -0
  251. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/mpi/mpi_navierstokes.py +117 -0
  252. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/mpi/mpi_poisson.py +89 -0
  253. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/mpi/mpi_timeDG.py +82 -0
  254. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/directsolvers.py +26 -0
  255. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/eigenvalues.py +364 -0
  256. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/internal.py +89 -0
  257. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/krylovspace.py +1013 -0
  258. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/meshes.py +748 -0
  259. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/ngs2petsc.py +310 -0
  260. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/ngscuda.so +0 -0
  261. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/ngscxx.py +42 -0
  262. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/ngslib.so +0 -0
  263. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/nonlinearsolvers.py +203 -0
  264. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/preconditioners.py +11 -0
  265. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/solve_implementation.py +168 -0
  266. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/solvers.py +7 -0
  267. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/timestepping.py +185 -0
  268. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/timing.py +108 -0
  269. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/utils.py +167 -0
  270. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/webgui.py +670 -0
  271. ngsolve-6.2.2506.post75.dev0.data/data/share/ngsolve/beam.geo +17 -0
  272. ngsolve-6.2.2506.post75.dev0.data/data/share/ngsolve/beam.vol +240 -0
  273. ngsolve-6.2.2506.post75.dev0.data/data/share/ngsolve/chip.in2d +41 -0
  274. ngsolve-6.2.2506.post75.dev0.data/data/share/ngsolve/chip.vol +614 -0
  275. ngsolve-6.2.2506.post75.dev0.data/data/share/ngsolve/coil.geo +12 -0
  276. ngsolve-6.2.2506.post75.dev0.data/data/share/ngsolve/coil.vol +2560 -0
  277. ngsolve-6.2.2506.post75.dev0.data/data/share/ngsolve/coilshield.geo +24 -0
  278. ngsolve-6.2.2506.post75.dev0.data/data/share/ngsolve/coilshield.vol +3179 -0
  279. ngsolve-6.2.2506.post75.dev0.data/data/share/ngsolve/cube.geo +19 -0
  280. ngsolve-6.2.2506.post75.dev0.data/data/share/ngsolve/cube.vol +1832 -0
  281. ngsolve-6.2.2506.post75.dev0.data/data/share/ngsolve/d10_DGdoubleglazing.pde +50 -0
  282. ngsolve-6.2.2506.post75.dev0.data/data/share/ngsolve/d11_chip_nitsche.pde +40 -0
  283. ngsolve-6.2.2506.post75.dev0.data/data/share/ngsolve/d1_square.pde +43 -0
  284. ngsolve-6.2.2506.post75.dev0.data/data/share/ngsolve/d2_chip.pde +35 -0
  285. ngsolve-6.2.2506.post75.dev0.data/data/share/ngsolve/d3_helmholtz.pde +22 -0
  286. ngsolve-6.2.2506.post75.dev0.data/data/share/ngsolve/d4_cube.pde +46 -0
  287. ngsolve-6.2.2506.post75.dev0.data/data/share/ngsolve/d5_beam.pde +74 -0
  288. ngsolve-6.2.2506.post75.dev0.data/data/share/ngsolve/d6_shaft.pde +73 -0
  289. ngsolve-6.2.2506.post75.dev0.data/data/share/ngsolve/d7_coil.pde +50 -0
  290. ngsolve-6.2.2506.post75.dev0.data/data/share/ngsolve/d8_coilshield.pde +49 -0
  291. ngsolve-6.2.2506.post75.dev0.data/data/share/ngsolve/d9_hybridDG.pde +72 -0
  292. ngsolve-6.2.2506.post75.dev0.data/data/share/ngsolve/doubleglazing.in2d +27 -0
  293. ngsolve-6.2.2506.post75.dev0.data/data/share/ngsolve/doubleglazing.vol +737 -0
  294. ngsolve-6.2.2506.post75.dev0.data/data/share/ngsolve/piezo2d40round4.vol.gz +0 -0
  295. ngsolve-6.2.2506.post75.dev0.data/data/share/ngsolve/shaft.geo +73 -0
  296. ngsolve-6.2.2506.post75.dev0.data/data/share/ngsolve/shaft.vol +4291 -0
  297. ngsolve-6.2.2506.post75.dev0.data/data/share/ngsolve/square.in2d +17 -0
  298. ngsolve-6.2.2506.post75.dev0.data/data/share/ngsolve/square.vol +149 -0
  299. ngsolve-6.2.2506.post75.dev0.dist-info/METADATA +14 -0
  300. ngsolve-6.2.2506.post75.dev0.dist-info/RECORD +303 -0
  301. ngsolve-6.2.2506.post75.dev0.dist-info/WHEEL +5 -0
  302. ngsolve-6.2.2506.post75.dev0.dist-info/licenses/LICENSE +504 -0
  303. ngsolve-6.2.2506.post75.dev0.dist-info/top_level.txt +1 -0
@@ -0,0 +1,42 @@
1
+ #ifndef FILE_MULTIGRID
2
+ #define FILE_MULTIGRID
3
+
4
+ /*********************************************************************/
5
+ /* File: multigrid.hh */
6
+ /* Author: Joachim Schoeberl */
7
+ /* Date: 20. Apr. 2000 */
8
+ /*********************************************************************/
9
+
10
+ /*
11
+ Multigrid algorithms
12
+ */
13
+
14
+
15
+ // #include <comp.hpp>
16
+
17
+ /// namespace for multigrid components
18
+
19
+ /*
20
+ namespace ngfem { };
21
+ namespace ngcomp { };
22
+
23
+ namespace ngmg
24
+ {
25
+ using namespace std;
26
+ using namespace ngstd;
27
+ using ngcore::INT;
28
+ using namespace ngla;
29
+ using namespace ngfem;
30
+ using namespace ngcomp;
31
+ }
32
+ */
33
+
34
+
35
+ #include "mgpre.hpp"
36
+ #include "prolongation.hpp"
37
+ #include "smoother.hpp"
38
+ // #include "vefc.hpp"
39
+ // #include "evcoarse.hpp"
40
+
41
+
42
+ #endif
@@ -0,0 +1,447 @@
1
+ #ifndef FILE_MULTIVECTOR
2
+ #define FILE_MULTIVECTOR
3
+
4
+ /*********************************************************************/
5
+ /* File: multivector.hpp */
6
+ /* Author: Joachim Schoeberl, Amanda Schoefl */
7
+ /* Date: June 2020 */
8
+ /*********************************************************************/
9
+
10
+ #include "basevector.hpp"
11
+
12
+ namespace ngla {
13
+
14
+ /* TODO:
15
+ * (+) Gram-Schmidt
16
+ * (+) default arguments
17
+ *
18
+ */
19
+
20
+ class MultiVector;
21
+ class BaseMatrix;
22
+
23
+
24
+ class MultiVectorExpr
25
+ {
26
+ public:
27
+ virtual ~MultiVectorExpr() { ; }
28
+ virtual void AssignTo (FlatVector<double> s, class MultiVector & v) const = 0;
29
+ virtual void AddTo (FlatVector<double> s, class MultiVector & v) const = 0;
30
+ virtual void AssignTo (FlatVector<Complex> s, class MultiVector & v) const = 0;
31
+ virtual void AddTo (FlatVector<Complex> s, class MultiVector & v) const = 0;
32
+
33
+ virtual size_t Size() const = 0;
34
+ virtual shared_ptr<BaseVector> CreateVector() const = 0;
35
+ virtual void CalcComponent(size_t nr, BaseVector & bv) const = 0;
36
+ };
37
+
38
+
39
+ class MultiVector : public MultiVectorExpr
40
+ {
41
+ protected:
42
+ shared_ptr<BaseVector> refvec;
43
+ Array<shared_ptr<BaseVector>> vecs;
44
+ public:
45
+ MultiVector (const Array<shared_ptr<BaseVector>> & avecs)
46
+ : refvec(avecs.Size()?avecs[0]:nullptr), vecs(avecs) { }
47
+ MultiVector (shared_ptr<BaseVector> v, size_t cnt): refvec (v)
48
+ {
49
+ Extend (cnt);
50
+ }
51
+ MultiVector (size_t size, size_t cnt, bool is_complex)
52
+ {
53
+ refvec = CreateBaseVector(size, is_complex, 1);
54
+ Extend (cnt);
55
+ }
56
+ MultiVector (const MultiVector & v) = default;
57
+ MultiVector (MultiVector && v) = default;
58
+
59
+ virtual ~MultiVector() { }
60
+ bool IsComplex() const { return refvec->IsComplex(); }
61
+
62
+ size_t Size() const override { return vecs.Size(); }
63
+ shared_ptr<BaseVector> operator[] (size_t i) const { return vecs[i]; }
64
+ shared_ptr<BaseVector> RefVec() const { return refvec; }
65
+
66
+ virtual unique_ptr<MultiVector> Range(IntRange r) const;
67
+ virtual unique_ptr<MultiVector> VectorRange(IntRange r) const; // range of each component vector
68
+ virtual unique_ptr<MultiVector> SubSet(const Array<int> & indices) const;
69
+
70
+ void Extend (size_t nr = 1) {
71
+ for ([[maybe_unused]] auto i : ngstd::Range(nr))
72
+ vecs.Append (refvec->CreateVector());
73
+ }
74
+ void Append (shared_ptr<BaseVector> v)
75
+ {
76
+ vecs.Append (v->CreateVector());
77
+ *vecs.Last() = *v;
78
+ }
79
+
80
+ void Replace (int i, shared_ptr<BaseVector> v)
81
+ {
82
+ vecs[i] = v;
83
+ }
84
+
85
+ void AppendOrthogonalize (shared_ptr<BaseVector> v, BaseMatrix * ip, bool parallel, int iterations);
86
+ template <typename T>
87
+ Vector<T> T_AppendOrthogonalize (shared_ptr<BaseVector> v, BaseMatrix * ip, bool parallel, int iterations);
88
+
89
+ MultiVector & operator= (double val)
90
+ {
91
+ SetScalar (val);
92
+ return *this;
93
+ }
94
+
95
+ MultiVector & operator= (Complex val)
96
+ {
97
+ SetScalar (val);
98
+ return *this;
99
+ }
100
+
101
+ MultiVector & operator= (const MultiVector & v2);
102
+ MultiVector & operator= (const MultiVectorExpr & expr);
103
+ MultiVector operator+= (const MultiVectorExpr & expr);
104
+ MultiVector & operator-= (const MultiVectorExpr & expr);
105
+
106
+ void Orthogonalize (BaseMatrix * ipmat);
107
+ template <class T>
108
+ Matrix<T> T_Orthogonalize (BaseMatrix * ipmat);
109
+
110
+ virtual void SetScalar (double s);
111
+ virtual void SetScalar (Complex s);
112
+
113
+ // v2 += vec(i) * v[i]
114
+ virtual void AddTo (FlatVector<double> vec, BaseVector & v2);
115
+ virtual void AddTo (FlatVector<Complex> vec, BaseVector & v2);
116
+ // me[i] += v2[j] mat(j,i)
117
+ virtual void Add (const MultiVector & v2, FlatMatrix<double> mat);
118
+ virtual void Add (const MultiVector & v2, FlatMatrix<Complex> mat);
119
+
120
+ template <typename T>
121
+ auto T_InnerProduct (const MultiVector & v2, bool conjugate = false)
122
+ {
123
+ if constexpr (is_same<T, double>())
124
+ return InnerProductD (v2);
125
+ else
126
+ return InnerProductC (v2, conjugate);
127
+ }
128
+
129
+ virtual Matrix<> InnerProductD (const MultiVector & v2) const;
130
+ virtual Matrix<Complex> InnerProductC (const MultiVector & v2, bool conjugate = false) const;
131
+ virtual Matrix<> InnerProductD (const MultiVectorExpr & v2) const;
132
+ virtual Matrix<Complex> InnerProductC (const MultiVectorExpr & v2, bool conjugate = false) const;
133
+
134
+
135
+ template <typename T>
136
+ auto T_InnerProduct (const BaseVector & v2, bool conjugate = false)
137
+ {
138
+ if constexpr (is_same<T, double>())
139
+ return InnerProductD (v2);
140
+ else
141
+ return InnerProductC (v2, conjugate);
142
+ }
143
+
144
+ virtual Vector<> InnerProductD (const BaseVector & v2) const;
145
+ virtual Vector<Complex> InnerProductC (const BaseVector & v2, bool conjugate = false) const;
146
+
147
+
148
+
149
+ virtual void AssignTo (FlatVector<double> s, class MultiVector & v) const override;
150
+ virtual void AddTo (FlatVector<double> s, class MultiVector & v) const override;
151
+ virtual void AssignTo (FlatVector<Complex> s, class MultiVector & v) const override;
152
+ virtual void AddTo (FlatVector<Complex> s, class MultiVector & v) const override;
153
+
154
+ virtual shared_ptr<BaseVector> CreateVector() const override;
155
+ virtual void CalcComponent(size_t nr, BaseVector & bv) const override;
156
+ };
157
+
158
+
159
+
160
+
161
+ class BaseVectorPtrMV : public MultiVector
162
+ {
163
+ public:
164
+ using MultiVector::MultiVector;
165
+
166
+ unique_ptr<MultiVector> Range(IntRange r) const override;
167
+ void SetScalar (double s) override;
168
+ void Add (const MultiVector & v2, FlatMatrix<double> mat) override;
169
+ void Add (const MultiVector & v2, FlatMatrix<Complex> mat) override;
170
+ Vector<> InnerProductD (const BaseVector & v2) const override;
171
+ Matrix<> InnerProductD (const MultiVector & v2) const override;
172
+ Matrix<Complex> InnerProductC (const MultiVector & v2, bool conjugate) const override;
173
+ };
174
+
175
+
176
+
177
+
178
+
179
+ template <class T>
180
+ void MultAdd (const BaseMatrix & mat, FlatVector<T> s, const MultiVector & x, MultiVector & y);
181
+
182
+ class MatMultiVecExpr : public MultiVectorExpr
183
+ {
184
+ shared_ptr<BaseMatrix> mat;
185
+ shared_ptr<MultiVector> vec;
186
+ public:
187
+ MatMultiVecExpr (shared_ptr<BaseMatrix> amat, shared_ptr<MultiVector> avec)
188
+ : mat(amat), vec(avec) { ; }
189
+
190
+ void AssignTo (FlatVector<double> s, MultiVector & res) const override
191
+ {
192
+ res = 0.0;
193
+ MultAdd (*mat, s, *vec, res);
194
+ }
195
+
196
+ void AddTo (FlatVector<double> s, MultiVector & res) const override
197
+ { MultAdd (*mat, s, *vec, res); }
198
+
199
+ void AssignTo (FlatVector<Complex> s, MultiVector & res) const override
200
+ {
201
+ res = 0.0;
202
+ MultAdd (*mat, s, *vec, res);
203
+ }
204
+
205
+ void AddTo (FlatVector<Complex> s, MultiVector & res) const override
206
+ { MultAdd (*mat, s, *vec, res); }
207
+
208
+ size_t Size() const override { return vec->Size(); }
209
+ shared_ptr<BaseVector> CreateVector() const override;
210
+ void CalcComponent(size_t nr, BaseVector & bv) const override;
211
+ };
212
+
213
+
214
+
215
+
216
+
217
+ template <typename T>
218
+ class MultiVecMatrixExpr : public MultiVectorExpr
219
+ {
220
+ Matrix<T> mat;
221
+ shared_ptr<MultiVector> vec;
222
+ public:
223
+ MultiVecMatrixExpr (Matrix<T> amat, shared_ptr<MultiVector> avec)
224
+ : mat(amat), vec(avec)
225
+ {
226
+ if (vec->Size() != mat.Height())
227
+ throw Exception("Multivector * Matrix don't fit: mv.size = "+ToString(vec->Size())+
228
+ ", matrix.height = " + ToString(mat.Height()));
229
+
230
+ }
231
+
232
+ void AssignTo (FlatVector<double> s, MultiVector & res) const override
233
+ {
234
+ res = 0.0;
235
+ AddTo (s, res);
236
+ }
237
+
238
+ void AddTo (FlatVector<double> s, MultiVector & res) const override
239
+ {
240
+ Matrix<T> hmat = mat;
241
+ for (auto i : Range(mat.Width()))
242
+ hmat.Col(i) *= s(i);
243
+ res.Add (*vec, hmat);
244
+ }
245
+
246
+ void AssignTo (FlatVector<Complex> s, MultiVector & res) const override
247
+ {
248
+ res = 0.0;
249
+ AddTo (s, res);
250
+ }
251
+
252
+ void AddTo (FlatVector<Complex> s, MultiVector & res) const override
253
+ {
254
+ Matrix<Complex> hmat = mat;
255
+ for (auto i : Range(mat.Width()))
256
+ hmat.Col(i) *= s(i);
257
+ res.Add (*vec, hmat);
258
+ }
259
+
260
+ size_t Size() const override { return mat.Width(); } // vec->Size(); }
261
+ shared_ptr<BaseVector> CreateVector() const override
262
+ {
263
+ return vec->RefVec()->CreateVector();
264
+ }
265
+
266
+ void CalcComponent(size_t nr, BaseVector & bv) const override
267
+ {
268
+ bv = 0;
269
+ vec->AddTo (Vector<T>(mat.Col(nr)), bv);
270
+ }
271
+ };
272
+
273
+
274
+
275
+
276
+
277
+ class SumMultiVectorExpr : public MultiVectorExpr
278
+ {
279
+ shared_ptr<MultiVectorExpr> e1;
280
+ shared_ptr<MultiVectorExpr> e2;
281
+ public:
282
+ SumMultiVectorExpr (shared_ptr<MultiVectorExpr> ae1,
283
+ shared_ptr<MultiVectorExpr> ae2)
284
+ : e1(ae1), e2(ae2) { }
285
+
286
+ void AssignTo (FlatVector<double> s, MultiVector & res) const override
287
+ {
288
+ e1->AssignTo (s, res);
289
+ e2->AddTo (s, res);
290
+ }
291
+
292
+ void AddTo (FlatVector<double> s, MultiVector & res) const override
293
+ {
294
+ e1->AddTo (s, res);
295
+ e2->AddTo (s, res);
296
+ }
297
+
298
+ void AssignTo (FlatVector<Complex> s, MultiVector & res) const override
299
+ {
300
+ e1->AssignTo (s, res);
301
+ e2->AddTo (s, res);
302
+ }
303
+
304
+ void AddTo (FlatVector<Complex> s, MultiVector & res) const override
305
+ {
306
+ e1->AddTo (s, res);
307
+ e2->AddTo (s, res);
308
+ }
309
+
310
+ size_t Size() const override { return e1->Size(); }
311
+ shared_ptr<BaseVector> CreateVector() const override
312
+ {
313
+ return e1->CreateVector();
314
+ }
315
+
316
+ void CalcComponent(size_t nr, BaseVector & bv) const override
317
+ {
318
+ auto tmp = bv.CreateVector();
319
+ e1->CalcComponent(nr, *tmp);
320
+ e2->CalcComponent(nr, bv);
321
+ bv += *tmp;
322
+ }
323
+ };
324
+
325
+
326
+
327
+
328
+ template <typename T>
329
+ class ScaledMultiVectorExpr : public MultiVectorExpr
330
+ {
331
+ shared_ptr<MultiVectorExpr> mv;
332
+ Vector<T> scale;
333
+ public:
334
+ ScaledMultiVectorExpr (shared_ptr<MultiVectorExpr> amv,
335
+ Vector<T> ascale)
336
+ : mv(amv), scale(ascale) { }
337
+
338
+ void AssignTo (FlatVector<double> s, MultiVector & res) const override
339
+ {
340
+ Vector<T> hv = pw_mult(scale, s);
341
+ mv->AssignTo (hv, res);
342
+ }
343
+
344
+ void AddTo (FlatVector<double> s, MultiVector & res) const override
345
+ {
346
+ Vector<T> hv = pw_mult(scale, s);
347
+ mv->AddTo (hv, res);
348
+ }
349
+
350
+ void AssignTo (FlatVector<Complex> s, MultiVector & res) const override
351
+ {
352
+ Vector<Complex> hv = pw_mult(scale, s);
353
+ mv->AssignTo (hv, res);
354
+ }
355
+
356
+ void AddTo (FlatVector<Complex> s, MultiVector & res) const override
357
+ {
358
+ Vector<Complex> hv = pw_mult(scale, s);
359
+ mv->AddTo (hv, res);
360
+ }
361
+
362
+ size_t Size() const override { return mv->Size(); }
363
+ shared_ptr<BaseVector> CreateVector() const override
364
+ {
365
+ return mv->CreateVector();
366
+ }
367
+
368
+ void CalcComponent(size_t nr, BaseVector & bv) const override
369
+ {
370
+ mv->CalcComponent(nr, bv);
371
+ bv *= scale(nr);
372
+ }
373
+ };
374
+
375
+
376
+
377
+
378
+
379
+
380
+
381
+
382
+
383
+
384
+
385
+
386
+
387
+ // y += sum a(i) * x[i]
388
+ template <class T>
389
+ void Axpy (const Vector<T> & a, const MultiVector & x, BaseVector & y);
390
+
391
+
392
+ template <typename TSCAL>
393
+ class MultiVecAxpyExpr : public DynamicBaseExpression
394
+ {
395
+ Vector<TSCAL> a;
396
+ shared_ptr<MultiVector> x;
397
+
398
+ public:
399
+ MultiVecAxpyExpr (Vector<TSCAL> aa, shared_ptr<MultiVector> ax)
400
+ : a(aa), x(ax) { }
401
+
402
+ AutoVector CreateVector() const override
403
+ { return x->RefVec()->CreateVector(); }
404
+
405
+ void AssignTo (double s, BaseVector & v) const override
406
+ {
407
+ v = 0.0;
408
+ AddTo (s, v);
409
+ }
410
+
411
+ void AddTo (double s, BaseVector & v) const override
412
+ {
413
+ Vector<TSCAL> sa = s*a;
414
+ // Axpy (sa, *x, v);
415
+ x->AddTo(sa, v);
416
+ }
417
+
418
+ void AssignTo (Complex s, BaseVector & v) const override
419
+ {
420
+ v = 0.0;
421
+ AddTo (s, v);
422
+ }
423
+
424
+ void AddTo (Complex s, BaseVector & v) const override
425
+ {
426
+ Vector<Complex> sa = s*a;
427
+ // Axpy(sa, *x , v);
428
+ x->AddTo(sa, v);
429
+ }
430
+ };
431
+
432
+
433
+
434
+
435
+ shared_ptr<MultiVectorExpr> operator+ (shared_ptr<MultiVectorExpr> e1,
436
+ shared_ptr<MultiVectorExpr> e2);
437
+ shared_ptr<MultiVectorExpr> operator- (shared_ptr<MultiVectorExpr> e1);
438
+
439
+ shared_ptr<MultiVectorExpr> operator- (shared_ptr<MultiVectorExpr> e1,
440
+ shared_ptr<MultiVectorExpr> e2);
441
+
442
+ shared_ptr<MultiVectorExpr> operator* (double s, shared_ptr<MultiVectorExpr> e1);
443
+
444
+ shared_ptr<MultiVectorExpr> operator* (Complex s, shared_ptr<MultiVectorExpr> e1);
445
+
446
+ }
447
+ #endif
@@ -0,0 +1,187 @@
1
+ #ifndef FILE_MUMPSINVERSE
2
+ #define FILE_MUMPSINVERSE
3
+
4
+ /* *************************************************************************/
5
+ /* File: mumpsinverse.hpp */
6
+ /* Author: Joachin Schoeberl */
7
+ /* Date: Apr. 09 */
8
+ /* *************************************************************************/
9
+
10
+ #include <la.hpp>
11
+
12
+ /*
13
+ namespace ngparallel
14
+ {
15
+ class ParallelDofs;
16
+ }
17
+ */
18
+
19
+ namespace ngla
20
+ {
21
+
22
+ /*
23
+ interface to the sparse direct solver Mumps
24
+ */
25
+
26
+ #ifdef USE_MUMPS
27
+ #define OMPI_SKIP_MPICXX
28
+ #include "dmumps_c.h"
29
+ #include "zmumps_c.h"
30
+
31
+
32
+ template <class TSCAL>
33
+ class mumps_trait
34
+ {
35
+ public:
36
+ typedef DMUMPS_STRUC_C MUMPS_STRUC_C;
37
+ typedef double MUMPS_TSCAL;
38
+ static void MumpsFunction (DMUMPS_STRUC_C * id)
39
+ { dmumps_c (id); }
40
+ };
41
+
42
+ template <>
43
+ class mumps_trait<Complex>
44
+ {
45
+ public:
46
+ typedef ZMUMPS_STRUC_C MUMPS_STRUC_C;
47
+ typedef mumps_double_complex MUMPS_TSCAL;
48
+ static void MumpsFunction (ZMUMPS_STRUC_C * id)
49
+ { zmumps_c (id); }
50
+ };
51
+
52
+
53
+
54
+ template<class TM,
55
+ class TV_ROW = typename mat_traits<TM>::TV_ROW,
56
+ class TV_COL = typename mat_traits<TM>::TV_COL>
57
+ class MumpsInverse : public BaseMatrix
58
+ {
59
+ typedef typename mat_traits<TM>::TV_COL TV;
60
+ typedef typename mat_traits<TM>::TV_ROW TVX;
61
+ typedef typename mat_traits<TM>::TSCAL TSCAL;
62
+
63
+
64
+ typedef typename mumps_trait<TSCAL>::MUMPS_STRUC_C MUMPS_STRUC_C;
65
+ MUMPS_STRUC_C mumps_id;
66
+
67
+ int height, nze, entrysize;
68
+
69
+ bool symmetric, iscomplex;
70
+
71
+ shared_ptr<BitArray> inner;
72
+ shared_ptr<const Array<int>> cluster;
73
+
74
+ NgMPI_Comm comm;
75
+
76
+ public:
77
+ ///
78
+ MumpsInverse (const SparseMatrix<TM,TV_ROW,TV_COL> & a,
79
+ shared_ptr<BitArray> ainner = nullptr,
80
+ shared_ptr<const Array<int>> acluster = nullptr,
81
+ bool symmetric = false);
82
+
83
+ ///
84
+ ~MumpsInverse ();
85
+
86
+ ///
87
+ int VHeight() const { return height/entrysize; }
88
+
89
+ ///
90
+ int VWidth() const { return height/entrysize; }
91
+ ///
92
+ virtual bool IsComplex() const { return iscomplex; }
93
+ ///
94
+ virtual void Mult (const BaseVector & x, BaseVector & y) const;
95
+
96
+ ///
97
+ virtual AutoVector CreateVector () const
98
+ {
99
+ return make_unique<VVector<TV>> (height);
100
+ }
101
+
102
+ virtual AutoVector CreateRowVector () const
103
+ {
104
+ return make_unique<VVector<TV>> (height);
105
+ }
106
+
107
+ virtual AutoVector CreateColVector () const
108
+ {
109
+ return make_unique<VVector<TV>> (height);
110
+ }
111
+
112
+ };
113
+
114
+
115
+
116
+
117
+
118
+ template<class TM,
119
+ class TVEC = typename mat_traits<TM>::TV_ROW>
120
+ class ParallelMumpsInverse : public BaseMatrix
121
+ {
122
+ typedef typename mat_traits<TM>::TV_COL TV;
123
+ typedef typename mat_traits<TM>::TSCAL TSCAL;
124
+
125
+
126
+ typedef typename mumps_trait<TSCAL>::MUMPS_STRUC_C MUMPS_STRUC_C;
127
+ MUMPS_STRUC_C mumps_id;
128
+ int height, nze, entrysize;
129
+
130
+ bool symmetric, iscomplex;
131
+
132
+ // const BitArray * inner;
133
+ // const Array<int> * cluster;
134
+ Array<int> select;
135
+ Array<int> loc2glob;
136
+ int num_globdofs;
137
+ public:
138
+ ///
139
+ ParallelMumpsInverse (const BaseSparseMatrix & a,
140
+ shared_ptr<BitArray> ainner,
141
+ shared_ptr<const Array<int>> acluster,
142
+ shared_ptr<ParallelDofs> pardofs,
143
+ bool symmetric = 0);
144
+
145
+ ///
146
+ ~ParallelMumpsInverse ();
147
+
148
+ ///
149
+ int VHeight() const { return height; }
150
+
151
+ ///
152
+ int VWidth() const { return height; }
153
+ ///
154
+ virtual bool IsComplex() const { return iscomplex; }
155
+ ///
156
+ virtual void Mult (const BaseVector & x, BaseVector & y) const;
157
+
158
+ ///
159
+ virtual AutoVector CreateVector () const;
160
+ virtual AutoVector CreateRowVector () const;
161
+ virtual AutoVector CreateColVector () const;
162
+ /*
163
+ {
164
+ return new ParallelVVector<TV> (height, paralleldofs);
165
+ // return new VVector<TV> (height);
166
+ }
167
+ */
168
+
169
+ private:
170
+ void MumpsFunction (MUMPS_STRUC_C & mumps_id)
171
+ {
172
+ mumps_trait<TSCAL>::MumpsFunction (&mumps_id);
173
+ }
174
+ };
175
+
176
+
177
+
178
+
179
+
180
+ #endif
181
+
182
+
183
+
184
+
185
+ }
186
+
187
+ #endif