ngsolve 6.2.2501.post83.dev1__cp39-cp39-win_amd64.whl → 6.2.2502__cp39-cp39-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 (47) hide show
  1. netgen/include/facetfespace.hpp +2 -0
  2. netgen/include/fespace.hpp +2 -1
  3. netgen/include/mptools.hpp +305 -84
  4. netgen/include/ngblas.hpp +14 -0
  5. netgen/include/prolongation.hpp +20 -1
  6. netgen/include/python_ngstd.hpp +1 -0
  7. netgen/include/sparsecholesky.hpp +1 -1
  8. netgen/include/tensor.hpp +1 -1
  9. netgen/lib/libngsolve.lib +0 -0
  10. netgen/libngsolve.dll +0 -0
  11. ngsolve/cmake/NGSolveConfig.cmake +1 -1
  12. ngsolve/config/config.py +6 -6
  13. ngsolve/ngslib.pyd +0 -0
  14. {ngsolve-6.2.2501.post83.dev1.dist-info → ngsolve-6.2.2502.dist-info}/METADATA +1 -1
  15. {ngsolve-6.2.2501.post83.dev1.dist-info → ngsolve-6.2.2502.dist-info}/RECORD +47 -47
  16. {ngsolve-6.2.2501.post83.dev1.data → ngsolve-6.2.2502.data}/data/Scripts/ngsolve.tcl +0 -0
  17. {ngsolve-6.2.2501.post83.dev1.data → ngsolve-6.2.2502.data}/data/share/ngsolve/beam.geo +0 -0
  18. {ngsolve-6.2.2501.post83.dev1.data → ngsolve-6.2.2502.data}/data/share/ngsolve/beam.vol +0 -0
  19. {ngsolve-6.2.2501.post83.dev1.data → ngsolve-6.2.2502.data}/data/share/ngsolve/chip.in2d +0 -0
  20. {ngsolve-6.2.2501.post83.dev1.data → ngsolve-6.2.2502.data}/data/share/ngsolve/chip.vol +0 -0
  21. {ngsolve-6.2.2501.post83.dev1.data → ngsolve-6.2.2502.data}/data/share/ngsolve/coil.geo +0 -0
  22. {ngsolve-6.2.2501.post83.dev1.data → ngsolve-6.2.2502.data}/data/share/ngsolve/coil.vol +0 -0
  23. {ngsolve-6.2.2501.post83.dev1.data → ngsolve-6.2.2502.data}/data/share/ngsolve/coilshield.geo +0 -0
  24. {ngsolve-6.2.2501.post83.dev1.data → ngsolve-6.2.2502.data}/data/share/ngsolve/coilshield.vol +0 -0
  25. {ngsolve-6.2.2501.post83.dev1.data → ngsolve-6.2.2502.data}/data/share/ngsolve/cube.geo +0 -0
  26. {ngsolve-6.2.2501.post83.dev1.data → ngsolve-6.2.2502.data}/data/share/ngsolve/cube.vol +0 -0
  27. {ngsolve-6.2.2501.post83.dev1.data → ngsolve-6.2.2502.data}/data/share/ngsolve/d10_DGdoubleglazing.pde +0 -0
  28. {ngsolve-6.2.2501.post83.dev1.data → ngsolve-6.2.2502.data}/data/share/ngsolve/d11_chip_nitsche.pde +0 -0
  29. {ngsolve-6.2.2501.post83.dev1.data → ngsolve-6.2.2502.data}/data/share/ngsolve/d1_square.pde +0 -0
  30. {ngsolve-6.2.2501.post83.dev1.data → ngsolve-6.2.2502.data}/data/share/ngsolve/d2_chip.pde +0 -0
  31. {ngsolve-6.2.2501.post83.dev1.data → ngsolve-6.2.2502.data}/data/share/ngsolve/d3_helmholtz.pde +0 -0
  32. {ngsolve-6.2.2501.post83.dev1.data → ngsolve-6.2.2502.data}/data/share/ngsolve/d4_cube.pde +0 -0
  33. {ngsolve-6.2.2501.post83.dev1.data → ngsolve-6.2.2502.data}/data/share/ngsolve/d5_beam.pde +0 -0
  34. {ngsolve-6.2.2501.post83.dev1.data → ngsolve-6.2.2502.data}/data/share/ngsolve/d6_shaft.pde +0 -0
  35. {ngsolve-6.2.2501.post83.dev1.data → ngsolve-6.2.2502.data}/data/share/ngsolve/d7_coil.pde +0 -0
  36. {ngsolve-6.2.2501.post83.dev1.data → ngsolve-6.2.2502.data}/data/share/ngsolve/d8_coilshield.pde +0 -0
  37. {ngsolve-6.2.2501.post83.dev1.data → ngsolve-6.2.2502.data}/data/share/ngsolve/d9_hybridDG.pde +0 -0
  38. {ngsolve-6.2.2501.post83.dev1.data → ngsolve-6.2.2502.data}/data/share/ngsolve/doubleglazing.in2d +0 -0
  39. {ngsolve-6.2.2501.post83.dev1.data → ngsolve-6.2.2502.data}/data/share/ngsolve/doubleglazing.vol +0 -0
  40. {ngsolve-6.2.2501.post83.dev1.data → ngsolve-6.2.2502.data}/data/share/ngsolve/piezo2d40round4.vol.gz +0 -0
  41. {ngsolve-6.2.2501.post83.dev1.data → ngsolve-6.2.2502.data}/data/share/ngsolve/shaft.geo +0 -0
  42. {ngsolve-6.2.2501.post83.dev1.data → ngsolve-6.2.2502.data}/data/share/ngsolve/shaft.vol +0 -0
  43. {ngsolve-6.2.2501.post83.dev1.data → ngsolve-6.2.2502.data}/data/share/ngsolve/square.in2d +0 -0
  44. {ngsolve-6.2.2501.post83.dev1.data → ngsolve-6.2.2502.data}/data/share/ngsolve/square.vol +0 -0
  45. {ngsolve-6.2.2501.post83.dev1.dist-info → ngsolve-6.2.2502.dist-info}/LICENSE +0 -0
  46. {ngsolve-6.2.2501.post83.dev1.dist-info → ngsolve-6.2.2502.dist-info}/WHEEL +0 -0
  47. {ngsolve-6.2.2501.post83.dev1.dist-info → ngsolve-6.2.2502.dist-info}/top_level.txt +0 -0
@@ -88,6 +88,8 @@ namespace ngcomp
88
88
  using FESpace::GetDofNrs;
89
89
  virtual void GetDofNrs (ElementId ei, Array<DofId> & dnums) const override;
90
90
 
91
+ const auto & GetFirstFacetDof() const { return first_facet_dof; }
92
+
91
93
  IntRange GetFacetDofs (int nr) const
92
94
  {
93
95
  return IntRange (first_facet_dof[nr], first_facet_dof[nr+1]);
@@ -92,6 +92,7 @@ ANY 1 1 1 1 | 15
92
92
 
93
93
 
94
94
  class FESpace;
95
+ class BilinearForm;
95
96
 
96
97
  // will be size_t some day
97
98
  typedef int DofId;
@@ -639,7 +640,7 @@ ANY 1 1 1 1 | 15
639
640
  /// Set multigrid prolongation
640
641
  // void SetProlongation (ngmg::Prolongation * aprol)
641
642
  // { prol = aprol; }
642
-
643
+ virtual void SetHarmonicProlongation (shared_ptr<BilinearForm> bfa);
643
644
 
644
645
  /// returns function-evaluator
645
646
  shared_ptr<DifferentialOperator> GetEvaluator (VorB vb = VOL) const
@@ -14,23 +14,21 @@ namespace ngfem
14
14
  {
15
15
 
16
16
 
17
-
17
+ template <typename entry_type = Complex>
18
18
  class NGS_DLL_HEADER SphericalHarmonics
19
19
  {
20
20
  int order;
21
- Vector<Complex> coefs;
21
+ Vector<entry_type> coefs;
22
22
 
23
23
  public:
24
24
  SphericalHarmonics (int aorder)
25
25
  : order(aorder), coefs(sqr(order+1)) { coefs=0.0; }
26
26
 
27
27
  int Order() const { return order; }
28
- FlatVector<Complex> Coefs() const { return coefs; }
29
-
30
- Complex & Coef(int n, int m)
31
- {
32
- return coefs(n*(n+1) + m);
33
- }
28
+ FlatVector<entry_type> Coefs() const { return coefs; }
29
+
30
+ entry_type & Coef(int n, int m) { return coefs(n*(n+1) + m); }
31
+ entry_type Coef(int n, int m) const { return coefs(n*(n+1) + m); }
34
32
 
35
33
  auto CoefsN (int n) const
36
34
  {
@@ -53,29 +51,29 @@ namespace ngfem
53
51
  return { theta, phi };
54
52
  }
55
53
 
56
- Complex Eval (Vec<3> x) const
54
+ entry_type Eval (Vec<3> x) const
57
55
  {
58
56
  auto [theta, phi] = Polar(x);
59
57
  return Eval(theta, phi);
60
58
  }
61
59
 
62
- Complex Eval (double theta, double phi) const;
60
+ entry_type Eval (double theta, double phi) const;
63
61
 
64
- Complex EvalOrder (int n, Vec<3> x) const
62
+ entry_type EvalOrder (int n, Vec<3> x) const
65
63
  {
66
64
  auto [theta, phi] = Polar (x);
67
65
  return EvalOrder(n, theta, phi);
68
66
  }
69
67
 
70
- Complex EvalOrder (int n, double theta, double phi) const;
68
+ entry_type EvalOrder (int n, double theta, double phi) const;
71
69
 
72
- void EvalOrders (Vec<3> x, FlatVector<Complex> vals) const
70
+ void EvalOrders (Vec<3> x, FlatVector<entry_type> vals) const
73
71
  {
74
72
  auto [theta, phi] = Polar(x);
75
73
  return EvalOrders(theta, phi, vals);
76
74
  }
77
75
 
78
- void EvalOrders (double theta, double phi, FlatVector<Complex> vals) const;
76
+ void EvalOrders (double theta, double phi, FlatVector<entry_type> vals) const;
79
77
 
80
78
  void Calc (Vec<3> x, FlatVector<Complex> shapes);
81
79
 
@@ -106,7 +104,7 @@ namespace ngfem
106
104
 
107
105
  // Nail A. Gumerov and Ramani Duraiswami book, formula (2.2.12)
108
106
  // add directional derivative divided by kappa to res, both multipoles need same scaling
109
- void DirectionalDiffAdd (Vec<3> d, SphericalHarmonics & res, double scale = 1);
107
+ void DirectionalDiffAdd (Vec<3> d, SphericalHarmonics<entry_type> & res, double scale = 1) const;
110
108
 
111
109
  };
112
110
 
@@ -234,24 +232,24 @@ namespace ngfem
234
232
 
235
233
 
236
234
 
237
- template <typename RADIAL>
235
+ template <typename RADIAL, typename entry_type=Complex>
238
236
  class NGS_DLL_HEADER MultiPole
239
237
  {
240
- SphericalHarmonics sh;
238
+ SphericalHarmonics<entry_type> sh;
241
239
  double kappa;
242
240
  double scale;
243
241
  public:
244
242
  MultiPole (int aorder, double akappa, double ascale = 1)
245
243
  : sh(aorder), kappa(akappa), scale(ascale) { }
246
244
 
247
- Complex & Coef(int n, int m) { return sh.Coef(n,m); }
245
+ entry_type & Coef(int n, int m) { return sh.Coef(n,m); }
248
246
  auto & SH() { return sh; }
249
247
  const auto & SH() const { return sh; }
250
248
  double Kappa() const { return kappa; }
251
249
  double Scale() const { return scale; }
252
250
  int Order() const { return sh.Order(); }
253
251
 
254
- MultiPole<RADIAL> Truncate(int neworder) const
252
+ MultiPole Truncate(int neworder) const
255
253
  {
256
254
  if (neworder > sh.Order()) neworder=sh.Order();
257
255
  MultiPole nmp(neworder, kappa);
@@ -266,10 +264,12 @@ namespace ngfem
266
264
  return *this;
267
265
  }
268
266
 
269
- Complex Eval (Vec<3> x) const;
267
+ entry_type Eval (Vec<3> x) const;
268
+ entry_type EvalDirectionalDerivative (Vec<3> x, Vec<3> d) const;
270
269
 
271
- void AddCharge (Vec<3> x, Complex c);
272
- void AddDipole (Vec<3> x, Vec<3> d, Complex c);
270
+ void AddCharge (Vec<3> x, entry_type c);
271
+ void AddDipole (Vec<3> x, Vec<3> d, entry_type c);
272
+ void AddCurrent (Vec<3> ap, Vec<3> ep, Complex j, int num=100);
273
273
 
274
274
 
275
275
  void ChangeScaleTo (double newscale)
@@ -295,7 +295,7 @@ namespace ngfem
295
295
 
296
296
 
297
297
  template <typename TARGET>
298
- void Transform (MultiPole<TARGET> & target, Vec<3> dist) const
298
+ void Transform (MultiPole<TARGET,entry_type> & target, Vec<3> dist) const
299
299
  {
300
300
  if (target.SH().Order() < 0) return;
301
301
  if (SH().Order() < 0)
@@ -321,7 +321,7 @@ namespace ngfem
321
321
  phi = atan2(dist(1), dist(0));
322
322
 
323
323
 
324
- MultiPole<RADIAL> tmp(*this);
324
+ MultiPole<RADIAL,entry_type> tmp(*this);
325
325
  tmp.SH().RotateZ(phi);
326
326
  tmp.SH().RotateY(theta);
327
327
 
@@ -332,18 +332,18 @@ namespace ngfem
332
332
  }
333
333
 
334
334
  template <typename TARGET>
335
- void TransformAdd (MultiPole<TARGET> & target, Vec<3> dist) const
335
+ void TransformAdd (MultiPole<TARGET,entry_type> & target, Vec<3> dist) const
336
336
  {
337
337
  if (SH().Order() < 0) return;
338
338
  if (target.SH().Order() < 0) return;
339
339
 
340
- MultiPole<TARGET> tmp{target};
340
+ MultiPole<TARGET,entry_type> tmp{target};
341
341
  Transform(tmp, dist);
342
342
  target.SH().Coefs() += tmp.SH().Coefs();
343
343
  }
344
344
 
345
345
  template <typename TARGET>
346
- void ShiftZ (double z, MultiPole<TARGET> & target);
346
+ void ShiftZ (double z, MultiPole<TARGET,entry_type> & target);
347
347
 
348
348
  };
349
349
 
@@ -351,12 +351,14 @@ namespace ngfem
351
351
 
352
352
  // ***************** parameters ****************
353
353
 
354
- static int MPOrder (double rho_kappa)
354
+ static constexpr int MPOrder (double rho_kappa)
355
355
  {
356
356
  return max (20, int(2*rho_kappa));
357
357
  }
358
358
  static constexpr int maxdirect = 100;
359
359
 
360
+
361
+ template <typename entry_type=Complex>
360
362
  class SingularMLMultiPole
361
363
  {
362
364
  static Array<size_t> nodes_on_level;
@@ -367,10 +369,11 @@ namespace ngfem
367
369
  double r;
368
370
  int level;
369
371
  std::array<unique_ptr<Node>,8> childs;
370
- MultiPole<MPSingular> mp;
372
+ MultiPole<MPSingular, entry_type> mp;
371
373
 
372
- Array<tuple<Vec<3>, Complex>> charges;
373
- Array<tuple<Vec<3>, Vec<3>, Complex>> dipoles;
374
+ Array<tuple<Vec<3>, entry_type>> charges;
375
+ Array<tuple<Vec<3>, Vec<3>, entry_type>> dipoles;
376
+ Array<tuple<Vec<3>, Vec<3>, Complex,int>> currents;
374
377
  int total_sources;
375
378
 
376
379
  Node (Vec<3> acenter, double ar, int alevel, int order, double kappa)
@@ -397,7 +400,7 @@ namespace ngfem
397
400
  }
398
401
 
399
402
 
400
- void AddCharge (Vec<3> x, Complex c)
403
+ void AddCharge (Vec<3> x, entry_type c)
401
404
  {
402
405
  if (childs[0])
403
406
  {
@@ -422,13 +425,16 @@ namespace ngfem
422
425
  AddCharge (x,c);
423
426
  for (auto [x,d,c] : dipoles)
424
427
  AddDipole (x,d,c);
428
+ for (auto [sp,ep,j,num] : currents)
429
+ AddCurrent (sp,ep,j,num);
425
430
 
426
431
  charges.SetSize0();
427
- dipoles.SetSize0();
432
+ dipoles.SetSize0();
433
+ currents.SetSize0();
428
434
  }
429
435
 
430
436
 
431
- void AddDipole (Vec<3> x, Vec<3> d, Complex c)
437
+ void AddDipole (Vec<3> x, Vec<3> d, entry_type c)
432
438
  {
433
439
  if (childs[0])
434
440
  {
@@ -453,15 +459,70 @@ namespace ngfem
453
459
  AddCharge (x,c);
454
460
  for (auto [x,d,c] : dipoles)
455
461
  AddDipole (x,d,c);
462
+ for (auto [sp,ep,j,num] : currents)
463
+ AddCurrent (sp,ep,j,num);
456
464
 
457
465
  charges.SetSize0();
458
466
  dipoles.SetSize0();
467
+ currents.SetSize0();
468
+ }
469
+
470
+ void AddCurrent (Vec<3> sp, Vec<3> ep, Complex j, int num)
471
+ {
472
+ if (childs[0])
473
+ {
474
+ // split line and send to childs
475
+ Array<double> split;
476
+ split.Append(0);
477
+ for (int i = 0; i < 3; i++)
478
+ if (sp(i) < center(i) != ep(i) < center(i))
479
+ split += (center(i)-sp(i)) / (ep(i)-sp(i)); // segment cuts i-th coordinate plane
480
+ split.Append(1);
481
+ BubbleSort(split);
482
+
483
+ for (int i = 0; i < split.Size()-1; i++)
484
+ if (split[i+1] > split[i])
485
+ {
486
+ Vec<3> spi = sp + split[i]*(ep-sp);
487
+ Vec<3> epi = sp + split[i+1]*(ep-sp);
488
+
489
+ Vec<3> x = 0.5*(spi+epi);
490
+
491
+ int childnum = 0;
492
+ if (x(0) > center(0)) childnum += 1;
493
+ if (x(1) > center(1)) childnum += 2;
494
+ if (x(2) > center(2)) childnum += 4;
495
+ childs[childnum] -> AddCurrent(spi, epi, j, num);
496
+ }
497
+ return;
498
+ }
499
+
500
+ currents.Append (tuple{sp,ep,j,num});
501
+
502
+ // if (currents.Size() < maxdirect || r < 1e-8)
503
+ if (currents.Size() < 4 || r < 1e-8)
504
+ return;
505
+
506
+ CreateChilds();
507
+
508
+ for (auto [x,c] : charges)
509
+ AddCharge (x,c);
510
+ for (auto [x,d,c] : dipoles)
511
+ AddDipole (x,d,c);
512
+ for (auto [sp,ep,j,num] : currents)
513
+ AddCurrent (sp,ep,j,num);
514
+
515
+ charges.SetSize0();
516
+ dipoles.SetSize0();
517
+ currents.SetSize0();
459
518
  }
460
519
 
520
+
461
521
 
462
- Complex Evaluate(Vec<3> p) const
522
+
523
+ entry_type Evaluate(Vec<3> p) const
463
524
  {
464
- Complex sum = 0;
525
+ entry_type sum{0.0};
465
526
  if (childs[0])
466
527
  {
467
528
  for (auto & child : childs)
@@ -471,17 +532,63 @@ namespace ngfem
471
532
 
472
533
  for (auto [x,c] : charges)
473
534
  if (double rho = L2Norm(p-x); rho > 0)
474
- sum += c*(1/(4*M_PI))*exp(Complex(0,rho*mp.Kappa())) / rho;
535
+ sum += (1/(4*M_PI))*exp(Complex(0,rho*mp.Kappa())) / rho * c;
475
536
 
476
537
  for (auto [x,d,c] : dipoles)
477
538
  if (double rho = L2Norm(p-x); rho > 0)
478
539
  {
479
540
  Vec<3> drhodp = 1.0/rho * (p-x);
480
- Complex dGdrho = c*(1/(4*M_PI))*exp(Complex(0,rho*mp.Kappa())) *
541
+ Complex dGdrho = (1/(4*M_PI))*exp(Complex(0,rho*mp.Kappa())) *
481
542
  (Complex(0, mp.Kappa())/rho - 1.0/sqr(rho));
482
- sum += dGdrho * InnerProduct(drhodp, d);
543
+ sum += dGdrho * InnerProduct(drhodp, d) * c;
483
544
  }
484
545
 
546
+ for (auto [sp,ep,j,num] : currents)
547
+ {
548
+ // should use explizit formula instead ...
549
+
550
+ Vec<3> tau = ep-sp;
551
+ Vec<3> tau_num = 1.0/num * tau;
552
+ for (int i = 0; i < num; i++)
553
+ {
554
+ Vec<3> x = sp+(i+0.5)*tau_num;
555
+
556
+ if (double rho = L2Norm(p-x); rho > 0)
557
+ {
558
+ Vec<3> drhodp = 1.0/rho * (p-x);
559
+ Complex dGdrho = (1/(4*M_PI))*exp(Complex(0,rho*mp.Kappa())) *
560
+ (Complex(0, mp.Kappa())/rho - 1.0/sqr(rho));
561
+
562
+ if constexpr (std::is_same<entry_type, Vec<3,Complex>>())
563
+ sum += j*dGdrho * Cross(drhodp, tau_num);
564
+ }
565
+ }
566
+ }
567
+
568
+ return sum;
569
+ }
570
+
571
+ entry_type EvaluateDeriv(Vec<3> p, Vec<3> d) const
572
+ {
573
+ entry_type sum = 0;
574
+ if (childs[0])
575
+ {
576
+ for (auto & child : childs)
577
+ sum += child->EvaluateDeriv(p, d);
578
+ return sum;
579
+ }
580
+
581
+ if (dipoles.Size())
582
+ throw Exception("EvaluateDeriv not implemented for dipoles in SingularMLMultiPole");
583
+
584
+ for (auto [x,c] : charges)
585
+ if (double rho = L2Norm(p-x); rho > 0)
586
+ {
587
+ Vec<3> drhodp = 1.0/rho * (p-x);
588
+ Complex dGdrho = (1/(4*M_PI))*exp(Complex(0,rho*mp.Kappa())) *
589
+ (Complex(0, mp.Kappa())/rho - 1.0/sqr(rho));
590
+ sum += dGdrho * InnerProduct(drhodp, d) * c;
591
+ }
485
592
  return sum;
486
593
  }
487
594
 
@@ -516,9 +623,9 @@ namespace ngfem
516
623
  }
517
624
  else
518
625
  {
519
- if (charges.Size()+dipoles.Size() == 0)
626
+ if (charges.Size()+dipoles.Size()+currents.Size() == 0)
520
627
  {
521
- mp = MultiPole<MPSingular> (-1, mp.Kappa());
628
+ mp = MultiPole<MPSingular,entry_type> (-1, mp.Kappa());
522
629
  return;
523
630
  }
524
631
 
@@ -527,10 +634,13 @@ namespace ngfem
527
634
 
528
635
  for (auto [x,d,c] : dipoles)
529
636
  mp.AddDipole (x-center, d, c);
637
+
638
+ for (auto [sp,ep,j,num] : currents)
639
+ mp.AddCurrent (sp-center, ep-center, j, num);
530
640
  }
531
641
  }
532
642
 
533
- Complex EvaluateMP(Vec<3> p) const
643
+ entry_type EvaluateMP(Vec<3> p) const
534
644
  {
535
645
  if (charges.Size() || dipoles.Size())
536
646
  return Evaluate(p);
@@ -541,22 +651,43 @@ namespace ngfem
541
651
  if (!childs[0]) // || level==1)
542
652
  return Evaluate(p);
543
653
 
544
- Complex sum = 0.0;
654
+ entry_type sum{0.0};
545
655
  for (auto & child : childs)
546
656
  sum += child->EvaluateMP(p);
547
657
  return sum;
548
658
  }
549
-
550
-
551
- void Print (ostream & ost) const
659
+
660
+ entry_type EvaluateMPDeriv(Vec<3> p, Vec<3> d) const
552
661
  {
553
- ost << "c = " << center << ", r = " << r << endl;
662
+ // cout << "EvaluateMPDeriv Singular, p = " << p << ", d = " << d << ", r = " << r << ", center = " << center << endl;
663
+ // cout << "Norm: " << L2Norm(p-center) << " > " << 3*r << endl;
664
+ // cout << "charges.Size() = " << charges.Size() << ", dipoles.Size() = " << dipoles.Size() << endl;
665
+ if (charges.Size() || dipoles.Size() || !childs[0])
666
+ return EvaluateDeriv(p, d);
667
+
668
+ if (L2Norm(p-center) > 3*r)
669
+ return mp.EvalDirectionalDerivative(p-center, d);
670
+
671
+ entry_type sum{0.0};
672
+ for (auto & child : childs)
673
+ sum += child->EvaluateMPDeriv(p, d);
674
+ return sum;
675
+ }
676
+
677
+ void Print (ostream & ost, size_t childnr = -1) const
678
+ {
679
+ if (childnr == -1)
680
+ ost << "c = " << center << ", r = " << r << ", level = " << level << endl;
681
+ else
682
+ ost << "c = " << center << ", r = " << r << ", level = " << level << ", childnr = " << childnr << endl;
554
683
  // for (int i = 0; i < loc_pnts.Size(); i++)
555
684
  for (auto [x,c] : charges)
556
685
  ost << "xi = " << x << ", ci = " << c << endl;
686
+ for (auto [x,d,c] : dipoles)
687
+ ost << "xi = " << x << ", di = " << d << ", ci = " << c << endl;
557
688
 
558
689
  for (int i = 0; i < 8; i++)
559
- if (childs[i]) childs[i] -> Print (ost);
690
+ if (childs[i]) childs[i] -> Print (ost, i);
560
691
  }
561
692
 
562
693
  double Norm () const
@@ -601,6 +732,31 @@ namespace ngfem
601
732
  root.AddDipole(x, d, c);
602
733
  }
603
734
 
735
+ void AddCurrent (Vec<3> sp, Vec<3> ep, Complex j, int num)
736
+ {
737
+ if constexpr (!std::is_same<entry_type, Vec<3,Complex>>())
738
+ throw Exception("AddCurrent needs a singular vectorial MP");
739
+
740
+ root.AddCurrent (sp, ep, j, num);
741
+ /*
742
+ // for testing
743
+ Vec<3> tau = ep-sp;
744
+ Vec<3> tau_num = 1.0/num * tau;
745
+ for (int i = 0; i < num; i++)
746
+ {
747
+ for (int k = 0; k < 3; k++)
748
+ {
749
+ Vec<3> ek{0.0}; ek(k) = 1;
750
+ Vec<3> cp = Cross(tau, ek);
751
+ Vec<3,Complex> source{0.0};
752
+ source(k) = j/double(num);
753
+ if constexpr (std::is_same<entry_type, Vec<3,Complex>>())
754
+ root.AddDipole (sp+(i+0.5)*tau_num, cp, source);
755
+ }
756
+ }
757
+ */
758
+ }
759
+
604
760
  void Print (ostream & ost) const
605
761
  {
606
762
  root.Print(ost);
@@ -634,7 +790,7 @@ namespace ngfem
634
790
  havemp = true;
635
791
  }
636
792
 
637
- Complex Evaluate (Vec<3> p) const
793
+ entry_type Evaluate (Vec<3> p) const
638
794
  {
639
795
  if (havemp)
640
796
  return root.EvaluateMP(p);
@@ -642,17 +798,20 @@ namespace ngfem
642
798
  return root.Evaluate(p);
643
799
  }
644
800
 
801
+ template <typename entry_type2>
645
802
  friend class RegularMLMultiPole;
646
803
  };
647
804
 
648
805
 
649
- inline ostream & operator<< (ostream & ost, const SingularMLMultiPole & mlmp)
806
+ template <typename entry_type>
807
+ inline ostream & operator<< (ostream & ost, const SingularMLMultiPole<entry_type> & mlmp)
650
808
  {
651
809
  mlmp.Print(ost);
652
810
  return ost;
653
811
  }
654
812
 
655
813
 
814
+ template <typename elem_type=Complex>
656
815
  class NGS_DLL_HEADER RegularMLMultiPole
657
816
  {
658
817
  static Array<size_t> nodes_on_level;
@@ -663,11 +822,11 @@ namespace ngfem
663
822
  double r;
664
823
  int level;
665
824
  std::array<unique_ptr<Node>,8> childs;
666
- MultiPole<MPRegular> mp;
825
+ MultiPole<MPRegular,elem_type> mp;
667
826
  Array<Vec<3>> targets;
668
827
  int total_targets;
669
828
 
670
- Array<const SingularMLMultiPole::Node*> singnodes;
829
+ Array<const typename SingularMLMultiPole<elem_type>::Node*> singnodes;
671
830
 
672
831
  Node (Vec<3> acenter, double ar, int alevel, int order, double kappa)
673
832
  : center(acenter), r(ar), level(alevel), mp(MPOrder(ar*kappa), kappa, 1.0/min(1.0, 0.25*r*kappa))
@@ -692,7 +851,7 @@ namespace ngfem
692
851
  }
693
852
  }
694
853
 
695
- void AddSingularNode (const SingularMLMultiPole::Node & singnode, bool allow_refine)
854
+ void AddSingularNode (const typename SingularMLMultiPole<elem_type>::Node & singnode, bool allow_refine)
696
855
  {
697
856
  if (mp.SH().Order() < 0) return;
698
857
  if (singnode.mp.SH().Order() < 0) return;
@@ -781,15 +940,15 @@ namespace ngfem
781
940
  mp.TransformAdd (ch->mp, ch->center-center);
782
941
  ch->LocalizeExpansion(allow_refine);
783
942
  }
784
- mp = MultiPole<MPRegular>(-1, mp.Kappa());
943
+ mp = MultiPole<MPRegular,elem_type>(-1, mp.Kappa());
785
944
  //mp.SH().Coefs()=0.0;
786
945
  }
787
946
  }
788
947
 
789
- Complex Evaluate (Vec<3> p) const
948
+ elem_type Evaluate (Vec<3> p) const
790
949
  {
791
950
  // *testout << "eval p = " << p << ", level = " << level << ", center = " << center << ", r = " << r << endl;
792
- Complex sum = 0.0;
951
+ elem_type sum{0.0};
793
952
  /*
794
953
  if (childs[0])
795
954
  {
@@ -817,6 +976,28 @@ namespace ngfem
817
976
  return sum;
818
977
  }
819
978
 
979
+ elem_type EvaluateDirectionalDerivative (Vec<3> p, Vec<3> d) const
980
+ {
981
+ elem_type sum{0.0};
982
+ // cout << "EvaluateDirectionalDerivative RegularMLMP, r = " << r << ", level = " << level << ", center = " << center << endl;
983
+ // cout << "Singnodes: " << singnodes.Size() << ", childs: " << childs[0] << endl;
984
+
985
+ int childnum = 0;
986
+ if (p(0) > center(0)) childnum += 1;
987
+ if (p(1) > center(1)) childnum += 2;
988
+ if (p(2) > center(2)) childnum += 4;
989
+ if (childs[childnum])
990
+ sum = childs[childnum]->EvaluateDirectionalDerivative(p, d);
991
+ else
992
+ sum = mp.EvalDirectionalDerivative(p-center, d);
993
+
994
+ static Timer t("mptool direct evaluate deriv"); RegionTimer r(t);
995
+ for (auto sn : singnodes)
996
+ sum += sn->EvaluateMPDeriv(p, d);
997
+
998
+ return sum;
999
+ }
1000
+
820
1001
  double Norm() const
821
1002
  {
822
1003
  double norm = L2Norm(mp.SH().Coefs());
@@ -886,13 +1067,27 @@ namespace ngfem
886
1067
  mp = MultiPole<MPRegular>(-1, mp.Kappa());
887
1068
  }
888
1069
 
1070
+
1071
+ void Print (ostream & ost, size_t childnr = -1) const
1072
+ {
1073
+ if (childnr == -1)
1074
+ ost << "c = " << center << ", r = " << r << ", level = " << level << endl;
1075
+ else
1076
+ ost << "c = " << center << ", r = " << r << ", level = " << level << ", childnr = " << childnr << endl;
1077
+ for (auto x : targets)
1078
+ ost << "xi = " << x << endl;
1079
+
1080
+ for (int i = 0; i < 8; i++)
1081
+ if (childs[i]) childs[i] -> Print (ost, i);
1082
+ }
1083
+
889
1084
  };
890
1085
 
891
1086
  Node root;
892
- shared_ptr<SingularMLMultiPole> singmp;
1087
+ shared_ptr<SingularMLMultiPole<elem_type>> singmp;
893
1088
 
894
1089
  public:
895
- RegularMLMultiPole (shared_ptr<SingularMLMultiPole> asingmp, Vec<3> center, double r, int order)
1090
+ RegularMLMultiPole (shared_ptr<SingularMLMultiPole<elem_type>> asingmp, Vec<3> center, double r, int order)
896
1091
  : root(center, r, 0, order, asingmp->Kappa()), singmp(asingmp)
897
1092
  {
898
1093
  if (!singmp->havemp) throw Exception("first call Calc for singular MP");
@@ -934,7 +1129,7 @@ namespace ngfem
934
1129
  root.AddTarget (t);
935
1130
  }
936
1131
 
937
- void CalcMP(shared_ptr<SingularMLMultiPole> asingmp)
1132
+ void CalcMP(shared_ptr<SingularMLMultiPole<elem_type>> asingmp)
938
1133
  {
939
1134
  singmp = asingmp;
940
1135
 
@@ -955,6 +1150,11 @@ namespace ngfem
955
1150
  root.LocalizeExpansion(false);
956
1151
  }
957
1152
 
1153
+ void Print (ostream & ost) const
1154
+ {
1155
+ root.Print(ost);
1156
+ }
1157
+
958
1158
  double Norm() const
959
1159
  {
960
1160
  return root.Norm();
@@ -965,21 +1165,26 @@ namespace ngfem
965
1165
  return root.NumCoefficients();
966
1166
  }
967
1167
 
968
- Complex Evaluate (Vec<3> p) const
1168
+ elem_type Evaluate (Vec<3> p) const
969
1169
  {
970
1170
  // static Timer t("mptool Eval MLMP regular"); RegionTimer r(t);
971
- if (L2Norm(p-root.center) > root.r) return 0.0;
1171
+ if (L2Norm(p-root.center) > root.r) return elem_type{0.0};
972
1172
  return root.Evaluate(p);
973
1173
  }
974
1174
 
975
-
1175
+ elem_type EvaluateDirectionalDerivative (Vec<3> p, Vec<3> d) const
1176
+ {
1177
+ if (L2Norm(p-root.center) > root.r) return elem_type{0.0};
1178
+ return root.EvaluateDirectionalDerivative(p, d);
1179
+ }
1180
+
976
1181
  };
977
-
978
1182
 
979
- inline ostream & operator<< (ostream & ost, const RegularMLMultiPole & mlmp)
1183
+ template <typename elem_type>
1184
+ inline ostream & operator<< (ostream & ost, const RegularMLMultiPole<elem_type> & mlmp)
980
1185
  {
981
- // mlmp.Print(ost);
982
- ost << "RegularMLMultiPole" << endl;
1186
+ mlmp.Print(ost);
1187
+ // ost << "RegularMLMultiPole" << endl;
983
1188
  return ost;
984
1189
  }
985
1190
 
@@ -993,7 +1198,7 @@ namespace ngfem
993
1198
 
994
1199
  class SphericalHarmonicsCF : public CoefficientFunction
995
1200
  {
996
- SphericalHarmonics sh;
1201
+ SphericalHarmonics<Complex> sh;
997
1202
  public:
998
1203
  SphericalHarmonicsCF (int order)
999
1204
  : CoefficientFunction(1, true), sh(order) { }
@@ -1021,16 +1226,16 @@ namespace ngfem
1021
1226
 
1022
1227
 
1023
1228
 
1024
- template <typename RADIAL>
1229
+ template <typename RADIAL, typename entry_type=Complex>
1025
1230
  class MultiPoleCF : public CoefficientFunction
1026
1231
  {
1027
- MultiPole<RADIAL> mp;
1232
+ MultiPole<RADIAL, entry_type> mp;
1028
1233
  Vec<3> center;
1029
1234
  public:
1030
1235
  MultiPoleCF (int order, double kappa, Vec<3> acenter, double scale = 1)
1031
- : CoefficientFunction(1, true), mp(order, kappa, scale), center(acenter) { }
1236
+ : CoefficientFunction(sizeof(entry_type)/sizeof(Complex), true), mp(order, kappa, scale), center(acenter) { }
1032
1237
 
1033
- Complex & Coef(int n, int m) { return mp.Coef(n,m); }
1238
+ entry_type & Coef(int n, int m) { return mp.Coef(n,m); }
1034
1239
  auto & SH() { return mp.SH(); }
1035
1240
  auto & MP() { return mp; }
1036
1241
  Vec<3> Center() const { return center; }
@@ -1040,56 +1245,72 @@ namespace ngfem
1040
1245
 
1041
1246
  virtual void Evaluate (const BaseMappedIntegrationPoint & mip, FlatVector<Complex> values) const override
1042
1247
  {
1043
- values(0) = mp.Eval(mip.GetPoint()-center);
1248
+ if constexpr (std::is_same<entry_type, Complex>())
1249
+ values(0) = mp.Eval(mip.GetPoint()-center);
1250
+ else
1251
+ values = mp.Eval(mip.GetPoint()-center);
1044
1252
  }
1045
1253
 
1046
1254
  template <typename TARGET>
1047
- void ShiftZ (double z, MultiPole<TARGET> & target) { mp.ShiftZ(z, target); }
1255
+ void ShiftZ (double z, MultiPole<TARGET, entry_type> & target) { mp.ShiftZ(z, target); }
1048
1256
 
1049
1257
  using CoefficientFunction::Transform;
1050
1258
  template <typename TARGET>
1051
- void Transform (MultiPoleCF<TARGET> & target)
1259
+ void Transform (MultiPoleCF<TARGET, entry_type> & target)
1052
1260
  {
1053
1261
  mp.Transform (target.MP(), target.Center()-center);
1054
1262
  }
1055
1263
  };
1056
1264
 
1057
-
1265
+ template <typename entry_type>
1058
1266
  class SingularMLMultiPoleCF : public CoefficientFunction
1059
1267
  {
1060
- shared_ptr<SingularMLMultiPole> mlmp;
1268
+ shared_ptr<SingularMLMultiPole<entry_type>> mlmp;
1061
1269
  public:
1062
1270
  SingularMLMultiPoleCF (Vec<3> center, double r, int order, double kappa)
1063
- : CoefficientFunction(1, true), mlmp{make_shared<SingularMLMultiPole>(center, r, order, kappa)} { }
1271
+ : CoefficientFunction(sizeof(entry_type)/sizeof(Complex), true), mlmp{make_shared<SingularMLMultiPole<entry_type>>(center, r, order, kappa)} { }
1064
1272
 
1065
1273
  virtual double Evaluate (const BaseMappedIntegrationPoint & ip) const override
1066
1274
  { throw Exception("real eval not available"); }
1067
1275
 
1068
1276
  virtual void Evaluate (const BaseMappedIntegrationPoint & mip, FlatVector<Complex> values) const override
1069
1277
  {
1070
- values(0) = mlmp->Evaluate(mip.GetPoint());
1278
+ // values(0) = mlmp->Evaluate(mip.GetPoint());
1279
+
1280
+ if constexpr (std::is_same<entry_type, Complex>())
1281
+ values(0) = mlmp->Evaluate(mip.GetPoint());
1282
+ else
1283
+ values = mlmp->Evaluate(mip.GetPoint());
1284
+
1285
+
1071
1286
  }
1072
1287
 
1073
- shared_ptr<SingularMLMultiPole> MLMP() { return mlmp; }
1288
+ shared_ptr<SingularMLMultiPole<entry_type>> MLMP() { return mlmp; }
1074
1289
  };
1075
1290
 
1076
1291
 
1292
+ template <typename entry_type>
1077
1293
  class RegularMLMultiPoleCF : public CoefficientFunction
1078
1294
  {
1079
- shared_ptr<RegularMLMultiPole> mlmp;
1295
+ shared_ptr<RegularMLMultiPole<entry_type>> mlmp;
1080
1296
  public:
1081
- RegularMLMultiPoleCF (shared_ptr<SingularMLMultiPoleCF> asingmp, Vec<3> center, double r, int order)
1082
- : CoefficientFunction(1, true), mlmp{make_shared<RegularMLMultiPole>(asingmp->MLMP(), center, r, order)} { }
1297
+ RegularMLMultiPoleCF (shared_ptr<SingularMLMultiPoleCF<entry_type>> asingmp, Vec<3> center, double r, int order)
1298
+ : CoefficientFunction(sizeof(entry_type)/sizeof(Complex), true), mlmp{make_shared<RegularMLMultiPole<entry_type>>(asingmp->MLMP(), center, r, order)} { }
1083
1299
 
1084
1300
  virtual double Evaluate (const BaseMappedIntegrationPoint & ip) const override
1085
1301
  { throw Exception("real eval not available"); }
1086
1302
 
1087
1303
  virtual void Evaluate (const BaseMappedIntegrationPoint & mip, FlatVector<Complex> values) const override
1088
1304
  {
1089
- values(0) = mlmp->Evaluate(mip.GetPoint());
1305
+ // values(0) = mlmp->Evaluate(mip.GetPoint());
1306
+
1307
+ if constexpr (std::is_same<entry_type, Complex>())
1308
+ values(0) = mlmp->Evaluate(mip.GetPoint());
1309
+ else
1310
+ values = mlmp->Evaluate(mip.GetPoint());
1090
1311
  }
1091
1312
 
1092
- shared_ptr<RegularMLMultiPole> MLMP() { return mlmp; }
1313
+ shared_ptr<RegularMLMultiPole<entry_type>> MLMP() { return mlmp; }
1093
1314
  };
1094
1315
 
1095
1316
 
netgen/include/ngblas.hpp CHANGED
@@ -655,6 +655,20 @@ namespace ngbla
655
655
  template <bool ADD, ORDERING ord>
656
656
  extern NGS_DLL_HEADER
657
657
  void NgGEMV (Complex s, BareSliceMatrix<double,ord> a, FlatVector<const Complex> x, FlatVector<Complex> y) NETGEN_NOEXCEPT;
658
+
659
+
660
+
661
+ template <bool ADD, ORDERING ord, int S>
662
+ void NgGEMV (Complex s, BareSliceMatrix<double,ord> a, SliceVector<Vec<S,Complex>> x, SliceVector<Vec<S,Complex>> y) NETGEN_NOEXCEPT
663
+ {
664
+ SliceMatrix<Complex> mx(x.Size(), S, S*x.Dist(), x.Data()->Data());
665
+ SliceMatrix<Complex> my(y.Size(), S, S*y.Dist(), y.Data()->Data());
666
+ if constexpr (ADD)
667
+ my += s * a.AddSize(y.Size(), x.Size()) * mx;
668
+ else
669
+ my = s * a.AddSize(y.Size(), x.Size()) * mx;
670
+ }
671
+
658
672
 
659
673
 
660
674
  template <bool ADD, ORDERING ord>
@@ -8,7 +8,7 @@
8
8
  /*********************************************************************/
9
9
 
10
10
  namespace ngcomp { class NedelecFESpace; }
11
-
11
+ namespace ngla { class SparseFactorization; }
12
12
  namespace ngmg
13
13
  {
14
14
 
@@ -229,6 +229,25 @@ namespace ngmg
229
229
  ///
230
230
  virtual void RestrictInline (int finelevel, BaseVector & v) const override;
231
231
  };
232
+
233
+ class NGS_DLL_HEADER HarmonicProlongation : public Prolongation
234
+ {
235
+ shared_ptr<Prolongation> baseprol;
236
+ shared_ptr<BilinearForm> bfa;
237
+ Array<shared_ptr<BaseMatrix>> innerinverses;
238
+ Array<size_t> edges_on_level;
239
+ public:
240
+ HarmonicProlongation (shared_ptr<Prolongation> abaseprol,
241
+ shared_ptr<BilinearForm> abfa);
242
+
243
+ virtual void Update (const FESpace & fes) override;
244
+
245
+ virtual size_t GetNDofLevel (int level) override { return baseprol->GetNDofLevel(level); }
246
+
247
+ virtual shared_ptr<SparseMatrix< double >> CreateProlongationMatrix( int finelevel ) const override;
248
+ virtual void ProlongateInline (int finelevel, BaseVector & v) const override;
249
+ virtual void RestrictInline (int finelevel, BaseVector & v) const override;
250
+ };
232
251
  }
233
252
 
234
253
 
@@ -12,6 +12,7 @@
12
12
  #endif
13
13
 
14
14
  #include <pybind11/pybind11.h>
15
+ #include <pybind11/iostream.h>
15
16
  #include <pybind11/eval.h>
16
17
  #include <pybind11/operators.h>
17
18
  #include <pybind11/complex.h>
@@ -34,7 +34,7 @@ namespace ngla
34
34
 
35
35
  void DoArchive(Archive& ar) override;
36
36
 
37
- virtual bool IsComplex() const override { return matrix.lock()->IsComplex(); }
37
+ // virtual bool IsComplex() const override { return matrix.lock()->IsComplex(); }
38
38
 
39
39
  virtual void Smooth (BaseVector & u, const BaseVector & f, BaseVector & y) const;
40
40
 
netgen/include/tensor.hpp CHANGED
@@ -371,7 +371,7 @@ public:
371
371
 
372
372
  ~Tensor()
373
373
  {
374
- delete this->Data();
374
+ delete [] this->Data();
375
375
  }
376
376
 
377
377
  FlatTensor<DIM,T> operator= (double d)
netgen/lib/libngsolve.lib CHANGED
Binary file
netgen/libngsolve.dll CHANGED
Binary file
@@ -1,4 +1,4 @@
1
- set(PACKAGE_VERSION "6.2.2501-83-gaf867070b")
1
+ set(PACKAGE_VERSION "6.2.2502")
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.2501-83-gaf867070b"
33
- NGSOLVE_VERSION_GIT = "v6.2.2501-83-gaf867070b"
34
- NGSOLVE_VERSION_PYTHON = "6.2.2501.post83.dev1"
32
+ NGSOLVE_VERSION = "6.2.2502"
33
+ NGSOLVE_VERSION_GIT = "v6.2.2502-0-g984bf8ae2"
34
+ NGSOLVE_VERSION_PYTHON = "6.2.2502"
35
35
 
36
36
  NGSOLVE_VERSION_MAJOR = "6"
37
37
  NGSOLVE_VERSION_MINOR = "2"
38
- NGSOLVE_VERSION_TWEAK = "83"
39
- NGSOLVE_VERSION_PATCH = "2501"
40
- NGSOLVE_VERSION_HASH = "gaf867070b"
38
+ NGSOLVE_VERSION_TWEAK = "0"
39
+ NGSOLVE_VERSION_PATCH = "2502"
40
+ NGSOLVE_VERSION_HASH = "g984bf8ae2"
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
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ngsolve
3
- Version: 6.2.2501.post83.dev1
3
+ Version: 6.2.2502
4
4
  Summary: NGSolve
5
5
  Home-page: UNKNOWN
6
6
  Author: The NGSolve team
@@ -1,4 +1,4 @@
1
- netgen/libngsolve.dll,sha256=y0FOIn2p2t4DDhUuHltHK1xqB2s1pd33_CLCSbmYRs0,35603456
1
+ netgen/libngsolve.dll,sha256=s-5HInrZFbSomtZ6iehm1wfCNV-Ao9-4x8QbP_-znt8,35779584
2
2
  netgen/ngscxx.bat,sha256=DjwBtuQlVFSBYmdu08f4H88Li7YN0uCu2LRLkd_MsLI,697
3
3
  netgen/ngsld.bat,sha256=YD1I1rK70K_YvLev7aYQMD9mCcwF55k1B_8pRWPpob0,428
4
4
  netgen/ngspy,sha256=RJeJY2bsimN2kO97US752sBKFTV-yv7sniRlz7Fy1j8,69
@@ -45,13 +45,13 @@ netgen/include/elementtransformation.hpp,sha256=H8eUIkDAxgeyeFL_cMJgDbQp00hRcwQP
45
45
  netgen/include/evalfunc.hpp,sha256=-I7SJFWJvLp8sFWYeOnNzkdDLaPLnWqAZSjRZHkLXfg,10424
46
46
  netgen/include/expr.hpp,sha256=8LlNBC9vk0duLRoa93ub3I60c2n_4Zbijr0VHNl0Yqo,46784
47
47
  netgen/include/facetfe.hpp,sha256=5weP0JK-l_UhPgHnRAx8G1y7arKZ_dKqo1qLUysPVjw,5095
48
- netgen/include/facetfespace.hpp,sha256=G3DQMNkkdACRNQqkTdj6X9bpoFUETDUtxkeYh7aM7ps,4842
48
+ netgen/include/facetfespace.hpp,sha256=h4oBcysnGy8qKrWvg0K69VH-tmbcNxJ_pGH2gyCuzsA,4919
49
49
  netgen/include/facethofe.hpp,sha256=n2gCSrlazvCG0hs3MlNVfzIS83V0nYMAEbqholRwNxQ,3812
50
50
  netgen/include/facetsurffespace.hpp,sha256=qO4tLszTL3YHmWCsWZn9QKTW45GiIJ4UFnf5ySPWPuM,2521
51
51
  netgen/include/fe_interfaces.hpp,sha256=gGLCSJtPBuOCQZuo2t0VGvXrRwNt0OOPLRag--qXfS8,854
52
52
  netgen/include/fem.hpp,sha256=DPZpvRbOezchnVcUGlOE5R6xKFvmAqUeRza4GC285rw,2181
53
53
  netgen/include/fesconvert.hpp,sha256=hbGst9rksfUJX3BguHcgiF62myv3D3a2zkbjv2Ccl4g,574
54
- netgen/include/fespace.hpp,sha256=Y3VtWPInfrbvXzSad58Wkv4ybun3LOkFk42uhwxbtTQ,48313
54
+ netgen/include/fespace.hpp,sha256=T0ZIfr2k7yj4wtXLJrqIgFSfx4C4R-1eS0KlBAvQeyI,48408
55
55
  netgen/include/finiteelement.hpp,sha256=ULds8D80WXlpVqgCppjHKrXhFuo-WewzIr3IalsIv8g,9431
56
56
  netgen/include/globalinterfacespace.hpp,sha256=atR009fWSlJpYjRI3OgMcvInOajz1W5egPLdfPAPFu8,2796
57
57
  netgen/include/globalspace.hpp,sha256=ZYni-ie6O2DD0N3u-fdmVfwygpV5lwJ3SOAnSSgWMNo,4079
@@ -107,13 +107,13 @@ netgen/include/matrix.hpp,sha256=0UT4qQMFBMf3eq8FS7XTkMbQaVSgz--EiNdVMzGq-Sc,579
107
107
  netgen/include/memusage.hpp,sha256=m_-fuupqepSve37WkRkoFHHyTtE9PdGnOVPIdQHlDiw,1209
108
108
  netgen/include/meshaccess.hpp,sha256=Yk5VSmQx4cp5WEHnfsZXUOijVlooEoozTAaUu75zla8,48419
109
109
  netgen/include/mgpre.hpp,sha256=5Zqt3pzrvm3EOfr84iU6rQx23LTkntUTd_s4_i6wEzI,5029
110
- netgen/include/mptools.hpp,sha256=PU8gcIVRawb1oDORD6xUzopSNel0hNIikqUlPPRpr5M,29607
110
+ netgen/include/mptools.hpp,sha256=LUuPHuRv06i7UxENbUJcp3HQRFJuwoBfGT5nzw2C3EQ,38375
111
111
  netgen/include/multigrid.hpp,sha256=7YgJfeGTBnb-aFWHrbcVk3dos6XYU0iVCgiY8UvRopY,898
112
112
  netgen/include/multivector.hpp,sha256=5rkNSqyPhIXAb1lGKLcy908D9Uw9oqY4wpUXZEXbEPE,13082
113
113
  netgen/include/mumpsinverse.hpp,sha256=8YiUlQZMFVsJ0kuwaSphGZvxyEZJAZZApH8XahiTeEo,4249
114
114
  netgen/include/mycomplex.hpp,sha256=dj031oIJSDeCEB22UoP2FVv3FcNRsi6ssf_nTpHsVaw,8023
115
115
  netgen/include/ng_lapack.hpp,sha256=VFbQIzdfon96GEtyviYaqM8ul1tTiH3QyQM5U0Tviow,50069
116
- netgen/include/ngblas.hpp,sha256=JIkg45wZLeceZcpDCjumBBMjPDQjXF27CqCZ_nnhvQw,43407
116
+ netgen/include/ngblas.hpp,sha256=ZwrjI7PqRMAr-Vg5CaswCMgVkxP6JjholA_E54zZd-g,43892
117
117
  netgen/include/ngs_defines.hpp,sha256=t7TFqQPQtm83a2NDH69TFOOtSQvFyJPbjaHXIP_XsxY,716
118
118
  netgen/include/ngs_stdcpp_include.hpp,sha256=GV74VWQLG5Z2unDAnjjGAWAheFg5ZtMH584pTGSjQAk,2657
119
119
  netgen/include/ngs_utils.hpp,sha256=yO0yJKC1q5BZP39tE2LabiG8pFV9mtNbrzE2b6g3-uU,3265
@@ -138,11 +138,11 @@ netgen/include/pmltrafo.hpp,sha256=j6Sk5tHbzKPT1hj_jI6n6-cRUgV5b3_o3kRNev95wDE,2
138
138
  netgen/include/postproc.hpp,sha256=TiEqDkANZJtxl-aOYMac-FKhtSkokXS3AuxAScqUDBQ,5334
139
139
  netgen/include/precomp.hpp,sha256=mx_zGsnBxqRVArwgkDpvUcX8EzP8v_8QwVdOp5m1nWQ,1337
140
140
  netgen/include/preconditioner.hpp,sha256=3UCrQqZ49YUHneg24-JoYVO40B4Di1DR-A3TQLZme2A,14630
141
- netgen/include/prolongation.hpp,sha256=eguG1dvLQTuo89qv2CDHP7bWx1TlYOQnv6QgVIaxFew,6615
141
+ netgen/include/prolongation.hpp,sha256=JGW4mvgtPsqANsNZpTUeEMJuSp9eh07M_Whmoa2qxAQ,7468
142
142
  netgen/include/python_comp.hpp,sha256=FgujlcVk9FKWwMBEo9CfJ-q_Kb4TNcCziotVTFIuXvY,3571
143
143
  netgen/include/python_fem.hpp,sha256=pdSB1RLhv2Vi52TaRoGpjQ21EHOA3RFAF0jeiWDp6EQ,3161
144
144
  netgen/include/python_linalg.hpp,sha256=HdWTpdddyVmv3ZO73sG0BoHleKiREg9emIcyjFl3au8,1761
145
- netgen/include/python_ngstd.hpp,sha256=Z-6gEclm77s7Yzn7cFLAWv0cd_BsCam5aFq1zx6iLbo,10771
145
+ netgen/include/python_ngstd.hpp,sha256=8NptP1VGDLDZ6gRC2kbayi-fHVg1IRNCZhgalJ4LUQ4,10803
146
146
  netgen/include/recursive_pol.hpp,sha256=u7hH83vY9w-F2zXh5jpqYuMkTNwMxOwp7xUy0f2j_KY,123587
147
147
  netgen/include/recursive_pol_tet.hpp,sha256=TKnMfmn1K7XvmNRD8kmLxPlooLRK6irBMKOwvRowsn4,9863
148
148
  netgen/include/recursive_pol_trig.hpp,sha256=UylKioGKIXXgSlSEbD4XPnzhJvP24JwD3bBYvFppHpg,11333
@@ -153,7 +153,7 @@ netgen/include/shapefunction_utils.hpp,sha256=um-JOAFzOJVP-zW-lrvYR6ojDblocO48H0
153
153
  netgen/include/simd_complex.hpp,sha256=HwMHrVpF8rqzTheKwrPUkZStgk9hTKG2-o2KUeISBkM,10010
154
154
  netgen/include/smoother.hpp,sha256=SoVZvhFynyPSIAe-x8EloVluIHUE0k78Dp3sQFu-Yfo,6896
155
155
  netgen/include/solve.hpp,sha256=lzCGHU1QOj9VXG43Q8MzvDi48-BfVH_fG8R0ttU8Xfg,2123
156
- netgen/include/sparsecholesky.hpp,sha256=5RYlQ6gbPTVqDy8npnDBydAF6pvkl8I4mHi_JjYJ6lM,9198
156
+ netgen/include/sparsecholesky.hpp,sha256=hOzFoXMEelAdJROF1q4zkYv0yfZgSDhjwaYvRRmiMcE,9201
157
157
  netgen/include/sparsematrix.hpp,sha256=vyk1ViL0oXSiPZX4FfrFgy8whefffUrTmSlTS60SbrU,33744
158
158
  netgen/include/sparsematrix_dyn.hpp,sha256=RSxxEAg6Y82DDt7S46Hw_KCxvQBPvEoBvH8j-H5plz4,2792
159
159
  netgen/include/sparsematrix_impl.hpp,sha256=C2yLlIx3QPXCreg5GLBy2mV8E-1DUD1S8m3jzbWzlWQ,28732
@@ -166,7 +166,7 @@ netgen/include/symbolicintegrator.hpp,sha256=tk8SwRT2swPiafO1JevZskjFVwvAxbGd0HT
166
166
  netgen/include/symmetricmatrix.hpp,sha256=M79mq0z70ohLFoi8cxPAxxlqD3RjFZAkbCrHwQrhvY8,2954
167
167
  netgen/include/tangentialfacetfe.hpp,sha256=iEP_cU3nBtVUnH67dvzeMqIS-JM6SeILhB738YX9Spg,7491
168
168
  netgen/include/tangentialfacetfespace.hpp,sha256=DoijcYOUEG8Tud_RqYOsmOZlpsQ2swx0XTLgI6eGGG4,3198
169
- netgen/include/tensor.hpp,sha256=MEkTOpdqmb53A430k8ngtrtZvfd_sRhvxx9fwpDkOjo,12532
169
+ netgen/include/tensor.hpp,sha256=nzrF84BknvEixYfMyN-RdaWVlBIXJkYw82kpjmfyqCE,12535
170
170
  netgen/include/tensorcoefficient.hpp,sha256=eA-SVbv_N89PnBLAEf-O--8SwicgiCwRPbx_NHQp-fw,17522
171
171
  netgen/include/tensorproductintegrator.hpp,sha256=Sfo_YsCL_TZnbqR2gBWcFLDr7DOlmSHAUJu-mCeYrI0,4643
172
172
  netgen/include/thcurlfe.hpp,sha256=48OMvHXQgn5QWu9AgA8ByPrIhdIrQoKD3z9uahlpx60,5099
@@ -185,7 +185,7 @@ netgen/include/voxelcoefficientfunction.hpp,sha256=zPlatX_nf2ODK2X979wvpm1HXHEzn
185
185
  netgen/include/vtkoutput.hpp,sha256=GwPaFtOVY27_1hKwSqpNHV4ppOk3CVsLdMpocm27odQ,6628
186
186
  netgen/include/vvector.hpp,sha256=vpnwWlNWsEJB26ve8cKADbUMGVBTTVCFvrBC4r_LDDQ,4785
187
187
  netgen/include/webgui.hpp,sha256=xm1S5KHockrzf_R4zHzQ9fzwfQ4H5aZaZm9ItCaR41s,2199
188
- netgen/lib/libngsolve.lib,sha256=auYbUlqkze8keSvy8EQrT_tLzSg5hblA945ZR6xyKM4,13366128
188
+ netgen/lib/libngsolve.lib,sha256=NyQso40noaNdGKAII1SxjaB0ksz6KltH6Ul2ze2-C1Y,13475284
189
189
  ngsolve/TensorProductTools.py,sha256=jD4LtJdEiLt2dDsU6STMXb10yrau_i20gatwGlqbiFQ,8562
190
190
  ngsolve/__console.py,sha256=QLnfw1ONU9eVPQZ_LjzY-7b_gfZpRRRdI7imHR1lJR8,2983
191
191
  ngsolve/__expr.py,sha256=ZAtv94PVtAdvWWKFIvQGJC55aIEY6ajo-l5Hp-1V-6s,4396
@@ -200,7 +200,7 @@ ngsolve/meshes.py,sha256=nz95LP1EEIVAEJ0jyQGqq0E-62uuy2tvIRgqIrEqDHQ,27534
200
200
  ngsolve/ngs2petsc.py,sha256=PLAkvu4H-ZEXd0-bM2v0OJX7gga-OJ9d-NB7g322-wQ,12809
201
201
  ngsolve/ngscxx.py,sha256=r9TV49w0MKIxE6fgJYO4FNv-5wcM9eAFYIG9GspUy_A,1335
202
202
  ngsolve/ngslib.lib,sha256=_HzV4t-JUpCMSs1rNu4Jjtmr69v0FQUaOatAn17WF4A,1716
203
- ngsolve/ngslib.pyd,sha256=-_AkM3HOuVkdhB14e0dljDY5DeO56xpNeKXOMmFrQWk,121344
203
+ ngsolve/ngslib.pyd,sha256=yJPNiC_ZYJtukc1zZwIwsaN87K4gY3bYjkqoGbBWmUw,121344
204
204
  ngsolve/nonlinearsolvers.py,sha256=nKd-SVJseTWztHZPEPKsbv0mLwQjFILZtOh7Ggft0xs,8419
205
205
  ngsolve/preconditioners.py,sha256=2To9cGdhZscFRKrIb6NfjKLBXoIfkemnhryaXrdgNC8,218
206
206
  ngsolve/solvers.py,sha256=Vbm5RfIJ83nMtQ1pYJL0uBBuys4-mcY6b63MNkyiqxU,311
@@ -208,12 +208,12 @@ ngsolve/timestepping.py,sha256=SuKsFS7cDXRixKWdMMIWW4flet12HLeqWTBC0DFhPwg,8535
208
208
  ngsolve/timing.py,sha256=j_Plbbh51pS9QwMq93hyvFDSrbywmdKZ6Z6OOZmZoe4,4093
209
209
  ngsolve/utils.py,sha256=jg6smLuKF6G9Rvg-EXjyYwjFJGyyiqSRknevdjp-9J4,4724
210
210
  ngsolve/webgui.py,sha256=MG9bzYvfZYodiC5-DR-9auveCzKX3d13AGOgKANne-A,24902
211
- ngsolve/cmake/NGSolveConfig.cmake,sha256=wH7-MiurL4tcjSKVmd-g8NpCQxwo7k7Jr6kHRnRLpsg,5292
211
+ ngsolve/cmake/NGSolveConfig.cmake,sha256=CDDptKNu85-IxE0xWxQ_K1mzMAzxKrjMYFr-jzr1rI8,5278
212
212
  ngsolve/cmake/ngsolve-targets-release.cmake,sha256=knQjCmz6J-x_Egg5DosY5hU_CZdZlSQxQ4Za7pS07fA,907
213
213
  ngsolve/cmake/ngsolve-targets.cmake,sha256=By4x6oAQKohvxBjQ03BSG6FyD9dC3T1da43a5rXiM9U,5966
214
214
  ngsolve/config/__init__.py,sha256=IjGKWBHvRx572Z6m-5z0q82xuQaWlBABy1whwy2Uxak,23
215
215
  ngsolve/config/__main__.py,sha256=anI_XpgrpEnVnMyrFiH3Yon_tpQZkehnqRTNC02NiBI,93
216
- ngsolve/config/config.py,sha256=afyK3u85RJsxmDc_GpiJZU_Ck7lKRSE04U2n39UWfpc,2548
216
+ ngsolve/config/config.py,sha256=ZEeqHqs5fnI3uVn-2MpnxcwgFzlJx5bGsVd3CzQ-nQw,2520
217
217
  ngsolve/demos/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
218
218
  ngsolve/demos/TensorProduct/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
219
219
  ngsolve/demos/TensorProduct/tp_dg_1d_1d.py,sha256=3Q9ntmVJGIKQ-JLdGWgECR_kDjTG8FPVCSiTJkxyi40,2188
@@ -245,37 +245,37 @@ ngsolve/demos/mpi/mpi_cmagnet.py,sha256=59TuQvIIGoDStyJneH47NG131nppBoQpZQ9rfvG_
245
245
  ngsolve/demos/mpi/mpi_navierstokes.py,sha256=ieAWMDd9LoH99L14iBgF_YmX_xk7gltZ9MruTFN6xAY,3028
246
246
  ngsolve/demos/mpi/mpi_poisson.py,sha256=_-H0HFqlwlpasiVD9OQjUvJbWJcQ34-4y-va1WOSOzE,2557
247
247
  ngsolve/demos/mpi/mpi_timeDG.py,sha256=FUOh_1dzOGUU-uAsD4iyz0RVT382jMiMiuYkZjarhAE,1963
248
- ngsolve-6.2.2501.post83.dev1.data/data/Scripts/ngsolve.tcl,sha256=8KBOXZKYU_qx8785PIjdmVjcUbCxR5aYrod0BZ4UgGc,21637
249
- ngsolve-6.2.2501.post83.dev1.data/data/share/ngsolve/beam.geo,sha256=HTv0A6IUoVuavifolhGKY6U44z0hni07Htonqe6rw_A,404
250
- ngsolve-6.2.2501.post83.dev1.data/data/share/ngsolve/beam.vol,sha256=QZbM9JE4rBs5nVXaw7ZAbDf60yXbX19bm1OnOScF57M,13834
251
- ngsolve-6.2.2501.post83.dev1.data/data/share/ngsolve/chip.in2d,sha256=561AjEIPnlzMZHIzep5lRjocQDm8w7o7IDna5u8s9JQ,592
252
- ngsolve-6.2.2501.post83.dev1.data/data/share/ngsolve/chip.vol,sha256=gkEmBWlQh8BkSFNTf-XISfmuGzHXDKANV4Uoww_BwJI,28511
253
- ngsolve-6.2.2501.post83.dev1.data/data/share/ngsolve/coil.geo,sha256=ylB2OiWEZztFXPx99qTNRJKmZFIDPEezEgQt4EPtZRA,376
254
- ngsolve-6.2.2501.post83.dev1.data/data/share/ngsolve/coil.vol,sha256=t8cWP_YX38FMw0S-7vEVUOcSH0VK6DlaqVWG_zmBo-4,147284
255
- ngsolve-6.2.2501.post83.dev1.data/data/share/ngsolve/coilshield.geo,sha256=Sq8w7i22WQ0viaiM3bU_63lZGFWp8JgyDqs3RdjeTe0,629
256
- ngsolve-6.2.2501.post83.dev1.data/data/share/ngsolve/coilshield.vol,sha256=JiZOM9A529-hikvv1kyLwffTRpeatLtaVTNcu42o1fo,165576
257
- ngsolve-6.2.2501.post83.dev1.data/data/share/ngsolve/cube.geo,sha256=Wd9AnPdoQgjQ-JK6zmoXjsNxPR9B8ED4pdHVwmRoe1M,405
258
- ngsolve-6.2.2501.post83.dev1.data/data/share/ngsolve/cube.vol,sha256=RS8bay_KlF6IZM0QDDr7_dGaFLqoxszQU_w8TYutMKY,92127
259
- ngsolve-6.2.2501.post83.dev1.data/data/share/ngsolve/d10_DGdoubleglazing.pde,sha256=lK3sXmK74eFEMk8F6hwFHe_tBYnOdRq3F-RbzKpDK0c,1354
260
- ngsolve-6.2.2501.post83.dev1.data/data/share/ngsolve/d11_chip_nitsche.pde,sha256=VuEQtkZaIJA9yuvjG_jcx1UB9UtAaZSoeJYFHcHeYxk,1141
261
- ngsolve-6.2.2501.post83.dev1.data/data/share/ngsolve/d1_square.pde,sha256=24ZZ0nlbr5LKl_mPyeZZMSkiCBiBk1fzNElo3yITX2A,1072
262
- ngsolve-6.2.2501.post83.dev1.data/data/share/ngsolve/d2_chip.pde,sha256=yGIbzuTdCEjdoC9Ig_hbcy5qz69_wxgPZeYmhY1rN7k,985
263
- ngsolve-6.2.2501.post83.dev1.data/data/share/ngsolve/d3_helmholtz.pde,sha256=gWqQTh1M9NiKGohlu5JxDJuvRz-T28WlNSVbwmMvM-0,590
264
- ngsolve-6.2.2501.post83.dev1.data/data/share/ngsolve/d4_cube.pde,sha256=6kL43ehAh1PdwnFlLjadg325bFjpz02p2PpAOxlDFuc,1079
265
- ngsolve-6.2.2501.post83.dev1.data/data/share/ngsolve/d5_beam.pde,sha256=VQt9WbqAVWObFH9Jy1YieE9WHnVZ_hnsKVTz6ysEBxI,2059
266
- ngsolve-6.2.2501.post83.dev1.data/data/share/ngsolve/d6_shaft.pde,sha256=y10nLFA2-GwEwnAs5R-8wppRq-09vYJ_C9LJ3DSvlS0,1974
267
- ngsolve-6.2.2501.post83.dev1.data/data/share/ngsolve/d7_coil.pde,sha256=KFkqtZiPD4LQsGnghwwdq1qmpWf0T5xQR4HwbRL9ZZA,1250
268
- ngsolve-6.2.2501.post83.dev1.data/data/share/ngsolve/d8_coilshield.pde,sha256=9XG0TcgZ7mComh_pVntnuzDldEx5PD-C7gqK05PTWus,1190
269
- ngsolve-6.2.2501.post83.dev1.data/data/share/ngsolve/d9_hybridDG.pde,sha256=vYschVRu5vC91YpyVZFCBFuno-ZlOcRznPD-OvJTLtQ,1551
270
- ngsolve-6.2.2501.post83.dev1.data/data/share/ngsolve/doubleglazing.in2d,sha256=lDCukUh9iTpkiH-qJAVdeAlMpiYF0AibAA6g3jOeWDY,533
271
- ngsolve-6.2.2501.post83.dev1.data/data/share/ngsolve/doubleglazing.vol,sha256=IUOhUrZi8WMnvrIJe--A8cYPN6mscslA8_4yxvKShb0,35724
272
- ngsolve-6.2.2501.post83.dev1.data/data/share/ngsolve/piezo2d40round4.vol.gz,sha256=RuxM0vtYljoAImOH6U6avt0LmWaUbGNao37n8p_Yd1w,496477
273
- ngsolve-6.2.2501.post83.dev1.data/data/share/ngsolve/shaft.geo,sha256=Y3OVQlWjgICe2Dwz6-Qs8r0tLanjwtWP0xFx5AwNRJk,2507
274
- ngsolve-6.2.2501.post83.dev1.data/data/share/ngsolve/shaft.vol,sha256=IqViJ4hJKk3Uf66PkVJ-kHpBQ_ZpkigRuh5g1Po4euY,274741
275
- ngsolve-6.2.2501.post83.dev1.data/data/share/ngsolve/square.in2d,sha256=5dewiEjTsRFiNkBlmaTjBAZejq55TTlusp8ALfTMc2M,209
276
- ngsolve-6.2.2501.post83.dev1.data/data/share/ngsolve/square.vol,sha256=tWdPeQ52deUNgWOsWKhqgNVsJKhkJmEAVp5-xjhzEwg,9311
277
- ngsolve-6.2.2501.post83.dev1.dist-info/LICENSE,sha256=iFoD9UsVeWEjb0aEPnmXKr_NaJC2y7NovH7KMo_5WhI,26934
278
- ngsolve-6.2.2501.post83.dev1.dist-info/METADATA,sha256=RsgS39HKdh3f0_jafN2XficDPMaZ1OPw_SaJceiKaAw,278
279
- ngsolve-6.2.2501.post83.dev1.dist-info/WHEEL,sha256=qDFAnWyk8KPVgFtn4Ts7GL4WTDWO6sseESMI7KyWq64,94
280
- ngsolve-6.2.2501.post83.dev1.dist-info/top_level.txt,sha256=1llU44DxNIP85uPT4RChsIuV3h2d0_5j0Ui_Df5vV8E,15
281
- ngsolve-6.2.2501.post83.dev1.dist-info/RECORD,,
248
+ ngsolve-6.2.2502.data/data/Scripts/ngsolve.tcl,sha256=8KBOXZKYU_qx8785PIjdmVjcUbCxR5aYrod0BZ4UgGc,21637
249
+ ngsolve-6.2.2502.data/data/share/ngsolve/beam.geo,sha256=HTv0A6IUoVuavifolhGKY6U44z0hni07Htonqe6rw_A,404
250
+ ngsolve-6.2.2502.data/data/share/ngsolve/beam.vol,sha256=QZbM9JE4rBs5nVXaw7ZAbDf60yXbX19bm1OnOScF57M,13834
251
+ ngsolve-6.2.2502.data/data/share/ngsolve/chip.in2d,sha256=561AjEIPnlzMZHIzep5lRjocQDm8w7o7IDna5u8s9JQ,592
252
+ ngsolve-6.2.2502.data/data/share/ngsolve/chip.vol,sha256=gkEmBWlQh8BkSFNTf-XISfmuGzHXDKANV4Uoww_BwJI,28511
253
+ ngsolve-6.2.2502.data/data/share/ngsolve/coil.geo,sha256=ylB2OiWEZztFXPx99qTNRJKmZFIDPEezEgQt4EPtZRA,376
254
+ ngsolve-6.2.2502.data/data/share/ngsolve/coil.vol,sha256=t8cWP_YX38FMw0S-7vEVUOcSH0VK6DlaqVWG_zmBo-4,147284
255
+ ngsolve-6.2.2502.data/data/share/ngsolve/coilshield.geo,sha256=Sq8w7i22WQ0viaiM3bU_63lZGFWp8JgyDqs3RdjeTe0,629
256
+ ngsolve-6.2.2502.data/data/share/ngsolve/coilshield.vol,sha256=JiZOM9A529-hikvv1kyLwffTRpeatLtaVTNcu42o1fo,165576
257
+ ngsolve-6.2.2502.data/data/share/ngsolve/cube.geo,sha256=Wd9AnPdoQgjQ-JK6zmoXjsNxPR9B8ED4pdHVwmRoe1M,405
258
+ ngsolve-6.2.2502.data/data/share/ngsolve/cube.vol,sha256=RS8bay_KlF6IZM0QDDr7_dGaFLqoxszQU_w8TYutMKY,92127
259
+ ngsolve-6.2.2502.data/data/share/ngsolve/d10_DGdoubleglazing.pde,sha256=lK3sXmK74eFEMk8F6hwFHe_tBYnOdRq3F-RbzKpDK0c,1354
260
+ ngsolve-6.2.2502.data/data/share/ngsolve/d11_chip_nitsche.pde,sha256=VuEQtkZaIJA9yuvjG_jcx1UB9UtAaZSoeJYFHcHeYxk,1141
261
+ ngsolve-6.2.2502.data/data/share/ngsolve/d1_square.pde,sha256=24ZZ0nlbr5LKl_mPyeZZMSkiCBiBk1fzNElo3yITX2A,1072
262
+ ngsolve-6.2.2502.data/data/share/ngsolve/d2_chip.pde,sha256=yGIbzuTdCEjdoC9Ig_hbcy5qz69_wxgPZeYmhY1rN7k,985
263
+ ngsolve-6.2.2502.data/data/share/ngsolve/d3_helmholtz.pde,sha256=gWqQTh1M9NiKGohlu5JxDJuvRz-T28WlNSVbwmMvM-0,590
264
+ ngsolve-6.2.2502.data/data/share/ngsolve/d4_cube.pde,sha256=6kL43ehAh1PdwnFlLjadg325bFjpz02p2PpAOxlDFuc,1079
265
+ ngsolve-6.2.2502.data/data/share/ngsolve/d5_beam.pde,sha256=VQt9WbqAVWObFH9Jy1YieE9WHnVZ_hnsKVTz6ysEBxI,2059
266
+ ngsolve-6.2.2502.data/data/share/ngsolve/d6_shaft.pde,sha256=y10nLFA2-GwEwnAs5R-8wppRq-09vYJ_C9LJ3DSvlS0,1974
267
+ ngsolve-6.2.2502.data/data/share/ngsolve/d7_coil.pde,sha256=KFkqtZiPD4LQsGnghwwdq1qmpWf0T5xQR4HwbRL9ZZA,1250
268
+ ngsolve-6.2.2502.data/data/share/ngsolve/d8_coilshield.pde,sha256=9XG0TcgZ7mComh_pVntnuzDldEx5PD-C7gqK05PTWus,1190
269
+ ngsolve-6.2.2502.data/data/share/ngsolve/d9_hybridDG.pde,sha256=vYschVRu5vC91YpyVZFCBFuno-ZlOcRznPD-OvJTLtQ,1551
270
+ ngsolve-6.2.2502.data/data/share/ngsolve/doubleglazing.in2d,sha256=lDCukUh9iTpkiH-qJAVdeAlMpiYF0AibAA6g3jOeWDY,533
271
+ ngsolve-6.2.2502.data/data/share/ngsolve/doubleglazing.vol,sha256=IUOhUrZi8WMnvrIJe--A8cYPN6mscslA8_4yxvKShb0,35724
272
+ ngsolve-6.2.2502.data/data/share/ngsolve/piezo2d40round4.vol.gz,sha256=RuxM0vtYljoAImOH6U6avt0LmWaUbGNao37n8p_Yd1w,496477
273
+ ngsolve-6.2.2502.data/data/share/ngsolve/shaft.geo,sha256=Y3OVQlWjgICe2Dwz6-Qs8r0tLanjwtWP0xFx5AwNRJk,2507
274
+ ngsolve-6.2.2502.data/data/share/ngsolve/shaft.vol,sha256=IqViJ4hJKk3Uf66PkVJ-kHpBQ_ZpkigRuh5g1Po4euY,274741
275
+ ngsolve-6.2.2502.data/data/share/ngsolve/square.in2d,sha256=5dewiEjTsRFiNkBlmaTjBAZejq55TTlusp8ALfTMc2M,209
276
+ ngsolve-6.2.2502.data/data/share/ngsolve/square.vol,sha256=tWdPeQ52deUNgWOsWKhqgNVsJKhkJmEAVp5-xjhzEwg,9311
277
+ ngsolve-6.2.2502.dist-info/LICENSE,sha256=iFoD9UsVeWEjb0aEPnmXKr_NaJC2y7NovH7KMo_5WhI,26934
278
+ ngsolve-6.2.2502.dist-info/METADATA,sha256=kq2ILsbR6Nmgrpb6SqT_t_0_Soag7EziVGb9Eecarm4,266
279
+ ngsolve-6.2.2502.dist-info/WHEEL,sha256=qDFAnWyk8KPVgFtn4Ts7GL4WTDWO6sseESMI7KyWq64,94
280
+ ngsolve-6.2.2502.dist-info/top_level.txt,sha256=1llU44DxNIP85uPT4RChsIuV3h2d0_5j0Ui_Df5vV8E,15
281
+ ngsolve-6.2.2502.dist-info/RECORD,,