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,850 @@
1
+ #ifndef FILE_SYMBOLICINTEGRATOR
2
+ #define FILE_SYMBOLICINTEGRATOR
3
+
4
+ /*********************************************************************/
5
+ /* File: symbolicintegrator.hpp */
6
+ /* Author: Joachim Schoeberl */
7
+ /* Date: August 2015 */
8
+ /*********************************************************************/
9
+
10
+ namespace ngcomp
11
+ {
12
+ class FESpace;
13
+ }
14
+
15
+
16
+ #include "integrator.hpp"
17
+ #include "coefficient.hpp"
18
+
19
+
20
+ namespace ngfem
21
+ {
22
+
23
+ class NGS_DLL_HEADER ProxyFunction : public CoefficientFunction
24
+ {
25
+ protected:
26
+ shared_ptr<ngcomp::FESpace> fes;
27
+ bool testfunction; // true .. test, false .. trial
28
+ // bool is_complex;
29
+ bool is_other; // neighbour element (DG)
30
+ shared_ptr<ProxyFunction> primaryproxy; // derivatives and traces point to it
31
+ shared_ptr<DifferentialOperator> evaluator;
32
+ shared_ptr<DifferentialOperator> deriv_evaluator;
33
+ shared_ptr<DifferentialOperator> trace_evaluator;
34
+ shared_ptr<DifferentialOperator> trace_deriv_evaluator;
35
+ shared_ptr<DifferentialOperator> ttrace_evaluator;
36
+ shared_ptr<DifferentialOperator> ttrace_deriv_evaluator;
37
+ weak_ptr<ProxyFunction> deriv_proxy; // weak since we point to the primary proxy
38
+ shared_ptr<CoefficientFunction> boundary_values; // for DG - apply
39
+
40
+ SymbolTable<shared_ptr<DifferentialOperator>> additional_diffops;
41
+ mutable SymbolTable<weak_ptr<ProxyFunction>> additional_proxies;
42
+
43
+ mutable weak_ptr<ProxyFunction> dt;
44
+ mutable shared_ptr<ProxyFunction> anti_dt;
45
+ // int dim;
46
+ public:
47
+ ProxyFunction (shared_ptr<ngcomp::FESpace> afes,
48
+ bool atestfunction, bool ais_complex,
49
+ shared_ptr<DifferentialOperator> aevaluator,
50
+ shared_ptr<DifferentialOperator> aderiv_evaluator,
51
+ shared_ptr<DifferentialOperator> atrace_evaluator,
52
+ shared_ptr<DifferentialOperator> atrace_deriv_evaluator,
53
+ shared_ptr<DifferentialOperator> attrace_evaluator,
54
+ shared_ptr<DifferentialOperator> attrace_deriv_evaluator);
55
+
56
+ ProxyFunction (const ProxyFunction &) = default;
57
+
58
+ bool IsTrialFunction () const { return !testfunction; }
59
+ bool IsTestFunction () const { return testfunction; }
60
+ bool IsOther() const { return is_other; }
61
+
62
+ string GetDescription () const override;
63
+
64
+ void GenerateCode(Code &code, FlatArray<int> inputs, int index) const override;
65
+
66
+ const shared_ptr<DifferentialOperator> & Evaluator() const { return evaluator; }
67
+ const shared_ptr<DifferentialOperator> & DerivEvaluator() const { return deriv_evaluator; }
68
+ const shared_ptr<DifferentialOperator> & TraceEvaluator() const { return trace_evaluator; }
69
+ const shared_ptr<DifferentialOperator> & TraceDerivEvaluator() const { return trace_deriv_evaluator; }
70
+ const shared_ptr<DifferentialOperator> & TTraceEvaluator() const { return ttrace_evaluator; }
71
+ const shared_ptr<DifferentialOperator> & TTraceDerivEvaluator() const { return ttrace_deriv_evaluator; }
72
+
73
+ shared_ptr<ProxyFunction> Deriv() const;
74
+ shared_ptr<ProxyFunction> Trace() const;
75
+ shared_ptr<CoefficientFunction> Primary() const override
76
+ { return primaryproxy; }
77
+
78
+ shared_ptr<ProxyFunction> Dt() const;
79
+ shared_ptr<ProxyFunction> AntiDt() const;
80
+ int OrderDt() const;
81
+
82
+
83
+ shared_ptr<ProxyFunction> Other(shared_ptr<CoefficientFunction> _boundary_values) const;
84
+
85
+ const shared_ptr<CoefficientFunction> & BoundaryValues() const { return boundary_values; }
86
+
87
+ void SetAdditionalEvaluator (string name, shared_ptr<DifferentialOperator> diffop)
88
+ {
89
+ additional_diffops.Set (name, diffop);
90
+ }
91
+
92
+ virtual shared_ptr<DifferentialOperator> GetAdditionalEvaluator (string name) const
93
+ {
94
+ if (additional_diffops.Used(name))
95
+ return additional_diffops[name];
96
+ return nullptr; // shared_ptr<DifferentialOperator>();
97
+ }
98
+
99
+ SymbolTable<shared_ptr<DifferentialOperator>> GetAdditionalEvaluators () const
100
+ {
101
+ return additional_diffops;
102
+ }
103
+
104
+ virtual shared_ptr<ProxyFunction> GetAdditionalProxy (string name) const;
105
+
106
+ shared_ptr<CoefficientFunction> Operator (const string & name) const override;
107
+ shared_ptr<CoefficientFunction> Operator (shared_ptr<DifferentialOperator> diffop) const override;
108
+
109
+ const shared_ptr<ngcomp::FESpace> & GetFESpace() const { return fes; }
110
+ void SetFESpace(shared_ptr<ngcomp::FESpace> fespace) { fes = fespace; }
111
+
112
+ virtual double Evaluate (const BaseMappedIntegrationPoint & ip) const override
113
+ {
114
+ // Vector<> tmp(Dimension());
115
+ STACK_ARRAY(double, mem, Dimension());
116
+ FlatVector<> tmp(Dimension(), &mem[0]);
117
+ Evaluate (ip, tmp);
118
+ return tmp(0);
119
+ }
120
+
121
+ virtual void Evaluate (const BaseMappedIntegrationPoint & ip,
122
+ FlatVector<> result) const override;
123
+
124
+ virtual void Evaluate (const BaseMappedIntegrationPoint & ip,
125
+ FlatVector<Complex> result) const override;
126
+
127
+ virtual void Evaluate (const BaseMappedIntegrationRule & ir,
128
+ BareSliceMatrix<> result) const override;
129
+
130
+ virtual void Evaluate (const BaseMappedIntegrationRule & ir,
131
+ BareSliceMatrix<Complex> result) const override;
132
+
133
+ // virtual void Evaluate (const SIMD_BaseMappedIntegrationRule & ir,
134
+ // AFlatMatrix<double> values) const;
135
+
136
+ virtual void Evaluate (const SIMD_BaseMappedIntegrationRule & ir,
137
+ BareSliceMatrix<SIMD<double>> values) const override;
138
+ virtual void Evaluate (const SIMD_BaseMappedIntegrationRule & ir,
139
+ BareSliceMatrix<SIMD<Complex>> values) const override;
140
+
141
+ /*
142
+ virtual void Evaluate (const SIMD_BaseMappedIntegrationRule & ir,
143
+ FlatArray<AFlatMatrix<double>*> input,
144
+ AFlatMatrix<double> values) const override;
145
+
146
+ virtual void EvaluateDeriv (const BaseMappedIntegrationRule & mir,
147
+ FlatMatrix<> result,
148
+ FlatMatrix<> deriv) const override;
149
+
150
+ virtual void EvaluateDDeriv (const BaseMappedIntegrationRule & mir,
151
+ FlatMatrix<> result,
152
+ FlatMatrix<> deriv,
153
+ FlatMatrix<> dderiv) const override;
154
+
155
+ virtual void EvaluateDeriv (const SIMD_BaseMappedIntegrationRule & ir,
156
+ AFlatMatrix<double> values, AFlatMatrix<double> deriv) const override;
157
+
158
+ virtual void EvaluateDDeriv (const SIMD_BaseMappedIntegrationRule & ir,
159
+ AFlatMatrix<double> values, AFlatMatrix<double> deriv,
160
+ AFlatMatrix<double> dderiv) const override;
161
+ */
162
+ virtual void Evaluate (const SIMD_BaseMappedIntegrationRule & ir,
163
+ FlatArray<BareSliceMatrix<SIMD<double>>> input,
164
+ BareSliceMatrix<SIMD<double>> values) const override
165
+ {
166
+ ProxyFunction::Evaluate (ir, values);
167
+ }
168
+
169
+ virtual void Evaluate (const BaseMappedIntegrationRule & ir,
170
+ BareSliceMatrix<AutoDiff<1,double>> values) const override;
171
+
172
+ virtual void Evaluate (const BaseMappedIntegrationRule & ir,
173
+ BareSliceMatrix<AutoDiffDiff<1,double>> values) const override;
174
+
175
+ virtual void Evaluate (const SIMD_BaseMappedIntegrationRule & ir,
176
+ BareSliceMatrix<AutoDiff<1,SIMD<double>>> values) const override;
177
+
178
+ virtual void Evaluate (const SIMD_BaseMappedIntegrationRule & ir,
179
+ FlatArray<BareSliceMatrix<AutoDiff<1,SIMD<double>>>> input,
180
+ BareSliceMatrix<AutoDiff<1,SIMD<double>>> values) const override
181
+ {
182
+ ProxyFunction::Evaluate (ir, values);
183
+ }
184
+
185
+ virtual void Evaluate (const SIMD_BaseMappedIntegrationRule & ir,
186
+ BareSliceMatrix<AutoDiffDiff<1,SIMD<double>>> values) const override;
187
+
188
+ virtual void Evaluate (const SIMD_BaseMappedIntegrationRule & ir,
189
+ FlatArray<BareSliceMatrix<AutoDiffDiff<1,SIMD<double>>>> input,
190
+ BareSliceMatrix<AutoDiffDiff<1,SIMD<double>>> values) const override
191
+ {
192
+ ProxyFunction::Evaluate (ir, values);
193
+ }
194
+
195
+ /*
196
+ virtual void EvaluateDeriv (const SIMD_BaseMappedIntegrationRule & ir,
197
+ FlatArray<AFlatMatrix<>*> input,
198
+ FlatArray<AFlatMatrix<>*> dinput,
199
+ AFlatMatrix<> result,
200
+ AFlatMatrix<> deriv) const override
201
+ {
202
+ EvaluateDeriv (ir, result, deriv);
203
+ }
204
+
205
+ virtual void EvaluateDDeriv (const SIMD_BaseMappedIntegrationRule & ir,
206
+ FlatArray<AFlatMatrix<>*> input,
207
+ FlatArray<AFlatMatrix<>*> dinput,
208
+ FlatArray<AFlatMatrix<>*> ddinput,
209
+ AFlatMatrix<> result,
210
+ AFlatMatrix<> deriv,
211
+ AFlatMatrix<> dderiv) const override
212
+ {
213
+ EvaluateDDeriv (ir, result, deriv, dderiv);
214
+ }
215
+ */
216
+
217
+ // virtual bool ElementwiseConstant () const override{ return true; }
218
+
219
+ // the old one, to be replaced
220
+ void NonZeroPattern (const class ProxyUserData & ud,
221
+ FlatVector<bool> nonzero,
222
+ FlatVector<bool> nonzero_deriv,
223
+ FlatVector<bool> nonzero_dderiv) const;
224
+
225
+ virtual void NonZeroPattern (const class ProxyUserData & ud,
226
+ FlatVector<AutoDiffDiff<1,NonZero>> values) const override;
227
+
228
+ virtual void NonZeroPattern (const class ProxyUserData & ud,
229
+ FlatArray<FlatVector<AutoDiffDiff<1,NonZero>>> input,
230
+ FlatVector<AutoDiffDiff<1,NonZero>> values) const override
231
+ {
232
+ NonZeroPattern (ud, values);
233
+ /*
234
+ Vector<bool> nz(values.Size()), nzd(values.Size()), nzdd(values.Size());
235
+ NonZeroPattern (ud, nz, nzd, nzdd);
236
+ for (size_t i = 0; i < values.Size(); i++)
237
+ {
238
+ values(i).Value() = nz(i);
239
+ values(i).DValue(0) = nzd(i);
240
+ values(i).DDValue(0) = nzdd(i);
241
+ }
242
+ */
243
+ }
244
+
245
+
246
+ virtual shared_ptr<CoefficientFunction>
247
+ Diff (const CoefficientFunction * var, shared_ptr<CoefficientFunction> dir) const override;
248
+ };
249
+
250
+
251
+ class SumOfIntegrals;
252
+ class DualProxyFunction : public ProxyFunction
253
+ {
254
+ public:
255
+ DualProxyFunction(const ProxyFunction & proxy)
256
+ : ProxyFunction(proxy) { ; }
257
+
258
+ shared_ptr<SumOfIntegrals> operator() (shared_ptr<CoefficientFunction> u) const;
259
+ };
260
+
261
+
262
+
263
+ class ProxyUserData
264
+ {
265
+ FlatArray<const ProxyFunction*> remember_first;
266
+ FlatArray<FlatMatrix<double>> remember_second;
267
+ FlatArray<FlatMatrix<SIMD<double>>> remember_asecond;
268
+
269
+ FlatArray<const CoefficientFunction*> remember_cf_first;
270
+ FlatArray<FlatMatrix<double>> remember_cf_second;
271
+ FlatArray<FlatMatrix<SIMD<double>>> remember_cf_asecond;
272
+ FlatArray<bool> remember_cf_computed;
273
+ public:
274
+ class ProxyFunction * testfunction = nullptr;
275
+ int test_comp;
276
+ class ProxyFunction * trialfunction = nullptr;
277
+ int trial_comp;
278
+ int eval_deriv = 0; // 0 .. evaluate bfi, 1 .. deriv, 2 .. second order deriv
279
+ const FiniteElement * fel = nullptr;
280
+ FlatArray<pair<const CoefficientFunction*, void*>> caches;
281
+
282
+ FlatVector<double> *trial_elvec = nullptr, *test_elvec = nullptr; // for shape-wise evaluate
283
+ LocalHeap * lh = nullptr;
284
+
285
+
286
+ ProxyUserData ()
287
+ : remember_first(0,nullptr), remember_second(0,nullptr), remember_asecond(0,nullptr),
288
+ remember_cf_first(0, nullptr), remember_cf_second(0,nullptr),remember_cf_asecond(0,nullptr), remember_cf_computed(0, nullptr)
289
+ { ; }
290
+ ProxyUserData (size_t ntrial, size_t ncf, LocalHeap & lh)
291
+ : remember_first(ntrial, lh), remember_second(ntrial, lh),
292
+ remember_asecond(ntrial, lh),
293
+ remember_cf_first(ncf, lh), remember_cf_second(ncf, lh),
294
+ remember_cf_asecond(ncf, lh),
295
+ remember_cf_computed(ncf, lh)
296
+ { remember_first = nullptr; remember_cf_first = nullptr; }
297
+
298
+ ProxyUserData (int ntrial, LocalHeap & lh)
299
+ : ProxyUserData (ntrial, 0, lh) { ; }
300
+
301
+ void AssignMemory (const ProxyFunction * proxy, size_t h, size_t w, LocalHeap & lh)
302
+ {
303
+ for (size_t i = 0; i < remember_first.Size(); i++)
304
+ {
305
+ if (remember_first[i] == nullptr)
306
+ {
307
+ remember_first[i] = proxy;
308
+ new (&remember_second[i]) FlatMatrix<> (h, w, lh);
309
+ new (&remember_asecond[i]) FlatMatrix<SIMD<double>> (w, (h+SIMD<double>::Size()-1)/SIMD<double>::Size(), lh);
310
+ return;
311
+ }
312
+ }
313
+ throw Exception ("no space for userdata - memory available");
314
+ }
315
+
316
+ void AssignMemory (const ProxyFunction * proxy, FlatMatrix<SIMD<double>> mat)
317
+ {
318
+ for (size_t i = 0; i < remember_first.Size(); i++)
319
+ {
320
+ if (remember_first[i] == nullptr || remember_first[i] == proxy)
321
+ {
322
+ remember_first[i] = proxy;
323
+ new (&remember_asecond[i]) FlatMatrix<SIMD<double>> (mat);
324
+ return;
325
+ }
326
+ }
327
+ throw Exception ("no space for userdata - memory available");
328
+ }
329
+
330
+
331
+ void AssignMemory (const CoefficientFunction * cf, size_t h, size_t w, LocalHeap & lh)
332
+ {
333
+ for (size_t i = 0; i < remember_cf_first.Size(); i++)
334
+ {
335
+ if (remember_cf_first[i] == nullptr)
336
+ {
337
+ remember_cf_first[i] = cf;
338
+ new (&remember_cf_second[i]) FlatMatrix<double> (h, w, lh);
339
+ new (&remember_cf_asecond[i]) FlatMatrix<SIMD<double>> (w, (h+SIMD<double>::Size()-1)/SIMD<double>::Size(), lh);
340
+ remember_cf_computed[i] = false;
341
+ return;
342
+ }
343
+ }
344
+ throw Exception ("no space for userdata - memory available");
345
+ }
346
+
347
+ void AssignMemory (const CoefficientFunction * cf, FlatMatrix<SIMD<double>> mat)
348
+ {
349
+ for (size_t i = 0; i < remember_cf_first.Size(); i++)
350
+ {
351
+ if (remember_cf_first[i] == nullptr || remember_cf_first[i] == cf)
352
+ {
353
+ remember_cf_first[i] = cf;
354
+ new (&remember_cf_asecond[i]) FlatMatrix<SIMD<double>> (mat);
355
+ remember_cf_computed[i] = true;
356
+ return;
357
+ }
358
+ }
359
+ throw Exception ("no space for userdata - memory available");
360
+ }
361
+
362
+
363
+
364
+ bool HasMemory (const ProxyFunction * proxy) const
365
+ {
366
+ return remember_first.Contains(proxy);
367
+ }
368
+ bool HasMemory (const CoefficientFunction * cf) const
369
+ {
370
+ return remember_cf_first.Contains(cf);
371
+ }
372
+ FlatMatrix<> GetMemory (const ProxyFunction * proxy) const
373
+ {
374
+ return remember_second[remember_first.PosSure(proxy)];
375
+ }
376
+ FlatMatrix<SIMD<double>> GetAMemory (const ProxyFunction * proxy) const
377
+ {
378
+ return remember_asecond[remember_first.PosSure(proxy)];
379
+ }
380
+ FlatMatrix<double> GetMemory (const CoefficientFunction * cf) const
381
+ {
382
+ return remember_cf_second[remember_cf_first.PosSure(cf)];
383
+ }
384
+ FlatMatrix<SIMD<double>> GetAMemory (const CoefficientFunction * cf) const
385
+ {
386
+ return remember_cf_asecond[remember_cf_first.PosSure(cf)];
387
+ }
388
+ bool Computed (const CoefficientFunction * cf) const
389
+ {
390
+ return remember_cf_computed[remember_cf_first.PosSure(cf)];
391
+ }
392
+ void SetComputed (const CoefficientFunction * cf, bool val = true) const
393
+ {
394
+ remember_cf_computed[remember_cf_first.PosSure(cf)] = val;
395
+ }
396
+ };
397
+
398
+
399
+
400
+
401
+
402
+
403
+
404
+ class SymbolicLinearFormIntegrator : public LinearFormIntegrator
405
+ {
406
+ protected:
407
+ shared_ptr<CoefficientFunction> cf;
408
+ Array<ProxyFunction*> proxies;
409
+ Array<CoefficientFunction*> gridfunction_cfs;
410
+ Array<CoefficientFunction*> cache_cfs;
411
+ Array<shared_ptr<CoefficientFunction>> dcf_dtest;
412
+
413
+ VorB vb;
414
+ // bool element_boundary;
415
+ VorB element_vb;
416
+
417
+ public:
418
+ NGS_DLL_HEADER SymbolicLinearFormIntegrator (shared_ptr<CoefficientFunction> acf, VorB avb,
419
+ VorB aelement_vb);
420
+
421
+ virtual VorB VB() const override { return vb; }
422
+ virtual string Name () const override { return string ("Symbolic LFI"); }
423
+ virtual int GetDimension() const override { return proxies[0]->Evaluator()->BlockDim(); }
424
+
425
+ virtual void
426
+ CalcElementVector (const FiniteElement & fel,
427
+ const ElementTransformation & trafo,
428
+ FlatVector<double> elvec,
429
+ LocalHeap & lh) const override;
430
+
431
+ virtual void
432
+ CalcElementVector (const FiniteElement & fel,
433
+ const ElementTransformation & trafo,
434
+ FlatVector<Complex> elvec,
435
+ LocalHeap & lh) const override;
436
+
437
+ template <typename SCAL>
438
+ void T_CalcElementVector (const FiniteElement & fel,
439
+ const ElementTransformation & trafo,
440
+ FlatVector<SCAL> elvec,
441
+ LocalHeap & lh) const;
442
+ };
443
+
444
+
445
+
446
+ class SymbolicBilinearFormIntegrator : public BilinearFormIntegrator
447
+ {
448
+ protected:
449
+ shared_ptr<CoefficientFunction> cf;
450
+ Array<ProxyFunction*> trial_proxies, test_proxies;
451
+ Array<CoefficientFunction*> gridfunction_cfs;
452
+ Array<CoefficientFunction*> cache_cfs;
453
+ Array<int> trial_cum, test_cum; // cumulated dimension of proxies
454
+ VorB vb; // on the boundary of the domain ?
455
+ // bool element_boundary;
456
+ VorB element_vb; // on the boundary of the element ?
457
+ Matrix<bool> nonzeros; // do components interact ?
458
+ Matrix<bool> nonzeros_deriv; // do components interact ?
459
+ Matrix<bool> nonzeros_proxies; // do proxies interact ?
460
+ Matrix<bool> diagonal_proxies; // do proxies interact diagonally ?
461
+ Matrix<bool> same_diffops; // are diffops the same ?
462
+ bool elementwise_constant;
463
+
464
+ int trial_difforder, test_difforder;
465
+ bool is_symmetric;
466
+ bool has_interpolate; // is there an interpolate in the expression tree ?
467
+ shared_ptr<BilinearFormIntegrator> linearization;
468
+ Array<shared_ptr<CoefficientFunction>> dcf_dtest; // derivatives by test-functions
469
+ Matrix<shared_ptr<CoefficientFunction>> ddcf_dtest_dtrial; // derivatives by test- and trial-functions
470
+ public:
471
+ NGS_DLL_HEADER SymbolicBilinearFormIntegrator (shared_ptr<CoefficientFunction> acf, VorB avb,
472
+ VorB aelement_boundary);
473
+
474
+ virtual VorB VB() const override { return vb; }
475
+ virtual VorB ElementVB() const { return element_vb; }
476
+ virtual xbool IsSymmetric() const override { return is_symmetric ? xbool(true) : xbool(maybe); }
477
+ virtual string Name () const override { return string ("Symbolic BFI"); }
478
+
479
+ using Integrator::GetIntegrationRule;
480
+ NGS_DLL_HEADER virtual const IntegrationRule& GetIntegrationRule (const FiniteElement & fel, LocalHeap & lh) const;
481
+ NGS_DLL_HEADER virtual const SIMD_IntegrationRule& Get_SIMD_IntegrationRule (const FiniteElement & fel, LocalHeap & lh) const;
482
+ // virtual IntegrationRule GetIntegrationRuleEB (const FiniteElement & fel, int facetnr, LocalHeap & lh) const;
483
+ // virtual SIMD_IntegrationRule Get_SIMD_IntegrationRuleEB (const FiniteElement & fel, int facetnr, LocalHeap & lh) const;
484
+
485
+ virtual int GetDimension() const override { return trial_proxies[0]->Evaluator()->BlockDim(); }
486
+ void SetLinearization(shared_ptr<BilinearFormIntegrator> _lin)
487
+ { linearization = _lin; }
488
+
489
+ NGS_DLL_HEADER virtual void
490
+ CalcElementMatrix (const FiniteElement & fel,
491
+ const ElementTransformation & trafo,
492
+ FlatMatrix<double> elmat,
493
+ LocalHeap & lh) const override;
494
+
495
+ NGS_DLL_HEADER virtual void
496
+ CalcElementMatrix (const FiniteElement & fel,
497
+ const ElementTransformation & trafo,
498
+ FlatMatrix<Complex> elmat,
499
+ LocalHeap & lh) const override;
500
+
501
+ NGS_DLL_HEADER virtual void
502
+ CalcElementMatrixAdd (const FiniteElement & fel,
503
+ const ElementTransformation & trafo,
504
+ FlatMatrix<double> elmat,
505
+ bool & symmetric_so_far,
506
+ LocalHeap & lh) const override;
507
+
508
+ NGS_DLL_HEADER virtual void
509
+ CalcElementMatrixAdd (const FiniteElement & fel,
510
+ const ElementTransformation & trafo,
511
+ FlatMatrix<Complex> elmat,
512
+ bool & symmetric_so_far,
513
+ LocalHeap & lh) const override;
514
+
515
+
516
+ template <typename SCAL, typename SCAL_SHAPES, typename SCAL_RES>
517
+ void T_CalcElementMatrixAdd (const FiniteElement & fel,
518
+ const ElementTransformation & trafo,
519
+ FlatMatrix<SCAL_RES> elmat,
520
+ bool & symmetric_so_far,
521
+ LocalHeap & lh) const;
522
+
523
+ template <typename SCAL, typename SCAL_SHAPES, typename SCAL_RES>
524
+ void T_CalcElementMatrixEBAdd (const FiniteElement & fel,
525
+ const ElementTransformation & trafo,
526
+ FlatMatrix<SCAL_RES> elmat,
527
+ LocalHeap & lh) const;
528
+
529
+ template <typename SCAL, typename SCAL_SHAPES, typename SCAL_RES>
530
+ void T_CalcElementMatrixAddShapeWise (const FiniteElement & fel,
531
+ const ElementTransformation & trafo,
532
+ FlatMatrix<SCAL_RES> elmat,
533
+ LocalHeap & lh) const;
534
+
535
+
536
+ NGS_DLL_HEADER virtual void
537
+ CalcLinearizedElementMatrix (const FiniteElement & fel,
538
+ const ElementTransformation & trafo,
539
+ FlatVector<double> elveclin,
540
+ FlatMatrix<double> elmat,
541
+ LocalHeap & lh) const override;
542
+
543
+ NGS_DLL_HEADER virtual void
544
+ CalcLinearizedElementMatrix (const FiniteElement & fel,
545
+ const ElementTransformation & trafo,
546
+ FlatVector<Complex> elveclin,
547
+ FlatMatrix<Complex> elmat,
548
+ LocalHeap & lh) const override;
549
+
550
+ template<typename SCAL> void
551
+ T_CalcLinearizedElementMatrixFrozen (const FiniteElement & fel,
552
+ const ElementTransformation & trafo,
553
+ FlatVector<SCAL> elveclin,
554
+ FlatMatrix<SCAL> elmat,
555
+ LocalHeap & lh) const;
556
+
557
+ template <typename SCAL, typename SCAL_SHAPES>
558
+ void T_CalcLinearizedElementMatrixEB (const FiniteElement & fel,
559
+ const ElementTransformation & trafo,
560
+ FlatVector<double> elveclin,
561
+ FlatMatrix<double> elmat,
562
+ LocalHeap & lh) const;
563
+
564
+ NGS_DLL_HEADER virtual void
565
+ ApplyElementMatrix (const FiniteElement & fel,
566
+ const ElementTransformation & trafo,
567
+ const FlatVector<double> elx,
568
+ FlatVector<double> ely,
569
+ void * precomputed,
570
+ LocalHeap & lh) const override;
571
+
572
+ template <typename SCAL, typename SCAL_SHAPES>
573
+ void T_ApplyElementMatrixEB (const FiniteElement & fel,
574
+ const ElementTransformation & trafo,
575
+ const FlatVector<double> elx,
576
+ FlatVector<double> ely,
577
+ void * precomputed,
578
+ LocalHeap & lh) const;
579
+
580
+ NGS_DLL_HEADER virtual void
581
+ ApplyElementMatrixTrans (const FiniteElement & fel,
582
+ const ElementTransformation & trafo,
583
+ const FlatVector<double> elx,
584
+ FlatVector<double> ely,
585
+ void * precomputed,
586
+ LocalHeap & lh) const override;
587
+
588
+ template <typename SCAL, typename SCAL_SHAPES>
589
+ void T_ApplyElementMatrixTransEB (const FiniteElement & fel,
590
+ const ElementTransformation & trafo,
591
+ const FlatVector<double> elx,
592
+ FlatVector<double> ely,
593
+ void * precomputed,
594
+ LocalHeap & lh) const;
595
+
596
+
597
+ const auto & GetCoefficientFunction() { return cf; }
598
+ const auto & TrialProxies() { return trial_proxies; }
599
+ const auto & TestProxies() { return test_proxies; }
600
+ const auto & GridFunctionCoefficients() { return gridfunction_cfs; }
601
+ };
602
+
603
+
604
+
605
+ class SymbolicFacetLinearFormIntegrator : public FacetLinearFormIntegrator
606
+ {
607
+ protected:
608
+ shared_ptr<CoefficientFunction> cf;
609
+ Array<ProxyFunction*> proxies;
610
+ Array<CoefficientFunction*> cache_cfs;
611
+ Array<int> test_cum; // cumulated dimension of proxies
612
+ VorB vb; // only BND supported by now
613
+ // bool element_boundary; /// not needed (by now ???)
614
+ IntegrationRule ir; // if non-empty use this integration-rule
615
+ SIMD_IntegrationRule simd_ir; // if non-empty use this integration-rule
616
+
617
+ public:
618
+ NGS_DLL_HEADER SymbolicFacetLinearFormIntegrator (shared_ptr<CoefficientFunction> acf, VorB avb);
619
+
620
+ virtual VorB VB() const override { return vb; }
621
+ virtual bool BoundaryForm() const override { return vb == BND; }
622
+
623
+ NGS_DLL_HEADER void
624
+ CalcFacetVector (const FiniteElement & volumefel1, int LocalFacetNr1,
625
+ const ElementTransformation & eltrans1, FlatArray<int> & ElVertices1,
626
+ const FiniteElement & volumefel2, int LocalFacetNr2,
627
+ const ElementTransformation & eltrans2, FlatArray<int> & ElVertices2,
628
+ FlatVector<double> elvec,
629
+ LocalHeap & lh) const override;
630
+
631
+ NGS_DLL_HEADER void
632
+ CalcFacetVector (const FiniteElement & volumefel1, int LocalFacetNr1,
633
+ const ElementTransformation & eltrans1, FlatArray<int> & ElVertices1,
634
+ const FiniteElement & volumefel2, int LocalFacetNr2,
635
+ const ElementTransformation & eltrans2, FlatArray<int> & ElVertices2,
636
+ FlatVector<Complex> elvec,
637
+ LocalHeap & lh) const override;
638
+
639
+ NGS_DLL_HEADER void
640
+ CalcFacetVector(const FiniteElement & volumefel, int LocalFacetNr,
641
+ const ElementTransformation & eltrans, FlatArray<int> & ElVertices,
642
+ const ElementTransformation & seltrans,
643
+ FlatVector<double> elvec,
644
+ LocalHeap & lh) const override;
645
+
646
+ NGS_DLL_HEADER void
647
+ CalcFacetVector(const FiniteElement & volumefel, int LocalFacetNr,
648
+ const ElementTransformation & eltrans, FlatArray<int> & ElVertices,
649
+ const ElementTransformation & seltrans,
650
+ FlatVector<Complex> elvec,
651
+ LocalHeap & lh) const override;
652
+
653
+ private:
654
+ template<typename TSCAL>
655
+ void T_CalcFacetVector (const FiniteElement & fel1, int LocalFacetNr1,
656
+ const ElementTransformation & trafo1, FlatArray<int> & ElVertices1,
657
+ const FiniteElement & fel2, int LocalFacetNr2,
658
+ const ElementTransformation & trafo2, FlatArray<int> & ElVertices2,
659
+ FlatVector<TSCAL> elvec,
660
+ LocalHeap &lh) const;
661
+
662
+ template<typename TSCAL>
663
+ void T_CalcFacetVector (const FiniteElement & volumefel, int LocalFacetNr,
664
+ const ElementTransformation & eltrans, FlatArray<int> & ElVertices,
665
+ const ElementTransformation & seltrans,
666
+ FlatVector<TSCAL> elvec,
667
+ LocalHeap & lh) const;
668
+ };
669
+
670
+
671
+
672
+
673
+ class SymbolicFacetBilinearFormIntegrator : public FacetBilinearFormIntegrator
674
+ {
675
+ protected:
676
+ shared_ptr<CoefficientFunction> cf;
677
+ Array<ProxyFunction*> trial_proxies, test_proxies;
678
+ Array<CoefficientFunction*> gridfunction_cfs;
679
+ Array<CoefficientFunction*> cache_cfs;
680
+ Array<int> trial_cum, test_cum; // cumulated dimension of proxies
681
+ VorB vb;
682
+ bool element_boundary;
683
+ bool neighbor_testfunction;
684
+ Array<shared_ptr<CoefficientFunction>> dcf_dtest; // derivatives by test-functions
685
+ public:
686
+ NGS_DLL_HEADER SymbolicFacetBilinearFormIntegrator (shared_ptr<CoefficientFunction> acf, VorB avb, bool aelement_boundary);
687
+
688
+ virtual VorB VB() const { return vb; }
689
+ virtual bool BoundaryForm() const { return vb == BND; }
690
+ virtual xbool IsSymmetric() const { return maybe; }
691
+
692
+ virtual DGFormulation GetDGFormulation() const { return DGFormulation(neighbor_testfunction,
693
+ element_boundary); }
694
+
695
+ NGS_DLL_HEADER virtual void
696
+ CalcFacetMatrix (const FiniteElement & volumefel1, int LocalFacetNr1,
697
+ const ElementTransformation & eltrans1, FlatArray<int> & ElVertices1,
698
+ const FiniteElement & volumefel2, int LocalFacetNr2,
699
+ const ElementTransformation & eltrans2, FlatArray<int> & ElVertices2,
700
+ FlatMatrix<double> elmat,
701
+ LocalHeap & lh) const;
702
+
703
+ NGS_DLL_HEADER virtual void
704
+ CalcFacetMatrix (const FiniteElement & volumefel, int LocalFacetNr,
705
+ const ElementTransformation & eltrans, FlatArray<int> & ElVertices,
706
+ const ElementTransformation & seltrans, FlatArray<int> & SElVertices,
707
+ FlatMatrix<double> elmat,
708
+ LocalHeap & lh) const;
709
+
710
+ NGS_DLL_HEADER virtual void
711
+ CalcFacetMatrix (const FiniteElement & volumefel1, int LocalFacetNr1,
712
+ const ElementTransformation & eltrans1, FlatArray<int> & ElVertices1,
713
+ const FiniteElement & volumefel2, int LocalFacetNr2,
714
+ const ElementTransformation & eltrans2, FlatArray<int> & ElVertices2,
715
+ FlatMatrix<Complex> elmat,
716
+ LocalHeap & lh) const;
717
+
718
+ NGS_DLL_HEADER virtual void
719
+ CalcFacetMatrix (const FiniteElement & volumefel, int LocalFacetNr,
720
+ const ElementTransformation & eltrans, FlatArray<int> & ElVertices,
721
+ const ElementTransformation & seltrans, FlatArray<int> & SElVertices,
722
+ FlatMatrix<Complex> elmat,
723
+ LocalHeap & lh) const;
724
+
725
+ NGS_DLL_HEADER virtual void
726
+ CalcLinearizedFacetMatrix (const FiniteElement & volumefel, int LocalFacetNr,
727
+ const ElementTransformation & eltrans, FlatArray<int> & ElVertices,
728
+ const ElementTransformation & seltrans, FlatArray<int> & SElVertices,
729
+ FlatVector<double> vec, FlatMatrix<double> elmat,
730
+ LocalHeap & lh) const;
731
+
732
+ NGS_DLL_HEADER virtual void
733
+ ApplyFacetMatrix (const FiniteElement & volumefel1, int LocalFacetNr1,
734
+ const ElementTransformation & eltrans1, FlatArray<int> & ElVertices1,
735
+ const FiniteElement & volumefel2, int LocalFacetNr2,
736
+ const ElementTransformation & eltrans2, FlatArray<int> & ElVertices2,
737
+ FlatVector<double> elx, FlatVector<double> ely,
738
+ LocalHeap & lh) const;
739
+
740
+ NGS_DLL_HEADER virtual void
741
+ CalcTraceValues (const FiniteElement & volumefel, int LocalFacetNr,
742
+ const ElementTransformation & eltrans, FlatArray<int> & ElVertices,
743
+ FlatVector<double> & trace, FlatVector<double> elx, LocalHeap & lh) const;
744
+
745
+ NGS_DLL_HEADER virtual void
746
+ ApplyFromTraceValues (const FiniteElement & volumefel, int LocalFacetNr,
747
+ const ElementTransformation & eltrans, FlatArray<int> & ElVertices,
748
+ FlatVector<double> trace,
749
+ FlatVector<double> elx, FlatVector<double> ely,
750
+ LocalHeap & lh) const;
751
+
752
+ NGS_DLL_HEADER virtual void
753
+ ApplyFacetMatrix (const FiniteElement & volumefel, int LocalFacetNr,
754
+ const ElementTransformation & eltrans, FlatArray<int> & ElVertices,
755
+ const ElementTransformation & seltrans, FlatArray<int> & SElVertices,
756
+ FlatVector<double> elx, FlatVector<double> ely,
757
+ LocalHeap & lh) const;
758
+
759
+ private:
760
+ template<typename TSCAL, typename SCAL_SHAPES = double>
761
+ void T_CalcFacetMatrix(const FiniteElement & volumefel1, int LocalFacetNr1,
762
+ const ElementTransformation & eltrans1, FlatArray<int> & ElVertices1,
763
+ const FiniteElement & volumefel2, int LocalFacetNr2,
764
+ const ElementTransformation & eltrans2, FlatArray<int> & ElVertices2,
765
+ FlatMatrix<TSCAL> elmat,
766
+ LocalHeap & lh) const;
767
+
768
+ template<typename TSCAL, typename SCAL_SHAPES = double>
769
+ void T_CalcFacetMatrix(const FiniteElement & volumefel, int LocalFacetNr,
770
+ const ElementTransformation & eltrans, FlatArray<int> & ElVertices,
771
+ const ElementTransformation & seltrans, FlatArray<int> & SElVertices,
772
+ FlatMatrix<TSCAL> elmat,
773
+ LocalHeap & lh) const;
774
+ };
775
+
776
+ class SymbolicEnergy : public BilinearFormIntegrator
777
+ {
778
+ protected:
779
+ shared_ptr<CoefficientFunction> cf;
780
+ VorB vb;
781
+ Array<ProxyFunction*> trial_proxies;
782
+ VorB element_vb;
783
+
784
+ Timer<TNoTracing> timer{"SymbolicEnergy"};
785
+ Array<int> trial_cum; // cumulated dimension of proxies
786
+ Matrix<bool> nonzeros; // do components interact ?
787
+ Matrix<bool> nonzeros_proxies; // do proxies interact ?
788
+ Array<shared_ptr<CoefficientFunction>> dcf, ddcf;
789
+
790
+ public:
791
+ SymbolicEnergy (shared_ptr<CoefficientFunction> acf, VorB avb, VorB aelement_vb);
792
+
793
+ virtual VorB VB() const { return vb; }
794
+ virtual xbool IsSymmetric() const { return true; }
795
+ virtual string Name () const { return string ("Symbolic Energy"); }
796
+
797
+
798
+ using Integrator::GetIntegrationRule;
799
+ NGS_DLL_HEADER virtual const IntegrationRule& GetIntegrationRule (const FiniteElement & fel, LocalHeap & lh) const;
800
+ NGS_DLL_HEADER virtual const SIMD_IntegrationRule& Get_SIMD_IntegrationRule (const FiniteElement & fel, LocalHeap & lh) const;
801
+
802
+ virtual void
803
+ CalcElementMatrix (const FiniteElement & fel,
804
+ const ElementTransformation & trafo,
805
+ FlatMatrix<double> elmat,
806
+ LocalHeap & lh) const;
807
+
808
+ virtual void
809
+ CalcLinearizedElementMatrix (const FiniteElement & fel,
810
+ const ElementTransformation & trafo,
811
+ FlatVector<double> elveclin,
812
+ FlatMatrix<double> elmat,
813
+ LocalHeap & lh) const;
814
+
815
+ void AddLinearizedElementMatrix (const FiniteElement & fel,
816
+ ProxyUserData & ud,
817
+ const BaseMappedIntegrationRule & mir,
818
+ FlatVector<double> elveclin,
819
+ FlatMatrix<double> elmat,
820
+ LocalHeap & lh) const;
821
+
822
+ void AddLinearizedElementMatrix (const FiniteElement & fel,
823
+ const ElementTransformation & trafo,
824
+ const SIMD_BaseMappedIntegrationRule & mir,
825
+ FlatVector<double> elveclin,
826
+ FlatMatrix<double> elmat,
827
+ LocalHeap & lh) const;
828
+
829
+
830
+ virtual double Energy (const FiniteElement & fel,
831
+ const ElementTransformation & trafo,
832
+ FlatVector<double> elx,
833
+ LocalHeap & lh) const;
834
+
835
+ virtual void
836
+ ApplyElementMatrix (const FiniteElement & fel,
837
+ const ElementTransformation & trafo,
838
+ const FlatVector<double> elx,
839
+ FlatVector<double> ely,
840
+ void * precomputed,
841
+ LocalHeap & lh) const;
842
+ };
843
+
844
+
845
+
846
+
847
+ }
848
+
849
+
850
+ #endif