ngsolve 6.2.2506.post74.dev0__cp314-cp314-macosx_10_15_universal2.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of ngsolve might be problematic. Click here for more details.

Files changed (315) hide show
  1. netgen/include/analytic_integrals.hpp +10 -0
  2. netgen/include/arnoldi.hpp +55 -0
  3. netgen/include/bandmatrix.hpp +334 -0
  4. netgen/include/basematrix.hpp +957 -0
  5. netgen/include/basevector.hpp +1268 -0
  6. netgen/include/bdbequations.hpp +2805 -0
  7. netgen/include/bdbintegrator.hpp +1660 -0
  8. netgen/include/bem_diffops.hpp +475 -0
  9. netgen/include/bessel.hpp +1064 -0
  10. netgen/include/bilinearform.hpp +963 -0
  11. netgen/include/bla.hpp +29 -0
  12. netgen/include/blockalloc.hpp +95 -0
  13. netgen/include/blockjacobi.hpp +328 -0
  14. netgen/include/bspline.hpp +116 -0
  15. netgen/include/calcinverse.hpp +141 -0
  16. netgen/include/cg.hpp +368 -0
  17. netgen/include/chebyshev.hpp +44 -0
  18. netgen/include/cholesky.hpp +720 -0
  19. netgen/include/clapack.h +7254 -0
  20. netgen/include/code_generation.hpp +296 -0
  21. netgen/include/coefficient.hpp +2033 -0
  22. netgen/include/coefficient_impl.hpp +19 -0
  23. netgen/include/coefficient_stdmath.hpp +167 -0
  24. netgen/include/commutingAMG.hpp +106 -0
  25. netgen/include/comp.hpp +79 -0
  26. netgen/include/compatibility.hpp +41 -0
  27. netgen/include/complex_wrapper.hpp +73 -0
  28. netgen/include/compressedfespace.hpp +110 -0
  29. netgen/include/contact.hpp +235 -0
  30. netgen/include/diagonalmatrix.hpp +154 -0
  31. netgen/include/differentialoperator.hpp +276 -0
  32. netgen/include/diffop.hpp +1286 -0
  33. netgen/include/diffop_impl.hpp +328 -0
  34. netgen/include/diffopwithfactor.hpp +123 -0
  35. netgen/include/discontinuous.hpp +84 -0
  36. netgen/include/dump.hpp +949 -0
  37. netgen/include/ectypes.hpp +121 -0
  38. netgen/include/eigen.hpp +60 -0
  39. netgen/include/eigensystem.hpp +18 -0
  40. netgen/include/elasticity_equations.hpp +595 -0
  41. netgen/include/elementbyelement.hpp +195 -0
  42. netgen/include/elementtopology.hpp +1760 -0
  43. netgen/include/elementtransformation.hpp +339 -0
  44. netgen/include/evalfunc.hpp +405 -0
  45. netgen/include/expr.hpp +1686 -0
  46. netgen/include/facetfe.hpp +175 -0
  47. netgen/include/facetfespace.hpp +180 -0
  48. netgen/include/facethofe.hpp +111 -0
  49. netgen/include/facetsurffespace.hpp +112 -0
  50. netgen/include/fe_interfaces.hpp +32 -0
  51. netgen/include/fem.hpp +87 -0
  52. netgen/include/fesconvert.hpp +14 -0
  53. netgen/include/fespace.hpp +1449 -0
  54. netgen/include/finiteelement.hpp +286 -0
  55. netgen/include/globalinterfacespace.hpp +77 -0
  56. netgen/include/globalspace.hpp +115 -0
  57. netgen/include/gridfunction.hpp +525 -0
  58. netgen/include/h1amg.hpp +124 -0
  59. netgen/include/h1hofe.hpp +188 -0
  60. netgen/include/h1hofe_impl.hpp +1262 -0
  61. netgen/include/h1hofefo.hpp +148 -0
  62. netgen/include/h1hofefo_impl.hpp +185 -0
  63. netgen/include/h1hofespace.hpp +167 -0
  64. netgen/include/h1lofe.hpp +1240 -0
  65. netgen/include/h1lumping.hpp +41 -0
  66. netgen/include/hcurl_equations.hpp +1381 -0
  67. netgen/include/hcurlcurlfe.hpp +2241 -0
  68. netgen/include/hcurlcurlfespace.hpp +78 -0
  69. netgen/include/hcurlfe.hpp +259 -0
  70. netgen/include/hcurlfe_utils.hpp +107 -0
  71. netgen/include/hcurlhdiv_dshape.hpp +857 -0
  72. netgen/include/hcurlhdivfes.hpp +308 -0
  73. netgen/include/hcurlhofe.hpp +175 -0
  74. netgen/include/hcurlhofe_impl.hpp +1871 -0
  75. netgen/include/hcurlhofespace.hpp +193 -0
  76. netgen/include/hcurllofe.hpp +1146 -0
  77. netgen/include/hdiv_equations.hpp +880 -0
  78. netgen/include/hdivdivfe.hpp +2923 -0
  79. netgen/include/hdivdivsurfacespace.hpp +76 -0
  80. netgen/include/hdivfe.hpp +206 -0
  81. netgen/include/hdivfe_utils.hpp +717 -0
  82. netgen/include/hdivfes.hpp +75 -0
  83. netgen/include/hdivhofe.hpp +447 -0
  84. netgen/include/hdivhofe_impl.hpp +1107 -0
  85. netgen/include/hdivhofefo.hpp +229 -0
  86. netgen/include/hdivhofespace.hpp +177 -0
  87. netgen/include/hdivhosurfacefespace.hpp +106 -0
  88. netgen/include/hdivlofe.hpp +773 -0
  89. netgen/include/hidden.hpp +74 -0
  90. netgen/include/householder.hpp +181 -0
  91. netgen/include/hypre_ams_precond.hpp +123 -0
  92. netgen/include/hypre_precond.hpp +73 -0
  93. netgen/include/integrator.hpp +2012 -0
  94. netgen/include/integratorcf.hpp +253 -0
  95. netgen/include/interpolate.hpp +49 -0
  96. netgen/include/intrule.hpp +2542 -0
  97. netgen/include/intrules_SauterSchwab.hpp +25 -0
  98. netgen/include/irspace.hpp +49 -0
  99. netgen/include/jacobi.hpp +153 -0
  100. netgen/include/kernels.hpp +762 -0
  101. netgen/include/l2hofe.hpp +194 -0
  102. netgen/include/l2hofe_impl.hpp +564 -0
  103. netgen/include/l2hofefo.hpp +542 -0
  104. netgen/include/l2hofespace.hpp +344 -0
  105. netgen/include/la.hpp +38 -0
  106. netgen/include/linearform.hpp +266 -0
  107. netgen/include/matrix.hpp +2140 -0
  108. netgen/include/memusage.hpp +41 -0
  109. netgen/include/meshaccess.hpp +1359 -0
  110. netgen/include/mgpre.hpp +204 -0
  111. netgen/include/mp_coefficient.hpp +145 -0
  112. netgen/include/mptools.hpp +2281 -0
  113. netgen/include/multigrid.hpp +42 -0
  114. netgen/include/multivector.hpp +447 -0
  115. netgen/include/mumpsinverse.hpp +187 -0
  116. netgen/include/mycomplex.hpp +361 -0
  117. netgen/include/ng_lapack.hpp +1661 -0
  118. netgen/include/ngblas.hpp +1232 -0
  119. netgen/include/ngs_defines.hpp +30 -0
  120. netgen/include/ngs_stdcpp_include.hpp +106 -0
  121. netgen/include/ngs_utils.hpp +121 -0
  122. netgen/include/ngsobject.hpp +1019 -0
  123. netgen/include/ngsstream.hpp +113 -0
  124. netgen/include/ngstd.hpp +72 -0
  125. netgen/include/nodalhofe.hpp +96 -0
  126. netgen/include/nodalhofe_impl.hpp +141 -0
  127. netgen/include/normalfacetfe.hpp +223 -0
  128. netgen/include/normalfacetfespace.hpp +98 -0
  129. netgen/include/normalfacetsurfacefespace.hpp +84 -0
  130. netgen/include/order.hpp +251 -0
  131. netgen/include/parallel_matrices.hpp +222 -0
  132. netgen/include/paralleldofs.hpp +340 -0
  133. netgen/include/parallelngs.hpp +23 -0
  134. netgen/include/parallelvector.hpp +269 -0
  135. netgen/include/pardisoinverse.hpp +200 -0
  136. netgen/include/periodic.hpp +129 -0
  137. netgen/include/plateaufespace.hpp +25 -0
  138. netgen/include/pml.hpp +275 -0
  139. netgen/include/pmltrafo.hpp +631 -0
  140. netgen/include/postproc.hpp +142 -0
  141. netgen/include/potentialtools.hpp +22 -0
  142. netgen/include/precomp.hpp +60 -0
  143. netgen/include/preconditioner.hpp +602 -0
  144. netgen/include/prolongation.hpp +377 -0
  145. netgen/include/python_comp.hpp +107 -0
  146. netgen/include/python_fem.hpp +89 -0
  147. netgen/include/python_linalg.hpp +58 -0
  148. netgen/include/python_ngstd.hpp +386 -0
  149. netgen/include/recursive_pol.hpp +4896 -0
  150. netgen/include/recursive_pol_tet.hpp +395 -0
  151. netgen/include/recursive_pol_trig.hpp +492 -0
  152. netgen/include/reorderedfespace.hpp +81 -0
  153. netgen/include/sample_sort.hpp +105 -0
  154. netgen/include/scalarfe.hpp +335 -0
  155. netgen/include/shapefunction_utils.hpp +113 -0
  156. netgen/include/simd_complex.hpp +329 -0
  157. netgen/include/smoother.hpp +253 -0
  158. netgen/include/solve.hpp +89 -0
  159. netgen/include/sparsecholesky.hpp +313 -0
  160. netgen/include/sparsematrix.hpp +1038 -0
  161. netgen/include/sparsematrix_dyn.hpp +90 -0
  162. netgen/include/sparsematrix_impl.hpp +1013 -0
  163. netgen/include/special_matrix.hpp +463 -0
  164. netgen/include/specialelement.hpp +125 -0
  165. netgen/include/statushandler.hpp +33 -0
  166. netgen/include/stringops.hpp +12 -0
  167. netgen/include/superluinverse.hpp +136 -0
  168. netgen/include/symbolicintegrator.hpp +850 -0
  169. netgen/include/symmetricmatrix.hpp +144 -0
  170. netgen/include/tangentialfacetfe.hpp +224 -0
  171. netgen/include/tangentialfacetfespace.hpp +91 -0
  172. netgen/include/tensor.hpp +522 -0
  173. netgen/include/tensorcoefficient.hpp +446 -0
  174. netgen/include/tensorproductintegrator.hpp +113 -0
  175. netgen/include/thcurlfe.hpp +128 -0
  176. netgen/include/thcurlfe_impl.hpp +380 -0
  177. netgen/include/thdivfe.hpp +80 -0
  178. netgen/include/thdivfe_impl.hpp +492 -0
  179. netgen/include/tpdiffop.hpp +461 -0
  180. netgen/include/tpfes.hpp +133 -0
  181. netgen/include/tpintrule.hpp +224 -0
  182. netgen/include/triangular.hpp +465 -0
  183. netgen/include/tscalarfe.hpp +245 -0
  184. netgen/include/tscalarfe_impl.hpp +1029 -0
  185. netgen/include/umfpackinverse.hpp +148 -0
  186. netgen/include/vector.hpp +1273 -0
  187. netgen/include/voxelcoefficientfunction.hpp +41 -0
  188. netgen/include/vtkoutput.hpp +198 -0
  189. netgen/include/vvector.hpp +208 -0
  190. netgen/include/webgui.hpp +92 -0
  191. netgen/libngbla.dylib +0 -0
  192. netgen/libngcomp.dylib +0 -0
  193. netgen/libngfem.dylib +0 -0
  194. netgen/libngla.dylib +0 -0
  195. netgen/libngsbem.dylib +0 -0
  196. netgen/libngsolve.dylib +0 -0
  197. netgen/libngstd.dylib +0 -0
  198. ngsolve/TensorProductTools.py +210 -0
  199. ngsolve/__console.py +94 -0
  200. ngsolve/__expr.py +181 -0
  201. ngsolve/__init__.py +148 -0
  202. ngsolve/__init__.pyi +233 -0
  203. ngsolve/_scikit_build_core_dependencies.py +30 -0
  204. ngsolve/bla.pyi +1153 -0
  205. ngsolve/bvp.py +78 -0
  206. ngsolve/bvp.pyi +32 -0
  207. ngsolve/cmake/NGSolveConfig.cmake +102 -0
  208. ngsolve/cmake/ngsolve-targets-release.cmake +79 -0
  209. ngsolve/cmake/ngsolve-targets.cmake +163 -0
  210. ngsolve/comp/__init__.pyi +5449 -0
  211. ngsolve/comp/pml.pyi +89 -0
  212. ngsolve/config/__init__.py +1 -0
  213. ngsolve/config/__init__.pyi +43 -0
  214. ngsolve/config/__main__.py +4 -0
  215. ngsolve/config/config.py +60 -0
  216. ngsolve/config/config.pyi +45 -0
  217. ngsolve/demos/TensorProduct/__init__.py +0 -0
  218. ngsolve/demos/TensorProduct/tp_dg_1d_1d.py +80 -0
  219. ngsolve/demos/TensorProduct/tp_dg_1d_2d.py +73 -0
  220. ngsolve/demos/TensorProduct/tp_dg_2d_1d.py +72 -0
  221. ngsolve/demos/TensorProduct/tp_dg_2d_2d.py +66 -0
  222. ngsolve/demos/__init__.py +0 -0
  223. ngsolve/demos/howto/__init__.py +0 -0
  224. ngsolve/demos/howto/hhj.py +44 -0
  225. ngsolve/demos/howto/hybrid_dg.py +53 -0
  226. ngsolve/demos/howto/mixed.py +30 -0
  227. ngsolve/demos/howto/nonlin.py +29 -0
  228. ngsolve/demos/howto/pickling.py +26 -0
  229. ngsolve/demos/howto/pml.py +31 -0
  230. ngsolve/demos/howto/taskmanager.py +20 -0
  231. ngsolve/demos/howto/tdnns.py +47 -0
  232. ngsolve/demos/howto/timeDG-skeleton.py +45 -0
  233. ngsolve/demos/howto/timeDG.py +38 -0
  234. ngsolve/demos/howto/timeDGlap.py +42 -0
  235. ngsolve/demos/howto/timeDGwave.py +61 -0
  236. ngsolve/demos/intro/__init__.py +0 -0
  237. ngsolve/demos/intro/adaptive.py +123 -0
  238. ngsolve/demos/intro/cmagnet.py +59 -0
  239. ngsolve/demos/intro/elasticity.py +76 -0
  240. ngsolve/demos/intro/navierstokes.py +74 -0
  241. ngsolve/demos/intro/poisson.ipynb +170 -0
  242. ngsolve/demos/intro/poisson.py +41 -0
  243. ngsolve/demos/mpi/__init__.py +0 -0
  244. ngsolve/demos/mpi/mpi_cmagnet.py +87 -0
  245. ngsolve/demos/mpi/mpi_navierstokes.py +117 -0
  246. ngsolve/demos/mpi/mpi_poisson.py +89 -0
  247. ngsolve/demos/mpi/mpi_timeDG.py +82 -0
  248. ngsolve/directsolvers.py +26 -0
  249. ngsolve/directsolvers.pyi +15 -0
  250. ngsolve/eigenvalues.py +364 -0
  251. ngsolve/eigenvalues.pyi +30 -0
  252. ngsolve/fem.pyi +1647 -0
  253. ngsolve/internal.py +89 -0
  254. ngsolve/krylovspace.py +1013 -0
  255. ngsolve/krylovspace.pyi +298 -0
  256. ngsolve/la.pyi +1230 -0
  257. ngsolve/meshes.py +748 -0
  258. ngsolve/ngs2petsc.py +310 -0
  259. ngsolve/ngscxx.py +42 -0
  260. ngsolve/ngslib.so +0 -0
  261. ngsolve/ngstd.pyi +59 -0
  262. ngsolve/nonlinearsolvers.py +203 -0
  263. ngsolve/nonlinearsolvers.pyi +95 -0
  264. ngsolve/preconditioners.py +11 -0
  265. ngsolve/preconditioners.pyi +7 -0
  266. ngsolve/solve.pyi +109 -0
  267. ngsolve/solve_implementation.py +168 -0
  268. ngsolve/solve_implementation.pyi +42 -0
  269. ngsolve/solvers.py +7 -0
  270. ngsolve/solvers.pyi +14 -0
  271. ngsolve/timestepping.py +185 -0
  272. ngsolve/timestepping.pyi +28 -0
  273. ngsolve/timing.py +108 -0
  274. ngsolve/timing.pyi +54 -0
  275. ngsolve/utils.py +167 -0
  276. ngsolve/utils.pyi +273 -0
  277. ngsolve/webgui.py +670 -0
  278. ngsolve-6.2.2506.post74.dev0.data/data/Netgen.icns +0 -0
  279. ngsolve-6.2.2506.post74.dev0.data/data/bin/ngscxx +17 -0
  280. ngsolve-6.2.2506.post74.dev0.data/data/bin/ngsld +13 -0
  281. ngsolve-6.2.2506.post74.dev0.data/data/bin/ngsolve.tcl +648 -0
  282. ngsolve-6.2.2506.post74.dev0.data/data/bin/ngspy +2 -0
  283. ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/beam.geo +17 -0
  284. ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/beam.vol +240 -0
  285. ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/chip.in2d +41 -0
  286. ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/chip.vol +614 -0
  287. ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/coil.geo +12 -0
  288. ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/coil.vol +2560 -0
  289. ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/coilshield.geo +24 -0
  290. ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/coilshield.vol +3179 -0
  291. ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/cube.geo +19 -0
  292. ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/cube.vol +1832 -0
  293. ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/d10_DGdoubleglazing.pde +50 -0
  294. ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/d11_chip_nitsche.pde +40 -0
  295. ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/d1_square.pde +43 -0
  296. ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/d2_chip.pde +35 -0
  297. ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/d3_helmholtz.pde +22 -0
  298. ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/d4_cube.pde +46 -0
  299. ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/d5_beam.pde +74 -0
  300. ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/d6_shaft.pde +73 -0
  301. ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/d7_coil.pde +50 -0
  302. ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/d8_coilshield.pde +49 -0
  303. ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/d9_hybridDG.pde +72 -0
  304. ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/doubleglazing.in2d +27 -0
  305. ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/doubleglazing.vol +737 -0
  306. ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/piezo2d40round4.vol.gz +0 -0
  307. ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/shaft.geo +73 -0
  308. ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/shaft.vol +4291 -0
  309. ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/square.in2d +17 -0
  310. ngsolve-6.2.2506.post74.dev0.data/data/share/ngsolve/square.vol +149 -0
  311. ngsolve-6.2.2506.post74.dev0.dist-info/METADATA +13 -0
  312. ngsolve-6.2.2506.post74.dev0.dist-info/RECORD +315 -0
  313. ngsolve-6.2.2506.post74.dev0.dist-info/WHEEL +5 -0
  314. ngsolve-6.2.2506.post74.dev0.dist-info/licenses/LICENSE +504 -0
  315. ngsolve-6.2.2506.post74.dev0.dist-info/top_level.txt +2 -0
@@ -0,0 +1,29 @@
1
+ from netgen.geom2d import unit_square
2
+ from ngsolve import *
3
+
4
+ m = Mesh (unit_square.GenerateMesh(maxh=0.3))
5
+
6
+ V = H1(m, order=3, dirichlet="left|right|top|bottom")
7
+ u = V.TrialFunction()
8
+ v = V.TestFunction()
9
+
10
+ a = BilinearForm(V)
11
+ a += ( grad(u) * grad(v) + 5*u*u*v- 1 * v)*dx
12
+
13
+ u = GridFunction(V)
14
+ r = u.vec.CreateVector()
15
+ w = u.vec.CreateVector()
16
+
17
+ for it in range(5):
18
+ print ("Iteration",it)
19
+ a.Apply(u.vec, r)
20
+ a.AssembleLinearization(u.vec)
21
+
22
+ w.data = a.mat.Inverse(V.FreeDofs()) * r.data
23
+ print ("|w| =", w.Norm())
24
+ u.vec.data -= w
25
+
26
+ Draw(u)
27
+ input("<press a key>")
28
+
29
+
@@ -0,0 +1,26 @@
1
+ from ngsolve import *
2
+ import netgen.geom2d
3
+
4
+ mesh = Mesh (netgen.geom2d.unit_square.GenerateMesh(maxh=0.1))
5
+
6
+ v = FESpace ("h1ho", mesh, order=4, dirichlet=[1])
7
+ v2 = L2(mesh,order=2)
8
+ u = GridFunction (v)
9
+ u2 = GridFunction(v)
10
+ vec = u.vec
11
+ data = [v,v2,u,u2,u.vec]
12
+
13
+ import pickle
14
+ pickler = pickle.Pickler(open ("1.dat", "wb"))
15
+ pickler.dump (data)
16
+ del pickler
17
+
18
+ unpickler = pickle.Unpickler(open("1.dat","rb"))
19
+ fes,fes2,w,w2,z = unpickler.load()
20
+
21
+ assert fes.mesh is fes2.mesh
22
+ assert w.space is w2.space
23
+
24
+ assert len(z) == len(u.vec)
25
+ for i in range(len(u.vec)):
26
+ assert u.vec[i] == z[i]
@@ -0,0 +1,31 @@
1
+ from netgen.geom2d import SplineGeometry
2
+ from ngsolve import *
3
+
4
+ geo = SplineGeometry()
5
+ geo.AddCircle( (0,0), 1.4, leftdomain=2)
6
+ geo.AddCircle( (0,0), 1, leftdomain=1, rightdomain=2)
7
+ geo.SetMaterial(1, "inner")
8
+ geo.SetMaterial(2, "pml")
9
+ mesh = Mesh(geo.GenerateMesh (maxh=0.1))
10
+
11
+ mesh.SetPML(pml.Radial(rad=1,alpha=1j,origin=(0,0)), "pml")
12
+
13
+ fes = H1(mesh, order=4, complex=True)
14
+ u = fes.TrialFunction()
15
+ v = fes.TestFunction()
16
+
17
+ omega = 10
18
+
19
+ a = BilinearForm(fes)
20
+ a += (grad(u)*grad(v)-omega*omega*u*v)*dx
21
+
22
+ f = LinearForm(fes)
23
+ f += exp(-20**2*((x-0.3)*(x-0.3)+y*y))*v*dx
24
+
25
+ a.Assemble()
26
+ f.Assemble()
27
+
28
+ gfu = GridFunction(fes)
29
+ gfu.vec.data = a.mat.Inverse() * f.vec
30
+
31
+ Draw(gfu)
@@ -0,0 +1,20 @@
1
+ from netgen.csg import unit_cube
2
+ from ngsolve import *
3
+
4
+ mesh = Mesh (unit_cube.GenerateMesh(maxh=0.4))
5
+ for l in range(3):
6
+ mesh.Refine()
7
+
8
+ fes = H1(mesh, order=3)
9
+ u,v = fes.TnT()
10
+ a = BilinearForm(fes)
11
+ a += grad(u) * grad(v) * dx
12
+
13
+
14
+ print('sequential assembly...')
15
+ a.Assemble()
16
+
17
+ print('parallel assembly...')
18
+ with TaskManager():
19
+ a.Assemble()
20
+
@@ -0,0 +1,47 @@
1
+ #
2
+ # The tangential-displacement normal-normal-stress continuous method for elasticity
3
+ #
4
+ # A.S. Pechstein and J. Schoeberl:
5
+ # Tangential-displacement and normal-normal-stress continuous mixed finite elements for elasticity.
6
+ # Mathematical Models and Methods in Applied Sciences 21(8), 1761–1782, 2011.
7
+ #
8
+
9
+ from ngsolve import *
10
+ from netgen.geom2d import SplineGeometry
11
+
12
+ geo = SplineGeometry()
13
+ geo.AddRectangle( (0, 0), (10, 1), bcs = ("bottom", "right", "top", "left"))
14
+ mesh = Mesh( geo.GenerateMesh(maxh=0.5))
15
+
16
+ order = 3
17
+ V = HDivDiv(mesh, order=order-1, dirichlet="bottom|right|top", plus = True)
18
+ Q = HCurl(mesh, order=order, dirichlet="left", type1 = True)
19
+ X = V*Q
20
+
21
+ print ("ndof-V:", V.ndof, ", ndof-Q:", Q.ndof)
22
+
23
+ sigma, u = X.TrialFunction()
24
+ tau, v = X.TestFunction()
25
+
26
+ n = specialcf.normal(2)
27
+
28
+ def tang(u): return u-(u*n)*n
29
+
30
+ a = BilinearForm(X, symmetric=True)
31
+ a += (InnerProduct (sigma, tau) + div(sigma)*v + div(tau)*u - 1e-10 * u*v)*dx
32
+ a += (-(sigma*n) * tang(v) - (tau*n)*tang(u))*dx(element_boundary=True)
33
+ a.Assemble()
34
+
35
+ f = LinearForm(X)
36
+ f += 1 * v[1] * dx
37
+ f.Assemble()
38
+
39
+ u = GridFunction(X)
40
+ u.vec.data = a.mat.Inverse(X.FreeDofs(), inverse="sparsecholesky") * f.vec
41
+
42
+ Draw (u.components[0], mesh, name="sigma")
43
+ Draw (u.components[1], mesh, name="disp")
44
+
45
+ Draw (u.components[0][0], mesh, name="s11")
46
+
47
+
@@ -0,0 +1,45 @@
1
+ from netgen.geom2d import unit_square
2
+ from ngsolve import *
3
+
4
+ mesh = Mesh (unit_square.GenerateMesh(maxh=0.1))
5
+
6
+ fes = L2(mesh, order=4)
7
+
8
+ u = fes.TrialFunction()
9
+ v = fes.TestFunction()
10
+
11
+ b = CoefficientFunction( (y-0.5,0.5-x) )
12
+ bn = b*specialcf.normal(2)
13
+
14
+ ubnd = CoefficientFunction(0)
15
+
16
+ a = BilinearForm(fes)
17
+ a += (-u * b*grad(v)) .Compile()*dx
18
+
19
+ # the skeleton-formulation, sum over edges:
20
+ a += bn*IfPos(bn, u, u.Other()) * (v-v.Other()) * dx(skeleton=True)
21
+ a += bn*IfPos(bn, u, ubnd) * v * ds(skeleton=True)
22
+
23
+ # or the element-boundary formulation
24
+ # note the bnd-value in the .Other operator
25
+ # a += bn*IfPos(bn, u, u.Other(bnd=ubnd)) * v * dx(element_boundary=True)
26
+
27
+ u = GridFunction(fes)
28
+ u.Set(exp (-40 * ( (x-0.7)*(x-0.7) + (y-0.7)*(y-0.7) )))
29
+
30
+ w = u.vec.CreateVector()
31
+
32
+ Draw (u, autoscale=False, sd=2)
33
+
34
+ t = 0
35
+ tau = 1e-3
36
+ tend = 10
37
+
38
+ with TaskManager():
39
+ while t < tend:
40
+ a.Apply (u.vec, w)
41
+ fes.SolveM (rho=CoefficientFunction(1), vec=w)
42
+ u.vec.data -= tau * w
43
+ t += tau
44
+ Redraw()
45
+
@@ -0,0 +1,38 @@
1
+ from netgen.geom2d import unit_square
2
+ from ngsolve import *
3
+
4
+ mesh = Mesh (unit_square.GenerateMesh(maxh=0.1))
5
+
6
+ fes = L2(mesh, order=4)
7
+
8
+ u = fes.TrialFunction()
9
+ v = fes.TestFunction()
10
+
11
+ b = CoefficientFunction( (y-0.5,0.5-x) )
12
+ bn = b*specialcf.normal(2)
13
+
14
+ ubnd = CoefficientFunction(0)
15
+
16
+ a = BilinearForm(fes)
17
+ a += -u * b*grad(v) * dx
18
+ a += bn*IfPos(bn, u, u.Other(bnd=ubnd)) * v * dx(element_boundary=True)
19
+
20
+ u = GridFunction(fes)
21
+ u.Set(exp (-40 * ( (x-0.7)*(x-0.7) + (y-0.7)*(y-0.7) )))
22
+
23
+ w = u.vec.CreateVector()
24
+
25
+ Draw (u, autoscale=False, sd=2)
26
+
27
+ t = 0
28
+ tau = 1e-3
29
+ tend = 10
30
+
31
+ with TaskManager():
32
+ while t < tend:
33
+ a.Apply (u.vec, w)
34
+ fes.SolveM (rho=CoefficientFunction(1), vec=w)
35
+ u.vec.data -= tau * w
36
+ t += tau
37
+ Redraw()
38
+
@@ -0,0 +1,42 @@
1
+ from netgen.geom2d import unit_square
2
+ from ngsolve import *
3
+
4
+ mesh = Mesh (unit_square.GenerateMesh(maxh=0.05))
5
+
6
+ order=2
7
+ fes = L2(mesh, order=order)
8
+
9
+ u = fes.TrialFunction()
10
+ v = fes.TestFunction()
11
+
12
+ u0 = exp (-40 * ( (x-0.5)*(x-0.5) + (y-0.5)*(y-0.5) ))
13
+
14
+ n = specialcf.normal(2)
15
+ h = specialcf.mesh_size
16
+
17
+ a = BilinearForm(fes)
18
+ a += grad(u) * grad(v) * dx
19
+ cf1 = -0.5 * InnerProduct(grad(u), n)*(v-v.Other(bnd=0))
20
+ cf2 = -0.5 * InnerProduct(grad(v), n)*(u-u.Other(bnd=u0))
21
+ cf3 = 2*( (order+1)**2)/h * (u-u.Other(bnd=u0)) * v
22
+ a += (cf1+cf2+cf3)*dx(element_boundary=True)
23
+
24
+ u = GridFunction(fes)
25
+ u.Set(u0)
26
+
27
+ w = u.vec.CreateVector()
28
+
29
+ Draw (u, mesh, "u")
30
+
31
+ tau = 2e-6
32
+ tend = 0.5
33
+
34
+ t = 0
35
+ with TaskManager():
36
+ while t < tend:
37
+ a.Apply (u.vec, w)
38
+ fes.SolveM (rho=CoefficientFunction(1), vec=w)
39
+ u.vec.data -= tau * w
40
+ t += tau
41
+ Redraw()
42
+
@@ -0,0 +1,61 @@
1
+ from netgen.geom2d import unit_square
2
+ from ngsolve import *
3
+
4
+ mesh = Mesh (unit_square.GenerateMesh(maxh=0.05))
5
+
6
+ order=4
7
+ fes1 = L2(mesh, order=order)
8
+ fes = fes1*fes1*fes1
9
+
10
+ p,ux,uy = fes.TrialFunction()
11
+ q,vx,vy = fes.TestFunction()
12
+
13
+ u0 = exp (-400 * ( (x-0.5)*(x-0.5) + (y-0.5)*(y-0.5) ))
14
+
15
+ n = specialcf.normal(2)
16
+
17
+ v = CoefficientFunction( (vx, vy) )
18
+ u = CoefficientFunction( (ux, uy) )
19
+
20
+ a1 = BilinearForm(fes)
21
+ a1 += grad(p) * v * dx
22
+ a1 += -0.5 * (p - p.Other()) * (v*n) * dx(element_boundary = True)
23
+
24
+ a2 = BilinearForm(fes)
25
+ a2 += -grad(q) * u * dx
26
+ a2 += 0.5 * (q - q.Other()) * (u*n) * dx(element_boundary = True)
27
+
28
+
29
+ u = GridFunction(fes)
30
+ u.components[0].Set(u0)
31
+
32
+ res = u.vec.CreateVector()
33
+ w = u.vec.CreateVector()
34
+
35
+ Draw (u.components[1], mesh, "ux")
36
+ Draw (u.components[2], mesh, "uy")
37
+ Draw (u.components[0], mesh, "p")
38
+ SetVisualization(min=-0.1, max=0.1, deformation=True)
39
+
40
+ tau = 1e-3
41
+ tend = 3
42
+
43
+ t = 0
44
+ nd = fes1.ndof
45
+
46
+ input ("<press enter>")
47
+
48
+ with TaskManager():
49
+ while t < tend:
50
+ a1.Apply (u.vec, w)
51
+ fes1.SolveM (rho=CoefficientFunction(1), vec=w.Range(nd,2*nd))
52
+ fes1.SolveM (rho=CoefficientFunction(1), vec=w.Range(2*nd,3*nd))
53
+ u.vec.data -= tau * w
54
+
55
+ a2.Apply (u.vec, w)
56
+ fes1.SolveM (rho=CoefficientFunction(1), vec=w.Range(0,nd))
57
+ u.vec.data -= tau * w
58
+
59
+ t += tau
60
+ Redraw()
61
+
File without changes
@@ -0,0 +1,123 @@
1
+ from ngsolve import *
2
+ from netgen.geom2d import SplineGeometry
3
+
4
+
5
+ # point numbers 0, 1, ... 11
6
+ # sub-domain numbers (1), (2), (3)
7
+ #
8
+ #
9
+ # 7-------------6
10
+ # | |
11
+ # | (2) |
12
+ # | |
13
+ # 3------4-------------5------2
14
+ # | |
15
+ # | 11 |
16
+ # | / \ |
17
+ # | 10 (3) 9 |
18
+ # | \ / (1) |
19
+ # | 8 |
20
+ # | |
21
+ # 0---------------------------1
22
+ #
23
+
24
+ def MakeGeometry():
25
+ geometry = SplineGeometry()
26
+
27
+ # point coordinates ...
28
+ pnts = [ (0,0), (1,0), (1,0.6), (0,0.6), \
29
+ (0.2,0.6), (0.8,0.6), (0.8,0.8), (0.2,0.8), \
30
+ (0.5,0.15), (0.65,0.3), (0.5,0.45), (0.35,0.3) ]
31
+ pnums = [geometry.AppendPoint(*p) for p in pnts]
32
+
33
+ # start-point, end-point, boundary-condition, domain on left side, domain on right side:
34
+ lines = [ (0,1,1,1,0), (1,2,2,1,0), (2,5,2,1,0), (5,4,2,1,2), (4,3,2,1,0), (3,0,2,1,0), \
35
+ (5,6,2,2,0), (6,7,2,2,0), (7,4,2,2,0), \
36
+ (8,9,2,3,1), (9,10,2,3,1), (10,11,2,3,1), (11,8,2,3,1) ]
37
+
38
+ for p1,p2,bc,left,right in lines:
39
+ geometry.Append( ["line", pnums[p1], pnums[p2]], bc=bc, leftdomain=left, rightdomain=right)
40
+ return geometry
41
+
42
+
43
+
44
+ mesh = Mesh(MakeGeometry().GenerateMesh (maxh=0.2))
45
+
46
+
47
+ fes = H1(mesh, order=3, dirichlet=[1], autoupdate=True)
48
+ u = fes.TrialFunction()
49
+ v = fes.TestFunction()
50
+
51
+ # one heat conductivity coefficient per sub-domain
52
+ lam = CoefficientFunction([1, 1000, 10])
53
+ a = BilinearForm(fes, symmetric=False)
54
+ a += lam*grad(u)*grad(v)*dx
55
+
56
+
57
+ # heat-source in sub-domain 3
58
+ f = LinearForm(fes)
59
+ f += CoefficientFunction([0, 0, 1])*v*dx
60
+
61
+ c = MultiGridPreconditioner(a, inverse = "sparsecholesky")
62
+
63
+ gfu = GridFunction(fes, autoupdate=True)
64
+ Draw (gfu)
65
+
66
+ # finite element space and gridfunction to represent
67
+ # the heatflux:
68
+ space_flux = HDiv(mesh, order=2, autoupdate=True)
69
+ gf_flux = GridFunction(space_flux, "flux", autoupdate=True)
70
+
71
+ def SolveBVP():
72
+ a.Assemble()
73
+ f.Assemble()
74
+ inv = CGSolver(a.mat, c.mat)
75
+ gfu.vec.data = inv * f.vec
76
+ Redraw (blocking=True)
77
+
78
+
79
+
80
+ l = []
81
+
82
+ def CalcError():
83
+ flux = lam * grad(gfu)
84
+ # interpolate finite element flux into H(div) space:
85
+ gf_flux.Set (flux)
86
+
87
+ # Gradient-recovery error estimator
88
+ err = 1/lam*(flux-gf_flux)*(flux-gf_flux)
89
+ elerr = Integrate (err, mesh, VOL, element_wise=True)
90
+
91
+ maxerr = max(elerr)
92
+ l.append ( (fes.ndof, sqrt(sum(elerr)) ))
93
+ print ("maxerr = ", maxerr)
94
+
95
+ for el in mesh.Elements():
96
+ mesh.SetRefinementFlag(el, elerr[el.nr] > 0.25*maxerr)
97
+
98
+
99
+ with TaskManager():
100
+ while fes.ndof < 100000:
101
+ SolveBVP()
102
+ CalcError()
103
+ mesh.Refine()
104
+
105
+ SolveBVP()
106
+
107
+
108
+
109
+
110
+ ## import matplotlib.pyplot as plt
111
+
112
+ ## plt.yscale('log')
113
+ ## plt.xscale('log')
114
+ ## plt.xlabel("ndof")
115
+ ## plt.ylabel("H1 error-estimate")
116
+ ## ndof,err = zip(*l)
117
+ ## plt.plot(ndof,err, "-*")
118
+
119
+ ## plt.ion()
120
+ ## plt.show()
121
+
122
+ ## input("<press enter to quit>")
123
+
@@ -0,0 +1,59 @@
1
+ from netgen.occ import *
2
+ from ngsolve import *
3
+
4
+
5
+ def MakeGeometry():
6
+ box = Box((-1,-1,-1), (2,1,2))
7
+ box.faces.name = "outer"
8
+ core = Box((0,-0.05,0), (0.8,0.05,1)) - \
9
+ Box((0.1,-1,0.1), (0.7,1,0.9)) - \
10
+ Box((0.5,-1,0.4), (1,1,0.6))
11
+ core.solids.name = "core"
12
+ core.solids.maxh = 0.03
13
+
14
+ coil = Cylinder((0.05,0,0.3), (0,0,1), 0.3, 0.4) - \
15
+ Cylinder((0.05,0,0.3), (0,0,1), 0.15, 0.4)
16
+ coil.solids.name = "coil"
17
+ air = box - core - coil
18
+ air.solids.name = "air"
19
+ return Glue([core, coil, air])
20
+
21
+
22
+
23
+ mesh = MakeGeometry().GenerateMesh(maxh=0.5)
24
+
25
+ # curve elements for geometry approximation
26
+ mesh.Curve(5)
27
+
28
+ ngsglobals.msg_level = 5
29
+
30
+ fes = HCurl(mesh, order=4, dirichlet="outer", nograds = True)
31
+
32
+ # u and v refer to trial and test-functions in the definition of forms below
33
+ u = fes.TrialFunction()
34
+ v = fes.TestFunction()
35
+
36
+ mur = mesh.MaterialCF({ "core" : 1000 }, default=1)
37
+ mu0 = 1.257e-6
38
+ nu = 1/(mu0*mur)
39
+
40
+ a = BilinearForm(fes, symmetric=True)
41
+ a += nu*curl(u)*curl(v)*dx + 1e-6*nu*u*v*dx
42
+
43
+ c = Preconditioner(a, type="bddc")
44
+ # c = Preconditioner(a, type="multigrid", flags = { "smoother" : "block" } )
45
+
46
+ f = LinearForm(fes)
47
+ f += CoefficientFunction((y,0.05-x,0)) * v * dx("coil")
48
+
49
+ u = GridFunction(fes)
50
+
51
+
52
+ with TaskManager():
53
+ a.Assemble()
54
+ f.Assemble()
55
+ solver = CGSolver(mat=a.mat, pre=c.mat)
56
+ u.vec.data = solver * f.vec
57
+
58
+
59
+ Draw (u.Deriv(), mesh, "B-field", draw_surf=False)
@@ -0,0 +1,76 @@
1
+ #
2
+ # geometric non-linear elasticity with Neo-Hooke hyperelastic material
3
+ #
4
+ # featuring automatic differentiation in SymbolicEnergy
5
+ #
6
+
7
+ import netgen.geom2d as geom2d
8
+ from ngsolve import *
9
+
10
+ geo = geom2d.SplineGeometry()
11
+ pnums = [ geo.AddPoint (x,y,maxh=0.01) for x,y in [(0,0), (1,0), (1,0.1), (0,0.1)] ]
12
+ for p1,p2,bc in [(0,1,"bot"), (1,2,"right"), (2,3,"top"), (3,0,"left")]:
13
+ geo.Append(["line", pnums[p1], pnums[p2]], bc=bc)
14
+ mesh = Mesh(geo.GenerateMesh(maxh=0.05))
15
+
16
+
17
+ E, nu = 210, 0.2
18
+ mu = E / 2 / (1+nu)
19
+ lam = E * nu / ((1+nu)*(1-2*nu))
20
+
21
+ fes = H1(mesh, order=2, dirichlet="left", dim=mesh.dim)
22
+ # fes = VectorH1(mesh, order=2, dirichlet="left")
23
+
24
+ u = fes.TrialFunction()
25
+
26
+ force = CoefficientFunction( (0,1/2) )
27
+
28
+ I = Id(mesh.dim)
29
+ F = I + Grad(u)
30
+ C = F.trans * F
31
+ E = 0.5 * (C-I)
32
+
33
+ def Pow(a, b):
34
+ return a**b # exp (log(a)*b)
35
+
36
+ def NeoHooke (C):
37
+ return 0.5 * mu * (Trace(C-I) + 2*mu/lam * Pow(Det(C),-lam/2/mu) - 1)
38
+
39
+
40
+
41
+ factor = Parameter(1)
42
+
43
+ a = BilinearForm(fes, symmetric=False)
44
+ a += Variation (NeoHooke(C).Compile()*dx)
45
+ a += Variation ((-factor * InnerProduct(force,u) ).Compile()*dx)
46
+
47
+
48
+ u = GridFunction(fes)
49
+ u.vec[:] = 0
50
+
51
+ res = u.vec.CreateVector()
52
+ w = u.vec.CreateVector()
53
+
54
+
55
+ for loadstep in range(10):
56
+
57
+ print ("loadstep", loadstep)
58
+ factor.Set (loadstep+1)
59
+
60
+ for it in range(5):
61
+ print ("Newton iteration", it)
62
+ print ("energy = ", a.Energy(u.vec))
63
+ a.Apply(u.vec, res)
64
+ a.AssembleLinearization(u.vec)
65
+ inv = a.mat.Inverse(fes.FreeDofs() )
66
+ w.data = inv*res
67
+ print ("err^2 = ", InnerProduct (w,res))
68
+ u.vec.data -= w
69
+
70
+ Draw (u, mesh, "displacement")
71
+ SetVisualization (deformation=True)
72
+ input ("<press a key>")
73
+
74
+
75
+
76
+
@@ -0,0 +1,74 @@
1
+ from ngsolve import *
2
+
3
+ # viscosity
4
+ nu = 0.001
5
+
6
+ # timestepping parameters
7
+ tau = 0.001
8
+ tend = 10
9
+
10
+ from netgen.geom2d import SplineGeometry
11
+ geo = SplineGeometry()
12
+ geo.AddRectangle( (0, 0), (2, 0.41), bcs = ("wall", "outlet", "wall", "inlet"))
13
+ geo.AddCircle ( (0.2, 0.2), r=0.05, leftdomain=0, rightdomain=1, bc="cyl", maxh=0.02)
14
+ mesh = Mesh( geo.GenerateMesh(maxh=0.07))
15
+
16
+ mesh.Curve(3)
17
+
18
+ V = VectorH1(mesh,order=3, dirichlet="wall|cyl|inlet")
19
+ Q = H1(mesh,order=2)
20
+
21
+ X = V*Q
22
+
23
+ u,p = X.TrialFunction()
24
+ v,q = X.TestFunction()
25
+
26
+ stokes = nu*InnerProduct(grad(u), grad(v))+div(u)*q+div(v)*p - 1e-10*p*q
27
+ a = BilinearForm(X, symmetric=True)
28
+ a += stokes*dx
29
+ a.Assemble()
30
+
31
+ # nothing here ...
32
+ f = LinearForm(X)
33
+ f.Assemble()
34
+
35
+ # gridfunction for the solution
36
+ gfu = GridFunction(X)
37
+
38
+ # parabolic inflow at inlet:
39
+ uin = CoefficientFunction( (1.5*4*y*(0.41-y)/(0.41*0.41), 0) )
40
+ gfu.components[0].Set(uin, definedon=mesh.Boundaries("inlet"))
41
+
42
+ # solve Stokes problem for initial conditions:
43
+ inv_stokes = a.mat.Inverse(X.FreeDofs())
44
+
45
+ res = f.vec.CreateVector()
46
+ res.data = f.vec - a.mat*gfu.vec
47
+ gfu.vec.data += inv_stokes * res
48
+
49
+
50
+ # matrix for implicit Euler
51
+ mstar = BilinearForm(X, symmetric=True)
52
+ mstar += (u*v + tau*stokes)*dx
53
+ mstar.Assemble()
54
+ inv = mstar.mat.Inverse(X.FreeDofs(), inverse="sparsecholesky")
55
+
56
+ # the non-linear term
57
+ conv = BilinearForm(X, nonassemble = True)
58
+ conv += (grad(u) * u) * v * dx
59
+
60
+ # for visualization
61
+ Draw (Norm(gfu.components[0]), mesh, "velocity", sd=3)
62
+
63
+ # implicit Euler/explicit Euler splitting method:
64
+ t = 0
65
+ with TaskManager():
66
+ while t < tend:
67
+ print ("t=", t, end="\r")
68
+
69
+ conv.Apply (gfu.vec, res)
70
+ res.data += a.mat*gfu.vec
71
+ gfu.vec.data -= tau * inv * res
72
+
73
+ t = t + tau
74
+ Redraw()