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