ngsolve 6.2.2506.post60.dev0__cp311-cp311-macosx_10_15_universal2.whl → 6.2.2506.post85.dev0__cp311-cp311-macosx_10_15_universal2.whl

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

Potentially problematic release.


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

Files changed (58) hide show
  1. netgen/include/kernels.hpp +40 -40
  2. netgen/include/mp_coefficient.hpp +2 -2
  3. netgen/include/mptools.hpp +45 -26
  4. netgen/include/preconditioner.hpp +2 -2
  5. netgen/include/sparsefactorization_interface.hpp +153 -0
  6. netgen/include/statushandler.hpp +8 -8
  7. netgen/libngbla.dylib +0 -0
  8. netgen/libngcomp.dylib +0 -0
  9. netgen/libngfem.dylib +0 -0
  10. netgen/libngla.dylib +0 -0
  11. netgen/libngsbem.dylib +0 -0
  12. netgen/libngsolve.dylib +0 -0
  13. netgen/libngstd.dylib +0 -0
  14. ngsolve/cmake/NGSolveConfig.cmake +1 -1
  15. ngsolve/cmake/ngsolve-targets.cmake +15 -8
  16. ngsolve/config/config.py +5 -5
  17. ngsolve/directsolvers.py +9 -21
  18. ngsolve/ngslib.so +0 -0
  19. ngsolve/solvers/cudss.py +74 -0
  20. {ngsolve-6.2.2506.post60.dev0.dist-info → ngsolve-6.2.2506.post85.dev0.dist-info}/METADATA +2 -2
  21. {ngsolve-6.2.2506.post60.dev0.dist-info → ngsolve-6.2.2506.post85.dev0.dist-info}/RECORD +58 -56
  22. /ngsolve/{solvers.py → solvers/__init__.py} +0 -0
  23. {ngsolve-6.2.2506.post60.dev0.data → ngsolve-6.2.2506.post85.dev0.data}/data/Netgen.icns +0 -0
  24. {ngsolve-6.2.2506.post60.dev0.data → ngsolve-6.2.2506.post85.dev0.data}/data/bin/ngscxx +0 -0
  25. {ngsolve-6.2.2506.post60.dev0.data → ngsolve-6.2.2506.post85.dev0.data}/data/bin/ngsld +0 -0
  26. {ngsolve-6.2.2506.post60.dev0.data → ngsolve-6.2.2506.post85.dev0.data}/data/bin/ngsolve.tcl +0 -0
  27. {ngsolve-6.2.2506.post60.dev0.data → ngsolve-6.2.2506.post85.dev0.data}/data/bin/ngspy +0 -0
  28. {ngsolve-6.2.2506.post60.dev0.data → ngsolve-6.2.2506.post85.dev0.data}/data/share/ngsolve/beam.geo +0 -0
  29. {ngsolve-6.2.2506.post60.dev0.data → ngsolve-6.2.2506.post85.dev0.data}/data/share/ngsolve/beam.vol +0 -0
  30. {ngsolve-6.2.2506.post60.dev0.data → ngsolve-6.2.2506.post85.dev0.data}/data/share/ngsolve/chip.in2d +0 -0
  31. {ngsolve-6.2.2506.post60.dev0.data → ngsolve-6.2.2506.post85.dev0.data}/data/share/ngsolve/chip.vol +0 -0
  32. {ngsolve-6.2.2506.post60.dev0.data → ngsolve-6.2.2506.post85.dev0.data}/data/share/ngsolve/coil.geo +0 -0
  33. {ngsolve-6.2.2506.post60.dev0.data → ngsolve-6.2.2506.post85.dev0.data}/data/share/ngsolve/coil.vol +0 -0
  34. {ngsolve-6.2.2506.post60.dev0.data → ngsolve-6.2.2506.post85.dev0.data}/data/share/ngsolve/coilshield.geo +0 -0
  35. {ngsolve-6.2.2506.post60.dev0.data → ngsolve-6.2.2506.post85.dev0.data}/data/share/ngsolve/coilshield.vol +0 -0
  36. {ngsolve-6.2.2506.post60.dev0.data → ngsolve-6.2.2506.post85.dev0.data}/data/share/ngsolve/cube.geo +0 -0
  37. {ngsolve-6.2.2506.post60.dev0.data → ngsolve-6.2.2506.post85.dev0.data}/data/share/ngsolve/cube.vol +0 -0
  38. {ngsolve-6.2.2506.post60.dev0.data → ngsolve-6.2.2506.post85.dev0.data}/data/share/ngsolve/d10_DGdoubleglazing.pde +0 -0
  39. {ngsolve-6.2.2506.post60.dev0.data → ngsolve-6.2.2506.post85.dev0.data}/data/share/ngsolve/d11_chip_nitsche.pde +0 -0
  40. {ngsolve-6.2.2506.post60.dev0.data → ngsolve-6.2.2506.post85.dev0.data}/data/share/ngsolve/d1_square.pde +0 -0
  41. {ngsolve-6.2.2506.post60.dev0.data → ngsolve-6.2.2506.post85.dev0.data}/data/share/ngsolve/d2_chip.pde +0 -0
  42. {ngsolve-6.2.2506.post60.dev0.data → ngsolve-6.2.2506.post85.dev0.data}/data/share/ngsolve/d3_helmholtz.pde +0 -0
  43. {ngsolve-6.2.2506.post60.dev0.data → ngsolve-6.2.2506.post85.dev0.data}/data/share/ngsolve/d4_cube.pde +0 -0
  44. {ngsolve-6.2.2506.post60.dev0.data → ngsolve-6.2.2506.post85.dev0.data}/data/share/ngsolve/d5_beam.pde +0 -0
  45. {ngsolve-6.2.2506.post60.dev0.data → ngsolve-6.2.2506.post85.dev0.data}/data/share/ngsolve/d6_shaft.pde +0 -0
  46. {ngsolve-6.2.2506.post60.dev0.data → ngsolve-6.2.2506.post85.dev0.data}/data/share/ngsolve/d7_coil.pde +0 -0
  47. {ngsolve-6.2.2506.post60.dev0.data → ngsolve-6.2.2506.post85.dev0.data}/data/share/ngsolve/d8_coilshield.pde +0 -0
  48. {ngsolve-6.2.2506.post60.dev0.data → ngsolve-6.2.2506.post85.dev0.data}/data/share/ngsolve/d9_hybridDG.pde +0 -0
  49. {ngsolve-6.2.2506.post60.dev0.data → ngsolve-6.2.2506.post85.dev0.data}/data/share/ngsolve/doubleglazing.in2d +0 -0
  50. {ngsolve-6.2.2506.post60.dev0.data → ngsolve-6.2.2506.post85.dev0.data}/data/share/ngsolve/doubleglazing.vol +0 -0
  51. {ngsolve-6.2.2506.post60.dev0.data → ngsolve-6.2.2506.post85.dev0.data}/data/share/ngsolve/piezo2d40round4.vol.gz +0 -0
  52. {ngsolve-6.2.2506.post60.dev0.data → ngsolve-6.2.2506.post85.dev0.data}/data/share/ngsolve/shaft.geo +0 -0
  53. {ngsolve-6.2.2506.post60.dev0.data → ngsolve-6.2.2506.post85.dev0.data}/data/share/ngsolve/shaft.vol +0 -0
  54. {ngsolve-6.2.2506.post60.dev0.data → ngsolve-6.2.2506.post85.dev0.data}/data/share/ngsolve/square.in2d +0 -0
  55. {ngsolve-6.2.2506.post60.dev0.data → ngsolve-6.2.2506.post85.dev0.data}/data/share/ngsolve/square.vol +0 -0
  56. {ngsolve-6.2.2506.post60.dev0.dist-info → ngsolve-6.2.2506.post85.dev0.dist-info}/LICENSE +0 -0
  57. {ngsolve-6.2.2506.post60.dev0.dist-info → ngsolve-6.2.2506.post85.dev0.dist-info}/WHEEL +0 -0
  58. {ngsolve-6.2.2506.post60.dev0.dist-info → ngsolve-6.2.2506.post85.dev0.dist-info}/top_level.txt +0 -0
@@ -94,14 +94,14 @@ namespace ngsbem
94
94
 
95
95
  Array<KernelTerm> terms;
96
96
 
97
- auto CreateMultipoleExpansion (Vec<3> c, double r) const
97
+ auto CreateMultipoleExpansion (Vec<3> c, double r, FMM_Parameters fmm_params) const
98
98
  {
99
- return make_shared<SingularMLExpansion<mp_type>> (c, r, 1e-16);
99
+ return make_shared<SingularMLExpansion<mp_type>> (c, r, 1e-16, fmm_params);
100
100
  }
101
101
 
102
- auto CreateLocalExpansion (Vec<3> c, double r) const
102
+ auto CreateLocalExpansion (Vec<3> c, double r, FMM_Parameters fmm_params) const
103
103
  {
104
- return make_shared<RegularMLExpansion<mp_type>> (c, r, 1e-16);
104
+ return make_shared<RegularMLExpansion<mp_type>> (c, r, 1e-16, fmm_params);
105
105
  }
106
106
 
107
107
  void AddSource (SingularMLExpansion<mp_type> & mp, Vec<3> pnt, Vec<3> nv, BareSliceVector<double> val) const
@@ -157,14 +157,14 @@ namespace ngsbem
157
157
 
158
158
  Array<KernelTerm> terms;
159
159
 
160
- auto CreateMultipoleExpansion (Vec<3> c, double r) const
160
+ auto CreateMultipoleExpansion (Vec<3> c, double r, FMM_Parameters fmm_params) const
161
161
  {
162
- return make_shared<SingularMLExpansion<mp_type>> (c, r, 1e-16);
162
+ return make_shared<SingularMLExpansion<mp_type>> (c, r, 1e-16, fmm_params);
163
163
  }
164
164
 
165
- auto CreateLocalExpansion (Vec<3> c, double r) const
165
+ auto CreateLocalExpansion (Vec<3> c, double r, FMM_Parameters fmm_params) const
166
166
  {
167
- return make_shared<RegularMLExpansion<mp_type>> (c, r, 1e-16);
167
+ return make_shared<RegularMLExpansion<mp_type>> (c, r, 1e-16, fmm_params);
168
168
  }
169
169
 
170
170
  void AddSource (SingularMLExpansion<mp_type> & mp, Vec<3> pnt, Vec<3> nv, BareSliceVector<double> val) const
@@ -231,14 +231,14 @@ namespace ngsbem
231
231
  double GetKappa() const { return kappa; }
232
232
  Array<KernelTerm> terms = { KernelTerm{1.0, 0, 0, 0}, };
233
233
 
234
- auto CreateMultipoleExpansion (Vec<3> c, double r) const
234
+ auto CreateMultipoleExpansion (Vec<3> c, double r, FMM_Parameters fmm_params) const
235
235
  {
236
- return make_shared<SingularMLExpansion<Complex>> (c, r, kappa);
236
+ return make_shared<SingularMLExpansion<Complex>> (c, r, kappa, fmm_params);
237
237
  }
238
238
 
239
- auto CreateLocalExpansion (Vec<3> c, double r) const
239
+ auto CreateLocalExpansion (Vec<3> c, double r, FMM_Parameters fmm_params) const
240
240
  {
241
- return make_shared<RegularMLExpansion<Complex>> (c, r, kappa);
241
+ return make_shared<RegularMLExpansion<Complex>> (c, r, kappa, fmm_params);
242
242
  }
243
243
 
244
244
  void AddSource (SingularMLExpansion<Complex> & mp, Vec<3> pnt, Vec<3> nv, BareSliceVector<Complex> val) const
@@ -285,14 +285,14 @@ namespace ngsbem
285
285
  double GetKappa() const { return kappa; }
286
286
  Array<KernelTerm> terms = { KernelTerm{1.0, 0, 0, 0}, };
287
287
 
288
- auto CreateMultipoleExpansion (Vec<3> c, double r) const
288
+ auto CreateMultipoleExpansion (Vec<3> c, double r, FMM_Parameters fmm_params) const
289
289
  {
290
- return make_shared<SingularMLExpansion<Complex>> (c, r, kappa);
290
+ return make_shared<SingularMLExpansion<Complex>> (c, r, kappa, fmm_params);
291
291
  }
292
292
 
293
- auto CreateLocalExpansion (Vec<3> c, double r) const
293
+ auto CreateLocalExpansion (Vec<3> c, double r, FMM_Parameters fmm_params) const
294
294
  {
295
- return make_shared<RegularMLExpansion<Complex>> (c, r, kappa);
295
+ return make_shared<RegularMLExpansion<Complex>> (c, r, kappa, fmm_params);
296
296
  }
297
297
 
298
298
  void AddSource (SingularMLExpansion<Complex> & mp, Vec<3> pnt, Vec<3> nv, BareSliceVector<Complex> val) const
@@ -345,14 +345,14 @@ namespace ngsbem
345
345
  KernelTerm{1.0, 0, 2, 2},
346
346
  };
347
347
 
348
- auto CreateMultipoleExpansion (Vec<3> c, double r) const
348
+ auto CreateMultipoleExpansion (Vec<3> c, double r, FMM_Parameters fmm_params) const
349
349
  {
350
- return make_shared<SingularMLExpansion<Vec<3,Complex>>> (c, r, kappa);
350
+ return make_shared<SingularMLExpansion<Vec<3,Complex>>> (c, r, kappa, fmm_params);
351
351
  }
352
352
 
353
- auto CreateLocalExpansion (Vec<3> c, double r) const
353
+ auto CreateLocalExpansion (Vec<3> c, double r, FMM_Parameters fmm_params) const
354
354
  {
355
- return make_shared<RegularMLExpansion<Vec<3,Complex>>> (c, r, kappa);
355
+ return make_shared<RegularMLExpansion<Vec<3,Complex>>> (c, r, kappa, fmm_params);
356
356
  }
357
357
 
358
358
  void AddSource (SingularMLExpansion<Vec<3,Complex>> & mp, Vec<3> pnt, Vec<3> nv, BareSliceVector<Complex> val) const
@@ -398,14 +398,14 @@ namespace ngsbem
398
398
  KernelTerm{1.0, 1, 3, 3},
399
399
  };
400
400
 
401
- auto CreateMultipoleExpansion (Vec<3> c, double r) const
401
+ auto CreateMultipoleExpansion (Vec<3> c, double r, FMM_Parameters fmm_params) const
402
402
  {
403
- return make_shared<SingularMLExpansion<Vec<6,Complex>>> (c, r, kappa);
403
+ return make_shared<SingularMLExpansion<Vec<6,Complex>>> (c, r, kappa, fmm_params);
404
404
  }
405
405
 
406
- auto CreateLocalExpansion (Vec<3> c, double r) const
406
+ auto CreateLocalExpansion (Vec<3> c, double r, FMM_Parameters fmm_params) const
407
407
  {
408
- return make_shared<RegularMLExpansion<Vec<6,Complex>>> (c, r, kappa);
408
+ return make_shared<RegularMLExpansion<Vec<6,Complex>>> (c, r, kappa, fmm_params);
409
409
  }
410
410
 
411
411
  void AddSource (SingularMLExpansion<Vec<6,Complex>> & mp, Vec<3> pnt, Vec<3> nv, BareSliceVector<Complex> val) const
@@ -461,14 +461,14 @@ namespace ngsbem
461
461
  double GetKappa() const { return kappa; }
462
462
  Array<KernelTerm> terms = { KernelTerm{1.0, 0, 0, 0}, };
463
463
 
464
- auto CreateMultipoleExpansion (Vec<3> c, double r) const
464
+ auto CreateMultipoleExpansion (Vec<3> c, double r, FMM_Parameters fmm_params) const
465
465
  {
466
- return make_shared<SingularMLExpansion<Complex>> (c, r, kappa);
466
+ return make_shared<SingularMLExpansion<Complex>> (c, r, kappa, fmm_params);
467
467
  }
468
468
 
469
- auto CreateLocalExpansion (Vec<3> c, double r) const
469
+ auto CreateLocalExpansion (Vec<3> c, double r, FMM_Parameters fmm_params) const
470
470
  {
471
- return make_shared<RegularMLExpansion<Complex>> (c, r, kappa);
471
+ return make_shared<RegularMLExpansion<Complex>> (c, r, kappa, fmm_params);
472
472
  }
473
473
 
474
474
  void AddSource (SingularMLExpansion<Complex> & mp, Vec<3> pnt, Vec<3> nv, BareSliceVector<Complex> val) const
@@ -519,14 +519,14 @@ namespace ngsbem
519
519
  double GetKappa() const { return kappa; }
520
520
  Array<KernelTerm> terms;
521
521
 
522
- auto CreateMultipoleExpansion (Vec<3> c, double r) const
522
+ auto CreateMultipoleExpansion (Vec<3> c, double r, FMM_Parameters fmm_params) const
523
523
  {
524
- return make_shared<SingularMLExpansion<Vec<4,Complex>>> (c, r, kappa);
524
+ return make_shared<SingularMLExpansion<Vec<4,Complex>>> (c, r, kappa, fmm_params);
525
525
  }
526
526
 
527
- auto CreateLocalExpansion (Vec<3> c, double r) const
527
+ auto CreateLocalExpansion (Vec<3> c, double r, FMM_Parameters fmm_params) const
528
528
  {
529
- return make_shared<RegularMLExpansion<Vec<4,Complex>>> (c, r, kappa);
529
+ return make_shared<RegularMLExpansion<Vec<4,Complex>>> (c, r, kappa, fmm_params);
530
530
  }
531
531
 
532
532
  void AddSource (SingularMLExpansion<Vec<4,Complex>> & mp, Vec<3> pnt, Vec<3> nv, BareSliceVector<Complex> val) const
@@ -586,14 +586,14 @@ namespace ngsbem
586
586
  KernelTerm{-1.0, 2, 1, 0},
587
587
  };
588
588
 
589
- auto CreateMultipoleExpansion (Vec<3> c, double r) const
589
+ auto CreateMultipoleExpansion (Vec<3> c, double r, FMM_Parameters fmm_params) const
590
590
  {
591
- return make_shared<SingularMLExpansion<Vec<3,Complex>>> (c, r, kappa);
591
+ return make_shared<SingularMLExpansion<Vec<3,Complex>>> (c, r, kappa, fmm_params);
592
592
  }
593
593
 
594
- auto CreateLocalExpansion (Vec<3> c, double r) const
594
+ auto CreateLocalExpansion (Vec<3> c, double r, FMM_Parameters fmm_params) const
595
595
  {
596
- return make_shared<RegularMLExpansion<Vec<3,Complex>>> (c, r, kappa);
596
+ return make_shared<RegularMLExpansion<Vec<3,Complex>>> (c, r, kappa, fmm_params);
597
597
  }
598
598
 
599
599
  void AddSource (SingularMLExpansion<Vec<3,Complex>> & mp, Vec<3> pnt, Vec<3> nv, BareSliceVector<Complex> val) const
@@ -700,14 +700,14 @@ namespace ngsbem
700
700
  }
701
701
 
702
702
 
703
- auto CreateMultipoleExpansion (Vec<3> c, double r) const
703
+ auto CreateMultipoleExpansion (Vec<3> c, double r, FMM_Parameters fmm_params) const
704
704
  {
705
- return make_shared<SingularMLExpansion<Vec<6,Complex>>> (c, r, 1e-16);
705
+ return make_shared<SingularMLExpansion<Vec<6,Complex>>> (c, r, 1e-16, fmm_params);
706
706
  }
707
707
 
708
- auto CreateLocalExpansion (Vec<3> c, double r) const
708
+ auto CreateLocalExpansion (Vec<3> c, double r, FMM_Parameters fmm_params) const
709
709
  {
710
- return make_shared<RegularMLExpansion<Vec<6,Complex>>> (c, r, 1e-16);
710
+ return make_shared<RegularMLExpansion<Vec<6,Complex>>> (c, r, 1e-16, fmm_params);
711
711
  }
712
712
 
713
713
 
@@ -119,9 +119,9 @@ namespace ngsbem
119
119
  shared_ptr<RegularMLExpansion<entry_type>> mlmp;
120
120
  public:
121
121
  RegularMLExpansionCF (shared_ptr<SingularMLExpansionCF<entry_type>> asingmp, Vec<3> center, double r)
122
- : CoefficientFunction(sizeof(entry_type)/sizeof(Complex), true), mlmp{make_shared<RegularMLExpansion<entry_type>>(asingmp->MLExpansion(), center, r)} { }
122
+ : CoefficientFunction(sizeof(entry_type)/sizeof(Complex), true), mlmp{make_shared<RegularMLExpansion<entry_type>>(asingmp->MLExpansion(), center, r, FMM_Parameters())} { }
123
123
  RegularMLExpansionCF (shared_ptr<SingularMLExpansion<entry_type>> asingmp, Vec<3> center, double r)
124
- : CoefficientFunction(sizeof(entry_type)/sizeof(Complex), true), mlmp{make_shared<RegularMLExpansion<entry_type>>(asingmp, center, r)} { }
124
+ : CoefficientFunction(sizeof(entry_type)/sizeof(Complex), true), mlmp{make_shared<RegularMLExpansion<entry_type>>(asingmp, center, r, FMM_Parameters())} { }
125
125
 
126
126
  virtual double Evaluate (const BaseMappedIntegrationPoint & ip) const override
127
127
  { throw Exception("real eval not available"); }
@@ -58,6 +58,15 @@ namespace ngsbem
58
58
 
59
59
 
60
60
 
61
+ class FMM_Parameters
62
+ {
63
+ public:
64
+ int maxdirect = 100;
65
+ int minorder = 20; // order = minorder + 2 kappa r
66
+ };
67
+
68
+
69
+
61
70
 
62
71
  inline std::tuple<double, double, double> SphericalCoordinates(Vec<3> dist){
63
72
  double len, theta, phi;
@@ -516,12 +525,14 @@ namespace ngsbem
516
525
 
517
526
  // ***************** parameters ****************
518
527
 
528
+ /*
519
529
  static constexpr int MPOrder (double rho_kappa)
520
530
  {
521
531
  // return max (20, int(2*rho_kappa));
522
532
  return 20+int(2*rho_kappa);
523
533
  }
524
534
  static constexpr int maxdirect = 100;
535
+ */
525
536
 
526
537
 
527
538
  template <typename SCAL, auto S>
@@ -665,11 +676,13 @@ namespace ngsbem
665
676
  Vec<3,SIMD<double,FMM_SW>>, simd_entry_type>> simd_chargedipoles;
666
677
 
667
678
  int total_sources;
679
+ const FMM_Parameters & fmm_params;
668
680
  std::mutex node_mutex;
669
681
  atomic<bool> have_childs{false};
670
682
 
671
- Node (Vec<3> acenter, double ar, int alevel, double akappa)
672
- : center(acenter), r(ar), level(alevel), mp(MPOrder(ar*akappa), akappa, ar) // min(1.0, ar*akappa))
683
+ Node (Vec<3> acenter, double ar, int alevel, double akappa, const FMM_Parameters & afmm_params)
684
+ // : center(acenter), r(ar), level(alevel), mp(MPOrder(ar*akappa), akappa, ar), fmm_params(afmm_params)
685
+ : center(acenter), r(ar), level(alevel), mp(afmm_params.minorder+2*ar*akappa, akappa, ar), fmm_params(afmm_params)
673
686
  {
674
687
  if (level < nodes_on_level.Size())
675
688
  nodes_on_level[level]++;
@@ -693,7 +706,7 @@ namespace ngsbem
693
706
  cc(0) += (i&1) ? r/2 : -r/2;
694
707
  cc(1) += (i&2) ? r/2 : -r/2;
695
708
  cc(2) += (i&4) ? r/2 : -r/2;
696
- childs[i] = make_unique<Node> (cc, r/2, level+1, mp.Kappa());
709
+ childs[i] = make_unique<Node> (cc, r/2, level+1, mp.Kappa(), fmm_params);
697
710
  }
698
711
  have_childs = true;
699
712
  }
@@ -742,7 +755,7 @@ namespace ngsbem
742
755
 
743
756
  // if (r*mp.Kappa() < 1e-8) return;
744
757
  if (level > 20) return;
745
- if (charges.Size() < maxdirect && r*mp.Kappa() < 5)
758
+ if (charges.Size() < fmm_params.maxdirect && r*mp.Kappa() < 5)
746
759
  return;
747
760
 
748
761
  SendSourcesToChilds();
@@ -772,7 +785,7 @@ namespace ngsbem
772
785
  dipoles.Append (tuple{x,d,c});
773
786
 
774
787
  if (level > 20) return;
775
- if (dipoles.Size() < maxdirect)
788
+ if (dipoles.Size() < fmm_params.maxdirect)
776
789
  return;
777
790
 
778
791
  SendSourcesToChilds();
@@ -801,7 +814,7 @@ namespace ngsbem
801
814
 
802
815
  chargedipoles.Append (tuple{x,c,dir,c2});
803
816
 
804
- if (chargedipoles.Size() < maxdirect || r < 1e-8)
817
+ if (chargedipoles.Size() < fmm_params.maxdirect || r < 1e-8)
805
818
  return;
806
819
 
807
820
  SendSourcesToChilds();
@@ -1269,12 +1282,13 @@ namespace ngsbem
1269
1282
  }
1270
1283
  };
1271
1284
 
1272
- Node root;
1285
+ FMM_Parameters fmm_params;
1286
+ Node root;
1273
1287
  bool havemp = false;
1274
1288
 
1275
1289
  public:
1276
- SingularMLExpansion (Vec<3> center, double r, double kappa)
1277
- : root(center, r, 0, kappa)
1290
+ SingularMLExpansion (Vec<3> center, double r, double kappa, FMM_Parameters _params = FMM_Parameters())
1291
+ : fmm_params(_params), root(center, r, 0, kappa, fmm_params)
1278
1292
  {
1279
1293
  nodes_on_level = 0;
1280
1294
  nodes_on_level[0] = 1;
@@ -1661,11 +1675,13 @@ namespace ngsbem
1661
1675
  atomic<bool> have_childs{false};
1662
1676
 
1663
1677
  Array<const typename SingularMLExpansion<elem_type>::Node*> singnodes;
1678
+ const FMM_Parameters & params;
1664
1679
 
1665
- Node (Vec<3> acenter, double ar, int alevel, double kappa)
1680
+
1681
+ Node (Vec<3> acenter, double ar, int alevel, double kappa, const FMM_Parameters & _params)
1666
1682
  : center(acenter), r(ar), level(alevel),
1667
1683
  // mp(MPOrder(ar*kappa), kappa, ar) // 1.0/min(1.0, 0.25*r*kappa))
1668
- mp(-1, kappa, ar)
1684
+ mp(-1, kappa, ar), params(_params)
1669
1685
  // : center(acenter), r(ar), level(alevel), mp(MPOrder(ar*kappa), kappa, 1.0)
1670
1686
  {
1671
1687
  if (level < nodes_on_level.Size())
@@ -1674,7 +1690,8 @@ namespace ngsbem
1674
1690
 
1675
1691
  void Allocate()
1676
1692
  {
1677
- mp = SphericalExpansion<Regular,elem_type>(MPOrder(r*mp.Kappa()), mp.Kappa(), r);
1693
+ // mp = SphericalExpansion<Regular,elem_type>(MPOrder(r*mp.Kappa()), mp.Kappa(), r);
1694
+ mp = SphericalExpansion<Regular,elem_type>(params.minorder+2*r*mp.Kappa(), mp.Kappa(), r);
1678
1695
  }
1679
1696
 
1680
1697
 
@@ -1688,7 +1705,7 @@ namespace ngsbem
1688
1705
  cc(0) += (i&1) ? r/2 : -r/2;
1689
1706
  cc(1) += (i&2) ? r/2 : -r/2;
1690
1707
  cc(2) += (i&4) ? r/2 : -r/2;
1691
- childs[i] = make_unique<Node> (cc, r/2, level+1, mp.Kappa());
1708
+ childs[i] = make_unique<Node> (cc, r/2, level+1, mp.Kappa(), params);
1692
1709
  if (allocate)
1693
1710
  childs[i] -> Allocate();
1694
1711
  }
@@ -1909,7 +1926,7 @@ namespace ngsbem
1909
1926
 
1910
1927
  // if (r*mp.Kappa() < 1e-8) return;
1911
1928
  if (level > 20) return;
1912
- if (targets.Size() < maxdirect && r*mp.Kappa() < 5)
1929
+ if (targets.Size() < params.maxdirect && r*mp.Kappa() < 5)
1913
1930
  return;
1914
1931
 
1915
1932
  CreateChilds();
@@ -1949,7 +1966,7 @@ namespace ngsbem
1949
1966
  vol_targets.Append (tuple(x,tr));
1950
1967
 
1951
1968
  if (level > 20) return;
1952
- if (vol_targets.Size() < maxdirect && (r*mp.Kappa() < 5))
1969
+ if (vol_targets.Size() < params.maxdirect && (r*mp.Kappa() < 5))
1953
1970
  return;
1954
1971
 
1955
1972
  CreateChilds();
@@ -2018,14 +2035,16 @@ namespace ngsbem
2018
2035
  }
2019
2036
 
2020
2037
  };
2021
-
2038
+
2039
+ FMM_Parameters fmm_params;
2022
2040
  Node root;
2023
2041
  shared_ptr<SingularMLExpansion<elem_type>> singmp;
2024
2042
 
2025
2043
  public:
2026
- RegularMLExpansion (shared_ptr<SingularMLExpansion<elem_type>> asingmp, Vec<3> center, double r)
2027
- : root(center, r, 0, asingmp->Kappa()), singmp(asingmp)
2028
- {
2044
+ RegularMLExpansion (shared_ptr<SingularMLExpansion<elem_type>> asingmp, Vec<3> center, double r,
2045
+ const FMM_Parameters & _params)
2046
+ : fmm_params(_params), root(center, r, 0, asingmp->Kappa(), fmm_params), singmp(asingmp)
2047
+ {
2029
2048
  if (!singmp->havemp) throw Exception("first call Calc for singular MP");
2030
2049
  root.Allocate();
2031
2050
 
@@ -2054,13 +2073,13 @@ namespace ngsbem
2054
2073
  }
2055
2074
  }
2056
2075
 
2057
- RegularMLExpansion (Vec<3> center, double r, double kappa)
2058
- : root(center, r, 0, kappa)
2059
- {
2060
- nodes_on_level = 0;
2061
- nodes_on_level[0] = 1;
2062
- }
2063
-
2076
+ RegularMLExpansion (Vec<3> center, double r, double kappa, const FMM_Parameters & _params)
2077
+ : fmm_params(_params), root(center, r, 0, kappa, fmm_params)
2078
+ {
2079
+ nodes_on_level = 0;
2080
+ nodes_on_level[0] = 1;
2081
+ }
2082
+
2064
2083
  void AddTarget (Vec<3> t)
2065
2084
  {
2066
2085
  root.AddTarget (t);
@@ -414,7 +414,7 @@ namespace ngcomp
414
414
  ///
415
415
  // MGPreconditioner * low_order_preconditioner;
416
416
  ///
417
- shared_ptr<Preconditioner> coarse_pre;
417
+ shared_ptr<BaseMatrix> coarse_pre;
418
418
  ///
419
419
  int finesmoothingsteps;
420
420
  ///
@@ -462,7 +462,7 @@ namespace ngcomp
462
462
  void MgTest () const;
463
463
 
464
464
  void SetDirectSolverCluster(shared_ptr<Array<int>> cluster);
465
- void SetCoarsePreconditioner(shared_ptr<Preconditioner> prec);
465
+ void SetCoarsePreconditioner(shared_ptr<BaseMatrix> prec);
466
466
  };
467
467
 
468
468
  class CommutingAMGPreconditioner : public Preconditioner
@@ -0,0 +1,153 @@
1
+ #ifndef SPARSEFACTORIZATION_INTERFACE_HPP
2
+ #define SPARSEFACTORIZATION_INTERFACE_HPP
3
+
4
+ #include "basevector.hpp"
5
+ #include "sparsecholesky.hpp"
6
+ #include "sparsematrix.hpp"
7
+ #include "../ngstd/python_ngstd.hpp"
8
+
9
+ namespace ngla {
10
+
11
+ void ExportSparseFactorizationInterface(py::module &m);
12
+
13
+ struct MapInnerDofs {
14
+ shared_ptr<BitArray> inner;
15
+ shared_ptr<const Array<int>> cluster;
16
+ Array<int> project;
17
+ Array<int> embed;
18
+ size_t size = 0;
19
+
20
+ MapInnerDofs(shared_ptr<BitArray> ainner,
21
+ shared_ptr<const Array<int>> acluster = nullptr)
22
+ : inner(ainner), cluster(acluster) {
23
+ if (!inner && !cluster) {
24
+ size = 0;
25
+ return;
26
+ }
27
+ if (inner) {
28
+ size = inner->NumSet();
29
+ project.SetSize(size);
30
+ embed.SetSize(inner->Size());
31
+ int j = 0;
32
+ for (int i = 0; i < inner->Size(); i++) {
33
+ if ((*inner)[i]) {
34
+ project[j] = i;
35
+ embed[i] = j++;
36
+ } else
37
+ embed[i] = -1;
38
+ }
39
+ return;
40
+ }
41
+
42
+ int j = 0;
43
+ for (int i = 0; i < cluster->Size(); i++) {
44
+ if ((*cluster)[i]) {
45
+ project.Append(i);
46
+ embed.Append(j++);
47
+ } else {
48
+ embed.Append(-1);
49
+ }
50
+ }
51
+ size = project.Size();
52
+ }
53
+
54
+ operator bool() const { return inner || cluster; }
55
+
56
+ template <typename T>
57
+ void Project(FlatVector<T> dst, FlatVector<T> src) const {
58
+ for (size_t i = 0; i < project.Size(); i++)
59
+ dst[i] = src[project[i]];
60
+ }
61
+
62
+ template <typename T> void Embed(T &dst, const T &src) const {
63
+ for (size_t i : Range(embed)) {
64
+ if (embed[i] >= 0)
65
+ dst[i] = src[embed[i]];
66
+ else
67
+ dst[i] = 0.0;
68
+ }
69
+ }
70
+
71
+ template <typename T>
72
+ void EmbedAdd(FlatVector<T> dst, FlatVector<T> src, T scale) const {
73
+ for (size_t i : Range(embed))
74
+ if (embed[i] >= 0)
75
+ dst[i] += scale * src[embed[i]];
76
+ }
77
+
78
+ template <typename T>
79
+ shared_ptr<SparseMatrixTM<T>>
80
+ ProjectMatrix(shared_ptr<const SparseMatrixTM<T>> m) {
81
+ Array<int> rowi, coli;
82
+ Array<T> vals;
83
+ auto &dofs = *inner;
84
+
85
+ auto vals_ori = m->GetValues();
86
+
87
+ auto &cluster_array = *cluster;
88
+ auto &inner_bitarray = *inner;
89
+ auto is_used = [this, &inner_bitarray, &cluster_array](int i, int j) {
90
+ if (inner)
91
+ return inner_bitarray[i] && inner_bitarray[j];
92
+ return cluster_array[i] == cluster_array[j];
93
+ };
94
+
95
+ for (auto i : project)
96
+ for (auto j : m->GetRowIndices(i))
97
+ if (is_used(i, j)) {
98
+ rowi.Append(embed[i]);
99
+ coli.Append(embed[j]);
100
+ vals.Append(vals_ori[m->GetPosition(i, j)]);
101
+ }
102
+
103
+ auto res = SparseMatrixTM<T>::CreateFromCOO(rowi, coli, vals,
104
+ project.Size(), project.Size());
105
+ res->SetSPD(m->IsSPD());
106
+ return res;
107
+ }
108
+ };
109
+
110
+ class SparseFactorizationInterface : public SparseFactorization {
111
+ protected:
112
+ shared_ptr<const BaseSparseMatrix> inner_mat;
113
+ shared_ptr<BaseVector> inner_rhs, inner_solution;
114
+ MapInnerDofs map_inner_dofs;
115
+ bool is_complex = false;
116
+ bool is_symmetric = false;
117
+ bool is_symmetric_storage = false;
118
+ bool is_analyzed = false;
119
+ int width, height, inner_width, inner_height;
120
+
121
+ public:
122
+ SparseFactorizationInterface() = delete;
123
+ SparseFactorizationInterface(shared_ptr<const BaseMatrix> m,
124
+ shared_ptr<BitArray> ainner = nullptr,
125
+ shared_ptr<const Array<int>> acluster = nullptr);
126
+
127
+ virtual ~SparseFactorizationInterface() {}
128
+
129
+ AutoVector CreateRowVector() const override {
130
+ return make_unique<VVector<double>>(Width());
131
+ }
132
+
133
+ AutoVector CreateColVector() const override {
134
+ return make_unique<VVector<double>>(Height());
135
+ }
136
+
137
+ shared_ptr<const BaseSparseMatrix> GetInnerMatrix() const {
138
+ return inner_mat;
139
+ }
140
+
141
+ void MultAdd(double s, const BaseVector &x, BaseVector &y) const override;
142
+ void MultAdd(Complex s, const BaseVector &x, BaseVector &y) const override;
143
+
144
+ virtual void Update() override;
145
+
146
+ virtual void Analyze() {}
147
+ virtual void Factor() {}
148
+ virtual void Solve(const BaseVector &rhs, BaseVector &solution) const = 0;
149
+ };
150
+
151
+ } // namespace ngla
152
+
153
+ #endif // SPARSEFACTORIZATION_INTERFACE_HPP
@@ -3,27 +3,27 @@
3
3
 
4
4
  namespace ngstd
5
5
  {
6
-
6
+
7
7
  /** Access to statusbar. (and more)
8
8
  */
9
9
 
10
10
  class NGS_DLL_HEADER BaseStatusHandler
11
- {
12
- public:
13
- static void PushStatus (const char * str);
11
+ {
12
+ public:
13
+ static void PushStatus (const std::string& str);
14
14
  static void PopStatus ();
15
15
  static void SetThreadPercentage (double percent);
16
-
16
+
17
17
  static void GetStatus (string & str, double & percent);
18
-
18
+
19
19
  static void SetTerminate(void);
20
20
  static void UnSetTerminate(void);
21
21
  static bool ShouldTerminate(void);
22
-
22
+
23
23
  class Region
24
24
  {
25
25
  public:
26
- Region(const char * str) { PushStatus(str); }
26
+ Region(const string& str) { PushStatus(str); }
27
27
  ~Region() { PopStatus(); }
28
28
  };
29
29
  };
netgen/libngbla.dylib CHANGED
Binary file
netgen/libngcomp.dylib CHANGED
Binary file
netgen/libngfem.dylib CHANGED
Binary file
netgen/libngla.dylib CHANGED
Binary file
netgen/libngsbem.dylib CHANGED
Binary file
netgen/libngsolve.dylib CHANGED
Binary file
netgen/libngstd.dylib CHANGED
Binary file
@@ -1,4 +1,4 @@
1
- set(PACKAGE_VERSION "6.2.2506-60-g1d0a21976")
1
+ set(PACKAGE_VERSION "6.2.2506-85-g5e4fc20dd")
2
2
  find_package(Netgen CONFIG REQUIRED HINTS
3
3
  ${CMAKE_CURRENT_LIST_DIR}
4
4
  ${CMAKE_CURRENT_LIST_DIR}/..
@@ -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 ngstd ngbla ngla ngfem ngsbem ngcomp ngsolve)
22
+ foreach(_cmake_expected_target IN ITEMS netgen_lib netgen_core_lib ngs_lapack 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}")
@@ -54,11 +54,18 @@ if(_IMPORT_PREFIX STREQUAL "/")
54
54
  set(_IMPORT_PREFIX "")
55
55
  endif()
56
56
 
57
- # Create imported target netgen_libs
58
- add_library(netgen_libs INTERFACE IMPORTED)
57
+ # Create imported target netgen_lib
58
+ add_library(netgen_lib INTERFACE IMPORTED)
59
59
 
60
- set_target_properties(netgen_libs PROPERTIES
61
- INTERFACE_LINK_LIBRARIES "nglib;ngcore"
60
+ set_target_properties(netgen_lib PROPERTIES
61
+ INTERFACE_LINK_LIBRARIES "nglib"
62
+ )
63
+
64
+ # Create imported target netgen_core_lib
65
+ add_library(netgen_core_lib INTERFACE IMPORTED)
66
+
67
+ set_target_properties(netgen_core_lib PROPERTIES
68
+ INTERFACE_LINK_LIBRARIES "ngcore"
62
69
  )
63
70
 
64
71
  # Create imported target ngs_lapack
@@ -74,7 +81,7 @@ add_library(ngstd SHARED IMPORTED)
74
81
  set_target_properties(ngstd PROPERTIES
75
82
  INTERFACE_COMPILE_DEFINITIONS "HAVE_NETGEN_SOURCES;HAVE_DLFCN_H;HAVE_CXA_DEMANGLE;USE_TIMEOFDAY;MSG_NOSIGNAL=0;TCL;LAPACK;NGS_PYTHON;USE_UMFPACK"
76
83
  INTERFACE_COMPILE_OPTIONS "\$<\$<COMPILE_LANGUAGE:CXX>:-std=c++17>;\$<\$<COMPILE_LANGUAGE:CXX>:-Wno-undefined-var-template;-Wno-vla-extension>;-DMAX_SYS_DIM=3"
77
- INTERFACE_LINK_LIBRARIES "netgen_libs"
84
+ INTERFACE_LINK_LIBRARIES "netgen_core_lib"
78
85
  )
79
86
 
80
87
  # Create imported target ngbla
@@ -109,14 +116,14 @@ set_target_properties(ngsbem PROPERTIES
109
116
  add_library(ngcomp SHARED IMPORTED)
110
117
 
111
118
  set_target_properties(ngcomp PROPERTIES
112
- INTERFACE_LINK_LIBRARIES "ngfem;ngla;ngbla;ngstd"
119
+ INTERFACE_LINK_LIBRARIES "ngfem;ngla;ngbla;ngstd;netgen_lib"
113
120
  )
114
121
 
115
122
  # Create imported target ngsolve
116
123
  add_library(ngsolve SHARED IMPORTED)
117
124
 
118
125
  set_target_properties(ngsolve PROPERTIES
119
- INTERFACE_LINK_LIBRARIES "netgen_libs;ngsolve;ngcomp;ngfem;ngsbem;ngbla;ngla;ngstd"
126
+ INTERFACE_LINK_LIBRARIES "netgen_lib;netgen_core_lib;ngsolve;ngcomp;ngfem;ngsbem;ngbla;ngla;ngstd"
120
127
  )
121
128
 
122
129
  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.2506-60-g1d0a21976"
33
- NGSOLVE_VERSION_GIT = "v6.2.2506-60-g1d0a21976"
34
- NGSOLVE_VERSION_PYTHON = "6.2.2506.post60.dev0"
32
+ NGSOLVE_VERSION = "6.2.2506-85-g5e4fc20dd"
33
+ NGSOLVE_VERSION_GIT = "v6.2.2506-85-g5e4fc20dd"
34
+ NGSOLVE_VERSION_PYTHON = "6.2.2506.post85.dev0"
35
35
 
36
36
  NGSOLVE_VERSION_MAJOR = "6"
37
37
  NGSOLVE_VERSION_MINOR = "2"
38
- NGSOLVE_VERSION_TWEAK = "60"
38
+ NGSOLVE_VERSION_TWEAK = "85"
39
39
  NGSOLVE_VERSION_PATCH = "2506"
40
- NGSOLVE_VERSION_HASH = "g1d0a21976"
40
+ NGSOLVE_VERSION_HASH = "g5e4fc20dd"
41
41
 
42
42
  CMAKE_CXX_COMPILER = "/Library/Developer/CommandLineTools/usr/bin/c++"
43
43
  CMAKE_CUDA_COMPILER = ""
ngsolve/directsolvers.py CHANGED
@@ -1,26 +1,14 @@
1
1
  from ngsolve import BaseMatrix, BitArray, BilinearForm, BaseVector
2
+ import ngsolve
2
3
 
3
- class SuperLU(BaseMatrix):
4
- # def __init__(self, a: BaseMatrix | BilinearForm, freedofs: BitArray = None):
5
- def __init__(self, a, freedofs: BitArray = None):
6
- super().__init__()
7
- self.a = a
8
- self.freedofs = freedofs
9
-
10
- def Update(self):
4
+ class SuperLU(ngsolve.la.SparseFactorizationInterface):
5
+ def Factor(self):
11
6
  import scipy.sparse as sp
12
7
  import scipy.sparse.linalg as spla
13
- a = self.a if isinstance(self.a, BaseMatrix) else self.a.mat
14
- mat = sp.csr_matrix(a.CSR())
15
- if self.freedofs is not None:
16
- self.fd = list(self.freedofs)
17
- mat = mat[self.fd,:][:,self.fd]
18
- self.lu = spla.factorized(sp.csc_matrix(mat))
8
+ vals, rows, cols = self.GetInnerMatrix().CSR()
9
+ self.inv_mat = spla.factorized(sp.csr_matrix((vals, rows, cols)))
10
+
11
+ def Solve(self, rhs, sol):
12
+ sol.FV().NumPy()[:] = self.inv_mat(rhs.FV().NumPy())
19
13
 
20
- def Mult(self, x: BaseVector, y: BaseVector):
21
- if not hasattr(self, "lu"):
22
- self.Update()
23
- if self.freedofs is not None:
24
- y.FV().NumPy()[self.fd] = self.lu(x.FV().NumPy()[self.fd])
25
- else:
26
- y.FV().NumPy()[:] = self.lu(x.FV().NumPy())
14
+ ngsolve.la.RegisterInverseType("superlu", SuperLU)
ngsolve/ngslib.so CHANGED
Binary file
@@ -0,0 +1,74 @@
1
+
2
+ try:
3
+ import nvmath
4
+ import nvmath.sparse.advanced as nvs
5
+ except ImportError:
6
+ raise ImportError("CUDSS solver requires nvmath-python module.")
7
+ import ngsolve.la as ngla
8
+ import scipy.sparse as sp
9
+ import numpy as np
10
+
11
+
12
+ class CudssSolver(ngla.SparseFactorizationInterface):
13
+ def Analyze(self):
14
+ self._mat = self.GetInnerMatrix()
15
+ csr = sp.csr_matrix(self._mat.CSR())
16
+ self._tmp = np.empty(csr.shape[1], dtype=csr.dtype)
17
+ options = make_directsolver_options()
18
+ self.solver = nvs.DirectSolver(csr, self._tmp, options=options)
19
+ self.solver.plan()
20
+
21
+ def Factor(self):
22
+ self.solver.factorize()
23
+
24
+ def Solve(self, b, sol):
25
+ self.solver.reset_operands(b=b.FV().NumPy())
26
+ sol.FV().NumPy()[:] = self.solver.solve()
27
+
28
+
29
+ ngla.RegisterInverseType("cudss", CudssSolver)
30
+
31
+
32
+ # find cudss multithreading lib from installed distribution
33
+
34
+ import os, pathlib
35
+ from importlib import util as importlib_util
36
+ from importlib import metadata as importlib_metadata
37
+
38
+ def _from_dist_files():
39
+ # Use the wheel’s file manifest (most reliable)
40
+ candidates = []
41
+ for dist_name in ("nvidia-cudss-cu12", "nvidia_cudss_cu12", "nvidia-cudss"): # try common variants
42
+ try:
43
+ dist = importlib_metadata.distribution(dist_name)
44
+ except importlib_metadata.PackageNotFoundError:
45
+ continue
46
+ for f in dist.files or []:
47
+ name = f.name.lower()
48
+ # check for name ends in .so or .so.*
49
+ endwith_so = name.endswith(".so") or (".so." in name and name.rsplit(".so.", 1)[1].replace(".", "").isdigit())
50
+ if name.startswith("libcudss_mtlayer_") and endwith_so:
51
+ candidates.append(dist.locate_file(f))
52
+ if name.startswith("cudss_mtlayer_") and name.endswith(".dll"):
53
+ candidates.append(dist.locate_file(f))
54
+ if candidates:
55
+ # Prefer anything in bin/ or lib/ if multiple
56
+ candidates.sort(key=lambda p: ("bin" not in str(p) and "lib" not in str(p), str(p)))
57
+ return str(candidates[0])
58
+ return None
59
+
60
+
61
+ def make_directsolver_options():
62
+ # Helpful on Windows (Python 3.8+): ensure DLL deps can be found
63
+ if os.name == "nt":
64
+ for var in ("CUDA_PATH", "CUDSS_PATH", "CONDA_PREFIX"):
65
+ base = os.environ.get(var)
66
+ if base:
67
+ p = pathlib.Path(base) / "bin"
68
+ if p.exists():
69
+ try:
70
+ os.add_dll_directory(str(p))
71
+ except Exception:
72
+ pass
73
+ mtlib = _from_dist_files()
74
+ return nvs.DirectSolverOptions(multithreading_lib=mtlib)
@@ -1,9 +1,9 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ngsolve
3
- Version: 6.2.2506.post60.dev0
3
+ Version: 6.2.2506.post85.dev0
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.2506.post8.dev0)
8
+ Requires-Dist: netgen-mesher (==6.2.2506.post14.dev0)
9
9
 
@@ -1,10 +1,10 @@
1
- netgen/libngbla.dylib,sha256=BbW5lRuybwvPnncduH8SiJfNz90XsoYnfLkMO_bcosw,5859920
2
- netgen/libngcomp.dylib,sha256=3xuR79SQw5IEi-m_03vJoS1Pjeo-QVde9KYJoc0EtHQ,43094720
3
- netgen/libngfem.dylib,sha256=ye3VWOgoHRNQXgiRN6ZbCLzTfIZRFn0Aro1O302j7jI,51693040
4
- netgen/libngla.dylib,sha256=igAlsaiv49lf-k8MXhXXaPMFIUtP6Ap0DitqXL-_tUY,25567728
5
- netgen/libngsbem.dylib,sha256=SYjz8Qn55MsUoZOcIRBF0ZRPEoAOWginjif3vVPhWDc,9473920
6
- netgen/libngsolve.dylib,sha256=Fc0RE6ytRezOAiyK0ZSDnXTGuBNnNY2WAMAE7xJMVIU,944000
7
- netgen/libngstd.dylib,sha256=MYgYMaWRb9IBWaGdpnP5IqvRbYF-6Uu2hUv0xuHq4HU,939808
1
+ netgen/libngbla.dylib,sha256=7TJQ901oVZDcAu8CoHlUG108VAR5NMkOirWhFASs5SA,5989488
2
+ netgen/libngcomp.dylib,sha256=cBNS_z0UrQJZ2XmjHdSWhAtfSjVbGg7-gP-aAXkr46w,44664208
3
+ netgen/libngfem.dylib,sha256=Mp27Gz2WeB7GG_-RAHPJQM1AsW932lxeMbgq5XbVjdM,52069760
4
+ netgen/libngla.dylib,sha256=rYFsjFDoRXmqrz0TYDeUFAT1gkVp_ToIaXIa2nf-gPw,26267840
5
+ netgen/libngsbem.dylib,sha256=xdIApOlgxKKc5ybkdp_HwnycMoq8SS5_D2zYRGini4M,9696176
6
+ netgen/libngsolve.dylib,sha256=QaU0AAraHCbmUMkKpq6JyfJ1shRXovuDHmBDfEEmp44,1069648
7
+ netgen/libngstd.dylib,sha256=NP8BUtsTeOnXVeDd6G-WGhtXVkUWyUfLaCJqnDg_nwM,1041424
8
8
  netgen/include/analytic_integrals.hpp,sha256=xLVJ8n0-t6UlU_yKE8i0vYkXilsNuqVixkzJlmxptKw,238
9
9
  netgen/include/arnoldi.hpp,sha256=b8mRu9wGyaLa7z6mXCFIhxfW_xcQvsOMD6TqbfYZ05g,1437
10
10
  netgen/include/bandmatrix.hpp,sha256=zwKz89QY53MPsWgNsl0cXEAFKka_W4sXPIO54M3eT80,7778
@@ -104,7 +104,7 @@ netgen/include/intrule.hpp,sha256=VSDdG7fpraQHY1eZFaKo7bLyfpwBjMM0Z2qJgcmYW3w,80
104
104
  netgen/include/intrules_SauterSchwab.hpp,sha256=1HiSgmdJHNoCp1ZYY7gNFPHdanepbGtay2YJrTaYHBg,650
105
105
  netgen/include/irspace.hpp,sha256=DcpkPMFKx5nDvfLfTWKmpYuLX-X5rBuWF8Ta9e__m-A,1508
106
106
  netgen/include/jacobi.hpp,sha256=hFhMn5Q46_DxHGofXV_or5VCTREslMvpccV7FZCAefE,4738
107
- netgen/include/kernels.hpp,sha256=pKuBM9bjaEdhpnTVJKF68-4-XP9s8xMKmBE8cnFR_Dc,23574
107
+ netgen/include/kernels.hpp,sha256=duCj2F7Gzz6drTp7_vi-oGIra0IiVK9VP5Ov4bpanCg,24354
108
108
  netgen/include/l2hofe.hpp,sha256=kbCezYmmgGqfIN0WZRNDKBEoWQTTcgpg7TEuDERolSY,6696
109
109
  netgen/include/l2hofe_impl.hpp,sha256=-rWVybAL7QTkfNNXAz1tP4RYQcBuOVYLTZE3E502tuA,15848
110
110
  netgen/include/l2hofefo.hpp,sha256=sQhmfliTW2Ac_XLucufzbRdtSRr471i3qPFAMSByvU0,16592
@@ -115,8 +115,8 @@ netgen/include/matrix.hpp,sha256=6Tg9xvyHWRmzrmK_pa15fE_V77y9pof3z78GnyzXmRE,557
115
115
  netgen/include/memusage.hpp,sha256=H-8rWQ8UQDCnOiYQnbwvILPuPoJD8bqwiNGB2QAUa0o,1168
116
116
  netgen/include/meshaccess.hpp,sha256=j5dinD-8bVm18MkVqG9j-IhhZUHHXw3erdZy-LHxl-8,47133
117
117
  netgen/include/mgpre.hpp,sha256=zdNozWRSyluOF8E4GLeOR290Yw2wqGYGc1sTTSB5n3U,4825
118
- netgen/include/mp_coefficient.hpp,sha256=AvH0tzkfqeOGZiydF2f0-M7vtW-29szci-9Krpl_Dow,4980
119
- netgen/include/mptools.hpp,sha256=elGoYLWZooEjH8NJmFOzFQJD_tuqgjDaCWZk7aZWzmo,70712
118
+ netgen/include/mp_coefficient.hpp,sha256=EFdnM3YDWmNya2NskFV5Idur6RKpGoHcgwN0qogB5hI,5016
119
+ netgen/include/mptools.hpp,sha256=_SR1XBtP7oGw7sZHNEINZJj-Fn-4IrGFM4b9aIiuNww,71593
120
120
  netgen/include/multigrid.hpp,sha256=ovl1GXcTfXuYLVVMcFfCKP5sg6diSGlqdjCMMPCgFUo,856
121
121
  netgen/include/multivector.hpp,sha256=nuLxMiq2y6HoH5w9j6ka2BhJjRyREPeEnNFx_x0SMU0,12635
122
122
  netgen/include/mumpsinverse.hpp,sha256=Jaa5NPQzwPo2kSbHijI_LX3tr0qUmVhqVlRM14KeD18,4062
@@ -147,7 +147,7 @@ netgen/include/pmltrafo.hpp,sha256=SrlOgJ4qmBST4uIjtl4VatEw5dsGrL1-7xSrXnuAPAg,1
147
147
  netgen/include/postproc.hpp,sha256=kaMQUfm_kd5Q4E0C5NaXPv3XyZncgOjwnZrvNJIP39A,5192
148
148
  netgen/include/potentialtools.hpp,sha256=Js9DZrAHaAnQT61v0vFcd4RX6vYtxWbXsW4kueo8m9c,465
149
149
  netgen/include/precomp.hpp,sha256=R-xo8gpTBNlyaQ-vj12q-VZoGZMox0FM5IWF22zWmMA,1277
150
- netgen/include/preconditioner.hpp,sha256=RW6Bf782q38Bx77ia3Iz3gwR_q8bp2O0bpsMHYswPBQ,14166
150
+ netgen/include/preconditioner.hpp,sha256=5TN6kvNNNk2JxR2ghUdD1iunrnCPgoeOE7z6NEW_zEw,14158
151
151
  netgen/include/prolongation.hpp,sha256=_VUX2vzhcXOGPM1HnRBXkTKrNyXew72VWRnAnvFitF4,10927
152
152
  netgen/include/python_comp.hpp,sha256=IVR8USVPy6hf1ZksUCUjvXcK7lcnyTpqzteR8a6Sblw,3464
153
153
  netgen/include/python_fem.hpp,sha256=9-GoQrCprOReAgK9-v_X3NwGWJ229vmGjtwGI9td5GA,3072
@@ -164,12 +164,13 @@ netgen/include/simd_complex.hpp,sha256=1L_WGuaYlR_xQdMMC4o0_aBX484GqrLuShG7pHG4i
164
164
  netgen/include/smoother.hpp,sha256=hZAe15R6BU88hMfhcTM3-eclRgzmHJnPKgYYWol9Sx8,6643
165
165
  netgen/include/solve.hpp,sha256=OZQfkg6HN20eudQ4kkRSecr-miwV35NPEjAtoMcunG4,2034
166
166
  netgen/include/sparsecholesky.hpp,sha256=2HKM6aKO02YX32jxGna6CAjBBfeXvCsmPk4hoWZWIQk,8888
167
+ netgen/include/sparsefactorization_interface.hpp,sha256=Hi6toUHpgKDCo4zqhZNSLbz1qOY_z3FqJVHcXCz-pjY,4143
167
168
  netgen/include/sparsematrix.hpp,sha256=3FCqp4zDtgi0CnrLdmmxzHiiub4jpIqg4yR1-eWQc8Q,32741
168
169
  netgen/include/sparsematrix_dyn.hpp,sha256=u9aWEYl6PhrevL9SPSXVE22_EIwIduDDvzY8xgIsw4Q,2656
169
170
  netgen/include/sparsematrix_impl.hpp,sha256=neN0xhP5nkT90B3U-u2uX2dgqU3l6m_zhsAihI8XtF0,30219
170
171
  netgen/include/special_matrix.hpp,sha256=1moUjxQ_uaS-GWrSbrbN4c8N3pDma9UpSaFqrNUXV80,16526
171
172
  netgen/include/specialelement.hpp,sha256=iiQaIE-cHbwGX014jET8k-rfb8k1GT6Gs_vsMIBWaOA,3226
172
- netgen/include/statushandler.hpp,sha256=Lh0Cevr7xnEoFW4QhTlNzEq9brpneGGmjAbv9o1kotY,646
173
+ netgen/include/statushandler.hpp,sha256=DTwByT_TMdV6jC3JMxw-_kxd9xtUtkKrcEF8ysI53CQ,671
173
174
  netgen/include/stringops.hpp,sha256=QiiQAFqB87FhxuMO_sigJU7L6FHfE3ebBy-cngouf_U,262
174
175
  netgen/include/superluinverse.hpp,sha256=FDSnHdTbVFDsFPF6B56IZJPDQKZx4fp2OubRQjE5_TU,3165
175
176
  netgen/include/symbolicintegrator.hpp,sha256=6LYXezRPon5_7RUSwT9tcqMZXI7ee72XTZ7G08MZ5sw,36047
@@ -201,28 +202,27 @@ ngsolve/__expr.py,sha256=ZJFhvQ6S14AAwm3dVyEy-ixMwPw_ZOhMnOqyfXNVKnw,4215
201
202
  ngsolve/__init__.py,sha256=jiKgjpR98P6_MojCVJKnSRGkr1gbZ0fY3tdLCnoPLec,5472
202
203
  ngsolve/_scikit_build_core_dependencies.py,sha256=3a7XNqFjWNfA4ADwcNA7NhatXcHY2aHf1RuGtaFmmks,735
203
204
  ngsolve/bvp.py,sha256=oRcYhe17uOl3G2zTwf4CYsMDUTcFs0wb4AYu_cKADtk,1987
204
- ngsolve/directsolvers.py,sha256=ilZmA6_fQulvPZmstKfuyCFI8cj9neEleqKUHxqFpQw,995
205
+ ngsolve/directsolvers.py,sha256=Jyx3-M8VVspuKcNkdB_-sdBx8B5BmnbtqshLTI9wnns,512
205
206
  ngsolve/eigenvalues.py,sha256=sQ8cgtK2wRoSVU2OrR3NdJWf1OmLS-KbDnm5K9Av74s,9309
206
207
  ngsolve/internal.py,sha256=bXUxNpvi4zaskEt9QJ_IEiv_Hn43kg5JVv1wmMUYBfE,5113
207
208
  ngsolve/krylovspace.py,sha256=wBSsE4-lmBnJsiNU1BYBKjfYgFAcqR1Ioe84DMwIjIM,31863
208
209
  ngsolve/meshes.py,sha256=fxxtbxkfKuO2nUkXUiYwAwBAVxr9gkdnyIbZX3VpITQ,26786
209
210
  ngsolve/ngs2petsc.py,sha256=6978Z7Na6eMOZ5NTEZx0ZVflyX6Kyy4gPQT_9RYuNss,12499
210
211
  ngsolve/ngscxx.py,sha256=q3t5DgE3sJazWueas8FTXJ9jZM-LVa9KbGj_RTam6V4,1293
211
- ngsolve/ngslib.so,sha256=IM3vb9hsk0R_cGRfu_WUcwrbvOAiqDZi_iaWE5RaV5Q,336760
212
+ ngsolve/ngslib.so,sha256=eIil7sQVWEG_SrLeovXm1ptXoFUNAphJ_WvJw5gzdN4,374712
212
213
  ngsolve/nonlinearsolvers.py,sha256=8Q_CrD9vjdpZRV9sj2Fth7Y_kJJl7djPgarQmTK7Xfw,8216
213
214
  ngsolve/preconditioners.py,sha256=DLRUd9wQwxXUWL1wEBAbHQbWNp71qZYOFvH5Krfa834,239
214
215
  ngsolve/solve_implementation.py,sha256=-yyggHGmivv_hhSfRpShFqfWw2SOECpR3BMvccidvE4,5540
215
- ngsolve/solvers.py,sha256=WgZ9X1x9mtQegXDu8VcTjP-wbS2EnrUS96Y8LXqeflw,304
216
216
  ngsolve/timestepping.py,sha256=SLbsgE5pY5tXYTLGlVypk4kS2Ui8GxOwWmKVxqneZRU,8350
217
217
  ngsolve/timing.py,sha256=Xqkq2byJjNNK9vJjHG2O3cMf6xuKIyySjk8yv6Le2T8,3985
218
218
  ngsolve/utils.py,sha256=V2yVF4K3uv1007-DEs_GrzJ3BOOh09c4lDGGR1Xw-PU,4557
219
219
  ngsolve/webgui.py,sha256=EUhaOtWHZy80aLXhXbHwbCQVNjRSw-BAAE50cz7Ydaw,24313
220
- ngsolve/cmake/NGSolveConfig.cmake,sha256=wwyp0QJIKGPrEOx9rCVUFIvxjWqZG1gNb6ibMs_uda0,5066
220
+ ngsolve/cmake/NGSolveConfig.cmake,sha256=M8ELOsBcHdKcoPGgxw0F0RIM2k4DvCLSdl-PakfrEpM,5066
221
221
  ngsolve/cmake/ngsolve-targets-release.cmake,sha256=2dUHzaaMQX08eT7Tjti0crzp_Ah3oqW86gp5UgSufmw,3426
222
- ngsolve/cmake/ngsolve-targets.cmake,sha256=1cQTFW-4aJfY356XRcuslSbFClmwPOSS03bj3WL15iM,5637
222
+ ngsolve/cmake/ngsolve-targets.cmake,sha256=M4iqepKAN5cMIPI7M3pavgHAx75siSAWiI4rPCnyrOo,5850
223
223
  ngsolve/config/__init__.py,sha256=A00lpnUKg-q3y_b-cN3jKF9urkGTGjb2Yz_gGc9WCLs,22
224
224
  ngsolve/config/__main__.py,sha256=m8k2RrXnXR5oYaUna1dwkKNhOZBiM7EyFSE9kIcZKvo,89
225
- ngsolve/config/config.py,sha256=O3wc_XkBmGo7LOKLwssO0XttebuymyWnbjwoy07vQhk,2467
225
+ ngsolve/config/config.py,sha256=4c7pzwYNcLnP2J8KKSMCYZGAnZEH5ERhX619CDzyB1k,2467
226
226
  ngsolve/demos/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
227
227
  ngsolve/demos/TensorProduct/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
228
228
  ngsolve/demos/TensorProduct/tp_dg_1d_1d.py,sha256=CrJCkbJNinVYUL3DO-4DnCAMGSAhegNc0QVWiJTk3Js,2109
@@ -254,41 +254,43 @@ ngsolve/demos/mpi/mpi_cmagnet.py,sha256=HuN4lttA2q2kNWss6LZNUKraHqskRQNVEBRjkrU2
254
254
  ngsolve/demos/mpi/mpi_navierstokes.py,sha256=Sct0G6EziYVfeIeSa7_b6r3WiYXcxZekoOGsZQALx-c,2911
255
255
  ngsolve/demos/mpi/mpi_poisson.py,sha256=UvXODjpWtqIgqq7lvMJf3ZEoJZLY1Dck-82R7auiW6I,2468
256
256
  ngsolve/demos/mpi/mpi_timeDG.py,sha256=TPJZ-DwmzOpuAol-fFKeU-R2rJ74MbjOm3DDkQI9BcY,1881
257
- ngsolve-6.2.2506.post60.dev0.data/data/Netgen.icns,sha256=Ebqct4LKxLzxdJLwGg0tTUQb1VjLwkKhtmdYhpRhKjg,291475
258
- ngsolve-6.2.2506.post60.dev0.data/data/bin/ngscxx,sha256=TDWPvQxbPYsPFhbPU6RlApEuxCoOOzwj3J80VKMMyp8,1755
259
- ngsolve-6.2.2506.post60.dev0.data/data/bin/ngsld,sha256=50UErkFWLTocn8GtZDTkUWmPTIqsoK5lcfBGwyP0Vnc,557
260
- ngsolve-6.2.2506.post60.dev0.data/data/bin/ngsolve.tcl,sha256=SSBYLyp4zgl6eM17LXIiLoj1Doy-h2s4EZg6oKi6ucA,20995
261
- ngsolve-6.2.2506.post60.dev0.data/data/bin/ngspy,sha256=OvTnzkYgC9G3IK42QJpjmXkV7Q_Arig43STSfPDsDD4,103
262
- ngsolve-6.2.2506.post60.dev0.data/data/share/ngsolve/beam.geo,sha256=EtxklGAIo6SxZlHHC_FZHoQGZqZUDGJQSheEMFO-bJ8,387
263
- ngsolve-6.2.2506.post60.dev0.data/data/share/ngsolve/beam.vol,sha256=aotG4VA7sIgAsPQsYkzbMP1Jta_TddG2gMCblkSPkqc,13594
264
- ngsolve-6.2.2506.post60.dev0.data/data/share/ngsolve/chip.in2d,sha256=g6C-mcoD8-q9JtZpuh4mf4iFEZUIGvvivp4C5YYMlAw,551
265
- ngsolve-6.2.2506.post60.dev0.data/data/share/ngsolve/chip.vol,sha256=if0yLn8E3P4mZ_X5sBcrEIp2C4ZhMysGROtB1YCkJHI,27897
266
- ngsolve-6.2.2506.post60.dev0.data/data/share/ngsolve/coil.geo,sha256=PVD4I9ztZowKwNOUrjnoOP7Tj2KG9J0UCJFRS9EhlxU,364
267
- ngsolve-6.2.2506.post60.dev0.data/data/share/ngsolve/coil.vol,sha256=IOZe4oPxMUa9vBGJWN4LG9M79XAruY23S2rtAh_2_98,144724
268
- ngsolve-6.2.2506.post60.dev0.data/data/share/ngsolve/coilshield.geo,sha256=lCUDCAhfowBttSGEY_giyY0xEFInAbgVfIPwSWBb504,605
269
- ngsolve-6.2.2506.post60.dev0.data/data/share/ngsolve/coilshield.vol,sha256=2Dq5VCX7dqGxo_ExtUhI716I-SnxhLGPawW29IR9nYY,162397
270
- ngsolve-6.2.2506.post60.dev0.data/data/share/ngsolve/cube.geo,sha256=kbBNVUYVSf1ogV7-Xf31KXju3LCUIPaDLfvwZHMgddI,386
271
- ngsolve-6.2.2506.post60.dev0.data/data/share/ngsolve/cube.vol,sha256=54108a3RvrTUOJSFltxUY8iiNzyWoBTtNrWM0kufj7c,90295
272
- ngsolve-6.2.2506.post60.dev0.data/data/share/ngsolve/d10_DGdoubleglazing.pde,sha256=bPQAvbYlyvCfLzk9cOzjXDn94UFC_vBCONl7fEIaMVs,1304
273
- ngsolve-6.2.2506.post60.dev0.data/data/share/ngsolve/d11_chip_nitsche.pde,sha256=Mq3Ap63mWqjQyXsASFAlkRQ0AWxBlY3BYYejTYd-lwg,1101
274
- ngsolve-6.2.2506.post60.dev0.data/data/share/ngsolve/d1_square.pde,sha256=ysOroxhoAOePmB_Aswps9iGjA2qV5435iu3hOnSvN8M,1029
275
- ngsolve-6.2.2506.post60.dev0.data/data/share/ngsolve/d2_chip.pde,sha256=AowiGbuAWEdyFUB3d1LlZeQ7rarbkqIYsj1QcWc89-A,950
276
- ngsolve-6.2.2506.post60.dev0.data/data/share/ngsolve/d3_helmholtz.pde,sha256=nG0HxrxboI2qGoR5_LNZt7RYB7ji2o5jtkyIqTFR4y8,568
277
- ngsolve-6.2.2506.post60.dev0.data/data/share/ngsolve/d4_cube.pde,sha256=-C4RgoVtBXZu7XHCwZy7F7pr_PGNGcRwWCFzBppq1mQ,1033
278
- ngsolve-6.2.2506.post60.dev0.data/data/share/ngsolve/d5_beam.pde,sha256=QOYC7YN7LdcjSFeLdJu1Tlfi-lmsVsa7b9G6qoCsGo8,1985
279
- ngsolve-6.2.2506.post60.dev0.data/data/share/ngsolve/d6_shaft.pde,sha256=Iua3INfuIUeaBk21qNg4u5KZt__H1B8BZUsy5frjhdY,1901
280
- ngsolve-6.2.2506.post60.dev0.data/data/share/ngsolve/d7_coil.pde,sha256=-ELH2obynMJcvSOqoYT1OThXcllIcdss0ZrklLSimZw,1200
281
- ngsolve-6.2.2506.post60.dev0.data/data/share/ngsolve/d8_coilshield.pde,sha256=WUUulvd3dsedB25sFVQgU7FgZ3B7BkbxgkXTEBglk1w,1141
282
- ngsolve-6.2.2506.post60.dev0.data/data/share/ngsolve/d9_hybridDG.pde,sha256=drLxnz1GvCEeme-FV772cGbS-YTgeUB4G5DrbkLdapw,1479
283
- ngsolve-6.2.2506.post60.dev0.data/data/share/ngsolve/doubleglazing.in2d,sha256=bKn7m7eCcoLimGgoO3nxhiu7Mm0lIRnbx0TJh5dC1I0,506
284
- ngsolve-6.2.2506.post60.dev0.data/data/share/ngsolve/doubleglazing.vol,sha256=Eg-H6nl2Hd5Nr593SFCCLVTDl25kIXuddrWpd7xlrP8,34987
285
- ngsolve-6.2.2506.post60.dev0.data/data/share/ngsolve/piezo2d40round4.vol.gz,sha256=RuxM0vtYljoAImOH6U6avt0LmWaUbGNao37n8p_Yd1w,496477
286
- ngsolve-6.2.2506.post60.dev0.data/data/share/ngsolve/shaft.geo,sha256=aPbk4EItJSLN_PjpOejnijk74y53QBW-IPCXHvLNlVs,2434
287
- ngsolve-6.2.2506.post60.dev0.data/data/share/ngsolve/shaft.vol,sha256=fT8qu1L-p0MkI-l3WVisKG52W5FCzO_NzXaCvMJT1V4,270450
288
- ngsolve-6.2.2506.post60.dev0.data/data/share/ngsolve/square.in2d,sha256=evpVgNNzReABv6bIs4J_r1OFeedMppoS-TEzE-tfKgY,192
289
- ngsolve-6.2.2506.post60.dev0.data/data/share/ngsolve/square.vol,sha256=IXIHYmq85hkFsMVZ_vEVthUnd0YTQWE4jRegjW8_ImI,9162
290
- ngsolve-6.2.2506.post60.dev0.dist-info/LICENSE,sha256=oZDcnIBDdV2Q-LCnX6ZrnkLUr0yYC_XdxjPwEk2zzuc,26430
291
- ngsolve-6.2.2506.post60.dev0.dist-info/METADATA,sha256=SXfVozWFZLbFcs7BUo1BcCYIuYEAujCBHKpXlIFRmHQ,201
292
- ngsolve-6.2.2506.post60.dev0.dist-info/WHEEL,sha256=YeDGh2t9OVO8eQwJ7A2CpeTltZRPMYGUji0_oep_V1g,110
293
- ngsolve-6.2.2506.post60.dev0.dist-info/top_level.txt,sha256=1llU44DxNIP85uPT4RChsIuV3h2d0_5j0Ui_Df5vV8E,15
294
- ngsolve-6.2.2506.post60.dev0.dist-info/RECORD,,
257
+ ngsolve/solvers/__init__.py,sha256=WgZ9X1x9mtQegXDu8VcTjP-wbS2EnrUS96Y8LXqeflw,304
258
+ ngsolve/solvers/cudss.py,sha256=7JbJKFKWafB4gJevID88lzNLaJw-kBUwEPJ68tuTT_g,2663
259
+ ngsolve-6.2.2506.post85.dev0.data/data/Netgen.icns,sha256=Ebqct4LKxLzxdJLwGg0tTUQb1VjLwkKhtmdYhpRhKjg,291475
260
+ ngsolve-6.2.2506.post85.dev0.data/data/bin/ngscxx,sha256=TDWPvQxbPYsPFhbPU6RlApEuxCoOOzwj3J80VKMMyp8,1755
261
+ ngsolve-6.2.2506.post85.dev0.data/data/bin/ngsld,sha256=50UErkFWLTocn8GtZDTkUWmPTIqsoK5lcfBGwyP0Vnc,557
262
+ ngsolve-6.2.2506.post85.dev0.data/data/bin/ngsolve.tcl,sha256=SSBYLyp4zgl6eM17LXIiLoj1Doy-h2s4EZg6oKi6ucA,20995
263
+ ngsolve-6.2.2506.post85.dev0.data/data/bin/ngspy,sha256=OvTnzkYgC9G3IK42QJpjmXkV7Q_Arig43STSfPDsDD4,103
264
+ ngsolve-6.2.2506.post85.dev0.data/data/share/ngsolve/beam.geo,sha256=EtxklGAIo6SxZlHHC_FZHoQGZqZUDGJQSheEMFO-bJ8,387
265
+ ngsolve-6.2.2506.post85.dev0.data/data/share/ngsolve/beam.vol,sha256=aotG4VA7sIgAsPQsYkzbMP1Jta_TddG2gMCblkSPkqc,13594
266
+ ngsolve-6.2.2506.post85.dev0.data/data/share/ngsolve/chip.in2d,sha256=g6C-mcoD8-q9JtZpuh4mf4iFEZUIGvvivp4C5YYMlAw,551
267
+ ngsolve-6.2.2506.post85.dev0.data/data/share/ngsolve/chip.vol,sha256=if0yLn8E3P4mZ_X5sBcrEIp2C4ZhMysGROtB1YCkJHI,27897
268
+ ngsolve-6.2.2506.post85.dev0.data/data/share/ngsolve/coil.geo,sha256=PVD4I9ztZowKwNOUrjnoOP7Tj2KG9J0UCJFRS9EhlxU,364
269
+ ngsolve-6.2.2506.post85.dev0.data/data/share/ngsolve/coil.vol,sha256=IOZe4oPxMUa9vBGJWN4LG9M79XAruY23S2rtAh_2_98,144724
270
+ ngsolve-6.2.2506.post85.dev0.data/data/share/ngsolve/coilshield.geo,sha256=lCUDCAhfowBttSGEY_giyY0xEFInAbgVfIPwSWBb504,605
271
+ ngsolve-6.2.2506.post85.dev0.data/data/share/ngsolve/coilshield.vol,sha256=2Dq5VCX7dqGxo_ExtUhI716I-SnxhLGPawW29IR9nYY,162397
272
+ ngsolve-6.2.2506.post85.dev0.data/data/share/ngsolve/cube.geo,sha256=kbBNVUYVSf1ogV7-Xf31KXju3LCUIPaDLfvwZHMgddI,386
273
+ ngsolve-6.2.2506.post85.dev0.data/data/share/ngsolve/cube.vol,sha256=54108a3RvrTUOJSFltxUY8iiNzyWoBTtNrWM0kufj7c,90295
274
+ ngsolve-6.2.2506.post85.dev0.data/data/share/ngsolve/d10_DGdoubleglazing.pde,sha256=bPQAvbYlyvCfLzk9cOzjXDn94UFC_vBCONl7fEIaMVs,1304
275
+ ngsolve-6.2.2506.post85.dev0.data/data/share/ngsolve/d11_chip_nitsche.pde,sha256=Mq3Ap63mWqjQyXsASFAlkRQ0AWxBlY3BYYejTYd-lwg,1101
276
+ ngsolve-6.2.2506.post85.dev0.data/data/share/ngsolve/d1_square.pde,sha256=ysOroxhoAOePmB_Aswps9iGjA2qV5435iu3hOnSvN8M,1029
277
+ ngsolve-6.2.2506.post85.dev0.data/data/share/ngsolve/d2_chip.pde,sha256=AowiGbuAWEdyFUB3d1LlZeQ7rarbkqIYsj1QcWc89-A,950
278
+ ngsolve-6.2.2506.post85.dev0.data/data/share/ngsolve/d3_helmholtz.pde,sha256=nG0HxrxboI2qGoR5_LNZt7RYB7ji2o5jtkyIqTFR4y8,568
279
+ ngsolve-6.2.2506.post85.dev0.data/data/share/ngsolve/d4_cube.pde,sha256=-C4RgoVtBXZu7XHCwZy7F7pr_PGNGcRwWCFzBppq1mQ,1033
280
+ ngsolve-6.2.2506.post85.dev0.data/data/share/ngsolve/d5_beam.pde,sha256=QOYC7YN7LdcjSFeLdJu1Tlfi-lmsVsa7b9G6qoCsGo8,1985
281
+ ngsolve-6.2.2506.post85.dev0.data/data/share/ngsolve/d6_shaft.pde,sha256=Iua3INfuIUeaBk21qNg4u5KZt__H1B8BZUsy5frjhdY,1901
282
+ ngsolve-6.2.2506.post85.dev0.data/data/share/ngsolve/d7_coil.pde,sha256=-ELH2obynMJcvSOqoYT1OThXcllIcdss0ZrklLSimZw,1200
283
+ ngsolve-6.2.2506.post85.dev0.data/data/share/ngsolve/d8_coilshield.pde,sha256=WUUulvd3dsedB25sFVQgU7FgZ3B7BkbxgkXTEBglk1w,1141
284
+ ngsolve-6.2.2506.post85.dev0.data/data/share/ngsolve/d9_hybridDG.pde,sha256=drLxnz1GvCEeme-FV772cGbS-YTgeUB4G5DrbkLdapw,1479
285
+ ngsolve-6.2.2506.post85.dev0.data/data/share/ngsolve/doubleglazing.in2d,sha256=bKn7m7eCcoLimGgoO3nxhiu7Mm0lIRnbx0TJh5dC1I0,506
286
+ ngsolve-6.2.2506.post85.dev0.data/data/share/ngsolve/doubleglazing.vol,sha256=Eg-H6nl2Hd5Nr593SFCCLVTDl25kIXuddrWpd7xlrP8,34987
287
+ ngsolve-6.2.2506.post85.dev0.data/data/share/ngsolve/piezo2d40round4.vol.gz,sha256=RuxM0vtYljoAImOH6U6avt0LmWaUbGNao37n8p_Yd1w,496477
288
+ ngsolve-6.2.2506.post85.dev0.data/data/share/ngsolve/shaft.geo,sha256=aPbk4EItJSLN_PjpOejnijk74y53QBW-IPCXHvLNlVs,2434
289
+ ngsolve-6.2.2506.post85.dev0.data/data/share/ngsolve/shaft.vol,sha256=fT8qu1L-p0MkI-l3WVisKG52W5FCzO_NzXaCvMJT1V4,270450
290
+ ngsolve-6.2.2506.post85.dev0.data/data/share/ngsolve/square.in2d,sha256=evpVgNNzReABv6bIs4J_r1OFeedMppoS-TEzE-tfKgY,192
291
+ ngsolve-6.2.2506.post85.dev0.data/data/share/ngsolve/square.vol,sha256=IXIHYmq85hkFsMVZ_vEVthUnd0YTQWE4jRegjW8_ImI,9162
292
+ ngsolve-6.2.2506.post85.dev0.dist-info/LICENSE,sha256=oZDcnIBDdV2Q-LCnX6ZrnkLUr0yYC_XdxjPwEk2zzuc,26430
293
+ ngsolve-6.2.2506.post85.dev0.dist-info/METADATA,sha256=NWtrcjqBhur0sHOzVf8nXVbPCrKoAOPpv_BaSR_yeBw,202
294
+ ngsolve-6.2.2506.post85.dev0.dist-info/WHEEL,sha256=YeDGh2t9OVO8eQwJ7A2CpeTltZRPMYGUji0_oep_V1g,110
295
+ ngsolve-6.2.2506.post85.dev0.dist-info/top_level.txt,sha256=1llU44DxNIP85uPT4RChsIuV3h2d0_5j0Ui_Df5vV8E,15
296
+ ngsolve-6.2.2506.post85.dev0.dist-info/RECORD,,
File without changes