ngsolve 6.2.2608.post18.dev0__cp315-cp315-win_amd64.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.
Files changed (289) hide show
  1. netgen/include/HCTspace.hpp +29 -0
  2. netgen/include/Hddf.hpp +45 -0
  3. netgen/include/JKMspace.hpp +189 -0
  4. netgen/include/acceleratesparseinverse.hpp +55 -0
  5. netgen/include/analytic_integrals.hpp +12 -0
  6. netgen/include/arnoldi.hpp +55 -0
  7. netgen/include/bandmatrix.hpp +334 -0
  8. netgen/include/basematrix.hpp +916 -0
  9. netgen/include/basescalar.hpp +45 -0
  10. netgen/include/basevector.hpp +1445 -0
  11. netgen/include/bdbequations.hpp +2867 -0
  12. netgen/include/bdbintegrator.hpp +1660 -0
  13. netgen/include/bem_diffops.hpp +189 -0
  14. netgen/include/bessel.hpp +1064 -0
  15. netgen/include/bilinearform.hpp +1125 -0
  16. netgen/include/bla.hpp +33 -0
  17. netgen/include/blockjacobi.hpp +351 -0
  18. netgen/include/bspline.hpp +116 -0
  19. netgen/include/calcinverse.hpp +152 -0
  20. netgen/include/cg.hpp +367 -0
  21. netgen/include/chebyshev.hpp +43 -0
  22. netgen/include/cholesky.hpp +720 -0
  23. netgen/include/clapack.h +7254 -0
  24. netgen/include/code_generation.hpp +301 -0
  25. netgen/include/coefficient.hpp +2127 -0
  26. netgen/include/coefficient_impl.hpp +19 -0
  27. netgen/include/coefficient_stdmath.hpp +212 -0
  28. netgen/include/commutingAMG.hpp +99 -0
  29. netgen/include/comp.hpp +79 -0
  30. netgen/include/compatibility.hpp +41 -0
  31. netgen/include/complex_wrapper.hpp +63 -0
  32. netgen/include/compressedfespace.hpp +113 -0
  33. netgen/include/contact.hpp +305 -0
  34. netgen/include/device_blockgemv.hpp +104 -0
  35. netgen/include/device_blockgs.hpp +84 -0
  36. netgen/include/device_blockjacobi.hpp +64 -0
  37. netgen/include/device_diagonalmatrix.hpp +104 -0
  38. netgen/include/device_ebe.hpp +50 -0
  39. netgen/include/device_ebeconst.hpp +81 -0
  40. netgen/include/device_sparsecholesky.hpp +89 -0
  41. netgen/include/device_sparsematrix.hpp +95 -0
  42. netgen/include/devicevector.hpp +433 -0
  43. netgen/include/diagonalmatrix.hpp +161 -0
  44. netgen/include/differentialoperator.hpp +289 -0
  45. netgen/include/diffop.hpp +1384 -0
  46. netgen/include/diffop_impl.hpp +338 -0
  47. netgen/include/diffopwithfactor.hpp +164 -0
  48. netgen/include/discontinuous.hpp +84 -0
  49. netgen/include/dump.hpp +949 -0
  50. netgen/include/ectypes.hpp +121 -0
  51. netgen/include/eigen.hpp +60 -0
  52. netgen/include/eigensystem.hpp +18 -0
  53. netgen/include/elasticity_equations.hpp +597 -0
  54. netgen/include/elementbyelement.hpp +195 -0
  55. netgen/include/elementtopology.hpp +1810 -0
  56. netgen/include/elementtransformation.hpp +342 -0
  57. netgen/include/evalfunc.hpp +405 -0
  58. netgen/include/expr.hpp +1791 -0
  59. netgen/include/facetfe.hpp +155 -0
  60. netgen/include/facetfespace.hpp +182 -0
  61. netgen/include/facethofe.hpp +112 -0
  62. netgen/include/facetsurffespace.hpp +112 -0
  63. netgen/include/fe_interfaces.hpp +32 -0
  64. netgen/include/fem.hpp +88 -0
  65. netgen/include/fesconvert.hpp +14 -0
  66. netgen/include/fespace.hpp +1453 -0
  67. netgen/include/finiteelement.hpp +286 -0
  68. netgen/include/fmminterface.hpp +92 -0
  69. netgen/include/globalinterfacespace.hpp +78 -0
  70. netgen/include/globalspace.hpp +115 -0
  71. netgen/include/gpu_btdtb.hpp +973 -0
  72. netgen/include/gpukernel.h +554 -0
  73. netgen/include/gpukernel.hpp +37 -0
  74. netgen/include/gpuwrapper.hpp +460 -0
  75. netgen/include/gridfunction.hpp +560 -0
  76. netgen/include/h1amg.hpp +133 -0
  77. netgen/include/h1hofe.hpp +192 -0
  78. netgen/include/h1hofe_impl.hpp +1284 -0
  79. netgen/include/h1hofefo.hpp +152 -0
  80. netgen/include/h1hofefo_impl.hpp +185 -0
  81. netgen/include/h1hofespace.hpp +167 -0
  82. netgen/include/h1lofe.hpp +1250 -0
  83. netgen/include/h1lumping.hpp +41 -0
  84. netgen/include/hcurl_equations.hpp +1511 -0
  85. netgen/include/hcurlcurlfe.hpp +2275 -0
  86. netgen/include/hcurlcurlfespace.hpp +78 -0
  87. netgen/include/hcurlfe.hpp +259 -0
  88. netgen/include/hcurlfe_utils.hpp +107 -0
  89. netgen/include/hcurlfes.hpp +142 -0
  90. netgen/include/hcurlhdiv_dshape.hpp +792 -0
  91. netgen/include/hcurlhofe.hpp +175 -0
  92. netgen/include/hcurlhofe_impl.hpp +1892 -0
  93. netgen/include/hcurlhofespace.hpp +193 -0
  94. netgen/include/hcurllofe.hpp +1159 -0
  95. netgen/include/hdiv_equations.hpp +980 -0
  96. netgen/include/hdivdiv_equations.hpp +297 -0
  97. netgen/include/hdivdivfe.hpp +3020 -0
  98. netgen/include/hdivdivsurfacespace.hpp +76 -0
  99. netgen/include/hdivfe.hpp +231 -0
  100. netgen/include/hdivfe_utils.hpp +747 -0
  101. netgen/include/hdivfes.hpp +75 -0
  102. netgen/include/hdivhofe.hpp +501 -0
  103. netgen/include/hdivhofe_impl.hpp +1304 -0
  104. netgen/include/hdivhofefo.hpp +229 -0
  105. netgen/include/hdivhofespace.hpp +177 -0
  106. netgen/include/hdivhosurfacefespace.hpp +106 -0
  107. netgen/include/hdivlofe.hpp +773 -0
  108. netgen/include/hidden.hpp +74 -0
  109. netgen/include/householder.hpp +181 -0
  110. netgen/include/hypre_ams_precond.hpp +123 -0
  111. netgen/include/hypre_precond.hpp +77 -0
  112. netgen/include/integralkernel.hpp +73 -0
  113. netgen/include/integrator.hpp +2175 -0
  114. netgen/include/integratorcf.hpp +253 -0
  115. netgen/include/interpolate.hpp +49 -0
  116. netgen/include/intrule.hpp +2582 -0
  117. netgen/include/intrules_SauterSchwab.hpp +66 -0
  118. netgen/include/irspace.hpp +49 -0
  119. netgen/include/jacobi.hpp +160 -0
  120. netgen/include/kernels.hpp +783 -0
  121. netgen/include/l2hofe.hpp +197 -0
  122. netgen/include/l2hofe_impl.hpp +564 -0
  123. netgen/include/l2hofefo.hpp +463 -0
  124. netgen/include/l2hofespace.hpp +351 -0
  125. netgen/include/la.hpp +48 -0
  126. netgen/include/linearform.hpp +284 -0
  127. netgen/include/matrix.hpp +2547 -0
  128. netgen/include/memusage.hpp +62 -0
  129. netgen/include/meshaccess.hpp +1418 -0
  130. netgen/include/mgpre.hpp +197 -0
  131. netgen/include/mp_coefficient.hpp +145 -0
  132. netgen/include/mptools.hpp +2562 -0
  133. netgen/include/multigrid.hpp +41 -0
  134. netgen/include/multivector.hpp +447 -0
  135. netgen/include/mumpsinverse.hpp +181 -0
  136. netgen/include/ng_lapack.hpp +1706 -0
  137. netgen/include/ngblas.hpp +1262 -0
  138. netgen/include/ngs_defines.hpp +30 -0
  139. netgen/include/ngs_stdcpp_include.hpp +104 -0
  140. netgen/include/ngs_utils.hpp +105 -0
  141. netgen/include/ngsobject.hpp +1010 -0
  142. netgen/include/ngstd.hpp +70 -0
  143. netgen/include/nodalhofe.hpp +100 -0
  144. netgen/include/nodalhofe_impl.hpp +141 -0
  145. netgen/include/normalfacetfe.hpp +229 -0
  146. netgen/include/normalfacetfespace.hpp +98 -0
  147. netgen/include/normalfacetsurfacefespace.hpp +84 -0
  148. netgen/include/order.hpp +243 -0
  149. netgen/include/parallel_matrices.hpp +222 -0
  150. netgen/include/paralleldofs.hpp +340 -0
  151. netgen/include/parallelngs.hpp +23 -0
  152. netgen/include/parallelvector.hpp +277 -0
  153. netgen/include/pardisoinverse.hpp +202 -0
  154. netgen/include/periodic.hpp +133 -0
  155. netgen/include/plateaufespace.hpp +25 -0
  156. netgen/include/pml.hpp +275 -0
  157. netgen/include/pmltrafo.hpp +631 -0
  158. netgen/include/postproc.hpp +142 -0
  159. netgen/include/potentialtools.hpp +22 -0
  160. netgen/include/precomp.hpp +60 -0
  161. netgen/include/preconditioner.hpp +684 -0
  162. netgen/include/prolongation.hpp +386 -0
  163. netgen/include/python_comp.hpp +106 -0
  164. netgen/include/python_fem.hpp +88 -0
  165. netgen/include/python_linalg.hpp +58 -0
  166. netgen/include/python_ngstd.hpp +386 -0
  167. netgen/include/recursive_pol.hpp +4900 -0
  168. netgen/include/recursive_pol_tet.hpp +395 -0
  169. netgen/include/recursive_pol_trig.hpp +492 -0
  170. netgen/include/reorderedfespace.hpp +100 -0
  171. netgen/include/sample_sort.hpp +105 -0
  172. netgen/include/scalarfe.hpp +340 -0
  173. netgen/include/shapefunction_utils.hpp +113 -0
  174. netgen/include/simd_complex.hpp +409 -0
  175. netgen/include/smoother.hpp +259 -0
  176. netgen/include/solve.hpp +92 -0
  177. netgen/include/sparsecholesky.hpp +329 -0
  178. netgen/include/sparsefactorization_interface.hpp +275 -0
  179. netgen/include/sparsematrix.hpp +974 -0
  180. netgen/include/sparsematrix_dyn.hpp +88 -0
  181. netgen/include/sparsematrix_impl.hpp +1096 -0
  182. netgen/include/special_matrix.hpp +398 -0
  183. netgen/include/specialelement.hpp +142 -0
  184. netgen/include/specialelementgroup.hpp +41 -0
  185. netgen/include/stringops.hpp +12 -0
  186. netgen/include/superluinverse.hpp +136 -0
  187. netgen/include/symbolicintegrator.hpp +955 -0
  188. netgen/include/symmetricmatrix.hpp +144 -0
  189. netgen/include/tangentialfacetfe.hpp +315 -0
  190. netgen/include/tangentialfacetfespace.hpp +91 -0
  191. netgen/include/tensor.hpp +566 -0
  192. netgen/include/tensorcoefficient.hpp +447 -0
  193. netgen/include/tensorproductintegrator.hpp +113 -0
  194. netgen/include/thcurlfe.hpp +128 -0
  195. netgen/include/thcurlfe_impl.hpp +380 -0
  196. netgen/include/thdivfe.hpp +80 -0
  197. netgen/include/thdivfe_impl.hpp +492 -0
  198. netgen/include/tinybla.h +2025 -0
  199. netgen/include/tinybla.hpp +17 -0
  200. netgen/include/tpdiffop.hpp +464 -0
  201. netgen/include/tpfes.hpp +133 -0
  202. netgen/include/tpintrule.hpp +224 -0
  203. netgen/include/triangular.hpp +465 -0
  204. netgen/include/tscalarfe.hpp +245 -0
  205. netgen/include/tscalarfe_impl.hpp +1030 -0
  206. netgen/include/umfpackinverse.hpp +149 -0
  207. netgen/include/vector.hpp +1543 -0
  208. netgen/include/voxelcoefficientfunction.hpp +41 -0
  209. netgen/include/vtkoutput.hpp +201 -0
  210. netgen/include/vvector.hpp +216 -0
  211. netgen/include/webgui.hpp +91 -0
  212. netgen/lib/__init__.py +10 -0
  213. netgen/lib/libngsolve.lib +0 -0
  214. netgen/libngsolve.dll +4 -0
  215. ngsolve/TensorProductTools.py +210 -0
  216. ngsolve/__console.py +94 -0
  217. ngsolve/__expr.py +181 -0
  218. ngsolve/__init__.py +188 -0
  219. ngsolve/_scikit_build_core_dependencies.py +30 -0
  220. ngsolve/bvp.py +78 -0
  221. ngsolve/cmake/NGSolveConfig.cmake +98 -0
  222. ngsolve/cmake/ngsolve-targets-release.cmake +19 -0
  223. ngsolve/cmake/ngsolve-targets.cmake +172 -0
  224. ngsolve/config/__init__.py +1 -0
  225. ngsolve/config/__main__.py +4 -0
  226. ngsolve/config/config.py +145 -0
  227. ngsolve/demos/TensorProduct/__init__.py +0 -0
  228. ngsolve/demos/TensorProduct/tp_dg_1d_1d.py +80 -0
  229. ngsolve/demos/TensorProduct/tp_dg_1d_2d.py +73 -0
  230. ngsolve/demos/TensorProduct/tp_dg_2d_1d.py +72 -0
  231. ngsolve/demos/TensorProduct/tp_dg_2d_2d.py +66 -0
  232. ngsolve/demos/__init__.py +0 -0
  233. ngsolve/demos/howto/__init__.py +0 -0
  234. ngsolve/demos/howto/hhj.py +44 -0
  235. ngsolve/demos/howto/hybrid_dg.py +53 -0
  236. ngsolve/demos/howto/mixed.py +30 -0
  237. ngsolve/demos/howto/nonlin.py +29 -0
  238. ngsolve/demos/howto/pickling.py +26 -0
  239. ngsolve/demos/howto/pml.py +31 -0
  240. ngsolve/demos/howto/taskmanager.py +20 -0
  241. ngsolve/demos/howto/tdnns.py +47 -0
  242. ngsolve/demos/howto/timeDG-skeleton.py +45 -0
  243. ngsolve/demos/howto/timeDG.py +38 -0
  244. ngsolve/demos/howto/timeDGlap.py +42 -0
  245. ngsolve/demos/howto/timeDGwave.py +61 -0
  246. ngsolve/demos/intro/__init__.py +0 -0
  247. ngsolve/demos/intro/adaptive.py +123 -0
  248. ngsolve/demos/intro/cmagnet.py +59 -0
  249. ngsolve/demos/intro/elasticity.py +76 -0
  250. ngsolve/demos/intro/navierstokes.py +74 -0
  251. ngsolve/demos/intro/poisson.ipynb +170 -0
  252. ngsolve/demos/intro/poisson.py +41 -0
  253. ngsolve/demos/mpi/__init__.py +0 -0
  254. ngsolve/demos/mpi/mpi_cmagnet.py +87 -0
  255. ngsolve/demos/mpi/mpi_navierstokes.py +117 -0
  256. ngsolve/demos/mpi/mpi_poisson.py +89 -0
  257. ngsolve/demos/mpi/mpi_timeDG.py +82 -0
  258. ngsolve/directsolvers.py +20 -0
  259. ngsolve/eigenvalues.py +364 -0
  260. ngsolve/gpu.py +79 -0
  261. ngsolve/internal.py +89 -0
  262. ngsolve/krylovspace.py +1449 -0
  263. ngsolve/lazy_solve.py +72 -0
  264. ngsolve/meshes.py +752 -0
  265. ngsolve/ngs2petsc.py +310 -0
  266. ngsolve/ngscuda.py +23 -0
  267. ngsolve/ngscxx.py +42 -0
  268. ngsolve/ngslib.lib +0 -0
  269. ngsolve/ngslib.pyd +0 -0
  270. ngsolve/ngsmetal.py +5 -0
  271. ngsolve/nonlinearsolvers.py +212 -0
  272. ngsolve/preconditioners.py +12 -0
  273. ngsolve/solve_implementation.py +174 -0
  274. ngsolve/solvers/__init__.py +10 -0
  275. ngsolve/solvers/cudss.py +157 -0
  276. ngsolve/solvers/mkl_pardiso.py +326 -0
  277. ngsolve/timestepping.py +185 -0
  278. ngsolve/timing.py +108 -0
  279. ngsolve/utils.py +168 -0
  280. ngsolve/webgui.py +653 -0
  281. ngsolve-6.2.2608.post18.dev0.data/scripts/ngscxx.bat +5 -0
  282. ngsolve-6.2.2608.post18.dev0.data/scripts/ngsld.bat +8 -0
  283. ngsolve-6.2.2608.post18.dev0.data/scripts/ngsolve.tcl +648 -0
  284. ngsolve-6.2.2608.post18.dev0.dist-info/DELVEWHEEL +2 -0
  285. ngsolve-6.2.2608.post18.dev0.dist-info/METADATA +15 -0
  286. ngsolve-6.2.2608.post18.dev0.dist-info/RECORD +289 -0
  287. ngsolve-6.2.2608.post18.dev0.dist-info/WHEEL +5 -0
  288. ngsolve-6.2.2608.post18.dev0.dist-info/licenses/LICENSE +504 -0
  289. ngsolve.libs/msvcp140.dll +0 -0
@@ -0,0 +1,29 @@
1
+ #ifndef HCTSPACE_HPP
2
+ #define HCTSPACE_HPP
3
+
4
+ #include "fespace.hpp"
5
+
6
+ namespace ngcomp
7
+ {
8
+ class HCT_FESpace : public FESpace
9
+ {
10
+ protected:
11
+ int order;
12
+ Array<int> first_edge_dof;
13
+ Array<int> first_element_dof;
14
+
15
+ public:
16
+ HCT_FESpace(shared_ptr<MeshAccess> ama, const Flags &flags, bool checkflags = false);
17
+ ~HCT_FESpace() override = default;
18
+ static DocInfo GetDocu();
19
+ void Update() override;
20
+ void FinalizeUpdate() override;
21
+ std::map<ELEMENT_TYPE, IntegrationRule> GetIntegrationRules() const;
22
+
23
+ void GetDofNrs(ElementId ei, Array<int> &dnums) const override;
24
+ FiniteElement &GetFE(ElementId ei, Allocator &alloc) const override;
25
+ };
26
+
27
+ }
28
+
29
+ #endif // HCTSPACE_HPP
@@ -0,0 +1,45 @@
1
+ #ifndef HDIVDIVFACETFESPACE_HPP
2
+ #define HDIVDIVFACETFESPACE_HPP
3
+
4
+ /*
5
+ authors: Edoardo Bonetti, Joachim Schoeberl
6
+ */
7
+
8
+ #include "fespace.hpp"
9
+
10
+ namespace ngcomp
11
+ {
12
+
13
+ // class HDivDivFacetSpace;
14
+ // class HDivDivFacetElement; // forward declaration
15
+
16
+ class HDivDivFacetSpace : public FESpace
17
+ {
18
+ private:
19
+ int order;
20
+ int dofs_per_face; // for uniform order
21
+ int dofs_per_edge;
22
+ // bool bubble = true;
23
+ bool JKM = false;
24
+
25
+ int first_facet_dof;
26
+ // Array<int> first_face_dof; // for variable order (TODO)
27
+ // Array<int> first_edge_dof; // for variable order (TODO)
28
+
29
+ public:
30
+ HDivDivFacetSpace(shared_ptr<MeshAccess> ama, const Flags &flags);
31
+
32
+ string GetClassName() const override { return "HDivDivFacetSpace"; }
33
+
34
+ static DocInfo GetDocu();
35
+
36
+ void Update() override;
37
+
38
+ void GetDofNrs(ElementId ei, Array<DofId> &dnums) const override;
39
+
40
+ FiniteElement &GetFE(ElementId ei, Allocator &alloc) const override;
41
+ shared_ptr<FESpace> GetDivConstraintSpace() const;
42
+ };
43
+ }; // namespace ngcomp
44
+
45
+ #endif
@@ -0,0 +1,189 @@
1
+ #ifndef JKMSPACE_HPP
2
+ #define JKMSPACE_HPP
3
+
4
+ #include "fespace.hpp"
5
+ #include "../fem/hdivdivfe.hpp"
6
+
7
+
8
+ namespace ngcore
9
+ {
10
+ template<int D, typename SCAL>
11
+ NETGEN_INLINE bool operator< (const AutoDiff<D,SCAL> & x, const AutoDiff<D,SCAL> & y)
12
+ {
13
+ return x.Value() < y.Value();
14
+ }
15
+ }
16
+
17
+
18
+ namespace ngfem
19
+ {
20
+
21
+
22
+ class JKMFE_Triangle : public T_HDivDivFE<ET_TRIG,JKMFE_Triangle>
23
+ {
24
+ static constexpr int DIM=2;
25
+ typedef T_HDivDivFE<ET_TRIG,JKMFE_Triangle> BASE;
26
+ public:
27
+
28
+ JKMFE_Triangle(int aorder)
29
+ : BASE(15 /* not used? */, aorder)
30
+ {
31
+ ndof = 15;
32
+
33
+
34
+ /*
35
+ // check n-continuity:
36
+ double eps = 1e-8;
37
+ IntegrationPoint ip1(eps, eps/2);
38
+ IntegrationPoint ip2(eps/2, eps);
39
+
40
+
41
+ Matrix shape1(15, 4);
42
+ Matrix shape2(15, 4);
43
+ const ElementTransformation & trafo = GetFEElementTransformation (ET_TRIG);
44
+ MappedIntegrationPoint<2,2> mip1(ip1, trafo);
45
+ MappedIntegrationPoint<2,2> mip2(ip2, trafo);
46
+
47
+ CalcMappedShape_Matrix (mip1, shape1);
48
+ CalcMappedShape_Matrix (mip2, shape2);
49
+
50
+ cout << "shape1 = " << shape1 << endl;
51
+ cout << "shape2 = " << shape2 << endl;
52
+ Vec<2> n {1,-1};
53
+
54
+ Matrix shape1n(15,2), shape2n(15,2);
55
+
56
+ for (int i = 0; i < ndof; i++)
57
+ {
58
+ shape1n.Row(i) = shape1.Row(i).AsMatrix(2,2) * n;
59
+ shape2n.Row(i) = shape2.Row(i).AsMatrix(2,2) * n;
60
+ }
61
+
62
+ cout << "shape1n = " << shape1n << endl;
63
+ cout << "shape2n = " << shape2n << endl;
64
+ cout << "diff = " << shape1n-shape2n << endl;
65
+
66
+
67
+ throw ExceptionNOSIMD ("JKM trig, stop");
68
+ */
69
+ }
70
+
71
+ virtual ~JKMFE_Triangle() { }
72
+ ELEMENT_TYPE ElementType() const override { return ET_TRIG; }
73
+
74
+
75
+ template <typename T, typename TFA>
76
+ void T_CalcShape (TIP<DIM,AutoDiff<DIM,T>> tip, TFA & shape) const
77
+ {
78
+ Cast() -> T_CalcShape (TIP<DIM,AutoDiffDiff<DIM,T>> (tip), shape);
79
+ }
80
+
81
+ template <typename T, typename TFA>
82
+ void T_CalcShape (TIP<2,AutoDiffDiff<2,T>> ip, TFA & shape) const
83
+ {
84
+ if constexpr (std::is_same<T,double>()) // no SIMD
85
+ {
86
+
87
+ typedef AutoDiff<2, T> Tx;
88
+ Tx x{ip.x}, y{ip.y};
89
+ Tx lam[3] = { x, y, 1-x-y };
90
+
91
+
92
+ int minlam = 0;
93
+ if (lam[1] < lam[minlam]) minlam = 1;
94
+ if (lam[2] < lam[minlam]) minlam = 2;
95
+
96
+ int v0 = (minlam + 1) % 3;
97
+ int v1 = (minlam + 2) % 3;
98
+ int vop = 3-v0-v1;
99
+ int edgenr = -1;
100
+ switch (vop)
101
+ {
102
+ case 0: edgenr = 1; break;
103
+ case 1: edgenr = 0; break;
104
+ default: edgenr = 2; break;
105
+ }
106
+
107
+ int v0orig = v0;
108
+ if (vnums[v0] > vnums[v1]) { Swap(v0,v1); }
109
+
110
+ Tx lamloc[3] = { lam[v0]-lam[minlam],
111
+ lam[v1]-lam[minlam],
112
+ lam[minlam]*3 };
113
+
114
+ // set to 0:
115
+ for (int i = 0; i < ndof; i++)
116
+ shape[i] = T_SymRotRot_Dl2xDl1_v (x,x, Tx(0.));
117
+
118
+
119
+ // edge shape functions:
120
+ shape[2*edgenr+0] = T_SymRotRot_Dl2xDl1_v (lamloc[1], lamloc[1], lamloc[0]);
121
+ shape[2*edgenr+1] = T_SymRotRot_Dl2xDl1_v (lamloc[0], lamloc[0], lamloc[1]);
122
+
123
+ int ii = 6;
124
+
125
+ // shape functions on internal edges, on boundary vertex:
126
+ for (int i = 0; i < 3; i++)
127
+ {
128
+ double sign = (v0orig==i) ? 1 : -1;
129
+ // the HHJ basis:
130
+ if (v0 == i)
131
+ {
132
+ shape[ii] = T_SymRotRot_Dl2xDl1_v (lamloc[0]-2*lamloc[1], lamloc[2], lamloc[0]);
133
+ shape[ii+1] = T_SymRotRot_Dl2xDl1_v (lamloc[1], lamloc[2], sign*lamloc[0]);
134
+ }
135
+ if (v1 == i)
136
+ {
137
+ shape[ii] = T_SymRotRot_Dl2xDl1_v (lamloc[1]-2*lamloc[0], lamloc[2], lamloc[1]);
138
+ shape[ii+1] = T_SymRotRot_Dl2xDl1_v (lamloc[0], lamloc[2], sign*lamloc[1]);
139
+ }
140
+ ii+=2;
141
+ }
142
+
143
+ // 3 shape functios for central node
144
+ for (int i = 0; i < 3; i++)
145
+ shape[ii++] = T_SymRotRot_Dl2xDl1_v (lam[i], lam[i], lamloc[2]);
146
+ }
147
+ else
148
+ throw ExceptionNOSIMD ("JKM trig, no simd");
149
+ }
150
+
151
+
152
+ template <typename MIP, typename TFA>
153
+ void CalcDualShape2 (const MIP & mip, TFA & shape) const
154
+ {
155
+ throw Exception ("Hdivdivfe not implementend for element type");
156
+ }
157
+
158
+ };
159
+ }
160
+
161
+
162
+
163
+ namespace ngcomp
164
+ {
165
+
166
+ class JKM_FESpace : public FESpace
167
+ {
168
+ protected:
169
+ int order;
170
+ Array<int> first_edge_dof;
171
+ Array<int> first_element_dof;
172
+
173
+ public:
174
+ JKM_FESpace(shared_ptr<MeshAccess> ama, const Flags &flags, bool checkflags = false);
175
+ ~JKM_FESpace() override = default;
176
+ static DocInfo GetDocu();
177
+ void Update() override;
178
+ void FinalizeUpdate() override;
179
+ std::map<ELEMENT_TYPE, IntegrationRule> GetIntegrationRules(int bonus_intorder=2) const;
180
+
181
+ void GetDofNrs(ElementId ei, Array<int> &dnums) const override;
182
+ void GetDofNrs (NodeId ni, Array<DofId> & dnums) const override;
183
+
184
+ FiniteElement &GetFE(ElementId ei, Allocator &alloc) const override;
185
+ };
186
+
187
+ }
188
+
189
+ #endif // JKMSPACE_HPP
@@ -0,0 +1,55 @@
1
+ #ifndef ACCELERATESPARSEINVERSE_HPP
2
+ #define ACCELERATESPARSEINVERSE_HPP
3
+
4
+ #include "sparsefactorization_interface.hpp"
5
+
6
+ #ifdef USE_ACCELERATE_SPARSE
7
+
8
+ namespace ngla
9
+ {
10
+ /** Sparse direct solver backed by Apple's Accelerate Sparse Solvers.
11
+
12
+ The NGSolve matrix is converted to scalar CSC storage during Analyze().
13
+ Real SPD, real symmetric-indefinite, and real nonsymmetric matrices use
14
+ Cholesky, LDLT, and LU, respectively. Apple's LU implementation requires
15
+ macOS 15.5 or newer.
16
+ */
17
+ class AccelerateSparseInverse : public SparseFactorizationInterface
18
+ {
19
+ Array<long> column_starts;
20
+ Array<int> row_indices;
21
+ Array<double> csc_values;
22
+ Array<size_t> value_map;
23
+
24
+ Array<size_t> pattern_first;
25
+ Array<int> pattern_columns;
26
+
27
+ struct AppleState;
28
+ unique_ptr<AppleState> apple;
29
+
30
+ void BuildCSC();
31
+ void RefreshValues();
32
+ void CheckPattern() const;
33
+ void Cleanup();
34
+
35
+ public:
36
+ explicit AccelerateSparseInverse(shared_ptr<const BaseMatrix> matrix);
37
+ ~AccelerateSparseInverse() override;
38
+
39
+ void Analyze() override;
40
+ void Factor() override;
41
+ void Solve(const BaseVector &rhs, BaseVector &solution) const override;
42
+ void SolveTrans(const BaseVector &rhs, BaseVector &solution) const override;
43
+
44
+ bool SupportsUpdate() const override { return true; }
45
+ BaseMatrix::OperatorInfo GetOperatorInfo() const override
46
+ {
47
+ return { "Accelerate Sparse", size_t(height), size_t(width) };
48
+ }
49
+ };
50
+
51
+ void RegisterAccelerateSparseInverse();
52
+ }
53
+
54
+ #endif // USE_ACCELERATE_SPARSE
55
+ #endif // ACCELERATESPARSEINVERSE_HPP
@@ -0,0 +1,12 @@
1
+ #include <ngstd.hpp>
2
+ #include <bla.hpp>
3
+
4
+ namespace ngsbem
5
+ {
6
+ using namespace ngbla;
7
+
8
+ NGS_DLL_HEADER double LaplaceSL_Polygon (FlatArray<Vec<3>> vertices, Vec<3> x);
9
+ NGS_DLL_HEADER Vec<3> LaplaceGradSL_Polygon (FlatArray<Vec<3>> vertices, Vec<3> x);
10
+ NGS_DLL_HEADER double LaplaceDL_Polygon (FlatArray<Vec<3>> vertices, Vec<3> x,
11
+ Vec<3> source_normal);
12
+ }
@@ -0,0 +1,55 @@
1
+ #ifndef FILE_ARNOLDI
2
+ #define FILE_ARNOLDI
3
+
4
+
5
+ /**************************************************************************/
6
+ /* File: arnoldi.hpp */
7
+ /* Author: Joachim Schoeberl */
8
+ /* Date: 5. Jul. 96 */
9
+ /**************************************************************************/
10
+
11
+
12
+ #include "basematrix.hpp"
13
+
14
+ namespace ngla
15
+ {
16
+ /**
17
+ Arnoldi Eigenvalue Solver.
18
+
19
+ Solve the generalized evp
20
+
21
+ A x = lam B x
22
+
23
+ B must by symmetric and (in theory) positive definite
24
+ A can be non-symmetric
25
+
26
+ It uses a shift-and-invert Arnoldi method
27
+ */
28
+
29
+ template <typename SCAL>
30
+ class NGS_DLL_HEADER Arnoldi
31
+ {
32
+ shared_ptr<BaseMatrix> a;
33
+ shared_ptr<BaseMatrix> b;
34
+ shared_ptr<BitArray> freedofs;
35
+ SCAL shift;
36
+ optional<string> inversetype;
37
+ public:
38
+ Arnoldi (shared_ptr<BaseMatrix> aa, shared_ptr<BaseMatrix> ab, shared_ptr<BitArray> afreedofs = nullptr)
39
+ : a(aa), b(ab), freedofs(afreedofs)
40
+ {
41
+ shift = 1.0;
42
+ }
43
+
44
+ void SetShift (SCAL ashift)
45
+ { shift = ashift; }
46
+ void SetInverseType (optional<string> ainv)
47
+ { inversetype = ainv; }
48
+
49
+ void Calc (int numval, Array<Complex> & lam, int nev,
50
+ Array<shared_ptr<BaseVector>> & evecs,
51
+ shared_ptr<BaseMatrix> pre = nullptr) const;
52
+ };
53
+ }
54
+
55
+ #endif