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,1286 @@
1
+ #ifndef FILE_DIFFOP
2
+ #define FILE_DIFFOP
3
+
4
+ /*********************************************************************/
5
+ /* File: diffop.hpp */
6
+ /* Author: Joachim Schoeberl */
7
+ /* Date: 24. Nov. 2009 */
8
+ /*********************************************************************/
9
+
10
+ #include "finiteelement.hpp"
11
+ #include "differentialoperator.hpp"
12
+ #include <core/register_archive.hpp>
13
+
14
+
15
+ namespace ngfem
16
+ {
17
+
18
+
19
+
20
+ /**
21
+ Differential Operator.
22
+ Base-class for template-polymorphismus.
23
+ Provides application and transpose-application.
24
+ Operations can be applied for one integration point, or for the whole integration rule at once.
25
+ */
26
+ template<class DOP>
27
+ class DiffOp
28
+ {
29
+ public:
30
+
31
+ static string Name() { return typeid(DiffOp<DOP>()).name(); }
32
+ static constexpr bool SUPPORT_PML = false;
33
+ // static Array<int> GetDimensions() { return Array<int> ( { DOP::DIM_DMAT } ); };
34
+ static IVec<1> GetDimensions() { return { DOP::DIM_DMAT }; };
35
+ static bool SupportsVB (VorB checkvb) { return int(DOP::DIM_SPACE)-int(DOP::DIM_ELEMENT) == int(checkvb); }
36
+
37
+
38
+ typedef void DIFFOP_TRACE; //
39
+
40
+ /**
41
+ Computes the B-matrix.
42
+ The height is DIM_DMAT, the width is fel.GetNDof().
43
+ FEL is the FiniteElement type specified in the BDB-Integrator
44
+ mip is the mapped integration point containing the Jacobi-Matrix
45
+ MAT is the resulting matrix (usually a FixedHeightMatrix)
46
+ */
47
+
48
+ template <typename FEL, typename MIP, typename MAT>
49
+ static void GenerateMatrix (const FEL & fel, const MIP & mip,
50
+ MAT & mat, LocalHeap & lh)
51
+ {
52
+ Exception::Throw("DIFFOP::GenerateMatrix should not be here, diffop = ", typeid(DOP).name());
53
+ }
54
+
55
+ /// tbd
56
+ template <typename FEL, typename MIR, typename MAT>
57
+ static void GenerateMatrixIR (const FEL & fel, const MIR & mir,
58
+ MAT & mat, LocalHeap & lh)
59
+ {
60
+ for (size_t i = 0; i < mir.Size(); i++)
61
+ {
62
+ auto submat = mat.Rows(i*DOP::DIM_DMAT, (i+1)*DOP::DIM_DMAT).Cols(DOP::DIM*fel.GetNDof());
63
+ DOP::GenerateMatrix (fel, mir[i], submat, lh);
64
+ }
65
+ }
66
+
67
+ template <typename FEL, typename MIR>
68
+ static void GenerateMatrixSIMDIR (const FEL & fel, const MIR & mir, BareSliceMatrix<SIMD<double>> mat)
69
+ {
70
+ throw ExceptionNOSIMD ("generate matrix simdir not implemented for diffop ", typeid(DOP).name());
71
+ }
72
+ /**
73
+ Applies the B-matrix.
74
+ Computes matrix-vector product with the B-matrix
75
+ */
76
+ template <typename FEL, typename MIP, class TVX, class TVY>
77
+ static void Apply (const FEL & fel, const MIP & mip,
78
+ const TVX & x, TVY && y,
79
+ LocalHeap & lh)
80
+ {
81
+ // typedef typename TVY::TSCAL TSCAL;
82
+ typedef typename MIP::TSCAL TSCAL;
83
+ HeapReset hr(lh);
84
+
85
+ FlatMatrixFixHeight<DOP::DIM_DMAT, TSCAL> mat(DOP::DIM*fel.GetNDof(), lh);
86
+ DOP::GenerateMatrix (fel, mip, mat, lh);
87
+ y = mat * x.Range(DOP::DIM*fel.GetNDof());
88
+ }
89
+
90
+ /// Computes B-matrix times element vector in many points
91
+ template <typename FEL, class MIR, class TVX, class TVY>
92
+ static void ApplyIR (const FEL & fel, const MIR & mir,
93
+ const TVX & x, TVY & y,
94
+ LocalHeap & lh)
95
+ {
96
+ for (size_t i = 0; i < mir.Size(); i++)
97
+ {
98
+ HeapReset hr(lh);
99
+ auto yrow = y.Row(i);
100
+ DOP::Apply (fel, mir[i], x, yrow, lh);
101
+ }
102
+ }
103
+
104
+ /// Computes B-matrix times element vector in many points
105
+ template <typename FEL, class MIR, class TVX, class TVY>
106
+ static void ApplySIMDIR (const FEL & fel, const MIR & mir,
107
+ const TVX & x, TVY & y)
108
+ // LocalHeap & lh)
109
+ {
110
+ throw ExceptionNOSIMD ("apply simdir not implemented for diffop ", typeid(DOP).name());
111
+ }
112
+
113
+
114
+ /// Computes Transpose (B-matrix) times point value
115
+ template <typename FEL, typename MIP, class TVX, class TVY>
116
+ static void ApplyTrans (const FEL & fel, const MIP & mip,
117
+ const TVX & x, TVY & y,
118
+ LocalHeap & lh)
119
+ {
120
+ // typedef typename TVY::TSCAL TSCAL;
121
+ typedef typename MIP::TSCAL TSCAL;
122
+
123
+ HeapReset hr(lh);
124
+
125
+ FlatMatrixFixHeight<DOP::DIM_DMAT, TSCAL> mat(DOP::DIM*fel.GetNDof(), lh);
126
+ DOP::GenerateMatrix (fel, mip, mat, lh);
127
+ y.Range(0,DOP::DIM*fel.GetNDof()) = Trans (mat) * x;
128
+ }
129
+
130
+ /// Computes Transpose (B-matrix) times point value
131
+ template <typename FEL, typename MIP, class TVX, class TVY>
132
+ static void ApplyTransAdd (const FEL & fel, const MIP & mip,
133
+ const TVX & x, TVY & y,
134
+ LocalHeap & lh)
135
+ {
136
+ typedef typename MIP::TSCAL TSCAL;
137
+
138
+ HeapReset hr(lh);
139
+
140
+ FlatMatrixFixHeight<DOP::DIM_DMAT, TSCAL> mat(DOP::DIM*fel.GetNDof(), lh);
141
+ DOP::GenerateMatrix (fel, mip, mat, lh);
142
+ y.Range(DOP::DIM*fel.GetNDof()) += Trans (mat) * x;
143
+ }
144
+
145
+
146
+ /// Computes Transpose (B-matrix) times point value
147
+ template <typename FEL, typename MIR, class TVX, class TVY>
148
+ static void ApplyTransIR (const FEL & fel, const MIR & mir,
149
+ const TVX & x, TVY & y,
150
+ LocalHeap & lh)
151
+ {
152
+ y.Range(0,DOP::DIM*fel.GetNDof()) = 0.0;
153
+ for (size_t i = 0; i < mir.Size(); i++)
154
+ {
155
+ HeapReset hr(lh);
156
+ ApplyTransAdd (fel, mir[i], x.Row(i), y, lh);
157
+ }
158
+ }
159
+
160
+ /// Computes Transpose (B-matrix) times point value
161
+ template <typename FEL, class MIR, class TVX, class TVY>
162
+ static void AddTransSIMDIR (const FEL & fel, const MIR & mir,
163
+ const TVX & x, TVY & y)
164
+ // LocalHeap & lh)
165
+ {
166
+ throw ExceptionNOSIMD ("AddTrans simdir not implemented for diffop ", typeid(DOP).name());
167
+ }
168
+
169
+ static int DimRef()
170
+ {
171
+ Exception::Throw ("DIFFOP::DimRef should not be here, diffop = ", typeid(DOP).name());
172
+ }
173
+
174
+ template <typename FEL, typename IP, typename MAT>
175
+ static void GenerateMatrixRef (const FEL & fel, const IP & ip,
176
+ MAT & mat, LocalHeap & lh)
177
+ {
178
+ // cout << "DIFFOP::GenerateMatrixRef should not be here, diffop = " << typeid(DOP).name() << endl;
179
+ Exception::Throw("DIFFOP::GenerateMatrixRef should not be here, diffop = ", typeid(DOP).name());
180
+ }
181
+
182
+ template <typename MIP, typename MAT>
183
+ static void CalcTransformationMatrix (const MIP & mip,
184
+ MAT & mat, LocalHeap & lh)
185
+ {
186
+ Exception::Throw("DIFFOP::CalcTransformationMatrix should not be here, diffop = ", typeid(DOP).name());
187
+ }
188
+
189
+ static shared_ptr<CoefficientFunction>
190
+ DiffShape (shared_ptr<CoefficientFunction> proxy,
191
+ shared_ptr<CoefficientFunction> dir,
192
+ bool Eulerian)
193
+ {
194
+ Exception::Throw ("shape derivative not implemented for DifferentialOperator", typeid(DOP).name());
195
+ }
196
+
197
+ };
198
+
199
+
200
+
201
+
202
+
203
+
204
+
205
+ class BlockDifferentialOperator : public DifferentialOperator
206
+ {
207
+ protected:
208
+ shared_ptr<DifferentialOperator> diffop;
209
+ int dim;
210
+ int comp;
211
+ public:
212
+ BlockDifferentialOperator (shared_ptr<DifferentialOperator> adiffop,
213
+ int adim, int acomp = -1)
214
+ : DifferentialOperator(adim*adiffop->Dim(), adim*adiffop->BlockDim(),
215
+ adiffop->VB(), adiffop->DiffOrder()),
216
+ diffop(adiffop), dim(adim), comp(acomp)
217
+ {
218
+ if(adiffop->Dimensions().Size()==0)
219
+ SetDimensions( { BlockDim() } );
220
+ }
221
+
222
+ NGS_DLL_HEADER virtual ~BlockDifferentialOperator ();
223
+
224
+ virtual string Name() const override { return diffop->Name(); }
225
+ shared_ptr<DifferentialOperator> BaseDiffOp() const { return diffop; }
226
+ virtual bool SupportsVB (VorB checkvb) const override { return diffop->SupportsVB(checkvb); }
227
+
228
+ virtual IntRange UsedDofs(const FiniteElement & fel) const override { return dim*diffop->UsedDofs(fel); }
229
+
230
+ shared_ptr<DifferentialOperator> GetTrace() const override
231
+ {
232
+ if (auto diffoptrace = diffop->GetTrace())
233
+ return make_shared<BlockDifferentialOperator> (diffoptrace,
234
+ dim, comp);
235
+ else
236
+ return nullptr;
237
+ }
238
+
239
+ NGS_DLL_HEADER virtual void
240
+ CalcMatrix (const FiniteElement & fel,
241
+ const BaseMappedIntegrationPoint & mip,
242
+ BareSliceMatrix<double,ColMajor> mat,
243
+ LocalHeap & lh) const override;
244
+
245
+ NGS_DLL_HEADER virtual void
246
+ CalcMatrix (const FiniteElement & fel,
247
+ const SIMD_BaseMappedIntegrationRule & mir,
248
+ BareSliceMatrix<SIMD<double>> mat) const override;
249
+
250
+ NGS_DLL_HEADER virtual void
251
+ Apply (const FiniteElement & fel,
252
+ const BaseMappedIntegrationPoint & mip,
253
+ BareSliceVector<double> x,
254
+ FlatVector<double> flux,
255
+ LocalHeap & lh) const override;
256
+
257
+ NGS_DLL_HEADER virtual void
258
+ Apply (const FiniteElement & bfel,
259
+ const SIMD_BaseMappedIntegrationRule & bmir,
260
+ BareSliceVector<double> x,
261
+ BareSliceMatrix<SIMD<double>> flux) const override;
262
+
263
+ NGS_DLL_HEADER virtual void
264
+ ApplyTrans (const FiniteElement & fel,
265
+ const BaseMappedIntegrationPoint & mip,
266
+ FlatVector<double> flux,
267
+ BareSliceVector<double> x,
268
+ LocalHeap & lh) const override;
269
+
270
+ NGS_DLL_HEADER virtual void
271
+ ApplyTrans (const FiniteElement & fel,
272
+ const BaseMappedIntegrationPoint & mip,
273
+ FlatVector<Complex> flux,
274
+ BareSliceVector<Complex> x,
275
+ LocalHeap & lh) const override;
276
+
277
+ NGS_DLL_HEADER virtual void
278
+ ApplyTrans (const FiniteElement & fel,
279
+ const BaseMappedIntegrationRule & mir,
280
+ FlatMatrix<double> flux,
281
+ BareSliceVector<double> x,
282
+ LocalHeap & lh) const override;
283
+
284
+ NGS_DLL_HEADER virtual void
285
+ ApplyTrans (const FiniteElement & fel,
286
+ const BaseMappedIntegrationRule & mir,
287
+ FlatMatrix<Complex> flux,
288
+ BareSliceVector<Complex> x,
289
+ LocalHeap & lh) const override;
290
+
291
+ NGS_DLL_HEADER virtual void
292
+ AddTrans (const FiniteElement & bfel,
293
+ const SIMD_BaseMappedIntegrationRule & bmir,
294
+ BareSliceMatrix<SIMD<double>> flux,
295
+ BareSliceVector<double> x) const override;
296
+
297
+ NGS_DLL_HEADER virtual void
298
+ AddTrans (const FiniteElement & bfel,
299
+ const SIMD_BaseMappedIntegrationRule & bmir,
300
+ BareSliceMatrix<SIMD<Complex>> flux,
301
+ BareSliceVector<Complex> x) const override;
302
+
303
+
304
+ NGS_DLL_HEADER shared_ptr<CoefficientFunction> DiffShape (shared_ptr<CoefficientFunction> proxy,
305
+ shared_ptr<CoefficientFunction> dir,
306
+ bool Eulerian) const override;
307
+ };
308
+
309
+
310
+
311
+
312
+ class BlockDifferentialOperatorTrans : public DifferentialOperator
313
+ {
314
+ protected:
315
+ shared_ptr<DifferentialOperator> diffop;
316
+ int dim;
317
+ int comp;
318
+ public:
319
+ BlockDifferentialOperatorTrans (shared_ptr<DifferentialOperator> adiffop,
320
+ int adim, int acomp = -1)
321
+ : DifferentialOperator(adim*adiffop->Dim(), adim*adiffop->BlockDim(),
322
+ adiffop->VB(), adiffop->DiffOrder()),
323
+ diffop(adiffop), dim(adim), comp(acomp)
324
+ {
325
+ // dimensions = Array<int> ( { adim, adiffop->Dim() });
326
+ SetDimensions ( { adim, adiffop->Dim() } );
327
+ }
328
+
329
+ NGS_DLL_HEADER virtual ~BlockDifferentialOperatorTrans ();
330
+
331
+ virtual string Name() const override { return diffop->Name(); }
332
+ shared_ptr<DifferentialOperator> BaseDiffOp() const { return diffop; }
333
+ virtual bool SupportsVB (VorB checkvb) const override { return diffop->SupportsVB(checkvb); }
334
+
335
+ virtual IntRange UsedDofs(const FiniteElement & fel) const override { return dim*diffop->UsedDofs(fel); }
336
+
337
+ shared_ptr<DifferentialOperator> GetTrace() const override
338
+ {
339
+ if (auto diffoptrace = diffop->GetTrace())
340
+ return make_shared<BlockDifferentialOperatorTrans> (diffoptrace,
341
+ dim, comp);
342
+ else
343
+ return nullptr;
344
+ }
345
+
346
+
347
+
348
+ NGS_DLL_HEADER virtual void
349
+ CalcMatrix (const FiniteElement & fel,
350
+ const BaseMappedIntegrationPoint & mip,
351
+ BareSliceMatrix<double,ColMajor> mat,
352
+ LocalHeap & lh) const override;
353
+
354
+ NGS_DLL_HEADER virtual void
355
+ CalcMatrix (const FiniteElement & fel,
356
+ const SIMD_BaseMappedIntegrationRule & mir,
357
+ BareSliceMatrix<SIMD<double>> mat) const override;
358
+
359
+ NGS_DLL_HEADER virtual void
360
+ Apply (const FiniteElement & fel,
361
+ const BaseMappedIntegrationPoint & mip,
362
+ BareSliceVector<double> x,
363
+ FlatVector<double> flux,
364
+ LocalHeap & lh) const override;
365
+
366
+ NGS_DLL_HEADER virtual void
367
+ Apply (const FiniteElement & bfel,
368
+ const SIMD_BaseMappedIntegrationRule & bmir,
369
+ BareSliceVector<double> x,
370
+ BareSliceMatrix<SIMD<double>> flux) const override;
371
+
372
+ NGS_DLL_HEADER virtual void
373
+ ApplyTrans (const FiniteElement & fel,
374
+ const BaseMappedIntegrationPoint & mip,
375
+ FlatVector<double> flux,
376
+ BareSliceVector<double> x,
377
+ LocalHeap & lh) const override;
378
+
379
+ NGS_DLL_HEADER virtual void
380
+ ApplyTrans (const FiniteElement & fel,
381
+ const BaseMappedIntegrationPoint & mip,
382
+ FlatVector<Complex> flux,
383
+ BareSliceVector<Complex> x,
384
+ LocalHeap & lh) const override;
385
+
386
+ NGS_DLL_HEADER virtual void
387
+ AddTrans (const FiniteElement & bfel,
388
+ const SIMD_BaseMappedIntegrationRule & bmir,
389
+ BareSliceMatrix<SIMD<double>> flux,
390
+ BareSliceVector<double> x) const override;
391
+
392
+ NGS_DLL_HEADER virtual void
393
+ AddTrans (const FiniteElement & bfel,
394
+ const SIMD_BaseMappedIntegrationRule & bmir,
395
+ BareSliceMatrix<SIMD<Complex>> flux,
396
+ BareSliceVector<Complex> x) const override;
397
+
398
+
399
+ shared_ptr<CoefficientFunction> DiffShape (shared_ptr<CoefficientFunction> proxy,
400
+ shared_ptr<CoefficientFunction> dir,
401
+ bool Eulerian) const override;
402
+ };
403
+
404
+
405
+
406
+ // like BlockDifferentialOperator, but element is CompoundFE here
407
+ class VectorDifferentialOperator : public DifferentialOperator
408
+ {
409
+ protected:
410
+ shared_ptr<DifferentialOperator> diffop;
411
+ int dim;
412
+ public:
413
+ VectorDifferentialOperator (shared_ptr<DifferentialOperator> adiffop,
414
+ int adim)
415
+ : DifferentialOperator(adim*adiffop->Dim(), /* adim* */ adiffop->BlockDim(),
416
+ adiffop->VB(), adiffop->DiffOrder()),
417
+ diffop(adiffop), dim(adim)
418
+ {
419
+ if (adiffop->Dimensions().Size() == 0)
420
+ // dimensions = Array<int> ( { adim });
421
+ SetDimensions ( { adim } );
422
+ else
423
+ // dimensions = Array<int> ( { adim, adiffop->Dim() });
424
+ SetDimensions ( { adim, adiffop->Dim() } );
425
+ }
426
+
427
+ NGS_DLL_HEADER virtual ~VectorDifferentialOperator ();
428
+
429
+ virtual string Name() const override { return diffop->Name(); }
430
+ shared_ptr<DifferentialOperator> BaseDiffOp() const { return diffop; }
431
+ virtual bool SupportsVB (VorB checkvb) const override { return diffop->SupportsVB(checkvb); }
432
+
433
+ virtual IntRange UsedDofs(const FiniteElement & fel) const override { return IntRange(0, fel.GetNDof()); }
434
+
435
+ shared_ptr<DifferentialOperator> GetTrace() const override
436
+ {
437
+ if (auto diffoptrace = diffop->GetTrace())
438
+ return make_shared<VectorDifferentialOperator> (diffoptrace, dim);
439
+ else
440
+ return nullptr;
441
+ }
442
+
443
+ NGS_DLL_HEADER virtual void
444
+ CalcMatrix (const FiniteElement & fel,
445
+ const BaseMappedIntegrationPoint & mip,
446
+ BareSliceMatrix<double,ColMajor> mat,
447
+ LocalHeap & lh) const override;
448
+
449
+ NGS_DLL_HEADER virtual void
450
+ CalcMatrix (const FiniteElement & fel,
451
+ const SIMD_BaseMappedIntegrationRule & mir,
452
+ BareSliceMatrix<SIMD<double>> mat) const override;
453
+
454
+
455
+ NGS_DLL_HEADER virtual int DimRef() const override;
456
+
457
+ NGS_DLL_HEADER virtual void
458
+ CalcMatrix (const FiniteElement & fel,
459
+ const IntegrationPoint & ip,
460
+ BareSliceMatrix<double,ColMajor> mat,
461
+ LocalHeap & lh) const override;
462
+
463
+ NGS_DLL_HEADER virtual void
464
+ CalcTransformationMatrix (const BaseMappedIntegrationPoint & mip,
465
+ SliceMatrix<double> trans,
466
+ LocalHeap & lh) const override;
467
+
468
+ NGS_DLL_HEADER virtual void
469
+ Apply (const FiniteElement & fel,
470
+ const BaseMappedIntegrationPoint & mip,
471
+ BareSliceVector<double> x,
472
+ FlatVector<double> flux,
473
+ LocalHeap & lh) const override;
474
+
475
+ NGS_DLL_HEADER virtual void
476
+ Apply (const FiniteElement & bfel,
477
+ const SIMD_BaseMappedIntegrationRule & bmir,
478
+ BareSliceVector<double> x,
479
+ BareSliceMatrix<SIMD<double>> flux) const override;
480
+
481
+ NGS_DLL_HEADER virtual void
482
+ ApplyTrans (const FiniteElement & fel,
483
+ const BaseMappedIntegrationPoint & mip,
484
+ FlatVector<double> flux,
485
+ BareSliceVector<double> x,
486
+ LocalHeap & lh) const override;
487
+
488
+ NGS_DLL_HEADER virtual void
489
+ ApplyTrans (const FiniteElement & fel,
490
+ const BaseMappedIntegrationPoint & mip,
491
+ FlatVector<Complex> flux,
492
+ BareSliceVector<Complex> x,
493
+ LocalHeap & lh) const override;
494
+
495
+ NGS_DLL_HEADER virtual void
496
+ AddTrans (const FiniteElement & bfel,
497
+ const SIMD_BaseMappedIntegrationRule & bmir,
498
+ BareSliceMatrix<SIMD<double>> flux,
499
+ BareSliceVector<double> x) const override;
500
+
501
+ NGS_DLL_HEADER virtual void
502
+ AddTrans (const FiniteElement & bfel,
503
+ const SIMD_BaseMappedIntegrationRule & bmir,
504
+ BareSliceMatrix<SIMD<Complex>> flux,
505
+ BareSliceVector<Complex> x) const override;
506
+
507
+ shared_ptr<CoefficientFunction> DiffShape (shared_ptr<CoefficientFunction> proxy,
508
+ shared_ptr<CoefficientFunction> dir,
509
+ bool Eulerian) const override;
510
+ };
511
+
512
+
513
+ class MatrixDifferentialOperator : public DifferentialOperator
514
+ {
515
+ protected:
516
+ shared_ptr<DifferentialOperator> diffop;
517
+ int vdim;
518
+ public:
519
+ MatrixDifferentialOperator (shared_ptr<DifferentialOperator> adiffop,
520
+ int avdim);
521
+
522
+ NGS_DLL_HEADER virtual ~MatrixDifferentialOperator ();
523
+
524
+ virtual string Name() const override { return diffop->Name(); }
525
+ shared_ptr<DifferentialOperator> BaseDiffOp() const { return diffop; }
526
+ virtual bool SupportsVB (VorB checkvb) const override { return diffop->SupportsVB(checkvb); }
527
+
528
+ virtual IntRange UsedDofs(const FiniteElement & fel) const override { return IntRange(0, fel.GetNDof()); }
529
+
530
+ shared_ptr<DifferentialOperator> GetTrace() const override
531
+ {
532
+ if (auto diffoptrace = diffop->GetTrace())
533
+ return make_shared<MatrixDifferentialOperator> (diffoptrace, vdim);
534
+ else
535
+ return nullptr;
536
+ }
537
+
538
+ NGS_DLL_HEADER virtual void
539
+ CalcMatrix (const FiniteElement & fel,
540
+ const BaseMappedIntegrationPoint & mip,
541
+ BareSliceMatrix<double,ColMajor> mat,
542
+ LocalHeap & lh) const override;
543
+
544
+ NGS_DLL_HEADER virtual void
545
+ CalcMatrix (const FiniteElement & bfel,
546
+ const SIMD_BaseMappedIntegrationRule & mir,
547
+ BareSliceMatrix<SIMD<double>> bmat) const override;
548
+
549
+ NGS_DLL_HEADER virtual void
550
+ Apply (const FiniteElement & bfel,
551
+ const SIMD_BaseMappedIntegrationRule & bmir,
552
+ BareSliceVector<double> x,
553
+ BareSliceMatrix<SIMD<double>> flux) const override;
554
+
555
+ NGS_DLL_HEADER virtual void
556
+ AddTrans (const FiniteElement & bfel,
557
+ const SIMD_BaseMappedIntegrationRule & bmir,
558
+ BareSliceMatrix<SIMD<double>> flux,
559
+ BareSliceVector<double> x) const override;
560
+ };
561
+
562
+ class SymMatrixDifferentialOperator : public DifferentialOperator
563
+ {
564
+ protected:
565
+ shared_ptr<DifferentialOperator> diffop;
566
+ int vdim;
567
+ public:
568
+ NGS_DLL_HEADER SymMatrixDifferentialOperator (shared_ptr<DifferentialOperator> adiffop,
569
+ int avdim);
570
+
571
+ NGS_DLL_HEADER virtual ~SymMatrixDifferentialOperator ();
572
+
573
+ virtual string Name() const override { return diffop->Name(); }
574
+ shared_ptr<DifferentialOperator> BaseDiffOp() const { return diffop; }
575
+ virtual bool SupportsVB (VorB checkvb) const override { return diffop->SupportsVB(checkvb); }
576
+
577
+ virtual IntRange UsedDofs(const FiniteElement & fel) const override
578
+ { return IntRange(0, fel.GetNDof()); }
579
+
580
+ shared_ptr<DifferentialOperator> GetTrace() const override
581
+ {
582
+ if (auto diffoptrace = diffop->GetTrace())
583
+ return make_shared<SymMatrixDifferentialOperator> (diffoptrace, vdim);
584
+ else
585
+ return nullptr;
586
+ }
587
+
588
+ NGS_DLL_HEADER virtual void
589
+ CalcMatrix (const FiniteElement & fel,
590
+ const BaseMappedIntegrationPoint & mip,
591
+ BareSliceMatrix<double,ColMajor> mat,
592
+ LocalHeap & lh) const override;
593
+
594
+ NGS_DLL_HEADER virtual void
595
+ CalcMatrixVS (const FiniteElement & fel,
596
+ const BaseMappedIntegrationPoint & mip,
597
+ SliceMatrix<double,ColMajor> mat,
598
+ LocalHeap & lh) const override;
599
+
600
+ NGS_DLL_HEADER virtual void
601
+ CalcMatrix (const FiniteElement & bfel,
602
+ const SIMD_BaseMappedIntegrationRule & mir,
603
+ BareSliceMatrix<SIMD<double>> bmat) const override;
604
+
605
+ NGS_DLL_HEADER virtual void
606
+ Apply (const FiniteElement & bfel,
607
+ const SIMD_BaseMappedIntegrationRule & bmir,
608
+ BareSliceVector<double> x,
609
+ BareSliceMatrix<SIMD<double>> flux) const override;
610
+
611
+ NGS_DLL_HEADER virtual void
612
+ AddTrans (const FiniteElement & bfel,
613
+ const SIMD_BaseMappedIntegrationRule & bmir,
614
+ BareSliceMatrix<SIMD<double>> flux,
615
+ BareSliceVector<double> x) const override;
616
+ };
617
+
618
+
619
+
620
+
621
+ class SymDevMatrixDifferentialOperator : public DifferentialOperator
622
+ {
623
+ protected:
624
+ shared_ptr<DifferentialOperator> diffop;
625
+ int vdim;
626
+ public:
627
+ NGS_DLL_HEADER SymDevMatrixDifferentialOperator (shared_ptr<DifferentialOperator> adiffop,
628
+ int avdim);
629
+
630
+ NGS_DLL_HEADER virtual ~SymDevMatrixDifferentialOperator ();
631
+
632
+ virtual string Name() const override { return diffop->Name(); }
633
+ shared_ptr<DifferentialOperator> BaseDiffOp() const { return diffop; }
634
+ virtual bool SupportsVB (VorB checkvb) const override { return diffop->SupportsVB(checkvb); }
635
+
636
+ virtual IntRange UsedDofs(const FiniteElement & fel) const override
637
+ { return IntRange(0, fel.GetNDof()); }
638
+
639
+ shared_ptr<DifferentialOperator> GetTrace() const override
640
+ {
641
+ if (auto diffoptrace = diffop->GetTrace())
642
+ return make_shared<SymMatrixDifferentialOperator> (diffoptrace, vdim);
643
+ else
644
+ return nullptr;
645
+ }
646
+
647
+ NGS_DLL_HEADER virtual void
648
+ CalcMatrix (const FiniteElement & fel,
649
+ const BaseMappedIntegrationPoint & mip,
650
+ BareSliceMatrix<double,ColMajor> mat,
651
+ LocalHeap & lh) const override;
652
+
653
+ NGS_DLL_HEADER virtual void
654
+ CalcMatrixVS (const FiniteElement & fel,
655
+ const BaseMappedIntegrationPoint & mip,
656
+ SliceMatrix<double,ColMajor> mat,
657
+ LocalHeap & lh) const override;
658
+
659
+ NGS_DLL_HEADER virtual void
660
+ CalcMatrix (const FiniteElement & bfel,
661
+ const SIMD_BaseMappedIntegrationRule & mir,
662
+ BareSliceMatrix<SIMD<double>> bmat) const override;
663
+
664
+ NGS_DLL_HEADER virtual void
665
+ Apply (const FiniteElement & bfel,
666
+ const SIMD_BaseMappedIntegrationRule & mir,
667
+ BareSliceVector<double> x,
668
+ BareSliceMatrix<SIMD<double>> flux) const override;
669
+
670
+ NGS_DLL_HEADER virtual void
671
+ AddTrans (const FiniteElement & bfel,
672
+ const SIMD_BaseMappedIntegrationRule & mir,
673
+ BareSliceMatrix<SIMD<double>> flux,
674
+ BareSliceVector<double> y) const override;
675
+
676
+ /*
677
+ NGS_DLL_HEADER virtual void
678
+ Apply (const FiniteElement & bfel,
679
+ const SIMD_BaseMappedIntegrationRule & bmir,
680
+ BareSliceVector<double> x,
681
+ BareSliceMatrix<SIMD<double>> flux) const override;
682
+
683
+ NGS_DLL_HEADER virtual void
684
+ AddTrans (const FiniteElement & bfel,
685
+ const SIMD_BaseMappedIntegrationRule & bmir,
686
+ BareSliceMatrix<SIMD<double>> flux,
687
+ BareSliceVector<double> x) const override;
688
+ */
689
+ };
690
+
691
+ class SkewMatrixDifferentialOperator : public DifferentialOperator
692
+ {
693
+ protected:
694
+ shared_ptr<DifferentialOperator> diffop;
695
+ int vdim;
696
+ public:
697
+ NGS_DLL_HEADER SkewMatrixDifferentialOperator (shared_ptr<DifferentialOperator> adiffop,
698
+ int avdim);
699
+
700
+ NGS_DLL_HEADER virtual ~SkewMatrixDifferentialOperator ();
701
+
702
+ virtual string Name() const override { return diffop->Name(); }
703
+ shared_ptr<DifferentialOperator> BaseDiffOp() const { return diffop; }
704
+ virtual bool SupportsVB (VorB checkvb) const override { return diffop->SupportsVB(checkvb); }
705
+
706
+ virtual IntRange UsedDofs(const FiniteElement & fel) const override
707
+ { return IntRange(0, fel.GetNDof()); }
708
+
709
+ shared_ptr<DifferentialOperator> GetTrace() const override
710
+ {
711
+ if (auto diffoptrace = diffop->GetTrace())
712
+ return make_shared<SkewMatrixDifferentialOperator> (diffoptrace, vdim);
713
+ else
714
+ return nullptr;
715
+ }
716
+
717
+ NGS_DLL_HEADER virtual void
718
+ CalcMatrix (const FiniteElement & fel,
719
+ const BaseMappedIntegrationPoint & mip,
720
+ BareSliceMatrix<double,ColMajor> mat,
721
+ LocalHeap & lh) const override;
722
+
723
+ NGS_DLL_HEADER virtual void
724
+ CalcMatrixVS (const FiniteElement & fel,
725
+ const BaseMappedIntegrationPoint & mip,
726
+ SliceMatrix<double,ColMajor> mat,
727
+ LocalHeap & lh) const override;
728
+
729
+ NGS_DLL_HEADER virtual void
730
+ CalcMatrix (const FiniteElement & bfel,
731
+ const SIMD_BaseMappedIntegrationRule & mir,
732
+ BareSliceMatrix<SIMD<double>> bmat) const override;
733
+
734
+ NGS_DLL_HEADER virtual void
735
+ Apply (const FiniteElement & bfel,
736
+ const SIMD_BaseMappedIntegrationRule & bmir,
737
+ BareSliceVector<double> x,
738
+ BareSliceMatrix<SIMD<double>> flux) const override;
739
+
740
+ NGS_DLL_HEADER virtual void
741
+ AddTrans (const FiniteElement & bfel,
742
+ const SIMD_BaseMappedIntegrationRule & bmir,
743
+ BareSliceMatrix<SIMD<double>> flux,
744
+ BareSliceVector<double> x) const override;
745
+ };
746
+
747
+
748
+
749
+
750
+
751
+
752
+
753
+ class CompoundDifferentialOperator : public DifferentialOperator
754
+ {
755
+ shared_ptr<DifferentialOperator> diffop;
756
+ int comp;
757
+ public:
758
+ CompoundDifferentialOperator (shared_ptr<DifferentialOperator> adiffop,
759
+ int acomp)
760
+ : DifferentialOperator(adiffop->Dim(), adiffop->BlockDim(),
761
+ adiffop->VB(), adiffop->DiffOrder()),
762
+ diffop(adiffop), comp(acomp)
763
+ {
764
+ // dimensions = adiffop->Dimensions();
765
+ SetDimensions ( adiffop->Dimensions() );
766
+ if (auto vsemb = diffop->GetVSEmbedding(); vsemb)
767
+ SetVectorSpaceEmbedding (*vsemb);
768
+ }
769
+
770
+ virtual ~CompoundDifferentialOperator () = default;
771
+ shared_ptr<DifferentialOperator> BaseDiffOp() const { return diffop; }
772
+ int Component () const { return comp; }
773
+ virtual bool SupportsVB (VorB checkvb) const override { return diffop->SupportsVB(checkvb); }
774
+
775
+ shared_ptr<DifferentialOperator> GetTrace() const override
776
+ {
777
+ if (auto diffoptrace = diffop->GetTrace())
778
+ return make_shared<CompoundDifferentialOperator> (diffoptrace, comp);
779
+ else
780
+ return nullptr;
781
+ }
782
+
783
+ virtual bool operator== (const DifferentialOperator & diffop2) const override
784
+ {
785
+ const CompoundDifferentialOperator * do2 =
786
+ dynamic_cast<const CompoundDifferentialOperator*> (&diffop2);
787
+ if (do2 && do2->Component() == Component())
788
+ return *diffop == *(do2->diffop);
789
+ return false;
790
+ }
791
+
792
+
793
+ virtual string Name() const override { return diffop->Name(); }
794
+
795
+ virtual IntRange UsedDofs(const FiniteElement & bfel) const override
796
+ {
797
+ const CompoundFiniteElement & fel = static_cast<const CompoundFiniteElement&> (bfel);
798
+ size_t base = BlockDim() * fel.GetRange(comp).First();
799
+ IntRange r1 = diffop->UsedDofs(fel[comp]);
800
+ return r1+base;
801
+ }
802
+
803
+ NGS_DLL_HEADER virtual void
804
+ CalcMatrix (const FiniteElement & bfel,
805
+ const BaseMappedIntegrationPoint & mip,
806
+ BareSliceMatrix<double,ColMajor> mat,
807
+ LocalHeap & lh) const override
808
+ {
809
+ mat.AddSize(Dim(), bfel.GetNDof()) = 0;
810
+ const CompoundFiniteElement & fel = static_cast<const CompoundFiniteElement&> (bfel);
811
+ IntRange r = BlockDim() * fel.GetRange(comp);
812
+ diffop->CalcMatrix (fel[comp], mip, mat.Cols(r), lh);
813
+ }
814
+
815
+ NGS_DLL_HEADER virtual void
816
+ CalcMatrixVS (const FiniteElement & bfel,
817
+ const BaseMappedIntegrationPoint & mip,
818
+ SliceMatrix<double,ColMajor> mat,
819
+ LocalHeap & lh) const override
820
+ {
821
+ mat.AddSize(Dim(), bfel.GetNDof()) = 0;
822
+ const CompoundFiniteElement & fel = static_cast<const CompoundFiniteElement&> (bfel);
823
+ IntRange r = BlockDim() * fel.GetRange(comp);
824
+ diffop->CalcMatrixVS (fel[comp], mip, mat.Cols(r), lh);
825
+ }
826
+
827
+ NGS_DLL_HEADER virtual void
828
+ CalcMatrix (const FiniteElement & bfel,
829
+ const BaseMappedIntegrationPoint & mip,
830
+ BareSliceMatrix<Complex,ColMajor> mat,
831
+ LocalHeap & lh) const override
832
+ {
833
+ mat.AddSize(Dim(), bfel.GetNDof()) = 0;
834
+ const CompoundFiniteElement & fel = static_cast<const CompoundFiniteElement&> (bfel);
835
+ IntRange r = BlockDim() * fel.GetRange(comp);
836
+ diffop->CalcMatrix (fel[comp], mip, mat.Cols(r), lh);
837
+ }
838
+
839
+ NGS_DLL_HEADER virtual void
840
+ CalcMatrix (const FiniteElement & bfel,
841
+ const BaseMappedIntegrationRule & mir,
842
+ BareSliceMatrix<double,ColMajor> mat,
843
+ LocalHeap & lh) const override
844
+ {
845
+ mat.AddSize(Dim()*mir.Size(), bfel.GetNDof()) = 0;
846
+ const CompoundFiniteElement & fel = static_cast<const CompoundFiniteElement&> (bfel);
847
+ IntRange r = BlockDim() * fel.GetRange(comp);
848
+ diffop->CalcMatrix (fel[comp], mir, mat.Cols(r), lh);
849
+ }
850
+
851
+ NGS_DLL_HEADER virtual void
852
+ CalcMatrix (const FiniteElement & bfel,
853
+ const BaseMappedIntegrationRule & mir,
854
+ BareSliceMatrix<Complex,ColMajor> mat,
855
+ LocalHeap & lh) const override
856
+ {
857
+ mat.AddSize(Dim()*mir.Size(), bfel.GetNDof()) = 0;
858
+ const CompoundFiniteElement & fel = static_cast<const CompoundFiniteElement&> (bfel);
859
+ IntRange r = BlockDim() * fel.GetRange(comp);
860
+ diffop->CalcMatrix (fel[comp], mir, mat.Cols(r), lh);
861
+ }
862
+
863
+ NGS_DLL_HEADER virtual void
864
+ CalcMatrix (const FiniteElement & bfel,
865
+ const SIMD_BaseMappedIntegrationRule & mir,
866
+ BareSliceMatrix<SIMD<double>> mat) const override
867
+ {
868
+ // mat = 0; // take care: unused elements not zerod !!!!
869
+ const CompoundFiniteElement & fel = static_cast<const CompoundFiniteElement&> (bfel);
870
+ IntRange r = Dim() * BlockDim() * fel.GetRange(comp);
871
+ diffop->CalcMatrix (fel[comp], mir, mat.Rows(r));
872
+ }
873
+
874
+ NGS_DLL_HEADER virtual void
875
+ Apply (const FiniteElement & bfel,
876
+ const BaseMappedIntegrationPoint & mip,
877
+ BareSliceVector<double> x,
878
+ FlatVector<double> flux,
879
+ LocalHeap & lh) const override
880
+ {
881
+ const CompoundFiniteElement & fel = static_cast<const CompoundFiniteElement&> (bfel);
882
+ IntRange r = BlockDim() * fel.GetRange(comp);
883
+ diffop->Apply (fel[comp], mip, x.Range(r), flux, lh);
884
+ }
885
+
886
+ NGS_DLL_HEADER virtual void
887
+ Apply (const FiniteElement & bfel,
888
+ const BaseMappedIntegrationPoint & mip,
889
+ BareSliceVector<Complex> x,
890
+ FlatVector<Complex> flux,
891
+ LocalHeap & lh) const override
892
+ {
893
+ const CompoundFiniteElement & fel = static_cast<const CompoundFiniteElement&> (bfel);
894
+ IntRange r = BlockDim() * fel.GetRange(comp);
895
+ diffop->Apply (fel[comp], mip, x.Range(r), flux, lh);
896
+ }
897
+
898
+
899
+ virtual void
900
+ Apply (const FiniteElement & bfel,
901
+ const SIMD_BaseMappedIntegrationRule & bmir,
902
+ BareSliceVector<double> x,
903
+ BareSliceMatrix<SIMD<double>> flux) const override
904
+ {
905
+ const CompoundFiniteElement & fel = static_cast<const CompoundFiniteElement&> (bfel);
906
+ IntRange r = BlockDim() * fel.GetRange(comp);
907
+ diffop->Apply (fel[comp], bmir, x.Range(r), flux);
908
+ }
909
+
910
+ virtual void
911
+ Apply (const FiniteElement & bfel,
912
+ const SIMD_BaseMappedIntegrationRule & bmir,
913
+ BareSliceVector<Complex> x,
914
+ BareSliceMatrix<SIMD<Complex>> flux) const override
915
+ {
916
+ const CompoundFiniteElement & fel = static_cast<const CompoundFiniteElement&> (bfel);
917
+ IntRange r = BlockDim() * fel.GetRange(comp);
918
+ diffop->Apply (fel[comp], bmir, x.Range(r), flux);
919
+ }
920
+
921
+
922
+
923
+ NGS_DLL_HEADER virtual void
924
+ ApplyTrans (const FiniteElement & bfel,
925
+ const BaseMappedIntegrationPoint & mip,
926
+ FlatVector<double> flux,
927
+ BareSliceVector<double> x,
928
+ LocalHeap & lh) const override
929
+ {
930
+ x.Range(0,bfel.GetNDof()) = 0;
931
+ const CompoundFiniteElement & fel = static_cast<const CompoundFiniteElement&> (bfel);
932
+ IntRange r = BlockDim() * fel.GetRange(comp);
933
+ diffop->ApplyTrans (fel[comp], mip, flux, x.Range(r), lh);
934
+ }
935
+
936
+ NGS_DLL_HEADER virtual void
937
+ ApplyTrans (const FiniteElement & bfel,
938
+ const BaseMappedIntegrationPoint & mip,
939
+ FlatVector<Complex> flux,
940
+ BareSliceVector<Complex> x,
941
+ LocalHeap & lh) const override
942
+ {
943
+ x.Range(0,BlockDim()*bfel.GetNDof()) = 0;
944
+ const CompoundFiniteElement & fel = static_cast<const CompoundFiniteElement&> (bfel);
945
+ IntRange r = BlockDim() * fel.GetRange(comp);
946
+ diffop->ApplyTrans (fel[comp], mip, flux, x.Range(r), lh);
947
+ }
948
+
949
+ NGS_DLL_HEADER virtual void
950
+ AddTrans (const FiniteElement & bfel,
951
+ const SIMD_BaseMappedIntegrationRule & bmir,
952
+ BareSliceMatrix<SIMD<double>> flux,
953
+ BareSliceVector<double> x) const override
954
+ {
955
+ const CompoundFiniteElement & fel = static_cast<const CompoundFiniteElement&> (bfel);
956
+ IntRange r = BlockDim() * fel.GetRange(comp);
957
+ diffop->AddTrans (fel[comp], bmir, flux, x.Range(r));
958
+ }
959
+
960
+ NGS_DLL_HEADER virtual void
961
+ AddTrans (const FiniteElement & bfel,
962
+ const SIMD_BaseMappedIntegrationRule & bmir,
963
+ BareSliceMatrix<SIMD<Complex>> flux,
964
+ BareSliceVector<Complex> x) const override
965
+ {
966
+ const CompoundFiniteElement & fel = static_cast<const CompoundFiniteElement&> (bfel);
967
+ IntRange r = BlockDim() * fel.GetRange(comp);
968
+ diffop->AddTrans (fel[comp], bmir, flux, x.Range(r));
969
+ }
970
+
971
+
972
+ /// calculates matrix on reference element
973
+
974
+ NGS_DLL_HEADER virtual int DimRef() const override
975
+ {
976
+ return BlockDim()*diffop->DimRef();
977
+ }
978
+
979
+ NGS_DLL_HEADER virtual void
980
+ CalcMatrix (const FiniteElement & bfel,
981
+ const IntegrationPoint & ip,
982
+ BareSliceMatrix<double,ColMajor> mat,
983
+ LocalHeap & lh) const override
984
+ {
985
+ const CompoundFiniteElement & fel = static_cast<const CompoundFiniteElement&> (bfel);
986
+ IntRange r = BlockDim() * fel.GetRange(comp);
987
+ mat.AddSize(DimRef(), bfel.GetNDof()) = 0.0;
988
+ diffop->CalcMatrix (fel[comp], ip, mat.Cols(r), lh);
989
+ }
990
+
991
+
992
+ NGS_DLL_HEADER virtual void
993
+ CalcTransformationMatrix (const BaseMappedIntegrationPoint & mip,
994
+ SliceMatrix<double> trans,
995
+ LocalHeap & lh) const override
996
+ {
997
+ diffop->CalcTransformationMatrix(mip, trans, lh);
998
+ }
999
+
1000
+
1001
+ virtual shared_ptr<CoefficientFunction>
1002
+ DiffShape (shared_ptr<CoefficientFunction> proxy,
1003
+ shared_ptr<CoefficientFunction> dir, bool Eulerian) const override
1004
+ {
1005
+ return diffop->DiffShape(proxy,dir,Eulerian);
1006
+ }
1007
+ };
1008
+
1009
+
1010
+
1011
+
1012
+
1013
+
1014
+
1015
+
1016
+
1017
+ /**
1018
+ Connect compile-time polymorph DiffOp to run-time polymorph DifferentialOperator.
1019
+ */
1020
+ template <typename DIFFOP>
1021
+ class T_DifferentialOperator : public DifferentialOperator
1022
+ {
1023
+ protected:
1024
+ enum { DIM_SPACE = DIFFOP::DIM_SPACE };
1025
+ enum { DIM_ELEMENT = DIFFOP::DIM_ELEMENT };
1026
+ enum { DIM_DMAT = DIFFOP::DIM_DMAT };
1027
+ enum { DIM = DIFFOP::DIM };
1028
+
1029
+ public:
1030
+ T_DifferentialOperator()
1031
+ : DifferentialOperator(DIFFOP::DIM_DMAT, 1, VorB(int(DIM_SPACE)-int(DIM_ELEMENT)), DIFFOP::DIFFORDER)
1032
+ {
1033
+ static ngcore::RegisterClassForArchive<ngfem::T_DifferentialOperator<DIFFOP>, DifferentialOperator> reg;
1034
+ Array<int> hdims;
1035
+ hdims = DIFFOP::GetDimensions();
1036
+ SetDimensions ( hdims );
1037
+ }
1038
+
1039
+ virtual string Name() const override { return DIFFOP::Name(); }
1040
+
1041
+ virtual bool operator== (const DifferentialOperator & diffop2) const override
1042
+ { return typeid(*this) == typeid(diffop2); }
1043
+
1044
+ virtual bool SupportsVB (VorB checkvb) const override { return DIFFOP::SupportsVB(checkvb); }
1045
+
1046
+ virtual shared_ptr<DifferentialOperator> GetTrace() const override
1047
+ {
1048
+ if constexpr (is_same_v<void,typename DIFFOP::DIFFOP_TRACE>)
1049
+ return nullptr;
1050
+ else
1051
+ return make_shared<T_DifferentialOperator<typename DIFFOP::DIFFOP_TRACE>> ();
1052
+ }
1053
+
1054
+ virtual void
1055
+ CalcMatrix (const FiniteElement & bfel,
1056
+ const BaseMappedIntegrationPoint & bmip,
1057
+ BareSliceMatrix<double,ColMajor> mat,
1058
+ LocalHeap & lh) const override;
1059
+
1060
+ virtual void
1061
+ CalcMatrix (const FiniteElement & bfel,
1062
+ const BaseMappedIntegrationPoint & bmip,
1063
+ BareSliceMatrix<Complex,ColMajor> mat,
1064
+ LocalHeap & lh) const override;
1065
+
1066
+ virtual void
1067
+ CalcMatrix (const FiniteElement & bfel,
1068
+ const BaseMappedIntegrationRule & bmir,
1069
+ BareSliceMatrix<double,ColMajor> mat,
1070
+ LocalHeap & lh) const override;
1071
+
1072
+ virtual void
1073
+ CalcMatrix (const FiniteElement & fel,
1074
+ const SIMD_BaseMappedIntegrationRule & mir,
1075
+ BareSliceMatrix<SIMD<double>> mat) const override;
1076
+
1077
+ virtual void
1078
+ Apply (const FiniteElement & bfel,
1079
+ const BaseMappedIntegrationPoint & bmip,
1080
+ BareSliceVector<double> x,
1081
+ FlatVector<double> flux,
1082
+ LocalHeap & lh) const override;
1083
+
1084
+ #ifndef FASTCOMPILE
1085
+ virtual void
1086
+ Apply (const FiniteElement & bfel,
1087
+ const BaseMappedIntegrationRule & bmir,
1088
+ BareSliceVector<double> x,
1089
+ BareSliceMatrix<double> flux,
1090
+ LocalHeap & lh) const override;
1091
+
1092
+ virtual void
1093
+ Apply (const FiniteElement & bfel,
1094
+ const BaseMappedIntegrationPoint & bmip,
1095
+ BareSliceVector<Complex> x,
1096
+ FlatVector<Complex> flux,
1097
+ LocalHeap & lh) const override;
1098
+
1099
+ virtual void
1100
+ Apply (const FiniteElement & bfel,
1101
+ const BaseMappedIntegrationRule & bmir,
1102
+ BareSliceVector<Complex> x,
1103
+ BareSliceMatrix<Complex> flux,
1104
+ LocalHeap & lh) const override;
1105
+
1106
+ virtual void
1107
+ Apply (const FiniteElement & bfel,
1108
+ const SIMD_BaseMappedIntegrationRule & bmir,
1109
+ BareSliceVector<double> x,
1110
+ BareSliceMatrix<SIMD<double>> flux) const override;
1111
+
1112
+ virtual void
1113
+ Apply (const FiniteElement & bfel,
1114
+ const SIMD_BaseMappedIntegrationRule & bmir,
1115
+ BareSliceVector<Complex> x,
1116
+ BareSliceMatrix<SIMD<Complex>> flux) const override;
1117
+
1118
+
1119
+ virtual void
1120
+ ApplyTrans (const FiniteElement & bfel,
1121
+ const BaseMappedIntegrationPoint & bmip,
1122
+ FlatVector<double> flux,
1123
+ BareSliceVector<double> x,
1124
+ LocalHeap & lh) const override;
1125
+
1126
+ virtual void
1127
+ ApplyTrans (const FiniteElement & bfel,
1128
+ const BaseMappedIntegrationPoint & bmip,
1129
+ FlatVector<Complex> flux,
1130
+ BareSliceVector<Complex> x,
1131
+ LocalHeap & lh) const override;
1132
+
1133
+ virtual void
1134
+ ApplyTrans (const FiniteElement & bfel,
1135
+ const BaseMappedIntegrationRule & bmir,
1136
+ FlatMatrix<double> flux,
1137
+ BareSliceVector<double> x,
1138
+ LocalHeap & lh) const override;
1139
+
1140
+ virtual void
1141
+ ApplyTrans (const FiniteElement & bfel,
1142
+ const BaseMappedIntegrationRule & bmir,
1143
+ FlatMatrix<Complex> flux,
1144
+ BareSliceVector<Complex> x,
1145
+ LocalHeap & lh) const override;
1146
+
1147
+ virtual void
1148
+ AddTrans (const FiniteElement & bfel,
1149
+ const SIMD_BaseMappedIntegrationRule & bmir,
1150
+ BareSliceMatrix<SIMD<double>> flux,
1151
+ BareSliceVector<double> x) const override;
1152
+
1153
+ virtual void
1154
+ AddTrans (const FiniteElement & bfel,
1155
+ const SIMD_BaseMappedIntegrationRule & bmir,
1156
+ BareSliceMatrix<SIMD<Complex>> flux,
1157
+ BareSliceVector<Complex> x) const override;
1158
+
1159
+
1160
+ /// calculates matrix on reference element
1161
+
1162
+ virtual int DimRef() const override;
1163
+
1164
+ virtual void
1165
+ CalcMatrix (const FiniteElement & fel,
1166
+ const IntegrationPoint & ip,
1167
+ BareSliceMatrix<double,ColMajor> mat,
1168
+ LocalHeap & lh) const override;
1169
+
1170
+ virtual void
1171
+ CalcTransformationMatrix (const BaseMappedIntegrationPoint & mip,
1172
+ SliceMatrix<double> trans,
1173
+ LocalHeap & lh) const override;
1174
+
1175
+
1176
+
1177
+ #endif
1178
+ shared_ptr<CoefficientFunction> DiffShape (shared_ptr<CoefficientFunction> proxy,
1179
+ shared_ptr<CoefficientFunction> dir,
1180
+ bool Eulerian) const override
1181
+ {
1182
+ return DIFFOP::DiffShape(proxy, dir, Eulerian);
1183
+ }
1184
+
1185
+ };
1186
+
1187
+
1188
+
1189
+
1190
+
1191
+
1192
+
1193
+
1194
+
1195
+ // new design, code is still experimental ...
1196
+ template <typename DOP, typename F>
1197
+ class // [[deprecated("guess it never got over the first experimental use")]]
1198
+ T_FunctionDiffOp : public DifferentialOperator
1199
+ {
1200
+
1201
+ // possible conversion from vector to scalar
1202
+ class V2VS
1203
+ {
1204
+ FlatVector<> v;
1205
+ FlatVector<Complex> vc;
1206
+ public:
1207
+ V2VS (FlatVector<> av) : v(av), vc(0,(Complex*)nullptr) { ; }
1208
+ V2VS (FlatVector<Complex> avc) : v(0,(double*)nullptr), vc(avc) { ; }
1209
+
1210
+ template <int D>
1211
+ V2VS (Vec<D> av) : v(av) { ; }
1212
+
1213
+ operator double () { return v(0); }
1214
+
1215
+ operator FlatVector<> () { return v; }
1216
+
1217
+ template <int D>
1218
+ operator Vec<D> () { return v; }
1219
+
1220
+ template <int D>
1221
+ operator Vec<D,Complex> () { return vc; }
1222
+ };
1223
+
1224
+
1225
+ int dim;
1226
+ const F & func;
1227
+ public:
1228
+
1229
+ T_FunctionDiffOp (const F & afunc, int adim) : func(afunc), dim(adim) { ; }
1230
+
1231
+ virtual int Dim() const { return dim; }
1232
+ virtual int DiffOrder () const { return 0; }
1233
+ virtual void Apply (const FiniteElement & fel,
1234
+ const BaseMappedIntegrationPoint & mip,
1235
+ FlatVector<double> x,
1236
+ FlatVector<double> flux,
1237
+ LocalHeap & lh) const
1238
+ {
1239
+ Vec<DOP::DIM_DMAT> u;
1240
+ DOP::Apply (fel, static_cast<const MappedIntegrationPoint<3,3>&> (mip), x, u, lh);
1241
+ flux = func(V2VS(u));
1242
+ }
1243
+
1244
+ /*
1245
+ virtual void Apply (const FiniteElement & fel,
1246
+ const BaseMappedIntegrationPoint & mip,
1247
+ FlatVector<Complex> x,
1248
+ FlatVector<Complex> flux,
1249
+ LocalHeap & lh) const
1250
+ {
1251
+ Vec<DOP::DIM_DMAT,Complex> u;
1252
+ DOP::Apply (fel, static_cast<const MappedIntegrationPoint<3,3>&> (mip), x, u, lh);
1253
+ flux = func(V2VS(u));
1254
+ }
1255
+ */
1256
+ };
1257
+
1258
+
1259
+
1260
+ template <typename DOP, typename F> // [[deprecated("guess it never got over the first experimental use")]]
1261
+ shared_ptr<DifferentialOperator> CreateFunctionDiffOp (const DOP & dop,
1262
+ const F & func, int dim = 1)
1263
+ {
1264
+ return make_shared<T_FunctionDiffOp<DOP, F>> (func, dim);
1265
+ }
1266
+
1267
+
1268
+ /* examples:
1269
+
1270
+ double myexp (double x) { return exp(x); }
1271
+ Vec<1> myexpVec (FlatVector<> x) { return Vec<1> (exp(x(0))); }
1272
+
1273
+ CreateFunctionDiffOp(DiffOpId<2>(), myexpVec));
1274
+ */
1275
+
1276
+
1277
+
1278
+
1279
+
1280
+
1281
+
1282
+
1283
+ }
1284
+
1285
+
1286
+ #endif