ngsolve 6.2.2506.post75.dev0__cp314-cp314-manylinux_2_28_x86_64.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 (303) hide show
  1. ngsolve-6.2.2506.post75.dev0.data/data/bin/ngs_nvcc +14 -0
  2. ngsolve-6.2.2506.post75.dev0.data/data/bin/ngs_nvlink +14 -0
  3. ngsolve-6.2.2506.post75.dev0.data/data/bin/ngscxx +15 -0
  4. ngsolve-6.2.2506.post75.dev0.data/data/bin/ngsld +11 -0
  5. ngsolve-6.2.2506.post75.dev0.data/data/bin/ngsolve.tcl +648 -0
  6. ngsolve-6.2.2506.post75.dev0.data/data/bin/ngspy +2 -0
  7. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/analytic_integrals.hpp +10 -0
  8. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/arnoldi.hpp +55 -0
  9. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/bandmatrix.hpp +334 -0
  10. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/basematrix.hpp +957 -0
  11. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/basevector.hpp +1268 -0
  12. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/bdbequations.hpp +2805 -0
  13. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/bdbintegrator.hpp +1660 -0
  14. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/bem_diffops.hpp +475 -0
  15. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/bessel.hpp +1064 -0
  16. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/bilinearform.hpp +963 -0
  17. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/bla.hpp +29 -0
  18. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/blockalloc.hpp +95 -0
  19. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/blockjacobi.hpp +328 -0
  20. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/bspline.hpp +116 -0
  21. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/calcinverse.hpp +141 -0
  22. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/cg.hpp +368 -0
  23. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/chebyshev.hpp +44 -0
  24. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/cholesky.hpp +720 -0
  25. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/clapack.h +7254 -0
  26. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/code_generation.hpp +296 -0
  27. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/coefficient.hpp +2033 -0
  28. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/coefficient_impl.hpp +19 -0
  29. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/coefficient_stdmath.hpp +167 -0
  30. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/commutingAMG.hpp +106 -0
  31. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/comp.hpp +79 -0
  32. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/compatibility.hpp +41 -0
  33. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/complex_wrapper.hpp +73 -0
  34. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/compressedfespace.hpp +110 -0
  35. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/contact.hpp +235 -0
  36. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/cuda_linalg.hpp +175 -0
  37. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/cuda_ngbla.hpp +226 -0
  38. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/cuda_ngstd.hpp +527 -0
  39. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/cuda_profiler.hpp +240 -0
  40. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/diagonalmatrix.hpp +154 -0
  41. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/differentialoperator.hpp +276 -0
  42. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/diffop.hpp +1286 -0
  43. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/diffop_impl.hpp +328 -0
  44. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/diffopwithfactor.hpp +123 -0
  45. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/discontinuous.hpp +84 -0
  46. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/dump.hpp +949 -0
  47. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/ectypes.hpp +121 -0
  48. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/eigen.hpp +60 -0
  49. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/eigensystem.hpp +18 -0
  50. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/elasticity_equations.hpp +595 -0
  51. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/elementbyelement.hpp +195 -0
  52. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/elementtopology.hpp +1760 -0
  53. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/elementtransformation.hpp +339 -0
  54. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/evalfunc.hpp +405 -0
  55. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/expr.hpp +1686 -0
  56. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/facetfe.hpp +175 -0
  57. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/facetfespace.hpp +180 -0
  58. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/facethofe.hpp +111 -0
  59. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/facetsurffespace.hpp +112 -0
  60. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/fe_interfaces.hpp +32 -0
  61. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/fem.hpp +87 -0
  62. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/fesconvert.hpp +14 -0
  63. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/fespace.hpp +1449 -0
  64. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/finiteelement.hpp +286 -0
  65. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/globalinterfacespace.hpp +77 -0
  66. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/globalspace.hpp +115 -0
  67. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/gridfunction.hpp +525 -0
  68. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/h1amg.hpp +124 -0
  69. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/h1hofe.hpp +188 -0
  70. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/h1hofe_impl.hpp +1262 -0
  71. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/h1hofefo.hpp +148 -0
  72. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/h1hofefo_impl.hpp +185 -0
  73. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/h1hofespace.hpp +167 -0
  74. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/h1lofe.hpp +1240 -0
  75. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/h1lumping.hpp +41 -0
  76. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/hcurl_equations.hpp +1381 -0
  77. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/hcurlcurlfe.hpp +2241 -0
  78. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/hcurlcurlfespace.hpp +78 -0
  79. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/hcurlfe.hpp +259 -0
  80. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/hcurlfe_utils.hpp +107 -0
  81. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/hcurlhdiv_dshape.hpp +857 -0
  82. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/hcurlhdivfes.hpp +308 -0
  83. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/hcurlhofe.hpp +175 -0
  84. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/hcurlhofe_impl.hpp +1871 -0
  85. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/hcurlhofespace.hpp +193 -0
  86. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/hcurllofe.hpp +1146 -0
  87. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/hdiv_equations.hpp +880 -0
  88. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/hdivdivfe.hpp +2923 -0
  89. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/hdivdivsurfacespace.hpp +76 -0
  90. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/hdivfe.hpp +206 -0
  91. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/hdivfe_utils.hpp +717 -0
  92. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/hdivfes.hpp +75 -0
  93. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/hdivhofe.hpp +447 -0
  94. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/hdivhofe_impl.hpp +1107 -0
  95. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/hdivhofefo.hpp +229 -0
  96. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/hdivhofespace.hpp +177 -0
  97. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/hdivhosurfacefespace.hpp +106 -0
  98. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/hdivlofe.hpp +773 -0
  99. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/hidden.hpp +74 -0
  100. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/householder.hpp +181 -0
  101. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/hypre_ams_precond.hpp +123 -0
  102. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/hypre_precond.hpp +73 -0
  103. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/integrator.hpp +2012 -0
  104. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/integratorcf.hpp +253 -0
  105. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/interpolate.hpp +49 -0
  106. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/intrule.hpp +2542 -0
  107. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/intrules_SauterSchwab.hpp +25 -0
  108. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/irspace.hpp +49 -0
  109. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/jacobi.hpp +153 -0
  110. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/kernels.hpp +762 -0
  111. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/l2hofe.hpp +194 -0
  112. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/l2hofe_impl.hpp +564 -0
  113. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/l2hofefo.hpp +542 -0
  114. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/l2hofespace.hpp +344 -0
  115. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/la.hpp +38 -0
  116. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/linalg_kernels.hpp +102 -0
  117. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/linearform.hpp +266 -0
  118. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/matrix.hpp +2140 -0
  119. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/memusage.hpp +41 -0
  120. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/meshaccess.hpp +1359 -0
  121. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/mgpre.hpp +204 -0
  122. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/mp_coefficient.hpp +145 -0
  123. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/mptools.hpp +2281 -0
  124. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/multigrid.hpp +42 -0
  125. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/multivector.hpp +447 -0
  126. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/mumpsinverse.hpp +187 -0
  127. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/mycomplex.hpp +361 -0
  128. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/ng_lapack.hpp +1661 -0
  129. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/ngblas.hpp +1232 -0
  130. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/ngs_defines.hpp +30 -0
  131. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/ngs_stdcpp_include.hpp +106 -0
  132. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/ngs_utils.hpp +121 -0
  133. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/ngsobject.hpp +1019 -0
  134. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/ngsstream.hpp +113 -0
  135. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/ngstd.hpp +72 -0
  136. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/nodalhofe.hpp +96 -0
  137. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/nodalhofe_impl.hpp +141 -0
  138. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/normalfacetfe.hpp +223 -0
  139. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/normalfacetfespace.hpp +98 -0
  140. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/normalfacetsurfacefespace.hpp +84 -0
  141. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/order.hpp +251 -0
  142. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/parallel_matrices.hpp +222 -0
  143. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/paralleldofs.hpp +340 -0
  144. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/parallelngs.hpp +23 -0
  145. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/parallelvector.hpp +269 -0
  146. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/pardisoinverse.hpp +200 -0
  147. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/periodic.hpp +129 -0
  148. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/plateaufespace.hpp +25 -0
  149. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/pml.hpp +275 -0
  150. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/pmltrafo.hpp +631 -0
  151. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/postproc.hpp +142 -0
  152. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/potentialtools.hpp +22 -0
  153. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/precomp.hpp +60 -0
  154. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/preconditioner.hpp +602 -0
  155. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/prolongation.hpp +377 -0
  156. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/python_comp.hpp +107 -0
  157. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/python_fem.hpp +89 -0
  158. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/python_linalg.hpp +58 -0
  159. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/python_ngstd.hpp +386 -0
  160. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/recursive_pol.hpp +4896 -0
  161. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/recursive_pol_tet.hpp +395 -0
  162. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/recursive_pol_trig.hpp +492 -0
  163. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/reorderedfespace.hpp +81 -0
  164. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/sample_sort.hpp +105 -0
  165. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/scalarfe.hpp +335 -0
  166. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/shapefunction_utils.hpp +113 -0
  167. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/simd_complex.hpp +329 -0
  168. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/smoother.hpp +253 -0
  169. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/solve.hpp +89 -0
  170. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/sparsecholesky.hpp +313 -0
  171. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/sparsematrix.hpp +1038 -0
  172. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/sparsematrix_dyn.hpp +90 -0
  173. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/sparsematrix_impl.hpp +1013 -0
  174. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/special_matrix.hpp +463 -0
  175. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/specialelement.hpp +125 -0
  176. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/statushandler.hpp +33 -0
  177. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/stringops.hpp +12 -0
  178. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/superluinverse.hpp +136 -0
  179. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/symbolicintegrator.hpp +850 -0
  180. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/symmetricmatrix.hpp +144 -0
  181. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/tangentialfacetfe.hpp +224 -0
  182. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/tangentialfacetfespace.hpp +91 -0
  183. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/tensor.hpp +522 -0
  184. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/tensorcoefficient.hpp +446 -0
  185. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/tensorproductintegrator.hpp +113 -0
  186. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/thcurlfe.hpp +128 -0
  187. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/thcurlfe_impl.hpp +380 -0
  188. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/thdivfe.hpp +80 -0
  189. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/thdivfe_impl.hpp +492 -0
  190. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/tpdiffop.hpp +461 -0
  191. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/tpfes.hpp +133 -0
  192. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/tpintrule.hpp +224 -0
  193. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/triangular.hpp +465 -0
  194. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/tscalarfe.hpp +245 -0
  195. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/tscalarfe_impl.hpp +1029 -0
  196. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/umfpackinverse.hpp +148 -0
  197. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/unifiedvector.hpp +103 -0
  198. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/vector.hpp +1273 -0
  199. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/voxelcoefficientfunction.hpp +41 -0
  200. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/vtkoutput.hpp +198 -0
  201. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/vvector.hpp +208 -0
  202. ngsolve-6.2.2506.post75.dev0.data/data/include/netgen/webgui.hpp +92 -0
  203. ngsolve-6.2.2506.post75.dev0.data/data/lib/cmake/ngsolve/NGSolveConfig.cmake +102 -0
  204. ngsolve-6.2.2506.post75.dev0.data/data/lib/cmake/ngsolve/ngsolve-targets-release.cmake +89 -0
  205. ngsolve-6.2.2506.post75.dev0.data/data/lib/cmake/ngsolve/ngsolve-targets.cmake +173 -0
  206. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/netgen_mesher.libs/libngbla.so +0 -0
  207. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/netgen_mesher.libs/libngcomp.so +0 -0
  208. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/netgen_mesher.libs/libngfem.so +0 -0
  209. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/netgen_mesher.libs/libngla.so +0 -0
  210. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/netgen_mesher.libs/libngsbem.so +0 -0
  211. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/netgen_mesher.libs/libngscudalib.so +0 -0
  212. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/netgen_mesher.libs/libngsolve.so +0 -0
  213. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/netgen_mesher.libs/libngstd.so +0 -0
  214. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/TensorProductTools.py +210 -0
  215. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/__console.py +94 -0
  216. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/__expr.py +181 -0
  217. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/__init__.py +148 -0
  218. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/_scikit_build_core_dependencies.py +30 -0
  219. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/bvp.py +78 -0
  220. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/config/__init__.py +1 -0
  221. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/config/__main__.py +4 -0
  222. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/config/config.py +60 -0
  223. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/TensorProduct/__init__.py +0 -0
  224. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/TensorProduct/tp_dg_1d_1d.py +80 -0
  225. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/TensorProduct/tp_dg_1d_2d.py +73 -0
  226. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/TensorProduct/tp_dg_2d_1d.py +72 -0
  227. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/TensorProduct/tp_dg_2d_2d.py +66 -0
  228. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/__init__.py +0 -0
  229. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/howto/__init__.py +0 -0
  230. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/howto/hhj.py +44 -0
  231. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/howto/hybrid_dg.py +53 -0
  232. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/howto/mixed.py +30 -0
  233. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/howto/nonlin.py +29 -0
  234. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/howto/pickling.py +26 -0
  235. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/howto/pml.py +31 -0
  236. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/howto/taskmanager.py +20 -0
  237. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/howto/tdnns.py +47 -0
  238. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/howto/timeDG-skeleton.py +45 -0
  239. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/howto/timeDG.py +38 -0
  240. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/howto/timeDGlap.py +42 -0
  241. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/howto/timeDGwave.py +61 -0
  242. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/intro/__init__.py +0 -0
  243. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/intro/adaptive.py +123 -0
  244. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/intro/cmagnet.py +59 -0
  245. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/intro/elasticity.py +76 -0
  246. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/intro/navierstokes.py +74 -0
  247. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/intro/poisson.ipynb +170 -0
  248. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/intro/poisson.py +41 -0
  249. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/mpi/__init__.py +0 -0
  250. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/mpi/mpi_cmagnet.py +87 -0
  251. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/mpi/mpi_navierstokes.py +117 -0
  252. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/mpi/mpi_poisson.py +89 -0
  253. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/demos/mpi/mpi_timeDG.py +82 -0
  254. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/directsolvers.py +26 -0
  255. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/eigenvalues.py +364 -0
  256. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/internal.py +89 -0
  257. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/krylovspace.py +1013 -0
  258. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/meshes.py +748 -0
  259. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/ngs2petsc.py +310 -0
  260. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/ngscuda.so +0 -0
  261. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/ngscxx.py +42 -0
  262. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/ngslib.so +0 -0
  263. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/nonlinearsolvers.py +203 -0
  264. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/preconditioners.py +11 -0
  265. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/solve_implementation.py +168 -0
  266. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/solvers.py +7 -0
  267. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/timestepping.py +185 -0
  268. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/timing.py +108 -0
  269. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/utils.py +167 -0
  270. ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.14/site-packages/ngsolve/webgui.py +670 -0
  271. ngsolve-6.2.2506.post75.dev0.data/data/share/ngsolve/beam.geo +17 -0
  272. ngsolve-6.2.2506.post75.dev0.data/data/share/ngsolve/beam.vol +240 -0
  273. ngsolve-6.2.2506.post75.dev0.data/data/share/ngsolve/chip.in2d +41 -0
  274. ngsolve-6.2.2506.post75.dev0.data/data/share/ngsolve/chip.vol +614 -0
  275. ngsolve-6.2.2506.post75.dev0.data/data/share/ngsolve/coil.geo +12 -0
  276. ngsolve-6.2.2506.post75.dev0.data/data/share/ngsolve/coil.vol +2560 -0
  277. ngsolve-6.2.2506.post75.dev0.data/data/share/ngsolve/coilshield.geo +24 -0
  278. ngsolve-6.2.2506.post75.dev0.data/data/share/ngsolve/coilshield.vol +3179 -0
  279. ngsolve-6.2.2506.post75.dev0.data/data/share/ngsolve/cube.geo +19 -0
  280. ngsolve-6.2.2506.post75.dev0.data/data/share/ngsolve/cube.vol +1832 -0
  281. ngsolve-6.2.2506.post75.dev0.data/data/share/ngsolve/d10_DGdoubleglazing.pde +50 -0
  282. ngsolve-6.2.2506.post75.dev0.data/data/share/ngsolve/d11_chip_nitsche.pde +40 -0
  283. ngsolve-6.2.2506.post75.dev0.data/data/share/ngsolve/d1_square.pde +43 -0
  284. ngsolve-6.2.2506.post75.dev0.data/data/share/ngsolve/d2_chip.pde +35 -0
  285. ngsolve-6.2.2506.post75.dev0.data/data/share/ngsolve/d3_helmholtz.pde +22 -0
  286. ngsolve-6.2.2506.post75.dev0.data/data/share/ngsolve/d4_cube.pde +46 -0
  287. ngsolve-6.2.2506.post75.dev0.data/data/share/ngsolve/d5_beam.pde +74 -0
  288. ngsolve-6.2.2506.post75.dev0.data/data/share/ngsolve/d6_shaft.pde +73 -0
  289. ngsolve-6.2.2506.post75.dev0.data/data/share/ngsolve/d7_coil.pde +50 -0
  290. ngsolve-6.2.2506.post75.dev0.data/data/share/ngsolve/d8_coilshield.pde +49 -0
  291. ngsolve-6.2.2506.post75.dev0.data/data/share/ngsolve/d9_hybridDG.pde +72 -0
  292. ngsolve-6.2.2506.post75.dev0.data/data/share/ngsolve/doubleglazing.in2d +27 -0
  293. ngsolve-6.2.2506.post75.dev0.data/data/share/ngsolve/doubleglazing.vol +737 -0
  294. ngsolve-6.2.2506.post75.dev0.data/data/share/ngsolve/piezo2d40round4.vol.gz +0 -0
  295. ngsolve-6.2.2506.post75.dev0.data/data/share/ngsolve/shaft.geo +73 -0
  296. ngsolve-6.2.2506.post75.dev0.data/data/share/ngsolve/shaft.vol +4291 -0
  297. ngsolve-6.2.2506.post75.dev0.data/data/share/ngsolve/square.in2d +17 -0
  298. ngsolve-6.2.2506.post75.dev0.data/data/share/ngsolve/square.vol +149 -0
  299. ngsolve-6.2.2506.post75.dev0.dist-info/METADATA +14 -0
  300. ngsolve-6.2.2506.post75.dev0.dist-info/RECORD +303 -0
  301. ngsolve-6.2.2506.post75.dev0.dist-info/WHEEL +5 -0
  302. ngsolve-6.2.2506.post75.dev0.dist-info/licenses/LICENSE +504 -0
  303. ngsolve-6.2.2506.post75.dev0.dist-info/top_level.txt +1 -0
@@ -0,0 +1,1146 @@
1
+ #ifndef FILE_HCURLLOFE
2
+ #define FILE_HCURLLOFE
3
+
4
+ /*********************************************************************/
5
+ /* File: hcurllofe.hpp */
6
+ /* Author: Joachim Schoeberl */
7
+ /* Date: 16. Apr. 2000 */
8
+ /*********************************************************************/
9
+
10
+ #include "h1lofe.hpp"
11
+ #include "thcurlfe.hpp"
12
+
13
+ namespace ngfem
14
+ {
15
+
16
+
17
+ template <ELEMENT_TYPE ET>
18
+ class HCurlDummyFE : public T_HCurlFiniteElementFO<HCurlDummyFE<ET>,ET,0,0>
19
+ {
20
+ public:
21
+ template<typename Tx, typename TFA>
22
+ static void T_CalcShape (TIP<ET_trait<ET>::DIM,Tx> ip, TFA & shape)
23
+ { ; }
24
+ };
25
+
26
+
27
+
28
+
29
+ #ifdef FILE_HCURLFE_CPP
30
+ #define HCURLFE_EXTERN
31
+ #else
32
+ #define HCURLFE_EXTERN extern
33
+ #endif
34
+
35
+ HCURLFE_EXTERN template class HCurlDummyFE<ET_POINT>;
36
+ HCURLFE_EXTERN template class HCurlDummyFE<ET_SEGM>;
37
+ HCURLFE_EXTERN template class HCurlDummyFE<ET_TRIG>;
38
+ HCURLFE_EXTERN template class HCurlDummyFE<ET_QUAD>;
39
+
40
+ HCURLFE_EXTERN template class HCurlDummyFE<ET_TET>;
41
+ HCURLFE_EXTERN template class HCurlDummyFE<ET_PRISM>;
42
+ HCURLFE_EXTERN template class HCurlDummyFE<ET_PYRAMID>;
43
+ HCURLFE_EXTERN template class HCurlDummyFE<ET_HEXAMID>;
44
+ HCURLFE_EXTERN template class HCurlDummyFE<ET_HEX>;
45
+
46
+
47
+ HCURLFE_EXTERN template class T_HCurlFiniteElementFO<HCurlDummyFE<ET_POINT>,ET_POINT,0,0>;
48
+ HCURLFE_EXTERN template class T_HCurlFiniteElementFO<HCurlDummyFE<ET_SEGM>,ET_SEGM,0,0>;
49
+ HCURLFE_EXTERN template class T_HCurlFiniteElementFO<HCurlDummyFE<ET_TRIG>,ET_TRIG,0,0>;
50
+ HCURLFE_EXTERN template class T_HCurlFiniteElementFO<HCurlDummyFE<ET_QUAD>,ET_QUAD,0,0>;
51
+ HCURLFE_EXTERN template class T_HCurlFiniteElementFO<HCurlDummyFE<ET_TET>,ET_TET,0,0>;
52
+ HCURLFE_EXTERN template class T_HCurlFiniteElementFO<HCurlDummyFE<ET_PRISM>,ET_PRISM,0,0>;
53
+ HCURLFE_EXTERN template class T_HCurlFiniteElementFO<HCurlDummyFE<ET_PYRAMID>,ET_PYRAMID,0,0>;
54
+ HCURLFE_EXTERN template class T_HCurlFiniteElementFO<HCurlDummyFE<ET_HEXAMID>,ET_HEXAMID,0,0>;
55
+ HCURLFE_EXTERN template class T_HCurlFiniteElementFO<HCurlDummyFE<ET_HEX>,ET_HEX,0,0>;
56
+
57
+
58
+ /* **************************** Segm Elements *************** */
59
+
60
+
61
+ ///
62
+ class FE_NedelecSegm1 : public HCurlFiniteElement<1>
63
+ {
64
+ public:
65
+
66
+ enum { NDOF = 1 };
67
+
68
+ public:
69
+ ///
70
+ FE_NedelecSegm1();
71
+ ///
72
+ // virtual ~FE_NedelecSegm1();
73
+ virtual ELEMENT_TYPE ElementType() const override { return ET_SEGM; }
74
+ ///
75
+ virtual void CalcShape (const IntegrationPoint & ip,
76
+ BareSliceMatrix<> shape) const override;
77
+ };
78
+
79
+
80
+
81
+ ///
82
+ class FE_NedelecSegm2 : public HCurlFiniteElement<1>
83
+ {
84
+ public:
85
+
86
+ enum { NDOF = 2 };
87
+
88
+ ///
89
+ FE_NedelecSegm2();
90
+ ///
91
+ // virtual ~FE_NedelecSegm2();
92
+ virtual ELEMENT_TYPE ElementType() const override { return ET_SEGM; }
93
+
94
+ virtual void CalcShape (const IntegrationPoint & ip,
95
+ BareSliceMatrix<> shape) const override;
96
+ };
97
+
98
+
99
+
100
+ ///
101
+ class FE_NedelecSegm3 : public HCurlFiniteElement<1>
102
+ {
103
+ ///
104
+ // static Array<IPData> ipdata;
105
+ // bool ipdatadestructed;
106
+
107
+ public:
108
+ ///
109
+ FE_NedelecSegm3();
110
+ ///
111
+ // virtual ~FE_NedelecSegm3();
112
+ virtual ELEMENT_TYPE ElementType() const override { return ET_SEGM; }
113
+
114
+ virtual void CalcShape (const IntegrationPoint & ip,
115
+ BareSliceMatrix<> shape) const override;
116
+ };
117
+
118
+
119
+
120
+
121
+
122
+
123
+ /* *********************** Quad elements ******************* */
124
+
125
+ class FE_NedelecQuad1 : public T_HCurlFiniteElementFO<FE_NedelecQuad1,ET_QUAD,4,1>
126
+ {
127
+ public:
128
+ template<typename Tx, typename TFA>
129
+ static void T_CalcShape (TIP<2,Tx> ip, TFA & shape)
130
+ {
131
+ // Tx x = hx[0], y = hx[1];
132
+ Tx x = ip.x, y = ip.y;
133
+
134
+ Tx lami[4] = {(1-x)*(1-y),x*(1-y),x*y,(1-x)*y};
135
+ Tx sigma[4] = {(1-x)+(1-y),x+(1-y),x+y,(1-x)+y};
136
+
137
+ const EDGE * edges = ElementTopology::GetEdges (ET_QUAD);
138
+ for (int i = 0; i < 4; i++)
139
+ {
140
+ int es = edges[i][0], ee = edges[i][1];
141
+
142
+ Tx xi = sigma[ee]-sigma[es];
143
+ Tx lam_e = lami[ee]+lami[es];
144
+
145
+ shape[i] = uDv (0.5 * lam_e, xi);
146
+ }
147
+ }
148
+ };
149
+
150
+ HCURLFE_EXTERN template class T_HCurlHighOrderFiniteElement<ET_QUAD,FE_NedelecQuad1>;
151
+
152
+ /*
153
+ /// Gradients of Q1
154
+ class FE_NedelecQuad1 : public HCurlFiniteElement<2>
155
+ {
156
+ public:
157
+ enum { NDOF = 4 };
158
+
159
+ protected:
160
+ ///
161
+ // static Array<IPData> ipdata;
162
+ // bool ipdatadestructed;
163
+ public:
164
+ ///
165
+ FE_NedelecQuad1();
166
+ ///
167
+ virtual ~FE_NedelecQuad1();
168
+
169
+ ///
170
+ virtual void CalcShape (const IntegrationPoint & ip,
171
+ FlatMatrixFixWidth<2> shape) const;
172
+
173
+ };
174
+ */
175
+
176
+
177
+ /*
178
+ template <int ORDER, int ZORDER>
179
+ class FE_TNedelecQuadTraits
180
+ {
181
+ public:
182
+ enum { NDOF = ORDER * (ZORDER+1) + (ORDER+1) * ZORDER };
183
+ enum { NEDGEDOF = 2 * (ORDER + ZORDER) - 4 };
184
+ };
185
+ */
186
+
187
+ template <int ORDER, int ZORDER>
188
+ class FE_TNedelecQuad : public HCurlFiniteElement<2>
189
+ {
190
+ public:
191
+ enum { NDOF = ORDER * (ZORDER+1) + (ORDER+1) * ZORDER };
192
+ enum { NEDGEDOF = 2 * (ORDER + ZORDER) - 4 };
193
+
194
+ protected:
195
+ ///
196
+ // static Array<IPData> ipdata;
197
+ // bool ipdatadestructed;
198
+ ///
199
+ // static Mat<FE_TNedelecQuad<ORDER,ZORDER>::NDOF> trans;
200
+
201
+ // static Mat<FE_TNedelecQuadTraits<ORDER,ZORDER>::NDOF> trans;
202
+ // static Mat<FE_TNedelecQuadTraits<ORDER,ZORDER>::NEDGEDOF> trans2;
203
+
204
+ static Matrix<> trans;
205
+ static Matrix<> trans2;
206
+
207
+ FE_NedelecQuad1 quad1;
208
+
209
+ public:
210
+ enum { MAXORDER = (ORDER > ZORDER) ? ORDER : ZORDER };
211
+
212
+ ///
213
+ FE_TNedelecQuad();
214
+ ///
215
+ virtual ~FE_TNedelecQuad();
216
+ virtual ELEMENT_TYPE ElementType() const override { return ET_QUAD; }
217
+
218
+
219
+ ///
220
+ virtual void CalcShape (const IntegrationPoint & ip,
221
+ BareSliceMatrix<> shape) const override;
222
+ ///
223
+ virtual void CalcShape1 (const IntegrationPoint & ip,
224
+ FlatMatrixFixWidth<2> shape) const override;
225
+ ///
226
+ virtual void CalcShape2 (const IntegrationPoint & ip,
227
+ FlatMatrixFixWidth<2> shape) const override;
228
+ ///
229
+ void Orthogonalize();
230
+ };
231
+
232
+
233
+
234
+
235
+ /* ******************** triangular elements *********************** */
236
+
237
+ class FE_NedelecTrig1 : public T_HCurlFiniteElementFO<FE_NedelecTrig1,ET_TRIG,3,1>
238
+ {
239
+ public:
240
+ template<typename Tx, typename TFA>
241
+ static void T_CalcShape (TIP<2,Tx> ip, TFA & shape)
242
+ {
243
+ // Tx x = hx[0], y = hx[1];
244
+ Tx x = ip.x, y = ip.y;
245
+ Tx lami[3] = { x, y, 1-x-y };
246
+
247
+ const EDGE * edges = ElementTopology::GetEdges (ET_TRIG);
248
+ for (int i = 0; i < 3; i++)
249
+ shape[i] = uDv_minus_vDu (lami[edges[i][0]], lami[edges[i][1]]);
250
+ }
251
+ };
252
+
253
+ HCURLFE_EXTERN template class T_HCurlHighOrderFiniteElement<ET_TRIG,FE_NedelecTrig1>;
254
+
255
+ class FE_NedelecTrig2 : public T_HCurlFiniteElementFO<FE_NedelecTrig2,ET_TRIG,6,1>
256
+ {
257
+ public:
258
+ template<typename Tx, typename TFA>
259
+ static void T_CalcShape (TIP<2,Tx> ip, TFA & shape)
260
+ {
261
+ // Tx x = hx[0], y = hx[1];
262
+ Tx x = ip.x, y = ip.y;
263
+ Tx lami[3] = { x, y, 1-x-y };
264
+
265
+ const EDGE * edges = ElementTopology::GetEdges (ET_TRIG);
266
+ for (int i = 0; i < 3; i++)
267
+ {
268
+ shape[i] = uDv_minus_vDu (lami[edges[i][0]], lami[edges[i][1]]);
269
+ shape[i+3] = Du (lami[edges[i][0]]*lami[edges[i][1]]);
270
+ }
271
+ }
272
+ };
273
+
274
+ HCURLFE_EXTERN template class T_HCurlHighOrderFiniteElement<ET_TRIG,FE_NedelecTrig2>;
275
+
276
+ class FE_NedelecTrig3 : public T_HCurlFiniteElementFO<FE_NedelecTrig3,ET_TRIG,12,2>
277
+ {
278
+ public:
279
+ template<typename Tx, typename TFA>
280
+ static void T_CalcShape (TIP<2,Tx> ip, TFA & shape)
281
+ {
282
+ // Tx x = hx[0], y = hx[1];
283
+ Tx x = ip.x, y = ip.y;
284
+ Tx lami[3] = { x, y, 1-x-y };
285
+
286
+ const EDGE * edges = ElementTopology::GetEdges (ET_TRIG);
287
+ for (int i = 0; i < 3; i++)
288
+ {
289
+ Tx lam1 = lami[edges[i][0]];
290
+ Tx lam2 = lami[edges[i][1]];
291
+
292
+ shape[i] = uDv_minus_vDu (lam1, lam2);
293
+ shape[i+3] = Du (lam1*lam2);
294
+ shape[i+6] = Du (lam1*lam2*(lam1-lam2));
295
+ }
296
+
297
+ const FACE * faces = ElementTopology::GetFaces (ET_TRIG);
298
+ for (int k = 0; k < 3; k++)
299
+ {
300
+ int k1 = (k+1)%3, k2 = (k+2)%3;
301
+ shape[9+k] = uDv_minus_vDu (lami[faces[0][k]],
302
+ lami[faces[0][k1]]*lami[faces[0][k2]]);
303
+ }
304
+
305
+ }
306
+ };
307
+
308
+ HCURLFE_EXTERN template class T_HCurlHighOrderFiniteElement<ET_TRIG,FE_NedelecTrig3>;
309
+
310
+ /*
311
+ /// Lowest order Nedelec
312
+ class FE_NedelecTrig1 : public HCurlFiniteElement<2>
313
+ {
314
+ ///
315
+ // static Array<IPData> ipdata;
316
+ // bool ipdatadestructed;
317
+
318
+ public:
319
+
320
+ ///
321
+ FE_NedelecTrig1();
322
+ ///
323
+ virtual ~FE_NedelecTrig1();
324
+ ///
325
+ virtual void CalcShape (const IntegrationPoint & ip,
326
+ FlatMatrixFixWidth<2> shape) const;
327
+ };
328
+
329
+
330
+
331
+ /// Nedelec type 2, order 1, gradients of P2
332
+ class FE_NedelecTrig2 : public HCurlFiniteElement<2>
333
+ {
334
+ public:
335
+ enum { NDOF = 6 };
336
+
337
+ private:
338
+ ///
339
+ // static Array<IPData> ipdata;
340
+ // bool ipdatadestructed;
341
+ ///
342
+ static Mat<NDOF> trans;
343
+
344
+ public:
345
+ ///
346
+ FE_NedelecTrig2();
347
+ ///
348
+ virtual ~FE_NedelecTrig2();
349
+ ///
350
+ virtual void CalcShape (const IntegrationPoint & ip,
351
+ FlatMatrixFixWidth<2> shape) const;
352
+
353
+ ///
354
+ virtual void CalcShape1 (const IntegrationPoint & ip,
355
+ FlatMatrixFixWidth<2> shape) const;
356
+
357
+ ///
358
+ void Orthogonalize();
359
+ };
360
+
361
+
362
+ /// Nedelec type 2, order 2, gradients of P3
363
+ class FE_NedelecTrig3 : public HCurlFiniteElement<2>
364
+ {
365
+ public:
366
+ enum { NDOF = 12 };
367
+ enum { NEDGEDOF = 6 };
368
+ ///
369
+ // static Array<IPData> ipdata;
370
+ // bool ipdatadestructed;
371
+ ///
372
+ static Mat<NDOF> trans;
373
+ ///
374
+ static Mat<NEDGEDOF> trans2;
375
+ ///
376
+ FE_NedelecTrig2 trig1;
377
+ public:
378
+ ///
379
+ FE_NedelecTrig3();
380
+ ///
381
+ virtual ~FE_NedelecTrig3();
382
+ ///
383
+ virtual void CalcShape (const IntegrationPoint & ip,
384
+ FlatMatrixFixWidth<2> shape) const;
385
+
386
+ ///
387
+ virtual void CalcShape1 (const IntegrationPoint & ip,
388
+ FlatMatrixFixWidth<2> shape) const;
389
+
390
+ ///
391
+ virtual void CalcShape2 (const IntegrationPoint & ip,
392
+ FlatMatrixFixWidth<2> shape) const;
393
+
394
+ ///
395
+ void Orthogonalize();
396
+ };
397
+ */
398
+
399
+
400
+
401
+
402
+
403
+
404
+
405
+
406
+
407
+
408
+ /* *********************** Tetrahedral elements ********************** */
409
+
410
+ class FE_NedelecTet1 : public T_HCurlFiniteElementFO<FE_NedelecTet1,ET_TET,6,1>
411
+ {
412
+ public:
413
+ template<typename Tx, typename TFA>
414
+ static void T_CalcShape (TIP<3,Tx> ip, TFA & shape)
415
+ {
416
+ // Tx x = hx[0], y = hx[1], z = hx[2];
417
+ // Tx lami[4] = { x, y, z, 1-x-y-z };
418
+ Tx lami[4] = { ip.x, ip.y, ip.z, 1-ip.x-ip.y-ip.z };
419
+
420
+ const EDGE * edges = ElementTopology::GetEdges (ET_TET);
421
+ for (int i = 0; i < 6; i++)
422
+ shape[i] = uDv_minus_vDu (lami[edges[i][0]], lami[edges[i][1]]);
423
+ }
424
+ };
425
+
426
+ HCURLFE_EXTERN template class T_HCurlHighOrderFiniteElement<ET_TET,FE_NedelecTet1>;
427
+
428
+ class FE_NedelecTet2 : public T_HCurlFiniteElementFO<FE_NedelecTet2,ET_TET,12,1>
429
+ {
430
+ public:
431
+ template<typename Tx, typename TFA>
432
+ static void T_CalcShape (TIP<3,Tx> ip, TFA & shape)
433
+ {
434
+ // Tx x = hx[0], y = hx[1], z = hx[2];
435
+ // Tx lami[4] = { x, y, z, 1-x-y-z };
436
+ // Tx lami[4] = { x[0], x[1], x[2], 1-x[0]-x[1]-x[2] };
437
+ Tx lami[4] = { ip.x, ip.y, ip.z, 1-ip.x-ip.y-ip.z };
438
+
439
+ const EDGE * edges = ElementTopology::GetEdges (ET_TET);
440
+ for (int i = 0; i < 6; i++)
441
+ {
442
+ shape[i] = uDv_minus_vDu (lami[edges[i][0]], lami[edges[i][1]]);
443
+ shape[i+6] = Du (lami[edges[i][0]]*lami[edges[i][1]]);
444
+ }
445
+ }
446
+ };
447
+ HCURLFE_EXTERN template class T_HCurlHighOrderFiniteElement<ET_TET,FE_NedelecTet2>;
448
+
449
+ class FE_NedelecTet3 : public T_HCurlFiniteElementFO<FE_NedelecTet3,ET_TET,30,2>
450
+ {
451
+ public:
452
+ template<typename Tx, typename TFA>
453
+ static void T_CalcShape (TIP<3,Tx> ip, TFA & shape)
454
+ {
455
+ // Tx lami[4] = { x[0], x[1], x[2], 1-x[0]-x[1]-x[2] };
456
+ Tx lami[4] = { ip.x, ip.y, ip.z, 1-ip.x-ip.y-ip.z };
457
+
458
+ const EDGE * edges = ElementTopology::GetEdges (ET_TET);
459
+ for (int i = 0; i < 6; i++)
460
+ {
461
+ Tx lam1 = lami[edges[i][0]];
462
+ Tx lam2 = lami[edges[i][1]];
463
+ shape[i] = uDv_minus_vDu (lam1, lam2);
464
+ shape[i+6] = Du (lam1*lam2);
465
+ shape[i+12] = Du (lam1*lam2*(lam1-lam2));
466
+ }
467
+
468
+ const FACE * faces = ElementTopology::GetFaces (ET_TET);
469
+ for (int i = 0; i < 4; i++)
470
+ for (int k = 0; k < 3; k++)
471
+ {
472
+ int k1 = (k+1)%3, k2 = (k+2)%3;
473
+ shape[18+3*i+k] = uDv_minus_vDu (lami[faces[i][k]],
474
+ lami[faces[i][k1]]*lami[faces[i][k2]]);
475
+ }
476
+ }
477
+ };
478
+ HCURLFE_EXTERN template class T_HCurlHighOrderFiniteElement<ET_TET,FE_NedelecTet3>;
479
+
480
+
481
+ /*
482
+ class FE_NedelecTet1o : public HCurlFiniteElement<3>
483
+ {
484
+ public:
485
+ enum { NDOF = 6 };
486
+
487
+ private:
488
+ ///
489
+ // static Array<IPData> ipdata;
490
+ // bool ipdatadestructed;
491
+
492
+ public:
493
+
494
+ ///
495
+ FE_NedelecTet1o();
496
+ ///
497
+ virtual ~FE_NedelecTet1o();
498
+ ///
499
+ virtual void CalcShape (const IntegrationPoint & ip,
500
+ FlatMatrixFixWidth<3> shape) const;
501
+
502
+ virtual void CalcCurlShape (const IntegrationPoint & ip,
503
+ FlatMatrixFixWidth<3> curlshape) const;
504
+ };
505
+
506
+
507
+ ///
508
+ class FE_NedelecTet2o : public HCurlFiniteElement<3>
509
+ {
510
+ public:
511
+
512
+ enum { NDOF = 12 };
513
+
514
+ private:
515
+ ///
516
+ // static Array<IPData> ipdata;
517
+ // bool ipdatadestructed;
518
+ ///
519
+ static Mat<NDOF> trans;
520
+
521
+ public:
522
+ ///
523
+ FE_NedelecTet2o();
524
+ ///
525
+ virtual ~FE_NedelecTet2o();
526
+ ///
527
+ virtual void CalcShape (const IntegrationPoint & ip,
528
+ FlatMatrixFixWidth<3> shape) const;
529
+
530
+
531
+ ///
532
+ virtual void CalcShape1 (const IntegrationPoint & ip,
533
+ FlatMatrixFixWidth<3> shape) const;
534
+
535
+ ///
536
+ void Orthogonalize();
537
+ };
538
+
539
+
540
+ /// 2nd order Nedelec element of class II
541
+ class FE_NedelecTet3 : public HCurlFiniteElement<3>
542
+ {
543
+ public:
544
+ enum { NDOF = 30 };
545
+ enum { NEDGEDOF = 12 };
546
+ enum { NFACEDOF = 12 };
547
+
548
+ protected:
549
+ ///
550
+ // static Array<IPData> ipdata;
551
+ // bool ipdatadestructed;
552
+ ///
553
+ static Mat<NDOF> trans;
554
+ ///
555
+ static Mat<NEDGEDOF> trans2;
556
+ ///
557
+ static Mat<NFACEDOF> trans3;
558
+
559
+ FE_NedelecTet1 tet1;
560
+ public:
561
+
562
+ ///
563
+ FE_NedelecTet3();
564
+ ///
565
+ virtual ~FE_NedelecTet3();
566
+
567
+
568
+ virtual void CalcShape (const IntegrationPoint & ip,
569
+ FlatMatrixFixWidth<3> shape) const;
570
+
571
+ virtual void CalcCurlShape (const IntegrationPoint & ip,
572
+ FlatMatrixFixWidth<3> curlshape) const;
573
+
574
+ ///
575
+ virtual void CalcShape1 (const IntegrationPoint & ip,
576
+ FlatMatrixFixWidth<3> shape) const;
577
+
578
+ ///
579
+ virtual void CalcShape2 (const IntegrationPoint & ip,
580
+ FlatMatrixFixWidth<3> shape) const;
581
+
582
+ ///
583
+ virtual void CalcShape3 (const IntegrationPoint & ip,
584
+ FlatMatrixFixWidth<3> shape) const;
585
+
586
+ ///
587
+ virtual void CalcCurlShape3 (const IntegrationPoint & ip,
588
+ FlatMatrixFixWidth<3> shape) const;
589
+
590
+ ///
591
+ void Orthogonalize();
592
+ };
593
+ */
594
+
595
+
596
+ /// 2nd order Nedelec element of class II, without gradient fields
597
+ class FE_NedelecTet3NoGrad : public HCurlFiniteElement<3>
598
+ {
599
+ public:
600
+ enum { NDOF = 18 };
601
+ enum { NFACEDOF = 12 };
602
+
603
+ protected:
604
+ static Mat<NFACEDOF> trans3;
605
+
606
+ FE_NedelecTet1 tet1;
607
+ public:
608
+ FE_NedelecTet3NoGrad();
609
+ virtual ~FE_NedelecTet3NoGrad();
610
+
611
+ virtual ELEMENT_TYPE ElementType() const override { return ET_TET; }
612
+ virtual void CalcShape (const IntegrationPoint & ip,
613
+ BareSliceMatrix<> shape) const override;
614
+
615
+ using HCurlFiniteElement<3>::CalcCurlShape;
616
+ virtual void CalcCurlShape (const IntegrationPoint & ip,
617
+ BareSliceMatrix<> curlshape) const override;
618
+
619
+ virtual void CalcShape3 (const IntegrationPoint & ip,
620
+ FlatMatrixFixWidth<3> shape) const override;
621
+
622
+ virtual void CalcCurlShape3 (const IntegrationPoint & ip,
623
+ FlatMatrixFixWidth<3> shape) const;
624
+
625
+ void Orthogonalize();
626
+ };
627
+
628
+
629
+ /* *********************** Hex elements ************************ */
630
+
631
+
632
+
633
+ ///
634
+ class FE_NedelecHex1 : public HCurlFiniteElement<3>
635
+ {
636
+ ///
637
+ // static Array<IPData> ipdata;
638
+ // bool ipdatadestructed;
639
+
640
+ public:
641
+ ///
642
+ FE_NedelecHex1();
643
+ ///
644
+ virtual ~FE_NedelecHex1();
645
+ virtual ELEMENT_TYPE ElementType() const override { return ET_HEX; }
646
+ ///
647
+ virtual void CalcShape (const IntegrationPoint & ip,
648
+ BareSliceMatrix<> shape) const override;
649
+ };
650
+
651
+
652
+ /* *********************** Prism elements ********************** */
653
+
654
+ class FE_NedelecPrism1 : public T_HCurlFiniteElementFO<FE_NedelecPrism1,ET_PRISM,9,1>
655
+ {
656
+ public:
657
+ template<typename Tx, typename TFA>
658
+ static void T_CalcShape (TIP<3,Tx> ip, TFA & shape)
659
+ {
660
+ // Tx x = hx[0], y = hx[1], z = hx[2];
661
+ Tx x = ip.x, y = ip.y, z = ip.z;
662
+
663
+ Tx lami[6] = { x, y, 1-x-y, x, y, 1-x-y };
664
+ Tx muz[6] = { 1-z, 1-z, 1-z, z, z, z };
665
+
666
+ const EDGE * edges = ElementTopology::GetEdges (ET_PRISM);
667
+
668
+ // horizontal edge shapes
669
+ for (int i = 0; i < 6; i++)
670
+ {
671
+ int es = edges[i][0], ee = edges[i][1];
672
+ shape[i] = wuDv_minus_wvDu (lami[es], lami[ee], muz[ee]);
673
+ }
674
+
675
+ //Vertical Edge Shapes
676
+ for (int i = 6; i < 9; i++)
677
+ {
678
+ int es = edges[i][0], ee = edges[i][1];
679
+ shape[i] = wuDv_minus_wvDu (muz[es], muz[ee], lami[ee]);
680
+ }
681
+ }
682
+ };
683
+
684
+ HCURLFE_EXTERN template class T_HCurlHighOrderFiniteElement<ET_PRISM,FE_NedelecPrism1>;
685
+
686
+ /*
687
+ ///
688
+ class FE_NedelecPrism1 : public HCurlFiniteElement<3>
689
+ {
690
+ ///
691
+ // static Array<IPData> ipdata;
692
+ // bool ipdatadestructed;
693
+
694
+ public:
695
+
696
+ ///
697
+ FE_NedelecPrism1();
698
+ ///
699
+ virtual ~FE_NedelecPrism1();
700
+
701
+ ///
702
+ virtual void CalcShape (const IntegrationPoint & ip,
703
+ FlatMatrixFixWidth<3> shape) const;
704
+ };
705
+ */
706
+
707
+ /// \f$ \nabla Q (2,ZORDER) \f$
708
+ template <int ZORDER>
709
+ class FE_TNedelecPrism2 : public HCurlFiniteElement<3>
710
+ {
711
+ ///
712
+ // static Array<IPData> ipdata;
713
+ // bool ipdatadestructed;
714
+ ///
715
+ static Matrix<> trans;
716
+ ///
717
+ static Matrix<> trans2;
718
+ ///
719
+ static Matrix<> trans3;
720
+
721
+ FE_NedelecPrism1 prism1;
722
+
723
+ public:
724
+ enum { NDOF = 6 * (ZORDER+1) + 6 * ZORDER };
725
+ enum { NEDGEDOF = 6 + 3 * (ZORDER-1) };
726
+ enum { NFACEDOF = 9 * ZORDER - 6} ;
727
+ enum { MAXORDER = (2 > ZORDER) ? 2 : ZORDER };
728
+
729
+ ///
730
+ FE_TNedelecPrism2();
731
+ ///
732
+ virtual ~FE_TNedelecPrism2();
733
+ virtual ELEMENT_TYPE ElementType() const override { return ET_PRISM; }
734
+ ///
735
+ virtual void CalcShape (const IntegrationPoint & ip,
736
+ BareSliceMatrix<> shape) const override;
737
+
738
+ ///
739
+ virtual void CalcShape1 (const IntegrationPoint & ip,
740
+ FlatMatrixFixWidth<3> shape) const override;
741
+
742
+ ///
743
+ virtual void CalcShape2 (const IntegrationPoint & ip,
744
+ FlatMatrixFixWidth<3> shape) const override;
745
+
746
+ ///
747
+ virtual void CalcShape3 (const IntegrationPoint & ip,
748
+ FlatMatrixFixWidth<3> shape) const override;
749
+
750
+ ///
751
+ void Orthogonalize();
752
+
753
+ };
754
+
755
+
756
+
757
+ /// potential space for Nedelec IIb
758
+ class FE_Trig3Pot : public ScalarFiniteElement<2>
759
+ {
760
+ ///
761
+ // static IPDataArray ipdata;
762
+ public:
763
+ ///
764
+ FE_Trig3Pot();
765
+ ///
766
+ virtual ~FE_Trig3Pot();
767
+ virtual ELEMENT_TYPE ElementType() const override { return ET_TRIG; }
768
+
769
+ ///
770
+ using ScalarFiniteElement<2>::CalcShape;
771
+ virtual void CalcShape (const IntegrationPoint & ip,
772
+ BareSliceVector<> shape) const override;
773
+
774
+ virtual void CalcDShape (const IntegrationPoint & ip,
775
+ BareSliceMatrix<> dshape) const override;
776
+ };
777
+
778
+
779
+
780
+
781
+ /// \f$ \nabla Q (3,ZORDER) \f$
782
+ template <int ZORDER>
783
+ class FE_TNedelecPrism3 : public HCurlFiniteElement<3>
784
+ {
785
+ ///
786
+ // static Array<IPData> ipdata;
787
+ // bool ipdatadestructed;
788
+ ///
789
+ static Matrix<> trans;
790
+ ///
791
+ static Matrix<> trans2;
792
+ ///
793
+ static Matrix<> trans_quad;
794
+ ///
795
+ static Matrix<> trans_trig;
796
+
797
+ FE_NedelecPrism1 prism1;
798
+ FE_NedelecTrig3 trig3;
799
+ FE_Trig2 h1trig2;
800
+ FE_Trig3Pot h1trig3;
801
+ FE_TSegmL2<ZORDER> segm;
802
+ public:
803
+ enum { NDOF = 12 * (ZORDER+1) + 10 * ZORDER };
804
+ enum { NEDGEDOF = 12 + 3 * (ZORDER-1) };
805
+ enum { NQUADFACEDOF = 3 * (5*ZORDER-3) };
806
+ enum { NTRIGFACEDOF = 6 };
807
+ enum { MAXORDER = (3 > ZORDER) ? 3 : ZORDER };
808
+ enum { NINNERDOF = 3 * (ZORDER-1) + ZORDER };
809
+
810
+ ///
811
+ FE_TNedelecPrism3();
812
+ ///
813
+ virtual ~FE_TNedelecPrism3();
814
+ ///
815
+ virtual ELEMENT_TYPE ElementType() const override { return ET_PRISM; }
816
+ virtual void CalcShape (const IntegrationPoint & ip,
817
+ BareSliceMatrix<> shape) const override;
818
+
819
+ ///
820
+ virtual void CalcShape1 (const IntegrationPoint & ip,
821
+ FlatMatrixFixWidth<3> shape) const override;
822
+
823
+ ///
824
+ virtual void CalcShape2 (const IntegrationPoint & ip,
825
+ FlatMatrixFixWidth<3> shape) const override;
826
+
827
+ /// quad face dofs
828
+ virtual void CalcShape3 (const IntegrationPoint & ip,
829
+ FlatMatrixFixWidth<3> shape) const override;
830
+
831
+ /// trig face dofs
832
+ virtual void CalcShape4 (const IntegrationPoint & ip,
833
+ FlatMatrixFixWidth<3> shape) const override;
834
+
835
+ ///
836
+ virtual void CalcInner (const IntegrationPoint & ip,
837
+ FlatMatrixFixWidth<3> shape) const;
838
+
839
+ ///
840
+ virtual void GetInternalDofs (Array<int> & idofs) const;
841
+
842
+ ///
843
+ void Orthogonalize();
844
+ };
845
+
846
+
847
+
848
+
849
+
850
+ /// \f$ \nabla Q (3,ZORDER) \f$
851
+ template <int ZORDER>
852
+ class FE_TNedelecPrism3NoGrad : public HCurlFiniteElement<3>
853
+ {
854
+ ///
855
+ // static Array<IPData> ipdata;
856
+ // bool ipdatadestructed;
857
+ ///
858
+ static Matrix<> trans_quad;
859
+ ///
860
+ static Matrix<> trans_trig;
861
+
862
+ FE_NedelecPrism1 prism1;
863
+ FE_NedelecTrig3 trig3;
864
+ FE_Trig2 h1trig2;
865
+ FE_Trig3Pot h1trig3;
866
+ FE_TSegmL2<ZORDER> segm;
867
+ public:
868
+ // enum { NDOF = 12 * (ZORDER+1) + 10 * ZORDER };
869
+ // enum { NEDGEDOF = 12 + 3 * (ZORDER-1) };
870
+ // 12 z + 12 + 10 z - 12 - 3z + 3 = 19 z + 3
871
+ enum { NDOF = 19 * ZORDER + 3 };
872
+ enum { NQUADFACEDOF = 3 * (5*ZORDER-3) };
873
+ enum { NTRIGFACEDOF = 6 };
874
+ enum { MAXORDER = (3 > ZORDER) ? 3 : ZORDER };
875
+ // enum { NINNERDOF = 3 * (ZORDER-1) + ZORDER };
876
+ enum { NINNERDOF = 3 * (ZORDER-1) + 1 };
877
+
878
+ ///
879
+ FE_TNedelecPrism3NoGrad();
880
+ ///
881
+ virtual ~FE_TNedelecPrism3NoGrad();
882
+ virtual ELEMENT_TYPE ElementType() const override { return ET_PRISM; }
883
+
884
+ ///
885
+ virtual void CalcShape (const IntegrationPoint & ip,
886
+ BareSliceMatrix<> shape) const override;
887
+
888
+ ///
889
+ virtual void CalcShape1 (const IntegrationPoint & ip,
890
+ FlatMatrixFixWidth<3> shape) const override;
891
+
892
+ ///
893
+ virtual void CalcShape2 (const IntegrationPoint & ip,
894
+ FlatMatrixFixWidth<3> shape) const override;
895
+
896
+ /// quad face dofs
897
+ virtual void CalcShape3 (const IntegrationPoint & ip,
898
+ FlatMatrixFixWidth<3> shape) const override;
899
+
900
+ /// trig face dofs + inner dofs
901
+ virtual void CalcShape4 (const IntegrationPoint & ip,
902
+ FlatMatrixFixWidth<3> shape) const override;
903
+
904
+ ///
905
+ virtual void CalcInner (const IntegrationPoint & ip,
906
+ FlatMatrixFixWidth<3> shape) const;
907
+
908
+ ///
909
+ virtual void GetInternalDofs (Array<int> & idofs) const;
910
+
911
+ ///
912
+ void Orthogonalize();
913
+ };
914
+
915
+
916
+
917
+
918
+
919
+
920
+
921
+
922
+
923
+
924
+
925
+
926
+
927
+
928
+ ///
929
+ class FE_NedelecPyramid1 : public T_HCurlFiniteElementFO<FE_NedelecPyramid1,ET_PYRAMID,8,1>
930
+ {
931
+ public:
932
+ template<typename Tx, typename TFA>
933
+ static void T_CalcShape (TIP<3,Tx> ip, TFA & shape)
934
+ {
935
+ // Tx x = hx[0], y = hx[1], z = hx[2];
936
+ Tx x = ip.x, y = ip.y, z = ip.z;
937
+
938
+ z.Value() = z.Value()*(1-1e-12);
939
+
940
+ Tx xt = x/(1-z);
941
+ Tx yt = y/(1-z);
942
+ Tx sigma[5] = {(1-xt)+(1-yt)+(1-z),xt+(1-yt)+(1-z), xt + yt + (1-z),
943
+ (1-xt)+yt+(1-z),z};
944
+
945
+ Tx lami[5] = {(1-xt)*(1-yt)*(1-z),xt*(1-yt)*(1-z), xt * yt * (1-z),
946
+ (1-xt)*yt*(1-z),z};
947
+
948
+ Tx lambda[5] = {(1-xt)*(1-yt),xt*(1-yt), xt * yt,
949
+ (1-xt)*yt,z};
950
+
951
+ // horizontal edges incl. Nedelec 0
952
+ for (int i = 0; i < 4; i++)
953
+ {
954
+ IVec<2> e = ET_trait<ET_PYRAMID>::GetEdge(i);
955
+ Tx xi = sigma[e[1]] - sigma[e[0]];
956
+ Tx lam_t = lambda[e[1]] + lambda[e[0]];
957
+ shape[i] = uDv (0.5 * (1-z)*(1-z)*lam_t, xi);
958
+ }
959
+
960
+ // vertical edges incl. Nedelec 0
961
+ for(int i = 4; i < 8; i++)
962
+ {
963
+ IVec<2> e = ET_trait<ET_PYRAMID>::GetEdge (i);
964
+ shape[i] = uDv_minus_vDu (lami[e[0]], lami[e[1]]);
965
+ }
966
+ }
967
+ };
968
+
969
+ HCURLFE_EXTERN template class T_HCurlHighOrderFiniteElement<ET_PYRAMID,FE_NedelecPyramid1>;
970
+
971
+
972
+ ///
973
+ class FE_NedelecPyramid2 : public HCurlFiniteElement<3>
974
+ {
975
+ public:
976
+ enum { NDOF = 20 };
977
+ enum { NEDGEDOF = 8 };
978
+
979
+ private:
980
+ ///
981
+ // static Array<IPData> ipdata;
982
+ // bool ipdatadestructed;
983
+ ///
984
+ static Matrix<> trans;
985
+ static Matrix<> trans2;
986
+ static Matrix<> trans3;
987
+
988
+ ///
989
+ // static class FE_Quad1 quad1;
990
+ // static class FE_Quad2 quad2;
991
+ typedef ScalarFE<ET_QUAD,1> quad1;
992
+ typedef FE_Quad2 quad2;
993
+
994
+ FE_NedelecPyramid1 pyramid1;
995
+ public:
996
+ ///
997
+ FE_NedelecPyramid2();
998
+ ///
999
+ virtual ~FE_NedelecPyramid2();
1000
+ virtual ELEMENT_TYPE ElementType() const override { return ET_PYRAMID; }
1001
+
1002
+ ///
1003
+ virtual void CalcShape (const IntegrationPoint & ip,
1004
+ BareSliceMatrix<> shape) const override;
1005
+
1006
+ virtual void CalcShape1 (const IntegrationPoint & ip,
1007
+ FlatMatrixFixWidth<3> shape) const override;
1008
+
1009
+ virtual void CalcShape2 (const IntegrationPoint & ip,
1010
+ FlatMatrixFixWidth<3> shape) const override;
1011
+
1012
+
1013
+ ///
1014
+ void Orthogonalize();
1015
+
1016
+ };
1017
+
1018
+
1019
+ /// quad of order 3
1020
+ class FE_Quad3 : public ScalarFiniteElement<2>
1021
+ {
1022
+ // static IPDataArray ipdata;
1023
+
1024
+ public:
1025
+ FE_Quad3();
1026
+ virtual ~FE_Quad3();
1027
+ virtual ELEMENT_TYPE ElementType() const override { return ET_QUAD; }
1028
+
1029
+ using ScalarFiniteElement<2>::CalcShape;
1030
+ virtual void CalcShape (const IntegrationPoint & ip,
1031
+ BareSliceVector<> shape) const override;
1032
+ virtual void CalcDShape (const IntegrationPoint & ip,
1033
+ BareSliceMatrix<> dshape) const override;
1034
+ };
1035
+
1036
+
1037
+ #ifdef VERY_OLD_NEDELECFE
1038
+ ///
1039
+ class FE_NedelecPyramid3 : public HCurlFiniteElement<3>
1040
+ {
1041
+ public:
1042
+ enum { NDOF = 57 };
1043
+ enum { NEDGEDOF = 16 };
1044
+ enum { NFACEDOF = 24 };
1045
+ enum { NINNERDOF = 9 };
1046
+ private:
1047
+ ///
1048
+ // static Array<IPData> ipdata;
1049
+ // bool ipdatadestructed;
1050
+ ///
1051
+ static Mat<NDOF> trans;
1052
+ static Mat<NEDGEDOF> trans2;
1053
+ static Mat<NFACEDOF> trans3;
1054
+
1055
+ ///
1056
+ // static class FE_Quad1 quad1;
1057
+ // static class FE_Quad2 quad2;
1058
+ typedef ScalarFE<ET_QUAD,1> quad1;
1059
+ typedef FE_Quad2 quad2;
1060
+
1061
+ FE_Quad3 quad3;
1062
+ FE_NedelecPyramid1 pyramid1;
1063
+ public:
1064
+ ///
1065
+ FE_NedelecPyramid3();
1066
+ ///
1067
+ virtual ~FE_NedelecPyramid3();
1068
+
1069
+ virtual ELEMENT_TYPE ElementType() const override { return ET_PYRAMID; }
1070
+
1071
+ ///
1072
+ virtual void CalcShape (const IntegrationPoint & ip,
1073
+ SliceMatrix<> shape) const;
1074
+
1075
+ virtual void CalcShape1 (const IntegrationPoint & ip,
1076
+ FlatMatrixFixWidth<3> shape) const;
1077
+
1078
+ virtual void CalcShape2 (const IntegrationPoint & ip,
1079
+ FlatMatrixFixWidth<3> shape) const;
1080
+
1081
+ virtual void CalcShape3 (const IntegrationPoint & ip,
1082
+ FlatMatrixFixWidth<3> shape) const;
1083
+
1084
+ ///
1085
+ virtual void GetInternalDofs (Array<int> & idofs) const;
1086
+ ///
1087
+ void Orthogonalize();
1088
+ };
1089
+ #endif
1090
+
1091
+
1092
+
1093
+
1094
+
1095
+ /*
1096
+ ///
1097
+ class FE_NedelecPyramid3NoGrad : public HCurlFiniteElement<3>
1098
+ {
1099
+ public:
1100
+ // enum { NDOF = 57 };
1101
+ // enum { NEDGEDOF = 16 };
1102
+ enum { NDOF = 41 };
1103
+ enum { NFACEDOF = 24 };
1104
+ enum { NINNERDOF = 9 };
1105
+ private:
1106
+ ///
1107
+ static Array<IPData> ipdata;
1108
+ ///
1109
+ static Mat<NDOF> trans;
1110
+ // static Mat<NEDGEDOF> trans2;
1111
+ static Mat<NFACEDOF> trans3;
1112
+
1113
+ ///
1114
+ FE_Quad1 quad1;
1115
+ FE_Quad2 quad2;
1116
+ FE_Quad3 quad3;
1117
+ FE_NedelecPyramid1 pyramid1;
1118
+ public:
1119
+ ///
1120
+ FE_NedelecPyramid3();
1121
+ ///
1122
+ virtual ~FE_NedelecPyramid3();
1123
+ ///
1124
+ virtual void CalcShape (const IntegrationPoint & ip,
1125
+ FlatMatrixFixWidth<3> shape) const;
1126
+
1127
+ virtual void CalcShape1 (const IntegrationPoint & ip,
1128
+ FlatMatrixFixWidth<3> shape) const;
1129
+
1130
+ virtual void CalcShape2 (const IntegrationPoint & ip,
1131
+ FlatMatrixFixWidth<3> shape) const;
1132
+
1133
+ virtual void CalcShape3 (const IntegrationPoint & ip,
1134
+ FlatMatrixFixWidth<3> shape) const;
1135
+
1136
+ ///
1137
+ virtual void GetInternalDofs (Array<int> & idofs) const;
1138
+ ///
1139
+ void Orthogonalize();
1140
+ };
1141
+ */
1142
+
1143
+ }
1144
+
1145
+
1146
+ #endif