ngsolve 6.2.2503__cp312-cp312-macosx_10_15_universal2.whl → 6.2.2504__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.
- netgen/include/integrator.hpp +4 -16
- netgen/include/mp_coefficient.hpp +140 -0
- netgen/include/mptools.hpp +42 -161
- netgen/include/symbolicintegrator.hpp +1 -0
- netgen/libngbla.dylib +0 -0
- netgen/libngcomp.dylib +0 -0
- netgen/libngfem.dylib +0 -0
- netgen/libngla.dylib +0 -0
- netgen/libngsbem.dylib +0 -0
- netgen/libngstd.dylib +0 -0
- ngsolve/__init__.py +1 -0
- ngsolve/__init__.pyi +6 -4
- ngsolve/bla.pyi +8 -0
- ngsolve/cmake/NGSolveConfig.cmake +1 -1
- ngsolve/comp/__init__.pyi +7 -0
- ngsolve/config/__init__.pyi +6 -6
- ngsolve/config/config.py +5 -5
- ngsolve/config/config.pyi +6 -6
- ngsolve/fem.pyi +6 -0
- ngsolve/solve_implementation.py +146 -0
- ngsolve/solve_implementation.pyi +42 -0
- ngsolve/utils.pyi +1 -1
- {ngsolve-6.2.2503.dist-info → ngsolve-6.2.2504.dist-info}/METADATA +2 -2
- {ngsolve-6.2.2503.dist-info → ngsolve-6.2.2504.dist-info}/RECORD +60 -57
- {ngsolve-6.2.2503.data → ngsolve-6.2.2504.data}/data/Netgen.icns +0 -0
- {ngsolve-6.2.2503.data → ngsolve-6.2.2504.data}/data/bin/ngscxx +0 -0
- {ngsolve-6.2.2503.data → ngsolve-6.2.2504.data}/data/bin/ngsld +0 -0
- {ngsolve-6.2.2503.data → ngsolve-6.2.2504.data}/data/bin/ngsolve.tcl +0 -0
- {ngsolve-6.2.2503.data → ngsolve-6.2.2504.data}/data/bin/ngspy +0 -0
- {ngsolve-6.2.2503.data → ngsolve-6.2.2504.data}/data/share/ngsolve/beam.geo +0 -0
- {ngsolve-6.2.2503.data → ngsolve-6.2.2504.data}/data/share/ngsolve/beam.vol +0 -0
- {ngsolve-6.2.2503.data → ngsolve-6.2.2504.data}/data/share/ngsolve/chip.in2d +0 -0
- {ngsolve-6.2.2503.data → ngsolve-6.2.2504.data}/data/share/ngsolve/chip.vol +0 -0
- {ngsolve-6.2.2503.data → ngsolve-6.2.2504.data}/data/share/ngsolve/coil.geo +0 -0
- {ngsolve-6.2.2503.data → ngsolve-6.2.2504.data}/data/share/ngsolve/coil.vol +0 -0
- {ngsolve-6.2.2503.data → ngsolve-6.2.2504.data}/data/share/ngsolve/coilshield.geo +0 -0
- {ngsolve-6.2.2503.data → ngsolve-6.2.2504.data}/data/share/ngsolve/coilshield.vol +0 -0
- {ngsolve-6.2.2503.data → ngsolve-6.2.2504.data}/data/share/ngsolve/cube.geo +0 -0
- {ngsolve-6.2.2503.data → ngsolve-6.2.2504.data}/data/share/ngsolve/cube.vol +0 -0
- {ngsolve-6.2.2503.data → ngsolve-6.2.2504.data}/data/share/ngsolve/d10_DGdoubleglazing.pde +0 -0
- {ngsolve-6.2.2503.data → ngsolve-6.2.2504.data}/data/share/ngsolve/d11_chip_nitsche.pde +0 -0
- {ngsolve-6.2.2503.data → ngsolve-6.2.2504.data}/data/share/ngsolve/d1_square.pde +0 -0
- {ngsolve-6.2.2503.data → ngsolve-6.2.2504.data}/data/share/ngsolve/d2_chip.pde +0 -0
- {ngsolve-6.2.2503.data → ngsolve-6.2.2504.data}/data/share/ngsolve/d3_helmholtz.pde +0 -0
- {ngsolve-6.2.2503.data → ngsolve-6.2.2504.data}/data/share/ngsolve/d4_cube.pde +0 -0
- {ngsolve-6.2.2503.data → ngsolve-6.2.2504.data}/data/share/ngsolve/d5_beam.pde +0 -0
- {ngsolve-6.2.2503.data → ngsolve-6.2.2504.data}/data/share/ngsolve/d6_shaft.pde +0 -0
- {ngsolve-6.2.2503.data → ngsolve-6.2.2504.data}/data/share/ngsolve/d7_coil.pde +0 -0
- {ngsolve-6.2.2503.data → ngsolve-6.2.2504.data}/data/share/ngsolve/d8_coilshield.pde +0 -0
- {ngsolve-6.2.2503.data → ngsolve-6.2.2504.data}/data/share/ngsolve/d9_hybridDG.pde +0 -0
- {ngsolve-6.2.2503.data → ngsolve-6.2.2504.data}/data/share/ngsolve/doubleglazing.in2d +0 -0
- {ngsolve-6.2.2503.data → ngsolve-6.2.2504.data}/data/share/ngsolve/doubleglazing.vol +0 -0
- {ngsolve-6.2.2503.data → ngsolve-6.2.2504.data}/data/share/ngsolve/piezo2d40round4.vol.gz +0 -0
- {ngsolve-6.2.2503.data → ngsolve-6.2.2504.data}/data/share/ngsolve/shaft.geo +0 -0
- {ngsolve-6.2.2503.data → ngsolve-6.2.2504.data}/data/share/ngsolve/shaft.vol +0 -0
- {ngsolve-6.2.2503.data → ngsolve-6.2.2504.data}/data/share/ngsolve/square.in2d +0 -0
- {ngsolve-6.2.2503.data → ngsolve-6.2.2504.data}/data/share/ngsolve/square.vol +0 -0
- {ngsolve-6.2.2503.dist-info → ngsolve-6.2.2504.dist-info}/LICENSE +0 -0
- {ngsolve-6.2.2503.dist-info → ngsolve-6.2.2504.dist-info}/WHEEL +0 -0
- {ngsolve-6.2.2503.dist-info → ngsolve-6.2.2504.dist-info}/top_level.txt +0 -0
netgen/include/integrator.hpp
CHANGED
|
@@ -781,20 +781,14 @@ namespace ngfem
|
|
|
781
781
|
const FiniteElement & volumefel2, int LocalFacetNr2,
|
|
782
782
|
const ElementTransformation & eltrans2, FlatArray<int> & ElVertices2,
|
|
783
783
|
FlatVector<double> elx, FlatVector<double> ely,
|
|
784
|
-
LocalHeap & lh) const
|
|
785
|
-
{
|
|
786
|
-
throw Exception ("FacetBilinearFormIntegrator::ApplyFacetMatrix for inner facets not implemented!");
|
|
787
|
-
}
|
|
784
|
+
LocalHeap & lh) const;
|
|
788
785
|
virtual void
|
|
789
786
|
ApplyFacetMatrix (const FiniteElement & volumefel1, int LocalFacetNr1,
|
|
790
787
|
const ElementTransformation & eltrans1, FlatArray<int> & ElVertices1,
|
|
791
788
|
const FiniteElement & volumefel2, int LocalFacetNr2,
|
|
792
789
|
const ElementTransformation & eltrans2, FlatArray<int> & ElVertices2,
|
|
793
790
|
FlatVector<Complex> elx, FlatVector<Complex> ely,
|
|
794
|
-
LocalHeap & lh) const
|
|
795
|
-
{
|
|
796
|
-
throw Exception ("FacetBilinearFormIntegrator::ApplyFacetMatrix for inner facets not implemented!");
|
|
797
|
-
}
|
|
791
|
+
LocalHeap & lh) const;
|
|
798
792
|
|
|
799
793
|
|
|
800
794
|
virtual void
|
|
@@ -841,19 +835,13 @@ namespace ngfem
|
|
|
841
835
|
const ElementTransformation & eltrans, FlatArray<int> & ElVertices,
|
|
842
836
|
const ElementTransformation & seltrans, FlatArray<int> & SElVertices,
|
|
843
837
|
FlatVector<double> elx, FlatVector<double> ely,
|
|
844
|
-
LocalHeap & lh) const
|
|
845
|
-
{
|
|
846
|
-
throw Exception ("FacetBilinearFormIntegrator::ApplyFacetMatrix for boundary facets not implemented!");
|
|
847
|
-
}
|
|
838
|
+
LocalHeap & lh) const;
|
|
848
839
|
virtual void
|
|
849
840
|
ApplyFacetMatrix (const FiniteElement & volumefel, int LocalFacetNr,
|
|
850
841
|
const ElementTransformation & eltrans, FlatArray<int> & ElVertices,
|
|
851
842
|
const ElementTransformation & seltrans, FlatArray<int> & SElVertices,
|
|
852
843
|
FlatVector<Complex> elx, FlatVector<Complex> ely,
|
|
853
|
-
LocalHeap & lh) const
|
|
854
|
-
{
|
|
855
|
-
throw Exception ("FacetBilinearFormIntegrator::ApplyFacetMatrix for boundary facets not implemented!");
|
|
856
|
-
}
|
|
844
|
+
LocalHeap & lh) const;
|
|
857
845
|
|
|
858
846
|
|
|
859
847
|
// calculate traces in integration points
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
#ifndef MP_COEFFICIENT
|
|
2
|
+
#define MP_COEFFICIENT
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
#include "mptools.hpp"
|
|
6
|
+
|
|
7
|
+
namespace ngsbem
|
|
8
|
+
{
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
// ******************** Coefficient Functions *********************
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
class SphericalHarmonicsCF : public CoefficientFunction
|
|
15
|
+
{
|
|
16
|
+
SphericalHarmonics<Complex> sh;
|
|
17
|
+
public:
|
|
18
|
+
SphericalHarmonicsCF (int order)
|
|
19
|
+
: CoefficientFunction(1, true), sh(order) { }
|
|
20
|
+
Complex & Coef(int n, int m) { return sh.Coef(n,m); }
|
|
21
|
+
|
|
22
|
+
virtual double Evaluate (const BaseMappedIntegrationPoint & ip) const override
|
|
23
|
+
{ throw Exception("real eval not available"); }
|
|
24
|
+
|
|
25
|
+
virtual void Evaluate (const BaseMappedIntegrationPoint & mip, FlatVector<Complex> values) const override
|
|
26
|
+
{
|
|
27
|
+
values(0) = sh.Eval(mip.GetPoint());
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
virtual void Evaluate (const BaseMappedIntegrationRule & ir, BareSliceMatrix<Complex> values) const override
|
|
31
|
+
{
|
|
32
|
+
for (int i = 0; i < ir.Size(); i++)
|
|
33
|
+
{
|
|
34
|
+
auto & mip = ir[i];
|
|
35
|
+
values(i,0) = sh.Eval(mip.GetPoint());
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
auto & SH() { return sh; }
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
template <typename entry_type> class RegularMLMultiPoleCF;
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
template <typename RADIAL, typename entry_type=Complex>
|
|
48
|
+
class MultiPoleCF : public CoefficientFunction
|
|
49
|
+
{
|
|
50
|
+
MultiPole<RADIAL, entry_type> mp;
|
|
51
|
+
Vec<3> center;
|
|
52
|
+
public:
|
|
53
|
+
MultiPoleCF (int order, double kappa, Vec<3> acenter, double rtyp = 1)
|
|
54
|
+
: CoefficientFunction(sizeof(entry_type)/sizeof(Complex), true), mp(order, kappa, rtyp), center(acenter) { }
|
|
55
|
+
|
|
56
|
+
entry_type & Coef(int n, int m) { return mp.Coef(n,m); }
|
|
57
|
+
auto & SH() { return mp.SH(); }
|
|
58
|
+
auto & MP() { return mp; }
|
|
59
|
+
Vec<3> Center() const { return center; }
|
|
60
|
+
|
|
61
|
+
virtual double Evaluate (const BaseMappedIntegrationPoint & ip) const override
|
|
62
|
+
{ throw Exception("real eval not available"); }
|
|
63
|
+
|
|
64
|
+
virtual void Evaluate (const BaseMappedIntegrationPoint & mip, FlatVector<Complex> values) const override
|
|
65
|
+
{
|
|
66
|
+
if constexpr (std::is_same<entry_type, Complex>())
|
|
67
|
+
values(0) = mp.Eval(mip.GetPoint()-center);
|
|
68
|
+
else
|
|
69
|
+
values = mp.Eval(mip.GetPoint()-center);
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
template <typename TARGET>
|
|
73
|
+
void ShiftZ (double z, MultiPole<TARGET, entry_type> & target) { mp.ShiftZ(z, target); }
|
|
74
|
+
|
|
75
|
+
using CoefficientFunction::Transform;
|
|
76
|
+
template <typename TARGET>
|
|
77
|
+
void Transform (MultiPoleCF<TARGET, entry_type> & target)
|
|
78
|
+
{
|
|
79
|
+
mp.Transform (target.MP(), target.Center()-center);
|
|
80
|
+
}
|
|
81
|
+
};
|
|
82
|
+
|
|
83
|
+
template <typename entry_type>
|
|
84
|
+
class SingularMLMultiPoleCF : public CoefficientFunction
|
|
85
|
+
{
|
|
86
|
+
shared_ptr<SingularMLMultiPole<entry_type>> mlmp;
|
|
87
|
+
public:
|
|
88
|
+
SingularMLMultiPoleCF (Vec<3> center, double r, double kappa)
|
|
89
|
+
: CoefficientFunction(sizeof(entry_type)/sizeof(Complex), true), mlmp{make_shared<SingularMLMultiPole<entry_type>>(center, r, kappa)} { }
|
|
90
|
+
|
|
91
|
+
virtual double Evaluate (const BaseMappedIntegrationPoint & ip) const override
|
|
92
|
+
{ throw Exception("real eval not available"); }
|
|
93
|
+
|
|
94
|
+
virtual void Evaluate (const BaseMappedIntegrationPoint & mip, FlatVector<Complex> values) const override
|
|
95
|
+
{
|
|
96
|
+
// values(0) = mlmp->Evaluate(mip.GetPoint());
|
|
97
|
+
|
|
98
|
+
if constexpr (std::is_same<entry_type, Complex>())
|
|
99
|
+
values(0) = mlmp->Evaluate(mip.GetPoint());
|
|
100
|
+
else
|
|
101
|
+
values = mlmp->Evaluate(mip.GetPoint());
|
|
102
|
+
|
|
103
|
+
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
shared_ptr<SingularMLMultiPole<entry_type>> MLMP() const { return mlmp; }
|
|
107
|
+
shared_ptr<RegularMLMultiPoleCF<entry_type>> CreateRegularExpansion(Vec<3> center, double r) const;
|
|
108
|
+
};
|
|
109
|
+
|
|
110
|
+
|
|
111
|
+
template <typename entry_type>
|
|
112
|
+
class RegularMLMultiPoleCF : public CoefficientFunction
|
|
113
|
+
{
|
|
114
|
+
shared_ptr<RegularMLMultiPole<entry_type>> mlmp;
|
|
115
|
+
public:
|
|
116
|
+
RegularMLMultiPoleCF (shared_ptr<SingularMLMultiPoleCF<entry_type>> asingmp, Vec<3> center, double r)
|
|
117
|
+
: CoefficientFunction(sizeof(entry_type)/sizeof(Complex), true), mlmp{make_shared<RegularMLMultiPole<entry_type>>(asingmp->MLMP(), center, r)} { }
|
|
118
|
+
RegularMLMultiPoleCF (shared_ptr<SingularMLMultiPole<entry_type>> asingmp, Vec<3> center, double r)
|
|
119
|
+
: CoefficientFunction(sizeof(entry_type)/sizeof(Complex), true), mlmp{make_shared<RegularMLMultiPole<entry_type>>(asingmp, center, r)} { }
|
|
120
|
+
|
|
121
|
+
virtual double Evaluate (const BaseMappedIntegrationPoint & ip) const override
|
|
122
|
+
{ throw Exception("real eval not available"); }
|
|
123
|
+
|
|
124
|
+
virtual void Evaluate (const BaseMappedIntegrationPoint & mip, FlatVector<Complex> values) const override
|
|
125
|
+
{
|
|
126
|
+
// values(0) = mlmp->Evaluate(mip.GetPoint());
|
|
127
|
+
|
|
128
|
+
if constexpr (std::is_same<entry_type, Complex>())
|
|
129
|
+
values(0) = mlmp->Evaluate(mip.GetPoint());
|
|
130
|
+
else
|
|
131
|
+
values = mlmp->Evaluate(mip.GetPoint());
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
shared_ptr<RegularMLMultiPole<entry_type>> MLMP() { return mlmp; }
|
|
135
|
+
};
|
|
136
|
+
|
|
137
|
+
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
#endif
|
netgen/include/mptools.hpp
CHANGED
|
@@ -218,13 +218,11 @@ namespace ngsbem
|
|
|
218
218
|
class MPSingular
|
|
219
219
|
{
|
|
220
220
|
public:
|
|
221
|
-
/*
|
|
222
221
|
template <typename T>
|
|
223
222
|
static void Eval (int order, double r, double scale, T && values)
|
|
224
223
|
{
|
|
225
224
|
SphericalHankel1(order, r, scale, values);
|
|
226
225
|
}
|
|
227
|
-
*/
|
|
228
226
|
|
|
229
227
|
template <typename T>
|
|
230
228
|
static void Eval (int order, double kappa, double r, double rtyp, T && values)
|
|
@@ -235,7 +233,8 @@ namespace ngsbem
|
|
|
235
233
|
|
|
236
234
|
static double Scale (double kappa, double rtyp)
|
|
237
235
|
{
|
|
238
|
-
return min(1.0, rtyp*kappa);
|
|
236
|
+
// return min(1.0, rtyp*kappa);
|
|
237
|
+
return min(1.0, 0.5*rtyp*kappa);
|
|
239
238
|
}
|
|
240
239
|
};
|
|
241
240
|
|
|
@@ -245,13 +244,11 @@ namespace ngsbem
|
|
|
245
244
|
class MPRegular
|
|
246
245
|
{
|
|
247
246
|
public:
|
|
248
|
-
/*
|
|
249
247
|
template <typename T>
|
|
250
248
|
static void Eval (int order, double r, double scale, T && values)
|
|
251
249
|
{
|
|
252
250
|
SphericalBessel (order, r, 1.0/scale, values);
|
|
253
251
|
}
|
|
254
|
-
*/
|
|
255
252
|
|
|
256
253
|
template <typename T>
|
|
257
254
|
static void Eval (int order, double kappa, double r, double rtyp, T && values)
|
|
@@ -262,7 +259,8 @@ namespace ngsbem
|
|
|
262
259
|
|
|
263
260
|
static double Scale (double kappa, double rtyp)
|
|
264
261
|
{
|
|
265
|
-
return 1.0/ min(1.0, 0.25*rtyp*kappa);
|
|
262
|
+
// return 1.0/ min(1.0, 0.25*rtyp*kappa);
|
|
263
|
+
return 1.0/ min(1.0, 0.5*rtyp*kappa);
|
|
266
264
|
}
|
|
267
265
|
|
|
268
266
|
};
|
|
@@ -276,12 +274,7 @@ namespace ngsbem
|
|
|
276
274
|
SphericalHarmonics<entry_type> sh;
|
|
277
275
|
double kappa;
|
|
278
276
|
double rtyp;
|
|
279
|
-
// double scale;
|
|
280
277
|
public:
|
|
281
|
-
/*
|
|
282
|
-
MultiPole (int aorder, double akappa, double ascale = 1)
|
|
283
|
-
: sh(aorder), kappa(akappa), scale(ascale) { }
|
|
284
|
-
*/
|
|
285
278
|
|
|
286
279
|
MultiPole (int aorder, double akappa, double artyp)
|
|
287
280
|
: sh(aorder), kappa(akappa), rtyp(artyp) { }
|
|
@@ -362,8 +355,8 @@ namespace ngsbem
|
|
|
362
355
|
return;
|
|
363
356
|
}
|
|
364
357
|
|
|
365
|
-
static Timer t("mptool Transform "+ToString(typeid(RADIAL).name())+ToString(typeid(TARGET).name()));
|
|
366
|
-
RegionTimer reg(t);
|
|
358
|
+
// static Timer t("mptool Transform "+ToString(typeid(RADIAL).name())+ToString(typeid(TARGET).name()));
|
|
359
|
+
// RegionTimer reg(t);
|
|
367
360
|
|
|
368
361
|
double len = L2Norm(dist);
|
|
369
362
|
double theta, phi;
|
|
@@ -379,7 +372,10 @@ namespace ngsbem
|
|
|
379
372
|
phi = atan2(dist(1), dist(0));
|
|
380
373
|
|
|
381
374
|
|
|
382
|
-
MultiPole<RADIAL,entry_type> tmp
|
|
375
|
+
// MultiPole<RADIAL,entry_type> tmp{*this};
|
|
376
|
+
MultiPole<RADIAL,entry_type> tmp(Order(), kappa, rtyp);
|
|
377
|
+
tmp.SH().Coefs() = SH().Coefs();
|
|
378
|
+
|
|
383
379
|
tmp.SH().RotateZ(phi);
|
|
384
380
|
tmp.SH().RotateY(theta);
|
|
385
381
|
|
|
@@ -434,11 +430,9 @@ namespace ngsbem
|
|
|
434
430
|
Array<tuple<Vec<3>, Vec<3>, Complex,int>> currents;
|
|
435
431
|
int total_sources;
|
|
436
432
|
|
|
437
|
-
Node (Vec<3> acenter, double ar, int alevel,
|
|
438
|
-
: center(acenter), r(ar), level(alevel), mp(MPOrder(ar*
|
|
439
|
-
// : center(acenter), r(ar), level(alevel), mp(MPOrder(ar*kappa), kappa, 1.0)
|
|
433
|
+
Node (Vec<3> acenter, double ar, int alevel, double akappa)
|
|
434
|
+
: center(acenter), r(ar), level(alevel), mp(MPOrder(ar*akappa), akappa, ar) // min(1.0, ar*akappa))
|
|
440
435
|
{
|
|
441
|
-
// cout << "singml, add node, level = " << level << endl;
|
|
442
436
|
if (level < nodes_on_level.Size())
|
|
443
437
|
nodes_on_level[level]++;
|
|
444
438
|
}
|
|
@@ -453,7 +447,7 @@ namespace ngsbem
|
|
|
453
447
|
cc(0) += (i&1) ? r/2 : -r/2;
|
|
454
448
|
cc(1) += (i&2) ? r/2 : -r/2;
|
|
455
449
|
cc(2) += (i&4) ? r/2 : -r/2;
|
|
456
|
-
childs[i] = make_unique<Node> (cc, r/2, level+1,
|
|
450
|
+
childs[i] = make_unique<Node> (cc, r/2, level+1, mp.Kappa());
|
|
457
451
|
}
|
|
458
452
|
}
|
|
459
453
|
|
|
@@ -473,7 +467,8 @@ namespace ngsbem
|
|
|
473
467
|
|
|
474
468
|
charges.Append( tuple{x,c} );
|
|
475
469
|
|
|
476
|
-
if (r*mp.Kappa() < 1e-8) return;
|
|
470
|
+
// if (r*mp.Kappa() < 1e-8) return;
|
|
471
|
+
if (level > 20) return;
|
|
477
472
|
if (charges.Size() < maxdirect && r*mp.Kappa() < 1)
|
|
478
473
|
return;
|
|
479
474
|
|
|
@@ -588,9 +583,17 @@ namespace ngsbem
|
|
|
588
583
|
return sum;
|
|
589
584
|
}
|
|
590
585
|
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
586
|
+
// static Timer t("fmm direct eval"); RegionTimer reg(t);
|
|
587
|
+
if (mp.Kappa() < 1e-8)
|
|
588
|
+
{
|
|
589
|
+
for (auto [x,c] : charges)
|
|
590
|
+
if (double rho = L2Norm(p-x); rho > 0)
|
|
591
|
+
sum += (1/(4*M_PI))*Complex(1,rho*mp.Kappa()) / rho * c;
|
|
592
|
+
}
|
|
593
|
+
else
|
|
594
|
+
for (auto [x,c] : charges)
|
|
595
|
+
if (double rho = L2Norm(p-x); rho > 0)
|
|
596
|
+
sum += (1/(4*M_PI))*exp(Complex(0,rho*mp.Kappa())) / rho * c;
|
|
594
597
|
|
|
595
598
|
for (auto [x,d,c] : dipoles)
|
|
596
599
|
if (double rho = L2Norm(p-x); rho > 0)
|
|
@@ -771,8 +774,8 @@ namespace ngsbem
|
|
|
771
774
|
bool havemp = false;
|
|
772
775
|
|
|
773
776
|
public:
|
|
774
|
-
SingularMLMultiPole (Vec<3> center, double r,
|
|
775
|
-
: root(center, r, 0,
|
|
777
|
+
SingularMLMultiPole (Vec<3> center, double r, double kappa)
|
|
778
|
+
: root(center, r, 0, kappa)
|
|
776
779
|
{
|
|
777
780
|
nodes_on_level = 0;
|
|
778
781
|
nodes_on_level[0] = 1;
|
|
@@ -842,6 +845,7 @@ namespace ngsbem
|
|
|
842
845
|
for (int i = 0; i <= maxlevel; i++)
|
|
843
846
|
cout << "sing " << i << ": " << nodes_on_level[i] << endl;
|
|
844
847
|
*/
|
|
848
|
+
|
|
845
849
|
root.CalcTotalSources();
|
|
846
850
|
root.CalcMP();
|
|
847
851
|
|
|
@@ -886,8 +890,8 @@ namespace ngsbem
|
|
|
886
890
|
|
|
887
891
|
Array<const typename SingularMLMultiPole<elem_type>::Node*> singnodes;
|
|
888
892
|
|
|
889
|
-
Node (Vec<3> acenter, double ar, int alevel,
|
|
890
|
-
: center(acenter), r(ar), level(alevel), mp(MPOrder(ar*kappa), kappa, 1.0/min(1.0, 0.25*r*kappa))
|
|
893
|
+
Node (Vec<3> acenter, double ar, int alevel, double kappa)
|
|
894
|
+
: center(acenter), r(ar), level(alevel), mp(MPOrder(ar*kappa), kappa, ar) // 1.0/min(1.0, 0.25*r*kappa))
|
|
891
895
|
// : center(acenter), r(ar), level(alevel), mp(MPOrder(ar*kappa), kappa, 1.0)
|
|
892
896
|
{
|
|
893
897
|
if (level < nodes_on_level.Size())
|
|
@@ -905,7 +909,7 @@ namespace ngsbem
|
|
|
905
909
|
cc(0) += (i&1) ? r/2 : -r/2;
|
|
906
910
|
cc(1) += (i&2) ? r/2 : -r/2;
|
|
907
911
|
cc(2) += (i&4) ? r/2 : -r/2;
|
|
908
|
-
childs[i] = make_unique<Node> (cc, r/2, level+1,
|
|
912
|
+
childs[i] = make_unique<Node> (cc, r/2, level+1, mp.Kappa());
|
|
909
913
|
}
|
|
910
914
|
}
|
|
911
915
|
|
|
@@ -1027,7 +1031,7 @@ namespace ngsbem
|
|
|
1027
1031
|
sum = mp.Eval(p-center);
|
|
1028
1032
|
|
|
1029
1033
|
|
|
1030
|
-
static Timer t("mptool direct evaluate"); RegionTimer r(t);
|
|
1034
|
+
// static Timer t("mptool direct evaluate"); RegionTimer r(t);
|
|
1031
1035
|
for (auto sn : singnodes)
|
|
1032
1036
|
sum += sn->EvaluateMP(p);
|
|
1033
1037
|
|
|
@@ -1089,7 +1093,8 @@ namespace ngsbem
|
|
|
1089
1093
|
|
|
1090
1094
|
targets.Append( x );
|
|
1091
1095
|
|
|
1092
|
-
if (r*mp.Kappa() < 1e-8) return;
|
|
1096
|
+
// if (r*mp.Kappa() < 1e-8) return;
|
|
1097
|
+
if (level > 20) return;
|
|
1093
1098
|
if (targets.Size() < maxdirect && r*mp.Kappa() < 1)
|
|
1094
1099
|
return;
|
|
1095
1100
|
|
|
@@ -1145,8 +1150,8 @@ namespace ngsbem
|
|
|
1145
1150
|
shared_ptr<SingularMLMultiPole<elem_type>> singmp;
|
|
1146
1151
|
|
|
1147
1152
|
public:
|
|
1148
|
-
RegularMLMultiPole (shared_ptr<SingularMLMultiPole<elem_type>> asingmp, Vec<3> center, double r
|
|
1149
|
-
: root(center, r, 0,
|
|
1153
|
+
RegularMLMultiPole (shared_ptr<SingularMLMultiPole<elem_type>> asingmp, Vec<3> center, double r)
|
|
1154
|
+
: root(center, r, 0, asingmp->Kappa()), singmp(asingmp)
|
|
1150
1155
|
{
|
|
1151
1156
|
if (!singmp->havemp) throw Exception("first call Calc for singular MP");
|
|
1152
1157
|
|
|
@@ -1175,8 +1180,8 @@ namespace ngsbem
|
|
|
1175
1180
|
}
|
|
1176
1181
|
}
|
|
1177
1182
|
|
|
1178
|
-
RegularMLMultiPole (Vec<3> center, double r,
|
|
1179
|
-
: root(center, r, 0,
|
|
1183
|
+
RegularMLMultiPole (Vec<3> center, double r, double kappa)
|
|
1184
|
+
: root(center, r, 0, kappa)
|
|
1180
1185
|
{
|
|
1181
1186
|
nodes_on_level = 0;
|
|
1182
1187
|
nodes_on_level[0] = 1;
|
|
@@ -1189,6 +1194,8 @@ namespace ngsbem
|
|
|
1189
1194
|
|
|
1190
1195
|
void CalcMP(shared_ptr<SingularMLMultiPole<elem_type>> asingmp)
|
|
1191
1196
|
{
|
|
1197
|
+
static Timer t("mptool regular MLMP"); RegionTimer rg(t);
|
|
1198
|
+
|
|
1192
1199
|
singmp = asingmp;
|
|
1193
1200
|
|
|
1194
1201
|
root.CalcTotalTargets();
|
|
@@ -1205,6 +1212,7 @@ namespace ngsbem
|
|
|
1205
1212
|
cout << "reg " << i << ": " << RegularMLMultiPole::nodes_on_level[i] << endl;
|
|
1206
1213
|
*/
|
|
1207
1214
|
|
|
1215
|
+
static Timer tloc("mptool regular localize expansion"); RegionTimer rloc(tloc);
|
|
1208
1216
|
root.LocalizeExpansion(false);
|
|
1209
1217
|
}
|
|
1210
1218
|
|
|
@@ -1251,132 +1259,5 @@ namespace ngsbem
|
|
|
1251
1259
|
|
|
1252
1260
|
|
|
1253
1261
|
|
|
1254
|
-
// ******************** Coefficient Functions *********************
|
|
1255
|
-
|
|
1256
|
-
|
|
1257
|
-
class SphericalHarmonicsCF : public CoefficientFunction
|
|
1258
|
-
{
|
|
1259
|
-
SphericalHarmonics<Complex> sh;
|
|
1260
|
-
public:
|
|
1261
|
-
SphericalHarmonicsCF (int order)
|
|
1262
|
-
: CoefficientFunction(1, true), sh(order) { }
|
|
1263
|
-
Complex & Coef(int n, int m) { return sh.Coef(n,m); }
|
|
1264
|
-
|
|
1265
|
-
virtual double Evaluate (const BaseMappedIntegrationPoint & ip) const override
|
|
1266
|
-
{ throw Exception("real eval not available"); }
|
|
1267
|
-
|
|
1268
|
-
virtual void Evaluate (const BaseMappedIntegrationPoint & mip, FlatVector<Complex> values) const override
|
|
1269
|
-
{
|
|
1270
|
-
values(0) = sh.Eval(mip.GetPoint());
|
|
1271
|
-
}
|
|
1272
|
-
|
|
1273
|
-
virtual void Evaluate (const BaseMappedIntegrationRule & ir, BareSliceMatrix<Complex> values) const override
|
|
1274
|
-
{
|
|
1275
|
-
for (int i = 0; i < ir.Size(); i++)
|
|
1276
|
-
{
|
|
1277
|
-
auto & mip = ir[i];
|
|
1278
|
-
values(i,0) = sh.Eval(mip.GetPoint());
|
|
1279
|
-
}
|
|
1280
|
-
}
|
|
1281
|
-
|
|
1282
|
-
auto & SH() { return sh; }
|
|
1283
|
-
};
|
|
1284
|
-
|
|
1285
|
-
|
|
1286
|
-
|
|
1287
|
-
template <typename entry_type> class RegularMLMultiPoleCF;
|
|
1288
|
-
|
|
1289
|
-
|
|
1290
|
-
template <typename RADIAL, typename entry_type=Complex>
|
|
1291
|
-
class MultiPoleCF : public CoefficientFunction
|
|
1292
|
-
{
|
|
1293
|
-
MultiPole<RADIAL, entry_type> mp;
|
|
1294
|
-
Vec<3> center;
|
|
1295
|
-
public:
|
|
1296
|
-
MultiPoleCF (int order, double kappa, Vec<3> acenter, double scale = 1)
|
|
1297
|
-
: CoefficientFunction(sizeof(entry_type)/sizeof(Complex), true), mp(order, kappa, scale), center(acenter) { }
|
|
1298
|
-
|
|
1299
|
-
entry_type & Coef(int n, int m) { return mp.Coef(n,m); }
|
|
1300
|
-
auto & SH() { return mp.SH(); }
|
|
1301
|
-
auto & MP() { return mp; }
|
|
1302
|
-
Vec<3> Center() const { return center; }
|
|
1303
|
-
|
|
1304
|
-
virtual double Evaluate (const BaseMappedIntegrationPoint & ip) const override
|
|
1305
|
-
{ throw Exception("real eval not available"); }
|
|
1306
|
-
|
|
1307
|
-
virtual void Evaluate (const BaseMappedIntegrationPoint & mip, FlatVector<Complex> values) const override
|
|
1308
|
-
{
|
|
1309
|
-
if constexpr (std::is_same<entry_type, Complex>())
|
|
1310
|
-
values(0) = mp.Eval(mip.GetPoint()-center);
|
|
1311
|
-
else
|
|
1312
|
-
values = mp.Eval(mip.GetPoint()-center);
|
|
1313
|
-
}
|
|
1314
|
-
|
|
1315
|
-
template <typename TARGET>
|
|
1316
|
-
void ShiftZ (double z, MultiPole<TARGET, entry_type> & target) { mp.ShiftZ(z, target); }
|
|
1317
|
-
|
|
1318
|
-
using CoefficientFunction::Transform;
|
|
1319
|
-
template <typename TARGET>
|
|
1320
|
-
void Transform (MultiPoleCF<TARGET, entry_type> & target)
|
|
1321
|
-
{
|
|
1322
|
-
mp.Transform (target.MP(), target.Center()-center);
|
|
1323
|
-
}
|
|
1324
|
-
};
|
|
1325
|
-
|
|
1326
|
-
template <typename entry_type>
|
|
1327
|
-
class SingularMLMultiPoleCF : public CoefficientFunction
|
|
1328
|
-
{
|
|
1329
|
-
shared_ptr<SingularMLMultiPole<entry_type>> mlmp;
|
|
1330
|
-
public:
|
|
1331
|
-
SingularMLMultiPoleCF (Vec<3> center, double r, int order, double kappa)
|
|
1332
|
-
: CoefficientFunction(sizeof(entry_type)/sizeof(Complex), true), mlmp{make_shared<SingularMLMultiPole<entry_type>>(center, r, order, kappa)} { }
|
|
1333
|
-
|
|
1334
|
-
virtual double Evaluate (const BaseMappedIntegrationPoint & ip) const override
|
|
1335
|
-
{ throw Exception("real eval not available"); }
|
|
1336
|
-
|
|
1337
|
-
virtual void Evaluate (const BaseMappedIntegrationPoint & mip, FlatVector<Complex> values) const override
|
|
1338
|
-
{
|
|
1339
|
-
// values(0) = mlmp->Evaluate(mip.GetPoint());
|
|
1340
|
-
|
|
1341
|
-
if constexpr (std::is_same<entry_type, Complex>())
|
|
1342
|
-
values(0) = mlmp->Evaluate(mip.GetPoint());
|
|
1343
|
-
else
|
|
1344
|
-
values = mlmp->Evaluate(mip.GetPoint());
|
|
1345
|
-
|
|
1346
|
-
|
|
1347
|
-
}
|
|
1348
|
-
|
|
1349
|
-
shared_ptr<SingularMLMultiPole<entry_type>> MLMP() const { return mlmp; }
|
|
1350
|
-
shared_ptr<RegularMLMultiPoleCF<entry_type>> CreateRegularExpansion(Vec<3> center, double r) const;
|
|
1351
|
-
};
|
|
1352
|
-
|
|
1353
|
-
|
|
1354
|
-
template <typename entry_type>
|
|
1355
|
-
class RegularMLMultiPoleCF : public CoefficientFunction
|
|
1356
|
-
{
|
|
1357
|
-
shared_ptr<RegularMLMultiPole<entry_type>> mlmp;
|
|
1358
|
-
public:
|
|
1359
|
-
RegularMLMultiPoleCF (shared_ptr<SingularMLMultiPoleCF<entry_type>> asingmp, Vec<3> center, double r, int order)
|
|
1360
|
-
: CoefficientFunction(sizeof(entry_type)/sizeof(Complex), true), mlmp{make_shared<RegularMLMultiPole<entry_type>>(asingmp->MLMP(), center, r, order)} { }
|
|
1361
|
-
RegularMLMultiPoleCF (shared_ptr<SingularMLMultiPole<entry_type>> asingmp, Vec<3> center, double r, int order)
|
|
1362
|
-
: CoefficientFunction(sizeof(entry_type)/sizeof(Complex), true), mlmp{make_shared<RegularMLMultiPole<entry_type>>(asingmp, center, r, order)} { }
|
|
1363
|
-
|
|
1364
|
-
virtual double Evaluate (const BaseMappedIntegrationPoint & ip) const override
|
|
1365
|
-
{ throw Exception("real eval not available"); }
|
|
1366
|
-
|
|
1367
|
-
virtual void Evaluate (const BaseMappedIntegrationPoint & mip, FlatVector<Complex> values) const override
|
|
1368
|
-
{
|
|
1369
|
-
// values(0) = mlmp->Evaluate(mip.GetPoint());
|
|
1370
|
-
|
|
1371
|
-
if constexpr (std::is_same<entry_type, Complex>())
|
|
1372
|
-
values(0) = mlmp->Evaluate(mip.GetPoint());
|
|
1373
|
-
else
|
|
1374
|
-
values = mlmp->Evaluate(mip.GetPoint());
|
|
1375
|
-
}
|
|
1376
|
-
|
|
1377
|
-
shared_ptr<RegularMLMultiPole<entry_type>> MLMP() { return mlmp; }
|
|
1378
|
-
};
|
|
1379
|
-
|
|
1380
|
-
|
|
1381
1262
|
}
|
|
1382
1263
|
#endif
|
netgen/libngbla.dylib
CHANGED
|
Binary file
|
netgen/libngcomp.dylib
CHANGED
|
Binary file
|
netgen/libngfem.dylib
CHANGED
|
Binary file
|
netgen/libngla.dylib
CHANGED
|
Binary file
|
netgen/libngsbem.dylib
CHANGED
|
Binary file
|
netgen/libngstd.dylib
CHANGED
|
Binary file
|
ngsolve/__init__.py
CHANGED
|
@@ -75,6 +75,7 @@ from .utils import x, y, z, dx, ds, grad, Grad, curl, div, Deviator, PyId, PyTra
|
|
|
75
75
|
from . import solvers
|
|
76
76
|
from . import preconditioners
|
|
77
77
|
from . import timestepping
|
|
78
|
+
from .solve_implementation import Solve
|
|
78
79
|
|
|
79
80
|
try:
|
|
80
81
|
from netgen.occ import unit_square, unit_cube
|
ngsolve/__init__.pyi
CHANGED
|
@@ -44,8 +44,8 @@ from ngsolve.comp import HDiv
|
|
|
44
44
|
from ngsolve.comp import HDivDiv
|
|
45
45
|
from ngsolve.comp import HDivDivSurface
|
|
46
46
|
from ngsolve.comp import HDivSurface
|
|
47
|
-
from ngsolve.comp import Hidden
|
|
48
47
|
from ngsolve.comp import Hidden as PrivateSpace
|
|
48
|
+
from ngsolve.comp import Hidden
|
|
49
49
|
from ngsolve.comp import Integrate
|
|
50
50
|
from ngsolve.comp import Interpolate
|
|
51
51
|
from ngsolve.comp import L2
|
|
@@ -88,8 +88,8 @@ from ngsolve.fem import BSpline
|
|
|
88
88
|
from ngsolve.fem import BlockBFI
|
|
89
89
|
from ngsolve.fem import BlockLFI
|
|
90
90
|
from ngsolve.fem import CacheCF
|
|
91
|
-
from ngsolve.fem import CoefficientFunction
|
|
92
91
|
from ngsolve.fem import CoefficientFunction as CF
|
|
92
|
+
from ngsolve.fem import CoefficientFunction
|
|
93
93
|
from ngsolve.fem import Cof
|
|
94
94
|
from ngsolve.fem import CompoundBFI
|
|
95
95
|
from ngsolve.fem import CompoundLFI
|
|
@@ -147,6 +147,7 @@ from ngsolve.la import QMRSolver
|
|
|
147
147
|
from ngsolve.ngstd import IntRange
|
|
148
148
|
from ngsolve.solve import Draw
|
|
149
149
|
from ngsolve.solve import SetVisualization
|
|
150
|
+
from ngsolve.solve_implementation.Application import Solve
|
|
150
151
|
from ngsolve.timing import Timing
|
|
151
152
|
from ngsolve.utils import Deviator
|
|
152
153
|
from ngsolve.utils import Grad
|
|
@@ -185,11 +186,12 @@ from . import ngstd
|
|
|
185
186
|
from . import nonlinearsolvers
|
|
186
187
|
from . import preconditioners
|
|
187
188
|
from . import solve
|
|
189
|
+
from . import solve_implementation
|
|
188
190
|
from . import solvers
|
|
189
191
|
from . import timestepping
|
|
190
192
|
from . import timing
|
|
191
193
|
from . import utils
|
|
192
|
-
__all__ = ['APhiHCurlAMG', 'ArnoldiSolver', 'BBBND', 'BBND', 'BFI', 'BND', 'BSpline', 'BaseMatrix', 'BaseVector', 'BilinearForm', 'BitArray', 'BlockBFI', 'BlockLFI', 'BlockMatrix', 'BlockVector', 'BoundaryFromVolumeCF', 'CELL', 'CF', 'CGSolver', 'COUPLING_TYPE', 'CacheCF', 'CoefficientFunction', 'Cof', 'CompoundBFI', 'CompoundLFI', 'Compress', 'CompressCompound', 'Conj', 'ConstEBEMatrix', 'ContactBoundary', 'ConvertOperator', 'CreateVVector', 'Cross', 'Det', 'Deviator', 'DiagonalMatrix', 'Discontinuous', 'Draw', 'EDGE', 'ELEMENT', 'ET', 'ElementId', 'Embedding', 'FACE', 'FACET', 'FESpace', 'FacetFESpace', 'FacetSurface', 'GMRESSolver', 'Grad', 'GridFunction', 'H1', 'H1LumpingFESpace', 'HCurl', 'HCurlAMG', 'HCurlCurl', 'HCurlDiv', 'HDiv', 'HDivDiv', 'HDivDivSurface', 'HDivSurface', 'HEX', 'Hidden', 'Id', 'IdentityMatrix', 'IfPos', 'InnerProduct', 'IntRange', 'Integrate', 'IntegrationRule', 'Interpolate', 'Inv', 'L2', 'LFI', 'LinearForm', 'Matrix', 'MatrixValued', 'Mesh', 'MultiGridPreconditioner', 'MultiVector', 'NodalFESpace', 'NodeId', 'Norm', 'NormalFacetFESpace', 'NormalFacetSurface', 'Normalize', 'NumberSpace', 'ORDER_POLICY', 'OuterProduct', 'PARALLEL_STATUS', 'POINT', 'PRISM', 'PYRAMID', 'PajeTrace', 'ParallelMatrix', 'Parameter', 'ParameterC', 'PatchwiseSolve', 'Periodic', 'PermutationMatrix', 'PlaceholderCF', 'PlateauFESpace', 'Preconditioner', 'PrivateSpace', 'ProductSpace', 'Projector', 'PyCof', 'PyCross', 'PyDet', 'PyId', 'PyInv', 'PySkew', 'PySym', 'PyTrace', 'QMRSolver', 'QUAD', 'Redraw', 'Region', 'SEGM', 'SetHeapSize', 'SetNumThreads', 'SetTestoutFile', 'SetVisualization', 'Skew', 'SurfaceL2', 'Sym', 'SymbolicBFI', 'SymbolicEnergy', 'SymbolicLFI', 'TET', 'TRIG', 'TangentialFacetFESpace', 'TangentialSurfaceL2', 'TaskManager', 'TimeFunction', 'Timer', 'Timers', 'Timing', 'Trace', 'VERTEX', 'VOL', 'VTKOutput', 'Variation', 'Vector', 'VectorFacetFESpace', 'VectorFacetSurface', 'VectorH1', 'VectorL2', 'VectorNodalFESpace', 'VectorSurfaceL2', 'VectorValued', 'VoxelCoefficient', 'ZeroCF', 'acos', 'asin', 'atan', 'atan2', 'atexit', 'bla', 'builtin_sum', 'bvp', 'ceil', 'comp', 'config', 'cos', 'cosh', 'curl', 'directsolvers', 'div', 'ds', 'dx', 'eigenvalues', 'erf', 'exp', 'fem', 'floor', 'grad', 'krylovspace', 'la', 'log', 'netgen', 'ngsglobals', 'ngslib', 'ngstd', 'nonlinearsolvers', 'os', 'pi', 'pml', 'pow', 'preconditioners', 'printonce', 'sin', 'sinh', 'solve', 'solvers', 'specialcf', 'sqrt', 'sum', 'sys', 'tan', 'timestepping', 'timing', 'unit_cube', 'unit_square', 'utils', 'x', 'y', 'z']
|
|
194
|
+
__all__ = ['APhiHCurlAMG', 'ArnoldiSolver', 'BBBND', 'BBND', 'BFI', 'BND', 'BSpline', 'BaseMatrix', 'BaseVector', 'BilinearForm', 'BitArray', 'BlockBFI', 'BlockLFI', 'BlockMatrix', 'BlockVector', 'BoundaryFromVolumeCF', 'CELL', 'CF', 'CGSolver', 'COUPLING_TYPE', 'CacheCF', 'CoefficientFunction', 'Cof', 'CompoundBFI', 'CompoundLFI', 'Compress', 'CompressCompound', 'Conj', 'ConstEBEMatrix', 'ContactBoundary', 'ConvertOperator', 'CreateVVector', 'Cross', 'Det', 'Deviator', 'DiagonalMatrix', 'Discontinuous', 'Draw', 'EDGE', 'ELEMENT', 'ET', 'ElementId', 'Embedding', 'FACE', 'FACET', 'FESpace', 'FacetFESpace', 'FacetSurface', 'GMRESSolver', 'Grad', 'GridFunction', 'H1', 'H1LumpingFESpace', 'HCurl', 'HCurlAMG', 'HCurlCurl', 'HCurlDiv', 'HDiv', 'HDivDiv', 'HDivDivSurface', 'HDivSurface', 'HEX', 'Hidden', 'Id', 'IdentityMatrix', 'IfPos', 'InnerProduct', 'IntRange', 'Integrate', 'IntegrationRule', 'Interpolate', 'Inv', 'L2', 'LFI', 'LinearForm', 'Matrix', 'MatrixValued', 'Mesh', 'MultiGridPreconditioner', 'MultiVector', 'NodalFESpace', 'NodeId', 'Norm', 'NormalFacetFESpace', 'NormalFacetSurface', 'Normalize', 'NumberSpace', 'ORDER_POLICY', 'OuterProduct', 'PARALLEL_STATUS', 'POINT', 'PRISM', 'PYRAMID', 'PajeTrace', 'ParallelMatrix', 'Parameter', 'ParameterC', 'PatchwiseSolve', 'Periodic', 'PermutationMatrix', 'PlaceholderCF', 'PlateauFESpace', 'Preconditioner', 'PrivateSpace', 'ProductSpace', 'Projector', 'PyCof', 'PyCross', 'PyDet', 'PyId', 'PyInv', 'PySkew', 'PySym', 'PyTrace', 'QMRSolver', 'QUAD', 'Redraw', 'Region', 'SEGM', 'SetHeapSize', 'SetNumThreads', 'SetTestoutFile', 'SetVisualization', 'Skew', 'Solve', 'SurfaceL2', 'Sym', 'SymbolicBFI', 'SymbolicEnergy', 'SymbolicLFI', 'TET', 'TRIG', 'TangentialFacetFESpace', 'TangentialSurfaceL2', 'TaskManager', 'TimeFunction', 'Timer', 'Timers', 'Timing', 'Trace', 'VERTEX', 'VOL', 'VTKOutput', 'Variation', 'Vector', 'VectorFacetFESpace', 'VectorFacetSurface', 'VectorH1', 'VectorL2', 'VectorNodalFESpace', 'VectorSurfaceL2', 'VectorValued', 'VoxelCoefficient', 'ZeroCF', 'acos', 'asin', 'atan', 'atan2', 'atexit', 'bla', 'builtin_sum', 'bvp', 'ceil', 'comp', 'config', 'cos', 'cosh', 'curl', 'directsolvers', 'div', 'ds', 'dx', 'eigenvalues', 'erf', 'exp', 'fem', 'floor', 'grad', 'krylovspace', 'la', 'log', 'netgen', 'ngsglobals', 'ngslib', 'ngstd', 'nonlinearsolvers', 'os', 'pi', 'pml', 'pow', 'preconditioners', 'printonce', 'sin', 'sinh', 'solve', 'solve_implementation', 'solvers', 'specialcf', 'sqrt', 'sum', 'sys', 'tan', 'timestepping', 'timing', 'unit_cube', 'unit_square', 'utils', 'x', 'y', 'z']
|
|
193
195
|
def _add_flags_doc(module):
|
|
194
196
|
...
|
|
195
197
|
def _jupyter_nbextension_paths():
|
|
@@ -217,7 +219,7 @@ TET: fem.ET # value = <ET.TET: 20>
|
|
|
217
219
|
TRIG: fem.ET # value = <ET.TRIG: 10>
|
|
218
220
|
VERTEX: fem.NODE_TYPE # value = <NODE_TYPE.VERTEX: 0>
|
|
219
221
|
VOL: comp.VorB # value = <VorB.VOL: 0>
|
|
220
|
-
__version__: str = '6.2.
|
|
222
|
+
__version__: str = '6.2.2504'
|
|
221
223
|
ds: comp.DifferentialSymbol # value = <ngsolve.comp.DifferentialSymbol object>
|
|
222
224
|
dx: comp.DifferentialSymbol # value = <ngsolve.comp.DifferentialSymbol object>
|
|
223
225
|
ngsglobals: comp.GlobalVariables # value = <ngsolve.comp.GlobalVariables object>
|
ngsolve/bla.pyi
CHANGED
|
@@ -916,8 +916,12 @@ class Vec2D:
|
|
|
916
916
|
"""
|
|
917
917
|
Return value at given position
|
|
918
918
|
"""
|
|
919
|
+
@typing.overload
|
|
919
920
|
def __init__(self, arg0: float, arg1: float) -> None:
|
|
920
921
|
...
|
|
922
|
+
@typing.overload
|
|
923
|
+
def __init__(self, t: tuple) -> None:
|
|
924
|
+
...
|
|
921
925
|
def __mul__(self, value: float) -> Vec2D:
|
|
922
926
|
...
|
|
923
927
|
def __neg__(self) -> Vec2D:
|
|
@@ -971,8 +975,12 @@ class Vec3D:
|
|
|
971
975
|
"""
|
|
972
976
|
Return value at given position
|
|
973
977
|
"""
|
|
978
|
+
@typing.overload
|
|
974
979
|
def __init__(self, arg0: float, arg1: float, arg2: float) -> None:
|
|
975
980
|
...
|
|
981
|
+
@typing.overload
|
|
982
|
+
def __init__(self, t: tuple) -> None:
|
|
983
|
+
...
|
|
976
984
|
def __mul__(self, value: float) -> Vec3D:
|
|
977
985
|
...
|
|
978
986
|
def __neg__(self) -> Vec3D:
|