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,395 @@
1
+ #ifndef FILE_RECURSIVE_POL_TET
2
+ #define FILE_RECURSIVE_POL_TET
3
+
4
+ /*********************************************************************/
5
+ /* File: recursive_pol.hpp */
6
+ /* Author: Start */
7
+ /* Date: 6. Feb. 2003 */
8
+ /*********************************************************************/
9
+
10
+ #include "recursive_pol.hpp"
11
+
12
+ namespace ngfem
13
+ {
14
+
15
+ class TetShapesInnerLegendre
16
+ {
17
+ public:
18
+ template <typename Sx, typename Sy, typename Sz, typename T>
19
+ static INLINE int Calc (int n, Sx x, Sy y, Sz z, T && values)
20
+ {
21
+ STACK_ARRAY(Sx, tmp, 3*n+2);
22
+ Sx * polx = &tmp[0];
23
+ Sx * poly = &tmp[n+1];
24
+ // Sx * polz = &tmp[2*n+2];
25
+
26
+ Sx bub = (1-x-y-z) * (1+x-y-z) * y * z ;
27
+
28
+ LegendrePolynomial::EvalScaledMult (n-4, x, 1-y-z, bub, polx);
29
+ LegendrePolynomial::EvalScaled (n-4, 2*y - (1-z) , (1-z),poly);
30
+
31
+ // LegendrePolynomial (n-4, 2*z-1, polz);
32
+
33
+ /*
34
+ int ii = 0;
35
+ for (int i = 0; i <= n-4; i++)
36
+ for (int j = 0; j <= n-4-i; j++)
37
+ {
38
+ Sx hp = polx[i]*poly[j];
39
+ for (int k = 0; k <= n-4-i-j; k++)
40
+ values[ii++] = hp * polz[k];
41
+ }
42
+ */
43
+ int ii = 0;
44
+ for (int i = 0; i <= n-4; i++)
45
+ for (int j = 0; j <= n-4-i; j++)
46
+ {
47
+ LegendrePolynomial::EvalMult (n-4-i-j, 2*z-1, polx[i]*poly[j], values+ii);
48
+ ii += n-3-i-j;
49
+ }
50
+ return ii;
51
+ }
52
+
53
+ template <typename Sx, typename Sy, typename Sz, typename T1, typename T2, typename T3>
54
+ static INLINE void CalcSplitted (int n, Sx x, Sy y, Sz z, T1 & val1, T2 & val2, T3 & val3)
55
+ {
56
+ Sx bub1 = sqr (1-y-z) - sqr(x);
57
+ // ScaledLegendrePolynomialMult (n-4, x, 1-y-z, bub1, val1);
58
+ // ScaledLegendrePolynomialMult (n-4, 2*y - (1-z) , (1-z), y, val2);
59
+ LegendrePolynomial::EvalScaledMult (n-4, x, 1-y-z, bub1, val1);
60
+ LegendrePolynomial::EvalScaledMult (n-4, 2*y - (1-z) , (1-z), y, val2);
61
+
62
+ LegendrePolynomial leg;
63
+ leg.EvalMult (n-4, 2*z-1, z, val3);
64
+ }
65
+ };
66
+
67
+
68
+
69
+ class TetShapesInnerJacobi
70
+ {
71
+ public:
72
+ template <typename Sx, typename Sy, typename Sz, typename T>
73
+ static int Calc (int n, Sx x, Sy y, Sz z, T & values)
74
+ {
75
+ int ii = 0, j, k;
76
+ ArrayMem<Sx, 20> polx(n+1), poly(n+1), polz(n+1);
77
+
78
+ Sx bub = y * z * (1-x-y-z) * (1+x-y-z);
79
+ ScaledJacobiPolynomial (n-4, x, (1-y-z), 2, 2, polx);
80
+
81
+ for (int ix = 0; ix <= n-4; ix++)
82
+ {
83
+ ScaledJacobiPolynomial (n-4, (2*y-1+z),(1-z), 2*ix+5, 2, poly);
84
+ JacobiPolynomial (n-4, 2*z-1, 2*ix+5, 2, polz);
85
+
86
+ for (j = 0; j <= n-4-ix; j++)
87
+ for (k = 0; k <= n-4-ix-j; k++)
88
+ values[ii++] = bub * polx[ix] * poly[j] * polz[k];
89
+ }
90
+ return ii;
91
+ }
92
+ };
93
+
94
+ class TetShapesFaceLegendre
95
+ {
96
+ public:
97
+ template <typename Sx, typename Sy, typename Sz, typename T>
98
+ static int Calc (int n, Sx x, Sy y, Sz z, T && values)
99
+ {
100
+ ArrayMem<Sx, 20> polx(n+1), poly(n+1);
101
+
102
+ ScaledLegendrePolynomial (n-3, x, 1-y-z, polx);
103
+ ScaledLegendrePolynomial (n-3, 2*y-(1-z),(1-z), poly);
104
+ Sx bub = (1-x-y-z) * (1+x-y-z)*y;
105
+
106
+ int ii = 0;
107
+ for (int i = 0; i <= n-3; i++)
108
+ for (int j = 0; j <= n-3-i; j++)
109
+ values[ii++] = bub * polx[i] * poly[j];
110
+
111
+ return ii;
112
+ }
113
+ template <typename Sx, typename Sy, typename Sz, typename T>
114
+ static INLINE void CalcSplitted (int n, Sx x, Sy y, Sz z, T && val1, T && val2)
115
+ {
116
+ Sx bub1 = sqr (1-y-z) - sqr (x);
117
+ /*
118
+ ScaledLegendrePolynomialMult (n-3, x, 1-y-z, bub1, val1);
119
+ ScaledLegendrePolynomialMult (n-3, 2*y-(1-z),(1-z), y, val2);
120
+ */
121
+ LegendrePolynomial::EvalScaledMult (n-3, x, 1-y-z, bub1, val1);
122
+ LegendrePolynomial::EvalScaledMult (n-3, 2*y-(1-z),(1-z), y, val2);
123
+ }
124
+ };
125
+
126
+
127
+
128
+
129
+ class TetShapesFaceJacobi
130
+ {
131
+ public:
132
+ template <typename Sx, typename Sy, typename Sz, typename T>
133
+ static int Calc (int n, Sx x, Sy y, Sz z, T && values)
134
+ {
135
+ int ii = 0;
136
+ ArrayMem<Sx, 20> polx(n+1), poly(n+1);
137
+
138
+ Sx bub = y * (1-x-y-z) * (1+x-y-z);
139
+ ScaledJacobiPolynomial (n-3, x, 1-y-z, 2, 2, polx);
140
+
141
+ for (int ix = 0; ix <= n-3; ix++)
142
+ {
143
+ ScaledJacobiPolynomial (n-3, 2*y-1+z, 1-z, 2*ix+5, 2, poly);
144
+ for (int j = 0; j <= n-3-ix; j++)
145
+ values[ii++] = bub * polx[ix] * poly[j];
146
+ }
147
+ return ii;
148
+ }
149
+ };
150
+
151
+
152
+ #ifdef NOTAVAILABLE
153
+ class TetShapesFaceOpt1
154
+ {
155
+ public:
156
+ template <typename Sx, typename Sy, typename Sz, typename T>
157
+ static int Calc (int n, Sx x, Sy y, Sz z, T && values)
158
+ {
159
+ int nd = Calc1 (n, x, y, z, values);
160
+ ArrayMem<Sx, 100> hvalues(nd);
161
+
162
+ Sx lam1 = 0.5 * (1 + x - y - z);
163
+ Sx lam2 = 0.5 * (1 - x - y - z);
164
+ Sx lam3 = y;
165
+ Sx lam4 = z;
166
+
167
+ Sx hlam1 = 0;
168
+ Sx hlam2 = lam2;
169
+ Sx hlam3 = lam3;
170
+ Sx hlam4 = lam4 + lam1;
171
+
172
+ Sx hx = hlam1 - hlam2;
173
+ Sx hy = hlam3;
174
+ Sx hz = hlam4;
175
+
176
+ Sx frac;
177
+ if (hlam4 < 1e-12)
178
+ frac = 0.0;
179
+ else
180
+ frac = lam4 / hlam4;
181
+
182
+ Calc1 (n, hx, hy, hz, hvalues);
183
+ for (int i = 0; i < nd; i++)
184
+ values[i] -= frac * hvalues[i];
185
+
186
+ return nd;
187
+ }
188
+
189
+ template <typename Sx, typename Sy, typename Sz, typename T>
190
+ static int Calc1 (int n, Sx x, Sy y, Sz z, T && values)
191
+ {
192
+ int nd = Calc2 (n, x, y, z, values);
193
+ ArrayMem<Sx, 100> hvalues(nd);
194
+
195
+ Sx lam1 = 0.5 * (1 + x - y - z);
196
+ Sx lam2 = 0.5 * (1 - x - y - z);
197
+ Sx lam3 = y;
198
+ Sx lam4 = z;
199
+
200
+ Sx hlam1 = lam1;
201
+ Sx hlam2 = 0;
202
+ Sx hlam3 = lam3;
203
+ Sx hlam4 = lam4 + lam2;
204
+
205
+ Sx hx = hlam1 - hlam2;
206
+ Sx hy = hlam3;
207
+ Sx hz = hlam4;
208
+
209
+ Sx frac;
210
+ if (hlam4 < 1e-12)
211
+ frac = 0.0;
212
+ else
213
+ frac = lam4 / hlam4;
214
+
215
+ Calc2 (n, hx, hy, hz, hvalues);
216
+ for (int i = 0; i < nd; i++)
217
+ values[i] -= frac * hvalues[i];
218
+
219
+ return nd;
220
+ }
221
+
222
+ template <typename Sx, typename Sy, typename Sz, typename T>
223
+ static int Calc2 (int n, Sx x, Sy y, Sz z, T && values)
224
+ {
225
+ Sx * hp = &values[0];
226
+ int nd = Calc3 (n, x, y, z, hp);
227
+ ArrayMem<Sx, 100> hvalues(nd);
228
+
229
+ Sx lam1 = 0.5 * (1 + x - y - z);
230
+ Sx lam2 = 0.5 * (1 - x - y - z);
231
+ Sx lam3 = y;
232
+ Sx lam4 = z;
233
+
234
+ Sx hlam1 = lam1;
235
+ Sx hlam2 = lam2;
236
+ Sx hlam3 = 0;
237
+ Sx hlam4 = lam4 + lam3;
238
+
239
+ Sx hx = hlam1 - hlam2;
240
+ Sx hy = hlam3;
241
+ Sx hz = hlam4;
242
+
243
+ Sx frac;
244
+ if (hlam4 < 1e-12)
245
+ frac = 0.0;
246
+ else
247
+ frac = lam4 / hlam4;
248
+
249
+ hp = &hvalues[0];
250
+ Calc3 (n, hx, hy, hz, hp);
251
+ for (int i = 0; i < nd; i++)
252
+ values[i] -= frac * hvalues[i];
253
+
254
+ return nd;
255
+ }
256
+
257
+
258
+
259
+
260
+
261
+
262
+ template <typename Sx, typename Sy, typename Sz, typename T>
263
+ static int Calc3 (int n, Sx x, Sy y, Sz z, T && values)
264
+ {
265
+ int ii = 0;
266
+ ArrayMem<Sx, 20> polx(n+1), poly(n+1);
267
+
268
+ const IntegrationRule & rule = SelectIntegrationRule (ET_TRIG, n+2);
269
+
270
+ for (int ix = 0; ix <= n-3; ix++)
271
+ for (int j = 0; j <= n-3-ix; j++)
272
+ values[ii++] = 0;
273
+ for (int i = 0; i < rule.GetNIP(); i++)
274
+ {
275
+ ii = 0;
276
+ const IntegrationPoint & ip = rule[i];
277
+
278
+ Sx hx = x + z * (-1+2*ip(0)+ip(1));
279
+ Sy hy = y + z * ip(1);
280
+
281
+ Sx bub = hy * (1-hx-hy) * (1+hx-hy);
282
+ ScaledJacobiPolynomial (n-3, hx, 1-hy, 2, 2, polx);
283
+
284
+ Sx fac = 2 * bub * ip.Weight(); // / (z*z);
285
+
286
+ for (int ix = 0; ix <= n-3; ix++)
287
+ {
288
+ ScaledJacobiPolynomial (n-3, 2*hy-1, 1, 2*ix+5, 2, poly);
289
+ for (int j = 0; j <= n-3-ix; j++)
290
+ values[ii++] += fac * polx[ix] * poly[j];
291
+ }
292
+ }
293
+ return ii;
294
+ }
295
+ };
296
+
297
+
298
+
299
+ class TetShapesFaceOpt2
300
+ {
301
+ public:
302
+ template <typename Sx, typename Sy, typename Sz, typename T>
303
+ static int Calc (int n, Sx x, Sy y, Sz z, T & values)
304
+ {
305
+ int ii = 0, i, j;
306
+ ArrayMem<Sx, 20> polx(n+1), poly(n+1);
307
+
308
+ const IntegrationRule & rule = SelectIntegrationRule (ET_TRIG, n+2);
309
+
310
+ for (int ix = 0; ix <= n-3; ix++)
311
+ for (j = 0; j <= n-3-ix; j++)
312
+ values[ii++] = 0;
313
+ for (i = 0; i < rule.GetNIP(); i++)
314
+ {
315
+ ii = 0;
316
+ const IntegrationPoint & ip = rule[i];
317
+
318
+ Sx hx = x + z * (-1+2*ip(0)+ip(1));
319
+ Sy hy = y + z * ip(1);
320
+
321
+ //Sx bub = hy * (1-hx-hy) * (1+hx-hy);
322
+ ScaledJacobiPolynomial (n-3, hx, 1-hy, 2, 2, polx);
323
+
324
+ Sx fac = 2 * ip.Weight(); // / (z*z);
325
+
326
+ for (int ix = 0; ix <= n-3; ix++)
327
+ {
328
+ ScaledJacobiPolynomial (n-3, 2*hy-1, 1, 2*ix+5, 2, poly);
329
+ for (j = 0; j <= n-3-ix; j++)
330
+ values[ii++] += fac * polx[ix] * poly[j];
331
+ }
332
+ }
333
+ int jj = ii;
334
+ ArrayMem<Sx, 100> hvalues(jj);
335
+ for (int i = 0; i < ii; i++)
336
+ hvalues[i] = values[i];
337
+ ii = 0; jj = 0;
338
+ for (int k = 0; k <= n-3; k++)
339
+ {
340
+ for (int m = 0; m <= n-3-k; m++)
341
+ {
342
+ values[ii++] = y*(1-x-y-z)*(1+x-y-z)*hvalues[jj++];
343
+ }
344
+ }
345
+
346
+ return ii;
347
+ }
348
+ };
349
+
350
+ #endif
351
+
352
+
353
+
354
+
355
+
356
+
357
+
358
+
359
+
360
+ /*
361
+ /// compute shape
362
+ virtual void CalcShape (const IntegrationPoint & ip,
363
+ FlatVector<> shape) const
364
+ {
365
+ double lam1 = ip(0);
366
+ double lam2 = 1-ip(0)-ip(1);
367
+ double lam3 = ip(1);
368
+ double bub = lam1*lam2*lam3;
369
+
370
+ ArrayMem<double, 50> polx(order-2);
371
+ ArrayMem<double, 50> poly(order-2);
372
+
373
+ double fac = 1;
374
+ for (int i = 0; i <= order-3; i++)
375
+ {
376
+ polx[i] *= fac;
377
+ fac *= (1-lam3);
378
+ }
379
+
380
+ int ii = 0;
381
+ for (int ix = 0; ix <= order-3; ix++)
382
+ {
383
+ JacobiPolynomial (order-3, lam3-(lam1+lam2), 2*ix+5, 2, poly);
384
+ for (int iy = 0; iy <= order-3-ix; iy++)
385
+ shape(ii++) = bub*polx[ix] * poly[iy];
386
+ }
387
+ }
388
+
389
+ */
390
+
391
+
392
+ }
393
+
394
+
395
+ #endif