ngsolve 6.2.2502.post11.dev1__cp312-cp312-win_amd64.whl → 6.2.2504__cp312-cp312-win_amd64.whl

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

Potentially problematic release.


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

Files changed (48) hide show
  1. netgen/include/integrator.hpp +4 -16
  2. netgen/include/intrules_SauterSchwab.hpp +25 -0
  3. netgen/include/mp_coefficient.hpp +140 -0
  4. netgen/include/mptools.hpp +98 -165
  5. netgen/include/potentialtools.hpp +1 -1
  6. netgen/include/symbolicintegrator.hpp +1 -0
  7. netgen/lib/libngsolve.lib +0 -0
  8. netgen/libngsolve.dll +0 -0
  9. ngsolve/__init__.py +1 -0
  10. ngsolve/cmake/NGSolveConfig.cmake +5 -5
  11. ngsolve/cmake/ngsolve-targets.cmake +9 -2
  12. ngsolve/config/config.py +6 -6
  13. ngsolve/ngslib.pyd +0 -0
  14. ngsolve/solve_implementation.py +146 -0
  15. {ngsolve-6.2.2502.post11.dev1.dist-info → ngsolve-6.2.2504.dist-info}/METADATA +2 -2
  16. {ngsolve-6.2.2502.post11.dev1.dist-info → ngsolve-6.2.2504.dist-info}/RECORD +48 -45
  17. {ngsolve-6.2.2502.post11.dev1.data → ngsolve-6.2.2504.data}/data/Scripts/ngsolve.tcl +0 -0
  18. {ngsolve-6.2.2502.post11.dev1.data → ngsolve-6.2.2504.data}/data/share/ngsolve/beam.geo +0 -0
  19. {ngsolve-6.2.2502.post11.dev1.data → ngsolve-6.2.2504.data}/data/share/ngsolve/beam.vol +0 -0
  20. {ngsolve-6.2.2502.post11.dev1.data → ngsolve-6.2.2504.data}/data/share/ngsolve/chip.in2d +0 -0
  21. {ngsolve-6.2.2502.post11.dev1.data → ngsolve-6.2.2504.data}/data/share/ngsolve/chip.vol +0 -0
  22. {ngsolve-6.2.2502.post11.dev1.data → ngsolve-6.2.2504.data}/data/share/ngsolve/coil.geo +0 -0
  23. {ngsolve-6.2.2502.post11.dev1.data → ngsolve-6.2.2504.data}/data/share/ngsolve/coil.vol +0 -0
  24. {ngsolve-6.2.2502.post11.dev1.data → ngsolve-6.2.2504.data}/data/share/ngsolve/coilshield.geo +0 -0
  25. {ngsolve-6.2.2502.post11.dev1.data → ngsolve-6.2.2504.data}/data/share/ngsolve/coilshield.vol +0 -0
  26. {ngsolve-6.2.2502.post11.dev1.data → ngsolve-6.2.2504.data}/data/share/ngsolve/cube.geo +0 -0
  27. {ngsolve-6.2.2502.post11.dev1.data → ngsolve-6.2.2504.data}/data/share/ngsolve/cube.vol +0 -0
  28. {ngsolve-6.2.2502.post11.dev1.data → ngsolve-6.2.2504.data}/data/share/ngsolve/d10_DGdoubleglazing.pde +0 -0
  29. {ngsolve-6.2.2502.post11.dev1.data → ngsolve-6.2.2504.data}/data/share/ngsolve/d11_chip_nitsche.pde +0 -0
  30. {ngsolve-6.2.2502.post11.dev1.data → ngsolve-6.2.2504.data}/data/share/ngsolve/d1_square.pde +0 -0
  31. {ngsolve-6.2.2502.post11.dev1.data → ngsolve-6.2.2504.data}/data/share/ngsolve/d2_chip.pde +0 -0
  32. {ngsolve-6.2.2502.post11.dev1.data → ngsolve-6.2.2504.data}/data/share/ngsolve/d3_helmholtz.pde +0 -0
  33. {ngsolve-6.2.2502.post11.dev1.data → ngsolve-6.2.2504.data}/data/share/ngsolve/d4_cube.pde +0 -0
  34. {ngsolve-6.2.2502.post11.dev1.data → ngsolve-6.2.2504.data}/data/share/ngsolve/d5_beam.pde +0 -0
  35. {ngsolve-6.2.2502.post11.dev1.data → ngsolve-6.2.2504.data}/data/share/ngsolve/d6_shaft.pde +0 -0
  36. {ngsolve-6.2.2502.post11.dev1.data → ngsolve-6.2.2504.data}/data/share/ngsolve/d7_coil.pde +0 -0
  37. {ngsolve-6.2.2502.post11.dev1.data → ngsolve-6.2.2504.data}/data/share/ngsolve/d8_coilshield.pde +0 -0
  38. {ngsolve-6.2.2502.post11.dev1.data → ngsolve-6.2.2504.data}/data/share/ngsolve/d9_hybridDG.pde +0 -0
  39. {ngsolve-6.2.2502.post11.dev1.data → ngsolve-6.2.2504.data}/data/share/ngsolve/doubleglazing.in2d +0 -0
  40. {ngsolve-6.2.2502.post11.dev1.data → ngsolve-6.2.2504.data}/data/share/ngsolve/doubleglazing.vol +0 -0
  41. {ngsolve-6.2.2502.post11.dev1.data → ngsolve-6.2.2504.data}/data/share/ngsolve/piezo2d40round4.vol.gz +0 -0
  42. {ngsolve-6.2.2502.post11.dev1.data → ngsolve-6.2.2504.data}/data/share/ngsolve/shaft.geo +0 -0
  43. {ngsolve-6.2.2502.post11.dev1.data → ngsolve-6.2.2504.data}/data/share/ngsolve/shaft.vol +0 -0
  44. {ngsolve-6.2.2502.post11.dev1.data → ngsolve-6.2.2504.data}/data/share/ngsolve/square.in2d +0 -0
  45. {ngsolve-6.2.2502.post11.dev1.data → ngsolve-6.2.2504.data}/data/share/ngsolve/square.vol +0 -0
  46. {ngsolve-6.2.2502.post11.dev1.dist-info → ngsolve-6.2.2504.dist-info}/WHEEL +0 -0
  47. {ngsolve-6.2.2502.post11.dev1.dist-info → ngsolve-6.2.2504.dist-info}/licenses/LICENSE +0 -0
  48. {ngsolve-6.2.2502.post11.dev1.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,25 @@
1
+ #ifndef INTRULES_HPP
2
+ #define INTRULES_HPP
3
+
4
+ #include <bla.hpp>
5
+
6
+ namespace ngsbem
7
+ {
8
+ using namespace ngbla;
9
+
10
+ // x, y in triangle [(0,0), (1,0), (0,1)]
11
+ tuple<Array<Vec<2>>, Array<Vec<2>>, Array<double>> IdenticPanelIntegrationRule (int order);
12
+
13
+
14
+ // x, y in triangle [(0,0), (1,0), (0,1)]
15
+ // x=(0,0) and y=(0,0) are common vertices
16
+ tuple<Array<Vec<2>>, Array<Vec<2>>, Array<double>> CommonVertexIntegrationRule (int order);
17
+
18
+
19
+ // x, y in triangle [(0,0), (1,0), (0,1)]
20
+ // x in [(0,0),(1,0)] and y in [(0,0),(1,0)] are common edges
21
+ tuple<Array<Vec<2>>, Array<Vec<2>>, Array<double>> CommonEdgeIntegrationRule (int order);
22
+
23
+ }
24
+
25
+ #endif
@@ -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
@@ -16,9 +16,10 @@ namespace ngcomp
16
16
  class Region;
17
17
  }
18
18
 
19
- namespace ngfem
19
+ namespace ngsbem
20
20
  {
21
-
21
+ using namespace ngfem;
22
+
22
23
 
23
24
  template <typename entry_type = Complex>
24
25
  class NGS_DLL_HEADER SphericalHarmonics
@@ -222,17 +223,46 @@ namespace ngfem
222
223
  {
223
224
  SphericalHankel1(order, r, scale, values);
224
225
  }
226
+
227
+ template <typename T>
228
+ static void Eval (int order, double kappa, double r, double rtyp, T && values)
229
+ {
230
+ double scale = Scale(kappa, rtyp);
231
+ SphericalHankel1(order, r*kappa, scale, values);
232
+ }
233
+
234
+ static double Scale (double kappa, double rtyp)
235
+ {
236
+ // return min(1.0, rtyp*kappa);
237
+ return min(1.0, 0.5*rtyp*kappa);
238
+ }
225
239
  };
240
+
241
+
226
242
 
227
243
  // jn
228
244
  class MPRegular
229
245
  {
230
- public:
246
+ public:
231
247
  template <typename T>
232
248
  static void Eval (int order, double r, double scale, T && values)
233
249
  {
234
250
  SphericalBessel (order, r, 1.0/scale, values);
235
251
  }
252
+
253
+ template <typename T>
254
+ static void Eval (int order, double kappa, double r, double rtyp, T && values)
255
+ {
256
+ double scale = Scale(kappa, rtyp);
257
+ SphericalBessel (order, r*kappa, 1.0/scale, values);
258
+ }
259
+
260
+ static double Scale (double kappa, double rtyp)
261
+ {
262
+ // return 1.0/ min(1.0, 0.25*rtyp*kappa);
263
+ return 1.0/ min(1.0, 0.5*rtyp*kappa);
264
+ }
265
+
236
266
  };
237
267
 
238
268
 
@@ -243,22 +273,25 @@ namespace ngfem
243
273
  {
244
274
  SphericalHarmonics<entry_type> sh;
245
275
  double kappa;
246
- double scale;
276
+ double rtyp;
247
277
  public:
248
- MultiPole (int aorder, double akappa, double ascale = 1)
249
- : sh(aorder), kappa(akappa), scale(ascale) { }
250
278
 
279
+ MultiPole (int aorder, double akappa, double artyp)
280
+ : sh(aorder), kappa(akappa), rtyp(artyp) { }
281
+
282
+
251
283
  entry_type & Coef(int n, int m) { return sh.Coef(n,m); }
252
284
  auto & SH() { return sh; }
253
285
  const auto & SH() const { return sh; }
254
286
  double Kappa() const { return kappa; }
255
- double Scale() const { return scale; }
287
+ double Scale() const { return RADIAL::Scale(kappa, rtyp); }
288
+ double RTyp() const { return rtyp; }
256
289
  int Order() const { return sh.Order(); }
257
290
 
258
291
  MultiPole Truncate(int neworder) const
259
292
  {
260
293
  if (neworder > sh.Order()) neworder=sh.Order();
261
- MultiPole nmp(neworder, kappa);
294
+ MultiPole nmp(neworder, kappa, rtyp);
262
295
  nmp.sh.Coefs() = sh.Coefs().Range(sqr(neworder+1));
263
296
  return nmp;
264
297
  }
@@ -277,15 +310,27 @@ namespace ngfem
277
310
  void AddDipole (Vec<3> x, Vec<3> d, entry_type c);
278
311
  void AddCurrent (Vec<3> ap, Vec<3> ep, Complex j, int num=100);
279
312
 
280
-
313
+ /*
281
314
  void ChangeScaleTo (double newscale)
282
315
  {
283
- double fac = scale/newscale;
316
+ double fac = Scale()/newscale;
284
317
  double prod = 1;
285
318
  for (int n = 0; n <= sh.Order(); n++, prod*= fac)
286
319
  sh.CoefsN(n) *= prod;
287
320
  scale = newscale;
288
321
  }
322
+ */
323
+ void ChangeRTypTo (double new_rtyp)
324
+ {
325
+ // double fac = Scale()/newscale;
326
+ double fac = RADIAL::Scale(kappa, rtyp) / RADIAL::Scale(kappa, new_rtyp);
327
+ double prod = 1;
328
+ for (int n = 0; n <= sh.Order(); n++, prod*= fac)
329
+ sh.CoefsN(n) *= prod;
330
+ // scale = newscale;
331
+ rtyp = new_rtyp;
332
+ }
333
+
289
334
 
290
335
  Vector<double> Spectrum (bool scaled) const
291
336
  {
@@ -294,7 +339,7 @@ namespace ngfem
294
339
  for (int n = 0; n <= Order(); n++)
295
340
  {
296
341
  spec(n) = fac * L2Norm2(sh.CoefsN(n));
297
- if (!scaled) fac *= sqr(scale);
342
+ if (!scaled) fac *= sqr(Scale());
298
343
  }
299
344
  return spec;
300
345
  }
@@ -310,8 +355,8 @@ namespace ngfem
310
355
  return;
311
356
  }
312
357
 
313
- static Timer t("mptool Transform "+ToString(typeid(RADIAL).name())+ToString(typeid(TARGET).name()));
314
- RegionTimer reg(t);
358
+ // static Timer t("mptool Transform "+ToString(typeid(RADIAL).name())+ToString(typeid(TARGET).name()));
359
+ // RegionTimer reg(t);
315
360
 
316
361
  double len = L2Norm(dist);
317
362
  double theta, phi;
@@ -327,7 +372,10 @@ namespace ngfem
327
372
  phi = atan2(dist(1), dist(0));
328
373
 
329
374
 
330
- 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
+
331
379
  tmp.SH().RotateZ(phi);
332
380
  tmp.SH().RotateY(theta);
333
381
 
@@ -382,11 +430,9 @@ namespace ngfem
382
430
  Array<tuple<Vec<3>, Vec<3>, Complex,int>> currents;
383
431
  int total_sources;
384
432
 
385
- Node (Vec<3> acenter, double ar, int alevel, int order, double kappa)
386
- : center(acenter), r(ar), level(alevel), mp(MPOrder(ar*kappa), kappa, min(1.0, r*kappa))
387
- // : 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))
388
435
  {
389
- // cout << "singml, add node, level = " << level << endl;
390
436
  if (level < nodes_on_level.Size())
391
437
  nodes_on_level[level]++;
392
438
  }
@@ -401,7 +447,7 @@ namespace ngfem
401
447
  cc(0) += (i&1) ? r/2 : -r/2;
402
448
  cc(1) += (i&2) ? r/2 : -r/2;
403
449
  cc(2) += (i&4) ? r/2 : -r/2;
404
- 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());
405
451
  }
406
452
  }
407
453
 
@@ -421,7 +467,8 @@ namespace ngfem
421
467
 
422
468
  charges.Append( tuple{x,c} );
423
469
 
424
- if (r*mp.Kappa() < 1e-8) return;
470
+ // if (r*mp.Kappa() < 1e-8) return;
471
+ if (level > 20) return;
425
472
  if (charges.Size() < maxdirect && r*mp.Kappa() < 1)
426
473
  return;
427
474
 
@@ -536,9 +583,17 @@ namespace ngfem
536
583
  return sum;
537
584
  }
538
585
 
539
- for (auto [x,c] : charges)
540
- if (double rho = L2Norm(p-x); rho > 0)
541
- 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;
542
597
 
543
598
  for (auto [x,d,c] : dipoles)
544
599
  if (double rho = L2Norm(p-x); rho > 0)
@@ -631,7 +686,7 @@ namespace ngfem
631
686
  {
632
687
  if (charges.Size()+dipoles.Size()+currents.Size() == 0)
633
688
  {
634
- mp = MultiPole<MPSingular,entry_type> (-1, mp.Kappa());
689
+ mp = MultiPole<MPSingular,entry_type> (-1, mp.Kappa(), 1.);
635
690
  return;
636
691
  }
637
692
 
@@ -719,8 +774,8 @@ namespace ngfem
719
774
  bool havemp = false;
720
775
 
721
776
  public:
722
- SingularMLMultiPole (Vec<3> center, double r, int order, double kappa)
723
- : root(center, r, 0, order, kappa)
777
+ SingularMLMultiPole (Vec<3> center, double r, double kappa)
778
+ : root(center, r, 0, kappa)
724
779
  {
725
780
  nodes_on_level = 0;
726
781
  nodes_on_level[0] = 1;
@@ -728,7 +783,7 @@ namespace ngfem
728
783
 
729
784
  double Kappa() const { return root.mp.Kappa(); }
730
785
 
731
- void AddCharge(Vec<3> x, Complex c)
786
+ void AddCharge(Vec<3> x, entry_type c)
732
787
  {
733
788
  root.AddCharge(x, c);
734
789
  }
@@ -790,6 +845,7 @@ namespace ngfem
790
845
  for (int i = 0; i <= maxlevel; i++)
791
846
  cout << "sing " << i << ": " << nodes_on_level[i] << endl;
792
847
  */
848
+
793
849
  root.CalcTotalSources();
794
850
  root.CalcMP();
795
851
 
@@ -834,8 +890,8 @@ namespace ngfem
834
890
 
835
891
  Array<const typename SingularMLMultiPole<elem_type>::Node*> singnodes;
836
892
 
837
- Node (Vec<3> acenter, double ar, int alevel, int order, double kappa)
838
- : 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))
839
895
  // : center(acenter), r(ar), level(alevel), mp(MPOrder(ar*kappa), kappa, 1.0)
840
896
  {
841
897
  if (level < nodes_on_level.Size())
@@ -853,7 +909,7 @@ namespace ngfem
853
909
  cc(0) += (i&1) ? r/2 : -r/2;
854
910
  cc(1) += (i&2) ? r/2 : -r/2;
855
911
  cc(2) += (i&4) ? r/2 : -r/2;
856
- 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());
857
913
  }
858
914
  }
859
915
 
@@ -946,7 +1002,7 @@ namespace ngfem
946
1002
  mp.TransformAdd (ch->mp, ch->center-center);
947
1003
  ch->LocalizeExpansion(allow_refine);
948
1004
  }
949
- mp = MultiPole<MPRegular,elem_type>(-1, mp.Kappa());
1005
+ mp = MultiPole<MPRegular,elem_type>(-1, mp.Kappa(), 1.);
950
1006
  //mp.SH().Coefs()=0.0;
951
1007
  }
952
1008
  }
@@ -975,7 +1031,7 @@ namespace ngfem
975
1031
  sum = mp.Eval(p-center);
976
1032
 
977
1033
 
978
- static Timer t("mptool direct evaluate"); RegionTimer r(t);
1034
+ // static Timer t("mptool direct evaluate"); RegionTimer r(t);
979
1035
  for (auto sn : singnodes)
980
1036
  sum += sn->EvaluateMP(p);
981
1037
 
@@ -1037,7 +1093,8 @@ namespace ngfem
1037
1093
 
1038
1094
  targets.Append( x );
1039
1095
 
1040
- if (r*mp.Kappa() < 1e-8) return;
1096
+ // if (r*mp.Kappa() < 1e-8) return;
1097
+ if (level > 20) return;
1041
1098
  if (targets.Size() < maxdirect && r*mp.Kappa() < 1)
1042
1099
  return;
1043
1100
 
@@ -1070,7 +1127,7 @@ namespace ngfem
1070
1127
  }
1071
1128
 
1072
1129
  if (total_targets == 0)
1073
- mp = MultiPole<MPRegular>(-1, mp.Kappa());
1130
+ mp = MultiPole<MPRegular,elem_type>(-1, mp.Kappa(),1.);
1074
1131
  }
1075
1132
 
1076
1133
 
@@ -1093,8 +1150,8 @@ namespace ngfem
1093
1150
  shared_ptr<SingularMLMultiPole<elem_type>> singmp;
1094
1151
 
1095
1152
  public:
1096
- RegularMLMultiPole (shared_ptr<SingularMLMultiPole<elem_type>> asingmp, Vec<3> center, double r, int order)
1097
- : 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)
1098
1155
  {
1099
1156
  if (!singmp->havemp) throw Exception("first call Calc for singular MP");
1100
1157
 
@@ -1123,8 +1180,8 @@ namespace ngfem
1123
1180
  }
1124
1181
  }
1125
1182
 
1126
- RegularMLMultiPole (Vec<3> center, double r, int order, double kappa)
1127
- : root(center, r, 0, order, kappa)
1183
+ RegularMLMultiPole (Vec<3> center, double r, double kappa)
1184
+ : root(center, r, 0, kappa)
1128
1185
  {
1129
1186
  nodes_on_level = 0;
1130
1187
  nodes_on_level[0] = 1;
@@ -1137,6 +1194,8 @@ namespace ngfem
1137
1194
 
1138
1195
  void CalcMP(shared_ptr<SingularMLMultiPole<elem_type>> asingmp)
1139
1196
  {
1197
+ static Timer t("mptool regular MLMP"); RegionTimer rg(t);
1198
+
1140
1199
  singmp = asingmp;
1141
1200
 
1142
1201
  root.CalcTotalTargets();
@@ -1153,6 +1212,7 @@ namespace ngfem
1153
1212
  cout << "reg " << i << ": " << RegularMLMultiPole::nodes_on_level[i] << endl;
1154
1213
  */
1155
1214
 
1215
+ static Timer tloc("mptool regular localize expansion"); RegionTimer rloc(tloc);
1156
1216
  root.LocalizeExpansion(false);
1157
1217
  }
1158
1218
 
@@ -1199,132 +1259,5 @@ namespace ngfem
1199
1259
 
1200
1260
 
1201
1261
 
1202
- // ******************** Coefficient Functions *********************
1203
-
1204
-
1205
- class SphericalHarmonicsCF : public CoefficientFunction
1206
- {
1207
- SphericalHarmonics<Complex> sh;
1208
- public:
1209
- SphericalHarmonicsCF (int order)
1210
- : CoefficientFunction(1, true), sh(order) { }
1211
- Complex & Coef(int n, int m) { return sh.Coef(n,m); }
1212
-
1213
- virtual double Evaluate (const BaseMappedIntegrationPoint & ip) const override
1214
- { throw Exception("real eval not available"); }
1215
-
1216
- virtual void Evaluate (const BaseMappedIntegrationPoint & mip, FlatVector<Complex> values) const override
1217
- {
1218
- values(0) = sh.Eval(mip.GetPoint());
1219
- }
1220
-
1221
- virtual void Evaluate (const BaseMappedIntegrationRule & ir, BareSliceMatrix<Complex> values) const override
1222
- {
1223
- for (int i = 0; i < ir.Size(); i++)
1224
- {
1225
- auto & mip = ir[i];
1226
- values(i,0) = sh.Eval(mip.GetPoint());
1227
- }
1228
- }
1229
-
1230
- auto & SH() { return sh; }
1231
- };
1232
-
1233
-
1234
-
1235
- template <typename entry_type> class RegularMLMultiPoleCF;
1236
-
1237
-
1238
- template <typename RADIAL, typename entry_type=Complex>
1239
- class MultiPoleCF : public CoefficientFunction
1240
- {
1241
- MultiPole<RADIAL, entry_type> mp;
1242
- Vec<3> center;
1243
- public:
1244
- MultiPoleCF (int order, double kappa, Vec<3> acenter, double scale = 1)
1245
- : CoefficientFunction(sizeof(entry_type)/sizeof(Complex), true), mp(order, kappa, scale), center(acenter) { }
1246
-
1247
- entry_type & Coef(int n, int m) { return mp.Coef(n,m); }
1248
- auto & SH() { return mp.SH(); }
1249
- auto & MP() { return mp; }
1250
- Vec<3> Center() const { return center; }
1251
-
1252
- virtual double Evaluate (const BaseMappedIntegrationPoint & ip) const override
1253
- { throw Exception("real eval not available"); }
1254
-
1255
- virtual void Evaluate (const BaseMappedIntegrationPoint & mip, FlatVector<Complex> values) const override
1256
- {
1257
- if constexpr (std::is_same<entry_type, Complex>())
1258
- values(0) = mp.Eval(mip.GetPoint()-center);
1259
- else
1260
- values = mp.Eval(mip.GetPoint()-center);
1261
- }
1262
-
1263
- template <typename TARGET>
1264
- void ShiftZ (double z, MultiPole<TARGET, entry_type> & target) { mp.ShiftZ(z, target); }
1265
-
1266
- using CoefficientFunction::Transform;
1267
- template <typename TARGET>
1268
- void Transform (MultiPoleCF<TARGET, entry_type> & target)
1269
- {
1270
- mp.Transform (target.MP(), target.Center()-center);
1271
- }
1272
- };
1273
-
1274
- template <typename entry_type>
1275
- class SingularMLMultiPoleCF : public CoefficientFunction
1276
- {
1277
- shared_ptr<SingularMLMultiPole<entry_type>> mlmp;
1278
- public:
1279
- SingularMLMultiPoleCF (Vec<3> center, double r, int order, double kappa)
1280
- : CoefficientFunction(sizeof(entry_type)/sizeof(Complex), true), mlmp{make_shared<SingularMLMultiPole<entry_type>>(center, r, order, kappa)} { }
1281
-
1282
- virtual double Evaluate (const BaseMappedIntegrationPoint & ip) const override
1283
- { throw Exception("real eval not available"); }
1284
-
1285
- virtual void Evaluate (const BaseMappedIntegrationPoint & mip, FlatVector<Complex> values) const override
1286
- {
1287
- // values(0) = mlmp->Evaluate(mip.GetPoint());
1288
-
1289
- if constexpr (std::is_same<entry_type, Complex>())
1290
- values(0) = mlmp->Evaluate(mip.GetPoint());
1291
- else
1292
- values = mlmp->Evaluate(mip.GetPoint());
1293
-
1294
-
1295
- }
1296
-
1297
- shared_ptr<SingularMLMultiPole<entry_type>> MLMP() const { return mlmp; }
1298
- shared_ptr<RegularMLMultiPoleCF<entry_type>> CreateRegularExpansion(Vec<3> center, double r) const;
1299
- };
1300
-
1301
-
1302
- template <typename entry_type>
1303
- class RegularMLMultiPoleCF : public CoefficientFunction
1304
- {
1305
- shared_ptr<RegularMLMultiPole<entry_type>> mlmp;
1306
- public:
1307
- RegularMLMultiPoleCF (shared_ptr<SingularMLMultiPoleCF<entry_type>> asingmp, Vec<3> center, double r, int order)
1308
- : CoefficientFunction(sizeof(entry_type)/sizeof(Complex), true), mlmp{make_shared<RegularMLMultiPole<entry_type>>(asingmp->MLMP(), center, r, order)} { }
1309
- RegularMLMultiPoleCF (shared_ptr<SingularMLMultiPole<entry_type>> asingmp, Vec<3> center, double r, int order)
1310
- : CoefficientFunction(sizeof(entry_type)/sizeof(Complex), true), mlmp{make_shared<RegularMLMultiPole<entry_type>>(asingmp, center, r, order)} { }
1311
-
1312
- virtual double Evaluate (const BaseMappedIntegrationPoint & ip) const override
1313
- { throw Exception("real eval not available"); }
1314
-
1315
- virtual void Evaluate (const BaseMappedIntegrationPoint & mip, FlatVector<Complex> values) const override
1316
- {
1317
- // values(0) = mlmp->Evaluate(mip.GetPoint());
1318
-
1319
- if constexpr (std::is_same<entry_type, Complex>())
1320
- values(0) = mlmp->Evaluate(mip.GetPoint());
1321
- else
1322
- values = mlmp->Evaluate(mip.GetPoint());
1323
- }
1324
-
1325
- shared_ptr<RegularMLMultiPole<entry_type>> MLMP() { return mlmp; }
1326
- };
1327
-
1328
-
1329
1262
  }
1330
1263
  #endif
@@ -10,7 +10,7 @@
10
10
  #include <meshaccess.hpp>
11
11
 
12
12
 
13
- namespace ngcomp
13
+ namespace ngsbem
14
14
  {
15
15
 
16
16
  extern void AddCurrentDensity (SingularMLMultiPole<Vec<3,Complex>> & mp, shared_ptr<CoefficientFunction> current, ngcomp::Region reg);
@@ -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/lib/libngsolve.lib CHANGED
Binary file
netgen/libngsolve.dll 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.2502-11-g4d6a78d51")
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}/..
@@ -23,15 +23,15 @@ set(NGSOLVE_PYBIND_INCLUDE_DIR "")
23
23
  set(NGSOLVE_PYTHON_INCLUDE_DIRS "C:/Python312/Include")
24
24
  set(NGSOLVE_PYTHON_LIBRARIES "C:/Python312/libs/python312.lib")
25
25
  set(NGSOLVE_PYTHON_PACKAGES_INSTALL_DIR "")
26
- set(NGSOLVE_TCL_INCLUDE_PATH "C:/gitlabci/tools/builds/3zsqG5ns/0/ngsolve/ngsolve/external_dependencies/netgen/_skbuild/win-amd64-3.12/cmake-build/dependencies/src/project_tcl/generic")
26
+ set(NGSOLVE_TCL_INCLUDE_PATH "C:/gitlabci/tools/builds/3zsqG5ns/0/ngsolve/netgen/_skbuild/win-amd64-3.12/cmake-build/dependencies/src/project_tcl/generic")
27
27
  set(NGSOLVE_TCL_LIBRARY "C:/Python312/tcl/tclstub86.lib")
28
28
  set(NGSOLVE_TK_DND_LIBRARY "")
29
- set(NGSOLVE_TK_INCLUDE_PATH "C:/gitlabci/tools/builds/3zsqG5ns/0/ngsolve/ngsolve/external_dependencies/netgen/_skbuild/win-amd64-3.12/cmake-build/dependencies/src/project_tk/generic")
29
+ set(NGSOLVE_TK_INCLUDE_PATH "C:/gitlabci/tools/builds/3zsqG5ns/0/ngsolve/netgen/_skbuild/win-amd64-3.12/cmake-build/dependencies/src/project_tk/generic")
30
30
  set(NGSOLVE_TK_LIBRARY "C:/Python312/tcl/tkstub86.lib")
31
31
  set(NGSOLVE_X11_X11_LIB "")
32
32
  set(NGSOLVE_X11_Xmu_LIB "")
33
- set(NGSOLVE_ZLIB_INCLUDE_DIRS "C:/gitlabci/tools/builds/3zsqG5ns/0/ngsolve/ngsolve/external_dependencies/netgen/_skbuild/win-amd64-3.12/cmake-build/dependencies/zlib/include")
34
- set(NGSOLVE_ZLIB_LIBRARIES "C:/gitlabci/tools/builds/3zsqG5ns/0/ngsolve/ngsolve/external_dependencies/netgen/_skbuild/win-amd64-3.12/cmake-build/dependencies/zlib/lib/zlibstatic.lib")
33
+ set(NGSOLVE_ZLIB_INCLUDE_DIRS "C:/gitlabci/tools/builds/3zsqG5ns/0/ngsolve/netgen/_skbuild/win-amd64-3.12/cmake-build/dependencies/zlib/include")
34
+ set(NGSOLVE_ZLIB_LIBRARIES "C:/gitlabci/tools/builds/3zsqG5ns/0/ngsolve/netgen/_skbuild/win-amd64-3.12/cmake-build/dependencies/zlib/lib/zlibstatic.lib")
35
35
 
36
36
  set(NGSOLVE_INTEL_MIC OFF)
37
37
  set(NGSOLVE_USE_CCACHE ON)
@@ -19,7 +19,7 @@ set(CMAKE_IMPORT_FILE_VERSION 1)
19
19
  set(_cmake_targets_defined "")
20
20
  set(_cmake_targets_not_defined "")
21
21
  set(_cmake_expected_targets "")
22
- foreach(_cmake_expected_target IN ITEMS netgen_libs ngs_lapack netgen_python ngstd ngbla ngla ngfem ngcomp ngsolve)
22
+ foreach(_cmake_expected_target IN ITEMS netgen_libs ngs_lapack netgen_python ngstd ngbla ngla ngfem ngsbem ngcomp ngsolve)
23
23
  list(APPEND _cmake_expected_targets "${_cmake_expected_target}")
24
24
  if(TARGET "${_cmake_expected_target}")
25
25
  list(APPEND _cmake_targets_defined "${_cmake_expected_target}")
@@ -107,6 +107,13 @@ set_target_properties(ngfem PROPERTIES
107
107
  INTERFACE_LINK_LIBRARIES "ngbla;ngstd;\$<LINK_ONLY:>"
108
108
  )
109
109
 
110
+ # Create imported target ngsbem
111
+ add_library(ngsbem INTERFACE IMPORTED)
112
+
113
+ set_target_properties(ngsbem PROPERTIES
114
+ INTERFACE_LINK_LIBRARIES "ngcomp;ngfem;ngla;ngbla;ngstd;\$<LINK_ONLY:>"
115
+ )
116
+
110
117
  # Create imported target ngcomp
111
118
  add_library(ngcomp INTERFACE IMPORTED)
112
119
 
@@ -118,7 +125,7 @@ set_target_properties(ngcomp PROPERTIES
118
125
  add_library(ngsolve SHARED IMPORTED)
119
126
 
120
127
  set_target_properties(ngsolve PROPERTIES
121
- INTERFACE_LINK_LIBRARIES "netgen_libs;ngsolve;ngcomp;ngfem;ngbla;ngla;ngstd"
128
+ INTERFACE_LINK_LIBRARIES "netgen_libs;ngsolve;ngcomp;ngfem;ngsbem;ngbla;ngla;ngstd"
122
129
  )
123
130
 
124
131
  if(CMAKE_VERSION VERSION_LESS 3.0.0)
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.2502-11-g4d6a78d51"
33
- NGSOLVE_VERSION_GIT = "v6.2.2502-11-g4d6a78d51"
34
- NGSOLVE_VERSION_PYTHON = "6.2.2502.post11.dev1"
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
- NGSOLVE_VERSION_TWEAK = "11"
39
- NGSOLVE_VERSION_PATCH = "2502"
40
- NGSOLVE_VERSION_HASH = "g4d6a78d51"
38
+ NGSOLVE_VERSION_TWEAK = "0"
39
+ NGSOLVE_VERSION_PATCH = "2504"
40
+ NGSOLVE_VERSION_HASH = "g7dd7ba8dd"
41
41
 
42
42
  CMAKE_CXX_COMPILER = "C:/Program Files/Microsoft Visual Studio/2022/Community/VC/Tools/MSVC/14.44.35207/bin/Hostx64/x64/cl.exe"
43
43
  CMAKE_CUDA_COMPILER = ""
ngsolve/ngslib.pyd CHANGED
Binary file
@@ -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,11 +1,11 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ngsolve
3
- Version: 6.2.2502.post11.dev1
3
+ Version: 6.2.2504
4
4
  Summary: NGSolve
5
5
  Author: The NGSolve team
6
6
  License: LGPL2.1
7
7
  License-File: LICENSE
8
- Requires-Dist: netgen-mesher==6.2.2502.post3.dev0
8
+ Requires-Dist: netgen-mesher==6.2.2504
9
9
  Requires-Dist: mkl
10
10
  Dynamic: author
11
11
  Dynamic: license
@@ -1,4 +1,4 @@
1
- netgen/libngsolve.dll,sha256=PZSRAvkdFUrxUbMu87gWQa8gb24UoIi5gZ_OLa-efO0,34903040
1
+ netgen/libngsolve.dll,sha256=VPzxtqpEnacp1OLs28I_06UynNzIgW13nS2RTsIOPfc,35495936
2
2
  netgen/ngscxx.bat,sha256=OHagH0Xm9cOpt3urQF1XRhzsoBOIdfl3KE3wB1hG0i4,670
3
3
  netgen/ngsld.bat,sha256=YD1I1rK70K_YvLev7aYQMD9mCcwF55k1B_8pRWPpob0,428
4
4
  netgen/include/arnoldi.hpp,sha256=m39slyQUujB_9j3NDfTpEWyldC6Fw8natUpPuBkevLM,1492
@@ -90,10 +90,11 @@ netgen/include/hidden.hpp,sha256=t_dOumFNhFSPbqVVEnH2N7J4kZjKIdBCzIgGAXa9YXg,272
90
90
  netgen/include/householder.hpp,sha256=DUZUZ-zG7zVTtpgUB7Bpo3-1l-w0QciSVBvzEmi7h_A,6101
91
91
  netgen/include/hypre_ams_precond.hpp,sha256=fi2sMKV46VwHxj1mIcOorpA3eK0dJg2magch0YexSLE,3288
92
92
  netgen/include/hypre_precond.hpp,sha256=_85-R4NqLi2w7GT-vHAk1SMIlbnxYUl1JDAwCpkIdTI,1918
93
- netgen/include/integrator.hpp,sha256=feIiNHlv5DIxyf5TfDQhEnGVc0o3sx4qYC0YC04YiB0,67650
93
+ netgen/include/integrator.hpp,sha256=NsPm_eyi-OP6iSUTGfoiigGROuT4PgW3Z7qEHA8Btno,67156
94
94
  netgen/include/integratorcf.hpp,sha256=YFUZSINM8_aUfXc73ewJEBVesuR6wD-mnt9rHoiB5Wg,8119
95
95
  netgen/include/interpolate.hpp,sha256=mM3hYHpyjUtVlrinl59DaCUGA04F82-ZAJUCYMuh76M,1689
96
96
  netgen/include/intrule.hpp,sha256=XxsIC1L5b4DMfXu9xe7Kr9gKgFki9g0p39nByE-k2eY,83361
97
+ netgen/include/intrules_SauterSchwab.hpp,sha256=2f9Lb77H6sgaVq7576L78zNGbv4MYgHpddIzfc36TKA,675
97
98
  netgen/include/irspace.hpp,sha256=UFWeaFVUDwsHCJZqtZBBDnhWC4Oyy34z9Pr6KzofHPg,1557
98
99
  netgen/include/jacobi.hpp,sha256=Y4lJtfjoeHjtuYqlNwMH_WDumFmARIw4a-V8eU_Ij9o,4222
99
100
  netgen/include/l2hofe.hpp,sha256=03O8VX8PyBM6v8IrrVooN85H_X-NM4j2neDPivn-xGI,6843
@@ -106,7 +107,8 @@ netgen/include/matrix.hpp,sha256=0UT4qQMFBMf3eq8FS7XTkMbQaVSgz--EiNdVMzGq-Sc,579
106
107
  netgen/include/memusage.hpp,sha256=m_-fuupqepSve37WkRkoFHHyTtE9PdGnOVPIdQHlDiw,1209
107
108
  netgen/include/meshaccess.hpp,sha256=Yk5VSmQx4cp5WEHnfsZXUOijVlooEoozTAaUu75zla8,48419
108
109
  netgen/include/mgpre.hpp,sha256=5Zqt3pzrvm3EOfr84iU6rQx23LTkntUTd_s4_i6wEzI,5029
109
- netgen/include/mptools.hpp,sha256=LnYf4k6vPuPHRZpEUjRxDWH8TqHBTYHtMIeGsRp5Ow0,38869
110
+ netgen/include/mp_coefficient.hpp,sha256=TroJJa2ZrOfh8xaU2TY4m8raSaxvMU4pBXpxAeOZSt8,4876
111
+ netgen/include/mptools.hpp,sha256=ZiykV7RaX07CpRK5fJRO-vCUGJs_iusPXNK6G8rmKt8,35737
110
112
  netgen/include/multigrid.hpp,sha256=7YgJfeGTBnb-aFWHrbcVk3dos6XYU0iVCgiY8UvRopY,898
111
113
  netgen/include/multivector.hpp,sha256=5rkNSqyPhIXAb1lGKLcy908D9Uw9oqY4wpUXZEXbEPE,13082
112
114
  netgen/include/mumpsinverse.hpp,sha256=8YiUlQZMFVsJ0kuwaSphGZvxyEZJAZZApH8XahiTeEo,4249
@@ -135,7 +137,7 @@ netgen/include/plateaufespace.hpp,sha256=EKUQyPESNdB1vhz3U7B-QVQmfkNACNk2r5KvN-x
135
137
  netgen/include/pml.hpp,sha256=iftuUVHXkFSqa-dIU8hImQewscv0qdek_fN3gR9xbSY,7559
136
138
  netgen/include/pmltrafo.hpp,sha256=j6Sk5tHbzKPT1hj_jI6n6-cRUgV5b3_o3kRNev95wDE,20237
137
139
  netgen/include/postproc.hpp,sha256=TiEqDkANZJtxl-aOYMac-FKhtSkokXS3AuxAScqUDBQ,5334
138
- netgen/include/potentialtools.hpp,sha256=zta2uqk1SpBHV77DO1BnCTFyBmhHtStcEMiJ3bq6UyQ,355
140
+ netgen/include/potentialtools.hpp,sha256=DhBMmkL4xcm3UYOqt1cWoonjVf5m2ceCxp6s6qTWp24,355
139
141
  netgen/include/precomp.hpp,sha256=mx_zGsnBxqRVArwgkDpvUcX8EzP8v_8QwVdOp5m1nWQ,1337
140
142
  netgen/include/preconditioner.hpp,sha256=3UCrQqZ49YUHneg24-JoYVO40B4Di1DR-A3TQLZme2A,14630
141
143
  netgen/include/prolongation.hpp,sha256=WjfpHPXxSBa1lOPbrTXEKo44wxe6OeGVMPK-XR0E-7c,11304
@@ -162,7 +164,7 @@ netgen/include/specialelement.hpp,sha256=ovP0KuLWkBRnoc72hfzGgrrigzNQBdJexVAgSUj
162
164
  netgen/include/statushandler.hpp,sha256=IJPw19bARTth8D8wc6kHTBkxE4o3QTWB-cGDGz1Q2oE,679
163
165
  netgen/include/stringops.hpp,sha256=vN_DL7f2M5e9dLpZOHIVDXzwoSovbqtuqClZdYMVDrA,274
164
166
  netgen/include/superluinverse.hpp,sha256=A5YmUv_5R0qAzcD4zIxpUPAB6HqLcXuFU6J91Ygmnio,3301
165
- netgen/include/symbolicintegrator.hpp,sha256=tk8SwRT2swPiafO1JevZskjFVwvAxbGd0HTGPJjx5oo,36868
167
+ netgen/include/symbolicintegrator.hpp,sha256=LreQR0qRXW4V6VFG-Ihkw2YhTzj89CxQ27RpqfZxedc,36882
166
168
  netgen/include/symmetricmatrix.hpp,sha256=M79mq0z70ohLFoi8cxPAxxlqD3RjFZAkbCrHwQrhvY8,2954
167
169
  netgen/include/tangentialfacetfe.hpp,sha256=iEP_cU3nBtVUnH67dvzeMqIS-JM6SeILhB738YX9Spg,7491
168
170
  netgen/include/tangentialfacetfespace.hpp,sha256=Ot0m9OA3ps0xh7AWiLUK-yeZ40ogeFx7zY6dGWQuTPc,2808
@@ -185,11 +187,11 @@ netgen/include/voxelcoefficientfunction.hpp,sha256=zPlatX_nf2ODK2X979wvpm1HXHEzn
185
187
  netgen/include/vtkoutput.hpp,sha256=GwPaFtOVY27_1hKwSqpNHV4ppOk3CVsLdMpocm27odQ,6628
186
188
  netgen/include/vvector.hpp,sha256=vpnwWlNWsEJB26ve8cKADbUMGVBTTVCFvrBC4r_LDDQ,4785
187
189
  netgen/include/webgui.hpp,sha256=xm1S5KHockrzf_R4zHzQ9fzwfQ4H5aZaZm9ItCaR41s,2199
188
- netgen/lib/libngsolve.lib,sha256=3ppL4tLvLRirmoj1xmwN5JbpZyKg5YvCapkDWuJHVz8,13477112
190
+ netgen/lib/libngsolve.lib,sha256=AeN7OZ3x6M1AwBa7BamxDSeQ-D1QryuMbDSLZw7NK9Q,13492716
189
191
  ngsolve/TensorProductTools.py,sha256=jD4LtJdEiLt2dDsU6STMXb10yrau_i20gatwGlqbiFQ,8562
190
192
  ngsolve/__console.py,sha256=QLnfw1ONU9eVPQZ_LjzY-7b_gfZpRRRdI7imHR1lJR8,2983
191
193
  ngsolve/__expr.py,sha256=ZAtv94PVtAdvWWKFIvQGJC55aIEY6ajo-l5Hp-1V-6s,4396
192
- ngsolve/__init__.py,sha256=QbbkhTshcN0JuHMEm2C07j_vjb5FA2k0A24qV8zMAS0,5579
194
+ ngsolve/__init__.py,sha256=_pRJLhaBNqv2q1vigj9p-2YqRbiROROrnl3iVM9G2ow,5620
193
195
  ngsolve/_scikit_build_core_dependencies.py,sha256=usioLq44m3uusEH205dW0czyzGmzy87PZgizZKUoPs0,765
194
196
  ngsolve/bvp.py,sha256=STQCDhEphVgEK3hfWGJyVkS1vi_ubTTKHq7fnuR-POo,2065
195
197
  ngsolve/directsolvers.py,sha256=lVfEluGDFd_u6Y-vyQ08VjHA02xQuklIQ91hMopj-40,1021
@@ -200,20 +202,21 @@ ngsolve/meshes.py,sha256=nz95LP1EEIVAEJ0jyQGqq0E-62uuy2tvIRgqIrEqDHQ,27534
200
202
  ngsolve/ngs2petsc.py,sha256=PLAkvu4H-ZEXd0-bM2v0OJX7gga-OJ9d-NB7g322-wQ,12809
201
203
  ngsolve/ngscxx.py,sha256=r9TV49w0MKIxE6fgJYO4FNv-5wcM9eAFYIG9GspUy_A,1335
202
204
  ngsolve/ngslib.lib,sha256=_HzV4t-JUpCMSs1rNu4Jjtmr69v0FQUaOatAn17WF4A,1716
203
- ngsolve/ngslib.pyd,sha256=i8eyJH8W22diTOID9CLRC5w98th3xAYm_dWYrn5uEE0,123904
205
+ ngsolve/ngslib.pyd,sha256=9jUdOvb7jHcY2wxki6omysGGh9YoEpsY4ze4HrPd2mQ,123904
204
206
  ngsolve/nonlinearsolvers.py,sha256=nKd-SVJseTWztHZPEPKsbv0mLwQjFILZtOh7Ggft0xs,8419
205
207
  ngsolve/preconditioners.py,sha256=2To9cGdhZscFRKrIb6NfjKLBXoIfkemnhryaXrdgNC8,218
208
+ ngsolve/solve_implementation.py,sha256=djtTbzhY_CE_7kIh9NLKoeieUu7JJxJ6nqXf6UH9VG0,4524
206
209
  ngsolve/solvers.py,sha256=Vbm5RfIJ83nMtQ1pYJL0uBBuys4-mcY6b63MNkyiqxU,311
207
210
  ngsolve/timestepping.py,sha256=SuKsFS7cDXRixKWdMMIWW4flet12HLeqWTBC0DFhPwg,8535
208
211
  ngsolve/timing.py,sha256=j_Plbbh51pS9QwMq93hyvFDSrbywmdKZ6Z6OOZmZoe4,4093
209
212
  ngsolve/utils.py,sha256=jg6smLuKF6G9Rvg-EXjyYwjFJGyyiqSRknevdjp-9J4,4724
210
213
  ngsolve/webgui.py,sha256=MG9bzYvfZYodiC5-DR-9auveCzKX3d13AGOgKANne-A,24902
211
- ngsolve/cmake/NGSolveConfig.cmake,sha256=byOWH9_dKWNb_qTq7F9p6iscUd7T8d0m9-_r8lhxJZ0,5275
214
+ ngsolve/cmake/NGSolveConfig.cmake,sha256=F7800eWixfdTvaWPV1uw38Hgb9srA97-3pEVvpxpxZA,5141
212
215
  ngsolve/cmake/ngsolve-targets-release.cmake,sha256=knQjCmz6J-x_Egg5DosY5hU_CZdZlSQxQ4Za7pS07fA,907
213
- ngsolve/cmake/ngsolve-targets.cmake,sha256=vboBD0IALtGlnV_mWvrbMzMohEeQ4AlvDSIVPpRK-To,5969
216
+ ngsolve/cmake/ngsolve-targets.cmake,sha256=KzivMGcMGzQeOgCq926f23QY4BEXVi4SLxukHTYG7Bc,6179
214
217
  ngsolve/config/__init__.py,sha256=IjGKWBHvRx572Z6m-5z0q82xuQaWlBABy1whwy2Uxak,23
215
218
  ngsolve/config/__main__.py,sha256=anI_XpgrpEnVnMyrFiH3Yon_tpQZkehnqRTNC02NiBI,93
216
- ngsolve/config/config.py,sha256=YMpLunhS0hei-nO79NG02vXUv5krY9i4_yaGduPuHgs,2549
219
+ ngsolve/config/config.py,sha256=wFQvDpqH2iRxMzV3Y5hwagMMk38a5mjABF-IWO1J3II,2521
217
220
  ngsolve/demos/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
218
221
  ngsolve/demos/TensorProduct/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
219
222
  ngsolve/demos/TensorProduct/tp_dg_1d_1d.py,sha256=3Q9ntmVJGIKQ-JLdGWgECR_kDjTG8FPVCSiTJkxyi40,2188
@@ -245,37 +248,37 @@ ngsolve/demos/mpi/mpi_cmagnet.py,sha256=59TuQvIIGoDStyJneH47NG131nppBoQpZQ9rfvG_
245
248
  ngsolve/demos/mpi/mpi_navierstokes.py,sha256=ieAWMDd9LoH99L14iBgF_YmX_xk7gltZ9MruTFN6xAY,3028
246
249
  ngsolve/demos/mpi/mpi_poisson.py,sha256=_-H0HFqlwlpasiVD9OQjUvJbWJcQ34-4y-va1WOSOzE,2557
247
250
  ngsolve/demos/mpi/mpi_timeDG.py,sha256=FUOh_1dzOGUU-uAsD4iyz0RVT382jMiMiuYkZjarhAE,1963
248
- ngsolve-6.2.2502.post11.dev1.data/data/Scripts/ngsolve.tcl,sha256=8KBOXZKYU_qx8785PIjdmVjcUbCxR5aYrod0BZ4UgGc,21637
249
- ngsolve-6.2.2502.post11.dev1.data/data/share/ngsolve/beam.geo,sha256=HTv0A6IUoVuavifolhGKY6U44z0hni07Htonqe6rw_A,404
250
- ngsolve-6.2.2502.post11.dev1.data/data/share/ngsolve/beam.vol,sha256=QZbM9JE4rBs5nVXaw7ZAbDf60yXbX19bm1OnOScF57M,13834
251
- ngsolve-6.2.2502.post11.dev1.data/data/share/ngsolve/chip.in2d,sha256=561AjEIPnlzMZHIzep5lRjocQDm8w7o7IDna5u8s9JQ,592
252
- ngsolve-6.2.2502.post11.dev1.data/data/share/ngsolve/chip.vol,sha256=gkEmBWlQh8BkSFNTf-XISfmuGzHXDKANV4Uoww_BwJI,28511
253
- ngsolve-6.2.2502.post11.dev1.data/data/share/ngsolve/coil.geo,sha256=ylB2OiWEZztFXPx99qTNRJKmZFIDPEezEgQt4EPtZRA,376
254
- ngsolve-6.2.2502.post11.dev1.data/data/share/ngsolve/coil.vol,sha256=t8cWP_YX38FMw0S-7vEVUOcSH0VK6DlaqVWG_zmBo-4,147284
255
- ngsolve-6.2.2502.post11.dev1.data/data/share/ngsolve/coilshield.geo,sha256=Sq8w7i22WQ0viaiM3bU_63lZGFWp8JgyDqs3RdjeTe0,629
256
- ngsolve-6.2.2502.post11.dev1.data/data/share/ngsolve/coilshield.vol,sha256=JiZOM9A529-hikvv1kyLwffTRpeatLtaVTNcu42o1fo,165576
257
- ngsolve-6.2.2502.post11.dev1.data/data/share/ngsolve/cube.geo,sha256=Wd9AnPdoQgjQ-JK6zmoXjsNxPR9B8ED4pdHVwmRoe1M,405
258
- ngsolve-6.2.2502.post11.dev1.data/data/share/ngsolve/cube.vol,sha256=RS8bay_KlF6IZM0QDDr7_dGaFLqoxszQU_w8TYutMKY,92127
259
- ngsolve-6.2.2502.post11.dev1.data/data/share/ngsolve/d10_DGdoubleglazing.pde,sha256=lK3sXmK74eFEMk8F6hwFHe_tBYnOdRq3F-RbzKpDK0c,1354
260
- ngsolve-6.2.2502.post11.dev1.data/data/share/ngsolve/d11_chip_nitsche.pde,sha256=VuEQtkZaIJA9yuvjG_jcx1UB9UtAaZSoeJYFHcHeYxk,1141
261
- ngsolve-6.2.2502.post11.dev1.data/data/share/ngsolve/d1_square.pde,sha256=24ZZ0nlbr5LKl_mPyeZZMSkiCBiBk1fzNElo3yITX2A,1072
262
- ngsolve-6.2.2502.post11.dev1.data/data/share/ngsolve/d2_chip.pde,sha256=yGIbzuTdCEjdoC9Ig_hbcy5qz69_wxgPZeYmhY1rN7k,985
263
- ngsolve-6.2.2502.post11.dev1.data/data/share/ngsolve/d3_helmholtz.pde,sha256=gWqQTh1M9NiKGohlu5JxDJuvRz-T28WlNSVbwmMvM-0,590
264
- ngsolve-6.2.2502.post11.dev1.data/data/share/ngsolve/d4_cube.pde,sha256=6kL43ehAh1PdwnFlLjadg325bFjpz02p2PpAOxlDFuc,1079
265
- ngsolve-6.2.2502.post11.dev1.data/data/share/ngsolve/d5_beam.pde,sha256=VQt9WbqAVWObFH9Jy1YieE9WHnVZ_hnsKVTz6ysEBxI,2059
266
- ngsolve-6.2.2502.post11.dev1.data/data/share/ngsolve/d6_shaft.pde,sha256=y10nLFA2-GwEwnAs5R-8wppRq-09vYJ_C9LJ3DSvlS0,1974
267
- ngsolve-6.2.2502.post11.dev1.data/data/share/ngsolve/d7_coil.pde,sha256=KFkqtZiPD4LQsGnghwwdq1qmpWf0T5xQR4HwbRL9ZZA,1250
268
- ngsolve-6.2.2502.post11.dev1.data/data/share/ngsolve/d8_coilshield.pde,sha256=9XG0TcgZ7mComh_pVntnuzDldEx5PD-C7gqK05PTWus,1190
269
- ngsolve-6.2.2502.post11.dev1.data/data/share/ngsolve/d9_hybridDG.pde,sha256=vYschVRu5vC91YpyVZFCBFuno-ZlOcRznPD-OvJTLtQ,1551
270
- ngsolve-6.2.2502.post11.dev1.data/data/share/ngsolve/doubleglazing.in2d,sha256=lDCukUh9iTpkiH-qJAVdeAlMpiYF0AibAA6g3jOeWDY,533
271
- ngsolve-6.2.2502.post11.dev1.data/data/share/ngsolve/doubleglazing.vol,sha256=IUOhUrZi8WMnvrIJe--A8cYPN6mscslA8_4yxvKShb0,35724
272
- ngsolve-6.2.2502.post11.dev1.data/data/share/ngsolve/piezo2d40round4.vol.gz,sha256=RuxM0vtYljoAImOH6U6avt0LmWaUbGNao37n8p_Yd1w,496477
273
- ngsolve-6.2.2502.post11.dev1.data/data/share/ngsolve/shaft.geo,sha256=Y3OVQlWjgICe2Dwz6-Qs8r0tLanjwtWP0xFx5AwNRJk,2507
274
- ngsolve-6.2.2502.post11.dev1.data/data/share/ngsolve/shaft.vol,sha256=IqViJ4hJKk3Uf66PkVJ-kHpBQ_ZpkigRuh5g1Po4euY,274741
275
- ngsolve-6.2.2502.post11.dev1.data/data/share/ngsolve/square.in2d,sha256=5dewiEjTsRFiNkBlmaTjBAZejq55TTlusp8ALfTMc2M,209
276
- ngsolve-6.2.2502.post11.dev1.data/data/share/ngsolve/square.vol,sha256=tWdPeQ52deUNgWOsWKhqgNVsJKhkJmEAVp5-xjhzEwg,9311
277
- ngsolve-6.2.2502.post11.dev1.dist-info/licenses/LICENSE,sha256=iFoD9UsVeWEjb0aEPnmXKr_NaJC2y7NovH7KMo_5WhI,26934
278
- ngsolve-6.2.2502.post11.dev1.dist-info/METADATA,sha256=q79zAGxCfWApX2zBEkJZrlwsdiGd1tNN7-IzdLZl-PM,325
279
- ngsolve-6.2.2502.post11.dev1.dist-info/WHEEL,sha256=3cUY9TiuvxHsB0dWaW6wa9MO8pP_yfFeO2_t7ly9aNg,96
280
- ngsolve-6.2.2502.post11.dev1.dist-info/top_level.txt,sha256=1llU44DxNIP85uPT4RChsIuV3h2d0_5j0Ui_Df5vV8E,15
281
- ngsolve-6.2.2502.post11.dev1.dist-info/RECORD,,
251
+ ngsolve-6.2.2504.data/data/Scripts/ngsolve.tcl,sha256=8KBOXZKYU_qx8785PIjdmVjcUbCxR5aYrod0BZ4UgGc,21637
252
+ ngsolve-6.2.2504.data/data/share/ngsolve/beam.geo,sha256=HTv0A6IUoVuavifolhGKY6U44z0hni07Htonqe6rw_A,404
253
+ ngsolve-6.2.2504.data/data/share/ngsolve/beam.vol,sha256=QZbM9JE4rBs5nVXaw7ZAbDf60yXbX19bm1OnOScF57M,13834
254
+ ngsolve-6.2.2504.data/data/share/ngsolve/chip.in2d,sha256=561AjEIPnlzMZHIzep5lRjocQDm8w7o7IDna5u8s9JQ,592
255
+ ngsolve-6.2.2504.data/data/share/ngsolve/chip.vol,sha256=gkEmBWlQh8BkSFNTf-XISfmuGzHXDKANV4Uoww_BwJI,28511
256
+ ngsolve-6.2.2504.data/data/share/ngsolve/coil.geo,sha256=ylB2OiWEZztFXPx99qTNRJKmZFIDPEezEgQt4EPtZRA,376
257
+ ngsolve-6.2.2504.data/data/share/ngsolve/coil.vol,sha256=t8cWP_YX38FMw0S-7vEVUOcSH0VK6DlaqVWG_zmBo-4,147284
258
+ ngsolve-6.2.2504.data/data/share/ngsolve/coilshield.geo,sha256=Sq8w7i22WQ0viaiM3bU_63lZGFWp8JgyDqs3RdjeTe0,629
259
+ ngsolve-6.2.2504.data/data/share/ngsolve/coilshield.vol,sha256=JiZOM9A529-hikvv1kyLwffTRpeatLtaVTNcu42o1fo,165576
260
+ ngsolve-6.2.2504.data/data/share/ngsolve/cube.geo,sha256=Wd9AnPdoQgjQ-JK6zmoXjsNxPR9B8ED4pdHVwmRoe1M,405
261
+ ngsolve-6.2.2504.data/data/share/ngsolve/cube.vol,sha256=RS8bay_KlF6IZM0QDDr7_dGaFLqoxszQU_w8TYutMKY,92127
262
+ ngsolve-6.2.2504.data/data/share/ngsolve/d10_DGdoubleglazing.pde,sha256=lK3sXmK74eFEMk8F6hwFHe_tBYnOdRq3F-RbzKpDK0c,1354
263
+ ngsolve-6.2.2504.data/data/share/ngsolve/d11_chip_nitsche.pde,sha256=VuEQtkZaIJA9yuvjG_jcx1UB9UtAaZSoeJYFHcHeYxk,1141
264
+ ngsolve-6.2.2504.data/data/share/ngsolve/d1_square.pde,sha256=24ZZ0nlbr5LKl_mPyeZZMSkiCBiBk1fzNElo3yITX2A,1072
265
+ ngsolve-6.2.2504.data/data/share/ngsolve/d2_chip.pde,sha256=yGIbzuTdCEjdoC9Ig_hbcy5qz69_wxgPZeYmhY1rN7k,985
266
+ ngsolve-6.2.2504.data/data/share/ngsolve/d3_helmholtz.pde,sha256=gWqQTh1M9NiKGohlu5JxDJuvRz-T28WlNSVbwmMvM-0,590
267
+ ngsolve-6.2.2504.data/data/share/ngsolve/d4_cube.pde,sha256=6kL43ehAh1PdwnFlLjadg325bFjpz02p2PpAOxlDFuc,1079
268
+ ngsolve-6.2.2504.data/data/share/ngsolve/d5_beam.pde,sha256=VQt9WbqAVWObFH9Jy1YieE9WHnVZ_hnsKVTz6ysEBxI,2059
269
+ ngsolve-6.2.2504.data/data/share/ngsolve/d6_shaft.pde,sha256=y10nLFA2-GwEwnAs5R-8wppRq-09vYJ_C9LJ3DSvlS0,1974
270
+ ngsolve-6.2.2504.data/data/share/ngsolve/d7_coil.pde,sha256=KFkqtZiPD4LQsGnghwwdq1qmpWf0T5xQR4HwbRL9ZZA,1250
271
+ ngsolve-6.2.2504.data/data/share/ngsolve/d8_coilshield.pde,sha256=9XG0TcgZ7mComh_pVntnuzDldEx5PD-C7gqK05PTWus,1190
272
+ ngsolve-6.2.2504.data/data/share/ngsolve/d9_hybridDG.pde,sha256=vYschVRu5vC91YpyVZFCBFuno-ZlOcRznPD-OvJTLtQ,1551
273
+ ngsolve-6.2.2504.data/data/share/ngsolve/doubleglazing.in2d,sha256=lDCukUh9iTpkiH-qJAVdeAlMpiYF0AibAA6g3jOeWDY,533
274
+ ngsolve-6.2.2504.data/data/share/ngsolve/doubleglazing.vol,sha256=IUOhUrZi8WMnvrIJe--A8cYPN6mscslA8_4yxvKShb0,35724
275
+ ngsolve-6.2.2504.data/data/share/ngsolve/piezo2d40round4.vol.gz,sha256=RuxM0vtYljoAImOH6U6avt0LmWaUbGNao37n8p_Yd1w,496477
276
+ ngsolve-6.2.2504.data/data/share/ngsolve/shaft.geo,sha256=Y3OVQlWjgICe2Dwz6-Qs8r0tLanjwtWP0xFx5AwNRJk,2507
277
+ ngsolve-6.2.2504.data/data/share/ngsolve/shaft.vol,sha256=IqViJ4hJKk3Uf66PkVJ-kHpBQ_ZpkigRuh5g1Po4euY,274741
278
+ ngsolve-6.2.2504.data/data/share/ngsolve/square.in2d,sha256=5dewiEjTsRFiNkBlmaTjBAZejq55TTlusp8ALfTMc2M,209
279
+ ngsolve-6.2.2504.data/data/share/ngsolve/square.vol,sha256=tWdPeQ52deUNgWOsWKhqgNVsJKhkJmEAVp5-xjhzEwg,9311
280
+ ngsolve-6.2.2504.dist-info/licenses/LICENSE,sha256=iFoD9UsVeWEjb0aEPnmXKr_NaJC2y7NovH7KMo_5WhI,26934
281
+ ngsolve-6.2.2504.dist-info/METADATA,sha256=unbJTYm_P03OTOeXOt6FeKIrBBx_jfOVOWM9FTv-F7E,302
282
+ ngsolve-6.2.2504.dist-info/WHEEL,sha256=3cUY9TiuvxHsB0dWaW6wa9MO8pP_yfFeO2_t7ly9aNg,96
283
+ ngsolve-6.2.2504.dist-info/top_level.txt,sha256=1llU44DxNIP85uPT4RChsIuV3h2d0_5j0Ui_Df5vV8E,15
284
+ ngsolve-6.2.2504.dist-info/RECORD,,