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,168 @@
1
+ import functools
2
+
3
+ from ngsolve import (
4
+ BilinearForm,
5
+ GridFunction,
6
+ CoefficientFunction,
7
+ Region,
8
+ BND,
9
+ Preconditioner,
10
+ )
11
+ from .nonlinearsolvers import NewtonSolver
12
+ from .krylovspace import GMResSolver, LinearSolver
13
+
14
+
15
+ class Dirichlet:
16
+ def __init__(self, cf, region):
17
+ self.cf = cf
18
+ self.region = region
19
+
20
+
21
+ class Application:
22
+ def __init__(self, a: BilinearForm, gf: GridFunction):
23
+ self.a = a
24
+ self.gf = gf
25
+
26
+ def Solve(
27
+ self,
28
+ rhs,
29
+ *args,
30
+ dirichlet = None,
31
+ pre = None,
32
+ printrates: bool = False,
33
+ **kwargs,
34
+ ):
35
+ raise NotImplementedError("Solve method must be implemented in subclasses")
36
+
37
+ def __eq__(self, other):
38
+ return Equation(self, other)
39
+
40
+
41
+ class NonLinearApplication(Application):
42
+ def Solve(
43
+ self,
44
+ rhs=None,
45
+ dirichlet = None,
46
+ printing: bool = False,
47
+ **kwargs,
48
+ ):
49
+ solver_args = {}
50
+
51
+ if rhs is not None and rhs != 0:
52
+ rhs.Assemble()
53
+ solver_args["rhs"] = rhs
54
+ if "freedofs" in kwargs:
55
+ solver_args["freedofs"] = kwargs.pop("freedofs")
56
+ if "inverse" in kwargs:
57
+ solver_args["inverse"] = kwargs.pop("inverse")
58
+ solver = NewtonSolver(self.a, self.gf, **solver_args)
59
+ if dirichlet is not None:
60
+ dirichlet_gf = GridFunction(self.gf.space)
61
+ if isinstance(dirichlet, list):
62
+ for i in range(len(dirichlet)):
63
+ if dirichlet[i] is not None:
64
+ if isinstance(dirichlet[i], Dirichlet):
65
+ dirichlet_gf.components[i].Set(
66
+ dirichlet[i].cf, definedon=dirichlet[i].region
67
+ )
68
+ else:
69
+ dirichlet_gf.components[i].Set(dirichlet[i], BND)
70
+ elif isinstance(dirichlet, Dirichlet):
71
+ dirichlet_gf.Set(dirichlet.cf, definedon=dirichlet.region)
72
+ else:
73
+ dirichlet_gf.Set(dirichlet, BND)
74
+ solver.SetDirichlet(dirichlet_gf.vec)
75
+ solver.Solve(printing=printing, **kwargs)
76
+
77
+
78
+ class LinearApplication(Application):
79
+ def Assemble(self):
80
+ if not hasattr(self, "vec"):
81
+ self.vec = self.gf.vec.CreateVector()
82
+ self.a.Apply(self.gf.vec, self.vec)
83
+
84
+ def Solve(
85
+ self,
86
+ rhs,
87
+ *args,
88
+ dirichlet = None,
89
+ pre = None,
90
+ lin_solver=None,
91
+ lin_solver_args = None,
92
+ printrates: bool = False,
93
+ ):
94
+ self.a.Assemble()
95
+ for arg in args:
96
+ if isinstance(arg, Dirichlet) or isinstance(arg, CoefficientFunction):
97
+ assert dirichlet is None, "Only one dirichlet condition can be set"
98
+ dirichlet = arg
99
+ if isinstance(arg, Preconditioner):
100
+ assert pre is None, "Only one preconditioner can be set"
101
+ pre = arg
102
+ if isinstance(arg, type) and issubclass(arg, LinearSolver):
103
+ assert lin_solver is None, "Only one linear solver can be set"
104
+ lin_solver = arg
105
+ rhs.Assemble()
106
+ if dirichlet is not None:
107
+ if isinstance(dirichlet, list):
108
+ for i in range(len(dirichlet)):
109
+ if dirichlet[i] is not None:
110
+ if isinstance(dirichlet[i], Dirichlet):
111
+ self.gf.components[i].Set(
112
+ dirichlet[i].cf, definedon=dirichlet[i].region
113
+ )
114
+ else:
115
+ self.gf.components[i].Set(dirichlet[i], BND)
116
+ elif isinstance(dirichlet, Dirichlet):
117
+ self.gf.Set(dirichlet.cf, definedon=dirichlet.region)
118
+ else:
119
+ self.gf.Set(dirichlet, BND)
120
+ rhs.vec.data += -self.a.mat * self.gf.vec
121
+ else:
122
+ self.gf.vec[:] = 0.0
123
+ if self.a.condense:
124
+ rhs.vec.data += self.a.harmonic_extension_trans * rhs.vec
125
+ if pre is None and lin_solver is None:
126
+ ainv = self.a.mat.Inverse(self.a.space.FreeDofs(self.a.condense))
127
+ else:
128
+ if lin_solver is None:
129
+ lin_solver = GMResSolver
130
+ if lin_solver_args is None:
131
+ lin_solver_args = {}
132
+ if pre is None:
133
+ freedofs = self.a.space.FreeDofs(self.a.condense)
134
+ else:
135
+ freedofs = None
136
+ if "printrates" not in lin_solver_args:
137
+ lin_solver_args["printrates"] = printrates
138
+ ainv = lin_solver(
139
+ mat=self.a.mat, pre=pre, freedofs=freedofs, **lin_solver_args
140
+ )
141
+ self.gf.vec.data += ainv * rhs.vec
142
+ if self.a.condense:
143
+ self.gf.vec.data += self.a.harmonic_extension * self.gf.vec
144
+ self.gf.vec.data += self.a.inner_solve * rhs.vec
145
+
146
+
147
+ class Equation:
148
+ def __init__(self, lhs, rhs):
149
+ self.lhs = lhs
150
+ self.rhs = rhs
151
+
152
+ @functools.wraps(Application.Solve)
153
+ def Solve(self, *args, **kwargs):
154
+ self.lhs.Solve(self.rhs, *args, **kwargs)
155
+
156
+
157
+ def _create_lin_appl(self, gfu: GridFunction) -> LinearApplication:
158
+ if not isinstance(gfu, GridFunction):
159
+ raise TypeError("gfu must be a GridFunction")
160
+ return LinearApplication(self, gfu)
161
+
162
+
163
+ BilinearForm.__mul__ = _create_lin_appl
164
+
165
+
166
+ @functools.wraps(Application.Solve)
167
+ def Solve(eq: Equation, *args, **kwargs):
168
+ eq.Solve(*args, **kwargs)
@@ -0,0 +1,7 @@
1
+ from ngsolve.eigenvalues import PINVIT, LOBPCG
2
+ from ngsolve.krylovspace import CG, QMR, MinRes, PreconditionedRichardson, GMRes
3
+ from ngsolve.krylovspace import CGSolver
4
+ from ngsolve.nonlinearsolvers import Newton, NewtonMinimization
5
+ from ngsolve.bvp import BVP
6
+ from ngsolve.directsolvers import SuperLU
7
+
@@ -0,0 +1,185 @@
1
+
2
+ import ngsolve as ngs
3
+ from typing import Type, Optional, Union, Callable
4
+
5
+ class ImplicitEuler:
6
+ def __init__(self,
7
+ equation: ngs.comp.SumOfIntegrals,
8
+ dt: Union[float, ngs.Parameter],
9
+ time: ngs.Parameter = ngs.Parameter(0),
10
+ pc_cls: Type = ngs.preconditioners.MultiGrid,
11
+ pc_args: Optional[dict] = None,
12
+ lin_solver_cls: Type = ngs.solvers.CGSolver,
13
+ lin_solver_args: Optional[dict] = None):
14
+
15
+ self.time = time
16
+ proxies = equation.GetProxies()
17
+ udts = list(filter(lambda u: u.dt_order == 1, proxies))
18
+ self.gfu_old = ngs.GridFunction(udts[0].space)
19
+ self.dt = ngs.Parameter(dt) if (isinstance(dt, float) or isinstance(dt, int)) else dt
20
+ replacements = {}
21
+ for udt in udts:
22
+ replacements[udt] = 1/self.dt * (udt.anti_dt - udt.anti_dt.ReplaceFunction(self.gfu_old))
23
+ self.bfmstar = ngs.BilinearForm(equation.Replace(replacements))
24
+ self.bfmstar.Assemble()
25
+ self.c = pc_cls(self.bfmstar, **(pc_args or {}))
26
+ self._lin_solver_cls = lin_solver_cls
27
+ self._lin_solver_args = lin_solver_args
28
+
29
+ def Integrate(self, u_start: ngs.GridFunction,
30
+ end_time: float,
31
+ start_time: Optional[float] = None,
32
+ newton_args: Optional[dict] = None,
33
+ callback: Optional[Callable] = None):
34
+ u = u_start
35
+ if start_time is not None:
36
+ self.time.Set(start_time)
37
+ while self.time.Get() < end_time * (1-1e-10):
38
+ dt = min(self.dt.Get(), end_time - self.time.Get())
39
+ self.time.Set(self.time.Get() + dt)
40
+ self.Step(u, dt=dt, newton_args=newton_args)
41
+ if callback is not None:
42
+ callback(self.time.Get(), u)
43
+ return u
44
+
45
+ def Step(self, u: ngs.GridFunction, dt: Optional[float] = None,
46
+ newton_args: Optional[dict] = None):
47
+ if dt is not None:
48
+ self.dt.Set(dt)
49
+ self.gfu_old.vec.data = u.vec
50
+ lin_solver = self._lin_solver_cls(mat=self.bfmstar.mat,
51
+ pre=self.c,
52
+ **(self._lin_solver_args or {}))
53
+ newton = ngs.nonlinearsolvers.NewtonSolver(a=self.bfmstar,
54
+ u=u,
55
+ solver=lin_solver)
56
+ newton.Solve(**(newton_args or {}))
57
+
58
+ class Newmark:
59
+ def __init__(self,
60
+ equation: ngs.comp.SumOfIntegrals,
61
+ dt: Union[float, ngs.Parameter],
62
+ time: ngs.Parameter = ngs.Parameter(0),
63
+ pc_cls: Type = ngs.preconditioners.MultiGrid,
64
+ pc_args: Optional[dict] = None,
65
+ lin_solver_cls: Type = ngs.solvers.CGSolver,
66
+ lin_solver_args: Optional[dict] = None):
67
+ self.time = time
68
+ proxies = equation.GetProxies()
69
+ udt2 = list(filter(lambda u: u.dt_order == 2, proxies))
70
+ if len(udt2) != 1:
71
+ raise ValueError("Only u.dt.dt allowed as time derivatives in newmark!")
72
+ udt2 = udt2[0]
73
+ self.gfu_old = ngs.GridFunction(udt2.space)
74
+ self.gfv_old = ngs.GridFunction(udt2.space)
75
+ self.gfa_old = ngs.GridFunction(udt2.space)
76
+ self.dt = ngs.Parameter(dt) if (isinstance(dt, float) or isinstance(dt, int)) else dt
77
+ self.bfmstar = ngs.BilinearForm(udt2.space)
78
+ u = udt2.anti_dt.anti_dt
79
+ vel_new = 2/self.dt * (u-self.gfu_old) - self.gfv_old
80
+ acc_new = 2/self.dt * (vel_new-self.gfv_old) - self.gfa_old
81
+ self.bfmstar += equation.Replace({ udt2: acc_new })
82
+ self.bfmstar.Assemble()
83
+ self.c = pc_cls(self.bfmstar, **(pc_args or {}))
84
+ self._lin_solver_cls = lin_solver_cls
85
+ self._lin_solver_args = lin_solver_args
86
+
87
+ def Integrate(self, u: ngs.GridFunction,
88
+ end_time: float,
89
+ v: Optional[ngs.GridFunction] = None,
90
+ a: Optional[ngs.GridFunction] = None,
91
+ start_time: Optional[float] = None,
92
+ newton_args: Optional[dict] = None,
93
+ callback: Optional[Callable] = None):
94
+ if start_time is not None:
95
+ self.time.Set(start_time)
96
+ if v is None:
97
+ v = ngs.GridFunction(u.space)
98
+ if a is None:
99
+ a = ngs.GridFunction(u.space)
100
+ while self.time.Get() < end_time * (1-1e-10):
101
+ dt = min(self.dt.Get(), end_time - self.time.Get())
102
+ self.time.Set(self.time.Get() + dt)
103
+ self.Step(u, v, a, dt=dt, newton_args=newton_args)
104
+ if callback is not None:
105
+ callback(self.time.Get(), u)
106
+ return u
107
+
108
+ def Step(self, u: ngs.GridFunction,
109
+ v: ngs.GridFunction,
110
+ a: ngs.GridFunction,
111
+ dt: Optional[float] = None,
112
+ newton_args: Optional[dict] = None):
113
+ if dt is not None:
114
+ self.dt.Set(dt)
115
+ self.gfu_old.vec.data = u.vec
116
+ self.gfv_old.vec.data = v.vec
117
+ self.gfa_old.vec.data = a.vec
118
+ lin_solver = self._lin_solver_cls(mat=self.bfmstar.mat,
119
+ pre=self.c,
120
+ **(self._lin_solver_args or {}))
121
+ newton = ngs.nonlinearsolvers.NewtonSolver(a=self.bfmstar,
122
+ u=u,
123
+ solver=lin_solver)
124
+ newton.Solve(**(newton_args or {}))
125
+ v.vec.data = 2/self.dt.Get() * (u.vec - self.gfu_old.vec) - self.gfv_old.vec
126
+ a.vec.data = 2/self.dt.Get() * (v.vec - self.gfv_old.vec) - self.gfa_old.vec
127
+
128
+
129
+ class CrankNicolson:
130
+ def __init__(self,
131
+ equation: ngs.comp.SumOfIntegrals,
132
+ dt: Union[float, ngs.Parameter],
133
+ time: ngs.Parameter = ngs.Parameter(0),
134
+ pc_cls: Type = ngs.preconditioners.MultiGrid,
135
+ pc_args: Optional[dict] = None,
136
+ lin_solver_cls: Type = ngs.solvers.CGSolver,
137
+ lin_solver_args: Optional[dict] = None):
138
+ self.time = time
139
+ proxies = equation.GetProxies()
140
+ fes = proxies[0].space
141
+ self.dt = ngs.Parameter(dt) if (isinstance(dt, float) or isinstance(dt, int)) else dt
142
+ self.gfu_old = ngs.GridFunction(fes)
143
+ replacements = {}
144
+ for p in proxies:
145
+ if p.dt_order == 1:
146
+ replacements[p] = 1/self.dt * (p.anti_dt - p.anti_dt.ReplaceFunction(self.gfu_old))
147
+ terms = 0.5 * equation.Replace(replacements)
148
+ for p in proxies:
149
+ if p.dt_order == 0:
150
+ replacements[p] = p.ReplaceFunction(self.gfu_old)
151
+ terms += 0.5 * equation.Replace(replacements)
152
+ self.bfmstar = ngs.BilinearForm(terms)
153
+ self.bfmstar.Assemble()
154
+ self.c = pc_cls(self.bfmstar, **(pc_args or {}))
155
+ self._lin_solver_cls = lin_solver_cls
156
+ self._lin_solver_args = lin_solver_args
157
+
158
+ def Integrate(self, u_start: ngs.GridFunction,
159
+ end_time: float,
160
+ start_time: Optional[float] = None,
161
+ newton_args: Optional[dict] = None,
162
+ callback: Optional[Callable] = None):
163
+ u = u_start
164
+ if start_time is not None:
165
+ self.time.Set(start_time)
166
+ while self.time.Get() < end_time * (1-1e-10):
167
+ dt = min(self.dt.Get(), end_time - self.time.Get())
168
+ self.time.Set(self.time.Get() + dt)
169
+ self.Step(u, dt=dt, newton_args=newton_args)
170
+ if callback is not None:
171
+ callback(self.time.Get(), u)
172
+ return u
173
+
174
+ def Step(self, u: ngs.GridFunction, dt: Optional[float] = None,
175
+ newton_args: Optional[dict] = None):
176
+ if dt is not None:
177
+ self.dt.Set(dt)
178
+ self.gfu_old.vec.data = u.vec
179
+ lin_solver = self._lin_solver_cls(mat=self.bfmstar.mat,
180
+ pre=self.c,
181
+ **(self._lin_solver_args or {}))
182
+ newton = ngs.nonlinearsolvers.NewtonSolver(a=self.bfmstar,
183
+ u=u,
184
+ solver=lin_solver)
185
+ newton.Solve(**(newton_args or {}))
@@ -0,0 +1,108 @@
1
+ import os
2
+ import pickle
3
+ from ngsolve import TaskManager
4
+
5
+ class Timing():
6
+ """
7
+ Class for timing analysis of performance critical functions. Some
8
+ classes export a C++ function as __timing__, which returns a map
9
+ of performance critical parts with their timings. The class can save
10
+ these maps, load them and compare them. It can be saved as a benchmark
11
+ to be compared against.
12
+
13
+ 2 overloaded __init__ functions:
14
+
15
+ 1. __init__(name,obj,parallel=True,serial=True)
16
+ 2. __init__(filename)
17
+
18
+ Parameters
19
+ ----------
20
+
21
+ name (str): Name for the timed class (for output formatting and
22
+ saving/loading of results)
23
+ obj (NGSolve object): Some NGSolve class which has the __timing__
24
+ functionality implemented. Currently supported classes:
25
+ FESpace
26
+ filename (str): Filename to load a previously saved Timing
27
+ parallel (bool=True): Time in parallel (using TaskManager)
28
+ serial (bool=True): Time not in parallel (not using TaskManager)
29
+
30
+ """
31
+ def __init__(self,name=None,obj=None,filename=None,parallel=True,serial=True):
32
+ assert (not name and not obj and filename) or (name and obj and not filename)
33
+ if filename:
34
+ myself = pickle.load(open(filename,"rb"))
35
+ self.timings = myself.timings
36
+ self.name = myself.name
37
+ self.timings_par = myself.timings_par
38
+ else:
39
+ if serial:
40
+ self.timings = obj.__timing__()
41
+ else:
42
+ self.timings = None
43
+ if parallel:
44
+ with TaskManager():
45
+ self.timings_par = obj.__timing__()
46
+ else:
47
+ self.timings_par = None
48
+ self.name = name
49
+
50
+ def __str__(self):
51
+ string = "Timing for " + self.name + ":"
52
+ if self.timings:
53
+ for key, value in self.timings:
54
+ string += "\n" + key + ": " + value
55
+ if self.timings_par:
56
+ for key, value in self.timings_par:
57
+ string += "\n" + key + " parallel: " + value
58
+ return string
59
+
60
+ def Save(self, folder):
61
+ """ Saves the pickled results in folder 'folder' """
62
+ if not os.path.exists(folder):
63
+ os.makedirs(folder)
64
+ if folder[-1] == "/":
65
+ pickle.dump(self,open(folder + self.name + ".dat","wb"))
66
+ else:
67
+ pickle.dump(self,open(folder + "/" + self.name + ".dat","wb"))
68
+
69
+ def CompareTo(self,folder):
70
+ """
71
+ Compares the timing with the one saved in folder 'folder' with filename
72
+ 'name.dat'.
73
+ """
74
+ try:
75
+ if folder[-1] == "/":
76
+ other = Timing(filename=folder + self.name + ".dat")
77
+ else:
78
+ other = Timing(filename=folder + "/" + self.name + ".dat")
79
+ except:
80
+ raise Exception("Other timing couldn't be loaded!")
81
+ result = []
82
+ dict_self = { key : value for key,value in self.timings }
83
+ dict_other = { key : value for key,value in other.timings }
84
+ for i, val in enumerate(self.timings):
85
+ try:
86
+ result.append((val[0], dict_self[val[0]]/dict_other[val[0]]))
87
+ except KeyError:
88
+ print("WARNING: No timing for '", val[0], "' in other file!")
89
+ dict_self_par = { key : value for key,value in self.timings_par }
90
+ dict_other_par = { key : value for key,value in other.timings_par }
91
+ for i,val in enumerate(self.timings_par):
92
+ try:
93
+ result.append((val[0]+" parallel", dict_self_par[val[0]]/dict_other_par[val[0]]))
94
+ except KeyError:
95
+ print("WARNING: No timing for '",val[0],"' with parallel in other file!")
96
+ return result
97
+
98
+ def CompareToBenchmark(self):
99
+ """ Compares the timing with the one stored as benchmark"""
100
+ return self.CompareTo("benchmark")
101
+
102
+ def SaveBenchmark(self):
103
+ """ Makes the timing the new benchmark for that object. """
104
+ self.Save("benchmark")
105
+
106
+
107
+ __all__ = ["Timing"]
108
+
@@ -0,0 +1,167 @@
1
+ from ngsolve.ngstd import IntRange
2
+ from ngsolve.fem import *
3
+ from ngsolve.comp import *
4
+ from ngsolve.bla import Norm
5
+ from netgen import TimeFunction, Timer
6
+
7
+ x = CoordCF(0)
8
+ y = CoordCF(1)
9
+ z = CoordCF(2)
10
+
11
+ dx = DifferentialSymbol(VOL)
12
+ ds = DifferentialSymbol(BND)
13
+
14
+
15
+ def Laplace (coef):
16
+ return BFI("laplace", coef=coef)
17
+
18
+ def Mass (coef):
19
+ return BFI("mass", coef=coef)
20
+
21
+ def Source (coef):
22
+ return LFI("source", coef=coef)
23
+
24
+ def Neumann (coef):
25
+ return LFI("neumann", coef=coef)
26
+
27
+
28
+ # VectorFacet = TangentialFacetFESpace
29
+ def VectorFacet (mesh, **args):
30
+ print ("deprecated warning: VectorFacet is renamed to TangentialFacetFESpace")
31
+ return TangentialFacetFESpace(mesh, **args)
32
+
33
+ def grad(func):
34
+ try:
35
+ # now in C++ code
36
+ # if "normal vector" in str(func):
37
+ # return specialcf.Weingarten(func.dim)
38
+ if func.derivname == "grad":
39
+ return func.Deriv()
40
+ except:
41
+ pass
42
+ add = func.Operator("grad")
43
+ if add:
44
+ return add
45
+ # if func.derivname != "grad":
46
+ raise Exception("cannot form grad")
47
+ # return func.Deriv()
48
+
49
+ def Grad(func):
50
+ """ Jacobi-matrix"""
51
+ # now in C++ code
52
+ # if "normal vector" in str(func):
53
+ # return specialcf.Weingarten(func.dim)
54
+ try:
55
+ return func.Operator("Grad")
56
+ except:
57
+ return grad(func).trans
58
+
59
+
60
+
61
+ def curl(func):
62
+ if func.derivname == "curl":
63
+ return func.Deriv()
64
+ add = func.Operator("curl")
65
+ if add:
66
+ return add
67
+ raise Exception("cannot form curl")
68
+
69
+ def div(func):
70
+ if func.derivname == "div":
71
+ return func.Deriv()
72
+ try:
73
+ return func.Operator("div")
74
+ except:
75
+ pass
76
+ try:
77
+ return Trace(grad(func))
78
+ except:
79
+ pass
80
+ #if func.derivname == "grad" and len(func.dims)==2: # should check for square
81
+ # return Trace(grad(func))
82
+ raise Exception("cannot form div")
83
+
84
+
85
+ def ConstantCF(val):
86
+ print ("Warning: ConstantCF deprecated, just use CoefficientFunction(val)")
87
+ return CoefficientFunction(val)
88
+
89
+ def DomainConstantCF(values):
90
+ print ("Warning: DomainConstantCF deprecated, just use CoefficientFunction([values])")
91
+ return CoefficientFunction(values)
92
+
93
+
94
+ def Deviator(mat):
95
+ return mat - 1/mat.dims[0]*Trace(mat)*Id(mat.dims[0])
96
+
97
+
98
+ def PyId(dim):
99
+ return CoefficientFunction( tuple( [1 if i==j else 0 for i in range(dim) for j in range(dim)]), dims=(dim,dim) )
100
+
101
+ def PyTrace(mat):
102
+ return sum( [mat[i,i] for i in range(mat.dims[0]) ])
103
+
104
+ def PyDet(mat):
105
+ if mat.dims[0] == 1:
106
+ return mat[0,0]
107
+ elif mat.dims[0] == 2:
108
+ return mat[0,0]*mat[1,1]-mat[0,1]*mat[1,0]
109
+ elif mat.dims[0] == 3:
110
+ return mat[0,0]*(mat[1,1]*mat[2,2]-mat[1,2]*mat[2,1]) \
111
+ +mat[1,0]*(mat[2,1]*mat[0,2]-mat[2,2]*mat[0,1]) \
112
+ +mat[2,0]*(mat[0,1]*mat[1,2]-mat[0,2]*mat[1,1])
113
+
114
+ def PyCross(a,b):
115
+ return CoefficientFunction( (a[1]*b[2]-a[2]*b[1],a[2]*b[0]-a[0]*b[2],a[0]*b[1]-a[1]*b[0]) )
116
+
117
+ def PyCof(m):
118
+ if m.dims[0] == 1:
119
+ return CoefficientFunction(1, dims=(1,1))
120
+ elif m.dims[0] == 2:
121
+ return CoefficientFunction( (m[1,1], -m[1,0], -m[0,1], m[0,0]), dims=(2,2) )
122
+ elif m.dims[0] == 3:
123
+ return CoefficientFunction(
124
+ ( m[1,1]*m[2,2]-m[2,1]*m[1,2],
125
+ -m[1,0]*m[2,2]+m[2,0]*m[1,2],
126
+ m[1,0]*m[2,1]-m[2,0]*m[1,1],
127
+
128
+ -m[0,1]*m[2,2]+m[2,1]*m[0,2],
129
+ m[0,0]*m[2,2]-m[2,0]*m[0,2],
130
+ -m[0,0]*m[2,1]+m[2,0]*m[0,1],
131
+
132
+ m[0,1]*m[1,2]-m[1,1]*m[0,2],
133
+ -m[0,0]*m[1,2]+m[1,0]*m[0,2],
134
+ m[0,0]*m[1,1]-m[1,0]*m[0,1] ), dims=(3,3) )
135
+
136
+ def PyInv(m):
137
+ return 1/Det(m)*Cof(m).trans
138
+
139
+ def PySym(m):
140
+ return 0.5*(m+m.trans)
141
+
142
+ def PySkew(m):
143
+ return 0.5*(m-m.trans)
144
+
145
+ def OuterProduct(a, b):
146
+ # return CoefficientFunction( (a,), dims=(a.dim,1)) * CoefficientFunction( (b,), dims=(b.dim,1)).trans
147
+ # return CoefficientFunction(a, dims=(a.dim,1)) * CoefficientFunction(b, dims=(1, b.dim))
148
+ return a.Reshape((a.dim,1)) * b.Reshape((1, b.dim))
149
+
150
+
151
+ PrivateSpace = Hidden
152
+ # def PrivateSpace(fes):
153
+ # TODO: make space wrapper which also works after refinement
154
+ # fes.SetCouplingType(IntRange(0,fes.ndof), COUPLING_TYPE.HIDDEN_DOF)
155
+ # return Compress(fes)
156
+ # return Hidden(fes)
157
+
158
+ def Normalize (v):
159
+ return 1/Norm(v) * v
160
+
161
+ def printonce (*args):
162
+ from mpi4py.MPI import COMM_WORLD
163
+ if COMM_WORLD.rank == 0:
164
+ print (*args)
165
+
166
+
167
+ def dt(u): return u.dt