ngsolve 6.2.2501.post83.dev1__cp313-cp313-macosx_10_15_universal2.whl → 6.2.2502.post11.dev1__cp313-cp313-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 (66) hide show
  1. netgen/include/facetfespace.hpp +2 -0
  2. netgen/include/fespace.hpp +4 -2
  3. netgen/include/mptools.hpp +318 -85
  4. netgen/include/ngblas.hpp +14 -0
  5. netgen/include/potentialtools.hpp +20 -0
  6. netgen/include/prolongation.hpp +143 -1
  7. netgen/include/python_ngstd.hpp +1 -0
  8. netgen/include/sparsecholesky.hpp +1 -1
  9. netgen/include/sparsematrix_impl.hpp +71 -5
  10. netgen/include/tangentialfacetfespace.hpp +7 -22
  11. netgen/include/tensor.hpp +1 -1
  12. netgen/libngbla.dylib +0 -0
  13. netgen/libngcomp.dylib +0 -0
  14. netgen/libngfem.dylib +0 -0
  15. netgen/libngla.dylib +0 -0
  16. netgen/libngstd.dylib +0 -0
  17. ngsolve/__init__.pyi +2 -2
  18. ngsolve/cmake/NGSolveConfig.cmake +1 -1
  19. ngsolve/comp/__init__.pyi +11 -1
  20. ngsolve/config/__init__.pyi +7 -7
  21. ngsolve/config/config.py +6 -6
  22. ngsolve/config/config.pyi +7 -7
  23. ngsolve/directsolvers.pyi +1 -1
  24. ngsolve/fem.pyi +33 -1
  25. ngsolve/krylovspace.pyi +2 -2
  26. ngsolve/nonlinearsolvers.pyi +1 -1
  27. ngsolve/timestepping.pyi +3 -3
  28. ngsolve/utils.pyi +7 -2
  29. {ngsolve-6.2.2501.post83.dev1.dist-info → ngsolve-6.2.2502.post11.dev1.dist-info}/METADATA +2 -2
  30. {ngsolve-6.2.2501.post83.dev1.dist-info → ngsolve-6.2.2502.post11.dev1.dist-info}/RECORD +66 -65
  31. {ngsolve-6.2.2501.post83.dev1.data → ngsolve-6.2.2502.post11.dev1.data}/data/Netgen.icns +0 -0
  32. {ngsolve-6.2.2501.post83.dev1.data → ngsolve-6.2.2502.post11.dev1.data}/data/bin/ngscxx +0 -0
  33. {ngsolve-6.2.2501.post83.dev1.data → ngsolve-6.2.2502.post11.dev1.data}/data/bin/ngsld +0 -0
  34. {ngsolve-6.2.2501.post83.dev1.data → ngsolve-6.2.2502.post11.dev1.data}/data/bin/ngsolve.tcl +0 -0
  35. {ngsolve-6.2.2501.post83.dev1.data → ngsolve-6.2.2502.post11.dev1.data}/data/bin/ngspy +0 -0
  36. {ngsolve-6.2.2501.post83.dev1.data → ngsolve-6.2.2502.post11.dev1.data}/data/share/ngsolve/beam.geo +0 -0
  37. {ngsolve-6.2.2501.post83.dev1.data → ngsolve-6.2.2502.post11.dev1.data}/data/share/ngsolve/beam.vol +0 -0
  38. {ngsolve-6.2.2501.post83.dev1.data → ngsolve-6.2.2502.post11.dev1.data}/data/share/ngsolve/chip.in2d +0 -0
  39. {ngsolve-6.2.2501.post83.dev1.data → ngsolve-6.2.2502.post11.dev1.data}/data/share/ngsolve/chip.vol +0 -0
  40. {ngsolve-6.2.2501.post83.dev1.data → ngsolve-6.2.2502.post11.dev1.data}/data/share/ngsolve/coil.geo +0 -0
  41. {ngsolve-6.2.2501.post83.dev1.data → ngsolve-6.2.2502.post11.dev1.data}/data/share/ngsolve/coil.vol +0 -0
  42. {ngsolve-6.2.2501.post83.dev1.data → ngsolve-6.2.2502.post11.dev1.data}/data/share/ngsolve/coilshield.geo +0 -0
  43. {ngsolve-6.2.2501.post83.dev1.data → ngsolve-6.2.2502.post11.dev1.data}/data/share/ngsolve/coilshield.vol +0 -0
  44. {ngsolve-6.2.2501.post83.dev1.data → ngsolve-6.2.2502.post11.dev1.data}/data/share/ngsolve/cube.geo +0 -0
  45. {ngsolve-6.2.2501.post83.dev1.data → ngsolve-6.2.2502.post11.dev1.data}/data/share/ngsolve/cube.vol +0 -0
  46. {ngsolve-6.2.2501.post83.dev1.data → ngsolve-6.2.2502.post11.dev1.data}/data/share/ngsolve/d10_DGdoubleglazing.pde +0 -0
  47. {ngsolve-6.2.2501.post83.dev1.data → ngsolve-6.2.2502.post11.dev1.data}/data/share/ngsolve/d11_chip_nitsche.pde +0 -0
  48. {ngsolve-6.2.2501.post83.dev1.data → ngsolve-6.2.2502.post11.dev1.data}/data/share/ngsolve/d1_square.pde +0 -0
  49. {ngsolve-6.2.2501.post83.dev1.data → ngsolve-6.2.2502.post11.dev1.data}/data/share/ngsolve/d2_chip.pde +0 -0
  50. {ngsolve-6.2.2501.post83.dev1.data → ngsolve-6.2.2502.post11.dev1.data}/data/share/ngsolve/d3_helmholtz.pde +0 -0
  51. {ngsolve-6.2.2501.post83.dev1.data → ngsolve-6.2.2502.post11.dev1.data}/data/share/ngsolve/d4_cube.pde +0 -0
  52. {ngsolve-6.2.2501.post83.dev1.data → ngsolve-6.2.2502.post11.dev1.data}/data/share/ngsolve/d5_beam.pde +0 -0
  53. {ngsolve-6.2.2501.post83.dev1.data → ngsolve-6.2.2502.post11.dev1.data}/data/share/ngsolve/d6_shaft.pde +0 -0
  54. {ngsolve-6.2.2501.post83.dev1.data → ngsolve-6.2.2502.post11.dev1.data}/data/share/ngsolve/d7_coil.pde +0 -0
  55. {ngsolve-6.2.2501.post83.dev1.data → ngsolve-6.2.2502.post11.dev1.data}/data/share/ngsolve/d8_coilshield.pde +0 -0
  56. {ngsolve-6.2.2501.post83.dev1.data → ngsolve-6.2.2502.post11.dev1.data}/data/share/ngsolve/d9_hybridDG.pde +0 -0
  57. {ngsolve-6.2.2501.post83.dev1.data → ngsolve-6.2.2502.post11.dev1.data}/data/share/ngsolve/doubleglazing.in2d +0 -0
  58. {ngsolve-6.2.2501.post83.dev1.data → ngsolve-6.2.2502.post11.dev1.data}/data/share/ngsolve/doubleglazing.vol +0 -0
  59. {ngsolve-6.2.2501.post83.dev1.data → ngsolve-6.2.2502.post11.dev1.data}/data/share/ngsolve/piezo2d40round4.vol.gz +0 -0
  60. {ngsolve-6.2.2501.post83.dev1.data → ngsolve-6.2.2502.post11.dev1.data}/data/share/ngsolve/shaft.geo +0 -0
  61. {ngsolve-6.2.2501.post83.dev1.data → ngsolve-6.2.2502.post11.dev1.data}/data/share/ngsolve/shaft.vol +0 -0
  62. {ngsolve-6.2.2501.post83.dev1.data → ngsolve-6.2.2502.post11.dev1.data}/data/share/ngsolve/square.in2d +0 -0
  63. {ngsolve-6.2.2501.post83.dev1.data → ngsolve-6.2.2502.post11.dev1.data}/data/share/ngsolve/square.vol +0 -0
  64. {ngsolve-6.2.2501.post83.dev1.dist-info → ngsolve-6.2.2502.post11.dev1.dist-info}/LICENSE +0 -0
  65. {ngsolve-6.2.2501.post83.dev1.dist-info → ngsolve-6.2.2502.post11.dev1.dist-info}/WHEEL +0 -0
  66. {ngsolve-6.2.2501.post83.dev1.dist-info → ngsolve-6.2.2502.post11.dev1.dist-info}/top_level.txt +0 -0
netgen/include/ngblas.hpp CHANGED
@@ -655,6 +655,20 @@ namespace ngbla
655
655
  template <bool ADD, ORDERING ord>
656
656
  extern NGS_DLL_HEADER
657
657
  void NgGEMV (Complex s, BareSliceMatrix<double,ord> a, FlatVector<const Complex> x, FlatVector<Complex> y) NETGEN_NOEXCEPT;
658
+
659
+
660
+
661
+ template <bool ADD, ORDERING ord, int S>
662
+ void NgGEMV (Complex s, BareSliceMatrix<double,ord> a, SliceVector<Vec<S,Complex>> x, SliceVector<Vec<S,Complex>> y) NETGEN_NOEXCEPT
663
+ {
664
+ SliceMatrix<Complex> mx(x.Size(), S, S*x.Dist(), x.Data()->Data());
665
+ SliceMatrix<Complex> my(y.Size(), S, S*y.Dist(), y.Data()->Data());
666
+ if constexpr (ADD)
667
+ my += s * a.AddSize(y.Size(), x.Size()) * mx;
668
+ else
669
+ my = s * a.AddSize(y.Size(), x.Size()) * mx;
670
+ }
671
+
658
672
 
659
673
 
660
674
  template <bool ADD, ORDERING ord>
@@ -0,0 +1,20 @@
1
+ #ifndef FILE_POTENTIALS
2
+ #define FILE_POTENTIALS
3
+
4
+ /*
5
+ tools for computing with potentials using multipoles
6
+ */
7
+
8
+
9
+ #include <mptools.hpp>
10
+ #include <meshaccess.hpp>
11
+
12
+
13
+ namespace ngcomp
14
+ {
15
+
16
+ extern void AddCurrentDensity (SingularMLMultiPole<Vec<3,Complex>> & mp, shared_ptr<CoefficientFunction> current, ngcomp::Region reg);
17
+
18
+ }
19
+
20
+ #endif
@@ -8,7 +8,7 @@
8
8
  /*********************************************************************/
9
9
 
10
10
  namespace ngcomp { class NedelecFESpace; }
11
-
11
+ namespace ngla { class SparseFactorization; }
12
12
  namespace ngmg
13
13
  {
14
14
 
@@ -229,6 +229,148 @@ namespace ngmg
229
229
  ///
230
230
  virtual void RestrictInline (int finelevel, BaseVector & v) const override;
231
231
  };
232
+
233
+ class NGS_DLL_HEADER HarmonicProlongation : public Prolongation
234
+ {
235
+ shared_ptr<Prolongation> baseprol;
236
+ weak_ptr<BilinearForm> wbfa;
237
+ Array<shared_ptr<BaseMatrix>> innerinverses;
238
+ Array<size_t> facets_on_level;
239
+ Array<shared_ptr<BitArray>> freedofs;
240
+ string inverse;
241
+ public:
242
+ HarmonicProlongation (shared_ptr<Prolongation> abaseprol,
243
+ shared_ptr<BilinearForm> abfa, string ainverse);
244
+
245
+ virtual void Update (const FESpace & fes) override;
246
+
247
+ virtual size_t GetNDofLevel (int level) override { return baseprol->GetNDofLevel(level); }
248
+
249
+ virtual shared_ptr<SparseMatrix< double >> CreateProlongationMatrix( int finelevel ) const override;
250
+ virtual void ProlongateInline (int finelevel, BaseVector & v) const override;
251
+ virtual void RestrictInline (int finelevel, BaseVector & v) const override;
252
+ };
253
+
254
+
255
+
256
+
257
+
258
+ template <int DIM>
259
+ class FacetProlongation : public Prolongation
260
+ {
261
+ protected:
262
+ shared_ptr<MeshAccess> ma;
263
+
264
+ int dofs_per_facet = -1;
265
+ Array<Array<int>> first_dofs;
266
+ Array<int> prol_class; // which prol to use ?
267
+ Array<size_t> facets_on_level;
268
+
269
+ static constexpr int NUMPROL = (DIM==2) ? 2 : 32;
270
+ array<Matrix<double>,NUMPROL> facetprol;
271
+
272
+ bool haveprols = false;
273
+
274
+ public:
275
+ FacetProlongation (shared_ptr<MeshAccess> ama)
276
+ : ma(ama) { }
277
+
278
+
279
+ virtual shared_ptr<SparseMatrix< double >> CreateProlongationMatrix( int finelevel ) const override
280
+ {
281
+ return nullptr; // or NULL ?
282
+ }
283
+
284
+
285
+ virtual void ProlongateInline (int finelevel, BaseVector & v) const override
286
+ {
287
+ auto fv = v.FV<double>();
288
+ Matrix<double> tmp(facets_on_level[finelevel], dofs_per_facet);
289
+ tmp = 0.0;
290
+
291
+ for (size_t i = 0; i < first_dofs[finelevel-1].Size()-1; i++)
292
+ {
293
+ IntRange r(first_dofs[finelevel-1][i], first_dofs[finelevel-1][i+1]);
294
+ if (r.Size() > 0)
295
+ tmp.Row(i) = fv.Range(r);
296
+ }
297
+
298
+ if constexpr (DIM==2)
299
+ {
300
+ for (int i = facets_on_level[finelevel-1]; i < facets_on_level[finelevel]; i++)
301
+ if (auto parents = get<1>(ma->GetParentEdges(i)); parents[1] == -1)
302
+ {
303
+ int pe = parents[0];
304
+ tmp.Row(i) = facetprol[prol_class[i]] * tmp.Row(pe);
305
+ }
306
+ }
307
+ else
308
+ {
309
+ for (int i = facets_on_level[finelevel-1]; i < facets_on_level[finelevel]; i++)
310
+ if (auto parents = get<1>(ma->GetParentFaces(i)); parents[1] == -1)
311
+ {
312
+ int pe = parents[0];
313
+ tmp.Row(i) = facetprol[prol_class[i]] * tmp.Row(pe);
314
+ }
315
+ }
316
+
317
+ for (size_t i = 0; i < first_dofs[finelevel].Size()-1; i++)
318
+ {
319
+ IntRange r(first_dofs[finelevel][i], first_dofs[finelevel][i+1]);
320
+ if (r.Size() > 0)
321
+ fv.Range(r) = tmp.Row(i);
322
+ }
323
+ }
324
+
325
+ virtual void RestrictInline (int finelevel, BaseVector & v) const override
326
+ {
327
+ auto fv = v.FV<double>();
328
+ Matrix<double> tmp(facets_on_level[finelevel], dofs_per_facet);
329
+ tmp = 0.0;
330
+
331
+ for (size_t i = 0; i < first_dofs[finelevel].Size()-1; i++)
332
+ {
333
+ IntRange r(first_dofs[finelevel][i], first_dofs[finelevel][i+1]);
334
+ if (r.Size() > 0)
335
+ tmp.Row(i) = fv.Range(r);
336
+ }
337
+
338
+
339
+ if constexpr (DIM==2)
340
+ {
341
+ for (int i = facets_on_level[finelevel-1]; i < facets_on_level[finelevel]; i++)
342
+ if (auto parents = get<1>(ma->GetParentEdges(i)); parents[1] == -1)
343
+ {
344
+ int pe = parents[0];
345
+ tmp.Row(pe) += Trans(facetprol[prol_class[i]]) * tmp.Row(i);
346
+ }
347
+ }
348
+ else
349
+ {
350
+ // for (int i = facets_on_level[finelevel-1]; i < facets_on_level[finelevel]; i++)
351
+ for (int i = facets_on_level[finelevel]-1; i >= facets_on_level[finelevel-1]; i--)
352
+ if (auto parents = get<1>(ma->GetParentFaces(i)); parents[1] == -1)
353
+ {
354
+ int pe = parents[0];
355
+ tmp.Row(pe) += Trans(facetprol[prol_class[i]]) * tmp.Row(i);
356
+ tmp.Row(i) = 0.0; // optional, for testing
357
+ }
358
+ }
359
+
360
+ fv = 0.0;
361
+ for (size_t i = 0; i < first_dofs[finelevel-1].Size()-1; i++)
362
+ {
363
+ IntRange r(first_dofs[finelevel-1][i], first_dofs[finelevel-1][i+1]);
364
+ if (r.Size() > 0)
365
+ fv.Range(r) = tmp.Row(i);
366
+ }
367
+
368
+ }
369
+
370
+ };
371
+
372
+
373
+
232
374
  }
233
375
 
234
376
 
@@ -12,6 +12,7 @@
12
12
  #endif
13
13
 
14
14
  #include <pybind11/pybind11.h>
15
+ #include <pybind11/iostream.h>
15
16
  #include <pybind11/eval.h>
16
17
  #include <pybind11/operators.h>
17
18
  #include <pybind11/complex.h>
@@ -34,7 +34,7 @@ namespace ngla
34
34
 
35
35
  void DoArchive(Archive& ar) override;
36
36
 
37
- virtual bool IsComplex() const override { return matrix.lock()->IsComplex(); }
37
+ // virtual bool IsComplex() const override { return matrix.lock()->IsComplex(); }
38
38
 
39
39
  virtual void Smooth (BaseVector & u, const BaseVector & f, BaseVector & y) const;
40
40
 
@@ -51,28 +51,94 @@ namespace ngla
51
51
  FlatArray<TM> val, size_t h, size_t w)
52
52
  {
53
53
  static Timer t("SparseMatrix::CreateFromCOO"); RegionTimer r(t);
54
- Array<int> cnt(h);
54
+ static Timer t1("SparseMatrix::CreateFromCOO 1");
55
+ static Timer t2("SparseMatrix::CreateFromCOO 2");
56
+ static Timer t3("SparseMatrix::CreateFromCOO 3");
55
57
 
56
58
  /*
57
- cnt = 0;
58
- for (auto i : indi) cnt[i]++;
59
- */
59
+ {
60
+ Array<int> cnt(h);
60
61
 
62
+ t1.Start();
61
63
  DynamicTable<int> tab(h);
62
64
  for (size_t i = 0; i < indi.Size(); i++)
63
65
  tab.AddUnique(indi[i], indj[i]);
66
+ t1.Stop();
64
67
  for (size_t i = 0; i < h; i++)
65
68
  cnt[i] = tab.EntrySize(i);
66
69
 
67
70
  auto matrix = make_shared<SparseMatrix<TM>> (cnt, w);
71
+ t2.Start();
68
72
  for (auto k : ngstd::Range(indi))
69
73
  matrix->CreatePosition(indi[k], indj[k]);
74
+ t2.Stop();
70
75
  matrix->SetZero();
71
76
 
77
+ t3.Start();
72
78
  for (auto k : ngstd::Range(indi))
73
79
  (*matrix)(indi[k], indj[k]) += val[k];
80
+ t3.Stop();
81
+ // return matrix;
82
+ }
83
+ */
84
+
85
+ Array<int> cnt(h);
86
+ cnt = 0;
87
+ for (auto i : indi)
88
+ cnt[i]++;
89
+
90
+ Table<int> tab(cnt);
91
+ cnt = 0;
92
+
93
+ for (auto [i,j] : Zip(indi, indj))
94
+ tab[i][cnt[i]++] = j;
95
+
96
+ cnt = 0;
97
+ // for (int i = 0; i < tab.Size(); i++)
98
+ ParallelFor (tab.Size(), [&] (size_t i)
99
+ {
100
+ QuickSort (tab[i]);
101
+
102
+ int prev = -1;
103
+ for (auto j : tab[i])
104
+ {
105
+ if (j != prev) cnt[i]++;
106
+ prev = j;
107
+ }
108
+ });
109
+
110
+ auto matrix = make_shared<SparseMatrix<TM>> (cnt, w);
111
+ t2.Start();
112
+ // for (auto k : ngstd::Range(indi))
113
+ // matrix->CreatePosition(indi[k], indj[k]);
74
114
 
75
- return matrix;
115
+ cnt = 0;
116
+ for (int i = 0; i < tab.Size(); i++)
117
+ {
118
+ int prev = -1;
119
+ for (auto j : tab[i])
120
+ {
121
+ auto cols = matrix->GetRowIndices(i);
122
+ if (j != prev)
123
+ cols[cnt[i]++] = j;
124
+ prev = j;
125
+ }
126
+ }
127
+
128
+ t2.Stop();
129
+ matrix->SetZero();
130
+
131
+ t3.Start();
132
+ /*
133
+ for (auto k : ngstd::Range(indi))
134
+ (*matrix)(indi[k], indj[k]) += val[k];
135
+ */
136
+ ParallelFor (indi.Size(), [&](size_t k)
137
+ {
138
+ AtomicAdd ( (*matrix)(indi[k], indj[k]), val[k]);
139
+ });
140
+ t3.Stop();
141
+ return matrix;
76
142
  }
77
143
 
78
144
 
@@ -16,34 +16,22 @@ namespace ngcomp
16
16
  class NGS_DLL_HEADER TangentialFacetFESpace : public FESpace
17
17
  {
18
18
  protected:
19
- /// Level
20
- // int level;
21
- /// Number of Facets
22
- // int nfacets;
23
- ///
24
- // int ncfacets;
25
- ///
26
- // int nel;
27
-
28
19
  Array<int> first_facet_dof;
29
20
  Array<int> first_inner_dof; // for highest_order_dc
30
- // int ndof_lo;
31
21
 
32
22
  int rel_order;
33
23
 
34
24
  Array<IVec<2> > order_facet;
35
25
  Array<bool> fine_facet;
36
26
 
37
- // int ndof;
38
- // Array<int> ndlevel;
39
27
  bool var_order;
40
28
  bool print;
41
29
 
42
30
  bool highest_order_dc;
43
31
  bool hide_highest_order_dc;
32
+ bool all_dofs_together;
44
33
 
45
34
  public:
46
- ///
47
35
  TangentialFacetFESpace (shared_ptr<MeshAccess> ama, const Flags & flags,
48
36
  bool parseflags = false );
49
37
 
@@ -61,20 +49,11 @@ namespace ngcomp
61
49
  virtual void SetOrder (NodeId ni, int order) override;
62
50
  virtual int GetOrder (NodeId ni) const override;
63
51
 
64
-
65
- // virtual size_t GetNDof() const throw() override { return ndof; }
66
- // virtual size_t GetNDofLevel ( int i ) const override { return ndlevel[i]; }
67
-
68
52
  virtual FlatArray<VorB> GetDualShapeNodes (VorB vb) const override;
69
53
 
70
- // virtual int GetNDofLowOrder () const
71
- // { return ndof_lo; }
72
54
 
73
55
  virtual FiniteElement & GetFE(ElementId ei, Allocator & lh) const override;
74
56
 
75
- // virtual const FiniteElement & GetFE ( int elnr, LocalHeap & lh ) const;
76
- // virtual const FiniteElement & GetSFE ( int selnr, LocalHeap & lh ) const;
77
-
78
57
  virtual void GetFacetDofNrs (int felnr, Array<DofId> & dnums) const;
79
58
 
80
59
  virtual int GetNFacetDofs (int felnr) const;
@@ -90,6 +69,12 @@ namespace ngcomp
90
69
  virtual IVec<2> GetFacetOrder(int fnr) const;
91
70
 
92
71
  virtual int GetFirstFacetDof(int fanr) const;
72
+ const auto & GetFirstFacetDof() const { return first_facet_dof; }
73
+
74
+ IntRange GetFacetDofs (int nr) const
75
+ {
76
+ return IntRange (first_facet_dof[nr], first_facet_dof[nr+1]);
77
+ }
93
78
 
94
79
  virtual bool UsesHighestOrderDiscontinuous() const {return highest_order_dc;};
95
80
 
netgen/include/tensor.hpp CHANGED
@@ -371,7 +371,7 @@ public:
371
371
 
372
372
  ~Tensor()
373
373
  {
374
- delete this->Data();
374
+ delete [] this->Data();
375
375
  }
376
376
 
377
377
  FlatTensor<DIM,T> operator= (double d)
netgen/libngbla.dylib CHANGED
Binary file
netgen/libngcomp.dylib CHANGED
Binary file
netgen/libngfem.dylib CHANGED
Binary file
netgen/libngla.dylib CHANGED
Binary file
netgen/libngstd.dylib CHANGED
Binary file
ngsolve/__init__.pyi CHANGED
@@ -44,8 +44,8 @@ from ngsolve.comp import HDiv
44
44
  from ngsolve.comp import HDivDiv
45
45
  from ngsolve.comp import HDivDivSurface
46
46
  from ngsolve.comp import HDivSurface
47
- from ngsolve.comp import Hidden
48
47
  from ngsolve.comp import Hidden as PrivateSpace
48
+ from ngsolve.comp import Hidden
49
49
  from ngsolve.comp import Integrate
50
50
  from ngsolve.comp import Interpolate
51
51
  from ngsolve.comp import L2
@@ -217,7 +217,7 @@ TET: fem.ET # value = <ET.TET: 20>
217
217
  TRIG: fem.ET # value = <ET.TRIG: 10>
218
218
  VERTEX: fem.NODE_TYPE # value = <NODE_TYPE.VERTEX: 0>
219
219
  VOL: comp.VorB # value = <VorB.VOL: 0>
220
- __version__: str = '6.2.2501-83-gaf867070b'
220
+ __version__: str = '6.2.2502-11-g4d6a78d51'
221
221
  ds: comp.DifferentialSymbol # value = <ngsolve.comp.DifferentialSymbol object>
222
222
  dx: comp.DifferentialSymbol # value = <ngsolve.comp.DifferentialSymbol object>
223
223
  ngsglobals: comp.GlobalVariables # value = <ngsolve.comp.GlobalVariables object>
@@ -1,4 +1,4 @@
1
- set(PACKAGE_VERSION "6.2.2501-83-gaf867070b")
1
+ set(PACKAGE_VERSION "6.2.2502-11-g4d6a78d51")
2
2
  find_package(Netgen CONFIG REQUIRED HINTS
3
3
  ${CMAKE_CURRENT_LIST_DIR}
4
4
  ${CMAKE_CURRENT_LIST_DIR}/..
ngsolve/comp/__init__.pyi CHANGED
@@ -11,7 +11,7 @@ import numpy
11
11
  import pyngcore.pyngcore
12
12
  import typing
13
13
  from . import pml
14
- __all__ = ['APhiHCurlAMG', 'Array_N6ngcomp13COUPLING_TYPEE_S', 'BBBND', 'BBND', 'BDDCPreconditioner', 'BDDCPreconditioner_complex', 'BDDCPreconditioner_double', 'BND', 'BilinearForm', 'BndElementId', 'BoundaryFromVolumeCF', 'COUPLING_TYPE', 'ComponentGridFunction', 'Compress', 'CompressCompound', 'ContactBoundary', 'ConvertOperator', 'DifferentialSymbol', 'Discontinuous', 'DualProxyFunction', 'ElementId', 'ElementRange', 'FESpace', 'FESpaceElement', 'FESpaceElementRange', 'FacetFESpace', 'FacetSurface', 'FlatArray_N6ngcomp13COUPLING_TYPEE_S', 'FromArchiveCF', 'FromArchiveFESpace', 'FromArchiveMesh', 'GlobalInterfaceSpace', 'GlobalSpace', 'GlobalVariables', 'GridFunction', 'GridFunctionC', 'GridFunctionCoefficientFunction', 'GridFunctionD', 'H1', 'H1LumpingFESpace', 'HCurl', 'HCurlAMG', 'HCurlCurl', 'HCurlDiv', 'HDiv', 'HDivDiv', 'HDivDivSurface', 'HDivSurface', 'Hidden', 'Integral', 'Integrate', 'IntegrationRuleSpace', 'IntegrationRuleSpaceSurface', 'Interpolate', 'InterpolateProxy', 'KSpaceCoeffs', 'L2', 'LinearForm', 'LocalPreconditioner', 'MatrixFreeOperator', 'MatrixValued', 'Mesh', 'MeshNode', 'MeshNodeRange', 'MultiGridPreconditioner', 'NGS_Object', 'Ngs_Element', 'NodalFESpace', 'NodeId', 'NodeRange', 'NormalFacetFESpace', 'NormalFacetSurface', 'NumberSpace', 'ORDER_POLICY', 'PatchwiseSolve', 'Periodic', 'PlateauFESpace', 'Preconditioner', 'ProductSpace', 'Prolongate', 'ProlongateCoefficientFunction', 'Prolongation', 'ProxyFunction', 'QuasiPeriodicC', 'QuasiPeriodicD', 'Region', 'RegisterPreconditioner', 'Reorder', 'SetHeapSize', 'SetTestoutFile', 'SumOfIntegrals', 'SurfaceL2', 'SymbolTable_D', 'SymbolTable_sp_D', 'SymbolTable_sp_N5ngfem19CoefficientFunctionE', 'SymbolTable_sp_N6ngcomp10LinearFormE', 'SymbolTable_sp_N6ngcomp12BilinearFormE', 'SymbolTable_sp_N6ngcomp12GridFunctionE', 'SymbolTable_sp_N6ngcomp14PreconditionerE', 'SymbolTable_sp_N6ngcomp7FESpaceE', 'SymbolicBFI', 'SymbolicEnergy', 'SymbolicLFI', 'SymbolicTPBFI', 'TangentialFacetFESpace', 'TangentialSurfaceL2', 'TensorProductFESpace', 'TensorProductIntegrate', 'ToArchive', 'Transfer2StdMesh', 'VOL', 'VTKOutput', 'Variation', 'VectorFacetFESpace', 'VectorFacetSurface', 'VectorH1', 'VectorL2', 'VectorNodalFESpace', 'VectorSurfaceL2', 'VectorValued', 'VorB', 'ngsglobals', 'pml']
14
+ __all__ = ['APhiHCurlAMG', 'AddCurrentDensity', 'Array_N6ngcomp13COUPLING_TYPEE_S', 'BBBND', 'BBND', 'BDDCPreconditioner', 'BDDCPreconditioner_complex', 'BDDCPreconditioner_double', 'BND', 'BilinearForm', 'BndElementId', 'BoundaryFromVolumeCF', 'COUPLING_TYPE', 'ComponentGridFunction', 'Compress', 'CompressCompound', 'ContactBoundary', 'ConvertOperator', 'DifferentialSymbol', 'Discontinuous', 'DualProxyFunction', 'ElementId', 'ElementRange', 'FESpace', 'FESpaceElement', 'FESpaceElementRange', 'FacetFESpace', 'FacetSurface', 'FlatArray_N6ngcomp13COUPLING_TYPEE_S', 'FromArchiveCF', 'FromArchiveFESpace', 'FromArchiveMesh', 'GlobalInterfaceSpace', 'GlobalSpace', 'GlobalVariables', 'GridFunction', 'GridFunctionC', 'GridFunctionCoefficientFunction', 'GridFunctionD', 'H1', 'H1LumpingFESpace', 'HCurl', 'HCurlAMG', 'HCurlCurl', 'HCurlDiv', 'HDiv', 'HDivDiv', 'HDivDivSurface', 'HDivSurface', 'Hidden', 'Integral', 'Integrate', 'IntegrationRuleSpace', 'IntegrationRuleSpaceSurface', 'Interpolate', 'InterpolateProxy', 'KSpaceCoeffs', 'L2', 'LinearForm', 'LocalPreconditioner', 'MatrixFreeOperator', 'MatrixValued', 'Mesh', 'MeshNode', 'MeshNodeRange', 'MultiGridPreconditioner', 'NGS_Object', 'Ngs_Element', 'NodalFESpace', 'NodeId', 'NodeRange', 'NormalFacetFESpace', 'NormalFacetSurface', 'NumberSpace', 'ORDER_POLICY', 'PatchwiseSolve', 'Periodic', 'PlateauFESpace', 'Preconditioner', 'ProductSpace', 'Prolongate', 'ProlongateCoefficientFunction', 'Prolongation', 'ProxyFunction', 'QuasiPeriodicC', 'QuasiPeriodicD', 'Region', 'RegisterPreconditioner', 'Reorder', 'SetHeapSize', 'SetTestoutFile', 'SumOfIntegrals', 'SurfaceL2', 'SymbolTable_D', 'SymbolTable_sp_D', 'SymbolTable_sp_N5ngfem19CoefficientFunctionE', 'SymbolTable_sp_N6ngcomp10LinearFormE', 'SymbolTable_sp_N6ngcomp12BilinearFormE', 'SymbolTable_sp_N6ngcomp12GridFunctionE', 'SymbolTable_sp_N6ngcomp14PreconditionerE', 'SymbolTable_sp_N6ngcomp7FESpaceE', 'SymbolicBFI', 'SymbolicEnergy', 'SymbolicLFI', 'SymbolicTPBFI', 'TangentialFacetFESpace', 'TangentialSurfaceL2', 'TensorProductFESpace', 'TensorProductIntegrate', 'ToArchive', 'Transfer2StdMesh', 'VOL', 'VTKOutput', 'Variation', 'VectorFacetFESpace', 'VectorFacetSurface', 'VectorH1', 'VectorL2', 'VectorNodalFESpace', 'VectorSurfaceL2', 'VectorValued', 'VorB', 'ngsglobals', 'pml']
15
15
  class APhiHCurlAMG(HCurlAMG):
16
16
  """
17
17
 
@@ -938,6 +938,10 @@ class FESpace(NGS_Object):
938
938
  region : ngsolve.comp.Region
939
939
  input region
940
940
  """
941
+ def SetHarmonicProlongation(self, bf: ..., inverse: str = 'sparsecholesky') -> None:
942
+ """
943
+ use harmonic prolongation w.r.t. bilinear-form
944
+ """
941
945
  @typing.overload
942
946
  def SetOrder(self, element_type: ngsolve.fem.ET, order: int) -> None:
943
947
  """
@@ -3103,6 +3107,10 @@ class MultiGridPreconditioner(Preconditioner):
3103
3107
  'block': Block smoother
3104
3108
  coarsetype: string = direct
3105
3109
  How to solve coarse problem.
3110
+ cycle: int = 1
3111
+ multigrid cycle (0 only smoothing, 1..V-cycle, 2..W-cycle.
3112
+ smoothingsteps: int = 1
3113
+ number of (pre and post-)smoothing steps
3106
3114
  coarsesmoothingsteps: int = 1
3107
3115
  If coarsetype is smoothing, then how many smoothingsteps will be done.
3108
3116
  updatealways: bool = False
@@ -5082,6 +5090,8 @@ class VorB:
5082
5090
  @property
5083
5091
  def value(self) -> int:
5084
5092
  ...
5093
+ def AddCurrentDensity(arg0: ngsolve.fem.SingularMLMP3, arg1: ngsolve.fem.CoefficientFunction, arg2: Region) -> None:
5094
+ ...
5085
5095
  def BndElementId(nr: int) -> ElementId:
5086
5096
  """
5087
5097
  Creates an element-id for a boundary element
@@ -24,14 +24,14 @@ NGSOLVE_INSTALL_DIR_INCLUDE: str = 'netgen/include'
24
24
  NGSOLVE_INSTALL_DIR_LIB: str = 'netgen'
25
25
  NGSOLVE_INSTALL_DIR_PYTHON: str = '.'
26
26
  NGSOLVE_INSTALL_DIR_RES: str = 'share'
27
- NGSOLVE_VERSION: str = '6.2.2501-83-gaf867070b'
28
- NGSOLVE_VERSION_GIT: str = 'v6.2.2501-83-gaf867070b'
29
- NGSOLVE_VERSION_HASH: str = 'gaf867070b'
27
+ NGSOLVE_VERSION: str = '6.2.2502-11-g4d6a78d51'
28
+ NGSOLVE_VERSION_GIT: str = 'v6.2.2502-11-g4d6a78d51'
29
+ NGSOLVE_VERSION_HASH: str = 'g4d6a78d51'
30
30
  NGSOLVE_VERSION_MAJOR: str = '6'
31
31
  NGSOLVE_VERSION_MINOR: str = '2'
32
- NGSOLVE_VERSION_PATCH: str = '2501'
33
- NGSOLVE_VERSION_PYTHON: str = '6.2.2501.post83.dev1'
34
- NGSOLVE_VERSION_TWEAK: str = '83'
32
+ NGSOLVE_VERSION_PATCH: str = '2502'
33
+ NGSOLVE_VERSION_PYTHON: str = '6.2.2502.post11.dev1'
34
+ NGSOLVE_VERSION_TWEAK: str = '11'
35
35
  USE_CCACHE: bool = True
36
36
  USE_HYPRE: bool = False
37
37
  USE_LAPACK: bool = True
@@ -40,4 +40,4 @@ USE_MUMPS: bool = False
40
40
  USE_PARDISO: bool = False
41
41
  USE_UMFPACK: bool = True
42
42
  is_python_package: bool = True
43
- version: str = 'v6.2.2501-83-gaf867070b'
43
+ version: str = 'v6.2.2502-11-g4d6a78d51'
ngsolve/config/config.py CHANGED
@@ -29,15 +29,15 @@ NGSOLVE_INSTALL_DIR_INCLUDE = "netgen/include"
29
29
  NGSOLVE_INSTALL_DIR_CMAKE = "ngsolve/cmake"
30
30
  NGSOLVE_INSTALL_DIR_RES = "share"
31
31
 
32
- NGSOLVE_VERSION = "6.2.2501-83-gaf867070b"
33
- NGSOLVE_VERSION_GIT = "v6.2.2501-83-gaf867070b"
34
- NGSOLVE_VERSION_PYTHON = "6.2.2501.post83.dev1"
32
+ NGSOLVE_VERSION = "6.2.2502-11-g4d6a78d51"
33
+ NGSOLVE_VERSION_GIT = "v6.2.2502-11-g4d6a78d51"
34
+ NGSOLVE_VERSION_PYTHON = "6.2.2502.post11.dev1"
35
35
 
36
36
  NGSOLVE_VERSION_MAJOR = "6"
37
37
  NGSOLVE_VERSION_MINOR = "2"
38
- NGSOLVE_VERSION_TWEAK = "83"
39
- NGSOLVE_VERSION_PATCH = "2501"
40
- NGSOLVE_VERSION_HASH = "gaf867070b"
38
+ NGSOLVE_VERSION_TWEAK = "11"
39
+ NGSOLVE_VERSION_PATCH = "2502"
40
+ NGSOLVE_VERSION_HASH = "g4d6a78d51"
41
41
 
42
42
  CMAKE_CXX_COMPILER = "/Library/Developer/CommandLineTools/usr/bin/c++"
43
43
  CMAKE_CUDA_COMPILER = ""
ngsolve/config/config.pyi CHANGED
@@ -26,14 +26,14 @@ NGSOLVE_INSTALL_DIR_INCLUDE: str = 'netgen/include'
26
26
  NGSOLVE_INSTALL_DIR_LIB: str = 'netgen'
27
27
  NGSOLVE_INSTALL_DIR_PYTHON: str = '.'
28
28
  NGSOLVE_INSTALL_DIR_RES: str = 'share'
29
- NGSOLVE_VERSION: str = '6.2.2501-83-gaf867070b'
30
- NGSOLVE_VERSION_GIT: str = 'v6.2.2501-83-gaf867070b'
31
- NGSOLVE_VERSION_HASH: str = 'gaf867070b'
29
+ NGSOLVE_VERSION: str = '6.2.2502-11-g4d6a78d51'
30
+ NGSOLVE_VERSION_GIT: str = 'v6.2.2502-11-g4d6a78d51'
31
+ NGSOLVE_VERSION_HASH: str = 'g4d6a78d51'
32
32
  NGSOLVE_VERSION_MAJOR: str = '6'
33
33
  NGSOLVE_VERSION_MINOR: str = '2'
34
- NGSOLVE_VERSION_PATCH: str = '2501'
35
- NGSOLVE_VERSION_PYTHON: str = '6.2.2501.post83.dev1'
36
- NGSOLVE_VERSION_TWEAK: str = '83'
34
+ NGSOLVE_VERSION_PATCH: str = '2502'
35
+ NGSOLVE_VERSION_PYTHON: str = '6.2.2502.post11.dev1'
36
+ NGSOLVE_VERSION_TWEAK: str = '11'
37
37
  USE_CCACHE: bool = True
38
38
  USE_HYPRE: bool = False
39
39
  USE_LAPACK: bool = True
@@ -42,4 +42,4 @@ USE_MUMPS: bool = False
42
42
  USE_PARDISO: bool = False
43
43
  USE_UMFPACK: bool = True
44
44
  is_python_package: bool = True
45
- version: str = 'v6.2.2501-83-gaf867070b'
45
+ version: str = 'v6.2.2502-11-g4d6a78d51'
ngsolve/directsolvers.pyi CHANGED
@@ -9,7 +9,7 @@ import typing
9
9
  __all__ = ['BaseMatrix', 'BaseVector', 'BilinearForm', 'BitArray', 'SuperLU']
10
10
  class SuperLU(ngsolve.la.BaseMatrix):
11
11
  __firstlineno__: typing.ClassVar[int] = 3
12
- __static_attributes__: typing.ClassVar[tuple] = ('lu', 'fd', 'a', 'freedofs')
12
+ __static_attributes__: typing.ClassVar[tuple] = ('freedofs', 'lu', 'fd', 'a')
13
13
  def Mult(self, x: ngsolve.la.BaseVector, y: ngsolve.la.BaseVector):
14
14
  ...
15
15
  def Update(self):
ngsolve/fem.pyi CHANGED
@@ -8,7 +8,7 @@ import numpy
8
8
  import os
9
9
  import pyngcore.pyngcore
10
10
  import typing
11
- __all__ = ['BFI', 'BSpline', 'BSpline2D', 'BaseMappedIntegrationPoint', 'BlockBFI', 'BlockLFI', 'CELL', 'CacheCF', 'CoefficientFunction', 'Cof', 'CompilePythonModule', 'CompoundBFI', 'CompoundLFI', 'Conj', 'CoordCF', 'CoordinateTrafo', 'Cross', 'Det', 'DifferentialOperator', 'EDGE', 'ELEMENT', 'ET', 'Einsum', 'ElementTopology', 'ElementTransformation', 'FACE', 'FACET', 'FiniteElement', 'GenerateL2ElementCode', 'H1FE', 'HCurlFE', 'HDivDivFE', 'HDivFE', 'HEX', 'Id', 'IfPos', 'IntegrationPoint', 'IntegrationRule', 'Inv', 'L2FE', 'LFI', 'LeviCivitaSymbol', 'LoggingCF', 'MeshPoint', 'MinimizationCF', 'MixedFE', 'NODE_TYPE', 'NewtonCF', 'POINT', 'PRISM', 'PYRAMID', 'Parameter', 'ParameterC', 'PlaceholderCF', 'PointEvaluationFunctional', 'QUAD', 'RegularMLMP', 'RegularMLMultiPoleCF', 'RegularMultiPoleCF', 'SEGM', 'ScalarFE', 'SetPMLParameters', 'SingularMLMP', 'SingularMLMultiPoleCF', 'SingularMultiPoleCF', 'Skew', 'SpecialCFCreator', 'SphericalHarmonicsCF', 'Sphericalharmonics', 'Sym', 'TET', 'TRIG', 'Trace', 'VERTEX', 'VoxelCoefficient', 'Zero', 'acos', 'asin', 'atan', 'atan2', 'ceil', 'cos', 'cosh', 'erf', 'exp', 'floor', 'log', 'pow', 'sin', 'sinh', 'specialcf', 'sqrt', 'tan']
11
+ __all__ = ['BFI', 'BSpline', 'BSpline2D', 'BaseMappedIntegrationPoint', 'BiotSavartCF', 'BiotSavartRegularMLCF', 'BiotSavartSingularMLCF', 'BlockBFI', 'BlockLFI', 'CELL', 'CacheCF', 'CoefficientFunction', 'Cof', 'CompilePythonModule', 'CompoundBFI', 'CompoundLFI', 'Conj', 'CoordCF', 'CoordinateTrafo', 'Cross', 'Det', 'DifferentialOperator', 'EDGE', 'ELEMENT', 'ET', 'Einsum', 'ElementTopology', 'ElementTransformation', 'FACE', 'FACET', 'FiniteElement', 'GenerateL2ElementCode', 'H1FE', 'HCurlFE', 'HDivDivFE', 'HDivFE', 'HEX', 'Id', 'IfPos', 'IntegrationPoint', 'IntegrationRule', 'Inv', 'L2FE', 'LFI', 'LeviCivitaSymbol', 'LoggingCF', 'MeshPoint', 'MinimizationCF', 'MixedFE', 'NODE_TYPE', 'NewtonCF', 'POINT', 'PRISM', 'PYRAMID', 'Parameter', 'ParameterC', 'PlaceholderCF', 'PointEvaluationFunctional', 'QUAD', 'RegularMLMP', 'RegularMLMultiPoleCF', 'RegularMultiPoleCF', 'SEGM', 'ScalarFE', 'SetPMLParameters', 'SingularMLMP', 'SingularMLMP3', 'SingularMLMultiPoleCF', 'SingularMultiPoleCF', 'Skew', 'SpecialCFCreator', 'SphericalHarmonicsCF', 'Sphericalharmonics', 'Sym', 'TET', 'TRIG', 'Trace', 'VERTEX', 'VoxelCoefficient', 'Zero', 'acos', 'asin', 'atan', 'atan2', 'ceil', 'cos', 'cosh', 'erf', 'exp', 'floor', 'log', 'pow', 'sin', 'sinh', 'specialcf', 'sqrt', 'tan']
12
12
  class BFI:
13
13
  """
14
14
 
@@ -242,6 +242,25 @@ class BaseMappedIntegrationPoint:
242
242
  """
243
243
  Transformation of the mapped integration point
244
244
  """
245
+ class BiotSavartCF(CoefficientFunction):
246
+ def AddCurrent(self, sp: ngsolve.bla.Vec3D, ep: ngsolve.bla.Vec3D, j: complex, num: int = 100) -> None:
247
+ ...
248
+ def __init__(self, order: int, kappa: float, center: ngsolve.bla.Vec3D, scale: float = 1.0) -> None:
249
+ ...
250
+ class BiotSavartRegularMLCF(CoefficientFunction):
251
+ def __init__(self, mp: BiotSavartSingularMLCF, center: ngsolve.bla.Vec3D, r: float, order: int = -1) -> None:
252
+ ...
253
+ @property
254
+ def mlmp(self) -> ...:
255
+ ...
256
+ class BiotSavartSingularMLCF(CoefficientFunction):
257
+ def CreateRegularExpansion(self, center: ngsolve.bla.Vec3D, r: float) -> ...:
258
+ ...
259
+ def __init__(self, center: ngsolve.bla.Vec3D, r: float, order: int = -1, kappa: float) -> None:
260
+ ...
261
+ @property
262
+ def mlmp(self) -> SingularMLMP3:
263
+ ...
245
264
  class CoefficientFunction:
246
265
  """
247
266
  A CoefficientFunction (CF) is some function defined on a mesh.
@@ -979,6 +998,8 @@ class PointEvaluationFunctional:
979
998
  class RegularMLMP:
980
999
  def Norm(self) -> float:
981
1000
  ...
1001
+ def Print(self) -> None:
1002
+ ...
982
1003
  def __str__(self) -> str:
983
1004
  ...
984
1005
  class RegularMLMultiPoleCF(CoefficientFunction):
@@ -1060,11 +1081,22 @@ class SingularMLMP:
1060
1081
  ...
1061
1082
  def Norm(self) -> float:
1062
1083
  ...
1084
+ def Print(self) -> None:
1085
+ ...
1063
1086
  def __init__(self, arg0: ngsolve.bla.Vec3D, arg1: float, arg2: int, arg3: float) -> None:
1064
1087
  ...
1065
1088
  def __str__(self) -> str:
1066
1089
  ...
1090
+ class SingularMLMP3:
1091
+ def AddCurrent(self, sp: ngsolve.bla.Vec3D, ep: ngsolve.bla.Vec3D, j: complex, num: int = 100) -> None:
1092
+ ...
1093
+ def Calc(self) -> None:
1094
+ ...
1095
+ def __init__(self, arg0: ngsolve.bla.Vec3D, arg1: float, arg2: int, arg3: float) -> None:
1096
+ ...
1067
1097
  class SingularMLMultiPoleCF(CoefficientFunction):
1098
+ def CreateRegularExpansion(self, center: ngsolve.bla.Vec3D, r: float) -> ...:
1099
+ ...
1068
1100
  def __init__(self, center: ngsolve.bla.Vec3D, r: float, order: int = -1, kappa: float) -> None:
1069
1101
  ...
1070
1102
  @property