ngsolve 6.2.2503__cp39-cp39-macosx_10_15_universal2.whl → 6.2.2504__cp39-cp39-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 (52) hide show
  1. netgen/include/integrator.hpp +4 -16
  2. netgen/include/mp_coefficient.hpp +140 -0
  3. netgen/include/mptools.hpp +42 -161
  4. netgen/include/symbolicintegrator.hpp +1 -0
  5. netgen/libngbla.dylib +0 -0
  6. netgen/libngcomp.dylib +0 -0
  7. netgen/libngfem.dylib +0 -0
  8. netgen/libngla.dylib +0 -0
  9. netgen/libngsbem.dylib +0 -0
  10. netgen/libngstd.dylib +0 -0
  11. ngsolve/__init__.py +1 -0
  12. ngsolve/cmake/NGSolveConfig.cmake +1 -1
  13. ngsolve/config/config.py +5 -5
  14. ngsolve/solve_implementation.py +146 -0
  15. {ngsolve-6.2.2503.dist-info → ngsolve-6.2.2504.dist-info}/METADATA +2 -2
  16. {ngsolve-6.2.2503.dist-info → ngsolve-6.2.2504.dist-info}/RECORD +52 -50
  17. {ngsolve-6.2.2503.data → ngsolve-6.2.2504.data}/data/Netgen.icns +0 -0
  18. {ngsolve-6.2.2503.data → ngsolve-6.2.2504.data}/data/bin/ngscxx +0 -0
  19. {ngsolve-6.2.2503.data → ngsolve-6.2.2504.data}/data/bin/ngsld +0 -0
  20. {ngsolve-6.2.2503.data → ngsolve-6.2.2504.data}/data/bin/ngsolve.tcl +0 -0
  21. {ngsolve-6.2.2503.data → ngsolve-6.2.2504.data}/data/bin/ngspy +0 -0
  22. {ngsolve-6.2.2503.data → ngsolve-6.2.2504.data}/data/share/ngsolve/beam.geo +0 -0
  23. {ngsolve-6.2.2503.data → ngsolve-6.2.2504.data}/data/share/ngsolve/beam.vol +0 -0
  24. {ngsolve-6.2.2503.data → ngsolve-6.2.2504.data}/data/share/ngsolve/chip.in2d +0 -0
  25. {ngsolve-6.2.2503.data → ngsolve-6.2.2504.data}/data/share/ngsolve/chip.vol +0 -0
  26. {ngsolve-6.2.2503.data → ngsolve-6.2.2504.data}/data/share/ngsolve/coil.geo +0 -0
  27. {ngsolve-6.2.2503.data → ngsolve-6.2.2504.data}/data/share/ngsolve/coil.vol +0 -0
  28. {ngsolve-6.2.2503.data → ngsolve-6.2.2504.data}/data/share/ngsolve/coilshield.geo +0 -0
  29. {ngsolve-6.2.2503.data → ngsolve-6.2.2504.data}/data/share/ngsolve/coilshield.vol +0 -0
  30. {ngsolve-6.2.2503.data → ngsolve-6.2.2504.data}/data/share/ngsolve/cube.geo +0 -0
  31. {ngsolve-6.2.2503.data → ngsolve-6.2.2504.data}/data/share/ngsolve/cube.vol +0 -0
  32. {ngsolve-6.2.2503.data → ngsolve-6.2.2504.data}/data/share/ngsolve/d10_DGdoubleglazing.pde +0 -0
  33. {ngsolve-6.2.2503.data → ngsolve-6.2.2504.data}/data/share/ngsolve/d11_chip_nitsche.pde +0 -0
  34. {ngsolve-6.2.2503.data → ngsolve-6.2.2504.data}/data/share/ngsolve/d1_square.pde +0 -0
  35. {ngsolve-6.2.2503.data → ngsolve-6.2.2504.data}/data/share/ngsolve/d2_chip.pde +0 -0
  36. {ngsolve-6.2.2503.data → ngsolve-6.2.2504.data}/data/share/ngsolve/d3_helmholtz.pde +0 -0
  37. {ngsolve-6.2.2503.data → ngsolve-6.2.2504.data}/data/share/ngsolve/d4_cube.pde +0 -0
  38. {ngsolve-6.2.2503.data → ngsolve-6.2.2504.data}/data/share/ngsolve/d5_beam.pde +0 -0
  39. {ngsolve-6.2.2503.data → ngsolve-6.2.2504.data}/data/share/ngsolve/d6_shaft.pde +0 -0
  40. {ngsolve-6.2.2503.data → ngsolve-6.2.2504.data}/data/share/ngsolve/d7_coil.pde +0 -0
  41. {ngsolve-6.2.2503.data → ngsolve-6.2.2504.data}/data/share/ngsolve/d8_coilshield.pde +0 -0
  42. {ngsolve-6.2.2503.data → ngsolve-6.2.2504.data}/data/share/ngsolve/d9_hybridDG.pde +0 -0
  43. {ngsolve-6.2.2503.data → ngsolve-6.2.2504.data}/data/share/ngsolve/doubleglazing.in2d +0 -0
  44. {ngsolve-6.2.2503.data → ngsolve-6.2.2504.data}/data/share/ngsolve/doubleglazing.vol +0 -0
  45. {ngsolve-6.2.2503.data → ngsolve-6.2.2504.data}/data/share/ngsolve/piezo2d40round4.vol.gz +0 -0
  46. {ngsolve-6.2.2503.data → ngsolve-6.2.2504.data}/data/share/ngsolve/shaft.geo +0 -0
  47. {ngsolve-6.2.2503.data → ngsolve-6.2.2504.data}/data/share/ngsolve/shaft.vol +0 -0
  48. {ngsolve-6.2.2503.data → ngsolve-6.2.2504.data}/data/share/ngsolve/square.in2d +0 -0
  49. {ngsolve-6.2.2503.data → ngsolve-6.2.2504.data}/data/share/ngsolve/square.vol +0 -0
  50. {ngsolve-6.2.2503.dist-info → ngsolve-6.2.2504.dist-info}/LICENSE +0 -0
  51. {ngsolve-6.2.2503.dist-info → ngsolve-6.2.2504.dist-info}/WHEEL +0 -0
  52. {ngsolve-6.2.2503.dist-info → ngsolve-6.2.2504.dist-info}/top_level.txt +0 -0
@@ -781,20 +781,14 @@ namespace ngfem
781
781
  const FiniteElement & volumefel2, int LocalFacetNr2,
782
782
  const ElementTransformation & eltrans2, FlatArray<int> & ElVertices2,
783
783
  FlatVector<double> elx, FlatVector<double> ely,
784
- LocalHeap & lh) const
785
- {
786
- throw Exception ("FacetBilinearFormIntegrator::ApplyFacetMatrix for inner facets not implemented!");
787
- }
784
+ LocalHeap & lh) const;
788
785
  virtual void
789
786
  ApplyFacetMatrix (const FiniteElement & volumefel1, int LocalFacetNr1,
790
787
  const ElementTransformation & eltrans1, FlatArray<int> & ElVertices1,
791
788
  const FiniteElement & volumefel2, int LocalFacetNr2,
792
789
  const ElementTransformation & eltrans2, FlatArray<int> & ElVertices2,
793
790
  FlatVector<Complex> elx, FlatVector<Complex> ely,
794
- LocalHeap & lh) const
795
- {
796
- throw Exception ("FacetBilinearFormIntegrator::ApplyFacetMatrix for inner facets not implemented!");
797
- }
791
+ LocalHeap & lh) const;
798
792
 
799
793
 
800
794
  virtual void
@@ -841,19 +835,13 @@ namespace ngfem
841
835
  const ElementTransformation & eltrans, FlatArray<int> & ElVertices,
842
836
  const ElementTransformation & seltrans, FlatArray<int> & SElVertices,
843
837
  FlatVector<double> elx, FlatVector<double> ely,
844
- LocalHeap & lh) const
845
- {
846
- throw Exception ("FacetBilinearFormIntegrator::ApplyFacetMatrix for boundary facets not implemented!");
847
- }
838
+ LocalHeap & lh) const;
848
839
  virtual void
849
840
  ApplyFacetMatrix (const FiniteElement & volumefel, int LocalFacetNr,
850
841
  const ElementTransformation & eltrans, FlatArray<int> & ElVertices,
851
842
  const ElementTransformation & seltrans, FlatArray<int> & SElVertices,
852
843
  FlatVector<Complex> elx, FlatVector<Complex> ely,
853
- LocalHeap & lh) const
854
- {
855
- throw Exception ("FacetBilinearFormIntegrator::ApplyFacetMatrix for boundary facets not implemented!");
856
- }
844
+ LocalHeap & lh) const;
857
845
 
858
846
 
859
847
  // calculate traces in integration points
@@ -0,0 +1,140 @@
1
+ #ifndef MP_COEFFICIENT
2
+ #define MP_COEFFICIENT
3
+
4
+
5
+ #include "mptools.hpp"
6
+
7
+ namespace ngsbem
8
+ {
9
+
10
+
11
+ // ******************** Coefficient Functions *********************
12
+
13
+
14
+ class SphericalHarmonicsCF : public CoefficientFunction
15
+ {
16
+ SphericalHarmonics<Complex> sh;
17
+ public:
18
+ SphericalHarmonicsCF (int order)
19
+ : CoefficientFunction(1, true), sh(order) { }
20
+ Complex & Coef(int n, int m) { return sh.Coef(n,m); }
21
+
22
+ virtual double Evaluate (const BaseMappedIntegrationPoint & ip) const override
23
+ { throw Exception("real eval not available"); }
24
+
25
+ virtual void Evaluate (const BaseMappedIntegrationPoint & mip, FlatVector<Complex> values) const override
26
+ {
27
+ values(0) = sh.Eval(mip.GetPoint());
28
+ }
29
+
30
+ virtual void Evaluate (const BaseMappedIntegrationRule & ir, BareSliceMatrix<Complex> values) const override
31
+ {
32
+ for (int i = 0; i < ir.Size(); i++)
33
+ {
34
+ auto & mip = ir[i];
35
+ values(i,0) = sh.Eval(mip.GetPoint());
36
+ }
37
+ }
38
+
39
+ auto & SH() { return sh; }
40
+ };
41
+
42
+
43
+
44
+ template <typename entry_type> class RegularMLMultiPoleCF;
45
+
46
+
47
+ template <typename RADIAL, typename entry_type=Complex>
48
+ class MultiPoleCF : public CoefficientFunction
49
+ {
50
+ MultiPole<RADIAL, entry_type> mp;
51
+ Vec<3> center;
52
+ public:
53
+ MultiPoleCF (int order, double kappa, Vec<3> acenter, double rtyp = 1)
54
+ : CoefficientFunction(sizeof(entry_type)/sizeof(Complex), true), mp(order, kappa, rtyp), center(acenter) { }
55
+
56
+ entry_type & Coef(int n, int m) { return mp.Coef(n,m); }
57
+ auto & SH() { return mp.SH(); }
58
+ auto & MP() { return mp; }
59
+ Vec<3> Center() const { return center; }
60
+
61
+ virtual double Evaluate (const BaseMappedIntegrationPoint & ip) const override
62
+ { throw Exception("real eval not available"); }
63
+
64
+ virtual void Evaluate (const BaseMappedIntegrationPoint & mip, FlatVector<Complex> values) const override
65
+ {
66
+ if constexpr (std::is_same<entry_type, Complex>())
67
+ values(0) = mp.Eval(mip.GetPoint()-center);
68
+ else
69
+ values = mp.Eval(mip.GetPoint()-center);
70
+ }
71
+
72
+ template <typename TARGET>
73
+ void ShiftZ (double z, MultiPole<TARGET, entry_type> & target) { mp.ShiftZ(z, target); }
74
+
75
+ using CoefficientFunction::Transform;
76
+ template <typename TARGET>
77
+ void Transform (MultiPoleCF<TARGET, entry_type> & target)
78
+ {
79
+ mp.Transform (target.MP(), target.Center()-center);
80
+ }
81
+ };
82
+
83
+ template <typename entry_type>
84
+ class SingularMLMultiPoleCF : public CoefficientFunction
85
+ {
86
+ shared_ptr<SingularMLMultiPole<entry_type>> mlmp;
87
+ public:
88
+ SingularMLMultiPoleCF (Vec<3> center, double r, double kappa)
89
+ : CoefficientFunction(sizeof(entry_type)/sizeof(Complex), true), mlmp{make_shared<SingularMLMultiPole<entry_type>>(center, r, kappa)} { }
90
+
91
+ virtual double Evaluate (const BaseMappedIntegrationPoint & ip) const override
92
+ { throw Exception("real eval not available"); }
93
+
94
+ virtual void Evaluate (const BaseMappedIntegrationPoint & mip, FlatVector<Complex> values) const override
95
+ {
96
+ // values(0) = mlmp->Evaluate(mip.GetPoint());
97
+
98
+ if constexpr (std::is_same<entry_type, Complex>())
99
+ values(0) = mlmp->Evaluate(mip.GetPoint());
100
+ else
101
+ values = mlmp->Evaluate(mip.GetPoint());
102
+
103
+
104
+ }
105
+
106
+ shared_ptr<SingularMLMultiPole<entry_type>> MLMP() const { return mlmp; }
107
+ shared_ptr<RegularMLMultiPoleCF<entry_type>> CreateRegularExpansion(Vec<3> center, double r) const;
108
+ };
109
+
110
+
111
+ template <typename entry_type>
112
+ class RegularMLMultiPoleCF : public CoefficientFunction
113
+ {
114
+ shared_ptr<RegularMLMultiPole<entry_type>> mlmp;
115
+ public:
116
+ RegularMLMultiPoleCF (shared_ptr<SingularMLMultiPoleCF<entry_type>> asingmp, Vec<3> center, double r)
117
+ : CoefficientFunction(sizeof(entry_type)/sizeof(Complex), true), mlmp{make_shared<RegularMLMultiPole<entry_type>>(asingmp->MLMP(), center, r)} { }
118
+ RegularMLMultiPoleCF (shared_ptr<SingularMLMultiPole<entry_type>> asingmp, Vec<3> center, double r)
119
+ : CoefficientFunction(sizeof(entry_type)/sizeof(Complex), true), mlmp{make_shared<RegularMLMultiPole<entry_type>>(asingmp, center, r)} { }
120
+
121
+ virtual double Evaluate (const BaseMappedIntegrationPoint & ip) const override
122
+ { throw Exception("real eval not available"); }
123
+
124
+ virtual void Evaluate (const BaseMappedIntegrationPoint & mip, FlatVector<Complex> values) const override
125
+ {
126
+ // values(0) = mlmp->Evaluate(mip.GetPoint());
127
+
128
+ if constexpr (std::is_same<entry_type, Complex>())
129
+ values(0) = mlmp->Evaluate(mip.GetPoint());
130
+ else
131
+ values = mlmp->Evaluate(mip.GetPoint());
132
+ }
133
+
134
+ shared_ptr<RegularMLMultiPole<entry_type>> MLMP() { return mlmp; }
135
+ };
136
+
137
+
138
+ }
139
+
140
+ #endif
@@ -218,13 +218,11 @@ namespace ngsbem
218
218
  class MPSingular
219
219
  {
220
220
  public:
221
- /*
222
221
  template <typename T>
223
222
  static void Eval (int order, double r, double scale, T && values)
224
223
  {
225
224
  SphericalHankel1(order, r, scale, values);
226
225
  }
227
- */
228
226
 
229
227
  template <typename T>
230
228
  static void Eval (int order, double kappa, double r, double rtyp, T && values)
@@ -235,7 +233,8 @@ namespace ngsbem
235
233
 
236
234
  static double Scale (double kappa, double rtyp)
237
235
  {
238
- return min(1.0, rtyp*kappa);
236
+ // return min(1.0, rtyp*kappa);
237
+ return min(1.0, 0.5*rtyp*kappa);
239
238
  }
240
239
  };
241
240
 
@@ -245,13 +244,11 @@ namespace ngsbem
245
244
  class MPRegular
246
245
  {
247
246
  public:
248
- /*
249
247
  template <typename T>
250
248
  static void Eval (int order, double r, double scale, T && values)
251
249
  {
252
250
  SphericalBessel (order, r, 1.0/scale, values);
253
251
  }
254
- */
255
252
 
256
253
  template <typename T>
257
254
  static void Eval (int order, double kappa, double r, double rtyp, T && values)
@@ -262,7 +259,8 @@ namespace ngsbem
262
259
 
263
260
  static double Scale (double kappa, double rtyp)
264
261
  {
265
- return 1.0/ min(1.0, 0.25*rtyp*kappa);
262
+ // return 1.0/ min(1.0, 0.25*rtyp*kappa);
263
+ return 1.0/ min(1.0, 0.5*rtyp*kappa);
266
264
  }
267
265
 
268
266
  };
@@ -276,12 +274,7 @@ namespace ngsbem
276
274
  SphericalHarmonics<entry_type> sh;
277
275
  double kappa;
278
276
  double rtyp;
279
- // double scale;
280
277
  public:
281
- /*
282
- MultiPole (int aorder, double akappa, double ascale = 1)
283
- : sh(aorder), kappa(akappa), scale(ascale) { }
284
- */
285
278
 
286
279
  MultiPole (int aorder, double akappa, double artyp)
287
280
  : sh(aorder), kappa(akappa), rtyp(artyp) { }
@@ -362,8 +355,8 @@ namespace ngsbem
362
355
  return;
363
356
  }
364
357
 
365
- static Timer t("mptool Transform "+ToString(typeid(RADIAL).name())+ToString(typeid(TARGET).name()));
366
- RegionTimer reg(t);
358
+ // static Timer t("mptool Transform "+ToString(typeid(RADIAL).name())+ToString(typeid(TARGET).name()));
359
+ // RegionTimer reg(t);
367
360
 
368
361
  double len = L2Norm(dist);
369
362
  double theta, phi;
@@ -379,7 +372,10 @@ namespace ngsbem
379
372
  phi = atan2(dist(1), dist(0));
380
373
 
381
374
 
382
- MultiPole<RADIAL,entry_type> tmp(*this);
375
+ // MultiPole<RADIAL,entry_type> tmp{*this};
376
+ MultiPole<RADIAL,entry_type> tmp(Order(), kappa, rtyp);
377
+ tmp.SH().Coefs() = SH().Coefs();
378
+
383
379
  tmp.SH().RotateZ(phi);
384
380
  tmp.SH().RotateY(theta);
385
381
 
@@ -434,11 +430,9 @@ namespace ngsbem
434
430
  Array<tuple<Vec<3>, Vec<3>, Complex,int>> currents;
435
431
  int total_sources;
436
432
 
437
- Node (Vec<3> acenter, double ar, int alevel, int order, double kappa)
438
- : center(acenter), r(ar), level(alevel), mp(MPOrder(ar*kappa), kappa, min(1.0, r*kappa))
439
- // : center(acenter), r(ar), level(alevel), mp(MPOrder(ar*kappa), kappa, 1.0)
433
+ Node (Vec<3> acenter, double ar, int alevel, double akappa)
434
+ : center(acenter), r(ar), level(alevel), mp(MPOrder(ar*akappa), akappa, ar) // min(1.0, ar*akappa))
440
435
  {
441
- // cout << "singml, add node, level = " << level << endl;
442
436
  if (level < nodes_on_level.Size())
443
437
  nodes_on_level[level]++;
444
438
  }
@@ -453,7 +447,7 @@ namespace ngsbem
453
447
  cc(0) += (i&1) ? r/2 : -r/2;
454
448
  cc(1) += (i&2) ? r/2 : -r/2;
455
449
  cc(2) += (i&4) ? r/2 : -r/2;
456
- childs[i] = make_unique<Node> (cc, r/2, level+1, max(mp.SH().Order()/2, 8), mp.Kappa());
450
+ childs[i] = make_unique<Node> (cc, r/2, level+1, mp.Kappa());
457
451
  }
458
452
  }
459
453
 
@@ -473,7 +467,8 @@ namespace ngsbem
473
467
 
474
468
  charges.Append( tuple{x,c} );
475
469
 
476
- if (r*mp.Kappa() < 1e-8) return;
470
+ // if (r*mp.Kappa() < 1e-8) return;
471
+ if (level > 20) return;
477
472
  if (charges.Size() < maxdirect && r*mp.Kappa() < 1)
478
473
  return;
479
474
 
@@ -588,9 +583,17 @@ namespace ngsbem
588
583
  return sum;
589
584
  }
590
585
 
591
- for (auto [x,c] : charges)
592
- if (double rho = L2Norm(p-x); rho > 0)
593
- sum += (1/(4*M_PI))*exp(Complex(0,rho*mp.Kappa())) / rho * c;
586
+ // static Timer t("fmm direct eval"); RegionTimer reg(t);
587
+ if (mp.Kappa() < 1e-8)
588
+ {
589
+ for (auto [x,c] : charges)
590
+ if (double rho = L2Norm(p-x); rho > 0)
591
+ sum += (1/(4*M_PI))*Complex(1,rho*mp.Kappa()) / rho * c;
592
+ }
593
+ else
594
+ for (auto [x,c] : charges)
595
+ if (double rho = L2Norm(p-x); rho > 0)
596
+ sum += (1/(4*M_PI))*exp(Complex(0,rho*mp.Kappa())) / rho * c;
594
597
 
595
598
  for (auto [x,d,c] : dipoles)
596
599
  if (double rho = L2Norm(p-x); rho > 0)
@@ -771,8 +774,8 @@ namespace ngsbem
771
774
  bool havemp = false;
772
775
 
773
776
  public:
774
- SingularMLMultiPole (Vec<3> center, double r, int order, double kappa)
775
- : root(center, r, 0, order, kappa)
777
+ SingularMLMultiPole (Vec<3> center, double r, double kappa)
778
+ : root(center, r, 0, kappa)
776
779
  {
777
780
  nodes_on_level = 0;
778
781
  nodes_on_level[0] = 1;
@@ -842,6 +845,7 @@ namespace ngsbem
842
845
  for (int i = 0; i <= maxlevel; i++)
843
846
  cout << "sing " << i << ": " << nodes_on_level[i] << endl;
844
847
  */
848
+
845
849
  root.CalcTotalSources();
846
850
  root.CalcMP();
847
851
 
@@ -886,8 +890,8 @@ namespace ngsbem
886
890
 
887
891
  Array<const typename SingularMLMultiPole<elem_type>::Node*> singnodes;
888
892
 
889
- Node (Vec<3> acenter, double ar, int alevel, int order, double kappa)
890
- : center(acenter), r(ar), level(alevel), mp(MPOrder(ar*kappa), kappa, 1.0/min(1.0, 0.25*r*kappa))
893
+ Node (Vec<3> acenter, double ar, int alevel, double kappa)
894
+ : center(acenter), r(ar), level(alevel), mp(MPOrder(ar*kappa), kappa, ar) // 1.0/min(1.0, 0.25*r*kappa))
891
895
  // : center(acenter), r(ar), level(alevel), mp(MPOrder(ar*kappa), kappa, 1.0)
892
896
  {
893
897
  if (level < nodes_on_level.Size())
@@ -905,7 +909,7 @@ namespace ngsbem
905
909
  cc(0) += (i&1) ? r/2 : -r/2;
906
910
  cc(1) += (i&2) ? r/2 : -r/2;
907
911
  cc(2) += (i&4) ? r/2 : -r/2;
908
- childs[i] = make_unique<Node> (cc, r/2, level+1, max(mp.SH().Order()/2, 8), mp.Kappa());
912
+ childs[i] = make_unique<Node> (cc, r/2, level+1, mp.Kappa());
909
913
  }
910
914
  }
911
915
 
@@ -1027,7 +1031,7 @@ namespace ngsbem
1027
1031
  sum = mp.Eval(p-center);
1028
1032
 
1029
1033
 
1030
- static Timer t("mptool direct evaluate"); RegionTimer r(t);
1034
+ // static Timer t("mptool direct evaluate"); RegionTimer r(t);
1031
1035
  for (auto sn : singnodes)
1032
1036
  sum += sn->EvaluateMP(p);
1033
1037
 
@@ -1089,7 +1093,8 @@ namespace ngsbem
1089
1093
 
1090
1094
  targets.Append( x );
1091
1095
 
1092
- if (r*mp.Kappa() < 1e-8) return;
1096
+ // if (r*mp.Kappa() < 1e-8) return;
1097
+ if (level > 20) return;
1093
1098
  if (targets.Size() < maxdirect && r*mp.Kappa() < 1)
1094
1099
  return;
1095
1100
 
@@ -1145,8 +1150,8 @@ namespace ngsbem
1145
1150
  shared_ptr<SingularMLMultiPole<elem_type>> singmp;
1146
1151
 
1147
1152
  public:
1148
- RegularMLMultiPole (shared_ptr<SingularMLMultiPole<elem_type>> asingmp, Vec<3> center, double r, int order)
1149
- : root(center, r, 0, order, asingmp->Kappa()), singmp(asingmp)
1153
+ RegularMLMultiPole (shared_ptr<SingularMLMultiPole<elem_type>> asingmp, Vec<3> center, double r)
1154
+ : root(center, r, 0, asingmp->Kappa()), singmp(asingmp)
1150
1155
  {
1151
1156
  if (!singmp->havemp) throw Exception("first call Calc for singular MP");
1152
1157
 
@@ -1175,8 +1180,8 @@ namespace ngsbem
1175
1180
  }
1176
1181
  }
1177
1182
 
1178
- RegularMLMultiPole (Vec<3> center, double r, int order, double kappa)
1179
- : root(center, r, 0, order, kappa)
1183
+ RegularMLMultiPole (Vec<3> center, double r, double kappa)
1184
+ : root(center, r, 0, kappa)
1180
1185
  {
1181
1186
  nodes_on_level = 0;
1182
1187
  nodes_on_level[0] = 1;
@@ -1189,6 +1194,8 @@ namespace ngsbem
1189
1194
 
1190
1195
  void CalcMP(shared_ptr<SingularMLMultiPole<elem_type>> asingmp)
1191
1196
  {
1197
+ static Timer t("mptool regular MLMP"); RegionTimer rg(t);
1198
+
1192
1199
  singmp = asingmp;
1193
1200
 
1194
1201
  root.CalcTotalTargets();
@@ -1205,6 +1212,7 @@ namespace ngsbem
1205
1212
  cout << "reg " << i << ": " << RegularMLMultiPole::nodes_on_level[i] << endl;
1206
1213
  */
1207
1214
 
1215
+ static Timer tloc("mptool regular localize expansion"); RegionTimer rloc(tloc);
1208
1216
  root.LocalizeExpansion(false);
1209
1217
  }
1210
1218
 
@@ -1251,132 +1259,5 @@ namespace ngsbem
1251
1259
 
1252
1260
 
1253
1261
 
1254
- // ******************** Coefficient Functions *********************
1255
-
1256
-
1257
- class SphericalHarmonicsCF : public CoefficientFunction
1258
- {
1259
- SphericalHarmonics<Complex> sh;
1260
- public:
1261
- SphericalHarmonicsCF (int order)
1262
- : CoefficientFunction(1, true), sh(order) { }
1263
- Complex & Coef(int n, int m) { return sh.Coef(n,m); }
1264
-
1265
- virtual double Evaluate (const BaseMappedIntegrationPoint & ip) const override
1266
- { throw Exception("real eval not available"); }
1267
-
1268
- virtual void Evaluate (const BaseMappedIntegrationPoint & mip, FlatVector<Complex> values) const override
1269
- {
1270
- values(0) = sh.Eval(mip.GetPoint());
1271
- }
1272
-
1273
- virtual void Evaluate (const BaseMappedIntegrationRule & ir, BareSliceMatrix<Complex> values) const override
1274
- {
1275
- for (int i = 0; i < ir.Size(); i++)
1276
- {
1277
- auto & mip = ir[i];
1278
- values(i,0) = sh.Eval(mip.GetPoint());
1279
- }
1280
- }
1281
-
1282
- auto & SH() { return sh; }
1283
- };
1284
-
1285
-
1286
-
1287
- template <typename entry_type> class RegularMLMultiPoleCF;
1288
-
1289
-
1290
- template <typename RADIAL, typename entry_type=Complex>
1291
- class MultiPoleCF : public CoefficientFunction
1292
- {
1293
- MultiPole<RADIAL, entry_type> mp;
1294
- Vec<3> center;
1295
- public:
1296
- MultiPoleCF (int order, double kappa, Vec<3> acenter, double scale = 1)
1297
- : CoefficientFunction(sizeof(entry_type)/sizeof(Complex), true), mp(order, kappa, scale), center(acenter) { }
1298
-
1299
- entry_type & Coef(int n, int m) { return mp.Coef(n,m); }
1300
- auto & SH() { return mp.SH(); }
1301
- auto & MP() { return mp; }
1302
- Vec<3> Center() const { return center; }
1303
-
1304
- virtual double Evaluate (const BaseMappedIntegrationPoint & ip) const override
1305
- { throw Exception("real eval not available"); }
1306
-
1307
- virtual void Evaluate (const BaseMappedIntegrationPoint & mip, FlatVector<Complex> values) const override
1308
- {
1309
- if constexpr (std::is_same<entry_type, Complex>())
1310
- values(0) = mp.Eval(mip.GetPoint()-center);
1311
- else
1312
- values = mp.Eval(mip.GetPoint()-center);
1313
- }
1314
-
1315
- template <typename TARGET>
1316
- void ShiftZ (double z, MultiPole<TARGET, entry_type> & target) { mp.ShiftZ(z, target); }
1317
-
1318
- using CoefficientFunction::Transform;
1319
- template <typename TARGET>
1320
- void Transform (MultiPoleCF<TARGET, entry_type> & target)
1321
- {
1322
- mp.Transform (target.MP(), target.Center()-center);
1323
- }
1324
- };
1325
-
1326
- template <typename entry_type>
1327
- class SingularMLMultiPoleCF : public CoefficientFunction
1328
- {
1329
- shared_ptr<SingularMLMultiPole<entry_type>> mlmp;
1330
- public:
1331
- SingularMLMultiPoleCF (Vec<3> center, double r, int order, double kappa)
1332
- : CoefficientFunction(sizeof(entry_type)/sizeof(Complex), true), mlmp{make_shared<SingularMLMultiPole<entry_type>>(center, r, order, kappa)} { }
1333
-
1334
- virtual double Evaluate (const BaseMappedIntegrationPoint & ip) const override
1335
- { throw Exception("real eval not available"); }
1336
-
1337
- virtual void Evaluate (const BaseMappedIntegrationPoint & mip, FlatVector<Complex> values) const override
1338
- {
1339
- // values(0) = mlmp->Evaluate(mip.GetPoint());
1340
-
1341
- if constexpr (std::is_same<entry_type, Complex>())
1342
- values(0) = mlmp->Evaluate(mip.GetPoint());
1343
- else
1344
- values = mlmp->Evaluate(mip.GetPoint());
1345
-
1346
-
1347
- }
1348
-
1349
- shared_ptr<SingularMLMultiPole<entry_type>> MLMP() const { return mlmp; }
1350
- shared_ptr<RegularMLMultiPoleCF<entry_type>> CreateRegularExpansion(Vec<3> center, double r) const;
1351
- };
1352
-
1353
-
1354
- template <typename entry_type>
1355
- class RegularMLMultiPoleCF : public CoefficientFunction
1356
- {
1357
- shared_ptr<RegularMLMultiPole<entry_type>> mlmp;
1358
- public:
1359
- RegularMLMultiPoleCF (shared_ptr<SingularMLMultiPoleCF<entry_type>> asingmp, Vec<3> center, double r, int order)
1360
- : CoefficientFunction(sizeof(entry_type)/sizeof(Complex), true), mlmp{make_shared<RegularMLMultiPole<entry_type>>(asingmp->MLMP(), center, r, order)} { }
1361
- RegularMLMultiPoleCF (shared_ptr<SingularMLMultiPole<entry_type>> asingmp, Vec<3> center, double r, int order)
1362
- : CoefficientFunction(sizeof(entry_type)/sizeof(Complex), true), mlmp{make_shared<RegularMLMultiPole<entry_type>>(asingmp, center, r, order)} { }
1363
-
1364
- virtual double Evaluate (const BaseMappedIntegrationPoint & ip) const override
1365
- { throw Exception("real eval not available"); }
1366
-
1367
- virtual void Evaluate (const BaseMappedIntegrationPoint & mip, FlatVector<Complex> values) const override
1368
- {
1369
- // values(0) = mlmp->Evaluate(mip.GetPoint());
1370
-
1371
- if constexpr (std::is_same<entry_type, Complex>())
1372
- values(0) = mlmp->Evaluate(mip.GetPoint());
1373
- else
1374
- values = mlmp->Evaluate(mip.GetPoint());
1375
- }
1376
-
1377
- shared_ptr<RegularMLMultiPole<entry_type>> MLMP() { return mlmp; }
1378
- };
1379
-
1380
-
1381
1262
  }
1382
1263
  #endif
@@ -604,6 +604,7 @@ public:
604
604
 
605
605
  class SymbolicFacetLinearFormIntegrator : public FacetLinearFormIntegrator
606
606
  {
607
+ protected:
607
608
  shared_ptr<CoefficientFunction> cf;
608
609
  Array<ProxyFunction*> proxies;
609
610
  Array<CoefficientFunction*> cache_cfs;
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/libngsbem.dylib CHANGED
Binary file
netgen/libngstd.dylib CHANGED
Binary file
ngsolve/__init__.py CHANGED
@@ -75,6 +75,7 @@ from .utils import x, y, z, dx, ds, grad, Grad, curl, div, Deviator, PyId, PyTra
75
75
  from . import solvers
76
76
  from . import preconditioners
77
77
  from . import timestepping
78
+ from .solve_implementation import Solve
78
79
 
79
80
  try:
80
81
  from netgen.occ import unit_square, unit_cube
@@ -1,4 +1,4 @@
1
- set(PACKAGE_VERSION "6.2.2503")
1
+ set(PACKAGE_VERSION "6.2.2504")
2
2
  find_package(Netgen CONFIG REQUIRED HINTS
3
3
  ${CMAKE_CURRENT_LIST_DIR}
4
4
  ${CMAKE_CURRENT_LIST_DIR}/..
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.2503"
33
- NGSOLVE_VERSION_GIT = "v6.2.2503-0-ga44fe5348"
34
- NGSOLVE_VERSION_PYTHON = "6.2.2503"
32
+ NGSOLVE_VERSION = "6.2.2504"
33
+ NGSOLVE_VERSION_GIT = "v6.2.2504-0-g7dd7ba8dd"
34
+ NGSOLVE_VERSION_PYTHON = "6.2.2504"
35
35
 
36
36
  NGSOLVE_VERSION_MAJOR = "6"
37
37
  NGSOLVE_VERSION_MINOR = "2"
38
38
  NGSOLVE_VERSION_TWEAK = "0"
39
- NGSOLVE_VERSION_PATCH = "2503"
40
- NGSOLVE_VERSION_HASH = "ga44fe5348"
39
+ NGSOLVE_VERSION_PATCH = "2504"
40
+ NGSOLVE_VERSION_HASH = "g7dd7ba8dd"
41
41
 
42
42
  CMAKE_CXX_COMPILER = "/Library/Developer/CommandLineTools/usr/bin/c++"
43
43
  CMAKE_CUDA_COMPILER = ""
@@ -0,0 +1,146 @@
1
+ import functools
2
+
3
+ from ngsolve import (
4
+ BilinearForm,
5
+ GridFunction,
6
+ CoefficientFunction,
7
+ Region,
8
+ BND,
9
+ Preconditioner,
10
+ )
11
+ from .nonlinearsolvers import NewtonSolver
12
+ from .krylovspace import GMResSolver, LinearSolver
13
+
14
+
15
+ class Dirichlet:
16
+ def __init__(self, cf, region):
17
+ self.cf = cf
18
+ self.region = region
19
+
20
+
21
+ class Application:
22
+ def __init__(self, a: BilinearForm, gf: GridFunction):
23
+ self.a = a
24
+ self.gf = gf
25
+
26
+ def Solve(
27
+ self,
28
+ rhs,
29
+ *args,
30
+ dirichlet = None,
31
+ pre = None,
32
+ printrates: bool = False,
33
+ **kwargs,
34
+ ):
35
+ raise NotImplementedError("Solve method must be implemented in subclasses")
36
+
37
+ def __eq__(self, other):
38
+ return Equation(self, other)
39
+
40
+
41
+ class NonLinearApplication(Application):
42
+ def Solve(
43
+ self,
44
+ rhs=None,
45
+ dirichlet = None,
46
+ printing: bool = False,
47
+ **kwargs,
48
+ ):
49
+ solver_args = {}
50
+
51
+ if rhs is not None and rhs != 0:
52
+ rhs.Assemble()
53
+ solver_args["rhs"] = rhs
54
+ solver = NewtonSolver(self.a, self.gf, **solver_args)
55
+ if dirichlet is not None:
56
+ dirichlet_gf = GridFunction(self.gf.space)
57
+ if isinstance(dirichlet, Dirichlet):
58
+ dirichlet_gf.Set(dirichlet.cf, definedon=dirichlet.region)
59
+ else:
60
+ dirichlet_gf.Set(dirichlet, BND)
61
+ solver.SetDirichlet(dirichlet_gf.vec)
62
+ solver.Solve(**kwargs)
63
+
64
+
65
+ class LinearApplication(Application):
66
+ def Assemble(self):
67
+ if not hasattr(self, "vec"):
68
+ self.vec = self.gf.vec.CreateVector()
69
+ self.a.Apply(self.gf.vec, self.vec)
70
+
71
+ def Solve(
72
+ self,
73
+ rhs,
74
+ *args,
75
+ dirichlet = None,
76
+ pre = None,
77
+ lin_solver=None,
78
+ lin_solver_args = None,
79
+ printrates: bool = False,
80
+ ):
81
+ self.a.Assemble()
82
+ for arg in args:
83
+ if isinstance(arg, Dirichlet) or isinstance(arg, CoefficientFunction):
84
+ assert dirichlet is None, "Only one dirichlet condition can be set"
85
+ dirichlet = arg
86
+ if isinstance(arg, Preconditioner):
87
+ assert pre is None, "Only one preconditioner can be set"
88
+ pre = arg
89
+ if isinstance(arg, type) and issubclass(arg, LinearSolver):
90
+ assert lin_solver is None, "Only one linear solver can be set"
91
+ lin_solver = arg
92
+ rhs.Assemble()
93
+ if dirichlet is not None:
94
+ if isinstance(dirichlet, Dirichlet):
95
+ self.gf.Set(dirichlet.cf, definedon=dirichlet.region)
96
+ else:
97
+ self.gf.Set(dirichlet, BND)
98
+ rhs.vec.data += -self.a.mat * self.gf.vec
99
+ else:
100
+ self.gf.vec[:] = 0.0
101
+ if self.a.condense:
102
+ rhs.vec.data += self.a.harmonic_extension_trans * rhs.vec
103
+ if pre is None and lin_solver is None:
104
+ ainv = self.a.mat.Inverse(self.a.space.FreeDofs(self.a.condense))
105
+ else:
106
+ if lin_solver is None:
107
+ lin_solver = GMResSolver
108
+ if lin_solver_args is None:
109
+ lin_solver_args = {}
110
+ if pre is None:
111
+ freedofs = self.a.space.FreeDofs(self.a.condense)
112
+ else:
113
+ freedofs = None
114
+ if "printrates" not in lin_solver_args:
115
+ lin_solver_args["printrates"] = printrates
116
+ ainv = lin_solver(
117
+ mat=self.a.mat, pre=pre, freedofs=freedofs, **lin_solver_args
118
+ )
119
+ self.gf.vec.data += ainv * rhs.vec
120
+ if self.a.condense:
121
+ self.gf.vec.data += self.a.harmonic_extension * self.gf.vec
122
+ self.gf.vec.data += self.a.inner_solve * rhs.vec
123
+
124
+
125
+ class Equation:
126
+ def __init__(self, lhs, rhs):
127
+ self.lhs = lhs
128
+ self.rhs = rhs
129
+
130
+ @functools.wraps(Application.Solve)
131
+ def Solve(self, *args, **kwargs):
132
+ self.lhs.Solve(self.rhs, *args, **kwargs)
133
+
134
+
135
+ def _create_lin_appl(self, gfu: GridFunction) -> LinearApplication:
136
+ if not isinstance(gfu, GridFunction):
137
+ raise TypeError("gfu must be a GridFunction")
138
+ return LinearApplication(self, gfu)
139
+
140
+
141
+ BilinearForm.__mul__ = _create_lin_appl
142
+
143
+
144
+ @functools.wraps(Application.Solve)
145
+ def Solve(eq: Equation, *args, **kwargs):
146
+ eq.Solve(*args, **kwargs)
@@ -1,13 +1,13 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ngsolve
3
- Version: 6.2.2503
3
+ Version: 6.2.2504
4
4
  Summary: NGSolve
5
5
  Home-page: UNKNOWN
6
6
  Author: The NGSolve team
7
7
  License: LGPL2.1
8
8
  Platform: UNKNOWN
9
9
  License-File: LICENSE
10
- Requires-Dist: netgen-mesher (==6.2.2503)
10
+ Requires-Dist: netgen-mesher (==6.2.2504)
11
11
 
12
12
  UNKNOWN
13
13
 
@@ -1,10 +1,10 @@
1
- netgen/libngbla.dylib,sha256=9eYF8icjdoxTjbf0uFDOCXn8glsJa5-qVQQ3UKOPWFw,5180016
2
- netgen/libngcomp.dylib,sha256=YWSAy216qWEcPXMkS-yvcDDcGBbQVEe3O0UsR1OaS5M,42674848
3
- netgen/libngfem.dylib,sha256=0FfXUny6fgs0U__X6zmxoxdT3-HorxOXfLEsKF1DT6U,51445664
4
- netgen/libngla.dylib,sha256=i9OXuKT4qptd9OA57cHTJxYMhzIk862mtrEfD6h_dJ8,25322752
5
- netgen/libngsbem.dylib,sha256=AbxPJpTZrM2DObmhfI3hWmCDLkZBiit-IbnKsh1gvQ8,4700128
1
+ netgen/libngbla.dylib,sha256=P_lOHDHMSmVpsKrUBDqMQb96LHoWpDBB3ddwhgA28UU,5184176
2
+ netgen/libngcomp.dylib,sha256=vux1pSS85lN6qECmRA9m6QLuyX2GbVoHKSmRtWXR1BA,42711984
3
+ netgen/libngfem.dylib,sha256=2X7Me-ELz_Lgg6Q0By8dOb4MFVrJId3EjdQnp85kDNU,51445776
4
+ netgen/libngla.dylib,sha256=RS5w7IszlBP6LdPxbI9lbvS6SQecGPrqkrqTpe1Syyg,25322752
5
+ netgen/libngsbem.dylib,sha256=5D5oFs0RqjAI-Z6KA-GImZSWcKX6bQALgMVTQootzyE,4557968
6
6
  netgen/libngsolve.dylib,sha256=8WxjhbLTlBQGxquL3v1-c6dcym3Qh5qplK8t0m9rZWM,939456
7
- netgen/libngstd.dylib,sha256=luRLGviTADFbiKdO84aXjJ_V4wRMywzIIwQqVU9Vbr0,922880
7
+ netgen/libngstd.dylib,sha256=RF1olLbrfDvwbEKQkY4QSX9y3eF6ztJJ1zl38ImSf44,922880
8
8
  netgen/include/arnoldi.hpp,sha256=b8mRu9wGyaLa7z6mXCFIhxfW_xcQvsOMD6TqbfYZ05g,1437
9
9
  netgen/include/bandmatrix.hpp,sha256=zwKz89QY53MPsWgNsl0cXEAFKka_W4sXPIO54M3eT80,7778
10
10
  netgen/include/basematrix.hpp,sha256=6YGW07HMH7F2JWXUKOwlGZ2ZvEoP7uCSGihdrzzKPag,28634
@@ -94,7 +94,7 @@ netgen/include/hidden.hpp,sha256=nYQrLY1eO8MiVZWfYLi5Sp8bOwiK4C7ZGPjQToLx_Os,264
94
94
  netgen/include/householder.hpp,sha256=YdSftg0_Nxsj7owID1FlhOyUrecVeOcdZAS9LA-dSV4,5920
95
95
  netgen/include/hypre_ams_precond.hpp,sha256=3OekWNg0VGIW1D7_5iVWiw6aUN4R7VlX3YtU3L4eKVU,3165
96
96
  netgen/include/hypre_precond.hpp,sha256=UjXH52siS1EkY1jWkfcbB1YyTH1y6eDaSnDja3Ty2u8,1845
97
- netgen/include/integrator.hpp,sha256=XWrxwQUnqV2LHc48Yt6KfzZ7BN2_3xnnYM1sAMABG0E,65626
97
+ netgen/include/integrator.hpp,sha256=w3qWz6zijhuCW-tbfya862tHX4JazcY2m8Elf6Rc3Co,65144
98
98
  netgen/include/integratorcf.hpp,sha256=2we_yBJ3VfNxeJktLM5_33omlI7FXb7MJfyWpDRocCA,7866
99
99
  netgen/include/interpolate.hpp,sha256=hhLTubF95erlQ-3iCgSqRVqbCDUeE3f2zBWqIKHPQtI,1640
100
100
  netgen/include/intrule.hpp,sha256=_9a5im2qNmF6dLOSCrp8JMz6M_5GoSG2MCRhegkA1O4,80820
@@ -111,7 +111,8 @@ netgen/include/matrix.hpp,sha256=6Tg9xvyHWRmzrmK_pa15fE_V77y9pof3z78GnyzXmRE,557
111
111
  netgen/include/memusage.hpp,sha256=H-8rWQ8UQDCnOiYQnbwvILPuPoJD8bqwiNGB2QAUa0o,1168
112
112
  netgen/include/meshaccess.hpp,sha256=7K6OgV987dOd-LRlJ5MGLeIjA6VSnfeE3I-hQximURU,47061
113
113
  netgen/include/mgpre.hpp,sha256=zdNozWRSyluOF8E4GLeOR290Yw2wqGYGc1sTTSB5n3U,4825
114
- netgen/include/mptools.hpp,sha256=8ibWZLw-vWjpbPENqbVEKSC__Rg7ywN8AMZPLmmj0es,38838
114
+ netgen/include/mp_coefficient.hpp,sha256=lzFP-XHYnFKDdAbb_4cWqEpCIgk4gwUWxOmwvJvSN3w,4736
115
+ netgen/include/mptools.hpp,sha256=Wh2wxGYmO7iJYCH-B4iiZ5nrwR2bepwjLQ1k-4swCpU,34474
115
116
  netgen/include/multigrid.hpp,sha256=ovl1GXcTfXuYLVVMcFfCKP5sg6diSGlqdjCMMPCgFUo,856
116
117
  netgen/include/multivector.hpp,sha256=nuLxMiq2y6HoH5w9j6ka2BhJjRyREPeEnNFx_x0SMU0,12635
117
118
  netgen/include/mumpsinverse.hpp,sha256=Jaa5NPQzwPo2kSbHijI_LX3tr0qUmVhqVlRM14KeD18,4062
@@ -167,7 +168,7 @@ netgen/include/specialelement.hpp,sha256=iiQaIE-cHbwGX014jET8k-rfb8k1GT6Gs_vsMIB
167
168
  netgen/include/statushandler.hpp,sha256=Lh0Cevr7xnEoFW4QhTlNzEq9brpneGGmjAbv9o1kotY,646
168
169
  netgen/include/stringops.hpp,sha256=QiiQAFqB87FhxuMO_sigJU7L6FHfE3ebBy-cngouf_U,262
169
170
  netgen/include/superluinverse.hpp,sha256=FDSnHdTbVFDsFPF6B56IZJPDQKZx4fp2OubRQjE5_TU,3165
170
- netgen/include/symbolicintegrator.hpp,sha256=7bk-m6p8KVEo9wi6zRBCjhq7iDnEsDuWj-qF4Q6W6rI,36019
171
+ netgen/include/symbolicintegrator.hpp,sha256=KOByp_prcH7IHILwKBSpIGyoePR8Cuf23IDw4ME5ZXk,36032
171
172
  netgen/include/symmetricmatrix.hpp,sha256=YNzHHV9TWt3O-f1l6VAcFeml-KwIUQgMXcBco_Dt0MY,2810
172
173
  netgen/include/tangentialfacetfe.hpp,sha256=qCh6qYnPd_5PEYdEiLmx6-VrIPMJMBaR1UZ44EVk6IM,7267
173
174
  netgen/include/tangentialfacetfespace.hpp,sha256=iwgRIYZhrPdsgUBdheL3XfLOf-VO710a8lC3Unf_WaA,2717
@@ -193,7 +194,7 @@ netgen/include/webgui.hpp,sha256=Mm25CMVB0e_7vpfWOjNLrskMGeSk4CmsHdYH_DJVKek,210
193
194
  ngsolve/TensorProductTools.py,sha256=PKwn8c1LLeqFhPyhWtI01JZNztVz5_5sKQUYdnZgo5w,8353
194
195
  ngsolve/__console.py,sha256=8vkdKt1TaOxfSk-n8-4xeI4ATkaVIggYMEiZjxOtyWY,2889
195
196
  ngsolve/__expr.py,sha256=ZJFhvQ6S14AAwm3dVyEy-ixMwPw_ZOhMnOqyfXNVKnw,4215
196
- ngsolve/__init__.py,sha256=z2CG5eq5x97RUbozHnklsbG4TBder0zZVf6IpufgBzU,5432
197
+ ngsolve/__init__.py,sha256=jiKgjpR98P6_MojCVJKnSRGkr1gbZ0fY3tdLCnoPLec,5472
197
198
  ngsolve/_scikit_build_core_dependencies.py,sha256=3a7XNqFjWNfA4ADwcNA7NhatXcHY2aHf1RuGtaFmmks,735
198
199
  ngsolve/bvp.py,sha256=oRcYhe17uOl3G2zTwf4CYsMDUTcFs0wb4AYu_cKADtk,1987
199
200
  ngsolve/directsolvers.py,sha256=ilZmA6_fQulvPZmstKfuyCFI8cj9neEleqKUHxqFpQw,995
@@ -206,17 +207,18 @@ ngsolve/ngscxx.py,sha256=q3t5DgE3sJazWueas8FTXJ9jZM-LVa9KbGj_RTam6V4,1293
206
207
  ngsolve/ngslib.so,sha256=KCpWZJlPkoeS2OhoDSFPwkNjAhQ2cM84B5Z5Sx4WygM,336856
207
208
  ngsolve/nonlinearsolvers.py,sha256=8Q_CrD9vjdpZRV9sj2Fth7Y_kJJl7djPgarQmTK7Xfw,8216
208
209
  ngsolve/preconditioners.py,sha256=WSr3vnxskLHgnlwFVYpSyWJFpvrDUK6_30tATiBB5V8,208
210
+ ngsolve/solve_implementation.py,sha256=r51oazPIyCSpf1kK1CcRxtcKDnHq0yJTkjctct4Jq6Y,4378
209
211
  ngsolve/solvers.py,sha256=WgZ9X1x9mtQegXDu8VcTjP-wbS2EnrUS96Y8LXqeflw,304
210
212
  ngsolve/timestepping.py,sha256=SLbsgE5pY5tXYTLGlVypk4kS2Ui8GxOwWmKVxqneZRU,8350
211
213
  ngsolve/timing.py,sha256=Xqkq2byJjNNK9vJjHG2O3cMf6xuKIyySjk8yv6Le2T8,3985
212
214
  ngsolve/utils.py,sha256=V2yVF4K3uv1007-DEs_GrzJ3BOOh09c4lDGGR1Xw-PU,4557
213
215
  ngsolve/webgui.py,sha256=Oz6RN1_xQ8d6oMIx-KYIRDnBmlJIgwluCtZZjUOHtCs,24233
214
- ngsolve/cmake/NGSolveConfig.cmake,sha256=U6_1Y5gfgCwyQDSm8JJ2hrFpy2Ek4SVqWYhIahGElAQ,5040
216
+ ngsolve/cmake/NGSolveConfig.cmake,sha256=q7kNFJnvtupS33t8QxV13DFuZw778Rkk62osPKY_YQ4,5040
215
217
  ngsolve/cmake/ngsolve-targets-release.cmake,sha256=2dUHzaaMQX08eT7Tjti0crzp_Ah3oqW86gp5UgSufmw,3426
216
218
  ngsolve/cmake/ngsolve-targets.cmake,sha256=gTZNJzmA9E0Jwva8X7vQwoj4whqhNxTtVuiHfyeNtDw,5889
217
219
  ngsolve/config/__init__.py,sha256=A00lpnUKg-q3y_b-cN3jKF9urkGTGjb2Yz_gGc9WCLs,22
218
220
  ngsolve/config/__main__.py,sha256=m8k2RrXnXR5oYaUna1dwkKNhOZBiM7EyFSE9kIcZKvo,89
219
- ngsolve/config/config.py,sha256=sfjIgNBj5a5x6tQtobnviaFZ8vp_3_WjuyVfSHLA0Gs,2437
221
+ ngsolve/config/config.py,sha256=jrdVUR0whdKnAFFSpGaZr5RJHGAA98KiJaSqHtFOr5w,2437
220
222
  ngsolve/demos/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
221
223
  ngsolve/demos/TensorProduct/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
222
224
  ngsolve/demos/TensorProduct/tp_dg_1d_1d.py,sha256=CrJCkbJNinVYUL3DO-4DnCAMGSAhegNc0QVWiJTk3Js,2109
@@ -248,41 +250,41 @@ ngsolve/demos/mpi/mpi_cmagnet.py,sha256=HuN4lttA2q2kNWss6LZNUKraHqskRQNVEBRjkrU2
248
250
  ngsolve/demos/mpi/mpi_navierstokes.py,sha256=Sct0G6EziYVfeIeSa7_b6r3WiYXcxZekoOGsZQALx-c,2911
249
251
  ngsolve/demos/mpi/mpi_poisson.py,sha256=UvXODjpWtqIgqq7lvMJf3ZEoJZLY1Dck-82R7auiW6I,2468
250
252
  ngsolve/demos/mpi/mpi_timeDG.py,sha256=TPJZ-DwmzOpuAol-fFKeU-R2rJ74MbjOm3DDkQI9BcY,1881
251
- ngsolve-6.2.2503.data/data/Netgen.icns,sha256=Ebqct4LKxLzxdJLwGg0tTUQb1VjLwkKhtmdYhpRhKjg,291475
252
- ngsolve-6.2.2503.data/data/bin/ngscxx,sha256=ELkWfd_zU4SS4gatogC7PjTVMj4mk-PuJ3Pq2zCUJa8,1751
253
- ngsolve-6.2.2503.data/data/bin/ngsld,sha256=50UErkFWLTocn8GtZDTkUWmPTIqsoK5lcfBGwyP0Vnc,557
254
- ngsolve-6.2.2503.data/data/bin/ngsolve.tcl,sha256=SSBYLyp4zgl6eM17LXIiLoj1Doy-h2s4EZg6oKi6ucA,20995
255
- ngsolve-6.2.2503.data/data/bin/ngspy,sha256=KEtzflkZPs86Jnf7knSPWZqLlX70W7P1iyoyxbzMsec,104
256
- ngsolve-6.2.2503.data/data/share/ngsolve/beam.geo,sha256=EtxklGAIo6SxZlHHC_FZHoQGZqZUDGJQSheEMFO-bJ8,387
257
- ngsolve-6.2.2503.data/data/share/ngsolve/beam.vol,sha256=aotG4VA7sIgAsPQsYkzbMP1Jta_TddG2gMCblkSPkqc,13594
258
- ngsolve-6.2.2503.data/data/share/ngsolve/chip.in2d,sha256=g6C-mcoD8-q9JtZpuh4mf4iFEZUIGvvivp4C5YYMlAw,551
259
- ngsolve-6.2.2503.data/data/share/ngsolve/chip.vol,sha256=if0yLn8E3P4mZ_X5sBcrEIp2C4ZhMysGROtB1YCkJHI,27897
260
- ngsolve-6.2.2503.data/data/share/ngsolve/coil.geo,sha256=PVD4I9ztZowKwNOUrjnoOP7Tj2KG9J0UCJFRS9EhlxU,364
261
- ngsolve-6.2.2503.data/data/share/ngsolve/coil.vol,sha256=IOZe4oPxMUa9vBGJWN4LG9M79XAruY23S2rtAh_2_98,144724
262
- ngsolve-6.2.2503.data/data/share/ngsolve/coilshield.geo,sha256=lCUDCAhfowBttSGEY_giyY0xEFInAbgVfIPwSWBb504,605
263
- ngsolve-6.2.2503.data/data/share/ngsolve/coilshield.vol,sha256=2Dq5VCX7dqGxo_ExtUhI716I-SnxhLGPawW29IR9nYY,162397
264
- ngsolve-6.2.2503.data/data/share/ngsolve/cube.geo,sha256=kbBNVUYVSf1ogV7-Xf31KXju3LCUIPaDLfvwZHMgddI,386
265
- ngsolve-6.2.2503.data/data/share/ngsolve/cube.vol,sha256=54108a3RvrTUOJSFltxUY8iiNzyWoBTtNrWM0kufj7c,90295
266
- ngsolve-6.2.2503.data/data/share/ngsolve/d10_DGdoubleglazing.pde,sha256=bPQAvbYlyvCfLzk9cOzjXDn94UFC_vBCONl7fEIaMVs,1304
267
- ngsolve-6.2.2503.data/data/share/ngsolve/d11_chip_nitsche.pde,sha256=Mq3Ap63mWqjQyXsASFAlkRQ0AWxBlY3BYYejTYd-lwg,1101
268
- ngsolve-6.2.2503.data/data/share/ngsolve/d1_square.pde,sha256=ysOroxhoAOePmB_Aswps9iGjA2qV5435iu3hOnSvN8M,1029
269
- ngsolve-6.2.2503.data/data/share/ngsolve/d2_chip.pde,sha256=AowiGbuAWEdyFUB3d1LlZeQ7rarbkqIYsj1QcWc89-A,950
270
- ngsolve-6.2.2503.data/data/share/ngsolve/d3_helmholtz.pde,sha256=nG0HxrxboI2qGoR5_LNZt7RYB7ji2o5jtkyIqTFR4y8,568
271
- ngsolve-6.2.2503.data/data/share/ngsolve/d4_cube.pde,sha256=-C4RgoVtBXZu7XHCwZy7F7pr_PGNGcRwWCFzBppq1mQ,1033
272
- ngsolve-6.2.2503.data/data/share/ngsolve/d5_beam.pde,sha256=QOYC7YN7LdcjSFeLdJu1Tlfi-lmsVsa7b9G6qoCsGo8,1985
273
- ngsolve-6.2.2503.data/data/share/ngsolve/d6_shaft.pde,sha256=Iua3INfuIUeaBk21qNg4u5KZt__H1B8BZUsy5frjhdY,1901
274
- ngsolve-6.2.2503.data/data/share/ngsolve/d7_coil.pde,sha256=-ELH2obynMJcvSOqoYT1OThXcllIcdss0ZrklLSimZw,1200
275
- ngsolve-6.2.2503.data/data/share/ngsolve/d8_coilshield.pde,sha256=WUUulvd3dsedB25sFVQgU7FgZ3B7BkbxgkXTEBglk1w,1141
276
- ngsolve-6.2.2503.data/data/share/ngsolve/d9_hybridDG.pde,sha256=drLxnz1GvCEeme-FV772cGbS-YTgeUB4G5DrbkLdapw,1479
277
- ngsolve-6.2.2503.data/data/share/ngsolve/doubleglazing.in2d,sha256=bKn7m7eCcoLimGgoO3nxhiu7Mm0lIRnbx0TJh5dC1I0,506
278
- ngsolve-6.2.2503.data/data/share/ngsolve/doubleglazing.vol,sha256=Eg-H6nl2Hd5Nr593SFCCLVTDl25kIXuddrWpd7xlrP8,34987
279
- ngsolve-6.2.2503.data/data/share/ngsolve/piezo2d40round4.vol.gz,sha256=RuxM0vtYljoAImOH6U6avt0LmWaUbGNao37n8p_Yd1w,496477
280
- ngsolve-6.2.2503.data/data/share/ngsolve/shaft.geo,sha256=aPbk4EItJSLN_PjpOejnijk74y53QBW-IPCXHvLNlVs,2434
281
- ngsolve-6.2.2503.data/data/share/ngsolve/shaft.vol,sha256=fT8qu1L-p0MkI-l3WVisKG52W5FCzO_NzXaCvMJT1V4,270450
282
- ngsolve-6.2.2503.data/data/share/ngsolve/square.in2d,sha256=evpVgNNzReABv6bIs4J_r1OFeedMppoS-TEzE-tfKgY,192
283
- ngsolve-6.2.2503.data/data/share/ngsolve/square.vol,sha256=IXIHYmq85hkFsMVZ_vEVthUnd0YTQWE4jRegjW8_ImI,9162
284
- ngsolve-6.2.2503.dist-info/LICENSE,sha256=oZDcnIBDdV2Q-LCnX6ZrnkLUr0yYC_XdxjPwEk2zzuc,26430
285
- ngsolve-6.2.2503.dist-info/METADATA,sha256=3cHMQ0EOe22V3-dMmlwwnCqb1pvoSrezwxu3sn7GPwo,224
286
- ngsolve-6.2.2503.dist-info/WHEEL,sha256=GUjFiIxJsa64p6UL_1XdSua8mJHV9PIo6rgmnfjsOyw,108
287
- ngsolve-6.2.2503.dist-info/top_level.txt,sha256=1llU44DxNIP85uPT4RChsIuV3h2d0_5j0Ui_Df5vV8E,15
288
- ngsolve-6.2.2503.dist-info/RECORD,,
253
+ ngsolve-6.2.2504.data/data/Netgen.icns,sha256=Ebqct4LKxLzxdJLwGg0tTUQb1VjLwkKhtmdYhpRhKjg,291475
254
+ ngsolve-6.2.2504.data/data/bin/ngscxx,sha256=ELkWfd_zU4SS4gatogC7PjTVMj4mk-PuJ3Pq2zCUJa8,1751
255
+ ngsolve-6.2.2504.data/data/bin/ngsld,sha256=50UErkFWLTocn8GtZDTkUWmPTIqsoK5lcfBGwyP0Vnc,557
256
+ ngsolve-6.2.2504.data/data/bin/ngsolve.tcl,sha256=SSBYLyp4zgl6eM17LXIiLoj1Doy-h2s4EZg6oKi6ucA,20995
257
+ ngsolve-6.2.2504.data/data/bin/ngspy,sha256=KEtzflkZPs86Jnf7knSPWZqLlX70W7P1iyoyxbzMsec,104
258
+ ngsolve-6.2.2504.data/data/share/ngsolve/beam.geo,sha256=EtxklGAIo6SxZlHHC_FZHoQGZqZUDGJQSheEMFO-bJ8,387
259
+ ngsolve-6.2.2504.data/data/share/ngsolve/beam.vol,sha256=aotG4VA7sIgAsPQsYkzbMP1Jta_TddG2gMCblkSPkqc,13594
260
+ ngsolve-6.2.2504.data/data/share/ngsolve/chip.in2d,sha256=g6C-mcoD8-q9JtZpuh4mf4iFEZUIGvvivp4C5YYMlAw,551
261
+ ngsolve-6.2.2504.data/data/share/ngsolve/chip.vol,sha256=if0yLn8E3P4mZ_X5sBcrEIp2C4ZhMysGROtB1YCkJHI,27897
262
+ ngsolve-6.2.2504.data/data/share/ngsolve/coil.geo,sha256=PVD4I9ztZowKwNOUrjnoOP7Tj2KG9J0UCJFRS9EhlxU,364
263
+ ngsolve-6.2.2504.data/data/share/ngsolve/coil.vol,sha256=IOZe4oPxMUa9vBGJWN4LG9M79XAruY23S2rtAh_2_98,144724
264
+ ngsolve-6.2.2504.data/data/share/ngsolve/coilshield.geo,sha256=lCUDCAhfowBttSGEY_giyY0xEFInAbgVfIPwSWBb504,605
265
+ ngsolve-6.2.2504.data/data/share/ngsolve/coilshield.vol,sha256=2Dq5VCX7dqGxo_ExtUhI716I-SnxhLGPawW29IR9nYY,162397
266
+ ngsolve-6.2.2504.data/data/share/ngsolve/cube.geo,sha256=kbBNVUYVSf1ogV7-Xf31KXju3LCUIPaDLfvwZHMgddI,386
267
+ ngsolve-6.2.2504.data/data/share/ngsolve/cube.vol,sha256=54108a3RvrTUOJSFltxUY8iiNzyWoBTtNrWM0kufj7c,90295
268
+ ngsolve-6.2.2504.data/data/share/ngsolve/d10_DGdoubleglazing.pde,sha256=bPQAvbYlyvCfLzk9cOzjXDn94UFC_vBCONl7fEIaMVs,1304
269
+ ngsolve-6.2.2504.data/data/share/ngsolve/d11_chip_nitsche.pde,sha256=Mq3Ap63mWqjQyXsASFAlkRQ0AWxBlY3BYYejTYd-lwg,1101
270
+ ngsolve-6.2.2504.data/data/share/ngsolve/d1_square.pde,sha256=ysOroxhoAOePmB_Aswps9iGjA2qV5435iu3hOnSvN8M,1029
271
+ ngsolve-6.2.2504.data/data/share/ngsolve/d2_chip.pde,sha256=AowiGbuAWEdyFUB3d1LlZeQ7rarbkqIYsj1QcWc89-A,950
272
+ ngsolve-6.2.2504.data/data/share/ngsolve/d3_helmholtz.pde,sha256=nG0HxrxboI2qGoR5_LNZt7RYB7ji2o5jtkyIqTFR4y8,568
273
+ ngsolve-6.2.2504.data/data/share/ngsolve/d4_cube.pde,sha256=-C4RgoVtBXZu7XHCwZy7F7pr_PGNGcRwWCFzBppq1mQ,1033
274
+ ngsolve-6.2.2504.data/data/share/ngsolve/d5_beam.pde,sha256=QOYC7YN7LdcjSFeLdJu1Tlfi-lmsVsa7b9G6qoCsGo8,1985
275
+ ngsolve-6.2.2504.data/data/share/ngsolve/d6_shaft.pde,sha256=Iua3INfuIUeaBk21qNg4u5KZt__H1B8BZUsy5frjhdY,1901
276
+ ngsolve-6.2.2504.data/data/share/ngsolve/d7_coil.pde,sha256=-ELH2obynMJcvSOqoYT1OThXcllIcdss0ZrklLSimZw,1200
277
+ ngsolve-6.2.2504.data/data/share/ngsolve/d8_coilshield.pde,sha256=WUUulvd3dsedB25sFVQgU7FgZ3B7BkbxgkXTEBglk1w,1141
278
+ ngsolve-6.2.2504.data/data/share/ngsolve/d9_hybridDG.pde,sha256=drLxnz1GvCEeme-FV772cGbS-YTgeUB4G5DrbkLdapw,1479
279
+ ngsolve-6.2.2504.data/data/share/ngsolve/doubleglazing.in2d,sha256=bKn7m7eCcoLimGgoO3nxhiu7Mm0lIRnbx0TJh5dC1I0,506
280
+ ngsolve-6.2.2504.data/data/share/ngsolve/doubleglazing.vol,sha256=Eg-H6nl2Hd5Nr593SFCCLVTDl25kIXuddrWpd7xlrP8,34987
281
+ ngsolve-6.2.2504.data/data/share/ngsolve/piezo2d40round4.vol.gz,sha256=RuxM0vtYljoAImOH6U6avt0LmWaUbGNao37n8p_Yd1w,496477
282
+ ngsolve-6.2.2504.data/data/share/ngsolve/shaft.geo,sha256=aPbk4EItJSLN_PjpOejnijk74y53QBW-IPCXHvLNlVs,2434
283
+ ngsolve-6.2.2504.data/data/share/ngsolve/shaft.vol,sha256=fT8qu1L-p0MkI-l3WVisKG52W5FCzO_NzXaCvMJT1V4,270450
284
+ ngsolve-6.2.2504.data/data/share/ngsolve/square.in2d,sha256=evpVgNNzReABv6bIs4J_r1OFeedMppoS-TEzE-tfKgY,192
285
+ ngsolve-6.2.2504.data/data/share/ngsolve/square.vol,sha256=IXIHYmq85hkFsMVZ_vEVthUnd0YTQWE4jRegjW8_ImI,9162
286
+ ngsolve-6.2.2504.dist-info/LICENSE,sha256=oZDcnIBDdV2Q-LCnX6ZrnkLUr0yYC_XdxjPwEk2zzuc,26430
287
+ ngsolve-6.2.2504.dist-info/METADATA,sha256=aBLyB711DgFSHwVDaRbO1x_X8BhFxzCitOeHWE25UFo,224
288
+ ngsolve-6.2.2504.dist-info/WHEEL,sha256=GUjFiIxJsa64p6UL_1XdSua8mJHV9PIo6rgmnfjsOyw,108
289
+ ngsolve-6.2.2504.dist-info/top_level.txt,sha256=1llU44DxNIP85uPT4RChsIuV3h2d0_5j0Ui_Df5vV8E,15
290
+ ngsolve-6.2.2504.dist-info/RECORD,,