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,335 @@
1
+ #ifndef FILE_SCALARFE
2
+ #define FILE_SCALARFE
3
+
4
+ /*********************************************************************/
5
+ /* File: scalarfe.hpp */
6
+ /* Author: Joachim Schoeberl */
7
+ /* Date: 25. Mar. 2000 */
8
+ /*********************************************************************/
9
+
10
+ #include "finiteelement.hpp"
11
+ #include "fe_interfaces.hpp"
12
+
13
+ namespace ngfem
14
+ {
15
+
16
+ class BaseScalarFiniteElement : public FiniteElement
17
+ {
18
+ public:
19
+ using FiniteElement::FiniteElement;
20
+
21
+ /// the name
22
+ NGS_DLL_HEADER
23
+ virtual string ClassName() const override;
24
+
25
+ /// compute shape
26
+ HD NGS_DLL_HEADER
27
+ virtual void CalcShape (const IntegrationPoint & ip,
28
+ BareSliceVector<> shape) const = 0;
29
+
30
+ HD NGS_DLL_HEADER
31
+ virtual void CalcShape (const IntegrationPoint & ip,
32
+ BareSliceVector<Complex> shape) const;
33
+
34
+ /// compute dshape, matrix: ndof x spacedim
35
+ HD NGS_DLL_HEADER
36
+ virtual void CalcDShape (const IntegrationPoint & ip,
37
+ BareSliceMatrix<> dshape) const = 0;
38
+
39
+
40
+ /**
41
+ returns shape functions in point ip.
42
+ */
43
+ INLINE FlatVector<> GetShape (const IntegrationPoint & ip,
44
+ LocalHeap & lh) const
45
+ {
46
+ FlatVector<> shape(ndof, lh);
47
+ CalcShape (ip, shape);
48
+ return shape;
49
+ }
50
+
51
+ /// compute shape, row is shape nr, col is ip nr
52
+ HD NGS_DLL_HEADER
53
+ virtual void CalcShape (const IntegrationRule & ir,
54
+ BareSliceMatrix<> shape) const;
55
+
56
+ /// compute shape, row is shape nr, col is ip nr
57
+ HD NGS_DLL_HEADER
58
+ virtual void CalcShape (const SIMD_IntegrationRule & ir,
59
+ BareSliceMatrix<SIMD<double>> shape) const;
60
+
61
+ HD NGS_DLL_HEADER
62
+ virtual void CalcMappedDShape (const BaseMappedIntegrationPoint & mip,
63
+ BareSliceMatrix<> dshape) const = 0;
64
+
65
+
66
+ HD NGS_DLL_HEADER
67
+ virtual void CalcMappedDShape (const BaseMappedIntegrationRule & mir,
68
+ BareSliceMatrix<> dshapes) const = 0;
69
+
70
+ // rows dim*ndof, cols .. nip
71
+ // rows: phi0/dx, phi0/dy, phi0/dz, phi1/dx ...
72
+ HD NGS_DLL_HEADER
73
+ virtual void CalcMappedDShape (const SIMD_BaseMappedIntegrationRule & mir,
74
+ BareSliceMatrix<SIMD<double>> dshapes) const;
75
+
76
+
77
+ /**
78
+ returns second derivatives in point ip.
79
+ returns stored values for valid ip.IPNr(), else computes values
80
+ */
81
+ virtual const FlatMatrix<> GetDDShape (const IntegrationPoint & ip, LocalHeap & lh) const = 0;
82
+
83
+ /// compute dshape, matrix: ndof x (spacedim spacedim)
84
+ NGS_DLL_HEADER virtual void CalcDDShape (const IntegrationPoint & ip,
85
+ BareSliceMatrix<> ddshape) const = 0;
86
+
87
+ /// compute dshape, matrix: ndof x (spacedim spacedim)
88
+ NGS_DLL_HEADER virtual void CalcMappedDDShape (const BaseMappedIntegrationPoint & mip,
89
+ BareSliceMatrix<> ddshape) const = 0;
90
+
91
+ /// compute ddshape, matrix: ndof x (spacedim spacedim)
92
+ NGS_DLL_HEADER virtual void CalcMappedDDShape (const SIMD<BaseMappedIntegrationPoint> & mip,
93
+ BareSliceMatrix<SIMD<double>> ddshape) const = 0;
94
+
95
+
96
+
97
+ /**
98
+ Evaluates function in integration point ip.
99
+ Vector x provides coefficient vector.
100
+ */
101
+ HD NGS_DLL_HEADER virtual double Evaluate (const IntegrationPoint & ip, BareSliceVector<> x) const;
102
+ HD NGS_DLL_HEADER virtual Complex Evaluate (const IntegrationPoint & ip, BareSliceVector<Complex> x) const;
103
+
104
+
105
+ /**
106
+ Evaluate function in points of integrationrule ir.
107
+ Vector x provides coefficient vector.
108
+ */
109
+ HD NGS_DLL_HEADER virtual void Evaluate (const IntegrationRule & ir, BareSliceVector<> coefs, BareSliceVector<> values) const;
110
+ HD NGS_DLL_HEADER virtual void Evaluate (const SIMD_IntegrationRule & ir, BareSliceVector<> coefs, BareVector<SIMD<double>> values) const;
111
+ HD NGS_DLL_HEADER virtual void Evaluate (const SIMD_IntegrationRule & ir, SliceMatrix<> coefs, BareSliceMatrix<SIMD<double>> values) const;
112
+ NGS_DLL_HEADER void Evaluate (const SIMD_IntegrationRule & ir, BareSliceVector<Complex> coefs, BareVector<SIMD<Complex>> values) const;
113
+ /**
114
+ Each column a vector ...
115
+ */
116
+ HD NGS_DLL_HEADER virtual void Evaluate (const IntegrationRule & ir, SliceMatrix<> coefs, BareSliceMatrix<> values) const;
117
+
118
+ /**
119
+ Evaluate function in points of integrationrule ir, transpose operation.
120
+ Vector x provides coefficient vector.
121
+ */
122
+ HD NGS_DLL_HEADER virtual void EvaluateTrans (const IntegrationRule & ir, BareSliceVector<> values, BareSliceVector<> coefs) const;
123
+ HD NGS_DLL_HEADER virtual void AddTrans (const SIMD_IntegrationRule & ir, BareVector<SIMD<double>> values, BareSliceVector<> coefs) const;
124
+ HD NGS_DLL_HEADER virtual void AddTrans (const SIMD_IntegrationRule & ir, BareSliceMatrix<SIMD<double>> values, SliceMatrix<> coefs) const;
125
+ HD NGS_DLL_HEADER virtual void AddTrans (const SIMD_IntegrationRule & ir, BareVector<SIMD<Complex>> values, BareSliceVector<Complex> coefs) const;
126
+
127
+ /**
128
+ Evaluate gradient in points of integrationrule ir.
129
+ Vector x provides coefficient vector.
130
+ */
131
+ HD NGS_DLL_HEADER virtual void EvaluateGrad (const IntegrationRule & ir, BareSliceVector<> coefs, BareSliceMatrix<> values) const = 0;
132
+
133
+
134
+ HD NGS_DLL_HEADER virtual void EvaluateGrad (const SIMD_BaseMappedIntegrationRule & ir, BareSliceVector<> coefs, BareSliceMatrix<SIMD<double>> values) const;
135
+ HD NGS_DLL_HEADER virtual void EvaluateGrad (const SIMD_BaseMappedIntegrationRule & ir, BareSliceVector<Complex> coefs, BareSliceMatrix<SIMD<Complex>> values) const;
136
+ // needed for ALE-trafo
137
+ HD NGS_DLL_HEADER virtual void EvaluateGrad (const SIMD_IntegrationRule & ir, BareSliceVector<> coefs, BareSliceMatrix<SIMD<double>> values) const;
138
+
139
+ /**
140
+ Evaluate gradient in points of integrationrule ir, transpose operation.
141
+ Vector x provides coefficient vector.
142
+ */
143
+ HD NGS_DLL_HEADER virtual void EvaluateGradTrans (const IntegrationRule & ir, BareSliceMatrix<> values, BareSliceVector<> coefs) const = 0;
144
+ HD NGS_DLL_HEADER virtual void EvaluateGradTrans (const IntegrationRule & ir, SliceMatrix<> values, SliceMatrix<> coefs) const = 0;
145
+ HD NGS_DLL_HEADER virtual void AddGradTrans (const SIMD_BaseMappedIntegrationRule & ir, BareSliceMatrix<SIMD<double>> values,
146
+ BareSliceVector<> coefs) const;
147
+ /// input du1/dx du1/dy du1/dz du2/dx ...
148
+ /// output: ndof x components
149
+ HD NGS_DLL_HEADER virtual void AddGradTrans (const SIMD_BaseMappedIntegrationRule & ir, BareSliceMatrix<SIMD<double>> values,
150
+ SliceMatrix<> coefs) const;
151
+
152
+
153
+ NGS_DLL_HEADER virtual void CalcDualShape (const BaseMappedIntegrationPoint & mip, BareSliceVector<> shape) const;
154
+ NGS_DLL_HEADER virtual void AddDualTrans (const IntegrationRule & ir, BareSliceVector<double> values, BareSliceVector<> coefs) const;
155
+ NGS_DLL_HEADER virtual void AddDualTrans (const SIMD_IntegrationRule & ir, BareVector<SIMD<double>> values, BareSliceVector<> coefs) const;
156
+
157
+ HD NGS_DLL_HEADER virtual void GetDiagMassMatrix (FlatVector<> mass) const;
158
+ NGS_DLL_HEADER virtual bool GetDiagDualityMassInverse (FlatVector<> diag) const { return false; }
159
+ NGS_DLL_HEADER virtual bool DualityMassDiagonal () const { return false; }
160
+ };
161
+
162
+ /**
163
+ Scalar finite element.
164
+ Provides shape functions and derivatives.
165
+ */
166
+ template <int D>
167
+ class ScalarFiniteElement : public BaseScalarFiniteElement
168
+ {
169
+ public:
170
+ using BaseScalarFiniteElement::BaseScalarFiniteElement;
171
+
172
+ HD int Dim () const final { return D; }
173
+
174
+ /**
175
+ returns derivatives in point ip.
176
+ */
177
+ INLINE const FlatMatrixFixWidth<D>
178
+ GetDShape (const IntegrationPoint & ip, LocalHeap & lh) const
179
+ {
180
+ FlatMatrixFixWidth<D> dshape(ndof, lh);
181
+ CalcDShape (ip, dshape);
182
+ return dshape;
183
+ }
184
+
185
+ using BaseScalarFiniteElement::CalcMappedDShape;
186
+
187
+ /// compute dshape, matrix: ndof x spacedim
188
+ HD NGS_DLL_HEADER
189
+ virtual void CalcMappedDShape (const BaseMappedIntegrationPoint & mip,
190
+ BareSliceMatrix<> dshape) const override;
191
+
192
+
193
+ HD NGS_DLL_HEADER
194
+ virtual void CalcMappedDShape (const BaseMappedIntegrationRule & mir,
195
+ BareSliceMatrix<> dshapes) const override;
196
+
197
+
198
+ /**
199
+ returns second derivatives in point ip.
200
+ returns stored values for valid ip.IPNr(), else computes values
201
+ */
202
+ const FlatMatrix<> GetDDShape (const IntegrationPoint & ip, LocalHeap & lh) const override
203
+ {
204
+ FlatMatrix<> ddshape(ndof, D*D, lh);
205
+ CalcDDShape (ip, ddshape);
206
+ return ddshape;
207
+ }
208
+
209
+ /// compute dshape, matrix: ndof x (spacedim spacedim)
210
+ NGS_DLL_HEADER virtual void CalcDDShape (const IntegrationPoint & ip,
211
+ BareSliceMatrix<> ddshape) const override;
212
+
213
+ /// compute ddshape, matrix: ndof x (spacedim spacedim)
214
+ NGS_DLL_HEADER virtual void CalcMappedDDShape (const BaseMappedIntegrationPoint & mip,
215
+ BareSliceMatrix<> ddshape) const override;
216
+
217
+ /// compute ddshape, matrix: ndof x (spacedim spacedim)
218
+ NGS_DLL_HEADER virtual void CalcMappedDDShape (const SIMD<BaseMappedIntegrationPoint> & mip,
219
+ BareSliceMatrix<SIMD<double>> ddshape) const override;
220
+
221
+
222
+ /**
223
+ Evaluates gradient in integration point ip.
224
+ Vector x provides coefficient vector.
225
+ */
226
+ HD NGS_DLL_HEADER virtual Vec<D> EvaluateGrad (const IntegrationPoint & ip, BareSliceVector<> x) const;
227
+
228
+ using BaseScalarFiniteElement::EvaluateGrad;
229
+
230
+ /**
231
+ Evaluate gradient in points of integrationrule ir.
232
+ Vector x provides coefficient vector.
233
+ */
234
+ HD NGS_DLL_HEADER void EvaluateGrad (const IntegrationRule & ir, BareSliceVector<> coefs, BareSliceMatrix<> values) const override;
235
+
236
+ /**
237
+ Evaluate gradient in points of integrationrule ir, transpose operation.
238
+ Vector x provides coefficient vector.
239
+ */
240
+ HD NGS_DLL_HEADER void EvaluateGradTrans (const IntegrationRule & ir, BareSliceMatrix<> values, BareSliceVector<> coefs) const override;
241
+
242
+ HD NGS_DLL_HEADER void EvaluateGradTrans (const IntegrationRule & ir, SliceMatrix<> values, SliceMatrix<> coefs) const override;
243
+
244
+ NGS_DLL_HEADER virtual void Interpolate (const ElementTransformation & trafo,
245
+ const class CoefficientFunction & func, SliceMatrix<> coefs,
246
+ LocalHeap & lh) const override;
247
+
248
+ public:
249
+ NGS_DLL_HEADER virtual std::list<std::tuple<std::string,double>> Timing () const override;
250
+ NGS_DLL_HEADER virtual bool SolveDuality (SliceVector<> rhs, SliceVector<> u, LocalHeap & lhr) const override;
251
+ };
252
+
253
+
254
+
255
+
256
+
257
+
258
+
259
+
260
+
261
+
262
+
263
+
264
+
265
+
266
+
267
+
268
+
269
+
270
+
271
+
272
+ template<ELEMENT_TYPE ET>
273
+ class DGFiniteElement : public ScalarFiniteElement<ET_trait<ET>::DIM>,
274
+ public VertexOrientedFE<ET>
275
+ {
276
+ protected:
277
+ // int vnums[1<<D];
278
+ enum { D = ET_trait<ET>::DIM };
279
+
280
+ using ScalarFiniteElement<D>::ndof;
281
+ using ScalarFiniteElement<D>::order;
282
+ using VertexOrientedFE<ET>::vnums;
283
+
284
+ public:
285
+ /// global vertex numbers define ordering of vertices
286
+ template <typename TA>
287
+ void SetVertexNumbers (const TA & avnums)
288
+ {
289
+ for (int i = 0; i < avnums.Size(); i++) vnums[i] = avnums[i];
290
+ }
291
+ DGFiniteElement * SetVertexNumbers (FlatArray<int> vnums) override
292
+ { VertexOrientedFE<ET>::SetVertexNumbers(vnums); return this; }
293
+
294
+
295
+ /// assign vertex number
296
+ void SetVertexNumber (int nr, int vnum) { vnums[nr] = vnum; }
297
+ NGS_DLL_HEADER virtual void SetOrder (IVec<D> p) = 0;
298
+ NGS_DLL_HEADER virtual void ComputeNDof() = 0;
299
+
300
+
301
+ NGS_DLL_HEADER virtual void PrecomputeTrace () = 0;
302
+ NGS_DLL_HEADER virtual void PrecomputeGrad () = 0;
303
+
304
+ NGS_DLL_HEADER void CalcTraceMatrix (int facet, FlatMatrix<> trace) const;
305
+ NGS_DLL_HEADER void CalcGradientMatrix (FlatMatrix<> gmat) const;
306
+
307
+ HD NGS_DLL_HEADER virtual void GetDiagMassMatrix (FlatVector<> mass) const override;
308
+
309
+ NGS_DLL_HEADER virtual void GetGradient (FlatVector<> coefs, FlatMatrixFixWidth<D> grad) const;
310
+ NGS_DLL_HEADER virtual void GetGradientTrans (FlatMatrixFixWidth<D> grad, FlatVector<> coefs) const;
311
+
312
+ NGS_DLL_HEADER virtual void GetTrace (int facet, FlatVector<> coefs, FlatVector<> fcoefs) const;
313
+ NGS_DLL_HEADER virtual void GetTraceTrans (int facet, FlatVector<> fcoefs, FlatVector<> coefs) const;
314
+ };
315
+
316
+
317
+
318
+
319
+ extern template class ScalarFiniteElement<0>;
320
+ extern template class ScalarFiniteElement<1>;
321
+ extern template class ScalarFiniteElement<2>;
322
+ extern template class ScalarFiniteElement<3>;
323
+
324
+ extern template class DGFiniteElement<ET_POINT>;
325
+ extern template class DGFiniteElement<ET_SEGM>;
326
+ extern template class DGFiniteElement<ET_TRIG>;
327
+ extern template class DGFiniteElement<ET_QUAD>;
328
+ extern template class DGFiniteElement<ET_TET>;
329
+ extern template class DGFiniteElement<ET_PRISM>;
330
+ extern template class DGFiniteElement<ET_PYRAMID>;
331
+ extern template class DGFiniteElement<ET_HEXAMID>;
332
+ extern template class DGFiniteElement<ET_HEX>;
333
+ }
334
+
335
+ #endif
@@ -0,0 +1,113 @@
1
+ #ifndef SHAPEFUNCTION_UTILS
2
+ #define SHAPEFUNCTION_UTILS
3
+
4
+ namespace ngfem
5
+ {
6
+
7
+ // combination of AutoDiff and linalg:
8
+
9
+
10
+ // for shape functions
11
+ template <int DIM, typename SCAL>
12
+ auto GetGradient (const AutoDiff<DIM,SCAL> & ad)
13
+ {
14
+ Vec<DIM,SCAL> grad;
15
+ for (int i = 0; i < DIM; i++)
16
+ grad(i) = ad.DValue(i);
17
+ return grad;
18
+ }
19
+
20
+
21
+
22
+
23
+
24
+
25
+ // hv.DValue() = (grad u) x (grad v)
26
+ template <typename SCAL>
27
+ INLINE AutoDiff<3,SCAL> Cross (const AutoDiff<3,SCAL> & u,
28
+ const AutoDiff<3,SCAL> & v)
29
+ {
30
+ SCAL hv[3];
31
+ hv[0] = u.DValue(1)*v.DValue(2)-u.DValue(2)*v.DValue(1);
32
+ hv[1] = u.DValue(2)*v.DValue(0)-u.DValue(0)*v.DValue(2);
33
+ hv[2] = u.DValue(0)*v.DValue(1)-u.DValue(1)*v.DValue(0);
34
+ return AutoDiff<3,SCAL> (0, hv);
35
+ }
36
+
37
+ template <typename SCAL>
38
+ INLINE AutoDiff<1,SCAL> Cross (const AutoDiff<2,SCAL> & u,
39
+ const AutoDiff<2,SCAL> & v)
40
+ {
41
+ AutoDiff<1,SCAL> hv;
42
+ hv.Value() = 0.0;
43
+ hv.DValue(0) = u.DValue(0)*v.DValue(1)-u.DValue(1)*v.DValue(0);
44
+ return hv;
45
+ }
46
+
47
+ template <typename SCAL>
48
+ INLINE AutoDiff<0,SCAL> Cross (const AutoDiff<1,SCAL> & u,
49
+ const AutoDiff<1,SCAL> & v)
50
+ {
51
+ AutoDiff<0,SCAL> hv;
52
+ hv.Value() = 0.0;
53
+ return hv;
54
+ }
55
+
56
+
57
+
58
+
59
+
60
+ template <int D, typename SCAL>
61
+ inline SCAL Dot (const AutoDiff<D,SCAL> & u, const AutoDiff<D,SCAL> & v)
62
+ {
63
+ SCAL sum = 0;
64
+ for (int i = 0; i < D; i++)
65
+ sum += u.DValue(i) * v.DValue(i);
66
+ return sum;
67
+ }
68
+
69
+
70
+ template <int D, typename SCAL>
71
+ inline auto Outer (const AutoDiff<D,SCAL> & u, const AutoDiff<D,SCAL> & v)
72
+ {
73
+ Mat<D,D,SCAL> res;
74
+ for (int i = 0; i < D; i++)
75
+ for (int j = 0; j < D; j++)
76
+ res(i,j) = u.DValue(i) * v.DValue(j);
77
+ return res;
78
+ }
79
+
80
+ template <int D, typename SCAL>
81
+ inline auto SymOuter (const AutoDiff<D,SCAL> & u, const AutoDiff<D,SCAL> & v)
82
+ {
83
+ Mat<D,D,SCAL> res;
84
+ for (int i = 0; i < D; i++)
85
+ res(i,i) = u.DValue(i) * v.DValue(i);
86
+ for (int i = 0; i < D; i++)
87
+ for (int j = 0; j < i; j++)
88
+ res(j,i) = res(i,j) =
89
+ 0.5 * (u.DValue(i) * v.DValue(j) + u.DValue(j) * v.DValue(i));
90
+ return res;
91
+ }
92
+
93
+ template <int D, typename SCAL>
94
+ inline auto MSkew (const AutoDiff<D,SCAL> & u)
95
+ {
96
+ Mat<D,D,SCAL> res;
97
+ res(0,0) = 0;
98
+ res(0,1) = -u.DValue(2);
99
+ res(0,2) = u.DValue(1);
100
+
101
+ res(1,0) = u.DValue(2);
102
+ res(1,1) = 0;
103
+ res(1,2) = -u.DValue(0);
104
+
105
+ res(2,0) = -u.DValue(1);
106
+ res(2,1) = u.DValue(0);
107
+ res(2,2) = 0;
108
+ return res;
109
+ }
110
+ }
111
+
112
+
113
+ #endif