ngsolve 6.2.2501.post83.dev1__cp313-cp313-macosx_10_15_universal2.whl → 6.2.2502.post11.dev1__cp313-cp313-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/facetfespace.hpp +2 -0
- netgen/include/fespace.hpp +4 -2
- netgen/include/mptools.hpp +318 -85
- netgen/include/ngblas.hpp +14 -0
- netgen/include/potentialtools.hpp +20 -0
- netgen/include/prolongation.hpp +143 -1
- netgen/include/python_ngstd.hpp +1 -0
- netgen/include/sparsecholesky.hpp +1 -1
- netgen/include/sparsematrix_impl.hpp +71 -5
- netgen/include/tangentialfacetfespace.hpp +7 -22
- netgen/include/tensor.hpp +1 -1
- netgen/libngbla.dylib +0 -0
- netgen/libngcomp.dylib +0 -0
- netgen/libngfem.dylib +0 -0
- netgen/libngla.dylib +0 -0
- netgen/libngstd.dylib +0 -0
- ngsolve/__init__.pyi +2 -2
- ngsolve/cmake/NGSolveConfig.cmake +1 -1
- ngsolve/comp/__init__.pyi +11 -1
- ngsolve/config/__init__.pyi +7 -7
- ngsolve/config/config.py +6 -6
- ngsolve/config/config.pyi +7 -7
- ngsolve/directsolvers.pyi +1 -1
- ngsolve/fem.pyi +33 -1
- ngsolve/krylovspace.pyi +2 -2
- ngsolve/nonlinearsolvers.pyi +1 -1
- ngsolve/timestepping.pyi +3 -3
- ngsolve/utils.pyi +7 -2
- {ngsolve-6.2.2501.post83.dev1.dist-info → ngsolve-6.2.2502.post11.dev1.dist-info}/METADATA +2 -2
- {ngsolve-6.2.2501.post83.dev1.dist-info → ngsolve-6.2.2502.post11.dev1.dist-info}/RECORD +66 -65
- {ngsolve-6.2.2501.post83.dev1.data → ngsolve-6.2.2502.post11.dev1.data}/data/Netgen.icns +0 -0
- {ngsolve-6.2.2501.post83.dev1.data → ngsolve-6.2.2502.post11.dev1.data}/data/bin/ngscxx +0 -0
- {ngsolve-6.2.2501.post83.dev1.data → ngsolve-6.2.2502.post11.dev1.data}/data/bin/ngsld +0 -0
- {ngsolve-6.2.2501.post83.dev1.data → ngsolve-6.2.2502.post11.dev1.data}/data/bin/ngsolve.tcl +0 -0
- {ngsolve-6.2.2501.post83.dev1.data → ngsolve-6.2.2502.post11.dev1.data}/data/bin/ngspy +0 -0
- {ngsolve-6.2.2501.post83.dev1.data → ngsolve-6.2.2502.post11.dev1.data}/data/share/ngsolve/beam.geo +0 -0
- {ngsolve-6.2.2501.post83.dev1.data → ngsolve-6.2.2502.post11.dev1.data}/data/share/ngsolve/beam.vol +0 -0
- {ngsolve-6.2.2501.post83.dev1.data → ngsolve-6.2.2502.post11.dev1.data}/data/share/ngsolve/chip.in2d +0 -0
- {ngsolve-6.2.2501.post83.dev1.data → ngsolve-6.2.2502.post11.dev1.data}/data/share/ngsolve/chip.vol +0 -0
- {ngsolve-6.2.2501.post83.dev1.data → ngsolve-6.2.2502.post11.dev1.data}/data/share/ngsolve/coil.geo +0 -0
- {ngsolve-6.2.2501.post83.dev1.data → ngsolve-6.2.2502.post11.dev1.data}/data/share/ngsolve/coil.vol +0 -0
- {ngsolve-6.2.2501.post83.dev1.data → ngsolve-6.2.2502.post11.dev1.data}/data/share/ngsolve/coilshield.geo +0 -0
- {ngsolve-6.2.2501.post83.dev1.data → ngsolve-6.2.2502.post11.dev1.data}/data/share/ngsolve/coilshield.vol +0 -0
- {ngsolve-6.2.2501.post83.dev1.data → ngsolve-6.2.2502.post11.dev1.data}/data/share/ngsolve/cube.geo +0 -0
- {ngsolve-6.2.2501.post83.dev1.data → ngsolve-6.2.2502.post11.dev1.data}/data/share/ngsolve/cube.vol +0 -0
- {ngsolve-6.2.2501.post83.dev1.data → ngsolve-6.2.2502.post11.dev1.data}/data/share/ngsolve/d10_DGdoubleglazing.pde +0 -0
- {ngsolve-6.2.2501.post83.dev1.data → ngsolve-6.2.2502.post11.dev1.data}/data/share/ngsolve/d11_chip_nitsche.pde +0 -0
- {ngsolve-6.2.2501.post83.dev1.data → ngsolve-6.2.2502.post11.dev1.data}/data/share/ngsolve/d1_square.pde +0 -0
- {ngsolve-6.2.2501.post83.dev1.data → ngsolve-6.2.2502.post11.dev1.data}/data/share/ngsolve/d2_chip.pde +0 -0
- {ngsolve-6.2.2501.post83.dev1.data → ngsolve-6.2.2502.post11.dev1.data}/data/share/ngsolve/d3_helmholtz.pde +0 -0
- {ngsolve-6.2.2501.post83.dev1.data → ngsolve-6.2.2502.post11.dev1.data}/data/share/ngsolve/d4_cube.pde +0 -0
- {ngsolve-6.2.2501.post83.dev1.data → ngsolve-6.2.2502.post11.dev1.data}/data/share/ngsolve/d5_beam.pde +0 -0
- {ngsolve-6.2.2501.post83.dev1.data → ngsolve-6.2.2502.post11.dev1.data}/data/share/ngsolve/d6_shaft.pde +0 -0
- {ngsolve-6.2.2501.post83.dev1.data → ngsolve-6.2.2502.post11.dev1.data}/data/share/ngsolve/d7_coil.pde +0 -0
- {ngsolve-6.2.2501.post83.dev1.data → ngsolve-6.2.2502.post11.dev1.data}/data/share/ngsolve/d8_coilshield.pde +0 -0
- {ngsolve-6.2.2501.post83.dev1.data → ngsolve-6.2.2502.post11.dev1.data}/data/share/ngsolve/d9_hybridDG.pde +0 -0
- {ngsolve-6.2.2501.post83.dev1.data → ngsolve-6.2.2502.post11.dev1.data}/data/share/ngsolve/doubleglazing.in2d +0 -0
- {ngsolve-6.2.2501.post83.dev1.data → ngsolve-6.2.2502.post11.dev1.data}/data/share/ngsolve/doubleglazing.vol +0 -0
- {ngsolve-6.2.2501.post83.dev1.data → ngsolve-6.2.2502.post11.dev1.data}/data/share/ngsolve/piezo2d40round4.vol.gz +0 -0
- {ngsolve-6.2.2501.post83.dev1.data → ngsolve-6.2.2502.post11.dev1.data}/data/share/ngsolve/shaft.geo +0 -0
- {ngsolve-6.2.2501.post83.dev1.data → ngsolve-6.2.2502.post11.dev1.data}/data/share/ngsolve/shaft.vol +0 -0
- {ngsolve-6.2.2501.post83.dev1.data → ngsolve-6.2.2502.post11.dev1.data}/data/share/ngsolve/square.in2d +0 -0
- {ngsolve-6.2.2501.post83.dev1.data → ngsolve-6.2.2502.post11.dev1.data}/data/share/ngsolve/square.vol +0 -0
- {ngsolve-6.2.2501.post83.dev1.dist-info → ngsolve-6.2.2502.post11.dev1.dist-info}/LICENSE +0 -0
- {ngsolve-6.2.2501.post83.dev1.dist-info → ngsolve-6.2.2502.post11.dev1.dist-info}/WHEEL +0 -0
- {ngsolve-6.2.2501.post83.dev1.dist-info → ngsolve-6.2.2502.post11.dev1.dist-info}/top_level.txt +0 -0
netgen/include/ngblas.hpp
CHANGED
|
@@ -655,6 +655,20 @@ namespace ngbla
|
|
|
655
655
|
template <bool ADD, ORDERING ord>
|
|
656
656
|
extern NGS_DLL_HEADER
|
|
657
657
|
void NgGEMV (Complex s, BareSliceMatrix<double,ord> a, FlatVector<const Complex> x, FlatVector<Complex> y) NETGEN_NOEXCEPT;
|
|
658
|
+
|
|
659
|
+
|
|
660
|
+
|
|
661
|
+
template <bool ADD, ORDERING ord, int S>
|
|
662
|
+
void NgGEMV (Complex s, BareSliceMatrix<double,ord> a, SliceVector<Vec<S,Complex>> x, SliceVector<Vec<S,Complex>> y) NETGEN_NOEXCEPT
|
|
663
|
+
{
|
|
664
|
+
SliceMatrix<Complex> mx(x.Size(), S, S*x.Dist(), x.Data()->Data());
|
|
665
|
+
SliceMatrix<Complex> my(y.Size(), S, S*y.Dist(), y.Data()->Data());
|
|
666
|
+
if constexpr (ADD)
|
|
667
|
+
my += s * a.AddSize(y.Size(), x.Size()) * mx;
|
|
668
|
+
else
|
|
669
|
+
my = s * a.AddSize(y.Size(), x.Size()) * mx;
|
|
670
|
+
}
|
|
671
|
+
|
|
658
672
|
|
|
659
673
|
|
|
660
674
|
template <bool ADD, ORDERING ord>
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
#ifndef FILE_POTENTIALS
|
|
2
|
+
#define FILE_POTENTIALS
|
|
3
|
+
|
|
4
|
+
/*
|
|
5
|
+
tools for computing with potentials using multipoles
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
#include <mptools.hpp>
|
|
10
|
+
#include <meshaccess.hpp>
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
namespace ngcomp
|
|
14
|
+
{
|
|
15
|
+
|
|
16
|
+
extern void AddCurrentDensity (SingularMLMultiPole<Vec<3,Complex>> & mp, shared_ptr<CoefficientFunction> current, ngcomp::Region reg);
|
|
17
|
+
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
#endif
|
netgen/include/prolongation.hpp
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
/*********************************************************************/
|
|
9
9
|
|
|
10
10
|
namespace ngcomp { class NedelecFESpace; }
|
|
11
|
-
|
|
11
|
+
namespace ngla { class SparseFactorization; }
|
|
12
12
|
namespace ngmg
|
|
13
13
|
{
|
|
14
14
|
|
|
@@ -229,6 +229,148 @@ namespace ngmg
|
|
|
229
229
|
///
|
|
230
230
|
virtual void RestrictInline (int finelevel, BaseVector & v) const override;
|
|
231
231
|
};
|
|
232
|
+
|
|
233
|
+
class NGS_DLL_HEADER HarmonicProlongation : public Prolongation
|
|
234
|
+
{
|
|
235
|
+
shared_ptr<Prolongation> baseprol;
|
|
236
|
+
weak_ptr<BilinearForm> wbfa;
|
|
237
|
+
Array<shared_ptr<BaseMatrix>> innerinverses;
|
|
238
|
+
Array<size_t> facets_on_level;
|
|
239
|
+
Array<shared_ptr<BitArray>> freedofs;
|
|
240
|
+
string inverse;
|
|
241
|
+
public:
|
|
242
|
+
HarmonicProlongation (shared_ptr<Prolongation> abaseprol,
|
|
243
|
+
shared_ptr<BilinearForm> abfa, string ainverse);
|
|
244
|
+
|
|
245
|
+
virtual void Update (const FESpace & fes) override;
|
|
246
|
+
|
|
247
|
+
virtual size_t GetNDofLevel (int level) override { return baseprol->GetNDofLevel(level); }
|
|
248
|
+
|
|
249
|
+
virtual shared_ptr<SparseMatrix< double >> CreateProlongationMatrix( int finelevel ) const override;
|
|
250
|
+
virtual void ProlongateInline (int finelevel, BaseVector & v) const override;
|
|
251
|
+
virtual void RestrictInline (int finelevel, BaseVector & v) const override;
|
|
252
|
+
};
|
|
253
|
+
|
|
254
|
+
|
|
255
|
+
|
|
256
|
+
|
|
257
|
+
|
|
258
|
+
template <int DIM>
|
|
259
|
+
class FacetProlongation : public Prolongation
|
|
260
|
+
{
|
|
261
|
+
protected:
|
|
262
|
+
shared_ptr<MeshAccess> ma;
|
|
263
|
+
|
|
264
|
+
int dofs_per_facet = -1;
|
|
265
|
+
Array<Array<int>> first_dofs;
|
|
266
|
+
Array<int> prol_class; // which prol to use ?
|
|
267
|
+
Array<size_t> facets_on_level;
|
|
268
|
+
|
|
269
|
+
static constexpr int NUMPROL = (DIM==2) ? 2 : 32;
|
|
270
|
+
array<Matrix<double>,NUMPROL> facetprol;
|
|
271
|
+
|
|
272
|
+
bool haveprols = false;
|
|
273
|
+
|
|
274
|
+
public:
|
|
275
|
+
FacetProlongation (shared_ptr<MeshAccess> ama)
|
|
276
|
+
: ma(ama) { }
|
|
277
|
+
|
|
278
|
+
|
|
279
|
+
virtual shared_ptr<SparseMatrix< double >> CreateProlongationMatrix( int finelevel ) const override
|
|
280
|
+
{
|
|
281
|
+
return nullptr; // or NULL ?
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
|
|
285
|
+
virtual void ProlongateInline (int finelevel, BaseVector & v) const override
|
|
286
|
+
{
|
|
287
|
+
auto fv = v.FV<double>();
|
|
288
|
+
Matrix<double> tmp(facets_on_level[finelevel], dofs_per_facet);
|
|
289
|
+
tmp = 0.0;
|
|
290
|
+
|
|
291
|
+
for (size_t i = 0; i < first_dofs[finelevel-1].Size()-1; i++)
|
|
292
|
+
{
|
|
293
|
+
IntRange r(first_dofs[finelevel-1][i], first_dofs[finelevel-1][i+1]);
|
|
294
|
+
if (r.Size() > 0)
|
|
295
|
+
tmp.Row(i) = fv.Range(r);
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
if constexpr (DIM==2)
|
|
299
|
+
{
|
|
300
|
+
for (int i = facets_on_level[finelevel-1]; i < facets_on_level[finelevel]; i++)
|
|
301
|
+
if (auto parents = get<1>(ma->GetParentEdges(i)); parents[1] == -1)
|
|
302
|
+
{
|
|
303
|
+
int pe = parents[0];
|
|
304
|
+
tmp.Row(i) = facetprol[prol_class[i]] * tmp.Row(pe);
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
else
|
|
308
|
+
{
|
|
309
|
+
for (int i = facets_on_level[finelevel-1]; i < facets_on_level[finelevel]; i++)
|
|
310
|
+
if (auto parents = get<1>(ma->GetParentFaces(i)); parents[1] == -1)
|
|
311
|
+
{
|
|
312
|
+
int pe = parents[0];
|
|
313
|
+
tmp.Row(i) = facetprol[prol_class[i]] * tmp.Row(pe);
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
|
|
317
|
+
for (size_t i = 0; i < first_dofs[finelevel].Size()-1; i++)
|
|
318
|
+
{
|
|
319
|
+
IntRange r(first_dofs[finelevel][i], first_dofs[finelevel][i+1]);
|
|
320
|
+
if (r.Size() > 0)
|
|
321
|
+
fv.Range(r) = tmp.Row(i);
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
virtual void RestrictInline (int finelevel, BaseVector & v) const override
|
|
326
|
+
{
|
|
327
|
+
auto fv = v.FV<double>();
|
|
328
|
+
Matrix<double> tmp(facets_on_level[finelevel], dofs_per_facet);
|
|
329
|
+
tmp = 0.0;
|
|
330
|
+
|
|
331
|
+
for (size_t i = 0; i < first_dofs[finelevel].Size()-1; i++)
|
|
332
|
+
{
|
|
333
|
+
IntRange r(first_dofs[finelevel][i], first_dofs[finelevel][i+1]);
|
|
334
|
+
if (r.Size() > 0)
|
|
335
|
+
tmp.Row(i) = fv.Range(r);
|
|
336
|
+
}
|
|
337
|
+
|
|
338
|
+
|
|
339
|
+
if constexpr (DIM==2)
|
|
340
|
+
{
|
|
341
|
+
for (int i = facets_on_level[finelevel-1]; i < facets_on_level[finelevel]; i++)
|
|
342
|
+
if (auto parents = get<1>(ma->GetParentEdges(i)); parents[1] == -1)
|
|
343
|
+
{
|
|
344
|
+
int pe = parents[0];
|
|
345
|
+
tmp.Row(pe) += Trans(facetprol[prol_class[i]]) * tmp.Row(i);
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
else
|
|
349
|
+
{
|
|
350
|
+
// for (int i = facets_on_level[finelevel-1]; i < facets_on_level[finelevel]; i++)
|
|
351
|
+
for (int i = facets_on_level[finelevel]-1; i >= facets_on_level[finelevel-1]; i--)
|
|
352
|
+
if (auto parents = get<1>(ma->GetParentFaces(i)); parents[1] == -1)
|
|
353
|
+
{
|
|
354
|
+
int pe = parents[0];
|
|
355
|
+
tmp.Row(pe) += Trans(facetprol[prol_class[i]]) * tmp.Row(i);
|
|
356
|
+
tmp.Row(i) = 0.0; // optional, for testing
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
|
|
360
|
+
fv = 0.0;
|
|
361
|
+
for (size_t i = 0; i < first_dofs[finelevel-1].Size()-1; i++)
|
|
362
|
+
{
|
|
363
|
+
IntRange r(first_dofs[finelevel-1][i], first_dofs[finelevel-1][i+1]);
|
|
364
|
+
if (r.Size() > 0)
|
|
365
|
+
fv.Range(r) = tmp.Row(i);
|
|
366
|
+
}
|
|
367
|
+
|
|
368
|
+
}
|
|
369
|
+
|
|
370
|
+
};
|
|
371
|
+
|
|
372
|
+
|
|
373
|
+
|
|
232
374
|
}
|
|
233
375
|
|
|
234
376
|
|
netgen/include/python_ngstd.hpp
CHANGED
|
@@ -34,7 +34,7 @@ namespace ngla
|
|
|
34
34
|
|
|
35
35
|
void DoArchive(Archive& ar) override;
|
|
36
36
|
|
|
37
|
-
virtual bool IsComplex() const override { return matrix.lock()->IsComplex(); }
|
|
37
|
+
// virtual bool IsComplex() const override { return matrix.lock()->IsComplex(); }
|
|
38
38
|
|
|
39
39
|
virtual void Smooth (BaseVector & u, const BaseVector & f, BaseVector & y) const;
|
|
40
40
|
|
|
@@ -51,28 +51,94 @@ namespace ngla
|
|
|
51
51
|
FlatArray<TM> val, size_t h, size_t w)
|
|
52
52
|
{
|
|
53
53
|
static Timer t("SparseMatrix::CreateFromCOO"); RegionTimer r(t);
|
|
54
|
-
|
|
54
|
+
static Timer t1("SparseMatrix::CreateFromCOO 1");
|
|
55
|
+
static Timer t2("SparseMatrix::CreateFromCOO 2");
|
|
56
|
+
static Timer t3("SparseMatrix::CreateFromCOO 3");
|
|
55
57
|
|
|
56
58
|
/*
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
*/
|
|
59
|
+
{
|
|
60
|
+
Array<int> cnt(h);
|
|
60
61
|
|
|
62
|
+
t1.Start();
|
|
61
63
|
DynamicTable<int> tab(h);
|
|
62
64
|
for (size_t i = 0; i < indi.Size(); i++)
|
|
63
65
|
tab.AddUnique(indi[i], indj[i]);
|
|
66
|
+
t1.Stop();
|
|
64
67
|
for (size_t i = 0; i < h; i++)
|
|
65
68
|
cnt[i] = tab.EntrySize(i);
|
|
66
69
|
|
|
67
70
|
auto matrix = make_shared<SparseMatrix<TM>> (cnt, w);
|
|
71
|
+
t2.Start();
|
|
68
72
|
for (auto k : ngstd::Range(indi))
|
|
69
73
|
matrix->CreatePosition(indi[k], indj[k]);
|
|
74
|
+
t2.Stop();
|
|
70
75
|
matrix->SetZero();
|
|
71
76
|
|
|
77
|
+
t3.Start();
|
|
72
78
|
for (auto k : ngstd::Range(indi))
|
|
73
79
|
(*matrix)(indi[k], indj[k]) += val[k];
|
|
80
|
+
t3.Stop();
|
|
81
|
+
// return matrix;
|
|
82
|
+
}
|
|
83
|
+
*/
|
|
84
|
+
|
|
85
|
+
Array<int> cnt(h);
|
|
86
|
+
cnt = 0;
|
|
87
|
+
for (auto i : indi)
|
|
88
|
+
cnt[i]++;
|
|
89
|
+
|
|
90
|
+
Table<int> tab(cnt);
|
|
91
|
+
cnt = 0;
|
|
92
|
+
|
|
93
|
+
for (auto [i,j] : Zip(indi, indj))
|
|
94
|
+
tab[i][cnt[i]++] = j;
|
|
95
|
+
|
|
96
|
+
cnt = 0;
|
|
97
|
+
// for (int i = 0; i < tab.Size(); i++)
|
|
98
|
+
ParallelFor (tab.Size(), [&] (size_t i)
|
|
99
|
+
{
|
|
100
|
+
QuickSort (tab[i]);
|
|
101
|
+
|
|
102
|
+
int prev = -1;
|
|
103
|
+
for (auto j : tab[i])
|
|
104
|
+
{
|
|
105
|
+
if (j != prev) cnt[i]++;
|
|
106
|
+
prev = j;
|
|
107
|
+
}
|
|
108
|
+
});
|
|
109
|
+
|
|
110
|
+
auto matrix = make_shared<SparseMatrix<TM>> (cnt, w);
|
|
111
|
+
t2.Start();
|
|
112
|
+
// for (auto k : ngstd::Range(indi))
|
|
113
|
+
// matrix->CreatePosition(indi[k], indj[k]);
|
|
74
114
|
|
|
75
|
-
|
|
115
|
+
cnt = 0;
|
|
116
|
+
for (int i = 0; i < tab.Size(); i++)
|
|
117
|
+
{
|
|
118
|
+
int prev = -1;
|
|
119
|
+
for (auto j : tab[i])
|
|
120
|
+
{
|
|
121
|
+
auto cols = matrix->GetRowIndices(i);
|
|
122
|
+
if (j != prev)
|
|
123
|
+
cols[cnt[i]++] = j;
|
|
124
|
+
prev = j;
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
t2.Stop();
|
|
129
|
+
matrix->SetZero();
|
|
130
|
+
|
|
131
|
+
t3.Start();
|
|
132
|
+
/*
|
|
133
|
+
for (auto k : ngstd::Range(indi))
|
|
134
|
+
(*matrix)(indi[k], indj[k]) += val[k];
|
|
135
|
+
*/
|
|
136
|
+
ParallelFor (indi.Size(), [&](size_t k)
|
|
137
|
+
{
|
|
138
|
+
AtomicAdd ( (*matrix)(indi[k], indj[k]), val[k]);
|
|
139
|
+
});
|
|
140
|
+
t3.Stop();
|
|
141
|
+
return matrix;
|
|
76
142
|
}
|
|
77
143
|
|
|
78
144
|
|
|
@@ -16,34 +16,22 @@ namespace ngcomp
|
|
|
16
16
|
class NGS_DLL_HEADER TangentialFacetFESpace : public FESpace
|
|
17
17
|
{
|
|
18
18
|
protected:
|
|
19
|
-
/// Level
|
|
20
|
-
// int level;
|
|
21
|
-
/// Number of Facets
|
|
22
|
-
// int nfacets;
|
|
23
|
-
///
|
|
24
|
-
// int ncfacets;
|
|
25
|
-
///
|
|
26
|
-
// int nel;
|
|
27
|
-
|
|
28
19
|
Array<int> first_facet_dof;
|
|
29
20
|
Array<int> first_inner_dof; // for highest_order_dc
|
|
30
|
-
// int ndof_lo;
|
|
31
21
|
|
|
32
22
|
int rel_order;
|
|
33
23
|
|
|
34
24
|
Array<IVec<2> > order_facet;
|
|
35
25
|
Array<bool> fine_facet;
|
|
36
26
|
|
|
37
|
-
// int ndof;
|
|
38
|
-
// Array<int> ndlevel;
|
|
39
27
|
bool var_order;
|
|
40
28
|
bool print;
|
|
41
29
|
|
|
42
30
|
bool highest_order_dc;
|
|
43
31
|
bool hide_highest_order_dc;
|
|
32
|
+
bool all_dofs_together;
|
|
44
33
|
|
|
45
34
|
public:
|
|
46
|
-
///
|
|
47
35
|
TangentialFacetFESpace (shared_ptr<MeshAccess> ama, const Flags & flags,
|
|
48
36
|
bool parseflags = false );
|
|
49
37
|
|
|
@@ -61,20 +49,11 @@ namespace ngcomp
|
|
|
61
49
|
virtual void SetOrder (NodeId ni, int order) override;
|
|
62
50
|
virtual int GetOrder (NodeId ni) const override;
|
|
63
51
|
|
|
64
|
-
|
|
65
|
-
// virtual size_t GetNDof() const throw() override { return ndof; }
|
|
66
|
-
// virtual size_t GetNDofLevel ( int i ) const override { return ndlevel[i]; }
|
|
67
|
-
|
|
68
52
|
virtual FlatArray<VorB> GetDualShapeNodes (VorB vb) const override;
|
|
69
53
|
|
|
70
|
-
// virtual int GetNDofLowOrder () const
|
|
71
|
-
// { return ndof_lo; }
|
|
72
54
|
|
|
73
55
|
virtual FiniteElement & GetFE(ElementId ei, Allocator & lh) const override;
|
|
74
56
|
|
|
75
|
-
// virtual const FiniteElement & GetFE ( int elnr, LocalHeap & lh ) const;
|
|
76
|
-
// virtual const FiniteElement & GetSFE ( int selnr, LocalHeap & lh ) const;
|
|
77
|
-
|
|
78
57
|
virtual void GetFacetDofNrs (int felnr, Array<DofId> & dnums) const;
|
|
79
58
|
|
|
80
59
|
virtual int GetNFacetDofs (int felnr) const;
|
|
@@ -90,6 +69,12 @@ namespace ngcomp
|
|
|
90
69
|
virtual IVec<2> GetFacetOrder(int fnr) const;
|
|
91
70
|
|
|
92
71
|
virtual int GetFirstFacetDof(int fanr) const;
|
|
72
|
+
const auto & GetFirstFacetDof() const { return first_facet_dof; }
|
|
73
|
+
|
|
74
|
+
IntRange GetFacetDofs (int nr) const
|
|
75
|
+
{
|
|
76
|
+
return IntRange (first_facet_dof[nr], first_facet_dof[nr+1]);
|
|
77
|
+
}
|
|
93
78
|
|
|
94
79
|
virtual bool UsesHighestOrderDiscontinuous() const {return highest_order_dc;};
|
|
95
80
|
|
netgen/include/tensor.hpp
CHANGED
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/libngstd.dylib
CHANGED
|
Binary file
|
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
|
|
@@ -217,7 +217,7 @@ TET: fem.ET # value = <ET.TET: 20>
|
|
|
217
217
|
TRIG: fem.ET # value = <ET.TRIG: 10>
|
|
218
218
|
VERTEX: fem.NODE_TYPE # value = <NODE_TYPE.VERTEX: 0>
|
|
219
219
|
VOL: comp.VorB # value = <VorB.VOL: 0>
|
|
220
|
-
__version__: str = '6.2.
|
|
220
|
+
__version__: str = '6.2.2502-11-g4d6a78d51'
|
|
221
221
|
ds: comp.DifferentialSymbol # value = <ngsolve.comp.DifferentialSymbol object>
|
|
222
222
|
dx: comp.DifferentialSymbol # value = <ngsolve.comp.DifferentialSymbol object>
|
|
223
223
|
ngsglobals: comp.GlobalVariables # value = <ngsolve.comp.GlobalVariables object>
|
ngsolve/comp/__init__.pyi
CHANGED
|
@@ -11,7 +11,7 @@ import numpy
|
|
|
11
11
|
import pyngcore.pyngcore
|
|
12
12
|
import typing
|
|
13
13
|
from . import pml
|
|
14
|
-
__all__ = ['APhiHCurlAMG', 'Array_N6ngcomp13COUPLING_TYPEE_S', 'BBBND', 'BBND', 'BDDCPreconditioner', 'BDDCPreconditioner_complex', 'BDDCPreconditioner_double', 'BND', 'BilinearForm', 'BndElementId', 'BoundaryFromVolumeCF', 'COUPLING_TYPE', 'ComponentGridFunction', 'Compress', 'CompressCompound', 'ContactBoundary', 'ConvertOperator', 'DifferentialSymbol', 'Discontinuous', 'DualProxyFunction', 'ElementId', 'ElementRange', 'FESpace', 'FESpaceElement', 'FESpaceElementRange', 'FacetFESpace', 'FacetSurface', 'FlatArray_N6ngcomp13COUPLING_TYPEE_S', 'FromArchiveCF', 'FromArchiveFESpace', 'FromArchiveMesh', 'GlobalInterfaceSpace', 'GlobalSpace', 'GlobalVariables', 'GridFunction', 'GridFunctionC', 'GridFunctionCoefficientFunction', 'GridFunctionD', 'H1', 'H1LumpingFESpace', 'HCurl', 'HCurlAMG', 'HCurlCurl', 'HCurlDiv', 'HDiv', 'HDivDiv', 'HDivDivSurface', 'HDivSurface', 'Hidden', 'Integral', 'Integrate', 'IntegrationRuleSpace', 'IntegrationRuleSpaceSurface', 'Interpolate', 'InterpolateProxy', 'KSpaceCoeffs', 'L2', 'LinearForm', 'LocalPreconditioner', 'MatrixFreeOperator', 'MatrixValued', 'Mesh', 'MeshNode', 'MeshNodeRange', 'MultiGridPreconditioner', 'NGS_Object', 'Ngs_Element', 'NodalFESpace', 'NodeId', 'NodeRange', 'NormalFacetFESpace', 'NormalFacetSurface', 'NumberSpace', 'ORDER_POLICY', 'PatchwiseSolve', 'Periodic', 'PlateauFESpace', 'Preconditioner', 'ProductSpace', 'Prolongate', 'ProlongateCoefficientFunction', 'Prolongation', 'ProxyFunction', 'QuasiPeriodicC', 'QuasiPeriodicD', 'Region', 'RegisterPreconditioner', 'Reorder', 'SetHeapSize', 'SetTestoutFile', 'SumOfIntegrals', 'SurfaceL2', 'SymbolTable_D', 'SymbolTable_sp_D', 'SymbolTable_sp_N5ngfem19CoefficientFunctionE', 'SymbolTable_sp_N6ngcomp10LinearFormE', 'SymbolTable_sp_N6ngcomp12BilinearFormE', 'SymbolTable_sp_N6ngcomp12GridFunctionE', 'SymbolTable_sp_N6ngcomp14PreconditionerE', 'SymbolTable_sp_N6ngcomp7FESpaceE', 'SymbolicBFI', 'SymbolicEnergy', 'SymbolicLFI', 'SymbolicTPBFI', 'TangentialFacetFESpace', 'TangentialSurfaceL2', 'TensorProductFESpace', 'TensorProductIntegrate', 'ToArchive', 'Transfer2StdMesh', 'VOL', 'VTKOutput', 'Variation', 'VectorFacetFESpace', 'VectorFacetSurface', 'VectorH1', 'VectorL2', 'VectorNodalFESpace', 'VectorSurfaceL2', 'VectorValued', 'VorB', 'ngsglobals', 'pml']
|
|
14
|
+
__all__ = ['APhiHCurlAMG', 'AddCurrentDensity', 'Array_N6ngcomp13COUPLING_TYPEE_S', 'BBBND', 'BBND', 'BDDCPreconditioner', 'BDDCPreconditioner_complex', 'BDDCPreconditioner_double', 'BND', 'BilinearForm', 'BndElementId', 'BoundaryFromVolumeCF', 'COUPLING_TYPE', 'ComponentGridFunction', 'Compress', 'CompressCompound', 'ContactBoundary', 'ConvertOperator', 'DifferentialSymbol', 'Discontinuous', 'DualProxyFunction', 'ElementId', 'ElementRange', 'FESpace', 'FESpaceElement', 'FESpaceElementRange', 'FacetFESpace', 'FacetSurface', 'FlatArray_N6ngcomp13COUPLING_TYPEE_S', 'FromArchiveCF', 'FromArchiveFESpace', 'FromArchiveMesh', 'GlobalInterfaceSpace', 'GlobalSpace', 'GlobalVariables', 'GridFunction', 'GridFunctionC', 'GridFunctionCoefficientFunction', 'GridFunctionD', 'H1', 'H1LumpingFESpace', 'HCurl', 'HCurlAMG', 'HCurlCurl', 'HCurlDiv', 'HDiv', 'HDivDiv', 'HDivDivSurface', 'HDivSurface', 'Hidden', 'Integral', 'Integrate', 'IntegrationRuleSpace', 'IntegrationRuleSpaceSurface', 'Interpolate', 'InterpolateProxy', 'KSpaceCoeffs', 'L2', 'LinearForm', 'LocalPreconditioner', 'MatrixFreeOperator', 'MatrixValued', 'Mesh', 'MeshNode', 'MeshNodeRange', 'MultiGridPreconditioner', 'NGS_Object', 'Ngs_Element', 'NodalFESpace', 'NodeId', 'NodeRange', 'NormalFacetFESpace', 'NormalFacetSurface', 'NumberSpace', 'ORDER_POLICY', 'PatchwiseSolve', 'Periodic', 'PlateauFESpace', 'Preconditioner', 'ProductSpace', 'Prolongate', 'ProlongateCoefficientFunction', 'Prolongation', 'ProxyFunction', 'QuasiPeriodicC', 'QuasiPeriodicD', 'Region', 'RegisterPreconditioner', 'Reorder', 'SetHeapSize', 'SetTestoutFile', 'SumOfIntegrals', 'SurfaceL2', 'SymbolTable_D', 'SymbolTable_sp_D', 'SymbolTable_sp_N5ngfem19CoefficientFunctionE', 'SymbolTable_sp_N6ngcomp10LinearFormE', 'SymbolTable_sp_N6ngcomp12BilinearFormE', 'SymbolTable_sp_N6ngcomp12GridFunctionE', 'SymbolTable_sp_N6ngcomp14PreconditionerE', 'SymbolTable_sp_N6ngcomp7FESpaceE', 'SymbolicBFI', 'SymbolicEnergy', 'SymbolicLFI', 'SymbolicTPBFI', 'TangentialFacetFESpace', 'TangentialSurfaceL2', 'TensorProductFESpace', 'TensorProductIntegrate', 'ToArchive', 'Transfer2StdMesh', 'VOL', 'VTKOutput', 'Variation', 'VectorFacetFESpace', 'VectorFacetSurface', 'VectorH1', 'VectorL2', 'VectorNodalFESpace', 'VectorSurfaceL2', 'VectorValued', 'VorB', 'ngsglobals', 'pml']
|
|
15
15
|
class APhiHCurlAMG(HCurlAMG):
|
|
16
16
|
"""
|
|
17
17
|
|
|
@@ -938,6 +938,10 @@ class FESpace(NGS_Object):
|
|
|
938
938
|
region : ngsolve.comp.Region
|
|
939
939
|
input region
|
|
940
940
|
"""
|
|
941
|
+
def SetHarmonicProlongation(self, bf: ..., inverse: str = 'sparsecholesky') -> None:
|
|
942
|
+
"""
|
|
943
|
+
use harmonic prolongation w.r.t. bilinear-form
|
|
944
|
+
"""
|
|
941
945
|
@typing.overload
|
|
942
946
|
def SetOrder(self, element_type: ngsolve.fem.ET, order: int) -> None:
|
|
943
947
|
"""
|
|
@@ -3103,6 +3107,10 @@ class MultiGridPreconditioner(Preconditioner):
|
|
|
3103
3107
|
'block': Block smoother
|
|
3104
3108
|
coarsetype: string = direct
|
|
3105
3109
|
How to solve coarse problem.
|
|
3110
|
+
cycle: int = 1
|
|
3111
|
+
multigrid cycle (0 only smoothing, 1..V-cycle, 2..W-cycle.
|
|
3112
|
+
smoothingsteps: int = 1
|
|
3113
|
+
number of (pre and post-)smoothing steps
|
|
3106
3114
|
coarsesmoothingsteps: int = 1
|
|
3107
3115
|
If coarsetype is smoothing, then how many smoothingsteps will be done.
|
|
3108
3116
|
updatealways: bool = False
|
|
@@ -5082,6 +5090,8 @@ class VorB:
|
|
|
5082
5090
|
@property
|
|
5083
5091
|
def value(self) -> int:
|
|
5084
5092
|
...
|
|
5093
|
+
def AddCurrentDensity(arg0: ngsolve.fem.SingularMLMP3, arg1: ngsolve.fem.CoefficientFunction, arg2: Region) -> None:
|
|
5094
|
+
...
|
|
5085
5095
|
def BndElementId(nr: int) -> ElementId:
|
|
5086
5096
|
"""
|
|
5087
5097
|
Creates an element-id for a boundary element
|
ngsolve/config/__init__.pyi
CHANGED
|
@@ -24,14 +24,14 @@ NGSOLVE_INSTALL_DIR_INCLUDE: str = 'netgen/include'
|
|
|
24
24
|
NGSOLVE_INSTALL_DIR_LIB: str = 'netgen'
|
|
25
25
|
NGSOLVE_INSTALL_DIR_PYTHON: str = '.'
|
|
26
26
|
NGSOLVE_INSTALL_DIR_RES: str = 'share'
|
|
27
|
-
NGSOLVE_VERSION: str = '6.2.
|
|
28
|
-
NGSOLVE_VERSION_GIT: str = 'v6.2.
|
|
29
|
-
NGSOLVE_VERSION_HASH: str = '
|
|
27
|
+
NGSOLVE_VERSION: str = '6.2.2502-11-g4d6a78d51'
|
|
28
|
+
NGSOLVE_VERSION_GIT: str = 'v6.2.2502-11-g4d6a78d51'
|
|
29
|
+
NGSOLVE_VERSION_HASH: str = 'g4d6a78d51'
|
|
30
30
|
NGSOLVE_VERSION_MAJOR: str = '6'
|
|
31
31
|
NGSOLVE_VERSION_MINOR: str = '2'
|
|
32
|
-
NGSOLVE_VERSION_PATCH: str = '
|
|
33
|
-
NGSOLVE_VERSION_PYTHON: str = '6.2.
|
|
34
|
-
NGSOLVE_VERSION_TWEAK: str = '
|
|
32
|
+
NGSOLVE_VERSION_PATCH: str = '2502'
|
|
33
|
+
NGSOLVE_VERSION_PYTHON: str = '6.2.2502.post11.dev1'
|
|
34
|
+
NGSOLVE_VERSION_TWEAK: str = '11'
|
|
35
35
|
USE_CCACHE: bool = True
|
|
36
36
|
USE_HYPRE: bool = False
|
|
37
37
|
USE_LAPACK: bool = True
|
|
@@ -40,4 +40,4 @@ USE_MUMPS: bool = False
|
|
|
40
40
|
USE_PARDISO: bool = False
|
|
41
41
|
USE_UMFPACK: bool = True
|
|
42
42
|
is_python_package: bool = True
|
|
43
|
-
version: str = 'v6.2.
|
|
43
|
+
version: str = 'v6.2.2502-11-g4d6a78d51'
|
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.
|
|
33
|
-
NGSOLVE_VERSION_GIT = "v6.2.
|
|
34
|
-
NGSOLVE_VERSION_PYTHON = "6.2.
|
|
32
|
+
NGSOLVE_VERSION = "6.2.2502-11-g4d6a78d51"
|
|
33
|
+
NGSOLVE_VERSION_GIT = "v6.2.2502-11-g4d6a78d51"
|
|
34
|
+
NGSOLVE_VERSION_PYTHON = "6.2.2502.post11.dev1"
|
|
35
35
|
|
|
36
36
|
NGSOLVE_VERSION_MAJOR = "6"
|
|
37
37
|
NGSOLVE_VERSION_MINOR = "2"
|
|
38
|
-
NGSOLVE_VERSION_TWEAK = "
|
|
39
|
-
NGSOLVE_VERSION_PATCH = "
|
|
40
|
-
NGSOLVE_VERSION_HASH = "
|
|
38
|
+
NGSOLVE_VERSION_TWEAK = "11"
|
|
39
|
+
NGSOLVE_VERSION_PATCH = "2502"
|
|
40
|
+
NGSOLVE_VERSION_HASH = "g4d6a78d51"
|
|
41
41
|
|
|
42
42
|
CMAKE_CXX_COMPILER = "/Library/Developer/CommandLineTools/usr/bin/c++"
|
|
43
43
|
CMAKE_CUDA_COMPILER = ""
|
ngsolve/config/config.pyi
CHANGED
|
@@ -26,14 +26,14 @@ NGSOLVE_INSTALL_DIR_INCLUDE: str = 'netgen/include'
|
|
|
26
26
|
NGSOLVE_INSTALL_DIR_LIB: str = 'netgen'
|
|
27
27
|
NGSOLVE_INSTALL_DIR_PYTHON: str = '.'
|
|
28
28
|
NGSOLVE_INSTALL_DIR_RES: str = 'share'
|
|
29
|
-
NGSOLVE_VERSION: str = '6.2.
|
|
30
|
-
NGSOLVE_VERSION_GIT: str = 'v6.2.
|
|
31
|
-
NGSOLVE_VERSION_HASH: str = '
|
|
29
|
+
NGSOLVE_VERSION: str = '6.2.2502-11-g4d6a78d51'
|
|
30
|
+
NGSOLVE_VERSION_GIT: str = 'v6.2.2502-11-g4d6a78d51'
|
|
31
|
+
NGSOLVE_VERSION_HASH: str = 'g4d6a78d51'
|
|
32
32
|
NGSOLVE_VERSION_MAJOR: str = '6'
|
|
33
33
|
NGSOLVE_VERSION_MINOR: str = '2'
|
|
34
|
-
NGSOLVE_VERSION_PATCH: str = '
|
|
35
|
-
NGSOLVE_VERSION_PYTHON: str = '6.2.
|
|
36
|
-
NGSOLVE_VERSION_TWEAK: str = '
|
|
34
|
+
NGSOLVE_VERSION_PATCH: str = '2502'
|
|
35
|
+
NGSOLVE_VERSION_PYTHON: str = '6.2.2502.post11.dev1'
|
|
36
|
+
NGSOLVE_VERSION_TWEAK: str = '11'
|
|
37
37
|
USE_CCACHE: bool = True
|
|
38
38
|
USE_HYPRE: bool = False
|
|
39
39
|
USE_LAPACK: bool = True
|
|
@@ -42,4 +42,4 @@ USE_MUMPS: bool = False
|
|
|
42
42
|
USE_PARDISO: bool = False
|
|
43
43
|
USE_UMFPACK: bool = True
|
|
44
44
|
is_python_package: bool = True
|
|
45
|
-
version: str = 'v6.2.
|
|
45
|
+
version: str = 'v6.2.2502-11-g4d6a78d51'
|
ngsolve/directsolvers.pyi
CHANGED
|
@@ -9,7 +9,7 @@ import typing
|
|
|
9
9
|
__all__ = ['BaseMatrix', 'BaseVector', 'BilinearForm', 'BitArray', 'SuperLU']
|
|
10
10
|
class SuperLU(ngsolve.la.BaseMatrix):
|
|
11
11
|
__firstlineno__: typing.ClassVar[int] = 3
|
|
12
|
-
__static_attributes__: typing.ClassVar[tuple] = ('
|
|
12
|
+
__static_attributes__: typing.ClassVar[tuple] = ('freedofs', 'lu', 'fd', 'a')
|
|
13
13
|
def Mult(self, x: ngsolve.la.BaseVector, y: ngsolve.la.BaseVector):
|
|
14
14
|
...
|
|
15
15
|
def Update(self):
|
ngsolve/fem.pyi
CHANGED
|
@@ -8,7 +8,7 @@ import numpy
|
|
|
8
8
|
import os
|
|
9
9
|
import pyngcore.pyngcore
|
|
10
10
|
import typing
|
|
11
|
-
__all__ = ['BFI', 'BSpline', 'BSpline2D', 'BaseMappedIntegrationPoint', 'BlockBFI', 'BlockLFI', 'CELL', 'CacheCF', 'CoefficientFunction', 'Cof', 'CompilePythonModule', 'CompoundBFI', 'CompoundLFI', 'Conj', 'CoordCF', 'CoordinateTrafo', 'Cross', 'Det', 'DifferentialOperator', 'EDGE', 'ELEMENT', 'ET', 'Einsum', 'ElementTopology', 'ElementTransformation', 'FACE', 'FACET', 'FiniteElement', 'GenerateL2ElementCode', 'H1FE', 'HCurlFE', 'HDivDivFE', 'HDivFE', 'HEX', 'Id', 'IfPos', 'IntegrationPoint', 'IntegrationRule', 'Inv', 'L2FE', 'LFI', 'LeviCivitaSymbol', 'LoggingCF', 'MeshPoint', 'MinimizationCF', 'MixedFE', 'NODE_TYPE', 'NewtonCF', 'POINT', 'PRISM', 'PYRAMID', 'Parameter', 'ParameterC', 'PlaceholderCF', 'PointEvaluationFunctional', 'QUAD', 'RegularMLMP', 'RegularMLMultiPoleCF', 'RegularMultiPoleCF', 'SEGM', 'ScalarFE', 'SetPMLParameters', 'SingularMLMP', 'SingularMLMultiPoleCF', 'SingularMultiPoleCF', 'Skew', 'SpecialCFCreator', 'SphericalHarmonicsCF', 'Sphericalharmonics', 'Sym', 'TET', 'TRIG', 'Trace', 'VERTEX', 'VoxelCoefficient', 'Zero', 'acos', 'asin', 'atan', 'atan2', 'ceil', 'cos', 'cosh', 'erf', 'exp', 'floor', 'log', 'pow', 'sin', 'sinh', 'specialcf', 'sqrt', 'tan']
|
|
11
|
+
__all__ = ['BFI', 'BSpline', 'BSpline2D', 'BaseMappedIntegrationPoint', 'BiotSavartCF', 'BiotSavartRegularMLCF', 'BiotSavartSingularMLCF', 'BlockBFI', 'BlockLFI', 'CELL', 'CacheCF', 'CoefficientFunction', 'Cof', 'CompilePythonModule', 'CompoundBFI', 'CompoundLFI', 'Conj', 'CoordCF', 'CoordinateTrafo', 'Cross', 'Det', 'DifferentialOperator', 'EDGE', 'ELEMENT', 'ET', 'Einsum', 'ElementTopology', 'ElementTransformation', 'FACE', 'FACET', 'FiniteElement', 'GenerateL2ElementCode', 'H1FE', 'HCurlFE', 'HDivDivFE', 'HDivFE', 'HEX', 'Id', 'IfPos', 'IntegrationPoint', 'IntegrationRule', 'Inv', 'L2FE', 'LFI', 'LeviCivitaSymbol', 'LoggingCF', 'MeshPoint', 'MinimizationCF', 'MixedFE', 'NODE_TYPE', 'NewtonCF', 'POINT', 'PRISM', 'PYRAMID', 'Parameter', 'ParameterC', 'PlaceholderCF', 'PointEvaluationFunctional', 'QUAD', 'RegularMLMP', 'RegularMLMultiPoleCF', 'RegularMultiPoleCF', 'SEGM', 'ScalarFE', 'SetPMLParameters', 'SingularMLMP', 'SingularMLMP3', 'SingularMLMultiPoleCF', 'SingularMultiPoleCF', 'Skew', 'SpecialCFCreator', 'SphericalHarmonicsCF', 'Sphericalharmonics', 'Sym', 'TET', 'TRIG', 'Trace', 'VERTEX', 'VoxelCoefficient', 'Zero', 'acos', 'asin', 'atan', 'atan2', 'ceil', 'cos', 'cosh', 'erf', 'exp', 'floor', 'log', 'pow', 'sin', 'sinh', 'specialcf', 'sqrt', 'tan']
|
|
12
12
|
class BFI:
|
|
13
13
|
"""
|
|
14
14
|
|
|
@@ -242,6 +242,25 @@ class BaseMappedIntegrationPoint:
|
|
|
242
242
|
"""
|
|
243
243
|
Transformation of the mapped integration point
|
|
244
244
|
"""
|
|
245
|
+
class BiotSavartCF(CoefficientFunction):
|
|
246
|
+
def AddCurrent(self, sp: ngsolve.bla.Vec3D, ep: ngsolve.bla.Vec3D, j: complex, num: int = 100) -> None:
|
|
247
|
+
...
|
|
248
|
+
def __init__(self, order: int, kappa: float, center: ngsolve.bla.Vec3D, scale: float = 1.0) -> None:
|
|
249
|
+
...
|
|
250
|
+
class BiotSavartRegularMLCF(CoefficientFunction):
|
|
251
|
+
def __init__(self, mp: BiotSavartSingularMLCF, center: ngsolve.bla.Vec3D, r: float, order: int = -1) -> None:
|
|
252
|
+
...
|
|
253
|
+
@property
|
|
254
|
+
def mlmp(self) -> ...:
|
|
255
|
+
...
|
|
256
|
+
class BiotSavartSingularMLCF(CoefficientFunction):
|
|
257
|
+
def CreateRegularExpansion(self, center: ngsolve.bla.Vec3D, r: float) -> ...:
|
|
258
|
+
...
|
|
259
|
+
def __init__(self, center: ngsolve.bla.Vec3D, r: float, order: int = -1, kappa: float) -> None:
|
|
260
|
+
...
|
|
261
|
+
@property
|
|
262
|
+
def mlmp(self) -> SingularMLMP3:
|
|
263
|
+
...
|
|
245
264
|
class CoefficientFunction:
|
|
246
265
|
"""
|
|
247
266
|
A CoefficientFunction (CF) is some function defined on a mesh.
|
|
@@ -979,6 +998,8 @@ class PointEvaluationFunctional:
|
|
|
979
998
|
class RegularMLMP:
|
|
980
999
|
def Norm(self) -> float:
|
|
981
1000
|
...
|
|
1001
|
+
def Print(self) -> None:
|
|
1002
|
+
...
|
|
982
1003
|
def __str__(self) -> str:
|
|
983
1004
|
...
|
|
984
1005
|
class RegularMLMultiPoleCF(CoefficientFunction):
|
|
@@ -1060,11 +1081,22 @@ class SingularMLMP:
|
|
|
1060
1081
|
...
|
|
1061
1082
|
def Norm(self) -> float:
|
|
1062
1083
|
...
|
|
1084
|
+
def Print(self) -> None:
|
|
1085
|
+
...
|
|
1063
1086
|
def __init__(self, arg0: ngsolve.bla.Vec3D, arg1: float, arg2: int, arg3: float) -> None:
|
|
1064
1087
|
...
|
|
1065
1088
|
def __str__(self) -> str:
|
|
1066
1089
|
...
|
|
1090
|
+
class SingularMLMP3:
|
|
1091
|
+
def AddCurrent(self, sp: ngsolve.bla.Vec3D, ep: ngsolve.bla.Vec3D, j: complex, num: int = 100) -> None:
|
|
1092
|
+
...
|
|
1093
|
+
def Calc(self) -> None:
|
|
1094
|
+
...
|
|
1095
|
+
def __init__(self, arg0: ngsolve.bla.Vec3D, arg1: float, arg2: int, arg3: float) -> None:
|
|
1096
|
+
...
|
|
1067
1097
|
class SingularMLMultiPoleCF(CoefficientFunction):
|
|
1098
|
+
def CreateRegularExpansion(self, center: ngsolve.bla.Vec3D, r: float) -> ...:
|
|
1099
|
+
...
|
|
1068
1100
|
def __init__(self, center: ngsolve.bla.Vec3D, r: float, order: int = -1, kappa: float) -> None:
|
|
1069
1101
|
...
|
|
1070
1102
|
@property
|