ngsolve 6.2.2506.post60.dev0__cp312-cp312-macosx_10_15_universal2.whl → 6.2.2506.post74.dev0__cp312-cp312-macosx_10_15_universal2.whl

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

Potentially problematic release.


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

Files changed (66) hide show
  1. netgen/include/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/libngbla.dylib +0 -0
  6. netgen/libngcomp.dylib +0 -0
  7. netgen/libngfem.dylib +0 -0
  8. netgen/libngla.dylib +0 -0
  9. netgen/libngsbem.dylib +0 -0
  10. netgen/libngsolve.dylib +0 -0
  11. netgen/libngstd.dylib +0 -0
  12. ngsolve/__init__.pyi +59 -59
  13. ngsolve/bla.pyi +150 -94
  14. ngsolve/cmake/NGSolveConfig.cmake +1 -1
  15. ngsolve/comp/__init__.pyi +387 -103
  16. ngsolve/comp/pml.pyi +4 -1
  17. ngsolve/config/__init__.pyi +6 -6
  18. ngsolve/config/config.py +5 -5
  19. ngsolve/config/config.pyi +6 -6
  20. ngsolve/eigenvalues.pyi +4 -4
  21. ngsolve/fem.pyi +194 -110
  22. ngsolve/krylovspace.pyi +9 -9
  23. ngsolve/la.pyi +251 -88
  24. ngsolve/ngslib.so +0 -0
  25. ngsolve/ngstd.pyi +23 -4
  26. ngsolve/nonlinearsolvers.pyi +2 -2
  27. ngsolve/solve.pyi +7 -6
  28. ngsolve/utils.pyi +71 -71
  29. {ngsolve-6.2.2506.post60.dev0.dist-info → ngsolve-6.2.2506.post74.dev0.dist-info}/METADATA +2 -2
  30. {ngsolve-6.2.2506.post60.dev0.dist-info → ngsolve-6.2.2506.post74.dev0.dist-info}/RECORD +66 -66
  31. {ngsolve-6.2.2506.post60.dev0.data → ngsolve-6.2.2506.post74.dev0.data}/data/Netgen.icns +0 -0
  32. {ngsolve-6.2.2506.post60.dev0.data → ngsolve-6.2.2506.post74.dev0.data}/data/bin/ngscxx +0 -0
  33. {ngsolve-6.2.2506.post60.dev0.data → ngsolve-6.2.2506.post74.dev0.data}/data/bin/ngsld +0 -0
  34. {ngsolve-6.2.2506.post60.dev0.data → ngsolve-6.2.2506.post74.dev0.data}/data/bin/ngsolve.tcl +0 -0
  35. {ngsolve-6.2.2506.post60.dev0.data → ngsolve-6.2.2506.post74.dev0.data}/data/bin/ngspy +0 -0
  36. {ngsolve-6.2.2506.post60.dev0.data → ngsolve-6.2.2506.post74.dev0.data}/data/share/ngsolve/beam.geo +0 -0
  37. {ngsolve-6.2.2506.post60.dev0.data → ngsolve-6.2.2506.post74.dev0.data}/data/share/ngsolve/beam.vol +0 -0
  38. {ngsolve-6.2.2506.post60.dev0.data → ngsolve-6.2.2506.post74.dev0.data}/data/share/ngsolve/chip.in2d +0 -0
  39. {ngsolve-6.2.2506.post60.dev0.data → ngsolve-6.2.2506.post74.dev0.data}/data/share/ngsolve/chip.vol +0 -0
  40. {ngsolve-6.2.2506.post60.dev0.data → ngsolve-6.2.2506.post74.dev0.data}/data/share/ngsolve/coil.geo +0 -0
  41. {ngsolve-6.2.2506.post60.dev0.data → ngsolve-6.2.2506.post74.dev0.data}/data/share/ngsolve/coil.vol +0 -0
  42. {ngsolve-6.2.2506.post60.dev0.data → ngsolve-6.2.2506.post74.dev0.data}/data/share/ngsolve/coilshield.geo +0 -0
  43. {ngsolve-6.2.2506.post60.dev0.data → ngsolve-6.2.2506.post74.dev0.data}/data/share/ngsolve/coilshield.vol +0 -0
  44. {ngsolve-6.2.2506.post60.dev0.data → ngsolve-6.2.2506.post74.dev0.data}/data/share/ngsolve/cube.geo +0 -0
  45. {ngsolve-6.2.2506.post60.dev0.data → ngsolve-6.2.2506.post74.dev0.data}/data/share/ngsolve/cube.vol +0 -0
  46. {ngsolve-6.2.2506.post60.dev0.data → ngsolve-6.2.2506.post74.dev0.data}/data/share/ngsolve/d10_DGdoubleglazing.pde +0 -0
  47. {ngsolve-6.2.2506.post60.dev0.data → ngsolve-6.2.2506.post74.dev0.data}/data/share/ngsolve/d11_chip_nitsche.pde +0 -0
  48. {ngsolve-6.2.2506.post60.dev0.data → ngsolve-6.2.2506.post74.dev0.data}/data/share/ngsolve/d1_square.pde +0 -0
  49. {ngsolve-6.2.2506.post60.dev0.data → ngsolve-6.2.2506.post74.dev0.data}/data/share/ngsolve/d2_chip.pde +0 -0
  50. {ngsolve-6.2.2506.post60.dev0.data → ngsolve-6.2.2506.post74.dev0.data}/data/share/ngsolve/d3_helmholtz.pde +0 -0
  51. {ngsolve-6.2.2506.post60.dev0.data → ngsolve-6.2.2506.post74.dev0.data}/data/share/ngsolve/d4_cube.pde +0 -0
  52. {ngsolve-6.2.2506.post60.dev0.data → ngsolve-6.2.2506.post74.dev0.data}/data/share/ngsolve/d5_beam.pde +0 -0
  53. {ngsolve-6.2.2506.post60.dev0.data → ngsolve-6.2.2506.post74.dev0.data}/data/share/ngsolve/d6_shaft.pde +0 -0
  54. {ngsolve-6.2.2506.post60.dev0.data → ngsolve-6.2.2506.post74.dev0.data}/data/share/ngsolve/d7_coil.pde +0 -0
  55. {ngsolve-6.2.2506.post60.dev0.data → ngsolve-6.2.2506.post74.dev0.data}/data/share/ngsolve/d8_coilshield.pde +0 -0
  56. {ngsolve-6.2.2506.post60.dev0.data → ngsolve-6.2.2506.post74.dev0.data}/data/share/ngsolve/d9_hybridDG.pde +0 -0
  57. {ngsolve-6.2.2506.post60.dev0.data → ngsolve-6.2.2506.post74.dev0.data}/data/share/ngsolve/doubleglazing.in2d +0 -0
  58. {ngsolve-6.2.2506.post60.dev0.data → ngsolve-6.2.2506.post74.dev0.data}/data/share/ngsolve/doubleglazing.vol +0 -0
  59. {ngsolve-6.2.2506.post60.dev0.data → ngsolve-6.2.2506.post74.dev0.data}/data/share/ngsolve/piezo2d40round4.vol.gz +0 -0
  60. {ngsolve-6.2.2506.post60.dev0.data → ngsolve-6.2.2506.post74.dev0.data}/data/share/ngsolve/shaft.geo +0 -0
  61. {ngsolve-6.2.2506.post60.dev0.data → ngsolve-6.2.2506.post74.dev0.data}/data/share/ngsolve/shaft.vol +0 -0
  62. {ngsolve-6.2.2506.post60.dev0.data → ngsolve-6.2.2506.post74.dev0.data}/data/share/ngsolve/square.in2d +0 -0
  63. {ngsolve-6.2.2506.post60.dev0.data → ngsolve-6.2.2506.post74.dev0.data}/data/share/ngsolve/square.vol +0 -0
  64. {ngsolve-6.2.2506.post60.dev0.dist-info → ngsolve-6.2.2506.post74.dev0.dist-info}/LICENSE +0 -0
  65. {ngsolve-6.2.2506.post60.dev0.dist-info → ngsolve-6.2.2506.post74.dev0.dist-info}/WHEEL +0 -0
  66. {ngsolve-6.2.2506.post60.dev0.dist-info → ngsolve-6.2.2506.post74.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
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
ngsolve/__init__.pyi CHANGED
@@ -16,18 +16,15 @@ from builtins import sum as builtin_sum
16
16
  import netgen as netgen
17
17
  from netgen import Redraw
18
18
  from netgen import TimeFunction
19
- from ngsolve.bla import InnerProduct
20
- from ngsolve.bla import Matrix
21
- from ngsolve.bla import Norm
22
- from ngsolve.bla import Vector
19
+ from ngsolve.bla.pybind11_detail_function_record_v1_system_libcpp_abi1 import InnerProduct
20
+ from ngsolve.bla.pybind11_detail_function_record_v1_system_libcpp_abi1 import Matrix
21
+ from ngsolve.bla.pybind11_detail_function_record_v1_system_libcpp_abi1 import Norm
22
+ from ngsolve.bla.pybind11_detail_function_record_v1_system_libcpp_abi1 import Vector
23
23
  from ngsolve.comp import APhiHCurlAMG
24
24
  from ngsolve.comp import BilinearForm
25
- from ngsolve.comp import BoundaryFromVolumeCF
26
25
  from ngsolve.comp import COUPLING_TYPE
27
26
  from ngsolve.comp import Compress
28
- from ngsolve.comp import CompressCompound
29
27
  from ngsolve.comp import ContactBoundary
30
- from ngsolve.comp import ConvertOperator
31
28
  from ngsolve.comp import Discontinuous
32
29
  from ngsolve.comp import ElementId
33
30
  from ngsolve.comp import FESpace
@@ -44,10 +41,8 @@ from ngsolve.comp import HDiv
44
41
  from ngsolve.comp import HDivDiv
45
42
  from ngsolve.comp import HDivDivSurface
46
43
  from ngsolve.comp import HDivSurface
47
- from ngsolve.comp import Hidden as PrivateSpace
48
44
  from ngsolve.comp import Hidden
49
- from ngsolve.comp import Integrate
50
- from ngsolve.comp import Interpolate
45
+ from ngsolve.comp import Hidden as PrivateSpace
51
46
  from ngsolve.comp import L2
52
47
  from ngsolve.comp import LinearForm
53
48
  from ngsolve.comp import MatrixValued
@@ -59,18 +54,12 @@ from ngsolve.comp import NormalFacetFESpace
59
54
  from ngsolve.comp import NormalFacetSurface
60
55
  from ngsolve.comp import NumberSpace
61
56
  from ngsolve.comp import ORDER_POLICY
62
- from ngsolve.comp import PatchwiseSolve
63
57
  from ngsolve.comp import Periodic
64
58
  from ngsolve.comp import PlateauFESpace
65
59
  from ngsolve.comp import Preconditioner
66
60
  from ngsolve.comp import ProductSpace
67
61
  from ngsolve.comp import Region
68
- from ngsolve.comp import SetHeapSize
69
- from ngsolve.comp import SetTestoutFile
70
62
  from ngsolve.comp import SurfaceL2
71
- from ngsolve.comp import SymbolicBFI
72
- from ngsolve.comp import SymbolicEnergy
73
- from ngsolve.comp import SymbolicLFI
74
63
  from ngsolve.comp import TangentialFacetFESpace
75
64
  from ngsolve.comp import TangentialSurfaceL2
76
65
  from ngsolve.comp import VTKOutput
@@ -83,70 +72,81 @@ from ngsolve.comp import VectorNodalFESpace
83
72
  from ngsolve.comp import VectorSurfaceL2
84
73
  from ngsolve.comp import VectorValued
85
74
  from ngsolve.comp import pml
75
+ from ngsolve.comp.pybind11_detail_function_record_v1_system_libcpp_abi1 import BoundaryFromVolumeCF
76
+ from ngsolve.comp.pybind11_detail_function_record_v1_system_libcpp_abi1 import CompressCompound
77
+ from ngsolve.comp.pybind11_detail_function_record_v1_system_libcpp_abi1 import ConvertOperator
78
+ from ngsolve.comp.pybind11_detail_function_record_v1_system_libcpp_abi1 import Integrate
79
+ from ngsolve.comp.pybind11_detail_function_record_v1_system_libcpp_abi1 import Interpolate
80
+ from ngsolve.comp.pybind11_detail_function_record_v1_system_libcpp_abi1 import PatchwiseSolve
81
+ from ngsolve.comp.pybind11_detail_function_record_v1_system_libcpp_abi1 import SetHeapSize
82
+ from ngsolve.comp.pybind11_detail_function_record_v1_system_libcpp_abi1 import SetTestoutFile
83
+ from ngsolve.comp.pybind11_detail_function_record_v1_system_libcpp_abi1 import SymbolicBFI
84
+ from ngsolve.comp.pybind11_detail_function_record_v1_system_libcpp_abi1 import SymbolicEnergy
85
+ from ngsolve.comp.pybind11_detail_function_record_v1_system_libcpp_abi1 import SymbolicLFI
86
86
  from ngsolve.fem import BFI
87
87
  from ngsolve.fem import BSpline
88
- from ngsolve.fem import BlockBFI
89
- from ngsolve.fem import BlockLFI
90
- from ngsolve.fem import CacheCF
91
88
  from ngsolve.fem import CoefficientFunction
92
89
  from ngsolve.fem import CoefficientFunction as CF
93
- from ngsolve.fem import Cof
94
- from ngsolve.fem import CompoundBFI
95
- from ngsolve.fem import CompoundLFI
96
- from ngsolve.fem import Conj
97
- from ngsolve.fem import Cross
98
- from ngsolve.fem import Det
99
90
  from ngsolve.fem import ET
100
- from ngsolve.fem import Id
101
- from ngsolve.fem import IfPos
102
91
  from ngsolve.fem import IntegrationRule
103
- from ngsolve.fem import Inv
104
92
  from ngsolve.fem import LFI
105
93
  from ngsolve.fem import Parameter
106
94
  from ngsolve.fem import ParameterC
107
95
  from ngsolve.fem import PlaceholderCF
108
- from ngsolve.fem import Skew
109
- from ngsolve.fem import Sym
110
- from ngsolve.fem import Trace
111
- from ngsolve.fem import VoxelCoefficient
112
- from ngsolve.fem import Zero as ZeroCF
113
- from ngsolve.fem import acos
114
- from ngsolve.fem import asin
115
- from ngsolve.fem import atan
116
- from ngsolve.fem import atan2
117
- from ngsolve.fem import ceil
118
- from ngsolve.fem import cos
119
- from ngsolve.fem import cosh
120
- from ngsolve.fem import erf
121
- from ngsolve.fem import exp
122
- from ngsolve.fem import floor
123
- from ngsolve.fem import log
124
- from ngsolve.fem import pow
125
- from ngsolve.fem import sin
126
- from ngsolve.fem import sinh
127
- from ngsolve.fem import sqrt
128
- from ngsolve.fem import tan
129
- from ngsolve.la import ArnoldiSolver
96
+ from ngsolve.fem.pybind11_detail_function_record_v1_system_libcpp_abi1 import BlockBFI
97
+ from ngsolve.fem.pybind11_detail_function_record_v1_system_libcpp_abi1 import BlockLFI
98
+ from ngsolve.fem.pybind11_detail_function_record_v1_system_libcpp_abi1 import CacheCF
99
+ from ngsolve.fem.pybind11_detail_function_record_v1_system_libcpp_abi1 import Cof
100
+ from ngsolve.fem.pybind11_detail_function_record_v1_system_libcpp_abi1 import CompoundBFI
101
+ from ngsolve.fem.pybind11_detail_function_record_v1_system_libcpp_abi1 import CompoundLFI
102
+ from ngsolve.fem.pybind11_detail_function_record_v1_system_libcpp_abi1 import Conj
103
+ from ngsolve.fem.pybind11_detail_function_record_v1_system_libcpp_abi1 import Cross
104
+ from ngsolve.fem.pybind11_detail_function_record_v1_system_libcpp_abi1 import Det
105
+ from ngsolve.fem.pybind11_detail_function_record_v1_system_libcpp_abi1 import Id
106
+ from ngsolve.fem.pybind11_detail_function_record_v1_system_libcpp_abi1 import IfPos
107
+ from ngsolve.fem.pybind11_detail_function_record_v1_system_libcpp_abi1 import Inv
108
+ from ngsolve.fem.pybind11_detail_function_record_v1_system_libcpp_abi1 import Skew
109
+ from ngsolve.fem.pybind11_detail_function_record_v1_system_libcpp_abi1 import Sym
110
+ from ngsolve.fem.pybind11_detail_function_record_v1_system_libcpp_abi1 import Trace
111
+ from ngsolve.fem.pybind11_detail_function_record_v1_system_libcpp_abi1 import VoxelCoefficient
112
+ from ngsolve.fem.pybind11_detail_function_record_v1_system_libcpp_abi1 import Zero as ZeroCF
113
+ from ngsolve.fem.pybind11_detail_function_record_v1_system_libcpp_abi1 import acos
114
+ from ngsolve.fem.pybind11_detail_function_record_v1_system_libcpp_abi1 import asin
115
+ from ngsolve.fem.pybind11_detail_function_record_v1_system_libcpp_abi1 import atan
116
+ from ngsolve.fem.pybind11_detail_function_record_v1_system_libcpp_abi1 import atan2
117
+ from ngsolve.fem.pybind11_detail_function_record_v1_system_libcpp_abi1 import ceil
118
+ from ngsolve.fem.pybind11_detail_function_record_v1_system_libcpp_abi1 import cos
119
+ from ngsolve.fem.pybind11_detail_function_record_v1_system_libcpp_abi1 import cosh
120
+ from ngsolve.fem.pybind11_detail_function_record_v1_system_libcpp_abi1 import erf
121
+ from ngsolve.fem.pybind11_detail_function_record_v1_system_libcpp_abi1 import exp
122
+ from ngsolve.fem.pybind11_detail_function_record_v1_system_libcpp_abi1 import floor
123
+ from ngsolve.fem.pybind11_detail_function_record_v1_system_libcpp_abi1 import log
124
+ from ngsolve.fem.pybind11_detail_function_record_v1_system_libcpp_abi1 import pow
125
+ from ngsolve.fem.pybind11_detail_function_record_v1_system_libcpp_abi1 import sin
126
+ from ngsolve.fem.pybind11_detail_function_record_v1_system_libcpp_abi1 import sinh
127
+ from ngsolve.fem.pybind11_detail_function_record_v1_system_libcpp_abi1 import sqrt
128
+ from ngsolve.fem.pybind11_detail_function_record_v1_system_libcpp_abi1 import tan
130
129
  from ngsolve.la import BaseMatrix
131
130
  from ngsolve.la import BaseVector
132
131
  from ngsolve.la import BlockMatrix
133
132
  from ngsolve.la import BlockVector
134
- from ngsolve.la import CGSolver
135
133
  from ngsolve.la import ConstEBEMatrix
136
- from ngsolve.la import CreateVVector
137
134
  from ngsolve.la import DiagonalMatrix
138
135
  from ngsolve.la import Embedding
139
- from ngsolve.la import GMRESSolver
140
136
  from ngsolve.la import IdentityMatrix
141
137
  from ngsolve.la import MultiVector
142
138
  from ngsolve.la import PARALLEL_STATUS
143
139
  from ngsolve.la import ParallelMatrix
144
140
  from ngsolve.la import PermutationMatrix
145
141
  from ngsolve.la import Projector
146
- from ngsolve.la import QMRSolver
142
+ from ngsolve.la.pybind11_detail_function_record_v1_system_libcpp_abi1 import ArnoldiSolver
143
+ from ngsolve.la.pybind11_detail_function_record_v1_system_libcpp_abi1 import CGSolver
144
+ from ngsolve.la.pybind11_detail_function_record_v1_system_libcpp_abi1 import CreateVVector
145
+ from ngsolve.la.pybind11_detail_function_record_v1_system_libcpp_abi1 import GMRESSolver
146
+ from ngsolve.la.pybind11_detail_function_record_v1_system_libcpp_abi1 import QMRSolver
147
147
  from ngsolve.ngstd import IntRange
148
- from ngsolve.solve import Draw
149
- from ngsolve.solve import SetVisualization
148
+ from ngsolve.solve.pybind11_detail_function_record_v1_system_libcpp_abi1 import Draw
149
+ from ngsolve.solve.pybind11_detail_function_record_v1_system_libcpp_abi1 import SetVisualization
150
150
  from ngsolve.solve_implementation.Application import Solve
151
151
  from ngsolve.timing import Timing
152
152
  from ngsolve.utils import Deviator
@@ -168,10 +168,10 @@ from ngsolve.utils import printonce
168
168
  import os as os
169
169
  from pyngcore.pyngcore import BitArray
170
170
  from pyngcore.pyngcore import PajeTrace
171
- from pyngcore.pyngcore import SetNumThreads
172
171
  from pyngcore.pyngcore import TaskManager
173
172
  from pyngcore.pyngcore import Timer
174
- from pyngcore.pyngcore import Timers
173
+ from pyngcore.pyngcore.pybind11_detail_function_record_v1_system_libcpp_abi1 import SetNumThreads
174
+ from pyngcore.pyngcore.pybind11_detail_function_record_v1_system_libcpp_abi1 import Timers
175
175
  import sys as sys
176
176
  from . import bla
177
177
  from . import bvp
@@ -219,7 +219,7 @@ TET: fem.ET # value = <ET.TET: 20>
219
219
  TRIG: fem.ET # value = <ET.TRIG: 10>
220
220
  VERTEX: fem.NODE_TYPE # value = <NODE_TYPE.VERTEX: 0>
221
221
  VOL: comp.VorB # value = <VorB.VOL: 0>
222
- __version__: str = '6.2.2506-60-g1d0a21976'
222
+ __version__: str = '6.2.2506-74-gd430159c1'
223
223
  ds: comp.DifferentialSymbol # value = <ngsolve.comp.DifferentialSymbol object>
224
224
  dx: comp.DifferentialSymbol # value = <ngsolve.comp.DifferentialSymbol object>
225
225
  ngsglobals: comp.GlobalVariables # value = <ngsolve.comp.GlobalVariables object>