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,380 @@
1
+ #ifndef FILE_THCURLFE_IMPL
2
+ #define FILE_THCURLFE_IMPL
3
+
4
+
5
+ #include "thcurlfe.hpp"
6
+ #include "recursive_pol.hpp" // for SBLambda
7
+
8
+ namespace ngfem
9
+ {
10
+
11
+
12
+
13
+ /*******************************************/
14
+ /* T_HCurlHOFiniteElement */
15
+ /*******************************************/
16
+
17
+
18
+ template <ELEMENT_TYPE ET, typename SHAPES, typename BASE>
19
+ void T_HCurlHighOrderFiniteElement<ET,SHAPES,BASE> ::
20
+ CalcShape (const IntegrationPoint & ip, BareSliceMatrix<> shape) const
21
+ {
22
+ this->T_CalcShape (GetTIPGrad<DIM>(ip),
23
+ SBLambda ([shape](size_t i, auto s)
24
+ { shape.Row(i) = s.Value(); }));
25
+ }
26
+
27
+ template <ELEMENT_TYPE ET, typename SHAPES, typename BASE>
28
+ void T_HCurlHighOrderFiniteElement<ET, SHAPES,BASE> ::
29
+ CalcCurlShape (const IntegrationPoint & ip, BareSliceMatrix<> shape) const
30
+ {
31
+ this->T_CalcShape (GetTIPGrad<DIM>(ip),
32
+ SBLambda ([shape](size_t i, auto s)
33
+ { shape.Row(i) = s.CurlValue(); }));
34
+ }
35
+
36
+ #ifndef FASTCOMPILE
37
+
38
+ template <ELEMENT_TYPE ET, typename SHAPES, typename BASE>
39
+ void T_HCurlHighOrderFiniteElement<ET, SHAPES, BASE> ::
40
+ CalcMappedShape (const BaseMappedIntegrationPoint & bmip,
41
+ BareSliceMatrix<> shape) const
42
+ {
43
+ Switch<4-DIM>
44
+ (bmip.DimSpace()-DIM,[this,&bmip,shape](auto CODIM)
45
+ {
46
+ auto & mip = static_cast<const MappedIntegrationPoint<DIM,DIM+CODIM.value>&> (bmip);
47
+ this->T_CalcShape (GetTIP(mip),
48
+ SBLambda ([shape](size_t i, auto s)
49
+ {
50
+ shape.Row(i) = s.Value();
51
+ }));
52
+ });
53
+ }
54
+
55
+ template <ELEMENT_TYPE ET, typename SHAPES, typename BASE>
56
+ void T_HCurlHighOrderFiniteElement<ET,SHAPES,BASE> ::
57
+ CalcMappedShape (const BaseMappedIntegrationRule & bmir,
58
+ BareSliceMatrix<> shapes) const
59
+ {
60
+ Switch<4-DIM>
61
+ (bmir.DimSpace()-DIM,[this,&bmir,shapes](auto CODIM)
62
+ {
63
+ constexpr int DIMSPACE = DIM+CODIM.value;
64
+ auto & mir = static_cast<const MappedIntegrationRule<DIM,DIM+CODIM.value>&> (bmir);
65
+ for (size_t i = 0; i < mir.Size(); i++)
66
+ this->CalcMappedShape (mir[i], shapes.Cols(i*DIMSPACE,(i+1)*DIMSPACE));
67
+ });
68
+ }
69
+
70
+ template <ELEMENT_TYPE ET, typename SHAPES, typename BASE>
71
+ void T_HCurlHighOrderFiniteElement<ET, SHAPES, BASE> ::
72
+ CalcMappedShape (const SIMD<BaseMappedIntegrationPoint> & bmip,
73
+ BareSliceMatrix<SIMD<double>> shape) const
74
+ {
75
+ Switch<4-DIM>
76
+ (bmip.DimSpace()-DIM,[this,&bmip,shape](auto CODIM)
77
+ {
78
+ constexpr int DIMSPACE = DIM+CODIM.value;
79
+ auto & mip = static_cast<const SIMD<MappedIntegrationPoint<DIM,DIM+CODIM.value>>&> (bmip);
80
+ this->T_CalcShape (GetTIP(mip),
81
+ SBLambda ([shape, DIMSPACE](size_t i, auto s)
82
+ {
83
+ shape.Col(0).Range(i*DIMSPACE, (i+1)*DIMSPACE) = s.Value();
84
+ }));
85
+ });
86
+ }
87
+
88
+ template <ELEMENT_TYPE ET, typename SHAPES, typename BASE>
89
+ void T_HCurlHighOrderFiniteElement<ET,SHAPES,BASE> ::
90
+ CalcMappedShape (const SIMD_BaseMappedIntegrationRule & bmir,
91
+ BareSliceMatrix<SIMD<double>> shapes) const
92
+ {
93
+ Switch<4-DIM>
94
+ (bmir.DimSpace()-DIM,[this,&bmir,shapes](auto CODIM)
95
+ {
96
+ constexpr int DIMSPACE = DIM+CODIM.value;
97
+ auto & mir = static_cast<const SIMD_MappedIntegrationRule<DIM,DIMSPACE>&> (bmir);
98
+ for (size_t i = 0; i < mir.Size(); i++)
99
+ {
100
+ auto shapei = shapes.Col(i);
101
+ this->T_CalcShape
102
+ (GetTIP(mir[i]),
103
+ SBLambda ([shapei,DIMSPACE] (size_t j, auto s)
104
+ {
105
+ shapei.Range(j*DIMSPACE, (j+1)*DIMSPACE) = s.Value();
106
+ }));
107
+ }
108
+ });
109
+ }
110
+
111
+
112
+ template <ELEMENT_TYPE ET, typename SHAPES, typename BASE>
113
+ void T_HCurlHighOrderFiniteElement<ET,SHAPES,BASE> ::
114
+ CalcMappedCurlShape (const BaseMappedIntegrationPoint & bmip,
115
+ BareSliceMatrix<> curlshape) const
116
+ {
117
+ auto & mip = static_cast<const MappedIntegrationPoint<DIM,DIM>&> (bmip);
118
+
119
+ Vec<DIM,AutoDiff<DIM> > adp = mip;
120
+ TIP<DIM,AutoDiff<DIM>> tip(adp, bmip.IP().FacetNr(), bmip.IP().VB());
121
+ this->T_CalcShape (GetTIP(mip),
122
+ SBLambda ([&](size_t i, auto s)
123
+ {
124
+ curlshape.Row(i) = s.CurlValue();
125
+ }));
126
+ }
127
+
128
+ template <ELEMENT_TYPE ET, typename SHAPES, typename BASE>
129
+ void T_HCurlHighOrderFiniteElement<ET,SHAPES,BASE> ::
130
+ CalcMappedCurlShape (const BaseMappedIntegrationRule & mir,
131
+ BareSliceMatrix<> curlshape) const
132
+ {
133
+ for (int i = 0; i < mir.Size(); i++)
134
+ CalcMappedCurlShape (mir[i],
135
+ curlshape.Cols(DIM_CURL_(DIM)*i, DIM_CURL_(DIM)*(i+1)));
136
+ }
137
+
138
+
139
+ template <ELEMENT_TYPE ET, typename SHAPES, typename BASE>
140
+ void T_HCurlHighOrderFiniteElement<ET,SHAPES,BASE> ::
141
+ CalcMappedCurlShape (const SIMD_BaseMappedIntegrationRule & bmir,
142
+ BareSliceMatrix<SIMD<double>> shapes) const
143
+ {
144
+ Switch<4-DIM>
145
+ (bmir.DimSpace()-DIM,[this,&bmir,shapes](auto CODIM)
146
+ {
147
+ constexpr int DIMSPACE = DIM+CODIM.value;
148
+ auto & mir = static_cast<const SIMD_MappedIntegrationRule<DIM,DIMSPACE>&> (bmir);
149
+ constexpr int DIM_CURL = DIM_CURL_(DIMSPACE);
150
+ for (size_t i = 0; i < mir.Size(); i++)
151
+ {
152
+ auto shapei = shapes.Col(i);
153
+ this->T_CalcShape (GetTIP(mir[i]),
154
+ SBLambda ([shapei,DIM_CURL] (size_t j, auto s)
155
+ {
156
+ shapei.Range(j*DIM_CURL, (j+1)*DIM_CURL) = s.CurlValue();
157
+ }));
158
+ }
159
+ });
160
+ }
161
+
162
+
163
+
164
+ template <ELEMENT_TYPE ET, typename SHAPES, typename BASE>
165
+ auto T_HCurlHighOrderFiniteElement<ET,SHAPES,BASE> ::
166
+ EvaluateCurlShape (const IntegrationPoint & ip,
167
+ BareSliceVector<double> x,
168
+ LocalHeap & lh) const -> Vec<DIM_CURL_(DIM)>
169
+ {
170
+ // Vec<DIM, AutoDiff<DIM> > adp = ip;
171
+ // TIP<DIM,AutoDiff<DIM>> tip(adp);
172
+
173
+ Vec<DIM_CURL_(DIM)> sum = 0.0;
174
+ this->T_CalcShape (GetTIPGrad<DIM>(ip),
175
+ SBLambda ([&sum, x](size_t i, auto s)
176
+ { sum += x(i) * s.CurlValue(); }));
177
+ return sum;
178
+ }
179
+
180
+ template <ELEMENT_TYPE ET, typename SHAPES, typename BASE>
181
+ void T_HCurlHighOrderFiniteElement<ET,SHAPES,BASE> ::
182
+ EvaluateCurl (const IntegrationRule & ir, BareSliceVector<> coefs, BareSliceMatrix<> curl) const
183
+ {
184
+ LocalHeapMem<10000> lhdummy("evalcurl-heap");
185
+ for (int i = 0; i < ir.Size(); i++)
186
+ curl.Row(i) = EvaluateCurlShape (ir[i], coefs, lhdummy);
187
+ }
188
+
189
+
190
+ template <ELEMENT_TYPE ET, typename SHAPES, typename BASE>
191
+ void T_HCurlHighOrderFiniteElement<ET,SHAPES,BASE> ::
192
+ Evaluate (const SIMD_BaseMappedIntegrationRule & bmir, BareSliceVector<> coefs,
193
+ BareSliceMatrix<SIMD<double>> values) const
194
+ {
195
+ Switch<4-DIM>
196
+ (bmir.DimSpace()-DIM,[this,&bmir,coefs,values](auto CODIM)
197
+ {
198
+ constexpr int DIMSPACE = DIM+CODIM.value;
199
+ auto & mir = static_cast<const SIMD_MappedIntegrationRule<DIM,DIMSPACE>&> (bmir);
200
+ for (size_t i = 0; i < mir.Size(); i++)
201
+ {
202
+ Vec<DIMSPACE,SIMD<double>> sum(0.0);
203
+ this->T_CalcShape (GetTIP(mir[i]),
204
+ SBLambda ([&sum,coefs] (size_t j, auto shape)
205
+ {
206
+ sum += coefs(j) * shape.Value();
207
+ }));
208
+ values.Col(i).Range(DIMSPACE) = sum;
209
+ }
210
+ });
211
+ }
212
+
213
+ template <ELEMENT_TYPE ET, typename SHAPES, typename BASE>
214
+ void T_HCurlHighOrderFiniteElement<ET,SHAPES,BASE> ::
215
+ Evaluate (const SIMD_BaseMappedIntegrationRule & bmir, BareSliceVector<Complex> coefs,
216
+ BareSliceMatrix<SIMD<Complex>> values) const
217
+ {
218
+ Switch<4-DIM>
219
+ (bmir.DimSpace()-DIM,[this,&bmir,coefs,values](auto CODIM)
220
+ {
221
+ constexpr int DIMSPACE = DIM+CODIM.value;
222
+ auto & mir = static_cast<const SIMD_MappedIntegrationRule<DIM,DIMSPACE>&> (bmir);
223
+ for (size_t i = 0; i < mir.Size(); i++)
224
+ {
225
+ Vec<DIMSPACE,SIMD<Complex>> sum = SIMD<Complex>(0.0);
226
+ this->T_CalcShape (GetTIP(mir[i]),
227
+ SBLambda ([&sum,coefs] (size_t j, auto shape)
228
+ {
229
+ sum += coefs(j) * shape.Value();
230
+ }));
231
+ values.Col(i).Range(DIMSPACE) = sum;
232
+ }
233
+ });
234
+ }
235
+
236
+ template <ELEMENT_TYPE ET, typename SHAPES, typename BASE>
237
+ void T_HCurlHighOrderFiniteElement<ET,SHAPES,BASE> ::
238
+ EvaluateCurl (const SIMD_BaseMappedIntegrationRule & bmir, BareSliceVector<> coefs, BareSliceMatrix<SIMD<double>> values) const
239
+ {
240
+ Switch<4-DIM>
241
+ (bmir.DimSpace()-DIM,[this,&bmir,coefs,values](auto CODIM)
242
+ {
243
+ constexpr int DIMSPACE = DIM+CODIM.value;
244
+ constexpr int DIM_CURL = DIM_CURL_(DIMSPACE);
245
+ auto & mir = static_cast<const SIMD_MappedIntegrationRule<DIM,DIMSPACE>&> (bmir);
246
+ for (size_t i = 0; i < mir.Size(); i++)
247
+ {
248
+ Vec<DIM_CURL,SIMD<double>> sum(0.0);
249
+ this->T_CalcShape (GetTIP(mir[i]),
250
+ SBLambda ([coefs,&sum] (size_t j, auto shape)
251
+ {
252
+ sum += coefs(j) * shape.CurlValue();
253
+ }));
254
+ values.Col(i).Range(DIM_CURL) = sum;
255
+ }
256
+ });
257
+ }
258
+
259
+ template <ELEMENT_TYPE ET, typename SHAPES, typename BASE>
260
+ void T_HCurlHighOrderFiniteElement<ET,SHAPES,BASE> ::
261
+ EvaluateCurl (const SIMD_BaseMappedIntegrationRule & bmir, BareSliceVector<Complex> coefs, BareSliceMatrix<SIMD<Complex>> values) const
262
+ {
263
+ Switch<4-DIM>
264
+ (bmir.DimSpace()-DIM,[this,&bmir,coefs,values](auto CODIM)
265
+ {
266
+ constexpr int DIMSPACE = DIM+CODIM.value;
267
+ constexpr int DIM_CURL = DIM_CURL_(DIMSPACE);
268
+ auto & mir = static_cast<const SIMD_MappedIntegrationRule<DIM,DIMSPACE>&> (bmir);
269
+
270
+ for (size_t i = 0; i < mir.Size(); i++)
271
+ {
272
+ Vec<DIM_CURL,SIMD<Complex>> sum = SIMD<Complex>(0.0);
273
+ this->T_CalcShape (GetTIP(mir[i]),
274
+ SBLambda ([coefs, &sum] (size_t j, auto shape)
275
+ {
276
+ sum += coefs(j) * shape.CurlValue();
277
+ }));
278
+ values.Col(i).Range(DIM_CURL) = sum;
279
+ }
280
+ });
281
+ }
282
+
283
+
284
+ template <ELEMENT_TYPE ET, typename SHAPES, typename BASE>
285
+ void T_HCurlHighOrderFiniteElement<ET,SHAPES,BASE> ::
286
+ AddTrans (const SIMD_BaseMappedIntegrationRule & bmir, BareSliceMatrix<SIMD<double>> values,
287
+ BareSliceVector<> coefs) const
288
+ {
289
+ Switch<4-DIM>
290
+ (bmir.DimSpace()-DIM,[this,&bmir,coefs,values](auto CODIM)
291
+ {
292
+ constexpr int DIMSPACE = DIM+CODIM.value;
293
+ auto & mir = static_cast<const SIMD_MappedIntegrationRule<DIM,DIMSPACE>&> (bmir);
294
+ for (size_t i = 0; i < mir.Size(); i++)
295
+ {
296
+ Vec<DIMSPACE,SIMD<double>> vali = values.Col(i);
297
+ this->T_CalcShape (GetTIP(mir[i]),
298
+ SBLambda ([vali,coefs] (size_t j, auto s)
299
+ {
300
+ coefs(j) += HSum(InnerProduct(s.Value(), vali));
301
+ }));
302
+ }
303
+ });
304
+ }
305
+
306
+ template <ELEMENT_TYPE ET, typename SHAPES, typename BASE>
307
+ void T_HCurlHighOrderFiniteElement<ET,SHAPES,BASE> ::
308
+ AddTrans (const SIMD_BaseMappedIntegrationRule & bmir, BareSliceMatrix<SIMD<Complex>> values,
309
+ BareSliceVector<Complex> coefs) const
310
+ {
311
+ Switch<4-DIM>
312
+ (bmir.DimSpace()-DIM,[this,&bmir,coefs,values](auto CODIM)
313
+ {
314
+ constexpr int DIMSPACE = DIM+CODIM.value;
315
+ auto & mir = static_cast<const SIMD_MappedIntegrationRule<DIM,DIMSPACE>&> (bmir);
316
+ for (size_t i = 0; i < mir.Size(); i++)
317
+ {
318
+ Vec<DIMSPACE,SIMD<Complex>> vali = values.Col(i);
319
+ this->T_CalcShape (GetTIP(mir[i]),
320
+ SBLambda ([vali,coefs] (size_t j, auto s)
321
+ {
322
+ coefs(j) += HSum(InnerProduct(s.Value(), vali));
323
+ }));
324
+ }
325
+ });
326
+ }
327
+
328
+
329
+
330
+ template <ELEMENT_TYPE ET, typename SHAPES, typename BASE>
331
+ void T_HCurlHighOrderFiniteElement<ET,SHAPES,BASE> ::
332
+ AddCurlTrans (const SIMD_BaseMappedIntegrationRule & bmir, BareSliceMatrix<SIMD<double>> values,
333
+ BareSliceVector<> coefs) const
334
+ {
335
+ Switch<4-DIM>
336
+ (bmir.DimSpace()-DIM,[this,&bmir,coefs,values](auto CODIM)
337
+ {
338
+ constexpr int DIMSPACE = DIM+CODIM.value;
339
+ constexpr int DIM_CURL = DIM_CURL_(DIMSPACE);
340
+ auto & mir = static_cast<const SIMD_MappedIntegrationRule<DIM,DIMSPACE>&> (bmir);
341
+ for (size_t i = 0; i < mir.Size(); i++)
342
+ {
343
+ Vec<DIM_CURL,SIMD<double>> vali = values.Col(i);
344
+ this->T_CalcShape (GetTIP(mir[i]),
345
+ SBLambda ([vali,coefs] (size_t j, auto s)
346
+ {
347
+ coefs(j) += HSum(InnerProduct(s.CurlValue(), vali));
348
+ }));
349
+ }
350
+ });
351
+ }
352
+
353
+
354
+ template <ELEMENT_TYPE ET, typename SHAPES, typename BASE>
355
+ void T_HCurlHighOrderFiniteElement<ET,SHAPES,BASE> ::
356
+ AddCurlTrans (const SIMD_BaseMappedIntegrationRule & bmir, BareSliceMatrix<SIMD<Complex>> values,
357
+ BareSliceVector<Complex> coefs) const
358
+ {
359
+ Switch<4-DIM>
360
+ (bmir.DimSpace()-DIM,[this,&bmir,coefs,values](auto CODIM)
361
+ {
362
+ constexpr int DIMSPACE = DIM+CODIM.value;
363
+ constexpr int DIM_CURL = DIM_CURL_(DIMSPACE);
364
+ auto & mir = static_cast<const SIMD_MappedIntegrationRule<DIM,DIMSPACE>&> (bmir);
365
+ for (size_t i = 0; i < mir.Size(); i++)
366
+ {
367
+ Vec<DIM_CURL,SIMD<Complex>> vali = values.Col(i);
368
+ this->T_CalcShape (GetTIP(mir[i]),
369
+ SBLambda ([vali,coefs] (size_t j, auto s)
370
+ {
371
+ coefs(j) += HSum(InnerProduct(s.CurlValue(), vali));
372
+ }));
373
+ }
374
+ });
375
+ }
376
+
377
+ #endif
378
+ }
379
+
380
+ #endif
@@ -0,0 +1,80 @@
1
+ #ifndef FILE_THDIVFE
2
+ #define FILE_THDIVFE
3
+
4
+ /*********************************************************************/
5
+ /* File: thdivfe.hpp */
6
+ /* Author: Joachim Schoeberl */
7
+ /* Date: 5. Jul. 2001 */
8
+ /*********************************************************************/
9
+
10
+ #include "hdivfe.hpp"
11
+ #include "thcurlfe.hpp" // for Du
12
+
13
+ namespace ngfem
14
+ {
15
+
16
+
17
+
18
+
19
+
20
+
21
+ template <class FEL, ELEMENT_TYPE ET>
22
+ class T_HDivFiniteElement
23
+ : public HDivFiniteElement<ET_trait<ET>::DIM>
24
+
25
+ {
26
+ enum { DIM = ET_trait<ET>::DIM };
27
+
28
+ public:
29
+
30
+ virtual void CalcShape (const IntegrationPoint & ip,
31
+ BareSliceMatrix<> shape) const override;
32
+
33
+ virtual void CalcDivShape (const IntegrationPoint & ip,
34
+ BareSliceVector<> divshape) const override;
35
+
36
+ #ifndef FASTCOMPILE
37
+
38
+ virtual void CalcMappedShape (const BaseMappedIntegrationPoint & bmip,
39
+ BareSliceMatrix<> shape) const override;
40
+
41
+ virtual void CalcMappedShape (const BaseMappedIntegrationRule & bmir, BareSliceMatrix<> shapes) const override;
42
+
43
+ virtual void CalcMappedShape (const SIMD<MappedIntegrationPoint<DIM,DIM>> & mip,
44
+ BareSliceMatrix<SIMD<double>> shape) const override;
45
+
46
+ virtual void CalcMappedShape (const SIMD_BaseMappedIntegrationRule & mir,
47
+ BareSliceMatrix<SIMD<double>> shapes) const override;
48
+
49
+ virtual void CalcMappedNormalShape (const SIMD_BaseMappedIntegrationRule & mir,
50
+ BareSliceMatrix<SIMD<double>> shapes) const override;
51
+
52
+ using HDivFiniteElement<ET_trait<ET>::DIM>::CalcMappedDivShape;
53
+ virtual void CalcMappedDivShape (const SIMD_BaseMappedIntegrationRule & mir,
54
+ BareSliceMatrix<SIMD<double>> divshapes) const override;
55
+
56
+ virtual void Evaluate (const IntegrationRule & ir,
57
+ FlatVector<double> coefs,
58
+ BareSliceMatrix<> vals) const override;
59
+
60
+ virtual void EvaluateTrans (const IntegrationRule & ir,
61
+ BareSliceMatrix<> vals,
62
+ FlatVector<double> coefs) const override;
63
+
64
+
65
+ virtual void Evaluate (const SIMD_BaseMappedIntegrationRule & ir, BareSliceVector<> coefs, BareSliceMatrix<SIMD<double>> values) const override;
66
+ virtual void AddTrans (const SIMD_BaseMappedIntegrationRule & ir, BareSliceMatrix<SIMD<double>> values, BareSliceVector<> coefs) const override;
67
+
68
+ virtual void EvaluateDiv (const SIMD_BaseMappedIntegrationRule & ir, BareSliceVector<> coefs, BareVector<SIMD<double>> values) const override;
69
+
70
+ virtual void AddDivTrans (const SIMD_BaseMappedIntegrationRule & ir, BareVector<SIMD<double>> values,
71
+ BareSliceVector<> coefs) const override;
72
+
73
+
74
+ #endif
75
+ };
76
+
77
+ }
78
+
79
+
80
+ #endif