ngsolve 6.2.2501.post21.dev1__cp312-cp312-macosx_10_15_universal2.whl → 6.2.2501.post37.dev1__cp312-cp312-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 (286) hide show
  1. ngsolve/webgui.py +1 -1
  2. {ngsolve-6.2.2501.post21.dev1.dist-info → ngsolve-6.2.2501.post37.dev1.dist-info}/METADATA +2 -2
  3. ngsolve-6.2.2501.post37.dev1.dist-info/RECORD +25 -0
  4. netgen/include/arnoldi.hpp +0 -55
  5. netgen/include/bandmatrix.hpp +0 -334
  6. netgen/include/basematrix.hpp +0 -957
  7. netgen/include/basevector.hpp +0 -1268
  8. netgen/include/bdbequations.hpp +0 -2752
  9. netgen/include/bdbintegrator.hpp +0 -1659
  10. netgen/include/bessel.hpp +0 -1064
  11. netgen/include/bilinearform.hpp +0 -963
  12. netgen/include/bla.hpp +0 -29
  13. netgen/include/blockalloc.hpp +0 -95
  14. netgen/include/blockjacobi.hpp +0 -316
  15. netgen/include/bspline.hpp +0 -114
  16. netgen/include/calcinverse.hpp +0 -141
  17. netgen/include/cg.hpp +0 -368
  18. netgen/include/chebyshev.hpp +0 -44
  19. netgen/include/cholesky.hpp +0 -720
  20. netgen/include/clapack.h +0 -7254
  21. netgen/include/code_generation.hpp +0 -296
  22. netgen/include/coefficient.hpp +0 -2006
  23. netgen/include/coefficient_impl.hpp +0 -18
  24. netgen/include/coefficient_stdmath.hpp +0 -157
  25. netgen/include/commutingAMG.hpp +0 -106
  26. netgen/include/comp.hpp +0 -79
  27. netgen/include/compatibility.hpp +0 -41
  28. netgen/include/complex_wrapper.hpp +0 -73
  29. netgen/include/compressedfespace.hpp +0 -110
  30. netgen/include/contact.hpp +0 -231
  31. netgen/include/diagonalmatrix.hpp +0 -154
  32. netgen/include/differentialoperator.hpp +0 -276
  33. netgen/include/diffop.hpp +0 -1286
  34. netgen/include/diffop_impl.hpp +0 -326
  35. netgen/include/discontinuous.hpp +0 -84
  36. netgen/include/dump.hpp +0 -949
  37. netgen/include/eigen.hpp +0 -60
  38. netgen/include/eigensystem.hpp +0 -18
  39. netgen/include/elasticity_equations.hpp +0 -595
  40. netgen/include/elementbyelement.hpp +0 -195
  41. netgen/include/elementtopology.hpp +0 -1760
  42. netgen/include/elementtransformation.hpp +0 -339
  43. netgen/include/evalfunc.hpp +0 -405
  44. netgen/include/expr.hpp +0 -1655
  45. netgen/include/facetfe.hpp +0 -175
  46. netgen/include/facetfespace.hpp +0 -178
  47. netgen/include/facethofe.hpp +0 -111
  48. netgen/include/facetsurffespace.hpp +0 -112
  49. netgen/include/fe_interfaces.hpp +0 -32
  50. netgen/include/fem.hpp +0 -87
  51. netgen/include/fesconvert.hpp +0 -14
  52. netgen/include/fespace.hpp +0 -1445
  53. netgen/include/finiteelement.hpp +0 -286
  54. netgen/include/globalinterfacespace.hpp +0 -77
  55. netgen/include/globalspace.hpp +0 -115
  56. netgen/include/gridfunction.hpp +0 -525
  57. netgen/include/h1amg.hpp +0 -41
  58. netgen/include/h1hofe.hpp +0 -188
  59. netgen/include/h1hofe_impl.hpp +0 -1262
  60. netgen/include/h1hofefo.hpp +0 -148
  61. netgen/include/h1hofefo_impl.hpp +0 -185
  62. netgen/include/h1hofespace.hpp +0 -167
  63. netgen/include/h1lofe.hpp +0 -1237
  64. netgen/include/h1lumping.hpp +0 -35
  65. netgen/include/hcurl_equations.hpp +0 -1352
  66. netgen/include/hcurlcurlfe.hpp +0 -2221
  67. netgen/include/hcurlcurlfespace.hpp +0 -78
  68. netgen/include/hcurlfe.hpp +0 -259
  69. netgen/include/hcurlfe_utils.hpp +0 -107
  70. netgen/include/hcurlhdiv_dshape.hpp +0 -857
  71. netgen/include/hcurlhdivfes.hpp +0 -308
  72. netgen/include/hcurlhofe.hpp +0 -175
  73. netgen/include/hcurlhofe_impl.hpp +0 -1871
  74. netgen/include/hcurlhofespace.hpp +0 -193
  75. netgen/include/hcurllofe.hpp +0 -1146
  76. netgen/include/hdiv_equations.hpp +0 -865
  77. netgen/include/hdivdivfe.hpp +0 -2923
  78. netgen/include/hdivdivsurfacespace.hpp +0 -76
  79. netgen/include/hdivfe.hpp +0 -206
  80. netgen/include/hdivfe_utils.hpp +0 -716
  81. netgen/include/hdivfes.hpp +0 -75
  82. netgen/include/hdivhofe.hpp +0 -447
  83. netgen/include/hdivhofe_impl.hpp +0 -1107
  84. netgen/include/hdivhofefo.hpp +0 -229
  85. netgen/include/hdivhofespace.hpp +0 -175
  86. netgen/include/hdivhosurfacefespace.hpp +0 -106
  87. netgen/include/hdivlofe.hpp +0 -773
  88. netgen/include/hidden.hpp +0 -74
  89. netgen/include/householder.hpp +0 -181
  90. netgen/include/hypre_ams_precond.hpp +0 -123
  91. netgen/include/hypre_precond.hpp +0 -73
  92. netgen/include/integrator.hpp +0 -2024
  93. netgen/include/integratorcf.hpp +0 -253
  94. netgen/include/interpolate.hpp +0 -49
  95. netgen/include/intrule.hpp +0 -2541
  96. netgen/include/irspace.hpp +0 -49
  97. netgen/include/jacobi.hpp +0 -136
  98. netgen/include/l2hofe.hpp +0 -193
  99. netgen/include/l2hofe_impl.hpp +0 -564
  100. netgen/include/l2hofefo.hpp +0 -542
  101. netgen/include/l2hofespace.hpp +0 -344
  102. netgen/include/la.hpp +0 -38
  103. netgen/include/linearform.hpp +0 -266
  104. netgen/include/matrix.hpp +0 -2140
  105. netgen/include/memusage.hpp +0 -41
  106. netgen/include/meshaccess.hpp +0 -1358
  107. netgen/include/mgpre.hpp +0 -204
  108. netgen/include/mptools.hpp +0 -2145
  109. netgen/include/multigrid.hpp +0 -42
  110. netgen/include/multivector.hpp +0 -447
  111. netgen/include/mumpsinverse.hpp +0 -187
  112. netgen/include/mycomplex.hpp +0 -361
  113. netgen/include/ng_lapack.hpp +0 -1661
  114. netgen/include/ngblas.hpp +0 -1099
  115. netgen/include/ngs_defines.hpp +0 -30
  116. netgen/include/ngs_stdcpp_include.hpp +0 -106
  117. netgen/include/ngs_utils.hpp +0 -121
  118. netgen/include/ngsobject.hpp +0 -1019
  119. netgen/include/ngsstream.hpp +0 -113
  120. netgen/include/ngstd.hpp +0 -72
  121. netgen/include/nodalhofe.hpp +0 -96
  122. netgen/include/nodalhofe_impl.hpp +0 -141
  123. netgen/include/normalfacetfe.hpp +0 -223
  124. netgen/include/normalfacetfespace.hpp +0 -98
  125. netgen/include/normalfacetsurfacefespace.hpp +0 -84
  126. netgen/include/order.hpp +0 -251
  127. netgen/include/parallel_matrices.hpp +0 -222
  128. netgen/include/paralleldofs.hpp +0 -340
  129. netgen/include/parallelngs.hpp +0 -23
  130. netgen/include/parallelvector.hpp +0 -269
  131. netgen/include/pardisoinverse.hpp +0 -200
  132. netgen/include/periodic.hpp +0 -125
  133. netgen/include/plateaufespace.hpp +0 -25
  134. netgen/include/pml.hpp +0 -275
  135. netgen/include/pmltrafo.hpp +0 -631
  136. netgen/include/postproc.hpp +0 -142
  137. netgen/include/precomp.hpp +0 -60
  138. netgen/include/preconditioner.hpp +0 -602
  139. netgen/include/prolongation.hpp +0 -235
  140. netgen/include/python_comp.hpp +0 -107
  141. netgen/include/python_fem.hpp +0 -89
  142. netgen/include/python_linalg.hpp +0 -58
  143. netgen/include/python_ngstd.hpp +0 -385
  144. netgen/include/recursive_pol.hpp +0 -4844
  145. netgen/include/recursive_pol_tet.hpp +0 -395
  146. netgen/include/recursive_pol_trig.hpp +0 -492
  147. netgen/include/reorderedfespace.hpp +0 -81
  148. netgen/include/sample_sort.hpp +0 -105
  149. netgen/include/scalarfe.hpp +0 -335
  150. netgen/include/shapefunction_utils.hpp +0 -113
  151. netgen/include/simd_complex.hpp +0 -284
  152. netgen/include/smoother.hpp +0 -253
  153. netgen/include/solve.hpp +0 -89
  154. netgen/include/sparsecholesky.hpp +0 -313
  155. netgen/include/sparsematrix.hpp +0 -1038
  156. netgen/include/sparsematrix_dyn.hpp +0 -91
  157. netgen/include/sparsematrix_impl.hpp +0 -920
  158. netgen/include/special_matrix.hpp +0 -461
  159. netgen/include/specialelement.hpp +0 -125
  160. netgen/include/statushandler.hpp +0 -33
  161. netgen/include/stringops.hpp +0 -12
  162. netgen/include/superluinverse.hpp +0 -136
  163. netgen/include/symbolicintegrator.hpp +0 -849
  164. netgen/include/symmetricmatrix.hpp +0 -144
  165. netgen/include/tangentialfacetfe.hpp +0 -224
  166. netgen/include/tangentialfacetfespace.hpp +0 -106
  167. netgen/include/tensor.hpp +0 -522
  168. netgen/include/tensorcoefficient.hpp +0 -446
  169. netgen/include/tensorproductintegrator.hpp +0 -113
  170. netgen/include/thcurlfe.hpp +0 -128
  171. netgen/include/thcurlfe_impl.hpp +0 -380
  172. netgen/include/thdivfe.hpp +0 -80
  173. netgen/include/thdivfe_impl.hpp +0 -426
  174. netgen/include/tpdiffop.hpp +0 -461
  175. netgen/include/tpfes.hpp +0 -133
  176. netgen/include/tpintrule.hpp +0 -224
  177. netgen/include/triangular.hpp +0 -465
  178. netgen/include/tscalarfe.hpp +0 -245
  179. netgen/include/tscalarfe_impl.hpp +0 -1029
  180. netgen/include/umfpackinverse.hpp +0 -148
  181. netgen/include/vector.hpp +0 -1219
  182. netgen/include/voxelcoefficientfunction.hpp +0 -41
  183. netgen/include/vtkoutput.hpp +0 -198
  184. netgen/include/vvector.hpp +0 -208
  185. netgen/include/webgui.hpp +0 -92
  186. netgen/libngbla.dylib +0 -0
  187. netgen/libngcomp.dylib +0 -0
  188. netgen/libngfem.dylib +0 -0
  189. netgen/libngla.dylib +0 -0
  190. netgen/libngsolve.dylib +0 -0
  191. netgen/libngstd.dylib +0 -0
  192. ngsolve/__init__.pyi +0 -231
  193. ngsolve/bla.pyi +0 -1139
  194. ngsolve/bvp.pyi +0 -32
  195. ngsolve/cmake/NGSolveConfig.cmake +0 -102
  196. ngsolve/cmake/ngsolve-targets-release.cmake +0 -69
  197. ngsolve/cmake/ngsolve-targets.cmake +0 -163
  198. ngsolve/comp/__init__.pyi +0 -5382
  199. ngsolve/comp/pml.pyi +0 -89
  200. ngsolve/config/__init__.py +0 -1
  201. ngsolve/config/__init__.pyi +0 -43
  202. ngsolve/config/__main__.py +0 -4
  203. ngsolve/config/config.py +0 -60
  204. ngsolve/config/config.pyi +0 -45
  205. ngsolve/demos/TensorProduct/__init__.py +0 -0
  206. ngsolve/demos/TensorProduct/tp_dg_1d_1d.py +0 -80
  207. ngsolve/demos/TensorProduct/tp_dg_1d_2d.py +0 -73
  208. ngsolve/demos/TensorProduct/tp_dg_2d_1d.py +0 -72
  209. ngsolve/demos/TensorProduct/tp_dg_2d_2d.py +0 -66
  210. ngsolve/demos/__init__.py +0 -0
  211. ngsolve/demos/howto/__init__.py +0 -0
  212. ngsolve/demos/howto/hhj.py +0 -44
  213. ngsolve/demos/howto/hybrid_dg.py +0 -53
  214. ngsolve/demos/howto/mixed.py +0 -30
  215. ngsolve/demos/howto/nonlin.py +0 -29
  216. ngsolve/demos/howto/pickling.py +0 -26
  217. ngsolve/demos/howto/pml.py +0 -31
  218. ngsolve/demos/howto/taskmanager.py +0 -20
  219. ngsolve/demos/howto/tdnns.py +0 -47
  220. ngsolve/demos/howto/timeDG-skeleton.py +0 -45
  221. ngsolve/demos/howto/timeDG.py +0 -38
  222. ngsolve/demos/howto/timeDGlap.py +0 -42
  223. ngsolve/demos/howto/timeDGwave.py +0 -61
  224. ngsolve/demos/intro/__init__.py +0 -0
  225. ngsolve/demos/intro/adaptive.py +0 -123
  226. ngsolve/demos/intro/cmagnet.py +0 -62
  227. ngsolve/demos/intro/elasticity.py +0 -76
  228. ngsolve/demos/intro/navierstokes.py +0 -74
  229. ngsolve/demos/intro/poisson.ipynb +0 -170
  230. ngsolve/demos/intro/poisson.py +0 -41
  231. ngsolve/demos/mpi/__init__.py +0 -0
  232. ngsolve/demos/mpi/mpi_cmagnet.py +0 -87
  233. ngsolve/demos/mpi/mpi_navierstokes.py +0 -117
  234. ngsolve/demos/mpi/mpi_poisson.py +0 -89
  235. ngsolve/demos/mpi/mpi_timeDG.py +0 -82
  236. ngsolve/directsolvers.pyi +0 -15
  237. ngsolve/eigenvalues.pyi +0 -30
  238. ngsolve/fem.pyi +0 -1707
  239. ngsolve/krylovspace.pyi +0 -301
  240. ngsolve/la.pyi +0 -1218
  241. ngsolve/ngslib.so +0 -0
  242. ngsolve/ngstd.pyi +0 -58
  243. ngsolve/nonlinearsolvers.pyi +0 -97
  244. ngsolve/preconditioners.pyi +0 -6
  245. ngsolve/solve.pyi +0 -108
  246. ngsolve/solvers.pyi +0 -14
  247. ngsolve/timestepping.pyi +0 -27
  248. ngsolve/timing.pyi +0 -54
  249. ngsolve/utils.pyi +0 -279
  250. ngsolve-6.2.2501.post21.dev1.data/data/Netgen.icns +0 -0
  251. ngsolve-6.2.2501.post21.dev1.data/data/bin/ngscxx +0 -17
  252. ngsolve-6.2.2501.post21.dev1.data/data/bin/ngsld +0 -13
  253. ngsolve-6.2.2501.post21.dev1.data/data/bin/ngsolve.tcl +0 -648
  254. ngsolve-6.2.2501.post21.dev1.data/data/bin/ngspy +0 -2
  255. ngsolve-6.2.2501.post21.dev1.data/data/share/ngsolve/beam.geo +0 -17
  256. ngsolve-6.2.2501.post21.dev1.data/data/share/ngsolve/beam.vol +0 -240
  257. ngsolve-6.2.2501.post21.dev1.data/data/share/ngsolve/chip.in2d +0 -41
  258. ngsolve-6.2.2501.post21.dev1.data/data/share/ngsolve/chip.vol +0 -614
  259. ngsolve-6.2.2501.post21.dev1.data/data/share/ngsolve/coil.geo +0 -12
  260. ngsolve-6.2.2501.post21.dev1.data/data/share/ngsolve/coil.vol +0 -2560
  261. ngsolve-6.2.2501.post21.dev1.data/data/share/ngsolve/coilshield.geo +0 -24
  262. ngsolve-6.2.2501.post21.dev1.data/data/share/ngsolve/coilshield.vol +0 -3179
  263. ngsolve-6.2.2501.post21.dev1.data/data/share/ngsolve/cube.geo +0 -19
  264. ngsolve-6.2.2501.post21.dev1.data/data/share/ngsolve/cube.vol +0 -1832
  265. ngsolve-6.2.2501.post21.dev1.data/data/share/ngsolve/d10_DGdoubleglazing.pde +0 -50
  266. ngsolve-6.2.2501.post21.dev1.data/data/share/ngsolve/d11_chip_nitsche.pde +0 -40
  267. ngsolve-6.2.2501.post21.dev1.data/data/share/ngsolve/d1_square.pde +0 -43
  268. ngsolve-6.2.2501.post21.dev1.data/data/share/ngsolve/d2_chip.pde +0 -35
  269. ngsolve-6.2.2501.post21.dev1.data/data/share/ngsolve/d3_helmholtz.pde +0 -22
  270. ngsolve-6.2.2501.post21.dev1.data/data/share/ngsolve/d4_cube.pde +0 -46
  271. ngsolve-6.2.2501.post21.dev1.data/data/share/ngsolve/d5_beam.pde +0 -74
  272. ngsolve-6.2.2501.post21.dev1.data/data/share/ngsolve/d6_shaft.pde +0 -73
  273. ngsolve-6.2.2501.post21.dev1.data/data/share/ngsolve/d7_coil.pde +0 -50
  274. ngsolve-6.2.2501.post21.dev1.data/data/share/ngsolve/d8_coilshield.pde +0 -49
  275. ngsolve-6.2.2501.post21.dev1.data/data/share/ngsolve/d9_hybridDG.pde +0 -72
  276. ngsolve-6.2.2501.post21.dev1.data/data/share/ngsolve/doubleglazing.in2d +0 -27
  277. ngsolve-6.2.2501.post21.dev1.data/data/share/ngsolve/doubleglazing.vol +0 -737
  278. ngsolve-6.2.2501.post21.dev1.data/data/share/ngsolve/piezo2d40round4.vol.gz +0 -0
  279. ngsolve-6.2.2501.post21.dev1.data/data/share/ngsolve/shaft.geo +0 -73
  280. ngsolve-6.2.2501.post21.dev1.data/data/share/ngsolve/shaft.vol +0 -4291
  281. ngsolve-6.2.2501.post21.dev1.data/data/share/ngsolve/square.in2d +0 -17
  282. ngsolve-6.2.2501.post21.dev1.data/data/share/ngsolve/square.vol +0 -149
  283. ngsolve-6.2.2501.post21.dev1.dist-info/RECORD +0 -304
  284. {ngsolve-6.2.2501.post21.dev1.dist-info → ngsolve-6.2.2501.post37.dev1.dist-info}/LICENSE +0 -0
  285. {ngsolve-6.2.2501.post21.dev1.dist-info → ngsolve-6.2.2501.post37.dev1.dist-info}/WHEEL +0 -0
  286. {ngsolve-6.2.2501.post21.dev1.dist-info → ngsolve-6.2.2501.post37.dev1.dist-info}/top_level.txt +0 -0
@@ -1,231 +0,0 @@
1
- #ifndef NGSOLVE_CONTACT_HPP
2
- #define NGSOLVE_CONTACT_HPP
3
-
4
- // #include <comp.hpp>
5
- #include "gridfunction.hpp"
6
- #include "bilinearform.hpp"
7
-
8
- namespace ngcomp
9
- {
10
- template<int DIM>
11
- struct ContactPair
12
- {
13
- ElementId primary_el, secondary_el;
14
- IntegrationPoint primary_ip, secondary_ip;
15
- };
16
-
17
- class GapFunction : public CoefficientFunctionNoDerivative
18
- {
19
- protected:
20
- shared_ptr<GridFunction> displacement;
21
- shared_ptr<MeshAccess> ma;
22
- Region master;
23
- Region other;
24
- double h;
25
- bool both_sides;
26
-
27
- public:
28
- GapFunction( shared_ptr<MeshAccess> ma_, Region primary_, Region secondary_)
29
- : CoefficientFunctionNoDerivative(ma_->GetDimension()),
30
- ma(ma_), master(primary_), other(secondary_)
31
- { }
32
-
33
- virtual void Update(shared_ptr<GridFunction> gf, int intorder_, double h_,
34
- bool both_sides) = 0;
35
- void Draw();
36
- };
37
-
38
- template <int DIM>
39
- class T_GapFunction : public GapFunction
40
- {
41
- unique_ptr<netgen::BoxTree<DIM, int>> searchtree;
42
- public:
43
- T_GapFunction( shared_ptr<MeshAccess> mesh_, Region primary_, Region secondary_)
44
- : GapFunction(mesh_, primary_, secondary_)
45
- { }
46
-
47
- void Update(shared_ptr<GridFunction> gf, int intorder_, double h, bool both_sides) override;
48
-
49
- const netgen::BoxTree<DIM, int>& GetSearchTree() { return *searchtree; }
50
-
51
- using GapFunction::Evaluate;
52
- double Evaluate (const BaseMappedIntegrationPoint & ip) const override
53
- {
54
- throw Exception("Scalar evaluate of GapFunction called");
55
- }
56
-
57
- void Evaluate(const BaseMappedIntegrationPoint & ip,
58
- FlatVector<> result) const override;
59
-
60
- void Evaluate(const BaseMappedIntegrationRule & mir,
61
- BareSliceMatrix<> result) const override;
62
-
63
- optional<ContactPair<DIM>> CreateContactPair(const MappedIntegrationPoint<DIM-1, DIM>& mip, LocalHeap& lh, bool both_sides) const;
64
- };
65
-
66
- template<int DIM>
67
- class DisplacedNormal : public CoefficientFunctionNoDerivative
68
- {
69
- shared_ptr<GridFunction> displacement;
70
- public:
71
- DisplacedNormal()
72
- : CoefficientFunctionNoDerivative(DIM, false),
73
- displacement(nullptr) {}
74
-
75
- void Update(shared_ptr<GridFunction> _displacement)
76
- { displacement = _displacement; }
77
-
78
- using CoefficientFunctionNoDerivative::Evaluate;
79
- double Evaluate(const BaseMappedIntegrationPoint& ip) const override
80
- {
81
- throw Exception("1dim eval called for Normal");
82
- }
83
-
84
- void Evaluate(const BaseMappedIntegrationPoint& ir, FlatVector<> values) const override;
85
- };
86
-
87
- class ContactEnergy
88
- {
89
- shared_ptr<CoefficientFunction> cf;
90
- shared_ptr<FESpace> fes;
91
- Array<ProxyFunction*> trial_proxies;
92
- bool deformed;
93
-
94
- public:
95
- ContactEnergy(shared_ptr<CoefficientFunction> _cf,
96
- bool _deformed=false);
97
-
98
- bool IsDeformed() const { return deformed; }
99
-
100
- double CalcEnergy(const FiniteElement& m_fel,
101
- const FiniteElement& s_fel,
102
- const BaseMappedIntegrationRule& m_mir,
103
- FlatVector<double> elx,
104
- LocalHeap& lh);
105
-
106
- void ApplyAdd(const FiniteElement& m_fel,
107
- const FiniteElement& s_fel,
108
- const BaseMappedIntegrationRule& m_mir,
109
- FlatVector<double> elx,
110
- FlatVector<double> ely,
111
- LocalHeap& lh);
112
-
113
- void CalcLinearizedAdd(const FiniteElement& m_fel,
114
- const FiniteElement& s_fel,
115
- const BaseMappedIntegrationRule& m_mir,
116
- FlatVector<double> elx,
117
- FlatMatrix<double> elmat,
118
- LocalHeap& lh);
119
- };
120
-
121
- class ContactIntegrator
122
- {
123
- shared_ptr<CoefficientFunction> cf;
124
- shared_ptr<FESpace> fes;
125
- Array<ProxyFunction*> trial_proxies, test_proxies;
126
- bool deformed;
127
- public:
128
- ContactIntegrator(shared_ptr<CoefficientFunction> _cf,
129
- bool _deformed);
130
-
131
- bool IsDeformed() const { return deformed; }
132
-
133
- void ApplyAdd(const FiniteElement& m_fel,
134
- const FiniteElement& s_fel,
135
- const BaseMappedIntegrationRule& m_mir,
136
- FlatVector<double> elx,
137
- FlatVector<double> ely,
138
- LocalHeap& lh);
139
-
140
- void CalcLinearizedAdd(const FiniteElement& m_fel,
141
- const FiniteElement& s_fel,
142
- const BaseMappedIntegrationRule& m_mir,
143
- FlatVector<double> elx,
144
- FlatMatrix<double> elmat,
145
- LocalHeap& lh);
146
- };
147
-
148
-
149
- class ContactBoundary : public std::enable_shared_from_this<ContactBoundary>,
150
- netgen::UserVisualizationObject
151
- {
152
- shared_ptr<GapFunction> gap;
153
- shared_ptr<CoefficientFunction> normal;
154
- Region master, other;
155
- Array<shared_ptr<ContactEnergy>> energies, undeformed_energies, deformed_energies;
156
- Array<shared_ptr<ContactIntegrator>> integrators, undeformed_integrators, deformed_integrators;
157
- shared_ptr<FESpace> fes_displacement;
158
- shared_ptr<FESpace> fes;
159
-
160
- // For visualization only
161
- bool draw_pairs = false;
162
- Array<Vec<3>> primary_points;
163
- Array<Vec<3>> secondary_points;
164
- bool volume;
165
- public:
166
- void Draw();
167
- ContactBoundary(Region _master, Region _other, bool draw_pairs = false, bool _volume=false);
168
-
169
- ~ContactBoundary();
170
-
171
- void AddEnergy(shared_ptr<CoefficientFunction> form,
172
- bool deformed=false);
173
- void AddIntegrator(shared_ptr<CoefficientFunction> form,
174
- bool deformed=false);
175
-
176
- // Update search tree for gap function, if bf is not
177
- // nullptr, update SpecialElements of bf
178
- void Update(shared_ptr<GridFunction> gf,
179
- shared_ptr<BilinearForm> bf,
180
- int intorder, double h, bool both_sides);
181
-
182
- shared_ptr<CoefficientFunction> Gap() const { return gap; }
183
- shared_ptr<CoefficientFunction> Normal() const { return normal; }
184
- const auto& GetEnergies() const { return energies; }
185
- const auto& GetEnergies(bool def) const { return def ? deformed_energies : undeformed_energies; }
186
- const auto& GetIntegrators() const { return integrators; }
187
- const auto& GetIntegrators(bool def) const { return def ? deformed_integrators : undeformed_integrators; }
188
- shared_ptr<FESpace> GetFESpace() const { return fes; }
189
- tuple<FlatArray<Vec<3>>, FlatArray<Vec<3>>> GetDrawingPairs() { return {primary_points, secondary_points}; }
190
- };
191
-
192
- template<int DIM>
193
- class MPContactElement : public SpecialElement
194
- {
195
- // ContactPair<DIM> pair;
196
- ElementId primary_ei, secondary_ei;
197
- IntegrationRule primary_ir, secondary_ir;
198
- shared_ptr<ContactBoundary> cb;
199
- FESpace* fes;
200
- GridFunction* deformation;
201
- public:
202
- MPContactElement(ElementId primary_ei, ElementId secondary_ei,
203
- IntegrationRule primary_ir, IntegrationRule secondary_ir,
204
- shared_ptr<ContactBoundary> _cb,
205
- GridFunction* deformation);
206
-
207
- void GetDofNrs(Array<DofId>& dnums) const override;
208
-
209
- double Energy(FlatVector<double> elx,
210
- LocalHeap& lh) const override;
211
-
212
- void Apply(FlatVector<double> elx,
213
- FlatVector<double> ely,
214
- LocalHeap& lh) const override;
215
-
216
- void CalcElementMatrix(FlatMatrix<double> elmat,
217
- LocalHeap& lh) const override;
218
-
219
-
220
- void CalcLinearizedElementMatrix(FlatVector<double> elx,
221
- FlatMatrix<double> elmat,
222
- LocalHeap& lh) const override;
223
-
224
- shared_ptr<ContactBoundary> GetContactBoundary() const
225
- { return cb; }
226
- };
227
-
228
-
229
- } // namespace ngcomp
230
-
231
- #endif // NGSOLVE_CONTACT_HPP
@@ -1,154 +0,0 @@
1
- #ifndef FILE_NGS_DIAGONALMATRIX
2
- #define FILE_NGS_DIAGONALMATRIX
3
-
4
-
5
-
6
- #include "basematrix.hpp"
7
- #include "vvector.hpp"
8
-
9
-
10
- namespace ngla
11
- {
12
-
13
- class NGS_DLL_HEADER Projector : public BaseMatrix
14
- {
15
- shared_ptr<BitArray> bits;
16
- bool keep_values;
17
- public:
18
- // projector on true / false bits
19
- Projector (shared_ptr<BitArray> abits, bool akeep_values = true)
20
- : bits(abits), keep_values(akeep_values) { ; }
21
-
22
- virtual bool IsComplex() const override { return false; }
23
-
24
- virtual int VHeight() const override { return bits->Size(); }
25
- virtual int VWidth() const override { return bits->Size(); }
26
-
27
- virtual void Mult (const BaseVector & x, BaseVector & y) const override;
28
- virtual void MultTrans (const BaseVector & x, BaseVector & y) const override;
29
- virtual void MultAdd (double s, const BaseVector & x, BaseVector & y) const override;
30
- virtual void MultTransAdd (double s, const BaseVector & x, BaseVector & y) const override;
31
- virtual void Project (BaseVector & x) const;
32
- virtual void SetValues (BaseVector & x, double val) const;
33
-
34
- bool KeepValues() const { return keep_values; }
35
- shared_ptr<BitArray> Mask() const { return bits; }
36
-
37
- virtual shared_ptr<BaseSparseMatrix> CreateSparseMatrix() const override;
38
-
39
- AutoVector CreateRowVector() const override
40
- { throw Exception("CreateRowVector not implemented for Projector!"); }
41
- AutoVector CreateColVector() const override
42
- { throw Exception("CreateColVector not implemented for Projector!"); }
43
-
44
- AutoVector Evaluate(BaseVector & v) const override
45
- {
46
- auto res = v.CreateVector();
47
- Mult (v, res);
48
- return res;
49
- }
50
-
51
- };
52
-
53
-
54
- template <typename TM=double>
55
- class NGS_DLL_HEADER DiagonalMatrix : public BaseMatrix
56
- {
57
- shared_ptr<VVector<TM>> diag;
58
- public:
59
- // typedef typename mat_traits<TM>::TV_ROW TV_ROW;
60
- // typedef typename mat_traits<TM>::TV_COL TV_COL;
61
- typedef typename mat_traits<TM>::TSCAL TSCAL;
62
-
63
- DiagonalMatrix(size_t h)
64
- : diag(make_shared<VVector<TM>>(h)) { }
65
- DiagonalMatrix(const VVector<TM> & diag_);
66
- DiagonalMatrix(shared_ptr<VVector<TM>> diag_);
67
- virtual ~DiagonalMatrix();
68
-
69
- bool IsComplex() const override { return false; }
70
- TM & operator() (size_t i) { return (*diag)(i); }
71
- const TM & operator() (size_t i) const { return (*diag)(i); }
72
- int VHeight() const override { return diag->Size(); }
73
- int VWidth() const override { return diag->Size(); }
74
-
75
- BaseVector & AsVector() override { return *diag; }
76
- const BaseVector & AsVector() const override { return *diag; }
77
- ostream & Print (ostream & ost) const override;
78
-
79
- virtual shared_ptr<BaseSparseMatrix> CreateSparseMatrix() const override;
80
-
81
- AutoVector CreateRowVector () const override;
82
- AutoVector CreateColVector () const override;
83
-
84
- void MultAdd (double s, const BaseVector & x, BaseVector & y) const override;
85
- void MultTransAdd (double s, const BaseVector & x, BaseVector & y) const override;
86
-
87
- shared_ptr<BaseMatrix> InverseMatrix (shared_ptr<BitArray> subset = nullptr) const override;
88
- };
89
-
90
-
91
- template <typename TM=double>
92
- class BlockDiagonalMatrix : public BaseMatrix
93
- {
94
- Tensor<3,TM> blockdiag;
95
- int blocks, dimy, dimx;
96
- public:
97
- // typedef double TSCAL;
98
-
99
- BlockDiagonalMatrix(Tensor<3,TM> _blockdiag);
100
- bool IsComplex() const override { return ngbla::IsComplex<TM>(); }
101
-
102
- int VHeight() const override { return blocks*dimy; }
103
- int VWidth() const override { return blocks*dimx; }
104
-
105
- ostream & Print (ostream & ost) const override;
106
-
107
- AutoVector CreateRowVector () const override;
108
- AutoVector CreateColVector () const override;
109
-
110
- void Mult (const BaseVector & x, BaseVector & y) const override;
111
- void MultAdd (double s, const BaseVector & x, BaseVector & y) const override;
112
- void MultTransAdd (double s, const BaseVector & x, BaseVector & y) const override;
113
-
114
- shared_ptr<BaseMatrix> InverseMatrix (shared_ptr<BitArray> subset = nullptr) const override;
115
- };
116
-
117
- // blocks is inner-most dimension of tensor and vectors
118
- class BlockDiagonalMatrixSoA : public BaseMatrix
119
- {
120
- Tensor<3> blockdiag;
121
- int blocks, dimy, dimx;
122
- Matrix<bool> nonzero;
123
- Table<int> sparse, sparseT; // sparse non-zero pattern
124
- public:
125
- typedef double TSCAL;
126
-
127
- BlockDiagonalMatrixSoA(Tensor<3> _blockdiag);
128
- bool IsComplex() const override { return false; }
129
-
130
- int VHeight() const override { return blocks*dimy; }
131
- int VWidth() const override { return blocks*dimx; }
132
-
133
- ostream & Print (ostream & ost) const override;
134
- virtual BaseMatrix::OperatorInfo GetOperatorInfo () const override;
135
-
136
- AutoVector CreateRowVector () const override;
137
- AutoVector CreateColVector () const override;
138
-
139
- void Mult (const BaseVector & x, BaseVector & y) const override;
140
- void MultAdd (double s, const BaseVector & x, BaseVector & y) const override;
141
- void MultTrans (const BaseVector & x, BaseVector & y) const override;
142
- void MultTransAdd (double s, const BaseVector & x, BaseVector & y) const override;
143
- // shared_ptr<BaseMatrix> InverseMatrix (shared_ptr<BitArray> subset = nullptr) const override;
144
-
145
- FlatTensor<3> GetBlockDiag () const { return blockdiag; }
146
- FlatMatrix<bool> GetNonZeroPattern() const { return nonzero; }
147
- };
148
-
149
- }
150
-
151
-
152
-
153
- #endif
154
-
@@ -1,276 +0,0 @@
1
- #ifndef FILE_DIFFERENTIALOPERATOR
2
- #define FILE_DIFFERENTIALOPERATOR
3
-
4
- /*********************************************************************/
5
- /* File: differentialoperator.hpp */
6
- /* Author: Joachim Schoeberl */
7
- /* Date: 24. Nov. 2009 */
8
- /*********************************************************************/
9
-
10
- #include "finiteelement.hpp"
11
- #include "intrule.hpp"
12
-
13
-
14
- namespace ngfem
15
- {
16
-
17
- /**
18
- Differential Operator.
19
- Base-class for run-time polymorphismus.
20
- Provides application and transpose-application
21
- */
22
- class DifferentialOperator
23
- {
24
- private:
25
- int dim;
26
- int blockdim;
27
- Array<int> dimensions;
28
-
29
- int vsdim; // symmetric 3x3 matrix has dim=9, but vector-space dim=6
30
- optional<Matrix<>> vsembedding;
31
- protected:
32
- VorB vb;
33
- int difforder;
34
- public:
35
- /*
36
- [[deprecated("Use DifferentialOperator(int,int,VorB,int) instead")]]
37
- NGS_DLL_HEADER DifferentialOperator(int adim, int ablockdim, bool boundary, int adifforder)
38
- : dim(adim), blockdim(ablockdim), vb(boundary ? BND : VOL), difforder(adifforder)
39
- {
40
- if (blockdim == 1)
41
- dimensions = Array<int> ( { dim } );
42
- else
43
- dimensions = Array<int> ( { dim/blockdim, blockdim });
44
- }
45
- */
46
- NGS_DLL_HEADER DifferentialOperator(int adim, int ablockdim, VorB avb, int adifforder)
47
- : dim(adim), blockdim(ablockdim), vb(avb), difforder(adifforder)
48
- {
49
- if (blockdim == 1)
50
- dimensions = Array<int> ( { dim } );
51
- else if (dim == 1)
52
- dimensions = Array<int> ( { blockdim } );
53
- else
54
- dimensions = Array<int> ( { dim/blockdim, blockdim });
55
-
56
- vsdim = dim;
57
- }
58
- /// destructor
59
- NGS_DLL_HEADER virtual ~DifferentialOperator () = default;
60
-
61
- virtual void DoArchive(Archive & ar) { ; }
62
-
63
- void SetDimensions (const Array<int> & adims) { dimensions = adims; }
64
- void SetVectorSpaceEmbedding (Matrix <> emb)
65
- { vsembedding = emb; vsdim = emb.Width(); }
66
- optional<FlatMatrix<>> GetVSEmbedding() const { return vsembedding; }
67
-
68
- ///
69
- NGS_DLL_HEADER virtual string Name() const; // { return typeid(*this).name(); }
70
- /// dimension of range
71
- int Dim() const { return dim; }
72
- int VSDim() const { return vsdim; }
73
- const Array<int> & Dimensions() const { return dimensions; }
74
- /// number of copies of finite element by BlockDifferentialOperator
75
- int BlockDim() const { return blockdim; }
76
- /// does it live on the boundary ?
77
- bool Boundary() const { return vb == BND; }
78
- VorB VB() const { return vb; }
79
-
80
- virtual bool SupportsVB (VorB checkvb) const { return checkvb == vb; }
81
- virtual shared_ptr<DifferentialOperator> GetTrace() const
82
- {
83
- return nullptr;
84
- // throw Exception("GetTrace not overloaded for DifferentialOperator"+string(typeid(*this).name()));
85
- }
86
- /// total polynomial degree is reduced by this order (i.e. minimal difforder)
87
- int DiffOrder() const { return difforder; }
88
-
89
- virtual IntRange UsedDofs(const FiniteElement & fel) const { return IntRange(0, fel.GetNDof()); }
90
-
91
- virtual bool operator== (const DifferentialOperator & diffop2) const { return false; }
92
-
93
- /// calculates the matrix
94
- NGS_DLL_HEADER virtual void
95
- CalcMatrix (const FiniteElement & fel,
96
- const BaseMappedIntegrationPoint & mip,
97
- BareSliceMatrix<double,ColMajor> mat,
98
- LocalHeap & lh) const;
99
-
100
- NGS_DLL_HEADER virtual void
101
- CalcMatrix (const FiniteElement & bfel,
102
- const BaseMappedIntegrationPoint & bmip,
103
- BareSliceMatrix<Complex,ColMajor> mat,
104
- LocalHeap & lh) const;
105
-
106
- NGS_DLL_HEADER virtual void
107
- CalcMatrix (const FiniteElement & fel,
108
- const BaseMappedIntegrationRule & mir,
109
- BareSliceMatrix<double,ColMajor> mat,
110
- LocalHeap & lh) const;
111
-
112
- NGS_DLL_HEADER virtual void
113
- CalcMatrix (const FiniteElement & fel,
114
- const BaseMappedIntegrationRule & mir,
115
- BareSliceMatrix<Complex,ColMajor> mat,
116
- LocalHeap & lh) const;
117
-
118
- NGS_DLL_HEADER virtual void
119
- CalcMatrix (const FiniteElement & fel,
120
- const SIMD_BaseMappedIntegrationRule & mir,
121
- BareSliceMatrix<SIMD<double>> mat) const;
122
-
123
- NGS_DLL_HEADER virtual void
124
- CalcMatrix (const FiniteElement & fel,
125
- const SIMD_BaseMappedIntegrationRule & mir,
126
- BareSliceMatrix<SIMD<Complex>> mat) const;
127
-
128
- /// Bmat = vs-embedding * BmatVS (if vs-embedding is set)
129
- NGS_DLL_HEADER virtual void
130
- CalcMatrixVS (const FiniteElement & fel,
131
- const BaseMappedIntegrationPoint & mip,
132
- SliceMatrix<double,ColMajor> mat,
133
- LocalHeap & lh) const;
134
-
135
- NGS_DLL_HEADER virtual void
136
- CalcLinearizedMatrix (const FiniteElement & fel,
137
- const BaseMappedIntegrationRule & mir,
138
- BareSliceVector<double> x,
139
- SliceMatrix<double,ColMajor> mat,
140
- LocalHeap & lh) const;
141
-
142
- NGS_DLL_HEADER virtual bool IsNonlinear() const { return false; }
143
-
144
- // second derivative of \sum_ipt wprime * B(u)
145
- NGS_DLL_HEADER virtual void
146
- CalcHessianAdd (const FiniteElement & fel,
147
- const BaseMappedIntegrationRule & mir,
148
- SliceMatrix<> wprime,
149
- BareSliceVector<> elvecu,
150
- SliceMatrix<> hessian,
151
- LocalHeap & lh) const { ; }
152
-
153
- NGS_DLL_HEADER virtual void
154
- Apply (const FiniteElement & fel,
155
- const BaseMappedIntegrationPoint & mip,
156
- BareSliceVector<double> x,
157
- FlatVector<double> flux,
158
- LocalHeap & lh) const;
159
-
160
- NGS_DLL_HEADER virtual void
161
- Apply (const FiniteElement & fel,
162
- const BaseMappedIntegrationPoint & mip,
163
- BareSliceVector<Complex> x,
164
- FlatVector<Complex> flux,
165
- LocalHeap & lh) const;
166
-
167
- NGS_DLL_HEADER virtual void
168
- Apply (const FiniteElement & fel,
169
- const BaseMappedIntegrationRule & mir,
170
- BareSliceVector<double> x,
171
- BareSliceMatrix<double> flux,
172
- LocalHeap & lh) const;
173
-
174
- NGS_DLL_HEADER virtual void
175
- Apply (const FiniteElement & fel,
176
- const BaseMappedIntegrationRule & mir,
177
- BareSliceVector<Complex> x,
178
- BareSliceMatrix<Complex> flux,
179
- LocalHeap & lh) const;
180
-
181
- NGS_DLL_HEADER virtual void
182
- Apply (const FiniteElement & bfel,
183
- const SIMD_BaseMappedIntegrationRule & bmir,
184
- BareSliceVector<double> x,
185
- BareSliceMatrix<SIMD<double>> flux) const;
186
-
187
- NGS_DLL_HEADER virtual void
188
- Apply (const FiniteElement & bfel,
189
- const SIMD_BaseMappedIntegrationRule & bmir,
190
- BareSliceVector<Complex> x,
191
- BareSliceMatrix<SIMD<Complex>> flux) const;
192
-
193
-
194
- NGS_DLL_HEADER virtual void
195
- ApplyTrans (const FiniteElement & fel,
196
- const BaseMappedIntegrationPoint & mip,
197
- FlatVector<double> flux,
198
- BareSliceVector<double> x,
199
- LocalHeap & lh) const;
200
-
201
- NGS_DLL_HEADER virtual void
202
- ApplyTrans (const FiniteElement & fel,
203
- const BaseMappedIntegrationPoint & mip,
204
- FlatVector<Complex> flux,
205
- BareSliceVector<Complex> x,
206
- LocalHeap & lh) const;
207
-
208
- NGS_DLL_HEADER virtual void
209
- ApplyTrans (const FiniteElement & fel,
210
- const BaseMappedIntegrationRule & mir,
211
- FlatMatrix<double> flux,
212
- BareSliceVector<double> x,
213
- LocalHeap & lh) const;
214
-
215
- NGS_DLL_HEADER virtual void
216
- ApplyTrans (const FiniteElement & fel,
217
- const BaseMappedIntegrationRule & mir,
218
- FlatMatrix<Complex> flux,
219
- BareSliceVector<Complex> x,
220
- LocalHeap & lh) const;
221
-
222
- NGS_DLL_HEADER virtual void
223
- AddTrans (const FiniteElement & bfel,
224
- const SIMD_BaseMappedIntegrationRule & bmir,
225
- BareSliceMatrix<SIMD<double>> flux,
226
- BareSliceVector<double> x) const;
227
-
228
- NGS_DLL_HEADER virtual void
229
- AddTrans (const FiniteElement & bfel,
230
- const SIMD_BaseMappedIntegrationRule & bmir,
231
- BareSliceMatrix<SIMD<Complex>> flux,
232
- BareSliceVector<Complex> x) const;
233
-
234
-
235
- NGS_DLL_HEADER virtual void
236
- ApplyLinearizedTrans (const FiniteElement & fel,
237
- const BaseMappedIntegrationRule & mir,
238
- SliceVector<double> elveclin,
239
- FlatMatrix<double> flux,
240
- BareSliceVector<double> x,
241
- LocalHeap & lh) const
242
- {
243
- ApplyTrans (fel, mir, flux, x, lh);
244
- }
245
-
246
-
247
- /// calculates matrix on reference element
248
-
249
- // dimension on refelement (e.g. 2 for surface gradient)
250
- NGS_DLL_HEADER virtual int DimRef() const;
251
-
252
- NGS_DLL_HEADER virtual void
253
- CalcMatrix (const FiniteElement & fel,
254
- const IntegrationPoint & ip,
255
- BareSliceMatrix<double,ColMajor> mat,
256
- LocalHeap & lh) const;
257
-
258
- NGS_DLL_HEADER virtual void
259
- CalcTransformationMatrix (const BaseMappedIntegrationPoint & mip,
260
- SliceMatrix<double> trans,
261
- LocalHeap & lh) const;
262
-
263
- NGS_DLL_HEADER virtual shared_ptr<CoefficientFunction> DiffShape (shared_ptr<CoefficientFunction> proxy,
264
- shared_ptr<CoefficientFunction> dir,
265
- bool Eulerian = false) const;
266
-
267
- NGS_DLL_HEADER virtual list<tuple<string,double>> Timing (const FiniteElement & fel, const BaseMappedIntegrationRule & mir) const;
268
- };
269
-
270
-
271
-
272
- }
273
-
274
-
275
-
276
- #endif