ngsolve 6.2.2506.post74.dev0__cp314-cp314-macosx_10_15_universal2.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 (315) hide show
  1. netgen/include/analytic_integrals.hpp +10 -0
  2. netgen/include/arnoldi.hpp +55 -0
  3. netgen/include/bandmatrix.hpp +334 -0
  4. netgen/include/basematrix.hpp +957 -0
  5. netgen/include/basevector.hpp +1268 -0
  6. netgen/include/bdbequations.hpp +2805 -0
  7. netgen/include/bdbintegrator.hpp +1660 -0
  8. netgen/include/bem_diffops.hpp +475 -0
  9. netgen/include/bessel.hpp +1064 -0
  10. netgen/include/bilinearform.hpp +963 -0
  11. netgen/include/bla.hpp +29 -0
  12. netgen/include/blockalloc.hpp +95 -0
  13. netgen/include/blockjacobi.hpp +328 -0
  14. netgen/include/bspline.hpp +116 -0
  15. netgen/include/calcinverse.hpp +141 -0
  16. netgen/include/cg.hpp +368 -0
  17. netgen/include/chebyshev.hpp +44 -0
  18. netgen/include/cholesky.hpp +720 -0
  19. netgen/include/clapack.h +7254 -0
  20. netgen/include/code_generation.hpp +296 -0
  21. netgen/include/coefficient.hpp +2033 -0
  22. netgen/include/coefficient_impl.hpp +19 -0
  23. netgen/include/coefficient_stdmath.hpp +167 -0
  24. netgen/include/commutingAMG.hpp +106 -0
  25. netgen/include/comp.hpp +79 -0
  26. netgen/include/compatibility.hpp +41 -0
  27. netgen/include/complex_wrapper.hpp +73 -0
  28. netgen/include/compressedfespace.hpp +110 -0
  29. netgen/include/contact.hpp +235 -0
  30. netgen/include/diagonalmatrix.hpp +154 -0
  31. netgen/include/differentialoperator.hpp +276 -0
  32. netgen/include/diffop.hpp +1286 -0
  33. netgen/include/diffop_impl.hpp +328 -0
  34. netgen/include/diffopwithfactor.hpp +123 -0
  35. netgen/include/discontinuous.hpp +84 -0
  36. netgen/include/dump.hpp +949 -0
  37. netgen/include/ectypes.hpp +121 -0
  38. netgen/include/eigen.hpp +60 -0
  39. netgen/include/eigensystem.hpp +18 -0
  40. netgen/include/elasticity_equations.hpp +595 -0
  41. netgen/include/elementbyelement.hpp +195 -0
  42. netgen/include/elementtopology.hpp +1760 -0
  43. netgen/include/elementtransformation.hpp +339 -0
  44. netgen/include/evalfunc.hpp +405 -0
  45. netgen/include/expr.hpp +1686 -0
  46. netgen/include/facetfe.hpp +175 -0
  47. netgen/include/facetfespace.hpp +180 -0
  48. netgen/include/facethofe.hpp +111 -0
  49. netgen/include/facetsurffespace.hpp +112 -0
  50. netgen/include/fe_interfaces.hpp +32 -0
  51. netgen/include/fem.hpp +87 -0
  52. netgen/include/fesconvert.hpp +14 -0
  53. netgen/include/fespace.hpp +1449 -0
  54. netgen/include/finiteelement.hpp +286 -0
  55. netgen/include/globalinterfacespace.hpp +77 -0
  56. netgen/include/globalspace.hpp +115 -0
  57. netgen/include/gridfunction.hpp +525 -0
  58. netgen/include/h1amg.hpp +124 -0
  59. netgen/include/h1hofe.hpp +188 -0
  60. netgen/include/h1hofe_impl.hpp +1262 -0
  61. netgen/include/h1hofefo.hpp +148 -0
  62. netgen/include/h1hofefo_impl.hpp +185 -0
  63. netgen/include/h1hofespace.hpp +167 -0
  64. netgen/include/h1lofe.hpp +1240 -0
  65. netgen/include/h1lumping.hpp +41 -0
  66. netgen/include/hcurl_equations.hpp +1381 -0
  67. netgen/include/hcurlcurlfe.hpp +2241 -0
  68. netgen/include/hcurlcurlfespace.hpp +78 -0
  69. netgen/include/hcurlfe.hpp +259 -0
  70. netgen/include/hcurlfe_utils.hpp +107 -0
  71. netgen/include/hcurlhdiv_dshape.hpp +857 -0
  72. netgen/include/hcurlhdivfes.hpp +308 -0
  73. netgen/include/hcurlhofe.hpp +175 -0
  74. netgen/include/hcurlhofe_impl.hpp +1871 -0
  75. netgen/include/hcurlhofespace.hpp +193 -0
  76. netgen/include/hcurllofe.hpp +1146 -0
  77. netgen/include/hdiv_equations.hpp +880 -0
  78. netgen/include/hdivdivfe.hpp +2923 -0
  79. netgen/include/hdivdivsurfacespace.hpp +76 -0
  80. netgen/include/hdivfe.hpp +206 -0
  81. netgen/include/hdivfe_utils.hpp +717 -0
  82. netgen/include/hdivfes.hpp +75 -0
  83. netgen/include/hdivhofe.hpp +447 -0
  84. netgen/include/hdivhofe_impl.hpp +1107 -0
  85. netgen/include/hdivhofefo.hpp +229 -0
  86. netgen/include/hdivhofespace.hpp +177 -0
  87. netgen/include/hdivhosurfacefespace.hpp +106 -0
  88. netgen/include/hdivlofe.hpp +773 -0
  89. netgen/include/hidden.hpp +74 -0
  90. netgen/include/householder.hpp +181 -0
  91. netgen/include/hypre_ams_precond.hpp +123 -0
  92. netgen/include/hypre_precond.hpp +73 -0
  93. netgen/include/integrator.hpp +2012 -0
  94. netgen/include/integratorcf.hpp +253 -0
  95. netgen/include/interpolate.hpp +49 -0
  96. netgen/include/intrule.hpp +2542 -0
  97. netgen/include/intrules_SauterSchwab.hpp +25 -0
  98. netgen/include/irspace.hpp +49 -0
  99. netgen/include/jacobi.hpp +153 -0
  100. netgen/include/kernels.hpp +762 -0
  101. netgen/include/l2hofe.hpp +194 -0
  102. netgen/include/l2hofe_impl.hpp +564 -0
  103. netgen/include/l2hofefo.hpp +542 -0
  104. netgen/include/l2hofespace.hpp +344 -0
  105. netgen/include/la.hpp +38 -0
  106. netgen/include/linearform.hpp +266 -0
  107. netgen/include/matrix.hpp +2140 -0
  108. netgen/include/memusage.hpp +41 -0
  109. netgen/include/meshaccess.hpp +1359 -0
  110. netgen/include/mgpre.hpp +204 -0
  111. netgen/include/mp_coefficient.hpp +145 -0
  112. netgen/include/mptools.hpp +2281 -0
  113. netgen/include/multigrid.hpp +42 -0
  114. netgen/include/multivector.hpp +447 -0
  115. netgen/include/mumpsinverse.hpp +187 -0
  116. netgen/include/mycomplex.hpp +361 -0
  117. netgen/include/ng_lapack.hpp +1661 -0
  118. netgen/include/ngblas.hpp +1232 -0
  119. netgen/include/ngs_defines.hpp +30 -0
  120. netgen/include/ngs_stdcpp_include.hpp +106 -0
  121. netgen/include/ngs_utils.hpp +121 -0
  122. netgen/include/ngsobject.hpp +1019 -0
  123. netgen/include/ngsstream.hpp +113 -0
  124. netgen/include/ngstd.hpp +72 -0
  125. netgen/include/nodalhofe.hpp +96 -0
  126. netgen/include/nodalhofe_impl.hpp +141 -0
  127. netgen/include/normalfacetfe.hpp +223 -0
  128. netgen/include/normalfacetfespace.hpp +98 -0
  129. netgen/include/normalfacetsurfacefespace.hpp +84 -0
  130. netgen/include/order.hpp +251 -0
  131. netgen/include/parallel_matrices.hpp +222 -0
  132. netgen/include/paralleldofs.hpp +340 -0
  133. netgen/include/parallelngs.hpp +23 -0
  134. netgen/include/parallelvector.hpp +269 -0
  135. netgen/include/pardisoinverse.hpp +200 -0
  136. netgen/include/periodic.hpp +129 -0
  137. netgen/include/plateaufespace.hpp +25 -0
  138. netgen/include/pml.hpp +275 -0
  139. netgen/include/pmltrafo.hpp +631 -0
  140. netgen/include/postproc.hpp +142 -0
  141. netgen/include/potentialtools.hpp +22 -0
  142. netgen/include/precomp.hpp +60 -0
  143. netgen/include/preconditioner.hpp +602 -0
  144. netgen/include/prolongation.hpp +377 -0
  145. netgen/include/python_comp.hpp +107 -0
  146. netgen/include/python_fem.hpp +89 -0
  147. netgen/include/python_linalg.hpp +58 -0
  148. netgen/include/python_ngstd.hpp +386 -0
  149. netgen/include/recursive_pol.hpp +4896 -0
  150. netgen/include/recursive_pol_tet.hpp +395 -0
  151. netgen/include/recursive_pol_trig.hpp +492 -0
  152. netgen/include/reorderedfespace.hpp +81 -0
  153. netgen/include/sample_sort.hpp +105 -0
  154. netgen/include/scalarfe.hpp +335 -0
  155. netgen/include/shapefunction_utils.hpp +113 -0
  156. netgen/include/simd_complex.hpp +329 -0
  157. netgen/include/smoother.hpp +253 -0
  158. netgen/include/solve.hpp +89 -0
  159. netgen/include/sparsecholesky.hpp +313 -0
  160. netgen/include/sparsematrix.hpp +1038 -0
  161. netgen/include/sparsematrix_dyn.hpp +90 -0
  162. netgen/include/sparsematrix_impl.hpp +1013 -0
  163. netgen/include/special_matrix.hpp +463 -0
  164. netgen/include/specialelement.hpp +125 -0
  165. netgen/include/statushandler.hpp +33 -0
  166. netgen/include/stringops.hpp +12 -0
  167. netgen/include/superluinverse.hpp +136 -0
  168. netgen/include/symbolicintegrator.hpp +850 -0
  169. netgen/include/symmetricmatrix.hpp +144 -0
  170. netgen/include/tangentialfacetfe.hpp +224 -0
  171. netgen/include/tangentialfacetfespace.hpp +91 -0
  172. netgen/include/tensor.hpp +522 -0
  173. netgen/include/tensorcoefficient.hpp +446 -0
  174. netgen/include/tensorproductintegrator.hpp +113 -0
  175. netgen/include/thcurlfe.hpp +128 -0
  176. netgen/include/thcurlfe_impl.hpp +380 -0
  177. netgen/include/thdivfe.hpp +80 -0
  178. netgen/include/thdivfe_impl.hpp +492 -0
  179. netgen/include/tpdiffop.hpp +461 -0
  180. netgen/include/tpfes.hpp +133 -0
  181. netgen/include/tpintrule.hpp +224 -0
  182. netgen/include/triangular.hpp +465 -0
  183. netgen/include/tscalarfe.hpp +245 -0
  184. netgen/include/tscalarfe_impl.hpp +1029 -0
  185. netgen/include/umfpackinverse.hpp +148 -0
  186. netgen/include/vector.hpp +1273 -0
  187. netgen/include/voxelcoefficientfunction.hpp +41 -0
  188. netgen/include/vtkoutput.hpp +198 -0
  189. netgen/include/vvector.hpp +208 -0
  190. netgen/include/webgui.hpp +92 -0
  191. netgen/libngbla.dylib +0 -0
  192. netgen/libngcomp.dylib +0 -0
  193. netgen/libngfem.dylib +0 -0
  194. netgen/libngla.dylib +0 -0
  195. netgen/libngsbem.dylib +0 -0
  196. netgen/libngsolve.dylib +0 -0
  197. netgen/libngstd.dylib +0 -0
  198. ngsolve/TensorProductTools.py +210 -0
  199. ngsolve/__console.py +94 -0
  200. ngsolve/__expr.py +181 -0
  201. ngsolve/__init__.py +148 -0
  202. ngsolve/__init__.pyi +233 -0
  203. ngsolve/_scikit_build_core_dependencies.py +30 -0
  204. ngsolve/bla.pyi +1153 -0
  205. ngsolve/bvp.py +78 -0
  206. ngsolve/bvp.pyi +32 -0
  207. ngsolve/cmake/NGSolveConfig.cmake +102 -0
  208. ngsolve/cmake/ngsolve-targets-release.cmake +79 -0
  209. ngsolve/cmake/ngsolve-targets.cmake +163 -0
  210. ngsolve/comp/__init__.pyi +5449 -0
  211. ngsolve/comp/pml.pyi +89 -0
  212. ngsolve/config/__init__.py +1 -0
  213. ngsolve/config/__init__.pyi +43 -0
  214. ngsolve/config/__main__.py +4 -0
  215. ngsolve/config/config.py +60 -0
  216. ngsolve/config/config.pyi +45 -0
  217. ngsolve/demos/TensorProduct/__init__.py +0 -0
  218. ngsolve/demos/TensorProduct/tp_dg_1d_1d.py +80 -0
  219. ngsolve/demos/TensorProduct/tp_dg_1d_2d.py +73 -0
  220. ngsolve/demos/TensorProduct/tp_dg_2d_1d.py +72 -0
  221. ngsolve/demos/TensorProduct/tp_dg_2d_2d.py +66 -0
  222. ngsolve/demos/__init__.py +0 -0
  223. ngsolve/demos/howto/__init__.py +0 -0
  224. ngsolve/demos/howto/hhj.py +44 -0
  225. ngsolve/demos/howto/hybrid_dg.py +53 -0
  226. ngsolve/demos/howto/mixed.py +30 -0
  227. ngsolve/demos/howto/nonlin.py +29 -0
  228. ngsolve/demos/howto/pickling.py +26 -0
  229. ngsolve/demos/howto/pml.py +31 -0
  230. ngsolve/demos/howto/taskmanager.py +20 -0
  231. ngsolve/demos/howto/tdnns.py +47 -0
  232. ngsolve/demos/howto/timeDG-skeleton.py +45 -0
  233. ngsolve/demos/howto/timeDG.py +38 -0
  234. ngsolve/demos/howto/timeDGlap.py +42 -0
  235. ngsolve/demos/howto/timeDGwave.py +61 -0
  236. ngsolve/demos/intro/__init__.py +0 -0
  237. ngsolve/demos/intro/adaptive.py +123 -0
  238. ngsolve/demos/intro/cmagnet.py +59 -0
  239. ngsolve/demos/intro/elasticity.py +76 -0
  240. ngsolve/demos/intro/navierstokes.py +74 -0
  241. ngsolve/demos/intro/poisson.ipynb +170 -0
  242. ngsolve/demos/intro/poisson.py +41 -0
  243. ngsolve/demos/mpi/__init__.py +0 -0
  244. ngsolve/demos/mpi/mpi_cmagnet.py +87 -0
  245. ngsolve/demos/mpi/mpi_navierstokes.py +117 -0
  246. ngsolve/demos/mpi/mpi_poisson.py +89 -0
  247. ngsolve/demos/mpi/mpi_timeDG.py +82 -0
  248. ngsolve/directsolvers.py +26 -0
  249. ngsolve/directsolvers.pyi +15 -0
  250. ngsolve/eigenvalues.py +364 -0
  251. ngsolve/eigenvalues.pyi +30 -0
  252. ngsolve/fem.pyi +1647 -0
  253. ngsolve/internal.py +89 -0
  254. ngsolve/krylovspace.py +1013 -0
  255. ngsolve/krylovspace.pyi +298 -0
  256. ngsolve/la.pyi +1230 -0
  257. ngsolve/meshes.py +748 -0
  258. ngsolve/ngs2petsc.py +310 -0
  259. ngsolve/ngscxx.py +42 -0
  260. ngsolve/ngslib.so +0 -0
  261. ngsolve/ngstd.pyi +59 -0
  262. ngsolve/nonlinearsolvers.py +203 -0
  263. ngsolve/nonlinearsolvers.pyi +95 -0
  264. ngsolve/preconditioners.py +11 -0
  265. ngsolve/preconditioners.pyi +7 -0
  266. ngsolve/solve.pyi +109 -0
  267. ngsolve/solve_implementation.py +168 -0
  268. ngsolve/solve_implementation.pyi +42 -0
  269. ngsolve/solvers.py +7 -0
  270. ngsolve/solvers.pyi +14 -0
  271. ngsolve/timestepping.py +185 -0
  272. ngsolve/timestepping.pyi +28 -0
  273. ngsolve/timing.py +108 -0
  274. ngsolve/timing.pyi +54 -0
  275. ngsolve/utils.py +167 -0
  276. ngsolve/utils.pyi +273 -0
  277. ngsolve/webgui.py +670 -0
  278. ngsolve-6.2.2506.post74.dev0.data/data/Netgen.icns +0 -0
  279. ngsolve-6.2.2506.post74.dev0.data/data/bin/ngscxx +17 -0
  280. ngsolve-6.2.2506.post74.dev0.data/data/bin/ngsld +13 -0
  281. ngsolve-6.2.2506.post74.dev0.data/data/bin/ngsolve.tcl +648 -0
  282. ngsolve-6.2.2506.post74.dev0.data/data/bin/ngspy +2 -0
  283. ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/beam.geo +17 -0
  284. ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/beam.vol +240 -0
  285. ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/chip.in2d +41 -0
  286. ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/chip.vol +614 -0
  287. ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/coil.geo +12 -0
  288. ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/coil.vol +2560 -0
  289. ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/coilshield.geo +24 -0
  290. ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/coilshield.vol +3179 -0
  291. ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/cube.geo +19 -0
  292. ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/cube.vol +1832 -0
  293. ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/d10_DGdoubleglazing.pde +50 -0
  294. ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/d11_chip_nitsche.pde +40 -0
  295. ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/d1_square.pde +43 -0
  296. ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/d2_chip.pde +35 -0
  297. ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/d3_helmholtz.pde +22 -0
  298. ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/d4_cube.pde +46 -0
  299. ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/d5_beam.pde +74 -0
  300. ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/d6_shaft.pde +73 -0
  301. ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/d7_coil.pde +50 -0
  302. ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/d8_coilshield.pde +49 -0
  303. ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/d9_hybridDG.pde +72 -0
  304. ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/doubleglazing.in2d +27 -0
  305. ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/doubleglazing.vol +737 -0
  306. ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/piezo2d40round4.vol.gz +0 -0
  307. ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/shaft.geo +73 -0
  308. ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/shaft.vol +4291 -0
  309. ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/square.in2d +17 -0
  310. ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/square.vol +149 -0
  311. ngsolve-6.2.2506.post74.dev0.dist-info/METADATA +13 -0
  312. ngsolve-6.2.2506.post74.dev0.dist-info/RECORD +315 -0
  313. ngsolve-6.2.2506.post74.dev0.dist-info/WHEEL +5 -0
  314. ngsolve-6.2.2506.post74.dev0.dist-info/licenses/LICENSE +504 -0
  315. ngsolve-6.2.2506.post74.dev0.dist-info/top_level.txt +2 -0
@@ -0,0 +1,492 @@
1
+ #include <thdivfe.hpp>
2
+ #include "hdivfe_utils.hpp"
3
+
4
+ namespace ngfem
5
+ {
6
+
7
+ template<int DIM>
8
+ INLINE auto GetTIPHDiv (const IntegrationPoint & ip);
9
+
10
+
11
+ template<>
12
+ INLINE auto GetTIPHDiv<2> (const IntegrationPoint & ip)
13
+ {
14
+ TIP<2,AutoDiff<2>> tip { ip, ip.FacetNr(), ip.VB() };
15
+ tip.x.DValue(0) = 0;
16
+ tip.x.DValue(1) = 1;
17
+ tip.y.DValue(0) = -1;
18
+ tip.y.DValue(1) = 0;
19
+ return tip;
20
+ }
21
+
22
+ template<>
23
+ INLINE auto GetTIPHDiv<3> (const IntegrationPoint & ip)
24
+ {
25
+ TIP<3,AutoDiff<3>> tip = ip;
26
+ return tip;
27
+ }
28
+
29
+
30
+
31
+ template<int DIMS, int DIMR>
32
+ INLINE auto GetTIPHDiv (const MappedIntegrationPoint<DIMS,DIMR> & mip)
33
+ {
34
+ return GetTIP (mip);
35
+ }
36
+
37
+ template<int DIMS, int DIMR>
38
+ INLINE auto GetTIPHDiv (const SIMD<MappedIntegrationPoint<DIMS,DIMR>> & mip)
39
+ {
40
+ return GetTIP (mip);
41
+ }
42
+
43
+ template <int DIMR>
44
+ INLINE auto GetTIPHDiv (const MappedIntegrationPoint<2,DIMR> & mip)
45
+ {
46
+ TIP<2,AutoDiff<DIMR>> adp(mip.IP().FacetNr(), mip.IP().VB());
47
+ Mat<DIMR,2> jac = mip.GetJacobian();
48
+ jac *= 1/mip.GetJacobiDet();
49
+ const auto &ip = mip.IP();
50
+ adp.x.Value() = ip(0);
51
+ adp.y.Value() = ip(1);
52
+ for (int i = 0; i < DIMR; i++)
53
+ {
54
+ adp.x.DValue(i) = jac(i,1);
55
+ adp.y.DValue(i) = -jac(i,0);
56
+ }
57
+ // adp.facetnr = mip.IP().FacetNr();
58
+ // adp.vb = mip.IP().VB();
59
+ return adp;
60
+ }
61
+
62
+ template <int DIMR>
63
+ INLINE auto GetTIPHDiv (const SIMD<MappedIntegrationPoint<2,DIMR>> & mip)
64
+ {
65
+ TIP<2,AutoDiff<DIMR,SIMD<double>>> adp(mip.IP().FacetNr(), mip.IP().VB());
66
+ Mat<DIMR,2,SIMD<double>> jac = mip.GetJacobian();
67
+ jac *= 1/mip.GetJacobiDet();
68
+ const auto &ip = mip.IP();
69
+ adp.x.Value() = ip(0);
70
+ adp.y.Value() = ip(1);
71
+ for (int i = 0; i < DIMR; i++)
72
+ {
73
+ adp.x.DValue(i) = jac(i,1);
74
+ adp.y.DValue(i) = -jac(i,0);
75
+ }
76
+ // adp.facetnr = mip.IP().FacetNr();
77
+ // adp.vb = mip.IP().VB();
78
+ return adp;
79
+ }
80
+
81
+
82
+ template <class FEL, ELEMENT_TYPE ET>
83
+ void T_HDivFiniteElement<FEL,ET> ::
84
+ CalcShape (const IntegrationPoint & ip,
85
+ BareSliceMatrix<> shape) const
86
+ {
87
+ /*
88
+ static_cast<const FEL*> (this) ->
89
+ T_CalcShape (GetTIPGrad<DIM>(ip),
90
+ SBLambda( [shape] (size_t nr, THDiv2Shape<DIM> val) LAMBDA_INLINE
91
+ {
92
+ shape.Row(nr) = Vec<DIM> (val);
93
+ }));
94
+ */
95
+
96
+ static_cast<const FEL*> (this) ->
97
+ T_CalcShape (GetTIPHDiv<DIM>(ip),
98
+ SBLambda( [shape] (size_t nr, auto val) LAMBDA_INLINE
99
+ {
100
+ shape.Row(nr) = HDiv2ShapeNew(val);
101
+ }));
102
+ }
103
+
104
+
105
+ template <class FEL, ELEMENT_TYPE ET>
106
+ void T_HDivFiniteElement<FEL,ET> ::
107
+ CalcDivShape (const IntegrationPoint & ip,
108
+ BareSliceVector<> divshape) const
109
+ {
110
+ static_cast<const FEL*> (this) ->
111
+ T_CalcShape (GetTIPGrad<DIM>(ip),
112
+ SBLambda( [divshape] (size_t nr, THDiv2DivShape<DIM> val) LAMBDA_INLINE
113
+ {
114
+ divshape(nr) = val;
115
+ }));
116
+ }
117
+
118
+ #ifndef FASTCOMPILE
119
+
120
+ template <class FEL, ELEMENT_TYPE ET>
121
+ void T_HDivFiniteElement<FEL,ET> ::
122
+ CalcMappedShape (const BaseMappedIntegrationPoint & bmip,
123
+ BareSliceMatrix<> shape) const
124
+ {
125
+ Iterate<4-DIM>
126
+ ([this,&bmip,shape](auto CODIM)
127
+ {
128
+ constexpr int DIMSPACE = DIM+CODIM.value;
129
+ if (bmip.DimSpace() == DIMSPACE)
130
+ {
131
+ auto & mip = static_cast<const MappedIntegrationPoint<DIM,DIM+CODIM.value>&> (bmip);
132
+ static_cast<const FEL*> (this) ->
133
+ T_CalcShape (GetTIPHDiv(mip),
134
+ SBLambda ([shape](size_t nr, auto s)
135
+ {
136
+ shape.Row(nr) = HDiv2ShapeNew(s);
137
+ }));
138
+ }
139
+ });
140
+ }
141
+
142
+ template <class FEL, ELEMENT_TYPE ET>
143
+ void T_HDivFiniteElement<FEL,ET>::
144
+ CalcMappedShape (const BaseMappedIntegrationRule & bmir,
145
+ BareSliceMatrix<> shapes) const
146
+ {
147
+ Iterate<4-DIM>
148
+ ([this,&bmir,shapes](auto CODIM)
149
+ {
150
+ constexpr int DIMSPACE = DIM+CODIM.value;
151
+ if (bmir.DimSpace() == DIMSPACE)
152
+ {
153
+ auto & mir = static_cast<const MappedIntegrationRule<DIM,DIM+CODIM.value>&> (bmir);
154
+ for (size_t i = 0; i < mir.Size(); i++)
155
+ this->CalcMappedShape (mir[i], shapes.Cols(i*DIMSPACE,(i+1)*DIMSPACE));
156
+ }
157
+ });
158
+ }
159
+
160
+ template <class FEL, ELEMENT_TYPE ET>
161
+ void T_HDivFiniteElement<FEL,ET>::
162
+ CalcMappedShape (const SIMD<MappedIntegrationPoint<DIM,DIM>> & mip,
163
+ BareSliceMatrix<SIMD<double>> shapes) const
164
+ {
165
+ static_cast<const FEL*> (this) ->
166
+ T_CalcShape (GetTIPHDiv(mip),
167
+ SBLambda ([shapes] (size_t j, auto s)
168
+ {
169
+ auto vshape = HDiv2ShapeNew (s);
170
+ for (size_t k = 0; k < vshape.Size(); k++)
171
+ shapes(j*DIM+k, 0) = vshape(k);
172
+ }));
173
+ }
174
+
175
+ template <class FEL, ELEMENT_TYPE ET>
176
+ void T_HDivFiniteElement<FEL,ET>::
177
+ CalcMappedShape (const SIMD_BaseMappedIntegrationRule & bmir,
178
+ BareSliceMatrix<SIMD<double>> shapes) const
179
+ {
180
+ Iterate<4-DIM>
181
+ ([this,&bmir,shapes](auto CODIM)
182
+ {
183
+ constexpr int DIMSPACE = DIM+CODIM.value;
184
+ if (bmir.DimSpace() == DIMSPACE)
185
+ {
186
+ auto & mir = static_cast<const SIMD_MappedIntegrationRule<DIM,DIMSPACE>&> (bmir);
187
+ for (size_t i = 0; i < mir.Size(); i++)
188
+ {
189
+ auto shapesi = shapes.Col(i);
190
+ static_cast<const FEL*> (this) ->
191
+ T_CalcShape (GetTIPHDiv(mir[i]),
192
+ SBLambda ([shapesi] (size_t j, auto s)
193
+ {
194
+ auto vshape = HDiv2ShapeNew (s);
195
+ shapesi.Range(j*vshape.Size(), (j+1)*vshape.Size()) = vshape;
196
+ }));
197
+ }
198
+ }
199
+ });
200
+ }
201
+
202
+ template <class FEL, ELEMENT_TYPE ET>
203
+ void T_HDivFiniteElement<FEL,ET>::
204
+ CalcMappedNormalShape (const SIMD_BaseMappedIntegrationRule & bmir,
205
+ BareSliceMatrix<SIMD<double>> shapes) const
206
+ {
207
+ Iterate<4-DIM>
208
+ ([this,&bmir,shapes](auto CODIM)
209
+ {
210
+ constexpr int DIMSPACE = DIM+CODIM.value;
211
+ if (bmir.DimSpace() == DIMSPACE)
212
+ {
213
+ auto & mir = static_cast<const SIMD_MappedIntegrationRule<DIM,DIMSPACE>&> (bmir);
214
+ for (size_t i = 0; i < mir.Size(); i++)
215
+ {
216
+ auto nv = mir[i].GetNV();
217
+ auto shapesi = shapes.Col(i);
218
+ static_cast<const FEL*> (this) ->
219
+ T_CalcShape (GetTIPHDiv(mir[i]),
220
+ SBLambda ([shapesi, nv] (size_t j, auto s)
221
+ {
222
+ auto vshape = HDiv2ShapeNew (s);
223
+ // shapesi.Range(j*vshape.Size(), (j+1)*vshape.Size()) = vshape;
224
+ shapesi(j) = InnerProduct(nv, vshape);
225
+ }));
226
+ }
227
+ }
228
+ });
229
+ }
230
+
231
+
232
+
233
+ template <class FEL, ELEMENT_TYPE ET>
234
+ void T_HDivFiniteElement<FEL,ET>::
235
+ CalcMappedDivShape (const SIMD_BaseMappedIntegrationRule & bmir,
236
+ BareSliceMatrix<SIMD<double>> divshapes) const
237
+ {
238
+ /*
239
+ auto & mir = static_cast<const SIMD_MappedIntegrationRule<DIM,DIM>&> (bmir);
240
+ for (size_t i = 0; i < mir.Size(); i++)
241
+ {
242
+ auto divshapesi = divshapes.Col(i);
243
+ static_cast<const FEL*> (this) ->
244
+ T_CalcShape (GetTIP(mir[i]),
245
+ SBLambda ([divshapesi] (size_t j, THDiv2DivShape<DIM,SIMD<double>> val)
246
+ {
247
+ divshapesi(j) = val;
248
+ }));
249
+ }
250
+ */
251
+ Iterate<4-DIM>
252
+ ([this,&bmir,divshapes](auto CODIM)
253
+ {
254
+ constexpr int DIMSPACE = DIM+CODIM.value;
255
+ if (bmir.DimSpace() == DIMSPACE)
256
+ {
257
+ // cout << "use new div, dim " << DIMSPACE << endl;
258
+ auto & mir = static_cast<const SIMD_MappedIntegrationRule<DIM,DIMSPACE>&> (bmir);
259
+ for (size_t i = 0; i < mir.Size(); i++)
260
+ {
261
+ auto divshapesi = divshapes.Col(i);
262
+ auto invJ = 1.0/mir[i].GetJacobiDet();
263
+ static_cast<const FEL*> (this) ->
264
+ T_CalcShape (GetTIPGrad<DIM>(mir[i].IP()),
265
+ SBLambda ([divshapesi,invJ] (size_t j, THDiv2DivShape<DIM,SIMD<double>> val)
266
+ {
267
+ divshapesi(j) = invJ*val.Get();
268
+ }));
269
+ }
270
+ }
271
+ });
272
+
273
+ }
274
+
275
+ template <class FEL, ELEMENT_TYPE ET>
276
+ void T_HDivFiniteElement<FEL,ET> ::
277
+ Evaluate (const IntegrationRule & ir, FlatVector<double> coefs,
278
+ BareSliceMatrix<> vals) const
279
+ {
280
+ /*
281
+ for (size_t i = 0; i < ir.GetNIP(); i++)
282
+ {
283
+ Vec<DIM, AutoDiff<DIM>> adp = ir[i];
284
+
285
+ Vec<DIM> sum = 0;
286
+ static_cast<const FEL*> (this) ->
287
+ T_CalcShape (TIP<DIM,AutoDiff<DIM>>(adp, ir[i].FacetNr(), ir[i].VB()),
288
+ SBLambda([coefs,&sum] (size_t j, THDiv2Shape<DIM> vshape)
289
+ {
290
+ sum += coefs(j) * Vec<DIM> (vshape);
291
+ }));
292
+ vals.Row(i) = sum;
293
+ }
294
+ */
295
+
296
+ for (size_t i = 0; i < ir.GetNIP(); i++)
297
+ {
298
+ // Vec<DIM, AutoDiff<DIM>> adp = ir[i];
299
+
300
+ Vec<DIM> sum = 0;
301
+ static_cast<const FEL*> (this) ->
302
+ T_CalcShape (GetTIPHDiv<DIM>(ir[i]),
303
+ SBLambda([coefs,&sum] (size_t j, auto s)
304
+ {
305
+ sum += coefs(j) * HDiv2ShapeNew(s);
306
+ }));
307
+ vals.Row(i) = sum;
308
+ }
309
+ }
310
+
311
+
312
+ template <class FEL, ELEMENT_TYPE ET>
313
+ void T_HDivFiniteElement<FEL,ET> ::
314
+ EvaluateTrans (const IntegrationRule & ir,
315
+ BareSliceMatrix<> vals,
316
+ FlatVector<double> coefs) const
317
+ {
318
+ /*
319
+ coefs = 0;
320
+ for (size_t i = 0; i < ir.GetNIP(); i++)
321
+ {
322
+ Vec<DIM, AutoDiff<DIM>> adp = ir[i];
323
+
324
+ Vec<DIM> val = vals.Row(i);
325
+ static_cast<const FEL*> (this) ->
326
+ T_CalcShape (TIP<DIM,AutoDiff<DIM>>(adp, ir[i].FacetNr(), ir[i].VB()),
327
+ SBLambda([coefs,val] (size_t j, THDiv2Shape<DIM> vshape)
328
+ {
329
+ coefs(j) += InnerProduct (val, Vec<DIM> (vshape));
330
+ }));
331
+ }
332
+ */
333
+
334
+ coefs = 0;
335
+ for (size_t i = 0; i < ir.GetNIP(); i++)
336
+ {
337
+ Vec<DIM> val = vals.Row(i);
338
+ static_cast<const FEL*> (this) ->
339
+ T_CalcShape (GetTIPHDiv<DIM>(ir[i]),
340
+ SBLambda([coefs,val] (size_t j, auto s)
341
+ {
342
+ coefs(j) += InnerProduct (val, HDiv2ShapeNew(s));
343
+ }));
344
+ }
345
+ }
346
+
347
+
348
+
349
+ template <class FEL, ELEMENT_TYPE ET>
350
+ void T_HDivFiniteElement<FEL,ET> ::
351
+ Evaluate (const SIMD_BaseMappedIntegrationRule & bmir, BareSliceVector<> coefs, BareSliceMatrix<SIMD<double>> values) const
352
+ {
353
+ Iterate<4-DIM>
354
+ ([this,&bmir,coefs,values](auto CODIM)
355
+ {
356
+ constexpr int DIMSPACE = DIM+CODIM.value;
357
+ if (bmir.DimSpace() == DIMSPACE)
358
+ {
359
+ auto & mir = static_cast<const SIMD_MappedIntegrationRule<DIM,DIMSPACE>&> (bmir);
360
+ for (size_t i = 0; i < mir.Size(); i++)
361
+ {
362
+ Vec<DIMSPACE,SIMD<double>> sum(0.0);
363
+ static_cast<const FEL*> (this) ->
364
+ T_CalcShape (GetTIPHDiv(mir[i]),
365
+ SBLambda ([coefs,&sum] (size_t j, auto s)
366
+ {
367
+ sum += coefs(j) * HDiv2ShapeNew(s);
368
+ }));
369
+ values.Col(i).Range(DIMSPACE) = sum;
370
+ }
371
+ }
372
+ });
373
+
374
+ }
375
+
376
+ template <class FEL, ELEMENT_TYPE ET>
377
+ void T_HDivFiniteElement<FEL,ET> ::
378
+ AddTrans (const SIMD_BaseMappedIntegrationRule & bmir, BareSliceMatrix<SIMD<double>> values,
379
+ BareSliceVector<> coefs) const
380
+ {
381
+ Iterate<4-DIM>
382
+ ([this,&bmir,values,coefs](auto CODIM)
383
+ {
384
+ constexpr int DIMSPACE = DIM+CODIM.value;
385
+ if (bmir.DimSpace() == DIMSPACE)
386
+ {
387
+ auto & mir = static_cast<const SIMD_MappedIntegrationRule<DIM,DIMSPACE>&> (bmir);
388
+ for (size_t i = 0; i < mir.Size(); i++)
389
+ {
390
+ Vec<DIMSPACE, SIMD<double>> vali = values.Col(i);
391
+ // for (int k = 0; k < DIMSPACE; k++)
392
+ // vali(k) = values(k,i);
393
+ static_cast<const FEL*> (this) ->
394
+ T_CalcShape (GetTIPHDiv(mir[i]),
395
+ SBLambda ([vali,coefs] (size_t j, auto s)
396
+ {
397
+ auto vshape = HDiv2ShapeNew(s);
398
+ coefs(j) += HSum(InnerProduct(vali,vshape));
399
+ }));
400
+ }
401
+ }
402
+ });
403
+ }
404
+
405
+
406
+ template <class FEL, ELEMENT_TYPE ET>
407
+ void T_HDivFiniteElement<FEL,ET> ::
408
+ EvaluateDiv (const SIMD_BaseMappedIntegrationRule & bmir, BareSliceVector<> coefs,
409
+ BareVector<SIMD<double>> values) const
410
+ {
411
+ /*
412
+ cout << "evaldiv, simd" << endl
413
+ auto & mir = static_cast<const SIMD_MappedIntegrationRule<DIM,DIM>&> (bmir);
414
+ for (size_t i = 0; i < mir.Size(); i++)
415
+ {
416
+ SIMD<double> sum(0.0);
417
+ static_cast<const FEL*> (this) ->
418
+ T_CalcShape (GetTIP(mir[i]),
419
+ SBLambda ([=,&sum] (size_t j, THDiv2DivShape<DIM,SIMD<double>> divshape)
420
+ {
421
+ // SIMD<double> simdshape = divshape;
422
+ // SIMD<double> simdshape = divshape.Get();
423
+ // sum += coefs(j) * simdshape;
424
+ sum += coefs(j) * divshape.Get();
425
+ }));
426
+ values(i) = sum;
427
+ }
428
+ */
429
+
430
+ /*
431
+ Iterate<4-DIM>
432
+ ([this,&bmir,coefs,values](auto CODIM)
433
+ {
434
+ constexpr int DIMSPACE = DIM+CODIM.value;
435
+ if (bmir.DimSpace() == DIMSPACE)
436
+ {
437
+ auto & mir = static_cast<const SIMD_MappedIntegrationRule<DIM,DIMSPACE>&> (bmir);
438
+ for (size_t i = 0; i < mir.Size(); i++)
439
+ {
440
+ SIMD<double> sum(0.0);
441
+ static_cast<const FEL*> (this) ->
442
+ T_CalcShape (GetTIPGrad<DIM>(mir[i].IP()),
443
+ SBLambda ([=,&sum] (size_t j, THDiv2DivShape<DIM,SIMD<double>> divshape)
444
+ {
445
+ // auto vshape = HDiv2DivShapeNew (s);
446
+ // shapesi.Range(j*vshape.Size(), (j+1)*vshape.Size()) = vshape;
447
+ // divshapesi(j) = HDiv2DivShapeNew (s);
448
+ sum += coefs(j) * divshape.Get();
449
+ }));
450
+ values(i) = 1/mir[i].GetJacobiDet() * sum;
451
+ }
452
+ }
453
+ });
454
+ */
455
+
456
+ auto & mir = bmir;
457
+ for (size_t i = 0; i < mir.Size(); i++)
458
+ {
459
+ SIMD<double> sum(0.0);
460
+ static_cast<const FEL*> (this) ->
461
+ T_CalcShape (GetTIPGrad<DIM>(mir[i].IP()),
462
+ SBLambda ([=,&sum] (size_t j, THDiv2DivShape<DIM,SIMD<double>> divshape)
463
+ {
464
+ sum += coefs(j) * divshape.Get();
465
+ }));
466
+ values(i) = 1/mir[i].GetJacobiDet() * sum;
467
+ }
468
+ }
469
+
470
+ template <class FEL, ELEMENT_TYPE ET>
471
+ void T_HDivFiniteElement<FEL,ET> ::
472
+ AddDivTrans (const SIMD_BaseMappedIntegrationRule & bmir, BareVector<SIMD<double>> values,
473
+ BareSliceVector<> coefs) const
474
+ {
475
+ auto & mir = static_cast<const SIMD_MappedIntegrationRule<DIM,DIM>&> (bmir);
476
+ for (size_t i = 0; i < mir.Size(); i++)
477
+ {
478
+ SIMD<double> vali = values(i);
479
+ static_cast<const FEL*> (this) ->
480
+ T_CalcShape (GetTIP(mir[i]),
481
+ SBLambda ([coefs,vali] (size_t j, THDiv2DivShape<DIM,SIMD<double>> divshape)
482
+ {
483
+ coefs(j) += HSum(divshape.Get()*vali);
484
+ }));
485
+ }
486
+ }
487
+
488
+
489
+
490
+
491
+ #endif
492
+ }